@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,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TableOrm - Object-Relational Mapping for table data
|
|
3
|
+
*
|
|
4
|
+
* Provides CRUD operations for table data with type-safe access.
|
|
5
|
+
* Used as the `this` context for custom table API methods.
|
|
6
|
+
*/
|
|
7
|
+
import type { FormulaEngine } from "../engine";
|
|
8
|
+
import { type TableSchemaHeaders } from "./api-helpers";
|
|
9
|
+
export declare class TableOrm<TItem extends Record<string, unknown>> {
|
|
10
|
+
private engine;
|
|
11
|
+
private workbookName;
|
|
12
|
+
private tableName;
|
|
13
|
+
private headers;
|
|
14
|
+
private namespace;
|
|
15
|
+
constructor(engine: FormulaEngine<any, any>, workbookName: string, tableName: string, headers: TableSchemaHeaders, namespace: string);
|
|
16
|
+
/**
|
|
17
|
+
* Get the table definition from the engine
|
|
18
|
+
*/
|
|
19
|
+
private getTable;
|
|
20
|
+
/**
|
|
21
|
+
* Find the first row matching the filter
|
|
22
|
+
*/
|
|
23
|
+
findWhere(filter: Partial<TItem>): TItem | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* Find all rows matching the filter
|
|
26
|
+
*/
|
|
27
|
+
findAllWhere(filter: Partial<TItem>): TItem[];
|
|
28
|
+
/**
|
|
29
|
+
* Append a new row to the table
|
|
30
|
+
*/
|
|
31
|
+
append(item: TItem): TItem;
|
|
32
|
+
/**
|
|
33
|
+
* Update all rows matching the filter
|
|
34
|
+
* Returns the number of rows updated
|
|
35
|
+
*/
|
|
36
|
+
updateWhere(filter: Partial<TItem>, update: Partial<TItem>): number;
|
|
37
|
+
/**
|
|
38
|
+
* Remove all rows matching the filter
|
|
39
|
+
* Returns the number of rows removed
|
|
40
|
+
*/
|
|
41
|
+
removeWhere(filter: Partial<TItem>): number;
|
|
42
|
+
/**
|
|
43
|
+
* Get the count of data rows in the table
|
|
44
|
+
*/
|
|
45
|
+
count(): number;
|
|
46
|
+
}
|
|
@@ -1,21 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* AutoFill class for handling spreadsheet autofill functionality
|
|
3
3
|
*/
|
|
4
|
-
import type {
|
|
4
|
+
import type { SpreadsheetRange } from "./types";
|
|
5
5
|
import type { FillDirection } from "@ricsam/selection-manager";
|
|
6
6
|
import type { WorkbookManager } from "./managers/workbook-manager";
|
|
7
7
|
import type { StyleManager } from "./managers/style-manager";
|
|
8
8
|
export declare class AutoFill {
|
|
9
9
|
private workbookManager;
|
|
10
10
|
private styleManager;
|
|
11
|
-
|
|
12
|
-
constructor(workbookManager: WorkbookManager, styleManager: StyleManager, engine: {
|
|
13
|
-
setCellContent: (address: CellAddress, content: SerializedCellValue) => void;
|
|
14
|
-
setSheetContent: (opts: {
|
|
15
|
-
sheetName: string;
|
|
16
|
-
workbookName: string;
|
|
17
|
-
}, content: Map<string, SerializedCellValue>) => void;
|
|
18
|
-
});
|
|
11
|
+
constructor(workbookManager: WorkbookManager, styleManager: StyleManager);
|
|
19
12
|
/**
|
|
20
13
|
* Converts a SpreadsheetRange to FiniteSpreadsheetRange, throwing an error if infinite
|
|
21
14
|
*/
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CommandExecutor - Executes commands with undo/redo support and schema validation
|
|
3
|
+
*
|
|
4
|
+
* Handles:
|
|
5
|
+
* - Command execution with optional re-evaluation
|
|
6
|
+
* - Schema validation after re-evaluation
|
|
7
|
+
* - Automatic rollback on validation failure
|
|
8
|
+
* - Undo/redo stacks
|
|
9
|
+
* - Action serialization for persistence
|
|
10
|
+
*/
|
|
11
|
+
import type { Declaration } from "../api/api";
|
|
12
|
+
import type { EvaluationManager } from "../managers/evaluation-manager";
|
|
13
|
+
import type { EventManager } from "../managers/event-manager";
|
|
14
|
+
import type { EngineCommand, EngineAction, ExecuteOptions, SchemaValidationResult, SchemaValidationErrorInfo } from "./types";
|
|
15
|
+
/**
|
|
16
|
+
* Error thrown when schema integrity validation fails.
|
|
17
|
+
* Contains all validation errors that occurred.
|
|
18
|
+
*/
|
|
19
|
+
export declare class SchemaIntegrityError extends Error {
|
|
20
|
+
errors: SchemaValidationErrorInfo[];
|
|
21
|
+
constructor(errors: SchemaValidationErrorInfo[]);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* CommandExecutor manages command execution with validation and undo/redo support.
|
|
25
|
+
*/
|
|
26
|
+
export declare class CommandExecutor {
|
|
27
|
+
private apiDeclaration;
|
|
28
|
+
private evaluationManager;
|
|
29
|
+
private eventManager;
|
|
30
|
+
private validateAllSchemas;
|
|
31
|
+
private undoStack;
|
|
32
|
+
private redoStack;
|
|
33
|
+
private actionLog;
|
|
34
|
+
constructor(apiDeclaration: Declaration | undefined, evaluationManager: EvaluationManager, eventManager: EventManager, validateAllSchemas: () => SchemaValidationResult);
|
|
35
|
+
/**
|
|
36
|
+
* Execute a command with optional schema validation.
|
|
37
|
+
*
|
|
38
|
+
* @param command - The command to execute
|
|
39
|
+
* @param options - Execution options
|
|
40
|
+
* @throws SchemaIntegrityError if validation fails
|
|
41
|
+
*/
|
|
42
|
+
execute(command: EngineCommand, options?: ExecuteOptions): void;
|
|
43
|
+
/**
|
|
44
|
+
* Undo the last command.
|
|
45
|
+
*
|
|
46
|
+
* @returns true if undo was performed, false if nothing to undo
|
|
47
|
+
*/
|
|
48
|
+
undo(): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Redo the last undone command.
|
|
51
|
+
*
|
|
52
|
+
* @returns true if redo was performed, false if nothing to redo
|
|
53
|
+
*/
|
|
54
|
+
redo(): boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Check if undo is available.
|
|
57
|
+
*/
|
|
58
|
+
canUndo(): boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Check if redo is available.
|
|
61
|
+
*/
|
|
62
|
+
canRedo(): boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Get the action log for persistence/collaboration.
|
|
65
|
+
*/
|
|
66
|
+
getActionLog(): EngineAction[];
|
|
67
|
+
/**
|
|
68
|
+
* Clear the action log.
|
|
69
|
+
*/
|
|
70
|
+
clearActionLog(): void;
|
|
71
|
+
/**
|
|
72
|
+
* Clear undo/redo stacks.
|
|
73
|
+
*/
|
|
74
|
+
clearHistory(): void;
|
|
75
|
+
/**
|
|
76
|
+
* Get the number of commands in the undo stack.
|
|
77
|
+
*/
|
|
78
|
+
getUndoStackSize(): number;
|
|
79
|
+
/**
|
|
80
|
+
* Get the number of commands in the redo stack.
|
|
81
|
+
*/
|
|
82
|
+
getRedoStackSize(): number;
|
|
83
|
+
}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content Commands - Commands that modify cell/sheet content
|
|
3
|
+
*
|
|
4
|
+
* These commands all require re-evaluation after execution.
|
|
5
|
+
*/
|
|
6
|
+
import type { WorkbookManager } from "../managers/workbook-manager";
|
|
7
|
+
import type { CopyManager } from "../managers/copy-manager";
|
|
8
|
+
import type { CellAddress, CopyCellsOptions, RangeAddress, SerializedCellValue } from "../types";
|
|
9
|
+
import type { EngineCommand, EngineAction } from "./types";
|
|
10
|
+
/**
|
|
11
|
+
* Command to set a single cell's content.
|
|
12
|
+
*/
|
|
13
|
+
export declare class SetCellContentCommand implements EngineCommand {
|
|
14
|
+
private workbookManager;
|
|
15
|
+
private address;
|
|
16
|
+
private newContent;
|
|
17
|
+
readonly requiresReevaluation = true;
|
|
18
|
+
private previousValue;
|
|
19
|
+
private hadPreviousValue;
|
|
20
|
+
constructor(workbookManager: WorkbookManager, address: CellAddress, newContent: SerializedCellValue);
|
|
21
|
+
execute(): void;
|
|
22
|
+
undo(): void;
|
|
23
|
+
toAction(): EngineAction;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Command to set an entire sheet's content.
|
|
27
|
+
*/
|
|
28
|
+
export declare class SetSheetContentCommand implements EngineCommand {
|
|
29
|
+
private workbookManager;
|
|
30
|
+
private opts;
|
|
31
|
+
private newContent;
|
|
32
|
+
readonly requiresReevaluation = true;
|
|
33
|
+
private previousContent;
|
|
34
|
+
constructor(workbookManager: WorkbookManager, opts: {
|
|
35
|
+
workbookName: string;
|
|
36
|
+
sheetName: string;
|
|
37
|
+
}, newContent: Map<string, SerializedCellValue>);
|
|
38
|
+
execute(): void;
|
|
39
|
+
undo(): void;
|
|
40
|
+
toAction(): EngineAction;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Command to clear a range of cells.
|
|
44
|
+
*/
|
|
45
|
+
export declare class ClearRangeCommand implements EngineCommand {
|
|
46
|
+
private workbookManager;
|
|
47
|
+
private address;
|
|
48
|
+
readonly requiresReevaluation = true;
|
|
49
|
+
private clearedCells;
|
|
50
|
+
constructor(workbookManager: WorkbookManager, address: RangeAddress);
|
|
51
|
+
execute(): void;
|
|
52
|
+
undo(): void;
|
|
53
|
+
toAction(): EngineAction;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Command to paste cells.
|
|
57
|
+
*/
|
|
58
|
+
export declare class PasteCellsCommand implements EngineCommand {
|
|
59
|
+
private workbookManager;
|
|
60
|
+
private copyManager;
|
|
61
|
+
private source;
|
|
62
|
+
private target;
|
|
63
|
+
private options;
|
|
64
|
+
readonly requiresReevaluation = true;
|
|
65
|
+
private targetSnapshots;
|
|
66
|
+
private sourceSnapshots;
|
|
67
|
+
constructor(workbookManager: WorkbookManager, copyManager: CopyManager, source: CellAddress[], target: CellAddress, options: CopyCellsOptions);
|
|
68
|
+
execute(): void;
|
|
69
|
+
undo(): void;
|
|
70
|
+
toAction(): EngineAction;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Command to fill areas with a seed range.
|
|
74
|
+
*/
|
|
75
|
+
export declare class FillAreasCommand implements EngineCommand {
|
|
76
|
+
private workbookManager;
|
|
77
|
+
private copyManager;
|
|
78
|
+
private seedRange;
|
|
79
|
+
private targetRanges;
|
|
80
|
+
private options;
|
|
81
|
+
readonly requiresReevaluation = true;
|
|
82
|
+
private targetSnapshots;
|
|
83
|
+
constructor(workbookManager: WorkbookManager, copyManager: CopyManager, seedRange: RangeAddress, targetRanges: RangeAddress[], options: CopyCellsOptions);
|
|
84
|
+
execute(): void;
|
|
85
|
+
undo(): void;
|
|
86
|
+
toAction(): EngineAction;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Command to move a single cell.
|
|
90
|
+
*/
|
|
91
|
+
export declare class MoveCellCommand implements EngineCommand {
|
|
92
|
+
private workbookManager;
|
|
93
|
+
private copyManager;
|
|
94
|
+
private source;
|
|
95
|
+
private target;
|
|
96
|
+
readonly requiresReevaluation = true;
|
|
97
|
+
private sourceSnapshot;
|
|
98
|
+
private targetSnapshot;
|
|
99
|
+
constructor(workbookManager: WorkbookManager, copyManager: CopyManager, source: CellAddress, target: CellAddress);
|
|
100
|
+
execute(): void;
|
|
101
|
+
undo(): void;
|
|
102
|
+
toAction(): EngineAction;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Command to move a range of cells.
|
|
106
|
+
*/
|
|
107
|
+
export declare class MoveRangeCommand implements EngineCommand {
|
|
108
|
+
private workbookManager;
|
|
109
|
+
private copyManager;
|
|
110
|
+
private sourceRange;
|
|
111
|
+
private target;
|
|
112
|
+
readonly requiresReevaluation = true;
|
|
113
|
+
private sourceSnapshots;
|
|
114
|
+
private targetSnapshots;
|
|
115
|
+
constructor(workbookManager: WorkbookManager, copyManager: CopyManager, sourceRange: RangeAddress, target: CellAddress);
|
|
116
|
+
execute(): void;
|
|
117
|
+
undo(): void;
|
|
118
|
+
toAction(): EngineAction;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Command to auto-fill ranges based on a seed pattern.
|
|
122
|
+
* Captures the entire affected area for undo.
|
|
123
|
+
*/
|
|
124
|
+
export declare class AutoFillCommand implements EngineCommand {
|
|
125
|
+
private workbookManager;
|
|
126
|
+
private styleManager;
|
|
127
|
+
private autoFillManager;
|
|
128
|
+
private opts;
|
|
129
|
+
private seedRange;
|
|
130
|
+
private fillRanges;
|
|
131
|
+
private direction;
|
|
132
|
+
readonly requiresReevaluation = true;
|
|
133
|
+
private previousContent;
|
|
134
|
+
private previousMetadata;
|
|
135
|
+
constructor(workbookManager: WorkbookManager, styleManager: import("../managers/style-manager").StyleManager, autoFillManager: import("../autofill-utils").AutoFill, opts: {
|
|
136
|
+
sheetName: string;
|
|
137
|
+
workbookName: string;
|
|
138
|
+
}, seedRange: import("../types").SpreadsheetRange, fillRanges: import("../types").SpreadsheetRange[], direction: import("@ricsam/selection-manager").FillDirection);
|
|
139
|
+
execute(): void;
|
|
140
|
+
undo(): void;
|
|
141
|
+
toAction(): EngineAction;
|
|
142
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Metadata Commands - Commands that modify cell/sheet/workbook metadata
|
|
3
|
+
*
|
|
4
|
+
* These commands do NOT require re-evaluation after execution.
|
|
5
|
+
* They only affect metadata, not cell values or formulas.
|
|
6
|
+
*/
|
|
7
|
+
import type { WorkbookManager } from "../managers/workbook-manager";
|
|
8
|
+
import type { CellAddress } from "../types";
|
|
9
|
+
import type { EngineCommand, EngineAction } from "./types";
|
|
10
|
+
/**
|
|
11
|
+
* Command to set cell metadata.
|
|
12
|
+
*/
|
|
13
|
+
export declare class SetCellMetadataCommand<TMetadata = unknown> implements EngineCommand {
|
|
14
|
+
private workbookManager;
|
|
15
|
+
private address;
|
|
16
|
+
private newMetadata;
|
|
17
|
+
readonly requiresReevaluation = false;
|
|
18
|
+
private previousMetadata;
|
|
19
|
+
private hadPreviousMetadata;
|
|
20
|
+
constructor(workbookManager: WorkbookManager, address: CellAddress, newMetadata: TMetadata | undefined);
|
|
21
|
+
execute(): void;
|
|
22
|
+
undo(): void;
|
|
23
|
+
toAction(): EngineAction;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Command to set sheet metadata.
|
|
27
|
+
*/
|
|
28
|
+
export declare class SetSheetMetadataCommand<TMetadata = unknown> implements EngineCommand {
|
|
29
|
+
private workbookManager;
|
|
30
|
+
private opts;
|
|
31
|
+
private newMetadata;
|
|
32
|
+
readonly requiresReevaluation = false;
|
|
33
|
+
private previousMetadata;
|
|
34
|
+
constructor(workbookManager: WorkbookManager, opts: {
|
|
35
|
+
workbookName: string;
|
|
36
|
+
sheetName: string;
|
|
37
|
+
}, newMetadata: TMetadata);
|
|
38
|
+
execute(): void;
|
|
39
|
+
undo(): void;
|
|
40
|
+
toAction(): EngineAction;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Command to set workbook metadata.
|
|
44
|
+
*/
|
|
45
|
+
export declare class SetWorkbookMetadataCommand<TMetadata = unknown> implements EngineCommand {
|
|
46
|
+
private workbookManager;
|
|
47
|
+
private workbookName;
|
|
48
|
+
private newMetadata;
|
|
49
|
+
readonly requiresReevaluation = false;
|
|
50
|
+
private previousMetadata;
|
|
51
|
+
constructor(workbookManager: WorkbookManager, workbookName: string, newMetadata: TMetadata);
|
|
52
|
+
execute(): void;
|
|
53
|
+
undo(): void;
|
|
54
|
+
toAction(): EngineAction;
|
|
55
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Named Expression Commands - Commands that modify named expressions
|
|
3
|
+
*
|
|
4
|
+
* These commands all require re-evaluation after execution.
|
|
5
|
+
*/
|
|
6
|
+
import type { NamedExpressionManager } from "../managers/named-expression-manager";
|
|
7
|
+
import type { WorkbookManager } from "../managers/workbook-manager";
|
|
8
|
+
import type { NamedExpression } from "../types";
|
|
9
|
+
import type { EngineCommand, EngineAction } from "./types";
|
|
10
|
+
/**
|
|
11
|
+
* Dependencies needed for named expression commands.
|
|
12
|
+
*/
|
|
13
|
+
export interface NamedExpressionCommandDeps {
|
|
14
|
+
namedExpressionManager: NamedExpressionManager;
|
|
15
|
+
workbookManager: WorkbookManager;
|
|
16
|
+
renameNamedExpressionInFormula: (formula: string, oldName: string, newName: string) => string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Command to add a named expression.
|
|
20
|
+
*/
|
|
21
|
+
export declare class AddNamedExpressionCommand implements EngineCommand {
|
|
22
|
+
private deps;
|
|
23
|
+
private opts;
|
|
24
|
+
readonly requiresReevaluation = true;
|
|
25
|
+
constructor(deps: NamedExpressionCommandDeps, opts: {
|
|
26
|
+
expression: string;
|
|
27
|
+
expressionName: string;
|
|
28
|
+
sheetName?: string;
|
|
29
|
+
workbookName?: string;
|
|
30
|
+
});
|
|
31
|
+
execute(): void;
|
|
32
|
+
undo(): void;
|
|
33
|
+
toAction(): EngineAction;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Command to remove a named expression.
|
|
37
|
+
*/
|
|
38
|
+
export declare class RemoveNamedExpressionCommand implements EngineCommand {
|
|
39
|
+
private deps;
|
|
40
|
+
private opts;
|
|
41
|
+
readonly requiresReevaluation = true;
|
|
42
|
+
private removedExpression;
|
|
43
|
+
constructor(deps: NamedExpressionCommandDeps, opts: {
|
|
44
|
+
expressionName: string;
|
|
45
|
+
sheetName?: string;
|
|
46
|
+
workbookName?: string;
|
|
47
|
+
});
|
|
48
|
+
execute(): void;
|
|
49
|
+
undo(): void;
|
|
50
|
+
toAction(): EngineAction;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Command to update a named expression.
|
|
54
|
+
*/
|
|
55
|
+
export declare class UpdateNamedExpressionCommand implements EngineCommand {
|
|
56
|
+
private deps;
|
|
57
|
+
private opts;
|
|
58
|
+
readonly requiresReevaluation = true;
|
|
59
|
+
private previousExpression;
|
|
60
|
+
constructor(deps: NamedExpressionCommandDeps, opts: {
|
|
61
|
+
expression: string;
|
|
62
|
+
expressionName: string;
|
|
63
|
+
sheetName?: string;
|
|
64
|
+
workbookName?: string;
|
|
65
|
+
});
|
|
66
|
+
execute(): void;
|
|
67
|
+
undo(): void;
|
|
68
|
+
toAction(): EngineAction;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Command to rename a named expression.
|
|
72
|
+
*/
|
|
73
|
+
export declare class RenameNamedExpressionCommand implements EngineCommand {
|
|
74
|
+
private deps;
|
|
75
|
+
private opts;
|
|
76
|
+
readonly requiresReevaluation = true;
|
|
77
|
+
constructor(deps: NamedExpressionCommandDeps, opts: {
|
|
78
|
+
expressionName: string;
|
|
79
|
+
sheetName?: string;
|
|
80
|
+
workbookName?: string;
|
|
81
|
+
newName: string;
|
|
82
|
+
});
|
|
83
|
+
execute(): void;
|
|
84
|
+
undo(): void;
|
|
85
|
+
toAction(): EngineAction;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Options for setNamedExpressions command.
|
|
89
|
+
*/
|
|
90
|
+
type SetNamedExpressionsOpts = ({
|
|
91
|
+
type: "global";
|
|
92
|
+
} | {
|
|
93
|
+
type: "sheet";
|
|
94
|
+
sheetName: string;
|
|
95
|
+
workbookName: string;
|
|
96
|
+
} | {
|
|
97
|
+
type: "workbook";
|
|
98
|
+
workbookName: string;
|
|
99
|
+
}) & {
|
|
100
|
+
expressions: Map<string, NamedExpression>;
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* Command to set named expressions (replace all at a scope).
|
|
104
|
+
*/
|
|
105
|
+
export declare class SetNamedExpressionsCommand implements EngineCommand {
|
|
106
|
+
private deps;
|
|
107
|
+
private opts;
|
|
108
|
+
readonly requiresReevaluation = true;
|
|
109
|
+
private previousExpressions;
|
|
110
|
+
constructor(deps: NamedExpressionCommandDeps, opts: SetNamedExpressionsOpts);
|
|
111
|
+
execute(): void;
|
|
112
|
+
undo(): void;
|
|
113
|
+
toAction(): EngineAction;
|
|
114
|
+
}
|
|
115
|
+
export {};
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structure Commands - Commands that modify workbook/sheet structure
|
|
3
|
+
*
|
|
4
|
+
* These commands all require re-evaluation after execution.
|
|
5
|
+
*/
|
|
6
|
+
import type { ApiSchemaManager } from "../managers/api-schema-manager";
|
|
7
|
+
import type { NamedExpressionManager } from "../managers/named-expression-manager";
|
|
8
|
+
import type { ReferenceManager } from "../managers/reference-manager";
|
|
9
|
+
import type { StyleManager } from "../managers/style-manager";
|
|
10
|
+
import type { TableManager } from "../managers/table-manager";
|
|
11
|
+
import type { WorkbookManager } from "../managers/workbook-manager";
|
|
12
|
+
import type { EngineAction, EngineCommand } from "./types";
|
|
13
|
+
/**
|
|
14
|
+
* Dependencies needed for structure commands.
|
|
15
|
+
*/
|
|
16
|
+
export interface StructureCommandDeps {
|
|
17
|
+
workbookManager: WorkbookManager;
|
|
18
|
+
namedExpressionManager: NamedExpressionManager;
|
|
19
|
+
tableManager: TableManager;
|
|
20
|
+
styleManager: StyleManager;
|
|
21
|
+
referenceManager: ReferenceManager;
|
|
22
|
+
apiSchemaManager: ApiSchemaManager;
|
|
23
|
+
renameSheetInFormula: (opts: {
|
|
24
|
+
formula: string;
|
|
25
|
+
oldSheetName: string;
|
|
26
|
+
newSheetName: string;
|
|
27
|
+
}) => string;
|
|
28
|
+
renameWorkbookInFormula: (opts: {
|
|
29
|
+
formula: string;
|
|
30
|
+
oldWorkbookName: string;
|
|
31
|
+
newWorkbookName: string;
|
|
32
|
+
}) => string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Command to add a workbook.
|
|
36
|
+
*/
|
|
37
|
+
export declare class AddWorkbookCommand implements EngineCommand {
|
|
38
|
+
private deps;
|
|
39
|
+
private workbookName;
|
|
40
|
+
readonly requiresReevaluation = true;
|
|
41
|
+
constructor(deps: StructureCommandDeps, workbookName: string);
|
|
42
|
+
execute(): void;
|
|
43
|
+
undo(): void;
|
|
44
|
+
toAction(): EngineAction;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Command to remove a workbook.
|
|
48
|
+
*/
|
|
49
|
+
export declare class RemoveWorkbookCommand implements EngineCommand {
|
|
50
|
+
private deps;
|
|
51
|
+
private workbookName;
|
|
52
|
+
readonly requiresReevaluation = true;
|
|
53
|
+
private snapshot;
|
|
54
|
+
constructor(deps: StructureCommandDeps, workbookName: string);
|
|
55
|
+
execute(): void;
|
|
56
|
+
undo(): void;
|
|
57
|
+
toAction(): EngineAction;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Command to rename a workbook.
|
|
61
|
+
*/
|
|
62
|
+
export declare class RenameWorkbookCommand implements EngineCommand {
|
|
63
|
+
private deps;
|
|
64
|
+
private workbookName;
|
|
65
|
+
private newWorkbookName;
|
|
66
|
+
readonly requiresReevaluation = true;
|
|
67
|
+
constructor(deps: StructureCommandDeps, workbookName: string, newWorkbookName: string);
|
|
68
|
+
execute(): void;
|
|
69
|
+
undo(): void;
|
|
70
|
+
toAction(): EngineAction;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Command to clone a workbook.
|
|
74
|
+
* Undo simply removes the cloned workbook.
|
|
75
|
+
*/
|
|
76
|
+
export declare class CloneWorkbookCommand implements EngineCommand {
|
|
77
|
+
private deps;
|
|
78
|
+
private fromWorkbookName;
|
|
79
|
+
private toWorkbookName;
|
|
80
|
+
readonly requiresReevaluation = true;
|
|
81
|
+
constructor(deps: StructureCommandDeps, fromWorkbookName: string, toWorkbookName: string);
|
|
82
|
+
execute(): void;
|
|
83
|
+
undo(): void;
|
|
84
|
+
toAction(): EngineAction;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Command to add a sheet.
|
|
88
|
+
*/
|
|
89
|
+
export declare class AddSheetCommand implements EngineCommand {
|
|
90
|
+
private deps;
|
|
91
|
+
private opts;
|
|
92
|
+
readonly requiresReevaluation = true;
|
|
93
|
+
constructor(deps: StructureCommandDeps, opts: {
|
|
94
|
+
workbookName: string;
|
|
95
|
+
sheetName: string;
|
|
96
|
+
});
|
|
97
|
+
execute(): void;
|
|
98
|
+
undo(): void;
|
|
99
|
+
toAction(): EngineAction;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Command to remove a sheet.
|
|
103
|
+
*/
|
|
104
|
+
export declare class RemoveSheetCommand implements EngineCommand {
|
|
105
|
+
private deps;
|
|
106
|
+
private opts;
|
|
107
|
+
readonly requiresReevaluation = true;
|
|
108
|
+
private snapshot;
|
|
109
|
+
constructor(deps: StructureCommandDeps, opts: {
|
|
110
|
+
workbookName: string;
|
|
111
|
+
sheetName: string;
|
|
112
|
+
});
|
|
113
|
+
execute(): void;
|
|
114
|
+
undo(): void;
|
|
115
|
+
toAction(): EngineAction;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Command to rename a sheet.
|
|
119
|
+
*/
|
|
120
|
+
export declare class RenameSheetCommand implements EngineCommand {
|
|
121
|
+
private deps;
|
|
122
|
+
private opts;
|
|
123
|
+
readonly requiresReevaluation = true;
|
|
124
|
+
constructor(deps: StructureCommandDeps, opts: {
|
|
125
|
+
workbookName: string;
|
|
126
|
+
sheetName: string;
|
|
127
|
+
newSheetName: string;
|
|
128
|
+
});
|
|
129
|
+
execute(): void;
|
|
130
|
+
undo(): void;
|
|
131
|
+
toAction(): EngineAction;
|
|
132
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Style Commands - Commands that modify conditional and direct cell styles
|
|
3
|
+
*
|
|
4
|
+
* These commands do NOT require re-evaluation after execution.
|
|
5
|
+
* They only affect styling, not cell values or formulas.
|
|
6
|
+
*/
|
|
7
|
+
import type { StyleManager } from "../managers/style-manager";
|
|
8
|
+
import type { ConditionalStyle, DirectCellStyle, RangeAddress } from "../types";
|
|
9
|
+
import type { EngineCommand, EngineAction } from "./types";
|
|
10
|
+
/**
|
|
11
|
+
* Command to add a conditional style.
|
|
12
|
+
*/
|
|
13
|
+
export declare class AddConditionalStyleCommand implements EngineCommand {
|
|
14
|
+
private styleManager;
|
|
15
|
+
private style;
|
|
16
|
+
readonly requiresReevaluation = false;
|
|
17
|
+
private addedIndex;
|
|
18
|
+
constructor(styleManager: StyleManager, style: ConditionalStyle);
|
|
19
|
+
execute(): void;
|
|
20
|
+
undo(): void;
|
|
21
|
+
toAction(): EngineAction;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Command to remove a conditional style.
|
|
25
|
+
*/
|
|
26
|
+
export declare class RemoveConditionalStyleCommand implements EngineCommand {
|
|
27
|
+
private styleManager;
|
|
28
|
+
private workbookName;
|
|
29
|
+
private index;
|
|
30
|
+
readonly requiresReevaluation = false;
|
|
31
|
+
private removedStyle;
|
|
32
|
+
constructor(styleManager: StyleManager, workbookName: string, index: number);
|
|
33
|
+
execute(): void;
|
|
34
|
+
undo(): void;
|
|
35
|
+
toAction(): EngineAction;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Command to add a direct cell style.
|
|
39
|
+
*/
|
|
40
|
+
export declare class AddCellStyleCommand implements EngineCommand {
|
|
41
|
+
private styleManager;
|
|
42
|
+
private style;
|
|
43
|
+
readonly requiresReevaluation = false;
|
|
44
|
+
private addedIndex;
|
|
45
|
+
constructor(styleManager: StyleManager, style: DirectCellStyle);
|
|
46
|
+
execute(): void;
|
|
47
|
+
undo(): void;
|
|
48
|
+
toAction(): EngineAction;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Command to remove a direct cell style.
|
|
52
|
+
*/
|
|
53
|
+
export declare class RemoveCellStyleCommand implements EngineCommand {
|
|
54
|
+
private styleManager;
|
|
55
|
+
private workbookName;
|
|
56
|
+
private index;
|
|
57
|
+
readonly requiresReevaluation = false;
|
|
58
|
+
private removedStyle;
|
|
59
|
+
constructor(styleManager: StyleManager, workbookName: string, index: number);
|
|
60
|
+
execute(): void;
|
|
61
|
+
undo(): void;
|
|
62
|
+
toAction(): EngineAction;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Command to clear cell styles in a range.
|
|
66
|
+
*/
|
|
67
|
+
export declare class ClearCellStylesCommand implements EngineCommand {
|
|
68
|
+
private styleManager;
|
|
69
|
+
private range;
|
|
70
|
+
readonly requiresReevaluation = false;
|
|
71
|
+
private snapshot;
|
|
72
|
+
constructor(styleManager: StyleManager, range: RangeAddress);
|
|
73
|
+
execute(): void;
|
|
74
|
+
undo(): void;
|
|
75
|
+
toAction(): EngineAction;
|
|
76
|
+
}
|