react-native-gesture-handler 2.26.0 → 2.27.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (415) hide show
  1. package/README.md +69 -0
  2. package/android/src/main/jni/CMakeLists.txt +7 -26
  3. package/lib/commonjs/components/Pressable/Pressable.js +139 -188
  4. package/lib/commonjs/components/Pressable/Pressable.js.map +1 -1
  5. package/lib/commonjs/components/Pressable/StateMachine.js +38 -0
  6. package/lib/commonjs/components/Pressable/StateMachine.js.map +1 -0
  7. package/lib/commonjs/components/Pressable/stateDefinitions.js +88 -0
  8. package/lib/commonjs/components/Pressable/stateDefinitions.js.map +1 -0
  9. package/lib/commonjs/components/Pressable/utils.js +1 -1
  10. package/lib/commonjs/components/Pressable/utils.js.map +1 -1
  11. package/lib/commonjs/handlers/gestures/forceTouchGesture.js +12 -0
  12. package/lib/commonjs/handlers/gestures/forceTouchGesture.js.map +1 -1
  13. package/lib/commonjs/handlers/gestures/gestureObjects.js +3 -1
  14. package/lib/commonjs/handlers/gestures/gestureObjects.js.map +1 -1
  15. package/lib/commonjs/web/detectors/RotationGestureDetector.js +3 -0
  16. package/lib/commonjs/web/detectors/RotationGestureDetector.js.map +1 -1
  17. package/lib/commonjs/web/handlers/FlingGestureHandler.js +3 -0
  18. package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
  19. package/lib/commonjs/web/handlers/GestureHandler.js +6 -6
  20. package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
  21. package/lib/commonjs/web/handlers/PanGestureHandler.js +24 -33
  22. package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
  23. package/lib/commonjs/web/handlers/TapGestureHandler.js +15 -17
  24. package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
  25. package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +1 -1
  26. package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -1
  27. package/lib/commonjs/web/tools/PointerEventManager.js +1 -1
  28. package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -1
  29. package/lib/commonjs/web/tools/PointerTracker.js +12 -11
  30. package/lib/commonjs/web/tools/PointerTracker.js.map +1 -1
  31. package/lib/commonjs/web/tools/Vector.js +1 -1
  32. package/lib/commonjs/web/tools/Vector.js.map +1 -1
  33. package/lib/module/components/Pressable/Pressable.js +141 -190
  34. package/lib/module/components/Pressable/Pressable.js.map +1 -1
  35. package/lib/module/components/Pressable/StateMachine.js +34 -0
  36. package/lib/module/components/Pressable/StateMachine.js.map +1 -0
  37. package/lib/module/components/Pressable/stateDefinitions.js +83 -0
  38. package/lib/module/components/Pressable/stateDefinitions.js.map +1 -0
  39. package/lib/module/components/Pressable/utils.js +1 -1
  40. package/lib/module/components/Pressable/utils.js.map +1 -1
  41. package/lib/module/handlers/gestures/forceTouchGesture.js +13 -0
  42. package/lib/module/handlers/gestures/forceTouchGesture.js.map +1 -1
  43. package/lib/module/handlers/gestures/gestureObjects.js +3 -1
  44. package/lib/module/handlers/gestures/gestureObjects.js.map +1 -1
  45. package/lib/module/web/detectors/RotationGestureDetector.js +3 -0
  46. package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -1
  47. package/lib/module/web/handlers/FlingGestureHandler.js +3 -0
  48. package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
  49. package/lib/module/web/handlers/GestureHandler.js +6 -6
  50. package/lib/module/web/handlers/GestureHandler.js.map +1 -1
  51. package/lib/module/web/handlers/PanGestureHandler.js +24 -33
  52. package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
  53. package/lib/module/web/handlers/TapGestureHandler.js +15 -17
  54. package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
  55. package/lib/module/web/tools/GestureHandlerOrchestrator.js +1 -1
  56. package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -1
  57. package/lib/module/web/tools/PointerEventManager.js +1 -1
  58. package/lib/module/web/tools/PointerEventManager.js.map +1 -1
  59. package/lib/module/web/tools/PointerTracker.js +12 -11
  60. package/lib/module/web/tools/PointerTracker.js.map +1 -1
  61. package/lib/module/web/tools/Vector.js +1 -1
  62. package/lib/module/web/tools/Vector.js.map +1 -1
  63. package/lib/typescript/ActionType.d.ts +0 -1
  64. package/lib/typescript/ActionType.js +6 -0
  65. package/lib/typescript/Directions.d.ts +0 -1
  66. package/lib/typescript/Directions.js +18 -0
  67. package/lib/typescript/EnableNewWebImplementation.d.ts +0 -1
  68. package/lib/typescript/EnableNewWebImplementation.js +30 -0
  69. package/lib/typescript/GestureHandlerRootViewContext.d.ts +0 -1
  70. package/lib/typescript/GestureHandlerRootViewContext.js +2 -0
  71. package/lib/typescript/PlatformConstants.d.ts +0 -1
  72. package/lib/typescript/PlatformConstants.js +3 -0
  73. package/lib/typescript/PlatformConstants.web.d.ts +0 -1
  74. package/lib/typescript/PlatformConstants.web.js +5 -0
  75. package/lib/typescript/PointerType.d.ts +0 -1
  76. package/lib/typescript/PointerType.js +8 -0
  77. package/lib/typescript/RNGestureHandlerModule.d.ts +0 -1
  78. package/lib/typescript/RNGestureHandlerModule.js +4 -0
  79. package/lib/typescript/RNGestureHandlerModule.web.d.ts +0 -1
  80. package/lib/typescript/RNGestureHandlerModule.web.js +92 -0
  81. package/lib/typescript/RNGestureHandlerModule.windows.d.ts +0 -1
  82. package/lib/typescript/RNGestureHandlerModule.windows.js +47 -0
  83. package/lib/typescript/RNRenderer.d.ts +0 -1
  84. package/lib/typescript/RNRenderer.js +3 -0
  85. package/lib/typescript/RNRenderer.web.d.ts +0 -1
  86. package/lib/typescript/RNRenderer.web.js +3 -0
  87. package/lib/typescript/State.d.ts +0 -1
  88. package/lib/typescript/State.js +9 -0
  89. package/lib/typescript/TouchEventType.d.ts +0 -1
  90. package/lib/typescript/TouchEventType.js +7 -0
  91. package/lib/typescript/components/DrawerLayout.d.ts +0 -1
  92. package/lib/typescript/components/DrawerLayout.js +417 -0
  93. package/lib/typescript/components/GestureButtons.d.ts +0 -1
  94. package/lib/typescript/components/GestureButtons.js +165 -0
  95. package/lib/typescript/components/GestureButtonsProps.d.ts +0 -1
  96. package/lib/typescript/components/GestureButtonsProps.js +1 -0
  97. package/lib/typescript/components/GestureComponents.d.ts +0 -1
  98. package/lib/typescript/components/GestureComponents.js +67 -0
  99. package/lib/typescript/components/GestureComponents.web.d.ts +0 -1
  100. package/lib/typescript/components/GestureComponents.web.js +21 -0
  101. package/lib/typescript/components/GestureHandlerButton.d.ts +0 -1
  102. package/lib/typescript/components/GestureHandlerButton.js +2 -0
  103. package/lib/typescript/components/GestureHandlerButton.web.d.ts +0 -1
  104. package/lib/typescript/components/GestureHandlerButton.web.js +3 -0
  105. package/lib/typescript/components/GestureHandlerRootView.android.d.ts +0 -1
  106. package/lib/typescript/components/GestureHandlerRootView.android.js +17 -0
  107. package/lib/typescript/components/GestureHandlerRootView.d.ts +0 -1
  108. package/lib/typescript/components/GestureHandlerRootView.js +16 -0
  109. package/lib/typescript/components/GestureHandlerRootView.web.d.ts +0 -1
  110. package/lib/typescript/components/GestureHandlerRootView.web.js +11 -0
  111. package/lib/typescript/components/Pressable/Pressable.d.ts +1 -3
  112. package/lib/typescript/components/Pressable/Pressable.d.ts.map +1 -1
  113. package/lib/typescript/components/Pressable/Pressable.js +231 -0
  114. package/lib/typescript/components/Pressable/PressableProps.d.ts +15 -2
  115. package/lib/typescript/components/Pressable/PressableProps.d.ts.map +1 -1
  116. package/lib/typescript/components/Pressable/PressableProps.js +1 -0
  117. package/lib/typescript/components/Pressable/StateMachine.d.ts +14 -0
  118. package/lib/typescript/components/Pressable/StateMachine.d.ts.map +1 -0
  119. package/lib/typescript/components/Pressable/StateMachine.js +34 -0
  120. package/lib/typescript/components/Pressable/index.d.ts +0 -1
  121. package/lib/typescript/components/Pressable/index.js +1 -0
  122. package/lib/typescript/components/Pressable/stateDefinitions.d.ts +9 -0
  123. package/lib/typescript/components/Pressable/stateDefinitions.d.ts.map +1 -0
  124. package/lib/typescript/components/Pressable/stateDefinitions.js +104 -0
  125. package/lib/typescript/components/Pressable/utils.d.ts +3 -7
  126. package/lib/typescript/components/Pressable/utils.d.ts.map +1 -1
  127. package/lib/typescript/components/Pressable/utils.js +80 -0
  128. package/lib/typescript/components/ReanimatedDrawerLayout.d.ts +0 -1
  129. package/lib/typescript/components/ReanimatedDrawerLayout.js +364 -0
  130. package/lib/typescript/components/ReanimatedSwipeable.d.ts +0 -1
  131. package/lib/typescript/components/ReanimatedSwipeable.js +400 -0
  132. package/lib/typescript/components/Swipeable.d.ts +0 -1
  133. package/lib/typescript/components/Swipeable.js +287 -0
  134. package/lib/typescript/components/Text.d.ts +0 -1
  135. package/lib/typescript/components/Text.js +38 -0
  136. package/lib/typescript/components/gestureHandlerRootHOC.d.ts +0 -1
  137. package/lib/typescript/components/gestureHandlerRootHOC.js +18 -0
  138. package/lib/typescript/components/touchables/ExtraButtonProps.d.ts +0 -1
  139. package/lib/typescript/components/touchables/ExtraButtonProps.js +1 -0
  140. package/lib/typescript/components/touchables/GenericTouchable.d.ts +0 -1
  141. package/lib/typescript/components/touchables/GenericTouchable.js +221 -0
  142. package/lib/typescript/components/touchables/GenericTouchableProps.d.ts +0 -1
  143. package/lib/typescript/components/touchables/GenericTouchableProps.js +1 -0
  144. package/lib/typescript/components/touchables/TouchableHighlight.d.ts +0 -1
  145. package/lib/typescript/components/touchables/TouchableHighlight.js +75 -0
  146. package/lib/typescript/components/touchables/TouchableNativeFeedback.android.d.ts +0 -1
  147. package/lib/typescript/components/touchables/TouchableNativeFeedback.android.js +65 -0
  148. package/lib/typescript/components/touchables/TouchableNativeFeedback.d.ts +0 -1
  149. package/lib/typescript/components/touchables/TouchableNativeFeedback.js +6 -0
  150. package/lib/typescript/components/touchables/TouchableNativeFeedbackProps.d.ts +0 -1
  151. package/lib/typescript/components/touchables/TouchableNativeFeedbackProps.js +1 -0
  152. package/lib/typescript/components/touchables/TouchableOpacity.d.ts +0 -1
  153. package/lib/typescript/components/touchables/TouchableOpacity.js +51 -0
  154. package/lib/typescript/components/touchables/TouchableWithoutFeedback.d.ts +0 -1
  155. package/lib/typescript/components/touchables/TouchableWithoutFeedback.js +10 -0
  156. package/lib/typescript/components/touchables/index.d.ts +0 -1
  157. package/lib/typescript/components/touchables/index.js +4 -0
  158. package/lib/typescript/components/utils.d.ts +0 -1
  159. package/lib/typescript/components/utils.js +11 -0
  160. package/lib/typescript/findNodeHandle.d.ts +0 -1
  161. package/lib/typescript/findNodeHandle.js +2 -0
  162. package/lib/typescript/findNodeHandle.web.d.ts +0 -1
  163. package/lib/typescript/findNodeHandle.web.js +31 -0
  164. package/lib/typescript/getShadowNodeFromRef.d.ts +0 -1
  165. package/lib/typescript/getShadowNodeFromRef.js +45 -0
  166. package/lib/typescript/getShadowNodeFromRef.web.d.ts +0 -1
  167. package/lib/typescript/getShadowNodeFromRef.web.js +7 -0
  168. package/lib/typescript/ghQueueMicrotask.d.ts +0 -1
  169. package/lib/typescript/ghQueueMicrotask.js +7 -0
  170. package/lib/typescript/handlers/FlingGestureHandler.d.ts +0 -1
  171. package/lib/typescript/handlers/FlingGestureHandler.js +19 -0
  172. package/lib/typescript/handlers/ForceTouchGestureHandler.d.ts +0 -1
  173. package/lib/typescript/handlers/ForceTouchGestureHandler.js +37 -0
  174. package/lib/typescript/handlers/GestureHandlerEventPayload.d.ts +3 -1
  175. package/lib/typescript/handlers/GestureHandlerEventPayload.d.ts.map +1 -1
  176. package/lib/typescript/handlers/GestureHandlerEventPayload.js +1 -0
  177. package/lib/typescript/handlers/LongPressGestureHandler.d.ts +0 -1
  178. package/lib/typescript/handlers/LongPressGestureHandler.js +22 -0
  179. package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +0 -1
  180. package/lib/typescript/handlers/NativeViewGestureHandler.js +20 -0
  181. package/lib/typescript/handlers/PanGestureHandler.d.ts +0 -1
  182. package/lib/typescript/handlers/PanGestureHandler.js +128 -0
  183. package/lib/typescript/handlers/PinchGestureHandler.d.ts +0 -1
  184. package/lib/typescript/handlers/PinchGestureHandler.js +12 -0
  185. package/lib/typescript/handlers/PressabilityDebugView.d.ts +0 -1
  186. package/lib/typescript/handlers/PressabilityDebugView.js +2 -0
  187. package/lib/typescript/handlers/PressabilityDebugView.web.d.ts +0 -1
  188. package/lib/typescript/handlers/PressabilityDebugView.web.js +4 -0
  189. package/lib/typescript/handlers/RotationGestureHandler.d.ts +0 -1
  190. package/lib/typescript/handlers/RotationGestureHandler.js +12 -0
  191. package/lib/typescript/handlers/TapGestureHandler.d.ts +0 -1
  192. package/lib/typescript/handlers/TapGestureHandler.js +26 -0
  193. package/lib/typescript/handlers/createHandler.d.ts +0 -1
  194. package/lib/typescript/handlers/createHandler.js +375 -0
  195. package/lib/typescript/handlers/createNativeWrapper.d.ts +0 -1
  196. package/lib/typescript/handlers/createNativeWrapper.js +67 -0
  197. package/lib/typescript/handlers/customDirectEventTypes.d.ts +0 -1
  198. package/lib/typescript/handlers/customDirectEventTypes.js +2 -0
  199. package/lib/typescript/handlers/customDirectEventTypes.web.d.ts +0 -1
  200. package/lib/typescript/handlers/customDirectEventTypes.web.js +4 -0
  201. package/lib/typescript/handlers/gestureHandlerCommon.d.ts +0 -1
  202. package/lib/typescript/handlers/gestureHandlerCommon.js +42 -0
  203. package/lib/typescript/handlers/gestureHandlerTypesCompat.d.ts +9 -1
  204. package/lib/typescript/handlers/gestureHandlerTypesCompat.d.ts.map +1 -1
  205. package/lib/typescript/handlers/gestureHandlerTypesCompat.js +1 -0
  206. package/lib/typescript/handlers/gestures/GestureDetector/Wrap.d.ts +0 -1
  207. package/lib/typescript/handlers/gestures/GestureDetector/Wrap.js +22 -0
  208. package/lib/typescript/handlers/gestures/GestureDetector/Wrap.web.d.ts +0 -1
  209. package/lib/typescript/handlers/gestures/GestureDetector/Wrap.web.js +24 -0
  210. package/lib/typescript/handlers/gestures/GestureDetector/attachHandlers.d.ts +0 -1
  211. package/lib/typescript/handlers/gestures/GestureDetector/attachHandlers.js +55 -0
  212. package/lib/typescript/handlers/gestures/GestureDetector/dropHandlers.d.ts +0 -1
  213. package/lib/typescript/handlers/gestures/GestureDetector/dropHandlers.js +12 -0
  214. package/lib/typescript/handlers/gestures/GestureDetector/index.d.ts +0 -1
  215. package/lib/typescript/handlers/gestures/GestureDetector/index.js +114 -0
  216. package/lib/typescript/handlers/gestures/GestureDetector/needsToReattach.d.ts +0 -1
  217. package/lib/typescript/handlers/gestures/GestureDetector/needsToReattach.js +18 -0
  218. package/lib/typescript/handlers/gestures/GestureDetector/types.d.ts +0 -1
  219. package/lib/typescript/handlers/gestures/GestureDetector/types.js +1 -0
  220. package/lib/typescript/handlers/gestures/GestureDetector/updateHandlers.d.ts +0 -1
  221. package/lib/typescript/handlers/gestures/GestureDetector/updateHandlers.js +54 -0
  222. package/lib/typescript/handlers/gestures/GestureDetector/useAnimatedGesture.d.ts +0 -1
  223. package/lib/typescript/handlers/gestures/GestureDetector/useAnimatedGesture.js +137 -0
  224. package/lib/typescript/handlers/gestures/GestureDetector/useDetectorUpdater.d.ts +0 -1
  225. package/lib/typescript/handlers/gestures/GestureDetector/useDetectorUpdater.js +48 -0
  226. package/lib/typescript/handlers/gestures/GestureDetector/useMountReactions.d.ts +0 -1
  227. package/lib/typescript/handlers/gestures/GestureDetector/useMountReactions.js +35 -0
  228. package/lib/typescript/handlers/gestures/GestureDetector/useViewRefHandler.d.ts +0 -1
  229. package/lib/typescript/handlers/gestures/GestureDetector/useViewRefHandler.js +32 -0
  230. package/lib/typescript/handlers/gestures/GestureDetector/utils.d.ts +0 -1
  231. package/lib/typescript/handlers/gestures/GestureDetector/utils.js +140 -0
  232. package/lib/typescript/handlers/gestures/eventReceiver.d.ts +0 -1
  233. package/lib/typescript/handlers/gestures/eventReceiver.js +105 -0
  234. package/lib/typescript/handlers/gestures/flingGesture.d.ts +0 -1
  235. package/lib/typescript/handlers/gestures/flingGesture.js +27 -0
  236. package/lib/typescript/handlers/gestures/forceTouchGesture.d.ts +9 -1
  237. package/lib/typescript/handlers/gestures/forceTouchGesture.d.ts.map +1 -1
  238. package/lib/typescript/handlers/gestures/forceTouchGesture.js +57 -0
  239. package/lib/typescript/handlers/gestures/gesture.d.ts +0 -1
  240. package/lib/typescript/handlers/gestures/gesture.js +303 -0
  241. package/lib/typescript/handlers/gestures/gestureComposition.d.ts +0 -1
  242. package/lib/typescript/handlers/gestures/gestureComposition.js +78 -0
  243. package/lib/typescript/handlers/gestures/gestureObjects.d.ts +3 -2
  244. package/lib/typescript/handlers/gestures/gestureObjects.d.ts.map +1 -1
  245. package/lib/typescript/handlers/gestures/gestureObjects.js +125 -0
  246. package/lib/typescript/handlers/gestures/gestureStateManager.d.ts +0 -1
  247. package/lib/typescript/handlers/gestures/gestureStateManager.js +60 -0
  248. package/lib/typescript/handlers/gestures/gestureStateManager.web.d.ts +0 -1
  249. package/lib/typescript/handlers/gestures/gestureStateManager.web.js +19 -0
  250. package/lib/typescript/handlers/gestures/hoverGesture.d.ts +0 -1
  251. package/lib/typescript/handlers/gestures/hoverGesture.js +45 -0
  252. package/lib/typescript/handlers/gestures/longPressGesture.d.ts +0 -1
  253. package/lib/typescript/handlers/gestures/longPressGesture.js +35 -0
  254. package/lib/typescript/handlers/gestures/manualGesture.d.ts +0 -1
  255. package/lib/typescript/handlers/gestures/manualGesture.js +16 -0
  256. package/lib/typescript/handlers/gestures/nativeGesture.d.ts +0 -1
  257. package/lib/typescript/handlers/gestures/nativeGesture.js +24 -0
  258. package/lib/typescript/handlers/gestures/panGesture.d.ts +0 -1
  259. package/lib/typescript/handlers/gestures/panGesture.js +181 -0
  260. package/lib/typescript/handlers/gestures/pinchGesture.d.ts +0 -1
  261. package/lib/typescript/handlers/gestures/pinchGesture.js +27 -0
  262. package/lib/typescript/handlers/gestures/reanimatedWrapper.d.ts +0 -1
  263. package/lib/typescript/handlers/gestures/reanimatedWrapper.js +23 -0
  264. package/lib/typescript/handlers/gestures/rotationGesture.d.ts +0 -1
  265. package/lib/typescript/handlers/gestures/rotationGesture.js +27 -0
  266. package/lib/typescript/handlers/gestures/tapGesture.d.ts +0 -1
  267. package/lib/typescript/handlers/gestures/tapGesture.js +72 -0
  268. package/lib/typescript/handlers/getNextHandlerTag.d.ts +0 -1
  269. package/lib/typescript/handlers/getNextHandlerTag.js +4 -0
  270. package/lib/typescript/handlers/handlersRegistry.d.ts +0 -1
  271. package/lib/typescript/handlers/handlersRegistry.js +36 -0
  272. package/lib/typescript/handlers/utils.d.ts +0 -1
  273. package/lib/typescript/handlers/utils.js +58 -0
  274. package/lib/typescript/index.d.ts +0 -1
  275. package/lib/typescript/index.js +28 -0
  276. package/lib/typescript/init.d.ts +0 -1
  277. package/lib/typescript/init.js +15 -0
  278. package/lib/typescript/jestUtils/index.d.ts +0 -1
  279. package/lib/typescript/jestUtils/index.js +1 -0
  280. package/lib/typescript/jestUtils/jestUtils.d.ts +0 -1
  281. package/lib/typescript/jestUtils/jestUtils.js +290 -0
  282. package/lib/typescript/mocks.d.ts +0 -1
  283. package/lib/typescript/mocks.js +59 -0
  284. package/lib/typescript/mountRegistry.d.ts +0 -1
  285. package/lib/typescript/mountRegistry.js +29 -0
  286. package/lib/typescript/specs/NativeRNGestureHandlerModule.d.ts +0 -1
  287. package/lib/typescript/specs/NativeRNGestureHandlerModule.js +2 -0
  288. package/lib/typescript/specs/RNGestureHandlerButtonNativeComponent.d.ts +0 -1
  289. package/lib/typescript/specs/RNGestureHandlerButtonNativeComponent.js +2 -0
  290. package/lib/typescript/specs/RNGestureHandlerRootViewNativeComponent.d.ts +0 -1
  291. package/lib/typescript/specs/RNGestureHandlerRootViewNativeComponent.js +2 -0
  292. package/lib/typescript/typeUtils.d.ts +0 -1
  293. package/lib/typescript/typeUtils.js +1 -0
  294. package/lib/typescript/utils.d.ts +0 -1
  295. package/lib/typescript/utils.js +80 -0
  296. package/lib/typescript/web/Gestures.d.ts +0 -1
  297. package/lib/typescript/web/Gestures.js +38 -0
  298. package/lib/typescript/web/constants.d.ts +0 -1
  299. package/lib/typescript/web/constants.js +2 -0
  300. package/lib/typescript/web/detectors/RotationGestureDetector.d.ts +0 -1
  301. package/lib/typescript/web/detectors/RotationGestureDetector.d.ts.map +1 -1
  302. package/lib/typescript/web/detectors/RotationGestureDetector.js +122 -0
  303. package/lib/typescript/web/detectors/ScaleGestureDetector.d.ts +0 -1
  304. package/lib/typescript/web/detectors/ScaleGestureDetector.js +117 -0
  305. package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +0 -1
  306. package/lib/typescript/web/handlers/FlingGestureHandler.d.ts.map +1 -1
  307. package/lib/typescript/web/handlers/FlingGestureHandler.js +133 -0
  308. package/lib/typescript/web/handlers/GestureHandler.d.ts +0 -1
  309. package/lib/typescript/web/handlers/GestureHandler.d.ts.map +1 -1
  310. package/lib/typescript/web/handlers/GestureHandler.js +656 -0
  311. package/lib/typescript/web/handlers/HoverGestureHandler.d.ts +0 -1
  312. package/lib/typescript/web/handlers/HoverGestureHandler.js +37 -0
  313. package/lib/typescript/web/handlers/IGestureHandler.d.ts +0 -1
  314. package/lib/typescript/web/handlers/IGestureHandler.js +1 -0
  315. package/lib/typescript/web/handlers/LongPressGestureHandler.d.ts +0 -1
  316. package/lib/typescript/web/handlers/LongPressGestureHandler.js +136 -0
  317. package/lib/typescript/web/handlers/ManualGestureHandler.d.ts +0 -1
  318. package/lib/typescript/web/handlers/ManualGestureHandler.js +29 -0
  319. package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts +0 -1
  320. package/lib/typescript/web/handlers/NativeViewGestureHandler.js +133 -0
  321. package/lib/typescript/web/handlers/PanGestureHandler.d.ts +2 -1
  322. package/lib/typescript/web/handlers/PanGestureHandler.d.ts.map +1 -1
  323. package/lib/typescript/web/handlers/PanGestureHandler.js +420 -0
  324. package/lib/typescript/web/handlers/PinchGestureHandler.d.ts +0 -1
  325. package/lib/typescript/web/handlers/PinchGestureHandler.js +117 -0
  326. package/lib/typescript/web/handlers/RotationGestureHandler.d.ts +0 -1
  327. package/lib/typescript/web/handlers/RotationGestureHandler.js +122 -0
  328. package/lib/typescript/web/handlers/TapGestureHandler.d.ts +1 -1
  329. package/lib/typescript/web/handlers/TapGestureHandler.d.ts.map +1 -1
  330. package/lib/typescript/web/handlers/TapGestureHandler.js +202 -0
  331. package/lib/typescript/web/interfaces.d.ts +0 -1
  332. package/lib/typescript/web/interfaces.js +25 -0
  333. package/lib/typescript/web/tools/CircularBuffer.d.ts +0 -1
  334. package/lib/typescript/web/tools/CircularBuffer.js +37 -0
  335. package/lib/typescript/web/tools/EventManager.d.ts +0 -1
  336. package/lib/typescript/web/tools/EventManager.js +85 -0
  337. package/lib/typescript/web/tools/GestureHandlerDelegate.d.ts +0 -1
  338. package/lib/typescript/web/tools/GestureHandlerDelegate.js +1 -0
  339. package/lib/typescript/web/tools/GestureHandlerOrchestrator.d.ts +0 -1
  340. package/lib/typescript/web/tools/GestureHandlerOrchestrator.d.ts.map +1 -1
  341. package/lib/typescript/web/tools/GestureHandlerOrchestrator.js +273 -0
  342. package/lib/typescript/web/tools/GestureHandlerWebDelegate.d.ts +0 -1
  343. package/lib/typescript/web/tools/GestureHandlerWebDelegate.js +169 -0
  344. package/lib/typescript/web/tools/InteractionManager.d.ts +0 -1
  345. package/lib/typescript/web/tools/InteractionManager.js +91 -0
  346. package/lib/typescript/web/tools/KeyboardEventManager.d.ts +0 -1
  347. package/lib/typescript/web/tools/KeyboardEventManager.js +73 -0
  348. package/lib/typescript/web/tools/LeastSquareSolver.d.ts +0 -1
  349. package/lib/typescript/web/tools/LeastSquareSolver.js +147 -0
  350. package/lib/typescript/web/tools/NodeManager.d.ts +0 -1
  351. package/lib/typescript/web/tools/NodeManager.js +28 -0
  352. package/lib/typescript/web/tools/PointerEventManager.d.ts +0 -1
  353. package/lib/typescript/web/tools/PointerEventManager.js +179 -0
  354. package/lib/typescript/web/tools/PointerTracker.d.ts +3 -4
  355. package/lib/typescript/web/tools/PointerTracker.d.ts.map +1 -1
  356. package/lib/typescript/web/tools/PointerTracker.js +161 -0
  357. package/lib/typescript/web/tools/Vector.d.ts +1 -2
  358. package/lib/typescript/web/tools/Vector.js +43 -0
  359. package/lib/typescript/web/tools/VelocityTracker.d.ts +0 -1
  360. package/lib/typescript/web/tools/VelocityTracker.js +76 -0
  361. package/lib/typescript/web/tools/WheelEventManager.d.ts +0 -1
  362. package/lib/typescript/web/tools/WheelEventManager.js +40 -0
  363. package/lib/typescript/web/utils.d.ts +0 -1
  364. package/lib/typescript/web/utils.js +233 -0
  365. package/lib/typescript/web_hammer/DiscreteGestureHandler.d.ts +0 -1
  366. package/lib/typescript/web_hammer/DiscreteGestureHandler.js +48 -0
  367. package/lib/typescript/web_hammer/DraggingGestureHandler.d.ts +0 -1
  368. package/lib/typescript/web_hammer/DraggingGestureHandler.js +25 -0
  369. package/lib/typescript/web_hammer/Errors.d.ts +0 -1
  370. package/lib/typescript/web_hammer/Errors.js +5 -0
  371. package/lib/typescript/web_hammer/FlingGestureHandler.d.ts +0 -1
  372. package/lib/typescript/web_hammer/FlingGestureHandler.js +119 -0
  373. package/lib/typescript/web_hammer/GestureHandler.d.ts +0 -1
  374. package/lib/typescript/web_hammer/GestureHandler.js +469 -0
  375. package/lib/typescript/web_hammer/IndiscreteGestureHandler.d.ts +0 -1
  376. package/lib/typescript/web_hammer/IndiscreteGestureHandler.js +26 -0
  377. package/lib/typescript/web_hammer/LongPressGestureHandler.d.ts +0 -1
  378. package/lib/typescript/web_hammer/LongPressGestureHandler.js +46 -0
  379. package/lib/typescript/web_hammer/NativeViewGestureHandler.d.ts +0 -1
  380. package/lib/typescript/web_hammer/NativeViewGestureHandler.js +40 -0
  381. package/lib/typescript/web_hammer/NodeManager.d.ts +0 -1
  382. package/lib/typescript/web_hammer/NodeManager.js +28 -0
  383. package/lib/typescript/web_hammer/PanGestureHandler.d.ts +0 -1
  384. package/lib/typescript/web_hammer/PanGestureHandler.js +151 -0
  385. package/lib/typescript/web_hammer/PinchGestureHandler.d.ts +0 -1
  386. package/lib/typescript/web_hammer/PinchGestureHandler.js +19 -0
  387. package/lib/typescript/web_hammer/PressGestureHandler.d.ts +0 -1
  388. package/lib/typescript/web_hammer/PressGestureHandler.js +133 -0
  389. package/lib/typescript/web_hammer/RotationGestureHandler.d.ts +0 -1
  390. package/lib/typescript/web_hammer/RotationGestureHandler.js +20 -0
  391. package/lib/typescript/web_hammer/TapGestureHandler.d.ts +0 -1
  392. package/lib/typescript/web_hammer/TapGestureHandler.js +142 -0
  393. package/lib/typescript/web_hammer/constants.d.ts +0 -1
  394. package/lib/typescript/web_hammer/constants.js +42 -0
  395. package/lib/typescript/web_hammer/utils.d.ts +0 -1
  396. package/lib/typescript/web_hammer/utils.js +15 -0
  397. package/package.json +4 -2
  398. package/src/components/Pressable/Pressable.tsx +357 -445
  399. package/src/components/Pressable/PressableProps.tsx +15 -0
  400. package/src/components/Pressable/StateMachine.tsx +49 -0
  401. package/src/components/Pressable/stateDefinitions.ts +125 -0
  402. package/src/components/Pressable/utils.ts +11 -7
  403. package/src/handlers/GestureHandlerEventPayload.ts +3 -0
  404. package/src/handlers/gestureHandlerTypesCompat.ts +9 -0
  405. package/src/handlers/gestures/forceTouchGesture.ts +9 -0
  406. package/src/handlers/gestures/gestureObjects.ts +3 -1
  407. package/src/web/detectors/RotationGestureDetector.ts +4 -0
  408. package/src/web/handlers/FlingGestureHandler.ts +4 -0
  409. package/src/web/handlers/GestureHandler.ts +9 -3
  410. package/src/web/handlers/PanGestureHandler.ts +25 -36
  411. package/src/web/handlers/TapGestureHandler.ts +14 -19
  412. package/src/web/tools/GestureHandlerOrchestrator.ts +1 -0
  413. package/src/web/tools/PointerEventManager.ts +1 -1
  414. package/src/web/tools/PointerTracker.ts +17 -15
  415. package/src/web/tools/Vector.ts +1 -1
@@ -6,9 +6,12 @@ import {
6
6
  ViewStyle,
7
7
  PressableStateCallbackType as RNPressableStateCallbackType,
8
8
  PressableAndroidRippleConfig as RNPressableAndroidRippleConfig,
9
+ View,
9
10
  } from 'react-native';
10
11
  import { RelationPropType } from '../utils';
11
12
 
13
+ export type PressableDimensions = { width: number; height: number };
14
+
12
15
  export type PressableStateCallbackType = RNPressableStateCallbackType;
13
16
  export type PressableAndroidRippleConfig = RNPressableAndroidRippleConfig;
14
17
 
@@ -60,6 +63,11 @@ export interface PressableProps
60
63
  */
61
64
  onLongPress?: null | ((event: PressableEvent) => void);
62
65
 
66
+ /**
67
+ * A reference to the pressable element.
68
+ */
69
+ ref?: React.RefObject<View>;
70
+
63
71
  /**
64
72
  * Either children or a render prop that receives a boolean reflecting whether
65
73
  * the component is currently pressed.
@@ -158,4 +166,11 @@ export interface PressableProps
158
166
  * used with the Pressable's gesture handlers.
159
167
  */
160
168
  blocksExternalGesture?: RelationPropType;
169
+
170
+ /**
171
+ * Defines the dimensions of the Pressable after it's been resized.
172
+ * This property does not affect Pressable's physical appearance.
173
+ * Required when the Pressable is resized **and** uses pressRetentionOffset.
174
+ */
175
+ dimensionsAfterResize?: PressableDimensions;
161
176
  }
@@ -0,0 +1,49 @@
1
+ import { PressableEvent } from './PressableProps';
2
+
3
+ interface StateDefinition {
4
+ eventName: string;
5
+ callback?: (event: PressableEvent) => void;
6
+ }
7
+
8
+ class PressableStateMachine {
9
+ private states: StateDefinition[];
10
+ private currentStepIndex: number;
11
+ private eventPayload: PressableEvent | null;
12
+
13
+ constructor(steps: StateDefinition[]) {
14
+ this.states = steps;
15
+ this.currentStepIndex = 0;
16
+ this.eventPayload = null;
17
+ }
18
+
19
+ public reset() {
20
+ this.currentStepIndex = 0;
21
+ this.eventPayload = null;
22
+ }
23
+
24
+ public handleEvent(eventName: string, eventPayload?: PressableEvent) {
25
+ const step = this.states[this.currentStepIndex];
26
+ this.eventPayload = eventPayload || this.eventPayload;
27
+
28
+ if (step.eventName !== eventName) {
29
+ if (this.currentStepIndex > 0) {
30
+ // retry with position at index 0
31
+ this.reset();
32
+ this.handleEvent(eventName, eventPayload);
33
+ }
34
+ return;
35
+ }
36
+
37
+ if (this.eventPayload && step.callback) {
38
+ step.callback(this.eventPayload);
39
+ }
40
+
41
+ this.currentStepIndex++;
42
+
43
+ if (this.currentStepIndex === this.states.length) {
44
+ this.reset();
45
+ }
46
+ }
47
+ }
48
+
49
+ export { PressableStateMachine };
@@ -0,0 +1,125 @@
1
+ import { Platform } from 'react-native';
2
+ import { PressableEvent } from './PressableProps';
3
+ import { PressableStateMachine } from './StateMachine';
4
+
5
+ export enum StateMachineEvent {
6
+ NATIVE_BEGIN = 'nativeBegin',
7
+ NATIVE_START = 'nativeStart',
8
+ FINALIZE = 'finalize',
9
+ LONG_PRESS_TOUCHES_DOWN = 'longPressTouchesDown',
10
+ }
11
+
12
+ function getAndroidStateMachine(
13
+ handlePressIn: (event: PressableEvent) => void,
14
+ handlePressOut: (event: PressableEvent) => void
15
+ ) {
16
+ return new PressableStateMachine([
17
+ {
18
+ eventName: StateMachineEvent.NATIVE_BEGIN,
19
+ },
20
+ {
21
+ eventName: StateMachineEvent.LONG_PRESS_TOUCHES_DOWN,
22
+ callback: handlePressIn,
23
+ },
24
+ {
25
+ eventName: StateMachineEvent.FINALIZE,
26
+ callback: handlePressOut,
27
+ },
28
+ ]);
29
+ }
30
+
31
+ function getIosStateMachine(
32
+ handlePressIn: (event: PressableEvent) => void,
33
+ handlePressOut: (event: PressableEvent) => void
34
+ ) {
35
+ return new PressableStateMachine([
36
+ {
37
+ eventName: StateMachineEvent.LONG_PRESS_TOUCHES_DOWN,
38
+ },
39
+ {
40
+ eventName: StateMachineEvent.NATIVE_START,
41
+ callback: handlePressIn,
42
+ },
43
+ {
44
+ eventName: StateMachineEvent.FINALIZE,
45
+ callback: handlePressOut,
46
+ },
47
+ ]);
48
+ }
49
+
50
+ function getWebStateMachine(
51
+ handlePressIn: (event: PressableEvent) => void,
52
+ handlePressOut: (event: PressableEvent) => void
53
+ ) {
54
+ return new PressableStateMachine([
55
+ {
56
+ eventName: StateMachineEvent.NATIVE_BEGIN,
57
+ },
58
+ {
59
+ eventName: StateMachineEvent.NATIVE_START,
60
+ },
61
+ {
62
+ eventName: StateMachineEvent.LONG_PRESS_TOUCHES_DOWN,
63
+ callback: handlePressIn,
64
+ },
65
+ {
66
+ eventName: StateMachineEvent.FINALIZE,
67
+ callback: handlePressOut,
68
+ },
69
+ ]);
70
+ }
71
+
72
+ function getMacosStateMachine(
73
+ handlePressIn: (event: PressableEvent) => void,
74
+ handlePressOut: (event: PressableEvent) => void
75
+ ) {
76
+ return new PressableStateMachine([
77
+ {
78
+ eventName: StateMachineEvent.LONG_PRESS_TOUCHES_DOWN,
79
+ },
80
+ {
81
+ eventName: StateMachineEvent.NATIVE_BEGIN,
82
+ callback: handlePressIn,
83
+ },
84
+ {
85
+ eventName: StateMachineEvent.NATIVE_START,
86
+ },
87
+ {
88
+ eventName: StateMachineEvent.FINALIZE,
89
+ callback: handlePressOut,
90
+ },
91
+ ]);
92
+ }
93
+
94
+ function getUniversalStateMachine(
95
+ handlePressIn: (event: PressableEvent) => void,
96
+ handlePressOut: (event: PressableEvent) => void
97
+ ) {
98
+ return new PressableStateMachine([
99
+ {
100
+ eventName: StateMachineEvent.FINALIZE,
101
+ callback: (event: PressableEvent) => {
102
+ handlePressIn(event);
103
+ handlePressOut(event);
104
+ },
105
+ },
106
+ ]);
107
+ }
108
+
109
+ export function getConfiguredStateMachine(
110
+ handlePressIn: (event: PressableEvent) => void,
111
+ handlePressOut: (event: PressableEvent) => void
112
+ ) {
113
+ if (Platform.OS === 'android') {
114
+ return getAndroidStateMachine(handlePressIn, handlePressOut);
115
+ } else if (Platform.OS === 'ios') {
116
+ return getIosStateMachine(handlePressIn, handlePressOut);
117
+ } else if (Platform.OS === 'web') {
118
+ return getWebStateMachine(handlePressIn, handlePressOut);
119
+ } else if (Platform.OS === 'macos') {
120
+ return getMacosStateMachine(handlePressIn, handlePressOut);
121
+ } else {
122
+ // Unknown platform - using minimal universal setup.
123
+ return getUniversalStateMachine(handlePressIn, handlePressOut);
124
+ }
125
+ }
@@ -8,7 +8,11 @@ import {
8
8
  GestureStateChangeEvent,
9
9
  GestureTouchEvent,
10
10
  } from '../../handlers/gestureHandlerCommon';
11
- import { InnerPressableEvent, PressableEvent } from './PressableProps';
11
+ import {
12
+ PressableDimensions,
13
+ InnerPressableEvent,
14
+ PressableEvent,
15
+ } from './PressableProps';
12
16
 
13
17
  const numberAsInset = (value: number): Insets => ({
14
18
  left: value,
@@ -59,14 +63,14 @@ const gestureToPressEvent = (
59
63
  });
60
64
 
61
65
  const isTouchWithinInset = (
62
- dimensions: { width: number; height: number },
66
+ dimensions: PressableDimensions,
63
67
  inset: Insets,
64
- touch?: TouchData
68
+ touch?: InnerPressableEvent
65
69
  ) =>
66
- (touch?.x ?? 0) < (inset.right ?? 0) + dimensions.width &&
67
- (touch?.y ?? 0) < (inset.bottom ?? 0) + dimensions.height &&
68
- (touch?.x ?? 0) > -(inset.left ?? 0) &&
69
- (touch?.y ?? 0) > -(inset.top ?? 0);
70
+ (touch?.locationX ?? 0) < (inset.right ?? 0) + dimensions.width &&
71
+ (touch?.locationY ?? 0) < (inset.bottom ?? 0) + dimensions.height &&
72
+ (touch?.locationX ?? 0) > -(inset.left ?? 0) &&
73
+ (touch?.locationY ?? 0) > -(inset.top ?? 0);
70
74
 
71
75
  const gestureToPressableEvent = (
72
76
  event: GestureStateChangeEvent<
@@ -7,6 +7,9 @@ export type FlingGestureHandlerEventPayload = {
7
7
  absoluteY: number;
8
8
  };
9
9
 
10
+ /**
11
+ * @deprecated ForceTouch gesture is deprecated and will be removed in the future.
12
+ */
10
13
  export type ForceTouchGestureHandlerEventPayload = {
11
14
  x: number;
12
15
  y: number;
@@ -46,8 +46,14 @@ export type TapGestureHandlerGestureEvent =
46
46
  export type TapGestureHandlerStateChangeEvent =
47
47
  HandlerStateChangeEvent<TapGestureHandlerEventPayload>;
48
48
 
49
+ /**
50
+ * @deprecated ForceTouchGestureHandler is deprecated and will be removed in the future.
51
+ */
49
52
  export type ForceTouchGestureHandlerGestureEvent =
50
53
  GestureEvent<ForceTouchGestureHandlerEventPayload>;
54
+ /**
55
+ * @deprecated ForceTouchGestureHandler is deprecated and will be removed in the future.
56
+ */
51
57
  export type ForceTouchGestureHandlerStateChangeEvent =
52
58
  HandlerStateChangeEvent<ForceTouchGestureHandlerEventPayload>;
53
59
 
@@ -84,6 +90,9 @@ export type PanGestureHandlerProperties = PanGestureHandlerProps;
84
90
  export type PinchGestureHandlerProperties = PinchGestureHandlerProps;
85
91
  export type RotationGestureHandlerProperties = RotationGestureHandlerProps;
86
92
  export type FlingGestureHandlerProperties = FlingGestureHandlerProps;
93
+ /**
94
+ * @deprecated ForceTouch gesture is deprecated and will be removed in the future.
95
+ */
87
96
  export type ForceTouchGestureHandlerProperties = ForceTouchGestureHandlerProps;
88
97
  // Button props
89
98
  export type RawButtonProperties = RawButtonProps;
@@ -3,6 +3,9 @@ import { ForceTouchGestureConfig } from '../ForceTouchGestureHandler';
3
3
  import type { ForceTouchGestureHandlerEventPayload } from '../GestureHandlerEventPayload';
4
4
  import { GestureUpdateEvent } from '../gestureHandlerCommon';
5
5
 
6
+ /**
7
+ * @deprecated ForceTouch gesture is deprecated and will be removed in the future.
8
+ */
6
9
  export type ForceTouchGestureChangeEventPayload = {
7
10
  forceChange: number;
8
11
  };
@@ -26,6 +29,9 @@ function changeEventCalculator(
26
29
  return { ...current, ...changePayload };
27
30
  }
28
31
 
32
+ /**
33
+ * @deprecated ForceTouch gesture is deprecated and will be removed in the future.
34
+ */
29
35
  export class ForceTouchGesture extends ContinousBaseGesture<
30
36
  ForceTouchGestureHandlerEventPayload,
31
37
  ForceTouchGestureChangeEventPayload
@@ -83,4 +89,7 @@ export class ForceTouchGesture extends ContinousBaseGesture<
83
89
  }
84
90
  }
85
91
 
92
+ /**
93
+ * @deprecated ForceTouch gesture is deprecated and will be removed in the future.
94
+ */
86
95
  export type ForceTouchGestureType = InstanceType<typeof ForceTouchGesture>;
@@ -73,7 +73,9 @@ export const GestureObjects = {
73
73
  },
74
74
 
75
75
  /**
76
- * #### iOS only
76
+ * @deprecated ForceTouch gesture is deprecated and will be removed in the future.
77
+ *
78
+ * #### iOS only
77
79
  * A continuous gesture that recognizes force of a touch. It allows for tracking pressure of touch on some iOS devices.
78
80
  * @see https://docs.swmansion.com/react-native-gesture-handler/docs/gestures/force-touch-gesture
79
81
  */
@@ -42,6 +42,10 @@ export default class RotationGestureDetector
42
42
  const firstPointerCoords = tracker.getLastAbsoluteCoords(firstPointerID);
43
43
  const secondPointerCoords = tracker.getLastAbsoluteCoords(secondPointerID);
44
44
 
45
+ if (!firstPointerCoords || !secondPointerCoords) {
46
+ return;
47
+ }
48
+
45
49
  const vectorX: number = secondPointerCoords.x - firstPointerCoords.x;
46
50
  const vectorY: number = secondPointerCoords.y - firstPointerCoords.y;
47
51
 
@@ -49,6 +49,10 @@ export default class FlingGestureHandler extends GestureHandler {
49
49
  private tryEndFling(): boolean {
50
50
  const velocityVector = Vector.fromVelocity(this.tracker, this.keyPointer);
51
51
 
52
+ if (!velocityVector) {
53
+ return false;
54
+ }
55
+
52
56
  const getAlignment = (
53
57
  direction: Directions | DiagonalDirections,
54
58
  minimalAlignmentCosine: number
@@ -701,9 +701,15 @@ export default abstract class GestureHandler implements IGestureHandler {
701
701
  }
702
702
 
703
703
  const rect = this.delegate.measureView();
704
- const { x, y } = this.tracker.getLastAbsoluteCoords();
705
- const offsetX: number = x - rect.pageX;
706
- const offsetY: number = y - rect.pageY;
704
+
705
+ const lastCoords = this.tracker.getLastAbsoluteCoords();
706
+
707
+ if (!lastCoords) {
708
+ return false;
709
+ }
710
+
711
+ const offsetX: number = lastCoords.x - rect.pageX;
712
+ const offsetY: number = lastCoords.y - rect.pageY;
707
713
 
708
714
  return (
709
715
  offsetX >= left && offsetX <= right && offsetY >= top && offsetY <= bottom
@@ -218,6 +218,20 @@ export default class PanGestureHandler extends GestureHandler {
218
218
  clearTimeout(this.activationTimeout);
219
219
  }
220
220
 
221
+ private updateLastCoords() {
222
+ const { x, y } = this.tracker.getAbsoluteCoordsAverage();
223
+
224
+ this.lastX = x;
225
+ this.lastY = y;
226
+ }
227
+
228
+ private updateVelocity(pointerId: number) {
229
+ const velocities = this.tracker.getVelocity(pointerId);
230
+
231
+ this.velocityX = velocities?.x ?? 0;
232
+ this.velocityY = velocities?.y ?? 0;
233
+ }
234
+
221
235
  // Events Handling
222
236
  protected onPointerDown(event: AdaptedEvent): void {
223
237
  if (!this.isButtonInConfig(event.button)) {
@@ -229,9 +243,7 @@ export default class PanGestureHandler extends GestureHandler {
229
243
 
230
244
  super.onPointerDown(event);
231
245
 
232
- const lastCoords = this.tracker.getAbsoluteCoordsAverage();
233
- this.lastX = lastCoords.x;
234
- this.lastY = lastCoords.y;
246
+ this.updateLastCoords();
235
247
 
236
248
  this.startX = this.lastX;
237
249
  this.startY = this.lastY;
@@ -250,9 +262,7 @@ export default class PanGestureHandler extends GestureHandler {
250
262
  this.offsetX += this.lastX - this.startX;
251
263
  this.offsetY += this.lastY - this.startY;
252
264
 
253
- const lastCoords = this.tracker.getAbsoluteCoordsAverage();
254
- this.lastX = lastCoords.x;
255
- this.lastY = lastCoords.y;
265
+ this.updateLastCoords();
256
266
 
257
267
  this.startX = this.lastX;
258
268
  this.startY = this.lastY;
@@ -299,9 +309,7 @@ export default class PanGestureHandler extends GestureHandler {
299
309
  this.offsetX += this.lastX - this.startX;
300
310
  this.offsetY += this.lastY - this.startY;
301
311
 
302
- const lastCoords = this.tracker.getAbsoluteCoordsAverage();
303
- this.lastX = lastCoords.x;
304
- this.lastY = lastCoords.y;
312
+ this.updateLastCoords();
305
313
 
306
314
  this.startX = this.lastX;
307
315
  this.startY = this.lastY;
@@ -320,13 +328,8 @@ export default class PanGestureHandler extends GestureHandler {
320
328
  this.tracker.track(event);
321
329
  this.stylusData = event.stylusData;
322
330
 
323
- const lastCoords = this.tracker.getAbsoluteCoordsAverage();
324
- this.lastX = lastCoords.x;
325
- this.lastY = lastCoords.y;
326
-
327
- const velocity = this.tracker.getVelocity(event.pointerId);
328
- this.velocityX = velocity.x;
329
- this.velocityY = velocity.y;
331
+ this.updateLastCoords();
332
+ this.updateVelocity(event.pointerId);
330
333
 
331
334
  this.checkBegan();
332
335
 
@@ -341,13 +344,8 @@ export default class PanGestureHandler extends GestureHandler {
341
344
  this.tracker.track(event);
342
345
  this.stylusData = event.stylusData;
343
346
 
344
- const lastCoords = this.tracker.getAbsoluteCoordsAverage();
345
- this.lastX = lastCoords.x;
346
- this.lastY = lastCoords.y;
347
-
348
- const velocity = this.tracker.getVelocity(event.pointerId);
349
- this.velocityX = velocity.x;
350
- this.velocityY = velocity.y;
347
+ this.updateLastCoords();
348
+ this.updateVelocity(event.pointerId);
351
349
 
352
350
  this.checkBegan();
353
351
 
@@ -391,9 +389,7 @@ export default class PanGestureHandler extends GestureHandler {
391
389
 
392
390
  this.tracker.addToTracker(event);
393
391
 
394
- const lastCoords = this.tracker.getAbsoluteCoordsAverage();
395
- this.lastX = lastCoords.x;
396
- this.lastY = lastCoords.y;
392
+ this.updateLastCoords();
397
393
 
398
394
  this.startX = this.lastX;
399
395
  this.startY = this.lastY;
@@ -403,13 +399,8 @@ export default class PanGestureHandler extends GestureHandler {
403
399
  }
404
400
  this.tracker.track(event);
405
401
 
406
- const lastCoords = this.tracker.getAbsoluteCoordsAverage();
407
- this.lastX = lastCoords.x;
408
- this.lastY = lastCoords.y;
409
-
410
- const velocity = this.tracker.getVelocity(event.pointerId);
411
- this.velocityX = velocity.x;
412
- this.velocityY = velocity.y;
402
+ this.updateLastCoords();
403
+ this.updateVelocity(event.pointerId);
413
404
 
414
405
  this.tryToSendMoveEvent(false, event);
415
406
  this.scheduleWheelEnd(event);
@@ -540,9 +531,7 @@ export default class PanGestureHandler extends GestureHandler {
540
531
  }, this.activateAfterLongPress);
541
532
  }
542
533
  } else {
543
- const velocity = this.tracker.getVelocity(event.pointerId);
544
- this.velocityX = velocity.x;
545
- this.velocityY = velocity.y;
534
+ this.updateVelocity(event.pointerId);
546
535
  }
547
536
  }
548
537
 
@@ -99,6 +99,13 @@ export default class TapGestureHandler extends GestureHandler {
99
99
  }
100
100
  }
101
101
 
102
+ private updateLastCoords() {
103
+ const { x, y } = this.tracker.getAbsoluteCoordsAverage();
104
+
105
+ this.lastX = x;
106
+ this.lastY = y;
107
+ }
108
+
102
109
  // Handling Events
103
110
  protected onPointerDown(event: AdaptedEvent): void {
104
111
  if (!this.isButtonInConfig(event.button)) {
@@ -129,12 +136,10 @@ export default class TapGestureHandler extends GestureHandler {
129
136
  this.offsetX += this.lastX - this.startX;
130
137
  this.offsetY += this.lastY - this.startY;
131
138
 
132
- const lastCoords = this.tracker.getAbsoluteCoordsAverage();
133
- this.lastX = lastCoords.x;
134
- this.lastY = lastCoords.y;
139
+ this.updateLastCoords();
135
140
 
136
- this.startX = lastCoords.x;
137
- this.startY = lastCoords.y;
141
+ this.startX = this.lastX;
142
+ this.startY = this.lastY;
138
143
 
139
144
  this.updateState(event);
140
145
  }
@@ -142,9 +147,7 @@ export default class TapGestureHandler extends GestureHandler {
142
147
  protected onPointerUp(event: AdaptedEvent): void {
143
148
  super.onPointerUp(event);
144
149
 
145
- const lastCoords = this.tracker.getAbsoluteCoordsAverage();
146
- this.lastX = lastCoords.x;
147
- this.lastY = lastCoords.y;
150
+ this.updateLastCoords();
148
151
 
149
152
  this.tracker.removeFromTracker(event.pointerId);
150
153
 
@@ -158,9 +161,7 @@ export default class TapGestureHandler extends GestureHandler {
158
161
  this.offsetX += this.lastX - this.startX;
159
162
  this.offsetY += this.lastY = this.startY;
160
163
 
161
- const lastCoords = this.tracker.getAbsoluteCoordsAverage();
162
- this.lastX = lastCoords.x;
163
- this.lastY = lastCoords.y;
164
+ this.updateLastCoords();
164
165
 
165
166
  this.startX = this.lastX;
166
167
  this.startY = this.lastY;
@@ -172,10 +173,7 @@ export default class TapGestureHandler extends GestureHandler {
172
173
  this.trySettingPosition(event);
173
174
  this.tracker.track(event);
174
175
 
175
- const lastCoords = this.tracker.getAbsoluteCoordsAverage();
176
- this.lastX = lastCoords.x;
177
- this.lastY = lastCoords.y;
178
-
176
+ this.updateLastCoords();
179
177
  this.updateState(event);
180
178
 
181
179
  super.onPointerMove(event);
@@ -185,10 +183,7 @@ export default class TapGestureHandler extends GestureHandler {
185
183
  this.trySettingPosition(event);
186
184
  this.tracker.track(event);
187
185
 
188
- const lastCoords = this.tracker.getAbsoluteCoordsAverage();
189
- this.lastX = lastCoords.x;
190
- this.lastY = lastCoords.y;
191
-
186
+ this.updateLastCoords();
192
187
  this.updateState(event);
193
188
 
194
189
  super.onPointerOutOfBounds(event);
@@ -337,6 +337,7 @@ export default class GestureHandlerOrchestrator {
337
337
  const point = handler.tracker.getLastAbsoluteCoords(pointer);
338
338
 
339
339
  return (
340
+ point &&
340
341
  handler.delegate.isPointerInBounds(point) &&
341
342
  otherHandler.delegate.isPointerInBounds(point)
342
343
  );
@@ -98,7 +98,7 @@ export default class PointerEventManager extends EventManager<HTMLElement> {
98
98
  // pointer moves until it succeeds.
99
99
  // God, I do love web development.
100
100
  if (
101
- !target.hasPointerCapture(event.pointerId) &&
101
+ !target?.hasPointerCapture(event.pointerId) &&
102
102
  !POINTER_CAPTURE_EXCLUDE_LIST.has(target.tagName)
103
103
  ) {
104
104
  target.setPointerCapture(event.pointerId);
@@ -61,11 +61,9 @@ export default class PointerTracker {
61
61
  }
62
62
 
63
63
  public track(event: AdaptedEvent): void {
64
- const element: TrackerElement = this.trackedPointers.get(
65
- event.pointerId
66
- ) as TrackerElement;
64
+ const pointerData = this.trackedPointers.get(event.pointerId);
67
65
 
68
- if (!element) {
66
+ if (!pointerData) {
69
67
  return;
70
68
  }
71
69
 
@@ -74,13 +72,13 @@ export default class PointerTracker {
74
72
  this.velocityTracker.add(event);
75
73
  const [velocityX, velocityY] = this.velocityTracker.velocity;
76
74
 
77
- element.velocityX = velocityX;
78
- element.velocityY = velocityY;
75
+ pointerData.velocityX = velocityX;
76
+ pointerData.velocityY = velocityY;
79
77
 
80
- element.abosoluteCoords = { x: event.x, y: event.y };
81
- element.relativeCoords = { x: event.offsetX, y: event.offsetY };
78
+ pointerData.abosoluteCoords = { x: event.x, y: event.y };
79
+ pointerData.relativeCoords = { x: event.offsetX, y: event.offsetY };
82
80
 
83
- this.trackedPointers.set(event.pointerId, element);
81
+ this.trackedPointers.set(event.pointerId, pointerData);
84
82
 
85
83
  this.cachedAbsoluteAverages = this.getAbsoluteCoordsAverage();
86
84
  this.cachedRelativeAverages = this.getRelativeCoordsAverage();
@@ -114,20 +112,24 @@ export default class PointerTracker {
114
112
  }
115
113
 
116
114
  public getVelocity(pointerId: number) {
117
- return {
118
- x: this.trackedPointers.get(pointerId)?.velocityX as number,
119
- y: this.trackedPointers.get(pointerId)?.velocityY as number,
120
- };
115
+ const pointerData = this.trackedPointers.get(pointerId);
116
+
117
+ return pointerData
118
+ ? {
119
+ x: pointerData.velocityX,
120
+ y: pointerData.velocityY,
121
+ }
122
+ : null;
121
123
  }
122
124
 
123
125
  public getLastAbsoluteCoords(pointerId?: number) {
124
126
  return this.trackedPointers.get(pointerId ?? this.lastMovedPointerId)
125
- ?.abosoluteCoords as Point;
127
+ ?.abosoluteCoords;
126
128
  }
127
129
 
128
130
  public getLastRelativeCoords(pointerId?: number) {
129
131
  return this.trackedPointers.get(pointerId ?? this.lastMovedPointerId)
130
- ?.relativeCoords as Point;
132
+ ?.relativeCoords;
131
133
  }
132
134
 
133
135
  // Some handlers use these methods to send average values in native event.
@@ -27,7 +27,7 @@ export default class Vector {
27
27
 
28
28
  static fromVelocity(tracker: PointerTracker, pointerId: number) {
29
29
  const velocity = tracker.getVelocity(pointerId);
30
- return new Vector(velocity.x, velocity.y);
30
+ return velocity ? new Vector(velocity.x, velocity.y) : null;
31
31
  }
32
32
 
33
33
  public get magnitude() {