@angular/router 18.0.4 → 18.0.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,11 +1,11 @@
1
1
  /**
2
- * @license Angular v18.0.4
2
+ * @license Angular v18.0.6
3
3
  * (c) 2010-2024 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, Directive, Input, Output, InjectionToken, reflectComponentType, Component, createEnvironmentInjector, ɵisNgModule, isStandalone, ɵisInjectable, runInInjectionContext, Compiler, NgModuleFactory, NgZone, afterNextRender, AfterRenderPhase, EnvironmentInjector, ɵConsole, ɵPendingTasks, ɵɵ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';
8
+ import { ɵisPromise, ɵRuntimeError, Injectable, createEnvironmentInjector, ɵisNgModule, isStandalone, EventEmitter, inject, ViewContainerRef, ChangeDetectorRef, Directive, Input, Output, InjectionToken, reflectComponentType, ɵisInjectable, runInInjectionContext, Component, Compiler, NgModuleFactory, NgZone, afterNextRender, AfterRenderPhase, EnvironmentInjector, ɵConsole, ɵPendingTasks, ɵɵ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';
@@ -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: "18.0.4", ngImport: i0, type: UrlSerializer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
425
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: UrlSerializer, providedIn: 'root', useFactory: () => new DefaultUrlSerializer() }); }
424
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: UrlSerializer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
425
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: UrlSerializer, providedIn: 'root', useFactory: () => new DefaultUrlSerializer() }); }
426
426
  }
427
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: UrlSerializer, decorators: [{
427
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: UrlSerializer, decorators: [{
428
428
  type: Injectable,
429
429
  args: [{ providedIn: 'root', useFactory: () => new DefaultUrlSerializer() }]
430
430
  }] });
@@ -1790,17 +1790,204 @@ function stringifyEvent(routerEvent) {
1790
1790
  }
1791
1791
  }
1792
1792
 
1793
+ /**
1794
+ * Creates an `EnvironmentInjector` if the `Route` has providers and one does not already exist
1795
+ * and returns the injector. Otherwise, if the `Route` does not have `providers`, returns the
1796
+ * `currentInjector`.
1797
+ *
1798
+ * @param route The route that might have providers
1799
+ * @param currentInjector The parent injector of the `Route`
1800
+ */
1801
+ function getOrCreateRouteInjectorIfNeeded(route, currentInjector) {
1802
+ if (route.providers && !route._injector) {
1803
+ route._injector = createEnvironmentInjector(route.providers, currentInjector, `Route: ${route.path}`);
1804
+ }
1805
+ return route._injector ?? currentInjector;
1806
+ }
1807
+ function getLoadedRoutes(route) {
1808
+ return route._loadedRoutes;
1809
+ }
1810
+ function getLoadedInjector(route) {
1811
+ return route._loadedInjector;
1812
+ }
1813
+ function getLoadedComponent(route) {
1814
+ return route._loadedComponent;
1815
+ }
1816
+ function getProvidersInjector(route) {
1817
+ return route._injector;
1818
+ }
1819
+ function validateConfig(config, parentPath = '', requireStandaloneComponents = false) {
1820
+ // forEach doesn't iterate undefined values
1821
+ for (let i = 0; i < config.length; i++) {
1822
+ const route = config[i];
1823
+ const fullPath = getFullPath(parentPath, route);
1824
+ validateNode(route, fullPath, requireStandaloneComponents);
1825
+ }
1826
+ }
1827
+ function assertStandalone(fullPath, component) {
1828
+ if (component && ɵisNgModule(component)) {
1829
+ throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}'. You are using 'loadComponent' with a module, ` +
1830
+ `but it must be used with standalone components. Use 'loadChildren' instead.`);
1831
+ }
1832
+ else if (component && !isStandalone(component)) {
1833
+ throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}'. The component must be standalone.`);
1834
+ }
1835
+ }
1836
+ function validateNode(route, fullPath, requireStandaloneComponents) {
1837
+ if (typeof ngDevMode === 'undefined' || ngDevMode) {
1838
+ if (!route) {
1839
+ throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `
1840
+ Invalid configuration of route '${fullPath}': Encountered undefined route.
1841
+ The reason might be an extra comma.
1842
+
1843
+ Example:
1844
+ const routes: Routes = [
1845
+ { path: '', redirectTo: '/dashboard', pathMatch: 'full' },
1846
+ { path: 'dashboard', component: DashboardComponent },, << two commas
1847
+ { path: 'detail/:id', component: HeroDetailComponent }
1848
+ ];
1849
+ `);
1850
+ }
1851
+ if (Array.isArray(route)) {
1852
+ throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': Array cannot be specified`);
1853
+ }
1854
+ if (!route.redirectTo &&
1855
+ !route.component &&
1856
+ !route.loadComponent &&
1857
+ !route.children &&
1858
+ !route.loadChildren &&
1859
+ route.outlet &&
1860
+ route.outlet !== PRIMARY_OUTLET) {
1861
+ throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': a componentless route without children or loadChildren cannot have a named outlet set`);
1862
+ }
1863
+ if (route.redirectTo && route.children) {
1864
+ throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': redirectTo and children cannot be used together`);
1865
+ }
1866
+ if (route.redirectTo && route.loadChildren) {
1867
+ throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': redirectTo and loadChildren cannot be used together`);
1868
+ }
1869
+ if (route.children && route.loadChildren) {
1870
+ throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': children and loadChildren cannot be used together`);
1871
+ }
1872
+ if (route.redirectTo && (route.component || route.loadComponent)) {
1873
+ throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': redirectTo and component/loadComponent cannot be used together`);
1874
+ }
1875
+ if (route.component && route.loadComponent) {
1876
+ throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': component and loadComponent cannot be used together`);
1877
+ }
1878
+ if (route.redirectTo && route.canActivate) {
1879
+ throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': redirectTo and canActivate cannot be used together. Redirects happen before activation ` +
1880
+ `so canActivate will never be executed.`);
1881
+ }
1882
+ if (route.path && route.matcher) {
1883
+ throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': path and matcher cannot be used together`);
1884
+ }
1885
+ if (route.redirectTo === void 0 &&
1886
+ !route.component &&
1887
+ !route.loadComponent &&
1888
+ !route.children &&
1889
+ !route.loadChildren) {
1890
+ throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}'. One of the following must be provided: component, loadComponent, redirectTo, children or loadChildren`);
1891
+ }
1892
+ if (route.path === void 0 && route.matcher === void 0) {
1893
+ throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': routes must have either a path or a matcher specified`);
1894
+ }
1895
+ if (typeof route.path === 'string' && route.path.charAt(0) === '/') {
1896
+ throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': path cannot start with a slash`);
1897
+ }
1898
+ if (route.path === '' && route.redirectTo !== void 0 && route.pathMatch === void 0) {
1899
+ const exp = `The default value of 'pathMatch' is 'prefix', but often the intent is to use 'full'.`;
1900
+ throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '{path: "${fullPath}", redirectTo: "${route.redirectTo}"}': please provide 'pathMatch'. ${exp}`);
1901
+ }
1902
+ if (requireStandaloneComponents) {
1903
+ assertStandalone(fullPath, route.component);
1904
+ }
1905
+ }
1906
+ if (route.children) {
1907
+ validateConfig(route.children, fullPath, requireStandaloneComponents);
1908
+ }
1909
+ }
1910
+ function getFullPath(parentPath, currentRoute) {
1911
+ if (!currentRoute) {
1912
+ return parentPath;
1913
+ }
1914
+ if (!parentPath && !currentRoute.path) {
1915
+ return '';
1916
+ }
1917
+ else if (parentPath && !currentRoute.path) {
1918
+ return `${parentPath}/`;
1919
+ }
1920
+ else if (!parentPath && currentRoute.path) {
1921
+ return currentRoute.path;
1922
+ }
1923
+ else {
1924
+ return `${parentPath}/${currentRoute.path}`;
1925
+ }
1926
+ }
1927
+ /** Returns the `route.outlet` or PRIMARY_OUTLET if none exists. */
1928
+ function getOutlet(route) {
1929
+ return route.outlet || PRIMARY_OUTLET;
1930
+ }
1931
+ /**
1932
+ * Sorts the `routes` such that the ones with an outlet matching `outletName` come first.
1933
+ * The order of the configs is otherwise preserved.
1934
+ */
1935
+ function sortByMatchingOutlets(routes, outletName) {
1936
+ const sortedConfig = routes.filter((r) => getOutlet(r) === outletName);
1937
+ sortedConfig.push(...routes.filter((r) => getOutlet(r) !== outletName));
1938
+ return sortedConfig;
1939
+ }
1940
+ /**
1941
+ * Gets the first injector in the snapshot's parent tree.
1942
+ *
1943
+ * If the `Route` has a static list of providers, the returned injector will be the one created from
1944
+ * those. If it does not exist, the returned injector may come from the parents, which may be from a
1945
+ * loaded config or their static providers.
1946
+ *
1947
+ * Returns `null` if there is neither this nor any parents have a stored injector.
1948
+ *
1949
+ * Generally used for retrieving the injector to use for getting tokens for guards/resolvers and
1950
+ * also used for getting the correct injector to use for creating components.
1951
+ */
1952
+ function getClosestRouteInjector(snapshot) {
1953
+ if (!snapshot)
1954
+ return null;
1955
+ // If the current route has its own injector, which is created from the static providers on the
1956
+ // route itself, we should use that. Otherwise, we start at the parent since we do not want to
1957
+ // include the lazy loaded injector from this route.
1958
+ if (snapshot.routeConfig?._injector) {
1959
+ return snapshot.routeConfig._injector;
1960
+ }
1961
+ for (let s = snapshot.parent; s; s = s.parent) {
1962
+ const route = s.routeConfig;
1963
+ // Note that the order here is important. `_loadedInjector` stored on the route with
1964
+ // `loadChildren: () => NgModule` so it applies to child routes with priority. The `_injector`
1965
+ // is created from the static providers on that parent route, so it applies to the children as
1966
+ // well, but only if there is no lazy loaded NgModuleRef injector.
1967
+ if (route?._loadedInjector)
1968
+ return route._loadedInjector;
1969
+ if (route?._injector)
1970
+ return route._injector;
1971
+ }
1972
+ return null;
1973
+ }
1974
+
1793
1975
  /**
1794
1976
  * Store contextual information about a `RouterOutlet`
1795
1977
  *
1796
1978
  * @publicApi
1797
1979
  */
1798
1980
  class OutletContext {
1799
- constructor(injector) {
1800
- this.injector = injector;
1981
+ get injector() {
1982
+ return getClosestRouteInjector(this.route?.snapshot) ?? this.rootInjector;
1983
+ }
1984
+ // TODO(atscott): Only here to avoid a "breaking" change in a patch/minor. Remove in v19.
1985
+ set injector(_) { }
1986
+ constructor(rootInjector) {
1987
+ this.rootInjector = rootInjector;
1801
1988
  this.outlet = null;
1802
1989
  this.route = null;
1803
- this.children = new ChildrenOutletContexts(this.injector);
1990
+ this.children = new ChildrenOutletContexts(this.rootInjector);
1804
1991
  this.attachRef = null;
1805
1992
  }
1806
1993
  }
@@ -1811,8 +1998,8 @@ class OutletContext {
1811
1998
  */
1812
1999
  class ChildrenOutletContexts {
1813
2000
  /** @nodoc */
1814
- constructor(parentInjector) {
1815
- this.parentInjector = parentInjector;
2001
+ constructor(rootInjector) {
2002
+ this.rootInjector = rootInjector;
1816
2003
  // contexts for child outlets, by name.
1817
2004
  this.contexts = new Map();
1818
2005
  }
@@ -1849,7 +2036,7 @@ class ChildrenOutletContexts {
1849
2036
  getOrCreateContext(childName) {
1850
2037
  let context = this.getContext(childName);
1851
2038
  if (!context) {
1852
- context = new OutletContext(this.parentInjector);
2039
+ context = new OutletContext(this.rootInjector);
1853
2040
  this.contexts.set(childName, context);
1854
2041
  }
1855
2042
  return context;
@@ -1857,10 +2044,10 @@ class ChildrenOutletContexts {
1857
2044
  getContext(childName) {
1858
2045
  return this.contexts.get(childName) || null;
1859
2046
  }
1860
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: ChildrenOutletContexts, deps: [{ token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable }); }
1861
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: ChildrenOutletContexts, providedIn: 'root' }); }
2047
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ChildrenOutletContexts, deps: [{ token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable }); }
2048
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ChildrenOutletContexts, providedIn: 'root' }); }
1862
2049
  }
1863
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: ChildrenOutletContexts, decorators: [{
2050
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ChildrenOutletContexts, decorators: [{
1864
2051
  type: Injectable,
1865
2052
  args: [{ providedIn: 'root' }]
1866
2053
  }], ctorParameters: () => [{ type: i0.EnvironmentInjector }] });
@@ -2568,10 +2755,10 @@ class RouterOutlet {
2568
2755
  this.inputBinder?.bindActivatedRouteToOutletComponent(this);
2569
2756
  this.activateEvents.emit(this.activated.instance);
2570
2757
  }
2571
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RouterOutlet, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2572
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.4", 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 }); }
2758
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: RouterOutlet, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2759
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
2573
2760
  }
2574
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RouterOutlet, decorators: [{
2761
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: RouterOutlet, decorators: [{
2575
2762
  type: Directive,
2576
2763
  args: [{
2577
2764
  selector: 'router-outlet',
@@ -2694,10 +2881,10 @@ class RoutedComponentInputBinder {
2694
2881
  });
2695
2882
  this.outletDataSubscriptions.set(outlet, dataSubscription);
2696
2883
  }
2697
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RoutedComponentInputBinder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2698
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RoutedComponentInputBinder }); }
2884
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: RoutedComponentInputBinder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2885
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: RoutedComponentInputBinder }); }
2699
2886
  }
2700
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RoutedComponentInputBinder, decorators: [{
2887
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: RoutedComponentInputBinder, decorators: [{
2701
2888
  type: Injectable
2702
2889
  }] });
2703
2890
 
@@ -2805,225 +2992,6 @@ function isNavigationCancelingError(error) {
2805
2992
  return !!error && error[NAVIGATION_CANCELING_ERROR];
2806
2993
  }
2807
2994
 
2808
- /**
2809
- * This component is used internally within the router to be a placeholder when an empty
2810
- * router-outlet is needed. For example, with a config such as:
2811
- *
2812
- * `{path: 'parent', outlet: 'nav', children: [...]}`
2813
- *
2814
- * In order to render, there needs to be a component on this config, which will default
2815
- * to this `EmptyOutletComponent`.
2816
- */
2817
- class ɵEmptyOutletComponent {
2818
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: ɵEmptyOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2819
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", 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"] }] }); }
2820
- }
2821
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: ɵEmptyOutletComponent, decorators: [{
2822
- type: Component,
2823
- args: [{
2824
- template: `<router-outlet></router-outlet>`,
2825
- imports: [RouterOutlet],
2826
- standalone: true,
2827
- }]
2828
- }] });
2829
-
2830
- /**
2831
- * Creates an `EnvironmentInjector` if the `Route` has providers and one does not already exist
2832
- * and returns the injector. Otherwise, if the `Route` does not have `providers`, returns the
2833
- * `currentInjector`.
2834
- *
2835
- * @param route The route that might have providers
2836
- * @param currentInjector The parent injector of the `Route`
2837
- */
2838
- function getOrCreateRouteInjectorIfNeeded(route, currentInjector) {
2839
- if (route.providers && !route._injector) {
2840
- route._injector = createEnvironmentInjector(route.providers, currentInjector, `Route: ${route.path}`);
2841
- }
2842
- return route._injector ?? currentInjector;
2843
- }
2844
- function getLoadedRoutes(route) {
2845
- return route._loadedRoutes;
2846
- }
2847
- function getLoadedInjector(route) {
2848
- return route._loadedInjector;
2849
- }
2850
- function getLoadedComponent(route) {
2851
- return route._loadedComponent;
2852
- }
2853
- function getProvidersInjector(route) {
2854
- return route._injector;
2855
- }
2856
- function validateConfig(config, parentPath = '', requireStandaloneComponents = false) {
2857
- // forEach doesn't iterate undefined values
2858
- for (let i = 0; i < config.length; i++) {
2859
- const route = config[i];
2860
- const fullPath = getFullPath(parentPath, route);
2861
- validateNode(route, fullPath, requireStandaloneComponents);
2862
- }
2863
- }
2864
- function assertStandalone(fullPath, component) {
2865
- if (component && ɵisNgModule(component)) {
2866
- throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}'. You are using 'loadComponent' with a module, ` +
2867
- `but it must be used with standalone components. Use 'loadChildren' instead.`);
2868
- }
2869
- else if (component && !isStandalone(component)) {
2870
- throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}'. The component must be standalone.`);
2871
- }
2872
- }
2873
- function validateNode(route, fullPath, requireStandaloneComponents) {
2874
- if (typeof ngDevMode === 'undefined' || ngDevMode) {
2875
- if (!route) {
2876
- throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `
2877
- Invalid configuration of route '${fullPath}': Encountered undefined route.
2878
- The reason might be an extra comma.
2879
-
2880
- Example:
2881
- const routes: Routes = [
2882
- { path: '', redirectTo: '/dashboard', pathMatch: 'full' },
2883
- { path: 'dashboard', component: DashboardComponent },, << two commas
2884
- { path: 'detail/:id', component: HeroDetailComponent }
2885
- ];
2886
- `);
2887
- }
2888
- if (Array.isArray(route)) {
2889
- throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': Array cannot be specified`);
2890
- }
2891
- if (!route.redirectTo &&
2892
- !route.component &&
2893
- !route.loadComponent &&
2894
- !route.children &&
2895
- !route.loadChildren &&
2896
- route.outlet &&
2897
- route.outlet !== PRIMARY_OUTLET) {
2898
- throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': a componentless route without children or loadChildren cannot have a named outlet set`);
2899
- }
2900
- if (route.redirectTo && route.children) {
2901
- throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': redirectTo and children cannot be used together`);
2902
- }
2903
- if (route.redirectTo && route.loadChildren) {
2904
- throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': redirectTo and loadChildren cannot be used together`);
2905
- }
2906
- if (route.children && route.loadChildren) {
2907
- throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': children and loadChildren cannot be used together`);
2908
- }
2909
- if (route.redirectTo && (route.component || route.loadComponent)) {
2910
- throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': redirectTo and component/loadComponent cannot be used together`);
2911
- }
2912
- if (route.component && route.loadComponent) {
2913
- throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': component and loadComponent cannot be used together`);
2914
- }
2915
- if (route.redirectTo && route.canActivate) {
2916
- throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': redirectTo and canActivate cannot be used together. Redirects happen before activation ` +
2917
- `so canActivate will never be executed.`);
2918
- }
2919
- if (route.path && route.matcher) {
2920
- throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': path and matcher cannot be used together`);
2921
- }
2922
- if (route.redirectTo === void 0 &&
2923
- !route.component &&
2924
- !route.loadComponent &&
2925
- !route.children &&
2926
- !route.loadChildren) {
2927
- throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}'. One of the following must be provided: component, loadComponent, redirectTo, children or loadChildren`);
2928
- }
2929
- if (route.path === void 0 && route.matcher === void 0) {
2930
- throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': routes must have either a path or a matcher specified`);
2931
- }
2932
- if (typeof route.path === 'string' && route.path.charAt(0) === '/') {
2933
- throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': path cannot start with a slash`);
2934
- }
2935
- if (route.path === '' && route.redirectTo !== void 0 && route.pathMatch === void 0) {
2936
- const exp = `The default value of 'pathMatch' is 'prefix', but often the intent is to use 'full'.`;
2937
- throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '{path: "${fullPath}", redirectTo: "${route.redirectTo}"}': please provide 'pathMatch'. ${exp}`);
2938
- }
2939
- if (requireStandaloneComponents) {
2940
- assertStandalone(fullPath, route.component);
2941
- }
2942
- }
2943
- if (route.children) {
2944
- validateConfig(route.children, fullPath, requireStandaloneComponents);
2945
- }
2946
- }
2947
- function getFullPath(parentPath, currentRoute) {
2948
- if (!currentRoute) {
2949
- return parentPath;
2950
- }
2951
- if (!parentPath && !currentRoute.path) {
2952
- return '';
2953
- }
2954
- else if (parentPath && !currentRoute.path) {
2955
- return `${parentPath}/`;
2956
- }
2957
- else if (!parentPath && currentRoute.path) {
2958
- return currentRoute.path;
2959
- }
2960
- else {
2961
- return `${parentPath}/${currentRoute.path}`;
2962
- }
2963
- }
2964
- /**
2965
- * Makes a copy of the config and adds any default required properties.
2966
- */
2967
- function standardizeConfig(r) {
2968
- const children = r.children && r.children.map(standardizeConfig);
2969
- const c = children ? { ...r, children } : { ...r };
2970
- if (!c.component &&
2971
- !c.loadComponent &&
2972
- (children || c.loadChildren) &&
2973
- c.outlet &&
2974
- c.outlet !== PRIMARY_OUTLET) {
2975
- c.component = ɵEmptyOutletComponent;
2976
- }
2977
- return c;
2978
- }
2979
- /** Returns the `route.outlet` or PRIMARY_OUTLET if none exists. */
2980
- function getOutlet(route) {
2981
- return route.outlet || PRIMARY_OUTLET;
2982
- }
2983
- /**
2984
- * Sorts the `routes` such that the ones with an outlet matching `outletName` come first.
2985
- * The order of the configs is otherwise preserved.
2986
- */
2987
- function sortByMatchingOutlets(routes, outletName) {
2988
- const sortedConfig = routes.filter((r) => getOutlet(r) === outletName);
2989
- sortedConfig.push(...routes.filter((r) => getOutlet(r) !== outletName));
2990
- return sortedConfig;
2991
- }
2992
- /**
2993
- * Gets the first injector in the snapshot's parent tree.
2994
- *
2995
- * If the `Route` has a static list of providers, the returned injector will be the one created from
2996
- * those. If it does not exist, the returned injector may come from the parents, which may be from a
2997
- * loaded config or their static providers.
2998
- *
2999
- * Returns `null` if there is neither this nor any parents have a stored injector.
3000
- *
3001
- * Generally used for retrieving the injector to use for getting tokens for guards/resolvers and
3002
- * also used for getting the correct injector to use for creating components.
3003
- */
3004
- function getClosestRouteInjector(snapshot) {
3005
- if (!snapshot)
3006
- return null;
3007
- // If the current route has its own injector, which is created from the static providers on the
3008
- // route itself, we should use that. Otherwise, we start at the parent since we do not want to
3009
- // include the lazy loaded injector from this route.
3010
- if (snapshot.routeConfig?._injector) {
3011
- return snapshot.routeConfig._injector;
3012
- }
3013
- for (let s = snapshot.parent; s; s = s.parent) {
3014
- const route = s.routeConfig;
3015
- // Note that the order here is important. `_loadedInjector` stored on the route with
3016
- // `loadChildren: () => NgModule` so it applies to child routes with priority. The `_injector`
3017
- // is created from the static providers on that parent route, so it applies to the children as
3018
- // well, but only if there is no lazy loaded NgModuleRef injector.
3019
- if (route?._loadedInjector)
3020
- return route._loadedInjector;
3021
- if (route?._injector)
3022
- return route._injector;
3023
- }
3024
- return null;
3025
- }
3026
-
3027
2995
  let warnedAboutUnsupportedInputBinding = false;
3028
2996
  const activateRoutes = (rootContexts, routeReuseStrategy, forwardEvent, inputBindingEnabled) => map((t) => {
3029
2997
  new ActivateRoutes(routeReuseStrategy, t.targetRouterState, t.currentRouterState, forwardEvent, inputBindingEnabled).activate(rootContexts);
@@ -3173,10 +3141,8 @@ class ActivateRoutes {
3173
3141
  this.activateChildRoutes(futureNode, null, context.children);
3174
3142
  }
3175
3143
  else {
3176
- const injector = getClosestRouteInjector(future.snapshot);
3177
3144
  context.attachRef = null;
3178
3145
  context.route = future;
3179
- context.injector = injector ?? context.injector;
3180
3146
  if (context.outlet) {
3181
3147
  // Activate the outlet when it has already been instantiated
3182
3148
  // Otherwise it will get activated from its `ngOnInit` when instantiated
@@ -4241,10 +4207,10 @@ class TitleStrategy {
4241
4207
  getResolvedTitleForRoute(snapshot) {
4242
4208
  return snapshot.data[RouteTitleKey];
4243
4209
  }
4244
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: TitleStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4245
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: TitleStrategy, providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy) }); }
4210
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: TitleStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4211
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: TitleStrategy, providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy) }); }
4246
4212
  }
4247
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: TitleStrategy, decorators: [{
4213
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: TitleStrategy, decorators: [{
4248
4214
  type: Injectable,
4249
4215
  args: [{ providedIn: 'root', useFactory: () => inject(DefaultTitleStrategy) }]
4250
4216
  }] });
@@ -4267,10 +4233,10 @@ class DefaultTitleStrategy extends TitleStrategy {
4267
4233
  this.title.setTitle(title);
4268
4234
  }
4269
4235
  }
4270
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: DefaultTitleStrategy, deps: [{ token: i1.Title }], target: i0.ɵɵFactoryTarget.Injectable }); }
4271
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: DefaultTitleStrategy, providedIn: 'root' }); }
4236
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DefaultTitleStrategy, deps: [{ token: i1.Title }], target: i0.ɵɵFactoryTarget.Injectable }); }
4237
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DefaultTitleStrategy, providedIn: 'root' }); }
4272
4238
  }
4273
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: DefaultTitleStrategy, decorators: [{
4239
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DefaultTitleStrategy, decorators: [{
4274
4240
  type: Injectable,
4275
4241
  args: [{ providedIn: 'root' }]
4276
4242
  }], ctorParameters: () => [{ type: i1.Title }] });
@@ -4285,6 +4251,43 @@ const ROUTER_CONFIGURATION = new InjectionToken(typeof ngDevMode === 'undefined'
4285
4251
  factory: () => ({}),
4286
4252
  });
4287
4253
 
4254
+ /**
4255
+ * This component is used internally within the router to be a placeholder when an empty
4256
+ * router-outlet is needed. For example, with a config such as:
4257
+ *
4258
+ * `{path: 'parent', outlet: 'nav', children: [...]}`
4259
+ *
4260
+ * In order to render, there needs to be a component on this config, which will default
4261
+ * to this `EmptyOutletComponent`.
4262
+ */
4263
+ class ɵEmptyOutletComponent {
4264
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ɵEmptyOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4265
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.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"] }] }); }
4266
+ }
4267
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ɵEmptyOutletComponent, decorators: [{
4268
+ type: Component,
4269
+ args: [{
4270
+ template: `<router-outlet></router-outlet>`,
4271
+ imports: [RouterOutlet],
4272
+ standalone: true,
4273
+ }]
4274
+ }] });
4275
+ /**
4276
+ * Makes a copy of the config and adds any default required properties.
4277
+ */
4278
+ function standardizeConfig(r) {
4279
+ const children = r.children && r.children.map(standardizeConfig);
4280
+ const c = children ? { ...r, children } : { ...r };
4281
+ if (!c.component &&
4282
+ !c.loadComponent &&
4283
+ (children || c.loadChildren) &&
4284
+ c.outlet &&
4285
+ c.outlet !== PRIMARY_OUTLET) {
4286
+ c.component = ɵEmptyOutletComponent;
4287
+ }
4288
+ return c;
4289
+ }
4290
+
4288
4291
  /**
4289
4292
  * The DI token for a router configuration.
4290
4293
  *
@@ -4346,10 +4349,10 @@ class RouterConfigLoader {
4346
4349
  this.childrenLoaders.set(route, loader);
4347
4350
  return loader;
4348
4351
  }
4349
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RouterConfigLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4350
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RouterConfigLoader, providedIn: 'root' }); }
4352
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: RouterConfigLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4353
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: RouterConfigLoader, providedIn: 'root' }); }
4351
4354
  }
4352
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RouterConfigLoader, decorators: [{
4355
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: RouterConfigLoader, decorators: [{
4353
4356
  type: Injectable,
4354
4357
  args: [{ providedIn: 'root' }]
4355
4358
  }] });
@@ -4416,10 +4419,10 @@ function maybeUnwrapDefaultExport(input) {
4416
4419
  * @publicApi
4417
4420
  */
4418
4421
  class UrlHandlingStrategy {
4419
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: UrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4420
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: UrlHandlingStrategy, providedIn: 'root', useFactory: () => inject(DefaultUrlHandlingStrategy) }); }
4422
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: UrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4423
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: UrlHandlingStrategy, providedIn: 'root', useFactory: () => inject(DefaultUrlHandlingStrategy) }); }
4421
4424
  }
4422
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: UrlHandlingStrategy, decorators: [{
4425
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: UrlHandlingStrategy, decorators: [{
4423
4426
  type: Injectable,
4424
4427
  args: [{ providedIn: 'root', useFactory: () => inject(DefaultUrlHandlingStrategy) }]
4425
4428
  }] });
@@ -4436,10 +4439,10 @@ class DefaultUrlHandlingStrategy {
4436
4439
  merge(newUrlPart, wholeUrl) {
4437
4440
  return newUrlPart;
4438
4441
  }
4439
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: DefaultUrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4440
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: DefaultUrlHandlingStrategy, providedIn: 'root' }); }
4442
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DefaultUrlHandlingStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4443
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DefaultUrlHandlingStrategy, providedIn: 'root' }); }
4441
4444
  }
4442
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: DefaultUrlHandlingStrategy, decorators: [{
4445
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DefaultUrlHandlingStrategy, decorators: [{
4443
4446
  type: Injectable,
4444
4447
  args: [{ providedIn: 'root' }]
4445
4448
  }] });
@@ -4890,10 +4893,10 @@ class NavigationTransitions {
4890
4893
  return (extractedBrowserUrl.toString() !== this.currentTransition?.extractedUrl.toString() &&
4891
4894
  !this.currentTransition?.extras.skipLocationChange);
4892
4895
  }
4893
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: NavigationTransitions, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4894
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: NavigationTransitions, providedIn: 'root' }); }
4896
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NavigationTransitions, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4897
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NavigationTransitions, providedIn: 'root' }); }
4895
4898
  }
4896
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: NavigationTransitions, decorators: [{
4899
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NavigationTransitions, decorators: [{
4897
4900
  type: Injectable,
4898
4901
  args: [{ providedIn: 'root' }]
4899
4902
  }], ctorParameters: () => [] });
@@ -4909,10 +4912,10 @@ function isBrowserTriggeredNavigation(source) {
4909
4912
  * @publicApi
4910
4913
  */
4911
4914
  class RouteReuseStrategy {
4912
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RouteReuseStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4913
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RouteReuseStrategy, providedIn: 'root', useFactory: () => inject(DefaultRouteReuseStrategy) }); }
4915
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: RouteReuseStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4916
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: RouteReuseStrategy, providedIn: 'root', useFactory: () => inject(DefaultRouteReuseStrategy) }); }
4914
4917
  }
4915
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RouteReuseStrategy, decorators: [{
4918
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: RouteReuseStrategy, decorators: [{
4916
4919
  type: Injectable,
4917
4920
  args: [{ providedIn: 'root', useFactory: () => inject(DefaultRouteReuseStrategy) }]
4918
4921
  }] });
@@ -4963,19 +4966,19 @@ class BaseRouteReuseStrategy {
4963
4966
  }
4964
4967
  }
4965
4968
  class DefaultRouteReuseStrategy extends BaseRouteReuseStrategy {
4966
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: DefaultRouteReuseStrategy, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
4967
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: DefaultRouteReuseStrategy, providedIn: 'root' }); }
4969
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DefaultRouteReuseStrategy, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
4970
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DefaultRouteReuseStrategy, providedIn: 'root' }); }
4968
4971
  }
4969
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: DefaultRouteReuseStrategy, decorators: [{
4972
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DefaultRouteReuseStrategy, decorators: [{
4970
4973
  type: Injectable,
4971
4974
  args: [{ providedIn: 'root' }]
4972
4975
  }] });
4973
4976
 
4974
4977
  class StateManager {
4975
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: StateManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4976
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: StateManager, providedIn: 'root', useFactory: () => inject(HistoryStateManager) }); }
4978
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: StateManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4979
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: StateManager, providedIn: 'root', useFactory: () => inject(HistoryStateManager) }); }
4977
4980
  }
4978
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: StateManager, decorators: [{
4981
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: StateManager, decorators: [{
4979
4982
  type: Injectable,
4980
4983
  args: [{ providedIn: 'root', useFactory: () => inject(HistoryStateManager) }]
4981
4984
  }] });
@@ -5150,10 +5153,10 @@ class HistoryStateManager extends StateManager {
5150
5153
  }
5151
5154
  return { navigationId };
5152
5155
  }
5153
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: HistoryStateManager, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
5154
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: HistoryStateManager, providedIn: 'root' }); }
5156
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: HistoryStateManager, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
5157
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: HistoryStateManager, providedIn: 'root' }); }
5155
5158
  }
5156
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: HistoryStateManager, decorators: [{
5159
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: HistoryStateManager, decorators: [{
5157
5160
  type: Injectable,
5158
5161
  args: [{ providedIn: 'root' }]
5159
5162
  }] });
@@ -5726,10 +5729,10 @@ class Router {
5726
5729
  return Promise.reject(e);
5727
5730
  });
5728
5731
  }
5729
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: Router, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5730
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: Router, providedIn: 'root' }); }
5732
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: Router, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5733
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: Router, providedIn: 'root' }); }
5731
5734
  }
5732
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: Router, decorators: [{
5735
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: Router, decorators: [{
5733
5736
  type: Injectable,
5734
5737
  args: [{ providedIn: 'root' }]
5735
5738
  }], ctorParameters: () => [] });
@@ -6004,10 +6007,10 @@ class RouterLink {
6004
6007
  preserveFragment: this.preserveFragment,
6005
6008
  });
6006
6009
  }
6007
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", 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 }); }
6008
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.0.4", 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 }); }
6010
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.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 }); }
6011
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.0.6", 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 }); }
6009
6012
  }
6010
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RouterLink, decorators: [{
6013
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: RouterLink, decorators: [{
6011
6014
  type: Directive,
6012
6015
  args: [{
6013
6016
  selector: '[routerLink]',
@@ -6245,10 +6248,10 @@ class RouterLinkActive {
6245
6248
  const isActiveCheckFn = this.isLinkActive(this.router);
6246
6249
  return (this.link && isActiveCheckFn(this.link)) || this.links.some(isActiveCheckFn);
6247
6250
  }
6248
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RouterLinkActive, deps: [{ token: Router }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: RouterLink, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
6249
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.4", 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 }); }
6251
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.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 }); }
6252
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
6250
6253
  }
6251
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RouterLinkActive, decorators: [{
6254
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: RouterLinkActive, decorators: [{
6252
6255
  type: Directive,
6253
6256
  args: [{
6254
6257
  selector: '[routerLinkActive]',
@@ -6300,10 +6303,10 @@ class PreloadAllModules {
6300
6303
  preload(route, fn) {
6301
6304
  return fn().pipe(catchError(() => of(null)));
6302
6305
  }
6303
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: PreloadAllModules, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
6304
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: PreloadAllModules, providedIn: 'root' }); }
6306
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: PreloadAllModules, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
6307
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: PreloadAllModules, providedIn: 'root' }); }
6305
6308
  }
6306
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: PreloadAllModules, decorators: [{
6309
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: PreloadAllModules, decorators: [{
6307
6310
  type: Injectable,
6308
6311
  args: [{ providedIn: 'root' }]
6309
6312
  }] });
@@ -6320,10 +6323,10 @@ class NoPreloading {
6320
6323
  preload(route, fn) {
6321
6324
  return of(null);
6322
6325
  }
6323
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: NoPreloading, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
6324
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: NoPreloading, providedIn: 'root' }); }
6326
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NoPreloading, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
6327
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NoPreloading, providedIn: 'root' }); }
6325
6328
  }
6326
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: NoPreloading, decorators: [{
6329
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NoPreloading, decorators: [{
6327
6330
  type: Injectable,
6328
6331
  args: [{ providedIn: 'root' }]
6329
6332
  }] });
@@ -6414,10 +6417,10 @@ class RouterPreloader {
6414
6417
  }
6415
6418
  });
6416
6419
  }
6417
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RouterPreloader, deps: [{ token: Router }, { token: i0.Compiler }, { token: i0.EnvironmentInjector }, { token: PreloadingStrategy }, { token: RouterConfigLoader }], target: i0.ɵɵFactoryTarget.Injectable }); }
6418
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RouterPreloader, providedIn: 'root' }); }
6420
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: RouterPreloader, deps: [{ token: Router }, { token: i0.Compiler }, { token: i0.EnvironmentInjector }, { token: PreloadingStrategy }, { token: RouterConfigLoader }], target: i0.ɵɵFactoryTarget.Injectable }); }
6421
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: RouterPreloader, providedIn: 'root' }); }
6419
6422
  }
6420
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RouterPreloader, decorators: [{
6423
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: RouterPreloader, decorators: [{
6421
6424
  type: Injectable,
6422
6425
  args: [{ providedIn: 'root' }]
6423
6426
  }], ctorParameters: () => [{ type: Router }, { type: i0.Compiler }, { type: i0.EnvironmentInjector }, { type: PreloadingStrategy }, { type: RouterConfigLoader }] });
@@ -6518,10 +6521,10 @@ class RouterScroller {
6518
6521
  this.routerEventsSubscription?.unsubscribe();
6519
6522
  this.scrollEventsSubscription?.unsubscribe();
6520
6523
  }
6521
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RouterScroller, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable }); }
6522
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RouterScroller }); }
6524
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: RouterScroller, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable }); }
6525
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: RouterScroller }); }
6523
6526
  }
6524
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RouterScroller, decorators: [{
6527
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: RouterScroller, decorators: [{
6525
6528
  type: Injectable
6526
6529
  }], ctorParameters: () => [{ type: UrlSerializer }, { type: NavigationTransitions }, { type: i3.ViewportScroller }, { type: i0.NgZone }, { type: undefined }] });
6527
6530
 
@@ -7168,11 +7171,11 @@ class RouterModule {
7168
7171
  providers: [{ provide: ROUTES, multi: true, useValue: routes }],
7169
7172
  };
7170
7173
  }
7171
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RouterModule, deps: [{ token: ROUTER_FORROOT_GUARD, optional: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
7172
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.4", ngImport: i0, type: RouterModule, imports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent], exports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent] }); }
7173
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RouterModule }); }
7174
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: RouterModule, deps: [{ token: ROUTER_FORROOT_GUARD, optional: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
7175
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.6", ngImport: i0, type: RouterModule, imports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent], exports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent] }); }
7176
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: RouterModule }); }
7174
7177
  }
7175
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: RouterModule, decorators: [{
7178
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: RouterModule, decorators: [{
7176
7179
  type: NgModule,
7177
7180
  args: [{
7178
7181
  imports: ROUTER_DIRECTIVES,
@@ -7317,7 +7320,7 @@ function mapToResolve(provider) {
7317
7320
  /**
7318
7321
  * @publicApi
7319
7322
  */
7320
- const VERSION = new Version('18.0.4');
7323
+ const VERSION = new Version('18.0.6');
7321
7324
 
7322
7325
  /**
7323
7326
  * @module