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
@@ -1,4 +1,4 @@
1
- import { UserSelect, ActiveCursor } from '../handlers/gestureHandlerCommon';
1
+ import { UserSelect, ActiveCursor, MouseButton, TouchAction } from '../handlers/gestureHandlerCommon';
2
2
  import { Directions } from '../Directions';
3
3
  import { State } from '../State';
4
4
  import { PointerType } from '../PointerType';
@@ -15,7 +15,7 @@ export interface HitSlop {
15
15
  export interface Handler {
16
16
  handlerTag: number;
17
17
  }
18
- type ConfigArgs = number | boolean | HitSlop | UserSelect | ActiveCursor | Directions | Handler[] | null | undefined;
18
+ type ConfigArgs = number | boolean | HitSlop | UserSelect | TouchAction | ActiveCursor | Directions | Handler[] | null | undefined;
19
19
  export interface Config extends Record<string, ConfigArgs> {
20
20
  enabled?: boolean;
21
21
  simultaneousHandlers?: Handler[] | null;
@@ -27,6 +27,8 @@ export interface Config extends Record<string, ConfigArgs> {
27
27
  activeCursor?: ActiveCursor;
28
28
  mouseButton?: MouseButton;
29
29
  enableContextMenu?: boolean;
30
+ touchAction?: TouchAction;
31
+ manualActivation?: boolean;
30
32
  activateAfterLongPress?: number;
31
33
  failOffsetXStart?: number;
32
34
  failOffsetYStart?: number;
@@ -67,6 +69,10 @@ interface NativeEvent extends Record<string, NativeEventArgs> {
67
69
  oldState?: State;
68
70
  pointerType: PointerType;
69
71
  }
72
+ export interface Point {
73
+ x: number;
74
+ y: number;
75
+ }
70
76
  export interface PointerData {
71
77
  id: number;
72
78
  x: number;
@@ -109,14 +115,6 @@ export interface AdaptedEvent {
109
115
  changedTouches?: TouchList;
110
116
  touchEventType?: TouchEventType;
111
117
  }
112
- export declare enum MouseButton {
113
- LEFT = 1,
114
- RIGHT = 2,
115
- MIDDLE = 4,
116
- BUTTON_4 = 8,
117
- BUTTON_5 = 16,
118
- ALL = 31
119
- }
120
118
  export declare enum EventTypes {
121
119
  DOWN = 0,
122
120
  ADDITIONAL_POINTER_DOWN = 1,
@@ -1,10 +1,12 @@
1
1
  import { AdaptedEvent, EventTypes, TouchEventType } from '../interfaces';
2
+ type PointerEventCallback = (event: AdaptedEvent) => void;
2
3
  export default abstract class EventManager<T> {
3
4
  protected readonly view: T;
4
5
  protected pointersInBounds: number[];
5
6
  protected activePointersCounter: number;
6
7
  constructor(view: T);
7
- abstract setListeners(): void;
8
+ abstract registerListeners(): void;
9
+ abstract unregisterListeners(): void;
8
10
  protected abstract mapEvent(event: Event, eventType: EventTypes, index?: number, touchEventType?: TouchEventType): AdaptedEvent;
9
11
  protected onPointerDown(_event: AdaptedEvent): void;
10
12
  protected onPointerAdd(_event: AdaptedEvent): void;
@@ -17,18 +19,19 @@ export default abstract class EventManager<T> {
17
19
  protected onPointerOutOfBounds(_event: AdaptedEvent): void;
18
20
  protected onPointerMoveOver(_event: AdaptedEvent): void;
19
21
  protected onPointerMoveOut(_event: AdaptedEvent): void;
20
- setOnPointerDown(callback: (event: AdaptedEvent) => void): void;
21
- setOnPointerAdd(callback: (event: AdaptedEvent) => void): void;
22
- setOnPointerUp(callback: (event: AdaptedEvent) => void): void;
23
- setOnPointerRemove(callback: (event: AdaptedEvent) => void): void;
24
- setOnPointerMove(callback: (event: AdaptedEvent) => void): void;
25
- setOnPointerLeave(callback: (event: AdaptedEvent) => void): void;
26
- setOnPointerEnter(callback: (event: AdaptedEvent) => void): void;
27
- setOnPointerCancel(callback: (event: AdaptedEvent) => void): void;
28
- setOnPointerOutOfBounds(callback: (event: AdaptedEvent) => void): void;
29
- setOnPointerMoveOver(callback: (event: AdaptedEvent) => void): void;
30
- setOnPointerMoveOut(callback: (event: AdaptedEvent) => void): void;
22
+ setOnPointerDown(callback: PointerEventCallback): void;
23
+ setOnPointerAdd(callback: PointerEventCallback): void;
24
+ setOnPointerUp(callback: PointerEventCallback): void;
25
+ setOnPointerRemove(callback: PointerEventCallback): void;
26
+ setOnPointerMove(callback: PointerEventCallback): void;
27
+ setOnPointerLeave(callback: PointerEventCallback): void;
28
+ setOnPointerEnter(callback: PointerEventCallback): void;
29
+ setOnPointerCancel(callback: PointerEventCallback): void;
30
+ setOnPointerOutOfBounds(callback: PointerEventCallback): void;
31
+ setOnPointerMoveOver(callback: PointerEventCallback): void;
32
+ setOnPointerMoveOut(callback: PointerEventCallback): void;
31
33
  protected markAsInBounds(pointerId: number): void;
32
34
  protected markAsOutOfBounds(pointerId: number): void;
33
35
  resetManager(): void;
34
36
  }
37
+ export {};
@@ -1,4 +1,3 @@
1
- import type GestureHandler from '../handlers/GestureHandler';
2
1
  import { Config } from '../interfaces';
3
2
  export interface MeasureResult {
4
3
  pageX: number;
@@ -6,9 +5,9 @@ export interface MeasureResult {
6
5
  width: number;
7
6
  height: number;
8
7
  }
9
- export interface GestureHandlerDelegate<T> {
10
- getView(): T;
11
- init(viewRef: number, handler: GestureHandler): void;
8
+ export interface GestureHandlerDelegate<TComponent, THandler> {
9
+ getView(): TComponent;
10
+ init(viewRef: number, handler: THandler): void;
12
11
  isPointerInBounds({ x, y }: {
13
12
  x: number;
14
13
  y: number;
@@ -1,29 +1,31 @@
1
1
  import { State } from '../../State';
2
- import GestureHandler from '../handlers/GestureHandler';
2
+ import type IGestureHandler from '../handlers/IGestureHandler';
3
3
  export default class GestureHandlerOrchestrator {
4
4
  private static instance;
5
5
  private gestureHandlers;
6
6
  private awaitingHandlers;
7
+ private awaitingHandlersTags;
7
8
  private handlingChangeSemaphore;
8
9
  private activationIndex;
9
10
  private constructor();
10
11
  private scheduleFinishedHandlersCleanup;
11
12
  private cleanHandler;
12
- removeHandlerFromOrchestrator(handler: GestureHandler): void;
13
+ removeHandlerFromOrchestrator(handler: IGestureHandler): void;
13
14
  private cleanupFinishedHandlers;
14
15
  private hasOtherHandlerToWaitFor;
16
+ private shouldBeCancelledByFinishedHandler;
15
17
  private tryActivate;
16
18
  private shouldActivate;
17
19
  private cleanupAwaitingHandlers;
18
- onHandlerStateChange(handler: GestureHandler, newState: State, oldState: State, sendIfDisabled?: boolean): void;
20
+ onHandlerStateChange(handler: IGestureHandler, newState: State, oldState: State, sendIfDisabled?: boolean): void;
19
21
  private makeActive;
20
22
  private addAwaitingHandler;
21
- recordHandlerIfNotPresent(handler: GestureHandler): void;
23
+ recordHandlerIfNotPresent(handler: IGestureHandler): void;
22
24
  private shouldHandlerWaitForOther;
23
25
  private canRunSimultaneously;
24
26
  private shouldHandlerBeCancelledBy;
25
27
  private checkOverlap;
26
28
  private isFinished;
27
- cancelMouseAndPenGestures(currentHandler: GestureHandler): void;
29
+ cancelMouseAndPenGestures(currentHandler: IGestureHandler): void;
28
30
  static getInstance(): GestureHandlerOrchestrator;
29
31
  }
@@ -1,12 +1,12 @@
1
- import type GestureHandler from '../handlers/GestureHandler';
1
+ import type IGestureHandler from '../handlers/IGestureHandler';
2
2
  import { GestureHandlerDelegate, MeasureResult } from './GestureHandlerDelegate';
3
3
  import { Config } from '../interfaces';
4
- export declare class GestureHandlerWebDelegate implements GestureHandlerDelegate<HTMLElement> {
4
+ export declare class GestureHandlerWebDelegate implements GestureHandlerDelegate<HTMLElement, IGestureHandler> {
5
5
  private view;
6
6
  private gestureHandler;
7
7
  private eventManagers;
8
8
  getView(): HTMLElement;
9
- init(viewRef: number, handler: GestureHandler): void;
9
+ init(viewRef: number, handler: IGestureHandler): void;
10
10
  isPointerInBounds({ x, y }: {
11
11
  x: number;
12
12
  y: number;
@@ -1,4 +1,4 @@
1
- import GestureHandler from '../handlers/GestureHandler';
1
+ import type IGestureHandler from '../handlers/IGestureHandler';
2
2
  import { Config } from '../interfaces';
3
3
  export default class InteractionManager {
4
4
  private static instance;
@@ -6,11 +6,11 @@ export default class InteractionManager {
6
6
  private readonly simultaneousRelations;
7
7
  private readonly blocksHandlersRelations;
8
8
  private constructor();
9
- configureInteractions(handler: GestureHandler, config: Config): void;
10
- shouldWaitForHandlerFailure(handler: GestureHandler, otherHandler: GestureHandler): boolean;
11
- shouldRecognizeSimultaneously(handler: GestureHandler, otherHandler: GestureHandler): boolean;
12
- shouldRequireHandlerToWaitForFailure(handler: GestureHandler, otherHandler: GestureHandler): boolean;
13
- shouldHandlerBeCancelledBy(_handler: GestureHandler, _otherHandler: GestureHandler): boolean;
9
+ configureInteractions(handler: IGestureHandler, config: Config): void;
10
+ shouldWaitForHandlerFailure(handler: IGestureHandler, otherHandler: IGestureHandler): boolean;
11
+ shouldRecognizeSimultaneously(handler: IGestureHandler, otherHandler: IGestureHandler): boolean;
12
+ shouldRequireHandlerToWaitForFailure(handler: IGestureHandler, otherHandler: IGestureHandler): boolean;
13
+ shouldHandlerBeCancelledBy(_handler: IGestureHandler, otherHandler: IGestureHandler): boolean;
14
14
  dropRelationsForHandlerWithTag(handlerTag: number): void;
15
15
  reset(): void;
16
16
  static getInstance(): InteractionManager;
@@ -1,11 +1,12 @@
1
1
  import { ValueOf } from '../../typeUtils';
2
- import { Gestures } from '../../RNGestureHandlerModule.web';
2
+ import { Gestures } from '../Gestures';
3
+ import type IGestureHandler from '../handlers/IGestureHandler';
3
4
  export default abstract class NodeManager {
4
5
  private static gestures;
5
- static getHandler(tag: number): import("../handlers/NativeViewGestureHandler").default | import("../handlers/PanGestureHandler").default | import("../handlers/TapGestureHandler").default | import("../handlers/LongPressGestureHandler").default | import("../handlers/PinchGestureHandler").default | import("../handlers/RotationGestureHandler").default | import("../handlers/FlingGestureHandler").default | import("../handlers/ManualGestureHandler").default | import("../handlers/HoverGestureHandler").default;
6
+ static getHandler(tag: number): IGestureHandler;
6
7
  static createGestureHandler(handlerTag: number, handler: InstanceType<ValueOf<typeof Gestures>>): void;
7
8
  static dropGestureHandler(handlerTag: number): void;
8
9
  static getNodes(): {
9
- [x: number]: import("../handlers/NativeViewGestureHandler").default | import("../handlers/PanGestureHandler").default | import("../handlers/TapGestureHandler").default | import("../handlers/LongPressGestureHandler").default | import("../handlers/PinchGestureHandler").default | import("../handlers/RotationGestureHandler").default | import("../handlers/FlingGestureHandler").default | import("../handlers/ManualGestureHandler").default | import("../handlers/HoverGestureHandler").default;
10
+ [x: number]: import("../handlers/PanGestureHandler").default | import("../handlers/TapGestureHandler").default | import("../handlers/LongPressGestureHandler").default | import("../handlers/PinchGestureHandler").default | import("../handlers/RotationGestureHandler").default | import("../handlers/FlingGestureHandler").default | import("../handlers/NativeViewGestureHandler").default | import("../handlers/ManualGestureHandler").default | import("../handlers/HoverGestureHandler").default;
10
11
  };
11
12
  }
@@ -1,10 +1,19 @@
1
- import { AdaptedEvent, EventTypes } from '../interfaces';
2
1
  import EventManager from './EventManager';
2
+ import { AdaptedEvent, EventTypes } from '../interfaces';
3
3
  export default class PointerEventManager extends EventManager<HTMLElement> {
4
4
  private trackedPointers;
5
5
  private readonly mouseButtonsMapper;
6
+ private lastPosition;
6
7
  constructor(view: HTMLElement);
7
- setListeners(): void;
8
+ private pointerDownCallback;
9
+ private pointerUpCallback;
10
+ private pointerMoveCallback;
11
+ private pointerCancelCallback;
12
+ private pointerEnterCallback;
13
+ private pointerLeaveCallback;
14
+ private lostPointerCaptureCallback;
15
+ registerListeners(): void;
16
+ unregisterListeners(): void;
8
17
  protected mapEvent(event: PointerEvent, eventType: EventTypes): AdaptedEvent;
9
18
  resetManager(): void;
10
19
  }
@@ -1,6 +1,11 @@
1
1
  import { AdaptedEvent, EventTypes, TouchEventType } from '../interfaces';
2
2
  import EventManager from './EventManager';
3
3
  export default class TouchEventManager extends EventManager<HTMLElement> {
4
- setListeners(): void;
4
+ private touchStartCallback;
5
+ private touchMoveCallback;
6
+ private touchEndCallback;
7
+ private touchCancelCallback;
8
+ registerListeners(): void;
9
+ unregisterListeners(): void;
5
10
  protected mapEvent(event: TouchEvent, eventType: EventTypes, index: number, touchEventType: TouchEventType): AdaptedEvent;
6
11
  }
@@ -0,0 +1,15 @@
1
+ import { DiagonalDirections, Directions } from '../../Directions';
2
+ import PointerTracker from './PointerTracker';
3
+ export default class Vector {
4
+ private readonly x;
5
+ private readonly y;
6
+ private readonly unitX;
7
+ private readonly unitY;
8
+ private readonly _magnitude;
9
+ constructor(x: number, y: number);
10
+ static fromDirection(direction: Directions | DiagonalDirections): Vector;
11
+ static fromVelocity(tracker: PointerTracker, pointerId: number): Vector;
12
+ get magnitude(): number;
13
+ computeSimilarity(vector: Vector): number;
14
+ isSimilar(vector: Vector, threshold: number): boolean;
15
+ }
@@ -1,6 +1,6 @@
1
1
  import { PointerType } from '../PointerType';
2
- export declare function isPointerInBounds(view: HTMLElement, { x, y }: {
3
- x: number;
4
- y: number;
5
- }): boolean;
2
+ import { Point } from './interfaces';
3
+ export declare function isPointerInBounds(view: HTMLElement, { x, y }: Point): boolean;
6
4
  export declare const PointerTypeMapping: Map<string, PointerType>;
5
+ export declare const degToRad: (degrees: number) => number;
6
+ export declare const coneToDeviation: (degrees: number) => number;
@@ -1,5 +1,5 @@
1
1
  import { ValueOf } from '../typeUtils';
2
- import { HammerGestures } from '../RNGestureHandlerModule.web';
2
+ import { HammerGestures } from '../web/Gestures';
3
3
  export declare function getHandler(tag: number): import("./NativeViewGestureHandler").default | import("./PanGestureHandler").default | import("./TapGestureHandler").default | import("./LongPressGestureHandler").default | import("./PinchGestureHandler").default | import("./RotationGestureHandler").default | import("./FlingGestureHandler").default;
4
4
  export declare function createGestureHandler(handlerTag: number, handler: InstanceType<ValueOf<typeof HammerGestures>>): void;
5
5
  export declare function dropGestureHandler(handlerTag: number): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-gesture-handler",
3
- "version": "2.16.0-rc.0",
3
+ "version": "2.16.1",
4
4
  "description": "Experimental implementation of a new declarative API for gesture handling in react-native",
5
5
  "scripts": {
6
6
  "prepare": "bob build && husky install",
@@ -98,6 +98,7 @@
98
98
  "husky": "^8.0.1",
99
99
  "jest": "^26.6.3",
100
100
  "lint-staged": "^12.3.2",
101
+ "madge": "^6.1.0",
101
102
  "prettier": "^2.7.1",
102
103
  "react": "18.2.0",
103
104
  "react-dom": "^16.12.0",
@@ -151,5 +152,6 @@
151
152
  "android": {
152
153
  "javaPackageName": "com.swmansion.gesturehandler"
153
154
  }
154
- }
155
+ },
156
+ "packageManager": "yarn@1.22.22"
155
157
  }
package/src/Directions.ts CHANGED
@@ -1,9 +1,26 @@
1
+ const RIGHT = 1;
2
+ const LEFT = 2;
3
+ const UP = 4;
4
+ const DOWN = 8;
5
+
6
+ // public interface
1
7
  export const Directions = {
2
- RIGHT: 1,
3
- LEFT: 2,
4
- UP: 4,
5
- DOWN: 8,
8
+ RIGHT: RIGHT,
9
+ LEFT: LEFT,
10
+ UP: UP,
11
+ DOWN: DOWN,
12
+ } as const;
13
+
14
+ // internal interface
15
+ export const DiagonalDirections = {
16
+ UP_RIGHT: UP | RIGHT,
17
+ DOWN_RIGHT: DOWN | RIGHT,
18
+ UP_LEFT: UP | LEFT,
19
+ DOWN_LEFT: DOWN | LEFT,
6
20
  } as const;
7
21
 
8
22
  // eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; it can be used as a type and as a value
9
23
  export type Directions = typeof Directions[keyof typeof Directions];
24
+ // eslint-disable-next-line @typescript-eslint/no-redeclare
25
+ export type DiagonalDirections =
26
+ typeof DiagonalDirections[keyof typeof DiagonalDirections];
@@ -0,0 +1,5 @@
1
+ // Reexport the native module spec used by codegen. The relevant files are inluded on Android
2
+ // to ensure the compatibility with the old arch, while iOS doesn't require those at all.
3
+
4
+ import Module from './specs/NativeRNGestureHandlerModule';
5
+ export default Module;
@@ -1,5 +1,105 @@
1
- // Reexport the native module spec used by codegen. The relevant files are inluded on Android
2
- // to ensure the compatibility with the old arch, while iOS doesn't require those at all.
1
+ import React from 'react';
3
2
 
4
- import Module from './specs/NativeRNGestureHandlerModule';
5
- export default Module;
3
+ import type { ActionType } from './ActionType';
4
+ import { isNewWebImplementationEnabled } from './EnableNewWebImplementation';
5
+ import { Gestures, HammerGestures } from './web/Gestures';
6
+ import type { Config } from './web/interfaces';
7
+ import InteractionManager from './web/tools/InteractionManager';
8
+ import NodeManager from './web/tools/NodeManager';
9
+ import * as HammerNodeManager from './web_hammer/NodeManager';
10
+ import { GestureHandlerWebDelegate } from './web/tools/GestureHandlerWebDelegate';
11
+
12
+ export default {
13
+ handleSetJSResponder(tag: number, blockNativeResponder: boolean) {
14
+ console.warn('handleSetJSResponder: ', tag, blockNativeResponder);
15
+ },
16
+ handleClearJSResponder() {
17
+ console.warn('handleClearJSResponder: ');
18
+ },
19
+ createGestureHandler<T>(
20
+ handlerName: keyof typeof Gestures,
21
+ handlerTag: number,
22
+ config: T
23
+ ) {
24
+ if (isNewWebImplementationEnabled()) {
25
+ if (!(handlerName in Gestures)) {
26
+ throw new Error(
27
+ `react-native-gesture-handler: ${handlerName} is not supported on web.`
28
+ );
29
+ }
30
+
31
+ const GestureClass = Gestures[handlerName];
32
+ NodeManager.createGestureHandler(
33
+ handlerTag,
34
+ new GestureClass(new GestureHandlerWebDelegate())
35
+ );
36
+ InteractionManager.getInstance().configureInteractions(
37
+ NodeManager.getHandler(handlerTag),
38
+ config as unknown as Config
39
+ );
40
+ } else {
41
+ if (!(handlerName in HammerGestures)) {
42
+ throw new Error(
43
+ `react-native-gesture-handler: ${handlerName} is not supported on web.`
44
+ );
45
+ }
46
+
47
+ // @ts-ignore If it doesn't exist, the error is thrown
48
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
49
+ const GestureClass = HammerGestures[handlerName];
50
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call
51
+ HammerNodeManager.createGestureHandler(handlerTag, new GestureClass());
52
+ }
53
+
54
+ this.updateGestureHandler(handlerTag, config as unknown as Config);
55
+ },
56
+ attachGestureHandler(
57
+ handlerTag: number,
58
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
59
+ newView: any,
60
+ _actionType: ActionType,
61
+ propsRef: React.RefObject<unknown>
62
+ ) {
63
+ if (
64
+ !(newView instanceof HTMLElement || newView instanceof React.Component)
65
+ ) {
66
+ return;
67
+ }
68
+
69
+ if (isNewWebImplementationEnabled()) {
70
+ //@ts-ignore Types should be HTMLElement or React.Component
71
+ NodeManager.getHandler(handlerTag).init(newView, propsRef);
72
+ } else {
73
+ //@ts-ignore Types should be HTMLElement or React.Component
74
+ HammerNodeManager.getHandler(handlerTag).setView(newView, propsRef);
75
+ }
76
+ },
77
+ updateGestureHandler(handlerTag: number, newConfig: Config) {
78
+ if (isNewWebImplementationEnabled()) {
79
+ NodeManager.getHandler(handlerTag).updateGestureConfig(newConfig);
80
+
81
+ InteractionManager.getInstance().configureInteractions(
82
+ NodeManager.getHandler(handlerTag),
83
+ newConfig
84
+ );
85
+ } else {
86
+ HammerNodeManager.getHandler(handlerTag).updateGestureConfig(newConfig);
87
+ }
88
+ },
89
+ getGestureHandlerNode(handlerTag: number) {
90
+ if (isNewWebImplementationEnabled()) {
91
+ return NodeManager.getHandler(handlerTag);
92
+ } else {
93
+ return HammerNodeManager.getHandler(handlerTag);
94
+ }
95
+ },
96
+ dropGestureHandler(handlerTag: number) {
97
+ if (isNewWebImplementationEnabled()) {
98
+ NodeManager.dropGestureHandler(handlerTag);
99
+ } else {
100
+ HammerNodeManager.dropGestureHandler(handlerTag);
101
+ }
102
+ },
103
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
104
+ flushOperations() {},
105
+ };
@@ -0,0 +1,3 @@
1
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
2
+ // @ts-nocheck
3
+ export { default as RNRenderer } from 'react-native/Libraries/Renderer/shims/ReactNative';
package/src/RNRenderer.ts CHANGED
@@ -1,3 +1,3 @@
1
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
2
- // @ts-nocheck
3
- export { default as RNRenderer } from 'react-native/Libraries/Renderer/shims/ReactNative';
1
+ export const RNRenderer = {
2
+ findHostInstance_DEPRECATED: (_ref: any) => null,
3
+ };
@@ -28,6 +28,7 @@ import {
28
28
  HandlerStateChangeEvent,
29
29
  UserSelect,
30
30
  ActiveCursor,
31
+ MouseButton,
31
32
  } from '../handlers/gestureHandlerCommon';
32
33
  import {
33
34
  PanGestureHandler,
@@ -38,7 +39,6 @@ import {
38
39
  TapGestureHandlerEventPayload,
39
40
  } from '../handlers/TapGestureHandler';
40
41
  import { State } from '../State';
41
- import { MouseButton } from '../web/interfaces';
42
42
 
43
43
  const DRAG_TOSS = 0.05;
44
44
 
@@ -0,0 +1,148 @@
1
+ import * as React from 'react';
2
+ import {
3
+ PropsWithChildren,
4
+ ForwardedRef,
5
+ RefAttributes,
6
+ ReactElement,
7
+ } from 'react';
8
+ import {
9
+ ScrollView as RNScrollView,
10
+ ScrollViewProps as RNScrollViewProps,
11
+ Switch as RNSwitch,
12
+ SwitchProps as RNSwitchProps,
13
+ TextInput as RNTextInput,
14
+ TextInputProps as RNTextInputProps,
15
+ DrawerLayoutAndroid as RNDrawerLayoutAndroid,
16
+ DrawerLayoutAndroidProps as RNDrawerLayoutAndroidProps,
17
+ FlatList as RNFlatList,
18
+ FlatListProps as RNFlatListProps,
19
+ RefreshControl as RNRefreshControl,
20
+ } from 'react-native';
21
+
22
+ import createNativeWrapper from '../handlers/createNativeWrapper';
23
+
24
+ import {
25
+ NativeViewGestureHandlerProps,
26
+ nativeViewProps,
27
+ } from '../handlers/NativeViewGestureHandler';
28
+
29
+ import { toArray } from '../utils';
30
+
31
+ export const RefreshControl = createNativeWrapper(RNRefreshControl, {
32
+ disallowInterruption: true,
33
+ shouldCancelWhenOutside: false,
34
+ });
35
+ // eslint-disable-next-line @typescript-eslint/no-redeclare
36
+ export type RefreshControl = typeof RefreshControl & RNRefreshControl;
37
+
38
+ const GHScrollView = createNativeWrapper<PropsWithChildren<RNScrollViewProps>>(
39
+ RNScrollView,
40
+ {
41
+ disallowInterruption: true,
42
+ shouldCancelWhenOutside: false,
43
+ }
44
+ );
45
+ export const ScrollView = React.forwardRef<
46
+ RNScrollView,
47
+ RNScrollViewProps & NativeViewGestureHandlerProps
48
+ >((props, ref) => {
49
+ const refreshControlGestureRef = React.useRef<RefreshControl>(null);
50
+ const { refreshControl, waitFor, ...rest } = props;
51
+
52
+ return (
53
+ <GHScrollView
54
+ {...rest}
55
+ // @ts-ignore `ref` exists on `GHScrollView`
56
+ ref={ref}
57
+ waitFor={[...toArray(waitFor ?? []), refreshControlGestureRef]}
58
+ // @ts-ignore we don't pass `refreshing` prop as we only want to override the ref
59
+ refreshControl={
60
+ refreshControl
61
+ ? React.cloneElement(refreshControl, {
62
+ // @ts-ignore for reasons unknown to me, `ref` doesn't exist on the type inferred by TS
63
+ ref: refreshControlGestureRef,
64
+ })
65
+ : undefined
66
+ }
67
+ />
68
+ );
69
+ });
70
+ // backward type compatibility with https://github.com/software-mansion/react-native-gesture-handler/blob/db78d3ca7d48e8ba57482d3fe9b0a15aa79d9932/react-native-gesture-handler.d.ts#L440-L457
71
+ // include methods of wrapped components by creating an intersection type with the RN component instead of duplicating them.
72
+ // eslint-disable-next-line @typescript-eslint/no-redeclare
73
+ export type ScrollView = typeof GHScrollView & RNScrollView;
74
+
75
+ export const Switch = createNativeWrapper<RNSwitchProps>(RNSwitch, {
76
+ shouldCancelWhenOutside: false,
77
+ shouldActivateOnStart: true,
78
+ disallowInterruption: true,
79
+ });
80
+ // eslint-disable-next-line @typescript-eslint/no-redeclare
81
+ export type Switch = typeof Switch & RNSwitch;
82
+
83
+ export const TextInput = createNativeWrapper<RNTextInputProps>(RNTextInput);
84
+ // eslint-disable-next-line @typescript-eslint/no-redeclare
85
+ export type TextInput = typeof TextInput & RNTextInput;
86
+
87
+ export const DrawerLayoutAndroid = createNativeWrapper<
88
+ PropsWithChildren<RNDrawerLayoutAndroidProps>
89
+ >(RNDrawerLayoutAndroid, { disallowInterruption: true });
90
+ // eslint-disable-next-line @typescript-eslint/no-redeclare
91
+ export type DrawerLayoutAndroid = typeof DrawerLayoutAndroid &
92
+ RNDrawerLayoutAndroid;
93
+
94
+ export const FlatList = React.forwardRef((props, ref) => {
95
+ const refreshControlGestureRef = React.useRef<RefreshControl>(null);
96
+
97
+ const { waitFor, refreshControl, ...rest } = props;
98
+
99
+ const flatListProps = {};
100
+ const scrollViewProps = {};
101
+ for (const [propName, value] of Object.entries(rest)) {
102
+ // https://github.com/microsoft/TypeScript/issues/26255
103
+ if ((nativeViewProps as readonly string[]).includes(propName)) {
104
+ // @ts-ignore - this function cannot have generic type so we have to ignore this error
105
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
106
+ scrollViewProps[propName] = value;
107
+ } else {
108
+ // @ts-ignore - this function cannot have generic type so we have to ignore this error
109
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
110
+ flatListProps[propName] = value;
111
+ }
112
+ }
113
+
114
+ return (
115
+ // @ts-ignore - this function cannot have generic type so we have to ignore this error
116
+ <RNFlatList
117
+ ref={ref}
118
+ {...flatListProps}
119
+ renderScrollComponent={(scrollProps) => (
120
+ <ScrollView
121
+ {...{
122
+ ...scrollProps,
123
+ ...scrollViewProps,
124
+ waitFor: [...toArray(waitFor ?? []), refreshControlGestureRef],
125
+ }}
126
+ />
127
+ )}
128
+ // @ts-ignore we don't pass `refreshing` prop as we only want to override the ref
129
+ refreshControl={
130
+ refreshControl
131
+ ? React.cloneElement(refreshControl, {
132
+ // @ts-ignore for reasons unknown to me, `ref` doesn't exist on the type inferred by TS
133
+ ref: refreshControlGestureRef,
134
+ })
135
+ : undefined
136
+ }
137
+ />
138
+ );
139
+ }) as <ItemT = any>(
140
+ props: PropsWithChildren<
141
+ RNFlatListProps<ItemT> &
142
+ RefAttributes<FlatList<ItemT>> &
143
+ NativeViewGestureHandlerProps
144
+ >,
145
+ ref: ForwardedRef<FlatList<ItemT>>
146
+ ) => ReactElement | null;
147
+ // eslint-disable-next-line @typescript-eslint/no-redeclare
148
+ export type FlatList<ItemT = any> = typeof FlatList & RNFlatList<ItemT>;