react-native-gesture-handler 2.23.0 → 2.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/RNGestureHandler.podspec +8 -0
- package/android/build.gradle +9 -3
- package/android/paper/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerInterface.java +2 -1
- package/android/paper/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerInterface.java +2 -1
- package/android/paper77/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerDelegate.java +60 -0
- package/android/paper77/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerInterface.java +26 -0
- package/android/paper77/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerDelegate.java +26 -0
- package/android/paper77/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerInterface.java +16 -0
- package/android/paper77/src/main/java/com/swmansion/gesturehandler/NativeRNGestureHandlerModuleSpec.java +67 -0
- package/android/paper77/src/main/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +13 -0
- package/apple/RNGestureHandlerButton.mm +12 -2
- package/lib/commonjs/ActionType.js +3 -3
- package/lib/commonjs/ActionType.js.map +1 -1
- package/lib/commonjs/Directions.js +8 -11
- package/lib/commonjs/Directions.js.map +1 -1
- package/lib/commonjs/EnableNewWebImplementation.js +10 -2
- package/lib/commonjs/EnableNewWebImplementation.js.map +1 -1
- package/lib/commonjs/GestureHandlerRootViewContext.js +7 -2
- package/lib/commonjs/GestureHandlerRootViewContext.js.map +1 -1
- package/lib/commonjs/PlatformConstants.js +6 -1
- package/lib/commonjs/PlatformConstants.js.map +1 -1
- package/lib/commonjs/PlatformConstants.web.js +3 -1
- package/lib/commonjs/PlatformConstants.web.js.map +1 -1
- package/lib/commonjs/PointerType.js +5 -3
- package/lib/commonjs/PointerType.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.js +6 -2
- package/lib/commonjs/RNGestureHandlerModule.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.web.js +37 -11
- package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.windows.js +32 -22
- package/lib/commonjs/RNGestureHandlerModule.windows.js.map +1 -1
- package/lib/commonjs/RNRenderer.js +3 -1
- package/lib/commonjs/RNRenderer.js.map +1 -1
- package/lib/commonjs/RNRenderer.web.js +2 -1
- package/lib/commonjs/RNRenderer.web.js.map +1 -1
- package/lib/commonjs/State.js +3 -4
- package/lib/commonjs/State.js.map +1 -1
- package/lib/commonjs/TouchEventType.js +3 -3
- package/lib/commonjs/TouchEventType.js.map +1 -1
- package/lib/commonjs/components/DrawerLayout.js +115 -90
- package/lib/commonjs/components/DrawerLayout.js.map +1 -1
- package/lib/commonjs/components/GestureButtons.js +81 -28
- package/lib/commonjs/components/GestureButtons.js.map +1 -1
- package/lib/commonjs/components/GestureButtonsProps.js.map +1 -1
- package/lib/commonjs/components/GestureComponents.js +37 -26
- package/lib/commonjs/components/GestureComponents.js.map +1 -1
- package/lib/commonjs/components/GestureComponents.web.js +27 -13
- package/lib/commonjs/components/GestureComponents.web.js.map +1 -1
- package/lib/commonjs/components/GestureHandlerButton.js +6 -2
- package/lib/commonjs/components/GestureHandlerButton.js.map +1 -1
- package/lib/commonjs/components/GestureHandlerButton.web.js +12 -4
- package/lib/commonjs/components/GestureHandlerButton.web.js.map +1 -1
- package/lib/commonjs/components/GestureHandlerRootView.android.js +15 -4
- package/lib/commonjs/components/GestureHandlerRootView.android.js.map +1 -1
- package/lib/commonjs/components/GestureHandlerRootView.js +14 -4
- package/lib/commonjs/components/GestureHandlerRootView.js.map +1 -1
- package/lib/commonjs/components/GestureHandlerRootView.web.js +13 -4
- package/lib/commonjs/components/GestureHandlerRootView.web.js.map +1 -1
- package/lib/commonjs/components/Pressable/Pressable.js +77 -29
- package/lib/commonjs/components/Pressable/Pressable.js.map +1 -1
- package/lib/commonjs/components/Pressable/PressableProps.js.map +1 -1
- package/lib/commonjs/components/Pressable/index.js +3 -1
- package/lib/commonjs/components/Pressable/index.js.map +1 -1
- package/lib/commonjs/components/Pressable/utils.js +20 -5
- package/lib/commonjs/components/Pressable/utils.js.map +1 -1
- package/lib/commonjs/components/ReanimatedDrawerLayout.js +86 -44
- package/lib/commonjs/components/ReanimatedDrawerLayout.js.map +1 -1
- package/lib/commonjs/components/ReanimatedSwipeable.js +45 -18
- package/lib/commonjs/components/ReanimatedSwipeable.js.map +1 -1
- package/lib/commonjs/components/Swipeable.js +75 -34
- package/lib/commonjs/components/Swipeable.js.map +1 -1
- package/lib/commonjs/components/Text.js +28 -10
- package/lib/commonjs/components/Text.js.map +1 -1
- package/lib/commonjs/components/gestureHandlerRootHOC.js +14 -5
- package/lib/commonjs/components/gestureHandlerRootHOC.js.map +1 -1
- package/lib/commonjs/components/touchables/ExtraButtonProps.js +2 -0
- package/lib/commonjs/components/touchables/ExtraButtonProps.js.map +1 -0
- package/lib/commonjs/components/touchables/GenericTouchable.js +76 -40
- package/lib/commonjs/components/touchables/GenericTouchable.js.map +1 -1
- package/lib/commonjs/components/touchables/GenericTouchableProps.js.map +1 -1
- package/lib/commonjs/components/touchables/TouchableHighlight.js +34 -19
- package/lib/commonjs/components/touchables/TouchableHighlight.js.map +1 -1
- package/lib/commonjs/components/touchables/TouchableNativeFeedback.android.js +32 -16
- package/lib/commonjs/components/touchables/TouchableNativeFeedback.android.js.map +1 -1
- package/lib/commonjs/components/touchables/TouchableNativeFeedback.js +5 -2
- package/lib/commonjs/components/touchables/TouchableNativeFeedback.js.map +1 -1
- package/lib/commonjs/components/touchables/TouchableNativeFeedbackProps.js.map +1 -1
- package/lib/commonjs/components/touchables/TouchableOpacity.js +25 -16
- package/lib/commonjs/components/touchables/TouchableOpacity.js.map +1 -1
- package/lib/commonjs/components/touchables/TouchableWithoutFeedback.js +25 -13
- package/lib/commonjs/components/touchables/TouchableWithoutFeedback.js.map +1 -1
- package/lib/commonjs/components/touchables/index.js +12 -7
- package/lib/commonjs/components/touchables/index.js.map +1 -1
- package/lib/commonjs/findNodeHandle.js +4 -1
- package/lib/commonjs/findNodeHandle.js.map +1 -1
- package/lib/commonjs/findNodeHandle.web.js +14 -5
- package/lib/commonjs/findNodeHandle.web.js.map +1 -1
- package/lib/commonjs/getReactNativeVersion.js +6 -1
- package/lib/commonjs/getReactNativeVersion.js.map +1 -1
- package/lib/commonjs/getReactNativeVersion.web.js +1 -0
- package/lib/commonjs/getReactNativeVersion.web.js.map +1 -1
- package/lib/commonjs/getShadowNodeFromRef.js +14 -13
- package/lib/commonjs/getShadowNodeFromRef.js.map +1 -1
- package/lib/commonjs/getShadowNodeFromRef.web.js +1 -0
- package/lib/commonjs/getShadowNodeFromRef.web.js.map +1 -1
- package/lib/commonjs/ghQueueMicrotask.js +2 -1
- package/lib/commonjs/ghQueueMicrotask.js.map +1 -1
- package/lib/commonjs/handlers/FlingGestureHandler.js +11 -9
- package/lib/commonjs/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/ForceTouchGestureHandler.js +22 -15
- package/lib/commonjs/handlers/ForceTouchGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/GestureHandlerEventPayload.js.map +1 -1
- package/lib/commonjs/handlers/LongPressGestureHandler.js +11 -9
- package/lib/commonjs/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/NativeViewGestureHandler.js +13 -10
- package/lib/commonjs/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/PanGestureHandler.js +32 -13
- package/lib/commonjs/handlers/PanGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/PinchGestureHandler.js +9 -7
- package/lib/commonjs/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/PressabilityDebugView.js +1 -0
- package/lib/commonjs/handlers/PressabilityDebugView.js.map +1 -1
- package/lib/commonjs/handlers/PressabilityDebugView.web.js +1 -0
- package/lib/commonjs/handlers/PressabilityDebugView.web.js.map +1 -1
- package/lib/commonjs/handlers/RotationGestureHandler.js +9 -7
- package/lib/commonjs/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/TapGestureHandler.js +11 -9
- package/lib/commonjs/handlers/TapGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/createHandler.js +146 -59
- package/lib/commonjs/handlers/createHandler.js.map +1 -1
- package/lib/commonjs/handlers/createNativeWrapper.js +30 -18
- package/lib/commonjs/handlers/createNativeWrapper.js.map +1 -1
- package/lib/commonjs/handlers/customDirectEventTypes.js +1 -0
- package/lib/commonjs/handlers/customDirectEventTypes.js.map +1 -1
- package/lib/commonjs/handlers/customDirectEventTypes.web.js +2 -1
- package/lib/commonjs/handlers/customDirectEventTypes.web.js.map +1 -1
- package/lib/commonjs/handlers/gestureHandlerCommon.js +10 -9
- package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/commonjs/handlers/gestureHandlerTypesCompat.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/Wrap.js +14 -5
- package/lib/commonjs/handlers/gestures/GestureDetector/Wrap.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/Wrap.web.js +21 -13
- package/lib/commonjs/handlers/gestures/GestureDetector/Wrap.web.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/attachHandlers.js +29 -9
- package/lib/commonjs/handlers/gestures/GestureDetector/attachHandlers.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/dropHandlers.js +10 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/dropHandlers.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/index.js +36 -11
- package/lib/commonjs/handlers/gestures/GestureDetector/index.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/needsToReattach.js +3 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/needsToReattach.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/types.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/updateHandlers.js +24 -12
- package/lib/commonjs/handlers/gestures/GestureDetector/updateHandlers.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/useAnimatedGesture.js +48 -12
- package/lib/commonjs/handlers/gestures/GestureDetector/useAnimatedGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/useDetectorUpdater.js +13 -3
- package/lib/commonjs/handlers/gestures/GestureDetector/useDetectorUpdater.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/useMountReactions.js +9 -2
- package/lib/commonjs/handlers/gestures/GestureDetector/useMountReactions.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/useViewRefHandler.js +14 -6
- package/lib/commonjs/handlers/gestures/GestureDetector/useViewRefHandler.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/utils.js +55 -27
- package/lib/commonjs/handlers/gestures/GestureDetector/utils.js.map +1 -1
- package/lib/commonjs/handlers/gestures/eventReceiver.js +46 -14
- package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -1
- package/lib/commonjs/handlers/gestures/flingGesture.js +12 -5
- package/lib/commonjs/handlers/gestures/flingGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/forceTouchGesture.js +19 -8
- package/lib/commonjs/handlers/gestures/forceTouchGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gesture.js +84 -44
- package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gestureComposition.js +31 -17
- package/lib/commonjs/handlers/gestures/gestureComposition.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gestureObjects.js +27 -1
- package/lib/commonjs/handlers/gestures/gestureObjects.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gestureStateManager.js +9 -3
- package/lib/commonjs/handlers/gestures/gestureStateManager.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gestureStateManager.web.js +7 -2
- package/lib/commonjs/handlers/gestures/gestureStateManager.web.js.map +1 -1
- package/lib/commonjs/handlers/gestures/hoverGesture.js +25 -11
- package/lib/commonjs/handlers/gestures/hoverGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/longPressGesture.js +14 -6
- package/lib/commonjs/handlers/gestures/longPressGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/manualGesture.js +6 -0
- package/lib/commonjs/handlers/gestures/manualGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/nativeGesture.js +12 -5
- package/lib/commonjs/handlers/gestures/nativeGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/panGesture.js +43 -18
- package/lib/commonjs/handlers/gestures/panGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/pinchGesture.js +9 -2
- package/lib/commonjs/handlers/gestures/pinchGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/reanimatedWrapper.js +8 -1
- package/lib/commonjs/handlers/gestures/reanimatedWrapper.js.map +1 -1
- package/lib/commonjs/handlers/gestures/rotationGesture.js +9 -2
- package/lib/commonjs/handlers/gestures/rotationGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/tapGesture.js +22 -10
- package/lib/commonjs/handlers/gestures/tapGesture.js.map +1 -1
- package/lib/commonjs/handlers/getNextHandlerTag.js +1 -0
- package/lib/commonjs/handlers/getNextHandlerTag.js.map +1 -1
- package/lib/commonjs/handlers/handlersRegistry.js +21 -6
- package/lib/commonjs/handlers/handlersRegistry.js.map +1 -1
- package/lib/commonjs/handlers/utils.js +26 -6
- package/lib/commonjs/handlers/utils.js.map +1 -1
- package/lib/commonjs/index.js +104 -75
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/init.js +11 -4
- package/lib/commonjs/init.js.map +1 -1
- package/lib/commonjs/jestUtils/index.js +5 -4
- package/lib/commonjs/jestUtils/index.js.map +1 -1
- package/lib/commonjs/jestUtils/jestUtils.js +83 -19
- package/lib/commonjs/jestUtils/jestUtils.js.map +1 -1
- package/lib/commonjs/mocks.js +15 -5
- package/lib/commonjs/mocks.js.map +1 -1
- package/lib/commonjs/mountRegistry.js +12 -3
- package/lib/commonjs/mountRegistry.js.map +1 -1
- package/lib/commonjs/specs/NativeRNGestureHandlerModule.js +5 -1
- package/lib/commonjs/specs/NativeRNGestureHandlerModule.js.map +1 -1
- package/lib/commonjs/specs/RNGestureHandlerButtonNativeComponent.js +7 -2
- package/lib/commonjs/specs/RNGestureHandlerButtonNativeComponent.js.map +1 -1
- package/lib/commonjs/specs/RNGestureHandlerRootViewNativeComponent.js +7 -2
- package/lib/commonjs/specs/RNGestureHandlerRootViewNativeComponent.js.map +1 -1
- package/lib/commonjs/typeUtils.js.map +1 -1
- package/lib/commonjs/utils.js +37 -13
- package/lib/commonjs/utils.js.map +1 -1
- package/lib/commonjs/web/Gestures.js +23 -5
- package/lib/commonjs/web/Gestures.js.map +1 -1
- package/lib/commonjs/web/constants.js +4 -2
- package/lib/commonjs/web/constants.js.map +1 -1
- package/lib/commonjs/web/detectors/RotationGestureDetector.js +41 -5
- package/lib/commonjs/web/detectors/RotationGestureDetector.js.map +1 -1
- package/lib/commonjs/web/detectors/ScaleGestureDetector.js +42 -13
- package/lib/commonjs/web/detectors/ScaleGestureDetector.js.map +1 -1
- package/lib/commonjs/web/handlers/FlingGestureHandler.js +49 -6
- package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/GestureHandler.js +195 -62
- package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/HoverGestureHandler.js +19 -6
- package/lib/commonjs/web/handlers/HoverGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/IGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js +47 -6
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/ManualGestureHandler.js +11 -1
- package/lib/commonjs/web/handlers/ManualGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +49 -8
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PanGestureHandler.js +123 -8
- package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PinchGestureHandler.js +41 -4
- package/lib/commonjs/web/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/RotationGestureHandler.js +42 -4
- package/lib/commonjs/web/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/TapGestureHandler.js +67 -6
- package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/commonjs/web/interfaces.js +17 -9
- package/lib/commonjs/web/interfaces.js.map +1 -1
- package/lib/commonjs/web/tools/CircularBuffer.js +15 -3
- package/lib/commonjs/web/tools/CircularBuffer.js.map +1 -1
- package/lib/commonjs/web/tools/EventManager.js +41 -7
- package/lib/commonjs/web/tools/EventManager.js.map +1 -1
- package/lib/commonjs/web/tools/GestureHandlerDelegate.js.map +1 -1
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +78 -11
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -1
- package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js +48 -8
- package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js.map +1 -1
- package/lib/commonjs/web/tools/InteractionManager.js +22 -5
- package/lib/commonjs/web/tools/InteractionManager.js.map +1 -1
- package/lib/commonjs/web/tools/KeyboardEventManager.js +26 -4
- package/lib/commonjs/web/tools/KeyboardEventManager.js.map +1 -1
- package/lib/commonjs/web/tools/LeastSquareSolver.js +67 -30
- package/lib/commonjs/web/tools/LeastSquareSolver.js.map +1 -1
- package/lib/commonjs/web/tools/NodeManager.js +14 -7
- package/lib/commonjs/web/tools/NodeManager.js.map +1 -1
- package/lib/commonjs/web/tools/PointerEventManager.js +45 -10
- package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -1
- package/lib/commonjs/web/tools/PointerTracker.js +45 -9
- package/lib/commonjs/web/tools/PointerTracker.js.map +1 -1
- package/lib/commonjs/web/tools/Vector.js +18 -3
- package/lib/commonjs/web/tools/Vector.js.map +1 -1
- package/lib/commonjs/web/tools/VelocityTracker.js +31 -9
- package/lib/commonjs/web/tools/VelocityTracker.js.map +1 -1
- package/lib/commonjs/web/tools/WheelEventManager.js +17 -4
- package/lib/commonjs/web/tools/WheelEventManager.js.map +1 -1
- package/lib/commonjs/web/utils.js +76 -27
- package/lib/commonjs/web/utils.js.map +1 -1
- package/lib/commonjs/web_hammer/DiscreteGestureHandler.js +19 -7
- package/lib/commonjs/web_hammer/DiscreteGestureHandler.js.map +1 -1
- package/lib/commonjs/web_hammer/DraggingGestureHandler.js +13 -3
- package/lib/commonjs/web_hammer/DraggingGestureHandler.js.map +1 -1
- package/lib/commonjs/web_hammer/Errors.js +3 -0
- package/lib/commonjs/web_hammer/Errors.js.map +1 -1
- package/lib/commonjs/web_hammer/FlingGestureHandler.js +44 -13
- package/lib/commonjs/web_hammer/FlingGestureHandler.js.map +1 -1
- package/lib/commonjs/web_hammer/GestureHandler.js +142 -55
- package/lib/commonjs/web_hammer/GestureHandler.js.map +1 -1
- package/lib/commonjs/web_hammer/IndiscreteGestureHandler.js +11 -2
- package/lib/commonjs/web_hammer/IndiscreteGestureHandler.js.map +1 -1
- package/lib/commonjs/web_hammer/LongPressGestureHandler.js +19 -5
- package/lib/commonjs/web_hammer/LongPressGestureHandler.js.map +1 -1
- package/lib/commonjs/web_hammer/NativeViewGestureHandler.js +24 -16
- package/lib/commonjs/web_hammer/NativeViewGestureHandler.js.map +1 -1
- package/lib/commonjs/web_hammer/NodeManager.js +16 -9
- package/lib/commonjs/web_hammer/NodeManager.js.map +1 -1
- package/lib/commonjs/web_hammer/PanGestureHandler.js +49 -8
- package/lib/commonjs/web_hammer/PanGestureHandler.js.map +1 -1
- package/lib/commonjs/web_hammer/PinchGestureHandler.js +11 -2
- package/lib/commonjs/web_hammer/PinchGestureHandler.js.map +1 -1
- package/lib/commonjs/web_hammer/PressGestureHandler.js +43 -15
- package/lib/commonjs/web_hammer/PressGestureHandler.js.map +1 -1
- package/lib/commonjs/web_hammer/RotationGestureHandler.js +13 -2
- package/lib/commonjs/web_hammer/RotationGestureHandler.js.map +1 -1
- package/lib/commonjs/web_hammer/TapGestureHandler.js +52 -33
- package/lib/commonjs/web_hammer/TapGestureHandler.js.map +1 -1
- package/lib/commonjs/web_hammer/constants.js +26 -13
- package/lib/commonjs/web_hammer/constants.js.map +1 -1
- package/lib/commonjs/web_hammer/utils.js +14 -4
- package/lib/commonjs/web_hammer/utils.js.map +1 -1
- package/lib/module/ActionType.js +1 -3
- package/lib/module/ActionType.js.map +1 -1
- package/lib/module/Directions.js +3 -9
- package/lib/module/Directions.js.map +1 -1
- package/lib/module/EnableNewWebImplementation.js +5 -2
- package/lib/module/EnableNewWebImplementation.js.map +1 -1
- package/lib/module/GestureHandlerRootViewContext.js.map +1 -1
- package/lib/module/PlatformConstants.js +1 -0
- package/lib/module/PlatformConstants.js.map +1 -1
- package/lib/module/PlatformConstants.web.js +1 -0
- package/lib/module/PlatformConstants.web.js.map +1 -1
- package/lib/module/PointerType.js +4 -3
- package/lib/module/PointerType.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.js +0 -1
- package/lib/module/RNGestureHandlerModule.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.web.js +20 -10
- package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.windows.js +17 -18
- package/lib/module/RNGestureHandlerModule.windows.js.map +1 -1
- package/lib/module/RNRenderer.js.map +1 -1
- package/lib/module/RNRenderer.web.js.map +1 -1
- package/lib/module/State.js +1 -4
- package/lib/module/State.js.map +1 -1
- package/lib/module/TouchEventType.js +1 -3
- package/lib/module/TouchEventType.js.map +1 -1
- package/lib/module/components/DrawerLayout.js +99 -80
- package/lib/module/components/DrawerLayout.js.map +1 -1
- package/lib/module/components/GestureButtons.js +55 -19
- package/lib/module/components/GestureButtons.js.map +1 -1
- package/lib/module/components/GestureButtonsProps.js.map +1 -1
- package/lib/module/components/GestureComponents.js +12 -17
- package/lib/module/components/GestureComponents.js.map +1 -1
- package/lib/module/components/GestureComponents.web.js +4 -4
- package/lib/module/components/GestureComponents.web.js.map +1 -1
- package/lib/module/components/GestureHandlerButton.js.map +1 -1
- package/lib/module/components/GestureHandlerButton.web.js +2 -1
- package/lib/module/components/GestureHandlerButton.web.js.map +1 -1
- package/lib/module/components/GestureHandlerRootView.android.js +2 -1
- package/lib/module/components/GestureHandlerRootView.android.js.map +1 -1
- package/lib/module/components/GestureHandlerRootView.js +2 -1
- package/lib/module/components/GestureHandlerRootView.js.map +1 -1
- package/lib/module/components/GestureHandlerRootView.web.js +2 -1
- package/lib/module/components/GestureHandlerRootView.web.js.map +1 -1
- package/lib/module/components/Pressable/Pressable.js +59 -26
- package/lib/module/components/Pressable/Pressable.js.map +1 -1
- package/lib/module/components/Pressable/PressableProps.js.map +1 -1
- package/lib/module/components/Pressable/index.js.map +1 -1
- package/lib/module/components/Pressable/utils.js +14 -4
- package/lib/module/components/Pressable/utils.js.map +1 -1
- package/lib/module/components/ReanimatedDrawerLayout.js +66 -40
- package/lib/module/components/ReanimatedDrawerLayout.js.map +1 -1
- package/lib/module/components/ReanimatedSwipeable.js +30 -14
- package/lib/module/components/ReanimatedSwipeable.js.map +1 -1
- package/lib/module/components/Swipeable.js +59 -28
- package/lib/module/components/Swipeable.js.map +1 -1
- package/lib/module/components/Text.js +15 -7
- package/lib/module/components/Text.js.map +1 -1
- package/lib/module/components/gestureHandlerRootHOC.js +2 -2
- package/lib/module/components/gestureHandlerRootHOC.js.map +1 -1
- package/lib/module/components/touchables/ExtraButtonProps.js +2 -0
- package/lib/module/components/touchables/ExtraButtonProps.js.map +1 -0
- package/lib/module/components/touchables/GenericTouchable.js +63 -34
- package/lib/module/components/touchables/GenericTouchable.js.map +1 -1
- package/lib/module/components/touchables/GenericTouchableProps.js.map +1 -1
- package/lib/module/components/touchables/TouchableHighlight.js +24 -15
- package/lib/module/components/touchables/TouchableHighlight.js.map +1 -1
- package/lib/module/components/touchables/TouchableNativeFeedback.android.js +20 -10
- package/lib/module/components/touchables/TouchableNativeFeedback.android.js.map +1 -1
- package/lib/module/components/touchables/TouchableNativeFeedback.js +2 -2
- package/lib/module/components/touchables/TouchableNativeFeedback.js.map +1 -1
- package/lib/module/components/touchables/TouchableNativeFeedbackProps.js.map +1 -1
- package/lib/module/components/touchables/TouchableOpacity.js +16 -10
- package/lib/module/components/touchables/TouchableOpacity.js.map +1 -1
- package/lib/module/components/touchables/TouchableWithoutFeedback.js +15 -10
- package/lib/module/components/touchables/TouchableWithoutFeedback.js.map +1 -1
- package/lib/module/components/touchables/index.js.map +1 -1
- package/lib/module/findNodeHandle.js.map +1 -1
- package/lib/module/findNodeHandle.web.js +11 -5
- package/lib/module/findNodeHandle.web.js.map +1 -1
- package/lib/module/getReactNativeVersion.js.map +1 -1
- package/lib/module/getReactNativeVersion.web.js.map +1 -1
- package/lib/module/getShadowNodeFromRef.js +13 -13
- package/lib/module/getShadowNodeFromRef.js.map +1 -1
- package/lib/module/getShadowNodeFromRef.web.js.map +1 -1
- package/lib/module/ghQueueMicrotask.js.map +1 -1
- package/lib/module/handlers/FlingGestureHandler.js +0 -6
- package/lib/module/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/module/handlers/ForceTouchGestureHandler.js +8 -12
- package/lib/module/handlers/ForceTouchGestureHandler.js.map +1 -1
- package/lib/module/handlers/GestureHandlerEventPayload.js.map +1 -1
- package/lib/module/handlers/LongPressGestureHandler.js +0 -6
- package/lib/module/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/module/handlers/NativeViewGestureHandler.js +0 -6
- package/lib/module/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/module/handlers/PanGestureHandler.js +19 -8
- package/lib/module/handlers/PanGestureHandler.js.map +1 -1
- package/lib/module/handlers/PinchGestureHandler.js +0 -2
- package/lib/module/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/module/handlers/PressabilityDebugView.js.map +1 -1
- package/lib/module/handlers/PressabilityDebugView.web.js.map +1 -1
- package/lib/module/handlers/RotationGestureHandler.js +0 -2
- package/lib/module/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/module/handlers/TapGestureHandler.js +0 -6
- package/lib/module/handlers/TapGestureHandler.js.map +1 -1
- package/lib/module/handlers/createHandler.js +119 -57
- package/lib/module/handlers/createHandler.js.map +1 -1
- package/lib/module/handlers/createNativeWrapper.js +22 -15
- package/lib/module/handlers/createNativeWrapper.js.map +1 -1
- package/lib/module/handlers/customDirectEventTypes.js.map +1 -1
- package/lib/module/handlers/customDirectEventTypes.web.js.map +1 -1
- package/lib/module/handlers/gestureHandlerCommon.js +4 -9
- package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/module/handlers/gestureHandlerTypesCompat.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/Wrap.js +4 -3
- package/lib/module/handlers/gestures/GestureDetector/Wrap.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/Wrap.web.js +7 -8
- package/lib/module/handlers/gestures/GestureDetector/Wrap.web.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/attachHandlers.js +16 -8
- package/lib/module/handlers/gestures/GestureDetector/attachHandlers.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/dropHandlers.js +1 -0
- package/lib/module/handlers/gestures/GestureDetector/dropHandlers.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/index.js +13 -7
- package/lib/module/handlers/gestures/GestureDetector/index.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/needsToReattach.js +2 -0
- package/lib/module/handlers/gestures/GestureDetector/needsToReattach.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/types.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/updateHandlers.js +14 -11
- package/lib/module/handlers/gestures/GestureDetector/updateHandlers.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/useAnimatedGesture.js +39 -12
- package/lib/module/handlers/gestures/GestureDetector/useAnimatedGesture.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/useDetectorUpdater.js +5 -5
- package/lib/module/handlers/gestures/GestureDetector/useDetectorUpdater.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/useMountReactions.js +6 -2
- package/lib/module/handlers/gestures/GestureDetector/useMountReactions.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/useViewRefHandler.js +7 -5
- package/lib/module/handlers/gestures/GestureDetector/useViewRefHandler.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/utils.js +28 -23
- package/lib/module/handlers/gestures/GestureDetector/utils.js.map +1 -1
- package/lib/module/handlers/gestures/eventReceiver.js +38 -14
- package/lib/module/handlers/gestures/eventReceiver.js.map +1 -1
- package/lib/module/handlers/gestures/flingGesture.js +9 -5
- package/lib/module/handlers/gestures/flingGesture.js.map +1 -1
- package/lib/module/handlers/gestures/forceTouchGesture.js +17 -8
- package/lib/module/handlers/gestures/forceTouchGesture.js.map +1 -1
- package/lib/module/handlers/gestures/gesture.js +73 -44
- package/lib/module/handlers/gestures/gesture.js.map +1 -1
- package/lib/module/handlers/gestures/gestureComposition.js +24 -16
- package/lib/module/handlers/gestures/gestureComposition.js.map +1 -1
- package/lib/module/handlers/gestures/gestureObjects.js +14 -1
- package/lib/module/handlers/gestures/gestureObjects.js.map +1 -1
- package/lib/module/handlers/gestures/gestureStateManager.js +4 -3
- package/lib/module/handlers/gestures/gestureStateManager.js.map +1 -1
- package/lib/module/handlers/gestures/gestureStateManager.web.js +1 -0
- package/lib/module/handlers/gestures/gestureStateManager.web.js.map +1 -1
- package/lib/module/handlers/gestures/hoverGesture.js +18 -9
- package/lib/module/handlers/gestures/hoverGesture.js.map +1 -1
- package/lib/module/handlers/gestures/longPressGesture.js +11 -6
- package/lib/module/handlers/gestures/longPressGesture.js.map +1 -1
- package/lib/module/handlers/gestures/manualGesture.js +4 -0
- package/lib/module/handlers/gestures/manualGesture.js.map +1 -1
- package/lib/module/handlers/gestures/nativeGesture.js +9 -5
- package/lib/module/handlers/gestures/nativeGesture.js.map +1 -1
- package/lib/module/handlers/gestures/panGesture.js +41 -18
- package/lib/module/handlers/gestures/panGesture.js.map +1 -1
- package/lib/module/handlers/gestures/pinchGesture.js +7 -2
- package/lib/module/handlers/gestures/pinchGesture.js.map +1 -1
- package/lib/module/handlers/gestures/reanimatedWrapper.js +5 -0
- package/lib/module/handlers/gestures/reanimatedWrapper.js.map +1 -1
- package/lib/module/handlers/gestures/rotationGesture.js +7 -2
- package/lib/module/handlers/gestures/rotationGesture.js.map +1 -1
- package/lib/module/handlers/gestures/tapGesture.js +19 -10
- package/lib/module/handlers/gestures/tapGesture.js.map +1 -1
- package/lib/module/handlers/getNextHandlerTag.js.map +1 -1
- package/lib/module/handlers/handlersRegistry.js +5 -0
- package/lib/module/handlers/handlersRegistry.js.map +1 -1
- package/lib/module/handlers/utils.js +13 -4
- package/lib/module/handlers/utils.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/init.js +2 -3
- package/lib/module/init.js.map +1 -1
- package/lib/module/jestUtils/index.js.map +1 -1
- package/lib/module/jestUtils/jestUtils.js +66 -20
- package/lib/module/jestUtils/jestUtils.js.map +1 -1
- package/lib/module/mocks.js +7 -3
- package/lib/module/mocks.js.map +1 -1
- package/lib/module/mountRegistry.js +10 -3
- package/lib/module/mountRegistry.js.map +1 -1
- package/lib/module/specs/NativeRNGestureHandlerModule.js.map +1 -1
- package/lib/module/specs/RNGestureHandlerButtonNativeComponent.js.map +1 -1
- package/lib/module/specs/RNGestureHandlerRootViewNativeComponent.js.map +1 -1
- package/lib/module/typeUtils.js.map +1 -1
- package/lib/module/utils.js +15 -6
- package/lib/module/utils.js.map +1 -1
- package/lib/module/web/Gestures.js +1 -2
- package/lib/module/web/Gestures.js.map +1 -1
- package/lib/module/web/constants.js.map +1 -1
- package/lib/module/web/detectors/RotationGestureDetector.js +38 -5
- package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -1
- package/lib/module/web/detectors/ScaleGestureDetector.js +38 -13
- package/lib/module/web/detectors/ScaleGestureDetector.js.map +1 -1
- package/lib/module/web/handlers/FlingGestureHandler.js +39 -5
- package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/GestureHandler.js +181 -61
- package/lib/module/web/handlers/GestureHandler.js.map +1 -1
- package/lib/module/web/handlers/HoverGestureHandler.js +11 -5
- package/lib/module/web/handlers/HoverGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/IGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/LongPressGestureHandler.js +40 -5
- package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/ManualGestureHandler.js +6 -0
- package/lib/module/web/handlers/ManualGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/NativeViewGestureHandler.js +41 -7
- package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PanGestureHandler.js +114 -7
- package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PinchGestureHandler.js +33 -3
- package/lib/module/web/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/RotationGestureHandler.js +34 -3
- package/lib/module/web/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/TapGestureHandler.js +59 -5
- package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/module/web/interfaces.js +14 -9
- package/lib/module/web/interfaces.js.map +1 -1
- package/lib/module/web/tools/CircularBuffer.js +13 -3
- package/lib/module/web/tools/CircularBuffer.js.map +1 -1
- package/lib/module/web/tools/EventManager.js +39 -7
- package/lib/module/web/tools/EventManager.js.map +1 -1
- package/lib/module/web/tools/GestureHandlerDelegate.js.map +1 -1
- package/lib/module/web/tools/GestureHandlerOrchestrator.js +71 -10
- package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -1
- package/lib/module/web/tools/GestureHandlerWebDelegate.js +37 -7
- package/lib/module/web/tools/GestureHandlerWebDelegate.js.map +1 -1
- package/lib/module/web/tools/InteractionManager.js +19 -5
- package/lib/module/web/tools/InteractionManager.js.map +1 -1
- package/lib/module/web/tools/KeyboardEventManager.js +19 -3
- package/lib/module/web/tools/KeyboardEventManager.js.map +1 -1
- package/lib/module/web/tools/LeastSquareSolver.js +65 -30
- package/lib/module/web/tools/LeastSquareSolver.js.map +1 -1
- package/lib/module/web/tools/NodeManager.js +12 -7
- package/lib/module/web/tools/NodeManager.js.map +1 -1
- package/lib/module/web/tools/PointerEventManager.js +35 -9
- package/lib/module/web/tools/PointerEventManager.js.map +1 -1
- package/lib/module/web/tools/PointerTracker.js +39 -8
- package/lib/module/web/tools/PointerTracker.js.map +1 -1
- package/lib/module/web/tools/Vector.js +14 -3
- package/lib/module/web/tools/Vector.js.map +1 -1
- package/lib/module/web/tools/VelocityTracker.js +25 -8
- package/lib/module/web/tools/VelocityTracker.js.map +1 -1
- package/lib/module/web/tools/WheelEventManager.js +10 -3
- package/lib/module/web/tools/WheelEventManager.js.map +1 -1
- package/lib/module/web/utils.js +57 -22
- package/lib/module/web/utils.js.map +1 -1
- package/lib/module/web_hammer/DiscreteGestureHandler.js +13 -4
- package/lib/module/web_hammer/DiscreteGestureHandler.js.map +1 -1
- package/lib/module/web_hammer/DraggingGestureHandler.js +5 -0
- package/lib/module/web_hammer/DraggingGestureHandler.js.map +1 -1
- package/lib/module/web_hammer/Errors.js +1 -0
- package/lib/module/web_hammer/Errors.js.map +1 -1
- package/lib/module/web_hammer/FlingGestureHandler.js +35 -10
- package/lib/module/web_hammer/FlingGestureHandler.js.map +1 -1
- package/lib/module/web_hammer/GestureHandler.js +130 -53
- package/lib/module/web_hammer/GestureHandler.js.map +1 -1
- package/lib/module/web_hammer/IndiscreteGestureHandler.js +6 -1
- package/lib/module/web_hammer/IndiscreteGestureHandler.js.map +1 -1
- package/lib/module/web_hammer/LongPressGestureHandler.js +11 -2
- package/lib/module/web_hammer/LongPressGestureHandler.js.map +1 -1
- package/lib/module/web_hammer/NativeViewGestureHandler.js +12 -12
- package/lib/module/web_hammer/NativeViewGestureHandler.js.map +1 -1
- package/lib/module/web_hammer/NodeManager.js +8 -6
- package/lib/module/web_hammer/NodeManager.js.map +1 -1
- package/lib/module/web_hammer/PanGestureHandler.js +40 -6
- package/lib/module/web_hammer/PanGestureHandler.js.map +1 -1
- package/lib/module/web_hammer/PinchGestureHandler.js +5 -0
- package/lib/module/web_hammer/PinchGestureHandler.js.map +1 -1
- package/lib/module/web_hammer/PressGestureHandler.js +34 -13
- package/lib/module/web_hammer/PressGestureHandler.js.map +1 -1
- package/lib/module/web_hammer/RotationGestureHandler.js +6 -0
- package/lib/module/web_hammer/RotationGestureHandler.js.map +1 -1
- package/lib/module/web_hammer/TapGestureHandler.js +45 -31
- package/lib/module/web_hammer/TapGestureHandler.js.map +1 -1
- package/lib/module/web_hammer/constants.js +1 -2
- package/lib/module/web_hammer/constants.js.map +1 -1
- package/lib/module/web_hammer/utils.js +2 -2
- package/lib/module/web_hammer/utils.js.map +1 -1
- package/lib/typescript/components/GestureComponents.d.ts +1 -1
- package/lib/typescript/components/ReanimatedDrawerLayout.d.ts +5 -0
- package/lib/typescript/components/touchables/ExtraButtonProps.d.ts +7 -0
- package/lib/typescript/components/touchables/GenericTouchable.d.ts +0 -2
- package/lib/typescript/components/touchables/GenericTouchableProps.d.ts +2 -0
- package/lib/typescript/components/touchables/TouchableHighlight.d.ts +2 -2
- package/lib/typescript/components/touchables/TouchableNativeFeedback.android.d.ts +3 -3
- package/lib/typescript/components/touchables/TouchableNativeFeedback.d.ts +1 -1
- package/lib/typescript/components/touchables/TouchableNativeFeedbackProps.d.ts +3 -7
- package/lib/typescript/components/touchables/TouchableOpacity.d.ts +2 -2
- package/lib/typescript/components/touchables/TouchableWithoutFeedback.d.ts +2 -2
- package/lib/typescript/handlers/gestures/GestureDetector/utils.d.ts +1 -1
- package/lib/typescript/utils.d.ts +1 -0
- package/lib/typescript/web/utils.d.ts +2 -0
- package/package.json +9 -8
- package/src/components/GestureComponents.tsx +1 -1
- package/src/components/ReanimatedDrawerLayout.tsx +17 -4
- package/src/components/Text.tsx +5 -0
- package/src/components/touchables/ExtraButtonProps.ts +7 -0
- package/src/components/touchables/GenericTouchable.tsx +0 -2
- package/src/components/touchables/GenericTouchableProps.ts +2 -0
- package/src/components/touchables/TouchableHighlight.tsx +2 -2
- package/src/components/touchables/TouchableNativeFeedback.android.tsx +1 -1
- package/src/components/touchables/TouchableNativeFeedback.tsx +1 -1
- package/src/components/touchables/TouchableNativeFeedbackProps.tsx +3 -8
- package/src/components/touchables/TouchableOpacity.tsx +2 -2
- package/src/components/touchables/TouchableWithoutFeedback.tsx +22 -4
- package/src/handlers/createHandler.tsx +20 -9
- package/src/handlers/createNativeWrapper.tsx +7 -3
- package/src/handlers/gestures/GestureDetector/Wrap.web.tsx +2 -4
- package/src/utils.ts +6 -0
- package/src/web/utils.ts +21 -3
@@ -4,21 +4,24 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.default = void 0;
|
7
|
-
|
8
|
-
function
|
9
|
-
|
7
|
+
|
8
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
9
|
+
|
10
10
|
// Implementation taken from Flutter's LeastSquareSolver
|
11
11
|
// https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/gestures/lsq_solver.dart
|
12
|
-
|
13
12
|
class Vector {
|
14
13
|
constructor(length) {
|
15
14
|
_defineProperty(this, "offset", void 0);
|
15
|
+
|
16
16
|
_defineProperty(this, "length", void 0);
|
17
|
+
|
17
18
|
_defineProperty(this, "elements", void 0);
|
19
|
+
|
18
20
|
this.offset = 0;
|
19
21
|
this.length = length;
|
20
22
|
this.elements = new Array(length);
|
21
23
|
}
|
24
|
+
|
22
25
|
static fromVOL(values, offset, length) {
|
23
26
|
const result = new Vector(0);
|
24
27
|
result.offset = offset;
|
@@ -26,142 +29,176 @@ class Vector {
|
|
26
29
|
result.elements = values;
|
27
30
|
return result;
|
28
31
|
}
|
32
|
+
|
29
33
|
get(index) {
|
30
34
|
return this.elements[this.offset + index];
|
31
35
|
}
|
36
|
+
|
32
37
|
set(index, value) {
|
33
38
|
this.elements[this.offset + index] = value;
|
34
39
|
}
|
40
|
+
|
35
41
|
dot(other) {
|
36
42
|
let result = 0;
|
43
|
+
|
37
44
|
for (let i = 0; i < this.length; i++) {
|
38
45
|
result += this.get(i) * other.get(i);
|
39
46
|
}
|
47
|
+
|
40
48
|
return result;
|
41
49
|
}
|
50
|
+
|
42
51
|
norm() {
|
43
52
|
return Math.sqrt(this.dot(this));
|
44
53
|
}
|
54
|
+
|
45
55
|
}
|
56
|
+
|
46
57
|
class Matrix {
|
47
58
|
constructor(rows, columns) {
|
48
59
|
_defineProperty(this, "columns", void 0);
|
60
|
+
|
49
61
|
_defineProperty(this, "elements", void 0);
|
62
|
+
|
50
63
|
this.columns = columns;
|
51
64
|
this.elements = new Array(rows * columns);
|
52
65
|
}
|
66
|
+
|
53
67
|
get(row, column) {
|
54
68
|
return this.elements[row * this.columns + column];
|
55
69
|
}
|
70
|
+
|
56
71
|
set(row, column, value) {
|
57
72
|
this.elements[row * this.columns + column] = value;
|
58
73
|
}
|
74
|
+
|
59
75
|
getRow(row) {
|
60
76
|
return Vector.fromVOL(this.elements, row * this.columns, this.columns);
|
61
77
|
}
|
62
|
-
}
|
63
78
|
|
64
|
-
// An nth degree polynomial fit to a dataset.
|
79
|
+
} // An nth degree polynomial fit to a dataset.
|
80
|
+
|
81
|
+
|
65
82
|
class PolynomialFit {
|
83
|
+
// The polynomial coefficients of the fit.
|
84
|
+
//
|
85
|
+
// For each `i`, the element `coefficients[i]` is the coefficient of
|
86
|
+
// the `i`-th power of the variable.
|
66
87
|
// Creates a polynomial fit of the given degree.
|
67
88
|
//
|
68
89
|
// There are n + 1 coefficients in a fit of degree n.
|
69
90
|
constructor(degree) {
|
70
|
-
// The polynomial coefficients of the fit.
|
71
|
-
//
|
72
|
-
// For each `i`, the element `coefficients[i]` is the coefficient of
|
73
|
-
// the `i`-th power of the variable.
|
74
91
|
_defineProperty(this, "coefficients", void 0);
|
92
|
+
|
75
93
|
this.coefficients = new Array(degree + 1);
|
76
94
|
}
|
95
|
+
|
77
96
|
}
|
78
|
-
const precisionErrorTolerance = 1e-10;
|
79
97
|
|
80
|
-
// Uses the least-squares algorithm to fit a polynomial to a set of data.
|
98
|
+
const precisionErrorTolerance = 1e-10; // Uses the least-squares algorithm to fit a polynomial to a set of data.
|
99
|
+
|
81
100
|
class LeastSquareSolver {
|
101
|
+
// The x-coordinates of each data point.
|
102
|
+
// The y-coordinates of each data point.
|
103
|
+
// The weight to use for each data point.
|
82
104
|
// Creates a least-squares solver.
|
83
105
|
//
|
84
106
|
// The [x], [y], and [w] arguments must not be null.
|
85
107
|
constructor(x, y, w) {
|
86
|
-
// The x-coordinates of each data point.
|
87
108
|
_defineProperty(this, "x", void 0);
|
88
|
-
|
109
|
+
|
89
110
|
_defineProperty(this, "y", void 0);
|
90
|
-
|
111
|
+
|
91
112
|
_defineProperty(this, "w", void 0);
|
113
|
+
|
92
114
|
this.x = x;
|
93
115
|
this.y = y;
|
94
116
|
this.w = w;
|
95
|
-
}
|
96
|
-
|
97
|
-
// Fits a polynomial of the given degree to the data points.
|
117
|
+
} // Fits a polynomial of the given degree to the data points.
|
98
118
|
//
|
99
119
|
// When there is not enough data to fit a curve null is returned.
|
120
|
+
|
121
|
+
|
100
122
|
solve(degree) {
|
101
123
|
if (degree > this.x.length) {
|
102
124
|
// Not enough data to fit a curve.
|
103
125
|
return null;
|
104
126
|
}
|
105
|
-
const result = new PolynomialFit(degree);
|
106
127
|
|
107
|
-
// Shorthands for the purpose of notation equivalence to original C++ code.
|
128
|
+
const result = new PolynomialFit(degree); // Shorthands for the purpose of notation equivalence to original C++ code.
|
129
|
+
|
108
130
|
const m = this.x.length;
|
109
|
-
const n = degree + 1;
|
131
|
+
const n = degree + 1; // Expand the X vector to a matrix A, pre-multiplied by the weights.
|
110
132
|
|
111
|
-
// Expand the X vector to a matrix A, pre-multiplied by the weights.
|
112
133
|
const a = new Matrix(n, m);
|
134
|
+
|
113
135
|
for (let h = 0; h < m; h++) {
|
114
136
|
a.set(0, h, this.w[h]);
|
137
|
+
|
115
138
|
for (let i = 1; i < n; i++) {
|
116
139
|
a.set(i, h, a.get(i - 1, h) * this.x[h]);
|
117
140
|
}
|
118
|
-
}
|
141
|
+
} // Apply the Gram-Schmidt process to A to obtain its QR decomposition.
|
142
|
+
// Orthonormal basis, column-major ordVectorer.
|
119
143
|
|
120
|
-
// Apply the Gram-Schmidt process to A to obtain its QR decomposition.
|
121
144
|
|
122
|
-
//
|
123
|
-
|
124
|
-
// Upper triangular matrix, row-major order.
|
145
|
+
const q = new Matrix(n, m); // Upper triangular matrix, row-major order.
|
146
|
+
|
125
147
|
const r = new Matrix(n, m);
|
148
|
+
|
126
149
|
for (let j = 0; j < n; j += 1) {
|
127
150
|
for (let h = 0; h < m; h += 1) {
|
128
151
|
q.set(j, h, a.get(j, h));
|
129
152
|
}
|
153
|
+
|
130
154
|
for (let i = 0; i < j; i += 1) {
|
131
155
|
const dot = q.getRow(j).dot(q.getRow(i));
|
156
|
+
|
132
157
|
for (let h = 0; h < m; h += 1) {
|
133
158
|
q.set(j, h, q.get(j, h) - dot * q.get(i, h));
|
134
159
|
}
|
135
160
|
}
|
161
|
+
|
136
162
|
const norm = q.getRow(j).norm();
|
163
|
+
|
137
164
|
if (norm < precisionErrorTolerance) {
|
138
165
|
// Vectors are linearly dependent or zero so no solution.
|
139
166
|
return null;
|
140
167
|
}
|
168
|
+
|
141
169
|
const inverseNorm = 1.0 / norm;
|
170
|
+
|
142
171
|
for (let h = 0; h < m; h += 1) {
|
143
172
|
q.set(j, h, q.get(j, h) * inverseNorm);
|
144
173
|
}
|
174
|
+
|
145
175
|
for (let i = 0; i < n; i += 1) {
|
146
176
|
r.set(j, i, i < j ? 0.0 : q.getRow(j).dot(a.getRow(i)));
|
147
177
|
}
|
148
|
-
}
|
149
|
-
|
150
|
-
// Solve R B = Qt W Y to find B. This is easy because R is upper triangular.
|
178
|
+
} // Solve R B = Qt W Y to find B. This is easy because R is upper triangular.
|
151
179
|
// We just work from bottom-right to top-left calculating B's coefficients.
|
180
|
+
|
181
|
+
|
152
182
|
const wy = new Vector(m);
|
183
|
+
|
153
184
|
for (let h = 0; h < m; h += 1) {
|
154
185
|
wy.set(h, this.y[h] * this.w[h]);
|
155
186
|
}
|
187
|
+
|
156
188
|
for (let i = n - 1; i >= 0; i -= 1) {
|
157
189
|
result.coefficients[i] = q.getRow(i).dot(wy);
|
190
|
+
|
158
191
|
for (let j = n - 1; j > i; j -= 1) {
|
159
192
|
result.coefficients[i] -= r.get(i, j) * result.coefficients[j];
|
160
193
|
}
|
194
|
+
|
161
195
|
result.coefficients[i] /= r.get(i, i);
|
162
196
|
}
|
197
|
+
|
163
198
|
return result;
|
164
199
|
}
|
200
|
+
|
165
201
|
}
|
202
|
+
|
166
203
|
exports.default = LeastSquareSolver;
|
167
204
|
//# 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","exports","default"],"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"]}
|
@@ -4,39 +4,46 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.default = void 0;
|
7
|
-
|
8
|
-
function
|
9
|
-
|
7
|
+
|
8
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
9
|
+
|
10
10
|
// eslint-disable-next-line @typescript-eslint/no-extraneous-class
|
11
11
|
class NodeManager {
|
12
12
|
static getHandler(tag) {
|
13
13
|
if (tag in this.gestures) {
|
14
14
|
return this.gestures[tag];
|
15
15
|
}
|
16
|
+
|
16
17
|
throw new Error(`No handler for tag ${tag}`);
|
17
18
|
}
|
19
|
+
|
18
20
|
static createGestureHandler(handlerTag, handler) {
|
19
21
|
if (handlerTag in this.gestures) {
|
20
22
|
throw new Error(`Handler with tag ${handlerTag} already exists. Please ensure that no Gesture instance is used across multiple GestureDetectors.`);
|
21
23
|
}
|
24
|
+
|
22
25
|
this.gestures[handlerTag] = handler;
|
23
26
|
this.gestures[handlerTag].handlerTag = handlerTag;
|
24
27
|
}
|
28
|
+
|
25
29
|
static dropGestureHandler(handlerTag) {
|
26
30
|
if (!(handlerTag in this.gestures)) {
|
27
31
|
return;
|
28
32
|
}
|
29
|
-
this.gestures[handlerTag].onDestroy();
|
30
33
|
|
31
|
-
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
34
|
+
this.gestures[handlerTag].onDestroy(); // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
35
|
+
|
32
36
|
delete this.gestures[handlerTag];
|
33
37
|
}
|
38
|
+
|
34
39
|
static get nodes() {
|
35
|
-
return {
|
36
|
-
...this.gestures
|
40
|
+
return { ...this.gestures
|
37
41
|
};
|
38
42
|
}
|
43
|
+
|
39
44
|
}
|
45
|
+
|
40
46
|
exports.default = NodeManager;
|
47
|
+
|
41
48
|
_defineProperty(NodeManager, "gestures", {});
|
42
49
|
//# sourceMappingURL=NodeManager.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["NodeManager","getHandler","tag","gestures","Error","createGestureHandler","handlerTag","handler","dropGestureHandler","onDestroy","nodes","
|
1
|
+
{"version":3,"sources":["NodeManager.ts"],"names":["NodeManager","getHandler","tag","gestures","Error","createGestureHandler","handlerTag","handler","dropGestureHandler","onDestroy","nodes"],"mappings":";;;;;;;;;AAIA;AACe,MAAeA,WAAf,CAA2B;AAMhB,SAAVC,UAAU,CAACC,GAAD,EAA+B;AACrD,QAAIA,GAAG,IAAI,KAAKC,QAAhB,EAA0B;AACxB,aAAO,KAAKA,QAAL,CAAcD,GAAd,CAAP;AACD;;AAED,UAAM,IAAIE,KAAJ,CAAW,sBAAqBF,GAAI,EAApC,CAAN;AACD;;AAEiC,SAApBG,oBAAoB,CAChCC,UADgC,EAEhCC,OAFgC,EAG1B;AACN,QAAID,UAAU,IAAI,KAAKH,QAAvB,EAAiC;AAC/B,YAAM,IAAIC,KAAJ,CACH,oBAAmBE,UAAW,mGAD3B,CAAN;AAGD;;AAED,SAAKH,QAAL,CAAcG,UAAd,IAA4BC,OAA5B;AACA,SAAKJ,QAAL,CAAcG,UAAd,EAA0BA,UAA1B,GAAuCA,UAAvC;AACD;;AAE+B,SAAlBE,kBAAkB,CAACF,UAAD,EAA2B;AACzD,QAAI,EAAEA,UAAU,IAAI,KAAKH,QAArB,CAAJ,EAAoC;AAClC;AACD;;AAED,SAAKA,QAAL,CAAcG,UAAd,EAA0BG,SAA1B,GALyD,CAOzD;;AACA,WAAO,KAAKN,QAAL,CAAcG,UAAd,CAAP;AACD;;AAEsB,aAALI,KAAK,GAAG;AACxB,WAAO,EAAE,GAAG,KAAKP;AAAV,KAAP;AACD;;AAzCuC;;;;gBAAZH,W,cAIxB,E","sourcesContent":["import { ValueOf } from '../../typeUtils';\nimport { Gestures } from '../Gestures';\nimport type IGestureHandler from '../handlers/IGestureHandler';\n\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport default abstract class NodeManager {\n private static gestures: Record<\n number,\n InstanceType<ValueOf<typeof Gestures>>\n > = {};\n\n public static getHandler(tag: number): IGestureHandler {\n if (tag in this.gestures) {\n return this.gestures[tag] as IGestureHandler;\n }\n\n throw new Error(`No handler for tag ${tag}`);\n }\n\n public static createGestureHandler(\n handlerTag: number,\n handler: InstanceType<ValueOf<typeof Gestures>>\n ): void {\n if (handlerTag in this.gestures) {\n throw new Error(\n `Handler with tag ${handlerTag} already exists. Please ensure that no Gesture instance is used across multiple GestureDetectors.`\n );\n }\n\n this.gestures[handlerTag] = handler;\n this.gestures[handlerTag].handlerTag = handlerTag;\n }\n\n public static dropGestureHandler(handlerTag: number): void {\n if (!(handlerTag in this.gestures)) {\n return;\n }\n\n this.gestures[handlerTag].onDestroy();\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.gestures[handlerTag];\n }\n\n public static get nodes() {\n return { ...this.gestures };\n }\n}\n"]}
|
@@ -4,22 +4,33 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.default = void 0;
|
7
|
+
|
7
8
|
var _EventManager = _interopRequireDefault(require("./EventManager"));
|
9
|
+
|
8
10
|
var _gestureHandlerCommon = require("../../handlers/gestureHandlerCommon");
|
11
|
+
|
9
12
|
var _interfaces = require("../interfaces");
|
13
|
+
|
10
14
|
var _utils = require("../utils");
|
15
|
+
|
11
16
|
var _PointerType = require("../../PointerType");
|
12
|
-
|
13
|
-
function
|
14
|
-
|
15
|
-
function
|
17
|
+
|
18
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
19
|
+
|
20
|
+
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; }
|
21
|
+
|
16
22
|
const POINTER_CAPTURE_EXCLUDE_LIST = new Set(['SELECT', 'INPUT']);
|
23
|
+
|
17
24
|
class PointerEventManager extends _EventManager.default {
|
18
25
|
constructor(view) {
|
19
26
|
super(view);
|
27
|
+
|
20
28
|
_defineProperty(this, "trackedPointers", new Set());
|
29
|
+
|
21
30
|
_defineProperty(this, "mouseButtonsMapper", new Map());
|
31
|
+
|
22
32
|
_defineProperty(this, "lastPosition", void 0);
|
33
|
+
|
23
34
|
_defineProperty(this, "pointerDownCallback", event => {
|
24
35
|
if (!(0, _utils.isPointerInBounds)(this.view, {
|
25
36
|
x: event.clientX,
|
@@ -27,13 +38,17 @@ class PointerEventManager extends _EventManager.default {
|
|
27
38
|
})) {
|
28
39
|
return;
|
29
40
|
}
|
41
|
+
|
30
42
|
const adaptedEvent = this.mapEvent(event, _interfaces.EventTypes.DOWN);
|
31
43
|
const target = event.target;
|
44
|
+
|
32
45
|
if (!POINTER_CAPTURE_EXCLUDE_LIST.has(target.tagName)) {
|
33
46
|
target.setPointerCapture(adaptedEvent.pointerId);
|
34
47
|
}
|
48
|
+
|
35
49
|
this.markAsInBounds(adaptedEvent.pointerId);
|
36
50
|
this.trackedPointers.add(adaptedEvent.pointerId);
|
51
|
+
|
37
52
|
if (++this.activePointersCounter > 1) {
|
38
53
|
adaptedEvent.eventType = _interfaces.EventTypes.ADDITIONAL_POINTER_DOWN;
|
39
54
|
this.onPointerAdd(adaptedEvent);
|
@@ -41,6 +56,7 @@ class PointerEventManager extends _EventManager.default {
|
|
41
56
|
this.onPointerDown(adaptedEvent);
|
42
57
|
}
|
43
58
|
});
|
59
|
+
|
44
60
|
_defineProperty(this, "pointerUpCallback", event => {
|
45
61
|
// When we call reset on gesture handlers, it also resets their event managers
|
46
62
|
// In some handlers (like RotationGestureHandler) reset is called before all pointers leave view
|
@@ -49,13 +65,17 @@ class PointerEventManager extends _EventManager.default {
|
|
49
65
|
if (this.activePointersCounter === 0) {
|
50
66
|
return;
|
51
67
|
}
|
68
|
+
|
52
69
|
const adaptedEvent = this.mapEvent(event, _interfaces.EventTypes.UP);
|
53
70
|
const target = event.target;
|
71
|
+
|
54
72
|
if (!POINTER_CAPTURE_EXCLUDE_LIST.has(target.tagName)) {
|
55
73
|
target.releasePointerCapture(adaptedEvent.pointerId);
|
56
74
|
}
|
75
|
+
|
57
76
|
this.markAsOutOfBounds(adaptedEvent.pointerId);
|
58
77
|
this.trackedPointers.delete(adaptedEvent.pointerId);
|
78
|
+
|
59
79
|
if (--this.activePointersCounter > 0) {
|
60
80
|
adaptedEvent.eventType = _interfaces.EventTypes.ADDITIONAL_POINTER_UP;
|
61
81
|
this.onPointerRemove(adaptedEvent);
|
@@ -63,11 +83,10 @@ class PointerEventManager extends _EventManager.default {
|
|
63
83
|
this.onPointerUp(adaptedEvent);
|
64
84
|
}
|
65
85
|
});
|
86
|
+
|
66
87
|
_defineProperty(this, "pointerMoveCallback", event => {
|
67
88
|
const adaptedEvent = this.mapEvent(event, _interfaces.EventTypes.MOVE);
|
68
|
-
const target = event.target;
|
69
|
-
|
70
|
-
// You may be wondering why are we setting pointer capture here, when we
|
89
|
+
const target = event.target; // You may be wondering why are we setting pointer capture here, when we
|
71
90
|
// already set it in `pointerdown` handler. Well, that's a great question,
|
72
91
|
// for which I don't have an answer. Specification (https://www.w3.org/TR/pointerevents2/#dom-element-setpointercapture)
|
73
92
|
// says that the requirement for `setPointerCapture` to work is that pointer
|
@@ -79,14 +98,17 @@ class PointerEventManager extends _EventManager.default {
|
|
79
98
|
// incorporating it here seems stupid), so we just call it again here, every time
|
80
99
|
// pointer moves until it succeeds.
|
81
100
|
// God, I do love web development.
|
101
|
+
|
82
102
|
if (!target.hasPointerCapture(event.pointerId) && !POINTER_CAPTURE_EXCLUDE_LIST.has(target.tagName)) {
|
83
103
|
target.setPointerCapture(event.pointerId);
|
84
104
|
}
|
105
|
+
|
85
106
|
const inBounds = (0, _utils.isPointerInBounds)(this.view, {
|
86
107
|
x: adaptedEvent.x,
|
87
108
|
y: adaptedEvent.y
|
88
109
|
});
|
89
110
|
const pointerIndex = this.pointersInBounds.indexOf(adaptedEvent.pointerId);
|
111
|
+
|
90
112
|
if (inBounds) {
|
91
113
|
if (pointerIndex < 0) {
|
92
114
|
adaptedEvent.eventType = _interfaces.EventTypes.ENTER;
|
@@ -104,9 +126,11 @@ class PointerEventManager extends _EventManager.default {
|
|
104
126
|
this.onPointerOutOfBounds(adaptedEvent);
|
105
127
|
}
|
106
128
|
}
|
129
|
+
|
107
130
|
this.lastPosition.x = event.x;
|
108
131
|
this.lastPosition.y = event.y;
|
109
132
|
});
|
133
|
+
|
110
134
|
_defineProperty(this, "pointerCancelCallback", event => {
|
111
135
|
const adaptedEvent = this.mapEvent(event, _interfaces.EventTypes.CANCEL);
|
112
136
|
this.onPointerCancel(adaptedEvent);
|
@@ -114,16 +138,20 @@ class PointerEventManager extends _EventManager.default {
|
|
114
138
|
this.activePointersCounter = 0;
|
115
139
|
this.trackedPointers.clear();
|
116
140
|
});
|
141
|
+
|
117
142
|
_defineProperty(this, "pointerEnterCallback", event => {
|
118
143
|
const adaptedEvent = this.mapEvent(event, _interfaces.EventTypes.ENTER);
|
119
144
|
this.onPointerMoveOver(adaptedEvent);
|
120
145
|
});
|
146
|
+
|
121
147
|
_defineProperty(this, "pointerLeaveCallback", event => {
|
122
148
|
const adaptedEvent = this.mapEvent(event, _interfaces.EventTypes.LEAVE);
|
123
149
|
this.onPointerMoveOut(adaptedEvent);
|
124
150
|
});
|
151
|
+
|
125
152
|
_defineProperty(this, "lostPointerCaptureCallback", event => {
|
126
153
|
const adaptedEvent = this.mapEvent(event, _interfaces.EventTypes.CANCEL);
|
154
|
+
|
127
155
|
if (this.trackedPointers.has(adaptedEvent.pointerId)) {
|
128
156
|
// In some cases the `pointerup` event is not fired, but `lostpointercapture` is.
|
129
157
|
// Here we simulate the `pointercancel` event to make sure the gesture handler stops tracking it.
|
@@ -132,6 +160,7 @@ class PointerEventManager extends _EventManager.default {
|
|
132
160
|
this.trackedPointers.clear();
|
133
161
|
}
|
134
162
|
});
|
163
|
+
|
135
164
|
this.mouseButtonsMapper.set(0, _gestureHandlerCommon.MouseButton.LEFT);
|
136
165
|
this.mouseButtonsMapper.set(1, _gestureHandlerCommon.MouseButton.MIDDLE);
|
137
166
|
this.mouseButtonsMapper.set(2, _gestureHandlerCommon.MouseButton.RIGHT);
|
@@ -142,20 +171,21 @@ class PointerEventManager extends _EventManager.default {
|
|
142
171
|
y: -Infinity
|
143
172
|
};
|
144
173
|
}
|
174
|
+
|
145
175
|
registerListeners() {
|
146
176
|
this.view.addEventListener('pointerdown', this.pointerDownCallback);
|
147
177
|
this.view.addEventListener('pointerup', this.pointerUpCallback);
|
148
178
|
this.view.addEventListener('pointermove', this.pointerMoveCallback);
|
149
|
-
this.view.addEventListener('pointercancel', this.pointerCancelCallback);
|
150
|
-
|
151
|
-
// onPointerEnter and onPointerLeave are triggered by a custom logic responsible for
|
179
|
+
this.view.addEventListener('pointercancel', this.pointerCancelCallback); // onPointerEnter and onPointerLeave are triggered by a custom logic responsible for
|
152
180
|
// handling shouldCancelWhenOutside flag, and are unreliable unless the pointer is down.
|
153
181
|
// We therefore use pointerenter and pointerleave events to handle the hover gesture,
|
154
182
|
// mapping them to onPointerMoveOver and onPointerMoveOut respectively.
|
183
|
+
|
155
184
|
this.view.addEventListener('pointerenter', this.pointerEnterCallback);
|
156
185
|
this.view.addEventListener('pointerleave', this.pointerLeaveCallback);
|
157
186
|
this.view.addEventListener('lostpointercapture', this.lostPointerCaptureCallback);
|
158
187
|
}
|
188
|
+
|
159
189
|
unregisterListeners() {
|
160
190
|
this.view.removeEventListener('pointerdown', this.pointerDownCallback);
|
161
191
|
this.view.removeEventListener('pointerup', this.pointerUpCallback);
|
@@ -165,8 +195,10 @@ class PointerEventManager extends _EventManager.default {
|
|
165
195
|
this.view.removeEventListener('pointerleave', this.pointerLeaveCallback);
|
166
196
|
this.view.removeEventListener('lostpointercapture', this.lostPointerCaptureCallback);
|
167
197
|
}
|
198
|
+
|
168
199
|
mapEvent(event, eventType) {
|
169
200
|
var _PointerTypeMapping$g;
|
201
|
+
|
170
202
|
const rect = this.view.getBoundingClientRect();
|
171
203
|
const {
|
172
204
|
scaleX,
|
@@ -185,10 +217,13 @@ class PointerEventManager extends _EventManager.default {
|
|
185
217
|
stylusData: (0, _utils.tryExtractStylusData)(event)
|
186
218
|
};
|
187
219
|
}
|
220
|
+
|
188
221
|
resetManager() {
|
189
222
|
super.resetManager();
|
190
223
|
this.trackedPointers.clear();
|
191
224
|
}
|
225
|
+
|
192
226
|
}
|
227
|
+
|
193
228
|
exports.default = PointerEventManager;
|
194
229
|
//# sourceMappingURL=PointerEventManager.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_EventManager","_interopRequireDefault","require","_gestureHandlerCommon","_interfaces","_utils","_PointerType","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","POINTER_CAPTURE_EXCLUDE_LIST","Set","PointerEventManager","EventManager","constructor","view","Map","event","isPointerInBounds","x","clientX","y","clientY","adaptedEvent","mapEvent","EventTypes","DOWN","target","has","tagName","setPointerCapture","pointerId","markAsInBounds","trackedPointers","add","activePointersCounter","eventType","ADDITIONAL_POINTER_DOWN","onPointerAdd","onPointerDown","UP","releasePointerCapture","markAsOutOfBounds","delete","ADDITIONAL_POINTER_UP","onPointerRemove","onPointerUp","MOVE","hasPointerCapture","inBounds","pointerIndex","pointersInBounds","indexOf","ENTER","onPointerEnter","onPointerMove","LEAVE","onPointerLeave","onPointerOutOfBounds","lastPosition","CANCEL","onPointerCancel","clear","onPointerMoveOver","onPointerMoveOut","mouseButtonsMapper","set","MouseButton","LEFT","MIDDLE","RIGHT","BUTTON_4","BUTTON_5","Infinity","registerListeners","addEventListener","pointerDownCallback","pointerUpCallback","pointerMoveCallback","pointerCancelCallback","pointerEnterCallback","pointerLeaveCallback","lostPointerCaptureCallback","unregisterListeners","removeEventListener","_PointerTypeMapping$g","rect","getBoundingClientRect","scaleX","scaleY","calculateViewScale","offsetX","left","offsetY","top","pointerType","PointerTypeMapping","get","PointerType","OTHER","button","time","timeStamp","stylusData","tryExtractStylusData","resetManager","exports"],"sources":["PointerEventManager.ts"],"sourcesContent":["import EventManager from './EventManager';\nimport { MouseButton } from '../../handlers/gestureHandlerCommon';\nimport { AdaptedEvent, EventTypes, Point } from '../interfaces';\nimport {\n PointerTypeMapping,\n calculateViewScale,\n tryExtractStylusData,\n isPointerInBounds,\n} from '../utils';\nimport { PointerType } from '../../PointerType';\n\nconst POINTER_CAPTURE_EXCLUDE_LIST = new Set<string>(['SELECT', 'INPUT']);\n\nexport default class PointerEventManager extends EventManager<HTMLElement> {\n private trackedPointers = new Set<number>();\n private readonly mouseButtonsMapper = new Map<number, MouseButton>();\n private lastPosition: Point;\n\n constructor(view: HTMLElement) {\n super(view);\n\n this.mouseButtonsMapper.set(0, MouseButton.LEFT);\n this.mouseButtonsMapper.set(1, MouseButton.MIDDLE);\n this.mouseButtonsMapper.set(2, MouseButton.RIGHT);\n this.mouseButtonsMapper.set(3, MouseButton.BUTTON_4);\n this.mouseButtonsMapper.set(4, MouseButton.BUTTON_5);\n\n this.lastPosition = {\n x: -Infinity,\n y: -Infinity,\n };\n }\n\n private pointerDownCallback = (event: PointerEvent) => {\n if (!isPointerInBounds(this.view, { x: event.clientX, y: event.clientY })) {\n return;\n }\n\n const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.DOWN);\n const target = event.target as HTMLElement;\n\n if (!POINTER_CAPTURE_EXCLUDE_LIST.has(target.tagName)) {\n target.setPointerCapture(adaptedEvent.pointerId);\n }\n\n this.markAsInBounds(adaptedEvent.pointerId);\n this.trackedPointers.add(adaptedEvent.pointerId);\n\n if (++this.activePointersCounter > 1) {\n adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_DOWN;\n this.onPointerAdd(adaptedEvent);\n } else {\n this.onPointerDown(adaptedEvent);\n }\n };\n\n private pointerUpCallback = (event: PointerEvent) => {\n // When we call reset on gesture handlers, it also resets their event managers\n // In some handlers (like RotationGestureHandler) reset is called before all pointers leave view\n // This means, that activePointersCounter will be set to 0, while there are still remaining pointers on view\n // Removing them will end in activePointersCounter going below 0, therefore handlers won't behave properly\n if (this.activePointersCounter === 0) {\n return;\n }\n\n const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.UP);\n const target = event.target as HTMLElement;\n\n if (!POINTER_CAPTURE_EXCLUDE_LIST.has(target.tagName)) {\n target.releasePointerCapture(adaptedEvent.pointerId);\n }\n\n this.markAsOutOfBounds(adaptedEvent.pointerId);\n this.trackedPointers.delete(adaptedEvent.pointerId);\n\n if (--this.activePointersCounter > 0) {\n adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_UP;\n this.onPointerRemove(adaptedEvent);\n } else {\n this.onPointerUp(adaptedEvent);\n }\n };\n\n private pointerMoveCallback = (event: PointerEvent) => {\n const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.MOVE);\n const target = event.target as HTMLElement;\n\n // You may be wondering why are we setting pointer capture here, when we\n // already set it in `pointerdown` handler. Well, that's a great question,\n // for which I don't have an answer. Specification (https://www.w3.org/TR/pointerevents2/#dom-element-setpointercapture)\n // says that the requirement for `setPointerCapture` to work is that pointer\n // must be in 'active buttons state`, otherwise it will fail silently, which\n // is lovely. Obviously, when `pointerdown` is fired, one of the buttons\n // (when using mouse) is pressed, but that doesn't mean that `setPointerCapture`\n // will succeed, for some reason. Since it fails silently, we don't actually know\n // if it worked or not (there's `gotpointercapture` event, but the complexity of\n // incorporating it here seems stupid), so we just call it again here, every time\n // pointer moves until it succeeds.\n // God, I do love web development.\n if (\n !target.hasPointerCapture(event.pointerId) &&\n !POINTER_CAPTURE_EXCLUDE_LIST.has(target.tagName)\n ) {\n target.setPointerCapture(event.pointerId);\n }\n\n const inBounds: boolean = isPointerInBounds(this.view, {\n x: adaptedEvent.x,\n y: adaptedEvent.y,\n });\n\n const pointerIndex: number = this.pointersInBounds.indexOf(\n adaptedEvent.pointerId\n );\n\n if (inBounds) {\n if (pointerIndex < 0) {\n adaptedEvent.eventType = EventTypes.ENTER;\n this.onPointerEnter(adaptedEvent);\n this.markAsInBounds(adaptedEvent.pointerId);\n } else {\n this.onPointerMove(adaptedEvent);\n }\n } else {\n if (pointerIndex >= 0) {\n adaptedEvent.eventType = EventTypes.LEAVE;\n this.onPointerLeave(adaptedEvent);\n this.markAsOutOfBounds(adaptedEvent.pointerId);\n } else {\n this.onPointerOutOfBounds(adaptedEvent);\n }\n }\n\n this.lastPosition.x = event.x;\n this.lastPosition.y = event.y;\n };\n\n private pointerCancelCallback = (event: PointerEvent) => {\n const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.CANCEL);\n\n this.onPointerCancel(adaptedEvent);\n this.markAsOutOfBounds(adaptedEvent.pointerId);\n this.activePointersCounter = 0;\n this.trackedPointers.clear();\n };\n\n private pointerEnterCallback = (event: PointerEvent) => {\n const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.ENTER);\n\n this.onPointerMoveOver(adaptedEvent);\n };\n\n private pointerLeaveCallback = (event: PointerEvent) => {\n const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.LEAVE);\n\n this.onPointerMoveOut(adaptedEvent);\n };\n\n private lostPointerCaptureCallback = (event: PointerEvent) => {\n const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.CANCEL);\n\n if (this.trackedPointers.has(adaptedEvent.pointerId)) {\n // In some cases the `pointerup` event is not fired, but `lostpointercapture` is.\n // Here we simulate the `pointercancel` event to make sure the gesture handler stops tracking it.\n this.onPointerCancel(adaptedEvent);\n\n this.activePointersCounter = 0;\n this.trackedPointers.clear();\n }\n };\n\n public registerListeners(): void {\n this.view.addEventListener('pointerdown', this.pointerDownCallback);\n this.view.addEventListener('pointerup', this.pointerUpCallback);\n this.view.addEventListener('pointermove', this.pointerMoveCallback);\n this.view.addEventListener('pointercancel', this.pointerCancelCallback);\n\n // onPointerEnter and onPointerLeave are triggered by a custom logic responsible for\n // handling shouldCancelWhenOutside flag, and are unreliable unless the pointer is down.\n // We therefore use pointerenter and pointerleave events to handle the hover gesture,\n // mapping them to onPointerMoveOver and onPointerMoveOut respectively.\n this.view.addEventListener('pointerenter', this.pointerEnterCallback);\n this.view.addEventListener('pointerleave', this.pointerLeaveCallback);\n this.view.addEventListener(\n 'lostpointercapture',\n this.lostPointerCaptureCallback\n );\n }\n\n public unregisterListeners(): void {\n this.view.removeEventListener('pointerdown', this.pointerDownCallback);\n this.view.removeEventListener('pointerup', this.pointerUpCallback);\n this.view.removeEventListener('pointermove', this.pointerMoveCallback);\n this.view.removeEventListener('pointercancel', this.pointerCancelCallback);\n this.view.removeEventListener('pointerenter', this.pointerEnterCallback);\n this.view.removeEventListener('pointerleave', this.pointerLeaveCallback);\n this.view.removeEventListener(\n 'lostpointercapture',\n this.lostPointerCaptureCallback\n );\n }\n\n protected mapEvent(event: PointerEvent, eventType: EventTypes): AdaptedEvent {\n const rect = this.view.getBoundingClientRect();\n const { scaleX, scaleY } = calculateViewScale(this.view);\n\n return {\n x: event.clientX,\n y: event.clientY,\n offsetX: (event.clientX - rect.left) / scaleX,\n offsetY: (event.clientY - rect.top) / scaleY,\n pointerId: event.pointerId,\n eventType: eventType,\n pointerType:\n PointerTypeMapping.get(event.pointerType) ?? PointerType.OTHER,\n button: this.mouseButtonsMapper.get(event.button),\n time: event.timeStamp,\n stylusData: tryExtractStylusData(event),\n };\n }\n\n public resetManager(): void {\n super.resetManager();\n this.trackedPointers.clear();\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"sources":["PointerEventManager.ts"],"names":["POINTER_CAPTURE_EXCLUDE_LIST","Set","PointerEventManager","EventManager","constructor","view","Map","event","x","clientX","y","clientY","adaptedEvent","mapEvent","EventTypes","DOWN","target","has","tagName","setPointerCapture","pointerId","markAsInBounds","trackedPointers","add","activePointersCounter","eventType","ADDITIONAL_POINTER_DOWN","onPointerAdd","onPointerDown","UP","releasePointerCapture","markAsOutOfBounds","delete","ADDITIONAL_POINTER_UP","onPointerRemove","onPointerUp","MOVE","hasPointerCapture","inBounds","pointerIndex","pointersInBounds","indexOf","ENTER","onPointerEnter","onPointerMove","LEAVE","onPointerLeave","onPointerOutOfBounds","lastPosition","CANCEL","onPointerCancel","clear","onPointerMoveOver","onPointerMoveOut","mouseButtonsMapper","set","MouseButton","LEFT","MIDDLE","RIGHT","BUTTON_4","BUTTON_5","Infinity","registerListeners","addEventListener","pointerDownCallback","pointerUpCallback","pointerMoveCallback","pointerCancelCallback","pointerEnterCallback","pointerLeaveCallback","lostPointerCaptureCallback","unregisterListeners","removeEventListener","rect","getBoundingClientRect","scaleX","scaleY","offsetX","left","offsetY","top","pointerType","PointerTypeMapping","get","PointerType","OTHER","button","time","timeStamp","stylusData","resetManager"],"mappings":"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","sourcesContent":["import EventManager from './EventManager';\nimport { MouseButton } from '../../handlers/gestureHandlerCommon';\nimport { AdaptedEvent, EventTypes, Point } from '../interfaces';\nimport {\n PointerTypeMapping,\n calculateViewScale,\n tryExtractStylusData,\n isPointerInBounds,\n} from '../utils';\nimport { PointerType } from '../../PointerType';\n\nconst POINTER_CAPTURE_EXCLUDE_LIST = new Set<string>(['SELECT', 'INPUT']);\n\nexport default class PointerEventManager extends EventManager<HTMLElement> {\n private trackedPointers = new Set<number>();\n private readonly mouseButtonsMapper = new Map<number, MouseButton>();\n private lastPosition: Point;\n\n constructor(view: HTMLElement) {\n super(view);\n\n this.mouseButtonsMapper.set(0, MouseButton.LEFT);\n this.mouseButtonsMapper.set(1, MouseButton.MIDDLE);\n this.mouseButtonsMapper.set(2, MouseButton.RIGHT);\n this.mouseButtonsMapper.set(3, MouseButton.BUTTON_4);\n this.mouseButtonsMapper.set(4, MouseButton.BUTTON_5);\n\n this.lastPosition = {\n x: -Infinity,\n y: -Infinity,\n };\n }\n\n private pointerDownCallback = (event: PointerEvent) => {\n if (!isPointerInBounds(this.view, { x: event.clientX, y: event.clientY })) {\n return;\n }\n\n const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.DOWN);\n const target = event.target as HTMLElement;\n\n if (!POINTER_CAPTURE_EXCLUDE_LIST.has(target.tagName)) {\n target.setPointerCapture(adaptedEvent.pointerId);\n }\n\n this.markAsInBounds(adaptedEvent.pointerId);\n this.trackedPointers.add(adaptedEvent.pointerId);\n\n if (++this.activePointersCounter > 1) {\n adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_DOWN;\n this.onPointerAdd(adaptedEvent);\n } else {\n this.onPointerDown(adaptedEvent);\n }\n };\n\n private pointerUpCallback = (event: PointerEvent) => {\n // When we call reset on gesture handlers, it also resets their event managers\n // In some handlers (like RotationGestureHandler) reset is called before all pointers leave view\n // This means, that activePointersCounter will be set to 0, while there are still remaining pointers on view\n // Removing them will end in activePointersCounter going below 0, therefore handlers won't behave properly\n if (this.activePointersCounter === 0) {\n return;\n }\n\n const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.UP);\n const target = event.target as HTMLElement;\n\n if (!POINTER_CAPTURE_EXCLUDE_LIST.has(target.tagName)) {\n target.releasePointerCapture(adaptedEvent.pointerId);\n }\n\n this.markAsOutOfBounds(adaptedEvent.pointerId);\n this.trackedPointers.delete(adaptedEvent.pointerId);\n\n if (--this.activePointersCounter > 0) {\n adaptedEvent.eventType = EventTypes.ADDITIONAL_POINTER_UP;\n this.onPointerRemove(adaptedEvent);\n } else {\n this.onPointerUp(adaptedEvent);\n }\n };\n\n private pointerMoveCallback = (event: PointerEvent) => {\n const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.MOVE);\n const target = event.target as HTMLElement;\n\n // You may be wondering why are we setting pointer capture here, when we\n // already set it in `pointerdown` handler. Well, that's a great question,\n // for which I don't have an answer. Specification (https://www.w3.org/TR/pointerevents2/#dom-element-setpointercapture)\n // says that the requirement for `setPointerCapture` to work is that pointer\n // must be in 'active buttons state`, otherwise it will fail silently, which\n // is lovely. Obviously, when `pointerdown` is fired, one of the buttons\n // (when using mouse) is pressed, but that doesn't mean that `setPointerCapture`\n // will succeed, for some reason. Since it fails silently, we don't actually know\n // if it worked or not (there's `gotpointercapture` event, but the complexity of\n // incorporating it here seems stupid), so we just call it again here, every time\n // pointer moves until it succeeds.\n // God, I do love web development.\n if (\n !target.hasPointerCapture(event.pointerId) &&\n !POINTER_CAPTURE_EXCLUDE_LIST.has(target.tagName)\n ) {\n target.setPointerCapture(event.pointerId);\n }\n\n const inBounds: boolean = isPointerInBounds(this.view, {\n x: adaptedEvent.x,\n y: adaptedEvent.y,\n });\n\n const pointerIndex: number = this.pointersInBounds.indexOf(\n adaptedEvent.pointerId\n );\n\n if (inBounds) {\n if (pointerIndex < 0) {\n adaptedEvent.eventType = EventTypes.ENTER;\n this.onPointerEnter(adaptedEvent);\n this.markAsInBounds(adaptedEvent.pointerId);\n } else {\n this.onPointerMove(adaptedEvent);\n }\n } else {\n if (pointerIndex >= 0) {\n adaptedEvent.eventType = EventTypes.LEAVE;\n this.onPointerLeave(adaptedEvent);\n this.markAsOutOfBounds(adaptedEvent.pointerId);\n } else {\n this.onPointerOutOfBounds(adaptedEvent);\n }\n }\n\n this.lastPosition.x = event.x;\n this.lastPosition.y = event.y;\n };\n\n private pointerCancelCallback = (event: PointerEvent) => {\n const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.CANCEL);\n\n this.onPointerCancel(adaptedEvent);\n this.markAsOutOfBounds(adaptedEvent.pointerId);\n this.activePointersCounter = 0;\n this.trackedPointers.clear();\n };\n\n private pointerEnterCallback = (event: PointerEvent) => {\n const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.ENTER);\n\n this.onPointerMoveOver(adaptedEvent);\n };\n\n private pointerLeaveCallback = (event: PointerEvent) => {\n const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.LEAVE);\n\n this.onPointerMoveOut(adaptedEvent);\n };\n\n private lostPointerCaptureCallback = (event: PointerEvent) => {\n const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.CANCEL);\n\n if (this.trackedPointers.has(adaptedEvent.pointerId)) {\n // In some cases the `pointerup` event is not fired, but `lostpointercapture` is.\n // Here we simulate the `pointercancel` event to make sure the gesture handler stops tracking it.\n this.onPointerCancel(adaptedEvent);\n\n this.activePointersCounter = 0;\n this.trackedPointers.clear();\n }\n };\n\n public registerListeners(): void {\n this.view.addEventListener('pointerdown', this.pointerDownCallback);\n this.view.addEventListener('pointerup', this.pointerUpCallback);\n this.view.addEventListener('pointermove', this.pointerMoveCallback);\n this.view.addEventListener('pointercancel', this.pointerCancelCallback);\n\n // onPointerEnter and onPointerLeave are triggered by a custom logic responsible for\n // handling shouldCancelWhenOutside flag, and are unreliable unless the pointer is down.\n // We therefore use pointerenter and pointerleave events to handle the hover gesture,\n // mapping them to onPointerMoveOver and onPointerMoveOut respectively.\n this.view.addEventListener('pointerenter', this.pointerEnterCallback);\n this.view.addEventListener('pointerleave', this.pointerLeaveCallback);\n this.view.addEventListener(\n 'lostpointercapture',\n this.lostPointerCaptureCallback\n );\n }\n\n public unregisterListeners(): void {\n this.view.removeEventListener('pointerdown', this.pointerDownCallback);\n this.view.removeEventListener('pointerup', this.pointerUpCallback);\n this.view.removeEventListener('pointermove', this.pointerMoveCallback);\n this.view.removeEventListener('pointercancel', this.pointerCancelCallback);\n this.view.removeEventListener('pointerenter', this.pointerEnterCallback);\n this.view.removeEventListener('pointerleave', this.pointerLeaveCallback);\n this.view.removeEventListener(\n 'lostpointercapture',\n this.lostPointerCaptureCallback\n );\n }\n\n protected mapEvent(event: PointerEvent, eventType: EventTypes): AdaptedEvent {\n const rect = this.view.getBoundingClientRect();\n const { scaleX, scaleY } = calculateViewScale(this.view);\n\n return {\n x: event.clientX,\n y: event.clientY,\n offsetX: (event.clientX - rect.left) / scaleX,\n offsetY: (event.clientY - rect.top) / scaleY,\n pointerId: event.pointerId,\n eventType: eventType,\n pointerType:\n PointerTypeMapping.get(event.pointerType) ?? PointerType.OTHER,\n button: this.mouseButtonsMapper.get(event.button),\n time: event.timeStamp,\n stylusData: tryExtractStylusData(event),\n };\n }\n\n public resetManager(): void {\n super.resetManager();\n this.trackedPointers.clear();\n }\n}\n"]}
|