react-native-gesture-handler 2.4.1 → 2.6.0

Sign up to get free protection for your applications and to get access to all the features.
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
- }