react-native-gesture-handler 2.4.1 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (382) hide show
  1. package/README.md +4 -2
  2. package/RNGestureHandler.podspec +17 -5
  3. package/android/build.gradle +71 -15
  4. package/android/lib/src/main/java/com/swmansion/gesturehandler/FlingGestureHandler.kt +2 -1
  5. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.kt +9 -5
  6. package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.kt +32 -6
  7. package/android/lib/src/main/java/com/swmansion/gesturehandler/LongPressGestureHandler.kt +5 -2
  8. package/android/lib/src/main/java/com/swmansion/gesturehandler/NativeViewGestureHandler.kt +105 -23
  9. package/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.kt +30 -2
  10. package/android/lib/src/main/java/com/swmansion/gesturehandler/TapGestureHandler.kt +3 -2
  11. package/android/src/fabric/java/com/swmansion/gesturehandler/RNGestureHandlerComponentsRegistry.java +1 -1
  12. package/android/src/main/java/com/swmansion/gesturehandler/RNGestureHandlerPackage.kt +0 -8
  13. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +74 -84
  14. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt +7 -1
  15. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +5 -1
  16. package/android/src/main/jni/CMakeLists.txt +59 -0
  17. package/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerDelegate.java +12 -9
  18. package/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerInterface.java +1 -0
  19. package/ios/Handlers/RNFlingHandler.m +43 -1
  20. package/ios/Handlers/{RNNativeViewHandler.m → RNNativeViewHandler.mm} +13 -1
  21. package/ios/Handlers/RNPanHandler.m +27 -0
  22. package/ios/RNGestureHandler.h +1 -0
  23. package/ios/RNGestureHandler.m +22 -4
  24. package/ios/RNGestureHandlerButtonComponentView.mm +1 -1
  25. package/ios/RNGestureHandlerManager.mm +10 -7
  26. package/ios/RNGestureHandlerModule.mm +4 -1
  27. package/ios/RNGestureHandlerRootViewComponentView.mm +1 -1
  28. package/ios/RNManualActivationRecognizer.m +10 -3
  29. package/ios/RNRootViewGestureRecognizer.m +12 -1
  30. package/lib/commonjs/EnableExperimentalWebImplementation.js +24 -0
  31. package/lib/commonjs/EnableExperimentalWebImplementation.js.map +1 -0
  32. package/lib/commonjs/RNGestureHandlerModule.macos.js +138 -0
  33. package/lib/commonjs/RNGestureHandlerModule.macos.js.map +1 -0
  34. package/lib/commonjs/RNGestureHandlerModule.web.js +87 -25
  35. package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
  36. package/lib/commonjs/RNRenderer.js +16 -0
  37. package/lib/commonjs/RNRenderer.js.map +1 -0
  38. package/lib/commonjs/RNRenderer.web.js +11 -0
  39. package/lib/commonjs/RNRenderer.web.js.map +1 -0
  40. package/lib/commonjs/components/DrawerLayout.js +41 -12
  41. package/lib/commonjs/components/DrawerLayout.js.map +1 -1
  42. package/lib/commonjs/components/GestureButtons.js +42 -9
  43. package/lib/commonjs/components/GestureButtons.js.map +1 -1
  44. package/lib/commonjs/components/GestureComponents.js +41 -4
  45. package/lib/commonjs/components/GestureComponents.js.map +1 -1
  46. package/lib/commonjs/components/GestureComponents.web.js +7 -2
  47. package/lib/commonjs/components/GestureComponents.web.js.map +1 -1
  48. package/lib/commonjs/components/Swipeable.js +3 -1
  49. package/lib/commonjs/components/Swipeable.js.map +1 -1
  50. package/lib/commonjs/components/touchables/GenericTouchable.js +5 -1
  51. package/lib/commonjs/components/touchables/GenericTouchable.js.map +1 -1
  52. package/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -1
  53. package/lib/commonjs/handlers/ForceTouchGestureHandler.js +2 -1
  54. package/lib/commonjs/handlers/ForceTouchGestureHandler.js.map +1 -1
  55. package/lib/commonjs/handlers/PanGestureHandler.js +1 -1
  56. package/lib/commonjs/handlers/PanGestureHandler.js.map +1 -1
  57. package/lib/commonjs/handlers/PressabilityDebugView.js +14 -0
  58. package/lib/commonjs/handlers/PressabilityDebugView.js.map +1 -0
  59. package/lib/commonjs/handlers/PressabilityDebugView.web.js +12 -0
  60. package/lib/commonjs/handlers/PressabilityDebugView.web.js.map +1 -0
  61. package/lib/commonjs/handlers/createHandler.js +33 -12
  62. package/lib/commonjs/handlers/createHandler.js.map +1 -1
  63. package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
  64. package/lib/commonjs/handlers/gestures/GestureDetector.js +150 -75
  65. package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
  66. package/lib/commonjs/handlers/gestures/gesture.js +13 -2
  67. package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
  68. package/lib/commonjs/handlers/gestures/gestureStateManager.js +13 -9
  69. package/lib/commonjs/handlers/gestures/gestureStateManager.js.map +1 -1
  70. package/lib/commonjs/handlers/gestures/panGesture.js +5 -0
  71. package/lib/commonjs/handlers/gestures/panGesture.js.map +1 -1
  72. package/lib/commonjs/handlers/gestures/reanimatedWrapper.js +7 -0
  73. package/lib/commonjs/handlers/gestures/reanimatedWrapper.js.map +1 -1
  74. package/lib/commonjs/index.js +14 -0
  75. package/lib/commonjs/index.js.map +1 -1
  76. package/lib/commonjs/utils.js +6 -3
  77. package/lib/commonjs/utils.js.map +1 -1
  78. package/lib/commonjs/web/constants.js +3 -51
  79. package/lib/commonjs/web/constants.js.map +1 -1
  80. package/lib/commonjs/web/detectors/RotationGestureDetector.js +169 -0
  81. package/lib/commonjs/web/detectors/RotationGestureDetector.js.map +1 -0
  82. package/lib/commonjs/web/detectors/ScaleGestureDetector.js +167 -0
  83. package/lib/commonjs/web/detectors/ScaleGestureDetector.js.map +1 -0
  84. package/lib/commonjs/web/handlers/FlingGestureHandler.js +154 -0
  85. package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -0
  86. package/lib/commonjs/web/handlers/GestureHandler.js +538 -0
  87. package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -0
  88. package/lib/commonjs/web/handlers/LongPressGestureHandler.js +147 -0
  89. package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -0
  90. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +116 -0
  91. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -0
  92. package/lib/commonjs/web/handlers/PanGestureHandler.js +451 -0
  93. package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -0
  94. package/lib/commonjs/web/handlers/PinchGestureHandler.js +171 -0
  95. package/lib/commonjs/web/handlers/PinchGestureHandler.js.map +1 -0
  96. package/lib/commonjs/web/handlers/RotationGestureHandler.js +187 -0
  97. package/lib/commonjs/web/handlers/RotationGestureHandler.js.map +1 -0
  98. package/lib/commonjs/web/handlers/TapGestureHandler.js +296 -0
  99. package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -0
  100. package/lib/commonjs/web/interfaces.js +34 -0
  101. package/lib/commonjs/web/interfaces.js.map +1 -0
  102. package/lib/commonjs/web/tools/EventManager.js +169 -0
  103. package/lib/commonjs/web/tools/EventManager.js.map +1 -0
  104. package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +283 -0
  105. package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -0
  106. package/lib/commonjs/web/tools/InteractionManager.js +102 -0
  107. package/lib/commonjs/web/tools/InteractionManager.js.map +1 -0
  108. package/lib/commonjs/web/tools/NodeManager.js +48 -0
  109. package/lib/commonjs/web/tools/NodeManager.js.map +1 -0
  110. package/lib/commonjs/web/tools/PointerTracker.js +132 -0
  111. package/lib/commonjs/web/tools/PointerTracker.js.map +1 -0
  112. package/lib/commonjs/{web → web_hammer}/DiscreteGestureHandler.js +0 -0
  113. package/lib/commonjs/{web → web_hammer}/DiscreteGestureHandler.js.map +0 -0
  114. package/lib/commonjs/{web → web_hammer}/DraggingGestureHandler.js +0 -0
  115. package/lib/commonjs/{web → web_hammer}/DraggingGestureHandler.js.map +0 -0
  116. package/lib/commonjs/{web → web_hammer}/Errors.js +0 -0
  117. package/lib/commonjs/{web → web_hammer}/Errors.js.map +0 -0
  118. package/lib/commonjs/{web → web_hammer}/FlingGestureHandler.js +0 -0
  119. package/lib/commonjs/{web → web_hammer}/FlingGestureHandler.js.map +0 -0
  120. package/lib/commonjs/{web → web_hammer}/GestureHandler.js +83 -42
  121. package/lib/commonjs/web_hammer/GestureHandler.js.map +1 -0
  122. package/lib/commonjs/{web → web_hammer}/IndiscreteGestureHandler.js +0 -0
  123. package/lib/commonjs/{web → web_hammer}/IndiscreteGestureHandler.js.map +0 -0
  124. package/lib/commonjs/{web → web_hammer}/LongPressGestureHandler.js +0 -0
  125. package/lib/commonjs/{web → web_hammer}/LongPressGestureHandler.js.map +0 -0
  126. package/lib/commonjs/{web → web_hammer}/NativeViewGestureHandler.js +4 -0
  127. package/lib/commonjs/web_hammer/NativeViewGestureHandler.js.map +1 -0
  128. package/lib/commonjs/{web → web_hammer}/NodeManager.js +0 -0
  129. package/lib/commonjs/web_hammer/NodeManager.js.map +1 -0
  130. package/lib/commonjs/{web → web_hammer}/PanGestureHandler.js +0 -0
  131. package/lib/commonjs/{web → web_hammer}/PanGestureHandler.js.map +0 -0
  132. package/lib/commonjs/{web → web_hammer}/PinchGestureHandler.js +0 -0
  133. package/lib/commonjs/{web → web_hammer}/PinchGestureHandler.js.map +0 -0
  134. package/lib/commonjs/{web → web_hammer}/PressGestureHandler.js +0 -0
  135. package/lib/commonjs/{web → web_hammer}/PressGestureHandler.js.map +0 -0
  136. package/lib/commonjs/{web → web_hammer}/RotationGestureHandler.js +0 -0
  137. package/lib/commonjs/{web → web_hammer}/RotationGestureHandler.js.map +0 -0
  138. package/lib/commonjs/{web → web_hammer}/TapGestureHandler.js +0 -0
  139. package/lib/commonjs/{web → web_hammer}/TapGestureHandler.js.map +0 -0
  140. package/lib/commonjs/web_hammer/constants.js +64 -0
  141. package/lib/commonjs/web_hammer/constants.js.map +1 -0
  142. package/lib/commonjs/{web → web_hammer}/utils.js +0 -0
  143. package/lib/commonjs/{web → web_hammer}/utils.js.map +1 -1
  144. package/lib/module/EnableExperimentalWebImplementation.js +15 -0
  145. package/lib/module/EnableExperimentalWebImplementation.js.map +1 -0
  146. package/lib/module/RNGestureHandlerModule.macos.js +102 -0
  147. package/lib/module/RNGestureHandlerModule.macos.js.map +1 -0
  148. package/lib/module/RNGestureHandlerModule.web.js +73 -24
  149. package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
  150. package/lib/module/RNRenderer.js +4 -0
  151. package/lib/module/RNRenderer.js.map +1 -0
  152. package/lib/module/RNRenderer.web.js +4 -0
  153. package/lib/module/RNRenderer.web.js.map +1 -0
  154. package/lib/module/components/DrawerLayout.js +41 -12
  155. package/lib/module/components/DrawerLayout.js.map +1 -1
  156. package/lib/module/components/GestureButtons.js +43 -9
  157. package/lib/module/components/GestureButtons.js.map +1 -1
  158. package/lib/module/components/GestureComponents.js +39 -4
  159. package/lib/module/components/GestureComponents.js.map +1 -1
  160. package/lib/module/components/GestureComponents.web.js +6 -2
  161. package/lib/module/components/GestureComponents.web.js.map +1 -1
  162. package/lib/module/components/Swipeable.js +3 -1
  163. package/lib/module/components/Swipeable.js.map +1 -1
  164. package/lib/module/components/touchables/GenericTouchable.js +5 -1
  165. package/lib/module/components/touchables/GenericTouchable.js.map +1 -1
  166. package/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -1
  167. package/lib/module/handlers/ForceTouchGestureHandler.js +1 -1
  168. package/lib/module/handlers/ForceTouchGestureHandler.js.map +1 -1
  169. package/lib/module/handlers/PanGestureHandler.js +1 -1
  170. package/lib/module/handlers/PanGestureHandler.js.map +1 -1
  171. package/lib/module/handlers/PressabilityDebugView.js +3 -0
  172. package/lib/module/handlers/PressabilityDebugView.js.map +1 -0
  173. package/lib/module/handlers/PressabilityDebugView.web.js +5 -0
  174. package/lib/module/handlers/PressabilityDebugView.web.js.map +1 -0
  175. package/lib/module/handlers/createHandler.js +35 -14
  176. package/lib/module/handlers/createHandler.js.map +1 -1
  177. package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
  178. package/lib/module/handlers/gestures/GestureDetector.js +147 -74
  179. package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
  180. package/lib/module/handlers/gestures/gesture.js +13 -2
  181. package/lib/module/handlers/gestures/gesture.js.map +1 -1
  182. package/lib/module/handlers/gestures/gestureStateManager.js +13 -9
  183. package/lib/module/handlers/gestures/gestureStateManager.js.map +1 -1
  184. package/lib/module/handlers/gestures/panGesture.js +5 -0
  185. package/lib/module/handlers/gestures/panGesture.js.map +1 -1
  186. package/lib/module/handlers/gestures/reanimatedWrapper.js +7 -0
  187. package/lib/module/handlers/gestures/reanimatedWrapper.js.map +1 -1
  188. package/lib/module/index.js +2 -1
  189. package/lib/module/index.js.map +1 -1
  190. package/lib/module/utils.js +2 -1
  191. package/lib/module/utils.js.map +1 -1
  192. package/lib/module/web/constants.js +1 -36
  193. package/lib/module/web/constants.js.map +1 -1
  194. package/lib/module/web/detectors/RotationGestureDetector.js +159 -0
  195. package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -0
  196. package/lib/module/web/detectors/ScaleGestureDetector.js +156 -0
  197. package/lib/module/web/detectors/ScaleGestureDetector.js.map +1 -0
  198. package/lib/module/web/handlers/FlingGestureHandler.js +139 -0
  199. package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -0
  200. package/lib/module/web/handlers/GestureHandler.js +521 -0
  201. package/lib/module/web/handlers/GestureHandler.js.map +1 -0
  202. package/lib/module/web/handlers/LongPressGestureHandler.js +133 -0
  203. package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -0
  204. package/lib/module/web/handlers/NativeViewGestureHandler.js +103 -0
  205. package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -0
  206. package/lib/module/web/handlers/PanGestureHandler.js +434 -0
  207. package/lib/module/web/handlers/PanGestureHandler.js.map +1 -0
  208. package/lib/module/web/handlers/PinchGestureHandler.js +155 -0
  209. package/lib/module/web/handlers/PinchGestureHandler.js.map +1 -0
  210. package/lib/module/web/handlers/RotationGestureHandler.js +171 -0
  211. package/lib/module/web/handlers/RotationGestureHandler.js.map +1 -0
  212. package/lib/module/web/handlers/TapGestureHandler.js +281 -0
  213. package/lib/module/web/handlers/TapGestureHandler.js.map +1 -0
  214. package/lib/module/web/interfaces.js +26 -0
  215. package/lib/module/web/interfaces.js.map +1 -0
  216. package/lib/module/web/tools/EventManager.js +160 -0
  217. package/lib/module/web/tools/EventManager.js.map +1 -0
  218. package/lib/module/web/tools/GestureHandlerOrchestrator.js +270 -0
  219. package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -0
  220. package/lib/module/web/tools/InteractionManager.js +93 -0
  221. package/lib/module/web/tools/InteractionManager.js.map +1 -0
  222. package/lib/module/web/tools/NodeManager.js +39 -0
  223. package/lib/module/web/tools/NodeManager.js.map +1 -0
  224. package/lib/module/web/tools/PointerTracker.js +122 -0
  225. package/lib/module/web/tools/PointerTracker.js.map +1 -0
  226. package/lib/module/{web → web_hammer}/DiscreteGestureHandler.js +0 -0
  227. package/lib/module/{web → web_hammer}/DiscreteGestureHandler.js.map +0 -0
  228. package/lib/module/{web → web_hammer}/DraggingGestureHandler.js +0 -0
  229. package/lib/module/{web → web_hammer}/DraggingGestureHandler.js.map +0 -0
  230. package/lib/module/{web → web_hammer}/Errors.js +0 -0
  231. package/lib/module/{web → web_hammer}/Errors.js.map +0 -0
  232. package/lib/module/{web → web_hammer}/FlingGestureHandler.js +0 -0
  233. package/lib/module/{web → web_hammer}/FlingGestureHandler.js.map +0 -0
  234. package/lib/module/{web → web_hammer}/GestureHandler.js +83 -42
  235. package/lib/module/web_hammer/GestureHandler.js.map +1 -0
  236. package/lib/module/{web → web_hammer}/IndiscreteGestureHandler.js +0 -0
  237. package/lib/module/{web → web_hammer}/IndiscreteGestureHandler.js.map +0 -0
  238. package/lib/module/{web → web_hammer}/LongPressGestureHandler.js +0 -0
  239. package/lib/module/{web → web_hammer}/LongPressGestureHandler.js.map +0 -0
  240. package/lib/module/{web → web_hammer}/NativeViewGestureHandler.js +4 -0
  241. package/lib/module/web_hammer/NativeViewGestureHandler.js.map +1 -0
  242. package/lib/module/{web → web_hammer}/NodeManager.js +0 -0
  243. package/lib/module/web_hammer/NodeManager.js.map +1 -0
  244. package/lib/module/{web → web_hammer}/PanGestureHandler.js +0 -0
  245. package/lib/module/{web → web_hammer}/PanGestureHandler.js.map +0 -0
  246. package/lib/module/{web → web_hammer}/PinchGestureHandler.js +0 -0
  247. package/lib/module/{web → web_hammer}/PinchGestureHandler.js.map +0 -0
  248. package/lib/module/{web → web_hammer}/PressGestureHandler.js +0 -0
  249. package/lib/module/{web → web_hammer}/PressGestureHandler.js.map +0 -0
  250. package/lib/module/{web → web_hammer}/RotationGestureHandler.js +0 -0
  251. package/lib/module/{web → web_hammer}/RotationGestureHandler.js.map +0 -0
  252. package/lib/module/{web → web_hammer}/TapGestureHandler.js +0 -0
  253. package/lib/module/{web → web_hammer}/TapGestureHandler.js.map +0 -0
  254. package/lib/module/web_hammer/constants.js +43 -0
  255. package/lib/module/web_hammer/constants.js.map +1 -0
  256. package/lib/module/{web → web_hammer}/utils.js +0 -0
  257. package/lib/module/{web → web_hammer}/utils.js.map +1 -1
  258. package/lib/typescript/EnableExperimentalWebImplementation.d.ts +2 -0
  259. package/lib/typescript/RNGestureHandlerModule.macos.d.ts +44 -0
  260. package/lib/typescript/RNGestureHandlerModule.web.d.ts +29 -18
  261. package/lib/typescript/RNRenderer.d.ts +1 -0
  262. package/lib/typescript/RNRenderer.web.d.ts +3 -0
  263. package/lib/typescript/components/DrawerLayout.d.ts +4 -1
  264. package/lib/typescript/components/GestureButtons.d.ts +22 -0
  265. package/lib/typescript/components/GestureComponents.d.ts +7 -3
  266. package/lib/typescript/components/GestureComponents.web.d.ts +1 -0
  267. package/lib/typescript/components/Swipeable.d.ts +1 -1
  268. package/lib/typescript/fabric/RNGestureHandlerButtonNativeComponent.d.ts +1 -0
  269. package/lib/typescript/handlers/ForceTouchGestureHandler.d.ts +2 -2
  270. package/lib/typescript/handlers/PanGestureHandler.d.ts +2 -1
  271. package/lib/typescript/handlers/PressabilityDebugView.d.ts +1 -0
  272. package/lib/typescript/handlers/PressabilityDebugView.web.d.ts +1 -0
  273. package/lib/typescript/handlers/gestureHandlerCommon.d.ts +1 -0
  274. package/lib/typescript/handlers/gestures/GestureDetector.d.ts +2 -1
  275. package/lib/typescript/handlers/gestures/gesture.d.ts +3 -0
  276. package/lib/typescript/handlers/gestures/panGesture.d.ts +1 -0
  277. package/lib/typescript/index.d.ts +2 -1
  278. package/lib/typescript/web/constants.d.ts +1 -33
  279. package/lib/typescript/web/detectors/RotationGestureDetector.d.ts +30 -0
  280. package/lib/typescript/web/detectors/ScaleGestureDetector.d.ts +30 -0
  281. package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +31 -0
  282. package/lib/typescript/web/handlers/GestureHandler.d.ts +84 -0
  283. package/lib/typescript/web/handlers/LongPressGestureHandler.d.ts +33 -0
  284. package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts +16 -0
  285. package/lib/typescript/web/handlers/PanGestureHandler.d.ts +68 -0
  286. package/lib/typescript/web/handlers/PinchGestureHandler.d.ts +30 -0
  287. package/lib/typescript/web/handlers/RotationGestureHandler.d.ts +30 -0
  288. package/lib/typescript/web/handlers/TapGestureHandler.d.ts +49 -0
  289. package/lib/typescript/web/interfaces.d.ts +97 -0
  290. package/lib/typescript/web/tools/EventManager.d.ts +28 -0
  291. package/lib/typescript/web/tools/GestureHandlerOrchestrator.d.ts +28 -0
  292. package/lib/typescript/web/tools/InteractionManager.d.ts +13 -0
  293. package/lib/typescript/web/tools/NodeManager.d.ts +11 -0
  294. package/lib/typescript/web/tools/PointerTracker.d.ts +28 -0
  295. package/lib/typescript/{web → web_hammer}/DiscreteGestureHandler.d.ts +0 -0
  296. package/lib/typescript/{web → web_hammer}/DraggingGestureHandler.d.ts +0 -0
  297. package/lib/typescript/{web → web_hammer}/Errors.d.ts +0 -0
  298. package/lib/typescript/{web → web_hammer}/FlingGestureHandler.d.ts +1 -0
  299. package/lib/typescript/{web → web_hammer}/GestureHandler.d.ts +6 -0
  300. package/lib/typescript/{web → web_hammer}/IndiscreteGestureHandler.d.ts +1 -0
  301. package/lib/typescript/{web → web_hammer}/LongPressGestureHandler.d.ts +1 -0
  302. package/lib/typescript/{web → web_hammer}/NativeViewGestureHandler.d.ts +1 -0
  303. package/lib/typescript/web_hammer/NodeManager.d.ts +8 -0
  304. package/lib/typescript/{web → web_hammer}/PanGestureHandler.d.ts +1 -0
  305. package/lib/typescript/{web → web_hammer}/PinchGestureHandler.d.ts +0 -0
  306. package/lib/typescript/{web → web_hammer}/PressGestureHandler.d.ts +2 -0
  307. package/lib/typescript/{web → web_hammer}/RotationGestureHandler.d.ts +0 -0
  308. package/lib/typescript/{web → web_hammer}/TapGestureHandler.d.ts +1 -0
  309. package/lib/typescript/web_hammer/constants.d.ts +39 -0
  310. package/lib/typescript/{web → web_hammer}/utils.d.ts +0 -0
  311. package/package.json +1 -1
  312. package/src/EnableExperimentalWebImplementation.ts +18 -0
  313. package/src/RNGestureHandlerModule.macos.ts +114 -0
  314. package/src/RNGestureHandlerModule.web.ts +89 -26
  315. package/src/RNRenderer.ts +3 -0
  316. package/src/RNRenderer.web.ts +3 -0
  317. package/src/components/DrawerLayout.tsx +37 -14
  318. package/src/components/GestureButtons.tsx +64 -0
  319. package/src/components/GestureComponents.tsx +66 -6
  320. package/src/components/GestureComponents.web.tsx +5 -0
  321. package/src/components/Swipeable.tsx +3 -1
  322. package/src/components/touchables/GenericTouchable.tsx +2 -0
  323. package/src/fabric/RNGestureHandlerButtonNativeComponent.ts +1 -0
  324. package/src/handlers/ForceTouchGestureHandler.ts +3 -2
  325. package/src/handlers/PanGestureHandler.ts +2 -0
  326. package/src/handlers/PressabilityDebugView.tsx +2 -0
  327. package/src/handlers/PressabilityDebugView.web.tsx +4 -0
  328. package/src/handlers/{createHandler.ts → createHandler.tsx} +45 -19
  329. package/src/handlers/gestureHandlerCommon.ts +2 -0
  330. package/src/handlers/gestures/GestureDetector.tsx +185 -93
  331. package/src/handlers/gestures/gesture.ts +16 -0
  332. package/src/handlers/gestures/gestureStateManager.ts +13 -8
  333. package/src/handlers/gestures/panGesture.ts +5 -0
  334. package/src/handlers/gestures/reanimatedWrapper.ts +7 -0
  335. package/src/index.ts +3 -0
  336. package/src/utils.ts +3 -1
  337. package/src/web/constants.ts +1 -41
  338. package/src/web/detectors/RotationGestureDetector.ts +199 -0
  339. package/src/web/detectors/ScaleGestureDetector.ts +208 -0
  340. package/src/web/handlers/FlingGestureHandler.ts +146 -0
  341. package/src/web/handlers/GestureHandler.ts +572 -0
  342. package/src/web/handlers/LongPressGestureHandler.ts +122 -0
  343. package/src/web/handlers/NativeViewGestureHandler.ts +109 -0
  344. package/src/web/handlers/PanGestureHandler.ts +488 -0
  345. package/src/web/handlers/PinchGestureHandler.ts +162 -0
  346. package/src/web/handlers/RotationGestureHandler.ts +181 -0
  347. package/src/web/handlers/TapGestureHandler.ts +275 -0
  348. package/src/web/interfaces.ts +114 -0
  349. package/src/web/tools/EventManager.ts +186 -0
  350. package/src/web/tools/GestureHandlerOrchestrator.ts +329 -0
  351. package/src/web/tools/InteractionManager.ts +108 -0
  352. package/src/web/tools/NodeManager.ts +43 -0
  353. package/src/web/tools/PointerTracker.ts +130 -0
  354. package/src/{web → web_hammer}/DiscreteGestureHandler.ts +0 -0
  355. package/src/{web → web_hammer}/DraggingGestureHandler.ts +0 -0
  356. package/src/{web → web_hammer}/Errors.ts +0 -0
  357. package/src/{web → web_hammer}/FlingGestureHandler.ts +0 -0
  358. package/src/{web → web_hammer}/GestureHandler.ts +102 -55
  359. package/src/{web → web_hammer}/IndiscreteGestureHandler.ts +0 -0
  360. package/src/{web → web_hammer}/LongPressGestureHandler.ts +0 -0
  361. package/src/{web → web_hammer}/NativeViewGestureHandler.ts +4 -0
  362. package/src/{web → web_hammer}/NodeManager.ts +6 -3
  363. package/src/{web → web_hammer}/PanGestureHandler.ts +0 -0
  364. package/src/{web → web_hammer}/PinchGestureHandler.ts +0 -0
  365. package/src/{web → web_hammer}/PressGestureHandler.ts +0 -0
  366. package/src/{web → web_hammer}/RotationGestureHandler.ts +0 -0
  367. package/src/{web → web_hammer}/TapGestureHandler.ts +0 -0
  368. package/src/web_hammer/constants.ts +48 -0
  369. package/src/{web → web_hammer}/utils.ts +1 -1
  370. package/android/src/main/jni/Android.mk +0 -53
  371. package/android/src/main/jni/OnLoad.cpp +0 -9
  372. package/android/src/main/jni/RNGestureHandlerComponentsRegistry.cpp +0 -71
  373. package/android/src/main/jni/RNGestureHandlerComponentsRegistry.h +0 -34
  374. package/ios/RNGestureHandler.xcodeproj/project.xcworkspace/xcuserdata/jakubpiasecki.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  375. package/ios/RNGestureHandler.xcodeproj/xcuserdata/jakubpiasecki.xcuserdatad/xcschemes/xcschememanagement.plist +0 -19
  376. package/lib/commonjs/web/GestureHandler.js.map +0 -1
  377. package/lib/commonjs/web/NativeViewGestureHandler.js.map +0 -1
  378. package/lib/commonjs/web/NodeManager.js.map +0 -1
  379. package/lib/module/web/GestureHandler.js.map +0 -1
  380. package/lib/module/web/NativeViewGestureHandler.js.map +0 -1
  381. package/lib/module/web/NodeManager.js.map +0 -1
  382. package/lib/typescript/web/NodeManager.d.ts +0 -8
@@ -0,0 +1,108 @@
1
+ import GestureHandler from '../handlers/GestureHandler';
2
+ import { Config, Handler } from '../interfaces';
3
+
4
+ export default class InteractionManager {
5
+ private readonly waitForRelations: Map<number, number[]> = new Map();
6
+ private readonly simultaneousRelations: Map<number, number[]> = new Map();
7
+
8
+ public configureInteractions(handler: GestureHandler, config: Config) {
9
+ this.dropRelationsForHandlerWithTag(handler.getTag());
10
+
11
+ if (config.waitFor) {
12
+ const waitFor: number[] = [];
13
+ config.waitFor.forEach((handler: Handler): void => {
14
+ if (typeof handler === 'number') {
15
+ waitFor.push(handler);
16
+ } else {
17
+ waitFor.push(handler.handlerTag);
18
+ }
19
+ });
20
+
21
+ this.waitForRelations.set(handler.getTag(), waitFor);
22
+ }
23
+
24
+ if (config.simultaneousHandlers) {
25
+ const simultaneousHandlers: number[] = [];
26
+ config.simultaneousHandlers.forEach((handler: Handler): void => {
27
+ if (typeof handler === 'number') {
28
+ simultaneousHandlers.push(handler);
29
+ } else {
30
+ simultaneousHandlers.push(handler.handlerTag);
31
+ }
32
+ });
33
+
34
+ this.simultaneousRelations.set(handler.getTag(), simultaneousHandlers);
35
+ }
36
+ handler.setInteractionManager(this);
37
+ }
38
+
39
+ public shouldWaitForHandlerFailure(
40
+ handler: GestureHandler,
41
+ otherHandler: GestureHandler
42
+ ): boolean {
43
+ const waitFor: number[] | undefined = this.waitForRelations.get(
44
+ handler.getTag()
45
+ );
46
+ if (!waitFor) {
47
+ return false;
48
+ }
49
+
50
+ let shouldWait = false;
51
+
52
+ waitFor.forEach((tag: number): void => {
53
+ if (tag === otherHandler.getTag()) {
54
+ shouldWait = true;
55
+ return; //Returns from callback
56
+ }
57
+ });
58
+
59
+ return shouldWait;
60
+ }
61
+
62
+ public shouldRecognizeSimultaneously(
63
+ handler: GestureHandler,
64
+ otherHandler: GestureHandler
65
+ ): boolean {
66
+ const simultaneousHandlers:
67
+ | number[]
68
+ | undefined = this.simultaneousRelations.get(handler.getTag());
69
+ if (!simultaneousHandlers) {
70
+ return false;
71
+ }
72
+
73
+ let shouldRecognizeSimultaneously = false;
74
+
75
+ simultaneousHandlers.forEach((tag: number): void => {
76
+ if (tag === otherHandler.getTag()) {
77
+ shouldRecognizeSimultaneously = true;
78
+ return;
79
+ }
80
+ });
81
+
82
+ return shouldRecognizeSimultaneously;
83
+ }
84
+
85
+ public shouldRequireHandlerToWaitForFailure(
86
+ _handler: GestureHandler,
87
+ _otherHandler: GestureHandler
88
+ ): boolean {
89
+ return false;
90
+ }
91
+
92
+ public shouldHandlerBeCancelledBy(
93
+ _handler: GestureHandler,
94
+ _otherHandler: GestureHandler
95
+ ): boolean {
96
+ return false;
97
+ }
98
+
99
+ public dropRelationsForHandlerWithTag(handlerTag: number): void {
100
+ this.waitForRelations.delete(handlerTag);
101
+ this.simultaneousRelations.delete(handlerTag);
102
+ }
103
+
104
+ public reset() {
105
+ this.waitForRelations.clear();
106
+ this.simultaneousRelations.clear();
107
+ }
108
+ }
@@ -0,0 +1,43 @@
1
+ import { ValueOf } from '../../typeUtils';
2
+ import { Gestures } from '../../RNGestureHandlerModule.web';
3
+
4
+ // eslint-disable-next-line @typescript-eslint/no-extraneous-class
5
+ export default class NodeManager {
6
+ private static gestures: Record<
7
+ number,
8
+ InstanceType<ValueOf<typeof Gestures>>
9
+ > = {};
10
+
11
+ static getHandler(tag: number) {
12
+ if (tag in this.gestures) {
13
+ return this.gestures[tag];
14
+ }
15
+
16
+ throw new Error(`No handler for tag ${tag}`);
17
+ }
18
+
19
+ static createGestureHandler(
20
+ handlerTag: number,
21
+ handler: InstanceType<ValueOf<typeof Gestures>>
22
+ ) {
23
+ if (handlerTag in this.gestures) {
24
+ throw new Error(`Handler with tag ${handlerTag} already exists`);
25
+ }
26
+
27
+ this.gestures[handlerTag] = handler;
28
+ this.gestures[handlerTag].setTag(handlerTag);
29
+ }
30
+
31
+ static dropGestureHandler(handlerTag: number) {
32
+ if (!(handlerTag in this.gestures)) {
33
+ return;
34
+ }
35
+
36
+ // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
37
+ delete this.gestures[handlerTag];
38
+ }
39
+
40
+ static getNodes() {
41
+ return { ...this.gestures };
42
+ }
43
+ }
@@ -0,0 +1,130 @@
1
+ import { AdaptedPointerEvent } from '../interfaces';
2
+
3
+ interface TrackerElement {
4
+ lastX: number;
5
+ lastY: number;
6
+
7
+ timeStamp: number;
8
+
9
+ velocityX: number;
10
+ velocityY: number;
11
+ }
12
+
13
+ const VELOCITY_FACTOR = 0.2;
14
+
15
+ export default class PointerTracker {
16
+ private trackedPointers: Map<number, TrackerElement> = new Map<
17
+ number,
18
+ TrackerElement
19
+ >();
20
+
21
+ public addToTracker(event: AdaptedPointerEvent): void {
22
+ if (this.trackedPointers.has(event.pointerId)) {
23
+ return;
24
+ }
25
+
26
+ const newElement: TrackerElement = {
27
+ lastX: event.x,
28
+ lastY: event.y,
29
+ timeStamp: event.time,
30
+ velocityX: 0,
31
+ velocityY: 0,
32
+ };
33
+
34
+ this.trackedPointers.set(event.pointerId, newElement);
35
+ }
36
+
37
+ public removeFromTracker(pointerId: number): void {
38
+ this.trackedPointers.delete(pointerId);
39
+ }
40
+
41
+ public track(event: AdaptedPointerEvent): void {
42
+ const element: TrackerElement = this.trackedPointers.get(
43
+ event.pointerId
44
+ ) as TrackerElement;
45
+
46
+ if (!element) {
47
+ return;
48
+ }
49
+
50
+ const dx = event.x - element.lastX;
51
+ const dy = event.y - element.lastY;
52
+ const dt = event.time - element.timeStamp;
53
+
54
+ element.velocityX = (dx / dt) * 1000 * VELOCITY_FACTOR;
55
+ element.velocityY = (dy / dt) * 1000 * VELOCITY_FACTOR;
56
+
57
+ element.lastX = event.x;
58
+ element.lastY = event.y;
59
+
60
+ this.trackedPointers.set(event.pointerId, element);
61
+ }
62
+
63
+ public getVelocityX(pointerId: number): number {
64
+ return this.trackedPointers.get(pointerId)?.velocityX as number;
65
+ }
66
+ public getVelocityY(pointerId: number): number {
67
+ return this.trackedPointers.get(pointerId)?.velocityY as number;
68
+ }
69
+ public getLastX(pointerId: number): number {
70
+ return this.trackedPointers.get(pointerId)?.lastX as number;
71
+ }
72
+ public getLastY(pointerId: number): number {
73
+ return this.trackedPointers.get(pointerId)?.lastY as number;
74
+ }
75
+ public getLastAvgX(): number {
76
+ return this.getSumX() / this.trackedPointers.size;
77
+ }
78
+ public getLastAvgY(): number {
79
+ return this.getSumY() / this.trackedPointers.size;
80
+ }
81
+ public getSumX(ignoredPointer?: number): number {
82
+ let sumX = 0;
83
+
84
+ this.trackedPointers.forEach((value, key) => {
85
+ if (key !== ignoredPointer) {
86
+ sumX += value.lastX;
87
+ }
88
+ });
89
+
90
+ return sumX;
91
+ }
92
+ public getSumY(ignoredPointer?: number): number {
93
+ let sumY = 0;
94
+
95
+ this.trackedPointers.forEach((value, key) => {
96
+ if (key !== ignoredPointer) {
97
+ sumY += value.lastY;
98
+ }
99
+ });
100
+
101
+ return sumY;
102
+ }
103
+ public getTrackedPointersCount(): number {
104
+ return this.trackedPointers.size;
105
+ }
106
+ public getTrackedPointersID(): number[] {
107
+ const keys: number[] = [];
108
+
109
+ this.trackedPointers.forEach((_value, key) => {
110
+ keys.push(key);
111
+ });
112
+
113
+ return keys;
114
+ }
115
+
116
+ public getData(): Map<number, TrackerElement> {
117
+ return this.trackedPointers;
118
+ }
119
+
120
+ public resetTracker(): void {
121
+ this.trackedPointers.clear();
122
+ }
123
+
124
+ public static shareCommonPointers(
125
+ stPointers: number[],
126
+ ndPointers: number[]
127
+ ): boolean {
128
+ return stPointers.some((pointerId) => ndPointers.includes(pointerId));
129
+ }
130
+ }
File without changes
File without changes
@@ -29,6 +29,7 @@ export type Config = Partial<{
29
29
  activeOffsetYStart: number;
30
30
  activeOffsetYEnd: number;
31
31
  waitFor: any[] | null;
32
+ simultaneousHandlers: any[] | null;
32
33
  }>;
33
34
 
34
35
  type NativeEvent = ReturnType<GestureHandler['transformEventData']>;
@@ -61,6 +62,12 @@ abstract class GestureHandler {
61
62
  return `${this.name}${this.gestureInstance}`;
62
63
  }
63
64
 
65
+ // a simple way to check if GestureHandler is NativeViewGestureHandler, since importing it
66
+ // here to use instanceof would cause import cycle
67
+ get isNative() {
68
+ return false;
69
+ }
70
+
64
71
  get isDiscrete() {
65
72
  return false;
66
73
  }
@@ -115,7 +122,7 @@ abstract class GestureHandler {
115
122
  updateGestureConfig({ enabled = true, ...props }) {
116
123
  this.clearSelfAsPending();
117
124
 
118
- this.config = ensureConfig({ enabled, ...props });
125
+ this.config = this.ensureConfig({ enabled, ...props });
119
126
  this.hasCustomActivationCriteria = this.updateHasCustomActivationCriteria(
120
127
  this.config
121
128
  );
@@ -259,6 +266,12 @@ abstract class GestureHandler {
259
266
  }
260
267
  }
261
268
 
269
+ shouldUseTouchEvents(config: Config) {
270
+ return (
271
+ config.simultaneousHandlers?.some((handler) => handler.isNative) ?? false
272
+ );
273
+ }
274
+
262
275
  setView(ref: Parameters<typeof findNodeHandle>['0'], propsRef: any) {
263
276
  if (ref == null) {
264
277
  this.destroy();
@@ -266,11 +279,22 @@ abstract class GestureHandler {
266
279
  return;
267
280
  }
268
281
 
282
+ // @ts-ignore window doesn't exist on global type as we don't want to use Node types
283
+ const SUPPORTS_TOUCH = 'ontouchstart' in window;
269
284
  this.propsRef = propsRef;
270
285
  this.ref = ref;
271
286
 
272
287
  this.view = findNodeHandle(ref);
273
- this.hammer = new Hammer.Manager(this.view as any);
288
+
289
+ // When the browser starts handling the gesture (e.g. scrolling), it sends a pointercancel event and stops
290
+ // sending additional pointer events. This is not the case with touch events, so if the gesture is simultaneous
291
+ // with a NativeGestureHandler, we need to check if touch events are supported and use them if possible.
292
+ this.hammer =
293
+ SUPPORTS_TOUCH && this.shouldUseTouchEvents(this.config)
294
+ ? new Hammer.Manager(this.view as any, {
295
+ inputClass: Hammer.TouchInput,
296
+ })
297
+ : new Hammer.Manager(this.view as any);
274
298
 
275
299
  this.oldState = State.UNDETERMINED;
276
300
  this.previousState = State.UNDETERMINED;
@@ -446,6 +470,82 @@ abstract class GestureHandler {
446
470
  };
447
471
 
448
472
  simulateCancelEvent(_inputData: any) {}
473
+
474
+ // Validate the props
475
+ ensureConfig(config: Config): Required<Config> {
476
+ const props = { ...config };
477
+
478
+ // TODO(TS) We use ! to assert that if property is present then value is not empty (null, undefined)
479
+ if ('minDist' in config) {
480
+ props.minDist = config.minDist;
481
+ props.minDistSq = props.minDist! * props.minDist!;
482
+ }
483
+ if ('minVelocity' in config) {
484
+ props.minVelocity = config.minVelocity;
485
+ props.minVelocitySq = props.minVelocity! * props.minVelocity!;
486
+ }
487
+ if ('maxDist' in config) {
488
+ props.maxDist = config.maxDist;
489
+ props.maxDistSq = config.maxDist! * config.maxDist!;
490
+ }
491
+ if ('waitFor' in config) {
492
+ props.waitFor = asArray(config.waitFor)
493
+ .map(({ handlerTag }: { handlerTag: number }) =>
494
+ NodeManager.getHandler(handlerTag)
495
+ )
496
+ .filter((v) => v);
497
+ } else {
498
+ props.waitFor = null;
499
+ }
500
+ if ('simultaneousHandlers' in config) {
501
+ const shouldUseTouchEvents = this.shouldUseTouchEvents(this.config);
502
+ props.simultaneousHandlers = asArray(config.simultaneousHandlers)
503
+ .map((handler: number | GestureHandler) => {
504
+ if (typeof handler === 'number') {
505
+ return NodeManager.getHandler(handler);
506
+ } else {
507
+ return NodeManager.getHandler(handler.handlerTag);
508
+ }
509
+ })
510
+ .filter((v) => v);
511
+
512
+ if (shouldUseTouchEvents !== this.shouldUseTouchEvents(props)) {
513
+ requestAnimationFrame(() => {
514
+ // if the undelying event API needs to be changed, we need to unmount and mount
515
+ // the hammer instance again.
516
+ this.destroy();
517
+ this.setView(this.ref, this.propsRef);
518
+ });
519
+ }
520
+ } else {
521
+ props.simultaneousHandlers = null;
522
+ }
523
+
524
+ const configProps = [
525
+ 'minPointers',
526
+ 'maxPointers',
527
+ 'minDist',
528
+ 'maxDist',
529
+ 'maxDistSq',
530
+ 'minVelocitySq',
531
+ 'minDistSq',
532
+ 'minVelocity',
533
+ 'failOffsetXStart',
534
+ 'failOffsetYStart',
535
+ 'failOffsetXEnd',
536
+ 'failOffsetYEnd',
537
+ 'activeOffsetXStart',
538
+ 'activeOffsetXEnd',
539
+ 'activeOffsetYStart',
540
+ 'activeOffsetYEnd',
541
+ ] as const;
542
+ configProps.forEach((prop: typeof configProps[number]) => {
543
+ if (typeof props[prop] === 'undefined') {
544
+ props[prop] = Number.NaN;
545
+ }
546
+ });
547
+ return props as Required<Config>; // TODO(TS) how to convince TS that props are filled?
548
+ }
449
549
  }
450
550
 
451
551
  // TODO(TS) investigate this method
@@ -492,59 +592,6 @@ function invokeNullableMethod(
492
592
  }
493
593
  }
494
594
 
495
- // Validate the props
496
- function ensureConfig(config: Config): Required<Config> {
497
- const props = { ...config };
498
-
499
- // TODO(TS) We use ! to assert that if property is present then value is not empty (null, undefined)
500
- if ('minDist' in config) {
501
- props.minDist = config.minDist;
502
- props.minDistSq = props.minDist! * props.minDist!;
503
- }
504
- if ('minVelocity' in config) {
505
- props.minVelocity = config.minVelocity;
506
- props.minVelocitySq = props.minVelocity! * props.minVelocity!;
507
- }
508
- if ('maxDist' in config) {
509
- props.maxDist = config.maxDist;
510
- props.maxDistSq = config.maxDist! * config.maxDist!;
511
- }
512
- if ('waitFor' in config) {
513
- props.waitFor = asArray(config.waitFor)
514
- .map(({ handlerTag }: { handlerTag: number }) =>
515
- NodeManager.getHandler(handlerTag)
516
- )
517
- .filter((v) => v);
518
- } else {
519
- props.waitFor = null;
520
- }
521
-
522
- const configProps = [
523
- 'minPointers',
524
- 'maxPointers',
525
- 'minDist',
526
- 'maxDist',
527
- 'maxDistSq',
528
- 'minVelocitySq',
529
- 'minDistSq',
530
- 'minVelocity',
531
- 'failOffsetXStart',
532
- 'failOffsetYStart',
533
- 'failOffsetXEnd',
534
- 'failOffsetYEnd',
535
- 'activeOffsetXStart',
536
- 'activeOffsetXEnd',
537
- 'activeOffsetYStart',
538
- 'activeOffsetYEnd',
539
- ] as const;
540
- configProps.forEach((prop: typeof configProps[number]) => {
541
- if (typeof props[prop] === 'undefined') {
542
- props[prop] = Number.NaN;
543
- }
544
- });
545
- return props as Required<Config>; // TODO(TS) how to convince TS that props are filled?
546
- }
547
-
548
595
  function asArray<T>(value: T | T[]) {
549
596
  // TODO(TS) use config.waitFor type
550
597
  return value == null ? [] : Array.isArray(value) ? value : [value];
@@ -5,6 +5,10 @@ import PressGestureHandler from './PressGestureHandler';
5
5
  import { TEST_MIN_IF_NOT_NAN, VEC_LEN_SQ } from './utils';
6
6
 
7
7
  class NativeViewGestureHandler extends PressGestureHandler {
8
+ get isNative() {
9
+ return true;
10
+ }
11
+
8
12
  onRawEvent(ev: HammerInputExt) {
9
13
  super.onRawEvent(ev);
10
14
  if (!ev.isFinal) {
@@ -1,7 +1,10 @@
1
1
  import { ValueOf } from '../typeUtils';
2
- import { Gestures } from '../RNGestureHandlerModule.web';
2
+ import { HammerGestures } from '../RNGestureHandlerModule.web';
3
3
 
4
- const gestures: Record<number, InstanceType<ValueOf<typeof Gestures>>> = {};
4
+ const gestures: Record<
5
+ number,
6
+ InstanceType<ValueOf<typeof HammerGestures>>
7
+ > = {};
5
8
 
6
9
  export function getHandler(tag: number) {
7
10
  if (tag in gestures) return gestures[tag];
@@ -11,7 +14,7 @@ export function getHandler(tag: number) {
11
14
 
12
15
  export function createGestureHandler(
13
16
  handlerTag: number,
14
- handler: InstanceType<ValueOf<typeof Gestures>>
17
+ handler: InstanceType<ValueOf<typeof HammerGestures>>
15
18
  ) {
16
19
  if (handlerTag in gestures) {
17
20
  throw new Error(`Handler with tag ${handlerTag} already exists`);
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,48 @@
1
+ import Hammer from '@egjs/hammerjs';
2
+
3
+ import { State } from '../State';
4
+
5
+ export const CONTENT_TOUCHES_DELAY = 240;
6
+ export const CONTENT_TOUCHES_QUICK_TAP_END_DELAY = 50;
7
+ export const MULTI_FINGER_PAN_MAX_PINCH_THRESHOLD = 0.1;
8
+ export const MULTI_FINGER_PAN_MAX_ROTATION_THRESHOLD = 7;
9
+ export const DEG_RAD = Math.PI / 180;
10
+
11
+ // Map Hammer values to RNGH
12
+ export const EventMap = {
13
+ [Hammer.INPUT_START]: State.BEGAN,
14
+ [Hammer.INPUT_MOVE]: State.ACTIVE,
15
+ [Hammer.INPUT_END]: State.END,
16
+ [Hammer.INPUT_CANCEL]: State.FAILED,
17
+ } as const;
18
+
19
+ export const Direction = {
20
+ RIGHT: 1,
21
+ LEFT: 2,
22
+ UP: 4,
23
+ DOWN: 8,
24
+ };
25
+
26
+ export const DirectionMap = {
27
+ [Hammer.DIRECTION_RIGHT]: Direction.RIGHT,
28
+ [Hammer.DIRECTION_LEFT]: Direction.LEFT,
29
+ [Hammer.DIRECTION_UP]: Direction.UP,
30
+ [Hammer.DIRECTION_DOWN]: Direction.DOWN,
31
+ };
32
+
33
+ export const HammerInputNames = {
34
+ [Hammer.INPUT_START]: 'START',
35
+ [Hammer.INPUT_MOVE]: 'MOVE',
36
+ [Hammer.INPUT_END]: 'END',
37
+ [Hammer.INPUT_CANCEL]: 'CANCEL',
38
+ };
39
+ export const HammerDirectionNames = {
40
+ [Hammer.DIRECTION_HORIZONTAL]: 'HORIZONTAL',
41
+ [Hammer.DIRECTION_UP]: 'UP',
42
+ [Hammer.DIRECTION_DOWN]: 'DOWN',
43
+ [Hammer.DIRECTION_VERTICAL]: 'VERTICAL',
44
+ [Hammer.DIRECTION_NONE]: 'NONE',
45
+ [Hammer.DIRECTION_ALL]: 'ALL',
46
+ [Hammer.DIRECTION_RIGHT]: 'RIGHT',
47
+ [Hammer.DIRECTION_LEFT]: 'LEFT',
48
+ };
@@ -20,5 +20,5 @@ export function fireAfterInterval(
20
20
  method();
21
21
  return null;
22
22
  }
23
- return setTimeout(() => method(), interval);
23
+ return setTimeout(() => method(), interval as number);
24
24
  }
@@ -1,53 +0,0 @@
1
- GESTURE_HANDLER_MAIN_THIS_DIR := $(call my-dir)
2
-
3
- include $(REACT_ANDROID_DIR)/Android-prebuilt.mk
4
-
5
- # libreact_render_uimanager
6
- include $(CLEAR_VARS)
7
- LOCAL_MODULE := libreact_render_uimanager
8
- LOCAL_SRC_FILES := $(REACT_NDK_EXPORT_DIR)/$(TARGET_ARCH_ABI)/libreact_render_uimanager.so
9
- LOCAL_EXPORT_C_INCLUDES := \
10
- $(REACT_COMMON_DIR)/react/renderer/uimanager
11
- include $(PREBUILT_SHARED_LIBRARY)
12
- # end libreact_render_uimanager
13
-
14
- include $(GESTURE_HANDLER_MAIN_THIS_DIR)/../../../build/generated/source/codegen/jni/Android.mk
15
-
16
- include $(CLEAR_VARS)
17
-
18
- LOCAL_PATH := $(GESTURE_HANDLER_MAIN_THIS_DIR)
19
- LOCAL_MODULE := rngesturehandler_modules
20
-
21
- LOCAL_C_INCLUDES := $(LOCAL_PATH) $(GENERATED_SRC_DIR)/codegen/jni
22
- LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp) $(wildcard $(GENERATED_SRC_DIR)/codegen/jni/*.cpp)
23
- LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) $(GENERATED_SRC_DIR)/codegen/jni
24
-
25
- # Please note as one of the library listed is libreact_codegen_samplelibrary
26
- # This name will be generated as libreact_codegen_<library-name>
27
- # where <library-name> is the one you specified in the Gradle configuration
28
- LOCAL_SHARED_LIBRARIES := libjsi \
29
- libfbjni \
30
- libglog \
31
- libfolly_json \
32
- libyoga \
33
- libreact_nativemodule_core \
34
- libturbomodulejsijni \
35
- librrc_view \
36
- libreact_render_core \
37
- libreact_render_graphics \
38
- libfabricjni \
39
- libfolly_futures \
40
- libreact_debug \
41
- libreact_render_componentregistry \
42
- libreact_render_debug \
43
- libruntimeexecutor \
44
- libreact_render_mapbuffer \
45
- libreact_render_uimanager \
46
- libreact_codegen_rncore \
47
- libreact_codegen_rngesturehandler
48
-
49
- LOCAL_CFLAGS := \
50
- -DLOG_TAG=\"ReactNative\"
51
- LOCAL_CFLAGS += -fexceptions -frtti -std=c++17 -Wall
52
-
53
- include $(BUILD_SHARED_LIBRARY)
@@ -1,9 +0,0 @@
1
- #include <fbjni/fbjni.h>
2
-
3
- #include "RNGestureHandlerComponentsRegistry.h"
4
-
5
- JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {
6
- return facebook::jni::initialize(vm, [] {
7
- facebook::react::RNGestureHandlerComponentsRegistry::registerNatives();
8
- });
9
- }