@angular/common 15.2.0-next.0 → 15.2.0-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/esm2020/http/src/client.mjs +3 -3
  2. package/esm2020/http/src/interceptor.mjs +3 -3
  3. package/esm2020/http/src/jsonp.mjs +6 -6
  4. package/esm2020/http/src/module.mjs +12 -12
  5. package/esm2020/http/src/xhr.mjs +3 -3
  6. package/esm2020/http/src/xsrf.mjs +6 -6
  7. package/esm2020/http/testing/src/backend.mjs +3 -3
  8. package/esm2020/http/testing/src/module.mjs +4 -4
  9. package/esm2020/src/common_module.mjs +4 -4
  10. package/esm2020/src/directives/ng_class.mjs +84 -82
  11. package/esm2020/src/directives/ng_component_outlet.mjs +3 -3
  12. package/esm2020/src/directives/ng_for_of.mjs +3 -3
  13. package/esm2020/src/directives/ng_if.mjs +3 -3
  14. package/esm2020/src/directives/ng_optimized_image/lcp_image_observer.mjs +3 -3
  15. package/esm2020/src/directives/ng_optimized_image/ng_optimized_image.mjs +3 -3
  16. package/esm2020/src/directives/ng_optimized_image/preconnect_link_checker.mjs +3 -3
  17. package/esm2020/src/directives/ng_optimized_image/preload-link-creator.mjs +3 -3
  18. package/esm2020/src/directives/ng_plural.mjs +6 -6
  19. package/esm2020/src/directives/ng_style.mjs +3 -3
  20. package/esm2020/src/directives/ng_switch.mjs +9 -9
  21. package/esm2020/src/directives/ng_template_outlet.mjs +3 -3
  22. package/esm2020/src/i18n/localization.mjs +6 -6
  23. package/esm2020/src/location/hash_location_strategy.mjs +3 -3
  24. package/esm2020/src/location/location.mjs +7 -5
  25. package/esm2020/src/location/location_strategy.mjs +6 -6
  26. package/esm2020/src/location/platform_location.mjs +6 -6
  27. package/esm2020/src/pipes/async_pipe.mjs +3 -3
  28. package/esm2020/src/pipes/case_conversion_pipes.mjs +9 -9
  29. package/esm2020/src/pipes/date_pipe.mjs +3 -3
  30. package/esm2020/src/pipes/i18n_plural_pipe.mjs +3 -3
  31. package/esm2020/src/pipes/i18n_select_pipe.mjs +3 -3
  32. package/esm2020/src/pipes/json_pipe.mjs +3 -3
  33. package/esm2020/src/pipes/keyvalue_pipe.mjs +3 -3
  34. package/esm2020/src/pipes/number_pipe.mjs +9 -9
  35. package/esm2020/src/pipes/slice_pipe.mjs +3 -3
  36. package/esm2020/src/version.mjs +1 -1
  37. package/esm2020/testing/src/location_mock.mjs +3 -3
  38. package/esm2020/testing/src/mock_location_strategy.mjs +3 -3
  39. package/esm2020/testing/src/mock_platform_location.mjs +3 -3
  40. package/esm2020/upgrade/src/location_upgrade_module.mjs +4 -4
  41. package/fesm2015/common.mjs +198 -194
  42. package/fesm2015/common.mjs.map +1 -1
  43. package/fesm2015/http/testing.mjs +8 -8
  44. package/fesm2015/http.mjs +34 -34
  45. package/fesm2015/testing.mjs +10 -10
  46. package/fesm2015/upgrade.mjs +5 -5
  47. package/fesm2020/common.mjs +198 -194
  48. package/fesm2020/common.mjs.map +1 -1
  49. package/fesm2020/http/testing.mjs +8 -8
  50. package/fesm2020/http.mjs +34 -34
  51. package/fesm2020/testing.mjs +10 -10
  52. package/fesm2020/upgrade.mjs +5 -5
  53. package/http/index.d.ts +1 -1
  54. package/http/testing/index.d.ts +1 -1
  55. package/index.d.ts +6 -21
  56. package/package.json +2 -2
  57. package/testing/index.d.ts +1 -1
  58. package/upgrade/index.d.ts +1 -1
@@ -1,11 +1,11 @@
1
1
  /**
2
- * @license Angular v15.1.0
2
+ * @license Angular v15.2.0-next.2
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 { InjectionToken, Injectable, ɵɵinject, Inject, inject, Optional, EventEmitter, ɵfindLocaleData, ɵLocaleDataIndex, ɵgetLocaleCurrencyCode, ɵgetLocalePluralCase, LOCALE_ID, ɵregisterLocaleData, ɵisListLikeIterable, ɵstringify, Directive, Input, createNgModule, NgModuleRef, ɵRuntimeError, Host, Attribute, RendererStyleFlags2, ɵisPromise, ɵisSubscribable, Pipe, DEFAULT_CURRENCY_CODE, NgModule, Version, ɵɵdefineInjectable, ɵformatRuntimeError, Renderer2, ElementRef, Injector, PLATFORM_ID, NgZone } from '@angular/core';
8
+ import { InjectionToken, Injectable, ɵɵinject, Inject, inject, Optional, EventEmitter, ɵfindLocaleData, ɵLocaleDataIndex, ɵgetLocaleCurrencyCode, ɵgetLocalePluralCase, LOCALE_ID, ɵregisterLocaleData, ɵstringify, Directive, Input, createNgModule, NgModuleRef, ɵRuntimeError, Host, Attribute, RendererStyleFlags2, ɵisPromise, ɵisSubscribable, Pipe, DEFAULT_CURRENCY_CODE, NgModule, Version, ɵɵdefineInjectable, ɵformatRuntimeError, Renderer2, ElementRef, Injector, PLATFORM_ID, NgZone } from '@angular/core';
9
9
 
10
10
  let _DOM = null;
11
11
  function getDOM() {
@@ -63,9 +63,9 @@ class PlatformLocation {
63
63
  throw new Error('Not implemented');
64
64
  }
65
65
  }
66
- PlatformLocation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: PlatformLocation, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
67
- PlatformLocation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: PlatformLocation, providedIn: 'platform', useFactory: useBrowserPlatformLocation });
68
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: PlatformLocation, decorators: [{
66
+ PlatformLocation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: PlatformLocation, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
67
+ PlatformLocation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: PlatformLocation, providedIn: 'platform', useFactory: useBrowserPlatformLocation });
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: PlatformLocation, decorators: [{
69
69
  type: Injectable,
70
70
  args: [{
71
71
  providedIn: 'platform',
@@ -163,9 +163,9 @@ class BrowserPlatformLocation extends PlatformLocation {
163
163
  return this._history.state;
164
164
  }
165
165
  }
166
- BrowserPlatformLocation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: BrowserPlatformLocation, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
167
- BrowserPlatformLocation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: BrowserPlatformLocation, providedIn: 'platform', useFactory: createBrowserPlatformLocation });
168
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: BrowserPlatformLocation, decorators: [{
166
+ BrowserPlatformLocation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: BrowserPlatformLocation, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
167
+ BrowserPlatformLocation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: BrowserPlatformLocation, providedIn: 'platform', useFactory: createBrowserPlatformLocation });
168
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: BrowserPlatformLocation, decorators: [{
169
169
  type: Injectable,
170
170
  args: [{
171
171
  providedIn: 'platform',
@@ -262,9 +262,9 @@ class LocationStrategy {
262
262
  throw new Error('Not implemented');
263
263
  }
264
264
  }
265
- LocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: LocationStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
266
- LocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: LocationStrategy, providedIn: 'root', useFactory: () => inject(PathLocationStrategy) });
267
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: LocationStrategy, decorators: [{
265
+ LocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: LocationStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
266
+ LocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: LocationStrategy, providedIn: 'root', useFactory: () => inject(PathLocationStrategy) });
267
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: LocationStrategy, decorators: [{
268
268
  type: Injectable,
269
269
  args: [{ providedIn: 'root', useFactory: () => inject(PathLocationStrategy) }]
270
270
  }] });
@@ -372,9 +372,9 @@ class PathLocationStrategy extends LocationStrategy {
372
372
  this._platformLocation.historyGo?.(relativePosition);
373
373
  }
374
374
  }
375
- PathLocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: PathLocationStrategy, deps: [{ token: PlatformLocation }, { token: APP_BASE_HREF, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
376
- PathLocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: PathLocationStrategy, providedIn: 'root' });
377
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: PathLocationStrategy, decorators: [{
375
+ PathLocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: PathLocationStrategy, deps: [{ token: PlatformLocation }, { token: APP_BASE_HREF, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
376
+ PathLocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: PathLocationStrategy, providedIn: 'root' });
377
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: PathLocationStrategy, decorators: [{
378
378
  type: Injectable,
379
379
  args: [{ providedIn: 'root' }]
380
380
  }], ctorParameters: function () { return [{ type: PlatformLocation }, { type: undefined, decorators: [{
@@ -463,9 +463,9 @@ class HashLocationStrategy extends LocationStrategy {
463
463
  this._platformLocation.historyGo?.(relativePosition);
464
464
  }
465
465
  }
466
- HashLocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: HashLocationStrategy, deps: [{ token: PlatformLocation }, { token: APP_BASE_HREF, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
467
- HashLocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: HashLocationStrategy });
468
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: HashLocationStrategy, decorators: [{
466
+ HashLocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: HashLocationStrategy, deps: [{ token: PlatformLocation }, { token: APP_BASE_HREF, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
467
+ HashLocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: HashLocationStrategy });
468
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: HashLocationStrategy, decorators: [{
469
469
  type: Injectable
470
470
  }], ctorParameters: function () { return [{ type: PlatformLocation }, { type: undefined, decorators: [{
471
471
  type: Optional
@@ -715,9 +715,9 @@ Location.joinWithSlash = joinWithSlash;
715
715
  * @returns The URL string, modified if needed.
716
716
  */
717
717
  Location.stripTrailingSlash = stripTrailingSlash;
718
- Location.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: Location, deps: [{ token: LocationStrategy }], target: i0.ɵɵFactoryTarget.Injectable });
719
- Location.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: Location, providedIn: 'root', useFactory: createLocation });
720
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: Location, decorators: [{
718
+ Location.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: Location, deps: [{ token: LocationStrategy }], target: i0.ɵɵFactoryTarget.Injectable });
719
+ Location.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: Location, providedIn: 'root', useFactory: createLocation });
720
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: Location, decorators: [{
721
721
  type: Injectable,
722
722
  args: [{
723
723
  providedIn: 'root',
@@ -729,7 +729,9 @@ function createLocation() {
729
729
  return new Location(ɵɵinject(LocationStrategy));
730
730
  }
731
731
  function _stripBasePath(basePath, url) {
732
- return basePath && url.startsWith(basePath) ? url.substring(basePath.length) : url;
732
+ return basePath && new RegExp(`^${basePath}([/;?#]|$)`).test(url) ?
733
+ url.substring(basePath.length) :
734
+ url;
733
735
  }
734
736
  function _stripIndexHtml(url) {
735
737
  return url.replace(/\/index.html$/, '');
@@ -2503,9 +2505,9 @@ function parseIntAutoRadix(text) {
2503
2505
  */
2504
2506
  class NgLocalization {
2505
2507
  }
2506
- NgLocalization.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: NgLocalization, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2507
- NgLocalization.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: NgLocalization, providedIn: 'root', useFactory: (locale) => new NgLocaleLocalization(locale), deps: [{ token: LOCALE_ID }] });
2508
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: NgLocalization, decorators: [{
2508
+ NgLocalization.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: NgLocalization, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2509
+ NgLocalization.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: NgLocalization, providedIn: 'root', useFactory: (locale) => new NgLocaleLocalization(locale), deps: [{ token: LOCALE_ID }] });
2510
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: NgLocalization, decorators: [{
2509
2511
  type: Injectable,
2510
2512
  args: [{
2511
2513
  providedIn: 'root',
@@ -2560,9 +2562,9 @@ class NgLocaleLocalization extends NgLocalization {
2560
2562
  }
2561
2563
  }
2562
2564
  }
2563
- NgLocaleLocalization.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: NgLocaleLocalization, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable });
2564
- NgLocaleLocalization.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: NgLocaleLocalization });
2565
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: NgLocaleLocalization, decorators: [{
2565
+ NgLocaleLocalization.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: NgLocaleLocalization, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable });
2566
+ NgLocaleLocalization.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: NgLocaleLocalization });
2567
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: NgLocaleLocalization, decorators: [{
2566
2568
  type: Injectable
2567
2569
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
2568
2570
  type: Inject,
@@ -2594,6 +2596,8 @@ function parseCookieValue(cookieStr, name) {
2594
2596
  return null;
2595
2597
  }
2596
2598
 
2599
+ const WS_REGEXP = /\s+/;
2600
+ const EMPTY_ARRAY = [];
2597
2601
  /**
2598
2602
  * @ngModule CommonModule
2599
2603
  *
@@ -2623,107 +2627,107 @@ function parseCookieValue(cookieStr, name) {
2623
2627
  * @publicApi
2624
2628
  */
2625
2629
  class NgClass {
2626
- constructor(_iterableDiffers, _keyValueDiffers, _ngEl, _renderer) {
2630
+ constructor(
2631
+ // leaving references to differs in place since flex layout is extending NgClass...
2632
+ _iterableDiffers, _keyValueDiffers, _ngEl, _renderer) {
2627
2633
  this._iterableDiffers = _iterableDiffers;
2628
2634
  this._keyValueDiffers = _keyValueDiffers;
2629
2635
  this._ngEl = _ngEl;
2630
2636
  this._renderer = _renderer;
2631
- this._iterableDiffer = null;
2632
- this._keyValueDiffer = null;
2633
- this._initialClasses = [];
2634
- this._rawClass = null;
2637
+ this.initialClasses = EMPTY_ARRAY;
2638
+ this.stateMap = new Map();
2635
2639
  }
2636
2640
  set klass(value) {
2637
- this._removeClasses(this._initialClasses);
2638
- this._initialClasses = typeof value === 'string' ? value.split(/\s+/) : [];
2639
- this._applyClasses(this._initialClasses);
2640
- this._applyClasses(this._rawClass);
2641
+ this.initialClasses = value != null ? value.trim().split(WS_REGEXP) : EMPTY_ARRAY;
2641
2642
  }
2642
2643
  set ngClass(value) {
2643
- this._removeClasses(this._rawClass);
2644
- this._applyClasses(this._initialClasses);
2645
- this._iterableDiffer = null;
2646
- this._keyValueDiffer = null;
2647
- this._rawClass = typeof value === 'string' ? value.split(/\s+/) : value;
2648
- if (this._rawClass) {
2649
- if (ɵisListLikeIterable(this._rawClass)) {
2650
- this._iterableDiffer = this._iterableDiffers.find(this._rawClass).create();
2651
- }
2652
- else {
2653
- this._keyValueDiffer = this._keyValueDiffers.find(this._rawClass).create();
2654
- }
2655
- }
2656
- }
2644
+ this.rawClass = typeof value === 'string' ? value.trim().split(WS_REGEXP) : value;
2645
+ }
2646
+ /*
2647
+ The NgClass directive uses the custom change detection algorithm for its inputs. The custom
2648
+ algorithm is necessary since inputs are represented as complex object or arrays that need to be
2649
+ deeply-compared.
2650
+
2651
+ This algorithm is perf-sensitive since NgClass is used very frequently and its poor performance
2652
+ might negatively impact runtime performance of the entire change detection cycle. The design of
2653
+ this algorithm is making sure that:
2654
+ - there is no unnecessary DOM manipulation (CSS classes are added / removed from the DOM only when
2655
+ needed), even if references to bound objects change;
2656
+ - there is no memory allocation if nothing changes (even relatively modest memory allocation
2657
+ during the change detection cycle can result in GC pauses for some of the CD cycles).
2658
+
2659
+ The algorithm works by iterating over the set of bound classes, staring with [class] binding and
2660
+ then going over [ngClass] binding. For each CSS class name:
2661
+ - check if it was seen before (this information is tracked in the state map) and if its value
2662
+ changed;
2663
+ - mark it as "touched" - names that are not marked are not present in the latest set of binding
2664
+ and we can remove such class name from the internal data structures;
2665
+
2666
+ After iteration over all the CSS class names we've got data structure with all the information
2667
+ necessary to synchronize changes to the DOM - it is enough to iterate over the state map, flush
2668
+ changes to the DOM and reset internal data structures so those are ready for the next change
2669
+ detection cycle.
2670
+ */
2657
2671
  ngDoCheck() {
2658
- if (this._iterableDiffer) {
2659
- const iterableChanges = this._iterableDiffer.diff(this._rawClass);
2660
- if (iterableChanges) {
2661
- this._applyIterableChanges(iterableChanges);
2672
+ // classes from the [class] binding
2673
+ for (const klass of this.initialClasses) {
2674
+ this._updateState(klass, true);
2675
+ }
2676
+ // classes from the [ngClass] binding
2677
+ const rawClass = this.rawClass;
2678
+ if (Array.isArray(rawClass) || rawClass instanceof Set) {
2679
+ for (const klass of rawClass) {
2680
+ this._updateState(klass, true);
2662
2681
  }
2663
2682
  }
2664
- else if (this._keyValueDiffer) {
2665
- const keyValueChanges = this._keyValueDiffer.diff(this._rawClass);
2666
- if (keyValueChanges) {
2667
- this._applyKeyValueChanges(keyValueChanges);
2683
+ else if (rawClass != null) {
2684
+ for (const klass of Object.keys(rawClass)) {
2685
+ this._updateState(klass, Boolean(rawClass[klass]));
2668
2686
  }
2669
2687
  }
2688
+ this._applyStateDiff();
2670
2689
  }
2671
- _applyKeyValueChanges(changes) {
2672
- changes.forEachAddedItem((record) => this._toggleClass(record.key, record.currentValue));
2673
- changes.forEachChangedItem((record) => this._toggleClass(record.key, record.currentValue));
2674
- changes.forEachRemovedItem((record) => {
2675
- if (record.previousValue) {
2676
- this._toggleClass(record.key, false);
2677
- }
2678
- });
2679
- }
2680
- _applyIterableChanges(changes) {
2681
- changes.forEachAddedItem((record) => {
2682
- if (typeof record.item === 'string') {
2683
- this._toggleClass(record.item, true);
2684
- }
2685
- else {
2686
- throw new Error(`NgClass can only toggle CSS classes expressed as strings, got ${ɵstringify(record.item)}`);
2687
- }
2688
- });
2689
- changes.forEachRemovedItem((record) => this._toggleClass(record.item, false));
2690
- }
2691
- /**
2692
- * Applies a collection of CSS classes to the DOM element.
2693
- *
2694
- * For argument of type Set and Array CSS class names contained in those collections are always
2695
- * added.
2696
- * For argument of type Map CSS class name in the map's key is toggled based on the value (added
2697
- * for truthy and removed for falsy).
2698
- */
2699
- _applyClasses(rawClassVal) {
2700
- if (rawClassVal) {
2701
- if (Array.isArray(rawClassVal) || rawClassVal instanceof Set) {
2702
- rawClassVal.forEach((klass) => this._toggleClass(klass, true));
2703
- }
2704
- else {
2705
- Object.keys(rawClassVal).forEach(klass => this._toggleClass(klass, !!rawClassVal[klass]));
2690
+ _updateState(klass, nextEnabled) {
2691
+ const state = this.stateMap.get(klass);
2692
+ if (state !== undefined) {
2693
+ if (state.enabled !== nextEnabled) {
2694
+ state.changed = true;
2695
+ state.enabled = nextEnabled;
2706
2696
  }
2697
+ state.touched = true;
2698
+ }
2699
+ else {
2700
+ this.stateMap.set(klass, { enabled: nextEnabled, changed: true, touched: true });
2707
2701
  }
2708
2702
  }
2709
- /**
2710
- * Removes a collection of CSS classes from the DOM element. This is mostly useful for cleanup
2711
- * purposes.
2712
- */
2713
- _removeClasses(rawClassVal) {
2714
- if (rawClassVal) {
2715
- if (Array.isArray(rawClassVal) || rawClassVal instanceof Set) {
2716
- rawClassVal.forEach((klass) => this._toggleClass(klass, false));
2703
+ _applyStateDiff() {
2704
+ for (const stateEntry of this.stateMap) {
2705
+ const klass = stateEntry[0];
2706
+ const state = stateEntry[1];
2707
+ if (state.changed) {
2708
+ this._toggleClass(klass, state.enabled);
2709
+ state.changed = false;
2717
2710
  }
2718
- else {
2719
- Object.keys(rawClassVal).forEach(klass => this._toggleClass(klass, false));
2711
+ else if (!state.touched) {
2712
+ // A class that was previously active got removed from the new collection of classes -
2713
+ // remove from the DOM as well.
2714
+ if (state.enabled) {
2715
+ this._toggleClass(klass, false);
2716
+ }
2717
+ this.stateMap.delete(klass);
2720
2718
  }
2719
+ state.touched = false;
2721
2720
  }
2722
2721
  }
2723
2722
  _toggleClass(klass, enabled) {
2723
+ if (ngDevMode) {
2724
+ if (typeof klass !== 'string') {
2725
+ throw new Error(`NgClass can only toggle CSS classes expressed as strings, got ${ɵstringify(klass)}`);
2726
+ }
2727
+ }
2724
2728
  klass = klass.trim();
2725
- if (klass) {
2726
- klass.split(/\s+/g).forEach(klass => {
2729
+ if (klass.length > 0) {
2730
+ klass.split(WS_REGEXP).forEach(klass => {
2727
2731
  if (enabled) {
2728
2732
  this._renderer.addClass(this._ngEl.nativeElement, klass);
2729
2733
  }
@@ -2734,9 +2738,9 @@ class NgClass {
2734
2738
  }
2735
2739
  }
2736
2740
  }
2737
- NgClass.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: NgClass, deps: [{ token: i0.IterableDiffers }, { token: i0.KeyValueDiffers }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
2738
- NgClass.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0-next.0", type: NgClass, isStandalone: true, selector: "[ngClass]", inputs: { klass: ["class", "klass"], ngClass: "ngClass" }, ngImport: i0 });
2739
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: NgClass, decorators: [{
2741
+ NgClass.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: NgClass, deps: [{ token: i0.IterableDiffers }, { token: i0.KeyValueDiffers }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
2742
+ NgClass.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0-next.2", type: NgClass, isStandalone: true, selector: "[ngClass]", inputs: { klass: ["class", "klass"], ngClass: "ngClass" }, ngImport: i0 });
2743
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: NgClass, decorators: [{
2740
2744
  type: Directive,
2741
2745
  args: [{
2742
2746
  selector: '[ngClass]',
@@ -2848,9 +2852,9 @@ class NgComponentOutlet {
2848
2852
  this._moduleRef.destroy();
2849
2853
  }
2850
2854
  }
2851
- NgComponentOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: NgComponentOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
2852
- NgComponentOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0-next.0", type: NgComponentOutlet, isStandalone: true, selector: "[ngComponentOutlet]", inputs: { ngComponentOutlet: "ngComponentOutlet", ngComponentOutletInjector: "ngComponentOutletInjector", ngComponentOutletContent: "ngComponentOutletContent", ngComponentOutletNgModule: "ngComponentOutletNgModule", ngComponentOutletNgModuleFactory: "ngComponentOutletNgModuleFactory" }, usesOnChanges: true, ngImport: i0 });
2853
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: NgComponentOutlet, decorators: [{
2855
+ NgComponentOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: NgComponentOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
2856
+ NgComponentOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0-next.2", type: NgComponentOutlet, isStandalone: true, selector: "[ngComponentOutlet]", inputs: { ngComponentOutlet: "ngComponentOutlet", ngComponentOutletInjector: "ngComponentOutletInjector", ngComponentOutletContent: "ngComponentOutletContent", ngComponentOutletNgModule: "ngComponentOutletNgModule", ngComponentOutletNgModuleFactory: "ngComponentOutletNgModuleFactory" }, usesOnChanges: true, ngImport: i0 });
2857
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: NgComponentOutlet, decorators: [{
2854
2858
  type: Directive,
2855
2859
  args: [{
2856
2860
  selector: '[ngComponentOutlet]',
@@ -3130,9 +3134,9 @@ class NgForOf {
3130
3134
  return true;
3131
3135
  }
3132
3136
  }
3133
- NgForOf.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: NgForOf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Directive });
3134
- NgForOf.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0-next.0", type: NgForOf, isStandalone: true, selector: "[ngFor][ngForOf]", inputs: { ngForOf: "ngForOf", ngForTrackBy: "ngForTrackBy", ngForTemplate: "ngForTemplate" }, ngImport: i0 });
3135
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: NgForOf, decorators: [{
3137
+ NgForOf.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: NgForOf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Directive });
3138
+ NgForOf.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0-next.2", type: NgForOf, isStandalone: true, selector: "[ngFor][ngForOf]", inputs: { ngForOf: "ngForOf", ngForTrackBy: "ngForTrackBy", ngForTemplate: "ngForTemplate" }, ngImport: i0 });
3139
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: NgForOf, decorators: [{
3136
3140
  type: Directive,
3137
3141
  args: [{
3138
3142
  selector: '[ngFor][ngForOf]',
@@ -3358,9 +3362,9 @@ class NgIf {
3358
3362
  return true;
3359
3363
  }
3360
3364
  }
3361
- NgIf.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: NgIf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
3362
- NgIf.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0-next.0", type: NgIf, isStandalone: true, selector: "[ngIf]", inputs: { ngIf: "ngIf", ngIfThen: "ngIfThen", ngIfElse: "ngIfElse" }, ngImport: i0 });
3363
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: NgIf, decorators: [{
3365
+ NgIf.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: NgIf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
3366
+ NgIf.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0-next.2", type: NgIf, isStandalone: true, selector: "[ngIf]", inputs: { ngIf: "ngIf", ngIfThen: "ngIfThen", ngIfElse: "ngIfElse" }, ngImport: i0 });
3367
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: NgIf, decorators: [{
3364
3368
  type: Directive,
3365
3369
  args: [{
3366
3370
  selector: '[ngIf]',
@@ -3521,9 +3525,9 @@ class NgSwitch {
3521
3525
  }
3522
3526
  }
3523
3527
  }
3524
- NgSwitch.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: NgSwitch, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3525
- NgSwitch.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0-next.0", type: NgSwitch, isStandalone: true, selector: "[ngSwitch]", inputs: { ngSwitch: "ngSwitch" }, ngImport: i0 });
3526
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: NgSwitch, decorators: [{
3528
+ NgSwitch.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: NgSwitch, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3529
+ NgSwitch.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0-next.2", type: NgSwitch, isStandalone: true, selector: "[ngSwitch]", inputs: { ngSwitch: "ngSwitch" }, ngImport: i0 });
3530
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: NgSwitch, decorators: [{
3527
3531
  type: Directive,
3528
3532
  args: [{
3529
3533
  selector: '[ngSwitch]',
@@ -3582,9 +3586,9 @@ class NgSwitchCase {
3582
3586
  this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase));
3583
3587
  }
3584
3588
  }
3585
- NgSwitchCase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: NgSwitchCase, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: NgSwitch, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
3586
- NgSwitchCase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0-next.0", type: NgSwitchCase, isStandalone: true, selector: "[ngSwitchCase]", inputs: { ngSwitchCase: "ngSwitchCase" }, ngImport: i0 });
3587
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: NgSwitchCase, decorators: [{
3589
+ NgSwitchCase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: NgSwitchCase, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: NgSwitch, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
3590
+ NgSwitchCase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0-next.2", type: NgSwitchCase, isStandalone: true, selector: "[ngSwitchCase]", inputs: { ngSwitchCase: "ngSwitchCase" }, ngImport: i0 });
3591
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: NgSwitchCase, decorators: [{
3588
3592
  type: Directive,
3589
3593
  args: [{
3590
3594
  selector: '[ngSwitchCase]',
@@ -3619,9 +3623,9 @@ class NgSwitchDefault {
3619
3623
  ngSwitch._addDefault(new SwitchView(viewContainer, templateRef));
3620
3624
  }
3621
3625
  }
3622
- NgSwitchDefault.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: NgSwitchDefault, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: NgSwitch, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
3623
- NgSwitchDefault.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0-next.0", type: NgSwitchDefault, isStandalone: true, selector: "[ngSwitchDefault]", ngImport: i0 });
3624
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: NgSwitchDefault, decorators: [{
3626
+ NgSwitchDefault.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: NgSwitchDefault, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: NgSwitch, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
3627
+ NgSwitchDefault.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0-next.2", type: NgSwitchDefault, isStandalone: true, selector: "[ngSwitchDefault]", ngImport: i0 });
3628
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: NgSwitchDefault, decorators: [{
3625
3629
  type: Directive,
3626
3630
  args: [{
3627
3631
  selector: '[ngSwitchDefault]',
@@ -3697,9 +3701,9 @@ class NgPlural {
3697
3701
  }
3698
3702
  }
3699
3703
  }
3700
- NgPlural.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: NgPlural, deps: [{ token: NgLocalization }], target: i0.ɵɵFactoryTarget.Directive });
3701
- NgPlural.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0-next.0", type: NgPlural, isStandalone: true, selector: "[ngPlural]", inputs: { ngPlural: "ngPlural" }, ngImport: i0 });
3702
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: NgPlural, decorators: [{
3704
+ NgPlural.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: NgPlural, deps: [{ token: NgLocalization }], target: i0.ɵɵFactoryTarget.Directive });
3705
+ NgPlural.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0-next.2", type: NgPlural, isStandalone: true, selector: "[ngPlural]", inputs: { ngPlural: "ngPlural" }, ngImport: i0 });
3706
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: NgPlural, decorators: [{
3703
3707
  type: Directive,
3704
3708
  args: [{
3705
3709
  selector: '[ngPlural]',
@@ -3735,9 +3739,9 @@ class NgPluralCase {
3735
3739
  ngPlural.addCase(isANumber ? `=${value}` : value, new SwitchView(viewContainer, template));
3736
3740
  }
3737
3741
  }
3738
- NgPluralCase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: NgPluralCase, deps: [{ token: 'ngPluralCase', attribute: true }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: NgPlural, host: true }], target: i0.ɵɵFactoryTarget.Directive });
3739
- NgPluralCase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0-next.0", type: NgPluralCase, isStandalone: true, selector: "[ngPluralCase]", ngImport: i0 });
3740
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: NgPluralCase, decorators: [{
3742
+ NgPluralCase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: NgPluralCase, deps: [{ token: 'ngPluralCase', attribute: true }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: NgPlural, host: true }], target: i0.ɵɵFactoryTarget.Directive });
3743
+ NgPluralCase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0-next.2", type: NgPluralCase, isStandalone: true, selector: "[ngPluralCase]", ngImport: i0 });
3744
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: NgPluralCase, decorators: [{
3741
3745
  type: Directive,
3742
3746
  args: [{
3743
3747
  selector: '[ngPluralCase]',
@@ -3824,9 +3828,9 @@ class NgStyle {
3824
3828
  changes.forEachChangedItem((record) => this._setStyle(record.key, record.currentValue));
3825
3829
  }
3826
3830
  }
3827
- NgStyle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: NgStyle, deps: [{ token: i0.ElementRef }, { token: i0.KeyValueDiffers }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
3828
- NgStyle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0-next.0", type: NgStyle, isStandalone: true, selector: "[ngStyle]", inputs: { ngStyle: "ngStyle" }, ngImport: i0 });
3829
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: NgStyle, decorators: [{
3831
+ NgStyle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: NgStyle, deps: [{ token: i0.ElementRef }, { token: i0.KeyValueDiffers }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
3832
+ NgStyle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0-next.2", type: NgStyle, isStandalone: true, selector: "[ngStyle]", inputs: { ngStyle: "ngStyle" }, ngImport: i0 });
3833
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: NgStyle, decorators: [{
3830
3834
  type: Directive,
3831
3835
  args: [{
3832
3836
  selector: '[ngStyle]',
@@ -3899,9 +3903,9 @@ class NgTemplateOutlet {
3899
3903
  }
3900
3904
  }
3901
3905
  }
3902
- NgTemplateOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: NgTemplateOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
3903
- NgTemplateOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0-next.0", type: NgTemplateOutlet, isStandalone: true, selector: "[ngTemplateOutlet]", inputs: { ngTemplateOutletContext: "ngTemplateOutletContext", ngTemplateOutlet: "ngTemplateOutlet", ngTemplateOutletInjector: "ngTemplateOutletInjector" }, usesOnChanges: true, ngImport: i0 });
3904
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: NgTemplateOutlet, decorators: [{
3906
+ NgTemplateOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: NgTemplateOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
3907
+ NgTemplateOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0-next.2", type: NgTemplateOutlet, isStandalone: true, selector: "[ngTemplateOutlet]", inputs: { ngTemplateOutletContext: "ngTemplateOutletContext", ngTemplateOutlet: "ngTemplateOutlet", ngTemplateOutletInjector: "ngTemplateOutletInjector" }, usesOnChanges: true, ngImport: i0 });
3908
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: NgTemplateOutlet, decorators: [{
3905
3909
  type: Directive,
3906
3910
  args: [{
3907
3911
  selector: '[ngTemplateOutlet]',
@@ -4052,9 +4056,9 @@ class AsyncPipe {
4052
4056
  }
4053
4057
  }
4054
4058
  }
4055
- AsyncPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: AsyncPipe, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe });
4056
- AsyncPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.0-next.0", ngImport: i0, type: AsyncPipe, isStandalone: true, name: "async", pure: false });
4057
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: AsyncPipe, decorators: [{
4059
+ AsyncPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: AsyncPipe, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe });
4060
+ AsyncPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.0-next.2", ngImport: i0, type: AsyncPipe, isStandalone: true, name: "async", pure: false });
4061
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: AsyncPipe, decorators: [{
4058
4062
  type: Pipe,
4059
4063
  args: [{
4060
4064
  name: 'async',
@@ -4088,9 +4092,9 @@ class LowerCasePipe {
4088
4092
  return value.toLowerCase();
4089
4093
  }
4090
4094
  }
4091
- LowerCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: LowerCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
4092
- LowerCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.0-next.0", ngImport: i0, type: LowerCasePipe, isStandalone: true, name: "lowercase" });
4093
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: LowerCasePipe, decorators: [{
4095
+ LowerCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: LowerCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
4096
+ LowerCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.0-next.2", ngImport: i0, type: LowerCasePipe, isStandalone: true, name: "lowercase" });
4097
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: LowerCasePipe, decorators: [{
4094
4098
  type: Pipe,
4095
4099
  args: [{
4096
4100
  name: 'lowercase',
@@ -4133,9 +4137,9 @@ class TitleCasePipe {
4133
4137
  return value.replace(unicodeWordMatch, (txt => txt[0].toUpperCase() + txt.slice(1).toLowerCase()));
4134
4138
  }
4135
4139
  }
4136
- TitleCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: TitleCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
4137
- TitleCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.0-next.0", ngImport: i0, type: TitleCasePipe, isStandalone: true, name: "titlecase" });
4138
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: TitleCasePipe, decorators: [{
4140
+ TitleCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: TitleCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
4141
+ TitleCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.0-next.2", ngImport: i0, type: TitleCasePipe, isStandalone: true, name: "titlecase" });
4142
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: TitleCasePipe, decorators: [{
4139
4143
  type: Pipe,
4140
4144
  args: [{
4141
4145
  name: 'titlecase',
@@ -4160,9 +4164,9 @@ class UpperCasePipe {
4160
4164
  return value.toUpperCase();
4161
4165
  }
4162
4166
  }
4163
- UpperCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: UpperCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
4164
- UpperCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.0-next.0", ngImport: i0, type: UpperCasePipe, isStandalone: true, name: "uppercase" });
4165
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: UpperCasePipe, decorators: [{
4167
+ UpperCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: UpperCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
4168
+ UpperCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.0-next.2", ngImport: i0, type: UpperCasePipe, isStandalone: true, name: "uppercase" });
4169
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: UpperCasePipe, decorators: [{
4166
4170
  type: Pipe,
4167
4171
  args: [{
4168
4172
  name: 'uppercase',
@@ -4393,9 +4397,9 @@ class DatePipe {
4393
4397
  }
4394
4398
  }
4395
4399
  }
4396
- DatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: DatePipe, deps: [{ token: LOCALE_ID }, { token: DATE_PIPE_DEFAULT_TIMEZONE, optional: true }, { token: DATE_PIPE_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Pipe });
4397
- DatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.0-next.0", ngImport: i0, type: DatePipe, isStandalone: true, name: "date" });
4398
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: DatePipe, decorators: [{
4400
+ DatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: DatePipe, deps: [{ token: LOCALE_ID }, { token: DATE_PIPE_DEFAULT_TIMEZONE, optional: true }, { token: DATE_PIPE_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Pipe });
4401
+ DatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.0-next.2", ngImport: i0, type: DatePipe, isStandalone: true, name: "date" });
4402
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: DatePipe, decorators: [{
4399
4403
  type: Pipe,
4400
4404
  args: [{
4401
4405
  name: 'date',
@@ -4453,9 +4457,9 @@ class I18nPluralPipe {
4453
4457
  return pluralMap[key].replace(_INTERPOLATION_REGEXP, value.toString());
4454
4458
  }
4455
4459
  }
4456
- I18nPluralPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: I18nPluralPipe, deps: [{ token: NgLocalization }], target: i0.ɵɵFactoryTarget.Pipe });
4457
- I18nPluralPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.0-next.0", ngImport: i0, type: I18nPluralPipe, isStandalone: true, name: "i18nPlural" });
4458
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: I18nPluralPipe, decorators: [{
4460
+ I18nPluralPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: I18nPluralPipe, deps: [{ token: NgLocalization }], target: i0.ɵɵFactoryTarget.Pipe });
4461
+ I18nPluralPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.0-next.2", ngImport: i0, type: I18nPluralPipe, isStandalone: true, name: "i18nPlural" });
4462
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: I18nPluralPipe, decorators: [{
4459
4463
  type: Pipe,
4460
4464
  args: [{
4461
4465
  name: 'i18nPlural',
@@ -4502,9 +4506,9 @@ class I18nSelectPipe {
4502
4506
  return '';
4503
4507
  }
4504
4508
  }
4505
- I18nSelectPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: I18nSelectPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
4506
- I18nSelectPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.0-next.0", ngImport: i0, type: I18nSelectPipe, isStandalone: true, name: "i18nSelect" });
4507
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: I18nSelectPipe, decorators: [{
4509
+ I18nSelectPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: I18nSelectPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
4510
+ I18nSelectPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.0-next.2", ngImport: i0, type: I18nSelectPipe, isStandalone: true, name: "i18nSelect" });
4511
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: I18nSelectPipe, decorators: [{
4508
4512
  type: Pipe,
4509
4513
  args: [{
4510
4514
  name: 'i18nSelect',
@@ -4536,9 +4540,9 @@ class JsonPipe {
4536
4540
  return JSON.stringify(value, null, 2);
4537
4541
  }
4538
4542
  }
4539
- JsonPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: JsonPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
4540
- JsonPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.0-next.0", ngImport: i0, type: JsonPipe, isStandalone: true, name: "json", pure: false });
4541
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: JsonPipe, decorators: [{
4543
+ JsonPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: JsonPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
4544
+ JsonPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.0-next.2", ngImport: i0, type: JsonPipe, isStandalone: true, name: "json", pure: false });
4545
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: JsonPipe, decorators: [{
4542
4546
  type: Pipe,
4543
4547
  args: [{
4544
4548
  name: 'json',
@@ -4599,9 +4603,9 @@ class KeyValuePipe {
4599
4603
  return this.keyValues;
4600
4604
  }
4601
4605
  }
4602
- KeyValuePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: KeyValuePipe, deps: [{ token: i0.KeyValueDiffers }], target: i0.ɵɵFactoryTarget.Pipe });
4603
- KeyValuePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.0-next.0", ngImport: i0, type: KeyValuePipe, isStandalone: true, name: "keyvalue", pure: false });
4604
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: KeyValuePipe, decorators: [{
4606
+ KeyValuePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: KeyValuePipe, deps: [{ token: i0.KeyValueDiffers }], target: i0.ɵɵFactoryTarget.Pipe });
4607
+ KeyValuePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.0-next.2", ngImport: i0, type: KeyValuePipe, isStandalone: true, name: "keyvalue", pure: false });
4608
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: KeyValuePipe, decorators: [{
4605
4609
  type: Pipe,
4606
4610
  args: [{
4607
4611
  name: 'keyvalue',
@@ -4727,9 +4731,9 @@ class DecimalPipe {
4727
4731
  }
4728
4732
  }
4729
4733
  }
4730
- DecimalPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: DecimalPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });
4731
- DecimalPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.0-next.0", ngImport: i0, type: DecimalPipe, isStandalone: true, name: "number" });
4732
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: DecimalPipe, decorators: [{
4734
+ DecimalPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: DecimalPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });
4735
+ DecimalPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.0-next.2", ngImport: i0, type: DecimalPipe, isStandalone: true, name: "number" });
4736
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: DecimalPipe, decorators: [{
4733
4737
  type: Pipe,
4734
4738
  args: [{
4735
4739
  name: 'number',
@@ -4792,9 +4796,9 @@ class PercentPipe {
4792
4796
  }
4793
4797
  }
4794
4798
  }
4795
- PercentPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: PercentPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });
4796
- PercentPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.0-next.0", ngImport: i0, type: PercentPipe, isStandalone: true, name: "percent" });
4797
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: PercentPipe, decorators: [{
4799
+ PercentPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: PercentPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });
4800
+ PercentPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.0-next.2", ngImport: i0, type: PercentPipe, isStandalone: true, name: "percent" });
4801
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: PercentPipe, decorators: [{
4798
4802
  type: Pipe,
4799
4803
  args: [{
4800
4804
  name: 'percent',
@@ -4910,9 +4914,9 @@ class CurrencyPipe {
4910
4914
  }
4911
4915
  }
4912
4916
  }
4913
- CurrencyPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: CurrencyPipe, deps: [{ token: LOCALE_ID }, { token: DEFAULT_CURRENCY_CODE }], target: i0.ɵɵFactoryTarget.Pipe });
4914
- CurrencyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.0-next.0", ngImport: i0, type: CurrencyPipe, isStandalone: true, name: "currency" });
4915
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: CurrencyPipe, decorators: [{
4917
+ CurrencyPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: CurrencyPipe, deps: [{ token: LOCALE_ID }, { token: DEFAULT_CURRENCY_CODE }], target: i0.ɵɵFactoryTarget.Pipe });
4918
+ CurrencyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.0-next.2", ngImport: i0, type: CurrencyPipe, isStandalone: true, name: "currency" });
4919
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: CurrencyPipe, decorators: [{
4916
4920
  type: Pipe,
4917
4921
  args: [{
4918
4922
  name: 'currency',
@@ -4990,9 +4994,9 @@ class SlicePipe {
4990
4994
  return typeof obj === 'string' || Array.isArray(obj);
4991
4995
  }
4992
4996
  }
4993
- SlicePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: SlicePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
4994
- SlicePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.0-next.0", ngImport: i0, type: SlicePipe, isStandalone: true, name: "slice", pure: false });
4995
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: SlicePipe, decorators: [{
4997
+ SlicePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: SlicePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
4998
+ SlicePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.0-next.2", ngImport: i0, type: SlicePipe, isStandalone: true, name: "slice", pure: false });
4999
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: SlicePipe, decorators: [{
4996
5000
  type: Pipe,
4997
5001
  args: [{
4998
5002
  name: 'slice',
@@ -5037,10 +5041,10 @@ const COMMON_PIPES = [
5037
5041
  */
5038
5042
  class CommonModule {
5039
5043
  }
5040
- CommonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: CommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5041
- CommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.0-next.0", ngImport: i0, type: CommonModule, imports: [NgClass, NgComponentOutlet, NgForOf, NgIf, NgTemplateOutlet, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgPlural, NgPluralCase, AsyncPipe, UpperCasePipe, LowerCasePipe, JsonPipe, SlicePipe, DecimalPipe, PercentPipe, TitleCasePipe, CurrencyPipe, DatePipe, I18nPluralPipe, I18nSelectPipe, KeyValuePipe], exports: [NgClass, NgComponentOutlet, NgForOf, NgIf, NgTemplateOutlet, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgPlural, NgPluralCase, AsyncPipe, UpperCasePipe, LowerCasePipe, JsonPipe, SlicePipe, DecimalPipe, PercentPipe, TitleCasePipe, CurrencyPipe, DatePipe, I18nPluralPipe, I18nSelectPipe, KeyValuePipe] });
5042
- CommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: CommonModule });
5043
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: CommonModule, decorators: [{
5044
+ CommonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: CommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5045
+ CommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.0-next.2", ngImport: i0, type: CommonModule, imports: [NgClass, NgComponentOutlet, NgForOf, NgIf, NgTemplateOutlet, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgPlural, NgPluralCase, AsyncPipe, UpperCasePipe, LowerCasePipe, JsonPipe, SlicePipe, DecimalPipe, PercentPipe, TitleCasePipe, CurrencyPipe, DatePipe, I18nPluralPipe, I18nSelectPipe, KeyValuePipe], exports: [NgClass, NgComponentOutlet, NgForOf, NgIf, NgTemplateOutlet, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgPlural, NgPluralCase, AsyncPipe, UpperCasePipe, LowerCasePipe, JsonPipe, SlicePipe, DecimalPipe, PercentPipe, TitleCasePipe, CurrencyPipe, DatePipe, I18nPluralPipe, I18nSelectPipe, KeyValuePipe] });
5046
+ CommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: CommonModule });
5047
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: CommonModule, decorators: [{
5044
5048
  type: NgModule,
5045
5049
  args: [{
5046
5050
  imports: [COMMON_DIRECTIVES, COMMON_PIPES],
@@ -5089,7 +5093,7 @@ function isPlatformWorkerUi(platformId) {
5089
5093
  /**
5090
5094
  * @publicApi
5091
5095
  */
5092
- const VERSION = new Version('15.2.0-next.0');
5096
+ const VERSION = new Version('15.2.0-next.2');
5093
5097
 
5094
5098
  /**
5095
5099
  * Defines a scroll position manager. Implemented by `BrowserViewportScroller`.
@@ -5626,9 +5630,9 @@ class LCPImageObserver {
5626
5630
  this.alreadyWarned.clear();
5627
5631
  }
5628
5632
  }
5629
- LCPImageObserver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: LCPImageObserver, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5630
- LCPImageObserver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: LCPImageObserver, providedIn: 'root' });
5631
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: LCPImageObserver, decorators: [{
5633
+ LCPImageObserver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: LCPImageObserver, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5634
+ LCPImageObserver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: LCPImageObserver, providedIn: 'root' });
5635
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: LCPImageObserver, decorators: [{
5632
5636
  type: Injectable,
5633
5637
  args: [{ providedIn: 'root' }]
5634
5638
  }], ctorParameters: function () { return []; } });
@@ -5747,9 +5751,9 @@ class PreconnectLinkChecker {
5747
5751
  this.alreadySeen.clear();
5748
5752
  }
5749
5753
  }
5750
- PreconnectLinkChecker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: PreconnectLinkChecker, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5751
- PreconnectLinkChecker.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: PreconnectLinkChecker, providedIn: 'root' });
5752
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: PreconnectLinkChecker, decorators: [{
5754
+ PreconnectLinkChecker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: PreconnectLinkChecker, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5755
+ PreconnectLinkChecker.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: PreconnectLinkChecker, providedIn: 'root' });
5756
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: PreconnectLinkChecker, decorators: [{
5753
5757
  type: Injectable,
5754
5758
  args: [{ providedIn: 'root' }]
5755
5759
  }], ctorParameters: function () { return []; } });
@@ -5836,9 +5840,9 @@ class PreloadLinkCreator {
5836
5840
  renderer.appendChild(this.document.head, preload);
5837
5841
  }
5838
5842
  }
5839
- PreloadLinkCreator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: PreloadLinkCreator, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5840
- PreloadLinkCreator.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: PreloadLinkCreator, providedIn: 'root' });
5841
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: PreloadLinkCreator, decorators: [{
5843
+ PreloadLinkCreator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: PreloadLinkCreator, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5844
+ PreloadLinkCreator.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: PreloadLinkCreator, providedIn: 'root' });
5845
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: PreloadLinkCreator, decorators: [{
5842
5846
  type: Injectable,
5843
5847
  args: [{ providedIn: 'root' }]
5844
5848
  }] });
@@ -6248,9 +6252,9 @@ class NgOptimizedImage {
6248
6252
  this.renderer.setAttribute(this.imgElement, name, value);
6249
6253
  }
6250
6254
  }
6251
- NgOptimizedImage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: NgOptimizedImage, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6252
- NgOptimizedImage.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0-next.0", type: NgOptimizedImage, isStandalone: true, selector: "img[ngSrc]", inputs: { ngSrc: "ngSrc", ngSrcset: "ngSrcset", sizes: "sizes", width: "width", height: "height", loading: "loading", priority: "priority", disableOptimizedSrcset: "disableOptimizedSrcset", fill: "fill", src: "src", srcset: "srcset" }, host: { properties: { "style.position": "fill ? \"absolute\" : null", "style.width": "fill ? \"100%\" : null", "style.height": "fill ? \"100%\" : null", "style.inset": "fill ? \"0px\" : null" } }, usesOnChanges: true, ngImport: i0 });
6253
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.0", ngImport: i0, type: NgOptimizedImage, decorators: [{
6255
+ NgOptimizedImage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: NgOptimizedImage, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6256
+ NgOptimizedImage.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0-next.2", type: NgOptimizedImage, isStandalone: true, selector: "img[ngSrc]", inputs: { ngSrc: "ngSrc", ngSrcset: "ngSrcset", sizes: "sizes", width: "width", height: "height", loading: "loading", priority: "priority", disableOptimizedSrcset: "disableOptimizedSrcset", fill: "fill", src: "src", srcset: "srcset" }, host: { properties: { "style.position": "fill ? \"absolute\" : null", "style.width": "fill ? \"100%\" : null", "style.height": "fill ? \"100%\" : null", "style.inset": "fill ? \"0px\" : null" } }, usesOnChanges: true, ngImport: i0 });
6257
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0-next.2", ngImport: i0, type: NgOptimizedImage, decorators: [{
6254
6258
  type: Directive,
6255
6259
  args: [{
6256
6260
  standalone: true,