repoweaver
Version:
A GitHub App that skillfully weaves multiple templates together to create and update repositories with intelligent merge strategies
1 lines • 76.3 kB
JSON
{"ast":null,"code":"import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"route\", \"style\", \"children\", \"borderless\", \"centered\", \"rippleColor\"],\n _excluded2 = [\"key\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\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\";\nvar MIN_RIPPLE_SCALE = 0.001;\nvar MIN_TAB_WIDTH = 96;\nvar MAX_TAB_WIDTH = 168;\nvar BAR_HEIGHT = 56;\nvar OUTLINE_WIDTH = 64;\nvar Touchable = function Touchable(_ref) {\n var _0 = _ref.route,\n style = _ref.style,\n children = _ref.children,\n borderless = _ref.borderless,\n centered = _ref.centered,\n rippleColor = _ref.rippleColor,\n rest = _objectWithoutProperties(_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};\nvar BottomNavigationBar = function BottomNavigationBar(_ref2) {\n var _ref0, _ref1, _ref10;\n var navigationState = _ref2.navigationState,\n renderIcon = _ref2.renderIcon,\n renderLabel = _ref2.renderLabel,\n _ref2$renderTouchable = _ref2.renderTouchable,\n renderTouchable = _ref2$renderTouchable === void 0 ? function (_ref3) {\n var key = _ref3.key,\n props = _objectWithoutProperties(_ref3, _excluded2);\n return React.createElement(Touchable, _extends({\n key: key\n }, props));\n } : _ref2$renderTouchable,\n _ref2$getLabelText = _ref2.getLabelText,\n getLabelText = _ref2$getLabelText === void 0 ? function (_ref4) {\n var route = _ref4.route;\n return route.title;\n } : _ref2$getLabelText,\n _ref2$getBadge = _ref2.getBadge,\n getBadge = _ref2$getBadge === void 0 ? function (_ref5) {\n var route = _ref5.route;\n return route.badge;\n } : _ref2$getBadge,\n _ref2$getColor = _ref2.getColor,\n getColor = _ref2$getColor === void 0 ? function (_ref6) {\n var route = _ref6.route;\n return route.color;\n } : _ref2$getColor,\n _ref2$getAccessibilit = _ref2.getAccessibilityLabel,\n getAccessibilityLabel = _ref2$getAccessibilit === void 0 ? function (_ref7) {\n var route = _ref7.route;\n return route.accessibilityLabel;\n } : _ref2$getAccessibilit,\n _ref2$getTestID = _ref2.getTestID,\n getTestID = _ref2$getTestID === void 0 ? function (_ref8) {\n var route = _ref8.route;\n return route.testID;\n } : _ref2$getTestID,\n activeColor = _ref2.activeColor,\n inactiveColor = _ref2.inactiveColor,\n _ref2$keyboardHidesNa = _ref2.keyboardHidesNavigationBar,\n keyboardHidesNavigationBar = _ref2$keyboardHidesNa === void 0 ? Platform.OS === 'android' : _ref2$keyboardHidesNa,\n style = _ref2.style,\n activeIndicatorStyle = _ref2.activeIndicatorStyle,\n _ref2$labeled = _ref2.labeled,\n labeled = _ref2$labeled === void 0 ? true : _ref2$labeled,\n animationEasing = _ref2.animationEasing,\n onTabPress = _ref2.onTabPress,\n onTabLongPress = _ref2.onTabLongPress,\n shiftingProp = _ref2.shifting,\n safeAreaInsets = _ref2.safeAreaInsets,\n _ref2$labelMaxFontSiz = _ref2.labelMaxFontSizeMultiplier,\n labelMaxFontSizeMultiplier = _ref2$labelMaxFontSiz === void 0 ? 1 : _ref2$labelMaxFontSiz,\n compactProp = _ref2.compact,\n _ref2$testID = _ref2.testID,\n testID = _ref2$testID === void 0 ? 'bottom-navigation-bar' : _ref2$testID,\n themeOverrides = _ref2.theme;\n var theme = useInternalTheme(themeOverrides);\n var _useSafeAreaInsets = useSafeAreaInsets(),\n bottom = _useSafeAreaInsets.bottom,\n left = _useSafeAreaInsets.left,\n right = _useSafeAreaInsets.right;\n var scale = theme.animation.scale;\n var compact = compactProp != null ? compactProp : !theme.isV3;\n var shifting = shiftingProp != null ? 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 var visibleAnim = useAnimatedValue(1);\n var tabsAnims = useAnimatedValueArray(navigationState.routes.map(function (_, i) {\n return i === navigationState.index ? 1 : 0;\n }));\n var indexAnim = useAnimatedValue(navigationState.index);\n var rippleAnim = useAnimatedValue(MIN_RIPPLE_SCALE);\n var _useLayout = useLayout(),\n _useLayout2 = _slicedToArray(_useLayout, 2),\n layout = _useLayout2[0],\n onLayout = _useLayout2[1];\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n keyboardVisible = _React$useState2[0],\n setKeyboardVisible = _React$useState2[1];\n var handleKeyboardShow = React.useCallback(function () {\n setKeyboardVisible(true);\n Animated.timing(visibleAnim, {\n toValue: 0,\n duration: 150 * scale,\n useNativeDriver: true\n }).start();\n }, [scale, visibleAnim]);\n var handleKeyboardHide = React.useCallback(function () {\n Animated.timing(visibleAnim, {\n toValue: 1,\n duration: 100 * scale,\n useNativeDriver: true\n }).start(function () {\n setKeyboardVisible(false);\n });\n }, [scale, visibleAnim]);\n var animateToIndex = React.useCallback(function (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 })].concat(_toConsumableArray(navigationState.routes.map(function (_, i) {\n return 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 })))).start(function () {\n tabsAnims.map(function (tab, i) {\n return tab.setValue(i === index ? 1 : 0);\n });\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(function () {\n animateToIndex(navigationState.index);\n }, []);\n useIsKeyboardShown({\n onShow: handleKeyboardShow,\n onHide: handleKeyboardHide\n });\n React.useEffect(function () {\n animateToIndex(navigationState.index);\n }, [navigationState.index, animateToIndex]);\n var eventForIndex = function eventForIndex(index) {\n var event = {\n route: navigationState.routes[index],\n defaultPrevented: false,\n preventDefault: function preventDefault() {\n event.defaultPrevented = true;\n }\n };\n return event;\n };\n var routes = navigationState.routes;\n var colors = theme.colors,\n isDarkTheme = theme.dark,\n mode = theme.mode,\n isV3 = theme.isV3;\n var _ref9 = StyleSheet.flatten(style) || {},\n customBackground = _ref9.backgroundColor,\n _ref9$elevation = _ref9.elevation,\n elevation = _ref9$elevation === void 0 ? 4 : _ref9$elevation;\n var 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 var v2BackgroundColorInterpolation = shifting ? indexAnim.interpolate({\n inputRange: routes.map(function (_, i) {\n return i;\n }),\n outputRange: routes.map(function (route) {\n return getColor({\n route: route\n }) || approxBackgroundColor;\n })\n }) : approxBackgroundColor;\n var backgroundColor = isV3 ? customBackground || theme.colors.elevation.level2 : shifting ? v2BackgroundColorInterpolation : approxBackgroundColor;\n var isDark = typeof approxBackgroundColor === 'string' ? !color(approxBackgroundColor).isLight() : true;\n var textColor = isDark ? white : black;\n var activeTintColor = getActiveTintColor({\n activeColor: activeColor,\n defaultColor: textColor,\n theme: theme\n });\n var inactiveTintColor = getInactiveTintColor({\n inactiveColor: inactiveColor,\n defaultColor: textColor,\n theme: theme\n });\n var touchColor = color(activeTintColor).alpha(0.12).rgb().string();\n var maxTabWidth = routes.length > 3 ? MIN_TAB_WIDTH : MAX_TAB_WIDTH;\n var maxTabBarWidth = maxTabWidth * routes.length;\n var rippleSize = layout.width / 4;\n var insets = {\n left: (_ref0 = safeAreaInsets === null || safeAreaInsets === void 0 ? void 0 : safeAreaInsets.left) != null ? _ref0 : left,\n right: (_ref1 = safeAreaInsets === null || safeAreaInsets === void 0 ? void 0 : safeAreaInsets.right) != null ? _ref1 : right,\n bottom: (_ref10 = safeAreaInsets === null || safeAreaInsets === void 0 ? void 0 : safeAreaInsets.bottom) != null ? _ref10 : 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: 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(function (route, index) {\n var focused = navigationState.index === index;\n var active = tabsAnims[index];\n var scale = labeled && shifting ? active.interpolate({\n inputRange: [0, 1],\n outputRange: [0.5, 1]\n }) : 1;\n var translateY = labeled ? shifting ? active.interpolate({\n inputRange: [0, 1],\n outputRange: [7, 0]\n }) : 0 : 7;\n var activeOpacity = active;\n var inactiveOpacity = active.interpolate({\n inputRange: [0, 1],\n outputRange: [1, 0]\n });\n var v3ActiveOpacity = focused ? 1 : 0;\n var v3InactiveOpacity = shifting ? inactiveOpacity : focused ? 0 : 1;\n var outlineScale = focused ? active.interpolate({\n inputRange: [0, 1],\n outputRange: [0.5, 1]\n }) : 0;\n var badge = getBadge({\n route: route\n });\n var activeLabelColor = getLabelColor({\n tintColor: activeTintColor,\n hasColor: Boolean(activeColor),\n focused: focused,\n defaultColor: textColor,\n theme: theme\n });\n var inactiveLabelColor = getLabelColor({\n tintColor: inactiveTintColor,\n hasColor: Boolean(inactiveColor),\n focused: focused,\n defaultColor: textColor,\n theme: theme\n });\n var 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 var isLegacyOrV3Shifting = !isV3 || isV3 && shifting && labeled;\n var font = isV3 ? theme.fonts.labelMedium : {};\n return renderTouchable({\n key: route.key,\n route: route,\n borderless: true,\n centered: true,\n rippleColor: isV3 ? 'transparent' : touchColor,\n onPress: function onPress() {\n return onTabPress(eventForIndex(index));\n },\n onLongPress: function onLongPress() {\n return onTabLongPress === null || onTabLongPress === void 0 ? void 0 : onTabLongPress(eventForIndex(index));\n },\n testID: getTestID({\n route: route\n }),\n accessibilityLabel: getAccessibilityLabel({\n route: 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: 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: 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: 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: scale\n }]\n }]\n }, React.createElement(Animated.View, {\n style: [styles.labelWrapper, {\n opacity: isLegacyOrV3Shifting ? activeOpacity : v3ActiveOpacity\n }]\n }, renderLabel ? renderLabel({\n route: route,\n focused: true,\n color: activeLabelColor\n }) : React.createElement(Text, {\n maxFontSizeMultiplier: labelMaxFontSizeMultiplier,\n variant: \"labelMedium\",\n style: [styles.label, _objectSpread({\n color: activeLabelColor\n }, font)]\n }, getLabelText({\n route: route\n }))), shifting ? null : React.createElement(Animated.View, {\n style: [styles.labelWrapper, {\n opacity: isLegacyOrV3Shifting ? inactiveOpacity : v3InactiveOpacity\n }]\n }, renderLabel ? renderLabel({\n route: route,\n focused: false,\n color: inactiveLabelColor\n }) : React.createElement(Text, {\n maxFontSizeMultiplier: labelMaxFontSizeMultiplier,\n variant: \"labelMedium\",\n selectable: false,\n style: [styles.label, _objectSpread({\n color: inactiveLabelColor\n }, font)]\n }, getLabelText({\n route: route\n })))) : !isV3 && React.createElement(View, {\n style: styles.labelContainer\n }))\n });\n }))));\n};\nBottomNavigationBar.displayName = 'BottomNavigation.Bar';\nexport default BottomNavigationBar;\nvar 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: _objectSpread({\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: _objectSpread(_objectSpread({}, StyleSheet.absoluteFillObject), {}, {\n alignItems: 'center'\n }),\n v3IconWrapper: {\n top: 4\n },\n labelContainer: {\n height: 16,\n paddingBottom: 2\n },\n labelWrapper: _objectSpread({}, StyleSheet.absoluteFillObject),\n label: _objectSpread({\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","_0","route","style","children","borderless","centered","rippleColor","rest","_objectWithoutProperties","_excluded","supported","createElement","_extends","disabled","undefined","BottomNavigationBar","_ref2","_ref0","_ref1","_ref10","navigationState","renderIcon","renderLabel","_ref2$renderTouchable","renderTouchable","_ref3","key","props","_excluded2","_ref2$getLabelText","getLabelText","_ref4","title","_ref2$getBadge","getBadge","_ref5","badge","_ref2$getColor","getColor","_ref6","_ref2$getAccessibilit","getAccessibilityLabel","_ref7","accessibilityLabel","_ref2$getTestID","getTestID","_ref8","testID","activeColor","inactiveColor","_ref2$keyboardHidesNa","keyboardHidesNavigationBar","OS","activeIndicatorStyle","_ref2$labeled","labeled","animationEasing","onTabPress","onTabLongPress","shiftingProp","shifting","safeAreaInsets","_ref2$labelMaxFontSiz","labelMaxFontSizeMultiplier","compactProp","compact","_ref2$testID","themeOverrides","theme","_useSafeAreaInsets","bottom","left","right","scale","animation","isV3","routes","length","console","warn","visibleAnim","tabsAnims","map","_","i","index","indexAnim","rippleAnim","_useLayout","_useLayout2","_slicedToArray","layout","onLayout","_React$useState","useState","_React$useState2","keyboardVisible","setKeyboardVisible","handleKeyboardShow","useCallback","timing","toValue","duration","useNativeDriver","start","handleKeyboardHide","animateToIndex","setValue","parallel","concat","_toConsumableArray","easing","tab","useEffect","onShow","onHide","eventForIndex","event","defaultPrevented","preventDefault","colors","isDarkTheme","dark","mode","_ref9","flatten","customBackground","backgroundColor","_ref9$elevation","elevation","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","_objectSpread","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":{},"sourceType":"module","externalDependencies":[]}