@react-navigation/core 7.0.0-alpha.1 → 7.0.0-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/BaseNavigationContainer.js +25 -30
- package/lib/commonjs/BaseNavigationContainer.js.map +1 -1
- package/lib/commonjs/CurrentRenderContext.js +3 -4
- package/lib/commonjs/CurrentRenderContext.js.map +1 -1
- package/lib/commonjs/DeprecatedNavigationInChildContext.js +3 -4
- package/lib/commonjs/DeprecatedNavigationInChildContext.js.map +1 -1
- package/lib/commonjs/EnsureSingleNavigator.js +3 -4
- package/lib/commonjs/EnsureSingleNavigator.js.map +1 -1
- package/lib/commonjs/Group.js.map +1 -1
- package/lib/commonjs/NavigationBuilderContext.js +3 -4
- package/lib/commonjs/NavigationBuilderContext.js.map +1 -1
- package/lib/commonjs/NavigationContainerRefContext.js +3 -4
- package/lib/commonjs/NavigationContainerRefContext.js.map +1 -1
- package/lib/commonjs/NavigationContext.js +3 -4
- package/lib/commonjs/NavigationContext.js.map +1 -1
- package/lib/commonjs/NavigationHelpersContext.js +3 -4
- package/lib/commonjs/NavigationHelpersContext.js.map +1 -1
- package/lib/commonjs/NavigationIndependentTree.js +2 -2
- package/lib/commonjs/NavigationIndependentTree.js.map +1 -1
- package/lib/commonjs/NavigationIndependentTreeContext.js +3 -4
- package/lib/commonjs/NavigationIndependentTreeContext.js.map +1 -1
- package/lib/commonjs/NavigationRouteContext.js +3 -4
- package/lib/commonjs/NavigationRouteContext.js.map +1 -1
- package/lib/commonjs/NavigationStateContext.js +3 -4
- package/lib/commonjs/NavigationStateContext.js.map +1 -1
- package/lib/commonjs/PreventRemoveContext.js +8 -4
- package/lib/commonjs/PreventRemoveContext.js.map +1 -1
- package/lib/commonjs/PreventRemoveProvider.js +8 -10
- package/lib/commonjs/PreventRemoveProvider.js.map +1 -1
- package/lib/commonjs/SceneView.js +2 -2
- package/lib/commonjs/SceneView.js.map +1 -1
- package/lib/commonjs/Screen.js.map +1 -1
- package/lib/commonjs/StaticContainer.js +3 -4
- package/lib/commonjs/StaticContainer.js.map +1 -1
- package/lib/commonjs/StaticNavigation.js +34 -7
- package/lib/commonjs/StaticNavigation.js.map +1 -1
- package/lib/commonjs/UnhandledActionContext.js +3 -4
- package/lib/commonjs/UnhandledActionContext.js.map +1 -1
- package/lib/commonjs/checkDuplicateRouteNames.js +1 -2
- package/lib/commonjs/checkDuplicateRouteNames.js.map +1 -1
- package/lib/commonjs/checkSerializable.js.map +1 -1
- package/lib/commonjs/createNavigationContainerRef.js +1 -2
- package/lib/commonjs/createNavigationContainerRef.js.map +1 -1
- package/lib/commonjs/createNavigatorFactory.js +0 -3
- package/lib/commonjs/createNavigatorFactory.js.map +1 -1
- package/lib/commonjs/findFocusedRoute.js +2 -4
- package/lib/commonjs/findFocusedRoute.js.map +1 -1
- package/lib/commonjs/getActionFromState.js +6 -8
- package/lib/commonjs/getActionFromState.js.map +1 -1
- package/lib/commonjs/getFocusedRouteNameFromRoute.js +1 -1
- package/lib/commonjs/getFocusedRouteNameFromRoute.js.map +1 -1
- package/lib/commonjs/getPathFromState.js +25 -22
- package/lib/commonjs/getPathFromState.js.map +1 -1
- package/lib/commonjs/getStateFromPath.js +63 -21
- package/lib/commonjs/getStateFromPath.js.map +1 -1
- package/lib/commonjs/index.js +27 -3
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/isArrayEqual.js.map +1 -1
- package/lib/commonjs/isRecordEqual.js.map +1 -1
- package/lib/commonjs/theming/ThemeContext.js +12 -0
- package/lib/commonjs/theming/ThemeContext.js.map +1 -0
- package/lib/commonjs/theming/ThemeProvider.js +20 -0
- package/lib/commonjs/theming/ThemeProvider.js.map +1 -0
- package/lib/commonjs/theming/useTheme.js +18 -0
- package/lib/commonjs/theming/useTheme.js.map +1 -0
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/useChildListeners.js +2 -2
- package/lib/commonjs/useChildListeners.js.map +1 -1
- package/lib/commonjs/useComponent.js +2 -2
- package/lib/commonjs/useComponent.js.map +1 -1
- package/lib/commonjs/useCurrentRender.js +2 -2
- package/lib/commonjs/useCurrentRender.js.map +1 -1
- package/lib/commonjs/useDescriptors.js +83 -31
- package/lib/commonjs/useDescriptors.js.map +1 -1
- package/lib/commonjs/useEventEmitter.js +5 -6
- package/lib/commonjs/useEventEmitter.js.map +1 -1
- package/lib/commonjs/useFocusEffect.js +4 -2
- package/lib/commonjs/useFocusEffect.js.map +1 -1
- package/lib/commonjs/useFocusEvents.js +4 -4
- package/lib/commonjs/useFocusEvents.js.map +1 -1
- package/lib/commonjs/useFocusedListenersChildrenAdapter.js +3 -3
- package/lib/commonjs/useFocusedListenersChildrenAdapter.js.map +1 -1
- package/lib/commonjs/useIsFocused.js +5 -4
- package/lib/commonjs/useIsFocused.js.map +1 -1
- package/lib/commonjs/useIsomorphicLayoutEffect.js +12 -0
- package/lib/commonjs/useIsomorphicLayoutEffect.js.map +1 -0
- package/lib/commonjs/useIsomorphicLayoutEffect.native.js +9 -0
- package/lib/commonjs/useIsomorphicLayoutEffect.native.js.map +1 -0
- package/lib/commonjs/useKeyedChildListeners.js +2 -2
- package/lib/commonjs/useKeyedChildListeners.js.map +1 -1
- package/lib/commonjs/useNavigation.js +2 -2
- package/lib/commonjs/useNavigation.js.map +1 -1
- package/lib/commonjs/useNavigationBuilder.js +81 -68
- package/lib/commonjs/useNavigationBuilder.js.map +1 -1
- package/lib/commonjs/useNavigationCache.js +57 -16
- package/lib/commonjs/useNavigationCache.js.map +1 -1
- package/lib/commonjs/useNavigationContainerRef.js +2 -2
- package/lib/commonjs/useNavigationContainerRef.js.map +1 -1
- package/lib/commonjs/useNavigationHelpers.js +4 -5
- package/lib/commonjs/useNavigationHelpers.js.map +1 -1
- package/lib/commonjs/useNavigationIndependentTree.js +2 -2
- package/lib/commonjs/useNavigationIndependentTree.js.map +1 -1
- package/lib/commonjs/useNavigationState.js +2 -2
- package/lib/commonjs/useNavigationState.js.map +1 -1
- package/lib/commonjs/useOnAction.js +6 -4
- package/lib/commonjs/useOnAction.js.map +1 -1
- package/lib/commonjs/useOnGetState.js +4 -5
- package/lib/commonjs/useOnGetState.js.map +1 -1
- package/lib/commonjs/useOnPreventRemove.js +5 -6
- package/lib/commonjs/useOnPreventRemove.js.map +1 -1
- package/lib/commonjs/useOnRouteFocus.js +2 -2
- package/lib/commonjs/useOnRouteFocus.js.map +1 -1
- package/lib/commonjs/useOptionsGetters.js +9 -10
- package/lib/commonjs/useOptionsGetters.js.map +1 -1
- package/lib/commonjs/usePreventRemove.js +5 -5
- package/lib/commonjs/usePreventRemove.js.map +1 -1
- package/lib/commonjs/usePreventRemoveContext.js +2 -2
- package/lib/commonjs/usePreventRemoveContext.js.map +1 -1
- package/lib/commonjs/useRegisterNavigator.js +2 -2
- package/lib/commonjs/useRegisterNavigator.js.map +1 -1
- package/lib/commonjs/useRoute.js +2 -2
- package/lib/commonjs/useRoute.js.map +1 -1
- package/lib/commonjs/useRouteCache.js +19 -16
- package/lib/commonjs/useRouteCache.js.map +1 -1
- package/lib/commonjs/useSyncState.js +27 -56
- package/lib/commonjs/useSyncState.js.map +1 -1
- package/lib/commonjs/validatePathConfig.js +37 -10
- package/lib/commonjs/validatePathConfig.js.map +1 -1
- package/lib/module/BaseNavigationContainer.js +22 -26
- package/lib/module/BaseNavigationContainer.js.map +1 -1
- package/lib/module/CurrentRenderContext.js.map +1 -1
- package/lib/module/DeprecatedNavigationInChildContext.js.map +1 -1
- package/lib/module/EnsureSingleNavigator.js.map +1 -1
- package/lib/module/Group.js.map +1 -1
- package/lib/module/NavigationBuilderContext.js.map +1 -1
- package/lib/module/NavigationContainerRefContext.js.map +1 -1
- package/lib/module/NavigationContext.js.map +1 -1
- package/lib/module/NavigationHelpersContext.js.map +1 -1
- package/lib/module/NavigationIndependentTree.js.map +1 -1
- package/lib/module/NavigationIndependentTreeContext.js.map +1 -1
- package/lib/module/NavigationRouteContext.js.map +1 -1
- package/lib/module/NavigationStateContext.js.map +1 -1
- package/lib/module/PreventRemoveContext.js.map +1 -1
- package/lib/module/PreventRemoveProvider.js +6 -8
- package/lib/module/PreventRemoveProvider.js.map +1 -1
- package/lib/module/SceneView.js.map +1 -1
- package/lib/module/Screen.js.map +1 -1
- package/lib/module/StaticContainer.js.map +1 -1
- package/lib/module/StaticNavigation.js +27 -5
- package/lib/module/StaticNavigation.js.map +1 -1
- package/lib/module/UnhandledActionContext.js.map +1 -1
- package/lib/module/checkDuplicateRouteNames.js +1 -2
- package/lib/module/checkDuplicateRouteNames.js.map +1 -1
- package/lib/module/checkSerializable.js.map +1 -1
- package/lib/module/createNavigationContainerRef.js.map +1 -1
- package/lib/module/createNavigatorFactory.js +0 -3
- package/lib/module/createNavigatorFactory.js.map +1 -1
- package/lib/module/findFocusedRoute.js +2 -4
- package/lib/module/findFocusedRoute.js.map +1 -1
- package/lib/module/getActionFromState.js +6 -8
- package/lib/module/getActionFromState.js.map +1 -1
- package/lib/module/getFocusedRouteNameFromRoute.js +1 -1
- package/lib/module/getFocusedRouteNameFromRoute.js.map +1 -1
- package/lib/module/getPathFromState.js +23 -20
- package/lib/module/getPathFromState.js.map +1 -1
- package/lib/module/getStateFromPath.js +61 -19
- package/lib/module/getStateFromPath.js.map +1 -1
- package/lib/module/index.js +4 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/isArrayEqual.js.map +1 -1
- package/lib/module/isRecordEqual.js.map +1 -1
- package/lib/module/theming/ThemeContext.js +4 -0
- package/lib/module/theming/ThemeContext.js.map +1 -0
- package/lib/module/theming/ThemeProvider.js +12 -0
- package/lib/module/theming/ThemeProvider.js.map +1 -0
- package/lib/module/theming/useTheme.js +10 -0
- package/lib/module/theming/useTheme.js.map +1 -0
- package/lib/module/types.js.map +1 -1
- package/lib/module/useChildListeners.js.map +1 -1
- package/lib/module/useComponent.js.map +1 -1
- package/lib/module/useCurrentRender.js.map +1 -1
- package/lib/module/useDescriptors.js +81 -29
- package/lib/module/useDescriptors.js.map +1 -1
- package/lib/module/useEventEmitter.js +3 -4
- package/lib/module/useEventEmitter.js.map +1 -1
- package/lib/module/useFocusEffect.js +2 -0
- package/lib/module/useFocusEffect.js.map +1 -1
- package/lib/module/useFocusEvents.js +2 -2
- package/lib/module/useFocusEvents.js.map +1 -1
- package/lib/module/useFocusedListenersChildrenAdapter.js +1 -1
- package/lib/module/useFocusedListenersChildrenAdapter.js.map +1 -1
- package/lib/module/useIsFocused.js.map +1 -1
- package/lib/module/useIsomorphicLayoutEffect.js +7 -0
- package/lib/module/useIsomorphicLayoutEffect.js.map +1 -0
- package/lib/module/useIsomorphicLayoutEffect.native.js +3 -0
- package/lib/module/useIsomorphicLayoutEffect.native.js.map +1 -0
- package/lib/module/useKeyedChildListeners.js.map +1 -1
- package/lib/module/useNavigation.js.map +1 -1
- package/lib/module/useNavigationBuilder.js +78 -66
- package/lib/module/useNavigationBuilder.js.map +1 -1
- package/lib/module/useNavigationCache.js +55 -14
- package/lib/module/useNavigationCache.js.map +1 -1
- package/lib/module/useNavigationContainerRef.js.map +1 -1
- package/lib/module/useNavigationHelpers.js +2 -3
- package/lib/module/useNavigationHelpers.js.map +1 -1
- package/lib/module/useNavigationIndependentTree.js.map +1 -1
- package/lib/module/useNavigationState.js.map +1 -1
- package/lib/module/useOnAction.js +4 -2
- package/lib/module/useOnAction.js.map +1 -1
- package/lib/module/useOnGetState.js +2 -3
- package/lib/module/useOnGetState.js.map +1 -1
- package/lib/module/useOnPreventRemove.js +3 -4
- package/lib/module/useOnPreventRemove.js.map +1 -1
- package/lib/module/useOnRouteFocus.js.map +1 -1
- package/lib/module/useOptionsGetters.js +7 -8
- package/lib/module/useOptionsGetters.js.map +1 -1
- package/lib/module/usePreventRemove.js +2 -2
- package/lib/module/usePreventRemove.js.map +1 -1
- package/lib/module/usePreventRemoveContext.js.map +1 -1
- package/lib/module/useRegisterNavigator.js.map +1 -1
- package/lib/module/useRoute.js.map +1 -1
- package/lib/module/useRouteCache.js +16 -12
- package/lib/module/useRouteCache.js.map +1 -1
- package/lib/module/useSyncState.js +25 -54
- package/lib/module/useSyncState.js.map +1 -1
- package/lib/module/validatePathConfig.js +37 -10
- package/lib/module/validatePathConfig.js.map +1 -1
- package/lib/typescript/src/BaseNavigationContainer.d.ts +2 -1
- package/lib/typescript/src/BaseNavigationContainer.d.ts.map +1 -1
- package/lib/typescript/src/EnsureSingleNavigator.d.ts +1 -1
- package/lib/typescript/src/EnsureSingleNavigator.d.ts.map +1 -1
- package/lib/typescript/src/NavigationContext.d.ts +1 -17
- package/lib/typescript/src/NavigationContext.d.ts.map +1 -1
- package/lib/typescript/src/NavigationHelpersContext.d.ts +1 -1
- package/lib/typescript/src/NavigationHelpersContext.d.ts.map +1 -1
- package/lib/typescript/src/NavigationIndependentTree.d.ts +1 -1
- package/lib/typescript/src/NavigationIndependentTree.d.ts.map +1 -1
- package/lib/typescript/src/NavigationRouteContext.d.ts +1 -1
- package/lib/typescript/src/NavigationRouteContext.d.ts.map +1 -1
- package/lib/typescript/src/NavigationStateContext.d.ts +2 -18
- package/lib/typescript/src/NavigationStateContext.d.ts.map +1 -1
- package/lib/typescript/src/PreventRemoveProvider.d.ts +1 -1
- package/lib/typescript/src/PreventRemoveProvider.d.ts.map +1 -1
- package/lib/typescript/src/SceneView.d.ts +2 -2
- package/lib/typescript/src/SceneView.d.ts.map +1 -1
- package/lib/typescript/src/StaticNavigation.d.ts +12 -5
- package/lib/typescript/src/StaticNavigation.d.ts.map +1 -1
- package/lib/typescript/src/createNavigatorFactory.d.ts.map +1 -1
- package/lib/typescript/src/findFocusedRoute.d.ts +1 -9
- package/lib/typescript/src/findFocusedRoute.d.ts.map +1 -1
- package/lib/typescript/src/getPathFromState.d.ts +1 -0
- package/lib/typescript/src/getPathFromState.d.ts.map +1 -1
- package/lib/typescript/src/getStateFromPath.d.ts +1 -0
- package/lib/typescript/src/getStateFromPath.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +5 -2
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/theming/ThemeContext.d.ts +3 -0
- package/lib/typescript/src/theming/ThemeContext.d.ts.map +1 -0
- package/lib/typescript/src/theming/ThemeProvider.d.ts +8 -0
- package/lib/typescript/src/theming/ThemeProvider.d.ts.map +1 -0
- package/lib/typescript/src/theming/useTheme.d.ts +2 -0
- package/lib/typescript/src/theming/useTheme.d.ts.map +1 -0
- package/lib/typescript/src/types.d.ts +80 -1
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/lib/typescript/src/useComponent.d.ts +1 -1
- package/lib/typescript/src/useComponent.d.ts.map +1 -1
- package/lib/typescript/src/useDescriptors.d.ts +107 -59
- package/lib/typescript/src/useDescriptors.d.ts.map +1 -1
- package/lib/typescript/src/useFocusEffect.d.ts.map +1 -1
- package/lib/typescript/src/useFocusedListenersChildrenAdapter.d.ts +1 -1
- package/lib/typescript/src/useFocusedListenersChildrenAdapter.d.ts.map +1 -1
- package/lib/typescript/src/useIsomorphicLayoutEffect.d.ts +6 -0
- package/lib/typescript/src/useIsomorphicLayoutEffect.d.ts.map +1 -0
- package/lib/typescript/src/useIsomorphicLayoutEffect.native.d.ts +3 -0
- package/lib/typescript/src/useIsomorphicLayoutEffect.native.d.ts.map +1 -0
- package/lib/typescript/src/useNavigation.d.ts +4 -1
- package/lib/typescript/src/useNavigation.d.ts.map +1 -1
- package/lib/typescript/src/useNavigationBuilder.d.ts +99 -63
- package/lib/typescript/src/useNavigationBuilder.d.ts.map +1 -1
- package/lib/typescript/src/useNavigationCache.d.ts +53 -3
- package/lib/typescript/src/useNavigationCache.d.ts.map +1 -1
- package/lib/typescript/src/useNavigationHelpers.d.ts +25 -55
- package/lib/typescript/src/useNavigationHelpers.d.ts.map +1 -1
- package/lib/typescript/src/useOnAction.d.ts +1 -1
- package/lib/typescript/src/useOnAction.d.ts.map +1 -1
- package/lib/typescript/src/useOnGetState.d.ts +1 -1
- package/lib/typescript/src/useOnGetState.d.ts.map +1 -1
- package/lib/typescript/src/useOnPreventRemove.d.ts +1 -1
- package/lib/typescript/src/useOnPreventRemove.d.ts.map +1 -1
- package/lib/typescript/src/usePreventRemove.d.ts +1 -1
- package/lib/typescript/src/usePreventRemove.d.ts.map +1 -1
- package/lib/typescript/src/useRouteCache.d.ts +1 -1
- package/lib/typescript/src/useRouteCache.d.ts.map +1 -1
- package/lib/typescript/src/useSyncState.d.ts +1 -4
- package/lib/typescript/src/useSyncState.d.ts.map +1 -1
- package/lib/typescript/src/validatePathConfig.d.ts +1 -1
- package/lib/typescript/src/validatePathConfig.d.ts.map +1 -1
- package/lib/typescript/utils/usePrevious.d.ts +6 -0
- package/lib/typescript/utils/usePrevious.d.ts.map +1 -0
- package/package.json +14 -14
- package/src/BaseNavigationContainer.tsx +35 -36
- package/src/Group.tsx +1 -1
- package/src/PreventRemoveProvider.tsx +4 -1
- package/src/SceneView.tsx +1 -1
- package/src/Screen.tsx +1 -1
- package/src/StaticNavigation.tsx +34 -32
- package/src/checkDuplicateRouteNames.tsx +1 -1
- package/src/createNavigationContainerRef.tsx +1 -1
- package/src/createNavigatorFactory.tsx +2 -4
- package/src/getActionFromState.tsx +1 -1
- package/src/getFocusedRouteNameFromRoute.tsx +3 -3
- package/src/getPathFromState.tsx +20 -12
- package/src/getStateFromPath.tsx +80 -19
- package/src/index.tsx +6 -3
- package/src/theming/ThemeContext.tsx +7 -0
- package/src/theming/ThemeProvider.tsx +14 -0
- package/src/theming/useTheme.tsx +15 -0
- package/src/types.tsx +133 -17
- package/src/useDescriptors.tsx +153 -59
- package/src/useFocusEffect.tsx +1 -0
- package/src/useFocusedListenersChildrenAdapter.tsx +2 -2
- package/src/useIsomorphicLayoutEffect.native.tsx +3 -0
- package/src/useIsomorphicLayoutEffect.tsx +7 -0
- package/src/useNavigation.tsx +4 -1
- package/src/useNavigationBuilder.tsx +123 -100
- package/src/useNavigationCache.tsx +91 -30
- package/src/useNavigationContainerRef.tsx +1 -1
- package/src/useNavigationHelpers.tsx +6 -7
- package/src/useOnAction.tsx +8 -3
- package/src/useOnGetState.tsx +1 -1
- package/src/useOnPreventRemove.tsx +1 -1
- package/src/useOptionsGetters.tsx +2 -2
- package/src/usePreventRemove.tsx +1 -1
- package/src/useRouteCache.tsx +17 -16
- package/src/useSyncState.tsx +31 -59
- package/src/validatePathConfig.tsx +58 -14
- package/lib/commonjs/fromEntries.js +0 -18
- package/lib/commonjs/fromEntries.js.map +0 -1
- package/lib/commonjs/useScheduleUpdate.js +0 -37
- package/lib/commonjs/useScheduleUpdate.js.map +0 -1
- package/lib/module/fromEntries.js +0 -12
- package/lib/module/fromEntries.js.map +0 -1
- package/lib/module/useScheduleUpdate.js +0 -27
- package/lib/module/useScheduleUpdate.js.map +0 -1
- package/lib/typescript/src/fromEntries.d.ts +0 -2
- package/lib/typescript/src/fromEntries.d.ts.map +0 -1
- package/lib/typescript/src/useScheduleUpdate.d.ts +0 -14
- package/lib/typescript/src/useScheduleUpdate.d.ts.map +0 -1
- package/src/fromEntries.tsx +0 -11
- package/src/useScheduleUpdate.tsx +0 -32
package/src/useDescriptors.tsx
CHANGED
|
@@ -2,18 +2,20 @@ import type {
|
|
|
2
2
|
NavigationAction,
|
|
3
3
|
NavigationState,
|
|
4
4
|
ParamListBase,
|
|
5
|
+
PartialState,
|
|
5
6
|
Router,
|
|
6
7
|
} from '@react-navigation/routers';
|
|
7
8
|
import * as React from 'react';
|
|
8
9
|
|
|
9
10
|
import {
|
|
10
|
-
AddKeyedListener,
|
|
11
|
-
AddListener,
|
|
11
|
+
type AddKeyedListener,
|
|
12
|
+
type AddListener,
|
|
12
13
|
NavigationBuilderContext,
|
|
13
14
|
} from './NavigationBuilderContext';
|
|
14
15
|
import { NavigationContext } from './NavigationContext';
|
|
15
16
|
import { NavigationRouteContext } from './NavigationRouteContext';
|
|
16
17
|
import { SceneView } from './SceneView';
|
|
18
|
+
import { ThemeContext } from './theming/ThemeContext';
|
|
17
19
|
import type {
|
|
18
20
|
Descriptor,
|
|
19
21
|
EventMapBase,
|
|
@@ -29,24 +31,33 @@ import { useRouteCache } from './useRouteCache';
|
|
|
29
31
|
export type ScreenConfigWithParent<
|
|
30
32
|
State extends NavigationState,
|
|
31
33
|
ScreenOptions extends {},
|
|
32
|
-
EventMap extends EventMapBase
|
|
34
|
+
EventMap extends EventMapBase,
|
|
33
35
|
> = {
|
|
34
36
|
keys: (string | undefined)[];
|
|
35
37
|
options: (ScreenOptionsOrCallback<ScreenOptions> | undefined)[] | undefined;
|
|
38
|
+
layout: ScreenLayout | undefined;
|
|
36
39
|
props: RouteConfig<ParamListBase, string, State, ScreenOptions, EventMap>;
|
|
37
40
|
};
|
|
38
41
|
|
|
42
|
+
type ScreenLayout = (props: {
|
|
43
|
+
route: RouteProp<ParamListBase, string>;
|
|
44
|
+
navigation: any;
|
|
45
|
+
theme: ReactNavigation.Theme;
|
|
46
|
+
children: React.ReactElement;
|
|
47
|
+
}) => React.ReactElement;
|
|
48
|
+
|
|
39
49
|
type ScreenOptionsOrCallback<ScreenOptions extends {}> =
|
|
40
50
|
| ScreenOptions
|
|
41
51
|
| ((props: {
|
|
42
52
|
route: RouteProp<ParamListBase, string>;
|
|
43
53
|
navigation: any;
|
|
54
|
+
theme: ReactNavigation.Theme;
|
|
44
55
|
}) => ScreenOptions);
|
|
45
56
|
|
|
46
57
|
type Options<
|
|
47
58
|
State extends NavigationState,
|
|
48
59
|
ScreenOptions extends {},
|
|
49
|
-
EventMap extends EventMapBase
|
|
60
|
+
EventMap extends EventMapBase,
|
|
50
61
|
> = {
|
|
51
62
|
state: State;
|
|
52
63
|
screens: Record<
|
|
@@ -54,14 +65,8 @@ type Options<
|
|
|
54
65
|
ScreenConfigWithParent<State, ScreenOptions, EventMap>
|
|
55
66
|
>;
|
|
56
67
|
navigation: NavigationHelpers<ParamListBase>;
|
|
57
|
-
screenOptions
|
|
58
|
-
|
|
59
|
-
| ScreenOptions
|
|
60
|
-
| ((props: {
|
|
61
|
-
route: RouteProp<ParamListBase>;
|
|
62
|
-
navigation: any;
|
|
63
|
-
options: ScreenOptions;
|
|
64
|
-
}) => ScreenOptions);
|
|
68
|
+
screenOptions: ScreenOptionsOrCallback<ScreenOptions> | undefined;
|
|
69
|
+
screenLayout: ScreenLayout | undefined;
|
|
65
70
|
onAction: (action: NavigationAction) => boolean;
|
|
66
71
|
getState: () => State;
|
|
67
72
|
setState: (state: State) => void;
|
|
@@ -84,13 +89,13 @@ export function useDescriptors<
|
|
|
84
89
|
State extends NavigationState,
|
|
85
90
|
ActionHelpers extends Record<string, () => void>,
|
|
86
91
|
ScreenOptions extends {},
|
|
87
|
-
EventMap extends EventMapBase
|
|
92
|
+
EventMap extends EventMapBase,
|
|
88
93
|
>({
|
|
89
94
|
state,
|
|
90
95
|
screens,
|
|
91
96
|
navigation,
|
|
92
97
|
screenOptions,
|
|
93
|
-
|
|
98
|
+
screenLayout,
|
|
94
99
|
onAction,
|
|
95
100
|
getState,
|
|
96
101
|
setState,
|
|
@@ -100,6 +105,7 @@ export function useDescriptors<
|
|
|
100
105
|
router,
|
|
101
106
|
emitter,
|
|
102
107
|
}: Options<State, ScreenOptions, EventMap>) {
|
|
108
|
+
const theme = React.useContext(ThemeContext);
|
|
103
109
|
const [options, setOptions] = React.useState<Record<string, ScreenOptions>>(
|
|
104
110
|
{}
|
|
105
111
|
);
|
|
@@ -130,7 +136,12 @@ export function useDescriptors<
|
|
|
130
136
|
]
|
|
131
137
|
);
|
|
132
138
|
|
|
133
|
-
const navigations = useNavigationCache<
|
|
139
|
+
const { base, navigations } = useNavigationCache<
|
|
140
|
+
State,
|
|
141
|
+
ScreenOptions,
|
|
142
|
+
EventMap,
|
|
143
|
+
ActionHelpers
|
|
144
|
+
>({
|
|
134
145
|
state,
|
|
135
146
|
getState,
|
|
136
147
|
navigation,
|
|
@@ -141,27 +152,20 @@ export function useDescriptors<
|
|
|
141
152
|
|
|
142
153
|
const routes = useRouteCache(state.routes);
|
|
143
154
|
|
|
144
|
-
|
|
145
|
-
|
|
155
|
+
const getOptions = (
|
|
156
|
+
route: RouteProp<ParamListBase, string>,
|
|
157
|
+
navigation: NavigationProp<
|
|
158
|
+
ParamListBase,
|
|
146
159
|
string,
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
ScreenOptions,
|
|
155
|
-
EventMap
|
|
156
|
-
> &
|
|
157
|
-
ActionHelpers,
|
|
158
|
-
RouteProp<ParamListBase>
|
|
159
|
-
>
|
|
160
|
-
>
|
|
161
|
-
>((acc, route, i) => {
|
|
160
|
+
string | undefined,
|
|
161
|
+
State,
|
|
162
|
+
ScreenOptions,
|
|
163
|
+
EventMap
|
|
164
|
+
>,
|
|
165
|
+
overrides: Record<string, ScreenOptions>
|
|
166
|
+
) => {
|
|
162
167
|
const config = screens[route.name];
|
|
163
168
|
const screen = config.props;
|
|
164
|
-
const navigation = navigations[route.key];
|
|
165
169
|
|
|
166
170
|
const optionsList = [
|
|
167
171
|
// The default `screenOptions` passed to the navigator
|
|
@@ -173,30 +177,35 @@ export function useDescriptors<
|
|
|
173
177
|
// The `options` prop passed to `Screen` elements,
|
|
174
178
|
screen.options,
|
|
175
179
|
// The options set via `navigation.setOptions`
|
|
176
|
-
|
|
180
|
+
overrides,
|
|
177
181
|
];
|
|
178
182
|
|
|
179
|
-
|
|
183
|
+
return optionsList.reduce<ScreenOptions>(
|
|
180
184
|
(acc, curr) =>
|
|
181
185
|
Object.assign(
|
|
182
186
|
acc,
|
|
183
187
|
// @ts-expect-error: we check for function but TS still complains
|
|
184
|
-
typeof curr !== 'function' ? curr : curr({ route, navigation })
|
|
188
|
+
typeof curr !== 'function' ? curr : curr({ route, navigation, theme })
|
|
185
189
|
),
|
|
186
190
|
{} as ScreenOptions
|
|
187
191
|
);
|
|
192
|
+
};
|
|
188
193
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
194
|
+
const render = (
|
|
195
|
+
route: RouteProp<ParamListBase, string>,
|
|
196
|
+
navigation: NavigationProp<
|
|
197
|
+
ParamListBase,
|
|
198
|
+
string,
|
|
199
|
+
string | undefined,
|
|
200
|
+
State,
|
|
201
|
+
ScreenOptions,
|
|
202
|
+
EventMap
|
|
203
|
+
>,
|
|
204
|
+
customOptions: ScreenOptions,
|
|
205
|
+
routeState: NavigationState | PartialState<NavigationState> | undefined
|
|
206
|
+
) => {
|
|
207
|
+
const config = screens[route.name];
|
|
208
|
+
const screen = config.props;
|
|
200
209
|
|
|
201
210
|
const clearOptions = () =>
|
|
202
211
|
setOptions((o) => {
|
|
@@ -209,24 +218,74 @@ export function useDescriptors<
|
|
|
209
218
|
return o;
|
|
210
219
|
});
|
|
211
220
|
|
|
212
|
-
const
|
|
221
|
+
const layout =
|
|
222
|
+
// The `layout` prop passed to `Screen` elements,
|
|
223
|
+
screen.layout ??
|
|
224
|
+
// The `screenLayout` props passed to `Group` elements
|
|
225
|
+
config.layout ??
|
|
226
|
+
// The default `screenLayout` passed to the navigator
|
|
227
|
+
screenLayout;
|
|
228
|
+
|
|
229
|
+
let element = (
|
|
230
|
+
<SceneView
|
|
231
|
+
navigation={navigation}
|
|
232
|
+
route={route}
|
|
233
|
+
screen={screen}
|
|
234
|
+
routeState={routeState}
|
|
235
|
+
getState={getState}
|
|
236
|
+
setState={setState}
|
|
237
|
+
options={customOptions}
|
|
238
|
+
clearOptions={clearOptions}
|
|
239
|
+
/>
|
|
240
|
+
);
|
|
241
|
+
|
|
242
|
+
if (layout != null) {
|
|
243
|
+
element = layout({
|
|
244
|
+
route,
|
|
245
|
+
navigation,
|
|
246
|
+
// @ts-expect-error: in practice `theme` will be defined
|
|
247
|
+
theme,
|
|
248
|
+
children: element,
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
return (
|
|
213
253
|
<NavigationBuilderContext.Provider key={route.key} value={context}>
|
|
214
254
|
<NavigationContext.Provider value={navigation}>
|
|
215
255
|
<NavigationRouteContext.Provider value={route}>
|
|
216
|
-
|
|
217
|
-
navigation={navigation}
|
|
218
|
-
route={route}
|
|
219
|
-
screen={screen}
|
|
220
|
-
routeState={state.routes[i].state}
|
|
221
|
-
getState={getState}
|
|
222
|
-
setState={setState}
|
|
223
|
-
options={mergedOptions}
|
|
224
|
-
clearOptions={clearOptions}
|
|
225
|
-
/>
|
|
256
|
+
{element}
|
|
226
257
|
</NavigationRouteContext.Provider>
|
|
227
258
|
</NavigationContext.Provider>
|
|
228
259
|
</NavigationBuilderContext.Provider>
|
|
229
260
|
);
|
|
261
|
+
};
|
|
262
|
+
|
|
263
|
+
const descriptors = routes.reduce<
|
|
264
|
+
Record<
|
|
265
|
+
string,
|
|
266
|
+
Descriptor<
|
|
267
|
+
ScreenOptions,
|
|
268
|
+
NavigationProp<
|
|
269
|
+
ParamListBase,
|
|
270
|
+
string,
|
|
271
|
+
string | undefined,
|
|
272
|
+
State,
|
|
273
|
+
ScreenOptions,
|
|
274
|
+
EventMap
|
|
275
|
+
> &
|
|
276
|
+
ActionHelpers,
|
|
277
|
+
RouteProp<ParamListBase>
|
|
278
|
+
>
|
|
279
|
+
>
|
|
280
|
+
>((acc, route, i) => {
|
|
281
|
+
const navigation = navigations[route.key];
|
|
282
|
+
const customOptions = getOptions(route, navigation, options[route.key]);
|
|
283
|
+
const element = render(
|
|
284
|
+
route,
|
|
285
|
+
navigation,
|
|
286
|
+
customOptions,
|
|
287
|
+
state.routes[i].state
|
|
288
|
+
);
|
|
230
289
|
|
|
231
290
|
acc[route.key] = {
|
|
232
291
|
route,
|
|
@@ -235,9 +294,44 @@ export function useDescriptors<
|
|
|
235
294
|
render() {
|
|
236
295
|
return element;
|
|
237
296
|
},
|
|
238
|
-
options:
|
|
297
|
+
options: customOptions as ScreenOptions,
|
|
239
298
|
};
|
|
240
299
|
|
|
241
300
|
return acc;
|
|
242
301
|
}, {});
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* Create a descriptor object for a route.
|
|
305
|
+
*
|
|
306
|
+
* @param route Route object for which the descriptor should be created
|
|
307
|
+
* @param placeholder Whether the descriptor should be a placeholder, e.g. for a route not yet in the state
|
|
308
|
+
* @returns Descriptor object
|
|
309
|
+
*/
|
|
310
|
+
const describe = (route: RouteProp<ParamListBase>, placeholder: boolean) => {
|
|
311
|
+
if (!placeholder) {
|
|
312
|
+
if (!(route.key in descriptors)) {
|
|
313
|
+
throw new Error(`Couldn't find a route with the key ${route.key}.`);
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
return descriptors[route.key];
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
const navigation = base;
|
|
320
|
+
const customOptions = getOptions(route, navigation, {});
|
|
321
|
+
const element = render(route, navigation, customOptions, undefined);
|
|
322
|
+
|
|
323
|
+
return {
|
|
324
|
+
route,
|
|
325
|
+
navigation,
|
|
326
|
+
render() {
|
|
327
|
+
return element;
|
|
328
|
+
},
|
|
329
|
+
options: customOptions as ScreenOptions,
|
|
330
|
+
};
|
|
331
|
+
};
|
|
332
|
+
|
|
333
|
+
return {
|
|
334
|
+
describe,
|
|
335
|
+
descriptors,
|
|
336
|
+
};
|
|
243
337
|
}
|
package/src/useFocusEffect.tsx
CHANGED
|
@@ -14,6 +14,7 @@ type EffectCallback = () => undefined | void | (() => void);
|
|
|
14
14
|
export function useFocusEffect(effect: EffectCallback) {
|
|
15
15
|
const navigation = useNavigation();
|
|
16
16
|
|
|
17
|
+
// eslint-disable-next-line prefer-rest-params
|
|
17
18
|
if (arguments[1] !== undefined) {
|
|
18
19
|
const message =
|
|
19
20
|
"You passed a second argument to 'useFocusEffect', but it only accepts one argument. " +
|
|
@@ -2,8 +2,8 @@ import type { ParamListBase } from '@react-navigation/routers';
|
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
|
|
4
4
|
import {
|
|
5
|
-
FocusedNavigationCallback,
|
|
6
|
-
FocusedNavigationListener,
|
|
5
|
+
type FocusedNavigationCallback,
|
|
6
|
+
type FocusedNavigationListener,
|
|
7
7
|
NavigationBuilderContext,
|
|
8
8
|
} from './NavigationBuilderContext';
|
|
9
9
|
import type { NavigationHelpers } from './types';
|
package/src/useNavigation.tsx
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type NavigationState } from '@react-navigation/routers';
|
|
1
2
|
import * as React from 'react';
|
|
2
3
|
|
|
3
4
|
import { NavigationContainerRefContext } from './NavigationContainerRefContext';
|
|
@@ -10,7 +11,9 @@ import type { NavigationProp } from './types';
|
|
|
10
11
|
* @returns Navigation prop of the parent screen.
|
|
11
12
|
*/
|
|
12
13
|
export function useNavigation<
|
|
13
|
-
T = NavigationProp<ReactNavigation.RootParamList>
|
|
14
|
+
T = Omit<NavigationProp<ReactNavigation.RootParamList>, 'getState'> & {
|
|
15
|
+
getState(): NavigationState | undefined;
|
|
16
|
+
},
|
|
14
17
|
>(): T {
|
|
15
18
|
const root = React.useContext(NavigationContainerRefContext);
|
|
16
19
|
const navigation = React.useContext(NavigationContext);
|