@aquera/ngx-smart-table 0.0.16-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 +1664 -2107
- 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 -419
- 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 -12267
- 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 -110
- 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,472 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TableConfig JSON Schema
|
|
3
|
-
* Exported as TypeScript constant for use in validation service
|
|
4
|
-
*/
|
|
5
|
-
export const tableConfigSchema = {
|
|
6
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
7
|
-
"$id": "https://ngx-smart-table.schema/table-config.json",
|
|
8
|
-
"title": "Smart Table Configuration Schema",
|
|
9
|
-
"description": "JSON Schema for Smart Table TableConfig",
|
|
10
|
-
"type": "object",
|
|
11
|
-
"required": ["columns"],
|
|
12
|
-
"properties": {
|
|
13
|
-
"columns": {
|
|
14
|
-
"type": "array",
|
|
15
|
-
"minItems": 1,
|
|
16
|
-
"description": "Array of column definitions",
|
|
17
|
-
"items": {
|
|
18
|
-
"$ref": "#/definitions/ColumnConfig"
|
|
19
|
-
}
|
|
20
|
-
},
|
|
21
|
-
"pagination": {
|
|
22
|
-
"$ref": "#/definitions/PaginationConfig"
|
|
23
|
-
},
|
|
24
|
-
"sorting": {
|
|
25
|
-
"$ref": "#/definitions/SortingConfig"
|
|
26
|
-
},
|
|
27
|
-
"filtering": {
|
|
28
|
-
"$ref": "#/definitions/FilteringConfig"
|
|
29
|
-
},
|
|
30
|
-
"selection": {
|
|
31
|
-
"$ref": "#/definitions/SelectionConfig"
|
|
32
|
-
},
|
|
33
|
-
"display": {
|
|
34
|
-
"$ref": "#/definitions/DisplayConfig"
|
|
35
|
-
},
|
|
36
|
-
"initialState": {
|
|
37
|
-
"$ref": "#/definitions/InitialStateConfig"
|
|
38
|
-
},
|
|
39
|
-
"features": {
|
|
40
|
-
"$ref": "#/definitions/FeaturesConfig"
|
|
41
|
-
}
|
|
42
|
-
},
|
|
43
|
-
"definitions": {
|
|
44
|
-
"ColumnConfig": {
|
|
45
|
-
"type": "object",
|
|
46
|
-
"required": ["key", "header", "dataType"],
|
|
47
|
-
"properties": {
|
|
48
|
-
"key": {
|
|
49
|
-
"type": "string",
|
|
50
|
-
"pattern": "^[a-zA-Z_$][a-zA-Z0-9_$]*$",
|
|
51
|
-
"description": "Unique identifier for the column (must be a valid identifier)"
|
|
52
|
-
},
|
|
53
|
-
"header": {
|
|
54
|
-
"type": "string",
|
|
55
|
-
"description": "Display header text for the column"
|
|
56
|
-
},
|
|
57
|
-
"dataType": {
|
|
58
|
-
"type": "string",
|
|
59
|
-
"enum": ["string", "number", "boolean", "date", "custom"],
|
|
60
|
-
"description": "Data type of the column values"
|
|
61
|
-
},
|
|
62
|
-
"editable": {
|
|
63
|
-
"type": "boolean",
|
|
64
|
-
"description": "Whether cells in this column are editable"
|
|
65
|
-
},
|
|
66
|
-
"editMode": {
|
|
67
|
-
"type": "string",
|
|
68
|
-
"enum": ["click", "manual", "none"],
|
|
69
|
-
"description": "Edit mode trigger"
|
|
70
|
-
},
|
|
71
|
-
"sortable": {
|
|
72
|
-
"type": "boolean",
|
|
73
|
-
"description": "Whether this column is sortable"
|
|
74
|
-
},
|
|
75
|
-
"filterable": {
|
|
76
|
-
"type": "boolean",
|
|
77
|
-
"description": "Whether this column is filterable"
|
|
78
|
-
},
|
|
79
|
-
"hideable": {
|
|
80
|
-
"type": "boolean",
|
|
81
|
-
"description": "Whether this column's visibility can be toggled by users"
|
|
82
|
-
},
|
|
83
|
-
"movable": {
|
|
84
|
-
"type": "boolean",
|
|
85
|
-
"description": "Whether this column can be moved left/right by users"
|
|
86
|
-
},
|
|
87
|
-
"pinnable": {
|
|
88
|
-
"type": "boolean",
|
|
89
|
-
"description": "Whether this column can be pinned/unpinned by users"
|
|
90
|
-
},
|
|
91
|
-
"enableMenu": {
|
|
92
|
-
"type": "boolean",
|
|
93
|
-
"description": "Whether to show the column menu dropdown for this column"
|
|
94
|
-
},
|
|
95
|
-
"resizable": {
|
|
96
|
-
"type": "boolean",
|
|
97
|
-
"description": "Whether this column is resizable"
|
|
98
|
-
},
|
|
99
|
-
"width": {
|
|
100
|
-
"oneOf": [
|
|
101
|
-
{
|
|
102
|
-
"type": "number",
|
|
103
|
-
"minimum": 1
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
"type": "string",
|
|
107
|
-
"enum": ["auto"]
|
|
108
|
-
}
|
|
109
|
-
],
|
|
110
|
-
"description": "Column width (px, %, or 'auto')"
|
|
111
|
-
},
|
|
112
|
-
"minWidth": {
|
|
113
|
-
"type": "number",
|
|
114
|
-
"minimum": 1,
|
|
115
|
-
"description": "Minimum column width (px)"
|
|
116
|
-
},
|
|
117
|
-
"maxWidth": {
|
|
118
|
-
"type": "number",
|
|
119
|
-
"minimum": 1,
|
|
120
|
-
"description": "Maximum column width (px)"
|
|
121
|
-
},
|
|
122
|
-
"sticky": {
|
|
123
|
-
"oneOf": [
|
|
124
|
-
{
|
|
125
|
-
"type": "string",
|
|
126
|
-
"enum": ["left", "right"]
|
|
127
|
-
},
|
|
128
|
-
{
|
|
129
|
-
"type": "boolean",
|
|
130
|
-
"const": false
|
|
131
|
-
}
|
|
132
|
-
],
|
|
133
|
-
"description": "Whether this column is sticky (left or right)"
|
|
134
|
-
},
|
|
135
|
-
"showStickyShadow": {
|
|
136
|
-
"type": "boolean",
|
|
137
|
-
"description": "Whether to show shadow indicator on sticky columns"
|
|
138
|
-
},
|
|
139
|
-
"alignment": {
|
|
140
|
-
"type": "string",
|
|
141
|
-
"enum": ["left", "center", "right"],
|
|
142
|
-
"description": "Cell content horizontal alignment"
|
|
143
|
-
},
|
|
144
|
-
"verticalAlignment": {
|
|
145
|
-
"type": "string",
|
|
146
|
-
"enum": ["top", "middle", "bottom"],
|
|
147
|
-
"description": "Cell content vertical alignment"
|
|
148
|
-
},
|
|
149
|
-
"truncate": {
|
|
150
|
-
"type": "boolean",
|
|
151
|
-
"description": "Whether to truncate overflowing text"
|
|
152
|
-
},
|
|
153
|
-
"tooltip": {
|
|
154
|
-
"oneOf": [
|
|
155
|
-
{
|
|
156
|
-
"type": "string"
|
|
157
|
-
},
|
|
158
|
-
{
|
|
159
|
-
"type": "null"
|
|
160
|
-
}
|
|
161
|
-
],
|
|
162
|
-
"description": "Tooltip configuration (string or function - functions not serializable)"
|
|
163
|
-
},
|
|
164
|
-
"className": {
|
|
165
|
-
"oneOf": [
|
|
166
|
-
{
|
|
167
|
-
"type": "string"
|
|
168
|
-
},
|
|
169
|
-
{
|
|
170
|
-
"type": "array",
|
|
171
|
-
"items": {
|
|
172
|
-
"type": "string"
|
|
173
|
-
}
|
|
174
|
-
},
|
|
175
|
-
{
|
|
176
|
-
"type": "null"
|
|
177
|
-
}
|
|
178
|
-
],
|
|
179
|
-
"description": "CSS class name(s) for cells in this column"
|
|
180
|
-
},
|
|
181
|
-
"style": {
|
|
182
|
-
"type": "object",
|
|
183
|
-
"description": "Inline styles for cells in this column (object or function - functions not serializable)"
|
|
184
|
-
},
|
|
185
|
-
"visible": {
|
|
186
|
-
"type": "boolean",
|
|
187
|
-
"description": "Whether column is visible"
|
|
188
|
-
},
|
|
189
|
-
"pinned": {
|
|
190
|
-
"oneOf": [
|
|
191
|
-
{
|
|
192
|
-
"type": "string",
|
|
193
|
-
"enum": ["left", "right"]
|
|
194
|
-
},
|
|
195
|
-
{
|
|
196
|
-
"type": "boolean",
|
|
197
|
-
"const": false
|
|
198
|
-
}
|
|
199
|
-
],
|
|
200
|
-
"description": "Whether column is pinned (left, right, or none)"
|
|
201
|
-
},
|
|
202
|
-
"sortPriority": {
|
|
203
|
-
"type": "number",
|
|
204
|
-
"description": "Sort order priority (for multi-column sort)"
|
|
205
|
-
},
|
|
206
|
-
"metadata": {
|
|
207
|
-
"type": "object",
|
|
208
|
-
"description": "Custom metadata for column"
|
|
209
|
-
},
|
|
210
|
-
"showLoadingIndicator": {
|
|
211
|
-
"type": "boolean",
|
|
212
|
-
"description": "Whether cells should show loading indicator during async operations"
|
|
213
|
-
},
|
|
214
|
-
"sortDirection": {
|
|
215
|
-
"type": "string",
|
|
216
|
-
"enum": ["none", "asc", "desc"],
|
|
217
|
-
"description": "Current sort direction (runtime state)"
|
|
218
|
-
},
|
|
219
|
-
"sortEnabled": {
|
|
220
|
-
"type": "boolean",
|
|
221
|
-
"description": "Whether sorting is currently active/enabled (runtime state)"
|
|
222
|
-
},
|
|
223
|
-
"filterConfig": {
|
|
224
|
-
"type": "object",
|
|
225
|
-
"properties": {
|
|
226
|
-
"operator": {
|
|
227
|
-
"type": "string",
|
|
228
|
-
"enum": ["equals", "contains", "startsWith", "endsWith", "gt", "lt", "gte", "lte", "between", "in"],
|
|
229
|
-
"description": "Filter operator"
|
|
230
|
-
},
|
|
231
|
-
"value": {
|
|
232
|
-
"description": "Current filter value (any type)"
|
|
233
|
-
},
|
|
234
|
-
"enabled": {
|
|
235
|
-
"type": "boolean",
|
|
236
|
-
"description": "Whether filtering is currently active/enabled"
|
|
237
|
-
},
|
|
238
|
-
"options": {
|
|
239
|
-
"$ref": "#/definitions/FilterOptions",
|
|
240
|
-
"description": "Custom filter options for dropdown-based filtering"
|
|
241
|
-
}
|
|
242
|
-
},
|
|
243
|
-
"additionalProperties": false,
|
|
244
|
-
"description": "Filter configuration for this column"
|
|
245
|
-
},
|
|
246
|
-
"stickyOffset": {
|
|
247
|
-
"type": "number",
|
|
248
|
-
"minimum": 0,
|
|
249
|
-
"description": "Calculated offset for sticky positioning (runtime state, auto-calculated)"
|
|
250
|
-
}
|
|
251
|
-
},
|
|
252
|
-
"additionalProperties": false
|
|
253
|
-
},
|
|
254
|
-
"PaginationConfig": {
|
|
255
|
-
"type": "object",
|
|
256
|
-
"properties": {
|
|
257
|
-
"enabled": {
|
|
258
|
-
"type": "boolean",
|
|
259
|
-
"description": "Enable pagination"
|
|
260
|
-
},
|
|
261
|
-
"pageSize": {
|
|
262
|
-
"type": "number",
|
|
263
|
-
"minimum": 1,
|
|
264
|
-
"description": "Number of items per page"
|
|
265
|
-
},
|
|
266
|
-
"pageSizeOptions": {
|
|
267
|
-
"type": "array",
|
|
268
|
-
"items": {
|
|
269
|
-
"type": "number",
|
|
270
|
-
"minimum": 1
|
|
271
|
-
},
|
|
272
|
-
"minItems": 1,
|
|
273
|
-
"description": "Available page size options for user selection"
|
|
274
|
-
},
|
|
275
|
-
"showPagination": {
|
|
276
|
-
"type": "boolean",
|
|
277
|
-
"description": "Show pagination UI controls"
|
|
278
|
-
},
|
|
279
|
-
"showTopControls": {
|
|
280
|
-
"type": "boolean",
|
|
281
|
-
"description": "Show pagination controls at the top of the table"
|
|
282
|
-
},
|
|
283
|
-
"showBottomControls": {
|
|
284
|
-
"type": "boolean",
|
|
285
|
-
"description": "Show pagination controls at the bottom of the table"
|
|
286
|
-
},
|
|
287
|
-
"totalItems": {
|
|
288
|
-
"type": "number",
|
|
289
|
-
"minimum": 0,
|
|
290
|
-
"description": "Total number of items available (for server-side pagination)"
|
|
291
|
-
}
|
|
292
|
-
},
|
|
293
|
-
"additionalProperties": false
|
|
294
|
-
},
|
|
295
|
-
"SortingConfig": {
|
|
296
|
-
"type": "object",
|
|
297
|
-
"properties": {
|
|
298
|
-
"enabled": {
|
|
299
|
-
"type": "boolean",
|
|
300
|
-
"description": "Enable sorting"
|
|
301
|
-
},
|
|
302
|
-
"multiColumn": {
|
|
303
|
-
"type": "boolean",
|
|
304
|
-
"description": "Allow sorting by multiple columns simultaneously"
|
|
305
|
-
},
|
|
306
|
-
"mode": {
|
|
307
|
-
"type": "string",
|
|
308
|
-
"enum": ["local", "server"],
|
|
309
|
-
"description": "Sorting mode - local (client-side) or server (API-based)"
|
|
310
|
-
}
|
|
311
|
-
},
|
|
312
|
-
"additionalProperties": false
|
|
313
|
-
},
|
|
314
|
-
"FilteringConfig": {
|
|
315
|
-
"type": "object",
|
|
316
|
-
"properties": {
|
|
317
|
-
"enabled": {
|
|
318
|
-
"type": "boolean",
|
|
319
|
-
"description": "Enable filtering"
|
|
320
|
-
},
|
|
321
|
-
"mode": {
|
|
322
|
-
"type": "string",
|
|
323
|
-
"enum": ["local", "server"],
|
|
324
|
-
"description": "Filtering mode - local (client-side) or server (API-based)"
|
|
325
|
-
}
|
|
326
|
-
},
|
|
327
|
-
"additionalProperties": false
|
|
328
|
-
},
|
|
329
|
-
"SelectionConfig": {
|
|
330
|
-
"type": "object",
|
|
331
|
-
"properties": {
|
|
332
|
-
"enabled": {
|
|
333
|
-
"type": "boolean",
|
|
334
|
-
"description": "Enable row selection"
|
|
335
|
-
},
|
|
336
|
-
"mode": {
|
|
337
|
-
"type": "string",
|
|
338
|
-
"enum": ["single", "multiple"],
|
|
339
|
-
"description": "Selection mode - single row or multiple rows"
|
|
340
|
-
}
|
|
341
|
-
},
|
|
342
|
-
"additionalProperties": false
|
|
343
|
-
},
|
|
344
|
-
"DisplayConfig": {
|
|
345
|
-
"type": "object",
|
|
346
|
-
"properties": {
|
|
347
|
-
"stickyHeader": {
|
|
348
|
-
"type": "boolean",
|
|
349
|
-
"description": "Make table header sticky on scroll"
|
|
350
|
-
},
|
|
351
|
-
"maxHeight": {
|
|
352
|
-
"type": "number",
|
|
353
|
-
"description": "Maximum height of the table in pixels"
|
|
354
|
-
},
|
|
355
|
-
"virtualScroll": {
|
|
356
|
-
"$ref": "#/definitions/VirtualScrollConfig"
|
|
357
|
-
}
|
|
358
|
-
},
|
|
359
|
-
"additionalProperties": false
|
|
360
|
-
},
|
|
361
|
-
"InitialStateConfig": {
|
|
362
|
-
"type": "object",
|
|
363
|
-
"properties": {
|
|
364
|
-
"page": {
|
|
365
|
-
"type": "number",
|
|
366
|
-
"minimum": 0,
|
|
367
|
-
"description": "Initial page number (0-indexed)"
|
|
368
|
-
},
|
|
369
|
-
"sortBy": {
|
|
370
|
-
"type": "array",
|
|
371
|
-
"items": {
|
|
372
|
-
"type": "object",
|
|
373
|
-
"required": ["key"],
|
|
374
|
-
"properties": {
|
|
375
|
-
"key": {
|
|
376
|
-
"type": "string",
|
|
377
|
-
"description": "Column key to sort by"
|
|
378
|
-
},
|
|
379
|
-
"direction": {
|
|
380
|
-
"type": "string",
|
|
381
|
-
"enum": ["none", "asc", "desc"],
|
|
382
|
-
"description": "Sort direction"
|
|
383
|
-
}
|
|
384
|
-
},
|
|
385
|
-
"additionalProperties": false
|
|
386
|
-
},
|
|
387
|
-
"description": "Initial sort configuration"
|
|
388
|
-
},
|
|
389
|
-
"filters": {
|
|
390
|
-
"type": "array",
|
|
391
|
-
"items": {
|
|
392
|
-
"type": "object",
|
|
393
|
-
"required": ["key", "operator"],
|
|
394
|
-
"properties": {
|
|
395
|
-
"key": {
|
|
396
|
-
"type": "string",
|
|
397
|
-
"description": "Column key to filter"
|
|
398
|
-
},
|
|
399
|
-
"operator": {
|
|
400
|
-
"type": "string",
|
|
401
|
-
"enum": ["equals", "contains", "startsWith", "endsWith", "gt", "lt", "gte", "lte", "between", "in"],
|
|
402
|
-
"description": "Filter operator"
|
|
403
|
-
},
|
|
404
|
-
"value": {
|
|
405
|
-
"description": "Filter value (any type)"
|
|
406
|
-
}
|
|
407
|
-
},
|
|
408
|
-
"additionalProperties": false
|
|
409
|
-
},
|
|
410
|
-
"description": "Initial filter configuration"
|
|
411
|
-
}
|
|
412
|
-
},
|
|
413
|
-
"additionalProperties": false
|
|
414
|
-
},
|
|
415
|
-
"FeaturesConfig": {
|
|
416
|
-
"type": "object",
|
|
417
|
-
"properties": {
|
|
418
|
-
"columnManagement": {
|
|
419
|
-
"type": "object",
|
|
420
|
-
"properties": {
|
|
421
|
-
"allowAdd": {
|
|
422
|
-
"type": "boolean",
|
|
423
|
-
"description": "Allow users to add new columns dynamically",
|
|
424
|
-
"default": false
|
|
425
|
-
}
|
|
426
|
-
},
|
|
427
|
-
"additionalProperties": false,
|
|
428
|
-
"description": "Column management features"
|
|
429
|
-
},
|
|
430
|
-
"keyboardNavigation": {
|
|
431
|
-
"type": "object",
|
|
432
|
-
"properties": {
|
|
433
|
-
"enabled": {
|
|
434
|
-
"type": "boolean",
|
|
435
|
-
"description": "Enable Excel-like keyboard navigation with arrow keys",
|
|
436
|
-
"default": false
|
|
437
|
-
}
|
|
438
|
-
},
|
|
439
|
-
"additionalProperties": false,
|
|
440
|
-
"description": "Keyboard navigation features"
|
|
441
|
-
}
|
|
442
|
-
},
|
|
443
|
-
"additionalProperties": false,
|
|
444
|
-
"description": "Features configuration for table capabilities"
|
|
445
|
-
},
|
|
446
|
-
"FilterOptions": {
|
|
447
|
-
"type": "object",
|
|
448
|
-
"required": ["data", "handler"],
|
|
449
|
-
"properties": {
|
|
450
|
-
"data": {
|
|
451
|
-
"type": "array",
|
|
452
|
-
"description": "Array of data items to display in the dropdown",
|
|
453
|
-
"items": {
|
|
454
|
-
"description": "Data item of any type"
|
|
455
|
-
}
|
|
456
|
-
},
|
|
457
|
-
"handler": {
|
|
458
|
-
"description": "Handler function to transform data items into {label, value} pairs. Type: (item: any) => {label: string, value: any}"
|
|
459
|
-
},
|
|
460
|
-
"multiselect": {
|
|
461
|
-
"type": "boolean",
|
|
462
|
-
"description": "Whether to allow multiple selections (default: false)",
|
|
463
|
-
"default": false
|
|
464
|
-
}
|
|
465
|
-
},
|
|
466
|
-
"additionalProperties": false,
|
|
467
|
-
"description": "Filter options configuration for custom dropdown filters"
|
|
468
|
-
}
|
|
469
|
-
},
|
|
470
|
-
"additionalProperties": false
|
|
471
|
-
};
|
|
472
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29uZmlnLnNjaGVtYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LXRhYmxlL3NyYy9saWIvc2NoZW1hcy90YWJsZS1jb25maWcuc2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHO0lBQy9CLFNBQVMsRUFBRSx5Q0FBeUM7SUFDcEQsS0FBSyxFQUFFLGtEQUFrRDtJQUN6RCxPQUFPLEVBQUUsa0NBQWtDO0lBQzNDLGFBQWEsRUFBRSx5Q0FBeUM7SUFDeEQsTUFBTSxFQUFFLFFBQVE7SUFDaEIsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDO0lBQ3ZCLFlBQVksRUFBRTtRQUNaLFNBQVMsRUFBRTtZQUNULE1BQU0sRUFBRSxPQUFPO1lBQ2YsVUFBVSxFQUFFLENBQUM7WUFDYixhQUFhLEVBQUUsNkJBQTZCO1lBQzVDLE9BQU8sRUFBRTtnQkFDUCxNQUFNLEVBQUUsNEJBQTRCO2FBQ3JDO1NBQ0Y7UUFDRCxZQUFZLEVBQUU7WUFDWixNQUFNLEVBQUUsZ0NBQWdDO1NBQ3pDO1FBQ0QsU0FBUyxFQUFFO1lBQ1QsTUFBTSxFQUFFLDZCQUE2QjtTQUN0QztRQUNELFdBQVcsRUFBRTtZQUNYLE1BQU0sRUFBRSwrQkFBK0I7U0FDeEM7UUFDRCxXQUFXLEVBQUU7WUFDWCxNQUFNLEVBQUUsK0JBQStCO1NBQ3hDO1FBQ0QsU0FBUyxFQUFFO1lBQ1QsTUFBTSxFQUFFLDZCQUE2QjtTQUN0QztRQUNELGNBQWMsRUFBRTtZQUNkLE1BQU0sRUFBRSxrQ0FBa0M7U0FDM0M7UUFDRCxVQUFVLEVBQUU7WUFDVixNQUFNLEVBQUUsOEJBQThCO1NBQ3ZDO0tBQ0Y7SUFDRCxhQUFhLEVBQUU7UUFDYixjQUFjLEVBQUU7WUFDZCxNQUFNLEVBQUUsUUFBUTtZQUNoQixVQUFVLEVBQUUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFF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QUU7d0JBQ1AsYUFBYSxFQUFFLHVCQUF1QjtxQkFDdkM7aUJBQ0Y7Z0JBQ0QsU0FBUyxFQUFFO29CQUNULGFBQWEsRUFBRSxzSEFBc0g7aUJBQ3RJO2dCQUNELGFBQWEsRUFBRTtvQkFDYixNQUFNLEVBQUUsU0FBUztvQkFDakIsYUFBYSxFQUFFLHVEQUF1RDtvQkFDdEUsU0FBUyxFQUFFLEtBQUs7aUJBQ2pCO2FBQ0Y7WUFDRCxzQkFBc0IsRUFBRSxLQUFLO1lBQzdCLGFBQWEsRUFBRSwwREFBMEQ7U0FDMUU7S0FDRjtJQUNELHNCQUFzQixFQUFFLEtBQUs7Q0FDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGFibGVDb25maWcgSlNPTiBTY2hlbWFcbiAqIEV4cG9ydGVkIGFzIFR5cGVTY3JpcHQgY29uc3RhbnQgZm9yIHVzZSBpbiB2YWxpZGF0aW9uIHNlcnZpY2VcbiAqL1xuXG5leHBvcnQgY29uc3QgdGFibGVDb25maWdTY2hlbWEgPSB7XG4gIFwiJHNjaGVtYVwiOiBcImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hI1wiLFxuICBcIiRpZFwiOiBcImh0dHBzOi8vbmd4LXNtYXJ0LXRhYmxlLnNjaGVtYS90YWJsZS1jb25maWcuanNvblwiLFxuICBcInRpdGxlXCI6IFwiU21hcnQgVGFibGUgQ29uZmlndXJhdGlvbiBTY2hlbWFcIixcbiAgXCJkZXNjcmlwdGlvblwiOiBcIkpTT04gU2NoZW1hIGZvciBTbWFydCBUYWJsZSBUYWJsZUNvbmZpZ1wiLFxuICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgXCJyZXF1aXJlZFwiOiBbXCJjb2x1bW5zXCJdLFxuICBcInByb3BlcnRpZXNcIjoge1xuICAgIFwiY29sdW1uc1wiOiB7XG4gICAgICBcInR5cGVcIjogXCJhcnJheVwiLFxuICAgICAgXCJtaW5JdGVtc1wiOiAxLFxuICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkFycmF5IG9mIGNvbHVtbiBkZWZpbml0aW9uc1wiLFxuICAgICAgXCJpdGVtc1wiOiB7XG4gICAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvQ29sdW1uQ29uZmlnXCJcbiAgICAgIH1cbiAgICB9LFxuICAgIFwicGFnaW5hdGlvblwiOiB7XG4gICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL1BhZ2luYXRpb25Db25maWdcIlxuICAgIH0sXG4gICAgXCJzb3J0aW5nXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvU29ydGluZ0NvbmZpZ1wiXG4gICAgfSxcbiAgICBcImZpbHRlcmluZ1wiOiB7XG4gICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL0ZpbHRlcmluZ0NvbmZpZ1wiXG4gICAgfSxcbiAgICBcInNlbGVjdGlvblwiOiB7XG4gICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL1NlbGVjdGlvbkNvbmZpZ1wiXG4gICAgfSxcbiAgICBcImRpc3BsYXlcIjoge1xuICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9EaXNwbGF5Q29uZmlnXCJcbiAgICB9LFxuICAgIFwiaW5pdGlhbFN0YXRlXCI6IHtcbiAgICAgIFwiJHJlZlwiOiBcIiMvZGVmaW5pdGlvbnMvSW5pdGlhbFN0YXRlQ29uZmlnXCJcbiAgICB9LFxuICAgIFwiZmVhdHVyZXNcIjoge1xuICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9GZWF0dXJlc0NvbmZpZ1wiXG4gICAgfVxuICB9LFxuICBcImRlZmluaXRpb25zXCI6IHtcbiAgICBcIkNvbHVtbkNvbmZpZ1wiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwicmVxdWlyZWRcIjogW1wia2V5XCIsIFwiaGVhZGVyXCIsIFwiZGF0YVR5cGVcIl0sXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcImtleVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJwYXR0ZXJuXCI6IFwiXlthLXpBLVpfJF1bYS16QS1aMC05XyRdKiRcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBjb2x1bW4gKG11c3QgYmUgYSB2YWxpZCBpZGVudGlmaWVyKVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiaGVhZGVyXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiRGlzcGxheSBoZWFkZXIgdGV4dCBmb3IgdGhlIGNvbHVtblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGF0YVR5cGVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZW51bVwiOiBbXCJzdHJpbmdcIiwgXCJudW1iZXJcIiwgXCJib29sZWFuXCIsIFwiZGF0ZVwiLCBcImN1c3RvbVwiXSxcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiRGF0YSB0eXBlIG9mIHRoZSBjb2x1bW4gdmFsdWVzXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJlZGl0YWJsZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbGVhblwiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJXaGV0aGVyIGNlbGxzIGluIHRoaXMgY29sdW1uIGFyZSBlZGl0YWJsZVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiZWRpdE1vZGVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZW51bVwiOiBbXCJjbGlja1wiLCBcIm1hbnVhbFwiLCBcIm5vbmVcIl0sXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkVkaXQgbW9kZSB0cmlnZ2VyXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJzb3J0YWJsZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbGVhblwiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJXaGV0aGVyIHRoaXMgY29sdW1uIGlzIHNvcnRhYmxlXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJmaWx0ZXJhYmxlXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJib29sZWFuXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIldoZXRoZXIgdGhpcyBjb2x1bW4gaXMgZmlsdGVyYWJsZVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiaGlkZWFibGVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcImJvb2xlYW5cIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiV2hldGhlciB0aGlzIGNvbHVtbidzIHZpc2liaWxpdHkgY2FuIGJlIHRvZ2dsZWQgYnkgdXNlcnNcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1vdmFibGVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcImJvb2xlYW5cIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiV2hldGhlciB0aGlzIGNvbHVtbiBjYW4gYmUgbW92ZWQgbGVmdC9yaWdodCBieSB1c2Vyc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwicGlubmFibGVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcImJvb2xlYW5cIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiV2hldGhlciB0aGlzIGNvbHVtbiBjYW4gYmUgcGlubmVkL3VucGlubmVkIGJ5IHVzZXJzXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJlbmFibGVNZW51XCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJib29sZWFuXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIldoZXRoZXIgdG8gc2hvdyB0aGUgY29sdW1uIG1lbnUgZHJvcGRvd24gZm9yIHRoaXMgY29sdW1uXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJyZXNpemFibGVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcImJvb2xlYW5cIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiV2hldGhlciB0aGlzIGNvbHVtbiBpcyByZXNpemFibGVcIlxuICAgICAgICB9LFxuICAgICAgICBcIndpZHRoXCI6IHtcbiAgICAgICAgICBcIm9uZU9mXCI6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwibnVtYmVyXCIsXG4gICAgICAgICAgICAgIFwibWluaW11bVwiOiAxXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgXCJlbnVtXCI6IFtcImF1dG9cIl1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJDb2x1bW4gd2lkdGggKHB4LCAlLCBvciAnYXV0bycpXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtaW5XaWR0aFwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwibnVtYmVyXCIsXG4gICAgICAgICAgXCJtaW5pbXVtXCI6IDEsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIk1pbmltdW0gY29sdW1uIHdpZHRoIChweClcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1heFdpZHRoXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJudW1iZXJcIixcbiAgICAgICAgICBcIm1pbmltdW1cIjogMSxcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiTWF4aW11bSBjb2x1bW4gd2lkdGggKHB4KVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwic3RpY2t5XCI6IHtcbiAgICAgICAgICBcIm9uZU9mXCI6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgIFwiZW51bVwiOiBbXCJsZWZ0XCIsIFwicmlnaHRcIl1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFwidHlwZVwiOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgICAgXCJjb25zdFwiOiBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIldoZXRoZXIgdGhpcyBjb2x1bW4gaXMgc3RpY2t5IChsZWZ0IG9yIHJpZ2h0KVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwic2hvd1N0aWNreVNoYWRvd1wiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbGVhblwiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJXaGV0aGVyIHRvIHNob3cgc2hhZG93IGluZGljYXRvciBvbiBzdGlja3kgY29sdW1uc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiYWxpZ25tZW50XCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImVudW1cIjogW1wibGVmdFwiLCBcImNlbnRlclwiLCBcInJpZ2h0XCJdLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJDZWxsIGNvbnRlbnQgaG9yaXpvbnRhbCBhbGlnbm1lbnRcIlxuICAgICAgICB9LFxuICAgICAgICBcInZlcnRpY2FsQWxpZ25tZW50XCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImVudW1cIjogW1widG9wXCIsIFwibWlkZGxlXCIsIFwiYm90dG9tXCJdLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJDZWxsIGNvbnRlbnQgdmVydGljYWwgYWxpZ25tZW50XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0cnVuY2F0ZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbGVhblwiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJXaGV0aGVyIHRvIHRydW5jYXRlIG92ZXJmbG93aW5nIHRleHRcIlxuICAgICAgICB9LFxuICAgICAgICBcInRvb2x0aXBcIjoge1xuICAgICAgICAgIFwib25lT2ZcIjogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwibnVsbFwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVG9vbHRpcCBjb25maWd1cmF0aW9uIChzdHJpbmcgb3IgZnVuY3Rpb24gLSBmdW5jdGlvbnMgbm90IHNlcmlhbGl6YWJsZSlcIlxuICAgICAgICB9LFxuICAgICAgICBcImNsYXNzTmFtZVwiOiB7XG4gICAgICAgICAgXCJvbmVPZlwiOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBcInR5cGVcIjogXCJhcnJheVwiLFxuICAgICAgICAgICAgICBcIml0ZW1zXCI6IHtcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBcInR5cGVcIjogXCJudWxsXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJDU1MgY2xhc3MgbmFtZShzKSBmb3IgY2VsbHMgaW4gdGhpcyBjb2x1bW5cIlxuICAgICAgICB9LFxuICAgICAgICBcInN0eWxlXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiSW5saW5lIHN0eWxlcyBmb3IgY2VsbHMgaW4gdGhpcyBjb2x1bW4gKG9iamVjdCBvciBmdW5jdGlvbiAtIGZ1bmN0aW9ucyBub3Qgc2VyaWFsaXphYmxlKVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidmlzaWJsZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbGVhblwiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJXaGV0aGVyIGNvbHVtbiBpcyB2aXNpYmxlXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJwaW5uZWRcIjoge1xuICAgICAgICAgIFwib25lT2ZcIjogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgXCJlbnVtXCI6IFtcImxlZnRcIiwgXCJyaWdodFwiXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgICBcImNvbnN0XCI6IGZhbHNlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiV2hldGhlciBjb2x1bW4gaXMgcGlubmVkIChsZWZ0LCByaWdodCwgb3Igbm9uZSlcIlxuICAgICAgICB9LFxuICAgICAgICBcInNvcnRQcmlvcml0eVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwibnVtYmVyXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlNvcnQgb3JkZXIgcHJpb3JpdHkgKGZvciBtdWx0aS1jb2x1bW4gc29ydClcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1ldGFkYXRhXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQ3VzdG9tIG1ldGFkYXRhIGZvciBjb2x1bW5cIlxuICAgICAgICB9LFxuICAgICAgICBcInNob3dMb2FkaW5nSW5kaWNhdG9yXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJib29sZWFuXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIldoZXRoZXIgY2VsbHMgc2hvdWxkIHNob3cgbG9hZGluZyBpbmRpY2F0b3IgZHVyaW5nIGFzeW5jIG9wZXJhdGlvbnNcIlxuICAgICAgICB9LFxuICAgICAgICBcInNvcnREaXJlY3Rpb25cIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZW51bVwiOiBbXCJub25lXCIsIFwiYXNjXCIsIFwiZGVzY1wiXSxcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQ3VycmVudCBzb3J0IGRpcmVjdGlvbiAocnVudGltZSBzdGF0ZSlcIlxuICAgICAgICB9LFxuICAgICAgICBcInNvcnRFbmFibGVkXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJib29sZWFuXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIldoZXRoZXIgc29ydGluZyBpcyBjdXJyZW50bHkgYWN0aXZlL2VuYWJsZWQgKHJ1bnRpbWUgc3RhdGUpXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJmaWx0ZXJDb25maWdcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgICAgICBcIm9wZXJhdG9yXCI6IHtcbiAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgIFwiZW51bVwiOiBbXCJlcXVhbHNcIiwgXCJjb250YWluc1wiLCBcInN0YXJ0c1dpdGhcIiwgXCJlbmRzV2l0aFwiLCBcImd0XCIsIFwibHRcIiwgXCJndGVcIiwgXCJsdGVcIiwgXCJiZXR3ZWVuXCIsIFwiaW5cIl0sXG4gICAgICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJGaWx0ZXIgb3BlcmF0b3JcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwidmFsdWVcIjoge1xuICAgICAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQ3VycmVudCBmaWx0ZXIgdmFsdWUgKGFueSB0eXBlKVwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJlbmFibGVkXCI6IHtcbiAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiV2hldGhlciBmaWx0ZXJpbmcgaXMgY3VycmVudGx5IGFjdGl2ZS9lbmFibGVkXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIm9wdGlvbnNcIjoge1xuICAgICAgICAgICAgICBcIiRyZWZcIjogXCIjL2RlZmluaXRpb25zL0ZpbHRlck9wdGlvbnNcIixcbiAgICAgICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkN1c3RvbSBmaWx0ZXIgb3B0aW9ucyBmb3IgZHJvcGRvd24tYmFzZWQgZmlsdGVyaW5nXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkZpbHRlciBjb25maWd1cmF0aW9uIGZvciB0aGlzIGNvbHVtblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwic3RpY2t5T2Zmc2V0XCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJudW1iZXJcIixcbiAgICAgICAgICBcIm1pbmltdW1cIjogMCxcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQ2FsY3VsYXRlZCBvZmZzZXQgZm9yIHN0aWNreSBwb3NpdGlvbmluZyAocnVudGltZSBzdGF0ZSwgYXV0by1jYWxjdWxhdGVkKVwiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlXG4gICAgfSxcbiAgICBcIlBhZ2luYXRpb25Db25maWdcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcImVuYWJsZWRcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcImJvb2xlYW5cIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiRW5hYmxlIHBhZ2luYXRpb25cIlxuICAgICAgICB9LFxuICAgICAgICBcInBhZ2VTaXplXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJudW1iZXJcIixcbiAgICAgICAgICBcIm1pbmltdW1cIjogMSxcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiTnVtYmVyIG9mIGl0ZW1zIHBlciBwYWdlXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJwYWdlU2l6ZU9wdGlvbnNcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcImFycmF5XCIsXG4gICAgICAgICAgXCJpdGVtc1wiOiB7XG4gICAgICAgICAgICBcInR5cGVcIjogXCJudW1iZXJcIixcbiAgICAgICAgICAgIFwibWluaW11bVwiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIm1pbkl0ZW1zXCI6IDEsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkF2YWlsYWJsZSBwYWdlIHNpemUgb3B0aW9ucyBmb3IgdXNlciBzZWxlY3Rpb25cIlxuICAgICAgICB9LFxuICAgICAgICBcInNob3dQYWdpbmF0aW9uXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJib29sZWFuXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlNob3cgcGFnaW5hdGlvbiBVSSBjb250cm9sc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwic2hvd1RvcENvbnRyb2xzXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJib29sZWFuXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlNob3cgcGFnaW5hdGlvbiBjb250cm9scyBhdCB0aGUgdG9wIG9mIHRoZSB0YWJsZVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwic2hvd0JvdHRvbUNvbnRyb2xzXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJib29sZWFuXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlNob3cgcGFnaW5hdGlvbiBjb250cm9scyBhdCB0aGUgYm90dG9tIG9mIHRoZSB0YWJsZVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidG90YWxJdGVtc1wiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwibnVtYmVyXCIsXG4gICAgICAgICAgXCJtaW5pbXVtXCI6IDAsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlRvdGFsIG51bWJlciBvZiBpdGVtcyBhdmFpbGFibGUgKGZvciBzZXJ2ZXItc2lkZSBwYWdpbmF0aW9uKVwiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlXG4gICAgfSxcbiAgICBcIlNvcnRpbmdDb25maWdcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcImVuYWJsZWRcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcImJvb2xlYW5cIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiRW5hYmxlIHNvcnRpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcIm11bHRpQ29sdW1uXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJib29sZWFuXCIsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkFsbG93IHNvcnRpbmcgYnkgbXVsdGlwbGUgY29sdW1ucyBzaW11bHRhbmVvdXNseVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibW9kZVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgXCJlbnVtXCI6IFtcImxvY2FsXCIsIFwic2VydmVyXCJdLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJTb3J0aW5nIG1vZGUgLSBsb2NhbCAoY2xpZW50LXNpZGUpIG9yIHNlcnZlciAoQVBJLWJhc2VkKVwiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlXG4gICAgfSxcbiAgICBcIkZpbHRlcmluZ0NvbmZpZ1wiOiB7XG4gICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiZW5hYmxlZFwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbGVhblwiLFxuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJFbmFibGUgZmlsdGVyaW5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtb2RlXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICBcImVudW1cIjogW1wibG9jYWxcIiwgXCJzZXJ2ZXJcIl0sXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkZpbHRlcmluZyBtb2RlIC0gbG9jYWwgKGNsaWVudC1zaWRlKSBvciBzZXJ2ZXIgKEFQSS1iYXNlZClcIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZVxuICAgIH0sXG4gICAgXCJTZWxlY3Rpb25Db25maWdcIjoge1xuICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcImVuYWJsZWRcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcImJvb2xlYW5cIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiRW5hYmxlIHJvdyBzZWxlY3Rpb25cIlxuICAgICAgICB9LFxuICAgICAgICBcIm1vZGVcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgIFwiZW51bVwiOiBbXCJzaW5nbGVcIiwgXCJtdWx0aXBsZVwiXSxcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiU2VsZWN0aW9uIG1vZGUgLSBzaW5nbGUgcm93IG9yIG11bHRpcGxlIHJvd3NcIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZVxuICAgIH0sXG4gICAgXCJEaXNwbGF5Q29uZmlnXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJzdGlja3lIZWFkZXJcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcImJvb2xlYW5cIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiTWFrZSB0YWJsZSBoZWFkZXIgc3RpY2t5IG9uIHNjcm9sbFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWF4SGVpZ2h0XCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJudW1iZXJcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiTWF4aW11bSBoZWlnaHQgb2YgdGhlIHRhYmxlIGluIHBpeGVsc1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwidmlydHVhbFNjcm9sbFwiOiB7XG4gICAgICAgICAgXCIkcmVmXCI6IFwiIy9kZWZpbml0aW9ucy9WaXJ0dWFsU2Nyb2xsQ29uZmlnXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2VcbiAgICB9LFxuICAgIFwiSW5pdGlhbFN0YXRlQ29uZmlnXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJwYWdlXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJudW1iZXJcIixcbiAgICAgICAgICBcIm1pbmltdW1cIjogMCxcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiSW5pdGlhbCBwYWdlIG51bWJlciAoMC1pbmRleGVkKVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwic29ydEJ5XCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJhcnJheVwiLFxuICAgICAgICAgIFwiaXRlbXNcIjoge1xuICAgICAgICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICBcInJlcXVpcmVkXCI6IFtcImtleVwiXSxcbiAgICAgICAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgICAgICAgIFwia2V5XCI6IHtcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQ29sdW1uIGtleSB0byBzb3J0IGJ5XCJcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXCJkaXJlY3Rpb25cIjoge1xuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIFwiZW51bVwiOiBbXCJub25lXCIsIFwiYXNjXCIsIFwiZGVzY1wiXSxcbiAgICAgICAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiU29ydCBkaXJlY3Rpb25cIlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkluaXRpYWwgc29ydCBjb25maWd1cmF0aW9uXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJmaWx0ZXJzXCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJhcnJheVwiLFxuICAgICAgICAgIFwiaXRlbXNcIjoge1xuICAgICAgICAgICAgXCJ0eXBlXCI6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICBcInJlcXVpcmVkXCI6IFtcImtleVwiLCBcIm9wZXJhdG9yXCJdLFxuICAgICAgICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgICAgICAgXCJrZXlcIjoge1xuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJDb2x1bW4ga2V5IHRvIGZpbHRlclwiXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFwib3BlcmF0b3JcIjoge1xuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIFwiZW51bVwiOiBbXCJlcXVhbHNcIiwgXCJjb250YWluc1wiLCBcInN0YXJ0c1dpdGhcIiwgXCJlbmRzV2l0aFwiLCBcImd0XCIsIFwibHRcIiwgXCJndGVcIiwgXCJsdGVcIiwgXCJiZXR3ZWVuXCIsIFwiaW5cIl0sXG4gICAgICAgICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkZpbHRlciBvcGVyYXRvclwiXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFwidmFsdWVcIjoge1xuICAgICAgICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJGaWx0ZXIgdmFsdWUgKGFueSB0eXBlKVwiXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiSW5pdGlhbCBmaWx0ZXIgY29uZmlndXJhdGlvblwiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCI6IGZhbHNlXG4gICAgfSxcbiAgICBcIkZlYXR1cmVzQ29uZmlnXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgXCJjb2x1bW5NYW5hZ2VtZW50XCI6IHtcbiAgICAgICAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICAgICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICAgICAgXCJhbGxvd0FkZFwiOiB7XG4gICAgICAgICAgICAgIFwidHlwZVwiOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkFsbG93IHVzZXJzIHRvIGFkZCBuZXcgY29sdW1ucyBkeW5hbWljYWxseVwiLFxuICAgICAgICAgICAgICBcImRlZmF1bHRcIjogZmFsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkNvbHVtbiBtYW5hZ2VtZW50IGZlYXR1cmVzXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJrZXlib2FyZE5hdmlnYXRpb25cIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgICAgICBcImVuYWJsZWRcIjoge1xuICAgICAgICAgICAgICBcInR5cGVcIjogXCJib29sZWFuXCIsXG4gICAgICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJFbmFibGUgRXhjZWwtbGlrZSBrZXlib2FyZCBuYXZpZ2F0aW9uIHdpdGggYXJyb3cga2V5c1wiLFxuICAgICAgICAgICAgICBcImRlZmF1bHRcIjogZmFsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIktleWJvYXJkIG5hdmlnYXRpb24gZmVhdHVyZXNcIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZSxcbiAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJGZWF0dXJlcyBjb25maWd1cmF0aW9uIGZvciB0YWJsZSBjYXBhYmlsaXRpZXNcIlxuICAgIH0sXG4gICAgXCJGaWx0ZXJPcHRpb25zXCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgICAgXCJyZXF1aXJlZFwiOiBbXCJkYXRhXCIsIFwiaGFuZGxlclwiXSxcbiAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiZGF0YVwiOiB7XG4gICAgICAgICAgXCJ0eXBlXCI6IFwiYXJyYXlcIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQXJyYXkgb2YgZGF0YSBpdGVtcyB0byBkaXNwbGF5IGluIHRoZSBkcm9wZG93blwiLFxuICAgICAgICAgIFwiaXRlbXNcIjoge1xuICAgICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkRhdGEgaXRlbSBvZiBhbnkgdHlwZVwiXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImhhbmRsZXJcIjoge1xuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJIYW5kbGVyIGZ1bmN0aW9uIHRvIHRyYW5zZm9ybSBkYXRhIGl0ZW1zIGludG8ge2xhYmVsLCB2YWx1ZX0gcGFpcnMuIFR5cGU6IChpdGVtOiBhbnkpID0+IHtsYWJlbDogc3RyaW5nLCB2YWx1ZTogYW55fVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibXVsdGlzZWxlY3RcIjoge1xuICAgICAgICAgIFwidHlwZVwiOiBcImJvb2xlYW5cIixcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiV2hldGhlciB0byBhbGxvdyBtdWx0aXBsZSBzZWxlY3Rpb25zIChkZWZhdWx0OiBmYWxzZSlcIixcbiAgICAgICAgICBcImRlZmF1bHRcIjogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwiYWRkaXRpb25hbFByb3BlcnRpZXNcIjogZmFsc2UsXG4gICAgICBcImRlc2NyaXB0aW9uXCI6IFwiRmlsdGVyIG9wdGlvbnMgY29uZmlndXJhdGlvbiBmb3IgY3VzdG9tIGRyb3Bkb3duIGZpbHRlcnNcIlxuICAgIH1cbiAgfSxcbiAgXCJhZGRpdGlvbmFsUHJvcGVydGllc1wiOiBmYWxzZVxufSBhcyBjb25zdDtcblxuIl19
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
/**
|
|
4
|
-
* AutosaveService - In-memory autosave storage
|
|
5
|
-
*
|
|
6
|
-
* Stores autosave data in memory for workbooks.
|
|
7
|
-
* Data is automatically cleared when the component is destroyed or tab is closed.
|
|
8
|
-
*/
|
|
9
|
-
export class AutosaveService {
|
|
10
|
-
constructor() {
|
|
11
|
-
/**
|
|
12
|
-
* In-memory storage for autosaved data
|
|
13
|
-
*/
|
|
14
|
-
this.autosaveStore = new Map();
|
|
15
|
-
/**
|
|
16
|
-
* Track dirty state per workbook
|
|
17
|
-
*/
|
|
18
|
-
this.dirtyState = new Map();
|
|
19
|
-
/**
|
|
20
|
-
* Track last save timestamp per workbook
|
|
21
|
-
*/
|
|
22
|
-
this.lastSaveTime = new Map();
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Save workbook data to memory
|
|
26
|
-
* @param workbookId Unique workbook identifier
|
|
27
|
-
* @param data Autosave data to store
|
|
28
|
-
*/
|
|
29
|
-
save(workbookId, data) {
|
|
30
|
-
this.autosaveStore.set(workbookId, data);
|
|
31
|
-
this.lastSaveTime.set(workbookId, data.timestamp);
|
|
32
|
-
this.dirtyState.set(workbookId, false);
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Retrieve autosaved data for a workbook
|
|
36
|
-
* @param workbookId Unique workbook identifier
|
|
37
|
-
* @returns Autosaved data or null if not found
|
|
38
|
-
*/
|
|
39
|
-
get(workbookId) {
|
|
40
|
-
return this.autosaveStore.get(workbookId) || null;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Check if workbook has unsaved changes
|
|
44
|
-
* @param workbookId Unique workbook identifier
|
|
45
|
-
* @returns True if workbook has unsaved changes
|
|
46
|
-
*/
|
|
47
|
-
isDirty(workbookId) {
|
|
48
|
-
return this.dirtyState.get(workbookId) || false;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Mark workbook as dirty or clean
|
|
52
|
-
* @param workbookId Unique workbook identifier
|
|
53
|
-
* @param dirty Dirty state
|
|
54
|
-
*/
|
|
55
|
-
setDirty(workbookId, dirty) {
|
|
56
|
-
this.dirtyState.set(workbookId, dirty);
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Get last save timestamp for a workbook
|
|
60
|
-
* @param workbookId Unique workbook identifier
|
|
61
|
-
* @returns Last save timestamp or null
|
|
62
|
-
*/
|
|
63
|
-
getLastSaveTime(workbookId) {
|
|
64
|
-
return this.lastSaveTime.get(workbookId) || null;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Clear autosave data for a specific workbook
|
|
68
|
-
* @param workbookId Unique workbook identifier
|
|
69
|
-
*/
|
|
70
|
-
clear(workbookId) {
|
|
71
|
-
this.autosaveStore.delete(workbookId);
|
|
72
|
-
this.dirtyState.delete(workbookId);
|
|
73
|
-
this.lastSaveTime.delete(workbookId);
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Clear all autosave data
|
|
77
|
-
*/
|
|
78
|
-
clearAll() {
|
|
79
|
-
this.autosaveStore.clear();
|
|
80
|
-
this.dirtyState.clear();
|
|
81
|
-
this.lastSaveTime.clear();
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
AutosaveService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: AutosaveService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
85
|
-
AutosaveService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: AutosaveService, providedIn: 'root' });
|
|
86
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: AutosaveService, decorators: [{
|
|
87
|
-
type: Injectable,
|
|
88
|
-
args: [{
|
|
89
|
-
providedIn: 'root'
|
|
90
|
-
}]
|
|
91
|
-
}] });
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b3NhdmUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LXRhYmxlL3NyYy9saWIvc2VydmljZXMvYXV0b3NhdmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQWMzQzs7Ozs7R0FLRztBQUlILE1BQU0sT0FBTyxlQUFlO0lBSDVCO1FBSUU7O1dBRUc7UUFDSyxrQkFBYSxHQUFHLElBQUksR0FBRyxFQUF3QixDQUFDO1FBRXhEOztXQUVHO1FBQ0ssZUFBVSxHQUFHLElBQUksR0FBRyxFQUFtQixDQUFDO1FBRWhEOztXQUVHO1FBQ0ssaUJBQVksR0FBRyxJQUFJLEdBQUcsRUFBZ0IsQ0FBQztLQW1FaEQ7SUFqRUM7Ozs7T0FJRztJQUNILElBQUksQ0FBQyxVQUFrQixFQUFFLElBQWtCO1FBQ3pDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEdBQUcsQ0FBQyxVQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQztJQUNwRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyxVQUFrQjtRQUN4QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUNsRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFFBQVEsQ0FBQyxVQUFrQixFQUFFLEtBQWM7UUFDekMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsZUFBZSxDQUFDLFVBQWtCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDO0lBQ25ELENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsVUFBa0I7UUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUTtRQUNOLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzVCLENBQUM7OzRHQWhGVSxlQUFlO2dIQUFmLGVBQWUsY0FGZCxNQUFNOzJGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV29ya2Jvb2tDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvd29ya2Jvb2stY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBXb3JrYm9va1N0YXRlU25hcHNob3QgfSBmcm9tICcuLi9yZW5kZXJlci9tb2RlbHMvd29ya2Jvb2stc3RhdGUuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBBdXRvc2F2ZSBkYXRhIHN0cnVjdHVyZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9zYXZlRGF0YSB7XG4gIHdvcmtib29rQ29uZmlnOiBXb3JrYm9va0NvbmZpZztcbiAgd29ya2Jvb2tTdGF0ZTogV29ya2Jvb2tTdGF0ZVNuYXBzaG90O1xuICBzaGVldHNEYXRhOiBNYXA8c3RyaW5nLCBhbnlbXT47XG4gIHRpbWVzdGFtcDogRGF0ZTtcbn1cblxuLyoqXG4gKiBBdXRvc2F2ZVNlcnZpY2UgLSBJbi1tZW1vcnkgYXV0b3NhdmUgc3RvcmFnZVxuICogXG4gKiBTdG9yZXMgYXV0b3NhdmUgZGF0YSBpbiBtZW1vcnkgZm9yIHdvcmtib29rcy5cbiAqIERhdGEgaXMgYXV0b21hdGljYWxseSBjbGVhcmVkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBkZXN0cm95ZWQgb3IgdGFiIGlzIGNsb3NlZC5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQXV0b3NhdmVTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIEluLW1lbW9yeSBzdG9yYWdlIGZvciBhdXRvc2F2ZWQgZGF0YVxuICAgKi9cbiAgcHJpdmF0ZSBhdXRvc2F2ZVN0b3JlID0gbmV3IE1hcDxzdHJpbmcsIEF1dG9zYXZlRGF0YT4oKTtcblxuICAvKipcbiAgICogVHJhY2sgZGlydHkgc3RhdGUgcGVyIHdvcmtib29rXG4gICAqL1xuICBwcml2YXRlIGRpcnR5U3RhdGUgPSBuZXcgTWFwPHN0cmluZywgYm9vbGVhbj4oKTtcblxuICAvKipcbiAgICogVHJhY2sgbGFzdCBzYXZlIHRpbWVzdGFtcCBwZXIgd29ya2Jvb2tcbiAgICovXG4gIHByaXZhdGUgbGFzdFNhdmVUaW1lID0gbmV3IE1hcDxzdHJpbmcsIERhdGU+KCk7XG5cbiAgLyoqXG4gICAqIFNhdmUgd29ya2Jvb2sgZGF0YSB0byBtZW1vcnlcbiAgICogQHBhcmFtIHdvcmtib29rSWQgVW5pcXVlIHdvcmtib29rIGlkZW50aWZpZXJcbiAgICogQHBhcmFtIGRhdGEgQXV0b3NhdmUgZGF0YSB0byBzdG9yZVxuICAgKi9cbiAgc2F2ZSh3b3JrYm9va0lkOiBzdHJpbmcsIGRhdGE6IEF1dG9zYXZlRGF0YSk6IHZvaWQge1xuICAgIHRoaXMuYXV0b3NhdmVTdG9yZS5zZXQod29ya2Jvb2tJZCwgZGF0YSk7XG4gICAgdGhpcy5sYXN0U2F2ZVRpbWUuc2V0KHdvcmtib29rSWQsIGRhdGEudGltZXN0YW1wKTtcbiAgICB0aGlzLmRpcnR5U3RhdGUuc2V0KHdvcmtib29rSWQsIGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSBhdXRvc2F2ZWQgZGF0YSBmb3IgYSB3b3JrYm9va1xuICAgKiBAcGFyYW0gd29ya2Jvb2tJZCBVbmlxdWUgd29ya2Jvb2sgaWRlbnRpZmllclxuICAgKiBAcmV0dXJucyBBdXRvc2F2ZWQgZGF0YSBvciBudWxsIGlmIG5vdCBmb3VuZFxuICAgKi9cbiAgZ2V0KHdvcmtib29rSWQ6IHN0cmluZyk6IEF1dG9zYXZlRGF0YSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmF1dG9zYXZlU3RvcmUuZ2V0KHdvcmtib29rSWQpIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgd29ya2Jvb2sgaGFzIHVuc2F2ZWQgY2hhbmdlc1xuICAgKiBAcGFyYW0gd29ya2Jvb2tJZCBVbmlxdWUgd29ya2Jvb2sgaWRlbnRpZmllclxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHdvcmtib29rIGhhcyB1bnNhdmVkIGNoYW5nZXNcbiAgICovXG4gIGlzRGlydHkod29ya2Jvb2tJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGlydHlTdGF0ZS5nZXQod29ya2Jvb2tJZCkgfHwgZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogTWFyayB3b3JrYm9vayBhcyBkaXJ0eSBvciBjbGVhblxuICAgKiBAcGFyYW0gd29ya2Jvb2tJZCBVbmlxdWUgd29ya2Jvb2sgaWRlbnRpZmllclxuICAgKiBAcGFyYW0gZGlydHkgRGlydHkgc3RhdGVcbiAgICovXG4gIHNldERpcnR5KHdvcmtib29rSWQ6IHN0cmluZywgZGlydHk6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpcnR5U3RhdGUuc2V0KHdvcmtib29rSWQsIGRpcnR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgbGFzdCBzYXZlIHRpbWVzdGFtcCBmb3IgYSB3b3JrYm9va1xuICAgKiBAcGFyYW0gd29ya2Jvb2tJZCBVbmlxdWUgd29ya2Jvb2sgaWRlbnRpZmllclxuICAgKiBAcmV0dXJucyBMYXN0IHNhdmUgdGltZXN0YW1wIG9yIG51bGxcbiAgICovXG4gIGdldExhc3RTYXZlVGltZSh3b3JrYm9va0lkOiBzdHJpbmcpOiBEYXRlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMubGFzdFNhdmVUaW1lLmdldCh3b3JrYm9va0lkKSB8fCBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIGF1dG9zYXZlIGRhdGEgZm9yIGEgc3BlY2lmaWMgd29ya2Jvb2tcbiAgICogQHBhcmFtIHdvcmtib29rSWQgVW5pcXVlIHdvcmtib29rIGlkZW50aWZpZXJcbiAgICovXG4gIGNsZWFyKHdvcmtib29rSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuYXV0b3NhdmVTdG9yZS5kZWxldGUod29ya2Jvb2tJZCk7XG4gICAgdGhpcy5kaXJ0eVN0YXRlLmRlbGV0ZSh3b3JrYm9va0lkKTtcbiAgICB0aGlzLmxhc3RTYXZlVGltZS5kZWxldGUod29ya2Jvb2tJZCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgYWxsIGF1dG9zYXZlIGRhdGFcbiAgICovXG4gIGNsZWFyQWxsKCk6IHZvaWQge1xuICAgIHRoaXMuYXV0b3NhdmVTdG9yZS5jbGVhcigpO1xuICAgIHRoaXMuZGlydHlTdGF0ZS5jbGVhcigpO1xuICAgIHRoaXMubGFzdFNhdmVUaW1lLmNsZWFyKCk7XG4gIH1cbn1cblxuIl19
|