react-native-gesture-handler 2.17.1 → 2.18.0
Sign up to get free protection for your applications and to get access to all the features.
- package/ReanimatedSwipeable/package.json +6 -0
- package/android/build.gradle +0 -103
- package/android/gradle.properties +0 -7
- package/android/paper/src/main/java/com/swmansion/gesturehandler/NativeRNGestureHandlerModuleSpec.java +22 -10
- package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt +1 -1
- package/android/src/main/java/com/swmansion/gesturehandler/core/NativeViewGestureHandler.kt +16 -0
- package/android/src/main/java/com/swmansion/gesturehandler/core/PinchGestureHandler.kt +7 -8
- package/android/src/main/java/com/swmansion/gesturehandler/core/RotationGestureDetector.kt +14 -4
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt +3 -1
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt +3 -1
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt +2 -1
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.kt +8 -7
- package/android/src/main/jni/cpp-adapter.cpp +5 -3
- package/apple/Handlers/RNFlingHandler.m +1 -0
- package/apple/Handlers/RNForceTouchHandler.m +2 -0
- package/apple/Handlers/RNLongPressHandler.m +2 -1
- package/apple/Handlers/RNManualHandler.m +1 -0
- package/apple/Handlers/RNNativeViewHandler.mm +31 -27
- package/apple/Handlers/RNPanHandler.m +1 -0
- package/apple/Handlers/RNPinchHandler.m +1 -0
- package/apple/Handlers/RNRotationHandler.m +1 -0
- package/apple/Handlers/RNTapHandler.m +1 -0
- package/apple/RNGestureHandlerModule.mm +3 -2
- package/apple/RNRootViewGestureRecognizer.m +5 -0
- package/lib/commonjs/Directions.js +2 -2
- package/lib/commonjs/Directions.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.web.js +2 -2
- package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/commonjs/components/DrawerLayout.js +2 -2
- package/lib/commonjs/components/DrawerLayout.js.map +1 -1
- package/lib/commonjs/components/GestureButtons.js +3 -3
- package/lib/commonjs/components/GestureButtons.js.map +1 -1
- package/lib/commonjs/components/GestureButtonsProps.js +6 -0
- package/lib/commonjs/components/GestureButtonsProps.js.map +1 -0
- package/lib/commonjs/components/GestureComponents.js +1 -1
- package/lib/commonjs/components/GestureComponents.js.map +1 -1
- package/lib/commonjs/components/GestureHandlerButton.js.map +1 -1
- package/lib/commonjs/components/GestureHandlerRootView.android.js +1 -1
- package/lib/commonjs/components/GestureHandlerRootView.android.js.map +1 -1
- package/lib/commonjs/components/GestureHandlerRootView.js +1 -1
- package/lib/commonjs/components/GestureHandlerRootView.js.map +1 -1
- package/lib/commonjs/components/Pressable/Pressable.js +334 -0
- package/lib/commonjs/components/Pressable/Pressable.js.map +1 -0
- package/lib/commonjs/components/Pressable/PressableProps.js +6 -0
- package/lib/commonjs/components/Pressable/PressableProps.js.map +1 -0
- package/lib/commonjs/components/Pressable/index.js +24 -0
- package/lib/commonjs/components/Pressable/index.js.map +1 -0
- package/lib/commonjs/components/Pressable/utils.js +136 -0
- package/lib/commonjs/components/Pressable/utils.js.map +1 -0
- package/lib/commonjs/components/ReanimatedSwipeable.js +317 -0
- package/lib/commonjs/components/ReanimatedSwipeable.js.map +1 -0
- package/lib/commonjs/components/Swipeable.js +3 -3
- package/lib/commonjs/components/Swipeable.js.map +1 -1
- package/lib/commonjs/components/touchables/GenericTouchable.js +4 -4
- package/lib/commonjs/components/touchables/GenericTouchable.js.map +1 -1
- package/lib/commonjs/components/touchables/GenericTouchableProps.js +6 -0
- package/lib/commonjs/components/touchables/GenericTouchableProps.js.map +1 -0
- package/lib/commonjs/components/touchables/TouchableHighlight.js.map +1 -1
- package/lib/commonjs/components/touchables/TouchableNativeFeedback.android.js +1 -1
- package/lib/commonjs/components/touchables/TouchableNativeFeedback.android.js.map +1 -1
- package/lib/commonjs/components/touchables/TouchableNativeFeedbackProps.js +6 -0
- package/lib/commonjs/components/touchables/TouchableNativeFeedbackProps.js.map +1 -0
- package/lib/commonjs/components/touchables/TouchableOpacity.js.map +1 -1
- package/lib/commonjs/components/touchables/TouchableWithoutFeedback.js.map +1 -1
- package/lib/commonjs/getShadowNodeFromRef.js +2 -2
- package/lib/commonjs/getShadowNodeFromRef.js.map +1 -1
- package/lib/commonjs/ghQueueMicrotask.js +3 -4
- package/lib/commonjs/ghQueueMicrotask.js.map +1 -1
- package/lib/commonjs/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/ForceTouchGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/GestureHandlerEventPayload.js +2 -0
- package/lib/commonjs/handlers/GestureHandlerEventPayload.js.map +1 -0
- package/lib/commonjs/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/PanGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/TapGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/createHandler.js +21 -19
- package/lib/commonjs/handlers/createHandler.js.map +1 -1
- package/lib/commonjs/handlers/createNativeWrapper.js +3 -3
- package/lib/commonjs/handlers/createNativeWrapper.js.map +1 -1
- package/lib/commonjs/handlers/gestureHandlerCommon.js +0 -86
- package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/Wrap.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/attachHandlers.js +9 -9
- package/lib/commonjs/handlers/gestures/GestureDetector/attachHandlers.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/dropHandlers.js +2 -2
- package/lib/commonjs/handlers/gestures/GestureDetector/dropHandlers.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/index.js +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/index.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/updateHandlers.js +21 -31
- package/lib/commonjs/handlers/gestures/GestureDetector/updateHandlers.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/useDetectorUpdater.js +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/useDetectorUpdater.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/utils.js +5 -5
- package/lib/commonjs/handlers/gestures/GestureDetector/utils.js.map +1 -1
- package/lib/commonjs/handlers/gestures/flingGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/forceTouchGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gesture.js +7 -7
- package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gestureComposition.js +5 -5
- package/lib/commonjs/handlers/gestures/gestureComposition.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gestureStateManager.js +1 -1
- package/lib/commonjs/handlers/gestures/gestureStateManager.js.map +1 -1
- package/lib/commonjs/handlers/gestures/longPressGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/nativeGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/panGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/pinchGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/rotationGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/tapGesture.js.map +1 -1
- package/lib/commonjs/handlers/getNextHandlerTag.js +12 -0
- package/lib/commonjs/handlers/getNextHandlerTag.js.map +1 -0
- package/lib/commonjs/handlers/handlersRegistry.js +0 -6
- package/lib/commonjs/handlers/handlersRegistry.js.map +1 -1
- package/lib/commonjs/handlers/utils.js +91 -0
- package/lib/commonjs/handlers/utils.js.map +1 -0
- package/lib/commonjs/index.js +8 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/init.js +1 -1
- package/lib/commonjs/init.js.map +1 -1
- package/lib/commonjs/jestUtils/jestUtils.js +2 -2
- package/lib/commonjs/jestUtils/jestUtils.js.map +1 -1
- package/lib/commonjs/mocks.js +2 -2
- package/lib/commonjs/mocks.js.map +1 -1
- package/lib/commonjs/utils.js +1 -1
- package/lib/commonjs/utils.js.map +1 -1
- package/lib/commonjs/web/Gestures.js +1 -1
- package/lib/commonjs/web/Gestures.js.map +1 -1
- package/lib/commonjs/web/detectors/RotationGestureDetector.js +1 -1
- package/lib/commonjs/web/detectors/RotationGestureDetector.js.map +1 -1
- package/lib/commonjs/web/detectors/ScaleGestureDetector.js +4 -4
- package/lib/commonjs/web/detectors/ScaleGestureDetector.js.map +1 -1
- package/lib/commonjs/web/handlers/FlingGestureHandler.js +1 -1
- package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/GestureHandler.js +6 -11
- package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +1 -1
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PanGestureHandler.js +1 -1
- package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/TapGestureHandler.js +1 -1
- package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/commonjs/web/tools/EventManager.js +2 -2
- package/lib/commonjs/web/tools/EventManager.js.map +1 -1
- package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js +4 -11
- package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js.map +1 -1
- package/lib/commonjs/web/tools/LeastSquareSolver.js +18 -18
- package/lib/commonjs/web/tools/LeastSquareSolver.js.map +1 -1
- package/lib/commonjs/web/tools/PointerEventManager.js +2 -2
- package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -1
- package/lib/commonjs/web/tools/PointerTracker.js +1 -1
- package/lib/commonjs/web/tools/PointerTracker.js.map +1 -1
- package/lib/commonjs/web/tools/TouchEventManager.js +4 -4
- package/lib/commonjs/web/tools/TouchEventManager.js.map +1 -1
- package/lib/commonjs/web/tools/VelocityTracker.js +6 -6
- package/lib/commonjs/web/tools/VelocityTracker.js.map +1 -1
- package/lib/commonjs/web_hammer/NodeManager.js +2 -0
- package/lib/commonjs/web_hammer/NodeManager.js.map +1 -1
- package/lib/module/Directions.js +2 -2
- package/lib/module/Directions.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.web.js +2 -2
- package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/module/components/DrawerLayout.js +2 -2
- package/lib/module/components/DrawerLayout.js.map +1 -1
- package/lib/module/components/GestureButtons.js +3 -3
- package/lib/module/components/GestureButtons.js.map +1 -1
- package/lib/module/components/GestureButtonsProps.js +2 -0
- package/lib/module/components/GestureButtonsProps.js.map +1 -0
- package/lib/module/components/GestureComponents.js +1 -1
- package/lib/module/components/GestureComponents.js.map +1 -1
- package/lib/module/components/GestureHandlerButton.js.map +1 -1
- package/lib/module/components/GestureHandlerRootView.android.js +1 -1
- package/lib/module/components/GestureHandlerRootView.android.js.map +1 -1
- package/lib/module/components/GestureHandlerRootView.js +1 -1
- package/lib/module/components/GestureHandlerRootView.js.map +1 -1
- package/lib/module/components/Pressable/Pressable.js +309 -0
- package/lib/module/components/Pressable/Pressable.js.map +1 -0
- package/lib/module/components/Pressable/PressableProps.js +2 -0
- package/lib/module/components/Pressable/PressableProps.js.map +1 -0
- package/lib/module/components/Pressable/index.js +3 -0
- package/lib/module/components/Pressable/index.js.map +1 -0
- package/lib/module/components/Pressable/utils.js +120 -0
- package/lib/module/components/Pressable/utils.js.map +1 -0
- package/lib/module/components/ReanimatedSwipeable.js +293 -0
- package/lib/module/components/ReanimatedSwipeable.js.map +1 -0
- package/lib/module/components/Swipeable.js +3 -3
- package/lib/module/components/Swipeable.js.map +1 -1
- package/lib/module/components/touchables/GenericTouchable.js +4 -4
- package/lib/module/components/touchables/GenericTouchable.js.map +1 -1
- package/lib/module/components/touchables/GenericTouchableProps.js +2 -0
- package/lib/module/components/touchables/GenericTouchableProps.js.map +1 -0
- package/lib/module/components/touchables/TouchableHighlight.js.map +1 -1
- package/lib/module/components/touchables/TouchableNativeFeedback.android.js +1 -1
- package/lib/module/components/touchables/TouchableNativeFeedback.android.js.map +1 -1
- package/lib/module/components/touchables/TouchableNativeFeedbackProps.js +2 -0
- package/lib/module/components/touchables/TouchableNativeFeedbackProps.js.map +1 -0
- package/lib/module/components/touchables/TouchableOpacity.js.map +1 -1
- package/lib/module/components/touchables/TouchableWithoutFeedback.js.map +1 -1
- package/lib/module/getShadowNodeFromRef.js +2 -2
- package/lib/module/getShadowNodeFromRef.js.map +1 -1
- package/lib/module/ghQueueMicrotask.js +3 -4
- package/lib/module/ghQueueMicrotask.js.map +1 -1
- package/lib/module/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/module/handlers/ForceTouchGestureHandler.js.map +1 -1
- package/lib/module/handlers/GestureHandlerEventPayload.js +2 -0
- package/lib/module/handlers/GestureHandlerEventPayload.js.map +1 -0
- package/lib/module/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/module/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/module/handlers/PanGestureHandler.js.map +1 -1
- package/lib/module/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/module/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/module/handlers/TapGestureHandler.js.map +1 -1
- package/lib/module/handlers/createHandler.js +6 -5
- package/lib/module/handlers/createHandler.js.map +1 -1
- package/lib/module/handlers/createNativeWrapper.js +3 -3
- package/lib/module/handlers/createNativeWrapper.js.map +1 -1
- package/lib/module/handlers/gestureHandlerCommon.js +0 -72
- package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/Wrap.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/attachHandlers.js +4 -4
- package/lib/module/handlers/gestures/GestureDetector/attachHandlers.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/dropHandlers.js +1 -1
- package/lib/module/handlers/gestures/GestureDetector/dropHandlers.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/index.js +1 -1
- package/lib/module/handlers/gestures/GestureDetector/index.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/updateHandlers.js +18 -28
- package/lib/module/handlers/gestures/GestureDetector/updateHandlers.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/useDetectorUpdater.js +1 -1
- package/lib/module/handlers/gestures/GestureDetector/useDetectorUpdater.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/utils.js +5 -5
- package/lib/module/handlers/gestures/GestureDetector/utils.js.map +1 -1
- package/lib/module/handlers/gestures/flingGesture.js.map +1 -1
- package/lib/module/handlers/gestures/forceTouchGesture.js.map +1 -1
- package/lib/module/handlers/gestures/gesture.js +6 -6
- package/lib/module/handlers/gestures/gesture.js.map +1 -1
- package/lib/module/handlers/gestures/gestureComposition.js +5 -5
- package/lib/module/handlers/gestures/gestureComposition.js.map +1 -1
- package/lib/module/handlers/gestures/gestureStateManager.js +1 -1
- package/lib/module/handlers/gestures/gestureStateManager.js.map +1 -1
- package/lib/module/handlers/gestures/longPressGesture.js.map +1 -1
- package/lib/module/handlers/gestures/nativeGesture.js.map +1 -1
- package/lib/module/handlers/gestures/panGesture.js.map +1 -1
- package/lib/module/handlers/gestures/pinchGesture.js.map +1 -1
- package/lib/module/handlers/gestures/rotationGesture.js.map +1 -1
- package/lib/module/handlers/gestures/tapGesture.js.map +1 -1
- package/lib/module/handlers/getNextHandlerTag.js +5 -0
- package/lib/module/handlers/getNextHandlerTag.js.map +1 -0
- package/lib/module/handlers/handlersRegistry.js +0 -4
- package/lib/module/handlers/handlersRegistry.js.map +1 -1
- package/lib/module/handlers/utils.js +73 -0
- package/lib/module/handlers/utils.js.map +1 -0
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/init.js +1 -1
- package/lib/module/init.js.map +1 -1
- package/lib/module/jestUtils/jestUtils.js +2 -2
- package/lib/module/jestUtils/jestUtils.js.map +1 -1
- package/lib/module/mocks.js +2 -2
- package/lib/module/mocks.js.map +1 -1
- package/lib/module/utils.js +1 -1
- package/lib/module/utils.js.map +1 -1
- package/lib/module/web/Gestures.js +1 -1
- package/lib/module/web/Gestures.js.map +1 -1
- package/lib/module/web/detectors/RotationGestureDetector.js +1 -1
- package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -1
- package/lib/module/web/detectors/ScaleGestureDetector.js +4 -4
- package/lib/module/web/detectors/ScaleGestureDetector.js.map +1 -1
- package/lib/module/web/handlers/FlingGestureHandler.js +1 -1
- package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/GestureHandler.js +6 -11
- package/lib/module/web/handlers/GestureHandler.js.map +1 -1
- package/lib/module/web/handlers/NativeViewGestureHandler.js +1 -1
- package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PanGestureHandler.js +1 -1
- package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/TapGestureHandler.js +1 -1
- package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/module/web/tools/EventManager.js +2 -2
- package/lib/module/web/tools/EventManager.js.map +1 -1
- package/lib/module/web/tools/GestureHandlerWebDelegate.js +4 -11
- package/lib/module/web/tools/GestureHandlerWebDelegate.js.map +1 -1
- package/lib/module/web/tools/LeastSquareSolver.js +18 -18
- package/lib/module/web/tools/LeastSquareSolver.js.map +1 -1
- package/lib/module/web/tools/PointerEventManager.js +2 -2
- package/lib/module/web/tools/PointerEventManager.js.map +1 -1
- package/lib/module/web/tools/PointerTracker.js +1 -1
- package/lib/module/web/tools/PointerTracker.js.map +1 -1
- package/lib/module/web/tools/TouchEventManager.js +4 -4
- package/lib/module/web/tools/TouchEventManager.js.map +1 -1
- package/lib/module/web/tools/VelocityTracker.js +6 -6
- package/lib/module/web/tools/VelocityTracker.js.map +1 -1
- package/lib/module/web_hammer/NodeManager.js +1 -1
- package/lib/module/web_hammer/NodeManager.js.map +1 -1
- package/lib/typescript/RNGestureHandlerModule.web.d.ts +1 -1
- package/lib/typescript/components/GestureButtons.d.ts +2 -85
- package/lib/typescript/components/GestureButtonsProps.d.ts +99 -0
- package/lib/typescript/components/GestureHandlerButton.d.ts +1 -1
- package/lib/typescript/components/Pressable/Pressable.d.ts +3 -0
- package/lib/typescript/components/Pressable/PressableProps.d.ts +116 -0
- package/lib/typescript/components/Pressable/index.d.ts +2 -0
- package/lib/typescript/components/Pressable/utils.d.ts +15 -0
- package/lib/typescript/components/ReanimatedSwipeable.d.ts +125 -0
- package/lib/typescript/components/touchables/GenericTouchable.d.ts +4 -16
- package/lib/typescript/components/touchables/GenericTouchableProps.d.ts +14 -0
- package/lib/typescript/components/touchables/TouchableHighlight.d.ts +1 -1
- package/lib/typescript/components/touchables/TouchableNativeFeedback.android.d.ts +2 -9
- package/lib/typescript/components/touchables/TouchableNativeFeedbackProps.d.ts +9 -0
- package/lib/typescript/components/touchables/TouchableOpacity.d.ts +1 -1
- package/lib/typescript/components/touchables/TouchableWithoutFeedback.d.ts +2 -1
- package/lib/typescript/handlers/FlingGestureHandler.d.ts +2 -6
- package/lib/typescript/handlers/ForceTouchGestureHandler.d.ts +1 -10
- package/lib/typescript/handlers/GestureHandlerEventPayload.d.ts +159 -0
- package/lib/typescript/handlers/LongPressGestureHandler.d.ts +2 -35
- package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +2 -6
- package/lib/typescript/handlers/PanGestureHandler.d.ts +3 -51
- package/lib/typescript/handlers/PinchGestureHandler.d.ts +2 -23
- package/lib/typescript/handlers/RotationGestureHandler.d.ts +2 -23
- package/lib/typescript/handlers/TapGestureHandler.d.ts +2 -6
- package/lib/typescript/handlers/gestureHandlerCommon.d.ts +0 -5
- package/lib/typescript/handlers/gestureHandlerTypesCompat.d.ts +10 -9
- package/lib/typescript/handlers/gestures/GestureDetector/types.d.ts +1 -0
- package/lib/typescript/handlers/gestures/GestureDetector/utils.d.ts +1 -0
- package/lib/typescript/handlers/gestures/flingGesture.d.ts +2 -1
- package/lib/typescript/handlers/gestures/forceTouchGesture.d.ts +2 -1
- package/lib/typescript/handlers/gestures/gesture.d.ts +2 -8
- package/lib/typescript/handlers/gestures/longPressGesture.d.ts +2 -1
- package/lib/typescript/handlers/gestures/nativeGesture.d.ts +2 -1
- package/lib/typescript/handlers/gestures/panGesture.d.ts +2 -1
- package/lib/typescript/handlers/gestures/pinchGesture.d.ts +1 -1
- package/lib/typescript/handlers/gestures/rotationGesture.d.ts +1 -1
- package/lib/typescript/handlers/gestures/tapGesture.d.ts +2 -1
- package/lib/typescript/handlers/getNextHandlerTag.d.ts +1 -0
- package/lib/typescript/handlers/handlersRegistry.d.ts +1 -2
- package/lib/typescript/handlers/utils.d.ts +6 -0
- package/lib/typescript/index.d.ts +12 -9
- package/lib/typescript/jestUtils/jestUtils.d.ts +9 -7
- package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +1 -0
- package/lib/typescript/web/handlers/GestureHandler.d.ts +1 -0
- package/lib/typescript/web/handlers/HoverGestureHandler.d.ts +1 -0
- package/lib/typescript/web/handlers/LongPressGestureHandler.d.ts +1 -0
- package/lib/typescript/web/handlers/ManualGestureHandler.d.ts +1 -0
- package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts +1 -0
- package/lib/typescript/web/handlers/PanGestureHandler.d.ts +1 -0
- package/lib/typescript/web/handlers/PinchGestureHandler.d.ts +1 -0
- package/lib/typescript/web/handlers/RotationGestureHandler.d.ts +1 -0
- package/lib/typescript/web/handlers/TapGestureHandler.d.ts +1 -0
- package/lib/typescript/web_hammer/NodeManager.d.ts +4 -5
- package/package.json +14 -16
- package/src/Directions.ts +2 -2
- package/src/RNGestureHandlerModule.web.ts +2 -2
- package/src/components/DrawerLayout.tsx +7 -9
- package/src/components/GestureButtons.tsx +13 -123
- package/src/components/GestureButtonsProps.ts +115 -0
- package/src/components/GestureComponents.tsx +1 -1
- package/src/components/GestureHandlerButton.tsx +1 -1
- package/src/components/GestureHandlerRootView.android.tsx +1 -1
- package/src/components/GestureHandlerRootView.tsx +1 -1
- package/src/components/Pressable/Pressable.tsx +398 -0
- package/src/components/Pressable/PressableProps.tsx +149 -0
- package/src/components/Pressable/index.ts +2 -0
- package/src/components/Pressable/utils.ts +180 -0
- package/src/components/ReanimatedSwipeable.tsx +629 -0
- package/src/components/Swipeable.tsx +6 -6
- package/src/components/touchables/GenericTouchable.tsx +9 -36
- package/src/components/touchables/GenericTouchableProps.ts +26 -0
- package/src/components/touchables/TouchableHighlight.tsx +2 -4
- package/src/components/touchables/TouchableNativeFeedback.android.tsx +7 -17
- package/src/components/touchables/TouchableNativeFeedbackProps.tsx +12 -0
- package/src/components/touchables/TouchableOpacity.tsx +3 -5
- package/src/components/touchables/TouchableWithoutFeedback.tsx +2 -1
- package/src/getShadowNodeFromRef.ts +2 -2
- package/src/ghQueueMicrotask.ts +7 -4
- package/src/handlers/FlingGestureHandler.ts +1 -6
- package/src/handlers/ForceTouchGestureHandler.ts +1 -12
- package/src/handlers/GestureHandlerEventPayload.ts +184 -0
- package/src/handlers/LongPressGestureHandler.ts +1 -40
- package/src/handlers/NativeViewGestureHandler.ts +1 -7
- package/src/handlers/PanGestureHandler.ts +1 -58
- package/src/handlers/PinchGestureHandler.ts +1 -27
- package/src/handlers/RotationGestureHandler.ts +1 -27
- package/src/handlers/TapGestureHandler.ts +1 -6
- package/src/handlers/createHandler.tsx +6 -11
- package/src/handlers/createNativeWrapper.tsx +3 -3
- package/src/handlers/gestureHandlerCommon.ts +3 -79
- package/src/handlers/gestureHandlerTypesCompat.ts +16 -30
- package/src/handlers/gestures/GestureDetector/Wrap.tsx +1 -1
- package/src/handlers/gestures/GestureDetector/attachHandlers.ts +4 -7
- package/src/handlers/gestures/GestureDetector/dropHandlers.ts +1 -1
- package/src/handlers/gestures/GestureDetector/index.tsx +1 -1
- package/src/handlers/gestures/GestureDetector/updateHandlers.ts +20 -30
- package/src/handlers/gestures/GestureDetector/useDetectorUpdater.ts +1 -1
- package/src/handlers/gestures/GestureDetector/utils.ts +5 -5
- package/src/handlers/gestures/flingGesture.ts +2 -4
- package/src/handlers/gestures/forceTouchGesture.ts +2 -4
- package/src/handlers/gestures/gesture.ts +17 -15
- package/src/handlers/gestures/gestureComposition.ts +5 -5
- package/src/handlers/gestures/gestureStateManager.ts +1 -1
- package/src/handlers/gestures/longPressGesture.ts +2 -4
- package/src/handlers/gestures/nativeGesture.ts +2 -4
- package/src/handlers/gestures/panGesture.ts +2 -4
- package/src/handlers/gestures/pinchGesture.ts +1 -1
- package/src/handlers/gestures/rotationGesture.ts +1 -1
- package/src/handlers/gestures/tapGesture.ts +2 -4
- package/src/handlers/getNextHandlerTag.ts +5 -0
- package/src/handlers/handlersRegistry.ts +0 -6
- package/src/handlers/utils.ts +75 -0
- package/src/index.ts +25 -36
- package/src/init.ts +1 -1
- package/src/jestUtils/jestUtils.ts +12 -10
- package/src/mocks.ts +2 -2
- package/src/utils.ts +1 -1
- package/src/web/Gestures.ts +1 -1
- package/src/web/detectors/RotationGestureDetector.ts +1 -1
- package/src/web/detectors/ScaleGestureDetector.ts +4 -4
- package/src/web/handlers/FlingGestureHandler.ts +1 -1
- package/src/web/handlers/GestureHandler.ts +8 -14
- package/src/web/handlers/NativeViewGestureHandler.ts +3 -3
- package/src/web/handlers/PanGestureHandler.ts +1 -1
- package/src/web/handlers/TapGestureHandler.ts +1 -1
- package/src/web/tools/EventManager.ts +2 -2
- package/src/web/tools/GestureHandlerWebDelegate.ts +3 -8
- package/src/web/tools/LeastSquareSolver.ts +18 -18
- package/src/web/tools/PointerEventManager.ts +2 -2
- package/src/web/tools/PointerTracker.ts +2 -1
- package/src/web/tools/TouchEventManager.ts +4 -4
- package/src/web/tools/VelocityTracker.ts +6 -6
- package/src/web_hammer/NodeManager.ts +2 -11
@@ -0,0 +1,317 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.default = void 0;
|
7
|
+
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
9
|
+
|
10
|
+
var _gestureObjects = require("../handlers/gestures/gestureObjects");
|
11
|
+
|
12
|
+
var _GestureDetector = require("../handlers/gestures/GestureDetector");
|
13
|
+
|
14
|
+
var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reanimated"));
|
15
|
+
|
16
|
+
var _reactNative = require("react-native");
|
17
|
+
|
18
|
+
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
|
19
|
+
|
20
|
+
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
21
|
+
|
22
|
+
// Similarily to the DrawerLayout component this deserves to be put in a
|
23
|
+
// separate repo. Although, keeping it here for the time being will allow us to
|
24
|
+
// move faster and fix possible issues quicker
|
25
|
+
const DRAG_TOSS = 0.05;
|
26
|
+
const Swipeable = /*#__PURE__*/(0, _react.forwardRef)(function Swipeable(props, ref) {
|
27
|
+
const rowState = (0, _reactNativeReanimated.useSharedValue)(0);
|
28
|
+
const userDrag = (0, _reactNativeReanimated.useSharedValue)(0);
|
29
|
+
const appliedTranslation = (0, _reactNativeReanimated.useSharedValue)(0);
|
30
|
+
const rowWidth = (0, _reactNativeReanimated.useSharedValue)(0);
|
31
|
+
const leftWidth = (0, _reactNativeReanimated.useSharedValue)(0);
|
32
|
+
const rightWidth = (0, _reactNativeReanimated.useSharedValue)(0);
|
33
|
+
const rightOffset = (0, _reactNativeReanimated.useSharedValue)(0);
|
34
|
+
const leftActionTranslate = (0, _reactNativeReanimated.useSharedValue)(0);
|
35
|
+
const rightActionTranslate = (0, _reactNativeReanimated.useSharedValue)(0);
|
36
|
+
const showLeftProgress = (0, _reactNativeReanimated.useSharedValue)(0);
|
37
|
+
const showRightProgress = (0, _reactNativeReanimated.useSharedValue)(0);
|
38
|
+
const swipeableMethods = (0, _react.useRef)({
|
39
|
+
close: () => {
|
40
|
+
'worklet';
|
41
|
+
},
|
42
|
+
openLeft: () => {
|
43
|
+
'worklet';
|
44
|
+
},
|
45
|
+
openRight: () => {
|
46
|
+
'worklet';
|
47
|
+
},
|
48
|
+
reset: () => {
|
49
|
+
'worklet';
|
50
|
+
}
|
51
|
+
});
|
52
|
+
const defaultProps = {
|
53
|
+
friction: 1,
|
54
|
+
overshootFriction: 1
|
55
|
+
};
|
56
|
+
const {
|
57
|
+
friction = defaultProps.friction,
|
58
|
+
overshootFriction = defaultProps.overshootFriction
|
59
|
+
} = props;
|
60
|
+
const overshootLeftProp = props.overshootLeft;
|
61
|
+
const overshootRightProp = props.overshootRight;
|
62
|
+
const calculateCurrentOffset = (0, _react.useCallback)(() => {
|
63
|
+
'worklet';
|
64
|
+
|
65
|
+
if (rowState.value === 1) {
|
66
|
+
return leftWidth.value;
|
67
|
+
} else if (rowState.value === -1) {
|
68
|
+
return -rowWidth.value - rightOffset.value;
|
69
|
+
}
|
70
|
+
|
71
|
+
return 0;
|
72
|
+
}, [leftWidth, rightOffset, rowState, rowWidth]);
|
73
|
+
|
74
|
+
const updateAnimatedEvent = () => {
|
75
|
+
'worklet';
|
76
|
+
|
77
|
+
rightWidth.value = Math.max(0, rowWidth.value - rightOffset.value);
|
78
|
+
const overshootLeft = overshootLeftProp !== null && overshootLeftProp !== void 0 ? overshootLeftProp : leftWidth.value > 0;
|
79
|
+
const overshootRight = overshootRightProp !== null && overshootRightProp !== void 0 ? overshootRightProp : rightWidth.value > 0;
|
80
|
+
const startOffset = rowState.value === 1 ? leftWidth.value : rowState.value === -1 ? -rightWidth.value : 0;
|
81
|
+
const offsetDrag = userDrag.value / friction + startOffset;
|
82
|
+
appliedTranslation.value = (0, _reactNativeReanimated.interpolate)(offsetDrag, [-rightWidth.value - 1, -rightWidth.value, leftWidth.value, leftWidth.value + 1], [-rightWidth.value - (overshootRight ? 1 / overshootFriction : 0), -rightWidth.value, leftWidth.value, leftWidth.value + (overshootLeft ? 1 / overshootFriction : 0)]);
|
83
|
+
showLeftProgress.value = leftWidth.value > 0 ? (0, _reactNativeReanimated.interpolate)(appliedTranslation.value, [-1, 0, leftWidth.value], [0, 0, 1]) : 0;
|
84
|
+
leftActionTranslate.value = (0, _reactNativeReanimated.interpolate)(showLeftProgress.value, [0, Number.MIN_VALUE], [-10000, 0], _reactNativeReanimated.Extrapolation.CLAMP);
|
85
|
+
showRightProgress.value = rightWidth.value > 0 ? (0, _reactNativeReanimated.interpolate)(appliedTranslation.value, [-rightWidth.value, 0, 1], [1, 0, 0]) : 0;
|
86
|
+
rightActionTranslate.value = (0, _reactNativeReanimated.interpolate)(showRightProgress.value, [0, Number.MIN_VALUE], [-10000, 0], _reactNativeReanimated.Extrapolation.CLAMP);
|
87
|
+
};
|
88
|
+
|
89
|
+
const dispatchImmediateEvents = (0, _react.useCallback)((fromValue, toValue) => {
|
90
|
+
if (toValue > 0 && props.onSwipeableWillOpen) {
|
91
|
+
props.onSwipeableWillOpen('left');
|
92
|
+
} else if (toValue < 0 && props.onSwipeableWillOpen) {
|
93
|
+
props.onSwipeableWillOpen('right');
|
94
|
+
} else if (props.onSwipeableWillClose) {
|
95
|
+
const closingDirection = fromValue > 0 ? 'left' : 'right';
|
96
|
+
props.onSwipeableWillClose(closingDirection);
|
97
|
+
}
|
98
|
+
}, [props, props.onSwipeableWillClose, props.onSwipeableWillOpen, swipeableMethods]);
|
99
|
+
const dispatchEndEvents = (0, _react.useCallback)((fromValue, toValue) => {
|
100
|
+
if (toValue > 0 && props.onSwipeableOpen) {
|
101
|
+
props.onSwipeableOpen('left', swipeableMethods.current);
|
102
|
+
} else if (toValue < 0 && props.onSwipeableOpen) {
|
103
|
+
props.onSwipeableOpen('right', swipeableMethods.current);
|
104
|
+
} else if (props.onSwipeableClose) {
|
105
|
+
const closingDirection = fromValue > 0 ? 'left' : 'right';
|
106
|
+
props.onSwipeableClose(closingDirection, swipeableMethods.current);
|
107
|
+
}
|
108
|
+
}, [props, props.onSwipeableClose, props.onSwipeableOpen, swipeableMethods]);
|
109
|
+
const animationOptionsProp = props.animationOptions;
|
110
|
+
const animateRow = (0, _react.useCallback)((fromValue, toValue, velocityX) => {
|
111
|
+
'worklet';
|
112
|
+
|
113
|
+
rowState.value = Math.sign(toValue);
|
114
|
+
const springConfig = {
|
115
|
+
duration: 1000,
|
116
|
+
dampingRatio: 0.9,
|
117
|
+
stiffness: 500,
|
118
|
+
velocity: velocityX,
|
119
|
+
overshootClamping: true,
|
120
|
+
...animationOptionsProp
|
121
|
+
};
|
122
|
+
appliedTranslation.value = (0, _reactNativeReanimated.withSpring)(toValue, springConfig, isFinished => {
|
123
|
+
if (isFinished) {
|
124
|
+
(0, _reactNativeReanimated.runOnJS)(dispatchEndEvents)(fromValue, toValue);
|
125
|
+
}
|
126
|
+
});
|
127
|
+
const progressTarget = toValue === 0 ? 0 : 1; // Velocity is in px, while progress is in %
|
128
|
+
|
129
|
+
springConfig.velocity = 0;
|
130
|
+
showLeftProgress.value = leftWidth.value > 0 ? (0, _reactNativeReanimated.withSpring)(progressTarget, springConfig) : 0;
|
131
|
+
showRightProgress.value = rightWidth.value > 0 ? (0, _reactNativeReanimated.withSpring)(progressTarget, springConfig) : 0;
|
132
|
+
(0, _reactNativeReanimated.runOnJS)(dispatchImmediateEvents)(fromValue, toValue);
|
133
|
+
}, [showLeftProgress, appliedTranslation, dispatchEndEvents, dispatchImmediateEvents, animationOptionsProp, rowState]);
|
134
|
+
|
135
|
+
const onRowLayout = ({
|
136
|
+
nativeEvent
|
137
|
+
}) => {
|
138
|
+
rowWidth.value = nativeEvent.layout.width;
|
139
|
+
};
|
140
|
+
|
141
|
+
const {
|
142
|
+
children,
|
143
|
+
renderLeftActions,
|
144
|
+
renderRightActions,
|
145
|
+
dragOffsetFromLeftEdge = 10,
|
146
|
+
dragOffsetFromRightEdge = 10
|
147
|
+
} = props;
|
148
|
+
swipeableMethods.current = {
|
149
|
+
close() {
|
150
|
+
'worklet';
|
151
|
+
|
152
|
+
animateRow(calculateCurrentOffset(), 0);
|
153
|
+
},
|
154
|
+
|
155
|
+
openLeft() {
|
156
|
+
'worklet';
|
157
|
+
|
158
|
+
animateRow(calculateCurrentOffset(), leftWidth.value);
|
159
|
+
},
|
160
|
+
|
161
|
+
openRight() {
|
162
|
+
'worklet';
|
163
|
+
|
164
|
+
rightWidth.value = rowWidth.value - rightOffset.value;
|
165
|
+
animateRow(calculateCurrentOffset(), -rightWidth.value);
|
166
|
+
},
|
167
|
+
|
168
|
+
reset() {
|
169
|
+
'worklet';
|
170
|
+
|
171
|
+
userDrag.value = 0;
|
172
|
+
showLeftProgress.value = 0;
|
173
|
+
appliedTranslation.value = 0;
|
174
|
+
rowState.value = 0;
|
175
|
+
}
|
176
|
+
|
177
|
+
};
|
178
|
+
const leftAnimatedStyle = (0, _reactNativeReanimated.useAnimatedStyle)(() => ({
|
179
|
+
transform: [{
|
180
|
+
translateX: leftActionTranslate.value
|
181
|
+
}]
|
182
|
+
}), [leftActionTranslate]);
|
183
|
+
|
184
|
+
const leftElement = renderLeftActions && /*#__PURE__*/_react.default.createElement(_reactNativeReanimated.default.View, {
|
185
|
+
style: [styles.leftActions, leftAnimatedStyle]
|
186
|
+
}, renderLeftActions(showLeftProgress, appliedTranslation, swipeableMethods.current), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
187
|
+
onLayout: ({
|
188
|
+
nativeEvent
|
189
|
+
}) => leftWidth.value = nativeEvent.layout.x
|
190
|
+
}));
|
191
|
+
|
192
|
+
const rightAnimatedStyle = (0, _reactNativeReanimated.useAnimatedStyle)(() => ({
|
193
|
+
transform: [{
|
194
|
+
translateX: rightActionTranslate.value
|
195
|
+
}]
|
196
|
+
}), [rightActionTranslate]);
|
197
|
+
|
198
|
+
const rightElement = renderRightActions && /*#__PURE__*/_react.default.createElement(_reactNativeReanimated.default.View, {
|
199
|
+
style: [styles.rightActions, rightAnimatedStyle]
|
200
|
+
}, renderRightActions(showRightProgress, appliedTranslation, swipeableMethods.current), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
201
|
+
onLayout: ({
|
202
|
+
nativeEvent
|
203
|
+
}) => rightOffset.value = nativeEvent.layout.x
|
204
|
+
}));
|
205
|
+
|
206
|
+
const leftThresholdProp = props.leftThreshold;
|
207
|
+
const rightThresholdProp = props.rightThreshold;
|
208
|
+
|
209
|
+
const handleRelease = event => {
|
210
|
+
'worklet';
|
211
|
+
|
212
|
+
const {
|
213
|
+
velocityX
|
214
|
+
} = event;
|
215
|
+
userDrag.value = event.translationX;
|
216
|
+
rightWidth.value = rowWidth.value - rightOffset.value;
|
217
|
+
const leftThreshold = leftThresholdProp !== null && leftThresholdProp !== void 0 ? leftThresholdProp : leftWidth.value / 2;
|
218
|
+
const rightThreshold = rightThresholdProp !== null && rightThresholdProp !== void 0 ? rightThresholdProp : rightWidth.value / 2;
|
219
|
+
const startOffsetX = calculateCurrentOffset() + userDrag.value / friction;
|
220
|
+
const translationX = (userDrag.value + DRAG_TOSS * velocityX) / friction;
|
221
|
+
let toValue = 0;
|
222
|
+
|
223
|
+
if (rowState.value === 0) {
|
224
|
+
if (translationX > leftThreshold) {
|
225
|
+
toValue = leftWidth.value;
|
226
|
+
} else if (translationX < -rightThreshold) {
|
227
|
+
toValue = -rightWidth.value;
|
228
|
+
}
|
229
|
+
} else if (rowState.value === 1) {
|
230
|
+
// Swiped to left
|
231
|
+
if (translationX > -leftThreshold) {
|
232
|
+
toValue = leftWidth.value;
|
233
|
+
}
|
234
|
+
} else {
|
235
|
+
// Swiped to right
|
236
|
+
if (translationX < rightThreshold) {
|
237
|
+
toValue = -rightWidth.value;
|
238
|
+
}
|
239
|
+
}
|
240
|
+
|
241
|
+
animateRow(startOffsetX, toValue, velocityX / friction);
|
242
|
+
};
|
243
|
+
|
244
|
+
const close = () => {
|
245
|
+
'worklet';
|
246
|
+
|
247
|
+
animateRow(calculateCurrentOffset(), 0);
|
248
|
+
};
|
249
|
+
|
250
|
+
const tapGesture = _gestureObjects.GestureObjects.Tap().onStart(() => {
|
251
|
+
if (rowState.value !== 0) {
|
252
|
+
close();
|
253
|
+
}
|
254
|
+
});
|
255
|
+
|
256
|
+
const onSwipeableOpenStartDrag = props.onSwipeableOpenStartDrag;
|
257
|
+
const onSwipeableCloseStartDrag = props.onSwipeableCloseStartDrag;
|
258
|
+
|
259
|
+
const panGesture = _gestureObjects.GestureObjects.Pan().onUpdate(event => {
|
260
|
+
userDrag.value = event.translationX;
|
261
|
+
const direction = rowState.value === -1 ? 'right' : rowState.value === 1 ? 'left' : event.translationX > 0 ? 'left' : 'right';
|
262
|
+
|
263
|
+
if (rowState.value === 0 && onSwipeableOpenStartDrag) {
|
264
|
+
(0, _reactNativeReanimated.runOnJS)(onSwipeableOpenStartDrag)(direction);
|
265
|
+
} else if (rowState.value !== 0 && onSwipeableCloseStartDrag) {
|
266
|
+
(0, _reactNativeReanimated.runOnJS)(onSwipeableCloseStartDrag)(direction);
|
267
|
+
}
|
268
|
+
|
269
|
+
updateAnimatedEvent();
|
270
|
+
}).onEnd(event => {
|
271
|
+
handleRelease(event);
|
272
|
+
});
|
273
|
+
|
274
|
+
if (props.enableTrackpadTwoFingerGesture) {
|
275
|
+
panGesture.enableTrackpadTwoFingerGesture(props.enableTrackpadTwoFingerGesture);
|
276
|
+
}
|
277
|
+
|
278
|
+
panGesture.activeOffsetX([-dragOffsetFromRightEdge, dragOffsetFromLeftEdge]);
|
279
|
+
tapGesture.shouldCancelWhenOutside(true);
|
280
|
+
(0, _react.useImperativeHandle)(ref, () => swipeableMethods.current, [swipeableMethods]);
|
281
|
+
panGesture.enabled(props.enabled !== false);
|
282
|
+
const animatedStyle = (0, _reactNativeReanimated.useAnimatedStyle)(() => ({
|
283
|
+
transform: [{
|
284
|
+
translateX: appliedTranslation.value
|
285
|
+
}],
|
286
|
+
pointerEvents: rowState.value === 0 ? 'auto' : 'box-only'
|
287
|
+
}), [appliedTranslation, rowState]);
|
288
|
+
const containerStyle = props.containerStyle;
|
289
|
+
const childrenContainerStyle = props.childrenContainerStyle;
|
290
|
+
return /*#__PURE__*/_react.default.createElement(_GestureDetector.GestureDetector, {
|
291
|
+
gesture: panGesture,
|
292
|
+
touchAction: "pan-y"
|
293
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNativeReanimated.default.View, {
|
294
|
+
onLayout: onRowLayout,
|
295
|
+
style: [styles.container, containerStyle]
|
296
|
+
}, leftElement, rightElement, /*#__PURE__*/_react.default.createElement(_GestureDetector.GestureDetector, {
|
297
|
+
gesture: tapGesture,
|
298
|
+
touchAction: "pan-y"
|
299
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNativeReanimated.default.View, {
|
300
|
+
style: [animatedStyle, childrenContainerStyle]
|
301
|
+
}, children))));
|
302
|
+
});
|
303
|
+
var _default = Swipeable;
|
304
|
+
exports.default = _default;
|
305
|
+
|
306
|
+
const styles = _reactNative.StyleSheet.create({
|
307
|
+
container: {
|
308
|
+
overflow: 'hidden'
|
309
|
+
},
|
310
|
+
leftActions: { ..._reactNative.StyleSheet.absoluteFillObject,
|
311
|
+
flexDirection: _reactNative.I18nManager.isRTL ? 'row-reverse' : 'row'
|
312
|
+
},
|
313
|
+
rightActions: { ..._reactNative.StyleSheet.absoluteFillObject,
|
314
|
+
flexDirection: _reactNative.I18nManager.isRTL ? 'row' : 'row-reverse'
|
315
|
+
}
|
316
|
+
});
|
317
|
+
//# sourceMappingURL=ReanimatedSwipeable.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["ReanimatedSwipeable.tsx"],"names":["DRAG_TOSS","Swipeable","props","ref","rowState","userDrag","appliedTranslation","rowWidth","leftWidth","rightWidth","rightOffset","leftActionTranslate","rightActionTranslate","showLeftProgress","showRightProgress","swipeableMethods","close","openLeft","openRight","reset","defaultProps","friction","overshootFriction","overshootLeftProp","overshootLeft","overshootRightProp","overshootRight","calculateCurrentOffset","value","updateAnimatedEvent","Math","max","startOffset","offsetDrag","Number","MIN_VALUE","Extrapolation","CLAMP","dispatchImmediateEvents","fromValue","toValue","onSwipeableWillOpen","onSwipeableWillClose","closingDirection","dispatchEndEvents","onSwipeableOpen","current","onSwipeableClose","animationOptionsProp","animationOptions","animateRow","velocityX","sign","springConfig","duration","dampingRatio","stiffness","velocity","overshootClamping","isFinished","progressTarget","onRowLayout","nativeEvent","layout","width","children","renderLeftActions","renderRightActions","dragOffsetFromLeftEdge","dragOffsetFromRightEdge","leftAnimatedStyle","transform","translateX","leftElement","styles","leftActions","x","rightAnimatedStyle","rightElement","rightActions","leftThresholdProp","leftThreshold","rightThresholdProp","rightThreshold","handleRelease","event","translationX","startOffsetX","tapGesture","Gesture","Tap","onStart","onSwipeableOpenStartDrag","onSwipeableCloseStartDrag","panGesture","Pan","onUpdate","direction","onEnd","enableTrackpadTwoFingerGesture","activeOffsetX","shouldCancelWhenOutside","enabled","animatedStyle","pointerEvents","containerStyle","childrenContainerStyle","container","StyleSheet","create","overflow","absoluteFillObject","flexDirection","I18nManager","isRTL"],"mappings":"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","sourcesContent":["// Similarily to the DrawerLayout component this deserves to be put in a\n// separate repo. Although, keeping it here for the time being will allow us to\n// move faster and fix possible issues quicker\n\nimport React, {\n ForwardedRef,\n forwardRef,\n useCallback,\n useImperativeHandle,\n useRef,\n} from 'react';\nimport { GestureObjects as Gesture } from '../handlers/gestures/gestureObjects';\nimport { GestureDetector } from '../handlers/gestures/GestureDetector';\nimport {\n GestureStateChangeEvent,\n GestureUpdateEvent,\n} from '../handlers/gestureHandlerCommon';\nimport type { PanGestureHandlerProps } from '../handlers/PanGestureHandler';\nimport type { PanGestureHandlerEventPayload } from '../handlers/GestureHandlerEventPayload';\nimport Animated, {\n Extrapolation,\n SharedValue,\n interpolate,\n runOnJS,\n useAnimatedStyle,\n useSharedValue,\n withSpring,\n} from 'react-native-reanimated';\nimport {\n I18nManager,\n LayoutChangeEvent,\n StyleProp,\n StyleSheet,\n View,\n ViewStyle,\n} from 'react-native';\n\nconst DRAG_TOSS = 0.05;\n\ntype SwipeableExcludes = Exclude<\n keyof PanGestureHandlerProps,\n 'onGestureEvent' | 'onHandlerStateChange'\n>;\n\nexport interface SwipeableProps\n extends Pick<PanGestureHandlerProps, SwipeableExcludes> {\n /**\n * Enables two-finger gestures on supported devices, for example iPads with\n * trackpads. If not enabled the gesture will require click + drag, with\n * `enableTrackpadTwoFingerGesture` swiping with two fingers will also trigger\n * the gesture.\n */\n enableTrackpadTwoFingerGesture?: boolean;\n\n /**\n * Specifies how much the visual interaction will be delayed compared to the\n * gesture distance. e.g. value of 1 will indicate that the swipeable panel\n * should exactly follow the gesture, 2 means it is going to be two times\n * \"slower\".\n */\n friction?: number;\n\n /**\n * Distance from the left edge at which released panel will animate to the\n * open state (or the open panel will animate into the closed state). By\n * default it's a half of the panel's width.\n */\n leftThreshold?: number;\n\n /**\n * Distance from the right edge at which released panel will animate to the\n * open state (or the open panel will animate into the closed state). By\n * default it's a half of the panel's width.\n */\n rightThreshold?: number;\n\n /**\n * Distance that the panel must be dragged from the left edge to be considered\n * a swipe. The default value is 10.\n */\n dragOffsetFromLeftEdge?: number;\n\n /**\n * Distance that the panel must be dragged from the right edge to be considered\n * a swipe. The default value is 10.\n */\n dragOffsetFromRightEdge?: number;\n\n /**\n * Value indicating if the swipeable panel can be pulled further than the left\n * actions panel's width. It is set to true by default as long as the left\n * panel render method is present.\n */\n overshootLeft?: boolean;\n\n /**\n * Value indicating if the swipeable panel can be pulled further than the\n * right actions panel's width. It is set to true by default as long as the\n * right panel render method is present.\n */\n overshootRight?: boolean;\n\n /**\n * Specifies how much the visual interaction will be delayed compared to the\n * gesture distance at overshoot. Default value is 1, it mean no friction, for\n * a native feel, try 8 or above.\n */\n overshootFriction?: number;\n\n /**\n * Called when action panel gets open (either right or left).\n */\n onSwipeableOpen?: (\n direction: 'left' | 'right',\n swipeable: SwipeableMethods\n ) => void;\n\n /**\n * Called when action panel is closed.\n */\n onSwipeableClose?: (\n direction: 'left' | 'right',\n swipeable: SwipeableMethods\n ) => void;\n\n /**\n * Called when action panel starts animating on open (either right or left).\n */\n onSwipeableWillOpen?: (direction: 'left' | 'right') => void;\n\n /**\n * Called when action panel starts animating on close.\n */\n onSwipeableWillClose?: (direction: 'left' | 'right') => void;\n\n /**\n * Called when action panel starts being shown on dragging to open.\n */\n onSwipeableOpenStartDrag?: (direction: 'left' | 'right') => void;\n\n /**\n * Called when action panel starts being shown on dragging to close.\n */\n onSwipeableCloseStartDrag?: (direction: 'left' | 'right') => void;\n\n /**\n *\n * This map describes the values to use as inputRange for extra interpolation:\n * AnimatedValue: [startValue, endValue]\n *\n * progressAnimatedValue: [0, 1] dragAnimatedValue: [0, +]\n *\n * To support `rtl` flexbox layouts use `flexDirection` styling.\n * */\n renderLeftActions?: (\n progressAnimatedValue: SharedValue<number>,\n dragAnimatedValue: SharedValue<number>,\n swipeable: SwipeableMethods\n ) => React.ReactNode;\n /**\n *\n * This map describes the values to use as inputRange for extra interpolation:\n * AnimatedValue: [startValue, endValue]\n *\n * progressAnimatedValue: [0, 1] dragAnimatedValue: [0, -]\n *\n * To support `rtl` flexbox layouts use `flexDirection` styling.\n * */\n renderRightActions?: (\n progressAnimatedValue: SharedValue<number>,\n dragAnimatedValue: SharedValue<number>,\n swipeable: SwipeableMethods\n ) => React.ReactNode;\n\n animationOptions?: Record<string, unknown>;\n\n /**\n * Style object for the container (`Animated.View`), for example to override\n * `overflow: 'hidden'`.\n */\n containerStyle?: StyleProp<ViewStyle>;\n\n /**\n * Style object for the children container (`Animated.View`), for example to\n * apply `flex: 1`\n */\n childrenContainerStyle?: StyleProp<ViewStyle>;\n}\n\nexport interface SwipeableMethods {\n close: () => void;\n openLeft: () => void;\n openRight: () => void;\n reset: () => void;\n}\n\nconst Swipeable = forwardRef<SwipeableMethods, SwipeableProps>(\n function Swipeable(\n props: SwipeableProps,\n ref: ForwardedRef<SwipeableMethods>\n ) {\n const rowState = useSharedValue<number>(0);\n\n const userDrag = useSharedValue<number>(0);\n const appliedTranslation = useSharedValue<number>(0);\n\n const rowWidth = useSharedValue<number>(0);\n const leftWidth = useSharedValue<number>(0);\n const rightWidth = useSharedValue<number>(0);\n const rightOffset = useSharedValue<number>(0);\n\n const leftActionTranslate = useSharedValue<number>(0);\n const rightActionTranslate = useSharedValue<number>(0);\n\n const showLeftProgress = useSharedValue<number>(0);\n const showRightProgress = useSharedValue<number>(0);\n\n const swipeableMethods = useRef<SwipeableMethods>({\n close: () => {\n 'worklet';\n },\n openLeft: () => {\n 'worklet';\n },\n openRight: () => {\n 'worklet';\n },\n reset: () => {\n 'worklet';\n },\n });\n\n const defaultProps = {\n friction: 1,\n overshootFriction: 1,\n };\n\n const {\n friction = defaultProps.friction,\n overshootFriction = defaultProps.overshootFriction,\n } = props;\n\n const overshootLeftProp = props.overshootLeft;\n const overshootRightProp = props.overshootRight;\n\n const calculateCurrentOffset = useCallback(() => {\n 'worklet';\n if (rowState.value === 1) {\n return leftWidth.value;\n } else if (rowState.value === -1) {\n return -rowWidth.value - rightOffset.value;\n }\n return 0;\n }, [leftWidth, rightOffset, rowState, rowWidth]);\n\n const updateAnimatedEvent = () => {\n 'worklet';\n rightWidth.value = Math.max(0, rowWidth.value - rightOffset.value);\n\n const overshootLeft = overshootLeftProp ?? leftWidth.value > 0;\n const overshootRight = overshootRightProp ?? rightWidth.value > 0;\n\n const startOffset =\n rowState.value === 1\n ? leftWidth.value\n : rowState.value === -1\n ? -rightWidth.value\n : 0;\n\n const offsetDrag = userDrag.value / friction + startOffset;\n\n appliedTranslation.value = interpolate(\n offsetDrag,\n [\n -rightWidth.value - 1,\n -rightWidth.value,\n leftWidth.value,\n leftWidth.value + 1,\n ],\n [\n -rightWidth.value - (overshootRight ? 1 / overshootFriction : 0),\n -rightWidth.value,\n leftWidth.value,\n leftWidth.value + (overshootLeft ? 1 / overshootFriction : 0),\n ]\n );\n\n showLeftProgress.value =\n leftWidth.value > 0\n ? interpolate(\n appliedTranslation.value,\n [-1, 0, leftWidth.value],\n [0, 0, 1]\n )\n : 0;\n leftActionTranslate.value = interpolate(\n showLeftProgress.value,\n [0, Number.MIN_VALUE],\n [-10000, 0],\n Extrapolation.CLAMP\n );\n showRightProgress.value =\n rightWidth.value > 0\n ? interpolate(\n appliedTranslation.value,\n [-rightWidth.value, 0, 1],\n [1, 0, 0]\n )\n : 0;\n rightActionTranslate.value = interpolate(\n showRightProgress.value,\n [0, Number.MIN_VALUE],\n [-10000, 0],\n Extrapolation.CLAMP\n );\n };\n\n const dispatchImmediateEvents = useCallback(\n (fromValue: number, toValue: number) => {\n if (toValue > 0 && props.onSwipeableWillOpen) {\n props.onSwipeableWillOpen('left');\n } else if (toValue < 0 && props.onSwipeableWillOpen) {\n props.onSwipeableWillOpen('right');\n } else if (props.onSwipeableWillClose) {\n const closingDirection = fromValue > 0 ? 'left' : 'right';\n props.onSwipeableWillClose(closingDirection);\n }\n },\n [\n props,\n props.onSwipeableWillClose,\n props.onSwipeableWillOpen,\n swipeableMethods,\n ]\n );\n\n const dispatchEndEvents = useCallback(\n (fromValue: number, toValue: number) => {\n if (toValue > 0 && props.onSwipeableOpen) {\n props.onSwipeableOpen('left', swipeableMethods.current);\n } else if (toValue < 0 && props.onSwipeableOpen) {\n props.onSwipeableOpen('right', swipeableMethods.current);\n } else if (props.onSwipeableClose) {\n const closingDirection = fromValue > 0 ? 'left' : 'right';\n props.onSwipeableClose(closingDirection, swipeableMethods.current);\n }\n },\n [props, props.onSwipeableClose, props.onSwipeableOpen, swipeableMethods]\n );\n\n const animationOptionsProp = props.animationOptions;\n\n const animateRow = useCallback(\n (fromValue: number, toValue: number, velocityX?: number) => {\n 'worklet';\n rowState.value = Math.sign(toValue);\n\n const springConfig = {\n duration: 1000,\n dampingRatio: 0.9,\n stiffness: 500,\n velocity: velocityX,\n overshootClamping: true,\n ...animationOptionsProp,\n };\n\n appliedTranslation.value = withSpring(\n toValue,\n springConfig,\n (isFinished) => {\n if (isFinished) {\n runOnJS(dispatchEndEvents)(fromValue, toValue);\n }\n }\n );\n\n const progressTarget = toValue === 0 ? 0 : 1;\n\n // Velocity is in px, while progress is in %\n springConfig.velocity = 0;\n\n showLeftProgress.value =\n leftWidth.value > 0 ? withSpring(progressTarget, springConfig) : 0;\n showRightProgress.value =\n rightWidth.value > 0 ? withSpring(progressTarget, springConfig) : 0;\n\n runOnJS(dispatchImmediateEvents)(fromValue, toValue);\n },\n [\n showLeftProgress,\n appliedTranslation,\n dispatchEndEvents,\n dispatchImmediateEvents,\n animationOptionsProp,\n rowState,\n ]\n );\n\n const onRowLayout = ({ nativeEvent }: LayoutChangeEvent) => {\n rowWidth.value = nativeEvent.layout.width;\n };\n\n const {\n children,\n renderLeftActions,\n renderRightActions,\n dragOffsetFromLeftEdge = 10,\n dragOffsetFromRightEdge = 10,\n } = props;\n\n swipeableMethods.current = {\n close() {\n 'worklet';\n animateRow(calculateCurrentOffset(), 0);\n },\n openLeft() {\n 'worklet';\n animateRow(calculateCurrentOffset(), leftWidth.value);\n },\n openRight() {\n 'worklet';\n rightWidth.value = rowWidth.value - rightOffset.value;\n animateRow(calculateCurrentOffset(), -rightWidth.value);\n },\n reset() {\n 'worklet';\n userDrag.value = 0;\n showLeftProgress.value = 0;\n appliedTranslation.value = 0;\n rowState.value = 0;\n },\n };\n\n const leftAnimatedStyle = useAnimatedStyle(\n () => ({\n transform: [\n {\n translateX: leftActionTranslate.value,\n },\n ],\n }),\n [leftActionTranslate]\n );\n\n const leftElement = renderLeftActions && (\n <Animated.View style={[styles.leftActions, leftAnimatedStyle]}>\n {renderLeftActions(\n showLeftProgress,\n appliedTranslation,\n swipeableMethods.current\n )}\n <View\n onLayout={({ nativeEvent }) =>\n (leftWidth.value = nativeEvent.layout.x)\n }\n />\n </Animated.View>\n );\n\n const rightAnimatedStyle = useAnimatedStyle(\n () => ({\n transform: [\n {\n translateX: rightActionTranslate.value,\n },\n ],\n }),\n [rightActionTranslate]\n );\n\n const rightElement = renderRightActions && (\n <Animated.View style={[styles.rightActions, rightAnimatedStyle]}>\n {renderRightActions(\n showRightProgress,\n appliedTranslation,\n swipeableMethods.current\n )}\n <View\n onLayout={({ nativeEvent }) =>\n (rightOffset.value = nativeEvent.layout.x)\n }\n />\n </Animated.View>\n );\n\n const leftThresholdProp = props.leftThreshold;\n const rightThresholdProp = props.rightThreshold;\n\n const handleRelease = (\n event: GestureStateChangeEvent<PanGestureHandlerEventPayload>\n ) => {\n 'worklet';\n const { velocityX } = event;\n userDrag.value = event.translationX;\n\n rightWidth.value = rowWidth.value - rightOffset.value;\n\n const leftThreshold = leftThresholdProp ?? leftWidth.value / 2;\n const rightThreshold = rightThresholdProp ?? rightWidth.value / 2;\n\n const startOffsetX = calculateCurrentOffset() + userDrag.value / friction;\n const translationX = (userDrag.value + DRAG_TOSS * velocityX) / friction;\n\n let toValue = 0;\n\n if (rowState.value === 0) {\n if (translationX > leftThreshold) {\n toValue = leftWidth.value;\n } else if (translationX < -rightThreshold) {\n toValue = -rightWidth.value;\n }\n } else if (rowState.value === 1) {\n // Swiped to left\n if (translationX > -leftThreshold) {\n toValue = leftWidth.value;\n }\n } else {\n // Swiped to right\n if (translationX < rightThreshold) {\n toValue = -rightWidth.value;\n }\n }\n\n animateRow(startOffsetX, toValue, velocityX / friction);\n };\n\n const close = () => {\n 'worklet';\n animateRow(calculateCurrentOffset(), 0);\n };\n\n const tapGesture = Gesture.Tap().onStart(() => {\n if (rowState.value !== 0) {\n close();\n }\n });\n\n const onSwipeableOpenStartDrag = props.onSwipeableOpenStartDrag;\n const onSwipeableCloseStartDrag = props.onSwipeableCloseStartDrag;\n\n const panGesture = Gesture.Pan()\n .onUpdate((event: GestureUpdateEvent<PanGestureHandlerEventPayload>) => {\n userDrag.value = event.translationX;\n\n const direction =\n rowState.value === -1\n ? 'right'\n : rowState.value === 1\n ? 'left'\n : event.translationX > 0\n ? 'left'\n : 'right';\n\n if (rowState.value === 0 && onSwipeableOpenStartDrag) {\n runOnJS(onSwipeableOpenStartDrag)(direction);\n } else if (rowState.value !== 0 && onSwipeableCloseStartDrag) {\n runOnJS(onSwipeableCloseStartDrag)(direction);\n }\n updateAnimatedEvent();\n })\n .onEnd(\n (event: GestureStateChangeEvent<PanGestureHandlerEventPayload>) => {\n handleRelease(event);\n }\n );\n\n if (props.enableTrackpadTwoFingerGesture) {\n panGesture.enableTrackpadTwoFingerGesture(\n props.enableTrackpadTwoFingerGesture\n );\n }\n\n panGesture.activeOffsetX([\n -dragOffsetFromRightEdge,\n dragOffsetFromLeftEdge,\n ]);\n tapGesture.shouldCancelWhenOutside(true);\n\n useImperativeHandle(ref, () => swipeableMethods.current, [\n swipeableMethods,\n ]);\n\n panGesture.enabled(props.enabled !== false);\n\n const animatedStyle = useAnimatedStyle(\n () => ({\n transform: [{ translateX: appliedTranslation.value }],\n pointerEvents: rowState.value === 0 ? 'auto' : 'box-only',\n }),\n [appliedTranslation, rowState]\n );\n\n const containerStyle = props.containerStyle;\n const childrenContainerStyle = props.childrenContainerStyle;\n\n return (\n <GestureDetector gesture={panGesture} touchAction=\"pan-y\">\n <Animated.View\n onLayout={onRowLayout}\n style={[styles.container, containerStyle]}>\n {leftElement}\n {rightElement}\n <GestureDetector gesture={tapGesture} touchAction=\"pan-y\">\n <Animated.View style={[animatedStyle, childrenContainerStyle]}>\n {children}\n </Animated.View>\n </GestureDetector>\n </Animated.View>\n </GestureDetector>\n );\n }\n);\n\nexport default Swipeable;\nexport type SwipeableRef = ForwardedRef<SwipeableMethods>;\n\nconst styles = StyleSheet.create({\n container: {\n overflow: 'hidden',\n },\n leftActions: {\n ...StyleSheet.absoluteFillObject,\n flexDirection: I18nManager.isRTL ? 'row-reverse' : 'row',\n },\n rightActions: {\n ...StyleSheet.absoluteFillObject,\n flexDirection: I18nManager.isRTL ? 'row' : 'row-reverse',\n },\n});\n"]}
|
@@ -159,12 +159,12 @@ class Swipeable extends React.Component {
|
|
159
159
|
toValue = -rightWidth;
|
160
160
|
}
|
161
161
|
} else if (rowState === 1) {
|
162
|
-
//
|
162
|
+
// Swiped to left
|
163
163
|
if (translationX > -leftThreshold) {
|
164
164
|
toValue = leftWidth;
|
165
165
|
}
|
166
166
|
} else {
|
167
|
-
//
|
167
|
+
// Swiped to right
|
168
168
|
if (translationX < rightThreshold) {
|
169
169
|
toValue = -rightWidth;
|
170
170
|
}
|
@@ -335,7 +335,7 @@ class Swipeable extends React.Component {
|
|
335
335
|
dragOffsetFromRightEdge = 10
|
336
336
|
} = this.props;
|
337
337
|
const left = renderLeftActions && /*#__PURE__*/React.createElement(_reactNative.Animated.View, {
|
338
|
-
style: [styles.leftActions, //
|
338
|
+
style: [styles.leftActions, // All those and below parameters can have ! since they are all
|
339
339
|
// asigned in constructor in `updateAnimatedEvent` but TS cannot spot
|
340
340
|
// it for some reason
|
341
341
|
{
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["Swipeable.tsx"],"names":["DRAG_TOSS","Swipeable","Component","constructor","props","state","friction","overshootFriction","dragX","rowTranslation","leftWidth","rowWidth","rightOffset","rightWidth","Math","max","overshootLeft","overshootRight","transX","Animated","add","interpolate","inputRange","outputRange","showLeftAction","Value","leftActionTranslate","Number","MIN_VALUE","extrapolate","showRightAction","rightActionTranslate","nativeEvent","oldState","State","ACTIVE","close","ev","handleRelease","velocityX","translationX","rowState","direction","onSwipeableOpenStartDrag","onSwipeableCloseStartDrag","leftThreshold","rightThreshold","startOffsetX","currentOffset","toValue","animateRow","fromValue","setValue","setState","sign","spring","restSpeedThreshold","restDisplacementThreshold","velocity","bounciness","useNativeDriver","useNativeAnimations","animationOptions","start","finished","onSwipeableLeftOpen","onSwipeableOpen","onSwipeableRightOpen","closingDirection","onSwipeableClose","onSwipeableLeftWillOpen","onSwipeableWillOpen","onSwipeableRightWillOpen","onSwipeableWillClose","layout","width","undefined","updateAnimatedEvent","onGestureEvent","event","shouldComponentUpdate","render","children","renderLeftActions","renderRightActions","dragOffsetFromLeftEdge","dragOffsetFromRightEdge","left","styles","leftActions","transform","translateX","x","right","rightActions","onHandlerStateChange","onRowLayout","container","containerStyle","onTapHandlerStateChange","childrenContainerStyle","StyleSheet","create","overflow","absoluteFillObject","flexDirection","I18nManager","isRTL"],"mappings":"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","sourcesContent":["// Similarily to the DrawerLayout component this deserves to be put in a\n// separate repo. Although, keeping it here for the time being will allow us to\n// move faster and fix possible issues quicker\n\nimport * as React from 'react';\nimport { Component } from 'react';\nimport {\n Animated,\n StyleSheet,\n View,\n I18nManager,\n LayoutChangeEvent,\n StyleProp,\n ViewStyle,\n} from 'react-native';\n\nimport {\n GestureEvent,\n HandlerStateChangeEvent,\n} from '../handlers/gestureHandlerCommon';\nimport {\n PanGestureHandler,\n PanGestureHandlerEventPayload,\n PanGestureHandlerProps,\n} from '../handlers/PanGestureHandler';\nimport {\n TapGestureHandler,\n TapGestureHandlerEventPayload,\n} from '../handlers/TapGestureHandler';\nimport { State } from '../State';\n\nconst DRAG_TOSS = 0.05;\n\ntype SwipeableExcludes = Exclude<\n keyof PanGestureHandlerProps,\n 'onGestureEvent' | 'onHandlerStateChange'\n>;\n\n// Animated.AnimatedInterpolation has been converted to a generic type\n// in @types/react-native 0.70. This way we can maintain compatibility\n// with all versions of @types/react-native\ntype AnimatedInterpolation = ReturnType<Animated.Value['interpolate']>;\n\nexport interface SwipeableProps\n extends Pick<PanGestureHandlerProps, SwipeableExcludes> {\n /**\n * Enables two-finger gestures on supported devices, for example iPads with\n * trackpads. If not enabled the gesture will require click + drag, with\n * `enableTrackpadTwoFingerGesture` swiping with two fingers will also trigger\n * the gesture.\n */\n enableTrackpadTwoFingerGesture?: boolean;\n\n /**\n * Specifies how much the visual interaction will be delayed compared to the\n * gesture distance. e.g. value of 1 will indicate that the swipeable panel\n * should exactly follow the gesture, 2 means it is going to be two times\n * \"slower\".\n */\n friction?: number;\n\n /**\n * Distance from the left edge at which released panel will animate to the\n * open state (or the open panel will animate into the closed state). By\n * default it's a half of the panel's width.\n */\n leftThreshold?: number;\n\n /**\n * Distance from the right edge at which released panel will animate to the\n * open state (or the open panel will animate into the closed state). By\n * default it's a half of the panel's width.\n */\n rightThreshold?: number;\n\n /**\n * Distance that the panel must be dragged from the left edge to be considered\n * a swipe. The default value is 10.\n */\n dragOffsetFromLeftEdge?: number;\n\n /**\n * Distance that the panel must be dragged from the right edge to be considered\n * a swipe. The default value is 10.\n */\n dragOffsetFromRightEdge?: number;\n\n /**\n * Value indicating if the swipeable panel can be pulled further than the left\n * actions panel's width. It is set to true by default as long as the left\n * panel render method is present.\n */\n overshootLeft?: boolean;\n\n /**\n * Value indicating if the swipeable panel can be pulled further than the\n * right actions panel's width. It is set to true by default as long as the\n * right panel render method is present.\n */\n overshootRight?: boolean;\n\n /**\n * Specifies how much the visual interaction will be delayed compared to the\n * gesture distance at overshoot. Default value is 1, it mean no friction, for\n * a native feel, try 8 or above.\n */\n overshootFriction?: number;\n\n /**\n * @deprecated Use `direction` argument of onSwipeableOpen()\n *\n * Called when left action panel gets open.\n */\n onSwipeableLeftOpen?: () => void;\n\n /**\n * @deprecated Use `direction` argument of onSwipeableOpen()\n *\n * Called when right action panel gets open.\n */\n onSwipeableRightOpen?: () => void;\n\n /**\n * Called when action panel gets open (either right or left).\n */\n onSwipeableOpen?: (direction: 'left' | 'right', swipeable: Swipeable) => void;\n\n /**\n * Called when action panel is closed.\n */\n onSwipeableClose?: (\n direction: 'left' | 'right',\n swipeable: Swipeable\n ) => void;\n\n /**\n * @deprecated Use `direction` argument of onSwipeableWillOpen()\n *\n * Called when left action panel starts animating on open.\n */\n onSwipeableLeftWillOpen?: () => void;\n\n /**\n * @deprecated Use `direction` argument of onSwipeableWillOpen()\n *\n * Called when right action panel starts animating on open.\n */\n onSwipeableRightWillOpen?: () => void;\n\n /**\n * Called when action panel starts animating on open (either right or left).\n */\n onSwipeableWillOpen?: (direction: 'left' | 'right') => void;\n\n /**\n * Called when action panel starts animating on close.\n */\n onSwipeableWillClose?: (direction: 'left' | 'right') => void;\n\n /**\n * Called when action panel starts being shown on dragging to open.\n */\n onSwipeableOpenStartDrag?: (direction: 'left' | 'right') => void;\n\n /**\n * Called when action panel starts being shown on dragging to close.\n */\n onSwipeableCloseStartDrag?: (direction: 'left' | 'right') => void;\n\n /**\n *\n * This map describes the values to use as inputRange for extra interpolation:\n * AnimatedValue: [startValue, endValue]\n *\n * progressAnimatedValue: [0, 1] dragAnimatedValue: [0, +]\n *\n * To support `rtl` flexbox layouts use `flexDirection` styling.\n * */\n renderLeftActions?: (\n progressAnimatedValue: AnimatedInterpolation,\n dragAnimatedValue: AnimatedInterpolation,\n swipeable: Swipeable\n ) => React.ReactNode;\n /**\n *\n * This map describes the values to use as inputRange for extra interpolation:\n * AnimatedValue: [startValue, endValue]\n *\n * progressAnimatedValue: [0, 1] dragAnimatedValue: [0, -]\n *\n * To support `rtl` flexbox layouts use `flexDirection` styling.\n * */\n renderRightActions?: (\n progressAnimatedValue: AnimatedInterpolation,\n dragAnimatedValue: AnimatedInterpolation,\n swipeable: Swipeable\n ) => React.ReactNode;\n\n useNativeAnimations?: boolean;\n\n animationOptions?: Record<string, unknown>;\n\n /**\n * Style object for the container (`Animated.View`), for example to override\n * `overflow: 'hidden'`.\n */\n containerStyle?: StyleProp<ViewStyle>;\n\n /**\n * Style object for the children container (`Animated.View`), for example to\n * apply `flex: 1`\n */\n childrenContainerStyle?: StyleProp<ViewStyle>;\n}\n\ntype SwipeableState = {\n dragX: Animated.Value;\n rowTranslation: Animated.Value;\n rowState: number;\n leftWidth?: number;\n rightOffset?: number;\n rowWidth?: number;\n};\n\nexport default class Swipeable extends Component<\n SwipeableProps,\n SwipeableState\n> {\n static defaultProps = {\n friction: 1,\n overshootFriction: 1,\n useNativeAnimations: true,\n };\n\n constructor(props: SwipeableProps) {\n super(props);\n const dragX = new Animated.Value(0);\n this.state = {\n dragX,\n rowTranslation: new Animated.Value(0),\n rowState: 0,\n leftWidth: undefined,\n rightOffset: undefined,\n rowWidth: undefined,\n };\n this.updateAnimatedEvent(props, this.state);\n\n this.onGestureEvent = Animated.event(\n [{ nativeEvent: { translationX: dragX } }],\n { useNativeDriver: props.useNativeAnimations! }\n );\n }\n\n shouldComponentUpdate(props: SwipeableProps, state: SwipeableState) {\n if (\n this.props.friction !== props.friction ||\n this.props.overshootLeft !== props.overshootLeft ||\n this.props.overshootRight !== props.overshootRight ||\n this.props.overshootFriction !== props.overshootFriction ||\n this.state.leftWidth !== state.leftWidth ||\n this.state.rightOffset !== state.rightOffset ||\n this.state.rowWidth !== state.rowWidth\n ) {\n this.updateAnimatedEvent(props, state);\n }\n\n return true;\n }\n\n private onGestureEvent?: (\n event: GestureEvent<PanGestureHandlerEventPayload>\n ) => void;\n private transX?: AnimatedInterpolation;\n private showLeftAction?: AnimatedInterpolation | Animated.Value;\n private leftActionTranslate?: AnimatedInterpolation;\n private showRightAction?: AnimatedInterpolation | Animated.Value;\n private rightActionTranslate?: AnimatedInterpolation;\n\n private updateAnimatedEvent = (\n props: SwipeableProps,\n state: SwipeableState\n ) => {\n const { friction, overshootFriction } = props;\n const { dragX, rowTranslation, leftWidth = 0, rowWidth = 0 } = state;\n const { rightOffset = rowWidth } = state;\n const rightWidth = Math.max(0, rowWidth - rightOffset);\n\n const { overshootLeft = leftWidth > 0, overshootRight = rightWidth > 0 } =\n props;\n\n const transX = Animated.add(\n rowTranslation,\n dragX.interpolate({\n inputRange: [0, friction!],\n outputRange: [0, 1],\n })\n ).interpolate({\n inputRange: [-rightWidth - 1, -rightWidth, leftWidth, leftWidth + 1],\n outputRange: [\n -rightWidth - (overshootRight ? 1 / overshootFriction! : 0),\n -rightWidth,\n leftWidth,\n leftWidth + (overshootLeft ? 1 / overshootFriction! : 0),\n ],\n });\n this.transX = transX;\n this.showLeftAction =\n leftWidth > 0\n ? transX.interpolate({\n inputRange: [-1, 0, leftWidth],\n outputRange: [0, 0, 1],\n })\n : new Animated.Value(0);\n this.leftActionTranslate = this.showLeftAction.interpolate({\n inputRange: [0, Number.MIN_VALUE],\n outputRange: [-10000, 0],\n extrapolate: 'clamp',\n });\n this.showRightAction =\n rightWidth > 0\n ? transX.interpolate({\n inputRange: [-rightWidth, 0, 1],\n outputRange: [1, 0, 0],\n })\n : new Animated.Value(0);\n this.rightActionTranslate = this.showRightAction.interpolate({\n inputRange: [0, Number.MIN_VALUE],\n outputRange: [-10000, 0],\n extrapolate: 'clamp',\n });\n };\n\n private onTapHandlerStateChange = ({\n nativeEvent,\n }: HandlerStateChangeEvent<TapGestureHandlerEventPayload>) => {\n if (nativeEvent.oldState === State.ACTIVE) {\n this.close();\n }\n };\n\n private onHandlerStateChange = (\n ev: HandlerStateChangeEvent<PanGestureHandlerEventPayload>\n ) => {\n if (ev.nativeEvent.oldState === State.ACTIVE) {\n this.handleRelease(ev);\n }\n\n if (ev.nativeEvent.state === State.ACTIVE) {\n const { velocityX, translationX: dragX } = ev.nativeEvent;\n const { rowState } = this.state;\n const { friction } = this.props;\n\n const translationX = (dragX + DRAG_TOSS * velocityX) / friction!;\n\n const direction =\n rowState === -1\n ? 'right'\n : rowState === 1\n ? 'left'\n : translationX > 0\n ? 'left'\n : 'right';\n\n if (rowState === 0) {\n this.props.onSwipeableOpenStartDrag?.(direction);\n } else {\n this.props.onSwipeableCloseStartDrag?.(direction);\n }\n }\n };\n\n private handleRelease = (\n ev: HandlerStateChangeEvent<PanGestureHandlerEventPayload>\n ) => {\n const { velocityX, translationX: dragX } = ev.nativeEvent;\n const { leftWidth = 0, rowWidth = 0, rowState } = this.state;\n const { rightOffset = rowWidth } = this.state;\n const rightWidth = rowWidth - rightOffset;\n const {\n friction,\n leftThreshold = leftWidth / 2,\n rightThreshold = rightWidth / 2,\n } = this.props;\n\n const startOffsetX = this.currentOffset() + dragX / friction!;\n const translationX = (dragX + DRAG_TOSS * velocityX) / friction!;\n\n let toValue = 0;\n if (rowState === 0) {\n if (translationX > leftThreshold) {\n toValue = leftWidth;\n } else if (translationX < -rightThreshold) {\n toValue = -rightWidth;\n }\n } else if (rowState === 1) {\n // swiped to left\n if (translationX > -leftThreshold) {\n toValue = leftWidth;\n }\n } else {\n // swiped to right\n if (translationX < rightThreshold) {\n toValue = -rightWidth;\n }\n }\n\n this.animateRow(startOffsetX, toValue, velocityX / friction!);\n };\n\n private animateRow = (\n fromValue: number,\n toValue: number,\n velocityX?:\n | number\n | {\n x: number;\n y: number;\n }\n ) => {\n const { dragX, rowTranslation } = this.state;\n dragX.setValue(0);\n rowTranslation.setValue(fromValue);\n\n this.setState({ rowState: Math.sign(toValue) });\n Animated.spring(rowTranslation, {\n restSpeedThreshold: 1.7,\n restDisplacementThreshold: 0.4,\n velocity: velocityX,\n bounciness: 0,\n toValue,\n useNativeDriver: this.props.useNativeAnimations!,\n ...this.props.animationOptions,\n }).start(({ finished }) => {\n if (finished) {\n if (toValue > 0) {\n this.props.onSwipeableLeftOpen?.();\n this.props.onSwipeableOpen?.('left', this);\n } else if (toValue < 0) {\n this.props.onSwipeableRightOpen?.();\n this.props.onSwipeableOpen?.('right', this);\n } else {\n const closingDirection = fromValue > 0 ? 'left' : 'right';\n this.props.onSwipeableClose?.(closingDirection, this);\n }\n }\n });\n if (toValue > 0) {\n this.props.onSwipeableLeftWillOpen?.();\n this.props.onSwipeableWillOpen?.('left');\n } else if (toValue < 0) {\n this.props.onSwipeableRightWillOpen?.();\n this.props.onSwipeableWillOpen?.('right');\n } else {\n const closingDirection = fromValue > 0 ? 'left' : 'right';\n this.props.onSwipeableWillClose?.(closingDirection);\n }\n };\n\n private onRowLayout = ({ nativeEvent }: LayoutChangeEvent) => {\n this.setState({ rowWidth: nativeEvent.layout.width });\n };\n\n private currentOffset = () => {\n const { leftWidth = 0, rowWidth = 0, rowState } = this.state;\n const { rightOffset = rowWidth } = this.state;\n const rightWidth = rowWidth - rightOffset;\n if (rowState === 1) {\n return leftWidth;\n } else if (rowState === -1) {\n return -rightWidth;\n }\n return 0;\n };\n\n close = () => {\n this.animateRow(this.currentOffset(), 0);\n };\n\n openLeft = () => {\n const { leftWidth = 0 } = this.state;\n this.animateRow(this.currentOffset(), leftWidth);\n };\n\n openRight = () => {\n const { rowWidth = 0 } = this.state;\n const { rightOffset = rowWidth } = this.state;\n const rightWidth = rowWidth - rightOffset;\n this.animateRow(this.currentOffset(), -rightWidth);\n };\n\n reset = () => {\n const { dragX, rowTranslation } = this.state;\n dragX.setValue(0);\n rowTranslation.setValue(0);\n this.setState({ rowState: 0 });\n };\n\n render() {\n const { rowState } = this.state;\n const {\n children,\n renderLeftActions,\n renderRightActions,\n dragOffsetFromLeftEdge = 10,\n dragOffsetFromRightEdge = 10,\n } = this.props;\n\n const left = renderLeftActions && (\n <Animated.View\n style={[\n styles.leftActions,\n // all those and below parameters can have ! since they are all\n // asigned in constructor in `updateAnimatedEvent` but TS cannot spot\n // it for some reason\n { transform: [{ translateX: this.leftActionTranslate! }] },\n ]}>\n {renderLeftActions(this.showLeftAction!, this.transX!, this)}\n <View\n onLayout={({ nativeEvent }) =>\n this.setState({ leftWidth: nativeEvent.layout.x })\n }\n />\n </Animated.View>\n );\n\n const right = renderRightActions && (\n <Animated.View\n style={[\n styles.rightActions,\n { transform: [{ translateX: this.rightActionTranslate! }] },\n ]}>\n {renderRightActions(this.showRightAction!, this.transX!, this)}\n <View\n onLayout={({ nativeEvent }) =>\n this.setState({ rightOffset: nativeEvent.layout.x })\n }\n />\n </Animated.View>\n );\n\n return (\n <PanGestureHandler\n activeOffsetX={[-dragOffsetFromRightEdge, dragOffsetFromLeftEdge]}\n touchAction=\"pan-y\"\n {...this.props}\n onGestureEvent={this.onGestureEvent}\n onHandlerStateChange={this.onHandlerStateChange}>\n <Animated.View\n onLayout={this.onRowLayout}\n style={[styles.container, this.props.containerStyle]}>\n {left}\n {right}\n <TapGestureHandler\n enabled={rowState !== 0}\n touchAction=\"pan-y\"\n onHandlerStateChange={this.onTapHandlerStateChange}>\n <Animated.View\n pointerEvents={rowState === 0 ? 'auto' : 'box-only'}\n style={[\n {\n transform: [{ translateX: this.transX! }],\n },\n this.props.childrenContainerStyle,\n ]}>\n {children}\n </Animated.View>\n </TapGestureHandler>\n </Animated.View>\n </PanGestureHandler>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n overflow: 'hidden',\n },\n leftActions: {\n ...StyleSheet.absoluteFillObject,\n flexDirection: I18nManager.isRTL ? 'row-reverse' : 'row',\n },\n rightActions: {\n ...StyleSheet.absoluteFillObject,\n flexDirection: I18nManager.isRTL ? 'row' : 'row-reverse',\n },\n});\n"]}
|
1
|
+
{"version":3,"sources":["Swipeable.tsx"],"names":["DRAG_TOSS","Swipeable","Component","constructor","props","state","friction","overshootFriction","dragX","rowTranslation","leftWidth","rowWidth","rightOffset","rightWidth","Math","max","overshootLeft","overshootRight","transX","Animated","add","interpolate","inputRange","outputRange","showLeftAction","Value","leftActionTranslate","Number","MIN_VALUE","extrapolate","showRightAction","rightActionTranslate","nativeEvent","oldState","State","ACTIVE","close","ev","handleRelease","velocityX","translationX","rowState","direction","onSwipeableOpenStartDrag","onSwipeableCloseStartDrag","leftThreshold","rightThreshold","startOffsetX","currentOffset","toValue","animateRow","fromValue","setValue","setState","sign","spring","restSpeedThreshold","restDisplacementThreshold","velocity","bounciness","useNativeDriver","useNativeAnimations","animationOptions","start","finished","onSwipeableLeftOpen","onSwipeableOpen","onSwipeableRightOpen","closingDirection","onSwipeableClose","onSwipeableLeftWillOpen","onSwipeableWillOpen","onSwipeableRightWillOpen","onSwipeableWillClose","layout","width","undefined","updateAnimatedEvent","onGestureEvent","event","shouldComponentUpdate","render","children","renderLeftActions","renderRightActions","dragOffsetFromLeftEdge","dragOffsetFromRightEdge","left","styles","leftActions","transform","translateX","x","right","rightActions","onHandlerStateChange","onRowLayout","container","containerStyle","onTapHandlerStateChange","childrenContainerStyle","StyleSheet","create","overflow","absoluteFillObject","flexDirection","I18nManager","isRTL"],"mappings":"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","sourcesContent":["// Similarily to the DrawerLayout component this deserves to be put in a\n// separate repo. Although, keeping it here for the time being will allow us to\n// move faster and fix possible issues quicker\n\nimport * as React from 'react';\nimport { Component } from 'react';\nimport {\n Animated,\n StyleSheet,\n View,\n I18nManager,\n LayoutChangeEvent,\n StyleProp,\n ViewStyle,\n} from 'react-native';\n\nimport {\n GestureEvent,\n HandlerStateChangeEvent,\n} from '../handlers/gestureHandlerCommon';\nimport {\n PanGestureHandler,\n PanGestureHandlerProps,\n} from '../handlers/PanGestureHandler';\nimport {\n PanGestureHandlerEventPayload,\n TapGestureHandlerEventPayload,\n} from '../handlers/GestureHandlerEventPayload';\nimport { TapGestureHandler } from '../handlers/TapGestureHandler';\nimport { State } from '../State';\n\nconst DRAG_TOSS = 0.05;\n\ntype SwipeableExcludes = Exclude<\n keyof PanGestureHandlerProps,\n 'onGestureEvent' | 'onHandlerStateChange'\n>;\n\n// Animated.AnimatedInterpolation has been converted to a generic type\n// in @types/react-native 0.70. This way we can maintain compatibility\n// with all versions of @types/react-native\ntype AnimatedInterpolation = ReturnType<Animated.Value['interpolate']>;\n\nexport interface SwipeableProps\n extends Pick<PanGestureHandlerProps, SwipeableExcludes> {\n /**\n * Enables two-finger gestures on supported devices, for example iPads with\n * trackpads. If not enabled the gesture will require click + drag, with\n * `enableTrackpadTwoFingerGesture` swiping with two fingers will also trigger\n * the gesture.\n */\n enableTrackpadTwoFingerGesture?: boolean;\n\n /**\n * Specifies how much the visual interaction will be delayed compared to the\n * gesture distance. e.g. value of 1 will indicate that the swipeable panel\n * should exactly follow the gesture, 2 means it is going to be two times\n * \"slower\".\n */\n friction?: number;\n\n /**\n * Distance from the left edge at which released panel will animate to the\n * open state (or the open panel will animate into the closed state). By\n * default it's a half of the panel's width.\n */\n leftThreshold?: number;\n\n /**\n * Distance from the right edge at which released panel will animate to the\n * open state (or the open panel will animate into the closed state). By\n * default it's a half of the panel's width.\n */\n rightThreshold?: number;\n\n /**\n * Distance that the panel must be dragged from the left edge to be considered\n * a swipe. The default value is 10.\n */\n dragOffsetFromLeftEdge?: number;\n\n /**\n * Distance that the panel must be dragged from the right edge to be considered\n * a swipe. The default value is 10.\n */\n dragOffsetFromRightEdge?: number;\n\n /**\n * Value indicating if the swipeable panel can be pulled further than the left\n * actions panel's width. It is set to true by default as long as the left\n * panel render method is present.\n */\n overshootLeft?: boolean;\n\n /**\n * Value indicating if the swipeable panel can be pulled further than the\n * right actions panel's width. It is set to true by default as long as the\n * right panel render method is present.\n */\n overshootRight?: boolean;\n\n /**\n * Specifies how much the visual interaction will be delayed compared to the\n * gesture distance at overshoot. Default value is 1, it mean no friction, for\n * a native feel, try 8 or above.\n */\n overshootFriction?: number;\n\n /**\n * @deprecated Use `direction` argument of onSwipeableOpen()\n *\n * Called when left action panel gets open.\n */\n onSwipeableLeftOpen?: () => void;\n\n /**\n * @deprecated Use `direction` argument of onSwipeableOpen()\n *\n * Called when right action panel gets open.\n */\n onSwipeableRightOpen?: () => void;\n\n /**\n * Called when action panel gets open (either right or left).\n */\n onSwipeableOpen?: (direction: 'left' | 'right', swipeable: Swipeable) => void;\n\n /**\n * Called when action panel is closed.\n */\n onSwipeableClose?: (\n direction: 'left' | 'right',\n swipeable: Swipeable\n ) => void;\n\n /**\n * @deprecated Use `direction` argument of onSwipeableWillOpen()\n *\n * Called when left action panel starts animating on open.\n */\n onSwipeableLeftWillOpen?: () => void;\n\n /**\n * @deprecated Use `direction` argument of onSwipeableWillOpen()\n *\n * Called when right action panel starts animating on open.\n */\n onSwipeableRightWillOpen?: () => void;\n\n /**\n * Called when action panel starts animating on open (either right or left).\n */\n onSwipeableWillOpen?: (direction: 'left' | 'right') => void;\n\n /**\n * Called when action panel starts animating on close.\n */\n onSwipeableWillClose?: (direction: 'left' | 'right') => void;\n\n /**\n * Called when action panel starts being shown on dragging to open.\n */\n onSwipeableOpenStartDrag?: (direction: 'left' | 'right') => void;\n\n /**\n * Called when action panel starts being shown on dragging to close.\n */\n onSwipeableCloseStartDrag?: (direction: 'left' | 'right') => void;\n\n /**\n *\n * This map describes the values to use as inputRange for extra interpolation:\n * AnimatedValue: [startValue, endValue]\n *\n * progressAnimatedValue: [0, 1] dragAnimatedValue: [0, +]\n *\n * To support `rtl` flexbox layouts use `flexDirection` styling.\n * */\n renderLeftActions?: (\n progressAnimatedValue: AnimatedInterpolation,\n dragAnimatedValue: AnimatedInterpolation,\n swipeable: Swipeable\n ) => React.ReactNode;\n /**\n *\n * This map describes the values to use as inputRange for extra interpolation:\n * AnimatedValue: [startValue, endValue]\n *\n * progressAnimatedValue: [0, 1] dragAnimatedValue: [0, -]\n *\n * To support `rtl` flexbox layouts use `flexDirection` styling.\n * */\n renderRightActions?: (\n progressAnimatedValue: AnimatedInterpolation,\n dragAnimatedValue: AnimatedInterpolation,\n swipeable: Swipeable\n ) => React.ReactNode;\n\n useNativeAnimations?: boolean;\n\n animationOptions?: Record<string, unknown>;\n\n /**\n * Style object for the container (`Animated.View`), for example to override\n * `overflow: 'hidden'`.\n */\n containerStyle?: StyleProp<ViewStyle>;\n\n /**\n * Style object for the children container (`Animated.View`), for example to\n * apply `flex: 1`\n */\n childrenContainerStyle?: StyleProp<ViewStyle>;\n}\n\ntype SwipeableState = {\n dragX: Animated.Value;\n rowTranslation: Animated.Value;\n rowState: number;\n leftWidth?: number;\n rightOffset?: number;\n rowWidth?: number;\n};\n\nexport default class Swipeable extends Component<\n SwipeableProps,\n SwipeableState\n> {\n static defaultProps = {\n friction: 1,\n overshootFriction: 1,\n useNativeAnimations: true,\n };\n\n constructor(props: SwipeableProps) {\n super(props);\n const dragX = new Animated.Value(0);\n this.state = {\n dragX,\n rowTranslation: new Animated.Value(0),\n rowState: 0,\n leftWidth: undefined,\n rightOffset: undefined,\n rowWidth: undefined,\n };\n this.updateAnimatedEvent(props, this.state);\n\n this.onGestureEvent = Animated.event(\n [{ nativeEvent: { translationX: dragX } }],\n { useNativeDriver: props.useNativeAnimations! }\n );\n }\n\n shouldComponentUpdate(props: SwipeableProps, state: SwipeableState) {\n if (\n this.props.friction !== props.friction ||\n this.props.overshootLeft !== props.overshootLeft ||\n this.props.overshootRight !== props.overshootRight ||\n this.props.overshootFriction !== props.overshootFriction ||\n this.state.leftWidth !== state.leftWidth ||\n this.state.rightOffset !== state.rightOffset ||\n this.state.rowWidth !== state.rowWidth\n ) {\n this.updateAnimatedEvent(props, state);\n }\n\n return true;\n }\n\n private onGestureEvent?: (\n event: GestureEvent<PanGestureHandlerEventPayload>\n ) => void;\n private transX?: AnimatedInterpolation;\n private showLeftAction?: AnimatedInterpolation | Animated.Value;\n private leftActionTranslate?: AnimatedInterpolation;\n private showRightAction?: AnimatedInterpolation | Animated.Value;\n private rightActionTranslate?: AnimatedInterpolation;\n\n private updateAnimatedEvent = (\n props: SwipeableProps,\n state: SwipeableState\n ) => {\n const { friction, overshootFriction } = props;\n const { dragX, rowTranslation, leftWidth = 0, rowWidth = 0 } = state;\n const { rightOffset = rowWidth } = state;\n const rightWidth = Math.max(0, rowWidth - rightOffset);\n\n const { overshootLeft = leftWidth > 0, overshootRight = rightWidth > 0 } =\n props;\n\n const transX = Animated.add(\n rowTranslation,\n dragX.interpolate({\n inputRange: [0, friction!],\n outputRange: [0, 1],\n })\n ).interpolate({\n inputRange: [-rightWidth - 1, -rightWidth, leftWidth, leftWidth + 1],\n outputRange: [\n -rightWidth - (overshootRight ? 1 / overshootFriction! : 0),\n -rightWidth,\n leftWidth,\n leftWidth + (overshootLeft ? 1 / overshootFriction! : 0),\n ],\n });\n this.transX = transX;\n this.showLeftAction =\n leftWidth > 0\n ? transX.interpolate({\n inputRange: [-1, 0, leftWidth],\n outputRange: [0, 0, 1],\n })\n : new Animated.Value(0);\n this.leftActionTranslate = this.showLeftAction.interpolate({\n inputRange: [0, Number.MIN_VALUE],\n outputRange: [-10000, 0],\n extrapolate: 'clamp',\n });\n this.showRightAction =\n rightWidth > 0\n ? transX.interpolate({\n inputRange: [-rightWidth, 0, 1],\n outputRange: [1, 0, 0],\n })\n : new Animated.Value(0);\n this.rightActionTranslate = this.showRightAction.interpolate({\n inputRange: [0, Number.MIN_VALUE],\n outputRange: [-10000, 0],\n extrapolate: 'clamp',\n });\n };\n\n private onTapHandlerStateChange = ({\n nativeEvent,\n }: HandlerStateChangeEvent<TapGestureHandlerEventPayload>) => {\n if (nativeEvent.oldState === State.ACTIVE) {\n this.close();\n }\n };\n\n private onHandlerStateChange = (\n ev: HandlerStateChangeEvent<PanGestureHandlerEventPayload>\n ) => {\n if (ev.nativeEvent.oldState === State.ACTIVE) {\n this.handleRelease(ev);\n }\n\n if (ev.nativeEvent.state === State.ACTIVE) {\n const { velocityX, translationX: dragX } = ev.nativeEvent;\n const { rowState } = this.state;\n const { friction } = this.props;\n\n const translationX = (dragX + DRAG_TOSS * velocityX) / friction!;\n\n const direction =\n rowState === -1\n ? 'right'\n : rowState === 1\n ? 'left'\n : translationX > 0\n ? 'left'\n : 'right';\n\n if (rowState === 0) {\n this.props.onSwipeableOpenStartDrag?.(direction);\n } else {\n this.props.onSwipeableCloseStartDrag?.(direction);\n }\n }\n };\n\n private handleRelease = (\n ev: HandlerStateChangeEvent<PanGestureHandlerEventPayload>\n ) => {\n const { velocityX, translationX: dragX } = ev.nativeEvent;\n const { leftWidth = 0, rowWidth = 0, rowState } = this.state;\n const { rightOffset = rowWidth } = this.state;\n const rightWidth = rowWidth - rightOffset;\n const {\n friction,\n leftThreshold = leftWidth / 2,\n rightThreshold = rightWidth / 2,\n } = this.props;\n\n const startOffsetX = this.currentOffset() + dragX / friction!;\n const translationX = (dragX + DRAG_TOSS * velocityX) / friction!;\n\n let toValue = 0;\n if (rowState === 0) {\n if (translationX > leftThreshold) {\n toValue = leftWidth;\n } else if (translationX < -rightThreshold) {\n toValue = -rightWidth;\n }\n } else if (rowState === 1) {\n // Swiped to left\n if (translationX > -leftThreshold) {\n toValue = leftWidth;\n }\n } else {\n // Swiped to right\n if (translationX < rightThreshold) {\n toValue = -rightWidth;\n }\n }\n\n this.animateRow(startOffsetX, toValue, velocityX / friction!);\n };\n\n private animateRow = (\n fromValue: number,\n toValue: number,\n velocityX?:\n | number\n | {\n x: number;\n y: number;\n }\n ) => {\n const { dragX, rowTranslation } = this.state;\n dragX.setValue(0);\n rowTranslation.setValue(fromValue);\n\n this.setState({ rowState: Math.sign(toValue) });\n Animated.spring(rowTranslation, {\n restSpeedThreshold: 1.7,\n restDisplacementThreshold: 0.4,\n velocity: velocityX,\n bounciness: 0,\n toValue,\n useNativeDriver: this.props.useNativeAnimations!,\n ...this.props.animationOptions,\n }).start(({ finished }) => {\n if (finished) {\n if (toValue > 0) {\n this.props.onSwipeableLeftOpen?.();\n this.props.onSwipeableOpen?.('left', this);\n } else if (toValue < 0) {\n this.props.onSwipeableRightOpen?.();\n this.props.onSwipeableOpen?.('right', this);\n } else {\n const closingDirection = fromValue > 0 ? 'left' : 'right';\n this.props.onSwipeableClose?.(closingDirection, this);\n }\n }\n });\n if (toValue > 0) {\n this.props.onSwipeableLeftWillOpen?.();\n this.props.onSwipeableWillOpen?.('left');\n } else if (toValue < 0) {\n this.props.onSwipeableRightWillOpen?.();\n this.props.onSwipeableWillOpen?.('right');\n } else {\n const closingDirection = fromValue > 0 ? 'left' : 'right';\n this.props.onSwipeableWillClose?.(closingDirection);\n }\n };\n\n private onRowLayout = ({ nativeEvent }: LayoutChangeEvent) => {\n this.setState({ rowWidth: nativeEvent.layout.width });\n };\n\n private currentOffset = () => {\n const { leftWidth = 0, rowWidth = 0, rowState } = this.state;\n const { rightOffset = rowWidth } = this.state;\n const rightWidth = rowWidth - rightOffset;\n if (rowState === 1) {\n return leftWidth;\n } else if (rowState === -1) {\n return -rightWidth;\n }\n return 0;\n };\n\n close = () => {\n this.animateRow(this.currentOffset(), 0);\n };\n\n openLeft = () => {\n const { leftWidth = 0 } = this.state;\n this.animateRow(this.currentOffset(), leftWidth);\n };\n\n openRight = () => {\n const { rowWidth = 0 } = this.state;\n const { rightOffset = rowWidth } = this.state;\n const rightWidth = rowWidth - rightOffset;\n this.animateRow(this.currentOffset(), -rightWidth);\n };\n\n reset = () => {\n const { dragX, rowTranslation } = this.state;\n dragX.setValue(0);\n rowTranslation.setValue(0);\n this.setState({ rowState: 0 });\n };\n\n render() {\n const { rowState } = this.state;\n const {\n children,\n renderLeftActions,\n renderRightActions,\n dragOffsetFromLeftEdge = 10,\n dragOffsetFromRightEdge = 10,\n } = this.props;\n\n const left = renderLeftActions && (\n <Animated.View\n style={[\n styles.leftActions,\n // All those and below parameters can have ! since they are all\n // asigned in constructor in `updateAnimatedEvent` but TS cannot spot\n // it for some reason\n { transform: [{ translateX: this.leftActionTranslate! }] },\n ]}>\n {renderLeftActions(this.showLeftAction!, this.transX!, this)}\n <View\n onLayout={({ nativeEvent }) =>\n this.setState({ leftWidth: nativeEvent.layout.x })\n }\n />\n </Animated.View>\n );\n\n const right = renderRightActions && (\n <Animated.View\n style={[\n styles.rightActions,\n { transform: [{ translateX: this.rightActionTranslate! }] },\n ]}>\n {renderRightActions(this.showRightAction!, this.transX!, this)}\n <View\n onLayout={({ nativeEvent }) =>\n this.setState({ rightOffset: nativeEvent.layout.x })\n }\n />\n </Animated.View>\n );\n\n return (\n <PanGestureHandler\n activeOffsetX={[-dragOffsetFromRightEdge, dragOffsetFromLeftEdge]}\n touchAction=\"pan-y\"\n {...this.props}\n onGestureEvent={this.onGestureEvent}\n onHandlerStateChange={this.onHandlerStateChange}>\n <Animated.View\n onLayout={this.onRowLayout}\n style={[styles.container, this.props.containerStyle]}>\n {left}\n {right}\n <TapGestureHandler\n enabled={rowState !== 0}\n touchAction=\"pan-y\"\n onHandlerStateChange={this.onTapHandlerStateChange}>\n <Animated.View\n pointerEvents={rowState === 0 ? 'auto' : 'box-only'}\n style={[\n {\n transform: [{ translateX: this.transX! }],\n },\n this.props.childrenContainerStyle,\n ]}>\n {children}\n </Animated.View>\n </TapGestureHandler>\n </Animated.View>\n </PanGestureHandler>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n overflow: 'hidden',\n },\n leftActions: {\n ...StyleSheet.absoluteFillObject,\n flexDirection: I18nManager.isRTL ? 'row-reverse' : 'row',\n },\n rightActions: {\n ...StyleSheet.absoluteFillObject,\n flexDirection: I18nManager.isRTL ? 'row' : 'row-reverse',\n },\n});\n"]}
|
@@ -103,7 +103,7 @@ class GenericTouchable extends React.Component {
|
|
103
103
|
_defineProperty(this, "onLongPressDetected", () => {
|
104
104
|
var _this$props$onLongPre, _this$props2;
|
105
105
|
|
106
|
-
this.longPressDetected = true; //
|
106
|
+
this.longPressDetected = true; // Checked for in the caller of `onLongPressDetected`, but better to check twice
|
107
107
|
|
108
108
|
(_this$props$onLongPre = (_this$props2 = this.props).onLongPress) === null || _this$props$onLongPre === void 0 ? void 0 : _this$props$onLongPre.call(_this$props2);
|
109
109
|
});
|
@@ -164,7 +164,7 @@ class GenericTouchable extends React.Component {
|
|
164
164
|
|
165
165
|
componentDidMount() {
|
166
166
|
this.reset();
|
167
|
-
} //
|
167
|
+
} // Reset timeout to prevent memory leaks.
|
168
168
|
|
169
169
|
|
170
170
|
reset() {
|
@@ -216,7 +216,7 @@ class GenericTouchable extends React.Component {
|
|
216
216
|
}
|
217
217
|
|
218
218
|
componentWillUnmount() {
|
219
|
-
//
|
219
|
+
// To prevent memory leaks
|
220
220
|
this.reset();
|
221
221
|
}
|
222
222
|
|
@@ -228,7 +228,7 @@ class GenericTouchable extends React.Component {
|
|
228
228
|
}
|
229
229
|
|
230
230
|
onMoveOut() {
|
231
|
-
//
|
231
|
+
// Long press should no longer be detected
|
232
232
|
clearTimeout(this.longPressTimeout);
|
233
233
|
this.longPressTimeout = null;
|
234
234
|
|