diff --git a/node_modules/@react-navigation/stack/lib/typescript/src/index.d.ts b/node_modules/@react-navigation/stack/lib/typescript/src/index.d.ts index 35a863b..66239cd 100644 --- a/node_modules/@react-navigation/stack/lib/typescript/src/index.d.ts +++ b/node_modules/@react-navigation/stack/lib/typescript/src/index.d.ts @@ -22,6 +22,8 @@ export { default as CardAnimationContext } from './utils/CardAnimationContext'; export { default as GestureHandlerRefContext } from './utils/GestureHandlerRefContext'; export { default as useCardAnimation } from './utils/useCardAnimation'; export { default as useGestureHandlerRef } from './utils/useGestureHandlerRef'; +export { CardModalGestureContext } from './utils/CardModalGestureContext'; + /** * Types */ diff --git a/node_modules/@react-navigation/stack/lib/typescript/src/utils/CardModalGestureContext.d.ts b/node_modules/@react-navigation/stack/lib/typescript/src/utils/CardModalGestureContext.d.ts new file mode 100644 index 0000000..590bf05 --- /dev/null +++ b/node_modules/@react-navigation/stack/lib/typescript/src/utils/CardModalGestureContext.d.ts @@ -0,0 +1,9 @@ +import * as React from 'react'; +import type { Animated } from 'react-native'; + +export interface CardModalGestureContextType { + scrollableGestureRef: React.RefObject; + cardModalTranslateY: Animated.Value; +} + +export declare const CardModalGestureContext: React.Context; diff --git a/node_modules/@react-navigation/stack/src/index.tsx b/node_modules/@react-navigation/stack/src/index.tsx index f20d3fb..d914384 100644 --- a/node_modules/@react-navigation/stack/src/index.tsx +++ b/node_modules/@react-navigation/stack/src/index.tsx @@ -31,6 +31,7 @@ export { default as CardAnimationContext } from './utils/CardAnimationContext'; export { default as GestureHandlerRefContext } from './utils/GestureHandlerRefContext'; export { default as useCardAnimation } from './utils/useCardAnimation'; export { default as useGestureHandlerRef } from './utils/useGestureHandlerRef'; +export { CardModalGestureContext } from './utils/CardModalGestureContext'; /** * Types diff --git a/node_modules/@react-navigation/stack/src/utils/CardModalGestureContext.tsx b/node_modules/@react-navigation/stack/src/utils/CardModalGestureContext.tsx new file mode 100644 index 0000000..4b041b8 --- /dev/null +++ b/node_modules/@react-navigation/stack/src/utils/CardModalGestureContext.tsx @@ -0,0 +1,25 @@ +import React from 'react'; +import { Animated } from 'react-native'; + +interface CardModalGestureContextType { + scrollableGestureRef: React.RefObject; + cardModalTranslateY: Animated.Value; +} + +export const CardModalGestureContext = + React.createContext(null); + +export const CardModalGestureContextProvider = (props: { + value: CardModalGestureContextType; + enable?: boolean; + children: React.ReactNode; +}) => { + if (props.enable) { + return ( + + {props.children} + + ); + } + return <>{props.children}; +}; diff --git a/node_modules/@react-navigation/stack/src/views/Stack/Card.tsx b/node_modules/@react-navigation/stack/src/views/Stack/Card.tsx index a013ff9..fd8deb5 100755 --- a/node_modules/@react-navigation/stack/src/views/Stack/Card.tsx +++ b/node_modules/@react-navigation/stack/src/views/Stack/Card.tsx @@ -21,6 +21,10 @@ import type { TransitionSpec, } from '../../types'; import CardAnimationContext from '../../utils/CardAnimationContext'; +import { + CardModalGestureContext, + CardModalGestureContextProvider, +} from '@react-navigation/stack/src/utils/CardModalGestureContext'; import getDistanceForDirection from '../../utils/getDistanceForDirection'; import getInvertedMultiplier from '../../utils/getInvertedMultiplier'; import memoize from '../../utils/memoize'; @@ -294,6 +298,8 @@ export default class Card extends React.Component { case GestureState.END: { this.isSwiping.setValue(FALSE); + this.isSwiping.removeListener + let distance; let translation; let velocity; @@ -303,8 +309,16 @@ export default class Card extends React.Component { gestureDirection === 'vertical-inverted' ) { distance = layout.height; - translation = nativeEvent.translationY; - velocity = nativeEvent.velocityY; + // @ts-ignore + if(this.props.gesture._offset < 0) { + // @ts-ignore + translation = this.props.gesture._offset - this.props.gesture._value; + velocity = nativeEvent.velocityY / 2; + }else{ + // @ts-ignore + translation = this.props.gesture._value; + velocity = nativeEvent.velocityY; + } } else { distance = layout.width; translation = nativeEvent.translationX; @@ -392,7 +406,7 @@ export default class Card extends React.Component { return { maxDeltaX: 15, minOffsetY: 5, - hitSlop: { bottom: -layout.height + distance }, + // hitSlop: { bottom: -layout.height + distance }, enableTrackpadTwoFingerGesture, }; } else if (gestureDirection === 'vertical-inverted') { @@ -425,6 +439,7 @@ export default class Card extends React.Component { } private contentRef = React.createRef(); + private scrollableGestureRef = React.createRef(); render() { const { @@ -526,10 +541,12 @@ export default class Card extends React.Component { style={[styles.container, containerStyle, customContainerStyle]} pointerEvents="box-none" > + { +