@ricsam/formula-engine 0.0.16 → 0.0.18

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 (122) hide show
  1. package/dist/cjs/core/api/api-builder.cjs +67 -0
  2. package/dist/cjs/core/api/api-builder.cjs.map +10 -0
  3. package/dist/cjs/core/api/api-helpers.cjs +191 -0
  4. package/dist/cjs/core/api/api-helpers.cjs.map +10 -0
  5. package/dist/cjs/core/api/api.cjs +65 -0
  6. package/dist/cjs/core/api/api.cjs.map +10 -0
  7. package/dist/cjs/core/api/cell-orm.cjs +80 -0
  8. package/dist/cjs/core/api/cell-orm.cjs.map +10 -0
  9. package/dist/cjs/core/api/table-orm.cjs +171 -0
  10. package/dist/cjs/core/api/table-orm.cjs.map +10 -0
  11. package/dist/cjs/core/autofill-utils.cjs +75 -39
  12. package/dist/cjs/core/autofill-utils.cjs.map +3 -3
  13. package/dist/cjs/core/cell-mover.cjs +178 -0
  14. package/dist/cjs/core/cell-mover.cjs.map +10 -0
  15. package/dist/cjs/core/commands/command-executor.cjs +140 -0
  16. package/dist/cjs/core/commands/command-executor.cjs.map +10 -0
  17. package/dist/cjs/core/commands/content-commands.cjs +574 -0
  18. package/dist/cjs/core/commands/content-commands.cjs.map +10 -0
  19. package/dist/cjs/core/commands/index.cjs +95 -0
  20. package/dist/cjs/core/commands/index.cjs.map +10 -0
  21. package/dist/cjs/core/commands/metadata-commands.cjs +150 -0
  22. package/dist/cjs/core/commands/metadata-commands.cjs.map +10 -0
  23. package/dist/cjs/core/commands/named-expression-commands.cjs +238 -0
  24. package/dist/cjs/core/commands/named-expression-commands.cjs.map +10 -0
  25. package/dist/cjs/core/commands/structure-commands.cjs +495 -0
  26. package/dist/cjs/core/commands/structure-commands.cjs.map +10 -0
  27. package/dist/cjs/core/commands/style-commands.cjs +219 -0
  28. package/dist/cjs/core/commands/style-commands.cjs.map +10 -0
  29. package/dist/cjs/core/commands/table-commands.cjs +226 -0
  30. package/dist/cjs/core/commands/table-commands.cjs.map +10 -0
  31. package/dist/cjs/core/commands/types.cjs +72 -0
  32. package/dist/cjs/core/commands/types.cjs.map +10 -0
  33. package/dist/cjs/core/engine.cjs +218 -263
  34. package/dist/cjs/core/engine.cjs.map +3 -3
  35. package/dist/cjs/core/managers/api-schema-manager.cjs +304 -0
  36. package/dist/cjs/core/managers/api-schema-manager.cjs.map +10 -0
  37. package/dist/cjs/core/managers/copy-manager.cjs +336 -82
  38. package/dist/cjs/core/managers/copy-manager.cjs.map +3 -3
  39. package/dist/cjs/core/managers/reference-manager.cjs +124 -0
  40. package/dist/cjs/core/managers/reference-manager.cjs.map +10 -0
  41. package/dist/cjs/core/managers/style-manager.cjs +115 -147
  42. package/dist/cjs/core/managers/style-manager.cjs.map +3 -3
  43. package/dist/cjs/core/managers/workbook-manager.cjs +87 -3
  44. package/dist/cjs/core/managers/workbook-manager.cjs.map +3 -3
  45. package/dist/cjs/core/types.cjs.map +1 -1
  46. package/dist/cjs/lib.cjs +13 -2
  47. package/dist/cjs/lib.cjs.map +3 -3
  48. package/dist/cjs/package.json +1 -1
  49. package/dist/mjs/core/api/api-builder.mjs +37 -0
  50. package/dist/mjs/core/api/api-builder.mjs.map +10 -0
  51. package/dist/mjs/core/api/api-helpers.mjs +161 -0
  52. package/dist/mjs/core/api/api-helpers.mjs.map +10 -0
  53. package/dist/mjs/core/api/api.mjs +35 -0
  54. package/dist/mjs/core/api/api.mjs.map +10 -0
  55. package/dist/mjs/core/api/cell-orm.mjs +49 -0
  56. package/dist/mjs/core/api/cell-orm.mjs.map +10 -0
  57. package/dist/mjs/core/api/table-orm.mjs +148 -0
  58. package/dist/mjs/core/api/table-orm.mjs.map +10 -0
  59. package/dist/mjs/core/autofill-utils.mjs +75 -39
  60. package/dist/mjs/core/autofill-utils.mjs.map +3 -3
  61. package/dist/mjs/core/cell-mover.mjs +148 -0
  62. package/dist/mjs/core/cell-mover.mjs.map +10 -0
  63. package/dist/mjs/core/commands/command-executor.mjs +109 -0
  64. package/dist/mjs/core/commands/command-executor.mjs.map +10 -0
  65. package/dist/mjs/core/commands/content-commands.mjs +544 -0
  66. package/dist/mjs/core/commands/content-commands.mjs.map +10 -0
  67. package/dist/mjs/core/commands/index.mjs +87 -0
  68. package/dist/mjs/core/commands/index.mjs.map +10 -0
  69. package/dist/mjs/core/commands/metadata-commands.mjs +120 -0
  70. package/dist/mjs/core/commands/metadata-commands.mjs.map +10 -0
  71. package/dist/mjs/core/commands/named-expression-commands.mjs +208 -0
  72. package/dist/mjs/core/commands/named-expression-commands.mjs.map +10 -0
  73. package/dist/mjs/core/commands/structure-commands.mjs +465 -0
  74. package/dist/mjs/core/commands/structure-commands.mjs.map +10 -0
  75. package/dist/mjs/core/commands/style-commands.mjs +189 -0
  76. package/dist/mjs/core/commands/style-commands.mjs.map +10 -0
  77. package/dist/mjs/core/commands/table-commands.mjs +196 -0
  78. package/dist/mjs/core/commands/table-commands.mjs.map +10 -0
  79. package/dist/mjs/core/commands/types.mjs +42 -0
  80. package/dist/mjs/core/commands/types.mjs.map +10 -0
  81. package/dist/mjs/core/engine.mjs +253 -263
  82. package/dist/mjs/core/engine.mjs.map +3 -3
  83. package/dist/mjs/core/managers/api-schema-manager.mjs +274 -0
  84. package/dist/mjs/core/managers/api-schema-manager.mjs.map +10 -0
  85. package/dist/mjs/core/managers/copy-manager.mjs +338 -82
  86. package/dist/mjs/core/managers/copy-manager.mjs.map +3 -3
  87. package/dist/mjs/core/managers/reference-manager.mjs +93 -0
  88. package/dist/mjs/core/managers/reference-manager.mjs.map +10 -0
  89. package/dist/mjs/core/managers/style-manager.mjs +115 -147
  90. package/dist/mjs/core/managers/style-manager.mjs.map +3 -3
  91. package/dist/mjs/core/managers/workbook-manager.mjs +87 -3
  92. package/dist/mjs/core/managers/workbook-manager.mjs.map +3 -3
  93. package/dist/mjs/core/types.mjs.map +1 -1
  94. package/dist/mjs/lib.mjs +13 -2
  95. package/dist/mjs/lib.mjs.map +3 -3
  96. package/dist/mjs/package.json +1 -1
  97. package/dist/types/core/api/api-builder.d.ts +16 -0
  98. package/dist/types/core/api/api-helpers.d.ts +37 -0
  99. package/dist/types/core/api/api.d.ts +83 -0
  100. package/dist/types/core/api/api.type-test.d.ts +1 -0
  101. package/dist/types/core/api/cell-orm.d.ts +29 -0
  102. package/dist/types/core/api/table-orm.d.ts +46 -0
  103. package/dist/types/core/autofill-utils.d.ts +6 -9
  104. package/dist/types/core/cell-mover.d.ts +63 -0
  105. package/dist/types/core/commands/command-executor.d.ts +83 -0
  106. package/dist/types/core/commands/content-commands.d.ts +142 -0
  107. package/dist/types/core/commands/index.d.ts +16 -0
  108. package/dist/types/core/commands/metadata-commands.d.ts +55 -0
  109. package/dist/types/core/commands/named-expression-commands.d.ts +115 -0
  110. package/dist/types/core/commands/structure-commands.d.ts +132 -0
  111. package/dist/types/core/commands/style-commands.d.ts +76 -0
  112. package/dist/types/core/commands/table-commands.d.ts +104 -0
  113. package/dist/types/core/commands/types.d.ts +114 -0
  114. package/dist/types/core/engine.d.ts +241 -23
  115. package/dist/types/core/managers/api-schema-manager.d.ts +121 -0
  116. package/dist/types/core/managers/copy-manager.d.ts +47 -2
  117. package/dist/types/core/managers/reference-manager.d.ts +54 -0
  118. package/dist/types/core/managers/style-manager.d.ts +6 -6
  119. package/dist/types/core/managers/workbook-manager.d.ts +39 -1
  120. package/dist/types/core/types.d.ts +52 -11
  121. package/dist/types/lib.d.ts +8 -0
  122. package/package.json +1 -1
@@ -0,0 +1,495 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropNames = Object.getOwnPropertyNames;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __moduleCache = /* @__PURE__ */ new WeakMap;
6
+ var __toCommonJS = (from) => {
7
+ var entry = __moduleCache.get(from), desc;
8
+ if (entry)
9
+ return entry;
10
+ entry = __defProp({}, "__esModule", { value: true });
11
+ if (from && typeof from === "object" || typeof from === "function")
12
+ __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
13
+ get: () => from[key],
14
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
15
+ }));
16
+ __moduleCache.set(from, entry);
17
+ return entry;
18
+ };
19
+ var __export = (target, all) => {
20
+ for (var name in all)
21
+ __defProp(target, name, {
22
+ get: all[name],
23
+ enumerable: true,
24
+ configurable: true,
25
+ set: (newValue) => all[name] = () => newValue
26
+ });
27
+ };
28
+
29
+ // src/core/commands/structure-commands.ts
30
+ var exports_structure_commands = {};
31
+ __export(exports_structure_commands, {
32
+ RenameWorkbookCommand: () => RenameWorkbookCommand,
33
+ RenameSheetCommand: () => RenameSheetCommand,
34
+ RemoveWorkbookCommand: () => RemoveWorkbookCommand,
35
+ RemoveSheetCommand: () => RemoveSheetCommand,
36
+ CloneWorkbookCommand: () => CloneWorkbookCommand,
37
+ AddWorkbookCommand: () => AddWorkbookCommand,
38
+ AddSheetCommand: () => AddSheetCommand
39
+ });
40
+ module.exports = __toCommonJS(exports_structure_commands);
41
+ var import_types = require("./types.cjs");
42
+
43
+ class AddWorkbookCommand {
44
+ deps;
45
+ workbookName;
46
+ requiresReevaluation = true;
47
+ constructor(deps, workbookName) {
48
+ this.deps = deps;
49
+ this.workbookName = workbookName;
50
+ }
51
+ execute() {
52
+ this.deps.workbookManager.addWorkbook(this.workbookName);
53
+ this.deps.namedExpressionManager.addWorkbook(this.workbookName);
54
+ this.deps.tableManager.addWorkbook(this.workbookName);
55
+ }
56
+ undo() {
57
+ this.deps.workbookManager.removeWorkbook(this.workbookName);
58
+ this.deps.namedExpressionManager.removeWorkbook(this.workbookName);
59
+ this.deps.tableManager.removeWorkbook(this.workbookName);
60
+ }
61
+ toAction() {
62
+ return {
63
+ type: import_types.ActionTypes.ADD_WORKBOOK,
64
+ payload: { workbookName: this.workbookName }
65
+ };
66
+ }
67
+ }
68
+ function captureWorkbookSnapshot(deps, workbookName) {
69
+ const workbook = deps.workbookManager.getWorkbooks().get(workbookName);
70
+ if (!workbook)
71
+ return;
72
+ const clonedSheets = new Map;
73
+ for (const [name, sheet] of workbook.sheets) {
74
+ clonedSheets.set(name, {
75
+ name: sheet.name,
76
+ index: sheet.index,
77
+ content: new Map(sheet.content),
78
+ metadata: new Map(sheet.metadata),
79
+ sheetMetadata: sheet.sheetMetadata
80
+ });
81
+ }
82
+ const namedExpressions = deps.namedExpressionManager.getNamedExpressions();
83
+ const snapshot = {
84
+ workbook: {
85
+ name: workbook.name,
86
+ sheets: clonedSheets,
87
+ workbookMetadata: workbook.workbookMetadata
88
+ },
89
+ namedExpressions: {
90
+ workbookLevel: new Map(namedExpressions.workbookExpressions.get(workbookName) || []),
91
+ sheetLevel: new Map
92
+ },
93
+ tables: new Map(deps.tableManager.getTables(workbookName)),
94
+ conditionalStyles: deps.styleManager.getAllConditionalStyles().filter((s) => s.areas.some((a) => a.workbookName === workbookName)),
95
+ cellStyles: deps.styleManager.getAllCellStyles().filter((s) => s.areas.some((a) => a.workbookName === workbookName))
96
+ };
97
+ const sheetExpressions = namedExpressions.sheetExpressions.get(workbookName);
98
+ if (sheetExpressions) {
99
+ for (const [sheetName, expressions] of sheetExpressions) {
100
+ snapshot.namedExpressions.sheetLevel.set(sheetName, new Map(expressions));
101
+ }
102
+ }
103
+ return snapshot;
104
+ }
105
+ function removeWorkbook(deps, workbookName) {
106
+ deps.workbookManager.removeWorkbook(workbookName);
107
+ deps.namedExpressionManager.removeWorkbook(workbookName);
108
+ deps.tableManager.removeWorkbook(workbookName);
109
+ deps.styleManager.removeWorkbookStyles(workbookName);
110
+ deps.referenceManager.invalidateWorkbook(workbookName);
111
+ }
112
+ function renameWorkbookAcrossManagers(deps, oldName, newName) {
113
+ deps.workbookManager.renameWorkbook({
114
+ workbookName: oldName,
115
+ newWorkbookName: newName
116
+ });
117
+ deps.namedExpressionManager.renameWorkbook({
118
+ workbookName: oldName,
119
+ newWorkbookName: newName
120
+ });
121
+ deps.tableManager.updateTablesForWorkbookRename({
122
+ workbookName: oldName,
123
+ newWorkbookName: newName
124
+ });
125
+ deps.styleManager.updateWorkbookName(oldName, newName);
126
+ deps.workbookManager.updateAllFormulas((formula) => deps.renameWorkbookInFormula({
127
+ formula,
128
+ oldWorkbookName: oldName,
129
+ newWorkbookName: newName
130
+ }));
131
+ deps.referenceManager.updateWorkbookName(oldName, newName);
132
+ deps.apiSchemaManager.updateForWorkbookRename(oldName, newName);
133
+ }
134
+ function renameSheetAcrossManagers(deps, opts) {
135
+ deps.workbookManager.renameSheet(opts);
136
+ deps.namedExpressionManager.renameSheet(opts);
137
+ deps.tableManager.updateTablesForSheetRename(opts);
138
+ deps.styleManager.updateSheetName(opts.workbookName, opts.sheetName, opts.newSheetName);
139
+ deps.workbookManager.updateAllFormulas((formula) => deps.renameSheetInFormula({
140
+ formula,
141
+ oldSheetName: opts.sheetName,
142
+ newSheetName: opts.newSheetName
143
+ }));
144
+ deps.referenceManager.updateSheetName(opts.workbookName, opts.sheetName, opts.newSheetName);
145
+ deps.apiSchemaManager.updateForSheetRename(opts.workbookName, opts.sheetName, opts.newSheetName);
146
+ }
147
+ function restoreTables(tableManager, tables, workbookName) {
148
+ for (const [tableName, table] of tables) {
149
+ tableManager.addTable({
150
+ workbookName,
151
+ tableName,
152
+ sheetName: table.sheetName,
153
+ start: `${String.fromCharCode(65 + table.start.colIndex)}${table.start.rowIndex + 1}`,
154
+ numRows: table.endRow,
155
+ numCols: table.headers.size,
156
+ getCellValue: () => {
157
+ return;
158
+ }
159
+ });
160
+ }
161
+ }
162
+ function restoreStyles(styleManager, conditionalStyles, cellStyles) {
163
+ for (const style of conditionalStyles) {
164
+ styleManager.addConditionalStyle(style);
165
+ }
166
+ for (const style of cellStyles) {
167
+ styleManager.addCellStyle(style);
168
+ }
169
+ }
170
+
171
+ class RemoveWorkbookCommand {
172
+ deps;
173
+ workbookName;
174
+ requiresReevaluation = true;
175
+ snapshot;
176
+ constructor(deps, workbookName) {
177
+ this.deps = deps;
178
+ this.workbookName = workbookName;
179
+ }
180
+ execute() {
181
+ this.snapshot = captureWorkbookSnapshot(this.deps, this.workbookName);
182
+ removeWorkbook(this.deps, this.workbookName);
183
+ }
184
+ undo() {
185
+ if (!this.snapshot)
186
+ return;
187
+ this.deps.workbookManager.addWorkbook(this.workbookName);
188
+ this.deps.namedExpressionManager.addWorkbook(this.workbookName);
189
+ this.deps.tableManager.addWorkbook(this.workbookName);
190
+ for (const [sheetName, sheet] of this.snapshot.workbook.sheets) {
191
+ this.deps.workbookManager.addSheet({
192
+ workbookName: this.workbookName,
193
+ sheetName
194
+ });
195
+ this.deps.namedExpressionManager.addSheet({
196
+ workbookName: this.workbookName,
197
+ sheetName
198
+ });
199
+ this.deps.workbookManager.setSheetContent({ workbookName: this.workbookName, sheetName }, sheet.content);
200
+ }
201
+ for (const [name, expr] of this.snapshot.namedExpressions.workbookLevel) {
202
+ this.deps.namedExpressionManager.addNamedExpression({
203
+ expressionName: name,
204
+ expression: expr.expression,
205
+ workbookName: this.workbookName
206
+ });
207
+ }
208
+ for (const [sheetName, expressions] of this.snapshot.namedExpressions.sheetLevel) {
209
+ for (const [name, expr] of expressions) {
210
+ this.deps.namedExpressionManager.addNamedExpression({
211
+ expressionName: name,
212
+ expression: expr.expression,
213
+ workbookName: this.workbookName,
214
+ sheetName
215
+ });
216
+ }
217
+ }
218
+ restoreTables(this.deps.tableManager, this.snapshot.tables, this.workbookName);
219
+ restoreStyles(this.deps.styleManager, this.snapshot.conditionalStyles, this.snapshot.cellStyles);
220
+ }
221
+ toAction() {
222
+ return {
223
+ type: import_types.ActionTypes.REMOVE_WORKBOOK,
224
+ payload: { workbookName: this.workbookName }
225
+ };
226
+ }
227
+ }
228
+
229
+ class RenameWorkbookCommand {
230
+ deps;
231
+ workbookName;
232
+ newWorkbookName;
233
+ requiresReevaluation = true;
234
+ constructor(deps, workbookName, newWorkbookName) {
235
+ this.deps = deps;
236
+ this.workbookName = workbookName;
237
+ this.newWorkbookName = newWorkbookName;
238
+ }
239
+ execute() {
240
+ renameWorkbookAcrossManagers(this.deps, this.workbookName, this.newWorkbookName);
241
+ }
242
+ undo() {
243
+ renameWorkbookAcrossManagers(this.deps, this.newWorkbookName, this.workbookName);
244
+ }
245
+ toAction() {
246
+ return {
247
+ type: import_types.ActionTypes.RENAME_WORKBOOK,
248
+ payload: {
249
+ workbookName: this.workbookName,
250
+ newWorkbookName: this.newWorkbookName
251
+ }
252
+ };
253
+ }
254
+ }
255
+
256
+ class CloneWorkbookCommand {
257
+ deps;
258
+ fromWorkbookName;
259
+ toWorkbookName;
260
+ requiresReevaluation = true;
261
+ constructor(deps, fromWorkbookName, toWorkbookName) {
262
+ this.deps = deps;
263
+ this.fromWorkbookName = fromWorkbookName;
264
+ this.toWorkbookName = toWorkbookName;
265
+ }
266
+ execute() {
267
+ const {
268
+ workbookManager,
269
+ namedExpressionManager,
270
+ tableManager,
271
+ styleManager,
272
+ renameWorkbookInFormula
273
+ } = this.deps;
274
+ const sourceWorkbook = workbookManager.getWorkbooks().get(this.fromWorkbookName);
275
+ if (!sourceWorkbook) {
276
+ throw new Error(`Source workbook "${this.fromWorkbookName}" not found`);
277
+ }
278
+ if (workbookManager.getWorkbooks().has(this.toWorkbookName)) {
279
+ throw new Error(`Target workbook "${this.toWorkbookName}" already exists`);
280
+ }
281
+ workbookManager.addWorkbook(this.toWorkbookName);
282
+ namedExpressionManager.addWorkbook(this.toWorkbookName);
283
+ tableManager.addWorkbook(this.toWorkbookName);
284
+ for (const [sheetName, sheet] of sourceWorkbook.sheets) {
285
+ workbookManager.addSheet({
286
+ workbookName: this.toWorkbookName,
287
+ sheetName
288
+ });
289
+ namedExpressionManager.addSheet({
290
+ workbookName: this.toWorkbookName,
291
+ sheetName
292
+ });
293
+ workbookManager.setSheetContent({ workbookName: this.toWorkbookName, sheetName }, new Map(sheet.content));
294
+ const targetSheet = workbookManager.getSheet({
295
+ workbookName: this.toWorkbookName,
296
+ sheetName
297
+ });
298
+ if (targetSheet) {
299
+ targetSheet.metadata = new Map(sheet.metadata);
300
+ if (sheet.sheetMetadata !== undefined) {
301
+ targetSheet.sheetMetadata = structuredClone(sheet.sheetMetadata);
302
+ }
303
+ }
304
+ }
305
+ const targetWorkbook = workbookManager.getWorkbooks().get(this.toWorkbookName);
306
+ if (targetWorkbook && sourceWorkbook.workbookMetadata !== undefined) {
307
+ targetWorkbook.workbookMetadata = structuredClone(sourceWorkbook.workbookMetadata);
308
+ }
309
+ const allExpressions = namedExpressionManager.getNamedExpressions();
310
+ const sourceWorkbookExpressions = allExpressions.workbookExpressions.get(this.fromWorkbookName);
311
+ if (sourceWorkbookExpressions) {
312
+ for (const [expressionName, expression] of sourceWorkbookExpressions) {
313
+ namedExpressionManager.addNamedExpression({
314
+ expressionName,
315
+ expression: expression.expression,
316
+ workbookName: this.toWorkbookName
317
+ });
318
+ }
319
+ }
320
+ const sourceSheetExpressions = allExpressions.sheetExpressions.get(this.fromWorkbookName);
321
+ if (sourceSheetExpressions) {
322
+ for (const [sheetName, sheetExpressions] of sourceSheetExpressions) {
323
+ for (const [expressionName, expression] of sheetExpressions) {
324
+ namedExpressionManager.addNamedExpression({
325
+ expressionName,
326
+ expression: expression.expression,
327
+ workbookName: this.toWorkbookName,
328
+ sheetName
329
+ });
330
+ }
331
+ }
332
+ }
333
+ const sourceTables = tableManager.tables.get(this.fromWorkbookName);
334
+ if (sourceTables) {
335
+ for (const [tableName] of sourceTables) {
336
+ tableManager.copyTable({ workbookName: this.fromWorkbookName, tableName }, { workbookName: this.toWorkbookName, tableName });
337
+ }
338
+ }
339
+ const allConditionalStyles = styleManager.getAllConditionalStyles();
340
+ for (const style of allConditionalStyles) {
341
+ if (style.areas.some((area) => area.workbookName === this.fromWorkbookName)) {
342
+ const newStyle = {
343
+ ...style,
344
+ areas: style.areas.map((area) => area.workbookName === this.fromWorkbookName ? { ...area, workbookName: this.toWorkbookName } : area)
345
+ };
346
+ styleManager.addConditionalStyle(newStyle);
347
+ }
348
+ }
349
+ const allCellStyles = styleManager.getAllCellStyles();
350
+ for (const style of allCellStyles) {
351
+ if (style.areas.some((area) => area.workbookName === this.fromWorkbookName)) {
352
+ const newStyle = {
353
+ ...style,
354
+ areas: style.areas.map((area) => area.workbookName === this.fromWorkbookName ? { ...area, workbookName: this.toWorkbookName } : area)
355
+ };
356
+ styleManager.addCellStyle(newStyle);
357
+ }
358
+ }
359
+ workbookManager.updateFormulasForWorkbook(this.toWorkbookName, (formula) => renameWorkbookInFormula({
360
+ formula,
361
+ oldWorkbookName: this.fromWorkbookName,
362
+ newWorkbookName: this.toWorkbookName
363
+ }));
364
+ }
365
+ undo() {
366
+ removeWorkbook(this.deps, this.toWorkbookName);
367
+ }
368
+ toAction() {
369
+ return {
370
+ type: import_types.ActionTypes.CLONE_WORKBOOK,
371
+ payload: {
372
+ fromWorkbookName: this.fromWorkbookName,
373
+ toWorkbookName: this.toWorkbookName
374
+ }
375
+ };
376
+ }
377
+ }
378
+
379
+ class AddSheetCommand {
380
+ deps;
381
+ opts;
382
+ requiresReevaluation = true;
383
+ constructor(deps, opts) {
384
+ this.deps = deps;
385
+ this.opts = opts;
386
+ }
387
+ execute() {
388
+ this.deps.workbookManager.addSheet(this.opts);
389
+ this.deps.namedExpressionManager.addSheet(this.opts);
390
+ }
391
+ undo() {
392
+ this.deps.workbookManager.removeSheet(this.opts);
393
+ this.deps.namedExpressionManager.removeSheet(this.opts);
394
+ }
395
+ toAction() {
396
+ return {
397
+ type: import_types.ActionTypes.ADD_SHEET,
398
+ payload: this.opts
399
+ };
400
+ }
401
+ }
402
+
403
+ class RemoveSheetCommand {
404
+ deps;
405
+ opts;
406
+ requiresReevaluation = true;
407
+ snapshot;
408
+ constructor(deps, opts) {
409
+ this.deps = deps;
410
+ this.opts = opts;
411
+ }
412
+ execute() {
413
+ const sheet = this.deps.workbookManager.getSheet(this.opts);
414
+ if (sheet) {
415
+ const namedExpressions = this.deps.namedExpressionManager.getNamedExpressions();
416
+ const sheetExpressions = namedExpressions.sheetExpressions.get(this.opts.workbookName)?.get(this.opts.sheetName) || new Map;
417
+ const allTables = this.deps.tableManager.getTables(this.opts.workbookName);
418
+ const sheetTables = new Map;
419
+ for (const [name, table] of allTables) {
420
+ if (table.sheetName === this.opts.sheetName) {
421
+ sheetTables.set(name, table);
422
+ }
423
+ }
424
+ this.snapshot = {
425
+ sheet: {
426
+ name: sheet.name,
427
+ index: sheet.index,
428
+ content: new Map(sheet.content),
429
+ metadata: new Map(sheet.metadata),
430
+ sheetMetadata: sheet.sheetMetadata
431
+ },
432
+ namedExpressions: new Map(sheetExpressions),
433
+ tables: sheetTables,
434
+ conditionalStyles: this.deps.styleManager.getAllConditionalStyles().filter((s) => s.areas.some((a) => a.workbookName === this.opts.workbookName && a.sheetName === this.opts.sheetName)),
435
+ cellStyles: this.deps.styleManager.getAllCellStyles().filter((s) => s.areas.some((a) => a.workbookName === this.opts.workbookName && a.sheetName === this.opts.sheetName))
436
+ };
437
+ }
438
+ this.deps.workbookManager.removeSheet(this.opts);
439
+ this.deps.namedExpressionManager.removeSheet(this.opts);
440
+ this.deps.tableManager.removeSheet(this.opts);
441
+ this.deps.styleManager.removeSheetStyles(this.opts.workbookName, this.opts.sheetName);
442
+ this.deps.referenceManager.invalidateSheet(this.opts.workbookName, this.opts.sheetName);
443
+ }
444
+ undo() {
445
+ if (!this.snapshot)
446
+ return;
447
+ this.deps.workbookManager.addSheet(this.opts);
448
+ this.deps.namedExpressionManager.addSheet(this.opts);
449
+ this.deps.workbookManager.setSheetContent(this.opts, this.snapshot.sheet.content);
450
+ for (const [name, expr] of this.snapshot.namedExpressions) {
451
+ this.deps.namedExpressionManager.addNamedExpression({
452
+ expressionName: name,
453
+ expression: expr.expression,
454
+ workbookName: this.opts.workbookName,
455
+ sheetName: this.opts.sheetName
456
+ });
457
+ }
458
+ restoreTables(this.deps.tableManager, this.snapshot.tables, this.opts.workbookName);
459
+ restoreStyles(this.deps.styleManager, this.snapshot.conditionalStyles, this.snapshot.cellStyles);
460
+ }
461
+ toAction() {
462
+ return {
463
+ type: import_types.ActionTypes.REMOVE_SHEET,
464
+ payload: this.opts
465
+ };
466
+ }
467
+ }
468
+
469
+ class RenameSheetCommand {
470
+ deps;
471
+ opts;
472
+ requiresReevaluation = true;
473
+ constructor(deps, opts) {
474
+ this.deps = deps;
475
+ this.opts = opts;
476
+ }
477
+ execute() {
478
+ renameSheetAcrossManagers(this.deps, this.opts);
479
+ }
480
+ undo() {
481
+ renameSheetAcrossManagers(this.deps, {
482
+ workbookName: this.opts.workbookName,
483
+ sheetName: this.opts.newSheetName,
484
+ newSheetName: this.opts.sheetName
485
+ });
486
+ }
487
+ toAction() {
488
+ return {
489
+ type: import_types.ActionTypes.RENAME_SHEET,
490
+ payload: this.opts
491
+ };
492
+ }
493
+ }
494
+
495
+ //# debugId=554A345527A0A48864756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/core/commands/structure-commands.ts"],
4
+ "sourcesContent": [
5
+ "/**\n * Structure Commands - Commands that modify workbook/sheet structure\n *\n * These commands all require re-evaluation after execution.\n */\n\nimport type { ApiSchemaManager } from \"../managers/api-schema-manager.cjs\";\nimport type { NamedExpressionManager } from \"../managers/named-expression-manager.cjs\";\nimport type { ReferenceManager } from \"../managers/reference-manager.cjs\";\nimport type { StyleManager } from \"../managers/style-manager.cjs\";\nimport type { TableManager } from \"../managers/table-manager.cjs\";\nimport type { WorkbookManager } from \"../managers/workbook-manager.cjs\";\nimport type {\n ConditionalStyle,\n DirectCellStyle,\n NamedExpression,\n Sheet,\n TableDefinition,\n Workbook,\n} from \"../types.cjs\";\nimport type { EngineAction, EngineCommand } from \"./types.cjs\";\nimport { ActionTypes } from \"./types.cjs\";\n\n/**\n * Dependencies needed for structure commands.\n */\nexport interface StructureCommandDeps {\n workbookManager: WorkbookManager;\n namedExpressionManager: NamedExpressionManager;\n tableManager: TableManager;\n styleManager: StyleManager;\n referenceManager: ReferenceManager;\n apiSchemaManager: ApiSchemaManager;\n renameSheetInFormula: (opts: {\n formula: string;\n oldSheetName: string;\n newSheetName: string;\n }) => string;\n renameWorkbookInFormula: (opts: {\n formula: string;\n oldWorkbookName: string;\n newWorkbookName: string;\n }) => string;\n}\n\n// ============================================================================\n// Workbook Commands\n// ============================================================================\n\n/**\n * Command to add a workbook.\n */\nexport class AddWorkbookCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n\n constructor(\n private deps: StructureCommandDeps,\n private workbookName: string\n ) {}\n\n execute(): void {\n this.deps.workbookManager.addWorkbook(this.workbookName);\n this.deps.namedExpressionManager.addWorkbook(this.workbookName);\n this.deps.tableManager.addWorkbook(this.workbookName);\n }\n\n undo(): void {\n this.deps.workbookManager.removeWorkbook(this.workbookName);\n this.deps.namedExpressionManager.removeWorkbook(this.workbookName);\n this.deps.tableManager.removeWorkbook(this.workbookName);\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.ADD_WORKBOOK,\n payload: { workbookName: this.workbookName },\n };\n }\n}\n\n/**\n * Captured state of a workbook for undo purposes.\n */\ninterface WorkbookSnapshot {\n workbook: Workbook;\n namedExpressions: {\n workbookLevel: Map<string, NamedExpression>;\n sheetLevel: Map<string, Map<string, NamedExpression>>;\n };\n tables: Map<string, TableDefinition>;\n conditionalStyles: ConditionalStyle[];\n cellStyles: DirectCellStyle[];\n}\n\n/**\n * Capture the full state of a workbook for later restoration.\n */\nfunction captureWorkbookSnapshot(\n deps: StructureCommandDeps,\n workbookName: string\n): WorkbookSnapshot | undefined {\n const workbook = deps.workbookManager.getWorkbooks().get(workbookName);\n if (!workbook) return undefined;\n\n // Deep clone workbook sheets\n const clonedSheets = new Map<string, Sheet>();\n for (const [name, sheet] of workbook.sheets) {\n clonedSheets.set(name, {\n name: sheet.name,\n index: sheet.index,\n content: new Map(sheet.content),\n metadata: new Map(sheet.metadata),\n sheetMetadata: sheet.sheetMetadata,\n });\n }\n\n const namedExpressions = deps.namedExpressionManager.getNamedExpressions();\n\n const snapshot: WorkbookSnapshot = {\n workbook: {\n name: workbook.name,\n sheets: clonedSheets,\n workbookMetadata: workbook.workbookMetadata,\n },\n namedExpressions: {\n workbookLevel: new Map(\n namedExpressions.workbookExpressions.get(workbookName) || []\n ),\n sheetLevel: new Map(),\n },\n tables: new Map(deps.tableManager.getTables(workbookName)),\n conditionalStyles: deps.styleManager\n .getAllConditionalStyles()\n .filter((s) => s.areas.some((a) => a.workbookName === workbookName)),\n cellStyles: deps.styleManager\n .getAllCellStyles()\n .filter((s) => s.areas.some((a) => a.workbookName === workbookName)),\n };\n\n // Capture sheet-level named expressions\n const sheetExpressions = namedExpressions.sheetExpressions.get(workbookName);\n if (sheetExpressions) {\n for (const [sheetName, expressions] of sheetExpressions) {\n snapshot.namedExpressions.sheetLevel.set(sheetName, new Map(expressions));\n }\n }\n\n return snapshot;\n}\n\n/**\n * Remove a workbook and all its associated data.\n */\nfunction removeWorkbook(\n deps: StructureCommandDeps,\n workbookName: string\n): void {\n deps.workbookManager.removeWorkbook(workbookName);\n deps.namedExpressionManager.removeWorkbook(workbookName);\n deps.tableManager.removeWorkbook(workbookName);\n deps.styleManager.removeWorkbookStyles(workbookName);\n deps.referenceManager.invalidateWorkbook(workbookName);\n}\n\n/**\n * Rename a workbook across all managers.\n */\nfunction renameWorkbookAcrossManagers(\n deps: StructureCommandDeps,\n oldName: string,\n newName: string\n): void {\n deps.workbookManager.renameWorkbook({\n workbookName: oldName,\n newWorkbookName: newName,\n });\n deps.namedExpressionManager.renameWorkbook({\n workbookName: oldName,\n newWorkbookName: newName,\n });\n deps.tableManager.updateTablesForWorkbookRename({\n workbookName: oldName,\n newWorkbookName: newName,\n });\n deps.styleManager.updateWorkbookName(oldName, newName);\n deps.workbookManager.updateAllFormulas((formula) =>\n deps.renameWorkbookInFormula({\n formula,\n oldWorkbookName: oldName,\n newWorkbookName: newName,\n })\n );\n deps.referenceManager.updateWorkbookName(oldName, newName);\n deps.apiSchemaManager.updateForWorkbookRename(oldName, newName);\n}\n\n/**\n * Rename a sheet across all managers.\n */\nfunction renameSheetAcrossManagers(\n deps: StructureCommandDeps,\n opts: { workbookName: string; sheetName: string; newSheetName: string }\n): void {\n deps.workbookManager.renameSheet(opts);\n deps.namedExpressionManager.renameSheet(opts);\n deps.tableManager.updateTablesForSheetRename(opts);\n deps.styleManager.updateSheetName(\n opts.workbookName,\n opts.sheetName,\n opts.newSheetName\n );\n deps.workbookManager.updateAllFormulas((formula) =>\n deps.renameSheetInFormula({\n formula,\n oldSheetName: opts.sheetName,\n newSheetName: opts.newSheetName,\n })\n );\n deps.referenceManager.updateSheetName(\n opts.workbookName,\n opts.sheetName,\n opts.newSheetName\n );\n deps.apiSchemaManager.updateForSheetRename(\n opts.workbookName,\n opts.sheetName,\n opts.newSheetName\n );\n}\n\n/**\n * Restore tables from a snapshot.\n */\nfunction restoreTables(\n tableManager: TableManager,\n tables: Map<string, TableDefinition>,\n workbookName: string\n): void {\n for (const [tableName, table] of tables) {\n tableManager.addTable({\n workbookName,\n tableName,\n sheetName: table.sheetName,\n start: `${String.fromCharCode(65 + table.start.colIndex)}${\n table.start.rowIndex + 1\n }`,\n numRows: table.endRow,\n numCols: table.headers.size,\n getCellValue: () => undefined,\n });\n }\n}\n\n/**\n * Restore styles from a snapshot.\n */\nfunction restoreStyles(\n styleManager: StyleManager,\n conditionalStyles: ConditionalStyle[],\n cellStyles: DirectCellStyle[]\n): void {\n for (const style of conditionalStyles) {\n styleManager.addConditionalStyle(style);\n }\n for (const style of cellStyles) {\n styleManager.addCellStyle(style);\n }\n}\n\n/**\n * Command to remove a workbook.\n */\nexport class RemoveWorkbookCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private snapshot: WorkbookSnapshot | undefined;\n\n constructor(\n private deps: StructureCommandDeps,\n private workbookName: string\n ) {}\n\n execute(): void {\n this.snapshot = captureWorkbookSnapshot(this.deps, this.workbookName);\n removeWorkbook(this.deps, this.workbookName);\n }\n\n undo(): void {\n if (!this.snapshot) return;\n\n // Restore workbook structure\n this.deps.workbookManager.addWorkbook(this.workbookName);\n this.deps.namedExpressionManager.addWorkbook(this.workbookName);\n this.deps.tableManager.addWorkbook(this.workbookName);\n\n // Restore sheets\n for (const [sheetName, sheet] of this.snapshot.workbook.sheets) {\n this.deps.workbookManager.addSheet({\n workbookName: this.workbookName,\n sheetName,\n });\n this.deps.namedExpressionManager.addSheet({\n workbookName: this.workbookName,\n sheetName,\n });\n this.deps.workbookManager.setSheetContent(\n { workbookName: this.workbookName, sheetName },\n sheet.content\n );\n }\n\n // Restore named expressions\n for (const [name, expr] of this.snapshot.namedExpressions.workbookLevel) {\n this.deps.namedExpressionManager.addNamedExpression({\n expressionName: name,\n expression: expr.expression,\n workbookName: this.workbookName,\n });\n }\n for (const [sheetName, expressions] of this.snapshot.namedExpressions.sheetLevel) {\n for (const [name, expr] of expressions) {\n this.deps.namedExpressionManager.addNamedExpression({\n expressionName: name,\n expression: expr.expression,\n workbookName: this.workbookName,\n sheetName,\n });\n }\n }\n\n // Restore tables and styles\n restoreTables(this.deps.tableManager, this.snapshot.tables, this.workbookName);\n restoreStyles(this.deps.styleManager, this.snapshot.conditionalStyles, this.snapshot.cellStyles);\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.REMOVE_WORKBOOK,\n payload: { workbookName: this.workbookName },\n };\n }\n}\n\n/**\n * Command to rename a workbook.\n */\nexport class RenameWorkbookCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n\n constructor(\n private deps: StructureCommandDeps,\n private workbookName: string,\n private newWorkbookName: string\n ) {}\n\n execute(): void {\n renameWorkbookAcrossManagers(this.deps, this.workbookName, this.newWorkbookName);\n }\n\n undo(): void {\n renameWorkbookAcrossManagers(this.deps, this.newWorkbookName, this.workbookName);\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.RENAME_WORKBOOK,\n payload: {\n workbookName: this.workbookName,\n newWorkbookName: this.newWorkbookName,\n },\n };\n }\n}\n\n/**\n * Command to clone a workbook.\n * Undo simply removes the cloned workbook.\n */\nexport class CloneWorkbookCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n\n constructor(\n private deps: StructureCommandDeps,\n private fromWorkbookName: string,\n private toWorkbookName: string\n ) {}\n\n execute(): void {\n const {\n workbookManager,\n namedExpressionManager,\n tableManager,\n styleManager,\n renameWorkbookInFormula,\n } = this.deps;\n\n // Check if source workbook exists\n const sourceWorkbook = workbookManager\n .getWorkbooks()\n .get(this.fromWorkbookName);\n if (!sourceWorkbook) {\n throw new Error(`Source workbook \"${this.fromWorkbookName}\" not found`);\n }\n\n // Check if target workbook name already exists\n if (workbookManager.getWorkbooks().has(this.toWorkbookName)) {\n throw new Error(\n `Target workbook \"${this.toWorkbookName}\" already exists`\n );\n }\n\n // Create new workbook\n workbookManager.addWorkbook(this.toWorkbookName);\n namedExpressionManager.addWorkbook(this.toWorkbookName);\n tableManager.addWorkbook(this.toWorkbookName);\n\n // Clone all sheets from source workbook\n for (const [sheetName, sheet] of sourceWorkbook.sheets) {\n // Add sheet to target workbook\n workbookManager.addSheet({\n workbookName: this.toWorkbookName,\n sheetName: sheetName,\n });\n namedExpressionManager.addSheet({\n workbookName: this.toWorkbookName,\n sheetName: sheetName,\n });\n\n // Copy all cell content\n workbookManager.setSheetContent(\n { workbookName: this.toWorkbookName, sheetName: sheetName },\n new Map(sheet.content)\n );\n\n // Copy all cell metadata\n const targetSheet = workbookManager.getSheet({\n workbookName: this.toWorkbookName,\n sheetName: sheetName,\n });\n if (targetSheet) {\n targetSheet.metadata = new Map(sheet.metadata);\n\n // Copy sheet metadata\n if (sheet.sheetMetadata !== undefined) {\n targetSheet.sheetMetadata = structuredClone(sheet.sheetMetadata);\n }\n }\n }\n\n // Copy workbook metadata\n const targetWorkbook = workbookManager\n .getWorkbooks()\n .get(this.toWorkbookName);\n if (targetWorkbook && sourceWorkbook.workbookMetadata !== undefined) {\n targetWorkbook.workbookMetadata = structuredClone(\n sourceWorkbook.workbookMetadata\n );\n }\n\n // Clone workbook-scoped named expressions\n const allExpressions = namedExpressionManager.getNamedExpressions();\n const sourceWorkbookExpressions = allExpressions.workbookExpressions.get(\n this.fromWorkbookName\n );\n if (sourceWorkbookExpressions) {\n for (const [expressionName, expression] of sourceWorkbookExpressions) {\n namedExpressionManager.addNamedExpression({\n expressionName,\n expression: expression.expression,\n workbookName: this.toWorkbookName,\n });\n }\n }\n\n // Clone sheet-scoped named expressions\n const sourceSheetExpressions = allExpressions.sheetExpressions.get(\n this.fromWorkbookName\n );\n if (sourceSheetExpressions) {\n for (const [sheetName, sheetExpressions] of sourceSheetExpressions) {\n for (const [expressionName, expression] of sheetExpressions) {\n namedExpressionManager.addNamedExpression({\n expressionName,\n expression: expression.expression,\n workbookName: this.toWorkbookName,\n sheetName,\n });\n }\n }\n }\n\n // Clone tables\n const sourceTables = tableManager.tables.get(this.fromWorkbookName);\n if (sourceTables) {\n for (const [tableName] of sourceTables) {\n tableManager.copyTable(\n { workbookName: this.fromWorkbookName, tableName },\n { workbookName: this.toWorkbookName, tableName }\n );\n }\n }\n\n // Clone conditional styles\n const allConditionalStyles = styleManager.getAllConditionalStyles();\n for (const style of allConditionalStyles) {\n if (\n style.areas.some((area) => area.workbookName === this.fromWorkbookName)\n ) {\n const newStyle: ConditionalStyle = {\n ...style,\n areas: style.areas.map((area) =>\n area.workbookName === this.fromWorkbookName\n ? { ...area, workbookName: this.toWorkbookName }\n : area\n ),\n };\n styleManager.addConditionalStyle(newStyle);\n }\n }\n\n // Clone cell styles\n const allCellStyles = styleManager.getAllCellStyles();\n for (const style of allCellStyles) {\n if (\n style.areas.some((area) => area.workbookName === this.fromWorkbookName)\n ) {\n const newStyle: DirectCellStyle = {\n ...style,\n areas: style.areas.map((area) =>\n area.workbookName === this.fromWorkbookName\n ? { ...area, workbookName: this.toWorkbookName }\n : area\n ),\n };\n styleManager.addCellStyle(newStyle);\n }\n }\n\n // Update formulas in cloned workbook that reference the source workbook\n workbookManager.updateFormulasForWorkbook(this.toWorkbookName, (formula) =>\n renameWorkbookInFormula({\n formula,\n oldWorkbookName: this.fromWorkbookName,\n newWorkbookName: this.toWorkbookName,\n })\n );\n }\n\n undo(): void {\n // Undo clone = remove the cloned workbook\n removeWorkbook(this.deps, this.toWorkbookName);\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.CLONE_WORKBOOK,\n payload: {\n fromWorkbookName: this.fromWorkbookName,\n toWorkbookName: this.toWorkbookName,\n },\n };\n }\n}\n\n// ============================================================================\n// Sheet Commands\n// ============================================================================\n\n/**\n * Command to add a sheet.\n */\nexport class AddSheetCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n\n constructor(\n private deps: StructureCommandDeps,\n private opts: { workbookName: string; sheetName: string }\n ) {}\n\n execute(): void {\n this.deps.workbookManager.addSheet(this.opts);\n this.deps.namedExpressionManager.addSheet(this.opts);\n }\n\n undo(): void {\n this.deps.workbookManager.removeSheet(this.opts);\n this.deps.namedExpressionManager.removeSheet(this.opts);\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.ADD_SHEET,\n payload: this.opts,\n };\n }\n}\n\n/**\n * Captured state of a sheet for undo purposes.\n */\ninterface SheetSnapshot {\n sheet: Sheet;\n namedExpressions: Map<string, NamedExpression>;\n tables: Map<string, TableDefinition>;\n conditionalStyles: ConditionalStyle[];\n cellStyles: DirectCellStyle[];\n}\n\n/**\n * Command to remove a sheet.\n */\nexport class RemoveSheetCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private snapshot: SheetSnapshot | undefined;\n\n constructor(\n private deps: StructureCommandDeps,\n private opts: { workbookName: string; sheetName: string }\n ) {}\n\n execute(): void {\n // Capture sheet state before removal\n const sheet = this.deps.workbookManager.getSheet(this.opts);\n if (sheet) {\n const namedExpressions =\n this.deps.namedExpressionManager.getNamedExpressions();\n const sheetExpressions =\n namedExpressions.sheetExpressions\n .get(this.opts.workbookName)\n ?.get(this.opts.sheetName) || new Map();\n\n // Get tables on this sheet\n const allTables = this.deps.tableManager.getTables(\n this.opts.workbookName\n );\n const sheetTables = new Map<string, TableDefinition>();\n for (const [name, table] of allTables) {\n if (table.sheetName === this.opts.sheetName) {\n sheetTables.set(name, table);\n }\n }\n\n this.snapshot = {\n sheet: {\n name: sheet.name,\n index: sheet.index,\n content: new Map(sheet.content),\n metadata: new Map(sheet.metadata),\n sheetMetadata: sheet.sheetMetadata,\n },\n namedExpressions: new Map(sheetExpressions),\n tables: sheetTables,\n conditionalStyles: this.deps.styleManager\n .getAllConditionalStyles()\n .filter((s) =>\n s.areas.some(\n (a) =>\n a.workbookName === this.opts.workbookName &&\n a.sheetName === this.opts.sheetName\n )\n ),\n cellStyles: this.deps.styleManager\n .getAllCellStyles()\n .filter((s) =>\n s.areas.some(\n (a) =>\n a.workbookName === this.opts.workbookName &&\n a.sheetName === this.opts.sheetName\n )\n ),\n };\n }\n\n // Execute removal\n this.deps.workbookManager.removeSheet(this.opts);\n this.deps.namedExpressionManager.removeSheet(this.opts);\n this.deps.tableManager.removeSheet(this.opts);\n this.deps.styleManager.removeSheetStyles(\n this.opts.workbookName,\n this.opts.sheetName\n );\n this.deps.referenceManager.invalidateSheet(\n this.opts.workbookName,\n this.opts.sheetName\n );\n }\n\n undo(): void {\n if (!this.snapshot) return;\n\n // Restore sheet structure\n this.deps.workbookManager.addSheet(this.opts);\n this.deps.namedExpressionManager.addSheet(this.opts);\n this.deps.workbookManager.setSheetContent(this.opts, this.snapshot.sheet.content);\n\n // Restore named expressions\n for (const [name, expr] of this.snapshot.namedExpressions) {\n this.deps.namedExpressionManager.addNamedExpression({\n expressionName: name,\n expression: expr.expression,\n workbookName: this.opts.workbookName,\n sheetName: this.opts.sheetName,\n });\n }\n\n // Restore tables and styles\n restoreTables(this.deps.tableManager, this.snapshot.tables, this.opts.workbookName);\n restoreStyles(this.deps.styleManager, this.snapshot.conditionalStyles, this.snapshot.cellStyles);\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.REMOVE_SHEET,\n payload: this.opts,\n };\n }\n}\n\n/**\n * Command to rename a sheet.\n */\nexport class RenameSheetCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n\n constructor(\n private deps: StructureCommandDeps,\n private opts: {\n workbookName: string;\n sheetName: string;\n newSheetName: string;\n }\n ) {}\n\n execute(): void {\n renameSheetAcrossManagers(this.deps, this.opts);\n }\n\n undo(): void {\n renameSheetAcrossManagers(this.deps, {\n workbookName: this.opts.workbookName,\n sheetName: this.opts.newSheetName,\n newSheetName: this.opts.sheetName,\n });\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.RENAME_SHEET,\n payload: this.opts,\n };\n }\n}\n"
6
+ ],
7
+ "mappings": "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",
8
+ "debugId": "554A345527A0A48864756E2164756E21",
9
+ "names": []
10
+ }