@angular/router 17.0.0-next.5 → 17.0.0-next.6

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,5 +1,5 @@
1
1
  /**
2
- * @license Angular v17.0.0-next.5
2
+ * @license Angular v17.0.0-next.6
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -425,10 +425,10 @@ function mapChildrenIntoArray(segment, fn) {
425
425
  * @publicApi
426
426
  */
427
427
  class UrlSerializer {
428
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: UrlSerializer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
429
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: UrlSerializer, providedIn: 'root', useFactory: () => new DefaultUrlSerializer() }); }
428
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: UrlSerializer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
429
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: UrlSerializer, providedIn: 'root', useFactory: () => new DefaultUrlSerializer() }); }
430
430
  }
431
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: UrlSerializer, decorators: [{
431
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: UrlSerializer, decorators: [{
432
432
  type: Injectable,
433
433
  args: [{ providedIn: 'root', useFactory: () => new DefaultUrlSerializer() }]
434
434
  }] });
@@ -1785,10 +1785,10 @@ class ChildrenOutletContexts {
1785
1785
  getContext(childName) {
1786
1786
  return this.contexts.get(childName) || null;
1787
1787
  }
1788
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: ChildrenOutletContexts, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1789
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: ChildrenOutletContexts, providedIn: 'root' }); }
1788
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: ChildrenOutletContexts, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1789
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: ChildrenOutletContexts, providedIn: 'root' }); }
1790
1790
  }
1791
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: ChildrenOutletContexts, decorators: [{
1791
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: ChildrenOutletContexts, decorators: [{
1792
1792
  type: Injectable,
1793
1793
  args: [{ providedIn: 'root' }]
1794
1794
  }] });
@@ -2495,10 +2495,10 @@ class RouterOutlet {
2495
2495
  this.inputBinder?.bindActivatedRouteToOutletComponent(this);
2496
2496
  this.activateEvents.emit(this.activated.instance);
2497
2497
  }
2498
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouterOutlet, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2499
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.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 }); }
2498
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterOutlet, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2499
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.0-next.6", 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 }); }
2500
2500
  }
2501
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouterOutlet, decorators: [{
2501
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterOutlet, decorators: [{
2502
2502
  type: Directive,
2503
2503
  args: [{
2504
2504
  selector: 'router-outlet',
@@ -2601,10 +2601,10 @@ class RoutedComponentInputBinder {
2601
2601
  });
2602
2602
  this.outletDataSubscriptions.set(outlet, dataSubscription);
2603
2603
  }
2604
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RoutedComponentInputBinder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2605
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RoutedComponentInputBinder }); }
2604
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RoutedComponentInputBinder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2605
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RoutedComponentInputBinder }); }
2606
2606
  }
2607
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RoutedComponentInputBinder, decorators: [{
2607
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RoutedComponentInputBinder, decorators: [{
2608
2608
  type: Injectable
2609
2609
  }] });
2610
2610
 
@@ -2684,10 +2684,10 @@ function isNavigationCancelingError$1(error) {
2684
2684
  * to this `EmptyOutletComponent`.
2685
2685
  */
2686
2686
  class ɵEmptyOutletComponent {
2687
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: ɵEmptyOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2688
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.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"] }] }); }
2687
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: ɵEmptyOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2688
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.0-next.6", 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"] }] }); }
2689
2689
  }
2690
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: ɵEmptyOutletComponent, decorators: [{
2690
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: ɵEmptyOutletComponent, decorators: [{
2691
2691
  type: Component,
2692
2692
  args: [{
2693
2693
  template: `<router-outlet></router-outlet>`,
@@ -3664,6 +3664,7 @@ function recognize$1(injector, configLoader, rootComponentType, config, urlTree,
3664
3664
  return new Recognizer(injector, configLoader, rootComponentType, config, urlTree, paramsInheritanceStrategy, urlSerializer)
3665
3665
  .recognize();
3666
3666
  }
3667
+ const MAX_ALLOWED_REDIRECTS = 31;
3667
3668
  class Recognizer {
3668
3669
  constructor(injector, configLoader, rootComponentType, config, urlTree, paramsInheritanceStrategy, urlSerializer) {
3669
3670
  this.injector = injector;
@@ -3673,8 +3674,9 @@ class Recognizer {
3673
3674
  this.urlTree = urlTree;
3674
3675
  this.paramsInheritanceStrategy = paramsInheritanceStrategy;
3675
3676
  this.urlSerializer = urlSerializer;
3676
- this.allowRedirects = true;
3677
3677
  this.applyRedirects = new ApplyRedirects(this.urlSerializer, this.urlTree);
3678
+ this.absoluteRedirectCount = 0;
3679
+ this.allowRedirects = true;
3678
3680
  }
3679
3681
  noMatchError(e) {
3680
3682
  return new ɵRuntimeError(4002 /* RuntimeErrorCode.NO_MATCH */, (typeof ngDevMode === 'undefined' || ngDevMode) &&
@@ -3682,20 +3684,7 @@ class Recognizer {
3682
3684
  }
3683
3685
  recognize() {
3684
3686
  const rootSegmentGroup = split(this.urlTree.root, [], [], this.config).segmentGroup;
3685
- return this.processSegmentGroup(this.injector, this.config, rootSegmentGroup, PRIMARY_OUTLET)
3686
- .pipe(catchError((e) => {
3687
- if (e instanceof AbsoluteRedirect) {
3688
- // After an absolute redirect we do not apply any more redirects!
3689
- // If this implementation changes, update the documentation note in `redirectTo`.
3690
- this.allowRedirects = false;
3691
- this.urlTree = e.urlTree;
3692
- return this.match(e.urlTree);
3693
- }
3694
- if (e instanceof NoMatch) {
3695
- throw this.noMatchError(e);
3696
- }
3697
- throw e;
3698
- }), map(children => {
3687
+ return this.match(rootSegmentGroup).pipe(map(children => {
3699
3688
  // Use Object.freeze to prevent readers of the Router state from modifying it outside
3700
3689
  // of a navigation, resulting in the router being out of sync with the browser.
3701
3690
  const root = new ActivatedRouteSnapshot([], Object.freeze({}), Object.freeze({ ...this.urlTree.queryParams }), this.urlTree.fragment, {}, PRIMARY_OUTLET, this.rootComponentType, null, {});
@@ -3711,9 +3700,13 @@ class Recognizer {
3711
3700
  return { state: routeState, tree };
3712
3701
  }));
3713
3702
  }
3714
- match(tree) {
3715
- const expanded$ = this.processSegmentGroup(this.injector, this.config, tree.root, PRIMARY_OUTLET);
3703
+ match(rootSegmentGroup) {
3704
+ const expanded$ = this.processSegmentGroup(this.injector, this.config, rootSegmentGroup, PRIMARY_OUTLET);
3716
3705
  return expanded$.pipe(catchError((e) => {
3706
+ if (e instanceof AbsoluteRedirect) {
3707
+ this.urlTree = e.urlTree;
3708
+ return this.match(e.urlTree.root);
3709
+ }
3717
3710
  if (e instanceof NoMatch) {
3718
3711
  throw this.noMatchError(e);
3719
3712
  }
@@ -3807,7 +3800,7 @@ class Recognizer {
3807
3800
  if (route.redirectTo === undefined) {
3808
3801
  return this.matchSegmentAgainstRoute(injector, rawSegment, route, segments, outlet);
3809
3802
  }
3810
- if (allowRedirects && this.allowRedirects) {
3803
+ if (this.allowRedirects && allowRedirects) {
3811
3804
  return this.expandSegmentAgainstRouteUsingRedirect(injector, rawSegment, routes, route, segments, outlet);
3812
3805
  }
3813
3806
  return noMatch$1(rawSegment);
@@ -3817,6 +3810,19 @@ class Recognizer {
3817
3810
  match(segmentGroup, route, segments);
3818
3811
  if (!matched)
3819
3812
  return noMatch$1(segmentGroup);
3813
+ // TODO(atscott): Move all of this under an if(ngDevMode) as a breaking change and allow stack
3814
+ // size exceeded in production
3815
+ if (route.redirectTo.startsWith('/')) {
3816
+ this.absoluteRedirectCount++;
3817
+ if (this.absoluteRedirectCount > MAX_ALLOWED_REDIRECTS) {
3818
+ if (ngDevMode) {
3819
+ throw new ɵRuntimeError(4016 /* RuntimeErrorCode.INFINITE_REDIRECT */, `Detected possible infinite redirect when redirecting from '${this.urlTree}' to '${route.redirectTo}'.\n` +
3820
+ `This is currently a dev mode only error but will become a` +
3821
+ ` call stack size exceeded error in production in a future major version.`);
3822
+ }
3823
+ this.allowRedirects = false;
3824
+ }
3825
+ }
3820
3826
  const newTree = this.applyRedirects.applyRedirectCommands(consumedSegments, route.redirectTo, positionalParamSegments);
3821
3827
  return this.applyRedirects.lineralizeSegments(route, newTree)
3822
3828
  .pipe(mergeMap((newSegments) => {
@@ -4092,10 +4098,10 @@ class TitleStrategy {
4092
4098
  getResolvedTitleForRoute(snapshot) {
4093
4099
  return snapshot.data[RouteTitleKey];
4094
4100
  }
4095
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: TitleStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4096
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: TitleStrategy, providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy) }); }
4101
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: TitleStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4102
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: TitleStrategy, providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy) }); }
4097
4103
  }
4098
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: TitleStrategy, decorators: [{
4104
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: TitleStrategy, decorators: [{
4099
4105
  type: Injectable,
4100
4106
  args: [{ providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy) }]
4101
4107
  }] });
@@ -4118,13 +4124,13 @@ class DefaultTitleStrategy extends TitleStrategy {
4118
4124
  this.title.setTitle(title);
4119
4125
  }
4120
4126
  }
4121
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: DefaultTitleStrategy, deps: [{ token: i1.Title }], target: i0.ɵɵFactoryTarget.Injectable }); }
4122
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: DefaultTitleStrategy, providedIn: 'root' }); }
4127
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: DefaultTitleStrategy, deps: [{ token: i1.Title }], target: i0.ɵɵFactoryTarget.Injectable }); }
4128
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: DefaultTitleStrategy, providedIn: 'root' }); }
4123
4129
  }
4124
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: DefaultTitleStrategy, decorators: [{
4130
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: DefaultTitleStrategy, decorators: [{
4125
4131
  type: Injectable,
4126
4132
  args: [{ providedIn: 'root' }]
4127
- }], ctorParameters: function () { return [{ type: i1.Title }]; } });
4133
+ }], ctorParameters: () => [{ type: i1.Title }] });
4128
4134
 
4129
4135
  /**
4130
4136
  * A [DI token](guide/glossary/#di-token) for the router service.
@@ -4199,10 +4205,10 @@ class RouterConfigLoader {
4199
4205
  this.childrenLoaders.set(route, loader);
4200
4206
  return loader;
4201
4207
  }
4202
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouterConfigLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4203
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouterConfigLoader, providedIn: 'root' }); }
4208
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterConfigLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4209
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterConfigLoader, providedIn: 'root' }); }
4204
4210
  }
4205
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouterConfigLoader, decorators: [{
4211
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterConfigLoader, decorators: [{
4206
4212
  type: Injectable,
4207
4213
  args: [{ providedIn: 'root' }]
4208
4214
  }] });
@@ -4270,10 +4276,10 @@ function maybeUnwrapDefaultExport(input) {
4270
4276
  * @publicApi
4271
4277
  */
4272
4278
  class UrlHandlingStrategy {
4273
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: UrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4274
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: UrlHandlingStrategy, providedIn: 'root', useFactory: () => inject(DefaultUrlHandlingStrategy) }); }
4279
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: UrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4280
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: UrlHandlingStrategy, providedIn: 'root', useFactory: () => inject(DefaultUrlHandlingStrategy) }); }
4275
4281
  }
4276
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: UrlHandlingStrategy, decorators: [{
4282
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: UrlHandlingStrategy, decorators: [{
4277
4283
  type: Injectable,
4278
4284
  args: [{ providedIn: 'root', useFactory: () => inject(DefaultUrlHandlingStrategy) }]
4279
4285
  }] });
@@ -4290,16 +4296,17 @@ class DefaultUrlHandlingStrategy {
4290
4296
  merge(newUrlPart, wholeUrl) {
4291
4297
  return newUrlPart;
4292
4298
  }
4293
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: DefaultUrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4294
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: DefaultUrlHandlingStrategy, providedIn: 'root' }); }
4299
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: DefaultUrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4300
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: DefaultUrlHandlingStrategy, providedIn: 'root' }); }
4295
4301
  }
4296
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: DefaultUrlHandlingStrategy, decorators: [{
4302
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: DefaultUrlHandlingStrategy, decorators: [{
4297
4303
  type: Injectable,
4298
4304
  args: [{ providedIn: 'root' }]
4299
4305
  }] });
4300
4306
 
4301
4307
  /// <reference types="@types/dom-view-transitions" />
4302
4308
  const CREATE_VIEW_TRANSITION = new InjectionToken(ngDevMode ? 'view transition helper' : '');
4309
+ const VIEW_TRANSITION_OPTIONS = new InjectionToken(ngDevMode ? 'view transition options' : '');
4303
4310
  /**
4304
4311
  * A helper function for using browser view transitions. This function skips the call to
4305
4312
  * `startViewTransition` if the browser does not support it.
@@ -4307,10 +4314,12 @@ const CREATE_VIEW_TRANSITION = new InjectionToken(ngDevMode ? 'view transition h
4307
4314
  * @returns A Promise that resolves when the view transition callback begins.
4308
4315
  */
4309
4316
  function createViewTransition(injector) {
4317
+ const transitionOptions = injector.get(VIEW_TRANSITION_OPTIONS);
4318
+ const document = injector.get(DOCUMENT);
4310
4319
  // Create promises outside the Angular zone to avoid causing extra change detections
4311
4320
  return injector.get(NgZone).runOutsideAngular(() => {
4312
- const document = injector.get(DOCUMENT);
4313
- if (!document.startViewTransition) {
4321
+ if (!document.startViewTransition || transitionOptions.skipNextTransition) {
4322
+ transitionOptions.skipNextTransition = false;
4314
4323
  return Promise.resolve();
4315
4324
  }
4316
4325
  let resolveViewTransitionStarted;
@@ -4690,13 +4699,13 @@ class NavigationTransitions {
4690
4699
  return extractedBrowserUrl.toString() !== this.currentTransition?.extractedUrl.toString() &&
4691
4700
  !this.currentTransition?.extras.skipLocationChange;
4692
4701
  }
4693
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: NavigationTransitions, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4694
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: NavigationTransitions, providedIn: 'root' }); }
4702
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: NavigationTransitions, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4703
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: NavigationTransitions, providedIn: 'root' }); }
4695
4704
  }
4696
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: NavigationTransitions, decorators: [{
4705
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: NavigationTransitions, decorators: [{
4697
4706
  type: Injectable,
4698
4707
  args: [{ providedIn: 'root' }]
4699
- }], ctorParameters: function () { return []; } });
4708
+ }], ctorParameters: () => [] });
4700
4709
  function isBrowserTriggeredNavigation(source) {
4701
4710
  return source !== IMPERATIVE_NAVIGATION;
4702
4711
  }
@@ -4709,10 +4718,10 @@ function isBrowserTriggeredNavigation(source) {
4709
4718
  * @publicApi
4710
4719
  */
4711
4720
  class RouteReuseStrategy {
4712
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouteReuseStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4713
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouteReuseStrategy, providedIn: 'root', useFactory: () => inject(DefaultRouteReuseStrategy) }); }
4721
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouteReuseStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4722
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouteReuseStrategy, providedIn: 'root', useFactory: () => inject(DefaultRouteReuseStrategy) }); }
4714
4723
  }
4715
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouteReuseStrategy, decorators: [{
4724
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouteReuseStrategy, decorators: [{
4716
4725
  type: Injectable,
4717
4726
  args: [{ providedIn: 'root', useFactory: () => inject(DefaultRouteReuseStrategy) }]
4718
4727
  }] });
@@ -4763,10 +4772,10 @@ class BaseRouteReuseStrategy {
4763
4772
  }
4764
4773
  }
4765
4774
  class DefaultRouteReuseStrategy extends BaseRouteReuseStrategy {
4766
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: DefaultRouteReuseStrategy, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
4767
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: DefaultRouteReuseStrategy, providedIn: 'root' }); }
4775
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: DefaultRouteReuseStrategy, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
4776
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: DefaultRouteReuseStrategy, providedIn: 'root' }); }
4768
4777
  }
4769
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: DefaultRouteReuseStrategy, decorators: [{
4778
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: DefaultRouteReuseStrategy, decorators: [{
4770
4779
  type: Injectable,
4771
4780
  args: [{ providedIn: 'root' }]
4772
4781
  }] });
@@ -4960,10 +4969,10 @@ class StateManager {
4960
4969
  }
4961
4970
  return { navigationId };
4962
4971
  }
4963
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: StateManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4964
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: StateManager, providedIn: 'root' }); }
4972
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: StateManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4973
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: StateManager, providedIn: 'root' }); }
4965
4974
  }
4966
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: StateManager, decorators: [{
4975
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: StateManager, decorators: [{
4967
4976
  type: Injectable,
4968
4977
  args: [{ providedIn: 'root' }]
4969
4978
  }] });
@@ -5539,13 +5548,13 @@ class Router {
5539
5548
  return Promise.reject(e);
5540
5549
  });
5541
5550
  }
5542
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: Router, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5543
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: Router, providedIn: 'root' }); }
5551
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: Router, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5552
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: Router, providedIn: 'root' }); }
5544
5553
  }
5545
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: Router, decorators: [{
5554
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: Router, decorators: [{
5546
5555
  type: Injectable,
5547
5556
  args: [{ providedIn: 'root' }]
5548
- }], ctorParameters: function () { return []; } });
5557
+ }], ctorParameters: () => [] });
5549
5558
  function validateCommands(commands) {
5550
5559
  for (let i = 0; i < commands.length; i++) {
5551
5560
  const cmd = commands[i];
@@ -5813,19 +5822,19 @@ class RouterLink {
5813
5822
  preserveFragment: this.preserveFragment,
5814
5823
  });
5815
5824
  }
5816
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.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 }); }
5817
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.0.0-next.5", type: RouterLink, isStandalone: true, selector: "[routerLink]", inputs: { target: "target", queryParams: "queryParams", fragment: "fragment", queryParamsHandling: "queryParamsHandling", state: "state", relativeTo: "relativeTo", preserveFragment: ["preserveFragment", "preserveFragment", booleanAttribute], skipLocationChange: ["skipLocationChange", "skipLocationChange", booleanAttribute], replaceUrl: ["replaceUrl", "replaceUrl", booleanAttribute], routerLink: "routerLink" }, host: { listeners: { "click": "onClick($event.button,$event.ctrlKey,$event.shiftKey,$event.altKey,$event.metaKey)" }, properties: { "attr.target": "this.target" } }, usesOnChanges: true, ngImport: i0 }); }
5825
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", 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 }); }
5826
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.0.0-next.6", type: RouterLink, isStandalone: true, selector: "[routerLink]", inputs: { target: "target", queryParams: "queryParams", fragment: "fragment", queryParamsHandling: "queryParamsHandling", state: "state", relativeTo: "relativeTo", preserveFragment: ["preserveFragment", "preserveFragment", booleanAttribute], skipLocationChange: ["skipLocationChange", "skipLocationChange", booleanAttribute], replaceUrl: ["replaceUrl", "replaceUrl", booleanAttribute], routerLink: "routerLink" }, host: { listeners: { "click": "onClick($event.button,$event.ctrlKey,$event.shiftKey,$event.altKey,$event.metaKey)" }, properties: { "attr.target": "this.target" } }, usesOnChanges: true, ngImport: i0 }); }
5818
5827
  }
5819
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouterLink, decorators: [{
5828
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterLink, decorators: [{
5820
5829
  type: Directive,
5821
5830
  args: [{
5822
5831
  selector: '[routerLink]',
5823
5832
  standalone: true,
5824
5833
  }]
5825
- }], ctorParameters: function () { return [{ type: Router }, { type: ActivatedRoute }, { type: undefined, decorators: [{
5834
+ }], ctorParameters: () => [{ type: Router }, { type: ActivatedRoute }, { type: undefined, decorators: [{
5826
5835
  type: Attribute,
5827
5836
  args: ['tabindex']
5828
- }] }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i3.LocationStrategy }]; }, propDecorators: { target: [{
5837
+ }] }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i3.LocationStrategy }], propDecorators: { target: [{
5829
5838
  type: HostBinding,
5830
5839
  args: ['attr.target']
5831
5840
  }, {
@@ -6039,19 +6048,19 @@ class RouterLinkActive {
6039
6048
  const isActiveCheckFn = this.isLinkActive(this.router);
6040
6049
  return this.link && isActiveCheckFn(this.link) || this.links.some(isActiveCheckFn);
6041
6050
  }
6042
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouterLinkActive, deps: [{ token: Router }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: RouterLink, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
6043
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.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 }], exportAs: ["routerLinkActive"], usesOnChanges: true, ngImport: i0 }); }
6051
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterLinkActive, deps: [{ token: Router }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: RouterLink, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
6052
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.0-next.6", 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 }); }
6044
6053
  }
6045
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouterLinkActive, decorators: [{
6054
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterLinkActive, decorators: [{
6046
6055
  type: Directive,
6047
6056
  args: [{
6048
6057
  selector: '[routerLinkActive]',
6049
6058
  exportAs: 'routerLinkActive',
6050
6059
  standalone: true,
6051
6060
  }]
6052
- }], ctorParameters: function () { return [{ type: Router }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: RouterLink, decorators: [{
6061
+ }], ctorParameters: () => [{ type: Router }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: RouterLink, decorators: [{
6053
6062
  type: Optional
6054
- }] }]; }, propDecorators: { links: [{
6063
+ }] }], propDecorators: { links: [{
6055
6064
  type: ContentChildren,
6056
6065
  args: [RouterLink, { descendants: true }]
6057
6066
  }], routerLinkActiveOptions: [{
@@ -6094,10 +6103,10 @@ class PreloadAllModules {
6094
6103
  preload(route, fn) {
6095
6104
  return fn().pipe(catchError(() => of(null)));
6096
6105
  }
6097
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: PreloadAllModules, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
6098
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: PreloadAllModules, providedIn: 'root' }); }
6106
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: PreloadAllModules, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
6107
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: PreloadAllModules, providedIn: 'root' }); }
6099
6108
  }
6100
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: PreloadAllModules, decorators: [{
6109
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: PreloadAllModules, decorators: [{
6101
6110
  type: Injectable,
6102
6111
  args: [{ providedIn: 'root' }]
6103
6112
  }] });
@@ -6114,10 +6123,10 @@ class NoPreloading {
6114
6123
  preload(route, fn) {
6115
6124
  return of(null);
6116
6125
  }
6117
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: NoPreloading, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
6118
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: NoPreloading, providedIn: 'root' }); }
6126
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: NoPreloading, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
6127
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: NoPreloading, providedIn: 'root' }); }
6119
6128
  }
6120
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: NoPreloading, decorators: [{
6129
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: NoPreloading, decorators: [{
6121
6130
  type: Injectable,
6122
6131
  args: [{ providedIn: 'root' }]
6123
6132
  }] });
@@ -6210,13 +6219,13 @@ class RouterPreloader {
6210
6219
  }
6211
6220
  });
6212
6221
  }
6213
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.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 }); }
6214
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouterPreloader, providedIn: 'root' }); }
6222
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterPreloader, deps: [{ token: Router }, { token: i0.Compiler }, { token: i0.EnvironmentInjector }, { token: PreloadingStrategy }, { token: RouterConfigLoader }], target: i0.ɵɵFactoryTarget.Injectable }); }
6223
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterPreloader, providedIn: 'root' }); }
6215
6224
  }
6216
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouterPreloader, decorators: [{
6225
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterPreloader, decorators: [{
6217
6226
  type: Injectable,
6218
6227
  args: [{ providedIn: 'root' }]
6219
- }], ctorParameters: function () { return [{ type: Router }, { type: i0.Compiler }, { type: i0.EnvironmentInjector }, { type: PreloadingStrategy }, { type: RouterConfigLoader }]; } });
6228
+ }], ctorParameters: () => [{ type: Router }, { type: i0.Compiler }, { type: i0.EnvironmentInjector }, { type: PreloadingStrategy }, { type: RouterConfigLoader }] });
6220
6229
 
6221
6230
  const ROUTER_SCROLLER = new InjectionToken('');
6222
6231
  class RouterScroller {
@@ -6306,12 +6315,12 @@ class RouterScroller {
6306
6315
  this.routerEventsSubscription?.unsubscribe();
6307
6316
  this.scrollEventsSubscription?.unsubscribe();
6308
6317
  }
6309
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouterScroller, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable }); }
6310
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouterScroller }); }
6318
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterScroller, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable }); }
6319
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterScroller }); }
6311
6320
  }
6312
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouterScroller, decorators: [{
6321
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterScroller, decorators: [{
6313
6322
  type: Injectable
6314
- }], ctorParameters: function () { return [{ type: UrlSerializer }, { type: NavigationTransitions }, { type: i3.ViewportScroller }, { type: i0.NgZone }, { type: undefined }]; } });
6323
+ }], ctorParameters: () => [{ type: UrlSerializer }, { type: NavigationTransitions }, { type: i3.ViewportScroller }, { type: i0.NgZone }, { type: undefined }] });
6315
6324
 
6316
6325
  /**
6317
6326
  * Sets up providers necessary to enable `Router` functionality for the application.
@@ -6826,8 +6835,14 @@ function withComponentInputBinding() {
6826
6835
  * @see https://developer.mozilla.org/en-US/docs/Web/API/View_Transitions_API
6827
6836
  * @experimental
6828
6837
  */
6829
- function withViewTransitions() {
6830
- const providers = [{ provide: CREATE_VIEW_TRANSITION, useValue: createViewTransition }];
6838
+ function withViewTransitions(options) {
6839
+ const providers = [
6840
+ { provide: CREATE_VIEW_TRANSITION, useValue: createViewTransition },
6841
+ {
6842
+ provide: VIEW_TRANSITION_OPTIONS,
6843
+ useValue: { skipNextTransition: !!options?.skipInitialTransition }
6844
+ },
6845
+ ];
6831
6846
  return routerFeature(9 /* RouterFeatureKind.ViewTransitionsFeature */, providers);
6832
6847
  }
6833
6848
 
@@ -6948,22 +6963,22 @@ class RouterModule {
6948
6963
  providers: [{ provide: ROUTES, multi: true, useValue: routes }],
6949
6964
  };
6950
6965
  }
6951
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouterModule, deps: [{ token: ROUTER_FORROOT_GUARD, optional: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
6952
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouterModule, imports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent], exports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent] }); }
6953
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouterModule }); }
6966
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterModule, deps: [{ token: ROUTER_FORROOT_GUARD, optional: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
6967
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterModule, imports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent], exports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent] }); }
6968
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterModule }); }
6954
6969
  }
6955
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.5", ngImport: i0, type: RouterModule, decorators: [{
6970
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.6", ngImport: i0, type: RouterModule, decorators: [{
6956
6971
  type: NgModule,
6957
6972
  args: [{
6958
6973
  imports: ROUTER_DIRECTIVES,
6959
6974
  exports: ROUTER_DIRECTIVES,
6960
6975
  }]
6961
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
6976
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
6962
6977
  type: Optional
6963
6978
  }, {
6964
6979
  type: Inject,
6965
6980
  args: [ROUTER_FORROOT_GUARD]
6966
- }] }]; } });
6981
+ }] }] });
6967
6982
  /**
6968
6983
  * For internal use by `RouterModule` only. Note that this differs from `withInMemoryRouterScroller`
6969
6984
  * because it reads from the `ExtraOptions` which should not be used in the standalone world.
@@ -7097,7 +7112,7 @@ function mapToResolve(provider) {
7097
7112
  /**
7098
7113
  * @publicApi
7099
7114
  */
7100
- const VERSION = new Version('17.0.0-next.5');
7115
+ const VERSION = new Version('17.0.0-next.6');
7101
7116
 
7102
7117
  /**
7103
7118
  * @module