Skip to content

Commit

Permalink
refactor: hide config stuff in TypedNavigator (#11889)
Browse files Browse the repository at this point in the history
  • Loading branch information
Andarist committed Mar 12, 2024
1 parent afaa789 commit 8810790
Show file tree
Hide file tree
Showing 6 changed files with 34 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -91,10 +91,9 @@ export function createBottomTabNavigator<
};
Navigator: typeof BottomTabNavigator;
},
Config extends StaticConfig<TypeBag> = StaticConfig<TypeBag>,
>(
config?: Config
): TypedNavigator<TypeBag> &
(typeof config extends undefined ? {} : { config: Config }) {
Config extends StaticConfig<TypeBag> | undefined =
| StaticConfig<TypeBag>
| undefined,
>(config?: Config): TypedNavigator<TypeBag, Config> {
return createNavigatorFactory(BottomTabNavigator)(config);
}
24 changes: 14 additions & 10 deletions packages/core/src/types.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -861,16 +861,20 @@ export type NavigatorTypeBag<
Navigator: Navigator;
};

export type TypedNavigator<Bag extends NavigatorTypeBagBase> =
TypedNavigatorInternal<
Bag['ParamList'],
Bag['NavigatorID'],
Bag['State'],
Bag['ScreenOptions'],
Bag['EventMap'],
Bag['NavigationList'],
Bag['Navigator']
>;
export type TypedNavigator<
Bag extends NavigatorTypeBagBase,
Config = unknown,
> = TypedNavigatorInternal<
Bag['ParamList'],
Bag['NavigatorID'],
Bag['State'],
Bag['ScreenOptions'],
Bag['EventMap'],
Bag['NavigationList'],
Bag['Navigator']
> & {
config: undefined extends Config ? unknown : Config;
};

type TypedNavigatorInternal<
ParamList extends ParamListBase,
Expand Down
9 changes: 4 additions & 5 deletions packages/drawer/src/navigators/createDrawerNavigator.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -94,10 +94,9 @@ export function createDrawerNavigator<
};
Navigator: typeof DrawerNavigator;
},
Config extends StaticConfig<TypeBag> = StaticConfig<TypeBag>,
>(
config?: Config
): TypedNavigator<TypeBag> &
(typeof config extends undefined ? {} : { config: Config }) {
Config extends StaticConfig<TypeBag> | undefined =
| StaticConfig<TypeBag>
| undefined,
>(config?: Config): TypedNavigator<TypeBag, Config> {
return createNavigatorFactory(DrawerNavigator)(config);
}
Original file line number Diff line number Diff line change
Expand Up @@ -91,10 +91,9 @@ export function createMaterialTopTabNavigator<
};
Navigator: typeof MaterialTopTabNavigator;
},
Config extends StaticConfig<TypeBag> = StaticConfig<TypeBag>,
>(
config?: Config
): TypedNavigator<TypeBag> &
(typeof config extends undefined ? {} : { config: Config }) {
Config extends StaticConfig<TypeBag> | undefined =
| StaticConfig<TypeBag>
| undefined,
>(config?: Config): TypedNavigator<TypeBag, Config> {
return createNavigatorFactory(MaterialTopTabNavigator)(config);
}
Original file line number Diff line number Diff line change
Expand Up @@ -105,10 +105,9 @@ export function createNativeStackNavigator<
};
Navigator: typeof NativeStackNavigator;
},
Config extends StaticConfig<TypeBag> = StaticConfig<TypeBag>,
>(
config?: Config
): TypedNavigator<TypeBag> &
(typeof config extends undefined ? {} : { config: Config }) {
Config extends StaticConfig<TypeBag> | undefined =
| StaticConfig<TypeBag>
| undefined,
>(config?: Config): TypedNavigator<TypeBag, Config> {
return createNavigatorFactory(NativeStackNavigator)(config);
}
9 changes: 4 additions & 5 deletions packages/stack/src/navigators/createStackNavigator.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -124,10 +124,9 @@ export function createStackNavigator<
};
Navigator: typeof StackNavigator;
},
Config extends StaticConfig<TypeBag> = StaticConfig<TypeBag>,
>(
config?: Config
): TypedNavigator<TypeBag> &
(typeof config extends undefined ? {} : { config: Config }) {
Config extends StaticConfig<TypeBag> | undefined =
| StaticConfig<TypeBag>
| undefined,
>(config?: Config): TypedNavigator<TypeBag, Config> {
return createNavigatorFactory(StackNavigator)(config);
}

0 comments on commit 8810790

Please sign in to comment.