@react-navigation/core 8.0.0-alpha.32 → 8.0.0-alpha.34
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/module/NavigationBuilderContext.js +8 -13
- package/lib/module/NavigationBuilderContext.js.map +1 -1
- package/lib/module/NavigationIndependentTree.js +42 -15
- package/lib/module/NavigationIndependentTree.js.map +1 -1
- package/lib/module/getPathFromState.js +41 -16
- package/lib/module/getPathFromState.js.map +1 -1
- package/lib/module/getPatternParts.js +43 -12
- package/lib/module/getPatternParts.js.map +1 -1
- package/lib/module/getStateFromPath.js +176 -110
- package/lib/module/getStateFromPath.js.map +1 -1
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/useDescriptors.js +2 -2
- package/lib/module/useDescriptors.js.map +1 -1
- package/lib/module/useFocusedListenersChildrenAdapter.js +2 -2
- package/lib/module/useFocusedListenersChildrenAdapter.js.map +1 -1
- package/lib/module/useNavigationBuilder.js +2 -2
- package/lib/module/useNavigationBuilder.js.map +1 -1
- package/lib/module/useNavigationCache.js +3 -3
- package/lib/module/useNavigationCache.js.map +1 -1
- package/lib/module/useNavigationHelpers.js +2 -2
- package/lib/module/useNavigationHelpers.js.map +1 -1
- package/lib/module/useOnAction.js +6 -4
- package/lib/module/useOnAction.js.map +1 -1
- package/lib/module/useOnGetNavigation.js +2 -2
- package/lib/module/useOnGetNavigation.js.map +1 -1
- package/lib/module/useOnGetState.js +2 -2
- package/lib/module/useOnGetState.js.map +1 -1
- package/lib/module/useOnPreventRemove.js +2 -2
- 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 +2 -4
- package/lib/module/useOptionsGetters.js.map +1 -1
- package/lib/module/useScheduleUpdate.js +2 -2
- package/lib/module/useScheduleUpdate.js.map +1 -1
- package/lib/typescript/src/NavigationBuilderContext.d.ts +8 -5
- package/lib/typescript/src/NavigationBuilderContext.d.ts.map +1 -1
- package/lib/typescript/src/NavigationIndependentTree.d.ts.map +1 -1
- package/lib/typescript/src/getPathFromState.d.ts.map +1 -1
- package/lib/typescript/src/getPatternParts.d.ts +4 -2
- package/lib/typescript/src/getPatternParts.d.ts.map +1 -1
- package/lib/typescript/src/getStateFromPath.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +1 -1
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/lib/typescript/src/useDescriptors.d.ts.map +1 -1
- package/lib/typescript/src/useNavigationBuilder.d.ts.map +1 -1
- package/lib/typescript/src/useOnAction.d.ts.map +1 -1
- package/lib/typescript/src/useOnGetNavigation.d.ts.map +1 -1
- package/lib/typescript/src/useOnGetState.d.ts.map +1 -1
- package/lib/typescript/src/useOnPreventRemove.d.ts.map +1 -1
- package/lib/typescript/src/useOnRouteFocus.d.ts.map +1 -1
- package/lib/typescript/src/useOptionsGetters.d.ts.map +1 -1
- package/lib/typescript/src/utilities.d.ts +3 -0
- package/lib/typescript/src/utilities.d.ts.map +1 -1
- package/package.json +2 -3
- package/src/NavigationBuilderContext.tsx +21 -17
- package/src/NavigationIndependentTree.tsx +48 -22
- package/src/getPathFromState.tsx +63 -15
- package/src/getPatternParts.tsx +75 -14
- package/src/getStateFromPath.tsx +251 -114
- package/src/index.tsx +1 -0
- package/src/types.tsx +1 -1
- package/src/useDescriptors.tsx +2 -1
- package/src/useFocusedListenersChildrenAdapter.tsx +2 -2
- package/src/useNavigationBuilder.tsx +2 -4
- package/src/useNavigationCache.tsx +3 -3
- package/src/useNavigationHelpers.tsx +2 -2
- package/src/useOnAction.tsx +6 -5
- package/src/useOnGetNavigation.tsx +3 -2
- package/src/useOnGetState.tsx +4 -2
- package/src/useOnPreventRemove.tsx +4 -2
- package/src/useOnRouteFocus.tsx +2 -4
- package/src/useOptionsGetters.tsx +3 -2
- package/src/useScheduleUpdate.tsx +2 -2
- package/src/utilities.tsx +5 -2
|
@@ -4,17 +4,12 @@ import * as React from 'react';
|
|
|
4
4
|
/**
|
|
5
5
|
* Context which holds the required helpers needed to build nested navigators.
|
|
6
6
|
*/
|
|
7
|
-
export const NavigationBuilderContext = /*#__PURE__*/React.createContext(
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
flushUpdates: () => {
|
|
16
|
-
throw new Error("Couldn't find a context for flushing updates.");
|
|
17
|
-
},
|
|
18
|
-
withStackTrace: (_entry, callback) => callback()
|
|
19
|
-
});
|
|
7
|
+
export const NavigationBuilderContext = /*#__PURE__*/React.createContext(undefined);
|
|
8
|
+
export function useNavigationBuilderContext() {
|
|
9
|
+
const value = React.use(NavigationBuilderContext);
|
|
10
|
+
if (value == null) {
|
|
11
|
+
throw new Error("Couldn't find a navigation builder context. Is your component inside NavigationContainer?");
|
|
12
|
+
}
|
|
13
|
+
return value;
|
|
14
|
+
}
|
|
20
15
|
//# sourceMappingURL=NavigationBuilderContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","NavigationBuilderContext","createContext","
|
|
1
|
+
{"version":3,"names":["React","NavigationBuilderContext","createContext","undefined","useNavigationBuilderContext","value","use","Error"],"sourceRoot":"../../src","sources":["NavigationBuilderContext.tsx"],"mappings":";;AAMA,OAAO,KAAKA,KAAK,MAAM,OAAO;AA6E9B;AACA;AACA;AACA,OAAO,MAAMC,wBAAwB,gBAAGD,KAAK,CAACE,aAAa,CAEzDC,SAAS,CAAC;AAEZ,OAAO,SAASC,2BAA2BA,CAAA,EAAG;EAC5C,MAAMC,KAAK,GAAGL,KAAK,CAACM,GAAG,CAACL,wBAAwB,CAAC;EAEjD,IAAII,KAAK,IAAI,IAAI,EAAE;IACjB,MAAM,IAAIE,KAAK,CACb,2FACF,CAAC;EACH;EAEA,OAAOF,KAAK;AACd","ignoreList":[]}
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import * as React from 'react';
|
|
4
|
+
import { NavigationBuilderContext } from "./NavigationBuilderContext.js";
|
|
5
|
+
import { NavigationContainerRefContext } from "./NavigationContainerRefContext.js";
|
|
4
6
|
import { NavigationFocusedRouteStateContext } from "./NavigationFocusedRouteStateContext.js";
|
|
7
|
+
import { NavigationHelpersContext } from "./NavigationHelpersContext.js";
|
|
5
8
|
import { NavigationIndependentTreeContext } from "./NavigationIndependentTreeContext.js";
|
|
9
|
+
import { NavigationMetaContext } from "./NavigationMetaContext.js";
|
|
6
10
|
import { IsScreenContext, NamedRouteContextListContext, NavigationContext, NavigationRouteContext } from "./NavigationProvider.js";
|
|
7
11
|
import { NavigationRootContext } from "./NavigationRootContext.js";
|
|
8
|
-
import {
|
|
12
|
+
import { PreventRemoveContext } from "./PreventRemoveContext.js";
|
|
13
|
+
import { StaticTreeContext } from "./StaticTreeContext.js";
|
|
14
|
+
import { FocusedRouteKeyContext, IsFocusedContext } from "./useIsFocused.js";
|
|
9
15
|
import { NamedNavigationStateListenerListContext, NavigationStateListenerContext } from "./useNavigationState.js";
|
|
10
16
|
|
|
11
17
|
/**
|
|
@@ -18,27 +24,48 @@ export function NavigationIndependentTree({
|
|
|
18
24
|
return (
|
|
19
25
|
/*#__PURE__*/
|
|
20
26
|
// We need to clear any existing contexts for nested independent container to work correctly
|
|
21
|
-
_jsx(
|
|
22
|
-
value:
|
|
23
|
-
children: /*#__PURE__*/_jsx(
|
|
27
|
+
_jsx(NavigationIndependentTreeContext.Provider, {
|
|
28
|
+
value: true,
|
|
29
|
+
children: /*#__PURE__*/_jsx(NavigationContainerRefContext.Provider, {
|
|
24
30
|
value: undefined,
|
|
25
|
-
children: /*#__PURE__*/_jsx(
|
|
31
|
+
children: /*#__PURE__*/_jsx(NavigationRootContext.Provider, {
|
|
26
32
|
value: undefined,
|
|
27
|
-
children: /*#__PURE__*/_jsx(
|
|
33
|
+
children: /*#__PURE__*/_jsx(NavigationBuilderContext.Provider, {
|
|
28
34
|
value: undefined,
|
|
29
|
-
children: /*#__PURE__*/_jsx(
|
|
35
|
+
children: /*#__PURE__*/_jsx(StaticTreeContext.Provider, {
|
|
30
36
|
value: undefined,
|
|
31
|
-
children: /*#__PURE__*/_jsx(
|
|
37
|
+
children: /*#__PURE__*/_jsx(NavigationMetaContext.Provider, {
|
|
32
38
|
value: undefined,
|
|
33
|
-
children: /*#__PURE__*/_jsx(
|
|
39
|
+
children: /*#__PURE__*/_jsx(NavigationHelpersContext.Provider, {
|
|
34
40
|
value: undefined,
|
|
35
|
-
children: /*#__PURE__*/_jsx(
|
|
41
|
+
children: /*#__PURE__*/_jsx(NavigationStateListenerContext.Provider, {
|
|
36
42
|
value: undefined,
|
|
37
|
-
children: /*#__PURE__*/_jsx(
|
|
38
|
-
value:
|
|
39
|
-
children: /*#__PURE__*/_jsx(
|
|
40
|
-
value:
|
|
41
|
-
children:
|
|
43
|
+
children: /*#__PURE__*/_jsx(FocusedRouteKeyContext.Provider, {
|
|
44
|
+
value: undefined,
|
|
45
|
+
children: /*#__PURE__*/_jsx(PreventRemoveContext.Provider, {
|
|
46
|
+
value: undefined,
|
|
47
|
+
children: /*#__PURE__*/_jsx(NamedNavigationStateListenerListContext.Provider, {
|
|
48
|
+
value: undefined,
|
|
49
|
+
children: /*#__PURE__*/_jsx(NamedRouteContextListContext.Provider, {
|
|
50
|
+
value: undefined,
|
|
51
|
+
children: /*#__PURE__*/_jsx(NavigationRouteContext.Provider, {
|
|
52
|
+
value: undefined,
|
|
53
|
+
children: /*#__PURE__*/_jsx(NavigationContext.Provider, {
|
|
54
|
+
value: undefined,
|
|
55
|
+
children: /*#__PURE__*/_jsx(IsFocusedContext.Provider, {
|
|
56
|
+
value: undefined,
|
|
57
|
+
children: /*#__PURE__*/_jsx(IsScreenContext.Provider, {
|
|
58
|
+
value: false,
|
|
59
|
+
children: /*#__PURE__*/_jsx(NavigationFocusedRouteStateContext.Provider, {
|
|
60
|
+
value: undefined,
|
|
61
|
+
children: children
|
|
62
|
+
})
|
|
63
|
+
})
|
|
64
|
+
})
|
|
65
|
+
})
|
|
66
|
+
})
|
|
67
|
+
})
|
|
68
|
+
})
|
|
42
69
|
})
|
|
43
70
|
})
|
|
44
71
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","NavigationFocusedRouteStateContext","NavigationIndependentTreeContext","IsScreenContext","NamedRouteContextListContext","NavigationContext","NavigationRouteContext","NavigationRootContext","IsFocusedContext","NamedNavigationStateListenerListContext","NavigationStateListenerContext","jsx","_jsx","NavigationIndependentTree","children","Provider","value","undefined"],"sourceRoot":"../../src","sources":["NavigationIndependentTree.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,kCAAkC,QAAQ,yCAAsC;AACzF,SAASC,gCAAgC,QAAQ,uCAAoC;AACrF,SACEC,eAAe,EACfC,4BAA4B,EAC5BC,iBAAiB,EACjBC,sBAAsB,QACjB,yBAAsB;AAC7B,SAASC,qBAAqB,QAAQ,4BAAyB;AAC/D,SAASC,gBAAgB,QAAQ,mBAAgB;
|
|
1
|
+
{"version":3,"names":["React","NavigationBuilderContext","NavigationContainerRefContext","NavigationFocusedRouteStateContext","NavigationHelpersContext","NavigationIndependentTreeContext","NavigationMetaContext","IsScreenContext","NamedRouteContextListContext","NavigationContext","NavigationRouteContext","NavigationRootContext","PreventRemoveContext","StaticTreeContext","FocusedRouteKeyContext","IsFocusedContext","NamedNavigationStateListenerListContext","NavigationStateListenerContext","jsx","_jsx","NavigationIndependentTree","children","Provider","value","undefined"],"sourceRoot":"../../src","sources":["NavigationIndependentTree.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,wBAAwB,QAAQ,+BAA4B;AACrE,SAASC,6BAA6B,QAAQ,oCAAiC;AAC/E,SAASC,kCAAkC,QAAQ,yCAAsC;AACzF,SAASC,wBAAwB,QAAQ,+BAA4B;AACrE,SAASC,gCAAgC,QAAQ,uCAAoC;AACrF,SAASC,qBAAqB,QAAQ,4BAAyB;AAC/D,SACEC,eAAe,EACfC,4BAA4B,EAC5BC,iBAAiB,EACjBC,sBAAsB,QACjB,yBAAsB;AAC7B,SAASC,qBAAqB,QAAQ,4BAAyB;AAC/D,SAASC,oBAAoB,QAAQ,2BAAwB;AAC7D,SAASC,iBAAiB,QAAQ,wBAAqB;AACvD,SAASC,sBAAsB,EAAEC,gBAAgB,QAAQ,mBAAgB;AACzE,SACEC,uCAAuC,EACvCC,8BAA8B,QACzB,yBAAsB;;AAE7B;AACA;AACA;AAFA,SAAAC,GAAA,IAAAC,IAAA;AAGA,OAAO,SAASC,yBAAyBA,CAAC;EACxCC;AAGF,CAAC,EAAE;EACD;IAAA;IACE;IACAF,IAAA,CAACd,gCAAgC,CAACiB,QAAQ;MAACC,KAAK,EAAE,IAAK;MAAAF,QAAA,eACrDF,IAAA,CAACjB,6BAA6B,CAACoB,QAAQ;QAACC,KAAK,EAAEC,SAAU;QAAAH,QAAA,eACvDF,IAAA,CAACR,qBAAqB,CAACW,QAAQ;UAACC,KAAK,EAAEC,SAAU;UAAAH,QAAA,eAC/CF,IAAA,CAAClB,wBAAwB,CAACqB,QAAQ;YAACC,KAAK,EAAEC,SAAU;YAAAH,QAAA,eAClDF,IAAA,CAACN,iBAAiB,CAACS,QAAQ;cAACC,KAAK,EAAEC,SAAU;cAAAH,QAAA,eAC3CF,IAAA,CAACb,qBAAqB,CAACgB,QAAQ;gBAACC,KAAK,EAAEC,SAAU;gBAAAH,QAAA,eAC/CF,IAAA,CAACf,wBAAwB,CAACkB,QAAQ;kBAACC,KAAK,EAAEC,SAAU;kBAAAH,QAAA,eAClDF,IAAA,CAACF,8BAA8B,CAACK,QAAQ;oBAACC,KAAK,EAAEC,SAAU;oBAAAH,QAAA,eACxDF,IAAA,CAACL,sBAAsB,CAACQ,QAAQ;sBAACC,KAAK,EAAEC,SAAU;sBAAAH,QAAA,eAChDF,IAAA,CAACP,oBAAoB,CAACU,QAAQ;wBAACC,KAAK,EAAEC,SAAU;wBAAAH,QAAA,eAC9CF,IAAA,CAACH,uCAAuC,CAACM,QAAQ;0BAC/CC,KAAK,EAAEC,SAAU;0BAAAH,QAAA,eAEjBF,IAAA,CAACX,4BAA4B,CAACc,QAAQ;4BACpCC,KAAK,EAAEC,SAAU;4BAAAH,QAAA,eAEjBF,IAAA,CAACT,sBAAsB,CAACY,QAAQ;8BAACC,KAAK,EAAEC,SAAU;8BAAAH,QAAA,eAChDF,IAAA,CAACV,iBAAiB,CAACa,QAAQ;gCAACC,KAAK,EAAEC,SAAU;gCAAAH,QAAA,eAC3CF,IAAA,CAACJ,gBAAgB,CAACO,QAAQ;kCAACC,KAAK,EAAEC,SAAU;kCAAAH,QAAA,eAC1CF,IAAA,CAACZ,eAAe,CAACe,QAAQ;oCAACC,KAAK,EAAE,KAAM;oCAAAF,QAAA,eACrCF,IAAA,CAAChB,kCAAkC,CAACmB,QAAQ;sCAC1CC,KAAK,EAAEC,SAAU;sCAAAH,QAAA,EAEhBA;oCAAQ,CACkC;kCAAC,CACtB;gCAAC,CACF;8BAAC,CACF;4BAAC,CACE;0BAAC,CACG;wBAAC,CACQ;sBAAC,CACtB;oBAAC,CACD;kBAAC,CACK;gBAAC,CACT;cAAC,CACN;YAAC,CACP;UAAC,CACI;QAAC,CACN;MAAC,CACK;IAAC,CACA;EAAC;AAEhD","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import queryString from 'query-string';
|
|
4
|
-
import { getPatternParts } from "./getPatternParts.js";
|
|
4
|
+
import { combinePatternParts, getPatternParts } from "./getPatternParts.js";
|
|
5
5
|
import { getStateFromRouteParams } from "./getStateFromRouteParams.js";
|
|
6
6
|
import { validatePathConfig } from "./validatePathConfig.js";
|
|
7
7
|
const serializeParamValue = value => value === null ? null : Array.isArray(value) ? value.map(String) : String(value);
|
|
@@ -126,14 +126,14 @@ export function getPathFromState(state, options) {
|
|
|
126
126
|
for (const key in params) {
|
|
127
127
|
const value = params[key];
|
|
128
128
|
if (value === undefined) {
|
|
129
|
-
let
|
|
129
|
+
let canBeOmitted = false;
|
|
130
130
|
for (const part of ownParts) {
|
|
131
|
-
if (part.
|
|
132
|
-
|
|
131
|
+
if (part.name === key) {
|
|
132
|
+
canBeOmitted = part.optional === true || part.repeat != null;
|
|
133
133
|
break;
|
|
134
134
|
}
|
|
135
135
|
}
|
|
136
|
-
if (
|
|
136
|
+
if (canBeOmitted) {
|
|
137
137
|
continue;
|
|
138
138
|
}
|
|
139
139
|
}
|
|
@@ -142,11 +142,11 @@ export function getPathFromState(state, options) {
|
|
|
142
142
|
}
|
|
143
143
|
const claimedParams = new Set();
|
|
144
144
|
for (const part of ownParts) {
|
|
145
|
-
if (part.
|
|
146
|
-
const value = currentParams[part.
|
|
145
|
+
if (part.name && part.name in currentParams) {
|
|
146
|
+
const value = currentParams[part.name];
|
|
147
147
|
if (value !== undefined) {
|
|
148
148
|
partValues.set(part, value);
|
|
149
|
-
claimedParams.add(part.
|
|
149
|
+
claimedParams.add(part.name);
|
|
150
150
|
}
|
|
151
151
|
}
|
|
152
152
|
}
|
|
@@ -164,7 +164,7 @@ export function getPathFromState(state, options) {
|
|
|
164
164
|
}
|
|
165
165
|
}
|
|
166
166
|
for (const part of ownParts) {
|
|
167
|
-
if (part.
|
|
167
|
+
if (part.name && !partValues.has(part)) {
|
|
168
168
|
partValues.set(part, undefined);
|
|
169
169
|
}
|
|
170
170
|
}
|
|
@@ -198,8 +198,9 @@ export function getPathFromState(state, options) {
|
|
|
198
198
|
for (const part of parts) {
|
|
199
199
|
const {
|
|
200
200
|
segment,
|
|
201
|
-
|
|
202
|
-
optional
|
|
201
|
+
name,
|
|
202
|
+
optional,
|
|
203
|
+
repeat
|
|
203
204
|
} = part;
|
|
204
205
|
if (index > 0) {
|
|
205
206
|
path += '/';
|
|
@@ -215,12 +216,32 @@ export function getPathFromState(state, options) {
|
|
|
215
216
|
}
|
|
216
217
|
|
|
217
218
|
// If the path has a pattern for a param, put the param in the path
|
|
218
|
-
if (
|
|
219
|
+
if (name) {
|
|
219
220
|
const value = partValues.get(part);
|
|
220
221
|
if (value === undefined && optional) {
|
|
221
222
|
// Optional params without value assigned in route.params should be ignored
|
|
222
223
|
continue;
|
|
223
224
|
}
|
|
225
|
+
if (repeat) {
|
|
226
|
+
if (value === null) {
|
|
227
|
+
throw new Error(`The path pattern '${segment}' does not allow null for param '${name}'.`);
|
|
228
|
+
}
|
|
229
|
+
if (Array.isArray(value)) {
|
|
230
|
+
throw new Error(`The path pattern '${segment}' requires a string for param '${name}'.`);
|
|
231
|
+
}
|
|
232
|
+
const values = value === undefined || value === '' ? [] : value.split('/');
|
|
233
|
+
if (repeat === 'one-or-more' && values.length === 0) {
|
|
234
|
+
throw new Error(`The path pattern '${segment}' requires at least one value for param '${name}'.`);
|
|
235
|
+
}
|
|
236
|
+
if (values.some(item => item.length === 0)) {
|
|
237
|
+
throw new Error(`The path pattern '${segment}' does not allow empty values for param '${name}'.`);
|
|
238
|
+
}
|
|
239
|
+
if (values.length === 0) {
|
|
240
|
+
path = path.replace(/\/$/, '');
|
|
241
|
+
}
|
|
242
|
+
path += values.map(encodePathParam).join('/');
|
|
243
|
+
continue;
|
|
244
|
+
}
|
|
224
245
|
|
|
225
246
|
// Valid characters according to
|
|
226
247
|
// https://datatracker.ietf.org/doc/html/rfc3986#section-3.3 (see pchar definition)
|
|
@@ -262,8 +283,12 @@ export function getPathFromState(state, options) {
|
|
|
262
283
|
}
|
|
263
284
|
|
|
264
285
|
// Remove multiple as well as trailing slashes
|
|
265
|
-
|
|
266
|
-
|
|
286
|
+
if (path.includes('//')) {
|
|
287
|
+
path = path.replace(/\/+/g, '/');
|
|
288
|
+
}
|
|
289
|
+
if (path.length > 1 && path.endsWith('/')) {
|
|
290
|
+
path = path.slice(0, -1);
|
|
291
|
+
}
|
|
267
292
|
|
|
268
293
|
// If path doesn't start with a slash, add it
|
|
269
294
|
// This makes sure that history.pushState will update the path correctly instead of appending
|
|
@@ -277,7 +302,7 @@ const createConfigItem = (config, parentParts) => {
|
|
|
277
302
|
const ownParts = getPatternParts(config);
|
|
278
303
|
if (parentParts) {
|
|
279
304
|
return {
|
|
280
|
-
parts:
|
|
305
|
+
parts: combinePatternParts(parentParts, ownParts),
|
|
281
306
|
ownParts
|
|
282
307
|
};
|
|
283
308
|
}
|
|
@@ -293,7 +318,7 @@ const createConfigItem = (config, parentParts) => {
|
|
|
293
318
|
// If an object is specified as the value (e.g. Foo: { ... }),
|
|
294
319
|
// It can have `path` property and `screens` prop which has nested configs
|
|
295
320
|
const ownParts = config.path ? getPatternParts(config.path) : [];
|
|
296
|
-
const parts = config.exact !== true ?
|
|
321
|
+
const parts = config.exact !== true ? combinePatternParts(parentParts || [], ownParts) : ownParts.length ? ownParts : undefined;
|
|
297
322
|
const screens = 'screens' in config && config.screens ? createNormalizedConfigs(config.screens, parts) : undefined;
|
|
298
323
|
return {
|
|
299
324
|
parts,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["queryString","getPatternParts","getStateFromRouteParams","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","key","optional","part","param","stringify","claimedParams","Set","add","nextRoute","nestedConfig","segment","query","sort","replace","startsWith","createConfigItem","parentParts","exact"],"sourceRoot":"../../src","sources":["getPathFromState.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["queryString","combinePatternParts","getPatternParts","getStateFromRouteParams","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","key","canBeOmitted","part","optional","repeat","stringify","claimedParams","Set","add","nextRoute","nestedConfig","segment","values","split","some","item","replace","join","query","sort","endsWith","slice","startsWith","createConfigItem","parentParts","exact"],"sourceRoot":"../../src","sources":["getPathFromState.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -10,6 +10,7 @@ export function getPatternParts(path) {
|
|
|
10
10
|
};
|
|
11
11
|
let isRegex = false;
|
|
12
12
|
let isParam = false;
|
|
13
|
+
let hasRepeat = false;
|
|
13
14
|
let isEscaped = false;
|
|
14
15
|
let isInCharClass = false;
|
|
15
16
|
let regexInnerParens = 0;
|
|
@@ -44,7 +45,7 @@ export function getPatternParts(path) {
|
|
|
44
45
|
// The ')' is part of the regex if we're already inside one
|
|
45
46
|
regexInnerParens--;
|
|
46
47
|
} else {
|
|
47
|
-
current.
|
|
48
|
+
current.pattern += char;
|
|
48
49
|
isRegex = false;
|
|
49
50
|
isParam = false;
|
|
50
51
|
}
|
|
@@ -52,12 +53,19 @@ export function getPatternParts(path) {
|
|
|
52
53
|
throw new Error(`Encountered ')' without preceding '(' in path: ${path}`);
|
|
53
54
|
}
|
|
54
55
|
} else if (char === '?' && !isRegex) {
|
|
55
|
-
if (current.
|
|
56
|
+
if (current.name) {
|
|
56
57
|
isParam = false;
|
|
57
58
|
current.optional = true;
|
|
58
59
|
} else {
|
|
59
60
|
throw new Error(`Encountered '?' without preceding ':' in path: ${path}`);
|
|
60
61
|
}
|
|
62
|
+
} else if (current.name && !isRegex && (char === '*' || char === '+') && (path[i + 1] == null || path[i + 1] === '/' || path[i + 1] === '?' || path[i + 1] === '*' || path[i + 1] === '+')) {
|
|
63
|
+
if (current.optional || path[i + 1] !== undefined && path[i + 1] !== '/') {
|
|
64
|
+
throw new Error(`Cannot combine path param modifiers in path: ${path}`);
|
|
65
|
+
}
|
|
66
|
+
isParam = false;
|
|
67
|
+
current.repeat = char === '*' ? 'zero-or-more' : 'one-or-more';
|
|
68
|
+
hasRepeat = true;
|
|
61
69
|
} else if (char == null || char === '/' && !isRegex) {
|
|
62
70
|
isParam = false;
|
|
63
71
|
|
|
@@ -66,11 +74,11 @@ export function getPatternParts(path) {
|
|
|
66
74
|
if (current.segment === '') {
|
|
67
75
|
continue;
|
|
68
76
|
}
|
|
69
|
-
if (current.
|
|
70
|
-
current.
|
|
77
|
+
if (current.name) {
|
|
78
|
+
current.name = current.name.replace(/^:/, '');
|
|
71
79
|
}
|
|
72
|
-
if (current.
|
|
73
|
-
current.
|
|
80
|
+
if (current.pattern) {
|
|
81
|
+
current.pattern = current.pattern.replace(/^\(/, '').replace(/\)$/, '');
|
|
74
82
|
}
|
|
75
83
|
parts.push(current);
|
|
76
84
|
if (char == null) {
|
|
@@ -81,8 +89,8 @@ export function getPatternParts(path) {
|
|
|
81
89
|
};
|
|
82
90
|
}
|
|
83
91
|
if (isRegex) {
|
|
84
|
-
current.
|
|
85
|
-
current.
|
|
92
|
+
current.pattern = current.pattern || '';
|
|
93
|
+
current.pattern += char;
|
|
86
94
|
|
|
87
95
|
// Track escapes and character classes so parens inside them are not special
|
|
88
96
|
if (isEscaped) {
|
|
@@ -96,22 +104,45 @@ export function getPatternParts(path) {
|
|
|
96
104
|
}
|
|
97
105
|
}
|
|
98
106
|
if (isParam && !isRegex) {
|
|
99
|
-
current.
|
|
100
|
-
current.
|
|
107
|
+
current.name = current.name || '';
|
|
108
|
+
current.name += char;
|
|
101
109
|
}
|
|
102
110
|
}
|
|
103
111
|
if (isRegex) {
|
|
104
112
|
throw new Error(`Could not find closing ')' in path: ${path}`);
|
|
105
113
|
}
|
|
106
|
-
const params = parts.map(part => part.
|
|
114
|
+
const params = parts.map(part => part.name).filter(Boolean);
|
|
107
115
|
for (const [index, param] of params.entries()) {
|
|
108
116
|
if (params.indexOf(param) !== index) {
|
|
109
117
|
throw new Error(`Duplicate param name '${param}' found in path: ${path}`);
|
|
110
118
|
}
|
|
111
119
|
}
|
|
120
|
+
if (hasRepeat) {
|
|
121
|
+
validateRepeatedParts(parts, path);
|
|
122
|
+
}
|
|
112
123
|
return parts;
|
|
113
124
|
}
|
|
125
|
+
function validateRepeatedParts(parts, path) {
|
|
126
|
+
let variablePart;
|
|
127
|
+
for (const part of parts) {
|
|
128
|
+
if (!part.name && part.segment !== '*') {
|
|
129
|
+
variablePart = undefined;
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
if (!part.repeat && !part.optional && part.segment !== '*') {
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
if (variablePart && (variablePart.repeat || part.repeat)) {
|
|
136
|
+
throw new Error(`A repeated param must be separated from optional, repeated, or wildcard segments by a static segment: ${path}`);
|
|
137
|
+
}
|
|
138
|
+
variablePart = part;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
114
141
|
export function combinePatternParts(parentParts, parts, exact = false) {
|
|
115
|
-
|
|
142
|
+
const combined = exact ? parts : [...parentParts, ...parts];
|
|
143
|
+
if (combined.some(part => part.repeat)) {
|
|
144
|
+
validateRepeatedParts(combined, combined.map(part => part.segment).join('/'));
|
|
145
|
+
}
|
|
146
|
+
return combined;
|
|
116
147
|
}
|
|
117
148
|
//# sourceMappingURL=getPatternParts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getPatternParts","path","parts","current","segment","isRegex","isParam","isEscaped","isInCharClass","regexInnerParens","i","length","char","Error","
|
|
1
|
+
{"version":3,"names":["getPatternParts","path","parts","current","segment","isRegex","isParam","hasRepeat","isEscaped","isInCharClass","regexInnerParens","i","length","char","Error","pattern","name","optional","undefined","repeat","replace","push","params","map","part","filter","Boolean","index","param","entries","indexOf","validateRepeatedParts","variablePart","combinePatternParts","parentParts","exact","combined","some","join"],"sourceRoot":"../../src","sources":["getPatternParts.tsx"],"mappings":"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","ignoreList":[]}
|