@ethlete/contentful 1.0.1 → 1.0.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 (49) hide show
  1. package/esm2022/lib/components/audio/contentful-audio.component.mjs +65 -0
  2. package/esm2022/lib/components/file/contentful-file.component.mjs +54 -0
  3. package/esm2022/lib/components/image/contentful-image.component.mjs +137 -0
  4. package/esm2022/lib/components/rich-text-renderer/rich-text-renderer.component.mjs +113 -0
  5. package/esm2022/lib/components/video/contentful-video.component.mjs +57 -0
  6. package/{fesm2020 → fesm2022}/ethlete-contentful.mjs +23 -23
  7. package/{fesm2020 → fesm2022}/ethlete-contentful.mjs.map +1 -1
  8. package/lib/components/audio/contentful-audio.component.d.ts +1 -1
  9. package/lib/components/file/contentful-file.component.d.ts +1 -1
  10. package/lib/components/image/contentful-image.component.d.ts +1 -1
  11. package/lib/components/rich-text-renderer/rich-text-renderer.component.d.ts +1 -1
  12. package/lib/components/video/contentful-video.component.d.ts +1 -1
  13. package/package.json +9 -15
  14. package/esm2020/lib/components/audio/contentful-audio.component.mjs +0 -64
  15. package/esm2020/lib/components/file/contentful-file.component.mjs +0 -53
  16. package/esm2020/lib/components/image/contentful-image.component.mjs +0 -136
  17. package/esm2020/lib/components/rich-text-renderer/rich-text-renderer.component.mjs +0 -112
  18. package/esm2020/lib/components/video/contentful-video.component.mjs +0 -56
  19. package/fesm2015/ethlete-contentful.mjs +0 -753
  20. package/fesm2015/ethlete-contentful.mjs.map +0 -1
  21. /package/{esm2020 → esm2022}/ethlete-contentful.mjs +0 -0
  22. /package/{esm2020 → esm2022}/index.mjs +0 -0
  23. /package/{esm2020 → esm2022}/lib/components/audio/public-api.mjs +0 -0
  24. /package/{esm2020 → esm2022}/lib/components/file/public-api.mjs +0 -0
  25. /package/{esm2020 → esm2022}/lib/components/image/contentful-image.component.utils.mjs +0 -0
  26. /package/{esm2020 → esm2022}/lib/components/image/index.mjs +0 -0
  27. /package/{esm2020 → esm2022}/lib/components/image/public-api.mjs +0 -0
  28. /package/{esm2020 → esm2022}/lib/components/index.mjs +0 -0
  29. /package/{esm2020 → esm2022}/lib/components/public-api.mjs +0 -0
  30. /package/{esm2020 → esm2022}/lib/components/rich-text-renderer/index.mjs +0 -0
  31. /package/{esm2020 → esm2022}/lib/components/rich-text-renderer/public-api.mjs +0 -0
  32. /package/{esm2020 → esm2022}/lib/components/rich-text-renderer/rich-text-renderer.constants.mjs +0 -0
  33. /package/{esm2020 → esm2022}/lib/components/rich-text-renderer/rich-text-renderer.types.mjs +0 -0
  34. /package/{esm2020 → esm2022}/lib/components/rich-text-renderer/rich-text-renderer.util.mjs +0 -0
  35. /package/{esm2020 → esm2022}/lib/components/video/public-api.mjs +0 -0
  36. /package/{esm2020 → esm2022}/lib/constants/contentful.constants.mjs +0 -0
  37. /package/{esm2020 → esm2022}/lib/constants/index.mjs +0 -0
  38. /package/{esm2020 → esm2022}/lib/constants/public-api.mjs +0 -0
  39. /package/{esm2020 → esm2022}/lib/contentful.imports.mjs +0 -0
  40. /package/{esm2020 → esm2022}/lib/gql/asset.fragments.mjs +0 -0
  41. /package/{esm2020 → esm2022}/lib/gql/public-api.mjs +0 -0
  42. /package/{esm2020 → esm2022}/lib/public-api.mjs +0 -0
  43. /package/{esm2020 → esm2022}/lib/types/contentful.types.mjs +0 -0
  44. /package/{esm2020 → esm2022}/lib/types/index.mjs +0 -0
  45. /package/{esm2020 → esm2022}/lib/types/public-api.mjs +0 -0
  46. /package/{esm2020 → esm2022}/lib/utils/contentful-config.mjs +0 -0
  47. /package/{esm2020 → esm2022}/lib/utils/contentful.util.mjs +0 -0
  48. /package/{esm2020 → esm2022}/lib/utils/index.mjs +0 -0
  49. /package/{esm2020 → esm2022}/lib/utils/public-api.mjs +0 -0
@@ -0,0 +1,65 @@
1
+ import { NgClass, NgIf } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, inject, Input, ViewEncapsulation } from '@angular/core';
3
+ import { RICH_TEXT_RENDERER_COMPONENT_DATA } from '../rich-text-renderer';
4
+ import * as i0 from "@angular/core";
5
+ class ContentfulAudioComponent {
6
+ constructor() {
7
+ this._richTextData = inject(RICH_TEXT_RENDERER_COMPONENT_DATA, { optional: true });
8
+ this._data = null;
9
+ this.audioClass = null;
10
+ this.figureClass = null;
11
+ this.figcaptionClass = null;
12
+ }
13
+ get data() {
14
+ return this._data;
15
+ }
16
+ set data(v) {
17
+ if (v && !v.contentType) {
18
+ this._data = null;
19
+ console.warn('The provided asset is invalid', v);
20
+ return;
21
+ }
22
+ if (v && !v.contentType.startsWith('audio/')) {
23
+ throw new Error('The provided asset is not an audio');
24
+ }
25
+ this._data = v ?? null;
26
+ }
27
+ ngOnInit() {
28
+ if (this._richTextData && !this.data) {
29
+ this.data = this._richTextData;
30
+ }
31
+ }
32
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ContentfulAudioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
33
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: ContentfulAudioComponent, isStandalone: true, selector: "et-contentful-audio", inputs: { data: "data", audioClass: "audioClass", figureClass: "figureClass", figcaptionClass: "figcaptionClass" }, ngImport: i0, template: `
34
+ <figure *ngIf="data" [ngClass]="figureClass">
35
+ <figcaption [ngClass]="figcaptionClass">{{ data.title }}</figcaption>
36
+ <audio [ngClass]="audioClass" controls src="{{ data.url }}"></audio>
37
+ </figure>
38
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
39
+ }
40
+ export { ContentfulAudioComponent };
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ContentfulAudioComponent, decorators: [{
42
+ type: Component,
43
+ args: [{
44
+ selector: 'et-contentful-audio',
45
+ template: `
46
+ <figure *ngIf="data" [ngClass]="figureClass">
47
+ <figcaption [ngClass]="figcaptionClass">{{ data.title }}</figcaption>
48
+ <audio [ngClass]="audioClass" controls src="{{ data.url }}"></audio>
49
+ </figure>
50
+ `,
51
+ changeDetection: ChangeDetectionStrategy.OnPush,
52
+ encapsulation: ViewEncapsulation.None,
53
+ standalone: true,
54
+ imports: [NgIf, NgClass],
55
+ }]
56
+ }], propDecorators: { data: [{
57
+ type: Input
58
+ }], audioClass: [{
59
+ type: Input
60
+ }], figureClass: [{
61
+ type: Input
62
+ }], figcaptionClass: [{
63
+ type: Input
64
+ }] } });
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudGZ1bC1hdWRpby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbnRlbnRmdWwvc3JjL2xpYi9jb21wb25lbnRzL2F1ZGlvL2NvbnRlbnRmdWwtYXVkaW8uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzdHLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUUxRSxNQWFhLHdCQUF3QjtJQWJyQztRQWNVLGtCQUFhLEdBQUcsTUFBTSxDQUFrQixpQ0FBaUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBcUIvRixVQUFLLEdBQTJCLElBQUksQ0FBQztRQUc3QyxlQUFVLEdBQWdCLElBQUksQ0FBQztRQUcvQixnQkFBVyxHQUFnQixJQUFJLENBQUM7UUFHaEMsb0JBQWUsR0FBZ0IsSUFBSSxDQUFDO0tBT3JDO0lBbkNDLElBQ0ksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBQ0QsSUFBSSxJQUFJLENBQUMsQ0FBcUM7UUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBRWxCLE9BQU8sQ0FBQyxJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFakQsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUM1QyxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7U0FDdkQ7UUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDekIsQ0FBQztJQVlELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ3BDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztTQUNoQztJQUNILENBQUM7OEdBckNVLHdCQUF3QjtrR0FBeEIsd0JBQXdCLG1NQVh6Qjs7Ozs7R0FLVCw0REFJUyxJQUFJLDZGQUFFLE9BQU87O1NBRVosd0JBQXdCOzJGQUF4Qix3QkFBd0I7a0JBYnBDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsUUFBUSxFQUFFOzs7OztHQUtUO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7aUJBQ3pCOzhCQUtLLElBQUk7c0JBRFAsS0FBSztnQkFzQk4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSztnQkFJTixlQUFlO3NCQURkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nQ2xhc3NUeXBlIH0gZnJvbSAnQGV0aGxldGUvY29yZSc7XG5pbXBvcnQgeyBDb250ZW50ZnVsQXNzZXQgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBSSUNIX1RFWFRfUkVOREVSRVJfQ09NUE9ORU5UX0RBVEEgfSBmcm9tICcuLi9yaWNoLXRleHQtcmVuZGVyZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdldC1jb250ZW50ZnVsLWF1ZGlvJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZmlndXJlICpuZ0lmPVwiZGF0YVwiIFtuZ0NsYXNzXT1cImZpZ3VyZUNsYXNzXCI+XG4gICAgICA8ZmlnY2FwdGlvbiBbbmdDbGFzc109XCJmaWdjYXB0aW9uQ2xhc3NcIj57eyBkYXRhLnRpdGxlIH19PC9maWdjYXB0aW9uPlxuICAgICAgPGF1ZGlvIFtuZ0NsYXNzXT1cImF1ZGlvQ2xhc3NcIiBjb250cm9scyBzcmM9XCJ7eyBkYXRhLnVybCB9fVwiPjwvYXVkaW8+XG4gICAgPC9maWd1cmU+XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdJZiwgTmdDbGFzc10sXG59KVxuZXhwb3J0IGNsYXNzIENvbnRlbnRmdWxBdWRpb0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgX3JpY2hUZXh0RGF0YSA9IGluamVjdDxDb250ZW50ZnVsQXNzZXQ+KFJJQ0hfVEVYVF9SRU5ERVJFUl9DT01QT05FTlRfREFUQSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBASW5wdXQoKVxuICBnZXQgZGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YTtcbiAgfVxuICBzZXQgZGF0YSh2OiBDb250ZW50ZnVsQXNzZXQgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHYgJiYgIXYuY29udGVudFR5cGUpIHtcbiAgICAgIHRoaXMuX2RhdGEgPSBudWxsO1xuXG4gICAgICBjb25zb2xlLndhcm4oJ1RoZSBwcm92aWRlZCBhc3NldCBpcyBpbnZhbGlkJywgdik7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodiAmJiAhdi5jb250ZW50VHlwZS5zdGFydHNXaXRoKCdhdWRpby8nKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgcHJvdmlkZWQgYXNzZXQgaXMgbm90IGFuIGF1ZGlvJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fZGF0YSA9IHYgPz8gbnVsbDtcbiAgfVxuICBwcml2YXRlIF9kYXRhOiBDb250ZW50ZnVsQXNzZXQgfCBudWxsID0gbnVsbDtcblxuICBASW5wdXQoKVxuICBhdWRpb0NsYXNzOiBOZ0NsYXNzVHlwZSA9IG51bGw7XG5cbiAgQElucHV0KClcbiAgZmlndXJlQ2xhc3M6IE5nQ2xhc3NUeXBlID0gbnVsbDtcblxuICBASW5wdXQoKVxuICBmaWdjYXB0aW9uQ2xhc3M6IE5nQ2xhc3NUeXBlID0gbnVsbDtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fcmljaFRleHREYXRhICYmICF0aGlzLmRhdGEpIHtcbiAgICAgIHRoaXMuZGF0YSA9IHRoaXMuX3JpY2hUZXh0RGF0YTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,54 @@
1
+ import { NgClass, NgIf } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, inject, Input, ViewEncapsulation } from '@angular/core';
3
+ import { RICH_TEXT_RENDERER_COMPONENT_DATA } from '../rich-text-renderer';
4
+ import * as i0 from "@angular/core";
5
+ class ContentfulFileComponent {
6
+ constructor() {
7
+ this._richTextData = inject(RICH_TEXT_RENDERER_COMPONENT_DATA, { optional: true });
8
+ this._data = null;
9
+ this.fileClass = null;
10
+ }
11
+ get data() {
12
+ return this._data;
13
+ }
14
+ set data(v) {
15
+ if (v && !v.contentType) {
16
+ this._data = null;
17
+ console.warn('The provided asset is invalid', v);
18
+ return;
19
+ }
20
+ this._data = v ?? null;
21
+ }
22
+ ngOnInit() {
23
+ if (this._richTextData && !this.data) {
24
+ this.data = this._richTextData;
25
+ }
26
+ }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ContentfulFileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
28
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: ContentfulFileComponent, isStandalone: true, selector: "et-contentful-file", inputs: { data: "data", fileClass: "fileClass" }, ngImport: i0, template: `
29
+ <a *ngIf="data" [href]="data.url" [ngClass]="fileClass" class="underline" target="_blank">
30
+ {{ data.title }} ({{ data.size }} Bytes)
31
+ </a>
32
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
33
+ }
34
+ export { ContentfulFileComponent };
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ContentfulFileComponent, decorators: [{
36
+ type: Component,
37
+ args: [{
38
+ selector: 'et-contentful-file',
39
+ template: `
40
+ <a *ngIf="data" [href]="data.url" [ngClass]="fileClass" class="underline" target="_blank">
41
+ {{ data.title }} ({{ data.size }} Bytes)
42
+ </a>
43
+ `,
44
+ changeDetection: ChangeDetectionStrategy.OnPush,
45
+ encapsulation: ViewEncapsulation.None,
46
+ standalone: true,
47
+ imports: [NgIf, NgClass],
48
+ }]
49
+ }], propDecorators: { data: [{
50
+ type: Input
51
+ }], fileClass: [{
52
+ type: Input
53
+ }] } });
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudGZ1bC1maWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29udGVudGZ1bC9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS9jb250ZW50ZnVsLWZpbGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzdHLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUUxRSxNQVlhLHVCQUF1QjtJQVpwQztRQWFVLGtCQUFhLEdBQUcsTUFBTSxDQUFrQixpQ0FBaUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBaUIvRixVQUFLLEdBQTJCLElBQUksQ0FBQztRQUc3QyxjQUFTLEdBQWdCLElBQUksQ0FBQztLQU8vQjtJQXpCQyxJQUNJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUNELElBQUksSUFBSSxDQUFDLENBQXFDO1FBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRTtZQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUVsQixPQUFPLENBQUMsSUFBSSxDQUFDLCtCQUErQixFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRWpELE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQztJQUN6QixDQUFDO0lBTUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDcEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQzs4R0EzQlUsdUJBQXVCO2tHQUF2Qix1QkFBdUIsZ0lBVnhCOzs7O0dBSVQsNERBSVMsSUFBSSw2RkFBRSxPQUFPOztTQUVaLHVCQUF1QjsyRkFBdkIsdUJBQXVCO2tCQVpuQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFFBQVEsRUFBRTs7OztHQUlUO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7aUJBQ3pCOzhCQUtLLElBQUk7c0JBRFAsS0FBSztnQkFrQk4sU0FBUztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcywgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbmplY3QsIElucHV0LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0NsYXNzVHlwZSB9IGZyb20gJ0BldGhsZXRlL2NvcmUnO1xuaW1wb3J0IHsgQ29udGVudGZ1bEFzc2V0IH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgUklDSF9URVhUX1JFTkRFUkVSX0NPTVBPTkVOVF9EQVRBIH0gZnJvbSAnLi4vcmljaC10ZXh0LXJlbmRlcmVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZXQtY29udGVudGZ1bC1maWxlJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8YSAqbmdJZj1cImRhdGFcIiBbaHJlZl09XCJkYXRhLnVybFwiIFtuZ0NsYXNzXT1cImZpbGVDbGFzc1wiIGNsYXNzPVwidW5kZXJsaW5lXCIgdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgICB7eyBkYXRhLnRpdGxlIH19ICh7eyBkYXRhLnNpemUgfX0gQnl0ZXMpXG4gICAgPC9hPlxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nSWYsIE5nQ2xhc3NdLFxufSlcbmV4cG9ydCBjbGFzcyBDb250ZW50ZnVsRmlsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgX3JpY2hUZXh0RGF0YSA9IGluamVjdDxDb250ZW50ZnVsQXNzZXQ+KFJJQ0hfVEVYVF9SRU5ERVJFUl9DT01QT05FTlRfREFUQSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBASW5wdXQoKVxuICBnZXQgZGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YTtcbiAgfVxuICBzZXQgZGF0YSh2OiBDb250ZW50ZnVsQXNzZXQgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHYgJiYgIXYuY29udGVudFR5cGUpIHtcbiAgICAgIHRoaXMuX2RhdGEgPSBudWxsO1xuXG4gICAgICBjb25zb2xlLndhcm4oJ1RoZSBwcm92aWRlZCBhc3NldCBpcyBpbnZhbGlkJywgdik7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9kYXRhID0gdiA/PyBudWxsO1xuICB9XG4gIHByaXZhdGUgX2RhdGE6IENvbnRlbnRmdWxBc3NldCB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgpXG4gIGZpbGVDbGFzczogTmdDbGFzc1R5cGUgPSBudWxsO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9yaWNoVGV4dERhdGEgJiYgIXRoaXMuZGF0YSkge1xuICAgICAgdGhpcy5kYXRhID0gdGhpcy5fcmljaFRleHREYXRhO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,137 @@
1
+ import { NgClass, NgIf, NgOptimizedImage } from '@angular/common';
2
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, ViewEncapsulation, inject, } from '@angular/core';
3
+ import { PictureComponent, PictureDataDirective } from '@ethlete/cdk';
4
+ import { isContentfulImage } from '../../utils';
5
+ import { RICH_TEXT_RENDERER_COMPONENT_DATA } from '../rich-text-renderer';
6
+ import { generateContentfulImageSources, generateDefaultContentfulImageSource, } from './contentful-image.component.utils';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@ethlete/cdk";
9
+ class ContentfulImageComponent {
10
+ constructor() {
11
+ this._richTextData = inject(RICH_TEXT_RENDERER_COMPONENT_DATA, {
12
+ optional: true,
13
+ });
14
+ this.pictureData = inject(PictureDataDirective);
15
+ this._cdr = inject(ChangeDetectorRef);
16
+ this._data = null;
17
+ this._sizes = [];
18
+ this._srcsetSizes = [];
19
+ this._backgroundColor = null;
20
+ this.sources = [];
21
+ }
22
+ get data() {
23
+ return this._data;
24
+ }
25
+ set data(v) {
26
+ const assetData = isContentfulImage(v) ? v.asset : v;
27
+ const imageData = isContentfulImage(v) ? v : null;
28
+ if (assetData && !assetData.contentType) {
29
+ this._data = null;
30
+ console.warn('The provided asset is invalid', v);
31
+ return;
32
+ }
33
+ if (assetData && !assetData.contentType.startsWith('image/')) {
34
+ throw new Error('The provided asset is not an image');
35
+ }
36
+ this._data = v ?? null;
37
+ this.pictureData.defaultSrc = assetData ? generateDefaultContentfulImageSource(assetData) : null;
38
+ this.pictureData.alt = imageData?.alt ?? assetData?.description ?? null;
39
+ this.pictureData.width = assetData?.width ?? null;
40
+ this.pictureData.height = assetData?.height ?? null;
41
+ this.pictureData.figcaption = imageData?.caption ?? null;
42
+ this.updateSizes();
43
+ }
44
+ get sizes() {
45
+ return this._sizes;
46
+ }
47
+ set sizes(v) {
48
+ this._sizes = v;
49
+ this.pictureData.sizes = this.sizes?.join(', ') ?? null;
50
+ }
51
+ get srcsetSizes() {
52
+ return this._srcsetSizes;
53
+ }
54
+ set srcsetSizes(v) {
55
+ this._srcsetSizes = v;
56
+ this.updateSizes();
57
+ }
58
+ get backgroundColor() {
59
+ return this._backgroundColor;
60
+ }
61
+ set backgroundColor(v) {
62
+ this._backgroundColor = v;
63
+ this.updateSizes();
64
+ }
65
+ ngOnInit() {
66
+ if (this._richTextData && !this.data) {
67
+ this.data = this._richTextData;
68
+ }
69
+ }
70
+ updateSizes() {
71
+ this.sources = this._data ? generateContentfulImageSources(this._data, this.srcsetSizes, this.backgroundColor) : [];
72
+ this._cdr.markForCheck();
73
+ }
74
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ContentfulImageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
75
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: ContentfulImageComponent, isStandalone: true, selector: "et-contentful-image", inputs: { data: "data", sizes: "sizes", srcsetSizes: "srcsetSizes", backgroundColor: "backgroundColor" }, host: { classAttribute: "et-contentful-image" }, hostDirectives: [{ directive: i1.PictureDataDirective, inputs: ["imgClass", "imgClass", "hasPriority", "hasPriority", "figureClass", "figureClass", "pictureClass", "pictureClass", "figcaptionClass", "figcaptionClass"] }], ngImport: i0, template: `
76
+ <et-picture
77
+ [imgClass]="pictureData.imgClass"
78
+ [hasPriority]="pictureData.hasPriority"
79
+ [figureClass]="pictureData.figureClass"
80
+ [pictureClass]="pictureData.pictureClass"
81
+ [figcaptionClass]="pictureData.figcaptionClass"
82
+ [defaultSrc]="pictureData.defaultSrc"
83
+ [alt]="pictureData.alt"
84
+ [figcaption]="pictureData.figcaption"
85
+ [width]="pictureData.width"
86
+ [height]="pictureData.height"
87
+ [sizes]="pictureData.sizes"
88
+ [sources]="sources"
89
+ />
90
+ `, isInline: true, dependencies: [{ kind: "component", type: PictureComponent, selector: "et-picture", inputs: ["sources"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
91
+ }
92
+ export { ContentfulImageComponent };
93
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ContentfulImageComponent, decorators: [{
94
+ type: Component,
95
+ args: [{
96
+ selector: 'et-contentful-image',
97
+ template: `
98
+ <et-picture
99
+ [imgClass]="pictureData.imgClass"
100
+ [hasPriority]="pictureData.hasPriority"
101
+ [figureClass]="pictureData.figureClass"
102
+ [pictureClass]="pictureData.pictureClass"
103
+ [figcaptionClass]="pictureData.figcaptionClass"
104
+ [defaultSrc]="pictureData.defaultSrc"
105
+ [alt]="pictureData.alt"
106
+ [figcaption]="pictureData.figcaption"
107
+ [width]="pictureData.width"
108
+ [height]="pictureData.height"
109
+ [sizes]="pictureData.sizes"
110
+ [sources]="sources"
111
+ />
112
+ `,
113
+ changeDetection: ChangeDetectionStrategy.OnPush,
114
+ encapsulation: ViewEncapsulation.None,
115
+ standalone: true,
116
+ imports: [NgIf, NgClass, NgOptimizedImage, PictureComponent],
117
+ hostDirectives: [
118
+ {
119
+ directive: PictureDataDirective,
120
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
121
+ inputs: ['imgClass', 'hasPriority', 'figureClass', 'pictureClass', 'figcaptionClass'],
122
+ },
123
+ ],
124
+ host: {
125
+ class: 'et-contentful-image',
126
+ },
127
+ }]
128
+ }], propDecorators: { data: [{
129
+ type: Input
130
+ }], sizes: [{
131
+ type: Input
132
+ }], srcsetSizes: [{
133
+ type: Input
134
+ }], backgroundColor: [{
135
+ type: Input
136
+ }] } });
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudGZ1bC1pbWFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbnRlbnRmdWwvc3JjL2xpYi9jb21wb25lbnRzL2ltYWdlL2NvbnRlbnRmdWwtaW1hZ2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULEtBQUssRUFFTCxpQkFBaUIsRUFDakIsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxvQkFBb0IsRUFBaUIsTUFBTSxjQUFjLENBQUM7QUFFckYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFFLE9BQU8sRUFDTCw4QkFBOEIsRUFDOUIsb0NBQW9DLEdBQ3JDLE1BQU0sb0NBQW9DLENBQUM7OztBQUU1QyxNQWlDYSx3QkFBd0I7SUFqQ3JDO1FBa0NVLGtCQUFhLEdBQUcsTUFBTSxDQUFvQyxpQ0FBaUMsRUFBRTtZQUNuRyxRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUMsQ0FBQztRQUVnQixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3JELFNBQUksR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQStCbEMsVUFBSyxHQUE2QyxJQUFJLENBQUM7UUFVdkQsV0FBTSxHQUFhLEVBQUUsQ0FBQztRQVV0QixpQkFBWSxHQUFhLEVBQUUsQ0FBQztRQVU1QixxQkFBZ0IsR0FBa0IsSUFBSSxDQUFDO1FBRXJDLFlBQU8sR0FBb0IsRUFBRSxDQUFDO0tBYXpDO0lBMUVDLElBQ0ksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBQ0QsSUFBSSxJQUFJLENBQUMsQ0FBdUQ7UUFDOUQsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyRCxNQUFNLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFbEQsSUFBSSxTQUFTLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBRWxCLE9BQU8sQ0FBQyxJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFakQsT0FBTztTQUNSO1FBRUQsSUFBSSxTQUFTLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUM1RCxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7U0FDdkQ7UUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxvQ0FBb0MsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2pHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxHQUFHLFNBQVMsRUFBRSxHQUFHLElBQUksU0FBUyxFQUFFLFdBQVcsSUFBSSxJQUFJLENBQUM7UUFDeEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEdBQUcsU0FBUyxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUM7UUFDbEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsU0FBUyxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUM7UUFDcEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsU0FBUyxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUM7UUFFekQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFHRCxJQUNJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLENBQVc7UUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDaEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDO0lBQzFELENBQUM7SUFHRCxJQUNJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUNELElBQUksV0FBVyxDQUFDLENBQVc7UUFDekIsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFHRCxJQUNJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQUNELElBQUksZUFBZSxDQUFDLENBQWdCO1FBQ2xDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFLRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNwQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7U0FDaEM7SUFDSCxDQUFDO0lBRU8sV0FBVztRQUNqQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLDhCQUE4QixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVwSCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzNCLENBQUM7OEdBakZVLHdCQUF3QjtrR0FBeEIsd0JBQXdCLHdjQS9CekI7Ozs7Ozs7Ozs7Ozs7OztHQWVULDREQUkwQyxnQkFBZ0I7O1NBWWhELHdCQUF3QjsyRkFBeEIsd0JBQXdCO2tCQWpDcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7OztHQWVUO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUM7b0JBQzVELGNBQWMsRUFBRTt3QkFDZDs0QkFDRSxTQUFTLEVBQUUsb0JBQW9COzRCQUMvQix1RUFBdUU7NEJBQ3ZFLE1BQU0sRUFBRSxDQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsQ0FBQzt5QkFDdEY7cUJBQ0Y7b0JBQ0QsSUFBSSxFQUFFO3dCQUNKLEtBQUssRUFBRSxxQkFBcUI7cUJBQzdCO2lCQUNGOzhCQVVLLElBQUk7c0JBRFAsS0FBSztnQkFnQ0YsS0FBSztzQkFEUixLQUFLO2dCQVdGLFdBQVc7c0JBRGQsS0FBSztnQkFXRixlQUFlO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcywgTmdJZiwgTmdPcHRpbWl6ZWRJbWFnZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQaWN0dXJlQ29tcG9uZW50LCBQaWN0dXJlRGF0YURpcmVjdGl2ZSwgUGljdHVyZVNvdXJjZSB9IGZyb20gJ0BldGhsZXRlL2Nkayc7XG5pbXBvcnQgeyBDb250ZW50ZnVsQXNzZXQsIENvbnRlbnRmdWxJbWFnZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IGlzQ29udGVudGZ1bEltYWdlIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgUklDSF9URVhUX1JFTkRFUkVSX0NPTVBPTkVOVF9EQVRBIH0gZnJvbSAnLi4vcmljaC10ZXh0LXJlbmRlcmVyJztcbmltcG9ydCB7XG4gIGdlbmVyYXRlQ29udGVudGZ1bEltYWdlU291cmNlcyxcbiAgZ2VuZXJhdGVEZWZhdWx0Q29udGVudGZ1bEltYWdlU291cmNlLFxufSBmcm9tICcuL2NvbnRlbnRmdWwtaW1hZ2UuY29tcG9uZW50LnV0aWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZXQtY29udGVudGZ1bC1pbWFnZScsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGV0LXBpY3R1cmVcbiAgICAgIFtpbWdDbGFzc109XCJwaWN0dXJlRGF0YS5pbWdDbGFzc1wiXG4gICAgICBbaGFzUHJpb3JpdHldPVwicGljdHVyZURhdGEuaGFzUHJpb3JpdHlcIlxuICAgICAgW2ZpZ3VyZUNsYXNzXT1cInBpY3R1cmVEYXRhLmZpZ3VyZUNsYXNzXCJcbiAgICAgIFtwaWN0dXJlQ2xhc3NdPVwicGljdHVyZURhdGEucGljdHVyZUNsYXNzXCJcbiAgICAgIFtmaWdjYXB0aW9uQ2xhc3NdPVwicGljdHVyZURhdGEuZmlnY2FwdGlvbkNsYXNzXCJcbiAgICAgIFtkZWZhdWx0U3JjXT1cInBpY3R1cmVEYXRhLmRlZmF1bHRTcmNcIlxuICAgICAgW2FsdF09XCJwaWN0dXJlRGF0YS5hbHRcIlxuICAgICAgW2ZpZ2NhcHRpb25dPVwicGljdHVyZURhdGEuZmlnY2FwdGlvblwiXG4gICAgICBbd2lkdGhdPVwicGljdHVyZURhdGEud2lkdGhcIlxuICAgICAgW2hlaWdodF09XCJwaWN0dXJlRGF0YS5oZWlnaHRcIlxuICAgICAgW3NpemVzXT1cInBpY3R1cmVEYXRhLnNpemVzXCJcbiAgICAgIFtzb3VyY2VzXT1cInNvdXJjZXNcIlxuICAgIC8+XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdJZiwgTmdDbGFzcywgTmdPcHRpbWl6ZWRJbWFnZSwgUGljdHVyZUNvbXBvbmVudF0sXG4gIGhvc3REaXJlY3RpdmVzOiBbXG4gICAge1xuICAgICAgZGlyZWN0aXZlOiBQaWN0dXJlRGF0YURpcmVjdGl2ZSxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gICAgICBpbnB1dHM6IFsnaW1nQ2xhc3MnLCAnaGFzUHJpb3JpdHknLCAnZmlndXJlQ2xhc3MnLCAncGljdHVyZUNsYXNzJywgJ2ZpZ2NhcHRpb25DbGFzcyddLFxuICAgIH0sXG4gIF0sXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2V0LWNvbnRlbnRmdWwtaW1hZ2UnLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBDb250ZW50ZnVsSW1hZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIF9yaWNoVGV4dERhdGEgPSBpbmplY3Q8Q29udGVudGZ1bEFzc2V0IHwgQ29udGVudGZ1bEltYWdlPihSSUNIX1RFWFRfUkVOREVSRVJfQ09NUE9ORU5UX0RBVEEsIHtcbiAgICBvcHRpb25hbDogdHJ1ZSxcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBpY3R1cmVEYXRhID0gaW5qZWN0KFBpY3R1cmVEYXRhRGlyZWN0aXZlKTtcbiAgcmVhZG9ubHkgX2NkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgQElucHV0KClcbiAgZ2V0IGRhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGE7XG4gIH1cbiAgc2V0IGRhdGEodjogQ29udGVudGZ1bEFzc2V0IHwgQ29udGVudGZ1bEltYWdlIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IGFzc2V0RGF0YSA9IGlzQ29udGVudGZ1bEltYWdlKHYpID8gdi5hc3NldCA6IHY7XG4gICAgY29uc3QgaW1hZ2VEYXRhID0gaXNDb250ZW50ZnVsSW1hZ2UodikgPyB2IDogbnVsbDtcblxuICAgIGlmIChhc3NldERhdGEgJiYgIWFzc2V0RGF0YS5jb250ZW50VHlwZSkge1xuICAgICAgdGhpcy5fZGF0YSA9IG51bGw7XG5cbiAgICAgIGNvbnNvbGUud2FybignVGhlIHByb3ZpZGVkIGFzc2V0IGlzIGludmFsaWQnLCB2KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChhc3NldERhdGEgJiYgIWFzc2V0RGF0YS5jb250ZW50VHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgcHJvdmlkZWQgYXNzZXQgaXMgbm90IGFuIGltYWdlJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fZGF0YSA9IHYgPz8gbnVsbDtcbiAgICB0aGlzLnBpY3R1cmVEYXRhLmRlZmF1bHRTcmMgPSBhc3NldERhdGEgPyBnZW5lcmF0ZURlZmF1bHRDb250ZW50ZnVsSW1hZ2VTb3VyY2UoYXNzZXREYXRhKSA6IG51bGw7XG4gICAgdGhpcy5waWN0dXJlRGF0YS5hbHQgPSBpbWFnZURhdGE/LmFsdCA/PyBhc3NldERhdGE/LmRlc2NyaXB0aW9uID8/IG51bGw7XG4gICAgdGhpcy5waWN0dXJlRGF0YS53aWR0aCA9IGFzc2V0RGF0YT8ud2lkdGggPz8gbnVsbDtcbiAgICB0aGlzLnBpY3R1cmVEYXRhLmhlaWdodCA9IGFzc2V0RGF0YT8uaGVpZ2h0ID8/IG51bGw7XG4gICAgdGhpcy5waWN0dXJlRGF0YS5maWdjYXB0aW9uID0gaW1hZ2VEYXRhPy5jYXB0aW9uID8/IG51bGw7XG5cbiAgICB0aGlzLnVwZGF0ZVNpemVzKCk7XG4gIH1cbiAgcHJpdmF0ZSBfZGF0YTogQ29udGVudGZ1bEFzc2V0IHwgQ29udGVudGZ1bEltYWdlIHwgbnVsbCA9IG51bGw7XG5cbiAgQElucHV0KClcbiAgZ2V0IHNpemVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fc2l6ZXM7XG4gIH1cbiAgc2V0IHNpemVzKHY6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fc2l6ZXMgPSB2O1xuICAgIHRoaXMucGljdHVyZURhdGEuc2l6ZXMgPSB0aGlzLnNpemVzPy5qb2luKCcsICcpID8/IG51bGw7XG4gIH1cbiAgcHJpdmF0ZSBfc2l6ZXM6IHN0cmluZ1tdID0gW107XG5cbiAgQElucHV0KClcbiAgZ2V0IHNyY3NldFNpemVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fc3Jjc2V0U2l6ZXM7XG4gIH1cbiAgc2V0IHNyY3NldFNpemVzKHY6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fc3Jjc2V0U2l6ZXMgPSB2O1xuICAgIHRoaXMudXBkYXRlU2l6ZXMoKTtcbiAgfVxuICBwcml2YXRlIF9zcmNzZXRTaXplczogc3RyaW5nW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBnZXQgYmFja2dyb3VuZENvbG9yKCkge1xuICAgIHJldHVybiB0aGlzLl9iYWNrZ3JvdW5kQ29sb3I7XG4gIH1cbiAgc2V0IGJhY2tncm91bmRDb2xvcih2OiBzdHJpbmcgfCBudWxsKSB7XG4gICAgdGhpcy5fYmFja2dyb3VuZENvbG9yID0gdjtcbiAgICB0aGlzLnVwZGF0ZVNpemVzKCk7XG4gIH1cbiAgcHJpdmF0ZSBfYmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBwcm90ZWN0ZWQgc291cmNlczogUGljdHVyZVNvdXJjZVtdID0gW107XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3JpY2hUZXh0RGF0YSAmJiAhdGhpcy5kYXRhKSB7XG4gICAgICB0aGlzLmRhdGEgPSB0aGlzLl9yaWNoVGV4dERhdGE7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTaXplcygpIHtcbiAgICB0aGlzLnNvdXJjZXMgPSB0aGlzLl9kYXRhID8gZ2VuZXJhdGVDb250ZW50ZnVsSW1hZ2VTb3VyY2VzKHRoaXMuX2RhdGEsIHRoaXMuc3Jjc2V0U2l6ZXMsIHRoaXMuYmFja2dyb3VuZENvbG9yKSA6IFtdO1xuXG4gICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,113 @@
1
+ import { ComponentPortal, DomPortalOutlet } from '@angular/cdk/portal';
2
+ import { DOCUMENT } from '@angular/common';
3
+ import { ApplicationRef, ChangeDetectionStrategy, Component, ComponentFactoryResolver, ElementRef, inject, Injector, Input, Renderer2, ViewEncapsulation, } from '@angular/core';
4
+ import { ContentfulImageComponent } from '..';
5
+ import { CONTENTFUL_CONFIG } from '../../constants/contentful.constants';
6
+ import { createContentfulConfig } from '../../utils/contentful-config';
7
+ import { RICH_TEXT_RENDERER_COMPONENT_DATA } from './rich-text-renderer.constants';
8
+ import { createRenderCommandsFromContentfulRichText } from './rich-text-renderer.util';
9
+ import * as i0 from "@angular/core";
10
+ class ContentfulRichTextRendererComponent {
11
+ constructor() {
12
+ this._richText = null;
13
+ this._renderer = inject(Renderer2);
14
+ this._elementRef = inject(ElementRef);
15
+ this._componentFactoryResolver = inject(ComponentFactoryResolver);
16
+ this._document = inject(DOCUMENT);
17
+ this._appRef = inject(ApplicationRef);
18
+ this._injector = inject(Injector);
19
+ this._config = inject(CONTENTFUL_CONFIG, { optional: true }) ?? createContentfulConfig();
20
+ }
21
+ get richText() {
22
+ return this._richText;
23
+ }
24
+ set richText(v) {
25
+ this._richText = v ?? null;
26
+ this.resetAndRender();
27
+ }
28
+ resetAndRender() {
29
+ // clear childNodes to prevent appending new richtext elements to existing one
30
+ const childElements = this._elementRef.nativeElement.childNodes;
31
+ for (const child of childElements) {
32
+ this._renderer.removeChild(this._elementRef.nativeElement, child);
33
+ }
34
+ if (!this._richText) {
35
+ return;
36
+ }
37
+ const commands = createRenderCommandsFromContentfulRichText({ data: this._richText, config: this._config });
38
+ this._render(commands);
39
+ }
40
+ _render(commands) {
41
+ // create a document fragment to hold the elements while we create them
42
+ const fragment = document.createDocumentFragment();
43
+ const hostCommand = {
44
+ payload: 'document',
45
+ children: commands,
46
+ };
47
+ // loop over the commands
48
+ this._executeCommand({ command: hostCommand, parent: fragment });
49
+ // append the fragment to the host element
50
+ this._renderer.appendChild(this._elementRef.nativeElement, fragment);
51
+ }
52
+ _executeCommand(data) {
53
+ const { command, parent } = data;
54
+ let element = null;
55
+ if (command.payload !== 'document') {
56
+ if (typeof command.payload === 'string') {
57
+ element = this._renderer.createElement(command.payload);
58
+ if (command.data) {
59
+ this._renderer.setProperty(element, 'innerText', command.data);
60
+ }
61
+ if (command.attributes) {
62
+ for (const [name, value] of Object.entries(command.attributes)) {
63
+ this._renderer.setAttribute(element, name, value);
64
+ }
65
+ }
66
+ this._renderer.appendChild(parent, element);
67
+ }
68
+ else {
69
+ const injector = Injector.create({
70
+ providers: [
71
+ {
72
+ provide: RICH_TEXT_RENDERER_COMPONENT_DATA,
73
+ useValue: command.data,
74
+ },
75
+ ],
76
+ parent: this._injector,
77
+ });
78
+ const portal = new DomPortalOutlet(parent, this._componentFactoryResolver, this._appRef, injector, this._document);
79
+ const comp = new ComponentPortal(command.payload);
80
+ const ref = comp.attach(portal);
81
+ if (ref.instance instanceof ContentfulImageComponent) {
82
+ ref.instance.sizes = this._config.imageOptions.sizes;
83
+ ref.instance.srcsetSizes = this._config.imageOptions.srcsetSizes;
84
+ ref.instance.backgroundColor = this._config.imageOptions.backgroundColor;
85
+ }
86
+ element = ref.location.nativeElement;
87
+ }
88
+ }
89
+ // loop over the commands
90
+ for (const childCommand of command.children) {
91
+ this._executeCommand({ command: childCommand, parent: element ?? parent });
92
+ }
93
+ }
94
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ContentfulRichTextRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
95
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: ContentfulRichTextRendererComponent, isStandalone: true, selector: "et-contentful-rich-text-renderer", inputs: { richText: "richText" }, host: { classAttribute: "et-contentful-rich-text-renderer" }, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
96
+ }
97
+ export { ContentfulRichTextRendererComponent };
98
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ContentfulRichTextRendererComponent, decorators: [{
99
+ type: Component,
100
+ args: [{
101
+ selector: 'et-contentful-rich-text-renderer',
102
+ template: ``,
103
+ encapsulation: ViewEncapsulation.None,
104
+ changeDetection: ChangeDetectionStrategy.OnPush,
105
+ standalone: true,
106
+ host: {
107
+ class: 'et-contentful-rich-text-renderer',
108
+ },
109
+ }]
110
+ }], propDecorators: { richText: [{
111
+ type: Input
112
+ }] } });
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmljaC10ZXh0LXJlbmRlcmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29udGVudGZ1bC9zcmMvbGliL2NvbXBvbmVudHMvcmljaC10ZXh0LXJlbmRlcmVyL3JpY2gtdGV4dC1yZW5kZXJlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUNMLGNBQWMsRUFDZCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULHdCQUF3QixFQUN4QixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBQ0wsU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDOUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFekUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFbkYsT0FBTyxFQUFFLDBDQUEwQyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBRXZGLE1BVWEsbUNBQW1DO0lBVmhEO1FBb0JVLGNBQVMsR0FBNEIsSUFBSSxDQUFDO1FBRTFDLGNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUIsZ0JBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakMsOEJBQXlCLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDN0QsY0FBUyxHQUFHLE1BQU0sQ0FBVyxRQUFRLENBQUMsQ0FBQztRQUN2QyxZ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Q0gsQ0FBQzs4R0ExR1UsbUNBQW1DO2tHQUFuQyxtQ0FBbUMsNExBUnBDLEVBQUU7O1NBUUQsbUNBQW1DOzJGQUFuQyxtQ0FBbUM7a0JBVi9DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtDQUFrQztvQkFDNUMsUUFBUSxFQUFFLEVBQUU7b0JBQ1osYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFO3dCQUNKLEtBQUssRUFBRSxrQ0FBa0M7cUJBQzFDO2lCQUNGOzhCQUdLLFFBQVE7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFBvcnRhbCwgRG9tUG9ydGFsT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBcHBsaWNhdGlvblJlZixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBFbGVtZW50UmVmLFxuICBpbmplY3QsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgUmVuZGVyZXIyLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250ZW50ZnVsSW1hZ2VDb21wb25lbnQgfSBmcm9tICcuLic7XG5pbXBvcnQgeyBDT05URU5URlVMX0NPTkZJRyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9jb250ZW50ZnVsLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBSaWNoVGV4dFJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgY3JlYXRlQ29udGVudGZ1bENvbmZpZyB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbnRlbnRmdWwtY29uZmlnJztcbmltcG9ydCB7IFJJQ0hfVEVYVF9SRU5ERVJFUl9DT01QT05FTlRfREFUQSB9IGZyb20gJy4vcmljaC10ZXh0LXJlbmRlcmVyLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBSaWNoVGV4dFJlbmRlckNvbW1hbmQgfSBmcm9tICcuL3JpY2gtdGV4dC1yZW5kZXJlci50eXBlcyc7XG5pbXBvcnQgeyBjcmVhdGVSZW5kZXJDb21tYW5kc0Zyb21Db250ZW50ZnVsUmljaFRleHQgfSBmcm9tICcuL3JpY2gtdGV4dC1yZW5kZXJlci51dGlsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZXQtY29udGVudGZ1bC1yaWNoLXRleHQtcmVuZGVyZXInLFxuICB0ZW1wbGF0ZTogYGAsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdldC1jb250ZW50ZnVsLXJpY2gtdGV4dC1yZW5kZXJlcicsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIENvbnRlbnRmdWxSaWNoVGV4dFJlbmRlcmVyQ29tcG9uZW50IHtcbiAgQElucHV0KClcbiAgZ2V0IHJpY2hUZXh0KCkge1xuICAgIHJldHVybiB0aGlzLl9yaWNoVGV4dDtcbiAgfVxuICBzZXQgcmljaFRleHQodjogUmljaFRleHRSZXNwb25zZSB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9yaWNoVGV4dCA9IHYgPz8gbnVsbDtcblxuICAgIHRoaXMucmVzZXRBbmRSZW5kZXIoKTtcbiAgfVxuICBwcml2YXRlIF9yaWNoVGV4dDogUmljaFRleHRSZXNwb25zZSB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgX3JlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG4gIHByaXZhdGUgX2VsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHByaXZhdGUgX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlciA9IGluamVjdChDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpO1xuICBwcml2YXRlIF9kb2N1bWVudCA9IGluamVjdDxEb2N1bWVudD4oRE9DVU1FTlQpO1xuICBwcml2YXRlIF9hcHBSZWYgPSBpbmplY3QoQXBwbGljYXRpb25SZWYpO1xuICBwcml2YXRlIF9pbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHByaXZhdGUgX2NvbmZpZyA9IGluamVjdChDT05URU5URlVMX0NPTkZJRywgeyBvcHRpb25hbDogdHJ1ZSB9KSA/PyBjcmVhdGVDb250ZW50ZnVsQ29uZmlnKCk7XG5cbiAgcmVzZXRBbmRSZW5kZXIoKSB7XG4gICAgLy8gY2xlYXIgY2hpbGROb2RlcyB0byBwcmV2ZW50IGFwcGVuZGluZyBuZXcgcmljaHRleHQgZWxlbWVudHMgdG8gZXhpc3Rpbmcgb25lXG4gICAgY29uc3QgY2hpbGRFbGVtZW50cyA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jaGlsZE5vZGVzO1xuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRFbGVtZW50cykge1xuICAgICAgdGhpcy5fcmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBjaGlsZCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9yaWNoVGV4dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbW1hbmRzID0gY3JlYXRlUmVuZGVyQ29tbWFuZHNGcm9tQ29udGVudGZ1bFJpY2hUZXh0KHsgZGF0YTogdGhpcy5fcmljaFRleHQsIGNvbmZpZzogdGhpcy5fY29uZmlnIH0pO1xuXG4gICAgdGhpcy5fcmVuZGVyKGNvbW1hbmRzKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbmRlcihjb21tYW5kczogUmljaFRleHRSZW5kZXJDb21tYW5kW10pIHtcbiAgICAvLyBjcmVhdGUgYSBkb2N1bWVudCBmcmFnbWVudCB0byBob2xkIHRoZSBlbGVtZW50cyB3aGlsZSB3ZSBjcmVhdGUgdGhlbVxuICAgIGNvbnN0IGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuXG4gICAgY29uc3QgaG9zdENvbW1hbmQ6IFJpY2hUZXh0UmVuZGVyQ29tbWFuZCA9IHtcbiAgICAgIHBheWxvYWQ6ICdkb2N1bWVudCcsXG4gICAgICBjaGlsZHJlbjogY29tbWFuZHMsXG4gICAgfTtcblxuICAgIC8vIGxvb3Agb3ZlciB0aGUgY29tbWFuZHNcbiAgICB0aGlzLl9leGVjdXRlQ29tbWFuZCh7IGNvbW1hbmQ6IGhvc3RDb21tYW5kLCBwYXJlbnQ6IGZyYWdtZW50IH0pO1xuXG4gICAgLy8gYXBwZW5kIHRoZSBmcmFnbWVudCB0byB0aGUgaG9zdCBlbGVtZW50XG4gICAgdGhpcy5fcmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBmcmFnbWVudCk7XG4gIH1cblxuICBwcml2YXRlIF9leGVjdXRlQ29tbWFuZChkYXRhOiB7IGNvbW1hbmQ6IFJpY2hUZXh0UmVuZGVyQ29tbWFuZDsgcGFyZW50OiBFbGVtZW50IHwgRG9jdW1lbnRGcmFnbWVudCB9KSB7XG4gICAgY29uc3QgeyBjb21tYW5kLCBwYXJlbnQgfSA9IGRhdGE7XG5cbiAgICBsZXQgZWxlbWVudDogRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAgIGlmIChjb21tYW5kLnBheWxvYWQgIT09ICdkb2N1bWVudCcpIHtcbiAgICAgIGlmICh0eXBlb2YgY29tbWFuZC5wYXlsb2FkID09PSAnc3RyaW5nJykge1xuICAgICAgICBlbGVtZW50ID0gdGhpcy5fcmVuZGVyZXIuY3JlYXRlRWxlbWVudChjb21tYW5kLnBheWxvYWQpO1xuXG4gICAgICAgIGlmIChjb21tYW5kLmRhdGEpIHtcbiAgICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eShlbGVtZW50LCAnaW5uZXJUZXh0JywgY29tbWFuZC5kYXRhKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb21tYW5kLmF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IFtuYW1lLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoY29tbWFuZC5hdHRyaWJ1dGVzKSkge1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0QXR0cmlidXRlKGVsZW1lbnQsIG5hbWUsIHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuYXBwZW5kQ2hpbGQocGFyZW50LCBlbGVtZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcHJvdmlkZTogUklDSF9URVhUX1JFTkRFUkVSX0NPTVBPTkVOVF9EQVRBLFxuICAgICAgICAgICAgICB1c2VWYWx1ZTogY29tbWFuZC5kYXRhLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHBhcmVudDogdGhpcy5faW5qZWN0b3IsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHBvcnRhbCA9IG5ldyBEb21Qb3J0YWxPdXRsZXQoXG4gICAgICAgICAgcGFyZW50IGFzIEVsZW1lbnQsXG4gICAgICAgICAgdGhpcy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgICAgICAgIHRoaXMuX2FwcFJlZixcbiAgICAgICAgICBpbmplY3RvcixcbiAgICAgICAgICB0aGlzLl9kb2N1bWVudCxcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBjb21wID0gbmV3IENvbXBvbmVudFBvcnRhbChjb21tYW5kLnBheWxvYWQpO1xuICAgICAgICBjb25zdCByZWYgPSBjb21wLmF0dGFjaChwb3J0YWwpO1xuXG4gICAgICAgIGlmIChyZWYuaW5zdGFuY2UgaW5zdGFuY2VvZiBDb250ZW50ZnVsSW1hZ2VDb21wb25lbnQpIHtcbiAgICAgICAgICByZWYuaW5zdGFuY2Uuc2l6ZXMgPSB0aGlzLl9jb25maWcuaW1hZ2VPcHRpb25zLnNpemVzO1xuICAgICAgICAgIHJlZi5pbnN0YW5jZS5zcmNzZXRTaXplcyA9IHRoaXMuX2NvbmZpZy5pbWFnZU9wdGlvbnMuc3Jjc2V0U2l6ZXM7XG4gICAgICAgICAgcmVmLmluc3RhbmNlLmJhY2tncm91bmRDb2xvciA9IHRoaXMuX2NvbmZpZy5pbWFnZU9wdGlvbnMuYmFja2dyb3VuZENvbG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgZWxlbWVudCA9IHJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGxvb3Agb3ZlciB0aGUgY29tbWFuZHNcbiAgICBmb3IgKGNvbnN0IGNoaWxkQ29tbWFuZCBvZiBjb21tYW5kLmNoaWxkcmVuKSB7XG4gICAgICB0aGlzLl9leGVjdXRlQ29tbWFuZCh7IGNvbW1hbmQ6IGNoaWxkQ29tbWFuZCwgcGFyZW50OiBlbGVtZW50ID8/IHBhcmVudCB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,57 @@
1
+ import { NgClass, NgIf } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, inject, Input, ViewEncapsulation } from '@angular/core';
3
+ import { RICH_TEXT_RENDERER_COMPONENT_DATA } from '../rich-text-renderer';
4
+ import * as i0 from "@angular/core";
5
+ class ContentfulVideoComponent {
6
+ constructor() {
7
+ this._richTextData = inject(RICH_TEXT_RENDERER_COMPONENT_DATA, { optional: true });
8
+ this._data = null;
9
+ this.videoClass = null;
10
+ }
11
+ get data() {
12
+ return this._data;
13
+ }
14
+ set data(v) {
15
+ if (v && !v.contentType) {
16
+ this._data = null;
17
+ console.warn('The provided asset is invalid', v);
18
+ return;
19
+ }
20
+ if (v && !v.contentType.startsWith('video/')) {
21
+ throw new Error('The provided asset is not an video');
22
+ }
23
+ this._data = v ?? null;
24
+ }
25
+ ngOnInit() {
26
+ if (this._richTextData && !this.data) {
27
+ this.data = this._richTextData;
28
+ }
29
+ }
30
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ContentfulVideoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
31
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: ContentfulVideoComponent, isStandalone: true, selector: "et-contentful-video", inputs: { data: "data", videoClass: "videoClass" }, ngImport: i0, template: `
32
+ <video *ngIf="data" [ngClass]="videoClass" controls>
33
+ <source src="{{ data.url }}" type="{{ data.contentType }}" />
34
+ </video>
35
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
36
+ }
37
+ export { ContentfulVideoComponent };
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ContentfulVideoComponent, decorators: [{
39
+ type: Component,
40
+ args: [{
41
+ selector: 'et-contentful-video',
42
+ template: `
43
+ <video *ngIf="data" [ngClass]="videoClass" controls>
44
+ <source src="{{ data.url }}" type="{{ data.contentType }}" />
45
+ </video>
46
+ `,
47
+ changeDetection: ChangeDetectionStrategy.OnPush,
48
+ encapsulation: ViewEncapsulation.None,
49
+ standalone: true,
50
+ imports: [NgIf, NgClass],
51
+ }]
52
+ }], propDecorators: { data: [{
53
+ type: Input
54
+ }], videoClass: [{
55
+ type: Input
56
+ }] } });
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudGZ1bC12aWRlby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbnRlbnRmdWwvc3JjL2xpYi9jb21wb25lbnRzL3ZpZGVvL2NvbnRlbnRmdWwtdmlkZW8uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzdHLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUUxRSxNQVlhLHdCQUF3QjtJQVpyQztRQWFVLGtCQUFhLEdBQUcsTUFBTSxDQUFrQixpQ0FBaUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBcUIvRixVQUFLLEdBQTJCLElBQUksQ0FBQztRQUc3QyxlQUFVLEdBQWdCLElBQUksQ0FBQztLQU9oQztJQTdCQyxJQUNJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUNELElBQUksSUFBSSxDQUFDLENBQXFDO1FBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRTtZQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUVsQixPQUFPLENBQUMsSUFBSSxDQUFDLCtCQUErQixFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRWpELE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDNUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1NBQ3ZEO1FBRUQsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDO0lBQ3pCLENBQUM7SUFNRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNwQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7U0FDaEM7SUFDSCxDQUFDOzhHQS9CVSx3QkFBd0I7a0dBQXhCLHdCQUF3QixtSUFWekI7Ozs7R0FJVCw0REFJUyxJQUFJLDZGQUFFLE9BQU87O1NBRVosd0JBQXdCOzJGQUF4Qix3QkFBd0I7a0JBWnBDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsUUFBUSxFQUFFOzs7O0dBSVQ7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQztpQkFDekI7OEJBS0ssSUFBSTtzQkFEUCxLQUFLO2dCQXNCTixVQUFVO3NCQURULEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nQ2xhc3NUeXBlIH0gZnJvbSAnQGV0aGxldGUvY29yZSc7XG5pbXBvcnQgeyBDb250ZW50ZnVsQXNzZXQgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBSSUNIX1RFWFRfUkVOREVSRVJfQ09NUE9ORU5UX0RBVEEgfSBmcm9tICcuLi9yaWNoLXRleHQtcmVuZGVyZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdldC1jb250ZW50ZnVsLXZpZGVvJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8dmlkZW8gKm5nSWY9XCJkYXRhXCIgW25nQ2xhc3NdPVwidmlkZW9DbGFzc1wiIGNvbnRyb2xzPlxuICAgICAgPHNvdXJjZSBzcmM9XCJ7eyBkYXRhLnVybCB9fVwiIHR5cGU9XCJ7eyBkYXRhLmNvbnRlbnRUeXBlIH19XCIgLz5cbiAgICA8L3ZpZGVvPlxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nSWYsIE5nQ2xhc3NdLFxufSlcbmV4cG9ydCBjbGFzcyBDb250ZW50ZnVsVmlkZW9Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIF9yaWNoVGV4dERhdGEgPSBpbmplY3Q8Q29udGVudGZ1bEFzc2V0PihSSUNIX1RFWFRfUkVOREVSRVJfQ09NUE9ORU5UX0RBVEEsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgQElucHV0KClcbiAgZ2V0IGRhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGE7XG4gIH1cbiAgc2V0IGRhdGEodjogQ29udGVudGZ1bEFzc2V0IHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2ICYmICF2LmNvbnRlbnRUeXBlKSB7XG4gICAgICB0aGlzLl9kYXRhID0gbnVsbDtcblxuICAgICAgY29uc29sZS53YXJuKCdUaGUgcHJvdmlkZWQgYXNzZXQgaXMgaW52YWxpZCcsIHYpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHYgJiYgIXYuY29udGVudFR5cGUuc3RhcnRzV2l0aCgndmlkZW8vJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHByb3ZpZGVkIGFzc2V0IGlzIG5vdCBhbiB2aWRlbycpO1xuICAgIH1cblxuICAgIHRoaXMuX2RhdGEgPSB2ID8/IG51bGw7XG4gIH1cbiAgcHJpdmF0ZSBfZGF0YTogQ29udGVudGZ1bEFzc2V0IHwgbnVsbCA9IG51bGw7XG5cbiAgQElucHV0KClcbiAgdmlkZW9DbGFzczogTmdDbGFzc1R5cGUgPSBudWxsO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9yaWNoVGV4dERhdGEgJiYgIXRoaXMuZGF0YSkge1xuICAgICAgdGhpcy5kYXRhID0gdGhpcy5fcmljaFRleHREYXRhO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -191,9 +191,8 @@ class ContentfulImageComponent {
191
191
  this.sources = this._data ? generateContentfulImageSources(this._data, this.srcsetSizes, this.backgroundColor) : [];
192
192
  this._cdr.markForCheck();
193
193
  }
194
- }
195
- ContentfulImageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ContentfulImageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
196
- ContentfulImageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: ContentfulImageComponent, isStandalone: true, selector: "et-contentful-image", inputs: { data: "data", sizes: "sizes", srcsetSizes: "srcsetSizes", backgroundColor: "backgroundColor" }, host: { classAttribute: "et-contentful-image" }, hostDirectives: [{ directive: i1.PictureDataDirective, inputs: ["imgClass", "imgClass", "hasPriority", "hasPriority", "figureClass", "figureClass", "pictureClass", "pictureClass", "figcaptionClass", "figcaptionClass"] }], ngImport: i0, template: `
194
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ContentfulImageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
195
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: ContentfulImageComponent, isStandalone: true, selector: "et-contentful-image", inputs: { data: "data", sizes: "sizes", srcsetSizes: "srcsetSizes", backgroundColor: "backgroundColor" }, host: { classAttribute: "et-contentful-image" }, hostDirectives: [{ directive: i1.PictureDataDirective, inputs: ["imgClass", "imgClass", "hasPriority", "hasPriority", "figureClass", "figureClass", "pictureClass", "pictureClass", "figcaptionClass", "figcaptionClass"] }], ngImport: i0, template: `
197
196
  <et-picture
198
197
  [imgClass]="pictureData.imgClass"
199
198
  [hasPriority]="pictureData.hasPriority"
@@ -208,8 +207,9 @@ ContentfulImageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0
208
207
  [sizes]="pictureData.sizes"
209
208
  [sources]="sources"
210
209
  />
211
- `, isInline: true, dependencies: [{ kind: "component", type: PictureComponent, selector: "et-picture", inputs: ["sources"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
212
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ContentfulImageComponent, decorators: [{
210
+ `, isInline: true, dependencies: [{ kind: "component", type: PictureComponent, selector: "et-picture", inputs: ["sources"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
211
+ }
212
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ContentfulImageComponent, decorators: [{
213
213
  type: Component,
214
214
  args: [{
215
215
  selector: 'et-contentful-image',
@@ -526,10 +526,10 @@ class ContentfulRichTextRendererComponent {
526
526
  this._executeCommand({ command: childCommand, parent: element ?? parent });
527
527
  }
528
528
  }
529
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ContentfulRichTextRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
530
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: ContentfulRichTextRendererComponent, isStandalone: true, selector: "et-contentful-rich-text-renderer", inputs: { richText: "richText" }, host: { classAttribute: "et-contentful-rich-text-renderer" }, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
529
531
  }
530
- ContentfulRichTextRendererComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ContentfulRichTextRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
531
- ContentfulRichTextRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: ContentfulRichTextRendererComponent, isStandalone: true, selector: "et-contentful-rich-text-renderer", inputs: { richText: "richText" }, host: { classAttribute: "et-contentful-rich-text-renderer" }, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
532
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ContentfulRichTextRendererComponent, decorators: [{
532
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ContentfulRichTextRendererComponent, decorators: [{
533
533
  type: Component,
534
534
  args: [{
535
535
  selector: 'et-contentful-rich-text-renderer',
@@ -572,15 +572,15 @@ class ContentfulAudioComponent {
572
572
  this.data = this._richTextData;
573
573
  }
574
574
  }
575
- }
576
- ContentfulAudioComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ContentfulAudioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
577
- ContentfulAudioComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: ContentfulAudioComponent, isStandalone: true, selector: "et-contentful-audio", inputs: { data: "data", audioClass: "audioClass", figureClass: "figureClass", figcaptionClass: "figcaptionClass" }, ngImport: i0, template: `
575
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ContentfulAudioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
576
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: ContentfulAudioComponent, isStandalone: true, selector: "et-contentful-audio", inputs: { data: "data", audioClass: "audioClass", figureClass: "figureClass", figcaptionClass: "figcaptionClass" }, ngImport: i0, template: `
578
577
  <figure *ngIf="data" [ngClass]="figureClass">
579
578
  <figcaption [ngClass]="figcaptionClass">{{ data.title }}</figcaption>
580
579
  <audio [ngClass]="audioClass" controls src="{{ data.url }}"></audio>
581
580
  </figure>
582
- `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
583
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ContentfulAudioComponent, decorators: [{
581
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
582
+ }
583
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ContentfulAudioComponent, decorators: [{
584
584
  type: Component,
585
585
  args: [{
586
586
  selector: 'et-contentful-audio',
@@ -627,14 +627,14 @@ class ContentfulFileComponent {
627
627
  this.data = this._richTextData;
628
628
  }
629
629
  }
630
- }
631
- ContentfulFileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ContentfulFileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
632
- ContentfulFileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: ContentfulFileComponent, isStandalone: true, selector: "et-contentful-file", inputs: { data: "data", fileClass: "fileClass" }, ngImport: i0, template: `
630
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ContentfulFileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
631
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: ContentfulFileComponent, isStandalone: true, selector: "et-contentful-file", inputs: { data: "data", fileClass: "fileClass" }, ngImport: i0, template: `
633
632
  <a *ngIf="data" [href]="data.url" [ngClass]="fileClass" class="underline" target="_blank">
634
633
  {{ data.title }} ({{ data.size }} Bytes)
635
634
  </a>
636
- `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
637
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ContentfulFileComponent, decorators: [{
635
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
636
+ }
637
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ContentfulFileComponent, decorators: [{
638
638
  type: Component,
639
639
  args: [{
640
640
  selector: 'et-contentful-file',
@@ -679,14 +679,14 @@ class ContentfulVideoComponent {
679
679
  this.data = this._richTextData;
680
680
  }
681
681
  }
682
- }
683
- ContentfulVideoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ContentfulVideoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
684
- ContentfulVideoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: ContentfulVideoComponent, isStandalone: true, selector: "et-contentful-video", inputs: { data: "data", videoClass: "videoClass" }, ngImport: i0, template: `
682
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ContentfulVideoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
683
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: ContentfulVideoComponent, isStandalone: true, selector: "et-contentful-video", inputs: { data: "data", videoClass: "videoClass" }, ngImport: i0, template: `
685
684
  <video *ngIf="data" [ngClass]="videoClass" controls>
686
685
  <source src="{{ data.url }}" type="{{ data.contentType }}" />
687
686
  </video>
688
- `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
689
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ContentfulVideoComponent, decorators: [{
687
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
688
+ }
689
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ContentfulVideoComponent, decorators: [{
690
690
  type: Component,
691
691
  args: [{
692
692
  selector: 'et-contentful-video',