@aquera/ngx-smart-table 0.0.17-alpha → 0.0.19-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,389 +0,0 @@
1
- /**
2
- * Cell class - represents individual cell instances
3
- * Combines ColumnConfig (Flyweight) with CellState (unique per instance)
4
- */
5
- import { createCellState, createMemento, restoreFromMemento, canEdit, isCellValid } from './cell-state.interface';
6
- import { CellLifecycleState, EditMode } from '../../models/cell-types';
7
- /**
8
- * Cell class implementing the Flyweight pattern
9
- * - References shared ColumnConfig (Flyweight)
10
- * - Owns unique CellState (Flyweight Context)
11
- */
12
- export class Cell {
13
- constructor(columnConfig, initialValue, rowData, rowIndex) {
14
- /**
15
- * History of state mementos for undo/redo
16
- */
17
- this.history = [];
18
- /**
19
- * Current position in history
20
- */
21
- this.historyIndex = -1;
22
- /**
23
- * Maximum history size
24
- */
25
- this.maxHistorySize = 10;
26
- this.columnConfig = columnConfig;
27
- this.state = createCellState(initialValue);
28
- this.rowData = rowData;
29
- this.rowIndex = rowIndex;
30
- // Save initial state to history
31
- this.saveToHistory();
32
- }
33
- /**
34
- * Get current cell value
35
- */
36
- getValue() {
37
- return this.state.value;
38
- }
39
- /**
40
- * Set cell value
41
- * @param value New value
42
- * @param skipValidation Skip validation (useful for programmatic sets)
43
- */
44
- setValue(value, skipValidation = false) {
45
- const previousValue = this.state.value;
46
- // Call before change hook
47
- if (this.columnConfig.hooks?.onChange) {
48
- this.columnConfig.hooks.onChange(this.createEvent(value, previousValue));
49
- }
50
- this.state.value = value;
51
- this.state.isDirty = true;
52
- this.state.lastModified = new Date();
53
- // Validate if not skipped
54
- if (!skipValidation) {
55
- const validationResult = this.validate();
56
- if (!validationResult.valid) {
57
- return false;
58
- }
59
- }
60
- this.saveToHistory();
61
- return true;
62
- }
63
- /**
64
- * Render cell value as formatted string (delegates to formatter strategy)
65
- */
66
- render() {
67
- if (!this.columnConfig.formatter) {
68
- return String(this.state.value ?? '');
69
- }
70
- if (this.columnConfig.formatter.formatWithContext) {
71
- return this.columnConfig.formatter.formatWithContext(this.state.value, this.rowData, this.columnConfig.key);
72
- }
73
- // Ensure format method exists before calling it
74
- if (this.columnConfig.formatter.format) {
75
- return this.columnConfig.formatter.format(this.state.value);
76
- }
77
- // Fallback if formatter exists but has no methods
78
- return String(this.state.value ?? '');
79
- }
80
- /**
81
- * Validate cell value (delegates to validator strategy)
82
- */
83
- validate() {
84
- // Clear previous errors
85
- this.state.error = undefined;
86
- this.state.errors = undefined;
87
- this.state.lastValidated = new Date();
88
- if (!this.columnConfig.validator) {
89
- return { valid: true };
90
- }
91
- const result = this.columnConfig.validator.validateWithContext
92
- ? this.columnConfig.validator.validateWithContext(this.state.value, this.rowData, this.columnConfig.key)
93
- : this.columnConfig.validator.validate(this.state.value);
94
- if (!result.valid) {
95
- this.state.error = result.error;
96
- this.state.errors = result.errors;
97
- this.state.lifecycleState = CellLifecycleState.ERROR;
98
- // Call validation error hook
99
- if (this.columnConfig.hooks?.onValidationError) {
100
- this.columnConfig.hooks.onValidationError(this.createEvent(this.state.value));
101
- }
102
- }
103
- return result;
104
- }
105
- /**
106
- * Start edit mode
107
- */
108
- startEdit() {
109
- // Check if cell can be edited
110
- if (!this.canEdit()) {
111
- return false;
112
- }
113
- // Call before edit hook
114
- if (this.columnConfig.hooks?.beforeEdit) {
115
- this.columnConfig.hooks.beforeEdit(this.createEvent(this.state.value));
116
- }
117
- // Save current value as previous
118
- this.state.previousValue = this.state.value;
119
- this.state.isEditing = true;
120
- this.state.lifecycleState = CellLifecycleState.EDITING;
121
- // Call on edit hook
122
- if (this.columnConfig.hooks?.onEdit) {
123
- this.columnConfig.hooks.onEdit(this.createEvent(this.state.value));
124
- }
125
- return true;
126
- }
127
- /**
128
- * Save edited value
129
- * @param newValue The new value from editor
130
- */
131
- saveEdit(newValue) {
132
- if (!this.state.isEditing) {
133
- return false;
134
- }
135
- // Call before save hook
136
- if (this.columnConfig.hooks?.beforeSave) {
137
- this.columnConfig.hooks.beforeSave(this.createEvent(newValue, this.state.previousValue));
138
- }
139
- // Parse value if parser is provided
140
- let parsedValue = newValue;
141
- if (this.columnConfig.parser) {
142
- try {
143
- parsedValue = this.columnConfig.parser.parse(newValue);
144
- }
145
- catch (error) {
146
- this.state.error = `Failed to parse value: ${error}`;
147
- return false;
148
- }
149
- }
150
- // Validate
151
- const previousValue = this.state.value;
152
- this.state.value = parsedValue;
153
- const validationResult = this.validate();
154
- if (!validationResult.valid) {
155
- this.state.value = previousValue; // Revert on validation failure
156
- return false;
157
- }
158
- // Mark as dirty if value changed
159
- this.state.isDirty = this.state.value !== this.state.originalValue;
160
- this.state.isEditing = false;
161
- this.state.lifecycleState = CellLifecycleState.DISPLAY;
162
- this.state.lastModified = new Date();
163
- // Save to history
164
- this.saveToHistory();
165
- // Call after save hook
166
- if (this.columnConfig.hooks?.onSave) {
167
- this.columnConfig.hooks.onSave(this.createEvent(parsedValue, previousValue));
168
- }
169
- // Call after edit hook
170
- if (this.columnConfig.hooks?.afterEdit) {
171
- this.columnConfig.hooks.afterEdit(this.createEvent(parsedValue));
172
- }
173
- return true;
174
- }
175
- /**
176
- * Cancel edit and revert to previous value
177
- */
178
- cancelEdit() {
179
- if (!this.state.isEditing) {
180
- return;
181
- }
182
- // Revert to previous value
183
- if (this.state.previousValue !== undefined) {
184
- this.state.value = this.state.previousValue;
185
- }
186
- this.state.isEditing = false;
187
- this.state.lifecycleState = CellLifecycleState.DISPLAY;
188
- this.state.error = undefined;
189
- this.state.errors = undefined;
190
- // Call cancel hook
191
- if (this.columnConfig.hooks?.onCancel) {
192
- this.columnConfig.hooks.onCancel(this.createEvent(this.state.value));
193
- }
194
- // Call after edit hook
195
- if (this.columnConfig.hooks?.afterEdit) {
196
- this.columnConfig.hooks.afterEdit(this.createEvent(this.state.value));
197
- }
198
- }
199
- /**
200
- * Reset cell to original value
201
- */
202
- reset() {
203
- if (this.state.originalValue !== undefined) {
204
- this.state.value = this.state.originalValue;
205
- this.state.isDirty = false;
206
- this.state.error = undefined;
207
- this.state.errors = undefined;
208
- this.state.isEditing = false;
209
- this.state.lifecycleState = CellLifecycleState.DISPLAY;
210
- }
211
- }
212
- /**
213
- * Check if cell can be edited
214
- */
215
- canEdit() {
216
- return (this.columnConfig.editable === true &&
217
- this.columnConfig.editMode !== EditMode.NONE &&
218
- canEdit(this.state));
219
- }
220
- /**
221
- * Check if cell is valid
222
- */
223
- isValid() {
224
- return isCellValid(this.state);
225
- }
226
- /**
227
- * Check if cell is dirty (modified)
228
- */
229
- isDirty() {
230
- return this.state.isDirty;
231
- }
232
- /**
233
- * Check if cell is in edit mode
234
- */
235
- isEditing() {
236
- return this.state.isEditing;
237
- }
238
- /**
239
- * Set focus state on this cell
240
- */
241
- focus() {
242
- this.state.isFocused = true;
243
- }
244
- /**
245
- * Remove focus from this cell
246
- */
247
- blur() {
248
- this.state.isFocused = false;
249
- }
250
- /**
251
- * Check if this cell is focused
252
- */
253
- isFocused() {
254
- return this.state.isFocused ?? false;
255
- }
256
- /**
257
- * Get current cell state (Memento pattern)
258
- */
259
- getState() {
260
- return { ...this.state };
261
- }
262
- /**
263
- * Restore cell state from snapshot (Memento pattern)
264
- */
265
- restoreState(state) {
266
- this.state = { ...state };
267
- }
268
- /**
269
- * Get column configuration (readonly access)
270
- */
271
- getColumnConfig() {
272
- return this.columnConfig;
273
- }
274
- /**
275
- * Get row data context
276
- */
277
- getRowData() {
278
- return this.rowData;
279
- }
280
- /**
281
- * Get row index
282
- */
283
- getRowIndex() {
284
- return this.rowIndex;
285
- }
286
- /**
287
- * Set loading state
288
- */
289
- setLoading(isLoading) {
290
- this.state.isLoading = isLoading;
291
- }
292
- /**
293
- * Set disabled state
294
- */
295
- setDisabled(isDisabled) {
296
- this.state.isDisabled = isDisabled;
297
- }
298
- /**
299
- * Set readonly state
300
- */
301
- setReadonly(isReadonly) {
302
- this.state.isReadonly = isReadonly;
303
- }
304
- /**
305
- * Save current state to history
306
- */
307
- saveToHistory() {
308
- // Remove any states after current position (for redo invalidation)
309
- this.history = this.history.slice(0, this.historyIndex + 1);
310
- // Add current state
311
- this.history.push(createMemento(this.state));
312
- this.historyIndex = this.history.length - 1;
313
- // Limit history size
314
- if (this.history.length > this.maxHistorySize) {
315
- this.history.shift();
316
- this.historyIndex--;
317
- }
318
- }
319
- /**
320
- * Undo last change
321
- */
322
- undo() {
323
- if (this.historyIndex > 0) {
324
- this.historyIndex--;
325
- const memento = this.history[this.historyIndex];
326
- this.state = restoreFromMemento(this.state, memento);
327
- return true;
328
- }
329
- return false;
330
- }
331
- /**
332
- * Redo last undone change
333
- */
334
- redo() {
335
- if (this.historyIndex < this.history.length - 1) {
336
- this.historyIndex++;
337
- const memento = this.history[this.historyIndex];
338
- this.state = restoreFromMemento(this.state, memento);
339
- return true;
340
- }
341
- return false;
342
- }
343
- /**
344
- * Check if undo is available
345
- */
346
- canUndo() {
347
- return this.historyIndex > 0;
348
- }
349
- /**
350
- * Check if redo is available
351
- */
352
- canRedo() {
353
- return this.historyIndex < this.history.length - 1;
354
- }
355
- /**
356
- * Create cell event for hooks
357
- */
358
- createEvent(value, previousValue) {
359
- return {
360
- value,
361
- previousValue: previousValue ?? this.state.previousValue,
362
- rowData: this.rowData,
363
- columnKey: this.columnConfig.key,
364
- rowIndex: this.rowIndex
365
- };
366
- }
367
- /**
368
- * Get cell metadata
369
- */
370
- getMetadata(key) {
371
- return this.state.metadata?.[key];
372
- }
373
- /**
374
- * Set cell metadata
375
- */
376
- setMetadata(key, value) {
377
- if (!this.state.metadata) {
378
- this.state.metadata = {};
379
- }
380
- this.state.metadata[key] = value;
381
- }
382
- /**
383
- * Clear all metadata
384
- */
385
- clearMetadata() {
386
- this.state.metadata = undefined;
387
- }
388
- }
389
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LXRhYmxlL3NyYy9saWIvcmVuZGVyZXIvbW9kZWxzL2NlbGwuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBR0gsT0FBTyxFQUFhLGVBQWUsRUFBb0IsYUFBYSxFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvSSxPQUFPLEVBQW9CLGtCQUFrQixFQUFhLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXBHOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sSUFBSTtJQW9DZixZQUNFLFlBQTZCLEVBQzdCLFlBQWUsRUFDZixPQUFhLEVBQ2IsUUFBaUI7UUFuQm5COztXQUVHO1FBQ0ssWUFBTyxHQUEwQixFQUFFLENBQUM7UUFFNUM7O1dBRUc7UUFDSyxpQkFBWSxHQUFXLENBQUMsQ0FBQyxDQUFDO1FBRWxDOztXQUVHO1FBQ2MsbUJBQWMsR0FBVyxFQUFFLENBQUM7UUFRM0MsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFFekIsZ0NBQWdDO1FBQ2hDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFFBQVEsQ0FBQyxLQUFRLEVBQUUsaUJBQTBCLEtBQUs7UUFDaEQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxL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LENBQUMsWUFBWSxDQUFDLEdBQUc7WUFDaEMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1NBQ3hCLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXLENBQUMsR0FBVztRQUNyQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVyxDQUFDLEdBQVcsRUFBRSxLQUFVO1FBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7U0FDMUI7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDbkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYTtRQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztJQUNsQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENlbGwgY2xhc3MgLSByZXByZXNlbnRzIGluZGl2aWR1YWwgY2VsbCBpbnN0YW5jZXNcbiAqIENvbWJpbmVzIENvbHVtbkNvbmZpZyAoRmx5d2VpZ2h0KSB3aXRoIENlbGxTdGF0ZSAodW5pcXVlIHBlciBpbnN0YW5jZSlcbiAqL1xuXG5pbXBvcnQgeyBDb2x1bW5Db25maWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29sdW1uLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ2VsbFN0YXRlLCBjcmVhdGVDZWxsU3RhdGUsIENlbGxTdGF0ZU1lbWVudG8sIGNyZWF0ZU1lbWVudG8sIHJlc3RvcmVGcm9tTWVtZW50bywgY2FuRWRpdCwgaXNDZWxsVmFsaWQgfSBmcm9tICcuL2NlbGwtc3RhdGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IFZhbGlkYXRpb25SZXN1bHQsIENlbGxMaWZlY3ljbGVTdGF0ZSwgQ2VsbEV2ZW50LCBFZGl0TW9kZSB9IGZyb20gJy4uLy4uL21vZGVscy9jZWxsLXR5cGVzJztcblxuLyoqXG4gKiBDZWxsIGNsYXNzIGltcGxlbWVudGluZyB0aGUgRmx5d2VpZ2h0IHBhdHRlcm5cbiAqIC0gUmVmZXJlbmNlcyBzaGFyZWQgQ29sdW1uQ29uZmlnIChGbHl3ZWlnaHQpXG4gKiAtIE93bnMgdW5pcXVlIENlbGxTdGF0ZSAoRmx5d2VpZ2h0IENvbnRleHQpXG4gKi9cbmV4cG9ydCBjbGFzcyBDZWxsPFQgPSBhbnk+IHtcbiAgLyoqXG4gICAqIFNoYXJlZCBjb2x1bW4gY29uZmlndXJhdGlvbiAoRmx5d2VpZ2h0IC0gcmVmZXJlbmNlIG9ubHksIG5vdCBvd25lZClcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgY29sdW1uQ29uZmlnOiBDb2x1bW5Db25maWc8VD47XG5cbiAgLyoqXG4gICAqIFVuaXF1ZSBjZWxsIHN0YXRlIChvd25lZCBieSB0aGlzIGluc3RhbmNlKVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0ZTogQ2VsbFN0YXRlPFQ+O1xuXG4gIC8qKlxuICAgKiBSb3cgZGF0YSBjb250ZXh0IChyZWZlcmVuY2UgdG8gcGFyZW50IHJvdyBkYXRhKVxuICAgKi9cbiAgcHJpdmF0ZSByb3dEYXRhPzogYW55O1xuXG4gIC8qKlxuICAgKiBSb3cgaW5kZXggaW4gdGFibGVcbiAgICovXG4gIHByaXZhdGUgcm93SW5kZXg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEhpc3Rvcnkgb2Ygc3RhdGUgbWVtZW50b3MgZm9yIHVuZG8vcmVkb1xuICAgKi9cbiAgcHJpdmF0ZSBoaXN0b3J5OiBDZWxsU3RhdGVNZW1lbnRvPFQ+W10gPSBbXTtcblxuICAvKipcbiAgICogQ3VycmVudCBwb3NpdGlvbiBpbiBoaXN0b3J5XG4gICAqL1xuICBwcml2YXRlIGhpc3RvcnlJbmRleDogbnVtYmVyID0gLTE7XG5cbiAgLyoqXG4gICAqIE1heGltdW0gaGlzdG9yeSBzaXplXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IG1heEhpc3RvcnlTaXplOiBudW1iZXIgPSAxMDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjb2x1bW5Db25maWc6IENvbHVtbkNvbmZpZzxUPixcbiAgICBpbml0aWFsVmFsdWU6IFQsXG4gICAgcm93RGF0YT86IGFueSxcbiAgICByb3dJbmRleD86IG51bWJlclxuICApIHtcbiAgICB0aGlzLmNvbHVtbkNvbmZpZyA9IGNvbHVtbkNvbmZpZztcbiAgICB0aGlzLnN0YXRlID0gY3JlYXRlQ2VsbFN0YXRlKGluaXRpYWxWYWx1ZSk7XG4gICAgdGhpcy5yb3dEYXRhID0gcm93RGF0YTtcbiAgICB0aGlzLnJvd0luZGV4ID0gcm93SW5kZXg7XG4gICAgXG4gICAgLy8gU2F2ZSBpbml0aWFsIHN0YXRlIHRvIGhpc3RvcnlcbiAgICB0aGlzLnNhdmVUb0hpc3RvcnkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY3VycmVudCBjZWxsIHZhbHVlXG4gICAqL1xuICBnZXRWYWx1ZSgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS52YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgY2VsbCB2YWx1ZVxuICAgKiBAcGFyYW0gdmFsdWUgTmV3IHZhbHVlXG4gICAqIEBwYXJhbSBza2lwVmFsaWRhdGlvbiBTa2lwIHZhbGlkYXRpb24gKHVzZWZ1bCBmb3IgcHJvZ3JhbW1hdGljIHNldHMpXG4gICAqL1xuICBzZXRWYWx1ZSh2YWx1ZTogVCwgc2tpcFZhbGlkYXRpb246IGJvb2xlYW4gPSBmYWxzZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHByZXZpb3VzVmFsdWUgPSB0aGlzLnN0YXRlLnZhbHVlO1xuXG4gICAgLy8gQ2FsbCBiZWZvcmUgY2hhbmdlIGhvb2tcbiAgICBpZiAodGhpcy5jb2x1bW5Db25maWcuaG9va3M/Lm9uQ2hhbmdlKSB7XG4gICAgICB0aGlzLmNvbHVtbkNvbmZpZy5ob29rcy5vbkNoYW5nZSh0aGlzLmNyZWF0ZUV2ZW50KHZhbHVlLCBwcmV2aW91c1ZhbHVlKSk7XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZS52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuc3RhdGUuaXNEaXJ0eSA9IHRydWU7XG4gICAgdGhpcy5zdGF0ZS5sYXN0TW9kaWZpZWQgPSBuZXcgRGF0ZSgpO1xuXG4gICAgLy8gVmFsaWRhdGUgaWYgbm90IHNraXBwZWRcbiAgICBpZiAoIXNraXBWYWxpZGF0aW9uKSB7XG4gICAgICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gdGhpcy52YWxpZGF0ZSgpO1xuICAgICAgaWYgKCF2YWxpZGF0aW9uUmVzdWx0LnZhbGlkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnNhdmVUb0hpc3RvcnkoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXIgY2VsbCB2YWx1ZSBhcyBmb3JtYXR0ZWQgc3RyaW5nIChkZWxlZ2F0ZXMgdG8gZm9ybWF0dGVyIHN0cmF0ZWd5KVxuICAgKi9cbiAgcmVuZGVyKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmNvbHVtbkNvbmZpZy5mb3JtYXR0ZXIpIHtcbiAgICAgIHJldHVybiBTdHJpbmcodGhpcy5zdGF0ZS52YWx1ZSA/PyAnJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29sdW1uQ29uZmlnLmZvcm1hdHRlci5mb3JtYXRXaXRoQ29udGV4dCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29sdW1uQ29uZmlnLmZvcm1hdHRlci5mb3JtYXRXaXRoQ29udGV4dChcbiAgICAgICAgdGhpcy5zdGF0ZS52YWx1ZSxcbiAgICAgICAgdGhpcy5yb3dEYXRhLFxuICAgICAgICB0aGlzLmNvbHVtbkNvbmZpZy5rZXlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlIGZvcm1hdCBtZXRob2QgZXhpc3RzIGJlZm9yZSBjYWxsaW5nIGl0XG4gICAgaWYgKHRoaXMuY29sdW1uQ29uZmlnLmZvcm1hdHRlci5mb3JtYXQpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbHVtbkNvbmZpZy5mb3JtYXR0ZXIuZm9ybWF0KHRoaXMuc3RhdGUudmFsdWUpO1xuICAgIH1cblxuICAgIC8vIEZhbGxiYWNrIGlmIGZvcm1hdHRlciBleGlzdHMgYnV0IGhhcyBubyBtZXRob2RzXG4gICAgcmV0dXJuIFN0cmluZyh0aGlzLnN0YXRlLnZhbHVlID8/ICcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBjZWxsIHZhbHVlIChkZWxlZ2F0ZXMgdG8gdmFsaWRhdG9yIHN0cmF0ZWd5KVxuICAgKi9cbiAgdmFsaWRhdGUoKTogVmFsaWRhdGlvblJlc3VsdCB7XG4gICAgLy8gQ2xlYXIgcHJldmlvdXMgZXJyb3JzXG4gICAgdGhpcy5zdGF0ZS5lcnJvciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnN0YXRlLmVycm9ycyA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnN0YXRlLmxhc3RWYWxpZGF0ZWQgPSBuZXcgRGF0ZSgpO1xuXG4gICAgaWYgKCF0aGlzLmNvbHVtbkNvbmZpZy52YWxpZGF0b3IpIHtcbiAgICAgIHJldHVybiB7IHZhbGlkOiB0cnVlIH07XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5jb2x1bW5Db25maWcudmFsaWRhdG9yLnZhbGlkYXRlV2l0aENvbnRleHRcbiAgICAgID8gdGhpcy5jb2x1bW5Db25maWcudmFsaWRhdG9yLnZhbGlkYXRlV2l0aENvbnRleHQoXG4gICAgICAgICAgdGhpcy5zdGF0ZS52YWx1ZSxcbiAgICAgICAgICB0aGlzLnJvd0RhdGEsXG4gICAgICAgICAgdGhpcy5jb2x1bW5Db25maWcua2V5XG4gICAgICAgIClcbiAgICAgIDogdGhpcy5jb2x1bW5Db25maWcudmFsaWRhdG9yLnZhbGlkYXRlKHRoaXMuc3RhdGUudmFsdWUpO1xuXG4gICAgaWYgKCFyZXN1bHQudmFsaWQpIHtcbiAgICAgIHRoaXMuc3RhdGUuZXJyb3IgPSByZXN1bHQuZXJyb3I7XG4gICAgICB0aGlzLnN0YXRlLmVycm9ycyA9IHJlc3VsdC5lcnJvcnM7XG4gICAgICB0aGlzLnN0YXRlLmxpZmVjeWNsZVN0YXRlID0gQ2VsbExpZmVjeWNsZVN0YXRlLkVSUk9SO1xuXG4gICAgICAvLyBDYWxsIHZhbGlkYXRpb24gZXJyb3IgaG9va1xuICAgICAgaWYgKHRoaXMuY29sdW1uQ29uZmlnLmhvb2tzPy5vblZhbGlkYXRpb25FcnJvcikge1xuICAgICAgICB0aGlzLmNvbHVtbkNvbmZpZy5ob29rcy5vblZhbGlkYXRpb25FcnJvcih0aGlzLmNyZWF0ZUV2ZW50KHRoaXMuc3RhdGUudmFsdWUpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IGVkaXQgbW9kZVxuICAgKi9cbiAgc3RhcnRFZGl0KCk6IGJvb2xlYW4ge1xuICAgIC8vIENoZWNrIGlmIGNlbGwgY2FuIGJlIGVkaXRlZFxuICAgIGlmICghdGhpcy5jYW5FZGl0KCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBDYWxsIGJlZm9yZSBlZGl0IGhvb2tcbiAgICBpZiAodGhpcy5jb2x1bW5Db25maWcuaG9va3M/LmJlZm9yZUVkaXQpIHtcbiAgICAgIHRoaXMuY29sdW1uQ29uZmlnLmhvb2tzLmJlZm9yZUVkaXQodGhpcy5jcmVhdGVFdmVudCh0aGlzLnN0YXRlLnZhbHVlKSk7XG4gICAgfVxuXG4gICAgLy8gU2F2ZSBjdXJyZW50IHZhbHVlIGFzIHByZXZpb3VzXG4gICAgdGhpcy5zdGF0ZS5wcmV2aW91c1ZhbHVlID0gdGhpcy5zdGF0ZS52YWx1ZTtcbiAgICB0aGlzLnN0YXRlLmlzRWRpdGluZyA9IHRydWU7XG4gICAgdGhpcy5zdGF0ZS5saWZlY3ljbGVTdGF0ZSA9IENlbGxMaWZlY3ljbGVTdGF0ZS5FRElUSU5HO1xuXG4gICAgLy8gQ2FsbCBvbiBlZGl0IGhvb2tcbiAgICBpZiAodGhpcy5jb2x1bW5Db25maWcuaG9va3M/Lm9uRWRpdCkge1xuICAgICAgdGhpcy5jb2x1bW5Db25maWcuaG9va3Mub25FZGl0KHRoaXMuY3JlYXRlRXZlbnQodGhpcy5zdGF0ZS52YWx1ZSkpO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmUgZWRpdGVkIHZhbHVlXG4gICAqIEBwYXJhbSBuZXdWYWx1ZSBUaGUgbmV3IHZhbHVlIGZyb20gZWRpdG9yXG4gICAqL1xuICBzYXZlRWRpdChuZXdWYWx1ZTogVCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5zdGF0ZS5pc0VkaXRpbmcpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBDYWxsIGJlZm9yZSBzYXZlIGhvb2tcbiAgICBpZiAodGhpcy5jb2x1bW5Db25maWcuaG9va3M/LmJlZm9yZVNhdmUpIHtcbiAgICAgIHRoaXMuY29sdW1uQ29uZmlnLmhvb2tzLmJlZm9yZVNhdmUodGhpcy5jcmVhdGVFdmVudChuZXdWYWx1ZSwgdGhpcy5zdGF0ZS5wcmV2aW91c1ZhbHVlKSk7XG4gICAgfVxuXG4gICAgLy8gUGFyc2UgdmFsdWUgaWYgcGFyc2VyIGlzIHByb3ZpZGVkXG4gICAgbGV0IHBhcnNlZFZhbHVlID0gbmV3VmFsdWU7XG4gICAgaWYgKHRoaXMuY29sdW1uQ29uZmlnLnBhcnNlcikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcGFyc2VkVmFsdWUgPSB0aGlzLmNvbHVtbkNvbmZpZy5wYXJzZXIucGFyc2UobmV3VmFsdWUpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy5zdGF0ZS5lcnJvciA9IGBGYWlsZWQgdG8gcGFyc2UgdmFsdWU6ICR7ZXJyb3J9YDtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlXG4gICAgY29uc3QgcHJldmlvdXNWYWx1ZSA9IHRoaXMuc3RhdGUudmFsdWU7XG4gICAgdGhpcy5zdGF0ZS52YWx1ZSA9IHBhcnNlZFZhbHVlO1xuICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSB0aGlzLnZhbGlkYXRlKCk7XG5cbiAgICBpZiAoIXZhbGlkYXRpb25SZXN1bHQudmFsaWQpIHtcbiAgICAgIHRoaXMuc3RhdGUudmFsdWUgPSBwcmV2aW91c1ZhbHVlOyAvLyBSZXZlcnQgb24gdmFsaWRhdGlvbiBmYWlsdXJlXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gTWFyayBhcyBkaXJ0eSBpZiB2YWx1ZSBjaGFuZ2VkXG4gICAgdGhpcy5zdGF0ZS5pc0RpcnR5ID0gdGhpcy5zdGF0ZS52YWx1ZSAhPT0gdGhpcy5zdGF0ZS5vcmlnaW5hbFZhbHVlO1xuICAgIHRoaXMuc3RhdGUuaXNFZGl0aW5nID0gZmFsc2U7XG4gICAgdGhpcy5zdGF0ZS5saWZlY3ljbGVTdGF0ZSA9IENlbGxMaWZlY3ljbGVTdGF0ZS5ESVNQTEFZO1xuICAgIHRoaXMuc3RhdGUubGFzdE1vZGlmaWVkID0gbmV3IERhdGUoKTtcblxuICAgIC8vIFNhdmUgdG8gaGlzdG9yeVxuICAgIHRoaXMuc2F2ZVRvSGlzdG9yeSgpO1xuXG4gICAgLy8gQ2FsbCBhZnRlciBzYXZlIGhvb2tcbiAgICBpZiAodGhpcy5jb2x1bW5Db25maWcuaG9va3M/Lm9uU2F2ZSkge1xuICAgICAgdGhpcy5jb2x1bW5Db25maWcuaG9va3Mub25TYXZlKHRoaXMuY3JlYXRlRXZlbnQocGFyc2VkVmFsdWUsIHByZXZpb3VzVmFsdWUpKTtcbiAgICB9XG5cbiAgICAvLyBDYWxsIGFmdGVyIGVkaXQgaG9va1xuICAgIGlmICh0aGlzLmNvbHVtbkNvbmZpZy5ob29rcz8uYWZ0ZXJFZGl0KSB7XG4gICAgICB0aGlzLmNvbHVtbkNvbmZpZy5ob29rcy5hZnRlckVkaXQodGhpcy5jcmVhdGVFdmVudChwYXJzZWRWYWx1ZSkpO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbmNlbCBlZGl0IGFuZCByZXZlcnQgdG8gcHJldmlvdXMgdmFsdWVcbiAgICovXG4gIGNhbmNlbEVkaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnN0YXRlLmlzRWRpdGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFJldmVydCB0byBwcmV2aW91cyB2YWx1ZVxuICAgIGlmICh0aGlzLnN0YXRlLnByZXZpb3VzVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5zdGF0ZS52YWx1ZSA9IHRoaXMuc3RhdGUucHJldmlvdXNWYWx1ZTtcbiAgICB9XG5cbiAgICB0aGlzLnN0YXRlLmlzRWRpdGluZyA9IGZhbHNlO1xuICAgIHRoaXMuc3RhdGUubGlmZWN5Y2xlU3RhdGUgPSBDZWxsTGlmZWN5Y2xlU3RhdGUuRElTUExBWTtcbiAgICB0aGlzLnN0YXRlLmVycm9yID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc3RhdGUuZXJyb3JzID0gdW5kZWZpbmVkO1xuXG4gICAgLy8gQ2FsbCBjYW5jZWwgaG9va1xuICAgIGlmICh0aGlzLmNvbHVtbkNvbmZpZy5ob29rcz8ub25DYW5jZWwpIHtcbiAgICAgIHRoaXMuY29sdW1uQ29uZmlnLmhvb2tzLm9uQ2FuY2VsKHRoaXMuY3JlYXRlRXZlbnQodGhpcy5zdGF0ZS52YWx1ZSkpO1xuICAgIH1cblxuICAgIC8vIENhbGwgYWZ0ZXIgZWRpdCBob29rXG4gICAgaWYgKHRoaXMuY29sdW1uQ29uZmlnLmhvb2tzPy5hZnRlckVkaXQpIHtcbiAgICAgIHRoaXMuY29sdW1uQ29uZmlnLmhvb2tzLmFmdGVyRWRpdCh0aGlzLmNyZWF0ZUV2ZW50KHRoaXMuc3RhdGUudmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgY2VsbCB0byBvcmlnaW5hbCB2YWx1ZVxuICAgKi9cbiAgcmVzZXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUub3JpZ2luYWxWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnN0YXRlLnZhbHVlID0gdGhpcy5zdGF0ZS5vcmlnaW5hbFZhbHVlO1xuICAgICAgdGhpcy5zdGF0ZS5pc0RpcnR5ID0gZmFsc2U7XG4gICAgICB0aGlzLnN0YXRlLmVycm9yID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5zdGF0ZS5lcnJvcnMgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnN0YXRlLmlzRWRpdGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5zdGF0ZS5saWZlY3ljbGVTdGF0ZSA9IENlbGxMaWZlY3ljbGVTdGF0ZS5ESVNQTEFZO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBjZWxsIGNhbiBiZSBlZGl0ZWRcbiAgICovXG4gIGNhbkVkaXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuY29sdW1uQ29uZmlnLmVkaXRhYmxlID09PSB0cnVlICYmXG4gICAgICB0aGlzLmNvbHVtbkNvbmZpZy5lZGl0TW9kZSAhPT0gRWRpdE1vZGUuTk9ORSAmJlxuICAgICAgY2FuRWRpdCh0aGlzLnN0YXRlKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgY2VsbCBpcyB2YWxpZFxuICAgKi9cbiAgaXNWYWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNDZWxsVmFsaWQodGhpcy5zdGF0ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgY2VsbCBpcyBkaXJ0eSAobW9kaWZpZWQpXG4gICAqL1xuICBpc0RpcnR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLmlzRGlydHk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgY2VsbCBpcyBpbiBlZGl0IG1vZGVcbiAgICovXG4gIGlzRWRpdGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5pc0VkaXRpbmc7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGZvY3VzIHN0YXRlIG9uIHRoaXMgY2VsbFxuICAgKi9cbiAgZm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZS5pc0ZvY3VzZWQgPSB0cnVlO1xuICB9XG4gIFxuICAvKipcbiAgICogUmVtb3ZlIGZvY3VzIGZyb20gdGhpcyBjZWxsXG4gICAqL1xuICBibHVyKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUuaXNGb2N1c2VkID0gZmFsc2U7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0aGlzIGNlbGwgaXMgZm9jdXNlZFxuICAgKi9cbiAgaXNGb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLmlzRm9jdXNlZCA/PyBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY3VycmVudCBjZWxsIHN0YXRlIChNZW1lbnRvIHBhdHRlcm4pXG4gICAqL1xuICBnZXRTdGF0ZSgpOiBDZWxsU3RhdGU8VD4ge1xuICAgIHJldHVybiB7IC4uLnRoaXMuc3RhdGUgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXN0b3JlIGNlbGwgc3RhdGUgZnJvbSBzbmFwc2hvdCAoTWVtZW50byBwYXR0ZXJuKVxuICAgKi9cbiAgcmVzdG9yZVN0YXRlKHN0YXRlOiBDZWxsU3RhdGU8VD4pOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlID0geyAuLi5zdGF0ZSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjb2x1bW4gY29uZmlndXJhdGlvbiAocmVhZG9ubHkgYWNjZXNzKVxuICAgKi9cbiAgZ2V0Q29sdW1uQ29uZmlnKCk6IFJlYWRvbmx5PENvbHVtbkNvbmZpZzxUPj4ge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbkNvbmZpZztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgcm93IGRhdGEgY29udGV4dFxuICAgKi9cbiAgZ2V0Um93RGF0YSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnJvd0RhdGE7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHJvdyBpbmRleFxuICAgKi9cbiAgZ2V0Um93SW5kZXgoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5yb3dJbmRleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgbG9hZGluZyBzdGF0ZVxuICAgKi9cbiAgc2V0TG9hZGluZyhpc0xvYWRpbmc6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlLmlzTG9hZGluZyA9IGlzTG9hZGluZztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgZGlzYWJsZWQgc3RhdGVcbiAgICovXG4gIHNldERpc2FibGVkKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlLmlzRGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCByZWFkb25seSBzdGF0ZVxuICAgKi9cbiAgc2V0UmVhZG9ubHkoaXNSZWFkb25seTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUuaXNSZWFkb25seSA9IGlzUmVhZG9ubHk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSBjdXJyZW50IHN0YXRlIHRvIGhpc3RvcnlcbiAgICovXG4gIHByaXZhdGUgc2F2ZVRvSGlzdG9yeSgpOiB2b2lkIHtcbiAgICAvLyBSZW1vdmUgYW55IHN0YXRlcyBhZnRlciBjdXJyZW50IHBvc2l0aW9uIChmb3IgcmVkbyBpbnZhbGlkYXRpb24pXG4gICAgdGhpcy5oaXN0b3J5ID0gdGhpcy5oaXN0b3J5LnNsaWNlKDAsIHRoaXMuaGlzdG9yeUluZGV4ICsgMSk7XG5cbiAgICAvLyBBZGQgY3VycmVudCBzdGF0ZVxuICAgIHRoaXMuaGlzdG9yeS5wdXNoKGNyZWF0ZU1lbWVudG8odGhpcy5zdGF0ZSkpO1xuICAgIHRoaXMuaGlzdG9yeUluZGV4ID0gdGhpcy5oaXN0b3J5Lmxlbmd0aCAtIDE7XG5cbiAgICAvLyBMaW1pdCBoaXN0b3J5IHNpemVcbiAgICBpZiAodGhpcy5oaXN0b3J5Lmxlbmd0aCA+IHRoaXMubWF4SGlzdG9yeVNpemUpIHtcbiAgICAgIHRoaXMuaGlzdG9yeS5zaGlmdCgpO1xuICAgICAgdGhpcy5oaXN0b3J5SW5kZXgtLTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVW5kbyBsYXN0IGNoYW5nZVxuICAgKi9cbiAgdW5kbygpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5oaXN0b3J5SW5kZXggPiAwKSB7XG4gICAgICB0aGlzLmhpc3RvcnlJbmRleC0tO1xuICAgICAgY29uc3QgbWVtZW50byA9IHRoaXMuaGlzdG9yeVt0aGlzLmhpc3RvcnlJbmRleF07XG4gICAgICB0aGlzLnN0YXRlID0gcmVzdG9yZUZyb21NZW1lbnRvKHRoaXMuc3RhdGUsIG1lbWVudG8pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWRvIGxhc3QgdW5kb25lIGNoYW5nZVxuICAgKi9cbiAgcmVkbygpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5oaXN0b3J5SW5kZXggPCB0aGlzLmhpc3RvcnkubGVuZ3RoIC0gMSkge1xuICAgICAgdGhpcy5oaXN0b3J5SW5kZXgrKztcbiAgICAgIGNvbnN0IG1lbWVudG8gPSB0aGlzLmhpc3RvcnlbdGhpcy5oaXN0b3J5SW5kZXhdO1xuICAgICAgdGhpcy5zdGF0ZSA9IHJlc3RvcmVGcm9tTWVtZW50byh0aGlzLnN0YXRlLCBtZW1lbnRvKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdW5kbyBpcyBhdmFpbGFibGVcbiAgICovXG4gIGNhblVuZG8oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGlzdG9yeUluZGV4ID4gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiByZWRvIGlzIGF2YWlsYWJsZVxuICAgKi9cbiAgY2FuUmVkbygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oaXN0b3J5SW5kZXggPCB0aGlzLmhpc3RvcnkubGVuZ3RoIC0gMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgY2VsbCBldmVudCBmb3IgaG9va3NcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlRXZlbnQodmFsdWU6IFQsIHByZXZpb3VzVmFsdWU/OiBUKTogQ2VsbEV2ZW50PFQ+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWUsXG4gICAgICBwcmV2aW91c1ZhbHVlOiBwcmV2aW91c1ZhbHVlID8/IHRoaXMuc3RhdGUucHJldmlvdXNWYWx1ZSxcbiAgICAgIHJvd0RhdGE6IHRoaXMucm93RGF0YSxcbiAgICAgIGNvbHVtbktleTogdGhpcy5jb2x1bW5Db25maWcua2V5LFxuICAgICAgcm93SW5kZXg6IHRoaXMucm93SW5kZXhcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjZWxsIG1ldGFkYXRhXG4gICAqL1xuICBnZXRNZXRhZGF0YShrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUubWV0YWRhdGE/LltrZXldO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBjZWxsIG1ldGFkYXRhXG4gICAqL1xuICBzZXRNZXRhZGF0YShrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zdGF0ZS5tZXRhZGF0YSkge1xuICAgICAgdGhpcy5zdGF0ZS5tZXRhZGF0YSA9IHt9O1xuICAgIH1cbiAgICB0aGlzLnN0YXRlLm1ldGFkYXRhW2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciBhbGwgbWV0YWRhdGFcbiAgICovXG4gIGNsZWFyTWV0YWRhdGEoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZS5tZXRhZGF0YSA9IHVuZGVmaW5lZDtcbiAgfVxufVxuXG4iXX0=
@@ -1,7 +0,0 @@
1
- /**
2
- * Row validation state interface
3
- * Represents an INVALID row with accumulated cell errors
4
- * Note: Valid rows are not stored - absence of a row state means the row is valid
5
- */
6
- export {};
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LXZhbGlkYXRpb24tc3RhdGUuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtdGFibGUvc3JjL2xpYi9yZW5kZXJlci9tb2RlbHMvcm93LXZhbGlkYXRpb24tc3RhdGUuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJvdyB2YWxpZGF0aW9uIHN0YXRlIGludGVyZmFjZVxuICogUmVwcmVzZW50cyBhbiBJTlZBTElEIHJvdyB3aXRoIGFjY3VtdWxhdGVkIGNlbGwgZXJyb3JzXG4gKiBOb3RlOiBWYWxpZCByb3dzIGFyZSBub3Qgc3RvcmVkIC0gYWJzZW5jZSBvZiBhIHJvdyBzdGF0ZSBtZWFucyB0aGUgcm93IGlzIHZhbGlkXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBSb3dWYWxpZGF0aW9uU3RhdGUge1xuICAvKipcbiAgICogSW5kZXggb2YgdGhlIHJvdyBpbiB0aGUgdGFibGVcbiAgICovXG4gIHJvd0luZGV4OiBudW1iZXI7XG4gIFxuICAvKipcbiAgICogQWx3YXlzIGZhbHNlIGZvciBzdG9yZWQgc3RhdGVzIChvbmx5IGludmFsaWQgcm93cyBhcmUgc3RvcmVkKVxuICAgKi9cbiAgaXNWYWxpZDogZmFsc2U7XG4gIFxuICAvKipcbiAgICogTnVtYmVyIG9mIGludmFsaWQgY2VsbHMgaW4gdGhlIHJvd1xuICAgKi9cbiAgaW52YWxpZENlbGxDb3VudDogbnVtYmVyO1xuICBcbiAgLyoqXG4gICAqIE1hcCBvZiBjb2x1bW4ga2V5cyB0byB2YWxpZGF0aW9uIGVycm9yIG1lc3NhZ2VzXG4gICAqL1xuICBjZWxsRXJyb3JzOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuICBcbiAgLyoqXG4gICAqIFRpbWVzdGFtcCBvZiB0aGUgbGFzdCB2YWxpZGF0aW9uXG4gICAqL1xuICBsYXN0VmFsaWRhdGVkOiBEYXRlO1xufVxuIl19
@@ -1,90 +0,0 @@
1
- /**
2
- * SheetState - Reactive state management for sheet operations
3
- * Wraps TableState and adds sheet-level state tracking
4
- */
5
- import { BehaviorSubject } from 'rxjs';
6
- import { TableState } from './table-state.class';
7
- /**
8
- * SheetState class - Manages sheet-level state and delegates table operations
9
- */
10
- export class SheetState {
11
- /**
12
- * Constructor
13
- * @param config Sheet state configuration
14
- * @param columns Reference to columns array for table state
15
- * @param tableStateConfig Optional table state configuration
16
- */
17
- constructor(config, columns, tableStateConfig) {
18
- this.id = config.id;
19
- this.name$ = new BehaviorSubject(config.name);
20
- // Initialize table state
21
- this.tableState = new TableState(columns, tableStateConfig);
22
- // Initialize metadata
23
- const now = new Date();
24
- this._metadata$ = new BehaviorSubject({
25
- createdAt: now,
26
- lastModified: now,
27
- lastAccessed: now
28
- });
29
- this.metadata$ = this._metadata$.asObservable();
30
- }
31
- /**
32
- * Update sheet name
33
- * @param name New sheet name
34
- */
35
- updateName(name) {
36
- this.name$.next(name);
37
- this.updateLastModified();
38
- }
39
- /**
40
- * Get current sheet name
41
- */
42
- getName() {
43
- return this.name$.value;
44
- }
45
- /**
46
- * Get complete state snapshot
47
- */
48
- getSnapshot() {
49
- return {
50
- id: this.id,
51
- name: this.name$.value,
52
- tableStateSnapshot: this.tableState.getState(),
53
- metadata: this._metadata$.value
54
- };
55
- }
56
- /**
57
- * Reset sheet state
58
- */
59
- reset() {
60
- this.tableState.reset();
61
- this.updateLastModified();
62
- }
63
- /**
64
- * Update last accessed timestamp
65
- */
66
- updateLastAccessed() {
67
- const currentMetadata = this._metadata$.value;
68
- this._metadata$.next({
69
- ...currentMetadata,
70
- lastAccessed: new Date()
71
- });
72
- }
73
- /**
74
- * Update last modified timestamp
75
- */
76
- updateLastModified() {
77
- const currentMetadata = this._metadata$.value;
78
- this._metadata$.next({
79
- ...currentMetadata,
80
- lastModified: new Date()
81
- });
82
- }
83
- /**
84
- * Get current metadata
85
- */
86
- getMetadata() {
87
- return this._metadata$.value;
88
- }
89
- }
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlZXQtc3RhdGUuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC10YWJsZS9zcmMvbGliL3JlbmRlcmVyL21vZGVscy9zaGVldC1zdGF0ZS5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUtqRDs7R0FFRztBQUNILE1BQU0sT0FBTyxVQUFVO0lBc0JyQjs7Ozs7T0FLRztJQUNILFlBQ0UsTUFBd0IsRUFDeEIsT0FBNEIsRUFDNUIsZ0JBQW1DO1FBRW5DLElBQUksQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksZUFBZSxDQUFTLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV0RCx5QkFBeUI7UUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUU1RCxzQkFBc0I7UUFDdEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksZUFBZSxDQUFnQjtZQUNuRCxTQUFTLEVBQUUsR0FBRztZQUNkLFlBQVksRUFBRSxHQUFHO1lBQ2pCLFlBQVksRUFBRSxHQUFHO1NBQ2xCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsVUFBVSxDQUFDLElBQVk7UUFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVztRQUNULE9BQU87WUFDTCxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLO1lBQ3RCLGtCQUFrQixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFO1lBQzlDLFFBQVEsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUs7U0FDaEMsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUs7UUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNILGtCQUFrQjtRQUNoQixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUM5QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNuQixHQUFHLGVBQWU7WUFDbEIsWUFBWSxFQUFFLElBQUksSUFBSSxFQUFFO1NBQ3pCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNLLGtCQUFrQjtRQUN4QixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUM5QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNuQixHQUFHLGVBQWU7WUFDbEIsWUFBWSxFQUFFLElBQUksSUFBSSxFQUFFO1NBQ3pCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO0lBQy9CLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2hlZXRTdGF0ZSAtIFJlYWN0aXZlIHN0YXRlIG1hbmFnZW1lbnQgZm9yIHNoZWV0IG9wZXJhdGlvbnNcbiAqIFdyYXBzIFRhYmxlU3RhdGUgYW5kIGFkZHMgc2hlZXQtbGV2ZWwgc3RhdGUgdHJhY2tpbmdcbiAqL1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRhYmxlU3RhdGUgfSBmcm9tICcuL3RhYmxlLXN0YXRlLmNsYXNzJztcbmltcG9ydCB7IFNoZWV0U3RhdGVDb25maWcsIFNoZWV0TWV0YWRhdGEsIFNoZWV0U3RhdGVTbmFwc2hvdCB9IGZyb20gJy4vc2hlZXQtc3RhdGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IENvbHVtbkNvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVscy9jb2x1bW4tY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBUYWJsZVN0YXRlQ29uZmlnIH0gZnJvbSAnLi90YWJsZS1zdGF0ZS5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIFNoZWV0U3RhdGUgY2xhc3MgLSBNYW5hZ2VzIHNoZWV0LWxldmVsIHN0YXRlIGFuZCBkZWxlZ2F0ZXMgdGFibGUgb3BlcmF0aW9uc1xuICovXG5leHBvcnQgY2xhc3MgU2hlZXRTdGF0ZSB7XG4gIC8qKlxuICAgKiBTaGVldCBpZGVudGl0eVxuICAgKi9cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSBzaGVldCBuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lJDogQmVoYXZpb3JTdWJqZWN0PHN0cmluZz47XG5cbiAgLyoqXG4gICAqIFRhYmxlIHN0YXRlIGluc3RhbmNlIChkZWxlZ2F0ZXMgdGFibGUgb3BlcmF0aW9ucylcbiAgICovXG4gIHJlYWRvbmx5IHRhYmxlU3RhdGU6IFRhYmxlU3RhdGU7XG5cbiAgLyoqXG4gICAqIFNoZWV0IG1ldGFkYXRhXG4gICAqL1xuICBwcml2YXRlIF9tZXRhZGF0YSQ6IEJlaGF2aW9yU3ViamVjdDxTaGVldE1ldGFkYXRhPjtcbiAgcmVhZG9ubHkgbWV0YWRhdGEkOiBPYnNlcnZhYmxlPFNoZWV0TWV0YWRhdGE+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0gY29uZmlnIFNoZWV0IHN0YXRlIGNvbmZpZ3VyYXRpb25cbiAgICogQHBhcmFtIGNvbHVtbnMgUmVmZXJlbmNlIHRvIGNvbHVtbnMgYXJyYXkgZm9yIHRhYmxlIHN0YXRlXG4gICAqIEBwYXJhbSB0YWJsZVN0YXRlQ29uZmlnIE9wdGlvbmFsIHRhYmxlIHN0YXRlIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNvbmZpZzogU2hlZXRTdGF0ZUNvbmZpZyxcbiAgICBjb2x1bW5zOiBDb2x1bW5Db25maWc8YW55PltdLFxuICAgIHRhYmxlU3RhdGVDb25maWc/OiBUYWJsZVN0YXRlQ29uZmlnXG4gICkge1xuICAgIHRoaXMuaWQgPSBjb25maWcuaWQ7XG4gICAgdGhpcy5uYW1lJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPihjb25maWcubmFtZSk7XG5cbiAgICAvLyBJbml0aWFsaXplIHRhYmxlIHN0YXRlXG4gICAgdGhpcy50YWJsZVN0YXRlID0gbmV3IFRhYmxlU3RhdGUoY29sdW1ucywgdGFibGVTdGF0ZUNvbmZpZyk7XG5cbiAgICAvLyBJbml0aWFsaXplIG1ldGFkYXRhXG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICB0aGlzLl9tZXRhZGF0YSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNoZWV0TWV0YWRhdGE+KHtcbiAgICAgIGNyZWF0ZWRBdDogbm93LFxuICAgICAgbGFzdE1vZGlmaWVkOiBub3csXG4gICAgICBsYXN0QWNjZXNzZWQ6IG5vd1xuICAgIH0pO1xuICAgIHRoaXMubWV0YWRhdGEkID0gdGhpcy5fbWV0YWRhdGEkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBzaGVldCBuYW1lXG4gICAqIEBwYXJhbSBuYW1lIE5ldyBzaGVldCBuYW1lXG4gICAqL1xuICB1cGRhdGVOYW1lKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubmFtZSQubmV4dChuYW1lKTtcbiAgICB0aGlzLnVwZGF0ZUxhc3RNb2RpZmllZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjdXJyZW50IHNoZWV0IG5hbWVcbiAgICovXG4gIGdldE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lJC52YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY29tcGxldGUgc3RhdGUgc25hcHNob3RcbiAgICovXG4gIGdldFNuYXBzaG90KCk6IFNoZWV0U3RhdGVTbmFwc2hvdCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgbmFtZTogdGhpcy5uYW1lJC52YWx1ZSxcbiAgICAgIHRhYmxlU3RhdGVTbmFwc2hvdDogdGhpcy50YWJsZVN0YXRlLmdldFN0YXRlKCksXG4gICAgICBtZXRhZGF0YTogdGhpcy5fbWV0YWRhdGEkLnZhbHVlXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCBzaGVldCBzdGF0ZVxuICAgKi9cbiAgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy50YWJsZVN0YXRlLnJlc2V0KCk7XG4gICAgdGhpcy51cGRhdGVMYXN0TW9kaWZpZWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgbGFzdCBhY2Nlc3NlZCB0aW1lc3RhbXBcbiAgICovXG4gIHVwZGF0ZUxhc3RBY2Nlc3NlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50TWV0YWRhdGEgPSB0aGlzLl9tZXRhZGF0YSQudmFsdWU7XG4gICAgdGhpcy5fbWV0YWRhdGEkLm5leHQoe1xuICAgICAgLi4uY3VycmVudE1ldGFkYXRhLFxuICAgICAgbGFzdEFjY2Vzc2VkOiBuZXcgRGF0ZSgpXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGxhc3QgbW9kaWZpZWQgdGltZXN0YW1wXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZUxhc3RNb2RpZmllZCgpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50TWV0YWRhdGEgPSB0aGlzLl9tZXRhZGF0YSQudmFsdWU7XG4gICAgdGhpcy5fbWV0YWRhdGEkLm5leHQoe1xuICAgICAgLi4uY3VycmVudE1ldGFkYXRhLFxuICAgICAgbGFzdE1vZGlmaWVkOiBuZXcgRGF0ZSgpXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGN1cnJlbnQgbWV0YWRhdGFcbiAgICovXG4gIGdldE1ldGFkYXRhKCk6IFNoZWV0TWV0YWRhdGEge1xuICAgIHJldHVybiB0aGlzLl9tZXRhZGF0YSQudmFsdWU7XG4gIH1cbn1cblxuIl19
@@ -1,5 +0,0 @@
1
- /**
2
- * Sheet state interfaces for state management
3
- */
4
- export {};
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlZXQtc3RhdGUuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtdGFibGUvc3JjL2xpYi9yZW5kZXJlci9tb2RlbHMvc2hlZXQtc3RhdGUuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTaGVldCBzdGF0ZSBpbnRlcmZhY2VzIGZvciBzdGF0ZSBtYW5hZ2VtZW50XG4gKi9cblxuaW1wb3J0IHsgVGFibGVTdGF0ZVNuYXBzaG90IH0gZnJvbSAnLi90YWJsZS10eXBlcyc7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBpbml0aWFsaXppbmcgU2hlZXRTdGF0ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNoZWV0U3RhdGVDb25maWcge1xuICAvKipcbiAgICogU2hlZXQgSURcbiAgICovXG4gIGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluaXRpYWwgc2hlZXQgbmFtZVxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFNoZWV0IG1ldGFkYXRhIHRyYWNraW5nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2hlZXRNZXRhZGF0YSB7XG4gIC8qKlxuICAgKiBXaGVuIHRoZSBzaGVldCB3YXMgY3JlYXRlZFxuICAgKi9cbiAgY3JlYXRlZEF0OiBEYXRlO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRoZSBzaGVldCB3YXMgbGFzdCBtb2RpZmllZFxuICAgKi9cbiAgbGFzdE1vZGlmaWVkOiBEYXRlO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRoZSBzaGVldCB3YXMgbGFzdCBhY2Nlc3NlZFxuICAgKi9cbiAgbGFzdEFjY2Vzc2VkOiBEYXRlO1xufVxuXG4vKipcbiAqIENvbXBsZXRlIHNuYXBzaG90IG9mIHNoZWV0IHN0YXRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2hlZXRTdGF0ZVNuYXBzaG90IHtcbiAgLyoqXG4gICAqIFNoZWV0IElEXG4gICAqL1xuICBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTaGVldCBuYW1lXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRhYmxlIHN0YXRlIHNuYXBzaG90XG4gICAqL1xuICB0YWJsZVN0YXRlU25hcHNob3Q6IFRhYmxlU3RhdGVTbmFwc2hvdDtcblxuICAvKipcbiAgICogU2hlZXQgbWV0YWRhdGFcbiAgICovXG4gIG1ldGFkYXRhOiBTaGVldE1ldGFkYXRhO1xufVxuXG4iXX0=