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
@@ -1 +1 @@
1
- {"version":3,"sources":["constants.ts"],"names":["Hammer","State","CONTENT_TOUCHES_DELAY","CONTENT_TOUCHES_QUICK_TAP_END_DELAY","MULTI_FINGER_PAN_MAX_PINCH_THRESHOLD","MULTI_FINGER_PAN_MAX_ROTATION_THRESHOLD","DEG_RAD","Math","PI","EventMap","INPUT_START","BEGAN","INPUT_MOVE","ACTIVE","INPUT_END","END","INPUT_CANCEL","FAILED","Direction","RIGHT","LEFT","UP","DOWN","DirectionMap","DIRECTION_RIGHT","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_DOWN","HammerInputNames","HammerDirectionNames","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","DIRECTION_NONE","DIRECTION_ALL"],"mappings":"AAAA,OAAOA,MAAP,MAAmB,gBAAnB;AAEA,SAASC,KAAT,QAAsB,UAAtB;AAEA,OAAO,MAAMC,qBAAqB,GAAG,GAA9B;AACP,OAAO,MAAMC,mCAAmC,GAAG,EAA5C;AACP,OAAO,MAAMC,oCAAoC,GAAG,GAA7C;AACP,OAAO,MAAMC,uCAAuC,GAAG,CAAhD;AACP,OAAO,MAAMC,OAAO,GAAGC,IAAI,CAACC,EAAL,GAAU,GAA1B,C,CAEP;;AACA,OAAO,MAAMC,QAAQ,GAAG;AACtB,GAACT,MAAM,CAACU,WAAR,GAAsBT,KAAK,CAACU,KADN;AAEtB,GAACX,MAAM,CAACY,UAAR,GAAqBX,KAAK,CAACY,MAFL;AAGtB,GAACb,MAAM,CAACc,SAAR,GAAoBb,KAAK,CAACc,GAHJ;AAItB,GAACf,MAAM,CAACgB,YAAR,GAAuBf,KAAK,CAACgB;AAJP,CAAjB;AAOP,OAAO,MAAMC,SAAS,GAAG;AACvBC,EAAAA,KAAK,EAAE,CADgB;AAEvBC,EAAAA,IAAI,EAAE,CAFiB;AAGvBC,EAAAA,EAAE,EAAE,CAHmB;AAIvBC,EAAAA,IAAI,EAAE;AAJiB,CAAlB;AAOP,OAAO,MAAMC,YAAY,GAAG;AAC1B,GAACvB,MAAM,CAACwB,eAAR,GAA0BN,SAAS,CAACC,KADV;AAE1B,GAACnB,MAAM,CAACyB,cAAR,GAAyBP,SAAS,CAACE,IAFT;AAG1B,GAACpB,MAAM,CAAC0B,YAAR,GAAuBR,SAAS,CAACG,EAHP;AAI1B,GAACrB,MAAM,CAAC2B,cAAR,GAAyBT,SAAS,CAACI;AAJT,CAArB;AAOP,OAAO,MAAMM,gBAAgB,GAAG;AAC9B,GAAC5B,MAAM,CAACU,WAAR,GAAsB,OADQ;AAE9B,GAACV,MAAM,CAACY,UAAR,GAAqB,MAFS;AAG9B,GAACZ,MAAM,CAACc,SAAR,GAAoB,KAHU;AAI9B,GAACd,MAAM,CAACgB,YAAR,GAAuB;AAJO,CAAzB;AAMP,OAAO,MAAMa,oBAAoB,GAAG;AAClC,GAAC7B,MAAM,CAAC8B,oBAAR,GAA+B,YADG;AAElC,GAAC9B,MAAM,CAAC0B,YAAR,GAAuB,IAFW;AAGlC,GAAC1B,MAAM,CAAC2B,cAAR,GAAyB,MAHS;AAIlC,GAAC3B,MAAM,CAAC+B,kBAAR,GAA6B,UAJK;AAKlC,GAAC/B,MAAM,CAACgC,cAAR,GAAyB,MALS;AAMlC,GAAChC,MAAM,CAACiC,aAAR,GAAwB,KANU;AAOlC,GAACjC,MAAM,CAACwB,eAAR,GAA0B,OAPQ;AAQlC,GAACxB,MAAM,CAACyB,cAAR,GAAyB;AARS,CAA7B","sourcesContent":["import Hammer from '@egjs/hammerjs';\n\nimport { State } from '../State';\n\nexport const CONTENT_TOUCHES_DELAY = 240;\nexport const CONTENT_TOUCHES_QUICK_TAP_END_DELAY = 50;\nexport const MULTI_FINGER_PAN_MAX_PINCH_THRESHOLD = 0.1;\nexport const MULTI_FINGER_PAN_MAX_ROTATION_THRESHOLD = 7;\nexport const DEG_RAD = Math.PI / 180;\n\n// Map Hammer values to RNGH\nexport const EventMap = {\n [Hammer.INPUT_START]: State.BEGAN,\n [Hammer.INPUT_MOVE]: State.ACTIVE,\n [Hammer.INPUT_END]: State.END,\n [Hammer.INPUT_CANCEL]: State.FAILED,\n} as const;\n\nexport const Direction = {\n RIGHT: 1,\n LEFT: 2,\n UP: 4,\n DOWN: 8,\n};\n\nexport const DirectionMap = {\n [Hammer.DIRECTION_RIGHT]: Direction.RIGHT,\n [Hammer.DIRECTION_LEFT]: Direction.LEFT,\n [Hammer.DIRECTION_UP]: Direction.UP,\n [Hammer.DIRECTION_DOWN]: Direction.DOWN,\n};\n\nexport const HammerInputNames = {\n [Hammer.INPUT_START]: 'START',\n [Hammer.INPUT_MOVE]: 'MOVE',\n [Hammer.INPUT_END]: 'END',\n [Hammer.INPUT_CANCEL]: 'CANCEL',\n};\nexport const HammerDirectionNames = {\n [Hammer.DIRECTION_HORIZONTAL]: 'HORIZONTAL',\n [Hammer.DIRECTION_UP]: 'UP',\n [Hammer.DIRECTION_DOWN]: 'DOWN',\n [Hammer.DIRECTION_VERTICAL]: 'VERTICAL',\n [Hammer.DIRECTION_NONE]: 'NONE',\n [Hammer.DIRECTION_ALL]: 'ALL',\n [Hammer.DIRECTION_RIGHT]: 'RIGHT',\n [Hammer.DIRECTION_LEFT]: 'LEFT',\n};\n"]}
1
+ {"version":3,"sources":["constants.ts"],"names":["DEFAULT_TOUCH_SLOP","Direction","RIGHT","LEFT","UP","DOWN"],"mappings":"AAAA,OAAO,MAAMA,kBAAkB,GAAG,EAA3B;AAEP,OAAO,MAAMC,SAAS,GAAG;AACvBC,EAAAA,KAAK,EAAE,CADgB;AAEvBC,EAAAA,IAAI,EAAE,CAFiB;AAGvBC,EAAAA,EAAE,EAAE,CAHmB;AAIvBC,EAAAA,IAAI,EAAE;AAJiB,CAAlB","sourcesContent":["export const DEFAULT_TOUCH_SLOP = 15;\n\nexport const Direction = {\n RIGHT: 1,\n LEFT: 2,\n UP: 4,\n DOWN: 8,\n};\n"]}
@@ -0,0 +1,159 @@
1
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+
3
+ import { EventTypes } from '../interfaces';
4
+ export default class RotationGestureDetector {
5
+ constructor(callbacks) {
6
+ _defineProperty(this, "onRotationBegin", void 0);
7
+
8
+ _defineProperty(this, "onRotation", void 0);
9
+
10
+ _defineProperty(this, "onRotationEnd", void 0);
11
+
12
+ _defineProperty(this, "currentTime", 0);
13
+
14
+ _defineProperty(this, "previousTime", 0);
15
+
16
+ _defineProperty(this, "previousAngle", 0);
17
+
18
+ _defineProperty(this, "rotation", 0);
19
+
20
+ _defineProperty(this, "anchorX", 0);
21
+
22
+ _defineProperty(this, "anchorY", 0);
23
+
24
+ _defineProperty(this, "isInProgress", false);
25
+
26
+ _defineProperty(this, "keyPointers", [NaN, NaN]);
27
+
28
+ this.onRotationBegin = callbacks.onRotationBegin;
29
+ this.onRotation = callbacks.onRotation;
30
+ this.onRotationEnd = callbacks.onRotationEnd;
31
+ }
32
+
33
+ updateCurrent(event, tracker) {
34
+ this.previousTime = this.currentTime;
35
+ this.currentTime = event.time;
36
+ const [firstPointerID, secondPointerID] = this.keyPointers;
37
+ const firstPointerX = tracker.getLastX(firstPointerID);
38
+ const firstPointerY = tracker.getLastY(firstPointerID);
39
+ const secondPointerX = tracker.getLastX(secondPointerID);
40
+ const secondPointerY = tracker.getLastY(secondPointerID);
41
+ const vectorX = secondPointerX - firstPointerX;
42
+ const vectorY = secondPointerY - firstPointerY;
43
+ this.anchorX = (firstPointerX + secondPointerX) / 2;
44
+ this.anchorY = (firstPointerY + secondPointerY) / 2; //Angle diff should be positive when rotating in clockwise direction
45
+
46
+ const angle = -Math.atan2(vectorY, vectorX);
47
+ this.rotation = Number.isNaN(this.previousAngle) ? 0 : this.previousAngle - angle;
48
+ this.previousAngle = angle;
49
+
50
+ if (this.rotation > Math.PI) {
51
+ this.rotation -= Math.PI;
52
+ } else if (this.rotation < -Math.PI) {
53
+ this.rotation += Math.PI;
54
+ }
55
+
56
+ if (this.rotation > Math.PI / 2) {
57
+ this.rotation -= Math.PI;
58
+ } else if (this.rotation < -Math.PI / 2) {
59
+ this.rotation += Math.PI;
60
+ }
61
+ }
62
+
63
+ finish(event) {
64
+ if (!this.isInProgress) {
65
+ return;
66
+ }
67
+
68
+ this.isInProgress = false;
69
+ this.keyPointers = [NaN, NaN];
70
+ this.onRotationEnd(this, event);
71
+ }
72
+
73
+ setKeyPointers(tracker) {
74
+ if (this.keyPointers[0] && this.keyPointers[1]) {
75
+ return;
76
+ }
77
+
78
+ const pointerIDs = tracker.getData().keys();
79
+ this.keyPointers[0] = pointerIDs.next().value;
80
+ this.keyPointers[1] = pointerIDs.next().value;
81
+ }
82
+
83
+ onTouchEvent(event, tracker) {
84
+ this.adaptEvent(event, tracker);
85
+
86
+ switch (event.eventType) {
87
+ case EventTypes.DOWN:
88
+ this.isInProgress = false;
89
+ break;
90
+
91
+ case EventTypes.ADDITIONAL_POINTER_DOWN:
92
+ if (this.isInProgress) {
93
+ break;
94
+ }
95
+
96
+ this.isInProgress = true;
97
+ this.previousTime = event.time;
98
+ this.previousAngle = NaN;
99
+ this.setKeyPointers(tracker);
100
+ this.updateCurrent(event, tracker);
101
+ this.onRotationBegin(this);
102
+ break;
103
+
104
+ case EventTypes.MOVE:
105
+ if (!this.isInProgress) {
106
+ break;
107
+ }
108
+
109
+ this.updateCurrent(event, tracker);
110
+ this.onRotation(this, event);
111
+ break;
112
+
113
+ case EventTypes.ADDITIONAL_POINTER_UP:
114
+ if (!this.isInProgress) {
115
+ break;
116
+ }
117
+
118
+ if (this.keyPointers.indexOf(event.pointerId) >= 0) {
119
+ this.finish(event);
120
+ }
121
+
122
+ break;
123
+
124
+ case EventTypes.UP:
125
+ this.finish(event);
126
+ break;
127
+ }
128
+
129
+ return true;
130
+ }
131
+
132
+ adaptEvent(event, tracker) {
133
+ if (tracker.getTrackedPointersCount() && event.eventType === EventTypes.DOWN) {
134
+ event.eventType = EventTypes.ADDITIONAL_POINTER_DOWN;
135
+ }
136
+
137
+ if (tracker.getTrackedPointersCount() > 1 && event.eventType === EventTypes.UP) {
138
+ event.eventType = EventTypes.ADDITIONAL_POINTER_UP;
139
+ }
140
+ }
141
+
142
+ getTimeDelta() {
143
+ return this.currentTime + this.previousTime;
144
+ }
145
+
146
+ getAnchorX() {
147
+ return this.anchorX;
148
+ }
149
+
150
+ getAnchorY() {
151
+ return this.anchorY;
152
+ }
153
+
154
+ getRotation() {
155
+ return this.rotation;
156
+ }
157
+
158
+ }
159
+ //# sourceMappingURL=RotationGestureDetector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["RotationGestureDetector.ts"],"names":["EventTypes","RotationGestureDetector","constructor","callbacks","NaN","onRotationBegin","onRotation","onRotationEnd","updateCurrent","event","tracker","previousTime","currentTime","time","firstPointerID","secondPointerID","keyPointers","firstPointerX","getLastX","firstPointerY","getLastY","secondPointerX","secondPointerY","vectorX","vectorY","anchorX","anchorY","angle","Math","atan2","rotation","Number","isNaN","previousAngle","PI","finish","isInProgress","setKeyPointers","pointerIDs","getData","keys","next","value","onTouchEvent","adaptEvent","eventType","DOWN","ADDITIONAL_POINTER_DOWN","MOVE","ADDITIONAL_POINTER_UP","indexOf","pointerId","UP","getTrackedPointersCount","getTimeDelta","getAnchorX","getAnchorY","getRotation"],"mappings":"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","sourcesContent":["import { AdaptedPointerEvent, EventTypes } from '../interfaces';\nimport PointerTracker from '../tools/PointerTracker';\n\nexport interface RotationGestureListener {\n onRotationBegin: (detector: RotationGestureDetector) => boolean;\n onRotation: (\n detector: RotationGestureDetector,\n event: AdaptedPointerEvent\n ) => boolean;\n onRotationEnd: (\n detector: RotationGestureDetector,\n event: AdaptedPointerEvent\n ) => void;\n}\n\nexport default class RotationGestureDetector\n implements RotationGestureListener {\n onRotationBegin: (detector: RotationGestureDetector) => boolean;\n onRotation: (\n detector: RotationGestureDetector,\n event: AdaptedPointerEvent\n ) => boolean;\n onRotationEnd: (\n detector: RotationGestureDetector,\n event: AdaptedPointerEvent\n ) => void;\n\n private currentTime = 0;\n private previousTime = 0;\n\n private previousAngle = 0;\n private rotation = 0;\n\n private anchorX = 0;\n private anchorY = 0;\n\n private isInProgress = false;\n\n private keyPointers: number[] = [NaN, NaN];\n\n constructor(callbacks: RotationGestureListener) {\n this.onRotationBegin = callbacks.onRotationBegin;\n this.onRotation = callbacks.onRotation;\n this.onRotationEnd = callbacks.onRotationEnd;\n }\n\n private updateCurrent(\n event: AdaptedPointerEvent,\n tracker: PointerTracker\n ): void {\n this.previousTime = this.currentTime;\n this.currentTime = event.time;\n\n const [firstPointerID, secondPointerID] = this.keyPointers;\n\n const firstPointerX: number = tracker.getLastX(firstPointerID);\n const firstPointerY: number = tracker.getLastY(firstPointerID);\n const secondPointerX: number = tracker.getLastX(secondPointerID);\n const secondPointerY: number = tracker.getLastY(secondPointerID);\n\n const vectorX: number = secondPointerX - firstPointerX;\n const vectorY: number = secondPointerY - firstPointerY;\n\n this.anchorX = (firstPointerX + secondPointerX) / 2;\n this.anchorY = (firstPointerY + secondPointerY) / 2;\n\n //Angle diff should be positive when rotating in clockwise direction\n const angle: number = -Math.atan2(vectorY, vectorX);\n this.rotation = Number.isNaN(this.previousAngle)\n ? 0\n : this.previousAngle - angle;\n\n this.previousAngle = angle;\n\n if (this.rotation > Math.PI) {\n this.rotation -= Math.PI;\n } else if (this.rotation < -Math.PI) {\n this.rotation += Math.PI;\n }\n\n if (this.rotation > Math.PI / 2) {\n this.rotation -= Math.PI;\n } else if (this.rotation < -Math.PI / 2) {\n this.rotation += Math.PI;\n }\n }\n\n private finish(event: AdaptedPointerEvent): void {\n if (!this.isInProgress) {\n return;\n }\n\n this.isInProgress = false;\n this.keyPointers = [NaN, NaN];\n this.onRotationEnd(this, event);\n }\n\n private setKeyPointers(tracker: PointerTracker): void {\n if (this.keyPointers[0] && this.keyPointers[1]) {\n return;\n }\n\n const pointerIDs: IterableIterator<number> = tracker.getData().keys();\n\n this.keyPointers[0] = pointerIDs.next().value as number;\n this.keyPointers[1] = pointerIDs.next().value as number;\n }\n\n public onTouchEvent(\n event: AdaptedPointerEvent,\n tracker: PointerTracker\n ): boolean {\n this.adaptEvent(event, tracker);\n\n switch (event.eventType) {\n case EventTypes.DOWN:\n this.isInProgress = false;\n break;\n\n case EventTypes.ADDITIONAL_POINTER_DOWN:\n if (this.isInProgress) {\n break;\n }\n\n this.isInProgress = true;\n\n this.previousTime = event.time;\n this.previousAngle = NaN;\n\n this.setKeyPointers(tracker);\n\n this.updateCurrent(event, tracker);\n this.onRotationBegin(this);\n break;\n\n case EventTypes.MOVE:\n if (!this.isInProgress) {\n break;\n }\n\n this.updateCurrent(event, tracker);\n this.onRotation(this, event);\n\n break;\n\n case EventTypes.ADDITIONAL_POINTER_UP:\n if (!this.isInProgress) {\n break;\n }\n\n if (this.keyPointers.indexOf(event.pointerId) >= 0) {\n this.finish(event);\n }\n\n break;\n\n case EventTypes.UP:\n this.finish(event);\n break;\n }\n\n return true;\n }\n\n private adaptEvent(\n event: AdaptedPointerEvent,\n tracker: PointerTracker\n ): void {\n if (\n tracker.getTrackedPointersCount() &&\n event.eventType === EventTypes.DOWN\n ) {\n event.eventType = EventTypes.ADDITIONAL_POINTER_DOWN;\n }\n\n if (\n tracker.getTrackedPointersCount() > 1 &&\n event.eventType === EventTypes.UP\n ) {\n event.eventType = EventTypes.ADDITIONAL_POINTER_UP;\n }\n }\n\n public getTimeDelta(): number {\n return this.currentTime + this.previousTime;\n }\n\n public getAnchorX(): number {\n return this.anchorX;\n }\n\n public getAnchorY(): number {\n return this.anchorY;\n }\n\n public getRotation(): number {\n return this.rotation;\n }\n}\n"]}
@@ -0,0 +1,156 @@
1
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+
3
+ import { DEFAULT_TOUCH_SLOP } from '../constants';
4
+ import { EventTypes } from '../interfaces';
5
+ export default class ScaleGestureDetector {
6
+ constructor(callbacks) {
7
+ _defineProperty(this, "onScaleBegin", void 0);
8
+
9
+ _defineProperty(this, "onScale", void 0);
10
+
11
+ _defineProperty(this, "onScaleEnd", void 0);
12
+
13
+ _defineProperty(this, "focusX", void 0);
14
+
15
+ _defineProperty(this, "focusY", void 0);
16
+
17
+ _defineProperty(this, "currentSpan", void 0);
18
+
19
+ _defineProperty(this, "prevSpan", void 0);
20
+
21
+ _defineProperty(this, "initialSpan", void 0);
22
+
23
+ _defineProperty(this, "currentTime", void 0);
24
+
25
+ _defineProperty(this, "prevTime", void 0);
26
+
27
+ _defineProperty(this, "inProgress", false);
28
+
29
+ _defineProperty(this, "spanSlop", void 0);
30
+
31
+ _defineProperty(this, "minSpan", void 0);
32
+
33
+ this.onScaleBegin = callbacks.onScaleBegin;
34
+ this.onScale = callbacks.onScale;
35
+ this.onScaleEnd = callbacks.onScaleEnd;
36
+ this.spanSlop = DEFAULT_TOUCH_SLOP * 2;
37
+ this.minSpan = 0;
38
+ }
39
+
40
+ onTouchEvent(event, tracker) {
41
+ this.adaptEvent(event, tracker);
42
+ this.currentTime = event.time;
43
+ const action = event.eventType;
44
+ const numOfPointers = tracker.getTrackedPointersCount();
45
+ const streamComplete = action === EventTypes.UP || action === EventTypes.ADDITIONAL_POINTER_UP || action === EventTypes.CANCEL;
46
+
47
+ if (action === EventTypes.DOWN || streamComplete) {
48
+ if (this.inProgress) {
49
+ this.onScaleEnd(this, event);
50
+ this.inProgress = false;
51
+ this.initialSpan = 0;
52
+ }
53
+
54
+ if (streamComplete) {
55
+ return true;
56
+ }
57
+ }
58
+
59
+ const configChanged = action === EventTypes.DOWN || action === EventTypes.ADDITIONAL_POINTER_UP || action === EventTypes.ADDITIONAL_POINTER_DOWN;
60
+ const pointerUp = action === EventTypes.ADDITIONAL_POINTER_UP;
61
+ const ignoredPointer = pointerUp ? event.pointerId : undefined; //Determine focal point
62
+
63
+ const div = pointerUp ? numOfPointers - 1 : numOfPointers;
64
+ const sumX = tracker.getSumX(ignoredPointer);
65
+ const sumY = tracker.getSumY(ignoredPointer);
66
+ const focusX = sumX / div;
67
+ const focusY = sumY / div; //Determine average deviation from focal point
68
+
69
+ let devSumX = 0;
70
+ let devSumY = 0;
71
+ tracker.getData().forEach((value, key) => {
72
+ if (key === ignoredPointer) {
73
+ return;
74
+ }
75
+
76
+ devSumX += Math.abs(value.lastX - focusX);
77
+ devSumY += Math.abs(value.lastY - focusY);
78
+ });
79
+ const devX = devSumX / div;
80
+ const devY = devSumY / div;
81
+ const spanX = devX * 2;
82
+ const spanY = devY * 2;
83
+ const span = Math.hypot(spanX, spanY); //Begin/end events
84
+
85
+ const wasInProgress = this.inProgress;
86
+ this.focusX = focusX;
87
+ this.focusY = focusY;
88
+
89
+ if (this.inProgress && (span < this.minSpan || configChanged)) {
90
+ this.onScaleEnd(this, event);
91
+ this.inProgress = false;
92
+ this.initialSpan = span;
93
+ }
94
+
95
+ if (configChanged) {
96
+ this.initialSpan = this.prevSpan = this.currentSpan = span;
97
+ }
98
+
99
+ if (!this.inProgress && span >= this.minSpan && (wasInProgress || Math.abs(span - this.initialSpan) > this.spanSlop)) {
100
+ this.prevSpan = this.currentSpan = span;
101
+ this.prevTime = this.currentTime;
102
+ this.inProgress = this.onScaleBegin(this);
103
+ } //Handle motion
104
+
105
+
106
+ if (action !== EventTypes.MOVE) {
107
+ return true;
108
+ }
109
+
110
+ this.currentSpan = span;
111
+
112
+ if (this.inProgress && !this.onScale(this, event)) {
113
+ return true;
114
+ }
115
+
116
+ this.prevSpan = this.currentSpan;
117
+ this.prevTime = this.currentTime;
118
+ return true;
119
+ }
120
+
121
+ adaptEvent(event, tracker) {
122
+ if (tracker.getTrackedPointersCount() > 1 && event.eventType === EventTypes.DOWN) {
123
+ event.eventType = EventTypes.ADDITIONAL_POINTER_DOWN;
124
+ }
125
+
126
+ if (tracker.getTrackedPointersCount() > 1 && event.eventType === EventTypes.UP) {
127
+ event.eventType = EventTypes.ADDITIONAL_POINTER_UP;
128
+ }
129
+ }
130
+
131
+ getCurrentSpan() {
132
+ return this.currentSpan;
133
+ }
134
+
135
+ getFocusX() {
136
+ return this.focusX;
137
+ }
138
+
139
+ getFocusY() {
140
+ return this.focusY;
141
+ }
142
+
143
+ getTimeDelta() {
144
+ return this.currentTime - this.prevTime;
145
+ }
146
+
147
+ getScaleFactor(numOfPointers) {
148
+ if (numOfPointers < 2) {
149
+ return 1;
150
+ }
151
+
152
+ return this.prevSpan > 0 ? this.currentSpan / this.prevSpan : 1;
153
+ }
154
+
155
+ }
156
+ //# sourceMappingURL=ScaleGestureDetector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["ScaleGestureDetector.ts"],"names":["DEFAULT_TOUCH_SLOP","EventTypes","ScaleGestureDetector","constructor","callbacks","onScaleBegin","onScale","onScaleEnd","spanSlop","minSpan","onTouchEvent","event","tracker","adaptEvent","currentTime","time","action","eventType","numOfPointers","getTrackedPointersCount","streamComplete","UP","ADDITIONAL_POINTER_UP","CANCEL","DOWN","inProgress","initialSpan","configChanged","ADDITIONAL_POINTER_DOWN","pointerUp","ignoredPointer","pointerId","undefined","div","sumX","getSumX","sumY","getSumY","focusX","focusY","devSumX","devSumY","getData","forEach","value","key","Math","abs","lastX","lastY","devX","devY","spanX","spanY","span","hypot","wasInProgress","prevSpan","currentSpan","prevTime","MOVE","getCurrentSpan","getFocusX","getFocusY","getTimeDelta","getScaleFactor"],"mappings":"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","sourcesContent":["import { DEFAULT_TOUCH_SLOP } from '../constants';\nimport { AdaptedPointerEvent, EventTypes } from '../interfaces';\n\nimport PointerTracker from '../tools/PointerTracker';\n\nexport interface ScaleGestureListener {\n onScaleBegin: (detector: ScaleGestureDetector) => boolean;\n onScale: (\n detector: ScaleGestureDetector,\n event: AdaptedPointerEvent\n ) => boolean;\n onScaleEnd: (\n detector: ScaleGestureDetector,\n event: AdaptedPointerEvent\n ) => void;\n}\n\nexport default class ScaleGestureDetector implements ScaleGestureListener {\n public onScaleBegin: (detector: ScaleGestureDetector) => boolean;\n public onScale: (\n detector: ScaleGestureDetector,\n event: AdaptedPointerEvent\n ) => boolean;\n public onScaleEnd: (\n detector: ScaleGestureDetector,\n event: AdaptedPointerEvent\n ) => void;\n\n private focusX!: number;\n private focusY!: number;\n\n private currentSpan!: number;\n private prevSpan!: number;\n private initialSpan!: number;\n\n private currentTime!: number;\n private prevTime!: number;\n\n private inProgress = false;\n\n private spanSlop: number;\n private minSpan: number;\n\n public constructor(callbacks: ScaleGestureListener) {\n this.onScaleBegin = callbacks.onScaleBegin;\n this.onScale = callbacks.onScale;\n this.onScaleEnd = callbacks.onScaleEnd;\n\n this.spanSlop = DEFAULT_TOUCH_SLOP * 2;\n this.minSpan = 0;\n }\n\n public onTouchEvent(\n event: AdaptedPointerEvent,\n tracker: PointerTracker\n ): boolean {\n this.adaptEvent(event, tracker);\n\n this.currentTime = event.time;\n\n const action: EventTypes = event.eventType;\n const numOfPointers = tracker.getTrackedPointersCount();\n\n const streamComplete: boolean =\n action === EventTypes.UP ||\n action === EventTypes.ADDITIONAL_POINTER_UP ||\n action === EventTypes.CANCEL;\n\n if (action === EventTypes.DOWN || streamComplete) {\n if (this.inProgress) {\n this.onScaleEnd(this, event);\n this.inProgress = false;\n this.initialSpan = 0;\n }\n\n if (streamComplete) {\n return true;\n }\n }\n\n const configChanged: boolean =\n action === EventTypes.DOWN ||\n action === EventTypes.ADDITIONAL_POINTER_UP ||\n action === EventTypes.ADDITIONAL_POINTER_DOWN;\n\n const pointerUp = action === EventTypes.ADDITIONAL_POINTER_UP;\n\n const ignoredPointer: number | undefined = pointerUp\n ? event.pointerId\n : undefined;\n\n //Determine focal point\n\n const div: number = pointerUp ? numOfPointers - 1 : numOfPointers;\n\n const sumX = tracker.getSumX(ignoredPointer);\n const sumY = tracker.getSumY(ignoredPointer);\n\n const focusX = sumX / div;\n const focusY = sumY / div;\n\n //Determine average deviation from focal point\n\n let devSumX = 0;\n let devSumY = 0;\n\n tracker.getData().forEach((value, key) => {\n if (key === ignoredPointer) {\n return;\n }\n\n devSumX += Math.abs(value.lastX - focusX);\n devSumY += Math.abs(value.lastY - focusY);\n });\n\n const devX: number = devSumX / div;\n const devY: number = devSumY / div;\n\n const spanX: number = devX * 2;\n const spanY: number = devY * 2;\n\n const span = Math.hypot(spanX, spanY);\n\n //Begin/end events\n const wasInProgress: boolean = this.inProgress;\n this.focusX = focusX;\n this.focusY = focusY;\n\n if (this.inProgress && (span < this.minSpan || configChanged)) {\n this.onScaleEnd(this, event);\n this.inProgress = false;\n this.initialSpan = span;\n }\n\n if (configChanged) {\n this.initialSpan = this.prevSpan = this.currentSpan = span;\n }\n\n if (\n !this.inProgress &&\n span >= this.minSpan &&\n (wasInProgress || Math.abs(span - this.initialSpan) > this.spanSlop)\n ) {\n this.prevSpan = this.currentSpan = span;\n this.prevTime = this.currentTime;\n this.inProgress = this.onScaleBegin(this);\n }\n\n //Handle motion\n if (action !== EventTypes.MOVE) {\n return true;\n }\n\n this.currentSpan = span;\n\n if (this.inProgress && !this.onScale(this, event)) {\n return true;\n }\n\n this.prevSpan = this.currentSpan;\n this.prevTime = this.currentTime;\n\n return true;\n }\n\n private adaptEvent(\n event: AdaptedPointerEvent,\n tracker: PointerTracker\n ): void {\n if (\n tracker.getTrackedPointersCount() > 1 &&\n event.eventType === EventTypes.DOWN\n ) {\n event.eventType = EventTypes.ADDITIONAL_POINTER_DOWN;\n }\n\n if (\n tracker.getTrackedPointersCount() > 1 &&\n event.eventType === EventTypes.UP\n ) {\n event.eventType = EventTypes.ADDITIONAL_POINTER_UP;\n }\n }\n\n public getCurrentSpan(): number {\n return this.currentSpan;\n }\n\n public getFocusX(): number {\n return this.focusX;\n }\n\n public getFocusY(): number {\n return this.focusY;\n }\n\n public getTimeDelta(): number {\n return this.currentTime - this.prevTime;\n }\n\n public getScaleFactor(numOfPointers: number): number {\n if (numOfPointers < 2) {\n return 1;\n }\n\n return this.prevSpan > 0 ? this.currentSpan / this.prevSpan : 1;\n }\n}\n"]}
@@ -0,0 +1,139 @@
1
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+
3
+ import { State } from '../../State';
4
+ import { Direction } from '../constants';
5
+ import GestureHandler from './GestureHandler';
6
+ const DEFAULT_MAX_DURATION_MS = 800;
7
+ const DEFAULT_MIN_ACCEPTABLE_DELTA = 160;
8
+ const DEFAULT_DIRECTION = Direction.RIGHT;
9
+ const DEFAULT_NUMBER_OF_TOUCHES_REQUIRED = 1;
10
+ export default class FlingGestureHandler extends GestureHandler {
11
+ constructor(...args) {
12
+ super(...args);
13
+
14
+ _defineProperty(this, "numberOfPointersRequired", DEFAULT_NUMBER_OF_TOUCHES_REQUIRED);
15
+
16
+ _defineProperty(this, "direction", DEFAULT_DIRECTION);
17
+
18
+ _defineProperty(this, "maxDurationMs", DEFAULT_MAX_DURATION_MS);
19
+
20
+ _defineProperty(this, "minAcceptableDelta", DEFAULT_MIN_ACCEPTABLE_DELTA);
21
+
22
+ _defineProperty(this, "delayTimeout", void 0);
23
+
24
+ _defineProperty(this, "startX", 0);
25
+
26
+ _defineProperty(this, "startY", 0);
27
+
28
+ _defineProperty(this, "maxNumberOfPointersSimultaneously", 0);
29
+ }
30
+
31
+ init(ref, propsRef) {
32
+ super.init(ref, propsRef);
33
+ }
34
+
35
+ updateGestureConfig({
36
+ enabled = true,
37
+ ...props
38
+ }) {
39
+ super.updateGestureConfig({
40
+ enabled: enabled,
41
+ ...props
42
+ });
43
+ this.enabled = enabled;
44
+
45
+ if (this.config.direction) {
46
+ this.direction = this.config.direction;
47
+ }
48
+
49
+ if (this.config.numberOfPointers) {
50
+ this.numberOfPointersRequired = this.config.numberOfPointers;
51
+ }
52
+ }
53
+
54
+ transformNativeEvent(event) {
55
+ return {
56
+ x: event.offsetX,
57
+ y: event.offsetY,
58
+ absoluteX: event.x,
59
+ absoluteY: event.y
60
+ };
61
+ }
62
+
63
+ startFling(event) {
64
+ this.startX = event.x;
65
+ this.startY = event.y;
66
+ this.begin(event);
67
+ this.maxNumberOfPointersSimultaneously = 1;
68
+ this.delayTimeout = setTimeout(() => this.fail(event), this.maxDurationMs);
69
+ }
70
+
71
+ tryEndFling(event) {
72
+ if (this.maxNumberOfPointersSimultaneously === this.numberOfPointersRequired && (this.direction & Direction.RIGHT && event.x - this.startX > this.minAcceptableDelta || this.direction & Direction.LEFT && this.startX - event.x > this.minAcceptableDelta || this.direction & Direction.UP && this.startY - event.y > this.minAcceptableDelta || this.direction & Direction.DOWN && event.y - this.startY > this.minAcceptableDelta)) {
73
+ clearTimeout(this.delayTimeout);
74
+ this.activate(event);
75
+ return true;
76
+ }
77
+
78
+ return false;
79
+ }
80
+
81
+ endFling(event) {
82
+ if (!this.tryEndFling(event)) {
83
+ this.fail(event);
84
+ }
85
+ }
86
+
87
+ onPointerDown(event) {
88
+ super.onPointerDown(event);
89
+ this.tracker.addToTracker(event);
90
+
91
+ if (this.currentState === State.UNDETERMINED) {
92
+ this.startFling(event);
93
+ }
94
+
95
+ if (this.currentState !== State.BEGAN) {
96
+ return;
97
+ }
98
+
99
+ this.tryEndFling(event);
100
+
101
+ if (this.tracker.getTrackedPointersCount() > this.maxNumberOfPointersSimultaneously) {
102
+ this.maxNumberOfPointersSimultaneously = this.tracker.getTrackedPointersCount();
103
+ }
104
+ }
105
+
106
+ onPointerMove(event) {
107
+ this.tracker.track(event);
108
+
109
+ if (this.currentState !== State.BEGAN) {
110
+ return;
111
+ }
112
+
113
+ this.tryEndFling(event);
114
+ super.onPointerMove(event);
115
+ }
116
+
117
+ onPointerUp(event) {
118
+ this.tracker.removeFromTracker(event.pointerId);
119
+
120
+ if (this.currentState !== State.BEGAN) {
121
+ return;
122
+ }
123
+
124
+ this.endFling(event);
125
+ }
126
+
127
+ activate(event, force) {
128
+ super.activate(event, force);
129
+ this.end(event);
130
+ }
131
+
132
+ resetConfig() {
133
+ super.resetConfig();
134
+ this.numberOfPointersRequired = DEFAULT_NUMBER_OF_TOUCHES_REQUIRED;
135
+ this.direction = DEFAULT_DIRECTION;
136
+ }
137
+
138
+ }
139
+ //# sourceMappingURL=FlingGestureHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["FlingGestureHandler.ts"],"names":["State","Direction","GestureHandler","DEFAULT_MAX_DURATION_MS","DEFAULT_MIN_ACCEPTABLE_DELTA","DEFAULT_DIRECTION","RIGHT","DEFAULT_NUMBER_OF_TOUCHES_REQUIRED","FlingGestureHandler","init","ref","propsRef","updateGestureConfig","enabled","props","config","direction","numberOfPointers","numberOfPointersRequired","transformNativeEvent","event","x","offsetX","y","offsetY","absoluteX","absoluteY","startFling","startX","startY","begin","maxNumberOfPointersSimultaneously","delayTimeout","setTimeout","fail","maxDurationMs","tryEndFling","minAcceptableDelta","LEFT","UP","DOWN","clearTimeout","activate","endFling","onPointerDown","tracker","addToTracker","currentState","UNDETERMINED","BEGAN","getTrackedPointersCount","onPointerMove","track","onPointerUp","removeFromTracker","pointerId","force","end","resetConfig"],"mappings":";;AAAA,SAASA,KAAT,QAAsB,aAAtB;AACA,SAASC,SAAT,QAA0B,cAA1B;AAGA,OAAOC,cAAP,MAA2B,kBAA3B;AAEA,MAAMC,uBAAuB,GAAG,GAAhC;AACA,MAAMC,4BAA4B,GAAG,GAArC;AACA,MAAMC,iBAAiB,GAAGJ,SAAS,CAACK,KAApC;AACA,MAAMC,kCAAkC,GAAG,CAA3C;AAEA,eAAe,MAAMC,mBAAN,SAAkCN,cAAlC,CAAiD;AAAA;AAAA;;AAAA,sDAC3BK,kCAD2B;;AAAA,uCAE1CF,iBAF0C;;AAAA,2CAItCF,uBAJsC;;AAAA,gDAKjCC,4BALiC;;AAAA;;AAAA,oCAQ7C,CAR6C;;AAAA,oCAS7C,CAT6C;;AAAA,+DAWlB,CAXkB;AAAA;;AAavDK,EAAAA,IAAI,CAACC,GAAD,EAAcC,QAAd,EAAwD;AACjE,UAAMF,IAAN,CAAWC,GAAX,EAAgBC,QAAhB;AACD;;AAEMC,EAAAA,mBAAmB,CAAC;AAAEC,IAAAA,OAAO,GAAG,IAAZ;AAAkB,OAAGC;AAArB,GAAD,EAAqC;AAC7D,UAAMF,mBAAN,CAA0B;AAAEC,MAAAA,OAAO,EAAEA,OAAX;AAAoB,SAAGC;AAAvB,KAA1B;AAEA,SAAKD,OAAL,GAAeA,OAAf;;AAEA,QAAI,KAAKE,MAAL,CAAYC,SAAhB,EAA2B;AACzB,WAAKA,SAAL,GAAiB,KAAKD,MAAL,CAAYC,SAA7B;AACD;;AAED,QAAI,KAAKD,MAAL,CAAYE,gBAAhB,EAAkC;AAChC,WAAKC,wBAAL,GAAgC,KAAKH,MAAL,CAAYE,gBAA5C;AACD;AACF;;AAESE,EAAAA,oBAAoB,CAACC,KAAD,EAA6B;AACzD,WAAO;AACLC,MAAAA,CAAC,EAAED,KAAK,CAACE,OADJ;AAELC,MAAAA,CAAC,EAAEH,KAAK,CAACI,OAFJ;AAGLC,MAAAA,SAAS,EAAEL,KAAK,CAACC,CAHZ;AAILK,MAAAA,SAAS,EAAEN,KAAK,CAACG;AAJZ,KAAP;AAMD;;AAEOI,EAAAA,UAAU,CAACP,KAAD,EAAmC;AACnD,SAAKQ,MAAL,GAAcR,KAAK,CAACC,CAApB;AACA,SAAKQ,MAAL,GAAcT,KAAK,CAACG,CAApB;AAEA,SAAKO,KAAL,CAAWV,KAAX;AAEA,SAAKW,iCAAL,GAAyC,CAAzC;AAEA,SAAKC,YAAL,GAAoBC,UAAU,CAAC,MAAM,KAAKC,IAAL,CAAUd,KAAV,CAAP,EAAyB,KAAKe,aAA9B,CAA9B;AACD;;AAEOC,EAAAA,WAAW,CAAChB,KAAD,EAAsC;AACvD,QACE,KAAKW,iCAAL,KACE,KAAKb,wBADP,KAEE,KAAKF,SAAL,GAAiBf,SAAS,CAACK,KAA3B,IACAc,KAAK,CAACC,CAAN,GAAU,KAAKO,MAAf,GAAwB,KAAKS,kBAD9B,IAEE,KAAKrB,SAAL,GAAiBf,SAAS,CAACqC,IAA3B,IACC,KAAKV,MAAL,GAAcR,KAAK,CAACC,CAApB,GAAwB,KAAKgB,kBAHhC,IAIE,KAAKrB,SAAL,GAAiBf,SAAS,CAACsC,EAA3B,IACC,KAAKV,MAAL,GAAcT,KAAK,CAACG,CAApB,GAAwB,KAAKc,kBALhC,IAME,KAAKrB,SAAL,GAAiBf,SAAS,CAACuC,IAA3B,IACCpB,KAAK,CAACG,CAAN,GAAU,KAAKM,MAAf,GAAwB,KAAKQ,kBATjC,CADF,EAWE;AACAI,MAAAA,YAAY,CAAC,KAAKT,YAAN,CAAZ;AACA,WAAKU,QAAL,CAActB,KAAd;AAEA,aAAO,IAAP;AACD;;AAED,WAAO,KAAP;AACD;;AAEOuB,EAAAA,QAAQ,CAACvB,KAAD,EAA6B;AAC3C,QAAI,CAAC,KAAKgB,WAAL,CAAiBhB,KAAjB,CAAL,EAA8B;AAC5B,WAAKc,IAAL,CAAUd,KAAV;AACD;AACF;;AAESwB,EAAAA,aAAa,CAACxB,KAAD,EAAmC;AACxD,UAAMwB,aAAN,CAAoBxB,KAApB;AAEA,SAAKyB,OAAL,CAAaC,YAAb,CAA0B1B,KAA1B;;AAEA,QAAI,KAAK2B,YAAL,KAAsB/C,KAAK,CAACgD,YAAhC,EAA8C;AAC5C,WAAKrB,UAAL,CAAgBP,KAAhB;AACD;;AAED,QAAI,KAAK2B,YAAL,KAAsB/C,KAAK,CAACiD,KAAhC,EAAuC;AACrC;AACD;;AAED,SAAKb,WAAL,CAAiBhB,KAAjB;;AAEA,QACE,KAAKyB,OAAL,CAAaK,uBAAb,KACA,KAAKnB,iCAFP,EAGE;AACA,WAAKA,iCAAL,GAAyC,KAAKc,OAAL,CAAaK,uBAAb,EAAzC;AACD;AACF;;AAESC,EAAAA,aAAa,CAAC/B,KAAD,EAAmC;AACxD,SAAKyB,OAAL,CAAaO,KAAb,CAAmBhC,KAAnB;;AAEA,QAAI,KAAK2B,YAAL,KAAsB/C,KAAK,CAACiD,KAAhC,EAAuC;AACrC;AACD;;AAED,SAAKb,WAAL,CAAiBhB,KAAjB;AAEA,UAAM+B,aAAN,CAAoB/B,KAApB;AACD;;AAESiC,EAAAA,WAAW,CAACjC,KAAD,EAAmC;AACtD,SAAKyB,OAAL,CAAaS,iBAAb,CAA+BlC,KAAK,CAACmC,SAArC;;AAEA,QAAI,KAAKR,YAAL,KAAsB/C,KAAK,CAACiD,KAAhC,EAAuC;AACrC;AACD;;AAED,SAAKN,QAAL,CAAcvB,KAAd;AACD;;AAESsB,EAAAA,QAAQ,CAACtB,KAAD,EAA6BoC,KAA7B,EAAoD;AACpE,UAAMd,QAAN,CAAetB,KAAf,EAAsBoC,KAAtB;AACA,SAAKC,GAAL,CAASrC,KAAT;AACD;;AAESsC,EAAAA,WAAW,GAAS;AAC5B,UAAMA,WAAN;AACA,SAAKxC,wBAAL,GAAgCX,kCAAhC;AACA,SAAKS,SAAL,GAAiBX,iBAAjB;AACD;;AArI6D","sourcesContent":["import { State } from '../../State';\nimport { Direction } from '../constants';\nimport { AdaptedPointerEvent } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\n\nconst DEFAULT_MAX_DURATION_MS = 800;\nconst DEFAULT_MIN_ACCEPTABLE_DELTA = 160;\nconst DEFAULT_DIRECTION = Direction.RIGHT;\nconst DEFAULT_NUMBER_OF_TOUCHES_REQUIRED = 1;\n\nexport default class FlingGestureHandler extends GestureHandler {\n private numberOfPointersRequired = DEFAULT_NUMBER_OF_TOUCHES_REQUIRED;\n private direction = DEFAULT_DIRECTION;\n\n private maxDurationMs = DEFAULT_MAX_DURATION_MS;\n private minAcceptableDelta = DEFAULT_MIN_ACCEPTABLE_DELTA;\n private delayTimeout!: number;\n\n private startX = 0;\n private startY = 0;\n\n private maxNumberOfPointersSimultaneously = 0;\n\n public init(ref: number, propsRef: React.RefObject<unknown>): void {\n super.init(ref, propsRef);\n }\n\n public updateGestureConfig({ enabled = true, ...props }): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n\n this.enabled = enabled;\n\n if (this.config.direction) {\n this.direction = this.config.direction;\n }\n\n if (this.config.numberOfPointers) {\n this.numberOfPointersRequired = this.config.numberOfPointers;\n }\n }\n\n protected transformNativeEvent(event: AdaptedPointerEvent) {\n return {\n x: event.offsetX,\n y: event.offsetY,\n absoluteX: event.x,\n absoluteY: event.y,\n };\n }\n\n private startFling(event: AdaptedPointerEvent): void {\n this.startX = event.x;\n this.startY = event.y;\n\n this.begin(event);\n\n this.maxNumberOfPointersSimultaneously = 1;\n\n this.delayTimeout = setTimeout(() => this.fail(event), this.maxDurationMs);\n }\n\n private tryEndFling(event: AdaptedPointerEvent): boolean {\n if (\n this.maxNumberOfPointersSimultaneously ===\n this.numberOfPointersRequired &&\n ((this.direction & Direction.RIGHT &&\n event.x - this.startX > this.minAcceptableDelta) ||\n (this.direction & Direction.LEFT &&\n this.startX - event.x > this.minAcceptableDelta) ||\n (this.direction & Direction.UP &&\n this.startY - event.y > this.minAcceptableDelta) ||\n (this.direction & Direction.DOWN &&\n event.y - this.startY > this.minAcceptableDelta))\n ) {\n clearTimeout(this.delayTimeout);\n this.activate(event);\n\n return true;\n }\n\n return false;\n }\n\n private endFling(event: AdaptedPointerEvent) {\n if (!this.tryEndFling(event)) {\n this.fail(event);\n }\n }\n\n protected onPointerDown(event: AdaptedPointerEvent): void {\n super.onPointerDown(event);\n\n this.tracker.addToTracker(event);\n\n if (this.currentState === State.UNDETERMINED) {\n this.startFling(event);\n }\n\n if (this.currentState !== State.BEGAN) {\n return;\n }\n\n this.tryEndFling(event);\n\n if (\n this.tracker.getTrackedPointersCount() >\n this.maxNumberOfPointersSimultaneously\n ) {\n this.maxNumberOfPointersSimultaneously = this.tracker.getTrackedPointersCount();\n }\n }\n\n protected onPointerMove(event: AdaptedPointerEvent): void {\n this.tracker.track(event);\n\n if (this.currentState !== State.BEGAN) {\n return;\n }\n\n this.tryEndFling(event);\n\n super.onPointerMove(event);\n }\n\n protected onPointerUp(event: AdaptedPointerEvent): void {\n this.tracker.removeFromTracker(event.pointerId);\n\n if (this.currentState !== State.BEGAN) {\n return;\n }\n\n this.endFling(event);\n }\n\n protected activate(event: AdaptedPointerEvent, force?: boolean): void {\n super.activate(event, force);\n this.end(event);\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n this.numberOfPointersRequired = DEFAULT_NUMBER_OF_TOUCHES_REQUIRED;\n this.direction = DEFAULT_DIRECTION;\n }\n}\n"]}