@onemrvapublic/design-system 18.2.14-develop.1 → 18.2.14-develop.3

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.
@@ -21,6 +21,7 @@ export class OnemrvaMatFileUploadComponent {
21
21
  this.accept = [];
22
22
  this.maxFileSize = 0;
23
23
  this.numberOfFiles = 0;
24
+ this.maxTotalFileSize = 0;
24
25
  this.uploadOnDrop = true;
25
26
  this.initialFiles = [];
26
27
  this.errorMessage = '';
@@ -68,46 +69,54 @@ export class OnemrvaMatFileUploadComponent {
68
69
  * @param files (Files List)
69
70
  */
70
71
  prepareFilesList(files) {
71
- this.fileUploadStore.files$.pipe(take(1)).subscribe(value => {
72
- // if numberOffiles is set and the total length of files is smaller than it
72
+ this.fileUploadStore.files$.pipe(take(1)).subscribe(currentFiles => {
73
+ // if numberOffiles is set and the total length of files is smal
74
+ // ler than it
73
75
  if (this.numberOfFiles > 0 &&
74
- files.length + value.length > this.numberOfFiles) {
76
+ files.length + currentFiles.length > this.numberOfFiles) {
75
77
  // too many files
76
78
  this.errorMessage = this.translate.instant('file.upload.too.many.files');
79
+ return;
77
80
  }
78
- else {
79
- // clear error message
80
- this.errorMessage = '';
81
- const fs = [];
82
- for (let i = 0; i < files.length; i++) {
83
- const file = files.item(i);
84
- if (file === null)
85
- continue;
86
- const item = {
87
- file,
88
- progress: 0,
89
- message: '',
90
- color: 'primary',
91
- url: null,
92
- id: null,
93
- enableProgressBar: this.uploadOnDrop,
94
- name: file.name,
95
- lastModified: file.lastModified,
96
- size: file.size,
97
- type: file.type,
98
- };
99
- fs.push(item);
81
+ if (this.maxTotalFileSize > 0) {
82
+ const total = Object.values(files).reduce((sum, obj) => sum + obj.size, 0) +
83
+ currentFiles.reduce((sum, obj) => sum + obj.size, 0);
84
+ if (total > this.maxTotalFileSize) {
85
+ this.errorMessage = this.translate.instant('file.upload.total.max.size.exceeded');
86
+ return;
100
87
  }
101
- if (this.uploadOnDrop)
102
- this.fileUploadStore.uploadFiles(fs);
103
- else
104
- this.fileUploadStore.addSeveralForPotentialUpload(fs);
105
- this.fileDropRef.nativeElement.value = null;
106
88
  }
89
+ // clear error message
90
+ this.errorMessage = '';
91
+ const fs = [];
92
+ for (let i = 0; i < files.length; i++) {
93
+ const file = files.item(i);
94
+ if (file === null)
95
+ continue;
96
+ const item = {
97
+ file,
98
+ progress: 0,
99
+ message: '',
100
+ color: 'primary',
101
+ url: null,
102
+ id: null,
103
+ enableProgressBar: this.uploadOnDrop,
104
+ name: file.name,
105
+ lastModified: file.lastModified,
106
+ size: file.size,
107
+ type: file.type,
108
+ };
109
+ fs.push(item);
110
+ }
111
+ if (this.uploadOnDrop)
112
+ this.fileUploadStore.uploadFiles(fs);
113
+ else
114
+ this.fileUploadStore.addSeveralForPotentialUpload(fs);
115
+ this.fileDropRef.nativeElement.value = null;
107
116
  });
108
117
  }
109
118
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: OnemrvaMatFileUploadComponent, deps: [{ token: i1.MatDialog }, { token: i2.OnemRvaCDNMimeService }, { token: i3.TranslateService }, { token: i4.OnemrvaMatFileUploadStore }], target: i0.ɵɵFactoryTarget.Component }); }
110
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: OnemrvaMatFileUploadComponent, selector: "onemrva-mat-file-upload", inputs: { accept: "accept", maxFileSize: "maxFileSize", numberOfFiles: "numberOfFiles", uploadOnDrop: "uploadOnDrop", initialFiles: "initialFiles", errorMessage: "errorMessage", dropFilesHereTextTranslationKey: "dropFilesHereTextTranslationKey", filePanelTemplate: "filePanelTemplate", dataCy: "dataCy" }, host: { properties: { "attr.data-cy": "this.dataCy" } }, viewQueries: [{ propertyName: "fileDropRef", first: true, predicate: ["fileDropRef"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"files$ | async as files\">\n <div\n class=\"onemrva-mat-file-upload-drop-area\"\n appDnd\n (fileDropped)=\"onFileDropped($event)\"\n [ngClass]=\"{\n 'fu-error': errorMessage !== '',\n filein: files.length > 0,\n }\"\n >\n <input\n type=\"file\"\n #fileDropRef\n [attr.id]=\"inputId\"\n role=\"button\"\n multiple\n (change)=\"fileBrowseHandler($event)\"\n accept=\"{{ acceptString$ | async }}\"\n />\n <div\n class=\"download-outer\"\n *ngIf=\"numberOfFiles === 0 || numberOfFiles > files.length\"\n >\n <div class=\"download-icon\">\n <mat-icon class=\"onemrva-upload xxlarge\">download</mat-icon>\n </div>\n\n <div class=\"download-text\">\n {{ dropFilesHereTextTranslationKey | translate }}\n {{ 'file.upload.or' | translate }}\n <label for=\"{{ inputId }}\" class=\"content\">\n {{ 'file.upload.browse.for.file' | translate }} </label\n ><br />\n <span class=\"restrictions\" *ngIf=\"maxFileSize > 0\">\n {{ 'file.upload.maximum' | translate }}\n {{ maxFileSizeFormatted }}\n\n <span *ngIf=\"accept.length > 0\">{{ '| ' }}</span>\n\n {{ acceptString$ | async }}\n </span>\n </div>\n </div>\n <ul class=\"files-list\">\n <li *ngFor=\"let file of files\">\n <ng-container\n *ngTemplateOutlet=\"\n filePanelTemplate;\n context: { file, $implicit: file }\n \"\n ></ng-container>\n </li>\n </ul>\n </div>\n\n <mat-error *ngIf=\"errorMessage\">{{ errorMessage | translate }}</mat-error>\n\n <mat-error *ngIf=\"fileUploadErrorMessage$ | async as fileUploadErrorMessage\">\n {{ fileUploadErrorMessage | translate }}\n </mat-error>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i8.DndDirective, selector: "[appDnd]", outputs: ["fileDropped"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], animations: [
119
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: OnemrvaMatFileUploadComponent, selector: "onemrva-mat-file-upload", inputs: { accept: "accept", maxFileSize: "maxFileSize", numberOfFiles: "numberOfFiles", maxTotalFileSize: "maxTotalFileSize", uploadOnDrop: "uploadOnDrop", initialFiles: "initialFiles", errorMessage: "errorMessage", dropFilesHereTextTranslationKey: "dropFilesHereTextTranslationKey", filePanelTemplate: "filePanelTemplate", dataCy: "dataCy" }, host: { properties: { "attr.data-cy": "this.dataCy" } }, viewQueries: [{ propertyName: "fileDropRef", first: true, predicate: ["fileDropRef"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"files$ | async as files\">\n <div\n class=\"onemrva-mat-file-upload-drop-area\"\n appDnd\n (fileDropped)=\"onFileDropped($event)\"\n [ngClass]=\"{\n 'fu-error': errorMessage !== '',\n filein: files.length > 0,\n }\"\n >\n <input\n type=\"file\"\n #fileDropRef\n [attr.id]=\"inputId\"\n role=\"button\"\n multiple\n (change)=\"fileBrowseHandler($event)\"\n accept=\"{{ acceptString$ | async }}\"\n />\n <div\n class=\"download-outer\"\n *ngIf=\"numberOfFiles === 0 || numberOfFiles > files.length\"\n >\n <div class=\"download-icon\">\n <mat-icon class=\"onemrva-upload xxlarge\">download</mat-icon>\n </div>\n\n <div class=\"download-text\">\n {{ dropFilesHereTextTranslationKey | translate }}\n {{ 'file.upload.or' | translate }}\n <label for=\"{{ inputId }}\" class=\"content\">\n {{ 'file.upload.browse.for.file' | translate }} </label\n ><br />\n <span class=\"restrictions\" *ngIf=\"maxFileSize > 0\">\n {{ 'file.upload.maximum' | translate }}\n {{ maxFileSizeFormatted }}\n\n <span *ngIf=\"accept.length > 0\">{{ '| ' }}</span>\n\n {{ acceptString$ | async }}\n </span>\n </div>\n </div>\n <ul class=\"files-list\">\n <li *ngFor=\"let file of files\">\n <ng-container\n *ngTemplateOutlet=\"\n filePanelTemplate;\n context: { file, $implicit: file }\n \"\n ></ng-container>\n </li>\n </ul>\n </div>\n\n <mat-error *ngIf=\"errorMessage\">{{ errorMessage | translate }}</mat-error>\n\n <mat-error *ngIf=\"fileUploadErrorMessage$ | async as fileUploadErrorMessage\">\n {{ fileUploadErrorMessage | translate }}\n </mat-error>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i8.DndDirective, selector: "[appDnd]", outputs: ["fileDropped"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], animations: [
111
120
  trigger('inOutAnimation', [
112
121
  state('in', style({ opacity: 1 })),
113
122
  transition(':enter', [
@@ -162,6 +171,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
162
171
  type: Input
163
172
  }], numberOfFiles: [{
164
173
  type: Input
174
+ }], maxTotalFileSize: [{
175
+ type: Input
165
176
  }], uploadOnDrop: [{
166
177
  type: Input
167
178
  }], initialFiles: [{
@@ -181,4 +192,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
181
192
  type: ViewChild,
182
193
  args: [`fileDropRef`]
183
194
  }] } });
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lbXJ2YS1tYXQtZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25lbXJ2YS9kZXNpZ24tc3lzdGVtL21hdC1maWxlLXVwbG9hZC9zcmMvY29tcG9uZW50cy9vbmVtcnZhLW1hdC1maWxlLXVwbG9hZC9vbmVtcnZhLW1hdC1maWxlLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbWF0LWZpbGUtdXBsb2FkL3NyYy9jb21wb25lbnRzL29uZW1ydmEtbWF0LWZpbGUtdXBsb2FkL29uZW1ydmEtbWF0LWZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxHQUFHLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFDTCxLQUFLLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxPQUFPLEVBQ1AsT0FBTyxFQUNQLFVBQVUsR0FDWCxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFDTCxXQUFXLEdBR1osTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7OztBQUsxQyxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFtQ2hCLE1BQU0sT0FBTyw2QkFBNkI7SUFrRHhDLFlBQ1MsTUFBaUIsRUFDakIsT0FBOEIsRUFDN0IsU0FBMkIsRUFDM0IsZUFBMEM7UUFIM0MsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNqQixZQUFPLEdBQVAsT0FBTyxDQUF1QjtRQUM3QixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixvQkFBZSxHQUFmLGVBQWUsQ0FB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O2dCQU1OLFdBQVc7c0JBRFYsS0FBSztnQkFJTixhQUFhO3NCQURaLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sK0JBQStCO3NCQUQ5QixLQUFLO2dCQU9HLGlCQUFpQjtzQkFBekIsS0FBSztnQkFjQyxNQUFNO3NCQUZaLFdBQVc7dUJBQUMsY0FBYzs7c0JBQzFCLEtBQUs7Z0JBSU4sV0FBVztzQkFEVixTQUFTO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSwgdGFrZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgc3RhdGUsXG4gIGtleWZyYW1lcyxcbiAgc3R5bGUsXG4gIGFuaW1hdGUsXG4gIHRyaWdnZXIsXG4gIHRyYW5zaXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtcbiAgZm9ybWF0Qnl0ZXMsXG4gIFByb2dyZXNzRmlsZSxcbiAgUmVmZXJlbmNlZFByb2dyZXNzRmlsZSxcbn0gZnJvbSAnLi4vLi4vbW9kZWxzL3Byb2dyZXNzLWZpbGUubW9kZWwnO1xuaW1wb3J0IHsgT25lbXJ2YU1hdEZpbGVVcGxvYWRTdG9yZSB9IGZyb20gJy4uLy4uL29uZW1ydmEtbWF0LWZpbGUtdXBsb2FkLnN0b3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE9uZW1SdmFDRE5NaW1lU2VydmljZSB9IGZyb20gJ0BvbmVtcnZhcHVibGljL2Rlc2lnbi1zeXN0ZW0vc2hhcmVkJztcblxubGV0IE5FWFRfSUQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvbmVtcnZhLW1hdC1maWxlLXVwbG9hZCcsXG4gIHRlbXBsYXRlVXJsOiAnb25lbXJ2YS1tYXQtZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignaW5PdXRBbmltYXRpb24nLCBbXG4gICAgICBzdGF0ZSgnaW4nLCBzdHlsZSh7IG9wYWNpdHk6IDEgfSkpLFxuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xuICAgICAgICBhbmltYXRlKFxuICAgICAgICAgIDMwMCxcbiAgICAgICAgICBrZXlmcmFtZXMoW1xuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCBvZmZzZXQ6IDAgfSksXG4gICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAuMjUsIG9mZnNldDogMC4yNSB9KSxcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMC41LCBvZmZzZXQ6IDAuNSB9KSxcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMC43NSwgb2Zmc2V0OiAwLjc1IH0pLFxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCBvZmZzZXQ6IDEgfSksXG4gICAgICAgICAgXSksXG4gICAgICAgICksXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcbiAgICAgICAgYW5pbWF0ZShcbiAgICAgICAgICAzMDAsXG4gICAgICAgICAga2V5ZnJhbWVzKFtcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMSwgb2Zmc2V0OiAwIH0pLFxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLjc1LCBvZmZzZXQ6IDAuMjUgfSksXG4gICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAuNSwgb2Zmc2V0OiAwLjUgfSksXG4gICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAuMjUsIG9mZnNldDogMC43NSB9KSxcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgb2Zmc2V0OiAxIH0pLFxuICAgICAgICAgIF0pLFxuICAgICAgICApLFxuICAgICAgXSksXG4gICAgXSksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE9uZW1ydmFNYXRGaWxlVXBsb2FkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KClcbiAgYWNjZXB0OiBzdHJpbmdbXSA9IFtdO1xuXG4gIGFjY2VwdFN0cmluZyQ/OiBPYnNlcnZhYmxlPGFueT47XG5cbiAgQElucHV0KClcbiAgbWF4RmlsZVNpemUgPSAwO1xuXG4gIEBJbnB1dCgpXG4gIG51bWJlck9mRmlsZXMgPSAwO1xuXG4gIEBJbnB1dCgpXG4gIHVwbG9hZE9uRHJvcCA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgaW5pdGlhbEZpbGVzOiBQcm9ncmVzc0ZpbGVbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIGVycm9yTWVzc2FnZSA9ICcnO1xuXG4gIEBJbnB1dCgpXG4gIGRyb3BGaWxlc0hlcmVUZXh0VHJhbnNsYXRpb25LZXkgPSAnZmlsZS51cGxvYWQuZHJhZy5hbmQuZHJvcCc7XG5cbiAgZmlsZVVwbG9hZEVycm9yTWVzc2FnZSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBmaWxlcyQ6IE9ic2VydmFibGU8UmVmZXJlbmNlZFByb2dyZXNzRmlsZVtdPjtcblxuICBASW5wdXQoKSBmaWxlUGFuZWxUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgcmV0cnlGaWxlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGluZGV4OiBudW1iZXI7IGNtcFJlZjogc3ltYm9sIH0+KCk7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGBkYXRhLWN5YCBvZiB0aGUgZWxlbWVudC4gSWYgbm90IHNldCwgdGhlIGZpcnN0IGNvbXBvbmVudCBpbnN0YW5jZSB3aWxsIGhhdmUgYGRhdGEtY3lgID0gYFwib25lbXJ2YS1tYXQtbXVsdGktc2VsZWN0LTBcImAuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYGh0bWxcbiAgICogPG9uZW1ydmEtbWF0LW11bHRpLXNlbGVjdCBpZD1cIm15LWZpcnN0LW11bHRpLXNlbGVjdFwiPjwvb25lbXJ2YS1tYXQtbXVsdGktc2VsZWN0PlxuICAgKiBgYGBcbiAgICovXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLWN5JylcbiAgQElucHV0KClcbiAgcHVibGljIGRhdGFDeSA9IGBvbmVtcnZhLW1hdC1tdWx0aS1zZWxlY3QtJHtORVhUX0lEKyt9YDtcblxuICBAVmlld0NoaWxkKGBmaWxlRHJvcFJlZmApXG4gIGZpbGVEcm9wUmVmITogRWxlbWVudFJlZjtcblxuICBpbnB1dElkID0gYGZpbGVEcm9wUmVmLSR7TkVYVF9JRH1gO1xuICBtYXhGaWxlU2l6ZUZvcm1hdHRlZCA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwdWJsaWMgbWltZUNETjogT25lbVJ2YUNETk1pbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmlsZVVwbG9hZFN0b3JlOiBPbmVtcnZhTWF0RmlsZVVwbG9hZFN0b3JlLFxuICApIHtcbiAgICB0aGlzLmZpbGVzJCA9IGZpbGVVcGxvYWRTdG9yZS5maWxlcyQ7XG5cbiAgICB0aGlzLmZpbGVVcGxvYWRFcnJvck1lc3NhZ2UkID0gdGhpcy5maWxlVXBsb2FkU3RvcmUuZmlsZVVwbG9hZEVycm9yJDtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFjY2VwdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmFjY2VwdFN0cmluZyQgPSB0aGlzLm1pbWVDRE5cbiAgICAgICAgLmdldEV4dGVuc2lvbnNGb3JNaW1lKHRoaXMuYWNjZXB0KVxuICAgICAgICAucGlwZShtYXAoYXJyID0+IGFyci5tYXAoaXRlbSA9PiBgLiR7aXRlbX1gKS5qb2luKCcsICcpKSk7XG4gICAgICB0aGlzLmZpbGVVcGxvYWRTdG9yZS5zZXRBY2NlcHQodGhpcy5hY2NlcHQpO1xuICAgIH1cblxuICAgIHRoaXMubWF4RmlsZVNpemVGb3JtYXR0ZWQgPSBmb3JtYXRCeXRlcyh0aGlzLm1heEZpbGVTaXplKTtcbiAgICB0aGlzLmZpbGVVcGxvYWRTdG9yZS5zZXRNYXhGaWxlU2l6ZSh0aGlzLm1heEZpbGVTaXplKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBvbiBmaWxlIGRyb3AgaGFuZGxlclxuICAgKi9cbiAgb25GaWxlRHJvcHBlZCgkZXZlbnQ6IEZpbGVMaXN0KSB7XG4gICAgdGhpcy5wcmVwYXJlRmlsZXNMaXN0KCRldmVudCk7XG4gIH1cblxuICAvKipcbiAgICogaGFuZGxlIGZpbGUgZnJvbSBicm93c2luZ1xuICAgKi9cbiAgZmlsZUJyb3dzZUhhbmRsZXIoJGV2ZW50OiBFdmVudCkge1xuICAgIGNvbnN0IGVsbSA9ICRldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCxcbiAgICAgIGZpbGVzID0gZWxtLmZpbGVzIGFzIEZpbGVMaXN0O1xuXG4gICAgdGhpcy5wcmVwYXJlRmlsZXNMaXN0KGZpbGVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IEZpbGVzIGxpc3QgdG8gbm9ybWFsIGFycmF5IGxpc3RcbiAgICogQHBhcmFtIGZpbGVzIChGaWxlcyBMaXN0KVxuICAgKi9cbiAgcHJlcGFyZUZpbGVzTGlzdChmaWxlczogRmlsZUxpc3QpIHtcbiAgICB0aGlzLmZpbGVVcGxvYWRTdG9yZS5maWxlcyQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgLy8gaWYgbnVtYmVyT2ZmaWxlcyBpcyBzZXQgYW5kIHRoZSB0b3RhbCBsZW5ndGggb2YgZmlsZXMgaXMgc21hbGxlciB0aGFuIGl0XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMubnVtYmVyT2ZGaWxlcyA+IDAgJiZcbiAgICAgICAgZmlsZXMubGVuZ3RoICsgdmFsdWUubGVuZ3RoID4gdGhpcy5udW1iZXJPZkZpbGVzXG4gICAgICApIHtcbiAgICAgICAgLy8gdG9vIG1hbnkgZmlsZXNcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICdmaWxlLnVwbG9hZC50b28ubWFueS5maWxlcycsXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBjbGVhciBlcnJvciBtZXNzYWdlXG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJyc7XG5cbiAgICAgICAgY29uc3QgZnM6IFByb2dyZXNzRmlsZVtdID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBjb25zdCBmaWxlID0gZmlsZXMuaXRlbShpKTtcbiAgICAgICAgICBpZiAoZmlsZSA9PT0gbnVsbCkgY29udGludWU7XG5cbiAgICAgICAgICBjb25zdCBpdGVtOiBQcm9ncmVzc0ZpbGUgPSB7XG4gICAgICAgICAgICBmaWxlLFxuICAgICAgICAgICAgcHJvZ3Jlc3M6IDAsXG4gICAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgICAgICAgICB1cmw6IG51bGwsXG4gICAgICAgICAgICBpZDogbnVsbCxcbiAgICAgICAgICAgIGVuYWJsZVByb2dyZXNzQmFyOiB0aGlzLnVwbG9hZE9uRHJvcCxcblxuICAgICAgICAgICAgbmFtZTogZmlsZSEubmFtZSxcbiAgICAgICAgICAgIGxhc3RNb2RpZmllZDogZmlsZSEubGFzdE1vZGlmaWVkLFxuICAgICAgICAgICAgc2l6ZTogZmlsZSEuc2l6ZSxcbiAgICAgICAgICAgIHR5cGU6IGZpbGUhLnR5cGUsXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGZzLnB1c2goaXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy51cGxvYWRPbkRyb3ApIHRoaXMuZmlsZVVwbG9hZFN0b3JlLnVwbG9hZEZpbGVzKGZzKTtcbiAgICAgICAgZWxzZSB0aGlzLmZpbGVVcGxvYWRTdG9yZS5hZGRTZXZlcmFsRm9yUG90ZW50aWFsVXBsb2FkKGZzKTtcblxuICAgICAgICB0aGlzLmZpbGVEcm9wUmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBudWxsO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsZXMkIHwgYXN5bmMgYXMgZmlsZXNcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwib25lbXJ2YS1tYXQtZmlsZS11cGxvYWQtZHJvcC1hcmVhXCJcbiAgICBhcHBEbmRcbiAgICAoZmlsZURyb3BwZWQpPVwib25GaWxlRHJvcHBlZCgkZXZlbnQpXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnZnUtZXJyb3InOiBlcnJvck1lc3NhZ2UgIT09ICcnLFxuICAgICAgZmlsZWluOiBmaWxlcy5sZW5ndGggPiAwLFxuICAgIH1cIlxuICA+XG4gICAgPGlucHV0XG4gICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAjZmlsZURyb3BSZWZcbiAgICAgIFthdHRyLmlkXT1cImlucHV0SWRcIlxuICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICBtdWx0aXBsZVxuICAgICAgKGNoYW5nZSk9XCJmaWxlQnJvd3NlSGFuZGxlcigkZXZlbnQpXCJcbiAgICAgIGFjY2VwdD1cInt7IGFjY2VwdFN0cmluZyQgfCBhc3luYyB9fVwiXG4gICAgLz5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImRvd25sb2FkLW91dGVyXCJcbiAgICAgICpuZ0lmPVwibnVtYmVyT2ZGaWxlcyA9PT0gMCB8fCBudW1iZXJPZkZpbGVzID4gZmlsZXMubGVuZ3RoXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiZG93bmxvYWQtaWNvblwiPlxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJvbmVtcnZhLXVwbG9hZCB4eGxhcmdlXCI+ZG93bmxvYWQ8L21hdC1pY29uPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJkb3dubG9hZC10ZXh0XCI+XG4gICAgICAgIHt7IGRyb3BGaWxlc0hlcmVUZXh0VHJhbnNsYXRpb25LZXkgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAge3sgJ2ZpbGUudXBsb2FkLm9yJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8bGFiZWwgZm9yPVwie3sgaW5wdXRJZCB9fVwiIGNsYXNzPVwiY29udGVudFwiPlxuICAgICAgICAgIHt7ICdmaWxlLnVwbG9hZC5icm93c2UuZm9yLmZpbGUnIHwgdHJhbnNsYXRlIH19IDwvbGFiZWxcbiAgICAgICAgPjxiciAvPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInJlc3RyaWN0aW9uc1wiICpuZ0lmPVwibWF4RmlsZVNpemUgPiAwXCI+XG4gICAgICAgICAge3sgJ2ZpbGUudXBsb2FkLm1heGltdW0nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAge3sgbWF4RmlsZVNpemVGb3JtYXR0ZWQgfX1cblxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiYWNjZXB0Lmxlbmd0aCA+IDBcIj57eyAnfCAnIH19PC9zcGFuPlxuXG4gICAgICAgICAge3sgYWNjZXB0U3RyaW5nJCB8IGFzeW5jIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDx1bCBjbGFzcz1cImZpbGVzLWxpc3RcIj5cbiAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZmlsZSBvZiBmaWxlc1wiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIGZpbGVQYW5lbFRlbXBsYXRlO1xuICAgICAgICAgICAgY29udGV4dDogeyBmaWxlLCAkaW1wbGljaXQ6IGZpbGUgfVxuICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9kaXY+XG5cbiAgPG1hdC1lcnJvciAqbmdJZj1cImVycm9yTWVzc2FnZVwiPnt7IGVycm9yTWVzc2FnZSB8IHRyYW5zbGF0ZSB9fTwvbWF0LWVycm9yPlxuXG4gIDxtYXQtZXJyb3IgKm5nSWY9XCJmaWxlVXBsb2FkRXJyb3JNZXNzYWdlJCB8IGFzeW5jIGFzIGZpbGVVcGxvYWRFcnJvck1lc3NhZ2VcIj5cbiAgICB7eyBmaWxlVXBsb2FkRXJyb3JNZXNzYWdlIHwgdHJhbnNsYXRlIH19XG4gIDwvbWF0LWVycm9yPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lbXJ2YS1tYXQtZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25lbXJ2YS9kZXNpZ24tc3lzdGVtL21hdC1maWxlLXVwbG9hZC9zcmMvY29tcG9uZW50cy9vbmVtcnZhLW1hdC1maWxlLXVwbG9hZC9vbmVtcnZhLW1hdC1maWxlLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbWF0LWZpbGUtdXBsb2FkL3NyYy9jb21wb25lbnRzL29uZW1ydmEtbWF0LWZpbGUtdXBsb2FkL29uZW1ydmEtbWF0LWZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxHQUFHLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFDTCxLQUFLLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxPQUFPLEVBQ1AsT0FBTyxFQUNQLFVBQVUsR0FDWCxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFDTCxXQUFXLEdBR1osTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7OztBQUsxQyxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFtQ2hCLE1BQU0sT0FBTyw2QkFBNkI7SUFxRHhDLFlBQ1MsTUFBaUIsRUFDakIsT0FBOEIsRUFDN0IsU0FBMkIsRUFDM0IsZUFBMEM7UUFIM0MsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNqQixZQUFPLEdBQVAsT0FBTyxDQUF1QjtRQUM3QixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixvQkFBZSxHQUFmLGVBQWUsQ0FB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NkJBQ0YsQ0FBQzs0QkFDRixVQUFVLENBQUMsUUFBUSxFQUFFO2dDQUNuQixPQUFPLENBQ0wsR0FBRyxFQUNILFNBQVMsQ0FBQztvQ0FDUixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztvQ0FDaEMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7b0NBQ3RDLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO29DQUNwQyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQztvQ0FDdEMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7aUNBQ2pDLENBQUMsQ0FDSDs2QkFDRixDQUFDO3lCQUNILENBQUM7cUJBQ0g7eUxBSUQsTUFBTTtzQkFETCxLQUFLO2dCQU1OLFdBQVc7c0JBRFYsS0FBSztnQkFJTixhQUFhO3NCQURaLEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sK0JBQStCO3NCQUQ5QixLQUFLO2dCQU9HLGlCQUFpQjtzQkFBekIsS0FBSztnQkFjQyxNQUFNO3NCQUZaLFdBQVc7dUJBQUMsY0FBYzs7c0JBQzFCLEtBQUs7Z0JBSU4sV0FBVztzQkFEVixTQUFTO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSwgdGFrZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgc3RhdGUsXG4gIGtleWZyYW1lcyxcbiAgc3R5bGUsXG4gIGFuaW1hdGUsXG4gIHRyaWdnZXIsXG4gIHRyYW5zaXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtcbiAgZm9ybWF0Qnl0ZXMsXG4gIFByb2dyZXNzRmlsZSxcbiAgUmVmZXJlbmNlZFByb2dyZXNzRmlsZSxcbn0gZnJvbSAnLi4vLi4vbW9kZWxzL3Byb2dyZXNzLWZpbGUubW9kZWwnO1xuaW1wb3J0IHsgT25lbXJ2YU1hdEZpbGVVcGxvYWRTdG9yZSB9IGZyb20gJy4uLy4uL29uZW1ydmEtbWF0LWZpbGUtdXBsb2FkLnN0b3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE9uZW1SdmFDRE5NaW1lU2VydmljZSB9IGZyb20gJ0BvbmVtcnZhcHVibGljL2Rlc2lnbi1zeXN0ZW0vc2hhcmVkJztcblxubGV0IE5FWFRfSUQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvbmVtcnZhLW1hdC1maWxlLXVwbG9hZCcsXG4gIHRlbXBsYXRlVXJsOiAnb25lbXJ2YS1tYXQtZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignaW5PdXRBbmltYXRpb24nLCBbXG4gICAgICBzdGF0ZSgnaW4nLCBzdHlsZSh7IG9wYWNpdHk6IDEgfSkpLFxuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xuICAgICAgICBhbmltYXRlKFxuICAgICAgICAgIDMwMCxcbiAgICAgICAgICBrZXlmcmFtZXMoW1xuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCBvZmZzZXQ6IDAgfSksXG4gICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAuMjUsIG9mZnNldDogMC4yNSB9KSxcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMC41LCBvZmZzZXQ6IDAuNSB9KSxcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMC43NSwgb2Zmc2V0OiAwLjc1IH0pLFxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCBvZmZzZXQ6IDEgfSksXG4gICAgICAgICAgXSksXG4gICAgICAgICksXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcbiAgICAgICAgYW5pbWF0ZShcbiAgICAgICAgICAzMDAsXG4gICAgICAgICAga2V5ZnJhbWVzKFtcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMSwgb2Zmc2V0OiAwIH0pLFxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLjc1LCBvZmZzZXQ6IDAuMjUgfSksXG4gICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAuNSwgb2Zmc2V0OiAwLjUgfSksXG4gICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAuMjUsIG9mZnNldDogMC43NSB9KSxcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgb2Zmc2V0OiAxIH0pLFxuICAgICAgICAgIF0pLFxuICAgICAgICApLFxuICAgICAgXSksXG4gICAgXSksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE9uZW1ydmFNYXRGaWxlVXBsb2FkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KClcbiAgYWNjZXB0OiBzdHJpbmdbXSA9IFtdO1xuXG4gIGFjY2VwdFN0cmluZyQ/OiBPYnNlcnZhYmxlPGFueT47XG5cbiAgQElucHV0KClcbiAgbWF4RmlsZVNpemUgPSAwO1xuXG4gIEBJbnB1dCgpXG4gIG51bWJlck9mRmlsZXMgPSAwO1xuXG4gIEBJbnB1dCgpXG4gIG1heFRvdGFsRmlsZVNpemUgPSAwO1xuXG4gIEBJbnB1dCgpXG4gIHVwbG9hZE9uRHJvcCA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgaW5pdGlhbEZpbGVzOiBQcm9ncmVzc0ZpbGVbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIGVycm9yTWVzc2FnZSA9ICcnO1xuXG4gIEBJbnB1dCgpXG4gIGRyb3BGaWxlc0hlcmVUZXh0VHJhbnNsYXRpb25LZXkgPSAnZmlsZS51cGxvYWQuZHJhZy5hbmQuZHJvcCc7XG5cbiAgZmlsZVVwbG9hZEVycm9yTWVzc2FnZSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBmaWxlcyQ6IE9ic2VydmFibGU8UmVmZXJlbmNlZFByb2dyZXNzRmlsZVtdPjtcblxuICBASW5wdXQoKSBmaWxlUGFuZWxUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgcmV0cnlGaWxlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGluZGV4OiBudW1iZXI7IGNtcFJlZjogc3ltYm9sIH0+KCk7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGBkYXRhLWN5YCBvZiB0aGUgZWxlbWVudC4gSWYgbm90IHNldCwgdGhlIGZpcnN0IGNvbXBvbmVudCBpbnN0YW5jZSB3aWxsIGhhdmUgYGRhdGEtY3lgID0gYFwib25lbXJ2YS1tYXQtbXVsdGktc2VsZWN0LTBcImAuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYGh0bWxcbiAgICogPG9uZW1ydmEtbWF0LW11bHRpLXNlbGVjdCBpZD1cIm15LWZpcnN0LW11bHRpLXNlbGVjdFwiPjwvb25lbXJ2YS1tYXQtbXVsdGktc2VsZWN0PlxuICAgKiBgYGBcbiAgICovXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLWN5JylcbiAgQElucHV0KClcbiAgcHVibGljIGRhdGFDeSA9IGBvbmVtcnZhLW1hdC1tdWx0aS1zZWxlY3QtJHtORVhUX0lEKyt9YDtcblxuICBAVmlld0NoaWxkKGBmaWxlRHJvcFJlZmApXG4gIGZpbGVEcm9wUmVmITogRWxlbWVudFJlZjtcblxuICBpbnB1dElkID0gYGZpbGVEcm9wUmVmLSR7TkVYVF9JRH1gO1xuICBtYXhGaWxlU2l6ZUZvcm1hdHRlZCA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwdWJsaWMgbWltZUNETjogT25lbVJ2YUNETk1pbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmlsZVVwbG9hZFN0b3JlOiBPbmVtcnZhTWF0RmlsZVVwbG9hZFN0b3JlLFxuICApIHtcbiAgICB0aGlzLmZpbGVzJCA9IGZpbGVVcGxvYWRTdG9yZS5maWxlcyQ7XG5cbiAgICB0aGlzLmZpbGVVcGxvYWRFcnJvck1lc3NhZ2UkID0gdGhpcy5maWxlVXBsb2FkU3RvcmUuZmlsZVVwbG9hZEVycm9yJDtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFjY2VwdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmFjY2VwdFN0cmluZyQgPSB0aGlzLm1pbWVDRE5cbiAgICAgICAgLmdldEV4dGVuc2lvbnNGb3JNaW1lKHRoaXMuYWNjZXB0KVxuICAgICAgICAucGlwZShtYXAoYXJyID0+IGFyci5tYXAoaXRlbSA9PiBgLiR7aXRlbX1gKS5qb2luKCcsICcpKSk7XG4gICAgICB0aGlzLmZpbGVVcGxvYWRTdG9yZS5zZXRBY2NlcHQodGhpcy5hY2NlcHQpO1xuICAgIH1cblxuICAgIHRoaXMubWF4RmlsZVNpemVGb3JtYXR0ZWQgPSBmb3JtYXRCeXRlcyh0aGlzLm1heEZpbGVTaXplKTtcbiAgICB0aGlzLmZpbGVVcGxvYWRTdG9yZS5zZXRNYXhGaWxlU2l6ZSh0aGlzLm1heEZpbGVTaXplKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBvbiBmaWxlIGRyb3AgaGFuZGxlclxuICAgKi9cbiAgb25GaWxlRHJvcHBlZCgkZXZlbnQ6IEZpbGVMaXN0KSB7XG4gICAgdGhpcy5wcmVwYXJlRmlsZXNMaXN0KCRldmVudCk7XG4gIH1cblxuICAvKipcbiAgICogaGFuZGxlIGZpbGUgZnJvbSBicm93c2luZ1xuICAgKi9cbiAgZmlsZUJyb3dzZUhhbmRsZXIoJGV2ZW50OiBFdmVudCkge1xuICAgIGNvbnN0IGVsbSA9ICRldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCxcbiAgICAgIGZpbGVzID0gZWxtLmZpbGVzIGFzIEZpbGVMaXN0O1xuXG4gICAgdGhpcy5wcmVwYXJlRmlsZXNMaXN0KGZpbGVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IEZpbGVzIGxpc3QgdG8gbm9ybWFsIGFycmF5IGxpc3RcbiAgICogQHBhcmFtIGZpbGVzIChGaWxlcyBMaXN0KVxuICAgKi9cbiAgcHJlcGFyZUZpbGVzTGlzdChmaWxlczogRmlsZUxpc3QpIHtcbiAgICB0aGlzLmZpbGVVcGxvYWRTdG9yZS5maWxlcyQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoY3VycmVudEZpbGVzID0+IHtcbiAgICAgIC8vIGlmIG51bWJlck9mZmlsZXMgaXMgc2V0IGFuZCB0aGUgdG90YWwgbGVuZ3RoIG9mIGZpbGVzIGlzIHNtYWxcbiAgICAgIC8vIGxlciB0aGFuIGl0XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMubnVtYmVyT2ZGaWxlcyA+IDAgJiZcbiAgICAgICAgZmlsZXMubGVuZ3RoICsgY3VycmVudEZpbGVzLmxlbmd0aCA+IHRoaXMubnVtYmVyT2ZGaWxlc1xuICAgICAgKSB7XG4gICAgICAgIC8vIHRvbyBtYW55IGZpbGVzXG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAnZmlsZS51cGxvYWQudG9vLm1hbnkuZmlsZXMnLFxuICAgICAgICApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5tYXhUb3RhbEZpbGVTaXplID4gMCkge1xuICAgICAgICBjb25zdCB0b3RhbDogbnVtYmVyID1cbiAgICAgICAgICBPYmplY3QudmFsdWVzKGZpbGVzKS5yZWR1Y2UoKHN1bSwgb2JqKSA9PiBzdW0gKyBvYmouc2l6ZSwgMCkgK1xuICAgICAgICAgIGN1cnJlbnRGaWxlcy5yZWR1Y2UoKHN1bSwgb2JqKSA9PiBzdW0gKyBvYmouc2l6ZSwgMCk7XG4gICAgICAgIGlmICh0b3RhbCA+IHRoaXMubWF4VG90YWxGaWxlU2l6ZSkge1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICdmaWxlLnVwbG9hZC50b3RhbC5tYXguc2l6ZS5leGNlZWRlZCcsXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gY2xlYXIgZXJyb3IgbWVzc2FnZVxuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnJztcblxuICAgICAgY29uc3QgZnM6IFByb2dyZXNzRmlsZVtdID0gW107XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGZpbGUgPSBmaWxlcy5pdGVtKGkpO1xuICAgICAgICBpZiAoZmlsZSA9PT0gbnVsbCkgY29udGludWU7XG5cbiAgICAgICAgY29uc3QgaXRlbTogUHJvZ3Jlc3NGaWxlID0ge1xuICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgcHJvZ3Jlc3M6IDAsXG4gICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgICAgICB1cmw6IG51bGwsXG4gICAgICAgICAgaWQ6IG51bGwsXG4gICAgICAgICAgZW5hYmxlUHJvZ3Jlc3NCYXI6IHRoaXMudXBsb2FkT25Ecm9wLFxuXG4gICAgICAgICAgbmFtZTogZmlsZSEubmFtZSxcbiAgICAgICAgICBsYXN0TW9kaWZpZWQ6IGZpbGUhLmxhc3RNb2RpZmllZCxcbiAgICAgICAgICBzaXplOiBmaWxlIS5zaXplLFxuICAgICAgICAgIHR5cGU6IGZpbGUhLnR5cGUsXG4gICAgICAgIH07XG5cbiAgICAgICAgZnMucHVzaChpdGVtKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMudXBsb2FkT25Ecm9wKSB0aGlzLmZpbGVVcGxvYWRTdG9yZS51cGxvYWRGaWxlcyhmcyk7XG4gICAgICBlbHNlIHRoaXMuZmlsZVVwbG9hZFN0b3JlLmFkZFNldmVyYWxGb3JQb3RlbnRpYWxVcGxvYWQoZnMpO1xuXG4gICAgICB0aGlzLmZpbGVEcm9wUmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBudWxsO1xuICAgIH0pO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsZXMkIHwgYXN5bmMgYXMgZmlsZXNcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwib25lbXJ2YS1tYXQtZmlsZS11cGxvYWQtZHJvcC1hcmVhXCJcbiAgICBhcHBEbmRcbiAgICAoZmlsZURyb3BwZWQpPVwib25GaWxlRHJvcHBlZCgkZXZlbnQpXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnZnUtZXJyb3InOiBlcnJvck1lc3NhZ2UgIT09ICcnLFxuICAgICAgZmlsZWluOiBmaWxlcy5sZW5ndGggPiAwLFxuICAgIH1cIlxuICA+XG4gICAgPGlucHV0XG4gICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAjZmlsZURyb3BSZWZcbiAgICAgIFthdHRyLmlkXT1cImlucHV0SWRcIlxuICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICBtdWx0aXBsZVxuICAgICAgKGNoYW5nZSk9XCJmaWxlQnJvd3NlSGFuZGxlcigkZXZlbnQpXCJcbiAgICAgIGFjY2VwdD1cInt7IGFjY2VwdFN0cmluZyQgfCBhc3luYyB9fVwiXG4gICAgLz5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImRvd25sb2FkLW91dGVyXCJcbiAgICAgICpuZ0lmPVwibnVtYmVyT2ZGaWxlcyA9PT0gMCB8fCBudW1iZXJPZkZpbGVzID4gZmlsZXMubGVuZ3RoXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiZG93bmxvYWQtaWNvblwiPlxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJvbmVtcnZhLXVwbG9hZCB4eGxhcmdlXCI+ZG93bmxvYWQ8L21hdC1pY29uPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJkb3dubG9hZC10ZXh0XCI+XG4gICAgICAgIHt7IGRyb3BGaWxlc0hlcmVUZXh0VHJhbnNsYXRpb25LZXkgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAge3sgJ2ZpbGUudXBsb2FkLm9yJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8bGFiZWwgZm9yPVwie3sgaW5wdXRJZCB9fVwiIGNsYXNzPVwiY29udGVudFwiPlxuICAgICAgICAgIHt7ICdmaWxlLnVwbG9hZC5icm93c2UuZm9yLmZpbGUnIHwgdHJhbnNsYXRlIH19IDwvbGFiZWxcbiAgICAgICAgPjxiciAvPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInJlc3RyaWN0aW9uc1wiICpuZ0lmPVwibWF4RmlsZVNpemUgPiAwXCI+XG4gICAgICAgICAge3sgJ2ZpbGUudXBsb2FkLm1heGltdW0nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAge3sgbWF4RmlsZVNpemVGb3JtYXR0ZWQgfX1cblxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiYWNjZXB0Lmxlbmd0aCA+IDBcIj57eyAnfCAnIH19PC9zcGFuPlxuXG4gICAgICAgICAge3sgYWNjZXB0U3RyaW5nJCB8IGFzeW5jIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDx1bCBjbGFzcz1cImZpbGVzLWxpc3RcIj5cbiAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZmlsZSBvZiBmaWxlc1wiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIGZpbGVQYW5lbFRlbXBsYXRlO1xuICAgICAgICAgICAgY29udGV4dDogeyBmaWxlLCAkaW1wbGljaXQ6IGZpbGUgfVxuICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9kaXY+XG5cbiAgPG1hdC1lcnJvciAqbmdJZj1cImVycm9yTWVzc2FnZVwiPnt7IGVycm9yTWVzc2FnZSB8IHRyYW5zbGF0ZSB9fTwvbWF0LWVycm9yPlxuXG4gIDxtYXQtZXJyb3IgKm5nSWY9XCJmaWxlVXBsb2FkRXJyb3JNZXNzYWdlJCB8IGFzeW5jIGFzIGZpbGVVcGxvYWRFcnJvck1lc3NhZ2VcIj5cbiAgICB7eyBmaWxlVXBsb2FkRXJyb3JNZXNzYWdlIHwgdHJhbnNsYXRlIH19XG4gIDwvbWF0LWVycm9yPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -1,12 +1,31 @@
1
1
  export const ONEMRVA_FORMAT = {
2
2
  parse: {
3
- dateInput: 'LL',
3
+ dateInput: 'dd/MM/yyyy',
4
4
  },
5
5
  display: {
6
6
  dateInput: 'dd/MM/yyyy',
7
7
  monthYearLabel: 'MMM yyyy',
8
- dateA11yLabel: 'LL',
8
+ dateA11yLabel: 'DDD',
9
9
  monthYearA11yLabel: 'MMMM yyyy',
10
10
  },
11
11
  };
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5mb3JtYXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vc2hhcmVkL3NyYy9saWIvY29uc3RhbnRzL2RhdGUuZm9ybWF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBbUI7SUFDNUMsS0FBSyxFQUFFO1FBQ0wsU0FBUyxFQUFFLElBQUk7S0FDaEI7SUFDRCxPQUFPLEVBQUU7UUFDUCxTQUFTLEVBQUUsWUFBWTtRQUN2QixjQUFjLEVBQUUsVUFBVTtRQUMxQixhQUFhLEVBQUUsSUFBSTtRQUNuQixrQkFBa0IsRUFBRSxXQUFXO0tBQ2hDO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1hdERhdGVGb3JtYXRzIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBPTkVNUlZBX0ZPUk1BVDogTWF0RGF0ZUZvcm1hdHMgPSB7XG4gIHBhcnNlOiB7XG4gICAgZGF0ZUlucHV0OiAnTEwnLFxuICB9LFxuICBkaXNwbGF5OiB7XG4gICAgZGF0ZUlucHV0OiAnZGQvTU0veXl5eScsXG4gICAgbW9udGhZZWFyTGFiZWw6ICdNTU0geXl5eScsXG4gICAgZGF0ZUExMXlMYWJlbDogJ0xMJyxcbiAgICBtb250aFllYXJBMTF5TGFiZWw6ICdNTU1NIHl5eXknLFxuICB9LFxufTtcbiJdfQ==
12
+ export const ONEMRVA_MAT_LUXON_DATE_FORMATS = {
13
+ parse: {
14
+ dateInput: [
15
+ 'ddLLyyyy',
16
+ 'd/L/yyyy',
17
+ 'dd/L/yyyy',
18
+ 'd/LL/yyyy',
19
+ 'd.L.yyyy',
20
+ 'dd.L.yyyy',
21
+ 'd.LL.yyyy',
22
+ ],
23
+ },
24
+ display: {
25
+ dateInput: 'dd/LL/yyyy',
26
+ monthYearLabel: 'LLL yyyy',
27
+ dateA11yLabel: 'DDD',
28
+ monthYearA11yLabel: 'LLL yyyy',
29
+ },
30
+ };
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5mb3JtYXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vc2hhcmVkL3NyYy9saWIvY29uc3RhbnRzL2RhdGUuZm9ybWF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBbUI7SUFDNUMsS0FBSyxFQUFFO1FBQ0wsU0FBUyxFQUFFLFlBQVk7S0FDeEI7SUFDRCxPQUFPLEVBQUU7UUFDUCxTQUFTLEVBQUUsWUFBWTtRQUN2QixjQUFjLEVBQUUsVUFBVTtRQUMxQixhQUFhLEVBQUUsS0FBSztRQUNwQixrQkFBa0IsRUFBRSxXQUFXO0tBQ2hDO0NBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFtQjtJQUM1RCxLQUFLLEVBQUU7UUFDTCxTQUFTLEVBQUU7WUFDVCxVQUFVO1lBQ1YsVUFBVTtZQUNWLFdBQVc7WUFDWCxXQUFXO1lBQ1gsVUFBVTtZQUNWLFdBQVc7WUFDWCxXQUFXO1NBQ1o7S0FDRjtJQUNELE9BQU8sRUFBRTtRQUNQLFNBQVMsRUFBRSxZQUFZO1FBQ3ZCLGNBQWMsRUFBRSxVQUFVO1FBQzFCLGFBQWEsRUFBRSxLQUFLO1FBQ3BCLGtCQUFrQixFQUFFLFVBQVU7S0FDL0I7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWF0RGF0ZUZvcm1hdHMgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcblxuZXhwb3J0IGNvbnN0IE9ORU1SVkFfRk9STUFUOiBNYXREYXRlRm9ybWF0cyA9IHtcbiAgcGFyc2U6IHtcbiAgICBkYXRlSW5wdXQ6ICdkZC9NTS95eXl5JyxcbiAgfSxcbiAgZGlzcGxheToge1xuICAgIGRhdGVJbnB1dDogJ2RkL01NL3l5eXknLFxuICAgIG1vbnRoWWVhckxhYmVsOiAnTU1NIHl5eXknLFxuICAgIGRhdGVBMTF5TGFiZWw6ICdEREQnLFxuICAgIG1vbnRoWWVhckExMXlMYWJlbDogJ01NTU0geXl5eScsXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgT05FTVJWQV9NQVRfTFVYT05fREFURV9GT1JNQVRTOiBNYXREYXRlRm9ybWF0cyA9IHtcbiAgcGFyc2U6IHtcbiAgICBkYXRlSW5wdXQ6IFtcbiAgICAgICdkZExMeXl5eScsXG4gICAgICAnZC9ML3l5eXknLFxuICAgICAgJ2RkL0wveXl5eScsXG4gICAgICAnZC9MTC95eXl5JyxcbiAgICAgICdkLkwueXl5eScsXG4gICAgICAnZGQuTC55eXl5JyxcbiAgICAgICdkLkxMLnl5eXknLFxuICAgIF0sXG4gIH0sXG4gIGRpc3BsYXk6IHtcbiAgICBkYXRlSW5wdXQ6ICdkZC9MTC95eXl5JyxcbiAgICBtb250aFllYXJMYWJlbDogJ0xMTCB5eXl5JyxcbiAgICBkYXRlQTExeUxhYmVsOiAnREREJyxcbiAgICBtb250aFllYXJBMTF5TGFiZWw6ICdMTEwgeXl5eScsXG4gIH0sXG59O1xuIl19
@@ -565,6 +565,7 @@ class OnemrvaMatFileUploadComponent {
565
565
  this.accept = [];
566
566
  this.maxFileSize = 0;
567
567
  this.numberOfFiles = 0;
568
+ this.maxTotalFileSize = 0;
568
569
  this.uploadOnDrop = true;
569
570
  this.initialFiles = [];
570
571
  this.errorMessage = '';
@@ -612,46 +613,54 @@ class OnemrvaMatFileUploadComponent {
612
613
  * @param files (Files List)
613
614
  */
614
615
  prepareFilesList(files) {
615
- this.fileUploadStore.files$.pipe(take(1)).subscribe(value => {
616
- // if numberOffiles is set and the total length of files is smaller than it
616
+ this.fileUploadStore.files$.pipe(take(1)).subscribe(currentFiles => {
617
+ // if numberOffiles is set and the total length of files is smal
618
+ // ler than it
617
619
  if (this.numberOfFiles > 0 &&
618
- files.length + value.length > this.numberOfFiles) {
620
+ files.length + currentFiles.length > this.numberOfFiles) {
619
621
  // too many files
620
622
  this.errorMessage = this.translate.instant('file.upload.too.many.files');
623
+ return;
621
624
  }
622
- else {
623
- // clear error message
624
- this.errorMessage = '';
625
- const fs = [];
626
- for (let i = 0; i < files.length; i++) {
627
- const file = files.item(i);
628
- if (file === null)
629
- continue;
630
- const item = {
631
- file,
632
- progress: 0,
633
- message: '',
634
- color: 'primary',
635
- url: null,
636
- id: null,
637
- enableProgressBar: this.uploadOnDrop,
638
- name: file.name,
639
- lastModified: file.lastModified,
640
- size: file.size,
641
- type: file.type,
642
- };
643
- fs.push(item);
625
+ if (this.maxTotalFileSize > 0) {
626
+ const total = Object.values(files).reduce((sum, obj) => sum + obj.size, 0) +
627
+ currentFiles.reduce((sum, obj) => sum + obj.size, 0);
628
+ if (total > this.maxTotalFileSize) {
629
+ this.errorMessage = this.translate.instant('file.upload.total.max.size.exceeded');
630
+ return;
644
631
  }
645
- if (this.uploadOnDrop)
646
- this.fileUploadStore.uploadFiles(fs);
647
- else
648
- this.fileUploadStore.addSeveralForPotentialUpload(fs);
649
- this.fileDropRef.nativeElement.value = null;
650
632
  }
633
+ // clear error message
634
+ this.errorMessage = '';
635
+ const fs = [];
636
+ for (let i = 0; i < files.length; i++) {
637
+ const file = files.item(i);
638
+ if (file === null)
639
+ continue;
640
+ const item = {
641
+ file,
642
+ progress: 0,
643
+ message: '',
644
+ color: 'primary',
645
+ url: null,
646
+ id: null,
647
+ enableProgressBar: this.uploadOnDrop,
648
+ name: file.name,
649
+ lastModified: file.lastModified,
650
+ size: file.size,
651
+ type: file.type,
652
+ };
653
+ fs.push(item);
654
+ }
655
+ if (this.uploadOnDrop)
656
+ this.fileUploadStore.uploadFiles(fs);
657
+ else
658
+ this.fileUploadStore.addSeveralForPotentialUpload(fs);
659
+ this.fileDropRef.nativeElement.value = null;
651
660
  });
652
661
  }
653
662
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: OnemrvaMatFileUploadComponent, deps: [{ token: i1$1.MatDialog }, { token: i2$1.OnemRvaCDNMimeService }, { token: i3$1.TranslateService }, { token: OnemrvaMatFileUploadStore }], target: i0.ɵɵFactoryTarget.Component }); }
654
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: OnemrvaMatFileUploadComponent, selector: "onemrva-mat-file-upload", inputs: { accept: "accept", maxFileSize: "maxFileSize", numberOfFiles: "numberOfFiles", uploadOnDrop: "uploadOnDrop", initialFiles: "initialFiles", errorMessage: "errorMessage", dropFilesHereTextTranslationKey: "dropFilesHereTextTranslationKey", filePanelTemplate: "filePanelTemplate", dataCy: "dataCy" }, host: { properties: { "attr.data-cy": "this.dataCy" } }, viewQueries: [{ propertyName: "fileDropRef", first: true, predicate: ["fileDropRef"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"files$ | async as files\">\n <div\n class=\"onemrva-mat-file-upload-drop-area\"\n appDnd\n (fileDropped)=\"onFileDropped($event)\"\n [ngClass]=\"{\n 'fu-error': errorMessage !== '',\n filein: files.length > 0,\n }\"\n >\n <input\n type=\"file\"\n #fileDropRef\n [attr.id]=\"inputId\"\n role=\"button\"\n multiple\n (change)=\"fileBrowseHandler($event)\"\n accept=\"{{ acceptString$ | async }}\"\n />\n <div\n class=\"download-outer\"\n *ngIf=\"numberOfFiles === 0 || numberOfFiles > files.length\"\n >\n <div class=\"download-icon\">\n <mat-icon class=\"onemrva-upload xxlarge\">download</mat-icon>\n </div>\n\n <div class=\"download-text\">\n {{ dropFilesHereTextTranslationKey | translate }}\n {{ 'file.upload.or' | translate }}\n <label for=\"{{ inputId }}\" class=\"content\">\n {{ 'file.upload.browse.for.file' | translate }} </label\n ><br />\n <span class=\"restrictions\" *ngIf=\"maxFileSize > 0\">\n {{ 'file.upload.maximum' | translate }}\n {{ maxFileSizeFormatted }}\n\n <span *ngIf=\"accept.length > 0\">{{ '| ' }}</span>\n\n {{ acceptString$ | async }}\n </span>\n </div>\n </div>\n <ul class=\"files-list\">\n <li *ngFor=\"let file of files\">\n <ng-container\n *ngTemplateOutlet=\"\n filePanelTemplate;\n context: { file, $implicit: file }\n \"\n ></ng-container>\n </li>\n </ul>\n </div>\n\n <mat-error *ngIf=\"errorMessage\">{{ errorMessage | translate }}</mat-error>\n\n <mat-error *ngIf=\"fileUploadErrorMessage$ | async as fileUploadErrorMessage\">\n {{ fileUploadErrorMessage | translate }}\n </mat-error>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: DndDirective, selector: "[appDnd]", outputs: ["fileDropped"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }], animations: [
663
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: OnemrvaMatFileUploadComponent, selector: "onemrva-mat-file-upload", inputs: { accept: "accept", maxFileSize: "maxFileSize", numberOfFiles: "numberOfFiles", maxTotalFileSize: "maxTotalFileSize", uploadOnDrop: "uploadOnDrop", initialFiles: "initialFiles", errorMessage: "errorMessage", dropFilesHereTextTranslationKey: "dropFilesHereTextTranslationKey", filePanelTemplate: "filePanelTemplate", dataCy: "dataCy" }, host: { properties: { "attr.data-cy": "this.dataCy" } }, viewQueries: [{ propertyName: "fileDropRef", first: true, predicate: ["fileDropRef"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"files$ | async as files\">\n <div\n class=\"onemrva-mat-file-upload-drop-area\"\n appDnd\n (fileDropped)=\"onFileDropped($event)\"\n [ngClass]=\"{\n 'fu-error': errorMessage !== '',\n filein: files.length > 0,\n }\"\n >\n <input\n type=\"file\"\n #fileDropRef\n [attr.id]=\"inputId\"\n role=\"button\"\n multiple\n (change)=\"fileBrowseHandler($event)\"\n accept=\"{{ acceptString$ | async }}\"\n />\n <div\n class=\"download-outer\"\n *ngIf=\"numberOfFiles === 0 || numberOfFiles > files.length\"\n >\n <div class=\"download-icon\">\n <mat-icon class=\"onemrva-upload xxlarge\">download</mat-icon>\n </div>\n\n <div class=\"download-text\">\n {{ dropFilesHereTextTranslationKey | translate }}\n {{ 'file.upload.or' | translate }}\n <label for=\"{{ inputId }}\" class=\"content\">\n {{ 'file.upload.browse.for.file' | translate }} </label\n ><br />\n <span class=\"restrictions\" *ngIf=\"maxFileSize > 0\">\n {{ 'file.upload.maximum' | translate }}\n {{ maxFileSizeFormatted }}\n\n <span *ngIf=\"accept.length > 0\">{{ '| ' }}</span>\n\n {{ acceptString$ | async }}\n </span>\n </div>\n </div>\n <ul class=\"files-list\">\n <li *ngFor=\"let file of files\">\n <ng-container\n *ngTemplateOutlet=\"\n filePanelTemplate;\n context: { file, $implicit: file }\n \"\n ></ng-container>\n </li>\n </ul>\n </div>\n\n <mat-error *ngIf=\"errorMessage\">{{ errorMessage | translate }}</mat-error>\n\n <mat-error *ngIf=\"fileUploadErrorMessage$ | async as fileUploadErrorMessage\">\n {{ fileUploadErrorMessage | translate }}\n </mat-error>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: DndDirective, selector: "[appDnd]", outputs: ["fileDropped"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }], animations: [
655
664
  trigger('inOutAnimation', [
656
665
  state('in', style({ opacity: 1 })),
657
666
  transition(':enter', [
@@ -706,6 +715,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
706
715
  type: Input
707
716
  }], numberOfFiles: [{
708
717
  type: Input
718
+ }], maxTotalFileSize: [{
719
+ type: Input
709
720
  }], uploadOnDrop: [{
710
721
  type: Input
711
722
  }], initialFiles: [{