react-native-gesture-handler 2.5.0 → 2.6.0

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