@wemake4u/form-player-se 1.0.23 → 1.0.25

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 (83) hide show
  1. package/esm2022/lib/components/actionsCellRenderer/actionsCellRenderer.component.mjs +69 -0
  2. package/esm2022/lib/components/deleteRowRenderer/deleteRowRenderer.component.mjs +25 -0
  3. package/esm2022/lib/components/hostCellRenderer/hostCellRenderer.component.mjs +101 -0
  4. package/esm2022/lib/components/objectURLRenderer/objectURLRenderer.component.mjs +27 -0
  5. package/esm2022/lib/components/setFilter/setFilter.component.mjs +111 -0
  6. package/esm2022/lib/dialog/dialog.component.mjs +15 -7
  7. package/esm2022/lib/directives/collapse.directive.mjs +20 -12
  8. package/esm2022/lib/directives/date.directive.mjs +2 -2
  9. package/esm2022/lib/directives/dialog.directive.mjs +2 -1
  10. package/esm2022/lib/directives/dropdown.directive.mjs +23 -5
  11. package/esm2022/lib/directives/formIndex.directive.mjs +25 -0
  12. package/esm2022/lib/directives/grid.directive.mjs +94 -17
  13. package/esm2022/lib/directives/readonly.directive.mjs +101 -0
  14. package/esm2022/lib/directives/updateblur.directive.mjs +10 -3
  15. package/esm2022/lib/dynamic-fields/dynamic-fields.component.mjs +64 -26
  16. package/esm2022/lib/dynamic-form/dynamic-form.component.mjs +96 -95
  17. package/esm2022/lib/dynamic-host/dynamic-host.component.mjs +121 -0
  18. package/esm2022/lib/locale/locale-de.mjs +3 -2
  19. package/esm2022/lib/locale/locale-en.mjs +3 -2
  20. package/esm2022/lib/locale/locale-es.mjs +3 -2
  21. package/esm2022/lib/locale/locale-fr.mjs +3 -2
  22. package/esm2022/lib/locale/locale-it.mjs +3 -2
  23. package/esm2022/lib/locale/locale-pt.mjs +3 -2
  24. package/esm2022/lib/services/chart.service.mjs +62 -56
  25. package/esm2022/lib/services/dialog.service.mjs +1 -1
  26. package/esm2022/lib/services/feel.service.mjs +186 -19
  27. package/esm2022/lib/services/form.service.mjs +360 -0
  28. package/esm2022/lib/services/formatter.service.mjs +68 -54
  29. package/esm2022/lib/services/function.service.mjs +9 -5
  30. package/esm2022/lib/services/global.service.mjs +42 -0
  31. package/esm2022/lib/services/grid.service.mjs +189 -53
  32. package/esm2022/lib/services/metadata.service.mjs +1 -8
  33. package/esm2022/lib/services/programmability.service.mjs +338 -64
  34. package/esm2022/lib/services/weak.service.mjs +3 -5
  35. package/esm2022/lib/utils/feelable.mjs +28 -0
  36. package/esm2022/lib/utils/groupByRow.mjs +3 -1
  37. package/esm2022/public-api.mjs +2 -1
  38. package/fesm2022/wemake4u-form-player-se.mjs +1896 -577
  39. package/fesm2022/wemake4u-form-player-se.mjs.map +1 -1
  40. package/lib/components/actionsCellRenderer/actionsCellRenderer.component.d.ts +18 -0
  41. package/lib/components/deleteRowRenderer/deleteRowRenderer.component.d.ts +49 -0
  42. package/lib/components/hostCellRenderer/hostCellRenderer.component.d.ts +29 -0
  43. package/lib/components/objectURLRenderer/objectURLRenderer.component.d.ts +50 -0
  44. package/lib/{utils/setFilter.d.ts → components/setFilter/setFilter.component.d.ts} +1 -0
  45. package/lib/dialog/dialog.component.d.ts +11 -0
  46. package/lib/directives/collapse.directive.d.ts +7 -4
  47. package/lib/directives/dropdown.directive.d.ts +4 -0
  48. package/lib/directives/formIndex.directive.d.ts +10 -0
  49. package/lib/directives/grid.directive.d.ts +21 -4
  50. package/lib/directives/readonly.directive.d.ts +28 -0
  51. package/lib/dynamic-fields/dynamic-fields.component.d.ts +28 -4
  52. package/lib/dynamic-form/dynamic-form.component.d.ts +20 -10
  53. package/lib/dynamic-host/dynamic-host.component.d.ts +27 -0
  54. package/lib/locale/locale-de.d.ts +1 -0
  55. package/lib/locale/locale-en.d.ts +1 -0
  56. package/lib/locale/locale-es.d.ts +1 -0
  57. package/lib/locale/locale-fr.d.ts +1 -0
  58. package/lib/locale/locale-it.d.ts +1 -0
  59. package/lib/locale/locale-pt.d.ts +1 -0
  60. package/lib/locale/locale.d.ts +7 -0
  61. package/lib/services/chart.service.d.ts +5 -2
  62. package/lib/services/dialog.service.d.ts +0 -1
  63. package/lib/services/feel.service.d.ts +8 -0
  64. package/lib/services/form.service.d.ts +51 -0
  65. package/lib/services/formatter.service.d.ts +8 -6
  66. package/lib/services/function.service.d.ts +1 -1
  67. package/lib/services/global.service.d.ts +16 -0
  68. package/lib/services/grid.service.d.ts +16 -4
  69. package/lib/services/metadata.service.d.ts +0 -3
  70. package/lib/services/programmability.service.d.ts +33 -5
  71. package/lib/utils/feelable.d.ts +2 -0
  72. package/lib/utils/groupByRow.d.ts +2 -0
  73. package/package.json +2 -2
  74. package/public-api.d.ts +1 -0
  75. package/esm2022/lib/directives/disable.directive.mjs +0 -71
  76. package/esm2022/lib/directives/disableform.directive.mjs +0 -42
  77. package/esm2022/lib/utils/gridCells.mjs +0 -108
  78. package/esm2022/lib/utils/patchForm.mjs +0 -75
  79. package/esm2022/lib/utils/setFilter.mjs +0 -111
  80. package/lib/directives/disable.directive.d.ts +0 -20
  81. package/lib/directives/disableform.directive.d.ts +0 -17
  82. package/lib/utils/gridCells.d.ts +0 -110
  83. package/lib/utils/patchForm.d.ts +0 -9
@@ -0,0 +1,69 @@
1
+ import { Component } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { SirioButtonComponent } from 'ngx-sirio-lib';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../services/programmability.service";
6
+ import * as i2 from "@angular/common";
7
+ export class ActionsCellRendererComponent {
8
+ programmability;
9
+ constructor(programmability) {
10
+ this.programmability = programmability;
11
+ }
12
+ params;
13
+ agInit(params) {
14
+ this.params = params;
15
+ }
16
+ refresh() {
17
+ return false;
18
+ }
19
+ evaluateBoolean(value) {
20
+ const options = {
21
+ cacheable: false,
22
+ extendContext: () => ({
23
+ "event": {
24
+ params: this.params,
25
+ data: this.getData(),
26
+ rowIndex: this.getRowIndex()
27
+ }
28
+ })
29
+ };
30
+ return this.programmability.evaluateBoolean(this.getFormGroup(), value, options);
31
+ }
32
+ evaluateString(value) {
33
+ return this.programmability.evaluateString(this.getFormGroup(), value);
34
+ }
35
+ clickButton(action, event) {
36
+ if (action.click) {
37
+ const options = {
38
+ cacheable: false,
39
+ extendContext: () => ({
40
+ "event": {
41
+ params: this.params,
42
+ action: action,
43
+ data: this.getData(),
44
+ rowIndex: this.getRowIndex()
45
+ }
46
+ })
47
+ };
48
+ return this.programmability.evaluate(this.getFormGroup(), action.click, options);
49
+ }
50
+ }
51
+ getData() {
52
+ return this.params.data;
53
+ }
54
+ getRowIndex() {
55
+ return this.params.node.rowIndex;
56
+ }
57
+ getFormGroup() {
58
+ return this.params.formGroup;
59
+ }
60
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionsCellRendererComponent, deps: [{ token: i1.ProgrammabilityService }], target: i0.ɵɵFactoryTarget.Component });
61
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ActionsCellRendererComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<div class=\"btn-small-group\">\r\n <ng-container *ngFor=\"let action of params.component.actions\">\r\n <ngx-sirio-button class=\"btn-small\"\r\n [ariaLabel]=\"evaluateString(action.label)\"\r\n [title]=\"evaluateString(action.label)\"\r\n [color]=\"null\"\r\n [disabled]=\"evaluateBoolean(action.disabled)\"\r\n (clickEvent)=\"clickButton(action, $event)\"\r\n [icon]=\"evaluateString(action.icon)\">\r\n </ngx-sirio-button>\r\n </ng-container>\r\n</div>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: SirioButtonComponent, selector: "ngx-sirio-button", inputs: ["ariaExpanded", "ariaControls", "ariaActivedescendant", "ariaHaspopup", "ariaLabel", "ariaRequired", "ariaInvalid", "ariaDescribedby", "icon", "title", "role", "color", "isFloating", "isExtended", "isLight", "isSmall", "disabled", "isDropdown", "type", "dismissType", "isBtnBlock"], outputs: ["clickEvent", "focusEvent", "blurEvent"] }] });
62
+ }
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionsCellRendererComponent, decorators: [{
64
+ type: Component,
65
+ args: [{ standalone: true, imports: [
66
+ CommonModule, SirioButtonComponent
67
+ ], template: "<div class=\"btn-small-group\">\r\n <ng-container *ngFor=\"let action of params.component.actions\">\r\n <ngx-sirio-button class=\"btn-small\"\r\n [ariaLabel]=\"evaluateString(action.label)\"\r\n [title]=\"evaluateString(action.label)\"\r\n [color]=\"null\"\r\n [disabled]=\"evaluateBoolean(action.disabled)\"\r\n (clickEvent)=\"clickButton(action, $event)\"\r\n [icon]=\"evaluateString(action.icon)\">\r\n </ngx-sirio-button>\r\n </ng-container>\r\n</div>\r\n" }]
68
+ }], ctorParameters: () => [{ type: i1.ProgrammabilityService }] });
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uc0NlbGxSZW5kZXJlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9jb21wb25lbnRzL2FjdGlvbnNDZWxsUmVuZGVyZXIvYWN0aW9uc0NlbGxSZW5kZXJlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9jb21wb25lbnRzL2FjdGlvbnNDZWxsUmVuZGVyZXIvYWN0aW9uc0NlbGxSZW5kZXJlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFXckQsTUFBTSxPQUFPLDRCQUE0QjtJQUVuQjtJQUFwQixZQUFvQixlQUF1QztRQUF2QyxvQkFBZSxHQUFmLGVBQWUsQ0FBd0I7SUFBSSxDQUFDO0lBRWhFLE1BQU0sQ0FBTTtJQUVaLE1BQU0sQ0FBQyxNQUFXO1FBQ2hCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQThCO1FBRTVDLE1BQU0sT0FBTyxHQUFvQjtZQUMvQixTQUFTLEVBQUUsS0FBSztZQUNoQixhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDcEIsT0FBTyxFQUFFO29CQUNQLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtvQkFDbkIsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQ3BCLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFO2lCQUM3QjthQUNGLENBQUM7U0FDSCxDQUFBO1FBRUQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBb0I7UUFDakMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFXLEVBQUUsS0FBVTtRQUNqQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUVqQixNQUFNLE9BQU8sR0FBb0I7Z0JBQy9CLFNBQVMsRUFBRSxLQUFLO2dCQUNoQixhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztvQkFDcEIsT0FBTyxFQUFFO3dCQUNQLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTt3QkFDbkIsTUFBTSxFQUFFLE1BQU07d0JBQ2QsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUU7d0JBQ3BCLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFO3FCQUM3QjtpQkFDRixDQUFDO2FBQ0gsQ0FBQTtZQUVELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbkYsQ0FBQztJQUNILENBQUM7SUFFTyxPQUFPO1FBQ2IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztJQUMxQixDQUFDO0lBRU8sV0FBVztRQUNqQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUNuQyxDQUFDO0lBRU8sWUFBWTtRQUNsQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBc0IsQ0FBQztJQUM1QyxDQUFDO3dHQS9EVSw0QkFBNEI7NEZBQTVCLDRCQUE0Qix3RUNkekMsb2xCQVlBLDJDRERJLFlBQVksNEpBQUUsb0JBQW9COzs0RkFHekIsNEJBQTRCO2tCQVB4QyxTQUFTO2lDQUVJLElBQUksV0FDUDt3QkFDUCxZQUFZLEVBQUUsb0JBQW9CO3FCQUNuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBJQ2VsbFJlbmRlcmVyQW5ndWxhckNvbXAgfSBmcm9tICdhZy1ncmlkLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBTaXJpb0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJ25neC1zaXJpby1saWInO1xyXG5pbXBvcnQgeyBQcm9ncmFtbWFiaWxpdHlTZXJ2aWNlLCBFdmFsdWF0ZU9wdGlvbnMgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wcm9ncmFtbWFiaWxpdHkuc2VydmljZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlVXJsOiAnLi9hY3Rpb25zQ2VsbFJlbmRlcmVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSwgU2lyaW9CdXR0b25Db21wb25lbnRcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBY3Rpb25zQ2VsbFJlbmRlcmVyQ29tcG9uZW50IGltcGxlbWVudHMgSUNlbGxSZW5kZXJlckFuZ3VsYXJDb21wIHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwcm9ncmFtbWFiaWxpdHk6IFByb2dyYW1tYWJpbGl0eVNlcnZpY2UpIHsgfVxyXG5cclxuICBwYXJhbXM6IGFueTtcclxuXHJcbiAgYWdJbml0KHBhcmFtczogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnBhcmFtcyA9IHBhcmFtcztcclxuICB9XHJcblxyXG4gIHJlZnJlc2goKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBldmFsdWF0ZUJvb2xlYW4odmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcgfCBudWxsKTogYm9vbGVhbiB8IG51bGwge1xyXG5cclxuICAgIGNvbnN0IG9wdGlvbnM6IEV2YWx1YXRlT3B0aW9ucyA9IHtcclxuICAgICAgY2FjaGVhYmxlOiBmYWxzZSxcclxuICAgICAgZXh0ZW5kQ29udGV4dDogKCkgPT4gKHtcclxuICAgICAgICBcImV2ZW50XCI6IHtcclxuICAgICAgICAgIHBhcmFtczogdGhpcy5wYXJhbXMsXHJcbiAgICAgICAgICBkYXRhOiB0aGlzLmdldERhdGEoKSxcclxuICAgICAgICAgIHJvd0luZGV4OiB0aGlzLmdldFJvd0luZGV4KClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMucHJvZ3JhbW1hYmlsaXR5LmV2YWx1YXRlQm9vbGVhbih0aGlzLmdldEZvcm1Hcm91cCgpLCB2YWx1ZSwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBldmFsdWF0ZVN0cmluZyh2YWx1ZTogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm9ncmFtbWFiaWxpdHkuZXZhbHVhdGVTdHJpbmcodGhpcy5nZXRGb3JtR3JvdXAoKSwgdmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgY2xpY2tCdXR0b24oYWN0aW9uOiBhbnksIGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChhY3Rpb24uY2xpY2spIHtcclxuXHJcbiAgICAgIGNvbnN0IG9wdGlvbnM6IEV2YWx1YXRlT3B0aW9ucyA9IHtcclxuICAgICAgICBjYWNoZWFibGU6IGZhbHNlLFxyXG4gICAgICAgIGV4dGVuZENvbnRleHQ6ICgpID0+ICh7XHJcbiAgICAgICAgICBcImV2ZW50XCI6IHtcclxuICAgICAgICAgICAgcGFyYW1zOiB0aGlzLnBhcmFtcyxcclxuICAgICAgICAgICAgYWN0aW9uOiBhY3Rpb24sXHJcbiAgICAgICAgICAgIGRhdGE6IHRoaXMuZ2V0RGF0YSgpLFxyXG4gICAgICAgICAgICByb3dJbmRleDogdGhpcy5nZXRSb3dJbmRleCgpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHRoaXMucHJvZ3JhbW1hYmlsaXR5LmV2YWx1YXRlKHRoaXMuZ2V0Rm9ybUdyb3VwKCksIGFjdGlvbi5jbGljaywgb3B0aW9ucyk7XHJcbiAgICB9ICAgIFxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXREYXRhKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5wYXJhbXMuZGF0YTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Um93SW5kZXgoKTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLnBhcmFtcy5ub2RlLnJvd0luZGV4O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGb3JtR3JvdXAoKTogRm9ybUdyb3VwIHtcclxuICAgIHJldHVybiB0aGlzLnBhcmFtcy5mb3JtR3JvdXAgYXMgRm9ybUdyb3VwO1xyXG4gIH1cclxufVxyXG5cclxuIiwiPGRpdiBjbGFzcz1cImJ0bi1zbWFsbC1ncm91cFwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBwYXJhbXMuY29tcG9uZW50LmFjdGlvbnNcIj5cclxuICAgIDxuZ3gtc2lyaW8tYnV0dG9uIGNsYXNzPVwiYnRuLXNtYWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiZXZhbHVhdGVTdHJpbmcoYWN0aW9uLmxhYmVsKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiZXZhbHVhdGVTdHJpbmcoYWN0aW9uLmxhYmVsKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwibnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZXZhbHVhdGVCb29sZWFuKGFjdGlvbi5kaXNhYmxlZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrRXZlbnQpPVwiY2xpY2tCdXR0b24oYWN0aW9uLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtpY29uXT1cImV2YWx1YXRlU3RyaW5nKGFjdGlvbi5pY29uKVwiPlxyXG4gICAgPC9uZ3gtc2lyaW8tYnV0dG9uPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L2Rpdj5cclxuIl19
@@ -0,0 +1,25 @@
1
+ import { Component } from '@angular/core';
2
+ import { Texts } from '../../locale/locale-it';
3
+ import * as i0 from "@angular/core";
4
+ export class DeleteRowRendererComponent {
5
+ params;
6
+ Texts = Texts;
7
+ agInit(params) {
8
+ this.params = params;
9
+ }
10
+ onClick(event) {
11
+ if ('remove' in this.params.data && typeof this.params.data.remove === 'function') {
12
+ this.params.data.remove();
13
+ }
14
+ }
15
+ refresh() {
16
+ return false;
17
+ }
18
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DeleteRowRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
19
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DeleteRowRendererComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<a [attr.aria-label]=\"Texts.Remove\" title=\"{{ Texts.Remove }}\" href=\"javascript:void(0)\" (click)=\"onClick($event)\">\r\n <span class=\"fas fa-trash\"></span>\r\n</a>\r\n" });
20
+ }
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DeleteRowRendererComponent, decorators: [{
22
+ type: Component,
23
+ args: [{ standalone: true, template: "<a [attr.aria-label]=\"Texts.Remove\" title=\"{{ Texts.Remove }}\" href=\"javascript:void(0)\" (click)=\"onClick($event)\">\r\n <span class=\"fas fa-trash\"></span>\r\n</a>\r\n" }]
24
+ }] });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlUm93UmVuZGVyZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvY29tcG9uZW50cy9kZWxldGVSb3dSZW5kZXJlci9kZWxldGVSb3dSZW5kZXJlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9jb21wb25lbnRzL2RlbGV0ZVJvd1JlbmRlcmVyL2RlbGV0ZVJvd1JlbmRlcmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQU0vQyxNQUFNLE9BQU8sMEJBQTBCO0lBQ3JDLE1BQU0sQ0FBTTtJQUVaLEtBQUssR0FBRyxLQUFLLENBQUM7SUFFZCxNQUFNLENBQUMsTUFBVztRQUNoQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQVk7UUFFbEIsSUFBSSxRQUFRLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDbEYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO3dHQWxCVSwwQkFBMEI7NEZBQTFCLDBCQUEwQix3RUNSdkMsbUxBR0E7OzRGREthLDBCQUEwQjtrQkFKdEMsU0FBUztpQ0FFSSxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElDZWxsUmVuZGVyZXJBbmd1bGFyQ29tcCB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XHJcbmltcG9ydCB7IFRleHRzIH0gZnJvbSAnLi4vLi4vbG9jYWxlL2xvY2FsZS1pdCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZVVybDogJy4vZGVsZXRlUm93UmVuZGVyZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIERlbGV0ZVJvd1JlbmRlcmVyQ29tcG9uZW50IGltcGxlbWVudHMgSUNlbGxSZW5kZXJlckFuZ3VsYXJDb21wIHtcclxuICBwYXJhbXM6IGFueTtcclxuXHJcbiAgVGV4dHMgPSBUZXh0cztcclxuXHJcbiAgYWdJbml0KHBhcmFtczogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnBhcmFtcyA9IHBhcmFtcztcclxuICB9XHJcblxyXG4gIG9uQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XHJcblxyXG4gICAgaWYgKCdyZW1vdmUnIGluIHRoaXMucGFyYW1zLmRhdGEgJiYgdHlwZW9mIHRoaXMucGFyYW1zLmRhdGEucmVtb3ZlID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIHRoaXMucGFyYW1zLmRhdGEucmVtb3ZlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWZyZXNoKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxufVxyXG5cclxuIiwiPGEgW2F0dHIuYXJpYS1sYWJlbF09XCJUZXh0cy5SZW1vdmVcIiB0aXRsZT1cInt7IFRleHRzLlJlbW92ZSB9fVwiIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCI+XHJcbiAgPHNwYW4gY2xhc3M9XCJmYXMgZmEtdHJhc2hcIj48L3NwYW4+XHJcbjwvYT5cclxuIl19
@@ -0,0 +1,101 @@
1
+ import { Component, ViewChild, ViewContainerRef } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../services/programmability.service";
5
+ import * as i2 from "../../services/global.service";
6
+ export class HostCellRendererComponent {
7
+ injector;
8
+ programmability;
9
+ globalService;
10
+ container;
11
+ constructor(injector, programmability, globalService) {
12
+ this.injector = injector;
13
+ this.programmability = programmability;
14
+ this.globalService = globalService;
15
+ }
16
+ params;
17
+ agInit(params) {
18
+ this.params = params;
19
+ }
20
+ refresh() {
21
+ return false;
22
+ }
23
+ ngAfterViewInit() {
24
+ const componentType = this.resolveComponentType(this.getComponentType());
25
+ if (componentType) {
26
+ this.componentRef = this.container.createComponent(componentType, {
27
+ injector: this.injector,
28
+ });
29
+ this.setProperties();
30
+ }
31
+ }
32
+ //#region Private Members
33
+ componentRef = null;
34
+ resolveComponentType(type) {
35
+ return this.globalService.getComponent(type);
36
+ }
37
+ resolveProperties() {
38
+ const properties = this.getProperties();
39
+ if (properties) {
40
+ return this.evaluate(properties) ?? {};
41
+ }
42
+ else {
43
+ return {};
44
+ }
45
+ }
46
+ setProperties() {
47
+ if (!this.componentRef)
48
+ return;
49
+ const properties = this.resolveProperties();
50
+ for (const key of Object.keys(properties)) {
51
+ const value = properties[key];
52
+ if (key in this.componentRef.instance) {
53
+ this.componentRef.setInput?.(key, value);
54
+ }
55
+ }
56
+ }
57
+ evaluate(value) {
58
+ const options = {
59
+ cacheable: false,
60
+ extendContext: () => ({
61
+ "event": {
62
+ params: this.params,
63
+ value: this.getValue(),
64
+ data: this.getData(),
65
+ rowIndex: this.getRowIndex()
66
+ }
67
+ })
68
+ };
69
+ return this.programmability.evaluate(this.getFormGroup(), value, options);
70
+ }
71
+ getComponentType() {
72
+ return this.params.componentType;
73
+ }
74
+ getProperties() {
75
+ return this.params.properties;
76
+ }
77
+ getFormGroup() {
78
+ return this.params.formGroup;
79
+ }
80
+ getData() {
81
+ return this.params.data;
82
+ }
83
+ getValue() {
84
+ return this.params.value;
85
+ }
86
+ getRowIndex() {
87
+ return this.params.node.rowIndex;
88
+ }
89
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HostCellRendererComponent, deps: [{ token: i0.Injector }, { token: i1.ProgrammabilityService }, { token: i2.GlobalService }], target: i0.ɵɵFactoryTarget.Component });
90
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: HostCellRendererComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<ng-container #container></ng-container>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }] });
91
+ }
92
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HostCellRendererComponent, decorators: [{
93
+ type: Component,
94
+ args: [{ standalone: true, imports: [
95
+ CommonModule
96
+ ], template: "<ng-container #container></ng-container>\r\n" }]
97
+ }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.ProgrammabilityService }, { type: i2.GlobalService }], propDecorators: { container: [{
98
+ type: ViewChild,
99
+ args: ['container', { read: ViewContainerRef, static: true }]
100
+ }] } });
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdENlbGxSZW5kZXJlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9jb21wb25lbnRzL2hvc3RDZWxsUmVuZGVyZXIvaG9zdENlbGxSZW5kZXJlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9jb21wb25lbnRzL2hvc3RDZWxsUmVuZGVyZXIvaG9zdENlbGxSZW5kZXJlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFFdkMsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBYS9DLE1BQU0sT0FBTyx5QkFBeUI7SUFHaEI7SUFDVjtJQUNBO0lBSndELFNBQVMsQ0FBb0I7SUFFL0YsWUFBb0IsUUFBa0IsRUFDNUIsZUFBdUMsRUFDdkMsYUFBNEI7UUFGbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUM1QixvQkFBZSxHQUFmLGVBQWUsQ0FBd0I7UUFDdkMsa0JBQWEsR0FBYixhQUFhLENBQWU7SUFBSSxDQUFDO0lBRTNDLE1BQU0sQ0FBTTtJQUVaLE1BQU0sQ0FBQyxNQUFXO1FBQ2hCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsZUFBZTtRQUNiLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLElBQUksYUFBYSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUU7Z0JBQ2hFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTthQUN4QixDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFFRCx5QkFBeUI7SUFFakIsWUFBWSxHQUE2QixJQUFJLENBQUM7SUFFOUMsb0JBQW9CLENBQUMsSUFBWTtRQUN2QyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3hDLElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ3hDLENBQUM7YUFFRCxDQUFDO1lBQ0MsT0FBTyxFQUFHLENBQUM7UUFDYixDQUFDO0lBQ0gsQ0FBQztJQUVPLGFBQWE7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTztRQUMvQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUM1QyxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUMxQyxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUIsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDM0MsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU8sUUFBUSxDQUFDLEtBQWE7UUFFNUIsTUFBTSxPQUFPLEdBQW9CO1lBQy9CLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUNwQixPQUFPLEVBQUU7b0JBQ1AsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO29CQUNuQixLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtvQkFDdEIsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQ3BCLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFO2lCQUM3QjthQUNGLENBQUM7U0FDSCxDQUFBO1FBRUQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQztJQUNuQyxDQUFDO0lBRU8sYUFBYTtRQUVuQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO0lBQ2hDLENBQUM7SUFFTyxZQUFZO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7SUFDL0IsQ0FBQztJQUVPLE9BQU87UUFDYixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO0lBQzFCLENBQUM7SUFFTyxRQUFRO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBRU8sV0FBVztRQUNqQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUNuQyxDQUFDO3dHQWxHVSx5QkFBeUI7NEZBQXpCLHlCQUF5QiwySkFDSixnQkFBZ0IsMkNDbEJsRCw4Q0FDQSwyQ0RhSSxZQUFZOzs0RkFHSCx5QkFBeUI7a0JBUHJDLFNBQVM7aUNBRUksSUFBSSxXQUNQO3dCQUNQLFlBQVk7cUJBQ2I7OElBR2lFLFNBQVM7c0JBQTFFLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmLCBBZnRlclZpZXdJbml0LCBDb21wb25lbnRSZWYsIFR5cGVcclxuICAsIEluamVjdG9yXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgSUNlbGxSZW5kZXJlckFuZ3VsYXJDb21wIH0gZnJvbSAnYWctZ3JpZC1hbmd1bGFyJztcclxuaW1wb3J0IHsgUHJvZ3JhbW1hYmlsaXR5U2VydmljZSwgRXZhbHVhdGVPcHRpb25zIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcHJvZ3JhbW1hYmlsaXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHbG9iYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZ2xvYmFsLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hvc3RDZWxsUmVuZGVyZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSG9zdENlbGxSZW5kZXJlckNvbXBvbmVudCBpbXBsZW1lbnRzIElDZWxsUmVuZGVyZXJBbmd1bGFyQ29tcCwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmLCBzdGF0aWM6IHRydWUgfSkgY29udGFpbmVyITogVmlld0NvbnRhaW5lclJlZjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIHByb2dyYW1tYWJpbGl0eTogUHJvZ3JhbW1hYmlsaXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgZ2xvYmFsU2VydmljZTogR2xvYmFsU2VydmljZSkgeyB9XHJcblxyXG4gIHBhcmFtczogYW55O1xyXG5cclxuICBhZ0luaXQocGFyYW1zOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMucGFyYW1zID0gcGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbXBvbmVudFR5cGUgPSB0aGlzLnJlc29sdmVDb21wb25lbnRUeXBlKHRoaXMuZ2V0Q29tcG9uZW50VHlwZSgpKTtcclxuICAgIGlmIChjb21wb25lbnRUeXBlKSB7XHJcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy5jb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudFR5cGUsIHtcclxuICAgICAgICBpbmplY3RvcjogdGhpcy5pbmplY3RvcixcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLnNldFByb3BlcnRpZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBQcml2YXRlIE1lbWJlcnNcclxuXHJcbiAgcHJpdmF0ZSBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHByaXZhdGUgcmVzb2x2ZUNvbXBvbmVudFR5cGUodHlwZTogc3RyaW5nKTogVHlwZTxhbnk+IHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5nbG9iYWxTZXJ2aWNlLmdldENvbXBvbmVudCh0eXBlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzb2x2ZVByb3BlcnRpZXMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XHJcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5nZXRQcm9wZXJ0aWVzKCk7XHJcbiAgICBpZiAocHJvcGVydGllcykge1xyXG4gICAgICByZXR1cm4gdGhpcy5ldmFsdWF0ZShwcm9wZXJ0aWVzKSA/PyB7fVxyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAge1xyXG4gICAgICByZXR1cm4geyB9O1xyXG4gICAgfSAgICBcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0UHJvcGVydGllcygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5jb21wb25lbnRSZWYpIHJldHVybjtcclxuICAgIGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLnJlc29sdmVQcm9wZXJ0aWVzKCk7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhwcm9wZXJ0aWVzKSkge1xyXG4gICAgICBjb25zdCB2YWx1ZSA9IHByb3BlcnRpZXNba2V5XTtcclxuICAgICAgaWYgKGtleSBpbiB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZSkge1xyXG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0Py4oa2V5LCB2YWx1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXZhbHVhdGUodmFsdWU6IHN0cmluZykge1xyXG5cclxuICAgIGNvbnN0IG9wdGlvbnM6IEV2YWx1YXRlT3B0aW9ucyA9IHtcclxuICAgICAgY2FjaGVhYmxlOiBmYWxzZSxcclxuICAgICAgZXh0ZW5kQ29udGV4dDogKCkgPT4gKHtcclxuICAgICAgICBcImV2ZW50XCI6IHtcclxuICAgICAgICAgIHBhcmFtczogdGhpcy5wYXJhbXMsXHJcbiAgICAgICAgICB2YWx1ZTogdGhpcy5nZXRWYWx1ZSgpLFxyXG4gICAgICAgICAgZGF0YTogdGhpcy5nZXREYXRhKCksXHJcbiAgICAgICAgICByb3dJbmRleDogdGhpcy5nZXRSb3dJbmRleCgpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLnByb2dyYW1tYWJpbGl0eS5ldmFsdWF0ZSh0aGlzLmdldEZvcm1Hcm91cCgpLCB2YWx1ZSwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENvbXBvbmVudFR5cGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnBhcmFtcy5jb21wb25lbnRUeXBlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQcm9wZXJ0aWVzKCk6IHN0cmluZyB8IHVuZGVmaW5lZFxyXG4gIHtcclxuICAgIHJldHVybiB0aGlzLnBhcmFtcy5wcm9wZXJ0aWVzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGb3JtR3JvdXAoKTogRm9ybUdyb3VwIHtcclxuICAgIHJldHVybiB0aGlzLnBhcmFtcy5mb3JtR3JvdXA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldERhdGEoKTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLnBhcmFtcy5kYXRhO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRWYWx1ZSgpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMucGFyYW1zLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRSb3dJbmRleCgpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMucGFyYW1zLm5vZGUucm93SW5kZXg7XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb25cclxufVxyXG5cclxuIiwiPG5nLWNvbnRhaW5lciAjY29udGFpbmVyPjwvbmctY29udGFpbmVyPlxyXG4iXX0=
@@ -0,0 +1,27 @@
1
+ import { Component } from '@angular/core';
2
+ import { Texts } from '../../locale/locale-it';
3
+ import * as i0 from "@angular/core";
4
+ export class ObjectURLRendererComponent {
5
+ params;
6
+ Texts = Texts;
7
+ agInit(params) {
8
+ this.params = params;
9
+ }
10
+ onClick(event) {
11
+ const fileURL = URL.createObjectURL(this.params.data);
12
+ window.open(fileURL, '_blank');
13
+ setTimeout(() => {
14
+ URL.revokeObjectURL(fileURL);
15
+ }, 1000);
16
+ }
17
+ refresh() {
18
+ return false;
19
+ }
20
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ObjectURLRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
21
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ObjectURLRendererComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<a [attr.aria-label]=\"Texts.Show\" title=\"{{ Texts.Show }}\" href=\"javascript:void(0)\" (click)=\"onClick($event)\">\r\n <span class=\"fas fa-paperclip\"></span>\r\n</a>\r\n" });
22
+ }
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ObjectURLRendererComponent, decorators: [{
24
+ type: Component,
25
+ args: [{ standalone: true, template: "<a [attr.aria-label]=\"Texts.Show\" title=\"{{ Texts.Show }}\" href=\"javascript:void(0)\" (click)=\"onClick($event)\">\r\n <span class=\"fas fa-paperclip\"></span>\r\n</a>\r\n" }]
26
+ }] });
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0VVJMUmVuZGVyZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvY29tcG9uZW50cy9vYmplY3RVUkxSZW5kZXJlci9vYmplY3RVUkxSZW5kZXJlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9jb21wb25lbnRzL29iamVjdFVSTFJlbmRlcmVyL29iamVjdFVSTFJlbmRlcmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHMUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQU0vQyxNQUFNLE9BQU8sMEJBQTBCO0lBQ3JDLE1BQU0sQ0FBdUI7SUFFN0IsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUVkLE1BQU0sQ0FBQyxNQUEyQjtRQUNoQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQVk7UUFDbEIsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RELE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQy9CLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxHQUFHLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9CLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO3dHQW5CVSwwQkFBMEI7NEZBQTFCLDBCQUEwQix3RUNUdkMsbUxBR0E7OzRGRE1hLDBCQUEwQjtrQkFKdEMsU0FBUztpQ0FFSSxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElDZWxsUmVuZGVyZXJBbmd1bGFyQ29tcCB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XHJcbmltcG9ydCB7IElDZWxsUmVuZGVyZXJQYXJhbXMgfSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XHJcbmltcG9ydCB7IFRleHRzIH0gZnJvbSAnLi4vLi4vbG9jYWxlL2xvY2FsZS1pdCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZVVybDogJy4vb2JqZWN0VVJMUmVuZGVyZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIE9iamVjdFVSTFJlbmRlcmVyQ29tcG9uZW50IGltcGxlbWVudHMgSUNlbGxSZW5kZXJlckFuZ3VsYXJDb21wIHtcclxuICBwYXJhbXMhOiBJQ2VsbFJlbmRlcmVyUGFyYW1zO1xyXG5cclxuICBUZXh0cyA9IFRleHRzO1xyXG5cclxuICBhZ0luaXQocGFyYW1zOiBJQ2VsbFJlbmRlcmVyUGFyYW1zKTogdm9pZCB7XHJcbiAgICB0aGlzLnBhcmFtcyA9IHBhcmFtcztcclxuICB9XHJcblxyXG4gIG9uQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCBmaWxlVVJMID0gVVJMLmNyZWF0ZU9iamVjdFVSTCh0aGlzLnBhcmFtcy5kYXRhKTtcclxuICAgIHdpbmRvdy5vcGVuKGZpbGVVUkwsICdfYmxhbmsnKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKGZpbGVVUkwpO1xyXG4gICAgfSwgMTAwMCk7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxufVxyXG4iLCI8YSBbYXR0ci5hcmlhLWxhYmVsXT1cIlRleHRzLlNob3dcIiB0aXRsZT1cInt7IFRleHRzLlNob3cgfX1cIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiPlxyXG4gIDxzcGFuIGNsYXNzPVwiZmFzIGZhLXBhcGVyY2xpcFwiPjwvc3Bhbj5cclxuPC9hPlxyXG4iXX0=
@@ -0,0 +1,111 @@
1
+ import { Component } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { FormsModule } from '@angular/forms';
4
+ import { SirioInputComponent, SirioCheckboxGroupComponent, SirioCheckboxComponent, SirioButtonComponent } from 'ngx-sirio-lib';
5
+ import { isRecord } from '../../common/record';
6
+ import { Texts } from '../../locale/locale-it';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/common";
9
+ import * as i2 from "@angular/forms";
10
+ export class SetFilterComponent {
11
+ params;
12
+ fieldName;
13
+ Texts = Texts;
14
+ selectAll = true;
15
+ searchText = '';
16
+ options = [];
17
+ filteredOptions = [];
18
+ agInit(params) {
19
+ this.params = params;
20
+ this.fieldName = params.colDef.field;
21
+ const map = params.colDef.filterParams?.map;
22
+ const result = isRecord(map, key => typeof key === 'string' || typeof key === 'number', val => typeof val === 'string');
23
+ if (result) {
24
+ this.options = Object.entries(map).map(([key, label]) => ({
25
+ value: this.parseKey(key),
26
+ label: label,
27
+ selected: true
28
+ }));
29
+ }
30
+ else {
31
+ this.options = [];
32
+ }
33
+ this.filteredOptions = [...this.options];
34
+ }
35
+ isFilterActive() {
36
+ return this.options.some(o => !o.selected);
37
+ }
38
+ doesFilterPass(params) {
39
+ const value = this.resolvePath(params.data, this.fieldName);
40
+ return this.options.some(o => o.selected && o.value === value);
41
+ }
42
+ getModel() {
43
+ const selectedValues = this.options
44
+ .filter(o => o.selected)
45
+ .map(o => o.value);
46
+ if (selectedValues.length === this.options.length) {
47
+ return null;
48
+ }
49
+ if (selectedValues.length === 0) {
50
+ return {
51
+ filterType: 'text',
52
+ type: 'excludeAll'
53
+ };
54
+ }
55
+ const filters = selectedValues.map(value => ({
56
+ filterType: 'number',
57
+ type: 'equals',
58
+ filter: value
59
+ }));
60
+ if (filters.length === 1)
61
+ return filters[0];
62
+ return {
63
+ filterType: 'number',
64
+ operator: 'OR',
65
+ conditions: filters
66
+ };
67
+ }
68
+ setModel(model) {
69
+ const selected = model?.values ?? this.options.map(o => o.value);
70
+ this.options.forEach(o => o.selected = selected.includes(o.value));
71
+ this.updateFilteredOptions();
72
+ }
73
+ onSelectionChange() {
74
+ this.params.filterChangedCallback();
75
+ }
76
+ onSearchChange() {
77
+ this.updateFilteredOptions();
78
+ }
79
+ onSelectAllChange() {
80
+ this.setAll(this.selectAll);
81
+ }
82
+ parseKey(key) {
83
+ if (key === 'true')
84
+ return true;
85
+ if (key === 'false')
86
+ return false;
87
+ const num = Number(key);
88
+ return isNaN(num) ? key : num;
89
+ }
90
+ setAll(select) {
91
+ this.options.forEach(o => o.selected = select);
92
+ this.updateFilteredOptions();
93
+ this.params.filterChangedCallback();
94
+ }
95
+ updateFilteredOptions() {
96
+ const search = this.searchText.toLowerCase();
97
+ this.filteredOptions = this.options.filter(o => o.label.toLowerCase().includes(search));
98
+ }
99
+ resolvePath(obj, path) {
100
+ return path.split('.').reduce((acc, part) => acc?.[part], obj);
101
+ }
102
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SetFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
103
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SetFilterComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<div style=\"padding: 5px;background-color: white;\">\r\n\r\n <div style=\"padding: 5px\">\r\n <ngx-sirio-input type=\"text\"\r\n [placeholder]=\"Texts.TypeToSearch\"\r\n [(ngModel)]=\"searchText\"\r\n (ngModelChange)=\"onSearchChange()\">\r\n </ngx-sirio-input>\r\n </div>\r\n\r\n <div style=\"padding: 5px; max-height: 200px; overflow-y: auto;\">\r\n <ngx-sirio-checkbox [(ngModel)]=\"selectAll\" (ngModelChange)=\"onSelectAllChange()\">{{Texts.SelectAll}}</ngx-sirio-checkbox>\r\n\r\n <ngx-sirio-checkbox-group>\r\n <ngx-sirio-checkbox *ngFor=\"let option of filteredOptions\"\r\n [(ngModel)]=\"option.selected\"\r\n [value]=\"option.value\"\r\n (change)=\"onSelectionChange()\">\r\n {{ option.label }}\r\n </ngx-sirio-checkbox>\r\n </ngx-sirio-checkbox-group>\r\n </div>\r\n\r\n</div>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: SirioInputComponent, selector: "ngx-sirio-input", inputs: ["disabledState", "value", "label", "labelPopover", "ariaLabelPopoverButton", "type", "name", "placeholder", "textHelp", "textFeedback", "rows", "cols", "ariaLabel", "ariaAutocomplete", "ariaInvalid", "ariaDescribedBy", "role"], outputs: ["focusEvent", "inputEvent", "blurEvent", "keyupEvent", "keydownEvent"] }, { kind: "component", type: SirioCheckboxComponent, selector: "ngx-sirio-checkbox", inputs: ["disabled", "name", "textHelp", "textFeedback", "value", "ariaInvalid", "ariaDescribedBy", "disabledState", "checked"], outputs: ["focusEvent", "blurEvent", "changeEvent"] }, { kind: "component", type: SirioCheckboxGroupComponent, selector: "ngx-sirio-checkbox-group", inputs: ["textHelp", "textFeedback", "label", "labelPopover", "ariaLabelPopoverButton", "ariaLabel", "ariaInvalid", "ariaDescribedBy", "disabledState", "value"], outputs: ["focusEvent", "blurEvent", "changeEvent"] }] });
104
+ }
105
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SetFilterComponent, decorators: [{
106
+ type: Component,
107
+ args: [{ standalone: true, imports: [CommonModule, FormsModule, SirioInputComponent,
108
+ SirioCheckboxComponent, SirioCheckboxGroupComponent,
109
+ SirioButtonComponent], template: "<div style=\"padding: 5px;background-color: white;\">\r\n\r\n <div style=\"padding: 5px\">\r\n <ngx-sirio-input type=\"text\"\r\n [placeholder]=\"Texts.TypeToSearch\"\r\n [(ngModel)]=\"searchText\"\r\n (ngModelChange)=\"onSearchChange()\">\r\n </ngx-sirio-input>\r\n </div>\r\n\r\n <div style=\"padding: 5px; max-height: 200px; overflow-y: auto;\">\r\n <ngx-sirio-checkbox [(ngModel)]=\"selectAll\" (ngModelChange)=\"onSelectAllChange()\">{{Texts.SelectAll}}</ngx-sirio-checkbox>\r\n\r\n <ngx-sirio-checkbox-group>\r\n <ngx-sirio-checkbox *ngFor=\"let option of filteredOptions\"\r\n [(ngModel)]=\"option.selected\"\r\n [value]=\"option.value\"\r\n (change)=\"onSelectionChange()\">\r\n {{ option.label }}\r\n </ngx-sirio-checkbox>\r\n </ngx-sirio-checkbox-group>\r\n </div>\r\n\r\n</div>\r\n" }]
110
+ }] });
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0RmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL2NvbXBvbmVudHMvc2V0RmlsdGVyL3NldEZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9jb21wb25lbnRzL3NldEZpbHRlci9zZXRmaWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSwyQkFBMkIsRUFBRSxzQkFBc0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7O0FBUy9DLE1BQU0sT0FBTyxrQkFBa0I7SUFDckIsTUFBTSxDQUFpQjtJQUN2QixTQUFTLENBQVU7SUFFM0IsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUVkLFNBQVMsR0FBWSxJQUFJLENBQUM7SUFDMUIsVUFBVSxHQUFXLEVBQUUsQ0FBQztJQUV4QixPQUFPLEdBQXVELEVBQUUsQ0FBQztJQUNqRSxlQUFlLEdBQXdCLEVBQUUsQ0FBQztJQUUxQyxNQUFNLENBQUMsTUFBcUI7UUFDMUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQU0sQ0FBQztRQUV0QyxNQUFNLEdBQUcsR0FBRyxNQUFN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LEVBQUUsQ0FDN0MsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQ3ZDLENBQUM7SUFDSixDQUFDO0lBRU8sV0FBVyxDQUFDLEdBQVEsRUFBRSxJQUFZO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNqRSxDQUFDO3dHQXZIVSxrQkFBa0I7NEZBQWxCLGtCQUFrQix3RUNoQi9CLHE4QkF3QkEsMkNEWlksWUFBWSwySkFBRSxXQUFXLCtWQUFFLG1CQUFtQiwyWEFDcEQsc0JBQXNCLHFQQUFFLDJCQUEyQjs7NEZBRzVDLGtCQUFrQjtrQkFQOUIsU0FBUztpQ0FFSSxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLG1CQUFtQjt3QkFDcEQsc0JBQXNCLEVBQUUsMkJBQTJCO3dCQUNuRCxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgSUZpbHRlclBhcmFtcywgSURvZXNGaWx0ZXJQYXNzUGFyYW1zIH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xyXG5pbXBvcnQgeyBJRmlsdGVyQW5ndWxhckNvbXAgfSBmcm9tICdAYWctZ3JpZC1jb21tdW5pdHkvYW5ndWxhcic7XHJcbmltcG9ydCB7IFNpcmlvSW5wdXRDb21wb25lbnQsIFNpcmlvQ2hlY2tib3hHcm91cENvbXBvbmVudCwgU2lyaW9DaGVja2JveENvbXBvbmVudCwgU2lyaW9CdXR0b25Db21wb25lbnQgfSBmcm9tICduZ3gtc2lyaW8tbGliJztcclxuaW1wb3J0IHsgaXNSZWNvcmQgfSBmcm9tICcuLi8uLi9jb21tb24vcmVjb3JkJztcclxuaW1wb3J0IHsgVGV4dHMgfSBmcm9tICcuLi8uLi9sb2NhbGUvbG9jYWxlLWl0JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlVXJsOiAnLi9zZXRmaWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIFNpcmlvSW5wdXRDb21wb25lbnRcclxuICAgICwgU2lyaW9DaGVja2JveENvbXBvbmVudCwgU2lyaW9DaGVja2JveEdyb3VwQ29tcG9uZW50XHJcbiAgICAsIFNpcmlvQnV0dG9uQ29tcG9uZW50XSwgIFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2V0RmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgSUZpbHRlckFuZ3VsYXJDb21wIHtcclxuICBwcml2YXRlIHBhcmFtcyE6IElGaWx0ZXJQYXJhbXM7XHJcbiAgcHJpdmF0ZSBmaWVsZE5hbWUhOiBzdHJpbmc7XHJcblxyXG4gIFRleHRzID0gVGV4dHM7XHJcblxyXG4gIHNlbGVjdEFsbDogYm9vbGVhbiA9IHRydWU7XHJcbiAgc2VhcmNoVGV4dDogc3RyaW5nID0gJyc7XHJcblxyXG4gIG9wdGlvbnM6IHsgdmFsdWU6IGFueTsgbGFiZWw6IHN0cmluZzsgc2VsZWN0ZWQ6IGJvb2xlYW4gfVtdID0gW107XHJcbiAgZmlsdGVyZWRPcHRpb25zOiB0eXBlb2YgdGhpcy5vcHRpb25zID0gW107XHJcblxyXG4gIGFnSW5pdChwYXJhbXM6IElGaWx0ZXJQYXJhbXMpOiB2b2lkIHtcclxuICAgIHRoaXMucGFyYW1zID0gcGFyYW1zO1xyXG4gICAgdGhpcy5maWVsZE5hbWUgPSBwYXJhbXMuY29sRGVmLmZpZWxkITtcclxuXHJcbiAgICBjb25zdCBtYXAgPSBwYXJhbXMuY29sRGVmLmZpbHRlclBhcmFtcz8ubWFwO1xyXG5cclxuICAgIGNvbnN0IHJlc3VsdCA9IGlzUmVjb3JkKFxyXG4gICAgICBtYXAsXHJcbiAgICAgIGtleSA9PiB0eXBlb2Yga2V5ID09PSAnc3RyaW5nJyB8fCB0eXBlb2Yga2V5ID09PSAnbnVtYmVyJyxcclxuICAgICAgdmFsID0+IHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnXHJcbiAgICApO1xyXG5cclxuICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgdGhpcy5vcHRpb25zID0gT2JqZWN0LmVudHJpZXMobWFwKS5tYXAoKFtrZXksIGxhYmVsXSkgPT4gKHtcclxuICAgICAgICB2YWx1ZTogdGhpcy5wYXJzZUtleShrZXkpLFxyXG4gICAgICAgIGxhYmVsOiBsYWJlbCxcclxuICAgICAgICBzZWxlY3RlZDogdHJ1ZVxyXG4gICAgICB9KSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5vcHRpb25zID0gW107XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gWy4uLnRoaXMub3B0aW9uc107XHJcbiAgfVxyXG5cclxuICBpc0ZpbHRlckFjdGl2ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc29tZShvID0+ICFvLnNlbGVjdGVkKTtcclxuICB9XHJcblxyXG4gIGRvZXNGaWx0ZXJQYXNzKHBhcmFtczogSURvZXNGaWx0ZXJQYXNzUGFyYW1zKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMucmVzb2x2ZVBhdGgocGFyYW1zLmRhdGEsIHRoaXMuZmllbGROYW1lKTtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc29tZShvID0+IG8uc2VsZWN0ZWQgJiYgby52YWx1ZSA9PT0gdmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TW9kZWwoKSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZFZhbHVlcyA9IHRoaXMub3B0aW9uc1xyXG4gICAgICAuZmlsdGVyKG8gPT4gby5zZWxlY3RlZClcclxuICAgICAgLm1hcChvID0+IG8udmFsdWUpO1xyXG5cclxuICAgIGlmIChzZWxlY3RlZFZhbHVlcy5sZW5ndGggPT09IHRoaXMub3B0aW9ucy5sZW5ndGgpIHsgXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzZWxlY3RlZFZhbHVlcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBmaWx0ZXJUeXBlOiAndGV4dCcsXHJcbiAgICAgICAgdHlwZTogJ2V4Y2x1ZGVBbGwnXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmaWx0ZXJzID0gc2VsZWN0ZWRWYWx1ZXMubWFwKHZhbHVlID0+ICh7XHJcbiAgICAgIGZpbHRlclR5cGU6ICdudW1iZXInLFxyXG4gICAgICB0eXBlOiAnZXF1YWxzJyxcclxuICAgICAgZmlsdGVyOiB2YWx1ZVxyXG4gICAgfSkpO1xyXG5cclxuICAgIGlmIChmaWx0ZXJzLmxlbmd0aCA9PT0gMSlcclxuICAgICAgcmV0dXJuIGZpbHRlcnNbMF07XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZmlsdGVyVHlwZTogJ251bWJlcicsXHJcbiAgICAgIG9wZXJhdG9yOiAnT1InLFxyXG4gICAgICBjb25kaXRpb25zOiBmaWx0ZXJzXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRNb2RlbChtb2RlbDogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBzZWxlY3RlZCA9IG1vZGVsPy52YWx1ZXMgPz8gdGhpcy5vcHRpb25zLm1hcChvID0+IG8udmFsdWUpO1xyXG4gICAgdGhpcy5vcHRpb25zLmZvckVhY2gobyA9PiBvLnNlbGVjdGVkID0gc2VsZWN0ZWQuaW5jbHVkZXMoby52YWx1ZSkpO1xyXG4gICAgdGhpcy51cGRhdGVGaWx0ZXJlZE9wdGlvbnMoKTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0aW9uQ2hhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5wYXJhbXMuZmlsdGVyQ2hhbmdlZENhbGxiYWNrKCk7XHJcbiAgfVxyXG5cclxuICBvblNlYXJjaENoYW5nZSgpOiB2b2lkIHtcclxuICAgIHRoaXMudXBkYXRlRmlsdGVyZWRPcHRpb25zKCk7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdEFsbENoYW5nZSgpOiB2b2lkIHsgICAgXHJcbiAgICB0aGlzLnNldEFsbCh0aGlzLnNlbGVjdEFsbCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBhcnNlS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB8IG51bWJlciB8IHN0cmluZyB7XHJcbiAgICBpZiAoa2V5ID09PSAndHJ1ZScpIHJldHVybiB0cnVlO1xyXG4gICAgaWYgKGtleSA9PT0gJ2ZhbHNlJykgcmV0dXJuIGZhbHNlO1xyXG4gICAgY29uc3QgbnVtID0gTnVtYmVyKGtleSk7XHJcbiAgICByZXR1cm4gaXNOYU4obnVtKSA/IGtleSA6IG51bTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0QWxsKHNlbGVjdDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5vcHRpb25zLmZvckVhY2gobyA9PiBvLnNlbGVjdGVkID0gc2VsZWN0KTtcclxuICAgIHRoaXMudXBkYXRlRmlsdGVyZWRPcHRpb25zKCk7XHJcbiAgICB0aGlzLnBhcmFtcy5maWx0ZXJDaGFuZ2VkQ2FsbGJhY2soKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRmlsdGVyZWRPcHRpb25zKCk6IHZvaWQge1xyXG4gICAgY29uc3Qgc2VhcmNoID0gdGhpcy5zZWFyY2hUZXh0LnRvTG93ZXJDYXNlKCk7XHJcbiAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMub3B0aW9ucy5maWx0ZXIobyA9PlxyXG4gICAgICBvLmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzb2x2ZVBhdGgob2JqOiBhbnksIHBhdGg6IHN0cmluZyk6IGFueSB7XHJcbiAgICByZXR1cm4gcGF0aC5zcGxpdCgnLicpLnJlZHVjZSgoYWNjLCBwYXJ0KSA9PiBhY2M/LltwYXJ0XSwgb2JqKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBzdHlsZT1cInBhZGRpbmc6IDVweDtiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcIj5cclxuXHJcbiAgPGRpdiBzdHlsZT1cInBhZGRpbmc6IDVweFwiPlxyXG4gICAgPG5neC1zaXJpby1pbnB1dCB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJUZXh0cy5UeXBlVG9TZWFyY2hcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblNlYXJjaENoYW5nZSgpXCI+XHJcbiAgICA8L25neC1zaXJpby1pbnB1dD5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBzdHlsZT1cInBhZGRpbmc6IDVweDsgbWF4LWhlaWdodDogMjAwcHg7IG92ZXJmbG93LXk6IGF1dG87XCI+XHJcbiAgICA8bmd4LXNpcmlvLWNoZWNrYm94IFsobmdNb2RlbCldPVwic2VsZWN0QWxsXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWxlY3RBbGxDaGFuZ2UoKVwiPnt7VGV4dHMuU2VsZWN0QWxsfX08L25neC1zaXJpby1jaGVja2JveD5cclxuXHJcbiAgICA8bmd4LXNpcmlvLWNoZWNrYm94LWdyb3VwPlxyXG4gICAgICA8bmd4LXNpcmlvLWNoZWNrYm94ICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyZWRPcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm9wdGlvbi5zZWxlY3RlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgpXCI+XHJcbiAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XHJcbiAgICAgIDwvbmd4LXNpcmlvLWNoZWNrYm94PlxyXG4gICAgPC9uZ3gtc2lyaW8tY2hlY2tib3gtZ3JvdXA+XHJcbiAgPC9kaXY+XHJcblxyXG48L2Rpdj5cclxuIl19
@@ -6,12 +6,18 @@ import { SirioDialogComponent, SirioDialogBodyComponent, SirioDialogHeaderCompon
6
6
  import { Texts } from '../locale/locale';
7
7
  import { localize } from '../locale/localize';
8
8
  import * as i0 from "@angular/core";
9
- import * as i1 from "@angular/common";
9
+ import * as i1 from "@wemake4u/interact";
10
+ import * as i2 from "@angular/common";
10
11
  export class DialogComponent extends SirioDialogElement {
12
+ languageService;
11
13
  formHost;
12
14
  formRef;
13
15
  dynamicFormType;
14
16
  Texts = Texts;
17
+ constructor(languageService) {
18
+ super();
19
+ this.languageService = languageService;
20
+ }
15
21
  ngOnInit() {
16
22
  this.options = this.data.options ?? {};
17
23
  this.currentValue = this.options.value;
@@ -24,7 +30,6 @@ export class DialogComponent extends SirioDialogElement {
24
30
  const componentRef = this.formHost.createComponent(this.dynamicFormType, { injector });
25
31
  const instance = componentRef.instance;
26
32
  componentRef.setInput('schema', this.data.formSchema);
27
- componentRef.setInput('language', this.data.language);
28
33
  componentRef.setInput('value', this.options.value ?? {});
29
34
  componentRef.setInput('showNav', this.options.showNav ?? false);
30
35
  componentRef.setInput('showNavButton', this.options.showNavButton ?? false);
@@ -63,13 +68,16 @@ export class DialogComponent extends SirioDialogElement {
63
68
  return (this.formRef?.instance?.formGroup?.valid ?? true) !== true;
64
69
  }
65
70
  locale(component, key) {
66
- return localize(this.options.language ?? '', component, key);
71
+ return localize(this.language, component, key);
67
72
  }
68
73
  destroy$ = new Subject();
69
74
  currentValue;
70
75
  setCurrentValue(value) {
71
76
  this.currentValue = value;
72
77
  }
78
+ get language() {
79
+ return this.languageService.getLanguage();
80
+ }
73
81
  SendResult(action) {
74
82
  if (typeof this.options.onResult === 'function') {
75
83
  const result = {
@@ -79,8 +87,8 @@ export class DialogComponent extends SirioDialogElement {
79
87
  this.options.onResult(result);
80
88
  }
81
89
  }
82
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DialogComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
83
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DialogComponent, isStandalone: true, selector: "dynamic-dialog", viewQueries: [{ propertyName: "formHost", first: true, predicate: ["formHost"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, ngImport: i0, template: "<ngx-sirio-dialog (closeEvent)=\"doClose()\"\r\n dialog\r\n [type]=\"options.type ?? 'info'\"\r\n [size]=\"options.size ?? 'default'\"\r\n [isDrawer]=\"options.isDrawer ?? false\"\r\n [withCloseButton]=\"showCloseButton()\">\r\n\r\n <ngx-sirio-dialog-header [hidden]=\"!showHeader()\">\r\n <ngx-sirio-dialog-title [hidden]=\"!showTitle()\">{{ options.title }}</ngx-sirio-dialog-title>\r\n </ngx-sirio-dialog-header>\r\n\r\n <ngx-sirio-dialog-body>\r\n <ng-template #formHost></ng-template>\r\n </ngx-sirio-dialog-body>\r\n\r\n <ngx-sirio-dialog-footer *ngIf=\"showFooter()\">\r\n <ng-container [ngSwitch]=\"options.buttons\">\r\n <!-- OK -->\r\n <ng-container *ngSwitchCase=\"'OK'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'OK' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: OKCancel -->\r\n <ng-container *ngSwitchCase=\"'OKCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'OK' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: ConfirmClose -->\r\n <ng-container *ngSwitchCase=\"'ConfirmCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Confirm' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: AbortRetryIgnore -->\r\n <ng-container *ngSwitchCase=\"'AbortRetryIgnore'\">\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Abort' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Retry' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Ignore' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: YesNoCancel -->\r\n <ng-container *ngSwitchCase=\"'YesNoCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Yes' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'No' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: YesNo -->\r\n <ng-container *ngSwitchCase=\"'YesNo'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Yes' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'No' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: RetryCancel -->\r\n <ng-container *ngSwitchCase=\"'RetryCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Retry' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: CancelTryContinue -->\r\n <ng-container *ngSwitchCase=\"'CancelTryContinue'\">\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Try' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Continue' }\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <!-- Templates -->\r\n <ng-template #confirmTemplate let-action=\"action\">\r\n <ngx-sirio-button (clickEvent)=\"doAction(action)\"\r\n [disabled]=\"isInvalid()\"\r\n color=\"primary\">\r\n {{ locale(Texts, action) }}\r\n </ngx-sirio-button>\r\n </ng-template>\r\n <ng-template #closeTemplate let-action=\"action\">\r\n <ngx-sirio-button (clickEvent)=\"doAction(action)\"\r\n color=\"secondary\">\r\n {{ locale(Texts, action) }}\r\n </ngx-sirio-button>\r\n </ng-template>\r\n\r\n </ngx-sirio-dialog-footer>\r\n\r\n</ngx-sirio-dialog>\r\n", styles: ["::ng-deep .sirio-dialog{background-color:#0000007f!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: DialogDirective, selector: "[dialog]" }, { kind: "component", type: SirioDialogComponent, selector: "ngx-sirio-dialog", inputs: ["type", "size", "drawerContext", "withCloseButton", "isDrawer", "dialogId"], outputs: ["closeEvent", "confirmEvent"] }, { kind: "component", type: SirioDialogBodyComponent, selector: "ngx-sirio-dialog-body" }, { kind: "component", type: SirioDialogHeaderComponent, selector: "ngx-sirio-dialog-header", inputs: ["closeButtonAriaLabel"], outputs: ["closeEvent"] }, { kind: "component", type: SirioDialogFooterComponent, selector: "ngx-sirio-dialog-footer", inputs: ["actionsLabel"], outputs: ["closeEvent", "confirmEvent"] }, { kind: "component", type: SirioButtonComponent, selector: "ngx-sirio-button", inputs: ["ariaExpanded", "ariaControls", "ariaActivedescendant", "ariaHaspopup", "ariaLabel", "ariaRequired", "ariaInvalid", "ariaDescribedby", "icon", "title", "role", "color", "isFloating", "isExtended", "isLight", "isSmall", "disabled", "isDropdown", "type", "dismissType", "isBtnBlock"], outputs: ["clickEvent", "focusEvent", "blurEvent"] }, { kind: "component", type: SirioDialogTitleComponent, selector: "ngx-sirio-dialog-title" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
90
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DialogComponent, deps: [{ token: i1.LanguageService }], target: i0.ɵɵFactoryTarget.Component });
91
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DialogComponent, isStandalone: true, selector: "dynamic-dialog", viewQueries: [{ propertyName: "formHost", first: true, predicate: ["formHost"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, ngImport: i0, template: "<ngx-sirio-dialog (closeEvent)=\"doClose()\"\r\n dialog\r\n [type]=\"options.type ?? 'info'\"\r\n [size]=\"options.size ?? 'default'\"\r\n [isDrawer]=\"options.isDrawer ?? false\"\r\n [withCloseButton]=\"showCloseButton()\">\r\n\r\n <ngx-sirio-dialog-header [hidden]=\"!showHeader()\">\r\n <ngx-sirio-dialog-title [hidden]=\"!showTitle()\">{{ options.title }}</ngx-sirio-dialog-title>\r\n </ngx-sirio-dialog-header>\r\n\r\n <ngx-sirio-dialog-body>\r\n <ng-template #formHost></ng-template>\r\n </ngx-sirio-dialog-body>\r\n\r\n <ngx-sirio-dialog-footer *ngIf=\"showFooter()\">\r\n <ng-container [ngSwitch]=\"options.buttons\">\r\n <!-- OK -->\r\n <ng-container *ngSwitchCase=\"'OK'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'OK' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: OKCancel -->\r\n <ng-container *ngSwitchCase=\"'OKCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'OK' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: ConfirmClose -->\r\n <ng-container *ngSwitchCase=\"'ConfirmCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Confirm' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: AbortRetryIgnore -->\r\n <ng-container *ngSwitchCase=\"'AbortRetryIgnore'\">\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Abort' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Retry' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Ignore' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: YesNoCancel -->\r\n <ng-container *ngSwitchCase=\"'YesNoCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Yes' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'No' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: YesNo -->\r\n <ng-container *ngSwitchCase=\"'YesNo'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Yes' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'No' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: RetryCancel -->\r\n <ng-container *ngSwitchCase=\"'RetryCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Retry' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: CancelTryContinue -->\r\n <ng-container *ngSwitchCase=\"'CancelTryContinue'\">\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Try' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Continue' }\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <!-- Templates -->\r\n <ng-template #confirmTemplate let-action=\"action\">\r\n <ngx-sirio-button (clickEvent)=\"doAction(action)\"\r\n [disabled]=\"isInvalid()\"\r\n color=\"primary\">\r\n {{ locale(Texts, action) }}\r\n </ngx-sirio-button>\r\n </ng-template>\r\n <ng-template #closeTemplate let-action=\"action\">\r\n <ngx-sirio-button (clickEvent)=\"doAction(action)\"\r\n color=\"secondary\">\r\n {{ locale(Texts, action) }}\r\n </ngx-sirio-button>\r\n </ng-template>\r\n\r\n </ngx-sirio-dialog-footer>\r\n\r\n</ngx-sirio-dialog>\r\n", styles: ["::ng-deep .sirio-dialog{background-color:#0000007f!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: DialogDirective, selector: "[dialog]" }, { kind: "component", type: SirioDialogComponent, selector: "ngx-sirio-dialog", inputs: ["type", "size", "drawerContext", "withCloseButton", "isDrawer", "dialogId"], outputs: ["closeEvent", "confirmEvent"] }, { kind: "component", type: SirioDialogBodyComponent, selector: "ngx-sirio-dialog-body" }, { kind: "component", type: SirioDialogHeaderComponent, selector: "ngx-sirio-dialog-header", inputs: ["closeButtonAriaLabel"], outputs: ["closeEvent"] }, { kind: "component", type: SirioDialogFooterComponent, selector: "ngx-sirio-dialog-footer", inputs: ["actionsLabel"], outputs: ["closeEvent", "confirmEvent"] }, { kind: "component", type: SirioButtonComponent, selector: "ngx-sirio-button", inputs: ["ariaExpanded", "ariaControls", "ariaActivedescendant", "ariaHaspopup", "ariaLabel", "ariaRequired", "ariaInvalid", "ariaDescribedby", "icon", "title", "role", "color", "isFloating", "isExtended", "isLight", "isSmall", "disabled", "isDropdown", "type", "dismissType", "isBtnBlock"], outputs: ["clickEvent", "focusEvent", "blurEvent"] }, { kind: "component", type: SirioDialogTitleComponent, selector: "ngx-sirio-dialog-title" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
84
92
  }
85
93
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DialogComponent, decorators: [{
86
94
  type: Component,
@@ -95,8 +103,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
95
103
  SirioDialogActionDirective,
96
104
  SirioDialogTitleComponent
97
105
  ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ngx-sirio-dialog (closeEvent)=\"doClose()\"\r\n dialog\r\n [type]=\"options.type ?? 'info'\"\r\n [size]=\"options.size ?? 'default'\"\r\n [isDrawer]=\"options.isDrawer ?? false\"\r\n [withCloseButton]=\"showCloseButton()\">\r\n\r\n <ngx-sirio-dialog-header [hidden]=\"!showHeader()\">\r\n <ngx-sirio-dialog-title [hidden]=\"!showTitle()\">{{ options.title }}</ngx-sirio-dialog-title>\r\n </ngx-sirio-dialog-header>\r\n\r\n <ngx-sirio-dialog-body>\r\n <ng-template #formHost></ng-template>\r\n </ngx-sirio-dialog-body>\r\n\r\n <ngx-sirio-dialog-footer *ngIf=\"showFooter()\">\r\n <ng-container [ngSwitch]=\"options.buttons\">\r\n <!-- OK -->\r\n <ng-container *ngSwitchCase=\"'OK'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'OK' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: OKCancel -->\r\n <ng-container *ngSwitchCase=\"'OKCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'OK' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: ConfirmClose -->\r\n <ng-container *ngSwitchCase=\"'ConfirmCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Confirm' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: AbortRetryIgnore -->\r\n <ng-container *ngSwitchCase=\"'AbortRetryIgnore'\">\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Abort' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Retry' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Ignore' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: YesNoCancel -->\r\n <ng-container *ngSwitchCase=\"'YesNoCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Yes' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'No' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: YesNo -->\r\n <ng-container *ngSwitchCase=\"'YesNo'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Yes' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'No' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: RetryCancel -->\r\n <ng-container *ngSwitchCase=\"'RetryCancel'\">\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Retry' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n </ng-container>\r\n <!-- Caso: CancelTryContinue -->\r\n <ng-container *ngSwitchCase=\"'CancelTryContinue'\">\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Cancel' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"confirmTemplate; context: { action: 'Try' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"closeTemplate; context: { action: 'Continue' }\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <!-- Templates -->\r\n <ng-template #confirmTemplate let-action=\"action\">\r\n <ngx-sirio-button (clickEvent)=\"doAction(action)\"\r\n [disabled]=\"isInvalid()\"\r\n color=\"primary\">\r\n {{ locale(Texts, action) }}\r\n </ngx-sirio-button>\r\n </ng-template>\r\n <ng-template #closeTemplate let-action=\"action\">\r\n <ngx-sirio-button (clickEvent)=\"doAction(action)\"\r\n color=\"secondary\">\r\n {{ locale(Texts, action) }}\r\n </ngx-sirio-button>\r\n </ng-template>\r\n\r\n </ngx-sirio-dialog-footer>\r\n\r\n</ngx-sirio-dialog>\r\n", styles: ["::ng-deep .sirio-dialog{background-color:#0000007f!important}\n"] }]
98
- }], propDecorators: { formHost: [{
106
+ }], ctorParameters: () => [{ type: i1.LanguageService }], propDecorators: { formHost: [{
99
107
  type: ViewChild,
100
108
  args: ['formHost', { read: ViewContainerRef, static: true }]
101
109
  }] } });
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZGlhbG9nL2RpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUFFLHVCQUF1QixFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFDaEUsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQ0wsb0JBQW9CLEVBQUUsd0JBQXdCLEVBQUUsMEJBQTBCLEVBQ3hFLDBCQUEwQixFQUFFLG9CQUFvQixFQUFFLDBCQUEwQixFQUM1RSx5QkFBeUIsRUFBRSxrQkFBa0IsRUFDaEQsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7O0FBb0I5QyxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxrQkFBa0I7SUFFN0MsUUFBUSxDQUFvQjtJQUM1QixPQUFPLENBQW9CO0lBQzNCLGVBQWUsQ0FBYTtJQUNwQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBRWQsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxL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QUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0NvbnRhaW5lclJlZiwgVmlld0NoaWxkLCBDb21wb25lbnRSZWYsIFR5cGVcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEZvcm1EaWFsb2dPcHRpb25zLCBEaWFsb2dBY3Rpb24sIERpYWxvZ1Jlc3VsdCB9IGZyb20gJy4uL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlhbG9nRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9kaWFsb2cuZGlyZWN0aXZlJztcclxuaW1wb3J0IHtcclxuICBTaXJpb0RpYWxvZ0NvbXBvbmVudCwgU2lyaW9EaWFsb2dCb2R5Q29tcG9uZW50LCBTaXJpb0RpYWxvZ0hlYWRlckNvbXBvbmVudFxyXG4gICwgU2lyaW9EaWFsb2dGb290ZXJDb21wb25lbnQsIFNpcmlvQnV0dG9uQ29tcG9uZW50LCBTaXJpb0RpYWxvZ0FjdGlvbkRpcmVjdGl2ZVxyXG4gICwgU2lyaW9EaWFsb2dUaXRsZUNvbXBvbmVudCwgU2lyaW9EaWFsb2dFbGVtZW50XHJcbn0gZnJvbSAnbmd4LXNpcmlvLWxpYic7XHJcblxyXG5pbXBvcnQgeyBUZXh0cyB9IGZyb20gJy4uL2xvY2FsZS9sb2NhbGUnO1xyXG5pbXBvcnQgeyBsb2NhbGl6ZSB9IGZyb20gJy4uL2xvY2FsZS9sb2NhbGl6ZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2R5bmFtaWMtZGlhbG9nJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIERpYWxvZ0RpcmVjdGl2ZSxcclxuICAgIFNpcmlvRGlhbG9nQ29tcG9uZW50LFxyXG4gICAgU2lyaW9EaWFsb2dCb2R5Q29tcG9uZW50LFxyXG4gICAgU2lyaW9EaWFsb2dIZWFkZXJDb21wb25lbnQsXHJcbiAgICBTaXJpb0RpYWxvZ0Zvb3RlckNvbXBvbmVudCxcclxuICAgIFNpcmlvQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgU2lyaW9EaWFsb2dBY3Rpb25EaXJlY3RpdmUsXHJcbiAgICBTaXJpb0RpYWxvZ1RpdGxlQ29tcG9uZW50ICAgIFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2RpYWxvZy5jb21wb25lbnQuY3NzJyxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGlhbG9nQ29tcG9uZW50IGV4dGVuZHMgU2lyaW9EaWFsb2dFbGVtZW50IHtcclxuICBAVmlld0NoaWxkKCdmb3JtSG9zdCcsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pXHJcbiAgcHJpdmF0ZSBmb3JtSG9zdCE6IFZpZXdDb250YWluZXJSZWY7XHJcbiAgcHJpdmF0ZSBmb3JtUmVmITogQ29tcG9uZW50UmVmPGFueT5cclxuICBwcml2YXRlIGR5bmFtaWNGb3JtVHlwZSE6IFR5cGU8YW55PjtcclxuICBUZXh0cyA9IFRleHRzO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuZGF0YS5vcHRpb25zID8/IHt9O1xyXG4gICAgdGhpcy5jdXJyZW50VmFsdWUgPSB0aGlzLm9wdGlvbnMudmFsdWU7XHJcbiAgICB0aGlzLmR5bmFtaWNGb3JtVHlwZSA9IHRoaXMuZGF0YS5keW5hbWljRm9ybVR5cGU7XHJcbiAgfVxyXG5cclxuICBvcHRpb25zOiBGb3JtRGlhbG9nT3B0aW9ucyA9IHsgfTtcclxuICBcclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcblxyXG4gICAgbGV0IGluamVjdG9yID0gdGhpcy5vcHRpb25zLmluamVjdG9yXHJcbiAgICAgID8/IHRoaXMuZm9ybUhvc3QuaW5qZWN0b3I7XHJcblxyXG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5mb3JtSG9zdC5jcmVhdGVDb21wb25lbnQodGhpcy5keW5hbWljRm9ybVR5cGUsIHsgaW5qZWN0b3IgfSk7XHJcbiAgICBjb25zdCBpbnN0YW5jZSA9IGNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBhbnk7XHJcblxyXG4gICAgY29tcG9uZW50UmVmLnNldElucHV0KCdzY2hlbWEnLCB0aGlzLmRhdGEuZm9ybVNjaGVtYSk7XHJcbiAgICBjb21wb25lbnRSZWYuc2V0SW5wdXQoJ2xhbmd1YWdlJywgdGhpcy5kYXRhLmxhbmd1YWdlKTtcclxuICAgIGNvbXBvbmVudFJlZi5zZXRJbnB1dCgndmFsdWUnLCB0aGlzLm9wdGlvbnMudmFsdWUgPz8geyB9KTtcclxuICAgIGNvbXBvbmVudFJlZi5zZXRJbnB1dCgnc2hvd05hdicsIHRoaXMub3B0aW9ucy5zaG93TmF2ID8/IGZhbHNlKTtcclxuICAgIGNvbXBvbmVudFJlZi5zZXRJbnB1dCgnc2hvd05hdkJ1dHRvbicsIHRoaXMub3B0aW9ucy5zaG93TmF2QnV0dG9uID8/IGZhbHNlKTtcclxuICAgIGNvbXBvbmVudFJlZi5zZXRJbnB1dCgnc2hvd1Byb2dyZXNzJywgdGhpcy5vcHRpb25zLnNob3dQcm9ncmVzcyA/PyBmYWxzZSk7XHJcbiAgICBjb21wb25lbnRSZWYuc2V0SW5wdXQoJ3Nob3dGb3JtVGl0bGUnLCB0aGlzLm9wdGlvbnMuc2hvd0Zvcm1UaXRsZSA/PyBmYWxzZSk7XHJcblxyXG4gICAgaW5zdGFuY2UudmFsdWVDaGFuZ2VcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogYW55KSA9PiB0aGlzLnNldEN1cnJlbnRWYWx1ZSh2YWx1ZSkpO1xyXG5cclxuICAgIHRoaXMuZm9ybVJlZiA9IGNvbXBvbmVudFJlZjtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBkb0Nsb3NlKCkge1xyXG4gICAgdGhpcy5kb0FjdGlvbignQ2xvc2UnKTtcclxuICB9XHJcblxyXG4gIGRvQWN0aW9uKGFjdGlvbjogRGlhbG9nQWN0aW9uKSB7XHJcbiAgICB0aGlzLnNpcmlvRGlhbG9nU2VydmljZS5jbG9zZURpYWxvZygpO1xyXG4gICAgdGhpcy5TZW5kUmVzdWx0KGFjdGlvbik7ICAgIFxyXG4gIH1cclxuXHJcbiAgc2hvd0hlYWRlcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNob3dUaXRsZSgpIHx8IHRoaXMuc2hvd0Nsb3NlQnV0dG9uKCk7ICAgIFxyXG4gIH1cclxuXHJcbiAgc2hvd1RpdGxlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy50aXRsZSA/IHRydWU6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgc2hvd0Nsb3NlQnV0dG9uKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5vcHRpb25zLmNsb3NlQnV0dG9uID09PSB0cnVlO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHNob3dGb290ZXIoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmJ1dHRvbnMgIT09IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIGlzSW52YWxpZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAodGhpcy5mb3JtUmVmPy5pbnN0YW5jZT8uZm9ybUdyb3VwPy52YWxpZCA/PyB0cnVlKSAhPT0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGxvY2FsZShjb21wb25lbnQ6IGFueSwga2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGxvY2FsaXplKHRoaXMub3B0aW9ucy5sYW5ndWFnZSA/PyAnJywgY29tcG9uZW50LCBrZXkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIHByaXZhdGUgY3VycmVudFZhbHVlOiBhbnk7XHJcblxyXG4gIHByaXZhdGUgc2V0Q3VycmVudFZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuY3VycmVudFZhbHVlID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIFNlbmRSZXN1bHQoYWN0aW9uOiBEaWFsb2dBY3Rpb24pIHtcclxuICAgIGlmICh0eXBlb2YgdGhpcy5vcHRpb25zLm9uUmVzdWx0ID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdDogRGlhbG9nUmVzdWx0ID0ge1xyXG4gICAgICAgIGFjdGlvbjogYWN0aW9uLFxyXG4gICAgICAgIHZhbHVlOiB0aGlzLmN1cnJlbnRWYWx1ZVxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLm9wdGlvbnMub25SZXN1bHQocmVzdWx0KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPG5neC1zaXJpby1kaWFsb2cgKGNsb3NlRXZlbnQpPVwiZG9DbG9zZSgpXCJcclxuICAgICAgICAgICAgICAgICAgZGlhbG9nXHJcbiAgICAgICAgICAgICAgICAgIFt0eXBlXT1cIm9wdGlvbnMudHlwZSA/PyAnaW5mbydcIlxyXG4gICAgICAgICAgICAgICAgICBbc2l6ZV09XCJvcHRpb25zLnNpemUgPz8gJ2RlZmF1bHQnXCJcclxuICAgICAgICAgICAgICAgICAgW2lzRHJhd2VyXT1cIm9wdGlvbnMuaXNEcmF3ZXIgPz8gZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICBbd2l0aENsb3NlQnV0dG9uXT1cInNob3dDbG9zZUJ1dHRvbigpXCI+XHJcblxyXG4gIDxuZ3gtc2lyaW8tZGlhbG9nLWhlYWRlciBbaGlkZGVuXT1cIiFzaG93SGVhZGVyKClcIj5cclxuICAgIDxuZ3gtc2lyaW8tZGlhbG9nLXRpdGxlIFtoaWRkZW5dPVwiIXNob3dUaXRsZSgpXCI+e3sgb3B0aW9ucy50aXRsZSB9fTwvbmd4LXNpcmlvLWRpYWxvZy10aXRsZT5cclxuICA8L25neC1zaXJpby1kaWFsb2ctaGVhZGVyPlxyXG5cclxuICA8bmd4LXNpcmlvLWRpYWxvZy1ib2R5PlxyXG4gICAgPG5nLXRlbXBsYXRlICNmb3JtSG9zdD48L25nLXRlbXBsYXRlPlxyXG4gIDwvbmd4LXNpcmlvLWRpYWxvZy1ib2R5PlxyXG5cclxuICA8bmd4LXNpcmlvLWRpYWxvZy1mb290ZXIgKm5nSWY9XCJzaG93Rm9vdGVyKClcIj5cclxuICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cIm9wdGlvbnMuYnV0dG9uc1wiPlxyXG4gICAgICA8IS0tIE9LIC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInT0snXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbmZpcm1UZW1wbGF0ZTsgY29udGV4dDogeyBhY3Rpb246ICdPSycgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPCEtLSBDYXNvOiBPS0NhbmNlbCAtLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ09LQ2FuY2VsJ1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb25maXJtVGVtcGxhdGU7IGNvbnRleHQ6IHsgYWN0aW9uOiAnT0snIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2xvc2VUZW1wbGF0ZTsgY29udGV4dDogeyBhY3Rpb246ICdDYW5jZWwnIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwhLS0gQ2FzbzogQ29uZmlybUNsb3NlIC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInQ29uZmlybUNhbmNlbCdcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29uZmlybVRlbXBsYXRlOyBjb250ZXh0OiB7IGFjdGlvbjogJ0NvbmZpcm0nIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2xvc2VUZW1wbGF0ZTsgY29udGV4dDogeyBhY3Rpb246ICdDYW5jZWwnIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwhLS0gQ2FzbzogQWJvcnRSZXRyeUlnbm9yZSAtLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ0Fib3J0UmV0cnlJZ25vcmUnXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNsb3NlVGVtcGxhdGU7IGNvbnRleHQ6IHsgYWN0aW9uOiAnQWJvcnQnIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29uZmlybVRlbXBsYXRlOyBjb250ZXh0OiB7IGFjdGlvbjogJ1JldHJ5JyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNsb3NlVGVtcGxhdGU7IGNvbnRleHQ6IHsgYWN0aW9uOiAnSWdub3JlJyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8IS0tIENhc286IFllc05vQ2FuY2VsIC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInWWVzTm9DYW5jZWwnXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbmZpcm1UZW1wbGF0ZTsgY29udGV4dDogeyBhY3Rpb246ICdZZXMnIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2xvc2VUZW1wbGF0ZTsgY29udGV4dDogeyBhY3Rpb246ICdObycgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjbG9zZVRlbXBsYXRlOyBjb250ZXh0OiB7IGFjdGlvbjogJ0NhbmNlbCcgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPCEtLSBDYXNvOiBZZXNObyAtLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ1llc05vJ1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb25maXJtVGVtcGxhdGU7IGNvbnRleHQ6IHsgYWN0aW9uOiAnWWVzJyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNsb3NlVGVtcGxhdGU7IGNvbnRleHQ6IHsgYWN0aW9uOiAnTm8nIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwhLS0gQ2FzbzogUmV0cnlDYW5jZWwgLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidSZXRyeUNhbmNlbCdcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29uZmlybVRlbXBsYXRlOyBjb250ZXh0OiB7IGFjdGlvbjogJ1JldHJ5JyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNsb3NlVGVtcGxhdGU7IGNvbnRleHQ6IHsgYWN0aW9uOiAnQ2FuY2VsJyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8IS0tIENhc286IENhbmNlbFRyeUNvbnRpbnVlIC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInQ2FuY2VsVHJ5Q29udGludWUnXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNsb3NlVGVtcGxhdGU7IGNvbnRleHQ6IHsgYWN0aW9uOiAnQ2FuY2VsJyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbmZpcm1UZW1wbGF0ZTsgY29udGV4dDogeyBhY3Rpb246ICdUcnknIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2xvc2VUZW1wbGF0ZTsgY29udGV4dDogeyBhY3Rpb246ICdDb250aW51ZScgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPCEtLSBUZW1wbGF0ZXMgLS0+XHJcbiAgICA8bmctdGVtcGxhdGUgI2NvbmZpcm1UZW1wbGF0ZSBsZXQtYWN0aW9uPVwiYWN0aW9uXCI+XHJcbiAgICAgIDxuZ3gtc2lyaW8tYnV0dG9uIChjbGlja0V2ZW50KT1cImRvQWN0aW9uKGFjdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNJbnZhbGlkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgICB7eyBsb2NhbGUoVGV4dHMsIGFjdGlvbikgfX1cclxuICAgICAgPC9uZ3gtc2lyaW8tYnV0dG9uPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjY2xvc2VUZW1wbGF0ZSBsZXQtYWN0aW9uPVwiYWN0aW9uXCI+XHJcbiAgICAgIDxuZ3gtc2lyaW8tYnV0dG9uIChjbGlja0V2ZW50KT1cImRvQWN0aW9uKGFjdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInNlY29uZGFyeVwiPlxyXG4gICAgICAgIHt7IGxvY2FsZShUZXh0cywgYWN0aW9uKSB9fVxyXG4gICAgICA8L25neC1zaXJpby1idXR0b24+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8L25neC1zaXJpby1kaWFsb2ctZm9vdGVyPlxyXG5cclxuPC9uZ3gtc2lyaW8tZGlhbG9nPlxyXG4iXX0=
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZGlhbG9nL2RpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUFFLHVCQUF1QixFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFDaEUsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQ0wsb0JBQW9CLEVBQUUsd0JBQXdCLEVBQUUsMEJBQTBCLEVBQ3hFLDBCQUEwQixFQUFFLG9CQUFvQixFQUFFLDBCQUEwQixFQUM1RSx5QkFBeUIsRUFBRSxrQkFBa0IsRUFDaEQsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7OztBQW9COUMsTUFBTSxPQUFPLGVBQWdCLFNBQVEsa0JBQWtCO0lBT2pDO0lBTFosUUFBUSxDQUFvQjtJQUM1QixPQUFPLENBQW9CO0lBQzNCLGVBQWUsQ0FBYTtJQUNwQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBRWQsWUFBb0IsZUFBZ0M7UUFDbEQsS0FBSyxFQUFFLENBQUM7UUFEVSxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7SUFFcEQsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUks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QjtxQkFDMUIsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU07b0ZBSXZDLFFBQVE7c0JBRGYsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0NvbnRhaW5lclJlZiwgVmlld0NoaWxkLCBDb21wb25lbnRSZWYsIFR5cGVcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEZvcm1EaWFsb2dPcHRpb25zLCBEaWFsb2dBY3Rpb24sIERpYWxvZ1Jlc3VsdCB9IGZyb20gJy4uL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlhbG9nRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9kaWFsb2cuZGlyZWN0aXZlJztcclxuaW1wb3J0IHtcclxuICBTaXJpb0RpYWxvZ0NvbXBvbmVudCwgU2lyaW9EaWFsb2dCb2R5Q29tcG9uZW50LCBTaXJpb0RpYWxvZ0hlYWRlckNvbXBvbmVudFxyXG4gICwgU2lyaW9EaWFsb2dGb290ZXJDb21wb25lbnQsIFNpcmlvQnV0dG9uQ29tcG9uZW50LCBTaXJpb0RpYWxvZ0FjdGlvbkRpcmVjdGl2ZVxyXG4gICwgU2lyaW9EaWFsb2dUaXRsZUNvbXBvbmVudCwgU2lyaW9EaWFsb2dFbGVtZW50XHJcbn0gZnJvbSAnbmd4LXNpcmlvLWxpYic7XHJcblxyXG5pbXBvcnQgeyBMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICdAd2VtYWtlNHUvaW50ZXJhY3QnO1xyXG5pbXBvcnQgeyBUZXh0cyB9IGZyb20gJy4uL2xvY2FsZS9sb2NhbGUnO1xyXG5pbXBvcnQgeyBsb2NhbGl6ZSB9IGZyb20gJy4uL2xvY2FsZS9sb2NhbGl6ZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2R5bmFtaWMtZGlhbG9nJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIERpYWxvZ0RpcmVjdGl2ZSxcclxuICAgIFNpcmlvRGlhbG9nQ29tcG9uZW50LFxyXG4gICAgU2lyaW9EaWFsb2dCb2R5Q29tcG9uZW50LFxyXG4gICAgU2lyaW9EaWFsb2dIZWFkZXJDb21wb25lbnQsXHJcbiAgICBTaXJpb0RpYWxvZ0Zvb3RlckNvbXBvbmVudCxcclxuICAgIFNpcmlvQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgU2lyaW9EaWFsb2dBY3Rpb25EaXJlY3RpdmUsXHJcbiAgICBTaXJpb0RpYWxvZ1RpdGxlQ29tcG9uZW50ICAgIFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2RpYWxvZy5jb21wb25lbnQuY3NzJyxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGlhbG9nQ29tcG9uZW50IGV4dGVuZHMgU2lyaW9EaWFsb2dFbGVtZW50IHtcclxuICBAVmlld0NoaWxkKCdmb3JtSG9zdCcsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pXHJcbiAgcHJpdmF0ZSBmb3JtSG9zdCE6IFZpZXdDb250YWluZXJSZWY7XHJcbiAgcHJpdmF0ZSBmb3JtUmVmITogQ29tcG9uZW50UmVmPGFueT5cclxuICBwcml2YXRlIGR5bmFtaWNGb3JtVHlwZSE6IFR5cGU8YW55PjtcclxuICBUZXh0cyA9IFRleHRzO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLmRhdGEub3B0aW9ucyA/PyB7fTtcclxuICAgIHRoaXMuY3VycmVudFZhbHVlID0gdGhpcy5vcHRpb25zLnZhbHVlO1xyXG4gICAgdGhpcy5keW5hbWljRm9ybVR5cGUgPSB0aGlzLmRhdGEuZHluYW1pY0Zvcm1UeXBlO1xyXG4gIH1cclxuXHJcbiAgb3B0aW9uczogRm9ybURpYWxvZ09wdGlvbnMgPSB7IH07XHJcbiAgXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG5cclxuICAgIGxldCBpbmplY3RvciA9IHRoaXMub3B0aW9ucy5pbmplY3RvclxyXG4gICAgICA/PyB0aGlzLmZvcm1Ib3N0LmluamVjdG9yO1xyXG5cclxuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuZm9ybUhvc3QuY3JlYXRlQ29tcG9uZW50KHRoaXMuZHluYW1pY0Zvcm1UeXBlLCB7IGluamVjdG9yIH0pO1xyXG4gICAgY29uc3QgaW5zdGFuY2UgPSBjb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgYW55O1xyXG5cclxuICAgIGNvbXBvbmVudFJlZi5zZXRJbnB1dCgnc2NoZW1hJywgdGhpcy5kYXRhLmZvcm1TY2hlbWEpO1xyXG4gICAgY29tcG9uZW50UmVmLnNldElucHV0KCd2YWx1ZScsIHRoaXMub3B0aW9ucy52YWx1ZSA/PyB7IH0pO1xyXG4gICAgY29tcG9uZW50UmVmLnNldElucHV0KCdzaG93TmF2JywgdGhpcy5vcHRpb25zLnNob3dOYXYgPz8gZmFsc2UpO1xyXG4gICAgY29tcG9uZW50UmVmLnNldElucHV0KCdzaG93TmF2QnV0dG9uJywgdGhpcy5vcHRpb25zLnNob3dOYXZCdXR0b24gPz8gZmFsc2UpO1xyXG4gICAgY29tcG9uZW50UmVmLnNldElucHV0KCdzaG93UHJvZ3Jlc3MnLCB0aGlzLm9wdGlvbnMuc2hvd1Byb2dyZXNzID8/IGZhbHNlKTtcclxuICAgIGNvbXBvbmVudFJlZi5zZXRJbnB1dCgnc2hvd0Zvcm1UaXRsZScsIHRoaXMub3B0aW9ucy5zaG93Rm9ybVRpdGxlID8/IGZhbHNlKTtcclxuXHJcbiAgICBpbnN0YW5jZS52YWx1ZUNoYW5nZVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBhbnkpID0+IHRoaXMuc2V0Q3VycmVudFZhbHVlKHZhbHVlKSk7XHJcblxyXG4gICAgdGhpcy5mb3JtUmVmID0gY29tcG9uZW50UmVmO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIGRvQ2xvc2UoKSB7XHJcbiAgICB0aGlzLmRvQWN0aW9uKCdDbG9zZScpO1xyXG4gIH1cclxuXHJcbiAgZG9BY3Rpb24oYWN0aW9uOiBEaWFsb2dBY3Rpb24pIHtcclxuICAgIHRoaXMuc2lyaW9EaWFsb2dTZXJ2aWNlLmNsb3NlRGlhbG9nKCk7XHJcbiAgICB0aGlzLlNlbmRSZXN1bHQoYWN0aW9uKTsgICAgXHJcbiAgfVxyXG5cclxuICBzaG93SGVhZGVyKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2hvd1RpdGxlKCkgfHwgdGhpcy5zaG93Q2xvc2VCdXR0b24oKTsgICAgXHJcbiAgfVxyXG5cclxuICBzaG93VGl0bGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnRpdGxlID8gdHJ1ZTogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzaG93Q2xvc2VCdXR0b24oKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLm9wdGlvbnMuY2xvc2VCdXR0b24gPT09IHRydWU7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgc2hvd0Zvb3RlcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuYnV0dG9ucyAhPT0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgaXNJbnZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICh0aGlzLmZvcm1SZWY/Lmluc3RhbmNlPy5mb3JtR3JvdXA/LnZhbGlkID8/IHRydWUpICE9PSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgbG9jYWxlKGNvbXBvbmVudDogYW55LCBrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gbG9jYWxpemUodGhpcy5sYW5ndWFnZSwgY29tcG9uZW50LCBrZXkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIHByaXZhdGUgY3VycmVudFZhbHVlOiBhbnk7XHJcblxyXG4gIHByaXZhdGUgc2V0Q3VycmVudFZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuY3VycmVudFZhbHVlID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldCBsYW5ndWFnZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLmdldExhbmd1YWdlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIFNlbmRSZXN1bHQoYWN0aW9uOiBEaWFsb2dBY3Rpb24pIHtcclxuICAgIGlmICh0eXBlb2YgdGhpcy5vcHRpb25zLm9uUmVzdWx0ID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdDogRGlhbG9nUmVzdWx0ID0ge1xyXG4gICAgICAgIGFjdGlvbjogYWN0aW9uLFxyXG4gICAgICAgIHZhbHVlOiB0aGlzLmN1cnJlbnRWYWx1ZVxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLm9wdGlvbnMub25SZXN1bHQocmVzdWx0KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPG5neC1zaXJpby1kaWFsb2cgKGNsb3NlRXZlbnQpPVwiZG9DbG9zZSgpXCJcclxuICAgICAgICAgICAgICAgICAgZGlhbG9nXHJcbiAgICAgICAgICAgICAgICAgIFt0eXBlXT1cIm9wdGlvbnMudHlwZSA/PyAnaW5mbydcIlxyXG4gICAgICAgICAgICAgICAgICBbc2l6ZV09XCJvcHRpb25zLnNpemUgPz8gJ2RlZmF1bHQnXCJcclxuICAgICAgICAgICAgICAgICAgW2lzRHJhd2VyXT1cIm9wdGlvbnMuaXNEcmF3ZXIgPz8gZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICBbd2l0aENsb3NlQnV0dG9uXT1cInNob3dDbG9zZUJ1dHRvbigpXCI+XHJcblxyXG4gIDxuZ3gtc2lyaW8tZGlhbG9nLWhlYWRlciBbaGlkZGVuXT1cIiFzaG93SGVhZGVyKClcIj5cclxuICAgIDxuZ3gtc2lyaW8tZGlhbG9nLXRpdGxlIFtoaWRkZW5dPVwiIXNob3dUaXRsZSgpXCI+e3sgb3B0aW9ucy50aXRsZSB9fTwvbmd4LXNpcmlvLWRpYWxvZy10aXRsZT5cclxuICA8L25neC1zaXJpby1kaWFsb2ctaGVhZGVyPlxyXG5cclxuICA8bmd4LXNpcmlvLWRpYWxvZy1ib2R5PlxyXG4gICAgPG5nLXRlbXBsYXRlICNmb3JtSG9zdD48L25nLXRlbXBsYXRlPlxyXG4gIDwvbmd4LXNpcmlvLWRpYWxvZy1ib2R5PlxyXG5cclxuICA8bmd4LXNpcmlvLWRpYWxvZy1mb290ZXIgKm5nSWY9XCJzaG93Rm9vdGVyKClcIj5cclxuICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cIm9wdGlvbnMuYnV0dG9uc1wiPlxyXG4gICAgICA8IS0tIE9LIC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInT0snXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbmZpcm1UZW1wbGF0ZTsgY29udGV4dDogeyBhY3Rpb246ICdPSycgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPCEtLSBDYXNvOiBPS0NhbmNlbCAtLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ09LQ2FuY2VsJ1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb25maXJtVGVtcGxhdGU7IGNvbnRleHQ6IHsgYWN0aW9uOiAnT0snIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2xvc2VUZW1wbGF0ZTsgY29udGV4dDogeyBhY3Rpb246ICdDYW5jZWwnIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwhLS0gQ2FzbzogQ29uZmlybUNsb3NlIC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInQ29uZmlybUNhbmNlbCdcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29uZmlybVRlbXBsYXRlOyBjb250ZXh0OiB7IGFjdGlvbjogJ0NvbmZpcm0nIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2xvc2VUZW1wbGF0ZTsgY29udGV4dDogeyBhY3Rpb246ICdDYW5jZWwnIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwhLS0gQ2FzbzogQWJvcnRSZXRyeUlnbm9yZSAtLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ0Fib3J0UmV0cnlJZ25vcmUnXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNsb3NlVGVtcGxhdGU7IGNvbnRleHQ6IHsgYWN0aW9uOiAnQWJvcnQnIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29uZmlybVRlbXBsYXRlOyBjb250ZXh0OiB7IGFjdGlvbjogJ1JldHJ5JyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNsb3NlVGVtcGxhdGU7IGNvbnRleHQ6IHsgYWN0aW9uOiAnSWdub3JlJyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8IS0tIENhc286IFllc05vQ2FuY2VsIC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInWWVzTm9DYW5jZWwnXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbmZpcm1UZW1wbGF0ZTsgY29udGV4dDogeyBhY3Rpb246ICdZZXMnIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2xvc2VUZW1wbGF0ZTsgY29udGV4dDogeyBhY3Rpb246ICdObycgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjbG9zZVRlbXBsYXRlOyBjb250ZXh0OiB7IGFjdGlvbjogJ0NhbmNlbCcgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPCEtLSBDYXNvOiBZZXNObyAtLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ1llc05vJ1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb25maXJtVGVtcGxhdGU7IGNvbnRleHQ6IHsgYWN0aW9uOiAnWWVzJyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNsb3NlVGVtcGxhdGU7IGNvbnRleHQ6IHsgYWN0aW9uOiAnTm8nIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwhLS0gQ2FzbzogUmV0cnlDYW5jZWwgLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidSZXRyeUNhbmNlbCdcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29uZmlybVRlbXBsYXRlOyBjb250ZXh0OiB7IGFjdGlvbjogJ1JldHJ5JyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNsb3NlVGVtcGxhdGU7IGNvbnRleHQ6IHsgYWN0aW9uOiAnQ2FuY2VsJyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8IS0tIENhc286IENhbmNlbFRyeUNvbnRpbnVlIC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInQ2FuY2VsVHJ5Q29udGludWUnXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNsb3NlVGVtcGxhdGU7IGNvbnRleHQ6IHsgYWN0aW9uOiAnQ2FuY2VsJyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbmZpcm1UZW1wbGF0ZTsgY29udGV4dDogeyBhY3Rpb246ICdUcnknIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2xvc2VUZW1wbGF0ZTsgY29udGV4dDogeyBhY3Rpb246ICdDb250aW51ZScgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPCEtLSBUZW1wbGF0ZXMgLS0+XHJcbiAgICA8bmctdGVtcGxhdGUgI2NvbmZpcm1UZW1wbGF0ZSBsZXQtYWN0aW9uPVwiYWN0aW9uXCI+XHJcbiAgICAgIDxuZ3gtc2lyaW8tYnV0dG9uIChjbGlja0V2ZW50KT1cImRvQWN0aW9uKGFjdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNJbnZhbGlkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgICB7eyBsb2NhbGUoVGV4dHMsIGFjdGlvbikgfX1cclxuICAgICAgPC9uZ3gtc2lyaW8tYnV0dG9uPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjY2xvc2VUZW1wbGF0ZSBsZXQtYWN0aW9uPVwiYWN0aW9uXCI+XHJcbiAgICAgIDxuZ3gtc2lyaW8tYnV0dG9uIChjbGlja0V2ZW50KT1cImRvQWN0aW9uKGFjdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInNlY29uZGFyeVwiPlxyXG4gICAgICAgIHt7IGxvY2FsZShUZXh0cywgYWN0aW9uKSB9fVxyXG4gICAgICA8L25neC1zaXJpby1idXR0b24+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8L25neC1zaXJpby1kaWFsb2ctZm9vdGVyPlxyXG5cclxuPC9uZ3gtc2lyaW8tZGlhbG9nPlxyXG4iXX0=