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,151 @@
|
|
1
|
+
import Hammer from '@egjs/hammerjs';
|
2
|
+
import { MULTI_FINGER_PAN_MAX_PINCH_THRESHOLD, MULTI_FINGER_PAN_MAX_ROTATION_THRESHOLD, } from './constants';
|
3
|
+
import DraggingGestureHandler from './DraggingGestureHandler';
|
4
|
+
import { isValidNumber, isnan, TEST_MIN_IF_NOT_NAN, VEC_LEN_SQ } from './utils';
|
5
|
+
import { State } from '../State';
|
6
|
+
class PanGestureHandler extends DraggingGestureHandler {
|
7
|
+
get name() {
|
8
|
+
return 'pan';
|
9
|
+
}
|
10
|
+
get NativeGestureClass() {
|
11
|
+
return Hammer.Pan;
|
12
|
+
}
|
13
|
+
getHammerConfig() {
|
14
|
+
return {
|
15
|
+
...super.getHammerConfig(),
|
16
|
+
direction: this.getDirection(),
|
17
|
+
};
|
18
|
+
}
|
19
|
+
getState(type) {
|
20
|
+
const nextState = super.getState(type);
|
21
|
+
// Ensure that the first state sent is `BEGAN` and not `ACTIVE`
|
22
|
+
if (this.previousState === State.UNDETERMINED &&
|
23
|
+
nextState === State.ACTIVE) {
|
24
|
+
return State.BEGAN;
|
25
|
+
}
|
26
|
+
return nextState;
|
27
|
+
}
|
28
|
+
getDirection() {
|
29
|
+
const config = this.getConfig();
|
30
|
+
const { activeOffsetXStart, activeOffsetXEnd, activeOffsetYStart, activeOffsetYEnd, minDist, } = config;
|
31
|
+
let directions = [];
|
32
|
+
let horizontalDirections = [];
|
33
|
+
if (!isnan(minDist)) {
|
34
|
+
return Hammer.DIRECTION_ALL;
|
35
|
+
}
|
36
|
+
if (!isnan(activeOffsetXStart)) {
|
37
|
+
horizontalDirections.push(Hammer.DIRECTION_LEFT);
|
38
|
+
}
|
39
|
+
if (!isnan(activeOffsetXEnd)) {
|
40
|
+
horizontalDirections.push(Hammer.DIRECTION_RIGHT);
|
41
|
+
}
|
42
|
+
if (horizontalDirections.length === 2) {
|
43
|
+
horizontalDirections = [Hammer.DIRECTION_HORIZONTAL];
|
44
|
+
}
|
45
|
+
directions = directions.concat(horizontalDirections);
|
46
|
+
let verticalDirections = [];
|
47
|
+
if (!isnan(activeOffsetYStart)) {
|
48
|
+
verticalDirections.push(Hammer.DIRECTION_UP);
|
49
|
+
}
|
50
|
+
if (!isnan(activeOffsetYEnd)) {
|
51
|
+
verticalDirections.push(Hammer.DIRECTION_DOWN);
|
52
|
+
}
|
53
|
+
if (verticalDirections.length === 2) {
|
54
|
+
verticalDirections = [Hammer.DIRECTION_VERTICAL];
|
55
|
+
}
|
56
|
+
directions = directions.concat(verticalDirections);
|
57
|
+
if (!directions.length) {
|
58
|
+
return Hammer.DIRECTION_NONE;
|
59
|
+
}
|
60
|
+
if (directions[0] === Hammer.DIRECTION_HORIZONTAL &&
|
61
|
+
directions[1] === Hammer.DIRECTION_VERTICAL) {
|
62
|
+
return Hammer.DIRECTION_ALL;
|
63
|
+
}
|
64
|
+
if (horizontalDirections.length && verticalDirections.length) {
|
65
|
+
return Hammer.DIRECTION_ALL;
|
66
|
+
}
|
67
|
+
return directions[0];
|
68
|
+
}
|
69
|
+
getConfig() {
|
70
|
+
if (!this.hasCustomActivationCriteria) {
|
71
|
+
// Default config
|
72
|
+
// If no params have been defined then this config should emulate the native gesture as closely as possible.
|
73
|
+
return {
|
74
|
+
minDistSq: 10,
|
75
|
+
};
|
76
|
+
}
|
77
|
+
return this.config;
|
78
|
+
}
|
79
|
+
shouldFailUnderCustomCriteria({ deltaX, deltaY }, criteria) {
|
80
|
+
return ((!isnan(criteria.failOffsetXStart) &&
|
81
|
+
deltaX < criteria.failOffsetXStart) ||
|
82
|
+
(!isnan(criteria.failOffsetXEnd) && deltaX > criteria.failOffsetXEnd) ||
|
83
|
+
(!isnan(criteria.failOffsetYStart) &&
|
84
|
+
deltaY < criteria.failOffsetYStart) ||
|
85
|
+
(!isnan(criteria.failOffsetYEnd) && deltaY > criteria.failOffsetYEnd));
|
86
|
+
}
|
87
|
+
shouldActivateUnderCustomCriteria({ deltaX, deltaY, velocity }, criteria) {
|
88
|
+
return ((!isnan(criteria.activeOffsetXStart) &&
|
89
|
+
deltaX < criteria.activeOffsetXStart) ||
|
90
|
+
(!isnan(criteria.activeOffsetXEnd) &&
|
91
|
+
deltaX > criteria.activeOffsetXEnd) ||
|
92
|
+
(!isnan(criteria.activeOffsetYStart) &&
|
93
|
+
deltaY < criteria.activeOffsetYStart) ||
|
94
|
+
(!isnan(criteria.activeOffsetYEnd) &&
|
95
|
+
deltaY > criteria.activeOffsetYEnd) ||
|
96
|
+
TEST_MIN_IF_NOT_NAN(VEC_LEN_SQ({ x: deltaX, y: deltaY }), criteria.minDistSq) ||
|
97
|
+
TEST_MIN_IF_NOT_NAN(velocity.x, criteria.minVelocityX) ||
|
98
|
+
TEST_MIN_IF_NOT_NAN(velocity.y, criteria.minVelocityY) ||
|
99
|
+
TEST_MIN_IF_NOT_NAN(VEC_LEN_SQ(velocity), criteria.minVelocitySq));
|
100
|
+
}
|
101
|
+
shouldMultiFingerPanFail({ pointerLength, scale, deltaRotation, }) {
|
102
|
+
if (pointerLength <= 1) {
|
103
|
+
return false;
|
104
|
+
}
|
105
|
+
// Test if the pan had too much pinching or rotating.
|
106
|
+
const deltaScale = Math.abs(scale - 1);
|
107
|
+
const absDeltaRotation = Math.abs(deltaRotation);
|
108
|
+
if (deltaScale > MULTI_FINGER_PAN_MAX_PINCH_THRESHOLD) {
|
109
|
+
// > If the threshold doesn't seem right.
|
110
|
+
// You can log the value which it failed at here:
|
111
|
+
return true;
|
112
|
+
}
|
113
|
+
if (absDeltaRotation > MULTI_FINGER_PAN_MAX_ROTATION_THRESHOLD) {
|
114
|
+
// > If the threshold doesn't seem right.
|
115
|
+
// You can log the value which it failed at here:
|
116
|
+
return true;
|
117
|
+
}
|
118
|
+
return false;
|
119
|
+
}
|
120
|
+
updateHasCustomActivationCriteria(criteria) {
|
121
|
+
return (isValidNumber(criteria.minDistSq) ||
|
122
|
+
isValidNumber(criteria.minVelocityX) ||
|
123
|
+
isValidNumber(criteria.minVelocityY) ||
|
124
|
+
isValidNumber(criteria.minVelocitySq) ||
|
125
|
+
isValidNumber(criteria.activeOffsetXStart) ||
|
126
|
+
isValidNumber(criteria.activeOffsetXEnd) ||
|
127
|
+
isValidNumber(criteria.activeOffsetYStart) ||
|
128
|
+
isValidNumber(criteria.activeOffsetYEnd));
|
129
|
+
}
|
130
|
+
isGestureEnabledForEvent(props, _recognizer, inputData) {
|
131
|
+
if (this.shouldFailUnderCustomCriteria(inputData, props)) {
|
132
|
+
return { failed: true };
|
133
|
+
}
|
134
|
+
const velocity = { x: inputData.velocityX, y: inputData.velocityY };
|
135
|
+
if (this.hasCustomActivationCriteria &&
|
136
|
+
this.shouldActivateUnderCustomCriteria({ deltaX: inputData.deltaX, deltaY: inputData.deltaY, velocity }, props)) {
|
137
|
+
if (this.shouldMultiFingerPanFail({
|
138
|
+
pointerLength: inputData.maxPointers,
|
139
|
+
scale: inputData.scale,
|
140
|
+
deltaRotation: inputData.deltaRotation,
|
141
|
+
})) {
|
142
|
+
return {
|
143
|
+
failed: true,
|
144
|
+
};
|
145
|
+
}
|
146
|
+
return { success: true };
|
147
|
+
}
|
148
|
+
return { success: false };
|
149
|
+
}
|
150
|
+
}
|
151
|
+
export default PanGestureHandler;
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import Hammer from '@egjs/hammerjs';
|
2
|
+
import IndiscreteGestureHandler from './IndiscreteGestureHandler';
|
3
|
+
class PinchGestureHandler extends IndiscreteGestureHandler {
|
4
|
+
get name() {
|
5
|
+
return 'pinch';
|
6
|
+
}
|
7
|
+
get NativeGestureClass() {
|
8
|
+
return Hammer.Pinch;
|
9
|
+
}
|
10
|
+
transformNativeEvent({ scale, velocity, center }) {
|
11
|
+
return {
|
12
|
+
focalX: center.x,
|
13
|
+
focalY: center.y,
|
14
|
+
velocity,
|
15
|
+
scale,
|
16
|
+
};
|
17
|
+
}
|
18
|
+
}
|
19
|
+
export default PinchGestureHandler;
|
@@ -0,0 +1,133 @@
|
|
1
|
+
import Hammer from '@egjs/hammerjs';
|
2
|
+
import { State } from '../State';
|
3
|
+
import { CONTENT_TOUCHES_DELAY, CONTENT_TOUCHES_QUICK_TAP_END_DELAY, } from './constants';
|
4
|
+
import DiscreteGestureHandler from './DiscreteGestureHandler';
|
5
|
+
import { fireAfterInterval, isValidNumber, isnan } from './utils';
|
6
|
+
class PressGestureHandler extends DiscreteGestureHandler {
|
7
|
+
visualFeedbackTimer;
|
8
|
+
initialEvent = null;
|
9
|
+
get name() {
|
10
|
+
return 'press';
|
11
|
+
}
|
12
|
+
get minDurationMs() {
|
13
|
+
// @ts-ignore FIXME(TS)
|
14
|
+
return isnan(this.config.minDurationMs) ? 5 : this.config.minDurationMs;
|
15
|
+
}
|
16
|
+
get maxDist() {
|
17
|
+
return isnan(this.config.maxDist) ? 9 : this.config.maxDist;
|
18
|
+
}
|
19
|
+
get NativeGestureClass() {
|
20
|
+
return Hammer.Press;
|
21
|
+
}
|
22
|
+
shouldDelayTouches = true;
|
23
|
+
simulateCancelEvent(inputData) {
|
24
|
+
// Long press never starts so we can't rely on the running event boolean.
|
25
|
+
this.hasGestureFailed = true;
|
26
|
+
this.cancelEvent(inputData);
|
27
|
+
}
|
28
|
+
updateHasCustomActivationCriteria({ shouldCancelWhenOutside, maxDistSq, }) {
|
29
|
+
return shouldCancelWhenOutside || !isValidNumber(maxDistSq);
|
30
|
+
}
|
31
|
+
getState(type) {
|
32
|
+
return {
|
33
|
+
[Hammer.INPUT_START]: State.BEGAN,
|
34
|
+
[Hammer.INPUT_MOVE]: State.ACTIVE,
|
35
|
+
[Hammer.INPUT_END]: State.END,
|
36
|
+
[Hammer.INPUT_CANCEL]: State.CANCELLED,
|
37
|
+
}[type];
|
38
|
+
}
|
39
|
+
getConfig() {
|
40
|
+
if (!this.hasCustomActivationCriteria) {
|
41
|
+
// Default config
|
42
|
+
// If no params have been defined then this config should emulate the native gesture as closely as possible.
|
43
|
+
return {
|
44
|
+
shouldCancelWhenOutside: true,
|
45
|
+
maxDistSq: 10,
|
46
|
+
};
|
47
|
+
}
|
48
|
+
return this.config;
|
49
|
+
}
|
50
|
+
getHammerConfig() {
|
51
|
+
return {
|
52
|
+
...super.getHammerConfig(),
|
53
|
+
// threshold: this.maxDist,
|
54
|
+
time: this.minDurationMs,
|
55
|
+
};
|
56
|
+
}
|
57
|
+
onGestureActivated(ev) {
|
58
|
+
this.onGestureStart(ev);
|
59
|
+
}
|
60
|
+
shouldDelayTouchForEvent({ pointerType }) {
|
61
|
+
// Don't disable event for mouse input
|
62
|
+
return this.shouldDelayTouches && pointerType === 'touch';
|
63
|
+
}
|
64
|
+
onGestureStart(ev) {
|
65
|
+
this.isGestureRunning = true;
|
66
|
+
clearTimeout(this.visualFeedbackTimer);
|
67
|
+
this.initialEvent = ev;
|
68
|
+
this.visualFeedbackTimer = fireAfterInterval(() => {
|
69
|
+
this.sendGestureStartedEvent(this.initialEvent);
|
70
|
+
this.initialEvent = null;
|
71
|
+
}, this.shouldDelayTouchForEvent(ev) && CONTENT_TOUCHES_DELAY);
|
72
|
+
}
|
73
|
+
sendGestureStartedEvent(ev) {
|
74
|
+
clearTimeout(this.visualFeedbackTimer);
|
75
|
+
this.visualFeedbackTimer = null;
|
76
|
+
this.sendEvent({
|
77
|
+
...ev,
|
78
|
+
eventType: Hammer.INPUT_MOVE,
|
79
|
+
isFirst: true,
|
80
|
+
});
|
81
|
+
}
|
82
|
+
forceInvalidate(event) {
|
83
|
+
super.forceInvalidate(event);
|
84
|
+
clearTimeout(this.visualFeedbackTimer);
|
85
|
+
this.visualFeedbackTimer = null;
|
86
|
+
this.initialEvent = null;
|
87
|
+
}
|
88
|
+
onRawEvent(ev) {
|
89
|
+
super.onRawEvent(ev);
|
90
|
+
if (this.isGestureRunning) {
|
91
|
+
if (ev.isFinal) {
|
92
|
+
let timeout;
|
93
|
+
if (this.visualFeedbackTimer) {
|
94
|
+
// Aesthetic timing for a quick tap.
|
95
|
+
// We haven't activated the tap right away to emulate iOS `delaysContentTouches`
|
96
|
+
// Now we must send the initial activation event and wait a set amount of time before firing the end event.
|
97
|
+
timeout = CONTENT_TOUCHES_QUICK_TAP_END_DELAY;
|
98
|
+
this.sendGestureStartedEvent(this.initialEvent);
|
99
|
+
this.initialEvent = null;
|
100
|
+
}
|
101
|
+
fireAfterInterval(() => {
|
102
|
+
this.sendEvent({
|
103
|
+
...ev,
|
104
|
+
eventType: Hammer.INPUT_END,
|
105
|
+
isFinal: true,
|
106
|
+
});
|
107
|
+
// @ts-ignore -- this should explicitly support undefined
|
108
|
+
this.onGestureEnded();
|
109
|
+
}, timeout);
|
110
|
+
}
|
111
|
+
else {
|
112
|
+
this.sendEvent({
|
113
|
+
...ev,
|
114
|
+
eventType: Hammer.INPUT_MOVE,
|
115
|
+
isFinal: false,
|
116
|
+
});
|
117
|
+
}
|
118
|
+
}
|
119
|
+
}
|
120
|
+
updateGestureConfig({ shouldActivateOnStart = false, disallowInterruption = false, shouldCancelWhenOutside = true, minDurationMs = Number.NaN, maxDist = Number.NaN, minPointers = 1, maxPointers = 1, ...props }) {
|
121
|
+
return super.updateGestureConfig({
|
122
|
+
shouldActivateOnStart,
|
123
|
+
disallowInterruption,
|
124
|
+
shouldCancelWhenOutside,
|
125
|
+
minDurationMs,
|
126
|
+
maxDist,
|
127
|
+
minPointers,
|
128
|
+
maxPointers,
|
129
|
+
...props,
|
130
|
+
});
|
131
|
+
}
|
132
|
+
}
|
133
|
+
export default PressGestureHandler;
|
@@ -0,0 +1,20 @@
|
|
1
|
+
import Hammer from '@egjs/hammerjs';
|
2
|
+
import { DEG_RAD } from './constants';
|
3
|
+
import IndiscreteGestureHandler from './IndiscreteGestureHandler';
|
4
|
+
class RotationGestureHandler extends IndiscreteGestureHandler {
|
5
|
+
get name() {
|
6
|
+
return 'rotate';
|
7
|
+
}
|
8
|
+
get NativeGestureClass() {
|
9
|
+
return Hammer.Rotate;
|
10
|
+
}
|
11
|
+
transformNativeEvent({ rotation, velocity, center }) {
|
12
|
+
return {
|
13
|
+
rotation: (rotation - (this.initialRotation ?? 0)) * DEG_RAD,
|
14
|
+
anchorX: center.x,
|
15
|
+
anchorY: center.y,
|
16
|
+
velocity,
|
17
|
+
};
|
18
|
+
}
|
19
|
+
}
|
20
|
+
export default RotationGestureHandler;
|
@@ -0,0 +1,142 @@
|
|
1
|
+
import Hammer from '@egjs/hammerjs';
|
2
|
+
import DiscreteGestureHandler from './DiscreteGestureHandler';
|
3
|
+
import { isnan } from './utils';
|
4
|
+
class TapGestureHandler extends DiscreteGestureHandler {
|
5
|
+
_shouldFireEndEvent = null;
|
6
|
+
_timer;
|
7
|
+
_multiTapTimer; // TODO unused?
|
8
|
+
get name() {
|
9
|
+
return 'tap';
|
10
|
+
}
|
11
|
+
get NativeGestureClass() {
|
12
|
+
return Hammer.Tap;
|
13
|
+
}
|
14
|
+
get maxDelayMs() {
|
15
|
+
// @ts-ignore TODO(TS) trace down config
|
16
|
+
return isnan(this.config.maxDelayMs) ? 300 : this.config.maxDelayMs;
|
17
|
+
}
|
18
|
+
simulateCancelEvent(inputData) {
|
19
|
+
if (this.isGestureRunning) {
|
20
|
+
this.cancelEvent(inputData);
|
21
|
+
}
|
22
|
+
}
|
23
|
+
onGestureActivated(ev) {
|
24
|
+
if (this.isGestureRunning) {
|
25
|
+
this.onSuccessfulTap(ev);
|
26
|
+
}
|
27
|
+
}
|
28
|
+
onSuccessfulTap = (ev) => {
|
29
|
+
if (this._getPendingGestures().length) {
|
30
|
+
this._shouldFireEndEvent = ev;
|
31
|
+
return;
|
32
|
+
}
|
33
|
+
if (ev.eventType === Hammer.INPUT_END) {
|
34
|
+
this.sendEvent({ ...ev, eventType: Hammer.INPUT_MOVE });
|
35
|
+
}
|
36
|
+
// When handler gets activated it will turn into State.END immediately.
|
37
|
+
this.sendEvent({ ...ev, isFinal: true });
|
38
|
+
this.onGestureEnded(ev);
|
39
|
+
};
|
40
|
+
onRawEvent(ev) {
|
41
|
+
super.onRawEvent(ev);
|
42
|
+
// Attempt to create a touch-down event by checking if a valid tap hasn't started yet, then validating the input.
|
43
|
+
if (!this.hasGestureFailed &&
|
44
|
+
!this.isGestureRunning &&
|
45
|
+
// Prevent multi-pointer events from misfiring.
|
46
|
+
!ev.isFinal) {
|
47
|
+
// Tap Gesture start event
|
48
|
+
const gesture = this.hammer.get(this.name);
|
49
|
+
// @ts-ignore TODO(TS) trace down config
|
50
|
+
if (gesture.options.enable(gesture, ev)) {
|
51
|
+
clearTimeout(this._multiTapTimer);
|
52
|
+
this.onStart(ev);
|
53
|
+
this.sendEvent(ev);
|
54
|
+
}
|
55
|
+
}
|
56
|
+
if (ev.isFinal && ev.maxPointers > 1) {
|
57
|
+
setTimeout(() => {
|
58
|
+
// Handle case where one finger presses slightly
|
59
|
+
// after the first finger on a multi-tap event
|
60
|
+
if (this.isGestureRunning) {
|
61
|
+
this.cancelEvent(ev);
|
62
|
+
}
|
63
|
+
});
|
64
|
+
}
|
65
|
+
if (this.hasGestureFailed) {
|
66
|
+
return;
|
67
|
+
}
|
68
|
+
// Hammer doesn't send a `cancel` event for taps.
|
69
|
+
// Manually fail the event.
|
70
|
+
if (ev.isFinal) {
|
71
|
+
// Handle case where one finger presses slightly
|
72
|
+
// after the first finger on a multi-tap event
|
73
|
+
if (ev.maxPointers > 1) {
|
74
|
+
setTimeout(() => {
|
75
|
+
if (this.isGestureRunning) {
|
76
|
+
this.cancelEvent(ev);
|
77
|
+
}
|
78
|
+
});
|
79
|
+
}
|
80
|
+
// Clear last timer
|
81
|
+
clearTimeout(this._timer);
|
82
|
+
// Create time out for multi-taps.
|
83
|
+
this._timer = setTimeout(() => {
|
84
|
+
this.hasGestureFailed = true;
|
85
|
+
this.cancelEvent(ev);
|
86
|
+
}, this.maxDelayMs);
|
87
|
+
}
|
88
|
+
else if (!this.hasGestureFailed && !this.isGestureRunning) {
|
89
|
+
// Tap Gesture start event
|
90
|
+
const gesture = this.hammer.get(this.name);
|
91
|
+
// @ts-ignore TODO(TS) trace down config
|
92
|
+
if (gesture.options.enable(gesture, ev)) {
|
93
|
+
clearTimeout(this._multiTapTimer);
|
94
|
+
this.onStart(ev);
|
95
|
+
this.sendEvent(ev);
|
96
|
+
}
|
97
|
+
}
|
98
|
+
}
|
99
|
+
getHammerConfig() {
|
100
|
+
return {
|
101
|
+
...super.getHammerConfig(),
|
102
|
+
event: this.name,
|
103
|
+
// @ts-ignore TODO(TS) trace down config
|
104
|
+
taps: isnan(this.config.numberOfTaps) ? 1 : this.config.numberOfTaps,
|
105
|
+
interval: this.maxDelayMs,
|
106
|
+
time:
|
107
|
+
// @ts-ignore TODO(TS) trace down config
|
108
|
+
isnan(this.config.maxDurationMs) || this.config.maxDurationMs == null
|
109
|
+
? 250
|
110
|
+
: // @ts-ignore TODO(TS) trace down config
|
111
|
+
this.config.maxDurationMs,
|
112
|
+
};
|
113
|
+
}
|
114
|
+
updateGestureConfig({ shouldCancelWhenOutside = true, maxDeltaX = Number.NaN, maxDeltaY = Number.NaN, numberOfTaps = 1, minDurationMs = 525, maxDelayMs = Number.NaN,
|
115
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars -- TODO possibly forgotten to use in updateGestureConfig?
|
116
|
+
maxDurationMs = Number.NaN, maxDist = 2, minPointers = 1, maxPointers = 1, ...props }) {
|
117
|
+
return super.updateGestureConfig({
|
118
|
+
shouldCancelWhenOutside,
|
119
|
+
numberOfTaps,
|
120
|
+
maxDeltaX,
|
121
|
+
maxDeltaY,
|
122
|
+
minDurationMs,
|
123
|
+
maxDelayMs,
|
124
|
+
maxDist,
|
125
|
+
minPointers,
|
126
|
+
maxPointers,
|
127
|
+
...props,
|
128
|
+
});
|
129
|
+
}
|
130
|
+
onGestureEnded(...props) {
|
131
|
+
clearTimeout(this._timer);
|
132
|
+
// @ts-ignore TODO(TS) check how onGestureEnded works
|
133
|
+
super.onGestureEnded(...props);
|
134
|
+
}
|
135
|
+
onWaitingEnded(_gesture) {
|
136
|
+
if (this._shouldFireEndEvent) {
|
137
|
+
this.onSuccessfulTap(this._shouldFireEndEvent);
|
138
|
+
this._shouldFireEndEvent = null;
|
139
|
+
}
|
140
|
+
}
|
141
|
+
}
|
142
|
+
export default TapGestureHandler;
|
@@ -0,0 +1,42 @@
|
|
1
|
+
import Hammer from '@egjs/hammerjs';
|
2
|
+
import { State } from '../State';
|
3
|
+
export const CONTENT_TOUCHES_DELAY = 240;
|
4
|
+
export const CONTENT_TOUCHES_QUICK_TAP_END_DELAY = 50;
|
5
|
+
export const MULTI_FINGER_PAN_MAX_PINCH_THRESHOLD = 0.1;
|
6
|
+
export const MULTI_FINGER_PAN_MAX_ROTATION_THRESHOLD = 7;
|
7
|
+
export const DEG_RAD = Math.PI / 180;
|
8
|
+
// Map Hammer values to RNGH
|
9
|
+
export const EventMap = {
|
10
|
+
[Hammer.INPUT_START]: State.BEGAN,
|
11
|
+
[Hammer.INPUT_MOVE]: State.ACTIVE,
|
12
|
+
[Hammer.INPUT_END]: State.END,
|
13
|
+
[Hammer.INPUT_CANCEL]: State.FAILED,
|
14
|
+
};
|
15
|
+
export const Direction = {
|
16
|
+
RIGHT: 1,
|
17
|
+
LEFT: 2,
|
18
|
+
UP: 4,
|
19
|
+
DOWN: 8,
|
20
|
+
};
|
21
|
+
export const DirectionMap = {
|
22
|
+
[Hammer.DIRECTION_RIGHT]: Direction.RIGHT,
|
23
|
+
[Hammer.DIRECTION_LEFT]: Direction.LEFT,
|
24
|
+
[Hammer.DIRECTION_UP]: Direction.UP,
|
25
|
+
[Hammer.DIRECTION_DOWN]: Direction.DOWN,
|
26
|
+
};
|
27
|
+
export const HammerInputNames = {
|
28
|
+
[Hammer.INPUT_START]: 'START',
|
29
|
+
[Hammer.INPUT_MOVE]: 'MOVE',
|
30
|
+
[Hammer.INPUT_END]: 'END',
|
31
|
+
[Hammer.INPUT_CANCEL]: 'CANCEL',
|
32
|
+
};
|
33
|
+
export const HammerDirectionNames = {
|
34
|
+
[Hammer.DIRECTION_HORIZONTAL]: 'HORIZONTAL',
|
35
|
+
[Hammer.DIRECTION_UP]: 'UP',
|
36
|
+
[Hammer.DIRECTION_DOWN]: 'DOWN',
|
37
|
+
[Hammer.DIRECTION_VERTICAL]: 'VERTICAL',
|
38
|
+
[Hammer.DIRECTION_NONE]: 'NONE',
|
39
|
+
[Hammer.DIRECTION_ALL]: 'ALL',
|
40
|
+
[Hammer.DIRECTION_RIGHT]: 'RIGHT',
|
41
|
+
[Hammer.DIRECTION_LEFT]: 'LEFT',
|
42
|
+
};
|
@@ -7,4 +7,3 @@ export declare const VEC_LEN_SQ: ({ x, y }?: {
|
|
7
7
|
}) => number;
|
8
8
|
export declare const TEST_MAX_IF_NOT_NAN: (value: number, max: number) => boolean;
|
9
9
|
export declare function fireAfterInterval(method: () => void, interval?: number | boolean): number | null;
|
10
|
-
//# sourceMappingURL=utils.d.ts.map
|
@@ -0,0 +1,15 @@
|
|
1
|
+
// TODO(TS) remove if not necessary after rewrite
|
2
|
+
export const isnan = (v) => Number.isNaN(v);
|
3
|
+
// TODO(TS) remove if not necessary after rewrite
|
4
|
+
export const isValidNumber = (v) => typeof v === 'number' && !Number.isNaN(v);
|
5
|
+
export const TEST_MIN_IF_NOT_NAN = (value, limit) => !isnan(limit) &&
|
6
|
+
((limit < 0 && value <= limit) || (limit >= 0 && value >= limit));
|
7
|
+
export const VEC_LEN_SQ = ({ x = 0, y = 0 } = {}) => x * x + y * y;
|
8
|
+
export const TEST_MAX_IF_NOT_NAN = (value, max) => !isnan(max) && ((max < 0 && value < max) || (max >= 0 && value > max));
|
9
|
+
export function fireAfterInterval(method, interval) {
|
10
|
+
if (!interval) {
|
11
|
+
method();
|
12
|
+
return null;
|
13
|
+
}
|
14
|
+
return setTimeout(() => method(), interval);
|
15
|
+
}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "react-native-gesture-handler",
|
3
|
-
"version": "2.
|
3
|
+
"version": "2.27.1",
|
4
4
|
"description": "Declarative API exposing native platform touch and gesture system to React Native",
|
5
5
|
"scripts": {
|
6
6
|
"test": "jest",
|
@@ -16,7 +16,9 @@
|
|
16
16
|
"circular-dependency-check": "yarn madge --extensions js,ts,tsx --circular src",
|
17
17
|
"architectures-consistency-check": "node ../../scripts/codegen-check-consistency.js",
|
18
18
|
"sync-architectures": "node ../../scripts/codegen-sync-archs.js",
|
19
|
-
"clean": "rm -rf node_modules android/build android/.cxx"
|
19
|
+
"clean": "rm -rf node_modules android/build android/.cxx",
|
20
|
+
"prepack": "cp ../../README.md ./README.md",
|
21
|
+
"postpack": "rm ./README.md"
|
20
22
|
},
|
21
23
|
"react-native": "src/index.ts",
|
22
24
|
"main": "lib/commonjs/index.js",
|