Files
Fluxup_PAP/node_modules/expo-router/build/layouts/TabsClient.js
2026-03-10 16:18:05 +00:00

57 lines
2.5 KiB
JavaScript

"use strict";
'use client';
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const bottom_tabs_1 = require("@react-navigation/bottom-tabs");
const react_1 = __importDefault(require("react"));
const react_native_1 = require("react-native");
const withLayoutContext_1 = require("./withLayoutContext");
const Link_1 = require("../link/Link");
const TabRouter_1 = require("./TabRouter");
const Protected_1 = require("../views/Protected");
// This is the only way to access the navigator.
const BottomTabNavigator = (0, bottom_tabs_1.createBottomTabNavigator)().Navigator;
const ExpoTabs = (0, withLayoutContext_1.withLayoutContext)(BottomTabNavigator, (screens) => {
// Support the `href` shortcut prop.
return screens.map((screen) => {
if (typeof screen.options !== 'function' && screen.options?.href !== undefined) {
const { href, ...options } = screen.options;
if (options.tabBarButton) {
throw new Error('Cannot use `href` and `tabBarButton` together.');
}
return {
...screen,
options: {
...options,
tabBarItemStyle: href == null ? { display: 'none' } : options.tabBarItemStyle,
// @ts-expect-error: TODO(@kitten): This isn't properly typed
tabBarButton: (props) => {
if (href == null) {
return null;
}
const children = react_native_1.Platform.OS === 'web' ? props.children : <react_native_1.Pressable>{props.children}</react_native_1.Pressable>;
// TODO: React Navigation types these props as Animated.WithAnimatedValue<StyleProp<ViewStyle>>
// While Link expects a TextStyle. We need to reconcile these types.
return (<Link_1.Link {...props} style={[{ display: 'flex' }, props.style]} href={href} asChild={react_native_1.Platform.OS !== 'web'} children={children}/>);
},
},
};
}
return screen;
});
});
/**
* Renders a tabs navigator.
*
* @hideType
*/
const Tabs = Object.assign((props) => {
return <ExpoTabs {...props} UNSTABLE_router={TabRouter_1.tabRouterOverride}/>;
}, {
Screen: ExpoTabs.Screen,
Protected: Protected_1.Protected,
});
exports.default = Tabs;
//# sourceMappingURL=TabsClient.js.map