react-native-gesture-handler 2.23.0 → 2.23.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 (601) hide show
  1. package/RNGestureHandler.podspec +8 -0
  2. package/apple/RNGestureHandlerButton.mm +12 -2
  3. package/lib/commonjs/ActionType.js +3 -3
  4. package/lib/commonjs/ActionType.js.map +1 -1
  5. package/lib/commonjs/Directions.js +8 -11
  6. package/lib/commonjs/Directions.js.map +1 -1
  7. package/lib/commonjs/EnableNewWebImplementation.js +10 -2
  8. package/lib/commonjs/EnableNewWebImplementation.js.map +1 -1
  9. package/lib/commonjs/GestureHandlerRootViewContext.js +7 -2
  10. package/lib/commonjs/GestureHandlerRootViewContext.js.map +1 -1
  11. package/lib/commonjs/PlatformConstants.js +6 -1
  12. package/lib/commonjs/PlatformConstants.js.map +1 -1
  13. package/lib/commonjs/PlatformConstants.web.js +3 -1
  14. package/lib/commonjs/PlatformConstants.web.js.map +1 -1
  15. package/lib/commonjs/PointerType.js +5 -3
  16. package/lib/commonjs/PointerType.js.map +1 -1
  17. package/lib/commonjs/RNGestureHandlerModule.js +6 -2
  18. package/lib/commonjs/RNGestureHandlerModule.js.map +1 -1
  19. package/lib/commonjs/RNGestureHandlerModule.web.js +37 -11
  20. package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
  21. package/lib/commonjs/RNGestureHandlerModule.windows.js +32 -22
  22. package/lib/commonjs/RNGestureHandlerModule.windows.js.map +1 -1
  23. package/lib/commonjs/RNRenderer.js +3 -1
  24. package/lib/commonjs/RNRenderer.js.map +1 -1
  25. package/lib/commonjs/RNRenderer.web.js +2 -1
  26. package/lib/commonjs/RNRenderer.web.js.map +1 -1
  27. package/lib/commonjs/State.js +3 -4
  28. package/lib/commonjs/State.js.map +1 -1
  29. package/lib/commonjs/TouchEventType.js +3 -3
  30. package/lib/commonjs/TouchEventType.js.map +1 -1
  31. package/lib/commonjs/components/DrawerLayout.js +115 -90
  32. package/lib/commonjs/components/DrawerLayout.js.map +1 -1
  33. package/lib/commonjs/components/GestureButtons.js +81 -28
  34. package/lib/commonjs/components/GestureButtons.js.map +1 -1
  35. package/lib/commonjs/components/GestureButtonsProps.js.map +1 -1
  36. package/lib/commonjs/components/GestureComponents.js +37 -26
  37. package/lib/commonjs/components/GestureComponents.js.map +1 -1
  38. package/lib/commonjs/components/GestureComponents.web.js +27 -13
  39. package/lib/commonjs/components/GestureComponents.web.js.map +1 -1
  40. package/lib/commonjs/components/GestureHandlerButton.js +6 -2
  41. package/lib/commonjs/components/GestureHandlerButton.js.map +1 -1
  42. package/lib/commonjs/components/GestureHandlerButton.web.js +12 -4
  43. package/lib/commonjs/components/GestureHandlerButton.web.js.map +1 -1
  44. package/lib/commonjs/components/GestureHandlerRootView.android.js +15 -4
  45. package/lib/commonjs/components/GestureHandlerRootView.android.js.map +1 -1
  46. package/lib/commonjs/components/GestureHandlerRootView.js +14 -4
  47. package/lib/commonjs/components/GestureHandlerRootView.js.map +1 -1
  48. package/lib/commonjs/components/GestureHandlerRootView.web.js +13 -4
  49. package/lib/commonjs/components/GestureHandlerRootView.web.js.map +1 -1
  50. package/lib/commonjs/components/Pressable/Pressable.js +77 -29
  51. package/lib/commonjs/components/Pressable/Pressable.js.map +1 -1
  52. package/lib/commonjs/components/Pressable/PressableProps.js.map +1 -1
  53. package/lib/commonjs/components/Pressable/index.js +3 -1
  54. package/lib/commonjs/components/Pressable/index.js.map +1 -1
  55. package/lib/commonjs/components/Pressable/utils.js +20 -5
  56. package/lib/commonjs/components/Pressable/utils.js.map +1 -1
  57. package/lib/commonjs/components/ReanimatedDrawerLayout.js +76 -38
  58. package/lib/commonjs/components/ReanimatedDrawerLayout.js.map +1 -1
  59. package/lib/commonjs/components/ReanimatedSwipeable.js +45 -18
  60. package/lib/commonjs/components/ReanimatedSwipeable.js.map +1 -1
  61. package/lib/commonjs/components/Swipeable.js +75 -34
  62. package/lib/commonjs/components/Swipeable.js.map +1 -1
  63. package/lib/commonjs/components/Text.js +23 -9
  64. package/lib/commonjs/components/Text.js.map +1 -1
  65. package/lib/commonjs/components/gestureHandlerRootHOC.js +14 -5
  66. package/lib/commonjs/components/gestureHandlerRootHOC.js.map +1 -1
  67. package/lib/commonjs/components/touchables/GenericTouchable.js +76 -40
  68. package/lib/commonjs/components/touchables/GenericTouchable.js.map +1 -1
  69. package/lib/commonjs/components/touchables/GenericTouchableProps.js.map +1 -1
  70. package/lib/commonjs/components/touchables/TouchableHighlight.js +34 -19
  71. package/lib/commonjs/components/touchables/TouchableHighlight.js.map +1 -1
  72. package/lib/commonjs/components/touchables/TouchableNativeFeedback.android.js +32 -16
  73. package/lib/commonjs/components/touchables/TouchableNativeFeedback.android.js.map +1 -1
  74. package/lib/commonjs/components/touchables/TouchableNativeFeedback.js +5 -2
  75. package/lib/commonjs/components/touchables/TouchableNativeFeedback.js.map +1 -1
  76. package/lib/commonjs/components/touchables/TouchableNativeFeedbackProps.js.map +1 -1
  77. package/lib/commonjs/components/touchables/TouchableOpacity.js +25 -16
  78. package/lib/commonjs/components/touchables/TouchableOpacity.js.map +1 -1
  79. package/lib/commonjs/components/touchables/TouchableWithoutFeedback.js +13 -9
  80. package/lib/commonjs/components/touchables/TouchableWithoutFeedback.js.map +1 -1
  81. package/lib/commonjs/components/touchables/index.js +12 -7
  82. package/lib/commonjs/components/touchables/index.js.map +1 -1
  83. package/lib/commonjs/findNodeHandle.js +4 -1
  84. package/lib/commonjs/findNodeHandle.js.map +1 -1
  85. package/lib/commonjs/findNodeHandle.web.js +14 -5
  86. package/lib/commonjs/findNodeHandle.web.js.map +1 -1
  87. package/lib/commonjs/getReactNativeVersion.js +6 -1
  88. package/lib/commonjs/getReactNativeVersion.js.map +1 -1
  89. package/lib/commonjs/getReactNativeVersion.web.js +1 -0
  90. package/lib/commonjs/getReactNativeVersion.web.js.map +1 -1
  91. package/lib/commonjs/getShadowNodeFromRef.js +14 -13
  92. package/lib/commonjs/getShadowNodeFromRef.js.map +1 -1
  93. package/lib/commonjs/getShadowNodeFromRef.web.js +1 -0
  94. package/lib/commonjs/getShadowNodeFromRef.web.js.map +1 -1
  95. package/lib/commonjs/ghQueueMicrotask.js +2 -1
  96. package/lib/commonjs/ghQueueMicrotask.js.map +1 -1
  97. package/lib/commonjs/handlers/FlingGestureHandler.js +11 -9
  98. package/lib/commonjs/handlers/FlingGestureHandler.js.map +1 -1
  99. package/lib/commonjs/handlers/ForceTouchGestureHandler.js +22 -15
  100. package/lib/commonjs/handlers/ForceTouchGestureHandler.js.map +1 -1
  101. package/lib/commonjs/handlers/GestureHandlerEventPayload.js.map +1 -1
  102. package/lib/commonjs/handlers/LongPressGestureHandler.js +11 -9
  103. package/lib/commonjs/handlers/LongPressGestureHandler.js.map +1 -1
  104. package/lib/commonjs/handlers/NativeViewGestureHandler.js +13 -10
  105. package/lib/commonjs/handlers/NativeViewGestureHandler.js.map +1 -1
  106. package/lib/commonjs/handlers/PanGestureHandler.js +32 -13
  107. package/lib/commonjs/handlers/PanGestureHandler.js.map +1 -1
  108. package/lib/commonjs/handlers/PinchGestureHandler.js +9 -7
  109. package/lib/commonjs/handlers/PinchGestureHandler.js.map +1 -1
  110. package/lib/commonjs/handlers/PressabilityDebugView.js +1 -0
  111. package/lib/commonjs/handlers/PressabilityDebugView.js.map +1 -1
  112. package/lib/commonjs/handlers/PressabilityDebugView.web.js +1 -0
  113. package/lib/commonjs/handlers/PressabilityDebugView.web.js.map +1 -1
  114. package/lib/commonjs/handlers/RotationGestureHandler.js +9 -7
  115. package/lib/commonjs/handlers/RotationGestureHandler.js.map +1 -1
  116. package/lib/commonjs/handlers/TapGestureHandler.js +11 -9
  117. package/lib/commonjs/handlers/TapGestureHandler.js.map +1 -1
  118. package/lib/commonjs/handlers/createHandler.js +134 -50
  119. package/lib/commonjs/handlers/createHandler.js.map +1 -1
  120. package/lib/commonjs/handlers/createNativeWrapper.js +27 -17
  121. package/lib/commonjs/handlers/createNativeWrapper.js.map +1 -1
  122. package/lib/commonjs/handlers/customDirectEventTypes.js +1 -0
  123. package/lib/commonjs/handlers/customDirectEventTypes.js.map +1 -1
  124. package/lib/commonjs/handlers/customDirectEventTypes.web.js +2 -1
  125. package/lib/commonjs/handlers/customDirectEventTypes.web.js.map +1 -1
  126. package/lib/commonjs/handlers/gestureHandlerCommon.js +10 -9
  127. package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
  128. package/lib/commonjs/handlers/gestureHandlerTypesCompat.js.map +1 -1
  129. package/lib/commonjs/handlers/gestures/GestureDetector/Wrap.js +14 -5
  130. package/lib/commonjs/handlers/gestures/GestureDetector/Wrap.js.map +1 -1
  131. package/lib/commonjs/handlers/gestures/GestureDetector/Wrap.web.js +20 -10
  132. package/lib/commonjs/handlers/gestures/GestureDetector/Wrap.web.js.map +1 -1
  133. package/lib/commonjs/handlers/gestures/GestureDetector/attachHandlers.js +29 -9
  134. package/lib/commonjs/handlers/gestures/GestureDetector/attachHandlers.js.map +1 -1
  135. package/lib/commonjs/handlers/gestures/GestureDetector/dropHandlers.js +10 -1
  136. package/lib/commonjs/handlers/gestures/GestureDetector/dropHandlers.js.map +1 -1
  137. package/lib/commonjs/handlers/gestures/GestureDetector/index.js +36 -11
  138. package/lib/commonjs/handlers/gestures/GestureDetector/index.js.map +1 -1
  139. package/lib/commonjs/handlers/gestures/GestureDetector/needsToReattach.js +3 -0
  140. package/lib/commonjs/handlers/gestures/GestureDetector/needsToReattach.js.map +1 -1
  141. package/lib/commonjs/handlers/gestures/GestureDetector/types.js.map +1 -1
  142. package/lib/commonjs/handlers/gestures/GestureDetector/updateHandlers.js +24 -12
  143. package/lib/commonjs/handlers/gestures/GestureDetector/updateHandlers.js.map +1 -1
  144. package/lib/commonjs/handlers/gestures/GestureDetector/useAnimatedGesture.js +48 -12
  145. package/lib/commonjs/handlers/gestures/GestureDetector/useAnimatedGesture.js.map +1 -1
  146. package/lib/commonjs/handlers/gestures/GestureDetector/useDetectorUpdater.js +13 -3
  147. package/lib/commonjs/handlers/gestures/GestureDetector/useDetectorUpdater.js.map +1 -1
  148. package/lib/commonjs/handlers/gestures/GestureDetector/useMountReactions.js +9 -2
  149. package/lib/commonjs/handlers/gestures/GestureDetector/useMountReactions.js.map +1 -1
  150. package/lib/commonjs/handlers/gestures/GestureDetector/useViewRefHandler.js +14 -6
  151. package/lib/commonjs/handlers/gestures/GestureDetector/useViewRefHandler.js.map +1 -1
  152. package/lib/commonjs/handlers/gestures/GestureDetector/utils.js +55 -27
  153. package/lib/commonjs/handlers/gestures/GestureDetector/utils.js.map +1 -1
  154. package/lib/commonjs/handlers/gestures/eventReceiver.js +46 -14
  155. package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -1
  156. package/lib/commonjs/handlers/gestures/flingGesture.js +12 -5
  157. package/lib/commonjs/handlers/gestures/flingGesture.js.map +1 -1
  158. package/lib/commonjs/handlers/gestures/forceTouchGesture.js +19 -8
  159. package/lib/commonjs/handlers/gestures/forceTouchGesture.js.map +1 -1
  160. package/lib/commonjs/handlers/gestures/gesture.js +84 -44
  161. package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
  162. package/lib/commonjs/handlers/gestures/gestureComposition.js +31 -17
  163. package/lib/commonjs/handlers/gestures/gestureComposition.js.map +1 -1
  164. package/lib/commonjs/handlers/gestures/gestureObjects.js +27 -1
  165. package/lib/commonjs/handlers/gestures/gestureObjects.js.map +1 -1
  166. package/lib/commonjs/handlers/gestures/gestureStateManager.js +9 -3
  167. package/lib/commonjs/handlers/gestures/gestureStateManager.js.map +1 -1
  168. package/lib/commonjs/handlers/gestures/gestureStateManager.web.js +7 -2
  169. package/lib/commonjs/handlers/gestures/gestureStateManager.web.js.map +1 -1
  170. package/lib/commonjs/handlers/gestures/hoverGesture.js +25 -11
  171. package/lib/commonjs/handlers/gestures/hoverGesture.js.map +1 -1
  172. package/lib/commonjs/handlers/gestures/longPressGesture.js +14 -6
  173. package/lib/commonjs/handlers/gestures/longPressGesture.js.map +1 -1
  174. package/lib/commonjs/handlers/gestures/manualGesture.js +6 -0
  175. package/lib/commonjs/handlers/gestures/manualGesture.js.map +1 -1
  176. package/lib/commonjs/handlers/gestures/nativeGesture.js +12 -5
  177. package/lib/commonjs/handlers/gestures/nativeGesture.js.map +1 -1
  178. package/lib/commonjs/handlers/gestures/panGesture.js +43 -18
  179. package/lib/commonjs/handlers/gestures/panGesture.js.map +1 -1
  180. package/lib/commonjs/handlers/gestures/pinchGesture.js +9 -2
  181. package/lib/commonjs/handlers/gestures/pinchGesture.js.map +1 -1
  182. package/lib/commonjs/handlers/gestures/reanimatedWrapper.js +8 -1
  183. package/lib/commonjs/handlers/gestures/reanimatedWrapper.js.map +1 -1
  184. package/lib/commonjs/handlers/gestures/rotationGesture.js +9 -2
  185. package/lib/commonjs/handlers/gestures/rotationGesture.js.map +1 -1
  186. package/lib/commonjs/handlers/gestures/tapGesture.js +22 -10
  187. package/lib/commonjs/handlers/gestures/tapGesture.js.map +1 -1
  188. package/lib/commonjs/handlers/getNextHandlerTag.js +1 -0
  189. package/lib/commonjs/handlers/getNextHandlerTag.js.map +1 -1
  190. package/lib/commonjs/handlers/handlersRegistry.js +21 -6
  191. package/lib/commonjs/handlers/handlersRegistry.js.map +1 -1
  192. package/lib/commonjs/handlers/utils.js +26 -6
  193. package/lib/commonjs/handlers/utils.js.map +1 -1
  194. package/lib/commonjs/index.js +104 -75
  195. package/lib/commonjs/index.js.map +1 -1
  196. package/lib/commonjs/init.js +11 -4
  197. package/lib/commonjs/init.js.map +1 -1
  198. package/lib/commonjs/jestUtils/index.js +5 -4
  199. package/lib/commonjs/jestUtils/index.js.map +1 -1
  200. package/lib/commonjs/jestUtils/jestUtils.js +83 -19
  201. package/lib/commonjs/jestUtils/jestUtils.js.map +1 -1
  202. package/lib/commonjs/mocks.js +15 -5
  203. package/lib/commonjs/mocks.js.map +1 -1
  204. package/lib/commonjs/mountRegistry.js +12 -3
  205. package/lib/commonjs/mountRegistry.js.map +1 -1
  206. package/lib/commonjs/specs/NativeRNGestureHandlerModule.js +5 -1
  207. package/lib/commonjs/specs/NativeRNGestureHandlerModule.js.map +1 -1
  208. package/lib/commonjs/specs/RNGestureHandlerButtonNativeComponent.js +7 -2
  209. package/lib/commonjs/specs/RNGestureHandlerButtonNativeComponent.js.map +1 -1
  210. package/lib/commonjs/specs/RNGestureHandlerRootViewNativeComponent.js +7 -2
  211. package/lib/commonjs/specs/RNGestureHandlerRootViewNativeComponent.js.map +1 -1
  212. package/lib/commonjs/typeUtils.js.map +1 -1
  213. package/lib/commonjs/utils.js +28 -13
  214. package/lib/commonjs/utils.js.map +1 -1
  215. package/lib/commonjs/web/Gestures.js +23 -5
  216. package/lib/commonjs/web/Gestures.js.map +1 -1
  217. package/lib/commonjs/web/constants.js +4 -2
  218. package/lib/commonjs/web/constants.js.map +1 -1
  219. package/lib/commonjs/web/detectors/RotationGestureDetector.js +41 -5
  220. package/lib/commonjs/web/detectors/RotationGestureDetector.js.map +1 -1
  221. package/lib/commonjs/web/detectors/ScaleGestureDetector.js +42 -13
  222. package/lib/commonjs/web/detectors/ScaleGestureDetector.js.map +1 -1
  223. package/lib/commonjs/web/handlers/FlingGestureHandler.js +49 -6
  224. package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
  225. package/lib/commonjs/web/handlers/GestureHandler.js +195 -62
  226. package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
  227. package/lib/commonjs/web/handlers/HoverGestureHandler.js +19 -6
  228. package/lib/commonjs/web/handlers/HoverGestureHandler.js.map +1 -1
  229. package/lib/commonjs/web/handlers/IGestureHandler.js.map +1 -1
  230. package/lib/commonjs/web/handlers/LongPressGestureHandler.js +47 -6
  231. package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
  232. package/lib/commonjs/web/handlers/ManualGestureHandler.js +11 -1
  233. package/lib/commonjs/web/handlers/ManualGestureHandler.js.map +1 -1
  234. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +49 -8
  235. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
  236. package/lib/commonjs/web/handlers/PanGestureHandler.js +123 -8
  237. package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
  238. package/lib/commonjs/web/handlers/PinchGestureHandler.js +41 -4
  239. package/lib/commonjs/web/handlers/PinchGestureHandler.js.map +1 -1
  240. package/lib/commonjs/web/handlers/RotationGestureHandler.js +42 -4
  241. package/lib/commonjs/web/handlers/RotationGestureHandler.js.map +1 -1
  242. package/lib/commonjs/web/handlers/TapGestureHandler.js +67 -6
  243. package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
  244. package/lib/commonjs/web/interfaces.js +17 -9
  245. package/lib/commonjs/web/interfaces.js.map +1 -1
  246. package/lib/commonjs/web/tools/CircularBuffer.js +15 -3
  247. package/lib/commonjs/web/tools/CircularBuffer.js.map +1 -1
  248. package/lib/commonjs/web/tools/EventManager.js +41 -7
  249. package/lib/commonjs/web/tools/EventManager.js.map +1 -1
  250. package/lib/commonjs/web/tools/GestureHandlerDelegate.js.map +1 -1
  251. package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +78 -11
  252. package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -1
  253. package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js +48 -8
  254. package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js.map +1 -1
  255. package/lib/commonjs/web/tools/InteractionManager.js +22 -5
  256. package/lib/commonjs/web/tools/InteractionManager.js.map +1 -1
  257. package/lib/commonjs/web/tools/KeyboardEventManager.js +26 -4
  258. package/lib/commonjs/web/tools/KeyboardEventManager.js.map +1 -1
  259. package/lib/commonjs/web/tools/LeastSquareSolver.js +67 -30
  260. package/lib/commonjs/web/tools/LeastSquareSolver.js.map +1 -1
  261. package/lib/commonjs/web/tools/NodeManager.js +14 -7
  262. package/lib/commonjs/web/tools/NodeManager.js.map +1 -1
  263. package/lib/commonjs/web/tools/PointerEventManager.js +45 -10
  264. package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -1
  265. package/lib/commonjs/web/tools/PointerTracker.js +45 -9
  266. package/lib/commonjs/web/tools/PointerTracker.js.map +1 -1
  267. package/lib/commonjs/web/tools/Vector.js +18 -3
  268. package/lib/commonjs/web/tools/Vector.js.map +1 -1
  269. package/lib/commonjs/web/tools/VelocityTracker.js +31 -9
  270. package/lib/commonjs/web/tools/VelocityTracker.js.map +1 -1
  271. package/lib/commonjs/web/tools/WheelEventManager.js +17 -4
  272. package/lib/commonjs/web/tools/WheelEventManager.js.map +1 -1
  273. package/lib/commonjs/web/utils.js +55 -26
  274. package/lib/commonjs/web/utils.js.map +1 -1
  275. package/lib/commonjs/web_hammer/DiscreteGestureHandler.js +19 -7
  276. package/lib/commonjs/web_hammer/DiscreteGestureHandler.js.map +1 -1
  277. package/lib/commonjs/web_hammer/DraggingGestureHandler.js +13 -3
  278. package/lib/commonjs/web_hammer/DraggingGestureHandler.js.map +1 -1
  279. package/lib/commonjs/web_hammer/Errors.js +3 -0
  280. package/lib/commonjs/web_hammer/Errors.js.map +1 -1
  281. package/lib/commonjs/web_hammer/FlingGestureHandler.js +44 -13
  282. package/lib/commonjs/web_hammer/FlingGestureHandler.js.map +1 -1
  283. package/lib/commonjs/web_hammer/GestureHandler.js +142 -55
  284. package/lib/commonjs/web_hammer/GestureHandler.js.map +1 -1
  285. package/lib/commonjs/web_hammer/IndiscreteGestureHandler.js +11 -2
  286. package/lib/commonjs/web_hammer/IndiscreteGestureHandler.js.map +1 -1
  287. package/lib/commonjs/web_hammer/LongPressGestureHandler.js +19 -5
  288. package/lib/commonjs/web_hammer/LongPressGestureHandler.js.map +1 -1
  289. package/lib/commonjs/web_hammer/NativeViewGestureHandler.js +24 -16
  290. package/lib/commonjs/web_hammer/NativeViewGestureHandler.js.map +1 -1
  291. package/lib/commonjs/web_hammer/NodeManager.js +16 -9
  292. package/lib/commonjs/web_hammer/NodeManager.js.map +1 -1
  293. package/lib/commonjs/web_hammer/PanGestureHandler.js +49 -8
  294. package/lib/commonjs/web_hammer/PanGestureHandler.js.map +1 -1
  295. package/lib/commonjs/web_hammer/PinchGestureHandler.js +11 -2
  296. package/lib/commonjs/web_hammer/PinchGestureHandler.js.map +1 -1
  297. package/lib/commonjs/web_hammer/PressGestureHandler.js +43 -15
  298. package/lib/commonjs/web_hammer/PressGestureHandler.js.map +1 -1
  299. package/lib/commonjs/web_hammer/RotationGestureHandler.js +13 -2
  300. package/lib/commonjs/web_hammer/RotationGestureHandler.js.map +1 -1
  301. package/lib/commonjs/web_hammer/TapGestureHandler.js +52 -33
  302. package/lib/commonjs/web_hammer/TapGestureHandler.js.map +1 -1
  303. package/lib/commonjs/web_hammer/constants.js +26 -13
  304. package/lib/commonjs/web_hammer/constants.js.map +1 -1
  305. package/lib/commonjs/web_hammer/utils.js +14 -4
  306. package/lib/commonjs/web_hammer/utils.js.map +1 -1
  307. package/lib/module/ActionType.js +1 -3
  308. package/lib/module/ActionType.js.map +1 -1
  309. package/lib/module/Directions.js +3 -9
  310. package/lib/module/Directions.js.map +1 -1
  311. package/lib/module/EnableNewWebImplementation.js +5 -2
  312. package/lib/module/EnableNewWebImplementation.js.map +1 -1
  313. package/lib/module/GestureHandlerRootViewContext.js.map +1 -1
  314. package/lib/module/PlatformConstants.js +1 -0
  315. package/lib/module/PlatformConstants.js.map +1 -1
  316. package/lib/module/PlatformConstants.web.js +1 -0
  317. package/lib/module/PlatformConstants.web.js.map +1 -1
  318. package/lib/module/PointerType.js +4 -3
  319. package/lib/module/PointerType.js.map +1 -1
  320. package/lib/module/RNGestureHandlerModule.js +0 -1
  321. package/lib/module/RNGestureHandlerModule.js.map +1 -1
  322. package/lib/module/RNGestureHandlerModule.web.js +20 -10
  323. package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
  324. package/lib/module/RNGestureHandlerModule.windows.js +17 -18
  325. package/lib/module/RNGestureHandlerModule.windows.js.map +1 -1
  326. package/lib/module/RNRenderer.js.map +1 -1
  327. package/lib/module/RNRenderer.web.js.map +1 -1
  328. package/lib/module/State.js +1 -4
  329. package/lib/module/State.js.map +1 -1
  330. package/lib/module/TouchEventType.js +1 -3
  331. package/lib/module/TouchEventType.js.map +1 -1
  332. package/lib/module/components/DrawerLayout.js +99 -80
  333. package/lib/module/components/DrawerLayout.js.map +1 -1
  334. package/lib/module/components/GestureButtons.js +55 -19
  335. package/lib/module/components/GestureButtons.js.map +1 -1
  336. package/lib/module/components/GestureButtonsProps.js.map +1 -1
  337. package/lib/module/components/GestureComponents.js +12 -17
  338. package/lib/module/components/GestureComponents.js.map +1 -1
  339. package/lib/module/components/GestureComponents.web.js +4 -4
  340. package/lib/module/components/GestureComponents.web.js.map +1 -1
  341. package/lib/module/components/GestureHandlerButton.js.map +1 -1
  342. package/lib/module/components/GestureHandlerButton.web.js +2 -1
  343. package/lib/module/components/GestureHandlerButton.web.js.map +1 -1
  344. package/lib/module/components/GestureHandlerRootView.android.js +2 -1
  345. package/lib/module/components/GestureHandlerRootView.android.js.map +1 -1
  346. package/lib/module/components/GestureHandlerRootView.js +2 -1
  347. package/lib/module/components/GestureHandlerRootView.js.map +1 -1
  348. package/lib/module/components/GestureHandlerRootView.web.js +2 -1
  349. package/lib/module/components/GestureHandlerRootView.web.js.map +1 -1
  350. package/lib/module/components/Pressable/Pressable.js +59 -26
  351. package/lib/module/components/Pressable/Pressable.js.map +1 -1
  352. package/lib/module/components/Pressable/PressableProps.js.map +1 -1
  353. package/lib/module/components/Pressable/index.js.map +1 -1
  354. package/lib/module/components/Pressable/utils.js +14 -4
  355. package/lib/module/components/Pressable/utils.js.map +1 -1
  356. package/lib/module/components/ReanimatedDrawerLayout.js +56 -34
  357. package/lib/module/components/ReanimatedDrawerLayout.js.map +1 -1
  358. package/lib/module/components/ReanimatedSwipeable.js +30 -14
  359. package/lib/module/components/ReanimatedSwipeable.js.map +1 -1
  360. package/lib/module/components/Swipeable.js +59 -28
  361. package/lib/module/components/Swipeable.js.map +1 -1
  362. package/lib/module/components/Text.js +10 -6
  363. package/lib/module/components/Text.js.map +1 -1
  364. package/lib/module/components/gestureHandlerRootHOC.js +2 -2
  365. package/lib/module/components/gestureHandlerRootHOC.js.map +1 -1
  366. package/lib/module/components/touchables/GenericTouchable.js +63 -34
  367. package/lib/module/components/touchables/GenericTouchable.js.map +1 -1
  368. package/lib/module/components/touchables/GenericTouchableProps.js.map +1 -1
  369. package/lib/module/components/touchables/TouchableHighlight.js +24 -15
  370. package/lib/module/components/touchables/TouchableHighlight.js.map +1 -1
  371. package/lib/module/components/touchables/TouchableNativeFeedback.android.js +20 -10
  372. package/lib/module/components/touchables/TouchableNativeFeedback.android.js.map +1 -1
  373. package/lib/module/components/touchables/TouchableNativeFeedback.js +2 -2
  374. package/lib/module/components/touchables/TouchableNativeFeedback.js.map +1 -1
  375. package/lib/module/components/touchables/TouchableNativeFeedbackProps.js.map +1 -1
  376. package/lib/module/components/touchables/TouchableOpacity.js +16 -10
  377. package/lib/module/components/touchables/TouchableOpacity.js.map +1 -1
  378. package/lib/module/components/touchables/TouchableWithoutFeedback.js +3 -6
  379. package/lib/module/components/touchables/TouchableWithoutFeedback.js.map +1 -1
  380. package/lib/module/components/touchables/index.js.map +1 -1
  381. package/lib/module/findNodeHandle.js.map +1 -1
  382. package/lib/module/findNodeHandle.web.js +11 -5
  383. package/lib/module/findNodeHandle.web.js.map +1 -1
  384. package/lib/module/getReactNativeVersion.js.map +1 -1
  385. package/lib/module/getReactNativeVersion.web.js.map +1 -1
  386. package/lib/module/getShadowNodeFromRef.js +13 -13
  387. package/lib/module/getShadowNodeFromRef.js.map +1 -1
  388. package/lib/module/getShadowNodeFromRef.web.js.map +1 -1
  389. package/lib/module/ghQueueMicrotask.js.map +1 -1
  390. package/lib/module/handlers/FlingGestureHandler.js +0 -6
  391. package/lib/module/handlers/FlingGestureHandler.js.map +1 -1
  392. package/lib/module/handlers/ForceTouchGestureHandler.js +8 -12
  393. package/lib/module/handlers/ForceTouchGestureHandler.js.map +1 -1
  394. package/lib/module/handlers/GestureHandlerEventPayload.js.map +1 -1
  395. package/lib/module/handlers/LongPressGestureHandler.js +0 -6
  396. package/lib/module/handlers/LongPressGestureHandler.js.map +1 -1
  397. package/lib/module/handlers/NativeViewGestureHandler.js +0 -6
  398. package/lib/module/handlers/NativeViewGestureHandler.js.map +1 -1
  399. package/lib/module/handlers/PanGestureHandler.js +19 -8
  400. package/lib/module/handlers/PanGestureHandler.js.map +1 -1
  401. package/lib/module/handlers/PinchGestureHandler.js +0 -2
  402. package/lib/module/handlers/PinchGestureHandler.js.map +1 -1
  403. package/lib/module/handlers/PressabilityDebugView.js.map +1 -1
  404. package/lib/module/handlers/PressabilityDebugView.web.js.map +1 -1
  405. package/lib/module/handlers/RotationGestureHandler.js +0 -2
  406. package/lib/module/handlers/RotationGestureHandler.js.map +1 -1
  407. package/lib/module/handlers/TapGestureHandler.js +0 -6
  408. package/lib/module/handlers/TapGestureHandler.js.map +1 -1
  409. package/lib/module/handlers/createHandler.js +106 -47
  410. package/lib/module/handlers/createHandler.js.map +1 -1
  411. package/lib/module/handlers/createNativeWrapper.js +17 -12
  412. package/lib/module/handlers/createNativeWrapper.js.map +1 -1
  413. package/lib/module/handlers/customDirectEventTypes.js.map +1 -1
  414. package/lib/module/handlers/customDirectEventTypes.web.js.map +1 -1
  415. package/lib/module/handlers/gestureHandlerCommon.js +4 -9
  416. package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
  417. package/lib/module/handlers/gestureHandlerTypesCompat.js.map +1 -1
  418. package/lib/module/handlers/gestures/GestureDetector/Wrap.js +4 -3
  419. package/lib/module/handlers/gestures/GestureDetector/Wrap.js.map +1 -1
  420. package/lib/module/handlers/gestures/GestureDetector/Wrap.web.js +6 -5
  421. package/lib/module/handlers/gestures/GestureDetector/Wrap.web.js.map +1 -1
  422. package/lib/module/handlers/gestures/GestureDetector/attachHandlers.js +16 -8
  423. package/lib/module/handlers/gestures/GestureDetector/attachHandlers.js.map +1 -1
  424. package/lib/module/handlers/gestures/GestureDetector/dropHandlers.js +1 -0
  425. package/lib/module/handlers/gestures/GestureDetector/dropHandlers.js.map +1 -1
  426. package/lib/module/handlers/gestures/GestureDetector/index.js +13 -7
  427. package/lib/module/handlers/gestures/GestureDetector/index.js.map +1 -1
  428. package/lib/module/handlers/gestures/GestureDetector/needsToReattach.js +2 -0
  429. package/lib/module/handlers/gestures/GestureDetector/needsToReattach.js.map +1 -1
  430. package/lib/module/handlers/gestures/GestureDetector/types.js.map +1 -1
  431. package/lib/module/handlers/gestures/GestureDetector/updateHandlers.js +14 -11
  432. package/lib/module/handlers/gestures/GestureDetector/updateHandlers.js.map +1 -1
  433. package/lib/module/handlers/gestures/GestureDetector/useAnimatedGesture.js +39 -12
  434. package/lib/module/handlers/gestures/GestureDetector/useAnimatedGesture.js.map +1 -1
  435. package/lib/module/handlers/gestures/GestureDetector/useDetectorUpdater.js +5 -5
  436. package/lib/module/handlers/gestures/GestureDetector/useDetectorUpdater.js.map +1 -1
  437. package/lib/module/handlers/gestures/GestureDetector/useMountReactions.js +6 -2
  438. package/lib/module/handlers/gestures/GestureDetector/useMountReactions.js.map +1 -1
  439. package/lib/module/handlers/gestures/GestureDetector/useViewRefHandler.js +7 -5
  440. package/lib/module/handlers/gestures/GestureDetector/useViewRefHandler.js.map +1 -1
  441. package/lib/module/handlers/gestures/GestureDetector/utils.js +28 -23
  442. package/lib/module/handlers/gestures/GestureDetector/utils.js.map +1 -1
  443. package/lib/module/handlers/gestures/eventReceiver.js +38 -14
  444. package/lib/module/handlers/gestures/eventReceiver.js.map +1 -1
  445. package/lib/module/handlers/gestures/flingGesture.js +9 -5
  446. package/lib/module/handlers/gestures/flingGesture.js.map +1 -1
  447. package/lib/module/handlers/gestures/forceTouchGesture.js +17 -8
  448. package/lib/module/handlers/gestures/forceTouchGesture.js.map +1 -1
  449. package/lib/module/handlers/gestures/gesture.js +73 -44
  450. package/lib/module/handlers/gestures/gesture.js.map +1 -1
  451. package/lib/module/handlers/gestures/gestureComposition.js +24 -16
  452. package/lib/module/handlers/gestures/gestureComposition.js.map +1 -1
  453. package/lib/module/handlers/gestures/gestureObjects.js +14 -1
  454. package/lib/module/handlers/gestures/gestureObjects.js.map +1 -1
  455. package/lib/module/handlers/gestures/gestureStateManager.js +4 -3
  456. package/lib/module/handlers/gestures/gestureStateManager.js.map +1 -1
  457. package/lib/module/handlers/gestures/gestureStateManager.web.js +1 -0
  458. package/lib/module/handlers/gestures/gestureStateManager.web.js.map +1 -1
  459. package/lib/module/handlers/gestures/hoverGesture.js +18 -9
  460. package/lib/module/handlers/gestures/hoverGesture.js.map +1 -1
  461. package/lib/module/handlers/gestures/longPressGesture.js +11 -6
  462. package/lib/module/handlers/gestures/longPressGesture.js.map +1 -1
  463. package/lib/module/handlers/gestures/manualGesture.js +4 -0
  464. package/lib/module/handlers/gestures/manualGesture.js.map +1 -1
  465. package/lib/module/handlers/gestures/nativeGesture.js +9 -5
  466. package/lib/module/handlers/gestures/nativeGesture.js.map +1 -1
  467. package/lib/module/handlers/gestures/panGesture.js +41 -18
  468. package/lib/module/handlers/gestures/panGesture.js.map +1 -1
  469. package/lib/module/handlers/gestures/pinchGesture.js +7 -2
  470. package/lib/module/handlers/gestures/pinchGesture.js.map +1 -1
  471. package/lib/module/handlers/gestures/reanimatedWrapper.js +5 -0
  472. package/lib/module/handlers/gestures/reanimatedWrapper.js.map +1 -1
  473. package/lib/module/handlers/gestures/rotationGesture.js +7 -2
  474. package/lib/module/handlers/gestures/rotationGesture.js.map +1 -1
  475. package/lib/module/handlers/gestures/tapGesture.js +19 -10
  476. package/lib/module/handlers/gestures/tapGesture.js.map +1 -1
  477. package/lib/module/handlers/getNextHandlerTag.js.map +1 -1
  478. package/lib/module/handlers/handlersRegistry.js +5 -0
  479. package/lib/module/handlers/handlersRegistry.js.map +1 -1
  480. package/lib/module/handlers/utils.js +13 -4
  481. package/lib/module/handlers/utils.js.map +1 -1
  482. package/lib/module/index.js.map +1 -1
  483. package/lib/module/init.js +2 -3
  484. package/lib/module/init.js.map +1 -1
  485. package/lib/module/jestUtils/index.js.map +1 -1
  486. package/lib/module/jestUtils/jestUtils.js +66 -20
  487. package/lib/module/jestUtils/jestUtils.js.map +1 -1
  488. package/lib/module/mocks.js +7 -3
  489. package/lib/module/mocks.js.map +1 -1
  490. package/lib/module/mountRegistry.js +10 -3
  491. package/lib/module/mountRegistry.js.map +1 -1
  492. package/lib/module/specs/NativeRNGestureHandlerModule.js.map +1 -1
  493. package/lib/module/specs/RNGestureHandlerButtonNativeComponent.js.map +1 -1
  494. package/lib/module/specs/RNGestureHandlerRootViewNativeComponent.js.map +1 -1
  495. package/lib/module/typeUtils.js.map +1 -1
  496. package/lib/module/utils.js +11 -6
  497. package/lib/module/utils.js.map +1 -1
  498. package/lib/module/web/Gestures.js +1 -2
  499. package/lib/module/web/Gestures.js.map +1 -1
  500. package/lib/module/web/constants.js.map +1 -1
  501. package/lib/module/web/detectors/RotationGestureDetector.js +38 -5
  502. package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -1
  503. package/lib/module/web/detectors/ScaleGestureDetector.js +38 -13
  504. package/lib/module/web/detectors/ScaleGestureDetector.js.map +1 -1
  505. package/lib/module/web/handlers/FlingGestureHandler.js +39 -5
  506. package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
  507. package/lib/module/web/handlers/GestureHandler.js +181 -61
  508. package/lib/module/web/handlers/GestureHandler.js.map +1 -1
  509. package/lib/module/web/handlers/HoverGestureHandler.js +11 -5
  510. package/lib/module/web/handlers/HoverGestureHandler.js.map +1 -1
  511. package/lib/module/web/handlers/IGestureHandler.js.map +1 -1
  512. package/lib/module/web/handlers/LongPressGestureHandler.js +40 -5
  513. package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
  514. package/lib/module/web/handlers/ManualGestureHandler.js +6 -0
  515. package/lib/module/web/handlers/ManualGestureHandler.js.map +1 -1
  516. package/lib/module/web/handlers/NativeViewGestureHandler.js +41 -7
  517. package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
  518. package/lib/module/web/handlers/PanGestureHandler.js +114 -7
  519. package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
  520. package/lib/module/web/handlers/PinchGestureHandler.js +33 -3
  521. package/lib/module/web/handlers/PinchGestureHandler.js.map +1 -1
  522. package/lib/module/web/handlers/RotationGestureHandler.js +34 -3
  523. package/lib/module/web/handlers/RotationGestureHandler.js.map +1 -1
  524. package/lib/module/web/handlers/TapGestureHandler.js +59 -5
  525. package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
  526. package/lib/module/web/interfaces.js +14 -9
  527. package/lib/module/web/interfaces.js.map +1 -1
  528. package/lib/module/web/tools/CircularBuffer.js +13 -3
  529. package/lib/module/web/tools/CircularBuffer.js.map +1 -1
  530. package/lib/module/web/tools/EventManager.js +39 -7
  531. package/lib/module/web/tools/EventManager.js.map +1 -1
  532. package/lib/module/web/tools/GestureHandlerDelegate.js.map +1 -1
  533. package/lib/module/web/tools/GestureHandlerOrchestrator.js +71 -10
  534. package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -1
  535. package/lib/module/web/tools/GestureHandlerWebDelegate.js +37 -7
  536. package/lib/module/web/tools/GestureHandlerWebDelegate.js.map +1 -1
  537. package/lib/module/web/tools/InteractionManager.js +19 -5
  538. package/lib/module/web/tools/InteractionManager.js.map +1 -1
  539. package/lib/module/web/tools/KeyboardEventManager.js +19 -3
  540. package/lib/module/web/tools/KeyboardEventManager.js.map +1 -1
  541. package/lib/module/web/tools/LeastSquareSolver.js +65 -30
  542. package/lib/module/web/tools/LeastSquareSolver.js.map +1 -1
  543. package/lib/module/web/tools/NodeManager.js +12 -7
  544. package/lib/module/web/tools/NodeManager.js.map +1 -1
  545. package/lib/module/web/tools/PointerEventManager.js +35 -9
  546. package/lib/module/web/tools/PointerEventManager.js.map +1 -1
  547. package/lib/module/web/tools/PointerTracker.js +39 -8
  548. package/lib/module/web/tools/PointerTracker.js.map +1 -1
  549. package/lib/module/web/tools/Vector.js +14 -3
  550. package/lib/module/web/tools/Vector.js.map +1 -1
  551. package/lib/module/web/tools/VelocityTracker.js +25 -8
  552. package/lib/module/web/tools/VelocityTracker.js.map +1 -1
  553. package/lib/module/web/tools/WheelEventManager.js +10 -3
  554. package/lib/module/web/tools/WheelEventManager.js.map +1 -1
  555. package/lib/module/web/utils.js +40 -21
  556. package/lib/module/web/utils.js.map +1 -1
  557. package/lib/module/web_hammer/DiscreteGestureHandler.js +13 -4
  558. package/lib/module/web_hammer/DiscreteGestureHandler.js.map +1 -1
  559. package/lib/module/web_hammer/DraggingGestureHandler.js +5 -0
  560. package/lib/module/web_hammer/DraggingGestureHandler.js.map +1 -1
  561. package/lib/module/web_hammer/Errors.js +1 -0
  562. package/lib/module/web_hammer/Errors.js.map +1 -1
  563. package/lib/module/web_hammer/FlingGestureHandler.js +35 -10
  564. package/lib/module/web_hammer/FlingGestureHandler.js.map +1 -1
  565. package/lib/module/web_hammer/GestureHandler.js +130 -53
  566. package/lib/module/web_hammer/GestureHandler.js.map +1 -1
  567. package/lib/module/web_hammer/IndiscreteGestureHandler.js +6 -1
  568. package/lib/module/web_hammer/IndiscreteGestureHandler.js.map +1 -1
  569. package/lib/module/web_hammer/LongPressGestureHandler.js +11 -2
  570. package/lib/module/web_hammer/LongPressGestureHandler.js.map +1 -1
  571. package/lib/module/web_hammer/NativeViewGestureHandler.js +12 -12
  572. package/lib/module/web_hammer/NativeViewGestureHandler.js.map +1 -1
  573. package/lib/module/web_hammer/NodeManager.js +8 -6
  574. package/lib/module/web_hammer/NodeManager.js.map +1 -1
  575. package/lib/module/web_hammer/PanGestureHandler.js +40 -6
  576. package/lib/module/web_hammer/PanGestureHandler.js.map +1 -1
  577. package/lib/module/web_hammer/PinchGestureHandler.js +5 -0
  578. package/lib/module/web_hammer/PinchGestureHandler.js.map +1 -1
  579. package/lib/module/web_hammer/PressGestureHandler.js +34 -13
  580. package/lib/module/web_hammer/PressGestureHandler.js.map +1 -1
  581. package/lib/module/web_hammer/RotationGestureHandler.js +6 -0
  582. package/lib/module/web_hammer/RotationGestureHandler.js.map +1 -1
  583. package/lib/module/web_hammer/TapGestureHandler.js +45 -31
  584. package/lib/module/web_hammer/TapGestureHandler.js.map +1 -1
  585. package/lib/module/web_hammer/constants.js +1 -2
  586. package/lib/module/web_hammer/constants.js.map +1 -1
  587. package/lib/module/web_hammer/utils.js +2 -2
  588. package/lib/module/web_hammer/utils.js.map +1 -1
  589. package/lib/typescript/components/touchables/TouchableHighlight.d.ts +2 -2
  590. package/lib/typescript/components/touchables/TouchableNativeFeedback.android.d.ts +1 -1
  591. package/lib/typescript/components/touchables/TouchableNativeFeedback.d.ts +1 -1
  592. package/lib/typescript/components/touchables/TouchableNativeFeedbackProps.d.ts +1 -1
  593. package/lib/typescript/components/touchables/TouchableOpacity.d.ts +2 -2
  594. package/lib/typescript/components/touchables/TouchableWithoutFeedback.d.ts +2 -2
  595. package/package.json +1 -1
  596. package/src/components/touchables/TouchableHighlight.tsx +2 -2
  597. package/src/components/touchables/TouchableNativeFeedback.android.tsx +1 -1
  598. package/src/components/touchables/TouchableNativeFeedback.tsx +1 -1
  599. package/src/components/touchables/TouchableNativeFeedbackProps.tsx +1 -1
  600. package/src/components/touchables/TouchableOpacity.tsx +2 -2
  601. package/src/components/touchables/TouchableWithoutFeedback.tsx +2 -2
@@ -1 +1 @@
1
- {"version":3,"names":["findNodeHandle","PointerEventManager","State","isPointerInBounds","MouseButton","KeyboardEventManager","WheelEventManager","GestureHandlerWebDelegate","constructor","_defineProperty","userSelect","touchAction","init","viewRef","handler","Error","handlerTag","isInitialized","gestureHandler","view","defaultViewStyles","style","config","setUserSelect","enabled","setTouchAction","setContextMenu","eventManagers","push","forEach","manager","attachEventManager","x","y","measureView","rect","getBoundingClientRect","pageX","left","pageY","top","width","height","reset","resetManager","tryResetCursor","activeCursor","state","ACTIVE","cursor","shouldDisableContextMenu","enableContextMenu","undefined","isButtonInConfig","RIGHT","addContextMenuListeners","addEventListener","disableContextMenu","removeContextMenuListeners","removeEventListener","e","preventDefault","stopPropagation","isHandlerEnabled","onEnabledChange","registerListeners","unregisterListeners","onBegin","onActivate","onEnd","onCancel","onFail","destroy","_view","value"],"sources":["GestureHandlerWebDelegate.ts"],"sourcesContent":["import findNodeHandle from '../../findNodeHandle';\nimport type IGestureHandler from '../handlers/IGestureHandler';\nimport {\n GestureHandlerDelegate,\n MeasureResult,\n} from './GestureHandlerDelegate';\nimport PointerEventManager from './PointerEventManager';\nimport { State } from '../../State';\nimport { isPointerInBounds } from '../utils';\nimport EventManager from './EventManager';\nimport { Config } from '../interfaces';\nimport { MouseButton } from '../../handlers/gestureHandlerCommon';\nimport KeyboardEventManager from './KeyboardEventManager';\nimport WheelEventManager from './WheelEventManager';\n\ninterface DefaultViewStyles {\n userSelect: string;\n touchAction: string;\n}\n\nexport class GestureHandlerWebDelegate\n implements GestureHandlerDelegate<HTMLElement, IGestureHandler>\n{\n private isInitialized = false;\n private _view!: HTMLElement;\n\n private gestureHandler!: IGestureHandler;\n private eventManagers: EventManager<unknown>[] = [];\n private defaultViewStyles: DefaultViewStyles = {\n userSelect: '',\n touchAction: '',\n };\n\n init(viewRef: number, handler: IGestureHandler): void {\n if (!viewRef) {\n throw new Error(\n `Cannot find HTML Element for handler ${handler.handlerTag}`\n );\n }\n\n this.isInitialized = true;\n\n this.gestureHandler = handler;\n this.view = findNodeHandle(viewRef) as unknown as HTMLElement;\n\n this.defaultViewStyles = {\n userSelect: this.view.style.userSelect,\n touchAction: this.view.style.touchAction,\n };\n\n const config = handler.config;\n\n this.setUserSelect(config.enabled);\n this.setTouchAction(config.enabled);\n this.setContextMenu(config.enabled);\n\n this.eventManagers.push(new PointerEventManager(this.view));\n this.eventManagers.push(new KeyboardEventManager(this.view));\n this.eventManagers.push(new WheelEventManager(this.view));\n\n this.eventManagers.forEach((manager) =>\n this.gestureHandler.attachEventManager(manager)\n );\n }\n\n isPointerInBounds({ x, y }: { x: number; y: number }): boolean {\n return isPointerInBounds(this.view, { x, y });\n }\n\n measureView(): MeasureResult {\n const rect = this.view.getBoundingClientRect();\n\n return {\n pageX: rect.left,\n pageY: rect.top,\n width: rect.width,\n height: rect.height,\n };\n }\n\n reset(): void {\n this.eventManagers.forEach((manager: EventManager<unknown>) =>\n manager.resetManager()\n );\n }\n\n tryResetCursor() {\n const config = this.gestureHandler.config;\n\n if (\n config.activeCursor &&\n config.activeCursor !== 'auto' &&\n this.gestureHandler.state === State.ACTIVE\n ) {\n this.view.style.cursor = 'auto';\n }\n }\n\n private shouldDisableContextMenu(config: Config) {\n return (\n (config.enableContextMenu === undefined &&\n this.gestureHandler.isButtonInConfig(MouseButton.RIGHT)) ||\n config.enableContextMenu === false\n );\n }\n\n private addContextMenuListeners(config: Config): void {\n if (this.shouldDisableContextMenu(config)) {\n this.view.addEventListener('contextmenu', this.disableContextMenu);\n } else if (config.enableContextMenu) {\n this.view.addEventListener('contextmenu', this.enableContextMenu);\n }\n }\n\n private removeContextMenuListeners(config: Config): void {\n if (this.shouldDisableContextMenu(config)) {\n this.view.removeEventListener('contextmenu', this.disableContextMenu);\n } else if (config.enableContextMenu) {\n this.view.removeEventListener('contextmenu', this.enableContextMenu);\n }\n }\n\n private disableContextMenu(this: void, e: MouseEvent): void {\n e.preventDefault();\n }\n\n private enableContextMenu(this: void, e: MouseEvent): void {\n e.stopPropagation();\n }\n\n private setUserSelect(isHandlerEnabled: boolean) {\n const { userSelect } = this.gestureHandler.config;\n\n this.view.style['userSelect'] = isHandlerEnabled\n ? (userSelect ?? 'none')\n : this.defaultViewStyles.userSelect;\n\n this.view.style['webkitUserSelect'] = isHandlerEnabled\n ? (userSelect ?? 'none')\n : this.defaultViewStyles.userSelect;\n }\n\n private setTouchAction(isHandlerEnabled: boolean) {\n const { touchAction } = this.gestureHandler.config;\n\n this.view.style['touchAction'] = isHandlerEnabled\n ? (touchAction ?? 'none')\n : this.defaultViewStyles.touchAction;\n\n // @ts-ignore This one disables default events on Safari\n this.view.style['WebkitTouchCallout'] = isHandlerEnabled\n ? (touchAction ?? 'none')\n : this.defaultViewStyles.touchAction;\n }\n\n private setContextMenu(isHandlerEnabled: boolean) {\n const config = this.gestureHandler.config;\n\n if (isHandlerEnabled) {\n this.addContextMenuListeners(config);\n } else {\n this.removeContextMenuListeners(config);\n }\n }\n\n onEnabledChange(enabled: boolean): void {\n if (!this.isInitialized) {\n return;\n }\n\n this.setUserSelect(enabled);\n this.setTouchAction(enabled);\n this.setContextMenu(enabled);\n\n if (enabled) {\n this.eventManagers.forEach((manager) => {\n // It may look like managers will be registered twice when handler is mounted for the first time.\n // However, `init` method is called AFTER `updateGestureConfig` - it means that delegate has not\n // been initialized yet, so this code won't be executed.\n //\n // Also, because we use defined functions, not lambdas, they will not be registered multiple times.\n manager.registerListeners();\n });\n } else {\n this.eventManagers.forEach((manager) => {\n manager.unregisterListeners();\n });\n }\n }\n\n onBegin(): void {\n // no-op for now\n }\n\n onActivate(): void {\n const config = this.gestureHandler.config;\n\n if (\n (!this.view.style.cursor || this.view.style.cursor === 'auto') &&\n config.activeCursor\n ) {\n this.view.style.cursor = config.activeCursor;\n }\n }\n\n onEnd(): void {\n this.tryResetCursor();\n }\n\n onCancel(): void {\n this.tryResetCursor();\n }\n\n onFail(): void {\n this.tryResetCursor();\n }\n\n public destroy(config: Config): void {\n this.removeContextMenuListeners(config);\n\n this.eventManagers.forEach((manager) => {\n manager.unregisterListeners();\n });\n }\n\n public get view() {\n return this._view;\n }\n public set view(value: HTMLElement) {\n this._view = value;\n }\n}\n"],"mappings":";;;AAAA,OAAOA,cAAc,MAAM,sBAAsB;AAMjD,OAAOC,mBAAmB,MAAM,uBAAuB;AACvD,SAASC,KAAK,QAAQ,aAAa;AACnC,SAASC,iBAAiB,QAAQ,UAAU;AAG5C,SAASC,WAAW,QAAQ,qCAAqC;AACjE,OAAOC,oBAAoB,MAAM,wBAAwB;AACzD,OAAOC,iBAAiB,MAAM,qBAAqB;AAOnD,OAAO,MAAMC,yBAAyB,CAEtC;EAAAC,YAAA;IAAAC,eAAA,wBAC0B,KAAK;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA,wBAIoB,EAAE;IAAAA,eAAA,4BACJ;MAC7CC,UAAU,EAAE,EAAE;MACdC,WAAW,EAAE;IACf,CAAC;EAAA;EAEDC,IAAIA,CAACC,OAAe,EAAEC,OAAwB,EAAQ;IACpD,IAAI,CAACD,OAAO,EAAE;MACZ,MAAM,IAAIE,KAAK,CACb,wCAAwCD,OAAO,CAACE,UAAU,EAC5D,CAAC;IACH;IAEA,IAAI,CAACC,aAAa,GAAG,IAAI;IAEzB,IAAI,CAACC,cAAc,GAAGJ,OAAO;IAC7B,IAAI,CAACK,IAAI,GAAGnB,cAAc,CAACa,OAAO,CAA2B;IAE7D,IAAI,CAACO,iBAAiB,GAAG;MACvBV,UAAU,EAAE,IAAI,CAACS,IAAI,CAACE,KAAK,CAACX,UAAU;MACtCC,WAAW,EAAE,IAAI,CAACQ,IAAI,CAACE,KAAK,CAACV;IAC/B,CAAC;IAED,MAAMW,MAAM,GAAGR,OAAO,CAACQ,MAAM;IAE7B,IAAI,CAACC,aAAa,CAACD,MAAM,CAACE,OAAO,CAAC;IAClC,IAAI,CAACC,cAAc,CAACH,MAAM,CAACE,OAAO,CAAC;IACnC,IAAI,CAACE,cAAc,CAACJ,MAAM,CAACE,OAAO,CAAC;IAEnC,IAAI,CAACG,aAAa,CAACC,IAAI,CAAC,IAAI3B,mBAAmB,CAAC,IAAI,CAACkB,IAAI,CAAC,CAAC;IAC3D,IAAI,CAACQ,aAAa,CAACC,IAAI,CAAC,IAAIvB,oBAAoB,CAAC,IAAI,CAACc,IAAI,CAAC,CAAC;IAC5D,IAAI,CAACQ,aAAa,CAACC,IAAI,CAAC,IAAItB,iBAAiB,CAAC,IAAI,CAACa,IAAI,CAAC,CAAC;IAEzD,IAAI,CAACQ,aAAa,CAACE,OAAO,CAAEC,OAAO,IACjC,IAAI,CAACZ,cAAc,CAACa,kBAAkB,CAACD,OAAO,CAChD,CAAC;EACH;EAEA3B,iBAAiBA,CAAC;IAAE6B,CAAC;IAAEC;EAA4B,CAAC,EAAW;IAC7D,OAAO9B,iBAAiB,CAAC,IAAI,CAACgB,IAAI,EAAE;MAAEa,CAAC;MAAEC;IAAE,CAAC,CAAC;EAC/C;EAEAC,WAAWA,CAAA,EAAkB;IAC3B,MAAMC,IAAI,GAAG,IAAI,CAAChB,IAAI,CAACiB,qBAAqB,CAAC,CAAC;IAE9C,OAAO;MACLC,KAAK,EAAEF,IAAI,CAACG,IAAI;MAChBC,KAAK,EAAEJ,IAAI,CAACK,GAAG;MACfC,KAAK,EAAEN,IAAI,CAACM,KAAK;MACjBC,MAAM,EAAEP,IAAI,CAACO;IACf,CAAC;EACH;EAEAC,KAAKA,CAAA,EAAS;IACZ,IAAI,CAAChB,aAAa,CAACE,OAAO,CAAEC,OAA8B,IACxDA,OAAO,CAACc,YAAY,CAAC,CACvB,CAAC;EACH;EAEAC,cAAcA,CAAA,EAAG;IACf,MAAMvB,MAAM,GAAG,IAAI,CAACJ,cAAc,CAACI,MAAM;IAEzC,IACEA,MAAM,CAACwB,YAAY,IACnBxB,MAAM,CAACwB,YAAY,KAAK,MAAM,IAC9B,IAAI,CAAC5B,cAAc,CAAC6B,KAAK,KAAK7C,KAAK,CAAC8C,MAAM,EAC1C;MACA,IAAI,CAAC7B,IAAI,CAACE,KAAK,CAAC4B,MAAM,GAAG,MAAM;IACjC;EACF;EAEQC,wBAAwBA,CAAC5B,MAAc,EAAE;IAC/C,OACGA,MAAM,CAAC6B,iBAAiB,KAAKC,SAAS,IACrC,IAAI,CAAClC,cAAc,CAACmC,gBAAgB,CAACjD,WAAW,CAACkD,KAAK,CAAC,IACzDhC,MAAM,CAAC6B,iBAAiB,KAAK,KAAK;EAEtC;EAEQI,uBAAuBA,CAACjC,MAAc,EAAQ;IACpD,IAAI,IAAI,CAAC4B,wBAAwB,CAAC5B,MAAM,CAAC,EAAE;MACzC,IAAI,CAACH,IAAI,CAACqC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAACC,kBAAkB,CAAC;IACpE,CAAC,MAAM,IAAInC,MAAM,CAAC6B,iBAAiB,EAAE;MACnC,IAAI,CAAChC,IAAI,CAACqC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAACL,iBAAiB,CAAC;IACnE;EACF;EAEQO,0BAA0BA,CAACpC,MAAc,EAAQ;IACvD,IAAI,IAAI,CAAC4B,wBAAwB,CAAC5B,MAAM,CAAC,EAAE;MACzC,IAAI,CAACH,IAAI,CAACwC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAACF,kBAAkB,CAAC;IACvE,CAAC,MAAM,IAAInC,MAAM,CAAC6B,iBAAiB,EAAE;MACnC,IAAI,CAAChC,IAAI,CAACwC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAACR,iBAAiB,CAAC;IACtE;EACF;EAEQM,kBAAkBA,CAAaG,CAAa,EAAQ;IAC1DA,CAAC,CAACC,cAAc,CAAC,CAAC;EACpB;EAEQV,iBAAiBA,CAAaS,CAAa,EAAQ;IACzDA,CAAC,CAACE,eAAe,CAAC,CAAC;EACrB;EAEQvC,aAAaA,CAACwC,gBAAyB,EAAE;IAC/C,MAAM;MAAErD;IAAW,CAAC,GAAG,IAAI,CAACQ,cAAc,CAACI,MAAM;IAEjD,IAAI,CAACH,IAAI,CAACE,KAAK,CAAC,YAAY,CAAC,GAAG0C,gBAAgB,GAC3CrD,UAAU,aAAVA,UAAU,cAAVA,UAAU,GAAI,MAAM,GACrB,IAAI,CAACU,iBAAiB,CAACV,UAAU;IAErC,IAAI,CAACS,IAAI,CAACE,KAAK,CAAC,kBAAkB,CAAC,GAAG0C,gBAAgB,GACjDrD,UAAU,aAAVA,UAAU,cAAVA,UAAU,GAAI,MAAM,GACrB,IAAI,CAACU,iBAAiB,CAACV,UAAU;EACvC;EAEQe,cAAcA,CAACsC,gBAAyB,EAAE;IAChD,MAAM;MAAEpD;IAAY,CAAC,GAAG,IAAI,CAACO,cAAc,CAACI,MAAM;IAElD,IAAI,CAACH,IAAI,CAACE,KAAK,CAAC,aAAa,CAAC,GAAG0C,gBAAgB,GAC5CpD,WAAW,aAAXA,WAAW,cAAXA,WAAW,GAAI,MAAM,GACtB,IAAI,CAACS,iBAAiB,CAACT,WAAW;;IAEtC;IACA,IAAI,CAACQ,IAAI,CAACE,KAAK,CAAC,oBAAoB,CAAC,GAAG0C,gBAAgB,GACnDpD,WAAW,aAAXA,WAAW,cAAXA,WAAW,GAAI,MAAM,GACtB,IAAI,CAACS,iBAAiB,CAACT,WAAW;EACxC;EAEQe,cAAcA,CAACqC,gBAAyB,EAAE;IAChD,MAAMzC,MAAM,GAAG,IAAI,CAACJ,cAAc,CAACI,MAAM;IAEzC,IAAIyC,gBAAgB,EAAE;MACpB,IAAI,CAACR,uBAAuB,CAACjC,MAAM,CAAC;IACtC,CAAC,MAAM;MACL,IAAI,CAACoC,0BAA0B,CAACpC,MAAM,CAAC;IACzC;EACF;EAEA0C,eAAeA,CAACxC,OAAgB,EAAQ;IACtC,IAAI,CAAC,IAAI,CAACP,aAAa,EAAE;MACvB;IACF;IAEA,IAAI,CAACM,aAAa,CAACC,OAAO,CAAC;IAC3B,IAAI,CAACC,cAAc,CAACD,OAAO,CAAC;IAC5B,IAAI,CAACE,cAAc,CAACF,OAAO,CAAC;IAE5B,IAAIA,OAAO,EAAE;MACX,IAAI,CAACG,aAAa,CAACE,OAAO,CAAEC,OAAO,IAAK;QACtC;QACA;QACA;QACA;QACA;QACAA,OAAO,CAACmC,iBAAiB,CAAC,CAAC;MAC7B,CAAC,CAAC;IACJ,CAAC,MAAM;MACL,IAAI,CAACtC,aAAa,CAACE,OAAO,CAAEC,OAAO,IAAK;QACtCA,OAAO,CAACoC,mBAAmB,CAAC,CAAC;MAC/B,CAAC,CAAC;IACJ;EACF;EAEAC,OAAOA,CAAA,EAAS;IACd;EAAA;EAGFC,UAAUA,CAAA,EAAS;IACjB,MAAM9C,MAAM,GAAG,IAAI,CAACJ,cAAc,CAACI,MAAM;IAEzC,IACE,CAAC,CAAC,IAAI,CAACH,IAAI,CAACE,KAAK,CAAC4B,MAAM,IAAI,IAAI,CAAC9B,IAAI,CAACE,KAAK,CAAC4B,MAAM,KAAK,MAAM,KAC7D3B,MAAM,CAACwB,YAAY,EACnB;MACA,IAAI,CAAC3B,IAAI,CAACE,KAAK,CAAC4B,MAAM,GAAG3B,MAAM,CAACwB,YAAY;IAC9C;EACF;EAEAuB,KAAKA,CAAA,EAAS;IACZ,IAAI,CAACxB,cAAc,CAAC,CAAC;EACvB;EAEAyB,QAAQA,CAAA,EAAS;IACf,IAAI,CAACzB,cAAc,CAAC,CAAC;EACvB;EAEA0B,MAAMA,CAAA,EAAS;IACb,IAAI,CAAC1B,cAAc,CAAC,CAAC;EACvB;EAEO2B,OAAOA,CAAClD,MAAc,EAAQ;IACnC,IAAI,CAACoC,0BAA0B,CAACpC,MAAM,CAAC;IAEvC,IAAI,CAACK,aAAa,CAACE,OAAO,CAAEC,OAAO,IAAK;MACtCA,OAAO,CAACoC,mBAAmB,CAAC,CAAC;IAC/B,CAAC,CAAC;EACJ;EAEA,IAAW/C,IAAIA,CAAA,EAAG;IAChB,OAAO,IAAI,CAACsD,KAAK;EACnB;EACA,IAAWtD,IAAIA,CAACuD,KAAkB,EAAE;IAClC,IAAI,CAACD,KAAK,GAAGC,KAAK;EACpB;AACF","ignoreList":[]}
1
+ {"version":3,"sources":["GestureHandlerWebDelegate.ts"],"names":["findNodeHandle","PointerEventManager","State","isPointerInBounds","MouseButton","KeyboardEventManager","WheelEventManager","GestureHandlerWebDelegate","userSelect","touchAction","init","viewRef","handler","Error","handlerTag","isInitialized","gestureHandler","view","defaultViewStyles","style","config","setUserSelect","enabled","setTouchAction","setContextMenu","eventManagers","push","forEach","manager","attachEventManager","x","y","measureView","rect","getBoundingClientRect","pageX","left","pageY","top","width","height","reset","resetManager","tryResetCursor","activeCursor","state","ACTIVE","cursor","shouldDisableContextMenu","enableContextMenu","undefined","isButtonInConfig","RIGHT","addContextMenuListeners","addEventListener","disableContextMenu","removeContextMenuListeners","removeEventListener","e","preventDefault","stopPropagation","isHandlerEnabled","onEnabledChange","registerListeners","unregisterListeners","onBegin","onActivate","onEnd","onCancel","onFail","destroy","_view","value"],"mappings":"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","sourcesContent":["import findNodeHandle from '../../findNodeHandle';\nimport type IGestureHandler from '../handlers/IGestureHandler';\nimport {\n GestureHandlerDelegate,\n MeasureResult,\n} from './GestureHandlerDelegate';\nimport PointerEventManager from './PointerEventManager';\nimport { State } from '../../State';\nimport { isPointerInBounds } from '../utils';\nimport EventManager from './EventManager';\nimport { Config } from '../interfaces';\nimport { MouseButton } from '../../handlers/gestureHandlerCommon';\nimport KeyboardEventManager from './KeyboardEventManager';\nimport WheelEventManager from './WheelEventManager';\n\ninterface DefaultViewStyles {\n userSelect: string;\n touchAction: string;\n}\n\nexport class GestureHandlerWebDelegate\n implements GestureHandlerDelegate<HTMLElement, IGestureHandler>\n{\n private isInitialized = false;\n private _view!: HTMLElement;\n\n private gestureHandler!: IGestureHandler;\n private eventManagers: EventManager<unknown>[] = [];\n private defaultViewStyles: DefaultViewStyles = {\n userSelect: '',\n touchAction: '',\n };\n\n init(viewRef: number, handler: IGestureHandler): void {\n if (!viewRef) {\n throw new Error(\n `Cannot find HTML Element for handler ${handler.handlerTag}`\n );\n }\n\n this.isInitialized = true;\n\n this.gestureHandler = handler;\n this.view = findNodeHandle(viewRef) as unknown as HTMLElement;\n\n this.defaultViewStyles = {\n userSelect: this.view.style.userSelect,\n touchAction: this.view.style.touchAction,\n };\n\n const config = handler.config;\n\n this.setUserSelect(config.enabled);\n this.setTouchAction(config.enabled);\n this.setContextMenu(config.enabled);\n\n this.eventManagers.push(new PointerEventManager(this.view));\n this.eventManagers.push(new KeyboardEventManager(this.view));\n this.eventManagers.push(new WheelEventManager(this.view));\n\n this.eventManagers.forEach((manager) =>\n this.gestureHandler.attachEventManager(manager)\n );\n }\n\n isPointerInBounds({ x, y }: { x: number; y: number }): boolean {\n return isPointerInBounds(this.view, { x, y });\n }\n\n measureView(): MeasureResult {\n const rect = this.view.getBoundingClientRect();\n\n return {\n pageX: rect.left,\n pageY: rect.top,\n width: rect.width,\n height: rect.height,\n };\n }\n\n reset(): void {\n this.eventManagers.forEach((manager: EventManager<unknown>) =>\n manager.resetManager()\n );\n }\n\n tryResetCursor() {\n const config = this.gestureHandler.config;\n\n if (\n config.activeCursor &&\n config.activeCursor !== 'auto' &&\n this.gestureHandler.state === State.ACTIVE\n ) {\n this.view.style.cursor = 'auto';\n }\n }\n\n private shouldDisableContextMenu(config: Config) {\n return (\n (config.enableContextMenu === undefined &&\n this.gestureHandler.isButtonInConfig(MouseButton.RIGHT)) ||\n config.enableContextMenu === false\n );\n }\n\n private addContextMenuListeners(config: Config): void {\n if (this.shouldDisableContextMenu(config)) {\n this.view.addEventListener('contextmenu', this.disableContextMenu);\n } else if (config.enableContextMenu) {\n this.view.addEventListener('contextmenu', this.enableContextMenu);\n }\n }\n\n private removeContextMenuListeners(config: Config): void {\n if (this.shouldDisableContextMenu(config)) {\n this.view.removeEventListener('contextmenu', this.disableContextMenu);\n } else if (config.enableContextMenu) {\n this.view.removeEventListener('contextmenu', this.enableContextMenu);\n }\n }\n\n private disableContextMenu(this: void, e: MouseEvent): void {\n e.preventDefault();\n }\n\n private enableContextMenu(this: void, e: MouseEvent): void {\n e.stopPropagation();\n }\n\n private setUserSelect(isHandlerEnabled: boolean) {\n const { userSelect } = this.gestureHandler.config;\n\n this.view.style['userSelect'] = isHandlerEnabled\n ? (userSelect ?? 'none')\n : this.defaultViewStyles.userSelect;\n\n this.view.style['webkitUserSelect'] = isHandlerEnabled\n ? (userSelect ?? 'none')\n : this.defaultViewStyles.userSelect;\n }\n\n private setTouchAction(isHandlerEnabled: boolean) {\n const { touchAction } = this.gestureHandler.config;\n\n this.view.style['touchAction'] = isHandlerEnabled\n ? (touchAction ?? 'none')\n : this.defaultViewStyles.touchAction;\n\n // @ts-ignore This one disables default events on Safari\n this.view.style['WebkitTouchCallout'] = isHandlerEnabled\n ? (touchAction ?? 'none')\n : this.defaultViewStyles.touchAction;\n }\n\n private setContextMenu(isHandlerEnabled: boolean) {\n const config = this.gestureHandler.config;\n\n if (isHandlerEnabled) {\n this.addContextMenuListeners(config);\n } else {\n this.removeContextMenuListeners(config);\n }\n }\n\n onEnabledChange(enabled: boolean): void {\n if (!this.isInitialized) {\n return;\n }\n\n this.setUserSelect(enabled);\n this.setTouchAction(enabled);\n this.setContextMenu(enabled);\n\n if (enabled) {\n this.eventManagers.forEach((manager) => {\n // It may look like managers will be registered twice when handler is mounted for the first time.\n // However, `init` method is called AFTER `updateGestureConfig` - it means that delegate has not\n // been initialized yet, so this code won't be executed.\n //\n // Also, because we use defined functions, not lambdas, they will not be registered multiple times.\n manager.registerListeners();\n });\n } else {\n this.eventManagers.forEach((manager) => {\n manager.unregisterListeners();\n });\n }\n }\n\n onBegin(): void {\n // no-op for now\n }\n\n onActivate(): void {\n const config = this.gestureHandler.config;\n\n if (\n (!this.view.style.cursor || this.view.style.cursor === 'auto') &&\n config.activeCursor\n ) {\n this.view.style.cursor = config.activeCursor;\n }\n }\n\n onEnd(): void {\n this.tryResetCursor();\n }\n\n onCancel(): void {\n this.tryResetCursor();\n }\n\n onFail(): void {\n this.tryResetCursor();\n }\n\n public destroy(config: Config): void {\n this.removeContextMenuListeners(config);\n\n this.eventManagers.forEach((manager) => {\n manager.unregisterListeners();\n });\n }\n\n public get view() {\n return this._view;\n }\n public set view(value: HTMLElement) {\n this._view = value;\n }\n}\n"]}
@@ -1,18 +1,20 @@
1
- var _InteractionManager;
2
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
3
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
4
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
1
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+
5
3
  import { State } from '../../State';
6
4
  export default class InteractionManager {
7
5
  // Private becaues of singleton
8
6
  // eslint-disable-next-line no-useless-constructor, @typescript-eslint/no-empty-function
9
7
  constructor() {
10
8
  _defineProperty(this, "waitForRelations", new Map());
9
+
11
10
  _defineProperty(this, "simultaneousRelations", new Map());
11
+
12
12
  _defineProperty(this, "blocksHandlersRelations", new Map());
13
13
  }
14
+
14
15
  configureInteractions(handler, config) {
15
16
  this.dropRelationsForHandlerWithTag(handler.handlerTag);
17
+
16
18
  if (config.waitFor) {
17
19
  const waitFor = [];
18
20
  config.waitFor.forEach(otherHandler => {
@@ -26,6 +28,7 @@ export default class InteractionManager {
26
28
  });
27
29
  this.waitForRelations.set(handler.handlerTag, waitFor);
28
30
  }
31
+
29
32
  if (config.simultaneousHandlers) {
30
33
  const simultaneousHandlers = [];
31
34
  config.simultaneousHandlers.forEach(otherHandler => {
@@ -37,6 +40,7 @@ export default class InteractionManager {
37
40
  });
38
41
  this.simultaneousRelations.set(handler.handlerTag, simultaneousHandlers);
39
42
  }
43
+
40
44
  if (config.blocksHandlers) {
41
45
  const blocksHandlers = [];
42
46
  config.blocksHandlers.forEach(otherHandler => {
@@ -49,49 +53,59 @@ export default class InteractionManager {
49
53
  this.blocksHandlersRelations.set(handler.handlerTag, blocksHandlers);
50
54
  }
51
55
  }
56
+
52
57
  shouldWaitForHandlerFailure(handler, otherHandler) {
53
58
  const waitFor = this.waitForRelations.get(handler.handlerTag);
54
59
  return (waitFor === null || waitFor === void 0 ? void 0 : waitFor.find(tag => {
55
60
  return tag === otherHandler.handlerTag;
56
61
  })) !== undefined;
57
62
  }
63
+
58
64
  shouldRecognizeSimultaneously(handler, otherHandler) {
59
65
  const simultaneousHandlers = this.simultaneousRelations.get(handler.handlerTag);
60
66
  return (simultaneousHandlers === null || simultaneousHandlers === void 0 ? void 0 : simultaneousHandlers.find(tag => {
61
67
  return tag === otherHandler.handlerTag;
62
68
  })) !== undefined;
63
69
  }
70
+
64
71
  shouldRequireHandlerToWaitForFailure(handler, otherHandler) {
65
72
  const waitFor = this.blocksHandlersRelations.get(handler.handlerTag);
66
73
  return (waitFor === null || waitFor === void 0 ? void 0 : waitFor.find(tag => {
67
74
  return tag === otherHandler.handlerTag;
68
75
  })) !== undefined;
69
76
  }
77
+
70
78
  shouldHandlerBeCancelledBy(_handler, otherHandler) {
71
79
  var _otherHandler$isButto;
80
+
72
81
  // We check constructor name instead of using `instanceof` in order do avoid circular dependencies
73
82
  const isNativeHandler = otherHandler.constructor.name === 'NativeViewGestureHandler';
74
83
  const isActive = otherHandler.state === State.ACTIVE;
75
84
  const isButton = ((_otherHandler$isButto = otherHandler.isButton) === null || _otherHandler$isButto === void 0 ? void 0 : _otherHandler$isButto.call(otherHandler)) === true;
76
85
  return isNativeHandler && isActive && !isButton;
77
86
  }
87
+
78
88
  dropRelationsForHandlerWithTag(handlerTag) {
79
89
  this.waitForRelations.delete(handlerTag);
80
90
  this.simultaneousRelations.delete(handlerTag);
81
91
  this.blocksHandlersRelations.delete(handlerTag);
82
92
  }
93
+
83
94
  reset() {
84
95
  this.waitForRelations.clear();
85
96
  this.simultaneousRelations.clear();
86
97
  this.blocksHandlersRelations.clear();
87
98
  }
99
+
88
100
  static get instance() {
89
101
  if (!this._instance) {
90
102
  this._instance = new InteractionManager();
91
103
  }
104
+
92
105
  return this._instance;
93
106
  }
107
+
94
108
  }
95
- _InteractionManager = InteractionManager;
109
+
96
110
  _defineProperty(InteractionManager, "_instance", void 0);
97
111
  //# sourceMappingURL=InteractionManager.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["State","InteractionManager","constructor","_defineProperty","Map","configureInteractions","handler","config","dropRelationsForHandlerWithTag","handlerTag","waitFor","forEach","otherHandler","push","waitForRelations","set","simultaneousHandlers","simultaneousRelations","blocksHandlers","blocksHandlersRelations","shouldWaitForHandlerFailure","get","find","tag","undefined","shouldRecognizeSimultaneously","shouldRequireHandlerToWaitForFailure","shouldHandlerBeCancelledBy","_handler","_otherHandler$isButto","isNativeHandler","name","isActive","state","ACTIVE","isButton","call","delete","reset","clear","instance","_instance","_InteractionManager"],"sources":["InteractionManager.ts"],"sourcesContent":["import type IGestureHandler from '../handlers/IGestureHandler';\nimport { State } from '../../State';\nimport { Config, Handler } from '../interfaces';\n\nexport default class InteractionManager {\n private static _instance: InteractionManager;\n private readonly waitForRelations: Map<number, number[]> = new Map();\n private readonly simultaneousRelations: Map<number, number[]> = new Map();\n private readonly blocksHandlersRelations: Map<number, number[]> = new Map();\n\n // Private becaues of singleton\n // eslint-disable-next-line no-useless-constructor, @typescript-eslint/no-empty-function\n private constructor() {}\n\n public configureInteractions(handler: IGestureHandler, config: Config) {\n this.dropRelationsForHandlerWithTag(handler.handlerTag);\n\n if (config.waitFor) {\n const waitFor: number[] = [];\n config.waitFor.forEach((otherHandler: Handler): void => {\n // New API reference\n if (typeof otherHandler === 'number') {\n waitFor.push(otherHandler);\n } else {\n // Old API reference\n waitFor.push(otherHandler.handlerTag);\n }\n });\n\n this.waitForRelations.set(handler.handlerTag, waitFor);\n }\n\n if (config.simultaneousHandlers) {\n const simultaneousHandlers: number[] = [];\n config.simultaneousHandlers.forEach((otherHandler: Handler): void => {\n if (typeof otherHandler === 'number') {\n simultaneousHandlers.push(otherHandler);\n } else {\n simultaneousHandlers.push(otherHandler.handlerTag);\n }\n });\n\n this.simultaneousRelations.set(handler.handlerTag, simultaneousHandlers);\n }\n\n if (config.blocksHandlers) {\n const blocksHandlers: number[] = [];\n config.blocksHandlers.forEach((otherHandler: Handler): void => {\n if (typeof otherHandler === 'number') {\n blocksHandlers.push(otherHandler);\n } else {\n blocksHandlers.push(otherHandler.handlerTag);\n }\n });\n\n this.blocksHandlersRelations.set(handler.handlerTag, blocksHandlers);\n }\n }\n\n public shouldWaitForHandlerFailure(\n handler: IGestureHandler,\n otherHandler: IGestureHandler\n ): boolean {\n const waitFor: number[] | undefined = this.waitForRelations.get(\n handler.handlerTag\n );\n\n return (\n waitFor?.find((tag: number) => {\n return tag === otherHandler.handlerTag;\n }) !== undefined\n );\n }\n\n public shouldRecognizeSimultaneously(\n handler: IGestureHandler,\n otherHandler: IGestureHandler\n ): boolean {\n const simultaneousHandlers: number[] | undefined =\n this.simultaneousRelations.get(handler.handlerTag);\n\n return (\n simultaneousHandlers?.find((tag: number) => {\n return tag === otherHandler.handlerTag;\n }) !== undefined\n );\n }\n\n public shouldRequireHandlerToWaitForFailure(\n handler: IGestureHandler,\n otherHandler: IGestureHandler\n ): boolean {\n const waitFor: number[] | undefined = this.blocksHandlersRelations.get(\n handler.handlerTag\n );\n\n return (\n waitFor?.find((tag: number) => {\n return tag === otherHandler.handlerTag;\n }) !== undefined\n );\n }\n\n public shouldHandlerBeCancelledBy(\n _handler: IGestureHandler,\n otherHandler: IGestureHandler\n ): boolean {\n // We check constructor name instead of using `instanceof` in order do avoid circular dependencies\n const isNativeHandler =\n otherHandler.constructor.name === 'NativeViewGestureHandler';\n const isActive = otherHandler.state === State.ACTIVE;\n const isButton = otherHandler.isButton?.() === true;\n\n return isNativeHandler && isActive && !isButton;\n }\n\n public dropRelationsForHandlerWithTag(handlerTag: number): void {\n this.waitForRelations.delete(handlerTag);\n this.simultaneousRelations.delete(handlerTag);\n this.blocksHandlersRelations.delete(handlerTag);\n }\n\n public reset() {\n this.waitForRelations.clear();\n this.simultaneousRelations.clear();\n this.blocksHandlersRelations.clear();\n }\n\n public static get instance(): InteractionManager {\n if (!this._instance) {\n this._instance = new InteractionManager();\n }\n\n return this._instance;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"sources":["InteractionManager.ts"],"names":["State","InteractionManager","constructor","Map","configureInteractions","handler","config","dropRelationsForHandlerWithTag","handlerTag","waitFor","forEach","otherHandler","push","waitForRelations","set","simultaneousHandlers","simultaneousRelations","blocksHandlers","blocksHandlersRelations","shouldWaitForHandlerFailure","get","find","tag","undefined","shouldRecognizeSimultaneously","shouldRequireHandlerToWaitForFailure","shouldHandlerBeCancelledBy","_handler","isNativeHandler","name","isActive","state","ACTIVE","isButton","delete","reset","clear","instance","_instance"],"mappings":"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","sourcesContent":["import type IGestureHandler from '../handlers/IGestureHandler';\nimport { State } from '../../State';\nimport { Config, Handler } from '../interfaces';\n\nexport default class InteractionManager {\n private static _instance: InteractionManager;\n private readonly waitForRelations: Map<number, number[]> = new Map();\n private readonly simultaneousRelations: Map<number, number[]> = new Map();\n private readonly blocksHandlersRelations: Map<number, number[]> = new Map();\n\n // Private becaues of singleton\n // eslint-disable-next-line no-useless-constructor, @typescript-eslint/no-empty-function\n private constructor() {}\n\n public configureInteractions(handler: IGestureHandler, config: Config) {\n this.dropRelationsForHandlerWithTag(handler.handlerTag);\n\n if (config.waitFor) {\n const waitFor: number[] = [];\n config.waitFor.forEach((otherHandler: Handler): void => {\n // New API reference\n if (typeof otherHandler === 'number') {\n waitFor.push(otherHandler);\n } else {\n // Old API reference\n waitFor.push(otherHandler.handlerTag);\n }\n });\n\n this.waitForRelations.set(handler.handlerTag, waitFor);\n }\n\n if (config.simultaneousHandlers) {\n const simultaneousHandlers: number[] = [];\n config.simultaneousHandlers.forEach((otherHandler: Handler): void => {\n if (typeof otherHandler === 'number') {\n simultaneousHandlers.push(otherHandler);\n } else {\n simultaneousHandlers.push(otherHandler.handlerTag);\n }\n });\n\n this.simultaneousRelations.set(handler.handlerTag, simultaneousHandlers);\n }\n\n if (config.blocksHandlers) {\n const blocksHandlers: number[] = [];\n config.blocksHandlers.forEach((otherHandler: Handler): void => {\n if (typeof otherHandler === 'number') {\n blocksHandlers.push(otherHandler);\n } else {\n blocksHandlers.push(otherHandler.handlerTag);\n }\n });\n\n this.blocksHandlersRelations.set(handler.handlerTag, blocksHandlers);\n }\n }\n\n public shouldWaitForHandlerFailure(\n handler: IGestureHandler,\n otherHandler: IGestureHandler\n ): boolean {\n const waitFor: number[] | undefined = this.waitForRelations.get(\n handler.handlerTag\n );\n\n return (\n waitFor?.find((tag: number) => {\n return tag === otherHandler.handlerTag;\n }) !== undefined\n );\n }\n\n public shouldRecognizeSimultaneously(\n handler: IGestureHandler,\n otherHandler: IGestureHandler\n ): boolean {\n const simultaneousHandlers: number[] | undefined =\n this.simultaneousRelations.get(handler.handlerTag);\n\n return (\n simultaneousHandlers?.find((tag: number) => {\n return tag === otherHandler.handlerTag;\n }) !== undefined\n );\n }\n\n public shouldRequireHandlerToWaitForFailure(\n handler: IGestureHandler,\n otherHandler: IGestureHandler\n ): boolean {\n const waitFor: number[] | undefined = this.blocksHandlersRelations.get(\n handler.handlerTag\n );\n\n return (\n waitFor?.find((tag: number) => {\n return tag === otherHandler.handlerTag;\n }) !== undefined\n );\n }\n\n public shouldHandlerBeCancelledBy(\n _handler: IGestureHandler,\n otherHandler: IGestureHandler\n ): boolean {\n // We check constructor name instead of using `instanceof` in order do avoid circular dependencies\n const isNativeHandler =\n otherHandler.constructor.name === 'NativeViewGestureHandler';\n const isActive = otherHandler.state === State.ACTIVE;\n const isButton = otherHandler.isButton?.() === true;\n\n return isNativeHandler && isActive && !isButton;\n }\n\n public dropRelationsForHandlerWithTag(handlerTag: number): void {\n this.waitForRelations.delete(handlerTag);\n this.simultaneousRelations.delete(handlerTag);\n this.blocksHandlersRelations.delete(handlerTag);\n }\n\n public reset() {\n this.waitForRelations.clear();\n this.simultaneousRelations.clear();\n this.blocksHandlersRelations.clear();\n }\n\n public static get instance(): InteractionManager {\n if (!this._instance) {\n this._instance = new InteractionManager();\n }\n\n return this._instance;\n }\n}\n"]}
@@ -1,60 +1,75 @@
1
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
2
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
3
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
1
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+
4
3
  import { EventTypes } from '../interfaces';
5
4
  import EventManager from './EventManager';
6
5
  import { PointerType } from '../../PointerType';
7
6
  export default class KeyboardEventManager extends EventManager {
8
7
  constructor(...args) {
9
8
  super(...args);
9
+
10
10
  _defineProperty(this, "activationKeys", ['Enter', ' ']);
11
+
11
12
  _defineProperty(this, "cancelationKeys", ['Tab']);
13
+
12
14
  _defineProperty(this, "isPressed", false);
15
+
13
16
  _defineProperty(this, "keyDownCallback", event => {
14
17
  if (this.cancelationKeys.indexOf(event.key) !== -1 && this.isPressed) {
15
18
  this.dispatchEvent(event, EventTypes.CANCEL);
16
19
  return;
17
20
  }
21
+
18
22
  if (this.activationKeys.indexOf(event.key) === -1) {
19
23
  return;
20
24
  }
25
+
21
26
  this.dispatchEvent(event, EventTypes.DOWN);
22
27
  });
28
+
23
29
  _defineProperty(this, "keyUpCallback", event => {
24
30
  if (this.activationKeys.indexOf(event.key) === -1 || !this.isPressed) {
25
31
  return;
26
32
  }
33
+
27
34
  this.dispatchEvent(event, EventTypes.UP);
28
35
  });
29
36
  }
37
+
30
38
  dispatchEvent(event, eventType) {
31
39
  if (!(event.target instanceof HTMLElement)) {
32
40
  return;
33
41
  }
42
+
34
43
  const adaptedEvent = this.mapEvent(event, eventType);
44
+
35
45
  switch (eventType) {
36
46
  case EventTypes.UP:
37
47
  this.isPressed = false;
38
48
  this.onPointerUp(adaptedEvent);
39
49
  break;
50
+
40
51
  case EventTypes.DOWN:
41
52
  this.isPressed = true;
42
53
  this.onPointerDown(adaptedEvent);
43
54
  break;
55
+
44
56
  case EventTypes.CANCEL:
45
57
  this.isPressed = false;
46
58
  this.onPointerCancel(adaptedEvent);
47
59
  break;
48
60
  }
49
61
  }
62
+
50
63
  registerListeners() {
51
64
  this.view.addEventListener('keydown', this.keyDownCallback);
52
65
  this.view.addEventListener('keyup', this.keyUpCallback);
53
66
  }
67
+
54
68
  unregisterListeners() {
55
69
  this.view.removeEventListener('keydown', this.keyDownCallback);
56
70
  this.view.removeEventListener('keyup', this.keyUpCallback);
57
71
  }
72
+
58
73
  mapEvent(event, eventType) {
59
74
  const viewRect = event.target.getBoundingClientRect();
60
75
  const viewportPosition = {
@@ -76,5 +91,6 @@ export default class KeyboardEventManager extends EventManager {
76
91
  time: event.timeStamp
77
92
  };
78
93
  }
94
+
79
95
  }
80
96
  //# sourceMappingURL=KeyboardEventManager.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["EventTypes","EventManager","PointerType","KeyboardEventManager","constructor","args","_defineProperty","event","cancelationKeys","indexOf","key","isPressed","dispatchEvent","CANCEL","activationKeys","DOWN","UP","eventType","target","HTMLElement","adaptedEvent","mapEvent","onPointerUp","onPointerDown","onPointerCancel","registerListeners","view","addEventListener","keyDownCallback","keyUpCallback","unregisterListeners","removeEventListener","viewRect","getBoundingClientRect","viewportPosition","x","width","y","height","relativePosition","offsetX","offsetY","pointerId","pointerType","KEY","time","timeStamp"],"sources":["KeyboardEventManager.ts"],"sourcesContent":["import { AdaptedEvent, EventTypes } from '../interfaces';\nimport EventManager from './EventManager';\nimport { PointerType } from '../../PointerType';\n\nexport default class KeyboardEventManager extends EventManager<HTMLElement> {\n private activationKeys = ['Enter', ' '];\n private cancelationKeys = ['Tab'];\n private isPressed = false;\n\n private keyDownCallback = (event: KeyboardEvent): void => {\n if (this.cancelationKeys.indexOf(event.key) !== -1 && this.isPressed) {\n this.dispatchEvent(event, EventTypes.CANCEL);\n return;\n }\n\n if (this.activationKeys.indexOf(event.key) === -1) {\n return;\n }\n\n this.dispatchEvent(event, EventTypes.DOWN);\n };\n\n private keyUpCallback = (event: KeyboardEvent): void => {\n if (this.activationKeys.indexOf(event.key) === -1 || !this.isPressed) {\n return;\n }\n\n this.dispatchEvent(event, EventTypes.UP);\n };\n\n private dispatchEvent(event: KeyboardEvent, eventType: EventTypes) {\n if (!(event.target instanceof HTMLElement)) {\n return;\n }\n\n const adaptedEvent = this.mapEvent(event, eventType);\n\n switch (eventType) {\n case EventTypes.UP:\n this.isPressed = false;\n this.onPointerUp(adaptedEvent);\n break;\n case EventTypes.DOWN:\n this.isPressed = true;\n this.onPointerDown(adaptedEvent);\n break;\n case EventTypes.CANCEL:\n this.isPressed = false;\n this.onPointerCancel(adaptedEvent);\n break;\n }\n }\n\n public registerListeners(): void {\n this.view.addEventListener('keydown', this.keyDownCallback);\n this.view.addEventListener('keyup', this.keyUpCallback);\n }\n\n public unregisterListeners(): void {\n this.view.removeEventListener('keydown', this.keyDownCallback);\n this.view.removeEventListener('keyup', this.keyUpCallback);\n }\n\n protected mapEvent(\n event: KeyboardEvent,\n eventType: EventTypes\n ): AdaptedEvent {\n const viewRect = (event.target as HTMLElement).getBoundingClientRect();\n\n const viewportPosition = {\n x: viewRect?.x + viewRect?.width / 2,\n y: viewRect?.y + viewRect?.height / 2,\n };\n\n const relativePosition = {\n x: viewRect?.width / 2,\n y: viewRect?.height / 2,\n };\n\n return {\n x: viewportPosition.x,\n y: viewportPosition.y,\n offsetX: relativePosition.x,\n offsetY: relativePosition.y,\n pointerId: 0,\n eventType: eventType,\n pointerType: PointerType.KEY,\n time: event.timeStamp,\n };\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"sources":["KeyboardEventManager.ts"],"names":["EventTypes","EventManager","PointerType","KeyboardEventManager","event","cancelationKeys","indexOf","key","isPressed","dispatchEvent","CANCEL","activationKeys","DOWN","UP","eventType","target","HTMLElement","adaptedEvent","mapEvent","onPointerUp","onPointerDown","onPointerCancel","registerListeners","view","addEventListener","keyDownCallback","keyUpCallback","unregisterListeners","removeEventListener","viewRect","getBoundingClientRect","viewportPosition","x","width","y","height","relativePosition","offsetX","offsetY","pointerId","pointerType","KEY","time","timeStamp"],"mappings":"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","sourcesContent":["import { AdaptedEvent, EventTypes } from '../interfaces';\nimport EventManager from './EventManager';\nimport { PointerType } from '../../PointerType';\n\nexport default class KeyboardEventManager extends EventManager<HTMLElement> {\n private activationKeys = ['Enter', ' '];\n private cancelationKeys = ['Tab'];\n private isPressed = false;\n\n private keyDownCallback = (event: KeyboardEvent): void => {\n if (this.cancelationKeys.indexOf(event.key) !== -1 && this.isPressed) {\n this.dispatchEvent(event, EventTypes.CANCEL);\n return;\n }\n\n if (this.activationKeys.indexOf(event.key) === -1) {\n return;\n }\n\n this.dispatchEvent(event, EventTypes.DOWN);\n };\n\n private keyUpCallback = (event: KeyboardEvent): void => {\n if (this.activationKeys.indexOf(event.key) === -1 || !this.isPressed) {\n return;\n }\n\n this.dispatchEvent(event, EventTypes.UP);\n };\n\n private dispatchEvent(event: KeyboardEvent, eventType: EventTypes) {\n if (!(event.target instanceof HTMLElement)) {\n return;\n }\n\n const adaptedEvent = this.mapEvent(event, eventType);\n\n switch (eventType) {\n case EventTypes.UP:\n this.isPressed = false;\n this.onPointerUp(adaptedEvent);\n break;\n case EventTypes.DOWN:\n this.isPressed = true;\n this.onPointerDown(adaptedEvent);\n break;\n case EventTypes.CANCEL:\n this.isPressed = false;\n this.onPointerCancel(adaptedEvent);\n break;\n }\n }\n\n public registerListeners(): void {\n this.view.addEventListener('keydown', this.keyDownCallback);\n this.view.addEventListener('keyup', this.keyUpCallback);\n }\n\n public unregisterListeners(): void {\n this.view.removeEventListener('keydown', this.keyDownCallback);\n this.view.removeEventListener('keyup', this.keyUpCallback);\n }\n\n protected mapEvent(\n event: KeyboardEvent,\n eventType: EventTypes\n ): AdaptedEvent {\n const viewRect = (event.target as HTMLElement).getBoundingClientRect();\n\n const viewportPosition = {\n x: viewRect?.x + viewRect?.width / 2,\n y: viewRect?.y + viewRect?.height / 2,\n };\n\n const relativePosition = {\n x: viewRect?.width / 2,\n y: viewRect?.height / 2,\n };\n\n return {\n x: viewportPosition.x,\n y: viewportPosition.y,\n offsetX: relativePosition.x,\n offsetY: relativePosition.y,\n pointerId: 0,\n eventType: eventType,\n pointerType: PointerType.KEY,\n time: event.timeStamp,\n };\n }\n}\n"]}
@@ -1,18 +1,20 @@
1
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
2
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
3
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
1
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+
4
3
  // Implementation taken from Flutter's LeastSquareSolver
5
4
  // https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/gestures/lsq_solver.dart
6
-
7
5
  class Vector {
8
6
  constructor(length) {
9
7
  _defineProperty(this, "offset", void 0);
8
+
10
9
  _defineProperty(this, "length", void 0);
10
+
11
11
  _defineProperty(this, "elements", void 0);
12
+
12
13
  this.offset = 0;
13
14
  this.length = length;
14
15
  this.elements = new Array(length);
15
16
  }
17
+
16
18
  static fromVOL(values, offset, length) {
17
19
  const result = new Vector(0);
18
20
  result.offset = offset;
@@ -20,141 +22,174 @@ class Vector {
20
22
  result.elements = values;
21
23
  return result;
22
24
  }
25
+
23
26
  get(index) {
24
27
  return this.elements[this.offset + index];
25
28
  }
29
+
26
30
  set(index, value) {
27
31
  this.elements[this.offset + index] = value;
28
32
  }
33
+
29
34
  dot(other) {
30
35
  let result = 0;
36
+
31
37
  for (let i = 0; i < this.length; i++) {
32
38
  result += this.get(i) * other.get(i);
33
39
  }
40
+
34
41
  return result;
35
42
  }
43
+
36
44
  norm() {
37
45
  return Math.sqrt(this.dot(this));
38
46
  }
47
+
39
48
  }
49
+
40
50
  class Matrix {
41
51
  constructor(rows, columns) {
42
52
  _defineProperty(this, "columns", void 0);
53
+
43
54
  _defineProperty(this, "elements", void 0);
55
+
44
56
  this.columns = columns;
45
57
  this.elements = new Array(rows * columns);
46
58
  }
59
+
47
60
  get(row, column) {
48
61
  return this.elements[row * this.columns + column];
49
62
  }
63
+
50
64
  set(row, column, value) {
51
65
  this.elements[row * this.columns + column] = value;
52
66
  }
67
+
53
68
  getRow(row) {
54
69
  return Vector.fromVOL(this.elements, row * this.columns, this.columns);
55
70
  }
56
- }
57
71
 
58
- // An nth degree polynomial fit to a dataset.
72
+ } // An nth degree polynomial fit to a dataset.
73
+
74
+
59
75
  class PolynomialFit {
76
+ // The polynomial coefficients of the fit.
77
+ //
78
+ // For each `i`, the element `coefficients[i]` is the coefficient of
79
+ // the `i`-th power of the variable.
60
80
  // Creates a polynomial fit of the given degree.
61
81
  //
62
82
  // There are n + 1 coefficients in a fit of degree n.
63
83
  constructor(degree) {
64
- // The polynomial coefficients of the fit.
65
- //
66
- // For each `i`, the element `coefficients[i]` is the coefficient of
67
- // the `i`-th power of the variable.
68
84
  _defineProperty(this, "coefficients", void 0);
85
+
69
86
  this.coefficients = new Array(degree + 1);
70
87
  }
88
+
71
89
  }
72
- const precisionErrorTolerance = 1e-10;
73
90
 
74
- // Uses the least-squares algorithm to fit a polynomial to a set of data.
91
+ const precisionErrorTolerance = 1e-10; // Uses the least-squares algorithm to fit a polynomial to a set of data.
92
+
75
93
  export default class LeastSquareSolver {
94
+ // The x-coordinates of each data point.
95
+ // The y-coordinates of each data point.
96
+ // The weight to use for each data point.
76
97
  // Creates a least-squares solver.
77
98
  //
78
99
  // The [x], [y], and [w] arguments must not be null.
79
100
  constructor(x, y, w) {
80
- // The x-coordinates of each data point.
81
101
  _defineProperty(this, "x", void 0);
82
- // The y-coordinates of each data point.
102
+
83
103
  _defineProperty(this, "y", void 0);
84
- // The weight to use for each data point.
104
+
85
105
  _defineProperty(this, "w", void 0);
106
+
86
107
  this.x = x;
87
108
  this.y = y;
88
109
  this.w = w;
89
- }
90
-
91
- // Fits a polynomial of the given degree to the data points.
110
+ } // Fits a polynomial of the given degree to the data points.
92
111
  //
93
112
  // When there is not enough data to fit a curve null is returned.
113
+
114
+
94
115
  solve(degree) {
95
116
  if (degree > this.x.length) {
96
117
  // Not enough data to fit a curve.
97
118
  return null;
98
119
  }
99
- const result = new PolynomialFit(degree);
100
120
 
101
- // Shorthands for the purpose of notation equivalence to original C++ code.
121
+ const result = new PolynomialFit(degree); // Shorthands for the purpose of notation equivalence to original C++ code.
122
+
102
123
  const m = this.x.length;
103
- const n = degree + 1;
124
+ const n = degree + 1; // Expand the X vector to a matrix A, pre-multiplied by the weights.
104
125
 
105
- // Expand the X vector to a matrix A, pre-multiplied by the weights.
106
126
  const a = new Matrix(n, m);
127
+
107
128
  for (let h = 0; h < m; h++) {
108
129
  a.set(0, h, this.w[h]);
130
+
109
131
  for (let i = 1; i < n; i++) {
110
132
  a.set(i, h, a.get(i - 1, h) * this.x[h]);
111
133
  }
112
- }
134
+ } // Apply the Gram-Schmidt process to A to obtain its QR decomposition.
135
+ // Orthonormal basis, column-major ordVectorer.
113
136
 
114
- // Apply the Gram-Schmidt process to A to obtain its QR decomposition.
115
137
 
116
- // Orthonormal basis, column-major ordVectorer.
117
- const q = new Matrix(n, m);
118
- // Upper triangular matrix, row-major order.
138
+ const q = new Matrix(n, m); // Upper triangular matrix, row-major order.
139
+
119
140
  const r = new Matrix(n, m);
141
+
120
142
  for (let j = 0; j < n; j += 1) {
121
143
  for (let h = 0; h < m; h += 1) {
122
144
  q.set(j, h, a.get(j, h));
123
145
  }
146
+
124
147
  for (let i = 0; i < j; i += 1) {
125
148
  const dot = q.getRow(j).dot(q.getRow(i));
149
+
126
150
  for (let h = 0; h < m; h += 1) {
127
151
  q.set(j, h, q.get(j, h) - dot * q.get(i, h));
128
152
  }
129
153
  }
154
+
130
155
  const norm = q.getRow(j).norm();
156
+
131
157
  if (norm < precisionErrorTolerance) {
132
158
  // Vectors are linearly dependent or zero so no solution.
133
159
  return null;
134
160
  }
161
+
135
162
  const inverseNorm = 1.0 / norm;
163
+
136
164
  for (let h = 0; h < m; h += 1) {
137
165
  q.set(j, h, q.get(j, h) * inverseNorm);
138
166
  }
167
+
139
168
  for (let i = 0; i < n; i += 1) {
140
169
  r.set(j, i, i < j ? 0.0 : q.getRow(j).dot(a.getRow(i)));
141
170
  }
142
- }
143
-
144
- // Solve R B = Qt W Y to find B. This is easy because R is upper triangular.
171
+ } // Solve R B = Qt W Y to find B. This is easy because R is upper triangular.
145
172
  // We just work from bottom-right to top-left calculating B's coefficients.
173
+
174
+
146
175
  const wy = new Vector(m);
176
+
147
177
  for (let h = 0; h < m; h += 1) {
148
178
  wy.set(h, this.y[h] * this.w[h]);
149
179
  }
180
+
150
181
  for (let i = n - 1; i >= 0; i -= 1) {
151
182
  result.coefficients[i] = q.getRow(i).dot(wy);
183
+
152
184
  for (let j = n - 1; j > i; j -= 1) {
153
185
  result.coefficients[i] -= r.get(i, j) * result.coefficients[j];
154
186
  }
187
+
155
188
  result.coefficients[i] /= r.get(i, i);
156
189
  }
190
+
157
191
  return result;
158
192
  }
193
+
159
194
  }
160
195
  //# sourceMappingURL=LeastSquareSolver.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Vector","constructor","length","_defineProperty","offset","elements","Array","fromVOL","values","result","get","index","set","value","dot","other","i","norm","Math","sqrt","Matrix","rows","columns","row","column","getRow","PolynomialFit","degree","coefficients","precisionErrorTolerance","LeastSquareSolver","x","y","w","solve","m","n","a","h","q","r","j","inverseNorm","wy"],"sources":["LeastSquareSolver.ts"],"sourcesContent":["// Implementation taken from Flutter's LeastSquareSolver\n// https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/gestures/lsq_solver.dart\n\nclass Vector {\n private offset: number;\n private length: number;\n private elements: number[];\n\n constructor(length: number) {\n this.offset = 0;\n this.length = length;\n this.elements = new Array<number>(length);\n }\n\n public static fromVOL(\n values: number[],\n offset: number,\n length: number\n ): Vector {\n const result = new Vector(0);\n\n result.offset = offset;\n result.length = length;\n result.elements = values;\n\n return result;\n }\n\n public get(index: number): number {\n return this.elements[this.offset + index];\n }\n\n public set(index: number, value: number): void {\n this.elements[this.offset + index] = value;\n }\n\n public dot(other: Vector): number {\n let result = 0;\n for (let i = 0; i < this.length; i++) {\n result += this.get(i) * other.get(i);\n }\n return result;\n }\n\n public norm() {\n return Math.sqrt(this.dot(this));\n }\n}\n\nclass Matrix {\n private columns: number;\n private elements: number[];\n\n constructor(rows: number, columns: number) {\n this.columns = columns;\n this.elements = new Array<number>(rows * columns);\n }\n\n public get(row: number, column: number): number {\n return this.elements[row * this.columns + column];\n }\n\n public set(row: number, column: number, value: number): void {\n this.elements[row * this.columns + column] = value;\n }\n\n public getRow(row: number): Vector {\n return Vector.fromVOL(this.elements, row * this.columns, this.columns);\n }\n}\n\n// An nth degree polynomial fit to a dataset.\nclass PolynomialFit {\n // The polynomial coefficients of the fit.\n //\n // For each `i`, the element `coefficients[i]` is the coefficient of\n // the `i`-th power of the variable.\n public coefficients: number[];\n\n // Creates a polynomial fit of the given degree.\n //\n // There are n + 1 coefficients in a fit of degree n.\n constructor(degree: number) {\n this.coefficients = new Array<number>(degree + 1);\n }\n}\n\nconst precisionErrorTolerance = 1e-10;\n\n// Uses the least-squares algorithm to fit a polynomial to a set of data.\nexport default class LeastSquareSolver {\n // The x-coordinates of each data point.\n private x: number[];\n // The y-coordinates of each data point.\n private y: number[];\n // The weight to use for each data point.\n private w: number[];\n\n // Creates a least-squares solver.\n //\n // The [x], [y], and [w] arguments must not be null.\n constructor(x: number[], y: number[], w: number[]) {\n this.x = x;\n this.y = y;\n this.w = w;\n }\n\n // Fits a polynomial of the given degree to the data points.\n //\n // When there is not enough data to fit a curve null is returned.\n public solve(degree: number): PolynomialFit | null {\n if (degree > this.x.length) {\n // Not enough data to fit a curve.\n return null;\n }\n\n const result = new PolynomialFit(degree);\n\n // Shorthands for the purpose of notation equivalence to original C++ code.\n const m = this.x.length;\n const n = degree + 1;\n\n // Expand the X vector to a matrix A, pre-multiplied by the weights.\n const a = new Matrix(n, m);\n for (let h = 0; h < m; h++) {\n a.set(0, h, this.w[h]);\n\n for (let i = 1; i < n; i++) {\n a.set(i, h, a.get(i - 1, h) * this.x[h]);\n }\n }\n\n // Apply the Gram-Schmidt process to A to obtain its QR decomposition.\n\n // Orthonormal basis, column-major ordVectorer.\n const q = new Matrix(n, m);\n // Upper triangular matrix, row-major order.\n const r = new Matrix(n, m);\n\n for (let j = 0; j < n; j += 1) {\n for (let h = 0; h < m; h += 1) {\n q.set(j, h, a.get(j, h));\n }\n for (let i = 0; i < j; i += 1) {\n const dot = q.getRow(j).dot(q.getRow(i));\n for (let h = 0; h < m; h += 1) {\n q.set(j, h, q.get(j, h) - dot * q.get(i, h));\n }\n }\n\n const norm = q.getRow(j).norm();\n if (norm < precisionErrorTolerance) {\n // Vectors are linearly dependent or zero so no solution.\n return null;\n }\n\n const inverseNorm = 1.0 / norm;\n for (let h = 0; h < m; h += 1) {\n q.set(j, h, q.get(j, h) * inverseNorm);\n }\n for (let i = 0; i < n; i += 1) {\n r.set(j, i, i < j ? 0.0 : q.getRow(j).dot(a.getRow(i)));\n }\n }\n\n // Solve R B = Qt W Y to find B. This is easy because R is upper triangular.\n // We just work from bottom-right to top-left calculating B's coefficients.\n const wy = new Vector(m);\n for (let h = 0; h < m; h += 1) {\n wy.set(h, this.y[h] * this.w[h]);\n }\n for (let i = n - 1; i >= 0; i -= 1) {\n result.coefficients[i] = q.getRow(i).dot(wy);\n for (let j = n - 1; j > i; j -= 1) {\n result.coefficients[i] -= r.get(i, j) * result.coefficients[j];\n }\n result.coefficients[i] /= r.get(i, i);\n }\n\n return result;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"sources":["LeastSquareSolver.ts"],"names":["Vector","constructor","length","offset","elements","Array","fromVOL","values","result","get","index","set","value","dot","other","i","norm","Math","sqrt","Matrix","rows","columns","row","column","getRow","PolynomialFit","degree","coefficients","precisionErrorTolerance","LeastSquareSolver","x","y","w","solve","m","n","a","h","q","r","j","inverseNorm","wy"],"mappings":"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","sourcesContent":["// Implementation taken from Flutter's LeastSquareSolver\n// https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/gestures/lsq_solver.dart\n\nclass Vector {\n private offset: number;\n private length: number;\n private elements: number[];\n\n constructor(length: number) {\n this.offset = 0;\n this.length = length;\n this.elements = new Array<number>(length);\n }\n\n public static fromVOL(\n values: number[],\n offset: number,\n length: number\n ): Vector {\n const result = new Vector(0);\n\n result.offset = offset;\n result.length = length;\n result.elements = values;\n\n return result;\n }\n\n public get(index: number): number {\n return this.elements[this.offset + index];\n }\n\n public set(index: number, value: number): void {\n this.elements[this.offset + index] = value;\n }\n\n public dot(other: Vector): number {\n let result = 0;\n for (let i = 0; i < this.length; i++) {\n result += this.get(i) * other.get(i);\n }\n return result;\n }\n\n public norm() {\n return Math.sqrt(this.dot(this));\n }\n}\n\nclass Matrix {\n private columns: number;\n private elements: number[];\n\n constructor(rows: number, columns: number) {\n this.columns = columns;\n this.elements = new Array<number>(rows * columns);\n }\n\n public get(row: number, column: number): number {\n return this.elements[row * this.columns + column];\n }\n\n public set(row: number, column: number, value: number): void {\n this.elements[row * this.columns + column] = value;\n }\n\n public getRow(row: number): Vector {\n return Vector.fromVOL(this.elements, row * this.columns, this.columns);\n }\n}\n\n// An nth degree polynomial fit to a dataset.\nclass PolynomialFit {\n // The polynomial coefficients of the fit.\n //\n // For each `i`, the element `coefficients[i]` is the coefficient of\n // the `i`-th power of the variable.\n public coefficients: number[];\n\n // Creates a polynomial fit of the given degree.\n //\n // There are n + 1 coefficients in a fit of degree n.\n constructor(degree: number) {\n this.coefficients = new Array<number>(degree + 1);\n }\n}\n\nconst precisionErrorTolerance = 1e-10;\n\n// Uses the least-squares algorithm to fit a polynomial to a set of data.\nexport default class LeastSquareSolver {\n // The x-coordinates of each data point.\n private x: number[];\n // The y-coordinates of each data point.\n private y: number[];\n // The weight to use for each data point.\n private w: number[];\n\n // Creates a least-squares solver.\n //\n // The [x], [y], and [w] arguments must not be null.\n constructor(x: number[], y: number[], w: number[]) {\n this.x = x;\n this.y = y;\n this.w = w;\n }\n\n // Fits a polynomial of the given degree to the data points.\n //\n // When there is not enough data to fit a curve null is returned.\n public solve(degree: number): PolynomialFit | null {\n if (degree > this.x.length) {\n // Not enough data to fit a curve.\n return null;\n }\n\n const result = new PolynomialFit(degree);\n\n // Shorthands for the purpose of notation equivalence to original C++ code.\n const m = this.x.length;\n const n = degree + 1;\n\n // Expand the X vector to a matrix A, pre-multiplied by the weights.\n const a = new Matrix(n, m);\n for (let h = 0; h < m; h++) {\n a.set(0, h, this.w[h]);\n\n for (let i = 1; i < n; i++) {\n a.set(i, h, a.get(i - 1, h) * this.x[h]);\n }\n }\n\n // Apply the Gram-Schmidt process to A to obtain its QR decomposition.\n\n // Orthonormal basis, column-major ordVectorer.\n const q = new Matrix(n, m);\n // Upper triangular matrix, row-major order.\n const r = new Matrix(n, m);\n\n for (let j = 0; j < n; j += 1) {\n for (let h = 0; h < m; h += 1) {\n q.set(j, h, a.get(j, h));\n }\n for (let i = 0; i < j; i += 1) {\n const dot = q.getRow(j).dot(q.getRow(i));\n for (let h = 0; h < m; h += 1) {\n q.set(j, h, q.get(j, h) - dot * q.get(i, h));\n }\n }\n\n const norm = q.getRow(j).norm();\n if (norm < precisionErrorTolerance) {\n // Vectors are linearly dependent or zero so no solution.\n return null;\n }\n\n const inverseNorm = 1.0 / norm;\n for (let h = 0; h < m; h += 1) {\n q.set(j, h, q.get(j, h) * inverseNorm);\n }\n for (let i = 0; i < n; i += 1) {\n r.set(j, i, i < j ? 0.0 : q.getRow(j).dot(a.getRow(i)));\n }\n }\n\n // Solve R B = Qt W Y to find B. This is easy because R is upper triangular.\n // We just work from bottom-right to top-left calculating B's coefficients.\n const wy = new Vector(m);\n for (let h = 0; h < m; h += 1) {\n wy.set(h, this.y[h] * this.w[h]);\n }\n for (let i = n - 1; i >= 0; i -= 1) {\n result.coefficients[i] = q.getRow(i).dot(wy);\n for (let j = n - 1; j > i; j -= 1) {\n result.coefficients[i] -= r.get(i, j) * result.coefficients[j];\n }\n result.coefficients[i] /= r.get(i, i);\n }\n\n return result;\n }\n}\n"]}