react-native-screens 3.11.1 → 3.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/RNScreens.podspec +36 -6
- package/android/build.gradle +73 -1
- package/android/src/fabric/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt +49 -0
- package/android/src/fabric/java/com/swmansion/rnscreens/RNScreensComponentsRegistry.java +28 -0
- package/android/src/main/java/com/swmansion/rnscreens/RNScreensPackage.kt +11 -2
- package/android/src/main/java/com/swmansion/rnscreens/Screen.kt +24 -10
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfigViewManager.kt +83 -18
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderSubviewManager.kt +17 -5
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackViewManager.kt +14 -1
- package/android/src/main/java/com/swmansion/rnscreens/ScreenViewManager.kt +33 -16
- package/android/src/main/jni/Android.mk +45 -0
- package/android/src/main/jni/OnLoad.cpp +9 -0
- package/android/src/main/jni/RNScreensComponentsRegistry.cpp +66 -0
- package/android/src/main/jni/RNScreensComponentsRegistry.h +34 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerDelegate.java +71 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerInterface.java +30 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerDelegate.java +104 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerInterface.java +41 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderSubviewManagerDelegate.java +31 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderSubviewManagerInterface.java +17 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackManagerDelegate.java +25 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackManagerInterface.java +16 -0
- package/android/src/paper/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt +16 -0
- package/common/cpp/Android.mk +38 -0
- package/common/cpp/rnscreens/RNSScreenComponentDescriptor.h +41 -0
- package/common/cpp/rnscreens/RNSScreenShadowNode.cpp +9 -0
- package/common/cpp/rnscreens/RNSScreenShadowNode.h +29 -0
- package/common/cpp/rnscreens/RNSScreenState.cpp +14 -0
- package/common/cpp/rnscreens/RNSScreenState.h +46 -0
- package/ios/RNSScreenComponentView.h +23 -0
- package/ios/RNSScreenComponentView.mm +159 -0
- package/ios/RNSScreenController.h +10 -0
- package/ios/RNSScreenController.mm +79 -0
- package/ios/RNSScreenStackComponentView.h +15 -0
- package/ios/RNSScreenStackComponentView.mm +295 -0
- package/ios/RNSScreenStackHeaderConfigComponentView.h +42 -0
- package/ios/RNSScreenStackHeaderConfigComponentView.mm +662 -0
- package/ios/RNSScreenStackHeaderSubviewComponentView.h +14 -0
- package/ios/RNSScreenStackHeaderSubviewComponentView.mm +77 -0
- package/ios/utils/RNSUIBarButtonItem.h +5 -0
- package/ios/utils/RNSUIBarButtonItem.mm +22 -0
- package/lib/commonjs/fabric/Screen.js +27 -0
- package/lib/commonjs/fabric/Screen.js.map +1 -0
- package/lib/commonjs/fabric/ScreenNativeComponent.js +23 -0
- package/lib/commonjs/fabric/ScreenNativeComponent.js.map +1 -0
- package/lib/commonjs/fabric/ScreenStack.js +27 -0
- package/lib/commonjs/fabric/ScreenStack.js.map +1 -0
- package/lib/commonjs/fabric/ScreenStackHeaderConfigNativeComponent.js +27 -0
- package/lib/commonjs/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -0
- package/lib/commonjs/fabric/ScreenStackHeaderSubview.js +34 -0
- package/lib/commonjs/fabric/ScreenStackHeaderSubview.js.map +1 -0
- package/lib/commonjs/fabric/ScreenStackHeaderSubviewNativeComponent.js +27 -0
- package/lib/commonjs/fabric/ScreenStackHeaderSubviewNativeComponent.js.map +1 -0
- package/lib/commonjs/fabric/ScreenStackNativeComponent.js +21 -0
- package/lib/commonjs/fabric/ScreenStackNativeComponent.js.map +1 -0
- package/lib/commonjs/fabric/index.js +40 -0
- package/lib/commonjs/fabric/index.js.map +1 -0
- package/lib/commonjs/index.native.js +32 -15
- package/lib/commonjs/index.native.js.map +1 -1
- package/lib/module/fabric/Screen.js +11 -0
- package/lib/module/fabric/Screen.js.map +1 -0
- package/lib/module/fabric/ScreenNativeComponent.js +11 -0
- package/lib/module/fabric/ScreenNativeComponent.js.map +1 -0
- package/lib/module/fabric/ScreenStack.js +12 -0
- package/lib/module/fabric/ScreenStack.js.map +1 -0
- package/lib/module/fabric/ScreenStackHeaderConfigNativeComponent.js +10 -0
- package/lib/module/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -0
- package/lib/module/fabric/ScreenStackHeaderSubview.js +21 -0
- package/lib/module/fabric/ScreenStackHeaderSubview.js.map +1 -0
- package/lib/module/fabric/ScreenStackHeaderSubviewNativeComponent.js +10 -0
- package/lib/module/fabric/ScreenStackHeaderSubviewNativeComponent.js.map +1 -0
- package/lib/module/fabric/ScreenStackNativeComponent.js +9 -0
- package/lib/module/fabric/ScreenStackNativeComponent.js.map +1 -0
- package/lib/module/fabric/index.js +6 -0
- package/lib/module/fabric/index.js.map +1 -0
- package/lib/module/index.native.js +32 -15
- package/lib/module/index.native.js.map +1 -1
- package/package.json +17 -3
- package/src/fabric/Screen.js +12 -0
- package/src/fabric/ScreenNativeComponent.js +64 -0
- package/src/fabric/ScreenStack.js +8 -0
- package/src/fabric/ScreenStackHeaderConfigNativeComponent.js +54 -0
- package/src/fabric/ScreenStackHeaderSubview.js +20 -0
- package/src/fabric/ScreenStackHeaderSubviewNativeComponent.js +31 -0
- package/src/fabric/ScreenStackNativeComponent.js +19 -0
- package/src/fabric/index.js +11 -0
- package/src/index.native.tsx +35 -14
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @flow strict-local
|
|
3
|
+
* @format
|
|
4
|
+
*/
|
|
5
|
+
/* eslint-disable */
|
|
6
|
+
import * as React from 'react';
|
|
7
|
+
|
|
8
|
+
import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
|
|
9
|
+
import type { ViewProps } from 'react-native/Libraries/Components/View/ViewPropTypes';
|
|
10
|
+
import type { HostComponent } from 'react-native/Libraries/Renderer/shims/ReactNativeTypes';
|
|
11
|
+
import type { WithDefault } from 'react-native/Libraries/Types/CodegenTypes';
|
|
12
|
+
|
|
13
|
+
export type HeaderSubviewTypes =
|
|
14
|
+
| 'back'
|
|
15
|
+
| 'right'
|
|
16
|
+
| 'left'
|
|
17
|
+
| 'title'
|
|
18
|
+
| 'center'
|
|
19
|
+
| 'searchBar';
|
|
20
|
+
|
|
21
|
+
export type NativeProps = $ReadOnly<{|
|
|
22
|
+
...ViewProps,
|
|
23
|
+
type?: WithDefault<HeaderSubviewTypes, 'left'>,
|
|
24
|
+
|}>;
|
|
25
|
+
|
|
26
|
+
type ComponentType = HostComponent<NativeProps>;
|
|
27
|
+
|
|
28
|
+
export default (codegenNativeComponent<NativeProps>(
|
|
29
|
+
'RNSScreenStackHeaderSubview',
|
|
30
|
+
{}
|
|
31
|
+
): ComponentType);
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @flow strict-local
|
|
3
|
+
* @format
|
|
4
|
+
*/
|
|
5
|
+
/* eslint-disable */
|
|
6
|
+
import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
|
|
7
|
+
import type { ViewProps } from 'react-native/Libraries/Components/View/ViewPropTypes';
|
|
8
|
+
import type { HostComponent } from 'react-native/Libraries/Renderer/shims/ReactNativeTypes';
|
|
9
|
+
|
|
10
|
+
type NativeProps = $ReadOnly<{|
|
|
11
|
+
...ViewProps,
|
|
12
|
+
|}>;
|
|
13
|
+
|
|
14
|
+
type ComponentType = HostComponent<NativeProps>;
|
|
15
|
+
|
|
16
|
+
export default (codegenNativeComponent<NativeProps>(
|
|
17
|
+
'RNSScreenStack',
|
|
18
|
+
{}
|
|
19
|
+
): ComponentType);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import Screen from './Screen';
|
|
2
|
+
import ScreenStackHeaderSubview from './ScreenStackHeaderSubview';
|
|
3
|
+
import ScreenStackHeaderConfig from './ScreenStackHeaderConfigNativeComponent';
|
|
4
|
+
import ScreenStack from './ScreenStack';
|
|
5
|
+
|
|
6
|
+
export {
|
|
7
|
+
Screen,
|
|
8
|
+
ScreenStackHeaderSubview,
|
|
9
|
+
ScreenStackHeaderConfig,
|
|
10
|
+
ScreenStack,
|
|
11
|
+
};
|
package/src/index.native.tsx
CHANGED
|
@@ -44,6 +44,11 @@ const isPlatformSupported =
|
|
|
44
44
|
|
|
45
45
|
let ENABLE_SCREENS = isPlatformSupported;
|
|
46
46
|
|
|
47
|
+
// @ts-expect-error nativeFabricUIManager is not yet included in the RN types
|
|
48
|
+
const ENABLE_FABRIC = !!global?.nativeFabricUIManager;
|
|
49
|
+
|
|
50
|
+
const FabricComponents = ENABLE_FABRIC ? require('./fabric') : {};
|
|
51
|
+
|
|
47
52
|
function enableScreens(shouldEnableScreens = true): void {
|
|
48
53
|
ENABLE_SCREENS = isPlatformSupported && shouldEnableScreens;
|
|
49
54
|
if (ENABLE_SCREENS && !UIManager.getViewManagerConfig('RNSScreen')) {
|
|
@@ -92,7 +97,9 @@ let NativeFullWindowOverlay: React.ComponentType<View>;
|
|
|
92
97
|
const ScreensNativeModules = {
|
|
93
98
|
get NativeScreen() {
|
|
94
99
|
NativeScreenValue =
|
|
95
|
-
NativeScreenValue ||
|
|
100
|
+
NativeScreenValue ||
|
|
101
|
+
FabricComponents.Screen ||
|
|
102
|
+
requireNativeComponent('RNSScreen');
|
|
96
103
|
return NativeScreenValue;
|
|
97
104
|
},
|
|
98
105
|
|
|
@@ -114,13 +121,16 @@ const ScreensNativeModules = {
|
|
|
114
121
|
|
|
115
122
|
get NativeScreenStack() {
|
|
116
123
|
NativeScreenStack =
|
|
117
|
-
NativeScreenStack ||
|
|
124
|
+
NativeScreenStack ||
|
|
125
|
+
FabricComponents.ScreenStack ||
|
|
126
|
+
requireNativeComponent('RNSScreenStack');
|
|
118
127
|
return NativeScreenStack;
|
|
119
128
|
},
|
|
120
129
|
|
|
121
130
|
get NativeScreenStackHeaderConfig() {
|
|
122
131
|
NativeScreenStackHeaderConfig =
|
|
123
132
|
NativeScreenStackHeaderConfig ||
|
|
133
|
+
FabricComponents.ScreenStackHeaderConfig ||
|
|
124
134
|
requireNativeComponent('RNSScreenStackHeaderConfig');
|
|
125
135
|
return NativeScreenStackHeaderConfig;
|
|
126
136
|
},
|
|
@@ -128,6 +138,7 @@ const ScreensNativeModules = {
|
|
|
128
138
|
get NativeScreenStackHeaderSubview() {
|
|
129
139
|
NativeScreenStackHeaderSubview =
|
|
130
140
|
NativeScreenStackHeaderSubview ||
|
|
141
|
+
FabricComponents.ScreenStackHeaderSubview ||
|
|
131
142
|
requireNativeComponent('RNSScreenStackHeaderSubview');
|
|
132
143
|
return NativeScreenStackHeaderSubview;
|
|
133
144
|
},
|
|
@@ -222,9 +233,15 @@ class Screen extends React.Component<ScreenProps> {
|
|
|
222
233
|
const { enabled = ENABLE_SCREENS, ...rest } = this.props;
|
|
223
234
|
|
|
224
235
|
if (enabled && isPlatformSupported) {
|
|
225
|
-
AnimatedNativeScreen
|
|
226
|
-
|
|
227
|
-
|
|
236
|
+
if (!AnimatedNativeScreen) {
|
|
237
|
+
if (ENABLE_FABRIC) {
|
|
238
|
+
AnimatedNativeScreen = ScreensNativeModules.NativeScreen;
|
|
239
|
+
} else {
|
|
240
|
+
AnimatedNativeScreen = Animated.createAnimatedComponent(
|
|
241
|
+
ScreensNativeModules.NativeScreen
|
|
242
|
+
) as React.ComponentType<ScreenProps>;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
228
245
|
|
|
229
246
|
let {
|
|
230
247
|
// Filter out active prop in this case because it is unused and
|
|
@@ -247,6 +264,18 @@ class Screen extends React.Component<ScreenProps> {
|
|
|
247
264
|
|
|
248
265
|
const processedColor = processColor(statusBarColor);
|
|
249
266
|
|
|
267
|
+
const handleRef = (ref: ViewConfig) => {
|
|
268
|
+
if (!ENABLE_FABRIC) {
|
|
269
|
+
if (ref?.viewConfig?.validAttributes?.style) {
|
|
270
|
+
ref.viewConfig.validAttributes.style = {
|
|
271
|
+
...ref.viewConfig.validAttributes.style,
|
|
272
|
+
display: false,
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
this.setRef(ref);
|
|
276
|
+
}
|
|
277
|
+
};
|
|
278
|
+
|
|
250
279
|
return (
|
|
251
280
|
<MaybeFreeze freeze={activityState === 0}>
|
|
252
281
|
<AnimatedNativeScreen
|
|
@@ -255,15 +284,7 @@ class Screen extends React.Component<ScreenProps> {
|
|
|
255
284
|
activityState={activityState}
|
|
256
285
|
// This prevents showing blank screen when navigating between multiple screens with freezing
|
|
257
286
|
// https://github.com/software-mansion/react-native-screens/pull/1208
|
|
258
|
-
ref={
|
|
259
|
-
if (ref?.viewConfig?.validAttributes?.style) {
|
|
260
|
-
ref.viewConfig.validAttributes.style = {
|
|
261
|
-
...ref.viewConfig.validAttributes.style,
|
|
262
|
-
display: false,
|
|
263
|
-
};
|
|
264
|
-
}
|
|
265
|
-
this.setRef(ref);
|
|
266
|
-
}}
|
|
287
|
+
ref={handleRef}
|
|
267
288
|
onTransitionProgress={
|
|
268
289
|
!isNativeStack
|
|
269
290
|
? undefined
|