@onemrvapublic/design-system 17.0.56 → 17.0.57

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.
@@ -101,6 +101,7 @@ export class OnemrvaMatFileUploadComponent {
101
101
  this.fileUploadStore.uploadFiles(fs);
102
102
  else
103
103
  this.fileUploadStore.addSeveralForPotentialUpload(fs);
104
+ this.fileDropRef.nativeElement.value = null;
104
105
  }, 400);
105
106
  }
106
107
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: OnemrvaMatFileUploadComponent, deps: [{ token: i1.MatDialog }, { token: i2.OnemrvaMatFileUploadStore }], target: i0.ɵɵFactoryTarget.Component });
@@ -174,4 +175,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
174
175
  type: ViewChild,
175
176
  args: [`fileDropRef`]
176
177
  }] } });
177
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lbXJ2YS1tYXQtZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25lbXJ2YS9kZXNpZ24tc3lzdGVtL21hdC1maWxlLXVwbG9hZC9zcmMvY29tcG9uZW50cy9vbmVtcnZhLW1hdC1maWxlLXVwbG9hZC9vbmVtcnZhLW1hdC1maWxlLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbWF0LWZpbGUtdXBsb2FkL3NyYy9jb21wb25lbnRzL29uZW1ydmEtbWF0LWZpbGUtdXBsb2FkL29uZW1ydmEtbWF0LWZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUNMLEtBQUssRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE9BQU8sRUFDUCxPQUFPLEVBQ1AsVUFBVSxHQUNYLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUNMLFdBQVcsR0FHWixNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7Ozs7QUFHMUMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBbUNoQixNQUFNLE9BQU8sNkJBQTZCO0lBNEMvQjtJQUNDO0lBM0NWLE1BQU0sR0FBa0IsRUFBRSxDQUFDO0lBQzNCLFlBQVksR0FBRyxFQUFFLENBQUM7SUFHbEIsV0FBVyxHQUFXLENBQUMsQ0FBQztJQUd4QixZQUFZLEdBQVksSUFBSSxDQUFDO0lBRzdCLFlBQVksR0FBbUIsRUFBRSxDQUFDO0lBR2xDLFlBQVksR0FBVyxFQUFFLENBQUM7SUFFMUIsdUJBQXVCLENBQXFCO0lBRTVDLE1BQU0sQ0FBdUM7SUFFcEMsaUJBQWlCLENBQW9CO0lBRTlDLFNBQVMsR0FBRyxJQUFJLFlBQVksRUFBcUMsQ0FBQztJQUVsRTs7Ozs7OztPQU9HO0lBR0ksTUFBTSxHQUFHLDRCQUE0QixPQUFPLEVBQUUsRUFBRSxDQUFDO0lBR3hELFdBQVcsQ0FBYztJQUV6QixPQUFPLEdBQUcsZUFBZSxPQUFPLEVBQUUsQ0FBQztJQUNuQyxvQkFBb0IsR0FBVyxFQUFFLENBQUM7SUFFbEMsWUFDUyxNQUFpQixFQUNoQixlQUEwQztRQUQzQyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2hCLG9CQUFlLEdBQWYsZUFBZSxDQUEyQjtRQUVsRCxJQUFJLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUM7UUFFckMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUM7SUFDdkUsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMxQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNO2lCQUM1QixHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDWCxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN0QyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDakIsQ0FBQyxDQUFDO2lCQUNELE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNkLE9BQU8sR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDeEIsQ0FBQyxDQUFDO2lCQUNELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUVkLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM3QztRQUVELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhLENBQUMsTUFBZ0I7UUFDNUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNILGlCQUFpQixDQUFDLE1BQWE7UUFDN0IsSUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQTBCLEVBQ3pDLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBaUIsQ0FBQztRQUVoQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7T0FHRztJQUNILGdCQUFnQixDQUFDLEtBQWU7UUFDOUIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLE1BQU0sRUFBRSxHQUFtQixFQUFFLENBQUM7WUFDOUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3JDLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pCLElBQUksSUFBSSxLQUFLLElBQUk7b0JBQUUsU0FBUztnQkFFNUIsSUFBSSxJQUFJLEdBQWlCO29CQUN2QixJQUFJO29CQUNKLFFBQVEsRUFBRSxDQUFDO29CQUNYLE9BQU8sRUFBRSxFQUFFO29CQUNYLEtBQUssRUFBRSxTQUFTO29CQUNoQixHQUFHLEVBQUUsSUFBSTtvQkFDVCxFQUFFLEVBQUUsSUFBSTtvQkFDUixpQkFBaUIsRUFBRSxJQUFJLENBQUMsWUFBWTtvQkFFcEMsSUFBSSxFQUFFLElBQUssQ0FBQyxJQUFJO29CQUNoQixZQUFZLEVBQUUsSUFBSyxDQUFDLFlBQVk7b0JBQ2hDLElBQUksRUFBRSxJQUFLLENBQUMsSUFBSTtvQkFDaEIsSUFBSSxFQUFFLElBQUssQ0FBQyxJQUFJO2lCQUNqQixDQUFDO2dCQUVGLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDZjtZQUVELElBQUksSUFBSSxDQUFDLFlBQVk7Z0JBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7O2dCQUN2RCxJQUFJLENBQUMsZUFBZSxDQUFDLDRCQUE0QixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdELENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7dUdBeEhVLDZCQUE2QjsyRkFBN0IsNkJBQTZCLGtiQy9EMUMsd3VEQXFEQSxzOEJEcEJjO1lBQ1YsT0FBTyxDQUFDLGdCQUFnQixFQUFFO2dCQUN4QixLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNsQyxVQUFVLENBQUMsUUFBUSxFQUFFO29CQUNuQixPQUFPLENBQ0wsR0FBRyxFQUNILFNBQVMsQ0FBQzt3QkFDUixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQzt3QkFDaEMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7d0JBQ3RDLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO3dCQUNwQyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQzt3QkFDdEMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7cUJBQ2pDLENBQUMsQ0FDSDtpQkFDRixDQUFDO2dCQUNGLFVBQVUsQ0FBQyxRQUFRLEVBQUU7b0JBQ25CLE9BQU8sQ0FDTCxHQUFHLEVBQ0gsU0FBUyxDQUFDO3dCQUNSLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO3dCQUNoQyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQzt3QkFDdEMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7d0JBQ3BDLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDO3dCQUN0QyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztxQkFDakMsQ0FBQyxDQUNIO2lCQUNGLENBQUM7YUFDSCxDQUFDO1NBQ0g7OzJGQUVVLDZCQUE2QjtrQkFqQ3pDLFNBQVM7K0JBQ0UseUJBQXlCLGNBRXZCO3dCQUNWLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRTs0QkFDeEIsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQzs0QkFDbEMsVUFBVSxDQUFDLFFBQVEsRUFBRTtnQ0FDbkIsT0FBTyxDQUNMLEdBQUcsRUFDSCxTQUFTLENBQUM7b0NBQ1IsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7b0NBQ2hDLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDO29DQUN0QyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztvQ0FDcEMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7b0NBQ3RDLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO2lDQUNqQyxDQUFDLENBQ0g7NkJBQ0YsQ0FBQzs0QkFDRixVQUFVLENBQUMsUUFBUSxFQUFFO2dDQUNuQixPQUFPLENBQ0wsR0FBRyxFQUNILFNBQVMsQ0FBQztvQ0FDUixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztvQ0FDaEMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7b0NBQ3RDLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO29DQUNwQyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQztvQ0FDdEMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7aUNBQ2pDLENBQUMsQ0FDSDs2QkFDRixDQUFDO3lCQUNILENBQUM7cUJBQ0g7c0hBSUQsTUFBTTtzQkFETCxLQUFLO2dCQUtOLFdBQVc7c0JBRFYsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFPRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBY0MsTUFBTTtzQkFGWixXQUFXO3VCQUFDLGNBQWM7O3NCQUMxQixLQUFLO2dCQUlOLFdBQVc7c0JBRFYsU0FBUzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtaW1lVHlwZXMgfSBmcm9tICdtaW1lLXdyYXBwZXInO1xuaW1wb3J0IHtcbiAgc3RhdGUsXG4gIGtleWZyYW1lcyxcbiAgc3R5bGUsXG4gIGFuaW1hdGUsXG4gIHRyaWdnZXIsXG4gIHRyYW5zaXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtcbiAgZm9ybWF0Qnl0ZXMsXG4gIFByb2dyZXNzRmlsZSxcbiAgUmVmZXJlbmNlZFByb2dyZXNzRmlsZSxcbn0gZnJvbSAnLi4vLi4vbW9kZWxzL3Byb2dyZXNzLWZpbGUubW9kZWwnO1xuaW1wb3J0IHsgT25lbXJ2YU1hdEZpbGVVcGxvYWRTdG9yZSB9IGZyb20gJy4uLy4uL29uZW1ydmEtbWF0LWZpbGUtdXBsb2FkLnN0b3JlJztcblxubGV0IE5FWFRfSUQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvbmVtcnZhLW1hdC1maWxlLXVwbG9hZCcsXG4gIHRlbXBsYXRlVXJsOiAnb25lbXJ2YS1tYXQtZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignaW5PdXRBbmltYXRpb24nLCBbXG4gICAgICBzdGF0ZSgnaW4nLCBzdHlsZSh7IG9wYWNpdHk6IDEgfSkpLFxuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xuICAgICAgICBhbmltYXRlKFxuICAgICAgICAgIDMwMCxcbiAgICAgICAgICBrZXlmcmFtZXMoW1xuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCBvZmZzZXQ6IDAgfSksXG4gICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAuMjUsIG9mZnNldDogMC4yNSB9KSxcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMC41LCBvZmZzZXQ6IDAuNSB9KSxcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMC43NSwgb2Zmc2V0OiAwLjc1IH0pLFxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCBvZmZzZXQ6IDEgfSksXG4gICAgICAgICAgXSlcbiAgICAgICAgKSxcbiAgICAgIF0pLFxuICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xuICAgICAgICBhbmltYXRlKFxuICAgICAgICAgIDMwMCxcbiAgICAgICAgICBrZXlmcmFtZXMoW1xuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCBvZmZzZXQ6IDAgfSksXG4gICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAuNzUsIG9mZnNldDogMC4yNSB9KSxcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMC41LCBvZmZzZXQ6IDAuNSB9KSxcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMC4yNSwgb2Zmc2V0OiAwLjc1IH0pLFxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCBvZmZzZXQ6IDEgfSksXG4gICAgICAgICAgXSlcbiAgICAgICAgKSxcbiAgICAgIF0pLFxuICAgIF0pLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBPbmVtcnZhTWF0RmlsZVVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIGFjY2VwdDogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICBhY2NlcHRTdHJpbmcgPSAnJztcblxuICBASW5wdXQoKVxuICBtYXhGaWxlU2l6ZTogbnVtYmVyID0gMDtcblxuICBASW5wdXQoKVxuICB1cGxvYWRPbkRyb3A6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIGluaXRpYWxGaWxlczogUHJvZ3Jlc3NGaWxlW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBlcnJvck1lc3NhZ2U6IHN0cmluZyA9ICcnO1xuXG4gIGZpbGVVcGxvYWRFcnJvck1lc3NhZ2UkOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgZmlsZXMkOiBPYnNlcnZhYmxlPFJlZmVyZW5jZWRQcm9ncmVzc0ZpbGVbXT47XG5cbiAgQElucHV0KCkgZmlsZVBhbmVsVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIHJldHJ5RmlsZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpbmRleDogbnVtYmVyOyBjbXBSZWY6IHN5bWJvbCB9PigpO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBgZGF0YS1jeWAgb2YgdGhlIGVsZW1lbnQuIElmIG5vdCBzZXQsIHRoZSBmaXJzdCBjb21wb25lbnQgaW5zdGFuY2Ugd2lsbCBoYXZlIGBkYXRhLWN5YCA9IGBcIm9uZW1ydmEtbWF0LW11bHRpLXNlbGVjdC0wXCJgLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGBodG1sXG4gICAqIDxvbmVtcnZhLW1hdC1tdWx0aS1zZWxlY3QgaWQ9XCJteS1maXJzdC1tdWx0aS1zZWxlY3RcIj48L29uZW1ydmEtbWF0LW11bHRpLXNlbGVjdD5cbiAgICogYGBgXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1jeScpXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkYXRhQ3kgPSBgb25lbXJ2YS1tYXQtbXVsdGktc2VsZWN0LSR7TkVYVF9JRCsrfWA7XG5cbiAgQFZpZXdDaGlsZChgZmlsZURyb3BSZWZgKVxuICBmaWxlRHJvcFJlZiE6IEVsZW1lbnRSZWY7XG5cbiAgaW5wdXRJZCA9IGBmaWxlRHJvcFJlZi0ke05FWFRfSUR9YDtcbiAgbWF4RmlsZVNpemVGb3JtYXR0ZWQ6IHN0cmluZyA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIGZpbGVVcGxvYWRTdG9yZTogT25lbXJ2YU1hdEZpbGVVcGxvYWRTdG9yZVxuICApIHtcbiAgICB0aGlzLmZpbGVzJCA9IGZpbGVVcGxvYWRTdG9yZS5maWxlcyQ7XG5cbiAgICB0aGlzLmZpbGVVcGxvYWRFcnJvck1lc3NhZ2UkID0gdGhpcy5maWxlVXBsb2FkU3RvcmUuZmlsZVVwbG9hZEVycm9yJDtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFjY2VwdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmFjY2VwdFN0cmluZyA9IHRoaXMuYWNjZXB0XG4gICAgICAgIC5tYXAoKHZhbCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHQgPSBtaW1lVHlwZXMuZ2V0RXh0ZW5zaW9uKHZhbCk7XG4gICAgICAgICAgcmV0dXJuIGAuJHt0fWA7XG4gICAgICAgIH0pXG4gICAgICAgIC5maWx0ZXIoKHZhbCkgPT4ge1xuICAgICAgICAgIHJldHVybiB2YWwubGVuZ3RoID4gMTtcbiAgICAgICAgfSlcbiAgICAgICAgLmpvaW4oJywgJyk7XG5cbiAgICAgIHRoaXMuZmlsZVVwbG9hZFN0b3JlLnNldEFjY2VwdCh0aGlzLmFjY2VwdCk7XG4gICAgfVxuXG4gICAgdGhpcy5tYXhGaWxlU2l6ZUZvcm1hdHRlZCA9IGZvcm1hdEJ5dGVzKHRoaXMubWF4RmlsZVNpemUpO1xuICAgIHRoaXMuZmlsZVVwbG9hZFN0b3JlLnNldE1heEZpbGVTaXplKHRoaXMubWF4RmlsZVNpemUpO1xuICB9XG5cbiAgLyoqXG4gICAqIG9uIGZpbGUgZHJvcCBoYW5kbGVyXG4gICAqL1xuICBvbkZpbGVEcm9wcGVkKCRldmVudDogRmlsZUxpc3QpIHtcbiAgICB0aGlzLnByZXBhcmVGaWxlc0xpc3QoJGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBoYW5kbGUgZmlsZSBmcm9tIGJyb3dzaW5nXG4gICAqL1xuICBmaWxlQnJvd3NlSGFuZGxlcigkZXZlbnQ6IEV2ZW50KSB7XG4gICAgbGV0IGVsbSA9ICRldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCxcbiAgICAgIGZpbGVzID0gZWxtLmZpbGVzIGFzIEZpbGVMaXN0O1xuXG4gICAgdGhpcy5wcmVwYXJlRmlsZXNMaXN0KGZpbGVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IEZpbGVzIGxpc3QgdG8gbm9ybWFsIGFycmF5IGxpc3RcbiAgICogQHBhcmFtIGZpbGVzIChGaWxlcyBMaXN0KVxuICAgKi9cbiAgcHJlcGFyZUZpbGVzTGlzdChmaWxlczogRmlsZUxpc3QpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGZzOiBQcm9ncmVzc0ZpbGVbXSA9IFtdO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgZmlsZSA9IGZpbGVzLml0ZW0oaSk7XG4gICAgICAgIGlmIChmaWxlID09PSBudWxsKSBjb250aW51ZTtcblxuICAgICAgICBsZXQgaXRlbTogUHJvZ3Jlc3NGaWxlID0ge1xuICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgcHJvZ3Jlc3M6IDAsXG4gICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgICAgICB1cmw6IG51bGwsXG4gICAgICAgICAgaWQ6IG51bGwsXG4gICAgICAgICAgZW5hYmxlUHJvZ3Jlc3NCYXI6IHRoaXMudXBsb2FkT25Ecm9wLFxuXG4gICAgICAgICAgbmFtZTogZmlsZSEubmFtZSxcbiAgICAgICAgICBsYXN0TW9kaWZpZWQ6IGZpbGUhLmxhc3RNb2RpZmllZCxcbiAgICAgICAgICBzaXplOiBmaWxlIS5zaXplLFxuICAgICAgICAgIHR5cGU6IGZpbGUhLnR5cGUsXG4gICAgICAgIH07XG5cbiAgICAgICAgZnMucHVzaChpdGVtKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMudXBsb2FkT25Ecm9wKSB0aGlzLmZpbGVVcGxvYWRTdG9yZS51cGxvYWRGaWxlcyhmcyk7XG4gICAgICBlbHNlIHRoaXMuZmlsZVVwbG9hZFN0b3JlLmFkZFNldmVyYWxGb3JQb3RlbnRpYWxVcGxvYWQoZnMpO1xuICAgIH0sIDQwMCk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJmaWxlcyQgfCBhc3luYyBhcyBmaWxlc1wiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJvbmVtcnZhLW1hdC1maWxlLXVwbG9hZC1kcm9wLWFyZWFcIlxuICAgIGFwcERuZFxuICAgIFtuZ0NsYXNzXT1cInsgZmlsZWluOiBmaWxlcy5sZW5ndGggPiAwIH1cIlxuICAgIChmaWxlRHJvcHBlZCk9XCJvbkZpbGVEcm9wcGVkKCRldmVudClcIlxuICAgIFtuZ0NsYXNzXT1cInsgJ2Z1LWVycm9yJzogZXJyb3JNZXNzYWdlICE9PSAnJyB9XCJcbiAgPlxuICAgIDxpbnB1dFxuICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgI2ZpbGVEcm9wUmVmXG4gICAgICBbYXR0ci5pZF09XCJpbnB1dElkXCJcbiAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgbXVsdGlwbGVcbiAgICAgIChjaGFuZ2UpPVwiZmlsZUJyb3dzZUhhbmRsZXIoJGV2ZW50KVwiXG4gICAgICBhY2NlcHQ9XCJ7eyBhY2NlcHRTdHJpbmcgfX1cIlxuICAgIC8+XG4gICAgPHAgY2xhc3M9XCJvdXRlclwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJpbm5lclwiXG4gICAgICAgID48bWF0LWljb24gY2xhc3M9XCJvbmVtcnZhLXVwbG9hZFwiPmRvd25sb2FkPC9tYXQtaWNvbj48L3NwYW5cbiAgICAgID5cbiAgICAgIDxzcGFuIGNsYXNzPVwiaW5uZXJcIj57eyBcImZpbGUudXBsb2FkLmRyYWcuYW5kLmRyb3BcIiB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiaW5uZXJcIlxuICAgICAgICA+e3sgXCJmaWxlLnVwbG9hZC5vclwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDxsYWJlbCBmb3I9XCJ7eyBpbnB1dElkIH19XCIgcm9sZT1cImJ1dHRvblwiIGNsYXNzPVwiY29udGVudFwiPnt7XG4gICAgICAgICAgXCJmaWxlLnVwbG9hZC5icm93c2UuZm9yLmZpbGVcIiB8IHRyYW5zbGF0ZVxuICAgICAgICB9fTwvbGFiZWw+PC9zcGFuXG4gICAgICA+XG4gICAgICA8c3BhbiBjbGFzcz1cImlubmVyXCJcbiAgICAgICAgPjxzcGFuICpuZ0lmPVwibWF4RmlsZVNpemUgPiAwXCJcbiAgICAgICAgICA+e3sgXCJmaWxlLnVwbG9hZC5tYXhpbXVtXCIgfCB0cmFuc2xhdGUgfX0ge3sgbWF4RmlsZVNpemVGb3JtYXR0ZWQgfX1cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImFjY2VwdFN0cmluZy5sZW5ndGggPiAwXCI+e3sgXCJ8IFwiIH19PC9zcGFuPlxuICAgICAgICAgIHt7IGFjY2VwdFN0cmluZyB9fTwvc3BhblxuICAgICAgICA+PC9zcGFuXG4gICAgICA+XG4gICAgPC9wPlxuICAgIDx1bCBjbGFzcz1cImZpbGVzLWxpc3RcIj5cbiAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZmlsZSBvZiBmaWxlc1wiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIGZpbGVQYW5lbFRlbXBsYXRlO1xuICAgICAgICAgICAgY29udGV4dDogeyBmaWxlLCAkaW1wbGljaXQ6IGZpbGUgfVxuICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9kaXY+XG4gIDxtYXQtZXJyb3IgKm5nSWY9XCJlcnJvck1lc3NhZ2VcIj57eyBlcnJvck1lc3NhZ2UgfCB0cmFuc2xhdGUgfX08L21hdC1lcnJvcj5cbiAgPG1hdC1lcnJvclxuICAgICpuZ0lmPVwiZmlsZVVwbG9hZEVycm9yTWVzc2FnZSQgfCBhc3luYyBhcyBmaWxlVXBsb2FkRXJyb3JNZXNzYWdlXCJcbiAgICA+e3sgZmlsZVVwbG9hZEVycm9yTWVzc2FnZSB8IHRyYW5zbGF0ZSB9fTwvbWF0LWVycm9yXG4gID5cbjwvbmctY29udGFpbmVyPlxuIl19
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lbXJ2YS1tYXQtZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25lbXJ2YS9kZXNpZ24tc3lzdGVtL21hdC1maWxlLXVwbG9hZC9zcmMvY29tcG9uZW50cy9vbmVtcnZhLW1hdC1maWxlLXVwbG9hZC9vbmVtcnZhLW1hdC1maWxlLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbWF0LWZpbGUtdXBsb2FkL3NyYy9jb21wb25lbnRzL29uZW1ydmEtbWF0LWZpbGUtdXBsb2FkL29uZW1ydmEtbWF0LWZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUNMLEtBQUssRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE9BQU8sRUFDUCxPQUFPLEVBQ1AsVUFBVSxHQUNYLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUNMLFdBQVcsR0FHWixNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7Ozs7QUFHMUMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBbUNoQixNQUFNLE9BQU8sNkJBQTZCO0lBNEMvQjtJQUNDO0lBM0NWLE1BQU0sR0FBa0IsRUFBRSxDQUFDO0lBQzNCLFlBQVksR0FBRyxFQUFFLENBQUM7SUFHbEIsV0FBVyxHQUFXLENBQUMsQ0FBQztJQUd4QixZQUFZLEdBQVksSUFBSSxDQUFDO0lBRzdCLFlBQVksR0FBbUIsRUFBRSxDQUFDO0lBR2xDLFlBQVksR0FBVyxFQUFFLENBQUM7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S0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7aUNBQ2pDLENBQUMsQ0FDSDs2QkFDRixDQUFDOzRCQUNGLFVBQVUsQ0FBQyxRQUFRLEVBQUU7Z0NBQ25CLE9BQU8sQ0FDTCxHQUFHLEVBQ0gsU0FBUyxDQUFDO29DQUNSLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO29DQUNoQyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQztvQ0FDdEMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7b0NBQ3BDLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDO29DQUN0QyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztpQ0FDakMsQ0FBQyxDQUNIOzZCQUNGLENBQUM7eUJBQ0gsQ0FBQztxQkFDSDtzSEFJRCxNQUFNO3NCQURMLEtBQUs7Z0JBS04sV0FBVztzQkFEVixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQU9HLGlCQUFpQjtzQkFBekIsS0FBSztnQkFjQyxNQUFNO3NCQUZaLFdBQVc7dUJBQUMsY0FBYzs7c0JBQzFCLEtBQUs7Z0JBSU4sV0FBVztzQkFEVixTQUFTO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1pbWVUeXBlcyB9IGZyb20gJ21pbWUtd3JhcHBlcic7XG5pbXBvcnQge1xuICBzdGF0ZSxcbiAga2V5ZnJhbWVzLFxuICBzdHlsZSxcbiAgYW5pbWF0ZSxcbiAgdHJpZ2dlcixcbiAgdHJhbnNpdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICBmb3JtYXRCeXRlcyxcbiAgUHJvZ3Jlc3NGaWxlLFxuICBSZWZlcmVuY2VkUHJvZ3Jlc3NGaWxlLFxufSBmcm9tICcuLi8uLi9tb2RlbHMvcHJvZ3Jlc3MtZmlsZS5tb2RlbCc7XG5pbXBvcnQgeyBPbmVtcnZhTWF0RmlsZVVwbG9hZFN0b3JlIH0gZnJvbSAnLi4vLi4vb25lbXJ2YS1tYXQtZmlsZS11cGxvYWQuc3RvcmUnO1xuXG5sZXQgTkVYVF9JRCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29uZW1ydmEtbWF0LWZpbGUtdXBsb2FkJyxcbiAgdGVtcGxhdGVVcmw6ICdvbmVtcnZhLW1hdC1maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdpbk91dEFuaW1hdGlvbicsIFtcbiAgICAgIHN0YXRlKCdpbicsIHN0eWxlKHsgb3BhY2l0eTogMSB9KSksXG4gICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgIGFuaW1hdGUoXG4gICAgICAgICAgMzAwLFxuICAgICAgICAgIGtleWZyYW1lcyhbXG4gICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIG9mZnNldDogMCB9KSxcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMC4yNSwgb2Zmc2V0OiAwLjI1IH0pLFxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLjUsIG9mZnNldDogMC41IH0pLFxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLjc1LCBvZmZzZXQ6IDAuNzUgfSksXG4gICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIG9mZnNldDogMSB9KSxcbiAgICAgICAgICBdKVxuICAgICAgICApLFxuICAgICAgXSksXG4gICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXG4gICAgICAgIGFuaW1hdGUoXG4gICAgICAgICAgMzAwLFxuICAgICAgICAgIGtleWZyYW1lcyhbXG4gICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIG9mZnNldDogMCB9KSxcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMC43NSwgb2Zmc2V0OiAwLjI1IH0pLFxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLjUsIG9mZnNldDogMC41IH0pLFxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLjI1LCBvZmZzZXQ6IDAuNzUgfSksXG4gICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIG9mZnNldDogMSB9KSxcbiAgICAgICAgICBdKVxuICAgICAgICApLFxuICAgICAgXSksXG4gICAgXSksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE9uZW1ydmFNYXRGaWxlVXBsb2FkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KClcbiAgYWNjZXB0OiBBcnJheTxzdHJpbmc+ID0gW107XG4gIGFjY2VwdFN0cmluZyA9ICcnO1xuXG4gIEBJbnB1dCgpXG4gIG1heEZpbGVTaXplOiBudW1iZXIgPSAwO1xuXG4gIEBJbnB1dCgpXG4gIHVwbG9hZE9uRHJvcDogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgaW5pdGlhbEZpbGVzOiBQcm9ncmVzc0ZpbGVbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIGVycm9yTWVzc2FnZTogc3RyaW5nID0gJyc7XG5cbiAgZmlsZVVwbG9hZEVycm9yTWVzc2FnZSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBmaWxlcyQ6IE9ic2VydmFibGU8UmVmZXJlbmNlZFByb2dyZXNzRmlsZVtdPjtcblxuICBASW5wdXQoKSBmaWxlUGFuZWxUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgcmV0cnlGaWxlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGluZGV4OiBudW1iZXI7IGNtcFJlZjogc3ltYm9sIH0+KCk7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGBkYXRhLWN5YCBvZiB0aGUgZWxlbWVudC4gSWYgbm90IHNldCwgdGhlIGZpcnN0IGNvbXBvbmVudCBpbnN0YW5jZSB3aWxsIGhhdmUgYGRhdGEtY3lgID0gYFwib25lbXJ2YS1tYXQtbXVsdGktc2VsZWN0LTBcImAuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYGh0bWxcbiAgICogPG9uZW1ydmEtbWF0LW11bHRpLXNlbGVjdCBpZD1cIm15LWZpcnN0LW11bHRpLXNlbGVjdFwiPjwvb25lbXJ2YS1tYXQtbXVsdGktc2VsZWN0PlxuICAgKiBgYGBcbiAgICovXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLWN5JylcbiAgQElucHV0KClcbiAgcHVibGljIGRhdGFDeSA9IGBvbmVtcnZhLW1hdC1tdWx0aS1zZWxlY3QtJHtORVhUX0lEKyt9YDtcblxuICBAVmlld0NoaWxkKGBmaWxlRHJvcFJlZmApXG4gIGZpbGVEcm9wUmVmITogRWxlbWVudFJlZjtcblxuICBpbnB1dElkID0gYGZpbGVEcm9wUmVmLSR7TkVYVF9JRH1gO1xuICBtYXhGaWxlU2l6ZUZvcm1hdHRlZDogc3RyaW5nID0gJyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgZmlsZVVwbG9hZFN0b3JlOiBPbmVtcnZhTWF0RmlsZVVwbG9hZFN0b3JlXG4gICkge1xuICAgIHRoaXMuZmlsZXMkID0gZmlsZVVwbG9hZFN0b3JlLmZpbGVzJDtcblxuICAgIHRoaXMuZmlsZVVwbG9hZEVycm9yTWVzc2FnZSQgPSB0aGlzLmZpbGVVcGxvYWRTdG9yZS5maWxlVXBsb2FkRXJyb3IkO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWNjZXB0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuYWNjZXB0U3RyaW5nID0gdGhpcy5hY2NlcHRcbiAgICAgICAgLm1hcCgodmFsKSA9PiB7XG4gICAgICAgICAgY29uc3QgdCA9IG1pbWVUeXBlcy5nZXRFeHRlbnNpb24odmFsKTtcbiAgICAgICAgICByZXR1cm4gYC4ke3R9YDtcbiAgICAgICAgfSlcbiAgICAgICAgLmZpbHRlcigodmFsKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHZhbC5sZW5ndGggPiAxO1xuICAgICAgICB9KVxuICAgICAgICAuam9pbignLCAnKTtcblxuICAgICAgdGhpcy5maWxlVXBsb2FkU3RvcmUuc2V0QWNjZXB0KHRoaXMuYWNjZXB0KTtcbiAgICB9XG5cbiAgICB0aGlzLm1heEZpbGVTaXplRm9ybWF0dGVkID0gZm9ybWF0Qnl0ZXModGhpcy5tYXhGaWxlU2l6ZSk7XG4gICAgdGhpcy5maWxlVXBsb2FkU3RvcmUuc2V0TWF4RmlsZVNpemUodGhpcy5tYXhGaWxlU2l6ZSk7XG4gIH1cblxuICAvKipcbiAgICogb24gZmlsZSBkcm9wIGhhbmRsZXJcbiAgICovXG4gIG9uRmlsZURyb3BwZWQoJGV2ZW50OiBGaWxlTGlzdCkge1xuICAgIHRoaXMucHJlcGFyZUZpbGVzTGlzdCgkZXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIGhhbmRsZSBmaWxlIGZyb20gYnJvd3NpbmdcbiAgICovXG4gIGZpbGVCcm93c2VIYW5kbGVyKCRldmVudDogRXZlbnQpIHtcbiAgICBsZXQgZWxtID0gJGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50LFxuICAgICAgZmlsZXMgPSBlbG0uZmlsZXMgYXMgRmlsZUxpc3Q7XG5cbiAgICB0aGlzLnByZXBhcmVGaWxlc0xpc3QoZmlsZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgRmlsZXMgbGlzdCB0byBub3JtYWwgYXJyYXkgbGlzdFxuICAgKiBAcGFyYW0gZmlsZXMgKEZpbGVzIExpc3QpXG4gICAqL1xuICBwcmVwYXJlRmlsZXNMaXN0KGZpbGVzOiBGaWxlTGlzdCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgZnM6IFByb2dyZXNzRmlsZVtdID0gW107XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCBmaWxlID0gZmlsZXMuaXRlbShpKTtcbiAgICAgICAgaWYgKGZpbGUgPT09IG51bGwpIGNvbnRpbnVlO1xuXG4gICAgICAgIGxldCBpdGVtOiBQcm9ncmVzc0ZpbGUgPSB7XG4gICAgICAgICAgZmlsZSxcbiAgICAgICAgICBwcm9ncmVzczogMCxcbiAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICAgIHVybDogbnVsbCxcbiAgICAgICAgICBpZDogbnVsbCxcbiAgICAgICAgICBlbmFibGVQcm9ncmVzc0JhcjogdGhpcy51cGxvYWRPbkRyb3AsXG5cbiAgICAgICAgICBuYW1lOiBmaWxlIS5uYW1lLFxuICAgICAgICAgIGxhc3RNb2RpZmllZDogZmlsZSEubGFzdE1vZGlmaWVkLFxuICAgICAgICAgIHNpemU6IGZpbGUhLnNpemUsXG4gICAgICAgICAgdHlwZTogZmlsZSEudHlwZSxcbiAgICAgICAgfTtcblxuICAgICAgICBmcy5wdXNoKGl0ZW0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy51cGxvYWRPbkRyb3ApIHRoaXMuZmlsZVVwbG9hZFN0b3JlLnVwbG9hZEZpbGVzKGZzKTtcbiAgICAgIGVsc2UgdGhpcy5maWxlVXBsb2FkU3RvcmUuYWRkU2V2ZXJhbEZvclBvdGVudGlhbFVwbG9hZChmcyk7XG5cbiAgICAgIHRoaXMuZmlsZURyb3BSZWYubmF0aXZlRWxlbWVudC52YWx1ZSA9IG51bGw7XG4gICAgfSwgNDAwKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbGVzJCB8IGFzeW5jIGFzIGZpbGVzXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cIm9uZW1ydmEtbWF0LWZpbGUtdXBsb2FkLWRyb3AtYXJlYVwiXG4gICAgYXBwRG5kXG4gICAgW25nQ2xhc3NdPVwieyBmaWxlaW46IGZpbGVzLmxlbmd0aCA+IDAgfVwiXG4gICAgKGZpbGVEcm9wcGVkKT1cIm9uRmlsZURyb3BwZWQoJGV2ZW50KVwiXG4gICAgW25nQ2xhc3NdPVwieyAnZnUtZXJyb3InOiBlcnJvck1lc3NhZ2UgIT09ICcnIH1cIlxuICA+XG4gICAgPGlucHV0XG4gICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAjZmlsZURyb3BSZWZcbiAgICAgIFthdHRyLmlkXT1cImlucHV0SWRcIlxuICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICBtdWx0aXBsZVxuICAgICAgKGNoYW5nZSk9XCJmaWxlQnJvd3NlSGFuZGxlcigkZXZlbnQpXCJcbiAgICAgIGFjY2VwdD1cInt7IGFjY2VwdFN0cmluZyB9fVwiXG4gICAgLz5cbiAgICA8cCBjbGFzcz1cIm91dGVyXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImlubmVyXCJcbiAgICAgICAgPjxtYXQtaWNvbiBjbGFzcz1cIm9uZW1ydmEtdXBsb2FkXCI+ZG93bmxvYWQ8L21hdC1pY29uPjwvc3BhblxuICAgICAgPlxuICAgICAgPHNwYW4gY2xhc3M9XCJpbm5lclwiPnt7IFwiZmlsZS51cGxvYWQuZHJhZy5hbmQuZHJvcFwiIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJpbm5lclwiXG4gICAgICAgID57eyBcImZpbGUudXBsb2FkLm9yXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPGxhYmVsIGZvcj1cInt7IGlucHV0SWQgfX1cIiByb2xlPVwiYnV0dG9uXCIgY2xhc3M9XCJjb250ZW50XCI+e3tcbiAgICAgICAgICBcImZpbGUudXBsb2FkLmJyb3dzZS5mb3IuZmlsZVwiIHwgdHJhbnNsYXRlXG4gICAgICAgIH19PC9sYWJlbD48L3NwYW5cbiAgICAgID5cbiAgICAgIDxzcGFuIGNsYXNzPVwiaW5uZXJcIlxuICAgICAgICA+PHNwYW4gKm5nSWY9XCJtYXhGaWxlU2l6ZSA+IDBcIlxuICAgICAgICAgID57eyBcImZpbGUudXBsb2FkLm1heGltdW1cIiB8IHRyYW5zbGF0ZSB9fSB7eyBtYXhGaWxlU2l6ZUZvcm1hdHRlZCB9fVxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiYWNjZXB0U3RyaW5nLmxlbmd0aCA+IDBcIj57eyBcInwgXCIgfX08L3NwYW4+XG4gICAgICAgICAge3sgYWNjZXB0U3RyaW5nIH19PC9zcGFuXG4gICAgICAgID48L3NwYW5cbiAgICAgID5cbiAgICA8L3A+XG4gICAgPHVsIGNsYXNzPVwiZmlsZXMtbGlzdFwiPlxuICAgICAgPGxpICpuZ0Zvcj1cImxldCBmaWxlIG9mIGZpbGVzXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgZmlsZVBhbmVsVGVtcGxhdGU7XG4gICAgICAgICAgICBjb250ZXh0OiB7IGZpbGUsICRpbXBsaWNpdDogZmlsZSB9XG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L2Rpdj5cbiAgPG1hdC1lcnJvciAqbmdJZj1cImVycm9yTWVzc2FnZVwiPnt7IGVycm9yTWVzc2FnZSB8IHRyYW5zbGF0ZSB9fTwvbWF0LWVycm9yPlxuICA8bWF0LWVycm9yXG4gICAgKm5nSWY9XCJmaWxlVXBsb2FkRXJyb3JNZXNzYWdlJCB8IGFzeW5jIGFzIGZpbGVVcGxvYWRFcnJvck1lc3NhZ2VcIlxuICAgID57eyBmaWxlVXBsb2FkRXJyb3JNZXNzYWdlIHwgdHJhbnNsYXRlIH19PC9tYXQtZXJyb3JcbiAgPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -3,6 +3,7 @@ import { ComponentStore } from '@ngrx/component-store';
3
3
  import { catchError, filter, forkJoin, interval, map, merge, mergeMap, of, switchMap, take, takeWhile, tap, throttle, withLatestFrom, } from 'rxjs';
4
4
  import { formattedSize, } from './models/progress-file.model';
5
5
  import { HttpEventType } from '@angular/common/http';
6
+ import { OnemrvaMatColor } from "@onemrvapublic/design-system/utils";
6
7
  import * as i0 from "@angular/core";
7
8
  import * as i1 from "./onemrva-mat-file-upload.service";
8
9
  import * as i2 from "@ngx-translate/core";
@@ -98,7 +99,7 @@ export class OnemrvaMatFileUploadStore extends ComponentStore {
98
99
  setFail = this.updater((state, payload) => ({
99
100
  ...state,
100
101
  upload: state.upload.map((file) => file.ref === payload.ref
101
- ? { ...file, color: 'warn', message: payload.message }
102
+ ? { ...file, message: payload.message, color: payload.color }
102
103
  : file),
103
104
  event: {
104
105
  type: 'setFail',
@@ -194,6 +195,7 @@ export class OnemrvaMatFileUploadStore extends ComponentStore {
194
195
  }), catchError(() => {
195
196
  this.setFail({
196
197
  ref: file.ref,
198
+ color: OnemrvaMatColor.WARN,
197
199
  message: 'file.upload.delete.error',
198
200
  });
199
201
  return of(null);
@@ -225,6 +227,7 @@ export class OnemrvaMatFileUploadStore extends ComponentStore {
225
227
  if (!accept.includes(file.file.type)) {
226
228
  this.setFail({
227
229
  ref: f.ref,
230
+ color: OnemrvaMatColor.ERROR,
228
231
  message: this.translateService.instant('file.upload.type.not.supported'),
229
232
  });
230
233
  // This trick coupled with the next filter is used to avoid catchError, which would break the effect
@@ -236,6 +239,7 @@ export class OnemrvaMatFileUploadStore extends ComponentStore {
236
239
  if (maxFileSize !== 0 && refFile.size > maxFileSize) {
237
240
  this.setFail({
238
241
  ref: refFile.ref,
242
+ color: OnemrvaMatColor.ERROR,
239
243
  message: this.translateService.instant('file.upload.too.big') +
240
244
  ' ' +
241
245
  formattedSize(refFile.size),
@@ -253,7 +257,7 @@ export class OnemrvaMatFileUploadStore extends ComponentStore {
253
257
  }), filter((x) => !x.message.startsWith('ERROR')), take(1));
254
258
  };
255
259
  loadStep = (file) => {
256
- if (file.color === 'warn')
260
+ if (file.color === OnemrvaMatColor.WARN)
257
261
  this.reset(file.ref);
258
262
  this.enableProgressBar();
259
263
  return this.fileUploadService.upload(file).pipe(throttle(() => interval(200), { leading: true, trailing: true }), tap((event) => {
@@ -269,6 +273,7 @@ export class OnemrvaMatFileUploadStore extends ComponentStore {
269
273
  }), takeWhile((event) => event.type === HttpEventType.UploadProgress), catchError(() => {
270
274
  this.setFail({
271
275
  ref: file.ref,
276
+ color: OnemrvaMatColor.WARN,
272
277
  message: 'file.upload.retry.error',
273
278
  });
274
279
  return of(null);
@@ -306,4 +311,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
306
311
  type: Inject,
307
312
  args: [CUSTOM_VALIDATION_FN]
308
313
  }] }] });
309
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lbXJ2YS1tYXQtZmlsZS11cGxvYWQuc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbWF0LWZpbGUtdXBsb2FkL3NyYy9vbmVtcnZhLW1hdC1maWxlLXVwbG9hZC5zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RCxPQUFPLEVBQ0wsVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBQ1IsUUFBUSxFQUNSLEdBQUcsRUFDSCxLQUFLLEVBQ0wsUUFBUSxFQUVSLEVBQUUsRUFFRixTQUFTLEVBQ1QsSUFBSSxFQUNKLFNBQVMsRUFDVCxHQUFHLEVBQ0gsUUFBUSxFQUNSLGNBQWMsR0FDZixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFDTCxhQUFhLEdBR2QsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQWEsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7QUFnQmhFLE1BQU0sVUFBVSxHQUFnQjtJQUM5QixNQUFNLEVBQUUsRUFBRTtJQUNWLE1BQU0sRUFBRSxFQUFFO0lBQ1YsV0FBVyxFQUFFLENBQUM7SUFDZCxlQUFlLEVBQUUsRUFBRTtJQUNuQixLQUFLLEVBQUU7UUFDTCxJQUFJLEVBQUUsTUFBTTtLQUNiO0NBQ0YsQ0FBQztBQU1GLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLElBQUksY0FBYyxDQUNwRCwrQkFBK0IsQ0FDaEMsQ0FBQztBQUdGLE1BQU0sT0FBTyx5QkFDWCxTQUFRLGNBQTJCO0lBVXpCO0lBQ0E7SUFHRDtJQVhELEVBQUUsR0FBdUIsQ0FDL0IsQ0FBcUQsRUFDckQsRUFBRTtRQUNGLE9BQU8s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QyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUMsQ0FBQyxDQUFDO0lBRU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQzlCLENBQUMsS0FBeUMsRUFBRSxFQUFFLENBQzVDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUNoRSxDQUFDO0lBRUY7O09BRUc7SUFDTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQWtDLEVBQUUsRUFBRSxDQUN4RSxNQUFNLENBQUMsSUFBSSxDQUNULFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ2xCLEtBQUssQ0FDSCxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNwQixJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FDbEUsQ0FDRixDQUNGLENBQ0YsQ0FDRixDQUFDO3VHQXpaUyx5QkFBeUIsNkZBYzFCLG9CQUFvQjsyR0FkbkIseUJBQXlCOzsyRkFBekIseUJBQXlCO2tCQURyQyxVQUFVOzswQkFjTixRQUFROzswQkFDUixNQUFNOzJCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRTdG9yZSB9IGZyb20gJ0BuZ3J4L2NvbXBvbmVudC1zdG9yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1xuICBjYXRjaEVycm9yLFxuICBmaWx0ZXIsXG4gIGZvcmtKb2luLFxuICBpbnRlcnZhbCxcbiAgbWFwLFxuICBtZXJnZSxcbiAgbWVyZ2VNYXAsXG4gIE9ic2VydmFibGUsXG4gIG9mLFxuICBTdWJqZWN0LFxuICBzd2l0Y2hNYXAsXG4gIHRha2UsXG4gIHRha2VXaGlsZSxcbiAgdGFwLFxuICB0aHJvdHRsZSxcbiAgd2l0aExhdGVzdEZyb20sXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgT25lbXJ2YU1hdEZpbGVVcGxvYWRTZXJ2aWNlIH0gZnJvbSAnLi9vbmVtcnZhLW1hdC1maWxlLXVwbG9hZC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIGZvcm1hdHRlZFNpemUsXG4gIFByb2dyZXNzRmlsZSxcbiAgUmVmZXJlbmNlZFByb2dyZXNzRmlsZSxcbn0gZnJvbSAnLi9tb2RlbHMvcHJvZ3Jlc3MtZmlsZS5tb2RlbCc7XG5pbXBvcnQgeyBIdHRwRXZlbnQsIEh0dHBFdmVudFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPbmVtcnZhTWF0RmlsZVVwbG9hZFN0b3JlSXRmIH0gZnJvbSAnLi9vbmVtcnZhLW1hdC1maWxlLXVwbG9hZC1pdGYuc3RvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVVcGxvYWRTdG9yZUV2ZW50IHtcbiAgdHlwZTogc3RyaW5nO1xuICBwYXlsb2FkPzogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwbG9hZFN0YXRlIHtcbiAgdXBsb2FkOiBSZWZlcmVuY2VkUHJvZ3Jlc3NGaWxlW107XG4gIGFjY2VwdDogc3RyaW5nW107XG4gIG1heEZpbGVTaXplOiBudW1iZXI7XG4gIGZpbGVVcGxvYWRFcnJvcjogc3RyaW5nO1xuICBldmVudDogRmlsZVVwbG9hZFN0b3JlRXZlbnQ7XG59XG5cbmNvbnN0IElOSVRfU1RBVEU6IFVwbG9hZFN0YXRlID0ge1xuICB1cGxvYWQ6IFtdLFxuICBhY2NlcHQ6IFtdLFxuICBtYXhGaWxlU2l6ZTogMCxcbiAgZmlsZVVwbG9hZEVycm9yOiAnJyxcbiAgZXZlbnQ6IHtcbiAgICB0eXBlOiAnSU5JVCcsXG4gIH0sXG59O1xuXG5leHBvcnQgdHlwZSBDdXN0b21WYWxpZGF0aW9uRm4gPSAoXG4gIGlucHV0OiBbUmVmZXJlbmNlZFByb2dyZXNzRmlsZSwgUmVmZXJlbmNlZFByb2dyZXNzRmlsZVtdXVxuKSA9PiBSZWZlcmVuY2VkUHJvZ3Jlc3NGaWxlO1xuXG5leHBvcnQgY29uc3QgQ1VTVE9NX1ZBTElEQVRJT05fRk4gPSBuZXcgSW5qZWN0aW9uVG9rZW48Q3VzdG9tVmFsaWRhdGlvbkZuPihcbiAgJ3gxLCB4MiA9ICgtYiAtKyBzcXJ0KHJobykpLzJhJ1xuKTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE9uZW1ydmFNYXRGaWxlVXBsb2FkU3RvcmVcbiAgZXh0ZW5kcyBDb21wb25lbnRTdG9yZTxVcGxvYWRTdGF0ZT5cbiAgaW1wbGVtZW50cyBPbmVtcnZhTWF0RmlsZVVwbG9hZFN0b3JlSXRmXG57XG4gIHByaXZhdGUgZm46IEN1c3RvbVZhbGlkYXRpb25GbiA9IChcbiAgICB4OiBbUmVmZXJlbmNlZFByb2dyZXNzRmlsZSwgUmVmZXJlbmNlZFByb2dyZXNzRmlsZVtdXVxuICApID0+IHtcbiAgICByZXR1cm4geFswXTtcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZpbGVVcGxvYWRTZXJ2aWNlOiBPbmVtcnZhTWF0RmlsZVVwbG9hZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChDVVNUT01fVkFMSURBVElPTl9GTilcbiAgICBwdWJsaWMgY3VzdG9tVmFsaWRhdGlvbkZuOiBDdXN0b21WYWxpZGF0aW9uRm5cbiAgKSB7XG4gICAgc3VwZXIoSU5JVF9TVEFURSk7XG4gICAgaWYgKCEhY3VzdG9tVmFsaWRhdGlvbkZuKSB0aGlzLmZuID0gY3VzdG9tVmFsaWRhdGlvbkZuO1xuICB9XG5cbiAgLypcbiAgICogVSBQIEQgQSBUIEUgUiBTXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2V0QWNjZXB0ID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgYWNjZXB0OiBzdHJpbmdbXSkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBhY2NlcHQsXG4gICAgZXZlbnQ6IHtcbiAgICAgIHR5cGU6ICdzZXRBY2NlcHQnLFxuICAgICAgcGF5bG9hZDogYWNjZXB0LFxuICAgIH0sXG4gIH0pKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgc2V0TWF4RmlsZVNpemUgPSB0aGlzLnVwZGF0ZXIoXG4gICAgKHN0YXRlLCBtYXhGaWxlU2l6ZTogbnVtYmVyKSA9PiAoe1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBtYXhGaWxlU2l6ZSxcbiAgICAgIGV2ZW50OiB7XG4gICAgICAgIHR5cGU6ICdzZXRNYXhGaWxlU2l6ZScsXG4gICAgICAgIHBheWxvYWQ6IG1heEZpbGVTaXplLFxuICAgICAgfSxcbiAgICB9KVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZW1wdHlMaXN0ID0gdGhpcy51cGRhdGVyKChzdGF0ZSkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHVwbG9hZDogW10sXG4gICAgICBldmVudDoge1xuICAgICAgICB0eXBlOiAnZW1wdHlMaXN0JyxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwdXNoRmlsZSA9IHRoaXMudXBkYXRlcihcbiAgICAoc3RhdGUsIHBheWxvYWQ6IFJlZmVyZW5jZWRQcm9ncmVzc0ZpbGUpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICB1cGxvYWQ6IFsuLi5zdGF0ZS51cGxvYWQsIHsgLi4ucGF5bG9hZCB9XSxcbiAgICAgICAgZXZlbnQ6IHtcbiAgICAgICAgICB0eXBlOiAncHVzaEZpbGUnLFxuICAgICAgICAgIHBheWxvYWQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgc2V0RGF0YSA9IHRoaXMudXBkYXRlcihcbiAgICAoc3RhdGUsIHBheWxvYWQ6IHsgcmVmOiBzeW1ib2w7IGRhdGE6IGFueSB9KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgdXBsb2FkOiBzdGF0ZS51cGxvYWQubWFwKChmaWxlOiBSZWZlcmVuY2VkUHJvZ3Jlc3NGaWxlKSA9PlxuICAgICAgICAgIGZpbGUucmVmID09PSBwYXlsb2FkLnJlZiA/IHsgLi4uZmlsZSwgZGF0YTogcGF5bG9hZC5kYXRhIH0gOiBmaWxlXG4gICAgICAgICksXG4gICAgICAgIGV2ZW50OiB7XG4gICAgICAgICAgdHlwZTogJ3NldERhdGEnLFxuICAgICAgICAgIHBheWxvYWQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHNldFN1Y2Nlc3MgPSB0aGlzLnVwZGF0ZXIoXG4gICAgKHN0YXRlLCBwYXlsb2FkOiB7IHJlZjogc3ltYm9sOyBib2R5OiBhbnkgfSkgPT4ge1xuICAgICAgY29uc3QgbmV3RmlsZSA9IHtcbiAgICAgICAgLi4uc3RhdGUudXBsb2FkLmZpbmQoKGYpID0+IGYucmVmID09PSBwYXlsb2FkLnJlZiksXG4gICAgICAgIC4uLnBheWxvYWQuYm9keSxcbiAgICAgICAgY29sb3I6ICdzdWNjZXNzJyxcbiAgICAgICAgcHJvZ3Jlc3M6IDEwMCxcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICB1cGxvYWQ6IHN0YXRlLnVwbG9hZC5tYXAoKGZpbGUpID0+XG4gICAgICAgICAgZmlsZS5yZWYgPT09IHBheWxvYWQucmVmID8gbmV3RmlsZSA6IGZpbGVcbiAgICAgICAgKSxcbiAgICAgICAgZXZlbnQ6IHtcbiAgICAgICAgICB0eXBlOiAnc2V0RGF0YScsXG4gICAgICAgICAgcGF5bG9hZDogbmV3RmlsZSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2V0RmFpbCA9IHRoaXMudXBkYXRlcihcbiAgICAoc3RhdGUsIHBheWxvYWQ6IHsgcmVmOiBzeW1ib2w7IG1lc3NhZ2U6IHN0cmluZyB9KSA9PiAoe1xuICAgICAgLi4uc3RhdGUsXG4gICAgICB1cGxvYWQ6IHN0YXRlLnVwbG9hZC5tYXAoKGZpbGUpID0+XG4gICAgICAgIGZpbGUucmVmID09PSBwYXlsb2FkLnJlZlxuICAgICAgICAgID8geyAuLi5maWxlLCBjb2xvcjogJ3dhcm4nLCBtZXNzYWdlOiBwYXlsb2FkLm1lc3NhZ2UgfVxuICAgICAgICAgIDogZmlsZVxuICAgICAgKSxcbiAgICAgIGV2ZW50OiB7XG4gICAgICAgIHR5cGU6ICdzZXRGYWlsJyxcbiAgICAgICAgcGF5bG9hZCxcbiAgICAgIH0sXG4gICAgfSlcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHNldFByb2dyZXNzID0gdGhpcy51cGRhdGVyKFxuICAgIChzdGF0ZSwgcGF5bG9hZDogeyByZWY6IHN5bWJvbDsgcHJvZ3Jlc3M6IG51bWJlciB9KSA9PiAoe1xuICAgICAgLi4uc3RhdGUsXG4gICAgICB1cGxvYWQ6IHN0YXRlLnVwbG9hZC5tYXAoKGZpbGUpID0+XG4gICAgICAgIGZpbGUucmVmID09PSBwYXlsb2FkLnJlZlxuICAgICAgICAgID8geyAuLi5maWxlLCBwcm9ncmVzczogcGF5bG9hZC5wcm9ncmVzcyB9XG4gICAgICAgICAgOiBmaWxlXG4gICAgICApLFxuICAgICAgZXZlbnQ6IHtcbiAgICAgICAgdHlwZTogJ3NldFByb2dyZXNzJyxcbiAgICAgICAgcGF5bG9hZCxcbiAgICAgIH0sXG4gICAgfSlcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHJlc2V0ID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgcmVmOiBzeW1ib2wpID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgdXBsb2FkOiBzdGF0ZS51cGxvYWQubWFwKChmaWxlKSA9PlxuICAgICAgZmlsZS5yZWYgPT09IHJlZiA/IHsgLi4uZmlsZSwgcHJvZ3Jlc3M6IDAsIG1lc3NhZ2U6ICcnLCBjb2xvcjogJycgfSA6IGZpbGVcbiAgICApLFxuICAgIGV2ZW50OiB7XG4gICAgICB0eXBlOiAncmVzZXQnLFxuICAgICAgcGF5bG9hZDogcmVmLFxuICAgIH0sXG4gIH0pKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHJlbW92ZSA9IHRoaXMudXBkYXRlcihcbiAgICAoc3RhdGUsIHBheWxvYWQ6IFJlZmVyZW5jZWRQcm9ncmVzc0ZpbGUpID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHVwbG9hZDogc3RhdGUudXBsb2FkLmZpbHRlcigoZikgPT4gZi5yZWYgIT09IHBheWxvYWQucmVmKSxcbiAgICAgIGV2ZW50OiB7XG4gICAgICAgIHR5cGU6ICdyZW1vdmUnLFxuICAgICAgICBwYXlsb2FkLFxuICAgICAgfSxcbiAgICB9KVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZW5hYmxlUHJvZ3Jlc3NCYXIgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlKSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIHVwbG9hZDogc3RhdGUudXBsb2FkLm1hcCgoZmlsZSkgPT4gKHsgLi4uZmlsZSwgZW5hYmxlUHJvZ3Jlc3NCYXI6IHRydWUgfSkpLFxuICAgIGV2ZW50OiB7XG4gICAgICB0eXBlOiAnZW5hYmxlUHJvZ3Jlc3NCYXInLFxuICAgIH0sXG4gIH0pKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgc2V0RmlsZVVwbG9hZEVycm9yID0gdGhpcy51cGRhdGVyKFxuICAgIChzdGF0ZSwgZmlsZVVwbG9hZEVycm9yOiBzdHJpbmcpID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGZpbGVVcGxvYWRFcnJvcixcbiAgICAgIGV2ZW50OiB7XG4gICAgICAgIHR5cGU6ICdzZXRGaWxlVXBsb2FkRXJyb3InLFxuICAgICAgICBwYXlsb2FkOiBmaWxlVXBsb2FkRXJyb3IsXG4gICAgICB9LFxuICAgIH0pXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNsZWFyRmlsZVVwbG9hZEVycm9yID0gdGhpcy51cGRhdGVyKChzdGF0ZSkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBmaWxlVXBsb2FkRXJyb3I6ICcnLFxuICAgIGV2ZW50OiB7XG4gICAgICB0eXBlOiAnY2xlYXJGaWxlVXBsb2FkRXJyb3InLFxuICAgIH0sXG4gIH0pKTtcblxuICAvKlxuICAgKiBTIEUgTCBFIEMgVCBPIFIgU1xuICAgKi9cbiAgcmVhZG9ubHkgZmlsZXMkID0gdGhpcy5zZWxlY3QoKHN0YXRlKSA9PiBzdGF0ZS51cGxvYWQpO1xuICByZWFkb25seSBhY2NlcHQkID0gdGhpcy5zZWxlY3QoKHN0YXRlKSA9PiBzdGF0ZS5hY2NlcHQpO1xuICByZWFkb25seSBldmVudCQgPSB0aGlzLnNlbGVjdCgoc3RhdGUpID0+IHN0YXRlLmV2ZW50KTtcbiAgcmVhZG9ubHkgbWF4RmlsZVNpemUkID0gdGhpcy5zZWxlY3QoKHN0YXRlKSA9PiBzdGF0ZS5tYXhGaWxlU2l6ZSk7XG4gIHJlYWRvbmx5IGZpbGVVcGxvYWRFcnJvciQgPSB0aGlzLnNlbGVjdCgoc3RhdGUpID0+IHN0YXRlLmZpbGVVcGxvYWRFcnJvcik7XG5cbiAgLypcbiAgICogQSBDIFQgSSBPIE4gUyAgIC8gICBFIEYgRiBFIEMgVCBTXG4gICAqL1xuICByZWFkb25seSBsaXN0VXBsb2FkZWRGaWxlcyA9IHRoaXMuZWZmZWN0KChpbnB1dHMkOiBPYnNlcnZhYmxlPGFueT4pID0+IHtcbiAgICByZXR1cm4gaW5wdXRzJC5waXBlKFxuICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgdGhpcy5lbXB0eUxpc3QoKTtcbiAgICAgIH0pLFxuICAgICAgbWVyZ2VNYXAoKGlucHV0czogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbGVVcGxvYWRTZXJ2aWNlLmxpc3RVcGxvYWRlZEZpbGVzKGlucHV0cykucGlwZShcbiAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuZmlsZXMkKSxcbiAgICAgICAgICB0YXAoKFtuZXdmaWxlcywgcmVnaXN0ZXJlZEZpbGVzXSkgPT4ge1xuICAgICAgICAgICAgbmV3ZmlsZXMuZm9yRWFjaCgoZmlsZSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgcmVnaXN0ZXJlZEZpbGVzLmZpbmRJbmRleCgocmZpbGUpID0+IHJmaWxlLmlkID09PSBmaWxlLmlkKSA8IDBcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wdXNoRmlsZSh7XG4gICAgICAgICAgICAgICAgICAuLi5maWxlLFxuICAgICAgICAgICAgICAgICAgY29sb3I6ICdzdWNjZXNzJyxcbiAgICAgICAgICAgICAgICAgIHByb2dyZXNzOiAxMDAsXG4gICAgICAgICAgICAgICAgICByZWY6IFN5bWJvbCgnSC5wc2kgPSBFLnBzaScpLFxuICAgICAgICAgICAgICAgICAgbmFtZTogZmlsZSEubmFtZSxcbiAgICAgICAgICAgICAgICAgIGxhc3RNb2RpZmllZDogZmlsZSEubGFzdE1vZGlmaWVkLFxuICAgICAgICAgICAgICAgICAgc2l6ZTogZmlsZSEuc2l6ZSxcbiAgICAgICAgICAgICAgICAgIHR5cGU6IGZpbGUhLnR5cGUsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoW10pKVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9KTtcblxuICByZWFkb25seSBkZWxldGVGaWxlID0gdGhpcy5lZmZlY3QoXG4gICAgKGZpbGUkOiBPYnNlcnZhYmxlPFJlZmVyZW5jZWRQcm9ncmVzc0ZpbGU+KSA9PiB7XG4gICAgICByZXR1cm4gZmlsZSQucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNsZWFyRmlsZVVwbG9hZEVycm9yKCk7XG4gICAgICAgIH0pLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmZpbGVzJCksXG4gICAgICAgIG1hcCh0aGlzLmZuKSxcbiAgICAgICAgbWVyZ2VNYXAoKGZpbGU6IGFueSkgPT5cbiAgICAgICAgICB0aGlzLmZpbGVVcGxvYWRTZXJ2aWNlLmRlbGV0ZUZpbGUoZmlsZS5pZCkucGlwZShcbiAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnJlbW92ZShmaWxlKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc2V0RmFpbCh7XG4gICAgICAgICAgICAgICAgcmVmOiBmaWxlLnJlZixcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiAnZmlsZS51cGxvYWQuZGVsZXRlLmVycm9yJyxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgKTtcblxuICByZWFkb25seSByZW1vdmVGaWxlID0gdGhpcy5lZmZlY3QoXG4gICAgKGZpbGUkOiBPYnNlcnZhYmxlPFJlZmVyZW5jZWRQcm9ncmVzc0ZpbGU+KSA9PiB7XG4gICAgICByZXR1cm4gZmlsZSQucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNsZWFyRmlsZVVwbG9hZEVycm9yKCk7XG4gICAgICAgIH0pLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmZpbGVzJCksXG4gICAgICAgIG1hcCh0aGlzLmZuKSxcbiAgICAgICAgdGFwKChmaWxlKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZW1vdmUoZmlsZSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgKTtcblxuICBwcml2YXRlIHByb2dyZXNzRmlsZUNoZWNrZXIgPSAoZmlsZSQ6IE9ic2VydmFibGU8YW55PikgPT4ge1xuICAgIHJldHVybiBmaWxlJC5waXBlKFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5hY2NlcHQkKSxcbiAgICAgIG1hcCgoW2ZpbGUsIGFjY2VwdF0pID0+IHtcbiAgICAgICAgLy8gU3RlcCAxIC0gQWRkIGEgbmV3IGZpbGUgaW4gdGhlIHZpZXdcbiAgICAgICAgbGV0IGY6IFJlZmVyZW5jZWRQcm9ncmVzc0ZpbGUgPSB7IC4uLmZpbGUgfTtcbiAgICAgICAgaWYgKGZpbGUucmVmID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBmID0ge1xuICAgICAgICAgICAgLi4uZixcbiAgICAgICAgICAgIHJlZjogU3ltYm9sKCd2X3NvdW5kID0gc3FydChnYW1tYS5QIC8gcmhvKScpLFxuICAgICAgICAgICAgbmFtZTogZmlsZSEubmFtZSxcbiAgICAgICAgICAgIGxhc3RNb2RpZmllZDogZmlsZSEubGFzdE1vZGlmaWVkLFxuICAgICAgICAgICAgc2l6ZTogZmlsZSEuc2l6ZSxcbiAgICAgICAgICAgIHR5cGU6IGZpbGUhLnR5cGUsXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLnB1c2hGaWxlKGYpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU3RlcCAyIC0gQ2hlY2sgZmlsZSBleHRlbnNpb25cbiAgICAgICAgaWYgKCFhY2NlcHQuaW5jbHVkZXMoZmlsZS5maWxlIS50eXBlKSkge1xuICAgICAgICAgIHRoaXMuc2V0RmFpbCh7XG4gICAgICAgICAgICByZWY6IGYucmVmLFxuICAgICAgICAgICAgbWVzc2FnZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgICAgICdmaWxlLnVwbG9hZC50eXBlLm5vdC5zdXBwb3J0ZWQnXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIC8vIFRoaXMgdHJpY2sgY291cGxlZCB3aXRoIHRoZSBuZXh0IGZpbHRlciBpcyB1c2VkIHRvIGF2b2lkIGNhdGNoRXJyb3IsIHdoaWNoIHdvdWxkIGJyZWFrIHRoZSBlZmZlY3RcbiAgICAgICAgICByZXR1cm4geyAuLi5mLCBtZXNzYWdlOiAnRVJST1InIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGY7XG4gICAgICB9KSxcbiAgICAgIGZpbHRlcigoeCkgPT4geC5tZXNzYWdlICE9PSAnRVJST1InKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMubWF4RmlsZVNpemUkKSxcbiAgICAgIG1hcCgoW3JlZkZpbGUsIG1heEZpbGVTaXplXSkgPT4ge1xuICAgICAgICAvLyBTdGVwIDMgLSBDaGVjayBmaWxlIHNpemVcbiAgICAgICAgaWYgKG1heEZpbGVTaXplICE9PSAwICYmIHJlZkZpbGUuc2l6ZSA+IG1heEZpbGVTaXplKSB7XG4gICAgICAgICAgdGhpcy5zZXRGYWlsKHtcbiAgICAgICAgICAgIHJlZjogcmVmRmlsZS5yZWYsXG4gICAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnZmlsZS51cGxvYWQudG9vLmJpZycpICtcbiAgICAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgICAgZm9ybWF0dGVkU2l6ZShyZWZGaWxlLnNpemUpLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIC8vIFNhbWUgdHJpY2sgZm9yIGVycm9yIG1hbmFnZW1lbnRcbiAgICAgICAgICByZXR1cm4geyAuLi5yZWZGaWxlLCBtZXNzYWdlOiAnRVJST1InIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlZkZpbGU7XG4gICAgICB9KSxcbiAgICAgIGZpbHRlcigoeCkgPT4geC5tZXNzYWdlICE9PSAnRVJST1InKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuZmlsZXMkKSxcbiAgICAgIG1hcCh0aGlzLmZuKSwgLy8gRm9yIGN1c3RvbSB2YWxpZGF0aW9uc1xuICAgICAgdGFwKCh4KSA9PiB7XG4gICAgICAgIGlmICghIXgubWVzc2FnZSAmJiB4Lm1lc3NhZ2Uuc3RhcnRzV2l0aCgnRVJST1I6JykpXG4gICAgICAgICAgdGhpcy5zZXRGaWxlVXBsb2FkRXJyb3IoeC5tZXNzYWdlLnJlcGxhY2UoJ0VSUk9SOicsICcnKS50cmltKCkpO1xuICAgICAgICBlbHNlIHRoaXMuY2xlYXJGaWxlVXBsb2FkRXJyb3IoKTtcbiAgICAgIH0pLFxuICAgICAgZmlsdGVyKCh4KSA9PiAheC5tZXNzYWdlLnN0YXJ0c1dpdGgoJ0VSUk9SJykpLFxuICAgICAgdGFrZSgxKVxuICAgICk7XG4gIH07XG5cbiAgcHJpdmF0ZSBsb2FkU3RlcCA9IChmaWxlOiBhbnkpID0+IHtcbiAgICBpZiAoZmlsZS5jb2xvciA9PT0gJ3dhcm4nKSB0aGlzLnJlc2V0KGZpbGUucmVmKTtcblxuICAgIHRoaXMuZW5hYmxlUHJvZ3Jlc3NCYXIoKTtcblxuICAgIHJldHVybiB0aGlzLmZpbGVVcGxvYWRTZXJ2aWNlLnVwbG9hZChmaWxlKS5waXBlKFxuICAgICAgdGhyb3R0bGUoKCkgPT4gaW50ZXJ2YWwoMjAwKSwgeyBsZWFkaW5nOiB0cnVlLCB0cmFpbGluZzogdHJ1ZSB9KSxcbiAgICAgIHRhcCgoZXZlbnQ6IEh0dHBFdmVudDxhbnk+KSA9PiB7XG4gICAgICAgIGlmIChldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzKSB7XG4gICAgICAgICAgdGhpcy5zZXRQcm9ncmVzcyh7XG4gICAgICAgICAgICByZWY6IGZpbGUucmVmLFxuICAgICAgICAgICAgcHJvZ3Jlc3M6IE1hdGgucm91bmQoKDEwMCAqIGV2ZW50LmxvYWRlZCkgLyBldmVudC50b3RhbCEpLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuUmVzcG9uc2UpIHtcbiAgICAgICAgICB0aGlzLnNldFN1Y2Nlc3MoeyByZWY6IGZpbGUucmVmLCBib2R5OiBldmVudC5ib2R5IH0pO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHRha2VXaGlsZShcbiAgICAgICAgKGV2ZW50OiBIdHRwRXZlbnQ8YW55PikgPT4gZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5VcGxvYWRQcm9ncmVzc1xuICAgICAgKSxcbiAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICB0aGlzLnNldEZhaWwoe1xuICAgICAgICAgIHJlZjogZmlsZS5yZWYsXG4gICAgICAgICAgbWVzc2FnZTogJ2ZpbGUudXBsb2FkLnJldHJ5LmVycm9yJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfTtcblxuICAvKipcbiAgICogRm9yIGFkZGluZyBvbmUgZmlsZSBwYW5lbCAoY3JlYXRpb24gb2YgZmlsZSBwYW5lbCByZWZlcmVuY2Ugc2tpcHBlZCBpZiBhbHJlYWR5IGNyZWF0ZWQpIGF0IGEgdGltZS5cbiAgICogVXBsb2FkIHRvIEJFIG5vdCB0cmlnZ2VyZWRcbiAgICovXG4gIHJlYWRvbmx5IGFkZEZvclBvdGVudGlhbFVwbG9hZCA9IHRoaXMuZWZmZWN0KFxuICAgIChmaWxlJDogT2JzZXJ2YWJsZTxQcm9ncmVzc0ZpbGU+KSA9PiB0aGlzLnByb2dyZXNzRmlsZUNoZWNrZXIoZmlsZSQpXG4gICk7XG5cbiAgLyoqXG4gICAqIEZvciBhZGRpbmcgYW4gYXJyYXkgb2YgZmlsZSBwYW5lbHMgKGNyZWF0aW9uIG9mIGZpbGUgcGFuZWxzIHJlZmVyZW5jZSBza2lwcGVkIGlmIGFscmVhZHkgY3JlYXRlZCkuXG4gICAqIFVwbG9hZHMgdG8gQkUgbm90IHRyaWdnZXJlZFxuICAgKi9cbiAgcmVhZG9ubHkgYWRkU2V2ZXJhbEZvclBvdGVudGlhbFVwbG9hZCA9IHRoaXMuZWZmZWN0KFxuICAgIChmaWxlcyQ6IE9ic2VydmFibGU8UHJvZ3Jlc3NGaWxlW10+KSA9PlxuICAgICAgZmlsZXMkLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoZmlsZXMpID0+XG4gICAgICAgICAgZm9ya0pvaW4oZmlsZXMubWFwKChmaWxlKSA9PiB0aGlzLnByb2dyZXNzRmlsZUNoZWNrZXIob2YoZmlsZSkpKSlcbiAgICAgICAgKVxuICAgICAgKVxuICApO1xuXG4gIC8qKlxuICAgKiBGb3IgYWRkaW5nIGEgZmlsZSBwYW5lbCAoY3JlYXRpb24gb2YgZmlsZSBwYW5lbHMgcmVmZXJlbmNlIHNraXBwZWQgaWYgYWxyZWFkeSBjcmVhdGVkKSB0aGVuIHVwbG9hZGluZyBpdFxuICAgKi9cbiAgcmVhZG9ubHkgdXBsb2FkRmlsZSA9IHRoaXMuZWZmZWN0KChmaWxlJDogT2JzZXJ2YWJsZTxQcm9ncmVzc0ZpbGU+KSA9PiB7XG4gICAgcmV0dXJuIHRoaXMucHJvZ3Jlc3NGaWxlQ2hlY2tlcihmaWxlJCkucGlwZShtZXJnZU1hcCh0aGlzLmxvYWRTdGVwKSk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHJldHJ5RmlsZSA9IHRoaXMuZWZmZWN0KFxuICAgIChmaWxlJDogT2JzZXJ2YWJsZTxSZWZlcmVuY2VkUHJvZ3Jlc3NGaWxlPikgPT5cbiAgICAgIHRoaXMucHJvZ3Jlc3NGaWxlQ2hlY2tlcihmaWxlJCkucGlwZShtZXJnZU1hcCh0aGlzLmxvYWRTdGVwKSlcbiAgKTtcblxuICAvKipcbiAgICogRm9yIGFkZGluZyBzZXZlcmFsIGZpbGUgcGFuZWxzIChjcmVhdGlvbiBvZiBmaWxlIHBhbmVscyByZWZlcmVuY2Ugc2tpcHBlZCBpZiBhbHJlYWR5IGNyZWF0ZWQpIHRoZW4gdXBsb2FkaW5nIHRoZW1cbiAgICovXG4gIHJlYWRvbmx5IHVwbG9hZEZpbGVzID0gdGhpcy5lZmZlY3QoKGZpbGVzJDogT2JzZXJ2YWJsZTxQcm9ncmVzc0ZpbGVbXT4pID0+XG4gICAgZmlsZXMkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGZpbGVzKSA9PlxuICAgICAgICBtZXJnZShcbiAgICAgICAgICAuLi5maWxlcy5tYXAoKGZpbGUpID0+XG4gICAgICAgICAgICB0aGlzLnByb2dyZXNzRmlsZUNoZWNrZXIob2YoZmlsZSkpLnBpcGUoc3dpdGNoTWFwKHRoaXMubG9hZFN0ZXApKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcbn1cbiJdfQ==
314
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lbXJ2YS1tYXQtZmlsZS11cGxvYWQuc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbWF0LWZpbGUtdXBsb2FkL3NyYy9vbmVtcnZhLW1hdC1maWxlLXVwbG9hZC5zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RCxPQUFPLEVBQ0wsVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBQ1IsUUFBUSxFQUNSLEdBQUcsRUFDSCxLQUFLLEVBQ0wsUUFBUSxFQUVSLEVBQUUsRUFFRixTQUFTLEVBQ1QsSUFBSSxFQUNKLFNBQVMsRUFDVCxHQUFHLEVBQ0gsUUFBUSxFQUNSLGNBQWMsR0FDZixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFDTCxhQUFhLEdBR2QsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQWEsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFaEUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG9DQUFvQyxDQUFDOzs7O0FBZW5FLE1BQU0sVUFBVSxHQUFnQjtJQUM5QixNQUFNLEVBQUUsRUFBRTtJQUNWLE1BQU0sRUFBRSxFQUFFO0lBQ1YsV0FBVyxFQUFFLENBQUM7SUFDZCxlQUFlLEVBQUUsRUFBRTtJQUNuQixLQUFLLEVBQUU7UUFDTCxJQUFJLEVBQUUsTUFBTTtLQUNiO0NBQ0YsQ0FBQztBQU1GLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLElBQUksY0FBYyxDQUNwRCwrQkFBK0IsQ0FDaEMsQ0FBQztBQUdGLE1BQU0sT0FBTyx5QkFDWCxTQUFRLGNBQTJCO0lBVXpCO0lBQ0E7SUFHRDtJQVhELEVB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dGFibGUsIEluamVjdGlvblRva2VuLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50U3RvcmUgfSBmcm9tICdAbmdyeC9jb21wb25lbnQtc3RvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgY2F0Y2hFcnJvcixcbiAgZmlsdGVyLFxuICBmb3JrSm9pbixcbiAgaW50ZXJ2YWwsXG4gIG1hcCxcbiAgbWVyZ2UsXG4gIG1lcmdlTWFwLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgU3ViamVjdCxcbiAgc3dpdGNoTWFwLFxuICB0YWtlLFxuICB0YWtlV2hpbGUsXG4gIHRhcCxcbiAgdGhyb3R0bGUsXG4gIHdpdGhMYXRlc3RGcm9tLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE9uZW1ydmFNYXRGaWxlVXBsb2FkU2VydmljZSB9IGZyb20gJy4vb25lbXJ2YS1tYXQtZmlsZS11cGxvYWQuc2VydmljZSc7XG5pbXBvcnQge1xuICBmb3JtYXR0ZWRTaXplLFxuICBQcm9ncmVzc0ZpbGUsXG4gIFJlZmVyZW5jZWRQcm9ncmVzc0ZpbGUsXG59IGZyb20gJy4vbW9kZWxzL3Byb2dyZXNzLWZpbGUubW9kZWwnO1xuaW1wb3J0IHsgSHR0cEV2ZW50LCBIdHRwRXZlbnRUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT25lbXJ2YU1hdEZpbGVVcGxvYWRTdG9yZUl0ZiB9IGZyb20gJy4vb25lbXJ2YS1tYXQtZmlsZS11cGxvYWQtaXRmLnN0b3JlJztcbmltcG9ydCB7T25lbXJ2YU1hdENvbG9yfSBmcm9tIFwiQG9uZW1ydmFwdWJsaWMvZGVzaWduLXN5c3RlbS91dGlsc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVVcGxvYWRTdG9yZUV2ZW50IHtcbiAgdHlwZTogc3RyaW5nO1xuICBwYXlsb2FkPzogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwbG9hZFN0YXRlIHtcbiAgdXBsb2FkOiBSZWZlcmVuY2VkUHJvZ3Jlc3NGaWxlW107XG4gIGFjY2VwdDogc3RyaW5nW107XG4gIG1heEZpbGVTaXplOiBudW1iZXI7XG4gIGZpbGVVcGxvYWRFcnJvcjogc3RyaW5nO1xuICBldmVudDogRmlsZVVwbG9hZFN0b3JlRXZlbnQ7XG59XG5cbmNvbnN0IElOSVRfU1RBVEU6IFVwbG9hZFN0YXRlID0ge1xuICB1cGxvYWQ6IFtdLFxuICBhY2NlcHQ6IFtdLFxuICBtYXhGaWxlU2l6ZTogMCxcbiAgZmlsZVVwbG9hZEVycm9yOiAnJyxcbiAgZXZlbnQ6IHtcbiAgICB0eXBlOiAnSU5JVCcsXG4gIH0sXG59O1xuXG5leHBvcnQgdHlwZSBDdXN0b21WYWxpZGF0aW9uRm4gPSAoXG4gIGlucHV0OiBbUmVmZXJlbmNlZFByb2dyZXNzRmlsZSwgUmVmZXJlbmNlZFByb2dyZXNzRmlsZVtdXVxuKSA9PiBSZWZlcmVuY2VkUHJvZ3Jlc3NGaWxlO1xuXG5leHBvcnQgY29uc3QgQ1VTVE9NX1ZBTElEQVRJT05fRk4gPSBuZXcgSW5qZWN0aW9uVG9rZW48Q3VzdG9tVmFsaWRhdGlvbkZuPihcbiAgJ3gxLCB4MiA9ICgtYiAtKyBzcXJ0KHJobykpLzJhJ1xuKTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE9uZW1ydmFNYXRGaWxlVXBsb2FkU3RvcmVcbiAgZXh0ZW5kcyBDb21wb25lbnRTdG9yZTxVcGxvYWRTdGF0ZT5cbiAgaW1wbGVtZW50cyBPbmVtcnZhTWF0RmlsZVVwbG9hZFN0b3JlSXRmXG57XG4gIHByaXZhdGUgZm46IEN1c3RvbVZhbGlkYXRpb25GbiA9IChcbiAgICB4OiBbUmVmZXJlbmNlZFByb2dyZXNzRmlsZSwgUmVmZXJlbmNlZFByb2dyZXNzRmlsZVtdXVxuICApID0+IHtcbiAgICByZXR1cm4geFswXTtcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZpbGVVcGxvYWRTZXJ2aWNlOiBPbmVtcnZhTWF0RmlsZVVwbG9hZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChDVVNUT01fVkFMSURBVElPTl9GTilcbiAgICBwdWJsaWMgY3VzdG9tVmFsaWRhdGlvbkZuOiBDdXN0b21WYWxpZGF0aW9uRm5cbiAgKSB7XG4gICAgc3VwZXIoSU5JVF9TVEFURSk7XG4gICAgaWYgKCEhY3VzdG9tVmFsaWRhdGlvbkZuKSB0aGlzLmZuID0gY3VzdG9tVmFsaWRhdGlvbkZuO1xuICB9XG5cbiAgLypcbiAgICogVSBQIEQgQSBUIEUgUiBTXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2V0QWNjZXB0ID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgYWNjZXB0OiBzdHJpbmdbXSkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBhY2NlcHQsXG4gICAgZXZlbnQ6IHtcbiAgICAgIHR5cGU6ICdzZXRBY2NlcHQnLFxuICAgICAgcGF5bG9hZDogYWNjZXB0LFxuICAgIH0sXG4gIH0pKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgc2V0TWF4RmlsZVNpemUgPSB0aGlzLnVwZGF0ZXIoXG4gICAgKHN0YXRlLCBtYXhGaWxlU2l6ZTogbnVtYmVyKSA9PiAoe1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBtYXhGaWxlU2l6ZSxcbiAgICAgIGV2ZW50OiB7XG4gICAgICAgIHR5cGU6ICdzZXRNYXhGaWxlU2l6ZScsXG4gICAgICAgIHBheWxvYWQ6IG1heEZpbGVTaXplLFxuICAgICAgfSxcbiAgICB9KVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZW1wdHlMaXN0ID0gdGhpcy51cGRhdGVyKChzdGF0ZSkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHVwbG9hZDogW10sXG4gICAgICBldmVudDoge1xuICAgICAgICB0eXBlOiAnZW1wdHlMaXN0JyxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwdXNoRmlsZSA9IHRoaXMudXBkYXRlcihcbiAgICAoc3RhdGUsIHBheWxvYWQ6IFJlZmVyZW5jZWRQcm9ncmVzc0ZpbGUpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICB1cGxvYWQ6IFsuLi5zdGF0ZS51cGxvYWQsIHsgLi4ucGF5bG9hZCB9XSxcbiAgICAgICAgZXZlbnQ6IHtcbiAgICAgICAgICB0eXBlOiAncHVzaEZpbGUnLFxuICAgICAgICAgIHBheWxvYWQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgc2V0RGF0YSA9IHRoaXMudXBkYXRlcihcbiAgICAoc3RhdGUsIHBheWxvYWQ6IHsgcmVmOiBzeW1ib2w7IGRhdGE6IGFueSB9KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgdXBsb2FkOiBzdGF0ZS51cGxvYWQubWFwKChmaWxlOiBSZWZlcmVuY2VkUHJvZ3Jlc3NGaWxlKSA9PlxuICAgICAgICAgIGZpbGUucmVmID09PSBwYXlsb2FkLnJlZiA/IHsgLi4uZmlsZSwgZGF0YTogcGF5bG9hZC5kYXRhIH0gOiBmaWxlXG4gICAgICAgICksXG4gICAgICAgIGV2ZW50OiB7XG4gICAgICAgICAgdHlwZTogJ3NldERhdGEnLFxuICAgICAgICAgIHBheWxvYWQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHNldFN1Y2Nlc3MgPSB0aGlzLnVwZGF0ZXIoXG4gICAgKHN0YXRlLCBwYXlsb2FkOiB7IHJlZjogc3ltYm9sOyBib2R5OiBhbnkgfSkgPT4ge1xuICAgICAgY29uc3QgbmV3RmlsZSA9IHtcbiAgICAgICAgLi4uc3RhdGUudXBsb2FkLmZpbmQoKGYpID0+IGYucmVmID09PSBwYXlsb2FkLnJlZiksXG4gICAgICAgIC4uLnBheWxvYWQuYm9keSxcbiAgICAgICAgY29sb3I6ICdzdWNjZXNzJyxcbiAgICAgICAgcHJvZ3Jlc3M6IDEwMCxcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICB1cGxvYWQ6IHN0YXRlLnVwbG9hZC5tYXAoKGZpbGUpID0+XG4gICAgICAgICAgZmlsZS5yZWYgPT09IHBheWxvYWQucmVmID8gbmV3RmlsZSA6IGZpbGVcbiAgICAgICAgKSxcbiAgICAgICAgZXZlbnQ6IHtcbiAgICAgICAgICB0eXBlOiAnc2V0RGF0YScsXG4gICAgICAgICAgcGF5bG9hZDogbmV3RmlsZSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2V0RmFpbCA9IHRoaXMudXBkYXRlcihcbiAgICAoc3RhdGUsIHBheWxvYWQ6IHsgcmVmOiBzeW1ib2w7IG1lc3NhZ2U6IHN0cmluZywgY29sb3I6IE9uZW1ydmFNYXRDb2xvciB9KSA9PiAoe1xuICAgICAgLi4uc3RhdGUsXG4gICAgICB1cGxvYWQ6IHN0YXRlLnVwbG9hZC5tYXAoKGZpbGUpID0+XG4gICAgICAgIGZpbGUucmVmID09PSBwYXlsb2FkLnJlZlxuICAgICAgICAgID8geyAuLi5maWxlLCAgbWVzc2FnZTogcGF5bG9hZC5tZXNzYWdlLCBjb2xvcjogcGF5bG9hZC5jb2xvciB9XG4gICAgICAgICAgOiBmaWxlXG4gICAgICApLFxuICAgICAgZXZlbnQ6IHtcbiAgICAgICAgdHlwZTogJ3NldEZhaWwnLFxuICAgICAgICBwYXlsb2FkLFxuICAgICAgfSxcbiAgICB9KVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2V0UHJvZ3Jlc3MgPSB0aGlzLnVwZGF0ZXIoXG4gICAgKHN0YXRlLCBwYXlsb2FkOiB7IHJlZjogc3ltYm9sOyBwcm9ncmVzczogbnVtYmVyIH0pID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHVwbG9hZDogc3RhdGUudXBsb2FkLm1hcCgoZmlsZSkgPT5cbiAgICAgICAgZmlsZS5yZWYgPT09IHBheWxvYWQucmVmXG4gICAgICAgICAgPyB7IC4uLmZpbGUsIHByb2dyZXNzOiBwYXlsb2FkLnByb2dyZXNzIH1cbiAgICAgICAgICA6IGZpbGVcbiAgICAgICksXG4gICAgICBldmVudDoge1xuICAgICAgICB0eXBlOiAnc2V0UHJvZ3Jlc3MnLFxuICAgICAgICBwYXlsb2FkLFxuICAgICAgfSxcbiAgICB9KVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzZXQgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCByZWY6IHN5bWJvbCkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICB1cGxvYWQ6IHN0YXRlLnVwbG9hZC5tYXAoKGZpbGUpID0+XG4gICAgICBmaWxlLnJlZiA9PT0gcmVmID8geyAuLi5maWxlLCBwcm9ncmVzczogMCwgbWVzc2FnZTogJycsIGNvbG9yOiAnJyB9IDogZmlsZVxuICAgICksXG4gICAgZXZlbnQ6IHtcbiAgICAgIHR5cGU6ICdyZXNldCcsXG4gICAgICBwYXlsb2FkOiByZWYsXG4gICAgfSxcbiAgfSkpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVtb3ZlID0gdGhpcy51cGRhdGVyKFxuICAgIChzdGF0ZSwgcGF5bG9hZDogUmVmZXJlbmNlZFByb2dyZXNzRmlsZSkgPT4gKHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgdXBsb2FkOiBzdGF0ZS51cGxvYWQuZmlsdGVyKChmKSA9PiBmLnJlZiAhPT0gcGF5bG9hZC5yZWYpLFxuICAgICAgZXZlbnQ6IHtcbiAgICAgICAgdHlwZTogJ3JlbW92ZScsXG4gICAgICAgIHBheWxvYWQsXG4gICAgICB9LFxuICAgIH0pXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBlbmFibGVQcm9ncmVzc0JhciA9IHRoaXMudXBkYXRlcigoc3RhdGUpID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgdXBsb2FkOiBzdGF0ZS51cGxvYWQubWFwKChmaWxlKSA9PiAoeyAuLi5maWxlLCBlbmFibGVQcm9ncmVzc0JhcjogdHJ1ZSB9KSksXG4gICAgZXZlbnQ6IHtcbiAgICAgIHR5cGU6ICdlbmFibGVQcm9ncmVzc0JhcicsXG4gICAgfSxcbiAgfSkpO1xuXG4gIHB1YmxpYyByZWFkb25seSBzZXRGaWxlVXBsb2FkRXJyb3IgPSB0aGlzLnVwZGF0ZXIoXG4gICAgKHN0YXRlLCBmaWxlVXBsb2FkRXJyb3I6IHN0cmluZykgPT4gKHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgZmlsZVVwbG9hZEVycm9yLFxuICAgICAgZXZlbnQ6IHtcbiAgICAgICAgdHlwZTogJ3NldEZpbGVVcGxvYWRFcnJvcicsXG4gICAgICAgIHBheWxvYWQ6IGZpbGVVcGxvYWRFcnJvcixcbiAgICAgIH0sXG4gICAgfSlcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY2xlYXJGaWxlVXBsb2FkRXJyb3IgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlKSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIGZpbGVVcGxvYWRFcnJvcjogJycsXG4gICAgZXZlbnQ6IHtcbiAgICAgIHR5cGU6ICdjbGVhckZpbGVVcGxvYWRFcnJvcicsXG4gICAgfSxcbiAgfSkpO1xuXG4gIC8qXG4gICAqIFMgRSBMIEUgQyBUIE8gUiBTXG4gICAqL1xuICByZWFkb25seSBmaWxlcyQgPSB0aGlzLnNlbGVjdCgoc3RhdGUpID0+IHN0YXRlLnVwbG9hZCk7XG4gIHJlYWRvbmx5IGFjY2VwdCQgPSB0aGlzLnNlbGVjdCgoc3RhdGUpID0+IHN0YXRlLmFjY2VwdCk7XG4gIHJlYWRvbmx5IGV2ZW50JCA9IHRoaXMuc2VsZWN0KChzdGF0ZSkgPT4gc3RhdGUuZXZlbnQpO1xuICByZWFkb25seSBtYXhGaWxlU2l6ZSQgPSB0aGlzLnNlbGVjdCgoc3RhdGUpID0+IHN0YXRlLm1heEZpbGVTaXplKTtcbiAgcmVhZG9ubHkgZmlsZVVwbG9hZEVycm9yJCA9IHRoaXMuc2VsZWN0KChzdGF0ZSkgPT4gc3RhdGUuZmlsZVVwbG9hZEVycm9yKTtcblxuICAvKlxuICAgKiBBIEMgVCBJIE8gTiBTICAgLyAgIEUgRiBGIEUgQyBUIFNcbiAgICovXG4gIHJlYWRvbmx5IGxpc3RVcGxvYWRlZEZpbGVzID0gdGhpcy5lZmZlY3QoKGlucHV0cyQ6IE9ic2VydmFibGU8YW55PikgPT4ge1xuICAgIHJldHVybiBpbnB1dHMkLnBpcGUoXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICB0aGlzLmVtcHR5TGlzdCgpO1xuICAgICAgfSksXG4gICAgICBtZXJnZU1hcCgoaW5wdXRzOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsZVVwbG9hZFNlcnZpY2UubGlzdFVwbG9hZGVkRmlsZXMoaW5wdXRzKS5waXBlKFxuICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5maWxlcyQpLFxuICAgICAgICAgIHRhcCgoW25ld2ZpbGVzLCByZWdpc3RlcmVkRmlsZXNdKSA9PiB7XG4gICAgICAgICAgICBuZXdmaWxlcy5mb3JFYWNoKChmaWxlKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICByZWdpc3RlcmVkRmlsZXMuZmluZEluZGV4KChyZmlsZSkgPT4gcmZpbGUuaWQgPT09IGZpbGUuaWQpIDwgMFxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnB1c2hGaWxlKHtcbiAgICAgICAgICAgICAgICAgIC4uLmZpbGUsXG4gICAgICAgICAgICAgICAgICBjb2xvcjogJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3M6IDEwMCxcbiAgICAgICAgICAgICAgICAgIHJlZjogU3ltYm9sKCdILnBzaSA9IEUucHNpJyksXG4gICAgICAgICAgICAgICAgICBuYW1lOiBmaWxlIS5uYW1lLFxuICAgICAgICAgICAgICAgICAgbGFzdE1vZGlmaWVkOiBmaWxlIS5sYXN0TW9kaWZpZWQsXG4gICAgICAgICAgICAgICAgICBzaXplOiBmaWxlIS5zaXplLFxuICAgICAgICAgICAgICAgICAgdHlwZTogZmlsZSEudHlwZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihbXSkpXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGRlbGV0ZUZpbGUgPSB0aGlzLmVmZmVjdChcbiAgICAoZmlsZSQ6IE9ic2VydmFibGU8UmVmZXJlbmNlZFByb2dyZXNzRmlsZT4pID0+IHtcbiAgICAgIHJldHVybiBmaWxlJC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY2xlYXJGaWxlVXBsb2FkRXJyb3IoKTtcbiAgICAgICAgfSksXG4gICAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuZmlsZXMkKSxcbiAgICAgICAgbWFwKHRoaXMuZm4pLFxuICAgICAgICBtZXJnZU1hcCgoZmlsZTogYW55KSA9PlxuICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZFNlcnZpY2UuZGVsZXRlRmlsZShmaWxlLmlkKS5waXBlKFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMucmVtb3ZlKGZpbGUpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5zZXRGYWlsKHtcbiAgICAgICAgICAgICAgICByZWY6IGZpbGUucmVmLFxuICAgICAgICAgICAgICAgIGNvbG9yOiBPbmVtcnZhTWF0Q29sb3IuV0FSTixcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiAnZmlsZS51cGxvYWQuZGVsZXRlLmVycm9yJyxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgKTtcblxuICByZWFkb25seSByZW1vdmVGaWxlID0gdGhpcy5lZmZlY3QoXG4gICAgKGZpbGUkOiBPYnNlcnZhYmxlPFJlZmVyZW5jZWRQcm9ncmVzc0ZpbGU+KSA9PiB7XG4gICAgICByZXR1cm4gZmlsZSQucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNsZWFyRmlsZVVwbG9hZEVycm9yKCk7XG4gICAgICAgIH0pLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmZpbGVzJCksXG4gICAgICAgIG1hcCh0aGlzLmZuKSxcbiAgICAgICAgdGFwKChmaWxlKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZW1vdmUoZmlsZSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgKTtcblxuICBwcml2YXRlIHByb2dyZXNzRmlsZUNoZWNrZXIgPSAoZmlsZSQ6IE9ic2VydmFibGU8YW55PikgPT4ge1xuICAgIHJldHVybiBmaWxlJC5waXBlKFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5hY2NlcHQkKSxcbiAgICAgIG1hcCgoW2ZpbGUsIGFjY2VwdF0pID0+IHtcbiAgICAgICAgLy8gU3RlcCAxIC0gQWRkIGEgbmV3IGZpbGUgaW4gdGhlIHZpZXdcbiAgICAgICAgbGV0IGY6IFJlZmVyZW5jZWRQcm9ncmVzc0ZpbGUgPSB7IC4uLmZpbGUgfTtcbiAgICAgICAgaWYgKGZpbGUucmVmID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBmID0ge1xuICAgICAgICAgICAgLi4uZixcbiAgICAgICAgICAgIHJlZjogU3ltYm9sKCd2X3NvdW5kID0gc3FydChnYW1tYS5QIC8gcmhvKScpLFxuICAgICAgICAgICAgbmFtZTogZmlsZSEubmFtZSxcbiAgICAgICAgICAgIGxhc3RNb2RpZmllZDogZmlsZSEubGFzdE1vZGlmaWVkLFxuICAgICAgICAgICAgc2l6ZTogZmlsZSEuc2l6ZSxcbiAgICAgICAgICAgIHR5cGU6IGZpbGUhLnR5cGUsXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLnB1c2hGaWxlKGYpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU3RlcCAyIC0gQ2hlY2sgZmlsZSBleHRlbnNpb25cbiAgICAgICAgaWYgKCFhY2NlcHQuaW5jbHVkZXMoZmlsZS5maWxlIS50eXBlKSkge1xuICAgICAgICAgIHRoaXMuc2V0RmFpbCh7XG4gICAgICAgICAgICByZWY6IGYucmVmLFxuICAgICAgICAgICAgY29sb3I6IE9uZW1ydmFNYXRDb2xvci5FUlJPUixcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICAgICAnZmlsZS51cGxvYWQudHlwZS5ub3Quc3VwcG9ydGVkJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICAvLyBUaGlzIHRyaWNrIGNvdXBsZWQgd2l0aCB0aGUgbmV4dCBmaWx0ZXIgaXMgdXNlZCB0byBhdm9pZCBjYXRjaEVycm9yLCB3aGljaCB3b3VsZCBicmVhayB0aGUgZWZmZWN0XG4gICAgICAgICAgcmV0dXJuIHsgLi4uZiwgbWVzc2FnZTogJ0VSUk9SJyB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmO1xuICAgICAgfSksXG4gICAgICBmaWx0ZXIoKHgpID0+IHgubWVzc2FnZSAhPT0gJ0VSUk9SJyksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLm1heEZpbGVTaXplJCksXG4gICAgICBtYXAoKFtyZWZGaWxlLCBtYXhGaWxlU2l6ZV0pID0+IHtcbiAgICAgICAgLy8gU3RlcCAzIC0gQ2hlY2sgZmlsZSBzaXplXG4gICAgICAgIGlmIChtYXhGaWxlU2l6ZSAhPT0gMCAmJiByZWZGaWxlLnNpemUgPiBtYXhGaWxlU2l6ZSkge1xuICAgICAgICAgIHRoaXMuc2V0RmFpbCh7XG4gICAgICAgICAgICByZWY6IHJlZkZpbGUucmVmLFxuICAgICAgICAgICAgY29sb3I6IE9uZW1ydmFNYXRDb2xvci5FUlJPUixcbiAgICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdmaWxlLnVwbG9hZC50b28uYmlnJykgK1xuICAgICAgICAgICAgICAnICcgK1xuICAgICAgICAgICAgICBmb3JtYXR0ZWRTaXplKHJlZkZpbGUuc2l6ZSksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgLy8gU2FtZSB0cmljayBmb3IgZXJyb3IgbWFuYWdlbWVudFxuICAgICAgICAgIHJldHVybiB7IC4uLnJlZkZpbGUsIG1lc3NhZ2U6ICdFUlJPUicgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVmRmlsZTtcbiAgICAgIH0pLFxuICAgICAgZmlsdGVyKCh4KSA9PiB4Lm1lc3NhZ2UgIT09ICdFUlJPUicpLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5maWxlcyQpLFxuICAgICAgbWFwKHRoaXMuZm4pLCAvLyBGb3IgY3VzdG9tIHZhbGlkYXRpb25zXG4gICAgICB0YXAoKHgpID0+IHtcbiAgICAgICAgaWYgKCEheC5tZXNzYWdlICYmIHgubWVzc2FnZS5zdGFydHNXaXRoKCdFUlJPUjonKSlcbiAgICAgICAgICB0aGlzLnNldEZpbGVVcGxvYWRFcnJvcih4Lm1lc3NhZ2UucmVwbGFjZSgnRVJST1I6JywgJycpLnRyaW0oKSk7XG4gICAgICAgIGVsc2UgdGhpcy5jbGVhckZpbGVVcGxvYWRFcnJvcigpO1xuICAgICAgfSksXG4gICAgICBmaWx0ZXIoKHgpID0+ICF4Lm1lc3NhZ2Uuc3RhcnRzV2l0aCgnRVJST1InKSksXG4gICAgICB0YWtlKDEpXG4gICAgKTtcbiAgfTtcblxuICBwcml2YXRlIGxvYWRTdGVwID0gKGZpbGU6IGFueSkgPT4ge1xuICAgIGlmIChmaWxlLmNvbG9yID09PSBPbmVtcnZhTWF0Q29sb3IuV0FSTikgdGhpcy5yZXNldChmaWxlLnJlZik7XG5cbiAgICB0aGlzLmVuYWJsZVByb2dyZXNzQmFyKCk7XG5cbiAgICByZXR1cm4gdGhpcy5maWxlVXBsb2FkU2VydmljZS51cGxvYWQoZmlsZSkucGlwZShcbiAgICAgIHRocm90dGxlKCgpID0+IGludGVydmFsKDIwMCksIHsgbGVhZGluZzogdHJ1ZSwgdHJhaWxpbmc6IHRydWUgfSksXG4gICAgICB0YXAoKGV2ZW50OiBIdHRwRXZlbnQ8YW55PikgPT4ge1xuICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5VcGxvYWRQcm9ncmVzcykge1xuICAgICAgICAgIHRoaXMuc2V0UHJvZ3Jlc3Moe1xuICAgICAgICAgICAgcmVmOiBmaWxlLnJlZixcbiAgICAgICAgICAgIHByb2dyZXNzOiBNYXRoLnJvdW5kKCgxMDAgKiBldmVudC5sb2FkZWQpIC8gZXZlbnQudG90YWwhKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlKSB7XG4gICAgICAgICAgdGhpcy5zZXRTdWNjZXNzKHsgcmVmOiBmaWxlLnJlZiwgYm9keTogZXZlbnQuYm9keSB9KTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICB0YWtlV2hpbGUoXG4gICAgICAgIChldmVudDogSHR0cEV2ZW50PGFueT4pID0+IGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3NcbiAgICAgICksXG4gICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgdGhpcy5zZXRGYWlsKHtcbiAgICAgICAgICByZWY6IGZpbGUucmVmLFxuICAgICAgICAgIGNvbG9yOiBPbmVtcnZhTWF0Q29sb3IuV0FSTixcbiAgICAgICAgICBtZXNzYWdlOiAnZmlsZS51cGxvYWQucmV0cnkuZXJyb3InLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgfSlcbiAgICApO1xuICB9O1xuXG4gIC8qKlxuICAgKiBGb3IgYWRkaW5nIG9uZSBmaWxlIHBhbmVsIChjcmVhdGlvbiBvZiBmaWxlIHBhbmVsIHJlZmVyZW5jZSBza2lwcGVkIGlmIGFscmVhZHkgY3JlYXRlZCkgYXQgYSB0aW1lLlxuICAgKiBVcGxvYWQgdG8gQkUgbm90IHRyaWdnZXJlZFxuICAgKi9cbiAgcmVhZG9ubHkgYWRkRm9yUG90ZW50aWFsVXBsb2FkID0gdGhpcy5lZmZlY3QoXG4gICAgKGZpbGUkOiBPYnNlcnZhYmxlPFByb2dyZXNzRmlsZT4pID0+IHRoaXMucHJvZ3Jlc3NGaWxlQ2hlY2tlcihmaWxlJClcbiAgKTtcblxuICAvKipcbiAgICogRm9yIGFkZGluZyBhbiBhcnJheSBvZiBmaWxlIHBhbmVscyAoY3JlYXRpb24gb2YgZmlsZSBwYW5lbHMgcmVmZXJlbmNlIHNraXBwZWQgaWYgYWxyZWFkeSBjcmVhdGVkKS5cbiAgICogVXBsb2FkcyB0byBCRSBub3QgdHJpZ2dlcmVkXG4gICAqL1xuICByZWFkb25seSBhZGRTZXZlcmFsRm9yUG90ZW50aWFsVXBsb2FkID0gdGhpcy5lZmZlY3QoXG4gICAgKGZpbGVzJDogT2JzZXJ2YWJsZTxQcm9ncmVzc0ZpbGVbXT4pID0+XG4gICAgICBmaWxlcyQucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChmaWxlcykgPT5cbiAgICAgICAgICBmb3JrSm9pbihmaWxlcy5tYXAoKGZpbGUpID0+IHRoaXMucHJvZ3Jlc3NGaWxlQ2hlY2tlcihvZihmaWxlKSkpKVxuICAgICAgICApXG4gICAgICApXG4gICk7XG5cbiAgLyoqXG4gICAqIEZvciBhZGRpbmcgYSBmaWxlIHBhbmVsIChjcmVhdGlvbiBvZiBmaWxlIHBhbmVscyByZWZlcmVuY2Ugc2tpcHBlZCBpZiBhbHJlYWR5IGNyZWF0ZWQpIHRoZW4gdXBsb2FkaW5nIGl0XG4gICAqL1xuICByZWFkb25seSB1cGxvYWRGaWxlID0gdGhpcy5lZmZlY3QoKGZpbGUkOiBPYnNlcnZhYmxlPFByb2dyZXNzRmlsZT4pID0+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9ncmVzc0ZpbGVDaGVja2VyKGZpbGUkKS5waXBlKG1lcmdlTWFwKHRoaXMubG9hZFN0ZXApKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgcmV0cnlGaWxlID0gdGhpcy5lZmZlY3QoXG4gICAgKGZpbGUkOiBPYnNlcnZhYmxlPFJlZmVyZW5jZWRQcm9ncmVzc0ZpbGU+KSA9PlxuICAgICAgdGhpcy5wcm9ncmVzc0ZpbGVDaGVja2VyKGZpbGUkKS5waXBlKG1lcmdlTWFwKHRoaXMubG9hZFN0ZXApKVxuICApO1xuXG4gIC8qKlxuICAgKiBGb3IgYWRkaW5nIHNldmVyYWwgZmlsZSBwYW5lbHMgKGNyZWF0aW9uIG9mIGZpbGUgcGFuZWxzIHJlZmVyZW5jZSBza2lwcGVkIGlmIGFscmVhZHkgY3JlYXRlZCkgdGhlbiB1cGxvYWRpbmcgdGhlbVxuICAgKi9cbiAgcmVhZG9ubHkgdXBsb2FkRmlsZXMgPSB0aGlzLmVmZmVjdCgoZmlsZXMkOiBPYnNlcnZhYmxlPFByb2dyZXNzRmlsZVtdPikgPT5cbiAgICBmaWxlcyQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoZmlsZXMpID0+XG4gICAgICAgIG1lcmdlKFxuICAgICAgICAgIC4uLmZpbGVzLm1hcCgoZmlsZSkgPT5cbiAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NGaWxlQ2hlY2tlcihvZihmaWxlKSkucGlwZShzd2l0Y2hNYXAodGhpcy5sb2FkU3RlcCkpXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xufVxuIl19
@@ -9,4 +9,4 @@ export const OnemrvaMatColor = mkenum({
9
9
  ERROR: 'error',
10
10
  GRAYSCALE: 'grayscale',
11
11
  });
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3IuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29uZW1ydmEvZGVzaWduLXN5c3RlbS91dGlscy9zcmMvZW51bXMvY29sb3IuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZDLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUM7SUFDcEMsSUFBSSxFQUFFLEVBQUU7SUFDUixPQUFPLEVBQUUsU0FBUztJQUNsQixNQUFNLEVBQUUsUUFBUTtJQUNoQixJQUFJLEVBQUUsTUFBTTtJQUNaLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLElBQUksRUFBRSxNQUFNO0lBQ1osS0FBSyxFQUFFLE9BQU87SUFDZCxTQUFTLEVBQUUsV0FBVztDQUN2QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBta2VudW0gfSBmcm9tICcuLi9lbnVtLnV0aWxzJztcblxuZXhwb3J0IGNvbnN0IE9uZW1ydmFNYXRDb2xvciA9IG1rZW51bSh7XG4gIE5PTkU6ICcnLFxuICBQUklNQVJZOiAncHJpbWFyeScsXG4gIEFDQ0VOVDogJ2FjY2VudCcsXG4gIFdBUk46ICd3YXJuJyxcbiAgU1VDQ0VTUzogJ3N1Y2Nlc3MnLFxuICBJTkZPOiAnaW5mbycsXG4gIEVSUk9SOiAnZXJyb3InLFxuICBHUkFZU0NBTEU6ICdncmF5c2NhbGUnLFxufSk7XG5leHBvcnQgdHlwZSBPbmVtcnZhTWF0Q29sb3IgPVxuICAodHlwZW9mIE9uZW1ydmFNYXRDb2xvcilba2V5b2YgdHlwZW9mIE9uZW1ydmFNYXRDb2xvcl07XG4iXX0=
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3IuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29uZW1ydmEvZGVzaWduLXN5c3RlbS91dGlscy9zcmMvZW51bXMvY29sb3IuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZDLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUM7SUFDcEMsSUFBSSxFQUFFLEVBQUU7SUFDUixPQUFPLEVBQUUsU0FBUztJQUNsQixNQUFNLEVBQUUsUUFBUTtJQUNoQixJQUFJLEVBQUUsTUFBTTtJQUNaLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLElBQUksRUFBRSxNQUFNO0lBQ1osS0FBSyxFQUFFLE9BQU87SUFDZCxTQUFTLEVBQUUsV0FBVztDQUN2QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBta2VudW0gfSBmcm9tICcuLi9lbnVtLnV0aWxzJztcblxuZXhwb3J0IGNvbnN0IE9uZW1ydmFNYXRDb2xvciA9IG1rZW51bSh7XG4gIE5PTkU6ICcnLFxuICBQUklNQVJZOiAncHJpbWFyeScsXG4gIEFDQ0VOVDogJ2FjY2VudCcsXG4gIFdBUk46ICd3YXJuJyxcbiAgU1VDQ0VTUzogJ3N1Y2Nlc3MnLFxuICBJTkZPOiAnaW5mbycsXG4gIEVSUk9SOiAnZXJyb3InLFxuICBHUkFZU0NBTEU6ICdncmF5c2NhbGUnLFxufSk7XG5leHBvcnQgdHlwZSBPbmVtcnZhTWF0Q29sb3IgPVxuICAodHlwZW9mIE9uZW1ydmFNYXRDb2xvcilba2V5b2YgdHlwZW9mIE9uZW1ydmFNYXRDb2xvcl07XG5cbiJdfQ==
@@ -280,7 +280,7 @@ class OnemrvaMatFileUploadStore extends ComponentStore {
280
280
  setFail = this.updater((state, payload) => ({
281
281
  ...state,
282
282
  upload: state.upload.map((file) => file.ref === payload.ref
283
- ? { ...file, color: 'warn', message: payload.message }
283
+ ? { ...file, message: payload.message, color: payload.color }
284
284
  : file),
285
285
  event: {
286
286
  type: 'setFail',
@@ -376,6 +376,7 @@ class OnemrvaMatFileUploadStore extends ComponentStore {
376
376
  }), catchError(() => {
377
377
  this.setFail({
378
378
  ref: file.ref,
379
+ color: OnemrvaMatColor.WARN,
379
380
  message: 'file.upload.delete.error',
380
381
  });
381
382
  return of(null);
@@ -407,6 +408,7 @@ class OnemrvaMatFileUploadStore extends ComponentStore {
407
408
  if (!accept.includes(file.file.type)) {
408
409
  this.setFail({
409
410
  ref: f.ref,
411
+ color: OnemrvaMatColor.ERROR,
410
412
  message: this.translateService.instant('file.upload.type.not.supported'),
411
413
  });
412
414
  // This trick coupled with the next filter is used to avoid catchError, which would break the effect
@@ -418,6 +420,7 @@ class OnemrvaMatFileUploadStore extends ComponentStore {
418
420
  if (maxFileSize !== 0 && refFile.size > maxFileSize) {
419
421
  this.setFail({
420
422
  ref: refFile.ref,
423
+ color: OnemrvaMatColor.ERROR,
421
424
  message: this.translateService.instant('file.upload.too.big') +
422
425
  ' ' +
423
426
  formattedSize(refFile.size),
@@ -435,7 +438,7 @@ class OnemrvaMatFileUploadStore extends ComponentStore {
435
438
  }), filter((x) => !x.message.startsWith('ERROR')), take(1));
436
439
  };
437
440
  loadStep = (file) => {
438
- if (file.color === 'warn')
441
+ if (file.color === OnemrvaMatColor.WARN)
439
442
  this.reset(file.ref);
440
443
  this.enableProgressBar();
441
444
  return this.fileUploadService.upload(file).pipe(throttle(() => interval(200), { leading: true, trailing: true }), tap((event) => {
@@ -451,6 +454,7 @@ class OnemrvaMatFileUploadStore extends ComponentStore {
451
454
  }), takeWhile((event) => event.type === HttpEventType.UploadProgress), catchError(() => {
452
455
  this.setFail({
453
456
  ref: file.ref,
457
+ color: OnemrvaMatColor.WARN,
454
458
  message: 'file.upload.retry.error',
455
459
  });
456
460
  return of(null);
@@ -629,6 +633,7 @@ class OnemrvaMatFileUploadComponent {
629
633
  this.fileUploadStore.uploadFiles(fs);
630
634
  else
631
635
  this.fileUploadStore.addSeveralForPotentialUpload(fs);
636
+ this.fileDropRef.nativeElement.value = null;
632
637
  }, 400);
633
638
  }
634
639
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: OnemrvaMatFileUploadComponent, deps: [{ token: i1$1.MatDialog }, { token: OnemrvaMatFileUploadStore }], target: i0.ɵɵFactoryTarget.Component });
@@ -1 +1 @@
1
- {"version":3,"file":"onemrvapublic-design-system-mat-file-upload.mjs","sources":["../../../../projects/onemrva/design-system/mat-file-upload/src/models/progress-file.model.ts","../../../../projects/onemrva/design-system/mat-file-upload/src/components/onemrva-mat-file-panel/onemrva-file-panel.component.ts","../../../../projects/onemrva/design-system/mat-file-upload/src/components/onemrva-mat-file-panel/onemrva-file-panel.component.html","../../../../projects/onemrva/design-system/mat-file-upload/src/onemrva-mat-file-upload.service.ts","../../../../projects/onemrva/design-system/mat-file-upload/src/onemrva-mat-file-upload.store.ts","../../../../projects/onemrva/design-system/mat-file-upload/src/directives/dnd.directive.ts","../../../../projects/onemrva/design-system/mat-file-upload/src/components/onemrva-mat-file-upload/onemrva-mat-file-upload.component.ts","../../../../projects/onemrva/design-system/mat-file-upload/src/components/onemrva-mat-file-upload/onemrva-mat-file-upload.component.html","../../../../projects/onemrva/design-system/mat-file-upload/src/components/index.ts","../../../../projects/onemrva/design-system/mat-file-upload/src/onemrva-mat-file-upload.module.ts","../../../../projects/onemrva/design-system/mat-file-upload/index.ts","../../../../projects/onemrva/design-system/mat-file-upload/onemrvapublic-design-system-mat-file-upload.ts"],"sourcesContent":["import { OnemrvaMatColor } from '@onemrvapublic/design-system/utils';\n\nexport interface ProgressFile {\n file?: File;\n message: string;\n progress: number;\n color: OnemrvaMatColor; // color 1 - 1 with status\n url: string | null;\n id: string | null; // backend identifier\n enableProgressBar: boolean;\n data?: any;\n\n name: string;\n lastModified?: number;\n size: number;\n type: string;\n}\n\nexport interface ReferencedProgressFile extends ProgressFile {\n ref: symbol; // ref is a frontend identifier\n}\n\n/**\n * format bytes\n * @param bytes (File size in bytes)\n * @param decimals (Decimals point)\n */\nexport function formatBytes(bytes: number, decimals: number = 2) {\n if (bytes === 0) {\n return '0 Bytes';\n }\n const k = 1024;\n const dm = decimals <= 0 ? 0 : decimals || 2;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\n}\n\nexport function formattedSize(size: number, decimals: number = 2) {\n return formatBytes(size, decimals);\n}\n\nexport function convertToProgressFile(\n id: string,\n name: string,\n message: string = '',\n progress = 100,\n color = OnemrvaMatColor.PRIMARY,\n url: string | null = null,\n enableProgressBar: boolean = false,\n data: string | null = null,\n size = 0,\n type = ''\n): ProgressFile {\n return {\n id: id!,\n name: name!,\n message: message,\n progress: progress,\n color: color,\n url: url,\n enableProgressBar: enableProgressBar,\n data: data,\n size: size,\n type: type,\n };\n}\n\nexport function convertToReferencedProgressFile(\n id: string,\n name: string,\n message: string = '',\n progress = 100,\n color = OnemrvaMatColor.PRIMARY,\n url: string | null = null,\n enableProgressBar: boolean = false,\n data: string | null = null,\n size = 0,\n type = ''\n): ReferencedProgressFile {\n return {\n id: id!,\n ref: Symbol(name),\n name: name!,\n message: message,\n progress: progress,\n color: color,\n url: url,\n enableProgressBar: enableProgressBar,\n data: data,\n size: size,\n type: type,\n };\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\nimport { OnemrvaMatColor } from '@onemrvapublic/design-system/utils';\nimport { of } from 'rxjs';\nimport { ActionConfig } from '../../models/action-config.model';\nimport {\n formattedSize,\n ReferencedProgressFile,\n} from '../../models/progress-file.model';\n\nlet NEXT_ID = 0;\n\n@Component({\n selector: 'file-panel',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./onemrva-file-panel.component.scss'],\n templateUrl: './onemrva-file-panel.component.html',\n})\nexport class OnemrvaFilePanelComponent {\n @HostBinding('attr.id')\n @Input()\n public id = `onemrva-file-panel-${NEXT_ID++}`;\n\n @HostBinding('attr.data-cy')\n @Input()\n dataCy: string = 'onemrva-file-panel-' + NEXT_ID;\n\n @Input()\n file!: ReferencedProgressFile;\n\n @Input()\n actions: ActionConfig[] = [];\n\n @Input()\n showProgress: boolean = true;\n\n get progress$() {\n return of(this.file.progress);\n }\n\n get size() {\n return formattedSize(this.file.size);\n }\n\n get color(): OnemrvaMatColor {\n return this.file.color;\n }\n\n /** @hidden @internal */\n @HostBinding('mat-accent')\n public get _colorAccent(): boolean {\n return this.color === OnemrvaMatColor.ACCENT;\n }\n\n /** @hidden @internal */\n @HostBinding('class.mat-error')\n public get _isError(): boolean {\n return this.color === OnemrvaMatColor.ERROR;\n }\n /** @hidden @internal */\n @HostBinding('class.mat-warn')\n public get _isWarn(): boolean {\n return this.color === OnemrvaMatColor.WARN;\n }\n /** @hidden @internal */\n @HostBinding('class.mat-success')\n public get _isSuccess(): boolean {\n return this.color === OnemrvaMatColor.SUCCESS;\n }\n /** @hidden @internal */\n @HostBinding('class.mat-primary')\n public get _isPrimary(): boolean {\n return this.color === OnemrvaMatColor.PRIMARY;\n }\n}\n","<div class=\"file-panel-title\" [attr.data-cy]=\"dataCy\">\n <div class=\"file-panel-title-left\">\n <mat-icon *ngIf=\"file.color === 'error'\" class=\"filled mat-error\"\n >error</mat-icon\n >\n <mat-icon *ngIf=\"file.color === 'success'\" class=\"filled mat-success\"\n >check_circle</mat-icon\n >\n <mat-icon *ngIf=\"file.color === 'warn'\" class=\"filled mat-warn\"\n >warning</mat-icon\n >\n <span class=\"file-name\">\n {{ file.name }}\n </span>\n </div>\n <div class=\"file-panel-title-action\">\n <ng-container *ngIf=\"actions.length > 0\">\n <ng-container *ngFor=\"let action of actions\">\n <mat-icon\n *ngIf=\"action.showAction(file)\"\n role=\"button\"\n color=\"primary\"\n [attr.data-cy]=\"action.dataCy\"\n matTooltip=\"{{ action.tooltipCode | translate }}\"\n [attr.aria-label]=\"action.ariaCode | translate\"\n class=\"clickable\"\n (click)=\"action.clickHandler(file)\"\n >{{ action.iconName }}</mat-icon\n >\n </ng-container>\n </ng-container>\n </div>\n</div>\n<div class=\"file-panel-content\">\n <ng-container *ngIf=\"file.message === ''\">\n <div class=\"fileInfos\">\n {{ file.lastModified | date }}\n <span class=\"float-right\" *ngIf=\"file.size > 0\">{{ size }}</span>\n </div>\n\n <div\n class=\"onemrva-progress-bar\"\n *ngIf=\"showProgress && file.enableProgressBar\"\n >\n <div class=\"onemrva-progress-bar-outer mt-s\" #onemrvaProgressBar>\n <div\n class=\"onemrva-progress-bar-inner\"\n [ngStyle]=\"{ width: (progress$ | async) + '%' }\"\n [ngClass]=\"{\n 'progress-success': (progress$ | async)! >= 100\n }\"\n data-cy=\"file-upload-progress\"\n [attr.value]=\"progress$ | async\"\n ></div>\n </div>\n </div>\n </ng-container>\n <p *ngIf=\"file.message !== ''\" class=\"message\">{{ file.message }}</p>\n</div>\n","import {\n HttpEvent,\n HttpEventType,\n HttpProgressEvent,\n HttpResponse,\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { catchError, interval, map, Observable, of, take } from 'rxjs';\nimport { ProgressFile } from './models/progress-file.model';\n\nexport interface OnemrvaMatFileUploadInterface {\n listUploadedFiles: (inputs: any) => Observable<ProgressFile[]>;\n upload: (file: ProgressFile) => Observable<HttpEvent<any>>;\n deleteFile: (id: any) => Observable<any>;\n retry: (file: any) => Observable<any>;\n downloadFile?: (id: any) => Observable<any>;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class OnemrvaMatFileUploadService\n implements OnemrvaMatFileUploadInterface\n{\n constructor() {\n alert(\n \"Don't forget to add a provider in your component with your own implementation of OnemrvaMatFileUploadInterface. Check out the demo to have an example of how to do it\"\n );\n }\n\n listUploadedFiles(inputs: any): Observable<ProgressFile[]> {\n return of([]);\n }\n\n upload(file: ProgressFile): Observable<HttpEvent<any>> {\n return interval(50).pipe(\n take(101),\n map((i) => {\n if (i < 100) {\n return {\n type: HttpEventType.UploadProgress,\n loaded: i,\n total: 100,\n } as HttpProgressEvent;\n } else {\n if (i >= 100 && Math.random() > 0.5) {\n throw 'Fake error thrown';\n }\n return new HttpResponse<any>();\n }\n }),\n catchError(() => of(new HttpResponse<any>({ body: {}, status: 500 })))\n );\n }\n\n deleteFile(id: any): Observable<any> {\n return of('F = m.a');\n }\n\n retry(file: any): Observable<any> {\n return of(file);\n }\n\n downloadFile(id: any): Observable<any> {\n alert(`Missing download implementation for file ID ${id}`);\n return of(true);\n }\n}\n","import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';\nimport { ComponentStore } from '@ngrx/component-store';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n catchError,\n filter,\n forkJoin,\n interval,\n map,\n merge,\n mergeMap,\n Observable,\n of,\n Subject,\n switchMap,\n take,\n takeWhile,\n tap,\n throttle,\n withLatestFrom,\n} from 'rxjs';\nimport { OnemrvaMatFileUploadService } from './onemrva-mat-file-upload.service';\nimport {\n formattedSize,\n ProgressFile,\n ReferencedProgressFile,\n} from './models/progress-file.model';\nimport { HttpEvent, HttpEventType } from '@angular/common/http';\nimport { OnemrvaMatFileUploadStoreItf } from './onemrva-mat-file-upload-itf.store';\n\nexport interface FileUploadStoreEvent {\n type: string;\n payload?: any;\n}\n\nexport interface UploadState {\n upload: ReferencedProgressFile[];\n accept: string[];\n maxFileSize: number;\n fileUploadError: string;\n event: FileUploadStoreEvent;\n}\n\nconst INIT_STATE: UploadState = {\n upload: [],\n accept: [],\n maxFileSize: 0,\n fileUploadError: '',\n event: {\n type: 'INIT',\n },\n};\n\nexport type CustomValidationFn = (\n input: [ReferencedProgressFile, ReferencedProgressFile[]]\n) => ReferencedProgressFile;\n\nexport const CUSTOM_VALIDATION_FN = new InjectionToken<CustomValidationFn>(\n 'x1, x2 = (-b -+ sqrt(rho))/2a'\n);\n\n@Injectable()\nexport class OnemrvaMatFileUploadStore\n extends ComponentStore<UploadState>\n implements OnemrvaMatFileUploadStoreItf\n{\n private fn: CustomValidationFn = (\n x: [ReferencedProgressFile, ReferencedProgressFile[]]\n ) => {\n return x[0];\n };\n\n constructor(\n private fileUploadService: OnemrvaMatFileUploadService,\n private translateService: TranslateService,\n @Optional()\n @Inject(CUSTOM_VALIDATION_FN)\n public customValidationFn: CustomValidationFn\n ) {\n super(INIT_STATE);\n if (!!customValidationFn) this.fn = customValidationFn;\n }\n\n /*\n * U P D A T E R S\n */\n public readonly setAccept = this.updater((state, accept: string[]) => ({\n ...state,\n accept,\n event: {\n type: 'setAccept',\n payload: accept,\n },\n }));\n\n public readonly setMaxFileSize = this.updater(\n (state, maxFileSize: number) => ({\n ...state,\n maxFileSize,\n event: {\n type: 'setMaxFileSize',\n payload: maxFileSize,\n },\n })\n );\n\n private readonly emptyList = this.updater((state) => {\n return {\n ...state,\n upload: [],\n event: {\n type: 'emptyList',\n },\n };\n });\n\n private readonly pushFile = this.updater(\n (state, payload: ReferencedProgressFile) => {\n return {\n ...state,\n upload: [...state.upload, { ...payload }],\n event: {\n type: 'pushFile',\n payload,\n },\n };\n }\n );\n\n public readonly setData = this.updater(\n (state, payload: { ref: symbol; data: any }) => {\n return {\n ...state,\n upload: state.upload.map((file: ReferencedProgressFile) =>\n file.ref === payload.ref ? { ...file, data: payload.data } : file\n ),\n event: {\n type: 'setData',\n payload,\n },\n };\n }\n );\n\n private readonly setSuccess = this.updater(\n (state, payload: { ref: symbol; body: any }) => {\n const newFile = {\n ...state.upload.find((f) => f.ref === payload.ref),\n ...payload.body,\n color: 'success',\n progress: 100,\n };\n\n return {\n ...state,\n upload: state.upload.map((file) =>\n file.ref === payload.ref ? newFile : file\n ),\n event: {\n type: 'setData',\n payload: newFile,\n },\n };\n }\n );\n\n private readonly setFail = this.updater(\n (state, payload: { ref: symbol; message: string }) => ({\n ...state,\n upload: state.upload.map((file) =>\n file.ref === payload.ref\n ? { ...file, color: 'warn', message: payload.message }\n : file\n ),\n event: {\n type: 'setFail',\n payload,\n },\n })\n );\n\n private readonly setProgress = this.updater(\n (state, payload: { ref: symbol; progress: number }) => ({\n ...state,\n upload: state.upload.map((file) =>\n file.ref === payload.ref\n ? { ...file, progress: payload.progress }\n : file\n ),\n event: {\n type: 'setProgress',\n payload,\n },\n })\n );\n\n private readonly reset = this.updater((state, ref: symbol) => ({\n ...state,\n upload: state.upload.map((file) =>\n file.ref === ref ? { ...file, progress: 0, message: '', color: '' } : file\n ),\n event: {\n type: 'reset',\n payload: ref,\n },\n }));\n\n private readonly remove = this.updater(\n (state, payload: ReferencedProgressFile) => ({\n ...state,\n upload: state.upload.filter((f) => f.ref !== payload.ref),\n event: {\n type: 'remove',\n payload,\n },\n })\n );\n\n private readonly enableProgressBar = this.updater((state) => ({\n ...state,\n upload: state.upload.map((file) => ({ ...file, enableProgressBar: true })),\n event: {\n type: 'enableProgressBar',\n },\n }));\n\n public readonly setFileUploadError = this.updater(\n (state, fileUploadError: string) => ({\n ...state,\n fileUploadError,\n event: {\n type: 'setFileUploadError',\n payload: fileUploadError,\n },\n })\n );\n\n public readonly clearFileUploadError = this.updater((state) => ({\n ...state,\n fileUploadError: '',\n event: {\n type: 'clearFileUploadError',\n },\n }));\n\n /*\n * S E L E C T O R S\n */\n readonly files$ = this.select((state) => state.upload);\n readonly accept$ = this.select((state) => state.accept);\n readonly event$ = this.select((state) => state.event);\n readonly maxFileSize$ = this.select((state) => state.maxFileSize);\n readonly fileUploadError$ = this.select((state) => state.fileUploadError);\n\n /*\n * A C T I O N S / E F F E C T S\n */\n readonly listUploadedFiles = this.effect((inputs$: Observable<any>) => {\n return inputs$.pipe(\n tap(() => {\n this.emptyList();\n }),\n mergeMap((inputs: any) => {\n return this.fileUploadService.listUploadedFiles(inputs).pipe(\n take(1),\n withLatestFrom(this.files$),\n tap(([newfiles, registeredFiles]) => {\n newfiles.forEach((file) => {\n if (\n registeredFiles.findIndex((rfile) => rfile.id === file.id) < 0\n ) {\n this.pushFile({\n ...file,\n color: 'success',\n progress: 100,\n ref: Symbol('H.psi = E.psi'),\n name: file!.name,\n lastModified: file!.lastModified,\n size: file!.size,\n type: file!.type,\n });\n }\n });\n }),\n catchError(() => of([]))\n );\n })\n );\n });\n\n readonly deleteFile = this.effect(\n (file$: Observable<ReferencedProgressFile>) => {\n return file$.pipe(\n tap(() => {\n this.clearFileUploadError();\n }),\n withLatestFrom(this.files$),\n map(this.fn),\n mergeMap((file: any) =>\n this.fileUploadService.deleteFile(file.id).pipe(\n take(1),\n tap(() => {\n this.remove(file);\n }),\n catchError(() => {\n this.setFail({\n ref: file.ref,\n message: 'file.upload.delete.error',\n });\n return of(null);\n })\n )\n )\n );\n }\n );\n\n readonly removeFile = this.effect(\n (file$: Observable<ReferencedProgressFile>) => {\n return file$.pipe(\n tap(() => {\n this.clearFileUploadError();\n }),\n withLatestFrom(this.files$),\n map(this.fn),\n tap((file) => {\n this.remove(file);\n })\n );\n }\n );\n\n private progressFileChecker = (file$: Observable<any>) => {\n return file$.pipe(\n withLatestFrom(this.accept$),\n map(([file, accept]) => {\n // Step 1 - Add a new file in the view\n let f: ReferencedProgressFile = { ...file };\n if (file.ref === undefined) {\n f = {\n ...f,\n ref: Symbol('v_sound = sqrt(gamma.P / rho)'),\n name: file!.name,\n lastModified: file!.lastModified,\n size: file!.size,\n type: file!.type,\n };\n this.pushFile(f);\n }\n\n // Step 2 - Check file extension\n if (!accept.includes(file.file!.type)) {\n this.setFail({\n ref: f.ref,\n message: this.translateService.instant(\n 'file.upload.type.not.supported'\n ),\n });\n // This trick coupled with the next filter is used to avoid catchError, which would break the effect\n return { ...f, message: 'ERROR' };\n }\n return f;\n }),\n filter((x) => x.message !== 'ERROR'),\n withLatestFrom(this.maxFileSize$),\n map(([refFile, maxFileSize]) => {\n // Step 3 - Check file size\n if (maxFileSize !== 0 && refFile.size > maxFileSize) {\n this.setFail({\n ref: refFile.ref,\n message:\n this.translateService.instant('file.upload.too.big') +\n ' ' +\n formattedSize(refFile.size),\n });\n // Same trick for error management\n return { ...refFile, message: 'ERROR' };\n }\n return refFile;\n }),\n filter((x) => x.message !== 'ERROR'),\n withLatestFrom(this.files$),\n map(this.fn), // For custom validations\n tap((x) => {\n if (!!x.message && x.message.startsWith('ERROR:'))\n this.setFileUploadError(x.message.replace('ERROR:', '').trim());\n else this.clearFileUploadError();\n }),\n filter((x) => !x.message.startsWith('ERROR')),\n take(1)\n );\n };\n\n private loadStep = (file: any) => {\n if (file.color === 'warn') this.reset(file.ref);\n\n this.enableProgressBar();\n\n return this.fileUploadService.upload(file).pipe(\n throttle(() => interval(200), { leading: true, trailing: true }),\n tap((event: HttpEvent<any>) => {\n if (event.type === HttpEventType.UploadProgress) {\n this.setProgress({\n ref: file.ref,\n progress: Math.round((100 * event.loaded) / event.total!),\n });\n }\n\n if (event.type === HttpEventType.Response) {\n this.setSuccess({ ref: file.ref, body: event.body });\n }\n }),\n takeWhile(\n (event: HttpEvent<any>) => event.type === HttpEventType.UploadProgress\n ),\n catchError(() => {\n this.setFail({\n ref: file.ref,\n message: 'file.upload.retry.error',\n });\n return of(null);\n })\n );\n };\n\n /**\n * For adding one file panel (creation of file panel reference skipped if already created) at a time.\n * Upload to BE not triggered\n */\n readonly addForPotentialUpload = this.effect(\n (file$: Observable<ProgressFile>) => this.progressFileChecker(file$)\n );\n\n /**\n * For adding an array of file panels (creation of file panels reference skipped if already created).\n * Uploads to BE not triggered\n */\n readonly addSeveralForPotentialUpload = this.effect(\n (files$: Observable<ProgressFile[]>) =>\n files$.pipe(\n switchMap((files) =>\n forkJoin(files.map((file) => this.progressFileChecker(of(file))))\n )\n )\n );\n\n /**\n * For adding a file panel (creation of file panels reference skipped if already created) then uploading it\n */\n readonly uploadFile = this.effect((file$: Observable<ProgressFile>) => {\n return this.progressFileChecker(file$).pipe(mergeMap(this.loadStep));\n });\n\n readonly retryFile = this.effect(\n (file$: Observable<ReferencedProgressFile>) =>\n this.progressFileChecker(file$).pipe(mergeMap(this.loadStep))\n );\n\n /**\n * For adding several file panels (creation of file panels reference skipped if already created) then uploading them\n */\n readonly uploadFiles = this.effect((files$: Observable<ProgressFile[]>) =>\n files$.pipe(\n switchMap((files) =>\n merge(\n ...files.map((file) =>\n this.progressFileChecker(of(file)).pipe(switchMap(this.loadStep))\n )\n )\n )\n )\n );\n}\n","import {\n Directive,\n Output,\n Input,\n EventEmitter,\n HostBinding,\n HostListener\n} from '@angular/core';\n\n@Directive({\n selector: '[appDnd]'\n})\nexport class DndDirective {\n\n @HostBinding('class.fileover') fileOver: boolean = false;\n\n @Output() fileDropped = new EventEmitter<any>();\n\n // Dragover listener\n @HostListener('dragover', ['$event']) onDragOver(evt: Event) {\n evt.preventDefault();\n evt.stopPropagation();\n this.fileOver = true;\n }\n\n // Dragleave listener\n @HostListener('dragleave', ['$event']) public onDragLeave(evt: Event) {\n evt.preventDefault();\n evt.stopPropagation();\n this.fileOver = false;\n }\n\n // Drop listener\n @HostListener('drop', ['$event']) public ondrop(evt: any) {\n evt.preventDefault();\n evt.stopPropagation();\n this.fileOver = false;\n let files = evt.dataTransfer.files;\n if (files.length > 0) {\n this.fileDropped.emit(files);\n }\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Observable } from 'rxjs';\nimport { mimeTypes } from 'mime-wrapper';\nimport {\n state,\n keyframes,\n style,\n animate,\n trigger,\n transition,\n} from '@angular/animations';\nimport {\n formatBytes,\n ProgressFile,\n ReferencedProgressFile,\n} from '../../models/progress-file.model';\nimport { OnemrvaMatFileUploadStore } from '../../onemrva-mat-file-upload.store';\n\nlet NEXT_ID = 0;\n\n@Component({\n selector: 'onemrva-mat-file-upload',\n templateUrl: 'onemrva-mat-file-upload.component.html',\n animations: [\n trigger('inOutAnimation', [\n state('in', style({ opacity: 1 })),\n transition(':enter', [\n animate(\n 300,\n keyframes([\n style({ opacity: 0, offset: 0 }),\n style({ opacity: 0.25, offset: 0.25 }),\n style({ opacity: 0.5, offset: 0.5 }),\n style({ opacity: 0.75, offset: 0.75 }),\n style({ opacity: 1, offset: 1 }),\n ])\n ),\n ]),\n transition(':leave', [\n animate(\n 300,\n keyframes([\n style({ opacity: 1, offset: 0 }),\n style({ opacity: 0.75, offset: 0.25 }),\n style({ opacity: 0.5, offset: 0.5 }),\n style({ opacity: 0.25, offset: 0.75 }),\n style({ opacity: 0, offset: 1 }),\n ])\n ),\n ]),\n ]),\n ],\n})\nexport class OnemrvaMatFileUploadComponent implements OnInit {\n @Input()\n accept: Array<string> = [];\n acceptString = '';\n\n @Input()\n maxFileSize: number = 0;\n\n @Input()\n uploadOnDrop: boolean = true;\n\n @Input()\n initialFiles: ProgressFile[] = [];\n\n @Input()\n errorMessage: string = '';\n\n fileUploadErrorMessage$: Observable<string>;\n\n files$: Observable<ReferencedProgressFile[]>;\n\n @Input() filePanelTemplate!: TemplateRef<any>;\n\n retryFile = new EventEmitter<{ index: number; cmpRef: symbol }>();\n\n /**\n * Sets the `data-cy` of the element. If not set, the first component instance will have `data-cy` = `\"onemrva-mat-multi-select-0\"`.\n *\n * @example\n * ```html\n * <onemrva-mat-multi-select id=\"my-first-multi-select\"></onemrva-mat-multi-select>\n * ```\n */\n @HostBinding('attr.data-cy')\n @Input()\n public dataCy = `onemrva-mat-multi-select-${NEXT_ID++}`;\n\n @ViewChild(`fileDropRef`)\n fileDropRef!: ElementRef;\n\n inputId = `fileDropRef-${NEXT_ID}`;\n maxFileSizeFormatted: string = '';\n\n constructor(\n public dialog: MatDialog,\n private fileUploadStore: OnemrvaMatFileUploadStore\n ) {\n this.files$ = fileUploadStore.files$;\n\n this.fileUploadErrorMessage$ = this.fileUploadStore.fileUploadError$;\n }\n\n ngOnInit(): void {\n if (this.accept.length > 0) {\n this.acceptString = this.accept\n .map((val) => {\n const t = mimeTypes.getExtension(val);\n return `.${t}`;\n })\n .filter((val) => {\n return val.length > 1;\n })\n .join(', ');\n\n this.fileUploadStore.setAccept(this.accept);\n }\n\n this.maxFileSizeFormatted = formatBytes(this.maxFileSize);\n this.fileUploadStore.setMaxFileSize(this.maxFileSize);\n }\n\n /**\n * on file drop handler\n */\n onFileDropped($event: FileList) {\n this.prepareFilesList($event);\n }\n\n /**\n * handle file from browsing\n */\n fileBrowseHandler($event: Event) {\n let elm = $event.target as HTMLInputElement,\n files = elm.files as FileList;\n\n this.prepareFilesList(files);\n }\n\n /**\n * Convert Files list to normal array list\n * @param files (Files List)\n */\n prepareFilesList(files: FileList) {\n setTimeout(() => {\n const fs: ProgressFile[] = [];\n for (let i = 0; i < files.length; i++) {\n let file = files.item(i);\n if (file === null) continue;\n\n let item: ProgressFile = {\n file,\n progress: 0,\n message: '',\n color: 'primary',\n url: null,\n id: null,\n enableProgressBar: this.uploadOnDrop,\n\n name: file!.name,\n lastModified: file!.lastModified,\n size: file!.size,\n type: file!.type,\n };\n\n fs.push(item);\n }\n\n if (this.uploadOnDrop) this.fileUploadStore.uploadFiles(fs);\n else this.fileUploadStore.addSeveralForPotentialUpload(fs);\n }, 400);\n }\n}\n","<ng-container *ngIf=\"files$ | async as files\">\n <div\n class=\"onemrva-mat-file-upload-drop-area\"\n appDnd\n [ngClass]=\"{ filein: files.length > 0 }\"\n (fileDropped)=\"onFileDropped($event)\"\n [ngClass]=\"{ 'fu-error': errorMessage !== '' }\"\n >\n <input\n type=\"file\"\n #fileDropRef\n [attr.id]=\"inputId\"\n role=\"button\"\n multiple\n (change)=\"fileBrowseHandler($event)\"\n accept=\"{{ acceptString }}\"\n />\n <p class=\"outer\">\n <span class=\"inner\"\n ><mat-icon class=\"onemrva-upload\">download</mat-icon></span\n >\n <span class=\"inner\">{{ \"file.upload.drag.and.drop\" | translate }}</span>\n <span class=\"inner\"\n >{{ \"file.upload.or\" | translate }}\n <label for=\"{{ inputId }}\" role=\"button\" class=\"content\">{{\n \"file.upload.browse.for.file\" | translate\n }}</label></span\n >\n <span class=\"inner\"\n ><span *ngIf=\"maxFileSize > 0\"\n >{{ \"file.upload.maximum\" | translate }} {{ maxFileSizeFormatted }}\n <span *ngIf=\"acceptString.length > 0\">{{ \"| \" }}</span>\n {{ acceptString }}</span\n ></span\n >\n </p>\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 <mat-error *ngIf=\"errorMessage\">{{ errorMessage | translate }}</mat-error>\n <mat-error\n *ngIf=\"fileUploadErrorMessage$ | async as fileUploadErrorMessage\"\n >{{ fileUploadErrorMessage | translate }}</mat-error\n >\n</ng-container>\n","import { OnemrvaFilePanelComponent } from './onemrva-mat-file-panel/onemrva-file-panel.component';\nimport { OnemrvaMatFileUploadComponent } from './onemrva-mat-file-upload/onemrva-mat-file-upload.component';\n\nexport const components: any[] = [\n OnemrvaFilePanelComponent,\n OnemrvaMatFileUploadComponent,\n];\n\nexport * from './onemrva-mat-file-panel/onemrva-file-panel.component';\nexport * from './onemrva-mat-file-upload/onemrva-mat-file-upload.component';\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DndDirective } from './directives/dnd.directive';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { components } from './components';\nimport { MatInputModule } from '@angular/material/input';\n\n@NgModule({\n declarations: [components, DndDirective],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatButtonModule,\n MatTooltipModule,\n MatDialogModule,\n TranslateModule,\n MatIconModule,\n MatInputModule,\n ],\n exports: [components],\n})\nexport class OnemrvaMatFileUploadModule {}\n","/*\n * Public API Surface of mat-file upload\n */\n\nexport * from './src/components';\nexport * from './src/onemrva-mat-file-upload.module';\nexport * from './src/onemrva-mat-file-upload.store';\nexport * from './src/onemrva-mat-file-upload.service';\nexport * from './src/models/progress-file.model';\nexport * from './src/models/action-config.model';\nexport * from './src/onemrva-mat-file-upload-itf.store';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["NEXT_ID","i4","i1","i2.OnemrvaMatFileUploadStore","i3","i6.DndDirective","i7","i1.OnemrvaFilePanelComponent","i2.OnemrvaMatFileUploadComponent"],"mappings":"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"}
1
+ {"version":3,"file":"onemrvapublic-design-system-mat-file-upload.mjs","sources":["../../../../projects/onemrva/design-system/mat-file-upload/src/models/progress-file.model.ts","../../../../projects/onemrva/design-system/mat-file-upload/src/components/onemrva-mat-file-panel/onemrva-file-panel.component.ts","../../../../projects/onemrva/design-system/mat-file-upload/src/components/onemrva-mat-file-panel/onemrva-file-panel.component.html","../../../../projects/onemrva/design-system/mat-file-upload/src/onemrva-mat-file-upload.service.ts","../../../../projects/onemrva/design-system/mat-file-upload/src/onemrva-mat-file-upload.store.ts","../../../../projects/onemrva/design-system/mat-file-upload/src/directives/dnd.directive.ts","../../../../projects/onemrva/design-system/mat-file-upload/src/components/onemrva-mat-file-upload/onemrva-mat-file-upload.component.ts","../../../../projects/onemrva/design-system/mat-file-upload/src/components/onemrva-mat-file-upload/onemrva-mat-file-upload.component.html","../../../../projects/onemrva/design-system/mat-file-upload/src/components/index.ts","../../../../projects/onemrva/design-system/mat-file-upload/src/onemrva-mat-file-upload.module.ts","../../../../projects/onemrva/design-system/mat-file-upload/index.ts","../../../../projects/onemrva/design-system/mat-file-upload/onemrvapublic-design-system-mat-file-upload.ts"],"sourcesContent":["import { OnemrvaMatColor } from '@onemrvapublic/design-system/utils';\n\nexport interface ProgressFile {\n file?: File;\n message: string;\n progress: number;\n color: OnemrvaMatColor; // color 1 - 1 with status\n url: string | null;\n id: string | null; // backend identifier\n enableProgressBar: boolean;\n data?: any;\n\n name: string;\n lastModified?: number;\n size: number;\n type: string;\n}\n\nexport interface ReferencedProgressFile extends ProgressFile {\n ref: symbol; // ref is a frontend identifier\n}\n\n/**\n * format bytes\n * @param bytes (File size in bytes)\n * @param decimals (Decimals point)\n */\nexport function formatBytes(bytes: number, decimals: number = 2) {\n if (bytes === 0) {\n return '0 Bytes';\n }\n const k = 1024;\n const dm = decimals <= 0 ? 0 : decimals || 2;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\n}\n\nexport function formattedSize(size: number, decimals: number = 2) {\n return formatBytes(size, decimals);\n}\n\nexport function convertToProgressFile(\n id: string,\n name: string,\n message: string = '',\n progress = 100,\n color = OnemrvaMatColor.PRIMARY,\n url: string | null = null,\n enableProgressBar: boolean = false,\n data: string | null = null,\n size = 0,\n type = ''\n): ProgressFile {\n return {\n id: id!,\n name: name!,\n message: message,\n progress: progress,\n color: color,\n url: url,\n enableProgressBar: enableProgressBar,\n data: data,\n size: size,\n type: type,\n };\n}\n\nexport function convertToReferencedProgressFile(\n id: string,\n name: string,\n message: string = '',\n progress = 100,\n color = OnemrvaMatColor.PRIMARY,\n url: string | null = null,\n enableProgressBar: boolean = false,\n data: string | null = null,\n size = 0,\n type = ''\n): ReferencedProgressFile {\n return {\n id: id!,\n ref: Symbol(name),\n name: name!,\n message: message,\n progress: progress,\n color: color,\n url: url,\n enableProgressBar: enableProgressBar,\n data: data,\n size: size,\n type: type,\n };\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\nimport { OnemrvaMatColor } from '@onemrvapublic/design-system/utils';\nimport { of } from 'rxjs';\nimport { ActionConfig } from '../../models/action-config.model';\nimport {\n formattedSize,\n ReferencedProgressFile,\n} from '../../models/progress-file.model';\n\nlet NEXT_ID = 0;\n\n@Component({\n selector: 'file-panel',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./onemrva-file-panel.component.scss'],\n templateUrl: './onemrva-file-panel.component.html',\n})\nexport class OnemrvaFilePanelComponent {\n @HostBinding('attr.id')\n @Input()\n public id = `onemrva-file-panel-${NEXT_ID++}`;\n\n @HostBinding('attr.data-cy')\n @Input()\n dataCy: string = 'onemrva-file-panel-' + NEXT_ID;\n\n @Input()\n file!: ReferencedProgressFile;\n\n @Input()\n actions: ActionConfig[] = [];\n\n @Input()\n showProgress: boolean = true;\n\n get progress$() {\n return of(this.file.progress);\n }\n\n get size() {\n return formattedSize(this.file.size);\n }\n\n get color(): OnemrvaMatColor {\n return this.file.color;\n }\n\n /** @hidden @internal */\n @HostBinding('mat-accent')\n public get _colorAccent(): boolean {\n return this.color === OnemrvaMatColor.ACCENT;\n }\n\n /** @hidden @internal */\n @HostBinding('class.mat-error')\n public get _isError(): boolean {\n return this.color === OnemrvaMatColor.ERROR;\n }\n /** @hidden @internal */\n @HostBinding('class.mat-warn')\n public get _isWarn(): boolean {\n return this.color === OnemrvaMatColor.WARN;\n }\n /** @hidden @internal */\n @HostBinding('class.mat-success')\n public get _isSuccess(): boolean {\n return this.color === OnemrvaMatColor.SUCCESS;\n }\n /** @hidden @internal */\n @HostBinding('class.mat-primary')\n public get _isPrimary(): boolean {\n return this.color === OnemrvaMatColor.PRIMARY;\n }\n}\n","<div class=\"file-panel-title\" [attr.data-cy]=\"dataCy\">\n <div class=\"file-panel-title-left\">\n <mat-icon *ngIf=\"file.color === 'error'\" class=\"filled mat-error\"\n >error</mat-icon\n >\n <mat-icon *ngIf=\"file.color === 'success'\" class=\"filled mat-success\"\n >check_circle</mat-icon\n >\n <mat-icon *ngIf=\"file.color === 'warn'\" class=\"filled mat-warn\"\n >warning</mat-icon\n >\n <span class=\"file-name\">\n {{ file.name }}\n </span>\n </div>\n <div class=\"file-panel-title-action\">\n <ng-container *ngIf=\"actions.length > 0\">\n <ng-container *ngFor=\"let action of actions\">\n <mat-icon\n *ngIf=\"action.showAction(file)\"\n role=\"button\"\n color=\"primary\"\n [attr.data-cy]=\"action.dataCy\"\n matTooltip=\"{{ action.tooltipCode | translate }}\"\n [attr.aria-label]=\"action.ariaCode | translate\"\n class=\"clickable\"\n (click)=\"action.clickHandler(file)\"\n >{{ action.iconName }}</mat-icon\n >\n </ng-container>\n </ng-container>\n </div>\n</div>\n<div class=\"file-panel-content\">\n <ng-container *ngIf=\"file.message === ''\">\n <div class=\"fileInfos\">\n {{ file.lastModified | date }}\n <span class=\"float-right\" *ngIf=\"file.size > 0\">{{ size }}</span>\n </div>\n\n <div\n class=\"onemrva-progress-bar\"\n *ngIf=\"showProgress && file.enableProgressBar\"\n >\n <div class=\"onemrva-progress-bar-outer mt-s\" #onemrvaProgressBar>\n <div\n class=\"onemrva-progress-bar-inner\"\n [ngStyle]=\"{ width: (progress$ | async) + '%' }\"\n [ngClass]=\"{\n 'progress-success': (progress$ | async)! >= 100\n }\"\n data-cy=\"file-upload-progress\"\n [attr.value]=\"progress$ | async\"\n ></div>\n </div>\n </div>\n </ng-container>\n <p *ngIf=\"file.message !== ''\" class=\"message\">{{ file.message }}</p>\n</div>\n","import {\n HttpEvent,\n HttpEventType,\n HttpProgressEvent,\n HttpResponse,\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { catchError, interval, map, Observable, of, take } from 'rxjs';\nimport { ProgressFile } from './models/progress-file.model';\n\nexport interface OnemrvaMatFileUploadInterface {\n listUploadedFiles: (inputs: any) => Observable<ProgressFile[]>;\n upload: (file: ProgressFile) => Observable<HttpEvent<any>>;\n deleteFile: (id: any) => Observable<any>;\n retry: (file: any) => Observable<any>;\n downloadFile?: (id: any) => Observable<any>;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class OnemrvaMatFileUploadService\n implements OnemrvaMatFileUploadInterface\n{\n constructor() {\n alert(\n \"Don't forget to add a provider in your component with your own implementation of OnemrvaMatFileUploadInterface. Check out the demo to have an example of how to do it\"\n );\n }\n\n listUploadedFiles(inputs: any): Observable<ProgressFile[]> {\n return of([]);\n }\n\n upload(file: ProgressFile): Observable<HttpEvent<any>> {\n return interval(50).pipe(\n take(101),\n map((i) => {\n if (i < 100) {\n return {\n type: HttpEventType.UploadProgress,\n loaded: i,\n total: 100,\n } as HttpProgressEvent;\n } else {\n if (i >= 100 && Math.random() > 0.5) {\n throw 'Fake error thrown';\n }\n return new HttpResponse<any>();\n }\n }),\n catchError(() => of(new HttpResponse<any>({ body: {}, status: 500 })))\n );\n }\n\n deleteFile(id: any): Observable<any> {\n return of('F = m.a');\n }\n\n retry(file: any): Observable<any> {\n return of(file);\n }\n\n downloadFile(id: any): Observable<any> {\n alert(`Missing download implementation for file ID ${id}`);\n return of(true);\n }\n}\n","import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';\nimport { ComponentStore } from '@ngrx/component-store';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n catchError,\n filter,\n forkJoin,\n interval,\n map,\n merge,\n mergeMap,\n Observable,\n of,\n Subject,\n switchMap,\n take,\n takeWhile,\n tap,\n throttle,\n withLatestFrom,\n} from 'rxjs';\nimport { OnemrvaMatFileUploadService } from './onemrva-mat-file-upload.service';\nimport {\n formattedSize,\n ProgressFile,\n ReferencedProgressFile,\n} from './models/progress-file.model';\nimport { HttpEvent, HttpEventType } from '@angular/common/http';\nimport { OnemrvaMatFileUploadStoreItf } from './onemrva-mat-file-upload-itf.store';\nimport {OnemrvaMatColor} from \"@onemrvapublic/design-system/utils\";\n\nexport interface FileUploadStoreEvent {\n type: string;\n payload?: any;\n}\n\nexport interface UploadState {\n upload: ReferencedProgressFile[];\n accept: string[];\n maxFileSize: number;\n fileUploadError: string;\n event: FileUploadStoreEvent;\n}\n\nconst INIT_STATE: UploadState = {\n upload: [],\n accept: [],\n maxFileSize: 0,\n fileUploadError: '',\n event: {\n type: 'INIT',\n },\n};\n\nexport type CustomValidationFn = (\n input: [ReferencedProgressFile, ReferencedProgressFile[]]\n) => ReferencedProgressFile;\n\nexport const CUSTOM_VALIDATION_FN = new InjectionToken<CustomValidationFn>(\n 'x1, x2 = (-b -+ sqrt(rho))/2a'\n);\n\n@Injectable()\nexport class OnemrvaMatFileUploadStore\n extends ComponentStore<UploadState>\n implements OnemrvaMatFileUploadStoreItf\n{\n private fn: CustomValidationFn = (\n x: [ReferencedProgressFile, ReferencedProgressFile[]]\n ) => {\n return x[0];\n };\n\n constructor(\n private fileUploadService: OnemrvaMatFileUploadService,\n private translateService: TranslateService,\n @Optional()\n @Inject(CUSTOM_VALIDATION_FN)\n public customValidationFn: CustomValidationFn\n ) {\n super(INIT_STATE);\n if (!!customValidationFn) this.fn = customValidationFn;\n }\n\n /*\n * U P D A T E R S\n */\n public readonly setAccept = this.updater((state, accept: string[]) => ({\n ...state,\n accept,\n event: {\n type: 'setAccept',\n payload: accept,\n },\n }));\n\n public readonly setMaxFileSize = this.updater(\n (state, maxFileSize: number) => ({\n ...state,\n maxFileSize,\n event: {\n type: 'setMaxFileSize',\n payload: maxFileSize,\n },\n })\n );\n\n private readonly emptyList = this.updater((state) => {\n return {\n ...state,\n upload: [],\n event: {\n type: 'emptyList',\n },\n };\n });\n\n private readonly pushFile = this.updater(\n (state, payload: ReferencedProgressFile) => {\n return {\n ...state,\n upload: [...state.upload, { ...payload }],\n event: {\n type: 'pushFile',\n payload,\n },\n };\n }\n );\n\n public readonly setData = this.updater(\n (state, payload: { ref: symbol; data: any }) => {\n return {\n ...state,\n upload: state.upload.map((file: ReferencedProgressFile) =>\n file.ref === payload.ref ? { ...file, data: payload.data } : file\n ),\n event: {\n type: 'setData',\n payload,\n },\n };\n }\n );\n\n private readonly setSuccess = this.updater(\n (state, payload: { ref: symbol; body: any }) => {\n const newFile = {\n ...state.upload.find((f) => f.ref === payload.ref),\n ...payload.body,\n color: 'success',\n progress: 100,\n };\n\n return {\n ...state,\n upload: state.upload.map((file) =>\n file.ref === payload.ref ? newFile : file\n ),\n event: {\n type: 'setData',\n payload: newFile,\n },\n };\n }\n );\n\n private readonly setFail = this.updater(\n (state, payload: { ref: symbol; message: string, color: OnemrvaMatColor }) => ({\n ...state,\n upload: state.upload.map((file) =>\n file.ref === payload.ref\n ? { ...file, message: payload.message, color: payload.color }\n : file\n ),\n event: {\n type: 'setFail',\n payload,\n },\n })\n );\n\n private readonly setProgress = this.updater(\n (state, payload: { ref: symbol; progress: number }) => ({\n ...state,\n upload: state.upload.map((file) =>\n file.ref === payload.ref\n ? { ...file, progress: payload.progress }\n : file\n ),\n event: {\n type: 'setProgress',\n payload,\n },\n })\n );\n\n private readonly reset = this.updater((state, ref: symbol) => ({\n ...state,\n upload: state.upload.map((file) =>\n file.ref === ref ? { ...file, progress: 0, message: '', color: '' } : file\n ),\n event: {\n type: 'reset',\n payload: ref,\n },\n }));\n\n private readonly remove = this.updater(\n (state, payload: ReferencedProgressFile) => ({\n ...state,\n upload: state.upload.filter((f) => f.ref !== payload.ref),\n event: {\n type: 'remove',\n payload,\n },\n })\n );\n\n private readonly enableProgressBar = this.updater((state) => ({\n ...state,\n upload: state.upload.map((file) => ({ ...file, enableProgressBar: true })),\n event: {\n type: 'enableProgressBar',\n },\n }));\n\n public readonly setFileUploadError = this.updater(\n (state, fileUploadError: string) => ({\n ...state,\n fileUploadError,\n event: {\n type: 'setFileUploadError',\n payload: fileUploadError,\n },\n })\n );\n\n public readonly clearFileUploadError = this.updater((state) => ({\n ...state,\n fileUploadError: '',\n event: {\n type: 'clearFileUploadError',\n },\n }));\n\n /*\n * S E L E C T O R S\n */\n readonly files$ = this.select((state) => state.upload);\n readonly accept$ = this.select((state) => state.accept);\n readonly event$ = this.select((state) => state.event);\n readonly maxFileSize$ = this.select((state) => state.maxFileSize);\n readonly fileUploadError$ = this.select((state) => state.fileUploadError);\n\n /*\n * A C T I O N S / E F F E C T S\n */\n readonly listUploadedFiles = this.effect((inputs$: Observable<any>) => {\n return inputs$.pipe(\n tap(() => {\n this.emptyList();\n }),\n mergeMap((inputs: any) => {\n return this.fileUploadService.listUploadedFiles(inputs).pipe(\n take(1),\n withLatestFrom(this.files$),\n tap(([newfiles, registeredFiles]) => {\n newfiles.forEach((file) => {\n if (\n registeredFiles.findIndex((rfile) => rfile.id === file.id) < 0\n ) {\n this.pushFile({\n ...file,\n color: 'success',\n progress: 100,\n ref: Symbol('H.psi = E.psi'),\n name: file!.name,\n lastModified: file!.lastModified,\n size: file!.size,\n type: file!.type,\n });\n }\n });\n }),\n catchError(() => of([]))\n );\n })\n );\n });\n\n readonly deleteFile = this.effect(\n (file$: Observable<ReferencedProgressFile>) => {\n return file$.pipe(\n tap(() => {\n this.clearFileUploadError();\n }),\n withLatestFrom(this.files$),\n map(this.fn),\n mergeMap((file: any) =>\n this.fileUploadService.deleteFile(file.id).pipe(\n take(1),\n tap(() => {\n this.remove(file);\n }),\n catchError(() => {\n this.setFail({\n ref: file.ref,\n color: OnemrvaMatColor.WARN,\n message: 'file.upload.delete.error',\n });\n return of(null);\n })\n )\n )\n );\n }\n );\n\n readonly removeFile = this.effect(\n (file$: Observable<ReferencedProgressFile>) => {\n return file$.pipe(\n tap(() => {\n this.clearFileUploadError();\n }),\n withLatestFrom(this.files$),\n map(this.fn),\n tap((file) => {\n this.remove(file);\n })\n );\n }\n );\n\n private progressFileChecker = (file$: Observable<any>) => {\n return file$.pipe(\n withLatestFrom(this.accept$),\n map(([file, accept]) => {\n // Step 1 - Add a new file in the view\n let f: ReferencedProgressFile = { ...file };\n if (file.ref === undefined) {\n f = {\n ...f,\n ref: Symbol('v_sound = sqrt(gamma.P / rho)'),\n name: file!.name,\n lastModified: file!.lastModified,\n size: file!.size,\n type: file!.type,\n };\n this.pushFile(f);\n }\n\n // Step 2 - Check file extension\n if (!accept.includes(file.file!.type)) {\n this.setFail({\n ref: f.ref,\n color: OnemrvaMatColor.ERROR,\n message: this.translateService.instant(\n 'file.upload.type.not.supported'\n ),\n });\n // This trick coupled with the next filter is used to avoid catchError, which would break the effect\n return { ...f, message: 'ERROR' };\n }\n return f;\n }),\n filter((x) => x.message !== 'ERROR'),\n withLatestFrom(this.maxFileSize$),\n map(([refFile, maxFileSize]) => {\n // Step 3 - Check file size\n if (maxFileSize !== 0 && refFile.size > maxFileSize) {\n this.setFail({\n ref: refFile.ref,\n color: OnemrvaMatColor.ERROR,\n message:\n this.translateService.instant('file.upload.too.big') +\n ' ' +\n formattedSize(refFile.size),\n });\n // Same trick for error management\n return { ...refFile, message: 'ERROR' };\n }\n return refFile;\n }),\n filter((x) => x.message !== 'ERROR'),\n withLatestFrom(this.files$),\n map(this.fn), // For custom validations\n tap((x) => {\n if (!!x.message && x.message.startsWith('ERROR:'))\n this.setFileUploadError(x.message.replace('ERROR:', '').trim());\n else this.clearFileUploadError();\n }),\n filter((x) => !x.message.startsWith('ERROR')),\n take(1)\n );\n };\n\n private loadStep = (file: any) => {\n if (file.color === OnemrvaMatColor.WARN) this.reset(file.ref);\n\n this.enableProgressBar();\n\n return this.fileUploadService.upload(file).pipe(\n throttle(() => interval(200), { leading: true, trailing: true }),\n tap((event: HttpEvent<any>) => {\n if (event.type === HttpEventType.UploadProgress) {\n this.setProgress({\n ref: file.ref,\n progress: Math.round((100 * event.loaded) / event.total!),\n });\n }\n\n if (event.type === HttpEventType.Response) {\n this.setSuccess({ ref: file.ref, body: event.body });\n }\n }),\n takeWhile(\n (event: HttpEvent<any>) => event.type === HttpEventType.UploadProgress\n ),\n catchError(() => {\n this.setFail({\n ref: file.ref,\n color: OnemrvaMatColor.WARN,\n message: 'file.upload.retry.error',\n });\n return of(null);\n })\n );\n };\n\n /**\n * For adding one file panel (creation of file panel reference skipped if already created) at a time.\n * Upload to BE not triggered\n */\n readonly addForPotentialUpload = this.effect(\n (file$: Observable<ProgressFile>) => this.progressFileChecker(file$)\n );\n\n /**\n * For adding an array of file panels (creation of file panels reference skipped if already created).\n * Uploads to BE not triggered\n */\n readonly addSeveralForPotentialUpload = this.effect(\n (files$: Observable<ProgressFile[]>) =>\n files$.pipe(\n switchMap((files) =>\n forkJoin(files.map((file) => this.progressFileChecker(of(file))))\n )\n )\n );\n\n /**\n * For adding a file panel (creation of file panels reference skipped if already created) then uploading it\n */\n readonly uploadFile = this.effect((file$: Observable<ProgressFile>) => {\n return this.progressFileChecker(file$).pipe(mergeMap(this.loadStep));\n });\n\n readonly retryFile = this.effect(\n (file$: Observable<ReferencedProgressFile>) =>\n this.progressFileChecker(file$).pipe(mergeMap(this.loadStep))\n );\n\n /**\n * For adding several file panels (creation of file panels reference skipped if already created) then uploading them\n */\n readonly uploadFiles = this.effect((files$: Observable<ProgressFile[]>) =>\n files$.pipe(\n switchMap((files) =>\n merge(\n ...files.map((file) =>\n this.progressFileChecker(of(file)).pipe(switchMap(this.loadStep))\n )\n )\n )\n )\n );\n}\n","import {\n Directive,\n Output,\n Input,\n EventEmitter,\n HostBinding,\n HostListener\n} from '@angular/core';\n\n@Directive({\n selector: '[appDnd]'\n})\nexport class DndDirective {\n\n @HostBinding('class.fileover') fileOver: boolean = false;\n\n @Output() fileDropped = new EventEmitter<any>();\n\n // Dragover listener\n @HostListener('dragover', ['$event']) onDragOver(evt: Event) {\n evt.preventDefault();\n evt.stopPropagation();\n this.fileOver = true;\n }\n\n // Dragleave listener\n @HostListener('dragleave', ['$event']) public onDragLeave(evt: Event) {\n evt.preventDefault();\n evt.stopPropagation();\n this.fileOver = false;\n }\n\n // Drop listener\n @HostListener('drop', ['$event']) public ondrop(evt: any) {\n evt.preventDefault();\n evt.stopPropagation();\n this.fileOver = false;\n let files = evt.dataTransfer.files;\n if (files.length > 0) {\n this.fileDropped.emit(files);\n }\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Observable } from 'rxjs';\nimport { mimeTypes } from 'mime-wrapper';\nimport {\n state,\n keyframes,\n style,\n animate,\n trigger,\n transition,\n} from '@angular/animations';\nimport {\n formatBytes,\n ProgressFile,\n ReferencedProgressFile,\n} from '../../models/progress-file.model';\nimport { OnemrvaMatFileUploadStore } from '../../onemrva-mat-file-upload.store';\n\nlet NEXT_ID = 0;\n\n@Component({\n selector: 'onemrva-mat-file-upload',\n templateUrl: 'onemrva-mat-file-upload.component.html',\n animations: [\n trigger('inOutAnimation', [\n state('in', style({ opacity: 1 })),\n transition(':enter', [\n animate(\n 300,\n keyframes([\n style({ opacity: 0, offset: 0 }),\n style({ opacity: 0.25, offset: 0.25 }),\n style({ opacity: 0.5, offset: 0.5 }),\n style({ opacity: 0.75, offset: 0.75 }),\n style({ opacity: 1, offset: 1 }),\n ])\n ),\n ]),\n transition(':leave', [\n animate(\n 300,\n keyframes([\n style({ opacity: 1, offset: 0 }),\n style({ opacity: 0.75, offset: 0.25 }),\n style({ opacity: 0.5, offset: 0.5 }),\n style({ opacity: 0.25, offset: 0.75 }),\n style({ opacity: 0, offset: 1 }),\n ])\n ),\n ]),\n ]),\n ],\n})\nexport class OnemrvaMatFileUploadComponent implements OnInit {\n @Input()\n accept: Array<string> = [];\n acceptString = '';\n\n @Input()\n maxFileSize: number = 0;\n\n @Input()\n uploadOnDrop: boolean = true;\n\n @Input()\n initialFiles: ProgressFile[] = [];\n\n @Input()\n errorMessage: string = '';\n\n fileUploadErrorMessage$: Observable<string>;\n\n files$: Observable<ReferencedProgressFile[]>;\n\n @Input() filePanelTemplate!: TemplateRef<any>;\n\n retryFile = new EventEmitter<{ index: number; cmpRef: symbol }>();\n\n /**\n * Sets the `data-cy` of the element. If not set, the first component instance will have `data-cy` = `\"onemrva-mat-multi-select-0\"`.\n *\n * @example\n * ```html\n * <onemrva-mat-multi-select id=\"my-first-multi-select\"></onemrva-mat-multi-select>\n * ```\n */\n @HostBinding('attr.data-cy')\n @Input()\n public dataCy = `onemrva-mat-multi-select-${NEXT_ID++}`;\n\n @ViewChild(`fileDropRef`)\n fileDropRef!: ElementRef;\n\n inputId = `fileDropRef-${NEXT_ID}`;\n maxFileSizeFormatted: string = '';\n\n constructor(\n public dialog: MatDialog,\n private fileUploadStore: OnemrvaMatFileUploadStore\n ) {\n this.files$ = fileUploadStore.files$;\n\n this.fileUploadErrorMessage$ = this.fileUploadStore.fileUploadError$;\n }\n\n ngOnInit(): void {\n if (this.accept.length > 0) {\n this.acceptString = this.accept\n .map((val) => {\n const t = mimeTypes.getExtension(val);\n return `.${t}`;\n })\n .filter((val) => {\n return val.length > 1;\n })\n .join(', ');\n\n this.fileUploadStore.setAccept(this.accept);\n }\n\n this.maxFileSizeFormatted = formatBytes(this.maxFileSize);\n this.fileUploadStore.setMaxFileSize(this.maxFileSize);\n }\n\n /**\n * on file drop handler\n */\n onFileDropped($event: FileList) {\n this.prepareFilesList($event);\n }\n\n /**\n * handle file from browsing\n */\n fileBrowseHandler($event: Event) {\n let elm = $event.target as HTMLInputElement,\n files = elm.files as FileList;\n\n this.prepareFilesList(files);\n }\n\n /**\n * Convert Files list to normal array list\n * @param files (Files List)\n */\n prepareFilesList(files: FileList) {\n setTimeout(() => {\n const fs: ProgressFile[] = [];\n for (let i = 0; i < files.length; i++) {\n let file = files.item(i);\n if (file === null) continue;\n\n let item: ProgressFile = {\n file,\n progress: 0,\n message: '',\n color: 'primary',\n url: null,\n id: null,\n enableProgressBar: this.uploadOnDrop,\n\n name: file!.name,\n lastModified: file!.lastModified,\n size: file!.size,\n type: file!.type,\n };\n\n fs.push(item);\n }\n\n if (this.uploadOnDrop) this.fileUploadStore.uploadFiles(fs);\n else this.fileUploadStore.addSeveralForPotentialUpload(fs);\n\n this.fileDropRef.nativeElement.value = null;\n }, 400);\n }\n}\n","<ng-container *ngIf=\"files$ | async as files\">\n <div\n class=\"onemrva-mat-file-upload-drop-area\"\n appDnd\n [ngClass]=\"{ filein: files.length > 0 }\"\n (fileDropped)=\"onFileDropped($event)\"\n [ngClass]=\"{ 'fu-error': errorMessage !== '' }\"\n >\n <input\n type=\"file\"\n #fileDropRef\n [attr.id]=\"inputId\"\n role=\"button\"\n multiple\n (change)=\"fileBrowseHandler($event)\"\n accept=\"{{ acceptString }}\"\n />\n <p class=\"outer\">\n <span class=\"inner\"\n ><mat-icon class=\"onemrva-upload\">download</mat-icon></span\n >\n <span class=\"inner\">{{ \"file.upload.drag.and.drop\" | translate }}</span>\n <span class=\"inner\"\n >{{ \"file.upload.or\" | translate }}\n <label for=\"{{ inputId }}\" role=\"button\" class=\"content\">{{\n \"file.upload.browse.for.file\" | translate\n }}</label></span\n >\n <span class=\"inner\"\n ><span *ngIf=\"maxFileSize > 0\"\n >{{ \"file.upload.maximum\" | translate }} {{ maxFileSizeFormatted }}\n <span *ngIf=\"acceptString.length > 0\">{{ \"| \" }}</span>\n {{ acceptString }}</span\n ></span\n >\n </p>\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 <mat-error *ngIf=\"errorMessage\">{{ errorMessage | translate }}</mat-error>\n <mat-error\n *ngIf=\"fileUploadErrorMessage$ | async as fileUploadErrorMessage\"\n >{{ fileUploadErrorMessage | translate }}</mat-error\n >\n</ng-container>\n","import { OnemrvaFilePanelComponent } from './onemrva-mat-file-panel/onemrva-file-panel.component';\nimport { OnemrvaMatFileUploadComponent } from './onemrva-mat-file-upload/onemrva-mat-file-upload.component';\n\nexport const components: any[] = [\n OnemrvaFilePanelComponent,\n OnemrvaMatFileUploadComponent,\n];\n\nexport * from './onemrva-mat-file-panel/onemrva-file-panel.component';\nexport * from './onemrva-mat-file-upload/onemrva-mat-file-upload.component';\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DndDirective } from './directives/dnd.directive';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { components } from './components';\nimport { MatInputModule } from '@angular/material/input';\n\n@NgModule({\n declarations: [components, DndDirective],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatButtonModule,\n MatTooltipModule,\n MatDialogModule,\n TranslateModule,\n MatIconModule,\n MatInputModule,\n ],\n exports: [components],\n})\nexport class OnemrvaMatFileUploadModule {}\n","/*\n * Public API Surface of mat-file upload\n */\n\nexport * from './src/components';\nexport * from './src/onemrva-mat-file-upload.module';\nexport * from './src/onemrva-mat-file-upload.store';\nexport * from './src/onemrva-mat-file-upload.service';\nexport * from './src/models/progress-file.model';\nexport * from './src/models/action-config.model';\nexport * from './src/onemrva-mat-file-upload-itf.store';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["NEXT_ID","i4","i1","i2.OnemrvaMatFileUploadStore","i3","i6.DndDirective","i7","i1.OnemrvaFilePanelComponent","i2.OnemrvaMatFileUploadComponent"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"onemrvapublic-design-system-utils.mjs","sources":["../../../../projects/onemrva/design-system/utils/src/enum.utils.ts","../../../../projects/onemrva/design-system/utils/src/enums/color.enum.ts","../../../../projects/onemrva/design-system/utils/src/enums/size.enum.ts","../../../../projects/onemrva/design-system/utils/onemrvapublic-design-system-utils.ts"],"sourcesContent":["/**\n * This utility type fills several purposes:\n * - possibility to merge the enumeration and the list of possible values (not possible with an enum)\n * - possibility to hardcode the value without using the enumeration (with enum, you have to use an enum option, not one of the strings listed among the enum options)\n */\nexport const mkenum = <T extends { [index: string]: U }, U extends string>(x: T) => x;\n","import { mkenum } from '../enum.utils';\n\nexport const OnemrvaMatColor = mkenum({\n NONE: '',\n PRIMARY: 'primary',\n ACCENT: 'accent',\n WARN: 'warn',\n SUCCESS: 'success',\n INFO: 'info',\n ERROR: 'error',\n GRAYSCALE: 'grayscale',\n});\nexport type OnemrvaMatColor =\n (typeof OnemrvaMatColor)[keyof typeof OnemrvaMatColor];\n","import { mkenum } from '../enum.utils';\n\nexport const OnemrvaMatSize = mkenum({\n XSMALL: 'extrasmall',\n SMALL: 'small',\n MEDIUM: 'medium',\n LARGE: 'large',\n XLARGE: 'extralarge',\n});\nexport type OnemrvaMatSize =\n (typeof OnemrvaMatSize)[keyof typeof OnemrvaMatSize];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA;;;;AAIG;AACU,MAAA,MAAM,GAAG,CAAqD,CAAI,KAAK;;ACH7E,MAAM,eAAe,GAAG,MAAM,CAAC;AACpC,IAAA,IAAI,EAAE,EAAE;AACR,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,SAAS,EAAE,WAAW;AACvB,CAAA;;ACTM,MAAM,cAAc,GAAG,MAAM,CAAC;AACnC,IAAA,MAAM,EAAE,YAAY;AACpB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,MAAM,EAAE,YAAY;AACrB,CAAA;;ACRD;;AAEG;;;;"}
1
+ {"version":3,"file":"onemrvapublic-design-system-utils.mjs","sources":["../../../../projects/onemrva/design-system/utils/src/enum.utils.ts","../../../../projects/onemrva/design-system/utils/src/enums/color.enum.ts","../../../../projects/onemrva/design-system/utils/src/enums/size.enum.ts","../../../../projects/onemrva/design-system/utils/onemrvapublic-design-system-utils.ts"],"sourcesContent":["/**\n * This utility type fills several purposes:\n * - possibility to merge the enumeration and the list of possible values (not possible with an enum)\n * - possibility to hardcode the value without using the enumeration (with enum, you have to use an enum option, not one of the strings listed among the enum options)\n */\nexport const mkenum = <T extends { [index: string]: U }, U extends string>(x: T) => x;\n","import { mkenum } from '../enum.utils';\n\nexport const OnemrvaMatColor = mkenum({\n NONE: '',\n PRIMARY: 'primary',\n ACCENT: 'accent',\n WARN: 'warn',\n SUCCESS: 'success',\n INFO: 'info',\n ERROR: 'error',\n GRAYSCALE: 'grayscale',\n});\nexport type OnemrvaMatColor =\n (typeof OnemrvaMatColor)[keyof typeof OnemrvaMatColor];\n\n","import { mkenum } from '../enum.utils';\n\nexport const OnemrvaMatSize = mkenum({\n XSMALL: 'extrasmall',\n SMALL: 'small',\n MEDIUM: 'medium',\n LARGE: 'large',\n XLARGE: 'extralarge',\n});\nexport type OnemrvaMatSize =\n (typeof OnemrvaMatSize)[keyof typeof OnemrvaMatSize];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA;;;;AAIG;AACU,MAAA,MAAM,GAAG,CAAqD,CAAI,KAAK;;ACH7E,MAAM,eAAe,GAAG,MAAM,CAAC;AACpC,IAAA,IAAI,EAAE,EAAE;AACR,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,SAAS,EAAE,WAAW;AACvB,CAAA;;ACTM,MAAM,cAAc,GAAG,MAAM,CAAC;AACnC,IAAA,MAAM,EAAE,YAAY;AACpB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,MAAM,EAAE,YAAY;AACrB,CAAA;;ACRD;;AAEG;;;;"}
@@ -63,10 +63,10 @@
63
63
  color: utils.palette($theme, "error", 500);
64
64
  }
65
65
  &.mat-success {
66
- color: utils.palette($theme, "success", 500);
66
+ color: utils.palette($theme, "success", 600);
67
67
  }
68
68
  &.mat-warn {
69
- color: utils.palette($theme, "warn", 500);
69
+ color: utils.palette($theme, "warn", 600);
70
70
  }
71
71
  }
72
72
  padding: $spacer * 3;
@@ -74,7 +74,7 @@
74
74
  border: dashed 2px utils.palette($theme, "grayscale", 500);
75
75
 
76
76
  &.fu-error {
77
- border: dashed 2px utils.palette($theme, "error", 500);
77
+ border: dashed 2px utils.palette($theme, "error", 600);
78
78
  }
79
79
 
80
80
  position: relative;
@@ -208,11 +208,11 @@
208
208
  border: none;
209
209
  background: utils.palette($theme, "warn", 50);
210
210
 
211
- .file-panel-title {
212
- color: utils.palette($theme, "warn", 500);
211
+ mat-icon , .file-panel-title {
212
+ color: utils.palette($theme, "warn", 600);
213
213
  }
214
214
  .mat-progress-bar-fill::after {
215
- background: utils.palette($theme, "warn", 500);
215
+ background: utils.palette($theme, "warn", 600);
216
216
  }
217
217
  .mat-progress-bar-buffer {
218
218
  background-color: utils.palette($theme, "warn", 100);
@@ -223,10 +223,10 @@
223
223
  background: utils.palette($theme, "success", 50);
224
224
 
225
225
  .file-panel-title {
226
- color: utils.palette($theme, "success", 500);
226
+ color: utils.palette($theme, "success", 600);
227
227
  }
228
228
  .mat-progress-bar-fill::after {
229
- background: utils.palette($theme, "success", 500) !important;
229
+ background: utils.palette($theme, "success", 600) !important;
230
230
  }
231
231
  .mat-progress-bar-buffer {
232
232
  background-color: utils.palette($theme, "success", 100) !important;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onemrvapublic/design-system",
3
- "version": "17.0.56",
3
+ "version": "17.0.57",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },