@react-navigation/native-stack 6.9.0 → 6.9.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.
@@ -112,6 +112,7 @@ const SceneView = _ref2 => {
112
112
  header,
113
113
  headerBackButtonMenuEnabled,
114
114
  headerShown,
115
+ headerTransparent,
115
116
  autoHideHomeIndicator,
116
117
  navigationBarColor,
117
118
  navigationBarHidden,
@@ -228,24 +229,17 @@ const SceneView = _ref2 => {
228
229
  value: isParentHeaderShown || headerShown !== false
229
230
  }, /*#__PURE__*/React.createElement(_elements.HeaderHeightContext.Provider, {
230
231
  value: headerShown !== false ? headerHeight : parentHeaderHeight !== null && parentHeaderHeight !== void 0 ? parentHeaderHeight : 0
231
- }, header !== undefined && headerShown !== false ? /*#__PURE__*/React.createElement(_reactNative.View, {
232
- onLayout: e => {
233
- setCustomHeaderHeight(e.nativeEvent.layout.height);
234
- }
235
- }, header({
236
- back: headerBack,
237
- options,
238
- route,
239
- navigation
240
- })) : /*#__PURE__*/React.createElement(_HeaderConfig.default, _extends({}, options, {
232
+ }, /*#__PURE__*/React.createElement(_HeaderConfig.default, _extends({}, options, {
241
233
  route: route,
242
234
  headerBackButtonMenuEnabled: isRemovePrevented !== undefined ? !isRemovePrevented : headerBackButtonMenuEnabled,
243
- headerShown: headerShown,
235
+ headerShown: header !== undefined ? false : headerShown,
244
236
  headerHeight: headerHeight,
245
237
  headerBackTitle: options.headerBackTitle !== undefined ? options.headerBackTitle : undefined,
246
238
  headerTopInsetEnabled: headerTopInsetEnabled,
247
239
  canGoBack: headerBack !== undefined
248
- })), /*#__PURE__*/React.createElement(MaybeNestedStack, {
240
+ })), /*#__PURE__*/React.createElement(_reactNative.View, {
241
+ style: styles.scene
242
+ }, /*#__PURE__*/React.createElement(MaybeNestedStack, {
249
243
  options: options,
250
244
  route: route,
251
245
  presentation: presentation,
@@ -253,7 +247,17 @@ const SceneView = _ref2 => {
253
247
  headerTopInsetEnabled: headerTopInsetEnabled
254
248
  }, /*#__PURE__*/React.createElement(_elements.HeaderBackContext.Provider, {
255
249
  value: headerBack
256
- }, render())))))));
250
+ }, render())), header !== undefined && headerShown !== false ? /*#__PURE__*/React.createElement(_reactNative.View, {
251
+ onLayout: e => {
252
+ setCustomHeaderHeight(e.nativeEvent.layout.height);
253
+ },
254
+ style: headerTransparent ? styles.absolute : null
255
+ }, header({
256
+ back: headerBack,
257
+ options,
258
+ route,
259
+ navigation
260
+ })) : null))))));
257
261
  };
258
262
 
259
263
  function NativeStackViewInner(_ref3) {
@@ -339,6 +343,16 @@ function NativeStackView(props) {
339
343
  const styles = _reactNative.StyleSheet.create({
340
344
  container: {
341
345
  flex: 1
346
+ },
347
+ scene: {
348
+ flex: 1,
349
+ flexDirection: 'column-reverse'
350
+ },
351
+ absolute: {
352
+ position: 'absolute',
353
+ top: 0,
354
+ left: 0,
355
+ right: 0
342
356
  }
343
357
  });
344
358
  //# sourceMappingURL=NativeStackView.native.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["NativeStackView.native.tsx"],"names":["isAndroid","Platform","OS","MaybeNestedStack","options","route","presentation","headerHeight","headerTopInsetEnabled","children","colors","header","headerShown","contentStyle","isHeaderInModal","undefined","headerShownPreviousRef","React","useRef","useEffect","current","name","content","styles","container","backgroundColor","background","StyleSheet","absoluteFill","SceneView","descriptor","previousDescriptor","nextDescriptor","index","onWillDisappear","onAppear","onDisappear","onDismissed","onHeaderBackButtonClicked","onNativeDismissCancelled","navigation","render","animationDuration","animationTypeForReplace","gestureEnabled","headerBackButtonMenuEnabled","autoHideHomeIndicator","navigationBarColor","navigationBarHidden","orientation","statusBarAnimation","statusBarHidden","statusBarStyle","statusBarTranslucent","statusBarColor","freezeOnBlur","animation","customAnimationOnGesture","fullScreenGestureEnabled","gestureDirection","nextGestureDirection","gestureDirectionOverride","insets","frame","isModal","isIPhone","isPad","isTVOS","isLandscape","width","height","isParentHeaderShown","useContext","HeaderShownContext","parentHeaderHeight","HeaderHeightContext","parentHeaderBack","HeaderBackContext","topInset","top","preventedRoutes","defaultHeaderHeight","customHeaderHeight","setCustomHeaderHeight","useState","headerBack","title","isRemovePrevented","key","preventRemove","e","nativeEvent","layout","back","headerBackTitle","NativeStackViewInner","state","descriptors","setNextDismissedKey","routes","map","previousKey","nextKey","emit","type","data","closing","target","event","dispatch","StackActions","pop","dismissCount","source","NativeStackView","props","create","flex"],"mappings":"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","sourcesContent":["import {\n getDefaultHeaderHeight,\n getHeaderTitle,\n HeaderBackContext,\n HeaderHeightContext,\n HeaderShownContext,\n SafeAreaProviderCompat,\n} from '@react-navigation/elements';\nimport {\n NavigationContext,\n NavigationRouteContext,\n ParamListBase,\n Route,\n StackActions,\n StackNavigationState,\n usePreventRemoveContext,\n useTheme,\n} from '@react-navigation/native';\nimport * as React from 'react';\nimport { Platform, StyleSheet, View } from 'react-native';\nimport {\n useSafeAreaFrame,\n useSafeAreaInsets,\n} from 'react-native-safe-area-context';\nimport type { ScreenProps } from 'react-native-screens';\nimport {\n Screen,\n ScreenStack,\n StackPresentationTypes,\n} from 'react-native-screens';\nimport warnOnce from 'warn-once';\n\nimport type {\n NativeStackDescriptor,\n NativeStackDescriptorMap,\n NativeStackNavigationHelpers,\n NativeStackNavigationOptions,\n} from '../types';\nimport useDismissedRouteError from '../utils/useDismissedRouteError';\nimport useInvalidPreventRemoveError from '../utils/useInvalidPreventRemoveError';\nimport DebugContainer from './DebugContainer';\nimport HeaderConfig from './HeaderConfig';\n\nconst isAndroid = Platform.OS === 'android';\n\nconst MaybeNestedStack = ({\n options,\n route,\n presentation,\n headerHeight,\n headerTopInsetEnabled,\n children,\n}: {\n options: NativeStackNavigationOptions;\n route: Route<string>;\n presentation: Exclude<StackPresentationTypes, 'push'> | 'card';\n headerHeight: number;\n headerTopInsetEnabled: boolean;\n children: React.ReactNode;\n}) => {\n const { colors } = useTheme();\n const { header, headerShown = true, contentStyle } = options;\n\n const isHeaderInModal = isAndroid\n ? false\n : presentation !== 'card' && headerShown === true && header === undefined;\n\n const headerShownPreviousRef = React.useRef(headerShown);\n\n React.useEffect(() => {\n warnOnce(\n !isAndroid &&\n presentation !== 'card' &&\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, presentation, route.name]);\n\n const content = (\n <DebugContainer\n style={[\n styles.container,\n presentation !== 'transparentModal' &&\n presentation !== 'containedTransparentModal' && {\n backgroundColor: colors.background,\n },\n contentStyle,\n ]}\n stackPresentation={presentation === 'card' ? 'push' : presentation}\n >\n {children}\n </DebugContainer>\n );\n\n if (isHeaderInModal) {\n return (\n <ScreenStack style={styles.container}>\n <Screen enabled style={StyleSheet.absoluteFill}>\n <HeaderConfig\n {...options}\n route={route}\n headerHeight={headerHeight}\n headerTopInsetEnabled={headerTopInsetEnabled}\n canGoBack\n />\n {content}\n </Screen>\n </ScreenStack>\n );\n }\n\n return content;\n};\n\ntype SceneViewProps = {\n index: number;\n descriptor: NativeStackDescriptor;\n previousDescriptor?: NativeStackDescriptor;\n nextDescriptor?: NativeStackDescriptor;\n onWillDisappear: () => void;\n onAppear: () => void;\n onDisappear: () => void;\n onDismissed: ScreenProps['onDismissed'];\n onHeaderBackButtonClicked: ScreenProps['onHeaderBackButtonClicked'];\n onNativeDismissCancelled: ScreenProps['onDismissed'];\n};\n\nconst SceneView = ({\n descriptor,\n previousDescriptor,\n nextDescriptor,\n index,\n onWillDisappear,\n onAppear,\n onDisappear,\n onDismissed,\n onHeaderBackButtonClicked,\n onNativeDismissCancelled,\n}: SceneViewProps) => {\n const { route, navigation, options, render } = descriptor;\n const {\n animationDuration,\n animationTypeForReplace = 'push',\n gestureEnabled,\n header,\n headerBackButtonMenuEnabled,\n headerShown,\n autoHideHomeIndicator,\n navigationBarColor,\n navigationBarHidden,\n orientation,\n statusBarAnimation,\n statusBarHidden,\n statusBarStyle,\n statusBarTranslucent,\n statusBarColor,\n freezeOnBlur,\n } = options;\n\n let {\n animation,\n customAnimationOnGesture,\n fullScreenGestureEnabled,\n presentation = 'card',\n gestureDirection = presentation === 'card' ? 'horizontal' : 'vertical',\n } = options;\n\n if (gestureDirection === 'vertical' && Platform.OS === 'ios') {\n // for `vertical` direction to work, we need to set `fullScreenGestureEnabled` to `true`\n // so the screen can be dismissed from any point on screen.\n // `customAnimationOnGesture` needs to be set to `true` so the `animation` 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 (fullScreenGestureEnabled === undefined) {\n fullScreenGestureEnabled = true;\n }\n if (customAnimationOnGesture === undefined) {\n customAnimationOnGesture = true;\n }\n if (animation === undefined) {\n animation = 'slide_from_bottom';\n }\n }\n\n // workaround for rn-screens where gestureDirection has to be set on both\n // current and previous screen - software-mansion/react-native-screens/pull/1509\n const nextGestureDirection = nextDescriptor?.options.gestureDirection;\n const gestureDirectionOverride =\n nextGestureDirection != null ? nextGestureDirection : gestureDirection;\n\n if (index === 0) {\n // first screen should always be treated as `card`, it resolves problems with no header animation\n // for navigator with first screen as `modal` and the next as `card`\n presentation = 'card';\n }\n\n const insets = useSafeAreaInsets();\n const frame = useSafeAreaFrame();\n\n // `modal` and `formSheet` presentations do not take whole screen, so should not take the inset.\n const isModal = presentation === 'modal' || presentation === 'formSheet';\n\n // Modals are fullscreen in landscape only on iPhone\n const isIPhone =\n Platform.OS === 'ios' && !(Platform.isPad || Platform.isTVOS);\n const isLandscape = frame.width > frame.height;\n\n const isParentHeaderShown = React.useContext(HeaderShownContext);\n const parentHeaderHeight = React.useContext(HeaderHeightContext);\n const parentHeaderBack = React.useContext(HeaderBackContext);\n\n const topInset =\n isParentHeaderShown ||\n (Platform.OS === 'ios' && isModal) ||\n (isIPhone && isLandscape)\n ? 0\n : insets.top;\n\n const { preventedRoutes } = usePreventRemoveContext();\n\n const defaultHeaderHeight = getDefaultHeaderHeight(frame, isModal, topInset);\n\n const [customHeaderHeight, setCustomHeaderHeight] =\n React.useState(defaultHeaderHeight);\n\n const headerTopInsetEnabled = topInset !== 0;\n const headerHeight = header ? customHeaderHeight : defaultHeaderHeight;\n const headerBack = previousDescriptor\n ? {\n title: getHeaderTitle(\n previousDescriptor.options,\n previousDescriptor.route.name\n ),\n }\n : parentHeaderBack;\n\n const isRemovePrevented = preventedRoutes[route.key]?.preventRemove;\n\n return (\n <Screen\n key={route.key}\n enabled\n style={StyleSheet.absoluteFill}\n customAnimationOnSwipe={customAnimationOnGesture}\n fullScreenSwipeEnabled={fullScreenGestureEnabled}\n gestureEnabled={\n isAndroid\n ? // This prop enables handling of system back gestures on Android\n // Since we handle them in JS side, we disable this\n false\n : gestureEnabled\n }\n homeIndicatorHidden={autoHideHomeIndicator}\n navigationBarColor={navigationBarColor}\n navigationBarHidden={navigationBarHidden}\n replaceAnimation={animationTypeForReplace}\n stackPresentation={presentation === 'card' ? 'push' : presentation}\n stackAnimation={animation}\n screenOrientation={orientation}\n statusBarAnimation={statusBarAnimation}\n statusBarHidden={statusBarHidden}\n statusBarStyle={statusBarStyle}\n statusBarColor={statusBarColor}\n statusBarTranslucent={statusBarTranslucent}\n swipeDirection={gestureDirectionOverride}\n transitionDuration={animationDuration}\n onWillDisappear={onWillDisappear}\n onAppear={onAppear}\n onDisappear={onDisappear}\n onDismissed={onDismissed}\n isNativeStack\n nativeBackButtonDismissalEnabled={false} // on Android\n onHeaderBackButtonClicked={onHeaderBackButtonClicked}\n // @ts-ignore props not exported from rn-screens\n preventNativeDismiss={isRemovePrevented} // on iOS\n onNativeDismissCancelled={onNativeDismissCancelled}\n // this prop is available since rn-screens 3.16\n freezeOnBlur={freezeOnBlur}\n >\n <NavigationContext.Provider value={navigation}>\n <NavigationRouteContext.Provider value={route}>\n <HeaderShownContext.Provider\n value={isParentHeaderShown || headerShown !== false}\n >\n <HeaderHeightContext.Provider\n value={\n headerShown !== false ? headerHeight : parentHeaderHeight ?? 0\n }\n >\n {header !== undefined && headerShown !== false ? (\n <View\n onLayout={(e) => {\n setCustomHeaderHeight(e.nativeEvent.layout.height);\n }}\n >\n {header({\n back: headerBack,\n options,\n route,\n navigation,\n })}\n </View>\n ) : (\n <HeaderConfig\n {...options}\n route={route}\n headerBackButtonMenuEnabled={\n isRemovePrevented !== undefined\n ? !isRemovePrevented\n : headerBackButtonMenuEnabled\n }\n headerShown={headerShown}\n headerHeight={headerHeight}\n headerBackTitle={\n options.headerBackTitle !== undefined\n ? options.headerBackTitle\n : undefined\n }\n headerTopInsetEnabled={headerTopInsetEnabled}\n canGoBack={headerBack !== undefined}\n />\n )}\n <MaybeNestedStack\n options={options}\n route={route}\n presentation={presentation}\n headerHeight={headerHeight}\n headerTopInsetEnabled={headerTopInsetEnabled}\n >\n <HeaderBackContext.Provider value={headerBack}>\n {render()}\n </HeaderBackContext.Provider>\n </MaybeNestedStack>\n </HeaderHeightContext.Provider>\n </HeaderShownContext.Provider>\n </NavigationRouteContext.Provider>\n </NavigationContext.Provider>\n </Screen>\n );\n};\n\ntype Props = {\n state: StackNavigationState<ParamListBase>;\n navigation: NativeStackNavigationHelpers;\n descriptors: NativeStackDescriptorMap;\n};\n\nfunction NativeStackViewInner({ state, navigation, descriptors }: Props) {\n const { setNextDismissedKey } = useDismissedRouteError(state);\n\n useInvalidPreventRemoveError(descriptors);\n\n return (\n <ScreenStack style={styles.container}>\n {state.routes.map((route, index) => {\n const descriptor = descriptors[route.key];\n const previousKey = state.routes[index - 1]?.key;\n const nextKey = state.routes[index + 1]?.key;\n const previousDescriptor = previousKey\n ? descriptors[previousKey]\n : undefined;\n const nextDescriptor = nextKey ? descriptors[nextKey] : undefined;\n\n return (\n <SceneView\n key={route.key}\n index={index}\n descriptor={descriptor}\n previousDescriptor={previousDescriptor}\n nextDescriptor={nextDescriptor}\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: '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={(event) => {\n navigation.dispatch({\n ...StackActions.pop(event.nativeEvent.dismissCount),\n source: route.key,\n target: state.key,\n });\n\n setNextDismissedKey(route.key);\n }}\n onHeaderBackButtonClicked={() => {\n navigation.dispatch({\n ...StackActions.pop(),\n source: route.key,\n target: state.key,\n });\n }}\n onNativeDismissCancelled={(event) => {\n navigation.dispatch({\n ...StackActions.pop(event.nativeEvent.dismissCount),\n source: route.key,\n target: state.key,\n });\n }}\n />\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.native.tsx"],"names":["isAndroid","Platform","OS","MaybeNestedStack","options","route","presentation","headerHeight","headerTopInsetEnabled","children","colors","header","headerShown","contentStyle","isHeaderInModal","undefined","headerShownPreviousRef","React","useRef","useEffect","current","name","content","styles","container","backgroundColor","background","StyleSheet","absoluteFill","SceneView","descriptor","previousDescriptor","nextDescriptor","index","onWillDisappear","onAppear","onDisappear","onDismissed","onHeaderBackButtonClicked","onNativeDismissCancelled","navigation","render","animationDuration","animationTypeForReplace","gestureEnabled","headerBackButtonMenuEnabled","headerTransparent","autoHideHomeIndicator","navigationBarColor","navigationBarHidden","orientation","statusBarAnimation","statusBarHidden","statusBarStyle","statusBarTranslucent","statusBarColor","freezeOnBlur","animation","customAnimationOnGesture","fullScreenGestureEnabled","gestureDirection","nextGestureDirection","gestureDirectionOverride","insets","frame","isModal","isIPhone","isPad","isTVOS","isLandscape","width","height","isParentHeaderShown","useContext","HeaderShownContext","parentHeaderHeight","HeaderHeightContext","parentHeaderBack","HeaderBackContext","topInset","top","preventedRoutes","defaultHeaderHeight","customHeaderHeight","setCustomHeaderHeight","useState","headerBack","title","isRemovePrevented","key","preventRemove","headerBackTitle","scene","e","nativeEvent","layout","absolute","back","NativeStackViewInner","state","descriptors","setNextDismissedKey","routes","map","previousKey","nextKey","emit","type","data","closing","target","event","dispatch","StackActions","pop","dismissCount","source","NativeStackView","props","create","flex","flexDirection","position","left","right"],"mappings":"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","sourcesContent":["import {\n getDefaultHeaderHeight,\n getHeaderTitle,\n HeaderBackContext,\n HeaderHeightContext,\n HeaderShownContext,\n SafeAreaProviderCompat,\n} from '@react-navigation/elements';\nimport {\n NavigationContext,\n NavigationRouteContext,\n ParamListBase,\n Route,\n StackActions,\n StackNavigationState,\n usePreventRemoveContext,\n useTheme,\n} from '@react-navigation/native';\nimport * as React from 'react';\nimport { Platform, StyleSheet, View } from 'react-native';\nimport {\n useSafeAreaFrame,\n useSafeAreaInsets,\n} from 'react-native-safe-area-context';\nimport type { ScreenProps } from 'react-native-screens';\nimport {\n Screen,\n ScreenStack,\n StackPresentationTypes,\n} from 'react-native-screens';\nimport warnOnce from 'warn-once';\n\nimport type {\n NativeStackDescriptor,\n NativeStackDescriptorMap,\n NativeStackNavigationHelpers,\n NativeStackNavigationOptions,\n} from '../types';\nimport useDismissedRouteError from '../utils/useDismissedRouteError';\nimport useInvalidPreventRemoveError from '../utils/useInvalidPreventRemoveError';\nimport DebugContainer from './DebugContainer';\nimport HeaderConfig from './HeaderConfig';\n\nconst isAndroid = Platform.OS === 'android';\n\nconst MaybeNestedStack = ({\n options,\n route,\n presentation,\n headerHeight,\n headerTopInsetEnabled,\n children,\n}: {\n options: NativeStackNavigationOptions;\n route: Route<string>;\n presentation: Exclude<StackPresentationTypes, 'push'> | 'card';\n headerHeight: number;\n headerTopInsetEnabled: boolean;\n children: React.ReactNode;\n}) => {\n const { colors } = useTheme();\n const { header, headerShown = true, contentStyle } = options;\n\n const isHeaderInModal = isAndroid\n ? false\n : presentation !== 'card' && headerShown === true && header === undefined;\n\n const headerShownPreviousRef = React.useRef(headerShown);\n\n React.useEffect(() => {\n warnOnce(\n !isAndroid &&\n presentation !== 'card' &&\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, presentation, route.name]);\n\n const content = (\n <DebugContainer\n style={[\n styles.container,\n presentation !== 'transparentModal' &&\n presentation !== 'containedTransparentModal' && {\n backgroundColor: colors.background,\n },\n contentStyle,\n ]}\n stackPresentation={presentation === 'card' ? 'push' : presentation}\n >\n {children}\n </DebugContainer>\n );\n\n if (isHeaderInModal) {\n return (\n <ScreenStack style={styles.container}>\n <Screen enabled style={StyleSheet.absoluteFill}>\n <HeaderConfig\n {...options}\n route={route}\n headerHeight={headerHeight}\n headerTopInsetEnabled={headerTopInsetEnabled}\n canGoBack\n />\n {content}\n </Screen>\n </ScreenStack>\n );\n }\n\n return content;\n};\n\ntype SceneViewProps = {\n index: number;\n descriptor: NativeStackDescriptor;\n previousDescriptor?: NativeStackDescriptor;\n nextDescriptor?: NativeStackDescriptor;\n onWillDisappear: () => void;\n onAppear: () => void;\n onDisappear: () => void;\n onDismissed: ScreenProps['onDismissed'];\n onHeaderBackButtonClicked: ScreenProps['onHeaderBackButtonClicked'];\n onNativeDismissCancelled: ScreenProps['onDismissed'];\n};\n\nconst SceneView = ({\n descriptor,\n previousDescriptor,\n nextDescriptor,\n index,\n onWillDisappear,\n onAppear,\n onDisappear,\n onDismissed,\n onHeaderBackButtonClicked,\n onNativeDismissCancelled,\n}: SceneViewProps) => {\n const { route, navigation, options, render } = descriptor;\n const {\n animationDuration,\n animationTypeForReplace = 'push',\n gestureEnabled,\n header,\n headerBackButtonMenuEnabled,\n headerShown,\n headerTransparent,\n autoHideHomeIndicator,\n navigationBarColor,\n navigationBarHidden,\n orientation,\n statusBarAnimation,\n statusBarHidden,\n statusBarStyle,\n statusBarTranslucent,\n statusBarColor,\n freezeOnBlur,\n } = options;\n\n let {\n animation,\n customAnimationOnGesture,\n fullScreenGestureEnabled,\n presentation = 'card',\n gestureDirection = presentation === 'card' ? 'horizontal' : 'vertical',\n } = options;\n\n if (gestureDirection === 'vertical' && Platform.OS === 'ios') {\n // for `vertical` direction to work, we need to set `fullScreenGestureEnabled` to `true`\n // so the screen can be dismissed from any point on screen.\n // `customAnimationOnGesture` needs to be set to `true` so the `animation` 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 (fullScreenGestureEnabled === undefined) {\n fullScreenGestureEnabled = true;\n }\n if (customAnimationOnGesture === undefined) {\n customAnimationOnGesture = true;\n }\n if (animation === undefined) {\n animation = 'slide_from_bottom';\n }\n }\n\n // workaround for rn-screens where gestureDirection has to be set on both\n // current and previous screen - software-mansion/react-native-screens/pull/1509\n const nextGestureDirection = nextDescriptor?.options.gestureDirection;\n const gestureDirectionOverride =\n nextGestureDirection != null ? nextGestureDirection : gestureDirection;\n\n if (index === 0) {\n // first screen should always be treated as `card`, it resolves problems with no header animation\n // for navigator with first screen as `modal` and the next as `card`\n presentation = 'card';\n }\n\n const insets = useSafeAreaInsets();\n const frame = useSafeAreaFrame();\n\n // `modal` and `formSheet` presentations do not take whole screen, so should not take the inset.\n const isModal = presentation === 'modal' || presentation === 'formSheet';\n\n // Modals are fullscreen in landscape only on iPhone\n const isIPhone =\n Platform.OS === 'ios' && !(Platform.isPad || Platform.isTVOS);\n const isLandscape = frame.width > frame.height;\n\n const isParentHeaderShown = React.useContext(HeaderShownContext);\n const parentHeaderHeight = React.useContext(HeaderHeightContext);\n const parentHeaderBack = React.useContext(HeaderBackContext);\n\n const topInset =\n isParentHeaderShown ||\n (Platform.OS === 'ios' && isModal) ||\n (isIPhone && isLandscape)\n ? 0\n : insets.top;\n\n const { preventedRoutes } = usePreventRemoveContext();\n\n const defaultHeaderHeight = getDefaultHeaderHeight(frame, isModal, topInset);\n\n const [customHeaderHeight, setCustomHeaderHeight] =\n React.useState(defaultHeaderHeight);\n\n const headerTopInsetEnabled = topInset !== 0;\n const headerHeight = header ? customHeaderHeight : defaultHeaderHeight;\n const headerBack = previousDescriptor\n ? {\n title: getHeaderTitle(\n previousDescriptor.options,\n previousDescriptor.route.name\n ),\n }\n : parentHeaderBack;\n\n const isRemovePrevented = preventedRoutes[route.key]?.preventRemove;\n\n return (\n <Screen\n key={route.key}\n enabled\n style={StyleSheet.absoluteFill}\n customAnimationOnSwipe={customAnimationOnGesture}\n fullScreenSwipeEnabled={fullScreenGestureEnabled}\n gestureEnabled={\n isAndroid\n ? // This prop enables handling of system back gestures on Android\n // Since we handle them in JS side, we disable this\n false\n : gestureEnabled\n }\n homeIndicatorHidden={autoHideHomeIndicator}\n navigationBarColor={navigationBarColor}\n navigationBarHidden={navigationBarHidden}\n replaceAnimation={animationTypeForReplace}\n stackPresentation={presentation === 'card' ? 'push' : presentation}\n stackAnimation={animation}\n screenOrientation={orientation}\n statusBarAnimation={statusBarAnimation}\n statusBarHidden={statusBarHidden}\n statusBarStyle={statusBarStyle}\n statusBarColor={statusBarColor}\n statusBarTranslucent={statusBarTranslucent}\n swipeDirection={gestureDirectionOverride}\n transitionDuration={animationDuration}\n onWillDisappear={onWillDisappear}\n onAppear={onAppear}\n onDisappear={onDisappear}\n onDismissed={onDismissed}\n isNativeStack\n nativeBackButtonDismissalEnabled={false} // on Android\n onHeaderBackButtonClicked={onHeaderBackButtonClicked}\n // @ts-ignore props not exported from rn-screens\n preventNativeDismiss={isRemovePrevented} // on iOS\n onNativeDismissCancelled={onNativeDismissCancelled}\n // this prop is available since rn-screens 3.16\n freezeOnBlur={freezeOnBlur}\n >\n <NavigationContext.Provider value={navigation}>\n <NavigationRouteContext.Provider value={route}>\n <HeaderShownContext.Provider\n value={isParentHeaderShown || headerShown !== false}\n >\n <HeaderHeightContext.Provider\n value={\n headerShown !== false ? headerHeight : parentHeaderHeight ?? 0\n }\n >\n {/**\n * `HeaderConfig` needs to be the direct child of `Screen` without any intermediate `View`\n * We don't render it conditionally to make it possible to dynamically render a custom `header`\n * Otherwise dynamically rendering a custom `header` leaves the native header visible\n *\n * https://github.com/software-mansion/react-native-screens/blob/main/guides/GUIDE_FOR_LIBRARY_AUTHORS.md#screenstackheaderconfig\n */}\n <HeaderConfig\n {...options}\n route={route}\n headerBackButtonMenuEnabled={\n isRemovePrevented !== undefined\n ? !isRemovePrevented\n : headerBackButtonMenuEnabled\n }\n headerShown={header !== undefined ? false : headerShown}\n headerHeight={headerHeight}\n headerBackTitle={\n options.headerBackTitle !== undefined\n ? options.headerBackTitle\n : undefined\n }\n headerTopInsetEnabled={headerTopInsetEnabled}\n canGoBack={headerBack !== undefined}\n />\n <View style={styles.scene}>\n <MaybeNestedStack\n options={options}\n route={route}\n presentation={presentation}\n headerHeight={headerHeight}\n headerTopInsetEnabled={headerTopInsetEnabled}\n >\n <HeaderBackContext.Provider value={headerBack}>\n {render()}\n </HeaderBackContext.Provider>\n </MaybeNestedStack>\n {header !== undefined && headerShown !== false ? (\n <View\n onLayout={(e) => {\n setCustomHeaderHeight(e.nativeEvent.layout.height);\n }}\n style={headerTransparent ? styles.absolute : null}\n >\n {header({\n back: headerBack,\n options,\n route,\n navigation,\n })}\n </View>\n ) : null}\n </View>\n </HeaderHeightContext.Provider>\n </HeaderShownContext.Provider>\n </NavigationRouteContext.Provider>\n </NavigationContext.Provider>\n </Screen>\n );\n};\n\ntype Props = {\n state: StackNavigationState<ParamListBase>;\n navigation: NativeStackNavigationHelpers;\n descriptors: NativeStackDescriptorMap;\n};\n\nfunction NativeStackViewInner({ state, navigation, descriptors }: Props) {\n const { setNextDismissedKey } = useDismissedRouteError(state);\n\n useInvalidPreventRemoveError(descriptors);\n\n return (\n <ScreenStack style={styles.container}>\n {state.routes.map((route, index) => {\n const descriptor = descriptors[route.key];\n const previousKey = state.routes[index - 1]?.key;\n const nextKey = state.routes[index + 1]?.key;\n const previousDescriptor = previousKey\n ? descriptors[previousKey]\n : undefined;\n const nextDescriptor = nextKey ? descriptors[nextKey] : undefined;\n\n return (\n <SceneView\n key={route.key}\n index={index}\n descriptor={descriptor}\n previousDescriptor={previousDescriptor}\n nextDescriptor={nextDescriptor}\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: '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={(event) => {\n navigation.dispatch({\n ...StackActions.pop(event.nativeEvent.dismissCount),\n source: route.key,\n target: state.key,\n });\n\n setNextDismissedKey(route.key);\n }}\n onHeaderBackButtonClicked={() => {\n navigation.dispatch({\n ...StackActions.pop(),\n source: route.key,\n target: state.key,\n });\n }}\n onNativeDismissCancelled={(event) => {\n navigation.dispatch({\n ...StackActions.pop(event.nativeEvent.dismissCount),\n source: route.key,\n target: state.key,\n });\n }}\n />\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 scene: {\n flex: 1,\n flexDirection: 'column-reverse',\n },\n absolute: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n },\n});\n"]}
@@ -88,6 +88,7 @@ const SceneView = _ref2 => {
88
88
  header,
89
89
  headerBackButtonMenuEnabled,
90
90
  headerShown,
91
+ headerTransparent,
91
92
  autoHideHomeIndicator,
92
93
  navigationBarColor,
93
94
  navigationBarHidden,
@@ -204,24 +205,17 @@ const SceneView = _ref2 => {
204
205
  value: isParentHeaderShown || headerShown !== false
205
206
  }, /*#__PURE__*/React.createElement(HeaderHeightContext.Provider, {
206
207
  value: headerShown !== false ? headerHeight : parentHeaderHeight !== null && parentHeaderHeight !== void 0 ? parentHeaderHeight : 0
207
- }, header !== undefined && headerShown !== false ? /*#__PURE__*/React.createElement(View, {
208
- onLayout: e => {
209
- setCustomHeaderHeight(e.nativeEvent.layout.height);
210
- }
211
- }, header({
212
- back: headerBack,
213
- options,
214
- route,
215
- navigation
216
- })) : /*#__PURE__*/React.createElement(HeaderConfig, _extends({}, options, {
208
+ }, /*#__PURE__*/React.createElement(HeaderConfig, _extends({}, options, {
217
209
  route: route,
218
210
  headerBackButtonMenuEnabled: isRemovePrevented !== undefined ? !isRemovePrevented : headerBackButtonMenuEnabled,
219
- headerShown: headerShown,
211
+ headerShown: header !== undefined ? false : headerShown,
220
212
  headerHeight: headerHeight,
221
213
  headerBackTitle: options.headerBackTitle !== undefined ? options.headerBackTitle : undefined,
222
214
  headerTopInsetEnabled: headerTopInsetEnabled,
223
215
  canGoBack: headerBack !== undefined
224
- })), /*#__PURE__*/React.createElement(MaybeNestedStack, {
216
+ })), /*#__PURE__*/React.createElement(View, {
217
+ style: styles.scene
218
+ }, /*#__PURE__*/React.createElement(MaybeNestedStack, {
225
219
  options: options,
226
220
  route: route,
227
221
  presentation: presentation,
@@ -229,7 +223,17 @@ const SceneView = _ref2 => {
229
223
  headerTopInsetEnabled: headerTopInsetEnabled
230
224
  }, /*#__PURE__*/React.createElement(HeaderBackContext.Provider, {
231
225
  value: headerBack
232
- }, render())))))));
226
+ }, render())), header !== undefined && headerShown !== false ? /*#__PURE__*/React.createElement(View, {
227
+ onLayout: e => {
228
+ setCustomHeaderHeight(e.nativeEvent.layout.height);
229
+ },
230
+ style: headerTransparent ? styles.absolute : null
231
+ }, header({
232
+ back: headerBack,
233
+ options,
234
+ route,
235
+ navigation
236
+ })) : null))))));
233
237
  };
234
238
 
235
239
  function NativeStackViewInner(_ref3) {
@@ -314,6 +318,16 @@ export default function NativeStackView(props) {
314
318
  const styles = StyleSheet.create({
315
319
  container: {
316
320
  flex: 1
321
+ },
322
+ scene: {
323
+ flex: 1,
324
+ flexDirection: 'column-reverse'
325
+ },
326
+ absolute: {
327
+ position: 'absolute',
328
+ top: 0,
329
+ left: 0,
330
+ right: 0
317
331
  }
318
332
  });
319
333
  //# sourceMappingURL=NativeStackView.native.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["NativeStackView.native.tsx"],"names":["getDefaultHeaderHeight","getHeaderTitle","HeaderBackContext","HeaderHeightContext","HeaderShownContext","SafeAreaProviderCompat","NavigationContext","NavigationRouteContext","StackActions","usePreventRemoveContext","useTheme","React","Platform","StyleSheet","View","useSafeAreaFrame","useSafeAreaInsets","Screen","ScreenStack","warnOnce","useDismissedRouteError","useInvalidPreventRemoveError","DebugContainer","HeaderConfig","isAndroid","OS","MaybeNestedStack","options","route","presentation","headerHeight","headerTopInsetEnabled","children","colors","header","headerShown","contentStyle","isHeaderInModal","undefined","headerShownPreviousRef","useRef","useEffect","current","name","content","styles","container","backgroundColor","background","absoluteFill","SceneView","descriptor","previousDescriptor","nextDescriptor","index","onWillDisappear","onAppear","onDisappear","onDismissed","onHeaderBackButtonClicked","onNativeDismissCancelled","navigation","render","animationDuration","animationTypeForReplace","gestureEnabled","headerBackButtonMenuEnabled","autoHideHomeIndicator","navigationBarColor","navigationBarHidden","orientation","statusBarAnimation","statusBarHidden","statusBarStyle","statusBarTranslucent","statusBarColor","freezeOnBlur","animation","customAnimationOnGesture","fullScreenGestureEnabled","gestureDirection","nextGestureDirection","gestureDirectionOverride","insets","frame","isModal","isIPhone","isPad","isTVOS","isLandscape","width","height","isParentHeaderShown","useContext","parentHeaderHeight","parentHeaderBack","topInset","top","preventedRoutes","defaultHeaderHeight","customHeaderHeight","setCustomHeaderHeight","useState","headerBack","title","isRemovePrevented","key","preventRemove","e","nativeEvent","layout","back","headerBackTitle","NativeStackViewInner","state","descriptors","setNextDismissedKey","routes","map","previousKey","nextKey","emit","type","data","closing","target","event","dispatch","pop","dismissCount","source","NativeStackView","props","create","flex"],"mappings":"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","sourcesContent":["import {\n getDefaultHeaderHeight,\n getHeaderTitle,\n HeaderBackContext,\n HeaderHeightContext,\n HeaderShownContext,\n SafeAreaProviderCompat,\n} from '@react-navigation/elements';\nimport {\n NavigationContext,\n NavigationRouteContext,\n ParamListBase,\n Route,\n StackActions,\n StackNavigationState,\n usePreventRemoveContext,\n useTheme,\n} from '@react-navigation/native';\nimport * as React from 'react';\nimport { Platform, StyleSheet, View } from 'react-native';\nimport {\n useSafeAreaFrame,\n useSafeAreaInsets,\n} from 'react-native-safe-area-context';\nimport type { ScreenProps } from 'react-native-screens';\nimport {\n Screen,\n ScreenStack,\n StackPresentationTypes,\n} from 'react-native-screens';\nimport warnOnce from 'warn-once';\n\nimport type {\n NativeStackDescriptor,\n NativeStackDescriptorMap,\n NativeStackNavigationHelpers,\n NativeStackNavigationOptions,\n} from '../types';\nimport useDismissedRouteError from '../utils/useDismissedRouteError';\nimport useInvalidPreventRemoveError from '../utils/useInvalidPreventRemoveError';\nimport DebugContainer from './DebugContainer';\nimport HeaderConfig from './HeaderConfig';\n\nconst isAndroid = Platform.OS === 'android';\n\nconst MaybeNestedStack = ({\n options,\n route,\n presentation,\n headerHeight,\n headerTopInsetEnabled,\n children,\n}: {\n options: NativeStackNavigationOptions;\n route: Route<string>;\n presentation: Exclude<StackPresentationTypes, 'push'> | 'card';\n headerHeight: number;\n headerTopInsetEnabled: boolean;\n children: React.ReactNode;\n}) => {\n const { colors } = useTheme();\n const { header, headerShown = true, contentStyle } = options;\n\n const isHeaderInModal = isAndroid\n ? false\n : presentation !== 'card' && headerShown === true && header === undefined;\n\n const headerShownPreviousRef = React.useRef(headerShown);\n\n React.useEffect(() => {\n warnOnce(\n !isAndroid &&\n presentation !== 'card' &&\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, presentation, route.name]);\n\n const content = (\n <DebugContainer\n style={[\n styles.container,\n presentation !== 'transparentModal' &&\n presentation !== 'containedTransparentModal' && {\n backgroundColor: colors.background,\n },\n contentStyle,\n ]}\n stackPresentation={presentation === 'card' ? 'push' : presentation}\n >\n {children}\n </DebugContainer>\n );\n\n if (isHeaderInModal) {\n return (\n <ScreenStack style={styles.container}>\n <Screen enabled style={StyleSheet.absoluteFill}>\n <HeaderConfig\n {...options}\n route={route}\n headerHeight={headerHeight}\n headerTopInsetEnabled={headerTopInsetEnabled}\n canGoBack\n />\n {content}\n </Screen>\n </ScreenStack>\n );\n }\n\n return content;\n};\n\ntype SceneViewProps = {\n index: number;\n descriptor: NativeStackDescriptor;\n previousDescriptor?: NativeStackDescriptor;\n nextDescriptor?: NativeStackDescriptor;\n onWillDisappear: () => void;\n onAppear: () => void;\n onDisappear: () => void;\n onDismissed: ScreenProps['onDismissed'];\n onHeaderBackButtonClicked: ScreenProps['onHeaderBackButtonClicked'];\n onNativeDismissCancelled: ScreenProps['onDismissed'];\n};\n\nconst SceneView = ({\n descriptor,\n previousDescriptor,\n nextDescriptor,\n index,\n onWillDisappear,\n onAppear,\n onDisappear,\n onDismissed,\n onHeaderBackButtonClicked,\n onNativeDismissCancelled,\n}: SceneViewProps) => {\n const { route, navigation, options, render } = descriptor;\n const {\n animationDuration,\n animationTypeForReplace = 'push',\n gestureEnabled,\n header,\n headerBackButtonMenuEnabled,\n headerShown,\n autoHideHomeIndicator,\n navigationBarColor,\n navigationBarHidden,\n orientation,\n statusBarAnimation,\n statusBarHidden,\n statusBarStyle,\n statusBarTranslucent,\n statusBarColor,\n freezeOnBlur,\n } = options;\n\n let {\n animation,\n customAnimationOnGesture,\n fullScreenGestureEnabled,\n presentation = 'card',\n gestureDirection = presentation === 'card' ? 'horizontal' : 'vertical',\n } = options;\n\n if (gestureDirection === 'vertical' && Platform.OS === 'ios') {\n // for `vertical` direction to work, we need to set `fullScreenGestureEnabled` to `true`\n // so the screen can be dismissed from any point on screen.\n // `customAnimationOnGesture` needs to be set to `true` so the `animation` 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 (fullScreenGestureEnabled === undefined) {\n fullScreenGestureEnabled = true;\n }\n if (customAnimationOnGesture === undefined) {\n customAnimationOnGesture = true;\n }\n if (animation === undefined) {\n animation = 'slide_from_bottom';\n }\n }\n\n // workaround for rn-screens where gestureDirection has to be set on both\n // current and previous screen - software-mansion/react-native-screens/pull/1509\n const nextGestureDirection = nextDescriptor?.options.gestureDirection;\n const gestureDirectionOverride =\n nextGestureDirection != null ? nextGestureDirection : gestureDirection;\n\n if (index === 0) {\n // first screen should always be treated as `card`, it resolves problems with no header animation\n // for navigator with first screen as `modal` and the next as `card`\n presentation = 'card';\n }\n\n const insets = useSafeAreaInsets();\n const frame = useSafeAreaFrame();\n\n // `modal` and `formSheet` presentations do not take whole screen, so should not take the inset.\n const isModal = presentation === 'modal' || presentation === 'formSheet';\n\n // Modals are fullscreen in landscape only on iPhone\n const isIPhone =\n Platform.OS === 'ios' && !(Platform.isPad || Platform.isTVOS);\n const isLandscape = frame.width > frame.height;\n\n const isParentHeaderShown = React.useContext(HeaderShownContext);\n const parentHeaderHeight = React.useContext(HeaderHeightContext);\n const parentHeaderBack = React.useContext(HeaderBackContext);\n\n const topInset =\n isParentHeaderShown ||\n (Platform.OS === 'ios' && isModal) ||\n (isIPhone && isLandscape)\n ? 0\n : insets.top;\n\n const { preventedRoutes } = usePreventRemoveContext();\n\n const defaultHeaderHeight = getDefaultHeaderHeight(frame, isModal, topInset);\n\n const [customHeaderHeight, setCustomHeaderHeight] =\n React.useState(defaultHeaderHeight);\n\n const headerTopInsetEnabled = topInset !== 0;\n const headerHeight = header ? customHeaderHeight : defaultHeaderHeight;\n const headerBack = previousDescriptor\n ? {\n title: getHeaderTitle(\n previousDescriptor.options,\n previousDescriptor.route.name\n ),\n }\n : parentHeaderBack;\n\n const isRemovePrevented = preventedRoutes[route.key]?.preventRemove;\n\n return (\n <Screen\n key={route.key}\n enabled\n style={StyleSheet.absoluteFill}\n customAnimationOnSwipe={customAnimationOnGesture}\n fullScreenSwipeEnabled={fullScreenGestureEnabled}\n gestureEnabled={\n isAndroid\n ? // This prop enables handling of system back gestures on Android\n // Since we handle them in JS side, we disable this\n false\n : gestureEnabled\n }\n homeIndicatorHidden={autoHideHomeIndicator}\n navigationBarColor={navigationBarColor}\n navigationBarHidden={navigationBarHidden}\n replaceAnimation={animationTypeForReplace}\n stackPresentation={presentation === 'card' ? 'push' : presentation}\n stackAnimation={animation}\n screenOrientation={orientation}\n statusBarAnimation={statusBarAnimation}\n statusBarHidden={statusBarHidden}\n statusBarStyle={statusBarStyle}\n statusBarColor={statusBarColor}\n statusBarTranslucent={statusBarTranslucent}\n swipeDirection={gestureDirectionOverride}\n transitionDuration={animationDuration}\n onWillDisappear={onWillDisappear}\n onAppear={onAppear}\n onDisappear={onDisappear}\n onDismissed={onDismissed}\n isNativeStack\n nativeBackButtonDismissalEnabled={false} // on Android\n onHeaderBackButtonClicked={onHeaderBackButtonClicked}\n // @ts-ignore props not exported from rn-screens\n preventNativeDismiss={isRemovePrevented} // on iOS\n onNativeDismissCancelled={onNativeDismissCancelled}\n // this prop is available since rn-screens 3.16\n freezeOnBlur={freezeOnBlur}\n >\n <NavigationContext.Provider value={navigation}>\n <NavigationRouteContext.Provider value={route}>\n <HeaderShownContext.Provider\n value={isParentHeaderShown || headerShown !== false}\n >\n <HeaderHeightContext.Provider\n value={\n headerShown !== false ? headerHeight : parentHeaderHeight ?? 0\n }\n >\n {header !== undefined && headerShown !== false ? (\n <View\n onLayout={(e) => {\n setCustomHeaderHeight(e.nativeEvent.layout.height);\n }}\n >\n {header({\n back: headerBack,\n options,\n route,\n navigation,\n })}\n </View>\n ) : (\n <HeaderConfig\n {...options}\n route={route}\n headerBackButtonMenuEnabled={\n isRemovePrevented !== undefined\n ? !isRemovePrevented\n : headerBackButtonMenuEnabled\n }\n headerShown={headerShown}\n headerHeight={headerHeight}\n headerBackTitle={\n options.headerBackTitle !== undefined\n ? options.headerBackTitle\n : undefined\n }\n headerTopInsetEnabled={headerTopInsetEnabled}\n canGoBack={headerBack !== undefined}\n />\n )}\n <MaybeNestedStack\n options={options}\n route={route}\n presentation={presentation}\n headerHeight={headerHeight}\n headerTopInsetEnabled={headerTopInsetEnabled}\n >\n <HeaderBackContext.Provider value={headerBack}>\n {render()}\n </HeaderBackContext.Provider>\n </MaybeNestedStack>\n </HeaderHeightContext.Provider>\n </HeaderShownContext.Provider>\n </NavigationRouteContext.Provider>\n </NavigationContext.Provider>\n </Screen>\n );\n};\n\ntype Props = {\n state: StackNavigationState<ParamListBase>;\n navigation: NativeStackNavigationHelpers;\n descriptors: NativeStackDescriptorMap;\n};\n\nfunction NativeStackViewInner({ state, navigation, descriptors }: Props) {\n const { setNextDismissedKey } = useDismissedRouteError(state);\n\n useInvalidPreventRemoveError(descriptors);\n\n return (\n <ScreenStack style={styles.container}>\n {state.routes.map((route, index) => {\n const descriptor = descriptors[route.key];\n const previousKey = state.routes[index - 1]?.key;\n const nextKey = state.routes[index + 1]?.key;\n const previousDescriptor = previousKey\n ? descriptors[previousKey]\n : undefined;\n const nextDescriptor = nextKey ? descriptors[nextKey] : undefined;\n\n return (\n <SceneView\n key={route.key}\n index={index}\n descriptor={descriptor}\n previousDescriptor={previousDescriptor}\n nextDescriptor={nextDescriptor}\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: '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={(event) => {\n navigation.dispatch({\n ...StackActions.pop(event.nativeEvent.dismissCount),\n source: route.key,\n target: state.key,\n });\n\n setNextDismissedKey(route.key);\n }}\n onHeaderBackButtonClicked={() => {\n navigation.dispatch({\n ...StackActions.pop(),\n source: route.key,\n target: state.key,\n });\n }}\n onNativeDismissCancelled={(event) => {\n navigation.dispatch({\n ...StackActions.pop(event.nativeEvent.dismissCount),\n source: route.key,\n target: state.key,\n });\n }}\n />\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.native.tsx"],"names":["getDefaultHeaderHeight","getHeaderTitle","HeaderBackContext","HeaderHeightContext","HeaderShownContext","SafeAreaProviderCompat","NavigationContext","NavigationRouteContext","StackActions","usePreventRemoveContext","useTheme","React","Platform","StyleSheet","View","useSafeAreaFrame","useSafeAreaInsets","Screen","ScreenStack","warnOnce","useDismissedRouteError","useInvalidPreventRemoveError","DebugContainer","HeaderConfig","isAndroid","OS","MaybeNestedStack","options","route","presentation","headerHeight","headerTopInsetEnabled","children","colors","header","headerShown","contentStyle","isHeaderInModal","undefined","headerShownPreviousRef","useRef","useEffect","current","name","content","styles","container","backgroundColor","background","absoluteFill","SceneView","descriptor","previousDescriptor","nextDescriptor","index","onWillDisappear","onAppear","onDisappear","onDismissed","onHeaderBackButtonClicked","onNativeDismissCancelled","navigation","render","animationDuration","animationTypeForReplace","gestureEnabled","headerBackButtonMenuEnabled","headerTransparent","autoHideHomeIndicator","navigationBarColor","navigationBarHidden","orientation","statusBarAnimation","statusBarHidden","statusBarStyle","statusBarTranslucent","statusBarColor","freezeOnBlur","animation","customAnimationOnGesture","fullScreenGestureEnabled","gestureDirection","nextGestureDirection","gestureDirectionOverride","insets","frame","isModal","isIPhone","isPad","isTVOS","isLandscape","width","height","isParentHeaderShown","useContext","parentHeaderHeight","parentHeaderBack","topInset","top","preventedRoutes","defaultHeaderHeight","customHeaderHeight","setCustomHeaderHeight","useState","headerBack","title","isRemovePrevented","key","preventRemove","headerBackTitle","scene","e","nativeEvent","layout","absolute","back","NativeStackViewInner","state","descriptors","setNextDismissedKey","routes","map","previousKey","nextKey","emit","type","data","closing","target","event","dispatch","pop","dismissCount","source","NativeStackView","props","create","flex","flexDirection","position","left","right"],"mappings":"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","sourcesContent":["import {\n getDefaultHeaderHeight,\n getHeaderTitle,\n HeaderBackContext,\n HeaderHeightContext,\n HeaderShownContext,\n SafeAreaProviderCompat,\n} from '@react-navigation/elements';\nimport {\n NavigationContext,\n NavigationRouteContext,\n ParamListBase,\n Route,\n StackActions,\n StackNavigationState,\n usePreventRemoveContext,\n useTheme,\n} from '@react-navigation/native';\nimport * as React from 'react';\nimport { Platform, StyleSheet, View } from 'react-native';\nimport {\n useSafeAreaFrame,\n useSafeAreaInsets,\n} from 'react-native-safe-area-context';\nimport type { ScreenProps } from 'react-native-screens';\nimport {\n Screen,\n ScreenStack,\n StackPresentationTypes,\n} from 'react-native-screens';\nimport warnOnce from 'warn-once';\n\nimport type {\n NativeStackDescriptor,\n NativeStackDescriptorMap,\n NativeStackNavigationHelpers,\n NativeStackNavigationOptions,\n} from '../types';\nimport useDismissedRouteError from '../utils/useDismissedRouteError';\nimport useInvalidPreventRemoveError from '../utils/useInvalidPreventRemoveError';\nimport DebugContainer from './DebugContainer';\nimport HeaderConfig from './HeaderConfig';\n\nconst isAndroid = Platform.OS === 'android';\n\nconst MaybeNestedStack = ({\n options,\n route,\n presentation,\n headerHeight,\n headerTopInsetEnabled,\n children,\n}: {\n options: NativeStackNavigationOptions;\n route: Route<string>;\n presentation: Exclude<StackPresentationTypes, 'push'> | 'card';\n headerHeight: number;\n headerTopInsetEnabled: boolean;\n children: React.ReactNode;\n}) => {\n const { colors } = useTheme();\n const { header, headerShown = true, contentStyle } = options;\n\n const isHeaderInModal = isAndroid\n ? false\n : presentation !== 'card' && headerShown === true && header === undefined;\n\n const headerShownPreviousRef = React.useRef(headerShown);\n\n React.useEffect(() => {\n warnOnce(\n !isAndroid &&\n presentation !== 'card' &&\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, presentation, route.name]);\n\n const content = (\n <DebugContainer\n style={[\n styles.container,\n presentation !== 'transparentModal' &&\n presentation !== 'containedTransparentModal' && {\n backgroundColor: colors.background,\n },\n contentStyle,\n ]}\n stackPresentation={presentation === 'card' ? 'push' : presentation}\n >\n {children}\n </DebugContainer>\n );\n\n if (isHeaderInModal) {\n return (\n <ScreenStack style={styles.container}>\n <Screen enabled style={StyleSheet.absoluteFill}>\n <HeaderConfig\n {...options}\n route={route}\n headerHeight={headerHeight}\n headerTopInsetEnabled={headerTopInsetEnabled}\n canGoBack\n />\n {content}\n </Screen>\n </ScreenStack>\n );\n }\n\n return content;\n};\n\ntype SceneViewProps = {\n index: number;\n descriptor: NativeStackDescriptor;\n previousDescriptor?: NativeStackDescriptor;\n nextDescriptor?: NativeStackDescriptor;\n onWillDisappear: () => void;\n onAppear: () => void;\n onDisappear: () => void;\n onDismissed: ScreenProps['onDismissed'];\n onHeaderBackButtonClicked: ScreenProps['onHeaderBackButtonClicked'];\n onNativeDismissCancelled: ScreenProps['onDismissed'];\n};\n\nconst SceneView = ({\n descriptor,\n previousDescriptor,\n nextDescriptor,\n index,\n onWillDisappear,\n onAppear,\n onDisappear,\n onDismissed,\n onHeaderBackButtonClicked,\n onNativeDismissCancelled,\n}: SceneViewProps) => {\n const { route, navigation, options, render } = descriptor;\n const {\n animationDuration,\n animationTypeForReplace = 'push',\n gestureEnabled,\n header,\n headerBackButtonMenuEnabled,\n headerShown,\n headerTransparent,\n autoHideHomeIndicator,\n navigationBarColor,\n navigationBarHidden,\n orientation,\n statusBarAnimation,\n statusBarHidden,\n statusBarStyle,\n statusBarTranslucent,\n statusBarColor,\n freezeOnBlur,\n } = options;\n\n let {\n animation,\n customAnimationOnGesture,\n fullScreenGestureEnabled,\n presentation = 'card',\n gestureDirection = presentation === 'card' ? 'horizontal' : 'vertical',\n } = options;\n\n if (gestureDirection === 'vertical' && Platform.OS === 'ios') {\n // for `vertical` direction to work, we need to set `fullScreenGestureEnabled` to `true`\n // so the screen can be dismissed from any point on screen.\n // `customAnimationOnGesture` needs to be set to `true` so the `animation` 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 (fullScreenGestureEnabled === undefined) {\n fullScreenGestureEnabled = true;\n }\n if (customAnimationOnGesture === undefined) {\n customAnimationOnGesture = true;\n }\n if (animation === undefined) {\n animation = 'slide_from_bottom';\n }\n }\n\n // workaround for rn-screens where gestureDirection has to be set on both\n // current and previous screen - software-mansion/react-native-screens/pull/1509\n const nextGestureDirection = nextDescriptor?.options.gestureDirection;\n const gestureDirectionOverride =\n nextGestureDirection != null ? nextGestureDirection : gestureDirection;\n\n if (index === 0) {\n // first screen should always be treated as `card`, it resolves problems with no header animation\n // for navigator with first screen as `modal` and the next as `card`\n presentation = 'card';\n }\n\n const insets = useSafeAreaInsets();\n const frame = useSafeAreaFrame();\n\n // `modal` and `formSheet` presentations do not take whole screen, so should not take the inset.\n const isModal = presentation === 'modal' || presentation === 'formSheet';\n\n // Modals are fullscreen in landscape only on iPhone\n const isIPhone =\n Platform.OS === 'ios' && !(Platform.isPad || Platform.isTVOS);\n const isLandscape = frame.width > frame.height;\n\n const isParentHeaderShown = React.useContext(HeaderShownContext);\n const parentHeaderHeight = React.useContext(HeaderHeightContext);\n const parentHeaderBack = React.useContext(HeaderBackContext);\n\n const topInset =\n isParentHeaderShown ||\n (Platform.OS === 'ios' && isModal) ||\n (isIPhone && isLandscape)\n ? 0\n : insets.top;\n\n const { preventedRoutes } = usePreventRemoveContext();\n\n const defaultHeaderHeight = getDefaultHeaderHeight(frame, isModal, topInset);\n\n const [customHeaderHeight, setCustomHeaderHeight] =\n React.useState(defaultHeaderHeight);\n\n const headerTopInsetEnabled = topInset !== 0;\n const headerHeight = header ? customHeaderHeight : defaultHeaderHeight;\n const headerBack = previousDescriptor\n ? {\n title: getHeaderTitle(\n previousDescriptor.options,\n previousDescriptor.route.name\n ),\n }\n : parentHeaderBack;\n\n const isRemovePrevented = preventedRoutes[route.key]?.preventRemove;\n\n return (\n <Screen\n key={route.key}\n enabled\n style={StyleSheet.absoluteFill}\n customAnimationOnSwipe={customAnimationOnGesture}\n fullScreenSwipeEnabled={fullScreenGestureEnabled}\n gestureEnabled={\n isAndroid\n ? // This prop enables handling of system back gestures on Android\n // Since we handle them in JS side, we disable this\n false\n : gestureEnabled\n }\n homeIndicatorHidden={autoHideHomeIndicator}\n navigationBarColor={navigationBarColor}\n navigationBarHidden={navigationBarHidden}\n replaceAnimation={animationTypeForReplace}\n stackPresentation={presentation === 'card' ? 'push' : presentation}\n stackAnimation={animation}\n screenOrientation={orientation}\n statusBarAnimation={statusBarAnimation}\n statusBarHidden={statusBarHidden}\n statusBarStyle={statusBarStyle}\n statusBarColor={statusBarColor}\n statusBarTranslucent={statusBarTranslucent}\n swipeDirection={gestureDirectionOverride}\n transitionDuration={animationDuration}\n onWillDisappear={onWillDisappear}\n onAppear={onAppear}\n onDisappear={onDisappear}\n onDismissed={onDismissed}\n isNativeStack\n nativeBackButtonDismissalEnabled={false} // on Android\n onHeaderBackButtonClicked={onHeaderBackButtonClicked}\n // @ts-ignore props not exported from rn-screens\n preventNativeDismiss={isRemovePrevented} // on iOS\n onNativeDismissCancelled={onNativeDismissCancelled}\n // this prop is available since rn-screens 3.16\n freezeOnBlur={freezeOnBlur}\n >\n <NavigationContext.Provider value={navigation}>\n <NavigationRouteContext.Provider value={route}>\n <HeaderShownContext.Provider\n value={isParentHeaderShown || headerShown !== false}\n >\n <HeaderHeightContext.Provider\n value={\n headerShown !== false ? headerHeight : parentHeaderHeight ?? 0\n }\n >\n {/**\n * `HeaderConfig` needs to be the direct child of `Screen` without any intermediate `View`\n * We don't render it conditionally to make it possible to dynamically render a custom `header`\n * Otherwise dynamically rendering a custom `header` leaves the native header visible\n *\n * https://github.com/software-mansion/react-native-screens/blob/main/guides/GUIDE_FOR_LIBRARY_AUTHORS.md#screenstackheaderconfig\n */}\n <HeaderConfig\n {...options}\n route={route}\n headerBackButtonMenuEnabled={\n isRemovePrevented !== undefined\n ? !isRemovePrevented\n : headerBackButtonMenuEnabled\n }\n headerShown={header !== undefined ? false : headerShown}\n headerHeight={headerHeight}\n headerBackTitle={\n options.headerBackTitle !== undefined\n ? options.headerBackTitle\n : undefined\n }\n headerTopInsetEnabled={headerTopInsetEnabled}\n canGoBack={headerBack !== undefined}\n />\n <View style={styles.scene}>\n <MaybeNestedStack\n options={options}\n route={route}\n presentation={presentation}\n headerHeight={headerHeight}\n headerTopInsetEnabled={headerTopInsetEnabled}\n >\n <HeaderBackContext.Provider value={headerBack}>\n {render()}\n </HeaderBackContext.Provider>\n </MaybeNestedStack>\n {header !== undefined && headerShown !== false ? (\n <View\n onLayout={(e) => {\n setCustomHeaderHeight(e.nativeEvent.layout.height);\n }}\n style={headerTransparent ? styles.absolute : null}\n >\n {header({\n back: headerBack,\n options,\n route,\n navigation,\n })}\n </View>\n ) : null}\n </View>\n </HeaderHeightContext.Provider>\n </HeaderShownContext.Provider>\n </NavigationRouteContext.Provider>\n </NavigationContext.Provider>\n </Screen>\n );\n};\n\ntype Props = {\n state: StackNavigationState<ParamListBase>;\n navigation: NativeStackNavigationHelpers;\n descriptors: NativeStackDescriptorMap;\n};\n\nfunction NativeStackViewInner({ state, navigation, descriptors }: Props) {\n const { setNextDismissedKey } = useDismissedRouteError(state);\n\n useInvalidPreventRemoveError(descriptors);\n\n return (\n <ScreenStack style={styles.container}>\n {state.routes.map((route, index) => {\n const descriptor = descriptors[route.key];\n const previousKey = state.routes[index - 1]?.key;\n const nextKey = state.routes[index + 1]?.key;\n const previousDescriptor = previousKey\n ? descriptors[previousKey]\n : undefined;\n const nextDescriptor = nextKey ? descriptors[nextKey] : undefined;\n\n return (\n <SceneView\n key={route.key}\n index={index}\n descriptor={descriptor}\n previousDescriptor={previousDescriptor}\n nextDescriptor={nextDescriptor}\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: '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={(event) => {\n navigation.dispatch({\n ...StackActions.pop(event.nativeEvent.dismissCount),\n source: route.key,\n target: state.key,\n });\n\n setNextDismissedKey(route.key);\n }}\n onHeaderBackButtonClicked={() => {\n navigation.dispatch({\n ...StackActions.pop(),\n source: route.key,\n target: state.key,\n });\n }}\n onNativeDismissCancelled={(event) => {\n navigation.dispatch({\n ...StackActions.pop(event.nativeEvent.dismissCount),\n source: route.key,\n target: state.key,\n });\n }}\n />\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 scene: {\n flex: 1,\n flexDirection: 'column-reverse',\n },\n absolute: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n },\n});\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@react-navigation/native-stack",
3
3
  "description": "Native stack navigator using react-native-screens",
4
- "version": "6.9.0",
4
+ "version": "6.9.1",
5
5
  "keywords": [
6
6
  "react-native-component",
7
7
  "react-component",
@@ -77,5 +77,5 @@
77
77
  ]
78
78
  ]
79
79
  },
80
- "gitHead": "fc4c3a63ab156e17db7ba0cbd32ada319f78714e"
80
+ "gitHead": "0d7d86a317460015ef1bf962b4ba5f8f97462b35"
81
81
  }
@@ -147,6 +147,7 @@ const SceneView = ({
147
147
  header,
148
148
  headerBackButtonMenuEnabled,
149
149
  headerShown,
150
+ headerTransparent,
150
151
  autoHideHomeIndicator,
151
152
  navigationBarColor,
152
153
  navigationBarHidden,
@@ -289,50 +290,59 @@ const SceneView = ({
289
290
  headerShown !== false ? headerHeight : parentHeaderHeight ?? 0
290
291
  }
291
292
  >
292
- {header !== undefined && headerShown !== false ? (
293
- <View
294
- onLayout={(e) => {
295
- setCustomHeaderHeight(e.nativeEvent.layout.height);
296
- }}
297
- >
298
- {header({
299
- back: headerBack,
300
- options,
301
- route,
302
- navigation,
303
- })}
304
- </View>
305
- ) : (
306
- <HeaderConfig
307
- {...options}
308
- route={route}
309
- headerBackButtonMenuEnabled={
310
- isRemovePrevented !== undefined
311
- ? !isRemovePrevented
312
- : headerBackButtonMenuEnabled
313
- }
314
- headerShown={headerShown}
315
- headerHeight={headerHeight}
316
- headerBackTitle={
317
- options.headerBackTitle !== undefined
318
- ? options.headerBackTitle
319
- : undefined
320
- }
321
- headerTopInsetEnabled={headerTopInsetEnabled}
322
- canGoBack={headerBack !== undefined}
323
- />
324
- )}
325
- <MaybeNestedStack
326
- options={options}
293
+ {/**
294
+ * `HeaderConfig` needs to be the direct child of `Screen` without any intermediate `View`
295
+ * We don't render it conditionally to make it possible to dynamically render a custom `header`
296
+ * Otherwise dynamically rendering a custom `header` leaves the native header visible
297
+ *
298
+ * https://github.com/software-mansion/react-native-screens/blob/main/guides/GUIDE_FOR_LIBRARY_AUTHORS.md#screenstackheaderconfig
299
+ */}
300
+ <HeaderConfig
301
+ {...options}
327
302
  route={route}
328
- presentation={presentation}
303
+ headerBackButtonMenuEnabled={
304
+ isRemovePrevented !== undefined
305
+ ? !isRemovePrevented
306
+ : headerBackButtonMenuEnabled
307
+ }
308
+ headerShown={header !== undefined ? false : headerShown}
329
309
  headerHeight={headerHeight}
310
+ headerBackTitle={
311
+ options.headerBackTitle !== undefined
312
+ ? options.headerBackTitle
313
+ : undefined
314
+ }
330
315
  headerTopInsetEnabled={headerTopInsetEnabled}
331
- >
332
- <HeaderBackContext.Provider value={headerBack}>
333
- {render()}
334
- </HeaderBackContext.Provider>
335
- </MaybeNestedStack>
316
+ canGoBack={headerBack !== undefined}
317
+ />
318
+ <View style={styles.scene}>
319
+ <MaybeNestedStack
320
+ options={options}
321
+ route={route}
322
+ presentation={presentation}
323
+ headerHeight={headerHeight}
324
+ headerTopInsetEnabled={headerTopInsetEnabled}
325
+ >
326
+ <HeaderBackContext.Provider value={headerBack}>
327
+ {render()}
328
+ </HeaderBackContext.Provider>
329
+ </MaybeNestedStack>
330
+ {header !== undefined && headerShown !== false ? (
331
+ <View
332
+ onLayout={(e) => {
333
+ setCustomHeaderHeight(e.nativeEvent.layout.height);
334
+ }}
335
+ style={headerTransparent ? styles.absolute : null}
336
+ >
337
+ {header({
338
+ back: headerBack,
339
+ options,
340
+ route,
341
+ navigation,
342
+ })}
343
+ </View>
344
+ ) : null}
345
+ </View>
336
346
  </HeaderHeightContext.Provider>
337
347
  </HeaderShownContext.Provider>
338
348
  </NavigationRouteContext.Provider>
@@ -433,4 +443,14 @@ const styles = StyleSheet.create({
433
443
  container: {
434
444
  flex: 1,
435
445
  },
446
+ scene: {
447
+ flex: 1,
448
+ flexDirection: 'column-reverse',
449
+ },
450
+ absolute: {
451
+ position: 'absolute',
452
+ top: 0,
453
+ left: 0,
454
+ right: 0,
455
+ },
436
456
  });