react-native-gesture-handler 2.26.0 → 2.27.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +69 -0
- package/android/src/main/jni/CMakeLists.txt +7 -26
- package/lib/commonjs/components/Pressable/Pressable.js +139 -188
- package/lib/commonjs/components/Pressable/Pressable.js.map +1 -1
- package/lib/commonjs/components/Pressable/StateMachine.js +38 -0
- package/lib/commonjs/components/Pressable/StateMachine.js.map +1 -0
- package/lib/commonjs/components/Pressable/stateDefinitions.js +88 -0
- package/lib/commonjs/components/Pressable/stateDefinitions.js.map +1 -0
- package/lib/commonjs/components/Pressable/utils.js +1 -1
- package/lib/commonjs/components/Pressable/utils.js.map +1 -1
- package/lib/commonjs/handlers/gestures/forceTouchGesture.js +12 -0
- package/lib/commonjs/handlers/gestures/forceTouchGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gestureObjects.js +3 -1
- package/lib/commonjs/handlers/gestures/gestureObjects.js.map +1 -1
- package/lib/commonjs/web/detectors/RotationGestureDetector.js +3 -0
- package/lib/commonjs/web/detectors/RotationGestureDetector.js.map +1 -1
- package/lib/commonjs/web/handlers/FlingGestureHandler.js +3 -0
- package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/GestureHandler.js +6 -6
- package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PanGestureHandler.js +24 -33
- package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/TapGestureHandler.js +15 -17
- package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +1 -1
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -1
- package/lib/commonjs/web/tools/PointerEventManager.js +1 -1
- package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -1
- package/lib/commonjs/web/tools/PointerTracker.js +12 -11
- package/lib/commonjs/web/tools/PointerTracker.js.map +1 -1
- package/lib/commonjs/web/tools/Vector.js +1 -1
- package/lib/commonjs/web/tools/Vector.js.map +1 -1
- package/lib/module/components/Pressable/Pressable.js +141 -190
- package/lib/module/components/Pressable/Pressable.js.map +1 -1
- package/lib/module/components/Pressable/StateMachine.js +34 -0
- package/lib/module/components/Pressable/StateMachine.js.map +1 -0
- package/lib/module/components/Pressable/stateDefinitions.js +83 -0
- package/lib/module/components/Pressable/stateDefinitions.js.map +1 -0
- package/lib/module/components/Pressable/utils.js +1 -1
- package/lib/module/components/Pressable/utils.js.map +1 -1
- package/lib/module/handlers/gestures/forceTouchGesture.js +13 -0
- package/lib/module/handlers/gestures/forceTouchGesture.js.map +1 -1
- package/lib/module/handlers/gestures/gestureObjects.js +3 -1
- package/lib/module/handlers/gestures/gestureObjects.js.map +1 -1
- package/lib/module/web/detectors/RotationGestureDetector.js +3 -0
- package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -1
- package/lib/module/web/handlers/FlingGestureHandler.js +3 -0
- package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/GestureHandler.js +6 -6
- package/lib/module/web/handlers/GestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PanGestureHandler.js +24 -33
- package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/TapGestureHandler.js +15 -17
- package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/module/web/tools/GestureHandlerOrchestrator.js +1 -1
- package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -1
- package/lib/module/web/tools/PointerEventManager.js +1 -1
- package/lib/module/web/tools/PointerEventManager.js.map +1 -1
- package/lib/module/web/tools/PointerTracker.js +12 -11
- package/lib/module/web/tools/PointerTracker.js.map +1 -1
- package/lib/module/web/tools/Vector.js +1 -1
- package/lib/module/web/tools/Vector.js.map +1 -1
- package/lib/typescript/ActionType.d.ts +0 -1
- package/lib/typescript/ActionType.js +6 -0
- package/lib/typescript/Directions.d.ts +0 -1
- package/lib/typescript/Directions.js +18 -0
- package/lib/typescript/EnableNewWebImplementation.d.ts +0 -1
- package/lib/typescript/EnableNewWebImplementation.js +30 -0
- package/lib/typescript/GestureHandlerRootViewContext.d.ts +0 -1
- package/lib/typescript/GestureHandlerRootViewContext.js +2 -0
- package/lib/typescript/PlatformConstants.d.ts +0 -1
- package/lib/typescript/PlatformConstants.js +3 -0
- package/lib/typescript/PlatformConstants.web.d.ts +0 -1
- package/lib/typescript/PlatformConstants.web.js +5 -0
- package/lib/typescript/PointerType.d.ts +0 -1
- package/lib/typescript/PointerType.js +8 -0
- package/lib/typescript/RNGestureHandlerModule.d.ts +0 -1
- package/lib/typescript/RNGestureHandlerModule.js +4 -0
- package/lib/typescript/RNGestureHandlerModule.web.d.ts +0 -1
- package/lib/typescript/RNGestureHandlerModule.web.js +92 -0
- package/lib/typescript/RNGestureHandlerModule.windows.d.ts +0 -1
- package/lib/typescript/RNGestureHandlerModule.windows.js +47 -0
- package/lib/typescript/RNRenderer.d.ts +0 -1
- package/lib/typescript/RNRenderer.js +3 -0
- package/lib/typescript/RNRenderer.web.d.ts +0 -1
- package/lib/typescript/RNRenderer.web.js +3 -0
- package/lib/typescript/State.d.ts +0 -1
- package/lib/typescript/State.js +9 -0
- package/lib/typescript/TouchEventType.d.ts +0 -1
- package/lib/typescript/TouchEventType.js +7 -0
- package/lib/typescript/components/DrawerLayout.d.ts +0 -1
- package/lib/typescript/components/DrawerLayout.js +417 -0
- package/lib/typescript/components/GestureButtons.d.ts +0 -1
- package/lib/typescript/components/GestureButtons.js +165 -0
- package/lib/typescript/components/GestureButtonsProps.d.ts +0 -1
- package/lib/typescript/components/GestureButtonsProps.js +1 -0
- package/lib/typescript/components/GestureComponents.d.ts +0 -1
- package/lib/typescript/components/GestureComponents.js +67 -0
- package/lib/typescript/components/GestureComponents.web.d.ts +0 -1
- package/lib/typescript/components/GestureComponents.web.js +21 -0
- package/lib/typescript/components/GestureHandlerButton.d.ts +0 -1
- package/lib/typescript/components/GestureHandlerButton.js +2 -0
- package/lib/typescript/components/GestureHandlerButton.web.d.ts +0 -1
- package/lib/typescript/components/GestureHandlerButton.web.js +3 -0
- package/lib/typescript/components/GestureHandlerRootView.android.d.ts +0 -1
- package/lib/typescript/components/GestureHandlerRootView.android.js +17 -0
- package/lib/typescript/components/GestureHandlerRootView.d.ts +0 -1
- package/lib/typescript/components/GestureHandlerRootView.js +16 -0
- package/lib/typescript/components/GestureHandlerRootView.web.d.ts +0 -1
- package/lib/typescript/components/GestureHandlerRootView.web.js +11 -0
- package/lib/typescript/components/Pressable/Pressable.d.ts +1 -3
- package/lib/typescript/components/Pressable/Pressable.d.ts.map +1 -1
- package/lib/typescript/components/Pressable/Pressable.js +231 -0
- package/lib/typescript/components/Pressable/PressableProps.d.ts +15 -2
- package/lib/typescript/components/Pressable/PressableProps.d.ts.map +1 -1
- package/lib/typescript/components/Pressable/PressableProps.js +1 -0
- package/lib/typescript/components/Pressable/StateMachine.d.ts +14 -0
- package/lib/typescript/components/Pressable/StateMachine.d.ts.map +1 -0
- package/lib/typescript/components/Pressable/StateMachine.js +34 -0
- package/lib/typescript/components/Pressable/index.d.ts +0 -1
- package/lib/typescript/components/Pressable/index.js +1 -0
- package/lib/typescript/components/Pressable/stateDefinitions.d.ts +9 -0
- package/lib/typescript/components/Pressable/stateDefinitions.d.ts.map +1 -0
- package/lib/typescript/components/Pressable/stateDefinitions.js +104 -0
- package/lib/typescript/components/Pressable/utils.d.ts +3 -7
- package/lib/typescript/components/Pressable/utils.d.ts.map +1 -1
- package/lib/typescript/components/Pressable/utils.js +80 -0
- package/lib/typescript/components/ReanimatedDrawerLayout.d.ts +0 -1
- package/lib/typescript/components/ReanimatedDrawerLayout.js +364 -0
- package/lib/typescript/components/ReanimatedSwipeable.d.ts +0 -1
- package/lib/typescript/components/ReanimatedSwipeable.js +400 -0
- package/lib/typescript/components/Swipeable.d.ts +0 -1
- package/lib/typescript/components/Swipeable.js +287 -0
- package/lib/typescript/components/Text.d.ts +0 -1
- package/lib/typescript/components/Text.js +38 -0
- package/lib/typescript/components/gestureHandlerRootHOC.d.ts +0 -1
- package/lib/typescript/components/gestureHandlerRootHOC.js +18 -0
- package/lib/typescript/components/touchables/ExtraButtonProps.d.ts +0 -1
- package/lib/typescript/components/touchables/ExtraButtonProps.js +1 -0
- package/lib/typescript/components/touchables/GenericTouchable.d.ts +0 -1
- package/lib/typescript/components/touchables/GenericTouchable.js +221 -0
- package/lib/typescript/components/touchables/GenericTouchableProps.d.ts +0 -1
- package/lib/typescript/components/touchables/GenericTouchableProps.js +1 -0
- package/lib/typescript/components/touchables/TouchableHighlight.d.ts +0 -1
- package/lib/typescript/components/touchables/TouchableHighlight.js +75 -0
- package/lib/typescript/components/touchables/TouchableNativeFeedback.android.d.ts +0 -1
- package/lib/typescript/components/touchables/TouchableNativeFeedback.android.js +65 -0
- package/lib/typescript/components/touchables/TouchableNativeFeedback.d.ts +0 -1
- package/lib/typescript/components/touchables/TouchableNativeFeedback.js +6 -0
- package/lib/typescript/components/touchables/TouchableNativeFeedbackProps.d.ts +0 -1
- package/lib/typescript/components/touchables/TouchableNativeFeedbackProps.js +1 -0
- package/lib/typescript/components/touchables/TouchableOpacity.d.ts +0 -1
- package/lib/typescript/components/touchables/TouchableOpacity.js +51 -0
- package/lib/typescript/components/touchables/TouchableWithoutFeedback.d.ts +0 -1
- package/lib/typescript/components/touchables/TouchableWithoutFeedback.js +10 -0
- package/lib/typescript/components/touchables/index.d.ts +0 -1
- package/lib/typescript/components/touchables/index.js +4 -0
- package/lib/typescript/components/utils.d.ts +0 -1
- package/lib/typescript/components/utils.js +11 -0
- package/lib/typescript/findNodeHandle.d.ts +0 -1
- package/lib/typescript/findNodeHandle.js +2 -0
- package/lib/typescript/findNodeHandle.web.d.ts +0 -1
- package/lib/typescript/findNodeHandle.web.js +31 -0
- package/lib/typescript/getShadowNodeFromRef.d.ts +0 -1
- package/lib/typescript/getShadowNodeFromRef.js +45 -0
- package/lib/typescript/getShadowNodeFromRef.web.d.ts +0 -1
- package/lib/typescript/getShadowNodeFromRef.web.js +7 -0
- package/lib/typescript/ghQueueMicrotask.d.ts +0 -1
- package/lib/typescript/ghQueueMicrotask.js +7 -0
- package/lib/typescript/handlers/FlingGestureHandler.d.ts +0 -1
- package/lib/typescript/handlers/FlingGestureHandler.js +19 -0
- package/lib/typescript/handlers/ForceTouchGestureHandler.d.ts +0 -1
- package/lib/typescript/handlers/ForceTouchGestureHandler.js +37 -0
- package/lib/typescript/handlers/GestureHandlerEventPayload.d.ts +3 -1
- package/lib/typescript/handlers/GestureHandlerEventPayload.d.ts.map +1 -1
- package/lib/typescript/handlers/GestureHandlerEventPayload.js +1 -0
- package/lib/typescript/handlers/LongPressGestureHandler.d.ts +0 -1
- package/lib/typescript/handlers/LongPressGestureHandler.js +22 -0
- package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +0 -1
- package/lib/typescript/handlers/NativeViewGestureHandler.js +20 -0
- package/lib/typescript/handlers/PanGestureHandler.d.ts +0 -1
- package/lib/typescript/handlers/PanGestureHandler.js +128 -0
- package/lib/typescript/handlers/PinchGestureHandler.d.ts +0 -1
- package/lib/typescript/handlers/PinchGestureHandler.js +12 -0
- package/lib/typescript/handlers/PressabilityDebugView.d.ts +0 -1
- package/lib/typescript/handlers/PressabilityDebugView.js +2 -0
- package/lib/typescript/handlers/PressabilityDebugView.web.d.ts +0 -1
- package/lib/typescript/handlers/PressabilityDebugView.web.js +4 -0
- package/lib/typescript/handlers/RotationGestureHandler.d.ts +0 -1
- package/lib/typescript/handlers/RotationGestureHandler.js +12 -0
- package/lib/typescript/handlers/TapGestureHandler.d.ts +0 -1
- package/lib/typescript/handlers/TapGestureHandler.js +26 -0
- package/lib/typescript/handlers/createHandler.d.ts +0 -1
- package/lib/typescript/handlers/createHandler.js +375 -0
- package/lib/typescript/handlers/createNativeWrapper.d.ts +0 -1
- package/lib/typescript/handlers/createNativeWrapper.js +67 -0
- package/lib/typescript/handlers/customDirectEventTypes.d.ts +0 -1
- package/lib/typescript/handlers/customDirectEventTypes.js +2 -0
- package/lib/typescript/handlers/customDirectEventTypes.web.d.ts +0 -1
- package/lib/typescript/handlers/customDirectEventTypes.web.js +4 -0
- package/lib/typescript/handlers/gestureHandlerCommon.d.ts +0 -1
- package/lib/typescript/handlers/gestureHandlerCommon.js +42 -0
- package/lib/typescript/handlers/gestureHandlerTypesCompat.d.ts +9 -1
- package/lib/typescript/handlers/gestureHandlerTypesCompat.d.ts.map +1 -1
- package/lib/typescript/handlers/gestureHandlerTypesCompat.js +1 -0
- package/lib/typescript/handlers/gestures/GestureDetector/Wrap.d.ts +0 -1
- package/lib/typescript/handlers/gestures/GestureDetector/Wrap.js +22 -0
- package/lib/typescript/handlers/gestures/GestureDetector/Wrap.web.d.ts +0 -1
- package/lib/typescript/handlers/gestures/GestureDetector/Wrap.web.js +24 -0
- package/lib/typescript/handlers/gestures/GestureDetector/attachHandlers.d.ts +0 -1
- package/lib/typescript/handlers/gestures/GestureDetector/attachHandlers.js +55 -0
- package/lib/typescript/handlers/gestures/GestureDetector/dropHandlers.d.ts +0 -1
- package/lib/typescript/handlers/gestures/GestureDetector/dropHandlers.js +12 -0
- package/lib/typescript/handlers/gestures/GestureDetector/index.d.ts +0 -1
- package/lib/typescript/handlers/gestures/GestureDetector/index.js +114 -0
- package/lib/typescript/handlers/gestures/GestureDetector/needsToReattach.d.ts +0 -1
- package/lib/typescript/handlers/gestures/GestureDetector/needsToReattach.js +18 -0
- package/lib/typescript/handlers/gestures/GestureDetector/types.d.ts +0 -1
- package/lib/typescript/handlers/gestures/GestureDetector/types.js +1 -0
- package/lib/typescript/handlers/gestures/GestureDetector/updateHandlers.d.ts +0 -1
- package/lib/typescript/handlers/gestures/GestureDetector/updateHandlers.js +54 -0
- package/lib/typescript/handlers/gestures/GestureDetector/useAnimatedGesture.d.ts +0 -1
- package/lib/typescript/handlers/gestures/GestureDetector/useAnimatedGesture.js +137 -0
- package/lib/typescript/handlers/gestures/GestureDetector/useDetectorUpdater.d.ts +0 -1
- package/lib/typescript/handlers/gestures/GestureDetector/useDetectorUpdater.js +48 -0
- package/lib/typescript/handlers/gestures/GestureDetector/useMountReactions.d.ts +0 -1
- package/lib/typescript/handlers/gestures/GestureDetector/useMountReactions.js +35 -0
- package/lib/typescript/handlers/gestures/GestureDetector/useViewRefHandler.d.ts +0 -1
- package/lib/typescript/handlers/gestures/GestureDetector/useViewRefHandler.js +32 -0
- package/lib/typescript/handlers/gestures/GestureDetector/utils.d.ts +0 -1
- package/lib/typescript/handlers/gestures/GestureDetector/utils.js +140 -0
- package/lib/typescript/handlers/gestures/eventReceiver.d.ts +0 -1
- package/lib/typescript/handlers/gestures/eventReceiver.js +105 -0
- package/lib/typescript/handlers/gestures/flingGesture.d.ts +0 -1
- package/lib/typescript/handlers/gestures/flingGesture.js +27 -0
- package/lib/typescript/handlers/gestures/forceTouchGesture.d.ts +9 -1
- package/lib/typescript/handlers/gestures/forceTouchGesture.d.ts.map +1 -1
- package/lib/typescript/handlers/gestures/forceTouchGesture.js +57 -0
- package/lib/typescript/handlers/gestures/gesture.d.ts +0 -1
- package/lib/typescript/handlers/gestures/gesture.js +303 -0
- package/lib/typescript/handlers/gestures/gestureComposition.d.ts +0 -1
- package/lib/typescript/handlers/gestures/gestureComposition.js +78 -0
- package/lib/typescript/handlers/gestures/gestureObjects.d.ts +3 -2
- package/lib/typescript/handlers/gestures/gestureObjects.d.ts.map +1 -1
- package/lib/typescript/handlers/gestures/gestureObjects.js +125 -0
- package/lib/typescript/handlers/gestures/gestureStateManager.d.ts +0 -1
- package/lib/typescript/handlers/gestures/gestureStateManager.js +60 -0
- package/lib/typescript/handlers/gestures/gestureStateManager.web.d.ts +0 -1
- package/lib/typescript/handlers/gestures/gestureStateManager.web.js +19 -0
- package/lib/typescript/handlers/gestures/hoverGesture.d.ts +0 -1
- package/lib/typescript/handlers/gestures/hoverGesture.js +45 -0
- package/lib/typescript/handlers/gestures/longPressGesture.d.ts +0 -1
- package/lib/typescript/handlers/gestures/longPressGesture.js +35 -0
- package/lib/typescript/handlers/gestures/manualGesture.d.ts +0 -1
- package/lib/typescript/handlers/gestures/manualGesture.js +16 -0
- package/lib/typescript/handlers/gestures/nativeGesture.d.ts +0 -1
- package/lib/typescript/handlers/gestures/nativeGesture.js +24 -0
- package/lib/typescript/handlers/gestures/panGesture.d.ts +0 -1
- package/lib/typescript/handlers/gestures/panGesture.js +181 -0
- package/lib/typescript/handlers/gestures/pinchGesture.d.ts +0 -1
- package/lib/typescript/handlers/gestures/pinchGesture.js +27 -0
- package/lib/typescript/handlers/gestures/reanimatedWrapper.d.ts +0 -1
- package/lib/typescript/handlers/gestures/reanimatedWrapper.js +23 -0
- package/lib/typescript/handlers/gestures/rotationGesture.d.ts +0 -1
- package/lib/typescript/handlers/gestures/rotationGesture.js +27 -0
- package/lib/typescript/handlers/gestures/tapGesture.d.ts +0 -1
- package/lib/typescript/handlers/gestures/tapGesture.js +72 -0
- package/lib/typescript/handlers/getNextHandlerTag.d.ts +0 -1
- package/lib/typescript/handlers/getNextHandlerTag.js +4 -0
- package/lib/typescript/handlers/handlersRegistry.d.ts +0 -1
- package/lib/typescript/handlers/handlersRegistry.js +36 -0
- package/lib/typescript/handlers/utils.d.ts +0 -1
- package/lib/typescript/handlers/utils.js +58 -0
- package/lib/typescript/index.d.ts +0 -1
- package/lib/typescript/index.js +28 -0
- package/lib/typescript/init.d.ts +0 -1
- package/lib/typescript/init.js +15 -0
- package/lib/typescript/jestUtils/index.d.ts +0 -1
- package/lib/typescript/jestUtils/index.js +1 -0
- package/lib/typescript/jestUtils/jestUtils.d.ts +0 -1
- package/lib/typescript/jestUtils/jestUtils.js +290 -0
- package/lib/typescript/mocks.d.ts +0 -1
- package/lib/typescript/mocks.js +59 -0
- package/lib/typescript/mountRegistry.d.ts +0 -1
- package/lib/typescript/mountRegistry.js +29 -0
- package/lib/typescript/specs/NativeRNGestureHandlerModule.d.ts +0 -1
- package/lib/typescript/specs/NativeRNGestureHandlerModule.js +2 -0
- package/lib/typescript/specs/RNGestureHandlerButtonNativeComponent.d.ts +0 -1
- package/lib/typescript/specs/RNGestureHandlerButtonNativeComponent.js +2 -0
- package/lib/typescript/specs/RNGestureHandlerRootViewNativeComponent.d.ts +0 -1
- package/lib/typescript/specs/RNGestureHandlerRootViewNativeComponent.js +2 -0
- package/lib/typescript/typeUtils.d.ts +0 -1
- package/lib/typescript/typeUtils.js +1 -0
- package/lib/typescript/utils.d.ts +0 -1
- package/lib/typescript/utils.js +80 -0
- package/lib/typescript/web/Gestures.d.ts +0 -1
- package/lib/typescript/web/Gestures.js +38 -0
- package/lib/typescript/web/constants.d.ts +0 -1
- package/lib/typescript/web/constants.js +2 -0
- package/lib/typescript/web/detectors/RotationGestureDetector.d.ts +0 -1
- package/lib/typescript/web/detectors/RotationGestureDetector.d.ts.map +1 -1
- package/lib/typescript/web/detectors/RotationGestureDetector.js +122 -0
- package/lib/typescript/web/detectors/ScaleGestureDetector.d.ts +0 -1
- package/lib/typescript/web/detectors/ScaleGestureDetector.js +117 -0
- package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +0 -1
- package/lib/typescript/web/handlers/FlingGestureHandler.d.ts.map +1 -1
- package/lib/typescript/web/handlers/FlingGestureHandler.js +133 -0
- package/lib/typescript/web/handlers/GestureHandler.d.ts +0 -1
- package/lib/typescript/web/handlers/GestureHandler.d.ts.map +1 -1
- package/lib/typescript/web/handlers/GestureHandler.js +656 -0
- package/lib/typescript/web/handlers/HoverGestureHandler.d.ts +0 -1
- package/lib/typescript/web/handlers/HoverGestureHandler.js +37 -0
- package/lib/typescript/web/handlers/IGestureHandler.d.ts +0 -1
- package/lib/typescript/web/handlers/IGestureHandler.js +1 -0
- package/lib/typescript/web/handlers/LongPressGestureHandler.d.ts +0 -1
- package/lib/typescript/web/handlers/LongPressGestureHandler.js +136 -0
- package/lib/typescript/web/handlers/ManualGestureHandler.d.ts +0 -1
- package/lib/typescript/web/handlers/ManualGestureHandler.js +29 -0
- package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts +0 -1
- package/lib/typescript/web/handlers/NativeViewGestureHandler.js +133 -0
- package/lib/typescript/web/handlers/PanGestureHandler.d.ts +2 -1
- package/lib/typescript/web/handlers/PanGestureHandler.d.ts.map +1 -1
- package/lib/typescript/web/handlers/PanGestureHandler.js +420 -0
- package/lib/typescript/web/handlers/PinchGestureHandler.d.ts +0 -1
- package/lib/typescript/web/handlers/PinchGestureHandler.js +117 -0
- package/lib/typescript/web/handlers/RotationGestureHandler.d.ts +0 -1
- package/lib/typescript/web/handlers/RotationGestureHandler.js +122 -0
- package/lib/typescript/web/handlers/TapGestureHandler.d.ts +1 -1
- package/lib/typescript/web/handlers/TapGestureHandler.d.ts.map +1 -1
- package/lib/typescript/web/handlers/TapGestureHandler.js +202 -0
- package/lib/typescript/web/interfaces.d.ts +0 -1
- package/lib/typescript/web/interfaces.js +25 -0
- package/lib/typescript/web/tools/CircularBuffer.d.ts +0 -1
- package/lib/typescript/web/tools/CircularBuffer.js +37 -0
- package/lib/typescript/web/tools/EventManager.d.ts +0 -1
- package/lib/typescript/web/tools/EventManager.js +85 -0
- package/lib/typescript/web/tools/GestureHandlerDelegate.d.ts +0 -1
- package/lib/typescript/web/tools/GestureHandlerDelegate.js +1 -0
- package/lib/typescript/web/tools/GestureHandlerOrchestrator.d.ts +0 -1
- package/lib/typescript/web/tools/GestureHandlerOrchestrator.d.ts.map +1 -1
- package/lib/typescript/web/tools/GestureHandlerOrchestrator.js +273 -0
- package/lib/typescript/web/tools/GestureHandlerWebDelegate.d.ts +0 -1
- package/lib/typescript/web/tools/GestureHandlerWebDelegate.js +169 -0
- package/lib/typescript/web/tools/InteractionManager.d.ts +0 -1
- package/lib/typescript/web/tools/InteractionManager.js +91 -0
- package/lib/typescript/web/tools/KeyboardEventManager.d.ts +0 -1
- package/lib/typescript/web/tools/KeyboardEventManager.js +73 -0
- package/lib/typescript/web/tools/LeastSquareSolver.d.ts +0 -1
- package/lib/typescript/web/tools/LeastSquareSolver.js +147 -0
- package/lib/typescript/web/tools/NodeManager.d.ts +0 -1
- package/lib/typescript/web/tools/NodeManager.js +28 -0
- package/lib/typescript/web/tools/PointerEventManager.d.ts +0 -1
- package/lib/typescript/web/tools/PointerEventManager.js +179 -0
- package/lib/typescript/web/tools/PointerTracker.d.ts +3 -4
- package/lib/typescript/web/tools/PointerTracker.d.ts.map +1 -1
- package/lib/typescript/web/tools/PointerTracker.js +161 -0
- package/lib/typescript/web/tools/Vector.d.ts +1 -2
- package/lib/typescript/web/tools/Vector.js +43 -0
- package/lib/typescript/web/tools/VelocityTracker.d.ts +0 -1
- package/lib/typescript/web/tools/VelocityTracker.js +76 -0
- package/lib/typescript/web/tools/WheelEventManager.d.ts +0 -1
- package/lib/typescript/web/tools/WheelEventManager.js +40 -0
- package/lib/typescript/web/utils.d.ts +0 -1
- package/lib/typescript/web/utils.js +233 -0
- package/lib/typescript/web_hammer/DiscreteGestureHandler.d.ts +0 -1
- package/lib/typescript/web_hammer/DiscreteGestureHandler.js +48 -0
- package/lib/typescript/web_hammer/DraggingGestureHandler.d.ts +0 -1
- package/lib/typescript/web_hammer/DraggingGestureHandler.js +25 -0
- package/lib/typescript/web_hammer/Errors.d.ts +0 -1
- package/lib/typescript/web_hammer/Errors.js +5 -0
- package/lib/typescript/web_hammer/FlingGestureHandler.d.ts +0 -1
- package/lib/typescript/web_hammer/FlingGestureHandler.js +119 -0
- package/lib/typescript/web_hammer/GestureHandler.d.ts +0 -1
- package/lib/typescript/web_hammer/GestureHandler.js +469 -0
- package/lib/typescript/web_hammer/IndiscreteGestureHandler.d.ts +0 -1
- package/lib/typescript/web_hammer/IndiscreteGestureHandler.js +26 -0
- package/lib/typescript/web_hammer/LongPressGestureHandler.d.ts +0 -1
- package/lib/typescript/web_hammer/LongPressGestureHandler.js +46 -0
- package/lib/typescript/web_hammer/NativeViewGestureHandler.d.ts +0 -1
- package/lib/typescript/web_hammer/NativeViewGestureHandler.js +40 -0
- package/lib/typescript/web_hammer/NodeManager.d.ts +0 -1
- package/lib/typescript/web_hammer/NodeManager.js +28 -0
- package/lib/typescript/web_hammer/PanGestureHandler.d.ts +0 -1
- package/lib/typescript/web_hammer/PanGestureHandler.js +151 -0
- package/lib/typescript/web_hammer/PinchGestureHandler.d.ts +0 -1
- package/lib/typescript/web_hammer/PinchGestureHandler.js +19 -0
- package/lib/typescript/web_hammer/PressGestureHandler.d.ts +0 -1
- package/lib/typescript/web_hammer/PressGestureHandler.js +133 -0
- package/lib/typescript/web_hammer/RotationGestureHandler.d.ts +0 -1
- package/lib/typescript/web_hammer/RotationGestureHandler.js +20 -0
- package/lib/typescript/web_hammer/TapGestureHandler.d.ts +0 -1
- package/lib/typescript/web_hammer/TapGestureHandler.js +142 -0
- package/lib/typescript/web_hammer/constants.d.ts +0 -1
- package/lib/typescript/web_hammer/constants.js +42 -0
- package/lib/typescript/web_hammer/utils.d.ts +0 -1
- package/lib/typescript/web_hammer/utils.js +15 -0
- package/package.json +4 -2
- package/src/components/Pressable/Pressable.tsx +357 -445
- package/src/components/Pressable/PressableProps.tsx +15 -0
- package/src/components/Pressable/StateMachine.tsx +49 -0
- package/src/components/Pressable/stateDefinitions.ts +125 -0
- package/src/components/Pressable/utils.ts +11 -7
- package/src/handlers/GestureHandlerEventPayload.ts +3 -0
- package/src/handlers/gestureHandlerTypesCompat.ts +9 -0
- package/src/handlers/gestures/forceTouchGesture.ts +9 -0
- package/src/handlers/gestures/gestureObjects.ts +3 -1
- package/src/web/detectors/RotationGestureDetector.ts +4 -0
- package/src/web/handlers/FlingGestureHandler.ts +4 -0
- package/src/web/handlers/GestureHandler.ts +9 -3
- package/src/web/handlers/PanGestureHandler.ts +25 -36
- package/src/web/handlers/TapGestureHandler.ts +14 -19
- package/src/web/tools/GestureHandlerOrchestrator.ts +1 -0
- package/src/web/tools/PointerEventManager.ts +1 -1
- package/src/web/tools/PointerTracker.ts +17 -15
- package/src/web/tools/Vector.ts +1 -1
@@ -0,0 +1,233 @@
|
|
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
|
+
}
|
@@ -0,0 +1,48 @@
|
|
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;
|
@@ -0,0 +1,25 @@
|
|
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;
|
@@ -0,0 +1,119 @@
|
|
1
|
+
/* eslint-disable @eslint-community/eslint-comments/no-unlimited-disable */
|
2
|
+
/* eslint-disable */
|
3
|
+
import Hammer from '@egjs/hammerjs';
|
4
|
+
import { Direction } from './constants';
|
5
|
+
import { GesturePropError } from './Errors';
|
6
|
+
import DraggingGestureHandler from './DraggingGestureHandler';
|
7
|
+
import { isnan } from './utils';
|
8
|
+
class FlingGestureHandler extends DraggingGestureHandler {
|
9
|
+
get name() {
|
10
|
+
return 'swipe';
|
11
|
+
}
|
12
|
+
get NativeGestureClass() {
|
13
|
+
return Hammer.Swipe;
|
14
|
+
}
|
15
|
+
onGestureActivated(event) {
|
16
|
+
this.sendEvent({
|
17
|
+
...event,
|
18
|
+
eventType: Hammer.INPUT_MOVE,
|
19
|
+
isFinal: false,
|
20
|
+
isFirst: true,
|
21
|
+
});
|
22
|
+
this.isGestureRunning = false;
|
23
|
+
this.hasGestureFailed = false;
|
24
|
+
this.sendEvent({
|
25
|
+
...event,
|
26
|
+
eventType: Hammer.INPUT_END,
|
27
|
+
isFinal: true,
|
28
|
+
});
|
29
|
+
}
|
30
|
+
onRawEvent(ev) {
|
31
|
+
super.onRawEvent(ev);
|
32
|
+
if (this.hasGestureFailed) {
|
33
|
+
return;
|
34
|
+
}
|
35
|
+
// Hammer doesn't send a `cancel` event for taps.
|
36
|
+
// Manually fail the event.
|
37
|
+
if (ev.isFinal) {
|
38
|
+
setTimeout(() => {
|
39
|
+
if (this.isGestureRunning) {
|
40
|
+
this.cancelEvent(ev);
|
41
|
+
}
|
42
|
+
});
|
43
|
+
}
|
44
|
+
else if (!this.hasGestureFailed && !this.isGestureRunning) {
|
45
|
+
// Tap Gesture start event
|
46
|
+
const gesture = this.hammer.get(this.name);
|
47
|
+
// @ts-ignore FIXME(TS)
|
48
|
+
if (gesture.options.enable(gesture, ev)) {
|
49
|
+
this.onStart(ev);
|
50
|
+
this.sendEvent(ev);
|
51
|
+
}
|
52
|
+
}
|
53
|
+
}
|
54
|
+
getHammerConfig() {
|
55
|
+
return {
|
56
|
+
// @ts-ignore FIXME(TS)
|
57
|
+
pointers: this.config.numberOfPointers,
|
58
|
+
direction: this.getDirection(),
|
59
|
+
};
|
60
|
+
}
|
61
|
+
getTargetDirections(direction) {
|
62
|
+
const directions = [];
|
63
|
+
if (direction & Direction.RIGHT) {
|
64
|
+
directions.push(Hammer.DIRECTION_RIGHT);
|
65
|
+
}
|
66
|
+
if (direction & Direction.LEFT) {
|
67
|
+
directions.push(Hammer.DIRECTION_LEFT);
|
68
|
+
}
|
69
|
+
if (direction & Direction.UP) {
|
70
|
+
directions.push(Hammer.DIRECTION_UP);
|
71
|
+
}
|
72
|
+
if (direction & Direction.DOWN) {
|
73
|
+
directions.push(Hammer.DIRECTION_DOWN);
|
74
|
+
}
|
75
|
+
// const hammerDirection = directions.reduce((a, b) => a | b, 0);
|
76
|
+
return directions;
|
77
|
+
}
|
78
|
+
getDirection() {
|
79
|
+
// @ts-ignore FIXME(TS)
|
80
|
+
const { direction } = this.getConfig();
|
81
|
+
let directions = [];
|
82
|
+
if (direction & Direction.RIGHT) {
|
83
|
+
directions.push(Hammer.DIRECTION_HORIZONTAL);
|
84
|
+
}
|
85
|
+
if (direction & Direction.LEFT) {
|
86
|
+
directions.push(Hammer.DIRECTION_HORIZONTAL);
|
87
|
+
}
|
88
|
+
if (direction & Direction.UP) {
|
89
|
+
directions.push(Hammer.DIRECTION_VERTICAL);
|
90
|
+
}
|
91
|
+
if (direction & Direction.DOWN) {
|
92
|
+
directions.push(Hammer.DIRECTION_VERTICAL);
|
93
|
+
}
|
94
|
+
directions = [...new Set(directions)];
|
95
|
+
if (directions.length === 0)
|
96
|
+
return Hammer.DIRECTION_NONE;
|
97
|
+
if (directions.length === 1)
|
98
|
+
return directions[0];
|
99
|
+
return Hammer.DIRECTION_ALL;
|
100
|
+
}
|
101
|
+
isGestureEnabledForEvent({ numberOfPointers }, _recognizer, { maxPointers: pointerLength }) {
|
102
|
+
const validPointerCount = pointerLength === numberOfPointers;
|
103
|
+
if (!validPointerCount && this.isGestureRunning) {
|
104
|
+
return { failed: true };
|
105
|
+
}
|
106
|
+
return { success: validPointerCount };
|
107
|
+
}
|
108
|
+
updateGestureConfig({ numberOfPointers = 1, direction, ...props }) {
|
109
|
+
if (isnan(direction) || typeof direction !== 'number') {
|
110
|
+
throw new GesturePropError('direction', direction, 'number');
|
111
|
+
}
|
112
|
+
return super.updateGestureConfig({
|
113
|
+
numberOfPointers,
|
114
|
+
direction,
|
115
|
+
...props,
|
116
|
+
});
|
117
|
+
}
|
118
|
+
}
|
119
|
+
export default FlingGestureHandler;
|