@angular/router 15.0.0-next.3 → 15.0.0-next.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +1,11 @@
1
1
  /**
2
- * @license Angular v15.0.0-next.3
2
+ * @license Angular v15.0.0-next.5
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, ɵRuntimeError, Injectable, EventEmitter, Directive, Attribute, Output, Component, createEnvironmentInjector, ɵisStandalone, ComponentFactoryResolver, ɵisInjectable, inject, InjectionToken, InjectFlags, NgModuleFactory, Injector, Compiler, NgModuleRef, ɵConsole, NgZone, ɵcoerceToBoolean, Input, HostListener, HostBinding, Optional, ContentChildren, APP_BOOTSTRAP_LISTENER, ApplicationRef, APP_INITIALIZER, ENVIRONMENT_INITIALIZER, NgProbeToken, SkipSelf, NgModule, Inject, Version } from '@angular/core';
8
+ import { ɵisObservable, ɵisPromise, ɵRuntimeError, Injectable, EventEmitter, inject, ViewContainerRef, ChangeDetectorRef, EnvironmentInjector, Directive, Input, Output, Component, createEnvironmentInjector, ɵisStandalone, ComponentFactoryResolver, ɵisInjectable, InjectionToken, InjectFlags, NgModuleFactory, Injector, Compiler, NgModuleRef, ɵConsole, NgZone, ɵcoerceToBoolean, ɵɵsanitizeUrlOrResourceUrl, Attribute, HostBinding, HostListener, Optional, ContentChildren, APP_BOOTSTRAP_LISTENER, ApplicationRef, APP_INITIALIZER, ENVIRONMENT_INITIALIZER, NgProbeToken, SkipSelf, NgModule, Inject, Version } from '@angular/core';
9
9
  import { from, of, BehaviorSubject, EmptyError, combineLatest, concat, defer, pipe, throwError, Observable, EMPTY, ConnectableObservable, Subject } from 'rxjs';
10
10
  import * as i3 from '@angular/common';
11
11
  import { Location, ViewportScroller, LOCATION_INITIALIZED, LocationStrategy, HashLocationStrategy, PathLocationStrategy } from '@angular/common';
@@ -461,9 +461,9 @@ function mapChildrenIntoArray(segment, fn) {
461
461
  */
462
462
  class UrlSerializer {
463
463
  }
464
- UrlSerializer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: UrlSerializer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
465
- UrlSerializer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: UrlSerializer, providedIn: 'root', useFactory: () => new DefaultUrlSerializer() });
466
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: UrlSerializer, decorators: [{
464
+ UrlSerializer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: UrlSerializer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
465
+ UrlSerializer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: UrlSerializer, providedIn: 'root', useFactory: () => new DefaultUrlSerializer() });
466
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: UrlSerializer, decorators: [{
467
467
  type: Injectable,
468
468
  args: [{ providedIn: 'root', useFactory: () => new DefaultUrlSerializer() }]
469
469
  }] });
@@ -2091,7 +2091,6 @@ class ActivatedRouteSnapshot {
2091
2091
  outlet,
2092
2092
  /** The component of the route */
2093
2093
  component, routeConfig, urlSegment, lastPathIndex, resolve, correctedLastPathIndex) {
2094
- var _a;
2095
2094
  this.url = url;
2096
2095
  this.params = params;
2097
2096
  this.queryParams = queryParams;
@@ -2099,14 +2098,19 @@ class ActivatedRouteSnapshot {
2099
2098
  this.data = data;
2100
2099
  this.outlet = outlet;
2101
2100
  this.component = component;
2102
- /** The resolved route title */
2103
- this.title = (_a = this.data) === null || _a === void 0 ? void 0 : _a[RouteTitleKey];
2104
2101
  this.routeConfig = routeConfig;
2105
2102
  this._urlSegment = urlSegment;
2106
2103
  this._lastPathIndex = lastPathIndex;
2107
2104
  this._correctedLastPathIndex = correctedLastPathIndex !== null && correctedLastPathIndex !== void 0 ? correctedLastPathIndex : lastPathIndex;
2108
2105
  this._resolve = resolve;
2109
2106
  }
2107
+ /** The resolved route title */
2108
+ get title() {
2109
+ var _a;
2110
+ // Note: This _must_ be a getter because the data is mutated in the resolvers. Title will not be
2111
+ // available at the time of class instantiation.
2112
+ return (_a = this.data) === null || _a === void 0 ? void 0 : _a[RouteTitleKey];
2113
+ }
2110
2114
  /** The root of the router state */
2111
2115
  get root() {
2112
2116
  return this._routerState.root;
@@ -2390,9 +2394,9 @@ class ChildrenOutletContexts {
2390
2394
  return this.contexts.get(childName) || null;
2391
2395
  }
2392
2396
  }
2393
- ChildrenOutletContexts.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: ChildrenOutletContexts, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2394
- ChildrenOutletContexts.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: ChildrenOutletContexts, providedIn: 'root' });
2395
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: ChildrenOutletContexts, decorators: [{
2397
+ ChildrenOutletContexts.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: ChildrenOutletContexts, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2398
+ ChildrenOutletContexts.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: ChildrenOutletContexts, providedIn: 'root' });
2399
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: ChildrenOutletContexts, decorators: [{
2396
2400
  type: Injectable,
2397
2401
  args: [{ providedIn: 'root' }]
2398
2402
  }] });
@@ -2457,13 +2461,15 @@ const NG_DEV_MODE$7 = typeof ngDevMode === 'undefined' || ngDevMode;
2457
2461
  * @publicApi
2458
2462
  */
2459
2463
  class RouterOutlet {
2460
- constructor(parentContexts, location, name, changeDetector, environmentInjector) {
2461
- this.parentContexts = parentContexts;
2462
- this.location = location;
2463
- this.changeDetector = changeDetector;
2464
- this.environmentInjector = environmentInjector;
2464
+ constructor() {
2465
2465
  this.activated = null;
2466
2466
  this._activatedRoute = null;
2467
+ /**
2468
+ * The name of the outlet
2469
+ *
2470
+ * @see [named outlets](guide/router-tutorial-toh#displaying-multiple-routes-in-named-outlets)
2471
+ */
2472
+ this.name = PRIMARY_OUTLET;
2467
2473
  this.activateEvents = new EventEmitter();
2468
2474
  this.deactivateEvents = new EventEmitter();
2469
2475
  /**
@@ -2476,32 +2482,60 @@ class RouterOutlet {
2476
2482
  * subtree.
2477
2483
  */
2478
2484
  this.detachEvents = new EventEmitter();
2479
- this.name = name || PRIMARY_OUTLET;
2480
- parentContexts.onChildOutletCreated(this.name, this);
2485
+ this.parentContexts = inject(ChildrenOutletContexts);
2486
+ this.location = inject(ViewContainerRef);
2487
+ this.changeDetector = inject(ChangeDetectorRef);
2488
+ this.environmentInjector = inject(EnvironmentInjector);
2489
+ }
2490
+ /** @nodoc */
2491
+ ngOnChanges(changes) {
2492
+ if (changes['name']) {
2493
+ const { firstChange, previousValue } = changes['name'];
2494
+ if (firstChange) {
2495
+ // The first change is handled by ngOnInit. Because ngOnChanges doesn't get called when no
2496
+ // input is set at all, we need to centrally handle the first change there.
2497
+ return;
2498
+ }
2499
+ // unregister with the old name
2500
+ if (this.isTrackedInParentContexts(previousValue)) {
2501
+ this.deactivate();
2502
+ this.parentContexts.onChildOutletDestroyed(previousValue);
2503
+ }
2504
+ // register the new name
2505
+ this.initializeOutletWithName();
2506
+ }
2481
2507
  }
2482
2508
  /** @nodoc */
2483
2509
  ngOnDestroy() {
2484
- var _a;
2485
2510
  // Ensure that the registered outlet is this one before removing it on the context.
2486
- if (((_a = this.parentContexts.getContext(this.name)) === null || _a === void 0 ? void 0 : _a.outlet) === this) {
2511
+ if (this.isTrackedInParentContexts(this.name)) {
2487
2512
  this.parentContexts.onChildOutletDestroyed(this.name);
2488
2513
  }
2489
2514
  }
2515
+ isTrackedInParentContexts(outletName) {
2516
+ var _a;
2517
+ return ((_a = this.parentContexts.getContext(outletName)) === null || _a === void 0 ? void 0 : _a.outlet) === this;
2518
+ }
2490
2519
  /** @nodoc */
2491
2520
  ngOnInit() {
2492
- if (!this.activated) {
2493
- // If the outlet was not instantiated at the time the route got activated we need to populate
2494
- // the outlet when it is initialized (ie inside a NgIf)
2495
- const context = this.parentContexts.getContext(this.name);
2496
- if (context && context.route) {
2497
- if (context.attachRef) {
2498
- // `attachRef` is populated when there is an existing component to mount
2499
- this.attach(context.attachRef, context.route);
2500
- }
2501
- else {
2502
- // otherwise the component defined in the configuration is created
2503
- this.activateWith(context.route, context.injector);
2504
- }
2521
+ this.initializeOutletWithName();
2522
+ }
2523
+ initializeOutletWithName() {
2524
+ this.parentContexts.onChildOutletCreated(this.name, this);
2525
+ if (this.activated) {
2526
+ return;
2527
+ }
2528
+ // If the outlet was not instantiated at the time the route got activated we need to populate
2529
+ // the outlet when it is initialized (ie inside a NgIf)
2530
+ const context = this.parentContexts.getContext(this.name);
2531
+ if (context === null || context === void 0 ? void 0 : context.route) {
2532
+ if (context.attachRef) {
2533
+ // `attachRef` is populated when there is an existing component to mount
2534
+ this.attach(context.attachRef, context.route);
2535
+ }
2536
+ else {
2537
+ // otherwise the component defined in the configuration is created
2538
+ this.activateWith(context.route, context.injector);
2505
2539
  }
2506
2540
  }
2507
2541
  }
@@ -2583,21 +2617,18 @@ class RouterOutlet {
2583
2617
  this.activateEvents.emit(this.activated.instance);
2584
2618
  }
2585
2619
  }
2586
- RouterOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: RouterOutlet, deps: [{ token: ChildrenOutletContexts }, { token: i0.ViewContainerRef }, { token: 'name', attribute: true }, { token: i0.ChangeDetectorRef }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Directive });
2587
- RouterOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0-next.3", type: RouterOutlet, isStandalone: true, selector: "router-outlet", outputs: { activateEvents: "activate", deactivateEvents: "deactivate", attachEvents: "attach", detachEvents: "detach" }, exportAs: ["outlet"], ngImport: i0 });
2588
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: RouterOutlet, decorators: [{
2620
+ RouterOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: RouterOutlet, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2621
+ RouterOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.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 });
2622
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: RouterOutlet, decorators: [{
2589
2623
  type: Directive,
2590
2624
  args: [{
2591
2625
  selector: 'router-outlet',
2592
2626
  exportAs: 'outlet',
2593
2627
  standalone: true,
2594
2628
  }]
2595
- }], ctorParameters: function () {
2596
- return [{ type: ChildrenOutletContexts }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
2597
- type: Attribute,
2598
- args: ['name']
2599
- }] }, { type: i0.ChangeDetectorRef }, { type: i0.EnvironmentInjector }];
2600
- }, propDecorators: { activateEvents: [{
2629
+ }], propDecorators: { name: [{
2630
+ type: Input
2631
+ }], activateEvents: [{
2601
2632
  type: Output,
2602
2633
  args: ['activate']
2603
2634
  }], deactivateEvents: [{
@@ -2648,9 +2679,9 @@ function isComponentFactoryResolver(item) {
2648
2679
  */
2649
2680
  class ɵEmptyOutletComponent {
2650
2681
  }
2651
- ɵEmptyOutletComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: ɵEmptyOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2652
- ɵEmptyOutletComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0-next.3", type: ɵEmptyOutletComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `<router-outlet></router-outlet>`, isInline: true, dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] });
2653
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: ɵEmptyOutletComponent, decorators: [{
2682
+ ɵEmptyOutletComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: ɵEmptyOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2683
+ ɵEmptyOutletComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.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"] }] });
2684
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: ɵEmptyOutletComponent, decorators: [{
2654
2685
  type: Component,
2655
2686
  args: [{
2656
2687
  template: `<router-outlet></router-outlet>`,
@@ -4352,9 +4383,9 @@ class TitleStrategy {
4352
4383
  return snapshot.data[RouteTitleKey];
4353
4384
  }
4354
4385
  }
4355
- TitleStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: TitleStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4356
- TitleStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: TitleStrategy, providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy) });
4357
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: TitleStrategy, decorators: [{
4386
+ TitleStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: TitleStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4387
+ TitleStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: TitleStrategy, providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy) });
4388
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: TitleStrategy, decorators: [{
4358
4389
  type: Injectable,
4359
4390
  args: [{ providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy) }]
4360
4391
  }] });
@@ -4378,9 +4409,9 @@ class DefaultTitleStrategy extends TitleStrategy {
4378
4409
  }
4379
4410
  }
4380
4411
  }
4381
- DefaultTitleStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: DefaultTitleStrategy, deps: [{ token: i1.Title }], target: i0.ɵɵFactoryTarget.Injectable });
4382
- DefaultTitleStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: DefaultTitleStrategy, providedIn: 'root' });
4383
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: DefaultTitleStrategy, decorators: [{
4412
+ DefaultTitleStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: DefaultTitleStrategy, deps: [{ token: i1.Title }], target: i0.ɵɵFactoryTarget.Injectable });
4413
+ DefaultTitleStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: DefaultTitleStrategy, providedIn: 'root' });
4414
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: DefaultTitleStrategy, decorators: [{
4384
4415
  type: Injectable,
4385
4416
  args: [{ providedIn: 'root' }]
4386
4417
  }], ctorParameters: function () { return [{ type: i1.Title }]; } });
@@ -4480,6 +4511,17 @@ const ROUTER_CONFIGURATION = new InjectionToken(NG_DEV_MODE$4 ? 'router config'
4480
4511
  factory: () => ({}),
4481
4512
  });
4482
4513
 
4514
+ /**
4515
+ * @license
4516
+ * Copyright Google LLC All Rights Reserved.
4517
+ *
4518
+ * Use of this source code is governed by an MIT-style license that can be
4519
+ * found in the LICENSE file at https://angular.io/license
4520
+ */
4521
+ function deprecatedLoadChildrenString(injector, loadChildren) {
4522
+ return null;
4523
+ }
4524
+
4483
4525
  /**
4484
4526
  * @license
4485
4527
  * Copyright Google LLC All Rights Reserved.
@@ -4517,7 +4559,7 @@ class RouterConfigLoader {
4517
4559
  this.onLoadStartListener(route);
4518
4560
  }
4519
4561
  const loadRunner = wrapIntoObservable(route.loadComponent())
4520
- .pipe(tap(component => {
4562
+ .pipe(map(maybeUnwrapDefaultExport), tap(component => {
4521
4563
  var _a;
4522
4564
  if (this.onLoadEndListener) {
4523
4565
  this.onLoadEndListener(route);
@@ -4577,7 +4619,12 @@ class RouterConfigLoader {
4577
4619
  return loader;
4578
4620
  }
4579
4621
  loadModuleFactoryOrRoutes(loadChildren) {
4580
- return wrapIntoObservable(loadChildren()).pipe(mergeMap((t) => {
4622
+ const deprecatedResult = deprecatedLoadChildrenString(this.injector, loadChildren);
4623
+ if (deprecatedResult) {
4624
+ return deprecatedResult;
4625
+ }
4626
+ return wrapIntoObservable(loadChildren())
4627
+ .pipe(map(maybeUnwrapDefaultExport), mergeMap((t) => {
4581
4628
  if (t instanceof NgModuleFactory || Array.isArray(t)) {
4582
4629
  return of(t);
4583
4630
  }
@@ -4587,12 +4634,23 @@ class RouterConfigLoader {
4587
4634
  }));
4588
4635
  }
4589
4636
  }
4590
- RouterConfigLoader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: RouterConfigLoader, deps: [{ token: i0.Injector }, { token: i0.Compiler }], target: i0.ɵɵFactoryTarget.Injectable });
4591
- RouterConfigLoader.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: RouterConfigLoader, providedIn: 'root' });
4592
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: RouterConfigLoader, decorators: [{
4637
+ RouterConfigLoader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: RouterConfigLoader, deps: [{ token: i0.Injector }, { token: i0.Compiler }], target: i0.ɵɵFactoryTarget.Injectable });
4638
+ RouterConfigLoader.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: RouterConfigLoader, providedIn: 'root' });
4639
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: RouterConfigLoader, decorators: [{
4593
4640
  type: Injectable,
4594
4641
  args: [{ providedIn: 'root' }]
4595
4642
  }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.Compiler }]; } });
4643
+ function isWrappedDefaultExport(value) {
4644
+ // We use `in` here with a string key `'default'`, because we expect `DefaultExport` objects to be
4645
+ // dynamically imported ES modules with a spec-mandated `default` key. Thus we don't expect that
4646
+ // `default` will be a renamed property.
4647
+ return value && typeof value === 'object' && 'default' in value;
4648
+ }
4649
+ function maybeUnwrapDefaultExport(input) {
4650
+ // As per `isWrappedDefaultExport`, the `default` key here is generated by the browser and not
4651
+ // subject to property renaming, so we reference it with bracket access.
4652
+ return isWrappedDefaultExport(input) ? input['default'] : input;
4653
+ }
4596
4654
 
4597
4655
  /**
4598
4656
  * @license
@@ -5614,9 +5672,9 @@ class Router {
5614
5672
  return { navigationId };
5615
5673
  }
5616
5674
  }
5617
- Router.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: Router, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable });
5618
- Router.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: Router, providedIn: 'root', useFactory: setupRouter });
5619
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: Router, decorators: [{
5675
+ Router.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: Router, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable });
5676
+ Router.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: Router, providedIn: 'root', useFactory: setupRouter });
5677
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: Router, decorators: [{
5620
5678
  type: Injectable,
5621
5679
  args: [{
5622
5680
  providedIn: 'root',
@@ -5733,19 +5791,36 @@ function isBrowserTriggeredNavigation(source) {
5733
5791
  * @publicApi
5734
5792
  */
5735
5793
  class RouterLink {
5736
- constructor(router, route, tabIndexAttribute, renderer, el) {
5794
+ constructor(router, route, tabIndexAttribute, renderer, el, locationStrategy) {
5737
5795
  this.router = router;
5738
5796
  this.route = route;
5739
5797
  this.tabIndexAttribute = tabIndexAttribute;
5740
5798
  this.renderer = renderer;
5741
5799
  this.el = el;
5800
+ this.locationStrategy = locationStrategy;
5742
5801
  this._preserveFragment = false;
5743
5802
  this._skipLocationChange = false;
5744
5803
  this._replaceUrl = false;
5804
+ /**
5805
+ * Represents an `href` attribute value applied to a host element,
5806
+ * when a host element is `<a>`. For other tags, the value is `null`.
5807
+ */
5808
+ this.href = null;
5745
5809
  this.commands = null;
5746
5810
  /** @internal */
5747
5811
  this.onChanges = new Subject();
5748
- this.setTabIndexIfNotOnNativeEl('0');
5812
+ const tagName = el.nativeElement.tagName;
5813
+ this.isAnchorElement = tagName === 'A' || tagName === 'AREA';
5814
+ if (this.isAnchorElement) {
5815
+ this.subscription = router.events.subscribe((s) => {
5816
+ if (s instanceof NavigationEnd) {
5817
+ this.updateHref();
5818
+ }
5819
+ });
5820
+ }
5821
+ else {
5822
+ this.setTabIndexIfNotOnNativeEl('0');
5823
+ }
5749
5824
  }
5750
5825
  /**
5751
5826
  * Passed to {@link Router#createUrlTree Router#createUrlTree} as part of the
@@ -5788,20 +5863,16 @@ class RouterLink {
5788
5863
  * instantiation.
5789
5864
  */
5790
5865
  setTabIndexIfNotOnNativeEl(newTabIndex) {
5791
- if (this.tabIndexAttribute != null /* both `null` and `undefined` */) {
5866
+ if (this.tabIndexAttribute != null /* both `null` and `undefined` */ || this.isAnchorElement) {
5792
5867
  return;
5793
5868
  }
5794
- const renderer = this.renderer;
5795
- const nativeElement = this.el.nativeElement;
5796
- if (newTabIndex !== null) {
5797
- renderer.setAttribute(nativeElement, 'tabindex', newTabIndex);
5798
- }
5799
- else {
5800
- renderer.removeAttribute(nativeElement, 'tabindex');
5801
- }
5869
+ this.applyAttributeValue('tabindex', newTabIndex);
5802
5870
  }
5803
5871
  /** @nodoc */
5804
5872
  ngOnChanges(changes) {
5873
+ if (this.isAnchorElement) {
5874
+ this.updateHref();
5875
+ }
5805
5876
  // This is subscribed to by `RouterLinkActive` so that it knows to update when there are changes
5806
5877
  // to the RouterLinks it's tracking.
5807
5878
  this.onChanges.next(this);
@@ -5824,17 +5895,63 @@ class RouterLink {
5824
5895
  }
5825
5896
  }
5826
5897
  /** @nodoc */
5827
- onClick() {
5898
+ onClick(button, ctrlKey, shiftKey, altKey, metaKey) {
5828
5899
  if (this.urlTree === null) {
5829
5900
  return true;
5830
5901
  }
5902
+ if (this.isAnchorElement) {
5903
+ if (button !== 0 || ctrlKey || shiftKey || altKey || metaKey) {
5904
+ return true;
5905
+ }
5906
+ if (typeof this.target === 'string' && this.target != '_self') {
5907
+ return true;
5908
+ }
5909
+ }
5831
5910
  const extras = {
5832
5911
  skipLocationChange: this.skipLocationChange,
5833
5912
  replaceUrl: this.replaceUrl,
5834
5913
  state: this.state,
5835
5914
  };
5836
5915
  this.router.navigateByUrl(this.urlTree, extras);
5837
- return true;
5916
+ // Return `false` for `<a>` elements to prevent default action
5917
+ // and cancel the native behavior, since the navigation is handled
5918
+ // by the Router.
5919
+ return !this.isAnchorElement;
5920
+ }
5921
+ /** @nodoc */
5922
+ ngOnDestroy() {
5923
+ var _a;
5924
+ (_a = this.subscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
5925
+ }
5926
+ updateHref() {
5927
+ var _a;
5928
+ this.href = this.urlTree !== null && this.locationStrategy ?
5929
+ (_a = this.locationStrategy) === null || _a === void 0 ? void 0 : _a.prepareExternalUrl(this.router.serializeUrl(this.urlTree)) :
5930
+ null;
5931
+ const sanitizedValue = this.href === null ?
5932
+ null :
5933
+ // This class represents a directive that can be added to both `<a>` elements,
5934
+ // as well as other elements. As a result, we can't define security context at
5935
+ // compile time. So the security context is deferred to runtime.
5936
+ // The `ɵɵsanitizeUrlOrResourceUrl` selects the necessary sanitizer function
5937
+ // based on the tag and property names. The logic mimics the one from
5938
+ // `packages/compiler/src/schema/dom_security_schema.ts`, which is used at compile time.
5939
+ //
5940
+ // Note: we should investigate whether we can switch to using `@HostBinding('attr.href')`
5941
+ // instead of applying a value via a renderer, after a final merge of the
5942
+ // `RouterLinkWithHref` directive.
5943
+ ɵɵsanitizeUrlOrResourceUrl(this.href, this.el.nativeElement.tagName.toLowerCase(), 'href');
5944
+ this.applyAttributeValue('href', sanitizedValue);
5945
+ }
5946
+ applyAttributeValue(attrName, attrValue) {
5947
+ const renderer = this.renderer;
5948
+ const nativeElement = this.el.nativeElement;
5949
+ if (attrValue !== null) {
5950
+ renderer.setAttribute(nativeElement, attrName, attrValue);
5951
+ }
5952
+ else {
5953
+ renderer.removeAttribute(nativeElement, attrName);
5954
+ }
5838
5955
  }
5839
5956
  get urlTree() {
5840
5957
  if (this.commands === null) {
@@ -5851,9 +5968,9 @@ class RouterLink {
5851
5968
  });
5852
5969
  }
5853
5970
  }
5854
- RouterLink.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: RouterLink, deps: [{ token: Router }, { token: ActivatedRoute }, { token: 'tabindex', attribute: true }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
5855
- RouterLink.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0-next.3", type: RouterLink, isStandalone: true, selector: ":not(a):not(area)[routerLink]", inputs: { queryParams: "queryParams", fragment: "fragment", queryParamsHandling: "queryParamsHandling", state: "state", relativeTo: "relativeTo", preserveFragment: "preserveFragment", skipLocationChange: "skipLocationChange", replaceUrl: "replaceUrl", routerLink: "routerLink" }, host: { listeners: { "click": "onClick()" } }, usesOnChanges: true, ngImport: i0 });
5856
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: RouterLink, decorators: [{
5971
+ RouterLink.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.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 });
5972
+ RouterLink.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0-next.5", type: RouterLink, isStandalone: true, selector: ":not(a):not(area)[routerLink]", inputs: { target: "target", queryParams: "queryParams", fragment: "fragment", queryParamsHandling: "queryParamsHandling", state: "state", relativeTo: "relativeTo", preserveFragment: "preserveFragment", skipLocationChange: "skipLocationChange", replaceUrl: "replaceUrl", 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 });
5973
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: RouterLink, decorators: [{
5857
5974
  type: Directive,
5858
5975
  args: [{
5859
5976
  selector: ':not(a):not(area)[routerLink]',
@@ -5863,8 +5980,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.3",
5863
5980
  return [{ type: Router }, { type: ActivatedRoute }, { type: undefined, decorators: [{
5864
5981
  type: Attribute,
5865
5982
  args: ['tabindex']
5866
- }] }, { type: i0.Renderer2 }, { type: i0.ElementRef }];
5867
- }, propDecorators: { queryParams: [{
5983
+ }] }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i3.LocationStrategy }];
5984
+ }, propDecorators: { target: [{
5985
+ type: HostBinding,
5986
+ args: ['attr.target']
5987
+ }, {
5988
+ type: Input
5989
+ }], queryParams: [{
5868
5990
  type: Input
5869
5991
  }], fragment: [{
5870
5992
  type: Input
@@ -5884,7 +6006,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.3",
5884
6006
  type: Input
5885
6007
  }], onClick: [{
5886
6008
  type: HostListener,
5887
- args: ['click']
6009
+ args: ['click',
6010
+ ['$event.button', '$event.ctrlKey', '$event.shiftKey', '$event.altKey', '$event.metaKey']]
5888
6011
  }] } });
5889
6012
  /**
5890
6013
  * @description
@@ -5897,159 +6020,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.3",
5897
6020
  *
5898
6021
  * @publicApi
5899
6022
  */
5900
- class RouterLinkWithHref {
5901
- constructor(router, route, locationStrategy) {
5902
- this.router = router;
5903
- this.route = route;
5904
- this.locationStrategy = locationStrategy;
5905
- this._preserveFragment = false;
5906
- this._skipLocationChange = false;
5907
- this._replaceUrl = false;
5908
- this.commands = null;
5909
- // the url displayed on the anchor element.
5910
- // @HostBinding('attr.href') is used rather than @HostBinding() because it removes the
5911
- // href attribute when it becomes `null`.
5912
- this.href = null;
5913
- /** @internal */
5914
- this.onChanges = new Subject();
5915
- this.subscription = router.events.subscribe((s) => {
5916
- if (s instanceof NavigationEnd) {
5917
- this.updateTargetUrlAndHref();
5918
- }
5919
- });
5920
- }
5921
- /**
5922
- * Passed to {@link Router#createUrlTree Router#createUrlTree} as part of the
5923
- * `UrlCreationOptions`.
5924
- * @see {@link UrlCreationOptions#preserveFragment UrlCreationOptions#preserveFragment}
5925
- * @see {@link Router#createUrlTree Router#createUrlTree}
5926
- */
5927
- set preserveFragment(preserveFragment) {
5928
- this._preserveFragment = ɵcoerceToBoolean(preserveFragment);
5929
- }
5930
- get preserveFragment() {
5931
- return this._preserveFragment;
5932
- }
5933
- /**
5934
- * Passed to {@link Router#navigateByUrl Router#navigateByUrl} as part of the
5935
- * `NavigationBehaviorOptions`.
5936
- * @see {@link NavigationBehaviorOptions#skipLocationChange NavigationBehaviorOptions#skipLocationChange}
5937
- * @see {@link Router#navigateByUrl Router#navigateByUrl}
5938
- */
5939
- set skipLocationChange(skipLocationChange) {
5940
- this._skipLocationChange = ɵcoerceToBoolean(skipLocationChange);
5941
- }
5942
- get skipLocationChange() {
5943
- return this._skipLocationChange;
5944
- }
5945
- /**
5946
- * Passed to {@link Router#navigateByUrl Router#navigateByUrl} as part of the
5947
- * `NavigationBehaviorOptions`.
5948
- * @see {@link NavigationBehaviorOptions#replaceUrl NavigationBehaviorOptions#replaceUrl}
5949
- * @see {@link Router#navigateByUrl Router#navigateByUrl}
5950
- */
5951
- set replaceUrl(replaceUrl) {
5952
- this._replaceUrl = ɵcoerceToBoolean(replaceUrl);
5953
- }
5954
- get replaceUrl() {
5955
- return this._replaceUrl;
5956
- }
5957
- /**
5958
- * Commands to pass to {@link Router#createUrlTree Router#createUrlTree}.
5959
- * - **array**: commands to pass to {@link Router#createUrlTree Router#createUrlTree}.
5960
- * - **string**: shorthand for array of commands with just the string, i.e. `['/route']`
5961
- * - **null|undefined**: Disables the link by removing the `href`
5962
- * @see {@link Router#createUrlTree Router#createUrlTree}
5963
- */
5964
- set routerLink(commands) {
5965
- if (commands != null) {
5966
- this.commands = Array.isArray(commands) ? commands : [commands];
5967
- }
5968
- else {
5969
- this.commands = null;
5970
- }
5971
- }
5972
- /** @nodoc */
5973
- ngOnChanges(changes) {
5974
- this.updateTargetUrlAndHref();
5975
- this.onChanges.next(this);
5976
- }
5977
- /** @nodoc */
5978
- ngOnDestroy() {
5979
- this.subscription.unsubscribe();
5980
- }
5981
- /** @nodoc */
5982
- onClick(button, ctrlKey, shiftKey, altKey, metaKey) {
5983
- if (button !== 0 || ctrlKey || shiftKey || altKey || metaKey) {
5984
- return true;
5985
- }
5986
- if (typeof this.target === 'string' && this.target != '_self' || this.urlTree === null) {
5987
- return true;
5988
- }
5989
- const extras = {
5990
- skipLocationChange: this.skipLocationChange,
5991
- replaceUrl: this.replaceUrl,
5992
- state: this.state
5993
- };
5994
- this.router.navigateByUrl(this.urlTree, extras);
5995
- return false;
5996
- }
5997
- updateTargetUrlAndHref() {
5998
- this.href = this.urlTree !== null ?
5999
- this.locationStrategy.prepareExternalUrl(this.router.serializeUrl(this.urlTree)) :
6000
- null;
6001
- }
6002
- get urlTree() {
6003
- if (this.commands === null) {
6004
- return null;
6005
- }
6006
- return this.router.createUrlTree(this.commands, {
6007
- // If the `relativeTo` input is not defined, we want to use `this.route` by default.
6008
- // Otherwise, we should use the value provided by the user in the input.
6009
- relativeTo: this.relativeTo !== undefined ? this.relativeTo : this.route,
6010
- queryParams: this.queryParams,
6011
- fragment: this.fragment,
6012
- queryParamsHandling: this.queryParamsHandling,
6013
- preserveFragment: this.preserveFragment,
6014
- });
6015
- }
6023
+ class RouterLinkWithHref extends RouterLink {
6016
6024
  }
6017
- RouterLinkWithHref.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: RouterLinkWithHref, deps: [{ token: Router }, { token: ActivatedRoute }, { token: i3.LocationStrategy }], target: i0.ɵɵFactoryTarget.Directive });
6018
- RouterLinkWithHref.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0-next.3", type: RouterLinkWithHref, isStandalone: true, selector: "a[routerLink],area[routerLink]", inputs: { target: "target", queryParams: "queryParams", fragment: "fragment", queryParamsHandling: "queryParamsHandling", state: "state", relativeTo: "relativeTo", preserveFragment: "preserveFragment", skipLocationChange: "skipLocationChange", replaceUrl: "replaceUrl", 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 });
6019
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: RouterLinkWithHref, decorators: [{
6025
+ RouterLinkWithHref.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: RouterLinkWithHref, deps: null, target: i0.ɵɵFactoryTarget.Directive });
6026
+ RouterLinkWithHref.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0-next.5", type: RouterLinkWithHref, isStandalone: true, selector: "a[routerLink],area[routerLink]", usesInheritance: true, ngImport: i0 });
6027
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: RouterLinkWithHref, decorators: [{
6020
6028
  type: Directive,
6021
- args: [{ selector: 'a[routerLink],area[routerLink]', standalone: true }]
6022
- }], ctorParameters: function () { return [{ type: Router }, { type: ActivatedRoute }, { type: i3.LocationStrategy }]; }, propDecorators: { target: [{
6023
- type: HostBinding,
6024
- args: ['attr.target']
6025
- }, {
6026
- type: Input
6027
- }], queryParams: [{
6028
- type: Input
6029
- }], fragment: [{
6030
- type: Input
6031
- }], queryParamsHandling: [{
6032
- type: Input
6033
- }], state: [{
6034
- type: Input
6035
- }], relativeTo: [{
6036
- type: Input
6037
- }], href: [{
6038
- type: HostBinding,
6039
- args: ['attr.href']
6040
- }], preserveFragment: [{
6041
- type: Input
6042
- }], skipLocationChange: [{
6043
- type: Input
6044
- }], replaceUrl: [{
6045
- type: Input
6046
- }], routerLink: [{
6047
- type: Input
6048
- }], onClick: [{
6049
- type: HostListener,
6050
- args: ['click',
6051
- ['$event.button', '$event.ctrlKey', '$event.shiftKey', '$event.altKey', '$event.metaKey']]
6052
- }] } });
6029
+ args: [{
6030
+ selector: 'a[routerLink],area[routerLink]',
6031
+ standalone: true,
6032
+ }]
6033
+ }] });
6053
6034
 
6054
6035
  /**
6055
6036
  * @license
@@ -6243,9 +6224,9 @@ class RouterLinkActive {
6243
6224
  this.links.some(isActiveCheckFn) || this.linksWithHrefs.some(isActiveCheckFn);
6244
6225
  }
6245
6226
  }
6246
- RouterLinkActive.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.3", 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 });
6247
- RouterLinkActive.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0-next.3", type: RouterLinkActive, isStandalone: true, selector: "[routerLinkActive]", inputs: { routerLinkActiveOptions: "routerLinkActiveOptions", ariaCurrentWhenActive: "ariaCurrentWhenActive", routerLinkActive: "routerLinkActive" }, outputs: { isActiveChange: "isActiveChange" }, queries: [{ propertyName: "links", predicate: RouterLink, descendants: true }, { propertyName: "linksWithHrefs", predicate: RouterLinkWithHref, descendants: true }], exportAs: ["routerLinkActive"], usesOnChanges: true, ngImport: i0 });
6248
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: RouterLinkActive, decorators: [{
6227
+ RouterLinkActive.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.5", 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 });
6228
+ RouterLinkActive.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.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 }, { propertyName: "linksWithHrefs", predicate: RouterLinkWithHref, descendants: true }], exportAs: ["routerLinkActive"], usesOnChanges: true, ngImport: i0 });
6229
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: RouterLinkActive, decorators: [{
6249
6230
  type: Directive,
6250
6231
  args: [{
6251
6232
  selector: '[routerLinkActive]',
@@ -6312,9 +6293,9 @@ class PreloadAllModules {
6312
6293
  return fn().pipe(catchError(() => of(null)));
6313
6294
  }
6314
6295
  }
6315
- PreloadAllModules.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: PreloadAllModules, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6316
- PreloadAllModules.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: PreloadAllModules, providedIn: 'root' });
6317
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: PreloadAllModules, decorators: [{
6296
+ PreloadAllModules.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: PreloadAllModules, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6297
+ PreloadAllModules.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: PreloadAllModules, providedIn: 'root' });
6298
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: PreloadAllModules, decorators: [{
6318
6299
  type: Injectable,
6319
6300
  args: [{ providedIn: 'root' }]
6320
6301
  }] });
@@ -6332,9 +6313,9 @@ class NoPreloading {
6332
6313
  return of(null);
6333
6314
  }
6334
6315
  }
6335
- NoPreloading.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: NoPreloading, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6336
- NoPreloading.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: NoPreloading, providedIn: 'root' });
6337
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: NoPreloading, decorators: [{
6316
+ NoPreloading.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: NoPreloading, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6317
+ NoPreloading.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: NoPreloading, providedIn: 'root' });
6318
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: NoPreloading, decorators: [{
6338
6319
  type: Injectable,
6339
6320
  args: [{ providedIn: 'root' }]
6340
6321
  }] });
@@ -6430,9 +6411,9 @@ class RouterPreloader {
6430
6411
  });
6431
6412
  }
6432
6413
  }
6433
- RouterPreloader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: RouterPreloader, deps: [{ token: Router }, { token: i0.Compiler }, { token: i0.EnvironmentInjector }, { token: PreloadingStrategy }, { token: RouterConfigLoader }], target: i0.ɵɵFactoryTarget.Injectable });
6434
- RouterPreloader.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: RouterPreloader, providedIn: 'root' });
6435
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: RouterPreloader, decorators: [{
6414
+ RouterPreloader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: RouterPreloader, deps: [{ token: Router }, { token: i0.Compiler }, { token: i0.EnvironmentInjector }, { token: PreloadingStrategy }, { token: RouterConfigLoader }], target: i0.ɵɵFactoryTarget.Injectable });
6415
+ RouterPreloader.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: RouterPreloader, providedIn: 'root' });
6416
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: RouterPreloader, decorators: [{
6436
6417
  type: Injectable,
6437
6418
  args: [{ providedIn: 'root' }]
6438
6419
  }], ctorParameters: function () { return [{ type: Router }, { type: i0.Compiler }, { type: i0.EnvironmentInjector }, { type: PreloadingStrategy }, { type: RouterConfigLoader }]; } });
@@ -6513,9 +6494,9 @@ class RouterScroller {
6513
6494
  }
6514
6495
  }
6515
6496
  }
6516
- RouterScroller.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: RouterScroller, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable });
6517
- RouterScroller.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: RouterScroller });
6518
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: RouterScroller, decorators: [{
6497
+ RouterScroller.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: RouterScroller, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable });
6498
+ RouterScroller.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: RouterScroller });
6499
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: RouterScroller, decorators: [{
6519
6500
  type: Injectable
6520
6501
  }], ctorParameters: function () { return [{ type: Router }, { type: i3.ViewportScroller }, { type: undefined }]; } });
6521
6502
 
@@ -7044,10 +7025,10 @@ class RouterModule {
7044
7025
  return { ngModule: RouterModule, providers: [provideRoutes(routes)] };
7045
7026
  }
7046
7027
  }
7047
- RouterModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: RouterModule, deps: [{ token: ROUTER_FORROOT_GUARD, optional: true }], target: i0.ɵɵFactoryTarget.NgModule });
7048
- RouterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.0-next.3", ngImport: i0, type: RouterModule, imports: [RouterOutlet, RouterLink, RouterLinkWithHref, RouterLinkActive, ɵEmptyOutletComponent], exports: [RouterOutlet, RouterLink, RouterLinkWithHref, RouterLinkActive, ɵEmptyOutletComponent] });
7049
- RouterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: RouterModule, imports: [ɵEmptyOutletComponent] });
7050
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.3", ngImport: i0, type: RouterModule, decorators: [{
7028
+ RouterModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: RouterModule, deps: [{ token: ROUTER_FORROOT_GUARD, optional: true }], target: i0.ɵɵFactoryTarget.NgModule });
7029
+ RouterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.0-next.5", ngImport: i0, type: RouterModule, imports: [RouterOutlet, RouterLink, RouterLinkWithHref, RouterLinkActive, ɵEmptyOutletComponent], exports: [RouterOutlet, RouterLink, RouterLinkWithHref, RouterLinkActive, ɵEmptyOutletComponent] });
7030
+ RouterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: RouterModule, imports: [ɵEmptyOutletComponent] });
7031
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.5", ngImport: i0, type: RouterModule, decorators: [{
7051
7032
  type: NgModule,
7052
7033
  args: [{
7053
7034
  imports: ROUTER_DIRECTIVES,
@@ -7133,7 +7114,7 @@ function provideRouterInitializer() {
7133
7114
  /**
7134
7115
  * @publicApi
7135
7116
  */
7136
- const VERSION = new Version('15.0.0-next.3');
7117
+ const VERSION = new Version('15.0.0-next.5');
7137
7118
 
7138
7119
  /**
7139
7120
  * @license