@react-navigation/bottom-tabs 6.0.9 → 6.1.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.
- package/lib/commonjs/index.js +6 -6
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/navigators/createBottomTabNavigator.js +10 -9
- package/lib/commonjs/navigators/createBottomTabNavigator.js.map +1 -1
- package/lib/commonjs/views/Badge.js +13 -10
- package/lib/commonjs/views/Badge.js.map +1 -1
- package/lib/commonjs/views/BottomTabBar.js +39 -31
- package/lib/commonjs/views/BottomTabBar.js.map +1 -1
- package/lib/commonjs/views/BottomTabItem.js +65 -57
- package/lib/commonjs/views/BottomTabItem.js.map +1 -1
- package/lib/commonjs/views/BottomTabView.js +10 -7
- package/lib/commonjs/views/BottomTabView.js.map +1 -1
- package/lib/commonjs/views/ScreenFallback.js +13 -9
- package/lib/commonjs/views/ScreenFallback.js.map +1 -1
- package/lib/commonjs/views/TabBarIcon.js +13 -12
- package/lib/commonjs/views/TabBarIcon.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/navigators/createBottomTabNavigator.js +10 -9
- package/lib/module/navigators/createBottomTabNavigator.js.map +1 -1
- package/lib/module/views/Badge.js +13 -10
- package/lib/module/views/Badge.js.map +1 -1
- package/lib/module/views/BottomTabBar.js +39 -31
- package/lib/module/views/BottomTabBar.js.map +1 -1
- package/lib/module/views/BottomTabItem.js +65 -57
- package/lib/module/views/BottomTabItem.js.map +1 -1
- package/lib/module/views/BottomTabView.js +10 -7
- package/lib/module/views/BottomTabView.js.map +1 -1
- package/lib/module/views/ScreenFallback.js +13 -9
- package/lib/module/views/ScreenFallback.js.map +1 -1
- package/lib/module/views/TabBarIcon.js +13 -12
- package/lib/module/views/TabBarIcon.js.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -1
- package/package.json +8 -8
- package/src/index.tsx +1 -0
|
@@ -103,13 +103,16 @@ function BottomTabView(props) {
|
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
const {
|
|
106
|
-
header =
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
106
|
+
header = _ref5 => {
|
|
107
|
+
let {
|
|
108
|
+
layout,
|
|
109
|
+
options
|
|
110
|
+
} = _ref5;
|
|
111
|
+
return /*#__PURE__*/React.createElement(_elements.Header, _extends({}, options, {
|
|
112
|
+
layout: layout,
|
|
113
|
+
title: (0, _elements.getHeaderTitle)(options, route.name)
|
|
114
|
+
}));
|
|
115
|
+
}
|
|
113
116
|
} = descriptor.options;
|
|
114
117
|
return /*#__PURE__*/React.createElement(_ScreenFallback.MaybeScreen, {
|
|
115
118
|
key: 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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
|
|
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"]}
|
|
@@ -25,12 +25,14 @@ try {
|
|
|
25
25
|
} catch (e) {// Ignore
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
const MaybeScreenContainer =
|
|
29
|
-
enabled,
|
|
30
|
-
...rest
|
|
31
|
-
}) => {
|
|
28
|
+
const MaybeScreenContainer = _ref => {
|
|
32
29
|
var _Screens, _Screens$screensEnabl;
|
|
33
30
|
|
|
31
|
+
let {
|
|
32
|
+
enabled,
|
|
33
|
+
...rest
|
|
34
|
+
} = _ref;
|
|
35
|
+
|
|
34
36
|
if ((_Screens = Screens) !== null && _Screens !== void 0 && (_Screens$screensEnabl = _Screens.screensEnabled) !== null && _Screens$screensEnabl !== void 0 && _Screens$screensEnabl.call(_Screens)) {
|
|
35
37
|
return /*#__PURE__*/React.createElement(Screens.ScreenContainer, _extends({
|
|
36
38
|
enabled: enabled
|
|
@@ -42,13 +44,15 @@ const MaybeScreenContainer = ({
|
|
|
42
44
|
|
|
43
45
|
exports.MaybeScreenContainer = MaybeScreenContainer;
|
|
44
46
|
|
|
45
|
-
function MaybeScreen({
|
|
46
|
-
visible,
|
|
47
|
-
children,
|
|
48
|
-
...rest
|
|
49
|
-
}) {
|
|
47
|
+
function MaybeScreen(_ref2) {
|
|
50
48
|
var _Screens2, _Screens2$screensEnab;
|
|
51
49
|
|
|
50
|
+
let {
|
|
51
|
+
visible,
|
|
52
|
+
children,
|
|
53
|
+
...rest
|
|
54
|
+
} = _ref2;
|
|
55
|
+
|
|
52
56
|
if ((_Screens2 = Screens) !== null && _Screens2 !== void 0 && (_Screens2$screensEnab = _Screens2.screensEnabled) !== null && _Screens2$screensEnab !== void 0 && _Screens2$screensEnab.call(_Screens2)) {
|
|
53
57
|
return /*#__PURE__*/React.createElement(Screens.Screen, _extends({
|
|
54
58
|
activityState: visible ? 2 : 0
|
|
@@ -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,
|
|
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"]}
|
|
@@ -13,18 +13,19 @@ var _Badge = _interopRequireDefault(require("./Badge"));
|
|
|
13
13
|
|
|
14
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
15
|
|
|
16
|
-
function TabBarIcon({
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
16
|
+
function TabBarIcon(_ref) {
|
|
17
|
+
let {
|
|
18
|
+
route: _,
|
|
19
|
+
horizontal,
|
|
20
|
+
badge,
|
|
21
|
+
badgeStyle,
|
|
22
|
+
activeOpacity,
|
|
23
|
+
inactiveOpacity,
|
|
24
|
+
activeTintColor,
|
|
25
|
+
inactiveTintColor,
|
|
26
|
+
renderIcon,
|
|
27
|
+
style
|
|
28
|
+
} = _ref;
|
|
28
29
|
const size = 25; // We render the icon twice at the same position on top of each other:
|
|
29
30
|
// active and inactive one, so we can fade between them.
|
|
30
31
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["TabBarIcon.tsx"],"names":["TabBarIcon","route","_","horizontal","badge","badgeStyle","activeOpacity","inactiveOpacity","activeTintColor","inactiveTintColor","renderIcon","style","size","styles","iconHorizontal","iconVertical","icon","opacity","focused","color","badgeHorizontal","badgeVertical","StyleSheet","create","position","alignSelf","alignItems","justifyContent","height","width","minWidth","flex","marginTop","left","top"],"mappings":";;;;;;;AACA;;AACA;;AAQA;;;;AAmBe,SAASA,UAAT,
|
|
1
|
+
{"version":3,"sources":["TabBarIcon.tsx"],"names":["TabBarIcon","route","_","horizontal","badge","badgeStyle","activeOpacity","inactiveOpacity","activeTintColor","inactiveTintColor","renderIcon","style","size","styles","iconHorizontal","iconVertical","icon","opacity","focused","color","badgeHorizontal","badgeVertical","StyleSheet","create","position","alignSelf","alignItems","justifyContent","height","width","minWidth","flex","marginTop","left","top"],"mappings":";;;;;;;AACA;;AACA;;AAQA;;;;AAmBe,SAASA,UAAT,OAWL;AAAA,MAXyB;AACjCC,IAAAA,KAAK,EAAEC,CAD0B;AAEjCC,IAAAA,UAFiC;AAGjCC,IAAAA,KAHiC;AAIjCC,IAAAA,UAJiC;AAKjCC,IAAAA,aALiC;AAMjCC,IAAAA,eANiC;AAOjCC,IAAAA,eAPiC;AAQjCC,IAAAA,iBARiC;AASjCC,IAAAA,UATiC;AAUjCC,IAAAA;AAViC,GAWzB;AACR,QAAMC,IAAI,GAAG,EAAb,CADQ,CAGR;AACA;;AACA,sBACE,6BAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CAACT,UAAU,GAAGU,MAAM,CAACC,cAAV,GAA2BD,MAAM,CAACE,YAA7C,EAA2DJ,KAA3D;AADT,kBAGE,6BAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAACE,MAAM,CAACG,IAAR,EAAc;AAAEC,MAAAA,OAAO,EAAEX;AAAX,KAAd;AAAb,KACGI,UAAU,CAAC;AACVQ,IAAAA,OAAO,EAAE,IADC;AAEVN,IAAAA,IAFU;AAGVO,IAAAA,KAAK,EAAEX;AAHG,GAAD,CADb,CAHF,eAUE,6BAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAACK,MAAM,CAACG,IAAR,EAAc;AAAEC,MAAAA,OAAO,EAAEV;AAAX,KAAd;AAAb,KACGG,UAAU,CAAC;AACVQ,IAAAA,OAAO,EAAE,KADC;AAEVN,IAAAA,IAFU;AAGVO,IAAAA,KAAK,EAAEV;AAHG,GAAD,CADb,CAVF,eAiBE,6BAAC,cAAD;AACE,IAAA,OAAO,EAAEL,KAAK,IAAI,IADpB;AAEE,IAAA,KAAK,EAAE,CACLS,MAAM,CAACT,KADF,EAELD,UAAU,GAAGU,MAAM,CAACO,eAAV,GAA4BP,MAAM,CAACQ,aAFxC,EAGLhB,UAHK,CAFT;AAOE,IAAA,IAAI,EAAGO,IAAI,GAAG,CAAR,GAAa;AAPrB,KASGR,KATH,CAjBF,CADF;AA+BD;;AAED,MAAMS,MAAM,GAAGS,wBAAWC,MAAX,CAAkB;AAC/BP,EAAAA,IAAI,EAAE;AACJ;AACA;AACA;AACAQ,IAAAA,QAAQ,EAAE,UAJN;AAKJC,IAAAA,SAAS,EAAE,QALP;AAMJC,IAAAA,UAAU,EAAE,QANR;AAOJC,IAAAA,cAAc,EAAE,QAPZ;AAQJC,IAAAA,MAAM,EAAE,MARJ;AASJC,IAAAA,KAAK,EAAE,MATH;AAUJ;AACAC,IAAAA,QAAQ,EAAE;AAXN,GADyB;AAc/Bf,EAAAA,YAAY,EAAE;AACZgB,IAAAA,IAAI,EAAE;AADM,GAdiB;AAiB/BjB,EAAAA,cAAc,EAAE;AACdc,IAAAA,MAAM,EAAE,MADM;AAEdI,IAAAA,SAAS,EAAE;AAFG,GAjBe;AAqB/B5B,EAAAA,KAAK,EAAE;AACLoB,IAAAA,QAAQ,EAAE,UADL;AAELS,IAAAA,IAAI,EAAE;AAFD,GArBwB;AAyB/BZ,EAAAA,aAAa,EAAE;AACba,IAAAA,GAAG,EAAE;AADQ,GAzBgB;AA4B/Bd,EAAAA,eAAe,EAAE;AACfc,IAAAA,GAAG,EAAE;AADU;AA5Bc,CAAlB,CAAf","sourcesContent":["import type { Route } from '@react-navigation/native';\nimport React from 'react';\nimport {\n StyleProp,\n StyleSheet,\n TextStyle,\n View,\n ViewStyle,\n} from 'react-native';\n\nimport Badge from './Badge';\n\ntype Props = {\n route: Route<string>;\n horizontal: boolean;\n badge?: string | number;\n badgeStyle?: StyleProp<TextStyle>;\n activeOpacity: number;\n inactiveOpacity: number;\n activeTintColor: string;\n inactiveTintColor: string;\n renderIcon: (props: {\n focused: boolean;\n color: string;\n size: number;\n }) => React.ReactNode;\n style: StyleProp<ViewStyle>;\n};\n\nexport default function TabBarIcon({\n route: _,\n horizontal,\n badge,\n badgeStyle,\n activeOpacity,\n inactiveOpacity,\n activeTintColor,\n inactiveTintColor,\n renderIcon,\n style,\n}: Props) {\n const size = 25;\n\n // We render the icon twice at the same position on top of each other:\n // active and inactive one, so we can fade between them.\n return (\n <View\n style={[horizontal ? styles.iconHorizontal : styles.iconVertical, style]}\n >\n <View style={[styles.icon, { opacity: activeOpacity }]}>\n {renderIcon({\n focused: true,\n size,\n color: activeTintColor,\n })}\n </View>\n <View style={[styles.icon, { opacity: inactiveOpacity }]}>\n {renderIcon({\n focused: false,\n size,\n color: inactiveTintColor,\n })}\n </View>\n <Badge\n visible={badge != null}\n style={[\n styles.badge,\n horizontal ? styles.badgeHorizontal : styles.badgeVertical,\n badgeStyle,\n ]}\n size={(size * 3) / 4}\n >\n {badge}\n </Badge>\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n icon: {\n // We render the icon twice at the same position on top of each other:\n // active and inactive one, so we can fade between them:\n // Cover the whole iconContainer:\n position: 'absolute',\n alignSelf: 'center',\n alignItems: 'center',\n justifyContent: 'center',\n height: '100%',\n width: '100%',\n // Workaround for react-native >= 0.54 layout bug\n minWidth: 25,\n },\n iconVertical: {\n flex: 1,\n },\n iconHorizontal: {\n height: '100%',\n marginTop: 3,\n },\n badge: {\n position: 'absolute',\n left: 3,\n },\n badgeVertical: {\n top: 3,\n },\n badgeHorizontal: {\n top: 7,\n },\n});\n"]}
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.tsx"],"names":["default","createBottomTabNavigator","BottomTabBar","BottomTabView","BottomTabBarHeightContext","useBottomTabBarHeight"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,OAAO,IAAIC,wBAApB,QAAoD,uCAApD;AAEA;AACA;AACA;;AACA,SAASD,OAAO,IAAIE,YAApB,QAAwC,sBAAxC;AACA,SAASF,OAAO,IAAIG,aAApB,QAAyC,uBAAzC;AAEA;AACA;AACA;;AACA,SAASH,OAAO,IAAII,yBAApB,QAAqD,mCAArD;AACA,SAASJ,OAAO,IAAIK,qBAApB,QAAiD,+BAAjD;AAEA;AACA;AACA","sourcesContent":["/**\n * Navigators\n */\nexport { default as createBottomTabNavigator } from './navigators/createBottomTabNavigator';\n\n/**\n * Views\n */\nexport { default as BottomTabBar } from './views/BottomTabBar';\nexport { default as BottomTabView } from './views/BottomTabView';\n\n/**\n * Utilities\n */\nexport { default as BottomTabBarHeightContext } from './utils/BottomTabBarHeightContext';\nexport { default as useBottomTabBarHeight } from './utils/useBottomTabBarHeight';\n\n/**\n * Types\n */\nexport type {\n BottomTabBarButtonProps,\n BottomTabBarProps,\n BottomTabHeaderProps,\n BottomTabNavigationOptions,\n BottomTabNavigationProp,\n BottomTabScreenProps,\n} from './types';\n"]}
|
|
1
|
+
{"version":3,"sources":["index.tsx"],"names":["default","createBottomTabNavigator","BottomTabBar","BottomTabView","BottomTabBarHeightContext","useBottomTabBarHeight"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,OAAO,IAAIC,wBAApB,QAAoD,uCAApD;AAEA;AACA;AACA;;AACA,SAASD,OAAO,IAAIE,YAApB,QAAwC,sBAAxC;AACA,SAASF,OAAO,IAAIG,aAApB,QAAyC,uBAAzC;AAEA;AACA;AACA;;AACA,SAASH,OAAO,IAAII,yBAApB,QAAqD,mCAArD;AACA,SAASJ,OAAO,IAAIK,qBAApB,QAAiD,+BAAjD;AAEA;AACA;AACA","sourcesContent":["/**\n * Navigators\n */\nexport { default as createBottomTabNavigator } from './navigators/createBottomTabNavigator';\n\n/**\n * Views\n */\nexport { default as BottomTabBar } from './views/BottomTabBar';\nexport { default as BottomTabView } from './views/BottomTabView';\n\n/**\n * Utilities\n */\nexport { default as BottomTabBarHeightContext } from './utils/BottomTabBarHeightContext';\nexport { default as useBottomTabBarHeight } from './utils/useBottomTabBarHeight';\n\n/**\n * Types\n */\nexport type {\n BottomTabBarButtonProps,\n BottomTabBarProps,\n BottomTabHeaderProps,\n BottomTabNavigationEventMap,\n BottomTabNavigationOptions,\n BottomTabNavigationProp,\n BottomTabScreenProps,\n} from './types';\n"]}
|
|
@@ -5,15 +5,16 @@ import * as React from 'react';
|
|
|
5
5
|
import warnOnce from 'warn-once';
|
|
6
6
|
import BottomTabView from '../views/BottomTabView';
|
|
7
7
|
|
|
8
|
-
function BottomTabNavigator({
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
8
|
+
function BottomTabNavigator(_ref) {
|
|
9
|
+
let {
|
|
10
|
+
initialRouteName,
|
|
11
|
+
backBehavior,
|
|
12
|
+
children,
|
|
13
|
+
screenListeners,
|
|
14
|
+
screenOptions,
|
|
15
|
+
sceneContainerStyle,
|
|
16
|
+
...restWithDeprecated
|
|
17
|
+
} = _ref;
|
|
17
18
|
const {
|
|
18
19
|
// @ts-expect-error: lazy is deprecated
|
|
19
20
|
lazy,
|
|
@@ -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":";;AAAA,SACEA,sBADF,EAMEC,SANF,EAQEC,oBARF,QASO,0BATP;AAUA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AACA,OAAOC,QAAP,MAAqB,WAArB;AAOA,OAAOC,aAAP,MAA0B,wBAA1B;;AAWA,SAASC,kBAAT,
|
|
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"]}
|
|
@@ -4,13 +4,14 @@ import { useTheme } from '@react-navigation/native';
|
|
|
4
4
|
import color from 'color';
|
|
5
5
|
import * as React from 'react';
|
|
6
6
|
import { Animated, StyleSheet } from 'react-native';
|
|
7
|
-
export default function Badge({
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
7
|
+
export default function Badge(_ref) {
|
|
8
|
+
let {
|
|
9
|
+
visible = true,
|
|
10
|
+
size = 18,
|
|
11
|
+
children,
|
|
12
|
+
style,
|
|
13
|
+
...rest
|
|
14
|
+
} = _ref;
|
|
14
15
|
const [opacity] = React.useState(() => new Animated.Value(visible ? 1 : 0));
|
|
15
16
|
const [rendered, setRendered] = React.useState(visible ? true : false);
|
|
16
17
|
const theme = useTheme();
|
|
@@ -23,9 +24,11 @@ export default function Badge({
|
|
|
23
24
|
toValue: visible ? 1 : 0,
|
|
24
25
|
duration: 150,
|
|
25
26
|
useNativeDriver: true
|
|
26
|
-
}).start(
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
}).start(_ref2 => {
|
|
28
|
+
let {
|
|
29
|
+
finished
|
|
30
|
+
} = _ref2;
|
|
31
|
+
|
|
29
32
|
if (finished && !visible) {
|
|
30
33
|
setRendered(false);
|
|
31
34
|
}
|
|
@@ -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":";;AAAA,SAASA,QAAT,QAAyB,0BAAzB;AACA,OAAOC,KAAP,MAAkB,OAAlB;AACA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AACA,SAASC,QAAT,EAA8BC,UAA9B,QAA2D,cAA3D;AAqBA,eAAe,SAASC,KAAT,
|
|
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"]}
|
|
@@ -11,12 +11,13 @@ const COMPACT_TABBAR_HEIGHT = 32;
|
|
|
11
11
|
const DEFAULT_MAX_TAB_ITEM_WIDTH = 125;
|
|
12
12
|
const useNativeDriver = Platform.OS !== 'web';
|
|
13
13
|
|
|
14
|
-
const shouldUseHorizontalLabels =
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
const shouldUseHorizontalLabels = _ref => {
|
|
15
|
+
let {
|
|
16
|
+
state,
|
|
17
|
+
descriptors,
|
|
18
|
+
layout,
|
|
19
|
+
dimensions
|
|
20
|
+
} = _ref;
|
|
20
21
|
const {
|
|
21
22
|
tabBarLabelPosition
|
|
22
23
|
} = descriptors[state.routes[state.index].key].options;
|
|
@@ -60,16 +61,17 @@ const getPaddingBottom = insets => Math.max(insets.bottom - Platform.select({
|
|
|
60
61
|
default: 0
|
|
61
62
|
}), 0);
|
|
62
63
|
|
|
63
|
-
export const getTabBarHeight =
|
|
64
|
-
state,
|
|
65
|
-
descriptors,
|
|
66
|
-
dimensions,
|
|
67
|
-
insets,
|
|
68
|
-
style,
|
|
69
|
-
...rest
|
|
70
|
-
}) => {
|
|
64
|
+
export const getTabBarHeight = _ref2 => {
|
|
71
65
|
var _StyleSheet$flatten;
|
|
72
66
|
|
|
67
|
+
let {
|
|
68
|
+
state,
|
|
69
|
+
descriptors,
|
|
70
|
+
dimensions,
|
|
71
|
+
insets,
|
|
72
|
+
style,
|
|
73
|
+
...rest
|
|
74
|
+
} = _ref2;
|
|
73
75
|
// @ts-ignore
|
|
74
76
|
const customHeight = (_StyleSheet$flatten = StyleSheet.flatten(style)) === null || _StyleSheet$flatten === void 0 ? void 0 : _StyleSheet$flatten.height;
|
|
75
77
|
|
|
@@ -92,13 +94,14 @@ export const getTabBarHeight = ({
|
|
|
92
94
|
|
|
93
95
|
return DEFAULT_TABBAR_HEIGHT + paddingBottom;
|
|
94
96
|
};
|
|
95
|
-
export default function BottomTabBar({
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
97
|
+
export default function BottomTabBar(_ref3) {
|
|
98
|
+
let {
|
|
99
|
+
state,
|
|
100
|
+
navigation,
|
|
101
|
+
descriptors,
|
|
102
|
+
insets,
|
|
103
|
+
style
|
|
104
|
+
} = _ref3;
|
|
102
105
|
const {
|
|
103
106
|
colors
|
|
104
107
|
} = useTheme();
|
|
@@ -139,9 +142,11 @@ export default function BottomTabBar({
|
|
|
139
142
|
useNativeDriver,
|
|
140
143
|
duration: 250,
|
|
141
144
|
...(visibilityAnimationConfig === null || visibilityAnimationConfig === void 0 ? void 0 : (_visibilityAnimationC2 = visibilityAnimationConfig.show) === null || _visibilityAnimationC2 === void 0 ? void 0 : _visibilityAnimationC2.config)
|
|
142
|
-
}).start(
|
|
143
|
-
|
|
144
|
-
|
|
145
|
+
}).start(_ref4 => {
|
|
146
|
+
let {
|
|
147
|
+
finished
|
|
148
|
+
} = _ref4;
|
|
149
|
+
|
|
145
150
|
if (finished) {
|
|
146
151
|
setIsTabBarHidden(false);
|
|
147
152
|
}
|
|
@@ -284,13 +289,16 @@ export default function BottomTabBar({
|
|
|
284
289
|
activeBackgroundColor: tabBarActiveBackgroundColor,
|
|
285
290
|
inactiveBackgroundColor: tabBarInactiveBackgroundColor,
|
|
286
291
|
button: options.tabBarButton,
|
|
287
|
-
icon: (_options$tabBarIcon = options.tabBarIcon) !== null && _options$tabBarIcon !== void 0 ? _options$tabBarIcon :
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
292
|
+
icon: (_options$tabBarIcon = options.tabBarIcon) !== null && _options$tabBarIcon !== void 0 ? _options$tabBarIcon : _ref5 => {
|
|
293
|
+
let {
|
|
294
|
+
color,
|
|
295
|
+
size
|
|
296
|
+
} = _ref5;
|
|
297
|
+
return /*#__PURE__*/React.createElement(MissingIcon, {
|
|
298
|
+
color: color,
|
|
299
|
+
size: size
|
|
300
|
+
});
|
|
301
|
+
},
|
|
294
302
|
badge: options.tabBarBadge,
|
|
295
303
|
badgeStyle: options.tabBarBadgeStyle,
|
|
296
304
|
label: label,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["BottomTabBar.tsx"],"names":["MissingIcon","CommonActions","NavigationContext","NavigationRouteContext","useLinkBuilder","useTheme","React","Animated","Platform","StyleSheet","View","useSafeAreaFrame","BottomTabBarHeightCallbackContext","useIsKeyboardShown","BottomTabItem","DEFAULT_TABBAR_HEIGHT","COMPACT_TABBAR_HEIGHT","DEFAULT_MAX_TAB_ITEM_WIDTH","useNativeDriver","OS","shouldUseHorizontalLabels","state","descriptors","layout","dimensions","tabBarLabelPosition","routes","index","key","options","width","maxTabWidth","reduce","acc","route","tabBarItemStyle","flattenedStyle","flatten","maxWidth","height","getPaddingBottom","insets","Math","max","bottom","select","ios","default","getTabBarHeight","style","rest","customHeight","isLandscape","horizontalLabels","paddingBottom","isPad","BottomTabBar","navigation","colors","buildLink","focusedRoute","focusedDescriptor","focusedOptions","tabBarShowLabel","tabBarHideOnKeyboard","tabBarVisibilityAnimationConfig","tabBarStyle","tabBarBackground","tabBarActiveTintColor","tabBarInactiveTintColor","tabBarActiveBackgroundColor","tabBarInactiveBackgroundColor","isKeyboardShown","onHeightChange","useContext","shouldShowTabBar","visibilityAnimationConfigRef","useRef","useEffect","current","isTabBarHidden","setIsTabBarHidden","useState","visible","Value","visibilityAnimationConfig","animation","show","spring","timing","toValue","duration","config","start","finished","hide","stopAnimation","setLayout","handleLayout","e","nativeEvent","tabBarHeight","hasHorizontalLabels","tabBarBackgroundElement","styles","tabBar","backgroundColor","card","borderTopColor","border","transform","translateY","interpolate","inputRange","outputRange","hairlineWidth","position","paddingHorizontal","left","right","absoluteFill","content","map","focused","onPress","event","emit","type","target","canPreventDefault","defaultPrevented","dispatch","navigate","name","merge","onLongPress","label","tabBarLabel","undefined","title","accessibilityLabel","tabBarAccessibilityLabel","length","params","tabBarTestID","tabBarAllowFontScaling","tabBarButton","tabBarIcon","color","size","tabBarBadge","tabBarBadgeStyle","tabBarLabelStyle","tabBarIconStyle","create","borderTopWidth","elevation","flex","flexDirection"],"mappings":"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","sourcesContent":["import { MissingIcon } from '@react-navigation/elements';\nimport {\n CommonActions,\n NavigationContext,\n NavigationRouteContext,\n ParamListBase,\n TabNavigationState,\n useLinkBuilder,\n useTheme,\n} from '@react-navigation/native';\nimport React from 'react';\nimport {\n Animated,\n LayoutChangeEvent,\n Platform,\n StyleProp,\n StyleSheet,\n View,\n ViewStyle,\n} from 'react-native';\nimport { EdgeInsets, useSafeAreaFrame } from 'react-native-safe-area-context';\n\nimport type { BottomTabBarProps, BottomTabDescriptorMap } from '../types';\nimport BottomTabBarHeightCallbackContext from '../utils/BottomTabBarHeightCallbackContext';\nimport useIsKeyboardShown from '../utils/useIsKeyboardShown';\nimport BottomTabItem from './BottomTabItem';\n\ntype Props = BottomTabBarProps & {\n style?: Animated.WithAnimatedValue<StyleProp<ViewStyle>>;\n};\n\nconst DEFAULT_TABBAR_HEIGHT = 49;\nconst COMPACT_TABBAR_HEIGHT = 32;\nconst DEFAULT_MAX_TAB_ITEM_WIDTH = 125;\n\nconst useNativeDriver = Platform.OS !== 'web';\n\ntype Options = {\n state: TabNavigationState<ParamListBase>;\n descriptors: BottomTabDescriptorMap;\n layout: { height: number; width: number };\n dimensions: { height: number; width: number };\n};\n\nconst shouldUseHorizontalLabels = ({\n state,\n descriptors,\n layout,\n dimensions,\n}: Options) => {\n const { tabBarLabelPosition } =\n descriptors[state.routes[state.index].key].options;\n\n if (tabBarLabelPosition) {\n switch (tabBarLabelPosition) {\n case 'beside-icon':\n return true;\n case 'below-icon':\n return false;\n }\n }\n\n if (layout.width >= 768) {\n // Screen size matches a tablet\n const maxTabWidth = state.routes.reduce((acc, route) => {\n const { tabBarItemStyle } = descriptors[route.key].options;\n const flattenedStyle = StyleSheet.flatten(tabBarItemStyle);\n\n if (flattenedStyle) {\n if (typeof flattenedStyle.width === 'number') {\n return acc + flattenedStyle.width;\n } else if (typeof flattenedStyle.maxWidth === 'number') {\n return acc + flattenedStyle.maxWidth;\n }\n }\n\n return acc + DEFAULT_MAX_TAB_ITEM_WIDTH;\n }, 0);\n\n return maxTabWidth <= layout.width;\n } else {\n return dimensions.width > dimensions.height;\n }\n};\n\nconst getPaddingBottom = (insets: EdgeInsets) =>\n Math.max(insets.bottom - Platform.select({ ios: 4, default: 0 }), 0);\n\nexport const getTabBarHeight = ({\n state,\n descriptors,\n dimensions,\n insets,\n style,\n ...rest\n}: Options & {\n insets: EdgeInsets;\n style: Animated.WithAnimatedValue<StyleProp<ViewStyle>> | undefined;\n}) => {\n // @ts-ignore\n const customHeight = StyleSheet.flatten(style)?.height;\n\n if (typeof customHeight === 'number') {\n return customHeight;\n }\n\n const isLandscape = dimensions.width > dimensions.height;\n const horizontalLabels = shouldUseHorizontalLabels({\n state,\n descriptors,\n dimensions,\n ...rest,\n });\n const paddingBottom = getPaddingBottom(insets);\n\n if (\n Platform.OS === 'ios' &&\n !Platform.isPad &&\n isLandscape &&\n horizontalLabels\n ) {\n return COMPACT_TABBAR_HEIGHT + paddingBottom;\n }\n\n return DEFAULT_TABBAR_HEIGHT + paddingBottom;\n};\n\nexport default function BottomTabBar({\n state,\n navigation,\n descriptors,\n insets,\n style,\n}: Props) {\n const { colors } = useTheme();\n const buildLink = useLinkBuilder();\n\n const focusedRoute = state.routes[state.index];\n const focusedDescriptor = descriptors[focusedRoute.key];\n const focusedOptions = focusedDescriptor.options;\n\n const {\n tabBarShowLabel,\n tabBarHideOnKeyboard = false,\n tabBarVisibilityAnimationConfig,\n tabBarStyle,\n tabBarBackground,\n tabBarActiveTintColor,\n tabBarInactiveTintColor,\n tabBarActiveBackgroundColor,\n tabBarInactiveBackgroundColor,\n } = focusedOptions;\n\n const dimensions = useSafeAreaFrame();\n const isKeyboardShown = useIsKeyboardShown();\n\n const onHeightChange = React.useContext(BottomTabBarHeightCallbackContext);\n\n const shouldShowTabBar = !(tabBarHideOnKeyboard && isKeyboardShown);\n\n const visibilityAnimationConfigRef = React.useRef(\n tabBarVisibilityAnimationConfig\n );\n\n React.useEffect(() => {\n visibilityAnimationConfigRef.current = tabBarVisibilityAnimationConfig;\n });\n\n const [isTabBarHidden, setIsTabBarHidden] = React.useState(!shouldShowTabBar);\n\n const [visible] = React.useState(\n () => new Animated.Value(shouldShowTabBar ? 1 : 0)\n );\n\n React.useEffect(() => {\n const visibilityAnimationConfig = visibilityAnimationConfigRef.current;\n\n if (shouldShowTabBar) {\n const animation =\n visibilityAnimationConfig?.show?.animation === 'spring'\n ? Animated.spring\n : Animated.timing;\n\n animation(visible, {\n toValue: 1,\n useNativeDriver,\n duration: 250,\n ...visibilityAnimationConfig?.show?.config,\n }).start(({ finished }) => {\n if (finished) {\n setIsTabBarHidden(false);\n }\n });\n } else {\n setIsTabBarHidden(true);\n\n const animation =\n visibilityAnimationConfig?.hide?.animation === 'spring'\n ? Animated.spring\n : Animated.timing;\n\n animation(visible, {\n toValue: 0,\n useNativeDriver,\n duration: 200,\n ...visibilityAnimationConfig?.hide?.config,\n }).start();\n }\n\n return () => visible.stopAnimation();\n }, [visible, shouldShowTabBar]);\n\n const [layout, setLayout] = React.useState({\n height: 0,\n width: dimensions.width,\n });\n\n const handleLayout = (e: LayoutChangeEvent) => {\n const { height, width } = e.nativeEvent.layout;\n\n onHeightChange?.(height);\n\n setLayout((layout) => {\n if (height === layout.height && width === layout.width) {\n return layout;\n } else {\n return {\n height,\n width,\n };\n }\n });\n };\n\n const { routes } = state;\n\n const paddingBottom = getPaddingBottom(insets);\n const tabBarHeight = getTabBarHeight({\n state,\n descriptors,\n insets,\n dimensions,\n layout,\n style: [tabBarStyle, style],\n });\n\n const hasHorizontalLabels = shouldUseHorizontalLabels({\n state,\n descriptors,\n dimensions,\n layout,\n });\n\n const tabBarBackgroundElement = tabBarBackground?.();\n\n return (\n <Animated.View\n style={[\n styles.tabBar,\n {\n backgroundColor:\n tabBarBackgroundElement != null ? 'transparent' : colors.card,\n borderTopColor: colors.border,\n },\n {\n transform: [\n {\n translateY: visible.interpolate({\n inputRange: [0, 1],\n outputRange: [\n layout.height + paddingBottom + StyleSheet.hairlineWidth,\n 0,\n ],\n }),\n },\n ],\n // Absolutely position the tab bar so that the content is below it\n // This is needed to avoid gap at bottom when the tab bar is hidden\n position: isTabBarHidden ? 'absolute' : (null as any),\n },\n {\n height: tabBarHeight,\n paddingBottom,\n paddingHorizontal: Math.max(insets.left, insets.right),\n },\n tabBarStyle,\n ]}\n pointerEvents={isTabBarHidden ? 'none' : 'auto'}\n onLayout={handleLayout}\n >\n <View pointerEvents=\"none\" style={StyleSheet.absoluteFill}>\n {tabBarBackgroundElement}\n </View>\n <View accessibilityRole=\"tablist\" style={styles.content}>\n {routes.map((route, index) => {\n const focused = index === state.index;\n const { options } = descriptors[route.key];\n\n const onPress = () => {\n const event = navigation.emit({\n type: 'tabPress',\n target: route.key,\n canPreventDefault: true,\n });\n\n if (!focused && !event.defaultPrevented) {\n navigation.dispatch({\n ...CommonActions.navigate({ name: route.name, merge: true }),\n target: state.key,\n });\n }\n };\n\n const onLongPress = () => {\n navigation.emit({\n type: 'tabLongPress',\n target: route.key,\n });\n };\n\n const label =\n options.tabBarLabel !== undefined\n ? options.tabBarLabel\n : options.title !== undefined\n ? options.title\n : route.name;\n\n const accessibilityLabel =\n options.tabBarAccessibilityLabel !== undefined\n ? options.tabBarAccessibilityLabel\n : typeof label === 'string' && Platform.OS === 'ios'\n ? `${label}, tab, ${index + 1} of ${routes.length}`\n : undefined;\n\n return (\n <NavigationContext.Provider\n key={route.key}\n value={descriptors[route.key].navigation}\n >\n <NavigationRouteContext.Provider value={route}>\n <BottomTabItem\n route={route}\n focused={focused}\n horizontal={hasHorizontalLabels}\n onPress={onPress}\n onLongPress={onLongPress}\n accessibilityLabel={accessibilityLabel}\n to={buildLink(route.name, route.params)}\n testID={options.tabBarTestID}\n allowFontScaling={options.tabBarAllowFontScaling}\n activeTintColor={tabBarActiveTintColor}\n inactiveTintColor={tabBarInactiveTintColor}\n activeBackgroundColor={tabBarActiveBackgroundColor}\n inactiveBackgroundColor={tabBarInactiveBackgroundColor}\n button={options.tabBarButton}\n icon={\n options.tabBarIcon ??\n (({ color, size }) => (\n <MissingIcon color={color} size={size} />\n ))\n }\n badge={options.tabBarBadge}\n badgeStyle={options.tabBarBadgeStyle}\n label={label}\n showLabel={tabBarShowLabel}\n labelStyle={options.tabBarLabelStyle}\n iconStyle={options.tabBarIconStyle}\n style={options.tabBarItemStyle}\n />\n </NavigationRouteContext.Provider>\n </NavigationContext.Provider>\n );\n })}\n </View>\n </Animated.View>\n );\n}\n\nconst styles = StyleSheet.create({\n tabBar: {\n left: 0,\n right: 0,\n bottom: 0,\n borderTopWidth: StyleSheet.hairlineWidth,\n elevation: 8,\n },\n content: {\n flex: 1,\n flexDirection: 'row',\n },\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["BottomTabBar.tsx"],"names":["MissingIcon","CommonActions","NavigationContext","NavigationRouteContext","useLinkBuilder","useTheme","React","Animated","Platform","StyleSheet","View","useSafeAreaFrame","BottomTabBarHeightCallbackContext","useIsKeyboardShown","BottomTabItem","DEFAULT_TABBAR_HEIGHT","COMPACT_TABBAR_HEIGHT","DEFAULT_MAX_TAB_ITEM_WIDTH","useNativeDriver","OS","shouldUseHorizontalLabels","state","descriptors","layout","dimensions","tabBarLabelPosition","routes","index","key","options","width","maxTabWidth","reduce","acc","route","tabBarItemStyle","flattenedStyle","flatten","maxWidth","height","getPaddingBottom","insets","Math","max","bottom","select","ios","default","getTabBarHeight","style","rest","customHeight","isLandscape","horizontalLabels","paddingBottom","isPad","BottomTabBar","navigation","colors","buildLink","focusedRoute","focusedDescriptor","focusedOptions","tabBarShowLabel","tabBarHideOnKeyboard","tabBarVisibilityAnimationConfig","tabBarStyle","tabBarBackground","tabBarActiveTintColor","tabBarInactiveTintColor","tabBarActiveBackgroundColor","tabBarInactiveBackgroundColor","isKeyboardShown","onHeightChange","useContext","shouldShowTabBar","visibilityAnimationConfigRef","useRef","useEffect","current","isTabBarHidden","setIsTabBarHidden","useState","visible","Value","visibilityAnimationConfig","animation","show","spring","timing","toValue","duration","config","start","finished","hide","stopAnimation","setLayout","handleLayout","e","nativeEvent","tabBarHeight","hasHorizontalLabels","tabBarBackgroundElement","styles","tabBar","backgroundColor","card","borderTopColor","border","transform","translateY","interpolate","inputRange","outputRange","hairlineWidth","position","paddingHorizontal","left","right","absoluteFill","content","map","focused","onPress","event","emit","type","target","canPreventDefault","defaultPrevented","dispatch","navigate","name","merge","onLongPress","label","tabBarLabel","undefined","title","accessibilityLabel","tabBarAccessibilityLabel","length","params","tabBarTestID","tabBarAllowFontScaling","tabBarButton","tabBarIcon","color","size","tabBarBadge","tabBarBadgeStyle","tabBarLabelStyle","tabBarIconStyle","create","borderTopWidth","elevation","flex","flexDirection"],"mappings":"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","sourcesContent":["import { MissingIcon } from '@react-navigation/elements';\nimport {\n CommonActions,\n NavigationContext,\n NavigationRouteContext,\n ParamListBase,\n TabNavigationState,\n useLinkBuilder,\n useTheme,\n} from '@react-navigation/native';\nimport React from 'react';\nimport {\n Animated,\n LayoutChangeEvent,\n Platform,\n StyleProp,\n StyleSheet,\n View,\n ViewStyle,\n} from 'react-native';\nimport { EdgeInsets, useSafeAreaFrame } from 'react-native-safe-area-context';\n\nimport type { BottomTabBarProps, BottomTabDescriptorMap } from '../types';\nimport BottomTabBarHeightCallbackContext from '../utils/BottomTabBarHeightCallbackContext';\nimport useIsKeyboardShown from '../utils/useIsKeyboardShown';\nimport BottomTabItem from './BottomTabItem';\n\ntype Props = BottomTabBarProps & {\n style?: Animated.WithAnimatedValue<StyleProp<ViewStyle>>;\n};\n\nconst DEFAULT_TABBAR_HEIGHT = 49;\nconst COMPACT_TABBAR_HEIGHT = 32;\nconst DEFAULT_MAX_TAB_ITEM_WIDTH = 125;\n\nconst useNativeDriver = Platform.OS !== 'web';\n\ntype Options = {\n state: TabNavigationState<ParamListBase>;\n descriptors: BottomTabDescriptorMap;\n layout: { height: number; width: number };\n dimensions: { height: number; width: number };\n};\n\nconst shouldUseHorizontalLabels = ({\n state,\n descriptors,\n layout,\n dimensions,\n}: Options) => {\n const { tabBarLabelPosition } =\n descriptors[state.routes[state.index].key].options;\n\n if (tabBarLabelPosition) {\n switch (tabBarLabelPosition) {\n case 'beside-icon':\n return true;\n case 'below-icon':\n return false;\n }\n }\n\n if (layout.width >= 768) {\n // Screen size matches a tablet\n const maxTabWidth = state.routes.reduce((acc, route) => {\n const { tabBarItemStyle } = descriptors[route.key].options;\n const flattenedStyle = StyleSheet.flatten(tabBarItemStyle);\n\n if (flattenedStyle) {\n if (typeof flattenedStyle.width === 'number') {\n return acc + flattenedStyle.width;\n } else if (typeof flattenedStyle.maxWidth === 'number') {\n return acc + flattenedStyle.maxWidth;\n }\n }\n\n return acc + DEFAULT_MAX_TAB_ITEM_WIDTH;\n }, 0);\n\n return maxTabWidth <= layout.width;\n } else {\n return dimensions.width > dimensions.height;\n }\n};\n\nconst getPaddingBottom = (insets: EdgeInsets) =>\n Math.max(insets.bottom - Platform.select({ ios: 4, default: 0 }), 0);\n\nexport const getTabBarHeight = ({\n state,\n descriptors,\n dimensions,\n insets,\n style,\n ...rest\n}: Options & {\n insets: EdgeInsets;\n style: Animated.WithAnimatedValue<StyleProp<ViewStyle>> | undefined;\n}) => {\n // @ts-ignore\n const customHeight = StyleSheet.flatten(style)?.height;\n\n if (typeof customHeight === 'number') {\n return customHeight;\n }\n\n const isLandscape = dimensions.width > dimensions.height;\n const horizontalLabels = shouldUseHorizontalLabels({\n state,\n descriptors,\n dimensions,\n ...rest,\n });\n const paddingBottom = getPaddingBottom(insets);\n\n if (\n Platform.OS === 'ios' &&\n !Platform.isPad &&\n isLandscape &&\n horizontalLabels\n ) {\n return COMPACT_TABBAR_HEIGHT + paddingBottom;\n }\n\n return DEFAULT_TABBAR_HEIGHT + paddingBottom;\n};\n\nexport default function BottomTabBar({\n state,\n navigation,\n descriptors,\n insets,\n style,\n}: Props) {\n const { colors } = useTheme();\n const buildLink = useLinkBuilder();\n\n const focusedRoute = state.routes[state.index];\n const focusedDescriptor = descriptors[focusedRoute.key];\n const focusedOptions = focusedDescriptor.options;\n\n const {\n tabBarShowLabel,\n tabBarHideOnKeyboard = false,\n tabBarVisibilityAnimationConfig,\n tabBarStyle,\n tabBarBackground,\n tabBarActiveTintColor,\n tabBarInactiveTintColor,\n tabBarActiveBackgroundColor,\n tabBarInactiveBackgroundColor,\n } = focusedOptions;\n\n const dimensions = useSafeAreaFrame();\n const isKeyboardShown = useIsKeyboardShown();\n\n const onHeightChange = React.useContext(BottomTabBarHeightCallbackContext);\n\n const shouldShowTabBar = !(tabBarHideOnKeyboard && isKeyboardShown);\n\n const visibilityAnimationConfigRef = React.useRef(\n tabBarVisibilityAnimationConfig\n );\n\n React.useEffect(() => {\n visibilityAnimationConfigRef.current = tabBarVisibilityAnimationConfig;\n });\n\n const [isTabBarHidden, setIsTabBarHidden] = React.useState(!shouldShowTabBar);\n\n const [visible] = React.useState(\n () => new Animated.Value(shouldShowTabBar ? 1 : 0)\n );\n\n React.useEffect(() => {\n const visibilityAnimationConfig = visibilityAnimationConfigRef.current;\n\n if (shouldShowTabBar) {\n const animation =\n visibilityAnimationConfig?.show?.animation === 'spring'\n ? Animated.spring\n : Animated.timing;\n\n animation(visible, {\n toValue: 1,\n useNativeDriver,\n duration: 250,\n ...visibilityAnimationConfig?.show?.config,\n }).start(({ finished }) => {\n if (finished) {\n setIsTabBarHidden(false);\n }\n });\n } else {\n setIsTabBarHidden(true);\n\n const animation =\n visibilityAnimationConfig?.hide?.animation === 'spring'\n ? Animated.spring\n : Animated.timing;\n\n animation(visible, {\n toValue: 0,\n useNativeDriver,\n duration: 200,\n ...visibilityAnimationConfig?.hide?.config,\n }).start();\n }\n\n return () => visible.stopAnimation();\n }, [visible, shouldShowTabBar]);\n\n const [layout, setLayout] = React.useState({\n height: 0,\n width: dimensions.width,\n });\n\n const handleLayout = (e: LayoutChangeEvent) => {\n const { height, width } = e.nativeEvent.layout;\n\n onHeightChange?.(height);\n\n setLayout((layout) => {\n if (height === layout.height && width === layout.width) {\n return layout;\n } else {\n return {\n height,\n width,\n };\n }\n });\n };\n\n const { routes } = state;\n\n const paddingBottom = getPaddingBottom(insets);\n const tabBarHeight = getTabBarHeight({\n state,\n descriptors,\n insets,\n dimensions,\n layout,\n style: [tabBarStyle, style],\n });\n\n const hasHorizontalLabels = shouldUseHorizontalLabels({\n state,\n descriptors,\n dimensions,\n layout,\n });\n\n const tabBarBackgroundElement = tabBarBackground?.();\n\n return (\n <Animated.View\n style={[\n styles.tabBar,\n {\n backgroundColor:\n tabBarBackgroundElement != null ? 'transparent' : colors.card,\n borderTopColor: colors.border,\n },\n {\n transform: [\n {\n translateY: visible.interpolate({\n inputRange: [0, 1],\n outputRange: [\n layout.height + paddingBottom + StyleSheet.hairlineWidth,\n 0,\n ],\n }),\n },\n ],\n // Absolutely position the tab bar so that the content is below it\n // This is needed to avoid gap at bottom when the tab bar is hidden\n position: isTabBarHidden ? 'absolute' : (null as any),\n },\n {\n height: tabBarHeight,\n paddingBottom,\n paddingHorizontal: Math.max(insets.left, insets.right),\n },\n tabBarStyle,\n ]}\n pointerEvents={isTabBarHidden ? 'none' : 'auto'}\n onLayout={handleLayout}\n >\n <View pointerEvents=\"none\" style={StyleSheet.absoluteFill}>\n {tabBarBackgroundElement}\n </View>\n <View accessibilityRole=\"tablist\" style={styles.content}>\n {routes.map((route, index) => {\n const focused = index === state.index;\n const { options } = descriptors[route.key];\n\n const onPress = () => {\n const event = navigation.emit({\n type: 'tabPress',\n target: route.key,\n canPreventDefault: true,\n });\n\n if (!focused && !event.defaultPrevented) {\n navigation.dispatch({\n ...CommonActions.navigate({ name: route.name, merge: true }),\n target: state.key,\n });\n }\n };\n\n const onLongPress = () => {\n navigation.emit({\n type: 'tabLongPress',\n target: route.key,\n });\n };\n\n const label =\n options.tabBarLabel !== undefined\n ? options.tabBarLabel\n : options.title !== undefined\n ? options.title\n : route.name;\n\n const accessibilityLabel =\n options.tabBarAccessibilityLabel !== undefined\n ? options.tabBarAccessibilityLabel\n : typeof label === 'string' && Platform.OS === 'ios'\n ? `${label}, tab, ${index + 1} of ${routes.length}`\n : undefined;\n\n return (\n <NavigationContext.Provider\n key={route.key}\n value={descriptors[route.key].navigation}\n >\n <NavigationRouteContext.Provider value={route}>\n <BottomTabItem\n route={route}\n focused={focused}\n horizontal={hasHorizontalLabels}\n onPress={onPress}\n onLongPress={onLongPress}\n accessibilityLabel={accessibilityLabel}\n to={buildLink(route.name, route.params)}\n testID={options.tabBarTestID}\n allowFontScaling={options.tabBarAllowFontScaling}\n activeTintColor={tabBarActiveTintColor}\n inactiveTintColor={tabBarInactiveTintColor}\n activeBackgroundColor={tabBarActiveBackgroundColor}\n inactiveBackgroundColor={tabBarInactiveBackgroundColor}\n button={options.tabBarButton}\n icon={\n options.tabBarIcon ??\n (({ color, size }) => (\n <MissingIcon color={color} size={size} />\n ))\n }\n badge={options.tabBarBadge}\n badgeStyle={options.tabBarBadgeStyle}\n label={label}\n showLabel={tabBarShowLabel}\n labelStyle={options.tabBarLabelStyle}\n iconStyle={options.tabBarIconStyle}\n style={options.tabBarItemStyle}\n />\n </NavigationRouteContext.Provider>\n </NavigationContext.Provider>\n );\n })}\n </View>\n </Animated.View>\n );\n}\n\nconst styles = StyleSheet.create({\n tabBar: {\n left: 0,\n right: 0,\n bottom: 0,\n borderTopWidth: StyleSheet.hairlineWidth,\n elevation: 8,\n },\n content: {\n flex: 1,\n flexDirection: 'row',\n },\n});\n"]}
|