@react-navigation/core 6.4.4 → 6.4.6
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 +17 -69
- package/lib/commonjs/BaseNavigationContainer.js.map +1 -1
- package/lib/commonjs/CurrentRenderContext.js +0 -4
- package/lib/commonjs/CurrentRenderContext.js.map +1 -1
- package/lib/commonjs/EnsureSingleNavigator.js +1 -12
- package/lib/commonjs/EnsureSingleNavigator.js.map +1 -1
- package/lib/commonjs/Group.js +0 -1
- package/lib/commonjs/Group.js.map +1 -1
- package/lib/commonjs/NavigationBuilderContext.js +0 -4
- package/lib/commonjs/NavigationBuilderContext.js.map +1 -1
- package/lib/commonjs/NavigationContainerRefContext.js +0 -4
- package/lib/commonjs/NavigationContainerRefContext.js.map +1 -1
- package/lib/commonjs/NavigationContext.js +0 -4
- package/lib/commonjs/NavigationContext.js.map +1 -1
- package/lib/commonjs/NavigationHelpersContext.js +0 -4
- package/lib/commonjs/NavigationHelpersContext.js.map +1 -1
- package/lib/commonjs/NavigationRouteContext.js +0 -4
- package/lib/commonjs/NavigationRouteContext.js.map +1 -1
- package/lib/commonjs/NavigationStateContext.js +0 -12
- package/lib/commonjs/NavigationStateContext.js.map +1 -1
- package/lib/commonjs/PreventRemoveContext.js +0 -4
- package/lib/commonjs/PreventRemoveContext.js.map +1 -1
- package/lib/commonjs/PreventRemoveProvider.js +3 -21
- package/lib/commonjs/PreventRemoveProvider.js.map +1 -1
- package/lib/commonjs/SceneView.js +8 -13
- package/lib/commonjs/SceneView.js.map +1 -1
- package/lib/commonjs/Screen.js +0 -1
- package/lib/commonjs/Screen.js.map +1 -1
- package/lib/commonjs/StaticContainer.js +0 -10
- package/lib/commonjs/StaticContainer.js.map +1 -1
- package/lib/commonjs/UnhandledActionContext.js +0 -4
- package/lib/commonjs/UnhandledActionContext.js.map +1 -1
- package/lib/commonjs/checkDuplicateRouteNames.js +0 -5
- package/lib/commonjs/checkDuplicateRouteNames.js.map +1 -1
- package/lib/commonjs/checkSerializable.js +0 -9
- package/lib/commonjs/checkSerializable.js.map +1 -1
- package/lib/commonjs/createNavigationContainerRef.js +0 -13
- package/lib/commonjs/createNavigationContainerRef.js.map +1 -1
- package/lib/commonjs/createNavigatorFactory.js +0 -5
- package/lib/commonjs/createNavigatorFactory.js.map +1 -1
- package/lib/commonjs/findFocusedRoute.js +5 -10
- package/lib/commonjs/findFocusedRoute.js.map +1 -1
- package/lib/commonjs/fromEntries.js +0 -3
- package/lib/commonjs/fromEntries.js.map +1 -1
- package/lib/commonjs/getActionFromState.js +11 -22
- package/lib/commonjs/getActionFromState.js.map +1 -1
- package/lib/commonjs/getFocusedRouteNameFromRoute.js +7 -8
- package/lib/commonjs/getFocusedRouteNameFromRoute.js.map +1 -1
- package/lib/commonjs/getPathFromState.js +25 -55
- package/lib/commonjs/getPathFromState.js.map +1 -1
- package/lib/commonjs/getStateFromPath.js +48 -105
- package/lib/commonjs/getStateFromPath.js.map +1 -1
- package/lib/commonjs/index.js +0 -30
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/isArrayEqual.js +0 -3
- package/lib/commonjs/isArrayEqual.js.map +1 -1
- package/lib/commonjs/isRecordEqual.js +0 -4
- package/lib/commonjs/isRecordEqual.js.map +1 -1
- package/lib/commonjs/types.js +3 -5
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/useChildListeners.js +0 -5
- package/lib/commonjs/useChildListeners.js.map +1 -1
- package/lib/commonjs/useComponent.js +3 -9
- package/lib/commonjs/useComponent.js.map +1 -1
- package/lib/commonjs/useCurrentRender.js +0 -7
- package/lib/commonjs/useCurrentRender.js.map +1 -1
- package/lib/commonjs/useDescriptors.js +11 -21
- package/lib/commonjs/useDescriptors.js.map +1 -1
- package/lib/commonjs/useEventEmitter.js +2 -24
- package/lib/commonjs/useEventEmitter.js.map +1 -1
- package/lib/commonjs/useFocusEffect.js +2 -20
- package/lib/commonjs/useFocusEffect.js.map +1 -1
- package/lib/commonjs/useFocusEvents.js +9 -15
- package/lib/commonjs/useFocusEvents.js.map +1 -1
- package/lib/commonjs/useFocusedListenersChildrenAdapter.js +0 -8
- package/lib/commonjs/useFocusedListenersChildrenAdapter.js.map +1 -1
- package/lib/commonjs/useIsFocused.js +0 -8
- package/lib/commonjs/useIsFocused.js.map +1 -1
- package/lib/commonjs/useKeyedChildListeners.js +0 -4
- package/lib/commonjs/useKeyedChildListeners.js.map +1 -1
- package/lib/commonjs/useNavigation.js +3 -11
- package/lib/commonjs/useNavigation.js.map +1 -1
- package/lib/commonjs/useNavigationBuilder.js +34 -91
- package/lib/commonjs/useNavigationBuilder.js.map +1 -1
- package/lib/commonjs/useNavigationCache.js +18 -30
- package/lib/commonjs/useNavigationCache.js.map +1 -1
- package/lib/commonjs/useNavigationContainerRef.js +0 -8
- package/lib/commonjs/useNavigationContainerRef.js.map +1 -1
- package/lib/commonjs/useNavigationHelpers.js +4 -18
- package/lib/commonjs/useNavigationHelpers.js.map +1 -1
- package/lib/commonjs/useNavigationState.js +5 -9
- package/lib/commonjs/useNavigationState.js.map +1 -1
- package/lib/commonjs/useOnAction.js +8 -25
- package/lib/commonjs/useOnAction.js.map +1 -1
- package/lib/commonjs/useOnGetState.js +6 -16
- package/lib/commonjs/useOnGetState.js.map +1 -1
- package/lib/commonjs/useOnPreventRemove.js +9 -24
- package/lib/commonjs/useOnPreventRemove.js.map +1 -1
- package/lib/commonjs/useOnRouteFocus.js +0 -8
- package/lib/commonjs/useOnRouteFocus.js.map +1 -1
- package/lib/commonjs/useOptionsGetters.js +5 -24
- package/lib/commonjs/useOptionsGetters.js.map +1 -1
- package/lib/commonjs/usePreventRemove.js +0 -11
- package/lib/commonjs/usePreventRemove.js.map +1 -1
- package/lib/commonjs/usePreventRemoveContext.js +0 -8
- package/lib/commonjs/usePreventRemoveContext.js.map +1 -1
- package/lib/commonjs/useRegisterNavigator.js +0 -8
- package/lib/commonjs/useRegisterNavigator.js.map +1 -1
- package/lib/commonjs/useRoute.js +0 -8
- package/lib/commonjs/useRoute.js.map +1 -1
- package/lib/commonjs/useRouteCache.js +1 -10
- package/lib/commonjs/useRouteCache.js.map +1 -1
- package/lib/commonjs/useScheduleUpdate.js +1 -8
- package/lib/commonjs/useScheduleUpdate.js.map +1 -1
- package/lib/commonjs/useSyncState.js +9 -17
- package/lib/commonjs/useSyncState.js.map +1 -1
- package/lib/commonjs/validatePathConfig.js +0 -7
- package/lib/commonjs/validatePathConfig.js.map +1 -1
- package/lib/module/BaseNavigationContainer.js +17 -46
- package/lib/module/BaseNavigationContainer.js.map +1 -1
- package/lib/module/CurrentRenderContext.js +1 -1
- package/lib/module/CurrentRenderContext.js.map +1 -1
- package/lib/module/EnsureSingleNavigator.js +1 -7
- package/lib/module/EnsureSingleNavigator.js.map +1 -1
- package/lib/module/Group.js.map +1 -1
- package/lib/module/NavigationBuilderContext.js +0 -1
- package/lib/module/NavigationBuilderContext.js.map +1 -1
- package/lib/module/NavigationContainerRefContext.js +0 -1
- package/lib/module/NavigationContainerRefContext.js.map +1 -1
- package/lib/module/NavigationContext.js +0 -1
- package/lib/module/NavigationContext.js.map +1 -1
- package/lib/module/NavigationHelpersContext.js +0 -1
- package/lib/module/NavigationHelpersContext.js.map +1 -1
- package/lib/module/NavigationRouteContext.js +1 -1
- package/lib/module/NavigationRouteContext.js.map +1 -1
- package/lib/module/NavigationStateContext.js +0 -6
- package/lib/module/NavigationStateContext.js.map +1 -1
- package/lib/module/PreventRemoveContext.js +1 -0
- package/lib/module/PreventRemoveContext.js.map +1 -1
- package/lib/module/PreventRemoveProvider.js +3 -12
- package/lib/module/PreventRemoveProvider.js.map +1 -1
- package/lib/module/SceneView.js +8 -5
- package/lib/module/SceneView.js.map +1 -1
- package/lib/module/Screen.js.map +1 -1
- package/lib/module/StaticContainer.js +1 -6
- package/lib/module/StaticContainer.js.map +1 -1
- package/lib/module/UnhandledActionContext.js.map +1 -1
- package/lib/module/checkDuplicateRouteNames.js +0 -4
- package/lib/module/checkDuplicateRouteNames.js.map +1 -1
- package/lib/module/checkSerializable.js +0 -8
- package/lib/module/checkSerializable.js.map +1 -1
- package/lib/module/createNavigationContainerRef.js +0 -10
- package/lib/module/createNavigationContainerRef.js.map +1 -1
- package/lib/module/createNavigatorFactory.js +0 -2
- package/lib/module/createNavigatorFactory.js.map +1 -1
- package/lib/module/findFocusedRoute.js +5 -9
- package/lib/module/findFocusedRoute.js.map +1 -1
- package/lib/module/fromEntries.js +0 -2
- package/lib/module/fromEntries.js.map +1 -1
- package/lib/module/getActionFromState.js +11 -21
- package/lib/module/getActionFromState.js.map +1 -1
- package/lib/module/getFocusedRouteNameFromRoute.js +7 -6
- package/lib/module/getFocusedRouteNameFromRoute.js.map +1 -1
- package/lib/module/getPathFromState.js +25 -49
- package/lib/module/getPathFromState.js.map +1 -1
- package/lib/module/getStateFromPath.js +48 -98
- package/lib/module/getStateFromPath.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/isArrayEqual.js +0 -2
- package/lib/module/isArrayEqual.js.map +1 -1
- package/lib/module/isRecordEqual.js +0 -3
- package/lib/module/isRecordEqual.js.map +1 -1
- package/lib/module/types.js +3 -3
- package/lib/module/types.js.map +1 -1
- package/lib/module/useChildListeners.js +0 -2
- package/lib/module/useChildListeners.js.map +1 -1
- package/lib/module/useComponent.js +3 -6
- package/lib/module/useComponent.js.map +1 -1
- package/lib/module/useCurrentRender.js +0 -2
- package/lib/module/useCurrentRender.js.map +1 -1
- package/lib/module/useDescriptors.js +11 -11
- package/lib/module/useDescriptors.js.map +1 -1
- package/lib/module/useEventEmitter.js +2 -21
- package/lib/module/useEventEmitter.js.map +1 -1
- package/lib/module/useFocusEffect.js +2 -15
- package/lib/module/useFocusEffect.js.map +1 -1
- package/lib/module/useFocusEvents.js +9 -10
- package/lib/module/useFocusEvents.js.map +1 -1
- package/lib/module/useFocusedListenersChildrenAdapter.js +0 -3
- package/lib/module/useFocusedListenersChildrenAdapter.js.map +1 -1
- package/lib/module/useIsFocused.js +1 -3
- package/lib/module/useIsFocused.js.map +1 -1
- package/lib/module/useKeyedChildListeners.js +0 -1
- package/lib/module/useKeyedChildListeners.js.map +1 -1
- package/lib/module/useNavigation.js +3 -5
- package/lib/module/useNavigation.js.map +1 -1
- package/lib/module/useNavigationBuilder.js +37 -63
- package/lib/module/useNavigationBuilder.js.map +1 -1
- package/lib/module/useNavigationCache.js +18 -24
- package/lib/module/useNavigationCache.js.map +1 -1
- package/lib/module/useNavigationContainerRef.js +0 -2
- package/lib/module/useNavigationContainerRef.js.map +1 -1
- package/lib/module/useNavigationHelpers.js +4 -9
- package/lib/module/useNavigationHelpers.js.map +1 -1
- package/lib/module/useNavigationState.js +5 -4
- package/lib/module/useNavigationState.js.map +1 -1
- package/lib/module/useOnAction.js +8 -19
- package/lib/module/useOnAction.js.map +1 -1
- package/lib/module/useOnGetState.js +6 -8
- package/lib/module/useOnGetState.js.map +1 -1
- package/lib/module/useOnPreventRemove.js +9 -14
- package/lib/module/useOnPreventRemove.js.map +1 -1
- package/lib/module/useOnRouteFocus.js +0 -3
- package/lib/module/useOnRouteFocus.js.map +1 -1
- package/lib/module/useOptionsGetters.js +5 -17
- package/lib/module/useOptionsGetters.js.map +1 -1
- package/lib/module/usePreventRemove.js +1 -2
- package/lib/module/usePreventRemove.js.map +1 -1
- package/lib/module/usePreventRemoveContext.js +0 -2
- package/lib/module/usePreventRemoveContext.js.map +1 -1
- package/lib/module/useRegisterNavigator.js +1 -3
- package/lib/module/useRegisterNavigator.js.map +1 -1
- package/lib/module/useRoute.js +0 -3
- package/lib/module/useRoute.js.map +1 -1
- package/lib/module/useRouteCache.js +1 -6
- package/lib/module/useRouteCache.js.map +1 -1
- package/lib/module/useScheduleUpdate.js +1 -3
- package/lib/module/useScheduleUpdate.js.map +1 -1
- package/lib/module/useSyncState.js +9 -13
- package/lib/module/useSyncState.js.map +1 -1
- package/lib/module/validatePathConfig.js +0 -6
- package/lib/module/validatePathConfig.js.map +1 -1
- package/lib/typescript/src/BaseNavigationContainer.d.ts +1 -0
- package/lib/typescript/src/BaseNavigationContainer.d.ts.map +1 -0
- package/lib/typescript/src/CurrentRenderContext.d.ts +1 -0
- package/lib/typescript/src/CurrentRenderContext.d.ts.map +1 -0
- package/lib/typescript/src/EnsureSingleNavigator.d.ts +1 -0
- package/lib/typescript/src/EnsureSingleNavigator.d.ts.map +1 -0
- package/lib/typescript/src/Group.d.ts +1 -0
- package/lib/typescript/src/Group.d.ts.map +1 -0
- package/lib/typescript/src/NavigationBuilderContext.d.ts +1 -0
- package/lib/typescript/src/NavigationBuilderContext.d.ts.map +1 -0
- package/lib/typescript/src/NavigationContainerRefContext.d.ts +1 -0
- package/lib/typescript/src/NavigationContainerRefContext.d.ts.map +1 -0
- package/lib/typescript/src/NavigationContext.d.ts +1 -0
- package/lib/typescript/src/NavigationContext.d.ts.map +1 -0
- package/lib/typescript/src/NavigationHelpersContext.d.ts +1 -0
- package/lib/typescript/src/NavigationHelpersContext.d.ts.map +1 -0
- package/lib/typescript/src/NavigationRouteContext.d.ts +1 -0
- package/lib/typescript/src/NavigationRouteContext.d.ts.map +1 -0
- package/lib/typescript/src/NavigationStateContext.d.ts +1 -0
- package/lib/typescript/src/NavigationStateContext.d.ts.map +1 -0
- package/lib/typescript/src/PreventRemoveContext.d.ts +1 -0
- package/lib/typescript/src/PreventRemoveContext.d.ts.map +1 -0
- package/lib/typescript/src/PreventRemoveProvider.d.ts +1 -0
- package/lib/typescript/src/PreventRemoveProvider.d.ts.map +1 -0
- package/lib/typescript/src/SceneView.d.ts +1 -0
- package/lib/typescript/src/SceneView.d.ts.map +1 -0
- package/lib/typescript/src/Screen.d.ts +1 -0
- package/lib/typescript/src/Screen.d.ts.map +1 -0
- package/lib/typescript/src/StaticContainer.d.ts +1 -0
- package/lib/typescript/src/StaticContainer.d.ts.map +1 -0
- package/lib/typescript/src/UnhandledActionContext.d.ts +1 -0
- package/lib/typescript/src/UnhandledActionContext.d.ts.map +1 -0
- package/lib/typescript/src/checkDuplicateRouteNames.d.ts +1 -0
- package/lib/typescript/src/checkDuplicateRouteNames.d.ts.map +1 -0
- package/lib/typescript/src/checkSerializable.d.ts +1 -0
- package/lib/typescript/src/checkSerializable.d.ts.map +1 -0
- package/lib/typescript/src/createNavigationContainerRef.d.ts +1 -0
- package/lib/typescript/src/createNavigationContainerRef.d.ts.map +1 -0
- package/lib/typescript/src/createNavigatorFactory.d.ts +1 -0
- package/lib/typescript/src/createNavigatorFactory.d.ts.map +1 -0
- package/lib/typescript/src/findFocusedRoute.d.ts +1 -0
- package/lib/typescript/src/findFocusedRoute.d.ts.map +1 -0
- package/lib/typescript/src/fromEntries.d.ts +1 -0
- package/lib/typescript/src/fromEntries.d.ts.map +1 -0
- package/lib/typescript/src/getActionFromState.d.ts +1 -0
- package/lib/typescript/src/getActionFromState.d.ts.map +1 -0
- package/lib/typescript/src/getFocusedRouteNameFromRoute.d.ts +1 -0
- package/lib/typescript/src/getFocusedRouteNameFromRoute.d.ts.map +1 -0
- package/lib/typescript/src/getPathFromState.d.ts +1 -0
- package/lib/typescript/src/getPathFromState.d.ts.map +1 -0
- package/lib/typescript/src/getStateFromPath.d.ts +1 -0
- package/lib/typescript/src/getStateFromPath.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +1 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/isArrayEqual.d.ts +1 -0
- package/lib/typescript/src/isArrayEqual.d.ts.map +1 -0
- package/lib/typescript/src/isRecordEqual.d.ts +1 -0
- package/lib/typescript/src/isRecordEqual.d.ts.map +1 -0
- package/lib/typescript/src/types.d.ts +1 -9
- package/lib/typescript/src/types.d.ts.map +1 -0
- package/lib/typescript/src/useChildListeners.d.ts +1 -0
- package/lib/typescript/src/useChildListeners.d.ts.map +1 -0
- package/lib/typescript/src/useComponent.d.ts +1 -0
- package/lib/typescript/src/useComponent.d.ts.map +1 -0
- package/lib/typescript/src/useCurrentRender.d.ts +1 -0
- package/lib/typescript/src/useCurrentRender.d.ts.map +1 -0
- package/lib/typescript/src/useDescriptors.d.ts +1 -0
- package/lib/typescript/src/useDescriptors.d.ts.map +1 -0
- package/lib/typescript/src/useEventEmitter.d.ts +1 -0
- package/lib/typescript/src/useEventEmitter.d.ts.map +1 -0
- package/lib/typescript/src/useFocusEffect.d.ts +1 -0
- package/lib/typescript/src/useFocusEffect.d.ts.map +1 -0
- package/lib/typescript/src/useFocusEvents.d.ts +1 -0
- package/lib/typescript/src/useFocusEvents.d.ts.map +1 -0
- package/lib/typescript/src/useFocusedListenersChildrenAdapter.d.ts +1 -0
- package/lib/typescript/src/useFocusedListenersChildrenAdapter.d.ts.map +1 -0
- package/lib/typescript/src/useIsFocused.d.ts +1 -0
- package/lib/typescript/src/useIsFocused.d.ts.map +1 -0
- package/lib/typescript/src/useKeyedChildListeners.d.ts +1 -0
- package/lib/typescript/src/useKeyedChildListeners.d.ts.map +1 -0
- package/lib/typescript/src/useNavigation.d.ts +1 -0
- package/lib/typescript/src/useNavigation.d.ts.map +1 -0
- package/lib/typescript/src/useNavigationBuilder.d.ts +16 -3
- package/lib/typescript/src/useNavigationBuilder.d.ts.map +1 -0
- package/lib/typescript/src/useNavigationCache.d.ts +1 -0
- package/lib/typescript/src/useNavigationCache.d.ts.map +1 -0
- package/lib/typescript/src/useNavigationContainerRef.d.ts +1 -0
- package/lib/typescript/src/useNavigationContainerRef.d.ts.map +1 -0
- package/lib/typescript/src/useNavigationHelpers.d.ts +1 -0
- package/lib/typescript/src/useNavigationHelpers.d.ts.map +1 -0
- package/lib/typescript/src/useNavigationState.d.ts +1 -0
- package/lib/typescript/src/useNavigationState.d.ts.map +1 -0
- package/lib/typescript/src/useOnAction.d.ts +1 -0
- package/lib/typescript/src/useOnAction.d.ts.map +1 -0
- package/lib/typescript/src/useOnGetState.d.ts +1 -0
- package/lib/typescript/src/useOnGetState.d.ts.map +1 -0
- package/lib/typescript/src/useOnPreventRemove.d.ts +1 -0
- package/lib/typescript/src/useOnPreventRemove.d.ts.map +1 -0
- package/lib/typescript/src/useOnRouteFocus.d.ts +1 -0
- package/lib/typescript/src/useOnRouteFocus.d.ts.map +1 -0
- package/lib/typescript/src/useOptionsGetters.d.ts +1 -0
- package/lib/typescript/src/useOptionsGetters.d.ts.map +1 -0
- package/lib/typescript/src/usePreventRemove.d.ts +1 -0
- package/lib/typescript/src/usePreventRemove.d.ts.map +1 -0
- package/lib/typescript/src/usePreventRemoveContext.d.ts +1 -0
- package/lib/typescript/src/usePreventRemoveContext.d.ts.map +1 -0
- package/lib/typescript/src/useRegisterNavigator.d.ts +1 -0
- package/lib/typescript/src/useRegisterNavigator.d.ts.map +1 -0
- package/lib/typescript/src/useRoute.d.ts +1 -0
- package/lib/typescript/src/useRoute.d.ts.map +1 -0
- package/lib/typescript/src/useRouteCache.d.ts +1 -0
- package/lib/typescript/src/useRouteCache.d.ts.map +1 -0
- package/lib/typescript/src/useScheduleUpdate.d.ts +1 -0
- package/lib/typescript/src/useScheduleUpdate.d.ts.map +1 -0
- package/lib/typescript/src/useSyncState.d.ts +1 -0
- package/lib/typescript/src/useSyncState.d.ts.map +1 -0
- package/lib/typescript/src/validatePathConfig.d.ts +1 -0
- package/lib/typescript/src/validatePathConfig.d.ts.map +1 -0
- package/package.json +4 -4
- package/src/types.tsx +0 -11
- package/src/useNavigationBuilder.tsx +16 -0
|
@@ -1,49 +1,43 @@
|
|
|
1
1
|
export default function getActionFromState(state, options) {
|
|
2
|
-
var
|
|
3
|
-
|
|
2
|
+
var _normalizedConfig$scr;
|
|
4
3
|
// Create a normalized configs object which will be easier to use
|
|
5
4
|
const normalizedConfig = options ? createNormalizedConfigItem(options) : {};
|
|
6
5
|
const routes = state.index != null ? state.routes.slice(0, state.index + 1) : state.routes;
|
|
7
|
-
|
|
8
6
|
if (routes.length === 0) {
|
|
9
7
|
return undefined;
|
|
10
8
|
}
|
|
11
|
-
|
|
12
9
|
if (!(routes.length === 1 && routes[0].key === undefined || routes.length === 2 && routes[0].key === undefined && routes[0].name === (normalizedConfig === null || normalizedConfig === void 0 ? void 0 : normalizedConfig.initialRouteName) && routes[1].key === undefined)) {
|
|
13
10
|
return {
|
|
14
11
|
type: 'RESET',
|
|
15
12
|
payload: state
|
|
16
13
|
};
|
|
17
14
|
}
|
|
18
|
-
|
|
19
|
-
const route = state.routes[(_state$index = state.index) !== null && _state$index !== void 0 ? _state$index : state.routes.length - 1];
|
|
15
|
+
const route = state.routes[state.index ?? state.routes.length - 1];
|
|
20
16
|
let current = route === null || route === void 0 ? void 0 : route.state;
|
|
21
17
|
let config = normalizedConfig === null || normalizedConfig === void 0 ? void 0 : (_normalizedConfig$scr = normalizedConfig.screens) === null || _normalizedConfig$scr === void 0 ? void 0 : _normalizedConfig$scr[route === null || route === void 0 ? void 0 : route.name];
|
|
22
|
-
let params = {
|
|
18
|
+
let params = {
|
|
19
|
+
...route.params
|
|
23
20
|
};
|
|
24
21
|
let payload = route ? {
|
|
25
22
|
name: route.name,
|
|
26
23
|
path: route.path,
|
|
27
24
|
params
|
|
28
25
|
} : undefined;
|
|
29
|
-
|
|
30
26
|
while (current) {
|
|
31
27
|
var _config, _config2, _config2$screens;
|
|
32
|
-
|
|
33
28
|
if (current.routes.length === 0) {
|
|
34
29
|
return undefined;
|
|
35
30
|
}
|
|
36
|
-
|
|
37
31
|
const routes = current.index != null ? current.routes.slice(0, current.index + 1) : current.routes;
|
|
38
|
-
const route = routes[routes.length - 1];
|
|
32
|
+
const route = routes[routes.length - 1];
|
|
39
33
|
|
|
34
|
+
// Explicitly set to override existing value when merging params
|
|
40
35
|
Object.assign(params, {
|
|
41
36
|
initial: undefined,
|
|
42
37
|
screen: undefined,
|
|
43
38
|
params: undefined,
|
|
44
39
|
state: undefined
|
|
45
40
|
});
|
|
46
|
-
|
|
47
41
|
if (routes.length === 1 && routes[0].key === undefined) {
|
|
48
42
|
params.initial = true;
|
|
49
43
|
params.screen = route.name;
|
|
@@ -54,37 +48,33 @@ export default function getActionFromState(state, options) {
|
|
|
54
48
|
params.state = current;
|
|
55
49
|
break;
|
|
56
50
|
}
|
|
57
|
-
|
|
58
51
|
if (route.state) {
|
|
59
|
-
params.params = {
|
|
52
|
+
params.params = {
|
|
53
|
+
...route.params
|
|
60
54
|
};
|
|
61
55
|
params = params.params;
|
|
62
56
|
} else {
|
|
63
57
|
params.path = route.path;
|
|
64
58
|
params.params = route.params;
|
|
65
59
|
}
|
|
66
|
-
|
|
67
60
|
current = route.state;
|
|
68
61
|
config = (_config2 = config) === null || _config2 === void 0 ? void 0 : (_config2$screens = _config2.screens) === null || _config2$screens === void 0 ? void 0 : _config2$screens[route.name];
|
|
69
62
|
}
|
|
70
|
-
|
|
71
63
|
if (!payload) {
|
|
72
64
|
return;
|
|
73
|
-
}
|
|
74
|
-
// This lets us preserve the navigation state and not lose it
|
|
75
|
-
|
|
65
|
+
}
|
|
76
66
|
|
|
67
|
+
// Try to construct payload for a `NAVIGATE` action from the state
|
|
68
|
+
// This lets us preserve the navigation state and not lose it
|
|
77
69
|
return {
|
|
78
70
|
type: 'NAVIGATE',
|
|
79
71
|
payload
|
|
80
72
|
};
|
|
81
73
|
}
|
|
82
|
-
|
|
83
74
|
const createNormalizedConfigItem = config => typeof config === 'object' && config != null ? {
|
|
84
75
|
initialRouteName: config.initialRouteName,
|
|
85
76
|
screens: config.screens != null ? createNormalizedConfigs(config.screens) : undefined
|
|
86
77
|
} : {};
|
|
87
|
-
|
|
88
78
|
const createNormalizedConfigs = options => Object.entries(options).reduce((acc, _ref) => {
|
|
89
79
|
let [k, v] = _ref;
|
|
90
80
|
acc[k] = createNormalizedConfigItem(v);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getActionFromState","state","options","normalizedConfig","createNormalizedConfigItem","routes","index","slice","length","undefined","key","name","initialRouteName","type","payload","route","current","config","screens","params","path","Object","assign","initial","screen","createNormalizedConfigs","entries","reduce","acc","k","v"],"
|
|
1
|
+
{"version":3,"names":["getActionFromState","state","options","normalizedConfig","createNormalizedConfigItem","routes","index","slice","length","undefined","key","name","initialRouteName","type","payload","route","current","config","screens","params","path","Object","assign","initial","screen","createNormalizedConfigs","entries","reduce","acc","k","v"],"sourceRoot":"../../src","sources":["getActionFromState.tsx"],"mappings":"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"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { CHILD_STATE } from './useRouteCache';
|
|
2
2
|
export default function getFocusedRouteNameFromRoute(route) {
|
|
3
|
-
var _route$CHILD_STATE, _state$index;
|
|
4
|
-
|
|
5
3
|
// @ts-expect-error: this isn't in type definitions coz we want this private
|
|
6
|
-
const state =
|
|
4
|
+
const state = route[CHILD_STATE] ?? route.state;
|
|
7
5
|
const params = route.params;
|
|
8
|
-
const routeName = state ?
|
|
9
|
-
|
|
6
|
+
const routeName = state ?
|
|
7
|
+
// Get the currently active route name in the nested navigator
|
|
8
|
+
state.routes[
|
|
9
|
+
// If we have a partial state without index, for tab/drawer, first screen will be focused one, and last for stack
|
|
10
10
|
// The type property will only exist for rehydrated state and not for state from deep link
|
|
11
|
-
|
|
11
|
+
state.index ?? (typeof state.type === 'string' && state.type !== 'stack' ? 0 : state.routes.length - 1)].name :
|
|
12
|
+
// If state doesn't exist, we need to default to `screen` param if available
|
|
12
13
|
typeof (params === null || params === void 0 ? void 0 : params.screen) === 'string' ? params.screen : undefined;
|
|
13
14
|
return routeName;
|
|
14
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CHILD_STATE","getFocusedRouteNameFromRoute","route","state","params","routeName","routes","index","type","length","name","screen","undefined"],"
|
|
1
|
+
{"version":3,"names":["CHILD_STATE","getFocusedRouteNameFromRoute","route","state","params","routeName","routes","index","type","length","name","screen","undefined"],"sourceRoot":"../../src","sources":["getFocusedRouteNameFromRoute.tsx"],"mappings":"AAEA,SAASA,WAAW,QAAQ,iBAAiB;AAE7C,eAAe,SAASC,4BAA4B,CAClDC,KAA6B,EACT;EACpB;EACA,MAAMC,KAAK,GAAGD,KAAK,CAACF,WAAW,CAAC,IAAIE,KAAK,CAACC,KAAK;EAC/C,MAAMC,MAAM,GAAGF,KAAK,CAACE,MAA0C;EAE/D,MAAMC,SAAS,GAAGF,KAAK;EACnB;EACAA,KAAK,CAACG,MAAM;EACV;EACA;EACAH,KAAK,CAACI,KAAK,KACR,OAAOJ,KAAK,CAACK,IAAI,KAAK,QAAQ,IAAIL,KAAK,CAACK,IAAI,KAAK,OAAO,GACrD,CAAC,GACDL,KAAK,CAACG,MAAM,CAACG,MAAM,GAAG,CAAC,CAAC,CAC/B,CAACC,IAAI;EACN;EACF,QAAON,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEO,MAAM,MAAK,QAAQ,GAChCP,MAAM,CAACO,MAAM,GACbC,SAAS;EAEb,OAAOP,SAAS;AAClB"}
|
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
import * as queryString from 'query-string';
|
|
2
2
|
import fromEntries from './fromEntries';
|
|
3
3
|
import validatePathConfig from './validatePathConfig';
|
|
4
|
-
|
|
5
4
|
const getActiveRoute = state => {
|
|
6
5
|
const route = typeof state.index === 'number' ? state.routes[state.index] : state.routes[state.routes.length - 1];
|
|
7
|
-
|
|
8
6
|
if (route.state) {
|
|
9
7
|
return getActiveRoute(route.state);
|
|
10
8
|
}
|
|
11
|
-
|
|
12
9
|
return route;
|
|
13
10
|
};
|
|
11
|
+
|
|
14
12
|
/**
|
|
15
13
|
* Utility to serialize a navigation state object to a path string.
|
|
16
14
|
*
|
|
@@ -40,78 +38,73 @@ const getActiveRoute = state => {
|
|
|
40
38
|
* @param options Extra options to fine-tune how to serialize the path.
|
|
41
39
|
* @returns Path representing the state, e.g. /foo/bar?count=42.
|
|
42
40
|
*/
|
|
43
|
-
|
|
44
|
-
|
|
45
41
|
export default function getPathFromState(state, options) {
|
|
46
42
|
if (state == null) {
|
|
47
43
|
throw Error("Got 'undefined' for the navigation state. You must pass a valid state object.");
|
|
48
44
|
}
|
|
49
|
-
|
|
50
45
|
if (options) {
|
|
51
46
|
validatePathConfig(options);
|
|
52
|
-
}
|
|
53
|
-
|
|
47
|
+
}
|
|
54
48
|
|
|
49
|
+
// Create a normalized configs object which will be easier to use
|
|
55
50
|
const configs = options !== null && options !== void 0 && options.screens ? createNormalizedConfigs(options === null || options === void 0 ? void 0 : options.screens) : {};
|
|
56
51
|
let path = '/';
|
|
57
52
|
let current = state;
|
|
58
53
|
const allParams = {};
|
|
59
|
-
|
|
60
54
|
while (current) {
|
|
61
55
|
let index = typeof current.index === 'number' ? current.index : 0;
|
|
62
56
|
let route = current.routes[index];
|
|
63
57
|
let pattern;
|
|
64
58
|
let focusedParams;
|
|
65
59
|
let focusedRoute = getActiveRoute(state);
|
|
66
|
-
let currentOptions = configs;
|
|
60
|
+
let currentOptions = configs;
|
|
67
61
|
|
|
62
|
+
// Keep all the route names that appeared during going deeper in config in case the pattern is resolved to undefined
|
|
68
63
|
let nestedRouteNames = [];
|
|
69
64
|
let hasNext = true;
|
|
70
|
-
|
|
71
65
|
while (route.name in currentOptions && hasNext) {
|
|
72
66
|
pattern = currentOptions[route.name].pattern;
|
|
73
67
|
nestedRouteNames.push(route.name);
|
|
74
|
-
|
|
75
68
|
if (route.params) {
|
|
76
69
|
var _currentOptions$route;
|
|
77
|
-
|
|
78
70
|
const stringify = (_currentOptions$route = currentOptions[route.name]) === null || _currentOptions$route === void 0 ? void 0 : _currentOptions$route.stringify;
|
|
79
71
|
const currentParams = fromEntries(Object.entries(route.params).map(_ref => {
|
|
80
72
|
let [key, value] = _ref;
|
|
81
73
|
return [key, stringify !== null && stringify !== void 0 && stringify[key] ? stringify[key](value) : String(value)];
|
|
82
74
|
}));
|
|
83
|
-
|
|
84
75
|
if (pattern) {
|
|
85
76
|
Object.assign(allParams, currentParams);
|
|
86
77
|
}
|
|
87
|
-
|
|
88
78
|
if (focusedRoute === route) {
|
|
89
79
|
var _pattern;
|
|
90
|
-
|
|
91
80
|
// If this is the focused route, keep the params for later use
|
|
92
81
|
// We save it here since it's been stringified already
|
|
93
|
-
focusedParams = {
|
|
82
|
+
focusedParams = {
|
|
83
|
+
...currentParams
|
|
94
84
|
};
|
|
95
|
-
(_pattern = pattern) === null || _pattern === void 0 ? void 0 : _pattern.split('/').filter(p => p.startsWith(':'))
|
|
85
|
+
(_pattern = pattern) === null || _pattern === void 0 ? void 0 : _pattern.split('/').filter(p => p.startsWith(':'))
|
|
86
|
+
// eslint-disable-next-line no-loop-func
|
|
96
87
|
.forEach(p => {
|
|
97
|
-
const name = getParamName(p);
|
|
88
|
+
const name = getParamName(p);
|
|
98
89
|
|
|
90
|
+
// Remove the params present in the pattern since we'll only use the rest for query string
|
|
99
91
|
if (focusedParams) {
|
|
100
92
|
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
|
101
93
|
delete focusedParams[name];
|
|
102
94
|
}
|
|
103
95
|
});
|
|
104
96
|
}
|
|
105
|
-
}
|
|
106
|
-
|
|
97
|
+
}
|
|
107
98
|
|
|
99
|
+
// If there is no `screens` property or no nested state, we return pattern
|
|
108
100
|
if (!currentOptions[route.name].screens || route.state === undefined) {
|
|
109
101
|
hasNext = false;
|
|
110
102
|
} else {
|
|
111
103
|
index = typeof route.state.index === 'number' ? route.state.index : route.state.routes.length - 1;
|
|
112
104
|
const nextRoute = route.state.routes[index];
|
|
113
|
-
const nestedConfig = currentOptions[route.name].screens;
|
|
105
|
+
const nestedConfig = currentOptions[route.name].screens;
|
|
114
106
|
|
|
107
|
+
// if there is config for next route name, we go deeper
|
|
115
108
|
if (nestedConfig && nextRoute.name in nestedConfig) {
|
|
116
109
|
route = nextRoute;
|
|
117
110
|
currentOptions = nestedConfig;
|
|
@@ -121,43 +114,37 @@ export default function getPathFromState(state, options) {
|
|
|
121
114
|
}
|
|
122
115
|
}
|
|
123
116
|
}
|
|
124
|
-
|
|
125
117
|
if (pattern === undefined) {
|
|
126
118
|
pattern = nestedRouteNames.join('/');
|
|
127
119
|
}
|
|
128
|
-
|
|
129
120
|
if (currentOptions[route.name] !== undefined) {
|
|
130
121
|
path += pattern.split('/').map(p => {
|
|
131
|
-
const name = getParamName(p);
|
|
122
|
+
const name = getParamName(p);
|
|
123
|
+
|
|
124
|
+
// We don't know what to show for wildcard patterns
|
|
132
125
|
// Showing the route name seems ok, though whatever we show here will be incorrect
|
|
133
126
|
// Since the page doesn't actually exist
|
|
134
|
-
|
|
135
127
|
if (p === '*') {
|
|
136
128
|
return route.name;
|
|
137
|
-
}
|
|
138
|
-
|
|
129
|
+
}
|
|
139
130
|
|
|
131
|
+
// If the path has a pattern for a param, put the param in the path
|
|
140
132
|
if (p.startsWith(':')) {
|
|
141
133
|
const value = allParams[name];
|
|
142
|
-
|
|
143
134
|
if (value === undefined && p.endsWith('?')) {
|
|
144
135
|
// Optional params without value assigned in route.params should be ignored
|
|
145
136
|
return '';
|
|
146
137
|
}
|
|
147
|
-
|
|
148
138
|
return encodeURIComponent(value);
|
|
149
139
|
}
|
|
150
|
-
|
|
151
140
|
return encodeURIComponent(p);
|
|
152
141
|
}).join('/');
|
|
153
142
|
} else {
|
|
154
143
|
path += encodeURIComponent(route.name);
|
|
155
144
|
}
|
|
156
|
-
|
|
157
145
|
if (!focusedParams) {
|
|
158
146
|
focusedParams = focusedRoute.params;
|
|
159
147
|
}
|
|
160
|
-
|
|
161
148
|
if (route.state) {
|
|
162
149
|
path += '/';
|
|
163
150
|
} else if (focusedParams) {
|
|
@@ -167,54 +154,44 @@ export default function getPathFromState(state, options) {
|
|
|
167
154
|
delete focusedParams[param];
|
|
168
155
|
}
|
|
169
156
|
}
|
|
170
|
-
|
|
171
157
|
const query = queryString.stringify(focusedParams, {
|
|
172
158
|
sort: false
|
|
173
159
|
});
|
|
174
|
-
|
|
175
160
|
if (query) {
|
|
176
161
|
path += `?${query}`;
|
|
177
162
|
}
|
|
178
163
|
}
|
|
179
|
-
|
|
180
164
|
current = route.state;
|
|
181
|
-
}
|
|
182
|
-
|
|
165
|
+
}
|
|
183
166
|
|
|
167
|
+
// Remove multiple as well as trailing slashes
|
|
184
168
|
path = path.replace(/\/+/g, '/');
|
|
185
169
|
path = path.length > 1 ? path.replace(/\/$/, '') : path;
|
|
186
170
|
return path;
|
|
187
171
|
}
|
|
188
|
-
|
|
189
172
|
const getParamName = pattern => pattern.replace(/^:/, '').replace(/\?$/, '');
|
|
190
|
-
|
|
191
173
|
const joinPaths = function () {
|
|
192
174
|
for (var _len = arguments.length, paths = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
193
175
|
paths[_key] = arguments[_key];
|
|
194
176
|
}
|
|
195
|
-
|
|
196
177
|
return [].concat(...paths.map(p => p.split('/'))).filter(Boolean).join('/');
|
|
197
178
|
};
|
|
198
|
-
|
|
199
179
|
const createConfigItem = (config, parentPattern) => {
|
|
200
180
|
var _pattern2;
|
|
201
|
-
|
|
202
181
|
if (typeof config === 'string') {
|
|
203
182
|
// If a string is specified as the value of the key(e.g. Foo: '/path'), use it as the pattern
|
|
204
183
|
const pattern = parentPattern ? joinPaths(parentPattern, config) : config;
|
|
205
184
|
return {
|
|
206
185
|
pattern
|
|
207
186
|
};
|
|
208
|
-
}
|
|
209
|
-
// It can have `path` property and `screens` prop which has nested configs
|
|
210
|
-
|
|
187
|
+
}
|
|
211
188
|
|
|
189
|
+
// If an object is specified as the value (e.g. Foo: { ... }),
|
|
190
|
+
// It can have `path` property and `screens` prop which has nested configs
|
|
212
191
|
let pattern;
|
|
213
|
-
|
|
214
192
|
if (config.exact && config.path === undefined) {
|
|
215
193
|
throw new Error("A 'path' needs to be specified when specifying 'exact: true'. If you don't want this screen in the URL, specify it as empty string, e.g. `path: ''`.");
|
|
216
194
|
}
|
|
217
|
-
|
|
218
195
|
pattern = config.exact !== true ? joinPaths(parentPattern || '', config.path || '') : config.path || '';
|
|
219
196
|
const screens = config.screens ? createNormalizedConfigs(config.screens, pattern) : undefined;
|
|
220
197
|
return {
|
|
@@ -224,7 +201,6 @@ const createConfigItem = (config, parentPattern) => {
|
|
|
224
201
|
screens
|
|
225
202
|
};
|
|
226
203
|
};
|
|
227
|
-
|
|
228
204
|
const createNormalizedConfigs = (options, pattern) => fromEntries(Object.entries(options).map(_ref2 => {
|
|
229
205
|
let [name, c] = _ref2;
|
|
230
206
|
const result = createConfigItem(c, pattern);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["queryString","fromEntries","validatePathConfig","getActiveRoute","state","route","index","routes","length","getPathFromState","options","Error","configs","screens","createNormalizedConfigs","path","current","allParams","pattern","focusedParams","focusedRoute","currentOptions","nestedRouteNames","hasNext","name","push","params","stringify","currentParams","Object","entries","map","key","value","String","assign","split","filter","p","startsWith","forEach","getParamName","undefined","nextRoute","nestedConfig","join","endsWith","encodeURIComponent","param","query","sort","replace","joinPaths","paths","concat","Boolean","createConfigItem","config","parentPattern","exact","c","result"],"sources":["getPathFromState.tsx"],"sourcesContent":["import type {\n NavigationState,\n PartialState,\n Route,\n} from '@react-navigation/routers';\nimport * as queryString from 'query-string';\n\nimport fromEntries from './fromEntries';\nimport type { PathConfig, PathConfigMap } from './types';\nimport validatePathConfig from './validatePathConfig';\n\ntype Options<ParamList> = {\n initialRouteName?: string;\n screens: PathConfigMap<ParamList>;\n};\n\ntype State = NavigationState | Omit<PartialState<NavigationState>, 'stale'>;\n\ntype StringifyConfig = Record<string, (value: any) => string>;\n\ntype ConfigItem = {\n pattern?: string;\n stringify?: StringifyConfig;\n screens?: Record<string, ConfigItem>;\n};\n\nconst getActiveRoute = (state: State): { name: string; params?: object } => {\n const route =\n typeof state.index === 'number'\n ? state.routes[state.index]\n : state.routes[state.routes.length - 1];\n\n if (route.state) {\n return getActiveRoute(route.state);\n }\n\n return route;\n};\n\n/**\n * Utility to serialize a navigation state object to a path string.\n *\n * @example\n * ```js\n * getPathFromState(\n * {\n * routes: [\n * {\n * name: 'Chat',\n * params: { author: 'Jane', id: 42 },\n * },\n * ],\n * },\n * {\n * screens: {\n * Chat: {\n * path: 'chat/:author/:id',\n * stringify: { author: author => author.toLowerCase() }\n * }\n * }\n * }\n * )\n * ```\n *\n * @param state Navigation state to serialize.\n * @param options Extra options to fine-tune how to serialize the path.\n * @returns Path representing the state, e.g. /foo/bar?count=42.\n */\nexport default function getPathFromState<ParamList extends {}>(\n state: State,\n options?: Options<ParamList>\n): string {\n if (state == null) {\n throw Error(\n \"Got 'undefined' for the navigation state. You must pass a valid state object.\"\n );\n }\n\n if (options) {\n validatePathConfig(options);\n }\n\n // Create a normalized configs object which will be easier to use\n const configs: Record<string, ConfigItem> = options?.screens\n ? createNormalizedConfigs(options?.screens)\n : {};\n\n let path = '/';\n let current: State | undefined = state;\n\n const allParams: Record<string, any> = {};\n\n while (current) {\n let index = typeof current.index === 'number' ? current.index : 0;\n let route = current.routes[index] as Route<string> & {\n state?: State;\n };\n\n let pattern: string | undefined;\n\n let focusedParams: Record<string, any> | undefined;\n let focusedRoute = getActiveRoute(state);\n let currentOptions = configs;\n\n // Keep all the route names that appeared during going deeper in config in case the pattern is resolved to undefined\n let nestedRouteNames = [];\n\n let hasNext = true;\n\n while (route.name in currentOptions && hasNext) {\n pattern = currentOptions[route.name].pattern;\n\n nestedRouteNames.push(route.name);\n\n if (route.params) {\n const stringify = currentOptions[route.name]?.stringify;\n\n const currentParams = fromEntries(\n Object.entries(route.params).map(([key, value]) => [\n key,\n stringify?.[key] ? stringify[key](value) : String(value),\n ])\n );\n\n if (pattern) {\n Object.assign(allParams, currentParams);\n }\n\n if (focusedRoute === route) {\n // If this is the focused route, keep the params for later use\n // We save it here since it's been stringified already\n focusedParams = { ...currentParams };\n\n pattern\n ?.split('/')\n .filter((p) => p.startsWith(':'))\n // eslint-disable-next-line no-loop-func\n .forEach((p) => {\n const name = getParamName(p);\n\n // Remove the params present in the pattern since we'll only use the rest for query string\n if (focusedParams) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete focusedParams[name];\n }\n });\n }\n }\n\n // If there is no `screens` property or no nested state, we return pattern\n if (!currentOptions[route.name].screens || route.state === undefined) {\n hasNext = false;\n } else {\n index =\n typeof route.state.index === 'number'\n ? route.state.index\n : route.state.routes.length - 1;\n\n const nextRoute = route.state.routes[index];\n const nestedConfig = currentOptions[route.name].screens;\n\n // if there is config for next route name, we go deeper\n if (nestedConfig && nextRoute.name in nestedConfig) {\n route = nextRoute as Route<string> & { state?: State };\n currentOptions = nestedConfig;\n } else {\n // If not, there is no sense in going deeper in config\n hasNext = false;\n }\n }\n }\n\n if (pattern === undefined) {\n pattern = nestedRouteNames.join('/');\n }\n\n if (currentOptions[route.name] !== undefined) {\n path += pattern\n .split('/')\n .map((p) => {\n const name = getParamName(p);\n\n // We don't know what to show for wildcard patterns\n // Showing the route name seems ok, though whatever we show here will be incorrect\n // Since the page doesn't actually exist\n if (p === '*') {\n return route.name;\n }\n\n // If the path has a pattern for a param, put the param in the path\n if (p.startsWith(':')) {\n const value = allParams[name];\n\n if (value === undefined && p.endsWith('?')) {\n // Optional params without value assigned in route.params should be ignored\n return '';\n }\n\n return encodeURIComponent(value);\n }\n\n return encodeURIComponent(p);\n })\n .join('/');\n } else {\n path += encodeURIComponent(route.name);\n }\n\n if (!focusedParams) {\n focusedParams = focusedRoute.params;\n }\n\n if (route.state) {\n path += '/';\n } else if (focusedParams) {\n for (let param in focusedParams) {\n if (focusedParams[param] === 'undefined') {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete focusedParams[param];\n }\n }\n\n const query = queryString.stringify(focusedParams, { sort: false });\n\n if (query) {\n path += `?${query}`;\n }\n }\n\n current = route.state;\n }\n\n // Remove multiple as well as trailing slashes\n path = path.replace(/\\/+/g, '/');\n path = path.length > 1 ? path.replace(/\\/$/, '') : path;\n\n return path;\n}\n\nconst getParamName = (pattern: string) =>\n pattern.replace(/^:/, '').replace(/\\?$/, '');\n\nconst joinPaths = (...paths: string[]): string =>\n ([] as string[])\n .concat(...paths.map((p) => p.split('/')))\n .filter(Boolean)\n .join('/');\n\nconst createConfigItem = (\n config: PathConfig<object> | string,\n parentPattern?: string\n): ConfigItem => {\n if (typeof config === 'string') {\n // If a string is specified as the value of the key(e.g. Foo: '/path'), use it as the pattern\n const pattern = parentPattern ? joinPaths(parentPattern, config) : config;\n\n return { pattern };\n }\n\n // If an object is specified as the value (e.g. Foo: { ... }),\n // It can have `path` property and `screens` prop which has nested configs\n let pattern: string | undefined;\n\n if (config.exact && config.path === undefined) {\n throw new Error(\n \"A 'path' needs to be specified when specifying 'exact: true'. If you don't want this screen in the URL, specify it as empty string, e.g. `path: ''`.\"\n );\n }\n\n pattern =\n config.exact !== true\n ? joinPaths(parentPattern || '', config.path || '')\n : config.path || '';\n\n const screens = config.screens\n ? createNormalizedConfigs(config.screens, pattern)\n : undefined;\n\n return {\n // Normalize pattern to remove any leading, trailing slashes, duplicate slashes etc.\n pattern: pattern?.split('/').filter(Boolean).join('/'),\n stringify: config.stringify,\n screens,\n };\n};\n\nconst createNormalizedConfigs = (\n options: PathConfigMap<object>,\n pattern?: string\n): Record<string, ConfigItem> =>\n fromEntries(\n Object.entries(options).map(([name, c]) => {\n const result = createConfigItem(c, pattern);\n\n return [name, result];\n })\n );\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["queryString","fromEntries","validatePathConfig","getActiveRoute","state","route","index","routes","length","getPathFromState","options","Error","configs","screens","createNormalizedConfigs","path","current","allParams","pattern","focusedParams","focusedRoute","currentOptions","nestedRouteNames","hasNext","name","push","params","stringify","currentParams","Object","entries","map","key","value","String","assign","split","filter","p","startsWith","forEach","getParamName","undefined","nextRoute","nestedConfig","join","endsWith","encodeURIComponent","param","query","sort","replace","joinPaths","paths","concat","Boolean","createConfigItem","config","parentPattern","exact","c","result"],"sourceRoot":"../../src","sources":["getPathFromState.tsx"],"mappings":"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"}
|