@angular/common 15.0.0-next.0 → 15.0.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.
- package/esm2020/http/src/client.mjs +4 -4
- package/esm2020/http/src/interceptor.mjs +3 -3
- package/esm2020/http/src/jsonp.mjs +6 -6
- package/esm2020/http/src/module.mjs +15 -15
- package/esm2020/http/src/xhr.mjs +3 -3
- package/esm2020/http/src/xsrf.mjs +6 -6
- package/esm2020/http/testing/src/backend.mjs +3 -3
- package/esm2020/http/testing/src/module.mjs +4 -4
- package/esm2020/src/common.mjs +2 -2
- package/esm2020/src/common_module.mjs +4 -4
- package/esm2020/src/directives/index.mjs +3 -3
- package/esm2020/src/directives/ng_class.mjs +3 -3
- package/esm2020/src/directives/ng_component_outlet.mjs +3 -3
- package/esm2020/src/directives/ng_for_of.mjs +8 -4
- package/esm2020/src/directives/ng_if.mjs +3 -3
- package/esm2020/src/directives/ng_optimized_image/error_helper.mjs +4 -4
- package/esm2020/src/directives/ng_optimized_image/image_loaders/image_loader.mjs +4 -4
- package/esm2020/src/directives/ng_optimized_image/lcp_image_observer.mjs +11 -11
- package/esm2020/src/directives/ng_optimized_image/ng_optimized_image.mjs +88 -67
- package/esm2020/src/directives/ng_optimized_image/preconnect_link_checker.mjs +11 -10
- package/esm2020/src/directives/ng_plural.mjs +6 -6
- package/esm2020/src/directives/ng_style.mjs +3 -3
- package/esm2020/src/directives/ng_switch.mjs +9 -9
- package/esm2020/src/directives/ng_template_outlet.mjs +3 -3
- package/esm2020/src/i18n/localization.mjs +6 -6
- package/esm2020/src/location/hash_location_strategy.mjs +3 -3
- package/esm2020/src/location/location.mjs +3 -3
- package/esm2020/src/location/location_strategy.mjs +6 -6
- package/esm2020/src/location/platform_location.mjs +6 -6
- package/esm2020/src/pipes/async_pipe.mjs +3 -3
- package/esm2020/src/pipes/case_conversion_pipes.mjs +9 -9
- package/esm2020/src/pipes/date_pipe.mjs +3 -3
- package/esm2020/src/pipes/i18n_plural_pipe.mjs +3 -3
- package/esm2020/src/pipes/i18n_select_pipe.mjs +3 -3
- package/esm2020/src/pipes/json_pipe.mjs +3 -3
- package/esm2020/src/pipes/keyvalue_pipe.mjs +3 -3
- package/esm2020/src/pipes/number_pipe.mjs +9 -9
- package/esm2020/src/pipes/slice_pipe.mjs +3 -3
- package/esm2020/src/version.mjs +1 -1
- package/esm2020/testing/src/location_mock.mjs +3 -3
- package/esm2020/testing/src/mock_location_strategy.mjs +3 -3
- package/esm2020/testing/src/mock_platform_location.mjs +5 -5
- package/esm2020/upgrade/src/location_upgrade_module.mjs +4 -4
- package/fesm2015/common.mjs +216 -194
- package/fesm2015/common.mjs.map +1 -1
- package/fesm2015/http/testing.mjs +8 -8
- package/fesm2015/http.mjs +37 -37
- package/fesm2015/http.mjs.map +1 -1
- package/fesm2015/testing.mjs +11 -11
- package/fesm2015/testing.mjs.map +1 -1
- package/fesm2015/upgrade.mjs +5 -5
- package/fesm2020/common.mjs +216 -194
- package/fesm2020/common.mjs.map +1 -1
- package/fesm2020/http/testing.mjs +8 -8
- package/fesm2020/http.mjs +37 -37
- package/fesm2020/http.mjs.map +1 -1
- package/fesm2020/testing.mjs +11 -11
- package/fesm2020/testing.mjs.map +1 -1
- package/fesm2020/upgrade.mjs +5 -5
- package/http/index.d.ts +72 -69
- package/http/testing/index.d.ts +1 -1
- package/index.d.ts +27 -13
- package/package.json +2 -2
- package/testing/index.d.ts +1 -1
- package/upgrade/index.d.ts +1 -1
package/fesm2015/common.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v15.0.0-next.
|
|
2
|
+
* @license Angular v15.0.0-next.2
|
|
3
3
|
* (c) 2010-2022 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -87,9 +87,9 @@ class PlatformLocation {
|
|
|
87
87
|
throw new Error('Not implemented');
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
|
-
PlatformLocation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
91
|
-
PlatformLocation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
92
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
90
|
+
PlatformLocation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: PlatformLocation, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
91
|
+
PlatformLocation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: PlatformLocation, providedIn: 'platform', useFactory: useBrowserPlatformLocation });
|
|
92
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: PlatformLocation, decorators: [{
|
|
93
93
|
type: Injectable,
|
|
94
94
|
args: [{
|
|
95
95
|
providedIn: 'platform',
|
|
@@ -190,9 +190,9 @@ class BrowserPlatformLocation extends PlatformLocation {
|
|
|
190
190
|
return this._history.state;
|
|
191
191
|
}
|
|
192
192
|
}
|
|
193
|
-
BrowserPlatformLocation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
194
|
-
BrowserPlatformLocation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
195
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
193
|
+
BrowserPlatformLocation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: BrowserPlatformLocation, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
194
|
+
BrowserPlatformLocation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: BrowserPlatformLocation, providedIn: 'platform', useFactory: createBrowserPlatformLocation });
|
|
195
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: BrowserPlatformLocation, decorators: [{
|
|
196
196
|
type: Injectable,
|
|
197
197
|
args: [{
|
|
198
198
|
providedIn: 'platform',
|
|
@@ -313,9 +313,9 @@ class LocationStrategy {
|
|
|
313
313
|
throw new Error('Not implemented');
|
|
314
314
|
}
|
|
315
315
|
}
|
|
316
|
-
LocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
317
|
-
LocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
318
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
316
|
+
LocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: LocationStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
317
|
+
LocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: LocationStrategy, providedIn: 'root', useFactory: () => inject(PathLocationStrategy) });
|
|
318
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: LocationStrategy, decorators: [{
|
|
319
319
|
type: Injectable,
|
|
320
320
|
args: [{ providedIn: 'root', useFactory: () => inject(PathLocationStrategy) }]
|
|
321
321
|
}] });
|
|
@@ -424,9 +424,9 @@ class PathLocationStrategy extends LocationStrategy {
|
|
|
424
424
|
(_b = (_a = this._platformLocation).historyGo) === null || _b === void 0 ? void 0 : _b.call(_a, relativePosition);
|
|
425
425
|
}
|
|
426
426
|
}
|
|
427
|
-
PathLocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
428
|
-
PathLocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
429
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
427
|
+
PathLocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: PathLocationStrategy, deps: [{ token: PlatformLocation }, { token: APP_BASE_HREF, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
428
|
+
PathLocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: PathLocationStrategy, providedIn: 'root' });
|
|
429
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: PathLocationStrategy, decorators: [{
|
|
430
430
|
type: Injectable,
|
|
431
431
|
args: [{ providedIn: 'root' }]
|
|
432
432
|
}], ctorParameters: function () {
|
|
@@ -525,9 +525,9 @@ class HashLocationStrategy extends LocationStrategy {
|
|
|
525
525
|
(_b = (_a = this._platformLocation).historyGo) === null || _b === void 0 ? void 0 : _b.call(_a, relativePosition);
|
|
526
526
|
}
|
|
527
527
|
}
|
|
528
|
-
HashLocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
529
|
-
HashLocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
530
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
528
|
+
HashLocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: HashLocationStrategy, deps: [{ token: PlatformLocation }, { token: APP_BASE_HREF, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
529
|
+
HashLocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: HashLocationStrategy });
|
|
530
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: HashLocationStrategy, decorators: [{
|
|
531
531
|
type: Injectable
|
|
532
532
|
}], ctorParameters: function () {
|
|
533
533
|
return [{ type: PlatformLocation }, { type: undefined, decorators: [{
|
|
@@ -783,9 +783,9 @@ Location.joinWithSlash = joinWithSlash;
|
|
|
783
783
|
* @returns The URL string, modified if needed.
|
|
784
784
|
*/
|
|
785
785
|
Location.stripTrailingSlash = stripTrailingSlash;
|
|
786
|
-
Location.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
787
|
-
Location.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
788
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
786
|
+
Location.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: Location, deps: [{ token: LocationStrategy }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
787
|
+
Location.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: Location, providedIn: 'root', useFactory: createLocation });
|
|
788
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: Location, decorators: [{
|
|
789
789
|
type: Injectable,
|
|
790
790
|
args: [{
|
|
791
791
|
providedIn: 'root',
|
|
@@ -2601,9 +2601,9 @@ function parseIntAutoRadix(text) {
|
|
|
2601
2601
|
*/
|
|
2602
2602
|
class NgLocalization {
|
|
2603
2603
|
}
|
|
2604
|
-
NgLocalization.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
2605
|
-
NgLocalization.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
2606
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
2604
|
+
NgLocalization.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: NgLocalization, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2605
|
+
NgLocalization.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: NgLocalization, providedIn: 'root', useFactory: (locale) => new NgLocaleLocalization(locale), deps: [{ token: LOCALE_ID }] });
|
|
2606
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: NgLocalization, decorators: [{
|
|
2607
2607
|
type: Injectable,
|
|
2608
2608
|
args: [{
|
|
2609
2609
|
providedIn: 'root',
|
|
@@ -2658,9 +2658,9 @@ class NgLocaleLocalization extends NgLocalization {
|
|
|
2658
2658
|
}
|
|
2659
2659
|
}
|
|
2660
2660
|
}
|
|
2661
|
-
NgLocaleLocalization.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
2662
|
-
NgLocaleLocalization.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
2663
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
2661
|
+
NgLocaleLocalization.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: NgLocaleLocalization, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2662
|
+
NgLocaleLocalization.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: NgLocaleLocalization });
|
|
2663
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: NgLocaleLocalization, decorators: [{
|
|
2664
2664
|
type: Injectable
|
|
2665
2665
|
}], ctorParameters: function () {
|
|
2666
2666
|
return [{ type: undefined, decorators: [{
|
|
@@ -2855,9 +2855,9 @@ class NgClass {
|
|
|
2855
2855
|
}
|
|
2856
2856
|
}
|
|
2857
2857
|
}
|
|
2858
|
-
NgClass.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
2859
|
-
NgClass.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0-next.
|
|
2860
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
2858
|
+
NgClass.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: NgClass, deps: [{ token: i0.IterableDiffers }, { token: i0.KeyValueDiffers }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
|
|
2859
|
+
NgClass.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0-next.2", type: NgClass, isStandalone: true, selector: "[ngClass]", inputs: { klass: ["class", "klass"], ngClass: "ngClass" }, ngImport: i0 });
|
|
2860
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: NgClass, decorators: [{
|
|
2861
2861
|
type: Directive,
|
|
2862
2862
|
args: [{
|
|
2863
2863
|
selector: '[ngClass]',
|
|
@@ -2976,9 +2976,9 @@ class NgComponentOutlet {
|
|
|
2976
2976
|
this._moduleRef.destroy();
|
|
2977
2977
|
}
|
|
2978
2978
|
}
|
|
2979
|
-
NgComponentOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
2980
|
-
NgComponentOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0-next.
|
|
2981
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
2979
|
+
NgComponentOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: NgComponentOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
2980
|
+
NgComponentOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0-next.2", type: NgComponentOutlet, isStandalone: true, selector: "[ngComponentOutlet]", inputs: { ngComponentOutlet: "ngComponentOutlet", ngComponentOutletInjector: "ngComponentOutletInjector", ngComponentOutletContent: "ngComponentOutletContent", ngComponentOutletNgModule: "ngComponentOutletNgModule", ngComponentOutletNgModuleFactory: "ngComponentOutletNgModuleFactory" }, usesOnChanges: true, ngImport: i0 });
|
|
2981
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: NgComponentOutlet, decorators: [{
|
|
2982
2982
|
type: Directive,
|
|
2983
2983
|
args: [{
|
|
2984
2984
|
selector: '[ngComponentOutlet]',
|
|
@@ -3268,9 +3268,9 @@ class NgForOf {
|
|
|
3268
3268
|
return true;
|
|
3269
3269
|
}
|
|
3270
3270
|
}
|
|
3271
|
-
NgForOf.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
3272
|
-
NgForOf.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0-next.
|
|
3273
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
3271
|
+
NgForOf.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: NgForOf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Directive });
|
|
3272
|
+
NgForOf.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0-next.2", type: NgForOf, isStandalone: true, selector: "[ngFor][ngForOf]", inputs: { ngForOf: "ngForOf", ngForTrackBy: "ngForTrackBy", ngForTemplate: "ngForTemplate" }, ngImport: i0 });
|
|
3273
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: NgForOf, decorators: [{
|
|
3274
3274
|
type: Directive,
|
|
3275
3275
|
args: [{
|
|
3276
3276
|
selector: '[ngFor][ngForOf]',
|
|
@@ -3503,9 +3503,9 @@ class NgIf {
|
|
|
3503
3503
|
return true;
|
|
3504
3504
|
}
|
|
3505
3505
|
}
|
|
3506
|
-
NgIf.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
3507
|
-
NgIf.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0-next.
|
|
3508
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
3506
|
+
NgIf.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: NgIf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
3507
|
+
NgIf.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0-next.2", type: NgIf, isStandalone: true, selector: "[ngIf]", inputs: { ngIf: "ngIf", ngIfThen: "ngIfThen", ngIfElse: "ngIfElse" }, ngImport: i0 });
|
|
3508
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: NgIf, decorators: [{
|
|
3509
3509
|
type: Directive,
|
|
3510
3510
|
args: [{
|
|
3511
3511
|
selector: '[ngIf]',
|
|
@@ -3676,9 +3676,9 @@ class NgSwitch {
|
|
|
3676
3676
|
}
|
|
3677
3677
|
}
|
|
3678
3678
|
}
|
|
3679
|
-
NgSwitch.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
3680
|
-
NgSwitch.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0-next.
|
|
3681
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
3679
|
+
NgSwitch.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: NgSwitch, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
3680
|
+
NgSwitch.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0-next.2", type: NgSwitch, isStandalone: true, selector: "[ngSwitch]", inputs: { ngSwitch: "ngSwitch" }, ngImport: i0 });
|
|
3681
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: NgSwitch, decorators: [{
|
|
3682
3682
|
type: Directive,
|
|
3683
3683
|
args: [{
|
|
3684
3684
|
selector: '[ngSwitch]',
|
|
@@ -3737,9 +3737,9 @@ class NgSwitchCase {
|
|
|
3737
3737
|
this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase));
|
|
3738
3738
|
}
|
|
3739
3739
|
}
|
|
3740
|
-
NgSwitchCase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
3741
|
-
NgSwitchCase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0-next.
|
|
3742
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
3740
|
+
NgSwitchCase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: NgSwitchCase, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: NgSwitch, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
3741
|
+
NgSwitchCase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0-next.2", type: NgSwitchCase, isStandalone: true, selector: "[ngSwitchCase]", inputs: { ngSwitchCase: "ngSwitchCase" }, ngImport: i0 });
|
|
3742
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: NgSwitchCase, decorators: [{
|
|
3743
3743
|
type: Directive,
|
|
3744
3744
|
args: [{
|
|
3745
3745
|
selector: '[ngSwitchCase]',
|
|
@@ -3776,9 +3776,9 @@ class NgSwitchDefault {
|
|
|
3776
3776
|
ngSwitch._addDefault(new SwitchView(viewContainer, templateRef));
|
|
3777
3777
|
}
|
|
3778
3778
|
}
|
|
3779
|
-
NgSwitchDefault.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
3780
|
-
NgSwitchDefault.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0-next.
|
|
3781
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
3779
|
+
NgSwitchDefault.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: NgSwitchDefault, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: NgSwitch, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
3780
|
+
NgSwitchDefault.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0-next.2", type: NgSwitchDefault, isStandalone: true, selector: "[ngSwitchDefault]", ngImport: i0 });
|
|
3781
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: NgSwitchDefault, decorators: [{
|
|
3782
3782
|
type: Directive,
|
|
3783
3783
|
args: [{
|
|
3784
3784
|
selector: '[ngSwitchDefault]',
|
|
@@ -3864,9 +3864,9 @@ class NgPlural {
|
|
|
3864
3864
|
}
|
|
3865
3865
|
}
|
|
3866
3866
|
}
|
|
3867
|
-
NgPlural.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
3868
|
-
NgPlural.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0-next.
|
|
3869
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
3867
|
+
NgPlural.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: NgPlural, deps: [{ token: NgLocalization }], target: i0.ɵɵFactoryTarget.Directive });
|
|
3868
|
+
NgPlural.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0-next.2", type: NgPlural, isStandalone: true, selector: "[ngPlural]", inputs: { ngPlural: "ngPlural" }, ngImport: i0 });
|
|
3869
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: NgPlural, decorators: [{
|
|
3870
3870
|
type: Directive,
|
|
3871
3871
|
args: [{
|
|
3872
3872
|
selector: '[ngPlural]',
|
|
@@ -3902,9 +3902,9 @@ class NgPluralCase {
|
|
|
3902
3902
|
ngPlural.addCase(isANumber ? `=${value}` : value, new SwitchView(viewContainer, template));
|
|
3903
3903
|
}
|
|
3904
3904
|
}
|
|
3905
|
-
NgPluralCase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
3906
|
-
NgPluralCase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0-next.
|
|
3907
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
3905
|
+
NgPluralCase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.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 });
|
|
3906
|
+
NgPluralCase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0-next.2", type: NgPluralCase, isStandalone: true, selector: "[ngPluralCase]", ngImport: i0 });
|
|
3907
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: NgPluralCase, decorators: [{
|
|
3908
3908
|
type: Directive,
|
|
3909
3909
|
args: [{
|
|
3910
3910
|
selector: '[ngPluralCase]',
|
|
@@ -4000,9 +4000,9 @@ class NgStyle {
|
|
|
4000
4000
|
changes.forEachChangedItem((record) => this._setStyle(record.key, record.currentValue));
|
|
4001
4001
|
}
|
|
4002
4002
|
}
|
|
4003
|
-
NgStyle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
4004
|
-
NgStyle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0-next.
|
|
4005
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
4003
|
+
NgStyle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: NgStyle, deps: [{ token: i0.ElementRef }, { token: i0.KeyValueDiffers }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
|
|
4004
|
+
NgStyle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0-next.2", type: NgStyle, isStandalone: true, selector: "[ngStyle]", inputs: { ngStyle: "ngStyle" }, ngImport: i0 });
|
|
4005
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: NgStyle, decorators: [{
|
|
4006
4006
|
type: Directive,
|
|
4007
4007
|
args: [{
|
|
4008
4008
|
selector: '[ngStyle]',
|
|
@@ -4082,9 +4082,9 @@ class NgTemplateOutlet {
|
|
|
4082
4082
|
}
|
|
4083
4083
|
}
|
|
4084
4084
|
}
|
|
4085
|
-
NgTemplateOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
4086
|
-
NgTemplateOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0-next.
|
|
4087
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
4085
|
+
NgTemplateOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: NgTemplateOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
4086
|
+
NgTemplateOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0-next.2", type: NgTemplateOutlet, isStandalone: true, selector: "[ngTemplateOutlet]", inputs: { ngTemplateOutletContext: "ngTemplateOutletContext", ngTemplateOutlet: "ngTemplateOutlet", ngTemplateOutletInjector: "ngTemplateOutletInjector" }, usesOnChanges: true, ngImport: i0 });
|
|
4087
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: NgTemplateOutlet, decorators: [{
|
|
4088
4088
|
type: Directive,
|
|
4089
4089
|
args: [{
|
|
4090
4090
|
selector: '[ngTemplateOutlet]',
|
|
@@ -4256,9 +4256,9 @@ class AsyncPipe {
|
|
|
4256
4256
|
}
|
|
4257
4257
|
}
|
|
4258
4258
|
}
|
|
4259
|
-
AsyncPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
4260
|
-
AsyncPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.0-next.
|
|
4261
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
4259
|
+
AsyncPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: AsyncPipe, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
4260
|
+
AsyncPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.0-next.2", ngImport: i0, type: AsyncPipe, isStandalone: true, name: "async", pure: false });
|
|
4261
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: AsyncPipe, decorators: [{
|
|
4262
4262
|
type: Pipe,
|
|
4263
4263
|
args: [{
|
|
4264
4264
|
name: 'async',
|
|
@@ -4299,9 +4299,9 @@ class LowerCasePipe {
|
|
|
4299
4299
|
return value.toLowerCase();
|
|
4300
4300
|
}
|
|
4301
4301
|
}
|
|
4302
|
-
LowerCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
4303
|
-
LowerCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.0-next.
|
|
4304
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
4302
|
+
LowerCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: LowerCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
4303
|
+
LowerCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.0-next.2", ngImport: i0, type: LowerCasePipe, isStandalone: true, name: "lowercase" });
|
|
4304
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: LowerCasePipe, decorators: [{
|
|
4305
4305
|
type: Pipe,
|
|
4306
4306
|
args: [{
|
|
4307
4307
|
name: 'lowercase',
|
|
@@ -4344,9 +4344,9 @@ class TitleCasePipe {
|
|
|
4344
4344
|
return value.replace(unicodeWordMatch, (txt => txt[0].toUpperCase() + txt.slice(1).toLowerCase()));
|
|
4345
4345
|
}
|
|
4346
4346
|
}
|
|
4347
|
-
TitleCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
4348
|
-
TitleCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.0-next.
|
|
4349
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
4347
|
+
TitleCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: TitleCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
4348
|
+
TitleCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.0-next.2", ngImport: i0, type: TitleCasePipe, isStandalone: true, name: "titlecase" });
|
|
4349
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: TitleCasePipe, decorators: [{
|
|
4350
4350
|
type: Pipe,
|
|
4351
4351
|
args: [{
|
|
4352
4352
|
name: 'titlecase',
|
|
@@ -4371,9 +4371,9 @@ class UpperCasePipe {
|
|
|
4371
4371
|
return value.toUpperCase();
|
|
4372
4372
|
}
|
|
4373
4373
|
}
|
|
4374
|
-
UpperCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
4375
|
-
UpperCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.0-next.
|
|
4376
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
4374
|
+
UpperCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: UpperCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
4375
|
+
UpperCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.0-next.2", ngImport: i0, type: UpperCasePipe, isStandalone: true, name: "uppercase" });
|
|
4376
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: UpperCasePipe, decorators: [{
|
|
4377
4377
|
type: Pipe,
|
|
4378
4378
|
args: [{
|
|
4379
4379
|
name: 'uppercase',
|
|
@@ -4569,9 +4569,9 @@ class DatePipe {
|
|
|
4569
4569
|
}
|
|
4570
4570
|
}
|
|
4571
4571
|
}
|
|
4572
|
-
DatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
4573
|
-
DatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.0-next.
|
|
4574
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
4572
|
+
DatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: DatePipe, deps: [{ token: LOCALE_ID }, { token: DATE_PIPE_DEFAULT_TIMEZONE, optional: true }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
4573
|
+
DatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.0-next.2", ngImport: i0, type: DatePipe, isStandalone: true, name: "date" });
|
|
4574
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: DatePipe, decorators: [{
|
|
4575
4575
|
type: Pipe,
|
|
4576
4576
|
args: [{
|
|
4577
4577
|
name: 'date',
|
|
@@ -4633,9 +4633,9 @@ class I18nPluralPipe {
|
|
|
4633
4633
|
return pluralMap[key].replace(_INTERPOLATION_REGEXP, value.toString());
|
|
4634
4634
|
}
|
|
4635
4635
|
}
|
|
4636
|
-
I18nPluralPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
4637
|
-
I18nPluralPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.0-next.
|
|
4638
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
4636
|
+
I18nPluralPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: I18nPluralPipe, deps: [{ token: NgLocalization }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
4637
|
+
I18nPluralPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.0-next.2", ngImport: i0, type: I18nPluralPipe, isStandalone: true, name: "i18nPlural" });
|
|
4638
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: I18nPluralPipe, decorators: [{
|
|
4639
4639
|
type: Pipe,
|
|
4640
4640
|
args: [{
|
|
4641
4641
|
name: 'i18nPlural',
|
|
@@ -4689,9 +4689,9 @@ class I18nSelectPipe {
|
|
|
4689
4689
|
return '';
|
|
4690
4690
|
}
|
|
4691
4691
|
}
|
|
4692
|
-
I18nSelectPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
4693
|
-
I18nSelectPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.0-next.
|
|
4694
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
4692
|
+
I18nSelectPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: I18nSelectPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
4693
|
+
I18nSelectPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.0-next.2", ngImport: i0, type: I18nSelectPipe, isStandalone: true, name: "i18nSelect" });
|
|
4694
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: I18nSelectPipe, decorators: [{
|
|
4695
4695
|
type: Pipe,
|
|
4696
4696
|
args: [{
|
|
4697
4697
|
name: 'i18nSelect',
|
|
@@ -4730,9 +4730,9 @@ class JsonPipe {
|
|
|
4730
4730
|
return JSON.stringify(value, null, 2);
|
|
4731
4731
|
}
|
|
4732
4732
|
}
|
|
4733
|
-
JsonPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
4734
|
-
JsonPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.0-next.
|
|
4735
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
4733
|
+
JsonPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: JsonPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
4734
|
+
JsonPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.0-next.2", ngImport: i0, type: JsonPipe, isStandalone: true, name: "json", pure: false });
|
|
4735
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: JsonPipe, decorators: [{
|
|
4736
4736
|
type: Pipe,
|
|
4737
4737
|
args: [{
|
|
4738
4738
|
name: 'json',
|
|
@@ -4800,9 +4800,9 @@ class KeyValuePipe {
|
|
|
4800
4800
|
return this.keyValues;
|
|
4801
4801
|
}
|
|
4802
4802
|
}
|
|
4803
|
-
KeyValuePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
4804
|
-
KeyValuePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.0-next.
|
|
4805
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
4803
|
+
KeyValuePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: KeyValuePipe, deps: [{ token: i0.KeyValueDiffers }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
4804
|
+
KeyValuePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.0-next.2", ngImport: i0, type: KeyValuePipe, isStandalone: true, name: "keyvalue", pure: false });
|
|
4805
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: KeyValuePipe, decorators: [{
|
|
4806
4806
|
type: Pipe,
|
|
4807
4807
|
args: [{
|
|
4808
4808
|
name: 'keyvalue',
|
|
@@ -4935,9 +4935,9 @@ class DecimalPipe {
|
|
|
4935
4935
|
}
|
|
4936
4936
|
}
|
|
4937
4937
|
}
|
|
4938
|
-
DecimalPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
4939
|
-
DecimalPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.0-next.
|
|
4940
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
4938
|
+
DecimalPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: DecimalPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
4939
|
+
DecimalPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.0-next.2", ngImport: i0, type: DecimalPipe, isStandalone: true, name: "number" });
|
|
4940
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: DecimalPipe, decorators: [{
|
|
4941
4941
|
type: Pipe,
|
|
4942
4942
|
args: [{
|
|
4943
4943
|
name: 'number',
|
|
@@ -5002,9 +5002,9 @@ class PercentPipe {
|
|
|
5002
5002
|
}
|
|
5003
5003
|
}
|
|
5004
5004
|
}
|
|
5005
|
-
PercentPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
5006
|
-
PercentPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.0-next.
|
|
5007
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
5005
|
+
PercentPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: PercentPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
5006
|
+
PercentPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.0-next.2", ngImport: i0, type: PercentPipe, isStandalone: true, name: "percent" });
|
|
5007
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: PercentPipe, decorators: [{
|
|
5008
5008
|
type: Pipe,
|
|
5009
5009
|
args: [{
|
|
5010
5010
|
name: 'percent',
|
|
@@ -5122,9 +5122,9 @@ class CurrencyPipe {
|
|
|
5122
5122
|
}
|
|
5123
5123
|
}
|
|
5124
5124
|
}
|
|
5125
|
-
CurrencyPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
5126
|
-
CurrencyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.0-next.
|
|
5127
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
5125
|
+
CurrencyPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: CurrencyPipe, deps: [{ token: LOCALE_ID }, { token: DEFAULT_CURRENCY_CODE }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
5126
|
+
CurrencyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.0-next.2", ngImport: i0, type: CurrencyPipe, isStandalone: true, name: "currency" });
|
|
5127
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: CurrencyPipe, decorators: [{
|
|
5128
5128
|
type: Pipe,
|
|
5129
5129
|
args: [{
|
|
5130
5130
|
name: 'currency',
|
|
@@ -5211,9 +5211,9 @@ class SlicePipe {
|
|
|
5211
5211
|
return typeof obj === 'string' || Array.isArray(obj);
|
|
5212
5212
|
}
|
|
5213
5213
|
}
|
|
5214
|
-
SlicePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
5215
|
-
SlicePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.0-next.
|
|
5216
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
5214
|
+
SlicePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: SlicePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
5215
|
+
SlicePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.0-next.2", ngImport: i0, type: SlicePipe, isStandalone: true, name: "slice", pure: false });
|
|
5216
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: SlicePipe, decorators: [{
|
|
5217
5217
|
type: Pipe,
|
|
5218
5218
|
args: [{
|
|
5219
5219
|
name: 'slice',
|
|
@@ -5267,10 +5267,10 @@ const COMMON_PIPES = [
|
|
|
5267
5267
|
*/
|
|
5268
5268
|
class CommonModule {
|
|
5269
5269
|
}
|
|
5270
|
-
CommonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
5271
|
-
CommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.0-next.
|
|
5272
|
-
CommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
5273
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
5270
|
+
CommonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: CommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
5271
|
+
CommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.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] });
|
|
5272
|
+
CommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: CommonModule });
|
|
5273
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: CommonModule, decorators: [{
|
|
5274
5274
|
type: NgModule,
|
|
5275
5275
|
args: [{
|
|
5276
5276
|
imports: [COMMON_DIRECTIVES, COMMON_PIPES],
|
|
@@ -5328,7 +5328,7 @@ function isPlatformWorkerUi(platformId) {
|
|
|
5328
5328
|
/**
|
|
5329
5329
|
* @publicApi
|
|
5330
5330
|
*/
|
|
5331
|
-
const VERSION = new Version('15.0.0-next.
|
|
5331
|
+
const VERSION = new Version('15.0.0-next.2');
|
|
5332
5332
|
|
|
5333
5333
|
/**
|
|
5334
5334
|
* @license
|
|
@@ -5580,9 +5580,9 @@ function assertDevMode(checkName) {
|
|
|
5580
5580
|
* found in the LICENSE file at https://angular.io/license
|
|
5581
5581
|
*/
|
|
5582
5582
|
// Assembles directive details string, useful for error messages.
|
|
5583
|
-
function imgDirectiveDetails(
|
|
5584
|
-
const
|
|
5585
|
-
return `The NgOptimizedImage directive ${
|
|
5583
|
+
function imgDirectiveDetails(ngSrc, includeNgSrc = true) {
|
|
5584
|
+
const ngSrcInfo = includeNgSrc ? `(activated on an <img> element with the \`ngSrc="${ngSrc}"\`) ` : '';
|
|
5585
|
+
return `The NgOptimizedImage directive ${ngSrcInfo}has detected that`;
|
|
5586
5586
|
}
|
|
5587
5587
|
|
|
5588
5588
|
/**
|
|
@@ -5665,6 +5665,7 @@ const PRECONNECT_CHECK_BLOCKLIST = new InjectionToken('PRECONNECT_CHECK_BLOCKLIS
|
|
|
5665
5665
|
*/
|
|
5666
5666
|
class PreconnectLinkChecker {
|
|
5667
5667
|
constructor() {
|
|
5668
|
+
this.document = inject(DOCUMENT);
|
|
5668
5669
|
/**
|
|
5669
5670
|
* Set of <link rel="preconnect"> tags found on this page.
|
|
5670
5671
|
* The `null` value indicates that there was no DOM query operation performed.
|
|
@@ -5677,7 +5678,7 @@ class PreconnectLinkChecker {
|
|
|
5677
5678
|
this.window = null;
|
|
5678
5679
|
this.blocklist = new Set(INTERNAL_PRECONNECT_CHECK_BLOCKLIST);
|
|
5679
5680
|
assertDevMode('preconnect link checker');
|
|
5680
|
-
const win =
|
|
5681
|
+
const win = this.document.defaultView;
|
|
5681
5682
|
if (typeof win !== 'undefined') {
|
|
5682
5683
|
this.window = win;
|
|
5683
5684
|
}
|
|
@@ -5702,9 +5703,9 @@ class PreconnectLinkChecker {
|
|
|
5702
5703
|
* given src.
|
|
5703
5704
|
*
|
|
5704
5705
|
* @param rewrittenSrc src formatted with loader
|
|
5705
|
-
* @param
|
|
5706
|
+
* @param originalNgSrc ngSrc value
|
|
5706
5707
|
*/
|
|
5707
|
-
assertPreconnect(rewrittenSrc,
|
|
5708
|
+
assertPreconnect(rewrittenSrc, originalNgSrc) {
|
|
5708
5709
|
if (!this.window)
|
|
5709
5710
|
return;
|
|
5710
5711
|
const imgUrl = getUrl(rewrittenSrc, this.window);
|
|
@@ -5720,8 +5721,8 @@ class PreconnectLinkChecker {
|
|
|
5720
5721
|
this.preconnectLinks = this.queryPreconnectLinks();
|
|
5721
5722
|
}
|
|
5722
5723
|
if (!this.preconnectLinks.has(imgUrl.origin)) {
|
|
5723
|
-
console.warn(ɵformatRuntimeError(2956 /* RuntimeErrorCode.PRIORITY_IMG_MISSING_PRECONNECT_TAG */, `${imgDirectiveDetails(
|
|
5724
|
-
`Preconnecting to the origin(s) that serve priority images ensures that these ` +
|
|
5724
|
+
console.warn(ɵformatRuntimeError(2956 /* RuntimeErrorCode.PRIORITY_IMG_MISSING_PRECONNECT_TAG */, `${imgDirectiveDetails(originalNgSrc)} there is no preconnect tag present for this ` +
|
|
5725
|
+
`image. Preconnecting to the origin(s) that serve priority images ensures that these ` +
|
|
5725
5726
|
`images are delivered as soon as possible. To fix this, please add the following ` +
|
|
5726
5727
|
`element into the <head> of the document:\n` +
|
|
5727
5728
|
` <link rel="preconnect" href="${imgUrl.origin}">`));
|
|
@@ -5730,7 +5731,7 @@ class PreconnectLinkChecker {
|
|
|
5730
5731
|
queryPreconnectLinks() {
|
|
5731
5732
|
const preconnectUrls = new Set();
|
|
5732
5733
|
const selector = 'link[rel=preconnect]';
|
|
5733
|
-
const links = Array.from(document.querySelectorAll(selector));
|
|
5734
|
+
const links = Array.from(this.document.querySelectorAll(selector));
|
|
5734
5735
|
for (let link of links) {
|
|
5735
5736
|
const url = getUrl(link.href, this.window);
|
|
5736
5737
|
preconnectUrls.add(url.origin);
|
|
@@ -5743,9 +5744,9 @@ class PreconnectLinkChecker {
|
|
|
5743
5744
|
this.alreadySeen.clear();
|
|
5744
5745
|
}
|
|
5745
5746
|
}
|
|
5746
|
-
PreconnectLinkChecker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
5747
|
-
PreconnectLinkChecker.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
5748
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
5747
|
+
PreconnectLinkChecker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: PreconnectLinkChecker, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
5748
|
+
PreconnectLinkChecker.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: PreconnectLinkChecker, providedIn: 'root' });
|
|
5749
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: PreconnectLinkChecker, decorators: [{
|
|
5749
5750
|
type: Injectable,
|
|
5750
5751
|
args: [{ providedIn: 'root' }]
|
|
5751
5752
|
}], ctorParameters: function () { return []; } });
|
|
@@ -5828,10 +5829,10 @@ function throwInvalidPathError(path, exampleUrls) {
|
|
|
5828
5829
|
}
|
|
5829
5830
|
function throwUnexpectedAbsoluteUrlError(path, url) {
|
|
5830
5831
|
throw new ɵRuntimeError(2959 /* RuntimeErrorCode.INVALID_LOADER_ARGUMENTS */, ngDevMode &&
|
|
5831
|
-
`Image loader has detected a \`<img>\` tag with an invalid \`
|
|
5832
|
-
`This image loader expects \`
|
|
5832
|
+
`Image loader has detected a \`<img>\` tag with an invalid \`ngSrc\` attribute: ${url}. ` +
|
|
5833
|
+
`This image loader expects \`ngSrc\` to be a relative URL - ` +
|
|
5833
5834
|
`however the provided value is an absolute URL. ` +
|
|
5834
|
-
`To fix this, provide \`
|
|
5835
|
+
`To fix this, provide \`ngSrc\` as a path relative to the base URL ` +
|
|
5835
5836
|
`configured for this loader (\`${path}\`).`);
|
|
5836
5837
|
}
|
|
5837
5838
|
|
|
@@ -5996,7 +5997,7 @@ function createImgixUrl(path, config) {
|
|
|
5996
5997
|
*/
|
|
5997
5998
|
class LCPImageObserver {
|
|
5998
5999
|
constructor() {
|
|
5999
|
-
// Map of full image URLs -> original `
|
|
6000
|
+
// Map of full image URLs -> original `ngSrc` values.
|
|
6000
6001
|
this.images = new Map();
|
|
6001
6002
|
// Keep track of images for which `console.warn` was produced.
|
|
6002
6003
|
this.alreadyWarned = new Set();
|
|
@@ -6030,8 +6031,8 @@ class LCPImageObserver {
|
|
|
6030
6031
|
// Exclude `data:` and `blob:` URLs, since they are not supported by the directive.
|
|
6031
6032
|
if (imgSrc.startsWith('data:') || imgSrc.startsWith('blob:'))
|
|
6032
6033
|
return;
|
|
6033
|
-
const
|
|
6034
|
-
if (
|
|
6034
|
+
const imgNgSrc = this.images.get(imgSrc);
|
|
6035
|
+
if (imgNgSrc && !this.alreadyWarned.has(imgSrc)) {
|
|
6035
6036
|
this.alreadyWarned.add(imgSrc);
|
|
6036
6037
|
logMissingPriorityWarning(imgSrc);
|
|
6037
6038
|
}
|
|
@@ -6039,10 +6040,10 @@ class LCPImageObserver {
|
|
|
6039
6040
|
observer.observe({ type: 'largest-contentful-paint', buffered: true });
|
|
6040
6041
|
return observer;
|
|
6041
6042
|
}
|
|
6042
|
-
registerImage(rewrittenSrc,
|
|
6043
|
+
registerImage(rewrittenSrc, originalNgSrc) {
|
|
6043
6044
|
if (!this.observer)
|
|
6044
6045
|
return;
|
|
6045
|
-
this.images.set(getUrl(rewrittenSrc, this.window).href,
|
|
6046
|
+
this.images.set(getUrl(rewrittenSrc, this.window).href, originalNgSrc);
|
|
6046
6047
|
}
|
|
6047
6048
|
unregisterImage(rewrittenSrc) {
|
|
6048
6049
|
if (!this.observer)
|
|
@@ -6057,14 +6058,14 @@ class LCPImageObserver {
|
|
|
6057
6058
|
this.alreadyWarned.clear();
|
|
6058
6059
|
}
|
|
6059
6060
|
}
|
|
6060
|
-
LCPImageObserver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
6061
|
-
LCPImageObserver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
6062
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
6061
|
+
LCPImageObserver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: LCPImageObserver, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
6062
|
+
LCPImageObserver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: LCPImageObserver, providedIn: 'root' });
|
|
6063
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: LCPImageObserver, decorators: [{
|
|
6063
6064
|
type: Injectable,
|
|
6064
6065
|
args: [{ providedIn: 'root' }]
|
|
6065
6066
|
}], ctorParameters: function () { return []; } });
|
|
6066
|
-
function logMissingPriorityWarning(
|
|
6067
|
-
const directiveDetails = imgDirectiveDetails(
|
|
6067
|
+
function logMissingPriorityWarning(ngSrc) {
|
|
6068
|
+
const directiveDetails = imgDirectiveDetails(ngSrc);
|
|
6068
6069
|
console.warn(ɵformatRuntimeError(2955 /* RuntimeErrorCode.LCP_IMG_MISSING_PRIORITY */, `${directiveDetails} this image is the Largest Contentful Paint (LCP) ` +
|
|
6069
6070
|
`element but was not marked "priority". This image should be marked ` +
|
|
6070
6071
|
`"priority" in order to prioritize its loading. ` +
|
|
@@ -6139,8 +6140,8 @@ const OVERSIZED_IMAGE_TOLERANCE = 1000;
|
|
|
6139
6140
|
* Follow the steps below to enable and use the directive:
|
|
6140
6141
|
* 1. Import it into the necessary NgModule or a standalone Component.
|
|
6141
6142
|
* 2. Optionally provide an `ImageLoader` if you use an image hosting service.
|
|
6142
|
-
* 3. Update the necessary `<img>` tags in templates and replace `src` attributes with `
|
|
6143
|
-
* Using a `
|
|
6143
|
+
* 3. Update the necessary `<img>` tags in templates and replace `src` attributes with `ngSrc`.
|
|
6144
|
+
* Using a `ngSrc` allows the directive to control when the `src` gets set, which triggers an image
|
|
6144
6145
|
* download.
|
|
6145
6146
|
*
|
|
6146
6147
|
* Step 1: import the `NgOptimizedImage` directive.
|
|
@@ -6166,7 +6167,7 @@ const OVERSIZED_IMAGE_TOLERANCE = 1000;
|
|
|
6166
6167
|
*
|
|
6167
6168
|
* To use the **default loader**: no additional code changes are necessary. The URL returned by the
|
|
6168
6169
|
* generic loader will always match the value of "src". In other words, this loader applies no
|
|
6169
|
-
* transformations to the resource URL and the value of the `
|
|
6170
|
+
* transformations to the resource URL and the value of the `ngSrc` attribute will be used as is.
|
|
6170
6171
|
*
|
|
6171
6172
|
* To use an existing loader for a **third-party image service**: add the provider factory for your
|
|
6172
6173
|
* chosen service to the `providers` array. In the example below, the Imgix loader is used:
|
|
@@ -6206,10 +6207,10 @@ const OVERSIZED_IMAGE_TOLERANCE = 1000;
|
|
|
6206
6207
|
* ],
|
|
6207
6208
|
* ```
|
|
6208
6209
|
*
|
|
6209
|
-
* Step 3: update `<img>` tags in templates to use `
|
|
6210
|
+
* Step 3: update `<img>` tags in templates to use `ngSrc` instead of `src`.
|
|
6210
6211
|
*
|
|
6211
6212
|
* ```
|
|
6212
|
-
* <img
|
|
6213
|
+
* <img ngSrc="logo.png" width="200" height="100">
|
|
6213
6214
|
* ```
|
|
6214
6215
|
*
|
|
6215
6216
|
* @publicApi
|
|
@@ -6232,6 +6233,25 @@ class NgOptimizedImage {
|
|
|
6232
6233
|
this._renderedSrc = null;
|
|
6233
6234
|
this._priority = false;
|
|
6234
6235
|
}
|
|
6236
|
+
/**
|
|
6237
|
+
* Previously, the `rawSrc` attribute was used to activate the directive.
|
|
6238
|
+
* The attribute was renamed to `ngSrc` and this input just produces an error,
|
|
6239
|
+
* suggesting to switch to `ngSrc` instead.
|
|
6240
|
+
*
|
|
6241
|
+
* This error should be removed in v15.
|
|
6242
|
+
*
|
|
6243
|
+
* @nodoc
|
|
6244
|
+
* @deprecated Use `ngSrc` instead.
|
|
6245
|
+
*/
|
|
6246
|
+
set rawSrc(value) {
|
|
6247
|
+
if (ngDevMode) {
|
|
6248
|
+
throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(value, false)} the \`rawSrc\` attribute was used ` +
|
|
6249
|
+
`to activate the directive. Newer version of the directive uses the \`ngSrc\` ` +
|
|
6250
|
+
`attribute instead. Please replace \`rawSrc\` with \`ngSrc\` and ` +
|
|
6251
|
+
`\`rawSrcset\` with \`ngSrcset\` attributes in the template to ` +
|
|
6252
|
+
`enable image optimizations.`);
|
|
6253
|
+
}
|
|
6254
|
+
}
|
|
6235
6255
|
/**
|
|
6236
6256
|
* The intrinsic width of the image in pixels.
|
|
6237
6257
|
*/
|
|
@@ -6263,8 +6283,8 @@ class NgOptimizedImage {
|
|
|
6263
6283
|
}
|
|
6264
6284
|
ngOnInit() {
|
|
6265
6285
|
if (ngDevMode) {
|
|
6266
|
-
assertNonEmptyInput(this, '
|
|
6267
|
-
|
|
6286
|
+
assertNonEmptyInput(this, 'ngSrc', this.ngSrc);
|
|
6287
|
+
assertValidNgSrcset(this, this.ngSrcset);
|
|
6268
6288
|
assertNoConflictingSrc(this);
|
|
6269
6289
|
assertNoConflictingSrcset(this);
|
|
6270
6290
|
assertNotBase64Image(this);
|
|
@@ -6274,7 +6294,7 @@ class NgOptimizedImage {
|
|
|
6274
6294
|
assertNoImageDistortion(this, this.imgElement, this.renderer);
|
|
6275
6295
|
if (this.priority) {
|
|
6276
6296
|
const checker = this.injector.get(PreconnectLinkChecker);
|
|
6277
|
-
checker.assertPreconnect(this.getRewrittenSrc(), this.
|
|
6297
|
+
checker.assertPreconnect(this.getRewrittenSrc(), this.ngSrc);
|
|
6278
6298
|
}
|
|
6279
6299
|
else {
|
|
6280
6300
|
// Monitor whether an image is an LCP element only in case
|
|
@@ -6283,7 +6303,7 @@ class NgOptimizedImage {
|
|
|
6283
6303
|
if (this.lcpObserver !== null) {
|
|
6284
6304
|
const ngZone = this.injector.get(NgZone);
|
|
6285
6305
|
ngZone.runOutsideAngular(() => {
|
|
6286
|
-
this.lcpObserver.registerImage(this.getRewrittenSrc(), this.
|
|
6306
|
+
this.lcpObserver.registerImage(this.getRewrittenSrc(), this.ngSrc);
|
|
6287
6307
|
});
|
|
6288
6308
|
}
|
|
6289
6309
|
}
|
|
@@ -6300,13 +6320,13 @@ class NgOptimizedImage {
|
|
|
6300
6320
|
// The `src` and `srcset` attributes should be set last since other attributes
|
|
6301
6321
|
// could affect the image's loading behavior.
|
|
6302
6322
|
this.setHostAttribute('src', this.getRewrittenSrc());
|
|
6303
|
-
if (this.
|
|
6323
|
+
if (this.ngSrcset) {
|
|
6304
6324
|
this.setHostAttribute('srcset', this.getRewrittenSrcset());
|
|
6305
6325
|
}
|
|
6306
6326
|
}
|
|
6307
6327
|
ngOnChanges(changes) {
|
|
6308
6328
|
if (ngDevMode) {
|
|
6309
|
-
assertNoPostInitInputChange(this, changes, ['
|
|
6329
|
+
assertNoPostInitInputChange(this, changes, ['ngSrc', 'ngSrcset', 'width', 'height', 'priority']);
|
|
6310
6330
|
}
|
|
6311
6331
|
}
|
|
6312
6332
|
getLoadingBehavior() {
|
|
@@ -6323,18 +6343,18 @@ class NgOptimizedImage {
|
|
|
6323
6343
|
// because if the developer uses rendered width instead of intrinsic width in the HTML width
|
|
6324
6344
|
// attribute, the image requested may be too small for 2x+ screens.
|
|
6325
6345
|
if (!this._renderedSrc) {
|
|
6326
|
-
const imgConfig = { src: this.
|
|
6346
|
+
const imgConfig = { src: this.ngSrc };
|
|
6327
6347
|
// Cache calculated image src to reuse it later in the code.
|
|
6328
6348
|
this._renderedSrc = this.imageLoader(imgConfig);
|
|
6329
6349
|
}
|
|
6330
6350
|
return this._renderedSrc;
|
|
6331
6351
|
}
|
|
6332
6352
|
getRewrittenSrcset() {
|
|
6333
|
-
const widthSrcSet = VALID_WIDTH_DESCRIPTOR_SRCSET.test(this.
|
|
6334
|
-
const finalSrcs = this.
|
|
6353
|
+
const widthSrcSet = VALID_WIDTH_DESCRIPTOR_SRCSET.test(this.ngSrcset);
|
|
6354
|
+
const finalSrcs = this.ngSrcset.split(',').filter(src => src !== '').map(srcStr => {
|
|
6335
6355
|
srcStr = srcStr.trim();
|
|
6336
6356
|
const width = widthSrcSet ? parseFloat(srcStr) : parseFloat(srcStr) * this.width;
|
|
6337
|
-
return `${this.imageLoader({ src: this.
|
|
6357
|
+
return `${this.imageLoader({ src: this.ngSrc, width })} ${srcStr}`;
|
|
6338
6358
|
});
|
|
6339
6359
|
return finalSrcs.join(', ');
|
|
6340
6360
|
}
|
|
@@ -6349,17 +6369,19 @@ class NgOptimizedImage {
|
|
|
6349
6369
|
this.renderer.setAttribute(this.imgElement, name, value);
|
|
6350
6370
|
}
|
|
6351
6371
|
}
|
|
6352
|
-
NgOptimizedImage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
6353
|
-
NgOptimizedImage.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0-next.
|
|
6354
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.
|
|
6372
|
+
NgOptimizedImage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: NgOptimizedImage, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6373
|
+
NgOptimizedImage.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0-next.2", type: NgOptimizedImage, isStandalone: true, selector: "img[ngSrc],img[rawSrc]", inputs: { rawSrc: "rawSrc", ngSrc: "ngSrc", ngSrcset: "ngSrcset", width: "width", height: "height", loading: "loading", priority: "priority", src: "src", srcset: "srcset" }, usesOnChanges: true, ngImport: i0 });
|
|
6374
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.2", ngImport: i0, type: NgOptimizedImage, decorators: [{
|
|
6355
6375
|
type: Directive,
|
|
6356
6376
|
args: [{
|
|
6357
6377
|
standalone: true,
|
|
6358
|
-
selector: 'img[rawSrc]',
|
|
6378
|
+
selector: 'img[ngSrc],img[rawSrc]',
|
|
6359
6379
|
}]
|
|
6360
6380
|
}], propDecorators: { rawSrc: [{
|
|
6361
6381
|
type: Input
|
|
6362
|
-
}],
|
|
6382
|
+
}], ngSrc: [{
|
|
6383
|
+
type: Input
|
|
6384
|
+
}], ngSrcset: [{
|
|
6363
6385
|
type: Input
|
|
6364
6386
|
}], width: [{
|
|
6365
6387
|
type: Input
|
|
@@ -6393,9 +6415,9 @@ function inputToBoolean(value) {
|
|
|
6393
6415
|
*/
|
|
6394
6416
|
function assertNoConflictingSrc(dir) {
|
|
6395
6417
|
if (dir.src) {
|
|
6396
|
-
throw new ɵRuntimeError(2950 /* RuntimeErrorCode.UNEXPECTED_SRC_ATTR */, `${imgDirectiveDetails(dir.
|
|
6418
|
+
throw new ɵRuntimeError(2950 /* RuntimeErrorCode.UNEXPECTED_SRC_ATTR */, `${imgDirectiveDetails(dir.ngSrc)} both \`src\` and \`ngSrc\` have been set. ` +
|
|
6397
6419
|
`Supplying both of these attributes breaks lazy loading. ` +
|
|
6398
|
-
`The NgOptimizedImage directive sets \`src\` itself based on the value of \`
|
|
6420
|
+
`The NgOptimizedImage directive sets \`src\` itself based on the value of \`ngSrc\`. ` +
|
|
6399
6421
|
`To fix this, please remove the \`src\` attribute.`);
|
|
6400
6422
|
}
|
|
6401
6423
|
}
|
|
@@ -6404,37 +6426,37 @@ function assertNoConflictingSrc(dir) {
|
|
|
6404
6426
|
*/
|
|
6405
6427
|
function assertNoConflictingSrcset(dir) {
|
|
6406
6428
|
if (dir.srcset) {
|
|
6407
|
-
throw new ɵRuntimeError(2951 /* RuntimeErrorCode.UNEXPECTED_SRCSET_ATTR */, `${imgDirectiveDetails(dir.
|
|
6429
|
+
throw new ɵRuntimeError(2951 /* RuntimeErrorCode.UNEXPECTED_SRCSET_ATTR */, `${imgDirectiveDetails(dir.ngSrc)} both \`srcset\` and \`ngSrcset\` have been set. ` +
|
|
6408
6430
|
`Supplying both of these attributes breaks lazy loading. ` +
|
|
6409
6431
|
`The NgOptimizedImage directive sets \`srcset\` itself based on the value of ` +
|
|
6410
|
-
`\`
|
|
6432
|
+
`\`ngSrcset\`. To fix this, please remove the \`srcset\` attribute.`);
|
|
6411
6433
|
}
|
|
6412
6434
|
}
|
|
6413
6435
|
/**
|
|
6414
|
-
* Verifies that the `
|
|
6436
|
+
* Verifies that the `ngSrc` is not a Base64-encoded image.
|
|
6415
6437
|
*/
|
|
6416
6438
|
function assertNotBase64Image(dir) {
|
|
6417
|
-
let
|
|
6418
|
-
if (
|
|
6419
|
-
if (
|
|
6420
|
-
|
|
6439
|
+
let ngSrc = dir.ngSrc.trim();
|
|
6440
|
+
if (ngSrc.startsWith('data:')) {
|
|
6441
|
+
if (ngSrc.length > BASE64_IMG_MAX_LENGTH_IN_ERROR) {
|
|
6442
|
+
ngSrc = ngSrc.substring(0, BASE64_IMG_MAX_LENGTH_IN_ERROR) + '...';
|
|
6421
6443
|
}
|
|
6422
|
-
throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.
|
|
6423
|
-
`(${
|
|
6444
|
+
throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc, false)} \`ngSrc\` is a Base64-encoded string ` +
|
|
6445
|
+
`(${ngSrc}). NgOptimizedImage does not support Base64-encoded strings. ` +
|
|
6424
6446
|
`To fix this, disable the NgOptimizedImage directive for this element ` +
|
|
6425
|
-
`by removing \`
|
|
6447
|
+
`by removing \`ngSrc\` and using a standard \`src\` attribute instead.`);
|
|
6426
6448
|
}
|
|
6427
6449
|
}
|
|
6428
6450
|
/**
|
|
6429
|
-
* Verifies that the `
|
|
6451
|
+
* Verifies that the `ngSrc` is not a Blob URL.
|
|
6430
6452
|
*/
|
|
6431
6453
|
function assertNotBlobUrl(dir) {
|
|
6432
|
-
const
|
|
6433
|
-
if (
|
|
6434
|
-
throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.
|
|
6454
|
+
const ngSrc = dir.ngSrc.trim();
|
|
6455
|
+
if (ngSrc.startsWith('blob:')) {
|
|
6456
|
+
throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \`ngSrc\` was set to a blob URL (${ngSrc}). ` +
|
|
6435
6457
|
`Blob URLs are not supported by the NgOptimizedImage directive. ` +
|
|
6436
6458
|
`To fix this, disable the NgOptimizedImage directive for this element ` +
|
|
6437
|
-
`by removing \`
|
|
6459
|
+
`by removing \`ngSrc\` and using a regular \`src\` attribute instead.`);
|
|
6438
6460
|
}
|
|
6439
6461
|
}
|
|
6440
6462
|
/**
|
|
@@ -6444,17 +6466,17 @@ function assertNonEmptyInput(dir, name, value) {
|
|
|
6444
6466
|
const isString = typeof value === 'string';
|
|
6445
6467
|
const isEmptyString = isString && value.trim() === '';
|
|
6446
6468
|
if (!isString || isEmptyString) {
|
|
6447
|
-
throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.
|
|
6469
|
+
throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \`${name}\` has an invalid value ` +
|
|
6448
6470
|
`(\`${value}\`). To fix this, change the value to a non-empty string.`);
|
|
6449
6471
|
}
|
|
6450
6472
|
}
|
|
6451
6473
|
/**
|
|
6452
|
-
* Verifies that the `
|
|
6474
|
+
* Verifies that the `ngSrcset` is in a valid format, e.g. "100w, 200w" or "1x, 2x".
|
|
6453
6475
|
*/
|
|
6454
|
-
function
|
|
6476
|
+
function assertValidNgSrcset(dir, value) {
|
|
6455
6477
|
if (value == null)
|
|
6456
6478
|
return;
|
|
6457
|
-
assertNonEmptyInput(dir, '
|
|
6479
|
+
assertNonEmptyInput(dir, 'ngSrcset', value);
|
|
6458
6480
|
const stringVal = value;
|
|
6459
6481
|
const isValidWidthDescriptor = VALID_WIDTH_DESCRIPTOR_SRCSET.test(stringVal);
|
|
6460
6482
|
const isValidDensityDescriptor = VALID_DENSITY_DESCRIPTOR_SRCSET.test(stringVal);
|
|
@@ -6463,15 +6485,15 @@ function assertValidRawSrcset(dir, value) {
|
|
|
6463
6485
|
}
|
|
6464
6486
|
const isValidSrcset = isValidWidthDescriptor || isValidDensityDescriptor;
|
|
6465
6487
|
if (!isValidSrcset) {
|
|
6466
|
-
throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.
|
|
6467
|
-
`To fix this, supply \`
|
|
6488
|
+
throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \`ngSrcset\` has an invalid value (\`${value}\`). ` +
|
|
6489
|
+
`To fix this, supply \`ngSrcset\` using a comma-separated list of one or more width ` +
|
|
6468
6490
|
`descriptors (e.g. "100w, 200w") or density descriptors (e.g. "1x, 2x").`);
|
|
6469
6491
|
}
|
|
6470
6492
|
}
|
|
6471
6493
|
function assertUnderDensityCap(dir, value) {
|
|
6472
6494
|
const underDensityCap = value.split(',').every(num => num === '' || parseFloat(num) <= ABSOLUTE_SRCSET_DENSITY_CAP);
|
|
6473
6495
|
if (!underDensityCap) {
|
|
6474
|
-
throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.
|
|
6496
|
+
throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the \`ngSrcset\` contains an unsupported image density:` +
|
|
6475
6497
|
`\`${value}\`. NgOptimizedImage generally recommends a max image density of ` +
|
|
6476
6498
|
`${RECOMMENDED_SRCSET_DENSITY_CAP}x but supports image densities up to ` +
|
|
6477
6499
|
`${ABSOLUTE_SRCSET_DENSITY_CAP}x. The human eye cannot distinguish between image densities ` +
|
|
@@ -6485,7 +6507,7 @@ function assertUnderDensityCap(dir, value) {
|
|
|
6485
6507
|
* the directive has initialized.
|
|
6486
6508
|
*/
|
|
6487
6509
|
function postInitInputChangeError(dir, inputName) {
|
|
6488
|
-
return new ɵRuntimeError(2953 /* RuntimeErrorCode.UNEXPECTED_INPUT_CHANGE */, `${imgDirectiveDetails(dir.
|
|
6510
|
+
return new ɵRuntimeError(2953 /* RuntimeErrorCode.UNEXPECTED_INPUT_CHANGE */, `${imgDirectiveDetails(dir.ngSrc)} \`${inputName}\` was updated after initialization. ` +
|
|
6489
6511
|
`The NgOptimizedImage directive will not react to this input change. ` +
|
|
6490
6512
|
`To fix this, switch \`${inputName}\` a static value or wrap the image element ` +
|
|
6491
6513
|
`in an *ngIf that is gated on the necessary value.`);
|
|
@@ -6497,12 +6519,12 @@ function assertNoPostInitInputChange(dir, changes, inputs) {
|
|
|
6497
6519
|
inputs.forEach(input => {
|
|
6498
6520
|
const isUpdated = changes.hasOwnProperty(input);
|
|
6499
6521
|
if (isUpdated && !changes[input].isFirstChange()) {
|
|
6500
|
-
if (input === '
|
|
6501
|
-
// When the `
|
|
6502
|
-
// `ngOnChanges` hook, thus the `
|
|
6503
|
-
// `
|
|
6522
|
+
if (input === 'ngSrc') {
|
|
6523
|
+
// When the `ngSrc` input changes, we detect that only in the
|
|
6524
|
+
// `ngOnChanges` hook, thus the `ngSrc` is already set. We use
|
|
6525
|
+
// `ngSrc` in the error message, so we use a previous value, but
|
|
6504
6526
|
// not the updated one in it.
|
|
6505
|
-
dir = {
|
|
6527
|
+
dir = { ngSrc: changes[input].previousValue };
|
|
6506
6528
|
}
|
|
6507
6529
|
throw postInitInputChangeError(dir, input);
|
|
6508
6530
|
}
|
|
@@ -6515,7 +6537,7 @@ function assertGreaterThanZero(dir, inputValue, inputName) {
|
|
|
6515
6537
|
const validNumber = typeof inputValue === 'number' && inputValue > 0;
|
|
6516
6538
|
const validString = typeof inputValue === 'string' && /^\d+$/.test(inputValue.trim()) && parseInt(inputValue) > 0;
|
|
6517
6539
|
if (!validNumber && !validString) {
|
|
6518
|
-
throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.
|
|
6540
|
+
throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \`${inputName}\` has an invalid value ` +
|
|
6519
6541
|
`(\`${inputValue}\`). To fix this, provide \`${inputName}\` ` +
|
|
6520
6542
|
`as a number greater than 0.`);
|
|
6521
6543
|
}
|
|
@@ -6550,40 +6572,40 @@ function assertNoImageDistortion(dir, img, renderer) {
|
|
|
6550
6572
|
const stylingDistortion = nonZeroRenderedDimensions &&
|
|
6551
6573
|
Math.abs(intrinsicAspectRatio - renderedAspectRatio) > ASPECT_RATIO_TOLERANCE;
|
|
6552
6574
|
if (inaccurateDimensions) {
|
|
6553
|
-
console.warn(ɵformatRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.
|
|
6575
|
+
console.warn(ɵformatRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the aspect ratio of the image does not match ` +
|
|
6554
6576
|
`the aspect ratio indicated by the width and height attributes. ` +
|
|
6555
|
-
|
|
6556
|
-
`(aspect-ratio: ${intrinsicAspectRatio}).
|
|
6577
|
+
`\nIntrinsic image size: ${intrinsicWidth}w x ${intrinsicHeight}h ` +
|
|
6578
|
+
`(aspect-ratio: ${intrinsicAspectRatio}). \nSupplied width and height attributes: ` +
|
|
6557
6579
|
`${suppliedWidth}w x ${suppliedHeight}h (aspect-ratio: ${suppliedAspectRatio}). ` +
|
|
6558
|
-
|
|
6580
|
+
`\nTo fix this, update the width and height attributes.`));
|
|
6559
6581
|
}
|
|
6560
6582
|
else if (stylingDistortion) {
|
|
6561
|
-
console.warn(ɵformatRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.
|
|
6583
|
+
console.warn(ɵformatRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the aspect ratio of the rendered image ` +
|
|
6562
6584
|
`does not match the image's intrinsic aspect ratio. ` +
|
|
6563
|
-
|
|
6564
|
-
`(aspect-ratio: ${intrinsicAspectRatio}).
|
|
6585
|
+
`\nIntrinsic image size: ${intrinsicWidth}w x ${intrinsicHeight}h ` +
|
|
6586
|
+
`(aspect-ratio: ${intrinsicAspectRatio}). \nRendered image size: ` +
|
|
6565
6587
|
`${renderedWidth}w x ${renderedHeight}h (aspect-ratio: ` +
|
|
6566
|
-
`${renderedAspectRatio}).
|
|
6588
|
+
`${renderedAspectRatio}). \nThis issue can occur if "width" and "height" ` +
|
|
6567
6589
|
`attributes are added to an image without updating the corresponding ` +
|
|
6568
6590
|
`image styling. To fix this, adjust image styling. In most cases, ` +
|
|
6569
6591
|
`adding "height: auto" or "width: auto" to the image styling will fix ` +
|
|
6570
6592
|
`this issue.`));
|
|
6571
6593
|
}
|
|
6572
|
-
else if (!dir.
|
|
6573
|
-
// If `
|
|
6594
|
+
else if (!dir.ngSrcset && nonZeroRenderedDimensions) {
|
|
6595
|
+
// If `ngSrcset` hasn't been set, sanity check the intrinsic size.
|
|
6574
6596
|
const recommendedWidth = RECOMMENDED_SRCSET_DENSITY_CAP * renderedWidth;
|
|
6575
6597
|
const recommendedHeight = RECOMMENDED_SRCSET_DENSITY_CAP * renderedHeight;
|
|
6576
6598
|
const oversizedWidth = (intrinsicWidth - recommendedWidth) >= OVERSIZED_IMAGE_TOLERANCE;
|
|
6577
6599
|
const oversizedHeight = (intrinsicHeight - recommendedHeight) >= OVERSIZED_IMAGE_TOLERANCE;
|
|
6578
6600
|
if (oversizedWidth || oversizedHeight) {
|
|
6579
|
-
console.warn(ɵformatRuntimeError(2960 /* RuntimeErrorCode.OVERSIZED_IMAGE */, `${imgDirectiveDetails(dir.
|
|
6601
|
+
console.warn(ɵformatRuntimeError(2960 /* RuntimeErrorCode.OVERSIZED_IMAGE */, `${imgDirectiveDetails(dir.ngSrc)} the intrinsic image is significantly ` +
|
|
6580
6602
|
`larger than necessary. ` +
|
|
6581
6603
|
`\nRendered image size: ${renderedWidth}w x ${renderedHeight}h. ` +
|
|
6582
6604
|
`\nIntrinsic image size: ${intrinsicWidth}w x ${intrinsicHeight}h. ` +
|
|
6583
6605
|
`\nRecommended intrinsic image size: ${recommendedWidth}w x ${recommendedHeight}h. ` +
|
|
6584
6606
|
`\nNote: Recommended intrinsic image size is calculated assuming a maximum DPR of ` +
|
|
6585
6607
|
`${RECOMMENDED_SRCSET_DENSITY_CAP}. To improve loading time, resize the image ` +
|
|
6586
|
-
`or consider using the "
|
|
6608
|
+
`or consider using the "ngSrcset" and "sizes" attributes.`));
|
|
6587
6609
|
}
|
|
6588
6610
|
}
|
|
6589
6611
|
});
|
|
@@ -6598,7 +6620,7 @@ function assertNonEmptyWidthAndHeight(dir) {
|
|
|
6598
6620
|
if (dir.height === undefined)
|
|
6599
6621
|
missingAttributes.push('height');
|
|
6600
6622
|
if (missingAttributes.length > 0) {
|
|
6601
|
-
throw new ɵRuntimeError(2954 /* RuntimeErrorCode.REQUIRED_INPUT_MISSING */, `${imgDirectiveDetails(dir.
|
|
6623
|
+
throw new ɵRuntimeError(2954 /* RuntimeErrorCode.REQUIRED_INPUT_MISSING */, `${imgDirectiveDetails(dir.ngSrc)} these required attributes ` +
|
|
6602
6624
|
`are missing: ${missingAttributes.map(attr => `"${attr}"`).join(', ')}. ` +
|
|
6603
6625
|
`Including "width" and "height" attributes will prevent image-related layout shifts. ` +
|
|
6604
6626
|
`To fix this, include "width" and "height" attributes on the image tag.`);
|
|
@@ -6610,7 +6632,7 @@ function assertNonEmptyWidthAndHeight(dir) {
|
|
|
6610
6632
|
*/
|
|
6611
6633
|
function assertValidLoadingInput(dir) {
|
|
6612
6634
|
if (dir.loading && dir.priority) {
|
|
6613
|
-
throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.
|
|
6635
|
+
throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the \`loading\` attribute ` +
|
|
6614
6636
|
`was used on an image that was marked "priority". ` +
|
|
6615
6637
|
`Setting \`loading\` on priority images is not allowed ` +
|
|
6616
6638
|
`because these images will always be eagerly loaded. ` +
|
|
@@ -6618,7 +6640,7 @@ function assertValidLoadingInput(dir) {
|
|
|
6618
6640
|
}
|
|
6619
6641
|
const validInputs = ['auto', 'eager', 'lazy'];
|
|
6620
6642
|
if (typeof dir.loading === 'string' && !validInputs.includes(dir.loading)) {
|
|
6621
|
-
throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.
|
|
6643
|
+
throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the \`loading\` attribute ` +
|
|
6622
6644
|
`has an invalid value (\`${dir.loading}\`). ` +
|
|
6623
6645
|
`To fix this, provide a valid value ("lazy", "eager", or "auto").`);
|
|
6624
6646
|
}
|
|
@@ -6661,5 +6683,5 @@ function assertValidLoadingInput(dir) {
|
|
|
6661
6683
|
* Generated bundle index. Do not edit.
|
|
6662
6684
|
*/
|
|
6663
6685
|
|
|
6664
|
-
export { APP_BASE_HREF, AsyncPipe, CommonModule, CurrencyPipe, DATE_PIPE_DEFAULT_TIMEZONE, DOCUMENT, DatePipe, DecimalPipe, FormStyle, FormatWidth, HashLocationStrategy, I18nPluralPipe, I18nSelectPipe, IMAGE_LOADER, JsonPipe, KeyValuePipe, LOCATION_INITIALIZED, Location, LocationStrategy, LowerCasePipe, NgClass, NgComponentOutlet, NgForOf, NgForOfContext, NgIf, NgIfContext, NgLocaleLocalization, NgLocalization, NgOptimizedImage, NgPlural, NgPluralCase, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet, NumberFormatStyle, NumberSymbol, PRECONNECT_CHECK_BLOCKLIST, PathLocationStrategy, PercentPipe, PlatformLocation, Plural, SlicePipe, TitleCasePipe, TranslationWidth, UpperCasePipe, VERSION, ViewportScroller, WeekDay, XhrFactory, formatCurrency, formatDate, formatNumber, formatPercent, getCurrencySymbol, getLocaleCurrencyCode, getLocaleCurrencyName, getLocaleCurrencySymbol, getLocaleDateFormat, getLocaleDateTimeFormat, getLocaleDayNames, getLocaleDayPeriods, getLocaleDirection, getLocaleEraNames, getLocaleExtraDayPeriodRules, getLocaleExtraDayPeriods, getLocaleFirstDayOfWeek, getLocaleId, getLocaleMonthNames, getLocaleNumberFormat, getLocaleNumberSymbol, getLocalePluralCase, getLocaleTimeFormat, getLocaleWeekEndRange, getNumberOfCurrencyDigits, isPlatformBrowser, isPlatformServer, isPlatformWorkerApp, isPlatformWorkerUi, provideCloudflareLoader, provideCloudinaryLoader, provideImageKitLoader, provideImgixLoader, registerLocaleData, BrowserPlatformLocation as ɵBrowserPlatformLocation, DomAdapter as ɵDomAdapter, NullViewportScroller as ɵNullViewportScroller, PLATFORM_BROWSER_ID as ɵPLATFORM_BROWSER_ID, PLATFORM_SERVER_ID as ɵPLATFORM_SERVER_ID, PLATFORM_WORKER_APP_ID as ɵPLATFORM_WORKER_APP_ID, PLATFORM_WORKER_UI_ID as ɵPLATFORM_WORKER_UI_ID, getDOM as ɵgetDOM, parseCookieValue as ɵparseCookieValue, setRootDomAdapter as ɵsetRootDomAdapter };
|
|
6686
|
+
export { APP_BASE_HREF, AsyncPipe, CommonModule, CurrencyPipe, DATE_PIPE_DEFAULT_TIMEZONE, DOCUMENT, DatePipe, DecimalPipe, FormStyle, FormatWidth, HashLocationStrategy, I18nPluralPipe, I18nSelectPipe, IMAGE_LOADER, JsonPipe, KeyValuePipe, LOCATION_INITIALIZED, Location, LocationStrategy, LowerCasePipe, NgClass, NgComponentOutlet, NgForOf as NgFor, NgForOf, NgForOfContext, NgIf, NgIfContext, NgLocaleLocalization, NgLocalization, NgOptimizedImage, NgPlural, NgPluralCase, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet, NumberFormatStyle, NumberSymbol, PRECONNECT_CHECK_BLOCKLIST, PathLocationStrategy, PercentPipe, PlatformLocation, Plural, SlicePipe, TitleCasePipe, TranslationWidth, UpperCasePipe, VERSION, ViewportScroller, WeekDay, XhrFactory, formatCurrency, formatDate, formatNumber, formatPercent, getCurrencySymbol, getLocaleCurrencyCode, getLocaleCurrencyName, getLocaleCurrencySymbol, getLocaleDateFormat, getLocaleDateTimeFormat, getLocaleDayNames, getLocaleDayPeriods, getLocaleDirection, getLocaleEraNames, getLocaleExtraDayPeriodRules, getLocaleExtraDayPeriods, getLocaleFirstDayOfWeek, getLocaleId, getLocaleMonthNames, getLocaleNumberFormat, getLocaleNumberSymbol, getLocalePluralCase, getLocaleTimeFormat, getLocaleWeekEndRange, getNumberOfCurrencyDigits, isPlatformBrowser, isPlatformServer, isPlatformWorkerApp, isPlatformWorkerUi, provideCloudflareLoader, provideCloudinaryLoader, provideImageKitLoader, provideImgixLoader, registerLocaleData, BrowserPlatformLocation as ɵBrowserPlatformLocation, DomAdapter as ɵDomAdapter, NullViewportScroller as ɵNullViewportScroller, PLATFORM_BROWSER_ID as ɵPLATFORM_BROWSER_ID, PLATFORM_SERVER_ID as ɵPLATFORM_SERVER_ID, PLATFORM_WORKER_APP_ID as ɵPLATFORM_WORKER_APP_ID, PLATFORM_WORKER_UI_ID as ɵPLATFORM_WORKER_UI_ID, getDOM as ɵgetDOM, parseCookieValue as ɵparseCookieValue, setRootDomAdapter as ɵsetRootDomAdapter };
|
|
6665
6687
|
//# sourceMappingURL=common.mjs.map
|