UNPKG

one

Version:

One is a React framework for web, iOS, and Android apps.

39 lines (34 loc) • 1.14 kB
import type { BottomTabNavigationOptions } from '@react-navigation/bottom-tabs' type NativeTabsScreen = { name?: string options?: BottomTabNavigationOptions | ((props: any) => BottomTabNavigationOptions) } export function processNativeTabsScreens<T extends NativeTabsScreen>(screens: T[]): T[] { return screens.map((screen) => { if (typeof screen.options === 'function') { const getOptions = screen.options return { ...screen, options: (props: any) => { const options = getOptions(props) assertNoNativeTabsHref(screen.name, options) return options }, } } assertNoNativeTabsHref(screen.name, screen.options) return screen }) as T[] } function assertNoNativeTabsHref( screenName: string | undefined, options: BottomTabNavigationOptions | undefined ) { if (options && 'href' in options) { throw new Error( `Tabs.Screen "${screenName ?? ''}" uses the web-only href option. ` + 'Native tabs use the route name. Put non-tab routes in a parent Stack, ' + 'and move custom href options to a .web layout.' ) } }