@ricsam/formula-engine 0.0.17 → 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 (101) 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 +3 -5
  12. package/dist/cjs/core/autofill-utils.cjs.map +3 -3
  13. package/dist/cjs/core/commands/command-executor.cjs +140 -0
  14. package/dist/cjs/core/commands/command-executor.cjs.map +10 -0
  15. package/dist/cjs/core/commands/content-commands.cjs +574 -0
  16. package/dist/cjs/core/commands/content-commands.cjs.map +10 -0
  17. package/dist/cjs/core/commands/index.cjs +95 -0
  18. package/dist/cjs/core/commands/index.cjs.map +10 -0
  19. package/dist/cjs/core/commands/metadata-commands.cjs +150 -0
  20. package/dist/cjs/core/commands/metadata-commands.cjs.map +10 -0
  21. package/dist/cjs/core/commands/named-expression-commands.cjs +238 -0
  22. package/dist/cjs/core/commands/named-expression-commands.cjs.map +10 -0
  23. package/dist/cjs/core/commands/structure-commands.cjs +495 -0
  24. package/dist/cjs/core/commands/structure-commands.cjs.map +10 -0
  25. package/dist/cjs/core/commands/style-commands.cjs +219 -0
  26. package/dist/cjs/core/commands/style-commands.cjs.map +10 -0
  27. package/dist/cjs/core/commands/table-commands.cjs +226 -0
  28. package/dist/cjs/core/commands/table-commands.cjs.map +10 -0
  29. package/dist/cjs/core/commands/types.cjs +72 -0
  30. package/dist/cjs/core/commands/types.cjs.map +10 -0
  31. package/dist/cjs/core/engine.cjs +159 -296
  32. package/dist/cjs/core/engine.cjs.map +3 -3
  33. package/dist/cjs/core/managers/api-schema-manager.cjs +304 -0
  34. package/dist/cjs/core/managers/api-schema-manager.cjs.map +10 -0
  35. package/dist/cjs/core/managers/copy-manager.cjs +1 -2
  36. package/dist/cjs/core/managers/copy-manager.cjs.map +3 -3
  37. package/dist/cjs/core/types.cjs.map +2 -2
  38. package/dist/cjs/lib.cjs +13 -2
  39. package/dist/cjs/lib.cjs.map +3 -3
  40. package/dist/cjs/package.json +1 -1
  41. package/dist/mjs/core/api/api-builder.mjs +37 -0
  42. package/dist/mjs/core/api/api-builder.mjs.map +10 -0
  43. package/dist/mjs/core/api/api-helpers.mjs +161 -0
  44. package/dist/mjs/core/api/api-helpers.mjs.map +10 -0
  45. package/dist/mjs/core/api/api.mjs +35 -0
  46. package/dist/mjs/core/api/api.mjs.map +10 -0
  47. package/dist/mjs/core/api/cell-orm.mjs +49 -0
  48. package/dist/mjs/core/api/cell-orm.mjs.map +10 -0
  49. package/dist/mjs/core/api/table-orm.mjs +148 -0
  50. package/dist/mjs/core/api/table-orm.mjs.map +10 -0
  51. package/dist/mjs/core/autofill-utils.mjs +3 -5
  52. package/dist/mjs/core/autofill-utils.mjs.map +3 -3
  53. package/dist/mjs/core/commands/command-executor.mjs +109 -0
  54. package/dist/mjs/core/commands/command-executor.mjs.map +10 -0
  55. package/dist/mjs/core/commands/content-commands.mjs +544 -0
  56. package/dist/mjs/core/commands/content-commands.mjs.map +10 -0
  57. package/dist/mjs/core/commands/index.mjs +87 -0
  58. package/dist/mjs/core/commands/index.mjs.map +10 -0
  59. package/dist/mjs/core/commands/metadata-commands.mjs +120 -0
  60. package/dist/mjs/core/commands/metadata-commands.mjs.map +10 -0
  61. package/dist/mjs/core/commands/named-expression-commands.mjs +208 -0
  62. package/dist/mjs/core/commands/named-expression-commands.mjs.map +10 -0
  63. package/dist/mjs/core/commands/structure-commands.mjs +465 -0
  64. package/dist/mjs/core/commands/structure-commands.mjs.map +10 -0
  65. package/dist/mjs/core/commands/style-commands.mjs +189 -0
  66. package/dist/mjs/core/commands/style-commands.mjs.map +10 -0
  67. package/dist/mjs/core/commands/table-commands.mjs +196 -0
  68. package/dist/mjs/core/commands/table-commands.mjs.map +10 -0
  69. package/dist/mjs/core/commands/types.mjs +42 -0
  70. package/dist/mjs/core/commands/types.mjs.map +10 -0
  71. package/dist/mjs/core/engine.mjs +194 -296
  72. package/dist/mjs/core/engine.mjs.map +3 -3
  73. package/dist/mjs/core/managers/api-schema-manager.mjs +274 -0
  74. package/dist/mjs/core/managers/api-schema-manager.mjs.map +10 -0
  75. package/dist/mjs/core/managers/copy-manager.mjs +1 -2
  76. package/dist/mjs/core/managers/copy-manager.mjs.map +3 -3
  77. package/dist/mjs/core/types.mjs.map +2 -2
  78. package/dist/mjs/lib.mjs +13 -2
  79. package/dist/mjs/lib.mjs.map +3 -3
  80. package/dist/mjs/package.json +1 -1
  81. package/dist/types/core/api/api-builder.d.ts +16 -0
  82. package/dist/types/core/api/api-helpers.d.ts +37 -0
  83. package/dist/types/core/api/api.d.ts +83 -0
  84. package/dist/types/core/api/api.type-test.d.ts +1 -0
  85. package/dist/types/core/api/cell-orm.d.ts +29 -0
  86. package/dist/types/core/api/table-orm.d.ts +46 -0
  87. package/dist/types/core/autofill-utils.d.ts +2 -9
  88. package/dist/types/core/commands/command-executor.d.ts +83 -0
  89. package/dist/types/core/commands/content-commands.d.ts +142 -0
  90. package/dist/types/core/commands/index.d.ts +16 -0
  91. package/dist/types/core/commands/metadata-commands.d.ts +55 -0
  92. package/dist/types/core/commands/named-expression-commands.d.ts +115 -0
  93. package/dist/types/core/commands/structure-commands.d.ts +132 -0
  94. package/dist/types/core/commands/style-commands.d.ts +76 -0
  95. package/dist/types/core/commands/table-commands.d.ts +104 -0
  96. package/dist/types/core/commands/types.d.ts +114 -0
  97. package/dist/types/core/engine.d.ts +130 -26
  98. package/dist/types/core/managers/api-schema-manager.d.ts +121 -0
  99. package/dist/types/core/types.d.ts +1 -1
  100. package/dist/types/lib.d.ts +8 -0
  101. package/package.json +1 -1
@@ -0,0 +1,87 @@
1
+ // src/core/commands/index.ts
2
+ export * from "./types.mjs";
3
+ import { CommandExecutor, SchemaIntegrityError } from "./command-executor.mjs";
4
+ import {
5
+ SetCellContentCommand,
6
+ SetSheetContentCommand,
7
+ ClearRangeCommand,
8
+ PasteCellsCommand,
9
+ FillAreasCommand,
10
+ MoveCellCommand,
11
+ MoveRangeCommand,
12
+ AutoFillCommand
13
+ } from "./content-commands.mjs";
14
+ import {
15
+ AddWorkbookCommand,
16
+ RemoveWorkbookCommand,
17
+ RenameWorkbookCommand,
18
+ CloneWorkbookCommand,
19
+ AddSheetCommand,
20
+ RemoveSheetCommand,
21
+ RenameSheetCommand
22
+ } from "./structure-commands.mjs";
23
+ import {
24
+ AddTableCommand,
25
+ RemoveTableCommand,
26
+ RenameTableCommand,
27
+ UpdateTableCommand,
28
+ ResetTablesCommand
29
+ } from "./table-commands.mjs";
30
+ import {
31
+ AddNamedExpressionCommand,
32
+ RemoveNamedExpressionCommand,
33
+ UpdateNamedExpressionCommand,
34
+ RenameNamedExpressionCommand,
35
+ SetNamedExpressionsCommand
36
+ } from "./named-expression-commands.mjs";
37
+ import {
38
+ SetCellMetadataCommand,
39
+ SetSheetMetadataCommand,
40
+ SetWorkbookMetadataCommand
41
+ } from "./metadata-commands.mjs";
42
+ import {
43
+ AddConditionalStyleCommand,
44
+ RemoveConditionalStyleCommand,
45
+ AddCellStyleCommand,
46
+ RemoveCellStyleCommand,
47
+ ClearCellStylesCommand
48
+ } from "./style-commands.mjs";
49
+ export {
50
+ UpdateTableCommand,
51
+ UpdateNamedExpressionCommand,
52
+ SetWorkbookMetadataCommand,
53
+ SetSheetMetadataCommand,
54
+ SetSheetContentCommand,
55
+ SetNamedExpressionsCommand,
56
+ SetCellMetadataCommand,
57
+ SetCellContentCommand,
58
+ SchemaIntegrityError,
59
+ ResetTablesCommand,
60
+ RenameWorkbookCommand,
61
+ RenameTableCommand,
62
+ RenameSheetCommand,
63
+ RenameNamedExpressionCommand,
64
+ RemoveWorkbookCommand,
65
+ RemoveTableCommand,
66
+ RemoveSheetCommand,
67
+ RemoveNamedExpressionCommand,
68
+ RemoveConditionalStyleCommand,
69
+ RemoveCellStyleCommand,
70
+ PasteCellsCommand,
71
+ MoveRangeCommand,
72
+ MoveCellCommand,
73
+ FillAreasCommand,
74
+ CommandExecutor,
75
+ CloneWorkbookCommand,
76
+ ClearRangeCommand,
77
+ ClearCellStylesCommand,
78
+ AutoFillCommand,
79
+ AddWorkbookCommand,
80
+ AddTableCommand,
81
+ AddSheetCommand,
82
+ AddNamedExpressionCommand,
83
+ AddConditionalStyleCommand,
84
+ AddCellStyleCommand
85
+ };
86
+
87
+ //# debugId=6091959346EC322C64756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/core/commands/index.ts"],
4
+ "sourcesContent": [
5
+ "/**\n * Commands Module - Command Pattern implementation for FormulaEngine\n *\n * This module provides:\n * - EngineCommand interface for all commands\n * - CommandExecutor for execution with undo/redo and schema validation\n * - All command implementations organized by category\n */\n\n// Types and executor\nexport * from \"./types.mjs\";\nexport { CommandExecutor, SchemaIntegrityError } from \"./command-executor.mjs\";\n\n// Content commands\nexport {\n SetCellContentCommand,\n SetSheetContentCommand,\n ClearRangeCommand,\n PasteCellsCommand,\n FillAreasCommand,\n MoveCellCommand,\n MoveRangeCommand,\n AutoFillCommand,\n} from \"./content-commands.mjs\";\n\n// Structure commands\nexport {\n AddWorkbookCommand,\n RemoveWorkbookCommand,\n RenameWorkbookCommand,\n CloneWorkbookCommand,\n AddSheetCommand,\n RemoveSheetCommand,\n RenameSheetCommand,\n type StructureCommandDeps,\n} from \"./structure-commands.mjs\";\n\n// Table commands\nexport {\n AddTableCommand,\n RemoveTableCommand,\n RenameTableCommand,\n UpdateTableCommand,\n ResetTablesCommand,\n type TableCommandDeps,\n} from \"./table-commands.mjs\";\n\n// Named expression commands\nexport {\n AddNamedExpressionCommand,\n RemoveNamedExpressionCommand,\n UpdateNamedExpressionCommand,\n RenameNamedExpressionCommand,\n SetNamedExpressionsCommand,\n type NamedExpressionCommandDeps,\n} from \"./named-expression-commands.mjs\";\n\n// Metadata commands\nexport {\n SetCellMetadataCommand,\n SetSheetMetadataCommand,\n SetWorkbookMetadataCommand,\n} from \"./metadata-commands.mjs\";\n\n// Style commands\nexport {\n AddConditionalStyleCommand,\n RemoveConditionalStyleCommand,\n AddCellStyleCommand,\n RemoveCellStyleCommand,\n ClearCellStylesCommand,\n} from \"./style-commands.mjs\";\n\n"
6
+ ],
7
+ "mappings": ";AAUA;AACA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA;AAAA;AAAA;AAAA;AAAA;AAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;",
8
+ "debugId": "6091959346EC322C64756E2164756E21",
9
+ "names": []
10
+ }
@@ -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
+ }