@ethlete/contentful 0.1.0-next.9 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/esm2020/lib/components/audio/contentful-audio.component.mjs +3 -3
  2. package/esm2020/lib/components/file/contentful-file.component.mjs +3 -3
  3. package/esm2020/lib/components/image/contentful-image.component.mjs +94 -47
  4. package/esm2020/lib/components/image/contentful-image.component.utils.mjs +86 -0
  5. package/esm2020/lib/components/image/index.mjs +2 -0
  6. package/esm2020/lib/components/image/public-api.mjs +2 -1
  7. package/esm2020/lib/components/rich-text-renderer/rich-text-renderer.component.mjs +16 -8
  8. package/esm2020/lib/components/rich-text-renderer/rich-text-renderer.util.mjs +13 -10
  9. package/esm2020/lib/components/video/contentful-video.component.mjs +3 -3
  10. package/esm2020/lib/contentful.imports.mjs +9 -0
  11. package/esm2020/lib/gql/asset.fragments.mjs +2 -3
  12. package/esm2020/lib/public-api.mjs +2 -2
  13. package/esm2020/lib/types/contentful.types.mjs +1 -1
  14. package/esm2020/lib/utils/contentful-config.mjs +6 -1
  15. package/esm2020/lib/utils/contentful.util.mjs +7 -1
  16. package/esm2020/lib/utils/index.mjs +2 -0
  17. package/fesm2015/ethlete-contentful.mjs +277 -155
  18. package/fesm2015/ethlete-contentful.mjs.map +1 -1
  19. package/fesm2020/ethlete-contentful.mjs +274 -154
  20. package/fesm2020/ethlete-contentful.mjs.map +1 -1
  21. package/lib/components/image/contentful-image.component.d.ts +20 -12
  22. package/lib/components/image/contentful-image.component.utils.d.ts +16 -0
  23. package/lib/components/image/index.d.ts +1 -0
  24. package/lib/components/image/public-api.d.ts +1 -0
  25. package/lib/components/rich-text-renderer/rich-text-renderer.component.d.ts +1 -1
  26. package/lib/components/rich-text-renderer/rich-text-renderer.util.d.ts +2 -3
  27. package/lib/contentful.imports.d.ts +2 -0
  28. package/lib/public-api.d.ts +1 -1
  29. package/lib/types/contentful.types.d.ts +29 -6
  30. package/lib/utils/contentful.util.d.ts +3 -1
  31. package/lib/utils/index.d.ts +1 -0
  32. package/package.json +3 -3
  33. package/esm2020/lib/contentful.module.mjs +0 -40
  34. package/lib/contentful.module.d.ts +0 -11
@@ -30,14 +30,14 @@ export class ContentfulAudioComponent {
30
30
  }
31
31
  }
32
32
  }
33
- ContentfulAudioComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ContentfulAudioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
34
- ContentfulAudioComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ContentfulAudioComponent, isStandalone: true, selector: "et-contentful-audio", inputs: { data: "data", audioClass: "audioClass", figureClass: "figureClass", figcaptionClass: "figcaptionClass" }, ngImport: i0, template: `
33
+ ContentfulAudioComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ContentfulAudioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
34
+ ContentfulAudioComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: ContentfulAudioComponent, isStandalone: true, selector: "et-contentful-audio", inputs: { data: "data", audioClass: "audioClass", figureClass: "figureClass", figcaptionClass: "figcaptionClass" }, ngImport: i0, template: `
35
35
  <figure *ngIf="data" [ngClass]="figureClass">
36
36
  <figcaption [ngClass]="figcaptionClass">{{ data.title }}</figcaption>
37
37
  <audio [ngClass]="audioClass" controls src="{{ data.url }}"></audio>
38
38
  </figure>
39
39
  `, 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 });
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ContentfulAudioComponent, decorators: [{
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ContentfulAudioComponent, decorators: [{
41
41
  type: Component,
42
42
  args: [{
43
43
  selector: 'et-contentful-audio',
@@ -25,13 +25,13 @@ export class ContentfulFileComponent {
25
25
  }
26
26
  }
27
27
  }
28
- ContentfulFileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ContentfulFileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
29
- ContentfulFileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ContentfulFileComponent, isStandalone: true, selector: "et-contentful-file", inputs: { data: "data", fileClass: "fileClass" }, ngImport: i0, template: `
28
+ ContentfulFileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ContentfulFileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
29
+ ContentfulFileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: ContentfulFileComponent, isStandalone: true, selector: "et-contentful-file", inputs: { data: "data", fileClass: "fileClass" }, ngImport: i0, template: `
30
30
  <a *ngIf="data" [href]="data.url" [ngClass]="fileClass" class="underline" target="_blank">
31
31
  {{ data.title }} ({{ data.size }} Bytes)
32
32
  </a>
33
33
  `, 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 });
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ContentfulFileComponent, decorators: [{
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ContentfulFileComponent, decorators: [{
35
35
  type: Component,
36
36
  args: [{
37
37
  selector: 'et-contentful-file',
@@ -1,89 +1,136 @@
1
- import { coerceBooleanProperty } from '@angular/cdk/coercion';
2
1
  import { NgClass, NgIf, NgOptimizedImage } from '@angular/common';
3
- import { ChangeDetectionStrategy, Component, inject, Input, ViewEncapsulation } from '@angular/core';
2
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, Input, ViewEncapsulation, } from '@angular/core';
3
+ import { PictureComponent, PictureDataDirective } from '@ethlete/components';
4
+ import { isContentfulImage } from '../../utils';
4
5
  import { RICH_TEXT_RENDERER_COMPONENT_DATA } from '../rich-text-renderer';
6
+ import { generateContentfulImageSources, generateDefaultContentfulImageSource, } from './contentful-image.component.utils';
5
7
  import * as i0 from "@angular/core";
8
+ import * as i1 from "@ethlete/components";
6
9
  export class ContentfulImageComponent {
7
10
  constructor() {
8
- this._richTextData = inject(RICH_TEXT_RENDERER_COMPONENT_DATA, { optional: true });
11
+ this._richTextData = inject(RICH_TEXT_RENDERER_COMPONENT_DATA, {
12
+ optional: true,
13
+ });
14
+ this.pictureData = inject(PictureDataDirective);
15
+ this._cdr = inject(ChangeDetectorRef);
9
16
  this._data = null;
10
- this.imgClass = null;
11
- this.pictureClass = null;
12
- this._priority = false;
17
+ this._sizes = [];
18
+ this._srcsetSizes = [];
19
+ this._backgroundColor = null;
20
+ this.sources = [];
13
21
  }
14
22
  get data() {
15
23
  return this._data;
16
24
  }
17
25
  set data(v) {
18
- if (v && !v.contentType) {
26
+ const assetData = isContentfulImage(v) ? v.asset : v;
27
+ const imageData = isContentfulImage(v) ? v : null;
28
+ if (assetData && !assetData.contentType) {
19
29
  this._data = null;
20
30
  console.warn('The provided asset is invalid', v);
21
31
  return;
22
32
  }
23
- if (v && !v.contentType.startsWith('image/')) {
33
+ if (assetData && !assetData.contentType.startsWith('image/')) {
24
34
  throw new Error('The provided asset is not an image');
25
35
  }
26
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();
27
43
  }
28
- get priority() {
29
- return this._priority;
44
+ get sizes() {
45
+ return this._sizes;
30
46
  }
31
- set priority(value) {
32
- this._priority = coerceBooleanProperty(value);
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();
33
64
  }
34
65
  ngOnInit() {
35
66
  if (this._richTextData && !this.data) {
36
67
  this.data = this._richTextData;
37
68
  }
38
69
  }
70
+ updateSizes() {
71
+ this.sources = this._data ? generateContentfulImageSources(this._data, this.srcsetSizes, this.backgroundColor) : [];
72
+ this._cdr.markForCheck();
73
+ }
39
74
  }
40
- ContentfulImageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ContentfulImageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
41
- ContentfulImageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ContentfulImageComponent, isStandalone: true, selector: "et-contentful-image", inputs: { data: "data", imgClass: "imgClass", pictureClass: "pictureClass", priority: "priority" }, ngImport: i0, template: `
42
- <picture *ngIf="data" [ngClass]="pictureClass">
43
- <source srcset="{{ data.url }}?fm=avif" type="image/avif" />
44
- <source srcset="{{ data.url }}?fm=webp" type="image/webp" />
45
- <source srcset="{{ data.url }}?fm=jpg" type="image/jpeg" />
46
- <img
47
- [attr.alt]="data.description ?? undefined"
48
- [width]="data.width ?? undefined"
49
- [height]="data.height ?? undefined"
50
- [priority]="data.priority ?? priority"
51
- [ngClass]="imgClass"
52
- ngSrc="{{ data.url }}"
53
- />
54
- </picture>
55
- `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "disableOptimizedSrcset", "fill", "src", "srcset"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ContentfulImageComponent, decorators: [{
75
+ ContentfulImageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ContentfulImageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
76
+ ContentfulImageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", 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: `
77
+ <et-picture
78
+ [imgClass]="pictureData.imgClass"
79
+ [hasPriority]="pictureData.hasPriority"
80
+ [figureClass]="pictureData.figureClass"
81
+ [pictureClass]="pictureData.pictureClass"
82
+ [figcaptionClass]="pictureData.figcaptionClass"
83
+ [defaultSrc]="pictureData.defaultSrc"
84
+ [alt]="pictureData.alt"
85
+ [figcaption]="pictureData.figcaption"
86
+ [width]="pictureData.width"
87
+ [height]="pictureData.height"
88
+ [sizes]="pictureData.sizes"
89
+ [sources]="sources"
90
+ />
91
+ `, isInline: true, dependencies: [{ kind: "component", type: PictureComponent, selector: "et-picture", inputs: ["sources"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
92
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ContentfulImageComponent, decorators: [{
57
93
  type: Component,
58
94
  args: [{
59
95
  selector: 'et-contentful-image',
60
96
  template: `
61
- <picture *ngIf="data" [ngClass]="pictureClass">
62
- <source srcset="{{ data.url }}?fm=avif" type="image/avif" />
63
- <source srcset="{{ data.url }}?fm=webp" type="image/webp" />
64
- <source srcset="{{ data.url }}?fm=jpg" type="image/jpeg" />
65
- <img
66
- [attr.alt]="data.description ?? undefined"
67
- [width]="data.width ?? undefined"
68
- [height]="data.height ?? undefined"
69
- [priority]="data.priority ?? priority"
70
- [ngClass]="imgClass"
71
- ngSrc="{{ data.url }}"
72
- />
73
- </picture>
97
+ <et-picture
98
+ [imgClass]="pictureData.imgClass"
99
+ [hasPriority]="pictureData.hasPriority"
100
+ [figureClass]="pictureData.figureClass"
101
+ [pictureClass]="pictureData.pictureClass"
102
+ [figcaptionClass]="pictureData.figcaptionClass"
103
+ [defaultSrc]="pictureData.defaultSrc"
104
+ [alt]="pictureData.alt"
105
+ [figcaption]="pictureData.figcaption"
106
+ [width]="pictureData.width"
107
+ [height]="pictureData.height"
108
+ [sizes]="pictureData.sizes"
109
+ [sources]="sources"
110
+ />
74
111
  `,
75
112
  changeDetection: ChangeDetectionStrategy.OnPush,
76
113
  encapsulation: ViewEncapsulation.None,
77
114
  standalone: true,
78
- imports: [NgIf, NgClass, NgOptimizedImage],
115
+ imports: [NgIf, NgClass, NgOptimizedImage, PictureComponent],
116
+ hostDirectives: [
117
+ {
118
+ directive: PictureDataDirective,
119
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
120
+ inputs: ['imgClass', 'hasPriority', 'figureClass', 'pictureClass', 'figcaptionClass'],
121
+ },
122
+ ],
123
+ host: {
124
+ class: 'et-contentful-image',
125
+ },
79
126
  }]
80
127
  }], propDecorators: { data: [{
81
128
  type: Input
82
- }], imgClass: [{
129
+ }], sizes: [{
83
130
  type: Input
84
- }], pictureClass: [{
131
+ }], srcsetSizes: [{
85
132
  type: Input
86
- }], priority: [{
133
+ }], backgroundColor: [{
87
134
  type: Input
88
135
  }] } });
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudGZ1bC1pbWFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbnRlbnRmdWwvc3JjL2xpYi9jb21wb25lbnRzL2ltYWdlL2NvbnRlbnRmdWwtaW1hZ2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUc3RyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUF3QjFFLE1BQU0sT0FBTyx3QkFBd0I7SUF0QnJDO1FBdUJVLGtCQUFhLEdBQUcsTUFBTSxDQUFrQixpQ0FBaUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBcUIvRixVQUFLLEdBQTJCLElBQUksQ0FBQztRQUc3QyxhQUFRLEdBQWdCLElBQUksQ0FBQztRQUc3QixpQkFBWSxHQUFnQixJQUFJLENBQUM7UUFTekIsY0FBUyxHQUFHLEtBQUssQ0FBQztLQU8zQjtJQXpDQyxJQUNJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUNELElBQUksSUFBSSxDQUFDLENBQXFDO1FBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRTtZQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUVsQixPQUFPLENBQUMsSUFBSSxDQUFDLCtCQUErQixFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRWpELE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDNUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1NBQ3ZEO1FBRUQsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDO0lBQ3pCLENBQUM7SUFTRCxJQUNJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLEtBQW1CO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUdELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ3BDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztTQUNoQztJQUNILENBQUM7O3FIQTNDVSx3QkFBd0I7eUdBQXhCLHdCQUF3QixtTEFwQnpCOzs7Ozs7Ozs7Ozs7OztHQWNULDREQUlTLElBQUksNkZBQUUsT0FBTyxvRkFBRSxnQkFBZ0I7MkZBRTlCLHdCQUF3QjtrQkF0QnBDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7OztHQWNUO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLENBQUM7aUJBQzNDOzhCQUtLLElBQUk7c0JBRFAsS0FBSztnQkFzQk4sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJRixRQUFRO3NCQURYLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ0lmLCBOZ09wdGltaXplZEltYWdlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nQ2xhc3NUeXBlIH0gZnJvbSAnQGV0aGxldGUvY29yZSc7XG5pbXBvcnQgeyBDb250ZW50ZnVsQXNzZXQgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBSSUNIX1RFWFRfUkVOREVSRVJfQ09NUE9ORU5UX0RBVEEgfSBmcm9tICcuLi9yaWNoLXRleHQtcmVuZGVyZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdldC1jb250ZW50ZnVsLWltYWdlJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8cGljdHVyZSAqbmdJZj1cImRhdGFcIiBbbmdDbGFzc109XCJwaWN0dXJlQ2xhc3NcIj5cbiAgICAgIDxzb3VyY2Ugc3Jjc2V0PVwie3sgZGF0YS51cmwgfX0/Zm09YXZpZlwiIHR5cGU9XCJpbWFnZS9hdmlmXCIgLz5cbiAgICAgIDxzb3VyY2Ugc3Jjc2V0PVwie3sgZGF0YS51cmwgfX0/Zm09d2VicFwiIHR5cGU9XCJpbWFnZS93ZWJwXCIgLz5cbiAgICAgIDxzb3VyY2Ugc3Jjc2V0PVwie3sgZGF0YS51cmwgfX0/Zm09anBnXCIgdHlwZT1cImltYWdlL2pwZWdcIiAvPlxuICAgICAgPGltZ1xuICAgICAgICBbYXR0ci5hbHRdPVwiZGF0YS5kZXNjcmlwdGlvbiA/PyB1bmRlZmluZWRcIlxuICAgICAgICBbd2lkdGhdPVwiZGF0YS53aWR0aCA/PyB1bmRlZmluZWRcIlxuICAgICAgICBbaGVpZ2h0XT1cImRhdGEuaGVpZ2h0ID8/IHVuZGVmaW5lZFwiXG4gICAgICAgIFtwcmlvcml0eV09XCJkYXRhLnByaW9yaXR5ID8/IHByaW9yaXR5XCJcbiAgICAgICAgW25nQ2xhc3NdPVwiaW1nQ2xhc3NcIlxuICAgICAgICBuZ1NyYz1cInt7IGRhdGEudXJsIH19XCJcbiAgICAgIC8+XG4gICAgPC9waWN0dXJlPlxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nSWYsIE5nQ2xhc3MsIE5nT3B0aW1pemVkSW1hZ2VdLFxufSlcbmV4cG9ydCBjbGFzcyBDb250ZW50ZnVsSW1hZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIF9yaWNoVGV4dERhdGEgPSBpbmplY3Q8Q29udGVudGZ1bEFzc2V0PihSSUNIX1RFWFRfUkVOREVSRVJfQ09NUE9ORU5UX0RBVEEsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgQElucHV0KClcbiAgZ2V0IGRhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGE7XG4gIH1cbiAgc2V0IGRhdGEodjogQ29udGVudGZ1bEFzc2V0IHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2ICYmICF2LmNvbnRlbnRUeXBlKSB7XG4gICAgICB0aGlzLl9kYXRhID0gbnVsbDtcblxuICAgICAgY29uc29sZS53YXJuKCdUaGUgcHJvdmlkZWQgYXNzZXQgaXMgaW52YWxpZCcsIHYpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHYgJiYgIXYuY29udGVudFR5cGUuc3RhcnRzV2l0aCgnaW1hZ2UvJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHByb3ZpZGVkIGFzc2V0IGlzIG5vdCBhbiBpbWFnZScpO1xuICAgIH1cblxuICAgIHRoaXMuX2RhdGEgPSB2ID8/IG51bGw7XG4gIH1cbiAgcHJpdmF0ZSBfZGF0YTogQ29udGVudGZ1bEFzc2V0IHwgbnVsbCA9IG51bGw7XG5cbiAgQElucHV0KClcbiAgaW1nQ2xhc3M6IE5nQ2xhc3NUeXBlID0gbnVsbDtcblxuICBASW5wdXQoKVxuICBwaWN0dXJlQ2xhc3M6IE5nQ2xhc3NUeXBlID0gbnVsbDtcblxuICBASW5wdXQoKVxuICBnZXQgcHJpb3JpdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3ByaW9yaXR5O1xuICB9XG4gIHNldCBwcmlvcml0eSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fcHJpb3JpdHkgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG4gIHByaXZhdGUgX3ByaW9yaXR5ID0gZmFsc2U7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3JpY2hUZXh0RGF0YSAmJiAhdGhpcy5kYXRhKSB7XG4gICAgICB0aGlzLmRhdGEgPSB0aGlzLl9yaWNoVGV4dERhdGE7XG4gICAgfVxuICB9XG59XG4iXX0=
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudGZ1bC1pbWFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbnRlbnRmdWwvc3JjL2xpYi9jb21wb25lbnRzL2ltYWdlL2NvbnRlbnRmdWwtaW1hZ2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBRUwsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxvQkFBb0IsRUFBaUIsTUFBTSxxQkFBcUIsQ0FBQztBQUU1RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUUsT0FBTyxFQUNMLDhCQUE4QixFQUM5QixvQ0FBb0MsR0FDckMsTUFBTSxvQ0FBb0MsQ0FBQzs7O0FBbUM1QyxNQUFNLE9BQU8sd0JBQXdCO0lBakNyQztRQWtDVSxrQkFBYSxHQUFHLE1BQU0sQ0FBb0MsaUNBQWlDLEVBQUU7WUFDbkcsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDLENBQUM7UUFFZ0IsZ0JBQVcsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNyRCxTQUFJLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUErQmxDLFVBQUssR0FBNkMsSUFBSSxDQUFDO1FBVXZELFdBQU0sR0FBYSxFQUFFLENBQUM7UUFVdEIsaUJBQVksR0FBYSxFQUFFLENBQUM7UUFVNUIscUJBQWdCLEdBQWtCLElBQUksQ0FBQztRQUVyQyxZQUFPLEdBQW9CLEVBQUUsQ0FBQztL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LEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFcEgsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMzQixDQUFDOztxSEFqRlUsd0JBQXdCO3lHQUF4Qix3QkFBd0Isd2NBL0J6Qjs7Ozs7Ozs7Ozs7Ozs7O0dBZVQsNERBSTBDLGdCQUFnQjsyRkFZaEQsd0JBQXdCO2tCQWpDcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7OztHQWVUO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUM7b0JBQzVELGNBQWMsRUFBRTt3QkFDZDs0QkFDRSxTQUFTLEVBQUUsb0JBQW9COzRCQUMvQix1RUFBdUU7NEJBQ3ZFLE1BQU0sRUFBRSxDQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsQ0FBQzt5QkFDdEY7cUJBQ0Y7b0JBQ0QsSUFBSSxFQUFFO3dCQUNKLEtBQUssRUFBRSxxQkFBcUI7cUJBQzdCO2lCQUNGOzhCQVVLLElBQUk7c0JBRFAsS0FBSztnQkFnQ0YsS0FBSztzQkFEUixLQUFLO2dCQVdGLFdBQVc7c0JBRGQsS0FBSztnQkFXRixlQUFlO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcywgTmdJZiwgTmdPcHRpbWl6ZWRJbWFnZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQaWN0dXJlQ29tcG9uZW50LCBQaWN0dXJlRGF0YURpcmVjdGl2ZSwgUGljdHVyZVNvdXJjZSB9IGZyb20gJ0BldGhsZXRlL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQ29udGVudGZ1bEFzc2V0LCBDb250ZW50ZnVsSW1hZ2UgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBpc0NvbnRlbnRmdWxJbWFnZSB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IFJJQ0hfVEVYVF9SRU5ERVJFUl9DT01QT05FTlRfREFUQSB9IGZyb20gJy4uL3JpY2gtdGV4dC1yZW5kZXJlcic7XG5pbXBvcnQge1xuICBnZW5lcmF0ZUNvbnRlbnRmdWxJbWFnZVNvdXJjZXMsXG4gIGdlbmVyYXRlRGVmYXVsdENvbnRlbnRmdWxJbWFnZVNvdXJjZSxcbn0gZnJvbSAnLi9jb250ZW50ZnVsLWltYWdlLmNvbXBvbmVudC51dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2V0LWNvbnRlbnRmdWwtaW1hZ2UnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxldC1waWN0dXJlXG4gICAgICBbaW1nQ2xhc3NdPVwicGljdHVyZURhdGEuaW1nQ2xhc3NcIlxuICAgICAgW2hhc1ByaW9yaXR5XT1cInBpY3R1cmVEYXRhLmhhc1ByaW9yaXR5XCJcbiAgICAgIFtmaWd1cmVDbGFzc109XCJwaWN0dXJlRGF0YS5maWd1cmVDbGFzc1wiXG4gICAgICBbcGljdHVyZUNsYXNzXT1cInBpY3R1cmVEYXRhLnBpY3R1cmVDbGFzc1wiXG4gICAgICBbZmlnY2FwdGlvbkNsYXNzXT1cInBpY3R1cmVEYXRhLmZpZ2NhcHRpb25DbGFzc1wiXG4gICAgICBbZGVmYXVsdFNyY109XCJwaWN0dXJlRGF0YS5kZWZhdWx0U3JjXCJcbiAgICAgIFthbHRdPVwicGljdHVyZURhdGEuYWx0XCJcbiAgICAgIFtmaWdjYXB0aW9uXT1cInBpY3R1cmVEYXRhLmZpZ2NhcHRpb25cIlxuICAgICAgW3dpZHRoXT1cInBpY3R1cmVEYXRhLndpZHRoXCJcbiAgICAgIFtoZWlnaHRdPVwicGljdHVyZURhdGEuaGVpZ2h0XCJcbiAgICAgIFtzaXplc109XCJwaWN0dXJlRGF0YS5zaXplc1wiXG4gICAgICBbc291cmNlc109XCJzb3VyY2VzXCJcbiAgICAvPlxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nSWYsIE5nQ2xhc3MsIE5nT3B0aW1pemVkSW1hZ2UsIFBpY3R1cmVDb21wb25lbnRdLFxuICBob3N0RGlyZWN0aXZlczogW1xuICAgIHtcbiAgICAgIGRpcmVjdGl2ZTogUGljdHVyZURhdGFEaXJlY3RpdmUsXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICAgICAgaW5wdXRzOiBbJ2ltZ0NsYXNzJywgJ2hhc1ByaW9yaXR5JywgJ2ZpZ3VyZUNsYXNzJywgJ3BpY3R1cmVDbGFzcycsICdmaWdjYXB0aW9uQ2xhc3MnXSxcbiAgICB9LFxuICBdLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdldC1jb250ZW50ZnVsLWltYWdlJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgQ29udGVudGZ1bEltYWdlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSBfcmljaFRleHREYXRhID0gaW5qZWN0PENvbnRlbnRmdWxBc3NldCB8IENvbnRlbnRmdWxJbWFnZT4oUklDSF9URVhUX1JFTkRFUkVSX0NPTVBPTkVOVF9EQVRBLCB7XG4gICAgb3B0aW9uYWw6IHRydWUsXG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBwaWN0dXJlRGF0YSA9IGluamVjdChQaWN0dXJlRGF0YURpcmVjdGl2ZSk7XG4gIHJlYWRvbmx5IF9jZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBkYXRhKCkge1xuICAgIHJldHVybiB0aGlzLl9kYXRhO1xuICB9XG4gIHNldCBkYXRhKHY6IENvbnRlbnRmdWxBc3NldCB8IENvbnRlbnRmdWxJbWFnZSB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBhc3NldERhdGEgPSBpc0NvbnRlbnRmdWxJbWFnZSh2KSA/IHYuYXNzZXQgOiB2O1xuICAgIGNvbnN0IGltYWdlRGF0YSA9IGlzQ29udGVudGZ1bEltYWdlKHYpID8gdiA6IG51bGw7XG5cbiAgICBpZiAoYXNzZXREYXRhICYmICFhc3NldERhdGEuY29udGVudFR5cGUpIHtcbiAgICAgIHRoaXMuX2RhdGEgPSBudWxsO1xuXG4gICAgICBjb25zb2xlLndhcm4oJ1RoZSBwcm92aWRlZCBhc3NldCBpcyBpbnZhbGlkJywgdik7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoYXNzZXREYXRhICYmICFhc3NldERhdGEuY29udGVudFR5cGUuc3RhcnRzV2l0aCgnaW1hZ2UvJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHByb3ZpZGVkIGFzc2V0IGlzIG5vdCBhbiBpbWFnZScpO1xuICAgIH1cblxuICAgIHRoaXMuX2RhdGEgPSB2ID8/IG51bGw7XG4gICAgdGhpcy5waWN0dXJlRGF0YS5kZWZhdWx0U3JjID0gYXNzZXREYXRhID8gZ2VuZXJhdGVEZWZhdWx0Q29udGVudGZ1bEltYWdlU291cmNlKGFzc2V0RGF0YSkgOiBudWxsO1xuICAgIHRoaXMucGljdHVyZURhdGEuYWx0ID0gaW1hZ2VEYXRhPy5hbHQgPz8gYXNzZXREYXRhPy5kZXNjcmlwdGlvbiA/PyBudWxsO1xuICAgIHRoaXMucGljdHVyZURhdGEud2lkdGggPSBhc3NldERhdGE/LndpZHRoID8/IG51bGw7XG4gICAgdGhpcy5waWN0dXJlRGF0YS5oZWlnaHQgPSBhc3NldERhdGE/LmhlaWdodCA/PyBudWxsO1xuICAgIHRoaXMucGljdHVyZURhdGEuZmlnY2FwdGlvbiA9IGltYWdlRGF0YT8uY2FwdGlvbiA/PyBudWxsO1xuXG4gICAgdGhpcy51cGRhdGVTaXplcygpO1xuICB9XG4gIHByaXZhdGUgX2RhdGE6IENvbnRlbnRmdWxBc3NldCB8IENvbnRlbnRmdWxJbWFnZSB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBzaXplcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3NpemVzO1xuICB9XG4gIHNldCBzaXplcyh2OiBzdHJpbmdbXSkge1xuICAgIHRoaXMuX3NpemVzID0gdjtcbiAgICB0aGlzLnBpY3R1cmVEYXRhLnNpemVzID0gdGhpcy5zaXplcz8uam9pbignLCAnKSA/PyBudWxsO1xuICB9XG4gIHByaXZhdGUgX3NpemVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBzcmNzZXRTaXplcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3NyY3NldFNpemVzO1xuICB9XG4gIHNldCBzcmNzZXRTaXplcyh2OiBzdHJpbmdbXSkge1xuICAgIHRoaXMuX3NyY3NldFNpemVzID0gdjtcbiAgICB0aGlzLnVwZGF0ZVNpemVzKCk7XG4gIH1cbiAgcHJpdmF0ZSBfc3Jjc2V0U2l6ZXM6IHN0cmluZ1tdID0gW107XG5cbiAgQElucHV0KClcbiAgZ2V0IGJhY2tncm91bmRDb2xvcigpIHtcbiAgICByZXR1cm4gdGhpcy5fYmFja2dyb3VuZENvbG9yO1xuICB9XG4gIHNldCBiYWNrZ3JvdW5kQ29sb3Iodjogc3RyaW5nIHwgbnVsbCkge1xuICAgIHRoaXMuX2JhY2tncm91bmRDb2xvciA9IHY7XG4gICAgdGhpcy51cGRhdGVTaXplcygpO1xuICB9XG4gIHByaXZhdGUgX2JhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJvdGVjdGVkIHNvdXJjZXM6IFBpY3R1cmVTb3VyY2VbXSA9IFtdO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9yaWNoVGV4dERhdGEgJiYgIXRoaXMuZGF0YSkge1xuICAgICAgdGhpcy5kYXRhID0gdGhpcy5fcmljaFRleHREYXRhO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU2l6ZXMoKSB7XG4gICAgdGhpcy5zb3VyY2VzID0gdGhpcy5fZGF0YSA/IGdlbmVyYXRlQ29udGVudGZ1bEltYWdlU291cmNlcyh0aGlzLl9kYXRhLCB0aGlzLnNyY3NldFNpemVzLCB0aGlzLmJhY2tncm91bmRDb2xvcikgOiBbXTtcblxuICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,86 @@
1
+ import { isContentfulImage } from '../../utils';
2
+ export const generateDefaultContentfulImageSource = (data) => {
3
+ const { url, contentType } = data;
4
+ return {
5
+ type: contentType,
6
+ srcset: url,
7
+ };
8
+ };
9
+ /**
10
+ * Parses source set sizes into an object containing with and height. Eg.
11
+ * - `"400"` - 400px width
12
+ * - `"400x300"` - 400px width and 300px height
13
+ * - `"400w"` - 400px width
14
+ * - `"400h"` - 400px height
15
+ * - `"400wx300h"` - 400px width and 300px height
16
+ **/
17
+ export const parseContentfulImageSize = (size) => {
18
+ let width = null;
19
+ let height = null;
20
+ if (size.includes('x')) {
21
+ const [w, h] = size.split('x');
22
+ width = w;
23
+ height = h;
24
+ }
25
+ else if (size.includes('h')) {
26
+ height = size;
27
+ }
28
+ else {
29
+ width = size;
30
+ }
31
+ return {
32
+ width: width ? parseInt(width, 10) : null,
33
+ height: height ? parseInt(height, 10) : null,
34
+ };
35
+ };
36
+ export const generateContentfulImageSources = (data, srcsetSizes, backgroundColor) => {
37
+ const assetData = isContentfulImage(data) ? data.asset : data;
38
+ const imageData = isContentfulImage(data) ? data : null;
39
+ if (!assetData) {
40
+ return [];
41
+ }
42
+ const sources = [];
43
+ const SOURCE_TYPES = ['image/avif', 'image/webp', 'image/png', 'image/jpg'];
44
+ for (const type of SOURCE_TYPES) {
45
+ const baseUrl = assetData.url;
46
+ const sourceSets = [];
47
+ const queryParams = [];
48
+ // Set the format (e.g. 'fm=webp')
49
+ queryParams.push(`fm=${type.split('/')[1]}`);
50
+ if (backgroundColor) {
51
+ queryParams.push(`bg=rgb:${backgroundColor}`);
52
+ }
53
+ if (imageData) {
54
+ if (imageData.quality) {
55
+ queryParams.push(`q=${imageData.quality}`);
56
+ }
57
+ if (imageData.focusArea) {
58
+ queryParams.push(`f=${imageData.focusArea}`);
59
+ }
60
+ if (imageData.resizeBehavior) {
61
+ queryParams.push(`fit=${imageData.resizeBehavior}`);
62
+ }
63
+ }
64
+ if (srcsetSizes?.length) {
65
+ const urlWithParams = `${baseUrl}?${queryParams.join('&')}`;
66
+ for (const size of srcsetSizes) {
67
+ const { width, height } = parseContentfulImageSize(size);
68
+ if (width && height) {
69
+ sourceSets.push(`${urlWithParams}&w=${width}&h=${height} ${width}w`);
70
+ }
71
+ else if (width) {
72
+ sourceSets.push(`${urlWithParams}&w=${width} ${width}w`);
73
+ }
74
+ else if (height) {
75
+ sourceSets.push(`${urlWithParams}&h=${height} ${height}h`);
76
+ }
77
+ }
78
+ }
79
+ sources.push({
80
+ type,
81
+ srcset: sourceSets.length ? sourceSets.join(', ') : `${baseUrl}?${queryParams.join('&')}`,
82
+ });
83
+ }
84
+ return sources;
85
+ };
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudGZ1bC1pbWFnZS5jb21wb25lbnQudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbnRlbnRmdWwvc3JjL2xpYi9jb21wb25lbnRzL2ltYWdlL2NvbnRlbnRmdWwtaW1hZ2UuY29tcG9uZW50LnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVoRCxNQUFNLENBQUMsTUFBTSxvQ0FBb0MsR0FBRyxDQUFDLElBQXFCLEVBQWlCLEVBQUU7SUFDM0YsTUFBTSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFFbEMsT0FBTztRQUNMLElBQUksRUFBRSxXQUFXO1FBQ2pCLE1BQU0sRUFBRSxHQUFHO0tBQ1osQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGOzs7Ozs7O0lBT0k7QUFDSixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLElBQVksRUFBbUQsRUFBRTtJQUN4RyxJQUFJLEtBQUssR0FBOEIsSUFBSSxDQUFDO0lBQzVDLElBQUksTUFBTSxHQUE4QixJQUFJLENBQUM7SUFFN0MsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3RCLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUvQixLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsTUFBTSxHQUFHLENBQUMsQ0FBQztLQUNaO1NBQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQzdCLE1BQU0sR0FBRyxJQUFJLENBQUM7S0FDZjtTQUFNO1FBQ0wsS0FBSyxHQUFHLElBQUksQ0FBQztLQUNkO0lBRUQsT0FBTztRQUNMLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFD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SixNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtTQUMxRixDQUFDLENBQUM7S0FDSjtJQUVELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpY3R1cmVTb3VyY2UgfSBmcm9tICdAZXRobGV0ZS9jb21wb25lbnRzJztcbmltcG9ydCB7IENvbnRlbnRmdWxBc3NldCwgQ29udGVudGZ1bEltYWdlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgaXNDb250ZW50ZnVsSW1hZ2UgfSBmcm9tICcuLi8uLi91dGlscyc7XG5cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZURlZmF1bHRDb250ZW50ZnVsSW1hZ2VTb3VyY2UgPSAoZGF0YTogQ29udGVudGZ1bEFzc2V0KTogUGljdHVyZVNvdXJjZSA9PiB7XG4gIGNvbnN0IHsgdXJsLCBjb250ZW50VHlwZSB9ID0gZGF0YTtcblxuICByZXR1cm4ge1xuICAgIHR5cGU6IGNvbnRlbnRUeXBlLFxuICAgIHNyY3NldDogdXJsLFxuICB9O1xufTtcblxuLyoqXG4gKiBQYXJzZXMgc291cmNlIHNldCBzaXplcyBpbnRvIGFuIG9iamVjdCBjb250YWluaW5nIHdpdGggYW5kIGhlaWdodC4gRWcuXG4gKiAtIGBcIjQwMFwiYCAtIDQwMHB4IHdpZHRoXG4gKiAtIGBcIjQwMHgzMDBcImAgLSA0MDBweCB3aWR0aCBhbmQgMzAwcHggaGVpZ2h0XG4gKiAtIGBcIjQwMHdcImAgLSA0MDBweCB3aWR0aFxuICogLSBgXCI0MDBoXCJgIC0gNDAwcHggaGVpZ2h0XG4gKiAtIGBcIjQwMHd4MzAwaFwiYCAtIDQwMHB4IHdpZHRoIGFuZCAzMDBweCBoZWlnaHRcbiAqKi9cbmV4cG9ydCBjb25zdCBwYXJzZUNvbnRlbnRmdWxJbWFnZVNpemUgPSAoc2l6ZTogc3RyaW5nKTogeyB3aWR0aDogbnVtYmVyIHwgbnVsbDsgaGVpZ2h0OiBudW1iZXIgfCBudWxsIH0gPT4ge1xuICBsZXQgd2lkdGg6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuICBsZXQgaGVpZ2h0OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbDtcblxuICBpZiAoc2l6ZS5pbmNsdWRlcygneCcpKSB7XG4gICAgY29uc3QgW3csIGhdID0gc2l6ZS5zcGxpdCgneCcpO1xuXG4gICAgd2lkdGggPSB3O1xuICAgIGhlaWdodCA9IGg7XG4gIH0gZWxzZSBpZiAoc2l6ZS5pbmNsdWRlcygnaCcpKSB7XG4gICAgaGVpZ2h0ID0gc2l6ZTtcbiAgfSBlbHNlIHtcbiAgICB3aWR0aCA9IHNpemU7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHdpZHRoOiB3aWR0aCA/IHBhcnNlSW50KHdpZHRoLCAxMCkgOiBudWxsLFxuICAgIGhlaWdodDogaGVpZ2h0ID8gcGFyc2VJbnQoaGVpZ2h0LCAxMCkgOiBudWxsLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlQ29udGVudGZ1bEltYWdlU291cmNlcyA9IChcbiAgZGF0YTogQ29udGVudGZ1bEFzc2V0IHwgQ29udGVudGZ1bEltYWdlLFxuICBzcmNzZXRTaXplczogc3RyaW5nW10sXG4gIGJhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgbnVsbCxcbik6IFBpY3R1cmVTb3VyY2VbXSA9PiB7XG4gIGNvbnN0IGFzc2V0RGF0YSA9IGlzQ29udGVudGZ1bEltYWdlKGRhdGEpID8gZGF0YS5hc3NldCA6IGRhdGE7XG4gIGNvbnN0IGltYWdlRGF0YSA9IGlzQ29udGVudGZ1bEltYWdlKGRhdGEpID8gZGF0YSA6IG51bGw7XG5cbiAgaWYgKCFhc3NldERhdGEpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCBzb3VyY2VzOiBQaWN0dXJlU291cmNlW10gPSBbXTtcblxuICBjb25zdCBTT1VSQ0VfVFlQRVMgPSBbJ2ltYWdlL2F2aWYnLCAnaW1hZ2Uvd2VicCcsICdpbWFnZS9wbmcnLCAnaW1hZ2UvanBnJ107XG5cbiAgZm9yIChjb25zdCB0eXBlIG9mIFNPVVJDRV9UWVBFUykge1xuICAgIGNvbnN0IGJhc2VVcmwgPSBhc3NldERhdGEudXJsO1xuICAgIGNvbnN0IHNvdXJjZVNldHM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgcXVlcnlQYXJhbXM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvLyBTZXQgdGhlIGZvcm1hdCAoZS5nLiAnZm09d2VicCcpXG4gICAgcXVlcnlQYXJhbXMucHVzaChgZm09JHt0eXBlLnNwbGl0KCcvJylbMV19YCk7XG5cbiAgICBpZiAoYmFja2dyb3VuZENvbG9yKSB7XG4gICAgICBxdWVyeVBhcmFtcy5wdXNoKGBiZz1yZ2I6JHtiYWNrZ3JvdW5kQ29sb3J9YCk7XG4gICAgfVxuXG4gICAgaWYgKGltYWdlRGF0YSkge1xuICAgICAgaWYgKGltYWdlRGF0YS5xdWFsaXR5KSB7XG4gICAgICAgIHF1ZXJ5UGFyYW1zLnB1c2goYHE9JHtpbWFnZURhdGEucXVhbGl0eX1gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGltYWdlRGF0YS5mb2N1c0FyZWEpIHtcbiAgICAgICAgcXVlcnlQYXJhbXMucHVzaChgZj0ke2ltYWdlRGF0YS5mb2N1c0FyZWF9YCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpbWFnZURhdGEucmVzaXplQmVoYXZpb3IpIHtcbiAgICAgICAgcXVlcnlQYXJhbXMucHVzaChgZml0PSR7aW1hZ2VEYXRhLnJlc2l6ZUJlaGF2aW9yfWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzcmNzZXRTaXplcz8ubGVuZ3RoKSB7XG4gICAgICBjb25zdCB1cmxXaXRoUGFyYW1zID0gYCR7YmFzZVVybH0/JHtxdWVyeVBhcmFtcy5qb2luKCcmJyl9YDtcblxuICAgICAgZm9yIChjb25zdCBzaXplIG9mIHNyY3NldFNpemVzKSB7XG4gICAgICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gcGFyc2VDb250ZW50ZnVsSW1hZ2VTaXplKHNpemUpO1xuXG4gICAgICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpIHtcbiAgICAgICAgICBzb3VyY2VTZXRzLnB1c2goYCR7dXJsV2l0aFBhcmFtc30mdz0ke3dpZHRofSZoPSR7aGVpZ2h0fSAke3dpZHRofXdgKTtcbiAgICAgICAgfSBlbHNlIGlmICh3aWR0aCkge1xuICAgICAgICAgIHNvdXJjZVNldHMucHVzaChgJHt1cmxXaXRoUGFyYW1zfSZ3PSR7d2lkdGh9ICR7d2lkdGh9d2ApO1xuICAgICAgICB9IGVsc2UgaWYgKGhlaWdodCkge1xuICAgICAgICAgIHNvdXJjZVNldHMucHVzaChgJHt1cmxXaXRoUGFyYW1zfSZoPSR7aGVpZ2h0fSAke2hlaWdodH1oYCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBzb3VyY2VzLnB1c2goe1xuICAgICAgdHlwZSxcbiAgICAgIHNyY3NldDogc291cmNlU2V0cy5sZW5ndGggPyBzb3VyY2VTZXRzLmpvaW4oJywgJykgOiBgJHtiYXNlVXJsfT8ke3F1ZXJ5UGFyYW1zLmpvaW4oJyYnKX1gLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHNvdXJjZXM7XG59O1xuIl19
@@ -0,0 +1,2 @@
1
+ export * from './public-api';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbnRlbnRmdWwvc3JjL2xpYi9jb21wb25lbnRzL2ltYWdlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -1,2 +1,3 @@
1
1
  export * from './contentful-image.component';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29udGVudGZ1bC9zcmMvbGliL2NvbXBvbmVudHMvaW1hZ2UvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDhCQUE4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb250ZW50ZnVsLWltYWdlLmNvbXBvbmVudCc7XG4iXX0=
2
+ export * from './contentful-image.component.utils';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29udGVudGZ1bC9zcmMvbGliL2NvbXBvbmVudHMvaW1hZ2UvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsb0NBQW9DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvbnRlbnRmdWwtaW1hZ2UuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29udGVudGZ1bC1pbWFnZS5jb21wb25lbnQudXRpbHMnO1xuIl19
@@ -1,6 +1,7 @@
1
1
  import { ComponentPortal, DomPortalOutlet } from '@angular/cdk/portal';
2
2
  import { DOCUMENT } from '@angular/common';
3
- import { ApplicationRef, ChangeDetectionStrategy, Component, ComponentFactoryResolver, ElementRef, inject, Injector, Input, Renderer2, ViewContainerRef, ViewEncapsulation, } from '@angular/core';
3
+ import { ApplicationRef, ChangeDetectionStrategy, Component, ComponentFactoryResolver, ElementRef, inject, Injector, Input, Renderer2, ViewEncapsulation, } from '@angular/core';
4
+ import { ContentfulImageComponent } from '..';
4
5
  import { CONTENTFUL_CONFIG } from '../../constants/contentful.constants';
5
6
  import { createContentfulConfig } from '../../utils/contentful-config';
6
7
  import { RICH_TEXT_RENDERER_COMPONENT_DATA } from './rich-text-renderer.constants';
@@ -11,7 +12,6 @@ export class ContentfulRichTextRendererComponent {
11
12
  this._richText = null;
12
13
  this._renderer = inject(Renderer2);
13
14
  this._elementRef = inject(ElementRef);
14
- this._viewContainerRef = inject(ViewContainerRef);
15
15
  this._componentFactoryResolver = inject(ComponentFactoryResolver);
16
16
  this._document = inject(DOCUMENT);
17
17
  this._appRef = inject(ApplicationRef);
@@ -23,15 +23,18 @@ export class ContentfulRichTextRendererComponent {
23
23
  }
24
24
  set richText(v) {
25
25
  this._richText = v ?? null;
26
+ this.resetAndRender();
27
+ }
28
+ resetAndRender() {
26
29
  // clear childNodes to prevent appending new richtext elements to existing one
27
30
  const childElements = this._elementRef.nativeElement.childNodes;
28
31
  for (const child of childElements) {
29
32
  this._renderer.removeChild(this._elementRef.nativeElement, child);
30
33
  }
31
- if (!v) {
34
+ if (!this._richText) {
32
35
  return;
33
36
  }
34
- const commands = createRenderCommandsFromContentfulRichText({ data: v, config: this._config });
37
+ const commands = createRenderCommandsFromContentfulRichText({ data: this._richText, config: this._config });
35
38
  this._render(commands);
36
39
  }
37
40
  _render(commands) {
@@ -75,6 +78,11 @@ export class ContentfulRichTextRendererComponent {
75
78
  const portal = new DomPortalOutlet(parent, this._componentFactoryResolver, this._appRef, injector, this._document);
76
79
  const comp = new ComponentPortal(command.payload);
77
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
+ }
78
86
  element = ref.location.nativeElement;
79
87
  }
80
88
  }
@@ -84,9 +92,9 @@ export class ContentfulRichTextRendererComponent {
84
92
  }
85
93
  }
86
94
  }
87
- ContentfulRichTextRendererComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ContentfulRichTextRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
88
- ContentfulRichTextRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", 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 });
89
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ContentfulRichTextRendererComponent, decorators: [{
95
+ ContentfulRichTextRendererComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ContentfulRichTextRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
96
+ ContentfulRichTextRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", 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 });
97
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ContentfulRichTextRendererComponent, decorators: [{
90
98
  type: Component,
91
99
  args: [{
92
100
  selector: 'et-contentful-rich-text-renderer',
@@ -101,4 +109,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
101
109
  }], propDecorators: { richText: [{
102
110
  type: Input
103
111
  }] } });
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmljaC10ZXh0LXJlbmRlcmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29udGVudGZ1bC9zcmMvbGliL2NvbXBvbmVudHMvcmljaC10ZXh0LXJlbmRlcmVyL3JpY2gtdGV4dC1yZW5kZXJlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUNMLGNBQWMsRUFDZCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULHdCQUF3QixFQUN4QixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBQ0wsU0FBUyxFQUNULGdCQUFnQixFQUNoQixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFekUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFbkYsT0FBTyxFQUFFLDBDQUEwQyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBWXZGLE1BQU0sT0FBTyxtQ0FBbUM7SUFWaEQ7UUFnQ1UsY0FBUyxHQUE0QixJQUFJLENBQUM7UUFFMUMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqQyxzQkFBaUIsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM3Qyw4QkFBeUIsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUM3RCxjQUFTLEdBQUcsTUFBTSxDQUFXLFFB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LCBEb21Qb3J0YWxPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uUmVmLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIEVsZW1lbnRSZWYsXG4gIGluamVjdCxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBSZW5kZXJlcjIsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENPTlRFTlRGVUxfQ09ORklHIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2NvbnRlbnRmdWwuY29uc3RhbnRzJztcbmltcG9ydCB7IFJpY2hUZXh0UmVzcG9uc2UgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBjcmVhdGVDb250ZW50ZnVsQ29uZmlnIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29udGVudGZ1bC1jb25maWcnO1xuaW1wb3J0IHsgUklDSF9URVhUX1JFTkRFUkVSX0NPTVBPTkVOVF9EQVRBIH0gZnJvbSAnLi9yaWNoLXRleHQtcmVuZGVyZXIuY29uc3RhbnRzJztcbmltcG9ydCB7IFJpY2hUZXh0UmVuZGVyQ29tbWFuZCB9IGZyb20gJy4vcmljaC10ZXh0LXJlbmRlcmVyLnR5cGVzJztcbmltcG9ydCB7IGNyZWF0ZVJlbmRlckNvbW1hbmRzRnJvbUNvbnRlbnRmdWxSaWNoVGV4dCB9IGZyb20gJy4vcmljaC10ZXh0LXJlbmRlcmVyLnV0aWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdldC1jb250ZW50ZnVsLXJpY2gtdGV4dC1yZW5kZXJlcicsXG4gIHRlbXBsYXRlOiBgYCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2V0LWNvbnRlbnRmdWwtcmljaC10ZXh0LXJlbmRlcmVyJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgQ29udGVudGZ1bFJpY2hUZXh0UmVuZGVyZXJDb21wb25lbnQge1xuICBASW5wdXQoKVxuICBnZXQgcmljaFRleHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JpY2hUZXh0O1xuICB9XG4gIHNldCByaWNoVGV4dCh2OiBSaWNoVGV4dFJlc3BvbnNlIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3JpY2hUZXh0ID0gdiA/PyBudWxsO1xuXG4gICAgLy8gY2xlYXIgY2hpbGROb2RlcyB0byBwcmV2ZW50IGFwcGVuZGluZyBuZXcgcmljaHRleHQgZWxlbWVudHMgdG8gZXhpc3Rpbmcgb25lXG4gICAgY29uc3QgY2hpbGRFbGVtZW50cyA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jaGlsZE5vZGVzO1xuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRFbGVtZW50cykge1xuICAgICAgdGhpcy5fcmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBjaGlsZCk7XG4gICAgfVxuXG4gICAgaWYgKCF2KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29tbWFuZHMgPSBjcmVhdGVSZW5kZXJDb21tYW5kc0Zyb21Db250ZW50ZnVsUmljaFRleHQoeyBkYXRhOiB2LCBjb25maWc6IHRoaXMuX2NvbmZpZyB9KTtcblxuICAgIHRoaXMuX3JlbmRlcihjb21tYW5kcyk7XG4gIH1cbiAgcHJpdmF0ZSBfcmljaFRleHQ6IFJpY2hUZXh0UmVzcG9uc2UgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9yZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuICBwcml2YXRlIF9lbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIF92aWV3Q29udGFpbmVyUmVmID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xuICBwcml2YXRlIF9jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIgPSBpbmplY3QoQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyKTtcbiAgcHJpdmF0ZSBfZG9jdW1lbnQgPSBpbmplY3Q8RG9jdW1lbnQ+KERPQ1VNRU5UKTtcbiAgcHJpdmF0ZSBfYXBwUmVmID0gaW5qZWN0KEFwcGxpY2F0aW9uUmVmKTtcbiAgcHJpdmF0ZSBfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBwcml2YXRlIF9jb25maWcgPSBpbmplY3QoQ09OVEVOVEZVTF9DT05GSUcsIHsgb3B0aW9uYWw6IHRydWUgfSkgPz8gY3JlYXRlQ29udGVudGZ1bENvbmZpZygpO1xuXG4gIHByaXZhdGUgX3JlbmRlcihjb21tYW5kczogUmljaFRleHRSZW5kZXJDb21tYW5kW10pIHtcbiAgICAvLyBjcmVhdGUgYSBkb2N1bWVudCBmcmFnbWVudCB0byBob2xkIHRoZSBlbGVtZW50cyB3aGlsZSB3ZSBjcmVhdGUgdGhlbVxuICAgIGNvbnN0IGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuXG4gICAgY29uc3QgaG9zdENvbW1hbmQ6IFJpY2hUZXh0UmVuZGVyQ29tbWFuZCA9IHtcbiAgICAgIHBheWxvYWQ6ICdkb2N1bWVudCcsXG4gICAgICBjaGlsZHJlbjogY29tbWFuZHMsXG4gICAgfTtcblxuICAgIC8vIGxvb3Agb3ZlciB0aGUgY29tbWFuZHNcbiAgICB0aGlzLl9leGVjdXRlQ29tbWFuZCh7IGNvbW1hbmQ6IGhvc3RDb21tYW5kLCBwYXJlbnQ6IGZyYWdtZW50IH0pO1xuXG4gICAgLy8gYXBwZW5kIHRoZSBmcmFnbWVudCB0byB0aGUgaG9zdCBlbGVtZW50XG4gICAgdGhpcy5fcmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBmcmFnbWVudCk7XG4gIH1cblxuICBwcml2YXRlIF9leGVjdXRlQ29tbWFuZChkYXRhOiB7IGNvbW1hbmQ6IFJpY2hUZXh0UmVuZGVyQ29tbWFuZDsgcGFyZW50OiBFbGVtZW50IHwgRG9jdW1lbnRGcmFnbWVudCB9KSB7XG4gICAgY29uc3QgeyBjb21tYW5kLCBwYXJlbnQgfSA9IGRhdGE7XG5cbiAgICBsZXQgZWxlbWVudDogRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAgIGlmIChjb21tYW5kLnBheWxvYWQgIT09ICdkb2N1bWVudCcpIHtcbiAgICAgIGlmICh0eXBlb2YgY29tbWFuZC5wYXlsb2FkID09PSAnc3RyaW5nJykge1xuICAgICAgICBlbGVtZW50ID0gdGhpcy5fcmVuZGVyZXIuY3JlYXRlRWxlbWVudChjb21tYW5kLnBheWxvYWQpO1xuXG4gICAgICAgIGlmIChjb21tYW5kLmRhdGEpIHtcbiAgICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eShlbGVtZW50LCAnaW5uZXJUZXh0JywgY29tbWFuZC5kYXRhKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb21tYW5kLmF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IFtuYW1lLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoY29tbWFuZC5hdHRyaWJ1dGVzKSkge1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0QXR0cmlidXRlKGVsZW1lbnQsIG5hbWUsIHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuYXBwZW5kQ2hpbGQocGFyZW50LCBlbGVtZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcHJvdmlkZTogUklDSF9URVhUX1JFTkRFUkVSX0NPTVBPTkVOVF9EQVRBLFxuICAgICAgICAgICAgICB1c2VWYWx1ZTogY29tbWFuZC5kYXRhLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHBhcmVudDogdGhpcy5faW5qZWN0b3IsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHBvcnRhbCA9IG5ldyBEb21Qb3J0YWxPdXRsZXQoXG4gICAgICAgICAgcGFyZW50IGFzIEVsZW1lbnQsXG4gICAgICAgICAgdGhpcy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgICAgICAgIHRoaXMuX2FwcFJlZixcbiAgICAgICAgICBpbmplY3RvcixcbiAgICAgICAgICB0aGlzLl9kb2N1bWVudCxcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBjb21wID0gbmV3IENvbXBvbmVudFBvcnRhbChjb21tYW5kLnBheWxvYWQpO1xuICAgICAgICBjb25zdCByZWYgPSBjb21wLmF0dGFjaChwb3J0YWwpO1xuICAgICAgICBlbGVtZW50ID0gcmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gbG9vcCBvdmVyIHRoZSBjb21tYW5kc1xuICAgIGZvciAoY29uc3QgY2hpbGRDb21tYW5kIG9mIGNvbW1hbmQuY2hpbGRyZW4pIHtcbiAgICAgIHRoaXMuX2V4ZWN1dGVDb21tYW5kKHsgY29tbWFuZDogY2hpbGRDb21tYW5kLCBwYXJlbnQ6IGVsZW1lbnQgPz8gcGFyZW50IH0pO1xuICAgIH1cbiAgfVxufVxuIl19
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmljaC10ZXh0LXJlbmRlcmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29udGVudGZ1bC9zcmMvbGliL2NvbXBvbmVudHMvcmljaC10ZXh0LXJlbmRlcmVyL3JpY2gtdGV4dC1yZW5kZXJlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUNMLGNBQWMsRUFDZCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULHdCQUF3QixFQUN4QixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBQ0wsU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDOUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFekUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFbkYsT0FBTyxFQUFFLDBDQUEwQyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBWXZGLE1BQU0sT0FBTyxtQ0FBbUM7SUFWaEQ7UUFvQlUsY0FBUyxHQUE0QixJQUFJLENBQUM7UUFFMUMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqQyw4QkFBeUIsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUM3RCxjQUFTLEdBQUcsTUFBTSxDQUFXLFFBQVEsQ0FBQyxDQUFDO1FB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NUU7SUFDSCxDQUFDOztnSUExR1UsbUNBQW1DO29IQUFuQyxtQ0FBbUMsNExBUnBDLEVBQUU7MkZBUUQsbUNBQW1DO2tCQVYvQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQ0FBa0M7b0JBQzVDLFFBQVEsRUFBRSxFQUFFO29CQUNaLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRTt3QkFDSixLQUFLLEVBQUUsa0NBQWtDO3FCQUMxQztpQkFDRjs4QkFHSyxRQUFRO3NCQURYLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRQb3J0YWwsIERvbVBvcnRhbE91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25SZWYsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgRWxlbWVudFJlZixcbiAgaW5qZWN0LFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIFJlbmRlcmVyMixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udGVudGZ1bEltYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4nO1xuaW1wb3J0IHsgQ09OVEVOVEZVTF9DT05GSUcgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvY29udGVudGZ1bC5jb25zdGFudHMnO1xuaW1wb3J0IHsgUmljaFRleHRSZXNwb25zZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IGNyZWF0ZUNvbnRlbnRmdWxDb25maWcgfSBmcm9tICcuLi8uLi91dGlscy9jb250ZW50ZnVsLWNvbmZpZyc7XG5pbXBvcnQgeyBSSUNIX1RFWFRfUkVOREVSRVJfQ09NUE9ORU5UX0RBVEEgfSBmcm9tICcuL3JpY2gtdGV4dC1yZW5kZXJlci5jb25zdGFudHMnO1xuaW1wb3J0IHsgUmljaFRleHRSZW5kZXJDb21tYW5kIH0gZnJvbSAnLi9yaWNoLXRleHQtcmVuZGVyZXIudHlwZXMnO1xuaW1wb3J0IHsgY3JlYXRlUmVuZGVyQ29tbWFuZHNGcm9tQ29udGVudGZ1bFJpY2hUZXh0IH0gZnJvbSAnLi9yaWNoLXRleHQtcmVuZGVyZXIudXRpbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2V0LWNvbnRlbnRmdWwtcmljaC10ZXh0LXJlbmRlcmVyJyxcbiAgdGVtcGxhdGU6IGBgLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnZXQtY29udGVudGZ1bC1yaWNoLXRleHQtcmVuZGVyZXInLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBDb250ZW50ZnVsUmljaFRleHRSZW5kZXJlckNvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIGdldCByaWNoVGV4dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmljaFRleHQ7XG4gIH1cbiAgc2V0IHJpY2hUZXh0KHY6IFJpY2hUZXh0UmVzcG9uc2UgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fcmljaFRleHQgPSB2ID8/IG51bGw7XG5cbiAgICB0aGlzLnJlc2V0QW5kUmVuZGVyKCk7XG4gIH1cbiAgcHJpdmF0ZSBfcmljaFRleHQ6IFJpY2hUZXh0UmVzcG9uc2UgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9yZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuICBwcml2YXRlIF9lbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIF9jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIgPSBpbmplY3QoQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyKTtcbiAgcHJpdmF0ZSBfZG9jdW1lbnQgPSBpbmplY3Q8RG9jdW1lbnQ+KERPQ1VNRU5UKTtcbiAgcHJpdmF0ZSBfYXBwUmVmID0gaW5qZWN0KEFwcGxpY2F0aW9uUmVmKTtcbiAgcHJpdmF0ZSBfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBwcml2YXRlIF9jb25maWcgPSBpbmplY3QoQ09OVEVOVEZVTF9DT05GSUcsIHsgb3B0aW9uYWw6IHRydWUgfSkgPz8gY3JlYXRlQ29udGVudGZ1bENvbmZpZygpO1xuXG4gIHJlc2V0QW5kUmVuZGVyKCkge1xuICAgIC8vIGNsZWFyIGNoaWxkTm9kZXMgdG8gcHJldmVudCBhcHBlbmRpbmcgbmV3IHJpY2h0ZXh0IGVsZW1lbnRzIHRvIGV4aXN0aW5nIG9uZVxuICAgIGNvbnN0IGNoaWxkRWxlbWVudHMgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2hpbGROb2RlcztcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkRWxlbWVudHMpIHtcbiAgICAgIHRoaXMuX3JlbmRlcmVyLnJlbW92ZUNoaWxkKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgY2hpbGQpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fcmljaFRleHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb21tYW5kcyA9IGNyZWF0ZVJlbmRlckNvbW1hbmRzRnJvbUNvbnRlbnRmdWxSaWNoVGV4dCh7IGRhdGE6IHRoaXMuX3JpY2hUZXh0LCBjb25maWc6IHRoaXMuX2NvbmZpZyB9KTtcblxuICAgIHRoaXMuX3JlbmRlcihjb21tYW5kcyk7XG4gIH1cblxuICBwcml2YXRlIF9yZW5kZXIoY29tbWFuZHM6IFJpY2hUZXh0UmVuZGVyQ29tbWFuZFtdKSB7XG4gICAgLy8gY3JlYXRlIGEgZG9jdW1lbnQgZnJhZ21lbnQgdG8gaG9sZCB0aGUgZWxlbWVudHMgd2hpbGUgd2UgY3JlYXRlIHRoZW1cbiAgICBjb25zdCBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcblxuICAgIGNvbnN0IGhvc3RDb21tYW5kOiBSaWNoVGV4dFJlbmRlckNvbW1hbmQgPSB7XG4gICAgICBwYXlsb2FkOiAnZG9jdW1lbnQnLFxuICAgICAgY2hpbGRyZW46IGNvbW1hbmRzLFxuICAgIH07XG5cbiAgICAvLyBsb29wIG92ZXIgdGhlIGNvbW1hbmRzXG4gICAgdGhpcy5fZXhlY3V0ZUNvbW1hbmQoeyBjb21tYW5kOiBob3N0Q29tbWFuZCwgcGFyZW50OiBmcmFnbWVudCB9KTtcblxuICAgIC8vIGFwcGVuZCB0aGUgZnJhZ21lbnQgdG8gdGhlIGhvc3QgZWxlbWVudFxuICAgIHRoaXMuX3JlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgZnJhZ21lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZXhlY3V0ZUNvbW1hbmQoZGF0YTogeyBjb21tYW5kOiBSaWNoVGV4dFJlbmRlckNvbW1hbmQ7IHBhcmVudDogRWxlbWVudCB8IERvY3VtZW50RnJhZ21lbnQgfSkge1xuICAgIGNvbnN0IHsgY29tbWFuZCwgcGFyZW50IH0gPSBkYXRhO1xuXG4gICAgbGV0IGVsZW1lbnQ6IEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgICBpZiAoY29tbWFuZC5wYXlsb2FkICE9PSAnZG9jdW1lbnQnKSB7XG4gICAgICBpZiAodHlwZW9mIGNvbW1hbmQucGF5bG9hZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgZWxlbWVudCA9IHRoaXMuX3JlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoY29tbWFuZC5wYXlsb2FkKTtcblxuICAgICAgICBpZiAoY29tbWFuZC5kYXRhKSB7XG4gICAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkoZWxlbWVudCwgJ2lubmVyVGV4dCcsIGNvbW1hbmQuZGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29tbWFuZC5hdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBbbmFtZSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGNvbW1hbmQuYXR0cmlidXRlcykpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldEF0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCB2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLmFwcGVuZENoaWxkKHBhcmVudCwgZWxlbWVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBpbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHByb3ZpZGU6IFJJQ0hfVEVYVF9SRU5ERVJFUl9DT01QT05FTlRfREFUQSxcbiAgICAgICAgICAgICAgdXNlVmFsdWU6IGNvbW1hbmQuZGF0YSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBwYXJlbnQ6IHRoaXMuX2luamVjdG9yLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBwb3J0YWwgPSBuZXcgRG9tUG9ydGFsT3V0bGV0KFxuICAgICAgICAgIHBhcmVudCBhcyBFbGVtZW50LFxuICAgICAgICAgIHRoaXMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICAgICAgICB0aGlzLl9hcHBSZWYsXG4gICAgICAgICAgaW5qZWN0b3IsXG4gICAgICAgICAgdGhpcy5fZG9jdW1lbnQsXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgY29tcCA9IG5ldyBDb21wb25lbnRQb3J0YWwoY29tbWFuZC5wYXlsb2FkKTtcbiAgICAgICAgY29uc3QgcmVmID0gY29tcC5hdHRhY2gocG9ydGFsKTtcblxuICAgICAgICBpZiAocmVmLmluc3RhbmNlIGluc3RhbmNlb2YgQ29udGVudGZ1bEltYWdlQ29tcG9uZW50KSB7XG4gICAgICAgICAgcmVmLmluc3RhbmNlLnNpemVzID0gdGhpcy5fY29uZmlnLmltYWdlT3B0aW9ucy5zaXplcztcbiAgICAgICAgICByZWYuaW5zdGFuY2Uuc3Jjc2V0U2l6ZXMgPSB0aGlzLl9jb25maWcuaW1hZ2VPcHRpb25zLnNyY3NldFNpemVzO1xuICAgICAgICAgIHJlZi5pbnN0YW5jZS5iYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLl9jb25maWcuaW1hZ2VPcHRpb25zLmJhY2tncm91bmRDb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGVsZW1lbnQgPSByZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBsb29wIG92ZXIgdGhlIGNvbW1hbmRzXG4gICAgZm9yIChjb25zdCBjaGlsZENvbW1hbmQgb2YgY29tbWFuZC5jaGlsZHJlbikge1xuICAgICAgdGhpcy5fZXhlY3V0ZUNvbW1hbmQoeyBjb21tYW5kOiBjaGlsZENvbW1hbmQsIHBhcmVudDogZWxlbWVudCA/PyBwYXJlbnQgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=