nuxeo-development-framework 5.3.2 → 5.3.4

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 (121) hide show
  1. package/bundles/nuxeo-development-framework.umd.js +2677 -292
  2. package/bundles/nuxeo-development-framework.umd.js.map +1 -1
  3. package/esm2015/lib/components/dynamic-search/dynamic-search/dynamic-search.component.js +3 -3
  4. package/esm2015/lib/components/ndf-config-editor/components/config-editor-actions/config-editor-actions.component.js +35 -0
  5. package/esm2015/lib/components/ndf-config-editor/components/editor-mode-switch.component.js +43 -0
  6. package/esm2015/lib/components/ndf-config-editor/components/index.js +4 -0
  7. package/esm2015/lib/components/ndf-config-editor/components/info-dialog/info-dialog.component.js +27 -0
  8. package/esm2015/lib/components/ndf-config-editor/config.token.js +3 -0
  9. package/esm2015/lib/components/ndf-config-editor/constants/index.js +4 -0
  10. package/esm2015/lib/components/ndf-config-editor/constants/mode.js +5 -0
  11. package/esm2015/lib/components/ndf-config-editor/constants/query.js +5 -0
  12. package/esm2015/lib/components/ndf-config-editor/constants/type.js +5 -0
  13. package/esm2015/lib/components/ndf-config-editor/containers/config-preview/config-preview.component.js +28 -0
  14. package/esm2015/lib/components/ndf-config-editor/containers/editor-settings/editor-settings.component.js +73 -0
  15. package/esm2015/lib/components/ndf-config-editor/containers/index.js +5 -0
  16. package/esm2015/lib/components/ndf-config-editor/containers/monaco-editor.component.js +195 -0
  17. package/esm2015/lib/components/ndf-config-editor/containers/ndf-config-editor/ndf-config-editor.component.js +133 -0
  18. package/esm2015/lib/components/ndf-config-editor/index.js +2 -0
  19. package/esm2015/lib/components/ndf-config-editor/models/config.js +2 -0
  20. package/esm2015/lib/components/ndf-config-editor/models/dialog-data.js +2 -0
  21. package/esm2015/lib/components/ndf-config-editor/models/editor-model.js +2 -0
  22. package/esm2015/lib/components/ndf-config-editor/models/index.js +5 -0
  23. package/esm2015/lib/components/ndf-config-editor/models/type-helper.js +2 -0
  24. package/esm2015/lib/components/ndf-config-editor/ndf-config-editor.module.js +118 -0
  25. package/esm2015/lib/components/ndf-config-editor/pipes/index.js +3 -0
  26. package/esm2015/lib/components/ndf-config-editor/pipes/is-valid-json.pipe.js +17 -0
  27. package/esm2015/lib/components/ndf-config-editor/pipes/validate-object.pipe.js +16 -0
  28. package/esm2015/lib/components/ndf-config-editor/public/editor-navigate-button.js +104 -0
  29. package/esm2015/lib/components/ndf-config-editor/public/index.js +2 -0
  30. package/esm2015/lib/components/ndf-config-editor/public-api.js +7 -0
  31. package/esm2015/lib/components/ndf-config-editor/services/data-access.service.js +26 -0
  32. package/esm2015/lib/components/ndf-config-editor/services/data-store.service.js +52 -0
  33. package/esm2015/lib/components/ndf-config-editor/services/dummy-data.js +1321 -0
  34. package/esm2015/lib/components/ndf-config-editor/services/index.js +4 -0
  35. package/esm2015/lib/components/ndf-config-editor/services/monaco.loader.service.js +51 -0
  36. package/esm2015/lib/components/ndf-config-editor/utility/index.js +2 -0
  37. package/esm2015/lib/components/ndf-config-editor/utility/json.js +10 -0
  38. package/esm2015/lib/components/reports/charts/components/data-chart.component.js +2 -2
  39. package/esm2015/lib/components/reports/index.js +3 -0
  40. package/esm2015/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.js +19 -12
  41. package/esm2015/lib/components/reports/ndf-reports/ndf-reports.module.js +14 -5
  42. package/esm2015/lib/components/reports/ndf-reports/services/chart-data-transformers.service.js +15 -1
  43. package/esm2015/lib/components/reports/ndf-reports/services/chart-plugins-registry.service.js +9 -1
  44. package/esm2015/lib/components/tables/ndf-table/containers/ndf-table/ndf-table.component.js +20 -14
  45. package/esm2015/lib/components/tables/ndf-table/directives/index.js +1 -2
  46. package/esm2015/lib/components/tables/ndf-table/models/table-config.js +1 -1
  47. package/esm2015/lib/components/tables/ndf-table/ndf-table.module.js +15 -7
  48. package/esm2015/lib/core/services/extension/component-register.service.js +4 -1
  49. package/esm2015/lib/core/tokens/index.js +2 -0
  50. package/esm2015/lib/core/tokens/project.token.js +3 -0
  51. package/esm2015/lib/directive/permissions/evaluators.service.js +20 -18
  52. package/esm2015/lib/shared/directives/copy-to-clipboard.directive.js +41 -0
  53. package/esm2015/lib/shared/directives/element-height.directive.js +80 -0
  54. package/esm2015/lib/shared/directives/fluid-height.directive.js +115 -0
  55. package/esm2015/lib/shared/directives/index.js +4 -0
  56. package/esm2015/lib/shared/index.js +6 -0
  57. package/esm2015/lib/shared/libraryShared.module.js +35 -10
  58. package/esm2015/lib/shared/models/index.js +2 -1
  59. package/esm2015/lib/shared/models/ndf-request.model.js +2 -0
  60. package/esm2015/public-api.js +4 -1
  61. package/fesm2015/nuxeo-development-framework.js +2531 -193
  62. package/fesm2015/nuxeo-development-framework.js.map +1 -1
  63. package/lib/components/ndf-config-editor/components/config-editor-actions/config-editor-actions.component.d.ts +14 -0
  64. package/lib/components/ndf-config-editor/components/editor-mode-switch.component.d.ts +17 -0
  65. package/lib/components/ndf-config-editor/components/index.d.ts +3 -0
  66. package/lib/components/ndf-config-editor/components/info-dialog/info-dialog.component.d.ts +11 -0
  67. package/lib/components/ndf-config-editor/config.token.d.ts +9 -0
  68. package/lib/components/ndf-config-editor/constants/index.d.ts +3 -0
  69. package/lib/components/ndf-config-editor/constants/mode.d.ts +4 -0
  70. package/lib/components/ndf-config-editor/constants/query.d.ts +4 -0
  71. package/lib/components/ndf-config-editor/constants/type.d.ts +4 -0
  72. package/lib/components/ndf-config-editor/containers/config-preview/config-preview.component.d.ts +15 -0
  73. package/lib/components/ndf-config-editor/containers/editor-settings/editor-settings.component.d.ts +24 -0
  74. package/lib/components/ndf-config-editor/containers/index.d.ts +4 -0
  75. package/lib/components/ndf-config-editor/containers/monaco-editor.component.d.ts +33 -0
  76. package/lib/components/ndf-config-editor/containers/ndf-config-editor/ndf-config-editor.component.d.ts +48 -0
  77. package/lib/components/ndf-config-editor/index.d.ts +1 -0
  78. package/lib/components/ndf-config-editor/models/config.d.ts +24 -0
  79. package/lib/components/ndf-config-editor/models/dialog-data.d.ts +6 -0
  80. package/lib/components/ndf-config-editor/models/editor-model.d.ts +15 -0
  81. package/lib/components/ndf-config-editor/models/index.d.ts +4 -0
  82. package/lib/components/ndf-config-editor/models/type-helper.d.ts +3 -0
  83. package/lib/components/ndf-config-editor/ndf-config-editor.module.d.ts +36 -0
  84. package/lib/components/ndf-config-editor/pipes/index.d.ts +2 -0
  85. package/lib/components/ndf-config-editor/pipes/is-valid-json.pipe.d.ts +7 -0
  86. package/lib/components/ndf-config-editor/pipes/validate-object.pipe.d.ts +7 -0
  87. package/lib/components/ndf-config-editor/public/editor-navigate-button.d.ts +31 -0
  88. package/lib/components/ndf-config-editor/public/index.d.ts +1 -0
  89. package/lib/components/ndf-config-editor/public-api.d.ts +6 -0
  90. package/lib/components/ndf-config-editor/services/data-access.service.d.ts +8 -0
  91. package/lib/components/ndf-config-editor/services/data-store.service.d.ts +24 -0
  92. package/lib/components/ndf-config-editor/services/dummy-data.d.ts +992 -0
  93. package/lib/components/ndf-config-editor/services/index.d.ts +3 -0
  94. package/lib/components/ndf-config-editor/services/monaco.loader.service.d.ts +14 -0
  95. package/lib/components/ndf-config-editor/utility/index.d.ts +1 -0
  96. package/lib/components/ndf-config-editor/utility/json.d.ts +1 -0
  97. package/lib/components/reports/index.d.ts +2 -0
  98. package/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.d.ts +6 -3
  99. package/lib/components/reports/ndf-reports/ndf-reports.module.d.ts +4 -2
  100. package/lib/components/reports/ndf-reports/services/chart-data-transformers.service.d.ts +10 -0
  101. package/lib/components/reports/ndf-reports/services/chart-plugins-registry.service.d.ts +6 -0
  102. package/lib/components/tables/ndf-table/containers/ndf-table/ndf-table.component.d.ts +3 -1
  103. package/lib/components/tables/ndf-table/directives/index.d.ts +0 -1
  104. package/lib/components/tables/ndf-table/models/table-config.d.ts +1 -0
  105. package/lib/components/tables/ndf-table/ndf-table.module.d.ts +4 -2
  106. package/lib/core/services/extension/component-register.service.d.ts +3 -0
  107. package/lib/core/tokens/index.d.ts +1 -0
  108. package/lib/core/tokens/project.token.d.ts +2 -0
  109. package/lib/directive/permissions/evaluators.service.d.ts +4 -2
  110. package/lib/shared/directives/copy-to-clipboard.directive.d.ts +15 -0
  111. package/lib/shared/directives/element-height.directive.d.ts +28 -0
  112. package/lib/{components/tables/ndf-table → shared}/directives/fluid-height.directive.d.ts +2 -1
  113. package/lib/shared/directives/index.d.ts +3 -0
  114. package/lib/shared/index.d.ts +5 -0
  115. package/lib/shared/libraryShared.module.d.ts +3 -1
  116. package/lib/shared/models/index.d.ts +1 -0
  117. package/lib/shared/models/ndf-request.model.d.ts +7 -0
  118. package/package.json +4 -2
  119. package/public-api.d.ts +3 -0
  120. package/src/docs/ndf-table.doc.md +1433 -0
  121. package/esm2015/lib/components/tables/ndf-table/directives/fluid-height.directive.js +0 -112
@@ -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
@@ -0,0 +1,133 @@
1
+ import { Component, Inject, Input } from '@angular/core';
2
+ import { DataStoreService } from '../../services';
3
+ import { CONFIG_EDITOR_MODE } from '../../constants';
4
+ import { BehaviorSubject, ReplaySubject } from 'rxjs';
5
+ import _ from 'lodash';
6
+ import { InfoDialogComponent } from '../../components';
7
+ import { switchMap, takeUntil } from 'rxjs/operators';
8
+ import { DestroySubject } from '../../../../shared';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "../../services";
11
+ import * as i2 from "../../../../configuration/app-config.service";
12
+ import * as i3 from "@angular/material/dialog";
13
+ import * as i4 from "@angular/common";
14
+ import * as i5 from "../editor-settings/editor-settings.component";
15
+ import * as i6 from "../../components/config-editor-actions/config-editor-actions.component";
16
+ import * as i7 from "../../components/editor-mode-switch.component";
17
+ import * as i8 from "../config-preview/config-preview.component";
18
+ import * as i9 from "../monaco-editor.component";
19
+ import * as i10 from "../../../no-data-found/no-data-found.component";
20
+ import * as i11 from "../../../../directive/permissions/permissions.directive";
21
+ import * as i12 from "../../../../shared/directives/fluid-height.directive";
22
+ import * as i13 from "../../../../shared/directives/element-height.directive";
23
+ import * as i14 from "../../pipes/is-valid-json.pipe";
24
+ export class NdfConfigEditorComponent extends DestroySubject {
25
+ constructor(environment, dataStore, configService, matDialog, location) {
26
+ var _a;
27
+ super();
28
+ this.environment = environment;
29
+ this.dataStore = dataStore;
30
+ this.configService = configService;
31
+ this.matDialog = matDialog;
32
+ this.location = location;
33
+ this.isEditorHasErrors = false;
34
+ this._defaultEditorOptions = {
35
+ value: ``,
36
+ language: 'json',
37
+ theme: 'vs',
38
+ automaticLayout: true
39
+ };
40
+ this._optionsSubject = new BehaviorSubject(this._defaultEditorOptions);
41
+ this.options$ = this._optionsSubject.asObservable();
42
+ this._themeSubject = new ReplaySubject();
43
+ this.theme$ = this._themeSubject.asObservable();
44
+ this._dataKeySubject = new ReplaySubject();
45
+ this.previewData$ = this.dataStore.previewData$;
46
+ this.editorData$ = this.dataStore.editorData$;
47
+ this.modes = CONFIG_EDITOR_MODE;
48
+ this.isFeatureEnabled = false;
49
+ this.config = (_a = this.configService.myConfiguration) === null || _a === void 0 ? void 0 : _a.configEditor;
50
+ this.isFeatureEnabled = environment.configEditor === 'YES';
51
+ }
52
+ ngOnChanges(changes) {
53
+ this._handleMetadataChanges(changes);
54
+ this._handleOptionsAndThemeChanges(changes);
55
+ }
56
+ ngOnInit() {
57
+ this._dataKeySubject
58
+ .pipe(switchMap((key) => this.dataStore.getData(key, this.metadata.type)), takeUntil(this.destroy$))
59
+ .subscribe((res) => { });
60
+ }
61
+ onDataChanged(data) {
62
+ this.dataStore.storeData(data);
63
+ }
64
+ onEditorErrors(hasErrors) {
65
+ this.isEditorHasErrors = hasErrors;
66
+ }
67
+ saveData() {
68
+ this.dataStore.saveData(this.metadata.key);
69
+ }
70
+ navigateBack() {
71
+ this.location.back();
72
+ }
73
+ onEditorReady(data) {
74
+ this._monaco = data.monaco;
75
+ }
76
+ openInfoDialog(documentation) {
77
+ this.matDialog.open(InfoDialogComponent, {
78
+ panelClass: 'ndf-dialog',
79
+ width: 'min(1200px,90%)',
80
+ height: '90vh',
81
+ data: {
82
+ title: 'JSON_EDITOR.info',
83
+ type: this.metadata.type,
84
+ url: documentation
85
+ }
86
+ });
87
+ }
88
+ _handleMetadataChanges(changes) {
89
+ var _a;
90
+ if ((_a = changes === null || changes === void 0 ? void 0 : changes.metadata) === null || _a === void 0 ? void 0 : _a.currentValue) {
91
+ const metadata = changes.metadata.currentValue;
92
+ this._dataKeySubject.next(metadata.key);
93
+ this.dataStore.changeEditorType(metadata.type);
94
+ }
95
+ }
96
+ _handleOptionsAndThemeChanges(changes) {
97
+ var _a, _b, _c;
98
+ const themeValue = (_a = changes.theme) === null || _a === void 0 ? void 0 : _a.currentValue;
99
+ const optionsValue = (_b = changes.options) === null || _b === void 0 ? void 0 : _b.currentValue;
100
+ const isThemeFirstChange = (_c = changes === null || changes === void 0 ? void 0 : changes.theme) === null || _c === void 0 ? void 0 : _c.firstChange;
101
+ let mergedOptions = _.merge(this._defaultEditorOptions, optionsValue || {}, { language: 'json' });
102
+ if (themeValue && isThemeFirstChange) {
103
+ mergedOptions.theme = themeValue;
104
+ }
105
+ if (optionsValue || (themeValue && isThemeFirstChange)) {
106
+ this._optionsSubject.next(_.cloneDeep(mergedOptions));
107
+ }
108
+ if (themeValue && !isThemeFirstChange) {
109
+ this._themeSubject.next(themeValue);
110
+ }
111
+ }
112
+ }
113
+ NdfConfigEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfConfigEditorComponent, deps: [{ token: 'environment' }, { token: i1.DataStoreService }, { token: i2.AppConfigService }, { token: i3.MatDialog }, { token: i4.Location }], target: i0.ɵɵFactoryTarget.Component });
114
+ NdfConfigEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NdfConfigEditorComponent, selector: "app-ndf-config-editor", inputs: { metadata: "metadata", theme: "theme", options: "options" }, providers: [DataStoreService], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"config?.enabled && isFeatureEnabled; else emptyTpl\">\r\n\t<div class=\"ndf-config-editor\" ndfFluidHeight *permission=\"{ name: config?.types[metadata?.type]?.permission }\">\r\n\t\t<div class=\"ndf-config-editor__sidebar\">\r\n\t\t\t<app-editor-settings class=\"ndf-config-editor__setting\"></app-editor-settings>\r\n\t\t\t<app-config-editor-actions\r\n\t\t\t\tappItemHeight\r\n\t\t\t\tcssVar=\"--ndf-editor-actions-height\"\r\n\t\t\t\t[saveDisabled]=\"isEditorHasErrors || !(dataStore.editorData | isValidJson)\"\r\n\t\t\t\t[config]=\"config?.types[metadata?.type]\"\r\n\t\t\t\t(onInfo)=\"openInfoDialog($event)\"\r\n\t\t\t\t(onBack)=\"navigateBack()\"\r\n\t\t\t\t(onSave)=\"saveData()\"\r\n\t\t\t>\r\n\t\t\t</app-config-editor-actions>\r\n\t\t</div>\r\n\t\t<div class=\"ndf-config-editor__content\">\r\n\t\t\t<div class=\"ndf-config-editor__topbar\">\r\n\t\t\t\t<app-editor-mode-switch\r\n\t\t\t\t\t[mode]=\"dataStore.editorMode\"\r\n\t\t\t\t\t(changeMode)=\"dataStore.changeMode($event)\"\r\n\t\t\t\t></app-editor-mode-switch>\r\n\t\t\t</div>\r\n\t\t\t<app-config-preview\r\n\t\t\t\t*ngIf=\"dataStore.editorMode === modes.PREVIEW\"\r\n [type]=\"dataStore.editorType$ | async\"\r\n\t\t\t\t[data]=\"previewData$ | async\"\r\n\t\t\t></app-config-preview>\r\n\t\t\t<ndf-monaco-editor\r\n\t\t\t\t*ngIf=\"dataStore.editorMode === modes.EDIT\"\r\n\t\t\t\t[value]=\"editorData$ | async\"\r\n\t\t\t\t[options]=\"options$ | async\"\r\n\t\t\t\t[theme]=\"theme$ | async\"\r\n\t\t\t\t(valueChange)=\"onDataChanged($event)\"\r\n\t\t\t\t(hasError)=\"onEditorErrors($event)\"\r\n\t\t\t\t(onInit)=\"onEditorReady($event)\"\r\n\t\t\t></ndf-monaco-editor>\r\n\t\t</div>\r\n\t</div>\r\n</ng-container>\r\n\r\n<ng-template #emptyTpl>\r\n\t<div class=\"ndf-empty-config\">\r\n\t\t<app-no-data-found message=\"JSON_EDITOR.MESSAGES.notAllowed\"></app-no-data-found>\r\n\t</div>\r\n</ng-template>\r\n", styles: [":host{display:var(--ndf-config-wrapper-display, flex);flex-direction:var(--ndf-config-wrapper-direction, column);grid-gap:var(--ndf-config-wrapper-gap, .5rem);gap:var(--ndf-config-wrapper-gap, .5rem);flex-grow:1;height:var(--ndf-config-wrapper-height, 100%)}.ndf-empty-config{justify-content:center;align-items:center}.ndf-empty-config,.ndf-config-editor{padding:var(--ndf-editor-padding, 1rem);background-color:var(--ndf-editor-background-color, #fff);color:var(--ndf-editor-color);border-radius:var(--ndf-editor-border-radius, .5rem);display:flex;flex-grow:1;max-height:var(--ndf-fluid-height, 100%)}.ndf-config-editor{grid-gap:var(--ndf-editor--gap, 1rem);gap:var(--ndf-editor--gap, 1rem)}.ndf-config-editor__sidebar{width:var(--ndf-editor-sidebar-width, 18rem);background:var(--ndf-editor-sidebar-background);border:var(--ndf-editor-sidebars-border, 0px solid transparent);border-radius:var(--ndf-editor-sidebar-radius, 0rem);display:grid;grid-template-rows:var(--ndf-editor-sidebar-rows, 1fr auto)}.ndf-config-editor__content{flex-grow:1;background:var(--ndf-editor-content-background);border:var(--ndf-editor-content-border, 0px solid transparent);border-radius:var(--ndf-editor-content-radius, 0rem);display:flex;flex-direction:column;grid-gap:var(--ndf-editor-content-gap, 1rem);gap:var(--ndf-editor-content-gap, 1rem)}.ndf-config-editor__topbar{display:var(--ndf-editor-topbar-display, flex);justify-content:var(--ndf-editor-topbar-justify-content, flex-end)}.ndf-config-editor__setting{max-height:var(--ndf-editor-content-max-height, calc(var(--ndf-fluid-height) - var(--ndf-editor-actions-height, 125px) - 2.5rem));overflow:auto}\n"], components: [{ type: i5.EditorSettingsComponent, selector: "app-editor-settings" }, { type: i6.ConfigEditorActionsComponent, selector: "app-config-editor-actions", inputs: ["saveDisabled", "config"], outputs: ["onSave", "onInfo", "onBack"] }, { type: i7.EditorModeSwitchComponent, selector: "app-editor-mode-switch", inputs: ["mode"], outputs: ["changeMode"] }, { type: i8.ConfigPreviewComponent, selector: "app-config-preview", inputs: ["type", "data"] }, { type: i9.MonacoEditorComponent, selector: "ndf-monaco-editor", inputs: ["value", "options", "theme", "model"], outputs: ["onInit", "hasError", "valueChange"] }, { type: i10.NoDataFoundComponent, selector: "app-no-data-found", inputs: ["message", "width", "height"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i11.PermissionsDirective, selector: "[permission]", inputs: ["permission"] }, { type: i12.FluidHeightDirective, selector: "[ndfFluidHeight]", inputs: ["minHeight", "ndfFluidHeight", "subtractItems", "decrease", "delay", "cssVar", "calculate", "inlineStyle"], exportAs: ["ndfFluidHeight"] }, { type: i13.ElementHeightDirective, selector: "[appItemHeight]", inputs: ["cssVar", "calculate", "inlineStyle"], exportAs: ["appItemHeight"] }], pipes: { "isValidJson": i14.IsValidJsonPipe, "async": i4.AsyncPipe } });
115
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfConfigEditorComponent, decorators: [{
116
+ type: Component,
117
+ args: [{
118
+ selector: 'app-ndf-config-editor',
119
+ templateUrl: './ndf-config-editor.component.html',
120
+ styleUrls: ['./ndf-config-editor.component.scss'],
121
+ providers: [DataStoreService]
122
+ }]
123
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
124
+ type: Inject,
125
+ args: ['environment']
126
+ }] }, { type: i1.DataStoreService }, { type: i2.AppConfigService }, { type: i3.MatDialog }, { type: i4.Location }]; }, propDecorators: { metadata: [{
127
+ type: Input
128
+ }], theme: [{
129
+ type: Input
130
+ }], options: [{
131
+ type: Input
132
+ }] } });
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmRmLWNvbmZpZy1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9uZGYtY29uZmlnLWVkaXRvci9jb250YWluZXJzL25kZi1jb25maWctZWRpdG9yL25kZi1jb25maWctZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvbmRmLWNvbmZpZy1lZGl0b3IvY29udGFpbmVycy9uZGYtY29uZmlnLWVkaXRvci9uZGYtY29uZmlnLWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQW9DLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBVXJELE9BQU8sRUFBRSxlQUFlLEVBQWMsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUd2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV2RCxPQUFPLEVBQVUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVNwRCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsY0FBYztJQStCM0QsWUFDeUMsV0FBZ0MsRUFDeEQsU0FBMkIsRUFDMUIsYUFBK0IsRUFDL0IsU0FB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RUQsSUFBSSxVQUFVLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUNwQztJQUNGLENBQUM7O3NIQXBIVyx3QkFBd0Isa0JBZ0MzQixhQUFhOzBHQWhDVix3QkFBd0Isc0hBRnpCLENBQUMsZ0JBQWdCLENBQUMsc0VDMUI5Qix1M0RBNkNBOzRGRGpCYSx3QkFBd0I7a0JBTnBDLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsV0FBVyxFQUFFLG9DQUFvQztvQkFDakQsU0FBUyxFQUFFLENBQUMsb0NBQW9DLENBQUM7b0JBQ2pELFNBQVMsRUFBRSxDQUFDLGdCQUFnQixDQUFDO2lCQUM3Qjs7MEJBaUNFLE1BQU07MkJBQUMsYUFBYTt5SkFmYixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERhdGFTdG9yZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IENPTkZJR19FRElUT1JfTU9ERSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7XHJcblx0RWRpdG9yT3B0aW9ucyxcclxuXHRFZGl0b3JUeXBlLFxyXG5cdEluZm9EaWFsb2dEYXRhLFxyXG5cdE5kZkNvbmZpZ01vZGVsLFxyXG5cdE5kZkNvbmZpZ01ldGFkYXRhLFxyXG5cdE1vbmFjb0VkaXRvcixcclxuXHRFZGl0b3JUaGVtZVxyXG59IGZyb20gJy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29uZmlndXJhdGlvbi9hcHAtY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBJbmZvRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cyc7XHJcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgZmlsdGVyLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRGVzdHJveVN1YmplY3QgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQnO1xyXG5pbXBvcnQgKiBhcyBtb25hY28gZnJvbSAnbW9uYWNvLWVkaXRvcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2FwcC1uZGYtY29uZmlnLWVkaXRvcicsXHJcblx0dGVtcGxhdGVVcmw6ICcuL25kZi1jb25maWctZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9uZGYtY29uZmlnLWVkaXRvci5jb21wb25lbnQuc2NzcyddLFxyXG5cdHByb3ZpZGVyczogW0RhdGFTdG9yZVNlcnZpY2VdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZGZDb25maWdFZGl0b3JDb21wb25lbnQgZXh0ZW5kcyBEZXN0cm95U3ViamVjdCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuXHRpc0VkaXRvckhhc0Vycm9ycyA9IGZhbHNlO1xyXG5cclxuXHRwcml2YXRlIHJlYWRvbmx5IF9kZWZhdWx0RWRpdG9yT3B0aW9uczogRWRpdG9yT3B0aW9ucyA9IHtcclxuXHRcdHZhbHVlOiBgYCxcclxuXHRcdGxhbmd1YWdlOiAnanNvbicsXHJcblx0XHR0aGVtZTogJ3ZzJywgLy8ndnMnIChkZWZhdWx0KSwgJ3ZzLWRhcmsnLCAnaGMtYmxhY2snLCAnaGMtbGlnaHQuXHJcblx0XHRhdXRvbWF0aWNMYXlvdXQ6IHRydWVcclxuXHR9O1xyXG5cclxuXHRwcml2YXRlIHJlYWRvbmx5IF9vcHRpb25zU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RWRpdG9yT3B0aW9ucz4odGhpcy5fZGVmYXVsdEVkaXRvck9wdGlvbnMpO1xyXG5cdHJlYWRvbmx5IG9wdGlvbnMkID0gdGhpcy5fb3B0aW9uc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG5cdHByaXZhdGUgcmVhZG9ubHkgX3RoZW1lU3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PEVkaXRvclRoZW1lPigpO1xyXG5cdHJlYWRvbmx5IHRoZW1lJCA9IHRoaXMuX3RoZW1lU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHRwcml2YXRlIHJlYWRvbmx5IF9kYXRhS2V5U3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PHN0cmluZz4oKTtcclxuXHJcblx0QElucHV0KCkgbWV0YWRhdGE6IE5kZkNvbmZpZ01ldGFkYXRhO1xyXG5cdEBJbnB1dCgpIHRoZW1lOiBFZGl0b3JUaGVtZTtcclxuXHRASW5wdXQoKSBvcHRpb25zOiBFZGl0b3JPcHRpb25zO1xyXG5cclxuXHRwcml2YXRlIF9tb25hY286IHR5cGVvZiBtb25hY287XHJcblxyXG5cdGNvbmZpZzogTmRmQ29uZmlnTW9kZWw7XHJcblxyXG5cdHByZXZpZXdEYXRhJCA9IHRoaXMuZGF0YVN0b3JlLnByZXZpZXdEYXRhJDtcclxuXHRlZGl0b3JEYXRhJCA9IHRoaXMuZGF0YVN0b3JlLmVkaXRvckRhdGEkO1xyXG5cdHJlYWRvbmx5IG1vZGVzID0gQ09ORklHX0VESVRPUl9NT0RFO1xyXG5cclxuXHRpc0ZlYXR1cmVFbmFibGVkID0gZmFsc2U7XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0QEluamVjdCgnZW52aXJvbm1lbnQnKSBwcml2YXRlIHJlYWRvbmx5IGVudmlyb25tZW50OiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxyXG5cdFx0cHVibGljIHJlYWRvbmx5IGRhdGFTdG9yZTogRGF0YVN0b3JlU2VydmljZSxcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkgY29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZSxcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkgbWF0RGlhbG9nOiBNYXREaWFsb2csXHJcblx0XHRwcml2YXRlIHJlYWRvbmx5IGxvY2F0aW9uOiBMb2NhdGlvblxyXG5cdCkge1xyXG5cdFx0c3VwZXIoKTtcclxuXHRcdHRoaXMuY29uZmlnID0gdGhpcy5jb25maWdTZXJ2aWNlLm15Q29uZmlndXJhdGlvbj8uY29uZmlnRWRpdG9yO1xyXG5cdFx0dGhpcy5pc0ZlYXR1cmVFbmFibGVkID0gZW52aXJvbm1lbnQuY29uZmlnRWRpdG9yID09PSAnWUVTJztcclxuXHR9XHJcblxyXG5cdG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuXHRcdHRoaXMuX2hhbmRsZU1ldGFkYXRhQ2hhbmdlcyhjaGFuZ2VzKTtcclxuXHRcdHRoaXMuX2hhbmRsZU9wdGlvbnNBbmRUaGVtZUNoYW5nZXMoY2hhbmdlcyk7XHJcblx0fVxyXG5cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHRcdHRoaXMuX2RhdGFLZXlTdWJqZWN0XHJcblx0XHRcdC5waXBlKFxyXG5cdFx0XHRcdHN3aXRjaE1hcCgoa2V5KSA9PiB0aGlzLmRhdGFTdG9yZS5nZXREYXRhKGtleSwgdGhpcy5tZXRhZGF0YS50eXBlKSksXHJcblx0XHRcdFx0dGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXHJcblx0XHRcdClcclxuXHRcdFx0LnN1YnNjcmliZSgocmVzKSA9PiB7fSk7XHJcblx0fVxyXG5cclxuXHRvbkRhdGFDaGFuZ2VkKGRhdGE6IHN0cmluZykge1xyXG5cdFx0dGhpcy5kYXRhU3RvcmUuc3RvcmVEYXRhKGRhdGEpO1xyXG5cdH1cclxuXHJcblx0b25FZGl0b3JFcnJvcnMoaGFzRXJyb3JzOiBib29sZWFuKTogdm9pZCB7XHJcblx0XHR0aGlzLmlzRWRpdG9ySGFzRXJyb3JzID0gaGFzRXJyb3JzO1xyXG5cdH1cclxuXHJcblx0c2F2ZURhdGEoKSB7XHJcblx0XHR0aGlzLmRhdGFTdG9yZS5zYXZlRGF0YSh0aGlzLm1ldGFkYXRhLmtleSk7XHJcblx0fVxyXG5cclxuXHRuYXZpZ2F0ZUJhY2soKSB7XHJcblx0XHR0aGlzLmxvY2F0aW9uLmJhY2soKTtcclxuXHR9XHJcblxyXG5cdG9uRWRpdG9yUmVhZHkoZGF0YTogTW9uYWNvRWRpdG9yKSB7XHJcblx0XHR0aGlzLl9tb25hY28gPSBkYXRhLm1vbmFjbztcclxuXHR9XHJcblxyXG5cdG9wZW5JbmZvRGlhbG9nKGRvY3VtZW50YXRpb246IHN0cmluZyk6IHZvaWQge1xyXG5cdFx0dGhpcy5tYXREaWFsb2cub3BlbjxJbmZvRGlhbG9nQ29tcG9uZW50LCBJbmZvRGlhbG9nRGF0YT4oSW5mb0RpYWxvZ0NvbXBvbmVudCwge1xyXG5cdFx0XHRwYW5lbENsYXNzOiAnbmRmLWRpYWxvZycsXHJcblx0XHRcdHdpZHRoOiAnbWluKDEyMDBweCw5MCUpJyxcclxuXHRcdFx0aGVpZ2h0OiAnOTB2aCcsXHJcblx0XHRcdGRhdGE6IHtcclxuXHRcdFx0XHR0aXRsZTogJ0pTT05fRURJVE9SLmluZm8nLFxyXG5cdFx0XHRcdHR5cGU6IHRoaXMubWV0YWRhdGEudHlwZSxcclxuXHRcdFx0XHR1cmw6IGRvY3VtZW50YXRpb25cclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIF9oYW5kbGVNZXRhZGF0YUNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG5cdFx0aWYgKGNoYW5nZXM/Lm1ldGFkYXRhPy5jdXJyZW50VmFsdWUpIHtcclxuXHRcdFx0Y29uc3QgbWV0YWRhdGEgPSBjaGFuZ2VzLm1ldGFkYXRhLmN1cnJlbnRWYWx1ZTtcclxuXHRcdFx0dGhpcy5fZGF0YUtleVN1YmplY3QubmV4dChtZXRhZGF0YS5rZXkpO1xyXG5cdFx0XHR0aGlzLmRhdGFTdG9yZS5jaGFuZ2VFZGl0b3JUeXBlKG1ldGFkYXRhLnR5cGUpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBfaGFuZGxlT3B0aW9uc0FuZFRoZW1lQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcblx0XHRjb25zdCB0aGVtZVZhbHVlID0gY2hhbmdlcy50aGVtZT8uY3VycmVudFZhbHVlO1xyXG5cdFx0Y29uc3Qgb3B0aW9uc1ZhbHVlID0gY2hhbmdlcy5vcHRpb25zPy5jdXJyZW50VmFsdWU7XHJcblx0XHRjb25zdCBpc1RoZW1lRmlyc3RDaGFuZ2UgPSBjaGFuZ2VzPy50aGVtZT8uZmlyc3RDaGFuZ2U7XHJcblxyXG5cdFx0bGV0IG1lcmdlZE9wdGlvbnMgPSBfLm1lcmdlKHRoaXMuX2RlZmF1bHRFZGl0b3JPcHRpb25zLCBvcHRpb25zVmFsdWUgfHwge30sIHsgbGFuZ3VhZ2U6ICdqc29uJyB9KTtcclxuXHJcblx0XHRpZiAodGhlbWVWYWx1ZSAmJiBpc1RoZW1lRmlyc3RDaGFuZ2UpIHtcclxuXHRcdFx0bWVyZ2VkT3B0aW9ucy50aGVtZSA9IHRoZW1lVmFsdWU7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKG9wdGlvbnNWYWx1ZSB8fCAodGhlbWVWYWx1ZSAmJiBpc1RoZW1lRmlyc3RDaGFuZ2UpKSB7XHJcblx0XHRcdHRoaXMuX29wdGlvbnNTdWJqZWN0Lm5leHQoXy5jbG9uZURlZXAobWVyZ2VkT3B0aW9ucykpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICh0aGVtZVZhbHVlICYmICFpc1RoZW1lRmlyc3RDaGFuZ2UpIHtcclxuXHRcdFx0dGhpcy5fdGhlbWVTdWJqZWN0Lm5leHQodGhlbWVWYWx1ZSk7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWc/LmVuYWJsZWQgJiYgaXNGZWF0dXJlRW5hYmxlZDsgZWxzZSBlbXB0eVRwbFwiPlxyXG5cdDxkaXYgY2xhc3M9XCJuZGYtY29uZmlnLWVkaXRvclwiIG5kZkZsdWlkSGVpZ2h0ICpwZXJtaXNzaW9uPVwieyBuYW1lOiBjb25maWc/LnR5cGVzW21ldGFkYXRhPy50eXBlXT8ucGVybWlzc2lvbiB9XCI+XHJcblx0XHQ8ZGl2IGNsYXNzPVwibmRmLWNvbmZpZy1lZGl0b3JfX3NpZGViYXJcIj5cclxuXHRcdFx0PGFwcC1lZGl0b3Itc2V0dGluZ3MgY2xhc3M9XCJuZGYtY29uZmlnLWVkaXRvcl9fc2V0dGluZ1wiPjwvYXBwLWVkaXRvci1zZXR0aW5ncz5cclxuXHRcdFx0PGFwcC1jb25maWctZWRpdG9yLWFjdGlvbnNcclxuXHRcdFx0XHRhcHBJdGVtSGVpZ2h0XHJcblx0XHRcdFx0Y3NzVmFyPVwiLS1uZGYtZWRpdG9yLWFjdGlvbnMtaGVpZ2h0XCJcclxuXHRcdFx0XHRbc2F2ZURpc2FibGVkXT1cImlzRWRpdG9ySGFzRXJyb3JzIHx8ICEoZGF0YVN0b3JlLmVkaXRvckRhdGEgfCBpc1ZhbGlkSnNvbilcIlxyXG5cdFx0XHRcdFtjb25maWddPVwiY29uZmlnPy50eXBlc1ttZXRhZGF0YT8udHlwZV1cIlxyXG5cdFx0XHRcdChvbkluZm8pPVwib3BlbkluZm9EaWFsb2coJGV2ZW50KVwiXHJcblx0XHRcdFx0KG9uQmFjayk9XCJuYXZpZ2F0ZUJhY2soKVwiXHJcblx0XHRcdFx0KG9uU2F2ZSk9XCJzYXZlRGF0YSgpXCJcclxuXHRcdFx0PlxyXG5cdFx0XHQ8L2FwcC1jb25maWctZWRpdG9yLWFjdGlvbnM+XHJcblx0XHQ8L2Rpdj5cclxuXHRcdDxkaXYgY2xhc3M9XCJuZGYtY29uZmlnLWVkaXRvcl9fY29udGVudFwiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwibmRmLWNvbmZpZy1lZGl0b3JfX3RvcGJhclwiPlxyXG5cdFx0XHRcdDxhcHAtZWRpdG9yLW1vZGUtc3dpdGNoXHJcblx0XHRcdFx0XHRbbW9kZV09XCJkYXRhU3RvcmUuZWRpdG9yTW9kZVwiXHJcblx0XHRcdFx0XHQoY2hhbmdlTW9kZSk9XCJkYXRhU3RvcmUuY2hhbmdlTW9kZSgkZXZlbnQpXCJcclxuXHRcdFx0XHQ+PC9hcHAtZWRpdG9yLW1vZGUtc3dpdGNoPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PGFwcC1jb25maWctcHJldmlld1xyXG5cdFx0XHRcdCpuZ0lmPVwiZGF0YVN0b3JlLmVkaXRvck1vZGUgPT09IG1vZGVzLlBSRVZJRVdcIlxyXG4gICAgICAgIFt0eXBlXT1cImRhdGFTdG9yZS5lZGl0b3JUeXBlJCB8IGFzeW5jXCJcclxuXHRcdFx0XHRbZGF0YV09XCJwcmV2aWV3RGF0YSQgfCBhc3luY1wiXHJcblx0XHRcdD48L2FwcC1jb25maWctcHJldmlldz5cclxuXHRcdFx0PG5kZi1tb25hY28tZWRpdG9yXHJcblx0XHRcdFx0Km5nSWY9XCJkYXRhU3RvcmUuZWRpdG9yTW9kZSA9PT0gbW9kZXMuRURJVFwiXHJcblx0XHRcdFx0W3ZhbHVlXT1cImVkaXRvckRhdGEkIHwgYXN5bmNcIlxyXG5cdFx0XHRcdFtvcHRpb25zXT1cIm9wdGlvbnMkIHwgYXN5bmNcIlxyXG5cdFx0XHRcdFt0aGVtZV09XCJ0aGVtZSQgfCBhc3luY1wiXHJcblx0XHRcdFx0KHZhbHVlQ2hhbmdlKT1cIm9uRGF0YUNoYW5nZWQoJGV2ZW50KVwiXHJcblx0XHRcdFx0KGhhc0Vycm9yKT1cIm9uRWRpdG9yRXJyb3JzKCRldmVudClcIlxyXG5cdFx0XHRcdChvbkluaXQpPVwib25FZGl0b3JSZWFkeSgkZXZlbnQpXCJcclxuXHRcdFx0PjwvbmRmLW1vbmFjby1lZGl0b3I+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48bmctdGVtcGxhdGUgI2VtcHR5VHBsPlxyXG5cdDxkaXYgY2xhc3M9XCJuZGYtZW1wdHktY29uZmlnXCI+XHJcblx0XHQ8YXBwLW5vLWRhdGEtZm91bmQgbWVzc2FnZT1cIkpTT05fRURJVE9SLk1FU1NBR0VTLm5vdEFsbG93ZWRcIj48L2FwcC1uby1kYXRhLWZvdW5kPlxyXG5cdDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './public-api';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL25kZi1jb25maWctZWRpdG9yL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcclxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9uZGYtY29uZmlnLWVkaXRvci9tb2RlbHMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZGZSZXF1ZXN0TW9kZWwgfSBmcm9tIFwiLi4vLi4vLi4vc2hhcmVkL21vZGVsc1wiO1xyXG5pbXBvcnQgeyBFZGl0b3JUeXBlIH0gZnJvbSBcIi4vdHlwZS1oZWxwZXJcIjtcclxuXHJcblxyXG5cclxuZXhwb3J0IHR5cGUgTmRmQ29uZmlnVHlwZU1vZGVsID0ge1xyXG5cdGVuYWJsZWQ6IGJvb2xlYW47XHJcblx0cGVybWlzc2lvbj86IHN0cmluZztcclxuXHRuYXZpZ2F0ZVVybDogc3RyaW5nO1xyXG5cdGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XHJcbn07XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE5kZkNvbmZpZ01vZGVsIHtcclxuXHRlbmFibGVkOiBib29sZWFuO1xyXG5cdHR5cGVzOiBSZWNvcmQ8RWRpdG9yVHlwZSwgTmRmQ29uZmlnVHlwZU1vZGVsPjtcclxuXHRhcGk6IHtcclxuXHRcdGJhc2VVcmw6IHN0cmluZztcclxuXHRcdGVuZHBvaW50czoge1xyXG5cdFx0XHRnZXQ6IE5kZlJlcXVlc3RNb2RlbDtcclxuXHRcdFx0Y3JlYXRlOiBOZGZSZXF1ZXN0TW9kZWw7XHJcblx0XHRcdHVwZGF0ZTogTmRmUmVxdWVzdE1vZGVsO1xyXG5cdFx0fTtcclxuXHR9O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBOZGZDb25maWdNZXRhZGF0YSA9IHtcclxuXHRrZXk6IHN0cmluZztcclxuXHR0eXBlOiBFZGl0b3JUeXBlO1xyXG59O1xyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL25kZi1jb25maWctZWRpdG9yL21vZGVscy9kaWFsb2ctZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWRpdG9yVHlwZSB9IGZyb20gJy4vdHlwZS1oZWxwZXInO1xyXG5cclxuZXhwb3J0IHR5cGUgSW5mb0RpYWxvZ0RhdGEgPSB7XHJcblx0dGl0bGU6IHN0cmluZztcclxuXHR0eXBlOiBFZGl0b3JUeXBlO1xyXG5cdHVybDogc3RyaW5nO1xyXG59O1xyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLW1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9uZGYtY29uZmlnLWVkaXRvci9tb2RlbHMvZWRpdG9yLW1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBtb25hY28gZnJvbSAnbW9uYWNvLWVkaXRvcic7XHJcblxyXG5leHBvcnQgdHlwZSBFZGl0b3JNb2RlbCA9IHtcclxuXHR2YWx1ZTogc3RyaW5nO1xyXG5cdGxhbmd1YWdlPzogc3RyaW5nO1xyXG5cdHVyaT86IGFueTtcclxufTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRWRpdG9yT3B0aW9ucyBleHRlbmRzIE9taXQ8bW9uYWNvLmVkaXRvci5JU3RhbmRhbG9uZUVkaXRvckNvbnN0cnVjdGlvbk9wdGlvbnMsICdtb2RlbCc+IHtcclxuXHRtb2RlbD86IG1vbmFjby5lZGl0b3IuSVRleHRNb2RlbCB8IEVkaXRvck1vZGVsO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBFZGl0b3JNb2RlbFR5cGUgPSBFZGl0b3JNb2RlbCB8IG1vbmFjby5lZGl0b3IuSVRleHRNb2RlbDtcclxuXHJcbmV4cG9ydCB0eXBlIE1vbmFjb0VkaXRvciA9IHtcclxuXHRtb25hY286IHR5cGVvZiBtb25hY287XHJcblx0ZWRpdG9yOiBtb25hY28uZWRpdG9yLklTdGFuZGFsb25lQ29kZUVkaXRvcjtcclxufTtcclxuXHJcbmV4cG9ydCB0eXBlIEVkaXRvclRoZW1lID0gJ3ZzJyB8ICd2cy1kYXJrJyB8ICdoYy1ibGFjaycgfCAnaGMtbGlnaHQnO1xyXG4iXX0=
@@ -0,0 +1,5 @@
1
+ export * from './type-helper';
2
+ export * from './editor-model';
3
+ export * from './config';
4
+ export * from './dialog-data';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL25kZi1jb25maWctZWRpdG9yL21vZGVscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90eXBlLWhlbHBlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yLW1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9jb25maWcnO1xyXG5leHBvcnQgKiBmcm9tICcuL2RpYWxvZy1kYXRhJztcclxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL25kZi1jb25maWctZWRpdG9yL21vZGVscy90eXBlLWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ09ORklHX0VESVRPUl9NT0RFLCBOREZfRURJVE9SX1RZUEUgfSBmcm9tICcuLi9jb25zdGFudHMnO1xyXG5cclxuZXhwb3J0IHR5cGUgRWRpdG9yTW9kZSA9ICh0eXBlb2YgQ09ORklHX0VESVRPUl9NT0RFKVtrZXlvZiB0eXBlb2YgQ09ORklHX0VESVRPUl9NT0RFXTtcclxuZXhwb3J0IHR5cGUgRWRpdG9yVHlwZSA9ICh0eXBlb2YgTkRGX0VESVRPUl9UWVBFKVtrZXlvZiB0eXBlb2YgTkRGX0VESVRPUl9UWVBFXTtcclxuIl19
@@ -0,0 +1,118 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { ConfigPreviewComponent, EditorSettingsComponent, MonacoEditorComponent, NdfConfigEditorComponent } from './containers';
4
+ import { EditorModeSwitchComponent, InfoDialogComponent, ConfigEditorActionsComponent } from './components';
5
+ import { MatButtonToggleModule } from '@angular/material/button-toggle';
6
+ import { MatFormFieldModule } from '@angular/material/form-field';
7
+ import { MatButtonModule } from '@angular/material/button';
8
+ import { MatIconModule } from '@angular/material/icon';
9
+ import { MatTooltipModule } from '@angular/material/tooltip';
10
+ import { TranslateModule } from '@ngx-translate/core';
11
+ import { MONACO_EDITOR_CONFIG } from './config.token';
12
+ import { CopyToClipboardModule, ElementHeightModule, FluidHeightModule, NuxeoDialogModule } from '../../shared';
13
+ import { NoDataModule } from '../no-data-found';
14
+ import { MarkdownModule } from 'ngx-markdown';
15
+ import { DynamicFormModule } from '../dynamic-form/dynamic-form.module';
16
+ import { MatDialogModule } from '@angular/material/dialog';
17
+ import { NdfTableModule } from '../tables';
18
+ import { NdfReportsModule } from '../reports';
19
+ import { CdkAccordionModule } from '@angular/cdk/accordion';
20
+ import { IsValidJsonPipe, ValidateObjectPipe } from './pipes';
21
+ import { DirectiveModule } from '../../directive/directive.module';
22
+ import * as i0 from "@angular/core";
23
+ export class NdfConfigEditorModule {
24
+ static forRoot(config = {}) {
25
+ return {
26
+ ngModule: NdfConfigEditorModule,
27
+ providers: [{ provide: MONACO_EDITOR_CONFIG, useValue: config }]
28
+ };
29
+ }
30
+ }
31
+ NdfConfigEditorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfConfigEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
32
+ NdfConfigEditorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfConfigEditorModule, declarations: [EditorModeSwitchComponent,
33
+ NdfConfigEditorComponent,
34
+ MonacoEditorComponent,
35
+ EditorSettingsComponent,
36
+ ConfigPreviewComponent,
37
+ ConfigEditorActionsComponent,
38
+ InfoDialogComponent,
39
+ ValidateObjectPipe,
40
+ IsValidJsonPipe], imports: [CommonModule,
41
+ MatButtonToggleModule,
42
+ MatFormFieldModule,
43
+ MatButtonModule,
44
+ MatIconModule,
45
+ MatTooltipModule,
46
+ TranslateModule,
47
+ FluidHeightModule,
48
+ ElementHeightModule,
49
+ NoDataModule,
50
+ MarkdownModule,
51
+ DynamicFormModule,
52
+ NuxeoDialogModule,
53
+ MatDialogModule,
54
+ NdfTableModule,
55
+ NdfReportsModule,
56
+ CdkAccordionModule,
57
+ DirectiveModule,
58
+ CopyToClipboardModule], exports: [NdfConfigEditorComponent] });
59
+ NdfConfigEditorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfConfigEditorModule, imports: [[
60
+ CommonModule,
61
+ MatButtonToggleModule,
62
+ MatFormFieldModule,
63
+ MatButtonModule,
64
+ MatIconModule,
65
+ MatTooltipModule,
66
+ TranslateModule,
67
+ FluidHeightModule,
68
+ ElementHeightModule,
69
+ NoDataModule,
70
+ MarkdownModule,
71
+ DynamicFormModule,
72
+ NuxeoDialogModule,
73
+ MatDialogModule,
74
+ NdfTableModule,
75
+ NdfReportsModule,
76
+ CdkAccordionModule,
77
+ DirectiveModule,
78
+ CopyToClipboardModule
79
+ ]] });
80
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfConfigEditorModule, decorators: [{
81
+ type: NgModule,
82
+ args: [{
83
+ declarations: [
84
+ EditorModeSwitchComponent,
85
+ NdfConfigEditorComponent,
86
+ MonacoEditorComponent,
87
+ EditorSettingsComponent,
88
+ ConfigPreviewComponent,
89
+ ConfigEditorActionsComponent,
90
+ InfoDialogComponent,
91
+ ValidateObjectPipe,
92
+ IsValidJsonPipe
93
+ ],
94
+ imports: [
95
+ CommonModule,
96
+ MatButtonToggleModule,
97
+ MatFormFieldModule,
98
+ MatButtonModule,
99
+ MatIconModule,
100
+ MatTooltipModule,
101
+ TranslateModule,
102
+ FluidHeightModule,
103
+ ElementHeightModule,
104
+ NoDataModule,
105
+ MarkdownModule,
106
+ DynamicFormModule,
107
+ NuxeoDialogModule,
108
+ MatDialogModule,
109
+ NdfTableModule,
110
+ NdfReportsModule,
111
+ CdkAccordionModule,
112
+ DirectiveModule,
113
+ CopyToClipboardModule
114
+ ],
115
+ exports: [NdfConfigEditorComponent]
116
+ }]
117
+ }] });
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmRmLWNvbmZpZy1lZGl0b3IubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9uZGYtY29uZmlnLWVkaXRvci9uZGYtY29uZmlnLWVkaXRvci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNOLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIscUJBQXFCLEVBQ3JCLHdCQUF3QixFQUN4QixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUseUJBQXlCLEVBQUUsbUJBQW1CLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDNUcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG9CQUFvQixFQUFzQixNQUFNLGdCQUFnQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNoSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDOUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7O0FBcUNuRSxNQUFNLE9BQU8scUJBQXFCO0lBQ2pDLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBNkIsRUFBRTtRQUM3QyxPQUFPO1lBQ04sUUFBUSxFQUFFLHFCQUFxQjtZQUMvQixTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUM7U0FDaEUsQ0FBQztJQUNILENBQUM7O21IQU5XLHFCQUFxQjtvSEFBckIscUJBQXFCLGlCQWpDaEMseUJBQXlCO1FBQ3pCLHdCQUF3QjtRQUN4QixxQkFBcUI7UUFDckIsdUJBQXVCO1FBQ3ZCLHNCQUFzQjtRQUN0Qiw0QkFBNEI7UUFDNUIsbUJBQW1CO1FBQ25CLGtCQUFrQjtRQUNsQixlQUFlLGFBR2YsWUFBWTtRQUNaLHFCQUFxQjtRQUNyQixrQkFBa0I7UUFDbEIsZUFBZTtRQUNmLGFBQWE7UUFDYixnQkFBZ0I7UUFDaEIsZUFBZTtRQUNmLGlCQUFpQjtRQUNqQixtQkFBbUI7UUFDbkIsWUFBWTtRQUNaLGNBQWM7UUFDZCxpQkFBaUI7UUFDakIsaUJBQWlCO1FBQ2pCLGVBQWU7UUFDZixjQUFjO1FBQ2QsZ0JBQWdCO1FBQ2hCLGtCQUFrQjtRQUNsQixlQUFlO1FBQ2YscUJBQXFCLGFBRVosd0JBQXdCO29IQUV0QixxQkFBcUIsWUF2QnhCO1lBQ1IsWUFBWTtZQUNaLHFCQUFxQjtZQUNyQixrQkFBa0I7WUFDbEIsZUFBZTtZQUNmLGFBQWE7WUFDYixnQkFBZ0I7WUFDaEIsZUFBZTtZQUNmLGlCQUFpQjtZQUNqQixtQkFBbUI7WUFDbkIsWUFBWTtZQUNaLGNBQWM7WUFDZCxpQkFBaUI7WUFDakIsaUJBQWlCO1lBQ2pCLGVBQWU7WUFDZixjQUFjO1lBQ2QsZ0JBQWdCO1lBQ2hCLGtCQUFrQjtZQUNsQixlQUFlO1lBQ2YscUJBQXFCO1NBQ3JCOzRGQUdXLHFCQUFxQjtrQkFuQ2pDLFFBQVE7bUJBQUM7b0JBQ1QsWUFBWSxFQUFFO3dCQUNiLHlCQUF5Qjt3QkFDekIsd0JBQXdCO3dCQUN4QixxQkFBcUI7d0JBQ3JCLHVCQUF1Qjt3QkFDdkIsc0JBQXNCO3dCQUN0Qiw0QkFBNEI7d0JBQzVCLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixlQUFlO3FCQUNmO29CQUNELE9BQU8sRUFBRTt3QkFDUixZQUFZO3dCQUNaLHFCQUFxQjt3QkFDckIsa0JBQWtCO3dCQUNsQixlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsbUJBQW1CO3dCQUNuQixZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsaUJBQWlCO3dCQUNqQixpQkFBaUI7d0JBQ2pCLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLGtCQUFrQjt3QkFDbEIsZUFBZTt3QkFDZixxQkFBcUI7cUJBQ3JCO29CQUNELE9BQU8sRUFBRSxDQUFDLHdCQUF3QixDQUFDO2lCQUNuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcblx0Q29uZmlnUHJldmlld0NvbXBvbmVudCxcclxuXHRFZGl0b3JTZXR0aW5nc0NvbXBvbmVudCxcclxuXHRNb25hY29FZGl0b3JDb21wb25lbnQsXHJcblx0TmRmQ29uZmlnRWRpdG9yQ29tcG9uZW50XHJcbn0gZnJvbSAnLi9jb250YWluZXJzJztcclxuaW1wb3J0IHsgRWRpdG9yTW9kZVN3aXRjaENvbXBvbmVudCwgSW5mb0RpYWxvZ0NvbXBvbmVudCwgQ29uZmlnRWRpdG9yQWN0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cyc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvblRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbi10b2dnbGUnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBNT05BQ09fRURJVE9SX0NPTkZJRywgTW9uYWNvRWRpdG9yQ29uZmlnIH0gZnJvbSAnLi9jb25maWcudG9rZW4nO1xyXG5pbXBvcnQgeyBDb3B5VG9DbGlwYm9hcmRNb2R1bGUsIEVsZW1lbnRIZWlnaHRNb2R1bGUsIEZsdWlkSGVpZ2h0TW9kdWxlLCBOdXhlb0RpYWxvZ01vZHVsZSB9IGZyb20gJy4uLy4uL3NoYXJlZCc7XHJcbmltcG9ydCB7IE5vRGF0YU1vZHVsZSB9IGZyb20gJy4uL25vLWRhdGEtZm91bmQnO1xyXG5pbXBvcnQgeyBNYXJrZG93bk1vZHVsZSB9IGZyb20gJ25neC1tYXJrZG93bic7XHJcbmltcG9ydCB7IER5bmFtaWNGb3JtTW9kdWxlIH0gZnJvbSAnLi4vZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5tb2R1bGUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBOZGZUYWJsZU1vZHVsZSB9IGZyb20gJy4uL3RhYmxlcyc7XHJcbmltcG9ydCB7IE5kZlJlcG9ydHNNb2R1bGUgfSBmcm9tICcuLi9yZXBvcnRzJztcclxuaW1wb3J0IHsgQ2RrQWNjb3JkaW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2FjY29yZGlvbic7XHJcbmltcG9ydCB7IElzVmFsaWRKc29uUGlwZSwgVmFsaWRhdGVPYmplY3RQaXBlIH0gZnJvbSAnLi9waXBlcyc7XHJcbmltcG9ydCB7IERpcmVjdGl2ZU1vZHVsZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9kaXJlY3RpdmUubW9kdWxlJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcblx0ZGVjbGFyYXRpb25zOiBbXHJcblx0XHRFZGl0b3JNb2RlU3dpdGNoQ29tcG9uZW50LFxyXG5cdFx0TmRmQ29uZmlnRWRpdG9yQ29tcG9uZW50LFxyXG5cdFx0TW9uYWNvRWRpdG9yQ29tcG9uZW50LFxyXG5cdFx0RWRpdG9yU2V0dGluZ3NDb21wb25lbnQsXHJcblx0XHRDb25maWdQcmV2aWV3Q29tcG9uZW50LFxyXG5cdFx0Q29uZmlnRWRpdG9yQWN0aW9uc0NvbXBvbmVudCxcclxuXHRcdEluZm9EaWFsb2dDb21wb25lbnQsXHJcblx0XHRWYWxpZGF0ZU9iamVjdFBpcGUsXHJcblx0XHRJc1ZhbGlkSnNvblBpcGVcclxuXHRdLFxyXG5cdGltcG9ydHM6IFtcclxuXHRcdENvbW1vbk1vZHVsZSxcclxuXHRcdE1hdEJ1dHRvblRvZ2dsZU1vZHVsZSxcclxuXHRcdE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuXHRcdE1hdEJ1dHRvbk1vZHVsZSxcclxuXHRcdE1hdEljb25Nb2R1bGUsXHJcblx0XHRNYXRUb29sdGlwTW9kdWxlLFxyXG5cdFx0VHJhbnNsYXRlTW9kdWxlLFxyXG5cdFx0Rmx1aWRIZWlnaHRNb2R1bGUsXHJcblx0XHRFbGVtZW50SGVpZ2h0TW9kdWxlLFxyXG5cdFx0Tm9EYXRhTW9kdWxlLFxyXG5cdFx0TWFya2Rvd25Nb2R1bGUsXHJcblx0XHREeW5hbWljRm9ybU1vZHVsZSxcclxuXHRcdE51eGVvRGlhbG9nTW9kdWxlLFxyXG5cdFx0TWF0RGlhbG9nTW9kdWxlLFxyXG5cdFx0TmRmVGFibGVNb2R1bGUsXHJcblx0XHROZGZSZXBvcnRzTW9kdWxlLFxyXG5cdFx0Q2RrQWNjb3JkaW9uTW9kdWxlLFxyXG5cdFx0RGlyZWN0aXZlTW9kdWxlLFxyXG5cdFx0Q29weVRvQ2xpcGJvYXJkTW9kdWxlXHJcblx0XSxcclxuXHRleHBvcnRzOiBbTmRmQ29uZmlnRWRpdG9yQ29tcG9uZW50XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmRmQ29uZmlnRWRpdG9yTW9kdWxlIHtcclxuXHRzdGF0aWMgZm9yUm9vdChjb25maWc6IE1vbmFjb0VkaXRvckNvbmZpZyA9IHt9KTogYW55IHtcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdG5nTW9kdWxlOiBOZGZDb25maWdFZGl0b3JNb2R1bGUsXHJcblx0XHRcdHByb3ZpZGVyczogW3sgcHJvdmlkZTogTU9OQUNPX0VESVRPUl9DT05GSUcsIHVzZVZhbHVlOiBjb25maWcgfV1cclxuXHRcdH07XHJcblx0fVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export * from './validate-object.pipe';
2
+ export * from './is-valid-json.pipe';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL25kZi1jb25maWctZWRpdG9yL3BpcGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdmFsaWRhdGUtb2JqZWN0LnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2lzLXZhbGlkLWpzb24ucGlwZSc7XHJcbiJdfQ==
@@ -0,0 +1,17 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { isValidJson } from '../utility';
3
+ import * as i0 from "@angular/core";
4
+ export class IsValidJsonPipe {
5
+ transform(value) {
6
+ return isValidJson(value);
7
+ }
8
+ }
9
+ IsValidJsonPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IsValidJsonPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
10
+ IsValidJsonPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IsValidJsonPipe, name: "isValidJson" });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IsValidJsonPipe, decorators: [{
12
+ type: Pipe,
13
+ args: [{
14
+ name: 'isValidJson'
15
+ }]
16
+ }] });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtdmFsaWQtanNvbi5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9uZGYtY29uZmlnLWVkaXRvci9waXBlcy9pcy12YWxpZC1qc29uLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQzs7QUFLekMsTUFBTSxPQUFPLGVBQWU7SUFDM0IsU0FBUyxDQUFDLEtBQWE7UUFDdEIsT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQzs7NkdBSFcsZUFBZTsyR0FBZixlQUFlOzRGQUFmLGVBQWU7a0JBSDNCLElBQUk7bUJBQUM7b0JBQ0wsSUFBSSxFQUFFLGFBQWE7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBpc1ZhbGlkSnNvbiB9IGZyb20gJy4uL3V0aWxpdHknO1xyXG5cclxuQFBpcGUoe1xyXG5cdG5hbWU6ICdpc1ZhbGlkSnNvbidcclxufSlcclxuZXhwb3J0IGNsYXNzIElzVmFsaWRKc29uUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG5cdHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gaXNWYWxpZEpzb24odmFsdWUpO1xyXG5cdH1cclxufVxyXG4iXX0=
@@ -0,0 +1,16 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ValidateObjectPipe {
4
+ transform(value) {
5
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
6
+ }
7
+ }
8
+ ValidateObjectPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ValidateObjectPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
9
+ ValidateObjectPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ValidateObjectPipe, name: "validateObject" });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ValidateObjectPipe, decorators: [{
11
+ type: Pipe,
12
+ args: [{
13
+ name: 'validateObject'
14
+ }]
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtb2JqZWN0LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL25kZi1jb25maWctZWRpdG9yL3BpcGVzL3ZhbGlkYXRlLW9iamVjdC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQUtwRCxNQUFNLE9BQU8sa0JBQWtCO0lBQzlCLFNBQVMsQ0FBQyxLQUFjO1FBQ3ZCLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdFLENBQUM7O2dIQUhXLGtCQUFrQjs4R0FBbEIsa0JBQWtCOzRGQUFsQixrQkFBa0I7a0JBSDlCLElBQUk7bUJBQUM7b0JBQ0wsSUFBSSxFQUFFLGdCQUFnQjtpQkFDdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AUGlwZSh7XHJcblx0bmFtZTogJ3ZhbGlkYXRlT2JqZWN0J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVmFsaWRhdGVPYmplY3RQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcblx0dHJhbnNmb3JtKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSk7XHJcblx0fVxyXG59XHJcbiJdfQ==