react-native-gesture-handler 2.5.0 → 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 (313) hide show
  1. package/README.md +1 -0
  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/GestureHandlerOrchestrator.kt +30 -9
  6. package/android/lib/src/main/java/com/swmansion/gesturehandler/LongPressGestureHandler.kt +5 -2
  7. package/android/lib/src/main/java/com/swmansion/gesturehandler/NativeViewGestureHandler.kt +2 -1
  8. package/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.kt +2 -1
  9. package/android/lib/src/main/java/com/swmansion/gesturehandler/TapGestureHandler.kt +3 -2
  10. package/android/src/fabric/java/com/swmansion/gesturehandler/RNGestureHandlerComponentsRegistry.java +1 -1
  11. package/android/src/main/java/com/swmansion/gesturehandler/RNGestureHandlerPackage.kt +0 -8
  12. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt +7 -1
  13. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +1 -1
  14. package/android/src/main/jni/CMakeLists.txt +59 -0
  15. package/ios/RNGestureHandlerButtonComponentView.mm +1 -1
  16. package/ios/RNGestureHandlerManager.mm +0 -5
  17. package/ios/RNGestureHandlerRootViewComponentView.mm +1 -1
  18. package/lib/commonjs/EnableExperimentalWebImplementation.js +24 -0
  19. package/lib/commonjs/EnableExperimentalWebImplementation.js.map +1 -0
  20. package/lib/commonjs/RNGestureHandlerModule.macos.js +87 -30
  21. package/lib/commonjs/RNGestureHandlerModule.macos.js.map +1 -1
  22. package/lib/commonjs/RNGestureHandlerModule.web.js +87 -25
  23. package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
  24. package/lib/commonjs/RNRenderer.js +16 -0
  25. package/lib/commonjs/RNRenderer.js.map +1 -0
  26. package/lib/commonjs/RNRenderer.web.js +11 -0
  27. package/lib/commonjs/RNRenderer.web.js.map +1 -0
  28. package/lib/commonjs/components/DrawerLayout.js +3 -1
  29. package/lib/commonjs/components/DrawerLayout.js.map +1 -1
  30. package/lib/commonjs/components/GestureButtons.js +42 -9
  31. package/lib/commonjs/components/GestureButtons.js.map +1 -1
  32. package/lib/commonjs/components/GestureComponents.js +41 -4
  33. package/lib/commonjs/components/GestureComponents.js.map +1 -1
  34. package/lib/commonjs/components/GestureComponents.web.js +7 -2
  35. package/lib/commonjs/components/GestureComponents.web.js.map +1 -1
  36. package/lib/commonjs/components/Swipeable.js +3 -1
  37. package/lib/commonjs/components/Swipeable.js.map +1 -1
  38. package/lib/commonjs/components/touchables/GenericTouchable.js +2 -1
  39. package/lib/commonjs/components/touchables/GenericTouchable.js.map +1 -1
  40. package/lib/commonjs/handlers/createHandler.js +8 -1
  41. package/lib/commonjs/handlers/createHandler.js.map +1 -1
  42. package/lib/commonjs/handlers/gestures/GestureDetector.js +67 -12
  43. package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
  44. package/lib/commonjs/handlers/gestures/reanimatedWrapper.js +7 -0
  45. package/lib/commonjs/handlers/gestures/reanimatedWrapper.js.map +1 -1
  46. package/lib/commonjs/index.js +14 -0
  47. package/lib/commonjs/index.js.map +1 -1
  48. package/lib/commonjs/web/constants.js +3 -51
  49. package/lib/commonjs/web/constants.js.map +1 -1
  50. package/lib/commonjs/web/detectors/RotationGestureDetector.js +169 -0
  51. package/lib/commonjs/web/detectors/RotationGestureDetector.js.map +1 -0
  52. package/lib/commonjs/web/detectors/ScaleGestureDetector.js +167 -0
  53. package/lib/commonjs/web/detectors/ScaleGestureDetector.js.map +1 -0
  54. package/lib/commonjs/web/handlers/FlingGestureHandler.js +154 -0
  55. package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -0
  56. package/lib/commonjs/web/handlers/GestureHandler.js +538 -0
  57. package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -0
  58. package/lib/commonjs/web/handlers/LongPressGestureHandler.js +147 -0
  59. package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -0
  60. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +116 -0
  61. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -0
  62. package/lib/commonjs/web/handlers/PanGestureHandler.js +451 -0
  63. package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -0
  64. package/lib/commonjs/web/handlers/PinchGestureHandler.js +171 -0
  65. package/lib/commonjs/web/handlers/PinchGestureHandler.js.map +1 -0
  66. package/lib/commonjs/web/handlers/RotationGestureHandler.js +187 -0
  67. package/lib/commonjs/web/handlers/RotationGestureHandler.js.map +1 -0
  68. package/lib/commonjs/web/handlers/TapGestureHandler.js +296 -0
  69. package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -0
  70. package/lib/commonjs/web/interfaces.js +34 -0
  71. package/lib/commonjs/web/interfaces.js.map +1 -0
  72. package/lib/commonjs/web/tools/EventManager.js +169 -0
  73. package/lib/commonjs/web/tools/EventManager.js.map +1 -0
  74. package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +283 -0
  75. package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -0
  76. package/lib/commonjs/web/tools/InteractionManager.js +102 -0
  77. package/lib/commonjs/web/tools/InteractionManager.js.map +1 -0
  78. package/lib/commonjs/web/tools/NodeManager.js +48 -0
  79. package/lib/commonjs/web/tools/NodeManager.js.map +1 -0
  80. package/lib/commonjs/web/tools/PointerTracker.js +132 -0
  81. package/lib/commonjs/web/tools/PointerTracker.js.map +1 -0
  82. package/lib/commonjs/{web → web_hammer}/DiscreteGestureHandler.js +0 -0
  83. package/lib/commonjs/{web → web_hammer}/DiscreteGestureHandler.js.map +0 -0
  84. package/lib/commonjs/{web → web_hammer}/DraggingGestureHandler.js +0 -0
  85. package/lib/commonjs/{web → web_hammer}/DraggingGestureHandler.js.map +0 -0
  86. package/lib/commonjs/{web → web_hammer}/Errors.js +0 -0
  87. package/lib/commonjs/{web → web_hammer}/Errors.js.map +0 -0
  88. package/lib/commonjs/{web → web_hammer}/FlingGestureHandler.js +0 -0
  89. package/lib/commonjs/{web → web_hammer}/FlingGestureHandler.js.map +0 -0
  90. package/lib/commonjs/{web → web_hammer}/GestureHandler.js +83 -42
  91. package/lib/commonjs/web_hammer/GestureHandler.js.map +1 -0
  92. package/lib/commonjs/{web → web_hammer}/IndiscreteGestureHandler.js +0 -0
  93. package/lib/commonjs/{web → web_hammer}/IndiscreteGestureHandler.js.map +0 -0
  94. package/lib/commonjs/{web → web_hammer}/LongPressGestureHandler.js +0 -0
  95. package/lib/commonjs/{web → web_hammer}/LongPressGestureHandler.js.map +0 -0
  96. package/lib/commonjs/{web → web_hammer}/NativeViewGestureHandler.js +4 -0
  97. package/lib/commonjs/web_hammer/NativeViewGestureHandler.js.map +1 -0
  98. package/lib/commonjs/{web → web_hammer}/NodeManager.js +0 -0
  99. package/lib/commonjs/web_hammer/NodeManager.js.map +1 -0
  100. package/lib/commonjs/{web → web_hammer}/PanGestureHandler.js +0 -0
  101. package/lib/commonjs/{web → web_hammer}/PanGestureHandler.js.map +0 -0
  102. package/lib/commonjs/{web → web_hammer}/PinchGestureHandler.js +0 -0
  103. package/lib/commonjs/{web → web_hammer}/PinchGestureHandler.js.map +0 -0
  104. package/lib/commonjs/{web → web_hammer}/PressGestureHandler.js +0 -0
  105. package/lib/commonjs/{web → web_hammer}/PressGestureHandler.js.map +0 -0
  106. package/lib/commonjs/{web → web_hammer}/RotationGestureHandler.js +0 -0
  107. package/lib/commonjs/{web → web_hammer}/RotationGestureHandler.js.map +0 -0
  108. package/lib/commonjs/{web → web_hammer}/TapGestureHandler.js +0 -0
  109. package/lib/commonjs/{web → web_hammer}/TapGestureHandler.js.map +0 -0
  110. package/lib/commonjs/web_hammer/constants.js +64 -0
  111. package/lib/commonjs/web_hammer/constants.js.map +1 -0
  112. package/lib/commonjs/{web → web_hammer}/utils.js +0 -0
  113. package/lib/commonjs/{web → web_hammer}/utils.js.map +0 -0
  114. package/lib/module/EnableExperimentalWebImplementation.js +15 -0
  115. package/lib/module/EnableExperimentalWebImplementation.js.map +1 -0
  116. package/lib/module/RNGestureHandlerModule.macos.js +74 -29
  117. package/lib/module/RNGestureHandlerModule.macos.js.map +1 -1
  118. package/lib/module/RNGestureHandlerModule.web.js +73 -24
  119. package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
  120. package/lib/module/RNRenderer.js +4 -0
  121. package/lib/module/RNRenderer.js.map +1 -0
  122. package/lib/module/RNRenderer.web.js +4 -0
  123. package/lib/module/RNRenderer.web.js.map +1 -0
  124. package/lib/module/components/DrawerLayout.js +3 -1
  125. package/lib/module/components/DrawerLayout.js.map +1 -1
  126. package/lib/module/components/GestureButtons.js +43 -9
  127. package/lib/module/components/GestureButtons.js.map +1 -1
  128. package/lib/module/components/GestureComponents.js +39 -4
  129. package/lib/module/components/GestureComponents.js.map +1 -1
  130. package/lib/module/components/GestureComponents.web.js +6 -2
  131. package/lib/module/components/GestureComponents.web.js.map +1 -1
  132. package/lib/module/components/Swipeable.js +3 -1
  133. package/lib/module/components/Swipeable.js.map +1 -1
  134. package/lib/module/components/touchables/GenericTouchable.js +2 -1
  135. package/lib/module/components/touchables/GenericTouchable.js.map +1 -1
  136. package/lib/module/handlers/createHandler.js +9 -2
  137. package/lib/module/handlers/createHandler.js.map +1 -1
  138. package/lib/module/handlers/gestures/GestureDetector.js +64 -11
  139. package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
  140. package/lib/module/handlers/gestures/reanimatedWrapper.js +7 -0
  141. package/lib/module/handlers/gestures/reanimatedWrapper.js.map +1 -1
  142. package/lib/module/index.js +2 -1
  143. package/lib/module/index.js.map +1 -1
  144. package/lib/module/web/constants.js +1 -36
  145. package/lib/module/web/constants.js.map +1 -1
  146. package/lib/module/web/detectors/RotationGestureDetector.js +159 -0
  147. package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -0
  148. package/lib/module/web/detectors/ScaleGestureDetector.js +156 -0
  149. package/lib/module/web/detectors/ScaleGestureDetector.js.map +1 -0
  150. package/lib/module/web/handlers/FlingGestureHandler.js +139 -0
  151. package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -0
  152. package/lib/module/web/handlers/GestureHandler.js +521 -0
  153. package/lib/module/web/handlers/GestureHandler.js.map +1 -0
  154. package/lib/module/web/handlers/LongPressGestureHandler.js +133 -0
  155. package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -0
  156. package/lib/module/web/handlers/NativeViewGestureHandler.js +103 -0
  157. package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -0
  158. package/lib/module/web/handlers/PanGestureHandler.js +434 -0
  159. package/lib/module/web/handlers/PanGestureHandler.js.map +1 -0
  160. package/lib/module/web/handlers/PinchGestureHandler.js +155 -0
  161. package/lib/module/web/handlers/PinchGestureHandler.js.map +1 -0
  162. package/lib/module/web/handlers/RotationGestureHandler.js +171 -0
  163. package/lib/module/web/handlers/RotationGestureHandler.js.map +1 -0
  164. package/lib/module/web/handlers/TapGestureHandler.js +281 -0
  165. package/lib/module/web/handlers/TapGestureHandler.js.map +1 -0
  166. package/lib/module/web/interfaces.js +26 -0
  167. package/lib/module/web/interfaces.js.map +1 -0
  168. package/lib/module/web/tools/EventManager.js +160 -0
  169. package/lib/module/web/tools/EventManager.js.map +1 -0
  170. package/lib/module/web/tools/GestureHandlerOrchestrator.js +270 -0
  171. package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -0
  172. package/lib/module/web/tools/InteractionManager.js +93 -0
  173. package/lib/module/web/tools/InteractionManager.js.map +1 -0
  174. package/lib/module/web/tools/NodeManager.js +39 -0
  175. package/lib/module/web/tools/NodeManager.js.map +1 -0
  176. package/lib/module/web/tools/PointerTracker.js +122 -0
  177. package/lib/module/web/tools/PointerTracker.js.map +1 -0
  178. package/lib/module/{web → web_hammer}/DiscreteGestureHandler.js +0 -0
  179. package/lib/module/{web → web_hammer}/DiscreteGestureHandler.js.map +0 -0
  180. package/lib/module/{web → web_hammer}/DraggingGestureHandler.js +0 -0
  181. package/lib/module/{web → web_hammer}/DraggingGestureHandler.js.map +0 -0
  182. package/lib/module/{web → web_hammer}/Errors.js +0 -0
  183. package/lib/module/{web → web_hammer}/Errors.js.map +0 -0
  184. package/lib/module/{web → web_hammer}/FlingGestureHandler.js +0 -0
  185. package/lib/module/{web → web_hammer}/FlingGestureHandler.js.map +0 -0
  186. package/lib/module/{web → web_hammer}/GestureHandler.js +83 -42
  187. package/lib/module/web_hammer/GestureHandler.js.map +1 -0
  188. package/lib/module/{web → web_hammer}/IndiscreteGestureHandler.js +0 -0
  189. package/lib/module/{web → web_hammer}/IndiscreteGestureHandler.js.map +0 -0
  190. package/lib/module/{web → web_hammer}/LongPressGestureHandler.js +0 -0
  191. package/lib/module/{web → web_hammer}/LongPressGestureHandler.js.map +0 -0
  192. package/lib/module/{web → web_hammer}/NativeViewGestureHandler.js +4 -0
  193. package/lib/module/web_hammer/NativeViewGestureHandler.js.map +1 -0
  194. package/lib/module/{web → web_hammer}/NodeManager.js +0 -0
  195. package/lib/module/web_hammer/NodeManager.js.map +1 -0
  196. package/lib/module/{web → web_hammer}/PanGestureHandler.js +0 -0
  197. package/lib/module/{web → web_hammer}/PanGestureHandler.js.map +0 -0
  198. package/lib/module/{web → web_hammer}/PinchGestureHandler.js +0 -0
  199. package/lib/module/{web → web_hammer}/PinchGestureHandler.js.map +0 -0
  200. package/lib/module/{web → web_hammer}/PressGestureHandler.js +0 -0
  201. package/lib/module/{web → web_hammer}/PressGestureHandler.js.map +0 -0
  202. package/lib/module/{web → web_hammer}/RotationGestureHandler.js +0 -0
  203. package/lib/module/{web → web_hammer}/RotationGestureHandler.js.map +0 -0
  204. package/lib/module/{web → web_hammer}/TapGestureHandler.js +0 -0
  205. package/lib/module/{web → web_hammer}/TapGestureHandler.js.map +0 -0
  206. package/lib/module/web_hammer/constants.js +43 -0
  207. package/lib/module/web_hammer/constants.js.map +1 -0
  208. package/lib/module/{web → web_hammer}/utils.js +0 -0
  209. package/lib/module/{web → web_hammer}/utils.js.map +0 -0
  210. package/lib/typescript/EnableExperimentalWebImplementation.d.ts +2 -0
  211. package/lib/typescript/RNGestureHandlerModule.macos.d.ts +28 -18
  212. package/lib/typescript/RNGestureHandlerModule.web.d.ts +29 -18
  213. package/lib/typescript/RNRenderer.d.ts +1 -0
  214. package/lib/typescript/RNRenderer.web.d.ts +3 -0
  215. package/lib/typescript/components/DrawerLayout.d.ts +1 -1
  216. package/lib/typescript/components/GestureButtons.d.ts +16 -0
  217. package/lib/typescript/components/GestureComponents.d.ts +7 -3
  218. package/lib/typescript/components/GestureComponents.web.d.ts +1 -0
  219. package/lib/typescript/components/Swipeable.d.ts +1 -1
  220. package/lib/typescript/index.d.ts +2 -1
  221. package/lib/typescript/web/constants.d.ts +1 -33
  222. package/lib/typescript/web/detectors/RotationGestureDetector.d.ts +30 -0
  223. package/lib/typescript/web/detectors/ScaleGestureDetector.d.ts +30 -0
  224. package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +31 -0
  225. package/lib/typescript/web/handlers/GestureHandler.d.ts +84 -0
  226. package/lib/typescript/web/handlers/LongPressGestureHandler.d.ts +33 -0
  227. package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts +16 -0
  228. package/lib/typescript/web/handlers/PanGestureHandler.d.ts +68 -0
  229. package/lib/typescript/web/handlers/PinchGestureHandler.d.ts +30 -0
  230. package/lib/typescript/web/handlers/RotationGestureHandler.d.ts +30 -0
  231. package/lib/typescript/web/handlers/TapGestureHandler.d.ts +49 -0
  232. package/lib/typescript/web/interfaces.d.ts +97 -0
  233. package/lib/typescript/web/tools/EventManager.d.ts +28 -0
  234. package/lib/typescript/web/tools/GestureHandlerOrchestrator.d.ts +28 -0
  235. package/lib/typescript/web/tools/InteractionManager.d.ts +13 -0
  236. package/lib/typescript/web/tools/NodeManager.d.ts +11 -0
  237. package/lib/typescript/web/tools/PointerTracker.d.ts +28 -0
  238. package/lib/typescript/{web → web_hammer}/DiscreteGestureHandler.d.ts +0 -0
  239. package/lib/typescript/{web → web_hammer}/DraggingGestureHandler.d.ts +0 -0
  240. package/lib/typescript/{web → web_hammer}/Errors.d.ts +0 -0
  241. package/lib/typescript/{web → web_hammer}/FlingGestureHandler.d.ts +1 -0
  242. package/lib/typescript/{web → web_hammer}/GestureHandler.d.ts +6 -0
  243. package/lib/typescript/{web → web_hammer}/IndiscreteGestureHandler.d.ts +1 -0
  244. package/lib/typescript/{web → web_hammer}/LongPressGestureHandler.d.ts +1 -0
  245. package/lib/typescript/{web → web_hammer}/NativeViewGestureHandler.d.ts +1 -0
  246. package/lib/typescript/web_hammer/NodeManager.d.ts +8 -0
  247. package/lib/typescript/{web → web_hammer}/PanGestureHandler.d.ts +1 -0
  248. package/lib/typescript/{web → web_hammer}/PinchGestureHandler.d.ts +0 -0
  249. package/lib/typescript/{web → web_hammer}/PressGestureHandler.d.ts +2 -0
  250. package/lib/typescript/{web → web_hammer}/RotationGestureHandler.d.ts +0 -0
  251. package/lib/typescript/{web → web_hammer}/TapGestureHandler.d.ts +1 -0
  252. package/lib/typescript/web_hammer/constants.d.ts +39 -0
  253. package/lib/typescript/{web → web_hammer}/utils.d.ts +0 -0
  254. package/package.json +1 -1
  255. package/src/EnableExperimentalWebImplementation.ts +18 -0
  256. package/src/RNGestureHandlerModule.macos.ts +81 -29
  257. package/src/RNGestureHandlerModule.web.ts +89 -26
  258. package/src/RNRenderer.ts +3 -0
  259. package/src/RNRenderer.web.ts +3 -0
  260. package/src/components/DrawerLayout.tsx +3 -4
  261. package/src/components/GestureButtons.tsx +57 -0
  262. package/src/components/GestureComponents.tsx +66 -6
  263. package/src/components/GestureComponents.web.tsx +5 -0
  264. package/src/components/Swipeable.tsx +3 -1
  265. package/src/components/touchables/GenericTouchable.tsx +1 -0
  266. package/src/handlers/createHandler.tsx +13 -2
  267. package/src/handlers/gestures/GestureDetector.tsx +78 -12
  268. package/src/handlers/gestures/reanimatedWrapper.ts +7 -0
  269. package/src/index.ts +3 -0
  270. package/src/web/constants.ts +1 -41
  271. package/src/web/detectors/RotationGestureDetector.ts +199 -0
  272. package/src/web/detectors/ScaleGestureDetector.ts +208 -0
  273. package/src/web/handlers/FlingGestureHandler.ts +146 -0
  274. package/src/web/handlers/GestureHandler.ts +572 -0
  275. package/src/web/handlers/LongPressGestureHandler.ts +122 -0
  276. package/src/web/handlers/NativeViewGestureHandler.ts +109 -0
  277. package/src/web/handlers/PanGestureHandler.ts +488 -0
  278. package/src/web/handlers/PinchGestureHandler.ts +162 -0
  279. package/src/web/handlers/RotationGestureHandler.ts +181 -0
  280. package/src/web/handlers/TapGestureHandler.ts +275 -0
  281. package/src/web/interfaces.ts +114 -0
  282. package/src/web/tools/EventManager.ts +186 -0
  283. package/src/web/tools/GestureHandlerOrchestrator.ts +329 -0
  284. package/src/web/tools/InteractionManager.ts +108 -0
  285. package/src/web/tools/NodeManager.ts +43 -0
  286. package/src/web/tools/PointerTracker.ts +130 -0
  287. package/src/{web → web_hammer}/DiscreteGestureHandler.ts +0 -0
  288. package/src/{web → web_hammer}/DraggingGestureHandler.ts +0 -0
  289. package/src/{web → web_hammer}/Errors.ts +0 -0
  290. package/src/{web → web_hammer}/FlingGestureHandler.ts +0 -0
  291. package/src/{web → web_hammer}/GestureHandler.ts +102 -55
  292. package/src/{web → web_hammer}/IndiscreteGestureHandler.ts +0 -0
  293. package/src/{web → web_hammer}/LongPressGestureHandler.ts +0 -0
  294. package/src/{web → web_hammer}/NativeViewGestureHandler.ts +4 -0
  295. package/src/{web → web_hammer}/NodeManager.ts +6 -3
  296. package/src/{web → web_hammer}/PanGestureHandler.ts +0 -0
  297. package/src/{web → web_hammer}/PinchGestureHandler.ts +0 -0
  298. package/src/{web → web_hammer}/PressGestureHandler.ts +0 -0
  299. package/src/{web → web_hammer}/RotationGestureHandler.ts +0 -0
  300. package/src/{web → web_hammer}/TapGestureHandler.ts +0 -0
  301. package/src/web_hammer/constants.ts +48 -0
  302. package/src/{web → web_hammer}/utils.ts +0 -0
  303. package/android/src/main/jni/Android.mk +0 -52
  304. package/android/src/main/jni/OnLoad.cpp +0 -9
  305. package/android/src/main/jni/RNGestureHandlerComponentsRegistry.cpp +0 -71
  306. package/android/src/main/jni/RNGestureHandlerComponentsRegistry.h +0 -34
  307. package/lib/commonjs/web/GestureHandler.js.map +0 -1
  308. package/lib/commonjs/web/NativeViewGestureHandler.js.map +0 -1
  309. package/lib/commonjs/web/NodeManager.js.map +0 -1
  310. package/lib/module/web/GestureHandler.js.map +0 -1
  311. package/lib/module/web/NativeViewGestureHandler.js.map +0 -1
  312. package/lib/module/web/NodeManager.js.map +0 -1
  313. package/lib/typescript/web/NodeManager.d.ts +0 -8
@@ -16,6 +16,7 @@ import {
16
16
  DrawerLayoutAndroidProps as RNDrawerLayoutAndroidProps,
17
17
  FlatList as RNFlatList,
18
18
  FlatListProps as RNFlatListProps,
19
+ RefreshControl as RNRefreshControl,
19
20
  } from 'react-native';
20
21
 
21
22
  import createNativeWrapper from '../handlers/createNativeWrapper';
@@ -25,16 +26,53 @@ import {
25
26
  nativeViewProps,
26
27
  } from '../handlers/NativeViewGestureHandler';
27
28
 
28
- export const ScrollView = createNativeWrapper<
29
- PropsWithChildren<RNScrollViewProps>
30
- >(RNScrollView, {
29
+ import { toArray } from '../utils';
30
+
31
+ export const RefreshControl = createNativeWrapper(RNRefreshControl, {
31
32
  disallowInterruption: true,
32
33
  shouldCancelWhenOutside: false,
33
34
  });
35
+ // eslint-disable-next-line @typescript-eslint/no-redeclare
36
+ export type RefreshControl = typeof RefreshControl & RNRefreshControl;
37
+
38
+ const GHScrollView = createNativeWrapper<PropsWithChildren<RNScrollViewProps>>(
39
+ RNScrollView,
40
+ {
41
+ disallowInterruption: true,
42
+ shouldCancelWhenOutside: false,
43
+ }
44
+ );
45
+ export const ScrollView = React.forwardRef<
46
+ RNScrollView,
47
+ RNScrollViewProps & NativeViewGestureHandlerProps
48
+ >((props, ref) => {
49
+ const refreshControlGestureRef = React.useRef<RefreshControl>(null);
50
+ const { refreshControl, waitFor, ...rest } = props;
51
+
52
+ return (
53
+ <GHScrollView
54
+ {...rest}
55
+ // @ts-ignore `ref` exists on `GHScrollView`
56
+ ref={ref}
57
+ waitFor={[...toArray(waitFor ?? []), refreshControlGestureRef]}
58
+ // @ts-ignore we don't pass `refreshing` prop as we only want to override the ref
59
+ refreshControl={
60
+ refreshControl ? (
61
+ <RefreshControl
62
+ {...refreshControl.props}
63
+ ref={refreshControlGestureRef}
64
+ />
65
+ ) : (
66
+ refreshControl
67
+ )
68
+ }
69
+ />
70
+ );
71
+ });
34
72
  // backward type compatibility with https://github.com/software-mansion/react-native-gesture-handler/blob/db78d3ca7d48e8ba57482d3fe9b0a15aa79d9932/react-native-gesture-handler.d.ts#L440-L457
35
73
  // include methods of wrapped components by creating an intersection type with the RN component instead of duplicating them.
36
74
  // eslint-disable-next-line @typescript-eslint/no-redeclare
37
- export type ScrollView = typeof ScrollView & RNScrollView;
75
+ export type ScrollView = typeof GHScrollView & RNScrollView;
38
76
 
39
77
  export const Switch = createNativeWrapper<RNSwitchProps>(RNSwitch, {
40
78
  shouldCancelWhenOutside: false,
@@ -56,9 +94,13 @@ export type DrawerLayoutAndroid = typeof DrawerLayoutAndroid &
56
94
  RNDrawerLayoutAndroid;
57
95
 
58
96
  export const FlatList = React.forwardRef((props, ref) => {
97
+ const refreshControlGestureRef = React.useRef<RefreshControl>(null);
98
+
99
+ const { waitFor, refreshControl, ...rest } = props;
100
+
59
101
  const flatListProps = {};
60
102
  const scrollViewProps = {};
61
- for (const [propName, value] of Object.entries(props)) {
103
+ for (const [propName, value] of Object.entries(rest)) {
62
104
  // https://github.com/microsoft/TypeScript/issues/26255
63
105
  if ((nativeViewProps as readonly string[]).includes(propName)) {
64
106
  // @ts-ignore - this function cannot have generic type so we have to ignore this error
@@ -70,14 +112,32 @@ export const FlatList = React.forwardRef((props, ref) => {
70
112
  flatListProps[propName] = value;
71
113
  }
72
114
  }
115
+
73
116
  return (
74
117
  // @ts-ignore - this function cannot have generic type so we have to ignore this error
75
118
  <RNFlatList
76
119
  ref={ref}
77
120
  {...flatListProps}
78
121
  renderScrollComponent={(scrollProps) => (
79
- <ScrollView {...{ ...scrollProps, ...scrollViewProps }} />
122
+ <ScrollView
123
+ {...{
124
+ ...scrollProps,
125
+ ...scrollViewProps,
126
+ waitFor: [...toArray(waitFor ?? []), refreshControlGestureRef],
127
+ }}
128
+ />
80
129
  )}
130
+ // @ts-ignore we don't pass `refreshing` prop as we only want to override the ref
131
+ refreshControl={
132
+ refreshControl ? (
133
+ <RefreshControl
134
+ {...refreshControl.props}
135
+ ref={refreshControlGestureRef}
136
+ />
137
+ ) : (
138
+ refreshControl
139
+ )
140
+ }
81
141
  />
82
142
  );
83
143
  }) as <ItemT = any>(
@@ -6,6 +6,7 @@ import {
6
6
  TextInput as RNTextInput,
7
7
  ScrollView as RNScrollView,
8
8
  FlatListProps,
9
+ View,
9
10
  } from 'react-native';
10
11
 
11
12
  import createNativeWrapper from '../handlers/createNativeWrapper';
@@ -25,6 +26,10 @@ export const DrawerLayoutAndroid = createNativeWrapper(RNDrawerLayoutAndroid, {
25
26
  });
26
27
  // @ts-ignore -- TODO(TS) to investigate if it's needed
27
28
  DrawerLayoutAndroid.positions = RNDrawerLayoutAndroid.positions;
29
+ // RefreshControl is implemented as a functional component, rendering a View
30
+ // NativeViewGestureHandler needs to set a ref on its child, which cannot be done
31
+ // on functional components
32
+ export const RefreshControl = createNativeWrapper(View);
28
33
 
29
34
  export const FlatList = React.forwardRef(
30
35
  <ItemT extends any>(props: FlatListProps<ItemT>, ref: any) => (
@@ -219,7 +219,7 @@ export default class Swipeable extends Component<
219
219
  );
220
220
  }
221
221
 
222
- UNSAFE_componentWillUpdate(props: SwipeableProps, state: SwipeableState) {
222
+ shouldComponentUpdate(props: SwipeableProps, state: SwipeableState) {
223
223
  if (
224
224
  this.props.friction !== props.friction ||
225
225
  this.props.overshootLeft !== props.overshootLeft ||
@@ -231,6 +231,8 @@ export default class Swipeable extends Component<
231
231
  ) {
232
232
  this.updateAnimatedEvent(props, state);
233
233
  }
234
+
235
+ return true;
234
236
  }
235
237
 
236
238
  private onGestureEvent?: (
@@ -278,6 +278,7 @@ export default class GenericTouchable extends Component<
278
278
  disallowInterruption={this.props.disallowInterruption}
279
279
  testID={this.props.testID}
280
280
  touchSoundDisabled={this.props.touchSoundDisabled ?? false}
281
+ enabled={!this.props.disabled}
281
282
  {...this.props.extraButtonProps}>
282
283
  <Animated.View {...coreProps} style={this.props.style}>
283
284
  {this.props.children}
@@ -25,7 +25,7 @@ import {
25
25
  scheduleFlushOperations,
26
26
  } from './gestureHandlerCommon';
27
27
  import { ValueOf } from '../typeUtils';
28
- import { isFabric, isJestEnv } from '../utils';
28
+ import { isFabric, isJestEnv, tagMessage } from '../utils';
29
29
  import { ActionType } from '../ActionType';
30
30
  import { PressabilityDebugView } from './PressabilityDebugView';
31
31
 
@@ -407,6 +407,7 @@ export default function createHandler<
407
407
  onGestureEvent,
408
408
  onGestureHandlerEvent,
409
409
  }: OnGestureEventHandlers = this.props;
410
+
410
411
  if (onGestureEvent && typeof onGestureEvent !== 'function') {
411
412
  // If it's not a method it should be an native Animated.event
412
413
  // object. We set it directly as the handler for the view
@@ -469,7 +470,17 @@ export default function createHandler<
469
470
 
470
471
  this.propsRef.current = events;
471
472
 
472
- const child: any = React.Children.only(this.props.children);
473
+ let child: any = null;
474
+ try {
475
+ child = React.Children.only(this.props.children);
476
+ } catch (e) {
477
+ throw new Error(
478
+ tagMessage(
479
+ `${name} got more than one view as a child. If you want the gesture to work on multiple views, wrap them with a common parent and attach the gesture to that view.`
480
+ )
481
+ );
482
+ }
483
+
473
484
  let grandChildren = child.props.children;
474
485
  if (
475
486
  __DEV__ &&
@@ -40,6 +40,8 @@ import { getShadowNodeFromRef } from '../../getShadowNodeFromRef';
40
40
  import { Platform } from 'react-native';
41
41
  import type RNGestureHandlerModuleWeb from '../../RNGestureHandlerModule.web';
42
42
  import { onGestureHandlerEvent } from './eventReceiver';
43
+ import { RNRenderer } from '../../RNRenderer';
44
+ import { isExperimentalWebImplementationEnabled } from '../../EnableExperimentalWebImplementation';
43
45
 
44
46
  declare const global: {
45
47
  isFormsStackingContext: (node: unknown) => boolean | null; // JSI function
@@ -116,6 +118,9 @@ function checkGestureCallbacksForWorklets(gesture: GestureType) {
116
118
 
117
119
  interface WebEventHandler {
118
120
  onGestureHandlerEvent: (event: HandlerStateChangeEvent<unknown>) => void;
121
+ onGestureHandlerStateChange?: (
122
+ event: HandlerStateChangeEvent<unknown>
123
+ ) => void;
119
124
  }
120
125
 
121
126
  interface AttachHandlersConfig {
@@ -511,6 +516,51 @@ function useAnimatedGesture(
511
516
  preparedGesture.animatedHandlers = sharedHandlersCallbacks;
512
517
  }
513
518
 
519
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
520
+ function validateDetectorChildren(ref: any) {
521
+ // finds the first native view under the Wrap component and traverses the fiber tree upwards
522
+ // to check whether there is more than one native view as a pseudo-direct child of GestureDetector
523
+ // i.e. this is not ok:
524
+ // Wrap
525
+ // |
526
+ // / \
527
+ // / \
528
+ // / \
529
+ // / \
530
+ // NativeView NativeView
531
+ //
532
+ // but this is fine:
533
+ // Wrap
534
+ // |
535
+ // NativeView
536
+ // |
537
+ // / \
538
+ // / \
539
+ // / \
540
+ // / \
541
+ // NativeView NativeView
542
+ if (__DEV__ && Platform.OS !== 'web') {
543
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
544
+ const wrapType = ref._reactInternals.elementType;
545
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
546
+ let instance = RNRenderer.findHostInstance_DEPRECATED(ref)
547
+ ._internalFiberInstanceHandleDEV;
548
+
549
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
550
+ while (instance && instance.elementType !== wrapType) {
551
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
552
+ if (instance.sibling) {
553
+ throw new Error(
554
+ 'GestureDetector has more than one native view as its children. This can happen if you are using a custom component that renders multiple views, like React.Fragment. You should wrap content of GestureDetector with a <View> or <Animated.View>.'
555
+ );
556
+ }
557
+
558
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
559
+ instance = instance.return;
560
+ }
561
+ }
562
+ }
563
+
514
564
  interface GestureDetectorProps {
515
565
  gesture?: ComposedGesture | GestureType;
516
566
  children?: React.ReactNode;
@@ -525,6 +575,11 @@ export const GestureDetector = (props: GestureDetectorProps) => {
525
575
  onGestureHandlerEvent: (e: HandlerStateChangeEvent<unknown>) => {
526
576
  onGestureHandlerEvent(e.nativeEvent);
527
577
  },
578
+ onGestureHandlerStateChange: isExperimentalWebImplementationEnabled()
579
+ ? (e: HandlerStateChangeEvent<unknown>) => {
580
+ onGestureHandlerEvent(e.nativeEvent);
581
+ }
582
+ : undefined,
528
583
  });
529
584
 
530
585
  const preparedGesture = React.useRef<GestureConfigReference>({
@@ -561,6 +616,8 @@ export const GestureDetector = (props: GestureDetectorProps) => {
561
616
  useEffect(() => {
562
617
  firstRenderRef.current = true;
563
618
  const viewTag = findNodeHandle(viewRef.current) as number;
619
+
620
+ validateDetectorChildren(viewRef.current);
564
621
  attachHandlers({
565
622
  preparedGesture,
566
623
  gestureConfig,
@@ -579,6 +636,7 @@ export const GestureDetector = (props: GestureDetectorProps) => {
579
636
  const viewTag = findNodeHandle(viewRef.current) as number;
580
637
 
581
638
  if (needsToReattach(preparedGesture, gesture)) {
639
+ validateDetectorChildren(viewRef.current);
582
640
  dropHandlers(preparedGesture);
583
641
  attachHandlers({
584
642
  preparedGesture,
@@ -633,18 +691,26 @@ class Wrap extends React.Component<{
633
691
  children?: React.ReactNode;
634
692
  }> {
635
693
  render() {
636
- // I don't think that fighting with types over such a simple function is worth it
637
- // The only thing it does is add 'collapsable: false' to the child component
638
- // to make sure it is in the native view hierarchy so the detector can find
639
- // correct viewTag to attach to.
640
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
641
- const child: any = React.Children.only(this.props.children);
642
- return React.cloneElement(
643
- child,
644
- { collapsable: false },
645
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
646
- child.props.children
647
- );
694
+ try {
695
+ // I don't think that fighting with types over such a simple function is worth it
696
+ // The only thing it does is add 'collapsable: false' to the child component
697
+ // to make sure it is in the native view hierarchy so the detector can find
698
+ // correct viewTag to attach to.
699
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
700
+ const child: any = React.Children.only(this.props.children);
701
+ return React.cloneElement(
702
+ child,
703
+ { collapsable: false },
704
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
705
+ child.props.children
706
+ );
707
+ } catch (e) {
708
+ throw new Error(
709
+ tagMessage(
710
+ `GestureDetector got more than one view as a child. If you want the gesture to work on multiple views, wrap them with a common parent and attach the gesture to that view.`
711
+ )
712
+ );
713
+ }
648
714
  }
649
715
  }
650
716
 
@@ -30,6 +30,13 @@ let Reanimated: {
30
30
  try {
31
31
  Reanimated = require('react-native-reanimated');
32
32
 
33
+ if (!Reanimated.useSharedValue) {
34
+ // @ts-ignore Make sure the loaded module is actually Reanimated, if it's not
35
+ // reset the module to undefined so we can fallback to the default implementation
36
+ Reanimated = undefined;
37
+ throw new Error('react-native-reanimated is not found');
38
+ }
39
+
33
40
  if (!Reanimated.setGestureState) {
34
41
  Reanimated.setGestureState = () => {
35
42
  'worklet';
package/src/index.ts CHANGED
@@ -105,6 +105,7 @@ export {
105
105
  TextInput,
106
106
  DrawerLayoutAndroid,
107
107
  FlatList,
108
+ RefreshControl,
108
109
  } from './components/GestureComponents';
109
110
  export type {
110
111
  //events
@@ -156,4 +157,6 @@ export type {
156
157
  } from './components/DrawerLayout';
157
158
  export { default as DrawerLayout } from './components/DrawerLayout';
158
159
 
160
+ export { enableExperimentalWebImplementation } from './EnableExperimentalWebImplementation';
161
+
159
162
  initialize();
@@ -1,20 +1,4 @@
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;
1
+ export const DEFAULT_TOUCH_SLOP = 15;
18
2
 
19
3
  export const Direction = {
20
4
  RIGHT: 1,
@@ -22,27 +6,3 @@ export const Direction = {
22
6
  UP: 4,
23
7
  DOWN: 8,
24
8
  };
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
- };
@@ -0,0 +1,199 @@
1
+ import { AdaptedPointerEvent, EventTypes } from '../interfaces';
2
+ import PointerTracker from '../tools/PointerTracker';
3
+
4
+ export interface RotationGestureListener {
5
+ onRotationBegin: (detector: RotationGestureDetector) => boolean;
6
+ onRotation: (
7
+ detector: RotationGestureDetector,
8
+ event: AdaptedPointerEvent
9
+ ) => boolean;
10
+ onRotationEnd: (
11
+ detector: RotationGestureDetector,
12
+ event: AdaptedPointerEvent
13
+ ) => void;
14
+ }
15
+
16
+ export default class RotationGestureDetector
17
+ implements RotationGestureListener {
18
+ onRotationBegin: (detector: RotationGestureDetector) => boolean;
19
+ onRotation: (
20
+ detector: RotationGestureDetector,
21
+ event: AdaptedPointerEvent
22
+ ) => boolean;
23
+ onRotationEnd: (
24
+ detector: RotationGestureDetector,
25
+ event: AdaptedPointerEvent
26
+ ) => void;
27
+
28
+ private currentTime = 0;
29
+ private previousTime = 0;
30
+
31
+ private previousAngle = 0;
32
+ private rotation = 0;
33
+
34
+ private anchorX = 0;
35
+ private anchorY = 0;
36
+
37
+ private isInProgress = false;
38
+
39
+ private keyPointers: number[] = [NaN, NaN];
40
+
41
+ constructor(callbacks: RotationGestureListener) {
42
+ this.onRotationBegin = callbacks.onRotationBegin;
43
+ this.onRotation = callbacks.onRotation;
44
+ this.onRotationEnd = callbacks.onRotationEnd;
45
+ }
46
+
47
+ private updateCurrent(
48
+ event: AdaptedPointerEvent,
49
+ tracker: PointerTracker
50
+ ): void {
51
+ this.previousTime = this.currentTime;
52
+ this.currentTime = event.time;
53
+
54
+ const [firstPointerID, secondPointerID] = this.keyPointers;
55
+
56
+ const firstPointerX: number = tracker.getLastX(firstPointerID);
57
+ const firstPointerY: number = tracker.getLastY(firstPointerID);
58
+ const secondPointerX: number = tracker.getLastX(secondPointerID);
59
+ const secondPointerY: number = tracker.getLastY(secondPointerID);
60
+
61
+ const vectorX: number = secondPointerX - firstPointerX;
62
+ const vectorY: number = secondPointerY - firstPointerY;
63
+
64
+ this.anchorX = (firstPointerX + secondPointerX) / 2;
65
+ this.anchorY = (firstPointerY + secondPointerY) / 2;
66
+
67
+ //Angle diff should be positive when rotating in clockwise direction
68
+ const angle: number = -Math.atan2(vectorY, vectorX);
69
+ this.rotation = Number.isNaN(this.previousAngle)
70
+ ? 0
71
+ : this.previousAngle - angle;
72
+
73
+ this.previousAngle = angle;
74
+
75
+ if (this.rotation > Math.PI) {
76
+ this.rotation -= Math.PI;
77
+ } else if (this.rotation < -Math.PI) {
78
+ this.rotation += Math.PI;
79
+ }
80
+
81
+ if (this.rotation > Math.PI / 2) {
82
+ this.rotation -= Math.PI;
83
+ } else if (this.rotation < -Math.PI / 2) {
84
+ this.rotation += Math.PI;
85
+ }
86
+ }
87
+
88
+ private finish(event: AdaptedPointerEvent): void {
89
+ if (!this.isInProgress) {
90
+ return;
91
+ }
92
+
93
+ this.isInProgress = false;
94
+ this.keyPointers = [NaN, NaN];
95
+ this.onRotationEnd(this, event);
96
+ }
97
+
98
+ private setKeyPointers(tracker: PointerTracker): void {
99
+ if (this.keyPointers[0] && this.keyPointers[1]) {
100
+ return;
101
+ }
102
+
103
+ const pointerIDs: IterableIterator<number> = tracker.getData().keys();
104
+
105
+ this.keyPointers[0] = pointerIDs.next().value as number;
106
+ this.keyPointers[1] = pointerIDs.next().value as number;
107
+ }
108
+
109
+ public onTouchEvent(
110
+ event: AdaptedPointerEvent,
111
+ tracker: PointerTracker
112
+ ): boolean {
113
+ this.adaptEvent(event, tracker);
114
+
115
+ switch (event.eventType) {
116
+ case EventTypes.DOWN:
117
+ this.isInProgress = false;
118
+ break;
119
+
120
+ case EventTypes.ADDITIONAL_POINTER_DOWN:
121
+ if (this.isInProgress) {
122
+ break;
123
+ }
124
+
125
+ this.isInProgress = true;
126
+
127
+ this.previousTime = event.time;
128
+ this.previousAngle = NaN;
129
+
130
+ this.setKeyPointers(tracker);
131
+
132
+ this.updateCurrent(event, tracker);
133
+ this.onRotationBegin(this);
134
+ break;
135
+
136
+ case EventTypes.MOVE:
137
+ if (!this.isInProgress) {
138
+ break;
139
+ }
140
+
141
+ this.updateCurrent(event, tracker);
142
+ this.onRotation(this, event);
143
+
144
+ break;
145
+
146
+ case EventTypes.ADDITIONAL_POINTER_UP:
147
+ if (!this.isInProgress) {
148
+ break;
149
+ }
150
+
151
+ if (this.keyPointers.indexOf(event.pointerId) >= 0) {
152
+ this.finish(event);
153
+ }
154
+
155
+ break;
156
+
157
+ case EventTypes.UP:
158
+ this.finish(event);
159
+ break;
160
+ }
161
+
162
+ return true;
163
+ }
164
+
165
+ private adaptEvent(
166
+ event: AdaptedPointerEvent,
167
+ tracker: PointerTracker
168
+ ): void {
169
+ if (
170
+ tracker.getTrackedPointersCount() &&
171
+ event.eventType === EventTypes.DOWN
172
+ ) {
173
+ event.eventType = EventTypes.ADDITIONAL_POINTER_DOWN;
174
+ }
175
+
176
+ if (
177
+ tracker.getTrackedPointersCount() > 1 &&
178
+ event.eventType === EventTypes.UP
179
+ ) {
180
+ event.eventType = EventTypes.ADDITIONAL_POINTER_UP;
181
+ }
182
+ }
183
+
184
+ public getTimeDelta(): number {
185
+ return this.currentTime + this.previousTime;
186
+ }
187
+
188
+ public getAnchorX(): number {
189
+ return this.anchorX;
190
+ }
191
+
192
+ public getAnchorY(): number {
193
+ return this.anchorY;
194
+ }
195
+
196
+ public getRotation(): number {
197
+ return this.rotation;
198
+ }
199
+ }