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
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _interfaces = require("../interfaces");
9
+
10
+ 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; }
11
+
12
+ class EventManager {
13
+ constructor(view) {
14
+ _defineProperty(this, "activePointers", []);
15
+
16
+ _defineProperty(this, "view", void 0);
17
+
18
+ this.view = view;
19
+ }
20
+
21
+ setListeners() {
22
+ this.view.addEventListener('pointerdown', event => {
23
+ if (!this.isPointerInBounds({
24
+ x: event.clientX,
25
+ y: event.clientY
26
+ })) {
27
+ return;
28
+ }
29
+
30
+ const adaptedEvent = this.mapEvent(event, _interfaces.EventTypes.DOWN);
31
+ const target = event.target;
32
+ target.setPointerCapture(adaptedEvent.pointerId);
33
+ this.addActivePointer(adaptedEvent.pointerId);
34
+ this.onPointerDown(adaptedEvent);
35
+ });
36
+ this.view.addEventListener('pointerup', event => {
37
+ const adaptedEvent = this.mapEvent(event, _interfaces.EventTypes.UP);
38
+ const target = event.target;
39
+ this.onPointerUp(adaptedEvent);
40
+ target.releasePointerCapture(adaptedEvent.pointerId);
41
+ this.removeActivePointer(adaptedEvent.pointerId);
42
+ });
43
+ this.view.addEventListener('pointermove', event => {
44
+ if (event.pointerType === 'mouse' && event.buttons !== _interfaces.MouseButtons.LEFT) {
45
+ return;
46
+ }
47
+
48
+ const adaptedEvent = this.mapEvent(event, _interfaces.EventTypes.MOVE);
49
+ const inBounds = this.isPointerInBounds({
50
+ x: adaptedEvent.x,
51
+ y: adaptedEvent.y
52
+ });
53
+ const pointerIndex = this.activePointers.indexOf(adaptedEvent.pointerId);
54
+
55
+ if (inBounds) {
56
+ if (pointerIndex < 0) {
57
+ adaptedEvent.eventType = _interfaces.EventTypes.ENTER;
58
+ this.onPointerEnter(adaptedEvent);
59
+ this.addActivePointer(adaptedEvent.pointerId);
60
+ } else {
61
+ this.onPointerMove(adaptedEvent);
62
+ }
63
+ } else {
64
+ if (pointerIndex >= 0) {
65
+ adaptedEvent.eventType = _interfaces.EventTypes.OUT;
66
+ this.onPointerOut(adaptedEvent);
67
+ this.removeActivePointer(adaptedEvent.pointerId);
68
+ } else {
69
+ this.onPointerOutOfBounds(adaptedEvent);
70
+ }
71
+ }
72
+ });
73
+ this.view.addEventListener('pointercancel', event => {
74
+ event.preventDefault();
75
+ const adaptedEvent = this.mapEvent(event, _interfaces.EventTypes.CANCEL);
76
+ this.onPointerCancel(adaptedEvent);
77
+ });
78
+ }
79
+
80
+ onPointerDown(_event) {}
81
+
82
+ onPointerUp(_event) {}
83
+
84
+ onPointerMove(_event) {}
85
+
86
+ onPointerOut(_event) {}
87
+
88
+ onPointerEnter(_event) {}
89
+
90
+ onPointerCancel(_event) {}
91
+
92
+ onPointerOutOfBounds(_event) {}
93
+
94
+ setOnPointerDown(callback) {
95
+ this.onPointerDown = callback;
96
+ }
97
+
98
+ setOnPointerUp(callback) {
99
+ this.onPointerUp = callback;
100
+ }
101
+
102
+ setOnPointerMove(callback) {
103
+ this.onPointerMove = callback;
104
+ }
105
+
106
+ setOnPointerOut(callback) {
107
+ this.onPointerOut = callback;
108
+ }
109
+
110
+ setOnPointerEnter(callback) {
111
+ this.onPointerEnter = callback;
112
+ }
113
+
114
+ setOnPointerCancel(callback) {
115
+ this.onPointerCancel = callback;
116
+ }
117
+
118
+ setOnPointerOutOfBounds(callback) {
119
+ this.onPointerOutOfBounds = callback;
120
+ }
121
+
122
+ mapEvent(event, eventType) {
123
+ return {
124
+ x: event.clientX,
125
+ y: event.clientY,
126
+ offsetX: event.offsetX,
127
+ offsetY: event.offsetY,
128
+ pointerId: event.pointerId,
129
+ eventType: eventType,
130
+ pointerType: event.pointerType,
131
+ buttons: event.buttons,
132
+ time: event.timeStamp
133
+ };
134
+ }
135
+
136
+ isPointerInBounds({
137
+ x,
138
+ y
139
+ }) {
140
+ if (!this.view) {
141
+ return false;
142
+ }
143
+
144
+ const rect = this.view.getBoundingClientRect();
145
+ return x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom;
146
+ }
147
+
148
+ addActivePointer(pointerId) {
149
+ if (this.activePointers.indexOf(pointerId) >= 0) {
150
+ return;
151
+ }
152
+
153
+ this.activePointers.push(pointerId);
154
+ }
155
+
156
+ removeActivePointer(pointerId) {
157
+ const index = this.activePointers.indexOf(pointerId);
158
+
159
+ if (index < 0) {
160
+ return;
161
+ }
162
+
163
+ this.activePointers.splice(index, 1);
164
+ }
165
+
166
+ }
167
+
168
+ exports.default = EventManager;
169
+ //# sourceMappingURL=EventManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["EventManager.ts"],"names":["EventManager","constructor","view","setListeners","addEventListener","event","isPointerInBounds","x","clientX","y","clientY","adaptedEvent","mapEvent","EventTypes","DOWN","target","setPointerCapture","pointerId","addActivePointer","onPointerDown","UP","onPointerUp","releasePointerCapture","removeActivePointer","pointerType","buttons","MouseButtons","LEFT","MOVE","inBounds","pointerIndex","activePointers","indexOf","eventType","ENTER","onPointerEnter","onPointerMove","OUT","onPointerOut","onPointerOutOfBounds","preventDefault","CANCEL","onPointerCancel","_event","setOnPointerDown","callback","setOnPointerUp","setOnPointerMove","setOnPointerOut","setOnPointerEnter","setOnPointerCancel","setOnPointerOutOfBounds","offsetX","offsetY","time","timeStamp","rect","getBoundingClientRect","left","right","top","bottom","push","index","splice"],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\n\nimport { EventTypes, AdaptedPointerEvent, MouseButtons } from '../interfaces';\n\nexport default class EventManager {\n private activePointers: number[] = [];\n private readonly view: HTMLElement;\n\n constructor(view: HTMLElement) {\n this.view = view;\n }\n\n public setListeners() {\n this.view.addEventListener('pointerdown', (event: PointerEvent): void => {\n if (\n !this.isPointerInBounds({\n x: event.clientX,\n y: event.clientY,\n })\n ) {\n return;\n }\n\n const adaptedEvent: AdaptedPointerEvent = this.mapEvent(\n event,\n EventTypes.DOWN\n );\n const target = event.target as HTMLElement;\n\n target.setPointerCapture(adaptedEvent.pointerId);\n this.addActivePointer(adaptedEvent.pointerId);\n this.onPointerDown(adaptedEvent);\n });\n\n this.view.addEventListener('pointerup', (event: PointerEvent): void => {\n const adaptedEvent: AdaptedPointerEvent = this.mapEvent(\n event,\n EventTypes.UP\n );\n const target = event.target as HTMLElement;\n\n this.onPointerUp(adaptedEvent);\n target.releasePointerCapture(adaptedEvent.pointerId);\n this.removeActivePointer(adaptedEvent.pointerId);\n });\n\n this.view.addEventListener('pointermove', (event: PointerEvent): void => {\n if (\n event.pointerType === 'mouse' &&\n event.buttons !== MouseButtons.LEFT\n ) {\n return;\n }\n\n const adaptedEvent: AdaptedPointerEvent = this.mapEvent(\n event,\n EventTypes.MOVE\n );\n\n const inBounds: boolean = this.isPointerInBounds({\n x: adaptedEvent.x,\n y: adaptedEvent.y,\n });\n\n const pointerIndex: number = this.activePointers.indexOf(\n adaptedEvent.pointerId\n );\n\n if (inBounds) {\n if (pointerIndex < 0) {\n adaptedEvent.eventType = EventTypes.ENTER;\n this.onPointerEnter(adaptedEvent);\n this.addActivePointer(adaptedEvent.pointerId);\n } else {\n this.onPointerMove(adaptedEvent);\n }\n } else {\n if (pointerIndex >= 0) {\n adaptedEvent.eventType = EventTypes.OUT;\n this.onPointerOut(adaptedEvent);\n this.removeActivePointer(adaptedEvent.pointerId);\n } else {\n this.onPointerOutOfBounds(adaptedEvent);\n }\n }\n });\n\n this.view.addEventListener('pointercancel', (event: PointerEvent): void => {\n event.preventDefault();\n\n const adaptedEvent: AdaptedPointerEvent = this.mapEvent(\n event,\n EventTypes.CANCEL\n );\n\n this.onPointerCancel(adaptedEvent);\n });\n }\n\n private onPointerDown(_event: AdaptedPointerEvent): void {}\n private onPointerUp(_event: AdaptedPointerEvent): void {}\n private onPointerMove(_event: AdaptedPointerEvent): void {}\n private onPointerOut(_event: AdaptedPointerEvent): void {}\n private onPointerEnter(_event: AdaptedPointerEvent): void {}\n private onPointerCancel(_event: AdaptedPointerEvent): void {}\n private onPointerOutOfBounds(_event: AdaptedPointerEvent): void {}\n\n public setOnPointerDown(\n callback: (event: AdaptedPointerEvent) => void\n ): void {\n this.onPointerDown = callback;\n }\n public setOnPointerUp(callback: (event: AdaptedPointerEvent) => void): void {\n this.onPointerUp = callback;\n }\n public setOnPointerMove(\n callback: (event: AdaptedPointerEvent) => void\n ): void {\n this.onPointerMove = callback;\n }\n public setOnPointerOut(callback: (event: AdaptedPointerEvent) => void): void {\n this.onPointerOut = callback;\n }\n public setOnPointerEnter(\n callback: (event: AdaptedPointerEvent) => void\n ): void {\n this.onPointerEnter = callback;\n }\n public setOnPointerCancel(\n callback: (event: AdaptedPointerEvent) => void\n ): void {\n this.onPointerCancel = callback;\n }\n public setOnPointerOutOfBounds(\n callback: (event: AdaptedPointerEvent) => void\n ): void {\n this.onPointerOutOfBounds = callback;\n }\n\n private mapEvent(\n event: PointerEvent,\n eventType: EventTypes\n ): AdaptedPointerEvent {\n return {\n x: event.clientX,\n y: event.clientY,\n offsetX: event.offsetX,\n offsetY: event.offsetY,\n pointerId: event.pointerId,\n eventType: eventType,\n pointerType: event.pointerType,\n buttons: event.buttons,\n time: event.timeStamp,\n };\n }\n\n public isPointerInBounds({ x, y }: { x: number; y: number }): boolean {\n if (!this.view) {\n return false;\n }\n\n const rect: DOMRect = this.view.getBoundingClientRect();\n\n return (\n x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom\n );\n }\n\n private addActivePointer(pointerId: number): void {\n if (this.activePointers.indexOf(pointerId) >= 0) {\n return;\n }\n\n this.activePointers.push(pointerId);\n }\n\n private removeActivePointer(pointerId: number): void {\n const index: number = this.activePointers.indexOf(pointerId);\n\n if (index < 0) {\n return;\n }\n\n this.activePointers.splice(index, 1);\n }\n}\n"]}
@@ -0,0 +1,283 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _State = require("../../State");
9
+
10
+ var _PointerTracker = _interopRequireDefault(require("./PointerTracker"));
11
+
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+
14
+ 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; }
15
+
16
+ class GestureHandlerOrchestrator {
17
+ // Private beacuse of Singleton
18
+ // eslint-disable-next-line no-useless-constructor, @typescript-eslint/no-empty-function
19
+ constructor() {
20
+ _defineProperty(this, "gestureHandlers", []);
21
+
22
+ _defineProperty(this, "awaitingHandlers", []);
23
+
24
+ _defineProperty(this, "handlersToCancel", []);
25
+
26
+ _defineProperty(this, "handlingChangeSemaphore", 0);
27
+
28
+ _defineProperty(this, "activationIndex", 0);
29
+ }
30
+
31
+ scheduleFinishedHandlersCleanup() {
32
+ if (this.handlingChangeSemaphore === 0) {
33
+ this.cleanupFinishedHandlers();
34
+ }
35
+ }
36
+
37
+ cleanHandler(handler) {
38
+ handler.reset();
39
+ handler.setActive(false);
40
+ handler.setAwaiting(false);
41
+ handler.setActivationIndex(Number.MAX_VALUE);
42
+ }
43
+
44
+ cleanupFinishedHandlers() {
45
+ for (let i = this.gestureHandlers.length - 1; i >= 0; --i) {
46
+ const handler = this.gestureHandlers[i];
47
+
48
+ if (!handler) {
49
+ continue;
50
+ }
51
+
52
+ if (this.isFinished(handler.getState()) && !handler.isAwaiting()) {
53
+ this.gestureHandlers.splice(i, 1);
54
+ this.cleanHandler(handler);
55
+ }
56
+ }
57
+ }
58
+
59
+ hasOtherHandlerToWaitFor(handler) {
60
+ let hasToWait = false;
61
+ this.gestureHandlers.forEach(otherHandler => {
62
+ if (otherHandler && !this.isFinished(otherHandler.getState()) && this.shouldHandlerWaitForOther(handler, otherHandler)) {
63
+ hasToWait = true;
64
+ return;
65
+ }
66
+ });
67
+ return hasToWait;
68
+ }
69
+
70
+ tryActivate(handler, event) {
71
+ if (this.hasOtherHandlerToWaitFor(handler)) {
72
+ this.addAwaitingHandler(handler);
73
+ } else {
74
+ this.makeActive(handler, event);
75
+ }
76
+ }
77
+
78
+ cleanupAwaitingHandlers(handler) {
79
+ for (let i = 0; i < this.awaitingHandlers.length; ++i) {
80
+ if (!this.awaitingHandlers[i].isAwaiting() && this.shouldHandlerWaitForOther(this.awaitingHandlers[i], handler)) {
81
+ this.cleanHandler(this.awaitingHandlers[i]);
82
+ this.awaitingHandlers.splice(i, 1);
83
+ }
84
+ }
85
+ }
86
+
87
+ onHandlerStateChange(handler, newState, oldState, event) {
88
+ this.handlingChangeSemaphore += 1;
89
+
90
+ if (this.isFinished(newState)) {
91
+ this.awaitingHandlers.forEach(otherHandler => {
92
+ if (this.shouldHandlerWaitForOther(otherHandler, handler)) {
93
+ if (newState === _State.State.END) {
94
+ otherHandler === null || otherHandler === void 0 ? void 0 : otherHandler.cancel(event);
95
+ otherHandler === null || otherHandler === void 0 ? void 0 : otherHandler.setAwaiting(false);
96
+ } else {
97
+ this.tryActivate(otherHandler, event);
98
+ }
99
+ }
100
+ });
101
+ }
102
+
103
+ if (newState === _State.State.ACTIVE) {
104
+ this.tryActivate(handler, event);
105
+ } else if (oldState === _State.State.ACTIVE || oldState === _State.State.END) {
106
+ if (handler.isActive()) {
107
+ handler.sendEvent(event, newState, oldState);
108
+ } else if (oldState === _State.State.ACTIVE) {
109
+ handler.sendEvent(event, newState, _State.State.BEGAN);
110
+ }
111
+ } else if (oldState !== _State.State.UNDETERMINED || newState !== _State.State.CANCELLED) {
112
+ handler.sendEvent(event, newState, oldState);
113
+ }
114
+
115
+ this.handlingChangeSemaphore -= 1;
116
+ this.scheduleFinishedHandlersCleanup();
117
+
118
+ if (this.awaitingHandlers.indexOf(handler) < 0) {
119
+ this.cleanupAwaitingHandlers(handler);
120
+ }
121
+ }
122
+
123
+ makeActive(handler, event) {
124
+ const currentState = handler.getState();
125
+ handler.setActive(true);
126
+ handler.setShouldResetProgress(true);
127
+ handler.setActivationIndex(this.activationIndex++);
128
+ this.gestureHandlers.forEach(otherHandler => {
129
+ // Order of arguments is correct - we check whether current handler should cancel existing handlers
130
+ if (this.shouldHandlerBeCancelledBy(otherHandler, handler)) {
131
+ this.handlersToCancel.push(otherHandler);
132
+ }
133
+ });
134
+
135
+ for (let i = this.handlersToCancel.length - 1; i >= 0; --i) {
136
+ var _this$handlersToCance;
137
+
138
+ (_this$handlersToCance = this.handlersToCancel[i]) === null || _this$handlersToCance === void 0 ? void 0 : _this$handlersToCance.cancel(event);
139
+ }
140
+
141
+ this.awaitingHandlers.forEach(otherHandler => {
142
+ if (this.shouldHandlerBeCancelledBy(otherHandler, handler)) {
143
+ otherHandler === null || otherHandler === void 0 ? void 0 : otherHandler.cancel(event);
144
+ otherHandler === null || otherHandler === void 0 ? void 0 : otherHandler.setAwaiting(true);
145
+ }
146
+ });
147
+ handler.sendEvent(event, _State.State.ACTIVE, _State.State.BEGAN);
148
+
149
+ if (currentState !== _State.State.ACTIVE) {
150
+ handler.sendEvent(event, _State.State.END, _State.State.ACTIVE);
151
+
152
+ if (currentState !== _State.State.END) {
153
+ handler.sendEvent(event, _State.State.UNDETERMINED, _State.State.END);
154
+ }
155
+ }
156
+
157
+ if (handler.isAwaiting()) {
158
+ handler.setAwaiting(false);
159
+ handler.end(event);
160
+ }
161
+
162
+ this.handlersToCancel = [];
163
+ }
164
+
165
+ addAwaitingHandler(handler) {
166
+ let alreadyExists = false;
167
+ this.awaitingHandlers.forEach(otherHandler => {
168
+ if (otherHandler === handler) {
169
+ alreadyExists = true;
170
+ return;
171
+ }
172
+ });
173
+
174
+ if (alreadyExists) {
175
+ return;
176
+ }
177
+
178
+ this.awaitingHandlers.push(handler);
179
+ handler.setAwaiting(true);
180
+ handler.setActivationIndex(this.activationIndex++);
181
+ }
182
+
183
+ recordHandlerIfNotPresent(handler) {
184
+ let alreadyExists = false;
185
+ this.gestureHandlers.forEach(otherHandler => {
186
+ if (otherHandler === handler) {
187
+ alreadyExists = true;
188
+ return;
189
+ }
190
+ });
191
+
192
+ if (alreadyExists) {
193
+ return;
194
+ }
195
+
196
+ this.gestureHandlers.push(handler);
197
+ handler.setActive(false);
198
+ handler.setAwaiting(false);
199
+ handler.setActivationIndex(Number.MAX_SAFE_INTEGER);
200
+ }
201
+
202
+ shouldHandlerWaitForOther(handler, otherHandler) {
203
+ return handler !== otherHandler && (handler.shouldWaitForHandlerFailure(otherHandler) || otherHandler.shouldRequireToWaitForFailure(handler));
204
+ }
205
+
206
+ canRunSimultaneously(gh1, gh2) {
207
+ return gh1 === gh2 || gh1.shouldRecognizeSimultaneously(gh2) || gh2.shouldRecognizeSimultaneously(gh1);
208
+ }
209
+
210
+ shouldHandlerBeCancelledBy(handler, otherHandler) {
211
+ const handlerPointers = handler.getTrackedPointersID();
212
+ const otherPointers = otherHandler.getTrackedPointersID();
213
+
214
+ if (!_PointerTracker.default.shareCommonPointers(handlerPointers, otherPointers) && handler.getView() !== otherHandler.getView()) {
215
+ return this.checkOverlap(handler, otherHandler);
216
+ }
217
+
218
+ if (this.canRunSimultaneously(handler, otherHandler)) {
219
+ return false;
220
+ }
221
+
222
+ if (handler !== otherHandler && (handler.isAwaiting() || handler.getState() === _State.State.ACTIVE)) {
223
+ // For now it always returns false
224
+ return handler.shouldBeCancelledByOther(otherHandler);
225
+ }
226
+
227
+ return true;
228
+ }
229
+
230
+ checkOverlap(handler, otherHandler) {
231
+ // If handlers don't have common pointers, default return value is false.
232
+ // However, if at least on pointer overlaps with both handlers, we return true
233
+ // This solves issue in overlapping parents example
234
+ // TODO: Find better way to handle that issue, for example by activation order and handler cancelling
235
+ const handlerPointers = handler.getTrackedPointersID();
236
+ const otherPointers = otherHandler.getTrackedPointersID();
237
+ let overlap = false;
238
+ handlerPointers.forEach(pointer => {
239
+ const handlerX = handler.getTracker().getLastX(pointer);
240
+ const handlerY = handler.getTracker().getLastY(pointer);
241
+
242
+ if (handler.getEventManager().isPointerInBounds({
243
+ x: handlerX,
244
+ y: handlerY
245
+ }) && otherHandler.getEventManager().isPointerInBounds({
246
+ x: handlerX,
247
+ y: handlerY
248
+ })) {
249
+ overlap = true;
250
+ }
251
+ });
252
+ otherPointers.forEach(pointer => {
253
+ const otherX = otherHandler.getTracker().getLastX(pointer);
254
+ const otherY = otherHandler.getTracker().getLastY(pointer);
255
+
256
+ if (handler.getEventManager().isPointerInBounds({
257
+ x: otherX,
258
+ y: otherY
259
+ }) && otherHandler.getEventManager().isPointerInBounds({
260
+ x: otherX,
261
+ y: otherY
262
+ })) {
263
+ overlap = true;
264
+ }
265
+ });
266
+ return overlap;
267
+ }
268
+
269
+ isFinished(state) {
270
+ return state === _State.State.END || state === _State.State.FAILED || state === _State.State.CANCELLED;
271
+ }
272
+
273
+ static getInstance() {
274
+ if (!GestureHandlerOrchestrator.instance) GestureHandlerOrchestrator.instance = new GestureHandlerOrchestrator();
275
+ return GestureHandlerOrchestrator.instance;
276
+ }
277
+
278
+ }
279
+
280
+ exports.default = GestureHandlerOrchestrator;
281
+
282
+ _defineProperty(GestureHandlerOrchestrator, "instance", void 0);
283
+ //# sourceMappingURL=GestureHandlerOrchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["GestureHandlerOrchestrator.ts"],"names":["GestureHandlerOrchestrator","constructor","scheduleFinishedHandlersCleanup","handlingChangeSemaphore","cleanupFinishedHandlers","cleanHandler","handler","reset","setActive","setAwaiting","setActivationIndex","Number","MAX_VALUE","i","gestureHandlers","length","isFinished","getState","isAwaiting","splice","hasOtherHandlerToWaitFor","hasToWait","forEach","otherHandler","shouldHandlerWaitForOther","tryActivate","event","addAwaitingHandler","makeActive","cleanupAwaitingHandlers","awaitingHandlers","onHandlerStateChange","newState","oldState","State","END","cancel","ACTIVE","isActive","sendEvent","BEGAN","UNDETERMINED","CANCELLED","indexOf","currentState","setShouldResetProgress","activationIndex","shouldHandlerBeCancelledBy","handlersToCancel","push","end","alreadyExists","recordHandlerIfNotPresent","MAX_SAFE_INTEGER","shouldWaitForHandlerFailure","shouldRequireToWaitForFailure","canRunSimultaneously","gh1","gh2","shouldRecognizeSimultaneously","handlerPointers","getTrackedPointersID","otherPointers","PointerTracker","shareCommonPointers","getView","checkOverlap","shouldBeCancelledByOther","overlap","pointer","handlerX","getTracker","getLastX","handlerY","getLastY","getEventManager","isPointerInBounds","x","y","otherX","otherY","state","FAILED","getInstance","instance"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { AdaptedPointerEvent } from '../interfaces';\n\nimport GestureHandler from '../handlers/GestureHandler';\nimport PointerTracker from './PointerTracker';\n\nexport default class GestureHandlerOrchestrator {\n private static instance: GestureHandlerOrchestrator;\n\n private gestureHandlers: GestureHandler[] = [];\n private awaitingHandlers: GestureHandler[] = [];\n private handlersToCancel: GestureHandler[] = [];\n\n private handlingChangeSemaphore = 0;\n private activationIndex = 0;\n\n // Private beacuse of Singleton\n // eslint-disable-next-line no-useless-constructor, @typescript-eslint/no-empty-function\n private constructor() {}\n\n private scheduleFinishedHandlersCleanup(): void {\n if (this.handlingChangeSemaphore === 0) {\n this.cleanupFinishedHandlers();\n }\n }\n\n private cleanHandler(handler: GestureHandler): void {\n handler.reset();\n handler.setActive(false);\n handler.setAwaiting(false);\n handler.setActivationIndex(Number.MAX_VALUE);\n }\n\n private cleanupFinishedHandlers(): void {\n for (let i = this.gestureHandlers.length - 1; i >= 0; --i) {\n const handler = this.gestureHandlers[i];\n if (!handler) {\n continue;\n }\n\n if (this.isFinished(handler.getState()) && !handler.isAwaiting()) {\n this.gestureHandlers.splice(i, 1);\n\n this.cleanHandler(handler);\n }\n }\n }\n\n private hasOtherHandlerToWaitFor(handler: GestureHandler): boolean {\n let hasToWait = false;\n this.gestureHandlers.forEach((otherHandler) => {\n if (\n otherHandler &&\n !this.isFinished(otherHandler.getState()) &&\n this.shouldHandlerWaitForOther(handler, otherHandler)\n ) {\n hasToWait = true;\n return;\n }\n });\n\n return hasToWait;\n }\n\n private tryActivate(\n handler: GestureHandler,\n event: AdaptedPointerEvent\n ): void {\n if (this.hasOtherHandlerToWaitFor(handler)) {\n this.addAwaitingHandler(handler);\n } else {\n this.makeActive(handler, event);\n }\n }\n\n private cleanupAwaitingHandlers(handler: GestureHandler): void {\n for (let i = 0; i < this.awaitingHandlers.length; ++i) {\n if (\n !this.awaitingHandlers[i].isAwaiting() &&\n this.shouldHandlerWaitForOther(this.awaitingHandlers[i], handler)\n ) {\n this.cleanHandler(this.awaitingHandlers[i]);\n this.awaitingHandlers.splice(i, 1);\n }\n }\n }\n\n public onHandlerStateChange(\n handler: GestureHandler,\n newState: State,\n oldState: State,\n event: AdaptedPointerEvent\n ): void {\n this.handlingChangeSemaphore += 1;\n\n if (this.isFinished(newState)) {\n this.awaitingHandlers.forEach((otherHandler) => {\n if (this.shouldHandlerWaitForOther(otherHandler, handler)) {\n if (newState === State.END) {\n otherHandler?.cancel(event);\n otherHandler?.setAwaiting(false);\n } else {\n this.tryActivate(otherHandler, event);\n }\n }\n });\n }\n\n if (newState === State.ACTIVE) {\n this.tryActivate(handler, event);\n } else if (oldState === State.ACTIVE || oldState === State.END) {\n if (handler.isActive()) {\n handler.sendEvent(event, newState, oldState);\n } else if (oldState === State.ACTIVE) {\n handler.sendEvent(event, newState, State.BEGAN);\n }\n } else if (\n oldState !== State.UNDETERMINED ||\n newState !== State.CANCELLED\n ) {\n handler.sendEvent(event, newState, oldState);\n }\n\n this.handlingChangeSemaphore -= 1;\n\n this.scheduleFinishedHandlersCleanup();\n\n if (this.awaitingHandlers.indexOf(handler) < 0) {\n this.cleanupAwaitingHandlers(handler);\n }\n }\n\n private makeActive(\n handler: GestureHandler,\n event: AdaptedPointerEvent\n ): void {\n const currentState = handler.getState();\n\n handler.setActive(true);\n handler.setShouldResetProgress(true);\n handler.setActivationIndex(this.activationIndex++);\n\n this.gestureHandlers.forEach((otherHandler) => {\n // Order of arguments is correct - we check whether current handler should cancel existing handlers\n if (this.shouldHandlerBeCancelledBy(otherHandler, handler)) {\n this.handlersToCancel.push(otherHandler);\n }\n });\n\n for (let i = this.handlersToCancel.length - 1; i >= 0; --i) {\n this.handlersToCancel[i]?.cancel(event);\n }\n this.awaitingHandlers.forEach((otherHandler) => {\n if (this.shouldHandlerBeCancelledBy(otherHandler, handler)) {\n otherHandler?.cancel(event);\n otherHandler?.setAwaiting(true);\n }\n });\n\n handler.sendEvent(event, State.ACTIVE, State.BEGAN);\n\n if (currentState !== State.ACTIVE) {\n handler.sendEvent(event, State.END, State.ACTIVE);\n if (currentState !== State.END) {\n handler.sendEvent(event, State.UNDETERMINED, State.END);\n }\n }\n\n if (handler.isAwaiting()) {\n handler.setAwaiting(false);\n handler.end(event);\n }\n\n this.handlersToCancel = [];\n }\n\n private addAwaitingHandler(handler: GestureHandler): void {\n let alreadyExists = false;\n\n this.awaitingHandlers.forEach((otherHandler) => {\n if (otherHandler === handler) {\n alreadyExists = true;\n return;\n }\n });\n\n if (alreadyExists) {\n return;\n }\n\n this.awaitingHandlers.push(handler);\n\n handler.setAwaiting(true);\n handler.setActivationIndex(this.activationIndex++);\n }\n\n public recordHandlerIfNotPresent(handler: GestureHandler): void {\n let alreadyExists = false;\n\n this.gestureHandlers.forEach((otherHandler) => {\n if (otherHandler === handler) {\n alreadyExists = true;\n return;\n }\n });\n\n if (alreadyExists) {\n return;\n }\n\n this.gestureHandlers.push(handler);\n\n handler.setActive(false);\n handler.setAwaiting(false);\n handler.setActivationIndex(Number.MAX_SAFE_INTEGER);\n }\n\n private shouldHandlerWaitForOther(\n handler: GestureHandler,\n otherHandler: GestureHandler\n ): boolean {\n return (\n handler !== otherHandler &&\n (handler.shouldWaitForHandlerFailure(otherHandler) ||\n otherHandler.shouldRequireToWaitForFailure(handler))\n );\n }\n\n private canRunSimultaneously(\n gh1: GestureHandler,\n gh2: GestureHandler\n ): boolean {\n return (\n gh1 === gh2 ||\n gh1.shouldRecognizeSimultaneously(gh2) ||\n gh2.shouldRecognizeSimultaneously(gh1)\n );\n }\n\n private shouldHandlerBeCancelledBy(\n handler: GestureHandler,\n otherHandler: GestureHandler\n ): boolean {\n const handlerPointers: number[] = handler.getTrackedPointersID();\n const otherPointers: number[] = otherHandler.getTrackedPointersID();\n\n if (\n !PointerTracker.shareCommonPointers(handlerPointers, otherPointers) &&\n handler.getView() !== otherHandler.getView()\n ) {\n return this.checkOverlap(handler, otherHandler);\n }\n\n if (this.canRunSimultaneously(handler, otherHandler)) {\n return false;\n }\n\n if (\n handler !== otherHandler &&\n (handler.isAwaiting() || handler.getState() === State.ACTIVE)\n ) {\n // For now it always returns false\n return handler.shouldBeCancelledByOther(otherHandler);\n }\n\n return true;\n }\n\n private checkOverlap(\n handler: GestureHandler,\n otherHandler: GestureHandler\n ): boolean {\n // If handlers don't have common pointers, default return value is false.\n // However, if at least on pointer overlaps with both handlers, we return true\n // This solves issue in overlapping parents example\n\n // TODO: Find better way to handle that issue, for example by activation order and handler cancelling\n\n const handlerPointers: number[] = handler.getTrackedPointersID();\n const otherPointers: number[] = otherHandler.getTrackedPointersID();\n\n let overlap = false;\n\n handlerPointers.forEach((pointer: number) => {\n const handlerX: number = handler.getTracker().getLastX(pointer);\n const handlerY: number = handler.getTracker().getLastY(pointer);\n\n if (\n handler\n .getEventManager()\n .isPointerInBounds({ x: handlerX, y: handlerY }) &&\n otherHandler\n .getEventManager()\n .isPointerInBounds({ x: handlerX, y: handlerY })\n ) {\n overlap = true;\n }\n });\n\n otherPointers.forEach((pointer: number) => {\n const otherX: number = otherHandler.getTracker().getLastX(pointer);\n const otherY: number = otherHandler.getTracker().getLastY(pointer);\n\n if (\n handler.getEventManager().isPointerInBounds({ x: otherX, y: otherY }) &&\n otherHandler\n .getEventManager()\n .isPointerInBounds({ x: otherX, y: otherY })\n ) {\n overlap = true;\n }\n });\n\n return overlap;\n }\n\n private isFinished(state: State): boolean {\n return (\n state === State.END || state === State.FAILED || state === State.CANCELLED\n );\n }\n\n public static getInstance(): GestureHandlerOrchestrator {\n if (!GestureHandlerOrchestrator.instance)\n GestureHandlerOrchestrator.instance = new GestureHandlerOrchestrator();\n\n return GestureHandlerOrchestrator.instance;\n }\n}\n"]}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ 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; }
9
+
10
+ class InteractionManager {
11
+ constructor() {
12
+ _defineProperty(this, "waitForRelations", new Map());
13
+
14
+ _defineProperty(this, "simultaneousRelations", new Map());
15
+ }
16
+
17
+ configureInteractions(handler, config) {
18
+ this.dropRelationsForHandlerWithTag(handler.getTag());
19
+
20
+ if (config.waitFor) {
21
+ const waitFor = [];
22
+ config.waitFor.forEach(handler => {
23
+ if (typeof handler === 'number') {
24
+ waitFor.push(handler);
25
+ } else {
26
+ waitFor.push(handler.handlerTag);
27
+ }
28
+ });
29
+ this.waitForRelations.set(handler.getTag(), waitFor);
30
+ }
31
+
32
+ if (config.simultaneousHandlers) {
33
+ const simultaneousHandlers = [];
34
+ config.simultaneousHandlers.forEach(handler => {
35
+ if (typeof handler === 'number') {
36
+ simultaneousHandlers.push(handler);
37
+ } else {
38
+ simultaneousHandlers.push(handler.handlerTag);
39
+ }
40
+ });
41
+ this.simultaneousRelations.set(handler.getTag(), simultaneousHandlers);
42
+ }
43
+
44
+ handler.setInteractionManager(this);
45
+ }
46
+
47
+ shouldWaitForHandlerFailure(handler, otherHandler) {
48
+ const waitFor = this.waitForRelations.get(handler.getTag());
49
+
50
+ if (!waitFor) {
51
+ return false;
52
+ }
53
+
54
+ let shouldWait = false;
55
+ waitFor.forEach(tag => {
56
+ if (tag === otherHandler.getTag()) {
57
+ shouldWait = true;
58
+ return; //Returns from callback
59
+ }
60
+ });
61
+ return shouldWait;
62
+ }
63
+
64
+ shouldRecognizeSimultaneously(handler, otherHandler) {
65
+ const simultaneousHandlers = this.simultaneousRelations.get(handler.getTag());
66
+
67
+ if (!simultaneousHandlers) {
68
+ return false;
69
+ }
70
+
71
+ let shouldRecognizeSimultaneously = false;
72
+ simultaneousHandlers.forEach(tag => {
73
+ if (tag === otherHandler.getTag()) {
74
+ shouldRecognizeSimultaneously = true;
75
+ return;
76
+ }
77
+ });
78
+ return shouldRecognizeSimultaneously;
79
+ }
80
+
81
+ shouldRequireHandlerToWaitForFailure(_handler, _otherHandler) {
82
+ return false;
83
+ }
84
+
85
+ shouldHandlerBeCancelledBy(_handler, _otherHandler) {
86
+ return false;
87
+ }
88
+
89
+ dropRelationsForHandlerWithTag(handlerTag) {
90
+ this.waitForRelations.delete(handlerTag);
91
+ this.simultaneousRelations.delete(handlerTag);
92
+ }
93
+
94
+ reset() {
95
+ this.waitForRelations.clear();
96
+ this.simultaneousRelations.clear();
97
+ }
98
+
99
+ }
100
+
101
+ exports.default = InteractionManager;
102
+ //# sourceMappingURL=InteractionManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["InteractionManager.ts"],"names":["InteractionManager","Map","configureInteractions","handler","config","dropRelationsForHandlerWithTag","getTag","waitFor","forEach","push","handlerTag","waitForRelations","set","simultaneousHandlers","simultaneousRelations","setInteractionManager","shouldWaitForHandlerFailure","otherHandler","get","shouldWait","tag","shouldRecognizeSimultaneously","shouldRequireHandlerToWaitForFailure","_handler","_otherHandler","shouldHandlerBeCancelledBy","delete","reset","clear"],"mappings":"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","sourcesContent":["import GestureHandler from '../handlers/GestureHandler';\nimport { Config, Handler } from '../interfaces';\n\nexport default class InteractionManager {\n private readonly waitForRelations: Map<number, number[]> = new Map();\n private readonly simultaneousRelations: Map<number, number[]> = new Map();\n\n public configureInteractions(handler: GestureHandler, config: Config) {\n this.dropRelationsForHandlerWithTag(handler.getTag());\n\n if (config.waitFor) {\n const waitFor: number[] = [];\n config.waitFor.forEach((handler: Handler): void => {\n if (typeof handler === 'number') {\n waitFor.push(handler);\n } else {\n waitFor.push(handler.handlerTag);\n }\n });\n\n this.waitForRelations.set(handler.getTag(), waitFor);\n }\n\n if (config.simultaneousHandlers) {\n const simultaneousHandlers: number[] = [];\n config.simultaneousHandlers.forEach((handler: Handler): void => {\n if (typeof handler === 'number') {\n simultaneousHandlers.push(handler);\n } else {\n simultaneousHandlers.push(handler.handlerTag);\n }\n });\n\n this.simultaneousRelations.set(handler.getTag(), simultaneousHandlers);\n }\n handler.setInteractionManager(this);\n }\n\n public shouldWaitForHandlerFailure(\n handler: GestureHandler,\n otherHandler: GestureHandler\n ): boolean {\n const waitFor: number[] | undefined = this.waitForRelations.get(\n handler.getTag()\n );\n if (!waitFor) {\n return false;\n }\n\n let shouldWait = false;\n\n waitFor.forEach((tag: number): void => {\n if (tag === otherHandler.getTag()) {\n shouldWait = true;\n return; //Returns from callback\n }\n });\n\n return shouldWait;\n }\n\n public shouldRecognizeSimultaneously(\n handler: GestureHandler,\n otherHandler: GestureHandler\n ): boolean {\n const simultaneousHandlers:\n | number[]\n | undefined = this.simultaneousRelations.get(handler.getTag());\n if (!simultaneousHandlers) {\n return false;\n }\n\n let shouldRecognizeSimultaneously = false;\n\n simultaneousHandlers.forEach((tag: number): void => {\n if (tag === otherHandler.getTag()) {\n shouldRecognizeSimultaneously = true;\n return;\n }\n });\n\n return shouldRecognizeSimultaneously;\n }\n\n public shouldRequireHandlerToWaitForFailure(\n _handler: GestureHandler,\n _otherHandler: GestureHandler\n ): boolean {\n return false;\n }\n\n public shouldHandlerBeCancelledBy(\n _handler: GestureHandler,\n _otherHandler: GestureHandler\n ): boolean {\n return false;\n }\n\n public dropRelationsForHandlerWithTag(handlerTag: number): void {\n this.waitForRelations.delete(handlerTag);\n this.simultaneousRelations.delete(handlerTag);\n }\n\n public reset() {\n this.waitForRelations.clear();\n this.simultaneousRelations.clear();\n }\n}\n"]}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ 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; }
9
+
10
+ // eslint-disable-next-line @typescript-eslint/no-extraneous-class
11
+ class NodeManager {
12
+ static getHandler(tag) {
13
+ if (tag in this.gestures) {
14
+ return this.gestures[tag];
15
+ }
16
+
17
+ throw new Error(`No handler for tag ${tag}`);
18
+ }
19
+
20
+ static createGestureHandler(handlerTag, handler) {
21
+ if (handlerTag in this.gestures) {
22
+ throw new Error(`Handler with tag ${handlerTag} already exists`);
23
+ }
24
+
25
+ this.gestures[handlerTag] = handler;
26
+ this.gestures[handlerTag].setTag(handlerTag);
27
+ }
28
+
29
+ static dropGestureHandler(handlerTag) {
30
+ if (!(handlerTag in this.gestures)) {
31
+ return;
32
+ } // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
33
+
34
+
35
+ delete this.gestures[handlerTag];
36
+ }
37
+
38
+ static getNodes() {
39
+ return { ...this.gestures
40
+ };
41
+ }
42
+
43
+ }
44
+
45
+ exports.default = NodeManager;
46
+
47
+ _defineProperty(NodeManager, "gestures", {});
48
+ //# sourceMappingURL=NodeManager.js.map