@react-navigation/bottom-tabs 6.0.7 → 6.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/lib/commonjs/index.js +6 -6
  2. package/lib/commonjs/index.js.map +1 -1
  3. package/lib/commonjs/navigators/createBottomTabNavigator.js +17 -13
  4. package/lib/commonjs/navigators/createBottomTabNavigator.js.map +1 -1
  5. package/lib/commonjs/views/Badge.js +23 -20
  6. package/lib/commonjs/views/Badge.js.map +1 -1
  7. package/lib/commonjs/views/BottomTabBar.js +39 -31
  8. package/lib/commonjs/views/BottomTabBar.js.map +1 -1
  9. package/lib/commonjs/views/BottomTabItem.js +63 -56
  10. package/lib/commonjs/views/BottomTabItem.js.map +1 -1
  11. package/lib/commonjs/views/BottomTabView.js +11 -7
  12. package/lib/commonjs/views/BottomTabView.js.map +1 -1
  13. package/lib/commonjs/views/ScreenFallback.js +13 -9
  14. package/lib/commonjs/views/ScreenFallback.js.map +1 -1
  15. package/lib/commonjs/views/TabBarIcon.js +13 -12
  16. package/lib/commonjs/views/TabBarIcon.js.map +1 -1
  17. package/lib/module/index.js.map +1 -1
  18. package/lib/module/navigators/createBottomTabNavigator.js +17 -13
  19. package/lib/module/navigators/createBottomTabNavigator.js.map +1 -1
  20. package/lib/module/views/Badge.js +23 -20
  21. package/lib/module/views/Badge.js.map +1 -1
  22. package/lib/module/views/BottomTabBar.js +39 -31
  23. package/lib/module/views/BottomTabBar.js.map +1 -1
  24. package/lib/module/views/BottomTabItem.js +63 -56
  25. package/lib/module/views/BottomTabItem.js.map +1 -1
  26. package/lib/module/views/BottomTabView.js +11 -7
  27. package/lib/module/views/BottomTabView.js.map +1 -1
  28. package/lib/module/views/ScreenFallback.js +13 -9
  29. package/lib/module/views/ScreenFallback.js.map +1 -1
  30. package/lib/module/views/TabBarIcon.js +13 -12
  31. package/lib/module/views/TabBarIcon.js.map +1 -1
  32. package/lib/typescript/src/index.d.ts +1 -1
  33. package/lib/typescript/src/navigators/createBottomTabNavigator.d.ts +1 -1
  34. package/lib/typescript/src/views/Badge.d.ts +1 -1
  35. package/lib/typescript/src/views/ScreenFallback.d.ts +1 -0
  36. package/package.json +8 -8
  37. package/src/index.tsx +1 -0
  38. package/src/navigators/createBottomTabNavigator.tsx +9 -5
  39. package/src/views/Badge.tsx +12 -12
  40. package/src/views/BottomTabView.tsx +1 -0
  41. package/src/views/ScreenFallback.tsx +1 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["BottomTabItem.tsx"],"names":["BottomTabBarItem","focused","route","label","icon","badge","badgeStyle","to","button","children","style","onPress","accessibilityRole","rest","Platform","OS","styles","e","metaKey","altKey","ctrlKey","shiftKey","preventDefault","accessibilityLabel","testID","onLongPress","horizontal","activeTintColor","customActiveTintColor","inactiveTintColor","customInactiveTintColor","activeBackgroundColor","inactiveBackgroundColor","showLabel","allowFontScaling","labelStyle","iconStyle","colors","undefined","primary","text","mix","card","hex","renderLabel","color","labelBeside","labelBeneath","position","renderIcon","activeOpacity","inactiveOpacity","scene","backgroundColor","select","ios","default","accessibilityState","selected","accessibilityStates","tab","tabLandscape","tabPortrait","StyleSheet","create","flex","alignItems","justifyContent","flexDirection","textAlign","fontSize","marginLeft","marginTop","display"],"mappings":"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","sourcesContent":["import { Link, Route, useTheme } from '@react-navigation/native';\nimport Color from 'color';\nimport React from 'react';\nimport {\n GestureResponderEvent,\n Platform,\n Pressable,\n StyleProp,\n StyleSheet,\n Text,\n TextStyle,\n ViewStyle,\n} from 'react-native';\n\nimport type { BottomTabBarButtonProps, LabelPosition } from '../types';\nimport TabBarIcon from './TabBarIcon';\n\ntype Props = {\n /**\n * Whether the tab is focused.\n */\n focused: boolean;\n /**\n * The route object which should be specified by the tab.\n */\n route: Route<string>;\n /**\n * The label text of the tab.\n */\n label:\n | string\n | ((props: {\n focused: boolean;\n color: string;\n position: LabelPosition;\n }) => React.ReactNode);\n /**\n * Icon to display for the tab.\n */\n icon: (props: {\n focused: boolean;\n size: number;\n color: string;\n }) => React.ReactNode;\n /**\n * Text to show in a badge on the tab icon.\n */\n badge?: number | string;\n /**\n * Custom style for the badge.\n */\n badgeStyle?: StyleProp<TextStyle>;\n /**\n * URL to use for the link to the tab.\n */\n to?: string;\n /**\n * The button for the tab. Uses a `TouchableWithoutFeedback` by default.\n */\n button?: (props: BottomTabBarButtonProps) => React.ReactNode;\n /**\n * The accessibility label for the tab.\n */\n accessibilityLabel?: string;\n /**\n * An unique ID for testing for the tab.\n */\n testID?: string;\n /**\n * Function to execute on press in React Native.\n * On the web, this will use onClick.\n */\n onPress: (\n e: React.MouseEvent<HTMLElement, MouseEvent> | GestureResponderEvent\n ) => void;\n /**\n * Function to execute on long press.\n */\n onLongPress: (e: GestureResponderEvent) => void;\n /**\n * Whether the label should be aligned with the icon horizontally.\n */\n horizontal: boolean;\n /**\n * Color for the icon and label when the item is active.\n */\n activeTintColor?: string;\n /**\n * Color for the icon and label when the item is inactive.\n */\n inactiveTintColor?: string;\n /**\n * Background color for item when its active.\n */\n activeBackgroundColor?: string;\n /**\n * Background color for item when its inactive.\n */\n inactiveBackgroundColor?: string;\n /**\n * Whether to show the label text for the tab.\n */\n showLabel?: boolean;\n /**\n * Whether to allow scaling the font for the label for accessibility purposes.\n */\n allowFontScaling?: boolean;\n /**\n * Style object for the label element.\n */\n labelStyle?: StyleProp<TextStyle>;\n /**\n * Style object for the icon element.\n */\n iconStyle?: StyleProp<ViewStyle>;\n /**\n * Style object for the wrapper element.\n */\n style?: StyleProp<ViewStyle>;\n};\n\nexport default function BottomTabBarItem({\n focused,\n route,\n label,\n icon,\n badge,\n badgeStyle,\n to,\n button = ({\n children,\n style,\n onPress,\n to,\n accessibilityRole,\n ...rest\n }: BottomTabBarButtonProps) => {\n if (Platform.OS === 'web' && to) {\n // React Native Web doesn't forward `onClick` if we use `TouchableWithoutFeedback`.\n // We need to use `onClick` to be able to prevent default browser handling of links.\n return (\n <Link\n {...rest}\n to={to}\n style={[styles.button, style]}\n onPress={(e: any) => {\n if (\n !(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) && // ignore clicks with modifier keys\n (e.button == null || e.button === 0) // ignore everything but left clicks\n ) {\n e.preventDefault();\n onPress?.(e);\n }\n }}\n >\n {children}\n </Link>\n );\n } else {\n return (\n <Pressable\n {...rest}\n accessibilityRole={accessibilityRole}\n onPress={onPress}\n style={style}\n >\n {children}\n </Pressable>\n );\n }\n },\n accessibilityLabel,\n testID,\n onPress,\n onLongPress,\n horizontal,\n activeTintColor: customActiveTintColor,\n inactiveTintColor: customInactiveTintColor,\n activeBackgroundColor = 'transparent',\n inactiveBackgroundColor = 'transparent',\n showLabel = true,\n allowFontScaling,\n labelStyle,\n iconStyle,\n style,\n}: Props) {\n const { colors } = useTheme();\n\n const activeTintColor =\n customActiveTintColor === undefined\n ? colors.primary\n : customActiveTintColor;\n\n const inactiveTintColor =\n customInactiveTintColor === undefined\n ? Color(colors.text).mix(Color(colors.card), 0.5).hex()\n : customInactiveTintColor;\n\n const renderLabel = ({ focused }: { focused: boolean }) => {\n if (showLabel === false) {\n return null;\n }\n\n const color = focused ? activeTintColor : inactiveTintColor;\n\n if (typeof label === 'string') {\n return (\n <Text\n numberOfLines={1}\n style={[\n styles.label,\n { color },\n horizontal ? styles.labelBeside : styles.labelBeneath,\n labelStyle,\n ]}\n allowFontScaling={allowFontScaling}\n >\n {label}\n </Text>\n );\n }\n\n return label({\n focused,\n color,\n position: horizontal ? 'beside-icon' : 'below-icon',\n });\n };\n\n const renderIcon = ({ focused }: { focused: boolean }) => {\n if (icon === undefined) {\n return null;\n }\n\n const activeOpacity = focused ? 1 : 0;\n const inactiveOpacity = focused ? 0 : 1;\n\n return (\n <TabBarIcon\n route={route}\n horizontal={horizontal}\n badge={badge}\n badgeStyle={badgeStyle}\n activeOpacity={activeOpacity}\n inactiveOpacity={inactiveOpacity}\n activeTintColor={activeTintColor}\n inactiveTintColor={inactiveTintColor}\n renderIcon={icon}\n style={iconStyle}\n />\n );\n };\n\n const scene = { route, focused };\n\n const backgroundColor = focused\n ? activeBackgroundColor\n : inactiveBackgroundColor;\n\n return button({\n to,\n onPress,\n onLongPress,\n testID,\n accessibilityLabel,\n // FIXME: accessibilityRole: 'tab' doesn't seem to work as expected on iOS\n accessibilityRole: Platform.select({ ios: 'button', default: 'tab' }),\n accessibilityState: { selected: focused },\n // @ts-expect-error: keep for compatibility with older React Native versions\n accessibilityStates: focused ? ['selected'] : [],\n style: [\n styles.tab,\n { backgroundColor },\n horizontal ? styles.tabLandscape : styles.tabPortrait,\n style,\n ],\n children: (\n <React.Fragment>\n {renderIcon(scene)}\n {renderLabel(scene)}\n </React.Fragment>\n ),\n }) as React.ReactElement;\n}\n\nconst styles = StyleSheet.create({\n tab: {\n flex: 1,\n alignItems: 'center',\n },\n tabPortrait: {\n justifyContent: 'flex-end',\n flexDirection: 'column',\n },\n tabLandscape: {\n justifyContent: 'center',\n flexDirection: 'row',\n },\n label: {\n textAlign: 'center',\n backgroundColor: 'transparent',\n },\n labelBeneath: {\n fontSize: 10,\n },\n labelBeside: {\n fontSize: 13,\n marginLeft: 20,\n marginTop: 3,\n },\n button: {\n display: 'flex',\n },\n});\n"]}
1
+ {"version":3,"sources":["BottomTabItem.tsx"],"names":["BottomTabBarItem","focused","route","label","icon","badge","badgeStyle","to","button","children","style","onPress","accessibilityRole","rest","Platform","OS","styles","e","metaKey","altKey","ctrlKey","shiftKey","preventDefault","accessibilityLabel","testID","onLongPress","horizontal","activeTintColor","customActiveTintColor","inactiveTintColor","customInactiveTintColor","activeBackgroundColor","inactiveBackgroundColor","showLabel","allowFontScaling","labelStyle","iconStyle","colors","undefined","primary","text","mix","card","hex","renderLabel","color","labelBeside","labelBeneath","position","renderIcon","activeOpacity","inactiveOpacity","scene","backgroundColor","select","ios","default","accessibilityState","selected","accessibilityStates","tab","tabLandscape","tabPortrait","StyleSheet","create","flex","alignItems","justifyContent","flexDirection","textAlign","fontSize","marginLeft","marginTop","display"],"mappings":"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","sourcesContent":["import { Link, Route, useTheme } from '@react-navigation/native';\nimport Color from 'color';\nimport React from 'react';\nimport {\n GestureResponderEvent,\n Platform,\n Pressable,\n StyleProp,\n StyleSheet,\n Text,\n TextStyle,\n ViewStyle,\n} from 'react-native';\n\nimport type { BottomTabBarButtonProps, LabelPosition } from '../types';\nimport TabBarIcon from './TabBarIcon';\n\ntype Props = {\n /**\n * Whether the tab is focused.\n */\n focused: boolean;\n /**\n * The route object which should be specified by the tab.\n */\n route: Route<string>;\n /**\n * The label text of the tab.\n */\n label:\n | string\n | ((props: {\n focused: boolean;\n color: string;\n position: LabelPosition;\n }) => React.ReactNode);\n /**\n * Icon to display for the tab.\n */\n icon: (props: {\n focused: boolean;\n size: number;\n color: string;\n }) => React.ReactNode;\n /**\n * Text to show in a badge on the tab icon.\n */\n badge?: number | string;\n /**\n * Custom style for the badge.\n */\n badgeStyle?: StyleProp<TextStyle>;\n /**\n * URL to use for the link to the tab.\n */\n to?: string;\n /**\n * The button for the tab. Uses a `TouchableWithoutFeedback` by default.\n */\n button?: (props: BottomTabBarButtonProps) => React.ReactNode;\n /**\n * The accessibility label for the tab.\n */\n accessibilityLabel?: string;\n /**\n * An unique ID for testing for the tab.\n */\n testID?: string;\n /**\n * Function to execute on press in React Native.\n * On the web, this will use onClick.\n */\n onPress: (\n e: React.MouseEvent<HTMLElement, MouseEvent> | GestureResponderEvent\n ) => void;\n /**\n * Function to execute on long press.\n */\n onLongPress: (e: GestureResponderEvent) => void;\n /**\n * Whether the label should be aligned with the icon horizontally.\n */\n horizontal: boolean;\n /**\n * Color for the icon and label when the item is active.\n */\n activeTintColor?: string;\n /**\n * Color for the icon and label when the item is inactive.\n */\n inactiveTintColor?: string;\n /**\n * Background color for item when its active.\n */\n activeBackgroundColor?: string;\n /**\n * Background color for item when its inactive.\n */\n inactiveBackgroundColor?: string;\n /**\n * Whether to show the label text for the tab.\n */\n showLabel?: boolean;\n /**\n * Whether to allow scaling the font for the label for accessibility purposes.\n */\n allowFontScaling?: boolean;\n /**\n * Style object for the label element.\n */\n labelStyle?: StyleProp<TextStyle>;\n /**\n * Style object for the icon element.\n */\n iconStyle?: StyleProp<ViewStyle>;\n /**\n * Style object for the wrapper element.\n */\n style?: StyleProp<ViewStyle>;\n};\n\nexport default function BottomTabBarItem({\n focused,\n route,\n label,\n icon,\n badge,\n badgeStyle,\n to,\n button = ({\n children,\n style,\n onPress,\n to,\n accessibilityRole,\n ...rest\n }: BottomTabBarButtonProps) => {\n if (Platform.OS === 'web' && to) {\n // React Native Web doesn't forward `onClick` if we use `TouchableWithoutFeedback`.\n // We need to use `onClick` to be able to prevent default browser handling of links.\n return (\n <Link\n {...rest}\n to={to}\n style={[styles.button, style]}\n onPress={(e: any) => {\n if (\n !(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) && // ignore clicks with modifier keys\n (e.button == null || e.button === 0) // ignore everything but left clicks\n ) {\n e.preventDefault();\n onPress?.(e);\n }\n }}\n >\n {children}\n </Link>\n );\n } else {\n return (\n <Pressable\n {...rest}\n accessibilityRole={accessibilityRole}\n onPress={onPress}\n style={style}\n >\n {children}\n </Pressable>\n );\n }\n },\n accessibilityLabel,\n testID,\n onPress,\n onLongPress,\n horizontal,\n activeTintColor: customActiveTintColor,\n inactiveTintColor: customInactiveTintColor,\n activeBackgroundColor = 'transparent',\n inactiveBackgroundColor = 'transparent',\n showLabel = true,\n allowFontScaling,\n labelStyle,\n iconStyle,\n style,\n}: Props) {\n const { colors } = useTheme();\n\n const activeTintColor =\n customActiveTintColor === undefined\n ? colors.primary\n : customActiveTintColor;\n\n const inactiveTintColor =\n customInactiveTintColor === undefined\n ? Color(colors.text).mix(Color(colors.card), 0.5).hex()\n : customInactiveTintColor;\n\n const renderLabel = ({ focused }: { focused: boolean }) => {\n if (showLabel === false) {\n return null;\n }\n\n const color = focused ? activeTintColor : inactiveTintColor;\n\n if (typeof label === 'string') {\n return (\n <Text\n numberOfLines={1}\n style={[\n styles.label,\n { color },\n horizontal ? styles.labelBeside : styles.labelBeneath,\n labelStyle,\n ]}\n allowFontScaling={allowFontScaling}\n >\n {label}\n </Text>\n );\n }\n\n return label({\n focused,\n color,\n position: horizontal ? 'beside-icon' : 'below-icon',\n });\n };\n\n const renderIcon = ({ focused }: { focused: boolean }) => {\n if (icon === undefined) {\n return null;\n }\n\n const activeOpacity = focused ? 1 : 0;\n const inactiveOpacity = focused ? 0 : 1;\n\n return (\n <TabBarIcon\n route={route}\n horizontal={horizontal}\n badge={badge}\n badgeStyle={badgeStyle}\n activeOpacity={activeOpacity}\n inactiveOpacity={inactiveOpacity}\n activeTintColor={activeTintColor}\n inactiveTintColor={inactiveTintColor}\n renderIcon={icon}\n style={iconStyle}\n />\n );\n };\n\n const scene = { route, focused };\n\n const backgroundColor = focused\n ? activeBackgroundColor\n : inactiveBackgroundColor;\n\n return button({\n to,\n onPress,\n onLongPress,\n testID,\n accessibilityLabel,\n // FIXME: accessibilityRole: 'tab' doesn't seem to work as expected on iOS\n accessibilityRole: Platform.select({ ios: 'button', default: 'tab' }),\n accessibilityState: { selected: focused },\n // @ts-expect-error: keep for compatibility with older React Native versions\n accessibilityStates: focused ? ['selected'] : [],\n style: [\n styles.tab,\n { backgroundColor },\n horizontal ? styles.tabLandscape : styles.tabPortrait,\n style,\n ],\n children: (\n <React.Fragment>\n {renderIcon(scene)}\n {renderLabel(scene)}\n </React.Fragment>\n ),\n }) as React.ReactElement;\n}\n\nconst styles = StyleSheet.create({\n tab: {\n flex: 1,\n alignItems: 'center',\n },\n tabPortrait: {\n justifyContent: 'flex-end',\n flexDirection: 'column',\n },\n tabLandscape: {\n justifyContent: 'center',\n flexDirection: 'row',\n },\n label: {\n textAlign: 'center',\n backgroundColor: 'transparent',\n },\n labelBeneath: {\n fontSize: 10,\n },\n labelBeside: {\n fontSize: 13,\n marginLeft: 20,\n marginTop: 3,\n },\n button: {\n display: 'flex',\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];
@@ -103,13 +104,16 @@ function BottomTabView(props) {
103
104
  }
104
105
 
105
106
  const {
106
- header = ({
107
- layout,
108
- options
109
- }) => /*#__PURE__*/React.createElement(_elements.Header, _extends({}, options, {
110
- layout: layout,
111
- title: (0, _elements.getHeaderTitle)(options, route.name)
112
- }))
107
+ header = _ref5 => {
108
+ let {
109
+ layout,
110
+ options
111
+ } = _ref5;
112
+ return /*#__PURE__*/React.createElement(_elements.Header, _extends({}, options, {
113
+ layout: layout,
114
+ title: (0, _elements.getHeaderTitle)(options, route.name)
115
+ }));
116
+ }
113
117
  } = descriptor.options;
114
118
  return /*#__PURE__*/React.createElement(_ScreenFallback.MaybeScreen, {
115
119
  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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","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"]}
@@ -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,CAAC;AACnCC,EAAAA,OADmC;AAEnC,KAAGC;AAFgC,CAAD,KAM9B;AAAA;;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,CAAqB;AAAEC,EAAAA,OAAF;AAAWC,EAAAA,QAAX;AAAqB,KAAGJ;AAAxB,CAArB,EAA4D;AAAA;;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"]}
@@ -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
- route: _,
18
- horizontal,
19
- badge,
20
- badgeStyle,
21
- activeOpacity,
22
- inactiveOpacity,
23
- activeTintColor,
24
- inactiveTintColor,
25
- renderIcon,
26
- style
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,CAAoB;AACjCC,EAAAA,KAAK,EAAEC,CAD0B;AAEjCC,EAAAA,UAFiC;AAGjCC,EAAAA,KAHiC;AAIjCC,EAAAA,UAJiC;AAKjCC,EAAAA,aALiC;AAMjCC,EAAAA,eANiC;AAOjCC,EAAAA,eAPiC;AAQjCC,EAAAA,iBARiC;AASjCC,EAAAA,UATiC;AAUjCC,EAAAA;AAViC,CAApB,EAWL;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"]}
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"]}
@@ -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,19 +5,23 @@ 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
- initialRouteName,
10
- backBehavior,
11
- children,
12
- screenListeners,
13
- screenOptions,
14
- sceneContainerStyle,
15
- // @ts-expect-error: lazy is deprecated
16
- lazy,
17
- // @ts-expect-error: tabBarOptions is deprecated
18
- tabBarOptions,
19
- ...rest
20
- }) {
8
+ function BottomTabNavigator(_ref) {
9
+ let {
10
+ initialRouteName,
11
+ backBehavior,
12
+ children,
13
+ screenListeners,
14
+ screenOptions,
15
+ sceneContainerStyle,
16
+ ...restWithDeprecated
17
+ } = _ref;
18
+ const {
19
+ // @ts-expect-error: lazy is deprecated
20
+ lazy,
21
+ // @ts-expect-error: tabBarOptions is deprecated
22
+ tabBarOptions,
23
+ ...rest
24
+ } = restWithDeprecated;
21
25
  let defaultScreenOptions = {};
22
26
 
23
27
  if (tabBarOptions) {
@@ -1 +1 @@
1
- {"version":3,"sources":["createBottomTabNavigator.tsx"],"names":["createNavigatorFactory","TabRouter","useNavigationBuilder","React","warnOnce","BottomTabView","BottomTabNavigator","initialRouteName","backBehavior","children","screenListeners","screenOptions","sceneContainerStyle","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 // @ts-expect-error: lazy is deprecated\n lazy,\n // @ts-expect-error: tabBarOptions is deprecated\n tabBarOptions,\n ...rest\n}: Props) {\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","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,15 +4,16 @@ 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
- visible = true,
9
- size = 18,
10
- children,
11
- style,
12
- ...rest
13
- }) {
7
+ export default function Badge(_ref) {
8
+ let {
9
+ children,
10
+ style,
11
+ visible = true,
12
+ size = 18,
13
+ ...rest
14
+ } = _ref;
14
15
  const [opacity] = React.useState(() => new Animated.Value(visible ? 1 : 0));
15
- const [rendered, setRendered] = React.useState(visible ? true : false);
16
+ const [rendered, setRendered] = React.useState(visible);
16
17
  const theme = useTheme();
17
18
  React.useEffect(() => {
18
19
  if (!rendered) {
@@ -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
- finished
28
- }) => {
27
+ }).start(_ref2 => {
28
+ let {
29
+ finished
30
+ } = _ref2;
31
+
29
32
  if (finished && !visible) {
30
33
  setRendered(false);
31
34
  }
@@ -33,12 +36,12 @@ export default function Badge({
33
36
  return () => opacity.stopAnimation();
34
37
  }, [opacity, rendered, visible]);
35
38
 
36
- if (visible && !rendered) {
37
- setRendered(true);
38
- }
39
-
40
- if (!visible && !rendered) {
41
- return null;
39
+ if (!rendered) {
40
+ if (visible) {
41
+ setRendered(true);
42
+ } else {
43
+ return null;
44
+ }
42
45
  } // @ts-expect-error: backgroundColor definitely exists
43
46
 
44
47
 
@@ -52,19 +55,19 @@ export default function Badge({
52
55
  return /*#__PURE__*/React.createElement(Animated.Text, _extends({
53
56
  numberOfLines: 1,
54
57
  style: [{
55
- opacity,
56
58
  transform: [{
57
59
  scale: opacity.interpolate({
58
60
  inputRange: [0, 1],
59
61
  outputRange: [0.5, 1]
60
62
  })
61
63
  }],
62
- backgroundColor,
63
64
  color: textColor,
64
- fontSize,
65
65
  lineHeight: size - 1,
66
66
  height: size,
67
67
  minWidth: size,
68
+ opacity,
69
+ backgroundColor,
70
+ fontSize,
68
71
  borderRadius
69
72
  }, styles.container, restStyle]
70
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"]}
@@ -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
- state,
16
- descriptors,
17
- layout,
18
- dimensions
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
- state,
97
- navigation,
98
- descriptors,
99
- insets,
100
- style
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
- finished
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
- color,
289
- size
290
- }) => /*#__PURE__*/React.createElement(MissingIcon, {
291
- color: color,
292
- size: size
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,