@react-navigation/core 7.8.4 → 7.8.5
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/package.json +4 -3
- package/lib/commonjs/BaseNavigationContainer.js +0 -368
- package/lib/commonjs/BaseNavigationContainer.js.map +0 -1
- package/lib/commonjs/CurrentRenderContext.js +0 -15
- package/lib/commonjs/CurrentRenderContext.js.map +0 -1
- package/lib/commonjs/DeprecatedNavigationInChildContext.js +0 -14
- package/lib/commonjs/DeprecatedNavigationInChildContext.js.map +0 -1
- package/lib/commonjs/EnsureSingleNavigator.js +0 -43
- package/lib/commonjs/EnsureSingleNavigator.js.map +0 -1
- package/lib/commonjs/Group.js +0 -14
- package/lib/commonjs/Group.js.map +0 -1
- package/lib/commonjs/NavigationBuilderContext.js +0 -23
- package/lib/commonjs/NavigationBuilderContext.js.map +0 -1
- package/lib/commonjs/NavigationContainerRefContext.js +0 -14
- package/lib/commonjs/NavigationContainerRefContext.js.map +0 -1
- package/lib/commonjs/NavigationContext.js +0 -14
- package/lib/commonjs/NavigationContext.js.map +0 -1
- package/lib/commonjs/NavigationFocusedRouteStateContext.js +0 -14
- package/lib/commonjs/NavigationFocusedRouteStateContext.js.map +0 -1
- package/lib/commonjs/NavigationHelpersContext.js +0 -15
- package/lib/commonjs/NavigationHelpersContext.js.map +0 -1
- package/lib/commonjs/NavigationIndependentTree.js +0 -35
- package/lib/commonjs/NavigationIndependentTree.js.map +0 -1
- package/lib/commonjs/NavigationIndependentTreeContext.js +0 -14
- package/lib/commonjs/NavigationIndependentTreeContext.js.map +0 -1
- package/lib/commonjs/NavigationRouteContext.js +0 -14
- package/lib/commonjs/NavigationRouteContext.js.map +0 -1
- package/lib/commonjs/NavigationStateContext.js +0 -29
- package/lib/commonjs/NavigationStateContext.js.map +0 -1
- package/lib/commonjs/PreventRemoveContext.js +0 -16
- package/lib/commonjs/PreventRemoveContext.js.map +0 -1
- package/lib/commonjs/PreventRemoveProvider.js +0 -91
- package/lib/commonjs/PreventRemoveProvider.js.map +0 -1
- package/lib/commonjs/SceneView.js +0 -151
- package/lib/commonjs/SceneView.js.map +0 -1
- package/lib/commonjs/Screen.js +0 -14
- package/lib/commonjs/Screen.js.map +0 -1
- package/lib/commonjs/StaticContainer.js +0 -31
- package/lib/commonjs/StaticContainer.js.map +0 -1
- package/lib/commonjs/StaticNavigation.js +0 -258
- package/lib/commonjs/StaticNavigation.js.map +0 -1
- package/lib/commonjs/UnhandledActionContext.js +0 -11
- package/lib/commonjs/UnhandledActionContext.js.map +0 -1
- package/lib/commonjs/arrayStartsWith.js +0 -16
- package/lib/commonjs/arrayStartsWith.js.map +0 -1
- package/lib/commonjs/checkDuplicateRouteNames.js +0 -25
- package/lib/commonjs/checkDuplicateRouteNames.js.map +0 -1
- package/lib/commonjs/checkSerializable.js +0 -50
- package/lib/commonjs/checkSerializable.js.map +0 -1
- package/lib/commonjs/createNavigationContainerRef.js +0 -69
- package/lib/commonjs/createNavigationContainerRef.js.map +0 -1
- package/lib/commonjs/createNavigatorFactory.js +0 -34
- package/lib/commonjs/createNavigatorFactory.js.map +0 -1
- package/lib/commonjs/deepFreeze.js +0 -40
- package/lib/commonjs/deepFreeze.js.map +0 -1
- package/lib/commonjs/findFocusedRoute.js +0 -15
- package/lib/commonjs/findFocusedRoute.js.map +0 -1
- package/lib/commonjs/getActionFromState.js +0 -111
- package/lib/commonjs/getActionFromState.js.map +0 -1
- package/lib/commonjs/getFocusedRouteNameFromRoute.js +0 -22
- package/lib/commonjs/getFocusedRouteNameFromRoute.js.map +0 -1
- package/lib/commonjs/getPathFromState.js +0 -241
- package/lib/commonjs/getPathFromState.js.map +0 -1
- package/lib/commonjs/getPatternParts.js +0 -105
- package/lib/commonjs/getPatternParts.js.map +0 -1
- package/lib/commonjs/getStateFromPath.js +0 -521
- package/lib/commonjs/getStateFromPath.js.map +0 -1
- package/lib/commonjs/index.js +0 -295
- package/lib/commonjs/index.js.map +0 -1
- package/lib/commonjs/isArrayEqual.js +0 -20
- package/lib/commonjs/isArrayEqual.js.map +0 -1
- package/lib/commonjs/isRecordEqual.js +0 -21
- package/lib/commonjs/isRecordEqual.js.map +0 -1
- package/lib/commonjs/package.json +0 -1
- package/lib/commonjs/theming/ThemeContext.js +0 -12
- package/lib/commonjs/theming/ThemeContext.js.map +0 -1
- package/lib/commonjs/theming/ThemeProvider.js +0 -21
- package/lib/commonjs/theming/ThemeProvider.js.map +0 -1
- package/lib/commonjs/theming/useTheme.js +0 -18
- package/lib/commonjs/theming/useTheme.js.map +0 -1
- package/lib/commonjs/types.js +0 -9
- package/lib/commonjs/types.js.map +0 -1
- package/lib/commonjs/useChildListeners.js +0 -36
- package/lib/commonjs/useChildListeners.js.map +0 -1
- package/lib/commonjs/useComponent.js +0 -40
- package/lib/commonjs/useComponent.js.map +0 -1
- package/lib/commonjs/useCurrentRender.js +0 -25
- package/lib/commonjs/useCurrentRender.js.map +0 -1
- package/lib/commonjs/useDescriptors.js +0 -192
- package/lib/commonjs/useDescriptors.js.map +0 -1
- package/lib/commonjs/useEventEmitter.js +0 -105
- package/lib/commonjs/useEventEmitter.js.map +0 -1
- package/lib/commonjs/useFocusEffect.js +0 -80
- package/lib/commonjs/useFocusEffect.js.map +0 -1
- package/lib/commonjs/useFocusEvents.js +0 -70
- package/lib/commonjs/useFocusEvents.js.map +0 -1
- package/lib/commonjs/useFocusedListenersChildrenAdapter.js +0 -48
- package/lib/commonjs/useFocusedListenersChildrenAdapter.js.map +0 -1
- package/lib/commonjs/useIsFocused.js +0 -28
- package/lib/commonjs/useIsFocused.js.map +0 -1
- package/lib/commonjs/useIsomorphicLayoutEffect.js +0 -12
- package/lib/commonjs/useIsomorphicLayoutEffect.js.map +0 -1
- package/lib/commonjs/useIsomorphicLayoutEffect.native.js +0 -9
- package/lib/commonjs/useIsomorphicLayoutEffect.native.js.map +0 -1
- package/lib/commonjs/useKeyedChildListeners.js +0 -33
- package/lib/commonjs/useKeyedChildListeners.js.map +0 -1
- package/lib/commonjs/useLazyValue.js +0 -17
- package/lib/commonjs/useLazyValue.js.map +0 -1
- package/lib/commonjs/useNavigation.js +0 -27
- package/lib/commonjs/useNavigation.js.map +0 -1
- package/lib/commonjs/useNavigationBuilder.js +0 -495
- package/lib/commonjs/useNavigationBuilder.js.map +0 -1
- package/lib/commonjs/useNavigationCache.js +0 -162
- package/lib/commonjs/useNavigationCache.js.map +0 -1
- package/lib/commonjs/useNavigationContainerRef.js +0 -18
- package/lib/commonjs/useNavigationContainerRef.js.map +0 -1
- package/lib/commonjs/useNavigationHelpers.js +0 -88
- package/lib/commonjs/useNavigationHelpers.js.map +0 -1
- package/lib/commonjs/useNavigationIndependentTree.js +0 -14
- package/lib/commonjs/useNavigationIndependentTree.js.map +0 -1
- package/lib/commonjs/useNavigationState.js +0 -26
- package/lib/commonjs/useNavigationState.js.map +0 -1
- package/lib/commonjs/useOnAction.js +0 -106
- package/lib/commonjs/useOnAction.js.map +0 -1
- package/lib/commonjs/useOnGetState.js +0 -48
- package/lib/commonjs/useOnGetState.js.map +0 -1
- package/lib/commonjs/useOnPreventRemove.js +0 -72
- package/lib/commonjs/useOnPreventRemove.js.map +0 -1
- package/lib/commonjs/useOnRouteFocus.js +0 -36
- package/lib/commonjs/useOnRouteFocus.js.map +0 -1
- package/lib/commonjs/useOptionsGetters.js +0 -78
- package/lib/commonjs/useOptionsGetters.js.map +0 -1
- package/lib/commonjs/usePreventRemove.js +0 -48
- package/lib/commonjs/usePreventRemove.js.map +0 -1
- package/lib/commonjs/usePreventRemoveContext.js +0 -18
- package/lib/commonjs/usePreventRemoveContext.js.map +0 -1
- package/lib/commonjs/useRegisterNavigator.js +0 -32
- package/lib/commonjs/useRegisterNavigator.js.map +0 -1
- package/lib/commonjs/useRoute.js +0 -23
- package/lib/commonjs/useRoute.js.map +0 -1
- package/lib/commonjs/useRouteCache.js +0 -69
- package/lib/commonjs/useRouteCache.js.map +0 -1
- package/lib/commonjs/useScheduleUpdate.js +0 -30
- package/lib/commonjs/useScheduleUpdate.js.map +0 -1
- package/lib/commonjs/useStateForPath.js +0 -21
- package/lib/commonjs/useStateForPath.js.map +0 -1
- package/lib/commonjs/useSyncState.js +0 -87
- package/lib/commonjs/useSyncState.js.map +0 -1
- package/lib/commonjs/validatePathConfig.js +0 -56
- package/lib/commonjs/validatePathConfig.js.map +0 -1
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.getActionFromState = getActionFromState;
|
|
7
|
-
function getActionFromState(state, options) {
|
|
8
|
-
// Create a normalized configs object which will be easier to use
|
|
9
|
-
const normalizedConfig = options ? createNormalizedConfigItem(options) : {};
|
|
10
|
-
const routes = state.index != null ? state.routes.slice(0, state.index + 1) : state.routes;
|
|
11
|
-
if (routes.length === 0) {
|
|
12
|
-
return undefined;
|
|
13
|
-
}
|
|
14
|
-
if (!(routes.length === 1 && routes[0].key === undefined || routes.length === 2 && routes[0].key === undefined && routes[0].name === normalizedConfig?.initialRouteName && routes[1].key === undefined)) {
|
|
15
|
-
return {
|
|
16
|
-
type: 'RESET',
|
|
17
|
-
payload: state
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
const route = state.routes[state.index ?? state.routes.length - 1];
|
|
21
|
-
let current = route?.state;
|
|
22
|
-
let config = normalizedConfig?.screens?.[route?.name];
|
|
23
|
-
let params = {
|
|
24
|
-
...route.params
|
|
25
|
-
};
|
|
26
|
-
const payload = route ? {
|
|
27
|
-
name: route.name,
|
|
28
|
-
path: route.path,
|
|
29
|
-
params
|
|
30
|
-
} : undefined;
|
|
31
|
-
|
|
32
|
-
// If the screen contains a navigator, pop other screens to navigate to it
|
|
33
|
-
// This avoid pushing multiple instances of navigators onto a stack
|
|
34
|
-
//
|
|
35
|
-
// For example:
|
|
36
|
-
// - RootStack
|
|
37
|
-
// - BottomTabs
|
|
38
|
-
// - SomeScreen
|
|
39
|
-
//
|
|
40
|
-
// In this case, if deep linking to `BottomTabs`, we should pop `SomeScreen`
|
|
41
|
-
// Otherwise, we'll end up with 2 instances of `BottomTabs` in the stack
|
|
42
|
-
//
|
|
43
|
-
// There are 2 ways we can detect if a screen contains a navigator:
|
|
44
|
-
// - The route contains nested state in `route.state`
|
|
45
|
-
// - Nested screens are defined in the config
|
|
46
|
-
if (payload && config?.screens && Object.keys(config.screens).length) {
|
|
47
|
-
payload.pop = true;
|
|
48
|
-
}
|
|
49
|
-
while (current) {
|
|
50
|
-
if (current.routes.length === 0) {
|
|
51
|
-
return undefined;
|
|
52
|
-
}
|
|
53
|
-
const routes = current.index != null ? current.routes.slice(0, current.index + 1) : current.routes;
|
|
54
|
-
const route = routes[routes.length - 1];
|
|
55
|
-
|
|
56
|
-
// Explicitly set to override existing value when merging params
|
|
57
|
-
Object.assign(params, {
|
|
58
|
-
initial: undefined,
|
|
59
|
-
screen: undefined,
|
|
60
|
-
params: undefined,
|
|
61
|
-
state: undefined
|
|
62
|
-
});
|
|
63
|
-
if (routes.length === 1 && routes[0].key === undefined) {
|
|
64
|
-
params.initial = true;
|
|
65
|
-
params.screen = route.name;
|
|
66
|
-
} else if (routes.length === 2 && routes[0].key === undefined && routes[0].name === config?.initialRouteName && routes[1].key === undefined) {
|
|
67
|
-
params.initial = false;
|
|
68
|
-
params.screen = route.name;
|
|
69
|
-
} else {
|
|
70
|
-
params.state = current;
|
|
71
|
-
break;
|
|
72
|
-
}
|
|
73
|
-
if (route.state) {
|
|
74
|
-
params.params = {
|
|
75
|
-
...route.params
|
|
76
|
-
};
|
|
77
|
-
params.pop = true;
|
|
78
|
-
params = params.params;
|
|
79
|
-
} else {
|
|
80
|
-
params.path = route.path;
|
|
81
|
-
params.params = route.params;
|
|
82
|
-
}
|
|
83
|
-
current = route.state;
|
|
84
|
-
config = config?.screens?.[route.name];
|
|
85
|
-
if (config?.screens && Object.keys(config.screens).length) {
|
|
86
|
-
params.pop = true;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
if (payload?.params.screen || payload?.params.state) {
|
|
90
|
-
payload.pop = true;
|
|
91
|
-
}
|
|
92
|
-
if (!payload) {
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
// Try to construct payload for a `NAVIGATE` action from the state
|
|
97
|
-
// This lets us preserve the navigation state and not lose it
|
|
98
|
-
return {
|
|
99
|
-
type: 'NAVIGATE',
|
|
100
|
-
payload
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
const createNormalizedConfigItem = config => typeof config === 'object' && config != null ? {
|
|
104
|
-
initialRouteName: config.initialRouteName,
|
|
105
|
-
screens: config.screens != null ? createNormalizedConfigs(config.screens) : undefined
|
|
106
|
-
} : {};
|
|
107
|
-
const createNormalizedConfigs = options => Object.entries(options).reduce((acc, [k, v]) => {
|
|
108
|
-
acc[k] = createNormalizedConfigItem(v);
|
|
109
|
-
return acc;
|
|
110
|
-
}, {});
|
|
111
|
-
//# sourceMappingURL=getActionFromState.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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","keys","pop","assign","initial","screen","createNormalizedConfigs","entries","reduce","acc","k","v"],"sourceRoot":"../../src","sources":["getActionFromState.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.getFocusedRouteNameFromRoute = getFocusedRouteNameFromRoute;
|
|
7
|
-
var _useRouteCache = require("./useRouteCache.js");
|
|
8
|
-
function getFocusedRouteNameFromRoute(route) {
|
|
9
|
-
// @ts-expect-error: this isn't in type definitions coz we want this private
|
|
10
|
-
const state = route[_useRouteCache.CHILD_STATE] ?? route.state;
|
|
11
|
-
const params = route.params;
|
|
12
|
-
const routeName = state ?
|
|
13
|
-
// Get the currently active route name in the nested navigator
|
|
14
|
-
state.routes[
|
|
15
|
-
// If we have a partial state without index, for tab/drawer, first screen will be focused one, and last for stack
|
|
16
|
-
// The type property will only exist for rehydrated state and not for state from deep link
|
|
17
|
-
state.index ?? (typeof state.type === 'string' && state.type !== 'stack' ? 0 : state.routes.length - 1)].name :
|
|
18
|
-
// If state doesn't exist, we need to default to `screen` param if available
|
|
19
|
-
typeof params?.screen === 'string' ? params.screen : undefined;
|
|
20
|
-
return routeName;
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=getFocusedRouteNameFromRoute.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_useRouteCache","require","getFocusedRouteNameFromRoute","route","state","CHILD_STATE","params","routeName","routes","index","type","length","name","screen","undefined"],"sourceRoot":"../../src","sources":["getFocusedRouteNameFromRoute.tsx"],"mappings":";;;;;;AAEA,IAAAA,cAAA,GAAAC,OAAA;AAEO,SAASC,4BAA4BA,CAC1CC,KAA6B,EACT;EACpB;EACA,MAAMC,KAAK,GAAGD,KAAK,CAACE,0BAAW,CAAC,IAAIF,KAAK,CAACC,KAAK;EAC/C,MAAME,MAAM,GAAGH,KAAK,CAACG,MAA0C;EAE/D,MAAMC,SAAS,GAAGH,KAAK;EACnB;EACAA,KAAK,CAACI,MAAM;EACV;EACA;EACAJ,KAAK,CAACK,KAAK,KACR,OAAOL,KAAK,CAACM,IAAI,KAAK,QAAQ,IAAIN,KAAK,CAACM,IAAI,KAAK,OAAO,GACrD,CAAC,GACDN,KAAK,CAACI,MAAM,CAACG,MAAM,GAAG,CAAC,CAAC,CAC/B,CAACC,IAAI;EACN;EACA,OAAON,MAAM,EAAEO,MAAM,KAAK,QAAQ,GAChCP,MAAM,CAACO,MAAM,GACbC,SAAS;EAEf,OAAOP,SAAS;AAClB","ignoreList":[]}
|
|
@@ -1,241 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.getPathFromState = getPathFromState;
|
|
7
|
-
var queryString = _interopRequireWildcard(require("query-string"));
|
|
8
|
-
var _getPatternParts = require("./getPatternParts.js");
|
|
9
|
-
var _validatePathConfig = require("./validatePathConfig.js");
|
|
10
|
-
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
11
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
12
|
-
const getActiveRoute = state => {
|
|
13
|
-
const route = typeof state.index === 'number' ? state.routes[state.index] : state.routes[state.routes.length - 1];
|
|
14
|
-
if (route.state) {
|
|
15
|
-
return getActiveRoute(route.state);
|
|
16
|
-
}
|
|
17
|
-
return route;
|
|
18
|
-
};
|
|
19
|
-
const cachedNormalizedConfigs = new WeakMap();
|
|
20
|
-
const getNormalizedConfigs = options => {
|
|
21
|
-
if (!options?.screens) return {};
|
|
22
|
-
const cached = cachedNormalizedConfigs.get(options?.screens);
|
|
23
|
-
if (cached) return cached;
|
|
24
|
-
const normalizedConfigs = createNormalizedConfigs(options.screens);
|
|
25
|
-
cachedNormalizedConfigs.set(options.screens, normalizedConfigs);
|
|
26
|
-
return normalizedConfigs;
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Utility to serialize a navigation state object to a path string.
|
|
31
|
-
*
|
|
32
|
-
* @example
|
|
33
|
-
* ```js
|
|
34
|
-
* getPathFromState(
|
|
35
|
-
* {
|
|
36
|
-
* routes: [
|
|
37
|
-
* {
|
|
38
|
-
* name: 'Chat',
|
|
39
|
-
* params: { author: 'Jane', id: 42 },
|
|
40
|
-
* },
|
|
41
|
-
* ],
|
|
42
|
-
* },
|
|
43
|
-
* {
|
|
44
|
-
* screens: {
|
|
45
|
-
* Chat: {
|
|
46
|
-
* path: 'chat/:author/:id',
|
|
47
|
-
* stringify: { author: author => author.toLowerCase() }
|
|
48
|
-
* }
|
|
49
|
-
* }
|
|
50
|
-
* }
|
|
51
|
-
* )
|
|
52
|
-
* ```
|
|
53
|
-
*
|
|
54
|
-
* @param state Navigation state to serialize.
|
|
55
|
-
* @param options Extra options to fine-tune how to serialize the path.
|
|
56
|
-
* @returns Path representing the state, e.g. /foo/bar?count=42.
|
|
57
|
-
*/
|
|
58
|
-
function getPathFromState(state, options) {
|
|
59
|
-
if (state == null) {
|
|
60
|
-
throw Error(`Got '${String(state)}' for the navigation state. You must pass a valid state object.`);
|
|
61
|
-
}
|
|
62
|
-
if (options) {
|
|
63
|
-
(0, _validatePathConfig.validatePathConfig)(options);
|
|
64
|
-
}
|
|
65
|
-
const configs = getNormalizedConfigs(options);
|
|
66
|
-
let path = '/';
|
|
67
|
-
let current = state;
|
|
68
|
-
const allParams = {};
|
|
69
|
-
while (current) {
|
|
70
|
-
let index = typeof current.index === 'number' ? current.index : 0;
|
|
71
|
-
let route = current.routes[index];
|
|
72
|
-
let parts;
|
|
73
|
-
let focusedParams;
|
|
74
|
-
let currentOptions = configs;
|
|
75
|
-
const focusedRoute = getActiveRoute(state);
|
|
76
|
-
|
|
77
|
-
// Keep all the route names that appeared during going deeper in config in case the pattern is resolved to undefined
|
|
78
|
-
const nestedRouteNames = [];
|
|
79
|
-
let hasNext = true;
|
|
80
|
-
while (route.name in currentOptions && hasNext) {
|
|
81
|
-
parts = currentOptions[route.name].parts;
|
|
82
|
-
nestedRouteNames.push(route.name);
|
|
83
|
-
if (route.params) {
|
|
84
|
-
const options = currentOptions[route.name];
|
|
85
|
-
const currentParams = Object.fromEntries(Object.entries(route.params).map(([key, value]) => {
|
|
86
|
-
if (value === undefined) {
|
|
87
|
-
if (options) {
|
|
88
|
-
const optional = options.parts?.find(part => part.param === key)?.optional;
|
|
89
|
-
if (optional) {
|
|
90
|
-
return null;
|
|
91
|
-
}
|
|
92
|
-
} else {
|
|
93
|
-
return null;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
const stringify = options?.stringify?.[key] ?? String;
|
|
97
|
-
return [key, stringify(value)];
|
|
98
|
-
}).filter(entry => entry != null));
|
|
99
|
-
if (parts?.length) {
|
|
100
|
-
Object.assign(allParams, currentParams);
|
|
101
|
-
}
|
|
102
|
-
if (focusedRoute === route) {
|
|
103
|
-
// If this is the focused route, keep the params for later use
|
|
104
|
-
// We save it here since it's been stringified already
|
|
105
|
-
focusedParams = {
|
|
106
|
-
...currentParams
|
|
107
|
-
};
|
|
108
|
-
parts
|
|
109
|
-
// eslint-disable-next-line no-loop-func
|
|
110
|
-
?.forEach(({
|
|
111
|
-
param
|
|
112
|
-
}) => {
|
|
113
|
-
if (param) {
|
|
114
|
-
// Remove the params present in the pattern since we'll only use the rest for query string
|
|
115
|
-
if (focusedParams) {
|
|
116
|
-
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
|
117
|
-
delete focusedParams[param];
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
// If there is no `screens` property or no nested state, we return pattern
|
|
125
|
-
if (!currentOptions[route.name].screens || route.state === undefined) {
|
|
126
|
-
hasNext = false;
|
|
127
|
-
} else {
|
|
128
|
-
index = typeof route.state.index === 'number' ? route.state.index : route.state.routes.length - 1;
|
|
129
|
-
const nextRoute = route.state.routes[index];
|
|
130
|
-
const nestedConfig = currentOptions[route.name].screens;
|
|
131
|
-
|
|
132
|
-
// if there is config for next route name, we go deeper
|
|
133
|
-
if (nestedConfig && nextRoute.name in nestedConfig) {
|
|
134
|
-
route = nextRoute;
|
|
135
|
-
currentOptions = nestedConfig;
|
|
136
|
-
} else {
|
|
137
|
-
// If not, there is no sense in going deeper in config
|
|
138
|
-
hasNext = false;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
if (currentOptions[route.name] !== undefined) {
|
|
143
|
-
path += parts?.map(({
|
|
144
|
-
segment,
|
|
145
|
-
param,
|
|
146
|
-
optional
|
|
147
|
-
}) => {
|
|
148
|
-
// We don't know what to show for wildcard patterns
|
|
149
|
-
// Showing the route name seems ok, though whatever we show here will be incorrect
|
|
150
|
-
// Since the page doesn't actually exist
|
|
151
|
-
if (segment === '*') {
|
|
152
|
-
return route.name;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
// If the path has a pattern for a param, put the param in the path
|
|
156
|
-
if (param) {
|
|
157
|
-
const value = allParams[param];
|
|
158
|
-
if (value === undefined && optional) {
|
|
159
|
-
// Optional params without value assigned in route.params should be ignored
|
|
160
|
-
return '';
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
// Valid characters according to
|
|
164
|
-
// https://datatracker.ietf.org/doc/html/rfc3986#section-3.3 (see pchar definition)
|
|
165
|
-
return String(value).replace(/[^A-Za-z0-9\-._~!$&'()*+,;=:@]/g, char => encodeURIComponent(char));
|
|
166
|
-
}
|
|
167
|
-
return encodeURIComponent(segment);
|
|
168
|
-
}).join('/');
|
|
169
|
-
} else {
|
|
170
|
-
path += encodeURIComponent(route.name);
|
|
171
|
-
}
|
|
172
|
-
if (!focusedParams && focusedRoute.params) {
|
|
173
|
-
focusedParams = Object.fromEntries(Object.entries(focusedRoute.params).map(([key, value]) => [key, String(value)]));
|
|
174
|
-
}
|
|
175
|
-
if (route.state) {
|
|
176
|
-
path += '/';
|
|
177
|
-
} else if (focusedParams) {
|
|
178
|
-
for (const param in focusedParams) {
|
|
179
|
-
if (focusedParams[param] === 'undefined') {
|
|
180
|
-
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
|
181
|
-
delete focusedParams[param];
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
const query = queryString.stringify(focusedParams, {
|
|
185
|
-
sort: false
|
|
186
|
-
});
|
|
187
|
-
if (query) {
|
|
188
|
-
path += `?${query}`;
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
current = route.state;
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
// Include the root path if specified
|
|
195
|
-
if (options?.path) {
|
|
196
|
-
path = `${options.path}/${path}`;
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
// Remove multiple as well as trailing slashes
|
|
200
|
-
path = path.replace(/\/+/g, '/');
|
|
201
|
-
path = path.length > 1 ? path.replace(/\/$/, '') : path;
|
|
202
|
-
|
|
203
|
-
// If path doesn't start with a slash, add it
|
|
204
|
-
// This makes sure that history.pushState will update the path correctly instead of appending
|
|
205
|
-
if (!path.startsWith('/')) {
|
|
206
|
-
path = `/${path}`;
|
|
207
|
-
}
|
|
208
|
-
return path;
|
|
209
|
-
}
|
|
210
|
-
const createConfigItem = (config, parentParts) => {
|
|
211
|
-
if (typeof config === 'string') {
|
|
212
|
-
// If a string is specified as the value of the key(e.g. Foo: '/path'), use it as the pattern
|
|
213
|
-
const parts = (0, _getPatternParts.getPatternParts)(config);
|
|
214
|
-
if (parentParts) {
|
|
215
|
-
return {
|
|
216
|
-
parts: [...parentParts, ...parts]
|
|
217
|
-
};
|
|
218
|
-
}
|
|
219
|
-
return {
|
|
220
|
-
parts
|
|
221
|
-
};
|
|
222
|
-
}
|
|
223
|
-
if (config.exact && config.path === undefined) {
|
|
224
|
-
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: ''`.");
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
// If an object is specified as the value (e.g. Foo: { ... }),
|
|
228
|
-
// It can have `path` property and `screens` prop which has nested configs
|
|
229
|
-
const parts = config.exact !== true ? [...(parentParts || []), ...(config.path ? (0, _getPatternParts.getPatternParts)(config.path) : [])] : config.path ? (0, _getPatternParts.getPatternParts)(config.path) : undefined;
|
|
230
|
-
const screens = config.screens ? createNormalizedConfigs(config.screens, parts) : undefined;
|
|
231
|
-
return {
|
|
232
|
-
parts,
|
|
233
|
-
stringify: config.stringify,
|
|
234
|
-
screens
|
|
235
|
-
};
|
|
236
|
-
};
|
|
237
|
-
const createNormalizedConfigs = (options, parts) => Object.fromEntries(Object.entries(options).map(([name, c]) => {
|
|
238
|
-
const result = createConfigItem(c, parts);
|
|
239
|
-
return [name, result];
|
|
240
|
-
}));
|
|
241
|
-
//# sourceMappingURL=getPathFromState.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["queryString","_interopRequireWildcard","require","_getPatternParts","_validatePathConfig","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","getActiveRoute","state","route","index","routes","length","cachedNormalizedConfigs","getNormalizedConfigs","options","screens","cached","normalizedConfigs","createNormalizedConfigs","getPathFromState","Error","String","validatePathConfig","configs","path","current","allParams","parts","focusedParams","currentOptions","focusedRoute","nestedRouteNames","hasNext","name","push","params","currentParams","fromEntries","entries","map","key","value","undefined","optional","find","part","param","stringify","filter","entry","assign","forEach","nextRoute","nestedConfig","segment","replace","char","encodeURIComponent","join","query","sort","startsWith","createConfigItem","config","parentParts","getPatternParts","exact","c","result"],"sourceRoot":"../../src","sources":["getPathFromState.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.getPatternParts = getPatternParts;
|
|
7
|
-
/**
|
|
8
|
-
* Parse a path into an array of parts with information about each segment.
|
|
9
|
-
*/
|
|
10
|
-
function getPatternParts(path) {
|
|
11
|
-
const parts = [];
|
|
12
|
-
let current = {
|
|
13
|
-
segment: ''
|
|
14
|
-
};
|
|
15
|
-
let isRegex = false;
|
|
16
|
-
let isParam = false;
|
|
17
|
-
let regexInnerParens = 0;
|
|
18
|
-
|
|
19
|
-
// One extra iteration to add the last character
|
|
20
|
-
for (let i = 0; i <= path.length; i++) {
|
|
21
|
-
const char = path[i];
|
|
22
|
-
if (char != null) {
|
|
23
|
-
current.segment += char;
|
|
24
|
-
}
|
|
25
|
-
if (char === ':') {
|
|
26
|
-
// The segment must start with a colon if it's a param
|
|
27
|
-
if (current.segment === ':') {
|
|
28
|
-
isParam = true;
|
|
29
|
-
} else if (!isRegex) {
|
|
30
|
-
throw new Error(`Encountered ':' in the middle of a segment in path: ${path}`);
|
|
31
|
-
}
|
|
32
|
-
} else if (char === '(') {
|
|
33
|
-
if (isParam) {
|
|
34
|
-
if (isRegex) {
|
|
35
|
-
// The '(' is part of the regex if we're already inside one
|
|
36
|
-
regexInnerParens++;
|
|
37
|
-
} else {
|
|
38
|
-
isRegex = true;
|
|
39
|
-
}
|
|
40
|
-
} else {
|
|
41
|
-
throw new Error(`Encountered '(' without preceding ':' in path: ${path}`);
|
|
42
|
-
}
|
|
43
|
-
} else if (char === ')') {
|
|
44
|
-
if (isParam && isRegex) {
|
|
45
|
-
if (regexInnerParens) {
|
|
46
|
-
// The ')' is part of the regex if we're already inside one
|
|
47
|
-
regexInnerParens--;
|
|
48
|
-
current.regex += char;
|
|
49
|
-
} else {
|
|
50
|
-
isRegex = false;
|
|
51
|
-
isParam = false;
|
|
52
|
-
}
|
|
53
|
-
} else {
|
|
54
|
-
throw new Error(`Encountered ')' without preceding '(' in path: ${path}`);
|
|
55
|
-
}
|
|
56
|
-
} else if (char === '?') {
|
|
57
|
-
if (current.param) {
|
|
58
|
-
isParam = false;
|
|
59
|
-
current.optional = true;
|
|
60
|
-
} else {
|
|
61
|
-
throw new Error(`Encountered '?' without preceding ':' in path: ${path}`);
|
|
62
|
-
}
|
|
63
|
-
} else if (char == null || char === '/' && !isRegex) {
|
|
64
|
-
isParam = false;
|
|
65
|
-
|
|
66
|
-
// Remove trailing slash from segment
|
|
67
|
-
current.segment = current.segment.replace(/\/$/, '');
|
|
68
|
-
if (current.segment === '') {
|
|
69
|
-
continue;
|
|
70
|
-
}
|
|
71
|
-
if (current.param) {
|
|
72
|
-
current.param = current.param.replace(/^:/, '');
|
|
73
|
-
}
|
|
74
|
-
if (current.regex) {
|
|
75
|
-
current.regex = current.regex.replace(/^\(/, '').replace(/\)$/, '');
|
|
76
|
-
}
|
|
77
|
-
parts.push(current);
|
|
78
|
-
if (char == null) {
|
|
79
|
-
break;
|
|
80
|
-
}
|
|
81
|
-
current = {
|
|
82
|
-
segment: ''
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
if (isRegex) {
|
|
86
|
-
current.regex = current.regex || '';
|
|
87
|
-
current.regex += char;
|
|
88
|
-
}
|
|
89
|
-
if (isParam && !isRegex) {
|
|
90
|
-
current.param = current.param || '';
|
|
91
|
-
current.param += char;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
if (isRegex) {
|
|
95
|
-
throw new Error(`Could not find closing ')' in path: ${path}`);
|
|
96
|
-
}
|
|
97
|
-
const params = parts.map(part => part.param).filter(Boolean);
|
|
98
|
-
for (const [index, param] of params.entries()) {
|
|
99
|
-
if (params.indexOf(param) !== index) {
|
|
100
|
-
throw new Error(`Duplicate param name '${param}' found in path: ${path}`);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
return parts;
|
|
104
|
-
}
|
|
105
|
-
//# sourceMappingURL=getPatternParts.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["getPatternParts","path","parts","current","segment","isRegex","isParam","regexInnerParens","i","length","char","Error","regex","param","optional","replace","push","params","map","part","filter","Boolean","index","entries","indexOf"],"sourceRoot":"../../src","sources":["getPatternParts.tsx"],"mappings":"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","ignoreList":[]}
|