@angular/router 14.0.0-next.1 → 14.0.0-next.10
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/esm2020/src/apply_redirects.mjs +12 -13
- package/esm2020/src/components/empty_outlet.mjs +3 -3
- package/esm2020/src/create_url_tree.mjs +8 -7
- package/esm2020/src/directives/router_link.mjs +15 -18
- package/esm2020/src/directives/router_link_active.mjs +3 -3
- package/esm2020/src/directives/router_outlet.mjs +4 -4
- package/esm2020/src/events.mjs +1 -1
- package/esm2020/src/index.mjs +1 -1
- package/esm2020/src/models.mjs +14 -0
- package/esm2020/src/operators/activate_routes.mjs +1 -1
- package/esm2020/src/operators/apply_redirects.mjs +1 -1
- package/esm2020/src/operators/check_guards.mjs +1 -1
- package/esm2020/src/operators/recognize.mjs +1 -1
- package/esm2020/src/operators/resolve_data.mjs +3 -3
- package/esm2020/src/page_title_strategy.mjs +3 -3
- package/esm2020/src/private_export.mjs +1 -1
- package/esm2020/src/recognize.mjs +4 -4
- package/esm2020/src/router.mjs +7 -19
- package/esm2020/src/router_config_loader.mjs +2 -2
- package/esm2020/src/router_module.mjs +8 -8
- package/esm2020/src/router_preloader.mjs +4 -4
- package/esm2020/src/router_scroller.mjs +3 -3
- package/esm2020/src/router_state.mjs +1 -1
- package/esm2020/src/shared.mjs +1 -1
- package/esm2020/src/url_tree.mjs +2 -2
- package/esm2020/src/utils/config.mjs +1 -4
- package/esm2020/src/utils/config_matching.mjs +4 -4
- package/esm2020/src/utils/preactivation.mjs +1 -1
- package/esm2020/src/utils/type_guards.mjs +1 -1
- package/esm2020/src/version.mjs +1 -1
- package/esm2020/testing/src/router_testing_module.mjs +4 -4
- package/esm2020/upgrade/src/upgrade.mjs +15 -5
- package/fesm2015/router.mjs +75 -93
- package/fesm2015/router.mjs.map +1 -1
- package/fesm2015/testing.mjs +5 -5
- package/fesm2015/testing.mjs.map +1 -1
- package/fesm2015/upgrade.mjs +16 -5
- package/fesm2015/upgrade.mjs.map +1 -1
- package/fesm2020/router.mjs +72 -90
- package/fesm2020/router.mjs.map +1 -1
- package/fesm2020/testing.mjs +5 -5
- package/fesm2020/testing.mjs.map +1 -1
- package/fesm2020/upgrade.mjs +15 -5
- package/fesm2020/upgrade.mjs.map +1 -1
- package/package.json +5 -5
- package/router.d.ts +38 -8
- package/testing/testing.d.ts +1 -1
- package/upgrade/upgrade.d.ts +1 -1
- package/esm2020/src/config.mjs +0 -14
- package/esm2020/src/interfaces.mjs +0 -9
|
@@ -68,15 +68,25 @@ export function setUpLocationSync(ngUpgrade, urlType = 'path') {
|
|
|
68
68
|
const router = ngUpgrade.injector.get(Router);
|
|
69
69
|
const location = ngUpgrade.injector.get(Location);
|
|
70
70
|
ngUpgrade.$injector.get('$rootScope')
|
|
71
|
-
.$on('$locationChangeStart', (
|
|
71
|
+
.$on('$locationChangeStart', (event, newUrl, oldUrl, newState, oldState) => {
|
|
72
|
+
// Navigations coming from Angular router have a navigationId state
|
|
73
|
+
// property. Don't trigger Angular router navigation again if it is
|
|
74
|
+
// caused by a URL change from the current Angular router
|
|
75
|
+
// navigation.
|
|
76
|
+
const currentNavigationId = router.getCurrentNavigation()?.id;
|
|
77
|
+
const newStateNavigationId = newState?.navigationId;
|
|
78
|
+
if (newStateNavigationId !== undefined &&
|
|
79
|
+
newStateNavigationId === currentNavigationId) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
72
82
|
let url;
|
|
73
83
|
if (urlType === 'path') {
|
|
74
|
-
url = resolveUrl(
|
|
84
|
+
url = resolveUrl(newUrl);
|
|
75
85
|
}
|
|
76
86
|
else if (urlType === 'hash') {
|
|
77
87
|
// Remove the first hash from the URL
|
|
78
|
-
const hashIdx =
|
|
79
|
-
url = resolveUrl(
|
|
88
|
+
const hashIdx = newUrl.indexOf('#');
|
|
89
|
+
url = resolveUrl(newUrl.substring(0, hashIdx) + newUrl.substring(hashIdx + 1));
|
|
80
90
|
}
|
|
81
91
|
else {
|
|
82
92
|
throw 'Invalid URLType passed to setUpLocationSync: ' + urlType;
|
|
@@ -117,4 +127,4 @@ function resolveUrl(url) {
|
|
|
117
127
|
hash: anchor.hash
|
|
118
128
|
};
|
|
119
129
|
}
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBncmFkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3JvdXRlci91cGdyYWRlL3NyYy91cGdyYWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsc0JBQXNCLEVBQStCLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBQyxNQUFNLEVBQWtDLE1BQU0saUJBQWlCLENBQUM7QUFDeEUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRXREOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUc7SUFDdEMsT0FBTyxFQUFFLHNCQUFzQjtJQUMvQixLQUFLLEVBQUUsSUFBSTtJQUNYLFVBQVUsRUFBRSw2QkFBeUU7SUFDckYsSUFBSSxFQUFFLENBQUMsYUFBYSxDQUFDO0NBQ3RCLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sVUFBVSw2QkFBNkIsQ0FBQyxTQUF3QjtJQUNwRSxPQUFPLEdBQUcsRUFBRTtRQUNWLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9CLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxTQUF3QixFQUFFLFVBQXlCLE1BQU07SUFDekYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUU7UUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQzs7O09BR2IsQ0FBQyxDQUFDO0tBQ047SUFFRCxNQUFNLE1BQU0sR0FBVyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0RCxNQUFNLFFBQVEsR0FBYSxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUU1RCxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUM7U0FDaEMsR0FBRyxDQUNBLHNCQUFzQixFQUN0QixDQUFDLEtBQVUsRUFBRSxNQUFjLEVBQUUsTUFBYyxFQUMxQyxRQUErQyxFQUMvQyxRQUErQyxFQUFFLEVBQUU7UUFDbEQsbUVBQW1FO1FBQ25FLG1FQUFtRTtRQUNuRSx5REFBeUQ7UUFDekQsY0FBYztRQUNkLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQzlELE1BQU0sb0JBQW9CLEdBQUcsUUFBUSxFQUFFLFlBQVksQ0FBQztRQUNwRCxJQUFJLG9CQUFvQixLQUFLLFNBQVM7WUFDbEMsb0JBQW9CLEtBQUssbUJBQW1CLEVBQUU7WUFDaEQsT0FBTztTQUNSO1FBRUQsSUFBSSxHQUFHLENBQUM7UUFDUixJQUFJLE9BQU8sS0FBSyxNQUFNLEVBQUU7WUFDdEIsR0FBRyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUMxQjthQUFNLElBQUksT0FBTyxLQUFLLE1BQU0sRUFBRTtZQUM3QixxQ0FBcUM7WUFDckMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNwQyxHQUFHLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDaEY7YUFBTTtZQUNMLE1BQU0sK0NBQStDLEdBQUcsT0FBTyxDQUFDO1NBQ2pFO1FBQ0QsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckQsQ0FBQyxDQUFDLENBQUM7QUFDYixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsSUFBSSxNQUFtQyxDQUFDO0FBQ3hDLFNBQVMsVUFBVSxDQUFDLEdBQVc7SUFDN0IsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNYLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ3RDO0lBRUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDakMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXpDLE9BQU87UUFDTCw2REFBNkQ7UUFDN0QsUUFBUSxFQUFFLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFO1FBQ2xELE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtRQUNyQixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7S0FDbEIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtMb2NhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7QVBQX0JPT1RTVFJBUF9MSVNURU5FUiwgQ29tcG9uZW50UmVmLCBJbmplY3Rpb25Ub2tlbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JvdXRlciwgybVSZXN0b3JlZFN0YXRlIGFzIFJlc3RvcmVkU3RhdGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1VwZ3JhZGVNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL3VwZ3JhZGUvc3RhdGljJztcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGluaXRpYWxpemVyIHRoYXQgc2V0cyB1cCBgbmdSb3V0ZWAgaW50ZWdyYXRpb25cbiAqIGFsb25nIHdpdGggc2V0dGluZyB1cCB0aGUgQW5ndWxhciByb3V0ZXIuXG4gKlxuICogQHVzYWdlTm90ZXNcbiAqXG4gKiA8Y29kZS1leGFtcGxlIGxhbmd1YWdlPVwidHlwZXNjcmlwdFwiPlxuICogQE5nTW9kdWxlKHtcbiAqICBpbXBvcnRzOiBbXG4gKiAgIFJvdXRlck1vZHVsZS5mb3JSb290KFNPTUVfUk9VVEVTKSxcbiAqICAgVXBncmFkZU1vZHVsZVxuICogXSxcbiAqIHByb3ZpZGVyczogW1xuICogICBSb3V0ZXJVcGdyYWRlSW5pdGlhbGl6ZXJcbiAqIF1cbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgQXBwTW9kdWxlIHtcbiAqICAgbmdEb0Jvb3RzdHJhcCgpIHt9XG4gKiB9XG4gKiA8L2NvZGUtZXhhbXBsZT5cbiAqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBjb25zdCBSb3V0ZXJVcGdyYWRlSW5pdGlhbGl6ZXIgPSB7XG4gIHByb3ZpZGU6IEFQUF9CT09UU1RSQVBfTElTVEVORVIsXG4gIG11bHRpOiB0cnVlLFxuICB1c2VGYWN0b3J5OiBsb2NhdGlvblN5bmNCb290c3RyYXBMaXN0ZW5lciBhcyAobmdVcGdyYWRlOiBVcGdyYWRlTW9kdWxlKSA9PiAoKSA9PiB2b2lkLFxuICBkZXBzOiBbVXBncmFkZU1vZHVsZV1cbn07XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2NhdGlvblN5bmNCb290c3RyYXBMaXN0ZW5lcihuZ1VwZ3JhZGU6IFVwZ3JhZGVNb2R1bGUpIHtcbiAgcmV0dXJuICgpID0+IHtcbiAgICBzZXRVcExvY2F0aW9uU3luYyhuZ1VwZ3JhZGUpO1xuICB9O1xufVxuXG4vKipcbiAqIFNldHMgdXAgYSBsb2NhdGlvbiBjaGFuZ2UgbGlzdGVuZXIgdG8gdHJpZ2dlciBgaGlzdG9yeS5wdXNoU3RhdGVgLlxuICogV29ya3MgYXJvdW5kIHRoZSBwcm9ibGVtIHRoYXQgYG9uUG9wU3RhdGVgIGRvZXMgbm90IHRyaWdnZXIgYGhpc3RvcnkucHVzaFN0YXRlYC5cbiAqIE11c3QgYmUgY2FsbGVkICphZnRlciogY2FsbGluZyBgVXBncmFkZU1vZHVsZS5ib290c3RyYXBgLlxuICpcbiAqIEBwYXJhbSBuZ1VwZ3JhZGUgVGhlIHVwZ3JhZGUgTmdNb2R1bGUuXG4gKiBAcGFyYW0gdXJsVHlwZSBUaGUgbG9jYXRpb24gc3RyYXRlZ3kuXG4gKiBAc2VlIGBIYXNoTG9jYXRpb25TdHJhdGVneWBcbiAqIEBzZWUgYFBhdGhMb2NhdGlvblN0cmF0ZWd5YFxuICpcbiAqIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFVwTG9jYXRpb25TeW5jKG5nVXBncmFkZTogVXBncmFkZU1vZHVsZSwgdXJsVHlwZTogJ3BhdGgnfCdoYXNoJyA9ICdwYXRoJykge1xuICBpZiAoIW5nVXBncmFkZS4kaW5qZWN0b3IpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFxuICAgICAgICBSb3V0ZXJVcGdyYWRlSW5pdGlhbGl6ZXIgY2FuIGJlIHVzZWQgb25seSBhZnRlciBVcGdyYWRlTW9kdWxlLmJvb3RzdHJhcCBoYXMgYmVlbiBjYWxsZWQuXG4gICAgICAgIFJlbW92ZSBSb3V0ZXJVcGdyYWRlSW5pdGlhbGl6ZXIgYW5kIGNhbGwgc2V0VXBMb2NhdGlvblN5bmMgYWZ0ZXIgVXBncmFkZU1vZHVsZS5ib290c3RyYXAuXG4gICAgICBgKTtcbiAgfVxuXG4gIGNvbnN0IHJvdXRlcjogUm91dGVyID0gbmdVcGdyYWRlLmluamVjdG9yLmdldChSb3V0ZXIpO1xuICBjb25zdCBsb2NhdGlvbjogTG9jYXRpb24gPSBuZ1VwZ3JhZGUuaW5qZWN0b3IuZ2V0KExvY2F0aW9uKTtcblxuICBuZ1VwZ3JhZGUuJGluamVjdG9yLmdldCgnJHJvb3RTY29wZScpXG4gICAgICAuJG9uKFxuICAgICAgICAgICckbG9jYXRpb25DaGFuZ2VTdGFydCcsXG4gICAgICAgICAgKGV2ZW50OiBhbnksIG5ld1VybDogc3RyaW5nLCBvbGRVcmw6IHN0cmluZyxcbiAgICAgICAgICAgbmV3U3RhdGU/OiB7W2s6IHN0cmluZ106IHVua25vd259fFJlc3RvcmVkU3RhdGUsXG4gICAgICAgICAgIG9sZFN0YXRlPzoge1trOiBzdHJpbmddOiB1bmtub3dufXxSZXN0b3JlZFN0YXRlKSA9PiB7XG4gICAgICAgICAgICAvLyBOYXZpZ2F0aW9ucyBjb21pbmcgZnJvbSBBbmd1bGFyIHJvdXRlciBoYXZlIGEgbmF2aWdhdGlvbklkIHN0YXRlXG4gICAgICAgICAgICAvLyBwcm9wZXJ0eS4gRG9uJ3QgdHJpZ2dlciBBbmd1bGFyIHJvdXRlciBuYXZpZ2F0aW9uIGFnYWluIGlmIGl0IGlzXG4gICAgICAgICAgICAvLyBjYXVzZWQgYnkgYSBVUkwgY2hhbmdlIGZyb20gdGhlIGN1cnJlbnQgQW5ndWxhciByb3V0ZXJcbiAgICAgICAgICAgIC8vIG5hdmlnYXRpb24uXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50TmF2aWdhdGlvbklkID0gcm91dGVyLmdldEN1cnJlbnROYXZpZ2F0aW9uKCk/LmlkO1xuICAgICAgICAgICAgY29uc3QgbmV3U3RhdGVOYXZpZ2F0aW9uSWQgPSBuZXdTdGF0ZT8ubmF2aWdhdGlvbklkO1xuICAgICAgICAgICAgaWYgKG5ld1N0YXRlTmF2aWdhdGlvbklkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICBuZXdTdGF0ZU5hdmlnYXRpb25JZCA9PT0gY3VycmVudE5hdmlnYXRpb25JZCkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCB1cmw7XG4gICAgICAgICAgICBpZiAodXJsVHlwZSA9PT0gJ3BhdGgnKSB7XG4gICAgICAgICAgICAgIHVybCA9IHJlc29sdmVVcmwobmV3VXJsKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodXJsVHlwZSA9PT0gJ2hhc2gnKSB7XG4gICAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgZmlyc3QgaGFzaCBmcm9tIHRoZSBVUkxcbiAgICAgICAgICAgICAgY29uc3QgaGFzaElkeCA9IG5ld1VybC5pbmRleE9mKCcjJyk7XG4gICAgICAgICAgICAgIHVybCA9IHJlc29sdmVVcmwobmV3VXJsLnN1YnN0cmluZygwLCBoYXNoSWR4KSArIG5ld1VybC5zdWJzdHJpbmcoaGFzaElkeCArIDEpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRocm93ICdJbnZhbGlkIFVSTFR5cGUgcGFzc2VkIHRvIHNldFVwTG9jYXRpb25TeW5jOiAnICsgdXJsVHlwZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHBhdGggPSBsb2NhdGlvbi5ub3JtYWxpemUodXJsLnBhdGhuYW1lKTtcbiAgICAgICAgICAgIHJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHBhdGggKyB1cmwuc2VhcmNoICsgdXJsLmhhc2gpO1xuICAgICAgICAgIH0pO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYW5kIHBhcnNlcyBhIFVSTC5cbiAqXG4gKiAtIE5vcm1hbGl6aW5nIG1lYW5zIHRoYXQgYSByZWxhdGl2ZSBVUkwgd2lsbCBiZSByZXNvbHZlZCBpbnRvIGFuIGFic29sdXRlIFVSTCBpbiB0aGUgY29udGV4dCBvZlxuICogICB0aGUgYXBwbGljYXRpb24gZG9jdW1lbnQuXG4gKiAtIFBhcnNpbmcgbWVhbnMgdGhhdCB0aGUgYW5jaG9yJ3MgYHByb3RvY29sYCwgYGhvc3RuYW1lYCwgYHBvcnRgLCBgcGF0aG5hbWVgIGFuZCByZWxhdGVkXG4gKiAgIHByb3BlcnRpZXMgYXJlIGFsbCBwb3B1bGF0ZWQgdG8gcmVmbGVjdCB0aGUgbm9ybWFsaXplZCBVUkwuXG4gKlxuICogV2hpbGUgdGhpcyBhcHByb2FjaCBoYXMgd2lkZSBjb21wYXRpYmlsaXR5LCBpdCBkb2Vzbid0IHdvcmsgYXMgZXhwZWN0ZWQgb24gSUUuIE9uIElFLCBub3JtYWxpemluZ1xuICogaGFwcGVucyBzaW1pbGFyIHRvIG90aGVyIGJyb3dzZXJzLCBidXQgdGhlIHBhcnNlZCBjb21wb25lbnRzIHdpbGwgbm90IGJlIHNldC4gKEUuZy4gaWYgeW91IGFzc2lnblxuICogYGEuaHJlZiA9ICdmb28nYCwgdGhlbiBgYS5wcm90b2NvbGAsIGBhLmhvc3RgLCBldGMuIHdpbGwgbm90IGJlIGNvcnJlY3RseSB1cGRhdGVkLilcbiAqIFdlIHdvcmsgYXJvdW5kIHRoYXQgYnkgcGVyZm9ybWluZyB0aGUgcGFyc2luZyBpbiBhIDJuZCBzdGVwIGJ5IHRha2luZyBhIHByZXZpb3VzbHkgbm9ybWFsaXplZCBVUkxcbiAqIGFuZCBhc3NpZ25pbmcgaXQgYWdhaW4uIFRoaXMgY29ycmVjdGx5IHBvcHVsYXRlcyBhbGwgcHJvcGVydGllcy5cbiAqXG4gKiBTZWVcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIuanMvYmxvYi8yYzc0MDBlN2QwN2IwZjZjZWMxODE3ZGFiNDBiOTI1MGNlOGViY2U2L3NyYy9uZy91cmxVdGlscy5qcyNMMjYtTDMzXG4gKiBmb3IgbW9yZSBpbmZvLlxuICovXG5sZXQgYW5jaG9yOiBIVE1MQW5jaG9yRWxlbWVudHx1bmRlZmluZWQ7XG5mdW5jdGlvbiByZXNvbHZlVXJsKHVybDogc3RyaW5nKToge3BhdGhuYW1lOiBzdHJpbmcsIHNlYXJjaDogc3RyaW5nLCBoYXNoOiBzdHJpbmd9IHtcbiAgaWYgKCFhbmNob3IpIHtcbiAgICBhbmNob3IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gIH1cblxuICBhbmNob3Iuc2V0QXR0cmlidXRlKCdocmVmJywgdXJsKTtcbiAgYW5jaG9yLnNldEF0dHJpYnV0ZSgnaHJlZicsIGFuY2hvci5ocmVmKTtcblxuICByZXR1cm4ge1xuICAgIC8vIElFIGRvZXMgbm90IHN0YXJ0IGBwYXRobmFtZWAgd2l0aCBgL2AgbGlrZSBvdGhlciBicm93c2Vycy5cbiAgICBwYXRobmFtZTogYC8ke2FuY2hvci5wYXRobmFtZS5yZXBsYWNlKC9eXFwvLywgJycpfWAsXG4gICAgc2VhcmNoOiBhbmNob3Iuc2VhcmNoLFxuICAgIGhhc2g6IGFuY2hvci5oYXNoXG4gIH07XG59XG4iXX0=
|
package/fesm2015/router.mjs
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v14.0.0-next.
|
|
2
|
+
* @license Angular v14.0.0-next.10
|
|
3
3
|
* (c) 2010-2022 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import * as i0 from '@angular/core';
|
|
8
|
-
import { ɵisObservable, ɵisPromise, EventEmitter, Directive, Attribute, Output, Component, NgModuleRef, InjectionToken, InjectFlags, NgModuleFactory, ɵConsole, NgZone, Injectable, Input, HostListener, HostBinding, Optional, ContentChildren, Injector, Compiler, NgProbeToken, ANALYZE_FOR_ENTRY_COMPONENTS, SkipSelf, Inject, APP_INITIALIZER, APP_BOOTSTRAP_LISTENER, NgModule, ApplicationRef, Version } from '@angular/core';
|
|
9
|
-
import { from, of, BehaviorSubject, combineLatest,
|
|
8
|
+
import { ɵisObservable, ɵisPromise, EventEmitter, Directive, Attribute, Output, Component, NgModuleRef, InjectionToken, InjectFlags, NgModuleFactory, ɵConsole, NgZone, Injectable, ɵcoerceToBoolean, Input, HostListener, HostBinding, Optional, ContentChildren, Injector, Compiler, NgProbeToken, ANALYZE_FOR_ENTRY_COMPONENTS, SkipSelf, Inject, APP_INITIALIZER, APP_BOOTSTRAP_LISTENER, NgModule, ApplicationRef, Version } from '@angular/core';
|
|
9
|
+
import { from, of, BehaviorSubject, combineLatest, throwError, EmptyError, concat, defer, Observable, EMPTY, ConnectableObservable, Subject } from 'rxjs';
|
|
10
10
|
import { map, switchMap, take, startWith, scan, filter, catchError, concatMap, last as last$1, first, mergeMap, tap, takeLast, refCount, finalize, mergeAll } from 'rxjs/operators';
|
|
11
11
|
import * as i3 from '@angular/common';
|
|
12
12
|
import { Location, LocationStrategy, PlatformLocation, APP_BASE_HREF, ViewportScroller, HashLocationStrategy, PathLocationStrategy, LOCATION_INITIALIZED } from '@angular/common';
|
|
@@ -1131,7 +1131,7 @@ class UrlParser {
|
|
|
1131
1131
|
}
|
|
1132
1132
|
let outletName = undefined;
|
|
1133
1133
|
if (path.indexOf(':') > -1) {
|
|
1134
|
-
outletName = path.
|
|
1134
|
+
outletName = path.slice(0, path.indexOf(':'));
|
|
1135
1135
|
this.capture(outletName);
|
|
1136
1136
|
this.capture(':');
|
|
1137
1137
|
}
|
|
@@ -1713,17 +1713,17 @@ function createActivatedRoute(c) {
|
|
|
1713
1713
|
*/
|
|
1714
1714
|
function createUrlTree(route, urlTree, commands, queryParams, fragment) {
|
|
1715
1715
|
if (commands.length === 0) {
|
|
1716
|
-
return tree(urlTree.root, urlTree.root, urlTree, queryParams, fragment);
|
|
1716
|
+
return tree(urlTree.root, urlTree.root, urlTree.root, queryParams, fragment);
|
|
1717
1717
|
}
|
|
1718
1718
|
const nav = computeNavigation(commands);
|
|
1719
1719
|
if (nav.toRoot()) {
|
|
1720
|
-
return tree(urlTree.root, new UrlSegmentGroup([], {}),
|
|
1720
|
+
return tree(urlTree.root, urlTree.root, new UrlSegmentGroup([], {}), queryParams, fragment);
|
|
1721
1721
|
}
|
|
1722
1722
|
const startingPosition = findStartingPosition(nav, urlTree, route);
|
|
1723
1723
|
const segmentGroup = startingPosition.processChildren ?
|
|
1724
1724
|
updateSegmentGroupChildren(startingPosition.segmentGroup, startingPosition.index, nav.commands) :
|
|
1725
1725
|
updateSegmentGroup(startingPosition.segmentGroup, startingPosition.index, nav.commands);
|
|
1726
|
-
return tree(startingPosition.segmentGroup, segmentGroup,
|
|
1726
|
+
return tree(urlTree.root, startingPosition.segmentGroup, segmentGroup, queryParams, fragment);
|
|
1727
1727
|
}
|
|
1728
1728
|
function isMatrixParams(command) {
|
|
1729
1729
|
return typeof command === 'object' && command != null && !command.outlets && !command.segmentPath;
|
|
@@ -1735,17 +1735,18 @@ function isMatrixParams(command) {
|
|
|
1735
1735
|
function isCommandWithOutlets(command) {
|
|
1736
1736
|
return typeof command === 'object' && command != null && command.outlets;
|
|
1737
1737
|
}
|
|
1738
|
-
function tree(oldSegmentGroup, newSegmentGroup,
|
|
1738
|
+
function tree(oldRoot, oldSegmentGroup, newSegmentGroup, queryParams, fragment) {
|
|
1739
1739
|
let qp = {};
|
|
1740
1740
|
if (queryParams) {
|
|
1741
1741
|
forEach(queryParams, (value, name) => {
|
|
1742
1742
|
qp[name] = Array.isArray(value) ? value.map((v) => `${v}`) : `${value}`;
|
|
1743
1743
|
});
|
|
1744
1744
|
}
|
|
1745
|
-
if (
|
|
1745
|
+
if (oldRoot === oldSegmentGroup) {
|
|
1746
1746
|
return new UrlTree(newSegmentGroup, qp, fragment);
|
|
1747
1747
|
}
|
|
1748
|
-
|
|
1748
|
+
const newRoot = replaceSegment(oldRoot, oldSegmentGroup, newSegmentGroup);
|
|
1749
|
+
return new UrlTree(newRoot, qp, fragment);
|
|
1749
1750
|
}
|
|
1750
1751
|
function replaceSegment(current, oldSegment, newSegment) {
|
|
1751
1752
|
const children = {};
|
|
@@ -2525,9 +2526,9 @@ class RouterOutlet {
|
|
|
2525
2526
|
this.activateEvents.emit(this.activated.instance);
|
|
2526
2527
|
}
|
|
2527
2528
|
}
|
|
2528
|
-
RouterOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.
|
|
2529
|
-
RouterOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "14.0.0-next.
|
|
2530
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.
|
|
2529
|
+
RouterOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.10", ngImport: i0, type: RouterOutlet, deps: [{ token: ChildrenOutletContexts }, { token: i0.ViewContainerRef }, { token: i0.ComponentFactoryResolver }, { token: 'name', attribute: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
2530
|
+
RouterOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "14.0.0-next.10", type: RouterOutlet, selector: "router-outlet", outputs: { activateEvents: "activate", deactivateEvents: "deactivate", attachEvents: "attach", detachEvents: "detach" }, exportAs: ["outlet"], ngImport: i0 });
|
|
2531
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.10", ngImport: i0, type: RouterOutlet, decorators: [{
|
|
2531
2532
|
type: Directive,
|
|
2532
2533
|
args: [{ selector: 'router-outlet', exportAs: 'outlet' }]
|
|
2533
2534
|
}], ctorParameters: function () {
|
|
@@ -2583,9 +2584,9 @@ class OutletInjector {
|
|
|
2583
2584
|
*/
|
|
2584
2585
|
class ɵEmptyOutletComponent {
|
|
2585
2586
|
}
|
|
2586
|
-
ɵEmptyOutletComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.
|
|
2587
|
-
ɵEmptyOutletComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "14.0.0-next.
|
|
2588
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.
|
|
2587
|
+
ɵEmptyOutletComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.10", ngImport: i0, type: ɵEmptyOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2588
|
+
ɵEmptyOutletComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "14.0.0-next.10", type: ɵEmptyOutletComponent, selector: "ng-component", ngImport: i0, template: `<router-outlet></router-outlet>`, isInline: true, directives: [{ type: RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] });
|
|
2589
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.10", ngImport: i0, type: ɵEmptyOutletComponent, decorators: [{
|
|
2589
2590
|
type: Component,
|
|
2590
2591
|
args: [{ template: `<router-outlet></router-outlet>` }]
|
|
2591
2592
|
}] });
|
|
@@ -2659,9 +2660,6 @@ function validateNode(route, fullPath) {
|
|
|
2659
2660
|
const exp = `The default value of 'pathMatch' is 'prefix', but often the intent is to use 'full'.`;
|
|
2660
2661
|
throw new Error(`Invalid configuration of route '{path: "${fullPath}", redirectTo: "${route.redirectTo}"}': please provide 'pathMatch'. ${exp}`);
|
|
2661
2662
|
}
|
|
2662
|
-
if (route.pathMatch !== void 0 && route.pathMatch !== 'full' && route.pathMatch !== 'prefix') {
|
|
2663
|
-
throw new Error(`Invalid configuration of route '${fullPath}': pathMatch can only be set to 'prefix' or 'full'`);
|
|
2664
|
-
}
|
|
2665
2663
|
}
|
|
2666
2664
|
if (route.children) {
|
|
2667
2665
|
validateConfig(route.children, fullPath);
|
|
@@ -2719,7 +2717,7 @@ function sortByMatchingOutlets(routes, outletName) {
|
|
|
2719
2717
|
const noMatch$1 = {
|
|
2720
2718
|
matched: false,
|
|
2721
2719
|
consumedSegments: [],
|
|
2722
|
-
|
|
2720
|
+
remainingSegments: [],
|
|
2723
2721
|
parameters: {},
|
|
2724
2722
|
positionalParamSegments: {}
|
|
2725
2723
|
};
|
|
@@ -2732,7 +2730,7 @@ function match(segmentGroup, route, segments) {
|
|
|
2732
2730
|
return {
|
|
2733
2731
|
matched: true,
|
|
2734
2732
|
consumedSegments: [],
|
|
2735
|
-
|
|
2733
|
+
remainingSegments: segments,
|
|
2736
2734
|
parameters: {},
|
|
2737
2735
|
positionalParamSegments: {}
|
|
2738
2736
|
};
|
|
@@ -2750,7 +2748,7 @@ function match(segmentGroup, route, segments) {
|
|
|
2750
2748
|
return {
|
|
2751
2749
|
matched: true,
|
|
2752
2750
|
consumedSegments: res.consumed,
|
|
2753
|
-
|
|
2751
|
+
remainingSegments: segments.slice(res.consumed.length),
|
|
2754
2752
|
// TODO(atscott): investigate combining parameters and positionalParamSegments
|
|
2755
2753
|
parameters,
|
|
2756
2754
|
positionalParamSegments: (_a = res.posParams) !== null && _a !== void 0 ? _a : {}
|
|
@@ -2868,16 +2866,16 @@ class AbsoluteRedirect {
|
|
|
2868
2866
|
}
|
|
2869
2867
|
}
|
|
2870
2868
|
function noMatch(segmentGroup) {
|
|
2871
|
-
return
|
|
2869
|
+
return throwError(new NoMatch$1(segmentGroup));
|
|
2872
2870
|
}
|
|
2873
2871
|
function absoluteRedirect(newTree) {
|
|
2874
|
-
return
|
|
2872
|
+
return throwError(new AbsoluteRedirect(newTree));
|
|
2875
2873
|
}
|
|
2876
2874
|
function namedOutletsRedirect(redirectTo) {
|
|
2877
|
-
return
|
|
2875
|
+
return throwError(new Error(`Only absolute redirects can have named outlets. redirectTo: '${redirectTo}'`));
|
|
2878
2876
|
}
|
|
2879
2877
|
function canLoadFails(route) {
|
|
2880
|
-
return
|
|
2878
|
+
return throwError(navigationCancelingError(`Cannot load children because the guard of the route "path: '${route.path}'" returned false`));
|
|
2881
2879
|
}
|
|
2882
2880
|
/**
|
|
2883
2881
|
* Returns the `UrlTree` with the redirection applied.
|
|
@@ -2992,7 +2990,7 @@ class ApplyRedirects {
|
|
|
2992
2990
|
if (noLeftoversInUrl(segmentGroup, segments, outlet)) {
|
|
2993
2991
|
return of(new UrlSegmentGroup([], {}));
|
|
2994
2992
|
}
|
|
2995
|
-
|
|
2993
|
+
return noMatch(segmentGroup);
|
|
2996
2994
|
}
|
|
2997
2995
|
throw e;
|
|
2998
2996
|
}));
|
|
@@ -3026,7 +3024,7 @@ class ApplyRedirects {
|
|
|
3026
3024
|
}));
|
|
3027
3025
|
}
|
|
3028
3026
|
expandRegularSegmentAgainstRouteUsingRedirect(ngModule, segmentGroup, routes, route, segments, outlet) {
|
|
3029
|
-
const { matched, consumedSegments,
|
|
3027
|
+
const { matched, consumedSegments, remainingSegments, positionalParamSegments } = match(segmentGroup, route, segments);
|
|
3030
3028
|
if (!matched)
|
|
3031
3029
|
return noMatch(segmentGroup);
|
|
3032
3030
|
const newTree = this.applyRedirectCommands(consumedSegments, route.redirectTo, positionalParamSegments);
|
|
@@ -3034,7 +3032,7 @@ class ApplyRedirects {
|
|
|
3034
3032
|
return absoluteRedirect(newTree);
|
|
3035
3033
|
}
|
|
3036
3034
|
return this.lineralizeSegments(route, newTree).pipe(mergeMap((newSegments) => {
|
|
3037
|
-
return this.expandSegment(ngModule, segmentGroup, routes, newSegments.concat(
|
|
3035
|
+
return this.expandSegment(ngModule, segmentGroup, routes, newSegments.concat(remainingSegments), outlet, false);
|
|
3038
3036
|
}));
|
|
3039
3037
|
}
|
|
3040
3038
|
matchSegmentAgainstRoute(ngModule, rawSegmentGroup, route, segments, outlet) {
|
|
@@ -3049,15 +3047,14 @@ class ApplyRedirects {
|
|
|
3049
3047
|
}
|
|
3050
3048
|
return of(new UrlSegmentGroup(segments, {}));
|
|
3051
3049
|
}
|
|
3052
|
-
const { matched, consumedSegments,
|
|
3050
|
+
const { matched, consumedSegments, remainingSegments } = match(rawSegmentGroup, route, segments);
|
|
3053
3051
|
if (!matched)
|
|
3054
3052
|
return noMatch(rawSegmentGroup);
|
|
3055
|
-
const rawSlicedSegments = segments.slice(lastChild);
|
|
3056
3053
|
const childConfig$ = this.getChildConfig(ngModule, route, segments);
|
|
3057
3054
|
return childConfig$.pipe(mergeMap((routerConfig) => {
|
|
3058
3055
|
const childModule = routerConfig.module;
|
|
3059
3056
|
const childConfig = routerConfig.routes;
|
|
3060
|
-
const { segmentGroup: splitSegmentGroup, slicedSegments } = split(rawSegmentGroup, consumedSegments,
|
|
3057
|
+
const { segmentGroup: splitSegmentGroup, slicedSegments } = split(rawSegmentGroup, consumedSegments, remainingSegments, childConfig);
|
|
3061
3058
|
// See comment on the other call to `split` about why this is necessary.
|
|
3062
3059
|
const segmentGroup = new UrlSegmentGroup(splitSegmentGroup.segments, splitSegmentGroup.children);
|
|
3063
3060
|
if (slicedSegments.length === 0 && segmentGroup.hasChildren()) {
|
|
@@ -3634,7 +3631,7 @@ class Recognizer {
|
|
|
3634
3631
|
return null;
|
|
3635
3632
|
let snapshot;
|
|
3636
3633
|
let consumedSegments = [];
|
|
3637
|
-
let
|
|
3634
|
+
let remainingSegments = [];
|
|
3638
3635
|
if (route.path === '**') {
|
|
3639
3636
|
const params = segments.length > 0 ? last(segments).parameters : {};
|
|
3640
3637
|
snapshot = new ActivatedRouteSnapshot(segments, params, Object.freeze(Object.assign({}, this.urlTree.queryParams)), this.urlTree.fragment, getData(route), getOutlet(route), route.component, route, getSourceSegmentGroup(rawSegment), getPathIndexShift(rawSegment) + segments.length, getResolve(route));
|
|
@@ -3645,11 +3642,11 @@ class Recognizer {
|
|
|
3645
3642
|
return null;
|
|
3646
3643
|
}
|
|
3647
3644
|
consumedSegments = result.consumedSegments;
|
|
3648
|
-
|
|
3645
|
+
remainingSegments = result.remainingSegments;
|
|
3649
3646
|
snapshot = new ActivatedRouteSnapshot(consumedSegments, result.parameters, Object.freeze(Object.assign({}, this.urlTree.queryParams)), this.urlTree.fragment, getData(route), getOutlet(route), route.component, route, getSourceSegmentGroup(rawSegment), getPathIndexShift(rawSegment) + consumedSegments.length, getResolve(route));
|
|
3650
3647
|
}
|
|
3651
3648
|
const childConfig = getChildConfig(route);
|
|
3652
|
-
const { segmentGroup, slicedSegments } = split(rawSegment, consumedSegments,
|
|
3649
|
+
const { segmentGroup, slicedSegments } = split(rawSegment, consumedSegments, remainingSegments,
|
|
3653
3650
|
// Filter out routes with redirectTo because we are trying to create activated route
|
|
3654
3651
|
// snapshots and don't handle redirects here. That should have been done in
|
|
3655
3652
|
// `applyRedirects`.
|
|
@@ -3832,7 +3829,7 @@ function resolveNode(resolve, futureARS, futureRSS, moduleInjector) {
|
|
|
3832
3829
|
}
|
|
3833
3830
|
const data = {};
|
|
3834
3831
|
return from(keys).pipe(mergeMap(key => getResolver(resolve[key], futureARS, futureRSS, moduleInjector)
|
|
3835
|
-
.pipe(tap((value) => {
|
|
3832
|
+
.pipe(take(1), tap((value) => {
|
|
3836
3833
|
data[key] = value;
|
|
3837
3834
|
}))), takeLast(1), mergeMap(() => {
|
|
3838
3835
|
// Ensure all resolvers returned values, otherwise don't emit any "next" and just complete
|
|
@@ -4178,6 +4175,8 @@ class Router {
|
|
|
4178
4175
|
/**
|
|
4179
4176
|
* Enables a bug fix that corrects relative link resolution in components with empty paths.
|
|
4180
4177
|
* @see `RouterModule`
|
|
4178
|
+
*
|
|
4179
|
+
* @deprecated
|
|
4181
4180
|
*/
|
|
4182
4181
|
this.relativeLinkResolution = 'corrected';
|
|
4183
4182
|
/**
|
|
@@ -4262,7 +4261,7 @@ class Router {
|
|
|
4262
4261
|
tap(t => {
|
|
4263
4262
|
this.currentNavigation = {
|
|
4264
4263
|
id: t.id,
|
|
4265
|
-
initialUrl: t.
|
|
4264
|
+
initialUrl: t.rawUrl,
|
|
4266
4265
|
extractedUrl: t.extractedUrl,
|
|
4267
4266
|
trigger: t.source,
|
|
4268
4267
|
extras: t.extras,
|
|
@@ -4829,24 +4828,10 @@ class Router {
|
|
|
4829
4828
|
});
|
|
4830
4829
|
}
|
|
4831
4830
|
scheduleNavigation(rawUrl, source, restoredState, extras, priorPromise) {
|
|
4832
|
-
var _a, _b
|
|
4831
|
+
var _a, _b;
|
|
4833
4832
|
if (this.disposed) {
|
|
4834
4833
|
return Promise.resolve(false);
|
|
4835
4834
|
}
|
|
4836
|
-
// Duplicate navigations may be triggered by attempts to sync AngularJS and
|
|
4837
|
-
// Angular router states. We have the setTimeout in the location listener to
|
|
4838
|
-
// ensure the imperative nav is scheduled before the browser nav.
|
|
4839
|
-
const lastNavigation = this.transitions.value;
|
|
4840
|
-
const browserNavPrecededByRouterNav = isBrowserTriggeredNavigation(source) && lastNavigation &&
|
|
4841
|
-
!isBrowserTriggeredNavigation(lastNavigation.source);
|
|
4842
|
-
const navToSameUrl = lastNavigation.rawUrl.toString() === rawUrl.toString();
|
|
4843
|
-
const lastNavigationInProgress = lastNavigation.id === ((_a = this.currentNavigation) === null || _a === void 0 ? void 0 : _a.id);
|
|
4844
|
-
// We consider duplicates as ones that goes to the same URL while the first
|
|
4845
|
-
// is still processing.
|
|
4846
|
-
const isDuplicateNav = navToSameUrl && lastNavigationInProgress;
|
|
4847
|
-
if (browserNavPrecededByRouterNav && isDuplicateNav) {
|
|
4848
|
-
return Promise.resolve(true); // return value is not used
|
|
4849
|
-
}
|
|
4850
4835
|
let resolve;
|
|
4851
4836
|
let reject;
|
|
4852
4837
|
let promise;
|
|
@@ -4878,10 +4863,10 @@ class Router {
|
|
|
4878
4863
|
// If we're replacing the URL or doing a silent navigation, we do not want to increment the
|
|
4879
4864
|
// page id because we aren't pushing a new entry to history.
|
|
4880
4865
|
if (extras.replaceUrl || extras.skipLocationChange) {
|
|
4881
|
-
targetPageId = (
|
|
4866
|
+
targetPageId = (_a = this.browserPageId) !== null && _a !== void 0 ? _a : 0;
|
|
4882
4867
|
}
|
|
4883
4868
|
else {
|
|
4884
|
-
targetPageId = ((
|
|
4869
|
+
targetPageId = ((_b = this.browserPageId) !== null && _b !== void 0 ? _b : 0) + 1;
|
|
4885
4870
|
}
|
|
4886
4871
|
}
|
|
4887
4872
|
}
|
|
@@ -4989,9 +4974,9 @@ class Router {
|
|
|
4989
4974
|
return { navigationId };
|
|
4990
4975
|
}
|
|
4991
4976
|
}
|
|
4992
|
-
Router.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.
|
|
4993
|
-
Router.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.0-next.
|
|
4994
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.
|
|
4977
|
+
Router.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.10", ngImport: i0, type: Router, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable });
|
|
4978
|
+
Router.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.0-next.10", ngImport: i0, type: Router });
|
|
4979
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.10", ngImport: i0, type: Router, decorators: [{
|
|
4995
4980
|
type: Injectable
|
|
4996
4981
|
}], ctorParameters: function () { return [{ type: i0.Type }, { type: UrlSerializer }, { type: ChildrenOutletContexts }, { type: i3.Location }, { type: i0.Injector }, { type: i0.Compiler }, { type: undefined }]; } });
|
|
4997
4982
|
function validateCommands(commands) {
|
|
@@ -5023,7 +5008,7 @@ function isBrowserTriggeredNavigation(source) {
|
|
|
5023
5008
|
* For example, `['/team', teamId, 'user', userName, {details: true}]`
|
|
5024
5009
|
* generates a link to `/team/11/user/bob;details=true`.
|
|
5025
5010
|
*
|
|
5026
|
-
* Multiple static segments can be merged into one term and combined with dynamic
|
|
5011
|
+
* Multiple static segments can be merged into one term and combined with dynamic segments.
|
|
5027
5012
|
* For example, `['/team/11/user', userName, {details: true}]`
|
|
5028
5013
|
*
|
|
5029
5014
|
* The input that you provide to the link is treated as a delta to the current URL.
|
|
@@ -5161,8 +5146,8 @@ class RouterLink {
|
|
|
5161
5146
|
return true;
|
|
5162
5147
|
}
|
|
5163
5148
|
const extras = {
|
|
5164
|
-
skipLocationChange:
|
|
5165
|
-
replaceUrl:
|
|
5149
|
+
skipLocationChange: ɵcoerceToBoolean(this.skipLocationChange),
|
|
5150
|
+
replaceUrl: ɵcoerceToBoolean(this.replaceUrl),
|
|
5166
5151
|
state: this.state,
|
|
5167
5152
|
};
|
|
5168
5153
|
this.router.navigateByUrl(this.urlTree, extras);
|
|
@@ -5179,13 +5164,13 @@ class RouterLink {
|
|
|
5179
5164
|
queryParams: this.queryParams,
|
|
5180
5165
|
fragment: this.fragment,
|
|
5181
5166
|
queryParamsHandling: this.queryParamsHandling,
|
|
5182
|
-
preserveFragment:
|
|
5167
|
+
preserveFragment: ɵcoerceToBoolean(this.preserveFragment),
|
|
5183
5168
|
});
|
|
5184
5169
|
}
|
|
5185
5170
|
}
|
|
5186
|
-
RouterLink.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.
|
|
5187
|
-
RouterLink.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "14.0.0-next.
|
|
5188
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.
|
|
5171
|
+
RouterLink.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.10", ngImport: i0, type: RouterLink, deps: [{ token: Router }, { token: ActivatedRoute }, { token: 'tabindex', attribute: true }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
5172
|
+
RouterLink.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "14.0.0-next.10", type: RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: { queryParams: "queryParams", fragment: "fragment", queryParamsHandling: "queryParamsHandling", preserveFragment: "preserveFragment", skipLocationChange: "skipLocationChange", replaceUrl: "replaceUrl", state: "state", relativeTo: "relativeTo", routerLink: "routerLink" }, host: { listeners: { "click": "onClick()" } }, usesOnChanges: true, ngImport: i0 });
|
|
5173
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.10", ngImport: i0, type: RouterLink, decorators: [{
|
|
5189
5174
|
type: Directive,
|
|
5190
5175
|
args: [{ selector: ':not(a):not(area)[routerLink]' }]
|
|
5191
5176
|
}], ctorParameters: function () {
|
|
@@ -5277,8 +5262,8 @@ class RouterLinkWithHref {
|
|
|
5277
5262
|
return true;
|
|
5278
5263
|
}
|
|
5279
5264
|
const extras = {
|
|
5280
|
-
skipLocationChange:
|
|
5281
|
-
replaceUrl:
|
|
5265
|
+
skipLocationChange: ɵcoerceToBoolean(this.skipLocationChange),
|
|
5266
|
+
replaceUrl: ɵcoerceToBoolean(this.replaceUrl),
|
|
5282
5267
|
state: this.state
|
|
5283
5268
|
};
|
|
5284
5269
|
this.router.navigateByUrl(this.urlTree, extras);
|
|
@@ -5300,13 +5285,13 @@ class RouterLinkWithHref {
|
|
|
5300
5285
|
queryParams: this.queryParams,
|
|
5301
5286
|
fragment: this.fragment,
|
|
5302
5287
|
queryParamsHandling: this.queryParamsHandling,
|
|
5303
|
-
preserveFragment:
|
|
5288
|
+
preserveFragment: ɵcoerceToBoolean(this.preserveFragment),
|
|
5304
5289
|
});
|
|
5305
5290
|
}
|
|
5306
5291
|
}
|
|
5307
|
-
RouterLinkWithHref.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.
|
|
5308
|
-
RouterLinkWithHref.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "14.0.0-next.
|
|
5309
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.
|
|
5292
|
+
RouterLinkWithHref.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.10", ngImport: i0, type: RouterLinkWithHref, deps: [{ token: Router }, { token: ActivatedRoute }, { token: i3.LocationStrategy }], target: i0.ɵɵFactoryTarget.Directive });
|
|
5293
|
+
RouterLinkWithHref.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "14.0.0-next.10", type: RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: { target: "target", queryParams: "queryParams", fragment: "fragment", queryParamsHandling: "queryParamsHandling", preserveFragment: "preserveFragment", skipLocationChange: "skipLocationChange", replaceUrl: "replaceUrl", state: "state", relativeTo: "relativeTo", routerLink: "routerLink" }, host: { listeners: { "click": "onClick($event.button,$event.ctrlKey,$event.shiftKey,$event.altKey,$event.metaKey)" }, properties: { "attr.target": "this.target", "attr.href": "this.href" } }, usesOnChanges: true, ngImport: i0 });
|
|
5294
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.10", ngImport: i0, type: RouterLinkWithHref, decorators: [{
|
|
5310
5295
|
type: Directive,
|
|
5311
5296
|
args: [{ selector: 'a[routerLink],area[routerLink]' }]
|
|
5312
5297
|
}], ctorParameters: function () { return [{ type: Router }, { type: ActivatedRoute }, { type: i3.LocationStrategy }]; }, propDecorators: { target: [{
|
|
@@ -5340,9 +5325,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.1",
|
|
|
5340
5325
|
args: ['click',
|
|
5341
5326
|
['$event.button', '$event.ctrlKey', '$event.shiftKey', '$event.altKey', '$event.metaKey']]
|
|
5342
5327
|
}] } });
|
|
5343
|
-
function attrBoolValue(s) {
|
|
5344
|
-
return s === '' || !!s;
|
|
5345
|
-
}
|
|
5346
5328
|
|
|
5347
5329
|
/**
|
|
5348
5330
|
* @license
|
|
@@ -5520,9 +5502,9 @@ class RouterLinkActive {
|
|
|
5520
5502
|
this.links.some(isActiveCheckFn) || this.linksWithHrefs.some(isActiveCheckFn);
|
|
5521
5503
|
}
|
|
5522
5504
|
}
|
|
5523
|
-
RouterLinkActive.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.
|
|
5524
|
-
RouterLinkActive.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "14.0.0-next.
|
|
5525
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.
|
|
5505
|
+
RouterLinkActive.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.10", ngImport: i0, type: RouterLinkActive, deps: [{ token: Router }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: RouterLink, optional: true }, { token: RouterLinkWithHref, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
5506
|
+
RouterLinkActive.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "14.0.0-next.10", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: { routerLinkActiveOptions: "routerLinkActiveOptions", routerLinkActive: "routerLinkActive" }, outputs: { isActiveChange: "isActiveChange" }, queries: [{ propertyName: "links", predicate: RouterLink, descendants: true }, { propertyName: "linksWithHrefs", predicate: RouterLinkWithHref, descendants: true }], exportAs: ["routerLinkActive"], usesOnChanges: true, ngImport: i0 });
|
|
5507
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.10", ngImport: i0, type: RouterLinkActive, decorators: [{
|
|
5526
5508
|
type: Directive,
|
|
5527
5509
|
args: [{
|
|
5528
5510
|
selector: '[routerLinkActive]',
|
|
@@ -5626,9 +5608,9 @@ class DefaultTitleStrategy extends TitleStrategy {
|
|
|
5626
5608
|
}
|
|
5627
5609
|
}
|
|
5628
5610
|
}
|
|
5629
|
-
DefaultTitleStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.
|
|
5630
|
-
DefaultTitleStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.0-next.
|
|
5631
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.
|
|
5611
|
+
DefaultTitleStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.10", ngImport: i0, type: DefaultTitleStrategy, deps: [{ token: i1.Title }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
5612
|
+
DefaultTitleStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.0-next.10", ngImport: i0, type: DefaultTitleStrategy, providedIn: 'root' });
|
|
5613
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.10", ngImport: i0, type: DefaultTitleStrategy, decorators: [{
|
|
5632
5614
|
type: Injectable,
|
|
5633
5615
|
args: [{ providedIn: 'root' }]
|
|
5634
5616
|
}], ctorParameters: function () { return [{ type: i1.Title }]; } });
|
|
@@ -5746,9 +5728,9 @@ class RouterPreloader {
|
|
|
5746
5728
|
});
|
|
5747
5729
|
}
|
|
5748
5730
|
}
|
|
5749
|
-
RouterPreloader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.
|
|
5750
|
-
RouterPreloader.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.0-next.
|
|
5751
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.
|
|
5731
|
+
RouterPreloader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.10", ngImport: i0, type: RouterPreloader, deps: [{ token: Router }, { token: i0.Compiler }, { token: i0.Injector }, { token: PreloadingStrategy }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
5732
|
+
RouterPreloader.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.0-next.10", ngImport: i0, type: RouterPreloader });
|
|
5733
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.10", ngImport: i0, type: RouterPreloader, decorators: [{
|
|
5752
5734
|
type: Injectable
|
|
5753
5735
|
}], ctorParameters: function () { return [{ type: Router }, { type: i0.Compiler }, { type: i0.Injector }, { type: PreloadingStrategy }]; } });
|
|
5754
5736
|
|
|
@@ -5827,9 +5809,9 @@ class RouterScroller {
|
|
|
5827
5809
|
}
|
|
5828
5810
|
}
|
|
5829
5811
|
}
|
|
5830
|
-
RouterScroller.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.
|
|
5831
|
-
RouterScroller.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.0-next.
|
|
5832
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.
|
|
5812
|
+
RouterScroller.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.10", ngImport: i0, type: RouterScroller, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable });
|
|
5813
|
+
RouterScroller.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.0-next.10", ngImport: i0, type: RouterScroller });
|
|
5814
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.10", ngImport: i0, type: RouterScroller, decorators: [{
|
|
5833
5815
|
type: Injectable
|
|
5834
5816
|
}], ctorParameters: function () { return [{ type: Router }, { type: i3.ViewportScroller }, { type: undefined }]; } });
|
|
5835
5817
|
|
|
@@ -5970,10 +5952,10 @@ class RouterModule {
|
|
|
5970
5952
|
return { ngModule: RouterModule, providers: [provideRoutes(routes)] };
|
|
5971
5953
|
}
|
|
5972
5954
|
}
|
|
5973
|
-
RouterModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.
|
|
5974
|
-
RouterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "14.0.0-next.
|
|
5975
|
-
RouterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.0-next.
|
|
5976
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.
|
|
5955
|
+
RouterModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.10", ngImport: i0, type: RouterModule, deps: [{ token: ROUTER_FORROOT_GUARD, optional: true }, { token: Router, optional: true }], target: i0.ɵɵFactoryTarget.NgModule });
|
|
5956
|
+
RouterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "14.0.0-next.10", ngImport: i0, type: RouterModule, declarations: [RouterOutlet, RouterLink, RouterLinkWithHref, RouterLinkActive, ɵEmptyOutletComponent], exports: [RouterOutlet, RouterLink, RouterLinkWithHref, RouterLinkActive, ɵEmptyOutletComponent] });
|
|
5957
|
+
RouterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.0-next.10", ngImport: i0, type: RouterModule });
|
|
5958
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.10", ngImport: i0, type: RouterModule, decorators: [{
|
|
5977
5959
|
type: NgModule,
|
|
5978
5960
|
args: [{
|
|
5979
5961
|
declarations: ROUTER_DIRECTIVES,
|
|
@@ -6155,9 +6137,9 @@ class RouterInitializer {
|
|
|
6155
6137
|
this.destroyed = true;
|
|
6156
6138
|
}
|
|
6157
6139
|
}
|
|
6158
|
-
RouterInitializer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.
|
|
6159
|
-
RouterInitializer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.0-next.
|
|
6160
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.
|
|
6140
|
+
RouterInitializer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.10", ngImport: i0, type: RouterInitializer, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
6141
|
+
RouterInitializer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.0-next.10", ngImport: i0, type: RouterInitializer });
|
|
6142
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.10", ngImport: i0, type: RouterInitializer, decorators: [{
|
|
6161
6143
|
type: Injectable
|
|
6162
6144
|
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
6163
6145
|
function getAppInitializer(r) {
|
|
@@ -6197,7 +6179,7 @@ function provideRouterInitializer() {
|
|
|
6197
6179
|
/**
|
|
6198
6180
|
* @publicApi
|
|
6199
6181
|
*/
|
|
6200
|
-
const VERSION = new Version('14.0.0-next.
|
|
6182
|
+
const VERSION = new Version('14.0.0-next.10');
|
|
6201
6183
|
|
|
6202
6184
|
/**
|
|
6203
6185
|
* @license
|