@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.
Files changed (170) hide show
  1. package/{fesm2020 → fesm2022}/aquera-ngx-smart-table.mjs +1579 -2101
  2. package/fesm2022/aquera-ngx-smart-table.mjs.map +1 -0
  3. package/package.json +8 -16
  4. package/types/aquera-ngx-smart-table.d.ts +5909 -0
  5. package/aquera-ngx-smart-table.d.ts +0 -5
  6. package/esm2020/aquera-ngx-smart-table.mjs +0 -5
  7. package/esm2020/lib/builder/components/builder-preview/builder-preview.component.mjs +0 -63
  8. package/esm2020/lib/builder/components/builder-toolbar/builder-toolbar.component.mjs +0 -115
  9. package/esm2020/lib/builder/components/column-editor/column-editor.component.mjs +0 -206
  10. package/esm2020/lib/builder/components/column-list/column-list.component.mjs +0 -125
  11. package/esm2020/lib/builder/components/definition-builder/definition-builder.component.mjs +0 -105
  12. package/esm2020/lib/builder/components/table-config-editor/table-config-editor.component.mjs +0 -132
  13. package/esm2020/lib/builder/definition-builder.module.mjs +0 -70
  14. package/esm2020/lib/builder/models/builder-state.interface.mjs +0 -5
  15. package/esm2020/lib/builder/services/definition-builder.service.mjs +0 -251
  16. package/esm2020/lib/builder/services/definition-export.service.mjs +0 -167
  17. package/esm2020/lib/builder/services/definition-import.service.mjs +0 -193
  18. package/esm2020/lib/builder/services/sample-data-generator.service.mjs +0 -126
  19. package/esm2020/lib/builder/utils/config-validator.util.mjs +0 -165
  20. package/esm2020/lib/builder/utils/typescript-generator.util.mjs +0 -206
  21. package/esm2020/lib/editors/index.mjs +0 -9
  22. package/esm2020/lib/editors/nile-autocomplete-editor.mjs +0 -228
  23. package/esm2020/lib/editors/nile-calendar-editor.mjs +0 -211
  24. package/esm2020/lib/editors/nile-date-picker-editor.mjs +0 -188
  25. package/esm2020/lib/editors/nile-input-editor.mjs +0 -235
  26. package/esm2020/lib/editors/nile-select-editor.mjs +0 -498
  27. package/esm2020/lib/factories/column-config.factory.mjs +0 -231
  28. package/esm2020/lib/models/autosave-config.interface.mjs +0 -8
  29. package/esm2020/lib/models/base-column-config.class.mjs +0 -253
  30. package/esm2020/lib/models/cell-strategies.interface.mjs +0 -6
  31. package/esm2020/lib/models/cell-types.mjs +0 -147
  32. package/esm2020/lib/models/column-action.interface.mjs +0 -6
  33. package/esm2020/lib/models/column-config.interface.mjs +0 -43
  34. package/esm2020/lib/models/column-config.utils.mjs +0 -101
  35. package/esm2020/lib/models/row-action.interface.mjs +0 -5
  36. package/esm2020/lib/models/row-validator.interface.mjs +0 -2
  37. package/esm2020/lib/models/schema-validation.interface.mjs +0 -2
  38. package/esm2020/lib/models/sheet-action.interface.mjs +0 -5
  39. package/esm2020/lib/models/sheet-config.interface.mjs +0 -5
  40. package/esm2020/lib/models/table-config.interface.mjs +0 -107
  41. package/esm2020/lib/models/table-validator.interface.mjs +0 -2
  42. package/esm2020/lib/models/workbook-action.interface.mjs +0 -5
  43. package/esm2020/lib/models/workbook-config.interface.mjs +0 -5
  44. package/esm2020/lib/renderer/components/st-add-column-button/st-add-column-button.component.mjs +0 -24
  45. package/esm2020/lib/renderer/components/st-cell/st-cell.component.mjs +0 -397
  46. package/esm2020/lib/renderer/components/st-column-editor-modal/st-column-editor-modal.component.mjs +0 -103
  47. package/esm2020/lib/renderer/components/st-column-filter/st-column-filter.component.mjs +0 -383
  48. package/esm2020/lib/renderer/components/st-column-menu/st-column-menu.component.mjs +0 -232
  49. package/esm2020/lib/renderer/components/st-column-visibility/st-column-visibility.component.mjs +0 -97
  50. package/esm2020/lib/renderer/components/st-header/st-header.component.mjs +0 -157
  51. package/esm2020/lib/renderer/components/st-pagination/st-pagination.component.mjs +0 -87
  52. package/esm2020/lib/renderer/components/st-row-actions-dropdown/st-row-actions-dropdown.component.mjs +0 -167
  53. package/esm2020/lib/renderer/components/st-sheet/st-sheet.component.mjs +0 -165
  54. package/esm2020/lib/renderer/components/st-sheet-actions/st-sheet-actions.component.mjs +0 -112
  55. package/esm2020/lib/renderer/components/st-table/st-table.component.mjs +0 -1453
  56. package/esm2020/lib/renderer/components/st-table-actions/st-table-actions.component.mjs +0 -169
  57. package/esm2020/lib/renderer/components/st-workbook/st-workbook.component.mjs +0 -581
  58. package/esm2020/lib/renderer/directives/click-outside.directive.mjs +0 -28
  59. package/esm2020/lib/renderer/directives/st-column-resize.directive.mjs +0 -108
  60. package/esm2020/lib/renderer/directives/st-keyboard-navigation.directive.mjs +0 -83
  61. package/esm2020/lib/renderer/models/cell-state.interface.mjs +0 -66
  62. package/esm2020/lib/renderer/models/cell.class.mjs +0 -389
  63. package/esm2020/lib/renderer/models/row-validation-state.interface.mjs +0 -7
  64. package/esm2020/lib/renderer/models/sheet-state.class.mjs +0 -90
  65. package/esm2020/lib/renderer/models/sheet-state.interface.mjs +0 -5
  66. package/esm2020/lib/renderer/models/table-state.class.mjs +0 -871
  67. package/esm2020/lib/renderer/models/table-state.interface.mjs +0 -5
  68. package/esm2020/lib/renderer/models/table-types.mjs +0 -29
  69. package/esm2020/lib/renderer/models/table-validation-state.interface.mjs +0 -7
  70. package/esm2020/lib/renderer/models/workbook-state.class.mjs +0 -174
  71. package/esm2020/lib/renderer/models/workbook-state.interface.mjs +0 -5
  72. package/esm2020/lib/renderer/models/z-index.enum.mjs +0 -55
  73. package/esm2020/lib/schemas/table-config.schema.mjs +0 -472
  74. package/esm2020/lib/services/autosave.service.mjs +0 -92
  75. package/esm2020/lib/services/custom-validation-rules.util.mjs +0 -124
  76. package/esm2020/lib/services/json-schema-validator.service.mjs +0 -216
  77. package/esm2020/lib/services/row-validation.service.mjs +0 -42
  78. package/esm2020/lib/services/validation-logger.service.mjs +0 -177
  79. package/esm2020/lib/services/virtual-scroll.service.mjs +0 -52
  80. package/esm2020/lib/shared/shared-table-components.module.mjs +0 -35
  81. package/esm2020/lib/smart-table.module.mjs +0 -124
  82. package/esm2020/lib/strategies/default-editors.mjs +0 -433
  83. package/esm2020/lib/strategies/default-formatters.mjs +0 -238
  84. package/esm2020/lib/strategies/default-validators.mjs +0 -327
  85. package/esm2020/public-api.mjs +0 -146
  86. package/fesm2015/aquera-ngx-smart-table.mjs +0 -12347
  87. package/fesm2015/aquera-ngx-smart-table.mjs.map +0 -1
  88. package/fesm2020/aquera-ngx-smart-table.mjs.map +0 -1
  89. package/lib/builder/components/builder-preview/builder-preview.component.d.ts +0 -31
  90. package/lib/builder/components/builder-toolbar/builder-toolbar.component.d.ts +0 -53
  91. package/lib/builder/components/column-editor/column-editor.component.d.ts +0 -69
  92. package/lib/builder/components/column-list/column-list.component.d.ts +0 -65
  93. package/lib/builder/components/definition-builder/definition-builder.component.d.ts +0 -58
  94. package/lib/builder/components/table-config-editor/table-config-editor.component.d.ts +0 -32
  95. package/lib/builder/definition-builder.module.d.ts +0 -15
  96. package/lib/builder/models/builder-state.interface.d.ts +0 -93
  97. package/lib/builder/services/definition-builder.service.d.ts +0 -80
  98. package/lib/builder/services/definition-export.service.d.ts +0 -59
  99. package/lib/builder/services/definition-import.service.d.ts +0 -31
  100. package/lib/builder/services/sample-data-generator.service.d.ts +0 -41
  101. package/lib/builder/utils/config-validator.util.d.ts +0 -32
  102. package/lib/builder/utils/typescript-generator.util.d.ts +0 -29
  103. package/lib/editors/index.d.ts +0 -8
  104. package/lib/editors/nile-autocomplete-editor.d.ts +0 -102
  105. package/lib/editors/nile-calendar-editor.d.ts +0 -88
  106. package/lib/editors/nile-date-picker-editor.d.ts +0 -97
  107. package/lib/editors/nile-input-editor.d.ts +0 -67
  108. package/lib/editors/nile-select-editor.d.ts +0 -113
  109. package/lib/factories/column-config.factory.d.ts +0 -73
  110. package/lib/models/autosave-config.interface.d.ts +0 -23
  111. package/lib/models/base-column-config.class.d.ts +0 -115
  112. package/lib/models/cell-strategies.interface.d.ts +0 -188
  113. package/lib/models/cell-types.d.ts +0 -337
  114. package/lib/models/column-action.interface.d.ts +0 -86
  115. package/lib/models/column-config.interface.d.ts +0 -272
  116. package/lib/models/column-config.utils.d.ts +0 -37
  117. package/lib/models/row-action.interface.d.ts +0 -86
  118. package/lib/models/row-validator.interface.d.ts +0 -37
  119. package/lib/models/schema-validation.interface.d.ts +0 -42
  120. package/lib/models/sheet-action.interface.d.ts +0 -59
  121. package/lib/models/sheet-config.interface.d.ts +0 -41
  122. package/lib/models/table-config.interface.d.ts +0 -251
  123. package/lib/models/table-validator.interface.d.ts +0 -40
  124. package/lib/models/workbook-action.interface.d.ts +0 -95
  125. package/lib/models/workbook-config.interface.d.ts +0 -107
  126. package/lib/renderer/components/st-add-column-button/st-add-column-button.component.d.ts +0 -9
  127. package/lib/renderer/components/st-cell/st-cell.component.d.ts +0 -69
  128. package/lib/renderer/components/st-column-editor-modal/st-column-editor-modal.component.d.ts +0 -39
  129. package/lib/renderer/components/st-column-filter/st-column-filter.component.d.ts +0 -139
  130. package/lib/renderer/components/st-column-menu/st-column-menu.component.d.ts +0 -81
  131. package/lib/renderer/components/st-column-visibility/st-column-visibility.component.d.ts +0 -44
  132. package/lib/renderer/components/st-header/st-header.component.d.ts +0 -93
  133. package/lib/renderer/components/st-pagination/st-pagination.component.d.ts +0 -42
  134. package/lib/renderer/components/st-row-actions-dropdown/st-row-actions-dropdown.component.d.ts +0 -67
  135. package/lib/renderer/components/st-sheet/st-sheet.component.d.ts +0 -98
  136. package/lib/renderer/components/st-sheet-actions/st-sheet-actions.component.d.ts +0 -58
  137. package/lib/renderer/components/st-table/st-table.component.d.ts +0 -380
  138. package/lib/renderer/components/st-table-actions/st-table-actions.component.d.ts +0 -77
  139. package/lib/renderer/components/st-workbook/st-workbook.component.d.ts +0 -275
  140. package/lib/renderer/directives/click-outside.directive.d.ts +0 -10
  141. package/lib/renderer/directives/st-column-resize.directive.d.ts +0 -44
  142. package/lib/renderer/directives/st-keyboard-navigation.directive.d.ts +0 -19
  143. package/lib/renderer/models/cell-state.interface.d.ts +0 -118
  144. package/lib/renderer/models/cell.class.d.ts +0 -174
  145. package/lib/renderer/models/row-validation-state.interface.d.ts +0 -27
  146. package/lib/renderer/models/sheet-state.class.d.ts +0 -67
  147. package/lib/renderer/models/sheet-state.interface.d.ts +0 -55
  148. package/lib/renderer/models/table-state.class.d.ts +0 -320
  149. package/lib/renderer/models/table-state.interface.d.ts +0 -18
  150. package/lib/renderer/models/table-types.d.ts +0 -228
  151. package/lib/renderer/models/table-validation-state.interface.d.ts +0 -34
  152. package/lib/renderer/models/workbook-state.class.d.ts +0 -117
  153. package/lib/renderer/models/workbook-state.interface.d.ts +0 -71
  154. package/lib/renderer/models/z-index.enum.d.ts +0 -44
  155. package/lib/schemas/table-config.schema.d.ts +0 -455
  156. package/lib/services/autosave.service.d.ts +0 -73
  157. package/lib/services/custom-validation-rules.util.d.ts +0 -12
  158. package/lib/services/json-schema-validator.service.d.ts +0 -49
  159. package/lib/services/row-validation.service.d.ts +0 -17
  160. package/lib/services/validation-logger.service.d.ts +0 -87
  161. package/lib/services/virtual-scroll.service.d.ts +0 -44
  162. package/lib/shared/shared-table-components.module.d.ts +0 -9
  163. package/lib/smart-table.module.d.ts +0 -26
  164. package/lib/strategies/default-editors.d.ts +0 -109
  165. package/lib/strategies/default-formatters.d.ts +0 -116
  166. package/lib/strategies/default-validators.d.ts +0 -113
  167. package/public-api.d.ts +0 -70
  168. package/src/lib/builder/README.md +0 -30
  169. package/src/lib/editors/README.md +0 -303
  170. 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