@angular/router 17.3.0-rc.0 → 18.0.0-next.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 (33) hide show
  1. package/esm2022/src/components/empty_outlet.mjs +3 -3
  2. package/esm2022/src/directives/router_link.mjs +3 -3
  3. package/esm2022/src/directives/router_link_active.mjs +3 -3
  4. package/esm2022/src/directives/router_outlet.mjs +6 -6
  5. package/esm2022/src/events.mjs +3 -2
  6. package/esm2022/src/index.mjs +2 -1
  7. package/esm2022/src/models.mjs +16 -2
  8. package/esm2022/src/navigation_canceling_error.mjs +1 -1
  9. package/esm2022/src/navigation_transition.mjs +21 -12
  10. package/esm2022/src/operators/check_guards.mjs +2 -3
  11. package/esm2022/src/operators/prioritized_guard_value.mjs +8 -4
  12. package/esm2022/src/page_title_strategy.mjs +6 -6
  13. package/esm2022/src/route_reuse_strategy.mjs +6 -6
  14. package/esm2022/src/router.mjs +7 -4
  15. package/esm2022/src/router_config_loader.mjs +3 -3
  16. package/esm2022/src/router_module.mjs +4 -4
  17. package/esm2022/src/router_outlet_context.mjs +3 -3
  18. package/esm2022/src/router_preloader.mjs +9 -9
  19. package/esm2022/src/router_scroller.mjs +3 -3
  20. package/esm2022/src/statemanager/state_manager.mjs +6 -6
  21. package/esm2022/src/url_handling_strategy.mjs +6 -6
  22. package/esm2022/src/url_tree.mjs +3 -3
  23. package/esm2022/src/version.mjs +1 -1
  24. package/esm2022/testing/src/router_testing_harness.mjs +6 -6
  25. package/esm2022/testing/src/router_testing_module.mjs +4 -4
  26. package/fesm2022/router.mjs +116 -84
  27. package/fesm2022/router.mjs.map +1 -1
  28. package/fesm2022/testing.mjs +11 -11
  29. package/fesm2022/upgrade.mjs +1 -1
  30. package/index.d.ts +17 -2
  31. package/package.json +4 -4
  32. package/testing/index.d.ts +1 -1
  33. package/upgrade/index.d.ts +1 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v17.3.0-rc.0
2
+ * @license Angular v18.0.0-next.0
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -421,10 +421,10 @@ function mapChildrenIntoArray(segment, fn) {
421
421
  * @publicApi
422
422
  */
423
423
  class UrlSerializer {
424
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: UrlSerializer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
425
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: UrlSerializer, providedIn: 'root', useFactory: () => new DefaultUrlSerializer() }); }
424
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: UrlSerializer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
425
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: UrlSerializer, providedIn: 'root', useFactory: () => new DefaultUrlSerializer() }); }
426
426
  }
427
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: UrlSerializer, decorators: [{
427
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: UrlSerializer, decorators: [{
428
428
  type: Injectable,
429
429
  args: [{ providedIn: 'root', useFactory: () => new DefaultUrlSerializer() }]
430
430
  }] });
@@ -1743,8 +1743,9 @@ class Scroll {
1743
1743
  class BeforeActivateRoutes {
1744
1744
  }
1745
1745
  class RedirectRequest {
1746
- constructor(url) {
1746
+ constructor(url, navigationBehaviorOptions) {
1747
1747
  this.url = url;
1748
+ this.navigationBehaviorOptions = navigationBehaviorOptions;
1748
1749
  }
1749
1750
  }
1750
1751
  function stringifyEvent(routerEvent) {
@@ -1854,10 +1855,10 @@ class ChildrenOutletContexts {
1854
1855
  getContext(childName) {
1855
1856
  return this.contexts.get(childName) || null;
1856
1857
  }
1857
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: ChildrenOutletContexts, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1858
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: ChildrenOutletContexts, providedIn: 'root' }); }
1858
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: ChildrenOutletContexts, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1859
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: ChildrenOutletContexts, providedIn: 'root' }); }
1859
1860
  }
1860
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: ChildrenOutletContexts, decorators: [{
1861
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: ChildrenOutletContexts, decorators: [{
1861
1862
  type: Injectable,
1862
1863
  args: [{ providedIn: 'root' }]
1863
1864
  }] });
@@ -2569,10 +2570,10 @@ class RouterOutlet {
2569
2570
  this.inputBinder?.bindActivatedRouteToOutletComponent(this);
2570
2571
  this.activateEvents.emit(this.activated.instance);
2571
2572
  }
2572
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: RouterOutlet, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2573
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0-rc.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 }); }
2573
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: RouterOutlet, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2574
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.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 }); }
2574
2575
  }
2575
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: RouterOutlet, decorators: [{
2576
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: RouterOutlet, decorators: [{
2576
2577
  type: Directive,
2577
2578
  args: [{
2578
2579
  selector: 'router-outlet',
@@ -2677,10 +2678,10 @@ class RoutedComponentInputBinder {
2677
2678
  });
2678
2679
  this.outletDataSubscriptions.set(outlet, dataSubscription);
2679
2680
  }
2680
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: RoutedComponentInputBinder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2681
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: RoutedComponentInputBinder }); }
2681
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: RoutedComponentInputBinder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2682
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: RoutedComponentInputBinder }); }
2682
2683
  }
2683
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: RoutedComponentInputBinder, decorators: [{
2684
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: RoutedComponentInputBinder, decorators: [{
2684
2685
  type: Injectable
2685
2686
  }] });
2686
2687
 
@@ -2760,10 +2761,10 @@ function isNavigationCancelingError(error) {
2760
2761
  * to this `EmptyOutletComponent`.
2761
2762
  */
2762
2763
  class ɵEmptyOutletComponent {
2763
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: ɵEmptyOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2764
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0-rc.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"] }] }); }
2764
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: ɵEmptyOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2765
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.0-next.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"] }] }); }
2765
2766
  }
2766
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: ɵEmptyOutletComponent, decorators: [{
2767
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: ɵEmptyOutletComponent, decorators: [{
2767
2768
  type: Component,
2768
2769
  args: [{
2769
2770
  template: `<router-outlet></router-outlet>`,
@@ -3330,6 +3331,22 @@ function isEmptyError(e) {
3330
3331
  return e instanceof EmptyError || e?.name === 'EmptyError';
3331
3332
  }
3332
3333
 
3334
+ /**
3335
+ * Can be returned by a `Router` guard to instruct the `Router` to redirect rather than continue
3336
+ * processing the path of the in-flight navigation. The `redirectTo` indicates _where_ the new
3337
+ * navigation should go to and the optional `navigationBehaviorOptions` can provide more information
3338
+ * about _how_ to perform the navigation.
3339
+ *
3340
+ * @see [Routing tutorial](guide/router-tutorial-toh#milestone-5-route-guards)
3341
+ * @publicApi
3342
+ */
3343
+ class RedirectCommand {
3344
+ constructor(redirectTo, navigationBehaviorOptions) {
3345
+ this.redirectTo = redirectTo;
3346
+ this.navigationBehaviorOptions = navigationBehaviorOptions;
3347
+ }
3348
+ }
3349
+
3333
3350
  const INITIAL_VALUE = /* @__PURE__ */ Symbol('INITIAL_VALUE');
3334
3351
  function prioritizedGuardValue() {
3335
3352
  return switchMap((obs) => {
@@ -3343,9 +3360,9 @@ function prioritizedGuardValue() {
3343
3360
  // If guard has not finished, we need to stop processing.
3344
3361
  return INITIAL_VALUE;
3345
3362
  }
3346
- else if (result === false || result instanceof UrlTree) {
3363
+ else if (result === false || isRedirect(result)) {
3347
3364
  // Result finished and was not true. Return the result.
3348
- // Note that we only allow false/UrlTree. Other values are considered invalid and
3365
+ // Note that we only allow false/UrlTree/RedirectCommand. Other values are considered invalid and
3349
3366
  // ignored.
3350
3367
  return result;
3351
3368
  }
@@ -3355,6 +3372,9 @@ function prioritizedGuardValue() {
3355
3372
  }), filter((item) => item !== INITIAL_VALUE), take(1));
3356
3373
  });
3357
3374
  }
3375
+ function isRedirect(val) {
3376
+ return isUrlTree(val) || val instanceof RedirectCommand;
3377
+ }
3358
3378
 
3359
3379
  function checkGuards(injector, forwardEvent) {
3360
3380
  return mergeMap((t) => {
@@ -3477,7 +3497,7 @@ function runCanLoadGuards(injector, route, segments, urlSerializer) {
3477
3497
  }
3478
3498
  function redirectIfUrlTree(urlSerializer) {
3479
3499
  return pipe(tap((result) => {
3480
- if (!isUrlTree(result))
3500
+ if (typeof result === 'boolean')
3481
3501
  return;
3482
3502
  throw redirectingNavigationError(urlSerializer, result);
3483
3503
  }), map((result) => result === true));
@@ -4174,10 +4194,10 @@ class TitleStrategy {
4174
4194
  getResolvedTitleForRoute(snapshot) {
4175
4195
  return snapshot.data[RouteTitleKey];
4176
4196
  }
4177
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: TitleStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4178
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: TitleStrategy, providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy) }); }
4197
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: TitleStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4198
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: TitleStrategy, providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy) }); }
4179
4199
  }
4180
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: TitleStrategy, decorators: [{
4200
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: TitleStrategy, decorators: [{
4181
4201
  type: Injectable,
4182
4202
  args: [{ providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy) }]
4183
4203
  }] });
@@ -4200,10 +4220,10 @@ class DefaultTitleStrategy extends TitleStrategy {
4200
4220
  this.title.setTitle(title);
4201
4221
  }
4202
4222
  }
4203
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0-rc.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.3.0-rc.0", ngImport: i0, type: DefaultTitleStrategy, providedIn: 'root' }); }
4223
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: DefaultTitleStrategy, deps: [{ token: i1.Title }], target: i0.ɵɵFactoryTarget.Injectable }); }
4224
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: DefaultTitleStrategy, providedIn: 'root' }); }
4205
4225
  }
4206
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: DefaultTitleStrategy, decorators: [{
4226
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: DefaultTitleStrategy, decorators: [{
4207
4227
  type: Injectable,
4208
4228
  args: [{ providedIn: 'root' }]
4209
4229
  }], ctorParameters: () => [{ type: i1.Title }] });
@@ -4279,10 +4299,10 @@ class RouterConfigLoader {
4279
4299
  this.childrenLoaders.set(route, loader);
4280
4300
  return loader;
4281
4301
  }
4282
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: RouterConfigLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4283
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: RouterConfigLoader, providedIn: 'root' }); }
4302
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: RouterConfigLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4303
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: RouterConfigLoader, providedIn: 'root' }); }
4284
4304
  }
4285
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: RouterConfigLoader, decorators: [{
4305
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: RouterConfigLoader, decorators: [{
4286
4306
  type: Injectable,
4287
4307
  args: [{ providedIn: 'root' }]
4288
4308
  }] });
@@ -4349,10 +4369,10 @@ function maybeUnwrapDefaultExport(input) {
4349
4369
  * @publicApi
4350
4370
  */
4351
4371
  class UrlHandlingStrategy {
4352
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: UrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4353
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: UrlHandlingStrategy, providedIn: 'root', useFactory: () => inject(DefaultUrlHandlingStrategy) }); }
4372
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: UrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4373
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: UrlHandlingStrategy, providedIn: 'root', useFactory: () => inject(DefaultUrlHandlingStrategy) }); }
4354
4374
  }
4355
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: UrlHandlingStrategy, decorators: [{
4375
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: UrlHandlingStrategy, decorators: [{
4356
4376
  type: Injectable,
4357
4377
  args: [{ providedIn: 'root', useFactory: () => inject(DefaultUrlHandlingStrategy) }]
4358
4378
  }] });
@@ -4369,10 +4389,10 @@ class DefaultUrlHandlingStrategy {
4369
4389
  merge(newUrlPart, wholeUrl) {
4370
4390
  return newUrlPart;
4371
4391
  }
4372
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: DefaultUrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4373
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: DefaultUrlHandlingStrategy, providedIn: 'root' }); }
4392
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: DefaultUrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4393
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: DefaultUrlHandlingStrategy, providedIn: 'root' }); }
4374
4394
  }
4375
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: DefaultUrlHandlingStrategy, decorators: [{
4395
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: DefaultUrlHandlingStrategy, decorators: [{
4376
4396
  type: Injectable,
4377
4397
  args: [{ providedIn: 'root' }]
4378
4398
  }] });
@@ -4503,12 +4523,22 @@ class NavigationTransitions {
4503
4523
  })),
4504
4524
  // Using switchMap so we cancel executing navigations when a new one comes in
4505
4525
  switchMap((overallTransitionState) => {
4506
- this.currentTransition = overallTransitionState;
4507
4526
  let completed = false;
4508
4527
  let errored = false;
4509
- return of(overallTransitionState).pipe(
4510
- // Store the Navigation object
4511
- tap((t) => {
4528
+ return of(overallTransitionState).pipe(switchMap((t) => {
4529
+ // It is possible that `switchMap` fails to cancel previous navigations if a new one happens synchronously while the operator
4530
+ // is processing the `next` notification of that previous navigation. This can happen when a new navigation (say 2) cancels a
4531
+ // previous one (1) and yet another navigation (3) happens synchronously in response to the `NavigationCancel` event for (1).
4532
+ // https://github.com/ReactiveX/rxjs/issues/7455
4533
+ if (this.navigationId > overallTransitionState.id) {
4534
+ const cancellationReason = typeof ngDevMode === 'undefined' || ngDevMode
4535
+ ? `Navigation ID ${overallTransitionState.id} is not equal to the current navigation id ${this.navigationId}`
4536
+ : '';
4537
+ this.cancelNavigationTransition(overallTransitionState, cancellationReason, NavigationCancellationCode.SupersededByNewNavigation);
4538
+ return EMPTY;
4539
+ }
4540
+ this.currentTransition = overallTransitionState;
4541
+ // Store the Navigation object
4512
4542
  this.currentNavigation = {
4513
4543
  id: t.id,
4514
4544
  initialUrl: t.rawUrl,
@@ -4522,7 +4552,6 @@ class NavigationTransitions {
4522
4552
  previousNavigation: null,
4523
4553
  },
4524
4554
  };
4525
- }), switchMap((t) => {
4526
4555
  const urlTransition = !router.navigated || this.isUpdatingInternalState() || this.isUpdatedBrowserUrl();
4527
4556
  const onSameUrlNavigation = t.extras.onSameUrlNavigation ?? router.onSameUrlNavigation;
4528
4557
  if (!urlTransition && onSameUrlNavigation !== 'reload') {
@@ -4606,7 +4635,7 @@ class NavigationTransitions {
4606
4635
  return overallTransitionState;
4607
4636
  }), checkGuards(this.environmentInjector, (evt) => this.events.next(evt)), tap((t) => {
4608
4637
  overallTransitionState.guardsResult = t.guardsResult;
4609
- if (isUrlTree(t.guardsResult)) {
4638
+ if (t.guardsResult && typeof t.guardsResult !== 'boolean') {
4610
4639
  throw redirectingNavigationError(this.urlSerializer, t.guardsResult);
4611
4640
  }
4612
4641
  const guardsEnd = new GuardsCheckEnd(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects), t.targetSnapshot, !!t.guardsResult);
@@ -4729,7 +4758,7 @@ class NavigationTransitions {
4729
4758
  overallTransitionState.resolve(false);
4730
4759
  }
4731
4760
  else {
4732
- this.events.next(new RedirectRequest(e.url));
4761
+ this.events.next(new RedirectRequest(e.url, e.navigationBehaviorOptions));
4733
4762
  }
4734
4763
  /* All other errors should reset to the router's internal URL reference
4735
4764
  * to the pre-error state. */
@@ -4794,10 +4823,10 @@ class NavigationTransitions {
4794
4823
  return (extractedBrowserUrl.toString() !== this.currentTransition?.extractedUrl.toString() &&
4795
4824
  !this.currentTransition?.extras.skipLocationChange);
4796
4825
  }
4797
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: NavigationTransitions, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4798
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: NavigationTransitions, providedIn: 'root' }); }
4826
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: NavigationTransitions, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4827
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: NavigationTransitions, providedIn: 'root' }); }
4799
4828
  }
4800
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: NavigationTransitions, decorators: [{
4829
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: NavigationTransitions, decorators: [{
4801
4830
  type: Injectable,
4802
4831
  args: [{ providedIn: 'root' }]
4803
4832
  }], ctorParameters: () => [] });
@@ -4813,10 +4842,10 @@ function isBrowserTriggeredNavigation(source) {
4813
4842
  * @publicApi
4814
4843
  */
4815
4844
  class RouteReuseStrategy {
4816
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: RouteReuseStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4817
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: RouteReuseStrategy, providedIn: 'root', useFactory: () => inject(DefaultRouteReuseStrategy) }); }
4845
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: RouteReuseStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4846
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: RouteReuseStrategy, providedIn: 'root', useFactory: () => inject(DefaultRouteReuseStrategy) }); }
4818
4847
  }
4819
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: RouteReuseStrategy, decorators: [{
4848
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: RouteReuseStrategy, decorators: [{
4820
4849
  type: Injectable,
4821
4850
  args: [{ providedIn: 'root', useFactory: () => inject(DefaultRouteReuseStrategy) }]
4822
4851
  }] });
@@ -4867,19 +4896,19 @@ class BaseRouteReuseStrategy {
4867
4896
  }
4868
4897
  }
4869
4898
  class DefaultRouteReuseStrategy extends BaseRouteReuseStrategy {
4870
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: DefaultRouteReuseStrategy, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
4871
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: DefaultRouteReuseStrategy, providedIn: 'root' }); }
4899
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: DefaultRouteReuseStrategy, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
4900
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: DefaultRouteReuseStrategy, providedIn: 'root' }); }
4872
4901
  }
4873
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: DefaultRouteReuseStrategy, decorators: [{
4902
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: DefaultRouteReuseStrategy, decorators: [{
4874
4903
  type: Injectable,
4875
4904
  args: [{ providedIn: 'root' }]
4876
4905
  }] });
4877
4906
 
4878
4907
  class StateManager {
4879
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: StateManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4880
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: StateManager, providedIn: 'root', useFactory: () => inject(HistoryStateManager) }); }
4908
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: StateManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4909
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: StateManager, providedIn: 'root', useFactory: () => inject(HistoryStateManager) }); }
4881
4910
  }
4882
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: StateManager, decorators: [{
4911
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: StateManager, decorators: [{
4883
4912
  type: Injectable,
4884
4913
  args: [{ providedIn: 'root', useFactory: () => inject(HistoryStateManager) }]
4885
4914
  }] });
@@ -5054,10 +5083,10 @@ class HistoryStateManager extends StateManager {
5054
5083
  }
5055
5084
  return { navigationId };
5056
5085
  }
5057
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: HistoryStateManager, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
5058
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: HistoryStateManager, providedIn: 'root' }); }
5086
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: HistoryStateManager, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
5087
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: HistoryStateManager, providedIn: 'root' }); }
5059
5088
  }
5060
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: HistoryStateManager, decorators: [{
5089
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: HistoryStateManager, decorators: [{
5061
5090
  type: Injectable,
5062
5091
  args: [{ providedIn: 'root' }]
5063
5092
  }] });
@@ -5242,6 +5271,7 @@ class Router {
5242
5271
  this.navigated = true;
5243
5272
  }
5244
5273
  else if (e instanceof RedirectRequest) {
5274
+ const opts = e.navigationBehaviorOptions;
5245
5275
  const mergedTree = this.urlHandlingStrategy.merge(e.url, currentTransition.currentRawUrl);
5246
5276
  const extras = {
5247
5277
  // Persist transient navigation info from the original navigation request.
@@ -5253,6 +5283,8 @@ class Router {
5253
5283
  // if the navigation is rejected.
5254
5284
  replaceUrl: this.urlUpdateStrategy === 'eager' ||
5255
5285
  isBrowserTriggeredNavigation(currentTransition.source),
5286
+ // allow developer to override default options with RedirectCommand
5287
+ ...opts,
5256
5288
  };
5257
5289
  this.scheduleNavigation(mergedTree, IMPERATIVE_NAVIGATION, null, extras, {
5258
5290
  resolve: currentTransition.resolve,
@@ -5633,10 +5665,10 @@ class Router {
5633
5665
  return Promise.reject(e);
5634
5666
  });
5635
5667
  }
5636
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: Router, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5637
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: Router, providedIn: 'root' }); }
5668
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: Router, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5669
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: Router, providedIn: 'root' }); }
5638
5670
  }
5639
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: Router, decorators: [{
5671
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: Router, decorators: [{
5640
5672
  type: Injectable,
5641
5673
  args: [{ providedIn: 'root' }]
5642
5674
  }], ctorParameters: () => [] });
@@ -5911,10 +5943,10 @@ class RouterLink {
5911
5943
  preserveFragment: this.preserveFragment,
5912
5944
  });
5913
5945
  }
5914
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0-rc.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 }); }
5915
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.0-rc.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 }); }
5946
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.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 }); }
5947
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.0.0-next.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 }); }
5916
5948
  }
5917
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: RouterLink, decorators: [{
5949
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: RouterLink, decorators: [{
5918
5950
  type: Directive,
5919
5951
  args: [{
5920
5952
  selector: '[routerLink]',
@@ -6151,10 +6183,10 @@ class RouterLinkActive {
6151
6183
  const isActiveCheckFn = this.isLinkActive(this.router);
6152
6184
  return (this.link && isActiveCheckFn(this.link)) || this.links.some(isActiveCheckFn);
6153
6185
  }
6154
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0-rc.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 }); }
6155
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0-rc.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 }); }
6186
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.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 }); }
6187
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.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 }); }
6156
6188
  }
6157
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: RouterLinkActive, decorators: [{
6189
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: RouterLinkActive, decorators: [{
6158
6190
  type: Directive,
6159
6191
  args: [{
6160
6192
  selector: '[routerLinkActive]',
@@ -6206,10 +6238,10 @@ class PreloadAllModules {
6206
6238
  preload(route, fn) {
6207
6239
  return fn().pipe(catchError(() => of(null)));
6208
6240
  }
6209
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: PreloadAllModules, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
6210
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: PreloadAllModules, providedIn: 'root' }); }
6241
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: PreloadAllModules, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
6242
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: PreloadAllModules, providedIn: 'root' }); }
6211
6243
  }
6212
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: PreloadAllModules, decorators: [{
6244
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: PreloadAllModules, decorators: [{
6213
6245
  type: Injectable,
6214
6246
  args: [{ providedIn: 'root' }]
6215
6247
  }] });
@@ -6226,10 +6258,10 @@ class NoPreloading {
6226
6258
  preload(route, fn) {
6227
6259
  return of(null);
6228
6260
  }
6229
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: NoPreloading, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
6230
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: NoPreloading, providedIn: 'root' }); }
6261
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: NoPreloading, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
6262
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: NoPreloading, providedIn: 'root' }); }
6231
6263
  }
6232
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: NoPreloading, decorators: [{
6264
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: NoPreloading, decorators: [{
6233
6265
  type: Injectable,
6234
6266
  args: [{ providedIn: 'root' }]
6235
6267
  }] });
@@ -6320,10 +6352,10 @@ class RouterPreloader {
6320
6352
  }
6321
6353
  });
6322
6354
  }
6323
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: RouterPreloader, deps: [{ token: Router }, { token: i0.Compiler }, { token: i0.EnvironmentInjector }, { token: PreloadingStrategy }, { token: RouterConfigLoader }], target: i0.ɵɵFactoryTarget.Injectable }); }
6324
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: RouterPreloader, providedIn: 'root' }); }
6355
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: RouterPreloader, deps: [{ token: Router }, { token: i0.Compiler }, { token: i0.EnvironmentInjector }, { token: PreloadingStrategy }, { token: RouterConfigLoader }], target: i0.ɵɵFactoryTarget.Injectable }); }
6356
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: RouterPreloader, providedIn: 'root' }); }
6325
6357
  }
6326
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: RouterPreloader, decorators: [{
6358
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: RouterPreloader, decorators: [{
6327
6359
  type: Injectable,
6328
6360
  args: [{ providedIn: 'root' }]
6329
6361
  }], ctorParameters: () => [{ type: Router }, { type: i0.Compiler }, { type: i0.EnvironmentInjector }, { type: PreloadingStrategy }, { type: RouterConfigLoader }] });
@@ -6416,10 +6448,10 @@ class RouterScroller {
6416
6448
  this.routerEventsSubscription?.unsubscribe();
6417
6449
  this.scrollEventsSubscription?.unsubscribe();
6418
6450
  }
6419
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: RouterScroller, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable }); }
6420
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: RouterScroller }); }
6451
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: RouterScroller, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable }); }
6452
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: RouterScroller }); }
6421
6453
  }
6422
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: RouterScroller, decorators: [{
6454
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: RouterScroller, decorators: [{
6423
6455
  type: Injectable
6424
6456
  }], ctorParameters: () => [{ type: UrlSerializer }, { type: NavigationTransitions }, { type: i3.ViewportScroller }, { type: i0.NgZone }, { type: undefined }] });
6425
6457
 
@@ -7069,11 +7101,11 @@ class RouterModule {
7069
7101
  providers: [{ provide: ROUTES, multi: true, useValue: routes }],
7070
7102
  };
7071
7103
  }
7072
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: RouterModule, deps: [{ token: ROUTER_FORROOT_GUARD, optional: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
7073
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.0-rc.0", ngImport: i0, type: RouterModule, imports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent], exports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent] }); }
7074
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: RouterModule }); }
7104
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: RouterModule, deps: [{ token: ROUTER_FORROOT_GUARD, optional: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
7105
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.0-next.0", ngImport: i0, type: RouterModule, imports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent], exports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent] }); }
7106
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: RouterModule }); }
7075
7107
  }
7076
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0-rc.0", ngImport: i0, type: RouterModule, decorators: [{
7108
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.0", ngImport: i0, type: RouterModule, decorators: [{
7077
7109
  type: NgModule,
7078
7110
  args: [{
7079
7111
  imports: ROUTER_DIRECTIVES,
@@ -7218,7 +7250,7 @@ function mapToResolve(provider) {
7218
7250
  /**
7219
7251
  * @publicApi
7220
7252
  */
7221
- const VERSION = new Version('17.3.0-rc.0');
7253
+ const VERSION = new Version('18.0.0-next.0');
7222
7254
 
7223
7255
  /**
7224
7256
  * @module
@@ -7233,5 +7265,5 @@ const VERSION = new Version('17.3.0-rc.0');
7233
7265
  * Generated bundle index. Do not edit.
7234
7266
  */
7235
7267
 
7236
- export { ActivatedRoute, ActivatedRouteSnapshot, ActivationEnd, ActivationStart, BaseRouteReuseStrategy, ChildActivationEnd, ChildActivationStart, ChildrenOutletContexts, DefaultTitleStrategy, DefaultUrlSerializer, EventType, GuardsCheckEnd, GuardsCheckStart, NavigationCancel, NavigationCancellationCode, NavigationEnd, NavigationError, NavigationSkipped, NavigationSkippedCode, NavigationStart, NoPreloading, OutletContext, PRIMARY_OUTLET, PreloadAllModules, PreloadingStrategy, ROUTER_CONFIGURATION, ROUTER_INITIALIZER, ROUTES, ResolveEnd, ResolveStart, RouteConfigLoadEnd, RouteConfigLoadStart, RouteReuseStrategy, Router, RouterEvent, RouterLink, RouterLinkActive, RouterLink as RouterLinkWithHref, RouterModule, RouterOutlet, RouterPreloader, RouterState, RouterStateSnapshot, RoutesRecognized, Scroll, TitleStrategy, UrlHandlingStrategy, UrlSegment, UrlSegmentGroup, UrlSerializer, UrlTree, VERSION, convertToParamMap, createUrlTreeFromSnapshot, defaultUrlMatcher, mapToCanActivate, mapToCanActivateChild, mapToCanDeactivate, mapToCanMatch, mapToResolve, provideRouter, provideRoutes, withComponentInputBinding, withDebugTracing, withDisabledInitialNavigation, withEnabledBlockingInitialNavigation, withHashLocation, withInMemoryScrolling, withNavigationErrorHandler, withPreloading, withRouterConfig, withViewTransitions, ɵEmptyOutletComponent, ROUTER_PROVIDERS as ɵROUTER_PROVIDERS, afterNextNavigation as ɵafterNextNavigation, loadChildren as ɵloadChildren };
7268
+ export { ActivatedRoute, ActivatedRouteSnapshot, ActivationEnd, ActivationStart, BaseRouteReuseStrategy, ChildActivationEnd, ChildActivationStart, ChildrenOutletContexts, DefaultTitleStrategy, DefaultUrlSerializer, EventType, GuardsCheckEnd, GuardsCheckStart, NavigationCancel, NavigationCancellationCode, NavigationEnd, NavigationError, NavigationSkipped, NavigationSkippedCode, NavigationStart, NoPreloading, OutletContext, PRIMARY_OUTLET, PreloadAllModules, PreloadingStrategy, ROUTER_CONFIGURATION, ROUTER_INITIALIZER, ROUTES, RedirectCommand, ResolveEnd, ResolveStart, RouteConfigLoadEnd, RouteConfigLoadStart, RouteReuseStrategy, Router, RouterEvent, RouterLink, RouterLinkActive, RouterLink as RouterLinkWithHref, RouterModule, RouterOutlet, RouterPreloader, RouterState, RouterStateSnapshot, RoutesRecognized, Scroll, TitleStrategy, UrlHandlingStrategy, UrlSegment, UrlSegmentGroup, UrlSerializer, UrlTree, VERSION, convertToParamMap, createUrlTreeFromSnapshot, defaultUrlMatcher, mapToCanActivate, mapToCanActivateChild, mapToCanDeactivate, mapToCanMatch, mapToResolve, provideRouter, provideRoutes, withComponentInputBinding, withDebugTracing, withDisabledInitialNavigation, withEnabledBlockingInitialNavigation, withHashLocation, withInMemoryScrolling, withNavigationErrorHandler, withPreloading, withRouterConfig, withViewTransitions, ɵEmptyOutletComponent, ROUTER_PROVIDERS as ɵROUTER_PROVIDERS, afterNextNavigation as ɵafterNextNavigation, loadChildren as ɵloadChildren };
7237
7269
  //# sourceMappingURL=router.mjs.map