@bilig/core 0.1.31 → 0.1.33
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.
|
@@ -1,12 +1,32 @@
|
|
|
1
1
|
import { ValueTag } from "@bilig/protocol";
|
|
2
|
-
function
|
|
3
|
-
return (op.kind === "
|
|
2
|
+
function isFastHistoryOp(op) {
|
|
3
|
+
return (op.kind === "upsertWorkbook" ||
|
|
4
|
+
op.kind === "upsertSheet" ||
|
|
5
|
+
op.kind === "renameSheet" ||
|
|
6
|
+
op.kind === "setCellValue" ||
|
|
4
7
|
op.kind === "setCellFormula" ||
|
|
5
8
|
op.kind === "clearCell" ||
|
|
6
9
|
op.kind === "setCellFormat");
|
|
7
10
|
}
|
|
8
|
-
function
|
|
11
|
+
function cloneFastHistoryForwardOp(op) {
|
|
9
12
|
switch (op.kind) {
|
|
13
|
+
case "upsertWorkbook":
|
|
14
|
+
return {
|
|
15
|
+
kind: "upsertWorkbook",
|
|
16
|
+
name: op.name,
|
|
17
|
+
};
|
|
18
|
+
case "upsertSheet":
|
|
19
|
+
return {
|
|
20
|
+
kind: "upsertSheet",
|
|
21
|
+
name: op.name,
|
|
22
|
+
order: op.order,
|
|
23
|
+
};
|
|
24
|
+
case "renameSheet":
|
|
25
|
+
return {
|
|
26
|
+
kind: "renameSheet",
|
|
27
|
+
oldName: op.oldName,
|
|
28
|
+
newName: op.newName,
|
|
29
|
+
};
|
|
10
30
|
case "setCellValue":
|
|
11
31
|
return {
|
|
12
32
|
kind: "setCellValue",
|
|
@@ -36,6 +56,15 @@ function cloneSimpleCellOp(op) {
|
|
|
36
56
|
};
|
|
37
57
|
}
|
|
38
58
|
}
|
|
59
|
+
function cloneFastHistoryUndoOp(op) {
|
|
60
|
+
if (op.kind === "deleteSheet") {
|
|
61
|
+
return {
|
|
62
|
+
kind: "deleteSheet",
|
|
63
|
+
name: op.name,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
return cloneFastHistoryForwardOp(op);
|
|
67
|
+
}
|
|
39
68
|
function restoreCellOpFromSnapshot(workbook, getCellByIndex, sheetName, address) {
|
|
40
69
|
const cellIndex = workbook.getCellIndex(sheetName, address);
|
|
41
70
|
if (cellIndex === undefined) {
|
|
@@ -65,8 +94,35 @@ function restoreCellOpFromSnapshot(workbook, getCellByIndex, sheetName, address)
|
|
|
65
94
|
};
|
|
66
95
|
}
|
|
67
96
|
}
|
|
68
|
-
function
|
|
97
|
+
function buildFastInverseOp(workbook, getCellByIndex, op) {
|
|
69
98
|
switch (op.kind) {
|
|
99
|
+
case "upsertWorkbook":
|
|
100
|
+
return {
|
|
101
|
+
kind: "upsertWorkbook",
|
|
102
|
+
name: workbook.workbookName,
|
|
103
|
+
};
|
|
104
|
+
case "upsertSheet": {
|
|
105
|
+
const existing = workbook.getSheet(op.name);
|
|
106
|
+
if (!existing) {
|
|
107
|
+
return { kind: "deleteSheet", name: op.name };
|
|
108
|
+
}
|
|
109
|
+
return {
|
|
110
|
+
kind: "upsertSheet",
|
|
111
|
+
name: existing.name,
|
|
112
|
+
order: existing.order,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
case "renameSheet": {
|
|
116
|
+
const existing = workbook.getSheet(op.newName);
|
|
117
|
+
if (!existing) {
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
return {
|
|
121
|
+
kind: "renameSheet",
|
|
122
|
+
oldName: op.newName,
|
|
123
|
+
newName: op.oldName,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
70
126
|
case "setCellValue":
|
|
71
127
|
case "setCellFormula":
|
|
72
128
|
case "clearCell":
|
|
@@ -88,10 +144,10 @@ export function tryBuildFastMutationHistory(args) {
|
|
|
88
144
|
const forwardOps = Array(args.ops.length);
|
|
89
145
|
for (let index = 0; index < args.ops.length; index += 1) {
|
|
90
146
|
const op = args.ops[index];
|
|
91
|
-
if (op === undefined || !
|
|
147
|
+
if (op === undefined || !isFastHistoryOp(op)) {
|
|
92
148
|
return null;
|
|
93
149
|
}
|
|
94
|
-
forwardOps[index] =
|
|
150
|
+
forwardOps[index] = cloneFastHistoryForwardOp(op);
|
|
95
151
|
}
|
|
96
152
|
const inverseOps = [];
|
|
97
153
|
for (let index = forwardOps.length - 1; index >= 0; index -= 1) {
|
|
@@ -99,7 +155,7 @@ export function tryBuildFastMutationHistory(args) {
|
|
|
99
155
|
if (op === undefined) {
|
|
100
156
|
return null;
|
|
101
157
|
}
|
|
102
|
-
const inverse =
|
|
158
|
+
const inverse = buildFastInverseOp(args.workbook, args.getCellByIndex, op);
|
|
103
159
|
if (!inverse) {
|
|
104
160
|
return null;
|
|
105
161
|
}
|
|
@@ -113,7 +169,15 @@ export function tryBuildFastMutationHistory(args) {
|
|
|
113
169
|
ops: inverseOps,
|
|
114
170
|
potentialNewCells: args.ops.length,
|
|
115
171
|
},
|
|
116
|
-
undoOps: inverseOps.map((op) =>
|
|
172
|
+
undoOps: inverseOps.map((op) => {
|
|
173
|
+
if (op.kind === "deleteSheet") {
|
|
174
|
+
return cloneFastHistoryUndoOp(op);
|
|
175
|
+
}
|
|
176
|
+
if (!isFastHistoryOp(op)) {
|
|
177
|
+
throw new TypeError(`Unsupported fast-path undo op: ${op.kind}`);
|
|
178
|
+
}
|
|
179
|
+
return cloneFastHistoryUndoOp(op);
|
|
180
|
+
}),
|
|
117
181
|
};
|
|
118
182
|
}
|
|
119
183
|
//# sourceMappingURL=mutation-history-fast-path.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutation-history-fast-path.js","sourceRoot":"","sources":["../../../src/engine/services/mutation-history-fast-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAqB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"mutation-history-fast-path.js","sourceRoot":"","sources":["../../../src/engine/services/mutation-history-fast-path.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bilig/core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.33",
|
|
4
4
|
"description": "Local-first spreadsheet engine core for bilig with calc, selection, and commit semantics.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"bilig",
|
|
@@ -41,10 +41,10 @@
|
|
|
41
41
|
"build": "tsc -p tsconfig.json"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@bilig/formula": "0.1.
|
|
45
|
-
"@bilig/protocol": "0.1.
|
|
46
|
-
"@bilig/wasm-kernel": "0.1.
|
|
47
|
-
"@bilig/workbook-domain": "0.1.
|
|
44
|
+
"@bilig/formula": "0.1.33",
|
|
45
|
+
"@bilig/protocol": "0.1.33",
|
|
46
|
+
"@bilig/wasm-kernel": "0.1.33",
|
|
47
|
+
"@bilig/workbook-domain": "0.1.33",
|
|
48
48
|
"effect": "3.21.0"
|
|
49
49
|
},
|
|
50
50
|
"engines": {
|