Files
react-navigation-scrollable…/patches/@react-navigation+stack+6.0.7.patch

153 lines
6.5 KiB
Diff

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<any>;
+ cardModalTranslateY: Animated.Value;
+}
+
+export declare const CardModalGestureContext: React.Context<CardModalGestureContextType>;
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<any>;
+ cardModalTranslateY: Animated.Value;
+}
+
+export const CardModalGestureContext =
+ React.createContext<CardModalGestureContextType | null>(null);
+
+export const CardModalGestureContextProvider = (props: {
+ value: CardModalGestureContextType;
+ enable?: boolean;
+ children: React.ReactNode;
+}) => {
+ if (props.enable) {
+ return (
+ <CardModalGestureContext.Provider value={props.value}>
+ {props.children}
+ </CardModalGestureContext.Provider>
+ );
+ }
+ 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..5542ab4 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<Props> {
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<Props> {
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<Props> {
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<Props> {
}
private contentRef = React.createRef<View>();
+ private scrollableGestureRef = React.createRef<any>();
render() {
const {
@@ -526,10 +541,12 @@ export default class Card extends React.Component<Props> {
style={[styles.container, containerStyle, customContainerStyle]}
pointerEvents="box-none"
>
+ <CardModalGestureContextProvider enable={!next && getIsModalPresentation(styleInterpolator)} value={{ scrollableGestureRef: this.scrollableGestureRef, cardModalTranslateY: gesture }}>
<PanGestureHandler
enabled={layout.width !== 0 && gestureEnabled}
onGestureEvent={handleGestureEvent}
onHandlerStateChange={this.handleGestureStateChange}
+ simultaneousHandlers={this.scrollableGestureRef}
{...this.gestureActivationCriteria()}
>
<Animated.View
@@ -563,6 +580,7 @@ export default class Card extends React.Component<Props> {
</CardSheet>
</Animated.View>
</PanGestureHandler>
+ </CardModalGestureContextProvider>
</Animated.View>
</View>
</CardAnimationContext.Provider>