react-native-screens 4.0.0-beta.15 → 4.0.0-beta.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ios/RNSConvert.mm +1 -1
- package/ios/RNSScreenStack.mm +16 -3
- package/lib/commonjs/components/DebugContainer.js.map +1 -1
- package/lib/commonjs/components/DebugContainer.web.js.map +1 -1
- package/lib/commonjs/components/Screen.js.map +1 -1
- package/lib/commonjs/components/ScreenStack.js +40 -7
- package/lib/commonjs/components/ScreenStack.js.map +1 -1
- package/lib/commonjs/components/ScreenStackItem.js +35 -2
- package/lib/commonjs/components/ScreenStackItem.js.map +1 -1
- package/lib/commonjs/contexts.js +11 -0
- package/lib/commonjs/contexts.js.map +1 -0
- package/lib/commonjs/gesture-handler/GestureDetectorProvider.js +2 -2
- package/lib/commonjs/gesture-handler/GestureDetectorProvider.js.map +1 -1
- package/lib/commonjs/gesture-handler/ScreenGestureDetector.js +3 -3
- package/lib/commonjs/gesture-handler/ScreenGestureDetector.js.map +1 -1
- package/lib/commonjs/gesture-handler/fabricUtils.js +54 -18
- package/lib/commonjs/gesture-handler/fabricUtils.js.map +1 -1
- package/lib/commonjs/index.js +1 -8
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/native-stack/views/NativeStackView.js +24 -32
- package/lib/commonjs/native-stack/views/NativeStackView.js.map +1 -1
- package/lib/module/components/DebugContainer.js.map +1 -1
- package/lib/module/components/DebugContainer.web.js.map +1 -1
- package/lib/module/components/Screen.js.map +1 -1
- package/lib/module/components/ScreenStack.js +40 -7
- package/lib/module/components/ScreenStack.js.map +1 -1
- package/lib/module/components/ScreenStackItem.js +35 -2
- package/lib/module/components/ScreenStackItem.js.map +1 -1
- package/lib/module/contexts.js +4 -0
- package/lib/module/contexts.js.map +1 -0
- package/lib/module/gesture-handler/GestureDetectorProvider.js +1 -1
- package/lib/module/gesture-handler/GestureDetectorProvider.js.map +1 -1
- package/lib/module/gesture-handler/ScreenGestureDetector.js +3 -3
- package/lib/module/gesture-handler/ScreenGestureDetector.js.map +1 -1
- package/lib/module/gesture-handler/fabricUtils.js +55 -17
- package/lib/module/gesture-handler/fabricUtils.js.map +1 -1
- package/lib/module/index.js +3 -5
- package/lib/module/index.js.map +1 -1
- package/lib/module/native-stack/views/NativeStackView.js +24 -32
- package/lib/module/native-stack/views/NativeStackView.js.map +1 -1
- package/lib/typescript/components/DebugContainer.d.ts.map +1 -1
- package/lib/typescript/components/Screen.d.ts.map +1 -1
- package/lib/typescript/components/ScreenStack.d.ts.map +1 -1
- package/lib/typescript/components/ScreenStackItem.d.ts +1 -0
- package/lib/typescript/components/ScreenStackItem.d.ts.map +1 -1
- package/lib/typescript/contexts.d.ts +5 -0
- package/lib/typescript/contexts.d.ts.map +1 -0
- package/lib/typescript/gesture-handler/ScreenGestureDetector.d.ts +2 -2
- package/lib/typescript/gesture-handler/ScreenGestureDetector.d.ts.map +1 -1
- package/lib/typescript/gesture-handler/fabricUtils.d.ts +7 -5
- package/lib/typescript/gesture-handler/fabricUtils.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +1 -4
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/native-stack/types.d.ts +6 -8
- package/lib/typescript/native-stack/types.d.ts.map +1 -1
- package/lib/typescript/native-stack/views/NativeStackView.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +46 -10
- package/lib/typescript/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/react-native.config.js +16 -28
- package/src/components/DebugContainer.tsx +2 -2
- package/src/components/DebugContainer.web.tsx +1 -1
- package/src/components/Screen.tsx +4 -7
- package/src/components/ScreenStack.tsx +95 -19
- package/src/components/ScreenStackItem.tsx +56 -16
- package/src/contexts.tsx +9 -0
- package/src/gesture-handler/GestureDetectorProvider.tsx +2 -2
- package/src/gesture-handler/ScreenGestureDetector.tsx +4 -4
- package/src/gesture-handler/fabricUtils.ts +74 -27
- package/src/index.tsx +4 -5
- package/src/native-stack/types.tsx +7 -8
- package/src/native-stack/views/NativeStackView.tsx +44 -60
- package/src/types.tsx +66 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,QAAQ,EACR,oBAAoB,EACpB,SAAS,EACT,IAAI,EACJ,aAAa,EACb,uBAAuB,EACvB,UAAU,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-screens",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.17",
|
|
4
4
|
"description": "Native navigation primitives for your React Native app.",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"submodules": "git submodule update --init --recursive && (cd react-navigation && yarn)",
|
package/react-native.config.js
CHANGED
|
@@ -1,34 +1,22 @@
|
|
|
1
|
-
let supportsCodegenConfig = false;
|
|
2
|
-
try {
|
|
3
|
-
const rnCliAndroidVersion =
|
|
4
|
-
require('@react-native-community/cli-platform-android/package.json').version;
|
|
5
|
-
const [major] = rnCliAndroidVersion.split('.');
|
|
6
|
-
supportsCodegenConfig = major >= 9;
|
|
7
|
-
} catch (e) {
|
|
8
|
-
// ignore
|
|
9
|
-
}
|
|
10
|
-
|
|
11
1
|
module.exports = {
|
|
12
2
|
dependency: {
|
|
13
3
|
platforms: {
|
|
14
|
-
android:
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
: {},
|
|
4
|
+
android: {
|
|
5
|
+
componentDescriptors: [
|
|
6
|
+
"RNSFullWindowOverlayComponentDescriptor",
|
|
7
|
+
"RNSScreenContainerComponentDescriptor",
|
|
8
|
+
"RNSScreenNavigationContainerComponentDescriptor",
|
|
9
|
+
"RNSScreenStackHeaderConfigComponentDescriptor",
|
|
10
|
+
"RNSScreenStackHeaderSubviewComponentDescriptor",
|
|
11
|
+
"RNSScreenStackComponentDescriptor",
|
|
12
|
+
"RNSSearchBarComponentDescriptor",
|
|
13
|
+
'RNSScreenComponentDescriptor',
|
|
14
|
+
"RNSScreenFooterComponentDescriptor",
|
|
15
|
+
"RNSScreenContentWrapperComponentDescriptor",
|
|
16
|
+
'RNSModalScreenComponentDescriptor'
|
|
17
|
+
],
|
|
18
|
+
cmakeListsPath: "../android/src/main/jni/CMakeLists.txt"
|
|
19
|
+
},
|
|
32
20
|
},
|
|
33
21
|
},
|
|
34
22
|
};
|
|
@@ -16,9 +16,9 @@ type ContainerProps = ViewProps & {
|
|
|
16
16
|
* See https://github.com/software-mansion/react-native-screens/pull/1825
|
|
17
17
|
* for detailed explanation.
|
|
18
18
|
*/
|
|
19
|
-
let DebugContainer: React.ComponentType<ContainerProps> =
|
|
19
|
+
let DebugContainer: React.ComponentType<ContainerProps> = props => {
|
|
20
20
|
return <ScreenContentWrapper {...props} />;
|
|
21
|
-
}
|
|
21
|
+
};
|
|
22
22
|
|
|
23
23
|
if (process.env.NODE_ENV !== 'production') {
|
|
24
24
|
// eslint-disable-next-line react/display-name
|
|
@@ -2,6 +2,6 @@ import * as React from 'react';
|
|
|
2
2
|
import { type ViewProps } from 'react-native';
|
|
3
3
|
import ScreenContentWrapper from './ScreenContentWrapper';
|
|
4
4
|
|
|
5
|
-
export default function DebugContainer(props: ViewProps)
|
|
5
|
+
export default function DebugContainer(props: ViewProps) {
|
|
6
6
|
return <ScreenContentWrapper {...props} />;
|
|
7
7
|
}
|
|
@@ -373,15 +373,12 @@ export const InnerScreen = React.forwardRef<View, ScreenProps>(
|
|
|
373
373
|
// e.g. to use `useReanimatedTransitionProgress` (see `reanimated` folder in repo)
|
|
374
374
|
export const ScreenContext = React.createContext(InnerScreen);
|
|
375
375
|
|
|
376
|
-
const Screen =
|
|
377
|
-
(
|
|
378
|
-
const ScreenWrapper = React.useContext(ScreenContext) || InnerScreen;
|
|
376
|
+
const Screen = React.forwardRef<View, ScreenProps>((props, ref) => {
|
|
377
|
+
const ScreenWrapper = React.useContext(ScreenContext) || InnerScreen;
|
|
379
378
|
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
);
|
|
379
|
+
return <ScreenWrapper {...props} ref={ref} />;
|
|
380
|
+
});
|
|
383
381
|
|
|
384
382
|
Screen.displayName = 'Screen';
|
|
385
383
|
|
|
386
|
-
|
|
387
384
|
export default Screen;
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import React from 'react';
|
|
4
|
-
import {
|
|
3
|
+
import React, { PropsWithChildren } from 'react';
|
|
4
|
+
import {
|
|
5
|
+
GestureDetectorBridge,
|
|
6
|
+
ScreensRefsHolder,
|
|
7
|
+
GestureProviderProps,
|
|
8
|
+
GoBackGesture,
|
|
9
|
+
ScreenStackProps,
|
|
10
|
+
} from '../types';
|
|
11
|
+
import { GHContext, RNSScreensRefContext } from '../contexts';
|
|
5
12
|
import { freezeEnabled } from '../core';
|
|
6
13
|
import DelayedFreeze from './helpers/DelayedFreeze';
|
|
14
|
+
import warnOnce from 'warn-once';
|
|
7
15
|
|
|
8
16
|
// Native components
|
|
9
17
|
import ScreenStackNativeComponent, {
|
|
@@ -14,10 +22,61 @@ function isFabric() {
|
|
|
14
22
|
return 'nativeFabricUIManager' in global;
|
|
15
23
|
}
|
|
16
24
|
|
|
25
|
+
const assertGHProvider = (
|
|
26
|
+
ScreenGestureDetector: (
|
|
27
|
+
props: PropsWithChildren<GestureProviderProps>,
|
|
28
|
+
) => React.JSX.Element,
|
|
29
|
+
goBackGesture: GoBackGesture | undefined,
|
|
30
|
+
) => {
|
|
31
|
+
const isGestureDetectorProviderNotDetected =
|
|
32
|
+
ScreenGestureDetector.name !== 'GHWrapper' && goBackGesture !== undefined;
|
|
33
|
+
|
|
34
|
+
warnOnce(
|
|
35
|
+
isGestureDetectorProviderNotDetected,
|
|
36
|
+
'Cannot detect GestureDetectorProvider in a screen that uses `goBackGesture`. Make sure your navigator is wrapped in GestureDetectorProvider.',
|
|
37
|
+
);
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
const assertCustomScreenTransitionsProps = (
|
|
41
|
+
screensRefs: ScreenStackProps['screensRefs'],
|
|
42
|
+
currentScreenId: ScreenStackProps['currentScreenId'],
|
|
43
|
+
goBackGesture: ScreenStackProps['goBackGesture'],
|
|
44
|
+
) => {
|
|
45
|
+
const isGestureDetectorNotConfiguredProperly =
|
|
46
|
+
goBackGesture !== undefined &&
|
|
47
|
+
screensRefs === null &&
|
|
48
|
+
currentScreenId === undefined;
|
|
49
|
+
|
|
50
|
+
warnOnce(
|
|
51
|
+
isGestureDetectorNotConfiguredProperly,
|
|
52
|
+
'Custom Screen Transition require screensRefs and currentScreenId to be provided.',
|
|
53
|
+
);
|
|
54
|
+
};
|
|
55
|
+
|
|
17
56
|
function ScreenStack(props: ScreenStackProps) {
|
|
18
|
-
const {
|
|
57
|
+
const {
|
|
58
|
+
goBackGesture,
|
|
59
|
+
screensRefs: passedScreenRefs, // TODO: For compatibility with v5, remove once v5 is removed
|
|
60
|
+
currentScreenId,
|
|
61
|
+
transitionAnimation,
|
|
62
|
+
screenEdgeGesture,
|
|
63
|
+
onFinishTransitioning,
|
|
64
|
+
children,
|
|
65
|
+
...rest
|
|
66
|
+
} = props;
|
|
67
|
+
|
|
68
|
+
const screensRefs = React.useRef<ScreensRefsHolder>(
|
|
69
|
+
passedScreenRefs?.current ?? {},
|
|
70
|
+
);
|
|
19
71
|
const ref = React.useRef(null);
|
|
20
72
|
const size = React.Children.count(children);
|
|
73
|
+
const ScreenGestureDetector = React.useContext(GHContext);
|
|
74
|
+
const gestureDetectorBridge = React.useRef<GestureDetectorBridge>({
|
|
75
|
+
stackUseEffectCallback: _stackRef => {
|
|
76
|
+
// this method will be overriden in GestureDetector
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
|
|
21
80
|
// freezes all screens except the top one
|
|
22
81
|
const childrenWithFreeze = React.Children.map(children, (child, index) => {
|
|
23
82
|
// @ts-expect-error it's either SceneView in v6 or RouteView in v5
|
|
@@ -40,24 +99,41 @@ function ScreenStack(props: ScreenStackProps) {
|
|
|
40
99
|
});
|
|
41
100
|
|
|
42
101
|
React.useEffect(() => {
|
|
43
|
-
|
|
44
|
-
gestureDetectorBridge.current.stackUseEffectCallback(ref);
|
|
45
|
-
}
|
|
102
|
+
gestureDetectorBridge.current.stackUseEffectCallback(ref);
|
|
46
103
|
});
|
|
104
|
+
|
|
105
|
+
assertGHProvider(ScreenGestureDetector, goBackGesture);
|
|
106
|
+
|
|
107
|
+
assertCustomScreenTransitionsProps(
|
|
108
|
+
screensRefs,
|
|
109
|
+
currentScreenId,
|
|
110
|
+
goBackGesture,
|
|
111
|
+
);
|
|
112
|
+
|
|
47
113
|
return (
|
|
48
|
-
<
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
114
|
+
<RNSScreensRefContext.Provider value={screensRefs}>
|
|
115
|
+
<ScreenGestureDetector
|
|
116
|
+
gestureDetectorBridge={gestureDetectorBridge}
|
|
117
|
+
goBackGesture={goBackGesture}
|
|
118
|
+
transitionAnimation={transitionAnimation}
|
|
119
|
+
screenEdgeGesture={screenEdgeGesture ?? false}
|
|
120
|
+
screensRefs={screensRefs}
|
|
121
|
+
currentScreenId={currentScreenId}>
|
|
122
|
+
<ScreenStackNativeComponent
|
|
123
|
+
{...rest}
|
|
124
|
+
/**
|
|
125
|
+
* This messy override is to conform NativeProps used by codegen and
|
|
126
|
+
* our Public API. To see reasoning go to this PR:
|
|
127
|
+
* https://github.com/software-mansion/react-native-screens/pull/2423#discussion_r1810616995
|
|
128
|
+
*/
|
|
129
|
+
onFinishTransitioning={
|
|
130
|
+
onFinishTransitioning as NativeProps['onFinishTransitioning']
|
|
131
|
+
}
|
|
132
|
+
ref={ref}>
|
|
133
|
+
{childrenWithFreeze}
|
|
134
|
+
</ScreenStackNativeComponent>
|
|
135
|
+
</ScreenGestureDetector>
|
|
136
|
+
</RNSScreensRefContext.Provider>
|
|
61
137
|
);
|
|
62
138
|
}
|
|
63
139
|
|
|
@@ -13,23 +13,35 @@ import { ScreenProps, ScreenStackHeaderConfigProps } from '../types';
|
|
|
13
13
|
import { ScreenStackHeaderConfig } from './ScreenStackHeaderConfig';
|
|
14
14
|
import Screen from './Screen';
|
|
15
15
|
import ScreenStack from './ScreenStack';
|
|
16
|
+
import { RNSScreensRefContext } from '../contexts';
|
|
16
17
|
|
|
17
18
|
type Props = Omit<
|
|
18
19
|
ScreenProps,
|
|
19
20
|
'enabled' | 'isNativeStack' | 'hasLargeHeader'
|
|
20
21
|
> & {
|
|
22
|
+
screenId: string;
|
|
21
23
|
headerConfig?: ScreenStackHeaderConfigProps;
|
|
22
24
|
contentStyle?: StyleProp<ViewStyle>;
|
|
23
25
|
};
|
|
24
26
|
|
|
25
|
-
function ScreenStackItem(
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
27
|
+
function ScreenStackItem(
|
|
28
|
+
{
|
|
29
|
+
children,
|
|
30
|
+
headerConfig,
|
|
31
|
+
activityState,
|
|
32
|
+
stackPresentation,
|
|
33
|
+
contentStyle,
|
|
34
|
+
style,
|
|
35
|
+
screenId,
|
|
36
|
+
...rest
|
|
37
|
+
}: Props,
|
|
38
|
+
ref: React.ForwardedRef<View>,
|
|
39
|
+
) {
|
|
40
|
+
const currentScreenRef = React.useRef<View | null>(null);
|
|
41
|
+
const screenRefs = React.useContext(RNSScreensRefContext);
|
|
42
|
+
|
|
43
|
+
React.useImperativeHandle(ref, () => currentScreenRef.current!);
|
|
44
|
+
|
|
33
45
|
const isHeaderInModal =
|
|
34
46
|
Platform.OS === 'android'
|
|
35
47
|
? false
|
|
@@ -42,7 +54,7 @@ function ScreenStackItem({
|
|
|
42
54
|
Platform.OS !== 'android' &&
|
|
43
55
|
stackPresentation !== 'push' &&
|
|
44
56
|
headerHiddenPreviousRef.current !== headerConfig?.hidden,
|
|
45
|
-
`Dynamically changing header's visibility in modals will result in remounting the screen and losing all local state
|
|
57
|
+
`Dynamically changing header's visibility in modals will result in remounting the screen and losing all local state.`,
|
|
46
58
|
);
|
|
47
59
|
|
|
48
60
|
headerHiddenPreviousRef.current = headerConfig?.hidden;
|
|
@@ -59,8 +71,7 @@ function ScreenStackItem({
|
|
|
59
71
|
: styles.container,
|
|
60
72
|
contentStyle,
|
|
61
73
|
]}
|
|
62
|
-
stackPresentation={stackPresentation ?? 'push'}
|
|
63
|
-
>
|
|
74
|
+
stackPresentation={stackPresentation ?? 'push'}>
|
|
64
75
|
{children}
|
|
65
76
|
</DebugContainer>
|
|
66
77
|
{/**
|
|
@@ -78,16 +89,46 @@ function ScreenStackItem({
|
|
|
78
89
|
</>
|
|
79
90
|
);
|
|
80
91
|
|
|
92
|
+
// We take backgroundColor from contentStyle and apply it on Screen.
|
|
93
|
+
// This allows to workaround one issue with truncated
|
|
94
|
+
// content with formSheet presentation.
|
|
95
|
+
let internalScreenStyle;
|
|
96
|
+
|
|
97
|
+
if (stackPresentation === 'formSheet' && contentStyle) {
|
|
98
|
+
const flattenContentStyles = StyleSheet.flatten(contentStyle);
|
|
99
|
+
internalScreenStyle = {
|
|
100
|
+
backgroundColor: flattenContentStyles?.backgroundColor,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
|
|
81
104
|
return (
|
|
82
105
|
<Screen
|
|
83
|
-
ref={
|
|
106
|
+
ref={node => {
|
|
107
|
+
currentScreenRef.current = node;
|
|
108
|
+
|
|
109
|
+
if (screenRefs === null) {
|
|
110
|
+
console.warn(
|
|
111
|
+
'Looks like RNSScreensRefContext is missing. Make sure the ScreenStack component is wrapped in it',
|
|
112
|
+
);
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
const currentRefs = screenRefs.current;
|
|
117
|
+
|
|
118
|
+
if (node === null) {
|
|
119
|
+
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
|
120
|
+
delete currentRefs[screenId];
|
|
121
|
+
} else {
|
|
122
|
+
currentRefs[screenId] = { current: node };
|
|
123
|
+
}
|
|
124
|
+
}}
|
|
84
125
|
enabled
|
|
85
126
|
isNativeStack
|
|
86
127
|
activityState={activityState}
|
|
87
128
|
stackPresentation={stackPresentation}
|
|
88
129
|
hasLargeHeader={headerConfig?.largeTitle ?? false}
|
|
89
|
-
{
|
|
90
|
-
|
|
130
|
+
style={[style, internalScreenStyle]}
|
|
131
|
+
{...rest}>
|
|
91
132
|
{isHeaderInModal ? (
|
|
92
133
|
<ScreenStack style={styles.container}>
|
|
93
134
|
<Screen
|
|
@@ -95,8 +136,7 @@ function ScreenStackItem({
|
|
|
95
136
|
isNativeStack
|
|
96
137
|
activityState={activityState}
|
|
97
138
|
hasLargeHeader={headerConfig?.largeTitle ?? false}
|
|
98
|
-
style={StyleSheet.absoluteFill}
|
|
99
|
-
>
|
|
139
|
+
style={StyleSheet.absoluteFill}>
|
|
100
140
|
{content}
|
|
101
141
|
</Screen>
|
|
102
142
|
</ScreenStack>
|
package/src/contexts.tsx
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React, { PropsWithChildren } from 'react';
|
|
2
|
+
import { GestureProviderProps, ScreensRefsHolder } from './types';
|
|
3
|
+
|
|
4
|
+
export const GHContext = React.createContext(
|
|
5
|
+
(props: PropsWithChildren<GestureProviderProps>) => <>{props.children}</>,
|
|
6
|
+
);
|
|
7
|
+
|
|
8
|
+
export const RNSScreensRefContext =
|
|
9
|
+
React.createContext<React.MutableRefObject<ScreensRefsHolder> | null>(null);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { GestureProviderProps } from '../types';
|
|
3
|
+
import { GHContext } from '../contexts';
|
|
3
4
|
import ScreenGestureDetector from './ScreenGestureDetector';
|
|
4
|
-
import type { GestureProviderProps } from '../native-stack/types';
|
|
5
5
|
|
|
6
6
|
function GHWrapper(props: GestureProviderProps) {
|
|
7
7
|
return <ScreenGestureDetector {...props} />;
|
|
@@ -14,7 +14,6 @@ import {
|
|
|
14
14
|
makeMutable,
|
|
15
15
|
runOnUI,
|
|
16
16
|
} from 'react-native-reanimated';
|
|
17
|
-
import type { GestureProviderProps } from 'src/native-stack/types';
|
|
18
17
|
import { getShadowNodeWrapperAndTagFromRef, isFabric } from './fabricUtils';
|
|
19
18
|
import { RNScreensTurboModule } from './RNScreensTurboModule';
|
|
20
19
|
import { DefaultEvent, DefaultScreenDimensions } from './defaults';
|
|
@@ -23,6 +22,7 @@ import {
|
|
|
23
22
|
checkIfTransitionCancelled,
|
|
24
23
|
getAnimationForTransition,
|
|
25
24
|
} from './constraints';
|
|
25
|
+
import { GestureProviderProps } from '../types';
|
|
26
26
|
|
|
27
27
|
const EmptyGestureHandler = Gesture.Fling();
|
|
28
28
|
|
|
@@ -33,7 +33,7 @@ const ScreenGestureDetector = ({
|
|
|
33
33
|
screenEdgeGesture,
|
|
34
34
|
transitionAnimation: customTransitionAnimation,
|
|
35
35
|
screensRefs,
|
|
36
|
-
|
|
36
|
+
currentScreenId,
|
|
37
37
|
}: GestureProviderProps) => {
|
|
38
38
|
const sharedEvent = useSharedValue(DefaultEvent);
|
|
39
39
|
const startingGesturePosition = useSharedValue(DefaultEvent);
|
|
@@ -73,7 +73,7 @@ const ScreenGestureDetector = ({
|
|
|
73
73
|
};
|
|
74
74
|
|
|
75
75
|
useEffect(() => {
|
|
76
|
-
if (!IS_FABRIC || !goBackGesture) {
|
|
76
|
+
if (!IS_FABRIC || !goBackGesture || screensRefs === undefined) {
|
|
77
77
|
return;
|
|
78
78
|
}
|
|
79
79
|
const screenTagToNodeWrapper: Record<string, Record<string, unknown>> = {};
|
|
@@ -87,7 +87,7 @@ const ScreenGestureDetector = ({
|
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
screenTagToNodeWrapperUI.value = screenTagToNodeWrapper;
|
|
90
|
-
}, [
|
|
90
|
+
}, [currentScreenId, goBackGesture]);
|
|
91
91
|
|
|
92
92
|
function computeProgress(
|
|
93
93
|
event: GestureUpdateEvent<PanGestureHandlerEventPayload>,
|
|
@@ -1,13 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
node: Record<string, unknown>;
|
|
7
|
-
};
|
|
8
|
-
};
|
|
9
|
-
_nativeTag: number;
|
|
10
|
-
}
|
|
3
|
+
import { View } from 'react-native';
|
|
4
|
+
|
|
5
|
+
/* eslint-disable */
|
|
11
6
|
|
|
12
7
|
type LocalGlobal = typeof global & Record<string, unknown>;
|
|
13
8
|
|
|
@@ -15,25 +10,77 @@ export function isFabric() {
|
|
|
15
10
|
return !!(global as LocalGlobal)._IS_FABRIC;
|
|
16
11
|
}
|
|
17
12
|
|
|
18
|
-
|
|
19
|
-
|
|
13
|
+
export type ShadowNodeWrapper = {
|
|
14
|
+
__hostObjectShadowNodeWrapper: never;
|
|
20
15
|
};
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
16
|
+
|
|
17
|
+
let findHostInstance_DEPRECATED: (ref: unknown) => void;
|
|
18
|
+
|
|
19
|
+
let getInternalInstanceHandleFromPublicInstance: (ref: unknown) => {
|
|
20
|
+
stateNode: { node: unknown };
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
// Taken and modifies from reanimated
|
|
24
|
+
export function getShadowNodeWrapperAndTagFromRef(ref: View | null): {
|
|
25
|
+
shadowNodeWrapper: ShadowNodeWrapper;
|
|
26
|
+
tag: number;
|
|
27
|
+
} {
|
|
28
|
+
// load findHostInstance_DEPRECATED lazily because it may not be available before render
|
|
29
|
+
if (findHostInstance_DEPRECATED === undefined) {
|
|
30
|
+
try {
|
|
31
|
+
findHostInstance_DEPRECATED =
|
|
32
|
+
require('react-native/Libraries/Renderer/shims/ReactFabric').findHostInstance_DEPRECATED;
|
|
33
|
+
} catch (e) {
|
|
34
|
+
findHostInstance_DEPRECATED = (_ref: unknown) => null;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if (getInternalInstanceHandleFromPublicInstance === undefined) {
|
|
39
|
+
try {
|
|
40
|
+
getInternalInstanceHandleFromPublicInstance =
|
|
41
|
+
require('react-native/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance')
|
|
42
|
+
.getInternalInstanceHandleFromPublicInstance ??
|
|
43
|
+
((_ref: any) => _ref._internalInstanceHandle);
|
|
44
|
+
} catch (e) {
|
|
45
|
+
getInternalInstanceHandleFromPublicInstance = (_ref: any) =>
|
|
46
|
+
_ref._internalInstanceHandle;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// taken from https://github.com/facebook/react-native/commit/803bb16531697233686efd475f004c1643e03617#diff-d8172256c6d63b5d32db10e54d7b10f37a26b337d5280d89f5bfd7bcea778292R196
|
|
51
|
+
// @ts-ignore some weird stuff on RN 0.74 - see examples with scrollView
|
|
52
|
+
const scrollViewRef = ref?.getScrollResponder?.()?.getNativeScrollRef?.();
|
|
53
|
+
// @ts-ignore some weird stuff on RN 0.74 - see examples with scrollView
|
|
54
|
+
const otherScrollViewRef = ref?.getNativeScrollRef?.();
|
|
55
|
+
// @ts-ignore some weird stuff on RN 0.74 - see setNativeProps example
|
|
56
|
+
const textInputRef = ref?.__internalInstanceHandle?.stateNode?.node;
|
|
57
|
+
|
|
58
|
+
let resolvedRef;
|
|
59
|
+
if (scrollViewRef) {
|
|
60
|
+
resolvedRef = {
|
|
61
|
+
shadowNodeWrapper: scrollViewRef.__internalInstanceHandle.stateNode.node,
|
|
62
|
+
tag: scrollViewRef._nativeTag,
|
|
63
|
+
};
|
|
64
|
+
} else if (otherScrollViewRef) {
|
|
65
|
+
resolvedRef = {
|
|
66
|
+
shadowNodeWrapper:
|
|
67
|
+
otherScrollViewRef.__internalInstanceHandle.stateNode.node,
|
|
68
|
+
tag: otherScrollViewRef.__nativeTag,
|
|
69
|
+
};
|
|
70
|
+
} else if (textInputRef) {
|
|
71
|
+
resolvedRef = {
|
|
72
|
+
shadowNodeWrapper: textInputRef,
|
|
73
|
+
tag: (ref as any)?.__nativeTag,
|
|
74
|
+
};
|
|
75
|
+
} else {
|
|
76
|
+
const hostInstance = findHostInstance_DEPRECATED(ref);
|
|
77
|
+
resolvedRef = {
|
|
78
|
+
shadowNodeWrapper:
|
|
79
|
+
getInternalInstanceHandleFromPublicInstance(hostInstance).stateNode
|
|
80
|
+
.node,
|
|
81
|
+
tag: (hostInstance as any)?._nativeTag,
|
|
82
|
+
};
|
|
28
83
|
}
|
|
29
|
-
}
|
|
30
84
|
|
|
31
|
-
|
|
32
|
-
ref: React.Ref<NativeStackNavigatorProps> | React.Component,
|
|
33
|
-
) {
|
|
34
|
-
const hostInstance = findHostInstance(ref as React.Component);
|
|
35
|
-
return {
|
|
36
|
-
shadowNodeWrapper: hostInstance?._internalInstanceHandle.stateNode.node,
|
|
37
|
-
tag: hostInstance?._nativeTag,
|
|
38
|
-
};
|
|
85
|
+
return resolvedRef;
|
|
39
86
|
}
|
package/src/index.tsx
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
// Side effects import declaration to ensure our TurboModule
|
|
2
|
+
// is loaded.
|
|
3
|
+
import './fabric/NativeScreensModule';
|
|
4
|
+
|
|
1
5
|
export * from './types';
|
|
2
6
|
|
|
3
7
|
/**
|
|
@@ -37,11 +41,6 @@ export { default as FullWindowOverlay } from './components/FullWindowOverlay';
|
|
|
37
41
|
export { default as ScreenFooter } from './components/ScreenFooter';
|
|
38
42
|
export { default as ScreenContentWrapper } from './components/ScreenContentWrapper';
|
|
39
43
|
|
|
40
|
-
/**
|
|
41
|
-
* Contexts
|
|
42
|
-
*/
|
|
43
|
-
export { GHContext } from './native-stack/contexts/GHContext';
|
|
44
|
-
|
|
45
44
|
/**
|
|
46
45
|
* Utils
|
|
47
46
|
*/
|
|
@@ -120,6 +120,8 @@ export type NativeStackNavigationOptions = {
|
|
|
120
120
|
backButtonInCustomView?: boolean;
|
|
121
121
|
/**
|
|
122
122
|
* Style object for the scene content.
|
|
123
|
+
*
|
|
124
|
+
* As a workaround to truncated sheet content, formSheet uses backgroundColor from contentStyle and applies it on Screen.
|
|
123
125
|
*/
|
|
124
126
|
contentStyle?: StyleProp<ViewStyle>;
|
|
125
127
|
/**
|
|
@@ -372,13 +374,6 @@ export type NativeStackNavigationOptions = {
|
|
|
372
374
|
* - "landscape_right" – landscape-right orientation is permitted
|
|
373
375
|
*/
|
|
374
376
|
screenOrientation?: ScreenProps['screenOrientation'];
|
|
375
|
-
/**
|
|
376
|
-
* Allows to set background color for the `Screen` component itself.
|
|
377
|
-
* This might come handy when using `formSheet` stack presentation, when the content view is clipped.
|
|
378
|
-
*
|
|
379
|
-
* We plan to get rid of this prop once the workaround is no longer needed.
|
|
380
|
-
*/
|
|
381
|
-
unstable_screenStyle?: ScreenProps['unstable_screenStyle'];
|
|
382
377
|
/**
|
|
383
378
|
* Object in which you should pass props in order to render native iOS searchBar.
|
|
384
379
|
*/
|
|
@@ -569,6 +564,10 @@ export type NativeStackDescriptorMap = {
|
|
|
569
564
|
[key: string]: NativeStackDescriptor;
|
|
570
565
|
};
|
|
571
566
|
|
|
567
|
+
/**
|
|
568
|
+
* Those below copied to src/types.ts should be removed with next minor and native-stack v5 removal
|
|
569
|
+
*/
|
|
570
|
+
|
|
572
571
|
/**
|
|
573
572
|
* copy from GestureHandler to avoid strong dependency
|
|
574
573
|
* @deprecated NativeStack has been moved from react-native-screens/native-stack to @react-navigation/native since version v6. With react-native-screens v4 native stack v5 (react-native-screens/native-stack) is deprecated and marked for removal in the upcoming minor release, react-native-screens v4 will support only @react-navigation/native-stack v7.
|
|
@@ -627,7 +626,7 @@ export type AnimatedScreenTransition = {
|
|
|
627
626
|
* @deprecated NativeStack has been moved from react-native-screens/native-stack to @react-navigation/native since version v6. With react-native-screens v4 native stack v5 (react-native-screens/native-stack) is deprecated and marked for removal in the upcoming minor release, react-native-screens v4 will support only @react-navigation/native-stack v7.
|
|
628
627
|
*/
|
|
629
628
|
export type ScreensRefsHolder = React.MutableRefObject<
|
|
630
|
-
Record<string, React.MutableRefObject<React.Ref<
|
|
629
|
+
Record<string, React.MutableRefObject<React.Ref<React.Component>>>
|
|
631
630
|
>;
|
|
632
631
|
|
|
633
632
|
/**
|