@tilde-nlp/ngx-common 6.0.38 → 6.0.39

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.
@@ -64,6 +64,17 @@ function FileUploadComponent_ng_template_3_span_9_Template(rf, ctx) { if (rf & 1
64
64
  const ctx_r1 = i0.ɵɵnextContext(2);
65
65
  i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(1, 1, "FILE_UPLOAD.LIMITS_MB", i0.ɵɵpureFunction1(4, _c2, ctx_r1.maxSizeLabel)), i0.ɵɵsanitizeHtml);
66
66
  } }
67
+ function FileUploadComponent_ng_template_3_Conditional_11_Template(rf, ctx) { if (rf & 1) {
68
+ const _r8 = i0.ɵɵgetCurrentView();
69
+ i0.ɵɵelementStart(0, "a", 20);
70
+ i0.ɵɵlistener("click", function FileUploadComponent_ng_template_3_Conditional_11_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openSupportedFormatModal()); });
71
+ i0.ɵɵtext(1);
72
+ i0.ɵɵelementEnd();
73
+ } if (rf & 2) {
74
+ const ctx_r1 = i0.ɵɵnextContext(2);
75
+ i0.ɵɵadvance();
76
+ i0.ɵɵtextInterpolate(ctx_r1.openExtensionPopupLabel);
77
+ } }
67
78
  function FileUploadComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
68
79
  const _r5 = i0.ɵɵgetCurrentView();
69
80
  i0.ɵɵelementStart(0, "div", 10);
@@ -79,10 +90,8 @@ function FileUploadComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
79
90
  i0.ɵɵtemplate(8, FileUploadComponent_ng_template_3_span_8_Template, 2, 2, "span", 16)(9, FileUploadComponent_ng_template_3_span_9_Template, 2, 6, "span", 17);
80
91
  i0.ɵɵtext(10, ") ");
81
92
  i0.ɵɵelementEnd();
82
- i0.ɵɵelementStart(11, "a", 18);
83
- i0.ɵɵlistener("click", function FileUploadComponent_ng_template_3_Template_a_click_11_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openSupportedFormatModal()); });
84
- i0.ɵɵtext(12);
85
- i0.ɵɵelementEnd()()();
93
+ i0.ɵɵtemplate(11, FileUploadComponent_ng_template_3_Conditional_11_Template, 2, 1, "a", 18);
94
+ i0.ɵɵelementEnd()();
86
95
  } if (rf & 2) {
87
96
  const ctx_r1 = i0.ɵɵnextContext();
88
97
  i0.ɵɵclassProp("disabled-upload-zone", ctx_r1.disabled);
@@ -94,8 +103,8 @@ function FileUploadComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
94
103
  i0.ɵɵproperty("ngForOf", ctx_r1.accept);
95
104
  i0.ɵɵadvance();
96
105
  i0.ɵɵproperty("ngIf", ctx_r1.maxSize);
97
- i0.ɵɵadvance(3);
98
- i0.ɵɵtextInterpolate(ctx_r1.openExtensionPopupLabel);
106
+ i0.ɵɵadvance(2);
107
+ i0.ɵɵconditional(ctx_r1.accept.length > ctx_r1.minSupportedFormatCount ? 11 : -1);
99
108
  } }
100
109
  export class FileUploadComponent {
101
110
  set accept(val) {
@@ -111,6 +120,7 @@ export class FileUploadComponent {
111
120
  this._accept = [];
112
121
  this.useCompactUpload = true;
113
122
  this.multiple = false;
123
+ this.minSupportedFormatCount = 9;
114
124
  this.#dialog = inject(MatDialog);
115
125
  this.#icon = inject(IconService);
116
126
  this.#icon.registerIcons({ FILE_UPLOAD_ICON });
@@ -189,29 +199,29 @@ export class FileUploadComponent {
189
199
  } if (rf & 2) {
190
200
  let _t;
191
201
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.fileInput = _t.first);
192
- } }, inputs: { accept: "accept", useCompactUpload: "useCompactUpload", maxSize: "maxSize", multiple: "multiple", filePreviewProgress: "filePreviewProgress", allowEmpty: "allowEmpty", disabled: "disabled", dragZoneLabel: "dragZoneLabel", uploadIconName: "uploadIconName", uploadButtonLabel: "uploadButtonLabel", openExtensionPopupLabel: "openExtensionPopupLabel", extendedAcceptList: "extendedAcceptList" }, outputs: { fileChange: "fileChange", errorEvent: "errorEvent" }, ngContentSelectors: _c1, decls: 7, vars: 8, consts: [["regularUpload", ""], ["fileInput", ""], ["inputButton", ""], [1, "file-upload", 3, "ngClass.lt-sm"], ["color", "primary", "class", "tld-file-upload-progress", 3, "value", 4, "ngIf"], [4, "ngIf", "ngIfElse"], ["type", "file", "name", "files", 1, "native-file-input", 3, "change", "accept", "multiple"], ["color", "primary", 1, "tld-file-upload-progress", 3, "value"], ["tldDragAndDrop", "", "mat-button", "", "type", "button", 1, "upload-button", "text-l", 3, "fileDropped", "click", "disabled"], [4, "ngIf"], ["tldDragAndDrop", "", 1, "upload-zone", 3, "fileDropped"], ["svgIcon", "file_upload_icon"], [1, "upload-zone-labels"], ["color", "primary-accent-darker", 1, "file-upload--btn", 3, "click"], ["fxHide.lt-sm", "", 1, "upload-label", 3, "innerHTML"], [1, "upload-zone-formats"], [4, "ngFor", "ngForOf"], [3, "innerHTML", 4, "ngIf"], [1, "supported-formats-btn", 3, "click"], [3, "innerHTML"]], template: function FileUploadComponent_Template(rf, ctx) { if (rf & 1) {
202
+ } }, inputs: { accept: "accept", useCompactUpload: "useCompactUpload", maxSize: "maxSize", multiple: "multiple", filePreviewProgress: "filePreviewProgress", allowEmpty: "allowEmpty", disabled: "disabled", dragZoneLabel: "dragZoneLabel", uploadIconName: "uploadIconName", uploadButtonLabel: "uploadButtonLabel", openExtensionPopupLabel: "openExtensionPopupLabel", minSupportedFormatCount: "minSupportedFormatCount", extendedAcceptList: "extendedAcceptList" }, outputs: { fileChange: "fileChange", errorEvent: "errorEvent" }, ngContentSelectors: _c1, decls: 7, vars: 8, consts: [["regularUpload", ""], ["fileInput", ""], ["inputButton", ""], [1, "file-upload", 3, "ngClass.lt-sm"], ["color", "primary", "class", "tld-file-upload-progress", 3, "value", 4, "ngIf"], [4, "ngIf", "ngIfElse"], ["type", "file", "name", "files", 1, "native-file-input", 3, "change", "accept", "multiple"], ["color", "primary", 1, "tld-file-upload-progress", 3, "value"], ["tldDragAndDrop", "", "mat-button", "", "type", "button", 1, "upload-button", "text-l", 3, "fileDropped", "click", "disabled"], [4, "ngIf"], ["tldDragAndDrop", "", 1, "upload-zone", 3, "fileDropped"], ["svgIcon", "file_upload_icon"], [1, "upload-zone-labels"], ["color", "primary-accent-darker", 1, "file-upload--btn", 3, "click"], ["fxHide.lt-sm", "", 1, "upload-label", 3, "innerHTML"], [1, "upload-zone-formats"], [4, "ngFor", "ngForOf"], [3, "innerHTML", 4, "ngIf"], [1, "supported-formats-btn"], [3, "innerHTML"], [1, "supported-formats-btn", 3, "click"]], template: function FileUploadComponent_Template(rf, ctx) { if (rf & 1) {
193
203
  const _r1 = i0.ɵɵgetCurrentView();
194
204
  i0.ɵɵprojectionDef();
195
205
  i0.ɵɵelementStart(0, "div", 3);
196
- i0.ɵɵtemplate(1, FileUploadComponent_mat_progress_bar_1_Template, 1, 1, "mat-progress-bar", 4)(2, FileUploadComponent_ng_container_2_Template, 5, 2, "ng-container", 5)(3, FileUploadComponent_ng_template_3_Template, 13, 7, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
206
+ i0.ɵɵtemplate(1, FileUploadComponent_mat_progress_bar_1_Template, 1, 1, "mat-progress-bar", 4)(2, FileUploadComponent_ng_container_2_Template, 5, 2, "ng-container", 5)(3, FileUploadComponent_ng_template_3_Template, 12, 7, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
197
207
  i0.ɵɵelementStart(5, "input", 6, 1);
198
208
  i0.ɵɵlistener("change", function FileUploadComponent_Template_input_change_5_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.handleFileInput($event)); });
199
209
  i0.ɵɵelementEnd()();
200
210
  } if (rf & 2) {
201
- const regularUpload_r8 = i0.ɵɵreference(4);
211
+ const regularUpload_r9 = i0.ɵɵreference(4);
202
212
  i0.ɵɵclassProp("disabled", ctx.disabled);
203
213
  i0.ɵɵproperty("ngClass.lt-sm", "file-upload-mobile");
204
214
  i0.ɵɵadvance();
205
215
  i0.ɵɵproperty("ngIf", ctx.filePreviewProgress);
206
216
  i0.ɵɵadvance();
207
- i0.ɵɵproperty("ngIf", ctx.useCompactUpload)("ngIfElse", regularUpload_r8);
217
+ i0.ɵɵproperty("ngIf", ctx.useCompactUpload)("ngIfElse", regularUpload_r9);
208
218
  i0.ɵɵadvance(3);
209
219
  i0.ɵɵproperty("accept", ctx.allowedExtensions)("multiple", ctx.multiple);
210
220
  } }, dependencies: [i1.NgForOf, i1.NgIf, i2.MatProgressBar, i3.DefaultShowHideDirective, i3.DefaultClassDirective, i4.MatButton, i5.DragAndDropDirective, i6.MatIcon, i7.TranslatePipe], styles: ["[_nghost-%COMP%]{width:100%}.file-upload[_ngcontent-%COMP%]{display:flex;flex-direction:column;justify-content:center;text-align:center}.file-upload[_ngcontent-%COMP%] .upload-button[_ngcontent-%COMP%], .file-upload[_ngcontent-%COMP%] .upload-zone[_ngcontent-%COMP%]{display:flex;border-radius:16px;border:1px dashed var(--base-65)}.file-upload[_ngcontent-%COMP%] .upload-button[_ngcontent-%COMP%]{padding:0;align-items:start;justify-content:start;min-height:fit-content;padding:15px 20px!important}.file-upload[_ngcontent-%COMP%] .upload-zone[_ngcontent-%COMP%]{flex-direction:column;justify-content:center;align-items:center;max-width:600px;width:100%;padding:42px 0}.file-upload[_ngcontent-%COMP%] .upload-zone-labels[_ngcontent-%COMP%]{margin-top:10px;font-size:16px;font-weight:600;line-height:24px;text-align:center}.file-upload[_ngcontent-%COMP%] .upload-zone-labels[_ngcontent-%COMP%] .upload-zone-formats[_ngcontent-%COMP%]{font-weight:400}.file-upload[_ngcontent-%COMP%] .supported-formats-btn[_ngcontent-%COMP%]{cursor:pointer;color:var(--primary-accent-darker);font-weight:400}.file-upload[_ngcontent-%COMP%] .disabled-upload-zone[_ngcontent-%COMP%]{cursor:not-allowed}.file-upload[_ngcontent-%COMP%] .file-upload--btn[_ngcontent-%COMP%], .file-upload[_ngcontent-%COMP%] .upload-label[_ngcontent-%COMP%]:not(.file-upload-mobile){margin-top:10px}.file-upload[_ngcontent-%COMP%] .file-upload--btn[_ngcontent-%COMP%]{cursor:pointer;align-self:center;max-width:fit-content;color:var(--primary-accent-darker)}.file-upload[_ngcontent-%COMP%] .file-upload--btn[_ngcontent-%COMP%]:hover{text-decoration:underline}.file-upload[_ngcontent-%COMP%] .upload-zone-formats[_ngcontent-%COMP%]{margin:10px 0 4px;color:var(--base-40)}.file-upload-mobile[_ngcontent-%COMP%] .upload-button[_ngcontent-%COMP%]{border:1px solid var(--base-65);padding:10px 15px!important}.disabled[_ngcontent-%COMP%] .file-upload--btn[_ngcontent-%COMP%]{pointer-events:none!important;text-decoration:none!important}.native-file-input[_ngcontent-%COMP%]{display:none}"] }); }
211
221
  }
212
222
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FileUploadComponent, [{
213
223
  type: Component,
214
- args: [{ selector: 'lib-file-upload', template: "<div class=\"file-upload\" [ngClass.lt-sm]=\"'file-upload-mobile'\" [class.disabled]=\"disabled\">\r\n <mat-progress-bar \r\n *ngIf=\"filePreviewProgress\"\r\n color=\"primary\" \r\n class=\"tld-file-upload-progress\" \r\n [value]=\"filePreviewProgress\"\r\n >\r\n </mat-progress-bar>\r\n\r\n <ng-container *ngIf=\"useCompactUpload; else regularUpload\">\r\n <button tldDragAndDrop #inputButton mat-button (fileDropped)=\"onFileDrop($event)\" [disabled]=\"disabled\" type=\"button\"\r\n (click)=\"fileInput.click()\" class=\"upload-button text-l\"\r\n >\r\n <mat-icon *ngIf=\"uploadIconName\">{{uploadIconName}}</mat-icon>\r\n <ng-content></ng-content>\r\n </button>\r\n </ng-container>\r\n\r\n <ng-template #regularUpload>\r\n <div class=\"upload-zone\" tldDragAndDrop (fileDropped)=\"onFileDrop($event)\" [class.disabled-upload-zone]=\"disabled\">\r\n <mat-icon svgIcon=\"file_upload_icon\"></mat-icon>\r\n\r\n \r\n <div class=\"upload-zone-labels\">\r\n <a color=\"primary-accent-darker\" class=\"file-upload--btn\" (click)=\"fileInput.click()\">{{ uploadButtonLabel }}</a>\r\n \r\n <span fxHide.lt-sm class=\"upload-label\" [innerHTML]=\"dragZoneLabel\"></span>\r\n \r\n <p class=\"upload-zone-formats\">\r\n (<span *ngFor=\"let format of accept; let i = index\"\r\n >{{ format\r\n }}{{ accept.length - 1 === i ? \".\" : \", \" }}</span\r\n >\r\n\r\n <span *ngIf=\"maxSize\" [innerHTML]=\"'FILE_UPLOAD.LIMITS_MB' | translate: { maxSize: maxSizeLabel }\"></span>)\r\n </p>\r\n \r\n <a class=\"supported-formats-btn\" (click)=\"openSupportedFormatModal()\">{{openExtensionPopupLabel}}</a>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<input \r\n #fileInput \r\n type=\"file\" \r\n name=\"files\" \r\n class=\"native-file-input\"\r\n [accept]=\"allowedExtensions\" \r\n [multiple]=\"multiple\" \r\n (change)=\"handleFileInput($event)\" \r\n/>\r\n", styles: [":host{width:100%}.file-upload{display:flex;flex-direction:column;justify-content:center;text-align:center}.file-upload .upload-button,.file-upload .upload-zone{display:flex;border-radius:16px;border:1px dashed var(--base-65)}.file-upload .upload-button{padding:0;align-items:start;justify-content:start;min-height:fit-content;padding:15px 20px!important}.file-upload .upload-zone{flex-direction:column;justify-content:center;align-items:center;max-width:600px;width:100%;padding:42px 0}.file-upload .upload-zone-labels{margin-top:10px;font-size:16px;font-weight:600;line-height:24px;text-align:center}.file-upload .upload-zone-labels .upload-zone-formats{font-weight:400}.file-upload .supported-formats-btn{cursor:pointer;color:var(--primary-accent-darker);font-weight:400}.file-upload .disabled-upload-zone{cursor:not-allowed}.file-upload .file-upload--btn,.file-upload .upload-label:not(.file-upload-mobile){margin-top:10px}.file-upload .file-upload--btn{cursor:pointer;align-self:center;max-width:fit-content;color:var(--primary-accent-darker)}.file-upload .file-upload--btn:hover{text-decoration:underline}.file-upload .upload-zone-formats{margin:10px 0 4px;color:var(--base-40)}.file-upload-mobile .upload-button{border:1px solid var(--base-65);padding:10px 15px!important}.disabled .file-upload--btn{pointer-events:none!important;text-decoration:none!important}.native-file-input{display:none}\n"] }]
224
+ args: [{ selector: 'lib-file-upload', template: "<div class=\"file-upload\" [ngClass.lt-sm]=\"'file-upload-mobile'\" [class.disabled]=\"disabled\">\r\n <mat-progress-bar \r\n *ngIf=\"filePreviewProgress\"\r\n color=\"primary\" \r\n class=\"tld-file-upload-progress\" \r\n [value]=\"filePreviewProgress\"\r\n >\r\n </mat-progress-bar>\r\n\r\n <ng-container *ngIf=\"useCompactUpload; else regularUpload\">\r\n <button tldDragAndDrop #inputButton mat-button (fileDropped)=\"onFileDrop($event)\" [disabled]=\"disabled\" type=\"button\"\r\n (click)=\"fileInput.click()\" class=\"upload-button text-l\"\r\n >\r\n <mat-icon *ngIf=\"uploadIconName\">{{uploadIconName}}</mat-icon>\r\n <ng-content></ng-content>\r\n </button>\r\n </ng-container>\r\n\r\n <ng-template #regularUpload>\r\n <div class=\"upload-zone\" tldDragAndDrop (fileDropped)=\"onFileDrop($event)\" [class.disabled-upload-zone]=\"disabled\">\r\n <mat-icon svgIcon=\"file_upload_icon\"></mat-icon>\r\n\r\n \r\n <div class=\"upload-zone-labels\">\r\n <a color=\"primary-accent-darker\" class=\"file-upload--btn\" (click)=\"fileInput.click()\">{{ uploadButtonLabel }}</a>\r\n \r\n <span fxHide.lt-sm class=\"upload-label\" [innerHTML]=\"dragZoneLabel\"></span>\r\n \r\n <p class=\"upload-zone-formats\">\r\n (<span *ngFor=\"let format of accept; let i = index\"\r\n >{{ format\r\n }}{{ accept.length - 1 === i ? \".\" : \", \" }}</span\r\n >\r\n\r\n <span *ngIf=\"maxSize\" [innerHTML]=\"'FILE_UPLOAD.LIMITS_MB' | translate: { maxSize: maxSizeLabel }\"></span>)\r\n </p>\r\n \r\n @if (accept.length > minSupportedFormatCount) {\r\n <a class=\"supported-formats-btn\" (click)=\"openSupportedFormatModal()\">{{openExtensionPopupLabel}}</a>\r\n }\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<input \r\n #fileInput \r\n type=\"file\" \r\n name=\"files\" \r\n class=\"native-file-input\"\r\n [accept]=\"allowedExtensions\" \r\n [multiple]=\"multiple\" \r\n (change)=\"handleFileInput($event)\" \r\n/>\r\n", styles: [":host{width:100%}.file-upload{display:flex;flex-direction:column;justify-content:center;text-align:center}.file-upload .upload-button,.file-upload .upload-zone{display:flex;border-radius:16px;border:1px dashed var(--base-65)}.file-upload .upload-button{padding:0;align-items:start;justify-content:start;min-height:fit-content;padding:15px 20px!important}.file-upload .upload-zone{flex-direction:column;justify-content:center;align-items:center;max-width:600px;width:100%;padding:42px 0}.file-upload .upload-zone-labels{margin-top:10px;font-size:16px;font-weight:600;line-height:24px;text-align:center}.file-upload .upload-zone-labels .upload-zone-formats{font-weight:400}.file-upload .supported-formats-btn{cursor:pointer;color:var(--primary-accent-darker);font-weight:400}.file-upload .disabled-upload-zone{cursor:not-allowed}.file-upload .file-upload--btn,.file-upload .upload-label:not(.file-upload-mobile){margin-top:10px}.file-upload .file-upload--btn{cursor:pointer;align-self:center;max-width:fit-content;color:var(--primary-accent-darker)}.file-upload .file-upload--btn:hover{text-decoration:underline}.file-upload .upload-zone-formats{margin:10px 0 4px;color:var(--base-40)}.file-upload-mobile .upload-button{border:1px solid var(--base-65);padding:10px 15px!important}.disabled .file-upload--btn{pointer-events:none!important;text-decoration:none!important}.native-file-input{display:none}\n"] }]
215
225
  }], () => [], { fileInput: [{
216
226
  type: ViewChild,
217
227
  args: ['fileInput']
@@ -241,8 +251,10 @@ export class FileUploadComponent {
241
251
  type: Input
242
252
  }], openExtensionPopupLabel: [{
243
253
  type: Input
254
+ }], minSupportedFormatCount: [{
255
+ type: Input
244
256
  }], extendedAcceptList: [{
245
257
  type: Input
246
258
  }] }); })();
247
259
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FileUploadComponent, { className: "FileUploadComponent", filePath: "lib\\file-upload\\file-upload.component.ts", lineNumber: 14 }); })();
248
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbW1vbi9zcmMvbGliL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21tb24vc3JjL2xpYi9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7Ozs7Ozs7SUNMM0Qsc0NBTW1COzs7SUFGakIsa0RBQTZCOzs7SUFRM0IsZ0NBQWlDO0lBQUEsWUFBa0I7SUFBQSxpQkFBVzs7O0lBQTdCLGNBQWtCO0lBQWxCLDJDQUFrQjs7OztJQUp2RCw2QkFBMkQ7SUFDekQsb0NBRUM7SUFEQyxBQUQ2QywwTUFBZSx5QkFBa0IsS0FBQyxvTUFDdEUsb0JBQWlCLEtBQUM7SUFFM0IsNkZBQWlDO0lBQ2pDLGtCQUF5QjtJQUMzQixpQkFBUzs7OztJQUx5RSxjQUFxQjtJQUFyQiwwQ0FBcUI7SUFHMUYsZUFBb0I7SUFBcEIsNENBQW9COzs7SUFnQjFCLDRCQUNFO0lBQUEsWUFDMkM7SUFBQSxpQkFDN0M7Ozs7O0lBRkUsY0FDMkM7SUFE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RUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLHVDQUF1QyxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyw4QkFBOEIsQ0FBQztRQUNqTCxDQUFDO0lBQ0gsQ0FBQztvSEFuSFUsbUJBQW1CO29FQUFuQixtQkFBbUI7Ozs7Ozs7O1lDYmhDLDhCQUE0RjtZQWtCMUYsQUFUQSxBQVJBLDhGQUtHLHlFQUd3RCx5R0FTL0I7WUF3QjlCLG1DQVFFO1lBREEsNklBQVUsMkJBQXVCLEtBQUM7WUFQcEMsaUJBUUUsRUFsRDBGOzs7WUFBNUIsd0NBQTJCO1lBQWxFLG9EQUFzQztZQUUxRCxjQUF5QjtZQUF6Qiw4Q0FBeUI7WUFPYixjQUF3QjtZQUFBLEFBQXhCLDJDQUF3Qiw4QkFBa0I7WUFzQ3pELGVBQTRCO1lBQzVCLEFBREEsOENBQTRCLDBCQUNQOzs7aUZEbkNWLG1CQUFtQjtjQUwvQixTQUFTOzJCQUNFLGlCQUFpQjtvQkFLSCxTQUFTO2tCQUFoQyxTQUFTO21CQUFDLFdBQVc7WUFFWixVQUFVO2tCQUFuQixNQUFNO1lBQ0csVUFBVTtrQkFBbkIsTUFBTTtZQUVNLE1BQU07a0JBQWxCLEtBQUs7WUFLRyxnQkFBZ0I7a0JBQXhCLEtBQUs7WUFFRyxPQUFPO2tCQUFmLEtBQUs7WUFDRyxRQUFRO2tCQUFoQixLQUFLO1lBQ0csbUJBQW1CO2tCQUEzQixLQUFLO1lBQ0csVUFBVTtrQkFBbEIsS0FBSztZQUNHLFFBQVE7a0JBQWhCLEtBQUs7WUFDRyxhQUFhO2tCQUFyQixLQUFLO1lBQ0csY0FBYztrQkFBdEIsS0FBSztZQUNHLGlCQUFpQjtrQkFBekIsS0FBSztZQUNHLHVCQUF1QjtrQkFBL0IsS0FBSztZQUdHLGtCQUFrQjtrQkFBMUIsS0FBSzs7a0ZBeEJLLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWRFcnJvclR5cGVFbnVtIH0gZnJvbSAnLi9tb2RlbHMvZmlsZS11cGxvYWQtZXJyb3ItdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZEVycm9yIH0gZnJvbSAnLi9tb2RlbHMvZmlsZS11cGxvYWQtZXJyb3IubW9kZWwnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBFeHRlbnNpb25EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9leHRlbnNpb24tZGlhbG9nJztcclxuaW1wb3J0IHsgSWNvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEZJTEVfVVBMT0FEX0lDT04gfSBmcm9tICcuL21vZGVscy9maWxlLXVwbG9hZC5pY29uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWZpbGUtdXBsb2FkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbGVVcGxvYWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIGZpbGVJbnB1dCE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBPdXRwdXQoKSBmaWxlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RmlsZVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZVtdPigpO1xyXG4gIEBPdXRwdXQoKSBlcnJvckV2ZW50OiBFdmVudEVtaXR0ZXI8RmlsZVVwbG9hZEVycm9yPiA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZVVwbG9hZEVycm9yPigpO1xyXG4gIHByaXZhdGUgX2FjY2VwdDogc3RyaW5nW10gPSBbXTtcclxuICBASW5wdXQoKSBzZXQgYWNjZXB0KHZhbDogc3RyaW5nW10pIHtcclxuICAgIHRoaXMuX2FjY2VwdCA9IHZhbDtcclxuICAgIHRoaXMuYWxsb3dlZEV4dGVuc2lvbnMgPSB2YWwgPyB2YWwuam9pbihcIixcIikgOiBcIlwiO1xyXG4gIH1cclxuICBnZXQgYWNjZXB0KCkgeyByZXR1cm4gdGhpcy5fYWNjZXB0IH1cclxuICBASW5wdXQoKSB1c2VDb21wYWN0VXBsb2FkID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KCkgbWF4U2l6ZSE6IG51bWJlcjtcclxuICBASW5wdXQoKSBtdWx0aXBsZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGZpbGVQcmV2aWV3UHJvZ3Jlc3MhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgYWxsb3dFbXB0eSE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZGlzYWJsZWQhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGRyYWdab25lTGFiZWwhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdXBsb2FkSWNvbk5hbWUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdXBsb2FkQnV0dG9uTGFiZWwhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgb3BlbkV4dGVuc2lvblBvcHVwTGFiZWwhOiBzdHJpbmc7XHJcblxyXG4gIC8qKiBzYW1lIGFzIGFjY2VwdCBidXQgZm9yIHJlZ2lzdGVyZWQgdXNlcnMuIEl0IGNoYW5nZXMgZXJyb3IgbWVzc2FnZSBpZiBleHRlbnNpb24gaXMgc3VwcG9ydGVkIGZvciByZWdpc3RlcmVkIHVzZXJzLiAqL1xyXG4gIEBJbnB1dCgpIGV4dGVuZGVkQWNjZXB0TGlzdCE6IHN0cmluZ1tdO1xyXG5cclxuICBtYXhTaXplTGFiZWwhOiBzdHJpbmc7XHJcbiAgYWxsb3dlZEV4dGVuc2lvbnMhOiBzdHJpbmc7XHJcblxyXG4gICNkaWFsb2cgPSBpbmplY3QoTWF0RGlhbG9nKTtcclxuICAjaWNvbiA9IGluamVjdChJY29uU2VydmljZSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy4jaWNvbi5yZWdpc3Rlckljb25zKHtGSUxFX1VQTE9BRF9JQ09OfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgdGhpcy5zZXRNYXhTaXplTGFiZWwoKTtcclxuICB9XHJcblxyXG4gIG9wZW5TdXBwb3J0ZWRGb3JtYXRNb2RhbCgpOiB2b2lkIHtcclxuICAgIHRoaXMuI2RpYWxvZy5vcGVuKEV4dGVuc2lvbkRpYWxvZ0NvbXBvbmVudCwge2RhdGE6IHsgZXh0ZW5zaW9uczogdGhpcy5hY2NlcHQubWFwKGl0ZW0gPT4gaXRlbS5yZXBsYWNlKCcuJywgJycpKSB9fSlcclxuICB9XHJcblxyXG4gIGhhbmRsZUZpbGVJbnB1dChldmVudDogRXZlbnQpIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgY29uc3QgZmlsZXMgPSB0YXJnZXQuZmlsZXMgYXMgRmlsZUxpc3Q7XHJcbiAgICB0aGlzLnZhbGlkYXRlKGZpbGVzKTtcclxuICB9XHJcblxyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgb25GaWxlRHJvcChmaWxlczogYW55KSB7XHJcbiAgICB0aGlzLnZhbGlkYXRlKGZpbGVzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0TWF4U2l6ZUxhYmVsKCk6IHZvaWQge1xyXG4gICAgY29uc3QgTUIgPSAxMDI0O1xyXG4gICAgY29uc3Qgc2l6ZUluTUIgPSB0aGlzLm1heFNpemUgLyBNQiAqKiAyO1xyXG5cclxuICAgIGlmIChzaXplSW5NQiA+PSBNQikge1xyXG4gICAgICBjb25zdCBzaXplSW5HQiA9IHNpemVJbk1CIC8gTUI7XHJcbiAgICAgIHRoaXMubWF4U2l6ZUxhYmVsID0gYCR7c2l6ZUluR0J9IEdCYDtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubWF4U2l6ZUxhYmVsID0gYCR7c2l6ZUluTUJ9IE1CYDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW1pdChmaWxlczogRmlsZVtdKSB7XHJcbiAgICBpZiAoZmlsZXMgJiYgZmlsZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmZpbGVDaGFuZ2UuZW1pdChmaWxlcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVtaXRFcnJvcihlcnJvcjogRmlsZVVwbG9hZEVycm9yKSB7XHJcbiAgICB0aGlzLmVycm9yRXZlbnQuZW1pdChlcnJvcik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHZhbGlkYXRlKGZpbGVzOiBGaWxlTGlzdCkge1xyXG4gICAgLy9sZXQgc2l6ZSA9IDA7XHJcbiAgICBjb25zdCB2YWxpZEZpbGVzOiBGaWxlW10gPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgZmlsZSA9IGZpbGVzW2ldO1xyXG4gICAgICBpZiAoIXRoaXMuYWxsb3dFbXB0eSAmJiBmaWxlLnNpemUgPT0gMCkge1xyXG4gICAgICAgIHRoaXMuZW1pdEVycm9yKHsgY29kZTogRmlsZVVwbG9hZEVycm9yVHlwZUVudW0uRklMRV9FTVBUWSwgZXJyb3I6IFwiRmlsZSBpcyBlbXB0eVwiLCBmaWxlTmFtZTogZmlsZS5uYW1lIH0pO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICAvL3NpemUgKz0gZmlsZS5zaXplO1xyXG4gICAgICBjb25zdCBleHRlbnNpb25FcnJvckNvZGUgPSB0aGlzLmdldEV4dGVuc2lvbkVycm9yQ29kZShmaWxlLm5hbWUpO1xyXG4gICAgICBpZiAoZXh0ZW5zaW9uRXJyb3JDb2RlKSB7XHJcbiAgICAgICAgY29uc3QgZXJyb3IgPSB7IGNvZGU6IGV4dGVuc2lvbkVycm9yQ29kZSwgZXJyb3I6IFwiTm90IHZhbGlkIGV4dGVuc2lvbi5cIiwgZmlsZU5hbWU6IGZpbGUubmFtZSB9O1xyXG4gICAgICAgIHRoaXMuZW1pdEVycm9yKGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLm1heFNpemUgJiYgZmlsZS5zaXplID4gdGhpcy5tYXhTaXplKSB7XHJcbiAgICAgICAgY29uc3QgZXJyb3IgPSB7IGNvZGU6IEZpbGVVcGxvYWRFcnJvclR5cGVFbnVtLk1BWF9TSVpFLCBlcnJvcjogXCJNYXhpbXVtIGFsbG93ZWQgZmlsZSBzaXplIGV4Y2VlZGVkLlwiLCBmaWxlTmFtZTogZmlsZS5uYW1lIH07XHJcbiAgICAgICAgdGhpcy5lbWl0RXJyb3IoZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHZhbGlkRmlsZXMucHVzaChmaWxlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZW1pdCh2YWxpZEZpbGVzKTtcclxuICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RXh0ZW5zaW9uRXJyb3JDb2RlKGZpbGVOYW1lOiBzdHJpbmcpOiBGaWxlVXBsb2FkRXJyb3JUeXBlRW51bSB8IG51bGwge1xyXG4gICAgY29uc3QgZXh0ZW5zaW9uID0gZmlsZU5hbWUuc2xpY2UoZmlsZU5hbWUubGFzdEluZGV4T2YoJy4nKSkudG9Mb3dlckNhc2UoKVxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmFjY2VwdC5sZW5ndGggPT0gMCB8fCAodGhpcy5hY2NlcHQubGVuZ3RoID09IDEgJiYgdGhpcy5hY2NlcHRbMF0gPT0gJyonKSB8fCB0aGlzLmFjY2VwdC5pbmNsdWRlcyhleHRlbnNpb24pKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmV4dGVuZGVkQWNjZXB0TGlzdD8uaW5jbHVkZXMoZXh0ZW5zaW9uKSA/IEZpbGVVcGxvYWRFcnJvclR5cGVFbnVtLkZJTEVfVVBMT0FEX1VOU1VQUE9SVEVEX0ZPUk1BVF9SRUdJU1RFUiA6IEZpbGVVcGxvYWRFcnJvclR5cGVFbnVtLkZJTEVfVVBMT0FEX1VOU1VQUE9SVEVEX0ZPUk1BVDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImZpbGUtdXBsb2FkXCIgW25nQ2xhc3MubHQtc21dPVwiJ2ZpbGUtdXBsb2FkLW1vYmlsZSdcIiBbY2xhc3MuZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cclxuICA8bWF0LXByb2dyZXNzLWJhciBcclxuICAgICpuZ0lmPVwiZmlsZVByZXZpZXdQcm9ncmVzc1wiXHJcbiAgICBjb2xvcj1cInByaW1hcnlcIiBcclxuICAgIGNsYXNzPVwidGxkLWZpbGUtdXBsb2FkLXByb2dyZXNzXCIgXHJcbiAgICBbdmFsdWVdPVwiZmlsZVByZXZpZXdQcm9ncmVzc1wiXHJcbiAgICA+XHJcbiAgPC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwidXNlQ29tcGFjdFVwbG9hZDsgZWxzZSByZWd1bGFyVXBsb2FkXCI+XHJcbiAgICA8YnV0dG9uIHRsZERyYWdBbmREcm9wICNpbnB1dEJ1dHRvbiBtYXQtYnV0dG9uIChmaWxlRHJvcHBlZCk9XCJvbkZpbGVEcm9wKCRldmVudClcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCIgY2xhc3M9XCJ1cGxvYWQtYnV0dG9uIHRleHQtbFwiXHJcbiAgICA+XHJcbiAgICAgIDxtYXQtaWNvbiAqbmdJZj1cInVwbG9hZEljb25OYW1lXCI+e3t1cGxvYWRJY29uTmFtZX19PC9tYXQtaWNvbj5cclxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjcmVndWxhclVwbG9hZD5cclxuICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtem9uZVwiIHRsZERyYWdBbmREcm9wIChmaWxlRHJvcHBlZCk9XCJvbkZpbGVEcm9wKCRldmVudClcIiBbY2xhc3MuZGlzYWJsZWQtdXBsb2FkLXpvbmVdPVwiZGlzYWJsZWRcIj5cclxuICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJmaWxlX3VwbG9hZF9pY29uXCI+PC9tYXQtaWNvbj5cclxuXHJcbiAgXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtem9uZS1sYWJlbHNcIj5cclxuICAgICAgICA8YSBjb2xvcj1cInByaW1hcnktYWNjZW50LWRhcmtlclwiIGNsYXNzPVwiZmlsZS11cGxvYWQtLWJ0blwiIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiPnt7IHVwbG9hZEJ1dHRvbkxhYmVsIH19PC9hPlxyXG4gICAgICAgIFxyXG4gICAgICAgIDxzcGFuIGZ4SGlkZS5sdC1zbSBjbGFzcz1cInVwbG9hZC1sYWJlbFwiIFtpbm5lckhUTUxdPVwiZHJhZ1pvbmVMYWJlbFwiPjwvc3Bhbj5cclxuICBcclxuICAgICAgICA8cCBjbGFzcz1cInVwbG9hZC16b25lLWZvcm1hdHNcIj5cclxuICAgICAgICAgICg8c3BhbiAqbmdGb3I9XCJsZXQgZm9ybWF0IG9mIGFjY2VwdDsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICAgID57eyBmb3JtYXRcclxuICAgICAgICAgICAgfX17eyBhY2NlcHQubGVuZ3RoIC0gMSA9PT0gaSA/IFwiLlwiIDogXCIsIFwiIH19PC9zcGFuXHJcbiAgICAgICAgICA+XHJcblxyXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJtYXhTaXplXCIgW2lubmVySFRNTF09XCInRklMRV9VUExPQUQuTElNSVRTX01CJyB8IHRyYW5zbGF0ZTogeyBtYXhTaXplOiBtYXhTaXplTGFiZWwgfVwiPjwvc3Bhbj4pXHJcbiAgICAgICAgPC9wPlxyXG4gIFxyXG4gICAgICAgIDxhIGNsYXNzPVwic3VwcG9ydGVkLWZvcm1hdHMtYnRuXCIgKGNsaWNrKT1cIm9wZW5TdXBwb3J0ZWRGb3JtYXRNb2RhbCgpXCI+e3tvcGVuRXh0ZW5zaW9uUG9wdXBMYWJlbH19PC9hPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPGlucHV0IFxyXG4gICNmaWxlSW5wdXQgXHJcbiAgdHlwZT1cImZpbGVcIiBcclxuICBuYW1lPVwiZmlsZXNcIiBcclxuICBjbGFzcz1cIm5hdGl2ZS1maWxlLWlucHV0XCJcclxuICBbYWNjZXB0XT1cImFsbG93ZWRFeHRlbnNpb25zXCIgXHJcbiAgW211bHRpcGxlXT1cIm11bHRpcGxlXCIgXHJcbiAgKGNoYW5nZSk9XCJoYW5kbGVGaWxlSW5wdXQoJGV2ZW50KVwiIFxyXG4vPlxyXG4iXX0=
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbW1vbi9zcmMvbGliL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21tb24vc3JjL2xpYi9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7Ozs7Ozs7SUNMM0Qsc0NBTW1COzs7SUFGakIsa0RBQTZCOzs7SUFRM0IsZ0NBQWlDO0lBQUEsWUFBa0I7SUFBQSxpQkFBVzs7O0lBQTdCLGNBQWtCO0lBQWxCLDJDQUFrQjs7OztJQUp2RCw2QkFBMkQ7SUFDekQsb0NBRUM7SUFEQyxBQUQ2QywwTUFBZSx5QkFBa0IsS0FBQyxvTUFDdEUsb0JBQWlCLEtBQUM7SUFFM0IsNkZBQWlDO0lBQ2pDLGtCQUF5QjtJQUMzQixpQkFBUzs7OztJQUx5RSxjQUFxQjtJQUFyQiwwQ0FBcUI7SUFHMUYsZUFBb0I7SUFBcEIsNENBQW9COzs7SUFnQjFCLDRCQUNFO0lBQUEsWUFDMkM7SUFBQSxpQkFDN0M7Ozs7O0lBRkUsY0FDMkM7SUFE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WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGaWxlVXBsb2FkRXJyb3JUeXBlRW51bSB9IGZyb20gJy4vbW9kZWxzL2ZpbGUtdXBsb2FkLWVycm9yLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWRFcnJvciB9IGZyb20gJy4vbW9kZWxzL2ZpbGUtdXBsb2FkLWVycm9yLm1vZGVsJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgRXh0ZW5zaW9uRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vZXh0ZW5zaW9uLWRpYWxvZyc7XHJcbmltcG9ydCB7IEljb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBGSUxFX1VQTE9BRF9JQ09OIH0gZnJvbSAnLi9tb2RlbHMvZmlsZS11cGxvYWQuaWNvbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1maWxlLXVwbG9hZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9maWxlLXVwbG9hZC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnKSBmaWxlSW5wdXQhOiBFbGVtZW50UmVmO1xyXG5cclxuICBAT3V0cHV0KCkgZmlsZUNoYW5nZTogRXZlbnRFbWl0dGVyPEZpbGVbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGVbXT4oKTtcclxuICBAT3V0cHV0KCkgZXJyb3JFdmVudDogRXZlbnRFbWl0dGVyPEZpbGVVcGxvYWRFcnJvcj4gPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGVVcGxvYWRFcnJvcj4oKTtcclxuICBwcml2YXRlIF9hY2NlcHQ6IHN0cmluZ1tdID0gW107XHJcbiAgQElucHV0KCkgc2V0IGFjY2VwdCh2YWw6IHN0cmluZ1tdKSB7XHJcbiAgICB0aGlzLl9hY2NlcHQgPSB2YWw7XHJcbiAgICB0aGlzLmFsbG93ZWRFeHRlbnNpb25zID0gdmFsID8gdmFsLmpvaW4oXCIsXCIpIDogXCJcIjtcclxuICB9XHJcbiAgZ2V0IGFjY2VwdCgpIHsgcmV0dXJuIHRoaXMuX2FjY2VwdCB9XHJcbiAgQElucHV0KCkgdXNlQ29tcGFjdFVwbG9hZCA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpIG1heFNpemUhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgbXVsdGlwbGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBmaWxlUHJldmlld1Byb2dyZXNzITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGFsbG93RW1wdHkhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBkcmFnWm9uZUxhYmVsITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHVwbG9hZEljb25OYW1lITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHVwbG9hZEJ1dHRvbkxhYmVsITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG9wZW5FeHRlbnNpb25Qb3B1cExhYmVsITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG1pblN1cHBvcnRlZEZvcm1hdENvdW50OiBudW1iZXIgPSA5O1xyXG5cclxuICAvKiogc2FtZSBhcyBhY2NlcHQgYnV0IGZvciByZWdpc3RlcmVkIHVzZXJzLiBJdCBjaGFuZ2VzIGVycm9yIG1lc3NhZ2UgaWYgZXh0ZW5zaW9uIGlzIHN1cHBvcnRlZCBmb3IgcmVnaXN0ZXJlZCB1c2Vycy4gKi9cclxuICBASW5wdXQoKSBleHRlbmRlZEFjY2VwdExpc3QhOiBzdHJpbmdbXTtcclxuXHJcbiAgbWF4U2l6ZUxhYmVsITogc3RyaW5nO1xyXG4gIGFsbG93ZWRFeHRlbnNpb25zITogc3RyaW5nO1xyXG5cclxuICAjZGlhbG9nID0gaW5qZWN0KE1hdERpYWxvZyk7XHJcbiAgI2ljb24gPSBpbmplY3QoSWNvblNlcnZpY2UpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuI2ljb24ucmVnaXN0ZXJJY29ucyh7RklMRV9VUExPQURfSUNPTn0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgIHRoaXMuc2V0TWF4U2l6ZUxhYmVsKCk7XHJcbiAgfVxyXG5cclxuICBvcGVuU3VwcG9ydGVkRm9ybWF0TW9kYWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLiNkaWFsb2cub3BlbihFeHRlbnNpb25EaWFsb2dDb21wb25lbnQsIHtkYXRhOiB7IGV4dGVuc2lvbnM6IHRoaXMuYWNjZXB0Lm1hcChpdGVtID0+IGl0ZW0ucmVwbGFjZSgnLicsICcnKSkgfX0pXHJcbiAgfVxyXG5cclxuICBoYW5kbGVGaWxlSW5wdXQoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGNvbnN0IGZpbGVzID0gdGFyZ2V0LmZpbGVzIGFzIEZpbGVMaXN0O1xyXG4gICAgdGhpcy52YWxpZGF0ZShmaWxlcyk7XHJcbiAgfVxyXG5cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIG9uRmlsZURyb3AoZmlsZXM6IGFueSkge1xyXG4gICAgdGhpcy52YWxpZGF0ZShmaWxlcyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldE1heFNpemVMYWJlbCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IE1CID0gMTAyNDtcclxuICAgIGNvbnN0IHNpemVJbk1CID0gdGhpcy5tYXhTaXplIC8gTUIgKiogMjtcclxuXHJcbiAgICBpZiAoc2l6ZUluTUIgPj0gTUIpIHtcclxuICAgICAgY29uc3Qgc2l6ZUluR0IgPSBzaXplSW5NQiAvIE1CO1xyXG4gICAgICB0aGlzLm1heFNpemVMYWJlbCA9IGAke3NpemVJbkdCfSBHQmA7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm1heFNpemVMYWJlbCA9IGAke3NpemVJbk1CfSBNQmA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVtaXQoZmlsZXM6IEZpbGVbXSkge1xyXG4gICAgaWYgKGZpbGVzICYmIGZpbGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5maWxlQ2hhbmdlLmVtaXQoZmlsZXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0RXJyb3IoZXJyb3I6IEZpbGVVcGxvYWRFcnJvcikge1xyXG4gICAgdGhpcy5lcnJvckV2ZW50LmVtaXQoZXJyb3IpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB2YWxpZGF0ZShmaWxlczogRmlsZUxpc3QpIHtcclxuICAgIC8vbGV0IHNpemUgPSAwO1xyXG4gICAgY29uc3QgdmFsaWRGaWxlczogRmlsZVtdID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGZpbGUgPSBmaWxlc1tpXTtcclxuICAgICAgaWYgKCF0aGlzLmFsbG93RW1wdHkgJiYgZmlsZS5zaXplID09IDApIHtcclxuICAgICAgICB0aGlzLmVtaXRFcnJvcih7IGNvZGU6IEZpbGVVcGxvYWRFcnJvclR5cGVFbnVtLkZJTEVfRU1QVFksIGVycm9yOiBcIkZpbGUgaXMgZW1wdHlcIiwgZmlsZU5hbWU6IGZpbGUubmFtZSB9KTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgLy9zaXplICs9IGZpbGUuc2l6ZTtcclxuICAgICAgY29uc3QgZXh0ZW5zaW9uRXJyb3JDb2RlID0gdGhpcy5nZXRFeHRlbnNpb25FcnJvckNvZGUoZmlsZS5uYW1lKTtcclxuICAgICAgaWYgKGV4dGVuc2lvbkVycm9yQ29kZSkge1xyXG4gICAgICAgIGNvbnN0IGVycm9yID0geyBjb2RlOiBleHRlbnNpb25FcnJvckNvZGUsIGVycm9yOiBcIk5vdCB2YWxpZCBleHRlbnNpb24uXCIsIGZpbGVOYW1lOiBmaWxlLm5hbWUgfTtcclxuICAgICAgICB0aGlzLmVtaXRFcnJvcihlcnJvcik7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5tYXhTaXplICYmIGZpbGUuc2l6ZSA+IHRoaXMubWF4U2l6ZSkge1xyXG4gICAgICAgIGNvbnN0IGVycm9yID0geyBjb2RlOiBGaWxlVXBsb2FkRXJyb3JUeXBlRW51bS5NQVhfU0laRSwgZXJyb3I6IFwiTWF4aW11bSBhbGxvd2VkIGZpbGUgc2l6ZSBleGNlZWRlZC5cIiwgZmlsZU5hbWU6IGZpbGUubmFtZSB9O1xyXG4gICAgICAgIHRoaXMuZW1pdEVycm9yKGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB2YWxpZEZpbGVzLnB1c2goZmlsZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmVtaXQodmFsaWRGaWxlcyk7XHJcbiAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEV4dGVuc2lvbkVycm9yQ29kZShmaWxlTmFtZTogc3RyaW5nKTogRmlsZVVwbG9hZEVycm9yVHlwZUVudW0gfCBudWxsIHtcclxuICAgIGNvbnN0IGV4dGVuc2lvbiA9IGZpbGVOYW1lLnNsaWNlKGZpbGVOYW1lLmxhc3RJbmRleE9mKCcuJykpLnRvTG93ZXJDYXNlKClcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5hY2NlcHQubGVuZ3RoID09IDAgfHwgKHRoaXMuYWNjZXB0Lmxlbmd0aCA9PSAxICYmIHRoaXMuYWNjZXB0WzBdID09ICcqJykgfHwgdGhpcy5hY2NlcHQuaW5jbHVkZXMoZXh0ZW5zaW9uKSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5leHRlbmRlZEFjY2VwdExpc3Q/LmluY2x1ZGVzKGV4dGVuc2lvbikgPyBGaWxlVXBsb2FkRXJyb3JUeXBlRW51bS5GSUxFX1VQTE9BRF9VTlNVUFBPUlRFRF9GT1JNQVRfUkVHSVNURVIgOiBGaWxlVXBsb2FkRXJyb3JUeXBlRW51bS5GSUxFX1VQTE9BRF9VTlNVUFBPUlRFRF9GT1JNQVQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJmaWxlLXVwbG9hZFwiIFtuZ0NsYXNzLmx0LXNtXT1cIidmaWxlLXVwbG9hZC1tb2JpbGUnXCIgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCI+XHJcbiAgPG1hdC1wcm9ncmVzcy1iYXIgXHJcbiAgICAqbmdJZj1cImZpbGVQcmV2aWV3UHJvZ3Jlc3NcIlxyXG4gICAgY29sb3I9XCJwcmltYXJ5XCIgXHJcbiAgICBjbGFzcz1cInRsZC1maWxlLXVwbG9hZC1wcm9ncmVzc1wiIFxyXG4gICAgW3ZhbHVlXT1cImZpbGVQcmV2aWV3UHJvZ3Jlc3NcIlxyXG4gICAgPlxyXG4gIDwvbWF0LXByb2dyZXNzLWJhcj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInVzZUNvbXBhY3RVcGxvYWQ7IGVsc2UgcmVndWxhclVwbG9hZFwiPlxyXG4gICAgPGJ1dHRvbiB0bGREcmFnQW5kRHJvcCAjaW5wdXRCdXR0b24gbWF0LWJ1dHRvbiAoZmlsZURyb3BwZWQpPVwib25GaWxlRHJvcCgkZXZlbnQpXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiIGNsYXNzPVwidXBsb2FkLWJ1dHRvbiB0ZXh0LWxcIlxyXG4gICAgPlxyXG4gICAgICA8bWF0LWljb24gKm5nSWY9XCJ1cGxvYWRJY29uTmFtZVwiPnt7dXBsb2FkSWNvbk5hbWV9fTwvbWF0LWljb24+XHJcbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI3JlZ3VsYXJVcGxvYWQ+XHJcbiAgICA8ZGl2IGNsYXNzPVwidXBsb2FkLXpvbmVcIiB0bGREcmFnQW5kRHJvcCAoZmlsZURyb3BwZWQpPVwib25GaWxlRHJvcCgkZXZlbnQpXCIgW2NsYXNzLmRpc2FibGVkLXVwbG9hZC16b25lXT1cImRpc2FibGVkXCI+XHJcbiAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZmlsZV91cGxvYWRfaWNvblwiPjwvbWF0LWljb24+XHJcblxyXG4gIFxyXG4gICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkLXpvbmUtbGFiZWxzXCI+XHJcbiAgICAgICAgPGEgY29sb3I9XCJwcmltYXJ5LWFjY2VudC1kYXJrZXJcIiBjbGFzcz1cImZpbGUtdXBsb2FkLS1idG5cIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIj57eyB1cGxvYWRCdXR0b25MYWJlbCB9fTwvYT5cclxuICAgICAgICBcclxuICAgICAgICA8c3BhbiBmeEhpZGUubHQtc20gY2xhc3M9XCJ1cGxvYWQtbGFiZWxcIiBbaW5uZXJIVE1MXT1cImRyYWdab25lTGFiZWxcIj48L3NwYW4+XHJcbiAgXHJcbiAgICAgICAgPHAgY2xhc3M9XCJ1cGxvYWQtem9uZS1mb3JtYXRzXCI+XHJcbiAgICAgICAgICAoPHNwYW4gKm5nRm9yPVwibGV0IGZvcm1hdCBvZiBhY2NlcHQ7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICA+e3sgZm9ybWF0XHJcbiAgICAgICAgICAgIH19e3sgYWNjZXB0Lmxlbmd0aCAtIDEgPT09IGkgPyBcIi5cIiA6IFwiLCBcIiB9fTwvc3BhblxyXG4gICAgICAgICAgPlxyXG5cclxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwibWF4U2l6ZVwiIFtpbm5lckhUTUxdPVwiJ0ZJTEVfVVBMT0FELkxJTUlUU19NQicgfCB0cmFuc2xhdGU6IHsgbWF4U2l6ZTogbWF4U2l6ZUxhYmVsIH1cIj48L3NwYW4+KVxyXG4gICAgICAgIDwvcD5cclxuICBcclxuICAgICAgICBAaWYgKGFjY2VwdC5sZW5ndGggPiBtaW5TdXBwb3J0ZWRGb3JtYXRDb3VudCkge1xyXG4gICAgICAgICAgPGEgY2xhc3M9XCJzdXBwb3J0ZWQtZm9ybWF0cy1idG5cIiAoY2xpY2spPVwib3BlblN1cHBvcnRlZEZvcm1hdE1vZGFsKClcIj57e29wZW5FeHRlbnNpb25Qb3B1cExhYmVsfX08L2E+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPGlucHV0IFxyXG4gICNmaWxlSW5wdXQgXHJcbiAgdHlwZT1cImZpbGVcIiBcclxuICBuYW1lPVwiZmlsZXNcIiBcclxuICBjbGFzcz1cIm5hdGl2ZS1maWxlLWlucHV0XCJcclxuICBbYWNjZXB0XT1cImFsbG93ZWRFeHRlbnNpb25zXCIgXHJcbiAgW211bHRpcGxlXT1cIm11bHRpcGxlXCIgXHJcbiAgKGNoYW5nZSk9XCJoYW5kbGVGaWxlSW5wdXQoJGV2ZW50KVwiIFxyXG4vPlxyXG4iXX0=
@@ -2783,6 +2783,17 @@ function FileUploadComponent_ng_template_3_span_9_Template(rf, ctx) { if (rf & 1
2783
2783
  const ctx_r1 = i0.ɵɵnextContext(2);
2784
2784
  i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(1, 1, "FILE_UPLOAD.LIMITS_MB", i0.ɵɵpureFunction1(4, _c2$2, ctx_r1.maxSizeLabel)), i0.ɵɵsanitizeHtml);
2785
2785
  } }
2786
+ function FileUploadComponent_ng_template_3_Conditional_11_Template(rf, ctx) { if (rf & 1) {
2787
+ const _r8 = i0.ɵɵgetCurrentView();
2788
+ i0.ɵɵelementStart(0, "a", 20);
2789
+ i0.ɵɵlistener("click", function FileUploadComponent_ng_template_3_Conditional_11_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openSupportedFormatModal()); });
2790
+ i0.ɵɵtext(1);
2791
+ i0.ɵɵelementEnd();
2792
+ } if (rf & 2) {
2793
+ const ctx_r1 = i0.ɵɵnextContext(2);
2794
+ i0.ɵɵadvance();
2795
+ i0.ɵɵtextInterpolate(ctx_r1.openExtensionPopupLabel);
2796
+ } }
2786
2797
  function FileUploadComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
2787
2798
  const _r5 = i0.ɵɵgetCurrentView();
2788
2799
  i0.ɵɵelementStart(0, "div", 10);
@@ -2798,10 +2809,8 @@ function FileUploadComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
2798
2809
  i0.ɵɵtemplate(8, FileUploadComponent_ng_template_3_span_8_Template, 2, 2, "span", 16)(9, FileUploadComponent_ng_template_3_span_9_Template, 2, 6, "span", 17);
2799
2810
  i0.ɵɵtext(10, ") ");
2800
2811
  i0.ɵɵelementEnd();
2801
- i0.ɵɵelementStart(11, "a", 18);
2802
- i0.ɵɵlistener("click", function FileUploadComponent_ng_template_3_Template_a_click_11_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openSupportedFormatModal()); });
2803
- i0.ɵɵtext(12);
2804
- i0.ɵɵelementEnd()()();
2812
+ i0.ɵɵtemplate(11, FileUploadComponent_ng_template_3_Conditional_11_Template, 2, 1, "a", 18);
2813
+ i0.ɵɵelementEnd()();
2805
2814
  } if (rf & 2) {
2806
2815
  const ctx_r1 = i0.ɵɵnextContext();
2807
2816
  i0.ɵɵclassProp("disabled-upload-zone", ctx_r1.disabled);
@@ -2813,8 +2822,8 @@ function FileUploadComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
2813
2822
  i0.ɵɵproperty("ngForOf", ctx_r1.accept);
2814
2823
  i0.ɵɵadvance();
2815
2824
  i0.ɵɵproperty("ngIf", ctx_r1.maxSize);
2816
- i0.ɵɵadvance(3);
2817
- i0.ɵɵtextInterpolate(ctx_r1.openExtensionPopupLabel);
2825
+ i0.ɵɵadvance(2);
2826
+ i0.ɵɵconditional(ctx_r1.accept.length > ctx_r1.minSupportedFormatCount ? 11 : -1);
2818
2827
  } }
2819
2828
  class FileUploadComponent {
2820
2829
  set accept(val) {
@@ -2830,6 +2839,7 @@ class FileUploadComponent {
2830
2839
  this._accept = [];
2831
2840
  this.useCompactUpload = true;
2832
2841
  this.multiple = false;
2842
+ this.minSupportedFormatCount = 9;
2833
2843
  this.#dialog = inject(MatDialog);
2834
2844
  this.#icon = inject(IconService);
2835
2845
  this.#icon.registerIcons({ FILE_UPLOAD_ICON });
@@ -2908,29 +2918,29 @@ class FileUploadComponent {
2908
2918
  } if (rf & 2) {
2909
2919
  let _t;
2910
2920
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.fileInput = _t.first);
2911
- } }, inputs: { accept: "accept", useCompactUpload: "useCompactUpload", maxSize: "maxSize", multiple: "multiple", filePreviewProgress: "filePreviewProgress", allowEmpty: "allowEmpty", disabled: "disabled", dragZoneLabel: "dragZoneLabel", uploadIconName: "uploadIconName", uploadButtonLabel: "uploadButtonLabel", openExtensionPopupLabel: "openExtensionPopupLabel", extendedAcceptList: "extendedAcceptList" }, outputs: { fileChange: "fileChange", errorEvent: "errorEvent" }, ngContentSelectors: _c1$5, decls: 7, vars: 8, consts: [["regularUpload", ""], ["fileInput", ""], ["inputButton", ""], [1, "file-upload", 3, "ngClass.lt-sm"], ["color", "primary", "class", "tld-file-upload-progress", 3, "value", 4, "ngIf"], [4, "ngIf", "ngIfElse"], ["type", "file", "name", "files", 1, "native-file-input", 3, "change", "accept", "multiple"], ["color", "primary", 1, "tld-file-upload-progress", 3, "value"], ["tldDragAndDrop", "", "mat-button", "", "type", "button", 1, "upload-button", "text-l", 3, "fileDropped", "click", "disabled"], [4, "ngIf"], ["tldDragAndDrop", "", 1, "upload-zone", 3, "fileDropped"], ["svgIcon", "file_upload_icon"], [1, "upload-zone-labels"], ["color", "primary-accent-darker", 1, "file-upload--btn", 3, "click"], ["fxHide.lt-sm", "", 1, "upload-label", 3, "innerHTML"], [1, "upload-zone-formats"], [4, "ngFor", "ngForOf"], [3, "innerHTML", 4, "ngIf"], [1, "supported-formats-btn", 3, "click"], [3, "innerHTML"]], template: function FileUploadComponent_Template(rf, ctx) { if (rf & 1) {
2921
+ } }, inputs: { accept: "accept", useCompactUpload: "useCompactUpload", maxSize: "maxSize", multiple: "multiple", filePreviewProgress: "filePreviewProgress", allowEmpty: "allowEmpty", disabled: "disabled", dragZoneLabel: "dragZoneLabel", uploadIconName: "uploadIconName", uploadButtonLabel: "uploadButtonLabel", openExtensionPopupLabel: "openExtensionPopupLabel", minSupportedFormatCount: "minSupportedFormatCount", extendedAcceptList: "extendedAcceptList" }, outputs: { fileChange: "fileChange", errorEvent: "errorEvent" }, ngContentSelectors: _c1$5, decls: 7, vars: 8, consts: [["regularUpload", ""], ["fileInput", ""], ["inputButton", ""], [1, "file-upload", 3, "ngClass.lt-sm"], ["color", "primary", "class", "tld-file-upload-progress", 3, "value", 4, "ngIf"], [4, "ngIf", "ngIfElse"], ["type", "file", "name", "files", 1, "native-file-input", 3, "change", "accept", "multiple"], ["color", "primary", 1, "tld-file-upload-progress", 3, "value"], ["tldDragAndDrop", "", "mat-button", "", "type", "button", 1, "upload-button", "text-l", 3, "fileDropped", "click", "disabled"], [4, "ngIf"], ["tldDragAndDrop", "", 1, "upload-zone", 3, "fileDropped"], ["svgIcon", "file_upload_icon"], [1, "upload-zone-labels"], ["color", "primary-accent-darker", 1, "file-upload--btn", 3, "click"], ["fxHide.lt-sm", "", 1, "upload-label", 3, "innerHTML"], [1, "upload-zone-formats"], [4, "ngFor", "ngForOf"], [3, "innerHTML", 4, "ngIf"], [1, "supported-formats-btn"], [3, "innerHTML"], [1, "supported-formats-btn", 3, "click"]], template: function FileUploadComponent_Template(rf, ctx) { if (rf & 1) {
2912
2922
  const _r1 = i0.ɵɵgetCurrentView();
2913
2923
  i0.ɵɵprojectionDef();
2914
2924
  i0.ɵɵelementStart(0, "div", 3);
2915
- i0.ɵɵtemplate(1, FileUploadComponent_mat_progress_bar_1_Template, 1, 1, "mat-progress-bar", 4)(2, FileUploadComponent_ng_container_2_Template, 5, 2, "ng-container", 5)(3, FileUploadComponent_ng_template_3_Template, 13, 7, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
2925
+ i0.ɵɵtemplate(1, FileUploadComponent_mat_progress_bar_1_Template, 1, 1, "mat-progress-bar", 4)(2, FileUploadComponent_ng_container_2_Template, 5, 2, "ng-container", 5)(3, FileUploadComponent_ng_template_3_Template, 12, 7, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
2916
2926
  i0.ɵɵelementStart(5, "input", 6, 1);
2917
2927
  i0.ɵɵlistener("change", function FileUploadComponent_Template_input_change_5_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.handleFileInput($event)); });
2918
2928
  i0.ɵɵelementEnd()();
2919
2929
  } if (rf & 2) {
2920
- const regularUpload_r8 = i0.ɵɵreference(4);
2930
+ const regularUpload_r9 = i0.ɵɵreference(4);
2921
2931
  i0.ɵɵclassProp("disabled", ctx.disabled);
2922
2932
  i0.ɵɵproperty("ngClass.lt-sm", "file-upload-mobile");
2923
2933
  i0.ɵɵadvance();
2924
2934
  i0.ɵɵproperty("ngIf", ctx.filePreviewProgress);
2925
2935
  i0.ɵɵadvance();
2926
- i0.ɵɵproperty("ngIf", ctx.useCompactUpload)("ngIfElse", regularUpload_r8);
2936
+ i0.ɵɵproperty("ngIf", ctx.useCompactUpload)("ngIfElse", regularUpload_r9);
2927
2937
  i0.ɵɵadvance(3);
2928
2938
  i0.ɵɵproperty("accept", ctx.allowedExtensions)("multiple", ctx.multiple);
2929
2939
  } }, dependencies: [i1$2.NgForOf, i1$2.NgIf, i2$3.MatProgressBar, i3.DefaultShowHideDirective, i3.DefaultClassDirective, i5.MatButton, DragAndDropDirective, i1.MatIcon, i1$1.TranslatePipe], styles: ["[_nghost-%COMP%]{width:100%}.file-upload[_ngcontent-%COMP%]{display:flex;flex-direction:column;justify-content:center;text-align:center}.file-upload[_ngcontent-%COMP%] .upload-button[_ngcontent-%COMP%], .file-upload[_ngcontent-%COMP%] .upload-zone[_ngcontent-%COMP%]{display:flex;border-radius:16px;border:1px dashed var(--base-65)}.file-upload[_ngcontent-%COMP%] .upload-button[_ngcontent-%COMP%]{padding:0;align-items:start;justify-content:start;min-height:fit-content;padding:15px 20px!important}.file-upload[_ngcontent-%COMP%] .upload-zone[_ngcontent-%COMP%]{flex-direction:column;justify-content:center;align-items:center;max-width:600px;width:100%;padding:42px 0}.file-upload[_ngcontent-%COMP%] .upload-zone-labels[_ngcontent-%COMP%]{margin-top:10px;font-size:16px;font-weight:600;line-height:24px;text-align:center}.file-upload[_ngcontent-%COMP%] .upload-zone-labels[_ngcontent-%COMP%] .upload-zone-formats[_ngcontent-%COMP%]{font-weight:400}.file-upload[_ngcontent-%COMP%] .supported-formats-btn[_ngcontent-%COMP%]{cursor:pointer;color:var(--primary-accent-darker);font-weight:400}.file-upload[_ngcontent-%COMP%] .disabled-upload-zone[_ngcontent-%COMP%]{cursor:not-allowed}.file-upload[_ngcontent-%COMP%] .file-upload--btn[_ngcontent-%COMP%], .file-upload[_ngcontent-%COMP%] .upload-label[_ngcontent-%COMP%]:not(.file-upload-mobile){margin-top:10px}.file-upload[_ngcontent-%COMP%] .file-upload--btn[_ngcontent-%COMP%]{cursor:pointer;align-self:center;max-width:fit-content;color:var(--primary-accent-darker)}.file-upload[_ngcontent-%COMP%] .file-upload--btn[_ngcontent-%COMP%]:hover{text-decoration:underline}.file-upload[_ngcontent-%COMP%] .upload-zone-formats[_ngcontent-%COMP%]{margin:10px 0 4px;color:var(--base-40)}.file-upload-mobile[_ngcontent-%COMP%] .upload-button[_ngcontent-%COMP%]{border:1px solid var(--base-65);padding:10px 15px!important}.disabled[_ngcontent-%COMP%] .file-upload--btn[_ngcontent-%COMP%]{pointer-events:none!important;text-decoration:none!important}.native-file-input[_ngcontent-%COMP%]{display:none}"] }); }
2930
2940
  }
2931
2941
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FileUploadComponent, [{
2932
2942
  type: Component,
2933
- args: [{ selector: 'lib-file-upload', template: "<div class=\"file-upload\" [ngClass.lt-sm]=\"'file-upload-mobile'\" [class.disabled]=\"disabled\">\r\n <mat-progress-bar \r\n *ngIf=\"filePreviewProgress\"\r\n color=\"primary\" \r\n class=\"tld-file-upload-progress\" \r\n [value]=\"filePreviewProgress\"\r\n >\r\n </mat-progress-bar>\r\n\r\n <ng-container *ngIf=\"useCompactUpload; else regularUpload\">\r\n <button tldDragAndDrop #inputButton mat-button (fileDropped)=\"onFileDrop($event)\" [disabled]=\"disabled\" type=\"button\"\r\n (click)=\"fileInput.click()\" class=\"upload-button text-l\"\r\n >\r\n <mat-icon *ngIf=\"uploadIconName\">{{uploadIconName}}</mat-icon>\r\n <ng-content></ng-content>\r\n </button>\r\n </ng-container>\r\n\r\n <ng-template #regularUpload>\r\n <div class=\"upload-zone\" tldDragAndDrop (fileDropped)=\"onFileDrop($event)\" [class.disabled-upload-zone]=\"disabled\">\r\n <mat-icon svgIcon=\"file_upload_icon\"></mat-icon>\r\n\r\n \r\n <div class=\"upload-zone-labels\">\r\n <a color=\"primary-accent-darker\" class=\"file-upload--btn\" (click)=\"fileInput.click()\">{{ uploadButtonLabel }}</a>\r\n \r\n <span fxHide.lt-sm class=\"upload-label\" [innerHTML]=\"dragZoneLabel\"></span>\r\n \r\n <p class=\"upload-zone-formats\">\r\n (<span *ngFor=\"let format of accept; let i = index\"\r\n >{{ format\r\n }}{{ accept.length - 1 === i ? \".\" : \", \" }}</span\r\n >\r\n\r\n <span *ngIf=\"maxSize\" [innerHTML]=\"'FILE_UPLOAD.LIMITS_MB' | translate: { maxSize: maxSizeLabel }\"></span>)\r\n </p>\r\n \r\n <a class=\"supported-formats-btn\" (click)=\"openSupportedFormatModal()\">{{openExtensionPopupLabel}}</a>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<input \r\n #fileInput \r\n type=\"file\" \r\n name=\"files\" \r\n class=\"native-file-input\"\r\n [accept]=\"allowedExtensions\" \r\n [multiple]=\"multiple\" \r\n (change)=\"handleFileInput($event)\" \r\n/>\r\n", styles: [":host{width:100%}.file-upload{display:flex;flex-direction:column;justify-content:center;text-align:center}.file-upload .upload-button,.file-upload .upload-zone{display:flex;border-radius:16px;border:1px dashed var(--base-65)}.file-upload .upload-button{padding:0;align-items:start;justify-content:start;min-height:fit-content;padding:15px 20px!important}.file-upload .upload-zone{flex-direction:column;justify-content:center;align-items:center;max-width:600px;width:100%;padding:42px 0}.file-upload .upload-zone-labels{margin-top:10px;font-size:16px;font-weight:600;line-height:24px;text-align:center}.file-upload .upload-zone-labels .upload-zone-formats{font-weight:400}.file-upload .supported-formats-btn{cursor:pointer;color:var(--primary-accent-darker);font-weight:400}.file-upload .disabled-upload-zone{cursor:not-allowed}.file-upload .file-upload--btn,.file-upload .upload-label:not(.file-upload-mobile){margin-top:10px}.file-upload .file-upload--btn{cursor:pointer;align-self:center;max-width:fit-content;color:var(--primary-accent-darker)}.file-upload .file-upload--btn:hover{text-decoration:underline}.file-upload .upload-zone-formats{margin:10px 0 4px;color:var(--base-40)}.file-upload-mobile .upload-button{border:1px solid var(--base-65);padding:10px 15px!important}.disabled .file-upload--btn{pointer-events:none!important;text-decoration:none!important}.native-file-input{display:none}\n"] }]
2943
+ args: [{ selector: 'lib-file-upload', template: "<div class=\"file-upload\" [ngClass.lt-sm]=\"'file-upload-mobile'\" [class.disabled]=\"disabled\">\r\n <mat-progress-bar \r\n *ngIf=\"filePreviewProgress\"\r\n color=\"primary\" \r\n class=\"tld-file-upload-progress\" \r\n [value]=\"filePreviewProgress\"\r\n >\r\n </mat-progress-bar>\r\n\r\n <ng-container *ngIf=\"useCompactUpload; else regularUpload\">\r\n <button tldDragAndDrop #inputButton mat-button (fileDropped)=\"onFileDrop($event)\" [disabled]=\"disabled\" type=\"button\"\r\n (click)=\"fileInput.click()\" class=\"upload-button text-l\"\r\n >\r\n <mat-icon *ngIf=\"uploadIconName\">{{uploadIconName}}</mat-icon>\r\n <ng-content></ng-content>\r\n </button>\r\n </ng-container>\r\n\r\n <ng-template #regularUpload>\r\n <div class=\"upload-zone\" tldDragAndDrop (fileDropped)=\"onFileDrop($event)\" [class.disabled-upload-zone]=\"disabled\">\r\n <mat-icon svgIcon=\"file_upload_icon\"></mat-icon>\r\n\r\n \r\n <div class=\"upload-zone-labels\">\r\n <a color=\"primary-accent-darker\" class=\"file-upload--btn\" (click)=\"fileInput.click()\">{{ uploadButtonLabel }}</a>\r\n \r\n <span fxHide.lt-sm class=\"upload-label\" [innerHTML]=\"dragZoneLabel\"></span>\r\n \r\n <p class=\"upload-zone-formats\">\r\n (<span *ngFor=\"let format of accept; let i = index\"\r\n >{{ format\r\n }}{{ accept.length - 1 === i ? \".\" : \", \" }}</span\r\n >\r\n\r\n <span *ngIf=\"maxSize\" [innerHTML]=\"'FILE_UPLOAD.LIMITS_MB' | translate: { maxSize: maxSizeLabel }\"></span>)\r\n </p>\r\n \r\n @if (accept.length > minSupportedFormatCount) {\r\n <a class=\"supported-formats-btn\" (click)=\"openSupportedFormatModal()\">{{openExtensionPopupLabel}}</a>\r\n }\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<input \r\n #fileInput \r\n type=\"file\" \r\n name=\"files\" \r\n class=\"native-file-input\"\r\n [accept]=\"allowedExtensions\" \r\n [multiple]=\"multiple\" \r\n (change)=\"handleFileInput($event)\" \r\n/>\r\n", styles: [":host{width:100%}.file-upload{display:flex;flex-direction:column;justify-content:center;text-align:center}.file-upload .upload-button,.file-upload .upload-zone{display:flex;border-radius:16px;border:1px dashed var(--base-65)}.file-upload .upload-button{padding:0;align-items:start;justify-content:start;min-height:fit-content;padding:15px 20px!important}.file-upload .upload-zone{flex-direction:column;justify-content:center;align-items:center;max-width:600px;width:100%;padding:42px 0}.file-upload .upload-zone-labels{margin-top:10px;font-size:16px;font-weight:600;line-height:24px;text-align:center}.file-upload .upload-zone-labels .upload-zone-formats{font-weight:400}.file-upload .supported-formats-btn{cursor:pointer;color:var(--primary-accent-darker);font-weight:400}.file-upload .disabled-upload-zone{cursor:not-allowed}.file-upload .file-upload--btn,.file-upload .upload-label:not(.file-upload-mobile){margin-top:10px}.file-upload .file-upload--btn{cursor:pointer;align-self:center;max-width:fit-content;color:var(--primary-accent-darker)}.file-upload .file-upload--btn:hover{text-decoration:underline}.file-upload .upload-zone-formats{margin:10px 0 4px;color:var(--base-40)}.file-upload-mobile .upload-button{border:1px solid var(--base-65);padding:10px 15px!important}.disabled .file-upload--btn{pointer-events:none!important;text-decoration:none!important}.native-file-input{display:none}\n"] }]
2934
2944
  }], () => [], { fileInput: [{
2935
2945
  type: ViewChild,
2936
2946
  args: ['fileInput']
@@ -2960,6 +2970,8 @@ class FileUploadComponent {
2960
2970
  type: Input
2961
2971
  }], openExtensionPopupLabel: [{
2962
2972
  type: Input
2973
+ }], minSupportedFormatCount: [{
2974
+ type: Input
2963
2975
  }], extendedAcceptList: [{
2964
2976
  type: Input
2965
2977
  }] }); })();