1+ import { RouteConfigWithResolveSubRoutes , ScreenProps } from '../../types' ;
12import {
23 createNavigatorScreenComponent ,
34 getNavigatorFn ,
45 resolveNavigatorScreenOptions ,
56 resolveRouteOptions ,
7+ stubNavigationObject ,
68} from '../../helpers' ;
79import { resolveThunk , useBlueBase , useIntl , useTheme } from '@bluebase/core' ;
810
911import { NavigatorProps as CoreNavigatorProps } from '@bluebase/components' ;
1012import React from 'react' ;
11- import { RouteConfigWithResolveSubRoutes } from '../../types' ;
1213
1314export interface NavigatorProps extends CoreNavigatorProps { }
1415
@@ -18,11 +19,12 @@ export interface NavigatorProps extends CoreNavigatorProps {}
1819 * @param props
1920 */
2021export const Navigator = ( props : NavigatorProps ) => {
22+ const { type, routes, ...rest } = props ;
23+
2124 const BB = useBlueBase ( ) ;
22- const theme = useTheme ( ) ;
25+ const themes = useTheme ( ) ;
2326 const intl = useIntl ( ) ;
24-
25- const { type, routes } = props ;
27+ const screenProps : ScreenProps = { BB , intl, themes, theme : themes . theme } ;
2628
2729 const NavigatorComponent = getNavigatorFn ( type ) ;
2830
@@ -31,14 +33,14 @@ export const Navigator = (props: NavigatorProps) => {
3133 }
3234
3335 // If routes is a thunk, resolve it
34- const resolvedRoutes = resolveThunk < RouteConfigWithResolveSubRoutes [ ] > ( routes as any , {
35- BB ,
36- intl,
37- theme,
38- } ) ;
36+ const resolvedRoutes = resolveThunk < RouteConfigWithResolveSubRoutes [ ] > (
37+ routes as any ,
38+ screenProps
39+ ) ;
3940
40- function renderRoute ( route : RouteConfigWithResolveSubRoutes ) {
41- const options = resolveRouteOptions ( route , BB ) ;
41+ const renderRoute = ( route : RouteConfigWithResolveSubRoutes ) => {
42+ // We're not able to resovle navigation object here. Open to better ideas.
43+ const options = resolveRouteOptions ( route , { navigation : stubNavigationObject , screenProps } ) ;
4244
4345 return (
4446 < NavigatorComponent . Screen
@@ -48,10 +50,10 @@ export const Navigator = (props: NavigatorProps) => {
4850 options = { options }
4951 />
5052 ) ;
51- }
53+ } ;
5254
5355 return (
54- < NavigatorComponent . Navigator screenOptions = { resolveNavigatorScreenOptions ( props , BB ) } >
56+ < NavigatorComponent . Navigator screenOptions = { resolveNavigatorScreenOptions ( props ) } { ... rest } >
5557 { resolvedRoutes . map ( renderRoute ) }
5658 </ NavigatorComponent . Navigator >
5759 ) ;
0 commit comments