react-native-gesture-handler 1.10.3 → 2.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (382) hide show
  1. package/README.md +7 -6
  2. package/android/build.gradle +49 -1
  3. package/android/common/src/main/java/com/swmansion/common/GestureHandlerStateManager.kt +5 -0
  4. package/android/gradle.properties +19 -0
  5. package/android/lib/src/main/java/com/swmansion/gesturehandler/BaseGestureHandlerInteractionController.kt +18 -0
  6. package/android/lib/src/main/java/com/swmansion/gesturehandler/Extensions.kt +11 -0
  7. package/android/lib/src/main/java/com/swmansion/gesturehandler/FlingGestureHandler.kt +96 -0
  8. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.kt +713 -0
  9. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerInteractionController.kt +8 -0
  10. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.kt +562 -0
  11. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistry.kt +8 -0
  12. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistryImpl.kt +21 -0
  13. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureUtils.kt +49 -0
  14. package/android/lib/src/main/java/com/swmansion/gesturehandler/LongPressGestureHandler.kt +97 -0
  15. package/android/lib/src/main/java/com/swmansion/gesturehandler/ManualGestureHandler.kt +11 -0
  16. package/android/lib/src/main/java/com/swmansion/gesturehandler/NativeViewGestureHandler.kt +129 -0
  17. package/android/lib/src/main/java/com/swmansion/gesturehandler/OnTouchEventListener.kt +9 -0
  18. package/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.kt +289 -0
  19. package/android/lib/src/main/java/com/swmansion/gesturehandler/PinchGestureHandler.kt +88 -0
  20. package/android/lib/src/main/java/com/swmansion/gesturehandler/{PointerEventsConfig.java → PointerEventsConfig.kt} +3 -5
  21. package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureDetector.kt +125 -0
  22. package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureHandler.kt +79 -0
  23. package/android/lib/src/main/java/com/swmansion/gesturehandler/TapGestureHandler.kt +167 -0
  24. package/android/lib/src/main/java/com/swmansion/gesturehandler/ViewConfigurationHelper.kt +10 -0
  25. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +348 -0
  26. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.kt +57 -0
  27. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt +59 -0
  28. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.kt +8 -0
  29. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt +61 -0
  30. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +686 -0
  31. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerPackage.kt +17 -0
  32. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt +95 -0
  33. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +132 -0
  34. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootInterface.kt +5 -0
  35. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt +68 -0
  36. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.kt +34 -0
  37. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt +66 -0
  38. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt +69 -0
  39. package/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.kt +51 -0
  40. package/ios/Handlers/RNFlingHandler.m +78 -5
  41. package/ios/Handlers/RNForceTouchHandler.m +29 -4
  42. package/ios/Handlers/RNLongPressHandler.m +105 -3
  43. package/ios/Handlers/RNManualHandler.h +4 -0
  44. package/ios/Handlers/RNManualHandler.m +73 -0
  45. package/ios/Handlers/RNNativeViewHandler.m +30 -2
  46. package/ios/Handlers/RNPanHandler.m +64 -4
  47. package/ios/Handlers/RNPinchHandler.m +61 -2
  48. package/ios/Handlers/RNRotationHandler.m +60 -1
  49. package/ios/Handlers/RNTapHandler.m +55 -8
  50. package/ios/RNGestureHandler.h +18 -4
  51. package/ios/RNGestureHandler.m +123 -13
  52. package/ios/RNGestureHandlerEvents.h +9 -0
  53. package/ios/RNGestureHandlerEvents.m +34 -0
  54. package/ios/RNGestureHandlerManager.h +7 -0
  55. package/ios/RNGestureHandlerManager.m +62 -34
  56. package/ios/RNGestureHandlerModule.m +39 -3
  57. package/ios/RNGestureHandlerPointerTracker.h +25 -0
  58. package/ios/RNGestureHandlerPointerTracker.m +237 -0
  59. package/ios/RNGestureHandlerRegistry.h +1 -0
  60. package/ios/RNGestureHandlerRegistry.m +10 -0
  61. package/ios/RNGestureHandlerStateManager.h +5 -0
  62. package/ios/RNManualActivationRecognizer.h +10 -0
  63. package/ios/RNManualActivationRecognizer.m +80 -0
  64. package/ios/RNRootViewGestureRecognizer.m +1 -1
  65. package/ios/RNTouchEventType.h +9 -0
  66. package/lib/commonjs/EventType.js +16 -0
  67. package/lib/commonjs/EventType.js.map +1 -0
  68. package/lib/commonjs/GestureHandlerRootView.android.js +1 -13
  69. package/lib/commonjs/GestureHandlerRootView.android.js.map +1 -1
  70. package/lib/commonjs/GestureHandlerRootView.js +11 -3
  71. package/lib/commonjs/GestureHandlerRootView.js.map +1 -1
  72. package/lib/commonjs/RNGestureHandlerModule.js +3 -1
  73. package/lib/commonjs/RNGestureHandlerModule.js.map +1 -1
  74. package/lib/commonjs/RNGestureHandlerModule.web.js +2 -2
  75. package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
  76. package/lib/commonjs/components/DrawerLayout.js +41 -37
  77. package/lib/commonjs/components/DrawerLayout.js.map +1 -1
  78. package/lib/commonjs/components/GestureButtons.js.map +1 -1
  79. package/lib/commonjs/components/GestureComponents.js +31 -12
  80. package/lib/commonjs/components/GestureComponents.js.map +1 -1
  81. package/lib/commonjs/components/Swipeable.js +10 -6
  82. package/lib/commonjs/components/Swipeable.js.map +1 -1
  83. package/lib/commonjs/components/touchables/GenericTouchable.js +2 -1
  84. package/lib/commonjs/components/touchables/GenericTouchable.js.map +1 -1
  85. package/lib/commonjs/components/touchables/TouchableOpacity.js +1 -1
  86. package/lib/commonjs/components/touchables/TouchableOpacity.js.map +1 -1
  87. package/lib/commonjs/gestureHandlerRootHOC.js +1 -1
  88. package/lib/commonjs/gestureHandlerRootHOC.js.map +1 -1
  89. package/lib/commonjs/handlers/FlingGestureHandler.js +23 -0
  90. package/lib/commonjs/handlers/FlingGestureHandler.js.map +1 -0
  91. package/lib/commonjs/handlers/ForceTouchGestureHandler.js +44 -0
  92. package/lib/commonjs/handlers/ForceTouchGestureHandler.js.map +1 -0
  93. package/lib/commonjs/handlers/LongPressGestureHandler.js +23 -0
  94. package/lib/commonjs/handlers/LongPressGestureHandler.js.map +1 -0
  95. package/lib/commonjs/handlers/NativeViewGestureHandler.js +6 -4
  96. package/lib/commonjs/handlers/NativeViewGestureHandler.js.map +1 -1
  97. package/lib/commonjs/handlers/PanGestureHandler.js +121 -0
  98. package/lib/commonjs/handlers/PanGestureHandler.js.map +1 -0
  99. package/lib/commonjs/handlers/PinchGestureHandler.js +21 -0
  100. package/lib/commonjs/handlers/PinchGestureHandler.js.map +1 -0
  101. package/lib/commonjs/handlers/RotationGestureHandler.js +21 -0
  102. package/lib/commonjs/handlers/RotationGestureHandler.js.map +1 -0
  103. package/lib/commonjs/handlers/TapGestureHandler.js +23 -0
  104. package/lib/commonjs/handlers/TapGestureHandler.js.map +1 -0
  105. package/lib/commonjs/handlers/createHandler.js +52 -83
  106. package/lib/commonjs/handlers/createHandler.js.map +1 -1
  107. package/lib/commonjs/handlers/gestureHandlerCommon.js +80 -0
  108. package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -0
  109. package/lib/commonjs/handlers/gestures/GestureDetector.js +440 -0
  110. package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -0
  111. package/lib/commonjs/handlers/gestures/eventReceiver.js +135 -0
  112. package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -0
  113. package/lib/commonjs/handlers/gestures/flingGesture.js +34 -0
  114. package/lib/commonjs/handlers/gestures/flingGesture.js.map +1 -0
  115. package/lib/commonjs/handlers/gestures/forceTouchGesture.js +65 -0
  116. package/lib/commonjs/handlers/gestures/forceTouchGesture.js.map +1 -0
  117. package/lib/commonjs/handlers/gestures/gesture.js +193 -0
  118. package/lib/commonjs/handlers/gestures/gesture.js.map +1 -0
  119. package/lib/commonjs/handlers/gestures/gestureComposition.js +94 -0
  120. package/lib/commonjs/handlers/gestures/gestureComposition.js.map +1 -0
  121. package/lib/commonjs/handlers/gestures/gestureObjects.js +85 -0
  122. package/lib/commonjs/handlers/gestures/gestureObjects.js.map +1 -0
  123. package/lib/commonjs/handlers/gestures/gestureStateManager.js +58 -0
  124. package/lib/commonjs/handlers/gestures/gestureStateManager.js.map +1 -0
  125. package/lib/commonjs/handlers/gestures/longPressGesture.js +34 -0
  126. package/lib/commonjs/handlers/gestures/longPressGesture.js.map +1 -0
  127. package/lib/commonjs/handlers/gestures/manualGesture.js +31 -0
  128. package/lib/commonjs/handlers/gestures/manualGesture.js.map +1 -0
  129. package/lib/commonjs/handlers/gestures/nativeGesture.js +34 -0
  130. package/lib/commonjs/handlers/gestures/nativeGesture.js.map +1 -0
  131. package/lib/commonjs/handlers/gestures/panGesture.js +144 -0
  132. package/lib/commonjs/handlers/gestures/panGesture.js.map +1 -0
  133. package/lib/commonjs/handlers/gestures/pinchGesture.js +45 -0
  134. package/lib/commonjs/handlers/gestures/pinchGesture.js.map +1 -0
  135. package/lib/commonjs/handlers/gestures/reanimatedWrapper.js +24 -0
  136. package/lib/commonjs/handlers/gestures/reanimatedWrapper.js.map +1 -0
  137. package/lib/commonjs/handlers/gestures/rotationGesture.js +45 -0
  138. package/lib/commonjs/handlers/gestures/rotationGesture.js.map +1 -0
  139. package/lib/commonjs/handlers/gestures/tapGesture.js +59 -0
  140. package/lib/commonjs/handlers/gestures/tapGesture.js.map +1 -0
  141. package/lib/commonjs/handlers/handlersRegistry.js +31 -0
  142. package/lib/commonjs/handlers/handlersRegistry.js.map +1 -0
  143. package/lib/commonjs/index.js +146 -8
  144. package/lib/commonjs/index.js.map +1 -1
  145. package/lib/commonjs/init.js +13 -0
  146. package/lib/commonjs/init.js.map +1 -0
  147. package/lib/commonjs/mocks.js +31 -2
  148. package/lib/commonjs/mocks.js.map +1 -1
  149. package/lib/commonjs/utils.js +15 -0
  150. package/lib/commonjs/utils.js.map +1 -0
  151. package/lib/commonjs/web/Errors.js +1 -1
  152. package/lib/commonjs/web/Errors.js.map +1 -1
  153. package/lib/commonjs/web/GestureHandler.js +4 -6
  154. package/lib/commonjs/web/GestureHandler.js.map +1 -1
  155. package/lib/commonjs/web/NodeManager.js +8 -2
  156. package/lib/commonjs/web/NodeManager.js.map +1 -1
  157. package/lib/module/EventType.js +8 -0
  158. package/lib/module/EventType.js.map +1 -0
  159. package/lib/module/GestureHandlerRootView.android.js +2 -14
  160. package/lib/module/GestureHandlerRootView.android.js.map +1 -1
  161. package/lib/module/GestureHandlerRootView.js +5 -1
  162. package/lib/module/GestureHandlerRootView.js.map +1 -1
  163. package/lib/module/RNGestureHandlerModule.js +3 -1
  164. package/lib/module/RNGestureHandlerModule.js.map +1 -1
  165. package/lib/module/RNGestureHandlerModule.web.js +2 -2
  166. package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
  167. package/lib/module/components/DrawerLayout.js +43 -40
  168. package/lib/module/components/DrawerLayout.js.map +1 -1
  169. package/lib/module/components/GestureButtons.js.map +1 -1
  170. package/lib/module/components/GestureComponents.js +29 -11
  171. package/lib/module/components/GestureComponents.js.map +1 -1
  172. package/lib/module/components/Swipeable.js +9 -6
  173. package/lib/module/components/Swipeable.js.map +1 -1
  174. package/lib/module/components/touchables/GenericTouchable.js +2 -1
  175. package/lib/module/components/touchables/GenericTouchable.js.map +1 -1
  176. package/lib/module/components/touchables/TouchableOpacity.js +1 -1
  177. package/lib/module/components/touchables/TouchableOpacity.js.map +1 -1
  178. package/lib/module/gestureHandlerRootHOC.js +1 -1
  179. package/lib/module/gestureHandlerRootHOC.js.map +1 -1
  180. package/lib/module/handlers/FlingGestureHandler.js +10 -0
  181. package/lib/module/handlers/FlingGestureHandler.js.map +1 -0
  182. package/lib/module/handlers/ForceTouchGestureHandler.js +29 -0
  183. package/lib/module/handlers/ForceTouchGestureHandler.js.map +1 -0
  184. package/lib/module/handlers/LongPressGestureHandler.js +10 -0
  185. package/lib/module/handlers/LongPressGestureHandler.js.map +1 -0
  186. package/lib/module/handlers/NativeViewGestureHandler.js +4 -3
  187. package/lib/module/handlers/NativeViewGestureHandler.js.map +1 -1
  188. package/lib/module/handlers/PanGestureHandler.js +106 -0
  189. package/lib/module/handlers/PanGestureHandler.js.map +1 -0
  190. package/lib/module/handlers/PinchGestureHandler.js +9 -0
  191. package/lib/module/handlers/PinchGestureHandler.js.map +1 -0
  192. package/lib/module/handlers/RotationGestureHandler.js +9 -0
  193. package/lib/module/handlers/RotationGestureHandler.js.map +1 -0
  194. package/lib/module/handlers/TapGestureHandler.js +10 -0
  195. package/lib/module/handlers/TapGestureHandler.js.map +1 -0
  196. package/lib/module/handlers/createHandler.js +41 -76
  197. package/lib/module/handlers/createHandler.js.map +1 -1
  198. package/lib/module/handlers/gestureHandlerCommon.js +66 -0
  199. package/lib/module/handlers/gestureHandlerCommon.js.map +1 -0
  200. package/lib/module/handlers/gestures/GestureDetector.js +402 -0
  201. package/lib/module/handlers/gestures/GestureDetector.js.map +1 -0
  202. package/lib/module/handlers/gestures/eventReceiver.js +120 -0
  203. package/lib/module/handlers/gestures/eventReceiver.js.map +1 -0
  204. package/lib/module/handlers/gestures/flingGesture.js +24 -0
  205. package/lib/module/handlers/gestures/flingGesture.js.map +1 -0
  206. package/lib/module/handlers/gestures/forceTouchGesture.js +56 -0
  207. package/lib/module/handlers/gestures/forceTouchGesture.js.map +1 -0
  208. package/lib/module/handlers/gestures/gesture.js +175 -0
  209. package/lib/module/handlers/gestures/gesture.js.map +1 -0
  210. package/lib/module/handlers/gestures/gestureComposition.js +79 -0
  211. package/lib/module/handlers/gestures/gestureComposition.js.map +1 -0
  212. package/lib/module/handlers/gestures/gestureObjects.js +67 -0
  213. package/lib/module/handlers/gestures/gestureObjects.js.map +1 -0
  214. package/lib/module/handlers/gestures/gestureStateManager.js +48 -0
  215. package/lib/module/handlers/gestures/gestureStateManager.js.map +1 -0
  216. package/lib/module/handlers/gestures/longPressGesture.js +24 -0
  217. package/lib/module/handlers/gestures/longPressGesture.js.map +1 -0
  218. package/lib/module/handlers/gestures/manualGesture.js +22 -0
  219. package/lib/module/handlers/gestures/manualGesture.js.map +1 -0
  220. package/lib/module/handlers/gestures/nativeGesture.js +24 -0
  221. package/lib/module/handlers/gestures/nativeGesture.js.map +1 -0
  222. package/lib/module/handlers/gestures/panGesture.js +135 -0
  223. package/lib/module/handlers/gestures/panGesture.js.map +1 -0
  224. package/lib/module/handlers/gestures/pinchGesture.js +36 -0
  225. package/lib/module/handlers/gestures/pinchGesture.js.map +1 -0
  226. package/lib/module/handlers/gestures/reanimatedWrapper.js +19 -0
  227. package/lib/module/handlers/gestures/reanimatedWrapper.js.map +1 -0
  228. package/lib/module/handlers/gestures/rotationGesture.js +36 -0
  229. package/lib/module/handlers/gestures/rotationGesture.js.map +1 -0
  230. package/lib/module/handlers/gestures/tapGesture.js +49 -0
  231. package/lib/module/handlers/gestures/tapGesture.js.map +1 -0
  232. package/lib/module/handlers/handlersRegistry.js +16 -0
  233. package/lib/module/handlers/handlersRegistry.js.map +1 -0
  234. package/lib/module/index.js +22 -1
  235. package/lib/module/index.js.map +1 -1
  236. package/lib/module/init.js +5 -0
  237. package/lib/module/init.js.map +1 -0
  238. package/lib/module/mocks.js +31 -2
  239. package/lib/module/mocks.js.map +1 -1
  240. package/lib/module/utils.js +8 -0
  241. package/lib/module/utils.js.map +1 -0
  242. package/lib/module/web/Errors.js +1 -1
  243. package/lib/module/web/Errors.js.map +1 -1
  244. package/lib/module/web/GestureHandler.js +4 -6
  245. package/lib/module/web/GestureHandler.js.map +1 -1
  246. package/lib/module/web/NodeManager.js +8 -2
  247. package/lib/module/web/NodeManager.js.map +1 -1
  248. package/lib/typescript/EventType.d.ts +8 -0
  249. package/lib/typescript/GestureHandlerRootView.android.d.ts +2 -4
  250. package/lib/typescript/GestureHandlerRootView.d.ts +5 -2
  251. package/lib/typescript/RNGestureHandlerModule.d.ts +1 -1
  252. package/lib/typescript/RNGestureHandlerModule.web.d.ts +1 -1
  253. package/lib/typescript/components/DrawerLayout.d.ts +50 -1
  254. package/lib/typescript/components/GestureButtons.d.ts +36 -0
  255. package/lib/typescript/components/GestureComponents.d.ts +8 -35
  256. package/lib/typescript/components/Swipeable.d.ts +73 -6
  257. package/lib/typescript/components/touchables/GenericTouchable.d.ts +2 -2
  258. package/lib/typescript/components/touchables/TouchableHighlight.d.ts +1 -0
  259. package/lib/typescript/components/touchables/TouchableOpacity.d.ts +1 -0
  260. package/lib/typescript/handlers/FlingGestureHandler.d.ts +33 -0
  261. package/lib/typescript/handlers/ForceTouchGestureHandler.d.ts +43 -0
  262. package/lib/typescript/handlers/LongPressGestureHandler.d.ts +55 -0
  263. package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +19 -4
  264. package/lib/typescript/handlers/PanGestureHandler.d.ts +137 -0
  265. package/lib/typescript/handlers/PinchGestureHandler.d.ts +28 -0
  266. package/lib/typescript/handlers/RotationGestureHandler.d.ts +28 -0
  267. package/lib/typescript/handlers/TapGestureHandler.d.ts +56 -0
  268. package/lib/typescript/handlers/createHandler.d.ts +1 -1
  269. package/lib/typescript/handlers/gestureHandlerCommon.d.ts +62 -0
  270. package/lib/typescript/handlers/gestureHandlerTypesCompat.d.ts +8 -1
  271. package/lib/typescript/handlers/gestures/GestureDetector.d.ts +16 -0
  272. package/lib/typescript/handlers/gestures/eventReceiver.d.ts +2 -0
  273. package/lib/typescript/handlers/gestures/flingGesture.d.ts +9 -0
  274. package/lib/typescript/handlers/gestures/forceTouchGesture.d.ts +16 -0
  275. package/lib/typescript/handlers/gestures/gesture.d.ts +97 -0
  276. package/lib/typescript/handlers/gestures/gestureComposition.d.ts +21 -0
  277. package/lib/typescript/handlers/gestures/gestureObjects.d.ts +39 -0
  278. package/lib/typescript/handlers/gestures/gestureStateManager.d.ts +9 -0
  279. package/lib/typescript/handlers/gestures/longPressGesture.d.ts +9 -0
  280. package/lib/typescript/handlers/gestures/manualGesture.d.ts +7 -0
  281. package/lib/typescript/handlers/gestures/nativeGesture.d.ts +9 -0
  282. package/lib/typescript/handlers/gestures/panGesture.d.ts +26 -0
  283. package/lib/typescript/handlers/gestures/pinchGesture.d.ts +12 -0
  284. package/lib/typescript/handlers/gestures/reanimatedWrapper.d.ts +14 -0
  285. package/lib/typescript/handlers/gestures/rotationGesture.d.ts +12 -0
  286. package/lib/typescript/handlers/gestures/tapGesture.d.ts +14 -0
  287. package/lib/typescript/handlers/handlersRegistry.d.ts +6 -0
  288. package/lib/typescript/index.d.ts +29 -2
  289. package/lib/typescript/init.d.ts +1 -0
  290. package/lib/typescript/mocks.d.ts +21 -2
  291. package/lib/typescript/utils.d.ts +1 -0
  292. package/lib/typescript/web/FlingGestureHandler.d.ts +0 -1
  293. package/lib/typescript/web/GestureHandler.d.ts +0 -1
  294. package/lib/typescript/web/PanGestureHandler.d.ts +0 -1
  295. package/lib/typescript/web/PinchGestureHandler.d.ts +0 -1
  296. package/lib/typescript/web/PressGestureHandler.d.ts +0 -1
  297. package/lib/typescript/web/RotationGestureHandler.d.ts +0 -1
  298. package/lib/typescript/web/TapGestureHandler.d.ts +0 -1
  299. package/package.json +8 -5
  300. package/src/EventType.ts +10 -0
  301. package/src/GestureHandlerRootView.android.tsx +9 -25
  302. package/src/GestureHandlerRootView.tsx +11 -2
  303. package/src/RNGestureHandlerModule.ts +5 -1
  304. package/src/RNGestureHandlerModule.web.ts +1 -0
  305. package/src/components/DrawerLayout.tsx +114 -41
  306. package/src/components/GestureButtons.tsx +45 -5
  307. package/src/components/GestureComponents.tsx +47 -41
  308. package/src/components/Swipeable.tsx +108 -21
  309. package/src/components/touchables/GenericTouchable.tsx +2 -1
  310. package/src/components/touchables/TouchableOpacity.tsx +1 -1
  311. package/src/handlers/FlingGestureHandler.ts +57 -0
  312. package/src/handlers/ForceTouchGestureHandler.ts +83 -0
  313. package/src/handlers/LongPressGestureHandler.ts +84 -0
  314. package/src/handlers/NativeViewGestureHandler.ts +31 -7
  315. package/src/handlers/PanGestureHandler.ts +321 -0
  316. package/src/handlers/PinchGestureHandler.ts +46 -0
  317. package/src/handlers/RotationGestureHandler.ts +46 -0
  318. package/src/handlers/TapGestureHandler.ts +90 -0
  319. package/src/handlers/createHandler.ts +54 -79
  320. package/src/handlers/gestureHandlerCommon.ts +185 -0
  321. package/src/handlers/gestureHandlerTypesCompat.ts +19 -5
  322. package/src/handlers/gestures/GestureDetector.tsx +519 -0
  323. package/src/handlers/gestures/eventReceiver.ts +151 -0
  324. package/src/handlers/gestures/flingGesture.ts +27 -0
  325. package/src/handlers/gestures/forceTouchGesture.ts +74 -0
  326. package/src/handlers/gestures/gesture.ts +292 -0
  327. package/src/handlers/gestures/gestureComposition.ts +109 -0
  328. package/src/handlers/gestures/gestureObjects.ts +79 -0
  329. package/src/handlers/gestures/gestureStateManager.ts +60 -0
  330. package/src/handlers/gestures/longPressGesture.ts +27 -0
  331. package/src/handlers/gestures/manualGesture.ts +31 -0
  332. package/src/handlers/gestures/nativeGesture.ts +27 -0
  333. package/src/handlers/gestures/panGesture.ts +147 -0
  334. package/src/handlers/gestures/pinchGesture.ts +51 -0
  335. package/src/handlers/gestures/reanimatedWrapper.ts +45 -0
  336. package/src/handlers/gestures/rotationGesture.ts +51 -0
  337. package/src/handlers/gestures/tapGesture.ts +52 -0
  338. package/src/handlers/handlersRegistry.ts +22 -0
  339. package/src/index.ts +57 -17
  340. package/src/init.ts +5 -0
  341. package/src/mocks.ts +42 -2
  342. package/src/utils.ts +7 -0
  343. package/src/web/GestureHandler.ts +1 -2
  344. package/src/web/NodeManager.ts +5 -0
  345. package/android/lib/src/main/java/com/swmansion/gesturehandler/BaseGestureHandlerInteractionController.java +0 -23
  346. package/android/lib/src/main/java/com/swmansion/gesturehandler/FlingGestureHandler.java +0 -110
  347. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.java +0 -531
  348. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerInteractionController.java +0 -8
  349. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.java +0 -543
  350. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistry.java +0 -10
  351. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistryImpl.java +0 -29
  352. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureUtils.java +0 -53
  353. package/android/lib/src/main/java/com/swmansion/gesturehandler/LongPressGestureHandler.java +0 -81
  354. package/android/lib/src/main/java/com/swmansion/gesturehandler/NativeViewGestureHandler.java +0 -110
  355. package/android/lib/src/main/java/com/swmansion/gesturehandler/OnTouchEventListener.java +0 -8
  356. package/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.java +0 -312
  357. package/android/lib/src/main/java/com/swmansion/gesturehandler/PinchGestureHandler.java +0 -109
  358. package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureDetector.java +0 -169
  359. package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureHandler.java +0 -96
  360. package/android/lib/src/main/java/com/swmansion/gesturehandler/TapGestureHandler.java +0 -172
  361. package/android/lib/src/main/java/com/swmansion/gesturehandler/ViewConfigurationHelper.java +0 -10
  362. package/android/src/main/java/com/facebook/react/views/modal/RNGHModalUtils.java +0 -21
  363. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.java +0 -296
  364. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.java +0 -72
  365. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.java +0 -77
  366. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.java +0 -8
  367. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.java +0 -86
  368. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.java +0 -731
  369. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerPackage.java +0 -31
  370. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.java +0 -101
  371. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.java +0 -151
  372. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootInterface.java +0 -7
  373. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.java +0 -76
  374. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.java +0 -49
  375. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.java +0 -82
  376. package/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.java +0 -61
  377. package/lib/commonjs/handlers/gestureHandlers.js +0 -236
  378. package/lib/commonjs/handlers/gestureHandlers.js.map +0 -1
  379. package/lib/module/handlers/gestureHandlers.js +0 -216
  380. package/lib/module/handlers/gestureHandlers.js.map +0 -1
  381. package/lib/typescript/handlers/gestureHandlers.d.ts +0 -158
  382. package/src/handlers/gestureHandlers.ts +0 -511
@@ -0,0 +1,125 @@
1
+ package com.swmansion.gesturehandler
2
+
3
+ import android.view.MotionEvent
4
+ import kotlin.math.atan2
5
+
6
+ class RotationGestureDetector(private val gestureListener: OnRotationGestureListener?) {
7
+ interface OnRotationGestureListener {
8
+ fun onRotation(detector: RotationGestureDetector): Boolean
9
+ fun onRotationBegin(detector: RotationGestureDetector): Boolean
10
+ fun onRotationEnd(detector: RotationGestureDetector)
11
+ }
12
+
13
+ private var currentTime = 0L
14
+ private var previousTime = 0L
15
+ private var previousAngle = 0.0
16
+
17
+ /**
18
+ * Returns rotation in radians since the previous rotation event.
19
+ *
20
+ * @return current rotation step in radians.
21
+ */
22
+ var rotation = 0.0
23
+ private set
24
+
25
+ /**
26
+ * Returns X coordinate of the rotation anchor point relative to the view that the provided motion
27
+ * event coordinates (usually relative to the view event was sent to).
28
+ *
29
+ * @return X coordinate of the rotation anchor point
30
+ */
31
+ var anchorX = 0f
32
+ private set
33
+
34
+ /**
35
+ * Returns Y coordinate of the rotation anchor point relative to the view that the provided motion
36
+ * event coordinates (usually relative to the view event was sent to).
37
+ *
38
+ * @return Y coordinate of the rotation anchor point
39
+ */
40
+ var anchorY = 0f
41
+ private set
42
+
43
+ /**
44
+ * Return the time difference in milliseconds between the previous
45
+ * accepted rotation event and the current rotation event.
46
+ *
47
+ * @return Time difference since the last rotation event in milliseconds.
48
+ */
49
+ val timeDelta: Long
50
+ get() = currentTime - previousTime
51
+
52
+ private var isInProgress = false
53
+ private val pointerIds = IntArray(2)
54
+
55
+ private fun updateCurrent(event: MotionEvent) {
56
+ previousTime = currentTime
57
+ currentTime = event.eventTime
58
+ val firstPointerIndex = event.findPointerIndex(pointerIds[0])
59
+ val secondPointerIndex = event.findPointerIndex(pointerIds[1])
60
+ val firstPtX = event.getX(firstPointerIndex)
61
+ val firstPtY = event.getY(firstPointerIndex)
62
+ val secondPtX = event.getX(secondPointerIndex)
63
+ val secondPtY = event.getY(secondPointerIndex)
64
+ val vectorX = secondPtX - firstPtX
65
+ val vectorY = secondPtY - firstPtY
66
+ anchorX = (firstPtX + secondPtX) * 0.5f
67
+ anchorY = (firstPtY + secondPtY) * 0.5f
68
+
69
+ // Angle diff should be positive when rotating in clockwise direction
70
+ val angle = -atan2(vectorY.toDouble(), vectorX.toDouble())
71
+ rotation = if (previousAngle.isNaN()) {
72
+ 0.0
73
+ } else previousAngle - angle
74
+
75
+ previousAngle = angle
76
+ if (rotation > Math.PI) {
77
+ rotation -= Math.PI
78
+ } else if (rotation < -Math.PI) {
79
+ rotation += Math.PI
80
+ }
81
+ if (rotation > Math.PI / 2.0) {
82
+ rotation -= Math.PI
83
+ } else if (rotation < -Math.PI / 2.0) {
84
+ rotation += Math.PI
85
+ }
86
+ }
87
+
88
+ private fun finish() {
89
+ if (isInProgress) {
90
+ isInProgress = false
91
+ gestureListener?.onRotationEnd(this)
92
+ }
93
+ }
94
+
95
+ fun onTouchEvent(event: MotionEvent): Boolean {
96
+ when (event.actionMasked) {
97
+ MotionEvent.ACTION_DOWN -> {
98
+ isInProgress = false
99
+ pointerIds[0] = event.getPointerId(event.actionIndex)
100
+ pointerIds[1] = MotionEvent.INVALID_POINTER_ID
101
+ }
102
+ MotionEvent.ACTION_POINTER_DOWN -> if (!isInProgress) {
103
+ pointerIds[1] = event.getPointerId(event.actionIndex)
104
+ isInProgress = true
105
+ previousTime = event.eventTime
106
+ previousAngle = Double.NaN
107
+ updateCurrent(event)
108
+ gestureListener?.onRotationBegin(this)
109
+ }
110
+ MotionEvent.ACTION_MOVE -> if (isInProgress) {
111
+ updateCurrent(event)
112
+ gestureListener?.onRotation(this)
113
+ }
114
+ MotionEvent.ACTION_POINTER_UP -> if (isInProgress) {
115
+ val pointerId = event.getPointerId(event.actionIndex)
116
+ if (pointerId == pointerIds[0] || pointerId == pointerIds[1]) {
117
+ // One of the key pointer has been lifted up, we have to end the gesture
118
+ finish()
119
+ }
120
+ }
121
+ MotionEvent.ACTION_UP -> finish()
122
+ }
123
+ return true
124
+ }
125
+ }
@@ -0,0 +1,79 @@
1
+ package com.swmansion.gesturehandler
2
+
3
+ import android.view.MotionEvent
4
+ import com.swmansion.gesturehandler.RotationGestureDetector.OnRotationGestureListener
5
+ import kotlin.math.abs
6
+
7
+ class RotationGestureHandler : GestureHandler<RotationGestureHandler>() {
8
+ private var rotationGestureDetector: RotationGestureDetector? = null
9
+ var rotation = 0.0
10
+ private set
11
+ var velocity = 0.0
12
+ private set
13
+
14
+ val anchorX: Float
15
+ get() = rotationGestureDetector?.anchorX ?: Float.NaN
16
+ val anchorY: Float
17
+ get() = rotationGestureDetector?.anchorY ?: Float.NaN
18
+
19
+ init {
20
+ setShouldCancelWhenOutside(false)
21
+ }
22
+
23
+ private val gestureListener: OnRotationGestureListener = object : OnRotationGestureListener {
24
+ override fun onRotation(detector: RotationGestureDetector): Boolean {
25
+ val prevRotation: Double = rotation
26
+ rotation += detector.rotation
27
+ val delta = detector.timeDelta
28
+ if (delta > 0) {
29
+ velocity = (rotation - prevRotation) / delta
30
+ }
31
+ if (abs(rotation) >= ROTATION_RECOGNITION_THRESHOLD && state == STATE_BEGAN) {
32
+ activate()
33
+ }
34
+ return true
35
+ }
36
+
37
+ override fun onRotationBegin(detector: RotationGestureDetector) = true
38
+
39
+ override fun onRotationEnd(detector: RotationGestureDetector) {
40
+ end()
41
+ }
42
+ }
43
+
44
+ override fun onHandle(event: MotionEvent) {
45
+ if (state == STATE_UNDETERMINED) {
46
+ velocity = 0.0
47
+ rotation = 0.0
48
+ rotationGestureDetector = RotationGestureDetector(gestureListener)
49
+ begin()
50
+ }
51
+ rotationGestureDetector?.onTouchEvent(event)
52
+ if (event.actionMasked == MotionEvent.ACTION_UP) {
53
+ if (state == STATE_ACTIVE) {
54
+ end()
55
+ } else {
56
+ fail()
57
+ }
58
+ }
59
+ }
60
+
61
+ override fun activate(force: Boolean) {
62
+ // reset rotation if the handler has not yet activated
63
+ if (state != STATE_ACTIVE) {
64
+ rotation = 0.0
65
+ velocity = 0.0
66
+ }
67
+ super.activate(force)
68
+ }
69
+
70
+ override fun onReset() {
71
+ rotationGestureDetector = null
72
+ velocity = 0.0
73
+ rotation = 0.0
74
+ }
75
+
76
+ companion object {
77
+ private const val ROTATION_RECOGNITION_THRESHOLD = Math.PI / 36.0 // 5 deg in radians
78
+ }
79
+ }
@@ -0,0 +1,167 @@
1
+ package com.swmansion.gesturehandler
2
+
3
+ import android.os.Handler
4
+ import android.view.MotionEvent
5
+ import com.swmansion.gesturehandler.GestureUtils.getLastPointerX
6
+ import com.swmansion.gesturehandler.GestureUtils.getLastPointerY
7
+ import kotlin.math.abs
8
+
9
+ class TapGestureHandler : GestureHandler<TapGestureHandler>() {
10
+ private var maxDeltaX = MAX_VALUE_IGNORE
11
+ private var maxDeltaY = MAX_VALUE_IGNORE
12
+ private var maxDistSq = MAX_VALUE_IGNORE
13
+ private var maxDurationMs = DEFAULT_MAX_DURATION_MS
14
+ private var maxDelayMs = DEFAULT_MAX_DELAY_MS
15
+ private var numberOfTaps = DEFAULT_NUMBER_OF_TAPS
16
+ private var minNumberOfPointers = DEFAULT_MIN_NUMBER_OF_POINTERS
17
+ private var currentMaxNumberOfPointers = 1
18
+ private var startX = 0f
19
+ private var startY = 0f
20
+ private var offsetX = 0f
21
+ private var offsetY = 0f
22
+ private var lastX = 0f
23
+ private var lastY = 0f
24
+ private var handler: Handler? = null
25
+ private var tapsSoFar = 0
26
+ private val failDelayed = Runnable { fail() }
27
+
28
+ init {
29
+ setShouldCancelWhenOutside(true)
30
+ }
31
+
32
+ override fun resetConfig() {
33
+ super.resetConfig()
34
+ maxDeltaX = MAX_VALUE_IGNORE
35
+ maxDeltaY = MAX_VALUE_IGNORE
36
+ maxDistSq = MAX_VALUE_IGNORE
37
+ maxDurationMs = DEFAULT_MAX_DURATION_MS
38
+ maxDelayMs = DEFAULT_MAX_DELAY_MS
39
+ numberOfTaps = DEFAULT_NUMBER_OF_TAPS
40
+ minNumberOfPointers = DEFAULT_MIN_NUMBER_OF_POINTERS
41
+ }
42
+
43
+ fun setNumberOfTaps(numberOfTaps: Int) = apply {
44
+ this.numberOfTaps = numberOfTaps
45
+ }
46
+
47
+ fun setMaxDelayMs(maxDelayMs: Long) = apply {
48
+ this.maxDelayMs = maxDelayMs
49
+ }
50
+
51
+ fun setMaxDurationMs(maxDurationMs: Long) = apply {
52
+ this.maxDurationMs = maxDurationMs
53
+ }
54
+
55
+ fun setMaxDx(deltaX: Float) = apply {
56
+ maxDeltaX = deltaX
57
+ }
58
+
59
+ fun setMaxDy(deltaY: Float) = apply {
60
+ maxDeltaY = deltaY
61
+ }
62
+
63
+ fun setMaxDist(maxDist: Float) = apply {
64
+ maxDistSq = maxDist * maxDist
65
+ }
66
+
67
+ fun setMinNumberOfPointers(minNumberOfPointers: Int) = apply {
68
+ this.minNumberOfPointers = minNumberOfPointers
69
+ }
70
+
71
+ private fun startTap() {
72
+ if (handler == null) {
73
+ handler = Handler() // TODO: lazy init (handle else branch correctly)
74
+ } else {
75
+ handler!!.removeCallbacksAndMessages(null)
76
+ }
77
+ handler!!.postDelayed(failDelayed, maxDurationMs)
78
+ }
79
+
80
+ private fun endTap() {
81
+ if (handler == null) {
82
+ handler = Handler()
83
+ } else {
84
+ handler!!.removeCallbacksAndMessages(null)
85
+ }
86
+ if (++tapsSoFar == numberOfTaps && currentMaxNumberOfPointers >= minNumberOfPointers) {
87
+ activate()
88
+ } else {
89
+ handler!!.postDelayed(failDelayed, maxDelayMs)
90
+ }
91
+ }
92
+
93
+ private fun shouldFail(): Boolean {
94
+ val dx = lastX - startX + offsetX
95
+ if (maxDeltaX != MAX_VALUE_IGNORE && abs(dx) > maxDeltaX) {
96
+ return true
97
+ }
98
+ val dy = lastY - startY + offsetY
99
+ if (maxDeltaY != MAX_VALUE_IGNORE && abs(dy) > maxDeltaY) {
100
+ return true
101
+ }
102
+ val dist = dy * dy + dx * dx
103
+ return maxDistSq != MAX_VALUE_IGNORE && dist > maxDistSq
104
+ }
105
+
106
+ override fun onHandle(event: MotionEvent) {
107
+ val state = state
108
+ val action = event.actionMasked
109
+ if (state == STATE_UNDETERMINED) {
110
+ offsetX = 0f
111
+ offsetY = 0f
112
+ startX = event.rawX
113
+ startY = event.rawY
114
+ }
115
+ if (action == MotionEvent.ACTION_POINTER_UP || action == MotionEvent.ACTION_POINTER_DOWN) {
116
+ offsetX += lastX - startX
117
+ offsetY += lastY - startY
118
+ lastX = getLastPointerX(event, true)
119
+ lastY = getLastPointerY(event, true)
120
+ startX = lastX
121
+ startY = lastY
122
+ } else {
123
+ lastX = getLastPointerX(event, true)
124
+ lastY = getLastPointerY(event, true)
125
+ }
126
+ if (currentMaxNumberOfPointers < event.pointerCount) {
127
+ currentMaxNumberOfPointers = event.pointerCount
128
+ }
129
+ if (shouldFail()) {
130
+ fail()
131
+ } else if (state == STATE_UNDETERMINED) {
132
+ if (action == MotionEvent.ACTION_DOWN) {
133
+ begin()
134
+ }
135
+ startTap()
136
+ } else if (state == STATE_BEGAN) {
137
+ if (action == MotionEvent.ACTION_UP) {
138
+ endTap()
139
+ } else if (action == MotionEvent.ACTION_DOWN) {
140
+ startTap()
141
+ }
142
+ }
143
+ }
144
+
145
+ override fun activate(force: Boolean) {
146
+ super.activate(force)
147
+ end()
148
+ }
149
+
150
+ override fun onCancel() {
151
+ handler?.removeCallbacksAndMessages(null)
152
+ }
153
+
154
+ override fun onReset() {
155
+ tapsSoFar = 0
156
+ currentMaxNumberOfPointers = 0
157
+ handler?.removeCallbacksAndMessages(null)
158
+ }
159
+
160
+ companion object {
161
+ private const val MAX_VALUE_IGNORE = Float.MIN_VALUE
162
+ private const val DEFAULT_MAX_DURATION_MS: Long = 500
163
+ private const val DEFAULT_MAX_DELAY_MS: Long = 200
164
+ private const val DEFAULT_NUMBER_OF_TAPS = 1
165
+ private const val DEFAULT_MIN_NUMBER_OF_POINTERS = 1
166
+ }
167
+ }
@@ -0,0 +1,10 @@
1
+ package com.swmansion.gesturehandler
2
+
3
+ import android.view.View
4
+ import android.view.ViewGroup
5
+
6
+ interface ViewConfigurationHelper {
7
+ fun getPointerEventsConfigForView(view: View): PointerEventsConfig
8
+ fun getChildInDrawingOrderAtIndex(parent: ViewGroup, index: Int): View
9
+ fun isViewClippingChildren(view: ViewGroup): Boolean
10
+ }