repoweaver
Version:
A GitHub App that skillfully weaves multiple templates together to create and update repositories with intelligent merge strategies
1 lines • 70.2 kB
JSON
{"ast":null,"code":"import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nconst _excluded = [\"route\", \"style\", \"children\", \"borderless\", \"centered\", \"rippleColor\"],\n _excluded2 = [\"key\"];\nfunction _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nimport * as React from 'react';\nimport Animated from \"react-native-web/dist/exports/Animated\";\nimport Platform from \"react-native-web/dist/exports/Platform\";\nimport StyleSheet from \"react-native-web/dist/exports/StyleSheet\";\nimport Pressable from \"react-native-web/dist/exports/Pressable\";\nimport View from \"react-native-web/dist/exports/View\";\nimport color from 'color';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport { getActiveTintColor, getInactiveTintColor, getLabelColor } from \"./utils\";\nimport { useInternalTheme } from \"../../core/theming\";\nimport overlay from \"../../styles/overlay\";\nimport { black, white } from \"../../styles/themes/v2/colors\";\nimport useAnimatedValue from \"../../utils/useAnimatedValue\";\nimport useAnimatedValueArray from \"../../utils/useAnimatedValueArray\";\nimport useIsKeyboardShown from \"../../utils/useIsKeyboardShown\";\nimport useLayout from \"../../utils/useLayout\";\nimport Badge from \"../Badge\";\nimport Icon from \"../Icon\";\nimport Surface from \"../Surface\";\nimport TouchableRipple from \"../TouchableRipple/TouchableRipple\";\nimport Text from \"../Typography/Text\";\nconst MIN_RIPPLE_SCALE = 0.001;\nconst MIN_TAB_WIDTH = 96;\nconst MAX_TAB_WIDTH = 168;\nconst BAR_HEIGHT = 56;\nconst OUTLINE_WIDTH = 64;\nconst Touchable = _ref => {\n let {\n style,\n children,\n borderless,\n centered,\n rippleColor\n } = _ref,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n return TouchableRipple.supported ? React.createElement(TouchableRipple, _extends({}, rest, {\n disabled: rest.disabled || undefined,\n borderless: borderless,\n centered: centered,\n rippleColor: rippleColor,\n style: style\n }), children) : React.createElement(Pressable, _extends({\n style: style\n }, rest), children);\n};\nconst BottomNavigationBar = ({\n navigationState,\n renderIcon,\n renderLabel,\n renderTouchable = _ref2 => {\n let {\n key\n } = _ref2,\n props = _objectWithoutPropertiesLoose(_ref2, _excluded2);\n return React.createElement(Touchable, _extends({\n key: key\n }, props));\n },\n getLabelText = ({\n route\n }) => route.title,\n getBadge = ({\n route\n }) => route.badge,\n getColor = ({\n route\n }) => route.color,\n getAccessibilityLabel = ({\n route\n }) => route.accessibilityLabel,\n getTestID = ({\n route\n }) => route.testID,\n activeColor,\n inactiveColor,\n keyboardHidesNavigationBar = Platform.OS === 'android',\n style,\n activeIndicatorStyle,\n labeled = true,\n animationEasing,\n onTabPress,\n onTabLongPress,\n shifting: shiftingProp,\n safeAreaInsets,\n labelMaxFontSizeMultiplier = 1,\n compact: compactProp,\n testID = 'bottom-navigation-bar',\n theme: themeOverrides\n}) => {\n const theme = useInternalTheme(themeOverrides);\n const {\n bottom,\n left,\n right\n } = useSafeAreaInsets();\n const {\n scale\n } = theme.animation;\n const compact = compactProp ?? !theme.isV3;\n let shifting = shiftingProp ?? (theme.isV3 ? false : navigationState.routes.length > 3);\n if (shifting && navigationState.routes.length < 2) {\n shifting = false;\n console.warn('BottomNavigation.Bar needs at least 2 tabs to run shifting animation');\n }\n const visibleAnim = useAnimatedValue(1);\n const tabsAnims = useAnimatedValueArray(navigationState.routes.map((_, i) => i === navigationState.index ? 1 : 0));\n const indexAnim = useAnimatedValue(navigationState.index);\n const rippleAnim = useAnimatedValue(MIN_RIPPLE_SCALE);\n const [layout, onLayout] = useLayout();\n const [keyboardVisible, setKeyboardVisible] = React.useState(false);\n const handleKeyboardShow = React.useCallback(() => {\n setKeyboardVisible(true);\n Animated.timing(visibleAnim, {\n toValue: 0,\n duration: 150 * scale,\n useNativeDriver: true\n }).start();\n }, [scale, visibleAnim]);\n const handleKeyboardHide = React.useCallback(() => {\n Animated.timing(visibleAnim, {\n toValue: 1,\n duration: 100 * scale,\n useNativeDriver: true\n }).start(() => {\n setKeyboardVisible(false);\n });\n }, [scale, visibleAnim]);\n const animateToIndex = React.useCallback(index => {\n rippleAnim.setValue(MIN_RIPPLE_SCALE);\n Animated.parallel([Animated.timing(rippleAnim, {\n toValue: 1,\n duration: theme.isV3 || shifting ? 400 * scale : 0,\n useNativeDriver: true\n }), ...navigationState.routes.map((_, i) => Animated.timing(tabsAnims[i], {\n toValue: i === index ? 1 : 0,\n duration: theme.isV3 || shifting ? 150 * scale : 0,\n useNativeDriver: true,\n easing: animationEasing\n }))]).start(() => {\n tabsAnims.map((tab, i) => tab.setValue(i === index ? 1 : 0));\n indexAnim.setValue(index);\n rippleAnim.setValue(MIN_RIPPLE_SCALE);\n });\n }, [rippleAnim, theme.isV3, shifting, scale, navigationState.routes, tabsAnims, animationEasing, indexAnim]);\n React.useEffect(() => {\n animateToIndex(navigationState.index);\n }, []);\n useIsKeyboardShown({\n onShow: handleKeyboardShow,\n onHide: handleKeyboardHide\n });\n React.useEffect(() => {\n animateToIndex(navigationState.index);\n }, [navigationState.index, animateToIndex]);\n const eventForIndex = index => {\n const event = {\n route: navigationState.routes[index],\n defaultPrevented: false,\n preventDefault: () => {\n event.defaultPrevented = true;\n }\n };\n return event;\n };\n const {\n routes\n } = navigationState;\n const {\n colors,\n dark: isDarkTheme,\n mode,\n isV3\n } = theme;\n const {\n backgroundColor: customBackground,\n elevation = 4\n } = StyleSheet.flatten(style) || {};\n const approxBackgroundColor = customBackground ? customBackground : isDarkTheme && mode === 'adaptive' ? overlay(elevation, colors === null || colors === void 0 ? void 0 : colors.surface) : colors === null || colors === void 0 ? void 0 : colors.primary;\n const v2BackgroundColorInterpolation = shifting ? indexAnim.interpolate({\n inputRange: routes.map((_, i) => i),\n outputRange: routes.map(route => getColor({\n route\n }) || approxBackgroundColor)\n }) : approxBackgroundColor;\n const backgroundColor = isV3 ? customBackground || theme.colors.elevation.level2 : shifting ? v2BackgroundColorInterpolation : approxBackgroundColor;\n const isDark = typeof approxBackgroundColor === 'string' ? !color(approxBackgroundColor).isLight() : true;\n const textColor = isDark ? white : black;\n const activeTintColor = getActiveTintColor({\n activeColor,\n defaultColor: textColor,\n theme\n });\n const inactiveTintColor = getInactiveTintColor({\n inactiveColor,\n defaultColor: textColor,\n theme\n });\n const touchColor = color(activeTintColor).alpha(0.12).rgb().string();\n const maxTabWidth = routes.length > 3 ? MIN_TAB_WIDTH : MAX_TAB_WIDTH;\n const maxTabBarWidth = maxTabWidth * routes.length;\n const rippleSize = layout.width / 4;\n const insets = {\n left: (safeAreaInsets === null || safeAreaInsets === void 0 ? void 0 : safeAreaInsets.left) ?? left,\n right: (safeAreaInsets === null || safeAreaInsets === void 0 ? void 0 : safeAreaInsets.right) ?? right,\n bottom: (safeAreaInsets === null || safeAreaInsets === void 0 ? void 0 : safeAreaInsets.bottom) ?? bottom\n };\n return React.createElement(Surface, _extends({}, theme.isV3 && {\n elevation: 0\n }, {\n testID: testID,\n style: [!theme.isV3 && styles.elevation, styles.bar, keyboardHidesNavigationBar ? {\n transform: [{\n translateY: visibleAnim.interpolate({\n inputRange: [0, 1],\n outputRange: [layout.height, 0]\n })\n }],\n position: keyboardVisible ? 'absolute' : undefined\n } : null, style],\n pointerEvents: layout.measured ? keyboardHidesNavigationBar && keyboardVisible ? 'none' : 'auto' : 'none',\n onLayout: onLayout,\n container: true\n }), React.createElement(Animated.View, {\n style: [styles.barContent, {\n backgroundColor\n }],\n testID: `${testID}-content`\n }, React.createElement(View, {\n style: [styles.items, {\n marginBottom: insets.bottom,\n marginHorizontal: Math.max(insets.left, insets.right)\n }, compact && {\n maxWidth: maxTabBarWidth\n }],\n accessibilityRole: 'tablist',\n testID: `${testID}-content-wrapper`\n }, shifting && !isV3 ? React.createElement(Animated.View, {\n pointerEvents: \"none\",\n style: [styles.ripple, {\n top: (BAR_HEIGHT - rippleSize) / 2,\n left: Math.min(layout.width, maxTabBarWidth) / routes.length * (navigationState.index + 0.5) - rippleSize / 2,\n height: rippleSize,\n width: rippleSize,\n borderRadius: rippleSize / 2,\n backgroundColor: getColor({\n route: routes[navigationState.index]\n }),\n transform: [{\n scale: rippleAnim.interpolate({\n inputRange: [0, 1],\n outputRange: [0, 8]\n })\n }],\n opacity: rippleAnim.interpolate({\n inputRange: [0, MIN_RIPPLE_SCALE, 0.3, 1],\n outputRange: [0, 0, 1, 1]\n })\n }],\n testID: `${testID}-content-ripple`\n }) : null, routes.map((route, index) => {\n const focused = navigationState.index === index;\n const active = tabsAnims[index];\n const scale = labeled && shifting ? active.interpolate({\n inputRange: [0, 1],\n outputRange: [0.5, 1]\n }) : 1;\n const translateY = labeled ? shifting ? active.interpolate({\n inputRange: [0, 1],\n outputRange: [7, 0]\n }) : 0 : 7;\n const activeOpacity = active;\n const inactiveOpacity = active.interpolate({\n inputRange: [0, 1],\n outputRange: [1, 0]\n });\n const v3ActiveOpacity = focused ? 1 : 0;\n const v3InactiveOpacity = shifting ? inactiveOpacity : focused ? 0 : 1;\n const outlineScale = focused ? active.interpolate({\n inputRange: [0, 1],\n outputRange: [0.5, 1]\n }) : 0;\n const badge = getBadge({\n route\n });\n const activeLabelColor = getLabelColor({\n tintColor: activeTintColor,\n hasColor: Boolean(activeColor),\n focused,\n defaultColor: textColor,\n theme\n });\n const inactiveLabelColor = getLabelColor({\n tintColor: inactiveTintColor,\n hasColor: Boolean(inactiveColor),\n focused,\n defaultColor: textColor,\n theme\n });\n const badgeStyle = {\n top: !isV3 ? -2 : typeof badge === 'boolean' ? 4 : 2,\n right: (badge != null && typeof badge !== 'boolean' ? String(badge).length * -2 : 0) - (!isV3 ? 2 : 0)\n };\n const isLegacyOrV3Shifting = !isV3 || isV3 && shifting && labeled;\n const font = isV3 ? theme.fonts.labelMedium : {};\n return renderTouchable({\n key: route.key,\n route,\n borderless: true,\n centered: true,\n rippleColor: isV3 ? 'transparent' : touchColor,\n onPress: () => onTabPress(eventForIndex(index)),\n onLongPress: () => onTabLongPress === null || onTabLongPress === void 0 ? void 0 : onTabLongPress(eventForIndex(index)),\n testID: getTestID({\n route\n }),\n accessibilityLabel: getAccessibilityLabel({\n route\n }),\n accessibilityRole: Platform.OS === 'ios' ? 'button' : 'tab',\n accessibilityState: {\n selected: focused\n },\n style: [styles.item, isV3 && styles.v3Item],\n children: React.createElement(View, {\n pointerEvents: \"none\",\n style: isV3 && (labeled ? styles.v3TouchableContainer : styles.v3NoLabelContainer)\n }, React.createElement(Animated.View, {\n style: [styles.iconContainer, isV3 && styles.v3IconContainer, isLegacyOrV3Shifting && {\n transform: [{\n translateY\n }]\n }]\n }, isV3 && focused && React.createElement(Animated.View, {\n style: [styles.outline, {\n transform: [{\n scaleX: outlineScale\n }],\n backgroundColor: theme.colors.secondaryContainer\n }, activeIndicatorStyle]\n }), React.createElement(Animated.View, {\n style: [styles.iconWrapper, isV3 && styles.v3IconWrapper, {\n opacity: isLegacyOrV3Shifting ? activeOpacity : v3ActiveOpacity\n }]\n }, renderIcon ? renderIcon({\n route,\n focused: true,\n color: activeTintColor\n }) : React.createElement(Icon, {\n source: route.focusedIcon,\n color: activeTintColor,\n size: 24\n })), React.createElement(Animated.View, {\n style: [styles.iconWrapper, isV3 && styles.v3IconWrapper, {\n opacity: isLegacyOrV3Shifting ? inactiveOpacity : v3InactiveOpacity\n }]\n }, renderIcon ? renderIcon({\n route,\n focused: false,\n color: inactiveTintColor\n }) : React.createElement(Icon, {\n source: theme.isV3 && route.unfocusedIcon !== undefined ? route.unfocusedIcon : route.focusedIcon,\n color: inactiveTintColor,\n size: 24\n })), React.createElement(View, {\n style: [styles.badgeContainer, badgeStyle]\n }, typeof badge === 'boolean' ? React.createElement(Badge, {\n visible: badge,\n size: isV3 ? 6 : 8\n }) : React.createElement(Badge, {\n visible: badge != null,\n size: 16\n }, badge))), labeled ? React.createElement(Animated.View, {\n style: [styles.labelContainer, !isV3 && {\n transform: [{\n scale\n }]\n }]\n }, React.createElement(Animated.View, {\n style: [styles.labelWrapper, {\n opacity: isLegacyOrV3Shifting ? activeOpacity : v3ActiveOpacity\n }]\n }, renderLabel ? renderLabel({\n route,\n focused: true,\n color: activeLabelColor\n }) : React.createElement(Text, {\n maxFontSizeMultiplier: labelMaxFontSizeMultiplier,\n variant: \"labelMedium\",\n style: [styles.label, Object.assign({\n color: activeLabelColor\n }, font)]\n }, getLabelText({\n route\n }))), shifting ? null : React.createElement(Animated.View, {\n style: [styles.labelWrapper, {\n opacity: isLegacyOrV3Shifting ? inactiveOpacity : v3InactiveOpacity\n }]\n }, renderLabel ? renderLabel({\n route,\n focused: false,\n color: inactiveLabelColor\n }) : React.createElement(Text, {\n maxFontSizeMultiplier: labelMaxFontSizeMultiplier,\n variant: \"labelMedium\",\n selectable: false,\n style: [styles.label, Object.assign({\n color: inactiveLabelColor\n }, font)]\n }, getLabelText({\n route\n })))) : !isV3 && React.createElement(View, {\n style: styles.labelContainer\n }))\n });\n }))));\n};\nBottomNavigationBar.displayName = 'BottomNavigation.Bar';\nexport default BottomNavigationBar;\nconst styles = StyleSheet.create({\n bar: {\n left: 0,\n right: 0,\n bottom: 0\n },\n barContent: {\n alignItems: 'center',\n overflow: 'hidden'\n },\n items: Object.assign({\n flexDirection: 'row'\n }, Platform.OS === 'web' ? {\n width: '100%'\n } : null),\n item: {\n flex: 1,\n paddingVertical: 6\n },\n v3Item: {\n paddingVertical: 0\n },\n ripple: {\n position: 'absolute'\n },\n iconContainer: {\n height: 24,\n width: 24,\n marginTop: 2,\n marginHorizontal: 12,\n alignSelf: 'center'\n },\n v3IconContainer: {\n height: 32,\n width: 32,\n marginBottom: 4,\n marginTop: 0,\n justifyContent: 'center'\n },\n iconWrapper: Object.assign({}, StyleSheet.absoluteFillObject, {\n alignItems: 'center'\n }),\n v3IconWrapper: {\n top: 4\n },\n labelContainer: {\n height: 16,\n paddingBottom: 2\n },\n labelWrapper: Object.assign({}, StyleSheet.absoluteFillObject),\n label: Object.assign({\n fontSize: 12,\n height: BAR_HEIGHT,\n textAlign: 'center',\n backgroundColor: 'transparent'\n }, Platform.OS === 'web' ? {\n whiteSpace: 'nowrap',\n alignSelf: 'center'\n } : null),\n badgeContainer: {\n position: 'absolute',\n left: 0\n },\n v3TouchableContainer: {\n paddingTop: 12,\n paddingBottom: 16\n },\n v3NoLabelContainer: {\n height: 80,\n justifyContent: 'center',\n alignItems: 'center'\n },\n outline: {\n width: OUTLINE_WIDTH,\n height: OUTLINE_WIDTH / 2,\n borderRadius: OUTLINE_WIDTH / 4,\n alignSelf: 'center'\n },\n elevation: {\n elevation: 4\n }\n});","map":{"version":3,"names":["React","Animated","Platform","StyleSheet","Pressable","View","color","useSafeAreaInsets","getActiveTintColor","getInactiveTintColor","getLabelColor","useInternalTheme","overlay","black","white","useAnimatedValue","useAnimatedValueArray","useIsKeyboardShown","useLayout","Badge","Icon","Surface","TouchableRipple","Text","MIN_RIPPLE_SCALE","MIN_TAB_WIDTH","MAX_TAB_WIDTH","BAR_HEIGHT","OUTLINE_WIDTH","Touchable","_ref","style","children","borderless","centered","rippleColor","rest","_objectWithoutPropertiesLoose","_excluded","supported","createElement","_extends","disabled","undefined","BottomNavigationBar","navigationState","renderIcon","renderLabel","renderTouchable","_ref2","key","props","_excluded2","getLabelText","route","title","getBadge","badge","getColor","getAccessibilityLabel","accessibilityLabel","getTestID","testID","activeColor","inactiveColor","keyboardHidesNavigationBar","OS","activeIndicatorStyle","labeled","animationEasing","onTabPress","onTabLongPress","shifting","shiftingProp","safeAreaInsets","labelMaxFontSizeMultiplier","compact","compactProp","theme","themeOverrides","bottom","left","right","scale","animation","isV3","routes","length","console","warn","visibleAnim","tabsAnims","map","_","i","index","indexAnim","rippleAnim","layout","onLayout","keyboardVisible","setKeyboardVisible","useState","handleKeyboardShow","useCallback","timing","toValue","duration","useNativeDriver","start","handleKeyboardHide","animateToIndex","setValue","parallel","easing","tab","useEffect","onShow","onHide","eventForIndex","event","defaultPrevented","preventDefault","colors","dark","isDarkTheme","mode","backgroundColor","customBackground","elevation","flatten","approxBackgroundColor","surface","primary","v2BackgroundColorInterpolation","interpolate","inputRange","outputRange","level2","isDark","isLight","textColor","activeTintColor","defaultColor","inactiveTintColor","touchColor","alpha","rgb","string","maxTabWidth","maxTabBarWidth","rippleSize","width","insets","styles","bar","transform","translateY","height","position","pointerEvents","measured","container","barContent","items","marginBottom","marginHorizontal","Math","max","maxWidth","accessibilityRole","ripple","top","min","borderRadius","opacity","focused","active","activeOpacity","inactiveOpacity","v3ActiveOpacity","v3InactiveOpacity","outlineScale","activeLabelColor","tintColor","hasColor","Boolean","inactiveLabelColor","badgeStyle","String","isLegacyOrV3Shifting","font","fonts","labelMedium","onPress","onLongPress","accessibilityState","selected","item","v3Item","v3TouchableContainer","v3NoLabelContainer","iconContainer","v3IconContainer","outline","scaleX","secondaryContainer","iconWrapper","v3IconWrapper","source","focusedIcon","size","unfocusedIcon","badgeContainer","visible","labelContainer","labelWrapper","maxFontSizeMultiplier","variant","label","Object","assign","selectable","displayName","create","alignItems","overflow","flexDirection","flex","paddingVertical","marginTop","alignSelf","justifyContent","absoluteFillObject","paddingBottom","fontSize","textAlign","whiteSpace","paddingTop"],"sources":["/Users/pmouli/Documents/GitHub.nosync/boots-strapper/mobile/node_modules/react-native-paper/src/components/BottomNavigation/BottomNavigationBar.tsx"],"sourcesContent":["import * as React from 'react';\nimport {\n Animated,\n ColorValue,\n EasingFunction,\n Platform,\n StyleProp,\n StyleSheet,\n Pressable,\n View,\n ViewStyle,\n} from 'react-native';\n\nimport color from 'color';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport {\n getActiveTintColor,\n getInactiveTintColor,\n getLabelColor,\n} from './utils';\nimport { useInternalTheme } from '../../core/theming';\nimport overlay from '../../styles/overlay';\nimport { black, white } from '../../styles/themes/v2/colors';\nimport type { ThemeProp } from '../../types';\nimport useAnimatedValue from '../../utils/useAnimatedValue';\nimport useAnimatedValueArray from '../../utils/useAnimatedValueArray';\nimport useIsKeyboardShown from '../../utils/useIsKeyboardShown';\nimport useLayout from '../../utils/useLayout';\nimport Badge from '../Badge';\nimport Icon, { IconSource } from '../Icon';\nimport Surface from '../Surface';\nimport TouchableRipple from '../TouchableRipple/TouchableRipple';\nimport { Props as TouchableRippleProps } from '../TouchableRipple/TouchableRipple';\nimport Text from '../Typography/Text';\n\ntype BaseRoute = {\n key: string;\n title?: string;\n focusedIcon?: IconSource;\n unfocusedIcon?: IconSource;\n badge?: string | number | boolean;\n /**\n * @deprecated In v5.x works only with theme version 2.\n */\n color?: string;\n accessibilityLabel?: string;\n testID?: string;\n lazy?: boolean;\n};\n\ntype NavigationState<Route extends BaseRoute> = {\n index: number;\n routes: Route[];\n};\n\ntype TabPressEvent = {\n defaultPrevented: boolean;\n preventDefault(): void;\n};\n\ntype TouchableProps<Route extends BaseRoute> = TouchableRippleProps & {\n key: string;\n route: Route;\n children: React.ReactNode;\n borderless?: boolean;\n centered?: boolean;\n rippleColor?: ColorValue;\n};\n\nexport type Props<Route extends BaseRoute> = {\n /**\n * Whether the shifting style is used, the active tab icon shifts up to show the label and the inactive tabs won't have a label.\n *\n * By default, this is `false` with theme version 3 and `true` when you have more than 3 tabs.\n * Pass `shifting={false}` to explicitly disable this animation, or `shifting={true}` to always use this animation.\n * Note that you need at least 2 tabs be able to run this animation.\n */\n shifting?: boolean;\n /**\n * Whether to show labels in tabs. When `false`, only icons will be displayed.\n */\n labeled?: boolean;\n /**\n * Whether tabs should be spread across the entire width.\n */\n compact?: boolean;\n /**\n * State for the bottom navigation. The state should contain the following properties:\n *\n * - `index`: a number representing the index of the active route in the `routes` array\n * - `routes`: an array containing a list of route objects used for rendering the tabs\n *\n * Each route object should contain the following properties:\n *\n * - `key`: a unique key to identify the route (required)\n * - `title`: title of the route to use as the tab label\n * - `focusedIcon`: icon to use as the focused tab icon, can be a string, an image source or a react component @renamed Renamed from 'icon' to 'focusedIcon' in v5.x\n * - `unfocusedIcon`: icon to use as the unfocused tab icon, can be a string, an image source or a react component @supported Available in v5.x with theme version 3\n * - `color`: color to use as background color for shifting bottom navigation @deprecatedProperty In v5.x works only with theme version 2.\n * - `badge`: badge to show on the tab icon, can be `true` to show a dot, `string` or `number` to show text.\n * - `accessibilityLabel`: accessibility label for the tab button\n * - `testID`: test id for the tab button\n *\n * Example:\n *\n * ```js\n * {\n * index: 1,\n * routes: [\n * { key: 'music', title: 'Favorites', focusedIcon: 'heart', unfocusedIcon: 'heart-outline'},\n * { key: 'albums', title: 'Albums', focusedIcon: 'album' },\n * { key: 'recents', title: 'Recents', focusedIcon: 'history' },\n * { key: 'notifications', title: 'Notifications', focusedIcon: 'bell', unfocusedIcon: 'bell-outline' },\n * ]\n * }\n * ```\n *\n * `BottomNavigation.Bar` is a controlled component, which means the `index` needs to be updated via the `onTabPress` callback.\n */\n navigationState: NavigationState<Route>;\n /**\n * Callback which returns a React Element to be used as tab icon.\n */\n renderIcon?: (props: {\n route: Route;\n focused: boolean;\n color: string;\n }) => React.ReactNode;\n /**\n * Callback which React Element to be used as tab label.\n */\n renderLabel?: (props: {\n route: Route;\n focused: boolean;\n color: string;\n }) => React.ReactNode;\n /**\n * Callback which returns a React element to be used as the touchable for the tab item.\n * Renders a `TouchableRipple` on Android and `Pressable` on iOS.\n */\n renderTouchable?: (props: TouchableProps<Route>) => React.ReactNode;\n /**\n * Get accessibility label for the tab button. This is read by the screen reader when the user taps the tab.\n * Uses `route.accessibilityLabel` by default.\n */\n getAccessibilityLabel?: (props: { route: Route }) => string | undefined;\n /**\n * Get badge for the tab, uses `route.badge` by default.\n */\n getBadge?: (props: { route: Route }) => boolean | number | string | undefined;\n /**\n * Get color for the tab, uses `route.color` by default.\n */\n getColor?: (props: { route: Route }) => string | undefined;\n /**\n * Get label text for the tab, uses `route.title` by default. Use `renderLabel` to replace label component.\n */\n getLabelText?: (props: { route: Route }) => string | undefined;\n /**\n * Get the id to locate this tab button in tests, uses `route.testID` by default.\n */\n getTestID?: (props: { route: Route }) => string | undefined;\n /**\n * Function to execute on tab press. It receives the route for the pressed tab. Use this to update the navigation state.\n */\n onTabPress: (props: { route: Route } & TabPressEvent) => void;\n /**\n * Function to execute on tab long press. It receives the route for the pressed tab\n */\n onTabLongPress?: (props: { route: Route } & TabPressEvent) => void;\n /**\n * Custom color for icon and label in the active tab.\n */\n activeColor?: string;\n /**\n * Custom color for icon and label in the inactive tab.\n */\n inactiveColor?: string;\n /**\n * The scene animation Easing.\n */\n animationEasing?: EasingFunction | undefined;\n /**\n * Whether the bottom navigation bar is hidden when keyboard is shown.\n * On Android, this works best when [`windowSoftInputMode`](https://developer.android.com/guide/topics/manifest/activity-element#wsoft) is set to `adjustResize`.\n */\n keyboardHidesNavigationBar?: boolean;\n /**\n * Safe area insets for the tab bar. This can be used to avoid elements like the navigation bar on Android and bottom safe area on iOS.\n * The bottom insets for iOS is added by default. You can override the behavior with this option.\n */\n safeAreaInsets?: {\n top?: number;\n right?: number;\n bottom?: number;\n left?: number;\n };\n /**\n * Specifies the largest possible scale a label font can reach.\n */\n labelMaxFontSizeMultiplier?: number;\n style?: Animated.WithAnimatedValue<StyleProp<ViewStyle>>;\n activeIndicatorStyle?: StyleProp<ViewStyle>;\n /**\n * @optional\n */\n theme?: ThemeProp;\n /**\n * TestID used for testing purposes\n */\n testID?: string;\n};\n\nconst MIN_RIPPLE_SCALE = 0.001; // Minimum scale is not 0 due to bug with animation\nconst MIN_TAB_WIDTH = 96;\nconst MAX_TAB_WIDTH = 168;\nconst BAR_HEIGHT = 56;\nconst OUTLINE_WIDTH = 64;\n\nconst Touchable = <Route extends BaseRoute>({\n route: _0,\n style,\n children,\n borderless,\n centered,\n rippleColor,\n ...rest\n}: TouchableProps<Route>) =>\n TouchableRipple.supported ? (\n <TouchableRipple\n {...rest}\n disabled={rest.disabled || undefined}\n borderless={borderless}\n centered={centered}\n rippleColor={rippleColor}\n style={style}\n >\n {children}\n </TouchableRipple>\n ) : (\n <Pressable style={style} {...rest}>\n {children}\n </Pressable>\n );\n\n/**\n * A navigation bar which can easily be integrated with [React Navigation's Bottom Tabs Navigator](https://reactnavigation.org/docs/bottom-tab-navigator/).\n *\n * ## Usage\n * ### without React Navigation\n * ```js\n * import React from 'react';\n * import { useState } from 'react';\n * import { View } from 'react-native';\n * import { BottomNavigation, Text, Provider } from 'react-native-paper';\n * import MaterialCommunityIcons from '@expo/vector-icons/MaterialCommunityIcons';\n *\n * function HomeScreen() {\n * return (\n * <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>\n * <Text>Home!</Text>\n * </View>\n * );\n * }\n *\n * function SettingsScreen() {\n * return (\n * <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>\n * <Text>Settings!</Text>\n * </View>\n * );\n * }\n *\n * export default function MyComponent() {\n * const [index, setIndex] = useState(0);\n *\n * const routes = [\n * { key: 'home', title: 'Home', icon: 'home' },\n * { key: 'settings', title: 'Settings', icon: 'cog' },\n * ];\n\n * const renderScene = ({ route }) => {\n * switch (route.key) {\n * case 'home':\n * return <HomeScreen />;\n * case 'settings':\n * return <SettingsScreen />;\n * default:\n * return null;\n * }\n * };\n *\n * return (\n * <Provider>\n * {renderScene({ route: routes[index] })}\n * <BottomNavigation.Bar\n * navigationState={{ index, routes }}\n * onTabPress={({ route }) => {\n * const newIndex = routes.findIndex((r) => r.key === route.key);\n * if (newIndex !== -1) {\n * setIndex(newIndex);\n * }\n * }}\n * renderIcon={({ route, color }) => (\n * <Icon name={route.icon} size={24} color={color} />\n * )}\n * getLabelText={({ route }) => route.title}\n * />\n * </Provider>\n * );\n * }\n * ```\n */\nconst BottomNavigationBar = <Route extends BaseRoute>({\n navigationState,\n renderIcon,\n renderLabel,\n renderTouchable = ({ key, ...props }: TouchableProps<Route>) => (\n <Touchable key={key} {...props} />\n ),\n getLabelText = ({ route }: { route: Route }) => route.title,\n getBadge = ({ route }: { route: Route }) => route.badge,\n getColor = ({ route }: { route: Route }) => route.color,\n getAccessibilityLabel = ({ route }: { route: Route }) =>\n route.accessibilityLabel,\n getTestID = ({ route }: { route: Route }) => route.testID,\n activeColor,\n inactiveColor,\n keyboardHidesNavigationBar = Platform.OS === 'android',\n style,\n activeIndicatorStyle,\n labeled = true,\n animationEasing,\n onTabPress,\n onTabLongPress,\n shifting: shiftingProp,\n safeAreaInsets,\n labelMaxFontSizeMultiplier = 1,\n compact: compactProp,\n testID = 'bottom-navigation-bar',\n theme: themeOverrides,\n}: Props<Route>) => {\n const theme = useInternalTheme(themeOverrides);\n const { bottom, left, right } = useSafeAreaInsets();\n const { scale } = theme.animation;\n const compact = compactProp ?? !theme.isV3;\n let shifting =\n shiftingProp ?? (theme.isV3 ? false : navigationState.routes.length > 3);\n\n if (shifting && navigationState.routes.length < 2) {\n shifting = false;\n console.warn(\n 'BottomNavigation.Bar needs at least 2 tabs to run shifting animation'\n );\n }\n\n /**\n * Visibility of the navigation bar, visible state is 1 and invisible is 0.\n */\n const visibleAnim = useAnimatedValue(1);\n\n /**\n * Active state of individual tab items, active state is 1 and inactive state is 0.\n */\n const tabsAnims = useAnimatedValueArray(\n navigationState.routes.map(\n // focused === 1, unfocused === 0\n (_, i) => (i === navigationState.index ? 1 : 0)\n )\n );\n\n /**\n * Index of the currently active tab. Used for setting the background color.\n * We don't use the color as an animated value directly, because `setValue` seems to be buggy with colors?.\n */\n const indexAnim = useAnimatedValue(navigationState.index);\n\n /**\n * Animation for the background color ripple, used to determine it's scale and opacity.\n */\n const rippleAnim = useAnimatedValue(MIN_RIPPLE_SCALE);\n\n /**\n * Layout of the navigation bar. The width is used to determine the size and position of the ripple.\n */\n const [layout, onLayout] = useLayout();\n\n /**\n * Track whether the keyboard is visible to show and hide the navigation bar.\n */\n const [keyboardVisible, setKeyboardVisible] = React.useState(false);\n\n const handleKeyboardShow = React.useCallback(() => {\n setKeyboardVisible(true);\n Animated.timing(visibleAnim, {\n toValue: 0,\n duration: 150 * scale,\n useNativeDriver: true,\n }).start();\n }, [scale, visibleAnim]);\n\n const handleKeyboardHide = React.useCallback(() => {\n Animated.timing(visibleAnim, {\n toValue: 1,\n duration: 100 * scale,\n useNativeDriver: true,\n }).start(() => {\n setKeyboardVisible(false);\n });\n }, [scale, visibleAnim]);\n\n const animateToIndex = React.useCallback(\n (index: number) => {\n // Reset the ripple to avoid glitch if it's currently animating\n rippleAnim.setValue(MIN_RIPPLE_SCALE);\n\n Animated.parallel([\n Animated.timing(rippleAnim, {\n toValue: 1,\n duration: theme.isV3 || shifting ? 400 * scale : 0,\n useNativeDriver: true,\n }),\n ...navigationState.routes.map((_, i) =>\n Animated.timing(tabsAnims[i], {\n toValue: i === index ? 1 : 0,\n duration: theme.isV3 || shifting ? 150 * scale : 0,\n useNativeDriver: true,\n easing: animationEasing,\n })\n ),\n ]).start(() => {\n // Workaround a bug in native animations where this is reset after first animation\n tabsAnims.map((tab, i) => tab.setValue(i === index ? 1 : 0));\n\n // Update the index to change bar's background color and then hide the ripple\n indexAnim.setValue(index);\n rippleAnim.setValue(MIN_RIPPLE_SCALE);\n });\n },\n [\n rippleAnim,\n theme.isV3,\n shifting,\n scale,\n navigationState.routes,\n tabsAnims,\n animationEasing,\n indexAnim,\n ]\n );\n\n React.useEffect(() => {\n // Workaround for native animated bug in react-native@^0.57\n // Context: https://github.com/callstack/react-native-paper/pull/637\n animateToIndex(navigationState.index);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useIsKeyboardShown({\n onShow: handleKeyboardShow,\n onHide: handleKeyboardHide,\n });\n\n React.useEffect(() => {\n animateToIndex(navigationState.index);\n }, [navigationState.index, animateToIndex]);\n\n const eventForIndex = (index: number) => {\n const event = {\n route: navigationState.routes[index],\n defaultPrevented: false,\n preventDefault: () => {\n event.defaultPrevented = true;\n },\n };\n\n return event;\n };\n\n const { routes } = navigationState;\n const { colors, dark: isDarkTheme, mode, isV3 } = theme;\n\n const { backgroundColor: customBackground, elevation = 4 } =\n (StyleSheet.flatten(style) || {}) as {\n elevation?: number;\n backgroundColor?: ColorValue;\n };\n\n const approxBackgroundColor = customBackground\n ? customBackground\n : isDarkTheme && mode === 'adaptive'\n ? overlay(elevation, colors?.surface)\n : colors?.primary;\n\n const v2BackgroundColorInterpolation = shifting\n ? indexAnim.interpolate({\n inputRange: routes.map((_, i) => i),\n // FIXME: does outputRange support ColorValue or just strings?\n // @ts-expect-error\n outputRange: routes.map(\n (route) => getColor({ route }) || approxBackgroundColor\n ),\n })\n : approxBackgroundColor;\n\n const backgroundColor = isV3\n ? customBackground || theme.colors.elevation.level2\n : shifting\n ? v2BackgroundColorInterpolation\n : approxBackgroundColor;\n\n const isDark =\n typeof approxBackgroundColor === 'string'\n ? !color(approxBackgroundColor).isLight()\n : true;\n\n const textColor = isDark ? white : black;\n\n const activeTintColor = getActiveTintColor({\n activeColor,\n defaultColor: textColor,\n theme,\n });\n\n const inactiveTintColor = getInactiveTintColor({\n inactiveColor,\n defaultColor: textColor,\n theme,\n });\n const touchColor = color(activeTintColor).alpha(0.12).rgb().string();\n\n const maxTabWidth = routes.length > 3 ? MIN_TAB_WIDTH : MAX_TAB_WIDTH;\n const maxTabBarWidth = maxTabWidth * routes.length;\n\n const rippleSize = layout.width / 4;\n\n const insets = {\n left: safeAreaInsets?.left ?? left,\n right: safeAreaInsets?.right ?? right,\n bottom: safeAreaInsets?.bottom ?? bottom,\n };\n\n return (\n <Surface\n {...(theme.isV3 && { elevation: 0 })}\n testID={testID}\n style={[\n !theme.isV3 && styles.elevation,\n styles.bar,\n keyboardHidesNavigationBar // eslint-disable-next-line react-native/no-inline-styles\n ? {\n // When the keyboard is shown, slide down the navigation bar\n transform: [\n {\n translateY: visibleAnim.interpolate({\n inputRange: [0, 1],\n outputRange: [layout.height, 0],\n }),\n },\n ],\n // Absolutely position the navigation bar so that the content is below it\n // This is needed to avoid gap at bottom when the navigation bar is hidden\n position: keyboardVisible ? 'absolute' : undefined,\n }\n : null,\n style,\n ]}\n pointerEvents={\n layout.measured\n ? keyboardHidesNavigationBar && keyboardVisible\n ? 'none'\n : 'auto'\n : 'none'\n }\n onLayout={onLayout}\n container\n >\n <Animated.View\n style={[styles.barContent, { backgroundColor }]}\n testID={`${testID}-content`}\n >\n <View\n style={[\n styles.items,\n {\n marginBottom: insets.bottom,\n marginHorizontal: Math.max(insets.left, insets.right),\n },\n compact && {\n maxWidth: maxTabBarWidth,\n },\n ]}\n accessibilityRole={'tablist'}\n testID={`${testID}-content-wrapper`}\n >\n {shifting && !isV3 ? (\n <Animated.View\n pointerEvents=\"none\"\n style={[\n styles.ripple,\n {\n // Since we have a single ripple, we have to reposition it so that it appears to expand from active tab.\n // We need to move it from the top to center of the navigation bar and from the left to the active tab.\n top: (BAR_HEIGHT - rippleSize) / 2,\n left:\n (Math.min(layout.width, maxTabBarWidth) / routes.length) *\n (navigationState.index + 0.5) -\n rippleSize / 2,\n height: rippleSize,\n width: rippleSize,\n borderRadius: rippleSize / 2,\n backgroundColor: getColor({\n route: routes[navigationState.index],\n }),\n transform: [\n {\n // Scale to twice the size to ensure it covers the whole navigation bar\n scale: rippleAnim.interpolate({\n inputRange: [0, 1],\n outputRange: [0, 8],\n }),\n },\n ],\n opacity: rippleAnim.interpolate({\n inputRange: [0, MIN_RIPPLE_SCALE, 0.3, 1],\n outputRange: [0, 0, 1, 1],\n }),\n },\n ]}\n testID={`${testID}-content-ripple`}\n />\n ) : null}\n {routes.map((route, index) => {\n const focused = navigationState.index === index;\n const active = tabsAnims[index];\n\n // Scale the label up\n const scale =\n labeled && shifting\n ? active.interpolate({\n inputRange: [0, 1],\n outputRange: [0.5, 1],\n })\n : 1;\n\n // Move down the icon to account for no-label in shifting and smaller label in non-shifting.\n const translateY = labeled\n ? shifting\n ? active.interpolate({\n inputRange: [0, 1],\n outputRange: [7, 0],\n })\n : 0\n : 7;\n\n // We render the active icon and label on top of inactive ones and cross-fade them on change.\n // This trick gives the illusion that we are animating between active and inactive colors.\n // This is to ensure that we can use native driver, as colors cannot be animated with native driver.\n const activeOpacity = active;\n const inactiveOpacity = active.interpolate({\n inputRange: [0, 1],\n outputRange: [1, 0],\n });\n\n const v3ActiveOpacity = focused ? 1 : 0;\n const v3InactiveOpacity = shifting\n ? inactiveOpacity\n : focused\n ? 0\n : 1;\n\n // Scale horizontally the outline pill\n const outlineScale = focused\n ? active.interpolate({\n inputRange: [0, 1],\n outputRange: [0.5, 1],\n })\n : 0;\n\n const badge = getBadge({ route });\n\n const activeLabelColor = getLabelColor({\n tintColor: activeTintColor,\n hasColor: Boolean(activeColor),\n focused,\n defaultColor: textColor,\n theme,\n });\n\n const inactiveLabelColor = getLabelColor({\n tintColor: inactiveTintColor,\n hasColor: Boolean(inactiveColor),\n focused,\n defaultColor: textColor,\n theme,\n });\n\n const badgeStyle = {\n top: !isV3 ? -2 : typeof badge === 'boolean' ? 4 : 2,\n right:\n (badge != null && typeof badge !== 'boolean'\n ? String(badge).length * -2\n : 0) - (!isV3 ? 2 : 0),\n };\n\n const isLegacyOrV3Shifting = !isV3 || (isV3 && shifting && labeled);\n\n const font = isV3 ? theme.fonts.labelMedium : {};\n\n return renderTouchable({\n key: route.key,\n route,\n borderless: true,\n centered: true,\n rippleColor: isV3 ? 'transparent' : touchColor,\n onPress: () => onTabPress(eventForIndex(index)),\n onLongPress: () => onTabLongPress?.(eventForIndex(index)),\n testID: getTestID({ route }),\n accessibilityLabel: getAccessibilityLabel({ route }),\n accessibilityRole: Platform.OS === 'ios' ? 'button' : 'tab',\n accessibilityState: { selected: focused },\n style: [styles.item, isV3 && styles.v3Item],\n children: (\n <View\n pointerEvents=\"none\"\n style={\n isV3 &&\n (labeled\n ? styles.v3TouchableContainer\n : styles.v3NoLabelContainer)\n }\n >\n <Animated.View\n style={[\n styles.iconContainer,\n isV3 && styles.v3IconContainer,\n isLegacyOrV3Shifting && {\n transform: [{ translateY }],\n },\n ]}\n >\n {isV3 && focused && (\n <Animated.View\n style={[\n styles.outline,\n {\n transform: [\n {\n scaleX: outlineScale,\n },\n ],\n backgroundColor: theme.colors.secondaryContainer,\n },\n activeIndicatorStyle,\n ]}\n />\n )}\n <Animated.View\n style={[\n styles.iconWrapper,\n isV3 && styles.v3IconWrapper,\n {\n opacity: isLegacyOrV3Shifting\n ? activeOpacity\n : v3ActiveOpacity,\n },\n ]}\n >\n {renderIcon ? (\n renderIcon({\n route,\n focused: true,\n color: activeTintColor,\n })\n ) : (\n <Icon\n source={route.focusedIcon as IconSource}\n color={activeTintColor}\n size={24}\n />\n )}\n </Animated.View>\n <Animated.View\n style={[\n styles.iconWrapper,\n isV3 && styles.v3IconWrapper,\n {\n opacity: isLegacyOrV3Shifting\n ? inactiveOpacity\n : v3InactiveOpacity,\n },\n ]}\n >\n {renderIcon ? (\n renderIcon({\n route,\n focused: false,\n color: inactiveTintColor,\n })\n ) : (\n <Icon\n source={\n theme.isV3 && route.unfocusedIcon !== undefined\n ? route.unfocusedIcon\n : (route.focusedIcon as IconSource)\n }\n color={inactiveTintColor}\n size={24}\n />\n )}\n </Animated.View>\n <View style={[styles.badgeContainer, badgeStyle]}>\n {typeof badge === 'boolean' ? (\n <Badge visible={badge} size={isV3 ? 6 : 8} />\n ) : (\n <Badge visible={badge != null} size={16}>\n {badge}\n </Badge>\n )}\n </View>\n </Animated.View>\n {labeled ? (\n <Animated.View\n style={[\n styles.labelContainer,\n !isV3 && { transform: [{ scale }] },\n ]}\n >\n <Animated.View\n style={[\n styles.labelWrapper,\n {\n opacity: isLegacyOrV3Shifting\n ? activeOpacity\n : v3ActiveOpacity,\n },\n ]}\n >\n {renderLabel ? (\n renderLabel({\n route,\n focused: true,\n color: activeLabelColor,\n })\n ) : (\n <Text\n maxFontSizeMultiplier={labelMaxFontSizeMultiplier}\n variant=\"labelMedium\"\n style={[\n styles.label,\n {\n color: activeLabelColor,\n ...font,\n },\n ]}\n >\n {getLabelText({ route })}\n </Text>\n )}\n </Animated.View>\n {shifting ? null : (\n <Animated.View\n style={[\n styles.labelWrapper,\n {\n opacity: isLegacyOrV3Shifting\n ? inactiveOpacity\n : v3InactiveOpacity,\n },\n ]}\n >\n {renderLabel ? (\n renderLabel({\n route,\n focused: false,\n color: inactiveLabelColor,\n })\n ) : (\n <Text\n maxFontSizeMultiplier={labelMaxFontSizeMultiplier}\n variant=\"labelMedium\"\n selectable={false}\n style={[\n styles.label,\n {\n color: inactiveLabelColor,\n ...font,\n },\n ]}\n >\n {getLabelText({ route })}\n </Text>\n )}\n </Animated.View>\n )}\n </Animated.View>\n ) : (\n !isV3 && <View style={styles.labelContainer} />\n )}\n </View>\n ),\n });\n })}\n </View>\n </Animated.View>\n </Surface>\n );\n};\n\nBottomNavigationBar.displayName = 'BottomNavigation.Bar';\n\nexport default BottomNavigationBar;\n\nconst styles = StyleSheet.create({\n bar: {\n left: 0,\n right: 0,\n bottom: 0,\n },\n barContent: {\n alignItems: 'center',\n overflow: 'hidden',\n },\n items: {\n flexDirection: 'row',\n ...(Platform.OS === 'web'\n ? {\n width: '100%',\n }\n : null),\n },\n item: {\n flex: 1,\n // Top padding is 6 and bottom padding is 10\n // The extra 4dp bottom padding is offset by label's height\n paddingVertical: 6,\n },\n v3Item: {\n paddingVertical: 0,\n },\n ripple: {\n position: 'absolute',\n },\n iconContainer: {\n height: 24,\n width: 24,\n marginTop: 2,\n marginHorizontal: 12,\n alignSelf: 'center',\n },\n v3IconContainer: {\n height: 32,\n width: 32,\n marginBottom: 4,\n marginTop: 0,\n justifyContent: 'center',\n },\n iconWrapper: {\n ...StyleSheet.absoluteFillObject,\n alignItems: 'center',\n },\n v3IconWrapper: {\n top: 4,\n },\n labelContainer: {\n height: 16,\n paddingBottom: 2,\n },\n labelWrapper: {\n ...StyleSheet.absoluteFillObject,\n },\n // eslint-disable-next-line react-native/no-color-literals\n label: {\n fontSize: 12,\n height: BAR_HEIGHT,\n textAlign: 'center',\n backgroundColor: 'transparent',\n ...(Platform.OS === 'web'\n ? {\n whiteSpace: 'nowrap',\n alignSelf: 'center',\n }\n : null),\n },\n badgeContainer: {\n position: 'absolute',\n left: 0,\n },\n v3TouchableContainer: {\n paddingTop: 12,\n paddingBottom: 16,\n },\n v3NoLabelContainer: {\n height: 80,\n justifyContent: 'center',\n alignItems: 'center',\n },\n outline: {\n width: OUTLINE_WIDTH,\n height: OUTLINE_WIDTH / 2,\n borderRadius: OUTLINE_WIDTH / 4,\n alignSelf: 'center',\n },\n elevation: {\n elevation: 4,\n },\n});\n"],"mappings":"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","ignoreList":[]},"metadata":{"hasCjsExports":false},"sourceType":"module","externalDependencies":[]}