@aquera/ngx-smart-table 0.0.17-alpha → 0.0.18-alpha
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.
- package/{fesm2020 → fesm2022}/aquera-ngx-smart-table.mjs +1579 -2101
- package/fesm2022/aquera-ngx-smart-table.mjs.map +1 -0
- package/package.json +8 -16
- package/types/aquera-ngx-smart-table.d.ts +5909 -0
- package/aquera-ngx-smart-table.d.ts +0 -5
- package/esm2020/aquera-ngx-smart-table.mjs +0 -5
- package/esm2020/lib/builder/components/builder-preview/builder-preview.component.mjs +0 -63
- package/esm2020/lib/builder/components/builder-toolbar/builder-toolbar.component.mjs +0 -115
- package/esm2020/lib/builder/components/column-editor/column-editor.component.mjs +0 -206
- package/esm2020/lib/builder/components/column-list/column-list.component.mjs +0 -125
- package/esm2020/lib/builder/components/definition-builder/definition-builder.component.mjs +0 -105
- package/esm2020/lib/builder/components/table-config-editor/table-config-editor.component.mjs +0 -132
- package/esm2020/lib/builder/definition-builder.module.mjs +0 -70
- package/esm2020/lib/builder/models/builder-state.interface.mjs +0 -5
- package/esm2020/lib/builder/services/definition-builder.service.mjs +0 -251
- package/esm2020/lib/builder/services/definition-export.service.mjs +0 -167
- package/esm2020/lib/builder/services/definition-import.service.mjs +0 -193
- package/esm2020/lib/builder/services/sample-data-generator.service.mjs +0 -126
- package/esm2020/lib/builder/utils/config-validator.util.mjs +0 -165
- package/esm2020/lib/builder/utils/typescript-generator.util.mjs +0 -206
- package/esm2020/lib/editors/index.mjs +0 -9
- package/esm2020/lib/editors/nile-autocomplete-editor.mjs +0 -228
- package/esm2020/lib/editors/nile-calendar-editor.mjs +0 -211
- package/esm2020/lib/editors/nile-date-picker-editor.mjs +0 -188
- package/esm2020/lib/editors/nile-input-editor.mjs +0 -235
- package/esm2020/lib/editors/nile-select-editor.mjs +0 -498
- package/esm2020/lib/factories/column-config.factory.mjs +0 -231
- package/esm2020/lib/models/autosave-config.interface.mjs +0 -8
- package/esm2020/lib/models/base-column-config.class.mjs +0 -253
- package/esm2020/lib/models/cell-strategies.interface.mjs +0 -6
- package/esm2020/lib/models/cell-types.mjs +0 -147
- package/esm2020/lib/models/column-action.interface.mjs +0 -6
- package/esm2020/lib/models/column-config.interface.mjs +0 -43
- package/esm2020/lib/models/column-config.utils.mjs +0 -101
- package/esm2020/lib/models/row-action.interface.mjs +0 -5
- package/esm2020/lib/models/row-validator.interface.mjs +0 -2
- package/esm2020/lib/models/schema-validation.interface.mjs +0 -2
- package/esm2020/lib/models/sheet-action.interface.mjs +0 -5
- package/esm2020/lib/models/sheet-config.interface.mjs +0 -5
- package/esm2020/lib/models/table-config.interface.mjs +0 -107
- package/esm2020/lib/models/table-validator.interface.mjs +0 -2
- package/esm2020/lib/models/workbook-action.interface.mjs +0 -5
- package/esm2020/lib/models/workbook-config.interface.mjs +0 -5
- package/esm2020/lib/renderer/components/st-add-column-button/st-add-column-button.component.mjs +0 -24
- package/esm2020/lib/renderer/components/st-cell/st-cell.component.mjs +0 -397
- package/esm2020/lib/renderer/components/st-column-editor-modal/st-column-editor-modal.component.mjs +0 -103
- package/esm2020/lib/renderer/components/st-column-filter/st-column-filter.component.mjs +0 -383
- package/esm2020/lib/renderer/components/st-column-menu/st-column-menu.component.mjs +0 -232
- package/esm2020/lib/renderer/components/st-column-visibility/st-column-visibility.component.mjs +0 -97
- package/esm2020/lib/renderer/components/st-header/st-header.component.mjs +0 -157
- package/esm2020/lib/renderer/components/st-pagination/st-pagination.component.mjs +0 -87
- package/esm2020/lib/renderer/components/st-row-actions-dropdown/st-row-actions-dropdown.component.mjs +0 -167
- package/esm2020/lib/renderer/components/st-sheet/st-sheet.component.mjs +0 -165
- package/esm2020/lib/renderer/components/st-sheet-actions/st-sheet-actions.component.mjs +0 -112
- package/esm2020/lib/renderer/components/st-table/st-table.component.mjs +0 -1453
- package/esm2020/lib/renderer/components/st-table-actions/st-table-actions.component.mjs +0 -169
- package/esm2020/lib/renderer/components/st-workbook/st-workbook.component.mjs +0 -581
- package/esm2020/lib/renderer/directives/click-outside.directive.mjs +0 -28
- package/esm2020/lib/renderer/directives/st-column-resize.directive.mjs +0 -108
- package/esm2020/lib/renderer/directives/st-keyboard-navigation.directive.mjs +0 -83
- package/esm2020/lib/renderer/models/cell-state.interface.mjs +0 -66
- package/esm2020/lib/renderer/models/cell.class.mjs +0 -389
- package/esm2020/lib/renderer/models/row-validation-state.interface.mjs +0 -7
- package/esm2020/lib/renderer/models/sheet-state.class.mjs +0 -90
- package/esm2020/lib/renderer/models/sheet-state.interface.mjs +0 -5
- package/esm2020/lib/renderer/models/table-state.class.mjs +0 -871
- package/esm2020/lib/renderer/models/table-state.interface.mjs +0 -5
- package/esm2020/lib/renderer/models/table-types.mjs +0 -29
- package/esm2020/lib/renderer/models/table-validation-state.interface.mjs +0 -7
- package/esm2020/lib/renderer/models/workbook-state.class.mjs +0 -174
- package/esm2020/lib/renderer/models/workbook-state.interface.mjs +0 -5
- package/esm2020/lib/renderer/models/z-index.enum.mjs +0 -55
- package/esm2020/lib/schemas/table-config.schema.mjs +0 -472
- package/esm2020/lib/services/autosave.service.mjs +0 -92
- package/esm2020/lib/services/custom-validation-rules.util.mjs +0 -124
- package/esm2020/lib/services/json-schema-validator.service.mjs +0 -216
- package/esm2020/lib/services/row-validation.service.mjs +0 -42
- package/esm2020/lib/services/validation-logger.service.mjs +0 -177
- package/esm2020/lib/services/virtual-scroll.service.mjs +0 -52
- package/esm2020/lib/shared/shared-table-components.module.mjs +0 -35
- package/esm2020/lib/smart-table.module.mjs +0 -124
- package/esm2020/lib/strategies/default-editors.mjs +0 -433
- package/esm2020/lib/strategies/default-formatters.mjs +0 -238
- package/esm2020/lib/strategies/default-validators.mjs +0 -327
- package/esm2020/public-api.mjs +0 -146
- package/fesm2015/aquera-ngx-smart-table.mjs +0 -12347
- package/fesm2015/aquera-ngx-smart-table.mjs.map +0 -1
- package/fesm2020/aquera-ngx-smart-table.mjs.map +0 -1
- package/lib/builder/components/builder-preview/builder-preview.component.d.ts +0 -31
- package/lib/builder/components/builder-toolbar/builder-toolbar.component.d.ts +0 -53
- package/lib/builder/components/column-editor/column-editor.component.d.ts +0 -69
- package/lib/builder/components/column-list/column-list.component.d.ts +0 -65
- package/lib/builder/components/definition-builder/definition-builder.component.d.ts +0 -58
- package/lib/builder/components/table-config-editor/table-config-editor.component.d.ts +0 -32
- package/lib/builder/definition-builder.module.d.ts +0 -15
- package/lib/builder/models/builder-state.interface.d.ts +0 -93
- package/lib/builder/services/definition-builder.service.d.ts +0 -80
- package/lib/builder/services/definition-export.service.d.ts +0 -59
- package/lib/builder/services/definition-import.service.d.ts +0 -31
- package/lib/builder/services/sample-data-generator.service.d.ts +0 -41
- package/lib/builder/utils/config-validator.util.d.ts +0 -32
- package/lib/builder/utils/typescript-generator.util.d.ts +0 -29
- package/lib/editors/index.d.ts +0 -8
- package/lib/editors/nile-autocomplete-editor.d.ts +0 -102
- package/lib/editors/nile-calendar-editor.d.ts +0 -88
- package/lib/editors/nile-date-picker-editor.d.ts +0 -97
- package/lib/editors/nile-input-editor.d.ts +0 -67
- package/lib/editors/nile-select-editor.d.ts +0 -113
- package/lib/factories/column-config.factory.d.ts +0 -73
- package/lib/models/autosave-config.interface.d.ts +0 -23
- package/lib/models/base-column-config.class.d.ts +0 -115
- package/lib/models/cell-strategies.interface.d.ts +0 -188
- package/lib/models/cell-types.d.ts +0 -337
- package/lib/models/column-action.interface.d.ts +0 -86
- package/lib/models/column-config.interface.d.ts +0 -272
- package/lib/models/column-config.utils.d.ts +0 -37
- package/lib/models/row-action.interface.d.ts +0 -86
- package/lib/models/row-validator.interface.d.ts +0 -37
- package/lib/models/schema-validation.interface.d.ts +0 -42
- package/lib/models/sheet-action.interface.d.ts +0 -59
- package/lib/models/sheet-config.interface.d.ts +0 -41
- package/lib/models/table-config.interface.d.ts +0 -251
- package/lib/models/table-validator.interface.d.ts +0 -40
- package/lib/models/workbook-action.interface.d.ts +0 -95
- package/lib/models/workbook-config.interface.d.ts +0 -107
- package/lib/renderer/components/st-add-column-button/st-add-column-button.component.d.ts +0 -9
- package/lib/renderer/components/st-cell/st-cell.component.d.ts +0 -69
- package/lib/renderer/components/st-column-editor-modal/st-column-editor-modal.component.d.ts +0 -39
- package/lib/renderer/components/st-column-filter/st-column-filter.component.d.ts +0 -139
- package/lib/renderer/components/st-column-menu/st-column-menu.component.d.ts +0 -81
- package/lib/renderer/components/st-column-visibility/st-column-visibility.component.d.ts +0 -44
- package/lib/renderer/components/st-header/st-header.component.d.ts +0 -93
- package/lib/renderer/components/st-pagination/st-pagination.component.d.ts +0 -42
- package/lib/renderer/components/st-row-actions-dropdown/st-row-actions-dropdown.component.d.ts +0 -67
- package/lib/renderer/components/st-sheet/st-sheet.component.d.ts +0 -98
- package/lib/renderer/components/st-sheet-actions/st-sheet-actions.component.d.ts +0 -58
- package/lib/renderer/components/st-table/st-table.component.d.ts +0 -380
- package/lib/renderer/components/st-table-actions/st-table-actions.component.d.ts +0 -77
- package/lib/renderer/components/st-workbook/st-workbook.component.d.ts +0 -275
- package/lib/renderer/directives/click-outside.directive.d.ts +0 -10
- package/lib/renderer/directives/st-column-resize.directive.d.ts +0 -44
- package/lib/renderer/directives/st-keyboard-navigation.directive.d.ts +0 -19
- package/lib/renderer/models/cell-state.interface.d.ts +0 -118
- package/lib/renderer/models/cell.class.d.ts +0 -174
- package/lib/renderer/models/row-validation-state.interface.d.ts +0 -27
- package/lib/renderer/models/sheet-state.class.d.ts +0 -67
- package/lib/renderer/models/sheet-state.interface.d.ts +0 -55
- package/lib/renderer/models/table-state.class.d.ts +0 -320
- package/lib/renderer/models/table-state.interface.d.ts +0 -18
- package/lib/renderer/models/table-types.d.ts +0 -228
- package/lib/renderer/models/table-validation-state.interface.d.ts +0 -34
- package/lib/renderer/models/workbook-state.class.d.ts +0 -117
- package/lib/renderer/models/workbook-state.interface.d.ts +0 -71
- package/lib/renderer/models/z-index.enum.d.ts +0 -44
- package/lib/schemas/table-config.schema.d.ts +0 -455
- package/lib/services/autosave.service.d.ts +0 -73
- package/lib/services/custom-validation-rules.util.d.ts +0 -12
- package/lib/services/json-schema-validator.service.d.ts +0 -49
- package/lib/services/row-validation.service.d.ts +0 -17
- package/lib/services/validation-logger.service.d.ts +0 -87
- package/lib/services/virtual-scroll.service.d.ts +0 -44
- package/lib/shared/shared-table-components.module.d.ts +0 -9
- package/lib/smart-table.module.d.ts +0 -26
- package/lib/strategies/default-editors.d.ts +0 -109
- package/lib/strategies/default-formatters.d.ts +0 -116
- package/lib/strategies/default-validators.d.ts +0 -113
- package/public-api.d.ts +0 -70
- package/src/lib/builder/README.md +0 -30
- package/src/lib/editors/README.md +0 -303
- package/src/lib/renderer/components/st-column-filter/README.md +0 -286
|
@@ -1,251 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Definition builder service
|
|
3
|
-
* Manages builder state and column operations
|
|
4
|
-
*/
|
|
5
|
-
import { Injectable } from '@angular/core';
|
|
6
|
-
import { BehaviorSubject } from 'rxjs';
|
|
7
|
-
import { mergeTableConfig, DEFAULT_TABLE_CONFIG } from '../../models/table-config.interface';
|
|
8
|
-
import { ColumnConfigFactory } from '../../factories/column-config.factory';
|
|
9
|
-
import { CellDataType } from '../../models/cell-types';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
export class DefinitionBuilderService {
|
|
12
|
-
constructor() {
|
|
13
|
-
this.stateSubject = new BehaviorSubject(this.createInitialState());
|
|
14
|
-
this.state$ = this.stateSubject.asObservable();
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Get current state
|
|
18
|
-
*/
|
|
19
|
-
getState() {
|
|
20
|
-
return { ...this.stateSubject.value };
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Create initial empty state
|
|
24
|
-
*/
|
|
25
|
-
createInitialState() {
|
|
26
|
-
return {
|
|
27
|
-
tableConfig: {
|
|
28
|
-
columns: [],
|
|
29
|
-
...DEFAULT_TABLE_CONFIG
|
|
30
|
-
},
|
|
31
|
-
selectedColumn: null,
|
|
32
|
-
selectedColumnIndex: null,
|
|
33
|
-
previewVisible: true,
|
|
34
|
-
hasUnsavedChanges: false
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Initialize with a TableConfig
|
|
39
|
-
*/
|
|
40
|
-
initialize(config) {
|
|
41
|
-
const mergedConfig = mergeTableConfig(config);
|
|
42
|
-
this.updateState({
|
|
43
|
-
tableConfig: mergedConfig,
|
|
44
|
-
selectedColumn: null,
|
|
45
|
-
selectedColumnIndex: null,
|
|
46
|
-
hasUnsavedChanges: false,
|
|
47
|
-
lastSavedConfig: { ...mergedConfig }
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Create new definition (reset to empty)
|
|
52
|
-
*/
|
|
53
|
-
newDefinition() {
|
|
54
|
-
this.updateState(this.createInitialState());
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Add a new column
|
|
58
|
-
*/
|
|
59
|
-
addColumn(type = CellDataType.STRING) {
|
|
60
|
-
const key = this.generateUniqueKey('newColumn');
|
|
61
|
-
let column;
|
|
62
|
-
switch (type) {
|
|
63
|
-
case CellDataType.STRING:
|
|
64
|
-
column = ColumnConfigFactory.text(key);
|
|
65
|
-
break;
|
|
66
|
-
case CellDataType.NUMBER:
|
|
67
|
-
column = ColumnConfigFactory.number(key);
|
|
68
|
-
break;
|
|
69
|
-
case CellDataType.DATE:
|
|
70
|
-
column = ColumnConfigFactory.date(key);
|
|
71
|
-
break;
|
|
72
|
-
case CellDataType.BOOLEAN:
|
|
73
|
-
column = ColumnConfigFactory.boolean(key);
|
|
74
|
-
break;
|
|
75
|
-
default:
|
|
76
|
-
column = ColumnConfigFactory.text(key);
|
|
77
|
-
}
|
|
78
|
-
const state = this.getState();
|
|
79
|
-
const newColumns = [...state.tableConfig.columns, column];
|
|
80
|
-
this.updateTableConfig({ ...state.tableConfig, columns: newColumns });
|
|
81
|
-
// Select the new column
|
|
82
|
-
this.selectColumn(newColumns.length - 1);
|
|
83
|
-
return column;
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Update a column at the given index
|
|
87
|
-
*/
|
|
88
|
-
updateColumn(index, updates) {
|
|
89
|
-
const state = this.getState();
|
|
90
|
-
if (index < 0 || index >= state.tableConfig.columns.length) {
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
93
|
-
const columns = [...state.tableConfig.columns];
|
|
94
|
-
columns[index] = { ...columns[index], ...updates };
|
|
95
|
-
this.updateTableConfig({ ...state.tableConfig, columns });
|
|
96
|
-
// Update selected column if it's the one being updated
|
|
97
|
-
if (state.selectedColumnIndex === index) {
|
|
98
|
-
this.selectColumn(index);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Delete a column at the given index
|
|
103
|
-
*/
|
|
104
|
-
deleteColumn(index) {
|
|
105
|
-
const state = this.getState();
|
|
106
|
-
if (index < 0 || index >= state.tableConfig.columns.length) {
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
const columns = state.tableConfig.columns.filter((_, i) => i !== index);
|
|
110
|
-
this.updateTableConfig({ ...state.tableConfig, columns });
|
|
111
|
-
// Clear selection if deleted column was selected
|
|
112
|
-
if (state.selectedColumnIndex === index) {
|
|
113
|
-
this.clearSelection();
|
|
114
|
-
}
|
|
115
|
-
else if (state.selectedColumnIndex !== null && state.selectedColumnIndex > index) {
|
|
116
|
-
// Adjust selection index if a column before the selected one was deleted
|
|
117
|
-
this.selectColumn(state.selectedColumnIndex - 1);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Reorder columns
|
|
122
|
-
*/
|
|
123
|
-
reorderColumns(fromIndex, toIndex) {
|
|
124
|
-
const state = this.getState();
|
|
125
|
-
const columns = [...state.tableConfig.columns];
|
|
126
|
-
const [moved] = columns.splice(fromIndex, 1);
|
|
127
|
-
columns.splice(toIndex, 0, moved);
|
|
128
|
-
this.updateTableConfig({ ...state.tableConfig, columns });
|
|
129
|
-
// Update selection if needed
|
|
130
|
-
if (state.selectedColumnIndex !== null) {
|
|
131
|
-
let newIndex = state.selectedColumnIndex;
|
|
132
|
-
if (state.selectedColumnIndex === fromIndex) {
|
|
133
|
-
newIndex = toIndex;
|
|
134
|
-
}
|
|
135
|
-
else if (fromIndex < state.selectedColumnIndex && toIndex >= state.selectedColumnIndex) {
|
|
136
|
-
newIndex = state.selectedColumnIndex - 1;
|
|
137
|
-
}
|
|
138
|
-
else if (fromIndex > state.selectedColumnIndex && toIndex <= state.selectedColumnIndex) {
|
|
139
|
-
newIndex = state.selectedColumnIndex + 1;
|
|
140
|
-
}
|
|
141
|
-
this.selectColumn(newIndex);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Select a column for editing
|
|
146
|
-
*/
|
|
147
|
-
selectColumn(index) {
|
|
148
|
-
const state = this.getState();
|
|
149
|
-
if (index < 0 || index >= state.tableConfig.columns.length) {
|
|
150
|
-
this.clearSelection();
|
|
151
|
-
return;
|
|
152
|
-
}
|
|
153
|
-
this.updateState({
|
|
154
|
-
selectedColumn: { ...state.tableConfig.columns[index] },
|
|
155
|
-
selectedColumnIndex: index
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* Clear column selection
|
|
160
|
-
*/
|
|
161
|
-
clearSelection() {
|
|
162
|
-
this.updateState({
|
|
163
|
-
selectedColumn: null,
|
|
164
|
-
selectedColumnIndex: null
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* Update table configuration
|
|
169
|
-
*/
|
|
170
|
-
updateTableConfig(config) {
|
|
171
|
-
const state = this.getState();
|
|
172
|
-
const mergedConfig = mergeTableConfig(config);
|
|
173
|
-
this.updateState({
|
|
174
|
-
tableConfig: mergedConfig,
|
|
175
|
-
hasUnsavedChanges: !this.configsEqual(state.lastSavedConfig, mergedConfig)
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
/**
|
|
179
|
-
* Update table-level settings (pagination, sorting, etc.)
|
|
180
|
-
*/
|
|
181
|
-
updateTableSettings(settings) {
|
|
182
|
-
const state = this.getState();
|
|
183
|
-
this.updateTableConfig({
|
|
184
|
-
...state.tableConfig,
|
|
185
|
-
...settings
|
|
186
|
-
});
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* Toggle preview visibility
|
|
190
|
-
*/
|
|
191
|
-
togglePreview() {
|
|
192
|
-
const state = this.getState();
|
|
193
|
-
this.updateState({
|
|
194
|
-
previewVisible: !state.previewVisible
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
|
-
/**
|
|
198
|
-
* Mark configuration as saved
|
|
199
|
-
*/
|
|
200
|
-
markAsSaved() {
|
|
201
|
-
const state = this.getState();
|
|
202
|
-
this.updateState({
|
|
203
|
-
hasUnsavedChanges: false,
|
|
204
|
-
lastSavedConfig: { ...state.tableConfig }
|
|
205
|
-
});
|
|
206
|
-
}
|
|
207
|
-
/**
|
|
208
|
-
* Update state (internal)
|
|
209
|
-
*/
|
|
210
|
-
updateState(updates) {
|
|
211
|
-
const currentState = this.getState();
|
|
212
|
-
const newState = { ...currentState, ...updates };
|
|
213
|
-
this.stateSubject.next(newState);
|
|
214
|
-
}
|
|
215
|
-
/**
|
|
216
|
-
* Generate unique column key
|
|
217
|
-
*/
|
|
218
|
-
generateUniqueKey(baseKey) {
|
|
219
|
-
const state = this.getState();
|
|
220
|
-
const existingKeys = new Set(state.tableConfig.columns.map(col => col.key));
|
|
221
|
-
if (!existingKeys.has(baseKey)) {
|
|
222
|
-
return baseKey;
|
|
223
|
-
}
|
|
224
|
-
let counter = 1;
|
|
225
|
-
let newKey = `${baseKey}${counter}`;
|
|
226
|
-
while (existingKeys.has(newKey)) {
|
|
227
|
-
counter++;
|
|
228
|
-
newKey = `${baseKey}${counter}`;
|
|
229
|
-
}
|
|
230
|
-
return newKey;
|
|
231
|
-
}
|
|
232
|
-
/**
|
|
233
|
-
* Compare two configs for equality (deep comparison)
|
|
234
|
-
*/
|
|
235
|
-
configsEqual(config1, config2) {
|
|
236
|
-
if (!config1 || !config2) {
|
|
237
|
-
return config1 === config2;
|
|
238
|
-
}
|
|
239
|
-
// Simple comparison - in production, use a deep equality library
|
|
240
|
-
return JSON.stringify(config1) === JSON.stringify(config2);
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
DefinitionBuilderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: DefinitionBuilderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
244
|
-
DefinitionBuilderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: DefinitionBuilderService, providedIn: 'root' });
|
|
245
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: DefinitionBuilderService, decorators: [{
|
|
246
|
-
type: Injectable,
|
|
247
|
-
args: [{
|
|
248
|
-
providedIn: 'root'
|
|
249
|
-
}]
|
|
250
|
-
}] });
|
|
251
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5pdGlvbi1idWlsZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC10YWJsZS9zcmMvbGliL2J1aWxkZXIvc2VydmljZXMvZGVmaW5pdGlvbi1idWlsZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBZSxnQkFBZ0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRTFHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRTVFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFLdkQsTUFBTSxPQUFPLHdCQUF3QjtJQUhyQztRQUlVLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQWUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztRQUNwRSxXQUFNLEdBQTZCLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7S0FrUXJGO0lBaFFDOztPQUVHO0lBQ0gsUUFBUTtRQUNOLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsa0JBQWtCO1FBQ2hCLE9BQU87WUFDTCxXQUFXLEVBQUU7Z0JBQ1gsT0FBTyxFQUFFLEVBQUU7Z0JBQ1gsR0FBRyxvQkFBb0I7YUFDeEI7WUFDRCxjQUFjLEVBQUUsSUFBSTtZQUNwQixtQkFBbUIsRUFBRSxJQUFJO1lBQ3pCLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLGlCQUFpQixFQUFFLEtBQUs7U0FDekIsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVUs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LENBQUMsQ0FBQztJQUM3RCxDQUFDOztxSEFuUVUsd0JBQXdCO3lIQUF4Qix3QkFBd0IsY0FGdkIsTUFBTTsyRkFFUCx3QkFBd0I7a0JBSHBDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBEZWZpbml0aW9uIGJ1aWxkZXIgc2VydmljZVxuICogTWFuYWdlcyBidWlsZGVyIHN0YXRlIGFuZCBjb2x1bW4gb3BlcmF0aW9uc1xuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVGFibGVDb25maWcsIG1lcmdlVGFibGVDb25maWcsIERFRkFVTFRfVEFCTEVfQ09ORklHIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RhYmxlLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ29sdW1uQ29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NvbHVtbi1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IENvbHVtbkNvbmZpZ0ZhY3RvcnkgfSBmcm9tICcuLi8uLi9mYWN0b3JpZXMvY29sdW1uLWNvbmZpZy5mYWN0b3J5JztcbmltcG9ydCB7IEJ1aWxkZXJTdGF0ZSB9IGZyb20gJy4uL21vZGVscy9idWlsZGVyLXN0YXRlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDZWxsRGF0YVR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2VsbC10eXBlcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIERlZmluaXRpb25CdWlsZGVyU2VydmljZSB7XG4gIHByaXZhdGUgc3RhdGVTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxCdWlsZGVyU3RhdGU+KHRoaXMuY3JlYXRlSW5pdGlhbFN0YXRlKCkpO1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhdGUkOiBPYnNlcnZhYmxlPEJ1aWxkZXJTdGF0ZT4gPSB0aGlzLnN0YXRlU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAvKipcbiAgICogR2V0IGN1cnJlbnQgc3RhdGVcbiAgICovXG4gIGdldFN0YXRlKCk6IEJ1aWxkZXJTdGF0ZSB7XG4gICAgcmV0dXJuIHsgLi4udGhpcy5zdGF0ZVN1YmplY3QudmFsdWUgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgaW5pdGlhbCBlbXB0eSBzdGF0ZVxuICAgKi9cbiAgY3JlYXRlSW5pdGlhbFN0YXRlKCk6IEJ1aWxkZXJTdGF0ZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRhYmxlQ29uZmlnOiB7XG4gICAgICAgIGNvbHVtbnM6IFtdLFxuICAgICAgICAuLi5ERUZBVUxUX1RBQkxFX0NPTkZJR1xuICAgICAgfSxcbiAgICAgIHNlbGVjdGVkQ29sdW1uOiBudWxsLFxuICAgICAgc2VsZWN0ZWRDb2x1bW5JbmRleDogbnVsbCxcbiAgICAgIHByZXZpZXdWaXNpYmxlOiB0cnVlLFxuICAgICAgaGFzVW5zYXZlZENoYW5nZXM6IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHdpdGggYSBUYWJsZUNvbmZpZ1xuICAgKi9cbiAgaW5pdGlhbGl6ZShjb25maWc6IFRhYmxlQ29uZmlnKTogdm9pZCB7XG4gICAgY29uc3QgbWVyZ2VkQ29uZmlnID0gbWVyZ2VUYWJsZUNvbmZpZyhjb25maWcpO1xuICAgIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgICAgdGFibGVDb25maWc6IG1lcmdlZENvbmZpZyxcbiAgICAgIHNlbGVjdGVkQ29sdW1uOiBudWxsLFxuICAgICAgc2VsZWN0ZWRDb2x1bW5JbmRleDogbnVsbCxcbiAgICAgIGhhc1Vuc2F2ZWRDaGFuZ2VzOiBmYWxzZSxcbiAgICAgIGxhc3RTYXZlZENvbmZpZzogeyAuLi5tZXJnZWRDb25maWcgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBuZXcgZGVmaW5pdGlvbiAocmVzZXQgdG8gZW1wdHkpXG4gICAqL1xuICBuZXdEZWZpbml0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlU3RhdGUodGhpcy5jcmVhdGVJbml0aWFsU3RhdGUoKSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgbmV3IGNvbHVtblxuICAgKi9cbiAgYWRkQ29sdW1uKHR5cGU6IENlbGxEYXRhVHlwZSA9IENlbGxEYXRhVHlwZS5TVFJJTkcpOiBDb2x1bW5Db25maWcge1xuICAgIGNvbnN0IGtleSA9IHRoaXMuZ2VuZXJhdGVVbmlxdWVLZXkoJ25ld0NvbHVtbicpO1xuICAgIGxldCBjb2x1bW46IENvbHVtbkNvbmZpZztcblxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBDZWxsRGF0YVR5cGUuU1RSSU5HOlxuICAgICAgICBjb2x1bW4gPSBDb2x1bW5Db25maWdGYWN0b3J5LnRleHQoa2V5KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIENlbGxEYXRhVHlwZS5OVU1CRVI6XG4gICAgICAgIGNvbHVtbiA9IENvbHVtbkNvbmZpZ0ZhY3RvcnkubnVtYmVyKGtleSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBDZWxsRGF0YVR5cGUuREFURTpcbiAgICAgICAgY29sdW1uID0gQ29sdW1uQ29uZmlnRmFjdG9yeS5kYXRlKGtleSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBDZWxsRGF0YVR5cGUuQk9PTEVBTjpcbiAgICAgICAgY29sdW1uID0gQ29sdW1uQ29uZmlnRmFjdG9yeS5ib29sZWFuKGtleSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29sdW1uID0gQ29sdW1uQ29uZmlnRmFjdG9yeS50ZXh0KGtleSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLmdldFN0YXRlKCk7XG4gICAgY29uc3QgbmV3Q29sdW1ucyA9IFsuLi5zdGF0ZS50YWJsZUNvbmZpZy5jb2x1bW5zLCBjb2x1bW5dO1xuICAgIHRoaXMudXBkYXRlVGFibGVDb25maWcoeyAuLi5zdGF0ZS50YWJsZUNvbmZpZywgY29sdW1uczogbmV3Q29sdW1ucyB9KTtcblxuICAgIC8vIFNlbGVjdCB0aGUgbmV3IGNvbHVtblxuICAgIHRoaXMuc2VsZWN0Q29sdW1uKG5ld0NvbHVtbnMubGVuZ3RoIC0gMSk7XG5cbiAgICByZXR1cm4gY29sdW1uO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBhIGNvbHVtbiBhdCB0aGUgZ2l2ZW4gaW5kZXhcbiAgICovXG4gIHVwZGF0ZUNvbHVtbihpbmRleDogbnVtYmVyLCB1cGRhdGVzOiBQYXJ0aWFsPENvbHVtbkNvbmZpZz4pOiB2b2lkIHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuZ2V0U3RhdGUoKTtcbiAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHN0YXRlLnRhYmxlQ29uZmlnLmNvbHVtbnMubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29sdW1ucyA9IFsuLi5zdGF0ZS50YWJsZUNvbmZpZy5jb2x1bW5zXTtcbiAgICBjb2x1bW5zW2luZGV4XSA9IHsgLi4uY29sdW1uc1tpbmRleF0sIC4uLnVwZGF0ZXMgfTtcblxuICAgIHRoaXMudXBkYXRlVGFibGVDb25maWcoeyAuLi5zdGF0ZS50YWJsZUNvbmZpZywgY29sdW1ucyB9KTtcblxuICAgIC8vIFVwZGF0ZSBzZWxlY3RlZCBjb2x1bW4gaWYgaXQncyB0aGUgb25lIGJlaW5nIHVwZGF0ZWRcbiAgICBpZiAoc3RhdGUuc2VsZWN0ZWRDb2x1bW5JbmRleCA9PT0gaW5kZXgpIHtcbiAgICAgIHRoaXMuc2VsZWN0Q29sdW1uKGluZGV4KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIGEgY29sdW1uIGF0IHRoZSBnaXZlbiBpbmRleFxuICAgKi9cbiAgZGVsZXRlQ29sdW1uKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuZ2V0U3RhdGUoKTtcbiAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHN0YXRlLnRhYmxlQ29uZmlnLmNvbHVtbnMubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29sdW1ucyA9IHN0YXRlLnRhYmxlQ29uZmlnLmNvbHVtbnMuZmlsdGVyKChfLCBpKSA9PiBpICE9PSBpbmRleCk7XG4gICAgdGhpcy51cGRhdGVUYWJsZUNvbmZpZyh7IC4uLnN0YXRlLnRhYmxlQ29uZmlnLCBjb2x1bW5zIH0pO1xuXG4gICAgLy8gQ2xlYXIgc2VsZWN0aW9uIGlmIGRlbGV0ZWQgY29sdW1uIHdhcyBzZWxlY3RlZFxuICAgIGlmIChzdGF0ZS5zZWxlY3RlZENvbHVtbkluZGV4ID09PSBpbmRleCkge1xuICAgICAgdGhpcy5jbGVhclNlbGVjdGlvbigpO1xuICAgIH0gZWxzZSBpZiAoc3RhdGUuc2VsZWN0ZWRDb2x1bW5JbmRleCAhPT0gbnVsbCAmJiBzdGF0ZS5zZWxlY3RlZENvbHVtbkluZGV4ID4gaW5kZXgpIHtcbiAgICAgIC8vIEFkanVzdCBzZWxlY3Rpb24gaW5kZXggaWYgYSBjb2x1bW4gYmVmb3JlIHRoZSBzZWxlY3RlZCBvbmUgd2FzIGRlbGV0ZWRcbiAgICAgIHRoaXMuc2VsZWN0Q29sdW1uKHN0YXRlLnNlbGVjdGVkQ29sdW1uSW5kZXggLSAxKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVvcmRlciBjb2x1bW5zXG4gICAqL1xuICByZW9yZGVyQ29sdW1ucyhmcm9tSW5kZXg6IG51bWJlciwgdG9JbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLmdldFN0YXRlKCk7XG4gICAgY29uc3QgY29sdW1ucyA9IFsuLi5zdGF0ZS50YWJsZUNvbmZpZy5jb2x1bW5zXTtcbiAgICBjb25zdCBbbW92ZWRdID0gY29sdW1ucy5zcGxpY2UoZnJvbUluZGV4LCAxKTtcbiAgICBjb2x1bW5zLnNwbGljZSh0b0luZGV4LCAwLCBtb3ZlZCk7XG5cbiAgICB0aGlzLnVwZGF0ZVRhYmxlQ29uZmlnKHsgLi4uc3RhdGUudGFibGVDb25maWcsIGNvbHVtbnMgfSk7XG5cbiAgICAvLyBVcGRhdGUgc2VsZWN0aW9uIGlmIG5lZWRlZFxuICAgIGlmIChzdGF0ZS5zZWxlY3RlZENvbHVtbkluZGV4ICE9PSBudWxsKSB7XG4gICAgICBsZXQgbmV3SW5kZXggPSBzdGF0ZS5zZWxlY3RlZENvbHVtbkluZGV4O1xuICAgICAgaWYgKHN0YXRlLnNlbGVjdGVkQ29sdW1uSW5kZXggPT09IGZyb21JbmRleCkge1xuICAgICAgICBuZXdJbmRleCA9IHRvSW5kZXg7XG4gICAgICB9IGVsc2UgaWYgKGZyb21JbmRleCA8IHN0YXRlLnNlbGVjdGVkQ29sdW1uSW5kZXggJiYgdG9JbmRleCA+PSBzdGF0ZS5zZWxlY3RlZENvbHVtbkluZGV4KSB7XG4gICAgICAgIG5ld0luZGV4ID0gc3RhdGUuc2VsZWN0ZWRDb2x1bW5JbmRleCAtIDE7XG4gICAgICB9IGVsc2UgaWYgKGZyb21JbmRleCA+IHN0YXRlLnNlbGVjdGVkQ29sdW1uSW5kZXggJiYgdG9JbmRleCA8PSBzdGF0ZS5zZWxlY3RlZENvbHVtbkluZGV4KSB7XG4gICAgICAgIG5ld0luZGV4ID0gc3RhdGUuc2VsZWN0ZWRDb2x1bW5JbmRleCArIDE7XG4gICAgICB9XG4gICAgICB0aGlzLnNlbGVjdENvbHVtbihuZXdJbmRleCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdCBhIGNvbHVtbiBmb3IgZWRpdGluZ1xuICAgKi9cbiAgc2VsZWN0Q29sdW1uKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuZ2V0U3RhdGUoKTtcbiAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHN0YXRlLnRhYmxlQ29uZmlnLmNvbHVtbnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICBzZWxlY3RlZENvbHVtbjogeyAuLi5zdGF0ZS50YWJsZUNvbmZpZy5jb2x1bW5zW2luZGV4XSB9LFxuICAgICAgc2VsZWN0ZWRDb2x1bW5JbmRleDogaW5kZXhcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciBjb2x1bW4gc2VsZWN0aW9uXG4gICAqL1xuICBjbGVhclNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZVN0YXRlKHtcbiAgICAgIHNlbGVjdGVkQ29sdW1uOiBudWxsLFxuICAgICAgc2VsZWN0ZWRDb2x1bW5JbmRleDogbnVsbFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0YWJsZSBjb25maWd1cmF0aW9uXG4gICAqL1xuICB1cGRhdGVUYWJsZUNvbmZpZyhjb25maWc6IFRhYmxlQ29uZmlnKTogdm9pZCB7XG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLmdldFN0YXRlKCk7XG4gICAgY29uc3QgbWVyZ2VkQ29uZmlnID0gbWVyZ2VUYWJsZUNvbmZpZyhjb25maWcpO1xuICAgIFxuICAgIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgICAgdGFibGVDb25maWc6IG1lcmdlZENvbmZpZyxcbiAgICAgIGhhc1Vuc2F2ZWRDaGFuZ2VzOiAhdGhpcy5jb25maWdzRXF1YWwoc3RhdGUubGFzdFNhdmVkQ29uZmlnLCBtZXJnZWRDb25maWcpXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHRhYmxlLWxldmVsIHNldHRpbmdzIChwYWdpbmF0aW9uLCBzb3J0aW5nLCBldGMuKVxuICAgKi9cbiAgdXBkYXRlVGFibGVTZXR0aW5ncyhzZXR0aW5nczogUGFydGlhbDxUYWJsZUNvbmZpZz4pOiB2b2lkIHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuZ2V0U3RhdGUoKTtcbiAgICB0aGlzLnVwZGF0ZVRhYmxlQ29uZmlnKHtcbiAgICAgIC4uLnN0YXRlLnRhYmxlQ29uZmlnLFxuICAgICAgLi4uc2V0dGluZ3NcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGUgcHJldmlldyB2aXNpYmlsaXR5XG4gICAqL1xuICB0b2dnbGVQcmV2aWV3KCk6IHZvaWQge1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5nZXRTdGF0ZSgpO1xuICAgIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgICAgcHJldmlld1Zpc2libGU6ICFzdGF0ZS5wcmV2aWV3VmlzaWJsZVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcmsgY29uZmlndXJhdGlvbiBhcyBzYXZlZFxuICAgKi9cbiAgbWFya0FzU2F2ZWQoKTogdm9pZCB7XG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLmdldFN0YXRlKCk7XG4gICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICBoYXNVbnNhdmVkQ2hhbmdlczogZmFsc2UsXG4gICAgICBsYXN0U2F2ZWRDb25maWc6IHsgLi4uc3RhdGUudGFibGVDb25maWcgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBzdGF0ZSAoaW50ZXJuYWwpXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZVN0YXRlKHVwZGF0ZXM6IFBhcnRpYWw8QnVpbGRlclN0YXRlPik6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRTdGF0ZSA9IHRoaXMuZ2V0U3RhdGUoKTtcbiAgICBjb25zdCBuZXdTdGF0ZSA9IHsgLi4uY3VycmVudFN0YXRlLCAuLi51cGRhdGVzIH07XG4gICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChuZXdTdGF0ZSk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgdW5pcXVlIGNvbHVtbiBrZXlcbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVVbmlxdWVLZXkoYmFzZUtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuZ2V0U3RhdGUoKTtcbiAgICBjb25zdCBleGlzdGluZ0tleXMgPSBuZXcgU2V0KHN0YXRlLnRhYmxlQ29uZmlnLmNvbHVtbnMubWFwKGNvbCA9PiBjb2wua2V5KSk7XG4gICAgXG4gICAgaWYgKCFleGlzdGluZ0tleXMuaGFzKGJhc2VLZXkpKSB7XG4gICAgICByZXR1cm4gYmFzZUtleTtcbiAgICB9XG5cbiAgICBsZXQgY291bnRlciA9IDE7XG4gICAgbGV0IG5ld0tleSA9IGAke2Jhc2VLZXl9JHtjb3VudGVyfWA7XG4gICAgd2hpbGUgKGV4aXN0aW5nS2V5cy5oYXMobmV3S2V5KSkge1xuICAgICAgY291bnRlcisrO1xuICAgICAgbmV3S2V5ID0gYCR7YmFzZUtleX0ke2NvdW50ZXJ9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3S2V5O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXBhcmUgdHdvIGNvbmZpZ3MgZm9yIGVxdWFsaXR5IChkZWVwIGNvbXBhcmlzb24pXG4gICAqL1xuICBwcml2YXRlIGNvbmZpZ3NFcXVhbChjb25maWcxPzogVGFibGVDb25maWcsIGNvbmZpZzI/OiBUYWJsZUNvbmZpZyk6IGJvb2xlYW4ge1xuICAgIGlmICghY29uZmlnMSB8fCAhY29uZmlnMikge1xuICAgICAgcmV0dXJuIGNvbmZpZzEgPT09IGNvbmZpZzI7XG4gICAgfVxuXG4gICAgLy8gU2ltcGxlIGNvbXBhcmlzb24gLSBpbiBwcm9kdWN0aW9uLCB1c2UgYSBkZWVwIGVxdWFsaXR5IGxpYnJhcnlcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoY29uZmlnMSkgPT09IEpTT04uc3RyaW5naWZ5KGNvbmZpZzIpO1xuICB9XG59XG5cbiJdfQ==
|
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Definition export service
|
|
3
|
-
* Handles exporting TableConfig to JSON or TypeScript
|
|
4
|
-
*/
|
|
5
|
-
import { Injectable } from '@angular/core';
|
|
6
|
-
import { generateTypeScriptCode } from '../utils/typescript-generator.util';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
export class DefinitionExportService {
|
|
9
|
-
/**
|
|
10
|
-
* Export TableConfig to JSON string
|
|
11
|
-
* @param config Table configuration
|
|
12
|
-
* @param pretty Whether to format JSON with indentation
|
|
13
|
-
* @returns JSON string
|
|
14
|
-
*/
|
|
15
|
-
exportToJSON(config, pretty = true) {
|
|
16
|
-
// Create a serializable version (remove functions, circular refs)
|
|
17
|
-
const serializable = this.sanitizeForJSON(config);
|
|
18
|
-
if (pretty) {
|
|
19
|
-
return JSON.stringify(serializable, null, 2);
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
return JSON.stringify(serializable);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Export TableConfig to TypeScript code
|
|
27
|
-
* @param config Table configuration
|
|
28
|
-
* @param options Generation options
|
|
29
|
-
* @returns TypeScript code string
|
|
30
|
-
*/
|
|
31
|
-
exportToTypeScript(config, options = {}) {
|
|
32
|
-
return generateTypeScriptCode(config, options);
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Download configuration as JSON file
|
|
36
|
-
* @param config Table configuration
|
|
37
|
-
* @param fileName File name (without extension)
|
|
38
|
-
*/
|
|
39
|
-
downloadAsJSON(config, fileName = 'table-config') {
|
|
40
|
-
const json = this.exportToJSON(config);
|
|
41
|
-
this.downloadFile(json, `${fileName}.json`, 'application/json');
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Download configuration as TypeScript file
|
|
45
|
-
* @param config Table configuration
|
|
46
|
-
* @param fileName File name (without extension)
|
|
47
|
-
* @param options Generation options
|
|
48
|
-
*/
|
|
49
|
-
downloadAsTypeScript(config, fileName = 'table-config', options = {}) {
|
|
50
|
-
const code = this.exportToTypeScript(config, options);
|
|
51
|
-
this.downloadFile(code, `${fileName}.ts`, 'text/typescript');
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Save configuration to localStorage
|
|
55
|
-
* @param config Table configuration
|
|
56
|
-
* @param key Storage key
|
|
57
|
-
*/
|
|
58
|
-
saveToLocalStorage(config, key = 'smart-table-definition') {
|
|
59
|
-
try {
|
|
60
|
-
const json = this.exportToJSON(config, false);
|
|
61
|
-
localStorage.setItem(key, json);
|
|
62
|
-
}
|
|
63
|
-
catch (error) {
|
|
64
|
-
console.error('Failed to save to localStorage:', error);
|
|
65
|
-
throw error;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Load configuration from localStorage
|
|
70
|
-
* @param key Storage key
|
|
71
|
-
* @returns TableConfig or null if not found
|
|
72
|
-
*/
|
|
73
|
-
loadFromLocalStorage(key = 'smart-table-definition') {
|
|
74
|
-
try {
|
|
75
|
-
const stored = localStorage.getItem(key);
|
|
76
|
-
if (!stored) {
|
|
77
|
-
return null;
|
|
78
|
-
}
|
|
79
|
-
return JSON.parse(stored);
|
|
80
|
-
}
|
|
81
|
-
catch (error) {
|
|
82
|
-
console.error('Failed to load from localStorage:', error);
|
|
83
|
-
return null;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Sanitize config for JSON serialization
|
|
88
|
-
* Removes functions, circular references, and other non-serializable values
|
|
89
|
-
*/
|
|
90
|
-
sanitizeForJSON(config) {
|
|
91
|
-
const sanitized = {
|
|
92
|
-
columns: config.columns.map(col => this.sanitizeColumn(col)),
|
|
93
|
-
pagination: config.pagination,
|
|
94
|
-
sorting: config.sorting,
|
|
95
|
-
filtering: config.filtering,
|
|
96
|
-
display: config.display,
|
|
97
|
-
initialState: config.initialState
|
|
98
|
-
};
|
|
99
|
-
// Remove undefined values
|
|
100
|
-
Object.keys(sanitized).forEach(key => {
|
|
101
|
-
if (sanitized[key] === undefined) {
|
|
102
|
-
delete sanitized[key];
|
|
103
|
-
}
|
|
104
|
-
});
|
|
105
|
-
return sanitized;
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Sanitize column config for JSON serialization
|
|
109
|
-
*/
|
|
110
|
-
sanitizeColumn(column) {
|
|
111
|
-
const sanitized = {
|
|
112
|
-
key: column.key,
|
|
113
|
-
header: column.header,
|
|
114
|
-
dataType: column.dataType,
|
|
115
|
-
editable: column.editable,
|
|
116
|
-
sortable: column.sortable,
|
|
117
|
-
filterable: column.filterable,
|
|
118
|
-
resizable: column.resizable,
|
|
119
|
-
width: column.width,
|
|
120
|
-
minWidth: column.minWidth,
|
|
121
|
-
maxWidth: column.maxWidth,
|
|
122
|
-
sticky: column.sticky,
|
|
123
|
-
alignment: column.alignment,
|
|
124
|
-
verticalAlignment: column.verticalAlignment,
|
|
125
|
-
className: column.className,
|
|
126
|
-
style: column.style,
|
|
127
|
-
tooltip: column.tooltip,
|
|
128
|
-
visible: column.visible,
|
|
129
|
-
pinned: column.pinned,
|
|
130
|
-
sortPriority: column.sortPriority,
|
|
131
|
-
metadata: column.metadata
|
|
132
|
-
};
|
|
133
|
-
// Remove undefined values
|
|
134
|
-
Object.keys(sanitized).forEach(key => {
|
|
135
|
-
if (sanitized[key] === undefined) {
|
|
136
|
-
delete sanitized[key];
|
|
137
|
-
}
|
|
138
|
-
});
|
|
139
|
-
// Note: formatter, validator, editor, parser, hooks are functions
|
|
140
|
-
// and cannot be serialized to JSON. They will need to be recreated
|
|
141
|
-
// when importing, or stored separately as metadata.
|
|
142
|
-
return sanitized;
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Download file helper
|
|
146
|
-
*/
|
|
147
|
-
downloadFile(content, fileName, mimeType) {
|
|
148
|
-
const blob = new Blob([content], { type: mimeType });
|
|
149
|
-
const url = URL.createObjectURL(blob);
|
|
150
|
-
const link = document.createElement('a');
|
|
151
|
-
link.href = url;
|
|
152
|
-
link.download = fileName;
|
|
153
|
-
document.body.appendChild(link);
|
|
154
|
-
link.click();
|
|
155
|
-
document.body.removeChild(link);
|
|
156
|
-
URL.revokeObjectURL(url);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
DefinitionExportService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: DefinitionExportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
160
|
-
DefinitionExportService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: DefinitionExportService, providedIn: 'root' });
|
|
161
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: DefinitionExportService, decorators: [{
|
|
162
|
-
type: Injectable,
|
|
163
|
-
args: [{
|
|
164
|
-
providedIn: 'root'
|
|
165
|
-
}]
|
|
166
|
-
}] });
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5pdGlvbi1leHBvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LXRhYmxlL3NyYy9saWIvYnVpbGRlci9zZXJ2aWNlcy9kZWZpbml0aW9uLWV4cG9ydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLHNCQUFzQixFQUE4QixNQUFNLG9DQUFvQyxDQUFDOztBQUt4RyxNQUFNLE9BQU8sdUJBQXVCO0lBQ2xDOzs7OztPQUtHO0lBQ0gsWUFBWSxDQUFDLE1BQW1CLEVBQUUsU0FBa0IsSUFBSTtRQUN0RCxrRUFBa0U7UUFDbEUsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVsRCxJQUFJLE1BQU0sRUFBRTtZQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQzlDO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDckM7SUFDSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxrQkFBa0IsQ0FBQyxNQUFtQixFQUFFLFVBQXNDLEVBQUU7UUFDOUUsT0FBTyxzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxjQUFjLENBQUMsTUFBbUIsRUFBRSxXQUFtQixjQUFjO1FBQ25FLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsR0FBRyxRQUFRLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7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QUNoQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7O29IQXJLVSx1QkFBdUI7d0hBQXZCLHVCQUF1QixjQUZ0QixNQUFNOzJGQUVQLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIERlZmluaXRpb24gZXhwb3J0IHNlcnZpY2VcbiAqIEhhbmRsZXMgZXhwb3J0aW5nIFRhYmxlQ29uZmlnIHRvIEpTT04gb3IgVHlwZVNjcmlwdFxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRhYmxlQ29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RhYmxlLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRXhwb3J0T3B0aW9ucyB9IGZyb20gJy4uL21vZGVscy9idWlsZGVyLXN0YXRlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBnZW5lcmF0ZVR5cGVTY3JpcHRDb2RlLCBUeXBlU2NyaXB0R2VuZXJhdG9yT3B0aW9ucyB9IGZyb20gJy4uL3V0aWxzL3R5cGVzY3JpcHQtZ2VuZXJhdG9yLnV0aWwnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEZWZpbml0aW9uRXhwb3J0U2VydmljZSB7XG4gIC8qKlxuICAgKiBFeHBvcnQgVGFibGVDb25maWcgdG8gSlNPTiBzdHJpbmdcbiAgICogQHBhcmFtIGNvbmZpZyBUYWJsZSBjb25maWd1cmF0aW9uXG4gICAqIEBwYXJhbSBwcmV0dHkgV2hldGhlciB0byBmb3JtYXQgSlNPTiB3aXRoIGluZGVudGF0aW9uXG4gICAqIEByZXR1cm5zIEpTT04gc3RyaW5nXG4gICAqL1xuICBleHBvcnRUb0pTT04oY29uZmlnOiBUYWJsZUNvbmZpZywgcHJldHR5OiBib29sZWFuID0gdHJ1ZSk6IHN0cmluZyB7XG4gICAgLy8gQ3JlYXRlIGEgc2VyaWFsaXphYmxlIHZlcnNpb24gKHJlbW92ZSBmdW5jdGlvbnMsIGNpcmN1bGFyIHJlZnMpXG4gICAgY29uc3Qgc2VyaWFsaXphYmxlID0gdGhpcy5zYW5pdGl6ZUZvckpTT04oY29uZmlnKTtcblxuICAgIGlmIChwcmV0dHkpIHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShzZXJpYWxpemFibGUsIG51bGwsIDIpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoc2VyaWFsaXphYmxlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRXhwb3J0IFRhYmxlQ29uZmlnIHRvIFR5cGVTY3JpcHQgY29kZVxuICAgKiBAcGFyYW0gY29uZmlnIFRhYmxlIGNvbmZpZ3VyYXRpb25cbiAgICogQHBhcmFtIG9wdGlvbnMgR2VuZXJhdGlvbiBvcHRpb25zXG4gICAqIEByZXR1cm5zIFR5cGVTY3JpcHQgY29kZSBzdHJpbmdcbiAgICovXG4gIGV4cG9ydFRvVHlwZVNjcmlwdChjb25maWc6IFRhYmxlQ29uZmlnLCBvcHRpb25zOiBUeXBlU2NyaXB0R2VuZXJhdG9yT3B0aW9ucyA9IHt9KTogc3RyaW5nIHtcbiAgICByZXR1cm4gZ2VuZXJhdGVUeXBlU2NyaXB0Q29kZShjb25maWcsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIERvd25sb2FkIGNvbmZpZ3VyYXRpb24gYXMgSlNPTiBmaWxlXG4gICAqIEBwYXJhbSBjb25maWcgVGFibGUgY29uZmlndXJhdGlvblxuICAgKiBAcGFyYW0gZmlsZU5hbWUgRmlsZSBuYW1lICh3aXRob3V0IGV4dGVuc2lvbilcbiAgICovXG4gIGRvd25sb2FkQXNKU09OKGNvbmZpZzogVGFibGVDb25maWcsIGZpbGVOYW1lOiBzdHJpbmcgPSAndGFibGUtY29uZmlnJyk6IHZvaWQge1xuICAgIGNvbnN0IGpzb24gPSB0aGlzLmV4cG9ydFRvSlNPTihjb25maWcpO1xuICAgIHRoaXMuZG93bmxvYWRGaWxlKGpzb24sIGAke2ZpbGVOYW1lfS5qc29uYCwgJ2FwcGxpY2F0aW9uL2pzb24nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEb3dubG9hZCBjb25maWd1cmF0aW9uIGFzIFR5cGVTY3JpcHQgZmlsZVxuICAgKiBAcGFyYW0gY29uZmlnIFRhYmxlIGNvbmZpZ3VyYXRpb25cbiAgICogQHBhcmFtIGZpbGVOYW1lIEZpbGUgbmFtZSAod2l0aG91dCBleHRlbnNpb24pXG4gICAqIEBwYXJhbSBvcHRpb25zIEdlbmVyYXRpb24gb3B0aW9uc1xuICAgKi9cbiAgZG93bmxvYWRBc1R5cGVTY3JpcHQoXG4gICAgY29uZmlnOiBUYWJsZUNvbmZpZyxcbiAgICBmaWxlTmFtZTogc3RyaW5nID0gJ3RhYmxlLWNvbmZpZycsXG4gICAgb3B0aW9uczogVHlwZVNjcmlwdEdlbmVyYXRvck9wdGlvbnMgPSB7fVxuICApOiB2b2lkIHtcbiAgICBjb25zdCBjb2RlID0gdGhpcy5leHBvcnRUb1R5cGVTY3JpcHQoY29uZmlnLCBvcHRpb25zKTtcbiAgICB0aGlzLmRvd25sb2FkRmlsZShjb2RlLCBgJHtmaWxlTmFtZX0udHNgLCAndGV4dC90eXBlc2NyaXB0Jyk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSBjb25maWd1cmF0aW9uIHRvIGxvY2FsU3RvcmFnZVxuICAgKiBAcGFyYW0gY29uZmlnIFRhYmxlIGNvbmZpZ3VyYXRpb25cbiAgICogQHBhcmFtIGtleSBTdG9yYWdlIGtleVxuICAgKi9cbiAgc2F2ZVRvTG9jYWxTdG9yYWdlKGNvbmZpZzogVGFibGVDb25maWcsIGtleTogc3RyaW5nID0gJ3NtYXJ0LXRhYmxlLWRlZmluaXRpb24nKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGpzb24gPSB0aGlzLmV4cG9ydFRvSlNPTihjb25maWcsIGZhbHNlKTtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwganNvbik7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBzYXZlIHRvIGxvY2FsU3RvcmFnZTonLCBlcnJvcik7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTG9hZCBjb25maWd1cmF0aW9uIGZyb20gbG9jYWxTdG9yYWdlXG4gICAqIEBwYXJhbSBrZXkgU3RvcmFnZSBrZXlcbiAgICogQHJldHVybnMgVGFibGVDb25maWcgb3IgbnVsbCBpZiBub3QgZm91bmRcbiAgICovXG4gIGxvYWRGcm9tTG9jYWxTdG9yYWdlKGtleTogc3RyaW5nID0gJ3NtYXJ0LXRhYmxlLWRlZmluaXRpb24nKTogVGFibGVDb25maWcgfCBudWxsIHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RvcmVkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTtcbiAgICAgIGlmICghc3RvcmVkKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShzdG9yZWQpIGFzIFRhYmxlQ29uZmlnO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gbG9hZCBmcm9tIGxvY2FsU3RvcmFnZTonLCBlcnJvcik7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2FuaXRpemUgY29uZmlnIGZvciBKU09OIHNlcmlhbGl6YXRpb25cbiAgICogUmVtb3ZlcyBmdW5jdGlvbnMsIGNpcmN1bGFyIHJlZmVyZW5jZXMsIGFuZCBvdGhlciBub24tc2VyaWFsaXphYmxlIHZhbHVlc1xuICAgKi9cbiAgcHJpdmF0ZSBzYW5pdGl6ZUZvckpTT04oY29uZmlnOiBUYWJsZUNvbmZpZyk6IGFueSB7XG4gICAgY29uc3Qgc2FuaXRpemVkOiBhbnkgPSB7XG4gICAgICBjb2x1bW5zOiBjb25maWcuY29sdW1ucy5tYXAoY29sID0+IHRoaXMuc2FuaXRpemVDb2x1bW4oY29sKSksXG4gICAgICBwYWdpbmF0aW9uOiBjb25maWcucGFnaW5hdGlvbixcbiAgICAgIHNvcnRpbmc6IGNvbmZpZy5zb3J0aW5nLFxuICAgICAgZmlsdGVyaW5nOiBjb25maWcuZmlsdGVyaW5nLFxuICAgICAgZGlzcGxheTogY29uZmlnLmRpc3BsYXksXG4gICAgICBpbml0aWFsU3RhdGU6IGNvbmZpZy5pbml0aWFsU3RhdGVcbiAgICB9O1xuXG4gICAgLy8gUmVtb3ZlIHVuZGVmaW5lZCB2YWx1ZXNcbiAgICBPYmplY3Qua2V5cyhzYW5pdGl6ZWQpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGlmIChzYW5pdGl6ZWRba2V5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGRlbGV0ZSBzYW5pdGl6ZWRba2V5XTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBzYW5pdGl6ZWQ7XG4gIH1cblxuICAvKipcbiAgICogU2FuaXRpemUgY29sdW1uIGNvbmZpZyBmb3IgSlNPTiBzZXJpYWxpemF0aW9uXG4gICAqL1xuICBwcml2YXRlIHNhbml0aXplQ29sdW1uKGNvbHVtbjogYW55KTogYW55IHtcbiAgICBjb25zdCBzYW5pdGl6ZWQ6IGFueSA9IHtcbiAgICAgIGtleTogY29sdW1uLmtleSxcbiAgICAgIGhlYWRlcjogY29sdW1uLmhlYWRlcixcbiAgICAgIGRhdGFUeXBlOiBjb2x1bW4uZGF0YVR5cGUsXG4gICAgICBlZGl0YWJsZTogY29sdW1uLmVkaXRhYmxlLFxuICAgICAgc29ydGFibGU6IGNvbHVtbi5zb3J0YWJsZSxcbiAgICAgIGZpbHRlcmFibGU6IGNvbHVtbi5maWx0ZXJhYmxlLFxuICAgICAgcmVzaXphYmxlOiBjb2x1bW4ucmVzaXphYmxlLFxuICAgICAgd2lkdGg6IGNvbHVtbi53aWR0aCxcbiAgICAgIG1pbldpZHRoOiBjb2x1bW4ubWluV2lkdGgsXG4gICAgICBtYXhXaWR0aDogY29sdW1uLm1heFdpZHRoLFxuICAgICAgc3RpY2t5OiBjb2x1bW4uc3RpY2t5LFxuICAgICAgYWxpZ25tZW50OiBjb2x1bW4uYWxpZ25tZW50LFxuICAgICAgdmVydGljYWxBbGlnbm1lbnQ6IGNvbHVtbi52ZXJ0aWNhbEFsaWdubWVudCxcbiAgICAgIGNsYXNzTmFtZTogY29sdW1uLmNsYXNzTmFtZSxcbiAgICAgIHN0eWxlOiBjb2x1bW4uc3R5bGUsXG4gICAgICB0b29sdGlwOiBjb2x1bW4udG9vbHRpcCxcbiAgICAgIHZpc2libGU6IGNvbHVtbi52aXNpYmxlLFxuICAgICAgcGlubmVkOiBjb2x1bW4ucGlubmVkLFxuICAgICAgc29ydFByaW9yaXR5OiBjb2x1bW4uc29ydFByaW9yaXR5LFxuICAgICAgbWV0YWRhdGE6IGNvbHVtbi5tZXRhZGF0YVxuICAgIH07XG5cbiAgICAvLyBSZW1vdmUgdW5kZWZpbmVkIHZhbHVlc1xuICAgIE9iamVjdC5rZXlzKHNhbml0aXplZCkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKHNhbml0aXplZFtrZXldID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZGVsZXRlIHNhbml0aXplZFtrZXldO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTm90ZTogZm9ybWF0dGVyLCB2YWxpZGF0b3IsIGVkaXRvciwgcGFyc2VyLCBob29rcyBhcmUgZnVuY3Rpb25zXG4gICAgLy8gYW5kIGNhbm5vdCBiZSBzZXJpYWxpemVkIHRvIEpTT04uIFRoZXkgd2lsbCBuZWVkIHRvIGJlIHJlY3JlYXRlZFxuICAgIC8vIHdoZW4gaW1wb3J0aW5nLCBvciBzdG9yZWQgc2VwYXJhdGVseSBhcyBtZXRhZGF0YS5cblxuICAgIHJldHVybiBzYW5pdGl6ZWQ7XG4gIH1cblxuICAvKipcbiAgICogRG93bmxvYWQgZmlsZSBoZWxwZXJcbiAgICovXG4gIHByaXZhdGUgZG93bmxvYWRGaWxlKGNvbnRlbnQ6IHN0cmluZywgZmlsZU5hbWU6IHN0cmluZywgbWltZVR5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbY29udGVudF0sIHsgdHlwZTogbWltZVR5cGUgfSk7XG4gICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGxpbmsuaHJlZiA9IHVybDtcbiAgICBsaW5rLmRvd25sb2FkID0gZmlsZU5hbWU7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcbiAgICBsaW5rLmNsaWNrKCk7XG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcbiAgICBVUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XG4gIH1cbn1cblxuIl19
|