nuxeo-development-framework 5.3.3 → 5.3.5

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 (129) hide show
  1. package/bundles/nuxeo-development-framework.umd.js +2694 -292
  2. package/bundles/nuxeo-development-framework.umd.js.map +1 -1
  3. package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.js +5 -2
  4. package/esm2015/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select.component.js +5 -2
  5. package/esm2015/lib/components/filter/filter/filter.component.js +1 -1
  6. package/esm2015/lib/components/ndf-config-editor/components/config-editor-actions/config-editor-actions.component.js +35 -0
  7. package/esm2015/lib/components/ndf-config-editor/components/editor-mode-switch.component.js +43 -0
  8. package/esm2015/lib/components/ndf-config-editor/components/index.js +4 -0
  9. package/esm2015/lib/components/ndf-config-editor/components/info-dialog/info-dialog.component.js +27 -0
  10. package/esm2015/lib/components/ndf-config-editor/config.token.js +3 -0
  11. package/esm2015/lib/components/ndf-config-editor/constants/index.js +4 -0
  12. package/esm2015/lib/components/ndf-config-editor/constants/mode.js +5 -0
  13. package/esm2015/lib/components/ndf-config-editor/constants/query.js +5 -0
  14. package/esm2015/lib/components/ndf-config-editor/constants/type.js +5 -0
  15. package/esm2015/lib/components/ndf-config-editor/containers/config-preview/config-preview.component.js +28 -0
  16. package/esm2015/lib/components/ndf-config-editor/containers/editor-settings/editor-settings.component.js +73 -0
  17. package/esm2015/lib/components/ndf-config-editor/containers/index.js +5 -0
  18. package/esm2015/lib/components/ndf-config-editor/containers/monaco-editor.component.js +195 -0
  19. package/esm2015/lib/components/ndf-config-editor/containers/ndf-config-editor/ndf-config-editor.component.js +133 -0
  20. package/esm2015/lib/components/ndf-config-editor/index.js +2 -0
  21. package/esm2015/lib/components/ndf-config-editor/models/config.js +2 -0
  22. package/esm2015/lib/components/ndf-config-editor/models/dialog-data.js +2 -0
  23. package/esm2015/lib/components/ndf-config-editor/models/editor-model.js +2 -0
  24. package/esm2015/lib/components/ndf-config-editor/models/index.js +5 -0
  25. package/esm2015/lib/components/ndf-config-editor/models/type-helper.js +2 -0
  26. package/esm2015/lib/components/ndf-config-editor/ndf-config-editor.module.js +118 -0
  27. package/esm2015/lib/components/ndf-config-editor/pipes/index.js +3 -0
  28. package/esm2015/lib/components/ndf-config-editor/pipes/is-valid-json.pipe.js +17 -0
  29. package/esm2015/lib/components/ndf-config-editor/pipes/validate-object.pipe.js +16 -0
  30. package/esm2015/lib/components/ndf-config-editor/public/editor-navigate-button.js +104 -0
  31. package/esm2015/lib/components/ndf-config-editor/public/index.js +2 -0
  32. package/esm2015/lib/components/ndf-config-editor/public-api.js +7 -0
  33. package/esm2015/lib/components/ndf-config-editor/services/data-access.service.js +26 -0
  34. package/esm2015/lib/components/ndf-config-editor/services/data-store.service.js +52 -0
  35. package/esm2015/lib/components/ndf-config-editor/services/dummy-data.js +1321 -0
  36. package/esm2015/lib/components/ndf-config-editor/services/index.js +4 -0
  37. package/esm2015/lib/components/ndf-config-editor/services/monaco.loader.service.js +51 -0
  38. package/esm2015/lib/components/ndf-config-editor/utility/index.js +2 -0
  39. package/esm2015/lib/components/ndf-config-editor/utility/json.js +10 -0
  40. package/esm2015/lib/components/reports/index.js +3 -0
  41. package/esm2015/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.js +19 -12
  42. package/esm2015/lib/components/reports/ndf-reports/ndf-reports.module.js +14 -5
  43. package/esm2015/lib/components/reports/ndf-reports/services/chart-data-transformers.service.js +15 -1
  44. package/esm2015/lib/components/reports/ndf-reports/services/chart-plugins-registry.service.js +9 -1
  45. package/esm2015/lib/components/select-users-by-department/select-users-by-departments/select-users-by-departments.component.js +1 -1
  46. package/esm2015/lib/components/tables/ndf-table/containers/ndf-table/ndf-table.component.js +20 -14
  47. package/esm2015/lib/components/tables/ndf-table/directives/index.js +1 -2
  48. package/esm2015/lib/components/tables/ndf-table/models/table-config.js +1 -1
  49. package/esm2015/lib/components/tables/ndf-table/ndf-table.module.js +15 -7
  50. package/esm2015/lib/core/services/extension/component-register.service.js +4 -1
  51. package/esm2015/lib/core/services/translation/translation.service.js +15 -4
  52. package/esm2015/lib/core/services/user/user-preferences.service.js +3 -2
  53. package/esm2015/lib/core/tokens/index.js +2 -0
  54. package/esm2015/lib/core/tokens/project.token.js +3 -0
  55. package/esm2015/lib/directive/permissions/evaluators.service.js +20 -18
  56. package/esm2015/lib/shared/directives/copy-to-clipboard.directive.js +41 -0
  57. package/esm2015/lib/shared/directives/element-height.directive.js +80 -0
  58. package/esm2015/lib/shared/directives/fluid-height.directive.js +115 -0
  59. package/esm2015/lib/shared/directives/index.js +4 -0
  60. package/esm2015/lib/shared/index.js +6 -0
  61. package/esm2015/lib/shared/libraryShared.module.js +35 -10
  62. package/esm2015/lib/shared/models/index.js +2 -1
  63. package/esm2015/lib/shared/models/ndf-request.model.js +2 -0
  64. package/esm2015/public-api.js +4 -1
  65. package/fesm2015/nuxeo-development-framework.js +2549 -194
  66. package/fesm2015/nuxeo-development-framework.js.map +1 -1
  67. package/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.d.ts +2 -1
  68. package/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select.component.d.ts +2 -1
  69. package/lib/components/ndf-config-editor/components/config-editor-actions/config-editor-actions.component.d.ts +14 -0
  70. package/lib/components/ndf-config-editor/components/editor-mode-switch.component.d.ts +17 -0
  71. package/lib/components/ndf-config-editor/components/index.d.ts +3 -0
  72. package/lib/components/ndf-config-editor/components/info-dialog/info-dialog.component.d.ts +11 -0
  73. package/lib/components/ndf-config-editor/config.token.d.ts +9 -0
  74. package/lib/components/ndf-config-editor/constants/index.d.ts +3 -0
  75. package/lib/components/ndf-config-editor/constants/mode.d.ts +4 -0
  76. package/lib/components/ndf-config-editor/constants/query.d.ts +4 -0
  77. package/lib/components/ndf-config-editor/constants/type.d.ts +4 -0
  78. package/lib/components/ndf-config-editor/containers/config-preview/config-preview.component.d.ts +15 -0
  79. package/lib/components/ndf-config-editor/containers/editor-settings/editor-settings.component.d.ts +24 -0
  80. package/lib/components/ndf-config-editor/containers/index.d.ts +4 -0
  81. package/lib/components/ndf-config-editor/containers/monaco-editor.component.d.ts +33 -0
  82. package/lib/components/ndf-config-editor/containers/ndf-config-editor/ndf-config-editor.component.d.ts +48 -0
  83. package/lib/components/ndf-config-editor/index.d.ts +1 -0
  84. package/lib/components/ndf-config-editor/models/config.d.ts +24 -0
  85. package/lib/components/ndf-config-editor/models/dialog-data.d.ts +6 -0
  86. package/lib/components/ndf-config-editor/models/editor-model.d.ts +15 -0
  87. package/lib/components/ndf-config-editor/models/index.d.ts +4 -0
  88. package/lib/components/ndf-config-editor/models/type-helper.d.ts +3 -0
  89. package/lib/components/ndf-config-editor/ndf-config-editor.module.d.ts +36 -0
  90. package/lib/components/ndf-config-editor/pipes/index.d.ts +2 -0
  91. package/lib/components/ndf-config-editor/pipes/is-valid-json.pipe.d.ts +7 -0
  92. package/lib/components/ndf-config-editor/pipes/validate-object.pipe.d.ts +7 -0
  93. package/lib/components/ndf-config-editor/public/editor-navigate-button.d.ts +31 -0
  94. package/lib/components/ndf-config-editor/public/index.d.ts +1 -0
  95. package/lib/components/ndf-config-editor/public-api.d.ts +6 -0
  96. package/lib/components/ndf-config-editor/services/data-access.service.d.ts +8 -0
  97. package/lib/components/ndf-config-editor/services/data-store.service.d.ts +24 -0
  98. package/lib/components/ndf-config-editor/services/dummy-data.d.ts +992 -0
  99. package/lib/components/ndf-config-editor/services/index.d.ts +3 -0
  100. package/lib/components/ndf-config-editor/services/monaco.loader.service.d.ts +14 -0
  101. package/lib/components/ndf-config-editor/utility/index.d.ts +1 -0
  102. package/lib/components/ndf-config-editor/utility/json.d.ts +1 -0
  103. package/lib/components/reports/index.d.ts +2 -0
  104. package/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.d.ts +6 -3
  105. package/lib/components/reports/ndf-reports/ndf-reports.module.d.ts +4 -2
  106. package/lib/components/reports/ndf-reports/services/chart-data-transformers.service.d.ts +10 -0
  107. package/lib/components/reports/ndf-reports/services/chart-plugins-registry.service.d.ts +6 -0
  108. package/lib/components/tables/ndf-table/containers/ndf-table/ndf-table.component.d.ts +3 -1
  109. package/lib/components/tables/ndf-table/directives/index.d.ts +0 -1
  110. package/lib/components/tables/ndf-table/models/table-config.d.ts +1 -0
  111. package/lib/components/tables/ndf-table/ndf-table.module.d.ts +4 -2
  112. package/lib/core/services/extension/component-register.service.d.ts +3 -0
  113. package/lib/core/services/translation/translation.service.d.ts +2 -0
  114. package/lib/core/services/user/user-preferences.service.d.ts +4 -0
  115. package/lib/core/tokens/index.d.ts +1 -0
  116. package/lib/core/tokens/project.token.d.ts +2 -0
  117. package/lib/directive/permissions/evaluators.service.d.ts +4 -2
  118. package/lib/shared/directives/copy-to-clipboard.directive.d.ts +15 -0
  119. package/lib/shared/directives/element-height.directive.d.ts +28 -0
  120. package/lib/{components/tables/ndf-table → shared}/directives/fluid-height.directive.d.ts +2 -1
  121. package/lib/shared/directives/index.d.ts +3 -0
  122. package/lib/shared/index.d.ts +5 -0
  123. package/lib/shared/libraryShared.module.d.ts +3 -1
  124. package/lib/shared/models/index.d.ts +1 -0
  125. package/lib/shared/models/ndf-request.model.d.ts +7 -0
  126. package/package.json +4 -2
  127. package/public-api.d.ts +3 -0
  128. package/src/docs/ndf-table.doc.md +1431 -0
  129. package/esm2015/lib/components/tables/ndf-table/directives/fluid-height.directive.js +0 -112
@@ -0,0 +1,35 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/material/button";
4
+ import * as i2 from "@angular/common";
5
+ import * as i3 from "@ngx-translate/core";
6
+ export class ConfigEditorActionsComponent {
7
+ constructor() {
8
+ this.saveDisabled = false;
9
+ this.onSave = new EventEmitter();
10
+ this.onInfo = new EventEmitter();
11
+ this.onBack = new EventEmitter();
12
+ }
13
+ ngOnInit() { }
14
+ }
15
+ ConfigEditorActionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ConfigEditorActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
16
+ ConfigEditorActionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ConfigEditorActionsComponent, selector: "app-config-editor-actions", inputs: { saveDisabled: "saveDisabled", config: "config" }, outputs: { onSave: "onSave", onInfo: "onInfo", onBack: "onBack" }, ngImport: i0, template: "<button mat-stroked-button (click)=\"onSave.emit($event)\" [disabled]=\"saveDisabled\">\r\n\t{{ 'JSON_EDITOR.save' | translate }}\r\n</button>\r\n<button mat-stroked-button (click)=\"onInfo.emit(config?.documentation)\" *ngIf=\"config?.documentation\">\r\n\t{{ 'JSON_EDITOR.info' | translate }}\r\n</button>\r\n\r\n<button mat-stroked-button (click)=\"onBack.emit($event)\">{{ 'JSON_EDITOR.back' | translate }}</button>\r\n", styles: [":host{display:var(--ndf-editor-actions-display, flex);flex-direction:var(--ndf-editor-actions-direction, column);grid-gap:var(--ndf-editor-actions-gap, .5rem);gap:var(--ndf-editor-actions-gap, .5rem)}\n"], components: [{ type: i1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": i3.TranslatePipe } });
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ConfigEditorActionsComponent, decorators: [{
18
+ type: Component,
19
+ args: [{
20
+ selector: 'app-config-editor-actions',
21
+ templateUrl: './config-editor-actions.component.html',
22
+ styleUrls: ['./config-editor-actions.component.scss']
23
+ }]
24
+ }], ctorParameters: function () { return []; }, propDecorators: { saveDisabled: [{
25
+ type: Input
26
+ }], config: [{
27
+ type: Input
28
+ }], onSave: [{
29
+ type: Output
30
+ }], onInfo: [{
31
+ type: Output
32
+ }], onBack: [{
33
+ type: Output
34
+ }] } });
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWVkaXRvci1hY3Rpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvbmRmLWNvbmZpZy1lZGl0b3IvY29tcG9uZW50cy9jb25maWctZWRpdG9yLWFjdGlvbnMvY29uZmlnLWVkaXRvci1hY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvbmRmLWNvbmZpZy1lZGl0b3IvY29tcG9uZW50cy9jb25maWctZWRpdG9yLWFjdGlvbnMvY29uZmlnLWVkaXRvci1hY3Rpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBUS9FLE1BQU0sT0FBTyw0QkFBNEI7SUFTeEM7UUFSUyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUlwQixXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM1QixXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNwQyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUV2QixDQUFDO0lBRWhCLFFBQVEsS0FBVSxDQUFDOzswSEFYUCw0QkFBNEI7OEdBQTVCLDRCQUE0QixnTUNSekMseWFBUUE7NEZEQWEsNEJBQTRCO2tCQUx4QyxTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFdBQVcsRUFBRSx3Q0FBd0M7b0JBQ3JELFNBQVMsRUFBRSxDQUFDLHdDQUF3QyxDQUFDO2lCQUNyRDswRUFFUyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFFSSxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmRmQ29uZmlnVHlwZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnYXBwLWNvbmZpZy1lZGl0b3ItYWN0aW9ucycsXHJcblx0dGVtcGxhdGVVcmw6ICcuL2NvbmZpZy1lZGl0b3ItYWN0aW9ucy5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vY29uZmlnLWVkaXRvci1hY3Rpb25zLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIENvbmZpZ0VkaXRvckFjdGlvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cdEBJbnB1dCgpIHNhdmVEaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuXHRASW5wdXQoKSBjb25maWc6IE5kZkNvbmZpZ1R5cGVNb2RlbDtcclxuXHJcblx0QE91dHB1dCgpIG9uU2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHRAT3V0cHV0KCkgb25JbmZvID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblx0QE91dHB1dCgpIG9uQmFjayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcblx0Y29uc3RydWN0b3IoKSB7fVxyXG5cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHt9XHJcbn1cclxuIiwiPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gKGNsaWNrKT1cIm9uU2F2ZS5lbWl0KCRldmVudClcIiBbZGlzYWJsZWRdPVwic2F2ZURpc2FibGVkXCI+XHJcblx0e3sgJ0pTT05fRURJVE9SLnNhdmUnIHwgdHJhbnNsYXRlIH19XHJcbjwvYnV0dG9uPlxyXG48YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiAoY2xpY2spPVwib25JbmZvLmVtaXQoY29uZmlnPy5kb2N1bWVudGF0aW9uKVwiICpuZ0lmPVwiY29uZmlnPy5kb2N1bWVudGF0aW9uXCI+XHJcblx0e3sgJ0pTT05fRURJVE9SLmluZm8nIHwgdHJhbnNsYXRlIH19XHJcbjwvYnV0dG9uPlxyXG5cclxuPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gKGNsaWNrKT1cIm9uQmFjay5lbWl0KCRldmVudClcIj57eyAnSlNPTl9FRElUT1IuYmFjaycgfCB0cmFuc2xhdGUgfX08L2J1dHRvbj5cclxuIl19
@@ -0,0 +1,43 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { CONFIG_EDITOR_MODE } from '../constants';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/material/button-toggle";
5
+ import * as i2 from "@angular/common";
6
+ import * as i3 from "@ngx-translate/core";
7
+ export class EditorModeSwitchComponent {
8
+ constructor() {
9
+ this.changeMode = new EventEmitter();
10
+ this.modes = CONFIG_EDITOR_MODE;
11
+ }
12
+ ngOnInit() { }
13
+ onModeChange(mode) {
14
+ this.changeMode.emit(mode.value);
15
+ }
16
+ }
17
+ EditorModeSwitchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EditorModeSwitchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
18
+ EditorModeSwitchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: EditorModeSwitchComponent, selector: "app-editor-mode-switch", inputs: { mode: "mode" }, outputs: { changeMode: "changeMode" }, ngImport: i0, template: `
19
+ <mat-button-toggle-group [value]="mode" (change)="onModeChange($event)">
20
+ <mat-button-toggle *ngFor="let mod of modes | keyvalue" [value]="mod.value"
21
+ >{{ 'JSON_EDITOR.MODES.' + (mod.key | lowercase) | translate }}
22
+ </mat-button-toggle>
23
+ </mat-button-toggle-group>
24
+ `, isInline: true, styles: [""], components: [{ type: i1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-labelledby", "tabIndex", "appearance", "checked", "disabled", "id", "name", "aria-label", "value"], outputs: ["change"], exportAs: ["matButtonToggle"] }], directives: [{ type: i1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "keyvalue": i2.KeyValuePipe, "translate": i3.TranslatePipe, "lowercase": i2.LowerCasePipe } });
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EditorModeSwitchComponent, decorators: [{
26
+ type: Component,
27
+ args: [{
28
+ selector: 'app-editor-mode-switch',
29
+ template: `
30
+ <mat-button-toggle-group [value]="mode" (change)="onModeChange($event)">
31
+ <mat-button-toggle *ngFor="let mod of modes | keyvalue" [value]="mod.value"
32
+ >{{ 'JSON_EDITOR.MODES.' + (mod.key | lowercase) | translate }}
33
+ </mat-button-toggle>
34
+ </mat-button-toggle-group>
35
+ `,
36
+ styles: ['']
37
+ }]
38
+ }], ctorParameters: function () { return []; }, propDecorators: { mode: [{
39
+ type: Input
40
+ }], changeMode: [{
41
+ type: Output
42
+ }] } });
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLW1vZGUtc3dpdGNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvbmRmLWNvbmZpZy1lZGl0b3IvY29tcG9uZW50cy9lZGl0b3ItbW9kZS1zd2l0Y2guY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDOzs7OztBQWNsRCxNQUFNLE9BQU8seUJBQXlCO0lBT3JDO1FBSlUsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFjLENBQUM7UUFFdEQsVUFBSyxHQUFHLGtCQUFrQixDQUFDO0lBRVosQ0FBQztJQUVoQixRQUFRLEtBQVUsQ0FBQztJQUVuQixZQUFZLENBQUMsSUFBMkI7UUFDdkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7O3VIQWJXLHlCQUF5QjsyR0FBekIseUJBQXlCLCtIQVQzQjs7Ozs7O0VBTVQ7NEZBR1cseUJBQXlCO2tCQVhyQyxTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLFFBQVEsRUFBRTs7Ozs7O0VBTVQ7b0JBQ0QsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO2lCQUNaOzBFQUVTLElBQUk7c0JBQVosS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFZGl0b3JNb2RlIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgQ09ORklHX0VESVRPUl9NT0RFIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uVG9nZ2xlQ2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uLXRvZ2dsZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2FwcC1lZGl0b3ItbW9kZS1zd2l0Y2gnLFxyXG5cdHRlbXBsYXRlOiBgXHJcblx0XHQ8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAgW3ZhbHVlXT1cIm1vZGVcIiAoY2hhbmdlKT1cIm9uTW9kZUNoYW5nZSgkZXZlbnQpXCI+XHJcblx0XHRcdDxtYXQtYnV0dG9uLXRvZ2dsZSAqbmdGb3I9XCJsZXQgbW9kIG9mIG1vZGVzIHwga2V5dmFsdWVcIiBbdmFsdWVdPVwibW9kLnZhbHVlXCJcclxuXHRcdFx0XHQ+e3sgJ0pTT05fRURJVE9SLk1PREVTLicgKyAobW9kLmtleSB8IGxvd2VyY2FzZSkgfCB0cmFuc2xhdGUgfX1cclxuXHRcdFx0PC9tYXQtYnV0dG9uLXRvZ2dsZT5cclxuXHRcdDwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XHJcblx0YCxcclxuXHRzdHlsZXM6IFsnJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEVkaXRvck1vZGVTd2l0Y2hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cdEBJbnB1dCgpIG1vZGU6IEVkaXRvck1vZGU7XHJcblxyXG5cdEBPdXRwdXQoKSBjaGFuZ2VNb2RlID0gbmV3IEV2ZW50RW1pdHRlcjxFZGl0b3JNb2RlPigpO1xyXG5cclxuXHRtb2RlcyA9IENPTkZJR19FRElUT1JfTU9ERTtcclxuXHJcblx0Y29uc3RydWN0b3IoKSB7fVxyXG5cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHt9XHJcblxyXG5cdG9uTW9kZUNoYW5nZShtb2RlOiBNYXRCdXR0b25Ub2dnbGVDaGFuZ2UpIHtcclxuXHRcdHRoaXMuY2hhbmdlTW9kZS5lbWl0KG1vZGUudmFsdWUpO1xyXG5cdH1cclxufVxyXG4iXX0=
@@ -0,0 +1,4 @@
1
+ export * from './editor-mode-switch.component';
2
+ export * from './info-dialog/info-dialog.component';
3
+ export * from './config-editor-actions/config-editor-actions.component';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL25kZi1jb25maWctZWRpdG9yL2NvbXBvbmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMseURBQXlELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2VkaXRvci1tb2RlLXN3aXRjaC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2luZm8tZGlhbG9nL2luZm8tZGlhbG9nLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29uZmlnLWVkaXRvci1hY3Rpb25zL2NvbmZpZy1lZGl0b3ItYWN0aW9ucy5jb21wb25lbnQnO1xyXG4iXX0=
@@ -0,0 +1,27 @@
1
+ import { Component } from '@angular/core';
2
+ import { BaseDialogComponent } from '../../../../shared';
3
+ import { APP_BASE_HREF } from '@angular/common';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../../../shared/components/nuxeo-dialog/nuxeo.dialog";
6
+ import * as i2 from "ngx-markdown";
7
+ import * as i3 from "@ngx-translate/core";
8
+ export class InfoDialogComponent extends BaseDialogComponent {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.baseAppUrl = this._injector.get(APP_BASE_HREF);
12
+ }
13
+ ngOnInit() {
14
+ this.docUrl = this.baseAppUrl + this.dialogData.url;
15
+ }
16
+ }
17
+ InfoDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: InfoDialogComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
18
+ InfoDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: InfoDialogComponent, selector: "app-info-dialog", usesInheritance: true, ngImport: i0, template: "<ndf-nuxeo-dialog [dialogTitle]=\"dialogData.title | translate\">\r\n\t<ng-template #contentTemplate>\r\n\t\t<markdown class=\"markdown-content\" [src]=\"docUrl\"> </markdown>\r\n\t</ng-template>\r\n\r\n\t<ng-template #actionsTemplate let-dialog=\"dialog\"> </ng-template>\r\n</ndf-nuxeo-dialog>\r\n", styles: ["::ng-deep .markdown-content{direction:var(--markdown-direction, ltr)!important;text-align:start;color:var(--markdonw-text-color, inherit);background:var(--markdonw-background-color, transparent);border:var(--markdonw-border, 0px solid transparent);border-radius:var(--markdonw-border-radius, 0)}::ng-deep .markdown-content code,::ng-deep .markdown-content kbd,::ng-deep .markdown-content samp,::ng-deep .markdown-content pre{font-family:ui-monospace,SFMono-Regular,Consolas,\"Liberation Mono\",Menlo,monospace;font-size:1em}::ng-deep .markdown-content hr{margin-block:1rem}::ng-deep .markdown-content table{border-spacing:0;border-collapse:collapse;display:block;width:max-content;max-width:100%;overflow:auto;font-variant:tabular-nums;margin-block:.5rem}::ng-deep .markdown-content table tr{border-top:1px solid var(--markdonw-table-tr-border-color, #d1d9e0b3)}::ng-deep .markdown-content table th,::ng-deep .markdown-content table td{padding:6px 13px;border:1px solid var(--markdonw-table-border-color, #d1d9e0)}\n"], components: [{ type: i1.NdfNuxeoDialog, selector: "ndf-nuxeo-dialog", inputs: ["dialogTitle", "subTitle", "panelClass", "loaderMode"] }, { type: i2.MarkdownComponent, selector: "markdown, [markdown]", inputs: ["data", "src", "emoji", "katex", "katexOptions", "lineHighlight", "line", "lineOffset", "lineNumbers", "start"], outputs: ["error", "load", "ready"] }], pipes: { "translate": i3.TranslatePipe } });
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: InfoDialogComponent, decorators: [{
20
+ type: Component,
21
+ args: [{
22
+ selector: 'app-info-dialog',
23
+ templateUrl: './info-dialog.component.html',
24
+ styleUrls: ['./info-dialog.component.scss']
25
+ }]
26
+ }] });
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mby1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9uZGYtY29uZmlnLWVkaXRvci9jb21wb25lbnRzL2luZm8tZGlhbG9nL2luZm8tZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvbmRmLWNvbmZpZy1lZGl0b3IvY29tcG9uZW50cy9pbmZvLWRpYWxvZy9pbmZvLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXpELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFPaEQsTUFBTSxPQUFPLG1CQUFvQixTQUFRLG1CQUE4QztJQUx2Rjs7UUFNUyxlQUFVLEdBQVcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFXLENBQUM7S0FLekU7SUFIQSxRQUFRO1FBQ1AsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3JELENBQUM7O2lIQUxXLG1CQUFtQjtxR0FBbkIsbUJBQW1CLDhFQ1ZoQyw2U0FPQTs0RkRHYSxtQkFBbUI7a0JBTC9CLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsV0FBVyxFQUFFLDhCQUE4QjtvQkFDM0MsU0FBUyxFQUFFLENBQUMsOEJBQThCLENBQUM7aUJBQzNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmFzZURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZCc7XHJcbmltcG9ydCB7IEluZm9EaWFsb2dEYXRhIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgQVBQX0JBU0VfSFJFRiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2FwcC1pbmZvLWRpYWxvZycsXHJcblx0dGVtcGxhdGVVcmw6ICcuL2luZm8tZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9pbmZvLWRpYWxvZy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbmZvRGlhbG9nQ29tcG9uZW50IGV4dGVuZHMgQmFzZURpYWxvZ0NvbXBvbmVudDxhbnksIEluZm9EaWFsb2dEYXRhLCB2b2lkPiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblx0cHJpdmF0ZSBiYXNlQXBwVXJsOiBzdHJpbmcgPSB0aGlzLl9pbmplY3Rvci5nZXQoQVBQX0JBU0VfSFJFRikgYXMgc3RyaW5nO1xyXG5cdGRvY1VybDogc3RyaW5nO1xyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5kb2NVcmwgPSB0aGlzLmJhc2VBcHBVcmwgKyB0aGlzLmRpYWxvZ0RhdGEudXJsO1xyXG5cdH1cclxufVxyXG4iLCI8bmRmLW51eGVvLWRpYWxvZyBbZGlhbG9nVGl0bGVdPVwiZGlhbG9nRGF0YS50aXRsZSB8IHRyYW5zbGF0ZVwiPlxyXG5cdDxuZy10ZW1wbGF0ZSAjY29udGVudFRlbXBsYXRlPlxyXG5cdFx0PG1hcmtkb3duIGNsYXNzPVwibWFya2Rvd24tY29udGVudFwiIFtzcmNdPVwiZG9jVXJsXCI+IDwvbWFya2Rvd24+XHJcblx0PC9uZy10ZW1wbGF0ZT5cclxuXHJcblx0PG5nLXRlbXBsYXRlICNhY3Rpb25zVGVtcGxhdGUgbGV0LWRpYWxvZz1cImRpYWxvZ1wiPiA8L25nLXRlbXBsYXRlPlxyXG48L25kZi1udXhlby1kaWFsb2c+XHJcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export const MONACO_EDITOR_CONFIG = new InjectionToken('MONACO_EDITOR_CONFIG');
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9uZGYtY29uZmlnLWVkaXRvci9jb25maWcudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmV4cG9ydCBjb25zdCBNT05BQ09fRURJVE9SX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbignTU9OQUNPX0VESVRPUl9DT05GSUcnKTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTW9uYWNvRWRpdG9yQ29uZmlnIHtcclxuXHRiYXNlVXJsPzogc3RyaW5nO1xyXG5cdGRlZmF1bHRPcHRpb25zPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcclxuXHRvbk1vbmFjb0xvYWQ/OiBGdW5jdGlvbjtcclxufVxyXG4iXX0=
@@ -0,0 +1,4 @@
1
+ export * from './mode';
2
+ export * from './type';
3
+ export * from './query';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL25kZi1jb25maWctZWRpdG9yL2NvbnN0YW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbW9kZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdHlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcXVlcnknO1xyXG4iXX0=
@@ -0,0 +1,5 @@
1
+ export const CONFIG_EDITOR_MODE = {
2
+ EDIT: 'edit',
3
+ PREVIEW: 'preview'
4
+ };
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvbmRmLWNvbmZpZy1lZGl0b3IvY29uc3RhbnRzL21vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7SUFDakMsSUFBSSxFQUFFLE1BQU07SUFDWixPQUFPLEVBQUUsU0FBUztDQUNULENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgQ09ORklHX0VESVRPUl9NT0RFID0ge1xyXG5cdEVESVQ6ICdlZGl0JyxcclxuXHRQUkVWSUVXOiAncHJldmlldydcclxufSBhcyBjb25zdDtcclxuIl19
@@ -0,0 +1,5 @@
1
+ export const PARAMS_KEYS = {
2
+ TYPE: 'type',
3
+ KEY: 'key'
4
+ };
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL25kZi1jb25maWctZWRpdG9yL2NvbnN0YW50cy9xdWVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUc7SUFDMUIsSUFBSSxFQUFFLE1BQU07SUFDWixHQUFHLEVBQUUsS0FBSztDQUNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgUEFSQU1TX0tFWVMgPSB7XHJcblx0VFlQRTogJ3R5cGUnLFxyXG5cdEtFWTogJ2tleSdcclxufSBhcyBjb25zdDtcclxuIl19
@@ -0,0 +1,5 @@
1
+ export const NDF_EDITOR_TYPE = {
2
+ REPORTS: 'reports',
3
+ TABLES: 'tables'
4
+ };
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvbmRmLWNvbmZpZy1lZGl0b3IvY29uc3RhbnRzL3R5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHO0lBQzlCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLE1BQU0sRUFBRSxRQUFRO0NBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBOREZfRURJVE9SX1RZUEUgPSB7XHJcblx0UkVQT1JUUzogJ3JlcG9ydHMnLFxyXG5cdFRBQkxFUzogJ3RhYmxlcydcclxufSBhcyBjb25zdDtcclxuIl19
@@ -0,0 +1,28 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { NDF_EDITOR_TYPE } from '../../constants';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../../tables/ndf-table/containers/ndf-table/ndf-table.component";
5
+ import * as i2 from "../../../reports/ndf-reports/containers/ndf-reports/ndf-reports.component";
6
+ import * as i3 from "@angular/common";
7
+ import * as i4 from "../../pipes/validate-object.pipe";
8
+ export class ConfigPreviewComponent {
9
+ constructor() {
10
+ this.types = NDF_EDITOR_TYPE;
11
+ }
12
+ ngOnInit() { }
13
+ }
14
+ ConfigPreviewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ConfigPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
15
+ ConfigPreviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ConfigPreviewComponent, selector: "app-config-preview", inputs: { type: "type", data: "data" }, ngImport: i0, template: "<ng-container *ngIf=\"data | validateObject\">\r\n\t<ng-container [ngSwitch]=\"type\">\r\n\t\t<app-ndf-table *ngSwitchCase=\"types.TABLES\" [config]=\"data\"></app-ndf-table>\r\n\t\t<app-ndf-reports *ngSwitchCase=\"types.REPORTS\" [config]=\"data\"></app-ndf-reports>\r\n\t</ng-container>\r\n</ng-container>\r\n", styles: [":host{display:block;height:var(--monaco-config-editor-height, 100%);border:var(--monaco-config-editor-border, 1px solid var(--monaco-border-color, #bbb))}\n"], components: [{ type: i1.NdfTableComponent, selector: "app-ndf-table", inputs: ["rows", "totalRecords", "autoCalculateHeight", "emptyMessage", "activeQuery", "configPath", "configTransformer", "tableKey", "jsonEditorEnabled", "config", "customCriteria", "searchTerm"], outputs: ["onRowSelected", "onRowIndexSelected", "actionOnRow", "onGettingData", "onMultiRowSelected", "onLoading", "onPage", "onInitialized", "onLoaded", "onQueryChange", "onSort"] }, { type: i2.NdfReportsComponent, selector: "app-ndf-reports", inputs: ["jsonEditorEnabled", "reportsKey", "navigateRoute", "config"], outputs: ["onQueryChange"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], pipes: { "validateObject": i4.ValidateObjectPipe } });
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ConfigPreviewComponent, decorators: [{
17
+ type: Component,
18
+ args: [{
19
+ selector: 'app-config-preview',
20
+ templateUrl: './config-preview.component.html',
21
+ styleUrls: ['./config-preview.component.scss']
22
+ }]
23
+ }], ctorParameters: function () { return []; }, propDecorators: { type: [{
24
+ type: Input
25
+ }], data: [{
26
+ type: Input
27
+ }] } });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLXByZXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9uZGYtY29uZmlnLWVkaXRvci9jb250YWluZXJzL2NvbmZpZy1wcmV2aWV3L2NvbmZpZy1wcmV2aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvbmRmLWNvbmZpZy1lZGl0b3IvY29udGFpbmVycy9jb25maWctcHJldmlldy9jb25maWctcHJldmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7OztBQU9sRCxNQUFNLE9BQU8sc0JBQXNCO0lBTWxDO1FBRkEsVUFBSyxHQUFHLGVBQWUsQ0FBQztJQUVULENBQUM7SUFFaEIsUUFBUSxLQUFVLENBQUM7O29IQVJQLHNCQUFzQjt3R0FBdEIsc0JBQXNCLGtHQ1RuQyx5VEFNQTs0RkRHYSxzQkFBc0I7a0JBTGxDLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsV0FBVyxFQUFFLGlDQUFpQztvQkFDOUMsU0FBUyxFQUFFLENBQUMsaUNBQWlDLENBQUM7aUJBQzlDOzBFQUVTLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRWRpdG9yVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IE5ERl9FRElUT1JfVFlQRSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2FwcC1jb25maWctcHJldmlldycsXHJcblx0dGVtcGxhdGVVcmw6ICcuL2NvbmZpZy1wcmV2aWV3LmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9jb25maWctcHJldmlldy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb25maWdQcmV2aWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHRASW5wdXQoKSB0eXBlOiBFZGl0b3JUeXBlO1xyXG5cdEBJbnB1dCgpIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT47XHJcblxyXG5cdHR5cGVzID0gTkRGX0VESVRPUl9UWVBFO1xyXG5cclxuXHRjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG5cdG5nT25Jbml0KCk6IHZvaWQge31cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YSB8IHZhbGlkYXRlT2JqZWN0XCI+XHJcblx0PG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwidHlwZVwiPlxyXG5cdFx0PGFwcC1uZGYtdGFibGUgKm5nU3dpdGNoQ2FzZT1cInR5cGVzLlRBQkxFU1wiIFtjb25maWddPVwiZGF0YVwiPjwvYXBwLW5kZi10YWJsZT5cclxuXHRcdDxhcHAtbmRmLXJlcG9ydHMgKm5nU3dpdGNoQ2FzZT1cInR5cGVzLlJFUE9SVFNcIiBbY29uZmlnXT1cImRhdGFcIj48L2FwcC1uZGYtcmVwb3J0cz5cclxuXHQ8L25nLWNvbnRhaW5lcj5cclxuPC9uZy1jb250YWluZXI+XHJcbiJdfQ==
@@ -0,0 +1,73 @@
1
+ import { Component, Optional } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../../../core/services/extension/component-register.service";
4
+ import * as i2 from "../../../../directive/permissions/evaluators.service";
5
+ import * as i3 from "../../../../core/services";
6
+ import * as i4 from "../../../reports";
7
+ import * as i5 from "@angular/material/icon";
8
+ import * as i6 from "@angular/cdk/accordion";
9
+ import * as i7 from "@angular/common";
10
+ import * as i8 from "../../../../shared/directives/copy-to-clipboard.directive";
11
+ import * as i9 from "@angular/material/tooltip";
12
+ import * as i10 from "@ngx-translate/core";
13
+ export class EditorSettingsComponent {
14
+ constructor(_componentRegister, _evaluatorsService, _ndfTransformService, _chartDataTransformers, _chartPluginsRegistry) {
15
+ this._componentRegister = _componentRegister;
16
+ this._evaluatorsService = _evaluatorsService;
17
+ this._ndfTransformService = _ndfTransformService;
18
+ this._chartDataTransformers = _chartDataTransformers;
19
+ this._chartPluginsRegistry = _chartPluginsRegistry;
20
+ this.settingsList = [];
21
+ if (_componentRegister) {
22
+ const components = this._componentRegister.getComponents();
23
+ this.pushToSetting('JSON_EDITOR.SETTINGS.customComponents', Object.keys(components));
24
+ }
25
+ if (_evaluatorsService) {
26
+ const _evls = this._evaluatorsService.getUserEvaluators();
27
+ this.pushToSetting('JSON_EDITOR.SETTINGS.roles', Object.keys(_evls));
28
+ }
29
+ if (_ndfTransformService) {
30
+ const transformers = this._ndfTransformService.getAll();
31
+ this.pushToSetting('JSON_EDITOR.SETTINGS.transformers', [...transformers.keys()]);
32
+ }
33
+ if (_chartDataTransformers) {
34
+ const graphTransformers = this._chartDataTransformers.getGraphTransformers();
35
+ this.pushToSetting('JSON_EDITOR.SETTINGS.graphTransformers', [...graphTransformers.keys()]);
36
+ const digitsTransformers = this._chartDataTransformers.getDigitsTransformers();
37
+ this.pushToSetting('JSON_EDITOR.SETTINGS.digitsTransformers', [...digitsTransformers.keys()]);
38
+ }
39
+ if (_chartPluginsRegistry) {
40
+ const plugins = this._chartPluginsRegistry.getAll();
41
+ this.pushToSetting('JSON_EDITOR.SETTINGS.chartPlugins', [...plugins.keys()]);
42
+ }
43
+ }
44
+ ngOnInit() { }
45
+ pushToSetting(name, keys) {
46
+ const item = {
47
+ name: name,
48
+ keys: keys
49
+ };
50
+ this.settingsList = [...this.settingsList, item];
51
+ }
52
+ }
53
+ EditorSettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EditorSettingsComponent, deps: [{ token: i1.ComponentRegisterService, optional: true }, { token: i2.EvaluatorsService, optional: true }, { token: i3.NdfTransformService, optional: true }, { token: i4.ChartDataTransformers, optional: true }, { token: i4.ChartPluginsRegistry, optional: true }], target: i0.ɵɵFactoryTarget.Component });
54
+ EditorSettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: EditorSettingsComponent, selector: "app-editor-settings", ngImport: i0, template: "<cdk-accordion class=\"settings-list\">\r\n\t<cdk-accordion-item\r\n\t\t*ngFor=\"let item of settingsList; let index = index\"\r\n\t\t#accordionItem=\"cdkAccordionItem\"\r\n\t\tclass=\"settings-list__item\"\r\n\t\trole=\"button\"\r\n\t\ttabindex=\"0\"\r\n\t\t[attr.id]=\"'accordion-header-' + index\"\r\n\t\t[attr.aria-expanded]=\"accordionItem.expanded\"\r\n\t\t[attr.aria-controls]=\"'accordion-body-' + index\"\r\n\t>\r\n\t\t<div class=\"settings-list__item__header\" (click)=\"accordionItem.toggle()\">\r\n\t\t\t<span class=\"settings-list__item__header__title truncate\">\r\n\t\t\t\t{{ item.name | translate }}\r\n\t\t\t</span>\r\n\r\n\t\t\t<mat-icon class=\"settings-list__item__header__icon\">\r\n\t\t\t\t{{ accordionItem.expanded ? 'expand_less' : 'expand_more' }}\r\n\t\t\t</mat-icon>\r\n\t\t</div>\r\n\t\t<div\r\n\t\t\tclass=\"settings-list__item__body\"\r\n\t\t\trole=\"region\"\r\n\t\t\t[style.display]=\"accordionItem.expanded ? '' : 'none'\"\r\n\t\t\t[attr.id]=\"'accordion-body-' + index\"\r\n\t\t\t[attr.aria-labelledby]=\"'accordion-header-' + index\"\r\n\t\t>\r\n\t\t\t<ul class=\"keys-list\">\r\n\t\t\t\t<li\r\n\t\t\t\t\t*ngFor=\"let key of item.keys\"\r\n\t\t\t\t\tclass=\"keys-list__key\"\r\n\t\t\t\t\t[appCopyToClipboard]=\"key\"\r\n\t\t\t\t\t[matTooltip]=\"'JSON_EDITOR.clickToCopy' | translate\"\r\n\t\t\t\t>\r\n\t\t\t\t\t{{ key }}\r\n\t\t\t\t</li>\r\n\t\t\t</ul>\r\n\t\t</div>\r\n\t</cdk-accordion-item>\r\n</cdk-accordion>\r\n", styles: [".settings-list{padding:var(--esl-padding, .5rem);color:var(--esl-color, inherit)}.settings-list__item__header{display:flex;justify-content:space-between;align-items:center;min-width:0;padding:var(--esl-header-padding, .5rem);border-bottom:var(--esl-header-border, 1px solid var(--border-color))}.settings-list__item__header__title{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.keys-list{font-family:var(--keys-list-font-family, system-ui);font-size:var(--keys-list-font-size, .9rem);margin-block:var(--keys-list-margin, .5rem)}.keys-list__key{margin-bottom:.2rem;color:var(--keys-text-color, inherit);min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-block:.15rem}.keys-list__key:hover{background:var(--keys-hover-background, #f5f5f5)}\n"], components: [{ type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i6.CdkAccordion, selector: "cdk-accordion, [cdkAccordion]", inputs: ["multi"], exportAs: ["cdkAccordion"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.CdkAccordionItem, selector: "cdk-accordion-item, [cdkAccordionItem]", inputs: ["expanded", "disabled"], outputs: ["closed", "opened", "destroyed", "expandedChange"], exportAs: ["cdkAccordionItem"] }, { type: i8.CopyToClipboardDirective, selector: "[appCopyToClipboard]", inputs: ["appCopyToClipboard"] }, { type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltipPosition", "matTooltipDisabled", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }], pipes: { "translate": i10.TranslatePipe } });
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EditorSettingsComponent, decorators: [{
56
+ type: Component,
57
+ args: [{
58
+ selector: 'app-editor-settings',
59
+ templateUrl: './editor-settings.component.html',
60
+ styleUrls: ['./editor-settings.component.scss']
61
+ }]
62
+ }], ctorParameters: function () { return [{ type: i1.ComponentRegisterService, decorators: [{
63
+ type: Optional
64
+ }] }, { type: i2.EvaluatorsService, decorators: [{
65
+ type: Optional
66
+ }] }, { type: i3.NdfTransformService, decorators: [{
67
+ type: Optional
68
+ }] }, { type: i4.ChartDataTransformers, decorators: [{
69
+ type: Optional
70
+ }] }, { type: i4.ChartPluginsRegistry, decorators: [{
71
+ type: Optional
72
+ }] }]; } });
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLXNldHRpbmdzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvbmRmLWNvbmZpZy1lZGl0b3IvY29udGFpbmVycy9lZGl0b3Itc2V0dGluZ3MvZWRpdG9yLXNldHRpbmdzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvbmRmLWNvbmZpZy1lZGl0b3IvY29udGFpbmVycy9lZGl0b3Itc2V0dGluZ3MvZWRpdG9yLXNldHRpbmdzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWlCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7O0FBaUJuRSxNQUFNLE9BQU8sdUJBQXVCO0lBR25DLFlBQzhCLGtCQUE0QyxFQUM1QyxrQkFBcUMsRUFDckMsb0JBQXlDLEVBQ3pDLHNCQUE2QyxFQUM3QyxxQkFBMkM7UUFKM0MsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUEwQjtRQUM1Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBQ3JDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBcUI7UUFDekMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF1QjtRQUM3QywwQkFBcUIsR0FBckIscUJBQXFCLENBQXNCO1FBUHpFLGlCQUFZLEdBQWtCLEVBQUUsQ0FBQztRQVNoQyxJQUFJLGtCQUFrQixFQUFFO1lBQ3ZCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMzRCxJQUFJLENBQUMsYUFBYSxDQUFDLHVDQUF1QyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztTQUNyRjtRQUVELElBQUksa0JBQWtCLEVBQUU7WUFDdkIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDMUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyw0QkFBNEIsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDckU7UUFFRCxJQUFJLG9CQUFvQixFQUFFO1lBQ3pCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN4RCxJQUFJLENBQUMsYUFBYSxDQUFDLG1DQUFtQyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ2xGO1FBQ0QsSUFBSSxzQkFBc0IsRUFBRTtZQUMzQixNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzdFLElBQUksQ0FBQyxhQUFhLENBQUMsd0NBQXdDLEVBQUUsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztZQUU1RixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQy9FLElBQUksQ0FBQyxhQUFhLENBQUMseUNBQXlDLEVBQUUsQ0FBQyxHQUFHLGtCQUFrQixDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztTQUM5RjtRQUNELElBQUkscUJBQXFCLEVBQUU7WUFDMUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3BELElBQUksQ0FBQyxhQUFhLENBQUMsbUNBQW1DLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDN0U7SUFDRixDQUFDO0lBRUQsUUFBUSxLQUFVLENBQUM7SUFFWCxhQUFhLENBQUMsSUFBWSxFQUFFLElBQWM7UUFDakQsTUFBTSxJQUFJLEdBQWdCO1lBQ3pCLElBQUksRUFBRSxJQUFJO1lBQ1YsSUFBSSxFQUFFLElBQUk7U0FDVixDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNsRCxDQUFDOztxSEE3Q1csdUJBQXVCO3lHQUF2Qix1QkFBdUIsMkRDakJwQyw4NkNBd0NBOzRGRHZCYSx1QkFBdUI7a0JBTG5DLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsV0FBVyxFQUFFLGtDQUFrQztvQkFDL0MsU0FBUyxFQUFFLENBQUMsa0NBQWtDLENBQUM7aUJBQy9DOzswQkFLRSxRQUFROzswQkFDUixRQUFROzswQkFDUixRQUFROzswQkFDUixRQUFROzswQkFDUixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFdmFsdWF0b3JzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RpcmVjdGl2ZS9wZXJtaXNzaW9ucy9ldmFsdWF0b3JzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOZGZUcmFuc2Zvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IENoYXJ0RGF0YVRyYW5zZm9ybWVycywgQ2hhcnRQbHVnaW5zUmVnaXN0cnkgfSBmcm9tICcuLi8uLi8uLi9yZXBvcnRzJztcclxuaW1wb3J0IHsgRWRpdG9yVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IENvbXBvbmVudFJlZ2lzdGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc2VydmljZXMvZXh0ZW5zaW9uL2NvbXBvbmVudC1yZWdpc3Rlci5zZXJ2aWNlJztcclxuXHJcbnR5cGUgU2V0dGluZ0l0ZW0gPSB7XHJcblx0bmFtZTogc3RyaW5nO1xyXG5cdGtleXM6IHN0cmluZ1tdO1xyXG59O1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdhcHAtZWRpdG9yLXNldHRpbmdzJyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vZWRpdG9yLXNldHRpbmdzLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9lZGl0b3Itc2V0dGluZ3MuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRWRpdG9yU2V0dGluZ3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cdHNldHRpbmdzTGlzdDogU2V0dGluZ0l0ZW1bXSA9IFtdO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgX2NvbXBvbmVudFJlZ2lzdGVyOiBDb21wb25lbnRSZWdpc3RlclNlcnZpY2UsXHJcblx0XHRAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IF9ldmFsdWF0b3JzU2VydmljZTogRXZhbHVhdG9yc1NlcnZpY2UsXHJcblx0XHRAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IF9uZGZUcmFuc2Zvcm1TZXJ2aWNlOiBOZGZUcmFuc2Zvcm1TZXJ2aWNlLFxyXG5cdFx0QE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBfY2hhcnREYXRhVHJhbnNmb3JtZXJzOiBDaGFydERhdGFUcmFuc2Zvcm1lcnMsXHJcblx0XHRAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IF9jaGFydFBsdWdpbnNSZWdpc3RyeTogQ2hhcnRQbHVnaW5zUmVnaXN0cnlcclxuXHQpIHtcclxuXHRcdGlmIChfY29tcG9uZW50UmVnaXN0ZXIpIHtcclxuXHRcdFx0Y29uc3QgY29tcG9uZW50cyA9IHRoaXMuX2NvbXBvbmVudFJlZ2lzdGVyLmdldENvbXBvbmVudHMoKTtcclxuXHRcdFx0dGhpcy5wdXNoVG9TZXR0aW5nKCdKU09OX0VESVRPUi5TRVRUSU5HUy5jdXN0b21Db21wb25lbnRzJywgT2JqZWN0LmtleXMoY29tcG9uZW50cykpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChfZXZhbHVhdG9yc1NlcnZpY2UpIHtcclxuXHRcdFx0Y29uc3QgX2V2bHMgPSB0aGlzLl9ldmFsdWF0b3JzU2VydmljZS5nZXRVc2VyRXZhbHVhdG9ycygpO1xyXG5cdFx0XHR0aGlzLnB1c2hUb1NldHRpbmcoJ0pTT05fRURJVE9SLlNFVFRJTkdTLnJvbGVzJywgT2JqZWN0LmtleXMoX2V2bHMpKTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoX25kZlRyYW5zZm9ybVNlcnZpY2UpIHtcclxuXHRcdFx0Y29uc3QgdHJhbnNmb3JtZXJzID0gdGhpcy5fbmRmVHJhbnNmb3JtU2VydmljZS5nZXRBbGwoKTtcclxuXHRcdFx0dGhpcy5wdXNoVG9TZXR0aW5nKCdKU09OX0VESVRPUi5TRVRUSU5HUy50cmFuc2Zvcm1lcnMnLCBbLi4udHJhbnNmb3JtZXJzLmtleXMoKV0pO1xyXG5cdFx0fVxyXG5cdFx0aWYgKF9jaGFydERhdGFUcmFuc2Zvcm1lcnMpIHtcclxuXHRcdFx0Y29uc3QgZ3JhcGhUcmFuc2Zvcm1lcnMgPSB0aGlzLl9jaGFydERhdGFUcmFuc2Zvcm1lcnMuZ2V0R3JhcGhUcmFuc2Zvcm1lcnMoKTtcclxuXHRcdFx0dGhpcy5wdXNoVG9TZXR0aW5nKCdKU09OX0VESVRPUi5TRVRUSU5HUy5ncmFwaFRyYW5zZm9ybWVycycsIFsuLi5ncmFwaFRyYW5zZm9ybWVycy5rZXlzKCldKTtcclxuXHJcblx0XHRcdGNvbnN0IGRpZ2l0c1RyYW5zZm9ybWVycyA9IHRoaXMuX2NoYXJ0RGF0YVRyYW5zZm9ybWVycy5nZXREaWdpdHNUcmFuc2Zvcm1lcnMoKTtcclxuXHRcdFx0dGhpcy5wdXNoVG9TZXR0aW5nKCdKU09OX0VESVRPUi5TRVRUSU5HUy5kaWdpdHNUcmFuc2Zvcm1lcnMnLCBbLi4uZGlnaXRzVHJhbnNmb3JtZXJzLmtleXMoKV0pO1xyXG5cdFx0fVxyXG5cdFx0aWYgKF9jaGFydFBsdWdpbnNSZWdpc3RyeSkge1xyXG5cdFx0XHRjb25zdCBwbHVnaW5zID0gdGhpcy5fY2hhcnRQbHVnaW5zUmVnaXN0cnkuZ2V0QWxsKCk7XHJcblx0XHRcdHRoaXMucHVzaFRvU2V0dGluZygnSlNPTl9FRElUT1IuU0VUVElOR1MuY2hhcnRQbHVnaW5zJywgWy4uLnBsdWdpbnMua2V5cygpXSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHt9XHJcblxyXG5cdHByaXZhdGUgcHVzaFRvU2V0dGluZyhuYW1lOiBzdHJpbmcsIGtleXM6IHN0cmluZ1tdKSB7XHJcblx0XHRjb25zdCBpdGVtOiBTZXR0aW5nSXRlbSA9IHtcclxuXHRcdFx0bmFtZTogbmFtZSxcclxuXHRcdFx0a2V5czoga2V5c1xyXG5cdFx0fTtcclxuXHRcdHRoaXMuc2V0dGluZ3NMaXN0ID0gWy4uLnRoaXMuc2V0dGluZ3NMaXN0LCBpdGVtXTtcclxuXHR9XHJcbn1cclxuIiwiPGNkay1hY2NvcmRpb24gY2xhc3M9XCJzZXR0aW5ncy1saXN0XCI+XHJcblx0PGNkay1hY2NvcmRpb24taXRlbVxyXG5cdFx0Km5nRm9yPVwibGV0IGl0ZW0gb2Ygc2V0dGluZ3NMaXN0OyBsZXQgaW5kZXggPSBpbmRleFwiXHJcblx0XHQjYWNjb3JkaW9uSXRlbT1cImNka0FjY29yZGlvbkl0ZW1cIlxyXG5cdFx0Y2xhc3M9XCJzZXR0aW5ncy1saXN0X19pdGVtXCJcclxuXHRcdHJvbGU9XCJidXR0b25cIlxyXG5cdFx0dGFiaW5kZXg9XCIwXCJcclxuXHRcdFthdHRyLmlkXT1cIidhY2NvcmRpb24taGVhZGVyLScgKyBpbmRleFwiXHJcblx0XHRbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImFjY29yZGlvbkl0ZW0uZXhwYW5kZWRcIlxyXG5cdFx0W2F0dHIuYXJpYS1jb250cm9sc109XCInYWNjb3JkaW9uLWJvZHktJyArIGluZGV4XCJcclxuXHQ+XHJcblx0XHQ8ZGl2IGNsYXNzPVwic2V0dGluZ3MtbGlzdF9faXRlbV9faGVhZGVyXCIgKGNsaWNrKT1cImFjY29yZGlvbkl0ZW0udG9nZ2xlKClcIj5cclxuXHRcdFx0PHNwYW4gY2xhc3M9XCJzZXR0aW5ncy1saXN0X19pdGVtX19oZWFkZXJfX3RpdGxlIHRydW5jYXRlXCI+XHJcblx0XHRcdFx0e3sgaXRlbS5uYW1lIHwgdHJhbnNsYXRlIH19XHJcblx0XHRcdDwvc3Bhbj5cclxuXHJcblx0XHRcdDxtYXQtaWNvbiBjbGFzcz1cInNldHRpbmdzLWxpc3RfX2l0ZW1fX2hlYWRlcl9faWNvblwiPlxyXG5cdFx0XHRcdHt7IGFjY29yZGlvbkl0ZW0uZXhwYW5kZWQgPyAnZXhwYW5kX2xlc3MnIDogJ2V4cGFuZF9tb3JlJyB9fVxyXG5cdFx0XHQ8L21hdC1pY29uPlxyXG5cdFx0PC9kaXY+XHJcblx0XHQ8ZGl2XHJcblx0XHRcdGNsYXNzPVwic2V0dGluZ3MtbGlzdF9faXRlbV9fYm9keVwiXHJcblx0XHRcdHJvbGU9XCJyZWdpb25cIlxyXG5cdFx0XHRbc3R5bGUuZGlzcGxheV09XCJhY2NvcmRpb25JdGVtLmV4cGFuZGVkID8gJycgOiAnbm9uZSdcIlxyXG5cdFx0XHRbYXR0ci5pZF09XCInYWNjb3JkaW9uLWJvZHktJyArIGluZGV4XCJcclxuXHRcdFx0W2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIidhY2NvcmRpb24taGVhZGVyLScgKyBpbmRleFwiXHJcblx0XHQ+XHJcblx0XHRcdDx1bCBjbGFzcz1cImtleXMtbGlzdFwiPlxyXG5cdFx0XHRcdDxsaVxyXG5cdFx0XHRcdFx0Km5nRm9yPVwibGV0IGtleSBvZiBpdGVtLmtleXNcIlxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJrZXlzLWxpc3RfX2tleVwiXHJcblx0XHRcdFx0XHRbYXBwQ29weVRvQ2xpcGJvYXJkXT1cImtleVwiXHJcblx0XHRcdFx0XHRbbWF0VG9vbHRpcF09XCInSlNPTl9FRElUT1IuY2xpY2tUb0NvcHknIHwgdHJhbnNsYXRlXCJcclxuXHRcdFx0XHQ+XHJcblx0XHRcdFx0XHR7eyBrZXkgfX1cclxuXHRcdFx0XHQ8L2xpPlxyXG5cdFx0XHQ8L3VsPlxyXG5cdFx0PC9kaXY+XHJcblx0PC9jZGstYWNjb3JkaW9uLWl0ZW0+XHJcbjwvY2RrLWFjY29yZGlvbj5cclxuIl19
@@ -0,0 +1,5 @@
1
+ export * from './ndf-config-editor/ndf-config-editor.component';
2
+ export * from './monaco-editor.component';
3
+ export * from './config-preview/config-preview.component';
4
+ export * from './editor-settings/editor-settings.component';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL25kZi1jb25maWctZWRpdG9yL2NvbnRhaW5lcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyw2Q0FBNkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbmRmLWNvbmZpZy1lZGl0b3IvbmRmLWNvbmZpZy1lZGl0b3IuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9tb25hY28tZWRpdG9yLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29uZmlnLXByZXZpZXcvY29uZmlnLXByZXZpZXcuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3Itc2V0dGluZ3MvZWRpdG9yLXNldHRpbmdzLmNvbXBvbmVudCc7XHJcbiJdfQ==
@@ -0,0 +1,195 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Output, ViewChild } from '@angular/core';
2
+ import { MONACO_EDITOR_CONFIG } from '../config.token';
3
+ import { fromEvent } from 'rxjs';
4
+ import { takeUntil, filter, delay } from 'rxjs/operators';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../services";
7
+ import * as i2 from "@angular/cdk/bidi";
8
+ export class MonacoEditorComponent {
9
+ constructor(config, _loaderService, zone) {
10
+ this.config = config;
11
+ this._loaderService = _loaderService;
12
+ this.zone = zone;
13
+ this.destroy$ = new EventEmitter();
14
+ this.onInit = new EventEmitter();
15
+ this.hasError = new EventEmitter();
16
+ this._value = '';
17
+ this.valueChange = new EventEmitter();
18
+ this._options = {
19
+ value: ``,
20
+ language: 'json',
21
+ theme: 'vs',
22
+ automaticLayout: true
23
+ };
24
+ }
25
+ set value(val) {
26
+ this._value = val;
27
+ if (this._editor && val !== this._editor.getValue()) {
28
+ this._editor.setValue(val);
29
+ }
30
+ }
31
+ get value() {
32
+ return this._value;
33
+ }
34
+ set options(options) {
35
+ console.log(options);
36
+ this._options = Object.assign({}, this.config.defaultOptions, options);
37
+ if (this._editor) {
38
+ this._editor.dispose();
39
+ this.initMonaco(this._options);
40
+ }
41
+ }
42
+ get options() {
43
+ return this._options;
44
+ }
45
+ set theme(theme) {
46
+ if (this._monaco) {
47
+ this._monaco.editor.setTheme(theme);
48
+ }
49
+ }
50
+ set model(model) {
51
+ this.options.model = model;
52
+ if (this._editor) {
53
+ this._editor.dispose();
54
+ this.initMonaco(this.options);
55
+ }
56
+ }
57
+ ngOnInit() { }
58
+ ngAfterViewInit() {
59
+ const baseUrl = this.config.baseUrl || './assets/monaco-editor/min/vs';
60
+ this._loaderService.load(baseUrl).then((monaco) => {
61
+ this._monaco = monaco;
62
+ this.initMonaco(this._options);
63
+ });
64
+ }
65
+ ngOnDestroy() {
66
+ if (this._editor) {
67
+ this._editor.dispose();
68
+ this._editor = undefined;
69
+ }
70
+ this._monaco = undefined;
71
+ this.destroy$.next(null);
72
+ this.destroy$.complete();
73
+ }
74
+ initMonaco(options) {
75
+ var _a, _b;
76
+ if (!this._monaco) {
77
+ console.error('Monaco editor is not loaded yet.');
78
+ return;
79
+ }
80
+ const hasModel = !!(options === null || options === void 0 ? void 0 : options.model);
81
+ try {
82
+ if (hasModel) {
83
+ const model = this._monaco.editor.getModel(options.model.uri);
84
+ if (model) {
85
+ // If model exists, set the value
86
+ options.model = model;
87
+ options.model.setValue(this.value);
88
+ }
89
+ else {
90
+ // If model doesn't exist, create a new model
91
+ options.model = this._monaco.editor.createModel(((_a = options.model) === null || _a === void 0 ? void 0 : _a.value) || this.value, ((_b = options.model) === null || _b === void 0 ? void 0 : _b.language) || 'json', options.model.uri);
92
+ }
93
+ }
94
+ this._monaco.languages.json.jsonDefaults.setDiagnosticsOptions({
95
+ validate: true,
96
+ allowComments: false,
97
+ schemas: [] // No schema provided
98
+ });
99
+ // Initialize the Monaco editor instance
100
+ const editorOptions = Object.assign(Object.assign({}, options), { minimap: {
101
+ enabled: false
102
+ } });
103
+ this._editor = this._monaco.editor.create(this._editorContainer.nativeElement, editorOptions);
104
+ // If no model is passed in options, set the value directly
105
+ if (!hasModel) {
106
+ this._editor.setValue(this.value || '');
107
+ }
108
+ this._monaco.editor.onDidChangeMarkers(() => {
109
+ const markers = this._monaco.editor.getModelMarkers({});
110
+ this.hasError.emit(!!(markers === null || markers === void 0 ? void 0 : markers.length));
111
+ });
112
+ // Handle content change events to propagate changes
113
+ this._editor.onDidChangeModelContent((e) => {
114
+ const value = this._editor.getValue();
115
+ this.zone.run(() => {
116
+ this.value = value;
117
+ this.valueChange.emit(value); // Emit the value change event
118
+ });
119
+ });
120
+ this._subscribeToWindowResize();
121
+ this.onInit.emit({
122
+ monaco: this._monaco,
123
+ editor: this._editor
124
+ });
125
+ }
126
+ catch (error) {
127
+ console.error('Error initializing Monaco Editor:', error);
128
+ }
129
+ }
130
+ _subscribeToWindowResize() {
131
+ fromEvent(window, 'resize')
132
+ .pipe(filter(() => !!this._editor), delay(200), takeUntil(this.destroy$))
133
+ .subscribe(() => {
134
+ this._editor.layout();
135
+ });
136
+ }
137
+ }
138
+ MonacoEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MonacoEditorComponent, deps: [{ token: MONACO_EDITOR_CONFIG }, { token: i1.MonacoLoaderService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
139
+ MonacoEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: MonacoEditorComponent, selector: "ndf-monaco-editor", inputs: { value: "value", options: "options", theme: "theme", model: "model" }, outputs: { onInit: "onInit", hasError: "hasError", valueChange: "valueChange" }, viewQueries: [{ propertyName: "_editorContainer", first: true, predicate: ["editorContainer"], descendants: true, static: true }], ngImport: i0, template: `
140
+ <div
141
+ class="editor-container"
142
+ #editorContainer
143
+ dir="ltr"
144
+ style="text-align: left !important; direction: ltr !important"
145
+ ></div>
146
+ `, isInline: true, styles: ["\n\t\t\t:host {\n\t\t\t\tdisplay: block;\n\t\t\t\theight: var(--monaco-config-editor-height, 100%);\n\t\t\t\tborder: var(--monaco-config-editor-border, 1px solid var(--monaco-border-color, #bbb));\n\t\t\t}\n\t\t\t.editor-container {\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\t\t\t}\n\t\t"], directives: [{ type: i2.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
147
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MonacoEditorComponent, decorators: [{
148
+ type: Component,
149
+ args: [{
150
+ selector: 'ndf-monaco-editor',
151
+ changeDetection: ChangeDetectionStrategy.OnPush,
152
+ template: `
153
+ <div
154
+ class="editor-container"
155
+ #editorContainer
156
+ dir="ltr"
157
+ style="text-align: left !important; direction: ltr !important"
158
+ ></div>
159
+ `,
160
+ styles: [
161
+ `
162
+ :host {
163
+ display: block;
164
+ height: var(--monaco-config-editor-height, 100%);
165
+ border: var(--monaco-config-editor-border, 1px solid var(--monaco-border-color, #bbb));
166
+ }
167
+ .editor-container {
168
+ width: 100%;
169
+ height: 100%;
170
+ }
171
+ `
172
+ ]
173
+ }]
174
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
175
+ type: Inject,
176
+ args: [MONACO_EDITOR_CONFIG]
177
+ }] }, { type: i1.MonacoLoaderService }, { type: i0.NgZone }]; }, propDecorators: { _editorContainer: [{
178
+ type: ViewChild,
179
+ args: ['editorContainer', { static: true }]
180
+ }], onInit: [{
181
+ type: Output
182
+ }], hasError: [{
183
+ type: Output
184
+ }], value: [{
185
+ type: Input
186
+ }], valueChange: [{
187
+ type: Output
188
+ }], options: [{
189
+ type: Input
190
+ }], theme: [{
191
+ type: Input
192
+ }], model: [{
193
+ type: Input
194
+ }] } });
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uYWNvLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL25kZi1jb25maWctZWRpdG9yL2NvbnRhaW5lcnMvbW9uYWNvLWVkaXRvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVOLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBSUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsb0JBQW9CLEVBQXNCLE1BQU0saUJBQWlCLENBQUM7QUFFM0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQTRCMUQsTUFBTSxPQUFPLHFCQUFxQjtJQXdEakMsWUFDeUMsTUFBMEIsRUFDMUQsY0FBbUMsRUFDbkMsSUFBWTtRQUZvQixXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQUMxRCxtQkFBYyxHQUFkLGNBQWMsQ0FBcUI7UUFDbkMsU0FBSSxHQUFKLElBQUksQ0FBUTtRQTFESixhQUFRLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFL0QsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFnQixDQUFDO1FBQzFDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBSXpDLFdBQU0sR0FBVyxFQUFFLENBQUM7UUFZbEIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRW5DLGFBQVEsR0FBa0I7WUFDakMsS0FBSyxFQUFFLEVBQUU7WUFDVCxRQUFRLEVBQUUsTUFBTTtZQUNoQixLQUFLLEVBQUUsSUFBSTtZQUNYLGVBQWUsRUFBRSxJQUFJO1NBQ3JCLENBQUM7SUFpQ0MsQ0FBQztJQW5ESixJQUFhLEtBQUssQ0FBQyxHQUFXO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO1FBQ2xCLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNwRCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMzQjtJQUNGLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDcEIsQ0FBQztJQVdELElBQWEsT0FBTyxDQUFDLE9BQXNCO1FBQzFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN2RSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUMvQjtJQUNGLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQWEsS0FBSyxDQUFDLEtBQWtCO1FBQ3BDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDcEM7SUFDRixDQUFDO0lBRUQsSUFBYSxLQUFLLENBQUMsS0FBc0I7UUFDeEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzlCO0lBQ0YsQ0FBQztJQVFELFFBQVEsS0FBVSxDQUFDO0lBRW5CLGVBQWU7UUFDZCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSwrQkFBK0IsQ0FBQztRQUN2RSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNqRCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztZQUN0QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXO1FBQ1YsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7U0FDekI7UUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxVQUFVLENBQUMsT0FBc0I7O1FBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2xCLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztZQUNsRCxPQUFPO1NBQ1A7UUFFRCxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsS0FBSyxDQUFBLENBQUM7UUFFbEMsSUFBSTtZQUNILElBQUksUUFBUSxFQUFFO2dCQUNiLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUU5RCxJQUFJLEtBQUssRUFBRTtvQkFDVixpQ0FBaUM7b0JBQ2pDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO29CQUN0QixPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ25DO3FCQUFNO29CQUNOLDZDQUE2QztvQkFDN0MsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQzlDLENBQUEsTUFBQyxPQUFPLENBQUMsS0FBcUIsMENBQUUsS0FBSyxLQUFJLElBQUksQ0FBQyxLQUFLLEVBQ25ELENBQUEsTUFBQyxPQUFPLENBQUMsS0FBcUIsMENBQUUsUUFBUSxLQUFJLE1BQU0sRUFDbEQsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQ2pCLENBQUM7aUJBQ0Y7YUFDRDtZQUVELElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMscUJBQXFCLENBQUM7Z0JBQzlELFFBQVEsRUFBRSxJQUFJO2dCQUNkLGFBQWEsRUFBRSxLQUFLO2dCQUNwQixPQUFPLEVBQUUsRUFBRSxDQUFDLHFCQUFxQjthQUNqQyxDQUFDLENBQUM7WUFFSCx3Q0FBd0M7WUFDeEMsTUFBTSxhQUFhLG1DQUNmLE9BQU8sS0FDVixPQUFPLEVBQUU7b0JBQ1IsT0FBTyxFQUFFLEtBQUs7aUJBQ2QsR0FDRCxDQUFDO1lBQ0YsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQ3hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQ25DLGFBQW1FLENBQ25FLENBQUM7WUFFRiwyREFBMkQ7WUFDM0QsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQ3hDO1lBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsR0FBRyxFQUFFO2dCQUMzQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3hELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxNQUFNLENBQUEsQ0FBQyxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxDQUFDO1lBRUgsb0RBQW9EO1lBQ3BELElBQUksQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUEwQyxFQUFFLEVBQUU7Z0JBQ25GLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtvQkFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7b0JBQ25CLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsOEJBQThCO2dCQUM3RCxDQUFDLENBQUMsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFFaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ2hCLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTztnQkFDcEIsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPO2FBQ3BCLENBQUMsQ0FBQztTQUNIO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzFEO0lBQ0YsQ0FBQztJQUVPLHdCQUF3QjtRQUMvQixTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQzthQUN6QixJQUFJLENBQ0osTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQzVCLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFDVixTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUN4QjthQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7bUhBdEtXLHFCQUFxQixrQkF5RHhCLG9CQUFvQjt1R0F6RGpCLHFCQUFxQiw2VkF0QnZCOzs7Ozs7O0VBT1Q7NEZBZVcscUJBQXFCO2tCQXpCakMsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsUUFBUSxFQUFFOzs7Ozs7O0VBT1Q7b0JBQ0QsTUFBTSxFQUFFO3dCQUNQOzs7Ozs7Ozs7O0dBVUM7cUJBQ0Q7aUJBQ0Q7OzBCQTBERSxNQUFNOzJCQUFDLG9CQUFvQjttR0F2RG1CLGdCQUFnQjtzQkFBL0QsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ3BDLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUtNLEtBQUs7c0JBQWpCLEtBQUs7Z0JBV0ksV0FBVztzQkFBcEIsTUFBTTtnQkFTTSxPQUFPO3NCQUFuQixLQUFLO2dCQWFPLEtBQUs7c0JBQWpCLEtBQUs7Z0JBTU8sS0FBSztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcblx0QWZ0ZXJWaWV3SW5pdCxcclxuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuXHRDb21wb25lbnQsXHJcblx0RWxlbWVudFJlZixcclxuXHRFdmVudEVtaXR0ZXIsXHJcblx0SW5qZWN0LFxyXG5cdElucHV0LFxyXG5cdE5nWm9uZSxcclxuXHRPbkRlc3Ryb3ksXHJcblx0T25Jbml0LFxyXG5cdE91dHB1dCxcclxuXHRWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTW9uYWNvTG9hZGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgTU9OQUNPX0VESVRPUl9DT05GSUcsIE1vbmFjb0VkaXRvckNvbmZpZyB9IGZyb20gJy4uL2NvbmZpZy50b2tlbic7XHJcbmltcG9ydCB7IEVkaXRvck1vZGVsLCBFZGl0b3JNb2RlbFR5cGUsIEVkaXRvck9wdGlvbnMsIEVkaXRvclRoZW1lLCBNb25hY29FZGl0b3IgfSBmcm9tICcuLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsLCBmaWx0ZXIsIGRlbGF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgKiBhcyBtb25hY28gZnJvbSAnbW9uYWNvLWVkaXRvcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ25kZi1tb25hY28tZWRpdG9yJyxcclxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuXHR0ZW1wbGF0ZTogYFxyXG5cdFx0PGRpdlxyXG5cdFx0XHRjbGFzcz1cImVkaXRvci1jb250YWluZXJcIlxyXG5cdFx0XHQjZWRpdG9yQ29udGFpbmVyXHJcblx0XHRcdGRpcj1cImx0clwiXHJcblx0XHRcdHN0eWxlPVwidGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50OyBkaXJlY3Rpb246IGx0ciAhaW1wb3J0YW50XCJcclxuXHRcdD48L2Rpdj5cclxuXHRgLFxyXG5cdHN0eWxlczogW1xyXG5cdFx0YFxyXG5cdFx0XHQ6aG9zdCB7XHJcblx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XHJcblx0XHRcdFx0aGVpZ2h0OiB2YXIoLS1tb25hY28tY29uZmlnLWVkaXRvci1oZWlnaHQsIDEwMCUpO1xyXG5cdFx0XHRcdGJvcmRlcjogdmFyKC0tbW9uYWNvLWNvbmZpZy1lZGl0b3ItYm9yZGVyLCAxcHggc29saWQgdmFyKC0tbW9uYWNvLWJvcmRlci1jb2xvciwgI2JiYikpO1xyXG5cdFx0XHR9XHJcblx0XHRcdC5lZGl0b3ItY29udGFpbmVyIHtcclxuXHRcdFx0XHR3aWR0aDogMTAwJTtcclxuXHRcdFx0XHRoZWlnaHQ6IDEwMCU7XHJcblx0XHRcdH1cclxuXHRcdGBcclxuXHRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNb25hY29FZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XHJcblx0cHJpdmF0ZSByZWFkb25seSBkZXN0cm95JDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cdEBWaWV3Q2hpbGQoJ2VkaXRvckNvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pIF9lZGl0b3JDb250YWluZXI6IEVsZW1lbnRSZWY7XHJcblx0QE91dHB1dCgpIG9uSW5pdCA9IG5ldyBFdmVudEVtaXR0ZXI8TW9uYWNvRWRpdG9yPigpO1xyXG5cdEBPdXRwdXQoKSBoYXNFcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHRwcml2YXRlIF9lZGl0b3I6IG1vbmFjby5lZGl0b3IuSVN0YW5kYWxvbmVDb2RlRWRpdG9yO1xyXG5cdHByaXZhdGUgX21vbmFjbzogdHlwZW9mIG1vbmFjbztcclxuXHJcblx0cHJpdmF0ZSBfdmFsdWU6IHN0cmluZyA9ICcnO1xyXG5cdEBJbnB1dCgpIHNldCB2YWx1ZSh2YWw6IHN0cmluZykge1xyXG5cdFx0dGhpcy5fdmFsdWUgPSB2YWw7XHJcblx0XHRpZiAodGhpcy5fZWRpdG9yICYmIHZhbCAhPT0gdGhpcy5fZWRpdG9yLmdldFZhbHVlKCkpIHtcclxuXHRcdFx0dGhpcy5fZWRpdG9yLnNldFZhbHVlKHZhbCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRnZXQgdmFsdWUoKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiB0aGlzLl92YWx1ZTtcclxuXHR9XHJcblxyXG5cdEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcblx0cHJpdmF0ZSBfb3B0aW9uczogRWRpdG9yT3B0aW9ucyA9IHtcclxuXHRcdHZhbHVlOiBgYCxcclxuXHRcdGxhbmd1YWdlOiAnanNvbicsXHJcblx0XHR0aGVtZTogJ3ZzJyxcclxuXHRcdGF1dG9tYXRpY0xheW91dDogdHJ1ZVxyXG5cdH07XHJcblxyXG5cdEBJbnB1dCgpIHNldCBvcHRpb25zKG9wdGlvbnM6IEVkaXRvck9wdGlvbnMpIHtcclxuXHRcdGNvbnNvbGUubG9nKG9wdGlvbnMpO1xyXG5cdFx0dGhpcy5fb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuY29uZmlnLmRlZmF1bHRPcHRpb25zLCBvcHRpb25zKTtcclxuXHRcdGlmICh0aGlzLl9lZGl0b3IpIHtcclxuXHRcdFx0dGhpcy5fZWRpdG9yLmRpc3Bvc2UoKTtcclxuXHRcdFx0dGhpcy5pbml0TW9uYWNvKHRoaXMuX29wdGlvbnMpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Z2V0IG9wdGlvbnMoKTogRWRpdG9yT3B0aW9ucyB7XHJcblx0XHRyZXR1cm4gdGhpcy5fb3B0aW9ucztcclxuXHR9XHJcblxyXG5cdEBJbnB1dCgpIHNldCB0aGVtZSh0aGVtZTogRWRpdG9yVGhlbWUpIHtcclxuXHRcdGlmICh0aGlzLl9tb25hY28pIHtcclxuXHRcdFx0dGhpcy5fbW9uYWNvLmVkaXRvci5zZXRUaGVtZSh0aGVtZSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRASW5wdXQoKSBzZXQgbW9kZWwobW9kZWw6IEVkaXRvck1vZGVsVHlwZSkge1xyXG5cdFx0dGhpcy5vcHRpb25zLm1vZGVsID0gbW9kZWw7XHJcblx0XHRpZiAodGhpcy5fZWRpdG9yKSB7XHJcblx0XHRcdHRoaXMuX2VkaXRvci5kaXNwb3NlKCk7XHJcblx0XHRcdHRoaXMuaW5pdE1vbmFjbyh0aGlzLm9wdGlvbnMpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRASW5qZWN0KE1PTkFDT19FRElUT1JfQ09ORklHKSBwcm90ZWN0ZWQgY29uZmlnOiBNb25hY29FZGl0b3JDb25maWcsXHJcblx0XHRwcml2YXRlIF9sb2FkZXJTZXJ2aWNlOiBNb25hY29Mb2FkZXJTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSB6b25lOiBOZ1pvbmVcclxuXHQpIHt9XHJcblxyXG5cdG5nT25Jbml0KCk6IHZvaWQge31cclxuXHJcblx0bmdBZnRlclZpZXdJbml0KCkge1xyXG5cdFx0Y29uc3QgYmFzZVVybCA9IHRoaXMuY29uZmlnLmJhc2VVcmwgfHwgJy4vYXNzZXRzL21vbmFjby1lZGl0b3IvbWluL3ZzJztcclxuXHRcdHRoaXMuX2xvYWRlclNlcnZpY2UubG9hZChiYXNlVXJsKS50aGVuKChtb25hY28pID0+IHtcclxuXHRcdFx0dGhpcy5fbW9uYWNvID0gbW9uYWNvO1xyXG5cdFx0XHR0aGlzLmluaXRNb25hY28odGhpcy5fb3B0aW9ucyk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMuX2VkaXRvcikge1xyXG5cdFx0XHR0aGlzLl9lZGl0b3IuZGlzcG9zZSgpO1xyXG5cdFx0XHR0aGlzLl9lZGl0b3IgPSB1bmRlZmluZWQ7XHJcblx0XHR9XHJcblx0XHR0aGlzLl9tb25hY28gPSB1bmRlZmluZWQ7XHJcblx0XHR0aGlzLmRlc3Ryb3kkLm5leHQobnVsbCk7XHJcblx0XHR0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcblx0fVxyXG5cclxuXHRpbml0TW9uYWNvKG9wdGlvbnM6IEVkaXRvck9wdGlvbnMpOiB2b2lkIHtcclxuXHRcdGlmICghdGhpcy5fbW9uYWNvKSB7XHJcblx0XHRcdGNvbnNvbGUuZXJyb3IoJ01vbmFjbyBlZGl0b3IgaXMgbm90IGxvYWRlZCB5ZXQuJyk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCBoYXNNb2RlbCA9ICEhb3B0aW9ucz8ubW9kZWw7XHJcblxyXG5cdFx0dHJ5IHtcclxuXHRcdFx0aWYgKGhhc01vZGVsKSB7XHJcblx0XHRcdFx0Y29uc3QgbW9kZWwgPSB0aGlzLl9tb25hY28uZWRpdG9yLmdldE1vZGVsKG9wdGlvbnMubW9kZWwudXJpKTtcclxuXHJcblx0XHRcdFx0aWYgKG1vZGVsKSB7XHJcblx0XHRcdFx0XHQvLyBJZiBtb2RlbCBleGlzdHMsIHNldCB0aGUgdmFsdWVcclxuXHRcdFx0XHRcdG9wdGlvbnMubW9kZWwgPSBtb2RlbDtcclxuXHRcdFx0XHRcdG9wdGlvbnMubW9kZWwuc2V0VmFsdWUodGhpcy52YWx1ZSk7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdC8vIElmIG1vZGVsIGRvZXNuJ3QgZXhpc3QsIGNyZWF0ZSBhIG5ldyBtb2RlbFxyXG5cdFx0XHRcdFx0b3B0aW9ucy5tb2RlbCA9IHRoaXMuX21vbmFjby5lZGl0b3IuY3JlYXRlTW9kZWwoXHJcblx0XHRcdFx0XHRcdChvcHRpb25zLm1vZGVsIGFzIEVkaXRvck1vZGVsKT8udmFsdWUgfHwgdGhpcy52YWx1ZSxcclxuXHRcdFx0XHRcdFx0KG9wdGlvbnMubW9kZWwgYXMgRWRpdG9yTW9kZWwpPy5sYW5ndWFnZSB8fCAnanNvbicsXHJcblx0XHRcdFx0XHRcdG9wdGlvbnMubW9kZWwudXJpXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0dGhpcy5fbW9uYWNvLmxhbmd1YWdlcy5qc29uLmpzb25EZWZhdWx0cy5zZXREaWFnbm9zdGljc09wdGlvbnMoe1xyXG5cdFx0XHRcdHZhbGlkYXRlOiB0cnVlLCAvLyBFbmFibGVzIGJhc2ljIHN5bnRheCB2YWxpZGF0aW9uXHJcblx0XHRcdFx0YWxsb3dDb21tZW50czogZmFsc2UsIC8vIE9wdGlvbmFsOiBhbGxvdyBjb21tZW50cyBpbiBKU09OXHJcblx0XHRcdFx0c2NoZW1hczogW10gLy8gTm8gc2NoZW1hIHByb3ZpZGVkXHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdFx0Ly8gSW5pdGlhbGl6ZSB0aGUgTW9uYWNvIGVkaXRvciBpbnN0YW5jZVxyXG5cdFx0XHRjb25zdCBlZGl0b3JPcHRpb25zOiBFZGl0b3JPcHRpb25zID0ge1xyXG5cdFx0XHRcdC4uLm9wdGlvbnMsXHJcblx0XHRcdFx0bWluaW1hcDoge1xyXG5cdFx0XHRcdFx0ZW5hYmxlZDogZmFsc2VcclxuXHRcdFx0XHR9XHJcblx0XHRcdH07XHJcblx0XHRcdHRoaXMuX2VkaXRvciA9IHRoaXMuX21vbmFjby5lZGl0b3IuY3JlYXRlKFxyXG5cdFx0XHRcdHRoaXMuX2VkaXRvckNvbnRhaW5lci5uYXRpdmVFbGVtZW50LFxyXG5cdFx0XHRcdGVkaXRvck9wdGlvbnMgYXMgbW9uYWNvLmVkaXRvci5JU3RhbmRhbG9uZUVkaXRvckNvbnN0cnVjdGlvbk9wdGlvbnNcclxuXHRcdFx0KTtcclxuXHJcblx0XHRcdC8vIElmIG5vIG1vZGVsIGlzIHBhc3NlZCBpbiBvcHRpb25zLCBzZXQgdGhlIHZhbHVlIGRpcmVjdGx5XHJcblx0XHRcdGlmICghaGFzTW9kZWwpIHtcclxuXHRcdFx0XHR0aGlzLl9lZGl0b3Iuc2V0VmFsdWUodGhpcy52YWx1ZSB8fCAnJyk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHRoaXMuX21vbmFjby5lZGl0b3Iub25EaWRDaGFuZ2VNYXJrZXJzKCgpID0+IHtcclxuXHRcdFx0XHRjb25zdCBtYXJrZXJzID0gdGhpcy5fbW9uYWNvLmVkaXRvci5nZXRNb2RlbE1hcmtlcnMoe30pO1xyXG5cdFx0XHRcdHRoaXMuaGFzRXJyb3IuZW1pdCghIW1hcmtlcnM/Lmxlbmd0aCk7XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdFx0Ly8gSGFuZGxlIGNvbnRlbnQgY2hhbmdlIGV2ZW50cyB0byBwcm9wYWdhdGUgY2hhbmdlc1xyXG5cdFx0XHR0aGlzLl9lZGl0b3Iub25EaWRDaGFuZ2VNb2RlbENvbnRlbnQoKGU6IG1vbmFjby5lZGl0b3IuSU1vZGVsQ29udGVudENoYW5nZWRFdmVudCkgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IHZhbHVlID0gdGhpcy5fZWRpdG9yLmdldFZhbHVlKCk7XHJcblx0XHRcdFx0dGhpcy56b25lLnJ1bigoKSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLnZhbHVlID0gdmFsdWU7XHJcblx0XHRcdFx0XHR0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpOyAvLyBFbWl0IHRoZSB2YWx1ZSBjaGFuZ2UgZXZlbnRcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSk7XHJcblxyXG5cdFx0XHR0aGlzLl9zdWJzY3JpYmVUb1dpbmRvd1Jlc2l6ZSgpO1xyXG5cclxuXHRcdFx0dGhpcy5vbkluaXQuZW1pdCh7XHJcblx0XHRcdFx0bW9uYWNvOiB0aGlzLl9tb25hY28sXHJcblx0XHRcdFx0ZWRpdG9yOiB0aGlzLl9lZGl0b3JcclxuXHRcdFx0fSk7XHJcblx0XHR9IGNhdGNoIChlcnJvcikge1xyXG5cdFx0XHRjb25zb2xlLmVycm9yKCdFcnJvciBpbml0aWFsaXppbmcgTW9uYWNvIEVkaXRvcjonLCBlcnJvcik7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIF9zdWJzY3JpYmVUb1dpbmRvd1Jlc2l6ZSgpOiB2b2lkIHtcclxuXHRcdGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKVxyXG5cdFx0XHQucGlwZShcclxuXHRcdFx0XHRmaWx0ZXIoKCkgPT4gISF0aGlzLl9lZGl0b3IpLFxyXG5cdFx0XHRcdGRlbGF5KDIwMCksXHJcblx0XHRcdFx0dGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXHJcblx0XHRcdClcclxuXHRcdFx0LnN1YnNjcmliZSgoKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5fZWRpdG9yLmxheW91dCgpO1xyXG5cdFx0XHR9KTtcclxuXHR9XHJcbn1cclxuIl19