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
@@ -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>;