@angular/router 17.1.0-next.5 → 17.1.0

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.
Files changed (36) hide show
  1. package/esm2022/src/components/empty_outlet.mjs +3 -3
  2. package/esm2022/src/create_url_tree.mjs +4 -6
  3. package/esm2022/src/directives/router_link.mjs +7 -4
  4. package/esm2022/src/directives/router_link_active.mjs +3 -3
  5. package/esm2022/src/directives/router_outlet.mjs +6 -6
  6. package/esm2022/src/navigation_transition.mjs +5 -5
  7. package/esm2022/src/operators/activate_routes.mjs +5 -5
  8. package/esm2022/src/page_title_strategy.mjs +6 -6
  9. package/esm2022/src/provide_router.mjs +1 -1
  10. package/esm2022/src/route_reuse_strategy.mjs +6 -6
  11. package/esm2022/src/router.mjs +13 -16
  12. package/esm2022/src/router_config.mjs +1 -1
  13. package/esm2022/src/router_config_loader.mjs +4 -4
  14. package/esm2022/src/router_module.mjs +4 -4
  15. package/esm2022/src/router_outlet_context.mjs +3 -3
  16. package/esm2022/src/router_preloader.mjs +9 -9
  17. package/esm2022/src/router_scroller.mjs +6 -6
  18. package/esm2022/src/router_state.mjs +9 -17
  19. package/esm2022/src/statemanager/state_manager.mjs +8 -8
  20. package/esm2022/src/url_handling_strategy.mjs +6 -6
  21. package/esm2022/src/url_tree.mjs +12 -18
  22. package/esm2022/src/utils/collection.mjs +1 -7
  23. package/esm2022/src/utils/config_matching.mjs +4 -5
  24. package/esm2022/src/version.mjs +1 -1
  25. package/esm2022/testing/src/router_testing_harness.mjs +6 -6
  26. package/esm2022/testing/src/router_testing_module.mjs +4 -4
  27. package/esm2022/upgrade/src/upgrade.mjs +2 -4
  28. package/fesm2022/router.mjs +115 -137
  29. package/fesm2022/router.mjs.map +1 -1
  30. package/fesm2022/testing.mjs +11 -11
  31. package/fesm2022/upgrade.mjs +2 -4
  32. package/fesm2022/upgrade.mjs.map +1 -1
  33. package/index.d.ts +9 -2
  34. package/package.json +4 -4
  35. package/testing/index.d.ts +1 -1
  36. package/upgrade/index.d.ts +1 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v17.1.0-next.5
2
+ * @license Angular v17.1.0
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -9,7 +9,7 @@ import { ɵisPromise, ɵRuntimeError, Injectable, EventEmitter, inject, ViewCont
9
9
  import { isObservable, from, of, BehaviorSubject, combineLatest, EmptyError, concat, defer, pipe, throwError, EMPTY, ConnectableObservable, Subject, Subscription } from 'rxjs';
10
10
  import * as i3 from '@angular/common';
11
11
  import { DOCUMENT, Location, ViewportScroller, LOCATION_INITIALIZED, LocationStrategy, HashLocationStrategy, PathLocationStrategy } from '@angular/common';
12
- import { map, switchMap, take, startWith, filter, mergeMap, first, concatMap, tap, catchError, scan, defaultIfEmpty, last as last$1, takeLast, mapTo, finalize, refCount, takeUntil, mergeAll } from 'rxjs/operators';
12
+ import { map, switchMap, take, startWith, filter, mergeMap, first, concatMap, tap, catchError, scan, defaultIfEmpty, last, takeLast, mapTo, finalize, refCount, takeUntil, mergeAll } from 'rxjs/operators';
13
13
  import * as i1 from '@angular/platform-browser';
14
14
 
15
15
  /**
@@ -149,12 +149,6 @@ function equalArraysOrString(a, b) {
149
149
  return a === b;
150
150
  }
151
151
  }
152
- /**
153
- * Return the last element of an array.
154
- */
155
- function last(a) {
156
- return a.length > 0 ? a[a.length - 1] : null;
157
- }
158
152
  function wrapIntoObservable(value) {
159
153
  if (isObservable(value)) {
160
154
  return value;
@@ -300,9 +294,7 @@ class UrlTree {
300
294
  }
301
295
  }
302
296
  get queryParamMap() {
303
- if (!this._queryParamMap) {
304
- this._queryParamMap = convertToParamMap(this.queryParams);
305
- }
297
+ this._queryParamMap ??= convertToParamMap(this.queryParams);
306
298
  return this._queryParamMap;
307
299
  }
308
300
  /** @docsNotRequired */
@@ -380,9 +372,7 @@ class UrlSegment {
380
372
  this.parameters = parameters;
381
373
  }
382
374
  get parameterMap() {
383
- if (!this._parameterMap) {
384
- this._parameterMap = convertToParamMap(this.parameters);
385
- }
375
+ this._parameterMap ??= convertToParamMap(this.parameters);
386
376
  return this._parameterMap;
387
377
  }
388
378
  /** @docsNotRequired */
@@ -425,10 +415,10 @@ function mapChildrenIntoArray(segment, fn) {
425
415
  * @publicApi
426
416
  */
427
417
  class UrlSerializer {
428
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: UrlSerializer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
429
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: UrlSerializer, providedIn: 'root', useFactory: () => new DefaultUrlSerializer() }); }
418
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: UrlSerializer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
419
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: UrlSerializer, providedIn: 'root', useFactory: () => new DefaultUrlSerializer() }); }
430
420
  }
431
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: UrlSerializer, decorators: [{
421
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: UrlSerializer, decorators: [{
432
422
  type: Injectable,
433
423
  args: [{ providedIn: 'root', useFactory: () => new DefaultUrlSerializer() }]
434
424
  }] });
@@ -551,19 +541,18 @@ function serializePath(path) {
551
541
  return `${encodeUriSegment(path.path)}${serializeMatrixParams(path.parameters)}`;
552
542
  }
553
543
  function serializeMatrixParams(params) {
554
- return Object.keys(params)
555
- .map(key => `;${encodeUriSegment(key)}=${encodeUriSegment(params[key])}`)
544
+ return Object.entries(params)
545
+ .map(([key, value]) => `;${encodeUriSegment(key)}=${encodeUriSegment(value)}`)
556
546
  .join('');
557
547
  }
558
548
  function serializeQueryParams(params) {
559
- const strParams = Object.keys(params)
560
- .map((name) => {
561
- const value = params[name];
549
+ const strParams = Object.entries(params)
550
+ .map(([name, value]) => {
562
551
  return Array.isArray(value) ?
563
552
  value.map(v => `${encodeUriQuery(name)}=${encodeUriQuery(v)}`).join('&') :
564
553
  `${encodeUriQuery(name)}=${encodeUriQuery(value)}`;
565
554
  })
566
- .filter(s => !!s);
555
+ .filter(s => s);
567
556
  return strParams.length ? `?${strParams.join('&')}` : '';
568
557
  }
569
558
  const SEGMENT_RE = /^[^\/()?;#]+/;
@@ -767,8 +756,7 @@ function createRoot(rootCandidate) {
767
756
  */
768
757
  function squashSegmentGroup(segmentGroup) {
769
758
  const newChildren = {};
770
- for (const childOutlet of Object.keys(segmentGroup.children)) {
771
- const child = segmentGroup.children[childOutlet];
759
+ for (const [childOutlet, child] of Object.entries(segmentGroup.children)) {
772
760
  const childCandidate = squashSegmentGroup(child);
773
761
  // moves named children in an empty path primary child into this group
774
762
  if (childOutlet === PRIMARY_OUTLET && childCandidate.segments.length === 0 &&
@@ -953,7 +941,7 @@ class Navigation {
953
941
  'Root segment cannot have matrix parameters');
954
942
  }
955
943
  const cmdWithOutlet = commands.find(isCommandWithOutlets);
956
- if (cmdWithOutlet && cmdWithOutlet !== last(commands)) {
944
+ if (cmdWithOutlet && cmdWithOutlet !== commands.at(-1)) {
957
945
  throw new ɵRuntimeError(4004 /* RuntimeErrorCode.MISPLACED_OUTLETS_COMMAND */, (typeof ngDevMode === 'undefined' || ngDevMode) &&
958
946
  '{outlets:{}} has to be the last command');
959
947
  }
@@ -1052,9 +1040,7 @@ function getOutlets(commands) {
1052
1040
  return { [PRIMARY_OUTLET]: commands };
1053
1041
  }
1054
1042
  function updateSegmentGroup(segmentGroup, startIndex, commands) {
1055
- if (!segmentGroup) {
1056
- segmentGroup = new UrlSegmentGroup([], {});
1057
- }
1043
+ segmentGroup ??= new UrlSegmentGroup([], {});
1058
1044
  if (segmentGroup.segments.length === 0 && segmentGroup.hasChildren()) {
1059
1045
  return updateSegmentGroupChildren(segmentGroup, startIndex, commands);
1060
1046
  }
@@ -1855,10 +1841,10 @@ class ChildrenOutletContexts {
1855
1841
  getContext(childName) {
1856
1842
  return this.contexts.get(childName) || null;
1857
1843
  }
1858
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: ChildrenOutletContexts, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1859
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: ChildrenOutletContexts, providedIn: 'root' }); }
1844
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: ChildrenOutletContexts, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1845
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: ChildrenOutletContexts, providedIn: 'root' }); }
1860
1846
  }
1861
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: ChildrenOutletContexts, decorators: [{
1847
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: ChildrenOutletContexts, decorators: [{
1862
1848
  type: Injectable,
1863
1849
  args: [{ providedIn: 'root' }]
1864
1850
  }] });
@@ -1994,8 +1980,8 @@ class RouterState extends Tree {
1994
1980
  return this.snapshot.toString();
1995
1981
  }
1996
1982
  }
1997
- function createEmptyState(urlTree, rootComponent) {
1998
- const snapshot = createEmptyStateSnapshot(urlTree, rootComponent);
1983
+ function createEmptyState(rootComponent) {
1984
+ const snapshot = createEmptyStateSnapshot(rootComponent);
1999
1985
  const emptyUrl = new BehaviorSubject([new UrlSegment('', {})]);
2000
1986
  const emptyParams = new BehaviorSubject({});
2001
1987
  const emptyData = new BehaviorSubject({});
@@ -2005,7 +1991,7 @@ function createEmptyState(urlTree, rootComponent) {
2005
1991
  activated.snapshot = snapshot.root;
2006
1992
  return new RouterState(new TreeNode(activated, []), snapshot);
2007
1993
  }
2008
- function createEmptyStateSnapshot(urlTree, rootComponent) {
1994
+ function createEmptyStateSnapshot(rootComponent) {
2009
1995
  const emptyParams = {};
2010
1996
  const emptyData = {};
2011
1997
  const emptyQueryParams = {};
@@ -2095,9 +2081,7 @@ class ActivatedRoute {
2095
2081
  * The map supports retrieving single and multiple values from the same parameter.
2096
2082
  */
2097
2083
  get paramMap() {
2098
- if (!this._paramMap) {
2099
- this._paramMap = this.params.pipe(map((p) => convertToParamMap(p)));
2100
- }
2084
+ this._paramMap ??= this.params.pipe(map((p) => convertToParamMap(p)));
2101
2085
  return this._paramMap;
2102
2086
  }
2103
2087
  /**
@@ -2105,10 +2089,8 @@ class ActivatedRoute {
2105
2089
  * The map supports retrieving single and multiple values from the query parameter.
2106
2090
  */
2107
2091
  get queryParamMap() {
2108
- if (!this._queryParamMap) {
2109
- this._queryParamMap =
2110
- this.queryParams.pipe(map((p) => convertToParamMap(p)));
2111
- }
2092
+ this._queryParamMap ??=
2093
+ this.queryParams.pipe(map((p) => convertToParamMap(p)));
2112
2094
  return this._queryParamMap;
2113
2095
  }
2114
2096
  toString() {
@@ -2257,15 +2239,11 @@ class ActivatedRouteSnapshot {
2257
2239
  return this._routerState.pathFromRoot(this);
2258
2240
  }
2259
2241
  get paramMap() {
2260
- if (!this._paramMap) {
2261
- this._paramMap = convertToParamMap(this.params);
2262
- }
2242
+ this._paramMap ??= convertToParamMap(this.params);
2263
2243
  return this._paramMap;
2264
2244
  }
2265
2245
  get queryParamMap() {
2266
- if (!this._queryParamMap) {
2267
- this._queryParamMap = convertToParamMap(this.queryParams);
2268
- }
2246
+ this._queryParamMap ??= convertToParamMap(this.queryParams);
2269
2247
  return this._queryParamMap;
2270
2248
  }
2271
2249
  toString() {
@@ -2578,10 +2556,10 @@ class RouterOutlet {
2578
2556
  this.inputBinder?.bindActivatedRouteToOutletComponent(this);
2579
2557
  this.activateEvents.emit(this.activated.instance);
2580
2558
  }
2581
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: RouterOutlet, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2582
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.0-next.5", type: RouterOutlet, isStandalone: true, selector: "router-outlet", inputs: { name: "name" }, outputs: { activateEvents: "activate", deactivateEvents: "deactivate", attachEvents: "attach", detachEvents: "detach" }, exportAs: ["outlet"], usesOnChanges: true, ngImport: i0 }); }
2559
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: RouterOutlet, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2560
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.0", type: RouterOutlet, isStandalone: true, selector: "router-outlet", inputs: { name: "name" }, outputs: { activateEvents: "activate", deactivateEvents: "deactivate", attachEvents: "attach", detachEvents: "detach" }, exportAs: ["outlet"], usesOnChanges: true, ngImport: i0 }); }
2583
2561
  }
2584
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: RouterOutlet, decorators: [{
2562
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: RouterOutlet, decorators: [{
2585
2563
  type: Directive,
2586
2564
  args: [{
2587
2565
  selector: 'router-outlet',
@@ -2684,10 +2662,10 @@ class RoutedComponentInputBinder {
2684
2662
  });
2685
2663
  this.outletDataSubscriptions.set(outlet, dataSubscription);
2686
2664
  }
2687
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: RoutedComponentInputBinder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2688
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: RoutedComponentInputBinder }); }
2665
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: RoutedComponentInputBinder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2666
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: RoutedComponentInputBinder }); }
2689
2667
  }
2690
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: RoutedComponentInputBinder, decorators: [{
2668
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: RoutedComponentInputBinder, decorators: [{
2691
2669
  type: Injectable
2692
2670
  }] });
2693
2671
 
@@ -2767,10 +2745,10 @@ function isNavigationCancelingError$1(error) {
2767
2745
  * to this `EmptyOutletComponent`.
2768
2746
  */
2769
2747
  class ɵEmptyOutletComponent {
2770
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: ɵEmptyOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2771
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0-next.5", type: ɵEmptyOutletComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `<router-outlet></router-outlet>`, isInline: true, dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
2748
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: ɵEmptyOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2749
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: ɵEmptyOutletComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `<router-outlet></router-outlet>`, isInline: true, dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
2772
2750
  }
2773
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: ɵEmptyOutletComponent, decorators: [{
2751
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: ɵEmptyOutletComponent, decorators: [{
2774
2752
  type: Component,
2775
2753
  args: [{
2776
2754
  template: `<router-outlet></router-outlet>`,
@@ -3039,8 +3017,8 @@ class ActivateRoutes {
3039
3017
  const context = parentContexts.getContext(route.value.outlet);
3040
3018
  const contexts = context && route.value.component ? context.children : parentContexts;
3041
3019
  const children = nodeChildrenAsMap(route);
3042
- for (const childOutlet of Object.keys(children)) {
3043
- this.deactivateRouteAndItsChildren(children[childOutlet], contexts);
3020
+ for (const treeNode of Object.values(children)) {
3021
+ this.deactivateRouteAndItsChildren(treeNode, contexts);
3044
3022
  }
3045
3023
  if (context && context.outlet) {
3046
3024
  const componentRef = context.outlet.detach();
@@ -3054,8 +3032,8 @@ class ActivateRoutes {
3054
3032
  // children that need deactivating.
3055
3033
  const contexts = context && route.value.component ? context.children : parentContexts;
3056
3034
  const children = nodeChildrenAsMap(route);
3057
- for (const childOutlet of Object.keys(children)) {
3058
- this.deactivateRouteAndItsChildren(children[childOutlet], contexts);
3035
+ for (const treeNode of Object.values(children)) {
3036
+ this.deactivateRouteAndItsChildren(treeNode, contexts);
3059
3037
  }
3060
3038
  if (context) {
3061
3039
  if (context.outlet) {
@@ -3661,7 +3639,7 @@ function match(segmentGroup, route, segments) {
3661
3639
  function createWildcardMatchResult(segments) {
3662
3640
  return {
3663
3641
  matched: true,
3664
- parameters: segments.length > 0 ? last(segments).parameters : {},
3642
+ parameters: segments.at(-1)?.parameters ?? {},
3665
3643
  consumedSegments: segments,
3666
3644
  remainingSegments: [],
3667
3645
  positionalParamSegments: {},
@@ -3675,13 +3653,13 @@ function split(segmentGroup, consumedSegments, slicedSegments, config) {
3675
3653
  }
3676
3654
  if (slicedSegments.length === 0 &&
3677
3655
  containsEmptyPathMatches(segmentGroup, slicedSegments, config)) {
3678
- const s = new UrlSegmentGroup(segmentGroup.segments, addEmptyPathsToChildrenIfNeeded(segmentGroup, consumedSegments, slicedSegments, config, segmentGroup.children));
3656
+ const s = new UrlSegmentGroup(segmentGroup.segments, addEmptyPathsToChildrenIfNeeded(segmentGroup, slicedSegments, config, segmentGroup.children));
3679
3657
  return { segmentGroup: s, slicedSegments };
3680
3658
  }
3681
3659
  const s = new UrlSegmentGroup(segmentGroup.segments, segmentGroup.children);
3682
3660
  return { segmentGroup: s, slicedSegments };
3683
3661
  }
3684
- function addEmptyPathsToChildrenIfNeeded(segmentGroup, consumedSegments, slicedSegments, routes, children) {
3662
+ function addEmptyPathsToChildrenIfNeeded(segmentGroup, slicedSegments, routes, children) {
3685
3663
  const res = {};
3686
3664
  for (const r of routes) {
3687
3665
  if (emptyPathMatch(segmentGroup, slicedSegments, r) && !children[getOutlet(r)]) {
@@ -3847,7 +3825,7 @@ class Recognizer {
3847
3825
  }), scan((children, outletChildren) => {
3848
3826
  children.push(...outletChildren);
3849
3827
  return children;
3850
- }), defaultIfEmpty(null), last$1(), mergeMap(children => {
3828
+ }), defaultIfEmpty(null), last(), mergeMap(children => {
3851
3829
  if (children === null)
3852
3830
  return noMatch$1(segmentGroup);
3853
3831
  // Because we may have matched two outlets to the same empty path segment, we can have
@@ -4196,10 +4174,10 @@ class TitleStrategy {
4196
4174
  getResolvedTitleForRoute(snapshot) {
4197
4175
  return snapshot.data[RouteTitleKey];
4198
4176
  }
4199
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: TitleStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4200
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: TitleStrategy, providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy) }); }
4177
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: TitleStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4178
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: TitleStrategy, providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy) }); }
4201
4179
  }
4202
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: TitleStrategy, decorators: [{
4180
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: TitleStrategy, decorators: [{
4203
4181
  type: Injectable,
4204
4182
  args: [{ providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy) }]
4205
4183
  }] });
@@ -4222,10 +4200,10 @@ class DefaultTitleStrategy extends TitleStrategy {
4222
4200
  this.title.setTitle(title);
4223
4201
  }
4224
4202
  }
4225
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: DefaultTitleStrategy, deps: [{ token: i1.Title }], target: i0.ɵɵFactoryTarget.Injectable }); }
4226
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: DefaultTitleStrategy, providedIn: 'root' }); }
4203
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DefaultTitleStrategy, deps: [{ token: i1.Title }], target: i0.ɵɵFactoryTarget.Injectable }); }
4204
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DefaultTitleStrategy, providedIn: 'root' }); }
4227
4205
  }
4228
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: DefaultTitleStrategy, decorators: [{
4206
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DefaultTitleStrategy, decorators: [{
4229
4207
  type: Injectable,
4230
4208
  args: [{ providedIn: 'root' }]
4231
4209
  }], ctorParameters: () => [{ type: i1.Title }] });
@@ -4303,10 +4281,10 @@ class RouterConfigLoader {
4303
4281
  this.childrenLoaders.set(route, loader);
4304
4282
  return loader;
4305
4283
  }
4306
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: RouterConfigLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4307
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: RouterConfigLoader, providedIn: 'root' }); }
4284
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: RouterConfigLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4285
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: RouterConfigLoader, providedIn: 'root' }); }
4308
4286
  }
4309
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: RouterConfigLoader, decorators: [{
4287
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: RouterConfigLoader, decorators: [{
4310
4288
  type: Injectable,
4311
4289
  args: [{ providedIn: 'root' }]
4312
4290
  }] });
@@ -4374,10 +4352,10 @@ function maybeUnwrapDefaultExport(input) {
4374
4352
  * @publicApi
4375
4353
  */
4376
4354
  class UrlHandlingStrategy {
4377
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: UrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4378
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: UrlHandlingStrategy, providedIn: 'root', useFactory: () => inject(DefaultUrlHandlingStrategy) }); }
4355
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: UrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4356
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: UrlHandlingStrategy, providedIn: 'root', useFactory: () => inject(DefaultUrlHandlingStrategy) }); }
4379
4357
  }
4380
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: UrlHandlingStrategy, decorators: [{
4358
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: UrlHandlingStrategy, decorators: [{
4381
4359
  type: Injectable,
4382
4360
  args: [{ providedIn: 'root', useFactory: () => inject(DefaultUrlHandlingStrategy) }]
4383
4361
  }] });
@@ -4394,10 +4372,10 @@ class DefaultUrlHandlingStrategy {
4394
4372
  merge(newUrlPart, wholeUrl) {
4395
4373
  return newUrlPart;
4396
4374
  }
4397
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: DefaultUrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4398
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: DefaultUrlHandlingStrategy, providedIn: 'root' }); }
4375
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DefaultUrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4376
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DefaultUrlHandlingStrategy, providedIn: 'root' }); }
4399
4377
  }
4400
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: DefaultUrlHandlingStrategy, decorators: [{
4378
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DefaultUrlHandlingStrategy, decorators: [{
4401
4379
  type: Injectable,
4402
4380
  args: [{ providedIn: 'root' }]
4403
4381
  }] });
@@ -4591,7 +4569,7 @@ class NavigationTransitions {
4591
4569
  const { id, extractedUrl, source, restoredState, extras } = t;
4592
4570
  const navStart = new NavigationStart(id, this.urlSerializer.serialize(extractedUrl), source, restoredState);
4593
4571
  this.events.next(navStart);
4594
- const targetSnapshot = createEmptyState(extractedUrl, this.rootComponentType).snapshot;
4572
+ const targetSnapshot = createEmptyState(this.rootComponentType).snapshot;
4595
4573
  this.currentTransition = overallTransitionState = {
4596
4574
  ...t,
4597
4575
  targetSnapshot,
@@ -4820,10 +4798,10 @@ class NavigationTransitions {
4820
4798
  return extractedBrowserUrl.toString() !== this.currentTransition?.extractedUrl.toString() &&
4821
4799
  !this.currentTransition?.extras.skipLocationChange;
4822
4800
  }
4823
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: NavigationTransitions, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4824
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: NavigationTransitions, providedIn: 'root' }); }
4801
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: NavigationTransitions, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4802
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: NavigationTransitions, providedIn: 'root' }); }
4825
4803
  }
4826
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: NavigationTransitions, decorators: [{
4804
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: NavigationTransitions, decorators: [{
4827
4805
  type: Injectable,
4828
4806
  args: [{ providedIn: 'root' }]
4829
4807
  }], ctorParameters: () => [] });
@@ -4839,10 +4817,10 @@ function isBrowserTriggeredNavigation(source) {
4839
4817
  * @publicApi
4840
4818
  */
4841
4819
  class RouteReuseStrategy {
4842
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: RouteReuseStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4843
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: RouteReuseStrategy, providedIn: 'root', useFactory: () => inject(DefaultRouteReuseStrategy) }); }
4820
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: RouteReuseStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4821
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: RouteReuseStrategy, providedIn: 'root', useFactory: () => inject(DefaultRouteReuseStrategy) }); }
4844
4822
  }
4845
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: RouteReuseStrategy, decorators: [{
4823
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: RouteReuseStrategy, decorators: [{
4846
4824
  type: Injectable,
4847
4825
  args: [{ providedIn: 'root', useFactory: () => inject(DefaultRouteReuseStrategy) }]
4848
4826
  }] });
@@ -4893,19 +4871,19 @@ class BaseRouteReuseStrategy {
4893
4871
  }
4894
4872
  }
4895
4873
  class DefaultRouteReuseStrategy extends BaseRouteReuseStrategy {
4896
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: DefaultRouteReuseStrategy, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
4897
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: DefaultRouteReuseStrategy, providedIn: 'root' }); }
4874
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DefaultRouteReuseStrategy, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
4875
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DefaultRouteReuseStrategy, providedIn: 'root' }); }
4898
4876
  }
4899
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: DefaultRouteReuseStrategy, decorators: [{
4877
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: DefaultRouteReuseStrategy, decorators: [{
4900
4878
  type: Injectable,
4901
4879
  args: [{ providedIn: 'root' }]
4902
4880
  }] });
4903
4881
 
4904
4882
  class StateManager {
4905
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: StateManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4906
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: StateManager, providedIn: 'root', useFactory: () => inject(HistoryStateManager) }); }
4883
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: StateManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4884
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: StateManager, providedIn: 'root', useFactory: () => inject(HistoryStateManager) }); }
4907
4885
  }
4908
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: StateManager, decorators: [{
4886
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: StateManager, decorators: [{
4909
4887
  type: Injectable,
4910
4888
  args: [{ providedIn: 'root', useFactory: () => inject(HistoryStateManager) }]
4911
4889
  }] });
@@ -4930,7 +4908,7 @@ class HistoryStateManager extends StateManager {
4930
4908
  */
4931
4909
  this.currentPageId = 0;
4932
4910
  this.lastSuccessfulId = -1;
4933
- this.routerState = createEmptyState(this.currentUrlTree, null);
4911
+ this.routerState = createEmptyState(null);
4934
4912
  this.stateMemento = this.createStateMemento();
4935
4913
  }
4936
4914
  getCurrentUrlTree() {
@@ -5082,10 +5060,10 @@ class HistoryStateManager extends StateManager {
5082
5060
  }
5083
5061
  return { navigationId };
5084
5062
  }
5085
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: HistoryStateManager, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
5086
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: HistoryStateManager, providedIn: 'root' }); }
5063
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: HistoryStateManager, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
5064
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: HistoryStateManager, providedIn: 'root' }); }
5087
5065
  }
5088
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: HistoryStateManager, decorators: [{
5066
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: HistoryStateManager, decorators: [{
5089
5067
  type: Injectable,
5090
5068
  args: [{ providedIn: 'root' }]
5091
5069
  }] });
@@ -5323,16 +5301,14 @@ class Router {
5323
5301
  // Don't need to use Zone.wrap any more, because zone.js
5324
5302
  // already patch onPopState, so location change callback will
5325
5303
  // run into ngZone
5326
- if (!this.nonRouterCurrentEntryChangeSubscription) {
5327
- this.nonRouterCurrentEntryChangeSubscription =
5328
- this.stateManager.registerNonRouterCurrentEntryChangeListener((url, state) => {
5329
- // The `setTimeout` was added in #12160 and is likely to support Angular/AngularJS
5330
- // hybrid apps.
5331
- setTimeout(() => {
5332
- this.navigateToSyncWithBrowser(url, 'popstate', state);
5333
- }, 0);
5334
- });
5335
- }
5304
+ this.nonRouterCurrentEntryChangeSubscription ??=
5305
+ this.stateManager.registerNonRouterCurrentEntryChangeListener((url, state) => {
5306
+ // The `setTimeout` was added in #12160 and is likely to support Angular/AngularJS
5307
+ // hybrid apps.
5308
+ setTimeout(() => {
5309
+ this.navigateToSyncWithBrowser(url, 'popstate', state);
5310
+ }, 0);
5311
+ });
5336
5312
  }
5337
5313
  /**
5338
5314
  * Schedules a router navigation to synchronize Router state with the browser state.
@@ -5608,8 +5584,7 @@ class Router {
5608
5584
  return containsTree(this.currentUrlTree, urlTree, options);
5609
5585
  }
5610
5586
  removeEmptyProps(params) {
5611
- return Object.keys(params).reduce((result, key) => {
5612
- const value = params[key];
5587
+ return Object.entries(params).reduce((result, [key, value]) => {
5613
5588
  if (value !== null && value !== undefined) {
5614
5589
  result[key] = value;
5615
5590
  }
@@ -5660,10 +5635,10 @@ class Router {
5660
5635
  return Promise.reject(e);
5661
5636
  });
5662
5637
  }
5663
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: Router, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5664
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: Router, providedIn: 'root' }); }
5638
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: Router, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5639
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: Router, providedIn: 'root' }); }
5665
5640
  }
5666
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: Router, decorators: [{
5641
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: Router, decorators: [{
5667
5642
  type: Injectable,
5668
5643
  args: [{ providedIn: 'root' }]
5669
5644
  }], ctorParameters: () => [] });
@@ -5880,6 +5855,7 @@ class RouterLink {
5880
5855
  skipLocationChange: this.skipLocationChange,
5881
5856
  replaceUrl: this.replaceUrl,
5882
5857
  state: this.state,
5858
+ info: this.info,
5883
5859
  };
5884
5860
  this.router.navigateByUrl(this.urlTree, extras);
5885
5861
  // Return `false` for `<a>` elements to prevent default action
@@ -5934,10 +5910,10 @@ class RouterLink {
5934
5910
  preserveFragment: this.preserveFragment,
5935
5911
  });
5936
5912
  }
5937
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: RouterLink, deps: [{ token: Router }, { token: ActivatedRoute }, { token: 'tabindex', attribute: true }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i3.LocationStrategy }], target: i0.ɵɵFactoryTarget.Directive }); }
5938
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.1.0-next.5", type: RouterLink, isStandalone: true, selector: "[routerLink]", inputs: { target: "target", queryParams: "queryParams", fragment: "fragment", queryParamsHandling: "queryParamsHandling", state: "state", relativeTo: "relativeTo", preserveFragment: ["preserveFragment", "preserveFragment", booleanAttribute], skipLocationChange: ["skipLocationChange", "skipLocationChange", booleanAttribute], replaceUrl: ["replaceUrl", "replaceUrl", booleanAttribute], routerLink: "routerLink" }, host: { listeners: { "click": "onClick($event.button,$event.ctrlKey,$event.shiftKey,$event.altKey,$event.metaKey)" }, properties: { "attr.target": "this.target" } }, usesOnChanges: true, ngImport: i0 }); }
5913
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: RouterLink, deps: [{ token: Router }, { token: ActivatedRoute }, { token: 'tabindex', attribute: true }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i3.LocationStrategy }], target: i0.ɵɵFactoryTarget.Directive }); }
5914
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.1.0", type: RouterLink, isStandalone: true, selector: "[routerLink]", inputs: { target: "target", queryParams: "queryParams", fragment: "fragment", queryParamsHandling: "queryParamsHandling", state: "state", info: "info", relativeTo: "relativeTo", preserveFragment: ["preserveFragment", "preserveFragment", booleanAttribute], skipLocationChange: ["skipLocationChange", "skipLocationChange", booleanAttribute], replaceUrl: ["replaceUrl", "replaceUrl", booleanAttribute], routerLink: "routerLink" }, host: { listeners: { "click": "onClick($event.button,$event.ctrlKey,$event.shiftKey,$event.altKey,$event.metaKey)" }, properties: { "attr.target": "this.target" } }, usesOnChanges: true, ngImport: i0 }); }
5939
5915
  }
5940
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: RouterLink, decorators: [{
5916
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: RouterLink, decorators: [{
5941
5917
  type: Directive,
5942
5918
  args: [{
5943
5919
  selector: '[routerLink]',
@@ -5959,6 +5935,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.5",
5959
5935
  type: Input
5960
5936
  }], state: [{
5961
5937
  type: Input
5938
+ }], info: [{
5939
+ type: Input
5962
5940
  }], relativeTo: [{
5963
5941
  type: Input
5964
5942
  }], preserveFragment: [{
@@ -6160,10 +6138,10 @@ class RouterLinkActive {
6160
6138
  const isActiveCheckFn = this.isLinkActive(this.router);
6161
6139
  return this.link && isActiveCheckFn(this.link) || this.links.some(isActiveCheckFn);
6162
6140
  }
6163
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: RouterLinkActive, deps: [{ token: Router }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: RouterLink, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
6164
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.0-next.5", type: RouterLinkActive, isStandalone: true, selector: "[routerLinkActive]", inputs: { routerLinkActiveOptions: "routerLinkActiveOptions", ariaCurrentWhenActive: "ariaCurrentWhenActive", routerLinkActive: "routerLinkActive" }, outputs: { isActiveChange: "isActiveChange" }, queries: [{ propertyName: "links", predicate: RouterLink, descendants: true }], exportAs: ["routerLinkActive"], usesOnChanges: true, ngImport: i0 }); }
6141
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: RouterLinkActive, deps: [{ token: Router }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: RouterLink, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
6142
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.0", type: RouterLinkActive, isStandalone: true, selector: "[routerLinkActive]", inputs: { routerLinkActiveOptions: "routerLinkActiveOptions", ariaCurrentWhenActive: "ariaCurrentWhenActive", routerLinkActive: "routerLinkActive" }, outputs: { isActiveChange: "isActiveChange" }, queries: [{ propertyName: "links", predicate: RouterLink, descendants: true }], exportAs: ["routerLinkActive"], usesOnChanges: true, ngImport: i0 }); }
6165
6143
  }
6166
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: RouterLinkActive, decorators: [{
6144
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: RouterLinkActive, decorators: [{
6167
6145
  type: Directive,
6168
6146
  args: [{
6169
6147
  selector: '[routerLinkActive]',
@@ -6215,10 +6193,10 @@ class PreloadAllModules {
6215
6193
  preload(route, fn) {
6216
6194
  return fn().pipe(catchError(() => of(null)));
6217
6195
  }
6218
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: PreloadAllModules, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
6219
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: PreloadAllModules, providedIn: 'root' }); }
6196
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: PreloadAllModules, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
6197
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: PreloadAllModules, providedIn: 'root' }); }
6220
6198
  }
6221
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: PreloadAllModules, decorators: [{
6199
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: PreloadAllModules, decorators: [{
6222
6200
  type: Injectable,
6223
6201
  args: [{ providedIn: 'root' }]
6224
6202
  }] });
@@ -6235,10 +6213,10 @@ class NoPreloading {
6235
6213
  preload(route, fn) {
6236
6214
  return of(null);
6237
6215
  }
6238
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: NoPreloading, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
6239
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: NoPreloading, providedIn: 'root' }); }
6216
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: NoPreloading, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
6217
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: NoPreloading, providedIn: 'root' }); }
6240
6218
  }
6241
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: NoPreloading, decorators: [{
6219
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: NoPreloading, decorators: [{
6242
6220
  type: Injectable,
6243
6221
  args: [{ providedIn: 'root' }]
6244
6222
  }] });
@@ -6331,10 +6309,10 @@ class RouterPreloader {
6331
6309
  }
6332
6310
  });
6333
6311
  }
6334
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: RouterPreloader, deps: [{ token: Router }, { token: i0.Compiler }, { token: i0.EnvironmentInjector }, { token: PreloadingStrategy }, { token: RouterConfigLoader }], target: i0.ɵɵFactoryTarget.Injectable }); }
6335
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: RouterPreloader, providedIn: 'root' }); }
6312
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: RouterPreloader, deps: [{ token: Router }, { token: i0.Compiler }, { token: i0.EnvironmentInjector }, { token: PreloadingStrategy }, { token: RouterConfigLoader }], target: i0.ɵɵFactoryTarget.Injectable }); }
6313
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: RouterPreloader, providedIn: 'root' }); }
6336
6314
  }
6337
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: RouterPreloader, decorators: [{
6315
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: RouterPreloader, decorators: [{
6338
6316
  type: Injectable,
6339
6317
  args: [{ providedIn: 'root' }]
6340
6318
  }], ctorParameters: () => [{ type: Router }, { type: i0.Compiler }, { type: i0.EnvironmentInjector }, { type: PreloadingStrategy }, { type: RouterConfigLoader }] });
@@ -6353,8 +6331,8 @@ class RouterScroller {
6353
6331
  this.restoredId = 0;
6354
6332
  this.store = {};
6355
6333
  // Default both options to 'disabled'
6356
- options.scrollPositionRestoration = options.scrollPositionRestoration || 'disabled';
6357
- options.anchorScrolling = options.anchorScrolling || 'disabled';
6334
+ options.scrollPositionRestoration ||= 'disabled';
6335
+ options.anchorScrolling ||= 'disabled';
6358
6336
  }
6359
6337
  init() {
6360
6338
  // we want to disable the automatic scrolling because having two places
@@ -6427,10 +6405,10 @@ class RouterScroller {
6427
6405
  this.routerEventsSubscription?.unsubscribe();
6428
6406
  this.scrollEventsSubscription?.unsubscribe();
6429
6407
  }
6430
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: RouterScroller, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable }); }
6431
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: RouterScroller }); }
6408
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: RouterScroller, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable }); }
6409
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: RouterScroller }); }
6432
6410
  }
6433
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: RouterScroller, decorators: [{
6411
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: RouterScroller, decorators: [{
6434
6412
  type: Injectable
6435
6413
  }], ctorParameters: () => [{ type: UrlSerializer }, { type: NavigationTransitions }, { type: i3.ViewportScroller }, { type: i0.NgZone }, { type: undefined }] });
6436
6414
 
@@ -7071,11 +7049,11 @@ class RouterModule {
7071
7049
  providers: [{ provide: ROUTES, multi: true, useValue: routes }],
7072
7050
  };
7073
7051
  }
7074
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: RouterModule, deps: [{ token: ROUTER_FORROOT_GUARD, optional: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
7075
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.0-next.5", ngImport: i0, type: RouterModule, imports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent], exports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent] }); }
7076
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: RouterModule }); }
7052
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: RouterModule, deps: [{ token: ROUTER_FORROOT_GUARD, optional: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
7053
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.0", ngImport: i0, type: RouterModule, imports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent], exports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent] }); }
7054
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: RouterModule }); }
7077
7055
  }
7078
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0-next.5", ngImport: i0, type: RouterModule, decorators: [{
7056
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: RouterModule, decorators: [{
7079
7057
  type: NgModule,
7080
7058
  args: [{
7081
7059
  imports: ROUTER_DIRECTIVES,
@@ -7220,7 +7198,7 @@ function mapToResolve(provider) {
7220
7198
  /**
7221
7199
  * @publicApi
7222
7200
  */
7223
- const VERSION = new Version('17.1.0-next.5');
7201
+ const VERSION = new Version('17.1.0');
7224
7202
 
7225
7203
  /**
7226
7204
  * @module