@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,120 @@
|
|
|
1
|
+
// src/core/commands/metadata-commands.ts
|
|
2
|
+
import { ActionTypes } from "./types.mjs";
|
|
3
|
+
import { getCellReference } from "../utils.mjs";
|
|
4
|
+
|
|
5
|
+
class SetCellMetadataCommand {
|
|
6
|
+
workbookManager;
|
|
7
|
+
address;
|
|
8
|
+
newMetadata;
|
|
9
|
+
requiresReevaluation = false;
|
|
10
|
+
previousMetadata;
|
|
11
|
+
hadPreviousMetadata = false;
|
|
12
|
+
constructor(workbookManager, address, newMetadata) {
|
|
13
|
+
this.workbookManager = workbookManager;
|
|
14
|
+
this.address = address;
|
|
15
|
+
this.newMetadata = newMetadata;
|
|
16
|
+
}
|
|
17
|
+
execute() {
|
|
18
|
+
const sheet = this.workbookManager.getSheet({
|
|
19
|
+
workbookName: this.address.workbookName,
|
|
20
|
+
sheetName: this.address.sheetName
|
|
21
|
+
});
|
|
22
|
+
if (sheet) {
|
|
23
|
+
const key = getCellReference(this.address);
|
|
24
|
+
this.hadPreviousMetadata = sheet.metadata.has(key);
|
|
25
|
+
this.previousMetadata = sheet.metadata.get(key);
|
|
26
|
+
}
|
|
27
|
+
this.workbookManager.setCellMetadata(this.address, this.newMetadata);
|
|
28
|
+
}
|
|
29
|
+
undo() {
|
|
30
|
+
if (this.hadPreviousMetadata) {
|
|
31
|
+
this.workbookManager.setCellMetadata(this.address, this.previousMetadata);
|
|
32
|
+
} else {
|
|
33
|
+
this.workbookManager.setCellMetadata(this.address, undefined);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
toAction() {
|
|
37
|
+
return {
|
|
38
|
+
type: ActionTypes.SET_CELL_METADATA,
|
|
39
|
+
payload: {
|
|
40
|
+
address: this.address,
|
|
41
|
+
metadata: this.newMetadata
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
class SetSheetMetadataCommand {
|
|
48
|
+
workbookManager;
|
|
49
|
+
opts;
|
|
50
|
+
newMetadata;
|
|
51
|
+
requiresReevaluation = false;
|
|
52
|
+
previousMetadata;
|
|
53
|
+
constructor(workbookManager, opts, newMetadata) {
|
|
54
|
+
this.workbookManager = workbookManager;
|
|
55
|
+
this.opts = opts;
|
|
56
|
+
this.newMetadata = newMetadata;
|
|
57
|
+
}
|
|
58
|
+
execute() {
|
|
59
|
+
const sheet = this.workbookManager.getSheet(this.opts);
|
|
60
|
+
if (sheet) {
|
|
61
|
+
this.previousMetadata = sheet.sheetMetadata;
|
|
62
|
+
}
|
|
63
|
+
this.workbookManager.setSheetMetadata(this.opts, this.newMetadata);
|
|
64
|
+
}
|
|
65
|
+
undo() {
|
|
66
|
+
if (this.previousMetadata !== undefined) {
|
|
67
|
+
this.workbookManager.setSheetMetadata(this.opts, this.previousMetadata);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
toAction() {
|
|
71
|
+
return {
|
|
72
|
+
type: ActionTypes.SET_SHEET_METADATA,
|
|
73
|
+
payload: {
|
|
74
|
+
opts: this.opts,
|
|
75
|
+
metadata: this.newMetadata
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
class SetWorkbookMetadataCommand {
|
|
82
|
+
workbookManager;
|
|
83
|
+
workbookName;
|
|
84
|
+
newMetadata;
|
|
85
|
+
requiresReevaluation = false;
|
|
86
|
+
previousMetadata;
|
|
87
|
+
constructor(workbookManager, workbookName, newMetadata) {
|
|
88
|
+
this.workbookManager = workbookManager;
|
|
89
|
+
this.workbookName = workbookName;
|
|
90
|
+
this.newMetadata = newMetadata;
|
|
91
|
+
}
|
|
92
|
+
execute() {
|
|
93
|
+
const workbook = this.workbookManager.getWorkbooks().get(this.workbookName);
|
|
94
|
+
if (workbook) {
|
|
95
|
+
this.previousMetadata = workbook.workbookMetadata;
|
|
96
|
+
}
|
|
97
|
+
this.workbookManager.setWorkbookMetadata(this.workbookName, this.newMetadata);
|
|
98
|
+
}
|
|
99
|
+
undo() {
|
|
100
|
+
if (this.previousMetadata !== undefined) {
|
|
101
|
+
this.workbookManager.setWorkbookMetadata(this.workbookName, this.previousMetadata);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
toAction() {
|
|
105
|
+
return {
|
|
106
|
+
type: ActionTypes.SET_WORKBOOK_METADATA,
|
|
107
|
+
payload: {
|
|
108
|
+
workbookName: this.workbookName,
|
|
109
|
+
metadata: this.newMetadata
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
export {
|
|
115
|
+
SetWorkbookMetadataCommand,
|
|
116
|
+
SetSheetMetadataCommand,
|
|
117
|
+
SetCellMetadataCommand
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
//# debugId=ED39C4E46B26E88464756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/core/commands/metadata-commands.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * Metadata Commands - Commands that modify cell/sheet/workbook metadata\n *\n * These commands do NOT require re-evaluation after execution.\n * They only affect metadata, not cell values or formulas.\n */\n\nimport type { WorkbookManager } from \"../managers/workbook-manager.mjs\";\nimport type { CellAddress } from \"../types.mjs\";\nimport type { EngineCommand, EngineAction } from \"./types.mjs\";\nimport { ActionTypes } from \"./types.mjs\";\nimport { getCellReference } from \"../utils.mjs\";\n\n/**\n * Command to set cell metadata.\n */\nexport class SetCellMetadataCommand<TMetadata = unknown> implements EngineCommand {\n readonly requiresReevaluation = false;\n private previousMetadata: TMetadata | undefined;\n private hadPreviousMetadata = false;\n\n constructor(\n private workbookManager: WorkbookManager,\n private address: CellAddress,\n private newMetadata: TMetadata | undefined\n ) {}\n\n execute(): void {\n // Capture previous metadata\n const sheet = this.workbookManager.getSheet({\n workbookName: this.address.workbookName,\n sheetName: this.address.sheetName,\n });\n\n if (sheet) {\n const key = getCellReference(this.address);\n this.hadPreviousMetadata = sheet.metadata.has(key);\n this.previousMetadata = sheet.metadata.get(key) as TMetadata | undefined;\n }\n\n this.workbookManager.setCellMetadata(this.address, this.newMetadata);\n }\n\n undo(): void {\n if (this.hadPreviousMetadata) {\n this.workbookManager.setCellMetadata(this.address, this.previousMetadata);\n } else {\n this.workbookManager.setCellMetadata(this.address, undefined);\n }\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.SET_CELL_METADATA,\n payload: {\n address: this.address,\n metadata: this.newMetadata,\n },\n };\n }\n}\n\n/**\n * Command to set sheet metadata.\n */\nexport class SetSheetMetadataCommand<TMetadata = unknown> implements EngineCommand {\n readonly requiresReevaluation = false;\n private previousMetadata: TMetadata | undefined;\n\n constructor(\n private workbookManager: WorkbookManager,\n private opts: { workbookName: string; sheetName: string },\n private newMetadata: TMetadata\n ) {}\n\n execute(): void {\n // Capture previous metadata\n const sheet = this.workbookManager.getSheet(this.opts);\n if (sheet) {\n this.previousMetadata = sheet.sheetMetadata as TMetadata | undefined;\n }\n\n this.workbookManager.setSheetMetadata(this.opts, this.newMetadata);\n }\n\n undo(): void {\n if (this.previousMetadata !== undefined) {\n this.workbookManager.setSheetMetadata(this.opts, this.previousMetadata);\n }\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.SET_SHEET_METADATA,\n payload: {\n opts: this.opts,\n metadata: this.newMetadata,\n },\n };\n }\n}\n\n/**\n * Command to set workbook metadata.\n */\nexport class SetWorkbookMetadataCommand<TMetadata = unknown> implements EngineCommand {\n readonly requiresReevaluation = false;\n private previousMetadata: TMetadata | undefined;\n\n constructor(\n private workbookManager: WorkbookManager,\n private workbookName: string,\n private newMetadata: TMetadata\n ) {}\n\n execute(): void {\n // Capture previous metadata\n const workbook = this.workbookManager.getWorkbooks().get(this.workbookName);\n if (workbook) {\n this.previousMetadata = workbook.workbookMetadata as TMetadata | undefined;\n }\n\n this.workbookManager.setWorkbookMetadata(this.workbookName, this.newMetadata);\n }\n\n undo(): void {\n if (this.previousMetadata !== undefined) {\n this.workbookManager.setWorkbookMetadata(this.workbookName, this.previousMetadata);\n }\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.SET_WORKBOOK_METADATA,\n payload: {\n workbookName: this.workbookName,\n metadata: this.newMetadata,\n },\n };\n }\n}\n\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "ED39C4E46B26E88464756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
// src/core/commands/named-expression-commands.ts
|
|
2
|
+
import { ActionTypes } from "./types.mjs";
|
|
3
|
+
function optsToScope(opts) {
|
|
4
|
+
if (opts.sheetName && opts.workbookName) {
|
|
5
|
+
return {
|
|
6
|
+
name: opts.expressionName,
|
|
7
|
+
scope: {
|
|
8
|
+
type: "sheet",
|
|
9
|
+
workbookName: opts.workbookName,
|
|
10
|
+
sheetName: opts.sheetName
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
} else if (opts.workbookName) {
|
|
14
|
+
return {
|
|
15
|
+
name: opts.expressionName,
|
|
16
|
+
scope: { type: "workbook", workbookName: opts.workbookName }
|
|
17
|
+
};
|
|
18
|
+
} else {
|
|
19
|
+
return {
|
|
20
|
+
name: opts.expressionName,
|
|
21
|
+
scope: { type: "global" }
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
class AddNamedExpressionCommand {
|
|
27
|
+
deps;
|
|
28
|
+
opts;
|
|
29
|
+
requiresReevaluation = true;
|
|
30
|
+
constructor(deps, opts) {
|
|
31
|
+
this.deps = deps;
|
|
32
|
+
this.opts = opts;
|
|
33
|
+
}
|
|
34
|
+
execute() {
|
|
35
|
+
this.deps.namedExpressionManager.addNamedExpression(this.opts);
|
|
36
|
+
}
|
|
37
|
+
undo() {
|
|
38
|
+
this.deps.namedExpressionManager.removeNamedExpression({
|
|
39
|
+
expressionName: this.opts.expressionName,
|
|
40
|
+
sheetName: this.opts.sheetName,
|
|
41
|
+
workbookName: this.opts.workbookName
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
toAction() {
|
|
45
|
+
return {
|
|
46
|
+
type: ActionTypes.ADD_NAMED_EXPRESSION,
|
|
47
|
+
payload: this.opts
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
class RemoveNamedExpressionCommand {
|
|
53
|
+
deps;
|
|
54
|
+
opts;
|
|
55
|
+
requiresReevaluation = true;
|
|
56
|
+
removedExpression;
|
|
57
|
+
constructor(deps, opts) {
|
|
58
|
+
this.deps = deps;
|
|
59
|
+
this.opts = opts;
|
|
60
|
+
}
|
|
61
|
+
execute() {
|
|
62
|
+
this.removedExpression = this.deps.namedExpressionManager.getNamedExpression(optsToScope(this.opts));
|
|
63
|
+
this.deps.namedExpressionManager.removeNamedExpression(this.opts);
|
|
64
|
+
}
|
|
65
|
+
undo() {
|
|
66
|
+
if (!this.removedExpression)
|
|
67
|
+
return;
|
|
68
|
+
this.deps.namedExpressionManager.addNamedExpression({
|
|
69
|
+
expressionName: this.removedExpression.name,
|
|
70
|
+
expression: this.removedExpression.expression,
|
|
71
|
+
sheetName: this.opts.sheetName,
|
|
72
|
+
workbookName: this.opts.workbookName
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
toAction() {
|
|
76
|
+
return {
|
|
77
|
+
type: ActionTypes.REMOVE_NAMED_EXPRESSION,
|
|
78
|
+
payload: this.opts
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
class UpdateNamedExpressionCommand {
|
|
84
|
+
deps;
|
|
85
|
+
opts;
|
|
86
|
+
requiresReevaluation = true;
|
|
87
|
+
previousExpression;
|
|
88
|
+
constructor(deps, opts) {
|
|
89
|
+
this.deps = deps;
|
|
90
|
+
this.opts = opts;
|
|
91
|
+
}
|
|
92
|
+
execute() {
|
|
93
|
+
const existing = this.deps.namedExpressionManager.getNamedExpression(optsToScope(this.opts));
|
|
94
|
+
this.previousExpression = existing?.expression;
|
|
95
|
+
this.deps.namedExpressionManager.updateNamedExpression(this.opts);
|
|
96
|
+
}
|
|
97
|
+
undo() {
|
|
98
|
+
if (this.previousExpression === undefined)
|
|
99
|
+
return;
|
|
100
|
+
this.deps.namedExpressionManager.updateNamedExpression({
|
|
101
|
+
expressionName: this.opts.expressionName,
|
|
102
|
+
expression: this.previousExpression,
|
|
103
|
+
sheetName: this.opts.sheetName,
|
|
104
|
+
workbookName: this.opts.workbookName
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
toAction() {
|
|
108
|
+
return {
|
|
109
|
+
type: ActionTypes.UPDATE_NAMED_EXPRESSION,
|
|
110
|
+
payload: this.opts
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
class RenameNamedExpressionCommand {
|
|
116
|
+
deps;
|
|
117
|
+
opts;
|
|
118
|
+
requiresReevaluation = true;
|
|
119
|
+
constructor(deps, opts) {
|
|
120
|
+
this.deps = deps;
|
|
121
|
+
this.opts = opts;
|
|
122
|
+
}
|
|
123
|
+
execute() {
|
|
124
|
+
this.deps.namedExpressionManager.renameNamedExpression(this.opts);
|
|
125
|
+
this.deps.workbookManager.updateAllFormulas((formula) => this.deps.renameNamedExpressionInFormula(formula, this.opts.expressionName, this.opts.newName));
|
|
126
|
+
this.deps.namedExpressionManager.updateAllNamedExpressions((formula) => this.deps.renameNamedExpressionInFormula(formula, this.opts.expressionName, this.opts.newName));
|
|
127
|
+
}
|
|
128
|
+
undo() {
|
|
129
|
+
this.deps.namedExpressionManager.renameNamedExpression({
|
|
130
|
+
expressionName: this.opts.newName,
|
|
131
|
+
sheetName: this.opts.sheetName,
|
|
132
|
+
workbookName: this.opts.workbookName,
|
|
133
|
+
newName: this.opts.expressionName
|
|
134
|
+
});
|
|
135
|
+
this.deps.workbookManager.updateAllFormulas((formula) => this.deps.renameNamedExpressionInFormula(formula, this.opts.newName, this.opts.expressionName));
|
|
136
|
+
this.deps.namedExpressionManager.updateAllNamedExpressions((formula) => this.deps.renameNamedExpressionInFormula(formula, this.opts.newName, this.opts.expressionName));
|
|
137
|
+
}
|
|
138
|
+
toAction() {
|
|
139
|
+
return {
|
|
140
|
+
type: ActionTypes.RENAME_NAMED_EXPRESSION,
|
|
141
|
+
payload: this.opts
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
class SetNamedExpressionsCommand {
|
|
147
|
+
deps;
|
|
148
|
+
opts;
|
|
149
|
+
requiresReevaluation = true;
|
|
150
|
+
previousExpressions;
|
|
151
|
+
constructor(deps, opts) {
|
|
152
|
+
this.deps = deps;
|
|
153
|
+
this.opts = opts;
|
|
154
|
+
}
|
|
155
|
+
execute() {
|
|
156
|
+
const allExpressions = this.deps.namedExpressionManager.getNamedExpressions();
|
|
157
|
+
if (this.opts.type === "global") {
|
|
158
|
+
this.previousExpressions = new Map(allExpressions.globalExpressions);
|
|
159
|
+
} else if (this.opts.type === "workbook") {
|
|
160
|
+
this.previousExpressions = new Map(allExpressions.workbookExpressions.get(this.opts.workbookName) || []);
|
|
161
|
+
} else if (this.opts.type === "sheet") {
|
|
162
|
+
const sheetExpressions = allExpressions.sheetExpressions.get(this.opts.workbookName)?.get(this.opts.sheetName);
|
|
163
|
+
this.previousExpressions = new Map(sheetExpressions || []);
|
|
164
|
+
}
|
|
165
|
+
this.deps.namedExpressionManager.setNamedExpressions(this.opts);
|
|
166
|
+
}
|
|
167
|
+
undo() {
|
|
168
|
+
if (!this.previousExpressions)
|
|
169
|
+
return;
|
|
170
|
+
if (this.opts.type === "global") {
|
|
171
|
+
this.deps.namedExpressionManager.setNamedExpressions({
|
|
172
|
+
type: "global",
|
|
173
|
+
expressions: this.previousExpressions
|
|
174
|
+
});
|
|
175
|
+
} else if (this.opts.type === "workbook") {
|
|
176
|
+
this.deps.namedExpressionManager.setNamedExpressions({
|
|
177
|
+
type: "workbook",
|
|
178
|
+
workbookName: this.opts.workbookName,
|
|
179
|
+
expressions: this.previousExpressions
|
|
180
|
+
});
|
|
181
|
+
} else if (this.opts.type === "sheet") {
|
|
182
|
+
this.deps.namedExpressionManager.setNamedExpressions({
|
|
183
|
+
type: "sheet",
|
|
184
|
+
workbookName: this.opts.workbookName,
|
|
185
|
+
sheetName: this.opts.sheetName,
|
|
186
|
+
expressions: this.previousExpressions
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
toAction() {
|
|
191
|
+
return {
|
|
192
|
+
type: ActionTypes.SET_NAMED_EXPRESSIONS,
|
|
193
|
+
payload: {
|
|
194
|
+
...this.opts,
|
|
195
|
+
expressions: Array.from(this.opts.expressions.entries())
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
export {
|
|
201
|
+
UpdateNamedExpressionCommand,
|
|
202
|
+
SetNamedExpressionsCommand,
|
|
203
|
+
RenameNamedExpressionCommand,
|
|
204
|
+
RemoveNamedExpressionCommand,
|
|
205
|
+
AddNamedExpressionCommand
|
|
206
|
+
};
|
|
207
|
+
|
|
208
|
+
//# debugId=7F0D0F102B4E5F7064756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/core/commands/named-expression-commands.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * Named Expression Commands - Commands that modify named expressions\n *\n * These commands all require re-evaluation after execution.\n */\n\nimport type { NamedExpressionManager } from \"../managers/named-expression-manager.mjs\";\nimport type { WorkbookManager } from \"../managers/workbook-manager.mjs\";\nimport type { NamedExpression } from \"../types.mjs\";\nimport type { EngineCommand, EngineAction } from \"./types.mjs\";\nimport { ActionTypes } from \"./types.mjs\";\n\n/**\n * Dependencies needed for named expression commands.\n */\nexport interface NamedExpressionCommandDeps {\n namedExpressionManager: NamedExpressionManager;\n workbookManager: WorkbookManager;\n renameNamedExpressionInFormula: (\n formula: string,\n oldName: string,\n newName: string\n ) => string;\n}\n\n/**\n * Helper to convert opts to getNamedExpression format\n */\nfunction optsToScope(opts: {\n expressionName: string;\n sheetName?: string;\n workbookName?: string;\n}): {\n name: string;\n scope:\n | { type: \"global\" }\n | { type: \"workbook\"; workbookName: string }\n | { type: \"sheet\"; workbookName: string; sheetName: string };\n} {\n if (opts.sheetName && opts.workbookName) {\n return {\n name: opts.expressionName,\n scope: {\n type: \"sheet\",\n workbookName: opts.workbookName,\n sheetName: opts.sheetName,\n },\n };\n } else if (opts.workbookName) {\n return {\n name: opts.expressionName,\n scope: { type: \"workbook\", workbookName: opts.workbookName },\n };\n } else {\n return {\n name: opts.expressionName,\n scope: { type: \"global\" },\n };\n }\n}\n\n/**\n * Command to add a named expression.\n */\nexport class AddNamedExpressionCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n\n constructor(\n private deps: NamedExpressionCommandDeps,\n private opts: {\n expression: string;\n expressionName: string;\n sheetName?: string;\n workbookName?: string;\n }\n ) {}\n\n execute(): void {\n this.deps.namedExpressionManager.addNamedExpression(this.opts);\n }\n\n undo(): void {\n this.deps.namedExpressionManager.removeNamedExpression({\n expressionName: this.opts.expressionName,\n sheetName: this.opts.sheetName,\n workbookName: this.opts.workbookName,\n });\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.ADD_NAMED_EXPRESSION,\n payload: this.opts,\n };\n }\n}\n\n/**\n * Command to remove a named expression.\n */\nexport class RemoveNamedExpressionCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private removedExpression: NamedExpression | undefined;\n\n constructor(\n private deps: NamedExpressionCommandDeps,\n private opts: {\n expressionName: string;\n sheetName?: string;\n workbookName?: string;\n }\n ) {}\n\n execute(): void {\n // Capture expression before removal\n this.removedExpression = this.deps.namedExpressionManager.getNamedExpression(\n optsToScope(this.opts)\n );\n\n this.deps.namedExpressionManager.removeNamedExpression(this.opts);\n }\n\n undo(): void {\n if (!this.removedExpression) return;\n\n this.deps.namedExpressionManager.addNamedExpression({\n expressionName: this.removedExpression.name,\n expression: this.removedExpression.expression,\n sheetName: this.opts.sheetName,\n workbookName: this.opts.workbookName,\n });\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.REMOVE_NAMED_EXPRESSION,\n payload: this.opts,\n };\n }\n}\n\n/**\n * Command to update a named expression.\n */\nexport class UpdateNamedExpressionCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private previousExpression: string | undefined;\n\n constructor(\n private deps: NamedExpressionCommandDeps,\n private opts: {\n expression: string;\n expressionName: string;\n sheetName?: string;\n workbookName?: string;\n }\n ) {}\n\n execute(): void {\n // Capture previous expression\n const existing = this.deps.namedExpressionManager.getNamedExpression(\n optsToScope(this.opts)\n );\n this.previousExpression = existing?.expression;\n\n this.deps.namedExpressionManager.updateNamedExpression(this.opts);\n }\n\n undo(): void {\n if (this.previousExpression === undefined) return;\n\n this.deps.namedExpressionManager.updateNamedExpression({\n expressionName: this.opts.expressionName,\n expression: this.previousExpression,\n sheetName: this.opts.sheetName,\n workbookName: this.opts.workbookName,\n });\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.UPDATE_NAMED_EXPRESSION,\n payload: this.opts,\n };\n }\n}\n\n/**\n * Command to rename a named expression.\n */\nexport class RenameNamedExpressionCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n\n constructor(\n private deps: NamedExpressionCommandDeps,\n private opts: {\n expressionName: string;\n sheetName?: string;\n workbookName?: string;\n newName: string;\n }\n ) {}\n\n execute(): void {\n this.deps.namedExpressionManager.renameNamedExpression(this.opts);\n\n // Update formulas in sheet cells\n this.deps.workbookManager.updateAllFormulas((formula) =>\n this.deps.renameNamedExpressionInFormula(\n formula,\n this.opts.expressionName,\n this.opts.newName\n )\n );\n\n // Update named expressions\n this.deps.namedExpressionManager.updateAllNamedExpressions((formula) =>\n this.deps.renameNamedExpressionInFormula(\n formula,\n this.opts.expressionName,\n this.opts.newName\n )\n );\n }\n\n undo(): void {\n // Rename back\n this.deps.namedExpressionManager.renameNamedExpression({\n expressionName: this.opts.newName,\n sheetName: this.opts.sheetName,\n workbookName: this.opts.workbookName,\n newName: this.opts.expressionName,\n });\n\n // Update formulas back\n this.deps.workbookManager.updateAllFormulas((formula) =>\n this.deps.renameNamedExpressionInFormula(\n formula,\n this.opts.newName,\n this.opts.expressionName\n )\n );\n\n // Update named expressions back\n this.deps.namedExpressionManager.updateAllNamedExpressions((formula) =>\n this.deps.renameNamedExpressionInFormula(\n formula,\n this.opts.newName,\n this.opts.expressionName\n )\n );\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.RENAME_NAMED_EXPRESSION,\n payload: this.opts,\n };\n }\n}\n\n/**\n * Options for setNamedExpressions command.\n */\ntype SetNamedExpressionsOpts = (\n | { type: \"global\" }\n | { type: \"sheet\"; sheetName: string; workbookName: string }\n | { type: \"workbook\"; workbookName: string }\n) & {\n expressions: Map<string, NamedExpression>;\n};\n\n/**\n * Command to set named expressions (replace all at a scope).\n */\nexport class SetNamedExpressionsCommand implements EngineCommand {\n readonly requiresReevaluation = true;\n private previousExpressions: Map<string, NamedExpression> | undefined;\n\n constructor(\n private deps: NamedExpressionCommandDeps,\n private opts: SetNamedExpressionsOpts\n ) {}\n\n execute(): void {\n // Capture previous expressions at this scope\n const allExpressions = this.deps.namedExpressionManager.getNamedExpressions();\n\n if (this.opts.type === \"global\") {\n this.previousExpressions = new Map(allExpressions.globalExpressions);\n } else if (this.opts.type === \"workbook\") {\n this.previousExpressions = new Map(\n allExpressions.workbookExpressions.get(this.opts.workbookName) || []\n );\n } else if (this.opts.type === \"sheet\") {\n const sheetExpressions = allExpressions.sheetExpressions\n .get(this.opts.workbookName)\n ?.get(this.opts.sheetName);\n this.previousExpressions = new Map(sheetExpressions || []);\n }\n\n this.deps.namedExpressionManager.setNamedExpressions(this.opts);\n }\n\n undo(): void {\n if (!this.previousExpressions) return;\n\n // Restore previous expressions\n if (this.opts.type === \"global\") {\n this.deps.namedExpressionManager.setNamedExpressions({\n type: \"global\",\n expressions: this.previousExpressions,\n });\n } else if (this.opts.type === \"workbook\") {\n this.deps.namedExpressionManager.setNamedExpressions({\n type: \"workbook\",\n workbookName: this.opts.workbookName,\n expressions: this.previousExpressions,\n });\n } else if (this.opts.type === \"sheet\") {\n this.deps.namedExpressionManager.setNamedExpressions({\n type: \"sheet\",\n workbookName: this.opts.workbookName,\n sheetName: this.opts.sheetName,\n expressions: this.previousExpressions,\n });\n }\n }\n\n toAction(): EngineAction {\n return {\n type: ActionTypes.SET_NAMED_EXPRESSIONS,\n payload: {\n ...this.opts,\n expressions: Array.from(this.opts.expressions.entries()),\n },\n };\n }\n}\n\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "7F0D0F102B4E5F7064756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|