@koalarx/ui 13.0.2 → 13.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/alert/esm2020/lib/dialog-alert.component.mjs +2 -2
  2. package/alert/fesm2015/koalarx-ui-alert.mjs +2 -2
  3. package/alert/fesm2020/koalarx-ui-alert.mjs +2 -2
  4. package/core/esm2020/lib/services/api-requester/koala.api-requester.service.mjs +18 -1
  5. package/core/fesm2015/koalarx-ui-core.mjs +17 -0
  6. package/core/fesm2015/koalarx-ui-core.mjs.map +1 -1
  7. package/core/fesm2020/koalarx-ui-core.mjs +17 -0
  8. package/core/fesm2020/koalarx-ui-core.mjs.map +1 -1
  9. package/core/lib/services/api-requester/koala.api-requester.service.d.ts +1 -0
  10. package/folder-page/esm2020/lib/folder.component.mjs +2 -2
  11. package/folder-page/fesm2015/koalarx-ui-folder-page.mjs +2 -2
  12. package/folder-page/fesm2020/koalarx-ui-folder-page.mjs +2 -2
  13. package/form/esm2020/lib/dynamic-form/dynamic-form.component.mjs +3 -3
  14. package/form/esm2020/lib/dynamic-form/koala.dynamic-form.service.mjs +2 -3
  15. package/form/fesm2015/koalarx-ui-form.mjs +3 -4
  16. package/form/fesm2015/koalarx-ui-form.mjs.map +1 -1
  17. package/form/fesm2020/koalarx-ui-form.mjs +3 -4
  18. package/form/fesm2020/koalarx-ui-form.mjs.map +1 -1
  19. package/list/esm2020/lib/list.component.mjs +3 -3
  20. package/list/fesm2015/koalarx-ui-list.mjs +2 -2
  21. package/list/fesm2015/koalarx-ui-list.mjs.map +1 -1
  22. package/list/fesm2020/koalarx-ui-list.mjs +2 -2
  23. package/list/fesm2020/koalarx-ui-list.mjs.map +1 -1
  24. package/menu/esm2020/lib/menu.component.mjs +2 -2
  25. package/menu/fesm2015/koalarx-ui-menu.mjs +2 -2
  26. package/menu/fesm2020/koalarx-ui-menu.mjs +2 -2
  27. package/package.json +2 -1
@@ -37,10 +37,10 @@ export class DialogAlertComponent {
37
37
  }
38
38
  }
39
39
  DialogAlertComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: DialogAlertComponent, deps: [{ token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
40
- DialogAlertComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: DialogAlertComponent, selector: "ng-component", ngImport: i0, template: "<div class=\"content\" mat-dialog-content>\n <mat-icon *ngIf=\"alert.alertEnum else avatar\" [ngClass]=\"iconColor ?? ''\">{{icon}}</mat-icon>\n <ng-template #avatar>\n <koala-dynamic-component [dynamicComponent]=\"alert.avatar\"></koala-dynamic-component>\n </ng-template>\n <p [innerHTML]=\"alert.message\" class=\"w-100 alert-message text-center\"></p>\n</div>\n<div align=\"center\" mat-dialog-actions>\n\t<div *ngFor=\"let action of alert?.actions\">\n\t <button\n\t\t (click)=\"action.action()\"\n\t\t *ngIf=\"action.show\"\n\t\t [color]=\"action.color\"\n\t\t mat-dialog-close\n\t\t mat-raised-button>\n\t {{action.text}}\n\t </button>\n\t</div>\n <button color=\"primary\" mat-dialog-close mat-raised-button>Ok</button>\n</div>\n", styles: [".content{color:#616161}.content .alert-message{display:inline-block;margin:15px auto;font-family:OpenSans,sans-serif;font-weight:bold}.content mat-icon{position:relative;display:block;margin:15px auto;width:60px;height:60px;font-size:60px}.content mat-icon.success{color:#4caf50}.content mat-icon.notFound{color:#2196f3}.content mat-icon.error{color:#e53935}.content mat-icon.badRequest{color:#ffc107}.content mat-icon.unhautorized{color:#ff9800}\n"], components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i2.KoalaDynamicComponentFactory, selector: "koala-dynamic-component", inputs: ["dynamicComponent"] }, { type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
40
+ DialogAlertComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: DialogAlertComponent, selector: "ng-component", ngImport: i0, template: "<div class=\"content\" mat-dialog-content>\n <mat-icon *ngIf=\"alert.alertEnum else avatar\" [ngClass]=\"iconColor ?? ''\">{{icon}}</mat-icon>\n <ng-template #avatar>\n <koala-dynamic-component [dynamicComponent]=\"alert.avatar\"></koala-dynamic-component>\n </ng-template>\n <p [innerHTML]=\"alert.message\" class=\"w-100 alert-message text-center\"></p>\n</div>\n<div align=\"center\" mat-dialog-actions>\n\t<div *ngFor=\"let action of alert?.actions\">\n\t <button\n\t\t (click)=\"action.action()\"\n\t\t *ngIf=\"action.show\"\n\t\t [color]=\"action.color\"\n\t\t mat-dialog-close\n\t\t mat-raised-button>\n\t {{action.text}}\n\t </button>\n\t</div>\n <button color=\"primary\" mat-dialog-close mat-raised-button>Ok</button>\n</div>\n", styles: [".content{color:#616161}.content .alert-message{display:inline-block;margin:15px auto;font-family:OpenSans,sans-serif;font-weight:700}.content mat-icon{position:relative;display:block;margin:15px auto;width:60px;height:60px;font-size:60px}.content mat-icon.success{color:#4caf50}.content mat-icon.notFound{color:#2196f3}.content mat-icon.error{color:#e53935}.content mat-icon.badRequest{color:#ffc107}.content mat-icon.unhautorized{color:#ff9800}\n"], components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i2.KoalaDynamicComponentFactory, selector: "koala-dynamic-component", inputs: ["dynamicComponent"] }, { type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
41
41
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: DialogAlertComponent, decorators: [{
42
42
  type: Component,
43
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"content\" mat-dialog-content>\n <mat-icon *ngIf=\"alert.alertEnum else avatar\" [ngClass]=\"iconColor ?? ''\">{{icon}}</mat-icon>\n <ng-template #avatar>\n <koala-dynamic-component [dynamicComponent]=\"alert.avatar\"></koala-dynamic-component>\n </ng-template>\n <p [innerHTML]=\"alert.message\" class=\"w-100 alert-message text-center\"></p>\n</div>\n<div align=\"center\" mat-dialog-actions>\n\t<div *ngFor=\"let action of alert?.actions\">\n\t <button\n\t\t (click)=\"action.action()\"\n\t\t *ngIf=\"action.show\"\n\t\t [color]=\"action.color\"\n\t\t mat-dialog-close\n\t\t mat-raised-button>\n\t {{action.text}}\n\t </button>\n\t</div>\n <button color=\"primary\" mat-dialog-close mat-raised-button>Ok</button>\n</div>\n", styles: [".content{color:#616161}.content .alert-message{display:inline-block;margin:15px auto;font-family:OpenSans,sans-serif;font-weight:bold}.content mat-icon{position:relative;display:block;margin:15px auto;width:60px;height:60px;font-size:60px}.content mat-icon.success{color:#4caf50}.content mat-icon.notFound{color:#2196f3}.content mat-icon.error{color:#e53935}.content mat-icon.badRequest{color:#ffc107}.content mat-icon.unhautorized{color:#ff9800}\n"] }]
43
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"content\" mat-dialog-content>\n <mat-icon *ngIf=\"alert.alertEnum else avatar\" [ngClass]=\"iconColor ?? ''\">{{icon}}</mat-icon>\n <ng-template #avatar>\n <koala-dynamic-component [dynamicComponent]=\"alert.avatar\"></koala-dynamic-component>\n </ng-template>\n <p [innerHTML]=\"alert.message\" class=\"w-100 alert-message text-center\"></p>\n</div>\n<div align=\"center\" mat-dialog-actions>\n\t<div *ngFor=\"let action of alert?.actions\">\n\t <button\n\t\t (click)=\"action.action()\"\n\t\t *ngIf=\"action.show\"\n\t\t [color]=\"action.color\"\n\t\t mat-dialog-close\n\t\t mat-raised-button>\n\t {{action.text}}\n\t </button>\n\t</div>\n <button color=\"primary\" mat-dialog-close mat-raised-button>Ok</button>\n</div>\n", styles: [".content{color:#616161}.content .alert-message{display:inline-block;margin:15px auto;font-family:OpenSans,sans-serif;font-weight:700}.content mat-icon{position:relative;display:block;margin:15px auto;width:60px;height:60px;font-size:60px}.content mat-icon.success{color:#4caf50}.content mat-icon.notFound{color:#2196f3}.content mat-icon.error{color:#e53935}.content mat-icon.badRequest{color:#ffc107}.content mat-icon.unhautorized{color:#ff9800}\n"] }]
44
44
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
45
45
  type: Inject,
46
46
  args: [MAT_DIALOG_DATA]
@@ -51,10 +51,10 @@ class DialogAlertComponent {
51
51
  }
52
52
  }
53
53
  DialogAlertComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: DialogAlertComponent, deps: [{ token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
54
- DialogAlertComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: DialogAlertComponent, selector: "ng-component", ngImport: i0, template: "<div class=\"content\" mat-dialog-content>\n <mat-icon *ngIf=\"alert.alertEnum else avatar\" [ngClass]=\"iconColor ?? ''\">{{icon}}</mat-icon>\n <ng-template #avatar>\n <koala-dynamic-component [dynamicComponent]=\"alert.avatar\"></koala-dynamic-component>\n </ng-template>\n <p [innerHTML]=\"alert.message\" class=\"w-100 alert-message text-center\"></p>\n</div>\n<div align=\"center\" mat-dialog-actions>\n\t<div *ngFor=\"let action of alert?.actions\">\n\t <button\n\t\t (click)=\"action.action()\"\n\t\t *ngIf=\"action.show\"\n\t\t [color]=\"action.color\"\n\t\t mat-dialog-close\n\t\t mat-raised-button>\n\t {{action.text}}\n\t </button>\n\t</div>\n <button color=\"primary\" mat-dialog-close mat-raised-button>Ok</button>\n</div>\n", styles: [".content{color:#616161}.content .alert-message{display:inline-block;margin:15px auto;font-family:OpenSans,sans-serif;font-weight:bold}.content mat-icon{position:relative;display:block;margin:15px auto;width:60px;height:60px;font-size:60px}.content mat-icon.success{color:#4caf50}.content mat-icon.notFound{color:#2196f3}.content mat-icon.error{color:#e53935}.content mat-icon.badRequest{color:#ffc107}.content mat-icon.unhautorized{color:#ff9800}\n"], components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i2.KoalaDynamicComponentFactory, selector: "koala-dynamic-component", inputs: ["dynamicComponent"] }, { type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
54
+ DialogAlertComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: DialogAlertComponent, selector: "ng-component", ngImport: i0, template: "<div class=\"content\" mat-dialog-content>\n <mat-icon *ngIf=\"alert.alertEnum else avatar\" [ngClass]=\"iconColor ?? ''\">{{icon}}</mat-icon>\n <ng-template #avatar>\n <koala-dynamic-component [dynamicComponent]=\"alert.avatar\"></koala-dynamic-component>\n </ng-template>\n <p [innerHTML]=\"alert.message\" class=\"w-100 alert-message text-center\"></p>\n</div>\n<div align=\"center\" mat-dialog-actions>\n\t<div *ngFor=\"let action of alert?.actions\">\n\t <button\n\t\t (click)=\"action.action()\"\n\t\t *ngIf=\"action.show\"\n\t\t [color]=\"action.color\"\n\t\t mat-dialog-close\n\t\t mat-raised-button>\n\t {{action.text}}\n\t </button>\n\t</div>\n <button color=\"primary\" mat-dialog-close mat-raised-button>Ok</button>\n</div>\n", styles: [".content{color:#616161}.content .alert-message{display:inline-block;margin:15px auto;font-family:OpenSans,sans-serif;font-weight:700}.content mat-icon{position:relative;display:block;margin:15px auto;width:60px;height:60px;font-size:60px}.content mat-icon.success{color:#4caf50}.content mat-icon.notFound{color:#2196f3}.content mat-icon.error{color:#e53935}.content mat-icon.badRequest{color:#ffc107}.content mat-icon.unhautorized{color:#ff9800}\n"], components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i2.KoalaDynamicComponentFactory, selector: "koala-dynamic-component", inputs: ["dynamicComponent"] }, { type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
55
55
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: DialogAlertComponent, decorators: [{
56
56
  type: Component,
57
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"content\" mat-dialog-content>\n <mat-icon *ngIf=\"alert.alertEnum else avatar\" [ngClass]=\"iconColor ?? ''\">{{icon}}</mat-icon>\n <ng-template #avatar>\n <koala-dynamic-component [dynamicComponent]=\"alert.avatar\"></koala-dynamic-component>\n </ng-template>\n <p [innerHTML]=\"alert.message\" class=\"w-100 alert-message text-center\"></p>\n</div>\n<div align=\"center\" mat-dialog-actions>\n\t<div *ngFor=\"let action of alert?.actions\">\n\t <button\n\t\t (click)=\"action.action()\"\n\t\t *ngIf=\"action.show\"\n\t\t [color]=\"action.color\"\n\t\t mat-dialog-close\n\t\t mat-raised-button>\n\t {{action.text}}\n\t </button>\n\t</div>\n <button color=\"primary\" mat-dialog-close mat-raised-button>Ok</button>\n</div>\n", styles: [".content{color:#616161}.content .alert-message{display:inline-block;margin:15px auto;font-family:OpenSans,sans-serif;font-weight:bold}.content mat-icon{position:relative;display:block;margin:15px auto;width:60px;height:60px;font-size:60px}.content mat-icon.success{color:#4caf50}.content mat-icon.notFound{color:#2196f3}.content mat-icon.error{color:#e53935}.content mat-icon.badRequest{color:#ffc107}.content mat-icon.unhautorized{color:#ff9800}\n"] }]
57
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"content\" mat-dialog-content>\n <mat-icon *ngIf=\"alert.alertEnum else avatar\" [ngClass]=\"iconColor ?? ''\">{{icon}}</mat-icon>\n <ng-template #avatar>\n <koala-dynamic-component [dynamicComponent]=\"alert.avatar\"></koala-dynamic-component>\n </ng-template>\n <p [innerHTML]=\"alert.message\" class=\"w-100 alert-message text-center\"></p>\n</div>\n<div align=\"center\" mat-dialog-actions>\n\t<div *ngFor=\"let action of alert?.actions\">\n\t <button\n\t\t (click)=\"action.action()\"\n\t\t *ngIf=\"action.show\"\n\t\t [color]=\"action.color\"\n\t\t mat-dialog-close\n\t\t mat-raised-button>\n\t {{action.text}}\n\t </button>\n\t</div>\n <button color=\"primary\" mat-dialog-close mat-raised-button>Ok</button>\n</div>\n", styles: [".content{color:#616161}.content .alert-message{display:inline-block;margin:15px auto;font-family:OpenSans,sans-serif;font-weight:700}.content mat-icon{position:relative;display:block;margin:15px auto;width:60px;height:60px;font-size:60px}.content mat-icon.success{color:#4caf50}.content mat-icon.notFound{color:#2196f3}.content mat-icon.error{color:#e53935}.content mat-icon.badRequest{color:#ffc107}.content mat-icon.unhautorized{color:#ff9800}\n"] }]
58
58
  }], ctorParameters: function () {
59
59
  return [{ type: undefined, decorators: [{
60
60
  type: Inject,
@@ -51,10 +51,10 @@ class DialogAlertComponent {
51
51
  }
52
52
  }
53
53
  DialogAlertComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: DialogAlertComponent, deps: [{ token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
54
- DialogAlertComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: DialogAlertComponent, selector: "ng-component", ngImport: i0, template: "<div class=\"content\" mat-dialog-content>\n <mat-icon *ngIf=\"alert.alertEnum else avatar\" [ngClass]=\"iconColor ?? ''\">{{icon}}</mat-icon>\n <ng-template #avatar>\n <koala-dynamic-component [dynamicComponent]=\"alert.avatar\"></koala-dynamic-component>\n </ng-template>\n <p [innerHTML]=\"alert.message\" class=\"w-100 alert-message text-center\"></p>\n</div>\n<div align=\"center\" mat-dialog-actions>\n\t<div *ngFor=\"let action of alert?.actions\">\n\t <button\n\t\t (click)=\"action.action()\"\n\t\t *ngIf=\"action.show\"\n\t\t [color]=\"action.color\"\n\t\t mat-dialog-close\n\t\t mat-raised-button>\n\t {{action.text}}\n\t </button>\n\t</div>\n <button color=\"primary\" mat-dialog-close mat-raised-button>Ok</button>\n</div>\n", styles: [".content{color:#616161}.content .alert-message{display:inline-block;margin:15px auto;font-family:OpenSans,sans-serif;font-weight:bold}.content mat-icon{position:relative;display:block;margin:15px auto;width:60px;height:60px;font-size:60px}.content mat-icon.success{color:#4caf50}.content mat-icon.notFound{color:#2196f3}.content mat-icon.error{color:#e53935}.content mat-icon.badRequest{color:#ffc107}.content mat-icon.unhautorized{color:#ff9800}\n"], components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i2.KoalaDynamicComponentFactory, selector: "koala-dynamic-component", inputs: ["dynamicComponent"] }, { type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
54
+ DialogAlertComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: DialogAlertComponent, selector: "ng-component", ngImport: i0, template: "<div class=\"content\" mat-dialog-content>\n <mat-icon *ngIf=\"alert.alertEnum else avatar\" [ngClass]=\"iconColor ?? ''\">{{icon}}</mat-icon>\n <ng-template #avatar>\n <koala-dynamic-component [dynamicComponent]=\"alert.avatar\"></koala-dynamic-component>\n </ng-template>\n <p [innerHTML]=\"alert.message\" class=\"w-100 alert-message text-center\"></p>\n</div>\n<div align=\"center\" mat-dialog-actions>\n\t<div *ngFor=\"let action of alert?.actions\">\n\t <button\n\t\t (click)=\"action.action()\"\n\t\t *ngIf=\"action.show\"\n\t\t [color]=\"action.color\"\n\t\t mat-dialog-close\n\t\t mat-raised-button>\n\t {{action.text}}\n\t </button>\n\t</div>\n <button color=\"primary\" mat-dialog-close mat-raised-button>Ok</button>\n</div>\n", styles: [".content{color:#616161}.content .alert-message{display:inline-block;margin:15px auto;font-family:OpenSans,sans-serif;font-weight:700}.content mat-icon{position:relative;display:block;margin:15px auto;width:60px;height:60px;font-size:60px}.content mat-icon.success{color:#4caf50}.content mat-icon.notFound{color:#2196f3}.content mat-icon.error{color:#e53935}.content mat-icon.badRequest{color:#ffc107}.content mat-icon.unhautorized{color:#ff9800}\n"], components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i2.KoalaDynamicComponentFactory, selector: "koala-dynamic-component", inputs: ["dynamicComponent"] }, { type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
55
55
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: DialogAlertComponent, decorators: [{
56
56
  type: Component,
57
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"content\" mat-dialog-content>\n <mat-icon *ngIf=\"alert.alertEnum else avatar\" [ngClass]=\"iconColor ?? ''\">{{icon}}</mat-icon>\n <ng-template #avatar>\n <koala-dynamic-component [dynamicComponent]=\"alert.avatar\"></koala-dynamic-component>\n </ng-template>\n <p [innerHTML]=\"alert.message\" class=\"w-100 alert-message text-center\"></p>\n</div>\n<div align=\"center\" mat-dialog-actions>\n\t<div *ngFor=\"let action of alert?.actions\">\n\t <button\n\t\t (click)=\"action.action()\"\n\t\t *ngIf=\"action.show\"\n\t\t [color]=\"action.color\"\n\t\t mat-dialog-close\n\t\t mat-raised-button>\n\t {{action.text}}\n\t </button>\n\t</div>\n <button color=\"primary\" mat-dialog-close mat-raised-button>Ok</button>\n</div>\n", styles: [".content{color:#616161}.content .alert-message{display:inline-block;margin:15px auto;font-family:OpenSans,sans-serif;font-weight:bold}.content mat-icon{position:relative;display:block;margin:15px auto;width:60px;height:60px;font-size:60px}.content mat-icon.success{color:#4caf50}.content mat-icon.notFound{color:#2196f3}.content mat-icon.error{color:#e53935}.content mat-icon.badRequest{color:#ffc107}.content mat-icon.unhautorized{color:#ff9800}\n"] }]
57
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"content\" mat-dialog-content>\n <mat-icon *ngIf=\"alert.alertEnum else avatar\" [ngClass]=\"iconColor ?? ''\">{{icon}}</mat-icon>\n <ng-template #avatar>\n <koala-dynamic-component [dynamicComponent]=\"alert.avatar\"></koala-dynamic-component>\n </ng-template>\n <p [innerHTML]=\"alert.message\" class=\"w-100 alert-message text-center\"></p>\n</div>\n<div align=\"center\" mat-dialog-actions>\n\t<div *ngFor=\"let action of alert?.actions\">\n\t <button\n\t\t (click)=\"action.action()\"\n\t\t *ngIf=\"action.show\"\n\t\t [color]=\"action.color\"\n\t\t mat-dialog-close\n\t\t mat-raised-button>\n\t {{action.text}}\n\t </button>\n\t</div>\n <button color=\"primary\" mat-dialog-close mat-raised-button>Ok</button>\n</div>\n", styles: [".content{color:#616161}.content .alert-message{display:inline-block;margin:15px auto;font-family:OpenSans,sans-serif;font-weight:700}.content mat-icon{position:relative;display:block;margin:15px auto;width:60px;height:60px;font-size:60px}.content mat-icon.success{color:#4caf50}.content mat-icon.notFound{color:#2196f3}.content mat-icon.error{color:#e53935}.content mat-icon.badRequest{color:#ffc107}.content mat-icon.unhautorized{color:#ff9800}\n"] }]
58
58
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
59
59
  type: Inject,
60
60
  args: [MAT_DIALOG_DATA]
@@ -6,6 +6,7 @@ import { KoalaRequestHeaderHelper } from "./helpers/service/koala.request-header
6
6
  import { KoalaResponseFactory } from "./factory/koala.response.factory";
7
7
  import { first, map } from "rxjs/operators";
8
8
  import { TokenFactory } from "../token/token.factory";
9
+ import { EventSourcePolyfill } from 'event-source-polyfill';
9
10
  import * as i0 from "@angular/core";
10
11
  import * as i1 from "@angular/common/http";
11
12
  import * as i2 from "../openid/koala.oauth2.service";
@@ -16,6 +17,22 @@ export class KoalaApiRequesterService {
16
17
  this.isMockup = false;
17
18
  this.subscriptions = [];
18
19
  }
20
+ eventStream(url, onmessage, onclose) {
21
+ const hub = new URL(`${this.getUrlBase()}/${url}`);
22
+ const eventSource = new EventSourcePolyfill(hub.toJSON(), {
23
+ headers: KoalaRequestHeaderHelper.add(TokenFactory.getToken())
24
+ });
25
+ eventSource.addEventListener('message', (event) => {
26
+ if (typeof event.data !== 'undefined') {
27
+ onmessage(JSON.parse(event.data));
28
+ }
29
+ });
30
+ eventSource.addEventListener('close', () => {
31
+ if (onclose) {
32
+ onclose();
33
+ }
34
+ });
35
+ }
19
36
  request(method, url, data = {}) {
20
37
  if (data.__zone_symbol__state) {
21
38
  data = data.__zone_symbol__value;
@@ -128,4 +145,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
128
145
  type: Injectable,
129
146
  args: [{ providedIn: "root" }]
130
147
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.KoalaOAuth2Service }]; } });
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia29hbGEuYXBpLXJlcXVlc3Rlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3NlcnZpY2VzL2FwaS1yZXF1ZXN0ZXIva29hbGEuYXBpLXJlcXVlc3Rlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUEyQixVQUFVLEVBQWdCLE1BQU0sc0JBQXNCLENBQUM7QUFFekYsT0FBTyxFQUFFLFVBQVUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDeEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDekYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDeEUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7QUFLdEQsTUFBTSxPQUFPLHdCQUF3QjtJQUtuQyxZQUNVLElBQWdCLEVBQ2hCLGFBQWlDO1FBRGpDLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsa0JBQWEsR0FBYixhQUFhLENBQW9CO1FBTHBDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDaEIsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO0lBTTNDLENBQUM7SUFFTSxPQUFPLENBQUksTUFBd0IsRUFBRSxHQUFXLEVBQUUsT0FBWSxFQUFFO1FBQ3JFLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQzdCLElBQUksR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUM7U0FDbEM7UUFDRCxRQUFRLE1BQU0sRUFBRTtZQUNkLEtBQUssTUFBTSxDQUFDO1lBQ1os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QUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMsIEh0dHBSZXNwb25zZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xuaW1wb3J0IHsgS29hbGFPQXV0aDJTZXJ2aWNlIH0gZnJvbSBcIi4uL29wZW5pZC9rb2FsYS5vYXV0aDIuc2VydmljZVwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IEtvYWxhRXJyb3JzSGVscGVyIH0gZnJvbSBcIi4vaGVscGVycy9lcnJvci9rb2FsYS5lcnJvcnMuaGVscGVyXCI7XG5pbXBvcnQgeyBLb2FsYVJlcXVlc3RIZWFkZXJIZWxwZXIgfSBmcm9tIFwiLi9oZWxwZXJzL3NlcnZpY2Uva29hbGEucmVxdWVzdC1oZWFkZXIuaGVscGVyXCI7XG5pbXBvcnQgeyBLb2FsYVJlc3BvbnNlRmFjdG9yeSB9IGZyb20gXCIuL2ZhY3Rvcnkva29hbGEucmVzcG9uc2UuZmFjdG9yeVwiO1xuaW1wb3J0IHsgZmlyc3QsIG1hcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgVG9rZW5GYWN0b3J5IH0gZnJvbSBcIi4uL3Rva2VuL3Rva2VuLmZhY3RvcnlcIjtcblxuZXhwb3J0IHR5cGUgQXBpUmVxdWVzdGVyVHlwZSA9ICdnZXQnIHwgJ3Bvc3QnIHwgJ3B1dCcgfCAncGF0Y2gnIHwgJ2RlbGV0ZSc7XG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiBcInJvb3RcIn0pXG5leHBvcnQgY2xhc3MgS29hbGFBcGlSZXF1ZXN0ZXJTZXJ2aWNlIHtcbiAgcHVibGljIGFwaVVybDogc3RyaW5nO1xuICBwdWJsaWMgaXNNb2NrdXAgPSBmYWxzZTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIG9hdXRoMlNlcnZpY2U6IEtvYWxhT0F1dGgyU2VydmljZVxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyByZXF1ZXN0PFQ+KG1ldGhvZDogQXBpUmVxdWVzdGVyVHlwZSwgdXJsOiBzdHJpbmcsIGRhdGE6IGFueSA9IHt9KTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgaWYgKGRhdGEuX196b25lX3N5bWJvbF9fc3RhdGUpIHtcbiAgICAgIGRhdGEgPSBkYXRhLl9fem9uZV9zeW1ib2xfX3ZhbHVlO1xuICAgIH1cbiAgICBzd2l0Y2ggKG1ldGhvZCkge1xuICAgICAgY2FzZSAncG9zdCc6XG4gICAgICBjYXNlICdwdXQnOlxuICAgICAgY2FzZSAncGF0Y2gnOlxuICAgICAgY2FzZSAnZGVsZXRlJzpcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvbWlzZVNlbmREYXRhPFQ+KHRoaXMucG9zdFB1dERlbGV0ZShtZXRob2QsIHVybCwgZGF0YSksIHVybCk7XG4gICAgICBjYXNlICdnZXQnOlxuICAgICAgICBsZXQgaHR0cFBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgICAgIE9iamVjdC5rZXlzKGRhdGEgPz8ge30pLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgIGxldCBkYWRvID0gZGF0YVtrZXldO1xuICAgICAgICAgIGlmICh0eXBlb2YgZGFkbyA9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICBpZiAoZGFkbyAmJiBkYWRvLmhhc093blByb3BlcnR5KCdsZW5ndGgnKSAmJiBkYWRvLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgZGFkby5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGh0dHBQYXJhbXMgPSBodHRwUGFyYW1zLmFwcGVuZChgJHtrZXkucmVwbGFjZSgnW10nLCAnJyl9W11gLCBpdGVtKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBodHRwUGFyYW1zID0gaHR0cFBhcmFtcy5hcHBlbmQoa2V5LCBkYWRvKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaHR0cFBhcmFtcyA9IGh0dHBQYXJhbXMuYXBwZW5kKGtleSwgZGFkbyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvbWlzZUdldERhdGE8VD4odGhpcy5nZXQodXJsLCBodHRwUGFyYW1zKSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNhbmNlbFJlcXVlc3RzKCkge1xuICAgIGZvciAobGV0IHN1YnNjcmliZSBvZiB0aGlzLnN1YnNjcmlwdGlvbnMudmFsdWVzKCkpIHtcbiAgICAgIHN1YnNjcmliZS51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0PFQ+KHVybDogc3RyaW5nLCBwYXJhbXM6IEh0dHBQYXJhbXMpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRNZXRob2Q8VD4oJ2dldCcsIHVybCwgcGFyYW1zKVxuICAgICAgICAgICAgICAgLnBpcGUobWFwKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmJvZHlcbiAgICAgICAgICAgICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgcG9zdFB1dERlbGV0ZShtZXRob2Q6IEFwaVJlcXVlc3RlclR5cGUsIHVybDogc3RyaW5nLCBkYXRhOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRNZXRob2Q8SHR0cFJlc3BvbnNlPGFueT4+KG1ldGhvZCwgdXJsLCBkYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJvbWlzZUdldERhdGE8VD4ocmVxdWVzdDogT2JzZXJ2YWJsZTxUPik6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxUPihvYnNlcnZlID0+IHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uc1xuICAgICAgICAgIC5wdXNoKHJlcXVlc3QucGlwZShmaXJzdCgpKVxuICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0OiByZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlLm5leHQocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuc3RhdHVzID09PSA0MDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vYXV0aDJTZXJ2aWNlLmxvZ291dCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZS5lcnJvcihLb2FsYUVycm9yc0hlbHBlci5nZW5lcmF0ZShlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHByb21pc2VTZW5kRGF0YTxUPihyZXF1ZXN0OiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxhbnk+PiwgdXJsUmVxdWVzdD86IHN0cmluZyk6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxUPihvYnNlcnZlID0+IHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uc1xuICAgICAgICAgIC5wdXNoKHJlcXVlc3QucGlwZShmaXJzdCgpKVxuICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0OiByZXNwb25zZSA9PiBLb2FsYVJlc3BvbnNlRmFjdG9yeS5nZW5lcmF0ZVJlc3BvbnNlKHJlc3BvbnNlLCB1cmxSZXF1ZXN0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oc3VjY2VzcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmUubmV4dChzdWNjZXNzIGFzIGFueSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmUuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9hdXRoMlNlcnZpY2UubG9nb3V0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZSA9PiBvYnNlcnZlLmVycm9yKEtvYWxhRXJyb3JzSGVscGVyLmdlbmVyYXRlKGUpKVxuICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldFVybEJhc2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNNb2NrdXAgPyBgJHtsb2NhdGlvbi5vcmlnaW59L2Fzc2V0cy9tb2NrdXBgIDogdGhpcy5hcGlVcmw7XG4gIH1cblxuICBwcml2YXRlIGdldE1ldGhvZDxUPihtZXRob2Q6IEFwaVJlcXVlc3RlclR5cGUsIHVybDogc3RyaW5nLCBkYXRhOiBhbnkgfCBIdHRwUGFyYW1zID0ge30pIHtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJyxcbiAgICAgIGhlYWRlcnM6IEtvYWxhUmVxdWVzdEhlYWRlckhlbHBlci5hZGQoVG9rZW5GYWN0b3J5LmdldFRva2VuKCkpXG4gICAgfSBhcyB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W3A6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIG9ic2VydmU6IFwicmVzcG9uc2VcIjtcbiAgICAgIHBhcmFtcz86IEh0dHBQYXJhbXMgfCB7XG4gICAgICAgIFtwYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj47XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBzd2l0Y2ggKG1ldGhvZCkge1xuICAgICAgY2FzZSBcInBvc3RcIjpcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFQ+KGAke3RoaXMuZ2V0VXJsQmFzZSgpfS8ke3VybH1gLCBkYXRhLCBvcHRpb25zKTtcbiAgICAgIGNhc2UgXCJwdXRcIjpcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8VD4oYCR7dGhpcy5nZXRVcmxCYXNlKCl9LyR7dXJsfWAsIGRhdGEsIG9wdGlvbnMpO1xuICAgICAgY2FzZSBcInBhdGNoXCI6XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2g8VD4oYCR7dGhpcy5nZXRVcmxCYXNlKCl9LyR7dXJsfWAsIGRhdGEsIG9wdGlvbnMpO1xuICAgICAgY2FzZSBcImRlbGV0ZVwiOlxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTxUPihgJHt0aGlzLmdldFVybEJhc2UoKX0vJHt1cmx9YCwgb3B0aW9ucyk7XG4gICAgICBjYXNlIFwiZ2V0XCI6XG4gICAgICAgIG9wdGlvbnMucGFyYW1zID0gZGF0YTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8VD4oYCR7dGhpcy5nZXRVcmxCYXNlKCl9LyR7dXJsfWAsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxufVxuIl19
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia29hbGEuYXBpLXJlcXVlc3Rlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3NlcnZpY2VzL2FwaS1yZXF1ZXN0ZXIva29hbGEuYXBpLXJlcXVlc3Rlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUEyQixVQUFVLEVBQWdCLE1BQU0sc0JBQXNCLENBQUM7QUFFekYsT0FBTyxFQUFFLFVBQVUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDeEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDekYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDeEUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7QUFLNUQsTUFBTSxPQUFPLHdCQUF3QjtJQUtuQyxZQUNVLElBQWdCLEVBQ2hCLGFBQWlDO1FBRGpDLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsa0JBQWEsR0FBYixhQUFhLENBQW9CO1FBTHBDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDaEIsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO0lBTTNDLENBQUM7SUFFTSxXQUFXLENBQUksR0FBVyxFQUFFLFNBQThCLEVBQUUsT0FBb0I7UUFDckYsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksR0FBRyxFQUFFLENBQUMs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LEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDekUsS0FBSyxLQUFLO2dCQUNSLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3hFLEtBQUssT0FBTztnQkFDVixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztZQUMxRSxLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBSSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNyRSxLQUFLLEtBQUs7Z0JBQ1IsT0FBTyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQ3RCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDbkU7SUFDSCxDQUFDOztxSEFoSlUsd0JBQXdCO3lIQUF4Qix3QkFBd0IsY0FEWixNQUFNOzJGQUNsQix3QkFBd0I7a0JBRHBDLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcywgSHR0cFJlc3BvbnNlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5pbXBvcnQgeyBLb2FsYU9BdXRoMlNlcnZpY2UgfSBmcm9tIFwiLi4vb3BlbmlkL2tvYWxhLm9hdXRoMi5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgS29hbGFFcnJvcnNIZWxwZXIgfSBmcm9tIFwiLi9oZWxwZXJzL2Vycm9yL2tvYWxhLmVycm9ycy5oZWxwZXJcIjtcbmltcG9ydCB7IEtvYWxhUmVxdWVzdEhlYWRlckhlbHBlciB9IGZyb20gXCIuL2hlbHBlcnMvc2VydmljZS9rb2FsYS5yZXF1ZXN0LWhlYWRlci5oZWxwZXJcIjtcbmltcG9ydCB7IEtvYWxhUmVzcG9uc2VGYWN0b3J5IH0gZnJvbSBcIi4vZmFjdG9yeS9rb2FsYS5yZXNwb25zZS5mYWN0b3J5XCI7XG5pbXBvcnQgeyBmaXJzdCwgbWFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBUb2tlbkZhY3RvcnkgfSBmcm9tIFwiLi4vdG9rZW4vdG9rZW4uZmFjdG9yeVwiO1xuaW1wb3J0IHsgRXZlbnRTb3VyY2VQb2x5ZmlsbCB9IGZyb20gJ2V2ZW50LXNvdXJjZS1wb2x5ZmlsbCc7XG5cbmV4cG9ydCB0eXBlIEFwaVJlcXVlc3RlclR5cGUgPSAnZ2V0JyB8ICdwb3N0JyB8ICdwdXQnIHwgJ3BhdGNoJyB8ICdkZWxldGUnO1xuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogXCJyb290XCJ9KVxuZXhwb3J0IGNsYXNzIEtvYWxhQXBpUmVxdWVzdGVyU2VydmljZSB7XG4gIHB1YmxpYyBhcGlVcmw6IHN0cmluZztcbiAgcHVibGljIGlzTW9ja3VwID0gZmFsc2U7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBvYXV0aDJTZXJ2aWNlOiBLb2FsYU9BdXRoMlNlcnZpY2VcbiAgKSB7XG4gIH1cblxuICBwdWJsaWMgZXZlbnRTdHJlYW08VD4odXJsOiBzdHJpbmcsIG9ubWVzc2FnZTogKGRhdGE6IFRbXSkgPT4gdm9pZCwgb25jbG9zZT86ICgpID0+IHZvaWQpIHtcbiAgICBjb25zdCBodWIgPSBuZXcgVVJMKGAke3RoaXMuZ2V0VXJsQmFzZSgpfS8ke3VybH1gKTtcbiAgICBjb25zdCBldmVudFNvdXJjZSA9IG5ldyBFdmVudFNvdXJjZVBvbHlmaWxsKGh1Yi50b0pTT04oKSwge1xuICAgICAgaGVhZGVyczogS29hbGFSZXF1ZXN0SGVhZGVySGVscGVyLmFkZChUb2tlbkZhY3RvcnkuZ2V0VG9rZW4oKSlcbiAgICB9KTtcbiAgICBldmVudFNvdXJjZS5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgKGV2ZW50KSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGV2ZW50LmRhdGEgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIG9ubWVzc2FnZShKU09OLnBhcnNlKGV2ZW50LmRhdGEpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBldmVudFNvdXJjZS5hZGRFdmVudExpc3RlbmVyKCdjbG9zZScsICgpID0+IHtcbiAgICAgIGlmIChvbmNsb3NlKSB7XG4gICAgICAgIG9uY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZXF1ZXN0PFQ+KG1ldGhvZDogQXBpUmVxdWVzdGVyVHlwZSwgdXJsOiBzdHJpbmcsIGRhdGE6IGFueSA9IHt9KTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgaWYgKGRhdGEuX196b25lX3N5bWJvbF9fc3RhdGUpIHtcbiAgICAgIGRhdGEgPSBkYXRhLl9fem9uZV9zeW1ib2xfX3ZhbHVlO1xuICAgIH1cbiAgICBzd2l0Y2ggKG1ldGhvZCkge1xuICAgICAgY2FzZSAncG9zdCc6XG4gICAgICBjYXNlICdwdXQnOlxuICAgICAgY2FzZSAncGF0Y2gnOlxuICAgICAgY2FzZSAnZGVsZXRlJzpcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvbWlzZVNlbmREYXRhPFQ+KHRoaXMucG9zdFB1dERlbGV0ZShtZXRob2QsIHVybCwgZGF0YSksIHVybCk7XG4gICAgICBjYXNlICdnZXQnOlxuICAgICAgICBsZXQgaHR0cFBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgICAgIE9iamVjdC5rZXlzKGRhdGEgPz8ge30pLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgIGxldCBkYWRvID0gZGF0YVtrZXldO1xuICAgICAgICAgIGlmICh0eXBlb2YgZGFkbyA9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICBpZiAoZGFkbyAmJiBkYWRvLmhhc093blByb3BlcnR5KCdsZW5ndGgnKSAmJiBkYWRvLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgZGFkby5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGh0dHBQYXJhbXMgPSBodHRwUGFyYW1zLmFwcGVuZChgJHtrZXkucmVwbGFjZSgnW10nLCAnJyl9W11gLCBpdGVtKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBodHRwUGFyYW1zID0gaHR0cFBhcmFtcy5hcHBlbmQoa2V5LCBkYWRvKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaHR0cFBhcmFtcyA9IGh0dHBQYXJhbXMuYXBwZW5kKGtleSwgZGFkbyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvbWlzZUdldERhdGE8VD4odGhpcy5nZXQodXJsLCBodHRwUGFyYW1zKSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNhbmNlbFJlcXVlc3RzKCkge1xuICAgIGZvciAobGV0IHN1YnNjcmliZSBvZiB0aGlzLnN1YnNjcmlwdGlvbnMudmFsdWVzKCkpIHtcbiAgICAgIHN1YnNjcmliZS51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0PFQ+KHVybDogc3RyaW5nLCBwYXJhbXM6IEh0dHBQYXJhbXMpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRNZXRob2Q8VD4oJ2dldCcsIHVybCwgcGFyYW1zKVxuICAgICAgICAgICAgICAgLnBpcGUobWFwKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmJvZHlcbiAgICAgICAgICAgICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgcG9zdFB1dERlbGV0ZShtZXRob2Q6IEFwaVJlcXVlc3RlclR5cGUsIHVybDogc3RyaW5nLCBkYXRhOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRNZXRob2Q8SHR0cFJlc3BvbnNlPGFueT4+KG1ldGhvZCwgdXJsLCBkYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJvbWlzZUdldERhdGE8VD4ocmVxdWVzdDogT2JzZXJ2YWJsZTxUPik6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxUPihvYnNlcnZlID0+IHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uc1xuICAgICAgICAgIC5wdXNoKHJlcXVlc3QucGlwZShmaXJzdCgpKVxuICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0OiByZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlLm5leHQocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuc3RhdHVzID09PSA0MDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vYXV0aDJTZXJ2aWNlLmxvZ291dCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZS5lcnJvcihLb2FsYUVycm9yc0hlbHBlci5nZW5lcmF0ZShlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHByb21pc2VTZW5kRGF0YTxUPihyZXF1ZXN0OiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxhbnk+PiwgdXJsUmVxdWVzdD86IHN0cmluZyk6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxUPihvYnNlcnZlID0+IHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uc1xuICAgICAgICAgIC5wdXNoKHJlcXVlc3QucGlwZShmaXJzdCgpKVxuICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0OiByZXNwb25zZSA9PiBLb2FsYVJlc3BvbnNlRmFjdG9yeS5nZW5lcmF0ZVJlc3BvbnNlKHJlc3BvbnNlLCB1cmxSZXF1ZXN0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oc3VjY2VzcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmUubmV4dChzdWNjZXNzIGFzIGFueSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmUuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9hdXRoMlNlcnZpY2UubG9nb3V0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZSA9PiBvYnNlcnZlLmVycm9yKEtvYWxhRXJyb3JzSGVscGVyLmdlbmVyYXRlKGUpKVxuICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldFVybEJhc2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNNb2NrdXAgPyBgJHtsb2NhdGlvbi5vcmlnaW59L2Fzc2V0cy9tb2NrdXBgIDogdGhpcy5hcGlVcmw7XG4gIH1cblxuICBwcml2YXRlIGdldE1ldGhvZDxUPihtZXRob2Q6IEFwaVJlcXVlc3RlclR5cGUsIHVybDogc3RyaW5nLCBkYXRhOiBhbnkgfCBIdHRwUGFyYW1zID0ge30pIHtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJyxcbiAgICAgIGhlYWRlcnM6IEtvYWxhUmVxdWVzdEhlYWRlckhlbHBlci5hZGQoVG9rZW5GYWN0b3J5LmdldFRva2VuKCkpXG4gICAgfSBhcyB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W3A6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIG9ic2VydmU6IFwicmVzcG9uc2VcIjtcbiAgICAgIHBhcmFtcz86IEh0dHBQYXJhbXMgfCB7XG4gICAgICAgIFtwYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj47XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBzd2l0Y2ggKG1ldGhvZCkge1xuICAgICAgY2FzZSBcInBvc3RcIjpcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFQ+KGAke3RoaXMuZ2V0VXJsQmFzZSgpfS8ke3VybH1gLCBkYXRhLCBvcHRpb25zKTtcbiAgICAgIGNhc2UgXCJwdXRcIjpcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8VD4oYCR7dGhpcy5nZXRVcmxCYXNlKCl9LyR7dXJsfWAsIGRhdGEsIG9wdGlvbnMpO1xuICAgICAgY2FzZSBcInBhdGNoXCI6XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2g8VD4oYCR7dGhpcy5nZXRVcmxCYXNlKCl9LyR7dXJsfWAsIGRhdGEsIG9wdGlvbnMpO1xuICAgICAgY2FzZSBcImRlbGV0ZVwiOlxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTxUPihgJHt0aGlzLmdldFVybEJhc2UoKX0vJHt1cmx9YCwgb3B0aW9ucyk7XG4gICAgICBjYXNlIFwiZ2V0XCI6XG4gICAgICAgIG9wdGlvbnMucGFyYW1zID0gZGF0YTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8VD4oYCR7dGhpcy5nZXRVcmxCYXNlKCl9LyR7dXJsfWAsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -41,6 +41,7 @@ import { MatBadgeModule } from '@angular/material/badge';
41
41
  import * as i1$3 from '@koalarx/ui/alert';
42
42
  import { KoalaAlertEnum, KoalaRequestCodeToAlertEnumTranslate } from '@koalarx/ui/alert';
43
43
  import { map, first } from 'rxjs/operators';
44
+ import { EventSourcePolyfill } from 'event-source-polyfill';
44
45
 
45
46
  class LoaderBarPageComponent {
46
47
  constructor() {
@@ -1121,6 +1122,22 @@ class KoalaApiRequesterService {
1121
1122
  this.isMockup = false;
1122
1123
  this.subscriptions = [];
1123
1124
  }
1125
+ eventStream(url, onmessage, onclose) {
1126
+ const hub = new URL(`${this.getUrlBase()}/${url}`);
1127
+ const eventSource = new EventSourcePolyfill(hub.toJSON(), {
1128
+ headers: KoalaRequestHeaderHelper.add(TokenFactory.getToken())
1129
+ });
1130
+ eventSource.addEventListener('message', (event) => {
1131
+ if (typeof event.data !== 'undefined') {
1132
+ onmessage(JSON.parse(event.data));
1133
+ }
1134
+ });
1135
+ eventSource.addEventListener('close', () => {
1136
+ if (onclose) {
1137
+ onclose();
1138
+ }
1139
+ });
1140
+ }
1124
1141
  request(method, url, data = {}) {
1125
1142
  if (data.__zone_symbol__state) {
1126
1143
  data = data.__zone_symbol__value;