@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,231 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Column configuration factory
|
|
3
|
-
* Simplifies creation of common column types with sensible defaults
|
|
4
|
-
*/
|
|
5
|
-
import { DEFAULT_COLUMN_CONFIG } from '../models/column-config.interface';
|
|
6
|
-
import { CellDataType } from '../models/cell-types';
|
|
7
|
-
import { Cell } from '../renderer/models/cell.class';
|
|
8
|
-
import { StringFormatter, NumberFormatter, CurrencyFormatter, DateFormatter, BooleanFormatter } from '../strategies/default-formatters';
|
|
9
|
-
import { PatternValidators } from '../strategies/default-validators';
|
|
10
|
-
import { TextEditor, NumberEditor, DateEditor, SelectEditor, BooleanEditor } from '../strategies/default-editors';
|
|
11
|
-
import { deepMergeColumnConfig } from '../models/column-config.utils';
|
|
12
|
-
/**
|
|
13
|
-
* Column configuration factory - Factory Pattern
|
|
14
|
-
* Provides convenient methods to create pre-configured column types
|
|
15
|
-
*/
|
|
16
|
-
export class ColumnConfigFactory {
|
|
17
|
-
/**
|
|
18
|
-
* Create a text column
|
|
19
|
-
*/
|
|
20
|
-
static text(key, options) {
|
|
21
|
-
const config = deepMergeColumnConfig(DEFAULT_COLUMN_CONFIG, {
|
|
22
|
-
key,
|
|
23
|
-
header: key.charAt(0).toUpperCase() + key.slice(1),
|
|
24
|
-
dataType: CellDataType.STRING,
|
|
25
|
-
formatter: new StringFormatter(),
|
|
26
|
-
editor: new TextEditor(),
|
|
27
|
-
}, options || {});
|
|
28
|
-
return {
|
|
29
|
-
...config,
|
|
30
|
-
createCell(rowData, rowIndex) {
|
|
31
|
-
const valueGetter = options?.valueGetter || ((data) => data[key]);
|
|
32
|
-
const value = valueGetter(rowData);
|
|
33
|
-
return new Cell(this, value, rowData, rowIndex);
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Create a number column
|
|
39
|
-
*/
|
|
40
|
-
static number(key, options) {
|
|
41
|
-
const config = deepMergeColumnConfig(DEFAULT_COLUMN_CONFIG, {
|
|
42
|
-
key,
|
|
43
|
-
header: key.charAt(0).toUpperCase() + key.slice(1),
|
|
44
|
-
dataType: CellDataType.NUMBER,
|
|
45
|
-
formatter: new NumberFormatter({ decimals: 2 }),
|
|
46
|
-
validator: PatternValidators.custom((val) => typeof val === 'number' && !isNaN(val), 'Must be a valid number'),
|
|
47
|
-
editor: new NumberEditor(),
|
|
48
|
-
}, options || {});
|
|
49
|
-
return {
|
|
50
|
-
...config,
|
|
51
|
-
createCell(rowData, rowIndex) {
|
|
52
|
-
const valueGetter = options?.valueGetter || ((data) => data[key]);
|
|
53
|
-
const value = valueGetter(rowData);
|
|
54
|
-
return new Cell(this, value, rowData, rowIndex);
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Create a currency column
|
|
60
|
-
*/
|
|
61
|
-
static currency(key, options) {
|
|
62
|
-
const currency = options?.currency || 'USD';
|
|
63
|
-
const locale = options?.locale || 'en-US';
|
|
64
|
-
const config = deepMergeColumnConfig(DEFAULT_COLUMN_CONFIG, {
|
|
65
|
-
key,
|
|
66
|
-
header: key.charAt(0).toUpperCase() + key.slice(1),
|
|
67
|
-
dataType: CellDataType.NUMBER,
|
|
68
|
-
formatter: new CurrencyFormatter({ currency, locale }),
|
|
69
|
-
validator: PatternValidators.chain(PatternValidators.custom((val) => typeof val === 'number' && !isNaN(val), 'Must be a valid number'), PatternValidators.range(0, undefined, 'Amount must be positive')),
|
|
70
|
-
editor: new NumberEditor({ min: 0, step: 0.01 }),
|
|
71
|
-
}, options || {});
|
|
72
|
-
return {
|
|
73
|
-
...config,
|
|
74
|
-
createCell(rowData, rowIndex) {
|
|
75
|
-
const valueGetter = options?.valueGetter || ((data) => data[key]);
|
|
76
|
-
const value = valueGetter(rowData);
|
|
77
|
-
return new Cell(this, value, rowData, rowIndex);
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Create a date column
|
|
83
|
-
*/
|
|
84
|
-
static date(key, options) {
|
|
85
|
-
const dateStyle = options?.dateStyle || 'medium';
|
|
86
|
-
const locale = options?.locale || 'en-US';
|
|
87
|
-
const config = deepMergeColumnConfig(DEFAULT_COLUMN_CONFIG, {
|
|
88
|
-
key,
|
|
89
|
-
header: key.charAt(0).toUpperCase() + key.slice(1),
|
|
90
|
-
dataType: CellDataType.DATE,
|
|
91
|
-
formatter: new DateFormatter({ dateStyle, locale }),
|
|
92
|
-
editor: new DateEditor(),
|
|
93
|
-
}, options || {});
|
|
94
|
-
return {
|
|
95
|
-
...config,
|
|
96
|
-
createCell(rowData, rowIndex) {
|
|
97
|
-
const valueGetter = options?.valueGetter || ((data) => data[key]);
|
|
98
|
-
const value = valueGetter(rowData);
|
|
99
|
-
return new Cell(this, value, rowData, rowIndex);
|
|
100
|
-
}
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Create a boolean column
|
|
105
|
-
*/
|
|
106
|
-
static boolean(key, options) {
|
|
107
|
-
const trueValue = options?.trueValue || 'Yes';
|
|
108
|
-
const falseValue = options?.falseValue || 'No';
|
|
109
|
-
const config = deepMergeColumnConfig(DEFAULT_COLUMN_CONFIG, {
|
|
110
|
-
key,
|
|
111
|
-
header: key.charAt(0).toUpperCase() + key.slice(1),
|
|
112
|
-
dataType: CellDataType.BOOLEAN,
|
|
113
|
-
formatter: new BooleanFormatter({ trueValue, falseValue }),
|
|
114
|
-
editor: new BooleanEditor(),
|
|
115
|
-
}, options || {});
|
|
116
|
-
return {
|
|
117
|
-
...config,
|
|
118
|
-
createCell(rowData, rowIndex) {
|
|
119
|
-
const valueGetter = options?.valueGetter || ((data) => data[key]);
|
|
120
|
-
const value = valueGetter(rowData);
|
|
121
|
-
return new Cell(this, value, rowData, rowIndex);
|
|
122
|
-
}
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Create a select/dropdown column
|
|
127
|
-
*/
|
|
128
|
-
static select(key, selectOptions, options) {
|
|
129
|
-
const config = deepMergeColumnConfig(DEFAULT_COLUMN_CONFIG, {
|
|
130
|
-
key,
|
|
131
|
-
header: key.charAt(0).toUpperCase() + key.slice(1),
|
|
132
|
-
editor: new SelectEditor({ options: selectOptions }),
|
|
133
|
-
}, options || {});
|
|
134
|
-
return {
|
|
135
|
-
...config,
|
|
136
|
-
createCell(rowData, rowIndex) {
|
|
137
|
-
const valueGetter = options?.valueGetter || ((data) => data[key]);
|
|
138
|
-
const value = valueGetter(rowData);
|
|
139
|
-
return new Cell(this, value, rowData, rowIndex);
|
|
140
|
-
}
|
|
141
|
-
};
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Create an email column
|
|
145
|
-
*/
|
|
146
|
-
static email(key, options) {
|
|
147
|
-
const config = deepMergeColumnConfig(DEFAULT_COLUMN_CONFIG, {
|
|
148
|
-
key,
|
|
149
|
-
header: key.charAt(0).toUpperCase() + key.slice(1),
|
|
150
|
-
dataType: CellDataType.STRING,
|
|
151
|
-
formatter: new StringFormatter(),
|
|
152
|
-
validator: PatternValidators.email(),
|
|
153
|
-
editor: new TextEditor({ placeholder: 'email@example.com' }),
|
|
154
|
-
}, options || {});
|
|
155
|
-
return {
|
|
156
|
-
...config,
|
|
157
|
-
createCell(rowData, rowIndex) {
|
|
158
|
-
const valueGetter = options?.valueGetter || ((data) => data[key]);
|
|
159
|
-
const value = valueGetter(rowData);
|
|
160
|
-
return new Cell(this, value, rowData, rowIndex);
|
|
161
|
-
}
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* Create a readonly column
|
|
166
|
-
*/
|
|
167
|
-
static readonly(key, options) {
|
|
168
|
-
const config = deepMergeColumnConfig(DEFAULT_COLUMN_CONFIG, {
|
|
169
|
-
key,
|
|
170
|
-
header: key.charAt(0).toUpperCase() + key.slice(1),
|
|
171
|
-
editable: false,
|
|
172
|
-
}, options || {});
|
|
173
|
-
return {
|
|
174
|
-
...config,
|
|
175
|
-
createCell(rowData, rowIndex) {
|
|
176
|
-
const valueGetter = options?.valueGetter || ((data) => data[key]);
|
|
177
|
-
const value = valueGetter(rowData);
|
|
178
|
-
return new Cell(this, value, rowData, rowIndex);
|
|
179
|
-
}
|
|
180
|
-
};
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* Create a custom column with full control
|
|
184
|
-
*/
|
|
185
|
-
static custom(config) {
|
|
186
|
-
if (!config.key) {
|
|
187
|
-
throw new Error('Column key is required');
|
|
188
|
-
}
|
|
189
|
-
const mergedConfig = deepMergeColumnConfig(DEFAULT_COLUMN_CONFIG, {
|
|
190
|
-
header: config.key.charAt(0).toUpperCase() + config.key.slice(1),
|
|
191
|
-
}, config);
|
|
192
|
-
return {
|
|
193
|
-
...mergedConfig,
|
|
194
|
-
createCell(rowData, rowIndex) {
|
|
195
|
-
const valueGetter = config.valueGetter || ((data) => data[config.key]);
|
|
196
|
-
const value = valueGetter(rowData);
|
|
197
|
-
return new Cell(this, value, rowData, rowIndex);
|
|
198
|
-
}
|
|
199
|
-
};
|
|
200
|
-
}
|
|
201
|
-
/**
|
|
202
|
-
* Create multiple columns at once from a simple configuration
|
|
203
|
-
*/
|
|
204
|
-
static fromKeys(keys) {
|
|
205
|
-
return keys.map(keyConfig => {
|
|
206
|
-
if (typeof keyConfig === 'string' || typeof keyConfig === 'number' || typeof keyConfig === 'symbol') {
|
|
207
|
-
return ColumnConfigFactory.text(String(keyConfig));
|
|
208
|
-
}
|
|
209
|
-
else {
|
|
210
|
-
const { key, type = 'text', options = {} } = keyConfig;
|
|
211
|
-
const keyStr = String(key);
|
|
212
|
-
switch (type) {
|
|
213
|
-
case 'number':
|
|
214
|
-
return ColumnConfigFactory.number(keyStr, options);
|
|
215
|
-
case 'date':
|
|
216
|
-
return ColumnConfigFactory.date(keyStr, options);
|
|
217
|
-
case 'boolean':
|
|
218
|
-
return ColumnConfigFactory.boolean(keyStr, options);
|
|
219
|
-
case 'text':
|
|
220
|
-
default:
|
|
221
|
-
return ColumnConfigFactory.text(keyStr, options);
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
});
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
/**
|
|
228
|
-
* Convenience exports for common column types
|
|
229
|
-
*/
|
|
230
|
-
export const Columns = ColumnConfigFactory;
|
|
231
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWNvbmZpZy5mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtdGFibGUvc3JjL2xpYi9mYWN0b3JpZXMvY29sdW1uLWNvbmZpZy5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3JELE9BQU8sRUFDTCxlQUFlLEVBQ2YsZUFBZSxFQUNmLGlCQUFpQixFQUNqQixhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2pCLE1BQU0sa0NBQWtDLENBQUM7QUFDMUMsT0FBTyxFQUNMLGlCQUFpQixFQUNsQixNQUFNLGtDQUFrQyxDQUFDO0FBQzFDLE9BQU8sRUFDTCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osYUFBYSxFQUNkLE1BQU0sK0JBQStCLENBQUM7QUFDdkMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFdEU7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLG1CQUFtQjtJQUM5Qjs7T0FFRztJQUNILE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBVyxFQUFFLE9BQXVDO1FBQzlELE1BQU0sTUFBTSxHQUFHLHFCQUFxQixDQUNsQyxxQkFBcUIsRUFDckI7WUFDRSxHQUFHO1lBQ0gsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDbEQsUUFBUSxFQUFFLFlBQVksQ0FBQyxNQUFNO1lBQzdCLFNBQVMsRUFBRSxJQUFJLGVBQWUsRUFBRTtZQUNoQyxNQUFNLEVBQUUsSUFBSSxVQUFVLEVBQUU7U0FDekIsRUFDRCxPQUFPLElBQUksRUFBRSxDQUNkLENBQUM7UUFFRixPQUFPO1lBQ0wsR0FBRyxNQUFNO1lBQ1QsVUFBVSxDQUFDLE9BQVksRUFBRSxRQUFpQjtnQkFDeEMsTUFBTSxXQUFXLEdBQUcsT0FBTyxFQUFFLFdBQVcsSUFBSSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDdkUsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNuQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ2xELENBQUM7U0FDc0IsQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQVcsRUFBRSxPQUF1QztRQUNoRSxNQUFNLE1BQU0sR0FBRyxxQkFBcUIsQ0FDbEMscUJBQXFCLEVBQ3JCO1lBQ0UsR0FBRztZQUNILE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2xELFFBQVEsRUFBRSxZQUFZLENBQUMsTUFBTTtZQUM3QixTQUFTLEVBQUUsSUFBSSxlQUFlLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDL0MsU0FBUyxFQUFFLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLHdCQUF3QixDQUFDO1lBQzlHLE1BQU0sRUFBRSxJQUFJLFlBQVksRUFBRTtTQUMzQixFQUNELE9BQU8sSUFBSSxFQUFFLENBQ2QsQ0FBQztRQUVGLE9BQU87WUFDTCxHQUFHLE1BQU07WUFDVCxVQUFVLENBQUMsT0FBWSxFQUFFLFFBQWlCO2dCQUN4QyxNQUFNLFdBQVcsR0FBRyxPQUFPLEVBQUUsV0FBVyxJQUFJLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUN2RSxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ25DLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDbEQsQ0FBQztTQUNzQixDQUFDO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBVyxFQUFFLE9BRzVCO1FBQ0MsTUFBTSxRQUFRLEdBQUksT0FBZSxFQUFFLFFBQVEsSUFBSSxLQUFLLENBQUM7UUFDckQsTUFBTSxNQUFNLEdBQUksT0FBZSxFQUFFLE1BQU0sSUFBSSxPQUFPLENBQUM7UUFFbkQsTUFBTSxNQUFNLEdBQUcscUJBQXFCLENBQ2xDLHFCQUFxQixFQUNyQjtZQUNFLEdBQUc7WUFDSCxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNsRCxRQUFRLEVBQUUsWUFBWSxDQUFDLE1BQU07WUFDN0IsU0FBUyxFQUFFLElBQUksaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDdEQsU0FBUyxFQUFFLGlCQUFpQixDQUFDLEtBQUssQ0FDaEMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsd0JBQXdCLENBQUMsRUFDbkcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUseUJBQXlCLENBQUMsQ0FDakU7WUFDRCxNQUFNLEVBQUUsSUFBSSxZQUFZLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUNqRCxFQUNELE9BQU8sSUFBSSxFQUFFLENBQ2QsQ0FBQztRQUVGLE9BQU87WUFDTCxHQUFHLE1BQU07WUFDVCxVQUFVLENBQUMsT0FBWSxFQUFFLFFBQWlCO2dCQUN4QyxNQUFNLFdBQVcsR0FBRyxPQUFPLEVBQUUsV0FBVyxJQUFJLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUN2RSxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ25DLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDbEQsQ0FBQztTQUNzQixDQUFDO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBVyxFQUFFLE9BR3hCO1FBQ0MsTUFBTSxTQUFTLEdBQUksT0FBZSxFQUFFLFNBQVMsSUFBSSxRQUFRLENBQUM7UUFDMUQsTUFBTSxNQUFNLEdBQUksT0FBZSxFQUFFLE1BQU0sSUFBSSxPQUFPLENBQUM7UUFFbkQsTUFBTSxNQUFNLEdBQUcscUJBQXFCLENBQ2xDLHFCQUFxQixFQUNyQjtZQUNFLEdBQUc7WUFDSCxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNsRCxRQUFRLEVBQUUsWUFBWSxDQUFDLElBQUk7WUFDM0IsU0FBUyxFQUFFLElBQUksYUFBYSxDQUFDLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ25ELE1BQU0sRUFBRSxJQUFJLFVBQVUsRUFBRTtTQUN6QixFQUNELE9BQU8sSUFBSSxFQUFFLENBQ2QsQ0FBQztRQUVGLE9BQU87WUFDTCxHQUFHLE1BQU07WUFDVCxVQUFVLENBQUMsT0FBWSxFQUFFLFFBQWlCO2dCQUN4QyxNQUFNLFdBQVcsR0FBRyxPQUFPLEVBQUUsV0FBVyxJQUFJLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUN2RSxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ25DLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDbEQsQ0FBQztTQUNvQixDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBVyxFQUFFLE9BRzNCO1FBQ0MsTUFBTSxTQUFTLEdBQUksT0FBZSxFQUFFLFNBQVMsSUFBSSxLQUFLLENBQUM7UUFDdkQsTUFBTSxVQUFVLEdBQUksT0FBZSxFQUFFLFVBQVUsSUFBSSxJQUFJLENBQUM7UUFFeEQsTUFBTSxNQUFNLEdBQUcscUJBQXFCLENBQ2xDLHFCQUFxQixFQUNyQjtZQUNFLEdBQUc7WUFDSCxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNsRCxRQUFRLEVBQUUsWUFBWSxDQUFDLE9BQU87WUFDOUIsU0FBUyxFQUFFLElBQUksZ0JBQWdCLENBQUMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUM7WUFDMUQsTUFBTSxFQUFFLElBQUksYUFBYSxFQUFFO1NBQzVCLEVBQ0QsT0FBTyxJQUFJLEVBQUUsQ0FDZCxDQUFDO1FBRUYsT0FBTztZQUNMLEdBQUcsTUFBTTtZQUNULFVBQVUsQ0FBQyxPQUFZLEVBQUUsUUFBaUI7Z0JBQ3hDLE1BQU0sV0FBVyxHQUFHLE9BQU8sRUFBRSxXQUFXLElBQUksQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZFLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbkMsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNsRCxDQUFDO1NBQ3VCLENBQUM7SUFDN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLE1BQU0sQ0FDWCxHQUFXLEVBQ1gsYUFBaUQsRUFDakQsT0FBa0M7UUFFbEMsTUFBTSxNQUFNLEdBQUcscUJBQXFCLENBQ2xDLHFCQUFxQixFQUNyQjtZQUNFLEdBQUc7WUFDSCxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNsRCxNQUFNLEVBQUUsSUFBSSxZQUFZLENBQUMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLENBQUM7U0FDckQsRUFDRCxPQUFPLElBQUksRUFBRSxDQUNkLENBQUM7UUFFRixPQUFPO1lBQ0wsR0FBRyxNQUFNO1lBQ1QsVUFBVSxDQUFDLE9BQVksRUFBRSxRQUFpQjtnQkFDeEMsTUFBTSxXQUFXLEdBQUcsT0FBTyxFQUFFLFdBQVcsSUFBSSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDdkUsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNuQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ2xELENBQUM7U0FDaUIsQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQVcsRUFBRSxPQUF1QztRQUMvRCxNQUFNLE1BQU0sR0FBRyxxQkFBcUIsQ0FDbEMscUJBQXFCLEVBQ3JCO1lBQ0UsR0FBRztZQUNILE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2xELFFBQVEsRUFBRSxZQUFZLENBQUMsTUFBTTtZQUM3QixTQUFTLEVBQUUsSUFBSSxlQUFlLEVBQUU7WUFDaEMsU0FBUyxFQUFFLGlCQUFpQixDQUFDLEtBQUssRUFBRTtZQUNwQyxNQUFNLEVBQUUsSUFBSSxVQUFVLENBQUMsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztTQUM3RCxFQUNELE9BQU8sSUFBSSxFQUFFLENBQ2QsQ0FBQztRQUVGLE9BQU87WUFDTCxHQUFHLE1BQU07WUFDVCxVQUFVLENBQUMsT0FBWSxFQUFFLFFBQWlCO2dCQUN4QyxNQUFNLFdBQVcsR0FBRyxPQUFPLEVBQUUsV0FBVyxJQUFJLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUN2RSxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ25DLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDbEQsQ0FBQztTQUNzQixDQUFDO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxRQUFRLENBQVUsR0FBVyxFQUFFLE9BQWtDO1FBQ3RFLE1BQU0sTUFBTSxHQUFHLHFCQUFxQixDQUNsQyxxQkFBcUIsRUFDckI7WUFDRSxHQUFHO1lBQ0gsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDbEQsUUFBUSxFQUFFLEtBQUs7U0FDaEIsRUFDRCxPQUFPLElBQUksRUFBRSxDQUNkLENBQUM7UUFFRixPQUFPO1lBQ0wsR0FBRyxNQUFNO1lBQ1QsVUFBVSxDQUFDLE9BQVksRUFBRSxRQUFpQjtnQkFDeEMsTUFBTSxXQUFXLEdBQUcsT0FBTyxFQUFFLFdBQVcsSUFBSSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDdkUsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNuQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ2xELENBQUM7U0FDaUIsQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsTUFBTSxDQUFVLE1BQWtEO1FBQ3ZFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1NBQzNDO1FBRUQsTUFBTSxZQUFZLEdBQUcscUJBQXFCLENBQ3hDLHFCQUFxQixFQUNyQjtZQUNFLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDakUsRUFDRCxNQUFNLENBQ1AsQ0FBQztRQUVGLE9BQU87WUFDTCxHQUFHLFlBQVk7WUFDZixVQUFVLENBQUMsT0FBWSxFQUFFLFFBQWlCO2dCQUN4QyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDNUUsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNuQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ2xELENBQUM7U0FDaUIsQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsUUFBUSxDQUNiLElBQXFHO1FBRXJHLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUMxQixJQUFJLE9BQU8sU0FBUyxLQUFLLFFBQVEsSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLElBQUksT0FBTyxTQUFTLEtBQUssUUFBUSxFQUFFO2dCQUNuRyxPQUFPLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQzthQUNwRDtpQkFBTTtnQkFDTCxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksR0FBRyxNQUFNLEVBQUUsT0FBTyxHQUFHLEVBQUUsRUFBRSxHQUFHLFNBQVMsQ0FBQztnQkFDdkQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUUzQixRQUFRLElBQUksRUFBRTtvQkFDWixLQUFLLFFBQVE7d0JBQ1gsT0FBTyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO29CQUNyRCxLQUFLLE1BQU07d0JBQ1QsT0FBTyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO29CQUNuRCxLQUFLLFNBQVM7d0JBQ1osT0FBTyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO29CQUN0RCxLQUFLLE1BQU0sQ0FBQztvQkFDWjt3QkFDRSxPQUFPLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7aUJBQ3BEO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb2x1bW4gY29uZmlndXJhdGlvbiBmYWN0b3J5XG4gKiBTaW1wbGlmaWVzIGNyZWF0aW9uIG9mIGNvbW1vbiBjb2x1bW4gdHlwZXMgd2l0aCBzZW5zaWJsZSBkZWZhdWx0c1xuICovXG5cbmltcG9ydCB7IENvbHVtbkNvbmZpZywgREVGQVVMVF9DT0xVTU5fQ09ORklHIH0gZnJvbSAnLi4vbW9kZWxzL2NvbHVtbi1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IENlbGxEYXRhVHlwZSB9IGZyb20gJy4uL21vZGVscy9jZWxsLXR5cGVzJztcbmltcG9ydCB7IENlbGwgfSBmcm9tICcuLi9yZW5kZXJlci9tb2RlbHMvY2VsbC5jbGFzcyc7XG5pbXBvcnQge1xuICBTdHJpbmdGb3JtYXR0ZXIsXG4gIE51bWJlckZvcm1hdHRlcixcbiAgQ3VycmVuY3lGb3JtYXR0ZXIsXG4gIERhdGVGb3JtYXR0ZXIsXG4gIEJvb2xlYW5Gb3JtYXR0ZXJcbn0gZnJvbSAnLi4vc3RyYXRlZ2llcy9kZWZhdWx0LWZvcm1hdHRlcnMnO1xuaW1wb3J0IHtcbiAgUGF0dGVyblZhbGlkYXRvcnNcbn0gZnJvbSAnLi4vc3RyYXRlZ2llcy9kZWZhdWx0LXZhbGlkYXRvcnMnO1xuaW1wb3J0IHtcbiAgVGV4dEVkaXRvcixcbiAgTnVtYmVyRWRpdG9yLFxuICBEYXRlRWRpdG9yLFxuICBTZWxlY3RFZGl0b3IsXG4gIEJvb2xlYW5FZGl0b3Jcbn0gZnJvbSAnLi4vc3RyYXRlZ2llcy9kZWZhdWx0LWVkaXRvcnMnO1xuaW1wb3J0IHsgZGVlcE1lcmdlQ29sdW1uQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzL2NvbHVtbi1jb25maWcudXRpbHMnO1xuXG4vKipcbiAqIENvbHVtbiBjb25maWd1cmF0aW9uIGZhY3RvcnkgLSBGYWN0b3J5IFBhdHRlcm5cbiAqIFByb3ZpZGVzIGNvbnZlbmllbnQgbWV0aG9kcyB0byBjcmVhdGUgcHJlLWNvbmZpZ3VyZWQgY29sdW1uIHR5cGVzXG4gKi9cbmV4cG9ydCBjbGFzcyBDb2x1bW5Db25maWdGYWN0b3J5IHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhIHRleHQgY29sdW1uXG4gICAqL1xuICBzdGF0aWMgdGV4dChrZXk6IHN0cmluZywgb3B0aW9ucz86IFBhcnRpYWw8Q29sdW1uQ29uZmlnPHN0cmluZz4+KTogQ29sdW1uQ29uZmlnPHN0cmluZz4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IGRlZXBNZXJnZUNvbHVtbkNvbmZpZyhcbiAgICAgIERFRkFVTFRfQ09MVU1OX0NPTkZJRyxcbiAgICAgIHtcbiAgICAgICAga2V5LFxuICAgICAgICBoZWFkZXI6IGtleS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGtleS5zbGljZSgxKSxcbiAgICAgICAgZGF0YVR5cGU6IENlbGxEYXRhVHlwZS5TVFJJTkcsXG4gICAgICAgIGZvcm1hdHRlcjogbmV3IFN0cmluZ0Zvcm1hdHRlcigpLFxuICAgICAgICBlZGl0b3I6IG5ldyBUZXh0RWRpdG9yKCksXG4gICAgICB9LFxuICAgICAgb3B0aW9ucyB8fCB7fVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgY3JlYXRlQ2VsbChyb3dEYXRhOiBhbnksIHJvd0luZGV4PzogbnVtYmVyKTogQ2VsbDxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgdmFsdWVHZXR0ZXIgPSBvcHRpb25zPy52YWx1ZUdldHRlciB8fCAoKGRhdGE6IGFueSkgPT4gZGF0YVtrZXldKTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB2YWx1ZUdldHRlcihyb3dEYXRhKTtcbiAgICAgICAgcmV0dXJuIG5ldyBDZWxsKHRoaXMsIHZhbHVlLCByb3dEYXRhLCByb3dJbmRleCk7XG4gICAgICB9XG4gICAgfSBhcyBDb2x1bW5Db25maWc8c3RyaW5nPjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBudW1iZXIgY29sdW1uXG4gICAqL1xuICBzdGF0aWMgbnVtYmVyKGtleTogc3RyaW5nLCBvcHRpb25zPzogUGFydGlhbDxDb2x1bW5Db25maWc8bnVtYmVyPj4pOiBDb2x1bW5Db25maWc8bnVtYmVyPiB7XG4gICAgY29uc3QgY29uZmlnID0gZGVlcE1lcmdlQ29sdW1uQ29uZmlnKFxuICAgICAgREVGQVVMVF9DT0xVTU5fQ09ORklHLFxuICAgICAge1xuICAgICAgICBrZXksXG4gICAgICAgIGhlYWRlcjoga2V5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsga2V5LnNsaWNlKDEpLFxuICAgICAgICBkYXRhVHlwZTogQ2VsbERhdGFUeXBlLk5VTUJFUixcbiAgICAgICAgZm9ybWF0dGVyOiBuZXcgTnVtYmVyRm9ybWF0dGVyKHsgZGVjaW1hbHM6IDIgfSksXG4gICAgICAgIHZhbGlkYXRvcjogUGF0dGVyblZhbGlkYXRvcnMuY3VzdG9tKCh2YWwpID0+IHR5cGVvZiB2YWwgPT09ICdudW1iZXInICYmICFpc05hTih2YWwpLCAnTXVzdCBiZSBhIHZhbGlkIG51bWJlcicpLFxuICAgICAgICBlZGl0b3I6IG5ldyBOdW1iZXJFZGl0b3IoKSxcbiAgICAgIH0sXG4gICAgICBvcHRpb25zIHx8IHt9XG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5jb25maWcsXG4gICAgICBjcmVhdGVDZWxsKHJvd0RhdGE6IGFueSwgcm93SW5kZXg/OiBudW1iZXIpOiBDZWxsPG51bWJlcj4ge1xuICAgICAgICBjb25zdCB2YWx1ZUdldHRlciA9IG9wdGlvbnM/LnZhbHVlR2V0dGVyIHx8ICgoZGF0YTogYW55KSA9PiBkYXRhW2tleV0pO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHZhbHVlR2V0dGVyKHJvd0RhdGEpO1xuICAgICAgICByZXR1cm4gbmV3IENlbGwodGhpcywgdmFsdWUsIHJvd0RhdGEsIHJvd0luZGV4KTtcbiAgICAgIH1cbiAgICB9IGFzIENvbHVtbkNvbmZpZzxudW1iZXI+O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGN1cnJlbmN5IGNvbHVtblxuICAgKi9cbiAgc3RhdGljIGN1cnJlbmN5KGtleTogc3RyaW5nLCBvcHRpb25zPzogUGFydGlhbDxDb2x1bW5Db25maWc8bnVtYmVyPj4gJiB7XG4gICAgY3VycmVuY3k/OiBzdHJpbmc7XG4gICAgbG9jYWxlPzogc3RyaW5nO1xuICB9KTogQ29sdW1uQ29uZmlnPG51bWJlcj4ge1xuICAgIGNvbnN0IGN1cnJlbmN5ID0gKG9wdGlvbnMgYXMgYW55KT8uY3VycmVuY3kgfHwgJ1VTRCc7XG4gICAgY29uc3QgbG9jYWxlID0gKG9wdGlvbnMgYXMgYW55KT8ubG9jYWxlIHx8ICdlbi1VUyc7XG5cbiAgICBjb25zdCBjb25maWcgPSBkZWVwTWVyZ2VDb2x1bW5Db25maWcoXG4gICAgICBERUZBVUxUX0NPTFVNTl9DT05GSUcsXG4gICAgICB7XG4gICAgICAgIGtleSxcbiAgICAgICAgaGVhZGVyOiBrZXkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBrZXkuc2xpY2UoMSksXG4gICAgICAgIGRhdGFUeXBlOiBDZWxsRGF0YVR5cGUuTlVNQkVSLFxuICAgICAgICBmb3JtYXR0ZXI6IG5ldyBDdXJyZW5jeUZvcm1hdHRlcih7IGN1cnJlbmN5LCBsb2NhbGUgfSksXG4gICAgICAgIHZhbGlkYXRvcjogUGF0dGVyblZhbGlkYXRvcnMuY2hhaW4oXG4gICAgICAgICAgUGF0dGVyblZhbGlkYXRvcnMuY3VzdG9tKCh2YWwpID0+IHR5cGVvZiB2YWwgPT09ICdudW1iZXInICYmICFpc05hTih2YWwpLCAnTXVzdCBiZSBhIHZhbGlkIG51bWJlcicpLFxuICAgICAgICAgIFBhdHRlcm5WYWxpZGF0b3JzLnJhbmdlKDAsIHVuZGVmaW5lZCwgJ0Ftb3VudCBtdXN0IGJlIHBvc2l0aXZlJylcbiAgICAgICAgKSxcbiAgICAgICAgZWRpdG9yOiBuZXcgTnVtYmVyRWRpdG9yKHsgbWluOiAwLCBzdGVwOiAwLjAxIH0pLFxuICAgICAgfSxcbiAgICAgIG9wdGlvbnMgfHwge31cbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIGNyZWF0ZUNlbGwocm93RGF0YTogYW55LCByb3dJbmRleD86IG51bWJlcik6IENlbGw8bnVtYmVyPiB7XG4gICAgICAgIGNvbnN0IHZhbHVlR2V0dGVyID0gb3B0aW9ucz8udmFsdWVHZXR0ZXIgfHwgKChkYXRhOiBhbnkpID0+IGRhdGFba2V5XSk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdmFsdWVHZXR0ZXIocm93RGF0YSk7XG4gICAgICAgIHJldHVybiBuZXcgQ2VsbCh0aGlzLCB2YWx1ZSwgcm93RGF0YSwgcm93SW5kZXgpO1xuICAgICAgfVxuICAgIH0gYXMgQ29sdW1uQ29uZmlnPG51bWJlcj47XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgZGF0ZSBjb2x1bW5cbiAgICovXG4gIHN0YXRpYyBkYXRlKGtleTogc3RyaW5nLCBvcHRpb25zPzogUGFydGlhbDxDb2x1bW5Db25maWc8RGF0ZT4+ICYge1xuICAgIGRhdGVTdHlsZT86ICdmdWxsJyB8ICdsb25nJyB8ICdtZWRpdW0nIHwgJ3Nob3J0JztcbiAgICBsb2NhbGU/OiBzdHJpbmc7XG4gIH0pOiBDb2x1bW5Db25maWc8RGF0ZT4ge1xuICAgIGNvbnN0IGRhdGVTdHlsZSA9IChvcHRpb25zIGFzIGFueSk/LmRhdGVTdHlsZSB8fCAnbWVkaXVtJztcbiAgICBjb25zdCBsb2NhbGUgPSAob3B0aW9ucyBhcyBhbnkpPy5sb2NhbGUgfHwgJ2VuLVVTJztcblxuICAgIGNvbnN0IGNvbmZpZyA9IGRlZXBNZXJnZUNvbHVtbkNvbmZpZyhcbiAgICAgIERFRkFVTFRfQ09MVU1OX0NPTkZJRyxcbiAgICAgIHtcbiAgICAgICAga2V5LFxuICAgICAgICBoZWFkZXI6IGtleS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGtleS5zbGljZSgxKSxcbiAgICAgICAgZGF0YVR5cGU6IENlbGxEYXRhVHlwZS5EQVRFLFxuICAgICAgICBmb3JtYXR0ZXI6IG5ldyBEYXRlRm9ybWF0dGVyKHsgZGF0ZVN0eWxlLCBsb2NhbGUgfSksXG4gICAgICAgIGVkaXRvcjogbmV3IERhdGVFZGl0b3IoKSxcbiAgICAgIH0sXG4gICAgICBvcHRpb25zIHx8IHt9XG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5jb25maWcsXG4gICAgICBjcmVhdGVDZWxsKHJvd0RhdGE6IGFueSwgcm93SW5kZXg/OiBudW1iZXIpOiBDZWxsPERhdGU+IHtcbiAgICAgICAgY29uc3QgdmFsdWVHZXR0ZXIgPSBvcHRpb25zPy52YWx1ZUdldHRlciB8fCAoKGRhdGE6IGFueSkgPT4gZGF0YVtrZXldKTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB2YWx1ZUdldHRlcihyb3dEYXRhKTtcbiAgICAgICAgcmV0dXJuIG5ldyBDZWxsKHRoaXMsIHZhbHVlLCByb3dEYXRhLCByb3dJbmRleCk7XG4gICAgICB9XG4gICAgfSBhcyBDb2x1bW5Db25maWc8RGF0ZT47XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgYm9vbGVhbiBjb2x1bW5cbiAgICovXG4gIHN0YXRpYyBib29sZWFuKGtleTogc3RyaW5nLCBvcHRpb25zPzogUGFydGlhbDxDb2x1bW5Db25maWc8Ym9vbGVhbj4+ICYge1xuICAgIHRydWVWYWx1ZT86IHN0cmluZztcbiAgICBmYWxzZVZhbHVlPzogc3RyaW5nO1xuICB9KTogQ29sdW1uQ29uZmlnPGJvb2xlYW4+IHtcbiAgICBjb25zdCB0cnVlVmFsdWUgPSAob3B0aW9ucyBhcyBhbnkpPy50cnVlVmFsdWUgfHwgJ1llcyc7XG4gICAgY29uc3QgZmFsc2VWYWx1ZSA9IChvcHRpb25zIGFzIGFueSk/LmZhbHNlVmFsdWUgfHwgJ05vJztcblxuICAgIGNvbnN0IGNvbmZpZyA9IGRlZXBNZXJnZUNvbHVtbkNvbmZpZyhcbiAgICAgIERFRkFVTFRfQ09MVU1OX0NPTkZJRyxcbiAgICAgIHtcbiAgICAgICAga2V5LFxuICAgICAgICBoZWFkZXI6IGtleS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGtleS5zbGljZSgxKSxcbiAgICAgICAgZGF0YVR5cGU6IENlbGxEYXRhVHlwZS5CT09MRUFOLFxuICAgICAgICBmb3JtYXR0ZXI6IG5ldyBCb29sZWFuRm9ybWF0dGVyKHsgdHJ1ZVZhbHVlLCBmYWxzZVZhbHVlIH0pLFxuICAgICAgICBlZGl0b3I6IG5ldyBCb29sZWFuRWRpdG9yKCksXG4gICAgICB9LFxuICAgICAgb3B0aW9ucyB8fCB7fVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgY3JlYXRlQ2VsbChyb3dEYXRhOiBhbnksIHJvd0luZGV4PzogbnVtYmVyKTogQ2VsbDxib29sZWFuPiB7XG4gICAgICAgIGNvbnN0IHZhbHVlR2V0dGVyID0gb3B0aW9ucz8udmFsdWVHZXR0ZXIgfHwgKChkYXRhOiBhbnkpID0+IGRhdGFba2V5XSk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdmFsdWVHZXR0ZXIocm93RGF0YSk7XG4gICAgICAgIHJldHVybiBuZXcgQ2VsbCh0aGlzLCB2YWx1ZSwgcm93RGF0YSwgcm93SW5kZXgpO1xuICAgICAgfVxuICAgIH0gYXMgQ29sdW1uQ29uZmlnPGJvb2xlYW4+O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIHNlbGVjdC9kcm9wZG93biBjb2x1bW5cbiAgICovXG4gIHN0YXRpYyBzZWxlY3Q8VCA9IHN0cmluZz4oXG4gICAga2V5OiBzdHJpbmcsXG4gICAgc2VsZWN0T3B0aW9uczogQXJyYXk8eyB2YWx1ZTogVDsgbGFiZWw6IHN0cmluZyB9PixcbiAgICBvcHRpb25zPzogUGFydGlhbDxDb2x1bW5Db25maWc8VD4+XG4gICk6IENvbHVtbkNvbmZpZzxUPiB7XG4gICAgY29uc3QgY29uZmlnID0gZGVlcE1lcmdlQ29sdW1uQ29uZmlnKFxuICAgICAgREVGQVVMVF9DT0xVTU5fQ09ORklHLFxuICAgICAge1xuICAgICAgICBrZXksXG4gICAgICAgIGhlYWRlcjoga2V5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsga2V5LnNsaWNlKDEpLFxuICAgICAgICBlZGl0b3I6IG5ldyBTZWxlY3RFZGl0b3IoeyBvcHRpb25zOiBzZWxlY3RPcHRpb25zIH0pLFxuICAgICAgfSxcbiAgICAgIG9wdGlvbnMgfHwge31cbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIGNyZWF0ZUNlbGwocm93RGF0YTogYW55LCByb3dJbmRleD86IG51bWJlcik6IENlbGw8VD4ge1xuICAgICAgICBjb25zdCB2YWx1ZUdldHRlciA9IG9wdGlvbnM/LnZhbHVlR2V0dGVyIHx8ICgoZGF0YTogYW55KSA9PiBkYXRhW2tleV0pO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHZhbHVlR2V0dGVyKHJvd0RhdGEpO1xuICAgICAgICByZXR1cm4gbmV3IENlbGwodGhpcywgdmFsdWUsIHJvd0RhdGEsIHJvd0luZGV4KTtcbiAgICAgIH1cbiAgICB9IGFzIENvbHVtbkNvbmZpZzxUPjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gZW1haWwgY29sdW1uXG4gICAqL1xuICBzdGF0aWMgZW1haWwoa2V5OiBzdHJpbmcsIG9wdGlvbnM/OiBQYXJ0aWFsPENvbHVtbkNvbmZpZzxzdHJpbmc+Pik6IENvbHVtbkNvbmZpZzxzdHJpbmc+IHtcbiAgICBjb25zdCBjb25maWcgPSBkZWVwTWVyZ2VDb2x1bW5Db25maWcoXG4gICAgICBERUZBVUxUX0NPTFVNTl9DT05GSUcsXG4gICAgICB7XG4gICAgICAgIGtleSxcbiAgICAgICAgaGVhZGVyOiBrZXkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBrZXkuc2xpY2UoMSksXG4gICAgICAgIGRhdGFUeXBlOiBDZWxsRGF0YVR5cGUuU1RSSU5HLFxuICAgICAgICBmb3JtYXR0ZXI6IG5ldyBTdHJpbmdGb3JtYXR0ZXIoKSxcbiAgICAgICAgdmFsaWRhdG9yOiBQYXR0ZXJuVmFsaWRhdG9ycy5lbWFpbCgpLFxuICAgICAgICBlZGl0b3I6IG5ldyBUZXh0RWRpdG9yKHsgcGxhY2Vob2xkZXI6ICdlbWFpbEBleGFtcGxlLmNvbScgfSksXG4gICAgICB9LFxuICAgICAgb3B0aW9ucyB8fCB7fVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgY3JlYXRlQ2VsbChyb3dEYXRhOiBhbnksIHJvd0luZGV4PzogbnVtYmVyKTogQ2VsbDxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgdmFsdWVHZXR0ZXIgPSBvcHRpb25zPy52YWx1ZUdldHRlciB8fCAoKGRhdGE6IGFueSkgPT4gZGF0YVtrZXldKTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB2YWx1ZUdldHRlcihyb3dEYXRhKTtcbiAgICAgICAgcmV0dXJuIG5ldyBDZWxsKHRoaXMsIHZhbHVlLCByb3dEYXRhLCByb3dJbmRleCk7XG4gICAgICB9XG4gICAgfSBhcyBDb2x1bW5Db25maWc8c3RyaW5nPjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSByZWFkb25seSBjb2x1bW5cbiAgICovXG4gIHN0YXRpYyByZWFkb25seTxUID0gYW55PihrZXk6IHN0cmluZywgb3B0aW9ucz86IFBhcnRpYWw8Q29sdW1uQ29uZmlnPFQ+Pik6IENvbHVtbkNvbmZpZzxUPiB7XG4gICAgY29uc3QgY29uZmlnID0gZGVlcE1lcmdlQ29sdW1uQ29uZmlnKFxuICAgICAgREVGQVVMVF9DT0xVTU5fQ09ORklHLFxuICAgICAge1xuICAgICAgICBrZXksXG4gICAgICAgIGhlYWRlcjoga2V5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsga2V5LnNsaWNlKDEpLFxuICAgICAgICBlZGl0YWJsZTogZmFsc2UsXG4gICAgICB9LFxuICAgICAgb3B0aW9ucyB8fCB7fVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgY3JlYXRlQ2VsbChyb3dEYXRhOiBhbnksIHJvd0luZGV4PzogbnVtYmVyKTogQ2VsbDxUPiB7XG4gICAgICAgIGNvbnN0IHZhbHVlR2V0dGVyID0gb3B0aW9ucz8udmFsdWVHZXR0ZXIgfHwgKChkYXRhOiBhbnkpID0+IGRhdGFba2V5XSk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdmFsdWVHZXR0ZXIocm93RGF0YSk7XG4gICAgICAgIHJldHVybiBuZXcgQ2VsbCh0aGlzLCB2YWx1ZSwgcm93RGF0YSwgcm93SW5kZXgpO1xuICAgICAgfVxuICAgIH0gYXMgQ29sdW1uQ29uZmlnPFQ+O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGN1c3RvbSBjb2x1bW4gd2l0aCBmdWxsIGNvbnRyb2xcbiAgICovXG4gIHN0YXRpYyBjdXN0b208VCA9IGFueT4oY29uZmlnOiBQYXJ0aWFsPENvbHVtbkNvbmZpZzxUPj4gJiB7IGtleTogc3RyaW5nIH0pOiBDb2x1bW5Db25maWc8VD4ge1xuICAgIGlmICghY29uZmlnLmtleSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb2x1bW4ga2V5IGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgbWVyZ2VkQ29uZmlnID0gZGVlcE1lcmdlQ29sdW1uQ29uZmlnKFxuICAgICAgREVGQVVMVF9DT0xVTU5fQ09ORklHLFxuICAgICAge1xuICAgICAgICBoZWFkZXI6IGNvbmZpZy5rZXkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBjb25maWcua2V5LnNsaWNlKDEpLFxuICAgICAgfSxcbiAgICAgIGNvbmZpZ1xuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ubWVyZ2VkQ29uZmlnLFxuICAgICAgY3JlYXRlQ2VsbChyb3dEYXRhOiBhbnksIHJvd0luZGV4PzogbnVtYmVyKTogQ2VsbDxUPiB7XG4gICAgICAgIGNvbnN0IHZhbHVlR2V0dGVyID0gY29uZmlnLnZhbHVlR2V0dGVyIHx8ICgoZGF0YTogYW55KSA9PiBkYXRhW2NvbmZpZy5rZXldKTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB2YWx1ZUdldHRlcihyb3dEYXRhKTtcbiAgICAgICAgcmV0dXJuIG5ldyBDZWxsKHRoaXMsIHZhbHVlLCByb3dEYXRhLCByb3dJbmRleCk7XG4gICAgICB9XG4gICAgfSBhcyBDb2x1bW5Db25maWc8VD47XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIG11bHRpcGxlIGNvbHVtbnMgYXQgb25jZSBmcm9tIGEgc2ltcGxlIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHN0YXRpYyBmcm9tS2V5czxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4oXG4gICAga2V5czogQXJyYXk8a2V5b2YgVCB8IHsga2V5OiBrZXlvZiBUOyB0eXBlPzogJ3RleHQnIHwgJ251bWJlcicgfCAnZGF0ZScgfCAnYm9vbGVhbic7IG9wdGlvbnM/OiBhbnkgfT5cbiAgKTogQ29sdW1uQ29uZmlnPGFueT5bXSB7XG4gICAgcmV0dXJuIGtleXMubWFwKGtleUNvbmZpZyA9PiB7XG4gICAgICBpZiAodHlwZW9mIGtleUNvbmZpZyA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGtleUNvbmZpZyA9PT0gJ251bWJlcicgfHwgdHlwZW9mIGtleUNvbmZpZyA9PT0gJ3N5bWJvbCcpIHtcbiAgICAgICAgcmV0dXJuIENvbHVtbkNvbmZpZ0ZhY3RvcnkudGV4dChTdHJpbmcoa2V5Q29uZmlnKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB7IGtleSwgdHlwZSA9ICd0ZXh0Jywgb3B0aW9ucyA9IHt9IH0gPSBrZXlDb25maWc7XG4gICAgICAgIGNvbnN0IGtleVN0ciA9IFN0cmluZyhrZXkpO1xuICAgICAgICBcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgIHJldHVybiBDb2x1bW5Db25maWdGYWN0b3J5Lm51bWJlcihrZXlTdHIsIG9wdGlvbnMpO1xuICAgICAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICAgICAgcmV0dXJuIENvbHVtbkNvbmZpZ0ZhY3RvcnkuZGF0ZShrZXlTdHIsIG9wdGlvbnMpO1xuICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgICAgcmV0dXJuIENvbHVtbkNvbmZpZ0ZhY3RvcnkuYm9vbGVhbihrZXlTdHIsIG9wdGlvbnMpO1xuICAgICAgICAgIGNhc2UgJ3RleHQnOlxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gQ29sdW1uQ29uZmlnRmFjdG9yeS50ZXh0KGtleVN0ciwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIENvbnZlbmllbmNlIGV4cG9ydHMgZm9yIGNvbW1vbiBjb2x1bW4gdHlwZXNcbiAqL1xuZXhwb3J0IGNvbnN0IENvbHVtbnMgPSBDb2x1bW5Db25maWdGYWN0b3J5O1xuXG4iXX0=
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Default autosave configuration
|
|
3
|
-
*/
|
|
4
|
-
export const DEFAULT_AUTOSAVE_CONFIG = {
|
|
5
|
-
enabled: true,
|
|
6
|
-
strategy: 'lazy'
|
|
7
|
-
};
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b3NhdmUtY29uZmlnLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LXRhYmxlL3NyYy9saWIvbW9kZWxzL2F1dG9zYXZlLWNvbmZpZy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0JBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQW1CO0lBQ3JELE9BQU8sRUFBRSxJQUFJO0lBQ2IsUUFBUSxFQUFFLE1BQU07Q0FDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQXV0b3NhdmUgc3RyYXRlZ3kgdHlwZXNcbiAqL1xuZXhwb3J0IHR5cGUgQXV0b3NhdmVTdHJhdGVneSA9ICdsYXp5JyB8ICdlYWdlcic7XG5cbi8qKlxuICogQXV0b3NhdmUgY29uZmlndXJhdGlvbiBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRvc2F2ZUNvbmZpZyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIGF1dG9zYXZlIGlzIGVuYWJsZWRcbiAgICovXG4gIGVuYWJsZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEF1dG9zYXZlIHN0cmF0ZWd5OlxuICAgKiAtICdsYXp5JzogU2F2ZXMgYWZ0ZXIgdXNlciBzdG9wcyBtYWtpbmcgY2hhbmdlcyAoMnMgZGVib3VuY2UpXG4gICAqIC0gJ2VhZ2VyJzogU2F2ZXMgb24gZXZlcnkgY2hhbmdlICgxMDBtcyBkZWJvdW5jZSlcbiAgICovXG4gIHN0cmF0ZWd5OiBBdXRvc2F2ZVN0cmF0ZWd5O1xufVxuXG4vKipcbiAqIERlZmF1bHQgYXV0b3NhdmUgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9BVVRPU0FWRV9DT05GSUc6IEF1dG9zYXZlQ29uZmlnID0ge1xuICBlbmFibGVkOiB0cnVlLFxuICBzdHJhdGVneTogJ2xhenknXG59O1xuXG4iXX0=
|
|
@@ -1,253 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Base column configuration class implementing Template Method pattern
|
|
3
|
-
*/
|
|
4
|
-
import { DEFAULT_COLUMN_CONFIG } from './column-config.interface';
|
|
5
|
-
import { Cell } from '../renderer/models/cell.class';
|
|
6
|
-
import { deepMergeColumnConfig } from './column-config.utils';
|
|
7
|
-
/**
|
|
8
|
-
* Abstract base class for column configurations
|
|
9
|
-
* Implements Template Method pattern for cell operations
|
|
10
|
-
*/
|
|
11
|
-
export class BaseColumnConfig {
|
|
12
|
-
constructor(config) {
|
|
13
|
-
const merged = deepMergeColumnConfig(DEFAULT_COLUMN_CONFIG, config);
|
|
14
|
-
this.key = merged.key;
|
|
15
|
-
this.header = merged.header;
|
|
16
|
-
this.dataType = merged.dataType;
|
|
17
|
-
this.formatter = merged.formatter;
|
|
18
|
-
this.validator = merged.validator;
|
|
19
|
-
this.editor = merged.editor;
|
|
20
|
-
this.parser = merged.parser;
|
|
21
|
-
this.editable = merged.editable;
|
|
22
|
-
this.editMode = merged.editMode;
|
|
23
|
-
this.sortable = merged.sortable;
|
|
24
|
-
this.filterable = merged.filterable;
|
|
25
|
-
this.resizable = merged.resizable;
|
|
26
|
-
this.width = merged.width;
|
|
27
|
-
this.minWidth = merged.minWidth;
|
|
28
|
-
this.maxWidth = merged.maxWidth;
|
|
29
|
-
this.alignment = merged.alignment;
|
|
30
|
-
this.verticalAlignment = merged.verticalAlignment;
|
|
31
|
-
this.truncate = merged.truncate;
|
|
32
|
-
this.tooltip = merged.tooltip;
|
|
33
|
-
this.className = merged.className;
|
|
34
|
-
this.style = merged.style;
|
|
35
|
-
this.cellTemplate = merged.cellTemplate;
|
|
36
|
-
this.headerTemplate = merged.headerTemplate;
|
|
37
|
-
this.visible = merged.visible;
|
|
38
|
-
this.pinned = merged.pinned;
|
|
39
|
-
this.sortPriority = merged.sortPriority;
|
|
40
|
-
this.comparator = merged.comparator;
|
|
41
|
-
this.valueGetter = merged.valueGetter;
|
|
42
|
-
this.valueSetter = merged.valueSetter;
|
|
43
|
-
this.hooks = merged.hooks;
|
|
44
|
-
this.showLoadingIndicator = merged.showLoadingIndicator;
|
|
45
|
-
this.metadata = merged.metadata;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Factory method to create a cell (Factory Pattern)
|
|
49
|
-
* Can be overridden by subclasses for custom cell creation
|
|
50
|
-
*/
|
|
51
|
-
createCell(rowData, rowIndex) {
|
|
52
|
-
const value = this.extractValue(rowData);
|
|
53
|
-
const cell = new Cell(this, value, rowData, rowIndex);
|
|
54
|
-
// Apply any post-creation hooks
|
|
55
|
-
this.afterCellCreated(cell, rowData, rowIndex);
|
|
56
|
-
return cell;
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Template method for processing cell edit workflow
|
|
60
|
-
* Defines the algorithm steps that subclasses can customize
|
|
61
|
-
*/
|
|
62
|
-
processEdit(cell, newValue) {
|
|
63
|
-
// Step 1: Before edit hook
|
|
64
|
-
if (!this.beforeEdit(cell, newValue)) {
|
|
65
|
-
return false;
|
|
66
|
-
}
|
|
67
|
-
// Step 2: Parse the value
|
|
68
|
-
const parsedValue = this.parseValue(newValue);
|
|
69
|
-
if (parsedValue === undefined) {
|
|
70
|
-
return false;
|
|
71
|
-
}
|
|
72
|
-
// Step 3: Validate the parsed value
|
|
73
|
-
const validationResult = this.validateValue(parsedValue, cell.getRowData());
|
|
74
|
-
if (!validationResult.valid) {
|
|
75
|
-
this.onValidationFailed(cell, validationResult);
|
|
76
|
-
return false;
|
|
77
|
-
}
|
|
78
|
-
// Step 4: Apply the value
|
|
79
|
-
const success = cell.saveEdit(parsedValue);
|
|
80
|
-
if (success) {
|
|
81
|
-
// Step 5: After edit hook
|
|
82
|
-
this.afterEdit(cell, parsedValue);
|
|
83
|
-
// Step 6: Update row data if valueSetter is provided
|
|
84
|
-
if (this.valueSetter) {
|
|
85
|
-
this.valueSetter(cell.getRowData(), parsedValue);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
return success;
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Hook: Before edit validation (can be overridden)
|
|
92
|
-
*/
|
|
93
|
-
beforeEdit(cell, newValue) {
|
|
94
|
-
if (this.hooks?.beforeEdit) {
|
|
95
|
-
this.hooks.beforeEdit({
|
|
96
|
-
value: newValue,
|
|
97
|
-
previousValue: cell.getValue(),
|
|
98
|
-
rowData: cell.getRowData(),
|
|
99
|
-
columnKey: this.key,
|
|
100
|
-
rowIndex: cell.getRowIndex()
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
return true;
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Hook: After edit completion (can be overridden)
|
|
107
|
-
*/
|
|
108
|
-
afterEdit(cell, newValue) {
|
|
109
|
-
if (this.hooks?.afterEdit) {
|
|
110
|
-
this.hooks.afterEdit({
|
|
111
|
-
value: newValue,
|
|
112
|
-
previousValue: cell.getValue(),
|
|
113
|
-
rowData: cell.getRowData(),
|
|
114
|
-
columnKey: this.key,
|
|
115
|
-
rowIndex: cell.getRowIndex()
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Hook: After cell is created (can be overridden)
|
|
121
|
-
*/
|
|
122
|
-
afterCellCreated(cell, rowData, rowIndex) {
|
|
123
|
-
// Subclasses can override to perform post-creation setup
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Hook: When validation fails (can be overridden)
|
|
127
|
-
*/
|
|
128
|
-
onValidationFailed(cell, validationResult) {
|
|
129
|
-
if (this.hooks?.onValidationError) {
|
|
130
|
-
this.hooks.onValidationError({
|
|
131
|
-
value: cell.getValue(),
|
|
132
|
-
rowData: cell.getRowData(),
|
|
133
|
-
columnKey: this.key,
|
|
134
|
-
rowIndex: cell.getRowIndex()
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Extract value from row data (can be overridden)
|
|
140
|
-
*/
|
|
141
|
-
extractValue(rowData) {
|
|
142
|
-
if (this.valueGetter) {
|
|
143
|
-
return this.valueGetter(rowData);
|
|
144
|
-
}
|
|
145
|
-
return rowData[this.key];
|
|
146
|
-
}
|
|
147
|
-
/**
|
|
148
|
-
* Parse value using parser if available (can be overridden)
|
|
149
|
-
*/
|
|
150
|
-
parseValue(value) {
|
|
151
|
-
if (this.parser) {
|
|
152
|
-
try {
|
|
153
|
-
return this.parser.parse(value);
|
|
154
|
-
}
|
|
155
|
-
catch (error) {
|
|
156
|
-
console.error(`Failed to parse value for column ${this.key}:`, error);
|
|
157
|
-
return undefined;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
return value;
|
|
161
|
-
}
|
|
162
|
-
/**
|
|
163
|
-
* Validate value using validator if available (can be overridden)
|
|
164
|
-
*/
|
|
165
|
-
validateValue(value, rowData) {
|
|
166
|
-
if (this.validator) {
|
|
167
|
-
if (this.validator.validateWithContext) {
|
|
168
|
-
return this.validator.validateWithContext(value, rowData, this.key);
|
|
169
|
-
}
|
|
170
|
-
return this.validator.validate(value);
|
|
171
|
-
}
|
|
172
|
-
return { valid: true };
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Format value for display (can be overridden)
|
|
176
|
-
*/
|
|
177
|
-
formatValue(value, rowData) {
|
|
178
|
-
if (this.formatter) {
|
|
179
|
-
if (this.formatter.formatWithContext && rowData) {
|
|
180
|
-
return this.formatter.formatWithContext(value, rowData, this.key);
|
|
181
|
-
}
|
|
182
|
-
return this.formatter.format(value);
|
|
183
|
-
}
|
|
184
|
-
return String(value ?? '');
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Get cell tooltip (can be overridden)
|
|
188
|
-
*/
|
|
189
|
-
getTooltip(value, rowData) {
|
|
190
|
-
if (!this.tooltip) {
|
|
191
|
-
return undefined;
|
|
192
|
-
}
|
|
193
|
-
if (typeof this.tooltip === 'function') {
|
|
194
|
-
return this.tooltip(value, rowData);
|
|
195
|
-
}
|
|
196
|
-
return this.tooltip;
|
|
197
|
-
}
|
|
198
|
-
/**
|
|
199
|
-
* Get cell class names (can be overridden)
|
|
200
|
-
*/
|
|
201
|
-
getClassName(value, rowData) {
|
|
202
|
-
if (!this.className) {
|
|
203
|
-
return undefined;
|
|
204
|
-
}
|
|
205
|
-
if (typeof this.className === 'function') {
|
|
206
|
-
return this.className(value, rowData);
|
|
207
|
-
}
|
|
208
|
-
return this.className;
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Get cell styles (can be overridden)
|
|
212
|
-
*/
|
|
213
|
-
getStyle(value, rowData) {
|
|
214
|
-
if (!this.style) {
|
|
215
|
-
return undefined;
|
|
216
|
-
}
|
|
217
|
-
if (typeof this.style === 'function') {
|
|
218
|
-
return this.style(value, rowData);
|
|
219
|
-
}
|
|
220
|
-
return this.style;
|
|
221
|
-
}
|
|
222
|
-
/**
|
|
223
|
-
* Compare two values for sorting (can be overridden)
|
|
224
|
-
*/
|
|
225
|
-
compare(a, b) {
|
|
226
|
-
if (this.comparator) {
|
|
227
|
-
return this.comparator(a, b);
|
|
228
|
-
}
|
|
229
|
-
// Default comparison
|
|
230
|
-
if (a === b)
|
|
231
|
-
return 0;
|
|
232
|
-
if (a == null)
|
|
233
|
-
return -1;
|
|
234
|
-
if (b == null)
|
|
235
|
-
return 1;
|
|
236
|
-
if (typeof a === 'number' && typeof b === 'number') {
|
|
237
|
-
return a - b;
|
|
238
|
-
}
|
|
239
|
-
if (a instanceof Date && b instanceof Date) {
|
|
240
|
-
return a.getTime() - b.getTime();
|
|
241
|
-
}
|
|
242
|
-
return String(a).localeCompare(String(b));
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
/**
|
|
246
|
-
* Concrete implementation for simple use cases
|
|
247
|
-
*/
|
|
248
|
-
export class SimpleColumnConfig extends BaseColumnConfig {
|
|
249
|
-
constructor(config) {
|
|
250
|
-
super(config);
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb2x1bW4tY29uZmlnLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtdGFibGUvc3JjL2xpYi9tb2RlbHMvYmFzZS1jb2x1bW4tY29uZmlnLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUlyRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU5RDs7O0dBR0c7QUFDSCxNQUFNLE9BQWdCLGdCQUFnQjtJQWtDcEMsWUFBWSxNQUFrRDtRQUM1RCxNQUFNLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQW9CLENBQUM7UUFFdkYsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUM1QixJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDNUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFD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QUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLEVBQUU7WUFDMUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ2xDO1FBRUQsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7Q0FDRjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGtCQUE0QixTQUFRLGdCQUFtQjtJQUNsRSxZQUFZLE1BQWtEO1FBQzVELEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEJhc2UgY29sdW1uIGNvbmZpZ3VyYXRpb24gY2xhc3MgaW1wbGVtZW50aW5nIFRlbXBsYXRlIE1ldGhvZCBwYXR0ZXJuXG4gKi9cblxuaW1wb3J0IHsgQ29sdW1uQ29uZmlnLCBERUZBVUxUX0NPTFVNTl9DT05GSUcgfSBmcm9tICcuL2NvbHVtbi1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IENlbGwgfSBmcm9tICcuLi9yZW5kZXJlci9tb2RlbHMvY2VsbC5jbGFzcyc7XG5pbXBvcnQgeyBDZWxsRm9ybWF0dGVyLCBDZWxsVmFsaWRhdG9yLCBDZWxsRWRpdG9yLCBDZWxsUGFyc2VyLCBDZWxsTGlmZWN5Y2xlSG9va3MgfSBmcm9tICcuL2NlbGwtc3RyYXRlZ2llcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ2VsbEFsaWdubWVudCwgQ2VsbFZlcnRpY2FsQWxpZ25tZW50LCBFZGl0TW9kZSwgQ2VsbERhdGFUeXBlLCBWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnLi9jZWxsLXR5cGVzJztcbmltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkZWVwTWVyZ2VDb2x1bW5Db25maWcgfSBmcm9tICcuL2NvbHVtbi1jb25maWcudXRpbHMnO1xuXG4vKipcbiAqIEFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGNvbHVtbiBjb25maWd1cmF0aW9uc1xuICogSW1wbGVtZW50cyBUZW1wbGF0ZSBNZXRob2QgcGF0dGVybiBmb3IgY2VsbCBvcGVyYXRpb25zXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQ29sdW1uQ29uZmlnPFQgPSBhbnk+IGltcGxlbWVudHMgQ29sdW1uQ29uZmlnPFQ+IHtcbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGhlYWRlcj86IHN0cmluZztcbiAgcmVhZG9ubHkgZGF0YVR5cGU/OiBDZWxsRGF0YVR5cGU7XG4gIHJlYWRvbmx5IGZvcm1hdHRlcj86IENlbGxGb3JtYXR0ZXI8VD47XG4gIHJlYWRvbmx5IHZhbGlkYXRvcj86IENlbGxWYWxpZGF0b3I8VD47XG4gIHJlYWRvbmx5IGVkaXRvcj86IENlbGxFZGl0b3I8VD47XG4gIHJlYWRvbmx5IHBhcnNlcj86IENlbGxQYXJzZXI8VD47XG4gIHJlYWRvbmx5IGVkaXRhYmxlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgZWRpdE1vZGU/OiBFZGl0TW9kZTtcbiAgcmVhZG9ubHkgc29ydGFibGU/OiBib29sZWFuO1xuICByZWFkb25seSBmaWx0ZXJhYmxlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcmVzaXphYmxlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgd2lkdGg/OiBudW1iZXIgfCBzdHJpbmc7XG4gIHJlYWRvbmx5IG1pbldpZHRoPzogbnVtYmVyO1xuICByZWFkb25seSBtYXhXaWR0aD86IG51bWJlcjtcbiAgcmVhZG9ubHkgYWxpZ25tZW50PzogQ2VsbEFsaWdubWVudDtcbiAgcmVhZG9ubHkgdmVydGljYWxBbGlnbm1lbnQ/OiBDZWxsVmVydGljYWxBbGlnbm1lbnQ7XG4gIHJlYWRvbmx5IHRydW5jYXRlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdG9vbHRpcD86IHN0cmluZyB8ICgodmFsdWU6IFQsIHJvd0RhdGE6IGFueSkgPT4gc3RyaW5nKTtcbiAgcmVhZG9ubHkgY2xhc3NOYW1lPzogc3RyaW5nIHwgc3RyaW5nW10gfCAoKHZhbHVlOiBULCByb3dEYXRhOiBhbnkpID0+IHN0cmluZyB8IHN0cmluZ1tdKTtcbiAgcmVhZG9ubHkgc3R5bGU/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgKCh2YWx1ZTogVCwgcm93RGF0YTogYW55KSA9PiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTtcbiAgcmVhZG9ubHkgY2VsbFRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgcmVhZG9ubHkgaGVhZGVyVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICByZWFkb25seSB2aXNpYmxlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcGlubmVkPzogJ2xlZnQnIHwgJ3JpZ2h0JyB8IGZhbHNlO1xuICByZWFkb25seSBzb3J0UHJpb3JpdHk/OiBudW1iZXI7XG4gIHJlYWRvbmx5IGNvbXBhcmF0b3I/OiAoYTogVCwgYjogVCkgPT4gbnVtYmVyO1xuICByZWFkb25seSB2YWx1ZUdldHRlcj86IChyb3dEYXRhOiBhbnkpID0+IFQ7XG4gIHJlYWRvbmx5IHZhbHVlU2V0dGVyPzogKHJvd0RhdGE6IGFueSwgdmFsdWU6IFQpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IGhvb2tzPzogQ2VsbExpZmVjeWNsZUhvb2tzPFQ+O1xuICByZWFkb25seSBzaG93TG9hZGluZ0luZGljYXRvcj86IGJvb2xlYW47XG4gIHJlYWRvbmx5IG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgYW55PjtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IFBhcnRpYWw8Q29sdW1uQ29uZmlnPFQ+PiAmIHsga2V5OiBzdHJpbmcgfSkge1xuICAgIGNvbnN0IG1lcmdlZCA9IGRlZXBNZXJnZUNvbHVtbkNvbmZpZyhERUZBVUxUX0NPTFVNTl9DT05GSUcsIGNvbmZpZykgYXMgQ29sdW1uQ29uZmlnPFQ+O1xuICAgIFxuICAgIHRoaXMua2V5ID0gbWVyZ2VkLmtleTtcbiAgICB0aGlzLmhlYWRlciA9IG1lcmdlZC5oZWFkZXI7XG4gICAgdGhpcy5kYXRhVHlwZSA9IG1lcmdlZC5kYXRhVHlwZTtcbiAgICB0aGlzLmZvcm1hdHRlciA9IG1lcmdlZC5mb3JtYXR0ZXI7XG4gICAgdGhpcy52YWxpZGF0b3IgPSBtZXJnZWQudmFsaWRhdG9yO1xuICAgIHRoaXMuZWRpdG9yID0gbWVyZ2VkLmVkaXRvcjtcbiAgICB0aGlzLnBhcnNlciA9IG1lcmdlZC5wYXJzZXI7XG4gICAgdGhpcy5lZGl0YWJsZSA9IG1lcmdlZC5lZGl0YWJsZTtcbiAgICB0aGlzLmVkaXRNb2RlID0gbWVyZ2VkLmVkaXRNb2RlO1xuICAgIHRoaXMuc29ydGFibGUgPSBtZXJnZWQuc29ydGFibGU7XG4gICAgdGhpcy5maWx0ZXJhYmxlID0gbWVyZ2VkLmZpbHRlcmFibGU7XG4gICAgdGhpcy5yZXNpemFibGUgPSBtZXJnZWQucmVzaXphYmxlO1xuICAgIHRoaXMud2lkdGggPSBtZXJnZWQud2lkdGg7XG4gICAgdGhpcy5taW5XaWR0aCA9IG1lcmdlZC5taW5XaWR0aDtcbiAgICB0aGlzLm1heFdpZHRoID0gbWVyZ2VkLm1heFdpZHRoO1xuICAgIHRoaXMuYWxpZ25tZW50ID0gbWVyZ2VkLmFsaWdubWVudDtcbiAgICB0aGlzLnZlcnRpY2FsQWxpZ25tZW50ID0gbWVyZ2VkLnZlcnRpY2FsQWxpZ25tZW50O1xuICAgIHRoaXMudHJ1bmNhdGUgPSBtZXJnZWQudHJ1bmNhdGU7XG4gICAgdGhpcy50b29sdGlwID0gbWVyZ2VkLnRvb2x0aXA7XG4gICAgdGhpcy5jbGFzc05hbWUgPSBtZXJnZWQuY2xhc3NOYW1lO1xuICAgIHRoaXMuc3R5bGUgPSBtZXJnZWQuc3R5bGU7XG4gICAgdGhpcy5jZWxsVGVtcGxhdGUgPSBtZXJnZWQuY2VsbFRlbXBsYXRlO1xuICAgIHRoaXMuaGVhZGVyVGVtcGxhdGUgPSBtZXJnZWQuaGVhZGVyVGVtcGxhdGU7XG4gICAgdGhpcy52aXNpYmxlID0gbWVyZ2VkLnZpc2libGU7XG4gICAgdGhpcy5waW5uZWQgPSBtZXJnZWQucGlubmVkO1xuICAgIHRoaXMuc29ydFByaW9yaXR5ID0gbWVyZ2VkLnNvcnRQcmlvcml0eTtcbiAgICB0aGlzLmNvbXBhcmF0b3IgPSBtZXJnZWQuY29tcGFyYXRvcjtcbiAgICB0aGlzLnZhbHVlR2V0dGVyID0gbWVyZ2VkLnZhbHVlR2V0dGVyO1xuICAgIHRoaXMudmFsdWVTZXR0ZXIgPSBtZXJnZWQudmFsdWVTZXR0ZXI7XG4gICAgdGhpcy5ob29rcyA9IG1lcmdlZC5ob29rcztcbiAgICB0aGlzLnNob3dMb2FkaW5nSW5kaWNhdG9yID0gbWVyZ2VkLnNob3dMb2FkaW5nSW5kaWNhdG9yO1xuICAgIHRoaXMubWV0YWRhdGEgPSBtZXJnZWQubWV0YWRhdGE7XG4gIH1cblxuICAvKipcbiAgICogRmFjdG9yeSBtZXRob2QgdG8gY3JlYXRlIGEgY2VsbCAoRmFjdG9yeSBQYXR0ZXJuKVxuICAgKiBDYW4gYmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzIGZvciBjdXN0b20gY2VsbCBjcmVhdGlvblxuICAgKi9cbiAgY3JlYXRlQ2VsbChyb3dEYXRhOiBhbnksIHJvd0luZGV4PzogbnVtYmVyKTogQ2VsbDxUPiB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmV4dHJhY3RWYWx1ZShyb3dEYXRhKTtcbiAgICBjb25zdCBjZWxsID0gbmV3IENlbGw8VD4odGhpcywgdmFsdWUsIHJvd0RhdGEsIHJvd0luZGV4KTtcbiAgICBcbiAgICAvLyBBcHBseSBhbnkgcG9zdC1jcmVhdGlvbiBob29rc1xuICAgIHRoaXMuYWZ0ZXJDZWxsQ3JlYXRlZChjZWxsLCByb3dEYXRhLCByb3dJbmRleCk7XG4gICAgXG4gICAgcmV0dXJuIGNlbGw7XG4gIH1cblxuICAvKipcbiAgICogVGVtcGxhdGUgbWV0aG9kIGZvciBwcm9jZXNzaW5nIGNlbGwgZWRpdCB3b3JrZmxvd1xuICAgKiBEZWZpbmVzIHRoZSBhbGdvcml0aG0gc3RlcHMgdGhhdCBzdWJjbGFzc2VzIGNhbiBjdXN0b21pemVcbiAgICovXG4gIHByb2Nlc3NFZGl0KGNlbGw6IENlbGw8VD4sIG5ld1ZhbHVlOiBUKTogYm9vbGVhbiB7XG4gICAgLy8gU3RlcCAxOiBCZWZvcmUgZWRpdCBob29rXG4gICAgaWYgKCF0aGlzLmJlZm9yZUVkaXQoY2VsbCwgbmV3VmFsdWUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gU3RlcCAyOiBQYXJzZSB0aGUgdmFsdWVcbiAgICBjb25zdCBwYXJzZWRWYWx1ZSA9IHRoaXMucGFyc2VWYWx1ZShuZXdWYWx1ZSk7XG4gICAgaWYgKHBhcnNlZFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBTdGVwIDM6IFZhbGlkYXRlIHRoZSBwYXJzZWQgdmFsdWVcbiAgICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gdGhpcy52YWxpZGF0ZVZhbHVlKHBhcnNlZFZhbHVlLCBjZWxsLmdldFJvd0RhdGEoKSk7XG4gICAgaWYgKCF2YWxpZGF0aW9uUmVzdWx0LnZhbGlkKSB7XG4gICAgICB0aGlzLm9uVmFsaWRhdGlvbkZhaWxlZChjZWxsLCB2YWxpZGF0aW9uUmVzdWx0KTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBTdGVwIDQ6IEFwcGx5IHRoZSB2YWx1ZVxuICAgIGNvbnN0IHN1Y2Nlc3MgPSBjZWxsLnNhdmVFZGl0KHBhcnNlZFZhbHVlKTtcbiAgICBcbiAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgLy8gU3RlcCA1OiBBZnRlciBlZGl0IGhvb2tcbiAgICAgIHRoaXMuYWZ0ZXJFZGl0KGNlbGwsIHBhcnNlZFZhbHVlKTtcbiAgICAgIFxuICAgICAgLy8gU3RlcCA2OiBVcGRhdGUgcm93IGRhdGEgaWYgdmFsdWVTZXR0ZXIgaXMgcHJvdmlkZWRcbiAgICAgIGlmICh0aGlzLnZhbHVlU2V0dGVyKSB7XG4gICAgICAgIHRoaXMudmFsdWVTZXR0ZXIoY2VsbC5nZXRSb3dEYXRhKCksIHBhcnNlZFZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3VjY2VzcztcbiAgfVxuXG4gIC8qKlxuICAgKiBIb29rOiBCZWZvcmUgZWRpdCB2YWxpZGF0aW9uIChjYW4gYmUgb3ZlcnJpZGRlbilcbiAgICovXG4gIHByb3RlY3RlZCBiZWZvcmVFZGl0KGNlbGw6IENlbGw8VD4sIG5ld1ZhbHVlOiBUKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuaG9va3M/LmJlZm9yZUVkaXQpIHtcbiAgICAgIHRoaXMuaG9va3MuYmVmb3JlRWRpdCh7XG4gICAgICAgIHZhbHVlOiBuZXdWYWx1ZSxcbiAgICAgICAgcHJldmlvdXNWYWx1ZTogY2VsbC5nZXRWYWx1ZSgpLFxuICAgICAgICByb3dEYXRhOiBjZWxsLmdldFJvd0RhdGEoKSxcbiAgICAgICAgY29sdW1uS2V5OiB0aGlzLmtleSxcbiAgICAgICAgcm93SW5kZXg6IGNlbGwuZ2V0Um93SW5kZXgoKVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEhvb2s6IEFmdGVyIGVkaXQgY29tcGxldGlvbiAoY2FuIGJlIG92ZXJyaWRkZW4pXG4gICAqL1xuICBwcm90ZWN0ZWQgYWZ0ZXJFZGl0KGNlbGw6IENlbGw8VD4sIG5ld1ZhbHVlOiBUKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaG9va3M/LmFmdGVyRWRpdCkge1xuICAgICAgdGhpcy5ob29rcy5hZnRlckVkaXQoe1xuICAgICAgICB2YWx1ZTogbmV3VmFsdWUsXG4gICAgICAgIHByZXZpb3VzVmFsdWU6IGNlbGwuZ2V0VmFsdWUoKSxcbiAgICAgICAgcm93RGF0YTogY2VsbC5nZXRSb3dEYXRhKCksXG4gICAgICAgIGNvbHVtbktleTogdGhpcy5rZXksXG4gICAgICAgIHJvd0luZGV4OiBjZWxsLmdldFJvd0luZGV4KClcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIb29rOiBBZnRlciBjZWxsIGlzIGNyZWF0ZWQgKGNhbiBiZSBvdmVycmlkZGVuKVxuICAgKi9cbiAgcHJvdGVjdGVkIGFmdGVyQ2VsbENyZWF0ZWQoY2VsbDogQ2VsbDxUPiwgcm93RGF0YTogYW55LCByb3dJbmRleD86IG51bWJlcik6IHZvaWQge1xuICAgIC8vIFN1YmNsYXNzZXMgY2FuIG92ZXJyaWRlIHRvIHBlcmZvcm0gcG9zdC1jcmVhdGlvbiBzZXR1cFxuICB9XG5cbiAgLyoqXG4gICAqIEhvb2s6IFdoZW4gdmFsaWRhdGlvbiBmYWlscyAoY2FuIGJlIG92ZXJyaWRkZW4pXG4gICAqL1xuICBwcm90ZWN0ZWQgb25WYWxpZGF0aW9uRmFpbGVkKGNlbGw6IENlbGw8VD4sIHZhbGlkYXRpb25SZXN1bHQ6IFZhbGlkYXRpb25SZXN1bHQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ob29rcz8ub25WYWxpZGF0aW9uRXJyb3IpIHtcbiAgICAgIHRoaXMuaG9va3Mub25WYWxpZGF0aW9uRXJyb3Ioe1xuICAgICAgICB2YWx1ZTogY2VsbC5nZXRWYWx1ZSgpLFxuICAgICAgICByb3dEYXRhOiBjZWxsLmdldFJvd0RhdGEoKSxcbiAgICAgICAgY29sdW1uS2V5OiB0aGlzLmtleSxcbiAgICAgICAgcm93SW5kZXg6IGNlbGwuZ2V0Um93SW5kZXgoKVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhY3QgdmFsdWUgZnJvbSByb3cgZGF0YSAoY2FuIGJlIG92ZXJyaWRkZW4pXG4gICAqL1xuICBwcm90ZWN0ZWQgZXh0cmFjdFZhbHVlKHJvd0RhdGE6IGFueSk6IFQge1xuICAgIGlmICh0aGlzLnZhbHVlR2V0dGVyKSB7XG4gICAgICByZXR1cm4gdGhpcy52YWx1ZUdldHRlcihyb3dEYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIHJvd0RhdGFbdGhpcy5rZXldO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlIHZhbHVlIHVzaW5nIHBhcnNlciBpZiBhdmFpbGFibGUgKGNhbiBiZSBvdmVycmlkZGVuKVxuICAgKi9cbiAgcHJvdGVjdGVkIHBhcnNlVmFsdWUodmFsdWU6IGFueSk6IFQgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLnBhcnNlcikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VyLnBhcnNlKHZhbHVlKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBwYXJzZSB2YWx1ZSBmb3IgY29sdW1uICR7dGhpcy5rZXl9OmAsIGVycm9yKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHZhbHVlIHVzaW5nIHZhbGlkYXRvciBpZiBhdmFpbGFibGUgKGNhbiBiZSBvdmVycmlkZGVuKVxuICAgKi9cbiAgcHJvdGVjdGVkIHZhbGlkYXRlVmFsdWUodmFsdWU6IFQsIHJvd0RhdGE6IGFueSk6IFZhbGlkYXRpb25SZXN1bHQge1xuICAgIGlmICh0aGlzLnZhbGlkYXRvcikge1xuICAgICAgaWYgKHRoaXMudmFsaWRhdG9yLnZhbGlkYXRlV2l0aENvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdG9yLnZhbGlkYXRlV2l0aENvbnRleHQodmFsdWUsIHJvd0RhdGEsIHRoaXMua2V5KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRvci52YWxpZGF0ZSh2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB7IHZhbGlkOiB0cnVlIH07XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0IHZhbHVlIGZvciBkaXNwbGF5IChjYW4gYmUgb3ZlcnJpZGRlbilcbiAgICovXG4gIGZvcm1hdFZhbHVlKHZhbHVlOiBULCByb3dEYXRhPzogYW55KTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5mb3JtYXR0ZXIpIHtcbiAgICAgIGlmICh0aGlzLmZvcm1hdHRlci5mb3JtYXRXaXRoQ29udGV4dCAmJiByb3dEYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdHRlci5mb3JtYXRXaXRoQ29udGV4dCh2YWx1ZSwgcm93RGF0YSwgdGhpcy5rZXkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0dGVyLmZvcm1hdCh2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcodmFsdWUgPz8gJycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjZWxsIHRvb2x0aXAgKGNhbiBiZSBvdmVycmlkZGVuKVxuICAgKi9cbiAgZ2V0VG9vbHRpcCh2YWx1ZTogVCwgcm93RGF0YTogYW55KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXRoaXMudG9vbHRpcCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgXG4gICAgaWYgKHR5cGVvZiB0aGlzLnRvb2x0aXAgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB0aGlzLnRvb2x0aXAodmFsdWUsIHJvd0RhdGEpO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gdGhpcy50b29sdGlwO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjZWxsIGNsYXNzIG5hbWVzIChjYW4gYmUgb3ZlcnJpZGRlbilcbiAgICovXG4gIGdldENsYXNzTmFtZSh2YWx1ZTogVCwgcm93RGF0YTogYW55KTogc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5jbGFzc05hbWUpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIFxuICAgIGlmICh0eXBlb2YgdGhpcy5jbGFzc05hbWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB0aGlzLmNsYXNzTmFtZSh2YWx1ZSwgcm93RGF0YSk7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiB0aGlzLmNsYXNzTmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY2VsbCBzdHlsZXMgKGNhbiBiZSBvdmVycmlkZGVuKVxuICAgKi9cbiAgZ2V0U3R5bGUodmFsdWU6IFQsIHJvd0RhdGE6IGFueSk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5zdHlsZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgXG4gICAgaWYgKHR5cGVvZiB0aGlzLnN0eWxlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdHlsZSh2YWx1ZSwgcm93RGF0YSk7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiB0aGlzLnN0eWxlO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXBhcmUgdHdvIHZhbHVlcyBmb3Igc29ydGluZyAoY2FuIGJlIG92ZXJyaWRkZW4pXG4gICAqL1xuICBjb21wYXJlKGE6IFQsIGI6IFQpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLmNvbXBhcmF0b3IpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbXBhcmF0b3IoYSwgYik7XG4gICAgfVxuICAgIFxuICAgIC8vIERlZmF1bHQgY29tcGFyaXNvblxuICAgIGlmIChhID09PSBiKSByZXR1cm4gMDtcbiAgICBpZiAoYSA9PSBudWxsKSByZXR1cm4gLTE7XG4gICAgaWYgKGIgPT0gbnVsbCkgcmV0dXJuIDE7XG4gICAgXG4gICAgaWYgKHR5cGVvZiBhID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgYiA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiBhIC0gYjtcbiAgICB9XG4gICAgXG4gICAgaWYgKGEgaW5zdGFuY2VvZiBEYXRlICYmIGIgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICByZXR1cm4gYS5nZXRUaW1lKCkgLSBiLmdldFRpbWUoKTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIFN0cmluZyhhKS5sb2NhbGVDb21wYXJlKFN0cmluZyhiKSk7XG4gIH1cbn1cblxuLyoqXG4gKiBDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBmb3Igc2ltcGxlIHVzZSBjYXNlc1xuICovXG5leHBvcnQgY2xhc3MgU2ltcGxlQ29sdW1uQ29uZmlnPFQgPSBhbnk+IGV4dGVuZHMgQmFzZUNvbHVtbkNvbmZpZzxUPiB7XG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogUGFydGlhbDxDb2x1bW5Db25maWc8VD4+ICYgeyBrZXk6IHN0cmluZyB9KSB7XG4gICAgc3VwZXIoY29uZmlnKTtcbiAgfVxufVxuXG4iXX0=
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Strategy interfaces for cell behavior
|
|
3
|
-
* These interfaces define pluggable strategies for formatting, validation, and editing
|
|
4
|
-
*/
|
|
5
|
-
export {};
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC1zdHJhdGVnaWVzLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LXRhYmxlL3NyYy9saWIvbW9kZWxzL2NlbGwtc3RyYXRlZ2llcy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTdHJhdGVneSBpbnRlcmZhY2VzIGZvciBjZWxsIGJlaGF2aW9yXG4gKiBUaGVzZSBpbnRlcmZhY2VzIGRlZmluZSBwbHVnZ2FibGUgc3RyYXRlZ2llcyBmb3IgZm9ybWF0dGluZywgdmFsaWRhdGlvbiwgYW5kIGVkaXRpbmdcbiAqL1xuXG5pbXBvcnQgeyBWYWxpZGF0aW9uUmVzdWx0LCBDZWxsRXZlbnQgfSBmcm9tICcuL2NlbGwtdHlwZXMnO1xuXG4vKipcbiAqIFN0cmF0ZWd5IGludGVyZmFjZSBmb3IgZm9ybWF0dGluZyBjZWxsIHZhbHVlcyBmb3IgZGlzcGxheVxuICogRm9ybWF0dGVycyBhcmUgc3RhdGVsZXNzIGFuZCBjYW4gYmUgc2hhcmVkIGFjcm9zcyBtdWx0aXBsZSBjZWxsc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENlbGxGb3JtYXR0ZXI8VCA9IGFueT4ge1xuICAvKipcbiAgICogRm9ybWF0cyBhIHZhbHVlIGZvciBkaXNwbGF5XG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gZm9ybWF0XG4gICAqIEByZXR1cm5zIEZvcm1hdHRlZCBzdHJpbmcgcmVwcmVzZW50YXRpb25cbiAgICovXG4gIGZvcm1hdCh2YWx1ZTogVCk6IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgbWV0aG9kIHRvIGZvcm1hdCB2YWx1ZSB3aXRoIGFkZGl0aW9uYWwgY29udGV4dFxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIGZvcm1hdFxuICAgKiBAcGFyYW0gcm93RGF0YSBUaGUgZW50aXJlIHJvdyBkYXRhXG4gICAqIEBwYXJhbSBjb2x1bW5LZXkgVGhlIGNvbHVtbiBrZXlcbiAgICogQHJldHVybnMgRm9ybWF0dGVkIHN0cmluZyByZXByZXNlbnRhdGlvblxuICAgKi9cbiAgZm9ybWF0V2l0aENvbnRleHQ/KHZhbHVlOiBULCByb3dEYXRhOiBhbnksIGNvbHVtbktleTogc3RyaW5nKTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFN0cmF0ZWd5IGludGVyZmFjZSBmb3IgdmFsaWRhdGluZyBjZWxsIHZhbHVlc1xuICogVmFsaWRhdG9ycyBhcmUgc3RhdGVsZXNzIGFuZCBjYW4gYmUgc2hhcmVkIGFjcm9zcyBtdWx0aXBsZSBjZWxsc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENlbGxWYWxpZGF0b3I8VCA9IGFueT4ge1xuICAvKipcbiAgICogVmFsaWRhdGVzIGEgY2VsbCB2YWx1ZVxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHZhbGlkYXRlXG4gICAqIEByZXR1cm5zIFZhbGlkYXRpb24gcmVzdWx0IHdpdGggc3VjY2VzcyBmbGFnIGFuZCBvcHRpb25hbCBlcnJvciBtZXNzYWdlc1xuICAgKi9cbiAgdmFsaWRhdGUodmFsdWU6IFQpOiBWYWxpZGF0aW9uUmVzdWx0O1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBtZXRob2QgdG8gdmFsaWRhdGUgd2l0aCBhZGRpdGlvbmFsIGNvbnRleHRcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byB2YWxpZGF0ZVxuICAgKiBAcGFyYW0gcm93RGF0YSBUaGUgZW50aXJlIHJvdyBkYXRhXG4gICAqIEBwYXJhbSBjb2x1bW5LZXkgVGhlIGNvbHVtbiBrZXlcbiAgICogQHJldHVybnMgVmFsaWRhdGlvbiByZXN1bHRcbiAgICovXG4gIHZhbGlkYXRlV2l0aENvbnRleHQ/KHZhbHVlOiBULCByb3dEYXRhOiBhbnksIGNvbHVtbktleTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdDtcblxuICAvKipcbiAgICogT3B0aW9uYWwgZXJyb3IgbWVzc2FnZSB0ZW1wbGF0ZVxuICAgKi9cbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEVkaXRvciBjb250ZXh0IHByb3ZpZGVkIHRvIGNlbGwgZWRpdG9yc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENlbGxFZGl0b3JDb250ZXh0PFQgPSBhbnk+IHtcbiAgLyoqXG4gICAqIEN1cnJlbnQgY2VsbCB2YWx1ZVxuICAgKi9cbiAgdmFsdWU6IFQ7XG5cbiAgLyoqXG4gICAqIFJvdyBkYXRhIGNvbnRleHRcbiAgICovXG4gIHJvd0RhdGE/OiBhbnk7XG5cbiAgLyoqXG4gICAqIENvbHVtbiBrZXlcbiAgICovXG4gIGNvbHVtbktleTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSb3cgaW5kZXhcbiAgICovXG4gIHJvd0luZGV4PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB3aGVuIHZhbHVlIGNoYW5nZXNcbiAgICovXG4gIG9uQ2hhbmdlOiAobmV3VmFsdWU6IFQpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIHNhdmUgdGhlIGVkaXRlZCB2YWx1ZVxuICAgKi9cbiAgb25TYXZlOiAobmV3VmFsdWU6IFQpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIGNhbmNlbCBlZGl0aW5nXG4gICAqL1xuICBvbkNhbmNlbDogKCkgPT4gdm9pZDtcblxuICAvKipcbiAgICogQ29udGFpbmVyIGVsZW1lbnQgZm9yIHRoZSBlZGl0b3JcbiAgICovXG4gIGNvbnRhaW5lcj86IEhUTUxFbGVtZW50O1xufVxuXG4vKipcbiAqIFN0cmF0ZWd5IGludGVyZmFjZSBmb3IgaGFuZGxpbmcgaW5saW5lIGNlbGwgZWRpdGluZ1xuICogRWRpdG9ycyBhcmUgc3RhdGVsZXNzIGFuZCBjYW4gYmUgc2hhcmVkIGFjcm9zcyBtdWx0aXBsZSBjZWxsc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENlbGxFZGl0b3I8VCA9IGFueT4ge1xuICAvKipcbiAgICogV2hldGhlciB0aGlzIGVkaXRvciBzaG91bGQgcmVjZWl2ZSB0aGUgaW5pdGlhbCBrZXlwcmVzcyBjaGFyYWN0ZXJcbiAgICogd2hlbiBzdGFydGluZyBlZGl0IG1vZGUgdmlhIGtleWJvYXJkLlxuICAgKiAtIHRydWUgKGRlZmF1bHQpOiBJbml0aWFsIGtleXByZXNzIGNoYXJhY3RlciBiZWNvbWVzIHRoZSBzdGFydGluZyB2YWx1ZVxuICAgKiAtIGZhbHNlOiBJbml0aWFsIGtleXByZXNzIGp1c3QgdHJpZ2dlcnMgZWRpdCBtb2RlLCBjaGFyYWN0ZXIgaXMgaWdub3JlZFxuICAgKi9cbiAgYWNjZXB0c0luaXRpYWxLZXlwcmVzcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgYW5kIHJlbmRlciB0aGUgZWRpdG9yXG4gICAqIEBwYXJhbSBjb250ZXh0IEVkaXRvciBjb250ZXh0IHdpdGggdmFsdWUsIGNhbGxiYWNrcywgYW5kIGNvbnRhaW5lclxuICAgKi9cbiAgZWRpdChjb250ZXh0OiBDZWxsRWRpdG9yQ29udGV4dDxUPik6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGNsZWFudXAgd2hlbiBlZGl0b3IgaXMgZGVzdHJveWVkXG4gICAqL1xuICBkZXN0cm95PygpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBtZXRob2QgdG8gZm9jdXMgdGhlIGVkaXRvclxuICAgKi9cbiAgZm9jdXM/KCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIG1ldGhvZCB0byBnZXQgY3VycmVudCBlZGl0b3IgdmFsdWUgd2l0aG91dCBzYXZpbmdcbiAgICovXG4gIGdldEN1cnJlbnRWYWx1ZT8oKTogVDtcbn1cblxuLyoqXG4gKiBQYXJzZXIgaW50ZXJmYWNlIGZvciBjb252ZXJ0aW5nIHVzZXIgaW5wdXQgdG8gdHlwZWQgdmFsdWVzXG4gKiBVc2VkIGJ5IGVkaXRvcnMgdG8gY29udmVydCBzdHJpbmcgaW5wdXQgdG8gcHJvcGVyIGRhdGEgdHlwZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZWxsUGFyc2VyPFQgPSBhbnk+IHtcbiAgLyoqXG4gICAqIFBhcnNlIHVzZXIgaW5wdXQgdG8gdHlwZWQgdmFsdWVcbiAgICogQHBhcmFtIGlucHV0IFVzZXIgaW5wdXQgKHVzdWFsbHkgc3RyaW5nKVxuICAgKiBAcmV0dXJucyBQYXJzZWQgdHlwZWQgdmFsdWVcbiAgICovXG4gIHBhcnNlKGlucHV0OiBhbnkpOiBUO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBtZXRob2QgdG8gY2hlY2sgaWYgaW5wdXQgY2FuIGJlIHBhcnNlZFxuICAgKiBAcGFyYW0gaW5wdXQgVXNlciBpbnB1dFxuICAgKiBAcmV0dXJucyBUcnVlIGlmIGlucHV0IGNhbiBiZSBwYXJzZWRcbiAgICovXG4gIGNhblBhcnNlPyhpbnB1dDogYW55KTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDb21wb3NpdGUgdmFsaWRhdG9yIHRoYXQgY2hhaW5zIG11bHRpcGxlIHZhbGlkYXRvcnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wb3NpdGVWYWxpZGF0b3I8VCA9IGFueT4gZXh0ZW5kcyBDZWxsVmFsaWRhdG9yPFQ+IHtcbiAgLyoqXG4gICAqIEFkZCBhIHZhbGlkYXRvciB0byB0aGUgY2hhaW5cbiAgICovXG4gIGFkZFZhbGlkYXRvcih2YWxpZGF0b3I6IENlbGxWYWxpZGF0b3I8VD4pOiB0aGlzO1xuXG4gIC8qKlxuICAgKiBHZXQgYWxsIHZhbGlkYXRvcnMgaW4gdGhlIGNoYWluXG4gICAqL1xuICBnZXRWYWxpZGF0b3JzKCk6IENlbGxWYWxpZGF0b3I8VD5bXTtcbn1cblxuLyoqXG4gKiBFdmVudCBoYW5kbGVyIHR5cGVzIGZvciBjZWxsIGxpZmVjeWNsZSBldmVudHNcbiAqL1xuZXhwb3J0IHR5cGUgQ2VsbEV2ZW50SGFuZGxlcjxUID0gYW55PiA9IChldmVudDogQ2VsbEV2ZW50PFQ+KSA9PiB2b2lkO1xuXG4vKipcbiAqIENlbGwgbGlmZWN5Y2xlIGhvb2tzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2VsbExpZmVjeWNsZUhvb2tzPFQgPSBhbnk+IHtcbiAgLyoqXG4gICAqIENhbGxlZCBiZWZvcmUgZWRpdGluZyBzdGFydHNcbiAgICovXG4gIGJlZm9yZUVkaXQ/OiBDZWxsRXZlbnRIYW5kbGVyPFQ+O1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBlZGl0IG1vZGUgaXMgZW50ZXJlZFxuICAgKi9cbiAgb25FZGl0PzogQ2VsbEV2ZW50SGFuZGxlcjxUPjtcblxuICAvKipcbiAgICogQ2FsbGVkIGFmdGVyIGVkaXQgbW9kZSBpcyBleGl0ZWRcbiAgICovXG4gIGFmdGVyRWRpdD86IENlbGxFdmVudEhhbmRsZXI8VD47XG5cbiAgLyoqXG4gICAqIENhbGxlZCBiZWZvcmUgdmFsdWUgaXMgc2F2ZWRcbiAgICovXG4gIGJlZm9yZVNhdmU/OiBDZWxsRXZlbnRIYW5kbGVyPFQ+O1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgYWZ0ZXIgdmFsdWUgaXMgc2F2ZWRcbiAgICovXG4gIG9uU2F2ZT86IENlbGxFdmVudEhhbmRsZXI8VD47XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGVkaXQgaXMgY2FuY2VsbGVkXG4gICAqL1xuICBvbkNhbmNlbD86IENlbGxFdmVudEhhbmRsZXI8VD47XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHZhbGlkYXRpb24gZmFpbHNcbiAgICovXG4gIG9uVmFsaWRhdGlvbkVycm9yPzogQ2VsbEV2ZW50SGFuZGxlcjxUPjtcblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gY2VsbCB2YWx1ZSBjaGFuZ2VzXG4gICAqL1xuICBvbkNoYW5nZT86IENlbGxFdmVudEhhbmRsZXI8VD47XG59XG5cbiJdfQ==
|