@react-navigation/native-stack 6.7.0 → 6.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/lib/commonjs/utils/useDismissedRouteError.js +29 -0
  2. package/lib/commonjs/utils/useDismissedRouteError.js.map +1 -0
  3. package/lib/commonjs/utils/useInvalidPreventRemoveError.js +33 -0
  4. package/lib/commonjs/utils/useInvalidPreventRemoveError.js.map +1 -0
  5. package/lib/commonjs/views/HeaderConfig.js +3 -5
  6. package/lib/commonjs/views/HeaderConfig.js.map +1 -1
  7. package/lib/commonjs/views/NativeStackView.js +9 -5
  8. package/lib/commonjs/views/NativeStackView.js.map +1 -1
  9. package/lib/commonjs/views/NativeStackView.native.js +63 -24
  10. package/lib/commonjs/views/NativeStackView.native.js.map +1 -1
  11. package/lib/module/utils/useDismissedRouteError.js +17 -0
  12. package/lib/module/utils/useDismissedRouteError.js.map +1 -0
  13. package/lib/module/utils/useInvalidPreventRemoveError.js +20 -0
  14. package/lib/module/utils/useInvalidPreventRemoveError.js.map +1 -0
  15. package/lib/module/views/HeaderConfig.js +3 -4
  16. package/lib/module/views/HeaderConfig.js.map +1 -1
  17. package/lib/module/views/NativeStackView.js +10 -6
  18. package/lib/module/views/NativeStackView.js.map +1 -1
  19. package/lib/module/views/NativeStackView.native.js +63 -26
  20. package/lib/module/views/NativeStackView.native.js.map +1 -1
  21. package/lib/typescript/src/types.d.ts +8 -0
  22. package/lib/typescript/src/utils/useDismissedRouteError.d.ts +5 -0
  23. package/lib/typescript/src/utils/useInvalidPreventRemoveError.d.ts +2 -0
  24. package/lib/typescript/src/views/HeaderConfig.d.ts +2 -1
  25. package/package.json +11 -9
  26. package/src/types.tsx +8 -0
  27. package/src/utils/useDismissedRouteError.tsx +30 -0
  28. package/src/utils/useInvalidPreventRemoveError.tsx +31 -0
  29. package/src/views/HeaderConfig.tsx +4 -5
  30. package/src/views/NativeStackView.native.tsx +77 -38
  31. package/src/views/NativeStackView.tsx +20 -12
@@ -1 +1 @@
1
- {"version":3,"sources":["NativeStackView.native.tsx"],"names":["isAndroid","Platform","OS","MaybeNestedStack","options","route","presentation","headerHeight","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","navigation","render","animationDuration","animationTypeForReplace","gestureEnabled","autoHideHomeIndicator","navigationBarColor","navigationBarHidden","orientation","statusBarAnimation","statusBarHidden","statusBarStyle","statusBarTranslucent","statusBarColor","animation","customAnimationOnGesture","fullScreenGestureEnabled","gestureDirection","nextGestureDirection","gestureDirectionOverride","isHeaderInPush","insets","frame","isModal","isIPhone","isPad","isTVOS","isLandscape","width","height","topInset","top","isParentHeaderShown","useContext","HeaderShownContext","parentHeaderHeight","HeaderHeightContext","defaultHeaderHeight","customHeaderHeight","setCustomHeaderHeight","useState","key","e","nativeEvent","layout","back","title","NativeStackViewInner","state","descriptors","nextDismissedKey","setNextDismissedKey","dismissedRouteName","routes","find","message","console","error","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 HeaderHeightContext,\n HeaderShownContext,\n SafeAreaProviderCompat,\n} from '@react-navigation/elements';\nimport {\n NavigationContext,\n NavigationRouteContext,\n ParamListBase,\n Route,\n StackActions,\n StackNavigationState,\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 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 children,\n}: {\n options: NativeStackNavigationOptions;\n route: Route<string>;\n presentation: Exclude<StackPresentationTypes, 'push'> | 'card';\n headerHeight: number;\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 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};\n\nconst SceneView = ({\n descriptor,\n previousDescriptor,\n nextDescriptor,\n index,\n onWillDisappear,\n onAppear,\n onDisappear,\n onDismissed,\n}: SceneViewProps) => {\n const { route, navigation, options, render } = descriptor;\n const {\n animationDuration,\n animationTypeForReplace = 'push',\n gestureEnabled,\n header,\n headerShown,\n autoHideHomeIndicator,\n navigationBarColor,\n navigationBarHidden,\n orientation,\n statusBarAnimation,\n statusBarHidden,\n statusBarStyle,\n statusBarTranslucent,\n statusBarColor,\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 isHeaderInPush = isAndroid\n ? headerShown\n : presentation === 'card' && headerShown !== false;\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 topInset = isModal || (isIPhone && isLandscape) ? 0 : insets.top;\n\n const isParentHeaderShown = React.useContext(HeaderShownContext);\n const parentHeaderHeight = React.useContext(HeaderHeightContext);\n\n const defaultHeaderHeight = getDefaultHeaderHeight(frame, isModal, topInset);\n\n const [customHeaderHeight, setCustomHeaderHeight] =\n React.useState(defaultHeaderHeight);\n\n const headerHeight = header ? customHeaderHeight : defaultHeaderHeight;\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 >\n <NavigationContext.Provider value={navigation}>\n <NavigationRouteContext.Provider value={route}>\n <HeaderShownContext.Provider\n value={isParentHeaderShown || isHeaderInPush !== false}\n >\n <HeaderHeightContext.Provider\n value={\n isHeaderInPush !== false\n ? headerHeight\n : 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: previousDescriptor\n ? {\n title: getHeaderTitle(\n previousDescriptor.options,\n previousDescriptor.route.name\n ),\n }\n : undefined,\n options,\n route,\n navigation,\n })}\n </View>\n ) : (\n <HeaderConfig\n {...options}\n route={route}\n headerShown={isHeaderInPush}\n headerHeight={headerHeight}\n canGoBack={index !== 0}\n />\n )}\n <MaybeNestedStack\n options={options}\n route={route}\n presentation={presentation}\n headerHeight={headerHeight}\n >\n {render()}\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 [nextDismissedKey, setNextDismissedKey] = React.useState<string | null>(\n null\n );\n\n const dismissedRouteName = nextDismissedKey\n ? state.routes.find((route) => route.key === nextDismissedKey)?.name\n : null;\n\n React.useEffect(() => {\n if (dismissedRouteName) {\n const message =\n `The screen '${dismissedRouteName}' was removed natively but didn't get removed from JS state. ` +\n `This can happen if the action was prevented in a 'beforeRemove' listener, which is not fully supported in native-stack.\\n\\n` +\n `Consider using 'gestureEnabled: false' to prevent back gesture and use a custom back button with 'headerLeft' option to override the native behavior.`;\n\n console.error(message);\n }\n }, [dismissedRouteName]);\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 />\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","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"]}
@@ -0,0 +1,17 @@
1
+ import * as React from 'react';
2
+ export default function useInvalidPreventRemoveError(state) {
3
+ var _state$routes$find;
4
+
5
+ const [nextDismissedKey, setNextDismissedKey] = React.useState(null);
6
+ const dismissedRouteName = nextDismissedKey ? (_state$routes$find = state.routes.find(route => route.key === nextDismissedKey)) === null || _state$routes$find === void 0 ? void 0 : _state$routes$find.name : null;
7
+ React.useEffect(() => {
8
+ if (dismissedRouteName) {
9
+ const message = `The screen '${dismissedRouteName}' was removed natively but didn't get removed from JS state. ` + `This can happen if the action was prevented in a 'beforeRemove' listener, which is not fully supported in native-stack.\n\n` + `Consider using a 'usePreventRemove' hook with 'headerBackButtonMenuEnabled: false' to prevent users from natively going back multiple screens.`;
10
+ console.error(message);
11
+ }
12
+ }, [dismissedRouteName]);
13
+ return {
14
+ setNextDismissedKey
15
+ };
16
+ }
17
+ //# sourceMappingURL=useDismissedRouteError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["useDismissedRouteError.tsx"],"names":["React","useInvalidPreventRemoveError","state","nextDismissedKey","setNextDismissedKey","useState","dismissedRouteName","routes","find","route","key","name","useEffect","message","console","error"],"mappings":"AAIA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAEA,eAAe,SAASC,4BAAT,CACbC,KADa,EAEb;AAAA;;AACA,QAAM,CAACC,gBAAD,EAAmBC,mBAAnB,IAA0CJ,KAAK,CAACK,QAAN,CAC9C,IAD8C,CAAhD;AAIA,QAAMC,kBAAkB,GAAGH,gBAAgB,yBACvCD,KAAK,CAACK,MAAN,CAAaC,IAAb,CAAmBC,KAAD,IAAWA,KAAK,CAACC,GAAN,KAAcP,gBAA3C,CADuC,uDACvC,mBAA8DQ,IADvB,GAEvC,IAFJ;AAIAX,EAAAA,KAAK,CAACY,SAAN,CAAgB,MAAM;AACpB,QAAIN,kBAAJ,EAAwB;AACtB,YAAMO,OAAO,GACV,eAAcP,kBAAmB,+DAAlC,GACC,6HADD,GAEC,gJAHH;AAKAQ,MAAAA,OAAO,CAACC,KAAR,CAAcF,OAAd;AACD;AACF,GATD,EASG,CAACP,kBAAD,CATH;AAWA,SAAO;AAAEF,IAAAA;AAAF,GAAP;AACD","sourcesContent":["import type {\n ParamListBase,\n StackNavigationState,\n} from '@react-navigation/native';\nimport * as React from 'react';\n\nexport default function useInvalidPreventRemoveError(\n state: StackNavigationState<ParamListBase>\n) {\n const [nextDismissedKey, setNextDismissedKey] = React.useState<string | null>(\n null\n );\n\n const dismissedRouteName = nextDismissedKey\n ? state.routes.find((route) => route.key === nextDismissedKey)?.name\n : null;\n\n React.useEffect(() => {\n if (dismissedRouteName) {\n const message =\n `The screen '${dismissedRouteName}' was removed natively but didn't get removed from JS state. ` +\n `This can happen if the action was prevented in a 'beforeRemove' listener, which is not fully supported in native-stack.\\n\\n` +\n `Consider using a 'usePreventRemove' hook with 'headerBackButtonMenuEnabled: false' to prevent users from natively going back multiple screens.`;\n\n console.error(message);\n }\n }, [dismissedRouteName]);\n\n return { setNextDismissedKey };\n}\n"]}
@@ -0,0 +1,20 @@
1
+ import { usePreventRemoveContext } from '@react-navigation/native';
2
+ import * as React from 'react';
3
+ export default function useInvalidPreventRemoveError(descriptors) {
4
+ var _preventedDescriptor$, _preventedDescriptor$2;
5
+
6
+ const {
7
+ preventedRoutes
8
+ } = usePreventRemoveContext();
9
+ const preventedRouteKey = Object.keys(preventedRoutes)[0];
10
+ const preventedDescriptor = descriptors[preventedRouteKey];
11
+ const isHeaderBackButtonMenuEnabledOnPreventedScreen = preventedDescriptor === null || preventedDescriptor === void 0 ? void 0 : (_preventedDescriptor$ = preventedDescriptor.options) === null || _preventedDescriptor$ === void 0 ? void 0 : _preventedDescriptor$.headerBackButtonMenuEnabled;
12
+ const preventedRouteName = preventedDescriptor === null || preventedDescriptor === void 0 ? void 0 : (_preventedDescriptor$2 = preventedDescriptor.route) === null || _preventedDescriptor$2 === void 0 ? void 0 : _preventedDescriptor$2.name;
13
+ React.useEffect(() => {
14
+ if (preventedRouteKey != null && isHeaderBackButtonMenuEnabledOnPreventedScreen) {
15
+ const message = `The screen ${preventedRouteName} uses 'usePreventRemove' hook alongside 'headerBackButtonMenuEnabled: true', which is not supported. \n\n` + `Consider removing 'headerBackButtonMenuEnabled: true' from ${preventedRouteName} screen to get rid of this error.`;
16
+ console.error(message);
17
+ }
18
+ }, [preventedRouteKey, isHeaderBackButtonMenuEnabledOnPreventedScreen, preventedRouteName]);
19
+ }
20
+ //# sourceMappingURL=useInvalidPreventRemoveError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["useInvalidPreventRemoveError.tsx"],"names":["usePreventRemoveContext","React","useInvalidPreventRemoveError","descriptors","preventedRoutes","preventedRouteKey","Object","keys","preventedDescriptor","isHeaderBackButtonMenuEnabledOnPreventedScreen","options","headerBackButtonMenuEnabled","preventedRouteName","route","name","useEffect","message","console","error"],"mappings":"AAAA,SAASA,uBAAT,QAAwC,0BAAxC;AACA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AAIA,eAAe,SAASC,4BAAT,CACbC,WADa,EAEb;AAAA;;AACA,QAAM;AAAEC,IAAAA;AAAF,MAAsBJ,uBAAuB,EAAnD;AACA,QAAMK,iBAAiB,GAAGC,MAAM,CAACC,IAAP,CAAYH,eAAZ,EAA6B,CAA7B,CAA1B;AACA,QAAMI,mBAAmB,GAAGL,WAAW,CAACE,iBAAD,CAAvC;AACA,QAAMI,8CAA8C,GAClDD,mBADkD,aAClDA,mBADkD,gDAClDA,mBAAmB,CAAEE,OAD6B,0DAClD,sBAA8BC,2BADhC;AAEA,QAAMC,kBAAkB,GAAGJ,mBAAH,aAAGA,mBAAH,iDAAGA,mBAAmB,CAAEK,KAAxB,2DAAG,uBAA4BC,IAAvD;AAEAb,EAAAA,KAAK,CAACc,SAAN,CAAgB,MAAM;AACpB,QACEV,iBAAiB,IAAI,IAArB,IACAI,8CAFF,EAGE;AACA,YAAMO,OAAO,GACV,cAAaJ,kBAAmB,2GAAjC,GACC,8DAA6DA,kBAAmB,mCAFnF;AAGAK,MAAAA,OAAO,CAACC,KAAR,CAAcF,OAAd;AACD;AACF,GAVD,EAUG,CACDX,iBADC,EAEDI,8CAFC,EAGDG,kBAHC,CAVH;AAeD","sourcesContent":["import { usePreventRemoveContext } from '@react-navigation/native';\nimport * as React from 'react';\n\nimport type { NativeStackDescriptorMap } from '../types';\n\nexport default function useInvalidPreventRemoveError(\n descriptors: NativeStackDescriptorMap\n) {\n const { preventedRoutes } = usePreventRemoveContext();\n const preventedRouteKey = Object.keys(preventedRoutes)[0];\n const preventedDescriptor = descriptors[preventedRouteKey];\n const isHeaderBackButtonMenuEnabledOnPreventedScreen =\n preventedDescriptor?.options?.headerBackButtonMenuEnabled;\n const preventedRouteName = preventedDescriptor?.route?.name;\n\n React.useEffect(() => {\n if (\n preventedRouteKey != null &&\n isHeaderBackButtonMenuEnabledOnPreventedScreen\n ) {\n const message =\n `The screen ${preventedRouteName} uses 'usePreventRemove' hook alongside 'headerBackButtonMenuEnabled: true', which is not supported. \\n\\n` +\n `Consider removing 'headerBackButtonMenuEnabled: true' from ${preventedRouteName} screen to get rid of this error.`;\n console.error(message);\n }\n }, [\n preventedRouteKey,\n isHeaderBackButtonMenuEnabledOnPreventedScreen,\n preventedRouteName,\n ]);\n}\n"]}
@@ -2,7 +2,6 @@ import { getHeaderTitle, HeaderTitle } from '@react-navigation/elements';
2
2
  import { useTheme } from '@react-navigation/native';
3
3
  import * as React from 'react';
4
4
  import { I18nManager, Platform, StyleSheet, View } from 'react-native';
5
- import { useSafeAreaInsets } from 'react-native-safe-area-context';
6
5
  import { isSearchBarAvailableForCurrentPlatform, ScreenStackHeaderBackButtonImage, ScreenStackHeaderCenterView, ScreenStackHeaderConfig, ScreenStackHeaderLeftView, ScreenStackHeaderRightView, ScreenStackHeaderSearchBarView, SearchBar } from 'react-native-screens';
7
6
  import { processFonts } from './FontProcessor';
8
7
  export default function HeaderConfig(_ref) {
@@ -33,11 +32,11 @@ export default function HeaderConfig(_ref) {
33
32
  headerTitleStyle,
34
33
  headerTransparent,
35
34
  headerSearchBarOptions,
35
+ headerTopInsetEnabled,
36
36
  route,
37
37
  title,
38
38
  canGoBack
39
39
  } = _ref;
40
- const insets = useSafeAreaInsets();
41
40
  const {
42
41
  colors
43
42
  } = useTheme();
@@ -113,7 +112,7 @@ export default function HeaderConfig(_ref) {
113
112
  backTitleFontSize: headerBackTitleStyleFlattened.fontSize,
114
113
  blurEffect: headerBlurEffect,
115
114
  color: tintColor,
116
- direction: I18nManager.isRTL ? 'rtl' : 'ltr',
115
+ direction: I18nManager.getConstants().isRTL ? 'rtl' : 'ltr',
117
116
  disableBackButtonMenu: headerBackButtonMenuEnabled === false,
118
117
  hidden: headerShown === false,
119
118
  hideBackButton: headerBackVisible === false,
@@ -130,7 +129,7 @@ export default function HeaderConfig(_ref) {
130
129
  titleFontFamily: titleFontFamily,
131
130
  titleFontSize: titleFontSize,
132
131
  titleFontWeight: titleFontWeight,
133
- topInsetEnabled: insets.top !== 0,
132
+ topInsetEnabled: headerTopInsetEnabled,
134
133
  translucent: // This defaults to `true`, so we can't pass `undefined`
135
134
  translucent === true
136
135
  }, Platform.OS === 'ios' ? /*#__PURE__*/React.createElement(React.Fragment, null, headerLeftElement != null ? /*#__PURE__*/React.createElement(ScreenStackHeaderLeftView, null, headerLeftElement) : null, headerTitleElement != null ? /*#__PURE__*/React.createElement(ScreenStackHeaderCenterView, null, headerTitleElement) : null) : /*#__PURE__*/React.createElement(React.Fragment, null, headerLeftElement != null || typeof headerTitle === 'function' ? /*#__PURE__*/React.createElement(ScreenStackHeaderLeftView, null, /*#__PURE__*/React.createElement(View, {
@@ -1 +1 @@
1
- {"version":3,"sources":["HeaderConfig.tsx"],"names":["getHeaderTitle","HeaderTitle","useTheme","React","I18nManager","Platform","StyleSheet","View","useSafeAreaInsets","isSearchBarAvailableForCurrentPlatform","ScreenStackHeaderBackButtonImage","ScreenStackHeaderCenterView","ScreenStackHeaderConfig","ScreenStackHeaderLeftView","ScreenStackHeaderRightView","ScreenStackHeaderSearchBarView","SearchBar","processFonts","HeaderConfig","headerHeight","headerBackImageSource","headerBackButtonMenuEnabled","headerBackTitle","headerBackTitleStyle","headerBackTitleVisible","headerBackVisible","headerShadowVisible","headerLargeStyle","headerLargeTitle","headerLargeTitleShadowVisible","headerLargeTitleStyle","headerBackground","headerLeft","headerRight","headerShown","headerStyle","headerBlurEffect","headerTintColor","headerTitle","headerTitleAlign","headerTitleStyle","headerTransparent","headerSearchBarOptions","route","title","canGoBack","insets","colors","tintColor","OS","primary","text","headerBackTitleStyleFlattened","flatten","headerLargeTitleStyleFlattened","headerTitleStyleFlattened","headerStyleFlattened","headerLargeStyleFlattened","backTitleFontFamily","largeTitleFontFamily","titleFontFamily","fontFamily","titleText","name","titleColor","color","titleFontSize","fontSize","titleFontWeight","fontWeight","headerTitleStyleSupported","headerLeftElement","label","headerRightElement","headerTitleElement","children","supportsHeaderSearchBar","hasHeaderSearchBar","Error","backButtonInCustomView","translucent","styles","background","height","backgroundColor","card","isRTL","top","row","undefined","create","flexDirection","alignItems","position","left","right","zIndex","overflow"],"mappings":"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","sourcesContent":["import { getHeaderTitle, HeaderTitle } from '@react-navigation/elements';\nimport { Route, useTheme } from '@react-navigation/native';\nimport * as React from 'react';\nimport {\n I18nManager,\n Platform,\n StyleSheet,\n TextStyle,\n View,\n} from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport {\n isSearchBarAvailableForCurrentPlatform,\n ScreenStackHeaderBackButtonImage,\n ScreenStackHeaderCenterView,\n ScreenStackHeaderConfig,\n ScreenStackHeaderLeftView,\n ScreenStackHeaderRightView,\n ScreenStackHeaderSearchBarView,\n SearchBar,\n} from 'react-native-screens';\n\nimport type { NativeStackNavigationOptions } from '../types';\nimport { processFonts } from './FontProcessor';\n\ntype Props = NativeStackNavigationOptions & {\n headerHeight: number;\n route: Route<string>;\n canGoBack: boolean;\n};\n\nexport default function HeaderConfig({\n headerHeight,\n headerBackImageSource,\n headerBackButtonMenuEnabled,\n headerBackTitle,\n headerBackTitleStyle,\n headerBackTitleVisible = true,\n headerBackVisible,\n headerShadowVisible,\n headerLargeStyle,\n headerLargeTitle,\n headerLargeTitleShadowVisible,\n headerLargeTitleStyle,\n headerBackground,\n headerLeft,\n headerRight,\n headerShown,\n headerStyle,\n headerBlurEffect,\n headerTintColor,\n headerTitle,\n headerTitleAlign,\n headerTitleStyle,\n headerTransparent,\n headerSearchBarOptions,\n route,\n title,\n canGoBack,\n}: Props): JSX.Element {\n const insets = useSafeAreaInsets();\n\n const { colors } = useTheme();\n const tintColor =\n headerTintColor ?? (Platform.OS === 'ios' ? colors.primary : colors.text);\n\n const headerBackTitleStyleFlattened =\n StyleSheet.flatten(headerBackTitleStyle) || {};\n const headerLargeTitleStyleFlattened =\n StyleSheet.flatten(headerLargeTitleStyle) || {};\n const headerTitleStyleFlattened = StyleSheet.flatten(headerTitleStyle) || {};\n const headerStyleFlattened = StyleSheet.flatten(headerStyle) || {};\n const headerLargeStyleFlattened = StyleSheet.flatten(headerLargeStyle) || {};\n\n const [backTitleFontFamily, largeTitleFontFamily, titleFontFamily] =\n processFonts([\n headerBackTitleStyleFlattened.fontFamily,\n headerLargeTitleStyleFlattened.fontFamily,\n headerTitleStyleFlattened.fontFamily,\n ]);\n\n const titleText = getHeaderTitle({ title, headerTitle }, route.name);\n const titleColor =\n headerTitleStyleFlattened.color ?? headerTintColor ?? colors.text;\n const titleFontSize = headerTitleStyleFlattened.fontSize;\n const titleFontWeight = headerTitleStyleFlattened.fontWeight;\n\n const headerTitleStyleSupported: TextStyle = { color: titleColor };\n\n if (headerTitleStyleFlattened.fontFamily != null) {\n headerTitleStyleSupported.fontFamily = headerTitleStyleFlattened.fontFamily;\n }\n\n if (titleFontSize != null) {\n headerTitleStyleSupported.fontSize = titleFontSize;\n }\n\n if (titleFontWeight != null) {\n headerTitleStyleSupported.fontWeight = titleFontWeight;\n }\n\n const headerLeftElement = headerLeft?.({\n tintColor,\n canGoBack,\n label: headerBackTitle,\n });\n const headerRightElement = headerRight?.({\n tintColor,\n canGoBack,\n });\n const headerTitleElement =\n typeof headerTitle === 'function'\n ? headerTitle({\n tintColor,\n children: titleText,\n })\n : null;\n\n const supportsHeaderSearchBar =\n typeof isSearchBarAvailableForCurrentPlatform === 'boolean'\n ? isSearchBarAvailableForCurrentPlatform\n : // Fallback for older versions of react-native-screens\n Platform.OS === 'ios' && SearchBar != null;\n\n const hasHeaderSearchBar =\n supportsHeaderSearchBar && headerSearchBarOptions != null;\n\n if (headerSearchBarOptions != null && !supportsHeaderSearchBar) {\n throw new Error(\n `The current version of 'react-native-screens' doesn't support SearchBar in the header. Please update to the latest version to use this option.`\n );\n }\n\n /**\n * We need to set this in if:\n * - Back button should stay visible when `headerLeft` is specified\n * - If `headerTitle` for Android is specified, so we only need to remove the title and keep the back button\n */\n const backButtonInCustomView = headerBackVisible\n ? headerLeftElement != null\n : Platform.OS === 'android' && headerTitleElement != null;\n\n const translucent =\n headerBackground != null ||\n headerTransparent ||\n // When using a SearchBar or large title, the header needs to be translucent for it to work on iOS\n ((hasHeaderSearchBar || headerLargeTitle) &&\n Platform.OS === 'ios' &&\n headerTransparent !== false);\n\n return (\n <>\n {headerBackground != null ? (\n <View\n style={[\n styles.background,\n headerTransparent ? styles.translucent : null,\n { height: headerHeight },\n ]}\n >\n {headerBackground()}\n </View>\n ) : null}\n <ScreenStackHeaderConfig\n backButtonInCustomView={backButtonInCustomView}\n backgroundColor={\n headerStyleFlattened.backgroundColor ??\n (headerBackground != null || headerTransparent\n ? 'transparent'\n : colors.card)\n }\n backTitle={headerBackTitleVisible ? headerBackTitle : ' '}\n backTitleFontFamily={backTitleFontFamily}\n backTitleFontSize={headerBackTitleStyleFlattened.fontSize}\n blurEffect={headerBlurEffect}\n color={tintColor}\n direction={I18nManager.isRTL ? 'rtl' : 'ltr'}\n disableBackButtonMenu={headerBackButtonMenuEnabled === false}\n hidden={headerShown === false}\n hideBackButton={headerBackVisible === false}\n hideShadow={\n headerShadowVisible === false ||\n headerBackground != null ||\n headerTransparent\n }\n largeTitle={headerLargeTitle}\n largeTitleBackgroundColor={headerLargeStyleFlattened.backgroundColor}\n largeTitleColor={headerLargeTitleStyleFlattened.color}\n largeTitleFontFamily={largeTitleFontFamily}\n largeTitleFontSize={headerLargeTitleStyleFlattened.fontSize}\n largeTitleFontWeight={headerLargeTitleStyleFlattened.fontWeight}\n largeTitleHideShadow={headerLargeTitleShadowVisible === false}\n title={titleText}\n titleColor={titleColor}\n titleFontFamily={titleFontFamily}\n titleFontSize={titleFontSize}\n titleFontWeight={titleFontWeight}\n topInsetEnabled={insets.top !== 0}\n translucent={\n // This defaults to `true`, so we can't pass `undefined`\n translucent === true\n }\n >\n {Platform.OS === 'ios' ? (\n <>\n {headerLeftElement != null ? (\n <ScreenStackHeaderLeftView>\n {headerLeftElement}\n </ScreenStackHeaderLeftView>\n ) : null}\n {headerTitleElement != null ? (\n <ScreenStackHeaderCenterView>\n {headerTitleElement}\n </ScreenStackHeaderCenterView>\n ) : null}\n </>\n ) : (\n <>\n {headerLeftElement != null || typeof headerTitle === 'function' ? (\n <ScreenStackHeaderLeftView>\n <View style={styles.row}>\n {headerLeftElement}\n {headerTitleAlign !== 'center' ? (\n typeof headerTitle === 'function' ? (\n headerTitleElement\n ) : (\n <HeaderTitle\n tintColor={tintColor}\n style={headerTitleStyleSupported}\n >\n {titleText}\n </HeaderTitle>\n )\n ) : null}\n </View>\n </ScreenStackHeaderLeftView>\n ) : null}\n {headerTitleAlign === 'center' ? (\n <ScreenStackHeaderCenterView>\n {typeof headerTitle === 'function' ? (\n headerTitleElement\n ) : (\n <HeaderTitle\n tintColor={tintColor}\n style={headerTitleStyleSupported}\n >\n {titleText}\n </HeaderTitle>\n )}\n </ScreenStackHeaderCenterView>\n ) : null}\n </>\n )}\n {headerBackImageSource !== undefined ? (\n <ScreenStackHeaderBackButtonImage source={headerBackImageSource} />\n ) : null}\n {headerRightElement != null ? (\n <ScreenStackHeaderRightView>\n {headerRightElement}\n </ScreenStackHeaderRightView>\n ) : null}\n {hasHeaderSearchBar ? (\n <ScreenStackHeaderSearchBarView>\n <SearchBar {...headerSearchBarOptions} />\n </ScreenStackHeaderSearchBarView>\n ) : null}\n </ScreenStackHeaderConfig>\n </>\n );\n}\n\nconst styles = StyleSheet.create({\n row: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n translucent: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n zIndex: 1,\n },\n background: {\n overflow: 'hidden',\n },\n});\n"]}
1
+ {"version":3,"sources":["HeaderConfig.tsx"],"names":["getHeaderTitle","HeaderTitle","useTheme","React","I18nManager","Platform","StyleSheet","View","isSearchBarAvailableForCurrentPlatform","ScreenStackHeaderBackButtonImage","ScreenStackHeaderCenterView","ScreenStackHeaderConfig","ScreenStackHeaderLeftView","ScreenStackHeaderRightView","ScreenStackHeaderSearchBarView","SearchBar","processFonts","HeaderConfig","headerHeight","headerBackImageSource","headerBackButtonMenuEnabled","headerBackTitle","headerBackTitleStyle","headerBackTitleVisible","headerBackVisible","headerShadowVisible","headerLargeStyle","headerLargeTitle","headerLargeTitleShadowVisible","headerLargeTitleStyle","headerBackground","headerLeft","headerRight","headerShown","headerStyle","headerBlurEffect","headerTintColor","headerTitle","headerTitleAlign","headerTitleStyle","headerTransparent","headerSearchBarOptions","headerTopInsetEnabled","route","title","canGoBack","colors","tintColor","OS","primary","text","headerBackTitleStyleFlattened","flatten","headerLargeTitleStyleFlattened","headerTitleStyleFlattened","headerStyleFlattened","headerLargeStyleFlattened","backTitleFontFamily","largeTitleFontFamily","titleFontFamily","fontFamily","titleText","name","titleColor","color","titleFontSize","fontSize","titleFontWeight","fontWeight","headerTitleStyleSupported","headerLeftElement","label","headerRightElement","headerTitleElement","children","supportsHeaderSearchBar","hasHeaderSearchBar","Error","backButtonInCustomView","translucent","styles","background","height","backgroundColor","card","getConstants","isRTL","row","undefined","create","flexDirection","alignItems","position","top","left","right","zIndex","overflow"],"mappings":"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","sourcesContent":["import { getHeaderTitle, HeaderTitle } from '@react-navigation/elements';\nimport { Route, useTheme } from '@react-navigation/native';\nimport * as React from 'react';\nimport {\n I18nManager,\n Platform,\n StyleSheet,\n TextStyle,\n View,\n} from 'react-native';\nimport {\n isSearchBarAvailableForCurrentPlatform,\n ScreenStackHeaderBackButtonImage,\n ScreenStackHeaderCenterView,\n ScreenStackHeaderConfig,\n ScreenStackHeaderLeftView,\n ScreenStackHeaderRightView,\n ScreenStackHeaderSearchBarView,\n SearchBar,\n} from 'react-native-screens';\n\nimport type { NativeStackNavigationOptions } from '../types';\nimport { processFonts } from './FontProcessor';\n\ntype Props = NativeStackNavigationOptions & {\n headerTopInsetEnabled: boolean;\n headerHeight: number;\n route: Route<string>;\n canGoBack: boolean;\n};\n\nexport default function HeaderConfig({\n headerHeight,\n headerBackImageSource,\n headerBackButtonMenuEnabled,\n headerBackTitle,\n headerBackTitleStyle,\n headerBackTitleVisible = true,\n headerBackVisible,\n headerShadowVisible,\n headerLargeStyle,\n headerLargeTitle,\n headerLargeTitleShadowVisible,\n headerLargeTitleStyle,\n headerBackground,\n headerLeft,\n headerRight,\n headerShown,\n headerStyle,\n headerBlurEffect,\n headerTintColor,\n headerTitle,\n headerTitleAlign,\n headerTitleStyle,\n headerTransparent,\n headerSearchBarOptions,\n headerTopInsetEnabled,\n route,\n title,\n canGoBack,\n}: Props): JSX.Element {\n const { colors } = useTheme();\n const tintColor =\n headerTintColor ?? (Platform.OS === 'ios' ? colors.primary : colors.text);\n\n const headerBackTitleStyleFlattened =\n StyleSheet.flatten(headerBackTitleStyle) || {};\n const headerLargeTitleStyleFlattened =\n StyleSheet.flatten(headerLargeTitleStyle) || {};\n const headerTitleStyleFlattened = StyleSheet.flatten(headerTitleStyle) || {};\n const headerStyleFlattened = StyleSheet.flatten(headerStyle) || {};\n const headerLargeStyleFlattened = StyleSheet.flatten(headerLargeStyle) || {};\n\n const [backTitleFontFamily, largeTitleFontFamily, titleFontFamily] =\n processFonts([\n headerBackTitleStyleFlattened.fontFamily,\n headerLargeTitleStyleFlattened.fontFamily,\n headerTitleStyleFlattened.fontFamily,\n ]);\n\n const titleText = getHeaderTitle({ title, headerTitle }, route.name);\n const titleColor =\n headerTitleStyleFlattened.color ?? headerTintColor ?? colors.text;\n const titleFontSize = headerTitleStyleFlattened.fontSize;\n const titleFontWeight = headerTitleStyleFlattened.fontWeight;\n\n const headerTitleStyleSupported: TextStyle = { color: titleColor };\n\n if (headerTitleStyleFlattened.fontFamily != null) {\n headerTitleStyleSupported.fontFamily = headerTitleStyleFlattened.fontFamily;\n }\n\n if (titleFontSize != null) {\n headerTitleStyleSupported.fontSize = titleFontSize;\n }\n\n if (titleFontWeight != null) {\n headerTitleStyleSupported.fontWeight = titleFontWeight;\n }\n\n const headerLeftElement = headerLeft?.({\n tintColor,\n canGoBack,\n label: headerBackTitle,\n });\n const headerRightElement = headerRight?.({\n tintColor,\n canGoBack,\n });\n const headerTitleElement =\n typeof headerTitle === 'function'\n ? headerTitle({\n tintColor,\n children: titleText,\n })\n : null;\n\n const supportsHeaderSearchBar =\n typeof isSearchBarAvailableForCurrentPlatform === 'boolean'\n ? isSearchBarAvailableForCurrentPlatform\n : // Fallback for older versions of react-native-screens\n Platform.OS === 'ios' && SearchBar != null;\n\n const hasHeaderSearchBar =\n supportsHeaderSearchBar && headerSearchBarOptions != null;\n\n if (headerSearchBarOptions != null && !supportsHeaderSearchBar) {\n throw new Error(\n `The current version of 'react-native-screens' doesn't support SearchBar in the header. Please update to the latest version to use this option.`\n );\n }\n\n /**\n * We need to set this in if:\n * - Back button should stay visible when `headerLeft` is specified\n * - If `headerTitle` for Android is specified, so we only need to remove the title and keep the back button\n */\n const backButtonInCustomView = headerBackVisible\n ? headerLeftElement != null\n : Platform.OS === 'android' && headerTitleElement != null;\n\n const translucent =\n headerBackground != null ||\n headerTransparent ||\n // When using a SearchBar or large title, the header needs to be translucent for it to work on iOS\n ((hasHeaderSearchBar || headerLargeTitle) &&\n Platform.OS === 'ios' &&\n headerTransparent !== false);\n\n return (\n <>\n {headerBackground != null ? (\n <View\n style={[\n styles.background,\n headerTransparent ? styles.translucent : null,\n { height: headerHeight },\n ]}\n >\n {headerBackground()}\n </View>\n ) : null}\n <ScreenStackHeaderConfig\n backButtonInCustomView={backButtonInCustomView}\n backgroundColor={\n headerStyleFlattened.backgroundColor ??\n (headerBackground != null || headerTransparent\n ? 'transparent'\n : colors.card)\n }\n backTitle={headerBackTitleVisible ? headerBackTitle : ' '}\n backTitleFontFamily={backTitleFontFamily}\n backTitleFontSize={headerBackTitleStyleFlattened.fontSize}\n blurEffect={headerBlurEffect}\n color={tintColor}\n direction={I18nManager.getConstants().isRTL ? 'rtl' : 'ltr'}\n disableBackButtonMenu={headerBackButtonMenuEnabled === false}\n hidden={headerShown === false}\n hideBackButton={headerBackVisible === false}\n hideShadow={\n headerShadowVisible === false ||\n headerBackground != null ||\n headerTransparent\n }\n largeTitle={headerLargeTitle}\n largeTitleBackgroundColor={headerLargeStyleFlattened.backgroundColor}\n largeTitleColor={headerLargeTitleStyleFlattened.color}\n largeTitleFontFamily={largeTitleFontFamily}\n largeTitleFontSize={headerLargeTitleStyleFlattened.fontSize}\n largeTitleFontWeight={headerLargeTitleStyleFlattened.fontWeight}\n largeTitleHideShadow={headerLargeTitleShadowVisible === false}\n title={titleText}\n titleColor={titleColor}\n titleFontFamily={titleFontFamily}\n titleFontSize={titleFontSize}\n titleFontWeight={titleFontWeight}\n topInsetEnabled={headerTopInsetEnabled}\n translucent={\n // This defaults to `true`, so we can't pass `undefined`\n translucent === true\n }\n >\n {Platform.OS === 'ios' ? (\n <>\n {headerLeftElement != null ? (\n <ScreenStackHeaderLeftView>\n {headerLeftElement}\n </ScreenStackHeaderLeftView>\n ) : null}\n {headerTitleElement != null ? (\n <ScreenStackHeaderCenterView>\n {headerTitleElement}\n </ScreenStackHeaderCenterView>\n ) : null}\n </>\n ) : (\n <>\n {headerLeftElement != null || typeof headerTitle === 'function' ? (\n <ScreenStackHeaderLeftView>\n <View style={styles.row}>\n {headerLeftElement}\n {headerTitleAlign !== 'center' ? (\n typeof headerTitle === 'function' ? (\n headerTitleElement\n ) : (\n <HeaderTitle\n tintColor={tintColor}\n style={headerTitleStyleSupported}\n >\n {titleText}\n </HeaderTitle>\n )\n ) : null}\n </View>\n </ScreenStackHeaderLeftView>\n ) : null}\n {headerTitleAlign === 'center' ? (\n <ScreenStackHeaderCenterView>\n {typeof headerTitle === 'function' ? (\n headerTitleElement\n ) : (\n <HeaderTitle\n tintColor={tintColor}\n style={headerTitleStyleSupported}\n >\n {titleText}\n </HeaderTitle>\n )}\n </ScreenStackHeaderCenterView>\n ) : null}\n </>\n )}\n {headerBackImageSource !== undefined ? (\n <ScreenStackHeaderBackButtonImage source={headerBackImageSource} />\n ) : null}\n {headerRightElement != null ? (\n <ScreenStackHeaderRightView>\n {headerRightElement}\n </ScreenStackHeaderRightView>\n ) : null}\n {hasHeaderSearchBar ? (\n <ScreenStackHeaderSearchBarView>\n <SearchBar {...headerSearchBarOptions} />\n </ScreenStackHeaderSearchBarView>\n ) : null}\n </ScreenStackHeaderConfig>\n </>\n );\n}\n\nconst styles = StyleSheet.create({\n row: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n translucent: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n zIndex: 1,\n },\n background: {\n overflow: 'hidden',\n },\n});\n"]}
@@ -1,4 +1,4 @@
1
- import { getHeaderTitle, Header, HeaderBackButton, SafeAreaProviderCompat, Screen } from '@react-navigation/elements';
1
+ import { getHeaderTitle, Header, HeaderBackButton, HeaderBackContext, SafeAreaProviderCompat, Screen } from '@react-navigation/elements';
2
2
  import * as React from 'react';
3
3
  import { Image, StyleSheet, View } from 'react-native';
4
4
  const TRANSPARENT_PRESENTATIONS = ['transparentModal', 'containedTransparentModal'];
@@ -7,13 +7,13 @@ export default function NativeStackView(_ref) {
7
7
  state,
8
8
  descriptors
9
9
  } = _ref;
10
+ const parentHeaderBack = React.useContext(HeaderBackContext);
10
11
  return /*#__PURE__*/React.createElement(SafeAreaProviderCompat, null, /*#__PURE__*/React.createElement(View, {
11
12
  style: styles.container
12
13
  }, state.routes.map((route, i) => {
13
14
  var _state$routes, _state$routes2;
14
15
 
15
16
  const isFocused = state.index === i;
16
- const canGoBack = i !== 0;
17
17
  const previousKey = (_state$routes = state.routes[i - 1]) === null || _state$routes === void 0 ? void 0 : _state$routes.key;
18
18
  const nextKey = (_state$routes2 = state.routes[i + 1]) === null || _state$routes2 === void 0 ? void 0 : _state$routes2.key;
19
19
  const previousDescriptor = previousKey ? descriptors[previousKey] : undefined;
@@ -23,6 +23,10 @@ export default function NativeStackView(_ref) {
23
23
  navigation,
24
24
  render
25
25
  } = descriptors[route.key];
26
+ const headerBack = previousDescriptor ? {
27
+ title: getHeaderTitle(previousDescriptor.options, previousDescriptor.route.name)
28
+ } : parentHeaderBack;
29
+ const canGoBack = headerBack !== undefined;
26
30
  const {
27
31
  header,
28
32
  headerShown,
@@ -50,9 +54,7 @@ export default function NativeStackView(_ref) {
50
54
  headerShown: headerShown,
51
55
  headerTransparent: headerTransparent,
52
56
  header: header !== undefined ? header({
53
- back: previousDescriptor ? {
54
- title: getHeaderTitle(previousDescriptor.options, previousDescriptor.route.name)
55
- } : undefined,
57
+ back: headerBack,
56
58
  options,
57
59
  route,
58
60
  navigation
@@ -115,9 +117,11 @@ export default function NativeStackView(_ref) {
115
117
  }, presentation != null && TRANSPARENT_PRESENTATIONS.includes(presentation) ? {
116
118
  backgroundColor: 'transparent'
117
119
  } : null]
120
+ }, /*#__PURE__*/React.createElement(HeaderBackContext.Provider, {
121
+ value: headerBack
118
122
  }, /*#__PURE__*/React.createElement(View, {
119
123
  style: [styles.contentContainer, contentStyle]
120
- }, render()));
124
+ }, render())));
121
125
  })));
122
126
  }
123
127
  const styles = StyleSheet.create({
@@ -1 +1 @@
1
- {"version":3,"sources":["NativeStackView.tsx"],"names":["getHeaderTitle","Header","HeaderBackButton","SafeAreaProviderCompat","Screen","React","Image","StyleSheet","View","TRANSPARENT_PRESENTATIONS","NativeStackView","state","descriptors","styles","container","routes","map","route","i","isFocused","index","canGoBack","previousKey","key","nextKey","previousDescriptor","undefined","nextDescriptor","options","navigation","render","header","headerShown","headerTintColor","headerBackImageSource","headerLeft","headerRight","headerTitle","headerTitleAlign","headerTitleStyle","headerStyle","headerShadowVisible","headerTransparent","headerBackground","headerBackTitle","presentation","contentStyle","nextPresentation","back","title","name","tintColor","label","backImage","goBack","children","absoluteFill","display","includes","backgroundColor","contentContainer","create","flex","height","width","margin","resizeMode"],"mappings":"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","sourcesContent":["import {\n getHeaderTitle,\n Header,\n HeaderBackButton,\n SafeAreaProviderCompat,\n Screen,\n} from '@react-navigation/elements';\nimport type {\n ParamListBase,\n StackNavigationState,\n} from '@react-navigation/native';\nimport * as React from 'react';\nimport { Image, StyleSheet, View } from 'react-native';\n\nimport type {\n NativeStackDescriptorMap,\n NativeStackNavigationHelpers,\n} from '../types';\n\ntype Props = {\n state: StackNavigationState<ParamListBase>;\n // This is used for the native implementation of the stack.\n // eslint-disable-next-line react/no-unused-prop-types\n navigation: NativeStackNavigationHelpers;\n descriptors: NativeStackDescriptorMap;\n};\n\nconst TRANSPARENT_PRESENTATIONS = [\n 'transparentModal',\n 'containedTransparentModal',\n];\n\nexport default function NativeStackView({ state, descriptors }: Props) {\n return (\n <SafeAreaProviderCompat>\n <View style={styles.container}>\n {state.routes.map((route, i) => {\n const isFocused = state.index === i;\n const canGoBack = i !== 0;\n const previousKey = state.routes[i - 1]?.key;\n const nextKey = state.routes[i + 1]?.key;\n const previousDescriptor = previousKey\n ? descriptors[previousKey]\n : undefined;\n const nextDescriptor = nextKey ? descriptors[nextKey] : undefined;\n const { options, navigation, render } = descriptors[route.key];\n\n const {\n header,\n headerShown,\n headerTintColor,\n headerBackImageSource,\n headerLeft,\n headerRight,\n headerTitle,\n headerTitleAlign,\n headerTitleStyle,\n headerStyle,\n headerShadowVisible,\n headerTransparent,\n headerBackground,\n headerBackTitle,\n presentation,\n contentStyle,\n } = options;\n\n const nextPresentation = nextDescriptor?.options.presentation;\n\n return (\n <Screen\n key={route.key}\n focused={isFocused}\n route={route}\n navigation={navigation}\n headerShown={headerShown}\n headerTransparent={headerTransparent}\n header={\n header !== undefined ? (\n header({\n back: previousDescriptor\n ? {\n title: getHeaderTitle(\n previousDescriptor.options,\n previousDescriptor.route.name\n ),\n }\n : undefined,\n options,\n route,\n navigation,\n })\n ) : (\n <Header\n title={getHeaderTitle(options, route.name)}\n headerTintColor={headerTintColor}\n headerLeft={\n typeof headerLeft === 'function'\n ? ({ tintColor }) =>\n headerLeft({\n tintColor,\n canGoBack,\n label: headerBackTitle,\n })\n : headerLeft === undefined && canGoBack\n ? ({ tintColor }) => (\n <HeaderBackButton\n tintColor={tintColor}\n backImage={\n headerBackImageSource !== undefined\n ? () => (\n <Image\n source={headerBackImageSource}\n style={[\n styles.backImage,\n { tintColor },\n ]}\n />\n )\n : undefined\n }\n onPress={navigation.goBack}\n canGoBack={canGoBack}\n />\n )\n : headerLeft\n }\n headerRight={\n typeof headerRight === 'function'\n ? ({ tintColor }) =>\n headerRight({ tintColor, canGoBack })\n : headerRight\n }\n headerTitle={\n typeof headerTitle === 'function'\n ? ({ children, tintColor }) =>\n headerTitle({ children, tintColor })\n : headerTitle\n }\n headerTitleAlign={headerTitleAlign}\n headerTitleStyle={headerTitleStyle}\n headerTransparent={headerTransparent}\n headerShadowVisible={headerShadowVisible}\n headerBackground={headerBackground}\n headerStyle={headerStyle}\n />\n )\n }\n style={[\n StyleSheet.absoluteFill,\n {\n display:\n isFocused ||\n (nextPresentation != null &&\n TRANSPARENT_PRESENTATIONS.includes(nextPresentation))\n ? 'flex'\n : 'none',\n },\n presentation != null &&\n TRANSPARENT_PRESENTATIONS.includes(presentation)\n ? { backgroundColor: 'transparent' }\n : null,\n ]}\n >\n <View style={[styles.contentContainer, contentStyle]}>\n {render()}\n </View>\n </Screen>\n );\n })}\n </View>\n </SafeAreaProviderCompat>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n contentContainer: {\n flex: 1,\n },\n backImage: {\n height: 24,\n width: 24,\n margin: 3,\n resizeMode: 'contain',\n },\n});\n"]}
1
+ {"version":3,"sources":["NativeStackView.tsx"],"names":["getHeaderTitle","Header","HeaderBackButton","HeaderBackContext","SafeAreaProviderCompat","Screen","React","Image","StyleSheet","View","TRANSPARENT_PRESENTATIONS","NativeStackView","state","descriptors","parentHeaderBack","useContext","styles","container","routes","map","route","i","isFocused","index","previousKey","key","nextKey","previousDescriptor","undefined","nextDescriptor","options","navigation","render","headerBack","title","name","canGoBack","header","headerShown","headerTintColor","headerBackImageSource","headerLeft","headerRight","headerTitle","headerTitleAlign","headerTitleStyle","headerStyle","headerShadowVisible","headerTransparent","headerBackground","headerBackTitle","presentation","contentStyle","nextPresentation","back","tintColor","label","backImage","goBack","children","absoluteFill","display","includes","backgroundColor","contentContainer","create","flex","height","width","margin","resizeMode"],"mappings":"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","sourcesContent":["import {\n getHeaderTitle,\n Header,\n HeaderBackButton,\n HeaderBackContext,\n SafeAreaProviderCompat,\n Screen,\n} from '@react-navigation/elements';\nimport type {\n ParamListBase,\n StackNavigationState,\n} from '@react-navigation/native';\nimport * as React from 'react';\nimport { Image, StyleSheet, View } from 'react-native';\n\nimport type {\n NativeStackDescriptorMap,\n NativeStackNavigationHelpers,\n} from '../types';\n\ntype Props = {\n state: StackNavigationState<ParamListBase>;\n // This is used for the native implementation of the stack.\n // eslint-disable-next-line react/no-unused-prop-types\n navigation: NativeStackNavigationHelpers;\n descriptors: NativeStackDescriptorMap;\n};\n\nconst TRANSPARENT_PRESENTATIONS = [\n 'transparentModal',\n 'containedTransparentModal',\n];\n\nexport default function NativeStackView({ state, descriptors }: Props) {\n const parentHeaderBack = React.useContext(HeaderBackContext);\n\n return (\n <SafeAreaProviderCompat>\n <View style={styles.container}>\n {state.routes.map((route, i) => {\n const isFocused = state.index === i;\n const previousKey = state.routes[i - 1]?.key;\n const nextKey = state.routes[i + 1]?.key;\n const previousDescriptor = previousKey\n ? descriptors[previousKey]\n : undefined;\n const nextDescriptor = nextKey ? descriptors[nextKey] : undefined;\n const { options, navigation, render } = descriptors[route.key];\n\n const headerBack = previousDescriptor\n ? {\n title: getHeaderTitle(\n previousDescriptor.options,\n previousDescriptor.route.name\n ),\n }\n : parentHeaderBack;\n\n const canGoBack = headerBack !== undefined;\n\n const {\n header,\n headerShown,\n headerTintColor,\n headerBackImageSource,\n headerLeft,\n headerRight,\n headerTitle,\n headerTitleAlign,\n headerTitleStyle,\n headerStyle,\n headerShadowVisible,\n headerTransparent,\n headerBackground,\n headerBackTitle,\n presentation,\n contentStyle,\n } = options;\n\n const nextPresentation = nextDescriptor?.options.presentation;\n\n return (\n <Screen\n key={route.key}\n focused={isFocused}\n route={route}\n navigation={navigation}\n headerShown={headerShown}\n headerTransparent={headerTransparent}\n header={\n header !== undefined ? (\n header({\n back: headerBack,\n options,\n route,\n navigation,\n })\n ) : (\n <Header\n title={getHeaderTitle(options, route.name)}\n headerTintColor={headerTintColor}\n headerLeft={\n typeof headerLeft === 'function'\n ? ({ tintColor }) =>\n headerLeft({\n tintColor,\n canGoBack,\n label: headerBackTitle,\n })\n : headerLeft === undefined && canGoBack\n ? ({ tintColor }) => (\n <HeaderBackButton\n tintColor={tintColor}\n backImage={\n headerBackImageSource !== undefined\n ? () => (\n <Image\n source={headerBackImageSource}\n style={[\n styles.backImage,\n { tintColor },\n ]}\n />\n )\n : undefined\n }\n onPress={navigation.goBack}\n canGoBack={canGoBack}\n />\n )\n : headerLeft\n }\n headerRight={\n typeof headerRight === 'function'\n ? ({ tintColor }) =>\n headerRight({ tintColor, canGoBack })\n : headerRight\n }\n headerTitle={\n typeof headerTitle === 'function'\n ? ({ children, tintColor }) =>\n headerTitle({ children, tintColor })\n : headerTitle\n }\n headerTitleAlign={headerTitleAlign}\n headerTitleStyle={headerTitleStyle}\n headerTransparent={headerTransparent}\n headerShadowVisible={headerShadowVisible}\n headerBackground={headerBackground}\n headerStyle={headerStyle}\n />\n )\n }\n style={[\n StyleSheet.absoluteFill,\n {\n display:\n isFocused ||\n (nextPresentation != null &&\n TRANSPARENT_PRESENTATIONS.includes(nextPresentation))\n ? 'flex'\n : 'none',\n },\n presentation != null &&\n TRANSPARENT_PRESENTATIONS.includes(presentation)\n ? { backgroundColor: 'transparent' }\n : null,\n ]}\n >\n <HeaderBackContext.Provider value={headerBack}>\n <View style={[styles.contentContainer, contentStyle]}>\n {render()}\n </View>\n </HeaderBackContext.Provider>\n </Screen>\n );\n })}\n </View>\n </SafeAreaProviderCompat>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n contentContainer: {\n flex: 1,\n },\n backImage: {\n height: 24,\n width: 24,\n margin: 3,\n resizeMode: 'contain',\n },\n});\n"]}
@@ -1,12 +1,14 @@
1
1
  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
2
 
3
- import { getDefaultHeaderHeight, getHeaderTitle, HeaderHeightContext, HeaderShownContext, SafeAreaProviderCompat } from '@react-navigation/elements';
4
- import { NavigationContext, NavigationRouteContext, StackActions, useTheme } from '@react-navigation/native';
3
+ import { getDefaultHeaderHeight, getHeaderTitle, HeaderBackContext, HeaderHeightContext, HeaderShownContext, SafeAreaProviderCompat } from '@react-navigation/elements';
4
+ import { NavigationContext, NavigationRouteContext, StackActions, usePreventRemoveContext, useTheme } from '@react-navigation/native';
5
5
  import * as React from 'react';
6
6
  import { Platform, StyleSheet, View } from 'react-native';
7
7
  import { useSafeAreaFrame, useSafeAreaInsets } from 'react-native-safe-area-context';
8
8
  import { Screen, ScreenStack } from 'react-native-screens';
9
9
  import warnOnce from 'warn-once';
10
+ import useDismissedRouteError from '../utils/useDismissedRouteError';
11
+ import useInvalidPreventRemoveError from '../utils/useInvalidPreventRemoveError';
10
12
  import DebugContainer from './DebugContainer';
11
13
  import HeaderConfig from './HeaderConfig';
12
14
  const isAndroid = Platform.OS === 'android';
@@ -17,6 +19,7 @@ const MaybeNestedStack = _ref => {
17
19
  route,
18
20
  presentation,
19
21
  headerHeight,
22
+ headerTopInsetEnabled,
20
23
  children
21
24
  } = _ref;
22
25
  const {
@@ -49,6 +52,7 @@ const MaybeNestedStack = _ref => {
49
52
  }, /*#__PURE__*/React.createElement(HeaderConfig, _extends({}, options, {
50
53
  route: route,
51
54
  headerHeight: headerHeight,
55
+ headerTopInsetEnabled: headerTopInsetEnabled,
52
56
  canGoBack: true
53
57
  })), content));
54
58
  }
@@ -57,6 +61,8 @@ const MaybeNestedStack = _ref => {
57
61
  };
58
62
 
59
63
  const SceneView = _ref2 => {
64
+ var _preventedRoutes$rout;
65
+
60
66
  let {
61
67
  descriptor,
62
68
  previousDescriptor,
@@ -65,7 +71,9 @@ const SceneView = _ref2 => {
65
71
  onWillDisappear,
66
72
  onAppear,
67
73
  onDisappear,
68
- onDismissed
74
+ onDismissed,
75
+ onHeaderBackButtonClicked,
76
+ onNativeDismissCancelled
69
77
  } = _ref2;
70
78
  const {
71
79
  route,
@@ -78,6 +86,7 @@ const SceneView = _ref2 => {
78
86
  animationTypeForReplace = 'push',
79
87
  gestureEnabled,
80
88
  header,
89
+ headerBackButtonMenuEnabled,
81
90
  headerShown,
82
91
  autoHideHomeIndicator,
83
92
  navigationBarColor,
@@ -87,7 +96,8 @@ const SceneView = _ref2 => {
87
96
  statusBarHidden,
88
97
  statusBarStyle,
89
98
  statusBarTranslucent,
90
- statusBarColor
99
+ statusBarColor,
100
+ freezeOnBlur
91
101
  } = options;
92
102
  let {
93
103
  animation,
@@ -127,7 +137,6 @@ const SceneView = _ref2 => {
127
137
  presentation = 'card';
128
138
  }
129
139
 
130
- const isHeaderInPush = isAndroid ? headerShown : presentation === 'card' && headerShown !== false;
131
140
  const insets = useSafeAreaInsets();
132
141
  const frame = useSafeAreaFrame(); // `modal` and `formSheet` presentations do not take whole screen, so should not take the inset.
133
142
 
@@ -135,12 +144,21 @@ const SceneView = _ref2 => {
135
144
 
136
145
  const isIPhone = Platform.OS === 'ios' && !(Platform.isPad || Platform.isTVOS);
137
146
  const isLandscape = frame.width > frame.height;
138
- const topInset = isModal || isIPhone && isLandscape ? 0 : insets.top;
139
147
  const isParentHeaderShown = React.useContext(HeaderShownContext);
140
148
  const parentHeaderHeight = React.useContext(HeaderHeightContext);
149
+ const parentHeaderBack = React.useContext(HeaderBackContext);
150
+ const topInset = isParentHeaderShown || Platform.OS === 'ios' && isModal || isIPhone && isLandscape ? 0 : insets.top;
151
+ const {
152
+ preventedRoutes
153
+ } = usePreventRemoveContext();
141
154
  const defaultHeaderHeight = getDefaultHeaderHeight(frame, isModal, topInset);
142
155
  const [customHeaderHeight, setCustomHeaderHeight] = React.useState(defaultHeaderHeight);
156
+ const headerTopInsetEnabled = topInset !== 0;
143
157
  const headerHeight = header ? customHeaderHeight : defaultHeaderHeight;
158
+ const headerBack = previousDescriptor ? {
159
+ title: getHeaderTitle(previousDescriptor.options, previousDescriptor.route.name)
160
+ } : parentHeaderBack;
161
+ const isRemovePrevented = (_preventedRoutes$rout = preventedRoutes[route.key]) === null || _preventedRoutes$rout === void 0 ? void 0 : _preventedRoutes$rout.preventRemove;
144
162
  return /*#__PURE__*/React.createElement(Screen, {
145
163
  key: route.key,
146
164
  enabled: true,
@@ -168,55 +186,62 @@ const SceneView = _ref2 => {
168
186
  onAppear: onAppear,
169
187
  onDisappear: onDisappear,
170
188
  onDismissed: onDismissed,
171
- isNativeStack: true
189
+ isNativeStack: true,
190
+ nativeBackButtonDismissalEnabled: false // on Android
191
+ ,
192
+ onHeaderBackButtonClicked: onHeaderBackButtonClicked // @ts-ignore props not exported from rn-screens
193
+ ,
194
+ preventNativeDismiss: isRemovePrevented // on iOS
195
+ ,
196
+ onNativeDismissCancelled: onNativeDismissCancelled // this prop is available since rn-screens 3.16
197
+ ,
198
+ freezeOnBlur: freezeOnBlur
172
199
  }, /*#__PURE__*/React.createElement(NavigationContext.Provider, {
173
200
  value: navigation
174
201
  }, /*#__PURE__*/React.createElement(NavigationRouteContext.Provider, {
175
202
  value: route
176
203
  }, /*#__PURE__*/React.createElement(HeaderShownContext.Provider, {
177
- value: isParentHeaderShown || isHeaderInPush !== false
204
+ value: isParentHeaderShown || headerShown !== false
178
205
  }, /*#__PURE__*/React.createElement(HeaderHeightContext.Provider, {
179
- value: isHeaderInPush !== false ? headerHeight : parentHeaderHeight !== null && parentHeaderHeight !== void 0 ? parentHeaderHeight : 0
206
+ value: headerShown !== false ? headerHeight : parentHeaderHeight !== null && parentHeaderHeight !== void 0 ? parentHeaderHeight : 0
180
207
  }, header !== undefined && headerShown !== false ? /*#__PURE__*/React.createElement(View, {
181
208
  onLayout: e => {
182
209
  setCustomHeaderHeight(e.nativeEvent.layout.height);
183
210
  }
184
211
  }, header({
185
- back: previousDescriptor ? {
186
- title: getHeaderTitle(previousDescriptor.options, previousDescriptor.route.name)
187
- } : undefined,
212
+ back: headerBack,
188
213
  options,
189
214
  route,
190
215
  navigation
191
216
  })) : /*#__PURE__*/React.createElement(HeaderConfig, _extends({}, options, {
192
217
  route: route,
193
- headerShown: isHeaderInPush,
218
+ headerBackButtonMenuEnabled: isRemovePrevented !== undefined ? !isRemovePrevented : headerBackButtonMenuEnabled,
219
+ headerShown: headerShown,
194
220
  headerHeight: headerHeight,
195
- canGoBack: index !== 0
221
+ headerBackTitle: options.headerBackTitle !== undefined ? options.headerBackTitle : undefined,
222
+ headerTopInsetEnabled: headerTopInsetEnabled,
223
+ canGoBack: headerBack !== undefined
196
224
  })), /*#__PURE__*/React.createElement(MaybeNestedStack, {
197
225
  options: options,
198
226
  route: route,
199
227
  presentation: presentation,
200
- headerHeight: headerHeight
201
- }, render()))))));
228
+ headerHeight: headerHeight,
229
+ headerTopInsetEnabled: headerTopInsetEnabled
230
+ }, /*#__PURE__*/React.createElement(HeaderBackContext.Provider, {
231
+ value: headerBack
232
+ }, render())))))));
202
233
  };
203
234
 
204
235
  function NativeStackViewInner(_ref3) {
205
- var _state$routes$find;
206
-
207
236
  let {
208
237
  state,
209
238
  navigation,
210
239
  descriptors
211
240
  } = _ref3;
212
- const [nextDismissedKey, setNextDismissedKey] = React.useState(null);
213
- const dismissedRouteName = nextDismissedKey ? (_state$routes$find = state.routes.find(route => route.key === nextDismissedKey)) === null || _state$routes$find === void 0 ? void 0 : _state$routes$find.name : null;
214
- React.useEffect(() => {
215
- if (dismissedRouteName) {
216
- const message = `The screen '${dismissedRouteName}' was removed natively but didn't get removed from JS state. ` + `This can happen if the action was prevented in a 'beforeRemove' listener, which is not fully supported in native-stack.\n\n` + `Consider using 'gestureEnabled: false' to prevent back gesture and use a custom back button with 'headerLeft' option to override the native behavior.`;
217
- console.error(message);
218
- }
219
- }, [dismissedRouteName]);
241
+ const {
242
+ setNextDismissedKey
243
+ } = useDismissedRouteError(state);
244
+ useInvalidPreventRemoveError(descriptors);
220
245
  return /*#__PURE__*/React.createElement(ScreenStack, {
221
246
  style: styles.container
222
247
  }, state.routes.map((route, index) => {
@@ -266,6 +291,18 @@ function NativeStackViewInner(_ref3) {
266
291
  target: state.key
267
292
  });
268
293
  setNextDismissedKey(route.key);
294
+ },
295
+ onHeaderBackButtonClicked: () => {
296
+ navigation.dispatch({ ...StackActions.pop(),
297
+ source: route.key,
298
+ target: state.key
299
+ });
300
+ },
301
+ onNativeDismissCancelled: event => {
302
+ navigation.dispatch({ ...StackActions.pop(event.nativeEvent.dismissCount),
303
+ source: route.key,
304
+ target: state.key
305
+ });
269
306
  }
270
307
  });
271
308
  }));