geonetwork-ui 2.3.0-dev.6e2b8bea → 2.3.0-dev.c3722986

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 (74) hide show
  1. package/esm2022/libs/data-access/gn4/src/openapi/api/records.api.service.mjs +35 -7
  2. package/esm2022/libs/data-access/gn4/src/openapi/model/models.mjs +1 -2
  3. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +2 -2
  4. package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +3 -3
  5. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +3 -3
  6. package/esm2022/libs/ui/elements/src/lib/thumbnail/thumbnail.component.mjs +4 -3
  7. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +6 -5
  8. package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +2 -1
  9. package/esm2022/libs/ui/inputs/src/lib/files-drop/files-drop.directive.mjs +59 -0
  10. package/esm2022/libs/ui/inputs/src/lib/image-input/image-input.component.mjs +183 -0
  11. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +10 -4
  12. package/esm2022/libs/util/shared/src/lib/utils/bytes-convert.mjs +4 -0
  13. package/esm2022/libs/util/shared/src/lib/utils/image-resize.mjs +60 -0
  14. package/esm2022/libs/util/shared/src/lib/utils/index.mjs +8 -6
  15. package/esm2022/translations/de.json +10 -0
  16. package/esm2022/translations/en.json +10 -0
  17. package/esm2022/translations/es.json +10 -0
  18. package/esm2022/translations/fr.json +10 -0
  19. package/esm2022/translations/it.json +10 -0
  20. package/esm2022/translations/nl.json +10 -0
  21. package/esm2022/translations/pt.json +10 -0
  22. package/fesm2022/geonetwork-ui.mjs +495 -115
  23. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  24. package/libs/data-access/gn4/src/openapi/api/records.api.service.d.ts +9 -5
  25. package/libs/data-access/gn4/src/openapi/api/records.api.service.d.ts.map +1 -1
  26. package/libs/data-access/gn4/src/openapi/model/models.d.ts +0 -1
  27. package/libs/data-access/gn4/src/openapi/model/models.d.ts.map +1 -1
  28. package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts +1 -1
  29. package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts.map +1 -1
  30. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +20 -20
  31. package/libs/ui/inputs/src/lib/button/button.component.d.ts.map +1 -1
  32. package/libs/ui/inputs/src/lib/files-drop/files-drop.directive.d.ts +14 -0
  33. package/libs/ui/inputs/src/lib/files-drop/files-drop.directive.d.ts.map +1 -0
  34. package/libs/ui/inputs/src/lib/image-input/image-input.component.d.ts +44 -0
  35. package/libs/ui/inputs/src/lib/image-input/image-input.component.d.ts.map +1 -0
  36. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +2 -1
  37. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  38. package/libs/util/shared/src/lib/utils/bytes-convert.d.ts +2 -0
  39. package/libs/util/shared/src/lib/utils/bytes-convert.d.ts.map +1 -0
  40. package/libs/util/shared/src/lib/utils/image-resize.d.ts +3 -0
  41. package/libs/util/shared/src/lib/utils/image-resize.d.ts.map +1 -0
  42. package/libs/util/shared/src/lib/utils/index.d.ts +7 -5
  43. package/libs/util/shared/src/lib/utils/index.d.ts.map +1 -1
  44. package/package.json +1 -1
  45. package/src/libs/data-access/gn4/src/openapi/api/records.api.service.ts +43 -12
  46. package/src/libs/data-access/gn4/src/openapi/model/models.ts +0 -1
  47. package/src/libs/data-access/gn4/src/spec.yaml +1 -1
  48. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +1 -1
  49. package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.css +0 -0
  50. package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.html +8 -0
  51. package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.ts +70 -0
  52. package/src/libs/ui/elements/src/lib/thumbnail/thumbnail.component.ts +5 -3
  53. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +1 -1
  54. package/src/libs/ui/inputs/src/lib/button/button.component.ts +1 -1
  55. package/src/libs/ui/inputs/src/lib/files-drop/files-drop.directive.ts +45 -0
  56. package/src/libs/ui/inputs/src/lib/image-input/image-input.component.css +0 -0
  57. package/src/libs/ui/inputs/src/lib/image-input/image-input.component.html +146 -0
  58. package/src/libs/ui/inputs/src/lib/image-input/image-input.component.ts +193 -0
  59. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +3 -0
  60. package/src/libs/util/shared/src/lib/utils/bytes-convert.ts +3 -0
  61. package/src/libs/util/shared/src/lib/utils/image-resize.ts +72 -0
  62. package/src/libs/util/shared/src/lib/utils/index.ts +7 -5
  63. package/translations/de.json +10 -0
  64. package/translations/en.json +10 -0
  65. package/translations/es.json +10 -0
  66. package/translations/fr.json +10 -0
  67. package/translations/it.json +10 -0
  68. package/translations/nl.json +10 -0
  69. package/translations/pt.json +10 -0
  70. package/translations/sk.json +10 -0
  71. package/esm2022/libs/data-access/gn4/src/openapi/model/inlineObject3.api.model.mjs +0 -13
  72. package/libs/data-access/gn4/src/openapi/model/inlineObject3.api.model.d.ts +0 -18
  73. package/libs/data-access/gn4/src/openapi/model/inlineObject3.api.model.d.ts.map +0 -1
  74. package/src/libs/data-access/gn4/src/openapi/model/inlineObject3.api.model.ts +0 -18
@@ -0,0 +1,183 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { HttpClient } from '@angular/common/http';
3
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, } from '@angular/core';
4
+ import { MatIconModule } from '@angular/material/icon';
5
+ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
6
+ import { downgradeImage, megabytesToBytes } from '../../../../../../libs/util/shared/src';
7
+ import { firstValueFrom } from 'rxjs';
8
+ import { ButtonComponent } from '../button/button.component';
9
+ import { FilesDropDirective } from '../files-drop/files-drop.directive';
10
+ import { TranslateModule } from '@ngx-translate/core';
11
+ import { marker } from '@biesbjerg/ngx-translate-extract-marker';
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "@angular/common/http";
14
+ import * as i2 from "@angular/common";
15
+ import * as i3 from "@angular/material/icon";
16
+ import * as i4 from "@angular/material/progress-spinner";
17
+ import * as i5 from "@ngx-translate/core";
18
+ export class ImageInputComponent {
19
+ constructor(http, cd) {
20
+ this.http = http;
21
+ this.cd = cd;
22
+ this.fileChange = new EventEmitter();
23
+ this.urlChange = new EventEmitter();
24
+ this.uploadCancel = new EventEmitter();
25
+ this.delete = new EventEmitter();
26
+ this.altTextChange = new EventEmitter();
27
+ this.dragFilesOver = false;
28
+ this.showUrlInput = false;
29
+ this.downloadError = false;
30
+ this.showAltTextInput = false;
31
+ }
32
+ getPrimaryText() {
33
+ if (this.uploadError) {
34
+ return marker('input.image.uploadErrorLabel');
35
+ }
36
+ if (this.uploadProgress) {
37
+ return marker('input.image.uploadProgressLabel');
38
+ }
39
+ return marker('input.image.selectFileLabel');
40
+ }
41
+ getSecondaryText() {
42
+ if (this.uploadError) {
43
+ return marker('input.image.uploadErrorRetry');
44
+ }
45
+ if (this.uploadProgress) {
46
+ return marker('input.image.uploadProgressCancel');
47
+ }
48
+ return marker('input.image.dropFileLabel');
49
+ }
50
+ handleDragFilesOver(dragFilesOver) {
51
+ if (!this.showUrlInput) {
52
+ this.dragFilesOver = dragFilesOver;
53
+ this.cd.markForCheck();
54
+ }
55
+ }
56
+ handleDropFiles(files) {
57
+ if (!this.showUrlInput) {
58
+ const validFiles = this.filterTypeImage(files);
59
+ if (validFiles.length > 0) {
60
+ this.resizeAndEmit(validFiles[0]);
61
+ }
62
+ }
63
+ }
64
+ handleFileInput(event) {
65
+ const inputFiles = Array.from(event.target.files);
66
+ const validFiles = this.filterTypeImage(inputFiles);
67
+ if (validFiles.length > 0) {
68
+ this.resizeAndEmit(validFiles[0]);
69
+ }
70
+ }
71
+ displayUrlInput() {
72
+ this.uploadCancel.emit();
73
+ this.showUrlInput = true;
74
+ }
75
+ handleUrlChange(event) {
76
+ this.downloadError = false;
77
+ this.urlInputValue = event.target.value;
78
+ }
79
+ async downloadUrl() {
80
+ const name = this.urlInputValue.split('/').pop();
81
+ try {
82
+ const response = await firstValueFrom(this.http.head(this.urlInputValue, { observe: 'response' }));
83
+ if (response.headers.get('content-type')?.startsWith('image/') &&
84
+ parseInt(response.headers.get('content-length')) <
85
+ megabytesToBytes(this.maxSizeMB)) {
86
+ this.http.get(this.urlInputValue, { responseType: 'blob' }).subscribe({
87
+ next: (blob) => {
88
+ this.cd.markForCheck();
89
+ const file = new File([blob], name);
90
+ this.fileChange.emit(file);
91
+ },
92
+ error: () => {
93
+ this.downloadError = true;
94
+ this.cd.markForCheck();
95
+ this.urlChange.emit(this.urlInputValue);
96
+ },
97
+ });
98
+ }
99
+ }
100
+ catch {
101
+ this.downloadError = true;
102
+ this.cd.markForCheck();
103
+ return;
104
+ }
105
+ }
106
+ handleSecondaryTextClick() {
107
+ if (this.uploadError) {
108
+ this.handleRetry();
109
+ }
110
+ else if (this.uploadProgress) {
111
+ this.handleCancel();
112
+ }
113
+ }
114
+ handleCancel() {
115
+ this.uploadCancel.emit();
116
+ }
117
+ handleRetry() {
118
+ switch (this.lastUploadType) {
119
+ case 'file':
120
+ this.fileChange.emit(this.lastUploadContent);
121
+ break;
122
+ case 'url':
123
+ this.urlChange.emit(this.lastUploadContent);
124
+ break;
125
+ }
126
+ }
127
+ handleDelete() {
128
+ this.delete.emit();
129
+ }
130
+ toggleAltTextInput() {
131
+ this.showAltTextInput = !this.showAltTextInput;
132
+ }
133
+ handleAltTextChange(event) {
134
+ const input = event.target;
135
+ this.altTextChange.emit(input.value);
136
+ }
137
+ filterTypeImage(files) {
138
+ return files.filter((file) => {
139
+ return file.type.startsWith('image/');
140
+ });
141
+ }
142
+ resizeAndEmit(imageToResize) {
143
+ const maxSizeBytes = megabytesToBytes(this.maxSizeMB);
144
+ downgradeImage(imageToResize, maxSizeBytes).then((resizedImage) => {
145
+ const fileToEmit = new File([resizedImage], imageToResize.name);
146
+ this.fileChange.emit(fileToEmit);
147
+ });
148
+ }
149
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ImageInputComponent, deps: [{ token: i1.HttpClient }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
150
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ImageInputComponent, isStandalone: true, selector: "gn-ui-image-input", inputs: { maxSizeMB: "maxSizeMB", previewUrl: "previewUrl", altText: "altText", uploadProgress: "uploadProgress", uploadError: "uploadError" }, outputs: { fileChange: "fileChange", urlChange: "urlChange", uploadCancel: "uploadCancel", delete: "delete", altTextChange: "altTextChange" }, ngImport: i0, template: "<ng-container *ngIf=\"previewUrl; then withImage; else withoutImage\">\n</ng-container>\n\n<ng-template #withImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <div class=\"flex-1 group relative\">\n <img\n class=\"w-full h-full object-cover border-2 border-gray-300 rounded-lg\"\n [alt]=\"altText\"\n loading=\"lazy\"\n [src]=\"previewUrl\"\n />\n <gn-ui-button\n [extraClass]=\"\n 'bg-gray-200 absolute right-2 bottom-2 invisible group-hover:visible'\n \"\n (buttonClick)=\"handleDelete()\"\n >\n <mat-icon class=\"material-symbols-outlined\">delete</mat-icon>\n </gn-ui-button>\n </div>\n <input\n *ngIf=\"showAltTextInput\"\n type=\"text\"\n class=\"py-3 px-2 border-2 border-gray-300 rounded-lg text-sm font-medium\"\n [placeholder]=\"'input.image.altTextPlaceholder' | translate\"\n [value]=\"altText\"\n (change)=\"handleAltTextChange($event)\"\n />\n <div class=\"flex flex-row gap-2\">\n <gn-ui-button\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"handleDelete()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">delete</mat-icon>\n {{ 'input.image.delete' | translate }}\n </gn-ui-button>\n <gn-ui-button\n *ngIf=\"!showAltTextInput\"\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"toggleAltTextInput()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">add</mat-icon>\n {{ 'input.image.displayAltTextInput' | translate }}\n </gn-ui-button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #withoutImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <label\n gnUiFilesDrop\n class=\"block flex-1 border-2 border-dashed border-gray-300 rounded-lg p-6 flex flex-col items-center justify-center gap-4\"\n (dragFilesOver)=\"handleDragFilesOver($event)\"\n (dropFiles)=\"handleDropFiles($event)\"\n >\n <div class=\"w-14 h-14 rounded-md bg-gray-200 grid\">\n <mat-icon\n *ngIf=\"!dragFilesOver && !uploadProgress && !uploadError\"\n class=\"material-symbols-outlined place-self-center text-blue-500\"\n >image</mat-icon\n >\n <mat-icon\n *ngIf=\"dragFilesOver && !uploadProgress && !uploadError\"\n class=\"material-symbols-outlined place-self-center text-blue-500\"\n >add_box</mat-icon\n >\n <div *ngIf=\"uploadProgress\">\n <mat-progress-spinner\n class=\"place-self-center\"\n [diameter]=\"56\"\n [mode]=\"'determinate'\"\n [value]=\"uploadProgress\"\n ></mat-progress-spinner>\n <span\n class=\"text-sm font-medium relative inline-block width-[30px] bottom-[40px] left-[15px]\"\n >\n {{ uploadProgress }}%\n </span>\n </div>\n <mat-icon\n *ngIf=\"uploadError\"\n class=\"material-symbols-outlined place-self-center text-rose-500\"\n >broken_image</mat-icon\n >\n </div>\n <div class=\"flex flex-col items-center gap-1\">\n <p class=\"font-medium\">{{ getPrimaryText() | translate }}</p>\n <p\n class=\"text-sm\"\n [class]=\"\n uploadProgress || uploadError\n ? 'font-bold text-blue-500 cursor-pointer'\n : 'font-medium text-gray-500'\n \"\n (click)=\"handleSecondaryTextClick()\"\n >\n {{ getSecondaryText() | translate }}\n </p>\n </div>\n <input\n type=\"file\"\n class=\"hidden\"\n (change)=\"handleFileInput($event)\"\n [disabled]=\"showUrlInput || uploadProgress || uploadError\"\n />\n </label>\n <div *ngIf=\"!showUrlInput\" class=\"flex-none\">\n <gn-ui-button\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"displayUrlInput()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">link</mat-icon>\n {{ 'input.image.displayUrlInput' | translate }}\n </gn-ui-button>\n </div>\n <div *ngIf=\"showUrlInput\" class=\"flex-none flex flex-col gap-2\">\n <div class=\"h-2\"></div>\n <div class=\"flex gap-2 items-center\">\n <div class=\"flex-1 flex rounded-lg\">\n <span\n class=\"material-symbols-outlined px-4 inline-flex items-center min-w-fit rounded-s-lg border-2 border-e-0 border-gray-300\"\n >link</span\n >\n <input\n type=\"text\"\n class=\"py-3 ps-1 block w-full border-2 border-s-0 border-e-0 border-gray-300 text-sm font-medium\"\n placeholder=\"https://exemple.com/image.jpg\"\n (change)=\"handleUrlChange($event)\"\n />\n <gn-ui-button\n class=\"px-1 inline-flex items-center min-w-fit rounded-e-lg border-2 border-s-0 border-gray-300 text-white\"\n [extraClass]=\"\n urlInputValue && !downloadError ? 'bg-blue-500' : 'bg-gray-500'\n \"\n [disabled]=\"!urlInputValue || downloadError\"\n (buttonClick)=\"downloadUrl()\"\n >\n <mat-icon class=\"material-symbols-outlined\">arrow_upward</mat-icon>\n </gn-ui-button>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: FilesDropDirective, selector: "[gnUiFilesDrop]", outputs: ["dragFilesOver", "dropFiles"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i4.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
151
+ }
152
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ImageInputComponent, decorators: [{
153
+ type: Component,
154
+ args: [{ selector: 'gn-ui-image-input', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
155
+ CommonModule,
156
+ ButtonComponent,
157
+ MatIconModule,
158
+ FilesDropDirective,
159
+ MatProgressSpinnerModule,
160
+ TranslateModule,
161
+ ], template: "<ng-container *ngIf=\"previewUrl; then withImage; else withoutImage\">\n</ng-container>\n\n<ng-template #withImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <div class=\"flex-1 group relative\">\n <img\n class=\"w-full h-full object-cover border-2 border-gray-300 rounded-lg\"\n [alt]=\"altText\"\n loading=\"lazy\"\n [src]=\"previewUrl\"\n />\n <gn-ui-button\n [extraClass]=\"\n 'bg-gray-200 absolute right-2 bottom-2 invisible group-hover:visible'\n \"\n (buttonClick)=\"handleDelete()\"\n >\n <mat-icon class=\"material-symbols-outlined\">delete</mat-icon>\n </gn-ui-button>\n </div>\n <input\n *ngIf=\"showAltTextInput\"\n type=\"text\"\n class=\"py-3 px-2 border-2 border-gray-300 rounded-lg text-sm font-medium\"\n [placeholder]=\"'input.image.altTextPlaceholder' | translate\"\n [value]=\"altText\"\n (change)=\"handleAltTextChange($event)\"\n />\n <div class=\"flex flex-row gap-2\">\n <gn-ui-button\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"handleDelete()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">delete</mat-icon>\n {{ 'input.image.delete' | translate }}\n </gn-ui-button>\n <gn-ui-button\n *ngIf=\"!showAltTextInput\"\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"toggleAltTextInput()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">add</mat-icon>\n {{ 'input.image.displayAltTextInput' | translate }}\n </gn-ui-button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #withoutImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <label\n gnUiFilesDrop\n class=\"block flex-1 border-2 border-dashed border-gray-300 rounded-lg p-6 flex flex-col items-center justify-center gap-4\"\n (dragFilesOver)=\"handleDragFilesOver($event)\"\n (dropFiles)=\"handleDropFiles($event)\"\n >\n <div class=\"w-14 h-14 rounded-md bg-gray-200 grid\">\n <mat-icon\n *ngIf=\"!dragFilesOver && !uploadProgress && !uploadError\"\n class=\"material-symbols-outlined place-self-center text-blue-500\"\n >image</mat-icon\n >\n <mat-icon\n *ngIf=\"dragFilesOver && !uploadProgress && !uploadError\"\n class=\"material-symbols-outlined place-self-center text-blue-500\"\n >add_box</mat-icon\n >\n <div *ngIf=\"uploadProgress\">\n <mat-progress-spinner\n class=\"place-self-center\"\n [diameter]=\"56\"\n [mode]=\"'determinate'\"\n [value]=\"uploadProgress\"\n ></mat-progress-spinner>\n <span\n class=\"text-sm font-medium relative inline-block width-[30px] bottom-[40px] left-[15px]\"\n >\n {{ uploadProgress }}%\n </span>\n </div>\n <mat-icon\n *ngIf=\"uploadError\"\n class=\"material-symbols-outlined place-self-center text-rose-500\"\n >broken_image</mat-icon\n >\n </div>\n <div class=\"flex flex-col items-center gap-1\">\n <p class=\"font-medium\">{{ getPrimaryText() | translate }}</p>\n <p\n class=\"text-sm\"\n [class]=\"\n uploadProgress || uploadError\n ? 'font-bold text-blue-500 cursor-pointer'\n : 'font-medium text-gray-500'\n \"\n (click)=\"handleSecondaryTextClick()\"\n >\n {{ getSecondaryText() | translate }}\n </p>\n </div>\n <input\n type=\"file\"\n class=\"hidden\"\n (change)=\"handleFileInput($event)\"\n [disabled]=\"showUrlInput || uploadProgress || uploadError\"\n />\n </label>\n <div *ngIf=\"!showUrlInput\" class=\"flex-none\">\n <gn-ui-button\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"displayUrlInput()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">link</mat-icon>\n {{ 'input.image.displayUrlInput' | translate }}\n </gn-ui-button>\n </div>\n <div *ngIf=\"showUrlInput\" class=\"flex-none flex flex-col gap-2\">\n <div class=\"h-2\"></div>\n <div class=\"flex gap-2 items-center\">\n <div class=\"flex-1 flex rounded-lg\">\n <span\n class=\"material-symbols-outlined px-4 inline-flex items-center min-w-fit rounded-s-lg border-2 border-e-0 border-gray-300\"\n >link</span\n >\n <input\n type=\"text\"\n class=\"py-3 ps-1 block w-full border-2 border-s-0 border-e-0 border-gray-300 text-sm font-medium\"\n placeholder=\"https://exemple.com/image.jpg\"\n (change)=\"handleUrlChange($event)\"\n />\n <gn-ui-button\n class=\"px-1 inline-flex items-center min-w-fit rounded-e-lg border-2 border-s-0 border-gray-300 text-white\"\n [extraClass]=\"\n urlInputValue && !downloadError ? 'bg-blue-500' : 'bg-gray-500'\n \"\n [disabled]=\"!urlInputValue || downloadError\"\n (buttonClick)=\"downloadUrl()\"\n >\n <mat-icon class=\"material-symbols-outlined\">arrow_upward</mat-icon>\n </gn-ui-button>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n" }]
162
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { maxSizeMB: [{
163
+ type: Input
164
+ }], previewUrl: [{
165
+ type: Input
166
+ }], altText: [{
167
+ type: Input
168
+ }], uploadProgress: [{
169
+ type: Input
170
+ }], uploadError: [{
171
+ type: Input
172
+ }], fileChange: [{
173
+ type: Output
174
+ }], urlChange: [{
175
+ type: Output
176
+ }], uploadCancel: [{
177
+ type: Output
178
+ }], delete: [{
179
+ type: Output
180
+ }], altTextChange: [{
181
+ type: Output
182
+ }] } });
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9pbnB1dHMvc3JjL2xpYi9pbWFnZS1pbnB1dC9pbWFnZS1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2lucHV0cy9zcmMvbGliL2ltYWdlLWlucHV0L2ltYWdlLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDakQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQTtBQUM3RSxPQUFPLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0NBQXdDLENBQUE7QUFDekYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNyQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUE7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTs7Ozs7OztBQWlCaEUsTUFBTSxPQUFPLG1CQUFtQjtJQXFCOUIsWUFBb0IsSUFBZ0IsRUFBVSxFQUFxQjtRQUEvQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFmekQsZUFBVSxHQUF1QixJQUFJLFlBQVksRUFBRSxDQUFBO1FBQ25ELGNBQVMsR0FBeUIsSUFBSSxZQUFZLEVBQUUsQ0FBQTtRQUNwRCxpQkFBWSxHQUF1QixJQUFJLFlBQVksRUFBRSxDQUFBO1FBQ3JELFdBQU0sR0FBdUIsSUFBSSxZQUFZLEVBQUUsQ0FBQTtRQUMvQyxrQkFBYSxHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFBO1FBRWxFLGtCQUFhLEdBQUcsS0FBSyxDQUFBO1FBQ3JCLGlCQUFZLEdBQUcsS0FBSyxDQUFBO1FBQ3BCLGtCQUFhLEdBQUcsS0FBSyxDQUFBO1FBQ3JCLHFCQUFnQixHQUFHLEtBQUssQ0FBQTtJQU04QyxDQUFDO0lBRXZFLGNBQWM7UUFDWixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsT0FBTyxNQUFNLENBQUMsOEJBQThCLENBQUMsQ0FBQTtTQUM5QztRQUNELElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN2QixPQUFPLE1BQU0sQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFBO1NBQ2pEO1FBQ0QsT0FBTyxNQUFNLENBQUMsNkJBQTZCLENBQUMsQ0FBQTtJQUM5QyxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLE9BQU8sTUFBTSxDQUFDLDhCQUE4QixDQUFDLENBQUE7U0FDOUM7UUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdkIsT0FBTyxNQUFNLENBQUMsa0NBQWtDLENBQUMsQ0FBQTtTQUNsRDtRQUNELE9BQU8sTUFBTSxDQUFDLDJCQUEyQixDQUFDLENBQUE7SUFDNUMsQ0FBQztJQUVELG1CQUFtQixDQUFDLGFBQXNCO1FBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFBO1lBQ2xDLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUE7U0FDdkI7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWE7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDdEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUM5QyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUN6QixJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO2FBQ2xDO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQVk7UUFDMUIsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBRSxLQUFLLENBQUMsTUFBMkIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN2RSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQ25ELElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtTQUNsQztJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUN4QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQTtJQUMxQixDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQVk7UUFDMUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUE7UUFDMUIsSUFBSSxDQUFDLGFBQWEsR0FBSSxLQUFLLENBQUMsTUFBMkIsQ0FBQyxLQUFLLENBQUE7SUFDL0QsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXO1FBQ2YsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUE7UUFFaEQsSUFBSTtZQUNGLE1BQU0sUUFBUSxHQUFHLE1BQU0sY0FBYyxDQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQzVELENBQUE7WUFDRCxJQUNFLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7Z0JBQzFELFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO29CQUM5QyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQ2xDO2dCQUNBLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUM7b0JBQ3BFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO3dCQUNiLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUE7d0JBQ3RCLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7d0JBQ25DLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO29CQUM1QixDQUFDO29CQUNELEtBQUssRUFBRSxHQUFHLEVBQUU7d0JBQ1YsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUE7d0JBQ3pCLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUE7d0JBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQTtvQkFDekMsQ0FBQztpQkFDRixDQUFDLENBQUE7YUFDSDtTQUNGO1FBQUMsTUFBTTtZQUNOLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFBO1lBQ3pCLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUE7WUFDdEIsT0FBTTtTQUNQO0lBQ0gsQ0FBQztJQUVELHdCQUF3QjtRQUN0QixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO1NBQ25CO2FBQU0sSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQzlCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQTtTQUNwQjtJQUNILENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUMxQixDQUFDO0lBRUQsV0FBVztRQUNULFFBQVEsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUMzQixLQUFLLE1BQU07Z0JBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUF5QixDQUFDLENBQUE7Z0JBQ3BELE1BQUs7WUFDUCxLQUFLLEtBQUs7Z0JBQ1IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUEyQixDQUFDLENBQUE7Z0JBQ3JELE1BQUs7U0FDUjtJQUNILENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUNwQixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQTtJQUNoRCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBWTtRQUM5QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQTtRQUM5QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDdEMsQ0FBQztJQUVPLGVBQWUsQ0FBQyxLQUFhO1FBQ25DLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzNCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDdkMsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRU8sYUFBYSxDQUFDLGFBQW1CO1FBQ3ZDLE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNyRCxjQUFjLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQ2hFLE1BQU0sVUFBVSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQy9ELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQ2xDLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQzs4R0E3SlUsbUJBQW1CO2tHQUFuQixtQkFBbUIsNFdDbENoQywyMEtBa0pBLHlERHhISSxZQUFZLG1JQUNaLGVBQWUsOEhBQ2YsYUFBYSxvTEFDYixrQkFBa0Isb0dBQ2xCLHdCQUF3QixrT0FDeEIsZUFBZTs7MkZBR04sbUJBQW1CO2tCQWYvQixTQUFTOytCQUNFLG1CQUFtQixtQkFHWix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixrQkFBa0I7d0JBQ2xCLHdCQUF3Qjt3QkFDeEIsZUFBZTtxQkFDaEI7aUlBR1EsU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nXG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyJ1xuaW1wb3J0IHsgZG93bmdyYWRlSW1hZ2UsIG1lZ2FieXRlc1RvQnl0ZXMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYydcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL2J1dHRvbi9idXR0b24uY29tcG9uZW50J1xuaW1wb3J0IHsgRmlsZXNEcm9wRGlyZWN0aXZlIH0gZnJvbSAnLi4vZmlsZXMtZHJvcC9maWxlcy1kcm9wLmRpcmVjdGl2ZSdcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBtYXJrZXIgfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLWltYWdlLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ltYWdlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW1hZ2UtaW5wdXQuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBGaWxlc0Ryb3BEaXJlY3RpdmUsXG4gICAgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgSW1hZ2VJbnB1dENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIG1heFNpemVNQjogbnVtYmVyXG4gIEBJbnB1dCgpIHByZXZpZXdVcmw/OiBzdHJpbmdcbiAgQElucHV0KCkgYWx0VGV4dD86IHN0cmluZ1xuICBASW5wdXQoKSB1cGxvYWRQcm9ncmVzcz86IG51bWJlclxuICBASW5wdXQoKSB1cGxvYWRFcnJvcj86IGJvb2xlYW5cbiAgQE91dHB1dCgpIGZpbGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxGaWxlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuICBAT3V0cHV0KCkgdXJsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuICBAT3V0cHV0KCkgdXBsb2FkQ2FuY2VsOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKClcbiAgQE91dHB1dCgpIGRlbGV0ZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpXG4gIEBPdXRwdXQoKSBhbHRUZXh0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuXG4gIGRyYWdGaWxlc092ZXIgPSBmYWxzZVxuICBzaG93VXJsSW5wdXQgPSBmYWxzZVxuICBkb3dubG9hZEVycm9yID0gZmFsc2VcbiAgc2hvd0FsdFRleHRJbnB1dCA9IGZhbHNlXG5cbiAgdXJsSW5wdXRWYWx1ZT86IHN0cmluZ1xuICBsYXN0VXBsb2FkVHlwZT86ICdmaWxlJyB8ICd1cmwnXG4gIGxhc3RVcGxvYWRDb250ZW50Pzogc3RyaW5nIHwgRmlsZVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgZ2V0UHJpbWFyeVRleHQoKSB7XG4gICAgaWYgKHRoaXMudXBsb2FkRXJyb3IpIHtcbiAgICAgIHJldHVybiBtYXJrZXIoJ2lucHV0LmltYWdlLnVwbG9hZEVycm9yTGFiZWwnKVxuICAgIH1cbiAgICBpZiAodGhpcy51cGxvYWRQcm9ncmVzcykge1xuICAgICAgcmV0dXJuIG1hcmtlcignaW5wdXQuaW1hZ2UudXBsb2FkUHJvZ3Jlc3NMYWJlbCcpXG4gICAgfVxuICAgIHJldHVybiBtYXJrZXIoJ2lucHV0LmltYWdlLnNlbGVjdEZpbGVMYWJlbCcpXG4gIH1cblxuICBnZXRTZWNvbmRhcnlUZXh0KCkge1xuICAgIGlmICh0aGlzLnVwbG9hZEVycm9yKSB7XG4gICAgICByZXR1cm4gbWFya2VyKCdpbnB1dC5pbWFnZS51cGxvYWRFcnJvclJldHJ5JylcbiAgICB9XG4gICAgaWYgKHRoaXMudXBsb2FkUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybiBtYXJrZXIoJ2lucHV0LmltYWdlLnVwbG9hZFByb2dyZXNzQ2FuY2VsJylcbiAgICB9XG4gICAgcmV0dXJuIG1hcmtlcignaW5wdXQuaW1hZ2UuZHJvcEZpbGVMYWJlbCcpXG4gIH1cblxuICBoYW5kbGVEcmFnRmlsZXNPdmVyKGRyYWdGaWxlc092ZXI6IGJvb2xlYW4pIHtcbiAgICBpZiAoIXRoaXMuc2hvd1VybElucHV0KSB7XG4gICAgICB0aGlzLmRyYWdGaWxlc092ZXIgPSBkcmFnRmlsZXNPdmVyXG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpXG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRHJvcEZpbGVzKGZpbGVzOiBGaWxlW10pIHtcbiAgICBpZiAoIXRoaXMuc2hvd1VybElucHV0KSB7XG4gICAgICBjb25zdCB2YWxpZEZpbGVzID0gdGhpcy5maWx0ZXJUeXBlSW1hZ2UoZmlsZXMpXG4gICAgICBpZiAodmFsaWRGaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMucmVzaXplQW5kRW1pdCh2YWxpZEZpbGVzWzBdKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUZpbGVJbnB1dChldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCBpbnB1dEZpbGVzID0gQXJyYXkuZnJvbSgoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmZpbGVzKVxuICAgIGNvbnN0IHZhbGlkRmlsZXMgPSB0aGlzLmZpbHRlclR5cGVJbWFnZShpbnB1dEZpbGVzKVxuICAgIGlmICh2YWxpZEZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMucmVzaXplQW5kRW1pdCh2YWxpZEZpbGVzWzBdKVxuICAgIH1cbiAgfVxuXG4gIGRpc3BsYXlVcmxJbnB1dCgpIHtcbiAgICB0aGlzLnVwbG9hZENhbmNlbC5lbWl0KClcbiAgICB0aGlzLnNob3dVcmxJbnB1dCA9IHRydWVcbiAgfVxuXG4gIGhhbmRsZVVybENoYW5nZShldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLmRvd25sb2FkRXJyb3IgPSBmYWxzZVxuICAgIHRoaXMudXJsSW5wdXRWYWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWVcbiAgfVxuXG4gIGFzeW5jIGRvd25sb2FkVXJsKCkge1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLnVybElucHV0VmFsdWUuc3BsaXQoJy8nKS5wb3AoKVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgIHRoaXMuaHR0cC5oZWFkKHRoaXMudXJsSW5wdXRWYWx1ZSwgeyBvYnNlcnZlOiAncmVzcG9uc2UnIH0pXG4gICAgICApXG4gICAgICBpZiAoXG4gICAgICAgIHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKT8uc3RhcnRzV2l0aCgnaW1hZ2UvJykgJiZcbiAgICAgICAgcGFyc2VJbnQocmVzcG9uc2UuaGVhZGVycy5nZXQoJ2NvbnRlbnQtbGVuZ3RoJykpIDxcbiAgICAgICAgICBtZWdhYnl0ZXNUb0J5dGVzKHRoaXMubWF4U2l6ZU1CKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuaHR0cC5nZXQodGhpcy51cmxJbnB1dFZhbHVlLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKGJsb2IpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKClcbiAgICAgICAgICAgIGNvbnN0IGZpbGUgPSBuZXcgRmlsZShbYmxvYl0sIG5hbWUpXG4gICAgICAgICAgICB0aGlzLmZpbGVDaGFuZ2UuZW1pdChmaWxlKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZG93bmxvYWRFcnJvciA9IHRydWVcbiAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKClcbiAgICAgICAgICAgIHRoaXMudXJsQ2hhbmdlLmVtaXQodGhpcy51cmxJbnB1dFZhbHVlKVxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLmRvd25sb2FkRXJyb3IgPSB0cnVlXG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpXG4gICAgICByZXR1cm5cbiAgICB9XG4gIH1cblxuICBoYW5kbGVTZWNvbmRhcnlUZXh0Q2xpY2soKSB7XG4gICAgaWYgKHRoaXMudXBsb2FkRXJyb3IpIHtcbiAgICAgIHRoaXMuaGFuZGxlUmV0cnkoKVxuICAgIH0gZWxzZSBpZiAodGhpcy51cGxvYWRQcm9ncmVzcykge1xuICAgICAgdGhpcy5oYW5kbGVDYW5jZWwoKVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUNhbmNlbCgpIHtcbiAgICB0aGlzLnVwbG9hZENhbmNlbC5lbWl0KClcbiAgfVxuXG4gIGhhbmRsZVJldHJ5KCkge1xuICAgIHN3aXRjaCAodGhpcy5sYXN0VXBsb2FkVHlwZSkge1xuICAgICAgY2FzZSAnZmlsZSc6XG4gICAgICAgIHRoaXMuZmlsZUNoYW5nZS5lbWl0KHRoaXMubGFzdFVwbG9hZENvbnRlbnQgYXMgRmlsZSlcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ3VybCc6XG4gICAgICAgIHRoaXMudXJsQ2hhbmdlLmVtaXQodGhpcy5sYXN0VXBsb2FkQ29udGVudCBhcyBzdHJpbmcpXG4gICAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRGVsZXRlKCkge1xuICAgIHRoaXMuZGVsZXRlLmVtaXQoKVxuICB9XG5cbiAgdG9nZ2xlQWx0VGV4dElucHV0KCkge1xuICAgIHRoaXMuc2hvd0FsdFRleHRJbnB1dCA9ICF0aGlzLnNob3dBbHRUZXh0SW5wdXRcbiAgfVxuXG4gIGhhbmRsZUFsdFRleHRDaGFuZ2UoZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudFxuICAgIHRoaXMuYWx0VGV4dENoYW5nZS5lbWl0KGlucHV0LnZhbHVlKVxuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJUeXBlSW1hZ2UoZmlsZXM6IEZpbGVbXSkge1xuICAgIHJldHVybiBmaWxlcy5maWx0ZXIoKGZpbGUpID0+IHtcbiAgICAgIHJldHVybiBmaWxlLnR5cGUuc3RhcnRzV2l0aCgnaW1hZ2UvJylcbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSByZXNpemVBbmRFbWl0KGltYWdlVG9SZXNpemU6IEZpbGUpIHtcbiAgICBjb25zdCBtYXhTaXplQnl0ZXMgPSBtZWdhYnl0ZXNUb0J5dGVzKHRoaXMubWF4U2l6ZU1CKVxuICAgIGRvd25ncmFkZUltYWdlKGltYWdlVG9SZXNpemUsIG1heFNpemVCeXRlcykudGhlbigocmVzaXplZEltYWdlKSA9PiB7XG4gICAgICBjb25zdCBmaWxlVG9FbWl0ID0gbmV3IEZpbGUoW3Jlc2l6ZWRJbWFnZV0sIGltYWdlVG9SZXNpemUubmFtZSlcbiAgICAgIHRoaXMuZmlsZUNoYW5nZS5lbWl0KGZpbGVUb0VtaXQpXG4gICAgfSlcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInByZXZpZXdVcmw7IHRoZW4gd2l0aEltYWdlOyBlbHNlIHdpdGhvdXRJbWFnZVwiPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjd2l0aEltYWdlPlxuICA8ZGl2IGNsYXNzPVwidy1mdWxsIGgtZnVsbCBmbGV4IGZsZXgtY29sIGdhcC0yXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXgtMSBncm91cCByZWxhdGl2ZVwiPlxuICAgICAgPGltZ1xuICAgICAgICBjbGFzcz1cInctZnVsbCBoLWZ1bGwgb2JqZWN0LWNvdmVyIGJvcmRlci0yIGJvcmRlci1ncmF5LTMwMCByb3VuZGVkLWxnXCJcbiAgICAgICAgW2FsdF09XCJhbHRUZXh0XCJcbiAgICAgICAgbG9hZGluZz1cImxhenlcIlxuICAgICAgICBbc3JjXT1cInByZXZpZXdVcmxcIlxuICAgICAgLz5cbiAgICAgIDxnbi11aS1idXR0b25cbiAgICAgICAgW2V4dHJhQ2xhc3NdPVwiXG4gICAgICAgICAgJ2JnLWdyYXktMjAwIGFic29sdXRlIHJpZ2h0LTIgYm90dG9tLTIgaW52aXNpYmxlIGdyb3VwLWhvdmVyOnZpc2libGUnXG4gICAgICAgIFwiXG4gICAgICAgIChidXR0b25DbGljayk9XCJoYW5kbGVEZWxldGUoKVwiXG4gICAgICA+XG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj5kZWxldGU8L21hdC1pY29uPlxuICAgICAgPC9nbi11aS1idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGlucHV0XG4gICAgICAqbmdJZj1cInNob3dBbHRUZXh0SW5wdXRcIlxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgY2xhc3M9XCJweS0zIHB4LTIgYm9yZGVyLTIgYm9yZGVyLWdyYXktMzAwIHJvdW5kZWQtbGcgdGV4dC1zbSBmb250LW1lZGl1bVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiJ2lucHV0LmltYWdlLmFsdFRleHRQbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcIlxuICAgICAgW3ZhbHVlXT1cImFsdFRleHRcIlxuICAgICAgKGNoYW5nZSk9XCJoYW5kbGVBbHRUZXh0Q2hhbmdlKCRldmVudClcIlxuICAgIC8+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTJcIj5cbiAgICAgIDxnbi11aS1idXR0b25cbiAgICAgICAgW2V4dHJhQ2xhc3NdPVwiJ2JnLWdyYXktMjAwIGZvbnQtYm9sZCdcIlxuICAgICAgICAoYnV0dG9uQ2xpY2spPVwiaGFuZGxlRGVsZXRlKClcIlxuICAgICAgPlxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIG1lLTFcIj5kZWxldGU8L21hdC1pY29uPlxuICAgICAgICB7eyAnaW5wdXQuaW1hZ2UuZGVsZXRlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9nbi11aS1idXR0b24+XG4gICAgICA8Z24tdWktYnV0dG9uXG4gICAgICAgICpuZ0lmPVwiIXNob3dBbHRUZXh0SW5wdXRcIlxuICAgICAgICBbZXh0cmFDbGFzc109XCInYmctZ3JheS0yMDAgZm9udC1ib2xkJ1wiXG4gICAgICAgIChidXR0b25DbGljayk9XCJ0b2dnbGVBbHRUZXh0SW5wdXQoKVwiXG4gICAgICA+XG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgbWUtMVwiPmFkZDwvbWF0LWljb24+XG4gICAgICAgIHt7ICdpbnB1dC5pbWFnZS5kaXNwbGF5QWx0VGV4dElucHV0JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9nbi11aS1idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN3aXRob3V0SW1hZ2U+XG4gIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgaC1mdWxsIGZsZXggZmxleC1jb2wgZ2FwLTJcIj5cbiAgICA8bGFiZWxcbiAgICAgIGduVWlGaWxlc0Ryb3BcbiAgICAgIGNsYXNzPVwiYmxvY2sgZmxleC0xIGJvcmRlci0yIGJvcmRlci1kYXNoZWQgYm9yZGVyLWdyYXktMzAwIHJvdW5kZWQtbGcgcC02IGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC00XCJcbiAgICAgIChkcmFnRmlsZXNPdmVyKT1cImhhbmRsZURyYWdGaWxlc092ZXIoJGV2ZW50KVwiXG4gICAgICAoZHJvcEZpbGVzKT1cImhhbmRsZURyb3BGaWxlcygkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwidy0xNCBoLTE0IHJvdW5kZWQtbWQgYmctZ3JheS0yMDAgZ3JpZFwiPlxuICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAqbmdJZj1cIiFkcmFnRmlsZXNPdmVyICYmICF1cGxvYWRQcm9ncmVzcyAmJiAhdXBsb2FkRXJyb3JcIlxuICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBwbGFjZS1zZWxmLWNlbnRlciB0ZXh0LWJsdWUtNTAwXCJcbiAgICAgICAgICA+aW1hZ2U8L21hdC1pY29uXG4gICAgICAgID5cbiAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgKm5nSWY9XCJkcmFnRmlsZXNPdmVyICYmICF1cGxvYWRQcm9ncmVzcyAmJiAhdXBsb2FkRXJyb3JcIlxuICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBwbGFjZS1zZWxmLWNlbnRlciB0ZXh0LWJsdWUtNTAwXCJcbiAgICAgICAgICA+YWRkX2JveDwvbWF0LWljb25cbiAgICAgICAgPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwidXBsb2FkUHJvZ3Jlc3NcIj5cbiAgICAgICAgICA8bWF0LXByb2dyZXNzLXNwaW5uZXJcbiAgICAgICAgICAgIGNsYXNzPVwicGxhY2Utc2VsZi1jZW50ZXJcIlxuICAgICAgICAgICAgW2RpYW1ldGVyXT1cIjU2XCJcbiAgICAgICAgICAgIFttb2RlXT1cIidkZXRlcm1pbmF0ZSdcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cInVwbG9hZFByb2dyZXNzXCJcbiAgICAgICAgICA+PC9tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtIHJlbGF0aXZlIGlubGluZS1ibG9jayB3aWR0aC1bMzBweF0gYm90dG9tLVs0MHB4XSBsZWZ0LVsxNXB4XVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgdXBsb2FkUHJvZ3Jlc3MgfX0lXG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgKm5nSWY9XCJ1cGxvYWRFcnJvclwiXG4gICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIHBsYWNlLXNlbGYtY2VudGVyIHRleHQtcm9zZS01MDBcIlxuICAgICAgICAgID5icm9rZW5faW1hZ2U8L21hdC1pY29uXG4gICAgICAgID5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGdhcC0xXCI+XG4gICAgICAgIDxwIGNsYXNzPVwiZm9udC1tZWRpdW1cIj57eyBnZXRQcmltYXJ5VGV4dCgpIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICA8cFxuICAgICAgICAgIGNsYXNzPVwidGV4dC1zbVwiXG4gICAgICAgICAgW2NsYXNzXT1cIlxuICAgICAgICAgICAgdXBsb2FkUHJvZ3Jlc3MgfHwgdXBsb2FkRXJyb3JcbiAgICAgICAgICAgICAgPyAnZm9udC1ib2xkIHRleHQtYmx1ZS01MDAgY3Vyc29yLXBvaW50ZXInXG4gICAgICAgICAgICAgIDogJ2ZvbnQtbWVkaXVtIHRleHQtZ3JheS01MDAnXG4gICAgICAgICAgXCJcbiAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlU2Vjb25kYXJ5VGV4dENsaWNrKClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0U2Vjb25kYXJ5VGV4dCgpIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgY2xhc3M9XCJoaWRkZW5cIlxuICAgICAgICAoY2hhbmdlKT1cImhhbmRsZUZpbGVJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cInNob3dVcmxJbnB1dCB8fCB1cGxvYWRQcm9ncmVzcyB8fCB1cGxvYWRFcnJvclwiXG4gICAgICAvPlxuICAgIDwvbGFiZWw+XG4gICAgPGRpdiAqbmdJZj1cIiFzaG93VXJsSW5wdXRcIiBjbGFzcz1cImZsZXgtbm9uZVwiPlxuICAgICAgPGduLXVpLWJ1dHRvblxuICAgICAgICBbZXh0cmFDbGFzc109XCInYmctZ3JheS0yMDAgZm9udC1ib2xkJ1wiXG4gICAgICAgIChidXR0b25DbGljayk9XCJkaXNwbGF5VXJsSW5wdXQoKVwiXG4gICAgICA+XG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgbWUtMVwiPmxpbms8L21hdC1pY29uPlxuICAgICAgICB7eyAnaW5wdXQuaW1hZ2UuZGlzcGxheVVybElucHV0JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9nbi11aS1idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cInNob3dVcmxJbnB1dFwiIGNsYXNzPVwiZmxleC1ub25lIGZsZXggZmxleC1jb2wgZ2FwLTJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJoLTJcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0yIGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC0xIGZsZXggcm91bmRlZC1sZ1wiPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgcHgtNCBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgbWluLXctZml0IHJvdW5kZWQtcy1sZyBib3JkZXItMiBib3JkZXItZS0wIGJvcmRlci1ncmF5LTMwMFwiXG4gICAgICAgICAgICA+bGluazwvc3BhblxuICAgICAgICAgID5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzPVwicHktMyBwcy0xIGJsb2NrIHctZnVsbCBib3JkZXItMiBib3JkZXItcy0wIGJvcmRlci1lLTAgYm9yZGVyLWdyYXktMzAwIHRleHQtc20gZm9udC1tZWRpdW1cIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJodHRwczovL2V4ZW1wbGUuY29tL2ltYWdlLmpwZ1wiXG4gICAgICAgICAgICAoY2hhbmdlKT1cImhhbmRsZVVybENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxnbi11aS1idXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwicHgtMSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgbWluLXctZml0IHJvdW5kZWQtZS1sZyBib3JkZXItMiBib3JkZXItcy0wIGJvcmRlci1ncmF5LTMwMCB0ZXh0LXdoaXRlXCJcbiAgICAgICAgICAgIFtleHRyYUNsYXNzXT1cIlxuICAgICAgICAgICAgICB1cmxJbnB1dFZhbHVlICYmICFkb3dubG9hZEVycm9yID8gJ2JnLWJsdWUtNTAwJyA6ICdiZy1ncmF5LTUwMCdcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXVybElucHV0VmFsdWUgfHwgZG93bmxvYWRFcnJvclwiXG4gICAgICAgICAgICAoYnV0dG9uQ2xpY2spPVwiZG93bmxvYWRVcmwoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPmFycm93X3Vwd2FyZDwvbWF0LWljb24+XG4gICAgICAgICAgPC9nbi11aS1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -33,6 +33,7 @@ import { MatInputModule } from '@angular/material/input';
33
33
  import { MatDatepickerModule } from '@angular/material/datepicker';
34
34
  import { MatNativeDateModule } from '@angular/material/core';
35
35
  import { EditableLabelDirective } from './editable-label/editable-label.directive';
36
+ import { ImageInputComponent } from './image-input/image-input.component';
36
37
  import * as i0 from "@angular/core";
37
38
  import * as i1 from "@ngx-translate/core";
38
39
  export class UiInputsModule {
@@ -75,7 +76,8 @@ export class UiInputsModule {
75
76
  MatNativeDateModule,
76
77
  EditableLabelDirective,
77
78
  TextAreaComponent,
78
- ButtonComponent], exports: [DropdownSelectorComponent,
79
+ ButtonComponent,
80
+ ImageInputComponent], exports: [DropdownSelectorComponent,
79
81
  AutocompleteComponent,
80
82
  ButtonComponent,
81
83
  TextInputComponent,
@@ -92,7 +94,8 @@ export class UiInputsModule {
92
94
  CheckboxComponent,
93
95
  SearchInputComponent,
94
96
  DateRangePickerComponent,
95
- EditableLabelDirective] }); }
97
+ EditableLabelDirective,
98
+ ImageInputComponent] }); }
96
99
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, imports: [CommonModule,
97
100
  TranslateModule.forChild(),
98
101
  NgxDropzoneModule,
@@ -109,7 +112,8 @@ export class UiInputsModule {
109
112
  MatFormFieldModule,
110
113
  MatInputModule,
111
114
  MatDatepickerModule,
112
- MatNativeDateModule] }); }
115
+ MatNativeDateModule,
116
+ ImageInputComponent] }); }
113
117
  }
114
118
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, decorators: [{
115
119
  type: NgModule,
@@ -159,6 +163,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
159
163
  EditableLabelDirective,
160
164
  TextAreaComponent,
161
165
  ButtonComponent,
166
+ ImageInputComponent,
162
167
  ],
163
168
  exports: [
164
169
  DropdownSelectorComponent,
@@ -179,7 +184,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
179
184
  SearchInputComponent,
180
185
  DateRangePickerComponent,
181
186
  EditableLabelDirective,
187
+ ImageInputComponent,
182
188
  ],
183
189
  }]
184
190
  }] });
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktaW5wdXRzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvaW5wdXRzL3NyYy9saWIvdWktaW5wdXRzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQTtBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDaEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUNBQXVDLENBQUE7QUFDN0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQzNELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFBO0FBQ3pFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLCtEQUErRCxDQUFBO0FBQzdHLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFBO0FBQzNGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQ25FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFBO0FBQ3RFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBQ3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUN0RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQTtBQUMzRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUs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O3dCQUN6QixtQkFBbUI7d0JBQ25CLDRCQUE0Qjt3QkFDNUIsNEJBQTRCO3dCQUM1QixrQkFBa0I7d0JBQ2xCLG9CQUFvQjt3QkFDcEIsdUJBQXVCO3dCQUN2QixpQkFBaUI7d0JBQ2pCLG9CQUFvQjt3QkFDcEIsd0JBQXdCO3dCQUN4QixzQkFBc0I7cUJBQ3ZCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3JtcydcbmltcG9ydCB7IFV0aWxTaGFyZWRNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYydcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBUYWdJbnB1dE1vZHVsZSB9IGZyb20gJ25neC1jaGlwcydcbmltcG9ydCB7IE5neERyb3B6b25lTW9kdWxlIH0gZnJvbSAnbmd4LWRyb3B6b25lJ1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudCdcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnXG5pbXBvcnQgeyBDaGlwc0lucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9jaGlwcy1pbnB1dC9jaGlwcy1pbnB1dC5jb21wb25lbnQnXG5pbXBvcnQgeyBEcmFnQW5kRHJvcEZpbGVJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vZHJhZy1hbmQtZHJvcC1maWxlLWlucHV0L2RyYWctYW5kLWRyb3AtZmlsZS1pbnB1dC5jb21wb25lbnQnXG5pbXBvcnQgeyBEcm9wZG93blNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9kcm9wZG93bi1zZWxlY3Rvci9kcm9wZG93bi1zZWxlY3Rvci5jb21wb25lbnQnXG5pbXBvcnQgeyBUZXh0QXJlYUNvbXBvbmVudCB9IGZyb20gJy4vdGV4dC1hcmVhL3RleHQtYXJlYS5jb21wb25lbnQnXG5pbXBvcnQgeyBUZXh0SW5wdXRDb21wb25lbnQgfSBmcm9tICcuL3RleHQtaW5wdXQvdGV4dC1pbnB1dC5jb21wb25lbnQnXG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbidcbmltcG9ydCB7IE5hdmlnYXRpb25CdXR0b25Db21wb25lbnQgfSBmcm9tICcuL25hdmlnYXRpb24tYnV0dG9uL25hdmlnYXRpb24tYnV0dG9uLmNvbXBvbmVudCdcbmltcG9ydCB7IFN0YXJUb2dnbGVDb21wb25lbnQgfSBmcm9tICcuL3N0YXItdG9nZ2xlL3N0YXItdG9nZ2xlLmNvbXBvbmVudCdcbmltcG9ydCB7IERyb3Bkb3duTXVsdGlzZWxlY3RDb21wb25lbnQgfSBmcm9tICcuL2Ryb3Bkb3duLW11bHRpc2VsZWN0L2Ryb3Bkb3duLW11bHRpc2VsZWN0LmNvbXBvbmVudCdcbmltcG9ydCB7IFVpV2lkZ2V0c01vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvd2lkZ2V0cy9zcmMnXG5pbXBvcnQgeyBPdmVybGF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknXG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94J1xuaW1wb3J0IHsgVmlld3BvcnRJbnRlcnNlY3RvckNvbXBvbmVudCB9IGZyb20gJy4vdmlld3BvcnQtaW50ZXJzZWN0b3Ivdmlld3BvcnQtaW50ZXJzZWN0b3IuY29tcG9uZW50J1xuaW1wb3J0IHtcbiAgRm9ybUZpZWxkQXJyYXlDb21wb25lbnQsXG4gIEZvcm1GaWVsZENvbXBvbmVudCxcbiAgRm9ybUZpZWxkRmlsZUNvbXBvbmVudCxcbiAgRm9ybUZpZWxkT2JqZWN0Q29tcG9uZW50LFxuICBGb3JtRmllbGRSaWNoQ29tcG9uZW50LFxuICBGb3JtRmllbGRTaW1wbGVDb21wb25lbnQsXG4gIEZvcm1GaWVsZFNwYXRpYWxFeHRlbnRDb21wb25lbnQsXG4gIEZvcm1GaWVsZFRlbXBvcmFsRXh0ZW50Q29tcG9uZW50LFxufSBmcm9tICcuL2Zvcm0tZmllbGQnXG5pbXBvcnQgeyBDaGVja1RvZ2dsZUNvbXBvbmVudCB9IGZyb20gJy4vY2hlY2stdG9nZ2xlL2NoZWNrLXRvZ2dsZS5jb21wb25lbnQnXG5pbXBvcnQgeyBDb3B5VGV4dEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vY29weS10ZXh0LWJ1dHRvbi9jb3B5LXRleHQtYnV0dG9uLmNvbXBvbmVudCdcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJ1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudCdcbmltcG9ydCB7IFNlYXJjaElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9zZWFyY2gtaW5wdXQvc2VhcmNoLWlucHV0LmNvbXBvbmVudCdcbmltcG9ydCB7IERhdGVSYW5nZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vZGF0ZS1yYW5nZS1waWNrZXIvZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50J1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCdcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnXG5pbXBvcnQgeyBNYXREYXRlcGlja2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcidcbmltcG9ydCB7IE1hdE5hdGl2ZURhdGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJ1xuaW1wb3J0IHsgRWRpdGFibGVMYWJlbERpcmVjdGl2ZSB9IGZyb20gJy4vZWRpdGFibGUtbGFiZWwvZWRpdGFibGUtbGFiZWwuZGlyZWN0aXZlJ1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBEcm9wZG93blNlbGVjdG9yQ29tcG9uZW50LFxuICAgIEF1dG9jb21wbGV0ZUNvbXBvbmVudCxcbiAgICBUZXh0SW5wdXRDb21wb25lbnQsXG4gICAgRHJhZ0FuZERyb3BGaWxlSW5wdXRDb21wb25lbnQsXG4gICAgQ2hpcHNJbnB1dENvbXBvbmVudCxcbiAgICBOYXZpZ2F0aW9uQnV0dG9uQ29tcG9uZW50LFxuICAgIFN0YXJUb2dnbGVDb21wb25lbnQsXG4gICAgRHJvcGRvd25NdWx0aXNlbGVjdENvbXBvbmVudCxcbiAgICBWaWV3cG9ydEludGVyc2VjdG9yQ29tcG9uZW50LFxuICAgIEZvcm1GaWVsZENvbXBvbmVudCxcbiAgICBGb3JtRmllbGRTaW1wbGVDb21wb25lbnQsXG4gICAgRm9ybUZpZWxkQXJyYXlDb21wb25lbnQsXG4gICAgRm9ybUZpZWxkT2JqZWN0Q29tcG9uZW50LFxuICAgIEZvcm1GaWVsZFJpY2hDb21wb25lbnQsXG4gICAgRm9ybUZpZWxkRmlsZUNvbXBvbmVudCxcbiAgICBGb3JtRmllbGRTcGF0aWFsRXh0ZW50Q29tcG9uZW50LFxuICAgIEZvcm1GaWVsZFRlbXBvcmFsRXh0ZW50Q29tcG9uZW50LFxuICAgIENoZWNrVG9nZ2xlQ29tcG9uZW50LFxuICAgIENvcHlUZXh0QnV0dG9uQ29tcG9uZW50LFxuICAgIENoZWNrYm94Q29tcG9uZW50LFxuICAgIFNlYXJjaElucHV0Q29tcG9uZW50LFxuICAgIERhdGVSYW5nZVBpY2tlckNvbXBvbmVudCxcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUuZm9yQ2hpbGQoKSxcbiAgICBOZ3hEcm9wem9uZU1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFRhZ0lucHV0TW9kdWxlLFxuICAgIFV0aWxTaGFyZWRNb2R1bGUsXG4gICAgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgVWlXaWRnZXRzTW9kdWxlLFxuICAgIE92ZXJsYXlNb2R1bGUsXG4gICAgTWF0Q2hlY2tib3hNb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0RGF0ZXBpY2tlck1vZHVsZSxcbiAgICBNYXROYXRpdmVEYXRlTW9kdWxlLFxuICAgIEVkaXRhYmxlTGFiZWxEaXJlY3RpdmUsXG4gICAgVGV4dEFyZWFDb21wb25lbnQsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgRHJvcGRvd25TZWxlY3RvckNvbXBvbmVudCxcbiAgICBBdXRvY29tcGxldGVDb21wb25lbnQsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIFRleHRJbnB1dENvbXBvbmVudCxcbiAgICBEcmFnQW5kRHJvcEZpbGVJbnB1dENvbXBvbmVudCxcbiAgICBUZXh0QXJlYUNvbXBvbmVudCxcbiAgICBDaGlwc0lucHV0Q29tcG9uZW50LFxuICAgIE5hdmlnYXRpb25CdXR0b25Db21wb25lbnQsXG4gICAgU3RhclRvZ2dsZUNvbXBvbmVudCxcbiAgICBEcm9wZG93bk11bHRpc2VsZWN0Q29tcG9uZW50LFxuICAgIFZpZXdwb3J0SW50ZXJzZWN0b3JDb21wb25lbnQsXG4gICAgRm9ybUZpZWxkQ29tcG9uZW50LFxuICAgIENoZWNrVG9nZ2xlQ29tcG9uZW50LFxuICAgIENvcHlUZXh0QnV0dG9uQ29tcG9uZW50LFxuICAgIENoZWNrYm94Q29tcG9uZW50LFxuICAgIFNlYXJjaElucHV0Q29tcG9uZW50LFxuICAgIERhdGVSYW5nZVBpY2tlckNvbXBvbmVudCxcbiAgICBFZGl0YWJsZUxhYmVsRGlyZWN0aXZlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBVaUlucHV0c01vZHVsZSB7fVxuIl19
191
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktaW5wdXRzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvaW5wdXRzL3NyYy9saWIvdWktaW5wdXRzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQTtBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDaEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUNBQXVDLENBQUE7QUFDN0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQzNELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFBO0FBQ3pFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLCtEQUErRCxDQUFBO0FBQzdHLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFBO0FBQzNGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQ25FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFBO0FBQ3RFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBQ3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUN0RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQTtBQUMzRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUs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eUI7d0JBQ3pCLHFCQUFxQjt3QkFDckIsZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLDZCQUE2Qjt3QkFDN0IsaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLHlCQUF5Qjt3QkFDekIsbUJBQW1CO3dCQUNuQiw0QkFBNEI7d0JBQzVCLDRCQUE0Qjt3QkFDNUIsa0JBQWtCO3dCQUNsQixvQkFBb0I7d0JBQ3BCLHVCQUF1Qjt3QkFDdkIsaUJBQWlCO3dCQUNqQixvQkFBb0I7d0JBQ3BCLHdCQUF3Qjt3QkFDeEIsc0JBQXNCO3dCQUN0QixtQkFBbUI7cUJBQ3BCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3JtcydcbmltcG9ydCB7IFV0aWxTaGFyZWRNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYydcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBUYWdJbnB1dE1vZHVsZSB9IGZyb20gJ25neC1jaGlwcydcbmltcG9ydCB7IE5neERyb3B6b25lTW9kdWxlIH0gZnJvbSAnbmd4LWRyb3B6b25lJ1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudCdcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnXG5pbXBvcnQgeyBDaGlwc0lucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9jaGlwcy1pbnB1dC9jaGlwcy1pbnB1dC5jb21wb25lbnQnXG5pbXBvcnQgeyBEcmFnQW5kRHJvcEZpbGVJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vZHJhZy1hbmQtZHJvcC1maWxlLWlucHV0L2RyYWctYW5kLWRyb3AtZmlsZS1pbnB1dC5jb21wb25lbnQnXG5pbXBvcnQgeyBEcm9wZG93blNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9kcm9wZG93bi1zZWxlY3Rvci9kcm9wZG93bi1zZWxlY3Rvci5jb21wb25lbnQnXG5pbXBvcnQgeyBUZXh0QXJlYUNvbXBvbmVudCB9IGZyb20gJy4vdGV4dC1hcmVhL3RleHQtYXJlYS5jb21wb25lbnQnXG5pbXBvcnQgeyBUZXh0SW5wdXRDb21wb25lbnQgfSBmcm9tICcuL3RleHQtaW5wdXQvdGV4dC1pbnB1dC5jb21wb25lbnQnXG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbidcbmltcG9ydCB7IE5hdmlnYXRpb25CdXR0b25Db21wb25lbnQgfSBmcm9tICcuL25hdmlnYXRpb24tYnV0dG9uL25hdmlnYXRpb24tYnV0dG9uLmNvbXBvbmVudCdcbmltcG9ydCB7IFN0YXJUb2dnbGVDb21wb25lbnQgfSBmcm9tICcuL3N0YXItdG9nZ2xlL3N0YXItdG9nZ2xlLmNvbXBvbmVudCdcbmltcG9ydCB7IERyb3Bkb3duTXVsdGlzZWxlY3RDb21wb25lbnQgfSBmcm9tICcuL2Ryb3Bkb3duLW11bHRpc2VsZWN0L2Ryb3Bkb3duLW11bHRpc2VsZWN0LmNvbXBvbmVudCdcbmltcG9ydCB7IFVpV2lkZ2V0c01vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvd2lkZ2V0cy9zcmMnXG5pbXBvcnQgeyBPdmVybGF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknXG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94J1xuaW1wb3J0IHsgVmlld3BvcnRJbnRlcnNlY3RvckNvbXBvbmVudCB9IGZyb20gJy4vdmlld3BvcnQtaW50ZXJzZWN0b3Ivdmlld3BvcnQtaW50ZXJzZWN0b3IuY29tcG9uZW50J1xuaW1wb3J0IHtcbiAgRm9ybUZpZWxkQXJyYXlDb21wb25lbnQsXG4gIEZvcm1GaWVsZENvbXBvbmVudCxcbiAgRm9ybUZpZWxkRmlsZUNvbXBvbmVudCxcbiAgRm9ybUZpZWxkT2JqZWN0Q29tcG9uZW50LFxuICBGb3JtRmllbGRSaWNoQ29tcG9uZW50LFxuICBGb3JtRmllbGRTaW1wbGVDb21wb25lbnQsXG4gIEZvcm1GaWVsZFNwYXRpYWxFeHRlbnRDb21wb25lbnQsXG4gIEZvcm1GaWVsZFRlbXBvcmFsRXh0ZW50Q29tcG9uZW50LFxufSBmcm9tICcuL2Zvcm0tZmllbGQnXG5pbXBvcnQgeyBDaGVja1RvZ2dsZUNvbXBvbmVudCB9IGZyb20gJy4vY2hlY2stdG9nZ2xlL2NoZWNrLXRvZ2dsZS5jb21wb25lbnQnXG5pbXBvcnQgeyBDb3B5VGV4dEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vY29weS10ZXh0LWJ1dHRvbi9jb3B5LXRleHQtYnV0dG9uLmNvbXBvbmVudCdcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJ1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudCdcbmltcG9ydCB7IFNlYXJjaElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9zZWFyY2gtaW5wdXQvc2VhcmNoLWlucHV0LmNvbXBvbmVudCdcbmltcG9ydCB7IERhdGVSYW5nZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vZGF0ZS1yYW5nZS1waWNrZXIvZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50J1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCdcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnXG5pbXBvcnQgeyBNYXREYXRlcGlja2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcidcbmltcG9ydCB7IE1hdE5hdGl2ZURhdGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJ1xuaW1wb3J0IHsgRWRpdGFibGVMYWJlbERpcmVjdGl2ZSB9IGZyb20gJy4vZWRpdGFibGUtbGFiZWwvZWRpdGFibGUtbGFiZWwuZGlyZWN0aXZlJ1xuaW1wb3J0IHsgSW1hZ2VJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vaW1hZ2UtaW5wdXQvaW1hZ2UtaW5wdXQuY29tcG9uZW50J1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBEcm9wZG93blNlbGVjdG9yQ29tcG9uZW50LFxuICAgIEF1dG9jb21wbGV0ZUNvbXBvbmVudCxcbiAgICBUZXh0SW5wdXRDb21wb25lbnQsXG4gICAgRHJhZ0FuZERyb3BGaWxlSW5wdXRDb21wb25lbnQsXG4gICAgQ2hpcHNJbnB1dENvbXBvbmVudCxcbiAgICBOYXZpZ2F0aW9uQnV0dG9uQ29tcG9uZW50LFxuICAgIFN0YXJUb2dnbGVDb21wb25lbnQsXG4gICAgRHJvcGRvd25NdWx0aXNlbGVjdENvbXBvbmVudCxcbiAgICBWaWV3cG9ydEludGVyc2VjdG9yQ29tcG9uZW50LFxuICAgIEZvcm1GaWVsZENvbXBvbmVudCxcbiAgICBGb3JtRmllbGRTaW1wbGVDb21wb25lbnQsXG4gICAgRm9ybUZpZWxkQXJyYXlDb21wb25lbnQsXG4gICAgRm9ybUZpZWxkT2JqZWN0Q29tcG9uZW50LFxuICAgIEZvcm1GaWVsZFJpY2hDb21wb25lbnQsXG4gICAgRm9ybUZpZWxkRmlsZUNvbXBvbmVudCxcbiAgICBGb3JtRmllbGRTcGF0aWFsRXh0ZW50Q29tcG9uZW50LFxuICAgIEZvcm1GaWVsZFRlbXBvcmFsRXh0ZW50Q29tcG9uZW50LFxuICAgIENoZWNrVG9nZ2xlQ29tcG9uZW50LFxuICAgIENvcHlUZXh0QnV0dG9uQ29tcG9uZW50LFxuICAgIENoZWNrYm94Q29tcG9uZW50LFxuICAgIFNlYXJjaElucHV0Q29tcG9uZW50LFxuICAgIERhdGVSYW5nZVBpY2tlckNvbXBvbmVudCxcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUuZm9yQ2hpbGQoKSxcbiAgICBOZ3hEcm9wem9uZU1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFRhZ0lucHV0TW9kdWxlLFxuICAgIFV0aWxTaGFyZWRNb2R1bGUsXG4gICAgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgVWlXaWRnZXRzTW9kdWxlLFxuICAgIE92ZXJsYXlNb2R1bGUsXG4gICAgTWF0Q2hlY2tib3hNb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0RGF0ZXBpY2tlck1vZHVsZSxcbiAgICBNYXROYXRpdmVEYXRlTW9kdWxlLFxuICAgIEVkaXRhYmxlTGFiZWxEaXJlY3RpdmUsXG4gICAgVGV4dEFyZWFDb21wb25lbnQsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIEltYWdlSW5wdXRDb21wb25lbnQsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBEcm9wZG93blNlbGVjdG9yQ29tcG9uZW50LFxuICAgIEF1dG9jb21wbGV0ZUNvbXBvbmVudCxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgVGV4dElucHV0Q29tcG9uZW50LFxuICAgIERyYWdBbmREcm9wRmlsZUlucHV0Q29tcG9uZW50LFxuICAgIFRleHRBcmVhQ29tcG9uZW50LFxuICAgIENoaXBzSW5wdXRDb21wb25lbnQsXG4gICAgTmF2aWdhdGlvbkJ1dHRvbkNvbXBvbmVudCxcbiAgICBTdGFyVG9nZ2xlQ29tcG9uZW50LFxuICAgIERyb3Bkb3duTXVsdGlzZWxlY3RDb21wb25lbnQsXG4gICAgVmlld3BvcnRJbnRlcnNlY3RvckNvbXBvbmVudCxcbiAgICBGb3JtRmllbGRDb21wb25lbnQsXG4gICAgQ2hlY2tUb2dnbGVDb21wb25lbnQsXG4gICAgQ29weVRleHRCdXR0b25Db21wb25lbnQsXG4gICAgQ2hlY2tib3hDb21wb25lbnQsXG4gICAgU2VhcmNoSW5wdXRDb21wb25lbnQsXG4gICAgRGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50LFxuICAgIEVkaXRhYmxlTGFiZWxEaXJlY3RpdmUsXG4gICAgSW1hZ2VJbnB1dENvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVWlJbnB1dHNNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,4 @@
1
+ export function megabytesToBytes(megabytes) {
2
+ return megabytes * 1048576;
3
+ }
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnl0ZXMtY29udmVydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9zaGFyZWQvc3JjL2xpYi91dGlscy9ieXRlcy1jb252ZXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxTQUFTO0lBQ3hDLE9BQU8sU0FBUyxHQUFHLE9BQU8sQ0FBQTtBQUM1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIG1lZ2FieXRlc1RvQnl0ZXMobWVnYWJ5dGVzKSB7XG4gIHJldHVybiBtZWdhYnl0ZXMgKiAxMDQ4NTc2XG59XG4iXX0=
@@ -0,0 +1,60 @@
1
+ export function downsizeImage(blob, maxWidth, maxHeight) {
2
+ return new Promise((resolve, reject) => {
3
+ const image = new Image();
4
+ image.src = URL.createObjectURL(blob);
5
+ image.onload = () => {
6
+ let width = image.width;
7
+ let height = image.height;
8
+ if (width > maxWidth || height > maxHeight) {
9
+ if (width > height) {
10
+ height = height * (maxWidth / width);
11
+ width = maxWidth;
12
+ }
13
+ else {
14
+ width = width * (maxHeight / height);
15
+ height = maxHeight;
16
+ }
17
+ }
18
+ const canvas = document.createElement('canvas');
19
+ canvas.width = width;
20
+ canvas.height = height;
21
+ const context = canvas.getContext('2d');
22
+ context.drawImage(image, 0, 0, width, height);
23
+ canvas.toBlob(resolve, blob.type);
24
+ };
25
+ image.onerror = reject;
26
+ });
27
+ }
28
+ export function downgradeImage(blob, maxSizeBytes) {
29
+ return new Promise((resolve, reject) => {
30
+ const image = new Image();
31
+ image.src = URL.createObjectURL(blob);
32
+ image.onload = () => {
33
+ const width = image.width;
34
+ const height = image.height;
35
+ let quality = 1.0;
36
+ const canvas = document.createElement('canvas');
37
+ canvas.width = width;
38
+ canvas.height = height;
39
+ const context = canvas.getContext('2d');
40
+ context.drawImage(image, 0, 0, width, height);
41
+ const compressAndResolveBlob = (blobToCompress) => {
42
+ if (blobToCompress.size <= maxSizeBytes) {
43
+ resolve(blobToCompress);
44
+ }
45
+ else {
46
+ quality -= 0.1;
47
+ if (quality >= 0) {
48
+ canvas.toBlob(compressAndResolveBlob, blob.type, quality);
49
+ }
50
+ else {
51
+ reject('Unable to compress image below max size');
52
+ }
53
+ }
54
+ };
55
+ canvas.toBlob(compressAndResolveBlob, blob.type, quality);
56
+ };
57
+ image.onerror = reject;
58
+ });
59
+ }
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtcmVzaXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL3NoYXJlZC9zcmMvbGliL3V0aWxzL2ltYWdlLXJlc2l6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsYUFBYSxDQUMzQixJQUFVLEVBQ1YsUUFBZ0IsRUFDaEIsU0FBaUI7SUFFakIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNyQyxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFBO1FBQ3pCLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNyQyxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtZQUNsQixJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFBO1lBQ3ZCLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUE7WUFFekIsSUFBSSxLQUFLLEdBQUcsUUFBUSxJQUFJLE1BQU0sR0FBRyxTQUFTLEVBQUU7Z0JBQzFDLElBQUksS0FBSyxHQUFHLE1BQU0sRUFBRTtvQkFDbEIsTUFBTSxHQUFHLE1BQU0sR0FBRyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQTtvQkFDcEMsS0FBSyxHQUFHLFFBQVEsQ0FBQTtpQkFDakI7cUJBQU07b0JBQ0wsS0FBSyxHQUFHLEtBQUssR0FBRyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsQ0FBQTtvQkFDcEMsTUFBTSxHQUFHLFNBQVMsQ0FBQTtpQkFDbkI7YUFDRjtZQUVELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7WUFDL0MsTUFBTSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7WUFDcEIsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7WUFFdEIsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUN2QyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQTtZQUU3QyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDbkMsQ0FBQyxDQUFBO1FBQ0QsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUE7SUFDeEIsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FDNUIsSUFBVSxFQUNWLFlBQW9CO0lBRXBCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDckMsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQTtRQUN6QixLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDckMsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7WUFDbEIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQTtZQUN6QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFBO1lBQzNCLElBQUksT0FBTyxHQUFHLEdBQUcsQ0FBQTtZQUVqQixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1lBQy9DLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFBO1lBQ3BCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1lBRXRCLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDdkMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUE7WUFFN0MsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLGNBQW9CLEVBQUUsRUFBRTtnQkFDdEQsSUFBSSxjQUFjLENBQUMsSUFBSSxJQUFJLFlBQVksRUFBRTtvQkFDdkMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFBO2lCQUN4QjtxQkFBTTtvQkFDTCxPQUFPLElBQUksR0FBRyxDQUFBO29CQUNkLElBQUksT0FBTyxJQUFJLENBQUMsRUFBRTt3QkFDaEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFBO3FCQUMxRDt5QkFBTTt3QkFDTCxNQUFNLENBQUMseUNBQXlDLENBQUMsQ0FBQTtxQkFDbEQ7aUJBQ0Y7WUFDSCxDQUFDLENBQUE7WUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLHNCQUFzQixFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDM0QsQ0FBQyxDQUFBO1FBQ0QsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUE7SUFDeEIsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGRvd25zaXplSW1hZ2UoXG4gIGJsb2I6IEJsb2IsXG4gIG1heFdpZHRoOiBudW1iZXIsXG4gIG1heEhlaWdodDogbnVtYmVyXG4pOiBQcm9taXNlPEJsb2I+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpXG4gICAgaW1hZ2Uuc3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKVxuICAgIGltYWdlLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgIGxldCB3aWR0aCA9IGltYWdlLndpZHRoXG4gICAgICBsZXQgaGVpZ2h0ID0gaW1hZ2UuaGVpZ2h0XG5cbiAgICAgIGlmICh3aWR0aCA+IG1heFdpZHRoIHx8IGhlaWdodCA+IG1heEhlaWdodCkge1xuICAgICAgICBpZiAod2lkdGggPiBoZWlnaHQpIHtcbiAgICAgICAgICBoZWlnaHQgPSBoZWlnaHQgKiAobWF4V2lkdGggLyB3aWR0aClcbiAgICAgICAgICB3aWR0aCA9IG1heFdpZHRoXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgd2lkdGggPSB3aWR0aCAqIChtYXhIZWlnaHQgLyBoZWlnaHQpXG4gICAgICAgICAgaGVpZ2h0ID0gbWF4SGVpZ2h0XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJylcbiAgICAgIGNhbnZhcy53aWR0aCA9IHdpZHRoXG4gICAgICBjYW52YXMuaGVpZ2h0ID0gaGVpZ2h0XG5cbiAgICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKVxuICAgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDAsIHdpZHRoLCBoZWlnaHQpXG5cbiAgICAgIGNhbnZhcy50b0Jsb2IocmVzb2x2ZSwgYmxvYi50eXBlKVxuICAgIH1cbiAgICBpbWFnZS5vbmVycm9yID0gcmVqZWN0XG4gIH0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkb3duZ3JhZGVJbWFnZShcbiAgYmxvYjogQmxvYixcbiAgbWF4U2l6ZUJ5dGVzOiBudW1iZXJcbik6IFByb21pc2U8QmxvYj4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IGltYWdlID0gbmV3IEltYWdlKClcbiAgICBpbWFnZS5zcmMgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpXG4gICAgaW1hZ2Uub25sb2FkID0gKCkgPT4ge1xuICAgICAgY29uc3Qgd2lkdGggPSBpbWFnZS53aWR0aFxuICAgICAgY29uc3QgaGVpZ2h0ID0gaW1hZ2UuaGVpZ2h0XG4gICAgICBsZXQgcXVhbGl0eSA9IDEuMFxuXG4gICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKVxuICAgICAgY2FudmFzLndpZHRoID0gd2lkdGhcbiAgICAgIGNhbnZhcy5oZWlnaHQgPSBoZWlnaHRcblxuICAgICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpXG4gICAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgMCwgMCwgd2lkdGgsIGhlaWdodClcblxuICAgICAgY29uc3QgY29tcHJlc3NBbmRSZXNvbHZlQmxvYiA9IChibG9iVG9Db21wcmVzczogQmxvYikgPT4ge1xuICAgICAgICBpZiAoYmxvYlRvQ29tcHJlc3Muc2l6ZSA8PSBtYXhTaXplQnl0ZXMpIHtcbiAgICAgICAgICByZXNvbHZlKGJsb2JUb0NvbXByZXNzKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHF1YWxpdHkgLT0gMC4xXG4gICAgICAgICAgaWYgKHF1YWxpdHkgPj0gMCkge1xuICAgICAgICAgICAgY2FudmFzLnRvQmxvYihjb21wcmVzc0FuZFJlc29sdmVCbG9iLCBibG9iLnR5cGUsIHF1YWxpdHkpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlamVjdCgnVW5hYmxlIHRvIGNvbXByZXNzIGltYWdlIGJlbG93IG1heCBzaXplJylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY2FudmFzLnRvQmxvYihjb21wcmVzc0FuZFJlc29sdmVCbG9iLCBibG9iLnR5cGUsIHF1YWxpdHkpXG4gICAgfVxuICAgIGltYWdlLm9uZXJyb3IgPSByZWplY3RcbiAgfSlcbn1cbiJdfQ==
@@ -1,10 +1,12 @@
1
+ export * from './bytes-convert';
2
+ export * from './event';
3
+ export * from './fuzzy-filter';
4
+ export * from './geojson';
5
+ export * from './image-resize';
1
6
  export * from './parse';
2
- export * from './strip-html';
3
7
  export * from './remove-whitespace';
4
- export * from './geojson';
5
8
  export * from './sort-by';
6
- export * from './url';
7
- export * from './event';
8
- export * from './fuzzy-filter';
9
+ export * from './strip-html';
9
10
  export * from './temporal-extent-union';
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYy9saWIvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxTQUFTLENBQUE7QUFDdkIsY0FBYyxjQUFjLENBQUE7QUFDNUIsY0FBYyxxQkFBcUIsQ0FBQTtBQUNuQyxjQUFjLFdBQVcsQ0FBQTtBQUN6QixjQUFjLFdBQVcsQ0FBQTtBQUN6QixjQUFjLE9BQU8sQ0FBQTtBQUNyQixjQUFjLFNBQVMsQ0FBQTtBQUN2QixjQUFjLGdCQUFnQixDQUFBO0FBQzlCLGNBQWMseUJBQXlCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3BhcnNlJ1xuZXhwb3J0ICogZnJvbSAnLi9zdHJpcC1odG1sJ1xuZXhwb3J0ICogZnJvbSAnLi9yZW1vdmUtd2hpdGVzcGFjZSdcbmV4cG9ydCAqIGZyb20gJy4vZ2VvanNvbidcbmV4cG9ydCAqIGZyb20gJy4vc29ydC1ieSdcbmV4cG9ydCAqIGZyb20gJy4vdXJsJ1xuZXhwb3J0ICogZnJvbSAnLi9ldmVudCdcbmV4cG9ydCAqIGZyb20gJy4vZnV6enktZmlsdGVyJ1xuZXhwb3J0ICogZnJvbSAnLi90ZW1wb3JhbC1leHRlbnQtdW5pb24nXG4iXX0=
11
+ export * from './url';
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYy9saWIvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQkFBaUIsQ0FBQTtBQUMvQixjQUFjLFNBQVMsQ0FBQTtBQUN2QixjQUFjLGdCQUFnQixDQUFBO0FBQzlCLGNBQWMsV0FBVyxDQUFBO0FBQ3pCLGNBQWMsZ0JBQWdCLENBQUE7QUFDOUIsY0FBYyxTQUFTLENBQUE7QUFDdkIsY0FBYyxxQkFBcUIsQ0FBQTtBQUNuQyxjQUFjLFdBQVcsQ0FBQTtBQUN6QixjQUFjLGNBQWMsQ0FBQTtBQUM1QixjQUFjLHlCQUF5QixDQUFBO0FBQ3ZDLGNBQWMsT0FBTyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9ieXRlcy1jb252ZXJ0J1xuZXhwb3J0ICogZnJvbSAnLi9ldmVudCdcbmV4cG9ydCAqIGZyb20gJy4vZnV6enktZmlsdGVyJ1xuZXhwb3J0ICogZnJvbSAnLi9nZW9qc29uJ1xuZXhwb3J0ICogZnJvbSAnLi9pbWFnZS1yZXNpemUnXG5leHBvcnQgKiBmcm9tICcuL3BhcnNlJ1xuZXhwb3J0ICogZnJvbSAnLi9yZW1vdmUtd2hpdGVzcGFjZSdcbmV4cG9ydCAqIGZyb20gJy4vc29ydC1ieSdcbmV4cG9ydCAqIGZyb20gJy4vc3RyaXAtaHRtbCdcbmV4cG9ydCAqIGZyb20gJy4vdGVtcG9yYWwtZXh0ZW50LXVuaW9uJ1xuZXhwb3J0ICogZnJvbSAnLi91cmwnXG4iXX0=
@@ -159,6 +159,16 @@
159
159
  "facets.block.title.tag.default": "Stichwort",
160
160
  "facets.block.title.th_regions_tree.default": "Regionen",
161
161
  "favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Anmelden</a>, um auf diese Funktion zuzugreifen</div>",
162
+ "input.image.altTextPlaceholder": "",
163
+ "input.image.delete": "",
164
+ "input.image.displayAltTextInput": "",
165
+ "input.image.displayUrlInput": "",
166
+ "input.image.dropFileLabel": "",
167
+ "input.image.selectFileLabel": "",
168
+ "input.image.uploadErrorLabel": "",
169
+ "input.image.uploadErrorRetry": "",
170
+ "input.image.uploadProgressCancel": "",
171
+ "input.image.uploadProgressLabel": "",
162
172
  "language.ca": "Katalanisch",
163
173
  "language.cs": "Tschechisch",
164
174
  "language.de": "Deutsch",
@@ -159,6 +159,16 @@
159
159
  "facets.block.title.tag.default": "Tag",
160
160
  "facets.block.title.th_regions_tree.default": "Regions",
161
161
  "favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Login</a> to access this feature</div>",
162
+ "input.image.altTextPlaceholder": "Image alternate text",
163
+ "input.image.delete": "Delete",
164
+ "input.image.displayAltTextInput": "Alternate text",
165
+ "input.image.displayUrlInput": "Enter a URL",
166
+ "input.image.dropFileLabel": "or drop it here",
167
+ "input.image.selectFileLabel": "Select an image",
168
+ "input.image.uploadErrorLabel": "The image could not be uploaded",
169
+ "input.image.uploadErrorRetry": "Retry",
170
+ "input.image.uploadProgressCancel": "Cancel",
171
+ "input.image.uploadProgressLabel": "Upload in progress...",
162
172
  "language.ca": "Catalan",
163
173
  "language.cs": "Czech",
164
174
  "language.de": "German",
@@ -159,6 +159,16 @@
159
159
  "facets.block.title.tag.default": "",
160
160
  "facets.block.title.th_regions_tree.default": "",
161
161
  "favorite.not.authenticated.tooltip": "",
162
+ "input.image.altTextPlaceholder": "",
163
+ "input.image.delete": "",
164
+ "input.image.displayAltTextInput": "",
165
+ "input.image.displayUrlInput": "",
166
+ "input.image.dropFileLabel": "",
167
+ "input.image.selectFileLabel": "",
168
+ "input.image.uploadErrorLabel": "",
169
+ "input.image.uploadErrorRetry": "",
170
+ "input.image.uploadProgressCancel": "",
171
+ "input.image.uploadProgressLabel": "",
162
172
  "language.ca": "Catalán",
163
173
  "language.cs": "Checo",
164
174
  "language.de": "Alemán",
@@ -159,6 +159,16 @@
159
159
  "facets.block.title.tag.default": "Tag",
160
160
  "facets.block.title.th_regions_tree.default": "Régions",
161
161
  "favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Connectez-vous</a> pour avoir accès à cette fonctionnalité</div>",
162
+ "input.image.altTextPlaceholder": "Texte alternatif de l'image",
163
+ "input.image.delete": "Supprimer",
164
+ "input.image.displayAltTextInput": "Texte alternatif",
165
+ "input.image.displayUrlInput": "Saisir une URL",
166
+ "input.image.dropFileLabel": "ou la glisser ici",
167
+ "input.image.selectFileLabel": "Sélectionner une image",
168
+ "input.image.uploadErrorLabel": "L'image n'a pas pu être chargée",
169
+ "input.image.uploadErrorRetry": "Réessayer",
170
+ "input.image.uploadProgressCancel": "Annuler",
171
+ "input.image.uploadProgressLabel": "Chargement en cours...",
162
172
  "language.ca": "Catalan",
163
173
  "language.cs": "Tchèque",
164
174
  "language.de": "Allemand",
@@ -159,6 +159,16 @@
159
159
  "facets.block.title.tag.default": "Tag",
160
160
  "facets.block.title.th_regions_tree.default": "Regioni",
161
161
  "favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Login</a> per accedere a questa funzionalità</div>",
162
+ "input.image.altTextPlaceholder": "",
163
+ "input.image.delete": "",
164
+ "input.image.displayAltTextInput": "",
165
+ "input.image.displayUrlInput": "",
166
+ "input.image.dropFileLabel": "",
167
+ "input.image.selectFileLabel": "",
168
+ "input.image.uploadErrorLabel": "",
169
+ "input.image.uploadErrorRetry": "",
170
+ "input.image.uploadProgressCancel": "",
171
+ "input.image.uploadProgressLabel": "",
162
172
  "language.ca": "Catalano",
163
173
  "language.cs": "Ceco",
164
174
  "language.de": "Tedesco",
@@ -159,6 +159,16 @@
159
159
  "facets.block.title.tag.default": "",
160
160
  "facets.block.title.th_regions_tree.default": "",
161
161
  "favorite.not.authenticated.tooltip": "",
162
+ "input.image.altTextPlaceholder": "",
163
+ "input.image.delete": "",
164
+ "input.image.displayAltTextInput": "",
165
+ "input.image.displayUrlInput": "",
166
+ "input.image.dropFileLabel": "",
167
+ "input.image.selectFileLabel": "",
168
+ "input.image.uploadErrorLabel": "",
169
+ "input.image.uploadErrorRetry": "",
170
+ "input.image.uploadProgressCancel": "",
171
+ "input.image.uploadProgressLabel": "",
162
172
  "language.ca": "Catalaans",
163
173
  "language.cs": "Tsjechisch",
164
174
  "language.de": "Duits",
@@ -159,6 +159,16 @@
159
159
  "facets.block.title.tag.default": "",
160
160
  "facets.block.title.th_regions_tree.default": "",
161
161
  "favorite.not.authenticated.tooltip": "",
162
+ "input.image.altTextPlaceholder": "",
163
+ "input.image.delete": "",
164
+ "input.image.displayAltTextInput": "",
165
+ "input.image.displayUrlInput": "",
166
+ "input.image.dropFileLabel": "",
167
+ "input.image.selectFileLabel": "",
168
+ "input.image.uploadErrorLabel": "",
169
+ "input.image.uploadErrorRetry": "",
170
+ "input.image.uploadProgressCancel": "",
171
+ "input.image.uploadProgressLabel": "",
162
172
  "language.ca": "Catalão",
163
173
  "language.cs": "Tcheco",
164
174
  "language.de": "Alemão",