@ricsam/formula-engine 0.0.17 → 0.0.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/core/api/api-builder.cjs +67 -0
- package/dist/cjs/core/api/api-builder.cjs.map +10 -0
- package/dist/cjs/core/api/api-helpers.cjs +191 -0
- package/dist/cjs/core/api/api-helpers.cjs.map +10 -0
- package/dist/cjs/core/api/api.cjs +65 -0
- package/dist/cjs/core/api/api.cjs.map +10 -0
- package/dist/cjs/core/api/cell-orm.cjs +80 -0
- package/dist/cjs/core/api/cell-orm.cjs.map +10 -0
- package/dist/cjs/core/api/table-orm.cjs +171 -0
- package/dist/cjs/core/api/table-orm.cjs.map +10 -0
- package/dist/cjs/core/autofill-utils.cjs +3 -5
- package/dist/cjs/core/autofill-utils.cjs.map +3 -3
- package/dist/cjs/core/commands/command-executor.cjs +140 -0
- package/dist/cjs/core/commands/command-executor.cjs.map +10 -0
- package/dist/cjs/core/commands/content-commands.cjs +574 -0
- package/dist/cjs/core/commands/content-commands.cjs.map +10 -0
- package/dist/cjs/core/commands/metadata-commands.cjs +150 -0
- package/dist/cjs/core/commands/metadata-commands.cjs.map +10 -0
- package/dist/cjs/core/commands/named-expression-commands.cjs +238 -0
- package/dist/cjs/core/commands/named-expression-commands.cjs.map +10 -0
- package/dist/cjs/core/commands/structure-commands.cjs +495 -0
- package/dist/cjs/core/commands/structure-commands.cjs.map +10 -0
- package/dist/cjs/core/commands/style-commands.cjs +219 -0
- package/dist/cjs/core/commands/style-commands.cjs.map +10 -0
- package/dist/cjs/core/commands/table-commands.cjs +226 -0
- package/dist/cjs/core/commands/table-commands.cjs.map +10 -0
- package/dist/cjs/core/commands/types.cjs +72 -0
- package/dist/cjs/core/commands/types.cjs.map +10 -0
- package/dist/cjs/core/engine.cjs +170 -297
- package/dist/cjs/core/engine.cjs.map +3 -3
- package/dist/cjs/core/managers/api-schema-manager.cjs +304 -0
- package/dist/cjs/core/managers/api-schema-manager.cjs.map +10 -0
- package/dist/cjs/core/managers/copy-manager.cjs +1 -2
- package/dist/cjs/core/managers/copy-manager.cjs.map +3 -3
- package/dist/cjs/core/types.cjs.map +2 -2
- package/dist/cjs/lib.cjs +13 -2
- package/dist/cjs/lib.cjs.map +3 -3
- package/dist/cjs/package.json +1 -1
- package/dist/mjs/core/api/api-builder.mjs +37 -0
- package/dist/mjs/core/api/api-builder.mjs.map +10 -0
- package/dist/mjs/core/api/api-helpers.mjs +161 -0
- package/dist/mjs/core/api/api-helpers.mjs.map +10 -0
- package/dist/mjs/core/api/api.mjs +35 -0
- package/dist/mjs/core/api/api.mjs.map +10 -0
- package/dist/mjs/core/api/cell-orm.mjs +49 -0
- package/dist/mjs/core/api/cell-orm.mjs.map +10 -0
- package/dist/mjs/core/api/table-orm.mjs +148 -0
- package/dist/mjs/core/api/table-orm.mjs.map +10 -0
- package/dist/mjs/core/autofill-utils.mjs +3 -5
- package/dist/mjs/core/autofill-utils.mjs.map +3 -3
- package/dist/mjs/core/commands/command-executor.mjs +109 -0
- package/dist/mjs/core/commands/command-executor.mjs.map +10 -0
- package/dist/mjs/core/commands/content-commands.mjs +544 -0
- package/dist/mjs/core/commands/content-commands.mjs.map +10 -0
- package/dist/mjs/core/commands/metadata-commands.mjs +120 -0
- package/dist/mjs/core/commands/metadata-commands.mjs.map +10 -0
- package/dist/mjs/core/commands/named-expression-commands.mjs +208 -0
- package/dist/mjs/core/commands/named-expression-commands.mjs.map +10 -0
- package/dist/mjs/core/commands/structure-commands.mjs +465 -0
- package/dist/mjs/core/commands/structure-commands.mjs.map +10 -0
- package/dist/mjs/core/commands/style-commands.mjs +189 -0
- package/dist/mjs/core/commands/style-commands.mjs.map +10 -0
- package/dist/mjs/core/commands/table-commands.mjs +196 -0
- package/dist/mjs/core/commands/table-commands.mjs.map +10 -0
- package/dist/mjs/core/commands/types.mjs +42 -0
- package/dist/mjs/core/commands/types.mjs.map +10 -0
- package/dist/mjs/core/engine.mjs +213 -297
- package/dist/mjs/core/engine.mjs.map +3 -3
- package/dist/mjs/core/managers/api-schema-manager.mjs +274 -0
- package/dist/mjs/core/managers/api-schema-manager.mjs.map +10 -0
- package/dist/mjs/core/managers/copy-manager.mjs +1 -2
- package/dist/mjs/core/managers/copy-manager.mjs.map +3 -3
- package/dist/mjs/core/types.mjs.map +2 -2
- package/dist/mjs/lib.mjs +13 -2
- package/dist/mjs/lib.mjs.map +3 -3
- package/dist/mjs/package.json +1 -1
- package/dist/types/core/api/api-builder.d.ts +16 -0
- package/dist/types/core/api/api-helpers.d.ts +37 -0
- package/dist/types/core/api/api.d.ts +83 -0
- package/dist/types/core/api/api.type-test.d.ts +1 -0
- package/dist/types/core/api/cell-orm.d.ts +29 -0
- package/dist/types/core/api/table-orm.d.ts +46 -0
- package/dist/types/core/autofill-utils.d.ts +2 -9
- package/dist/types/core/commands/command-executor.d.ts +83 -0
- package/dist/types/core/commands/content-commands.d.ts +142 -0
- package/dist/types/core/commands/metadata-commands.d.ts +55 -0
- package/dist/types/core/commands/named-expression-commands.d.ts +115 -0
- package/dist/types/core/commands/structure-commands.d.ts +132 -0
- package/dist/types/core/commands/style-commands.d.ts +76 -0
- package/dist/types/core/commands/table-commands.d.ts +104 -0
- package/dist/types/core/commands/types.d.ts +114 -0
- package/dist/types/core/engine.d.ts +130 -26
- package/dist/types/core/managers/api-schema-manager.d.ts +121 -0
- package/dist/types/core/types.d.ts +1 -1
- package/dist/types/lib.d.ts +8 -0
- package/package.json +1 -1
|
@@ -0,0 +1,219 @@
|
|
|
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/style-commands.ts
|
|
30
|
+
var exports_style_commands = {};
|
|
31
|
+
__export(exports_style_commands, {
|
|
32
|
+
RemoveConditionalStyleCommand: () => RemoveConditionalStyleCommand,
|
|
33
|
+
RemoveCellStyleCommand: () => RemoveCellStyleCommand,
|
|
34
|
+
ClearCellStylesCommand: () => ClearCellStylesCommand,
|
|
35
|
+
AddConditionalStyleCommand: () => AddConditionalStyleCommand,
|
|
36
|
+
AddCellStyleCommand: () => AddCellStyleCommand
|
|
37
|
+
});
|
|
38
|
+
module.exports = __toCommonJS(exports_style_commands);
|
|
39
|
+
var import_types = require("./types.cjs");
|
|
40
|
+
|
|
41
|
+
class AddConditionalStyleCommand {
|
|
42
|
+
styleManager;
|
|
43
|
+
style;
|
|
44
|
+
requiresReevaluation = false;
|
|
45
|
+
addedIndex = -1;
|
|
46
|
+
constructor(styleManager, style) {
|
|
47
|
+
this.styleManager = styleManager;
|
|
48
|
+
this.style = style;
|
|
49
|
+
}
|
|
50
|
+
execute() {
|
|
51
|
+
const allStyles = this.styleManager.getAllConditionalStyles();
|
|
52
|
+
this.addedIndex = allStyles.length;
|
|
53
|
+
this.styleManager.addConditionalStyle(this.style);
|
|
54
|
+
}
|
|
55
|
+
undo() {
|
|
56
|
+
const allStyles = this.styleManager.getAllConditionalStyles();
|
|
57
|
+
const workbookName = this.style.areas[0]?.workbookName;
|
|
58
|
+
if (workbookName) {
|
|
59
|
+
let workbookStyleIndex = 0;
|
|
60
|
+
for (let i = 0;i < allStyles.length; i++) {
|
|
61
|
+
const s = allStyles[i];
|
|
62
|
+
if (s?.areas.some((a) => a.workbookName === workbookName)) {
|
|
63
|
+
if (s === this.style || i === this.addedIndex) {
|
|
64
|
+
this.styleManager.removeConditionalStyle(workbookName, workbookStyleIndex);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
workbookStyleIndex++;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
toAction() {
|
|
73
|
+
return {
|
|
74
|
+
type: import_types.ActionTypes.ADD_CONDITIONAL_STYLE,
|
|
75
|
+
payload: { style: this.style }
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
class RemoveConditionalStyleCommand {
|
|
81
|
+
styleManager;
|
|
82
|
+
workbookName;
|
|
83
|
+
index;
|
|
84
|
+
requiresReevaluation = false;
|
|
85
|
+
removedStyle;
|
|
86
|
+
constructor(styleManager, workbookName, index) {
|
|
87
|
+
this.styleManager = styleManager;
|
|
88
|
+
this.workbookName = workbookName;
|
|
89
|
+
this.index = index;
|
|
90
|
+
}
|
|
91
|
+
execute() {
|
|
92
|
+
const allStyles = this.styleManager.getAllConditionalStyles();
|
|
93
|
+
const workbookStyles = allStyles.filter((s) => s.areas.some((a) => a.workbookName === this.workbookName));
|
|
94
|
+
this.removedStyle = workbookStyles[this.index];
|
|
95
|
+
this.styleManager.removeConditionalStyle(this.workbookName, this.index);
|
|
96
|
+
}
|
|
97
|
+
undo() {
|
|
98
|
+
if (!this.removedStyle)
|
|
99
|
+
return;
|
|
100
|
+
this.styleManager.addConditionalStyle(this.removedStyle);
|
|
101
|
+
}
|
|
102
|
+
toAction() {
|
|
103
|
+
return {
|
|
104
|
+
type: import_types.ActionTypes.REMOVE_CONDITIONAL_STYLE,
|
|
105
|
+
payload: {
|
|
106
|
+
workbookName: this.workbookName,
|
|
107
|
+
index: this.index
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
class AddCellStyleCommand {
|
|
114
|
+
styleManager;
|
|
115
|
+
style;
|
|
116
|
+
requiresReevaluation = false;
|
|
117
|
+
addedIndex = -1;
|
|
118
|
+
constructor(styleManager, style) {
|
|
119
|
+
this.styleManager = styleManager;
|
|
120
|
+
this.style = style;
|
|
121
|
+
}
|
|
122
|
+
execute() {
|
|
123
|
+
const allStyles = this.styleManager.getAllCellStyles();
|
|
124
|
+
this.addedIndex = allStyles.length;
|
|
125
|
+
this.styleManager.addCellStyle(this.style);
|
|
126
|
+
}
|
|
127
|
+
undo() {
|
|
128
|
+
const allStyles = this.styleManager.getAllCellStyles();
|
|
129
|
+
const workbookName = this.style.areas[0]?.workbookName;
|
|
130
|
+
if (workbookName) {
|
|
131
|
+
let workbookStyleIndex = 0;
|
|
132
|
+
for (let i = 0;i < allStyles.length; i++) {
|
|
133
|
+
const s = allStyles[i];
|
|
134
|
+
if (s?.areas.some((a) => a.workbookName === workbookName)) {
|
|
135
|
+
if (s === this.style || i === this.addedIndex) {
|
|
136
|
+
this.styleManager.removeCellStyle(workbookName, workbookStyleIndex);
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
workbookStyleIndex++;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
toAction() {
|
|
145
|
+
return {
|
|
146
|
+
type: import_types.ActionTypes.ADD_CELL_STYLE,
|
|
147
|
+
payload: { style: this.style }
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
class RemoveCellStyleCommand {
|
|
153
|
+
styleManager;
|
|
154
|
+
workbookName;
|
|
155
|
+
index;
|
|
156
|
+
requiresReevaluation = false;
|
|
157
|
+
removedStyle;
|
|
158
|
+
constructor(styleManager, workbookName, index) {
|
|
159
|
+
this.styleManager = styleManager;
|
|
160
|
+
this.workbookName = workbookName;
|
|
161
|
+
this.index = index;
|
|
162
|
+
}
|
|
163
|
+
execute() {
|
|
164
|
+
const allStyles = this.styleManager.getAllCellStyles();
|
|
165
|
+
const workbookStyles = allStyles.filter((s) => s.areas.some((a) => a.workbookName === this.workbookName));
|
|
166
|
+
this.removedStyle = workbookStyles[this.index];
|
|
167
|
+
this.styleManager.removeCellStyle(this.workbookName, this.index);
|
|
168
|
+
}
|
|
169
|
+
undo() {
|
|
170
|
+
if (!this.removedStyle)
|
|
171
|
+
return;
|
|
172
|
+
this.styleManager.addCellStyle(this.removedStyle);
|
|
173
|
+
}
|
|
174
|
+
toAction() {
|
|
175
|
+
return {
|
|
176
|
+
type: import_types.ActionTypes.REMOVE_CELL_STYLE,
|
|
177
|
+
payload: {
|
|
178
|
+
workbookName: this.workbookName,
|
|
179
|
+
index: this.index
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
class ClearCellStylesCommand {
|
|
186
|
+
styleManager;
|
|
187
|
+
range;
|
|
188
|
+
requiresReevaluation = false;
|
|
189
|
+
snapshot;
|
|
190
|
+
constructor(styleManager, range) {
|
|
191
|
+
this.styleManager = styleManager;
|
|
192
|
+
this.range = range;
|
|
193
|
+
}
|
|
194
|
+
execute() {
|
|
195
|
+
this.snapshot = {
|
|
196
|
+
conditionalStyles: this.styleManager.getConditionalStylesIntersectingWithRange(this.range),
|
|
197
|
+
cellStyles: this.styleManager.getStylesIntersectingWithRange(this.range)
|
|
198
|
+
};
|
|
199
|
+
this.styleManager.clearCellStyles(this.range);
|
|
200
|
+
}
|
|
201
|
+
undo() {
|
|
202
|
+
if (!this.snapshot)
|
|
203
|
+
return;
|
|
204
|
+
for (const style of this.snapshot.conditionalStyles) {
|
|
205
|
+
this.styleManager.addConditionalStyle(style);
|
|
206
|
+
}
|
|
207
|
+
for (const style of this.snapshot.cellStyles) {
|
|
208
|
+
this.styleManager.addCellStyle(style);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
toAction() {
|
|
212
|
+
return {
|
|
213
|
+
type: import_types.ActionTypes.CLEAR_CELL_STYLES,
|
|
214
|
+
payload: { range: this.range }
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
//# debugId=3BA09CD35A4191FC64756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/core/commands/style-commands.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * Style Commands - Commands that modify conditional and direct cell styles\n *\n * These commands do NOT require re-evaluation after execution.\n * They only affect styling, not cell values or formulas.\n */\n\nimport type { StyleManager } from \"../managers/style-manager.cjs\";\nimport type { ConditionalStyle, DirectCellStyle, RangeAddress } from \"../types.cjs\";\nimport type { EngineCommand, EngineAction } from \"./types.cjs\";\nimport { ActionTypes } from \"./types.cjs\";\n\n/**\n * Command to add a conditional style.\n */\nexport class AddConditionalStyleCommand implements EngineCommand {\n readonly requiresReevaluation = false;\n private addedIndex: number = -1;\n\n constructor(\n private styleManager: StyleManager,\n private style: ConditionalStyle\n ) {}\n\n execute(): void {\n // Track the index where it's added\n const allStyles = this.styleManager.getAllConditionalStyles();\n this.addedIndex = allStyles.length;\n this.styleManager.addConditionalStyle(this.style);\n }\n\n undo(): void {\n // Remove by finding and removing the style\n // Since we know the style object, we can find it\n const allStyles = this.styleManager.getAllConditionalStyles();\n const workbookName = this.style.areas[0]?.workbookName;\n if (workbookName) {\n // Find the index of this style in the workbook's styles\n let workbookStyleIndex = 0;\n for (let i = 0; i < allStyles.length; i++) {\n const s = allStyles[i];\n if (s?.areas.some((a) => a.workbookName === workbookName)) {\n if (s === this.style || i === this.addedIndex) {\n this.styleManager.removeConditionalStyle(workbookName, workbookStyleIndex);\n return;\n }\n workbookStyleIndex++;\n }\n }\n }\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.ADD_CONDITIONAL_STYLE,\n payload: { style: this.style },\n };\n }\n}\n\n/**\n * Command to remove a conditional style.\n */\nexport class RemoveConditionalStyleCommand implements EngineCommand {\n readonly requiresReevaluation = false;\n private removedStyle: ConditionalStyle | undefined;\n\n constructor(\n private styleManager: StyleManager,\n private workbookName: string,\n private index: number\n ) {}\n\n execute(): void {\n // Capture the style before removal\n const allStyles = this.styleManager.getAllConditionalStyles();\n const workbookStyles = allStyles.filter((s) =>\n s.areas.some((a) => a.workbookName === this.workbookName)\n );\n this.removedStyle = workbookStyles[this.index];\n\n this.styleManager.removeConditionalStyle(this.workbookName, this.index);\n }\n\n undo(): void {\n if (!this.removedStyle) return;\n this.styleManager.addConditionalStyle(this.removedStyle);\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.REMOVE_CONDITIONAL_STYLE,\n payload: {\n workbookName: this.workbookName,\n index: this.index,\n },\n };\n }\n}\n\n/**\n * Command to add a direct cell style.\n */\nexport class AddCellStyleCommand implements EngineCommand {\n readonly requiresReevaluation = false;\n private addedIndex: number = -1;\n\n constructor(\n private styleManager: StyleManager,\n private style: DirectCellStyle\n ) {}\n\n execute(): void {\n // Track the index where it's added\n const allStyles = this.styleManager.getAllCellStyles();\n this.addedIndex = allStyles.length;\n this.styleManager.addCellStyle(this.style);\n }\n\n undo(): void {\n // Remove by finding and removing the style\n const allStyles = this.styleManager.getAllCellStyles();\n const workbookName = this.style.areas[0]?.workbookName;\n if (workbookName) {\n // Find the index of this style in the workbook's styles\n let workbookStyleIndex = 0;\n for (let i = 0; i < allStyles.length; i++) {\n const s = allStyles[i];\n if (s?.areas.some((a) => a.workbookName === workbookName)) {\n if (s === this.style || i === this.addedIndex) {\n this.styleManager.removeCellStyle(workbookName, workbookStyleIndex);\n return;\n }\n workbookStyleIndex++;\n }\n }\n }\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.ADD_CELL_STYLE,\n payload: { style: this.style },\n };\n }\n}\n\n/**\n * Command to remove a direct cell style.\n */\nexport class RemoveCellStyleCommand implements EngineCommand {\n readonly requiresReevaluation = false;\n private removedStyle: DirectCellStyle | undefined;\n\n constructor(\n private styleManager: StyleManager,\n private workbookName: string,\n private index: number\n ) {}\n\n execute(): void {\n // Capture the style before removal\n const allStyles = this.styleManager.getAllCellStyles();\n const workbookStyles = allStyles.filter((s) =>\n s.areas.some((a) => a.workbookName === this.workbookName)\n );\n this.removedStyle = workbookStyles[this.index];\n\n this.styleManager.removeCellStyle(this.workbookName, this.index);\n }\n\n undo(): void {\n if (!this.removedStyle) return;\n this.styleManager.addCellStyle(this.removedStyle);\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.REMOVE_CELL_STYLE,\n payload: {\n workbookName: this.workbookName,\n index: this.index,\n },\n };\n }\n}\n\n/**\n * Captured styles for undo purposes.\n */\ninterface ClearedStylesSnapshot {\n conditionalStyles: ConditionalStyle[];\n cellStyles: DirectCellStyle[];\n}\n\n/**\n * Command to clear cell styles in a range.\n */\nexport class ClearCellStylesCommand implements EngineCommand {\n readonly requiresReevaluation = false;\n private snapshot: ClearedStylesSnapshot | undefined;\n\n constructor(\n private styleManager: StyleManager,\n private range: RangeAddress\n ) {}\n\n execute(): void {\n // Capture affected styles before clearing\n this.snapshot = {\n conditionalStyles: this.styleManager.getConditionalStylesIntersectingWithRange(\n this.range\n ),\n cellStyles: this.styleManager.getStylesIntersectingWithRange(this.range),\n };\n\n this.styleManager.clearCellStyles(this.range);\n }\n\n undo(): void {\n if (!this.snapshot) return;\n\n // Note: This is a simplified undo - it re-adds the styles\n // A more sophisticated implementation would restore the exact state\n // including any range adjustments that clearCellStyles made\n for (const style of this.snapshot.conditionalStyles) {\n this.styleManager.addConditionalStyle(style);\n }\n for (const style of this.snapshot.cellStyles) {\n this.styleManager.addCellStyle(style);\n }\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.CLEAR_CELL_STYLES,\n payload: { range: this.range },\n };\n }\n}\n\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "3BA09CD35A4191FC64756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -0,0 +1,226 @@
|
|
|
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/table-commands.ts
|
|
30
|
+
var exports_table_commands = {};
|
|
31
|
+
__export(exports_table_commands, {
|
|
32
|
+
UpdateTableCommand: () => UpdateTableCommand,
|
|
33
|
+
ResetTablesCommand: () => ResetTablesCommand,
|
|
34
|
+
RenameTableCommand: () => RenameTableCommand,
|
|
35
|
+
RemoveTableCommand: () => RemoveTableCommand,
|
|
36
|
+
AddTableCommand: () => AddTableCommand
|
|
37
|
+
});
|
|
38
|
+
module.exports = __toCommonJS(exports_table_commands);
|
|
39
|
+
var import_types = require("./types.cjs");
|
|
40
|
+
|
|
41
|
+
class AddTableCommand {
|
|
42
|
+
deps;
|
|
43
|
+
props;
|
|
44
|
+
requiresReevaluation = true;
|
|
45
|
+
constructor(deps, props) {
|
|
46
|
+
this.deps = deps;
|
|
47
|
+
this.props = props;
|
|
48
|
+
}
|
|
49
|
+
execute() {
|
|
50
|
+
this.deps.tableManager.addTable({
|
|
51
|
+
...this.props,
|
|
52
|
+
getCellValue: this.deps.getCellValue
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
undo() {
|
|
56
|
+
this.deps.tableManager.removeTable({
|
|
57
|
+
workbookName: this.props.workbookName,
|
|
58
|
+
tableName: this.props.tableName
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
toAction() {
|
|
62
|
+
return {
|
|
63
|
+
type: import_types.ActionTypes.ADD_TABLE,
|
|
64
|
+
payload: this.props
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
class RemoveTableCommand {
|
|
70
|
+
deps;
|
|
71
|
+
opts;
|
|
72
|
+
requiresReevaluation = true;
|
|
73
|
+
removedTable;
|
|
74
|
+
constructor(deps, opts) {
|
|
75
|
+
this.deps = deps;
|
|
76
|
+
this.opts = opts;
|
|
77
|
+
}
|
|
78
|
+
execute() {
|
|
79
|
+
this.removedTable = this.deps.tableManager.getTable({
|
|
80
|
+
workbookName: this.opts.workbookName,
|
|
81
|
+
name: this.opts.tableName
|
|
82
|
+
});
|
|
83
|
+
this.deps.tableManager.removeTable(this.opts);
|
|
84
|
+
}
|
|
85
|
+
undo() {
|
|
86
|
+
if (!this.removedTable)
|
|
87
|
+
return;
|
|
88
|
+
const { start, endRow, headers, sheetName } = this.removedTable;
|
|
89
|
+
const startRef = `${String.fromCharCode(65 + start.colIndex)}${start.rowIndex + 1}`;
|
|
90
|
+
this.deps.tableManager.addTable({
|
|
91
|
+
workbookName: this.opts.workbookName,
|
|
92
|
+
tableName: this.opts.tableName,
|
|
93
|
+
sheetName,
|
|
94
|
+
start: startRef,
|
|
95
|
+
numRows: endRow,
|
|
96
|
+
numCols: headers.size,
|
|
97
|
+
getCellValue: this.deps.getCellValue
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
toAction() {
|
|
101
|
+
return {
|
|
102
|
+
type: import_types.ActionTypes.REMOVE_TABLE,
|
|
103
|
+
payload: this.opts
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
class RenameTableCommand {
|
|
109
|
+
deps;
|
|
110
|
+
workbookName;
|
|
111
|
+
oldName;
|
|
112
|
+
newName;
|
|
113
|
+
requiresReevaluation = true;
|
|
114
|
+
constructor(deps, workbookName, oldName, newName) {
|
|
115
|
+
this.deps = deps;
|
|
116
|
+
this.workbookName = workbookName;
|
|
117
|
+
this.oldName = oldName;
|
|
118
|
+
this.newName = newName;
|
|
119
|
+
}
|
|
120
|
+
execute() {
|
|
121
|
+
this.deps.tableManager.renameTable(this.workbookName, {
|
|
122
|
+
oldName: this.oldName,
|
|
123
|
+
newName: this.newName
|
|
124
|
+
});
|
|
125
|
+
this.deps.workbookManager.updateAllFormulas((formula) => this.deps.renameTableInFormula(formula, this.oldName, this.newName));
|
|
126
|
+
this.deps.namedExpressionManager.updateAllNamedExpressions((formula) => this.deps.renameTableInFormula(formula, this.oldName, this.newName));
|
|
127
|
+
this.deps.apiSchemaManager.updateForTableRename(this.workbookName, this.oldName, this.newName);
|
|
128
|
+
}
|
|
129
|
+
undo() {
|
|
130
|
+
this.deps.tableManager.renameTable(this.workbookName, {
|
|
131
|
+
oldName: this.newName,
|
|
132
|
+
newName: this.oldName
|
|
133
|
+
});
|
|
134
|
+
this.deps.workbookManager.updateAllFormulas((formula) => this.deps.renameTableInFormula(formula, this.newName, this.oldName));
|
|
135
|
+
this.deps.namedExpressionManager.updateAllNamedExpressions((formula) => this.deps.renameTableInFormula(formula, this.newName, this.oldName));
|
|
136
|
+
this.deps.apiSchemaManager.updateForTableRename(this.workbookName, this.newName, this.oldName);
|
|
137
|
+
}
|
|
138
|
+
toAction() {
|
|
139
|
+
return {
|
|
140
|
+
type: import_types.ActionTypes.RENAME_TABLE,
|
|
141
|
+
payload: {
|
|
142
|
+
workbookName: this.workbookName,
|
|
143
|
+
oldName: this.oldName,
|
|
144
|
+
newName: this.newName
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
class UpdateTableCommand {
|
|
151
|
+
deps;
|
|
152
|
+
opts;
|
|
153
|
+
requiresReevaluation = true;
|
|
154
|
+
previousTable;
|
|
155
|
+
constructor(deps, opts) {
|
|
156
|
+
this.deps = deps;
|
|
157
|
+
this.opts = opts;
|
|
158
|
+
}
|
|
159
|
+
execute() {
|
|
160
|
+
this.previousTable = this.deps.tableManager.getTable({
|
|
161
|
+
workbookName: this.opts.workbookName,
|
|
162
|
+
name: this.opts.tableName
|
|
163
|
+
});
|
|
164
|
+
this.deps.tableManager.updateTable({
|
|
165
|
+
...this.opts,
|
|
166
|
+
getCellValue: this.deps.getCellValue
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
undo() {
|
|
170
|
+
if (!this.previousTable)
|
|
171
|
+
return;
|
|
172
|
+
const { start, endRow, headers, sheetName } = this.previousTable;
|
|
173
|
+
const startRef = `${String.fromCharCode(65 + start.colIndex)}${start.rowIndex + 1}`;
|
|
174
|
+
this.deps.tableManager.updateTable({
|
|
175
|
+
workbookName: this.opts.workbookName,
|
|
176
|
+
tableName: this.opts.tableName,
|
|
177
|
+
sheetName,
|
|
178
|
+
start: startRef,
|
|
179
|
+
numRows: endRow,
|
|
180
|
+
numCols: headers.size,
|
|
181
|
+
getCellValue: this.deps.getCellValue
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
toAction() {
|
|
185
|
+
return {
|
|
186
|
+
type: import_types.ActionTypes.UPDATE_TABLE,
|
|
187
|
+
payload: this.opts
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
class ResetTablesCommand {
|
|
193
|
+
deps;
|
|
194
|
+
newTables;
|
|
195
|
+
requiresReevaluation = true;
|
|
196
|
+
previousTables;
|
|
197
|
+
constructor(deps, newTables) {
|
|
198
|
+
this.deps = deps;
|
|
199
|
+
this.newTables = newTables;
|
|
200
|
+
}
|
|
201
|
+
execute() {
|
|
202
|
+
this.previousTables = new Map;
|
|
203
|
+
for (const [workbookName, tables] of this.deps.tableManager.tables) {
|
|
204
|
+
this.previousTables.set(workbookName, new Map(tables));
|
|
205
|
+
}
|
|
206
|
+
this.deps.tableManager.resetTables(this.newTables);
|
|
207
|
+
}
|
|
208
|
+
undo() {
|
|
209
|
+
if (!this.previousTables)
|
|
210
|
+
return;
|
|
211
|
+
this.deps.tableManager.resetTables(this.previousTables);
|
|
212
|
+
}
|
|
213
|
+
toAction() {
|
|
214
|
+
return {
|
|
215
|
+
type: import_types.ActionTypes.RESET_TABLES,
|
|
216
|
+
payload: {
|
|
217
|
+
tables: Array.from(this.newTables.entries()).map(([wb, tables]) => [
|
|
218
|
+
wb,
|
|
219
|
+
Array.from(tables.entries())
|
|
220
|
+
])
|
|
221
|
+
}
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
//# debugId=9756D299A175406A64756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/core/commands/table-commands.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * Table Commands - Commands that modify table definitions\n *\n * These commands all require re-evaluation after execution.\n */\n\nimport type { TableManager } from \"../managers/table-manager.cjs\";\nimport type { NamedExpressionManager } from \"../managers/named-expression-manager.cjs\";\nimport type { WorkbookManager } from \"../managers/workbook-manager.cjs\";\nimport type { ApiSchemaManager } from \"../managers/api-schema-manager.cjs\";\nimport type {\n CellAddress,\n SerializedCellValue,\n SpreadsheetRangeEnd,\n TableDefinition,\n} from \"../types.cjs\";\nimport type { EngineCommand, EngineAction } from \"./types.cjs\";\nimport { ActionTypes } from \"./types.cjs\";\n\n/**\n * Dependencies needed for table commands.\n */\nexport interface TableCommandDeps {\n tableManager: TableManager;\n namedExpressionManager: NamedExpressionManager;\n workbookManager: WorkbookManager;\n apiSchemaManager: ApiSchemaManager;\n getCellValue: (cellAddress: CellAddress) => SerializedCellValue;\n renameTableInFormula: (\n formula: string,\n oldName: string,\n newName: string\n ) => string;\n}\n\n/**\n * Command to add a table.\n */\nexport class AddTableCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n\n constructor(\n private deps: TableCommandDeps,\n private props: {\n tableName: string;\n sheetName: string;\n workbookName: string;\n start: string;\n numRows: SpreadsheetRangeEnd;\n numCols: number;\n }\n ) {}\n\n execute(): void {\n this.deps.tableManager.addTable({\n ...this.props,\n getCellValue: this.deps.getCellValue,\n });\n }\n\n undo(): void {\n this.deps.tableManager.removeTable({\n workbookName: this.props.workbookName,\n tableName: this.props.tableName,\n });\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.ADD_TABLE,\n payload: this.props,\n };\n }\n}\n\n/**\n * Command to remove a table.\n */\nexport class RemoveTableCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private removedTable: TableDefinition | undefined;\n\n constructor(\n private deps: TableCommandDeps,\n private opts: { tableName: string; workbookName: string }\n ) {}\n\n execute(): void {\n // Capture table before removal\n this.removedTable = this.deps.tableManager.getTable({\n workbookName: this.opts.workbookName,\n name: this.opts.tableName,\n });\n\n this.deps.tableManager.removeTable(this.opts);\n }\n\n undo(): void {\n if (!this.removedTable) return;\n\n // Recreate the table\n const { start, endRow, headers, sheetName } = this.removedTable;\n const startRef = `${String.fromCharCode(65 + start.colIndex)}${start.rowIndex + 1}`;\n\n this.deps.tableManager.addTable({\n workbookName: this.opts.workbookName,\n tableName: this.opts.tableName,\n sheetName,\n start: startRef,\n numRows: endRow,\n numCols: headers.size,\n getCellValue: this.deps.getCellValue,\n });\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.REMOVE_TABLE,\n payload: this.opts,\n };\n }\n}\n\n/**\n * Command to rename a table.\n */\nexport class RenameTableCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n\n constructor(\n private deps: TableCommandDeps,\n private workbookName: string,\n private oldName: string,\n private newName: string\n ) {}\n\n execute(): void {\n this.deps.tableManager.renameTable(this.workbookName, {\n oldName: this.oldName,\n newName: this.newName,\n });\n\n // Update formulas in sheet cells\n this.deps.workbookManager.updateAllFormulas((formula) =>\n this.deps.renameTableInFormula(formula, this.oldName, this.newName)\n );\n\n // Update named expressions\n this.deps.namedExpressionManager.updateAllNamedExpressions((formula) =>\n this.deps.renameTableInFormula(formula, this.oldName, this.newName)\n );\n\n // Update API schemas\n this.deps.apiSchemaManager.updateForTableRename(\n this.workbookName,\n this.oldName,\n this.newName\n );\n }\n\n undo(): void {\n // Rename back\n this.deps.tableManager.renameTable(this.workbookName, {\n oldName: this.newName,\n newName: this.oldName,\n });\n\n // Update formulas back\n this.deps.workbookManager.updateAllFormulas((formula) =>\n this.deps.renameTableInFormula(formula, this.newName, this.oldName)\n );\n\n // Update named expressions back\n this.deps.namedExpressionManager.updateAllNamedExpressions((formula) =>\n this.deps.renameTableInFormula(formula, this.newName, this.oldName)\n );\n\n // Update API schemas back\n this.deps.apiSchemaManager.updateForTableRename(\n this.workbookName,\n this.newName,\n this.oldName\n );\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.RENAME_TABLE,\n payload: {\n workbookName: this.workbookName,\n oldName: this.oldName,\n newName: this.newName,\n },\n };\n }\n}\n\n/**\n * Command to update a table.\n */\nexport class UpdateTableCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private previousTable: TableDefinition | undefined;\n\n constructor(\n private deps: TableCommandDeps,\n private opts: {\n tableName: string;\n sheetName?: string;\n start?: string;\n numRows?: SpreadsheetRangeEnd;\n numCols?: number;\n workbookName: string;\n }\n ) {}\n\n execute(): void {\n // Capture previous table state\n this.previousTable = this.deps.tableManager.getTable({\n workbookName: this.opts.workbookName,\n name: this.opts.tableName,\n });\n\n this.deps.tableManager.updateTable({\n ...this.opts,\n getCellValue: this.deps.getCellValue,\n });\n }\n\n undo(): void {\n if (!this.previousTable) return;\n\n // Restore previous table state\n const { start, endRow, headers, sheetName } = this.previousTable;\n const startRef = `${String.fromCharCode(65 + start.colIndex)}${start.rowIndex + 1}`;\n\n this.deps.tableManager.updateTable({\n workbookName: this.opts.workbookName,\n tableName: this.opts.tableName,\n sheetName,\n start: startRef,\n numRows: endRow,\n numCols: headers.size,\n getCellValue: this.deps.getCellValue,\n });\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.UPDATE_TABLE,\n payload: this.opts,\n };\n }\n}\n\n/**\n * Command to reset all tables.\n */\nexport class ResetTablesCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private previousTables: Map<string, Map<string, TableDefinition>> | undefined;\n\n constructor(\n private deps: TableCommandDeps,\n private newTables: Map<string, Map<string, TableDefinition>>\n ) {}\n\n execute(): void {\n // Capture previous tables\n this.previousTables = new Map();\n for (const [workbookName, tables] of this.deps.tableManager.tables) {\n this.previousTables.set(workbookName, new Map(tables));\n }\n\n this.deps.tableManager.resetTables(this.newTables);\n }\n\n undo(): void {\n if (!this.previousTables) return;\n this.deps.tableManager.resetTables(this.previousTables);\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.RESET_TABLES,\n payload: {\n tables: Array.from(this.newTables.entries()).map(([wb, tables]) => [\n wb,\n Array.from(tables.entries()),\n ]),\n },\n };\n }\n}\n\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "9756D299A175406A64756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
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/types.ts
|
|
30
|
+
var exports_types = {};
|
|
31
|
+
__export(exports_types, {
|
|
32
|
+
ActionTypes: () => ActionTypes
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(exports_types);
|
|
35
|
+
var ActionTypes = {
|
|
36
|
+
SET_CELL_CONTENT: "SET_CELL_CONTENT",
|
|
37
|
+
SET_SHEET_CONTENT: "SET_SHEET_CONTENT",
|
|
38
|
+
CLEAR_RANGE: "CLEAR_RANGE",
|
|
39
|
+
PASTE_CELLS: "PASTE_CELLS",
|
|
40
|
+
FILL_AREAS: "FILL_AREAS",
|
|
41
|
+
MOVE_CELL: "MOVE_CELL",
|
|
42
|
+
MOVE_RANGE: "MOVE_RANGE",
|
|
43
|
+
AUTO_FILL: "AUTO_FILL",
|
|
44
|
+
ADD_WORKBOOK: "ADD_WORKBOOK",
|
|
45
|
+
REMOVE_WORKBOOK: "REMOVE_WORKBOOK",
|
|
46
|
+
RENAME_WORKBOOK: "RENAME_WORKBOOK",
|
|
47
|
+
CLONE_WORKBOOK: "CLONE_WORKBOOK",
|
|
48
|
+
ADD_SHEET: "ADD_SHEET",
|
|
49
|
+
REMOVE_SHEET: "REMOVE_SHEET",
|
|
50
|
+
RENAME_SHEET: "RENAME_SHEET",
|
|
51
|
+
ADD_TABLE: "ADD_TABLE",
|
|
52
|
+
REMOVE_TABLE: "REMOVE_TABLE",
|
|
53
|
+
RENAME_TABLE: "RENAME_TABLE",
|
|
54
|
+
UPDATE_TABLE: "UPDATE_TABLE",
|
|
55
|
+
RESET_TABLES: "RESET_TABLES",
|
|
56
|
+
ADD_NAMED_EXPRESSION: "ADD_NAMED_EXPRESSION",
|
|
57
|
+
REMOVE_NAMED_EXPRESSION: "REMOVE_NAMED_EXPRESSION",
|
|
58
|
+
UPDATE_NAMED_EXPRESSION: "UPDATE_NAMED_EXPRESSION",
|
|
59
|
+
RENAME_NAMED_EXPRESSION: "RENAME_NAMED_EXPRESSION",
|
|
60
|
+
SET_NAMED_EXPRESSIONS: "SET_NAMED_EXPRESSIONS",
|
|
61
|
+
SET_CELL_METADATA: "SET_CELL_METADATA",
|
|
62
|
+
SET_SHEET_METADATA: "SET_SHEET_METADATA",
|
|
63
|
+
SET_WORKBOOK_METADATA: "SET_WORKBOOK_METADATA",
|
|
64
|
+
ADD_CONDITIONAL_STYLE: "ADD_CONDITIONAL_STYLE",
|
|
65
|
+
REMOVE_CONDITIONAL_STYLE: "REMOVE_CONDITIONAL_STYLE",
|
|
66
|
+
ADD_CELL_STYLE: "ADD_CELL_STYLE",
|
|
67
|
+
REMOVE_CELL_STYLE: "REMOVE_CELL_STYLE",
|
|
68
|
+
CLEAR_CELL_STYLES: "CLEAR_CELL_STYLES",
|
|
69
|
+
RESET_TO_SERIALIZED: "RESET_TO_SERIALIZED"
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
//# debugId=5FF5E5C922367E6D64756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/core/commands/types.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * Command Pattern Types for FormulaEngine\n *\n * Commands encapsulate all mutating operations on the engine,\n * enabling undo/redo, schema validation with rollback, and action serialization.\n */\n\nimport type { CellAddress, RangeAddress, SerializedCellValue } from \"../types.cjs\";\n\n/**\n * Serializable action representation of a command.\n * Used for persistence, collaboration, and changelog functionality.\n */\nexport interface EngineAction {\n type: string;\n payload: unknown;\n timestamp?: number;\n}\n\n/**\n * Base interface for all engine commands.\n */\nexport interface EngineCommand {\n /**\n * Whether this command affects cell values/formulas and requires re-evaluation.\n * Commands that only affect metadata or styles don't need re-evaluation.\n */\n readonly requiresReevaluation: boolean;\n\n /**\n * Execute the command (forward operation).\n */\n execute(): void;\n\n /**\n * Undo the command (reverse operation).\n */\n undo(): void;\n\n /**\n * Convert the command to a serializable action for persistence/collaboration.\n */\n toAction(): EngineAction;\n}\n\n/**\n * Options for command execution.\n */\nexport interface ExecuteOptions {\n /**\n * Whether to validate schema constraints after execution.\n * Only applies to commands that require re-evaluation.\n */\n validate?: boolean;\n\n /**\n * Whether to skip adding to undo stack (for internal use).\n */\n skipUndoStack?: boolean;\n\n /**\n * Whether to skip emitting update events.\n */\n skipEmitUpdate?: boolean;\n}\n\n/**\n * Result of schema validation.\n */\nexport interface SchemaValidationResult {\n valid: boolean;\n errors: SchemaValidationErrorInfo[];\n}\n\n/**\n * Information about a schema validation error.\n */\nexport interface SchemaValidationErrorInfo {\n message: string;\n cellAddress?: CellAddress;\n schemaNamespace?: string;\n columnName?: string;\n originalError?: Error;\n}\n\n/**\n * Action types for all commands.\n * Used for serialization and deserialization.\n */\nexport const ActionTypes = {\n // Content commands\n SET_CELL_CONTENT: \"SET_CELL_CONTENT\",\n SET_SHEET_CONTENT: \"SET_SHEET_CONTENT\",\n CLEAR_RANGE: \"CLEAR_RANGE\",\n PASTE_CELLS: \"PASTE_CELLS\",\n FILL_AREAS: \"FILL_AREAS\",\n MOVE_CELL: \"MOVE_CELL\",\n MOVE_RANGE: \"MOVE_RANGE\",\n AUTO_FILL: \"AUTO_FILL\",\n\n // Structure commands - Workbook\n ADD_WORKBOOK: \"ADD_WORKBOOK\",\n REMOVE_WORKBOOK: \"REMOVE_WORKBOOK\",\n RENAME_WORKBOOK: \"RENAME_WORKBOOK\",\n CLONE_WORKBOOK: \"CLONE_WORKBOOK\",\n\n // Structure commands - Sheet\n ADD_SHEET: \"ADD_SHEET\",\n REMOVE_SHEET: \"REMOVE_SHEET\",\n RENAME_SHEET: \"RENAME_SHEET\",\n\n // Table commands\n ADD_TABLE: \"ADD_TABLE\",\n REMOVE_TABLE: \"REMOVE_TABLE\",\n RENAME_TABLE: \"RENAME_TABLE\",\n UPDATE_TABLE: \"UPDATE_TABLE\",\n RESET_TABLES: \"RESET_TABLES\",\n\n // Named expression commands\n ADD_NAMED_EXPRESSION: \"ADD_NAMED_EXPRESSION\",\n REMOVE_NAMED_EXPRESSION: \"REMOVE_NAMED_EXPRESSION\",\n UPDATE_NAMED_EXPRESSION: \"UPDATE_NAMED_EXPRESSION\",\n RENAME_NAMED_EXPRESSION: \"RENAME_NAMED_EXPRESSION\",\n SET_NAMED_EXPRESSIONS: \"SET_NAMED_EXPRESSIONS\",\n\n // Metadata commands\n SET_CELL_METADATA: \"SET_CELL_METADATA\",\n SET_SHEET_METADATA: \"SET_SHEET_METADATA\",\n SET_WORKBOOK_METADATA: \"SET_WORKBOOK_METADATA\",\n\n // Style commands\n ADD_CONDITIONAL_STYLE: \"ADD_CONDITIONAL_STYLE\",\n REMOVE_CONDITIONAL_STYLE: \"REMOVE_CONDITIONAL_STYLE\",\n ADD_CELL_STYLE: \"ADD_CELL_STYLE\",\n REMOVE_CELL_STYLE: \"REMOVE_CELL_STYLE\",\n CLEAR_CELL_STYLES: \"CLEAR_CELL_STYLES\",\n\n // State commands\n RESET_TO_SERIALIZED: \"RESET_TO_SERIALIZED\",\n} as const;\n\nexport type ActionType = (typeof ActionTypes)[keyof typeof ActionTypes];\n\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyFO,IAAM,cAAc;AAAA,EAEzB,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,aAAa;AAAA,EACb,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,WAAW;AAAA,EAGX,cAAc;AAAA,EACd,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAGhB,WAAW;AAAA,EACX,cAAc;AAAA,EACd,cAAc;AAAA,EAGd,WAAW;AAAA,EACX,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EAGd,sBAAsB;AAAA,EACtB,yBAAyB;AAAA,EACzB,yBAAyB;AAAA,EACzB,yBAAyB;AAAA,EACzB,uBAAuB;AAAA,EAGvB,mBAAmB;AAAA,EACnB,oBAAoB;AAAA,EACpB,uBAAuB;AAAA,EAGvB,uBAAuB;AAAA,EACvB,0BAA0B;AAAA,EAC1B,gBAAgB;AAAA,EAChB,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EAGnB,qBAAqB;AACvB;",
|
|
8
|
+
"debugId": "5FF5E5C922367E6D64756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|