@react-navigation/native-stack 6.8.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.
@@ -13,8 +13,6 @@ var React = _interopRequireWildcard(require("react"));
13
13
 
14
14
  var _reactNative = require("react-native");
15
15
 
16
- var _reactNativeSafeAreaContext = require("react-native-safe-area-context");
17
-
18
16
  var _reactNativeScreens = require("react-native-screens");
19
17
 
20
18
  var _FontProcessor = require("./FontProcessor");
@@ -51,11 +49,11 @@ function HeaderConfig(_ref) {
51
49
  headerTitleStyle,
52
50
  headerTransparent,
53
51
  headerSearchBarOptions,
52
+ headerTopInsetEnabled,
54
53
  route,
55
54
  title,
56
55
  canGoBack
57
56
  } = _ref;
58
- const insets = (0, _reactNativeSafeAreaContext.useSafeAreaInsets)();
59
57
  const {
60
58
  colors
61
59
  } = (0, _native.useTheme)();
@@ -148,7 +146,7 @@ function HeaderConfig(_ref) {
148
146
  titleFontFamily: titleFontFamily,
149
147
  titleFontSize: titleFontSize,
150
148
  titleFontWeight: titleFontWeight,
151
- topInsetEnabled: insets.top !== 0,
149
+ topInsetEnabled: headerTopInsetEnabled,
152
150
  translucent: // This defaults to `true`, so we can't pass `undefined`
153
151
  translucent === true
154
152
  }, _reactNative.Platform.OS === 'ios' ? /*#__PURE__*/React.createElement(React.Fragment, null, headerLeftElement != null ? /*#__PURE__*/React.createElement(_reactNativeScreens.ScreenStackHeaderLeftView, null, headerLeftElement) : null, headerTitleElement != null ? /*#__PURE__*/React.createElement(_reactNativeScreens.ScreenStackHeaderCenterView, null, headerTitleElement) : null) : /*#__PURE__*/React.createElement(React.Fragment, null, headerLeftElement != null || typeof headerTitle === 'function' ? /*#__PURE__*/React.createElement(_reactNativeScreens.ScreenStackHeaderLeftView, null, /*#__PURE__*/React.createElement(_reactNative.View, {
@@ -1 +1 @@
1
- {"version":3,"sources":["HeaderConfig.tsx"],"names":["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","Platform","OS","primary","text","headerBackTitleStyleFlattened","StyleSheet","flatten","headerLargeTitleStyleFlattened","headerTitleStyleFlattened","headerStyleFlattened","headerLargeStyleFlattened","backTitleFontFamily","largeTitleFontFamily","titleFontFamily","fontFamily","titleText","name","titleColor","color","titleFontSize","fontSize","titleFontWeight","fontWeight","headerTitleStyleSupported","headerLeftElement","label","headerRightElement","headerTitleElement","children","supportsHeaderSearchBar","isSearchBarAvailableForCurrentPlatform","SearchBar","hasHeaderSearchBar","Error","backButtonInCustomView","translucent","styles","background","height","backgroundColor","card","I18nManager","getConstants","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.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={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":["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","Platform","OS","primary","text","headerBackTitleStyleFlattened","StyleSheet","flatten","headerLargeTitleStyleFlattened","headerTitleStyleFlattened","headerStyleFlattened","headerLargeStyleFlattened","backTitleFontFamily","largeTitleFontFamily","titleFontFamily","fontFamily","titleText","name","titleColor","color","titleFontSize","fontSize","titleFontWeight","fontWeight","headerTitleStyleSupported","headerLeftElement","label","headerRightElement","headerTitleElement","children","supportsHeaderSearchBar","isSearchBarAvailableForCurrentPlatform","SearchBar","hasHeaderSearchBar","Error","backButtonInCustomView","translucent","styles","background","height","backgroundColor","card","I18nManager","getConstants","isRTL","row","undefined","create","flexDirection","alignItems","position","top","left","right","zIndex","overflow"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AAOA;;AAYA;;;;;;AASe,SAASA,YAAT,OA6BQ;AAAA;;AAAA,MA7Bc;AACnCC,IAAAA,YADmC;AAEnCC,IAAAA,qBAFmC;AAGnCC,IAAAA,2BAHmC;AAInCC,IAAAA,eAJmC;AAKnCC,IAAAA,oBALmC;AAMnCC,IAAAA,sBAAsB,GAAG,IANU;AAOnCC,IAAAA,iBAPmC;AAQnCC,IAAAA,mBARmC;AASnCC,IAAAA,gBATmC;AAUnCC,IAAAA,gBAVmC;AAWnCC,IAAAA,6BAXmC;AAYnCC,IAAAA,qBAZmC;AAanCC,IAAAA,gBAbmC;AAcnCC,IAAAA,UAdmC;AAenCC,IAAAA,WAfmC;AAgBnCC,IAAAA,WAhBmC;AAiBnCC,IAAAA,WAjBmC;AAkBnCC,IAAAA,gBAlBmC;AAmBnCC,IAAAA,eAnBmC;AAoBnCC,IAAAA,WApBmC;AAqBnCC,IAAAA,gBArBmC;AAsBnCC,IAAAA,gBAtBmC;AAuBnCC,IAAAA,iBAvBmC;AAwBnCC,IAAAA,sBAxBmC;AAyBnCC,IAAAA,qBAzBmC;AA0BnCC,IAAAA,KA1BmC;AA2BnCC,IAAAA,KA3BmC;AA4BnCC,IAAAA;AA5BmC,GA6Bd;AACrB,QAAM;AAAEC,IAAAA;AAAF,MAAa,uBAAnB;AACA,QAAMC,SAAS,GACbX,eADa,aACbA,eADa,cACbA,eADa,GACOY,sBAASC,EAAT,KAAgB,KAAhB,GAAwBH,MAAM,CAACI,OAA/B,GAAyCJ,MAAM,CAACK,IADtE;AAGA,QAAMC,6BAA6B,GACjCC,wBAAWC,OAAX,CAAmBhC,oBAAnB,KAA4C,EAD9C;AAEA,QAAMiC,8BAA8B,GAClCF,wBAAWC,OAAX,CAAmBzB,qBAAnB,KAA6C,EAD/C;AAEA,QAAM2B,yBAAyB,GAAGH,wBAAWC,OAAX,CAAmBf,gBAAnB,KAAwC,EAA1E;AACA,QAAMkB,oBAAoB,GAAGJ,wBAAWC,OAAX,CAAmBpB,WAAnB,KAAmC,EAAhE;AACA,QAAMwB,yBAAyB,GAAGL,wBAAWC,OAAX,CAAmB5B,gBAAnB,KAAwC,EAA1E;AAEA,QAAM,CAACiC,mBAAD,EAAsBC,oBAAtB,EAA4CC,eAA5C,IACJ,iCAAa,CACXT,6BAA6B,CAACU,UADnB,EAEXP,8BAA8B,CAACO,UAFpB,EAGXN,yBAAyB,CAACM,UAHf,CAAb,CADF;AAOA,QAAMC,SAAS,GAAG,8BAAe;AAAEnB,IAAAA,KAAF;AAASP,IAAAA;AAAT,GAAf,EAAuCM,KAAK,CAACqB,IAA7C,CAAlB;AACA,QAAMC,UAAU,qCACdT,yBAAyB,CAACU,KADZ,yEACqB9B,eADrB,yCACwCU,MAAM,CAACK,IAD/D;AAEA,QAAMgB,aAAa,GAAGX,yBAAyB,CAACY,QAAhD;AACA,QAAMC,eAAe,GAAGb,yBAAyB,CAACc,UAAlD;AAEA,QAAMC,yBAAoC,GAAG;AAAEL,IAAAA,KAAK,EAAED;AAAT,GAA7C;;AAEA,MAAIT,yBAAyB,CAACM,UAA1B,IAAwC,IAA5C,EAAkD;AAChDS,IAAAA,yBAAyB,CAACT,UAA1B,GAAuCN,yBAAyB,CAACM,UAAjE;AACD;;AAED,MAAIK,aAAa,IAAI,IAArB,EAA2B;AACzBI,IAAAA,yBAAyB,CAACH,QAA1B,GAAqCD,aAArC;AACD;;AAED,MAAIE,eAAe,IAAI,IAAvB,EAA6B;AAC3BE,IAAAA,yBAAyB,CAACD,UAA1B,GAAuCD,eAAvC;AACD;;AAED,QAAMG,iBAAiB,GAAGzC,UAAH,aAAGA,UAAH,uBAAGA,UAAU,CAAG;AACrCgB,IAAAA,SADqC;AAErCF,IAAAA,SAFqC;AAGrC4B,IAAAA,KAAK,EAAEpD;AAH8B,GAAH,CAApC;AAKA,QAAMqD,kBAAkB,GAAG1C,WAAH,aAAGA,WAAH,uBAAGA,WAAW,CAAG;AACvCe,IAAAA,SADuC;AAEvCF,IAAAA;AAFuC,GAAH,CAAtC;AAIA,QAAM8B,kBAAkB,GACtB,OAAOtC,WAAP,KAAuB,UAAvB,GACIA,WAAW,CAAC;AACVU,IAAAA,SADU;AAEV6B,IAAAA,QAAQ,EAAEb;AAFA,GAAD,CADf,GAKI,IANN;AAQA,QAAMc,uBAAuB,GAC3B,OAAOC,0DAAP,KAAkD,SAAlD,GACIA,0DADJ,GAEI;AACA9B,wBAASC,EAAT,KAAgB,KAAhB,IAAyB8B,iCAAa,IAJ5C;AAMA,QAAMC,kBAAkB,GACtBH,uBAAuB,IAAIpC,sBAAsB,IAAI,IADvD;;AAGA,MAAIA,sBAAsB,IAAI,IAA1B,IAAkC,CAACoC,uBAAvC,EAAgE;AAC9D,UAAM,IAAII,KAAJ,CACH,gJADG,CAAN;AAGD;AAED;AACF;AACA;AACA;AACA;;;AACE,QAAMC,sBAAsB,GAAG1D,iBAAiB,GAC5CgD,iBAAiB,IAAI,IADuB,GAE5CxB,sBAASC,EAAT,KAAgB,SAAhB,IAA6B0B,kBAAkB,IAAI,IAFvD;AAIA,QAAMQ,WAAW,GACfrD,gBAAgB,IAAI,IAApB,IACAU,iBADA,IAEA;AACC,GAACwC,kBAAkB,IAAIrD,gBAAvB,KACCqB,sBAASC,EAAT,KAAgB,KADjB,IAECT,iBAAiB,KAAK,KAN1B;AAQA,sBACE,0CACGV,gBAAgB,IAAI,IAApB,gBACC,oBAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CACLsD,MAAM,CAACC,UADF,EAEL7C,iBAAiB,GAAG4C,MAAM,CAACD,WAAV,GAAwB,IAFpC,EAGL;AAAEG,MAAAA,MAAM,EAAEpE;AAAV,KAHK;AADT,KAOGY,gBAAgB,EAPnB,CADD,GAUG,IAXN,eAYE,oBAAC,2CAAD;AACE,IAAA,sBAAsB,EAAEoD,sBAD1B;AAEE,IAAA,eAAe,2BACbzB,oBAAoB,CAAC8B,eADR,yEAEZzD,gBAAgB,IAAI,IAApB,IAA4BU,iBAA5B,GACG,aADH,GAEGM,MAAM,CAAC0C,IANf;AAQE,IAAA,SAAS,EAAEjE,sBAAsB,GAAGF,eAAH,GAAqB,GARxD;AASE,IAAA,mBAAmB,EAAEsC,mBATvB;AAUE,IAAA,iBAAiB,EAAEP,6BAA6B,CAACgB,QAVnD;AAWE,IAAA,UAAU,EAAEjC,gBAXd;AAYE,IAAA,KAAK,EAAEY,SAZT;AAaE,IAAA,SAAS,EAAE0C,yBAAYC,YAAZ,GAA2BC,KAA3B,GAAmC,KAAnC,GAA2C,KAbxD;AAcE,IAAA,qBAAqB,EAAEvE,2BAA2B,KAAK,KAdzD;AAeE,IAAA,MAAM,EAAEa,WAAW,KAAK,KAf1B;AAgBE,IAAA,cAAc,EAAET,iBAAiB,KAAK,KAhBxC;AAiBE,IAAA,UAAU,EACRC,mBAAmB,KAAK,KAAxB,IACAK,gBAAgB,IAAI,IADpB,IAEAU,iBApBJ;AAsBE,IAAA,UAAU,EAAEb,gBAtBd;AAuBE,IAAA,yBAAyB,EAAE+B,yBAAyB,CAAC6B,eAvBvD;AAwBE,IAAA,eAAe,EAAEhC,8BAA8B,CAACW,KAxBlD;AAyBE,IAAA,oBAAoB,EAAEN,oBAzBxB;AA0BE,IAAA,kBAAkB,EAAEL,8BAA8B,CAACa,QA1BrD;AA2BE,IAAA,oBAAoB,EAAEb,8BAA8B,CAACe,UA3BvD;AA4BE,IAAA,oBAAoB,EAAE1C,6BAA6B,KAAK,KA5B1D;AA6BE,IAAA,KAAK,EAAEmC,SA7BT;AA8BE,IAAA,UAAU,EAAEE,UA9Bd;AA+BE,IAAA,eAAe,EAAEJ,eA/BnB;AAgCE,IAAA,aAAa,EAAEM,aAhCjB;AAiCE,IAAA,eAAe,EAAEE,eAjCnB;AAkCE,IAAA,eAAe,EAAE3B,qBAlCnB;AAmCE,IAAA,WAAW,EACT;AACAyC,IAAAA,WAAW,KAAK;AArCpB,KAwCGnC,sBAASC,EAAT,KAAgB,KAAhB,gBACC,0CACGuB,iBAAiB,IAAI,IAArB,gBACC,oBAAC,6CAAD,QACGA,iBADH,CADD,GAIG,IALN,EAMGG,kBAAkB,IAAI,IAAtB,gBACC,oBAAC,+CAAD,QACGA,kBADH,CADD,GAIG,IAVN,CADD,gBAcC,0CACGH,iBAAiB,IAAI,IAArB,IAA6B,OAAOnC,WAAP,KAAuB,UAApD,gBACC,oBAAC,6CAAD,qBACE,oBAAC,iBAAD;AAAM,IAAA,KAAK,EAAE+C,MAAM,CAACQ;AAApB,KACGpB,iBADH,EAEGlC,gBAAgB,KAAK,QAArB,GACC,OAAOD,WAAP,KAAuB,UAAvB,GACEsC,kBADF,gBAGE,oBAAC,qBAAD;AACE,IAAA,SAAS,EAAE5B,SADb;AAEE,IAAA,KAAK,EAAEwB;AAFT,KAIGR,SAJH,CAJH,GAWG,IAbN,CADF,CADD,GAkBG,IAnBN,EAoBGzB,gBAAgB,KAAK,QAArB,gBACC,oBAAC,+CAAD,QACG,OAAOD,WAAP,KAAuB,UAAvB,GACCsC,kBADD,gBAGC,oBAAC,qBAAD;AACE,IAAA,SAAS,EAAE5B,SADb;AAEE,IAAA,KAAK,EAAEwB;AAFT,KAIGR,SAJH,CAJJ,CADD,GAaG,IAjCN,CAtDJ,EA0FG5C,qBAAqB,KAAK0E,SAA1B,gBACC,oBAAC,oDAAD;AAAkC,IAAA,MAAM,EAAE1E;AAA1C,IADD,GAEG,IA5FN,EA6FGuD,kBAAkB,IAAI,IAAtB,gBACC,oBAAC,8CAAD,QACGA,kBADH,CADD,GAIG,IAjGN,EAkGGM,kBAAkB,gBACjB,oBAAC,kDAAD,qBACE,oBAAC,6BAAD,EAAevC,sBAAf,CADF,CADiB,GAIf,IAtGN,CAZF,CADF;AAuHD;;AAED,MAAM2C,MAAM,GAAG/B,wBAAWyC,MAAX,CAAkB;AAC/BF,EAAAA,GAAG,EAAE;AACHG,IAAAA,aAAa,EAAE,KADZ;AAEHC,IAAAA,UAAU,EAAE;AAFT,GAD0B;AAK/Bb,EAAAA,WAAW,EAAE;AACXc,IAAAA,QAAQ,EAAE,UADC;AAEXC,IAAAA,GAAG,EAAE,CAFM;AAGXC,IAAAA,IAAI,EAAE,CAHK;AAIXC,IAAAA,KAAK,EAAE,CAJI;AAKXC,IAAAA,MAAM,EAAE;AALG,GALkB;AAY/BhB,EAAAA,UAAU,EAAE;AACViB,IAAAA,QAAQ,EAAE;AADA;AAZmB,CAAlB,CAAf","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"]}
@@ -43,6 +43,7 @@ const MaybeNestedStack = _ref => {
43
43
  route,
44
44
  presentation,
45
45
  headerHeight,
46
+ headerTopInsetEnabled,
46
47
  children
47
48
  } = _ref;
48
49
  const {
@@ -75,6 +76,7 @@ const MaybeNestedStack = _ref => {
75
76
  }, /*#__PURE__*/React.createElement(_HeaderConfig.default, _extends({}, options, {
76
77
  route: route,
77
78
  headerHeight: headerHeight,
79
+ headerTopInsetEnabled: headerTopInsetEnabled,
78
80
  canGoBack: true
79
81
  })), content));
80
82
  }
@@ -118,7 +120,8 @@ const SceneView = _ref2 => {
118
120
  statusBarHidden,
119
121
  statusBarStyle,
120
122
  statusBarTranslucent,
121
- statusBarColor
123
+ statusBarColor,
124
+ freezeOnBlur
122
125
  } = options;
123
126
  let {
124
127
  animation,
@@ -158,7 +161,6 @@ const SceneView = _ref2 => {
158
161
  presentation = 'card';
159
162
  }
160
163
 
161
- const isHeaderInPush = isAndroid ? headerShown : presentation === 'card' && headerShown !== false;
162
164
  const insets = (0, _reactNativeSafeAreaContext.useSafeAreaInsets)();
163
165
  const frame = (0, _reactNativeSafeAreaContext.useSafeAreaFrame)(); // `modal` and `formSheet` presentations do not take whole screen, so should not take the inset.
164
166
 
@@ -166,15 +168,16 @@ const SceneView = _ref2 => {
166
168
 
167
169
  const isIPhone = _reactNative.Platform.OS === 'ios' && !(_reactNative.Platform.isPad || _reactNative.Platform.isTVOS);
168
170
  const isLandscape = frame.width > frame.height;
169
- const topInset = isModal || isIPhone && isLandscape ? 0 : insets.top;
170
171
  const isParentHeaderShown = React.useContext(_elements.HeaderShownContext);
171
172
  const parentHeaderHeight = React.useContext(_elements.HeaderHeightContext);
172
173
  const parentHeaderBack = React.useContext(_elements.HeaderBackContext);
174
+ const topInset = isParentHeaderShown || _reactNative.Platform.OS === 'ios' && isModal || isIPhone && isLandscape ? 0 : insets.top;
173
175
  const {
174
176
  preventedRoutes
175
177
  } = (0, _native.usePreventRemoveContext)();
176
178
  const defaultHeaderHeight = (0, _elements.getDefaultHeaderHeight)(frame, isModal, topInset);
177
179
  const [customHeaderHeight, setCustomHeaderHeight] = React.useState(defaultHeaderHeight);
180
+ const headerTopInsetEnabled = topInset !== 0;
178
181
  const headerHeight = header ? customHeaderHeight : defaultHeaderHeight;
179
182
  const headerBack = previousDescriptor ? {
180
183
  title: (0, _elements.getHeaderTitle)(previousDescriptor.options, previousDescriptor.route.name)
@@ -207,23 +210,24 @@ const SceneView = _ref2 => {
207
210
  onAppear: onAppear,
208
211
  onDisappear: onDisappear,
209
212
  onDismissed: onDismissed,
210
- isNativeStack: true // Props for enabling preventing removal in native-stack
211
- ,
213
+ isNativeStack: true,
212
214
  nativeBackButtonDismissalEnabled: false // on Android
213
- // @ts-expect-error prop not publicly exported from rn-screens
215
+ ,
216
+ onHeaderBackButtonClicked: onHeaderBackButtonClicked // @ts-ignore props not exported from rn-screens
214
217
  ,
215
218
  preventNativeDismiss: isRemovePrevented // on iOS
216
219
  ,
217
- onHeaderBackButtonClicked: onHeaderBackButtonClicked,
218
- onNativeDismissCancelled: onNativeDismissCancelled
220
+ onNativeDismissCancelled: onNativeDismissCancelled // this prop is available since rn-screens 3.16
221
+ ,
222
+ freezeOnBlur: freezeOnBlur
219
223
  }, /*#__PURE__*/React.createElement(_native.NavigationContext.Provider, {
220
224
  value: navigation
221
225
  }, /*#__PURE__*/React.createElement(_native.NavigationRouteContext.Provider, {
222
226
  value: route
223
227
  }, /*#__PURE__*/React.createElement(_elements.HeaderShownContext.Provider, {
224
- value: isParentHeaderShown || isHeaderInPush !== false
228
+ value: isParentHeaderShown || headerShown !== false
225
229
  }, /*#__PURE__*/React.createElement(_elements.HeaderHeightContext.Provider, {
226
- value: isHeaderInPush !== false ? headerHeight : parentHeaderHeight !== null && parentHeaderHeight !== void 0 ? parentHeaderHeight : 0
230
+ value: headerShown !== false ? headerHeight : parentHeaderHeight !== null && parentHeaderHeight !== void 0 ? parentHeaderHeight : 0
227
231
  }, header !== undefined && headerShown !== false ? /*#__PURE__*/React.createElement(_reactNative.View, {
228
232
  onLayout: e => {
229
233
  setCustomHeaderHeight(e.nativeEvent.layout.height);
@@ -236,15 +240,17 @@ const SceneView = _ref2 => {
236
240
  })) : /*#__PURE__*/React.createElement(_HeaderConfig.default, _extends({}, options, {
237
241
  route: route,
238
242
  headerBackButtonMenuEnabled: isRemovePrevented !== undefined ? !isRemovePrevented : headerBackButtonMenuEnabled,
239
- headerShown: isHeaderInPush,
243
+ headerShown: headerShown,
240
244
  headerHeight: headerHeight,
241
- headerBackTitle: options.headerBackTitle !== undefined ? options.headerBackTitle : headerBack === null || headerBack === void 0 ? void 0 : headerBack.title,
245
+ headerBackTitle: options.headerBackTitle !== undefined ? options.headerBackTitle : undefined,
246
+ headerTopInsetEnabled: headerTopInsetEnabled,
242
247
  canGoBack: headerBack !== undefined
243
248
  })), /*#__PURE__*/React.createElement(MaybeNestedStack, {
244
249
  options: options,
245
250
  route: route,
246
251
  presentation: presentation,
247
- headerHeight: headerHeight
252
+ headerHeight: headerHeight,
253
+ headerTopInsetEnabled: headerTopInsetEnabled
248
254
  }, /*#__PURE__*/React.createElement(_elements.HeaderBackContext.Provider, {
249
255
  value: headerBack
250
256
  }, render())))))));
@@ -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","onHeaderBackButtonClicked","onNativeDismissCancelled","navigation","render","animationDuration","animationTypeForReplace","gestureEnabled","headerBackButtonMenuEnabled","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","parentHeaderBack","HeaderBackContext","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 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 onHeaderBackButtonClicked: () => void;\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 } = 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 const parentHeaderBack = React.useContext(HeaderBackContext);\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 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 // Props for enabling preventing removal in native-stack\n nativeBackButtonDismissalEnabled={false} // on Android\n // @ts-expect-error prop not publicly exported from rn-screens\n preventNativeDismiss={isRemovePrevented} // on iOS\n onHeaderBackButtonClicked={onHeaderBackButtonClicked}\n onNativeDismissCancelled={onNativeDismissCancelled}\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: 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={isHeaderInPush}\n headerHeight={headerHeight}\n headerBackTitle={\n options.headerBackTitle !== undefined\n ? options.headerBackTitle\n : headerBack?.title\n }\n canGoBack={headerBack !== undefined}\n />\n )}\n <MaybeNestedStack\n options={options}\n route={route}\n presentation={presentation}\n headerHeight={headerHeight}\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","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"]}
@@ -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();
@@ -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","getConstants","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.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={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"]}
@@ -19,6 +19,7 @@ const MaybeNestedStack = _ref => {
19
19
  route,
20
20
  presentation,
21
21
  headerHeight,
22
+ headerTopInsetEnabled,
22
23
  children
23
24
  } = _ref;
24
25
  const {
@@ -51,6 +52,7 @@ const MaybeNestedStack = _ref => {
51
52
  }, /*#__PURE__*/React.createElement(HeaderConfig, _extends({}, options, {
52
53
  route: route,
53
54
  headerHeight: headerHeight,
55
+ headerTopInsetEnabled: headerTopInsetEnabled,
54
56
  canGoBack: true
55
57
  })), content));
56
58
  }
@@ -94,7 +96,8 @@ const SceneView = _ref2 => {
94
96
  statusBarHidden,
95
97
  statusBarStyle,
96
98
  statusBarTranslucent,
97
- statusBarColor
99
+ statusBarColor,
100
+ freezeOnBlur
98
101
  } = options;
99
102
  let {
100
103
  animation,
@@ -134,7 +137,6 @@ const SceneView = _ref2 => {
134
137
  presentation = 'card';
135
138
  }
136
139
 
137
- const isHeaderInPush = isAndroid ? headerShown : presentation === 'card' && headerShown !== false;
138
140
  const insets = useSafeAreaInsets();
139
141
  const frame = useSafeAreaFrame(); // `modal` and `formSheet` presentations do not take whole screen, so should not take the inset.
140
142
 
@@ -142,15 +144,16 @@ const SceneView = _ref2 => {
142
144
 
143
145
  const isIPhone = Platform.OS === 'ios' && !(Platform.isPad || Platform.isTVOS);
144
146
  const isLandscape = frame.width > frame.height;
145
- const topInset = isModal || isIPhone && isLandscape ? 0 : insets.top;
146
147
  const isParentHeaderShown = React.useContext(HeaderShownContext);
147
148
  const parentHeaderHeight = React.useContext(HeaderHeightContext);
148
149
  const parentHeaderBack = React.useContext(HeaderBackContext);
150
+ const topInset = isParentHeaderShown || Platform.OS === 'ios' && isModal || isIPhone && isLandscape ? 0 : insets.top;
149
151
  const {
150
152
  preventedRoutes
151
153
  } = usePreventRemoveContext();
152
154
  const defaultHeaderHeight = getDefaultHeaderHeight(frame, isModal, topInset);
153
155
  const [customHeaderHeight, setCustomHeaderHeight] = React.useState(defaultHeaderHeight);
156
+ const headerTopInsetEnabled = topInset !== 0;
154
157
  const headerHeight = header ? customHeaderHeight : defaultHeaderHeight;
155
158
  const headerBack = previousDescriptor ? {
156
159
  title: getHeaderTitle(previousDescriptor.options, previousDescriptor.route.name)
@@ -183,23 +186,24 @@ const SceneView = _ref2 => {
183
186
  onAppear: onAppear,
184
187
  onDisappear: onDisappear,
185
188
  onDismissed: onDismissed,
186
- isNativeStack: true // Props for enabling preventing removal in native-stack
187
- ,
189
+ isNativeStack: true,
188
190
  nativeBackButtonDismissalEnabled: false // on Android
189
- // @ts-expect-error prop not publicly exported from rn-screens
191
+ ,
192
+ onHeaderBackButtonClicked: onHeaderBackButtonClicked // @ts-ignore props not exported from rn-screens
190
193
  ,
191
194
  preventNativeDismiss: isRemovePrevented // on iOS
192
195
  ,
193
- onHeaderBackButtonClicked: onHeaderBackButtonClicked,
194
- onNativeDismissCancelled: onNativeDismissCancelled
196
+ onNativeDismissCancelled: onNativeDismissCancelled // this prop is available since rn-screens 3.16
197
+ ,
198
+ freezeOnBlur: freezeOnBlur
195
199
  }, /*#__PURE__*/React.createElement(NavigationContext.Provider, {
196
200
  value: navigation
197
201
  }, /*#__PURE__*/React.createElement(NavigationRouteContext.Provider, {
198
202
  value: route
199
203
  }, /*#__PURE__*/React.createElement(HeaderShownContext.Provider, {
200
- value: isParentHeaderShown || isHeaderInPush !== false
204
+ value: isParentHeaderShown || headerShown !== false
201
205
  }, /*#__PURE__*/React.createElement(HeaderHeightContext.Provider, {
202
- value: isHeaderInPush !== false ? headerHeight : parentHeaderHeight !== null && parentHeaderHeight !== void 0 ? parentHeaderHeight : 0
206
+ value: headerShown !== false ? headerHeight : parentHeaderHeight !== null && parentHeaderHeight !== void 0 ? parentHeaderHeight : 0
203
207
  }, header !== undefined && headerShown !== false ? /*#__PURE__*/React.createElement(View, {
204
208
  onLayout: e => {
205
209
  setCustomHeaderHeight(e.nativeEvent.layout.height);
@@ -212,15 +216,17 @@ const SceneView = _ref2 => {
212
216
  })) : /*#__PURE__*/React.createElement(HeaderConfig, _extends({}, options, {
213
217
  route: route,
214
218
  headerBackButtonMenuEnabled: isRemovePrevented !== undefined ? !isRemovePrevented : headerBackButtonMenuEnabled,
215
- headerShown: isHeaderInPush,
219
+ headerShown: headerShown,
216
220
  headerHeight: headerHeight,
217
- headerBackTitle: options.headerBackTitle !== undefined ? options.headerBackTitle : headerBack === null || headerBack === void 0 ? void 0 : headerBack.title,
221
+ headerBackTitle: options.headerBackTitle !== undefined ? options.headerBackTitle : undefined,
222
+ headerTopInsetEnabled: headerTopInsetEnabled,
218
223
  canGoBack: headerBack !== undefined
219
224
  })), /*#__PURE__*/React.createElement(MaybeNestedStack, {
220
225
  options: options,
221
226
  route: route,
222
227
  presentation: presentation,
223
- headerHeight: headerHeight
228
+ headerHeight: headerHeight,
229
+ headerTopInsetEnabled: headerTopInsetEnabled
224
230
  }, /*#__PURE__*/React.createElement(HeaderBackContext.Provider, {
225
231
  value: headerBack
226
232
  }, render())))))));
@@ -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","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","animation","customAnimationOnGesture","fullScreenGestureEnabled","gestureDirection","nextGestureDirection","gestureDirectionOverride","isHeaderInPush","insets","frame","isModal","isIPhone","isPad","isTVOS","isLandscape","width","height","topInset","top","isParentHeaderShown","useContext","parentHeaderHeight","parentHeaderBack","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 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 onHeaderBackButtonClicked: () => void;\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 } = 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 const parentHeaderBack = React.useContext(HeaderBackContext);\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 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 // Props for enabling preventing removal in native-stack\n nativeBackButtonDismissalEnabled={false} // on Android\n // @ts-expect-error prop not publicly exported from rn-screens\n preventNativeDismiss={isRemovePrevented} // on iOS\n onHeaderBackButtonClicked={onHeaderBackButtonClicked}\n onNativeDismissCancelled={onNativeDismissCancelled}\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: 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={isHeaderInPush}\n headerHeight={headerHeight}\n headerBackTitle={\n options.headerBackTitle !== undefined\n ? options.headerBackTitle\n : headerBack?.title\n }\n canGoBack={headerBack !== undefined}\n />\n )}\n <MaybeNestedStack\n options={options}\n route={route}\n presentation={presentation}\n headerHeight={headerHeight}\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","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":";;AAAA,SACEA,sBADF,EAEEC,cAFF,EAGEC,iBAHF,EAIEC,mBAJF,EAKEC,kBALF,EAMEC,sBANF,QAOO,4BAPP;AAQA,SACEC,iBADF,EAEEC,sBAFF,EAKEC,YALF,EAOEC,uBAPF,EAQEC,QARF,QASO,0BATP;AAUA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AACA,SAASC,QAAT,EAAmBC,UAAnB,EAA+BC,IAA/B,QAA2C,cAA3C;AACA,SACEC,gBADF,EAEEC,iBAFF,QAGO,gCAHP;AAKA,SACEC,MADF,EAEEC,WAFF,QAIO,sBAJP;AAKA,OAAOC,QAAP,MAAqB,WAArB;AAQA,OAAOC,sBAAP,MAAmC,iCAAnC;AACA,OAAOC,4BAAP,MAAyC,uCAAzC;AACA,OAAOC,cAAP,MAA2B,kBAA3B;AACA,OAAOC,YAAP,MAAyB,gBAAzB;AAEA,MAAMC,SAAS,GAAGZ,QAAQ,CAACa,EAAT,KAAgB,SAAlC;;AAEA,MAAMC,gBAAgB,GAAG,QAcnB;AAAA,MAdoB;AACxBC,IAAAA,OADwB;AAExBC,IAAAA,KAFwB;AAGxBC,IAAAA,YAHwB;AAIxBC,IAAAA,YAJwB;AAKxBC,IAAAA,qBALwB;AAMxBC,IAAAA;AANwB,GAcpB;AACJ,QAAM;AAAEC,IAAAA;AAAF,MAAavB,QAAQ,EAA3B;AACA,QAAM;AAAEwB,IAAAA,MAAF;AAAUC,IAAAA,WAAW,GAAG,IAAxB;AAA8BC,IAAAA;AAA9B,MAA+CT,OAArD;AAEA,QAAMU,eAAe,GAAGb,SAAS,GAC7B,KAD6B,GAE7BK,YAAY,KAAK,MAAjB,IAA2BM,WAAW,KAAK,IAA3C,IAAmDD,MAAM,KAAKI,SAFlE;AAIA,QAAMC,sBAAsB,GAAG5B,KAAK,CAAC6B,MAAN,CAAaL,WAAb,CAA/B;AAEAxB,EAAAA,KAAK,CAAC8B,SAAN,CAAgB,MAAM;AACpBtB,IAAAA,QAAQ,CACN,CAACK,SAAD,IACEK,YAAY,KAAK,MADnB,IAEEU,sBAAsB,CAACG,OAAvB,KAAmCP,WAH/B,EAIL,6IAA4IP,KAAK,CAACe,IAAK,IAJlJ,CAAR;AAOAJ,IAAAA,sBAAsB,CAACG,OAAvB,GAAiCP,WAAjC;AACD,GATD,EASG,CAACA,WAAD,EAAcN,YAAd,EAA4BD,KAAK,CAACe,IAAlC,CATH;AAWA,QAAMC,OAAO,gBACX,oBAAC,cAAD;AACE,IAAA,KAAK,EAAE,CACLC,MAAM,CAACC,SADF,EAELjB,YAAY,KAAK,kBAAjB,IACEA,YAAY,KAAK,2BADnB,IACkD;AAC9CkB,MAAAA,eAAe,EAAEd,MAAM,CAACe;AADsB,KAH7C,EAMLZ,YANK,CADT;AASE,IAAA,iBAAiB,EAAEP,YAAY,KAAK,MAAjB,GAA0B,MAA1B,GAAmCA;AATxD,KAWGG,QAXH,CADF;;AAgBA,MAAIK,eAAJ,EAAqB;AACnB,wBACE,oBAAC,WAAD;AAAa,MAAA,KAAK,EAAEQ,MAAM,CAACC;AAA3B,oBACE,oBAAC,MAAD;AAAQ,MAAA,OAAO,MAAf;AAAgB,MAAA,KAAK,EAAEjC,UAAU,CAACoC;AAAlC,oBACE,oBAAC,YAAD,eACMtB,OADN;AAEE,MAAA,KAAK,EAAEC,KAFT;AAGE,MAAA,YAAY,EAAEE,YAHhB;AAIE,MAAA,qBAAqB,EAAEC,qBAJzB;AAKE,MAAA,SAAS;AALX,OADF,EAQGa,OARH,CADF,CADF;AAcD;;AAED,SAAOA,OAAP;AACD,CArED;;AAoFA,MAAMM,SAAS,GAAG,SAWI;AAAA;;AAAA,MAXH;AACjBC,IAAAA,UADiB;AAEjBC,IAAAA,kBAFiB;AAGjBC,IAAAA,cAHiB;AAIjBC,IAAAA,KAJiB;AAKjBC,IAAAA,eALiB;AAMjBC,IAAAA,QANiB;AAOjBC,IAAAA,WAPiB;AAQjBC,IAAAA,WARiB;AASjBC,IAAAA,yBATiB;AAUjBC,IAAAA;AAViB,GAWG;AACpB,QAAM;AAAEhC,IAAAA,KAAF;AAASiC,IAAAA,UAAT;AAAqBlC,IAAAA,OAArB;AAA8BmC,IAAAA;AAA9B,MAAyCX,UAA/C;AACA,QAAM;AACJY,IAAAA,iBADI;AAEJC,IAAAA,uBAAuB,GAAG,MAFtB;AAGJC,IAAAA,cAHI;AAIJ/B,IAAAA,MAJI;AAKJgC,IAAAA,2BALI;AAMJ/B,IAAAA,WANI;AAOJgC,IAAAA,qBAPI;AAQJC,IAAAA,kBARI;AASJC,IAAAA,mBATI;AAUJC,IAAAA,WAVI;AAWJC,IAAAA,kBAXI;AAYJC,IAAAA,eAZI;AAaJC,IAAAA,cAbI;AAcJC,IAAAA,oBAdI;AAeJC,IAAAA,cAfI;AAgBJC,IAAAA;AAhBI,MAiBFjD,OAjBJ;AAmBA,MAAI;AACFkD,IAAAA,SADE;AAEFC,IAAAA,wBAFE;AAGFC,IAAAA,wBAHE;AAIFlD,IAAAA,YAAY,GAAG,MAJb;AAKFmD,IAAAA,gBAAgB,GAAGnD,YAAY,KAAK,MAAjB,GAA0B,YAA1B,GAAyC;AAL1D,MAMAF,OANJ;;AAQA,MAAIqD,gBAAgB,KAAK,UAArB,IAAmCpE,QAAQ,CAACa,EAAT,KAAgB,KAAvD,EAA8D;AAC5D;AACA;AACA;AACA;AACA;AACA,QAAIsD,wBAAwB,KAAKzC,SAAjC,EAA4C;AAC1CyC,MAAAA,wBAAwB,GAAG,IAA3B;AACD;;AACD,QAAID,wBAAwB,KAAKxC,SAAjC,EAA4C;AAC1CwC,MAAAA,wBAAwB,GAAG,IAA3B;AACD;;AACD,QAAID,SAAS,KAAKvC,SAAlB,EAA6B;AAC3BuC,MAAAA,SAAS,GAAG,mBAAZ;AACD;AACF,GA5CmB,CA8CpB;AACA;;;AACA,QAAMI,oBAAoB,GAAG5B,cAAH,aAAGA,cAAH,uBAAGA,cAAc,CAAE1B,OAAhB,CAAwBqD,gBAArD;AACA,QAAME,wBAAwB,GAC5BD,oBAAoB,IAAI,IAAxB,GAA+BA,oBAA/B,GAAsDD,gBADxD;;AAGA,MAAI1B,KAAK,KAAK,CAAd,EAAiB;AACf;AACA;AACAzB,IAAAA,YAAY,GAAG,MAAf;AACD;;AAED,QAAMsD,MAAM,GAAGnE,iBAAiB,EAAhC;AACA,QAAMoE,KAAK,GAAGrE,gBAAgB,EAA9B,CA3DoB,CA6DpB;;AACA,QAAMsE,OAAO,GAAGxD,YAAY,KAAK,OAAjB,IAA4BA,YAAY,KAAK,WAA7D,CA9DoB,CAgEpB;;AACA,QAAMyD,QAAQ,GACZ1E,QAAQ,CAACa,EAAT,KAAgB,KAAhB,IAAyB,EAAEb,QAAQ,CAAC2E,KAAT,IAAkB3E,QAAQ,CAAC4E,MAA7B,CAD3B;AAEA,QAAMC,WAAW,GAAGL,KAAK,CAACM,KAAN,GAAcN,KAAK,CAACO,MAAxC;AAEA,QAAMC,mBAAmB,GAAGjF,KAAK,CAACkF,UAAN,CAAiBzF,kBAAjB,CAA5B;AACA,QAAM0F,kBAAkB,GAAGnF,KAAK,CAACkF,UAAN,CAAiB1F,mBAAjB,CAA3B;AACA,QAAM4F,gBAAgB,GAAGpF,KAAK,CAACkF,UAAN,CAAiB3F,iBAAjB,CAAzB;AAEA,QAAM8F,QAAQ,GACZJ,mBAAmB,IAClBhF,QAAQ,CAACa,EAAT,KAAgB,KAAhB,IAAyB4D,OAD1B,IAECC,QAAQ,IAAIG,WAFb,GAGI,CAHJ,GAIIN,MAAM,CAACc,GALb;AAOA,QAAM;AAAEC,IAAAA;AAAF,MAAsBzF,uBAAuB,EAAnD;AAEA,QAAM0F,mBAAmB,GAAGnG,sBAAsB,CAACoF,KAAD,EAAQC,OAAR,EAAiBW,QAAjB,CAAlD;AAEA,QAAM,CAACI,kBAAD,EAAqBC,qBAArB,IACJ1F,KAAK,CAAC2F,QAAN,CAAeH,mBAAf,CADF;AAGA,QAAMpE,qBAAqB,GAAGiE,QAAQ,KAAK,CAA3C;AACA,QAAMlE,YAAY,GAAGI,MAAM,GAAGkE,kBAAH,GAAwBD,mBAAnD;AACA,QAAMI,UAAU,GAAGnD,kBAAkB,GACjC;AACEoD,IAAAA,KAAK,EAAEvG,cAAc,CACnBmD,kBAAkB,CAACzB,OADA,EAEnByB,kBAAkB,CAACxB,KAAnB,CAAyBe,IAFN;AADvB,GADiC,GAOjCoD,gBAPJ;AASA,QAAMU,iBAAiB,4BAAGP,eAAe,CAACtE,KAAK,CAAC8E,GAAP,CAAlB,0DAAG,sBAA4BC,aAAtD;AAEA,sBACE,oBAAC,MAAD;AACE,IAAA,GAAG,EAAE/E,KAAK,CAAC8E,GADb;AAEE,IAAA,OAAO,MAFT;AAGE,IAAA,KAAK,EAAE7F,UAAU,CAACoC,YAHpB;AAIE,IAAA,sBAAsB,EAAE6B,wBAJ1B;AAKE,IAAA,sBAAsB,EAAEC,wBAL1B;AAME,IAAA,cAAc,EACZvD,SAAS,GACL;AACA;AACA,SAHK,GAILyC,cAXR;AAaE,IAAA,mBAAmB,EAAEE,qBAbvB;AAcE,IAAA,kBAAkB,EAAEC,kBAdtB;AAeE,IAAA,mBAAmB,EAAEC,mBAfvB;AAgBE,IAAA,gBAAgB,EAAEL,uBAhBpB;AAiBE,IAAA,iBAAiB,EAAEnC,YAAY,KAAK,MAAjB,GAA0B,MAA1B,GAAmCA,YAjBxD;AAkBE,IAAA,cAAc,EAAEgD,SAlBlB;AAmBE,IAAA,iBAAiB,EAAEP,WAnBrB;AAoBE,IAAA,kBAAkB,EAAEC,kBApBtB;AAqBE,IAAA,eAAe,EAAEC,eArBnB;AAsBE,IAAA,cAAc,EAAEC,cAtBlB;AAuBE,IAAA,cAAc,EAAEE,cAvBlB;AAwBE,IAAA,oBAAoB,EAAED,oBAxBxB;AAyBE,IAAA,cAAc,EAAEQ,wBAzBlB;AA0BE,IAAA,kBAAkB,EAAEnB,iBA1BtB;AA2BE,IAAA,eAAe,EAAER,eA3BnB;AA4BE,IAAA,QAAQ,EAAEC,QA5BZ;AA6BE,IAAA,WAAW,EAAEC,WA7Bf;AA8BE,IAAA,WAAW,EAAEC,WA9Bf;AA+BE,IAAA,aAAa,MA/Bf;AAgCE,IAAA,gCAAgC,EAAE,KAhCpC,CAgC2C;AAhC3C;AAiCE,IAAA,yBAAyB,EAAEC,yBAjC7B,CAkCE;AAlCF;AAmCE,IAAA,oBAAoB,EAAE8C,iBAnCxB,CAmC2C;AAnC3C;AAoCE,IAAA,wBAAwB,EAAE7C,wBApC5B,CAqCE;AArCF;AAsCE,IAAA,YAAY,EAAEgB;AAtChB,kBAwCE,oBAAC,iBAAD,CAAmB,QAAnB;AAA4B,IAAA,KAAK,EAAEf;AAAnC,kBACE,oBAAC,sBAAD,CAAwB,QAAxB;AAAiC,IAAA,KAAK,EAAEjC;AAAxC,kBACE,oBAAC,kBAAD,CAAoB,QAApB;AACE,IAAA,KAAK,EAAEgE,mBAAmB,IAAIzD,WAAW,KAAK;AADhD,kBAGE,oBAAC,mBAAD,CAAqB,QAArB;AACE,IAAA,KAAK,EACHA,WAAW,KAAK,KAAhB,GAAwBL,YAAxB,GAAuCgE,kBAAvC,aAAuCA,kBAAvC,cAAuCA,kBAAvC,GAA6D;AAFjE,KAKG5D,MAAM,KAAKI,SAAX,IAAwBH,WAAW,KAAK,KAAxC,gBACC,oBAAC,IAAD;AACE,IAAA,QAAQ,EAAGyE,CAAD,IAAO;AACfP,MAAAA,qBAAqB,CAACO,CAAC,CAACC,WAAF,CAAcC,MAAd,CAAqBnB,MAAtB,CAArB;AACD;AAHH,KAKGzD,MAAM,CAAC;AACN6E,IAAAA,IAAI,EAAER,UADA;AAEN5E,IAAAA,OAFM;AAGNC,IAAAA,KAHM;AAINiC,IAAAA;AAJM,GAAD,CALT,CADD,gBAcC,oBAAC,YAAD,eACMlC,OADN;AAEE,IAAA,KAAK,EAAEC,KAFT;AAGE,IAAA,2BAA2B,EACzB6E,iBAAiB,KAAKnE,SAAtB,GACI,CAACmE,iBADL,GAEIvC,2BANR;AAQE,IAAA,WAAW,EAAE/B,WARf;AASE,IAAA,YAAY,EAAEL,YAThB;AAUE,IAAA,eAAe,EACbH,OAAO,CAACqF,eAAR,KAA4B1E,SAA5B,GACIX,OAAO,CAACqF,eADZ,GAEI1E,SAbR;AAeE,IAAA,qBAAqB,EAAEP,qBAfzB;AAgBE,IAAA,SAAS,EAAEwE,UAAU,KAAKjE;AAhB5B,KAnBJ,eAsCE,oBAAC,gBAAD;AACE,IAAA,OAAO,EAAEX,OADX;AAEE,IAAA,KAAK,EAAEC,KAFT;AAGE,IAAA,YAAY,EAAEC,YAHhB;AAIE,IAAA,YAAY,EAAEC,YAJhB;AAKE,IAAA,qBAAqB,EAAEC;AALzB,kBAOE,oBAAC,iBAAD,CAAmB,QAAnB;AAA4B,IAAA,KAAK,EAAEwE;AAAnC,KACGzC,MAAM,EADT,CAPF,CAtCF,CAHF,CADF,CADF,CAxCF,CADF;AAqGD,CApND;;AA4NA,SAASmD,oBAAT,QAAyE;AAAA,MAA3C;AAAEC,IAAAA,KAAF;AAASrD,IAAAA,UAAT;AAAqBsD,IAAAA;AAArB,GAA2C;AACvE,QAAM;AAAEC,IAAAA;AAAF,MAA0BhG,sBAAsB,CAAC8F,KAAD,CAAtD;AAEA7F,EAAAA,4BAA4B,CAAC8F,WAAD,CAA5B;AAEA,sBACE,oBAAC,WAAD;AAAa,IAAA,KAAK,EAAEtE,MAAM,CAACC;AAA3B,KACGoE,KAAK,CAACG,MAAN,CAAaC,GAAb,CAAiB,CAAC1F,KAAD,EAAQ0B,KAAR,KAAkB;AAAA;;AAClC,UAAMH,UAAU,GAAGgE,WAAW,CAACvF,KAAK,CAAC8E,GAAP,CAA9B;AACA,UAAMa,WAAW,oBAAGL,KAAK,CAACG,MAAN,CAAa/D,KAAK,GAAG,CAArB,CAAH,kDAAG,cAAyBoD,GAA7C;AACA,UAAMc,OAAO,qBAAGN,KAAK,CAACG,MAAN,CAAa/D,KAAK,GAAG,CAArB,CAAH,mDAAG,eAAyBoD,GAAzC;AACA,UAAMtD,kBAAkB,GAAGmE,WAAW,GAClCJ,WAAW,CAACI,WAAD,CADuB,GAElCjF,SAFJ;AAGA,UAAMe,cAAc,GAAGmE,OAAO,GAAGL,WAAW,CAACK,OAAD,CAAd,GAA0BlF,SAAxD;AAEA,wBACE,oBAAC,SAAD;AACE,MAAA,GAAG,EAAEV,KAAK,CAAC8E,GADb;AAEE,MAAA,KAAK,EAAEpD,KAFT;AAGE,MAAA,UAAU,EAAEH,UAHd;AAIE,MAAA,kBAAkB,EAAEC,kBAJtB;AAKE,MAAA,cAAc,EAAEC,cALlB;AAME,MAAA,eAAe,EAAE,MAAM;AACrBQ,QAAAA,UAAU,CAAC4D,IAAX,CAAgB;AACdC,UAAAA,IAAI,EAAE,iBADQ;AAEdC,UAAAA,IAAI,EAAE;AAAEC,YAAAA,OAAO,EAAE;AAAX,WAFQ;AAGdC,UAAAA,MAAM,EAAEjG,KAAK,CAAC8E;AAHA,SAAhB;AAKD,OAZH;AAaE,MAAA,QAAQ,EAAE,MAAM;AACd7C,QAAAA,UAAU,CAAC4D,IAAX,CAAgB;AACdC,UAAAA,IAAI,EAAE,eADQ;AAEdC,UAAAA,IAAI,EAAE;AAAEC,YAAAA,OAAO,EAAE;AAAX,WAFQ;AAGdC,UAAAA,MAAM,EAAEjG,KAAK,CAAC8E;AAHA,SAAhB;AAKD,OAnBH;AAoBE,MAAA,WAAW,EAAE,MAAM;AACjB7C,QAAAA,UAAU,CAAC4D,IAAX,CAAgB;AACdC,UAAAA,IAAI,EAAE,eADQ;AAEdC,UAAAA,IAAI,EAAE;AAAEC,YAAAA,OAAO,EAAE;AAAX,WAFQ;AAGdC,UAAAA,MAAM,EAAEjG,KAAK,CAAC8E;AAHA,SAAhB;AAKD,OA1BH;AA2BE,MAAA,WAAW,EAAGoB,KAAD,IAAW;AACtBjE,QAAAA,UAAU,CAACkE,QAAX,CAAoB,EAClB,GAAGvH,YAAY,CAACwH,GAAb,CAAiBF,KAAK,CAACjB,WAAN,CAAkBoB,YAAnC,CADe;AAElBC,UAAAA,MAAM,EAAEtG,KAAK,CAAC8E,GAFI;AAGlBmB,UAAAA,MAAM,EAAEX,KAAK,CAACR;AAHI,SAApB;AAMAU,QAAAA,mBAAmB,CAACxF,KAAK,CAAC8E,GAAP,CAAnB;AACD,OAnCH;AAoCE,MAAA,yBAAyB,EAAE,MAAM;AAC/B7C,QAAAA,UAAU,CAACkE,QAAX,CAAoB,EAClB,GAAGvH,YAAY,CAACwH,GAAb,EADe;AAElBE,UAAAA,MAAM,EAAEtG,KAAK,CAAC8E,GAFI;AAGlBmB,UAAAA,MAAM,EAAEX,KAAK,CAACR;AAHI,SAApB;AAKD,OA1CH;AA2CE,MAAA,wBAAwB,EAAGoB,KAAD,IAAW;AACnCjE,QAAAA,UAAU,CAACkE,QAAX,CAAoB,EAClB,GAAGvH,YAAY,CAACwH,GAAb,CAAiBF,KAAK,CAACjB,WAAN,CAAkBoB,YAAnC,CADe;AAElBC,UAAAA,MAAM,EAAEtG,KAAK,CAAC8E,GAFI;AAGlBmB,UAAAA,MAAM,EAAEX,KAAK,CAACR;AAHI,SAApB;AAKD;AAjDH,MADF;AAqDD,GA9DA,CADH,CADF;AAmED;;AAED,eAAe,SAASyB,eAAT,CAAyBC,KAAzB,EAAuC;AACpD,sBACE,oBAAC,sBAAD,qBACE,oBAAC,oBAAD,EAA0BA,KAA1B,CADF,CADF;AAKD;AAED,MAAMvF,MAAM,GAAGhC,UAAU,CAACwH,MAAX,CAAkB;AAC/BvF,EAAAA,SAAS,EAAE;AACTwF,IAAAA,IAAI,EAAE;AADG;AADoB,CAAlB,CAAf","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"]}
@@ -442,6 +442,14 @@ export declare type NativeStackNavigationOptions = {
442
442
  * Only supported on iOS and Android.
443
443
  */
444
444
  orientation?: ScreenProps['screenOrientation'];
445
+ /**
446
+ * Whether inactive screens should be suspended from re-rendering. Defaults to `false`.
447
+ * Defaults to `true` when `enableFreeze()` is run at the top of the application.
448
+ * Requires `react-native-screens` version >=3.16.0.
449
+ *
450
+ * Only supported on iOS and Android.
451
+ */
452
+ freezeOnBlur?: boolean;
445
453
  };
446
454
  export declare type NativeStackNavigatorProps = DefaultNavigatorOptions<ParamListBase, StackNavigationState<ParamListBase>, NativeStackNavigationOptions, NativeStackNavigationEventMap> & StackRouterOptions & NativeStackNavigationConfig;
447
455
  export declare type NativeStackDescriptor = Descriptor<NativeStackNavigationOptions, NativeStackNavigationProp<ParamListBase>, RouteProp<ParamListBase>>;
@@ -2,9 +2,10 @@
2
2
  import { Route } from '@react-navigation/native';
3
3
  import type { NativeStackNavigationOptions } from '../types';
4
4
  declare type Props = NativeStackNavigationOptions & {
5
+ headerTopInsetEnabled: boolean;
5
6
  headerHeight: number;
6
7
  route: Route<string>;
7
8
  canGoBack: boolean;
8
9
  };
9
- export default function 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, }: Props): JSX.Element;
10
+ export default function 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, }: Props): JSX.Element;
10
11
  export {};
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.8.0",
4
+ "version": "6.9.0",
5
5
  "keywords": [
6
6
  "react-native-component",
7
7
  "react-component",
@@ -41,17 +41,17 @@
41
41
  "clean": "del lib"
42
42
  },
43
43
  "dependencies": {
44
- "@react-navigation/elements": "^1.3.5",
44
+ "@react-navigation/elements": "^1.3.6",
45
45
  "warn-once": "^0.1.0"
46
46
  },
47
47
  "devDependencies": {
48
- "@react-navigation/native": "^6.0.12",
48
+ "@react-navigation/native": "^6.0.13",
49
49
  "@testing-library/react-native": "^7.2.0",
50
- "@types/react": "^17.0.47",
51
- "@types/react-native": "~0.68.1",
50
+ "@types/react": "~18.0.0",
51
+ "@types/react-native": "~0.69.1",
52
52
  "del-cli": "^3.0.1",
53
- "react": "17.0.2",
54
- "react-native": "~0.68.2",
53
+ "react": "18.0.0",
54
+ "react-native": "0.69.5",
55
55
  "react-native-builder-bob": "^0.18.1",
56
56
  "react-native-screens": "^3.11.1",
57
57
  "typescript": "^4.7.4"
@@ -77,5 +77,5 @@
77
77
  ]
78
78
  ]
79
79
  },
80
- "gitHead": "83aa392f1e13796d609c9df0afa44699ce4bacae"
80
+ "gitHead": "fc4c3a63ab156e17db7ba0cbd32ada319f78714e"
81
81
  }
package/src/types.tsx CHANGED
@@ -486,6 +486,14 @@ export type NativeStackNavigationOptions = {
486
486
  * Only supported on iOS and Android.
487
487
  */
488
488
  orientation?: ScreenProps['screenOrientation'];
489
+ /**
490
+ * Whether inactive screens should be suspended from re-rendering. Defaults to `false`.
491
+ * Defaults to `true` when `enableFreeze()` is run at the top of the application.
492
+ * Requires `react-native-screens` version >=3.16.0.
493
+ *
494
+ * Only supported on iOS and Android.
495
+ */
496
+ freezeOnBlur?: boolean;
489
497
  };
490
498
 
491
499
  export type NativeStackNavigatorProps = DefaultNavigatorOptions<
@@ -8,7 +8,6 @@ import {
8
8
  TextStyle,
9
9
  View,
10
10
  } from 'react-native';
11
- import { useSafeAreaInsets } from 'react-native-safe-area-context';
12
11
  import {
13
12
  isSearchBarAvailableForCurrentPlatform,
14
13
  ScreenStackHeaderBackButtonImage,
@@ -24,6 +23,7 @@ import type { NativeStackNavigationOptions } from '../types';
24
23
  import { processFonts } from './FontProcessor';
25
24
 
26
25
  type Props = NativeStackNavigationOptions & {
26
+ headerTopInsetEnabled: boolean;
27
27
  headerHeight: number;
28
28
  route: Route<string>;
29
29
  canGoBack: boolean;
@@ -54,12 +54,11 @@ export default function HeaderConfig({
54
54
  headerTitleStyle,
55
55
  headerTransparent,
56
56
  headerSearchBarOptions,
57
+ headerTopInsetEnabled,
57
58
  route,
58
59
  title,
59
60
  canGoBack,
60
61
  }: Props): JSX.Element {
61
- const insets = useSafeAreaInsets();
62
-
63
62
  const { colors } = useTheme();
64
63
  const tintColor =
65
64
  headerTintColor ?? (Platform.OS === 'ios' ? colors.primary : colors.text);
@@ -195,7 +194,7 @@ export default function HeaderConfig({
195
194
  titleFontFamily={titleFontFamily}
196
195
  titleFontSize={titleFontSize}
197
196
  titleFontWeight={titleFontWeight}
198
- topInsetEnabled={insets.top !== 0}
197
+ topInsetEnabled={headerTopInsetEnabled}
199
198
  translucent={
200
199
  // This defaults to `true`, so we can't pass `undefined`
201
200
  translucent === true
@@ -48,12 +48,14 @@ const MaybeNestedStack = ({
48
48
  route,
49
49
  presentation,
50
50
  headerHeight,
51
+ headerTopInsetEnabled,
51
52
  children,
52
53
  }: {
53
54
  options: NativeStackNavigationOptions;
54
55
  route: Route<string>;
55
56
  presentation: Exclude<StackPresentationTypes, 'push'> | 'card';
56
57
  headerHeight: number;
58
+ headerTopInsetEnabled: boolean;
57
59
  children: React.ReactNode;
58
60
  }) => {
59
61
  const { colors } = useTheme();
@@ -100,6 +102,7 @@ const MaybeNestedStack = ({
100
102
  {...options}
101
103
  route={route}
102
104
  headerHeight={headerHeight}
105
+ headerTopInsetEnabled={headerTopInsetEnabled}
103
106
  canGoBack
104
107
  />
105
108
  {content}
@@ -120,7 +123,7 @@ type SceneViewProps = {
120
123
  onAppear: () => void;
121
124
  onDisappear: () => void;
122
125
  onDismissed: ScreenProps['onDismissed'];
123
- onHeaderBackButtonClicked: () => void;
126
+ onHeaderBackButtonClicked: ScreenProps['onHeaderBackButtonClicked'];
124
127
  onNativeDismissCancelled: ScreenProps['onDismissed'];
125
128
  };
126
129
 
@@ -153,6 +156,7 @@ const SceneView = ({
153
156
  statusBarStyle,
154
157
  statusBarTranslucent,
155
158
  statusBarColor,
159
+ freezeOnBlur,
156
160
  } = options;
157
161
 
158
162
  let {
@@ -192,10 +196,6 @@ const SceneView = ({
192
196
  presentation = 'card';
193
197
  }
194
198
 
195
- const isHeaderInPush = isAndroid
196
- ? headerShown
197
- : presentation === 'card' && headerShown !== false;
198
-
199
199
  const insets = useSafeAreaInsets();
200
200
  const frame = useSafeAreaFrame();
201
201
 
@@ -207,12 +207,17 @@ const SceneView = ({
207
207
  Platform.OS === 'ios' && !(Platform.isPad || Platform.isTVOS);
208
208
  const isLandscape = frame.width > frame.height;
209
209
 
210
- const topInset = isModal || (isIPhone && isLandscape) ? 0 : insets.top;
211
-
212
210
  const isParentHeaderShown = React.useContext(HeaderShownContext);
213
211
  const parentHeaderHeight = React.useContext(HeaderHeightContext);
214
212
  const parentHeaderBack = React.useContext(HeaderBackContext);
215
213
 
214
+ const topInset =
215
+ isParentHeaderShown ||
216
+ (Platform.OS === 'ios' && isModal) ||
217
+ (isIPhone && isLandscape)
218
+ ? 0
219
+ : insets.top;
220
+
216
221
  const { preventedRoutes } = usePreventRemoveContext();
217
222
 
218
223
  const defaultHeaderHeight = getDefaultHeaderHeight(frame, isModal, topInset);
@@ -220,6 +225,7 @@ const SceneView = ({
220
225
  const [customHeaderHeight, setCustomHeaderHeight] =
221
226
  React.useState(defaultHeaderHeight);
222
227
 
228
+ const headerTopInsetEnabled = topInset !== 0;
223
229
  const headerHeight = header ? customHeaderHeight : defaultHeaderHeight;
224
230
  const headerBack = previousDescriptor
225
231
  ? {
@@ -265,23 +271,22 @@ const SceneView = ({
265
271
  onDisappear={onDisappear}
266
272
  onDismissed={onDismissed}
267
273
  isNativeStack
268
- // Props for enabling preventing removal in native-stack
269
274
  nativeBackButtonDismissalEnabled={false} // on Android
270
- // @ts-expect-error prop not publicly exported from rn-screens
271
- preventNativeDismiss={isRemovePrevented} // on iOS
272
275
  onHeaderBackButtonClicked={onHeaderBackButtonClicked}
276
+ // @ts-ignore props not exported from rn-screens
277
+ preventNativeDismiss={isRemovePrevented} // on iOS
273
278
  onNativeDismissCancelled={onNativeDismissCancelled}
279
+ // this prop is available since rn-screens 3.16
280
+ freezeOnBlur={freezeOnBlur}
274
281
  >
275
282
  <NavigationContext.Provider value={navigation}>
276
283
  <NavigationRouteContext.Provider value={route}>
277
284
  <HeaderShownContext.Provider
278
- value={isParentHeaderShown || isHeaderInPush !== false}
285
+ value={isParentHeaderShown || headerShown !== false}
279
286
  >
280
287
  <HeaderHeightContext.Provider
281
288
  value={
282
- isHeaderInPush !== false
283
- ? headerHeight
284
- : parentHeaderHeight ?? 0
289
+ headerShown !== false ? headerHeight : parentHeaderHeight ?? 0
285
290
  }
286
291
  >
287
292
  {header !== undefined && headerShown !== false ? (
@@ -306,13 +311,14 @@ const SceneView = ({
306
311
  ? !isRemovePrevented
307
312
  : headerBackButtonMenuEnabled
308
313
  }
309
- headerShown={isHeaderInPush}
314
+ headerShown={headerShown}
310
315
  headerHeight={headerHeight}
311
316
  headerBackTitle={
312
317
  options.headerBackTitle !== undefined
313
318
  ? options.headerBackTitle
314
- : headerBack?.title
319
+ : undefined
315
320
  }
321
+ headerTopInsetEnabled={headerTopInsetEnabled}
316
322
  canGoBack={headerBack !== undefined}
317
323
  />
318
324
  )}
@@ -321,6 +327,7 @@ const SceneView = ({
321
327
  route={route}
322
328
  presentation={presentation}
323
329
  headerHeight={headerHeight}
330
+ headerTopInsetEnabled={headerTopInsetEnabled}
324
331
  >
325
332
  <HeaderBackContext.Provider value={headerBack}>
326
333
  {render()}