react-native-gesture-handler 2.27.1 → 2.27.2
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/ReanimatedSwipeable/package.json +4 -4
- package/android/build.gradle +8 -1
- package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt +14 -8
- package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt +10 -5
- package/apple/RNGestureHandler.h +4 -0
- package/apple/RNGestureHandler.mm +41 -6
- package/jestSetup.js +22 -3
- package/lib/commonjs/components/Pressable/Pressable.js +12 -21
- package/lib/commonjs/components/Pressable/Pressable.js.map +1 -1
- package/lib/commonjs/components/Pressable/StateMachine.js +8 -2
- package/lib/commonjs/components/Pressable/StateMachine.js.map +1 -1
- package/lib/commonjs/components/Pressable/stateDefinitions.js +22 -23
- package/lib/commonjs/components/Pressable/stateDefinitions.js.map +1 -1
- package/lib/commonjs/components/{ReanimatedSwipeable.js → ReanimatedSwipeable/ReanimatedSwipeable.js} +30 -39
- package/lib/commonjs/components/ReanimatedSwipeable/ReanimatedSwipeable.js.map +1 -0
- package/lib/commonjs/components/ReanimatedSwipeable/ReanimatedSwipeableProps.js +12 -0
- package/lib/commonjs/components/ReanimatedSwipeable/ReanimatedSwipeableProps.js.map +1 -0
- package/lib/commonjs/components/ReanimatedSwipeable/index.js +21 -0
- package/lib/commonjs/components/ReanimatedSwipeable/index.js.map +1 -0
- package/lib/commonjs/mocks/Pressable.js +13 -0
- package/lib/commonjs/mocks/Pressable.js.map +1 -0
- package/lib/commonjs/{mocks.js → mocks/mocks.js} +8 -11
- package/lib/commonjs/mocks/mocks.js.map +1 -0
- package/lib/commonjs/web/handlers/GestureHandler.js +1 -0
- package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
- package/lib/module/components/Pressable/Pressable.js +14 -23
- package/lib/module/components/Pressable/Pressable.js.map +1 -1
- package/lib/module/components/Pressable/StateMachine.js +8 -2
- package/lib/module/components/Pressable/StateMachine.js.map +1 -1
- package/lib/module/components/Pressable/stateDefinitions.js +21 -22
- package/lib/module/components/Pressable/stateDefinitions.js.map +1 -1
- package/lib/module/components/{ReanimatedSwipeable.js → ReanimatedSwipeable/ReanimatedSwipeable.js} +24 -33
- package/lib/module/components/ReanimatedSwipeable/ReanimatedSwipeable.js.map +1 -0
- package/lib/module/components/ReanimatedSwipeable/ReanimatedSwipeableProps.js +8 -0
- package/lib/module/components/ReanimatedSwipeable/ReanimatedSwipeableProps.js.map +1 -0
- package/lib/module/components/ReanimatedSwipeable/index.js +5 -0
- package/lib/module/components/ReanimatedSwipeable/index.js.map +1 -0
- package/lib/module/mocks/Pressable.js +4 -0
- package/lib/module/mocks/Pressable.js.map +1 -0
- package/lib/module/{mocks.js → mocks/mocks.js} +7 -11
- package/lib/module/mocks/mocks.js.map +1 -0
- package/lib/module/web/handlers/GestureHandler.js +1 -0
- package/lib/module/web/handlers/GestureHandler.js.map +1 -1
- package/lib/typescript/ActionType.d.ts +1 -0
- package/lib/typescript/Directions.d.ts +1 -0
- package/lib/typescript/EnableNewWebImplementation.d.ts +1 -0
- package/lib/typescript/GestureHandlerRootViewContext.d.ts +1 -0
- package/lib/typescript/PlatformConstants.d.ts +1 -0
- package/lib/typescript/PlatformConstants.web.d.ts +1 -0
- package/lib/typescript/PointerType.d.ts +1 -0
- package/lib/typescript/RNGestureHandlerModule.d.ts +1 -0
- package/lib/typescript/RNGestureHandlerModule.web.d.ts +1 -0
- package/lib/typescript/RNGestureHandlerModule.windows.d.ts +1 -0
- package/lib/typescript/RNRenderer.d.ts +1 -0
- package/lib/typescript/RNRenderer.web.d.ts +1 -0
- package/lib/typescript/State.d.ts +1 -0
- package/lib/typescript/TouchEventType.d.ts +1 -0
- package/lib/typescript/components/DrawerLayout.d.ts +1 -0
- package/lib/typescript/components/GestureButtons.d.ts +1 -0
- package/lib/typescript/components/GestureButtonsProps.d.ts +10 -1
- package/lib/typescript/components/GestureButtonsProps.d.ts.map +1 -1
- package/lib/typescript/components/GestureComponents.d.ts +1 -0
- package/lib/typescript/components/GestureComponents.web.d.ts +1 -0
- package/lib/typescript/components/GestureHandlerButton.d.ts +1 -0
- package/lib/typescript/components/GestureHandlerButton.web.d.ts +1 -0
- package/lib/typescript/components/GestureHandlerRootView.android.d.ts +1 -0
- package/lib/typescript/components/GestureHandlerRootView.d.ts +1 -0
- package/lib/typescript/components/GestureHandlerRootView.web.d.ts +1 -0
- package/lib/typescript/components/Pressable/Pressable.d.ts +1 -0
- package/lib/typescript/components/Pressable/Pressable.d.ts.map +1 -1
- package/lib/typescript/components/Pressable/PressableProps.d.ts +3 -4
- package/lib/typescript/components/Pressable/PressableProps.d.ts.map +1 -1
- package/lib/typescript/components/Pressable/StateMachine.d.ts +4 -2
- package/lib/typescript/components/Pressable/StateMachine.d.ts.map +1 -1
- package/lib/typescript/components/Pressable/index.d.ts +1 -0
- package/lib/typescript/components/Pressable/stateDefinitions.d.ts +3 -2
- package/lib/typescript/components/Pressable/stateDefinitions.d.ts.map +1 -1
- package/lib/typescript/components/Pressable/utils.d.ts +1 -0
- package/lib/typescript/components/ReanimatedDrawerLayout.d.ts +1 -0
- package/lib/typescript/components/ReanimatedSwipeable/ReanimatedSwipeable.d.ts +6 -0
- package/lib/typescript/components/ReanimatedSwipeable/ReanimatedSwipeable.d.ts.map +1 -0
- package/lib/typescript/components/{ReanimatedSwipeable.d.ts → ReanimatedSwipeable/ReanimatedSwipeableProps.d.ts} +10 -7
- package/lib/typescript/components/ReanimatedSwipeable/ReanimatedSwipeableProps.d.ts.map +1 -0
- package/lib/typescript/components/ReanimatedSwipeable/index.d.ts +3 -0
- package/lib/typescript/components/ReanimatedSwipeable/index.d.ts.map +1 -0
- package/lib/typescript/components/Swipeable.d.ts +1 -0
- package/lib/typescript/components/Text.d.ts +1 -0
- package/lib/typescript/components/gestureHandlerRootHOC.d.ts +1 -0
- package/lib/typescript/components/touchables/ExtraButtonProps.d.ts +1 -0
- package/lib/typescript/components/touchables/GenericTouchable.d.ts +1 -0
- package/lib/typescript/components/touchables/GenericTouchableProps.d.ts +1 -0
- package/lib/typescript/components/touchables/TouchableHighlight.d.ts +1 -0
- package/lib/typescript/components/touchables/TouchableNativeFeedback.android.d.ts +1 -0
- package/lib/typescript/components/touchables/TouchableNativeFeedback.d.ts +1 -0
- package/lib/typescript/components/touchables/TouchableNativeFeedbackProps.d.ts +1 -0
- package/lib/typescript/components/touchables/TouchableOpacity.d.ts +1 -0
- package/lib/typescript/components/touchables/TouchableWithoutFeedback.d.ts +1 -0
- package/lib/typescript/components/touchables/index.d.ts +1 -0
- package/lib/typescript/components/utils.d.ts +1 -0
- package/lib/typescript/findNodeHandle.d.ts +1 -0
- package/lib/typescript/findNodeHandle.web.d.ts +1 -0
- package/lib/typescript/getShadowNodeFromRef.d.ts +1 -0
- package/lib/typescript/getShadowNodeFromRef.web.d.ts +1 -0
- package/lib/typescript/ghQueueMicrotask.d.ts +1 -0
- package/lib/typescript/handlers/FlingGestureHandler.d.ts +1 -0
- package/lib/typescript/handlers/ForceTouchGestureHandler.d.ts +1 -0
- package/lib/typescript/handlers/GestureHandlerEventPayload.d.ts +1 -0
- package/lib/typescript/handlers/LongPressGestureHandler.d.ts +1 -0
- package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +1 -0
- package/lib/typescript/handlers/PanGestureHandler.d.ts +1 -0
- package/lib/typescript/handlers/PinchGestureHandler.d.ts +1 -0
- package/lib/typescript/handlers/PressabilityDebugView.d.ts +1 -0
- package/lib/typescript/handlers/PressabilityDebugView.web.d.ts +1 -0
- package/lib/typescript/handlers/RotationGestureHandler.d.ts +1 -0
- package/lib/typescript/handlers/TapGestureHandler.d.ts +1 -0
- package/lib/typescript/handlers/createHandler.d.ts +1 -0
- package/lib/typescript/handlers/createNativeWrapper.d.ts +1 -0
- package/lib/typescript/handlers/customDirectEventTypes.d.ts +1 -0
- package/lib/typescript/handlers/customDirectEventTypes.web.d.ts +1 -0
- package/lib/typescript/handlers/gestureHandlerCommon.d.ts +1 -0
- package/lib/typescript/handlers/gestureHandlerTypesCompat.d.ts +1 -0
- package/lib/typescript/handlers/gestures/GestureDetector/Wrap.d.ts +1 -0
- package/lib/typescript/handlers/gestures/GestureDetector/Wrap.web.d.ts +1 -0
- package/lib/typescript/handlers/gestures/GestureDetector/attachHandlers.d.ts +1 -0
- package/lib/typescript/handlers/gestures/GestureDetector/dropHandlers.d.ts +1 -0
- package/lib/typescript/handlers/gestures/GestureDetector/index.d.ts +1 -0
- package/lib/typescript/handlers/gestures/GestureDetector/needsToReattach.d.ts +1 -0
- package/lib/typescript/handlers/gestures/GestureDetector/types.d.ts +1 -0
- package/lib/typescript/handlers/gestures/GestureDetector/updateHandlers.d.ts +1 -0
- package/lib/typescript/handlers/gestures/GestureDetector/useAnimatedGesture.d.ts +1 -0
- package/lib/typescript/handlers/gestures/GestureDetector/useDetectorUpdater.d.ts +1 -0
- package/lib/typescript/handlers/gestures/GestureDetector/useMountReactions.d.ts +1 -0
- package/lib/typescript/handlers/gestures/GestureDetector/useViewRefHandler.d.ts +1 -0
- package/lib/typescript/handlers/gestures/GestureDetector/utils.d.ts +1 -0
- package/lib/typescript/handlers/gestures/eventReceiver.d.ts +1 -0
- package/lib/typescript/handlers/gestures/flingGesture.d.ts +1 -0
- package/lib/typescript/handlers/gestures/forceTouchGesture.d.ts +1 -0
- package/lib/typescript/handlers/gestures/gesture.d.ts +1 -0
- package/lib/typescript/handlers/gestures/gestureComposition.d.ts +1 -0
- package/lib/typescript/handlers/gestures/gestureObjects.d.ts +1 -0
- package/lib/typescript/handlers/gestures/gestureStateManager.d.ts +1 -0
- package/lib/typescript/handlers/gestures/gestureStateManager.web.d.ts +1 -0
- package/lib/typescript/handlers/gestures/hoverGesture.d.ts +1 -0
- package/lib/typescript/handlers/gestures/longPressGesture.d.ts +1 -0
- package/lib/typescript/handlers/gestures/manualGesture.d.ts +1 -0
- package/lib/typescript/handlers/gestures/nativeGesture.d.ts +1 -0
- package/lib/typescript/handlers/gestures/panGesture.d.ts +1 -0
- package/lib/typescript/handlers/gestures/pinchGesture.d.ts +1 -0
- package/lib/typescript/handlers/gestures/reanimatedWrapper.d.ts +1 -0
- package/lib/typescript/handlers/gestures/rotationGesture.d.ts +1 -0
- package/lib/typescript/handlers/gestures/tapGesture.d.ts +1 -0
- package/lib/typescript/handlers/getNextHandlerTag.d.ts +1 -0
- package/lib/typescript/handlers/handlersRegistry.d.ts +1 -0
- package/lib/typescript/handlers/utils.d.ts +1 -0
- package/lib/typescript/index.d.ts +1 -0
- package/lib/typescript/init.d.ts +1 -0
- package/lib/typescript/jestUtils/index.d.ts +1 -0
- package/lib/typescript/jestUtils/jestUtils.d.ts +1 -0
- package/lib/typescript/mocks/Pressable.d.ts +2 -0
- package/lib/typescript/mocks/Pressable.d.ts.map +1 -0
- package/lib/typescript/{mocks.d.ts → mocks/mocks.d.ts} +5 -4
- package/lib/typescript/mocks/mocks.d.ts.map +1 -0
- package/lib/typescript/mountRegistry.d.ts +1 -0
- package/lib/typescript/specs/NativeRNGestureHandlerModule.d.ts +1 -0
- package/lib/typescript/specs/RNGestureHandlerButtonNativeComponent.d.ts +1 -0
- package/lib/typescript/specs/RNGestureHandlerRootViewNativeComponent.d.ts +1 -0
- package/lib/typescript/typeUtils.d.ts +1 -0
- package/lib/typescript/utils.d.ts +1 -0
- package/lib/typescript/web/Gestures.d.ts +1 -0
- package/lib/typescript/web/constants.d.ts +1 -0
- package/lib/typescript/web/detectors/RotationGestureDetector.d.ts +1 -0
- package/lib/typescript/web/detectors/ScaleGestureDetector.d.ts +1 -0
- package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +1 -0
- package/lib/typescript/web/handlers/GestureHandler.d.ts +1 -0
- package/lib/typescript/web/handlers/GestureHandler.d.ts.map +1 -1
- package/lib/typescript/web/handlers/HoverGestureHandler.d.ts +1 -0
- package/lib/typescript/web/handlers/IGestureHandler.d.ts +1 -0
- package/lib/typescript/web/handlers/LongPressGestureHandler.d.ts +1 -0
- package/lib/typescript/web/handlers/ManualGestureHandler.d.ts +1 -0
- package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts +1 -0
- package/lib/typescript/web/handlers/PanGestureHandler.d.ts +1 -0
- package/lib/typescript/web/handlers/PinchGestureHandler.d.ts +1 -0
- package/lib/typescript/web/handlers/RotationGestureHandler.d.ts +1 -0
- package/lib/typescript/web/handlers/TapGestureHandler.d.ts +1 -0
- package/lib/typescript/web/interfaces.d.ts +1 -0
- package/lib/typescript/web/tools/CircularBuffer.d.ts +1 -0
- package/lib/typescript/web/tools/EventManager.d.ts +1 -0
- package/lib/typescript/web/tools/GestureHandlerDelegate.d.ts +1 -0
- package/lib/typescript/web/tools/GestureHandlerOrchestrator.d.ts +1 -0
- package/lib/typescript/web/tools/GestureHandlerWebDelegate.d.ts +1 -0
- package/lib/typescript/web/tools/InteractionManager.d.ts +1 -0
- package/lib/typescript/web/tools/KeyboardEventManager.d.ts +1 -0
- package/lib/typescript/web/tools/LeastSquareSolver.d.ts +1 -0
- package/lib/typescript/web/tools/NodeManager.d.ts +1 -0
- package/lib/typescript/web/tools/PointerEventManager.d.ts +1 -0
- package/lib/typescript/web/tools/PointerTracker.d.ts +1 -0
- package/lib/typescript/web/tools/Vector.d.ts +1 -0
- package/lib/typescript/web/tools/VelocityTracker.d.ts +1 -0
- package/lib/typescript/web/tools/WheelEventManager.d.ts +1 -0
- package/lib/typescript/web/utils.d.ts +1 -0
- package/lib/typescript/web_hammer/DiscreteGestureHandler.d.ts +1 -0
- package/lib/typescript/web_hammer/DraggingGestureHandler.d.ts +1 -0
- package/lib/typescript/web_hammer/Errors.d.ts +1 -0
- package/lib/typescript/web_hammer/FlingGestureHandler.d.ts +1 -0
- package/lib/typescript/web_hammer/GestureHandler.d.ts +1 -0
- package/lib/typescript/web_hammer/IndiscreteGestureHandler.d.ts +1 -0
- package/lib/typescript/web_hammer/LongPressGestureHandler.d.ts +1 -0
- package/lib/typescript/web_hammer/NativeViewGestureHandler.d.ts +1 -0
- package/lib/typescript/web_hammer/NodeManager.d.ts +1 -0
- package/lib/typescript/web_hammer/PanGestureHandler.d.ts +1 -0
- package/lib/typescript/web_hammer/PinchGestureHandler.d.ts +1 -0
- package/lib/typescript/web_hammer/PressGestureHandler.d.ts +1 -0
- package/lib/typescript/web_hammer/RotationGestureHandler.d.ts +1 -0
- package/lib/typescript/web_hammer/TapGestureHandler.d.ts +1 -0
- package/lib/typescript/web_hammer/constants.d.ts +1 -0
- package/lib/typescript/web_hammer/utils.d.ts +1 -0
- package/package.json +1 -1
- package/src/components/GestureButtonsProps.ts +10 -0
- package/src/components/Pressable/Pressable.tsx +20 -31
- package/src/components/Pressable/PressableProps.tsx +2 -4
- package/src/components/Pressable/StateMachine.tsx +12 -4
- package/src/components/Pressable/stateDefinitions.ts +23 -23
- package/src/components/ReanimatedSwipeable/ReanimatedSwipeable.tsx +603 -0
- package/src/components/ReanimatedSwipeable/ReanimatedSwipeableProps.ts +199 -0
- package/src/components/ReanimatedSwipeable/index.ts +6 -0
- package/src/mocks/Pressable.tsx +1 -0
- package/src/{mocks.tsx → mocks/mocks.tsx} +7 -11
- package/src/web/handlers/GestureHandler.ts +1 -0
- package/lib/commonjs/components/ReanimatedSwipeable.js.map +0 -1
- package/lib/commonjs/mocks.js.map +0 -1
- package/lib/module/components/ReanimatedSwipeable.js.map +0 -1
- package/lib/module/mocks.js.map +0 -1
- package/lib/typescript/ActionType.js +0 -6
- package/lib/typescript/Directions.js +0 -18
- package/lib/typescript/EnableNewWebImplementation.js +0 -30
- package/lib/typescript/GestureHandlerRootViewContext.js +0 -2
- package/lib/typescript/PlatformConstants.js +0 -3
- package/lib/typescript/PlatformConstants.web.js +0 -5
- package/lib/typescript/PointerType.js +0 -8
- package/lib/typescript/RNGestureHandlerModule.js +0 -4
- package/lib/typescript/RNGestureHandlerModule.web.js +0 -92
- package/lib/typescript/RNGestureHandlerModule.windows.js +0 -47
- package/lib/typescript/RNRenderer.js +0 -3
- package/lib/typescript/RNRenderer.web.js +0 -3
- package/lib/typescript/State.js +0 -9
- package/lib/typescript/TouchEventType.js +0 -7
- package/lib/typescript/components/DrawerLayout.js +0 -417
- package/lib/typescript/components/GestureButtons.js +0 -165
- package/lib/typescript/components/GestureButtonsProps.js +0 -1
- package/lib/typescript/components/GestureComponents.js +0 -67
- package/lib/typescript/components/GestureComponents.web.js +0 -21
- package/lib/typescript/components/GestureHandlerButton.js +0 -2
- package/lib/typescript/components/GestureHandlerButton.web.js +0 -3
- package/lib/typescript/components/GestureHandlerRootView.android.js +0 -17
- package/lib/typescript/components/GestureHandlerRootView.js +0 -16
- package/lib/typescript/components/GestureHandlerRootView.web.js +0 -11
- package/lib/typescript/components/Pressable/Pressable.js +0 -231
- package/lib/typescript/components/Pressable/PressableProps.js +0 -1
- package/lib/typescript/components/Pressable/StateMachine.js +0 -34
- package/lib/typescript/components/Pressable/index.js +0 -1
- package/lib/typescript/components/Pressable/stateDefinitions.js +0 -104
- package/lib/typescript/components/Pressable/utils.js +0 -80
- package/lib/typescript/components/ReanimatedDrawerLayout.js +0 -364
- package/lib/typescript/components/ReanimatedSwipeable.d.ts.map +0 -1
- package/lib/typescript/components/ReanimatedSwipeable.js +0 -400
- package/lib/typescript/components/Swipeable.js +0 -287
- package/lib/typescript/components/Text.js +0 -38
- package/lib/typescript/components/gestureHandlerRootHOC.js +0 -18
- package/lib/typescript/components/touchables/ExtraButtonProps.js +0 -1
- package/lib/typescript/components/touchables/GenericTouchable.js +0 -221
- package/lib/typescript/components/touchables/GenericTouchableProps.js +0 -1
- package/lib/typescript/components/touchables/TouchableHighlight.js +0 -75
- package/lib/typescript/components/touchables/TouchableNativeFeedback.android.js +0 -65
- package/lib/typescript/components/touchables/TouchableNativeFeedback.js +0 -6
- package/lib/typescript/components/touchables/TouchableNativeFeedbackProps.js +0 -1
- package/lib/typescript/components/touchables/TouchableOpacity.js +0 -51
- package/lib/typescript/components/touchables/TouchableWithoutFeedback.js +0 -10
- package/lib/typescript/components/touchables/index.js +0 -4
- package/lib/typescript/components/utils.js +0 -11
- package/lib/typescript/findNodeHandle.js +0 -2
- package/lib/typescript/findNodeHandle.web.js +0 -31
- package/lib/typescript/getShadowNodeFromRef.js +0 -45
- package/lib/typescript/getShadowNodeFromRef.web.js +0 -7
- package/lib/typescript/ghQueueMicrotask.js +0 -7
- package/lib/typescript/handlers/FlingGestureHandler.js +0 -19
- package/lib/typescript/handlers/ForceTouchGestureHandler.js +0 -37
- package/lib/typescript/handlers/GestureHandlerEventPayload.js +0 -1
- package/lib/typescript/handlers/LongPressGestureHandler.js +0 -22
- package/lib/typescript/handlers/NativeViewGestureHandler.js +0 -20
- package/lib/typescript/handlers/PanGestureHandler.js +0 -128
- package/lib/typescript/handlers/PinchGestureHandler.js +0 -12
- package/lib/typescript/handlers/PressabilityDebugView.js +0 -2
- package/lib/typescript/handlers/PressabilityDebugView.web.js +0 -4
- package/lib/typescript/handlers/RotationGestureHandler.js +0 -12
- package/lib/typescript/handlers/TapGestureHandler.js +0 -26
- package/lib/typescript/handlers/createHandler.js +0 -375
- package/lib/typescript/handlers/createNativeWrapper.js +0 -67
- package/lib/typescript/handlers/customDirectEventTypes.js +0 -2
- package/lib/typescript/handlers/customDirectEventTypes.web.js +0 -4
- package/lib/typescript/handlers/gestureHandlerCommon.js +0 -42
- package/lib/typescript/handlers/gestureHandlerTypesCompat.js +0 -1
- package/lib/typescript/handlers/gestures/GestureDetector/Wrap.js +0 -22
- package/lib/typescript/handlers/gestures/GestureDetector/Wrap.web.js +0 -24
- package/lib/typescript/handlers/gestures/GestureDetector/attachHandlers.js +0 -55
- package/lib/typescript/handlers/gestures/GestureDetector/dropHandlers.js +0 -12
- package/lib/typescript/handlers/gestures/GestureDetector/index.js +0 -114
- package/lib/typescript/handlers/gestures/GestureDetector/needsToReattach.js +0 -18
- package/lib/typescript/handlers/gestures/GestureDetector/types.js +0 -1
- package/lib/typescript/handlers/gestures/GestureDetector/updateHandlers.js +0 -54
- package/lib/typescript/handlers/gestures/GestureDetector/useAnimatedGesture.js +0 -137
- package/lib/typescript/handlers/gestures/GestureDetector/useDetectorUpdater.js +0 -48
- package/lib/typescript/handlers/gestures/GestureDetector/useMountReactions.js +0 -35
- package/lib/typescript/handlers/gestures/GestureDetector/useViewRefHandler.js +0 -32
- package/lib/typescript/handlers/gestures/GestureDetector/utils.js +0 -140
- package/lib/typescript/handlers/gestures/eventReceiver.js +0 -105
- package/lib/typescript/handlers/gestures/flingGesture.js +0 -27
- package/lib/typescript/handlers/gestures/forceTouchGesture.js +0 -57
- package/lib/typescript/handlers/gestures/gesture.js +0 -303
- package/lib/typescript/handlers/gestures/gestureComposition.js +0 -78
- package/lib/typescript/handlers/gestures/gestureObjects.js +0 -125
- package/lib/typescript/handlers/gestures/gestureStateManager.js +0 -60
- package/lib/typescript/handlers/gestures/gestureStateManager.web.js +0 -19
- package/lib/typescript/handlers/gestures/hoverGesture.js +0 -45
- package/lib/typescript/handlers/gestures/longPressGesture.js +0 -35
- package/lib/typescript/handlers/gestures/manualGesture.js +0 -16
- package/lib/typescript/handlers/gestures/nativeGesture.js +0 -24
- package/lib/typescript/handlers/gestures/panGesture.js +0 -181
- package/lib/typescript/handlers/gestures/pinchGesture.js +0 -27
- package/lib/typescript/handlers/gestures/reanimatedWrapper.js +0 -23
- package/lib/typescript/handlers/gestures/rotationGesture.js +0 -27
- package/lib/typescript/handlers/gestures/tapGesture.js +0 -72
- package/lib/typescript/handlers/getNextHandlerTag.js +0 -4
- package/lib/typescript/handlers/handlersRegistry.js +0 -36
- package/lib/typescript/handlers/utils.js +0 -58
- package/lib/typescript/index.js +0 -28
- package/lib/typescript/init.js +0 -15
- package/lib/typescript/jestUtils/index.js +0 -1
- package/lib/typescript/jestUtils/jestUtils.js +0 -290
- package/lib/typescript/mocks.d.ts.map +0 -1
- package/lib/typescript/mocks.js +0 -59
- package/lib/typescript/mountRegistry.js +0 -29
- package/lib/typescript/specs/NativeRNGestureHandlerModule.js +0 -2
- package/lib/typescript/specs/RNGestureHandlerButtonNativeComponent.js +0 -2
- package/lib/typescript/specs/RNGestureHandlerRootViewNativeComponent.js +0 -2
- package/lib/typescript/typeUtils.js +0 -1
- package/lib/typescript/utils.js +0 -80
- package/lib/typescript/web/Gestures.js +0 -38
- package/lib/typescript/web/constants.js +0 -2
- package/lib/typescript/web/detectors/RotationGestureDetector.js +0 -122
- package/lib/typescript/web/detectors/ScaleGestureDetector.js +0 -117
- package/lib/typescript/web/handlers/FlingGestureHandler.js +0 -133
- package/lib/typescript/web/handlers/GestureHandler.js +0 -656
- package/lib/typescript/web/handlers/HoverGestureHandler.js +0 -37
- package/lib/typescript/web/handlers/IGestureHandler.js +0 -1
- package/lib/typescript/web/handlers/LongPressGestureHandler.js +0 -136
- package/lib/typescript/web/handlers/ManualGestureHandler.js +0 -29
- package/lib/typescript/web/handlers/NativeViewGestureHandler.js +0 -133
- package/lib/typescript/web/handlers/PanGestureHandler.js +0 -420
- package/lib/typescript/web/handlers/PinchGestureHandler.js +0 -117
- package/lib/typescript/web/handlers/RotationGestureHandler.js +0 -122
- package/lib/typescript/web/handlers/TapGestureHandler.js +0 -202
- package/lib/typescript/web/interfaces.js +0 -25
- package/lib/typescript/web/tools/CircularBuffer.js +0 -37
- package/lib/typescript/web/tools/EventManager.js +0 -85
- package/lib/typescript/web/tools/GestureHandlerDelegate.js +0 -1
- package/lib/typescript/web/tools/GestureHandlerOrchestrator.js +0 -273
- package/lib/typescript/web/tools/GestureHandlerWebDelegate.js +0 -169
- package/lib/typescript/web/tools/InteractionManager.js +0 -91
- package/lib/typescript/web/tools/KeyboardEventManager.js +0 -73
- package/lib/typescript/web/tools/LeastSquareSolver.js +0 -147
- package/lib/typescript/web/tools/NodeManager.js +0 -28
- package/lib/typescript/web/tools/PointerEventManager.js +0 -179
- package/lib/typescript/web/tools/PointerTracker.js +0 -161
- package/lib/typescript/web/tools/Vector.js +0 -43
- package/lib/typescript/web/tools/VelocityTracker.js +0 -76
- package/lib/typescript/web/tools/WheelEventManager.js +0 -40
- package/lib/typescript/web/utils.js +0 -233
- package/lib/typescript/web_hammer/DiscreteGestureHandler.js +0 -48
- package/lib/typescript/web_hammer/DraggingGestureHandler.js +0 -25
- package/lib/typescript/web_hammer/Errors.js +0 -5
- package/lib/typescript/web_hammer/FlingGestureHandler.js +0 -119
- package/lib/typescript/web_hammer/GestureHandler.js +0 -469
- package/lib/typescript/web_hammer/IndiscreteGestureHandler.js +0 -26
- package/lib/typescript/web_hammer/LongPressGestureHandler.js +0 -46
- package/lib/typescript/web_hammer/NativeViewGestureHandler.js +0 -40
- package/lib/typescript/web_hammer/NodeManager.js +0 -28
- package/lib/typescript/web_hammer/PanGestureHandler.js +0 -151
- package/lib/typescript/web_hammer/PinchGestureHandler.js +0 -19
- package/lib/typescript/web_hammer/PressGestureHandler.js +0 -133
- package/lib/typescript/web_hammer/RotationGestureHandler.js +0 -20
- package/lib/typescript/web_hammer/TapGestureHandler.js +0 -142
- package/lib/typescript/web_hammer/constants.js +0 -42
- package/lib/typescript/web_hammer/utils.js +0 -15
- package/src/components/ReanimatedSwipeable.tsx +0 -811
@@ -1,161 +0,0 @@
|
|
1
|
-
import VelocityTracker from './VelocityTracker';
|
2
|
-
const MAX_POINTERS = 20;
|
3
|
-
export default class PointerTracker {
|
4
|
-
velocityTracker = new VelocityTracker();
|
5
|
-
_trackedPointers = new Map();
|
6
|
-
touchEventsIds = new Map();
|
7
|
-
lastMovedPointerId;
|
8
|
-
cachedAbsoluteAverages = { x: 0, y: 0 };
|
9
|
-
cachedRelativeAverages = { x: 0, y: 0 };
|
10
|
-
constructor() {
|
11
|
-
this.lastMovedPointerId = NaN;
|
12
|
-
for (let i = 0; i < MAX_POINTERS; ++i) {
|
13
|
-
this.touchEventsIds.set(i, NaN);
|
14
|
-
}
|
15
|
-
}
|
16
|
-
addToTracker(event) {
|
17
|
-
if (this.trackedPointers.has(event.pointerId)) {
|
18
|
-
return;
|
19
|
-
}
|
20
|
-
this.lastMovedPointerId = event.pointerId;
|
21
|
-
const newElement = {
|
22
|
-
abosoluteCoords: { x: event.x, y: event.y },
|
23
|
-
relativeCoords: { x: event.offsetX, y: event.offsetY },
|
24
|
-
timestamp: event.time,
|
25
|
-
velocityX: 0,
|
26
|
-
velocityY: 0,
|
27
|
-
};
|
28
|
-
this.trackedPointers.set(event.pointerId, newElement);
|
29
|
-
this.mapTouchEventId(event.pointerId);
|
30
|
-
this.cachedAbsoluteAverages = this.getAbsoluteCoordsAverage();
|
31
|
-
this.cachedRelativeAverages = this.getRelativeCoordsAverage();
|
32
|
-
}
|
33
|
-
removeFromTracker(pointerId) {
|
34
|
-
this.trackedPointers.delete(pointerId);
|
35
|
-
this.removeMappedTouchId(pointerId);
|
36
|
-
}
|
37
|
-
track(event) {
|
38
|
-
const pointerData = this.trackedPointers.get(event.pointerId);
|
39
|
-
if (!pointerData) {
|
40
|
-
return;
|
41
|
-
}
|
42
|
-
this.lastMovedPointerId = event.pointerId;
|
43
|
-
this.velocityTracker.add(event);
|
44
|
-
const [velocityX, velocityY] = this.velocityTracker.velocity;
|
45
|
-
pointerData.velocityX = velocityX;
|
46
|
-
pointerData.velocityY = velocityY;
|
47
|
-
pointerData.abosoluteCoords = { x: event.x, y: event.y };
|
48
|
-
pointerData.relativeCoords = { x: event.offsetX, y: event.offsetY };
|
49
|
-
this.trackedPointers.set(event.pointerId, pointerData);
|
50
|
-
this.cachedAbsoluteAverages = this.getAbsoluteCoordsAverage();
|
51
|
-
this.cachedRelativeAverages = this.getRelativeCoordsAverage();
|
52
|
-
}
|
53
|
-
// Mapping TouchEvents ID
|
54
|
-
mapTouchEventId(id) {
|
55
|
-
for (const [mappedId, touchId] of this.touchEventsIds) {
|
56
|
-
if (isNaN(touchId)) {
|
57
|
-
this.touchEventsIds.set(mappedId, id);
|
58
|
-
break;
|
59
|
-
}
|
60
|
-
}
|
61
|
-
}
|
62
|
-
removeMappedTouchId(id) {
|
63
|
-
const mappedId = this.getMappedTouchEventId(id);
|
64
|
-
if (!isNaN(mappedId)) {
|
65
|
-
this.touchEventsIds.set(mappedId, NaN);
|
66
|
-
}
|
67
|
-
}
|
68
|
-
getMappedTouchEventId(touchEventId) {
|
69
|
-
for (const [key, value] of this.touchEventsIds.entries()) {
|
70
|
-
if (value === touchEventId) {
|
71
|
-
return key;
|
72
|
-
}
|
73
|
-
}
|
74
|
-
return NaN;
|
75
|
-
}
|
76
|
-
getVelocity(pointerId) {
|
77
|
-
const pointerData = this.trackedPointers.get(pointerId);
|
78
|
-
return pointerData
|
79
|
-
? {
|
80
|
-
x: pointerData.velocityX,
|
81
|
-
y: pointerData.velocityY,
|
82
|
-
}
|
83
|
-
: null;
|
84
|
-
}
|
85
|
-
getLastAbsoluteCoords(pointerId) {
|
86
|
-
return this.trackedPointers.get(pointerId ?? this.lastMovedPointerId)
|
87
|
-
?.abosoluteCoords;
|
88
|
-
}
|
89
|
-
getLastRelativeCoords(pointerId) {
|
90
|
-
return this.trackedPointers.get(pointerId ?? this.lastMovedPointerId)
|
91
|
-
?.relativeCoords;
|
92
|
-
}
|
93
|
-
// Some handlers use these methods to send average values in native event.
|
94
|
-
// This may happen when pointers have already been removed from tracker (i.e. pointerup event).
|
95
|
-
// In situation when NaN would be sent as a response, we return cached value.
|
96
|
-
// That prevents handlers from crashing
|
97
|
-
getAbsoluteCoordsAverage() {
|
98
|
-
const coordsSum = this.getAbsoluteCoordsSum();
|
99
|
-
const avgX = coordsSum.x / this.trackedPointers.size;
|
100
|
-
const avgY = coordsSum.y / this.trackedPointers.size;
|
101
|
-
const averages = {
|
102
|
-
x: isNaN(avgX) ? this.cachedAbsoluteAverages.x : avgX,
|
103
|
-
y: isNaN(avgY) ? this.cachedAbsoluteAverages.y : avgY,
|
104
|
-
};
|
105
|
-
return averages;
|
106
|
-
}
|
107
|
-
getRelativeCoordsAverage() {
|
108
|
-
const coordsSum = this.getRelativeCoordsSum();
|
109
|
-
const avgX = coordsSum.x / this.trackedPointers.size;
|
110
|
-
const avgY = coordsSum.y / this.trackedPointers.size;
|
111
|
-
const averages = {
|
112
|
-
x: isNaN(avgX) ? this.cachedRelativeAverages.x : avgX,
|
113
|
-
y: isNaN(avgY) ? this.cachedRelativeAverages.y : avgY,
|
114
|
-
};
|
115
|
-
return averages;
|
116
|
-
}
|
117
|
-
getAbsoluteCoordsSum(ignoredPointer) {
|
118
|
-
const sum = { x: 0, y: 0 };
|
119
|
-
this.trackedPointers.forEach((value, key) => {
|
120
|
-
if (key !== ignoredPointer) {
|
121
|
-
sum.x += value.abosoluteCoords.x;
|
122
|
-
sum.y += value.abosoluteCoords.y;
|
123
|
-
}
|
124
|
-
});
|
125
|
-
return sum;
|
126
|
-
}
|
127
|
-
getRelativeCoordsSum(ignoredPointer) {
|
128
|
-
const sum = { x: 0, y: 0 };
|
129
|
-
this.trackedPointers.forEach((value, key) => {
|
130
|
-
if (key !== ignoredPointer) {
|
131
|
-
sum.x += value.relativeCoords.x;
|
132
|
-
sum.y += value.relativeCoords.y;
|
133
|
-
}
|
134
|
-
});
|
135
|
-
return sum;
|
136
|
-
}
|
137
|
-
resetTracker() {
|
138
|
-
this.velocityTracker.reset();
|
139
|
-
this.trackedPointers.clear();
|
140
|
-
this.lastMovedPointerId = NaN;
|
141
|
-
for (let i = 0; i < MAX_POINTERS; ++i) {
|
142
|
-
this.touchEventsIds.set(i, NaN);
|
143
|
-
}
|
144
|
-
}
|
145
|
-
static shareCommonPointers(stPointers, ndPointers) {
|
146
|
-
return stPointers.some((pointerId) => ndPointers.includes(pointerId));
|
147
|
-
}
|
148
|
-
get trackedPointersCount() {
|
149
|
-
return this.trackedPointers.size;
|
150
|
-
}
|
151
|
-
get trackedPointersIDs() {
|
152
|
-
const keys = [];
|
153
|
-
this.trackedPointers.forEach((_value, key) => {
|
154
|
-
keys.push(key);
|
155
|
-
});
|
156
|
-
return keys;
|
157
|
-
}
|
158
|
-
get trackedPointers() {
|
159
|
-
return this._trackedPointers;
|
160
|
-
}
|
161
|
-
}
|
@@ -1,43 +0,0 @@
|
|
1
|
-
import { DiagonalDirections, Directions } from '../../Directions';
|
2
|
-
import { MINIMAL_RECOGNIZABLE_MAGNITUDE } from '../constants';
|
3
|
-
export default class Vector {
|
4
|
-
x;
|
5
|
-
y;
|
6
|
-
unitX;
|
7
|
-
unitY;
|
8
|
-
_magnitude;
|
9
|
-
constructor(x, y) {
|
10
|
-
this.x = x;
|
11
|
-
this.y = y;
|
12
|
-
this._magnitude = Math.hypot(this.x, this.y);
|
13
|
-
const isMagnitudeSufficient = this._magnitude > MINIMAL_RECOGNIZABLE_MAGNITUDE;
|
14
|
-
this.unitX = isMagnitudeSufficient ? this.x / this._magnitude : 0;
|
15
|
-
this.unitY = isMagnitudeSufficient ? this.y / this._magnitude : 0;
|
16
|
-
}
|
17
|
-
static fromDirection(direction) {
|
18
|
-
return DirectionToVectorMappings.get(direction) ?? new Vector(0, 0);
|
19
|
-
}
|
20
|
-
static fromVelocity(tracker, pointerId) {
|
21
|
-
const velocity = tracker.getVelocity(pointerId);
|
22
|
-
return velocity ? new Vector(velocity.x, velocity.y) : null;
|
23
|
-
}
|
24
|
-
get magnitude() {
|
25
|
-
return this._magnitude;
|
26
|
-
}
|
27
|
-
computeSimilarity(vector) {
|
28
|
-
return this.unitX * vector.unitX + this.unitY * vector.unitY;
|
29
|
-
}
|
30
|
-
isSimilar(vector, threshold) {
|
31
|
-
return this.computeSimilarity(vector) > threshold;
|
32
|
-
}
|
33
|
-
}
|
34
|
-
const DirectionToVectorMappings = new Map([
|
35
|
-
[Directions.LEFT, new Vector(-1, 0)],
|
36
|
-
[Directions.RIGHT, new Vector(1, 0)],
|
37
|
-
[Directions.UP, new Vector(0, -1)],
|
38
|
-
[Directions.DOWN, new Vector(0, 1)],
|
39
|
-
[DiagonalDirections.UP_RIGHT, new Vector(1, -1)],
|
40
|
-
[DiagonalDirections.DOWN_RIGHT, new Vector(1, 1)],
|
41
|
-
[DiagonalDirections.UP_LEFT, new Vector(-1, -1)],
|
42
|
-
[DiagonalDirections.DOWN_LEFT, new Vector(-1, 1)],
|
43
|
-
]);
|
@@ -1,76 +0,0 @@
|
|
1
|
-
import CircularBuffer from './CircularBuffer';
|
2
|
-
import LeastSquareSolver from './LeastSquareSolver';
|
3
|
-
export default class VelocityTracker {
|
4
|
-
assumePointerMoveStoppedMilliseconds = 40;
|
5
|
-
historySize = 20;
|
6
|
-
horizonMilliseconds = 300;
|
7
|
-
minSampleSize = 3;
|
8
|
-
samples;
|
9
|
-
constructor() {
|
10
|
-
this.samples = new CircularBuffer(this.historySize);
|
11
|
-
}
|
12
|
-
add(event) {
|
13
|
-
this.samples.push(event);
|
14
|
-
}
|
15
|
-
// Returns an estimate of the velocity of the object being tracked by the
|
16
|
-
// tracker given the current information available to the tracker.
|
17
|
-
//
|
18
|
-
// Information is added using [addPosition].
|
19
|
-
//
|
20
|
-
// Returns null if there is no data on which to base an estimate.
|
21
|
-
getVelocityEstimate() {
|
22
|
-
const x = [];
|
23
|
-
const y = [];
|
24
|
-
const w = [];
|
25
|
-
const time = [];
|
26
|
-
let sampleCount = 0;
|
27
|
-
let index = this.samples.size - 1;
|
28
|
-
const newestSample = this.samples.get(index);
|
29
|
-
if (!newestSample) {
|
30
|
-
return null;
|
31
|
-
}
|
32
|
-
let previousSample = newestSample;
|
33
|
-
// Starting with the most recent PointAtTime sample, iterate backwards while
|
34
|
-
// the samples represent continuous motion.
|
35
|
-
while (sampleCount < this.samples.size) {
|
36
|
-
const sample = this.samples.get(index);
|
37
|
-
const age = newestSample.time - sample.time;
|
38
|
-
const delta = Math.abs(sample.time - previousSample.time);
|
39
|
-
previousSample = sample;
|
40
|
-
if (age > this.horizonMilliseconds ||
|
41
|
-
delta > this.assumePointerMoveStoppedMilliseconds) {
|
42
|
-
break;
|
43
|
-
}
|
44
|
-
x.push(sample.x);
|
45
|
-
y.push(sample.y);
|
46
|
-
w.push(1);
|
47
|
-
time.push(-age);
|
48
|
-
sampleCount++;
|
49
|
-
index--;
|
50
|
-
}
|
51
|
-
if (sampleCount >= this.minSampleSize) {
|
52
|
-
const xSolver = new LeastSquareSolver(time, x, w);
|
53
|
-
const xFit = xSolver.solve(2);
|
54
|
-
if (xFit !== null) {
|
55
|
-
const ySolver = new LeastSquareSolver(time, y, w);
|
56
|
-
const yFit = ySolver.solve(2);
|
57
|
-
if (yFit !== null) {
|
58
|
-
const xVelocity = xFit.coefficients[1] * 1000;
|
59
|
-
const yVelocity = yFit.coefficients[1] * 1000;
|
60
|
-
return [xVelocity, yVelocity];
|
61
|
-
}
|
62
|
-
}
|
63
|
-
}
|
64
|
-
return null;
|
65
|
-
}
|
66
|
-
get velocity() {
|
67
|
-
const estimate = this.getVelocityEstimate();
|
68
|
-
if (estimate !== null) {
|
69
|
-
return estimate;
|
70
|
-
}
|
71
|
-
return [0, 0];
|
72
|
-
}
|
73
|
-
reset() {
|
74
|
-
this.samples.clear();
|
75
|
-
}
|
76
|
-
}
|
@@ -1,40 +0,0 @@
|
|
1
|
-
import EventManager from './EventManager';
|
2
|
-
import { EventTypes } from '../interfaces';
|
3
|
-
import { PointerType } from '../../PointerType';
|
4
|
-
export default class WheelEventManager extends EventManager {
|
5
|
-
wheelDelta = { x: 0, y: 0 };
|
6
|
-
resetDelta = (_event) => {
|
7
|
-
this.wheelDelta = { x: 0, y: 0 };
|
8
|
-
};
|
9
|
-
wheelCallback = (event) => {
|
10
|
-
this.wheelDelta.x += event.deltaX;
|
11
|
-
this.wheelDelta.y += event.deltaY;
|
12
|
-
const adaptedEvent = this.mapEvent(event);
|
13
|
-
this.onWheel(adaptedEvent);
|
14
|
-
};
|
15
|
-
registerListeners() {
|
16
|
-
this.view.addEventListener('pointermove', this.resetDelta);
|
17
|
-
this.view.addEventListener('wheel', this.wheelCallback);
|
18
|
-
}
|
19
|
-
unregisterListeners() {
|
20
|
-
this.view.removeEventListener('pointermove', this.resetDelta);
|
21
|
-
this.view.removeEventListener('wheel', this.wheelCallback);
|
22
|
-
}
|
23
|
-
mapEvent(event) {
|
24
|
-
return {
|
25
|
-
x: event.clientX + this.wheelDelta.x,
|
26
|
-
y: event.clientY + this.wheelDelta.y,
|
27
|
-
offsetX: event.offsetX - event.deltaX,
|
28
|
-
offsetY: event.offsetY - event.deltaY,
|
29
|
-
pointerId: -1,
|
30
|
-
eventType: EventTypes.MOVE,
|
31
|
-
pointerType: PointerType.OTHER,
|
32
|
-
time: event.timeStamp,
|
33
|
-
// @ts-ignore It does exist, but it's deprecated
|
34
|
-
wheelDeltaY: event.wheelDeltaY,
|
35
|
-
};
|
36
|
-
}
|
37
|
-
resetManager() {
|
38
|
-
super.resetManager();
|
39
|
-
}
|
40
|
-
}
|
@@ -1,233 +0,0 @@
|
|
1
|
-
import { PointerType } from '../PointerType';
|
2
|
-
export function isPointerInBounds(view, { x, y }) {
|
3
|
-
const rect = view.getBoundingClientRect();
|
4
|
-
return x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom;
|
5
|
-
}
|
6
|
-
export const PointerTypeMapping = new Map([
|
7
|
-
['mouse', PointerType.MOUSE],
|
8
|
-
['touch', PointerType.TOUCH],
|
9
|
-
['pen', PointerType.STYLUS],
|
10
|
-
['none', PointerType.OTHER],
|
11
|
-
]);
|
12
|
-
export const degToRad = (degrees) => (degrees * Math.PI) / 180;
|
13
|
-
export const coneToDeviation = (degrees) => Math.cos(degToRad(degrees / 2));
|
14
|
-
export function calculateViewScale(view) {
|
15
|
-
const styles = getComputedStyle(view);
|
16
|
-
const resultScales = {
|
17
|
-
scaleX: 1,
|
18
|
-
scaleY: 1,
|
19
|
-
};
|
20
|
-
// Get scales from scale property
|
21
|
-
if (styles.scale !== undefined && styles.scale !== 'none') {
|
22
|
-
const scales = styles.scale.split(' ');
|
23
|
-
if (scales[0]) {
|
24
|
-
resultScales.scaleX = parseFloat(scales[0]);
|
25
|
-
}
|
26
|
-
resultScales.scaleY = scales[1]
|
27
|
-
? parseFloat(scales[1])
|
28
|
-
: parseFloat(scales[0]);
|
29
|
-
}
|
30
|
-
// Get scales from transform property
|
31
|
-
const matrixElements = new RegExp(/matrix\((.+)\)/).exec(styles.transform)?.[1];
|
32
|
-
if (matrixElements) {
|
33
|
-
const matrixElementsArray = matrixElements.split(', ');
|
34
|
-
resultScales.scaleX *= parseFloat(matrixElementsArray[0]);
|
35
|
-
resultScales.scaleY *= parseFloat(matrixElementsArray[3]);
|
36
|
-
}
|
37
|
-
return resultScales;
|
38
|
-
}
|
39
|
-
export function tryExtractStylusData(event) {
|
40
|
-
const pointerType = PointerTypeMapping.get(event.pointerType);
|
41
|
-
if (pointerType !== PointerType.STYLUS) {
|
42
|
-
return;
|
43
|
-
}
|
44
|
-
// @ts-ignore This property exists (https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent#instance_properties)
|
45
|
-
const eventAzimuthAngle = event.azimuthAngle;
|
46
|
-
// @ts-ignore This property exists (https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent#instance_properties)
|
47
|
-
const eventAltitudeAngle = event.altitudeAngle;
|
48
|
-
if (event.tiltX === 0 && event.tiltY === 0) {
|
49
|
-
// If we are in this branch, it means that either tilt properties are not supported and we have to calculate them from altitude and azimuth angles,
|
50
|
-
// or stylus is perpendicular to the screen and we can use altitude / azimuth instead of tilt
|
51
|
-
// If azimuth and altitude are undefined in this branch, it means that we are either perpendicular to the screen,
|
52
|
-
// or that none of the position sets is supported. In that case, we can treat stylus as perpendicular
|
53
|
-
if (eventAzimuthAngle === undefined || eventAltitudeAngle === undefined) {
|
54
|
-
return {
|
55
|
-
tiltX: 0,
|
56
|
-
tiltY: 0,
|
57
|
-
azimuthAngle: Math.PI / 2,
|
58
|
-
altitudeAngle: Math.PI / 2,
|
59
|
-
pressure: event.pressure,
|
60
|
-
};
|
61
|
-
}
|
62
|
-
const { tiltX, tiltY } = spherical2tilt(eventAltitudeAngle, eventAzimuthAngle);
|
63
|
-
return {
|
64
|
-
tiltX,
|
65
|
-
tiltY,
|
66
|
-
azimuthAngle: eventAzimuthAngle,
|
67
|
-
altitudeAngle: eventAltitudeAngle,
|
68
|
-
pressure: event.pressure,
|
69
|
-
};
|
70
|
-
}
|
71
|
-
const { altitudeAngle, azimuthAngle } = tilt2spherical(event.tiltX, event.tiltY);
|
72
|
-
return {
|
73
|
-
tiltX: event.tiltX,
|
74
|
-
tiltY: event.tiltY,
|
75
|
-
azimuthAngle,
|
76
|
-
altitudeAngle,
|
77
|
-
pressure: event.pressure,
|
78
|
-
};
|
79
|
-
}
|
80
|
-
// `altitudeAngle` and `azimuthAngle` are experimental properties, which are not supported on Firefox and Safari.
|
81
|
-
// Given that, we use `tilt` properties and algorithm that converts one value to another.
|
82
|
-
//
|
83
|
-
// Source: https://w3c.github.io/pointerevents/#converting-between-tiltx-tilty-and-altitudeangle-azimuthangle
|
84
|
-
function tilt2spherical(tiltX, tiltY) {
|
85
|
-
const tiltXrad = (tiltX * Math.PI) / 180;
|
86
|
-
const tiltYrad = (tiltY * Math.PI) / 180;
|
87
|
-
// calculate azimuth angle
|
88
|
-
let azimuthAngle = 0;
|
89
|
-
if (tiltX === 0) {
|
90
|
-
if (tiltY > 0) {
|
91
|
-
azimuthAngle = Math.PI / 2;
|
92
|
-
}
|
93
|
-
else if (tiltY < 0) {
|
94
|
-
azimuthAngle = (3 * Math.PI) / 2;
|
95
|
-
}
|
96
|
-
}
|
97
|
-
else if (tiltY === 0) {
|
98
|
-
if (tiltX < 0) {
|
99
|
-
azimuthAngle = Math.PI;
|
100
|
-
}
|
101
|
-
}
|
102
|
-
else if (Math.abs(tiltX) === 90 || Math.abs(tiltY) === 90) {
|
103
|
-
// not enough information to calculate azimuth
|
104
|
-
azimuthAngle = 0;
|
105
|
-
}
|
106
|
-
else {
|
107
|
-
// Non-boundary case: neither tiltX nor tiltY is equal to 0 or +-90
|
108
|
-
const tanX = Math.tan(tiltXrad);
|
109
|
-
const tanY = Math.tan(tiltYrad);
|
110
|
-
azimuthAngle = Math.atan2(tanY, tanX);
|
111
|
-
if (azimuthAngle < 0) {
|
112
|
-
azimuthAngle += 2 * Math.PI;
|
113
|
-
}
|
114
|
-
}
|
115
|
-
// calculate altitude angle
|
116
|
-
let altitudeAngle = 0;
|
117
|
-
if (Math.abs(tiltX) === 90 || Math.abs(tiltY) === 90) {
|
118
|
-
altitudeAngle = 0;
|
119
|
-
}
|
120
|
-
else if (tiltX === 0) {
|
121
|
-
altitudeAngle = Math.PI / 2 - Math.abs(tiltYrad);
|
122
|
-
}
|
123
|
-
else if (tiltY === 0) {
|
124
|
-
altitudeAngle = Math.PI / 2 - Math.abs(tiltXrad);
|
125
|
-
}
|
126
|
-
else {
|
127
|
-
// Non-boundary case: neither tiltX nor tiltY is equal to 0 or +-90
|
128
|
-
altitudeAngle = Math.atan(1.0 /
|
129
|
-
Math.sqrt(Math.pow(Math.tan(tiltXrad), 2) + Math.pow(Math.tan(tiltYrad), 2)));
|
130
|
-
}
|
131
|
-
return { altitudeAngle: altitudeAngle, azimuthAngle: azimuthAngle };
|
132
|
-
}
|
133
|
-
// If we are on a platform that doesn't support `tiltX` and `tiltY`, we have to calculate them from `altitude` and `azimuth` angles.
|
134
|
-
//
|
135
|
-
// Source: https://w3c.github.io/pointerevents/#converting-between-tiltx-tilty-and-altitudeangle-azimuthangle
|
136
|
-
function spherical2tilt(altitudeAngle, azimuthAngle) {
|
137
|
-
const radToDeg = 180 / Math.PI;
|
138
|
-
let tiltXrad = 0;
|
139
|
-
let tiltYrad = 0;
|
140
|
-
if (altitudeAngle === 0) {
|
141
|
-
// the pen is in the X-Y plane
|
142
|
-
if (azimuthAngle === 0 || azimuthAngle === 2 * Math.PI) {
|
143
|
-
// pen is on positive X axis
|
144
|
-
tiltXrad = Math.PI / 2;
|
145
|
-
}
|
146
|
-
if (azimuthAngle === Math.PI / 2) {
|
147
|
-
// pen is on positive Y axis
|
148
|
-
tiltYrad = Math.PI / 2;
|
149
|
-
}
|
150
|
-
if (azimuthAngle === Math.PI) {
|
151
|
-
// pen is on negative X axis
|
152
|
-
tiltXrad = -Math.PI / 2;
|
153
|
-
}
|
154
|
-
if (azimuthAngle === (3 * Math.PI) / 2) {
|
155
|
-
// pen is on negative Y axis
|
156
|
-
tiltYrad = -Math.PI / 2;
|
157
|
-
}
|
158
|
-
if (azimuthAngle > 0 && azimuthAngle < Math.PI / 2) {
|
159
|
-
tiltXrad = Math.PI / 2;
|
160
|
-
tiltYrad = Math.PI / 2;
|
161
|
-
}
|
162
|
-
if (azimuthAngle > Math.PI / 2 && azimuthAngle < Math.PI) {
|
163
|
-
tiltXrad = -Math.PI / 2;
|
164
|
-
tiltYrad = Math.PI / 2;
|
165
|
-
}
|
166
|
-
if (azimuthAngle > Math.PI && azimuthAngle < (3 * Math.PI) / 2) {
|
167
|
-
tiltXrad = -Math.PI / 2;
|
168
|
-
tiltYrad = -Math.PI / 2;
|
169
|
-
}
|
170
|
-
if (azimuthAngle > (3 * Math.PI) / 2 && azimuthAngle < 2 * Math.PI) {
|
171
|
-
tiltXrad = Math.PI / 2;
|
172
|
-
tiltYrad = -Math.PI / 2;
|
173
|
-
}
|
174
|
-
}
|
175
|
-
if (altitudeAngle !== 0) {
|
176
|
-
const tanAlt = Math.tan(altitudeAngle);
|
177
|
-
tiltXrad = Math.atan(Math.cos(azimuthAngle) / tanAlt);
|
178
|
-
tiltYrad = Math.atan(Math.sin(azimuthAngle) / tanAlt);
|
179
|
-
}
|
180
|
-
const tiltX = Math.round(tiltXrad * radToDeg);
|
181
|
-
const tiltY = Math.round(tiltYrad * radToDeg);
|
182
|
-
return { tiltX, tiltY };
|
183
|
-
}
|
184
|
-
export const RNSVGElements = new Set([
|
185
|
-
'Circle',
|
186
|
-
'ClipPath',
|
187
|
-
'Ellipse',
|
188
|
-
'ForeignObject',
|
189
|
-
'G',
|
190
|
-
'Image',
|
191
|
-
'Line',
|
192
|
-
'Marker',
|
193
|
-
'Mask',
|
194
|
-
'Path',
|
195
|
-
'Pattern',
|
196
|
-
'Polygon',
|
197
|
-
'Polyline',
|
198
|
-
'Rect',
|
199
|
-
'Svg',
|
200
|
-
'Symbol',
|
201
|
-
'TSpan',
|
202
|
-
'Text',
|
203
|
-
'TextPath',
|
204
|
-
'Use',
|
205
|
-
]);
|
206
|
-
// This function helps us determine whether given node is SVGElement or not. In our implementation of
|
207
|
-
// findNodeHandle, we can encounter such element in 2 forms - SVG tag or ref to SVG Element. Since Gesture Handler
|
208
|
-
// does not depend on SVG, we use our simplified SVGRef type that has `elementRef` field. This is something that is present
|
209
|
-
// in actual SVG ref object.
|
210
|
-
//
|
211
|
-
// In order to make sure that node passed into this function is in fact SVG element, first we check if its constructor name
|
212
|
-
// corresponds to one of the possible SVG elements. Then we also check if `elementRef` field exists.
|
213
|
-
// By doing both steps we decrease probability of detecting situations where, for example, user makes custom `Circle` and
|
214
|
-
// we treat it as SVG.
|
215
|
-
export function isRNSVGElement(viewRef) {
|
216
|
-
const componentClassName = Object.getPrototypeOf(viewRef).constructor.name;
|
217
|
-
return (RNSVGElements.has(componentClassName) &&
|
218
|
-
Object.hasOwn(viewRef, 'elementRef'));
|
219
|
-
}
|
220
|
-
// This function checks if given node is SVGElement. Unlike the function above, this one
|
221
|
-
// operates on React Nodes, not DOM nodes.
|
222
|
-
//
|
223
|
-
// Second condition was introduced to handle case where SVG element was wrapped with
|
224
|
-
// `createAnimatedComponent` from Reanimated.
|
225
|
-
export function isRNSVGNode(node) {
|
226
|
-
// If `ref` has `rngh` field, it means that component comes from Gesture Handler. This is a special case for
|
227
|
-
// `Text` component, which is present in `RNSVGElements` set, yet we don't want to treat it as SVG.
|
228
|
-
if (node.ref?.rngh) {
|
229
|
-
return false;
|
230
|
-
}
|
231
|
-
return (Object.getPrototypeOf(node?.type)?.name === 'WebShape' ||
|
232
|
-
RNSVGElements.has(node?.type?.displayName));
|
233
|
-
}
|
@@ -1,48 +0,0 @@
|
|
1
|
-
/* eslint-disable @eslint-community/eslint-comments/no-unlimited-disable */
|
2
|
-
/* eslint-disable */
|
3
|
-
import GestureHandler from './GestureHandler';
|
4
|
-
import { TEST_MAX_IF_NOT_NAN } from './utils';
|
5
|
-
class DiscreteGestureHandler extends GestureHandler {
|
6
|
-
get isDiscrete() {
|
7
|
-
return true;
|
8
|
-
}
|
9
|
-
get shouldEnableGestureOnSetup() {
|
10
|
-
return true;
|
11
|
-
}
|
12
|
-
shouldFailUnderCustomCriteria({ x, y, deltaX, deltaY }, { maxDeltaX, maxDeltaY, maxDistSq, shouldCancelWhenOutside }) {
|
13
|
-
if (shouldCancelWhenOutside) {
|
14
|
-
if (!this.isPointInView({ x, y })) {
|
15
|
-
return true;
|
16
|
-
}
|
17
|
-
}
|
18
|
-
return (TEST_MAX_IF_NOT_NAN(Math.abs(deltaX), maxDeltaX) ||
|
19
|
-
TEST_MAX_IF_NOT_NAN(Math.abs(deltaY), maxDeltaY) ||
|
20
|
-
TEST_MAX_IF_NOT_NAN(Math.abs(deltaY * deltaY + deltaX * deltaX), maxDistSq));
|
21
|
-
}
|
22
|
-
transformNativeEvent({ center: { x, y } }) {
|
23
|
-
// @ts-ignore FIXME(TS)
|
24
|
-
const rect = this.view.getBoundingClientRect();
|
25
|
-
return {
|
26
|
-
absoluteX: x,
|
27
|
-
absoluteY: y,
|
28
|
-
x: x - rect.left,
|
29
|
-
y: y - rect.top,
|
30
|
-
};
|
31
|
-
}
|
32
|
-
isGestureEnabledForEvent({ minPointers, maxPointers, maxDeltaX, maxDeltaY, maxDistSq, shouldCancelWhenOutside, }, _recognizer, { maxPointers: pointerLength, center, deltaX, deltaY }) {
|
33
|
-
const validPointerCount = pointerLength >= minPointers && pointerLength <= maxPointers;
|
34
|
-
if (this.shouldFailUnderCustomCriteria({ ...center, deltaX, deltaY }, {
|
35
|
-
maxDeltaX,
|
36
|
-
maxDeltaY,
|
37
|
-
maxDistSq,
|
38
|
-
shouldCancelWhenOutside,
|
39
|
-
}) ||
|
40
|
-
// A user probably won't land a multi-pointer tap on the first tick (so we cannot just cancel each time)
|
41
|
-
// but if the gesture is running and the user adds or subtracts another pointer then it should fail.
|
42
|
-
(!validPointerCount && this.isGestureRunning)) {
|
43
|
-
return { failed: true };
|
44
|
-
}
|
45
|
-
return { success: validPointerCount };
|
46
|
-
}
|
47
|
-
}
|
48
|
-
export default DiscreteGestureHandler;
|
@@ -1,25 +0,0 @@
|
|
1
|
-
/* eslint-disable @eslint-community/eslint-comments/no-unlimited-disable */
|
2
|
-
/* eslint-disable */
|
3
|
-
import GestureHandler from './GestureHandler';
|
4
|
-
import { PixelRatio } from 'react-native';
|
5
|
-
class DraggingGestureHandler extends GestureHandler {
|
6
|
-
get shouldEnableGestureOnSetup() {
|
7
|
-
return true;
|
8
|
-
}
|
9
|
-
transformNativeEvent({ deltaX, deltaY, velocityX, velocityY, center: { x, y }, }) {
|
10
|
-
// @ts-ignore FIXME(TS)
|
11
|
-
const rect = this.view.getBoundingClientRect();
|
12
|
-
const ratio = PixelRatio.get();
|
13
|
-
return {
|
14
|
-
translationX: deltaX - (this.__initialX || 0),
|
15
|
-
translationY: deltaY - (this.__initialY || 0),
|
16
|
-
absoluteX: x,
|
17
|
-
absoluteY: y,
|
18
|
-
velocityX: velocityX * ratio,
|
19
|
-
velocityY: velocityY * ratio,
|
20
|
-
x: x - rect.left,
|
21
|
-
y: y - rect.top,
|
22
|
-
};
|
23
|
-
}
|
24
|
-
}
|
25
|
-
export default DraggingGestureHandler;
|