react-native-gesture-handler 2.27.1 → 2.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (426) hide show
  1. package/RNGestureHandler.podspec +3 -2
  2. package/ReanimatedSwipeable/package.json +4 -4
  3. package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt +14 -8
  4. package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt +10 -5
  5. package/android/src/main/jni/CMakeLists.txt +5 -0
  6. package/android/src/main/jni/cpp-adapter.cpp +6 -0
  7. package/apple/RNGestureHandler.h +4 -0
  8. package/apple/RNGestureHandler.mm +41 -6
  9. package/apple/RNGestureHandlerModule.mm +5 -0
  10. package/jestSetup.js +22 -3
  11. package/lib/commonjs/components/Pressable/Pressable.js +12 -21
  12. package/lib/commonjs/components/Pressable/Pressable.js.map +1 -1
  13. package/lib/commonjs/components/Pressable/StateMachine.js +8 -2
  14. package/lib/commonjs/components/Pressable/StateMachine.js.map +1 -1
  15. package/lib/commonjs/components/Pressable/stateDefinitions.js +22 -23
  16. package/lib/commonjs/components/Pressable/stateDefinitions.js.map +1 -1
  17. package/lib/commonjs/components/{ReanimatedSwipeable.js → ReanimatedSwipeable/ReanimatedSwipeable.js} +30 -39
  18. package/lib/commonjs/components/ReanimatedSwipeable/ReanimatedSwipeable.js.map +1 -0
  19. package/lib/commonjs/components/ReanimatedSwipeable/ReanimatedSwipeableProps.js +12 -0
  20. package/lib/commonjs/components/ReanimatedSwipeable/ReanimatedSwipeableProps.js.map +1 -0
  21. package/lib/commonjs/components/ReanimatedSwipeable/index.js +21 -0
  22. package/lib/commonjs/components/ReanimatedSwipeable/index.js.map +1 -0
  23. package/lib/commonjs/components/gestureHandlerRootHOC.js +4 -1
  24. package/lib/commonjs/components/gestureHandlerRootHOC.js.map +1 -1
  25. package/lib/commonjs/handlers/createHandler.js +1 -1
  26. package/lib/commonjs/handlers/createHandler.js.map +1 -1
  27. package/lib/commonjs/handlers/gestures/GestureDetector/index.js +1 -1
  28. package/lib/commonjs/handlers/gestures/GestureDetector/index.js.map +1 -1
  29. package/lib/commonjs/mocks/Pressable.js +13 -0
  30. package/lib/commonjs/mocks/Pressable.js.map +1 -0
  31. package/lib/commonjs/{mocks.js → mocks/mocks.js} +8 -11
  32. package/lib/commonjs/mocks/mocks.js.map +1 -0
  33. package/lib/commonjs/web/handlers/GestureHandler.js +5 -2
  34. package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
  35. package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js +0 -5
  36. package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js.map +1 -1
  37. package/lib/commonjs/web/tools/KeyboardEventManager.js +34 -8
  38. package/lib/commonjs/web/tools/KeyboardEventManager.js.map +1 -1
  39. package/lib/module/components/Pressable/Pressable.js +14 -23
  40. package/lib/module/components/Pressable/Pressable.js.map +1 -1
  41. package/lib/module/components/Pressable/StateMachine.js +8 -2
  42. package/lib/module/components/Pressable/StateMachine.js.map +1 -1
  43. package/lib/module/components/Pressable/stateDefinitions.js +21 -22
  44. package/lib/module/components/Pressable/stateDefinitions.js.map +1 -1
  45. package/lib/module/components/{ReanimatedSwipeable.js → ReanimatedSwipeable/ReanimatedSwipeable.js} +24 -33
  46. package/lib/module/components/ReanimatedSwipeable/ReanimatedSwipeable.js.map +1 -0
  47. package/lib/module/components/ReanimatedSwipeable/ReanimatedSwipeableProps.js +8 -0
  48. package/lib/module/components/ReanimatedSwipeable/ReanimatedSwipeableProps.js.map +1 -0
  49. package/lib/module/components/ReanimatedSwipeable/index.js +5 -0
  50. package/lib/module/components/ReanimatedSwipeable/index.js.map +1 -0
  51. package/lib/module/components/gestureHandlerRootHOC.js +5 -0
  52. package/lib/module/components/gestureHandlerRootHOC.js.map +1 -1
  53. package/lib/module/handlers/createHandler.js +1 -1
  54. package/lib/module/handlers/createHandler.js.map +1 -1
  55. package/lib/module/handlers/gestures/GestureDetector/index.js +1 -1
  56. package/lib/module/handlers/gestures/GestureDetector/index.js.map +1 -1
  57. package/lib/module/mocks/Pressable.js +4 -0
  58. package/lib/module/mocks/Pressable.js.map +1 -0
  59. package/lib/module/{mocks.js → mocks/mocks.js} +7 -11
  60. package/lib/module/mocks/mocks.js.map +1 -0
  61. package/lib/module/web/handlers/GestureHandler.js +5 -2
  62. package/lib/module/web/handlers/GestureHandler.js.map +1 -1
  63. package/lib/module/web/tools/GestureHandlerWebDelegate.js +0 -5
  64. package/lib/module/web/tools/GestureHandlerWebDelegate.js.map +1 -1
  65. package/lib/module/web/tools/KeyboardEventManager.js +34 -8
  66. package/lib/module/web/tools/KeyboardEventManager.js.map +1 -1
  67. package/lib/typescript/ActionType.d.ts +1 -0
  68. package/lib/typescript/Directions.d.ts +1 -0
  69. package/lib/typescript/EnableNewWebImplementation.d.ts +1 -0
  70. package/lib/typescript/GestureHandlerRootViewContext.d.ts +1 -0
  71. package/lib/typescript/PlatformConstants.d.ts +1 -0
  72. package/lib/typescript/PlatformConstants.web.d.ts +1 -0
  73. package/lib/typescript/PointerType.d.ts +1 -0
  74. package/lib/typescript/RNGestureHandlerModule.d.ts +1 -0
  75. package/lib/typescript/RNGestureHandlerModule.web.d.ts +1 -0
  76. package/lib/typescript/RNGestureHandlerModule.windows.d.ts +1 -0
  77. package/lib/typescript/RNRenderer.d.ts +1 -0
  78. package/lib/typescript/RNRenderer.web.d.ts +1 -0
  79. package/lib/typescript/State.d.ts +1 -0
  80. package/lib/typescript/TouchEventType.d.ts +1 -0
  81. package/lib/typescript/components/DrawerLayout.d.ts +1 -0
  82. package/lib/typescript/components/GestureButtons.d.ts +1 -0
  83. package/lib/typescript/components/GestureButtonsProps.d.ts +10 -1
  84. package/lib/typescript/components/GestureButtonsProps.d.ts.map +1 -1
  85. package/lib/typescript/components/GestureComponents.d.ts +1 -0
  86. package/lib/typescript/components/GestureComponents.web.d.ts +1 -0
  87. package/lib/typescript/components/GestureHandlerButton.d.ts +1 -0
  88. package/lib/typescript/components/GestureHandlerButton.web.d.ts +1 -0
  89. package/lib/typescript/components/GestureHandlerRootView.android.d.ts +1 -0
  90. package/lib/typescript/components/GestureHandlerRootView.d.ts +1 -0
  91. package/lib/typescript/components/GestureHandlerRootView.web.d.ts +1 -0
  92. package/lib/typescript/components/Pressable/Pressable.d.ts +1 -0
  93. package/lib/typescript/components/Pressable/Pressable.d.ts.map +1 -1
  94. package/lib/typescript/components/Pressable/PressableProps.d.ts +3 -4
  95. package/lib/typescript/components/Pressable/PressableProps.d.ts.map +1 -1
  96. package/lib/typescript/components/Pressable/StateMachine.d.ts +4 -2
  97. package/lib/typescript/components/Pressable/StateMachine.d.ts.map +1 -1
  98. package/lib/typescript/components/Pressable/index.d.ts +1 -0
  99. package/lib/typescript/components/Pressable/stateDefinitions.d.ts +3 -2
  100. package/lib/typescript/components/Pressable/stateDefinitions.d.ts.map +1 -1
  101. package/lib/typescript/components/Pressable/utils.d.ts +1 -0
  102. package/lib/typescript/components/ReanimatedDrawerLayout.d.ts +1 -0
  103. package/lib/typescript/components/ReanimatedSwipeable/ReanimatedSwipeable.d.ts +6 -0
  104. package/lib/typescript/components/ReanimatedSwipeable/ReanimatedSwipeable.d.ts.map +1 -0
  105. package/lib/typescript/components/{ReanimatedSwipeable.d.ts → ReanimatedSwipeable/ReanimatedSwipeableProps.d.ts} +10 -7
  106. package/lib/typescript/components/ReanimatedSwipeable/ReanimatedSwipeableProps.d.ts.map +1 -0
  107. package/lib/typescript/components/ReanimatedSwipeable/index.d.ts +3 -0
  108. package/lib/typescript/components/ReanimatedSwipeable/index.d.ts.map +1 -0
  109. package/lib/typescript/components/Swipeable.d.ts +1 -0
  110. package/lib/typescript/components/Text.d.ts +1 -0
  111. package/lib/typescript/components/gestureHandlerRootHOC.d.ts +5 -0
  112. package/lib/typescript/components/gestureHandlerRootHOC.d.ts.map +1 -1
  113. package/lib/typescript/components/touchables/ExtraButtonProps.d.ts +1 -0
  114. package/lib/typescript/components/touchables/GenericTouchable.d.ts +1 -0
  115. package/lib/typescript/components/touchables/GenericTouchableProps.d.ts +1 -0
  116. package/lib/typescript/components/touchables/TouchableHighlight.d.ts +1 -0
  117. package/lib/typescript/components/touchables/TouchableNativeFeedback.android.d.ts +1 -0
  118. package/lib/typescript/components/touchables/TouchableNativeFeedback.d.ts +1 -0
  119. package/lib/typescript/components/touchables/TouchableNativeFeedbackProps.d.ts +1 -0
  120. package/lib/typescript/components/touchables/TouchableOpacity.d.ts +1 -0
  121. package/lib/typescript/components/touchables/TouchableWithoutFeedback.d.ts +1 -0
  122. package/lib/typescript/components/touchables/index.d.ts +1 -0
  123. package/lib/typescript/components/utils.d.ts +1 -0
  124. package/lib/typescript/findNodeHandle.d.ts +1 -0
  125. package/lib/typescript/findNodeHandle.web.d.ts +1 -0
  126. package/lib/typescript/getShadowNodeFromRef.d.ts +1 -0
  127. package/lib/typescript/getShadowNodeFromRef.web.d.ts +1 -0
  128. package/lib/typescript/ghQueueMicrotask.d.ts +1 -0
  129. package/lib/typescript/handlers/FlingGestureHandler.d.ts +1 -0
  130. package/lib/typescript/handlers/ForceTouchGestureHandler.d.ts +1 -0
  131. package/lib/typescript/handlers/GestureHandlerEventPayload.d.ts +1 -0
  132. package/lib/typescript/handlers/LongPressGestureHandler.d.ts +1 -0
  133. package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +1 -0
  134. package/lib/typescript/handlers/PanGestureHandler.d.ts +1 -0
  135. package/lib/typescript/handlers/PinchGestureHandler.d.ts +1 -0
  136. package/lib/typescript/handlers/PressabilityDebugView.d.ts +1 -0
  137. package/lib/typescript/handlers/PressabilityDebugView.web.d.ts +1 -0
  138. package/lib/typescript/handlers/RotationGestureHandler.d.ts +1 -0
  139. package/lib/typescript/handlers/TapGestureHandler.d.ts +1 -0
  140. package/lib/typescript/handlers/createHandler.d.ts +1 -0
  141. package/lib/typescript/handlers/createNativeWrapper.d.ts +1 -0
  142. package/lib/typescript/handlers/customDirectEventTypes.d.ts +1 -0
  143. package/lib/typescript/handlers/customDirectEventTypes.web.d.ts +1 -0
  144. package/lib/typescript/handlers/gestureHandlerCommon.d.ts +1 -0
  145. package/lib/typescript/handlers/gestureHandlerTypesCompat.d.ts +1 -0
  146. package/lib/typescript/handlers/gestures/GestureDetector/Wrap.d.ts +1 -0
  147. package/lib/typescript/handlers/gestures/GestureDetector/Wrap.web.d.ts +1 -0
  148. package/lib/typescript/handlers/gestures/GestureDetector/attachHandlers.d.ts +1 -0
  149. package/lib/typescript/handlers/gestures/GestureDetector/dropHandlers.d.ts +1 -0
  150. package/lib/typescript/handlers/gestures/GestureDetector/index.d.ts +1 -0
  151. package/lib/typescript/handlers/gestures/GestureDetector/needsToReattach.d.ts +1 -0
  152. package/lib/typescript/handlers/gestures/GestureDetector/types.d.ts +1 -0
  153. package/lib/typescript/handlers/gestures/GestureDetector/updateHandlers.d.ts +1 -0
  154. package/lib/typescript/handlers/gestures/GestureDetector/useAnimatedGesture.d.ts +1 -0
  155. package/lib/typescript/handlers/gestures/GestureDetector/useDetectorUpdater.d.ts +1 -0
  156. package/lib/typescript/handlers/gestures/GestureDetector/useMountReactions.d.ts +1 -0
  157. package/lib/typescript/handlers/gestures/GestureDetector/useViewRefHandler.d.ts +1 -0
  158. package/lib/typescript/handlers/gestures/GestureDetector/utils.d.ts +1 -0
  159. package/lib/typescript/handlers/gestures/eventReceiver.d.ts +1 -0
  160. package/lib/typescript/handlers/gestures/flingGesture.d.ts +1 -0
  161. package/lib/typescript/handlers/gestures/forceTouchGesture.d.ts +1 -0
  162. package/lib/typescript/handlers/gestures/gesture.d.ts +1 -0
  163. package/lib/typescript/handlers/gestures/gestureComposition.d.ts +1 -0
  164. package/lib/typescript/handlers/gestures/gestureObjects.d.ts +1 -0
  165. package/lib/typescript/handlers/gestures/gestureStateManager.d.ts +1 -0
  166. package/lib/typescript/handlers/gestures/gestureStateManager.web.d.ts +1 -0
  167. package/lib/typescript/handlers/gestures/hoverGesture.d.ts +1 -0
  168. package/lib/typescript/handlers/gestures/longPressGesture.d.ts +1 -0
  169. package/lib/typescript/handlers/gestures/manualGesture.d.ts +1 -0
  170. package/lib/typescript/handlers/gestures/nativeGesture.d.ts +1 -0
  171. package/lib/typescript/handlers/gestures/panGesture.d.ts +1 -0
  172. package/lib/typescript/handlers/gestures/pinchGesture.d.ts +1 -0
  173. package/lib/typescript/handlers/gestures/reanimatedWrapper.d.ts +1 -0
  174. package/lib/typescript/handlers/gestures/rotationGesture.d.ts +1 -0
  175. package/lib/typescript/handlers/gestures/tapGesture.d.ts +1 -0
  176. package/lib/typescript/handlers/getNextHandlerTag.d.ts +1 -0
  177. package/lib/typescript/handlers/handlersRegistry.d.ts +1 -0
  178. package/lib/typescript/handlers/utils.d.ts +1 -0
  179. package/lib/typescript/index.d.ts +1 -0
  180. package/lib/typescript/init.d.ts +1 -0
  181. package/lib/typescript/jestUtils/index.d.ts +1 -0
  182. package/lib/typescript/jestUtils/jestUtils.d.ts +1 -0
  183. package/lib/typescript/mocks/Pressable.d.ts +2 -0
  184. package/lib/typescript/mocks/Pressable.d.ts.map +1 -0
  185. package/lib/typescript/{mocks.d.ts → mocks/mocks.d.ts} +5 -4
  186. package/lib/typescript/mocks/mocks.d.ts.map +1 -0
  187. package/lib/typescript/mountRegistry.d.ts +1 -0
  188. package/lib/typescript/specs/NativeRNGestureHandlerModule.d.ts +1 -0
  189. package/lib/typescript/specs/RNGestureHandlerButtonNativeComponent.d.ts +1 -0
  190. package/lib/typescript/specs/RNGestureHandlerRootViewNativeComponent.d.ts +1 -0
  191. package/lib/typescript/typeUtils.d.ts +1 -0
  192. package/lib/typescript/utils.d.ts +1 -0
  193. package/lib/typescript/web/Gestures.d.ts +1 -0
  194. package/lib/typescript/web/constants.d.ts +1 -0
  195. package/lib/typescript/web/detectors/RotationGestureDetector.d.ts +1 -0
  196. package/lib/typescript/web/detectors/ScaleGestureDetector.d.ts +1 -0
  197. package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +1 -0
  198. package/lib/typescript/web/handlers/GestureHandler.d.ts +1 -0
  199. package/lib/typescript/web/handlers/GestureHandler.d.ts.map +1 -1
  200. package/lib/typescript/web/handlers/HoverGestureHandler.d.ts +1 -0
  201. package/lib/typescript/web/handlers/IGestureHandler.d.ts +1 -0
  202. package/lib/typescript/web/handlers/LongPressGestureHandler.d.ts +1 -0
  203. package/lib/typescript/web/handlers/ManualGestureHandler.d.ts +1 -0
  204. package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts +1 -0
  205. package/lib/typescript/web/handlers/PanGestureHandler.d.ts +1 -0
  206. package/lib/typescript/web/handlers/PinchGestureHandler.d.ts +1 -0
  207. package/lib/typescript/web/handlers/RotationGestureHandler.d.ts +1 -0
  208. package/lib/typescript/web/handlers/TapGestureHandler.d.ts +1 -0
  209. package/lib/typescript/web/interfaces.d.ts +1 -0
  210. package/lib/typescript/web/tools/CircularBuffer.d.ts +1 -0
  211. package/lib/typescript/web/tools/EventManager.d.ts +1 -0
  212. package/lib/typescript/web/tools/GestureHandlerDelegate.d.ts +1 -0
  213. package/lib/typescript/web/tools/GestureHandlerOrchestrator.d.ts +1 -0
  214. package/lib/typescript/web/tools/GestureHandlerWebDelegate.d.ts +1 -0
  215. package/lib/typescript/web/tools/GestureHandlerWebDelegate.d.ts.map +1 -1
  216. package/lib/typescript/web/tools/InteractionManager.d.ts +1 -0
  217. package/lib/typescript/web/tools/KeyboardEventManager.d.ts +7 -3
  218. package/lib/typescript/web/tools/KeyboardEventManager.d.ts.map +1 -1
  219. package/lib/typescript/web/tools/LeastSquareSolver.d.ts +1 -0
  220. package/lib/typescript/web/tools/NodeManager.d.ts +1 -0
  221. package/lib/typescript/web/tools/PointerEventManager.d.ts +1 -0
  222. package/lib/typescript/web/tools/PointerTracker.d.ts +1 -0
  223. package/lib/typescript/web/tools/Vector.d.ts +1 -0
  224. package/lib/typescript/web/tools/VelocityTracker.d.ts +1 -0
  225. package/lib/typescript/web/tools/WheelEventManager.d.ts +1 -0
  226. package/lib/typescript/web/utils.d.ts +1 -0
  227. package/lib/typescript/web_hammer/DiscreteGestureHandler.d.ts +1 -0
  228. package/lib/typescript/web_hammer/DraggingGestureHandler.d.ts +1 -0
  229. package/lib/typescript/web_hammer/Errors.d.ts +1 -0
  230. package/lib/typescript/web_hammer/FlingGestureHandler.d.ts +1 -0
  231. package/lib/typescript/web_hammer/GestureHandler.d.ts +1 -0
  232. package/lib/typescript/web_hammer/IndiscreteGestureHandler.d.ts +1 -0
  233. package/lib/typescript/web_hammer/LongPressGestureHandler.d.ts +1 -0
  234. package/lib/typescript/web_hammer/NativeViewGestureHandler.d.ts +1 -0
  235. package/lib/typescript/web_hammer/NodeManager.d.ts +1 -0
  236. package/lib/typescript/web_hammer/PanGestureHandler.d.ts +1 -0
  237. package/lib/typescript/web_hammer/PinchGestureHandler.d.ts +1 -0
  238. package/lib/typescript/web_hammer/PressGestureHandler.d.ts +1 -0
  239. package/lib/typescript/web_hammer/RotationGestureHandler.d.ts +1 -0
  240. package/lib/typescript/web_hammer/TapGestureHandler.d.ts +1 -0
  241. package/lib/typescript/web_hammer/constants.d.ts +1 -0
  242. package/lib/typescript/web_hammer/utils.d.ts +1 -0
  243. package/package.json +4 -3
  244. package/scripts/gesture_handler_utils.rb +25 -0
  245. package/src/components/GestureButtonsProps.ts +10 -0
  246. package/src/components/Pressable/Pressable.tsx +20 -31
  247. package/src/components/Pressable/PressableProps.tsx +2 -4
  248. package/src/components/Pressable/StateMachine.tsx +12 -4
  249. package/src/components/Pressable/stateDefinitions.ts +23 -23
  250. package/src/components/ReanimatedSwipeable/ReanimatedSwipeable.tsx +603 -0
  251. package/src/components/ReanimatedSwipeable/ReanimatedSwipeableProps.ts +199 -0
  252. package/src/components/ReanimatedSwipeable/index.ts +6 -0
  253. package/src/components/gestureHandlerRootHOC.tsx +4 -0
  254. package/src/handlers/createHandler.tsx +1 -1
  255. package/src/handlers/gestures/GestureDetector/index.tsx +1 -1
  256. package/src/mocks/Pressable.tsx +1 -0
  257. package/src/{mocks.tsx → mocks/mocks.tsx} +7 -11
  258. package/src/web/handlers/GestureHandler.ts +8 -3
  259. package/src/web/tools/GestureHandlerWebDelegate.ts +0 -5
  260. package/src/web/tools/KeyboardEventManager.ts +50 -8
  261. package/lib/commonjs/components/ReanimatedSwipeable.js.map +0 -1
  262. package/lib/commonjs/mocks.js.map +0 -1
  263. package/lib/module/components/ReanimatedSwipeable.js.map +0 -1
  264. package/lib/module/mocks.js.map +0 -1
  265. package/lib/typescript/ActionType.js +0 -6
  266. package/lib/typescript/Directions.js +0 -18
  267. package/lib/typescript/EnableNewWebImplementation.js +0 -30
  268. package/lib/typescript/GestureHandlerRootViewContext.js +0 -2
  269. package/lib/typescript/PlatformConstants.js +0 -3
  270. package/lib/typescript/PlatformConstants.web.js +0 -5
  271. package/lib/typescript/PointerType.js +0 -8
  272. package/lib/typescript/RNGestureHandlerModule.js +0 -4
  273. package/lib/typescript/RNGestureHandlerModule.web.js +0 -92
  274. package/lib/typescript/RNGestureHandlerModule.windows.js +0 -47
  275. package/lib/typescript/RNRenderer.js +0 -3
  276. package/lib/typescript/RNRenderer.web.js +0 -3
  277. package/lib/typescript/State.js +0 -9
  278. package/lib/typescript/TouchEventType.js +0 -7
  279. package/lib/typescript/components/DrawerLayout.js +0 -417
  280. package/lib/typescript/components/GestureButtons.js +0 -165
  281. package/lib/typescript/components/GestureButtonsProps.js +0 -1
  282. package/lib/typescript/components/GestureComponents.js +0 -67
  283. package/lib/typescript/components/GestureComponents.web.js +0 -21
  284. package/lib/typescript/components/GestureHandlerButton.js +0 -2
  285. package/lib/typescript/components/GestureHandlerButton.web.js +0 -3
  286. package/lib/typescript/components/GestureHandlerRootView.android.js +0 -17
  287. package/lib/typescript/components/GestureHandlerRootView.js +0 -16
  288. package/lib/typescript/components/GestureHandlerRootView.web.js +0 -11
  289. package/lib/typescript/components/Pressable/Pressable.js +0 -231
  290. package/lib/typescript/components/Pressable/PressableProps.js +0 -1
  291. package/lib/typescript/components/Pressable/StateMachine.js +0 -34
  292. package/lib/typescript/components/Pressable/index.js +0 -1
  293. package/lib/typescript/components/Pressable/stateDefinitions.js +0 -104
  294. package/lib/typescript/components/Pressable/utils.js +0 -80
  295. package/lib/typescript/components/ReanimatedDrawerLayout.js +0 -364
  296. package/lib/typescript/components/ReanimatedSwipeable.d.ts.map +0 -1
  297. package/lib/typescript/components/ReanimatedSwipeable.js +0 -400
  298. package/lib/typescript/components/Swipeable.js +0 -287
  299. package/lib/typescript/components/Text.js +0 -38
  300. package/lib/typescript/components/gestureHandlerRootHOC.js +0 -18
  301. package/lib/typescript/components/touchables/ExtraButtonProps.js +0 -1
  302. package/lib/typescript/components/touchables/GenericTouchable.js +0 -221
  303. package/lib/typescript/components/touchables/GenericTouchableProps.js +0 -1
  304. package/lib/typescript/components/touchables/TouchableHighlight.js +0 -75
  305. package/lib/typescript/components/touchables/TouchableNativeFeedback.android.js +0 -65
  306. package/lib/typescript/components/touchables/TouchableNativeFeedback.js +0 -6
  307. package/lib/typescript/components/touchables/TouchableNativeFeedbackProps.js +0 -1
  308. package/lib/typescript/components/touchables/TouchableOpacity.js +0 -51
  309. package/lib/typescript/components/touchables/TouchableWithoutFeedback.js +0 -10
  310. package/lib/typescript/components/touchables/index.js +0 -4
  311. package/lib/typescript/components/utils.js +0 -11
  312. package/lib/typescript/findNodeHandle.js +0 -2
  313. package/lib/typescript/findNodeHandle.web.js +0 -31
  314. package/lib/typescript/getShadowNodeFromRef.js +0 -45
  315. package/lib/typescript/getShadowNodeFromRef.web.js +0 -7
  316. package/lib/typescript/ghQueueMicrotask.js +0 -7
  317. package/lib/typescript/handlers/FlingGestureHandler.js +0 -19
  318. package/lib/typescript/handlers/ForceTouchGestureHandler.js +0 -37
  319. package/lib/typescript/handlers/GestureHandlerEventPayload.js +0 -1
  320. package/lib/typescript/handlers/LongPressGestureHandler.js +0 -22
  321. package/lib/typescript/handlers/NativeViewGestureHandler.js +0 -20
  322. package/lib/typescript/handlers/PanGestureHandler.js +0 -128
  323. package/lib/typescript/handlers/PinchGestureHandler.js +0 -12
  324. package/lib/typescript/handlers/PressabilityDebugView.js +0 -2
  325. package/lib/typescript/handlers/PressabilityDebugView.web.js +0 -4
  326. package/lib/typescript/handlers/RotationGestureHandler.js +0 -12
  327. package/lib/typescript/handlers/TapGestureHandler.js +0 -26
  328. package/lib/typescript/handlers/createHandler.js +0 -375
  329. package/lib/typescript/handlers/createNativeWrapper.js +0 -67
  330. package/lib/typescript/handlers/customDirectEventTypes.js +0 -2
  331. package/lib/typescript/handlers/customDirectEventTypes.web.js +0 -4
  332. package/lib/typescript/handlers/gestureHandlerCommon.js +0 -42
  333. package/lib/typescript/handlers/gestureHandlerTypesCompat.js +0 -1
  334. package/lib/typescript/handlers/gestures/GestureDetector/Wrap.js +0 -22
  335. package/lib/typescript/handlers/gestures/GestureDetector/Wrap.web.js +0 -24
  336. package/lib/typescript/handlers/gestures/GestureDetector/attachHandlers.js +0 -55
  337. package/lib/typescript/handlers/gestures/GestureDetector/dropHandlers.js +0 -12
  338. package/lib/typescript/handlers/gestures/GestureDetector/index.js +0 -114
  339. package/lib/typescript/handlers/gestures/GestureDetector/needsToReattach.js +0 -18
  340. package/lib/typescript/handlers/gestures/GestureDetector/types.js +0 -1
  341. package/lib/typescript/handlers/gestures/GestureDetector/updateHandlers.js +0 -54
  342. package/lib/typescript/handlers/gestures/GestureDetector/useAnimatedGesture.js +0 -137
  343. package/lib/typescript/handlers/gestures/GestureDetector/useDetectorUpdater.js +0 -48
  344. package/lib/typescript/handlers/gestures/GestureDetector/useMountReactions.js +0 -35
  345. package/lib/typescript/handlers/gestures/GestureDetector/useViewRefHandler.js +0 -32
  346. package/lib/typescript/handlers/gestures/GestureDetector/utils.js +0 -140
  347. package/lib/typescript/handlers/gestures/eventReceiver.js +0 -105
  348. package/lib/typescript/handlers/gestures/flingGesture.js +0 -27
  349. package/lib/typescript/handlers/gestures/forceTouchGesture.js +0 -57
  350. package/lib/typescript/handlers/gestures/gesture.js +0 -303
  351. package/lib/typescript/handlers/gestures/gestureComposition.js +0 -78
  352. package/lib/typescript/handlers/gestures/gestureObjects.js +0 -125
  353. package/lib/typescript/handlers/gestures/gestureStateManager.js +0 -60
  354. package/lib/typescript/handlers/gestures/gestureStateManager.web.js +0 -19
  355. package/lib/typescript/handlers/gestures/hoverGesture.js +0 -45
  356. package/lib/typescript/handlers/gestures/longPressGesture.js +0 -35
  357. package/lib/typescript/handlers/gestures/manualGesture.js +0 -16
  358. package/lib/typescript/handlers/gestures/nativeGesture.js +0 -24
  359. package/lib/typescript/handlers/gestures/panGesture.js +0 -181
  360. package/lib/typescript/handlers/gestures/pinchGesture.js +0 -27
  361. package/lib/typescript/handlers/gestures/reanimatedWrapper.js +0 -23
  362. package/lib/typescript/handlers/gestures/rotationGesture.js +0 -27
  363. package/lib/typescript/handlers/gestures/tapGesture.js +0 -72
  364. package/lib/typescript/handlers/getNextHandlerTag.js +0 -4
  365. package/lib/typescript/handlers/handlersRegistry.js +0 -36
  366. package/lib/typescript/handlers/utils.js +0 -58
  367. package/lib/typescript/index.js +0 -28
  368. package/lib/typescript/init.js +0 -15
  369. package/lib/typescript/jestUtils/index.js +0 -1
  370. package/lib/typescript/jestUtils/jestUtils.js +0 -290
  371. package/lib/typescript/mocks.d.ts.map +0 -1
  372. package/lib/typescript/mocks.js +0 -59
  373. package/lib/typescript/mountRegistry.js +0 -29
  374. package/lib/typescript/specs/NativeRNGestureHandlerModule.js +0 -2
  375. package/lib/typescript/specs/RNGestureHandlerButtonNativeComponent.js +0 -2
  376. package/lib/typescript/specs/RNGestureHandlerRootViewNativeComponent.js +0 -2
  377. package/lib/typescript/typeUtils.js +0 -1
  378. package/lib/typescript/utils.js +0 -80
  379. package/lib/typescript/web/Gestures.js +0 -38
  380. package/lib/typescript/web/constants.js +0 -2
  381. package/lib/typescript/web/detectors/RotationGestureDetector.js +0 -122
  382. package/lib/typescript/web/detectors/ScaleGestureDetector.js +0 -117
  383. package/lib/typescript/web/handlers/FlingGestureHandler.js +0 -133
  384. package/lib/typescript/web/handlers/GestureHandler.js +0 -656
  385. package/lib/typescript/web/handlers/HoverGestureHandler.js +0 -37
  386. package/lib/typescript/web/handlers/IGestureHandler.js +0 -1
  387. package/lib/typescript/web/handlers/LongPressGestureHandler.js +0 -136
  388. package/lib/typescript/web/handlers/ManualGestureHandler.js +0 -29
  389. package/lib/typescript/web/handlers/NativeViewGestureHandler.js +0 -133
  390. package/lib/typescript/web/handlers/PanGestureHandler.js +0 -420
  391. package/lib/typescript/web/handlers/PinchGestureHandler.js +0 -117
  392. package/lib/typescript/web/handlers/RotationGestureHandler.js +0 -122
  393. package/lib/typescript/web/handlers/TapGestureHandler.js +0 -202
  394. package/lib/typescript/web/interfaces.js +0 -25
  395. package/lib/typescript/web/tools/CircularBuffer.js +0 -37
  396. package/lib/typescript/web/tools/EventManager.js +0 -85
  397. package/lib/typescript/web/tools/GestureHandlerDelegate.js +0 -1
  398. package/lib/typescript/web/tools/GestureHandlerOrchestrator.js +0 -273
  399. package/lib/typescript/web/tools/GestureHandlerWebDelegate.js +0 -169
  400. package/lib/typescript/web/tools/InteractionManager.js +0 -91
  401. package/lib/typescript/web/tools/KeyboardEventManager.js +0 -73
  402. package/lib/typescript/web/tools/LeastSquareSolver.js +0 -147
  403. package/lib/typescript/web/tools/NodeManager.js +0 -28
  404. package/lib/typescript/web/tools/PointerEventManager.js +0 -179
  405. package/lib/typescript/web/tools/PointerTracker.js +0 -161
  406. package/lib/typescript/web/tools/Vector.js +0 -43
  407. package/lib/typescript/web/tools/VelocityTracker.js +0 -76
  408. package/lib/typescript/web/tools/WheelEventManager.js +0 -40
  409. package/lib/typescript/web/utils.js +0 -233
  410. package/lib/typescript/web_hammer/DiscreteGestureHandler.js +0 -48
  411. package/lib/typescript/web_hammer/DraggingGestureHandler.js +0 -25
  412. package/lib/typescript/web_hammer/Errors.js +0 -5
  413. package/lib/typescript/web_hammer/FlingGestureHandler.js +0 -119
  414. package/lib/typescript/web_hammer/GestureHandler.js +0 -469
  415. package/lib/typescript/web_hammer/IndiscreteGestureHandler.js +0 -26
  416. package/lib/typescript/web_hammer/LongPressGestureHandler.js +0 -46
  417. package/lib/typescript/web_hammer/NativeViewGestureHandler.js +0 -40
  418. package/lib/typescript/web_hammer/NodeManager.js +0 -28
  419. package/lib/typescript/web_hammer/PanGestureHandler.js +0 -151
  420. package/lib/typescript/web_hammer/PinchGestureHandler.js +0 -19
  421. package/lib/typescript/web_hammer/PressGestureHandler.js +0 -133
  422. package/lib/typescript/web_hammer/RotationGestureHandler.js +0 -20
  423. package/lib/typescript/web_hammer/TapGestureHandler.js +0 -142
  424. package/lib/typescript/web_hammer/constants.js +0 -42
  425. package/lib/typescript/web_hammer/utils.js +0 -15
  426. package/src/components/ReanimatedSwipeable.tsx +0 -811
@@ -1,169 +0,0 @@
1
- import findNodeHandle from '../../findNodeHandle';
2
- import PointerEventManager from './PointerEventManager';
3
- import { State } from '../../State';
4
- import { isPointerInBounds } from '../utils';
5
- import { MouseButton } from '../../handlers/gestureHandlerCommon';
6
- import KeyboardEventManager from './KeyboardEventManager';
7
- import WheelEventManager from './WheelEventManager';
8
- export class GestureHandlerWebDelegate {
9
- isInitialized = false;
10
- _view;
11
- gestureHandler;
12
- eventManagers = [];
13
- defaultViewStyles = {
14
- userSelect: '',
15
- touchAction: '',
16
- };
17
- init(viewRef, handler) {
18
- if (!viewRef) {
19
- throw new Error(`Cannot find HTML Element for handler ${handler.handlerTag}`);
20
- }
21
- this.isInitialized = true;
22
- this.gestureHandler = handler;
23
- this.view = findNodeHandle(viewRef);
24
- this.defaultViewStyles = {
25
- userSelect: this.view.style.userSelect,
26
- touchAction: this.view.style.touchAction,
27
- };
28
- const config = handler.config;
29
- this.setUserSelect(config.enabled);
30
- this.setTouchAction(config.enabled);
31
- this.setContextMenu(config.enabled);
32
- this.eventManagers.push(new PointerEventManager(this.view));
33
- this.eventManagers.push(new KeyboardEventManager(this.view));
34
- this.eventManagers.push(new WheelEventManager(this.view));
35
- this.eventManagers.forEach((manager) => this.gestureHandler.attachEventManager(manager));
36
- }
37
- isPointerInBounds({ x, y }) {
38
- return isPointerInBounds(this.view, { x, y });
39
- }
40
- measureView() {
41
- const rect = this.view.getBoundingClientRect();
42
- return {
43
- pageX: rect.left,
44
- pageY: rect.top,
45
- width: rect.width,
46
- height: rect.height,
47
- };
48
- }
49
- reset() {
50
- this.eventManagers.forEach((manager) => manager.resetManager());
51
- }
52
- tryResetCursor() {
53
- const config = this.gestureHandler.config;
54
- if (config.activeCursor &&
55
- config.activeCursor !== 'auto' &&
56
- this.gestureHandler.state === State.ACTIVE) {
57
- this.view.style.cursor = 'auto';
58
- }
59
- }
60
- shouldDisableContextMenu(config) {
61
- return ((config.enableContextMenu === undefined &&
62
- this.gestureHandler.isButtonInConfig(MouseButton.RIGHT)) ||
63
- config.enableContextMenu === false);
64
- }
65
- addContextMenuListeners(config) {
66
- if (this.shouldDisableContextMenu(config)) {
67
- this.view.addEventListener('contextmenu', this.disableContextMenu);
68
- }
69
- else if (config.enableContextMenu) {
70
- this.view.addEventListener('contextmenu', this.enableContextMenu);
71
- }
72
- }
73
- removeContextMenuListeners(config) {
74
- if (this.shouldDisableContextMenu(config)) {
75
- this.view.removeEventListener('contextmenu', this.disableContextMenu);
76
- }
77
- else if (config.enableContextMenu) {
78
- this.view.removeEventListener('contextmenu', this.enableContextMenu);
79
- }
80
- }
81
- disableContextMenu(e) {
82
- e.preventDefault();
83
- }
84
- enableContextMenu(e) {
85
- e.stopPropagation();
86
- }
87
- setUserSelect(isHandlerEnabled) {
88
- const { userSelect } = this.gestureHandler.config;
89
- this.view.style['userSelect'] = isHandlerEnabled
90
- ? (userSelect ?? 'none')
91
- : this.defaultViewStyles.userSelect;
92
- this.view.style['webkitUserSelect'] = isHandlerEnabled
93
- ? (userSelect ?? 'none')
94
- : this.defaultViewStyles.userSelect;
95
- }
96
- setTouchAction(isHandlerEnabled) {
97
- const { touchAction } = this.gestureHandler.config;
98
- this.view.style['touchAction'] = isHandlerEnabled
99
- ? (touchAction ?? 'none')
100
- : this.defaultViewStyles.touchAction;
101
- // @ts-ignore This one disables default events on Safari
102
- this.view.style['WebkitTouchCallout'] = isHandlerEnabled
103
- ? (touchAction ?? 'none')
104
- : this.defaultViewStyles.touchAction;
105
- }
106
- setContextMenu(isHandlerEnabled) {
107
- const config = this.gestureHandler.config;
108
- if (isHandlerEnabled) {
109
- this.addContextMenuListeners(config);
110
- }
111
- else {
112
- this.removeContextMenuListeners(config);
113
- }
114
- }
115
- onEnabledChange(enabled) {
116
- if (!this.isInitialized) {
117
- return;
118
- }
119
- this.setUserSelect(enabled);
120
- this.setTouchAction(enabled);
121
- this.setContextMenu(enabled);
122
- if (enabled) {
123
- this.eventManagers.forEach((manager) => {
124
- // It may look like managers will be registered twice when handler is mounted for the first time.
125
- // However, `init` method is called AFTER `updateGestureConfig` - it means that delegate has not
126
- // been initialized yet, so this code won't be executed.
127
- //
128
- // Also, because we use defined functions, not lambdas, they will not be registered multiple times.
129
- manager.registerListeners();
130
- });
131
- }
132
- else {
133
- this.eventManagers.forEach((manager) => {
134
- manager.unregisterListeners();
135
- });
136
- }
137
- }
138
- onBegin() {
139
- // no-op for now
140
- }
141
- onActivate() {
142
- const config = this.gestureHandler.config;
143
- if ((!this.view.style.cursor || this.view.style.cursor === 'auto') &&
144
- config.activeCursor) {
145
- this.view.style.cursor = config.activeCursor;
146
- }
147
- }
148
- onEnd() {
149
- this.tryResetCursor();
150
- }
151
- onCancel() {
152
- this.tryResetCursor();
153
- }
154
- onFail() {
155
- this.tryResetCursor();
156
- }
157
- destroy(config) {
158
- this.removeContextMenuListeners(config);
159
- this.eventManagers.forEach((manager) => {
160
- manager.unregisterListeners();
161
- });
162
- }
163
- get view() {
164
- return this._view;
165
- }
166
- set view(value) {
167
- this._view = value;
168
- }
169
- }
@@ -1,91 +0,0 @@
1
- export default class InteractionManager {
2
- static _instance;
3
- waitForRelations = new Map();
4
- simultaneousRelations = new Map();
5
- blocksHandlersRelations = new Map();
6
- // Private becaues of singleton
7
- // eslint-disable-next-line no-useless-constructor, @typescript-eslint/no-empty-function
8
- constructor() { }
9
- configureInteractions(handler, config) {
10
- this.dropRelationsForHandlerWithTag(handler.handlerTag);
11
- if (config.waitFor) {
12
- const waitFor = [];
13
- config.waitFor.forEach((otherHandler) => {
14
- // New API reference
15
- if (typeof otherHandler === 'number') {
16
- waitFor.push(otherHandler);
17
- }
18
- else {
19
- // Old API reference
20
- waitFor.push(otherHandler.handlerTag);
21
- }
22
- });
23
- this.waitForRelations.set(handler.handlerTag, waitFor);
24
- }
25
- if (config.simultaneousHandlers) {
26
- const simultaneousHandlers = [];
27
- config.simultaneousHandlers.forEach((otherHandler) => {
28
- if (typeof otherHandler === 'number') {
29
- simultaneousHandlers.push(otherHandler);
30
- }
31
- else {
32
- simultaneousHandlers.push(otherHandler.handlerTag);
33
- }
34
- });
35
- this.simultaneousRelations.set(handler.handlerTag, simultaneousHandlers);
36
- }
37
- if (config.blocksHandlers) {
38
- const blocksHandlers = [];
39
- config.blocksHandlers.forEach((otherHandler) => {
40
- if (typeof otherHandler === 'number') {
41
- blocksHandlers.push(otherHandler);
42
- }
43
- else {
44
- blocksHandlers.push(otherHandler.handlerTag);
45
- }
46
- });
47
- this.blocksHandlersRelations.set(handler.handlerTag, blocksHandlers);
48
- }
49
- }
50
- shouldWaitForHandlerFailure(handler, otherHandler) {
51
- const waitFor = this.waitForRelations.get(handler.handlerTag);
52
- return (waitFor?.find((tag) => {
53
- return tag === otherHandler.handlerTag;
54
- }) !== undefined);
55
- }
56
- shouldRecognizeSimultaneously(handler, otherHandler) {
57
- const simultaneousHandlers = this.simultaneousRelations.get(handler.handlerTag);
58
- return (simultaneousHandlers?.find((tag) => {
59
- return tag === otherHandler.handlerTag;
60
- }) !== undefined);
61
- }
62
- shouldRequireHandlerToWaitForFailure(handler, otherHandler) {
63
- const waitFor = this.blocksHandlersRelations.get(handler.handlerTag);
64
- return (waitFor?.find((tag) => {
65
- return tag === otherHandler.handlerTag;
66
- }) !== undefined);
67
- }
68
- shouldHandlerBeCancelledBy(_handler, otherHandler) {
69
- // We check constructor name instead of using `instanceof` in order do avoid circular dependencies
70
- const isNativeHandler = otherHandler.constructor.name === 'NativeViewGestureHandler';
71
- const isActive = otherHandler.active;
72
- const isButton = otherHandler.isButton?.() === true;
73
- return isNativeHandler && isActive && !isButton;
74
- }
75
- dropRelationsForHandlerWithTag(handlerTag) {
76
- this.waitForRelations.delete(handlerTag);
77
- this.simultaneousRelations.delete(handlerTag);
78
- this.blocksHandlersRelations.delete(handlerTag);
79
- }
80
- reset() {
81
- this.waitForRelations.clear();
82
- this.simultaneousRelations.clear();
83
- this.blocksHandlersRelations.clear();
84
- }
85
- static get instance() {
86
- if (!this._instance) {
87
- this._instance = new InteractionManager();
88
- }
89
- return this._instance;
90
- }
91
- }
@@ -1,73 +0,0 @@
1
- import { EventTypes } from '../interfaces';
2
- import EventManager from './EventManager';
3
- import { PointerType } from '../../PointerType';
4
- export default class KeyboardEventManager extends EventManager {
5
- activationKeys = ['Enter', ' '];
6
- cancelationKeys = ['Tab'];
7
- isPressed = false;
8
- keyDownCallback = (event) => {
9
- if (this.cancelationKeys.indexOf(event.key) !== -1 && this.isPressed) {
10
- this.dispatchEvent(event, EventTypes.CANCEL);
11
- return;
12
- }
13
- if (this.activationKeys.indexOf(event.key) === -1) {
14
- return;
15
- }
16
- this.dispatchEvent(event, EventTypes.DOWN);
17
- };
18
- keyUpCallback = (event) => {
19
- if (this.activationKeys.indexOf(event.key) === -1 || !this.isPressed) {
20
- return;
21
- }
22
- this.dispatchEvent(event, EventTypes.UP);
23
- };
24
- dispatchEvent(event, eventType) {
25
- if (!(event.target instanceof HTMLElement)) {
26
- return;
27
- }
28
- const adaptedEvent = this.mapEvent(event, eventType);
29
- switch (eventType) {
30
- case EventTypes.UP:
31
- this.isPressed = false;
32
- this.onPointerUp(adaptedEvent);
33
- break;
34
- case EventTypes.DOWN:
35
- this.isPressed = true;
36
- this.onPointerDown(adaptedEvent);
37
- break;
38
- case EventTypes.CANCEL:
39
- this.isPressed = false;
40
- this.onPointerCancel(adaptedEvent);
41
- break;
42
- }
43
- }
44
- registerListeners() {
45
- this.view.addEventListener('keydown', this.keyDownCallback);
46
- this.view.addEventListener('keyup', this.keyUpCallback);
47
- }
48
- unregisterListeners() {
49
- this.view.removeEventListener('keydown', this.keyDownCallback);
50
- this.view.removeEventListener('keyup', this.keyUpCallback);
51
- }
52
- mapEvent(event, eventType) {
53
- const viewRect = event.target.getBoundingClientRect();
54
- const viewportPosition = {
55
- x: viewRect?.x + viewRect?.width / 2,
56
- y: viewRect?.y + viewRect?.height / 2,
57
- };
58
- const relativePosition = {
59
- x: viewRect?.width / 2,
60
- y: viewRect?.height / 2,
61
- };
62
- return {
63
- x: viewportPosition.x,
64
- y: viewportPosition.y,
65
- offsetX: relativePosition.x,
66
- offsetY: relativePosition.y,
67
- pointerId: 0,
68
- eventType: eventType,
69
- pointerType: PointerType.KEY,
70
- time: event.timeStamp,
71
- };
72
- }
73
- }
@@ -1,147 +0,0 @@
1
- // Implementation taken from Flutter's LeastSquareSolver
2
- // https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/gestures/lsq_solver.dart
3
- class Vector {
4
- offset;
5
- length;
6
- elements;
7
- constructor(length) {
8
- this.offset = 0;
9
- this.length = length;
10
- this.elements = new Array(length);
11
- }
12
- static fromVOL(values, offset, length) {
13
- const result = new Vector(0);
14
- result.offset = offset;
15
- result.length = length;
16
- result.elements = values;
17
- return result;
18
- }
19
- get(index) {
20
- return this.elements[this.offset + index];
21
- }
22
- set(index, value) {
23
- this.elements[this.offset + index] = value;
24
- }
25
- dot(other) {
26
- let result = 0;
27
- for (let i = 0; i < this.length; i++) {
28
- result += this.get(i) * other.get(i);
29
- }
30
- return result;
31
- }
32
- norm() {
33
- return Math.sqrt(this.dot(this));
34
- }
35
- }
36
- class Matrix {
37
- columns;
38
- elements;
39
- constructor(rows, columns) {
40
- this.columns = columns;
41
- this.elements = new Array(rows * columns);
42
- }
43
- get(row, column) {
44
- return this.elements[row * this.columns + column];
45
- }
46
- set(row, column, value) {
47
- this.elements[row * this.columns + column] = value;
48
- }
49
- getRow(row) {
50
- return Vector.fromVOL(this.elements, row * this.columns, this.columns);
51
- }
52
- }
53
- // An nth degree polynomial fit to a dataset.
54
- class PolynomialFit {
55
- // The polynomial coefficients of the fit.
56
- //
57
- // For each `i`, the element `coefficients[i]` is the coefficient of
58
- // the `i`-th power of the variable.
59
- coefficients;
60
- // Creates a polynomial fit of the given degree.
61
- //
62
- // There are n + 1 coefficients in a fit of degree n.
63
- constructor(degree) {
64
- this.coefficients = new Array(degree + 1);
65
- }
66
- }
67
- const precisionErrorTolerance = 1e-10;
68
- // Uses the least-squares algorithm to fit a polynomial to a set of data.
69
- export default class LeastSquareSolver {
70
- // The x-coordinates of each data point.
71
- x;
72
- // The y-coordinates of each data point.
73
- y;
74
- // The weight to use for each data point.
75
- w;
76
- // Creates a least-squares solver.
77
- //
78
- // The [x], [y], and [w] arguments must not be null.
79
- constructor(x, y, w) {
80
- this.x = x;
81
- this.y = y;
82
- this.w = w;
83
- }
84
- // Fits a polynomial of the given degree to the data points.
85
- //
86
- // When there is not enough data to fit a curve null is returned.
87
- solve(degree) {
88
- if (degree > this.x.length) {
89
- // Not enough data to fit a curve.
90
- return null;
91
- }
92
- const result = new PolynomialFit(degree);
93
- // Shorthands for the purpose of notation equivalence to original C++ code.
94
- const m = this.x.length;
95
- const n = degree + 1;
96
- // Expand the X vector to a matrix A, pre-multiplied by the weights.
97
- const a = new Matrix(n, m);
98
- for (let h = 0; h < m; h++) {
99
- a.set(0, h, this.w[h]);
100
- for (let i = 1; i < n; i++) {
101
- a.set(i, h, a.get(i - 1, h) * this.x[h]);
102
- }
103
- }
104
- // Apply the Gram-Schmidt process to A to obtain its QR decomposition.
105
- // Orthonormal basis, column-major ordVectorer.
106
- const q = new Matrix(n, m);
107
- // Upper triangular matrix, row-major order.
108
- const r = new Matrix(n, m);
109
- for (let j = 0; j < n; j += 1) {
110
- for (let h = 0; h < m; h += 1) {
111
- q.set(j, h, a.get(j, h));
112
- }
113
- for (let i = 0; i < j; i += 1) {
114
- const dot = q.getRow(j).dot(q.getRow(i));
115
- for (let h = 0; h < m; h += 1) {
116
- q.set(j, h, q.get(j, h) - dot * q.get(i, h));
117
- }
118
- }
119
- const norm = q.getRow(j).norm();
120
- if (norm < precisionErrorTolerance) {
121
- // Vectors are linearly dependent or zero so no solution.
122
- return null;
123
- }
124
- const inverseNorm = 1.0 / norm;
125
- for (let h = 0; h < m; h += 1) {
126
- q.set(j, h, q.get(j, h) * inverseNorm);
127
- }
128
- for (let i = 0; i < n; i += 1) {
129
- r.set(j, i, i < j ? 0.0 : q.getRow(j).dot(a.getRow(i)));
130
- }
131
- }
132
- // Solve R B = Qt W Y to find B. This is easy because R is upper triangular.
133
- // We just work from bottom-right to top-left calculating B's coefficients.
134
- const wy = new Vector(m);
135
- for (let h = 0; h < m; h += 1) {
136
- wy.set(h, this.y[h] * this.w[h]);
137
- }
138
- for (let i = n - 1; i >= 0; i -= 1) {
139
- result.coefficients[i] = q.getRow(i).dot(wy);
140
- for (let j = n - 1; j > i; j -= 1) {
141
- result.coefficients[i] -= r.get(i, j) * result.coefficients[j];
142
- }
143
- result.coefficients[i] /= r.get(i, i);
144
- }
145
- return result;
146
- }
147
- }
@@ -1,28 +0,0 @@
1
- // eslint-disable-next-line @typescript-eslint/no-extraneous-class
2
- export default class NodeManager {
3
- static gestures = {};
4
- static getHandler(tag) {
5
- if (tag in this.gestures) {
6
- return this.gestures[tag];
7
- }
8
- throw new Error(`No handler for tag ${tag}`);
9
- }
10
- static createGestureHandler(handlerTag, handler) {
11
- if (handlerTag in this.gestures) {
12
- throw new Error(`Handler with tag ${handlerTag} already exists. Please ensure that no Gesture instance is used across multiple GestureDetectors.`);
13
- }
14
- this.gestures[handlerTag] = handler;
15
- this.gestures[handlerTag].handlerTag = handlerTag;
16
- }
17
- static dropGestureHandler(handlerTag) {
18
- if (!(handlerTag in this.gestures)) {
19
- return;
20
- }
21
- this.gestures[handlerTag].onDestroy();
22
- // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
23
- delete this.gestures[handlerTag];
24
- }
25
- static get nodes() {
26
- return { ...this.gestures };
27
- }
28
- }
@@ -1,179 +0,0 @@
1
- import EventManager from './EventManager';
2
- import { MouseButton } from '../../handlers/gestureHandlerCommon';
3
- import { EventTypes } from '../interfaces';
4
- import { PointerTypeMapping, calculateViewScale, tryExtractStylusData, isPointerInBounds, } from '../utils';
5
- import { PointerType } from '../../PointerType';
6
- const POINTER_CAPTURE_EXCLUDE_LIST = new Set(['SELECT', 'INPUT']);
7
- export default class PointerEventManager extends EventManager {
8
- trackedPointers = new Set();
9
- mouseButtonsMapper = new Map();
10
- lastPosition;
11
- constructor(view) {
12
- super(view);
13
- this.mouseButtonsMapper.set(0, MouseButton.LEFT);
14
- this.mouseButtonsMapper.set(1, MouseButton.MIDDLE);
15
- this.mouseButtonsMapper.set(2, MouseButton.RIGHT);
16
- this.mouseButtonsMapper.set(3, MouseButton.BUTTON_4);
17
- this.mouseButtonsMapper.set(4, MouseButton.BUTTON_5);
18
- this.lastPosition = {
19
- x: -Infinity,
20
- y: -Infinity,
21
- };
22
- }
23
- pointerDownCallback = (event) => {
24
- if (!isPointerInBounds(this.view, { x: event.clientX, y: event.clientY })) {
25
- return;
26
- }
27
- const adaptedEvent = this.mapEvent(event, EventTypes.DOWN);
28
- const target = event.target;
29
- if (!POINTER_CAPTURE_EXCLUDE_LIST.has(target.tagName)) {
30
- target.setPointerCapture(adaptedEvent.pointerId);
31
- }
32
- this.markAsInBounds(adaptedEvent.pointerId);
33
- this.trackedPointers.add(adaptedEvent.pointerId);
34
- if (++this.activePointersCounter > 1) {
35
- adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_DOWN;
36
- this.onPointerAdd(adaptedEvent);
37
- }
38
- else {
39
- this.onPointerDown(adaptedEvent);
40
- }
41
- };
42
- pointerUpCallback = (event) => {
43
- // When we call reset on gesture handlers, it also resets their event managers
44
- // In some handlers (like RotationGestureHandler) reset is called before all pointers leave view
45
- // This means, that activePointersCounter will be set to 0, while there are still remaining pointers on view
46
- // Removing them will end in activePointersCounter going below 0, therefore handlers won't behave properly
47
- if (this.activePointersCounter === 0) {
48
- return;
49
- }
50
- const adaptedEvent = this.mapEvent(event, EventTypes.UP);
51
- const target = event.target;
52
- if (!POINTER_CAPTURE_EXCLUDE_LIST.has(target.tagName)) {
53
- target.releasePointerCapture(adaptedEvent.pointerId);
54
- }
55
- this.markAsOutOfBounds(adaptedEvent.pointerId);
56
- this.trackedPointers.delete(adaptedEvent.pointerId);
57
- if (--this.activePointersCounter > 0) {
58
- adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_UP;
59
- this.onPointerRemove(adaptedEvent);
60
- }
61
- else {
62
- this.onPointerUp(adaptedEvent);
63
- }
64
- };
65
- pointerMoveCallback = (event) => {
66
- const adaptedEvent = this.mapEvent(event, EventTypes.MOVE);
67
- const target = event.target;
68
- // You may be wondering why are we setting pointer capture here, when we
69
- // already set it in `pointerdown` handler. Well, that's a great question,
70
- // for which I don't have an answer. Specification (https://www.w3.org/TR/pointerevents2/#dom-element-setpointercapture)
71
- // says that the requirement for `setPointerCapture` to work is that pointer
72
- // must be in 'active buttons state`, otherwise it will fail silently, which
73
- // is lovely. Obviously, when `pointerdown` is fired, one of the buttons
74
- // (when using mouse) is pressed, but that doesn't mean that `setPointerCapture`
75
- // will succeed, for some reason. Since it fails silently, we don't actually know
76
- // if it worked or not (there's `gotpointercapture` event, but the complexity of
77
- // incorporating it here seems stupid), so we just call it again here, every time
78
- // pointer moves until it succeeds.
79
- // God, I do love web development.
80
- if (!target?.hasPointerCapture(event.pointerId) &&
81
- !POINTER_CAPTURE_EXCLUDE_LIST.has(target.tagName)) {
82
- target.setPointerCapture(event.pointerId);
83
- }
84
- const inBounds = isPointerInBounds(this.view, {
85
- x: adaptedEvent.x,
86
- y: adaptedEvent.y,
87
- });
88
- const pointerIndex = this.pointersInBounds.indexOf(adaptedEvent.pointerId);
89
- if (inBounds) {
90
- if (pointerIndex < 0) {
91
- adaptedEvent.eventType = EventTypes.ENTER;
92
- this.onPointerEnter(adaptedEvent);
93
- this.markAsInBounds(adaptedEvent.pointerId);
94
- }
95
- else {
96
- this.onPointerMove(adaptedEvent);
97
- }
98
- }
99
- else {
100
- if (pointerIndex >= 0) {
101
- adaptedEvent.eventType = EventTypes.LEAVE;
102
- this.onPointerLeave(adaptedEvent);
103
- this.markAsOutOfBounds(adaptedEvent.pointerId);
104
- }
105
- else {
106
- this.onPointerOutOfBounds(adaptedEvent);
107
- }
108
- }
109
- this.lastPosition.x = event.x;
110
- this.lastPosition.y = event.y;
111
- };
112
- pointerCancelCallback = (event) => {
113
- const adaptedEvent = this.mapEvent(event, EventTypes.CANCEL);
114
- this.onPointerCancel(adaptedEvent);
115
- this.markAsOutOfBounds(adaptedEvent.pointerId);
116
- this.activePointersCounter = 0;
117
- this.trackedPointers.clear();
118
- };
119
- pointerEnterCallback = (event) => {
120
- const adaptedEvent = this.mapEvent(event, EventTypes.ENTER);
121
- this.onPointerMoveOver(adaptedEvent);
122
- };
123
- pointerLeaveCallback = (event) => {
124
- const adaptedEvent = this.mapEvent(event, EventTypes.LEAVE);
125
- this.onPointerMoveOut(adaptedEvent);
126
- };
127
- lostPointerCaptureCallback = (event) => {
128
- const adaptedEvent = this.mapEvent(event, EventTypes.CANCEL);
129
- if (this.trackedPointers.has(adaptedEvent.pointerId)) {
130
- // In some cases the `pointerup` event is not fired, but `lostpointercapture` is.
131
- // Here we simulate the `pointercancel` event to make sure the gesture handler stops tracking it.
132
- this.onPointerCancel(adaptedEvent);
133
- this.activePointersCounter = 0;
134
- this.trackedPointers.clear();
135
- }
136
- };
137
- registerListeners() {
138
- this.view.addEventListener('pointerdown', this.pointerDownCallback);
139
- this.view.addEventListener('pointerup', this.pointerUpCallback);
140
- this.view.addEventListener('pointermove', this.pointerMoveCallback);
141
- this.view.addEventListener('pointercancel', this.pointerCancelCallback);
142
- // onPointerEnter and onPointerLeave are triggered by a custom logic responsible for
143
- // handling shouldCancelWhenOutside flag, and are unreliable unless the pointer is down.
144
- // We therefore use pointerenter and pointerleave events to handle the hover gesture,
145
- // mapping them to onPointerMoveOver and onPointerMoveOut respectively.
146
- this.view.addEventListener('pointerenter', this.pointerEnterCallback);
147
- this.view.addEventListener('pointerleave', this.pointerLeaveCallback);
148
- this.view.addEventListener('lostpointercapture', this.lostPointerCaptureCallback);
149
- }
150
- unregisterListeners() {
151
- this.view.removeEventListener('pointerdown', this.pointerDownCallback);
152
- this.view.removeEventListener('pointerup', this.pointerUpCallback);
153
- this.view.removeEventListener('pointermove', this.pointerMoveCallback);
154
- this.view.removeEventListener('pointercancel', this.pointerCancelCallback);
155
- this.view.removeEventListener('pointerenter', this.pointerEnterCallback);
156
- this.view.removeEventListener('pointerleave', this.pointerLeaveCallback);
157
- this.view.removeEventListener('lostpointercapture', this.lostPointerCaptureCallback);
158
- }
159
- mapEvent(event, eventType) {
160
- const rect = this.view.getBoundingClientRect();
161
- const { scaleX, scaleY } = calculateViewScale(this.view);
162
- return {
163
- x: event.clientX,
164
- y: event.clientY,
165
- offsetX: (event.clientX - rect.left) / scaleX,
166
- offsetY: (event.clientY - rect.top) / scaleY,
167
- pointerId: event.pointerId,
168
- eventType: eventType,
169
- pointerType: PointerTypeMapping.get(event.pointerType) ?? PointerType.OTHER,
170
- button: this.mouseButtonsMapper.get(event.button),
171
- time: event.timeStamp,
172
- stylusData: tryExtractStylusData(event),
173
- };
174
- }
175
- resetManager() {
176
- super.resetManager();
177
- this.trackedPointers.clear();
178
- }
179
- }