@react-navigation/core 8.0.0-alpha.4 → 8.0.0-alpha.40
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/README.md +17 -14
- package/lib/module/BaseNavigationContainer.js +168 -87
- package/lib/module/BaseNavigationContainer.js.map +1 -1
- package/lib/module/ConsumedParamsContext.js +5 -0
- package/lib/module/ConsumedParamsContext.js.map +1 -0
- package/lib/module/DataLoading.js +129 -0
- package/lib/module/DataLoading.js.map +1 -0
- package/lib/module/NavigationBuilderContext.js +7 -10
- package/lib/module/NavigationBuilderContext.js.map +1 -1
- package/lib/module/NavigationIndependentTree.js +54 -9
- package/lib/module/NavigationIndependentTree.js.map +1 -1
- package/lib/module/NavigationProvider.js +36 -11
- package/lib/module/NavigationProvider.js.map +1 -1
- package/lib/module/NavigationRootContext.js +8 -0
- package/lib/module/NavigationRootContext.js.map +1 -0
- package/lib/module/NavigationStateContext.js +3 -0
- package/lib/module/NavigationStateContext.js.map +1 -1
- package/lib/module/PreventRemoveContext.js.map +1 -1
- package/lib/module/PreventRemoveProvider.js +40 -31
- package/lib/module/PreventRemoveProvider.js.map +1 -1
- package/lib/module/SceneView.js +12 -42
- package/lib/module/SceneView.js.map +1 -1
- package/lib/module/StaticNavigation.js +219 -67
- package/lib/module/StaticNavigation.js.map +1 -1
- package/lib/module/StaticTreeContext.js +5 -0
- package/lib/module/StaticTreeContext.js.map +1 -0
- package/lib/module/createNavigationContainerRef.js +7 -9
- package/lib/module/createNavigationContainerRef.js.map +1 -1
- package/lib/module/createNavigatorFactory.js +27 -5
- package/lib/module/createNavigatorFactory.js.map +1 -1
- package/lib/module/findFocusedRoute.js +7 -4
- package/lib/module/findFocusedRoute.js.map +1 -1
- package/lib/module/getActionFromState.js +45 -20
- package/lib/module/getActionFromState.js.map +1 -1
- package/lib/module/getPathFromState.js +204 -94
- package/lib/module/getPathFromState.js.map +1 -1
- package/lib/module/getPatternParts.js +61 -14
- package/lib/module/getPatternParts.js.map +1 -1
- package/lib/module/getStateFromPath.js +608 -272
- package/lib/module/getStateFromPath.js.map +1 -1
- package/lib/module/getStateFromRouteParams.js +23 -0
- package/lib/module/getStateFromRouteParams.js.map +1 -0
- package/lib/module/index.js +7 -6
- package/lib/module/index.js.map +1 -1
- package/lib/module/internal.js +2 -0
- package/lib/module/internal.js.map +1 -0
- package/lib/module/isRecordEqual.js +1 -1
- package/lib/module/isRecordEqual.js.map +1 -1
- package/lib/module/queryString.js +71 -0
- package/lib/module/queryString.js.map +1 -0
- package/lib/module/theming/useTheme.js +1 -1
- package/lib/module/theming/useTheme.js.map +1 -1
- package/lib/module/types.js +35 -1
- package/lib/module/types.js.map +1 -1
- package/lib/module/useDescriptors.js +65 -25
- package/lib/module/useDescriptors.js.map +1 -1
- package/lib/module/useEventEmitter.js +48 -33
- package/lib/module/useEventEmitter.js.map +1 -1
- package/lib/module/useFocusEffect.js +4 -2
- package/lib/module/useFocusEffect.js.map +1 -1
- package/lib/module/useFocusEvents.js +15 -5
- package/lib/module/useFocusEvents.js.map +1 -1
- package/lib/module/useFocusedListenersChildrenAdapter.js +3 -3
- package/lib/module/useFocusedListenersChildrenAdapter.js.map +1 -1
- package/lib/module/useIsFocused.js +8 -12
- package/lib/module/useIsFocused.js.map +1 -1
- package/lib/module/useKeyedChildListeners.js +5 -2
- package/lib/module/useKeyedChildListeners.js.map +1 -1
- package/lib/module/useLazyValue.js.map +1 -1
- package/lib/module/useNavigation.js +4 -17
- package/lib/module/useNavigation.js.map +1 -1
- package/lib/module/useNavigationBuilder.js +244 -147
- package/lib/module/useNavigationBuilder.js.map +1 -1
- package/lib/module/useNavigationCache.js +92 -89
- package/lib/module/useNavigationCache.js.map +1 -1
- package/lib/module/useNavigationHelpers.js +22 -29
- package/lib/module/useNavigationHelpers.js.map +1 -1
- package/lib/module/useNavigationIndependentTree.js +1 -1
- package/lib/module/useNavigationIndependentTree.js.map +1 -1
- package/lib/module/useNavigationState.js +158 -46
- package/lib/module/useNavigationState.js.map +1 -1
- package/lib/module/useOnAction.js +58 -11
- package/lib/module/useOnAction.js.map +1 -1
- package/lib/module/useOnGetNavigation.js +26 -0
- package/lib/module/useOnGetNavigation.js.map +1 -0
- package/lib/module/useOnGetState.js +7 -4
- package/lib/module/useOnGetState.js.map +1 -1
- package/lib/module/useOnPreventRemove.js +40 -31
- package/lib/module/useOnPreventRemove.js.map +1 -1
- package/lib/module/useOnRouteFocus.js +2 -2
- package/lib/module/useOnRouteFocus.js.map +1 -1
- package/lib/module/useOptionsGetters.js +34 -24
- package/lib/module/useOptionsGetters.js.map +1 -1
- package/lib/module/usePreventRemove.js +11 -5
- package/lib/module/usePreventRemove.js.map +1 -1
- package/lib/module/usePreventRemoveContext.js +2 -2
- package/lib/module/usePreventRemoveContext.js.map +1 -1
- package/lib/module/useRegisterNavigator.js +3 -4
- package/lib/module/useRegisterNavigator.js.map +1 -1
- package/lib/module/useRoute.js +2 -0
- package/lib/module/useRoute.js.map +1 -1
- package/lib/module/useRouteCache.js +51 -35
- package/lib/module/useRouteCache.js.map +1 -1
- package/lib/module/useScheduleUpdate.js +12 -10
- package/lib/module/useScheduleUpdate.js.map +1 -1
- package/lib/module/useStateForPath.js +1 -1
- package/lib/module/useStateForPath.js.map +1 -1
- package/lib/module/useSyncState.js +37 -15
- package/lib/module/useSyncState.js.map +1 -1
- package/lib/module/validatePathConfig.js +50 -36
- package/lib/module/validatePathConfig.js.map +1 -1
- package/lib/typescript/src/BaseNavigationContainer.d.ts +6 -3
- package/lib/typescript/src/BaseNavigationContainer.d.ts.map +1 -1
- package/lib/typescript/src/ConsumedParamsContext.d.ts +3 -0
- package/lib/typescript/src/ConsumedParamsContext.d.ts.map +1 -0
- package/lib/typescript/src/DataLoading.d.ts +21 -0
- package/lib/typescript/src/DataLoading.d.ts.map +1 -0
- package/lib/typescript/src/EnsureSingleNavigator.d.ts +1 -1
- package/lib/typescript/src/EnsureSingleNavigator.d.ts.map +1 -1
- package/lib/typescript/src/Group.d.ts +1 -1
- package/lib/typescript/src/Group.d.ts.map +1 -1
- package/lib/typescript/src/NavigationBuilderContext.d.ts +22 -14
- package/lib/typescript/src/NavigationBuilderContext.d.ts.map +1 -1
- package/lib/typescript/src/NavigationContainerRefContext.d.ts +1 -1
- package/lib/typescript/src/NavigationContainerRefContext.d.ts.map +1 -1
- package/lib/typescript/src/NavigationFocusedRouteStateContext.d.ts +4 -4
- package/lib/typescript/src/NavigationFocusedRouteStateContext.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/NavigationProvider.d.ts +21 -18
- package/lib/typescript/src/NavigationProvider.d.ts.map +1 -1
- package/lib/typescript/src/NavigationRootContext.d.ts +8 -0
- package/lib/typescript/src/NavigationRootContext.d.ts.map +1 -0
- package/lib/typescript/src/NavigationStateContext.d.ts +4 -3
- package/lib/typescript/src/NavigationStateContext.d.ts.map +1 -1
- package/lib/typescript/src/PreventRemoveContext.d.ts +1 -0
- package/lib/typescript/src/PreventRemoveContext.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 +5 -2
- package/lib/typescript/src/SceneView.d.ts.map +1 -1
- package/lib/typescript/src/Screen.d.ts +1 -1
- package/lib/typescript/src/Screen.d.ts.map +1 -1
- package/lib/typescript/src/StaticContainer.d.ts +1 -1
- package/lib/typescript/src/StaticContainer.d.ts.map +1 -1
- package/lib/typescript/src/StaticNavigation.d.ts +189 -111
- package/lib/typescript/src/StaticNavigation.d.ts.map +1 -1
- package/lib/typescript/src/StaticTreeContext.d.ts +4 -0
- package/lib/typescript/src/StaticTreeContext.d.ts.map +1 -0
- package/lib/typescript/src/createNavigationContainerRef.d.ts +1 -1
- package/lib/typescript/src/createNavigationContainerRef.d.ts.map +1 -1
- package/lib/typescript/src/createNavigatorFactory.d.ts +23 -5
- package/lib/typescript/src/createNavigatorFactory.d.ts.map +1 -1
- package/lib/typescript/src/findFocusedRoute.d.ts +3 -8
- package/lib/typescript/src/findFocusedRoute.d.ts.map +1 -1
- package/lib/typescript/src/getActionFromState.d.ts +4 -4
- package/lib/typescript/src/getActionFromState.d.ts.map +1 -1
- package/lib/typescript/src/getPathFromState.d.ts +3 -3
- package/lib/typescript/src/getPathFromState.d.ts.map +1 -1
- package/lib/typescript/src/getPatternParts.d.ts +5 -2
- package/lib/typescript/src/getPatternParts.d.ts.map +1 -1
- package/lib/typescript/src/getStateFromPath.d.ts +4 -7
- package/lib/typescript/src/getStateFromPath.d.ts.map +1 -1
- package/lib/typescript/src/getStateFromRouteParams.d.ts +3 -0
- package/lib/typescript/src/getStateFromRouteParams.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +36 -33
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/internal.d.ts +3 -0
- package/lib/typescript/src/internal.d.ts.map +1 -0
- package/lib/typescript/src/isRecordEqual.d.ts.map +1 -1
- package/lib/typescript/src/queryString.d.ts +5 -0
- package/lib/typescript/src/queryString.d.ts.map +1 -0
- package/lib/typescript/src/theming/ThemeContext.d.ts +1 -1
- package/lib/typescript/src/theming/ThemeContext.d.ts.map +1 -1
- package/lib/typescript/src/theming/ThemeProvider.d.ts +2 -2
- package/lib/typescript/src/theming/ThemeProvider.d.ts.map +1 -1
- package/lib/typescript/src/theming/useTheme.d.ts +1 -1
- package/lib/typescript/src/theming/useTheme.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +265 -167
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/lib/typescript/src/useChildListeners.d.ts +3 -3
- package/lib/typescript/src/useChildListeners.d.ts.map +1 -1
- package/lib/typescript/src/useDescriptors.d.ts +13 -11
- package/lib/typescript/src/useDescriptors.d.ts.map +1 -1
- package/lib/typescript/src/useEventEmitter.d.ts +2 -2
- package/lib/typescript/src/useEventEmitter.d.ts.map +1 -1
- package/lib/typescript/src/useFocusEffect.d.ts.map +1 -1
- package/lib/typescript/src/useFocusEvents.d.ts +2 -2
- package/lib/typescript/src/useFocusEvents.d.ts.map +1 -1
- package/lib/typescript/src/useFocusedListenersChildrenAdapter.d.ts +2 -2
- package/lib/typescript/src/useFocusedListenersChildrenAdapter.d.ts.map +1 -1
- package/lib/typescript/src/useIsFocused.d.ts +4 -0
- package/lib/typescript/src/useIsFocused.d.ts.map +1 -1
- package/lib/typescript/src/useKeyedChildListeners.d.ts +4 -3
- package/lib/typescript/src/useKeyedChildListeners.d.ts.map +1 -1
- package/lib/typescript/src/useLazyValue.d.ts.map +1 -1
- package/lib/typescript/src/useNavigation.d.ts +4 -2
- package/lib/typescript/src/useNavigation.d.ts.map +1 -1
- package/lib/typescript/src/useNavigationBuilder.d.ts +22 -63
- package/lib/typescript/src/useNavigationBuilder.d.ts.map +1 -1
- package/lib/typescript/src/useNavigationCache.d.ts +6 -5
- package/lib/typescript/src/useNavigationCache.d.ts.map +1 -1
- package/lib/typescript/src/useNavigationContainerRef.d.ts +1 -1
- package/lib/typescript/src/useNavigationContainerRef.d.ts.map +1 -1
- package/lib/typescript/src/useNavigationHelpers.d.ts +18 -58
- package/lib/typescript/src/useNavigationHelpers.d.ts.map +1 -1
- package/lib/typescript/src/useNavigationState.d.ts +19 -3
- package/lib/typescript/src/useNavigationState.d.ts.map +1 -1
- package/lib/typescript/src/useOnAction.d.ts +9 -9
- package/lib/typescript/src/useOnAction.d.ts.map +1 -1
- package/lib/typescript/src/useOnGetNavigation.d.ts +12 -0
- package/lib/typescript/src/useOnGetNavigation.d.ts.map +1 -0
- 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 +5 -9
- package/lib/typescript/src/useOnPreventRemove.d.ts.map +1 -1
- package/lib/typescript/src/useOnRouteFocus.d.ts +6 -6
- package/lib/typescript/src/useOnRouteFocus.d.ts.map +1 -1
- package/lib/typescript/src/useOptionsGetters.d.ts +2 -4
- package/lib/typescript/src/useOptionsGetters.d.ts.map +1 -1
- package/lib/typescript/src/usePreventRemove.d.ts.map +1 -1
- package/lib/typescript/src/usePreventRemoveContext.d.ts +2 -1
- package/lib/typescript/src/usePreventRemoveContext.d.ts.map +1 -1
- package/lib/typescript/src/useRegisterNavigator.d.ts.map +1 -1
- package/lib/typescript/src/useRoute.d.ts +7 -3
- package/lib/typescript/src/useRoute.d.ts.map +1 -1
- package/lib/typescript/src/useRouteCache.d.ts +7 -12
- package/lib/typescript/src/useRouteCache.d.ts.map +1 -1
- package/lib/typescript/src/useScheduleUpdate.d.ts +5 -4
- package/lib/typescript/src/useScheduleUpdate.d.ts.map +1 -1
- package/lib/typescript/src/useStateForPath.d.ts +1 -1
- package/lib/typescript/src/useStateForPath.d.ts.map +1 -1
- package/lib/typescript/src/useSyncState.d.ts +1 -0
- package/lib/typescript/src/useSyncState.d.ts.map +1 -1
- package/lib/typescript/src/utilities.d.ts +79 -39
- package/lib/typescript/src/utilities.d.ts.map +1 -1
- package/lib/typescript/src/validatePathConfig.d.ts.map +1 -1
- package/package.json +26 -22
- package/src/BaseNavigationContainer.tsx +468 -333
- package/src/ConsumedParamsContext.tsx +5 -0
- package/src/DataLoading.tsx +206 -0
- package/src/NavigationBuilderContext.tsx +44 -25
- package/src/NavigationFocusedRouteStateContext.tsx +4 -4
- package/src/NavigationIndependentTree.tsx +60 -12
- package/src/NavigationProvider.tsx +47 -20
- package/src/NavigationRootContext.tsx +11 -0
- package/src/NavigationStateContext.tsx +9 -6
- package/src/PreventRemoveContext.tsx +1 -0
- package/src/PreventRemoveProvider.tsx +55 -56
- package/src/SceneView.tsx +14 -40
- package/src/StaticNavigation.tsx +715 -328
- package/src/StaticTreeContext.tsx +7 -0
- package/src/createNavigationContainerRef.tsx +12 -11
- package/src/createNavigatorFactory.tsx +92 -8
- package/src/findFocusedRoute.tsx +16 -16
- package/src/getActionFromState.tsx +87 -51
- package/src/getPathFromState.tsx +310 -134
- package/src/getPatternParts.tsx +98 -16
- package/src/getStateFromPath.tsx +971 -344
- package/src/getStateFromRouteParams.tsx +59 -0
- package/src/index.tsx +57 -6
- package/src/internal.tsx +2 -0
- package/src/isRecordEqual.tsx +3 -1
- package/src/queryString.ts +109 -0
- package/src/theming/useTheme.tsx +1 -1
- package/src/types.tsx +799 -377
- package/src/useDescriptors.tsx +151 -43
- package/src/useEventEmitter.tsx +53 -39
- package/src/useFocusEffect.tsx +5 -2
- package/src/useFocusEvents.tsx +19 -8
- package/src/useFocusedListenersChildrenAdapter.tsx +3 -3
- package/src/useIsFocused.tsx +18 -21
- package/src/useKeyedChildListeners.tsx +5 -2
- package/src/useLazyValue.tsx +2 -2
- package/src/useNavigation.tsx +9 -26
- package/src/useNavigationBuilder.tsx +370 -201
- package/src/useNavigationCache.tsx +148 -123
- package/src/useNavigationHelpers.tsx +27 -37
- package/src/useNavigationIndependentTree.tsx +1 -1
- package/src/useNavigationState.tsx +207 -69
- package/src/useOnAction.tsx +92 -18
- package/src/useOnGetNavigation.tsx +30 -0
- package/src/useOnGetState.tsx +8 -4
- package/src/useOnPreventRemove.tsx +78 -43
- package/src/useOnRouteFocus.tsx +11 -15
- package/src/useOptionsGetters.tsx +41 -28
- package/src/usePreventRemove.tsx +13 -5
- package/src/usePreventRemoveContext.tsx +2 -2
- package/src/useRegisterNavigator.tsx +4 -4
- package/src/useRoute.tsx +20 -6
- package/src/useRouteCache.tsx +57 -35
- package/src/useScheduleUpdate.tsx +13 -11
- package/src/useStateForPath.tsx +1 -1
- package/src/useSyncState.tsx +39 -15
- package/src/utilities.tsx +151 -35
- package/src/validatePathConfig.tsx +86 -57
- package/lib/module/CurrentRenderContext.js +0 -10
- package/lib/module/CurrentRenderContext.js.map +0 -1
- package/lib/module/NavigationMetaContext.js +0 -15
- package/lib/module/NavigationMetaContext.js.map +0 -1
- package/lib/module/checkSerializable.js +0 -46
- package/lib/module/checkSerializable.js.map +0 -1
- package/lib/module/useComponent.js +0 -34
- package/lib/module/useComponent.js.map +0 -1
- package/lib/module/useCurrentRender.js +0 -19
- package/lib/module/useCurrentRender.js.map +0 -1
- package/lib/typescript/src/CurrentRenderContext.d.ts +0 -9
- package/lib/typescript/src/CurrentRenderContext.d.ts.map +0 -1
- package/lib/typescript/src/NavigationMetaContext.d.ts +0 -12
- package/lib/typescript/src/NavigationMetaContext.d.ts.map +0 -1
- package/lib/typescript/src/checkSerializable.d.ts +0 -10
- package/lib/typescript/src/checkSerializable.d.ts.map +0 -1
- package/lib/typescript/src/useComponent.d.ts +0 -7
- package/lib/typescript/src/useComponent.d.ts.map +0 -1
- package/lib/typescript/src/useCurrentRender.d.ts +0 -14
- package/lib/typescript/src/useCurrentRender.d.ts.map +0 -1
- package/src/CurrentRenderContext.tsx +0 -9
- package/src/NavigationMetaContext.tsx +0 -14
- package/src/checkSerializable.tsx +0 -74
- package/src/useComponent.tsx +0 -37
- package/src/useCurrentRender.tsx +0 -31
|
@@ -1,29 +1,50 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
// Cache the normalized config across calls for the same `options` reference,
|
|
4
|
+
// so we don't re-walk the config tree on every action conversion.
|
|
5
|
+
const cachedNormalizedConfig = new WeakMap();
|
|
3
6
|
export function getActionFromState(state, options) {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
7
|
+
let normalizedConfig;
|
|
8
|
+
if (options) {
|
|
9
|
+
const cached = cachedNormalizedConfig.get(options);
|
|
10
|
+
if (cached) {
|
|
11
|
+
normalizedConfig = cached;
|
|
12
|
+
} else {
|
|
13
|
+
normalizedConfig = createNormalizedConfigItem(options);
|
|
14
|
+
cachedNormalizedConfig.set(options, normalizedConfig);
|
|
15
|
+
}
|
|
16
|
+
} else {
|
|
17
|
+
normalizedConfig = {};
|
|
18
|
+
}
|
|
19
|
+
const routesLength = state.index == null || state.index >= state.routes.length ? state.routes.length : state.index + 1;
|
|
20
|
+
if (routesLength === 0) {
|
|
8
21
|
return undefined;
|
|
9
22
|
}
|
|
10
|
-
|
|
23
|
+
const firstRoute = state.routes[0];
|
|
24
|
+
if (firstRoute == null) {
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
const secondRoute = state.routes[1];
|
|
28
|
+
if (!(routesLength === 1 && firstRoute.key == null || routesLength === 2 && firstRoute.key == null && firstRoute.name === normalizedConfig?.initialRouteName && secondRoute?.key == null)) {
|
|
11
29
|
return {
|
|
12
30
|
type: 'RESET',
|
|
13
31
|
payload: state
|
|
14
32
|
};
|
|
15
33
|
}
|
|
16
34
|
const route = state.routes[state.index ?? state.routes.length - 1];
|
|
17
|
-
|
|
18
|
-
|
|
35
|
+
if (route == null) {
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
let current = route.state;
|
|
39
|
+
let config = normalizedConfig?.screens?.[route.name];
|
|
19
40
|
let params = {
|
|
20
41
|
...route.params
|
|
21
42
|
};
|
|
22
|
-
const payload =
|
|
43
|
+
const payload = {
|
|
23
44
|
name: route.name,
|
|
24
45
|
path: route.path,
|
|
25
46
|
params
|
|
26
|
-
}
|
|
47
|
+
};
|
|
27
48
|
|
|
28
49
|
// If the screen contains a navigator, pop other screens to navigate to it
|
|
29
50
|
// This avoid pushing multiple instances of navigators onto a stack
|
|
@@ -39,15 +60,23 @@ export function getActionFromState(state, options) {
|
|
|
39
60
|
// There are 2 ways we can detect if a screen contains a navigator:
|
|
40
61
|
// - The route contains nested state in `route.state`
|
|
41
62
|
// - Nested screens are defined in the config
|
|
42
|
-
if (
|
|
63
|
+
if (config?.screens && Object.keys(config.screens).length) {
|
|
43
64
|
payload.pop = true;
|
|
44
65
|
}
|
|
45
66
|
while (current) {
|
|
46
67
|
if (current.routes.length === 0) {
|
|
47
68
|
return undefined;
|
|
48
69
|
}
|
|
49
|
-
const
|
|
50
|
-
const route = routes[
|
|
70
|
+
const routesLength = current.index == null || current.index >= current.routes.length ? current.routes.length : current.index + 1;
|
|
71
|
+
const route = current.routes[routesLength - 1];
|
|
72
|
+
if (route == null) {
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
const firstRoute = current.routes[0];
|
|
76
|
+
if (firstRoute == null) {
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
const secondRoute = current.routes[1];
|
|
51
80
|
|
|
52
81
|
// Explicitly set to override existing value when merging params
|
|
53
82
|
Object.assign(params, {
|
|
@@ -56,10 +85,10 @@ export function getActionFromState(state, options) {
|
|
|
56
85
|
params: undefined,
|
|
57
86
|
state: undefined
|
|
58
87
|
});
|
|
59
|
-
if (
|
|
88
|
+
if (routesLength === 1 && firstRoute.key == null) {
|
|
60
89
|
params.initial = true;
|
|
61
90
|
params.screen = route.name;
|
|
62
|
-
} else if (
|
|
91
|
+
} else if (routesLength === 2 && firstRoute.key == null && firstRoute.name === config?.initialRouteName && secondRoute?.key == null) {
|
|
63
92
|
params.initial = false;
|
|
64
93
|
params.screen = route.name;
|
|
65
94
|
} else {
|
|
@@ -82,12 +111,9 @@ export function getActionFromState(state, options) {
|
|
|
82
111
|
params.pop = true;
|
|
83
112
|
}
|
|
84
113
|
}
|
|
85
|
-
if (payload
|
|
114
|
+
if (payload.params.screen || payload.params.state) {
|
|
86
115
|
payload.pop = true;
|
|
87
116
|
}
|
|
88
|
-
if (!payload) {
|
|
89
|
-
return;
|
|
90
|
-
}
|
|
91
117
|
|
|
92
118
|
// Try to construct payload for a `NAVIGATE` action from the state
|
|
93
119
|
// This lets us preserve the navigation state and not lose it
|
|
@@ -97,11 +123,10 @@ export function getActionFromState(state, options) {
|
|
|
97
123
|
};
|
|
98
124
|
}
|
|
99
125
|
const createNormalizedConfigItem = config => typeof config === 'object' && config != null ? {
|
|
100
|
-
initialRouteName: 'initialRouteName' in config ? config.initialRouteName : undefined,
|
|
126
|
+
initialRouteName: 'initialRouteName' in config && typeof config.initialRouteName === 'string' ? config.initialRouteName : undefined,
|
|
101
127
|
screens: 'screens' in config && config.screens != null ? createNormalizedConfigs(config.screens) : undefined
|
|
102
128
|
} : {};
|
|
103
129
|
const createNormalizedConfigs = options => Object.entries(options).reduce((acc, [k, v]) => {
|
|
104
|
-
// @ts-expect-error -we can't properly type this
|
|
105
130
|
acc[k] = createNormalizedConfigItem(v);
|
|
106
131
|
return acc;
|
|
107
132
|
}, {});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getActionFromState","state","options","normalizedConfig","createNormalizedConfigItem","
|
|
1
|
+
{"version":3,"names":["cachedNormalizedConfig","WeakMap","getActionFromState","state","options","normalizedConfig","cached","get","createNormalizedConfigItem","set","routesLength","index","routes","length","undefined","firstRoute","secondRoute","key","name","initialRouteName","type","payload","route","current","config","screens","params","path","Object","keys","pop","assign","initial","screen","createNormalizedConfigs","entries","reduce","acc","k","v"],"sourceRoot":"../../src","sources":["getActionFromState.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,22 +1,43 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
3
|
+
import { combinePatternParts, getPatternParts } from "./getPatternParts.js";
|
|
4
|
+
import { getStateFromRouteParams } from "./getStateFromRouteParams.js";
|
|
5
|
+
import * as queryString from "./queryString.js";
|
|
5
6
|
import { validatePathConfig } from "./validatePathConfig.js";
|
|
6
|
-
const
|
|
7
|
+
const serializeParamValue = value => value === null ? null : Array.isArray(value) ? value.map(String) : String(value);
|
|
8
|
+
const encodePathParam = value => {
|
|
9
|
+
let result = '';
|
|
10
|
+
for (const char of value) {
|
|
11
|
+
const charCode = char.charCodeAt(0);
|
|
12
|
+
const safe = charCode >= 65 && charCode <= 90 || charCode >= 97 && charCode <= 122 || charCode >= 48 && charCode <= 57 || "-._~!$&'()*+,;=:@".includes(char);
|
|
13
|
+
result += safe ? char : encodeURIComponent(char);
|
|
14
|
+
}
|
|
15
|
+
return result;
|
|
16
|
+
};
|
|
17
|
+
const getActiveRoute = (state, configs, getRouteState) => {
|
|
7
18
|
const route = typeof state.index === 'number' ? state.routes[state.index] : state.routes[state.routes.length - 1];
|
|
8
|
-
if (route
|
|
9
|
-
|
|
19
|
+
if (route == null) {
|
|
20
|
+
throw new Error(`Couldn't find the active route.`);
|
|
21
|
+
}
|
|
22
|
+
const config = configs?.[route.name];
|
|
23
|
+
const routeState = getRouteState(route, config);
|
|
24
|
+
if (routeState) {
|
|
25
|
+
return getActiveRoute(routeState, config?.screens, getRouteState);
|
|
10
26
|
}
|
|
11
27
|
return route;
|
|
12
28
|
};
|
|
13
29
|
const cachedNormalizedConfigs = new WeakMap();
|
|
14
30
|
const getNormalizedConfigs = options => {
|
|
15
|
-
if (!options
|
|
16
|
-
|
|
17
|
-
|
|
31
|
+
if (!options) {
|
|
32
|
+
return {};
|
|
33
|
+
}
|
|
34
|
+
const cached = cachedNormalizedConfigs.get(options);
|
|
35
|
+
if (cached) {
|
|
36
|
+
return cached;
|
|
37
|
+
}
|
|
38
|
+
validatePathConfig(options);
|
|
18
39
|
const normalizedConfigs = createNormalizedConfigs(options.screens);
|
|
19
|
-
cachedNormalizedConfigs.set(options
|
|
40
|
+
cachedNormalizedConfigs.set(options, normalizedConfigs);
|
|
20
41
|
return normalizedConfigs;
|
|
21
42
|
};
|
|
22
43
|
|
|
@@ -53,78 +74,119 @@ export function getPathFromState(state, options) {
|
|
|
53
74
|
if (state == null) {
|
|
54
75
|
throw Error(`Got '${String(state)}' for the navigation state. You must pass a valid state object.`);
|
|
55
76
|
}
|
|
56
|
-
if (options) {
|
|
57
|
-
validatePathConfig(options);
|
|
58
|
-
}
|
|
59
77
|
const configs = getNormalizedConfigs(options);
|
|
78
|
+
const cachedRouteStates = new Map();
|
|
79
|
+
const getRouteState = (route, config) => {
|
|
80
|
+
if (route.state) {
|
|
81
|
+
return route.state;
|
|
82
|
+
}
|
|
83
|
+
const hasScreenParams = route.params && 'screen' in route.params && typeof route.params.screen === 'string' && config?.screens?.[route.params.screen];
|
|
84
|
+
const hasStateParams = route.params && 'state' in route.params && config?.screens;
|
|
85
|
+
if (!route.params || !config?.screens || !hasScreenParams && !hasStateParams) {
|
|
86
|
+
return undefined;
|
|
87
|
+
}
|
|
88
|
+
if (!cachedRouteStates.has(route)) {
|
|
89
|
+
cachedRouteStates.set(route, getStateFromRouteParams(route.params));
|
|
90
|
+
}
|
|
91
|
+
return cachedRouteStates.get(route);
|
|
92
|
+
};
|
|
93
|
+
const focusedRoute = getActiveRoute(state, configs, getRouteState);
|
|
60
94
|
let path = '/';
|
|
61
95
|
let current = state;
|
|
62
|
-
const allParams = {};
|
|
63
96
|
while (current) {
|
|
64
97
|
let index = typeof current.index === 'number' ? current.index : 0;
|
|
65
|
-
|
|
98
|
+
const initialRoute = current.routes[index];
|
|
99
|
+
if (initialRoute == null) {
|
|
100
|
+
throw new Error(`Couldn't find a route at index ${index}.`);
|
|
101
|
+
}
|
|
102
|
+
let route = initialRoute;
|
|
66
103
|
let parts;
|
|
104
|
+
|
|
105
|
+
// Values for each pattern part object, so the same param name
|
|
106
|
+
// at different nesting levels gets the value from its own level
|
|
107
|
+
const partValues = new Map();
|
|
67
108
|
let focusedParams;
|
|
68
109
|
let currentOptions = configs;
|
|
69
|
-
const focusedRoute = getActiveRoute(state);
|
|
70
110
|
|
|
71
111
|
// Keep all the route names that appeared during going deeper in config in case the pattern is resolved to undefined
|
|
72
112
|
const nestedRouteNames = [];
|
|
73
113
|
let hasNext = true;
|
|
74
|
-
while (
|
|
75
|
-
|
|
114
|
+
while (hasNext) {
|
|
115
|
+
const config = currentOptions[route.name];
|
|
116
|
+
if (config == null) {
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
119
|
+
parts = config.parts;
|
|
120
|
+
const ownParts = config.ownParts;
|
|
76
121
|
nestedRouteNames.push(route.name);
|
|
77
122
|
if (route.params) {
|
|
78
|
-
const options =
|
|
79
|
-
const
|
|
123
|
+
const options = config;
|
|
124
|
+
const params = route.params;
|
|
125
|
+
const currentParams = {
|
|
126
|
+
__proto__: null
|
|
127
|
+
};
|
|
128
|
+
for (const key in params) {
|
|
129
|
+
const value = params[key];
|
|
80
130
|
if (value === undefined) {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
if (
|
|
84
|
-
|
|
131
|
+
let canBeOmitted = false;
|
|
132
|
+
for (const part of ownParts) {
|
|
133
|
+
if (part.name === key) {
|
|
134
|
+
canBeOmitted = part.optional === true || part.repeat != null;
|
|
135
|
+
break;
|
|
85
136
|
}
|
|
86
|
-
}
|
|
87
|
-
|
|
137
|
+
}
|
|
138
|
+
if (canBeOmitted) {
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
const stringify = options.stringify?.[key];
|
|
143
|
+
currentParams[key] = stringify ? stringify(value) : serializeParamValue(value);
|
|
144
|
+
}
|
|
145
|
+
const claimedParams = new Set();
|
|
146
|
+
for (const part of ownParts) {
|
|
147
|
+
if (part.name && part.name in currentParams) {
|
|
148
|
+
const value = currentParams[part.name];
|
|
149
|
+
if (value !== undefined) {
|
|
150
|
+
partValues.set(part, value);
|
|
151
|
+
claimedParams.add(part.name);
|
|
88
152
|
}
|
|
89
153
|
}
|
|
90
|
-
const stringify = options?.stringify?.[key] ?? String;
|
|
91
|
-
return [key, stringify(value)];
|
|
92
|
-
}).filter(entry => entry != null));
|
|
93
|
-
if (parts?.length) {
|
|
94
|
-
Object.assign(allParams, currentParams);
|
|
95
154
|
}
|
|
96
155
|
if (focusedRoute === route) {
|
|
97
156
|
// If this is the focused route, keep the params for later use
|
|
98
157
|
// We save it here since it's been stringified already
|
|
158
|
+
// Params claimed by the pattern shouldn't be repeated in the query string
|
|
99
159
|
focusedParams = {
|
|
100
|
-
|
|
160
|
+
__proto__: null
|
|
101
161
|
};
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
}) => {
|
|
107
|
-
if (param) {
|
|
108
|
-
// Remove the params present in the pattern since we'll only use the rest for query string
|
|
109
|
-
if (focusedParams) {
|
|
110
|
-
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
|
111
|
-
delete focusedParams[param];
|
|
112
|
-
}
|
|
162
|
+
for (const key in currentParams) {
|
|
163
|
+
const value = currentParams[key];
|
|
164
|
+
if (!claimedParams.has(key) && value !== undefined && value !== 'undefined') {
|
|
165
|
+
focusedParams[key] = value;
|
|
113
166
|
}
|
|
114
|
-
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
for (const part of ownParts) {
|
|
171
|
+
if (part.name && !partValues.has(part)) {
|
|
172
|
+
partValues.set(part, undefined);
|
|
115
173
|
}
|
|
116
174
|
}
|
|
117
175
|
|
|
118
176
|
// If there is no `screens` property or no nested state, we return pattern
|
|
119
|
-
|
|
177
|
+
const routeState = getRouteState(route, config);
|
|
178
|
+
if (!config.screens || routeState == null) {
|
|
120
179
|
hasNext = false;
|
|
121
180
|
} else {
|
|
122
|
-
index = typeof
|
|
123
|
-
const nextRoute =
|
|
124
|
-
|
|
181
|
+
index = typeof routeState.index === 'number' ? routeState.index : routeState.routes.length - 1;
|
|
182
|
+
const nextRoute = routeState.routes[index];
|
|
183
|
+
if (nextRoute == null) {
|
|
184
|
+
throw new Error(`Couldn't find a route at index ${index}.`);
|
|
185
|
+
}
|
|
186
|
+
const nestedConfig = config.screens;
|
|
125
187
|
|
|
126
188
|
// if there is config for next route name, we go deeper
|
|
127
|
-
if (
|
|
189
|
+
if (nextRoute.name in nestedConfig) {
|
|
128
190
|
route = nextRoute;
|
|
129
191
|
currentOptions = nestedConfig;
|
|
130
192
|
} else {
|
|
@@ -133,56 +195,90 @@ export function getPathFromState(state, options) {
|
|
|
133
195
|
}
|
|
134
196
|
}
|
|
135
197
|
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
198
|
+
const routeState = getRouteState(route, currentOptions[route.name]);
|
|
199
|
+
if (currentOptions[route.name] != null) {
|
|
200
|
+
if (parts) {
|
|
201
|
+
let index = 0;
|
|
202
|
+
for (const part of parts) {
|
|
203
|
+
const {
|
|
204
|
+
segment,
|
|
205
|
+
name,
|
|
206
|
+
optional,
|
|
207
|
+
repeat
|
|
208
|
+
} = part;
|
|
209
|
+
if (index > 0) {
|
|
210
|
+
path += '/';
|
|
211
|
+
}
|
|
212
|
+
index++;
|
|
148
213
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
if (
|
|
153
|
-
|
|
154
|
-
|
|
214
|
+
// We don't know what to show for wildcard patterns
|
|
215
|
+
// Showing the route name seems ok, though whatever we show here will be incorrect
|
|
216
|
+
// Since the page doesn't actually exist
|
|
217
|
+
if (segment === '*') {
|
|
218
|
+
path += route.name;
|
|
219
|
+
continue;
|
|
155
220
|
}
|
|
156
221
|
|
|
157
|
-
//
|
|
158
|
-
|
|
159
|
-
|
|
222
|
+
// If the path has a pattern for a param, put the param in the path
|
|
223
|
+
if (name) {
|
|
224
|
+
const value = partValues.get(part);
|
|
225
|
+
if (value === undefined && optional) {
|
|
226
|
+
// Optional params without value assigned in route.params should be ignored
|
|
227
|
+
continue;
|
|
228
|
+
}
|
|
229
|
+
if (repeat) {
|
|
230
|
+
if (value === null) {
|
|
231
|
+
throw new Error(`The path pattern '${segment}' does not allow null for param '${name}'.`);
|
|
232
|
+
}
|
|
233
|
+
if (Array.isArray(value)) {
|
|
234
|
+
throw new Error(`The path pattern '${segment}' requires a string for param '${name}'.`);
|
|
235
|
+
}
|
|
236
|
+
const values = value === undefined || value === '' ? [] : value.split('/');
|
|
237
|
+
if (repeat === 'one-or-more' && values.length === 0) {
|
|
238
|
+
throw new Error(`The path pattern '${segment}' requires at least one value for param '${name}'.`);
|
|
239
|
+
}
|
|
240
|
+
if (values.some(item => item.length === 0)) {
|
|
241
|
+
throw new Error(`The path pattern '${segment}' does not allow empty values for param '${name}'.`);
|
|
242
|
+
}
|
|
243
|
+
if (values.length === 0) {
|
|
244
|
+
path = path.replace(/\/$/, '');
|
|
245
|
+
}
|
|
246
|
+
path += values.map(encodePathParam).join('/');
|
|
247
|
+
continue;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
// Valid characters according to
|
|
251
|
+
// https://datatracker.ietf.org/doc/html/rfc3986#section-3.3 (see pchar definition)
|
|
252
|
+
path += encodePathParam(String(value));
|
|
253
|
+
continue;
|
|
254
|
+
}
|
|
255
|
+
path += encodeURIComponent(segment);
|
|
160
256
|
}
|
|
161
|
-
|
|
162
|
-
}).join('/');
|
|
257
|
+
}
|
|
163
258
|
} else {
|
|
164
259
|
path += encodeURIComponent(route.name);
|
|
165
260
|
}
|
|
166
261
|
if (!focusedParams && focusedRoute.params) {
|
|
167
|
-
focusedParams =
|
|
262
|
+
focusedParams = {
|
|
263
|
+
__proto__: null
|
|
264
|
+
};
|
|
265
|
+
const params = focusedRoute.params;
|
|
266
|
+
for (const key in params) {
|
|
267
|
+
const value = serializeParamValue(params[key]);
|
|
268
|
+
if (value !== 'undefined') {
|
|
269
|
+
focusedParams[key] = value;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
168
272
|
}
|
|
169
|
-
if (
|
|
273
|
+
if (routeState) {
|
|
170
274
|
path += '/';
|
|
171
275
|
} else if (focusedParams) {
|
|
172
|
-
|
|
173
|
-
if (focusedParams[param] === 'undefined') {
|
|
174
|
-
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
|
175
|
-
delete focusedParams[param];
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
const query = queryString.stringify(focusedParams, {
|
|
179
|
-
sort: false
|
|
180
|
-
});
|
|
276
|
+
const query = queryString.stringify(focusedParams);
|
|
181
277
|
if (query) {
|
|
182
278
|
path += `?${query}`;
|
|
183
279
|
}
|
|
184
280
|
}
|
|
185
|
-
current =
|
|
281
|
+
current = routeState;
|
|
186
282
|
}
|
|
187
283
|
|
|
188
284
|
// Include the root path if specified
|
|
@@ -191,8 +287,12 @@ export function getPathFromState(state, options) {
|
|
|
191
287
|
}
|
|
192
288
|
|
|
193
289
|
// Remove multiple as well as trailing slashes
|
|
194
|
-
|
|
195
|
-
|
|
290
|
+
if (path.includes('//')) {
|
|
291
|
+
path = path.replace(/\/+/g, '/');
|
|
292
|
+
}
|
|
293
|
+
if (path.length > 1 && path.endsWith('/')) {
|
|
294
|
+
path = path.slice(0, -1);
|
|
295
|
+
}
|
|
196
296
|
|
|
197
297
|
// If path doesn't start with a slash, add it
|
|
198
298
|
// This makes sure that history.pushState will update the path correctly instead of appending
|
|
@@ -203,15 +303,16 @@ export function getPathFromState(state, options) {
|
|
|
203
303
|
}
|
|
204
304
|
const createConfigItem = (config, parentParts) => {
|
|
205
305
|
if (typeof config === 'string') {
|
|
206
|
-
|
|
207
|
-
const parts = getPatternParts(config);
|
|
306
|
+
const ownParts = getPatternParts(config);
|
|
208
307
|
if (parentParts) {
|
|
209
308
|
return {
|
|
210
|
-
parts:
|
|
309
|
+
parts: combinePatternParts(parentParts, ownParts),
|
|
310
|
+
ownParts
|
|
211
311
|
};
|
|
212
312
|
}
|
|
213
313
|
return {
|
|
214
|
-
parts
|
|
314
|
+
parts: ownParts,
|
|
315
|
+
ownParts
|
|
215
316
|
};
|
|
216
317
|
}
|
|
217
318
|
if (config.exact && config.path === undefined) {
|
|
@@ -220,16 +321,25 @@ const createConfigItem = (config, parentParts) => {
|
|
|
220
321
|
|
|
221
322
|
// If an object is specified as the value (e.g. Foo: { ... }),
|
|
222
323
|
// It can have `path` property and `screens` prop which has nested configs
|
|
223
|
-
const
|
|
324
|
+
const ownParts = config.path ? getPatternParts(config.path) : [];
|
|
325
|
+
const parts = config.exact !== true ? combinePatternParts(parentParts || [], ownParts) : ownParts.length ? ownParts : undefined;
|
|
224
326
|
const screens = 'screens' in config && config.screens ? createNormalizedConfigs(config.screens, parts) : undefined;
|
|
225
327
|
return {
|
|
226
328
|
parts,
|
|
329
|
+
ownParts,
|
|
227
330
|
stringify: config.stringify,
|
|
228
331
|
screens
|
|
229
332
|
};
|
|
230
333
|
};
|
|
231
|
-
const createNormalizedConfigs = (options, parts) =>
|
|
232
|
-
const
|
|
233
|
-
|
|
234
|
-
|
|
334
|
+
const createNormalizedConfigs = (options, parts) => {
|
|
335
|
+
const configs = {};
|
|
336
|
+
const screens = options;
|
|
337
|
+
for (const name in screens) {
|
|
338
|
+
const config = screens[name];
|
|
339
|
+
if (config !== undefined) {
|
|
340
|
+
configs[name] = createConfigItem(config, parts);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
return configs;
|
|
344
|
+
};
|
|
235
345
|
//# sourceMappingURL=getPathFromState.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["queryString","getPatternParts","validatePathConfig","getActiveRoute","state","route","index","routes","length","cachedNormalizedConfigs","WeakMap","getNormalizedConfigs","options","screens","cached","get","normalizedConfigs","createNormalizedConfigs","set","getPathFromState","Error","String","configs","path","current","allParams","parts","focusedParams","currentOptions","focusedRoute","nestedRouteNames","hasNext","name","push","params","currentParams","Object","fromEntries","entries","map","key","value","undefined","optional","find","part","param","stringify","filter","entry","assign","forEach","nextRoute","nestedConfig","segment","Array","from","char","test","encodeURIComponent","join","query","sort","replace","startsWith","createConfigItem","config","parentParts","exact","c","result"],"sourceRoot":"../../src","sources":["getPathFromState.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["combinePatternParts","getPatternParts","getStateFromRouteParams","queryString","validatePathConfig","serializeParamValue","value","Array","isArray","map","String","encodePathParam","result","char","charCode","charCodeAt","safe","includes","encodeURIComponent","getActiveRoute","state","configs","getRouteState","route","index","routes","length","Error","config","name","routeState","screens","cachedNormalizedConfigs","WeakMap","getNormalizedConfigs","options","cached","get","normalizedConfigs","createNormalizedConfigs","set","getPathFromState","cachedRouteStates","Map","hasScreenParams","params","screen","hasStateParams","undefined","has","focusedRoute","path","current","initialRoute","parts","partValues","focusedParams","currentOptions","nestedRouteNames","hasNext","ownParts","push","currentParams","__proto__","key","canBeOmitted","part","optional","repeat","stringify","claimedParams","Set","add","nextRoute","nestedConfig","segment","values","split","some","item","replace","join","query","endsWith","slice","startsWith","createConfigItem","parentParts","exact"],"sourceRoot":"../../src","sources":["getPathFromState.tsx"],"mappings":"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","ignoreList":[]}
|