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

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 (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
+ }