@react-navigation/bottom-tabs 6.1.0 → 6.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -23,6 +23,7 @@ function _extends() { _extends = Object.assign || function (target) { for (var i
23
23
 
24
24
  function BottomTabNavigator(_ref) {
25
25
  let {
26
+ id,
26
27
  initialRouteName,
27
28
  backBehavior,
28
29
  children,
@@ -79,6 +80,7 @@ function BottomTabNavigator(_ref) {
79
80
  navigation,
80
81
  NavigationContent
81
82
  } = (0, _native.useNavigationBuilder)(_native.TabRouter, {
83
+ id,
82
84
  initialRouteName,
83
85
  backBehavior,
84
86
  children,
@@ -1 +1 @@
1
- {"version":3,"sources":["createBottomTabNavigator.tsx"],"names":["BottomTabNavigator","initialRouteName","backBehavior","children","screenListeners","screenOptions","sceneContainerStyle","restWithDeprecated","lazy","tabBarOptions","rest","defaultScreenOptions","Object","assign","tabBarHideOnKeyboard","keyboardHidesTabBar","tabBarActiveTintColor","activeTintColor","tabBarInactiveTintColor","inactiveTintColor","tabBarActiveBackgroundColor","activeBackgroundColor","tabBarInactiveBackgroundColor","inactiveBackgroundColor","tabBarAllowFontScaling","allowFontScaling","tabBarShowLabel","showLabel","tabBarLabelStyle","labelStyle","tabBarIconStyle","iconStyle","tabBarItemStyle","tabStyle","tabBarLabelPosition","labelPosition","adaptive","undefined","tabBarStyle","display","tabBarVisible","keys","forEach","key","JSON","stringify","state","descriptors","navigation","NavigationContent","TabRouter"],"mappings":";;;;;;;AAAA;;AAUA;;AACA;;AAOA;;;;;;;;;;AAWA,SAASA,kBAAT,OAQU;AAAA,MARkB;AAC1BC,IAAAA,gBAD0B;AAE1BC,IAAAA,YAF0B;AAG1BC,IAAAA,QAH0B;AAI1BC,IAAAA,eAJ0B;AAK1BC,IAAAA,aAL0B;AAM1BC,IAAAA,mBAN0B;AAO1B,OAAGC;AAPuB,GAQlB;AACR,QAAM;AACJ;AACAC,IAAAA,IAFI;AAGJ;AACAC,IAAAA,aAJI;AAKJ,OAAGC;AALC,MAMFH,kBANJ;AAQA,MAAII,oBAAgD,GAAG,EAAvD;;AAEA,MAAIF,aAAJ,EAAmB;AAAA;;AACjBG,IAAAA,MAAM,CAACC,MAAP,CAAcF,oBAAd,EAAoC;AAClCG,MAAAA,oBAAoB,EAAEL,aAAa,CAACM,mBADF;AAElCC,MAAAA,qBAAqB,EAAEP,aAAa,CAACQ,eAFH;AAGlCC,MAAAA,uBAAuB,EAAET,aAAa,CAACU,iBAHL;AAIlCC,MAAAA,2BAA2B,EAAEX,aAAa,CAACY,qBAJT;AAKlCC,MAAAA,6BAA6B,EAAEb,aAAa,CAACc,uBALX;AAMlCC,MAAAA,sBAAsB,EAAEf,aAAa,CAACgB,gBANJ;AAOlCC,MAAAA,eAAe,EAAEjB,aAAa,CAACkB,SAPG;AAQlCC,MAAAA,gBAAgB,EAAEnB,aAAa,CAACoB,UARE;AASlCC,MAAAA,eAAe,EAAErB,aAAa,CAACsB,SATG;AAUlCC,MAAAA,eAAe,EAAEvB,aAAa,CAACwB,QAVG;AAWlCC,MAAAA,mBAAmB,2BACjBzB,aAAa,CAAC0B,aADG,yEAEhB1B,aAAa,CAAC2B,QAAd,KAA2B,KAA3B,GAAmC,YAAnC,GAAkDC,SAbnB;AAclCC,MAAAA,WAAW,EAAE,CACX;AAAEC,QAAAA,OAAO,EAAE9B,aAAa,CAAC+B,aAAd,GAA8B,MAA9B,GAAuC;AAAlD,OADW,EAEX7B,oBAAoB,CAAC2B,WAFV;AAdqB,KAApC;AAqBE1B,IAAAA,MAAM,CAAC6B,IAAP,CAAY9B,oBAAZ,CADF,CAEE+B,OAFF,CAEWC,GAAD,IAAS;AACjB,UAAIhC,oBAAoB,CAACgC,GAAD,CAApB,KAA8BN,SAAlC,EAA6C;AAC3C;AACA,eAAO1B,oBAAoB,CAACgC,GAAD,CAA3B;AACD;AACF,KAPD;AASA,2BACElC,aADF,EAEG,4LAA2LmC,IAAI,CAACC,SAAL,CAC1LlC,oBAD0L,EAE1L,IAF0L,EAG1L,CAH0L,CAI1L,yFANJ;AAQD;;AAED,MAAI,OAAOH,IAAP,KAAgB,SAApB,EAA+B;AAC7BG,IAAAA,oBAAoB,CAACH,IAArB,GAA4BA,IAA5B;AAEA,2BACE,IADF,EAEG,+KAFH;AAID;;AAED,QAAM;AAAEsC,IAAAA,KAAF;AAASC,IAAAA,WAAT;AAAsBC,IAAAA,UAAtB;AAAkCC,IAAAA;AAAlC,MACJ,kCAMEC,iBANF,EAMa;AACXjD,IAAAA,gBADW;AAEXC,IAAAA,YAFW;AAGXC,IAAAA,QAHW;AAIXC,IAAAA,eAJW;AAKXC,IAAAA,aALW;AAMXM,IAAAA;AANW,GANb,CADF;AAgBA,sBACE,oBAAC,iBAAD,qBACE,oBAAC,sBAAD,eACMD,IADN;AAEE,IAAA,KAAK,EAAEoC,KAFT;AAGE,IAAA,UAAU,EAAEE,UAHd;AAIE,IAAA,WAAW,EAAED,WAJf;AAKE,IAAA,mBAAmB,EAAEzC;AALvB,KADF,CADF;AAWD;;eAEc,oCAKbN,kBALa,C","sourcesContent":["import {\n createNavigatorFactory,\n DefaultNavigatorOptions,\n ParamListBase,\n TabActionHelpers,\n TabNavigationState,\n TabRouter,\n TabRouterOptions,\n useNavigationBuilder,\n} from '@react-navigation/native';\nimport * as React from 'react';\nimport warnOnce from 'warn-once';\n\nimport type {\n BottomTabNavigationConfig,\n BottomTabNavigationEventMap,\n BottomTabNavigationOptions,\n} from '../types';\nimport BottomTabView from '../views/BottomTabView';\n\ntype Props = DefaultNavigatorOptions<\n ParamListBase,\n TabNavigationState<ParamListBase>,\n BottomTabNavigationOptions,\n BottomTabNavigationEventMap\n> &\n TabRouterOptions &\n BottomTabNavigationConfig;\n\nfunction BottomTabNavigator({\n initialRouteName,\n backBehavior,\n children,\n screenListeners,\n screenOptions,\n sceneContainerStyle,\n ...restWithDeprecated\n}: Props) {\n const {\n // @ts-expect-error: lazy is deprecated\n lazy,\n // @ts-expect-error: tabBarOptions is deprecated\n tabBarOptions,\n ...rest\n } = restWithDeprecated;\n\n let defaultScreenOptions: BottomTabNavigationOptions = {};\n\n if (tabBarOptions) {\n Object.assign(defaultScreenOptions, {\n tabBarHideOnKeyboard: tabBarOptions.keyboardHidesTabBar,\n tabBarActiveTintColor: tabBarOptions.activeTintColor,\n tabBarInactiveTintColor: tabBarOptions.inactiveTintColor,\n tabBarActiveBackgroundColor: tabBarOptions.activeBackgroundColor,\n tabBarInactiveBackgroundColor: tabBarOptions.inactiveBackgroundColor,\n tabBarAllowFontScaling: tabBarOptions.allowFontScaling,\n tabBarShowLabel: tabBarOptions.showLabel,\n tabBarLabelStyle: tabBarOptions.labelStyle,\n tabBarIconStyle: tabBarOptions.iconStyle,\n tabBarItemStyle: tabBarOptions.tabStyle,\n tabBarLabelPosition:\n tabBarOptions.labelPosition ??\n (tabBarOptions.adaptive === false ? 'below-icon' : undefined),\n tabBarStyle: [\n { display: tabBarOptions.tabBarVisible ? 'none' : 'flex' },\n defaultScreenOptions.tabBarStyle,\n ],\n });\n\n (\n Object.keys(defaultScreenOptions) as (keyof BottomTabNavigationOptions)[]\n ).forEach((key) => {\n if (defaultScreenOptions[key] === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete defaultScreenOptions[key];\n }\n });\n\n warnOnce(\n tabBarOptions,\n `Bottom Tab Navigator: 'tabBarOptions' is deprecated. Migrate the options to 'screenOptions' instead.\\n\\nPlace the following in 'screenOptions' in your code to keep current behavior:\\n\\n${JSON.stringify(\n defaultScreenOptions,\n null,\n 2\n )}\\n\\nSee https://reactnavigation.org/docs/bottom-tab-navigator#options for more details.`\n );\n }\n\n if (typeof lazy === 'boolean') {\n defaultScreenOptions.lazy = lazy;\n\n warnOnce(\n true,\n `Bottom Tab Navigator: 'lazy' in props is deprecated. Move it to 'screenOptions' instead.\\n\\nSee https://reactnavigation.org/docs/bottom-tab-navigator/#lazy for more details.`\n );\n }\n\n const { state, descriptors, navigation, NavigationContent } =\n useNavigationBuilder<\n TabNavigationState<ParamListBase>,\n TabRouterOptions,\n TabActionHelpers<ParamListBase>,\n BottomTabNavigationOptions,\n BottomTabNavigationEventMap\n >(TabRouter, {\n initialRouteName,\n backBehavior,\n children,\n screenListeners,\n screenOptions,\n defaultScreenOptions,\n });\n\n return (\n <NavigationContent>\n <BottomTabView\n {...rest}\n state={state}\n navigation={navigation}\n descriptors={descriptors}\n sceneContainerStyle={sceneContainerStyle}\n />\n </NavigationContent>\n );\n}\n\nexport default createNavigatorFactory<\n TabNavigationState<ParamListBase>,\n BottomTabNavigationOptions,\n BottomTabNavigationEventMap,\n typeof BottomTabNavigator\n>(BottomTabNavigator);\n"]}
1
+ {"version":3,"sources":["createBottomTabNavigator.tsx"],"names":["BottomTabNavigator","id","initialRouteName","backBehavior","children","screenListeners","screenOptions","sceneContainerStyle","restWithDeprecated","lazy","tabBarOptions","rest","defaultScreenOptions","Object","assign","tabBarHideOnKeyboard","keyboardHidesTabBar","tabBarActiveTintColor","activeTintColor","tabBarInactiveTintColor","inactiveTintColor","tabBarActiveBackgroundColor","activeBackgroundColor","tabBarInactiveBackgroundColor","inactiveBackgroundColor","tabBarAllowFontScaling","allowFontScaling","tabBarShowLabel","showLabel","tabBarLabelStyle","labelStyle","tabBarIconStyle","iconStyle","tabBarItemStyle","tabStyle","tabBarLabelPosition","labelPosition","adaptive","undefined","tabBarStyle","display","tabBarVisible","keys","forEach","key","JSON","stringify","state","descriptors","navigation","NavigationContent","TabRouter"],"mappings":";;;;;;;AAAA;;AAUA;;AACA;;AAOA;;;;;;;;;;AAWA,SAASA,kBAAT,OASU;AAAA,MATkB;AAC1BC,IAAAA,EAD0B;AAE1BC,IAAAA,gBAF0B;AAG1BC,IAAAA,YAH0B;AAI1BC,IAAAA,QAJ0B;AAK1BC,IAAAA,eAL0B;AAM1BC,IAAAA,aAN0B;AAO1BC,IAAAA,mBAP0B;AAQ1B,OAAGC;AARuB,GASlB;AACR,QAAM;AACJ;AACAC,IAAAA,IAFI;AAGJ;AACAC,IAAAA,aAJI;AAKJ,OAAGC;AALC,MAMFH,kBANJ;AAQA,MAAII,oBAAgD,GAAG,EAAvD;;AAEA,MAAIF,aAAJ,EAAmB;AAAA;;AACjBG,IAAAA,MAAM,CAACC,MAAP,CAAcF,oBAAd,EAAoC;AAClCG,MAAAA,oBAAoB,EAAEL,aAAa,CAACM,mBADF;AAElCC,MAAAA,qBAAqB,EAAEP,aAAa,CAACQ,eAFH;AAGlCC,MAAAA,uBAAuB,EAAET,aAAa,CAACU,iBAHL;AAIlCC,MAAAA,2BAA2B,EAAEX,aAAa,CAACY,qBAJT;AAKlCC,MAAAA,6BAA6B,EAAEb,aAAa,CAACc,uBALX;AAMlCC,MAAAA,sBAAsB,EAAEf,aAAa,CAACgB,gBANJ;AAOlCC,MAAAA,eAAe,EAAEjB,aAAa,CAACkB,SAPG;AAQlCC,MAAAA,gBAAgB,EAAEnB,aAAa,CAACoB,UARE;AASlCC,MAAAA,eAAe,EAAErB,aAAa,CAACsB,SATG;AAUlCC,MAAAA,eAAe,EAAEvB,aAAa,CAACwB,QAVG;AAWlCC,MAAAA,mBAAmB,2BACjBzB,aAAa,CAAC0B,aADG,yEAEhB1B,aAAa,CAAC2B,QAAd,KAA2B,KAA3B,GAAmC,YAAnC,GAAkDC,SAbnB;AAclCC,MAAAA,WAAW,EAAE,CACX;AAAEC,QAAAA,OAAO,EAAE9B,aAAa,CAAC+B,aAAd,GAA8B,MAA9B,GAAuC;AAAlD,OADW,EAEX7B,oBAAoB,CAAC2B,WAFV;AAdqB,KAApC;AAqBE1B,IAAAA,MAAM,CAAC6B,IAAP,CAAY9B,oBAAZ,CADF,CAEE+B,OAFF,CAEWC,GAAD,IAAS;AACjB,UAAIhC,oBAAoB,CAACgC,GAAD,CAApB,KAA8BN,SAAlC,EAA6C;AAC3C;AACA,eAAO1B,oBAAoB,CAACgC,GAAD,CAA3B;AACD;AACF,KAPD;AASA,2BACElC,aADF,EAEG,4LAA2LmC,IAAI,CAACC,SAAL,CAC1LlC,oBAD0L,EAE1L,IAF0L,EAG1L,CAH0L,CAI1L,yFANJ;AAQD;;AAED,MAAI,OAAOH,IAAP,KAAgB,SAApB,EAA+B;AAC7BG,IAAAA,oBAAoB,CAACH,IAArB,GAA4BA,IAA5B;AAEA,2BACE,IADF,EAEG,+KAFH;AAID;;AAED,QAAM;AAAEsC,IAAAA,KAAF;AAASC,IAAAA,WAAT;AAAsBC,IAAAA,UAAtB;AAAkCC,IAAAA;AAAlC,MACJ,kCAMEC,iBANF,EAMa;AACXlD,IAAAA,EADW;AAEXC,IAAAA,gBAFW;AAGXC,IAAAA,YAHW;AAIXC,IAAAA,QAJW;AAKXC,IAAAA,eALW;AAMXC,IAAAA,aANW;AAOXM,IAAAA;AAPW,GANb,CADF;AAiBA,sBACE,oBAAC,iBAAD,qBACE,oBAAC,sBAAD,eACMD,IADN;AAEE,IAAA,KAAK,EAAEoC,KAFT;AAGE,IAAA,UAAU,EAAEE,UAHd;AAIE,IAAA,WAAW,EAAED,WAJf;AAKE,IAAA,mBAAmB,EAAEzC;AALvB,KADF,CADF;AAWD;;eAEc,oCAKbP,kBALa,C","sourcesContent":["import {\n createNavigatorFactory,\n DefaultNavigatorOptions,\n ParamListBase,\n TabActionHelpers,\n TabNavigationState,\n TabRouter,\n TabRouterOptions,\n useNavigationBuilder,\n} from '@react-navigation/native';\nimport * as React from 'react';\nimport warnOnce from 'warn-once';\n\nimport type {\n BottomTabNavigationConfig,\n BottomTabNavigationEventMap,\n BottomTabNavigationOptions,\n} from '../types';\nimport BottomTabView from '../views/BottomTabView';\n\ntype Props = DefaultNavigatorOptions<\n ParamListBase,\n TabNavigationState<ParamListBase>,\n BottomTabNavigationOptions,\n BottomTabNavigationEventMap\n> &\n TabRouterOptions &\n BottomTabNavigationConfig;\n\nfunction BottomTabNavigator({\n id,\n initialRouteName,\n backBehavior,\n children,\n screenListeners,\n screenOptions,\n sceneContainerStyle,\n ...restWithDeprecated\n}: Props) {\n const {\n // @ts-expect-error: lazy is deprecated\n lazy,\n // @ts-expect-error: tabBarOptions is deprecated\n tabBarOptions,\n ...rest\n } = restWithDeprecated;\n\n let defaultScreenOptions: BottomTabNavigationOptions = {};\n\n if (tabBarOptions) {\n Object.assign(defaultScreenOptions, {\n tabBarHideOnKeyboard: tabBarOptions.keyboardHidesTabBar,\n tabBarActiveTintColor: tabBarOptions.activeTintColor,\n tabBarInactiveTintColor: tabBarOptions.inactiveTintColor,\n tabBarActiveBackgroundColor: tabBarOptions.activeBackgroundColor,\n tabBarInactiveBackgroundColor: tabBarOptions.inactiveBackgroundColor,\n tabBarAllowFontScaling: tabBarOptions.allowFontScaling,\n tabBarShowLabel: tabBarOptions.showLabel,\n tabBarLabelStyle: tabBarOptions.labelStyle,\n tabBarIconStyle: tabBarOptions.iconStyle,\n tabBarItemStyle: tabBarOptions.tabStyle,\n tabBarLabelPosition:\n tabBarOptions.labelPosition ??\n (tabBarOptions.adaptive === false ? 'below-icon' : undefined),\n tabBarStyle: [\n { display: tabBarOptions.tabBarVisible ? 'none' : 'flex' },\n defaultScreenOptions.tabBarStyle,\n ],\n });\n\n (\n Object.keys(defaultScreenOptions) as (keyof BottomTabNavigationOptions)[]\n ).forEach((key) => {\n if (defaultScreenOptions[key] === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete defaultScreenOptions[key];\n }\n });\n\n warnOnce(\n tabBarOptions,\n `Bottom Tab Navigator: 'tabBarOptions' is deprecated. Migrate the options to 'screenOptions' instead.\\n\\nPlace the following in 'screenOptions' in your code to keep current behavior:\\n\\n${JSON.stringify(\n defaultScreenOptions,\n null,\n 2\n )}\\n\\nSee https://reactnavigation.org/docs/bottom-tab-navigator#options for more details.`\n );\n }\n\n if (typeof lazy === 'boolean') {\n defaultScreenOptions.lazy = lazy;\n\n warnOnce(\n true,\n `Bottom Tab Navigator: 'lazy' in props is deprecated. Move it to 'screenOptions' instead.\\n\\nSee https://reactnavigation.org/docs/bottom-tab-navigator/#lazy for more details.`\n );\n }\n\n const { state, descriptors, navigation, NavigationContent } =\n useNavigationBuilder<\n TabNavigationState<ParamListBase>,\n TabRouterOptions,\n TabActionHelpers<ParamListBase>,\n BottomTabNavigationOptions,\n BottomTabNavigationEventMap\n >(TabRouter, {\n id,\n initialRouteName,\n backBehavior,\n children,\n screenListeners,\n screenOptions,\n defaultScreenOptions,\n });\n\n return (\n <NavigationContent>\n <BottomTabView\n {...rest}\n state={state}\n navigation={navigation}\n descriptors={descriptors}\n sceneContainerStyle={sceneContainerStyle}\n />\n </NavigationContent>\n );\n}\n\nexport default createNavigatorFactory<\n TabNavigationState<ParamListBase>,\n BottomTabNavigationOptions,\n BottomTabNavigationEventMap,\n typeof BottomTabNavigator\n>(BottomTabNavigator);\n"]}
@@ -23,14 +23,14 @@ function _extends() { _extends = Object.assign || function (target) { for (var i
23
23
 
24
24
  function Badge(_ref) {
25
25
  let {
26
- visible = true,
27
- size = 18,
28
26
  children,
29
27
  style,
28
+ visible = true,
29
+ size = 18,
30
30
  ...rest
31
31
  } = _ref;
32
32
  const [opacity] = React.useState(() => new _reactNative.Animated.Value(visible ? 1 : 0));
33
- const [rendered, setRendered] = React.useState(visible ? true : false);
33
+ const [rendered, setRendered] = React.useState(visible);
34
34
  const theme = (0, _native.useTheme)();
35
35
  React.useEffect(() => {
36
36
  if (!rendered) {
@@ -54,12 +54,12 @@ function Badge(_ref) {
54
54
  return () => opacity.stopAnimation();
55
55
  }, [opacity, rendered, visible]);
56
56
 
57
- if (visible && !rendered) {
58
- setRendered(true);
59
- }
60
-
61
- if (!visible && !rendered) {
62
- return null;
57
+ if (!rendered) {
58
+ if (visible) {
59
+ setRendered(true);
60
+ } else {
61
+ return null;
62
+ }
63
63
  } // @ts-expect-error: backgroundColor definitely exists
64
64
 
65
65
 
@@ -73,19 +73,19 @@ function Badge(_ref) {
73
73
  return /*#__PURE__*/React.createElement(_reactNative.Animated.Text, _extends({
74
74
  numberOfLines: 1,
75
75
  style: [{
76
- opacity,
77
76
  transform: [{
78
77
  scale: opacity.interpolate({
79
78
  inputRange: [0, 1],
80
79
  outputRange: [0.5, 1]
81
80
  })
82
81
  }],
83
- backgroundColor,
84
82
  color: textColor,
85
- fontSize,
86
83
  lineHeight: size - 1,
87
84
  height: size,
88
85
  minWidth: size,
86
+ opacity,
87
+ backgroundColor,
88
+ fontSize,
89
89
  borderRadius
90
90
  }, styles.container, restStyle]
91
91
  }, rest), children);
@@ -1 +1 @@
1
- {"version":3,"sources":["Badge.tsx"],"names":["Badge","visible","size","children","style","rest","opacity","React","useState","Animated","Value","rendered","setRendered","theme","useEffect","timing","toValue","duration","useNativeDriver","start","finished","stopAnimation","backgroundColor","colors","notification","restStyle","StyleSheet","flatten","textColor","isLight","borderRadius","fontSize","Math","floor","transform","scale","interpolate","inputRange","outputRange","color","lineHeight","height","minWidth","styles","container","create","alignSelf","textAlign","paddingHorizontal","overflow"],"mappings":"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","sourcesContent":["import { useTheme } from '@react-navigation/native';\nimport color from 'color';\nimport * as React from 'react';\nimport { Animated, StyleProp, StyleSheet, TextStyle } from 'react-native';\n\ntype Props = {\n /**\n * Whether the badge is visible\n */\n visible: boolean;\n /**\n * Content of the `Badge`.\n */\n children?: string | number;\n /**\n * Size of the `Badge`.\n */\n size?: number;\n /**\n * Style object for the tab bar container.\n */\n style?: Animated.WithAnimatedValue<StyleProp<TextStyle>>;\n};\n\nexport default function Badge({\n visible = true,\n size = 18,\n children,\n style,\n ...rest\n}: Props) {\n const [opacity] = React.useState(() => new Animated.Value(visible ? 1 : 0));\n const [rendered, setRendered] = React.useState(visible ? true : false);\n\n const theme = useTheme();\n\n React.useEffect(() => {\n if (!rendered) {\n return;\n }\n\n Animated.timing(opacity, {\n toValue: visible ? 1 : 0,\n duration: 150,\n useNativeDriver: true,\n }).start(({ finished }) => {\n if (finished && !visible) {\n setRendered(false);\n }\n });\n\n return () => opacity.stopAnimation();\n }, [opacity, rendered, visible]);\n\n if (visible && !rendered) {\n setRendered(true);\n }\n\n if (!visible && !rendered) {\n return null;\n }\n\n // @ts-expect-error: backgroundColor definitely exists\n const { backgroundColor = theme.colors.notification, ...restStyle } =\n StyleSheet.flatten(style) || {};\n const textColor = color(backgroundColor).isLight() ? 'black' : 'white';\n\n const borderRadius = size / 2;\n const fontSize = Math.floor((size * 3) / 4);\n\n return (\n <Animated.Text\n numberOfLines={1}\n style={[\n {\n opacity,\n transform: [\n {\n scale: opacity.interpolate({\n inputRange: [0, 1],\n outputRange: [0.5, 1],\n }),\n },\n ],\n backgroundColor,\n color: textColor,\n fontSize,\n lineHeight: size - 1,\n height: size,\n minWidth: size,\n borderRadius,\n },\n styles.container,\n restStyle,\n ]}\n {...rest}\n >\n {children}\n </Animated.Text>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n alignSelf: 'flex-end',\n textAlign: 'center',\n paddingHorizontal: 4,\n overflow: 'hidden',\n },\n});\n"]}
1
+ {"version":3,"sources":["Badge.tsx"],"names":["Badge","children","style","visible","size","rest","opacity","React","useState","Animated","Value","rendered","setRendered","theme","useEffect","timing","toValue","duration","useNativeDriver","start","finished","stopAnimation","backgroundColor","colors","notification","restStyle","StyleSheet","flatten","textColor","isLight","borderRadius","fontSize","Math","floor","transform","scale","interpolate","inputRange","outputRange","color","lineHeight","height","minWidth","styles","container","create","alignSelf","textAlign","paddingHorizontal","overflow"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;;;;;AAqBe,SAASA,KAAT,OAML;AAAA,MANoB;AAC5BC,IAAAA,QAD4B;AAE5BC,IAAAA,KAF4B;AAG5BC,IAAAA,OAAO,GAAG,IAHkB;AAI5BC,IAAAA,IAAI,GAAG,EAJqB;AAK5B,OAAGC;AALyB,GAMpB;AACR,QAAM,CAACC,OAAD,IAAYC,KAAK,CAACC,QAAN,CAAe,MAAM,IAAIC,sBAASC,KAAb,CAAmBP,OAAO,GAAG,CAAH,GAAO,CAAjC,CAArB,CAAlB;AACA,QAAM,CAACQ,QAAD,EAAWC,WAAX,IAA0BL,KAAK,CAACC,QAAN,CAAeL,OAAf,CAAhC;AAEA,QAAMU,KAAK,GAAG,uBAAd;AAEAN,EAAAA,KAAK,CAACO,SAAN,CAAgB,MAAM;AACpB,QAAI,CAACH,QAAL,EAAe;AACb;AACD;;AAEDF,0BAASM,MAAT,CAAgBT,OAAhB,EAAyB;AACvBU,MAAAA,OAAO,EAAEb,OAAO,GAAG,CAAH,GAAO,CADA;AAEvBc,MAAAA,QAAQ,EAAE,GAFa;AAGvBC,MAAAA,eAAe,EAAE;AAHM,KAAzB,EAIGC,KAJH,CAIS,SAAkB;AAAA,UAAjB;AAAEC,QAAAA;AAAF,OAAiB;;AACzB,UAAIA,QAAQ,IAAI,CAACjB,OAAjB,EAA0B;AACxBS,QAAAA,WAAW,CAAC,KAAD,CAAX;AACD;AACF,KARD;;AAUA,WAAO,MAAMN,OAAO,CAACe,aAAR,EAAb;AACD,GAhBD,EAgBG,CAACf,OAAD,EAAUK,QAAV,EAAoBR,OAApB,CAhBH;;AAkBA,MAAI,CAACQ,QAAL,EAAe;AACb,QAAIR,OAAJ,EAAa;AACXS,MAAAA,WAAW,CAAC,IAAD,CAAX;AACD,KAFD,MAEO;AACL,aAAO,IAAP;AACD;AACF,GA9BO,CAgCR;;;AACA,QAAM;AAAEU,IAAAA,eAAe,GAAGT,KAAK,CAACU,MAAN,CAAaC,YAAjC;AAA+C,OAAGC;AAAlD,MACJC,wBAAWC,OAAX,CAAmBzB,KAAnB,KAA6B,EAD/B;AAEA,QAAM0B,SAAS,GAAG,oBAAMN,eAAN,EAAuBO,OAAvB,KAAmC,OAAnC,GAA6C,OAA/D;AAEA,QAAMC,YAAY,GAAG1B,IAAI,GAAG,CAA5B;AACA,QAAM2B,QAAQ,GAAGC,IAAI,CAACC,KAAL,CAAY7B,IAAI,GAAG,CAAR,GAAa,CAAxB,CAAjB;AAEA,sBACE,oBAAC,qBAAD,CAAU,IAAV;AACE,IAAA,aAAa,EAAE,CADjB;AAEE,IAAA,KAAK,EAAE,CACL;AACE8B,MAAAA,SAAS,EAAE,CACT;AACEC,QAAAA,KAAK,EAAE7B,OAAO,CAAC8B,WAAR,CAAoB;AACzBC,UAAAA,UAAU,EAAE,CAAC,CAAD,EAAI,CAAJ,CADa;AAEzBC,UAAAA,WAAW,EAAE,CAAC,GAAD,EAAM,CAAN;AAFY,SAApB;AADT,OADS,CADb;AASEC,MAAAA,KAAK,EAAEX,SATT;AAUEY,MAAAA,UAAU,EAAEpC,IAAI,GAAG,CAVrB;AAWEqC,MAAAA,MAAM,EAAErC,IAXV;AAYEsC,MAAAA,QAAQ,EAAEtC,IAZZ;AAaEE,MAAAA,OAbF;AAcEgB,MAAAA,eAdF;AAeES,MAAAA,QAfF;AAgBED,MAAAA;AAhBF,KADK,EAmBLa,MAAM,CAACC,SAnBF,EAoBLnB,SApBK;AAFT,KAwBMpB,IAxBN,GA0BGJ,QA1BH,CADF;AA8BD;;AAED,MAAM0C,MAAM,GAAGjB,wBAAWmB,MAAX,CAAkB;AAC/BD,EAAAA,SAAS,EAAE;AACTE,IAAAA,SAAS,EAAE,UADF;AAETC,IAAAA,SAAS,EAAE,QAFF;AAGTC,IAAAA,iBAAiB,EAAE,CAHV;AAITC,IAAAA,QAAQ,EAAE;AAJD;AADoB,CAAlB,CAAf","sourcesContent":["import { useTheme } from '@react-navigation/native';\nimport color from 'color';\nimport * as React from 'react';\nimport { Animated, StyleProp, StyleSheet, TextStyle } from 'react-native';\n\ntype Props = {\n /**\n * Whether the badge is visible\n */\n visible: boolean;\n /**\n * Content of the `Badge`.\n */\n children?: string | number;\n /**\n * Size of the `Badge`.\n */\n size?: number;\n /**\n * Style object for the tab bar container.\n */\n style?: Animated.WithAnimatedValue<StyleProp<TextStyle>>;\n};\n\nexport default function Badge({\n children,\n style,\n visible = true,\n size = 18,\n ...rest\n}: Props) {\n const [opacity] = React.useState(() => new Animated.Value(visible ? 1 : 0));\n const [rendered, setRendered] = React.useState(visible);\n\n const theme = useTheme();\n\n React.useEffect(() => {\n if (!rendered) {\n return;\n }\n\n Animated.timing(opacity, {\n toValue: visible ? 1 : 0,\n duration: 150,\n useNativeDriver: true,\n }).start(({ finished }) => {\n if (finished && !visible) {\n setRendered(false);\n }\n });\n\n return () => opacity.stopAnimation();\n }, [opacity, rendered, visible]);\n\n if (!rendered) {\n if (visible) {\n setRendered(true);\n } else {\n return null;\n }\n }\n\n // @ts-expect-error: backgroundColor definitely exists\n const { backgroundColor = theme.colors.notification, ...restStyle } =\n StyleSheet.flatten(style) || {};\n const textColor = color(backgroundColor).isLight() ? 'black' : 'white';\n\n const borderRadius = size / 2;\n const fontSize = Math.floor((size * 3) / 4);\n\n return (\n <Animated.Text\n numberOfLines={1}\n style={[\n {\n transform: [\n {\n scale: opacity.interpolate({\n inputRange: [0, 1],\n outputRange: [0.5, 1],\n }),\n },\n ],\n color: textColor,\n lineHeight: size - 1,\n height: size,\n minWidth: size,\n opacity,\n backgroundColor,\n fontSize,\n borderRadius,\n },\n styles.container,\n restStyle,\n ]}\n {...rest}\n >\n {children}\n </Animated.Text>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n alignSelf: 'flex-end',\n textAlign: 'center',\n paddingHorizontal: 4,\n overflow: 'hidden',\n },\n});\n"]}
@@ -84,6 +84,7 @@ function BottomTabView(props) {
84
84
  } = state;
85
85
  return /*#__PURE__*/React.createElement(_elements.SafeAreaProviderCompat, null, /*#__PURE__*/React.createElement(_ScreenFallback.MaybeScreenContainer, {
86
86
  enabled: detachInactiveScreens,
87
+ hasTwoStates: true,
87
88
  style: styles.container
88
89
  }, routes.map((route, index) => {
89
90
  const descriptor = descriptors[route.key];
@@ -1 +1 @@
1
- {"version":3,"sources":["BottomTabView.tsx"],"names":["BottomTabView","props","tabBar","state","navigation","descriptors","safeAreaInsets","detachInactiveScreens","Platform","OS","sceneContainerStyle","focusedRouteKey","routes","index","key","loaded","setLoaded","React","useState","includes","dimensions","SafeAreaProviderCompat","initialMetrics","frame","tabBarHeight","setTabBarHeight","layout","width","height","insets","style","options","tabBarStyle","renderTabBar","top","right","bottom","left","styles","container","map","route","descriptor","lazy","unmountOnBlur","isFocused","header","name","StyleSheet","absoluteFill","zIndex","headerShown","headerTransparent","headerStatusBarHeight","render","create","flex","overflow"],"mappings":"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","sourcesContent":["import {\n getHeaderTitle,\n Header,\n SafeAreaProviderCompat,\n Screen,\n} from '@react-navigation/elements';\nimport type {\n ParamListBase,\n TabNavigationState,\n} from '@react-navigation/native';\nimport * as React from 'react';\nimport { Platform, StyleSheet } from 'react-native';\nimport { SafeAreaInsetsContext } from 'react-native-safe-area-context';\n\nimport type {\n BottomTabBarProps,\n BottomTabDescriptorMap,\n BottomTabHeaderProps,\n BottomTabNavigationConfig,\n BottomTabNavigationHelpers,\n BottomTabNavigationProp,\n} from '../types';\nimport BottomTabBarHeightCallbackContext from '../utils/BottomTabBarHeightCallbackContext';\nimport BottomTabBarHeightContext from '../utils/BottomTabBarHeightContext';\nimport BottomTabBar, { getTabBarHeight } from './BottomTabBar';\nimport { MaybeScreen, MaybeScreenContainer } from './ScreenFallback';\n\ntype Props = BottomTabNavigationConfig & {\n state: TabNavigationState<ParamListBase>;\n navigation: BottomTabNavigationHelpers;\n descriptors: BottomTabDescriptorMap;\n};\n\nexport default function BottomTabView(props: Props) {\n const {\n tabBar = (props: BottomTabBarProps) => <BottomTabBar {...props} />,\n state,\n navigation,\n descriptors,\n safeAreaInsets,\n detachInactiveScreens = Platform.OS === 'web' ||\n Platform.OS === 'android' ||\n Platform.OS === 'ios',\n sceneContainerStyle,\n } = props;\n\n const focusedRouteKey = state.routes[state.index].key;\n const [loaded, setLoaded] = React.useState([focusedRouteKey]);\n\n if (!loaded.includes(focusedRouteKey)) {\n setLoaded([...loaded, focusedRouteKey]);\n }\n\n const dimensions = SafeAreaProviderCompat.initialMetrics.frame;\n const [tabBarHeight, setTabBarHeight] = React.useState(() =>\n getTabBarHeight({\n state,\n descriptors,\n dimensions,\n layout: { width: dimensions.width, height: 0 },\n insets: {\n ...SafeAreaProviderCompat.initialMetrics.insets,\n ...props.safeAreaInsets,\n },\n style: descriptors[state.routes[state.index].key].options.tabBarStyle,\n })\n );\n\n const renderTabBar = () => {\n return (\n <SafeAreaInsetsContext.Consumer>\n {(insets) =>\n tabBar({\n state: state,\n descriptors: descriptors,\n navigation: navigation,\n insets: {\n top: safeAreaInsets?.top ?? insets?.top ?? 0,\n right: safeAreaInsets?.right ?? insets?.right ?? 0,\n bottom: safeAreaInsets?.bottom ?? insets?.bottom ?? 0,\n left: safeAreaInsets?.left ?? insets?.left ?? 0,\n },\n })\n }\n </SafeAreaInsetsContext.Consumer>\n );\n };\n\n const { routes } = state;\n\n return (\n <SafeAreaProviderCompat>\n <MaybeScreenContainer\n enabled={detachInactiveScreens}\n style={styles.container}\n >\n {routes.map((route, index) => {\n const descriptor = descriptors[route.key];\n const { lazy = true, unmountOnBlur } = descriptor.options;\n const isFocused = state.index === index;\n\n if (unmountOnBlur && !isFocused) {\n return null;\n }\n\n if (lazy && !loaded.includes(route.key) && !isFocused) {\n // Don't render a lazy screen if we've never navigated to it\n return null;\n }\n\n const {\n header = ({ layout, options }: BottomTabHeaderProps) => (\n <Header\n {...options}\n layout={layout}\n title={getHeaderTitle(options, route.name)}\n />\n ),\n } = descriptor.options;\n\n return (\n <MaybeScreen\n key={route.key}\n style={[StyleSheet.absoluteFill, { zIndex: isFocused ? 0 : -1 }]}\n visible={isFocused}\n enabled={detachInactiveScreens}\n >\n <BottomTabBarHeightContext.Provider value={tabBarHeight}>\n <Screen\n focused={isFocused}\n route={descriptor.route}\n navigation={descriptor.navigation}\n headerShown={descriptor.options.headerShown}\n headerTransparent={descriptor.options.headerTransparent}\n headerStatusBarHeight={\n descriptor.options.headerStatusBarHeight\n }\n header={header({\n layout: dimensions,\n route: descriptor.route,\n navigation:\n descriptor.navigation as BottomTabNavigationProp<ParamListBase>,\n options: descriptor.options,\n })}\n style={sceneContainerStyle}\n >\n {descriptor.render()}\n </Screen>\n </BottomTabBarHeightContext.Provider>\n </MaybeScreen>\n );\n })}\n </MaybeScreenContainer>\n <BottomTabBarHeightCallbackContext.Provider value={setTabBarHeight}>\n {renderTabBar()}\n </BottomTabBarHeightCallbackContext.Provider>\n </SafeAreaProviderCompat>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n overflow: 'hidden',\n },\n});\n"]}
1
+ {"version":3,"sources":["BottomTabView.tsx"],"names":["BottomTabView","props","tabBar","state","navigation","descriptors","safeAreaInsets","detachInactiveScreens","Platform","OS","sceneContainerStyle","focusedRouteKey","routes","index","key","loaded","setLoaded","React","useState","includes","dimensions","SafeAreaProviderCompat","initialMetrics","frame","tabBarHeight","setTabBarHeight","layout","width","height","insets","style","options","tabBarStyle","renderTabBar","top","right","bottom","left","styles","container","map","route","descriptor","lazy","unmountOnBlur","isFocused","header","name","StyleSheet","absoluteFill","zIndex","headerShown","headerTransparent","headerStatusBarHeight","render","create","flex","overflow"],"mappings":"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","sourcesContent":["import {\n getHeaderTitle,\n Header,\n SafeAreaProviderCompat,\n Screen,\n} from '@react-navigation/elements';\nimport type {\n ParamListBase,\n TabNavigationState,\n} from '@react-navigation/native';\nimport * as React from 'react';\nimport { Platform, StyleSheet } from 'react-native';\nimport { SafeAreaInsetsContext } from 'react-native-safe-area-context';\n\nimport type {\n BottomTabBarProps,\n BottomTabDescriptorMap,\n BottomTabHeaderProps,\n BottomTabNavigationConfig,\n BottomTabNavigationHelpers,\n BottomTabNavigationProp,\n} from '../types';\nimport BottomTabBarHeightCallbackContext from '../utils/BottomTabBarHeightCallbackContext';\nimport BottomTabBarHeightContext from '../utils/BottomTabBarHeightContext';\nimport BottomTabBar, { getTabBarHeight } from './BottomTabBar';\nimport { MaybeScreen, MaybeScreenContainer } from './ScreenFallback';\n\ntype Props = BottomTabNavigationConfig & {\n state: TabNavigationState<ParamListBase>;\n navigation: BottomTabNavigationHelpers;\n descriptors: BottomTabDescriptorMap;\n};\n\nexport default function BottomTabView(props: Props) {\n const {\n tabBar = (props: BottomTabBarProps) => <BottomTabBar {...props} />,\n state,\n navigation,\n descriptors,\n safeAreaInsets,\n detachInactiveScreens = Platform.OS === 'web' ||\n Platform.OS === 'android' ||\n Platform.OS === 'ios',\n sceneContainerStyle,\n } = props;\n\n const focusedRouteKey = state.routes[state.index].key;\n const [loaded, setLoaded] = React.useState([focusedRouteKey]);\n\n if (!loaded.includes(focusedRouteKey)) {\n setLoaded([...loaded, focusedRouteKey]);\n }\n\n const dimensions = SafeAreaProviderCompat.initialMetrics.frame;\n const [tabBarHeight, setTabBarHeight] = React.useState(() =>\n getTabBarHeight({\n state,\n descriptors,\n dimensions,\n layout: { width: dimensions.width, height: 0 },\n insets: {\n ...SafeAreaProviderCompat.initialMetrics.insets,\n ...props.safeAreaInsets,\n },\n style: descriptors[state.routes[state.index].key].options.tabBarStyle,\n })\n );\n\n const renderTabBar = () => {\n return (\n <SafeAreaInsetsContext.Consumer>\n {(insets) =>\n tabBar({\n state: state,\n descriptors: descriptors,\n navigation: navigation,\n insets: {\n top: safeAreaInsets?.top ?? insets?.top ?? 0,\n right: safeAreaInsets?.right ?? insets?.right ?? 0,\n bottom: safeAreaInsets?.bottom ?? insets?.bottom ?? 0,\n left: safeAreaInsets?.left ?? insets?.left ?? 0,\n },\n })\n }\n </SafeAreaInsetsContext.Consumer>\n );\n };\n\n const { routes } = state;\n\n return (\n <SafeAreaProviderCompat>\n <MaybeScreenContainer\n enabled={detachInactiveScreens}\n hasTwoStates\n style={styles.container}\n >\n {routes.map((route, index) => {\n const descriptor = descriptors[route.key];\n const { lazy = true, unmountOnBlur } = descriptor.options;\n const isFocused = state.index === index;\n\n if (unmountOnBlur && !isFocused) {\n return null;\n }\n\n if (lazy && !loaded.includes(route.key) && !isFocused) {\n // Don't render a lazy screen if we've never navigated to it\n return null;\n }\n\n const {\n header = ({ layout, options }: BottomTabHeaderProps) => (\n <Header\n {...options}\n layout={layout}\n title={getHeaderTitle(options, route.name)}\n />\n ),\n } = descriptor.options;\n\n return (\n <MaybeScreen\n key={route.key}\n style={[StyleSheet.absoluteFill, { zIndex: isFocused ? 0 : -1 }]}\n visible={isFocused}\n enabled={detachInactiveScreens}\n >\n <BottomTabBarHeightContext.Provider value={tabBarHeight}>\n <Screen\n focused={isFocused}\n route={descriptor.route}\n navigation={descriptor.navigation}\n headerShown={descriptor.options.headerShown}\n headerTransparent={descriptor.options.headerTransparent}\n headerStatusBarHeight={\n descriptor.options.headerStatusBarHeight\n }\n header={header({\n layout: dimensions,\n route: descriptor.route,\n navigation:\n descriptor.navigation as BottomTabNavigationProp<ParamListBase>,\n options: descriptor.options,\n })}\n style={sceneContainerStyle}\n >\n {descriptor.render()}\n </Screen>\n </BottomTabBarHeightContext.Provider>\n </MaybeScreen>\n );\n })}\n </MaybeScreenContainer>\n <BottomTabBarHeightCallbackContext.Provider value={setTabBarHeight}>\n {renderTabBar()}\n </BottomTabBarHeightCallbackContext.Provider>\n </SafeAreaProviderCompat>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n overflow: 'hidden',\n },\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["ScreenFallback.tsx"],"names":["Screens","require","e","MaybeScreenContainer","enabled","rest","screensEnabled","MaybeScreen","visible","children"],"mappings":";;;;;;;;AAAA;;AACA;;AACA;;;;;;;;AASA,IAAIA,OAAJ;;AAEA,IAAI;AACFA,EAAAA,OAAO,GAAGC,OAAO,CAAC,sBAAD,CAAjB;AACD,CAFD,CAEE,OAAOC,CAAP,EAAU,CACV;AACD;;AAEM,MAAMC,oBAAoB,GAAG,QAM9B;AAAA;;AAAA,MAN+B;AACnCC,IAAAA,OADmC;AAEnC,OAAGC;AAFgC,GAM/B;;AACJ,kBAAIL,OAAJ,8DAAI,SAASM,cAAb,kDAAI,oCAAJ,EAAiC;AAC/B,wBAAO,oBAAC,OAAD,CAAS,eAAT;AAAyB,MAAA,OAAO,EAAEF;AAAlC,OAA+CC,IAA/C,EAAP;AACD;;AAED,sBAAO,oBAAC,iBAAD,EAAUA,IAAV,CAAP;AACD,CAZM;;;;AAcA,SAASE,WAAT,QAA4D;AAAA;;AAAA,MAAvC;AAAEC,IAAAA,OAAF;AAAWC,IAAAA,QAAX;AAAqB,OAAGJ;AAAxB,GAAuC;;AACjE,mBAAIL,OAAJ,+DAAI,UAASM,cAAb,kDAAI,qCAAJ,EAAiC;AAC/B,wBACE,oBAAC,OAAD,CAAS,MAAT;AAAgB,MAAA,aAAa,EAAEE,OAAO,GAAG,CAAH,GAAO;AAA7C,OAAoDH,IAApD,GACGI,QADH,CADF;AAKD;;AAED,sBACE,oBAAC,4BAAD;AAAoB,IAAA,OAAO,EAAED;AAA7B,KAA0CH,IAA1C,GACGI,QADH,CADF;AAKD","sourcesContent":["import { ResourceSavingView } from '@react-navigation/elements';\nimport * as React from 'react';\nimport { StyleProp, View, ViewProps, ViewStyle } from 'react-native';\n\ntype Props = {\n visible: boolean;\n children: React.ReactNode;\n enabled: boolean;\n style?: StyleProp<ViewStyle>;\n};\n\nlet Screens: typeof import('react-native-screens') | undefined;\n\ntry {\n Screens = require('react-native-screens');\n} catch (e) {\n // Ignore\n}\n\nexport const MaybeScreenContainer = ({\n enabled,\n ...rest\n}: ViewProps & {\n enabled: boolean;\n children: React.ReactNode;\n}) => {\n if (Screens?.screensEnabled?.()) {\n return <Screens.ScreenContainer enabled={enabled} {...rest} />;\n }\n\n return <View {...rest} />;\n};\n\nexport function MaybeScreen({ visible, children, ...rest }: Props) {\n if (Screens?.screensEnabled?.()) {\n return (\n <Screens.Screen activityState={visible ? 2 : 0} {...rest}>\n {children}\n </Screens.Screen>\n );\n }\n\n return (\n <ResourceSavingView visible={visible} {...rest}>\n {children}\n </ResourceSavingView>\n );\n}\n"]}
1
+ {"version":3,"sources":["ScreenFallback.tsx"],"names":["Screens","require","e","MaybeScreenContainer","enabled","rest","screensEnabled","MaybeScreen","visible","children"],"mappings":";;;;;;;;AAAA;;AACA;;AACA;;;;;;;;AASA,IAAIA,OAAJ;;AAEA,IAAI;AACFA,EAAAA,OAAO,GAAGC,OAAO,CAAC,sBAAD,CAAjB;AACD,CAFD,CAEE,OAAOC,CAAP,EAAU,CACV;AACD;;AAEM,MAAMC,oBAAoB,GAAG,QAO9B;AAAA;;AAAA,MAP+B;AACnCC,IAAAA,OADmC;AAEnC,OAAGC;AAFgC,GAO/B;;AACJ,kBAAIL,OAAJ,8DAAI,SAASM,cAAb,kDAAI,oCAAJ,EAAiC;AAC/B,wBAAO,oBAAC,OAAD,CAAS,eAAT;AAAyB,MAAA,OAAO,EAAEF;AAAlC,OAA+CC,IAA/C,EAAP;AACD;;AAED,sBAAO,oBAAC,iBAAD,EAAUA,IAAV,CAAP;AACD,CAbM;;;;AAeA,SAASE,WAAT,QAA4D;AAAA;;AAAA,MAAvC;AAAEC,IAAAA,OAAF;AAAWC,IAAAA,QAAX;AAAqB,OAAGJ;AAAxB,GAAuC;;AACjE,mBAAIL,OAAJ,+DAAI,UAASM,cAAb,kDAAI,qCAAJ,EAAiC;AAC/B,wBACE,oBAAC,OAAD,CAAS,MAAT;AAAgB,MAAA,aAAa,EAAEE,OAAO,GAAG,CAAH,GAAO;AAA7C,OAAoDH,IAApD,GACGI,QADH,CADF;AAKD;;AAED,sBACE,oBAAC,4BAAD;AAAoB,IAAA,OAAO,EAAED;AAA7B,KAA0CH,IAA1C,GACGI,QADH,CADF;AAKD","sourcesContent":["import { ResourceSavingView } from '@react-navigation/elements';\nimport * as React from 'react';\nimport { StyleProp, View, ViewProps, ViewStyle } from 'react-native';\n\ntype Props = {\n visible: boolean;\n children: React.ReactNode;\n enabled: boolean;\n style?: StyleProp<ViewStyle>;\n};\n\nlet Screens: typeof import('react-native-screens') | undefined;\n\ntry {\n Screens = require('react-native-screens');\n} catch (e) {\n // Ignore\n}\n\nexport const MaybeScreenContainer = ({\n enabled,\n ...rest\n}: ViewProps & {\n enabled: boolean;\n hasTwoStates: boolean;\n children: React.ReactNode;\n}) => {\n if (Screens?.screensEnabled?.()) {\n return <Screens.ScreenContainer enabled={enabled} {...rest} />;\n }\n\n return <View {...rest} />;\n};\n\nexport function MaybeScreen({ visible, children, ...rest }: Props) {\n if (Screens?.screensEnabled?.()) {\n return (\n <Screens.Screen activityState={visible ? 2 : 0} {...rest}>\n {children}\n </Screens.Screen>\n );\n }\n\n return (\n <ResourceSavingView visible={visible} {...rest}>\n {children}\n </ResourceSavingView>\n );\n}\n"]}
@@ -7,6 +7,7 @@ import BottomTabView from '../views/BottomTabView';
7
7
 
8
8
  function BottomTabNavigator(_ref) {
9
9
  let {
10
+ id,
10
11
  initialRouteName,
11
12
  backBehavior,
12
13
  children,
@@ -63,6 +64,7 @@ function BottomTabNavigator(_ref) {
63
64
  navigation,
64
65
  NavigationContent
65
66
  } = useNavigationBuilder(TabRouter, {
67
+ id,
66
68
  initialRouteName,
67
69
  backBehavior,
68
70
  children,
@@ -1 +1 @@
1
- {"version":3,"sources":["createBottomTabNavigator.tsx"],"names":["createNavigatorFactory","TabRouter","useNavigationBuilder","React","warnOnce","BottomTabView","BottomTabNavigator","initialRouteName","backBehavior","children","screenListeners","screenOptions","sceneContainerStyle","restWithDeprecated","lazy","tabBarOptions","rest","defaultScreenOptions","Object","assign","tabBarHideOnKeyboard","keyboardHidesTabBar","tabBarActiveTintColor","activeTintColor","tabBarInactiveTintColor","inactiveTintColor","tabBarActiveBackgroundColor","activeBackgroundColor","tabBarInactiveBackgroundColor","inactiveBackgroundColor","tabBarAllowFontScaling","allowFontScaling","tabBarShowLabel","showLabel","tabBarLabelStyle","labelStyle","tabBarIconStyle","iconStyle","tabBarItemStyle","tabStyle","tabBarLabelPosition","labelPosition","adaptive","undefined","tabBarStyle","display","tabBarVisible","keys","forEach","key","JSON","stringify","state","descriptors","navigation","NavigationContent"],"mappings":"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","sourcesContent":["import {\n createNavigatorFactory,\n DefaultNavigatorOptions,\n ParamListBase,\n TabActionHelpers,\n TabNavigationState,\n TabRouter,\n TabRouterOptions,\n useNavigationBuilder,\n} from '@react-navigation/native';\nimport * as React from 'react';\nimport warnOnce from 'warn-once';\n\nimport type {\n BottomTabNavigationConfig,\n BottomTabNavigationEventMap,\n BottomTabNavigationOptions,\n} from '../types';\nimport BottomTabView from '../views/BottomTabView';\n\ntype Props = DefaultNavigatorOptions<\n ParamListBase,\n TabNavigationState<ParamListBase>,\n BottomTabNavigationOptions,\n BottomTabNavigationEventMap\n> &\n TabRouterOptions &\n BottomTabNavigationConfig;\n\nfunction BottomTabNavigator({\n initialRouteName,\n backBehavior,\n children,\n screenListeners,\n screenOptions,\n sceneContainerStyle,\n ...restWithDeprecated\n}: Props) {\n const {\n // @ts-expect-error: lazy is deprecated\n lazy,\n // @ts-expect-error: tabBarOptions is deprecated\n tabBarOptions,\n ...rest\n } = restWithDeprecated;\n\n let defaultScreenOptions: BottomTabNavigationOptions = {};\n\n if (tabBarOptions) {\n Object.assign(defaultScreenOptions, {\n tabBarHideOnKeyboard: tabBarOptions.keyboardHidesTabBar,\n tabBarActiveTintColor: tabBarOptions.activeTintColor,\n tabBarInactiveTintColor: tabBarOptions.inactiveTintColor,\n tabBarActiveBackgroundColor: tabBarOptions.activeBackgroundColor,\n tabBarInactiveBackgroundColor: tabBarOptions.inactiveBackgroundColor,\n tabBarAllowFontScaling: tabBarOptions.allowFontScaling,\n tabBarShowLabel: tabBarOptions.showLabel,\n tabBarLabelStyle: tabBarOptions.labelStyle,\n tabBarIconStyle: tabBarOptions.iconStyle,\n tabBarItemStyle: tabBarOptions.tabStyle,\n tabBarLabelPosition:\n tabBarOptions.labelPosition ??\n (tabBarOptions.adaptive === false ? 'below-icon' : undefined),\n tabBarStyle: [\n { display: tabBarOptions.tabBarVisible ? 'none' : 'flex' },\n defaultScreenOptions.tabBarStyle,\n ],\n });\n\n (\n Object.keys(defaultScreenOptions) as (keyof BottomTabNavigationOptions)[]\n ).forEach((key) => {\n if (defaultScreenOptions[key] === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete defaultScreenOptions[key];\n }\n });\n\n warnOnce(\n tabBarOptions,\n `Bottom Tab Navigator: 'tabBarOptions' is deprecated. Migrate the options to 'screenOptions' instead.\\n\\nPlace the following in 'screenOptions' in your code to keep current behavior:\\n\\n${JSON.stringify(\n defaultScreenOptions,\n null,\n 2\n )}\\n\\nSee https://reactnavigation.org/docs/bottom-tab-navigator#options for more details.`\n );\n }\n\n if (typeof lazy === 'boolean') {\n defaultScreenOptions.lazy = lazy;\n\n warnOnce(\n true,\n `Bottom Tab Navigator: 'lazy' in props is deprecated. Move it to 'screenOptions' instead.\\n\\nSee https://reactnavigation.org/docs/bottom-tab-navigator/#lazy for more details.`\n );\n }\n\n const { state, descriptors, navigation, NavigationContent } =\n useNavigationBuilder<\n TabNavigationState<ParamListBase>,\n TabRouterOptions,\n TabActionHelpers<ParamListBase>,\n BottomTabNavigationOptions,\n BottomTabNavigationEventMap\n >(TabRouter, {\n initialRouteName,\n backBehavior,\n children,\n screenListeners,\n screenOptions,\n defaultScreenOptions,\n });\n\n return (\n <NavigationContent>\n <BottomTabView\n {...rest}\n state={state}\n navigation={navigation}\n descriptors={descriptors}\n sceneContainerStyle={sceneContainerStyle}\n />\n </NavigationContent>\n );\n}\n\nexport default createNavigatorFactory<\n TabNavigationState<ParamListBase>,\n BottomTabNavigationOptions,\n BottomTabNavigationEventMap,\n typeof BottomTabNavigator\n>(BottomTabNavigator);\n"]}
1
+ {"version":3,"sources":["createBottomTabNavigator.tsx"],"names":["createNavigatorFactory","TabRouter","useNavigationBuilder","React","warnOnce","BottomTabView","BottomTabNavigator","id","initialRouteName","backBehavior","children","screenListeners","screenOptions","sceneContainerStyle","restWithDeprecated","lazy","tabBarOptions","rest","defaultScreenOptions","Object","assign","tabBarHideOnKeyboard","keyboardHidesTabBar","tabBarActiveTintColor","activeTintColor","tabBarInactiveTintColor","inactiveTintColor","tabBarActiveBackgroundColor","activeBackgroundColor","tabBarInactiveBackgroundColor","inactiveBackgroundColor","tabBarAllowFontScaling","allowFontScaling","tabBarShowLabel","showLabel","tabBarLabelStyle","labelStyle","tabBarIconStyle","iconStyle","tabBarItemStyle","tabStyle","tabBarLabelPosition","labelPosition","adaptive","undefined","tabBarStyle","display","tabBarVisible","keys","forEach","key","JSON","stringify","state","descriptors","navigation","NavigationContent"],"mappings":"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","sourcesContent":["import {\n createNavigatorFactory,\n DefaultNavigatorOptions,\n ParamListBase,\n TabActionHelpers,\n TabNavigationState,\n TabRouter,\n TabRouterOptions,\n useNavigationBuilder,\n} from '@react-navigation/native';\nimport * as React from 'react';\nimport warnOnce from 'warn-once';\n\nimport type {\n BottomTabNavigationConfig,\n BottomTabNavigationEventMap,\n BottomTabNavigationOptions,\n} from '../types';\nimport BottomTabView from '../views/BottomTabView';\n\ntype Props = DefaultNavigatorOptions<\n ParamListBase,\n TabNavigationState<ParamListBase>,\n BottomTabNavigationOptions,\n BottomTabNavigationEventMap\n> &\n TabRouterOptions &\n BottomTabNavigationConfig;\n\nfunction BottomTabNavigator({\n id,\n initialRouteName,\n backBehavior,\n children,\n screenListeners,\n screenOptions,\n sceneContainerStyle,\n ...restWithDeprecated\n}: Props) {\n const {\n // @ts-expect-error: lazy is deprecated\n lazy,\n // @ts-expect-error: tabBarOptions is deprecated\n tabBarOptions,\n ...rest\n } = restWithDeprecated;\n\n let defaultScreenOptions: BottomTabNavigationOptions = {};\n\n if (tabBarOptions) {\n Object.assign(defaultScreenOptions, {\n tabBarHideOnKeyboard: tabBarOptions.keyboardHidesTabBar,\n tabBarActiveTintColor: tabBarOptions.activeTintColor,\n tabBarInactiveTintColor: tabBarOptions.inactiveTintColor,\n tabBarActiveBackgroundColor: tabBarOptions.activeBackgroundColor,\n tabBarInactiveBackgroundColor: tabBarOptions.inactiveBackgroundColor,\n tabBarAllowFontScaling: tabBarOptions.allowFontScaling,\n tabBarShowLabel: tabBarOptions.showLabel,\n tabBarLabelStyle: tabBarOptions.labelStyle,\n tabBarIconStyle: tabBarOptions.iconStyle,\n tabBarItemStyle: tabBarOptions.tabStyle,\n tabBarLabelPosition:\n tabBarOptions.labelPosition ??\n (tabBarOptions.adaptive === false ? 'below-icon' : undefined),\n tabBarStyle: [\n { display: tabBarOptions.tabBarVisible ? 'none' : 'flex' },\n defaultScreenOptions.tabBarStyle,\n ],\n });\n\n (\n Object.keys(defaultScreenOptions) as (keyof BottomTabNavigationOptions)[]\n ).forEach((key) => {\n if (defaultScreenOptions[key] === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete defaultScreenOptions[key];\n }\n });\n\n warnOnce(\n tabBarOptions,\n `Bottom Tab Navigator: 'tabBarOptions' is deprecated. Migrate the options to 'screenOptions' instead.\\n\\nPlace the following in 'screenOptions' in your code to keep current behavior:\\n\\n${JSON.stringify(\n defaultScreenOptions,\n null,\n 2\n )}\\n\\nSee https://reactnavigation.org/docs/bottom-tab-navigator#options for more details.`\n );\n }\n\n if (typeof lazy === 'boolean') {\n defaultScreenOptions.lazy = lazy;\n\n warnOnce(\n true,\n `Bottom Tab Navigator: 'lazy' in props is deprecated. Move it to 'screenOptions' instead.\\n\\nSee https://reactnavigation.org/docs/bottom-tab-navigator/#lazy for more details.`\n );\n }\n\n const { state, descriptors, navigation, NavigationContent } =\n useNavigationBuilder<\n TabNavigationState<ParamListBase>,\n TabRouterOptions,\n TabActionHelpers<ParamListBase>,\n BottomTabNavigationOptions,\n BottomTabNavigationEventMap\n >(TabRouter, {\n id,\n initialRouteName,\n backBehavior,\n children,\n screenListeners,\n screenOptions,\n defaultScreenOptions,\n });\n\n return (\n <NavigationContent>\n <BottomTabView\n {...rest}\n state={state}\n navigation={navigation}\n descriptors={descriptors}\n sceneContainerStyle={sceneContainerStyle}\n />\n </NavigationContent>\n );\n}\n\nexport default createNavigatorFactory<\n TabNavigationState<ParamListBase>,\n BottomTabNavigationOptions,\n BottomTabNavigationEventMap,\n typeof BottomTabNavigator\n>(BottomTabNavigator);\n"]}
@@ -6,14 +6,14 @@ import * as React from 'react';
6
6
  import { Animated, StyleSheet } from 'react-native';
7
7
  export default function Badge(_ref) {
8
8
  let {
9
- visible = true,
10
- size = 18,
11
9
  children,
12
10
  style,
11
+ visible = true,
12
+ size = 18,
13
13
  ...rest
14
14
  } = _ref;
15
15
  const [opacity] = React.useState(() => new Animated.Value(visible ? 1 : 0));
16
- const [rendered, setRendered] = React.useState(visible ? true : false);
16
+ const [rendered, setRendered] = React.useState(visible);
17
17
  const theme = useTheme();
18
18
  React.useEffect(() => {
19
19
  if (!rendered) {
@@ -36,12 +36,12 @@ export default function Badge(_ref) {
36
36
  return () => opacity.stopAnimation();
37
37
  }, [opacity, rendered, visible]);
38
38
 
39
- if (visible && !rendered) {
40
- setRendered(true);
41
- }
42
-
43
- if (!visible && !rendered) {
44
- return null;
39
+ if (!rendered) {
40
+ if (visible) {
41
+ setRendered(true);
42
+ } else {
43
+ return null;
44
+ }
45
45
  } // @ts-expect-error: backgroundColor definitely exists
46
46
 
47
47
 
@@ -55,19 +55,19 @@ export default function Badge(_ref) {
55
55
  return /*#__PURE__*/React.createElement(Animated.Text, _extends({
56
56
  numberOfLines: 1,
57
57
  style: [{
58
- opacity,
59
58
  transform: [{
60
59
  scale: opacity.interpolate({
61
60
  inputRange: [0, 1],
62
61
  outputRange: [0.5, 1]
63
62
  })
64
63
  }],
65
- backgroundColor,
66
64
  color: textColor,
67
- fontSize,
68
65
  lineHeight: size - 1,
69
66
  height: size,
70
67
  minWidth: size,
68
+ opacity,
69
+ backgroundColor,
70
+ fontSize,
71
71
  borderRadius
72
72
  }, styles.container, restStyle]
73
73
  }, rest), children);
@@ -1 +1 @@
1
- {"version":3,"sources":["Badge.tsx"],"names":["useTheme","color","React","Animated","StyleSheet","Badge","visible","size","children","style","rest","opacity","useState","Value","rendered","setRendered","theme","useEffect","timing","toValue","duration","useNativeDriver","start","finished","stopAnimation","backgroundColor","colors","notification","restStyle","flatten","textColor","isLight","borderRadius","fontSize","Math","floor","transform","scale","interpolate","inputRange","outputRange","lineHeight","height","minWidth","styles","container","create","alignSelf","textAlign","paddingHorizontal","overflow"],"mappings":"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","sourcesContent":["import { useTheme } from '@react-navigation/native';\nimport color from 'color';\nimport * as React from 'react';\nimport { Animated, StyleProp, StyleSheet, TextStyle } from 'react-native';\n\ntype Props = {\n /**\n * Whether the badge is visible\n */\n visible: boolean;\n /**\n * Content of the `Badge`.\n */\n children?: string | number;\n /**\n * Size of the `Badge`.\n */\n size?: number;\n /**\n * Style object for the tab bar container.\n */\n style?: Animated.WithAnimatedValue<StyleProp<TextStyle>>;\n};\n\nexport default function Badge({\n visible = true,\n size = 18,\n children,\n style,\n ...rest\n}: Props) {\n const [opacity] = React.useState(() => new Animated.Value(visible ? 1 : 0));\n const [rendered, setRendered] = React.useState(visible ? true : false);\n\n const theme = useTheme();\n\n React.useEffect(() => {\n if (!rendered) {\n return;\n }\n\n Animated.timing(opacity, {\n toValue: visible ? 1 : 0,\n duration: 150,\n useNativeDriver: true,\n }).start(({ finished }) => {\n if (finished && !visible) {\n setRendered(false);\n }\n });\n\n return () => opacity.stopAnimation();\n }, [opacity, rendered, visible]);\n\n if (visible && !rendered) {\n setRendered(true);\n }\n\n if (!visible && !rendered) {\n return null;\n }\n\n // @ts-expect-error: backgroundColor definitely exists\n const { backgroundColor = theme.colors.notification, ...restStyle } =\n StyleSheet.flatten(style) || {};\n const textColor = color(backgroundColor).isLight() ? 'black' : 'white';\n\n const borderRadius = size / 2;\n const fontSize = Math.floor((size * 3) / 4);\n\n return (\n <Animated.Text\n numberOfLines={1}\n style={[\n {\n opacity,\n transform: [\n {\n scale: opacity.interpolate({\n inputRange: [0, 1],\n outputRange: [0.5, 1],\n }),\n },\n ],\n backgroundColor,\n color: textColor,\n fontSize,\n lineHeight: size - 1,\n height: size,\n minWidth: size,\n borderRadius,\n },\n styles.container,\n restStyle,\n ]}\n {...rest}\n >\n {children}\n </Animated.Text>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n alignSelf: 'flex-end',\n textAlign: 'center',\n paddingHorizontal: 4,\n overflow: 'hidden',\n },\n});\n"]}
1
+ {"version":3,"sources":["Badge.tsx"],"names":["useTheme","color","React","Animated","StyleSheet","Badge","children","style","visible","size","rest","opacity","useState","Value","rendered","setRendered","theme","useEffect","timing","toValue","duration","useNativeDriver","start","finished","stopAnimation","backgroundColor","colors","notification","restStyle","flatten","textColor","isLight","borderRadius","fontSize","Math","floor","transform","scale","interpolate","inputRange","outputRange","lineHeight","height","minWidth","styles","container","create","alignSelf","textAlign","paddingHorizontal","overflow"],"mappings":"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","sourcesContent":["import { useTheme } from '@react-navigation/native';\nimport color from 'color';\nimport * as React from 'react';\nimport { Animated, StyleProp, StyleSheet, TextStyle } from 'react-native';\n\ntype Props = {\n /**\n * Whether the badge is visible\n */\n visible: boolean;\n /**\n * Content of the `Badge`.\n */\n children?: string | number;\n /**\n * Size of the `Badge`.\n */\n size?: number;\n /**\n * Style object for the tab bar container.\n */\n style?: Animated.WithAnimatedValue<StyleProp<TextStyle>>;\n};\n\nexport default function Badge({\n children,\n style,\n visible = true,\n size = 18,\n ...rest\n}: Props) {\n const [opacity] = React.useState(() => new Animated.Value(visible ? 1 : 0));\n const [rendered, setRendered] = React.useState(visible);\n\n const theme = useTheme();\n\n React.useEffect(() => {\n if (!rendered) {\n return;\n }\n\n Animated.timing(opacity, {\n toValue: visible ? 1 : 0,\n duration: 150,\n useNativeDriver: true,\n }).start(({ finished }) => {\n if (finished && !visible) {\n setRendered(false);\n }\n });\n\n return () => opacity.stopAnimation();\n }, [opacity, rendered, visible]);\n\n if (!rendered) {\n if (visible) {\n setRendered(true);\n } else {\n return null;\n }\n }\n\n // @ts-expect-error: backgroundColor definitely exists\n const { backgroundColor = theme.colors.notification, ...restStyle } =\n StyleSheet.flatten(style) || {};\n const textColor = color(backgroundColor).isLight() ? 'black' : 'white';\n\n const borderRadius = size / 2;\n const fontSize = Math.floor((size * 3) / 4);\n\n return (\n <Animated.Text\n numberOfLines={1}\n style={[\n {\n transform: [\n {\n scale: opacity.interpolate({\n inputRange: [0, 1],\n outputRange: [0.5, 1],\n }),\n },\n ],\n color: textColor,\n lineHeight: size - 1,\n height: size,\n minWidth: size,\n opacity,\n backgroundColor,\n fontSize,\n borderRadius,\n },\n styles.container,\n restStyle,\n ]}\n {...rest}\n >\n {children}\n </Animated.Text>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n alignSelf: 'flex-end',\n textAlign: 'center',\n paddingHorizontal: 4,\n overflow: 'hidden',\n },\n});\n"]}
@@ -63,6 +63,7 @@ export default function BottomTabView(props) {
63
63
  } = state;
64
64
  return /*#__PURE__*/React.createElement(SafeAreaProviderCompat, null, /*#__PURE__*/React.createElement(MaybeScreenContainer, {
65
65
  enabled: detachInactiveScreens,
66
+ hasTwoStates: true,
66
67
  style: styles.container
67
68
  }, routes.map((route, index) => {
68
69
  const descriptor = descriptors[route.key];
@@ -1 +1 @@
1
- {"version":3,"sources":["BottomTabView.tsx"],"names":["getHeaderTitle","Header","SafeAreaProviderCompat","Screen","React","Platform","StyleSheet","SafeAreaInsetsContext","BottomTabBarHeightCallbackContext","BottomTabBarHeightContext","BottomTabBar","getTabBarHeight","MaybeScreen","MaybeScreenContainer","BottomTabView","props","tabBar","state","navigation","descriptors","safeAreaInsets","detachInactiveScreens","OS","sceneContainerStyle","focusedRouteKey","routes","index","key","loaded","setLoaded","useState","includes","dimensions","initialMetrics","frame","tabBarHeight","setTabBarHeight","layout","width","height","insets","style","options","tabBarStyle","renderTabBar","top","right","bottom","left","styles","container","map","route","descriptor","lazy","unmountOnBlur","isFocused","header","name","absoluteFill","zIndex","headerShown","headerTransparent","headerStatusBarHeight","render","create","flex","overflow"],"mappings":"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","sourcesContent":["import {\n getHeaderTitle,\n Header,\n SafeAreaProviderCompat,\n Screen,\n} from '@react-navigation/elements';\nimport type {\n ParamListBase,\n TabNavigationState,\n} from '@react-navigation/native';\nimport * as React from 'react';\nimport { Platform, StyleSheet } from 'react-native';\nimport { SafeAreaInsetsContext } from 'react-native-safe-area-context';\n\nimport type {\n BottomTabBarProps,\n BottomTabDescriptorMap,\n BottomTabHeaderProps,\n BottomTabNavigationConfig,\n BottomTabNavigationHelpers,\n BottomTabNavigationProp,\n} from '../types';\nimport BottomTabBarHeightCallbackContext from '../utils/BottomTabBarHeightCallbackContext';\nimport BottomTabBarHeightContext from '../utils/BottomTabBarHeightContext';\nimport BottomTabBar, { getTabBarHeight } from './BottomTabBar';\nimport { MaybeScreen, MaybeScreenContainer } from './ScreenFallback';\n\ntype Props = BottomTabNavigationConfig & {\n state: TabNavigationState<ParamListBase>;\n navigation: BottomTabNavigationHelpers;\n descriptors: BottomTabDescriptorMap;\n};\n\nexport default function BottomTabView(props: Props) {\n const {\n tabBar = (props: BottomTabBarProps) => <BottomTabBar {...props} />,\n state,\n navigation,\n descriptors,\n safeAreaInsets,\n detachInactiveScreens = Platform.OS === 'web' ||\n Platform.OS === 'android' ||\n Platform.OS === 'ios',\n sceneContainerStyle,\n } = props;\n\n const focusedRouteKey = state.routes[state.index].key;\n const [loaded, setLoaded] = React.useState([focusedRouteKey]);\n\n if (!loaded.includes(focusedRouteKey)) {\n setLoaded([...loaded, focusedRouteKey]);\n }\n\n const dimensions = SafeAreaProviderCompat.initialMetrics.frame;\n const [tabBarHeight, setTabBarHeight] = React.useState(() =>\n getTabBarHeight({\n state,\n descriptors,\n dimensions,\n layout: { width: dimensions.width, height: 0 },\n insets: {\n ...SafeAreaProviderCompat.initialMetrics.insets,\n ...props.safeAreaInsets,\n },\n style: descriptors[state.routes[state.index].key].options.tabBarStyle,\n })\n );\n\n const renderTabBar = () => {\n return (\n <SafeAreaInsetsContext.Consumer>\n {(insets) =>\n tabBar({\n state: state,\n descriptors: descriptors,\n navigation: navigation,\n insets: {\n top: safeAreaInsets?.top ?? insets?.top ?? 0,\n right: safeAreaInsets?.right ?? insets?.right ?? 0,\n bottom: safeAreaInsets?.bottom ?? insets?.bottom ?? 0,\n left: safeAreaInsets?.left ?? insets?.left ?? 0,\n },\n })\n }\n </SafeAreaInsetsContext.Consumer>\n );\n };\n\n const { routes } = state;\n\n return (\n <SafeAreaProviderCompat>\n <MaybeScreenContainer\n enabled={detachInactiveScreens}\n style={styles.container}\n >\n {routes.map((route, index) => {\n const descriptor = descriptors[route.key];\n const { lazy = true, unmountOnBlur } = descriptor.options;\n const isFocused = state.index === index;\n\n if (unmountOnBlur && !isFocused) {\n return null;\n }\n\n if (lazy && !loaded.includes(route.key) && !isFocused) {\n // Don't render a lazy screen if we've never navigated to it\n return null;\n }\n\n const {\n header = ({ layout, options }: BottomTabHeaderProps) => (\n <Header\n {...options}\n layout={layout}\n title={getHeaderTitle(options, route.name)}\n />\n ),\n } = descriptor.options;\n\n return (\n <MaybeScreen\n key={route.key}\n style={[StyleSheet.absoluteFill, { zIndex: isFocused ? 0 : -1 }]}\n visible={isFocused}\n enabled={detachInactiveScreens}\n >\n <BottomTabBarHeightContext.Provider value={tabBarHeight}>\n <Screen\n focused={isFocused}\n route={descriptor.route}\n navigation={descriptor.navigation}\n headerShown={descriptor.options.headerShown}\n headerTransparent={descriptor.options.headerTransparent}\n headerStatusBarHeight={\n descriptor.options.headerStatusBarHeight\n }\n header={header({\n layout: dimensions,\n route: descriptor.route,\n navigation:\n descriptor.navigation as BottomTabNavigationProp<ParamListBase>,\n options: descriptor.options,\n })}\n style={sceneContainerStyle}\n >\n {descriptor.render()}\n </Screen>\n </BottomTabBarHeightContext.Provider>\n </MaybeScreen>\n );\n })}\n </MaybeScreenContainer>\n <BottomTabBarHeightCallbackContext.Provider value={setTabBarHeight}>\n {renderTabBar()}\n </BottomTabBarHeightCallbackContext.Provider>\n </SafeAreaProviderCompat>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n overflow: 'hidden',\n },\n});\n"]}
1
+ {"version":3,"sources":["BottomTabView.tsx"],"names":["getHeaderTitle","Header","SafeAreaProviderCompat","Screen","React","Platform","StyleSheet","SafeAreaInsetsContext","BottomTabBarHeightCallbackContext","BottomTabBarHeightContext","BottomTabBar","getTabBarHeight","MaybeScreen","MaybeScreenContainer","BottomTabView","props","tabBar","state","navigation","descriptors","safeAreaInsets","detachInactiveScreens","OS","sceneContainerStyle","focusedRouteKey","routes","index","key","loaded","setLoaded","useState","includes","dimensions","initialMetrics","frame","tabBarHeight","setTabBarHeight","layout","width","height","insets","style","options","tabBarStyle","renderTabBar","top","right","bottom","left","styles","container","map","route","descriptor","lazy","unmountOnBlur","isFocused","header","name","absoluteFill","zIndex","headerShown","headerTransparent","headerStatusBarHeight","render","create","flex","overflow"],"mappings":";;AAAA,SACEA,cADF,EAEEC,MAFF,EAGEC,sBAHF,EAIEC,MAJF,QAKO,4BALP;AAUA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AACA,SAASC,QAAT,EAAmBC,UAAnB,QAAqC,cAArC;AACA,SAASC,qBAAT,QAAsC,gCAAtC;AAUA,OAAOC,iCAAP,MAA8C,4CAA9C;AACA,OAAOC,yBAAP,MAAsC,oCAAtC;AACA,OAAOC,YAAP,IAAuBC,eAAvB,QAA8C,gBAA9C;AACA,SAASC,WAAT,EAAsBC,oBAAtB,QAAkD,kBAAlD;AAQA,eAAe,SAASC,aAAT,CAAuBC,KAAvB,EAAqC;AAClD,QAAM;AACJC,IAAAA,MAAM,GAAID,KAAD,iBAA8B,oBAAC,YAAD,EAAkBA,KAAlB,CADnC;AAEJE,IAAAA,KAFI;AAGJC,IAAAA,UAHI;AAIJC,IAAAA,WAJI;AAKJC,IAAAA,cALI;AAMJC,IAAAA,qBAAqB,GAAGhB,QAAQ,CAACiB,EAAT,KAAgB,KAAhB,IACtBjB,QAAQ,CAACiB,EAAT,KAAgB,SADM,IAEtBjB,QAAQ,CAACiB,EAAT,KAAgB,KARd;AASJC,IAAAA;AATI,MAUFR,KAVJ;AAYA,QAAMS,eAAe,GAAGP,KAAK,CAACQ,MAAN,CAAaR,KAAK,CAACS,KAAnB,EAA0BC,GAAlD;AACA,QAAM,CAACC,MAAD,EAASC,SAAT,IAAsBzB,KAAK,CAAC0B,QAAN,CAAe,CAACN,eAAD,CAAf,CAA5B;;AAEA,MAAI,CAACI,MAAM,CAACG,QAAP,CAAgBP,eAAhB,CAAL,EAAuC;AACrCK,IAAAA,SAAS,CAAC,CAAC,GAAGD,MAAJ,EAAYJ,eAAZ,CAAD,CAAT;AACD;;AAED,QAAMQ,UAAU,GAAG9B,sBAAsB,CAAC+B,cAAvB,CAAsCC,KAAzD;AACA,QAAM,CAACC,YAAD,EAAeC,eAAf,IAAkChC,KAAK,CAAC0B,QAAN,CAAe,MACrDnB,eAAe,CAAC;AACdM,IAAAA,KADc;AAEdE,IAAAA,WAFc;AAGda,IAAAA,UAHc;AAIdK,IAAAA,MAAM,EAAE;AAAEC,MAAAA,KAAK,EAAEN,UAAU,CAACM,KAApB;AAA2BC,MAAAA,MAAM,EAAE;AAAnC,KAJM;AAKdC,IAAAA,MAAM,EAAE,EACN,GAAGtC,sBAAsB,CAAC+B,cAAvB,CAAsCO,MADnC;AAEN,SAAGzB,KAAK,CAACK;AAFH,KALM;AASdqB,IAAAA,KAAK,EAAEtB,WAAW,CAACF,KAAK,CAACQ,MAAN,CAAaR,KAAK,CAACS,KAAnB,EAA0BC,GAA3B,CAAX,CAA2Ce,OAA3C,CAAmDC;AAT5C,GAAD,CADuB,CAAxC;;AAcA,QAAMC,YAAY,GAAG,MAAM;AACzB,wBACE,oBAAC,qBAAD,CAAuB,QAAvB,QACIJ,MAAD;AAAA;;AAAA,aACCxB,MAAM,CAAC;AACLC,QAAAA,KAAK,EAAEA,KADF;AAELE,QAAAA,WAAW,EAAEA,WAFR;AAGLD,QAAAA,UAAU,EAAEA,UAHP;AAILsB,QAAAA,MAAM,EAAE;AACNK,UAAAA,GAAG,iCAAEzB,cAAF,aAAEA,cAAF,uBAAEA,cAAc,CAAEyB,GAAlB,qEAAyBL,MAAzB,aAAyBA,MAAzB,uBAAyBA,MAAM,CAAEK,GAAjC,uCAAwC,CADrC;AAENC,UAAAA,KAAK,oCAAE1B,cAAF,aAAEA,cAAF,uBAAEA,cAAc,CAAE0B,KAAlB,yEAA2BN,MAA3B,aAA2BA,MAA3B,uBAA2BA,MAAM,CAAEM,KAAnC,yCAA4C,CAF3C;AAGNC,UAAAA,MAAM,oCAAE3B,cAAF,aAAEA,cAAF,uBAAEA,cAAc,CAAE2B,MAAlB,yEAA4BP,MAA5B,aAA4BA,MAA5B,uBAA4BA,MAAM,CAAEO,MAApC,yCAA8C,CAH9C;AAINC,UAAAA,IAAI,mCAAE5B,cAAF,aAAEA,cAAF,uBAAEA,cAAc,CAAE4B,IAAlB,uEAA0BR,MAA1B,aAA0BA,MAA1B,uBAA0BA,MAAM,CAAEQ,IAAlC,yCAA0C;AAJxC;AAJH,OAAD,CADP;AAAA,KADH,CADF;AAiBD,GAlBD;;AAoBA,QAAM;AAAEvB,IAAAA;AAAF,MAAaR,KAAnB;AAEA,sBACE,oBAAC,sBAAD,qBACE,oBAAC,oBAAD;AACE,IAAA,OAAO,EAAEI,qBADX;AAEE,IAAA,YAAY,MAFd;AAGE,IAAA,KAAK,EAAE4B,MAAM,CAACC;AAHhB,KAKGzB,MAAM,CAAC0B,GAAP,CAAW,CAACC,KAAD,EAAQ1B,KAAR,KAAkB;AAC5B,UAAM2B,UAAU,GAAGlC,WAAW,CAACiC,KAAK,CAACzB,GAAP,CAA9B;AACA,UAAM;AAAE2B,MAAAA,IAAI,GAAG,IAAT;AAAeC,MAAAA;AAAf,QAAiCF,UAAU,CAACX,OAAlD;AACA,UAAMc,SAAS,GAAGvC,KAAK,CAACS,KAAN,KAAgBA,KAAlC;;AAEA,QAAI6B,aAAa,IAAI,CAACC,SAAtB,EAAiC;AAC/B,aAAO,IAAP;AACD;;AAED,QAAIF,IAAI,IAAI,CAAC1B,MAAM,CAACG,QAAP,CAAgBqB,KAAK,CAACzB,GAAtB,CAAT,IAAuC,CAAC6B,SAA5C,EAAuD;AACrD;AACA,aAAO,IAAP;AACD;;AAED,UAAM;AACJC,MAAAA,MAAM,GAAG;AAAA,YAAC;AAAEpB,UAAAA,MAAF;AAAUK,UAAAA;AAAV,SAAD;AAAA,4BACP,oBAAC,MAAD,eACMA,OADN;AAEE,UAAA,MAAM,EAAEL,MAFV;AAGE,UAAA,KAAK,EAAErC,cAAc,CAAC0C,OAAD,EAAUU,KAAK,CAACM,IAAhB;AAHvB,WADO;AAAA;AADL,QAQFL,UAAU,CAACX,OARf;AAUA,wBACE,oBAAC,WAAD;AACE,MAAA,GAAG,EAAEU,KAAK,CAACzB,GADb;AAEE,MAAA,KAAK,EAAE,CAACrB,UAAU,CAACqD,YAAZ,EAA0B;AAAEC,QAAAA,MAAM,EAAEJ,SAAS,GAAG,CAAH,GAAO,CAAC;AAA3B,OAA1B,CAFT;AAGE,MAAA,OAAO,EAAEA,SAHX;AAIE,MAAA,OAAO,EAAEnC;AAJX,oBAME,oBAAC,yBAAD,CAA2B,QAA3B;AAAoC,MAAA,KAAK,EAAEc;AAA3C,oBACE,oBAAC,MAAD;AACE,MAAA,OAAO,EAAEqB,SADX;AAEE,MAAA,KAAK,EAAEH,UAAU,CAACD,KAFpB;AAGE,MAAA,UAAU,EAAEC,UAAU,CAACnC,UAHzB;AAIE,MAAA,WAAW,EAAEmC,UAAU,CAACX,OAAX,CAAmBmB,WAJlC;AAKE,MAAA,iBAAiB,EAAER,UAAU,CAACX,OAAX,CAAmBoB,iBALxC;AAME,MAAA,qBAAqB,EACnBT,UAAU,CAACX,OAAX,CAAmBqB,qBAPvB;AASE,MAAA,MAAM,EAAEN,MAAM,CAAC;AACbpB,QAAAA,MAAM,EAAEL,UADK;AAEboB,QAAAA,KAAK,EAAEC,UAAU,CAACD,KAFL;AAGblC,QAAAA,UAAU,EACRmC,UAAU,CAACnC,UAJA;AAKbwB,QAAAA,OAAO,EAAEW,UAAU,CAACX;AALP,OAAD,CAThB;AAgBE,MAAA,KAAK,EAAEnB;AAhBT,OAkBG8B,UAAU,CAACW,MAAX,EAlBH,CADF,CANF,CADF;AA+BD,GAvDA,CALH,CADF,eA+DE,oBAAC,iCAAD,CAAmC,QAAnC;AAA4C,IAAA,KAAK,EAAE5B;AAAnD,KACGQ,YAAY,EADf,CA/DF,CADF;AAqED;AAED,MAAMK,MAAM,GAAG3C,UAAU,CAAC2D,MAAX,CAAkB;AAC/Bf,EAAAA,SAAS,EAAE;AACTgB,IAAAA,IAAI,EAAE,CADG;AAETC,IAAAA,QAAQ,EAAE;AAFD;AADoB,CAAlB,CAAf","sourcesContent":["import {\n getHeaderTitle,\n Header,\n SafeAreaProviderCompat,\n Screen,\n} from '@react-navigation/elements';\nimport type {\n ParamListBase,\n TabNavigationState,\n} from '@react-navigation/native';\nimport * as React from 'react';\nimport { Platform, StyleSheet } from 'react-native';\nimport { SafeAreaInsetsContext } from 'react-native-safe-area-context';\n\nimport type {\n BottomTabBarProps,\n BottomTabDescriptorMap,\n BottomTabHeaderProps,\n BottomTabNavigationConfig,\n BottomTabNavigationHelpers,\n BottomTabNavigationProp,\n} from '../types';\nimport BottomTabBarHeightCallbackContext from '../utils/BottomTabBarHeightCallbackContext';\nimport BottomTabBarHeightContext from '../utils/BottomTabBarHeightContext';\nimport BottomTabBar, { getTabBarHeight } from './BottomTabBar';\nimport { MaybeScreen, MaybeScreenContainer } from './ScreenFallback';\n\ntype Props = BottomTabNavigationConfig & {\n state: TabNavigationState<ParamListBase>;\n navigation: BottomTabNavigationHelpers;\n descriptors: BottomTabDescriptorMap;\n};\n\nexport default function BottomTabView(props: Props) {\n const {\n tabBar = (props: BottomTabBarProps) => <BottomTabBar {...props} />,\n state,\n navigation,\n descriptors,\n safeAreaInsets,\n detachInactiveScreens = Platform.OS === 'web' ||\n Platform.OS === 'android' ||\n Platform.OS === 'ios',\n sceneContainerStyle,\n } = props;\n\n const focusedRouteKey = state.routes[state.index].key;\n const [loaded, setLoaded] = React.useState([focusedRouteKey]);\n\n if (!loaded.includes(focusedRouteKey)) {\n setLoaded([...loaded, focusedRouteKey]);\n }\n\n const dimensions = SafeAreaProviderCompat.initialMetrics.frame;\n const [tabBarHeight, setTabBarHeight] = React.useState(() =>\n getTabBarHeight({\n state,\n descriptors,\n dimensions,\n layout: { width: dimensions.width, height: 0 },\n insets: {\n ...SafeAreaProviderCompat.initialMetrics.insets,\n ...props.safeAreaInsets,\n },\n style: descriptors[state.routes[state.index].key].options.tabBarStyle,\n })\n );\n\n const renderTabBar = () => {\n return (\n <SafeAreaInsetsContext.Consumer>\n {(insets) =>\n tabBar({\n state: state,\n descriptors: descriptors,\n navigation: navigation,\n insets: {\n top: safeAreaInsets?.top ?? insets?.top ?? 0,\n right: safeAreaInsets?.right ?? insets?.right ?? 0,\n bottom: safeAreaInsets?.bottom ?? insets?.bottom ?? 0,\n left: safeAreaInsets?.left ?? insets?.left ?? 0,\n },\n })\n }\n </SafeAreaInsetsContext.Consumer>\n );\n };\n\n const { routes } = state;\n\n return (\n <SafeAreaProviderCompat>\n <MaybeScreenContainer\n enabled={detachInactiveScreens}\n hasTwoStates\n style={styles.container}\n >\n {routes.map((route, index) => {\n const descriptor = descriptors[route.key];\n const { lazy = true, unmountOnBlur } = descriptor.options;\n const isFocused = state.index === index;\n\n if (unmountOnBlur && !isFocused) {\n return null;\n }\n\n if (lazy && !loaded.includes(route.key) && !isFocused) {\n // Don't render a lazy screen if we've never navigated to it\n return null;\n }\n\n const {\n header = ({ layout, options }: BottomTabHeaderProps) => (\n <Header\n {...options}\n layout={layout}\n title={getHeaderTitle(options, route.name)}\n />\n ),\n } = descriptor.options;\n\n return (\n <MaybeScreen\n key={route.key}\n style={[StyleSheet.absoluteFill, { zIndex: isFocused ? 0 : -1 }]}\n visible={isFocused}\n enabled={detachInactiveScreens}\n >\n <BottomTabBarHeightContext.Provider value={tabBarHeight}>\n <Screen\n focused={isFocused}\n route={descriptor.route}\n navigation={descriptor.navigation}\n headerShown={descriptor.options.headerShown}\n headerTransparent={descriptor.options.headerTransparent}\n headerStatusBarHeight={\n descriptor.options.headerStatusBarHeight\n }\n header={header({\n layout: dimensions,\n route: descriptor.route,\n navigation:\n descriptor.navigation as BottomTabNavigationProp<ParamListBase>,\n options: descriptor.options,\n })}\n style={sceneContainerStyle}\n >\n {descriptor.render()}\n </Screen>\n </BottomTabBarHeightContext.Provider>\n </MaybeScreen>\n );\n })}\n </MaybeScreenContainer>\n <BottomTabBarHeightCallbackContext.Provider value={setTabBarHeight}>\n {renderTabBar()}\n </BottomTabBarHeightCallbackContext.Provider>\n </SafeAreaProviderCompat>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n overflow: 'hidden',\n },\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["ScreenFallback.tsx"],"names":["ResourceSavingView","React","View","Screens","require","e","MaybeScreenContainer","enabled","rest","screensEnabled","MaybeScreen","visible","children"],"mappings":";;AAAA,SAASA,kBAAT,QAAmC,4BAAnC;AACA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AACA,SAAoBC,IAApB,QAAsD,cAAtD;AASA,IAAIC,OAAJ;;AAEA,IAAI;AACFA,EAAAA,OAAO,GAAGC,OAAO,CAAC,sBAAD,CAAjB;AACD,CAFD,CAEE,OAAOC,CAAP,EAAU,CACV;AACD;;AAED,OAAO,MAAMC,oBAAoB,GAAG,QAM9B;AAAA;;AAAA,MAN+B;AACnCC,IAAAA,OADmC;AAEnC,OAAGC;AAFgC,GAM/B;;AACJ,kBAAIL,OAAJ,8DAAI,SAASM,cAAb,kDAAI,oCAAJ,EAAiC;AAC/B,wBAAO,oBAAC,OAAD,CAAS,eAAT;AAAyB,MAAA,OAAO,EAAEF;AAAlC,OAA+CC,IAA/C,EAAP;AACD;;AAED,sBAAO,oBAAC,IAAD,EAAUA,IAAV,CAAP;AACD,CAZM;AAcP,OAAO,SAASE,WAAT,QAA4D;AAAA;;AAAA,MAAvC;AAAEC,IAAAA,OAAF;AAAWC,IAAAA,QAAX;AAAqB,OAAGJ;AAAxB,GAAuC;;AACjE,mBAAIL,OAAJ,+DAAI,UAASM,cAAb,kDAAI,qCAAJ,EAAiC;AAC/B,wBACE,oBAAC,OAAD,CAAS,MAAT;AAAgB,MAAA,aAAa,EAAEE,OAAO,GAAG,CAAH,GAAO;AAA7C,OAAoDH,IAApD,GACGI,QADH,CADF;AAKD;;AAED,sBACE,oBAAC,kBAAD;AAAoB,IAAA,OAAO,EAAED;AAA7B,KAA0CH,IAA1C,GACGI,QADH,CADF;AAKD","sourcesContent":["import { ResourceSavingView } from '@react-navigation/elements';\nimport * as React from 'react';\nimport { StyleProp, View, ViewProps, ViewStyle } from 'react-native';\n\ntype Props = {\n visible: boolean;\n children: React.ReactNode;\n enabled: boolean;\n style?: StyleProp<ViewStyle>;\n};\n\nlet Screens: typeof import('react-native-screens') | undefined;\n\ntry {\n Screens = require('react-native-screens');\n} catch (e) {\n // Ignore\n}\n\nexport const MaybeScreenContainer = ({\n enabled,\n ...rest\n}: ViewProps & {\n enabled: boolean;\n children: React.ReactNode;\n}) => {\n if (Screens?.screensEnabled?.()) {\n return <Screens.ScreenContainer enabled={enabled} {...rest} />;\n }\n\n return <View {...rest} />;\n};\n\nexport function MaybeScreen({ visible, children, ...rest }: Props) {\n if (Screens?.screensEnabled?.()) {\n return (\n <Screens.Screen activityState={visible ? 2 : 0} {...rest}>\n {children}\n </Screens.Screen>\n );\n }\n\n return (\n <ResourceSavingView visible={visible} {...rest}>\n {children}\n </ResourceSavingView>\n );\n}\n"]}
1
+ {"version":3,"sources":["ScreenFallback.tsx"],"names":["ResourceSavingView","React","View","Screens","require","e","MaybeScreenContainer","enabled","rest","screensEnabled","MaybeScreen","visible","children"],"mappings":";;AAAA,SAASA,kBAAT,QAAmC,4BAAnC;AACA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AACA,SAAoBC,IAApB,QAAsD,cAAtD;AASA,IAAIC,OAAJ;;AAEA,IAAI;AACFA,EAAAA,OAAO,GAAGC,OAAO,CAAC,sBAAD,CAAjB;AACD,CAFD,CAEE,OAAOC,CAAP,EAAU,CACV;AACD;;AAED,OAAO,MAAMC,oBAAoB,GAAG,QAO9B;AAAA;;AAAA,MAP+B;AACnCC,IAAAA,OADmC;AAEnC,OAAGC;AAFgC,GAO/B;;AACJ,kBAAIL,OAAJ,8DAAI,SAASM,cAAb,kDAAI,oCAAJ,EAAiC;AAC/B,wBAAO,oBAAC,OAAD,CAAS,eAAT;AAAyB,MAAA,OAAO,EAAEF;AAAlC,OAA+CC,IAA/C,EAAP;AACD;;AAED,sBAAO,oBAAC,IAAD,EAAUA,IAAV,CAAP;AACD,CAbM;AAeP,OAAO,SAASE,WAAT,QAA4D;AAAA;;AAAA,MAAvC;AAAEC,IAAAA,OAAF;AAAWC,IAAAA,QAAX;AAAqB,OAAGJ;AAAxB,GAAuC;;AACjE,mBAAIL,OAAJ,+DAAI,UAASM,cAAb,kDAAI,qCAAJ,EAAiC;AAC/B,wBACE,oBAAC,OAAD,CAAS,MAAT;AAAgB,MAAA,aAAa,EAAEE,OAAO,GAAG,CAAH,GAAO;AAA7C,OAAoDH,IAApD,GACGI,QADH,CADF;AAKD;;AAED,sBACE,oBAAC,kBAAD;AAAoB,IAAA,OAAO,EAAED;AAA7B,KAA0CH,IAA1C,GACGI,QADH,CADF;AAKD","sourcesContent":["import { ResourceSavingView } from '@react-navigation/elements';\nimport * as React from 'react';\nimport { StyleProp, View, ViewProps, ViewStyle } from 'react-native';\n\ntype Props = {\n visible: boolean;\n children: React.ReactNode;\n enabled: boolean;\n style?: StyleProp<ViewStyle>;\n};\n\nlet Screens: typeof import('react-native-screens') | undefined;\n\ntry {\n Screens = require('react-native-screens');\n} catch (e) {\n // Ignore\n}\n\nexport const MaybeScreenContainer = ({\n enabled,\n ...rest\n}: ViewProps & {\n enabled: boolean;\n hasTwoStates: boolean;\n children: React.ReactNode;\n}) => {\n if (Screens?.screensEnabled?.()) {\n return <Screens.ScreenContainer enabled={enabled} {...rest} />;\n }\n\n return <View {...rest} />;\n};\n\nexport function MaybeScreen({ visible, children, ...rest }: Props) {\n if (Screens?.screensEnabled?.()) {\n return (\n <Screens.Screen activityState={visible ? 2 : 0} {...rest}>\n {children}\n </Screens.Screen>\n );\n }\n\n return (\n <ResourceSavingView visible={visible} {...rest}>\n {children}\n </ResourceSavingView>\n );\n}\n"]}
@@ -2,6 +2,6 @@
2
2
  import { DefaultNavigatorOptions, ParamListBase, TabNavigationState, TabRouterOptions } from '@react-navigation/native';
3
3
  import type { BottomTabNavigationConfig, BottomTabNavigationEventMap, BottomTabNavigationOptions } from '../types';
4
4
  declare type Props = DefaultNavigatorOptions<ParamListBase, TabNavigationState<ParamListBase>, BottomTabNavigationOptions, BottomTabNavigationEventMap> & TabRouterOptions & BottomTabNavigationConfig;
5
- declare function BottomTabNavigator({ initialRouteName, backBehavior, children, screenListeners, screenOptions, sceneContainerStyle, ...restWithDeprecated }: Props): JSX.Element;
5
+ declare function BottomTabNavigator({ id, initialRouteName, backBehavior, children, screenListeners, screenOptions, sceneContainerStyle, ...restWithDeprecated }: Props): JSX.Element;
6
6
  declare const _default: <ParamList extends ParamListBase>() => import("@react-navigation/native").TypedNavigator<ParamList, TabNavigationState<ParamListBase>, BottomTabNavigationOptions, BottomTabNavigationEventMap, typeof BottomTabNavigator>;
7
7
  export default _default;
@@ -24,9 +24,9 @@ export declare type BottomTabNavigationEventMap = {
24
24
  };
25
25
  export declare type LabelPosition = 'beside-icon' | 'below-icon';
26
26
  export declare type BottomTabNavigationHelpers = NavigationHelpers<ParamListBase, BottomTabNavigationEventMap> & TabActionHelpers<ParamListBase>;
27
- export declare type BottomTabNavigationProp<ParamList extends ParamListBase, RouteName extends keyof ParamList = keyof ParamList> = NavigationProp<ParamList, RouteName, TabNavigationState<ParamList>, BottomTabNavigationOptions, BottomTabNavigationEventMap> & TabActionHelpers<ParamList>;
28
- export declare type BottomTabScreenProps<ParamList extends ParamListBase, RouteName extends keyof ParamList = keyof ParamList> = {
29
- navigation: BottomTabNavigationProp<ParamList, RouteName>;
27
+ export declare type BottomTabNavigationProp<ParamList extends ParamListBase, RouteName extends keyof ParamList = keyof ParamList, NavigatorID extends string | undefined = undefined> = NavigationProp<ParamList, RouteName, NavigatorID, TabNavigationState<ParamList>, BottomTabNavigationOptions, BottomTabNavigationEventMap> & TabActionHelpers<ParamList>;
28
+ export declare type BottomTabScreenProps<ParamList extends ParamListBase, RouteName extends keyof ParamList = keyof ParamList, NavigatorID extends string | undefined = undefined> = {
29
+ navigation: BottomTabNavigationProp<ParamList, RouteName, NavigatorID>;
30
30
  route: RouteProp<ParamList, RouteName>;
31
31
  };
32
32
  export declare type TimingKeyboardAnimationConfig = {
@@ -18,5 +18,5 @@ declare type Props = {
18
18
  */
19
19
  style?: Animated.WithAnimatedValue<StyleProp<TextStyle>>;
20
20
  };
21
- export default function Badge({ visible, size, children, style, ...rest }: Props): JSX.Element | null;
21
+ export default function Badge({ children, style, visible, size, ...rest }: Props): JSX.Element | null;
22
22
  export {};
@@ -8,6 +8,7 @@ declare type Props = {
8
8
  };
9
9
  export declare const MaybeScreenContainer: ({ enabled, ...rest }: ViewProps & {
10
10
  enabled: boolean;
11
+ hasTwoStates: boolean;
11
12
  children: React.ReactNode;
12
13
  }) => JSX.Element;
13
14
  export declare function MaybeScreen({ visible, children, ...rest }: Props): JSX.Element;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@react-navigation/bottom-tabs",
3
3
  "description": "Bottom tab navigator following iOS design guidelines",
4
- "version": "6.1.0",
4
+ "version": "6.3.1",
5
5
  "keywords": [
6
6
  "react-native-component",
7
7
  "react-component",
@@ -36,12 +36,12 @@
36
36
  "clean": "del lib"
37
37
  },
38
38
  "dependencies": {
39
- "@react-navigation/elements": "^1.3.0",
39
+ "@react-navigation/elements": "^1.3.3",
40
40
  "color": "^3.1.3",
41
41
  "warn-once": "^0.1.0"
42
42
  },
43
43
  "devDependencies": {
44
- "@react-navigation/native": "^6.0.7",
44
+ "@react-navigation/native": "^6.0.10",
45
45
  "@testing-library/react-native": "^7.2.0",
46
46
  "@types/color": "^3.0.1",
47
47
  "@types/react": "^17.0.9",
@@ -75,5 +75,5 @@
75
75
  ]
76
76
  ]
77
77
  },
78
- "gitHead": "4c5805867ce946d99ba17f71b4d6086bb8751262"
78
+ "gitHead": "b1c421445ecb75d514ce27791433b12f9a7e75b7"
79
79
  }
@@ -28,6 +28,7 @@ type Props = DefaultNavigatorOptions<
28
28
  BottomTabNavigationConfig;
29
29
 
30
30
  function BottomTabNavigator({
31
+ id,
31
32
  initialRouteName,
32
33
  backBehavior,
33
34
  children,
@@ -103,6 +104,7 @@ function BottomTabNavigator({
103
104
  BottomTabNavigationOptions,
104
105
  BottomTabNavigationEventMap
105
106
  >(TabRouter, {
107
+ id,
106
108
  initialRouteName,
107
109
  backBehavior,
108
110
  children,
package/src/types.tsx CHANGED
@@ -42,10 +42,12 @@ export type BottomTabNavigationHelpers = NavigationHelpers<
42
42
 
43
43
  export type BottomTabNavigationProp<
44
44
  ParamList extends ParamListBase,
45
- RouteName extends keyof ParamList = keyof ParamList
45
+ RouteName extends keyof ParamList = keyof ParamList,
46
+ NavigatorID extends string | undefined = undefined
46
47
  > = NavigationProp<
47
48
  ParamList,
48
49
  RouteName,
50
+ NavigatorID,
49
51
  TabNavigationState<ParamList>,
50
52
  BottomTabNavigationOptions,
51
53
  BottomTabNavigationEventMap
@@ -54,9 +56,10 @@ export type BottomTabNavigationProp<
54
56
 
55
57
  export type BottomTabScreenProps<
56
58
  ParamList extends ParamListBase,
57
- RouteName extends keyof ParamList = keyof ParamList
59
+ RouteName extends keyof ParamList = keyof ParamList,
60
+ NavigatorID extends string | undefined = undefined
58
61
  > = {
59
- navigation: BottomTabNavigationProp<ParamList, RouteName>;
62
+ navigation: BottomTabNavigationProp<ParamList, RouteName, NavigatorID>;
60
63
  route: RouteProp<ParamList, RouteName>;
61
64
  };
62
65
 
@@ -23,14 +23,14 @@ type Props = {
23
23
  };
24
24
 
25
25
  export default function Badge({
26
- visible = true,
27
- size = 18,
28
26
  children,
29
27
  style,
28
+ visible = true,
29
+ size = 18,
30
30
  ...rest
31
31
  }: Props) {
32
32
  const [opacity] = React.useState(() => new Animated.Value(visible ? 1 : 0));
33
- const [rendered, setRendered] = React.useState(visible ? true : false);
33
+ const [rendered, setRendered] = React.useState(visible);
34
34
 
35
35
  const theme = useTheme();
36
36
 
@@ -52,12 +52,12 @@ export default function Badge({
52
52
  return () => opacity.stopAnimation();
53
53
  }, [opacity, rendered, visible]);
54
54
 
55
- if (visible && !rendered) {
56
- setRendered(true);
57
- }
58
-
59
- if (!visible && !rendered) {
60
- return null;
55
+ if (!rendered) {
56
+ if (visible) {
57
+ setRendered(true);
58
+ } else {
59
+ return null;
60
+ }
61
61
  }
62
62
 
63
63
  // @ts-expect-error: backgroundColor definitely exists
@@ -73,7 +73,6 @@ export default function Badge({
73
73
  numberOfLines={1}
74
74
  style={[
75
75
  {
76
- opacity,
77
76
  transform: [
78
77
  {
79
78
  scale: opacity.interpolate({
@@ -82,12 +81,13 @@ export default function Badge({
82
81
  }),
83
82
  },
84
83
  ],
85
- backgroundColor,
86
84
  color: textColor,
87
- fontSize,
88
85
  lineHeight: size - 1,
89
86
  height: size,
90
87
  minWidth: size,
88
+ opacity,
89
+ backgroundColor,
90
+ fontSize,
91
91
  borderRadius,
92
92
  },
93
93
  styles.container,
@@ -92,6 +92,7 @@ export default function BottomTabView(props: Props) {
92
92
  <SafeAreaProviderCompat>
93
93
  <MaybeScreenContainer
94
94
  enabled={detachInactiveScreens}
95
+ hasTwoStates
95
96
  style={styles.container}
96
97
  >
97
98
  {routes.map((route, index) => {
@@ -22,6 +22,7 @@ export const MaybeScreenContainer = ({
22
22
  ...rest
23
23
  }: ViewProps & {
24
24
  enabled: boolean;
25
+ hasTwoStates: boolean;
25
26
  children: React.ReactNode;
26
27
  }) => {
27
28
  if (Screens?.screensEnabled?.()) {