react-native-gesture-handler 2.16.0-rc.0 → 2.16.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (399) hide show
  1. package/README.md +1 -0
  2. package/android/noreanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt +2 -0
  3. package/android/paper/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerDelegate.java +9 -0
  4. package/android/paper/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerInterface.java +3 -0
  5. package/android/src/main/java/com/swmansion/gesturehandler/RNGestureHandlerPackage.kt +2 -2
  6. package/android/src/main/java/com/swmansion/gesturehandler/core/DiagonalDirections.kt +8 -0
  7. package/android/src/main/java/com/swmansion/gesturehandler/core/FlingGestureHandler.kt +61 -24
  8. package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt +17 -22
  9. package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt +30 -11
  10. package/android/src/main/java/com/swmansion/gesturehandler/core/GestureUtils.kt +3 -0
  11. package/android/src/main/java/com/swmansion/gesturehandler/core/Vector.kt +66 -0
  12. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +119 -19
  13. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.kt +2 -2
  14. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt +1 -4
  15. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +4 -2
  16. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt +1 -1
  17. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt +1 -4
  18. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt +4 -7
  19. package/apple/Handlers/RNLongPressHandler.m +5 -13
  20. package/apple/Handlers/RNPinchHandler.m +12 -1
  21. package/apple/RNGestureHandler.m +3 -1
  22. package/lib/commonjs/Directions.js +19 -6
  23. package/lib/commonjs/Directions.js.map +1 -1
  24. package/lib/commonjs/RNGestureHandlerModule.js +97 -4
  25. package/lib/commonjs/RNGestureHandlerModule.js.map +1 -1
  26. package/lib/commonjs/RNGestureHandlerModule.native.js +16 -0
  27. package/lib/commonjs/RNGestureHandlerModule.native.js.map +1 -0
  28. package/lib/commonjs/RNRenderer.js +5 -10
  29. package/lib/commonjs/RNRenderer.js.map +1 -1
  30. package/lib/commonjs/RNRenderer.native.js +16 -0
  31. package/lib/commonjs/RNRenderer.native.js.map +1 -0
  32. package/lib/commonjs/components/DrawerLayout.js.map +1 -1
  33. package/lib/commonjs/components/GestureComponents.js +19 -82
  34. package/lib/commonjs/components/GestureComponents.js.map +1 -1
  35. package/lib/commonjs/components/GestureComponents.native.js +115 -0
  36. package/lib/commonjs/components/GestureComponents.native.js.map +1 -0
  37. package/lib/commonjs/components/GestureHandlerButton.js +13 -3
  38. package/lib/commonjs/components/GestureHandlerButton.js.map +1 -1
  39. package/lib/commonjs/components/GestureHandlerButton.native.js +14 -0
  40. package/lib/commonjs/components/GestureHandlerButton.native.js.map +1 -0
  41. package/lib/commonjs/components/GestureHandlerRootView.js +0 -6
  42. package/lib/commonjs/components/GestureHandlerRootView.js.map +1 -1
  43. package/lib/commonjs/components/{GestureHandlerRootView.web.js → GestureHandlerRootView.native.js} +7 -1
  44. package/lib/commonjs/components/GestureHandlerRootView.native.js.map +1 -0
  45. package/lib/commonjs/components/Swipeable.js +3 -1
  46. package/lib/commonjs/components/Swipeable.js.map +1 -1
  47. package/lib/commonjs/components/touchables/GenericTouchable.js +1 -0
  48. package/lib/commonjs/components/touchables/GenericTouchable.js.map +1 -1
  49. package/lib/commonjs/getReactNativeVersion.js +1 -12
  50. package/lib/commonjs/getReactNativeVersion.js.map +1 -1
  51. package/lib/commonjs/getReactNativeVersion.native.js +22 -0
  52. package/lib/commonjs/getReactNativeVersion.native.js.map +1 -0
  53. package/lib/commonjs/getShadowNodeFromRef.js +5 -34
  54. package/lib/commonjs/getShadowNodeFromRef.js.map +1 -1
  55. package/lib/commonjs/getShadowNodeFromRef.native.js +44 -0
  56. package/lib/commonjs/getShadowNodeFromRef.native.js.map +1 -0
  57. package/lib/commonjs/handlers/PanGestureHandler.js.map +1 -1
  58. package/lib/commonjs/handlers/PressabilityDebugView.js +5 -7
  59. package/lib/commonjs/handlers/PressabilityDebugView.js.map +1 -1
  60. package/lib/commonjs/handlers/PressabilityDebugView.native.js +14 -0
  61. package/lib/commonjs/handlers/PressabilityDebugView.native.js.map +1 -0
  62. package/lib/commonjs/handlers/createHandler.js +11 -5
  63. package/lib/commonjs/handlers/createHandler.js.map +1 -1
  64. package/lib/commonjs/handlers/customDirectEventTypes.js +11 -0
  65. package/lib/commonjs/handlers/customDirectEventTypes.js.map +1 -0
  66. package/lib/commonjs/handlers/customDirectEventTypes.native.js +14 -0
  67. package/lib/commonjs/handlers/customDirectEventTypes.native.js.map +1 -0
  68. package/lib/commonjs/handlers/gestureHandlerCommon.js +13 -2
  69. package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
  70. package/lib/commonjs/handlers/gestures/GestureDetector.js +25 -0
  71. package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
  72. package/lib/commonjs/handlers/gestures/flingGesture.js +13 -0
  73. package/lib/commonjs/handlers/gestures/flingGesture.js.map +1 -1
  74. package/lib/commonjs/handlers/gestures/forceTouchGesture.js +17 -0
  75. package/lib/commonjs/handlers/gestures/forceTouchGesture.js.map +1 -1
  76. package/lib/commonjs/handlers/gestures/gesture.js +135 -0
  77. package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
  78. package/lib/commonjs/handlers/gestures/gestureObjects.js +66 -0
  79. package/lib/commonjs/handlers/gestures/gestureObjects.js.map +1 -1
  80. package/lib/commonjs/handlers/gestures/gestureStateManager.web.js +1 -1
  81. package/lib/commonjs/handlers/gestures/gestureStateManager.web.js.map +1 -1
  82. package/lib/commonjs/handlers/gestures/hoverGesture.js +1 -1
  83. package/lib/commonjs/handlers/gestures/hoverGesture.js.map +1 -1
  84. package/lib/commonjs/handlers/gestures/longPressGesture.js +12 -0
  85. package/lib/commonjs/handlers/gestures/longPressGesture.js.map +1 -1
  86. package/lib/commonjs/handlers/gestures/nativeGesture.js +10 -0
  87. package/lib/commonjs/handlers/gestures/nativeGesture.js.map +1 -1
  88. package/lib/commonjs/handlers/gestures/panGesture.js +76 -0
  89. package/lib/commonjs/handlers/gestures/panGesture.js.map +1 -1
  90. package/lib/commonjs/handlers/gestures/tapGesture.js +42 -0
  91. package/lib/commonjs/handlers/gestures/tapGesture.js.map +1 -1
  92. package/lib/commonjs/index.js +8 -8
  93. package/lib/commonjs/index.js.map +1 -1
  94. package/lib/commonjs/mocks.js +2 -0
  95. package/lib/commonjs/mocks.js.map +1 -1
  96. package/lib/commonjs/specs/RNGestureHandlerButtonNativeComponent.js.map +1 -1
  97. package/lib/commonjs/utils.js +5 -1
  98. package/lib/commonjs/utils.js.map +1 -1
  99. package/lib/commonjs/web/Gestures.js +66 -0
  100. package/lib/commonjs/web/Gestures.js.map +1 -0
  101. package/lib/commonjs/web/constants.js +3 -8
  102. package/lib/commonjs/web/constants.js.map +1 -1
  103. package/lib/commonjs/web/handlers/FlingGestureHandler.js +36 -12
  104. package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
  105. package/lib/commonjs/web/handlers/GestureHandler.js +11 -9
  106. package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
  107. package/lib/commonjs/web/handlers/IGestureHandler.js +2 -0
  108. package/lib/commonjs/web/handlers/IGestureHandler.js.map +1 -0
  109. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +5 -6
  110. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
  111. package/lib/commonjs/web/handlers/PanGestureHandler.js +3 -1
  112. package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
  113. package/lib/commonjs/web/interfaces.js +1 -13
  114. package/lib/commonjs/web/interfaces.js.map +1 -1
  115. package/lib/commonjs/web/tools/EventManager.js.map +1 -1
  116. package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +114 -115
  117. package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -1
  118. package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js +10 -5
  119. package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js.map +1 -1
  120. package/lib/commonjs/web/tools/InteractionManager.js +12 -3
  121. package/lib/commonjs/web/tools/InteractionManager.js.map +1 -1
  122. package/lib/commonjs/web/tools/NodeManager.js.map +1 -1
  123. package/lib/commonjs/web/tools/PointerEventManager.js +55 -27
  124. package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -1
  125. package/lib/commonjs/web/tools/TouchEventManager.js +26 -5
  126. package/lib/commonjs/web/tools/TouchEventManager.js.map +1 -1
  127. package/lib/commonjs/web/tools/Vector.js +58 -0
  128. package/lib/commonjs/web/tools/Vector.js.map +1 -0
  129. package/lib/commonjs/web/utils.js +9 -1
  130. package/lib/commonjs/web/utils.js.map +1 -1
  131. package/lib/commonjs/web_hammer/NodeManager.js.map +1 -1
  132. package/lib/module/Directions.js +16 -4
  133. package/lib/module/Directions.js.map +1 -1
  134. package/lib/module/RNGestureHandlerModule.js +84 -4
  135. package/lib/module/RNGestureHandlerModule.js.map +1 -1
  136. package/lib/module/RNGestureHandlerModule.native.js +5 -0
  137. package/lib/module/RNGestureHandlerModule.native.js.map +1 -0
  138. package/lib/module/RNRenderer.js +3 -3
  139. package/lib/module/RNRenderer.js.map +1 -1
  140. package/lib/module/RNRenderer.native.js +4 -0
  141. package/lib/module/RNRenderer.native.js.map +1 -0
  142. package/lib/module/components/DrawerLayout.js.map +1 -1
  143. package/lib/module/components/GestureComponents.js +18 -80
  144. package/lib/module/components/GestureComponents.js.map +1 -1
  145. package/lib/module/components/GestureComponents.native.js +90 -0
  146. package/lib/module/components/GestureComponents.native.js.map +1 -0
  147. package/lib/module/components/GestureHandlerButton.js +8 -2
  148. package/lib/module/components/GestureHandlerButton.js.map +1 -1
  149. package/lib/module/components/GestureHandlerButton.native.js +3 -0
  150. package/lib/module/components/GestureHandlerButton.native.js.map +1 -0
  151. package/lib/module/components/GestureHandlerRootView.js +0 -5
  152. package/lib/module/components/GestureHandlerRootView.js.map +1 -1
  153. package/lib/module/components/{GestureHandlerRootView.web.js → GestureHandlerRootView.native.js} +6 -1
  154. package/lib/module/components/GestureHandlerRootView.native.js.map +1 -0
  155. package/lib/module/components/Swipeable.js +3 -1
  156. package/lib/module/components/Swipeable.js.map +1 -1
  157. package/lib/module/components/touchables/GenericTouchable.js +1 -0
  158. package/lib/module/components/touchables/GenericTouchable.js.map +1 -1
  159. package/lib/module/getReactNativeVersion.js +1 -7
  160. package/lib/module/getReactNativeVersion.js.map +1 -1
  161. package/lib/module/getReactNativeVersion.native.js +10 -0
  162. package/lib/module/getReactNativeVersion.native.js.map +1 -0
  163. package/lib/module/getShadowNodeFromRef.js +4 -33
  164. package/lib/module/getShadowNodeFromRef.js.map +1 -1
  165. package/lib/module/getShadowNodeFromRef.native.js +37 -0
  166. package/lib/module/getShadowNodeFromRef.native.js.map +1 -0
  167. package/lib/module/handlers/PanGestureHandler.js.map +1 -1
  168. package/lib/module/handlers/PressabilityDebugView.js +4 -2
  169. package/lib/module/handlers/PressabilityDebugView.js.map +1 -1
  170. package/lib/module/handlers/PressabilityDebugView.native.js +3 -0
  171. package/lib/module/handlers/PressabilityDebugView.native.js.map +1 -0
  172. package/lib/module/handlers/createHandler.js +11 -6
  173. package/lib/module/handlers/createHandler.js.map +1 -1
  174. package/lib/module/handlers/customDirectEventTypes.js +5 -0
  175. package/lib/module/handlers/customDirectEventTypes.js.map +1 -0
  176. package/lib/module/handlers/customDirectEventTypes.native.js +3 -0
  177. package/lib/module/handlers/customDirectEventTypes.native.js.map +1 -0
  178. package/lib/module/handlers/gestureHandlerCommon.js +11 -1
  179. package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
  180. package/lib/module/handlers/gestures/GestureDetector.js +25 -0
  181. package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
  182. package/lib/module/handlers/gestures/flingGesture.js +13 -0
  183. package/lib/module/handlers/gestures/flingGesture.js.map +1 -1
  184. package/lib/module/handlers/gestures/forceTouchGesture.js +17 -0
  185. package/lib/module/handlers/gestures/forceTouchGesture.js.map +1 -1
  186. package/lib/module/handlers/gestures/gesture.js +135 -0
  187. package/lib/module/handlers/gestures/gesture.js.map +1 -1
  188. package/lib/module/handlers/gestures/gestureObjects.js +67 -0
  189. package/lib/module/handlers/gestures/gestureObjects.js.map +1 -1
  190. package/lib/module/handlers/gestures/gestureStateManager.web.js +1 -1
  191. package/lib/module/handlers/gestures/gestureStateManager.web.js.map +1 -1
  192. package/lib/module/handlers/gestures/hoverGesture.js +1 -1
  193. package/lib/module/handlers/gestures/hoverGesture.js.map +1 -1
  194. package/lib/module/handlers/gestures/longPressGesture.js +12 -0
  195. package/lib/module/handlers/gestures/longPressGesture.js.map +1 -1
  196. package/lib/module/handlers/gestures/nativeGesture.js +10 -0
  197. package/lib/module/handlers/gestures/nativeGesture.js.map +1 -1
  198. package/lib/module/handlers/gestures/panGesture.js +76 -0
  199. package/lib/module/handlers/gestures/panGesture.js.map +1 -1
  200. package/lib/module/handlers/gestures/tapGesture.js +42 -0
  201. package/lib/module/handlers/gestures/tapGesture.js.map +1 -1
  202. package/lib/module/index.js +1 -1
  203. package/lib/module/index.js.map +1 -1
  204. package/lib/module/mocks.js +2 -0
  205. package/lib/module/mocks.js.map +1 -1
  206. package/lib/module/specs/RNGestureHandlerButtonNativeComponent.js.map +1 -1
  207. package/lib/module/utils.js +5 -1
  208. package/lib/module/utils.js.map +1 -1
  209. package/lib/module/web/Gestures.js +39 -0
  210. package/lib/module/web/Gestures.js.map +1 -0
  211. package/lib/module/web/constants.js +1 -6
  212. package/lib/module/web/constants.js.map +1 -1
  213. package/lib/module/web/handlers/FlingGestureHandler.js +34 -12
  214. package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
  215. package/lib/module/web/handlers/GestureHandler.js +10 -9
  216. package/lib/module/web/handlers/GestureHandler.js.map +1 -1
  217. package/lib/module/web/handlers/IGestureHandler.js +2 -0
  218. package/lib/module/web/handlers/IGestureHandler.js.map +1 -0
  219. package/lib/module/web/handlers/NativeViewGestureHandler.js +5 -6
  220. package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
  221. package/lib/module/web/handlers/PanGestureHandler.js +3 -1
  222. package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
  223. package/lib/module/web/interfaces.js +0 -11
  224. package/lib/module/web/interfaces.js.map +1 -1
  225. package/lib/module/web/tools/EventManager.js.map +1 -1
  226. package/lib/module/web/tools/GestureHandlerOrchestrator.js +114 -115
  227. package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -1
  228. package/lib/module/web/tools/GestureHandlerWebDelegate.js +9 -4
  229. package/lib/module/web/tools/GestureHandlerWebDelegate.js.map +1 -1
  230. package/lib/module/web/tools/InteractionManager.js +9 -3
  231. package/lib/module/web/tools/InteractionManager.js.map +1 -1
  232. package/lib/module/web/tools/NodeManager.js.map +1 -1
  233. package/lib/module/web/tools/PointerEventManager.js +53 -26
  234. package/lib/module/web/tools/PointerEventManager.js.map +1 -1
  235. package/lib/module/web/tools/TouchEventManager.js +26 -5
  236. package/lib/module/web/tools/TouchEventManager.js.map +1 -1
  237. package/lib/module/web/tools/Vector.js +47 -0
  238. package/lib/module/web/tools/Vector.js.map +1 -0
  239. package/lib/module/web/utils.js +2 -0
  240. package/lib/module/web/utils.js.map +1 -1
  241. package/lib/module/web_hammer/NodeManager.js.map +1 -1
  242. package/lib/typescript/Directions.d.ts +7 -0
  243. package/lib/typescript/RNGestureHandlerModule.d.ts +15 -2
  244. package/lib/typescript/RNGestureHandlerModule.native.d.ts +2 -0
  245. package/lib/typescript/RNRenderer.d.ts +3 -1
  246. package/lib/typescript/RNRenderer.native.d.ts +1 -0
  247. package/lib/typescript/components/DrawerLayout.d.ts +1 -2
  248. package/lib/typescript/components/GestureComponents.d.ts +7 -21
  249. package/lib/typescript/components/GestureComponents.native.d.ts +22 -0
  250. package/lib/typescript/components/GestureHandlerButton.d.ts +3 -3
  251. package/lib/typescript/components/GestureHandlerButton.native.d.ts +4 -0
  252. package/lib/typescript/components/touchables/GenericTouchable.d.ts +2 -1
  253. package/lib/typescript/getReactNativeVersion.d.ts +1 -4
  254. package/lib/typescript/getReactNativeVersion.native.d.ts +4 -0
  255. package/lib/typescript/getShadowNodeFromRef.d.ts +1 -1
  256. package/lib/typescript/getShadowNodeFromRef.native.d.ts +1 -0
  257. package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +1 -1
  258. package/lib/typescript/handlers/PanGestureHandler.d.ts +4 -4
  259. package/lib/typescript/handlers/PressabilityDebugView.d.ts +1 -1
  260. package/lib/typescript/handlers/PressabilityDebugView.native.d.ts +1 -0
  261. package/lib/typescript/handlers/customDirectEventTypes.d.ts +2 -0
  262. package/lib/typescript/handlers/customDirectEventTypes.native.d.ts +1 -0
  263. package/lib/typescript/handlers/gestureHandlerCommon.d.ts +11 -2
  264. package/lib/typescript/handlers/gestures/GestureDetector.d.ts +38 -1
  265. package/lib/typescript/handlers/gestures/flingGesture.d.ts +11 -0
  266. package/lib/typescript/handlers/gestures/forceTouchGesture.d.ts +14 -0
  267. package/lib/typescript/handlers/gestures/gesture.d.ts +114 -2
  268. package/lib/typescript/handlers/gestures/gestureObjects.d.ts +57 -0
  269. package/lib/typescript/handlers/gestures/hoverGesture.d.ts +1 -1
  270. package/lib/typescript/handlers/gestures/longPressGesture.d.ts +10 -0
  271. package/lib/typescript/handlers/gestures/nativeGesture.d.ts +8 -0
  272. package/lib/typescript/handlers/gestures/panGesture.d.ts +67 -4
  273. package/lib/typescript/handlers/gestures/tapGesture.d.ts +35 -0
  274. package/lib/typescript/index.d.ts +1 -1
  275. package/lib/typescript/mocks.d.ts +1 -0
  276. package/lib/typescript/specs/RNGestureHandlerButtonNativeComponent.d.ts +4 -1
  277. package/lib/typescript/web/Gestures.d.ts +36 -0
  278. package/lib/typescript/web/constants.d.ts +1 -6
  279. package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +3 -3
  280. package/lib/typescript/web/handlers/GestureHandler.d.ts +13 -11
  281. package/lib/typescript/web/handlers/IGestureHandler.d.ts +38 -0
  282. package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts +1 -0
  283. package/lib/typescript/web/interfaces.d.ts +8 -10
  284. package/lib/typescript/web/tools/EventManager.d.ts +15 -12
  285. package/lib/typescript/web/tools/GestureHandlerDelegate.d.ts +3 -4
  286. package/lib/typescript/web/tools/GestureHandlerOrchestrator.d.ts +7 -5
  287. package/lib/typescript/web/tools/GestureHandlerWebDelegate.d.ts +3 -3
  288. package/lib/typescript/web/tools/InteractionManager.d.ts +6 -6
  289. package/lib/typescript/web/tools/NodeManager.d.ts +4 -3
  290. package/lib/typescript/web/tools/PointerEventManager.d.ts +11 -2
  291. package/lib/typescript/web/tools/TouchEventManager.d.ts +6 -1
  292. package/lib/typescript/web/tools/Vector.d.ts +15 -0
  293. package/lib/typescript/web/utils.d.ts +4 -4
  294. package/lib/typescript/web_hammer/NodeManager.d.ts +1 -1
  295. package/package.json +4 -2
  296. package/src/Directions.ts +21 -4
  297. package/src/RNGestureHandlerModule.native.ts +5 -0
  298. package/src/RNGestureHandlerModule.ts +104 -4
  299. package/src/RNRenderer.native.ts +3 -0
  300. package/src/RNRenderer.ts +3 -3
  301. package/src/components/DrawerLayout.tsx +1 -1
  302. package/src/components/GestureComponents.native.tsx +148 -0
  303. package/src/components/GestureComponents.tsx +24 -131
  304. package/src/components/GestureHandlerButton.native.tsx +5 -0
  305. package/src/components/GestureHandlerButton.tsx +5 -4
  306. package/src/components/{GestureHandlerRootView.web.tsx → GestureHandlerRootView.native.tsx} +6 -0
  307. package/src/components/GestureHandlerRootView.tsx +0 -6
  308. package/src/components/Swipeable.tsx +2 -0
  309. package/src/components/touchables/GenericTouchable.tsx +3 -0
  310. package/src/getReactNativeVersion.native.ts +11 -0
  311. package/src/getReactNativeVersion.ts +1 -9
  312. package/src/getShadowNodeFromRef.native.ts +44 -0
  313. package/src/getShadowNodeFromRef.ts +4 -41
  314. package/src/handlers/PanGestureHandler.ts +8 -4
  315. package/src/handlers/PressabilityDebugView.native.tsx +2 -0
  316. package/src/handlers/PressabilityDebugView.tsx +4 -2
  317. package/src/handlers/createHandler.tsx +24 -14
  318. package/src/handlers/customDirectEventTypes.native.ts +2 -0
  319. package/src/handlers/customDirectEventTypes.ts +5 -0
  320. package/src/handlers/gestureHandlerCommon.ts +28 -1
  321. package/src/handlers/gestures/GestureDetector.tsx +62 -4
  322. package/src/handlers/gestures/flingGesture.ts +11 -0
  323. package/src/handlers/gestures/forceTouchGesture.ts +14 -0
  324. package/src/handlers/gestures/gesture.ts +114 -1
  325. package/src/handlers/gestures/gestureObjects.ts +57 -0
  326. package/src/handlers/gestures/gestureStateManager.web.ts +1 -1
  327. package/src/handlers/gestures/hoverGesture.ts +1 -1
  328. package/src/handlers/gestures/longPressGesture.ts +10 -0
  329. package/src/handlers/gestures/nativeGesture.ts +8 -0
  330. package/src/handlers/gestures/panGesture.ts +75 -4
  331. package/src/handlers/gestures/tapGesture.ts +35 -0
  332. package/src/index.ts +1 -1
  333. package/src/mocks.ts +2 -0
  334. package/src/specs/RNGestureHandlerButtonNativeComponent.ts +4 -0
  335. package/src/utils.ts +9 -2
  336. package/src/web/Gestures.ts +41 -0
  337. package/src/web/constants.ts +1 -7
  338. package/src/web/handlers/FlingGestureHandler.ts +54 -24
  339. package/src/web/handlers/GestureHandler.ts +23 -19
  340. package/src/web/handlers/IGestureHandler.ts +50 -0
  341. package/src/web/handlers/NativeViewGestureHandler.ts +5 -6
  342. package/src/web/handlers/PanGestureHandler.ts +4 -0
  343. package/src/web/interfaces.ts +14 -10
  344. package/src/web/tools/EventManager.ts +16 -14
  345. package/src/web/tools/GestureHandlerDelegate.ts +3 -4
  346. package/src/web/tools/GestureHandlerOrchestrator.ts +160 -145
  347. package/src/web/tools/GestureHandlerWebDelegate.ts +14 -9
  348. package/src/web/tools/InteractionManager.ts +18 -12
  349. package/src/web/tools/NodeManager.ts +4 -3
  350. package/src/web/tools/PointerEventManager.ts +181 -166
  351. package/src/web/tools/TouchEventManager.ts +126 -114
  352. package/src/web/tools/Vector.ts +60 -0
  353. package/src/web/utils.ts +7 -4
  354. package/src/web_hammer/NodeManager.ts +1 -1
  355. package/lib/commonjs/RNGestureHandlerModule.web.js +0 -163
  356. package/lib/commonjs/RNGestureHandlerModule.web.js.map +0 -1
  357. package/lib/commonjs/RNRenderer.web.js +0 -11
  358. package/lib/commonjs/RNRenderer.web.js.map +0 -1
  359. package/lib/commonjs/components/GestureComponents.web.js +0 -52
  360. package/lib/commonjs/components/GestureComponents.web.js.map +0 -1
  361. package/lib/commonjs/components/GestureHandlerButton.web.js +0 -24
  362. package/lib/commonjs/components/GestureHandlerButton.web.js.map +0 -1
  363. package/lib/commonjs/components/GestureHandlerRootView.web.js.map +0 -1
  364. package/lib/commonjs/getReactNativeVersion.web.js +0 -11
  365. package/lib/commonjs/getReactNativeVersion.web.js.map +0 -1
  366. package/lib/commonjs/getShadowNodeFromRef.web.js +0 -15
  367. package/lib/commonjs/getShadowNodeFromRef.web.js.map +0 -1
  368. package/lib/commonjs/handlers/PressabilityDebugView.web.js +0 -12
  369. package/lib/commonjs/handlers/PressabilityDebugView.web.js.map +0 -1
  370. package/lib/module/RNGestureHandlerModule.web.js +0 -122
  371. package/lib/module/RNGestureHandlerModule.web.js.map +0 -1
  372. package/lib/module/RNRenderer.web.js +0 -4
  373. package/lib/module/RNRenderer.web.js.map +0 -1
  374. package/lib/module/components/GestureComponents.web.js +0 -28
  375. package/lib/module/components/GestureComponents.web.js.map +0 -1
  376. package/lib/module/components/GestureHandlerButton.web.js +0 -9
  377. package/lib/module/components/GestureHandlerButton.web.js.map +0 -1
  378. package/lib/module/components/GestureHandlerRootView.web.js.map +0 -1
  379. package/lib/module/getReactNativeVersion.web.js +0 -4
  380. package/lib/module/getReactNativeVersion.web.js.map +0 -1
  381. package/lib/module/getShadowNodeFromRef.web.js +0 -8
  382. package/lib/module/getShadowNodeFromRef.web.js.map +0 -1
  383. package/lib/module/handlers/PressabilityDebugView.web.js +0 -5
  384. package/lib/module/handlers/PressabilityDebugView.web.js.map +0 -1
  385. package/lib/typescript/RNGestureHandlerModule.web.d.ts +0 -50
  386. package/lib/typescript/RNRenderer.web.d.ts +0 -3
  387. package/lib/typescript/components/GestureComponents.web.d.ts +0 -8
  388. package/lib/typescript/components/GestureHandlerButton.web.d.ts +0 -4
  389. package/lib/typescript/getReactNativeVersion.web.d.ts +0 -1
  390. package/lib/typescript/getShadowNodeFromRef.web.d.ts +0 -1
  391. package/lib/typescript/handlers/PressabilityDebugView.web.d.ts +0 -1
  392. package/src/RNGestureHandlerModule.web.ts +0 -146
  393. package/src/RNRenderer.web.ts +0 -3
  394. package/src/components/GestureComponents.web.tsx +0 -41
  395. package/src/components/GestureHandlerButton.web.tsx +0 -6
  396. package/src/getReactNativeVersion.web.ts +0 -3
  397. package/src/getShadowNodeFromRef.web.ts +0 -7
  398. package/src/handlers/PressabilityDebugView.web.tsx +0 -4
  399. /package/lib/typescript/components/{GestureHandlerRootView.web.d.ts → GestureHandlerRootView.native.d.ts} +0 -0
@@ -43,7 +43,14 @@ export class PanGesture extends ContinousBaseGesture<
43
43
  this.handlerName = 'PanGestureHandler';
44
44
  }
45
45
 
46
- activeOffsetY(offset: number | number[]) {
46
+ /**
47
+ * Range along Y axis (in points) where fingers travels without activation of gesture.
48
+ * @param offset
49
+ * @see https://docs.swmansion.com/react-native-gesture-handler/docs/gestures/pan-gesture#activeoffsetyvalue-number--number
50
+ */
51
+ activeOffsetY(
52
+ offset: number | [activeOffsetYStart: number, activeOffsetYEnd: number]
53
+ ) {
47
54
  if (Array.isArray(offset)) {
48
55
  this.config.activeOffsetYStart = offset[0];
49
56
  this.config.activeOffsetYEnd = offset[1];
@@ -55,7 +62,14 @@ export class PanGesture extends ContinousBaseGesture<
55
62
  return this;
56
63
  }
57
64
 
58
- activeOffsetX(offset: number | number[]) {
65
+ /**
66
+ * Range along X axis (in points) where fingers travels without activation of gesture.
67
+ * @param offset
68
+ * @see https://docs.swmansion.com/react-native-gesture-handler/docs/gestures/pan-gesture#activeoffsetxvalue-number--number
69
+ */
70
+ activeOffsetX(
71
+ offset: number | [activeOffsetXStart: number, activeOffsetXEnd: number]
72
+ ) {
59
73
  if (Array.isArray(offset)) {
60
74
  this.config.activeOffsetXStart = offset[0];
61
75
  this.config.activeOffsetXEnd = offset[1];
@@ -67,7 +81,14 @@ export class PanGesture extends ContinousBaseGesture<
67
81
  return this;
68
82
  }
69
83
 
70
- failOffsetY(offset: number | number[]) {
84
+ /**
85
+ * When the finger moves outside this range (in points) along Y axis and gesture hasn't yet activated it will fail recognizing the gesture.
86
+ * @param offset
87
+ * @see https://docs.swmansion.com/react-native-gesture-handler/docs/gestures/pan-gesture#failoffsetyvalue-number--number
88
+ */
89
+ failOffsetY(
90
+ offset: number | [failOffsetYStart: number, failOffsetYEnd: number]
91
+ ) {
71
92
  if (Array.isArray(offset)) {
72
93
  this.config.failOffsetYStart = offset[0];
73
94
  this.config.failOffsetYEnd = offset[1];
@@ -79,7 +100,14 @@ export class PanGesture extends ContinousBaseGesture<
79
100
  return this;
80
101
  }
81
102
 
82
- failOffsetX(offset: number | number[]) {
103
+ /**
104
+ * When the finger moves outside this range (in points) along X axis and gesture hasn't yet activated it will fail recognizing the gesture.
105
+ * @param offset
106
+ * @see https://docs.swmansion.com/react-native-gesture-handler/docs/gestures/pan-gesture#failoffsetxvalue-number--number
107
+ */
108
+ failOffsetX(
109
+ offset: number | [failOffsetXStart: number, failOffsetXEnd: number]
110
+ ) {
83
111
  if (Array.isArray(offset)) {
84
112
  this.config.failOffsetXStart = offset[0];
85
113
  this.config.failOffsetXEnd = offset[1];
@@ -91,46 +119,89 @@ export class PanGesture extends ContinousBaseGesture<
91
119
  return this;
92
120
  }
93
121
 
122
+ /**
123
+ * A number of fingers that is required to be placed before gesture can activate. Should be a higher or equal to 0 integer.
124
+ * @param minPointers
125
+ */
94
126
  minPointers(minPointers: number) {
95
127
  this.config.minPointers = minPointers;
96
128
  return this;
97
129
  }
98
130
 
131
+ /**
132
+ * When the given number of fingers is placed on the screen and gesture hasn't yet activated it will fail recognizing the gesture.
133
+ * Should be a higher or equal to 0 integer.
134
+ * @param maxPointers
135
+ */
99
136
  maxPointers(maxPointers: number) {
100
137
  this.config.maxPointers = maxPointers;
101
138
  return this;
102
139
  }
103
140
 
141
+ /**
142
+ * Minimum distance the finger (or multiple finger) need to travel before the gesture activates.
143
+ * Expressed in points.
144
+ * @param distance
145
+ */
104
146
  minDistance(distance: number) {
105
147
  this.config.minDist = distance;
106
148
  return this;
107
149
  }
108
150
 
151
+ /**
152
+ * Minimum velocity the finger has to reach in order to activate handler.
153
+ * @param velocity
154
+ */
109
155
  minVelocity(velocity: number) {
110
156
  this.config.minVelocity = velocity;
111
157
  return this;
112
158
  }
113
159
 
160
+ /**
161
+ * Minimum velocity along X axis the finger has to reach in order to activate handler.
162
+ * @param velocity
163
+ */
114
164
  minVelocityX(velocity: number) {
115
165
  this.config.minVelocityX = velocity;
116
166
  return this;
117
167
  }
118
168
 
169
+ /**
170
+ * Minimum velocity along Y axis the finger has to reach in order to activate handler.
171
+ * @param velocity
172
+ */
119
173
  minVelocityY(velocity: number) {
120
174
  this.config.minVelocityY = velocity;
121
175
  return this;
122
176
  }
123
177
 
178
+ /**
179
+ * #### Android only
180
+ * Android, by default, will calculate translation values based on the position of the leading pointer (the first one that was placed on the screen).
181
+ * This modifier allows that behavior to be changed to the one that is default on iOS - the averaged position of all active pointers will be used to calculate the translation values.
182
+ * @param value
183
+ */
124
184
  averageTouches(value: boolean) {
125
185
  this.config.avgTouches = value;
126
186
  return this;
127
187
  }
128
188
 
189
+ /**
190
+ * #### iOS only
191
+ * Enables two-finger gestures on supported devices, for example iPads with trackpads.
192
+ * @param value
193
+ * @see https://docs.swmansion.com/react-native-gesture-handler/docs/gestures/pan-gesture/#enabletrackpadtwofingergesturevalue-boolean-ios-only
194
+ */
129
195
  enableTrackpadTwoFingerGesture(value: boolean) {
130
196
  this.config.enableTrackpadTwoFingerGesture = value;
131
197
  return this;
132
198
  }
133
199
 
200
+ /**
201
+ * Duration in milliseconds of the LongPress gesture before Pan is allowed to activate.
202
+ * @param duration
203
+ * @see https://docs.swmansion.com/react-native-gesture-handler/docs/gestures/pan-gesture/#activateafterlongpressduration-number
204
+ */
134
205
  activateAfterLongPress(duration: number) {
135
206
  this.config.activateAfterLongPress = duration;
136
207
  return this;
@@ -14,36 +14,71 @@ export class TapGesture extends BaseGesture<TapGestureHandlerEventPayload> {
14
14
  this.shouldCancelWhenOutside(true);
15
15
  }
16
16
 
17
+ /**
18
+ * Minimum number of pointers (fingers) required to be placed before the gesture activates.
19
+ * Should be a positive integer. The default value is 1.
20
+ * @param minPointers
21
+ */
17
22
  minPointers(minPointers: number) {
18
23
  this.config.minPointers = minPointers;
19
24
  return this;
20
25
  }
21
26
 
27
+ /**
28
+ * Number of tap gestures required to activate the gesture.
29
+ * The default value is 1.
30
+ * @param count
31
+ */
22
32
  numberOfTaps(count: number) {
23
33
  this.config.numberOfTaps = count;
24
34
  return this;
25
35
  }
26
36
 
37
+ /**
38
+ * Maximum distance, expressed in points, that defines how far the finger is allowed to travel during a tap gesture.
39
+ * @param maxDist
40
+ * @see https://docs.swmansion.com/react-native-gesture-handler/docs/gestures/tap-gesture#maxdistancevalue-number
41
+ */
27
42
  maxDistance(maxDist: number) {
28
43
  this.config.maxDist = maxDist;
29
44
  return this;
30
45
  }
31
46
 
47
+ /**
48
+ * Maximum time, expressed in milliseconds, that defines how fast a finger must be released after a touch.
49
+ * The default value is 500.
50
+ * @param duration
51
+ */
32
52
  maxDuration(duration: number) {
33
53
  this.config.maxDurationMs = duration;
34
54
  return this;
35
55
  }
36
56
 
57
+ /**
58
+ * Maximum time, expressed in milliseconds, that can pass before the next tap — if many taps are required.
59
+ * The default value is 500.
60
+ * @param delay
61
+ */
37
62
  maxDelay(delay: number) {
38
63
  this.config.maxDelayMs = delay;
39
64
  return this;
40
65
  }
41
66
 
67
+ /**
68
+ * Maximum distance, expressed in points, that defines how far the finger is allowed to travel along the X axis during a tap gesture.
69
+ * @param delta
70
+ * @see https://docs.swmansion.com/react-native-gesture-handler/docs/gestures/tap-gesture#maxdeltaxvalue-number
71
+ */
42
72
  maxDeltaX(delta: number) {
43
73
  this.config.maxDeltaX = delta;
44
74
  return this;
45
75
  }
46
76
 
77
+ /**
78
+ * Maximum distance, expressed in points, that defines how far the finger is allowed to travel along the Y axis during a tap gesture.
79
+ * @param delta
80
+ * @see https://docs.swmansion.com/react-native-gesture-handler/docs/gestures/tap-gesture#maxdeltayvalue-number
81
+ */
47
82
  maxDeltaY(delta: number) {
48
83
  this.config.maxDeltaY = delta;
49
84
  return this;
package/src/index.ts CHANGED
@@ -2,7 +2,6 @@ import { initialize } from './init';
2
2
 
3
3
  export { Directions } from './Directions';
4
4
  export { State } from './State';
5
- export { MouseButton } from './web/interfaces';
6
5
  export { PointerType } from './PointerType';
7
6
  export { default as gestureHandlerRootHOC } from './components/gestureHandlerRootHOC';
8
7
  export { default as GestureHandlerRootView } from './components/GestureHandlerRootView';
@@ -20,6 +19,7 @@ export type {
20
19
  GestureUpdateEvent,
21
20
  GestureStateChangeEvent,
22
21
  } from './handlers/gestureHandlerCommon';
22
+ export { MouseButton } from './handlers/gestureHandlerCommon';
23
23
  export type { GestureType } from './handlers/gestures/gesture';
24
24
  export type {
25
25
  TapGestureHandlerEventPayload,
package/src/mocks.ts CHANGED
@@ -22,6 +22,7 @@ const createGestureHandler = NOOP;
22
22
  const dropGestureHandler = NOOP;
23
23
  const updateGestureHandler = NOOP;
24
24
  const flushOperations = NOOP;
25
+ const install = NOOP;
25
26
  const NativeViewGestureHandler = View;
26
27
  const TapGestureHandler = View;
27
28
  const ForceTouchGestureHandler = View;
@@ -61,6 +62,7 @@ export default {
61
62
  dropGestureHandler,
62
63
  updateGestureHandler,
63
64
  flushOperations,
65
+ install,
64
66
  // probably can be removed
65
67
  Directions,
66
68
  State,
@@ -2,6 +2,7 @@ import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNati
2
2
  import type {
3
3
  Int32,
4
4
  WithDefault,
5
+ Float,
5
6
  } from 'react-native/Libraries/Types/CodegenTypes';
6
7
  import type { ViewProps, ColorValue } from 'react-native';
7
8
 
@@ -13,6 +14,9 @@ interface NativeProps extends ViewProps {
13
14
  rippleColor?: ColorValue;
14
15
  rippleRadius?: Int32;
15
16
  touchSoundDisabled?: WithDefault<boolean, false>;
17
+ borderWidth?: Float;
18
+ borderColor?: ColorValue;
19
+ borderStyle?: WithDefault<string, 'solid'>;
16
20
  }
17
21
 
18
22
  export default codegenNativeComponent<NativeProps>('RNGestureHandlerButton');
package/src/utils.ts CHANGED
@@ -18,7 +18,10 @@ export function withPrevAndCurrent<T, Transformed>(
18
18
  const currentArr = [...array];
19
19
  const transformedArr: Transformed[] = [];
20
20
  currentArr.forEach((current, i) => {
21
- const previous = previousArr[i];
21
+ // This type cast is fine and solves problem mentioned in https://github.com/software-mansion/react-native-gesture-handler/pull/2867 (namely that `previous` can be undefined).
22
+ // Unfortunately, linter on our CI does not allow this type of casting as it is unnecessary. To bypass that we use eslint-disable.
23
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
24
+ const previous = previousArr[i] as Transformed | null;
22
25
  const transformed = mapFn(previous, current);
23
26
  previousArr.push(transformed);
24
27
  transformedArr.push(transformed);
@@ -50,5 +53,9 @@ export function isFabric(): boolean {
50
53
  export function isRemoteDebuggingEnabled(): boolean {
51
54
  // react-native-reanimated checks if in remote debugging in the same way
52
55
  // @ts-ignore global is available but node types are not included
53
- return !(global as any).nativeCallSyncHook || (global as any).__REMOTEDEV__;
56
+ const localGlobal = global as any;
57
+ return (
58
+ (!localGlobal.nativeCallSyncHook || !!localGlobal.__REMOTEDEV__) &&
59
+ !localGlobal.RN$Bridgeless
60
+ );
54
61
  }
@@ -0,0 +1,41 @@
1
+ // Gesture Handlers
2
+ import PanGestureHandler from './handlers/PanGestureHandler';
3
+ import TapGestureHandler from './handlers/TapGestureHandler';
4
+ import LongPressGestureHandler from './handlers/LongPressGestureHandler';
5
+ import PinchGestureHandler from './handlers/PinchGestureHandler';
6
+ import RotationGestureHandler from './handlers/RotationGestureHandler';
7
+ import FlingGestureHandler from './handlers/FlingGestureHandler';
8
+ import NativeViewGestureHandler from './handlers/NativeViewGestureHandler';
9
+ import ManualGestureHandler from './handlers/ManualGestureHandler';
10
+ import HoverGestureHandler from './handlers/HoverGestureHandler';
11
+
12
+ //Hammer Handlers
13
+ import HammerNativeViewGestureHandler from '../web_hammer/NativeViewGestureHandler';
14
+ import HammerPanGestureHandler from '../web_hammer/PanGestureHandler';
15
+ import HammerTapGestureHandler from '../web_hammer/TapGestureHandler';
16
+ import HammerLongPressGestureHandler from '../web_hammer/LongPressGestureHandler';
17
+ import HammerPinchGestureHandler from '../web_hammer/PinchGestureHandler';
18
+ import HammerRotationGestureHandler from '../web_hammer/RotationGestureHandler';
19
+ import HammerFlingGestureHandler from '../web_hammer/FlingGestureHandler';
20
+
21
+ export const Gestures = {
22
+ NativeViewGestureHandler,
23
+ PanGestureHandler,
24
+ TapGestureHandler,
25
+ LongPressGestureHandler,
26
+ PinchGestureHandler,
27
+ RotationGestureHandler,
28
+ FlingGestureHandler,
29
+ ManualGestureHandler,
30
+ HoverGestureHandler,
31
+ };
32
+
33
+ export const HammerGestures = {
34
+ NativeViewGestureHandler: HammerNativeViewGestureHandler,
35
+ PanGestureHandler: HammerPanGestureHandler,
36
+ TapGestureHandler: HammerTapGestureHandler,
37
+ LongPressGestureHandler: HammerLongPressGestureHandler,
38
+ PinchGestureHandler: HammerPinchGestureHandler,
39
+ RotationGestureHandler: HammerRotationGestureHandler,
40
+ FlingGestureHandler: HammerFlingGestureHandler,
41
+ };
@@ -1,8 +1,2 @@
1
1
  export const DEFAULT_TOUCH_SLOP = 15;
2
-
3
- export const Direction = {
4
- RIGHT: 1,
5
- LEFT: 2,
6
- UP: 4,
7
- DOWN: 8,
8
- };
2
+ export const MINIMAL_FLING_VELOCITY = 0.1;
@@ -1,25 +1,28 @@
1
1
  import { State } from '../../State';
2
- import { Direction } from '../constants';
2
+ import { DiagonalDirections, Directions } from '../../Directions';
3
3
  import { AdaptedEvent, Config } from '../interfaces';
4
4
 
5
5
  import GestureHandler from './GestureHandler';
6
+ import Vector from '../tools/Vector';
7
+ import { coneToDeviation } from '../utils';
6
8
 
7
9
  const DEFAULT_MAX_DURATION_MS = 800;
8
- const DEFAULT_MIN_ACCEPTABLE_DELTA = 32;
9
- const DEFAULT_DIRECTION = Direction.RIGHT;
10
+ const DEFAULT_MIN_VELOCITY = 700;
11
+ const DEFAULT_ALIGNMENT_CONE = 30;
12
+ const DEFAULT_DIRECTION = Directions.RIGHT;
10
13
  const DEFAULT_NUMBER_OF_TOUCHES_REQUIRED = 1;
11
14
 
15
+ const AXIAL_DEVIATION_COSINE = coneToDeviation(DEFAULT_ALIGNMENT_CONE);
16
+ const DIAGONAL_DEVIATION_COSINE = coneToDeviation(90 - DEFAULT_ALIGNMENT_CONE);
17
+
12
18
  export default class FlingGestureHandler extends GestureHandler {
13
19
  private numberOfPointersRequired = DEFAULT_NUMBER_OF_TOUCHES_REQUIRED;
14
- private direction = DEFAULT_DIRECTION;
20
+ private direction: Directions = DEFAULT_DIRECTION;
15
21
 
16
22
  private maxDurationMs = DEFAULT_MAX_DURATION_MS;
17
- private minAcceptableDelta = DEFAULT_MIN_ACCEPTABLE_DELTA;
23
+ private minVelocity = DEFAULT_MIN_VELOCITY;
18
24
  private delayTimeout!: number;
19
25
 
20
- private startX = 0;
21
- private startY = 0;
22
-
23
26
  private maxNumberOfPointersSimultaneously = 0;
24
27
  private keyPointer = NaN;
25
28
 
@@ -40,9 +43,6 @@ export default class FlingGestureHandler extends GestureHandler {
40
43
  }
41
44
 
42
45
  private startFling(): void {
43
- this.startX = this.tracker.getLastX(this.keyPointer);
44
- this.startY = this.tracker.getLastY(this.keyPointer);
45
-
46
46
  this.begin();
47
47
 
48
48
  this.maxNumberOfPointersSimultaneously = 1;
@@ -51,21 +51,43 @@ export default class FlingGestureHandler extends GestureHandler {
51
51
  }
52
52
 
53
53
  private tryEndFling(): boolean {
54
+ const velocityVector = Vector.fromVelocity(this.tracker, this.keyPointer);
55
+
56
+ const getAlignment = (
57
+ direction: Directions | DiagonalDirections,
58
+ minimalAlignmentCosine: number
59
+ ) => {
60
+ return (
61
+ (direction & this.direction) === direction &&
62
+ velocityVector.isSimilar(
63
+ Vector.fromDirection(direction),
64
+ minimalAlignmentCosine
65
+ )
66
+ );
67
+ };
68
+
69
+ const axialDirectionsList = Object.values(Directions);
70
+ const diagonalDirectionsList = Object.values(DiagonalDirections);
71
+
72
+ // list of alignments to all activated directions
73
+ const axialAlignmentList = axialDirectionsList.map((direction) =>
74
+ getAlignment(direction, AXIAL_DEVIATION_COSINE)
75
+ );
76
+
77
+ const diagonalAlignmentList = diagonalDirectionsList.map((direction) =>
78
+ getAlignment(direction, DIAGONAL_DEVIATION_COSINE)
79
+ );
80
+
81
+ const isAligned =
82
+ axialAlignmentList.some(Boolean) || diagonalAlignmentList.some(Boolean);
83
+
84
+ const isFast = velocityVector.magnitude > this.minVelocity;
85
+
54
86
  if (
55
87
  this.maxNumberOfPointersSimultaneously ===
56
88
  this.numberOfPointersRequired &&
57
- ((this.direction & Direction.RIGHT &&
58
- this.tracker.getLastX(this.keyPointer) - this.startX >
59
- this.minAcceptableDelta) ||
60
- (this.direction & Direction.LEFT &&
61
- this.startX - this.tracker.getLastX(this.keyPointer) >
62
- this.minAcceptableDelta) ||
63
- (this.direction & Direction.UP &&
64
- this.startY - this.tracker.getLastY(this.keyPointer) >
65
- this.minAcceptableDelta) ||
66
- (this.direction & Direction.DOWN &&
67
- this.tracker.getLastY(this.keyPointer) - this.startY >
68
- this.minAcceptableDelta))
89
+ isAligned &&
90
+ isFast
69
91
  ) {
70
92
  clearTimeout(this.delayTimeout);
71
93
  this.activate();
@@ -120,7 +142,7 @@ export default class FlingGestureHandler extends GestureHandler {
120
142
  }
121
143
  }
122
144
 
123
- protected onPointerMove(event: AdaptedEvent): void {
145
+ private pointerMoveAction(event: AdaptedEvent): void {
124
146
  this.tracker.track(event);
125
147
 
126
148
  if (this.currentState !== State.BEGAN) {
@@ -128,10 +150,18 @@ export default class FlingGestureHandler extends GestureHandler {
128
150
  }
129
151
 
130
152
  this.tryEndFling();
153
+ }
131
154
 
155
+ protected onPointerMove(event: AdaptedEvent): void {
156
+ this.pointerMoveAction(event);
132
157
  super.onPointerMove(event);
133
158
  }
134
159
 
160
+ protected onPointerOutOfBounds(event: AdaptedEvent): void {
161
+ this.pointerMoveAction(event);
162
+ super.onPointerOutOfBounds(event);
163
+ }
164
+
135
165
  protected onPointerUp(event: AdaptedEvent): void {
136
166
  super.onPointerUp(event);
137
167
  this.onUp(event);
@@ -9,20 +9,21 @@ import {
9
9
  ResultTouchEvent,
10
10
  TouchEventType,
11
11
  EventTypes,
12
- MouseButton,
13
12
  } from '../interfaces';
14
13
  import EventManager from '../tools/EventManager';
15
14
  import GestureHandlerOrchestrator from '../tools/GestureHandlerOrchestrator';
16
15
  import InteractionManager from '../tools/InteractionManager';
17
16
  import PointerTracker, { TrackerElement } from '../tools/PointerTracker';
18
17
  import { GestureHandlerDelegate } from '../tools/GestureHandlerDelegate';
18
+ import IGestureHandler from './IGestureHandler';
19
+ import { MouseButton } from '../../handlers/gestureHandlerCommon';
19
20
  import { PointerType } from '../../PointerType';
20
21
 
21
- export default abstract class GestureHandler {
22
+ export default abstract class GestureHandler implements IGestureHandler {
22
23
  private lastSentState: State | null = null;
23
24
  protected currentState: State = State.UNDETERMINED;
24
25
 
25
- protected shouldCancellWhenOutside = false;
26
+ protected shouldCancelWhenOutside = false;
26
27
  protected hasCustomActivationCriteria = false;
27
28
  protected enabled = false;
28
29
 
@@ -40,9 +41,11 @@ export default abstract class GestureHandler {
40
41
  protected shouldResetProgress = false;
41
42
  protected pointerType: PointerType = PointerType.MOUSE;
42
43
 
43
- protected delegate: GestureHandlerDelegate<unknown>;
44
+ protected delegate: GestureHandlerDelegate<unknown, IGestureHandler>;
44
45
 
45
- public constructor(delegate: GestureHandlerDelegate<unknown>) {
46
+ public constructor(
47
+ delegate: GestureHandlerDelegate<unknown, IGestureHandler>
48
+ ) {
46
49
  this.delegate = delegate;
47
50
  }
48
51
 
@@ -71,7 +74,8 @@ export default abstract class GestureHandler {
71
74
  manager.setOnPointerOutOfBounds(this.onPointerOutOfBounds.bind(this));
72
75
  manager.setOnPointerMoveOver(this.onPointerMoveOver.bind(this));
73
76
  manager.setOnPointerMoveOut(this.onPointerMoveOut.bind(this));
74
- manager.setListeners();
77
+
78
+ manager.registerListeners();
75
79
  }
76
80
 
77
81
  //
@@ -172,13 +176,13 @@ export default abstract class GestureHandler {
172
176
  }
173
177
  }
174
178
 
175
- public activate(_force = false) {
179
+ public activate(force = false) {
176
180
  if (
177
- this.currentState === State.UNDETERMINED ||
178
- this.currentState === State.BEGAN
181
+ (this.config.manualActivation !== true || force) &&
182
+ (this.currentState === State.UNDETERMINED ||
183
+ this.currentState === State.BEGAN)
179
184
  ) {
180
185
  this.delegate.onActivate();
181
-
182
186
  this.moveToState(State.ACTIVE);
183
187
  }
184
188
  }
@@ -229,7 +233,7 @@ export default abstract class GestureHandler {
229
233
  this.activationIndex = value;
230
234
  }
231
235
 
232
- public shouldWaitForHandlerFailure(handler: GestureHandler): boolean {
236
+ public shouldWaitForHandlerFailure(handler: IGestureHandler): boolean {
233
237
  if (handler === this) {
234
238
  return false;
235
239
  }
@@ -240,7 +244,7 @@ export default abstract class GestureHandler {
240
244
  );
241
245
  }
242
246
 
243
- public shouldRequireToWaitForFailure(handler: GestureHandler): boolean {
247
+ public shouldRequireToWaitForFailure(handler: IGestureHandler): boolean {
244
248
  if (handler === this) {
245
249
  return false;
246
250
  }
@@ -251,7 +255,7 @@ export default abstract class GestureHandler {
251
255
  );
252
256
  }
253
257
 
254
- public shouldRecognizeSimultaneously(handler: GestureHandler): boolean {
258
+ public shouldRecognizeSimultaneously(handler: IGestureHandler): boolean {
255
259
  if (handler === this) {
256
260
  return true;
257
261
  }
@@ -262,7 +266,7 @@ export default abstract class GestureHandler {
262
266
  );
263
267
  }
264
268
 
265
- public shouldBeCancelledByOther(handler: GestureHandler): boolean {
269
+ public shouldBeCancelledByOther(handler: IGestureHandler): boolean {
266
270
  if (handler === this) {
267
271
  return false;
268
272
  }
@@ -313,7 +317,7 @@ export default abstract class GestureHandler {
313
317
  }
314
318
  }
315
319
  protected onPointerLeave(event: AdaptedEvent): void {
316
- if (this.shouldCancellWhenOutside) {
320
+ if (this.shouldCancelWhenOutside) {
317
321
  switch (this.currentState) {
318
322
  case State.ACTIVE:
319
323
  this.cancel();
@@ -358,7 +362,7 @@ export default abstract class GestureHandler {
358
362
  if (
359
363
  this.enabled &&
360
364
  this.active &&
361
- (!out || (out && !this.shouldCancellWhenOutside))
365
+ (!out || (out && !this.shouldCancelWhenOutside))
362
366
  ) {
363
367
  this.sendEvent(this.currentState, this.currentState);
364
368
  }
@@ -772,7 +776,7 @@ export default abstract class GestureHandler {
772
776
  return this.config;
773
777
  }
774
778
 
775
- public getDelegate(): GestureHandlerDelegate<unknown> {
779
+ public getDelegate(): GestureHandlerDelegate<unknown, IGestureHandler> {
776
780
  return this.delegate;
777
781
  }
778
782
 
@@ -801,11 +805,11 @@ export default abstract class GestureHandler {
801
805
  }
802
806
 
803
807
  protected setShouldCancelWhenOutside(shouldCancel: boolean) {
804
- this.shouldCancellWhenOutside = shouldCancel;
808
+ this.shouldCancelWhenOutside = shouldCancel;
805
809
  }
806
810
 
807
811
  protected getShouldCancelWhenOutside(): boolean {
808
- return this.shouldCancellWhenOutside;
812
+ return this.shouldCancelWhenOutside;
809
813
  }
810
814
 
811
815
  public getPointerType(): PointerType {
@@ -0,0 +1,50 @@
1
+ import type { PointerType } from '../../PointerType';
2
+ import type { MouseButton } from '../../handlers/gestureHandlerCommon';
3
+ import type { State } from '../../State';
4
+ import type { Config } from '../interfaces';
5
+ import type EventManager from '../tools/EventManager';
6
+ import type { GestureHandlerDelegate } from '../tools/GestureHandlerDelegate';
7
+ import type PointerTracker from '../tools/PointerTracker';
8
+
9
+ export default interface IGestureHandler {
10
+ getTag: () => number;
11
+ getState: () => State;
12
+ getConfig: () => Config;
13
+ getDelegate: () => GestureHandlerDelegate<unknown, this>;
14
+
15
+ attachEventManager: (manager: EventManager<unknown>) => void;
16
+
17
+ isButtonInConfig: (
18
+ mouseButton: MouseButton | undefined
19
+ ) => boolean | number | undefined;
20
+ getPointerType: () => PointerType;
21
+
22
+ getTracker: () => PointerTracker;
23
+ getTrackedPointersID: () => number[];
24
+
25
+ begin: () => void;
26
+ activate: (force: boolean) => void;
27
+ end: () => void;
28
+ fail: () => void;
29
+ cancel: () => void;
30
+
31
+ reset: () => void;
32
+ isEnabled: () => boolean;
33
+ isActive: () => boolean;
34
+ setActive: (value: boolean) => void;
35
+ isAwaiting: () => boolean;
36
+ setAwaiting: (value: boolean) => void;
37
+ setActivationIndex: (value: number) => void;
38
+ setShouldResetProgress: (value: boolean) => void;
39
+
40
+ shouldWaitForHandlerFailure: (handler: IGestureHandler) => boolean;
41
+ shouldRequireToWaitForFailure: (handler: IGestureHandler) => boolean;
42
+ shouldRecognizeSimultaneously: (handler: IGestureHandler) => boolean;
43
+ shouldBeCancelledByOther: (handler: IGestureHandler) => boolean;
44
+
45
+ sendEvent: (newState: State, oldState: State) => void;
46
+
47
+ updateGestureConfig: (config: Config) => void;
48
+
49
+ isButton?: () => boolean;
50
+ }