@angular/router 17.0.0-next.7 → 17.0.0-rc.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.
- package/esm2022/src/components/empty_outlet.mjs +3 -3
- package/esm2022/src/directives/router_link.mjs +3 -3
- package/esm2022/src/directives/router_link_active.mjs +3 -3
- package/esm2022/src/directives/router_outlet.mjs +6 -6
- package/esm2022/src/index.mjs +1 -1
- package/esm2022/src/navigation_transition.mjs +6 -5
- package/esm2022/src/page_title_strategy.mjs +6 -6
- package/esm2022/src/provide_router.mjs +3 -3
- package/esm2022/src/route_reuse_strategy.mjs +6 -6
- package/esm2022/src/router.mjs +18 -21
- package/esm2022/src/router_config.mjs +1 -1
- package/esm2022/src/router_config_loader.mjs +3 -3
- package/esm2022/src/router_module.mjs +6 -10
- package/esm2022/src/router_outlet_context.mjs +3 -3
- package/esm2022/src/router_preloader.mjs +9 -9
- package/esm2022/src/router_scroller.mjs +3 -3
- package/esm2022/src/router_state.mjs +2 -2
- package/esm2022/src/statemanager/state_manager.mjs +204 -0
- package/esm2022/src/url_handling_strategy.mjs +6 -6
- package/esm2022/src/url_tree.mjs +3 -3
- package/esm2022/src/utils/view_transition.mjs +12 -4
- package/esm2022/src/version.mjs +1 -1
- package/esm2022/testing/src/router_testing_harness.mjs +6 -6
- package/esm2022/testing/src/router_testing_module.mjs +4 -4
- package/fesm2022/router.mjs +128 -134
- package/fesm2022/router.mjs.map +1 -1
- package/fesm2022/testing.mjs +11 -11
- package/fesm2022/upgrade.mjs +1 -1
- package/index.d.ts +56 -7
- package/package.json +4 -4
- package/testing/index.d.ts +1 -1
- package/upgrade/index.d.ts +1 -1
- package/esm2022/src/state_manager.mjs +0 -212
package/fesm2022/router.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v17.0.0-
|
|
2
|
+
* @license Angular v17.0.0-rc.0
|
|
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 { ɵisPromise, ɵRuntimeError, Injectable, EventEmitter, inject, ViewContainerRef, ChangeDetectorRef, EnvironmentInjector, Directive, Input, Output, InjectionToken, reflectComponentType, Component, createEnvironmentInjector, ɵisNgModule, isStandalone, ɵisInjectable, Compiler, NgModuleFactory, NgZone, afterNextRender, ɵConsole, ɵInitialRenderPendingTasks, ɵɵsanitizeUrlOrResourceUrl, booleanAttribute, Attribute, HostBinding, HostListener, Optional, ContentChildren, makeEnvironmentProviders, APP_BOOTSTRAP_LISTENER, ENVIRONMENT_INITIALIZER, Injector, ApplicationRef, InjectFlags, APP_INITIALIZER,
|
|
8
|
+
import { ɵisPromise, ɵRuntimeError, Injectable, EventEmitter, inject, ViewContainerRef, ChangeDetectorRef, EnvironmentInjector, Directive, Input, Output, InjectionToken, reflectComponentType, Component, createEnvironmentInjector, ɵisNgModule, isStandalone, ɵisInjectable, Compiler, NgModuleFactory, NgZone, runInInjectionContext, afterNextRender, ɵConsole, ɵInitialRenderPendingTasks, ɵɵsanitizeUrlOrResourceUrl, booleanAttribute, Attribute, HostBinding, HostListener, Optional, ContentChildren, makeEnvironmentProviders, APP_BOOTSTRAP_LISTENER, ENVIRONMENT_INITIALIZER, Injector, ApplicationRef, InjectFlags, APP_INITIALIZER, SkipSelf, NgModule, Inject, Version } from '@angular/core';
|
|
9
9
|
import { isObservable, from, of, BehaviorSubject, combineLatest, EmptyError, concat, defer, pipe, throwError, EMPTY, ConnectableObservable, Subject, Subscription } from 'rxjs';
|
|
10
10
|
import * as i3 from '@angular/common';
|
|
11
11
|
import { DOCUMENT, Location, ViewportScroller, LOCATION_INITIALIZED, LocationStrategy, HashLocationStrategy, PathLocationStrategy } from '@angular/common';
|
|
@@ -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-
|
|
429
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-
|
|
428
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: UrlSerializer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
429
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: UrlSerializer, providedIn: 'root', useFactory: () => new DefaultUrlSerializer() }); }
|
|
430
430
|
}
|
|
431
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-
|
|
431
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", 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-
|
|
1789
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-
|
|
1788
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: ChildrenOutletContexts, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1789
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: ChildrenOutletContexts, providedIn: 'root' }); }
|
|
1790
1790
|
}
|
|
1791
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-
|
|
1791
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: ChildrenOutletContexts, decorators: [{
|
|
1792
1792
|
type: Injectable,
|
|
1793
1793
|
args: [{ providedIn: 'root' }]
|
|
1794
1794
|
}] });
|
|
@@ -2063,7 +2063,7 @@ function inheritedParamsDataResolve(route, paramsInheritanceStrategy = 'emptyOnl
|
|
|
2063
2063
|
inheritingStartingFrom--;
|
|
2064
2064
|
// parent is componentless => current route should inherit its params and data
|
|
2065
2065
|
}
|
|
2066
|
-
else if (!parent.component) {
|
|
2066
|
+
else if (!parent.component && parent.routeConfig?.loadComponent === undefined) {
|
|
2067
2067
|
inheritingStartingFrom--;
|
|
2068
2068
|
}
|
|
2069
2069
|
else {
|
|
@@ -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-
|
|
2499
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.0-
|
|
2498
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: RouterOutlet, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2499
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.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 }); }
|
|
2500
2500
|
}
|
|
2501
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-
|
|
2501
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", 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-
|
|
2605
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-
|
|
2604
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: RoutedComponentInputBinder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2605
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: RoutedComponentInputBinder }); }
|
|
2606
2606
|
}
|
|
2607
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-
|
|
2607
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", 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-
|
|
2688
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.0-
|
|
2687
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: ɵEmptyOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2688
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.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"] }] }); }
|
|
2689
2689
|
}
|
|
2690
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-
|
|
2690
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: ɵEmptyOutletComponent, decorators: [{
|
|
2691
2691
|
type: Component,
|
|
2692
2692
|
args: [{
|
|
2693
2693
|
template: `<router-outlet></router-outlet>`,
|
|
@@ -4098,10 +4098,10 @@ class TitleStrategy {
|
|
|
4098
4098
|
getResolvedTitleForRoute(snapshot) {
|
|
4099
4099
|
return snapshot.data[RouteTitleKey];
|
|
4100
4100
|
}
|
|
4101
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-
|
|
4102
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-
|
|
4101
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: TitleStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4102
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: TitleStrategy, providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy) }); }
|
|
4103
4103
|
}
|
|
4104
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-
|
|
4104
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: TitleStrategy, decorators: [{
|
|
4105
4105
|
type: Injectable,
|
|
4106
4106
|
args: [{ providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy) }]
|
|
4107
4107
|
}] });
|
|
@@ -4124,10 +4124,10 @@ class DefaultTitleStrategy extends TitleStrategy {
|
|
|
4124
4124
|
this.title.setTitle(title);
|
|
4125
4125
|
}
|
|
4126
4126
|
}
|
|
4127
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-
|
|
4128
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-
|
|
4127
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.0", 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-rc.0", ngImport: i0, type: DefaultTitleStrategy, providedIn: 'root' }); }
|
|
4129
4129
|
}
|
|
4130
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-
|
|
4130
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: DefaultTitleStrategy, decorators: [{
|
|
4131
4131
|
type: Injectable,
|
|
4132
4132
|
args: [{ providedIn: 'root' }]
|
|
4133
4133
|
}], ctorParameters: () => [{ type: i1.Title }] });
|
|
@@ -4205,10 +4205,10 @@ class RouterConfigLoader {
|
|
|
4205
4205
|
this.childrenLoaders.set(route, loader);
|
|
4206
4206
|
return loader;
|
|
4207
4207
|
}
|
|
4208
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-
|
|
4209
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-
|
|
4208
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: RouterConfigLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4209
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: RouterConfigLoader, providedIn: 'root' }); }
|
|
4210
4210
|
}
|
|
4211
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-
|
|
4211
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: RouterConfigLoader, decorators: [{
|
|
4212
4212
|
type: Injectable,
|
|
4213
4213
|
args: [{ providedIn: 'root' }]
|
|
4214
4214
|
}] });
|
|
@@ -4276,10 +4276,10 @@ function maybeUnwrapDefaultExport(input) {
|
|
|
4276
4276
|
* @publicApi
|
|
4277
4277
|
*/
|
|
4278
4278
|
class UrlHandlingStrategy {
|
|
4279
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-
|
|
4280
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-
|
|
4279
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: UrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4280
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: UrlHandlingStrategy, providedIn: 'root', useFactory: () => inject(DefaultUrlHandlingStrategy) }); }
|
|
4281
4281
|
}
|
|
4282
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-
|
|
4282
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: UrlHandlingStrategy, decorators: [{
|
|
4283
4283
|
type: Injectable,
|
|
4284
4284
|
args: [{ providedIn: 'root', useFactory: () => inject(DefaultUrlHandlingStrategy) }]
|
|
4285
4285
|
}] });
|
|
@@ -4296,10 +4296,10 @@ class DefaultUrlHandlingStrategy {
|
|
|
4296
4296
|
merge(newUrlPart, wholeUrl) {
|
|
4297
4297
|
return newUrlPart;
|
|
4298
4298
|
}
|
|
4299
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-
|
|
4300
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-
|
|
4299
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: DefaultUrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4300
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: DefaultUrlHandlingStrategy, providedIn: 'root' }); }
|
|
4301
4301
|
}
|
|
4302
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-
|
|
4302
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: DefaultUrlHandlingStrategy, decorators: [{
|
|
4303
4303
|
type: Injectable,
|
|
4304
4304
|
args: [{ providedIn: 'root' }]
|
|
4305
4305
|
}] });
|
|
@@ -4313,7 +4313,7 @@ const VIEW_TRANSITION_OPTIONS = new InjectionToken(ngDevMode ? 'view transition
|
|
|
4313
4313
|
*
|
|
4314
4314
|
* @returns A Promise that resolves when the view transition callback begins.
|
|
4315
4315
|
*/
|
|
4316
|
-
function createViewTransition(injector) {
|
|
4316
|
+
function createViewTransition(injector, from, to) {
|
|
4317
4317
|
const transitionOptions = injector.get(VIEW_TRANSITION_OPTIONS);
|
|
4318
4318
|
const document = injector.get(DOCUMENT);
|
|
4319
4319
|
// Create promises outside the Angular zone to avoid causing extra change detections
|
|
@@ -4326,10 +4326,18 @@ function createViewTransition(injector) {
|
|
|
4326
4326
|
const viewTransitionStarted = new Promise((resolve) => {
|
|
4327
4327
|
resolveViewTransitionStarted = resolve;
|
|
4328
4328
|
});
|
|
4329
|
-
document.startViewTransition(() => {
|
|
4329
|
+
const transition = document.startViewTransition(() => {
|
|
4330
4330
|
resolveViewTransitionStarted();
|
|
4331
|
+
// We don't actually update dom within the transition callback. The resolving of the above
|
|
4332
|
+
// promise unblocks the Router navigation, which synchronously activates and deactivates
|
|
4333
|
+
// routes (the DOM update). This view transition waits for the next change detection to
|
|
4334
|
+
// complete (below), which includes the update phase of the routed components.
|
|
4331
4335
|
return createRenderPromise(injector);
|
|
4332
4336
|
});
|
|
4337
|
+
const { onViewTransitionCreated } = transitionOptions;
|
|
4338
|
+
if (onViewTransitionCreated) {
|
|
4339
|
+
runInInjectionContext(injector, () => onViewTransitionCreated({ transition, from, to }));
|
|
4340
|
+
}
|
|
4333
4341
|
return viewTransitionStarted;
|
|
4334
4342
|
});
|
|
4335
4343
|
}
|
|
@@ -4578,7 +4586,8 @@ class NavigationTransitions {
|
|
|
4578
4586
|
return combineLatest(loadComponents(t.targetSnapshot.root))
|
|
4579
4587
|
.pipe(defaultIfEmpty(), take(1));
|
|
4580
4588
|
}), switchTap(() => this.afterPreactivation()), switchMap(() => {
|
|
4581
|
-
const
|
|
4589
|
+
const { currentSnapshot, targetSnapshot } = overallTransitionState;
|
|
4590
|
+
const viewTransitionStarted = this.createViewTransition?.(this.environmentInjector, currentSnapshot.root, targetSnapshot.root);
|
|
4582
4591
|
// If view transitions are enabled, block the navigation until the view
|
|
4583
4592
|
// transition callback starts. Otherwise, continue immediately.
|
|
4584
4593
|
return viewTransitionStarted ?
|
|
@@ -4699,10 +4708,10 @@ class NavigationTransitions {
|
|
|
4699
4708
|
return extractedBrowserUrl.toString() !== this.currentTransition?.extractedUrl.toString() &&
|
|
4700
4709
|
!this.currentTransition?.extras.skipLocationChange;
|
|
4701
4710
|
}
|
|
4702
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-
|
|
4703
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-
|
|
4711
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: NavigationTransitions, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4712
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: NavigationTransitions, providedIn: 'root' }); }
|
|
4704
4713
|
}
|
|
4705
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-
|
|
4714
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: NavigationTransitions, decorators: [{
|
|
4706
4715
|
type: Injectable,
|
|
4707
4716
|
args: [{ providedIn: 'root' }]
|
|
4708
4717
|
}], ctorParameters: () => [] });
|
|
@@ -4718,10 +4727,10 @@ function isBrowserTriggeredNavigation(source) {
|
|
|
4718
4727
|
* @publicApi
|
|
4719
4728
|
*/
|
|
4720
4729
|
class RouteReuseStrategy {
|
|
4721
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-
|
|
4722
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-
|
|
4730
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: RouteReuseStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4731
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: RouteReuseStrategy, providedIn: 'root', useFactory: () => inject(DefaultRouteReuseStrategy) }); }
|
|
4723
4732
|
}
|
|
4724
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-
|
|
4733
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: RouteReuseStrategy, decorators: [{
|
|
4725
4734
|
type: Injectable,
|
|
4726
4735
|
args: [{ providedIn: 'root', useFactory: () => inject(DefaultRouteReuseStrategy) }]
|
|
4727
4736
|
}] });
|
|
@@ -4772,58 +4781,32 @@ class BaseRouteReuseStrategy {
|
|
|
4772
4781
|
}
|
|
4773
4782
|
}
|
|
4774
4783
|
class DefaultRouteReuseStrategy extends BaseRouteReuseStrategy {
|
|
4775
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-
|
|
4776
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-
|
|
4784
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: DefaultRouteReuseStrategy, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4785
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: DefaultRouteReuseStrategy, providedIn: 'root' }); }
|
|
4777
4786
|
}
|
|
4778
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-
|
|
4787
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: DefaultRouteReuseStrategy, decorators: [{
|
|
4779
4788
|
type: Injectable,
|
|
4780
4789
|
args: [{ providedIn: 'root' }]
|
|
4781
4790
|
}] });
|
|
4782
4791
|
|
|
4783
4792
|
class StateManager {
|
|
4793
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: StateManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4794
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: StateManager, providedIn: 'root', useFactory: () => inject(HistoryStateManager) }); }
|
|
4795
|
+
}
|
|
4796
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: StateManager, decorators: [{
|
|
4797
|
+
type: Injectable,
|
|
4798
|
+
args: [{ providedIn: 'root', useFactory: () => inject(HistoryStateManager) }]
|
|
4799
|
+
}] });
|
|
4800
|
+
class HistoryStateManager extends StateManager {
|
|
4784
4801
|
constructor() {
|
|
4802
|
+
super(...arguments);
|
|
4785
4803
|
this.location = inject(Location);
|
|
4786
4804
|
this.urlSerializer = inject(UrlSerializer);
|
|
4787
4805
|
this.options = inject(ROUTER_CONFIGURATION, { optional: true }) || {};
|
|
4788
4806
|
this.canceledNavigationResolution = this.options.canceledNavigationResolution || 'replace';
|
|
4789
|
-
// These are currently writable via the Router public API but are deprecated and should be made
|
|
4790
|
-
// `private readonly` in the future.
|
|
4791
4807
|
this.urlHandlingStrategy = inject(UrlHandlingStrategy);
|
|
4792
4808
|
this.urlUpdateStrategy = this.options.urlUpdateStrategy || 'deferred';
|
|
4793
|
-
/**
|
|
4794
|
-
* Represents the activated `UrlTree` that the `Router` is configured to handle (through
|
|
4795
|
-
* `UrlHandlingStrategy`). That is, after we find the route config tree that we're going to
|
|
4796
|
-
* activate, run guards, and are just about to activate the route, we set the currentUrlTree.
|
|
4797
|
-
* @internal
|
|
4798
|
-
*/
|
|
4799
4809
|
this.currentUrlTree = new UrlTree();
|
|
4800
|
-
/**
|
|
4801
|
-
* Meant to represent the entire browser url after a successful navigation. In the life of a
|
|
4802
|
-
* navigation transition:
|
|
4803
|
-
* 1. The rawUrl represents the full URL that's being navigated to
|
|
4804
|
-
* 2. We apply redirects, which might only apply to _part_ of the URL (due to
|
|
4805
|
-
* `UrlHandlingStrategy`).
|
|
4806
|
-
* 3. Right before activation (because we assume activation will succeed), we update the
|
|
4807
|
-
* rawUrlTree to be a combination of the urlAfterRedirects (again, this might only apply to part
|
|
4808
|
-
* of the initial url) and the rawUrl of the transition (which was the original navigation url in
|
|
4809
|
-
* its full form).
|
|
4810
|
-
* @internal
|
|
4811
|
-
*
|
|
4812
|
-
* Note that this is _only_ here to support `UrlHandlingStrategy.extract` and
|
|
4813
|
-
* `UrlHandlingStrategy.shouldProcessUrl`. If those didn't exist, we could get by with
|
|
4814
|
-
* `currentUrlTree` alone. If a new Router were to be provided (i.e. one that works with the
|
|
4815
|
-
* browser navigation API), we should think about whether this complexity should be carried over.
|
|
4816
|
-
*
|
|
4817
|
-
* - extract: `rawUrlTree` is needed because `extract` may only return part
|
|
4818
|
-
* of the navigation URL. Thus, `currentUrlTree` may only represent _part_ of the browser URL.
|
|
4819
|
-
* When a navigation gets cancelled and we need to reset the URL or a new navigation occurs, we
|
|
4820
|
-
* need to know the _whole_ browser URL, not just the part handled by UrlHandlingStrategy.
|
|
4821
|
-
* - shouldProcessUrl: When this returns `false`, the router just ignores the navigation but still
|
|
4822
|
-
* updates the `rawUrlTree` with the assumption that the navigation was caused by the location
|
|
4823
|
-
* change listener due to a URL update by the AngularJS router. In this case, we still need to
|
|
4824
|
-
* know what the browser's URL is for future navigations.
|
|
4825
|
-
*
|
|
4826
|
-
*/
|
|
4827
4810
|
this.rawUrlTree = this.currentUrlTree;
|
|
4828
4811
|
/**
|
|
4829
4812
|
* The id of the currently active page in the router.
|
|
@@ -4838,6 +4821,15 @@ class StateManager {
|
|
|
4838
4821
|
this.routerState = createEmptyState(this.currentUrlTree, null);
|
|
4839
4822
|
this.stateMemento = this.createStateMemento();
|
|
4840
4823
|
}
|
|
4824
|
+
getCurrentUrlTree() {
|
|
4825
|
+
return this.currentUrlTree;
|
|
4826
|
+
}
|
|
4827
|
+
getRawUrlTree() {
|
|
4828
|
+
return this.rawUrlTree;
|
|
4829
|
+
}
|
|
4830
|
+
restoredState() {
|
|
4831
|
+
return this.location.getState();
|
|
4832
|
+
}
|
|
4841
4833
|
/**
|
|
4842
4834
|
* The ɵrouterPageId of whatever page is currently active in the browser history. This is
|
|
4843
4835
|
* important for computing the target page id for new navigations because we need to ensure each
|
|
@@ -4847,7 +4839,10 @@ class StateManager {
|
|
|
4847
4839
|
if (this.canceledNavigationResolution !== 'computed') {
|
|
4848
4840
|
return this.currentPageId;
|
|
4849
4841
|
}
|
|
4850
|
-
return this.
|
|
4842
|
+
return this.restoredState()?.ɵrouterPageId ?? this.currentPageId;
|
|
4843
|
+
}
|
|
4844
|
+
getRouterState() {
|
|
4845
|
+
return this.routerState;
|
|
4851
4846
|
}
|
|
4852
4847
|
createStateMemento() {
|
|
4853
4848
|
return {
|
|
@@ -4856,7 +4851,14 @@ class StateManager {
|
|
|
4856
4851
|
routerState: this.routerState,
|
|
4857
4852
|
};
|
|
4858
4853
|
}
|
|
4859
|
-
|
|
4854
|
+
registerNonRouterCurrentEntryChangeListener(listener) {
|
|
4855
|
+
return this.location.subscribe(event => {
|
|
4856
|
+
if (event['type'] === 'popstate') {
|
|
4857
|
+
listener(event['url'], event.state);
|
|
4858
|
+
}
|
|
4859
|
+
});
|
|
4860
|
+
}
|
|
4861
|
+
handleRouterEvent(e, currentTransition) {
|
|
4860
4862
|
if (e instanceof NavigationStart) {
|
|
4861
4863
|
this.stateMemento = this.createStateMemento();
|
|
4862
4864
|
}
|
|
@@ -4917,7 +4919,6 @@ class StateManager {
|
|
|
4917
4919
|
/**
|
|
4918
4920
|
* Performs the necessary rollback action to restore the browser URL to the
|
|
4919
4921
|
* state before the transition.
|
|
4920
|
-
* @internal
|
|
4921
4922
|
*/
|
|
4922
4923
|
restoreHistory(navigation, restoringFromCaughtError = false) {
|
|
4923
4924
|
if (this.canceledNavigationResolution === 'computed') {
|
|
@@ -4969,10 +4970,10 @@ class StateManager {
|
|
|
4969
4970
|
}
|
|
4970
4971
|
return { navigationId };
|
|
4971
4972
|
}
|
|
4972
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-
|
|
4973
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-
|
|
4973
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: HistoryStateManager, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4974
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: HistoryStateManager, providedIn: 'root' }); }
|
|
4974
4975
|
}
|
|
4975
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-
|
|
4976
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: HistoryStateManager, decorators: [{
|
|
4976
4977
|
type: Injectable,
|
|
4977
4978
|
args: [{ providedIn: 'root' }]
|
|
4978
4979
|
}] });
|
|
@@ -5047,10 +5048,10 @@ const subsetMatchOptions = {
|
|
|
5047
5048
|
*/
|
|
5048
5049
|
class Router {
|
|
5049
5050
|
get currentUrlTree() {
|
|
5050
|
-
return this.stateManager.
|
|
5051
|
+
return this.stateManager.getCurrentUrlTree();
|
|
5051
5052
|
}
|
|
5052
5053
|
get rawUrlTree() {
|
|
5053
|
-
return this.stateManager.
|
|
5054
|
+
return this.stateManager.getRawUrlTree();
|
|
5054
5055
|
}
|
|
5055
5056
|
/**
|
|
5056
5057
|
* An event stream for routing events.
|
|
@@ -5066,7 +5067,7 @@ class Router {
|
|
|
5066
5067
|
* The current state of routing in this NgModule.
|
|
5067
5068
|
*/
|
|
5068
5069
|
get routerState() {
|
|
5069
|
-
return this.stateManager.
|
|
5070
|
+
return this.stateManager.getRouterState();
|
|
5070
5071
|
}
|
|
5071
5072
|
constructor() {
|
|
5072
5073
|
this.disposed = false;
|
|
@@ -5141,7 +5142,7 @@ class Router {
|
|
|
5141
5142
|
const currentTransition = this.navigationTransitions.currentTransition;
|
|
5142
5143
|
const currentNavigation = this.navigationTransitions.currentNavigation;
|
|
5143
5144
|
if (currentTransition !== null && currentNavigation !== null) {
|
|
5144
|
-
this.stateManager.
|
|
5145
|
+
this.stateManager.handleRouterEvent(e, currentNavigation);
|
|
5145
5146
|
if (e instanceof NavigationCancel && e.code !== 0 /* NavigationCancellationCode.Redirect */ &&
|
|
5146
5147
|
e.code !== 1 /* NavigationCancellationCode.SupersededByNewNavigation */) {
|
|
5147
5148
|
// It seems weird that `navigated` is set to `true` when the navigation is rejected,
|
|
@@ -5196,8 +5197,7 @@ class Router {
|
|
|
5196
5197
|
initialNavigation() {
|
|
5197
5198
|
this.setUpLocationChangeListener();
|
|
5198
5199
|
if (!this.navigationTransitions.hasRequestedNavigation) {
|
|
5199
|
-
|
|
5200
|
-
this.navigateToSyncWithBrowser(this.location.path(true), IMPERATIVE_NAVIGATION, state);
|
|
5200
|
+
this.navigateToSyncWithBrowser(this.location.path(true), IMPERATIVE_NAVIGATION, this.stateManager.restoredState());
|
|
5201
5201
|
}
|
|
5202
5202
|
}
|
|
5203
5203
|
/**
|
|
@@ -5209,17 +5209,15 @@ class Router {
|
|
|
5209
5209
|
// Don't need to use Zone.wrap any more, because zone.js
|
|
5210
5210
|
// already patch onPopState, so location change callback will
|
|
5211
5211
|
// run into ngZone
|
|
5212
|
-
if (!this.
|
|
5213
|
-
this.
|
|
5214
|
-
|
|
5215
|
-
if (source === 'popstate') {
|
|
5212
|
+
if (!this.nonRouterCurrentEntryChangeSubscription) {
|
|
5213
|
+
this.nonRouterCurrentEntryChangeSubscription =
|
|
5214
|
+
this.stateManager.registerNonRouterCurrentEntryChangeListener((url, state) => {
|
|
5216
5215
|
// The `setTimeout` was added in #12160 and is likely to support Angular/AngularJS
|
|
5217
5216
|
// hybrid apps.
|
|
5218
5217
|
setTimeout(() => {
|
|
5219
|
-
this.navigateToSyncWithBrowser(
|
|
5218
|
+
this.navigateToSyncWithBrowser(url, 'popstate', state);
|
|
5220
5219
|
}, 0);
|
|
5221
|
-
}
|
|
5222
|
-
});
|
|
5220
|
+
});
|
|
5223
5221
|
}
|
|
5224
5222
|
}
|
|
5225
5223
|
/**
|
|
@@ -5298,9 +5296,9 @@ class Router {
|
|
|
5298
5296
|
/** Disposes of the router. */
|
|
5299
5297
|
dispose() {
|
|
5300
5298
|
this.navigationTransitions.complete();
|
|
5301
|
-
if (this.
|
|
5302
|
-
this.
|
|
5303
|
-
this.
|
|
5299
|
+
if (this.nonRouterCurrentEntryChangeSubscription) {
|
|
5300
|
+
this.nonRouterCurrentEntryChangeSubscription.unsubscribe();
|
|
5301
|
+
this.nonRouterCurrentEntryChangeSubscription = undefined;
|
|
5304
5302
|
}
|
|
5305
5303
|
this.disposed = true;
|
|
5306
5304
|
this.eventsSubscription.unsubscribe();
|
|
@@ -5548,10 +5546,10 @@ class Router {
|
|
|
5548
5546
|
return Promise.reject(e);
|
|
5549
5547
|
});
|
|
5550
5548
|
}
|
|
5551
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-
|
|
5552
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-
|
|
5549
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: Router, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
5550
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: Router, providedIn: 'root' }); }
|
|
5553
5551
|
}
|
|
5554
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-
|
|
5552
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: Router, decorators: [{
|
|
5555
5553
|
type: Injectable,
|
|
5556
5554
|
args: [{ providedIn: 'root' }]
|
|
5557
5555
|
}], ctorParameters: () => [] });
|
|
@@ -5822,10 +5820,10 @@ class RouterLink {
|
|
|
5822
5820
|
preserveFragment: this.preserveFragment,
|
|
5823
5821
|
});
|
|
5824
5822
|
}
|
|
5825
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-
|
|
5826
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.0.0-
|
|
5823
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.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 }); }
|
|
5824
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.0.0-rc.0", 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 }); }
|
|
5827
5825
|
}
|
|
5828
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-
|
|
5826
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: RouterLink, decorators: [{
|
|
5829
5827
|
type: Directive,
|
|
5830
5828
|
args: [{
|
|
5831
5829
|
selector: '[routerLink]',
|
|
@@ -6048,10 +6046,10 @@ class RouterLinkActive {
|
|
|
6048
6046
|
const isActiveCheckFn = this.isLinkActive(this.router);
|
|
6049
6047
|
return this.link && isActiveCheckFn(this.link) || this.links.some(isActiveCheckFn);
|
|
6050
6048
|
}
|
|
6051
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-
|
|
6052
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.0-
|
|
6049
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.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 }); }
|
|
6050
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.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 }); }
|
|
6053
6051
|
}
|
|
6054
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-
|
|
6052
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: RouterLinkActive, decorators: [{
|
|
6055
6053
|
type: Directive,
|
|
6056
6054
|
args: [{
|
|
6057
6055
|
selector: '[routerLinkActive]',
|
|
@@ -6103,10 +6101,10 @@ class PreloadAllModules {
|
|
|
6103
6101
|
preload(route, fn) {
|
|
6104
6102
|
return fn().pipe(catchError(() => of(null)));
|
|
6105
6103
|
}
|
|
6106
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-
|
|
6107
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-
|
|
6104
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: PreloadAllModules, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
6105
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: PreloadAllModules, providedIn: 'root' }); }
|
|
6108
6106
|
}
|
|
6109
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-
|
|
6107
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: PreloadAllModules, decorators: [{
|
|
6110
6108
|
type: Injectable,
|
|
6111
6109
|
args: [{ providedIn: 'root' }]
|
|
6112
6110
|
}] });
|
|
@@ -6123,10 +6121,10 @@ class NoPreloading {
|
|
|
6123
6121
|
preload(route, fn) {
|
|
6124
6122
|
return of(null);
|
|
6125
6123
|
}
|
|
6126
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-
|
|
6127
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-
|
|
6124
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: NoPreloading, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
6125
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: NoPreloading, providedIn: 'root' }); }
|
|
6128
6126
|
}
|
|
6129
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-
|
|
6127
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: NoPreloading, decorators: [{
|
|
6130
6128
|
type: Injectable,
|
|
6131
6129
|
args: [{ providedIn: 'root' }]
|
|
6132
6130
|
}] });
|
|
@@ -6219,10 +6217,10 @@ class RouterPreloader {
|
|
|
6219
6217
|
}
|
|
6220
6218
|
});
|
|
6221
6219
|
}
|
|
6222
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-
|
|
6223
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-
|
|
6220
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: RouterPreloader, deps: [{ token: Router }, { token: i0.Compiler }, { token: i0.EnvironmentInjector }, { token: PreloadingStrategy }, { token: RouterConfigLoader }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
6221
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: RouterPreloader, providedIn: 'root' }); }
|
|
6224
6222
|
}
|
|
6225
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-
|
|
6223
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: RouterPreloader, decorators: [{
|
|
6226
6224
|
type: Injectable,
|
|
6227
6225
|
args: [{ providedIn: 'root' }]
|
|
6228
6226
|
}], ctorParameters: () => [{ type: Router }, { type: i0.Compiler }, { type: i0.EnvironmentInjector }, { type: PreloadingStrategy }, { type: RouterConfigLoader }] });
|
|
@@ -6315,10 +6313,10 @@ class RouterScroller {
|
|
|
6315
6313
|
this.routerEventsSubscription?.unsubscribe();
|
|
6316
6314
|
this.scrollEventsSubscription?.unsubscribe();
|
|
6317
6315
|
}
|
|
6318
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-
|
|
6319
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-
|
|
6316
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: RouterScroller, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
6317
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: RouterScroller }); }
|
|
6320
6318
|
}
|
|
6321
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-
|
|
6319
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: RouterScroller, decorators: [{
|
|
6322
6320
|
type: Injectable
|
|
6323
6321
|
}], ctorParameters: () => [{ type: UrlSerializer }, { type: NavigationTransitions }, { type: i3.ViewportScroller }, { type: i0.NgZone }, { type: undefined }] });
|
|
6324
6322
|
|
|
@@ -6734,7 +6732,7 @@ function withHashLocation() {
|
|
|
6734
6732
|
const providers = [
|
|
6735
6733
|
{ provide: LocationStrategy, useClass: HashLocationStrategy },
|
|
6736
6734
|
];
|
|
6737
|
-
return routerFeature(
|
|
6735
|
+
return routerFeature(6 /* RouterFeatureKind.RouterHashLocationFeature */, providers);
|
|
6738
6736
|
}
|
|
6739
6737
|
/**
|
|
6740
6738
|
* Subscribes to the Router's navigation events and calls the given function when a
|
|
@@ -6840,7 +6838,7 @@ function withViewTransitions(options) {
|
|
|
6840
6838
|
{ provide: CREATE_VIEW_TRANSITION, useValue: createViewTransition },
|
|
6841
6839
|
{
|
|
6842
6840
|
provide: VIEW_TRANSITION_OPTIONS,
|
|
6843
|
-
useValue: { skipNextTransition: !!options?.skipInitialTransition }
|
|
6841
|
+
useValue: { skipNextTransition: !!options?.skipInitialTransition, ...options }
|
|
6844
6842
|
},
|
|
6845
6843
|
];
|
|
6846
6844
|
return routerFeature(9 /* RouterFeatureKind.ViewTransitionsFeature */, providers);
|
|
@@ -6871,9 +6869,6 @@ const ROUTER_PROVIDERS = [
|
|
|
6871
6869
|
(typeof ngDevMode === 'undefined' || ngDevMode) ? { provide: ROUTER_IS_PROVIDED, useValue: true } :
|
|
6872
6870
|
[],
|
|
6873
6871
|
];
|
|
6874
|
-
function routerNgProbeToken() {
|
|
6875
|
-
return new NgProbeToken('Router', Router);
|
|
6876
|
-
}
|
|
6877
6872
|
/**
|
|
6878
6873
|
* @description
|
|
6879
6874
|
*
|
|
@@ -6933,7 +6928,6 @@ class RouterModule {
|
|
|
6933
6928
|
config?.useHash ? provideHashLocationStrategy() : providePathLocationStrategy(),
|
|
6934
6929
|
provideRouterScroller(),
|
|
6935
6930
|
config?.preloadingStrategy ? withPreloading(config.preloadingStrategy).ɵproviders : [],
|
|
6936
|
-
{ provide: NgProbeToken, multi: true, useFactory: routerNgProbeToken },
|
|
6937
6931
|
config?.initialNavigation ? provideInitialNavigation(config) : [],
|
|
6938
6932
|
config?.bindToComponentInputs ? withComponentInputBinding().ɵproviders : [],
|
|
6939
6933
|
config?.enableViewTransitions ? withViewTransitions().ɵproviders : [],
|
|
@@ -6963,11 +6957,11 @@ class RouterModule {
|
|
|
6963
6957
|
providers: [{ provide: ROUTES, multi: true, useValue: routes }],
|
|
6964
6958
|
};
|
|
6965
6959
|
}
|
|
6966
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-
|
|
6967
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.0-
|
|
6968
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.0-
|
|
6960
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: RouterModule, deps: [{ token: ROUTER_FORROOT_GUARD, optional: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
6961
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.0-rc.0", ngImport: i0, type: RouterModule, imports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent], exports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent] }); }
|
|
6962
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: RouterModule }); }
|
|
6969
6963
|
}
|
|
6970
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-
|
|
6964
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: RouterModule, decorators: [{
|
|
6971
6965
|
type: NgModule,
|
|
6972
6966
|
args: [{
|
|
6973
6967
|
imports: ROUTER_DIRECTIVES,
|
|
@@ -7112,7 +7106,7 @@ function mapToResolve(provider) {
|
|
|
7112
7106
|
/**
|
|
7113
7107
|
* @publicApi
|
|
7114
7108
|
*/
|
|
7115
|
-
const VERSION = new Version('17.0.0-
|
|
7109
|
+
const VERSION = new Version('17.0.0-rc.0');
|
|
7116
7110
|
|
|
7117
7111
|
/**
|
|
7118
7112
|
* @module
|