react-native-screens 3.13.0 → 3.14.1
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 +2 -2
- package/RNScreens.podspec +5 -4
- package/android/build.gradle +18 -1
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStack.kt +8 -4
- package/android/src/main/java/com/swmansion/rnscreens/ScreenViewManager.kt +24 -6
- package/android/src/main/java/com/swmansion/rnscreens/ScreenWindowTraits.kt +14 -18
- package/android/src/main/jni/Android.mk +1 -2
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerDelegate.java +39 -14
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerInterface.java +15 -6
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerDelegate.java +3 -3
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerInterface.java +1 -1
- package/common/cpp/Android.mk +1 -2
- package/createNativeStackNavigator/README.md +4 -0
- package/ios/RNSConvert.h +30 -0
- package/ios/RNSConvert.mm +120 -0
- package/ios/RNSEnums.h +59 -0
- package/ios/RNSFullWindowOverlay.h +17 -2
- package/ios/RNSFullWindowOverlay.mm +199 -0
- package/ios/RNSScreen.h +70 -79
- package/ios/{RNSScreen.m → RNSScreen.mm} +679 -302
- package/ios/RNSScreenContainer.h +15 -1
- package/ios/{RNSScreenContainer.m → RNSScreenContainer.mm} +99 -8
- package/ios/{RNSScreenNavigationContainer.m → RNSScreenNavigationContainer.mm} +22 -0
- package/ios/RNSScreenStack.h +19 -3
- package/ios/{RNSScreenStack.m → RNSScreenStack.mm} +377 -126
- package/ios/{RNSScreenStackAnimator.m → RNSScreenStackAnimator.mm} +19 -14
- package/ios/RNSScreenStackHeaderConfig.h +20 -21
- package/ios/{RNSScreenStackHeaderConfig.m → RNSScreenStackHeaderConfig.mm} +232 -117
- package/ios/RNSScreenStackHeaderSubview.h +45 -0
- package/ios/RNSScreenStackHeaderSubview.mm +137 -0
- package/ios/RNSScreenViewEvent.h +12 -0
- package/ios/RNSScreenViewEvent.mm +59 -0
- package/ios/{RNSScreenWindowTraits.m → RNSScreenWindowTraits.mm} +3 -2
- package/ios/RNSSearchBar.h +14 -1
- package/ios/RNSSearchBar.mm +351 -0
- package/ios/{UIViewController+RNScreens.m → UIViewController+RNScreens.mm} +0 -0
- package/ios/{UIWindow+RNScreens.m → UIWindow+RNScreens.mm} +0 -0
- package/lib/commonjs/fabric/FullWindowOverlay.js +26 -0
- package/lib/commonjs/fabric/FullWindowOverlay.js.map +1 -0
- package/lib/commonjs/fabric/FullWindowOverlayNativeComponent.js +21 -0
- package/lib/commonjs/fabric/FullWindowOverlayNativeComponent.js.map +1 -0
- package/lib/commonjs/fabric/Screen.js +10 -8
- package/lib/commonjs/fabric/Screen.js.map +1 -1
- package/lib/commonjs/fabric/ScreenContainer.js +28 -0
- package/lib/commonjs/fabric/ScreenContainer.js.map +1 -0
- package/lib/commonjs/fabric/ScreenContainerNativeComponent.js +21 -0
- package/lib/commonjs/fabric/ScreenContainerNativeComponent.js.map +1 -0
- package/lib/commonjs/fabric/ScreenNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/ScreenNavigationContainer.js +28 -0
- package/lib/commonjs/fabric/ScreenNavigationContainer.js.map +1 -0
- package/lib/commonjs/fabric/ScreenNavigationContainerNativeComponent.js +21 -0
- package/lib/commonjs/fabric/ScreenNavigationContainerNativeComponent.js.map +1 -0
- package/lib/commonjs/fabric/ScreenStack.js +6 -7
- package/lib/commonjs/fabric/ScreenStack.js.map +1 -1
- package/lib/commonjs/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/ScreenStackHeaderSubview.js +4 -1
- package/lib/commonjs/fabric/ScreenStackHeaderSubview.js.map +1 -1
- package/lib/commonjs/fabric/ScreenStackNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/SearchBar.js +37 -0
- package/lib/commonjs/fabric/SearchBar.js.map +1 -0
- package/lib/commonjs/fabric/SearchBarNativeComponent.js +25 -0
- package/lib/commonjs/fabric/SearchBarNativeComponent.js.map +1 -0
- package/lib/commonjs/fabric/index.js +32 -0
- package/lib/commonjs/fabric/index.js.map +1 -1
- package/lib/commonjs/index.native.js +14 -18
- package/lib/commonjs/index.native.js.map +1 -1
- package/lib/commonjs/native-stack/views/NativeStackView.js +4 -0
- package/lib/commonjs/native-stack/views/NativeStackView.js.map +1 -1
- package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js +8 -2
- package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js.map +1 -1
- package/lib/module/fabric/FullWindowOverlay.js +15 -0
- package/lib/module/fabric/FullWindowOverlay.js.map +1 -0
- package/lib/module/fabric/FullWindowOverlayNativeComponent.js +9 -0
- package/lib/module/fabric/FullWindowOverlayNativeComponent.js.map +1 -0
- package/lib/module/fabric/Screen.js +8 -3
- package/lib/module/fabric/Screen.js.map +1 -1
- package/lib/module/fabric/ScreenContainer.js +17 -0
- package/lib/module/fabric/ScreenContainer.js.map +1 -0
- package/lib/module/fabric/ScreenContainerNativeComponent.js +9 -0
- package/lib/module/fabric/ScreenContainerNativeComponent.js.map +1 -0
- package/lib/module/fabric/ScreenNativeComponent.js.map +1 -1
- package/lib/module/fabric/ScreenNavigationContainer.js +17 -0
- package/lib/module/fabric/ScreenNavigationContainer.js.map +1 -0
- package/lib/module/fabric/ScreenNavigationContainerNativeComponent.js +9 -0
- package/lib/module/fabric/ScreenNavigationContainerNativeComponent.js.map +1 -0
- package/lib/module/fabric/ScreenStack.js +5 -2
- package/lib/module/fabric/ScreenStack.js.map +1 -1
- package/lib/module/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
- package/lib/module/fabric/ScreenStackHeaderSubview.js +4 -1
- package/lib/module/fabric/ScreenStackHeaderSubview.js.map +1 -1
- package/lib/module/fabric/ScreenStackNativeComponent.js.map +1 -1
- package/lib/module/fabric/SearchBar.js +24 -0
- package/lib/module/fabric/SearchBar.js.map +1 -0
- package/lib/module/fabric/SearchBarNativeComponent.js +11 -0
- package/lib/module/fabric/SearchBarNativeComponent.js.map +1 -0
- package/lib/module/fabric/index.js +5 -1
- package/lib/module/fabric/index.js.map +1 -1
- package/lib/module/index.native.js +15 -20
- package/lib/module/index.native.js.map +1 -1
- package/lib/module/native-stack/views/NativeStackView.js +4 -0
- package/lib/module/native-stack/views/NativeStackView.js.map +1 -1
- package/lib/module/reanimated/ReanimatedNativeStackScreen.js +7 -2
- package/lib/module/reanimated/ReanimatedNativeStackScreen.js.map +1 -1
- package/lib/typescript/native-stack/types.d.ts +12 -0
- package/lib/typescript/reanimated/ReanimatedNativeStackScreen.d.ts +1 -1
- package/lib/typescript/reanimated/ReanimatedScreen.d.ts +1 -1
- package/lib/typescript/types.d.ts +24 -0
- package/native-stack/README.md +21 -0
- package/package.json +2 -2
- package/src/fabric/FullWindowOverlay.js +13 -0
- package/src/fabric/FullWindowOverlayNativeComponent.js +19 -0
- package/src/fabric/Screen.js +5 -2
- package/src/fabric/ScreenContainer.js +16 -0
- package/src/fabric/ScreenContainerNativeComponent.js +19 -0
- package/src/fabric/ScreenNativeComponent.js +41 -8
- package/src/fabric/ScreenNavigationContainer.js +16 -0
- package/src/fabric/ScreenNavigationContainerNativeComponent.js +19 -0
- package/src/fabric/ScreenStack.js +4 -2
- package/src/fabric/ScreenStackHeaderConfigNativeComponent.js +1 -1
- package/src/fabric/ScreenStackHeaderSubview.js +3 -1
- package/src/fabric/ScreenStackNativeComponent.js +4 -0
- package/src/fabric/SearchBar.js +20 -0
- package/src/fabric/SearchBarNativeComponent.js +62 -0
- package/src/fabric/index.js +8 -0
- package/src/index.native.tsx +20 -19
- package/src/native-stack/types.tsx +12 -0
- package/src/native-stack/views/NativeStackView.tsx +4 -0
- package/src/reanimated/ReanimatedNativeStackScreen.tsx +6 -0
- package/src/types.tsx +25 -0
- package/ios/RNSFullWindowOverlay.m +0 -105
- package/ios/RNSScreenComponentView.h +0 -23
- package/ios/RNSScreenComponentView.mm +0 -159
- package/ios/RNSScreenController.h +0 -10
- package/ios/RNSScreenController.mm +0 -79
- package/ios/RNSScreenStackComponentView.h +0 -15
- package/ios/RNSScreenStackComponentView.mm +0 -295
- package/ios/RNSScreenStackHeaderConfigComponentView.h +0 -42
- package/ios/RNSScreenStackHeaderConfigComponentView.mm +0 -662
- package/ios/RNSScreenStackHeaderSubviewComponentView.h +0 -14
- package/ios/RNSScreenStackHeaderSubviewComponentView.mm +0 -77
- package/ios/RNSSearchBar.m +0 -198
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["SearchBarNativeComponent.js"],"names":["codegenNativeComponent","ColorValue","tintColor"],"mappings":"AAAA;AACA;AACA;AACA;;AACA;AACA,OAAOA,sBAAP,MAAmC,yDAAnC;AAGA,SAASC,UAAT,QAA2B,8CAA3B;AAKA,SAASC,SAAT,QAA0B,mEAA1B;AA6CA,eAAgBF,sBAAsB,CACpC,cADoC,EAEpC,EAFoC,CAAtC","sourcesContent":["/**\n * @flow strict-local\n * @format\n */\n/* eslint-disable */\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\nimport type { ViewProps } from 'react-native/Libraries/Components/View/ViewPropTypes';\nimport type { HostComponent } from 'react-native/Libraries/Renderer/shims/ReactNativeTypes';\nimport { ColorValue } from 'react-native/Libraries/StyleSheet/StyleSheet';\nimport type {\n WithDefault,\n BubblingEventHandler,\n} from 'react-native/Libraries/Types/CodegenTypes';\nimport { tintColor } from 'react-native/Libraries/Components/View/ReactNativeStyleAttributes';\n\ntype SearchBarEvent = $ReadOnly<{||}>;\n\ntype SearchButtonPressedEvent = $ReadOnly<{|\n text?: string,\n|}>;\n\ntype ChangeTextEvent = $ReadOnly<{|\n text?: string,\n|}>;\n\ntype AutoCapitalizeType = 'none' | 'words' | 'sentences' | 'characters';\n\ntype NativeProps = $ReadOnly<{|\n ...ViewProps,\n onFocus?: ?BubblingEventHandler<SearchBarEvent>,\n onBlur?: ?BubblingEventHandler<SearchBarEvent>,\n onSearchButtonPress?: ?BubblingEventHandler<SearchButtonPressedEvent>,\n onCancelButtonPress?: ?BubblingEventHandler<SearchBarEvent>,\n onChangeText?: ?BubblingEventHandler<ChangeTextEvent>,\n hideWhenScrolling?: boolean,\n autoCapitalize?: WithDefault<AutoCapitalizeType, 'none'>,\n placeholder?: string,\n obscureBackground?: boolean,\n hideNavigationBar?: boolean,\n cancelButtonText?: string,\n // TODO: implement these on iOS\n barTintColor?: ColorValue,\n tintColor?: ColorValue,\n textColor?: ColorValue,\n\n // Android only\n disableBackButtonOverride?: boolean,\n // TODO: consider creating enum here\n inputType?: string,\n onClose?: ?BubblingEventHandler<SearchBarEvent>,\n onOpen?: ?BubblingEventHandler<SearchBarEvent>,\n hintTextColor?: ColorValue,\n headerIconColor?: ColorValue,\n shouldShowHintSearchIcon?: WithDefault<boolean, true>,\n|}>;\n\ntype ComponentType = HostComponent<NativeProps>;\n\nexport default (codegenNativeComponent<NativeProps>(\n 'RNSSearchBar',\n {}\n): ComponentType);\n"]}
|
|
@@ -2,5 +2,9 @@ import Screen from './Screen';
|
|
|
2
2
|
import ScreenStackHeaderSubview from './ScreenStackHeaderSubview';
|
|
3
3
|
import ScreenStackHeaderConfig from './ScreenStackHeaderConfigNativeComponent';
|
|
4
4
|
import ScreenStack from './ScreenStack';
|
|
5
|
-
|
|
5
|
+
import SearchBar from './SearchBar';
|
|
6
|
+
import ScreenContainer from './ScreenContainer';
|
|
7
|
+
import ScreenNavigationContainer from './ScreenNavigationContainer';
|
|
8
|
+
import FullWindowOverlay from './FullWindowOverlay';
|
|
9
|
+
export { Screen, ScreenStackHeaderSubview, ScreenStackHeaderConfig, ScreenStack, SearchBar, ScreenContainer, ScreenNavigationContainer, FullWindowOverlay };
|
|
6
10
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.js"],"names":["Screen","ScreenStackHeaderSubview","ScreenStackHeaderConfig","ScreenStack"],"mappings":"AAAA,OAAOA,MAAP,MAAmB,UAAnB;AACA,OAAOC,wBAAP,MAAqC,4BAArC;AACA,OAAOC,uBAAP,MAAoC,0CAApC;AACA,OAAOC,WAAP,MAAwB,eAAxB;AAEA,
|
|
1
|
+
{"version":3,"sources":["index.js"],"names":["Screen","ScreenStackHeaderSubview","ScreenStackHeaderConfig","ScreenStack","SearchBar","ScreenContainer","ScreenNavigationContainer","FullWindowOverlay"],"mappings":"AAAA,OAAOA,MAAP,MAAmB,UAAnB;AACA,OAAOC,wBAAP,MAAqC,4BAArC;AACA,OAAOC,uBAAP,MAAoC,0CAApC;AACA,OAAOC,WAAP,MAAwB,eAAxB;AACA,OAAOC,SAAP,MAAsB,aAAtB;AACA,OAAOC,eAAP,MAA4B,mBAA5B;AACA,OAAOC,yBAAP,MAAsC,6BAAtC;AACA,OAAOC,iBAAP,MAA8B,qBAA9B;AAEA,SACEP,MADF,EAEEC,wBAFF,EAGEC,uBAHF,EAIEC,WAJF,EAKEC,SALF,EAMEC,eANF,EAOEC,yBAPF,EAQEC,iBARF","sourcesContent":["import Screen from './Screen';\nimport ScreenStackHeaderSubview from './ScreenStackHeaderSubview';\nimport ScreenStackHeaderConfig from './ScreenStackHeaderConfigNativeComponent';\nimport ScreenStack from './ScreenStack';\nimport SearchBar from './SearchBar';\nimport ScreenContainer from './ScreenContainer';\nimport ScreenNavigationContainer from './ScreenNavigationContainer';\nimport FullWindowOverlay from './FullWindowOverlay';\n\nexport {\n Screen,\n ScreenStackHeaderSubview,\n ScreenStackHeaderConfig,\n ScreenStack,\n SearchBar,\n ScreenContainer,\n ScreenNavigationContainer,\n FullWindowOverlay,\n};\n"]}
|
|
@@ -6,10 +6,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
|
|
|
6
6
|
|
|
7
7
|
import React from 'react';
|
|
8
8
|
import { Animated, Image, Platform, requireNativeComponent, StyleSheet, UIManager, View } from 'react-native';
|
|
9
|
-
import { Freeze } from 'react-freeze';
|
|
10
|
-
// eslint-disable-next-line import/default
|
|
11
|
-
|
|
12
|
-
import processColor from 'react-native/Libraries/StyleSheet/processColor';
|
|
9
|
+
import { Freeze } from 'react-freeze';
|
|
13
10
|
import { version } from 'react-native/package.json';
|
|
14
11
|
import TransitionProgressContext from './TransitionProgressContext';
|
|
15
12
|
import useTransitionProgress from './useTransitionProgress';
|
|
@@ -67,12 +64,12 @@ const ScreensNativeModules = {
|
|
|
67
64
|
},
|
|
68
65
|
|
|
69
66
|
get NativeScreenContainer() {
|
|
70
|
-
NativeScreenContainerValue = NativeScreenContainerValue || requireNativeComponent('RNSScreenContainer');
|
|
67
|
+
NativeScreenContainerValue = NativeScreenContainerValue || FabricComponents.ScreenContainer || requireNativeComponent('RNSScreenContainer');
|
|
71
68
|
return NativeScreenContainerValue;
|
|
72
69
|
},
|
|
73
70
|
|
|
74
71
|
get NativeScreenNavigationContainer() {
|
|
75
|
-
NativeScreenNavigationContainerValue = NativeScreenNavigationContainerValue || (Platform.OS === 'ios' ? requireNativeComponent('RNSScreenNavigationContainer') : this.NativeScreenContainer);
|
|
72
|
+
NativeScreenNavigationContainerValue = NativeScreenNavigationContainerValue || (Platform.OS === 'ios' ? FabricComponents.ScreenNavigationContainer || requireNativeComponent('RNSScreenNavigationContainer') : this.NativeScreenContainer);
|
|
76
73
|
return NativeScreenNavigationContainerValue;
|
|
77
74
|
},
|
|
78
75
|
|
|
@@ -92,12 +89,12 @@ const ScreensNativeModules = {
|
|
|
92
89
|
},
|
|
93
90
|
|
|
94
91
|
get NativeSearchBar() {
|
|
95
|
-
NativeSearchBar = NativeSearchBar || requireNativeComponent('RNSSearchBar');
|
|
92
|
+
NativeSearchBar = NativeSearchBar || FabricComponents.SearchBar || requireNativeComponent('RNSSearchBar');
|
|
96
93
|
return NativeSearchBar;
|
|
97
94
|
},
|
|
98
95
|
|
|
99
96
|
get NativeFullWindowOverlay() {
|
|
100
|
-
NativeFullWindowOverlay = NativeFullWindowOverlay || requireNativeComponent('RNSFullWindowOverlay');
|
|
97
|
+
NativeFullWindowOverlay = NativeFullWindowOverlay || FabricComponents.FullWindowOverlay || requireNativeComponent('RNSFullWindowOverlay');
|
|
101
98
|
return NativeFullWindowOverlay;
|
|
102
99
|
}
|
|
103
100
|
|
|
@@ -190,14 +187,9 @@ class Screen extends React.Component {
|
|
|
190
187
|
} = this.props;
|
|
191
188
|
|
|
192
189
|
if (enabled && isPlatformSupported) {
|
|
193
|
-
|
|
194
|
-
if (ENABLE_FABRIC) {
|
|
195
|
-
AnimatedNativeScreen = ScreensNativeModules.NativeScreen;
|
|
196
|
-
} else {
|
|
197
|
-
AnimatedNativeScreen = Animated.createAnimatedComponent(ScreensNativeModules.NativeScreen);
|
|
198
|
-
}
|
|
199
|
-
}
|
|
190
|
+
var _gestureResponseDista, _gestureResponseDista2, _gestureResponseDista3, _gestureResponseDista4;
|
|
200
191
|
|
|
192
|
+
AnimatedNativeScreen = AnimatedNativeScreen || Animated.createAnimatedComponent(ScreensNativeModules.NativeScreen);
|
|
201
193
|
let {
|
|
202
194
|
// Filter out active prop in this case because it is unused and
|
|
203
195
|
// can cause problems depending on react-native version:
|
|
@@ -206,7 +198,7 @@ class Screen extends React.Component {
|
|
|
206
198
|
activityState,
|
|
207
199
|
children,
|
|
208
200
|
isNativeStack,
|
|
209
|
-
|
|
201
|
+
gestureResponseDistance,
|
|
210
202
|
...props
|
|
211
203
|
} = rest;
|
|
212
204
|
|
|
@@ -215,8 +207,6 @@ class Screen extends React.Component {
|
|
|
215
207
|
activityState = active !== 0 ? 2 : 0; // in the new version, we need one of the screens to have value of 2 after the transition
|
|
216
208
|
}
|
|
217
209
|
|
|
218
|
-
const processedColor = processColor(statusBarColor);
|
|
219
|
-
|
|
220
210
|
const handleRef = ref => {
|
|
221
211
|
if (!ENABLE_FABRIC) {
|
|
222
212
|
var _ref$viewConfig, _ref$viewConfig$valid;
|
|
@@ -234,8 +224,13 @@ class Screen extends React.Component {
|
|
|
234
224
|
return /*#__PURE__*/React.createElement(MaybeFreeze, {
|
|
235
225
|
freeze: activityState === 0
|
|
236
226
|
}, /*#__PURE__*/React.createElement(AnimatedNativeScreen, _extends({}, props, {
|
|
237
|
-
|
|
238
|
-
|
|
227
|
+
activityState: activityState,
|
|
228
|
+
gestureResponseDistance: {
|
|
229
|
+
start: (_gestureResponseDista = gestureResponseDistance === null || gestureResponseDistance === void 0 ? void 0 : gestureResponseDistance.start) !== null && _gestureResponseDista !== void 0 ? _gestureResponseDista : -1,
|
|
230
|
+
end: (_gestureResponseDista2 = gestureResponseDistance === null || gestureResponseDistance === void 0 ? void 0 : gestureResponseDistance.end) !== null && _gestureResponseDista2 !== void 0 ? _gestureResponseDista2 : -1,
|
|
231
|
+
top: (_gestureResponseDista3 = gestureResponseDistance === null || gestureResponseDistance === void 0 ? void 0 : gestureResponseDistance.top) !== null && _gestureResponseDista3 !== void 0 ? _gestureResponseDista3 : -1,
|
|
232
|
+
bottom: (_gestureResponseDista4 = gestureResponseDistance === null || gestureResponseDistance === void 0 ? void 0 : gestureResponseDistance.bottom) !== null && _gestureResponseDista4 !== void 0 ? _gestureResponseDista4 : -1
|
|
233
|
+
} // This prevents showing blank screen when navigating between multiple screens with freezing
|
|
239
234
|
// https://github.com/software-mansion/react-native-screens/pull/1208
|
|
240
235
|
,
|
|
241
236
|
ref: handleRef,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.native.tsx"],"names":["React","Animated","Image","Platform","requireNativeComponent","StyleSheet","UIManager","View","Freeze","processColor","version","TransitionProgressContext","useTransitionProgress","isSearchBarAvailableForCurrentPlatform","executeNativeBackPress","isPlatformSupported","OS","ENABLE_SCREENS","ENABLE_FABRIC","global","nativeFabricUIManager","FabricComponents","require","enableScreens","shouldEnableScreens","getViewManagerConfig","console","error","ENABLE_FREEZE","enableFreeze","shouldEnableReactFreeze","minor","parseInt","split","warn","shouldUseActivityState","screensEnabled","NativeScreenValue","NativeScreenContainerValue","NativeScreenNavigationContainerValue","NativeScreenStack","NativeScreenStackHeaderConfig","NativeScreenStackHeaderSubview","AnimatedNativeScreen","NativeSearchBar","NativeFullWindowOverlay","ScreensNativeModules","NativeScreen","Screen","NativeScreenContainer","NativeScreenNavigationContainer","ScreenStack","ScreenStackHeaderConfig","ScreenStackHeaderSubview","DelayedFreeze","freeze","children","freezeState","setFreezeState","useState","setImmediate","MaybeFreeze","props","rest","size","Children","count","childrenWithFreeze","map","child","index","Component","Value","ref","onComponentRef","setNativeProps","render","enabled","createAnimatedComponent","active","activityState","isNativeStack","statusBarColor","undefined","processedColor","handleRef","viewConfig","validAttributes","style","display","setRef","event","nativeEvent","progress","closing","goingForward","useNativeDriver","ScreenContainer","hasTwoStates","styles","create","headerSubview","position","top","right","flexDirection","alignItems","justifyContent","ScreenStackHeaderBackButtonImage","ScreenStackHeaderRightView","ScreenStackHeaderLeftView","ScreenStackHeaderCenterView","ScreenStackHeaderSearchBarView","ScreenContext","createContext","module","exports","SearchBar","FullWindowOverlay"],"mappings":"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","sourcesContent":["import React from 'react';\nimport {\n Animated,\n Image,\n ImageProps,\n Platform,\n requireNativeComponent,\n StyleSheet,\n UIManager,\n View,\n ViewProps,\n} from 'react-native';\nimport { Freeze } from 'react-freeze';\n// @ts-ignore Getting private component\n// eslint-disable-next-line import/default\nimport processColor from 'react-native/Libraries/StyleSheet/processColor';\nimport { version } from 'react-native/package.json';\n\nimport TransitionProgressContext from './TransitionProgressContext';\nimport useTransitionProgress from './useTransitionProgress';\nimport {\n StackPresentationTypes,\n StackAnimationTypes,\n BlurEffectTypes,\n ScreenReplaceTypes,\n ScreenOrientationTypes,\n HeaderSubviewTypes,\n ScreenProps,\n ScreenContainerProps,\n ScreenStackProps,\n ScreenStackHeaderConfigProps,\n SearchBarProps,\n} from './types';\nimport {\n isSearchBarAvailableForCurrentPlatform,\n executeNativeBackPress,\n} from './utils';\n\n// web implementation is taken from `index.tsx`\nconst isPlatformSupported =\n Platform.OS === 'ios' ||\n Platform.OS === 'android' ||\n Platform.OS === 'windows';\n\nlet ENABLE_SCREENS = isPlatformSupported;\n\n// @ts-expect-error nativeFabricUIManager is not yet included in the RN types\nconst ENABLE_FABRIC = !!global?.nativeFabricUIManager;\n\nconst FabricComponents = ENABLE_FABRIC ? require('./fabric') : {};\n\nfunction enableScreens(shouldEnableScreens = true): void {\n ENABLE_SCREENS = isPlatformSupported && shouldEnableScreens;\n if (ENABLE_SCREENS && !UIManager.getViewManagerConfig('RNSScreen')) {\n console.error(\n `Screen native module hasn't been linked. Please check the react-native-screens README for more details`\n );\n }\n}\n\nlet ENABLE_FREEZE = false;\n\nfunction enableFreeze(shouldEnableReactFreeze = true): void {\n const minor = parseInt(version.split('.')[1]); // eg. takes 66 from '0.66.0'\n\n // react-freeze requires react-native >=0.64, react-native from main is 0.0.0\n if (!(minor === 0 || minor >= 64) && shouldEnableReactFreeze) {\n console.warn(\n 'react-freeze library requires at least react-native 0.64. Please upgrade your react-native version in order to use this feature.'\n );\n }\n\n ENABLE_FREEZE = shouldEnableReactFreeze;\n}\n\n// const that tells if the library should use new implementation, will be undefined for older versions\nconst shouldUseActivityState = true;\n\nfunction screensEnabled(): boolean {\n return ENABLE_SCREENS;\n}\n\n// We initialize these lazily so that importing the module doesn't throw error when not linked\n// This is necessary coz libraries such as React Navigation import the library where it may not be enabled\nlet NativeScreenValue: React.ComponentType<ScreenProps>;\nlet NativeScreenContainerValue: React.ComponentType<ScreenContainerProps>;\nlet NativeScreenNavigationContainerValue: React.ComponentType<ScreenContainerProps>;\nlet NativeScreenStack: React.ComponentType<ScreenStackProps>;\nlet NativeScreenStackHeaderConfig: React.ComponentType<ScreenStackHeaderConfigProps>;\nlet NativeScreenStackHeaderSubview: React.ComponentType<React.PropsWithChildren<\n ViewProps & { type?: HeaderSubviewTypes }\n>>;\nlet AnimatedNativeScreen: React.ComponentType<ScreenProps>;\nlet NativeSearchBar: React.ComponentType<SearchBarProps>;\nlet NativeFullWindowOverlay: React.ComponentType<View>;\n\nconst ScreensNativeModules = {\n get NativeScreen() {\n NativeScreenValue =\n NativeScreenValue ||\n FabricComponents.Screen ||\n requireNativeComponent('RNSScreen');\n return NativeScreenValue;\n },\n\n get NativeScreenContainer() {\n NativeScreenContainerValue =\n NativeScreenContainerValue ||\n requireNativeComponent('RNSScreenContainer');\n return NativeScreenContainerValue;\n },\n\n get NativeScreenNavigationContainer() {\n NativeScreenNavigationContainerValue =\n NativeScreenNavigationContainerValue ||\n (Platform.OS === 'ios'\n ? requireNativeComponent('RNSScreenNavigationContainer')\n : this.NativeScreenContainer);\n return NativeScreenNavigationContainerValue;\n },\n\n get NativeScreenStack() {\n NativeScreenStack =\n NativeScreenStack ||\n FabricComponents.ScreenStack ||\n requireNativeComponent('RNSScreenStack');\n return NativeScreenStack;\n },\n\n get NativeScreenStackHeaderConfig() {\n NativeScreenStackHeaderConfig =\n NativeScreenStackHeaderConfig ||\n FabricComponents.ScreenStackHeaderConfig ||\n requireNativeComponent('RNSScreenStackHeaderConfig');\n return NativeScreenStackHeaderConfig;\n },\n\n get NativeScreenStackHeaderSubview() {\n NativeScreenStackHeaderSubview =\n NativeScreenStackHeaderSubview ||\n FabricComponents.ScreenStackHeaderSubview ||\n requireNativeComponent('RNSScreenStackHeaderSubview');\n return NativeScreenStackHeaderSubview;\n },\n\n get NativeSearchBar() {\n NativeSearchBar = NativeSearchBar || requireNativeComponent('RNSSearchBar');\n return NativeSearchBar;\n },\n\n get NativeFullWindowOverlay() {\n NativeFullWindowOverlay =\n NativeFullWindowOverlay || requireNativeComponent('RNSFullWindowOverlay');\n return NativeFullWindowOverlay;\n },\n};\n\ninterface FreezeWrapperProps {\n freeze: boolean;\n children: React.ReactNode;\n}\n\n// This component allows one more render before freezing the screen.\n// Allows activityState to reach the native side and useIsFocused to work correctly.\nfunction DelayedFreeze({ freeze, children }: FreezeWrapperProps) {\n // flag used for determining whether freeze should be enabled\n const [freezeState, setFreezeState] = React.useState(false);\n\n if (freeze !== freezeState) {\n // setImmediate is executed at the end of the JS execution block.\n // Used here for changing the state right after the render.\n setImmediate(() => {\n setFreezeState(freeze);\n });\n }\n\n return <Freeze freeze={freeze ? freezeState : false}>{children}</Freeze>;\n}\n\nfunction MaybeFreeze({ freeze, children }: FreezeWrapperProps) {\n if (ENABLE_FREEZE) {\n return <DelayedFreeze freeze={freeze}>{children}</DelayedFreeze>;\n } else {\n return <>{children}</>;\n }\n}\n\nfunction ScreenStack(props: ScreenStackProps) {\n if (ENABLE_FREEZE) {\n const { children, ...rest } = props;\n const size = React.Children.count(children);\n // freezes all screens except the top one\n const childrenWithFreeze = React.Children.map(children, (child, index) => (\n <DelayedFreeze freeze={size - index > 1}>{child}</DelayedFreeze>\n ));\n return (\n <ScreensNativeModules.NativeScreenStack {...rest}>\n {childrenWithFreeze}\n </ScreensNativeModules.NativeScreenStack>\n );\n }\n return <ScreensNativeModules.NativeScreenStack {...props} />;\n}\n\n// Incomplete type, all accessible properties available at:\n// react-native/Libraries/Components/View/ReactNativeViewViewConfig.js\ninterface ViewConfig extends View {\n viewConfig: {\n validAttributes: {\n style: {\n display: boolean;\n };\n };\n };\n}\n\nclass Screen extends React.Component<ScreenProps> {\n private ref: React.ElementRef<typeof View> | null = null;\n private closing = new Animated.Value(0);\n private progress = new Animated.Value(0);\n private goingForward = new Animated.Value(0);\n\n setNativeProps(props: ScreenProps): void {\n this.ref?.setNativeProps(props);\n }\n\n setRef = (ref: React.ElementRef<typeof View> | null): void => {\n this.ref = ref;\n this.props.onComponentRef?.(ref);\n };\n\n render() {\n const { enabled = ENABLE_SCREENS, ...rest } = this.props;\n\n if (enabled && isPlatformSupported) {\n if (!AnimatedNativeScreen) {\n if (ENABLE_FABRIC) {\n AnimatedNativeScreen = ScreensNativeModules.NativeScreen;\n } else {\n AnimatedNativeScreen = Animated.createAnimatedComponent(\n ScreensNativeModules.NativeScreen\n ) as React.ComponentType<ScreenProps>;\n }\n }\n\n let {\n // Filter out active prop in this case because it is unused and\n // can cause problems depending on react-native version:\n // https://github.com/react-navigation/react-navigation/issues/4886\n active,\n activityState,\n children,\n isNativeStack,\n statusBarColor,\n ...props\n } = rest;\n\n if (active !== undefined && activityState === undefined) {\n console.warn(\n 'It appears that you are using old version of react-navigation library. Please update @react-navigation/bottom-tabs, @react-navigation/stack and @react-navigation/drawer to version 5.10.0 or above to take full advantage of new functionality added to react-native-screens'\n );\n activityState = active !== 0 ? 2 : 0; // in the new version, we need one of the screens to have value of 2 after the transition\n }\n\n const processedColor = processColor(statusBarColor);\n\n const handleRef = (ref: ViewConfig) => {\n if (!ENABLE_FABRIC) {\n if (ref?.viewConfig?.validAttributes?.style) {\n ref.viewConfig.validAttributes.style = {\n ...ref.viewConfig.validAttributes.style,\n display: false,\n };\n }\n this.setRef(ref);\n }\n };\n\n return (\n <MaybeFreeze freeze={activityState === 0}>\n <AnimatedNativeScreen\n {...props}\n statusBarColor={processedColor}\n activityState={activityState}\n // This prevents showing blank screen when navigating between multiple screens with freezing\n // https://github.com/software-mansion/react-native-screens/pull/1208\n ref={handleRef}\n onTransitionProgress={\n !isNativeStack\n ? undefined\n : Animated.event(\n [\n {\n nativeEvent: {\n progress: this.progress,\n closing: this.closing,\n goingForward: this.goingForward,\n },\n },\n ],\n { useNativeDriver: true }\n )\n }>\n {!isNativeStack ? ( // see comment of this prop in types.tsx for information why it is needed\n children\n ) : (\n <TransitionProgressContext.Provider\n value={{\n progress: this.progress,\n closing: this.closing,\n goingForward: this.goingForward,\n }}>\n {children}\n </TransitionProgressContext.Provider>\n )}\n </AnimatedNativeScreen>\n </MaybeFreeze>\n );\n } else {\n // same reason as above\n let {\n active,\n activityState,\n style,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onComponentRef,\n ...props\n } = rest;\n\n if (active !== undefined && activityState === undefined) {\n activityState = active !== 0 ? 2 : 0;\n }\n return (\n <Animated.View\n style={[style, { display: activityState !== 0 ? 'flex' : 'none' }]}\n ref={this.setRef}\n {...props}\n />\n );\n }\n }\n}\n\nfunction ScreenContainer(props: ScreenContainerProps) {\n const { enabled = ENABLE_SCREENS, hasTwoStates, ...rest } = props;\n\n if (enabled && isPlatformSupported) {\n if (hasTwoStates) {\n return <ScreensNativeModules.NativeScreenNavigationContainer {...rest} />;\n }\n return <ScreensNativeModules.NativeScreenContainer {...rest} />;\n }\n return <View {...rest} />;\n}\n\nconst styles = StyleSheet.create({\n headerSubview: {\n position: 'absolute',\n top: 0,\n right: 0,\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n\nconst ScreenStackHeaderBackButtonImage = (props: ImageProps): JSX.Element => (\n <ScreensNativeModules.NativeScreenStackHeaderSubview\n type=\"back\"\n style={styles.headerSubview}>\n <Image resizeMode=\"center\" fadeDuration={0} {...props} />\n </ScreensNativeModules.NativeScreenStackHeaderSubview>\n);\n\nconst ScreenStackHeaderRightView = (\n props: React.PropsWithChildren<ViewProps>\n): JSX.Element => (\n <ScreensNativeModules.NativeScreenStackHeaderSubview\n {...props}\n type=\"right\"\n style={styles.headerSubview}\n />\n);\n\nconst ScreenStackHeaderLeftView = (\n props: React.PropsWithChildren<ViewProps>\n): JSX.Element => (\n <ScreensNativeModules.NativeScreenStackHeaderSubview\n {...props}\n type=\"left\"\n style={styles.headerSubview}\n />\n);\n\nconst ScreenStackHeaderCenterView = (\n props: React.PropsWithChildren<ViewProps>\n): JSX.Element => (\n <ScreensNativeModules.NativeScreenStackHeaderSubview\n {...props}\n type=\"center\"\n style={styles.headerSubview}\n />\n);\n\nconst ScreenStackHeaderSearchBarView = (\n props: React.PropsWithChildren<SearchBarProps>\n): JSX.Element => (\n <ScreensNativeModules.NativeScreenStackHeaderSubview\n {...props}\n type=\"searchBar\"\n style={styles.headerSubview}\n />\n);\n\nexport type {\n StackPresentationTypes,\n StackAnimationTypes,\n BlurEffectTypes,\n ScreenReplaceTypes,\n ScreenOrientationTypes,\n HeaderSubviewTypes,\n ScreenProps,\n ScreenContainerProps,\n ScreenStackProps,\n ScreenStackHeaderConfigProps,\n SearchBarProps,\n};\n\n// context to be used when the user wants to use enhanced implementation\n// e.g. to use `react-native-reanimated` (see `reanimated` folder in repo)\nconst ScreenContext = React.createContext(Screen);\n\nmodule.exports = {\n // these are classes so they are not evaluated until used\n // so no need to use getters for them\n Screen,\n ScreenContainer,\n ScreenContext,\n ScreenStack,\n\n get NativeScreen() {\n return ScreensNativeModules.NativeScreen;\n },\n\n get NativeScreenContainer() {\n return ScreensNativeModules.NativeScreenContainer;\n },\n\n get NativeScreenNavigationContainer() {\n return ScreensNativeModules.NativeScreenNavigationContainer;\n },\n\n get ScreenStackHeaderConfig() {\n return ScreensNativeModules.NativeScreenStackHeaderConfig;\n },\n get ScreenStackHeaderSubview() {\n return ScreensNativeModules.NativeScreenStackHeaderSubview;\n },\n get SearchBar() {\n if (!isSearchBarAvailableForCurrentPlatform) {\n console.warn(\n 'Importing SearchBar is only valid on iOS and Android devices.'\n );\n return View;\n }\n\n return ScreensNativeModules.NativeSearchBar;\n },\n get FullWindowOverlay() {\n if (Platform.OS !== 'ios') {\n console.warn('Importing FullWindowOverlay is only valid on iOS devices.');\n return View;\n }\n\n return ScreensNativeModules.NativeFullWindowOverlay;\n },\n // these are functions and will not be evaluated until used\n // so no need to use getters for them\n ScreenStackHeaderBackButtonImage,\n ScreenStackHeaderRightView,\n ScreenStackHeaderLeftView,\n ScreenStackHeaderCenterView,\n ScreenStackHeaderSearchBarView,\n\n enableScreens,\n enableFreeze,\n screensEnabled,\n shouldUseActivityState,\n useTransitionProgress,\n\n isSearchBarAvailableForCurrentPlatform,\n executeNativeBackPress,\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["index.native.tsx"],"names":["React","Animated","Image","Platform","requireNativeComponent","StyleSheet","UIManager","View","Freeze","version","TransitionProgressContext","useTransitionProgress","isSearchBarAvailableForCurrentPlatform","executeNativeBackPress","isPlatformSupported","OS","ENABLE_SCREENS","ENABLE_FABRIC","global","nativeFabricUIManager","FabricComponents","require","enableScreens","shouldEnableScreens","getViewManagerConfig","console","error","ENABLE_FREEZE","enableFreeze","shouldEnableReactFreeze","minor","parseInt","split","warn","shouldUseActivityState","screensEnabled","NativeScreenValue","NativeScreenContainerValue","NativeScreenNavigationContainerValue","NativeScreenStack","NativeScreenStackHeaderConfig","NativeScreenStackHeaderSubview","AnimatedNativeScreen","NativeSearchBar","NativeFullWindowOverlay","ScreensNativeModules","NativeScreen","Screen","NativeScreenContainer","ScreenContainer","NativeScreenNavigationContainer","ScreenNavigationContainer","ScreenStack","ScreenStackHeaderConfig","ScreenStackHeaderSubview","SearchBar","FullWindowOverlay","DelayedFreeze","freeze","children","freezeState","setFreezeState","useState","setImmediate","MaybeFreeze","props","rest","size","Children","count","childrenWithFreeze","map","child","index","Component","Value","ref","onComponentRef","setNativeProps","render","enabled","createAnimatedComponent","active","activityState","isNativeStack","gestureResponseDistance","undefined","handleRef","viewConfig","validAttributes","style","display","setRef","start","end","top","bottom","event","nativeEvent","progress","closing","goingForward","useNativeDriver","hasTwoStates","styles","create","headerSubview","position","right","flexDirection","alignItems","justifyContent","ScreenStackHeaderBackButtonImage","ScreenStackHeaderRightView","ScreenStackHeaderLeftView","ScreenStackHeaderCenterView","ScreenStackHeaderSearchBarView","ScreenContext","createContext","module","exports"],"mappings":";;;;;;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SACEC,QADF,EAEEC,KAFF,EAIEC,QAJF,EAKEC,sBALF,EAMEC,UANF,EAOEC,SAPF,EAQEC,IARF,QAUO,cAVP;AAWA,SAASC,MAAT,QAAuB,cAAvB;AACA,SAASC,OAAT,QAAwB,2BAAxB;AAEA,OAAOC,yBAAP,MAAsC,6BAAtC;AACA,OAAOC,qBAAP,MAAkC,yBAAlC;AAcA,SACEC,sCADF,EAEEC,sBAFF,QAGO,SAHP,C,CAKA;;AACA,MAAMC,mBAAmB,GACvBX,QAAQ,CAACY,EAAT,KAAgB,KAAhB,IACAZ,QAAQ,CAACY,EAAT,KAAgB,SADhB,IAEAZ,QAAQ,CAACY,EAAT,KAAgB,SAHlB;AAKA,IAAIC,cAAc,GAAGF,mBAArB,C,CAEA;;AACA,MAAMG,aAAa,GAAG,CAAC,aAACC,MAAD,oCAAC,QAAQC,qBAAT,CAAvB;AAEA,MAAMC,gBAAgB,GAAGH,aAAa,GAAGI,OAAO,CAAC,UAAD,CAAV,GAAyB,EAA/D;;AAEA,SAASC,aAAT,CAAuBC,mBAAmB,GAAG,IAA7C,EAAyD;AACvDP,EAAAA,cAAc,GAAGF,mBAAmB,IAAIS,mBAAxC;;AACA,MAAIP,cAAc,IAAI,CAACV,SAAS,CAACkB,oBAAV,CAA+B,WAA/B,CAAvB,EAAoE;AAClEC,IAAAA,OAAO,CAACC,KAAR,CACG,wGADH;AAGD;AACF;;AAED,IAAIC,aAAa,GAAG,KAApB;;AAEA,SAASC,YAAT,CAAsBC,uBAAuB,GAAG,IAAhD,EAA4D;AAC1D,QAAMC,KAAK,GAAGC,QAAQ,CAACtB,OAAO,CAACuB,KAAR,CAAc,GAAd,EAAmB,CAAnB,CAAD,CAAtB,CAD0D,CACX;AAE/C;;AACA,MAAI,EAAEF,KAAK,KAAK,CAAV,IAAeA,KAAK,IAAI,EAA1B,KAAiCD,uBAArC,EAA8D;AAC5DJ,IAAAA,OAAO,CAACQ,IAAR,CACE,kIADF;AAGD;;AAEDN,EAAAA,aAAa,GAAGE,uBAAhB;AACD,C,CAED;;;AACA,MAAMK,sBAAsB,GAAG,IAA/B;;AAEA,SAASC,cAAT,GAAmC;AACjC,SAAOnB,cAAP;AACD,C,CAED;AACA;;;AACA,IAAIoB,iBAAJ;AACA,IAAIC,0BAAJ;AACA,IAAIC,oCAAJ;AACA,IAAIC,iBAAJ;AACA,IAAIC,6BAAJ;AACA,IAAIC,8BAAJ;AAGA,IAAIC,oBAAJ;AACA,IAAIC,eAAJ;AACA,IAAIC,uBAAJ;AAEA,MAAMC,oBAAoB,GAAG;AAC3B,MAAIC,YAAJ,GAAmB;AACjBV,IAAAA,iBAAiB,GACfA,iBAAiB,IACjBhB,gBAAgB,CAAC2B,MADjB,IAEA3C,sBAAsB,CAAC,WAAD,CAHxB;AAIA,WAAOgC,iBAAP;AACD,GAP0B;;AAS3B,MAAIY,qBAAJ,GAA4B;AAC1BX,IAAAA,0BAA0B,GACxBA,0BAA0B,IAC1BjB,gBAAgB,CAAC6B,eADjB,IAEA7C,sBAAsB,CAAC,oBAAD,CAHxB;AAIA,WAAOiC,0BAAP;AACD,GAf0B;;AAiB3B,MAAIa,+BAAJ,GAAsC;AACpCZ,IAAAA,oCAAoC,GAClCA,oCAAoC,KACnCnC,QAAQ,CAACY,EAAT,KAAgB,KAAhB,GACGK,gBAAgB,CAAC+B,yBAAjB,IACA/C,sBAAsB,CAAC,8BAAD,CAFzB,GAGG,KAAK4C,qBAJ2B,CADtC;AAMA,WAAOV,oCAAP;AACD,GAzB0B;;AA2B3B,MAAIC,iBAAJ,GAAwB;AACtBA,IAAAA,iBAAiB,GACfA,iBAAiB,IACjBnB,gBAAgB,CAACgC,WADjB,IAEAhD,sBAAsB,CAAC,gBAAD,CAHxB;AAIA,WAAOmC,iBAAP;AACD,GAjC0B;;AAmC3B,MAAIC,6BAAJ,GAAoC;AAClCA,IAAAA,6BAA6B,GAC3BA,6BAA6B,IAC7BpB,gBAAgB,CAACiC,uBADjB,IAEAjD,sBAAsB,CAAC,4BAAD,CAHxB;AAIA,WAAOoC,6BAAP;AACD,GAzC0B;;AA2C3B,MAAIC,8BAAJ,GAAqC;AACnCA,IAAAA,8BAA8B,GAC5BA,8BAA8B,IAC9BrB,gBAAgB,CAACkC,wBADjB,IAEAlD,sBAAsB,CAAC,6BAAD,CAHxB;AAIA,WAAOqC,8BAAP;AACD,GAjD0B;;AAmD3B,MAAIE,eAAJ,GAAsB;AACpBA,IAAAA,eAAe,GACbA,eAAe,IACfvB,gBAAgB,CAACmC,SADjB,IAEAnD,sBAAsB,CAAC,cAAD,CAHxB;AAIA,WAAOuC,eAAP;AACD,GAzD0B;;AA2D3B,MAAIC,uBAAJ,GAA8B;AAC5BA,IAAAA,uBAAuB,GACrBA,uBAAuB,IACvBxB,gBAAgB,CAACoC,iBADjB,IAEApD,sBAAsB,CAAC,sBAAD,CAHxB;AAIA,WAAOwC,uBAAP;AACD;;AAjE0B,CAA7B;;AAyEA;AACA;AACA,SAASa,aAAT,CAAuB;AAAEC,EAAAA,MAAF;AAAUC,EAAAA;AAAV,CAAvB,EAAiE;AAC/D;AACA,QAAM,CAACC,WAAD,EAAcC,cAAd,IAAgC7D,KAAK,CAAC8D,QAAN,CAAe,KAAf,CAAtC;;AAEA,MAAIJ,MAAM,KAAKE,WAAf,EAA4B;AAC1B;AACA;AACAG,IAAAA,YAAY,CAAC,MAAM;AACjBF,MAAAA,cAAc,CAACH,MAAD,CAAd;AACD,KAFW,CAAZ;AAGD;;AAED,sBAAO,oBAAC,MAAD;AAAQ,IAAA,MAAM,EAAEA,MAAM,GAAGE,WAAH,GAAiB;AAAvC,KAA+CD,QAA/C,CAAP;AACD;;AAED,SAASK,WAAT,CAAqB;AAAEN,EAAAA,MAAF;AAAUC,EAAAA;AAAV,CAArB,EAA+D;AAC7D,MAAIhC,aAAJ,EAAmB;AACjB,wBAAO,oBAAC,aAAD;AAAe,MAAA,MAAM,EAAE+B;AAAvB,OAAgCC,QAAhC,CAAP;AACD,GAFD,MAEO;AACL,wBAAO,0CAAGA,QAAH,CAAP;AACD;AACF;;AAED,SAASP,WAAT,CAAqBa,KAArB,EAA8C;AAC5C,MAAItC,aAAJ,EAAmB;AACjB,UAAM;AAAEgC,MAAAA,QAAF;AAAY,SAAGO;AAAf,QAAwBD,KAA9B;AACA,UAAME,IAAI,GAAGnE,KAAK,CAACoE,QAAN,CAAeC,KAAf,CAAqBV,QAArB,CAAb,CAFiB,CAGjB;;AACA,UAAMW,kBAAkB,GAAGtE,KAAK,CAACoE,QAAN,CAAeG,GAAf,CAAmBZ,QAAnB,EAA6B,CAACa,KAAD,EAAQC,KAAR,kBACtD,oBAAC,aAAD;AAAe,MAAA,MAAM,EAAEN,IAAI,GAAGM,KAAP,GAAe;AAAtC,OAA0CD,KAA1C,CADyB,CAA3B;AAGA,wBACE,oBAAC,oBAAD,CAAsB,iBAAtB,EAA4CN,IAA5C,EACGI,kBADH,CADF;AAKD;;AACD,sBAAO,oBAAC,oBAAD,CAAsB,iBAAtB,EAA4CL,KAA5C,CAAP;AACD,C,CAED;AACA;;;AAWA,MAAMlB,MAAN,SAAqB/C,KAAK,CAAC0E,SAA3B,CAAkD;AAAA;AAAA;;AAAA,iCACI,IADJ;;AAAA,qCAE9B,IAAIzE,QAAQ,CAAC0E,KAAb,CAAmB,CAAnB,CAF8B;;AAAA,sCAG7B,IAAI1E,QAAQ,CAAC0E,KAAb,CAAmB,CAAnB,CAH6B;;AAAA,0CAIzB,IAAI1E,QAAQ,CAAC0E,KAAb,CAAmB,CAAnB,CAJyB;;AAAA,oCAUtCC,GAAD,IAAqD;AAAA;;AAC5D,WAAKA,GAAL,GAAWA,GAAX;AACA,mDAAKX,KAAL,EAAWY,cAAX,kGAA4BD,GAA5B;AACD,KAb+C;AAAA;;AAMhDE,EAAAA,cAAc,CAACb,KAAD,EAA2B;AAAA;;AACvC,sBAAKW,GAAL,wDAAUE,cAAV,CAAyBb,KAAzB;AACD;;AAODc,EAAAA,MAAM,GAAG;AACP,UAAM;AAAEC,MAAAA,OAAO,GAAGhE,cAAZ;AAA4B,SAAGkD;AAA/B,QAAwC,KAAKD,KAAnD;;AAEA,QAAIe,OAAO,IAAIlE,mBAAf,EAAoC;AAAA;;AAClC4B,MAAAA,oBAAoB,GAClBA,oBAAoB,IACpBzC,QAAQ,CAACgF,uBAAT,CAAiCpC,oBAAoB,CAACC,YAAtD,CAFF;AAIA,UAAI;AACF;AACA;AACA;AACAoC,QAAAA,MAJE;AAKFC,QAAAA,aALE;AAMFxB,QAAAA,QANE;AAOFyB,QAAAA,aAPE;AAQFC,QAAAA,uBARE;AASF,WAAGpB;AATD,UAUAC,IAVJ;;AAYA,UAAIgB,MAAM,KAAKI,SAAX,IAAwBH,aAAa,KAAKG,SAA9C,EAAyD;AACvD7D,QAAAA,OAAO,CAACQ,IAAR,CACE,+QADF;AAGAkD,QAAAA,aAAa,GAAGD,MAAM,KAAK,CAAX,GAAe,CAAf,GAAmB,CAAnC,CAJuD,CAIjB;AACvC;;AAED,YAAMK,SAAS,GAAIX,GAAD,IAAqB;AACrC,YAAI,CAAC3D,aAAL,EAAoB;AAAA;;AAClB,cAAI2D,GAAJ,aAAIA,GAAJ,kCAAIA,GAAG,CAAEY,UAAT,qEAAI,gBAAiBC,eAArB,kDAAI,sBAAkCC,KAAtC,EAA6C;AAC3Cd,YAAAA,GAAG,CAACY,UAAJ,CAAeC,eAAf,CAA+BC,KAA/B,GAAuC,EACrC,GAAGd,GAAG,CAACY,UAAJ,CAAeC,eAAf,CAA+BC,KADG;AAErCC,cAAAA,OAAO,EAAE;AAF4B,aAAvC;AAID;;AACD,eAAKC,MAAL,CAAYhB,GAAZ;AACD;AACF,OAVD;;AAYA,0BACE,oBAAC,WAAD;AAAa,QAAA,MAAM,EAAEO,aAAa,KAAK;AAAvC,sBACE,oBAAC,oBAAD,eACMlB,KADN;AAEE,QAAA,aAAa,EAAEkB,aAFjB;AAGE,QAAA,uBAAuB,EAAE;AACvBU,UAAAA,KAAK,2BAAER,uBAAF,aAAEA,uBAAF,uBAAEA,uBAAuB,CAAEQ,KAA3B,yEAAoC,CAAC,CADnB;AAEvBC,UAAAA,GAAG,4BAAET,uBAAF,aAAEA,uBAAF,uBAAEA,uBAAuB,CAAES,GAA3B,2EAAkC,CAAC,CAFf;AAGvBC,UAAAA,GAAG,4BAAEV,uBAAF,aAAEA,uBAAF,uBAAEA,uBAAuB,CAAEU,GAA3B,2EAAkC,CAAC,CAHf;AAIvBC,UAAAA,MAAM,4BAAEX,uBAAF,aAAEA,uBAAF,uBAAEA,uBAAuB,CAAEW,MAA3B,2EAAqC,CAAC;AAJrB,SAH3B,CASE;AACA;AAVF;AAWE,QAAA,GAAG,EAAET,SAXP;AAYE,QAAA,oBAAoB,EAClB,CAACH,aAAD,GACIE,SADJ,GAEIrF,QAAQ,CAACgG,KAAT,CACE,CACE;AACEC,UAAAA,WAAW,EAAE;AACXC,YAAAA,QAAQ,EAAE,KAAKA,QADJ;AAEXC,YAAAA,OAAO,EAAE,KAAKA,OAFH;AAGXC,YAAAA,YAAY,EAAE,KAAKA;AAHR;AADf,SADF,CADF,EAUE;AAAEC,UAAAA,eAAe,EAAE;AAAnB,SAVF;AAfR,UA4BG,CAAClB,aAAD,GAAmB;AAClBzB,MAAAA,QADD,gBAGC,oBAAC,yBAAD,CAA2B,QAA3B;AACE,QAAA,KAAK,EAAE;AACLwC,UAAAA,QAAQ,EAAE,KAAKA,QADV;AAELC,UAAAA,OAAO,EAAE,KAAKA,OAFT;AAGLC,UAAAA,YAAY,EAAE,KAAKA;AAHd;AADT,SAMG1C,QANH,CA/BJ,CADF,CADF;AA6CD,KAjFD,MAiFO;AACL;AACA,UAAI;AACFuB,QAAAA,MADE;AAEFC,QAAAA,aAFE;AAGFO,QAAAA,KAHE;AAIF;AACAb,QAAAA,cALE;AAMF,WAAGZ;AAND,UAOAC,IAPJ;;AASA,UAAIgB,MAAM,KAAKI,SAAX,IAAwBH,aAAa,KAAKG,SAA9C,EAAyD;AACvDH,QAAAA,aAAa,GAAGD,MAAM,KAAK,CAAX,GAAe,CAAf,GAAmB,CAAnC;AACD;;AACD,0BACE,oBAAC,QAAD,CAAU,IAAV;AACE,QAAA,KAAK,EAAE,CAACQ,KAAD,EAAQ;AAAEC,UAAAA,OAAO,EAAER,aAAa,KAAK,CAAlB,GAAsB,MAAtB,GAA+B;AAA1C,SAAR,CADT;AAEE,QAAA,GAAG,EAAE,KAAKS;AAFZ,SAGM3B,KAHN,EADF;AAOD;AACF;;AAzH+C;;AA4HlD,SAAShB,eAAT,CAAyBgB,KAAzB,EAAsD;AACpD,QAAM;AAAEe,IAAAA,OAAO,GAAGhE,cAAZ;AAA4BuF,IAAAA,YAA5B;AAA0C,OAAGrC;AAA7C,MAAsDD,KAA5D;;AAEA,MAAIe,OAAO,IAAIlE,mBAAf,EAAoC;AAClC,QAAIyF,YAAJ,EAAkB;AAChB,0BAAO,oBAAC,oBAAD,CAAsB,+BAAtB,EAA0DrC,IAA1D,CAAP;AACD;;AACD,wBAAO,oBAAC,oBAAD,CAAsB,qBAAtB,EAAgDA,IAAhD,CAAP;AACD;;AACD,sBAAO,oBAAC,IAAD,EAAUA,IAAV,CAAP;AACD;;AAED,MAAMsC,MAAM,GAAGnG,UAAU,CAACoG,MAAX,CAAkB;AAC/BC,EAAAA,aAAa,EAAE;AACbC,IAAAA,QAAQ,EAAE,UADG;AAEbZ,IAAAA,GAAG,EAAE,CAFQ;AAGba,IAAAA,KAAK,EAAE,CAHM;AAIbC,IAAAA,aAAa,EAAE,KAJF;AAKbC,IAAAA,UAAU,EAAE,QALC;AAMbC,IAAAA,cAAc,EAAE;AANH;AADgB,CAAlB,CAAf;;AAWA,MAAMC,gCAAgC,GAAI/C,KAAD,iBACvC,oBAAC,oBAAD,CAAsB,8BAAtB;AACE,EAAA,IAAI,EAAC,MADP;AAEE,EAAA,KAAK,EAAEuC,MAAM,CAACE;AAFhB,gBAGE,oBAAC,KAAD;AAAO,EAAA,UAAU,EAAC,QAAlB;AAA2B,EAAA,YAAY,EAAE;AAAzC,GAAgDzC,KAAhD,EAHF,CADF;;AAQA,MAAMgD,0BAA0B,GAC9BhD,KADiC,iBAGjC,oBAAC,oBAAD,CAAsB,8BAAtB,eACMA,KADN;AAEE,EAAA,IAAI,EAAC,OAFP;AAGE,EAAA,KAAK,EAAEuC,MAAM,CAACE;AAHhB,GAHF;;AAUA,MAAMQ,yBAAyB,GAC7BjD,KADgC,iBAGhC,oBAAC,oBAAD,CAAsB,8BAAtB,eACMA,KADN;AAEE,EAAA,IAAI,EAAC,MAFP;AAGE,EAAA,KAAK,EAAEuC,MAAM,CAACE;AAHhB,GAHF;;AAUA,MAAMS,2BAA2B,GAC/BlD,KADkC,iBAGlC,oBAAC,oBAAD,CAAsB,8BAAtB,eACMA,KADN;AAEE,EAAA,IAAI,EAAC,QAFP;AAGE,EAAA,KAAK,EAAEuC,MAAM,CAACE;AAHhB,GAHF;;AAUA,MAAMU,8BAA8B,GAClCnD,KADqC,iBAGrC,oBAAC,oBAAD,CAAsB,8BAAtB,eACMA,KADN;AAEE,EAAA,IAAI,EAAC,WAFP;AAGE,EAAA,KAAK,EAAEuC,MAAM,CAACE;AAHhB,GAHF;;AAwBA;AACA;AACA,MAAMW,aAAa,gBAAGrH,KAAK,CAACsH,aAAN,CAAoBvE,MAApB,CAAtB;AAEAwE,MAAM,CAACC,OAAP,GAAiB;AACf;AACA;AACAzE,EAAAA,MAHe;AAIfE,EAAAA,eAJe;AAKfoE,EAAAA,aALe;AAMfjE,EAAAA,WANe;;AAQf,MAAIN,YAAJ,GAAmB;AACjB,WAAOD,oBAAoB,CAACC,YAA5B;AACD,GAVc;;AAYf,MAAIE,qBAAJ,GAA4B;AAC1B,WAAOH,oBAAoB,CAACG,qBAA5B;AACD,GAdc;;AAgBf,MAAIE,+BAAJ,GAAsC;AACpC,WAAOL,oBAAoB,CAACK,+BAA5B;AACD,GAlBc;;AAoBf,MAAIG,uBAAJ,GAA8B;AAC5B,WAAOR,oBAAoB,CAACL,6BAA5B;AACD,GAtBc;;AAuBf,MAAIc,wBAAJ,GAA+B;AAC7B,WAAOT,oBAAoB,CAACJ,8BAA5B;AACD,GAzBc;;AA0Bf,MAAIc,SAAJ,GAAgB;AACd,QAAI,CAAC3C,sCAAL,EAA6C;AAC3Ca,MAAAA,OAAO,CAACQ,IAAR,CACE,+DADF;AAGA,aAAO1B,IAAP;AACD;;AAED,WAAOsC,oBAAoB,CAACF,eAA5B;AACD,GAnCc;;AAoCf,MAAIa,iBAAJ,GAAwB;AACtB,QAAIrD,QAAQ,CAACY,EAAT,KAAgB,KAApB,EAA2B;AACzBU,MAAAA,OAAO,CAACQ,IAAR,CAAa,2DAAb;AACA,aAAO1B,IAAP;AACD;;AAED,WAAOsC,oBAAoB,CAACD,uBAA5B;AACD,GA3Cc;;AA4Cf;AACA;AACAoE,EAAAA,gCA9Ce;AA+CfC,EAAAA,0BA/Ce;AAgDfC,EAAAA,yBAhDe;AAiDfC,EAAAA,2BAjDe;AAkDfC,EAAAA,8BAlDe;AAoDf9F,EAAAA,aApDe;AAqDfM,EAAAA,YArDe;AAsDfO,EAAAA,cAtDe;AAuDfD,EAAAA,sBAvDe;AAwDfvB,EAAAA,qBAxDe;AA0DfC,EAAAA,sCA1De;AA2DfC,EAAAA;AA3De,CAAjB","sourcesContent":["import React from 'react';\nimport {\n Animated,\n Image,\n ImageProps,\n Platform,\n requireNativeComponent,\n StyleSheet,\n UIManager,\n View,\n ViewProps,\n} from 'react-native';\nimport { Freeze } from 'react-freeze';\nimport { version } from 'react-native/package.json';\n\nimport TransitionProgressContext from './TransitionProgressContext';\nimport useTransitionProgress from './useTransitionProgress';\nimport {\n StackPresentationTypes,\n StackAnimationTypes,\n BlurEffectTypes,\n ScreenReplaceTypes,\n ScreenOrientationTypes,\n HeaderSubviewTypes,\n ScreenProps,\n ScreenContainerProps,\n ScreenStackProps,\n ScreenStackHeaderConfigProps,\n SearchBarProps,\n} from './types';\nimport {\n isSearchBarAvailableForCurrentPlatform,\n executeNativeBackPress,\n} from './utils';\n\n// web implementation is taken from `index.tsx`\nconst isPlatformSupported =\n Platform.OS === 'ios' ||\n Platform.OS === 'android' ||\n Platform.OS === 'windows';\n\nlet ENABLE_SCREENS = isPlatformSupported;\n\n// @ts-expect-error nativeFabricUIManager is not yet included in the RN types\nconst ENABLE_FABRIC = !!global?.nativeFabricUIManager;\n\nconst FabricComponents = ENABLE_FABRIC ? require('./fabric') : {};\n\nfunction enableScreens(shouldEnableScreens = true): void {\n ENABLE_SCREENS = isPlatformSupported && shouldEnableScreens;\n if (ENABLE_SCREENS && !UIManager.getViewManagerConfig('RNSScreen')) {\n console.error(\n `Screen native module hasn't been linked. Please check the react-native-screens README for more details`\n );\n }\n}\n\nlet ENABLE_FREEZE = false;\n\nfunction enableFreeze(shouldEnableReactFreeze = true): void {\n const minor = parseInt(version.split('.')[1]); // eg. takes 66 from '0.66.0'\n\n // react-freeze requires react-native >=0.64, react-native from main is 0.0.0\n if (!(minor === 0 || minor >= 64) && shouldEnableReactFreeze) {\n console.warn(\n 'react-freeze library requires at least react-native 0.64. Please upgrade your react-native version in order to use this feature.'\n );\n }\n\n ENABLE_FREEZE = shouldEnableReactFreeze;\n}\n\n// const that tells if the library should use new implementation, will be undefined for older versions\nconst shouldUseActivityState = true;\n\nfunction screensEnabled(): boolean {\n return ENABLE_SCREENS;\n}\n\n// We initialize these lazily so that importing the module doesn't throw error when not linked\n// This is necessary coz libraries such as React Navigation import the library where it may not be enabled\nlet NativeScreenValue: React.ComponentType<ScreenProps>;\nlet NativeScreenContainerValue: React.ComponentType<ScreenContainerProps>;\nlet NativeScreenNavigationContainerValue: React.ComponentType<ScreenContainerProps>;\nlet NativeScreenStack: React.ComponentType<ScreenStackProps>;\nlet NativeScreenStackHeaderConfig: React.ComponentType<ScreenStackHeaderConfigProps>;\nlet NativeScreenStackHeaderSubview: React.ComponentType<React.PropsWithChildren<\n ViewProps & { type?: HeaderSubviewTypes }\n>>;\nlet AnimatedNativeScreen: React.ComponentType<ScreenProps>;\nlet NativeSearchBar: React.ComponentType<SearchBarProps>;\nlet NativeFullWindowOverlay: React.ComponentType<View>;\n\nconst ScreensNativeModules = {\n get NativeScreen() {\n NativeScreenValue =\n NativeScreenValue ||\n FabricComponents.Screen ||\n requireNativeComponent('RNSScreen');\n return NativeScreenValue;\n },\n\n get NativeScreenContainer() {\n NativeScreenContainerValue =\n NativeScreenContainerValue ||\n FabricComponents.ScreenContainer ||\n requireNativeComponent('RNSScreenContainer');\n return NativeScreenContainerValue;\n },\n\n get NativeScreenNavigationContainer() {\n NativeScreenNavigationContainerValue =\n NativeScreenNavigationContainerValue ||\n (Platform.OS === 'ios'\n ? FabricComponents.ScreenNavigationContainer ||\n requireNativeComponent('RNSScreenNavigationContainer')\n : this.NativeScreenContainer);\n return NativeScreenNavigationContainerValue;\n },\n\n get NativeScreenStack() {\n NativeScreenStack =\n NativeScreenStack ||\n FabricComponents.ScreenStack ||\n requireNativeComponent('RNSScreenStack');\n return NativeScreenStack;\n },\n\n get NativeScreenStackHeaderConfig() {\n NativeScreenStackHeaderConfig =\n NativeScreenStackHeaderConfig ||\n FabricComponents.ScreenStackHeaderConfig ||\n requireNativeComponent('RNSScreenStackHeaderConfig');\n return NativeScreenStackHeaderConfig;\n },\n\n get NativeScreenStackHeaderSubview() {\n NativeScreenStackHeaderSubview =\n NativeScreenStackHeaderSubview ||\n FabricComponents.ScreenStackHeaderSubview ||\n requireNativeComponent('RNSScreenStackHeaderSubview');\n return NativeScreenStackHeaderSubview;\n },\n\n get NativeSearchBar() {\n NativeSearchBar =\n NativeSearchBar ||\n FabricComponents.SearchBar ||\n requireNativeComponent('RNSSearchBar');\n return NativeSearchBar;\n },\n\n get NativeFullWindowOverlay() {\n NativeFullWindowOverlay =\n NativeFullWindowOverlay ||\n FabricComponents.FullWindowOverlay ||\n requireNativeComponent('RNSFullWindowOverlay');\n return NativeFullWindowOverlay;\n },\n};\n\ninterface FreezeWrapperProps {\n freeze: boolean;\n children: React.ReactNode;\n}\n\n// This component allows one more render before freezing the screen.\n// Allows activityState to reach the native side and useIsFocused to work correctly.\nfunction DelayedFreeze({ freeze, children }: FreezeWrapperProps) {\n // flag used for determining whether freeze should be enabled\n const [freezeState, setFreezeState] = React.useState(false);\n\n if (freeze !== freezeState) {\n // setImmediate is executed at the end of the JS execution block.\n // Used here for changing the state right after the render.\n setImmediate(() => {\n setFreezeState(freeze);\n });\n }\n\n return <Freeze freeze={freeze ? freezeState : false}>{children}</Freeze>;\n}\n\nfunction MaybeFreeze({ freeze, children }: FreezeWrapperProps) {\n if (ENABLE_FREEZE) {\n return <DelayedFreeze freeze={freeze}>{children}</DelayedFreeze>;\n } else {\n return <>{children}</>;\n }\n}\n\nfunction ScreenStack(props: ScreenStackProps) {\n if (ENABLE_FREEZE) {\n const { children, ...rest } = props;\n const size = React.Children.count(children);\n // freezes all screens except the top one\n const childrenWithFreeze = React.Children.map(children, (child, index) => (\n <DelayedFreeze freeze={size - index > 1}>{child}</DelayedFreeze>\n ));\n return (\n <ScreensNativeModules.NativeScreenStack {...rest}>\n {childrenWithFreeze}\n </ScreensNativeModules.NativeScreenStack>\n );\n }\n return <ScreensNativeModules.NativeScreenStack {...props} />;\n}\n\n// Incomplete type, all accessible properties available at:\n// react-native/Libraries/Components/View/ReactNativeViewViewConfig.js\ninterface ViewConfig extends View {\n viewConfig: {\n validAttributes: {\n style: {\n display: boolean;\n };\n };\n };\n}\n\nclass Screen extends React.Component<ScreenProps> {\n private ref: React.ElementRef<typeof View> | null = null;\n private closing = new Animated.Value(0);\n private progress = new Animated.Value(0);\n private goingForward = new Animated.Value(0);\n\n setNativeProps(props: ScreenProps): void {\n this.ref?.setNativeProps(props);\n }\n\n setRef = (ref: React.ElementRef<typeof View> | null): void => {\n this.ref = ref;\n this.props.onComponentRef?.(ref);\n };\n\n render() {\n const { enabled = ENABLE_SCREENS, ...rest } = this.props;\n\n if (enabled && isPlatformSupported) {\n AnimatedNativeScreen =\n AnimatedNativeScreen ||\n Animated.createAnimatedComponent(ScreensNativeModules.NativeScreen);\n\n let {\n // Filter out active prop in this case because it is unused and\n // can cause problems depending on react-native version:\n // https://github.com/react-navigation/react-navigation/issues/4886\n active,\n activityState,\n children,\n isNativeStack,\n gestureResponseDistance,\n ...props\n } = rest;\n\n if (active !== undefined && activityState === undefined) {\n console.warn(\n 'It appears that you are using old version of react-navigation library. Please update @react-navigation/bottom-tabs, @react-navigation/stack and @react-navigation/drawer to version 5.10.0 or above to take full advantage of new functionality added to react-native-screens'\n );\n activityState = active !== 0 ? 2 : 0; // in the new version, we need one of the screens to have value of 2 after the transition\n }\n\n const handleRef = (ref: ViewConfig) => {\n if (!ENABLE_FABRIC) {\n if (ref?.viewConfig?.validAttributes?.style) {\n ref.viewConfig.validAttributes.style = {\n ...ref.viewConfig.validAttributes.style,\n display: false,\n };\n }\n this.setRef(ref);\n }\n };\n\n return (\n <MaybeFreeze freeze={activityState === 0}>\n <AnimatedNativeScreen\n {...props}\n activityState={activityState}\n gestureResponseDistance={{\n start: gestureResponseDistance?.start ?? -1,\n end: gestureResponseDistance?.end ?? -1,\n top: gestureResponseDistance?.top ?? -1,\n bottom: gestureResponseDistance?.bottom ?? -1,\n }}\n // This prevents showing blank screen when navigating between multiple screens with freezing\n // https://github.com/software-mansion/react-native-screens/pull/1208\n ref={handleRef}\n onTransitionProgress={\n !isNativeStack\n ? undefined\n : Animated.event(\n [\n {\n nativeEvent: {\n progress: this.progress,\n closing: this.closing,\n goingForward: this.goingForward,\n },\n },\n ],\n { useNativeDriver: true }\n )\n }>\n {!isNativeStack ? ( // see comment of this prop in types.tsx for information why it is needed\n children\n ) : (\n <TransitionProgressContext.Provider\n value={{\n progress: this.progress,\n closing: this.closing,\n goingForward: this.goingForward,\n }}>\n {children}\n </TransitionProgressContext.Provider>\n )}\n </AnimatedNativeScreen>\n </MaybeFreeze>\n );\n } else {\n // same reason as above\n let {\n active,\n activityState,\n style,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onComponentRef,\n ...props\n } = rest;\n\n if (active !== undefined && activityState === undefined) {\n activityState = active !== 0 ? 2 : 0;\n }\n return (\n <Animated.View\n style={[style, { display: activityState !== 0 ? 'flex' : 'none' }]}\n ref={this.setRef}\n {...props}\n />\n );\n }\n }\n}\n\nfunction ScreenContainer(props: ScreenContainerProps) {\n const { enabled = ENABLE_SCREENS, hasTwoStates, ...rest } = props;\n\n if (enabled && isPlatformSupported) {\n if (hasTwoStates) {\n return <ScreensNativeModules.NativeScreenNavigationContainer {...rest} />;\n }\n return <ScreensNativeModules.NativeScreenContainer {...rest} />;\n }\n return <View {...rest} />;\n}\n\nconst styles = StyleSheet.create({\n headerSubview: {\n position: 'absolute',\n top: 0,\n right: 0,\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n\nconst ScreenStackHeaderBackButtonImage = (props: ImageProps): JSX.Element => (\n <ScreensNativeModules.NativeScreenStackHeaderSubview\n type=\"back\"\n style={styles.headerSubview}>\n <Image resizeMode=\"center\" fadeDuration={0} {...props} />\n </ScreensNativeModules.NativeScreenStackHeaderSubview>\n);\n\nconst ScreenStackHeaderRightView = (\n props: React.PropsWithChildren<ViewProps>\n): JSX.Element => (\n <ScreensNativeModules.NativeScreenStackHeaderSubview\n {...props}\n type=\"right\"\n style={styles.headerSubview}\n />\n);\n\nconst ScreenStackHeaderLeftView = (\n props: React.PropsWithChildren<ViewProps>\n): JSX.Element => (\n <ScreensNativeModules.NativeScreenStackHeaderSubview\n {...props}\n type=\"left\"\n style={styles.headerSubview}\n />\n);\n\nconst ScreenStackHeaderCenterView = (\n props: React.PropsWithChildren<ViewProps>\n): JSX.Element => (\n <ScreensNativeModules.NativeScreenStackHeaderSubview\n {...props}\n type=\"center\"\n style={styles.headerSubview}\n />\n);\n\nconst ScreenStackHeaderSearchBarView = (\n props: React.PropsWithChildren<SearchBarProps>\n): JSX.Element => (\n <ScreensNativeModules.NativeScreenStackHeaderSubview\n {...props}\n type=\"searchBar\"\n style={styles.headerSubview}\n />\n);\n\nexport type {\n StackPresentationTypes,\n StackAnimationTypes,\n BlurEffectTypes,\n ScreenReplaceTypes,\n ScreenOrientationTypes,\n HeaderSubviewTypes,\n ScreenProps,\n ScreenContainerProps,\n ScreenStackProps,\n ScreenStackHeaderConfigProps,\n SearchBarProps,\n};\n\n// context to be used when the user wants to use enhanced implementation\n// e.g. to use `react-native-reanimated` (see `reanimated` folder in repo)\nconst ScreenContext = React.createContext(Screen);\n\nmodule.exports = {\n // these are classes so they are not evaluated until used\n // so no need to use getters for them\n Screen,\n ScreenContainer,\n ScreenContext,\n ScreenStack,\n\n get NativeScreen() {\n return ScreensNativeModules.NativeScreen;\n },\n\n get NativeScreenContainer() {\n return ScreensNativeModules.NativeScreenContainer;\n },\n\n get NativeScreenNavigationContainer() {\n return ScreensNativeModules.NativeScreenNavigationContainer;\n },\n\n get ScreenStackHeaderConfig() {\n return ScreensNativeModules.NativeScreenStackHeaderConfig;\n },\n get ScreenStackHeaderSubview() {\n return ScreensNativeModules.NativeScreenStackHeaderSubview;\n },\n get SearchBar() {\n if (!isSearchBarAvailableForCurrentPlatform) {\n console.warn(\n 'Importing SearchBar is only valid on iOS and Android devices.'\n );\n return View;\n }\n\n return ScreensNativeModules.NativeSearchBar;\n },\n get FullWindowOverlay() {\n if (Platform.OS !== 'ios') {\n console.warn('Importing FullWindowOverlay is only valid on iOS devices.');\n return View;\n }\n\n return ScreensNativeModules.NativeFullWindowOverlay;\n },\n // these are functions and will not be evaluated until used\n // so no need to use getters for them\n ScreenStackHeaderBackButtonImage,\n ScreenStackHeaderRightView,\n ScreenStackHeaderLeftView,\n ScreenStackHeaderCenterView,\n ScreenStackHeaderSearchBarView,\n\n enableScreens,\n enableFreeze,\n screensEnabled,\n shouldUseActivityState,\n useTransitionProgress,\n\n isSearchBarAvailableForCurrentPlatform,\n executeNativeBackPress,\n};\n"]}
|
|
@@ -95,6 +95,7 @@ const RouteView = ({
|
|
|
95
95
|
const {
|
|
96
96
|
gestureEnabled,
|
|
97
97
|
headerShown,
|
|
98
|
+
hideKeyboardOnSwipe,
|
|
98
99
|
homeIndicatorHidden,
|
|
99
100
|
nativeBackButtonDismissalEnabled = false,
|
|
100
101
|
navigationBarColor,
|
|
@@ -112,6 +113,7 @@ const RouteView = ({
|
|
|
112
113
|
let {
|
|
113
114
|
customAnimationOnSwipe,
|
|
114
115
|
fullScreenSwipeEnabled,
|
|
116
|
+
gestureResponseDistance,
|
|
115
117
|
stackAnimation,
|
|
116
118
|
stackPresentation = 'push'
|
|
117
119
|
} = options;
|
|
@@ -154,8 +156,10 @@ const RouteView = ({
|
|
|
154
156
|
style: StyleSheet.absoluteFill,
|
|
155
157
|
customAnimationOnSwipe: customAnimationOnSwipe,
|
|
156
158
|
fullScreenSwipeEnabled: fullScreenSwipeEnabled,
|
|
159
|
+
hideKeyboardOnSwipe: hideKeyboardOnSwipe,
|
|
157
160
|
homeIndicatorHidden: homeIndicatorHidden,
|
|
158
161
|
gestureEnabled: isAndroid ? false : gestureEnabled,
|
|
162
|
+
gestureResponseDistance: gestureResponseDistance,
|
|
159
163
|
nativeBackButtonDismissalEnabled: nativeBackButtonDismissalEnabled,
|
|
160
164
|
navigationBarColor: navigationBarColor,
|
|
161
165
|
navigationBarHidden: navigationBarHidden,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["NativeStackView.tsx"],"names":["React","Platform","StyleSheet","View","AppContainer","warnOnce","ScreenStack","ScreenContext","StackActions","useTheme","useSafeAreaFrame","useSafeAreaInsets","HeaderConfig","SafeAreaProviderCompat","getDefaultHeaderHeight","HeaderHeightContext","isAndroid","OS","Container","__DEV__","DebugContainer","props","stackPresentation","rest","MaybeNestedStack","options","route","children","colors","headerShown","contentStyle","Screen","useContext","isHeaderInModal","headerShownPreviousRef","useRef","useEffect","current","name","content","styles","container","backgroundColor","background","topInset","top","dimensions","headerHeight","absoluteFill","RouteView","descriptors","index","navigation","stateKey","render","renderScene","key","gestureEnabled","homeIndicatorHidden","nativeBackButtonDismissalEnabled","navigationBarColor","navigationBarHidden","replaceAnimation","screenOrientation","statusBarAnimation","statusBarColor","statusBarHidden","statusBarStyle","statusBarTranslucent","swipeDirection","transitionDuration","customAnimationOnSwipe","fullScreenSwipeEnabled","stackAnimation","undefined","isHeaderInPush","parentHeaderHeight","dispatch","pop","source","target","emit","type","data","closing","e","dismissCount","nativeEvent","NativeStackViewInner","state","routes","map","NativeStackView","create","flex"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { Platform, StyleSheet, View, ViewProps } from 'react-native';\n// @ts-ignore Getting private component\nimport AppContainer from 'react-native/Libraries/ReactNative/AppContainer';\nimport warnOnce from 'warn-once';\nimport {\n ScreenStack,\n StackPresentationTypes,\n ScreenContext,\n} from 'react-native-screens';\nimport {\n ParamListBase,\n StackActions,\n StackNavigationState,\n useTheme,\n Route,\n NavigationState,\n PartialState,\n} from '@react-navigation/native';\nimport {\n useSafeAreaFrame,\n useSafeAreaInsets,\n} from 'react-native-safe-area-context';\n\nimport {\n NativeStackDescriptorMap,\n NativeStackNavigationHelpers,\n NativeStackNavigationOptions,\n} from '../types';\nimport HeaderConfig from './HeaderConfig';\nimport SafeAreaProviderCompat from '../utils/SafeAreaProviderCompat';\nimport getDefaultHeaderHeight from '../utils/getDefaultHeaderHeight';\nimport HeaderHeightContext from '../utils/HeaderHeightContext';\n\nconst isAndroid = Platform.OS === 'android';\n\nlet Container = View;\n\nif (__DEV__) {\n const DebugContainer = (\n props: ViewProps & { stackPresentation: StackPresentationTypes }\n ) => {\n const { stackPresentation, ...rest } = props;\n if (Platform.OS === 'ios' && stackPresentation !== 'push') {\n return (\n <AppContainer>\n <View {...rest} />\n </AppContainer>\n );\n }\n return <View {...rest} />;\n };\n // @ts-ignore Wrong props\n Container = DebugContainer;\n}\n\nconst MaybeNestedStack = ({\n options,\n route,\n stackPresentation,\n children,\n}: {\n options: NativeStackNavigationOptions;\n route: Route<string>;\n stackPresentation: StackPresentationTypes;\n children: React.ReactNode;\n}) => {\n const { colors } = useTheme();\n const { headerShown = true, contentStyle } = options;\n\n const Screen = React.useContext(ScreenContext);\n\n const isHeaderInModal = isAndroid\n ? false\n : stackPresentation !== 'push' && headerShown === true;\n\n const headerShownPreviousRef = React.useRef(headerShown);\n\n React.useEffect(() => {\n warnOnce(\n !isAndroid &&\n stackPresentation !== 'push' &&\n headerShownPreviousRef.current !== headerShown,\n `Dynamically changing 'headerShown' in modals will result in remounting the screen and losing all local state. See options for the screen '${route.name}'.`\n );\n\n headerShownPreviousRef.current = headerShown;\n }, [headerShown, stackPresentation, route.name]);\n\n const content = (\n <Container\n style={[\n styles.container,\n stackPresentation !== 'transparentModal' &&\n stackPresentation !== 'containedTransparentModal' && {\n backgroundColor: colors.background,\n },\n contentStyle,\n ]}\n // @ts-ignore Wrong props passed to View\n stackPresentation={stackPresentation}>\n {children}\n </Container>\n );\n\n const topInset = useSafeAreaInsets().top;\n const dimensions = useSafeAreaFrame();\n const headerHeight = getDefaultHeaderHeight(\n dimensions,\n topInset,\n stackPresentation\n );\n\n if (isHeaderInModal) {\n return (\n <ScreenStack style={styles.container}>\n <Screen enabled isNativeStack style={StyleSheet.absoluteFill}>\n <HeaderHeightContext.Provider value={headerHeight}>\n <HeaderConfig {...options} route={route} />\n {content}\n </HeaderHeightContext.Provider>\n </Screen>\n </ScreenStack>\n );\n }\n\n return content;\n};\n\ntype NavigationRoute<\n ParamList extends ParamListBase,\n RouteName extends keyof ParamList\n> = Route<Extract<RouteName, string>, ParamList[RouteName]> & {\n state?: NavigationState | PartialState<NavigationState>;\n};\n\nconst RouteView = ({\n descriptors,\n route,\n index,\n navigation,\n stateKey,\n}: {\n descriptors: NativeStackDescriptorMap;\n route: NavigationRoute<ParamListBase, string>;\n index: number;\n navigation: NativeStackNavigationHelpers;\n stateKey: string;\n}) => {\n const { options, render: renderScene } = descriptors[route.key];\n const {\n gestureEnabled,\n headerShown,\n homeIndicatorHidden,\n nativeBackButtonDismissalEnabled = false,\n navigationBarColor,\n navigationBarHidden,\n replaceAnimation = 'pop',\n screenOrientation,\n statusBarAnimation,\n statusBarColor,\n statusBarHidden,\n statusBarStyle,\n statusBarTranslucent,\n swipeDirection = 'horizontal',\n transitionDuration,\n } = options;\n\n let {\n customAnimationOnSwipe,\n fullScreenSwipeEnabled,\n stackAnimation,\n stackPresentation = 'push',\n } = options;\n\n if (swipeDirection === 'vertical') {\n // for `vertical` direction to work, we need to set `fullScreenSwipeEnabled` to `true`\n // so the screen can be dismissed from any point on screen.\n // `customAnimationOnSwipe` needs to be set to `true` so the `stackAnimation` set by user can be used,\n // otherwise `simple_push` will be used.\n // Also, the default animation for this direction seems to be `slide_from_bottom`.\n if (fullScreenSwipeEnabled === undefined) {\n fullScreenSwipeEnabled = true;\n }\n if (customAnimationOnSwipe === undefined) {\n customAnimationOnSwipe = true;\n }\n if (stackAnimation === undefined) {\n stackAnimation = 'slide_from_bottom';\n }\n }\n\n if (index === 0) {\n // first screen should always be treated as `push`, it resolves problems with no header animation\n // for navigator with first screen as `modal` and the next as `push`\n stackPresentation = 'push';\n }\n\n const isHeaderInPush = isAndroid\n ? headerShown\n : stackPresentation === 'push' && headerShown !== false;\n\n const dimensions = useSafeAreaFrame();\n const topInset = useSafeAreaInsets().top;\n const headerHeight = getDefaultHeaderHeight(\n dimensions,\n topInset,\n stackPresentation\n );\n const parentHeaderHeight = React.useContext(HeaderHeightContext);\n const Screen = React.useContext(ScreenContext);\n\n return (\n <Screen\n key={route.key}\n enabled\n isNativeStack\n style={StyleSheet.absoluteFill}\n customAnimationOnSwipe={customAnimationOnSwipe}\n fullScreenSwipeEnabled={fullScreenSwipeEnabled}\n homeIndicatorHidden={homeIndicatorHidden}\n gestureEnabled={isAndroid ? false : gestureEnabled}\n nativeBackButtonDismissalEnabled={nativeBackButtonDismissalEnabled}\n navigationBarColor={navigationBarColor}\n navigationBarHidden={navigationBarHidden}\n replaceAnimation={replaceAnimation}\n screenOrientation={screenOrientation}\n stackAnimation={stackAnimation}\n stackPresentation={stackPresentation}\n statusBarAnimation={statusBarAnimation}\n statusBarColor={statusBarColor}\n statusBarHidden={statusBarHidden}\n statusBarStyle={statusBarStyle}\n statusBarTranslucent={statusBarTranslucent}\n swipeDirection={swipeDirection}\n transitionDuration={transitionDuration}\n onHeaderBackButtonClicked={() => {\n navigation.dispatch({\n ...StackActions.pop(),\n source: route.key,\n target: stateKey,\n });\n }}\n onWillAppear={() => {\n navigation.emit({\n type: 'transitionStart',\n data: { closing: false },\n target: route.key,\n });\n }}\n onWillDisappear={() => {\n navigation.emit({\n type: 'transitionStart',\n data: { closing: true },\n target: route.key,\n });\n }}\n onAppear={() => {\n navigation.emit({\n type: 'appear',\n target: route.key,\n });\n navigation.emit({\n type: 'transitionEnd',\n data: { closing: false },\n target: route.key,\n });\n }}\n onDisappear={() => {\n navigation.emit({\n type: 'transitionEnd',\n data: { closing: true },\n target: route.key,\n });\n }}\n onDismissed={(e) => {\n navigation.emit({\n type: 'dismiss',\n target: route.key,\n });\n\n const dismissCount =\n e.nativeEvent.dismissCount > 0 ? e.nativeEvent.dismissCount : 1;\n\n navigation.dispatch({\n ...StackActions.pop(dismissCount),\n source: route.key,\n target: stateKey,\n });\n }}>\n <HeaderHeightContext.Provider\n value={\n isHeaderInPush !== false ? headerHeight : parentHeaderHeight ?? 0\n }>\n <HeaderConfig {...options} route={route} headerShown={isHeaderInPush} />\n <MaybeNestedStack\n options={options}\n route={route}\n stackPresentation={stackPresentation}>\n {renderScene()}\n </MaybeNestedStack>\n </HeaderHeightContext.Provider>\n </Screen>\n );\n};\n\ntype Props = {\n state: StackNavigationState<ParamListBase>;\n navigation: NativeStackNavigationHelpers;\n descriptors: NativeStackDescriptorMap;\n};\n\nfunction NativeStackViewInner({\n state,\n navigation,\n descriptors,\n}: Props): JSX.Element {\n const { key, routes } = state;\n\n return (\n <ScreenStack style={styles.container}>\n {routes.map((route, index) => (\n <RouteView\n key={route.key}\n descriptors={descriptors}\n route={route}\n index={index}\n navigation={navigation}\n stateKey={key}\n />\n ))}\n </ScreenStack>\n );\n}\n\nexport default function NativeStackView(props: Props) {\n return (\n <SafeAreaProviderCompat>\n <NativeStackViewInner {...props} />\n </SafeAreaProviderCompat>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["NativeStackView.tsx"],"names":["React","Platform","StyleSheet","View","AppContainer","warnOnce","ScreenStack","ScreenContext","StackActions","useTheme","useSafeAreaFrame","useSafeAreaInsets","HeaderConfig","SafeAreaProviderCompat","getDefaultHeaderHeight","HeaderHeightContext","isAndroid","OS","Container","__DEV__","DebugContainer","props","stackPresentation","rest","MaybeNestedStack","options","route","children","colors","headerShown","contentStyle","Screen","useContext","isHeaderInModal","headerShownPreviousRef","useRef","useEffect","current","name","content","styles","container","backgroundColor","background","topInset","top","dimensions","headerHeight","absoluteFill","RouteView","descriptors","index","navigation","stateKey","render","renderScene","key","gestureEnabled","hideKeyboardOnSwipe","homeIndicatorHidden","nativeBackButtonDismissalEnabled","navigationBarColor","navigationBarHidden","replaceAnimation","screenOrientation","statusBarAnimation","statusBarColor","statusBarHidden","statusBarStyle","statusBarTranslucent","swipeDirection","transitionDuration","customAnimationOnSwipe","fullScreenSwipeEnabled","gestureResponseDistance","stackAnimation","undefined","isHeaderInPush","parentHeaderHeight","dispatch","pop","source","target","emit","type","data","closing","e","dismissCount","nativeEvent","NativeStackViewInner","state","routes","map","NativeStackView","create","flex"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { Platform, StyleSheet, View, ViewProps } from 'react-native';\n// @ts-ignore Getting private component\nimport AppContainer from 'react-native/Libraries/ReactNative/AppContainer';\nimport warnOnce from 'warn-once';\nimport {\n ScreenStack,\n StackPresentationTypes,\n ScreenContext,\n} from 'react-native-screens';\nimport {\n ParamListBase,\n StackActions,\n StackNavigationState,\n useTheme,\n Route,\n NavigationState,\n PartialState,\n} from '@react-navigation/native';\nimport {\n useSafeAreaFrame,\n useSafeAreaInsets,\n} from 'react-native-safe-area-context';\n\nimport {\n NativeStackDescriptorMap,\n NativeStackNavigationHelpers,\n NativeStackNavigationOptions,\n} from '../types';\nimport HeaderConfig from './HeaderConfig';\nimport SafeAreaProviderCompat from '../utils/SafeAreaProviderCompat';\nimport getDefaultHeaderHeight from '../utils/getDefaultHeaderHeight';\nimport HeaderHeightContext from '../utils/HeaderHeightContext';\n\nconst isAndroid = Platform.OS === 'android';\n\nlet Container = View;\n\nif (__DEV__) {\n const DebugContainer = (\n props: ViewProps & { stackPresentation: StackPresentationTypes }\n ) => {\n const { stackPresentation, ...rest } = props;\n if (Platform.OS === 'ios' && stackPresentation !== 'push') {\n return (\n <AppContainer>\n <View {...rest} />\n </AppContainer>\n );\n }\n return <View {...rest} />;\n };\n // @ts-ignore Wrong props\n Container = DebugContainer;\n}\n\nconst MaybeNestedStack = ({\n options,\n route,\n stackPresentation,\n children,\n}: {\n options: NativeStackNavigationOptions;\n route: Route<string>;\n stackPresentation: StackPresentationTypes;\n children: React.ReactNode;\n}) => {\n const { colors } = useTheme();\n const { headerShown = true, contentStyle } = options;\n\n const Screen = React.useContext(ScreenContext);\n\n const isHeaderInModal = isAndroid\n ? false\n : stackPresentation !== 'push' && headerShown === true;\n\n const headerShownPreviousRef = React.useRef(headerShown);\n\n React.useEffect(() => {\n warnOnce(\n !isAndroid &&\n stackPresentation !== 'push' &&\n headerShownPreviousRef.current !== headerShown,\n `Dynamically changing 'headerShown' in modals will result in remounting the screen and losing all local state. See options for the screen '${route.name}'.`\n );\n\n headerShownPreviousRef.current = headerShown;\n }, [headerShown, stackPresentation, route.name]);\n\n const content = (\n <Container\n style={[\n styles.container,\n stackPresentation !== 'transparentModal' &&\n stackPresentation !== 'containedTransparentModal' && {\n backgroundColor: colors.background,\n },\n contentStyle,\n ]}\n // @ts-ignore Wrong props passed to View\n stackPresentation={stackPresentation}>\n {children}\n </Container>\n );\n\n const topInset = useSafeAreaInsets().top;\n const dimensions = useSafeAreaFrame();\n const headerHeight = getDefaultHeaderHeight(\n dimensions,\n topInset,\n stackPresentation\n );\n\n if (isHeaderInModal) {\n return (\n <ScreenStack style={styles.container}>\n <Screen enabled isNativeStack style={StyleSheet.absoluteFill}>\n <HeaderHeightContext.Provider value={headerHeight}>\n <HeaderConfig {...options} route={route} />\n {content}\n </HeaderHeightContext.Provider>\n </Screen>\n </ScreenStack>\n );\n }\n\n return content;\n};\n\ntype NavigationRoute<\n ParamList extends ParamListBase,\n RouteName extends keyof ParamList\n> = Route<Extract<RouteName, string>, ParamList[RouteName]> & {\n state?: NavigationState | PartialState<NavigationState>;\n};\n\nconst RouteView = ({\n descriptors,\n route,\n index,\n navigation,\n stateKey,\n}: {\n descriptors: NativeStackDescriptorMap;\n route: NavigationRoute<ParamListBase, string>;\n index: number;\n navigation: NativeStackNavigationHelpers;\n stateKey: string;\n}) => {\n const { options, render: renderScene } = descriptors[route.key];\n const {\n gestureEnabled,\n headerShown,\n hideKeyboardOnSwipe,\n homeIndicatorHidden,\n nativeBackButtonDismissalEnabled = false,\n navigationBarColor,\n navigationBarHidden,\n replaceAnimation = 'pop',\n screenOrientation,\n statusBarAnimation,\n statusBarColor,\n statusBarHidden,\n statusBarStyle,\n statusBarTranslucent,\n swipeDirection = 'horizontal',\n transitionDuration,\n } = options;\n\n let {\n customAnimationOnSwipe,\n fullScreenSwipeEnabled,\n gestureResponseDistance,\n stackAnimation,\n stackPresentation = 'push',\n } = options;\n\n if (swipeDirection === 'vertical') {\n // for `vertical` direction to work, we need to set `fullScreenSwipeEnabled` to `true`\n // so the screen can be dismissed from any point on screen.\n // `customAnimationOnSwipe` needs to be set to `true` so the `stackAnimation` set by user can be used,\n // otherwise `simple_push` will be used.\n // Also, the default animation for this direction seems to be `slide_from_bottom`.\n if (fullScreenSwipeEnabled === undefined) {\n fullScreenSwipeEnabled = true;\n }\n if (customAnimationOnSwipe === undefined) {\n customAnimationOnSwipe = true;\n }\n if (stackAnimation === undefined) {\n stackAnimation = 'slide_from_bottom';\n }\n }\n\n if (index === 0) {\n // first screen should always be treated as `push`, it resolves problems with no header animation\n // for navigator with first screen as `modal` and the next as `push`\n stackPresentation = 'push';\n }\n\n const isHeaderInPush = isAndroid\n ? headerShown\n : stackPresentation === 'push' && headerShown !== false;\n\n const dimensions = useSafeAreaFrame();\n const topInset = useSafeAreaInsets().top;\n const headerHeight = getDefaultHeaderHeight(\n dimensions,\n topInset,\n stackPresentation\n );\n const parentHeaderHeight = React.useContext(HeaderHeightContext);\n const Screen = React.useContext(ScreenContext);\n\n return (\n <Screen\n key={route.key}\n enabled\n isNativeStack\n style={StyleSheet.absoluteFill}\n customAnimationOnSwipe={customAnimationOnSwipe}\n fullScreenSwipeEnabled={fullScreenSwipeEnabled}\n hideKeyboardOnSwipe={hideKeyboardOnSwipe}\n homeIndicatorHidden={homeIndicatorHidden}\n gestureEnabled={isAndroid ? false : gestureEnabled}\n gestureResponseDistance={gestureResponseDistance}\n nativeBackButtonDismissalEnabled={nativeBackButtonDismissalEnabled}\n navigationBarColor={navigationBarColor}\n navigationBarHidden={navigationBarHidden}\n replaceAnimation={replaceAnimation}\n screenOrientation={screenOrientation}\n stackAnimation={stackAnimation}\n stackPresentation={stackPresentation}\n statusBarAnimation={statusBarAnimation}\n statusBarColor={statusBarColor}\n statusBarHidden={statusBarHidden}\n statusBarStyle={statusBarStyle}\n statusBarTranslucent={statusBarTranslucent}\n swipeDirection={swipeDirection}\n transitionDuration={transitionDuration}\n onHeaderBackButtonClicked={() => {\n navigation.dispatch({\n ...StackActions.pop(),\n source: route.key,\n target: stateKey,\n });\n }}\n onWillAppear={() => {\n navigation.emit({\n type: 'transitionStart',\n data: { closing: false },\n target: route.key,\n });\n }}\n onWillDisappear={() => {\n navigation.emit({\n type: 'transitionStart',\n data: { closing: true },\n target: route.key,\n });\n }}\n onAppear={() => {\n navigation.emit({\n type: 'appear',\n target: route.key,\n });\n navigation.emit({\n type: 'transitionEnd',\n data: { closing: false },\n target: route.key,\n });\n }}\n onDisappear={() => {\n navigation.emit({\n type: 'transitionEnd',\n data: { closing: true },\n target: route.key,\n });\n }}\n onDismissed={(e) => {\n navigation.emit({\n type: 'dismiss',\n target: route.key,\n });\n\n const dismissCount =\n e.nativeEvent.dismissCount > 0 ? e.nativeEvent.dismissCount : 1;\n\n navigation.dispatch({\n ...StackActions.pop(dismissCount),\n source: route.key,\n target: stateKey,\n });\n }}>\n <HeaderHeightContext.Provider\n value={\n isHeaderInPush !== false ? headerHeight : parentHeaderHeight ?? 0\n }>\n <HeaderConfig {...options} route={route} headerShown={isHeaderInPush} />\n <MaybeNestedStack\n options={options}\n route={route}\n stackPresentation={stackPresentation}>\n {renderScene()}\n </MaybeNestedStack>\n </HeaderHeightContext.Provider>\n </Screen>\n );\n};\n\ntype Props = {\n state: StackNavigationState<ParamListBase>;\n navigation: NativeStackNavigationHelpers;\n descriptors: NativeStackDescriptorMap;\n};\n\nfunction NativeStackViewInner({\n state,\n navigation,\n descriptors,\n}: Props): JSX.Element {\n const { key, routes } = state;\n\n return (\n <ScreenStack style={styles.container}>\n {routes.map((route, index) => (\n <RouteView\n key={route.key}\n descriptors={descriptors}\n route={route}\n index={index}\n navigation={navigation}\n stateKey={key}\n />\n ))}\n </ScreenStack>\n );\n}\n\nexport default function NativeStackView(props: Props) {\n return (\n <SafeAreaProviderCompat>\n <NativeStackViewInner {...props} />\n </SafeAreaProviderCompat>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n});\n"]}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
var _global;
|
|
2
|
+
|
|
1
3
|
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
4
|
|
|
3
5
|
import React from 'react';
|
|
@@ -6,7 +8,9 @@ import { Screen } from 'react-native-screens'; // @ts-ignore file to be used onl
|
|
|
6
8
|
|
|
7
9
|
import Animated, { useEvent, useSharedValue } from 'react-native-reanimated';
|
|
8
10
|
import ReanimatedTransitionProgressContext from './ReanimatedTransitionProgressContext';
|
|
9
|
-
const AnimatedScreen = Animated.createAnimatedComponent(Screen);
|
|
11
|
+
const AnimatedScreen = Animated.createAnimatedComponent(Screen); // @ts-expect-error nativeFabricUIManager is not yet included in the RN types
|
|
12
|
+
|
|
13
|
+
const ENABLE_FABRIC = !!((_global = global) !== null && _global !== void 0 && _global.nativeFabricUIManager);
|
|
10
14
|
const ReanimatedNativeStackScreen = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
11
15
|
const {
|
|
12
16
|
children,
|
|
@@ -26,7 +30,8 @@ const ReanimatedNativeStackScreen = /*#__PURE__*/React.forwardRef((props, ref) =
|
|
|
26
30
|
goingForward.value = event.goingForward;
|
|
27
31
|
}, [// This should not be necessary, but is not properly managed by `react-native-reanimated`
|
|
28
32
|
// @ts-ignore wrong type
|
|
29
|
-
Platform.OS === 'android' ? 'onTransitionProgress' :
|
|
33
|
+
Platform.OS === 'android' ? 'onTransitionProgress' : // for some reason there is a difference in required event name between architectures
|
|
34
|
+
ENABLE_FABRIC ? 'onTransitionProgress' : 'topTransitionProgress'])
|
|
30
35
|
}, rest), /*#__PURE__*/React.createElement(ReanimatedTransitionProgressContext.Provider, {
|
|
31
36
|
value: {
|
|
32
37
|
progress: progress,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ReanimatedNativeStackScreen.tsx"],"names":["React","Platform","Screen","Animated","useEvent","useSharedValue","ReanimatedTransitionProgressContext","AnimatedScreen","createAnimatedComponent","ReanimatedNativeStackScreen","forwardRef","props","ref","children","rest","progress","closing","goingForward","event","value","OS","displayName"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["ReanimatedNativeStackScreen.tsx"],"names":["React","Platform","Screen","Animated","useEvent","useSharedValue","ReanimatedTransitionProgressContext","AnimatedScreen","createAnimatedComponent","ENABLE_FABRIC","global","nativeFabricUIManager","ReanimatedNativeStackScreen","forwardRef","props","ref","children","rest","progress","closing","goingForward","event","value","OS","displayName"],"mappings":";;;;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,QAAT,QAAyB,cAAzB;AACA,SACEC,MADF,QAIO,sBAJP,C,CAMA;;AACA,OAAOC,QAAP,IAAmBC,QAAnB,EAA6BC,cAA7B,QAAmD,yBAAnD;AACA,OAAOC,mCAAP,MAAgD,uCAAhD;AAEA,MAAMC,cAAc,GAAGJ,QAAQ,CAACK,uBAAT,CACpBN,MADoB,CAAvB,C,CAIA;;AACA,MAAMO,aAAa,GAAG,CAAC,aAACC,MAAD,oCAAC,QAAQC,qBAAT,CAAvB;AAEA,MAAMC,2BAA2B,gBAAGZ,KAAK,CAACa,UAAN,CAGlC,CAACC,KAAD,EAAQC,GAAR,KAAgB;AAChB,QAAM;AAAEC,IAAAA,QAAF;AAAY,OAAGC;AAAf,MAAwBH,KAA9B;AAEA,QAAMI,QAAQ,GAAGb,cAAc,CAAC,CAAD,CAA/B;AACA,QAAMc,OAAO,GAAGd,cAAc,CAAC,CAAD,CAA9B;AACA,QAAMe,YAAY,GAAGf,cAAc,CAAC,CAAD,CAAnC;AAEA,sBACE,oBAAC,cAAD,CACE;AADF;AAEE,IAAA,GAAG,EAAEU,GAFP;AAGE,IAAA,8BAA8B,EAAEX,QAAQ,CACrCiB,KAAD,IAAwC;AACtC;;AACAH,MAAAA,QAAQ,CAACI,KAAT,GAAiBD,KAAK,CAACH,QAAvB;AACAC,MAAAA,OAAO,CAACG,KAAR,GAAgBD,KAAK,CAACF,OAAtB;AACAC,MAAAA,YAAY,CAACE,KAAb,GAAqBD,KAAK,CAACD,YAA3B;AACD,KANqC,EAOtC,CACE;AACA;AACAnB,IAAAA,QAAQ,CAACsB,EAAT,KAAgB,SAAhB,GACI,sBADJ,GAEI;AACFd,IAAAA,aAAa,GACX,sBADW,GAEX,uBARN,CAPsC;AAH1C,KAqBMQ,IArBN,gBAsBE,oBAAC,mCAAD,CAAqC,QAArC;AACE,IAAA,KAAK,EAAE;AACLC,MAAAA,QAAQ,EAAEA,QADL;AAELC,MAAAA,OAAO,EAAEA,OAFJ;AAGLC,MAAAA,YAAY,EAAEA;AAHT;AADT,KAMGJ,QANH,CAtBF,CADF;AAiCD,CA3CmC,CAApC;AA6CAJ,2BAA2B,CAACY,WAA5B,GAA0C,6BAA1C;AAEA,eAAeZ,2BAAf","sourcesContent":["import React from 'react';\nimport { Platform } from 'react-native';\nimport {\n Screen,\n ScreenProps,\n TransitionProgressEventType,\n} from 'react-native-screens';\n\n// @ts-ignore file to be used only if `react-native-reanimated` available in the project\nimport Animated, { useEvent, useSharedValue } from 'react-native-reanimated';\nimport ReanimatedTransitionProgressContext from './ReanimatedTransitionProgressContext';\n\nconst AnimatedScreen = Animated.createAnimatedComponent(\n (Screen as unknown) as React.ComponentClass\n);\n\n// @ts-expect-error nativeFabricUIManager is not yet included in the RN types\nconst ENABLE_FABRIC = !!global?.nativeFabricUIManager;\n\nconst ReanimatedNativeStackScreen = React.forwardRef<\n typeof AnimatedScreen,\n ScreenProps\n>((props, ref) => {\n const { children, ...rest } = props;\n\n const progress = useSharedValue(0);\n const closing = useSharedValue(0);\n const goingForward = useSharedValue(0);\n\n return (\n <AnimatedScreen\n // @ts-ignore some problems with ref and onTransitionProgressReanimated being \"fake\" prop for parsing of `useEvent` return value\n ref={ref}\n onTransitionProgressReanimated={useEvent(\n (event: TransitionProgressEventType) => {\n 'worklet';\n progress.value = event.progress;\n closing.value = event.closing;\n goingForward.value = event.goingForward;\n },\n [\n // This should not be necessary, but is not properly managed by `react-native-reanimated`\n // @ts-ignore wrong type\n Platform.OS === 'android'\n ? 'onTransitionProgress'\n : // for some reason there is a difference in required event name between architectures\n ENABLE_FABRIC\n ? 'onTransitionProgress'\n : 'topTransitionProgress',\n ]\n )}\n {...rest}>\n <ReanimatedTransitionProgressContext.Provider\n value={{\n progress: progress,\n closing: closing,\n goingForward: goingForward,\n }}>\n {children}\n </ReanimatedTransitionProgressContext.Provider>\n </AnimatedScreen>\n );\n});\n\nReanimatedNativeStackScreen.displayName = 'ReanimatedNativeStackScreen';\n\nexport default ReanimatedNativeStackScreen;\n"]}
|
|
@@ -85,6 +85,12 @@ export declare type NativeStackNavigationOptions = {
|
|
|
85
85
|
* @platform ios
|
|
86
86
|
*/
|
|
87
87
|
gestureEnabled?: boolean;
|
|
88
|
+
/**
|
|
89
|
+
* Use it to restrict the distance from the edges of screen in which the gesture should be recognized. To be used alongside `fullScreenSwipeEnabled`.
|
|
90
|
+
*
|
|
91
|
+
* @platform ios
|
|
92
|
+
*/
|
|
93
|
+
gestureResponseDistance?: ScreenProps['gestureResponseDistance'];
|
|
88
94
|
/**
|
|
89
95
|
* Title to display in the back button.
|
|
90
96
|
* Only supported on iOS.
|
|
@@ -229,6 +235,12 @@ export declare type NativeStackNavigationOptions = {
|
|
|
229
235
|
* @platform ios
|
|
230
236
|
*/
|
|
231
237
|
homeIndicatorHidden?: boolean;
|
|
238
|
+
/**
|
|
239
|
+
* Whether the keyboard should hide when swiping to the previous screen. Defaults to `false`.
|
|
240
|
+
*
|
|
241
|
+
* @platform ios
|
|
242
|
+
*/
|
|
243
|
+
hideKeyboardOnSwipe?: boolean;
|
|
232
244
|
/**
|
|
233
245
|
* Boolean indicating whether, when the Android default back button is clicked, the `pop` action should be performed on the native side or on the JS side to be able to prevent it.
|
|
234
246
|
* Unfortunately the same behavior is not available on iOS since the behavior of native back button cannot be changed there.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { ScreenProps } from 'react-native-screens';
|
|
3
3
|
import Animated from 'react-native-reanimated';
|
|
4
|
-
declare const ReanimatedNativeStackScreen: React.ForwardRefExoticComponent<Pick<ScreenProps, "children" | "active" | "activityState" | "customAnimationOnSwipe" | "enabled" | "isNativeStack" | "fullScreenSwipeEnabled" | "gestureEnabled" | "homeIndicatorHidden" | "nativeBackButtonDismissalEnabled" | "navigationBarColor" | "navigationBarHidden" | "onAppear" | "onComponentRef" | "onDisappear" | "onDismissed" | "onHeaderBackButtonClicked" | "onTransitionProgress" | "onWillAppear" | "onWillDisappear" | "replaceAnimation" | "screenOrientation" | "stackAnimation" | "stackPresentation" | "statusBarAnimation" | "statusBarColor" | "statusBarHidden" | "statusBarStyle" | "statusBarTranslucent" | "swipeDirection" | "transitionDuration" | "hitSlop" | "onLayout" | "pointerEvents" | "removeClippedSubviews" | "style" | "testID" | "nativeID" | "collapsable" | "needsOffscreenAlphaCompositing" | "renderToHardwareTextureAndroid" | "focusable" | "shouldRasterizeIOS" | "isTVSelectable" | "hasTVPreferredFocus" | "tvParallaxProperties" | "tvParallaxShiftDistanceX" | "tvParallaxShiftDistanceY" | "tvParallaxTiltAngle" | "tvParallaxMagnification" | "onStartShouldSetResponder" | "onMoveShouldSetResponder" | "onResponderEnd" | "onResponderGrant" | "onResponderReject" | "onResponderMove" | "onResponderRelease" | "onResponderStart" | "onResponderTerminationRequest" | "onResponderTerminate" | "onStartShouldSetResponderCapture" | "onMoveShouldSetResponderCapture" | "onTouchStart" | "onTouchMove" | "onTouchEnd" | "onTouchCancel" | "onTouchEndCapture" | "accessible" | "accessibilityActions" | "accessibilityLabel" | "accessibilityRole" | "accessibilityState" | "accessibilityHint" | "accessibilityValue" | "onAccessibilityAction" | "accessibilityComponentType" | "accessibilityLiveRegion" | "importantForAccessibility" | "accessibilityElementsHidden" | "accessibilityTraits" | "accessibilityViewIsModal" | "onAccessibilityEscape" | "onAccessibilityTap" | "onMagicTap" | "accessibilityIgnoresInvertColors"> & React.RefAttributes<React.ComponentClass<Animated.AnimateProps<{}>, any>>>;
|
|
4
|
+
declare const ReanimatedNativeStackScreen: React.ForwardRefExoticComponent<Pick<ScreenProps, "children" | "active" | "activityState" | "customAnimationOnSwipe" | "enabled" | "isNativeStack" | "fullScreenSwipeEnabled" | "gestureEnabled" | "gestureResponseDistance" | "homeIndicatorHidden" | "hideKeyboardOnSwipe" | "nativeBackButtonDismissalEnabled" | "navigationBarColor" | "navigationBarHidden" | "onAppear" | "onComponentRef" | "onDisappear" | "onDismissed" | "onHeaderBackButtonClicked" | "onTransitionProgress" | "onWillAppear" | "onWillDisappear" | "replaceAnimation" | "screenOrientation" | "stackAnimation" | "stackPresentation" | "statusBarAnimation" | "statusBarColor" | "statusBarHidden" | "statusBarStyle" | "statusBarTranslucent" | "swipeDirection" | "transitionDuration" | "hitSlop" | "onLayout" | "pointerEvents" | "removeClippedSubviews" | "style" | "testID" | "nativeID" | "collapsable" | "needsOffscreenAlphaCompositing" | "renderToHardwareTextureAndroid" | "focusable" | "shouldRasterizeIOS" | "isTVSelectable" | "hasTVPreferredFocus" | "tvParallaxProperties" | "tvParallaxShiftDistanceX" | "tvParallaxShiftDistanceY" | "tvParallaxTiltAngle" | "tvParallaxMagnification" | "onStartShouldSetResponder" | "onMoveShouldSetResponder" | "onResponderEnd" | "onResponderGrant" | "onResponderReject" | "onResponderMove" | "onResponderRelease" | "onResponderStart" | "onResponderTerminationRequest" | "onResponderTerminate" | "onStartShouldSetResponderCapture" | "onMoveShouldSetResponderCapture" | "onTouchStart" | "onTouchMove" | "onTouchEnd" | "onTouchCancel" | "onTouchEndCapture" | "accessible" | "accessibilityActions" | "accessibilityLabel" | "accessibilityRole" | "accessibilityState" | "accessibilityHint" | "accessibilityValue" | "onAccessibilityAction" | "accessibilityComponentType" | "accessibilityLiveRegion" | "importantForAccessibility" | "accessibilityElementsHidden" | "accessibilityTraits" | "accessibilityViewIsModal" | "onAccessibilityEscape" | "onAccessibilityTap" | "onMagicTap" | "accessibilityIgnoresInvertColors"> & React.RefAttributes<React.ComponentClass<Animated.AnimateProps<{}>, any>>>;
|
|
5
5
|
export default ReanimatedNativeStackScreen;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { ScreenProps } from 'react-native-screens';
|
|
3
3
|
import Animated from 'react-native-reanimated';
|
|
4
|
-
declare const ReanimatedScreen: React.ForwardRefExoticComponent<Pick<ScreenProps, "children" | "active" | "activityState" | "customAnimationOnSwipe" | "enabled" | "isNativeStack" | "fullScreenSwipeEnabled" | "gestureEnabled" | "homeIndicatorHidden" | "nativeBackButtonDismissalEnabled" | "navigationBarColor" | "navigationBarHidden" | "onAppear" | "onComponentRef" | "onDisappear" | "onDismissed" | "onHeaderBackButtonClicked" | "onTransitionProgress" | "onWillAppear" | "onWillDisappear" | "replaceAnimation" | "screenOrientation" | "stackAnimation" | "stackPresentation" | "statusBarAnimation" | "statusBarColor" | "statusBarHidden" | "statusBarStyle" | "statusBarTranslucent" | "swipeDirection" | "transitionDuration" | "hitSlop" | "onLayout" | "pointerEvents" | "removeClippedSubviews" | "style" | "testID" | "nativeID" | "collapsable" | "needsOffscreenAlphaCompositing" | "renderToHardwareTextureAndroid" | "focusable" | "shouldRasterizeIOS" | "isTVSelectable" | "hasTVPreferredFocus" | "tvParallaxProperties" | "tvParallaxShiftDistanceX" | "tvParallaxShiftDistanceY" | "tvParallaxTiltAngle" | "tvParallaxMagnification" | "onStartShouldSetResponder" | "onMoveShouldSetResponder" | "onResponderEnd" | "onResponderGrant" | "onResponderReject" | "onResponderMove" | "onResponderRelease" | "onResponderStart" | "onResponderTerminationRequest" | "onResponderTerminate" | "onStartShouldSetResponderCapture" | "onMoveShouldSetResponderCapture" | "onTouchStart" | "onTouchMove" | "onTouchEnd" | "onTouchCancel" | "onTouchEndCapture" | "accessible" | "accessibilityActions" | "accessibilityLabel" | "accessibilityRole" | "accessibilityState" | "accessibilityHint" | "accessibilityValue" | "onAccessibilityAction" | "accessibilityComponentType" | "accessibilityLiveRegion" | "importantForAccessibility" | "accessibilityElementsHidden" | "accessibilityTraits" | "accessibilityViewIsModal" | "onAccessibilityEscape" | "onAccessibilityTap" | "onMagicTap" | "accessibilityIgnoresInvertColors"> & React.RefAttributes<React.ComponentClass<Animated.AnimateProps<{}>, any>>>;
|
|
4
|
+
declare const ReanimatedScreen: React.ForwardRefExoticComponent<Pick<ScreenProps, "children" | "active" | "activityState" | "customAnimationOnSwipe" | "enabled" | "isNativeStack" | "fullScreenSwipeEnabled" | "gestureEnabled" | "gestureResponseDistance" | "homeIndicatorHidden" | "hideKeyboardOnSwipe" | "nativeBackButtonDismissalEnabled" | "navigationBarColor" | "navigationBarHidden" | "onAppear" | "onComponentRef" | "onDisappear" | "onDismissed" | "onHeaderBackButtonClicked" | "onTransitionProgress" | "onWillAppear" | "onWillDisappear" | "replaceAnimation" | "screenOrientation" | "stackAnimation" | "stackPresentation" | "statusBarAnimation" | "statusBarColor" | "statusBarHidden" | "statusBarStyle" | "statusBarTranslucent" | "swipeDirection" | "transitionDuration" | "hitSlop" | "onLayout" | "pointerEvents" | "removeClippedSubviews" | "style" | "testID" | "nativeID" | "collapsable" | "needsOffscreenAlphaCompositing" | "renderToHardwareTextureAndroid" | "focusable" | "shouldRasterizeIOS" | "isTVSelectable" | "hasTVPreferredFocus" | "tvParallaxProperties" | "tvParallaxShiftDistanceX" | "tvParallaxShiftDistanceY" | "tvParallaxTiltAngle" | "tvParallaxMagnification" | "onStartShouldSetResponder" | "onMoveShouldSetResponder" | "onResponderEnd" | "onResponderGrant" | "onResponderReject" | "onResponderMove" | "onResponderRelease" | "onResponderStart" | "onResponderTerminationRequest" | "onResponderTerminate" | "onStartShouldSetResponderCapture" | "onMoveShouldSetResponderCapture" | "onTouchStart" | "onTouchMove" | "onTouchEnd" | "onTouchCancel" | "onTouchEndCapture" | "accessible" | "accessibilityActions" | "accessibilityLabel" | "accessibilityRole" | "accessibilityState" | "accessibilityHint" | "accessibilityValue" | "onAccessibilityAction" | "accessibilityComponentType" | "accessibilityLiveRegion" | "importantForAccessibility" | "accessibilityElementsHidden" | "accessibilityTraits" | "accessibilityViewIsModal" | "onAccessibilityEscape" | "onAccessibilityTap" | "onMagicTap" | "accessibilityIgnoresInvertColors"> & React.RefAttributes<React.ComponentClass<Animated.AnimateProps<{}>, any>>>;
|
|
5
5
|
export default ReanimatedScreen;
|
|
@@ -11,6 +11,12 @@ export declare type TransitionProgressEventType = {
|
|
|
11
11
|
closing: number;
|
|
12
12
|
goingForward: number;
|
|
13
13
|
};
|
|
14
|
+
export declare type GestureResponseDistanceType = {
|
|
15
|
+
start?: number;
|
|
16
|
+
end?: number;
|
|
17
|
+
top?: number;
|
|
18
|
+
bottom?: number;
|
|
19
|
+
};
|
|
14
20
|
export interface ScreenProps extends ViewProps {
|
|
15
21
|
active?: 0 | 1 | Animated.AnimatedInterpolation;
|
|
16
22
|
activityState?: 0 | 1 | 2 | Animated.AnimatedInterpolation;
|
|
@@ -43,12 +49,24 @@ export interface ScreenProps extends ViewProps {
|
|
|
43
49
|
* @platform ios
|
|
44
50
|
*/
|
|
45
51
|
gestureEnabled?: boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Use it to restrict the distance from the edges of screen in which the gesture should be recognized. To be used alongside `fullScreenSwipeEnabled`.
|
|
54
|
+
*
|
|
55
|
+
* @platform ios
|
|
56
|
+
*/
|
|
57
|
+
gestureResponseDistance?: GestureResponseDistanceType;
|
|
46
58
|
/**
|
|
47
59
|
* Whether the home indicator should be hidden on this screen. Defaults to `false`.
|
|
48
60
|
*
|
|
49
61
|
* @platform ios
|
|
50
62
|
*/
|
|
51
63
|
homeIndicatorHidden?: boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Whether the keyboard should hide when swiping to the previous screen. Defaults to `false`.
|
|
66
|
+
*
|
|
67
|
+
* @platform ios
|
|
68
|
+
*/
|
|
69
|
+
hideKeyboardOnSwipe?: boolean;
|
|
52
70
|
/**
|
|
53
71
|
* Boolean indicating whether, when the Android default back button is clicked, the `pop` action should be performed on the native side or on the JS side to be able to prevent it.
|
|
54
72
|
* Unfortunately the same behavior is not available on iOS since the behavior of native back button cannot be changed there.
|
|
@@ -362,6 +380,12 @@ export interface SearchBarProps {
|
|
|
362
380
|
* The search field background color
|
|
363
381
|
*/
|
|
364
382
|
barTintColor?: string;
|
|
383
|
+
/**
|
|
384
|
+
* The color for the cursor caret and cancel button text.
|
|
385
|
+
*
|
|
386
|
+
* @platform ios
|
|
387
|
+
*/
|
|
388
|
+
tintColor?: string;
|
|
365
389
|
/**
|
|
366
390
|
* The text to be used instead of default `Cancel` button text
|
|
367
391
|
*
|
package/native-stack/README.md
CHANGED
|
@@ -87,6 +87,19 @@ Boolean indicating whether the swipe gesture should work on whole screen. Swipin
|
|
|
87
87
|
|
|
88
88
|
Whether you can use gestures to dismiss this screen. Defaults to `true`.
|
|
89
89
|
|
|
90
|
+
#### `gestureResponseDistance` (iOS only)
|
|
91
|
+
|
|
92
|
+
Use it to restrict the distance from the edges of screen in which the gesture should be recognized. To be used alongside `fullScreenSwipeEnabled`. The responsive area is covered with 4 values: `start`, `end`, `top`, `bottom`. Example usage:
|
|
93
|
+
|
|
94
|
+
```tsx
|
|
95
|
+
gestureResponseDistance: {
|
|
96
|
+
start: 200,
|
|
97
|
+
end: 250,
|
|
98
|
+
top: 100,
|
|
99
|
+
bottom: 150,
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
90
103
|
#### `headerBackTitle`
|
|
91
104
|
|
|
92
105
|
Title string used by the back button on iOS. Defaults to the previous scene's `headerTitle`.
|
|
@@ -182,6 +195,10 @@ A Boolean to that lets you opt out of insetting the header. You may want to * se
|
|
|
182
195
|
|
|
183
196
|
Boolean indicating whether the navigation bar is translucent.
|
|
184
197
|
|
|
198
|
+
#### `hideKeyboardOnSwipe` (iOS only)
|
|
199
|
+
|
|
200
|
+
Whether the keyboard should hide when swiping to the previous screen. Defaults to `false`.
|
|
201
|
+
|
|
185
202
|
#### `homeIndicatorHidden` (iOS only)
|
|
186
203
|
|
|
187
204
|
Whether the home indicator should be hidden on this screen. Defaults to `false`.
|
|
@@ -421,6 +438,10 @@ The search field background color.
|
|
|
421
438
|
|
|
422
439
|
By default bar tint color is translucent.
|
|
423
440
|
|
|
441
|
+
#### `tintColor` (iOS only)
|
|
442
|
+
|
|
443
|
+
The color for the cursor caret and cancel button text.
|
|
444
|
+
|
|
424
445
|
#### `cancelButtonText` (iOS only)
|
|
425
446
|
|
|
426
447
|
The text to be used instead of default `Cancel` button text.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-screens",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.14.1",
|
|
4
4
|
"description": "Native navigation primitives for your React Native app.",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"check-types": "tsc --noEmit",
|
|
@@ -111,7 +111,7 @@
|
|
|
111
111
|
"{src,Example}/**/*.{js,ts,tsx}": "yarn format-js",
|
|
112
112
|
"src/**/*.{js,ts,tsx}": "yarn lint-js",
|
|
113
113
|
"android/**/*.kt": "yarn format-android",
|
|
114
|
-
"ios/**/*.{h,m,cpp}": "yarn format-ios"
|
|
114
|
+
"ios/**/*.{h,m,mm,cpp}": "yarn format-ios"
|
|
115
115
|
},
|
|
116
116
|
"@react-native-community/bob": {
|
|
117
117
|
"source": "src",
|