@rowsncolumns/spreadsheet-state 28.0.75 → 28.0.76
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/api/anchored-objects.d.ts +66 -0
- package/dist/cjs/api/anchored-objects.d.ts.map +1 -0
- package/dist/cjs/api/anchored-objects.js +259 -0
- package/dist/cjs/api/dependency.d.ts +13 -2
- package/dist/cjs/api/dependency.d.ts.map +1 -1
- package/dist/cjs/api/dependency.js +11 -5
- package/dist/cjs/api/formula.d.ts +61 -4
- package/dist/cjs/api/formula.d.ts.map +1 -1
- package/dist/cjs/api/formula.js +250 -61
- package/dist/cjs/api/merges.d.ts +8 -0
- package/dist/cjs/api/merges.d.ts.map +1 -1
- package/dist/cjs/api/merges.js +64 -1
- package/dist/cjs/api/named-range-structural.d.ts +62 -0
- package/dist/cjs/api/named-range-structural.d.ts.map +1 -0
- package/dist/cjs/api/named-range-structural.js +197 -0
- package/dist/cjs/api/range-rule-helpers.d.ts +45 -1
- package/dist/cjs/api/range-rule-helpers.d.ts.map +1 -1
- package/dist/cjs/api/range-rule-helpers.js +159 -6
- package/dist/cjs/api/structural-formula-update.d.ts.map +1 -1
- package/dist/cjs/api/structural-formula-update.js +24 -6
- package/dist/cjs/api/structural-guards.d.ts +78 -0
- package/dist/cjs/api/structural-guards.d.ts.map +1 -0
- package/dist/cjs/api/structural-guards.js +202 -0
- package/dist/cjs/api/structural-table-refs.d.ts +94 -0
- package/dist/cjs/api/structural-table-refs.d.ts.map +1 -0
- package/dist/cjs/api/structural-table-refs.js +313 -0
- package/dist/cjs/constants.d.ts +25 -0
- package/dist/cjs/constants.d.ts.map +1 -0
- package/dist/cjs/constants.js +26 -0
- package/dist/cjs/hooks/use-calculation-worker.d.ts.map +1 -1
- package/dist/cjs/hooks/use-calculation-worker.js +64 -6
- package/dist/cjs/hooks/use-calculation.d.ts +7 -0
- package/dist/cjs/hooks/use-calculation.d.ts.map +1 -1
- package/dist/cjs/hooks/use-calculation.js +15 -0
- package/dist/cjs/hooks/use-on-calculation-success.d.ts +7 -0
- package/dist/cjs/hooks/use-on-calculation-success.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-calculation-success.js +7 -1
- package/dist/cjs/hooks/use-on-delete-cells-shift-left.d.ts +13 -3
- package/dist/cjs/hooks/use-on-delete-cells-shift-left.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-delete-cells-shift-left.js +27 -2
- package/dist/cjs/hooks/use-on-delete-cells-shift-up.d.ts +13 -3
- package/dist/cjs/hooks/use-on-delete-cells-shift-up.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-delete-cells-shift-up.js +27 -2
- package/dist/cjs/hooks/use-on-delete-column.d.ts +13 -4
- package/dist/cjs/hooks/use-on-delete-column.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-delete-column.js +14 -2
- package/dist/cjs/hooks/use-on-delete-row.d.ts +13 -4
- package/dist/cjs/hooks/use-on-delete-row.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-delete-row.js +14 -2
- package/dist/cjs/hooks/use-on-insert-cells-shift-down.d.ts +13 -3
- package/dist/cjs/hooks/use-on-insert-cells-shift-down.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-insert-cells-shift-down.js +27 -2
- package/dist/cjs/hooks/use-on-insert-cells-shift-right.d.ts +13 -3
- package/dist/cjs/hooks/use-on-insert-cells-shift-right.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-insert-cells-shift-right.js +27 -2
- package/dist/cjs/hooks/use-on-insert-column.d.ts +10 -3
- package/dist/cjs/hooks/use-on-insert-column.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-insert-column.js +33 -7
- package/dist/cjs/hooks/use-on-insert-row.d.ts +10 -3
- package/dist/cjs/hooks/use-on-insert-row.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-insert-row.js +32 -7
- package/dist/cjs/hooks/use-spreadsheet-state.d.ts +2 -2
- package/dist/cjs/hooks/use-spreadsheet-state.d.ts.map +1 -1
- package/dist/cjs/hooks/use-spreadsheet-state.js +61 -15
- package/dist/cjs/hooks/use-structured-reference.d.ts.map +1 -1
- package/dist/cjs/hooks/use-structured-reference.js +10 -6
- package/dist/cjs/index.d.ts +3 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +3 -0
- package/dist/cjs/interface/calculation-interface.d.ts +9 -0
- package/dist/cjs/interface/calculation-interface.d.ts.map +1 -1
- package/dist/cjs/interface/calculation-interface.js +31 -2
- package/dist/cjs/interface/delete-cells-shift-left.d.ts +8 -1
- package/dist/cjs/interface/delete-cells-shift-left.d.ts.map +1 -1
- package/dist/cjs/interface/delete-cells-shift-left.js +158 -80
- package/dist/cjs/interface/delete-cells-shift-up.d.ts +9 -1
- package/dist/cjs/interface/delete-cells-shift-up.d.ts.map +1 -1
- package/dist/cjs/interface/delete-cells-shift-up.js +155 -73
- package/dist/cjs/interface/delete-column.d.ts +1 -1
- package/dist/cjs/interface/delete-column.d.ts.map +1 -1
- package/dist/cjs/interface/delete-column.js +90 -31
- package/dist/cjs/interface/delete-row.d.ts +1 -1
- package/dist/cjs/interface/delete-row.d.ts.map +1 -1
- package/dist/cjs/interface/delete-row.js +85 -26
- package/dist/cjs/interface/insert-cells-shift-down.d.ts +10 -1
- package/dist/cjs/interface/insert-cells-shift-down.d.ts.map +1 -1
- package/dist/cjs/interface/insert-cells-shift-down.js +147 -52
- package/dist/cjs/interface/insert-cells-shift-right.d.ts +10 -1
- package/dist/cjs/interface/insert-cells-shift-right.d.ts.map +1 -1
- package/dist/cjs/interface/insert-cells-shift-right.js +154 -58
- package/dist/cjs/interface/insert-column.d.ts +1 -1
- package/dist/cjs/interface/insert-column.d.ts.map +1 -1
- package/dist/cjs/interface/insert-column.js +46 -8
- package/dist/cjs/interface/insert-row.d.ts +1 -1
- package/dist/cjs/interface/insert-row.d.ts.map +1 -1
- package/dist/cjs/interface/insert-row.js +47 -10
- package/dist/cjs/interface/spreadsheet-interface.d.ts.map +1 -1
- package/dist/cjs/interface/spreadsheet-interface.js +33 -0
- package/dist/cjs/sheet-cell.d.ts.map +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/api/anchored-objects.d.ts +66 -0
- package/dist/esm/api/anchored-objects.d.ts.map +1 -0
- package/dist/esm/api/anchored-objects.js +212 -0
- package/dist/esm/api/dependency.d.ts +13 -2
- package/dist/esm/api/dependency.d.ts.map +1 -1
- package/dist/esm/api/dependency.js +10 -4
- package/dist/esm/api/formula.d.ts +61 -4
- package/dist/esm/api/formula.d.ts.map +1 -1
- package/dist/esm/api/formula.js +238 -60
- package/dist/esm/api/merges.d.ts +8 -0
- package/dist/esm/api/merges.d.ts.map +1 -1
- package/dist/esm/api/merges.js +51 -0
- package/dist/esm/api/named-range-structural.d.ts +62 -0
- package/dist/esm/api/named-range-structural.d.ts.map +1 -0
- package/dist/esm/api/named-range-structural.js +176 -0
- package/dist/esm/api/range-rule-helpers.d.ts +45 -1
- package/dist/esm/api/range-rule-helpers.d.ts.map +1 -1
- package/dist/esm/api/range-rule-helpers.js +153 -1
- package/dist/esm/api/structural-formula-update.d.ts.map +1 -1
- package/dist/esm/api/structural-formula-update.js +24 -6
- package/dist/esm/api/structural-guards.d.ts +78 -0
- package/dist/esm/api/structural-guards.d.ts.map +1 -0
- package/dist/esm/api/structural-guards.js +186 -0
- package/dist/esm/api/structural-table-refs.d.ts +94 -0
- package/dist/esm/api/structural-table-refs.d.ts.map +1 -0
- package/dist/esm/api/structural-table-refs.js +219 -0
- package/dist/esm/constants.d.ts +25 -0
- package/dist/esm/constants.d.ts.map +1 -0
- package/dist/esm/constants.js +26 -0
- package/dist/esm/hooks/use-calculation-worker.d.ts.map +1 -1
- package/dist/esm/hooks/use-calculation-worker.js +45 -0
- package/dist/esm/hooks/use-calculation.d.ts +7 -0
- package/dist/esm/hooks/use-calculation.d.ts.map +1 -1
- package/dist/esm/hooks/use-calculation.js +15 -0
- package/dist/esm/hooks/use-on-calculation-success.d.ts +7 -0
- package/dist/esm/hooks/use-on-calculation-success.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-calculation-success.js +7 -1
- package/dist/esm/hooks/use-on-delete-cells-shift-left.d.ts +13 -3
- package/dist/esm/hooks/use-on-delete-cells-shift-left.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-delete-cells-shift-left.js +26 -2
- package/dist/esm/hooks/use-on-delete-cells-shift-up.d.ts +13 -3
- package/dist/esm/hooks/use-on-delete-cells-shift-up.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-delete-cells-shift-up.js +26 -2
- package/dist/esm/hooks/use-on-delete-column.d.ts +13 -4
- package/dist/esm/hooks/use-on-delete-column.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-delete-column.js +14 -2
- package/dist/esm/hooks/use-on-delete-row.d.ts +13 -4
- package/dist/esm/hooks/use-on-delete-row.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-delete-row.js +14 -2
- package/dist/esm/hooks/use-on-insert-cells-shift-down.d.ts +13 -3
- package/dist/esm/hooks/use-on-insert-cells-shift-down.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-insert-cells-shift-down.js +26 -2
- package/dist/esm/hooks/use-on-insert-cells-shift-right.d.ts +13 -3
- package/dist/esm/hooks/use-on-insert-cells-shift-right.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-insert-cells-shift-right.js +26 -2
- package/dist/esm/hooks/use-on-insert-column.d.ts +10 -3
- package/dist/esm/hooks/use-on-insert-column.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-insert-column.js +33 -7
- package/dist/esm/hooks/use-on-insert-row.d.ts +10 -3
- package/dist/esm/hooks/use-on-insert-row.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-insert-row.js +32 -7
- package/dist/esm/hooks/use-spreadsheet-state.d.ts +2 -2
- package/dist/esm/hooks/use-spreadsheet-state.d.ts.map +1 -1
- package/dist/esm/hooks/use-spreadsheet-state.js +61 -15
- package/dist/esm/hooks/use-structured-reference.d.ts.map +1 -1
- package/dist/esm/hooks/use-structured-reference.js +10 -6
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +3 -0
- package/dist/esm/interface/calculation-interface.d.ts +9 -0
- package/dist/esm/interface/calculation-interface.d.ts.map +1 -1
- package/dist/esm/interface/calculation-interface.js +33 -2
- package/dist/esm/interface/delete-cells-shift-left.d.ts +8 -1
- package/dist/esm/interface/delete-cells-shift-left.d.ts.map +1 -1
- package/dist/esm/interface/delete-cells-shift-left.js +135 -59
- package/dist/esm/interface/delete-cells-shift-up.d.ts +9 -1
- package/dist/esm/interface/delete-cells-shift-up.d.ts.map +1 -1
- package/dist/esm/interface/delete-cells-shift-up.js +133 -53
- package/dist/esm/interface/delete-column.d.ts +1 -1
- package/dist/esm/interface/delete-column.d.ts.map +1 -1
- package/dist/esm/interface/delete-column.js +80 -11
- package/dist/esm/interface/delete-row.d.ts +1 -1
- package/dist/esm/interface/delete-row.d.ts.map +1 -1
- package/dist/esm/interface/delete-row.js +81 -11
- package/dist/esm/interface/insert-cells-shift-down.d.ts +10 -1
- package/dist/esm/interface/insert-cells-shift-down.d.ts.map +1 -1
- package/dist/esm/interface/insert-cells-shift-down.js +116 -47
- package/dist/esm/interface/insert-cells-shift-right.d.ts +10 -1
- package/dist/esm/interface/insert-cells-shift-right.d.ts.map +1 -1
- package/dist/esm/interface/insert-cells-shift-right.js +120 -51
- package/dist/esm/interface/insert-column.d.ts +1 -1
- package/dist/esm/interface/insert-column.d.ts.map +1 -1
- package/dist/esm/interface/insert-column.js +46 -8
- package/dist/esm/interface/insert-row.d.ts +1 -1
- package/dist/esm/interface/insert-row.d.ts.map +1 -1
- package/dist/esm/interface/insert-row.js +47 -10
- package/dist/esm/interface/spreadsheet-interface.d.ts.map +1 -1
- package/dist/esm/interface/spreadsheet-interface.js +29 -0
- package/dist/esm/sheet-cell.d.ts.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +16 -16
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
import { __assign, __read, __values } from "tslib";
|
|
2
|
+
import { isCellNode } from "@rowsncolumns/dag";
|
|
3
|
+
import { addressToCell, getCellUserEnteredValue, getExtendedValueFormula, } from "@rowsncolumns/utils";
|
|
4
|
+
import { SheetCell } from "../sheet-cell";
|
|
5
|
+
import { breakTableColumnsInFormula, breakTableReferencesInFormula, createSheetCellIdentifier, } from "./formula";
|
|
6
|
+
import { createSheetDraft } from "./immer-utils";
|
|
7
|
+
/**
|
|
8
|
+
* Which tables / table columns `deleteRow` (a table goes with its header row)
|
|
9
|
+
* or `deleteColumn` (a table goes when every column is deleted; otherwise the
|
|
10
|
+
* covered columns are spliced out) removes for the band
|
|
11
|
+
* `[minIndex, maxIndex]` on `sheetId`. Mirrors the table updates those
|
|
12
|
+
* interfaces apply to `tables`.
|
|
13
|
+
*/
|
|
14
|
+
export var collectRemovedTableParts = function (tables, sheetId, axis, minIndex, maxIndex) {
|
|
15
|
+
var e_1, _a;
|
|
16
|
+
var _b, _c;
|
|
17
|
+
var removed = { tables: [], columns: [] };
|
|
18
|
+
try {
|
|
19
|
+
for (var _d = __values(tables !== null && tables !== void 0 ? tables : []), _e = _d.next(); !_e.done; _e = _d.next()) {
|
|
20
|
+
var table = _e.value;
|
|
21
|
+
if (table.sheetId !== sheetId || !table.title)
|
|
22
|
+
continue;
|
|
23
|
+
if (axis === "row") {
|
|
24
|
+
var startRowIndex = table.range.startRowIndex;
|
|
25
|
+
if (startRowIndex >= minIndex && startRowIndex <= maxIndex) {
|
|
26
|
+
removed.tables.push(table.title);
|
|
27
|
+
}
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
var _f = table.range, startColumnIndex = _f.startColumnIndex, endColumnIndex = _f.endColumnIndex;
|
|
31
|
+
if (maxIndex < startColumnIndex || minIndex > endColumnIndex)
|
|
32
|
+
continue;
|
|
33
|
+
if (minIndex <= startColumnIndex && maxIndex >= endColumnIndex) {
|
|
34
|
+
removed.tables.push(table.title);
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
var overlapStart = Math.max(minIndex, startColumnIndex);
|
|
38
|
+
var overlapEnd = Math.min(maxIndex, endColumnIndex);
|
|
39
|
+
var names = [];
|
|
40
|
+
for (var column = overlapStart; column <= overlapEnd; column++) {
|
|
41
|
+
var name_1 = (_c = (_b = table.columns) === null || _b === void 0 ? void 0 : _b[column - startColumnIndex]) === null || _c === void 0 ? void 0 : _c.name;
|
|
42
|
+
if (name_1)
|
|
43
|
+
names.push(name_1);
|
|
44
|
+
}
|
|
45
|
+
if (names.length) {
|
|
46
|
+
removed.columns.push({
|
|
47
|
+
table: table.title,
|
|
48
|
+
sheetId: sheetId,
|
|
49
|
+
range: table.range,
|
|
50
|
+
columns: names,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
56
|
+
finally {
|
|
57
|
+
try {
|
|
58
|
+
if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
|
|
59
|
+
}
|
|
60
|
+
finally { if (e_1) throw e_1.error; }
|
|
61
|
+
}
|
|
62
|
+
return removed;
|
|
63
|
+
};
|
|
64
|
+
var isEmptyRemoval = function (removed) {
|
|
65
|
+
return removed.tables.length === 0 && removed.columns.length === 0;
|
|
66
|
+
};
|
|
67
|
+
var isWithinRange = function (range, rowIndex, columnIndex) {
|
|
68
|
+
return rowIndex >= range.startRowIndex &&
|
|
69
|
+
rowIndex <= range.endRowIndex &&
|
|
70
|
+
columnIndex >= range.startColumnIndex &&
|
|
71
|
+
columnIndex <= range.endColumnIndex;
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Rewrite, across every sheet, the structured references that point at the
|
|
75
|
+
* table parts a delete removes (see `RemovedTableParts`). Runs BEFORE the
|
|
76
|
+
* splice, so bare `[@Col]` references are attributed to the table by the
|
|
77
|
+
* formula's pre-edit position. Formula cells come from the dependency graph
|
|
78
|
+
* when it is available (cost O(formula cells)); without one the draft is swept.
|
|
79
|
+
*/
|
|
80
|
+
export var breakStructuredRefsForRemovedTableParts = function (_a) {
|
|
81
|
+
var e_2, _b, e_3, _c, e_4, _d;
|
|
82
|
+
var _e, _f;
|
|
83
|
+
var draft = _a.draft, sheetId = _a.sheetId, axis = _a.axis, referenceIndex = _a.referenceIndex, count = _a.count, removed = _a.removed, getGraphNodes = _a.getGraphNodes, enqueueCalculation = _a.enqueueCalculation, enqueueGraphOperation = _a.enqueueGraphOperation, recalcCells = _a.recalcCells, locale = _a.locale, cellXfsRegistry = _a.cellXfsRegistry, sharedStringRegistry = _a.sharedStringRegistry;
|
|
84
|
+
if (isEmptyRemoval(removed))
|
|
85
|
+
return;
|
|
86
|
+
var sheetCell = new SheetCell();
|
|
87
|
+
var isRow = axis === "row";
|
|
88
|
+
var afterBand = referenceIndex + count;
|
|
89
|
+
try {
|
|
90
|
+
for (var _g = __values(collectFormulaPositions(draft, getGraphNodes)), _h = _g.next(); !_h.done; _h = _g.next()) {
|
|
91
|
+
var pos = _h.value;
|
|
92
|
+
var currentSheet = createSheetDraft(draft, pos.sheetId, pos.rowIndex);
|
|
93
|
+
var cellData = (_f = (_e = currentSheet[pos.rowIndex]) === null || _e === void 0 ? void 0 : _e.values) === null || _f === void 0 ? void 0 : _f[pos.columnIndex];
|
|
94
|
+
var formula = getExtendedValueFormula(getCellUserEnteredValue(cellData));
|
|
95
|
+
if (!formula || !formula.includes("["))
|
|
96
|
+
continue;
|
|
97
|
+
var updated = formula;
|
|
98
|
+
try {
|
|
99
|
+
for (var _j = (e_3 = void 0, __values(removed.tables)), _k = _j.next(); !_k.done; _k = _j.next()) {
|
|
100
|
+
var table = _k.value;
|
|
101
|
+
updated = breakTableReferencesInFormula(updated, table);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
105
|
+
finally {
|
|
106
|
+
try {
|
|
107
|
+
if (_k && !_k.done && (_c = _j.return)) _c.call(_j);
|
|
108
|
+
}
|
|
109
|
+
finally { if (e_3) throw e_3.error; }
|
|
110
|
+
}
|
|
111
|
+
try {
|
|
112
|
+
for (var _l = (e_4 = void 0, __values(removed.columns)), _m = _l.next(); !_m.done; _m = _l.next()) {
|
|
113
|
+
var entry = _m.value;
|
|
114
|
+
updated = breakTableColumnsInFormula(updated, entry.table, entry.columns);
|
|
115
|
+
// A bare `[@Col]` belongs to the table the formula cell sits in.
|
|
116
|
+
if (pos.sheetId === entry.sheetId &&
|
|
117
|
+
isWithinRange(entry.range, pos.rowIndex, pos.columnIndex)) {
|
|
118
|
+
updated = breakTableColumnsInFormula(updated, undefined, entry.columns);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
123
|
+
finally {
|
|
124
|
+
try {
|
|
125
|
+
if (_m && !_m.done && (_d = _l.return)) _d.call(_l);
|
|
126
|
+
}
|
|
127
|
+
finally { if (e_4) throw e_4.error; }
|
|
128
|
+
}
|
|
129
|
+
if (updated === formula)
|
|
130
|
+
continue;
|
|
131
|
+
sheetCell.assign(pos.sheetId, { rowIndex: pos.rowIndex, columnIndex: pos.columnIndex }, cellData, { locale: locale, cellXfsRegistry: cellXfsRegistry, sharedStringRegistry: sharedStringRegistry });
|
|
132
|
+
sheetCell.setFormulaValue(updated, false);
|
|
133
|
+
currentSheet[pos.rowIndex].values[pos.columnIndex] =
|
|
134
|
+
sheetCell.getCellData();
|
|
135
|
+
// Where the cell ends up after the splice that follows (cells strictly
|
|
136
|
+
// after the deleted band on the edited sheet close up by `count`).
|
|
137
|
+
var shifts = pos.sheetId === sheetId &&
|
|
138
|
+
(isRow ? pos.rowIndex : pos.columnIndex) >= afterBand;
|
|
139
|
+
var nextPosition = {
|
|
140
|
+
sheetId: pos.sheetId,
|
|
141
|
+
rowIndex: pos.rowIndex - (shifts && isRow ? count : 0),
|
|
142
|
+
columnIndex: pos.columnIndex - (shifts && !isRow ? count : 0),
|
|
143
|
+
};
|
|
144
|
+
var enqueueOperation = sheetCell.ephemeral()
|
|
145
|
+
? enqueueCalculation
|
|
146
|
+
: enqueueGraphOperation;
|
|
147
|
+
enqueueOperation === null || enqueueOperation === void 0 ? void 0 : enqueueOperation({ type: "remove", position: pos });
|
|
148
|
+
enqueueOperation === null || enqueueOperation === void 0 ? void 0 : enqueueOperation({ type: "add", position: nextPosition, force: true });
|
|
149
|
+
recalcCells.set(createSheetCellIdentifier(nextPosition.sheetId, nextPosition.rowIndex, nextPosition.columnIndex), __assign(__assign({}, nextPosition), { force: true }));
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
153
|
+
finally {
|
|
154
|
+
try {
|
|
155
|
+
if (_h && !_h.done && (_b = _g.return)) _b.call(_g);
|
|
156
|
+
}
|
|
157
|
+
finally { if (e_2) throw e_2.error; }
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
var collectFormulaPositions = function (draft, getGraphNodes) {
|
|
161
|
+
var e_5, _a, e_6, _b;
|
|
162
|
+
if (getGraphNodes) {
|
|
163
|
+
var graphNodes = void 0;
|
|
164
|
+
try {
|
|
165
|
+
graphNodes = getGraphNodes();
|
|
166
|
+
}
|
|
167
|
+
catch (_c) {
|
|
168
|
+
graphNodes = undefined;
|
|
169
|
+
}
|
|
170
|
+
if (graphNodes && typeof graphNodes.values === "function") {
|
|
171
|
+
var positions_1 = [];
|
|
172
|
+
var sawNode = false;
|
|
173
|
+
try {
|
|
174
|
+
for (var _d = __values(graphNodes.values()), _e = _d.next(); !_e.done; _e = _d.next()) {
|
|
175
|
+
var node = _e.value;
|
|
176
|
+
if (!isCellNode(node))
|
|
177
|
+
continue;
|
|
178
|
+
sawNode = true;
|
|
179
|
+
positions_1.push(__assign({}, node.position));
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
catch (e_5_1) { e_5 = { error: e_5_1 }; }
|
|
183
|
+
finally {
|
|
184
|
+
try {
|
|
185
|
+
if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
|
|
186
|
+
}
|
|
187
|
+
finally { if (e_5) throw e_5.error; }
|
|
188
|
+
}
|
|
189
|
+
if (sawNode)
|
|
190
|
+
return positions_1;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
// Fallback sweep (no graph, or an empty one): every formula cell in the draft.
|
|
194
|
+
var positions = [];
|
|
195
|
+
var _loop_1 = function (key) {
|
|
196
|
+
var sheetId = Number(key);
|
|
197
|
+
var rows = draft[sheetId];
|
|
198
|
+
if (!rows)
|
|
199
|
+
return "continue";
|
|
200
|
+
rows.forEach(function (row, rowIndex) {
|
|
201
|
+
var _a;
|
|
202
|
+
(_a = row === null || row === void 0 ? void 0 : row.values) === null || _a === void 0 ? void 0 : _a.forEach(function (cellData, columnIndex) {
|
|
203
|
+
if (getExtendedValueFormula(getCellUserEnteredValue(cellData))) {
|
|
204
|
+
positions.push({ sheetId: sheetId, rowIndex: rowIndex, columnIndex: columnIndex });
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
});
|
|
208
|
+
};
|
|
209
|
+
try {
|
|
210
|
+
for (var _f = __values(Object.keys(draft)), _g = _f.next(); !_g.done; _g = _f.next()) {
|
|
211
|
+
var key = _g.value;
|
|
212
|
+
_loop_1(key);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
catch (e_6_1) { e_6 = { error: e_6_1 }; }
|
|
216
|
+
finally {
|
|
217
|
+
try {
|
|
218
|
+
if (_g && !_g.done && (_b = _f.return)) _b.call(_f);
|
|
219
|
+
}
|
|
220
|
+
finally { if (e_6) throw e_6.error; }
|
|
221
|
+
}
|
|
222
|
+
return positions;
|
|
223
|
+
};
|
|
224
|
+
export var removeSpillsOfDeletedAnchors = function (_a) {
|
|
225
|
+
var e_7, _b;
|
|
226
|
+
var _c, _d, _e;
|
|
227
|
+
var draft = _a.draft, sheetId = _a.sheetId, axis = _a.axis, minIndex = _a.minIndex, maxIndex = _a.maxIndex, getArrayRange = _a.getArrayRange, locale = _a.locale, cellXfsRegistry = _a.cellXfsRegistry, sharedStringRegistry = _a.sharedStringRegistry;
|
|
228
|
+
var sheetRows = draft[sheetId];
|
|
229
|
+
if (!sheetRows)
|
|
230
|
+
return;
|
|
231
|
+
var sheetCell = new SheetCell();
|
|
232
|
+
var anchors = [];
|
|
233
|
+
var collect = function (rowIndex, columnIndex) {
|
|
234
|
+
var _a, _b;
|
|
235
|
+
var cellData = (_b = (_a = sheetRows[rowIndex]) === null || _a === void 0 ? void 0 : _a.values) === null || _b === void 0 ? void 0 : _b[columnIndex];
|
|
236
|
+
if (!cellData)
|
|
237
|
+
return;
|
|
238
|
+
// The calculator knows the current spill; the persisted `af` (written on
|
|
239
|
+
// calc success by hosts that track it) is the fallback.
|
|
240
|
+
var live = getExtendedValueFormula(getCellUserEnteredValue(cellData)) !== undefined
|
|
241
|
+
? getArrayRange === null || getArrayRange === void 0 ? void 0 : getArrayRange({ sheetId: sheetId, rowIndex: rowIndex, columnIndex: columnIndex })
|
|
242
|
+
: undefined;
|
|
243
|
+
var range = live !== null && live !== void 0 ? live : spillRangeFromRef(cellData.af);
|
|
244
|
+
if (range)
|
|
245
|
+
anchors.push({ rowIndex: rowIndex, columnIndex: columnIndex, range: range });
|
|
246
|
+
};
|
|
247
|
+
if (axis === "row") {
|
|
248
|
+
var _loop_2 = function (rowIndex) {
|
|
249
|
+
(_d = (_c = sheetRows[rowIndex]) === null || _c === void 0 ? void 0 : _c.values) === null || _d === void 0 ? void 0 : _d.forEach(function (_cell, columnIndex) {
|
|
250
|
+
return collect(rowIndex, columnIndex);
|
|
251
|
+
});
|
|
252
|
+
};
|
|
253
|
+
for (var rowIndex = minIndex; rowIndex <= maxIndex; rowIndex++) {
|
|
254
|
+
_loop_2(rowIndex);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
sheetRows.forEach(function (row, rowIndex) {
|
|
259
|
+
if (!(row === null || row === void 0 ? void 0 : row.values))
|
|
260
|
+
return;
|
|
261
|
+
for (var columnIndex = minIndex; columnIndex <= maxIndex; columnIndex++) {
|
|
262
|
+
collect(rowIndex, columnIndex);
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
try {
|
|
267
|
+
for (var anchors_1 = __values(anchors), anchors_1_1 = anchors_1.next(); !anchors_1_1.done; anchors_1_1 = anchors_1.next()) {
|
|
268
|
+
var anchor = anchors_1_1.value;
|
|
269
|
+
var range = anchor.range;
|
|
270
|
+
for (var rowIndex = range.startRowIndex; rowIndex <= range.endRowIndex; rowIndex++) {
|
|
271
|
+
var rowValues = (_e = sheetRows[rowIndex]) === null || _e === void 0 ? void 0 : _e.values;
|
|
272
|
+
if (!rowValues)
|
|
273
|
+
continue;
|
|
274
|
+
for (var columnIndex = range.startColumnIndex; columnIndex <= range.endColumnIndex; columnIndex++) {
|
|
275
|
+
if (rowIndex === anchor.rowIndex &&
|
|
276
|
+
columnIndex === anchor.columnIndex) {
|
|
277
|
+
continue;
|
|
278
|
+
}
|
|
279
|
+
var cellData = rowValues[columnIndex];
|
|
280
|
+
if (!cellData || getCellUserEnteredValue(cellData) !== undefined) {
|
|
281
|
+
continue;
|
|
282
|
+
}
|
|
283
|
+
sheetCell.assign(sheetId, { rowIndex: rowIndex, columnIndex: columnIndex }, cellData, { locale: locale, cellXfsRegistry: cellXfsRegistry, sharedStringRegistry: sharedStringRegistry });
|
|
284
|
+
sheetCell.deleteContents();
|
|
285
|
+
rowValues[columnIndex] = sheetCell.getCellData();
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
catch (e_7_1) { e_7 = { error: e_7_1 }; }
|
|
291
|
+
finally {
|
|
292
|
+
try {
|
|
293
|
+
if (anchors_1_1 && !anchors_1_1.done && (_b = anchors_1.return)) _b.call(anchors_1);
|
|
294
|
+
}
|
|
295
|
+
finally { if (e_7) throw e_7.error; }
|
|
296
|
+
}
|
|
297
|
+
};
|
|
298
|
+
/** `C1:C3` (the anchor's persisted `af`) → its rectangle; `undefined` when absent/unparseable. */
|
|
299
|
+
var spillRangeFromRef = function (ref) {
|
|
300
|
+
if (!ref)
|
|
301
|
+
return undefined;
|
|
302
|
+
var _a = __read(ref.split(":"), 2), startAddress = _a[0], endAddress = _a[1];
|
|
303
|
+
var start = addressToCell(startAddress);
|
|
304
|
+
var end = addressToCell(endAddress !== null && endAddress !== void 0 ? endAddress : startAddress);
|
|
305
|
+
if (!start || !end)
|
|
306
|
+
return undefined;
|
|
307
|
+
return {
|
|
308
|
+
startRowIndex: start.rowIndex,
|
|
309
|
+
startColumnIndex: start.columnIndex,
|
|
310
|
+
endRowIndex: end.rowIndex,
|
|
311
|
+
endColumnIndex: end.columnIndex,
|
|
312
|
+
};
|
|
313
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Excel's refusal messages for structural edits (insert/delete cells with shift, whole row/column
|
|
3
|
+
* insert, move/cut). The engines refuse the edit and leave the document untouched; the UI shows the
|
|
4
|
+
* message. Shared by the legacy JS hooks (`api/structural-guards.ts`) and the rnc engine's
|
|
5
|
+
* `CommitResult.rejected` channel (`libs/rnc-engine`), so both surfaces speak the same words.
|
|
6
|
+
*/
|
|
7
|
+
export declare const STRUCTURAL_REFUSAL_TITLE = "Microsoft Excel";
|
|
8
|
+
/** INS-06 / INS-09 / SHF-10 — a non-blank (or formatted) cell would be pushed past the last row/column. */
|
|
9
|
+
export declare const OFF_SHEET_PUSH_MESSAGE = "Microsoft Excel can't insert new cells because it would push non-empty cells off the end of the worksheet. These non-empty cells might appear empty but have blank values, some formatting, or a formula. Delete enough rows or columns to make room for what you want to insert and then try again.";
|
|
10
|
+
/** SHF-05 / MRG-07 — the shifted band covers only part of a merged cell. */
|
|
11
|
+
export declare const MERGED_CELL_REFUSAL_MESSAGE = "We can't do that to a merged cell.";
|
|
12
|
+
/** TBL-05 — the shifted band would tear a table apart. */
|
|
13
|
+
export declare const TABLE_SHIFT_REFUSAL_MESSAGE = "This won't work because it would move cells in a table on your worksheet.";
|
|
14
|
+
/** ANC-14 — the shifted band covers only part of a CSE / dynamic array. */
|
|
15
|
+
export declare const ARRAY_REFUSAL_MESSAGE = "You can't change part of an array.";
|
|
16
|
+
/** Machine-readable refusal codes — the rnc engine's `CommitResult.rejected.code` uses the same set. */
|
|
17
|
+
export type StructuralRefusalCode = "off-sheet-push" | "torn-merge" | "torn-table" | "torn-array";
|
|
18
|
+
export type StructuralRefusal = {
|
|
19
|
+
code: StructuralRefusalCode;
|
|
20
|
+
title: string;
|
|
21
|
+
message: string;
|
|
22
|
+
};
|
|
23
|
+
export declare const STRUCTURAL_REFUSAL_MESSAGES: Record<StructuralRefusalCode, string>;
|
|
24
|
+
export declare const structuralRefusal: (code: StructuralRefusalCode) => StructuralRefusal;
|
|
25
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,oBAAoB,CAAC;AAE1D,2GAA2G;AAC3G,eAAO,MAAM,sBAAsB,ySACqQ,CAAC;AAEzS,4EAA4E;AAC5E,eAAO,MAAM,2BAA2B,uCAAuC,CAAC;AAEhF,0DAA0D;AAC1D,eAAO,MAAM,2BAA2B,8EACqC,CAAC;AAE9E,2EAA2E;AAC3E,eAAO,MAAM,qBAAqB,uCAAuC,CAAC;AAE1E,wGAAwG;AACxG,MAAM,MAAM,qBAAqB,GAC7B,gBAAgB,GAChB,YAAY,GACZ,YAAY,GACZ,YAAY,CAAC;AAEjB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,qBAAqB,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAK7E,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,MAAM,qBAAqB,KAC1B,iBAID,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Excel's refusal messages for structural edits (insert/delete cells with shift, whole row/column
|
|
3
|
+
* insert, move/cut). The engines refuse the edit and leave the document untouched; the UI shows the
|
|
4
|
+
* message. Shared by the legacy JS hooks (`api/structural-guards.ts`) and the rnc engine's
|
|
5
|
+
* `CommitResult.rejected` channel (`libs/rnc-engine`), so both surfaces speak the same words.
|
|
6
|
+
*/
|
|
7
|
+
export var STRUCTURAL_REFUSAL_TITLE = "Microsoft Excel";
|
|
8
|
+
/** INS-06 / INS-09 / SHF-10 — a non-blank (or formatted) cell would be pushed past the last row/column. */
|
|
9
|
+
export var OFF_SHEET_PUSH_MESSAGE = "Microsoft Excel can't insert new cells because it would push non-empty cells off the end of the worksheet. These non-empty cells might appear empty but have blank values, some formatting, or a formula. Delete enough rows or columns to make room for what you want to insert and then try again.";
|
|
10
|
+
/** SHF-05 / MRG-07 — the shifted band covers only part of a merged cell. */
|
|
11
|
+
export var MERGED_CELL_REFUSAL_MESSAGE = "We can't do that to a merged cell.";
|
|
12
|
+
/** TBL-05 — the shifted band would tear a table apart. */
|
|
13
|
+
export var TABLE_SHIFT_REFUSAL_MESSAGE = "This won't work because it would move cells in a table on your worksheet.";
|
|
14
|
+
/** ANC-14 — the shifted band covers only part of a CSE / dynamic array. */
|
|
15
|
+
export var ARRAY_REFUSAL_MESSAGE = "You can't change part of an array.";
|
|
16
|
+
export var STRUCTURAL_REFUSAL_MESSAGES = {
|
|
17
|
+
"off-sheet-push": OFF_SHEET_PUSH_MESSAGE,
|
|
18
|
+
"torn-merge": MERGED_CELL_REFUSAL_MESSAGE,
|
|
19
|
+
"torn-table": TABLE_SHIFT_REFUSAL_MESSAGE,
|
|
20
|
+
"torn-array": ARRAY_REFUSAL_MESSAGE,
|
|
21
|
+
};
|
|
22
|
+
export var structuralRefusal = function (code) { return ({
|
|
23
|
+
code: code,
|
|
24
|
+
title: STRUCTURAL_REFUSAL_TITLE,
|
|
25
|
+
message: STRUCTURAL_REFUSAL_MESSAGES[code],
|
|
26
|
+
}); };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-calculation-worker.d.ts","sourceRoot":"","sources":["../../../hooks/use-calculation-worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,8BAA8B,EAQ9B,mBAAmB,EACpB,MAAM,kCAAkC,CAAC;AAU1C,OAAO,KAAK,EACV,2BAA2B,EAE5B,MAAM,4BAA4B,CAAC;AAmBpC,OAAO,KAAK,EAEV,UAAU,EACV,SAAS,EACV,MAAM,2BAA2B,CAAC;AAgBnC,OAAO,KAAK,EAKV,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,KAAK,wBAAwB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAElE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EACD,OAAO,GACP,YAAY,GACZ,iBAAiB,GACjB,iBAAiB,GACjB,yBAAyB,GACzB,cAAc,GACd,UAAU,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAyEF,MAAM,MAAM,yBAAyB,GAAG,mBAAmB,GAAG;IAC5D,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,8BAA8B,CAAC,QAAQ,CAAC,CAAC;IACxD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,2BAA2B,CAAC;IACnD,kBAAkB,CAAC,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;IAClD,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC,CAAC;
|
|
1
|
+
{"version":3,"file":"use-calculation-worker.d.ts","sourceRoot":"","sources":["../../../hooks/use-calculation-worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,8BAA8B,EAQ9B,mBAAmB,EACpB,MAAM,kCAAkC,CAAC;AAU1C,OAAO,KAAK,EACV,2BAA2B,EAE5B,MAAM,4BAA4B,CAAC;AAmBpC,OAAO,KAAK,EAEV,UAAU,EACV,SAAS,EACV,MAAM,2BAA2B,CAAC;AAgBnC,OAAO,KAAK,EAKV,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,KAAK,wBAAwB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAElE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EACD,OAAO,GACP,YAAY,GACZ,iBAAiB,GACjB,iBAAiB,GACjB,yBAAyB,GACzB,cAAc,GACd,UAAU,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAyEF,MAAM,MAAM,yBAAyB,GAAG,mBAAmB,GAAG;IAC5D,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,8BAA8B,CAAC,QAAQ,CAAC,CAAC;IACxD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,2BAA2B,CAAC;IACnD,kBAAkB,CAAC,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;IAClD,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC,CAAC;AAsLF,eAAO,MAAM,oBAAoB,GAC/B,OAAO,yBAAyB,KAC/B,wBA4iEF,CAAC"}
|
|
@@ -130,6 +130,14 @@ var VOLATILE_FUNCTIONS = new Set([
|
|
|
130
130
|
"INDIRECT",
|
|
131
131
|
]);
|
|
132
132
|
var MAX_BUFFERED_RESULTS = 2000;
|
|
133
|
+
/**
|
|
134
|
+
* True when an operation carries the user's new cell value and that value is
|
|
135
|
+
* not a formula — the cell is leaving the dependency graph.
|
|
136
|
+
*/
|
|
137
|
+
var isStaticOperationValue = function (value) {
|
|
138
|
+
return value !== undefined &&
|
|
139
|
+
(typeof value !== "string" || !value.trim().startsWith("="));
|
|
140
|
+
};
|
|
133
141
|
var mergePendingOperation = function (current, incoming) {
|
|
134
142
|
if (!current) {
|
|
135
143
|
return incoming;
|
|
@@ -1452,6 +1460,27 @@ export var useCalculationWorker = function (props) {
|
|
|
1452
1460
|
console.error("Calculation error: ", error);
|
|
1453
1461
|
})
|
|
1454
1462
|
.finally(function () {
|
|
1463
|
+
var e_11, _a;
|
|
1464
|
+
try {
|
|
1465
|
+
// The recorded static edits are only needed while the host's
|
|
1466
|
+
// state may lag behind the edit; drop them once the batch that
|
|
1467
|
+
// consumed them completes, unless the cell was edited again
|
|
1468
|
+
// meanwhile — that operation's pass owns the entry.
|
|
1469
|
+
for (var evaluationOperations_1 = (e_11 = void 0, __values(evaluationOperations)), evaluationOperations_1_1 = evaluationOperations_1.next(); !evaluationOperations_1_1.done; evaluationOperations_1_1 = evaluationOperations_1.next()) {
|
|
1470
|
+
var operation = evaluationOperations_1_1.value;
|
|
1471
|
+
var key = makeKey(operation.position);
|
|
1472
|
+
if (!pendingOperationMapRef.current.has(key)) {
|
|
1473
|
+
pendingUserValueEditsRef.current.delete(key);
|
|
1474
|
+
}
|
|
1475
|
+
}
|
|
1476
|
+
}
|
|
1477
|
+
catch (e_11_1) { e_11 = { error: e_11_1 }; }
|
|
1478
|
+
finally {
|
|
1479
|
+
try {
|
|
1480
|
+
if (evaluationOperations_1_1 && !evaluationOperations_1_1.done && (_a = evaluationOperations_1.return)) _a.call(evaluationOperations_1);
|
|
1481
|
+
}
|
|
1482
|
+
finally { if (e_11) throw e_11.error; }
|
|
1483
|
+
}
|
|
1455
1484
|
activeExecutionsRef.current--;
|
|
1456
1485
|
if (activeExecutionsRef.current === 0) {
|
|
1457
1486
|
onAfterCalculation();
|
|
@@ -1618,7 +1647,7 @@ export var useCalculationWorker = function (props) {
|
|
|
1618
1647
|
};
|
|
1619
1648
|
}, []);
|
|
1620
1649
|
var prepareArrayOperation = useCallback(function (operation) {
|
|
1621
|
-
var
|
|
1650
|
+
var e_12, _a;
|
|
1622
1651
|
var _b, _c, _d;
|
|
1623
1652
|
if (operation.type === "dirty") {
|
|
1624
1653
|
return;
|
|
@@ -1663,12 +1692,12 @@ export var useCalculationWorker = function (props) {
|
|
|
1663
1692
|
queueAnchorDirty(entry.anchor);
|
|
1664
1693
|
}
|
|
1665
1694
|
}
|
|
1666
|
-
catch (
|
|
1695
|
+
catch (e_12_1) { e_12 = { error: e_12_1 }; }
|
|
1667
1696
|
finally {
|
|
1668
1697
|
try {
|
|
1669
1698
|
if (_f && !_f.done && (_a = _e.return)) _a.call(_e);
|
|
1670
1699
|
}
|
|
1671
|
-
finally { if (
|
|
1700
|
+
finally { if (e_12) throw e_12.error; }
|
|
1672
1701
|
}
|
|
1673
1702
|
}
|
|
1674
1703
|
}, [clearArrayValues, findCachedArrayAnchor, graph, queueAnchorDirty]);
|
|
@@ -1679,6 +1708,19 @@ export var useCalculationWorker = function (props) {
|
|
|
1679
1708
|
if (anchor) {
|
|
1680
1709
|
collisionAnchorsRef.current.delete(makeKey(anchor));
|
|
1681
1710
|
}
|
|
1711
|
+
// Remember a static value that replaces the cell's formula. The
|
|
1712
|
+
// processing pass runs after paint, when the host's
|
|
1713
|
+
// getUserEnteredValue may still return the replaced formula; every
|
|
1714
|
+
// formula lookup for the cell (operation mapping, the graph's plan
|
|
1715
|
+
// build, volatile tracking) goes through getFinalUserEnteredValue,
|
|
1716
|
+
// which prefers this entry. Any later operation on the cell
|
|
1717
|
+
// supersedes it.
|
|
1718
|
+
var key = makeKey(operation.position);
|
|
1719
|
+
pendingUserValueEditsRef.current.delete(key);
|
|
1720
|
+
if (operation.type === "add" &&
|
|
1721
|
+
isStaticOperationValue(operation.value)) {
|
|
1722
|
+
pendingUserValueEditsRef.current.set(key, operation.value);
|
|
1723
|
+
}
|
|
1682
1724
|
}
|
|
1683
1725
|
scheduleVolatileTracking(operation.position);
|
|
1684
1726
|
prepareArrayOperation(operation);
|
|
@@ -1691,6 +1733,20 @@ export var useCalculationWorker = function (props) {
|
|
|
1691
1733
|
requestAnimationFrame(flushGraphOperations);
|
|
1692
1734
|
}
|
|
1693
1735
|
});
|
|
1736
|
+
// The spill rectangle anchored at `position` (mirror graph first, then the
|
|
1737
|
+
// last range this hook registered for the anchor).
|
|
1738
|
+
var getArrayRange = useCallbackRef(function (position) {
|
|
1739
|
+
var _a, _b;
|
|
1740
|
+
var range = (_a = graph.getArrayRange(position)) !== null && _a !== void 0 ? _a : (_b = arrayRangeCacheRef.current.get(makeKey(position))) === null || _b === void 0 ? void 0 : _b.range;
|
|
1741
|
+
if (!range)
|
|
1742
|
+
return undefined;
|
|
1743
|
+
return {
|
|
1744
|
+
startRowIndex: range.startRowIndex,
|
|
1745
|
+
startColumnIndex: range.startColumnIndex,
|
|
1746
|
+
endRowIndex: range.endRowIndex,
|
|
1747
|
+
endColumnIndex: range.endColumnIndex,
|
|
1748
|
+
};
|
|
1749
|
+
});
|
|
1694
1750
|
var isArrayFormula = useCallbackRef(function (position) {
|
|
1695
1751
|
return graph.isArrayFormula(position) || graph.isInArrayRange(position);
|
|
1696
1752
|
});
|
|
@@ -1745,7 +1801,7 @@ export var useCalculationWorker = function (props) {
|
|
|
1745
1801
|
}, [graph]);
|
|
1746
1802
|
var onRequestCalculate = useCallback(function (value, sheetId, rowIndex, columnIndex, options) { return __awaiter(void 0, void 0, void 0, function () {
|
|
1747
1803
|
var disablePreview, skipOnDemand, formula, position, dependencies, isCircular, scope, _a, _b, _c, key, value_1, plan, _d, result, resultValue;
|
|
1748
|
-
var
|
|
1804
|
+
var e_13, _e;
|
|
1749
1805
|
var _f, _g, _h;
|
|
1750
1806
|
return __generator(this, function (_j) {
|
|
1751
1807
|
switch (_j.label) {
|
|
@@ -1796,12 +1852,12 @@ export var useCalculationWorker = function (props) {
|
|
|
1796
1852
|
scope[key] = value_1;
|
|
1797
1853
|
}
|
|
1798
1854
|
}
|
|
1799
|
-
catch (
|
|
1855
|
+
catch (e_13_1) { e_13 = { error: e_13_1 }; }
|
|
1800
1856
|
finally {
|
|
1801
1857
|
try {
|
|
1802
1858
|
if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
|
|
1803
1859
|
}
|
|
1804
|
-
finally { if (
|
|
1860
|
+
finally { if (e_13) throw e_13.error; }
|
|
1805
1861
|
}
|
|
1806
1862
|
}
|
|
1807
1863
|
plan = {
|
|
@@ -1899,6 +1955,7 @@ export var useCalculationWorker = function (props) {
|
|
|
1899
1955
|
getDependencyGraph: function () { return "[]"; },
|
|
1900
1956
|
updateDependencyGraph: function () { },
|
|
1901
1957
|
isArrayFormula: function () { return false; },
|
|
1958
|
+
getArrayRange: function () { return undefined; },
|
|
1902
1959
|
applyNamedRanges: function (_list) { },
|
|
1903
1960
|
stats$: statsSubjectRef.current.asObservable(),
|
|
1904
1961
|
});
|
|
@@ -1922,6 +1979,7 @@ export var useCalculationWorker = function (props) {
|
|
|
1922
1979
|
getDependencyGraph: getDependencyGraph,
|
|
1923
1980
|
updateDependencyGraph: updateDependencyGraph,
|
|
1924
1981
|
isArrayFormula: isArrayFormula,
|
|
1982
|
+
getArrayRange: getArrayRange,
|
|
1925
1983
|
// Worker re-inits on namedRanges change (sent via WorkerInit
|
|
1926
1984
|
// payload), so there's no host-side calculator to apply to.
|
|
1927
1985
|
// No-op to satisfy the shared API contract.
|
|
@@ -158,6 +158,12 @@ export declare const useCalculation: ({ locale, functions, iterativeCalculation,
|
|
|
158
158
|
getDependencyGraph: () => string;
|
|
159
159
|
updateDependencyGraph: (nodes: string) => void;
|
|
160
160
|
isArrayFormula: (position: CellCoordinate) => boolean;
|
|
161
|
+
getArrayRange: (position: CellCoordinate) => {
|
|
162
|
+
startRowIndex: number;
|
|
163
|
+
startColumnIndex: number;
|
|
164
|
+
endRowIndex: number;
|
|
165
|
+
endColumnIndex: number;
|
|
166
|
+
} | undefined;
|
|
161
167
|
applyNamedRanges: (list: import("@rowsncolumns/spreadsheet").NamedRange[] | undefined) => void;
|
|
162
168
|
} | {
|
|
163
169
|
enqueueCalculation: () => void;
|
|
@@ -178,6 +184,7 @@ export declare const useCalculation: ({ locale, functions, iterativeCalculation,
|
|
|
178
184
|
getDependencyGraph: () => "[]";
|
|
179
185
|
updateDependencyGraph: () => void;
|
|
180
186
|
isArrayFormula: () => false;
|
|
187
|
+
getArrayRange: () => undefined;
|
|
181
188
|
applyNamedRanges: (_list: import("@rowsncolumns/spreadsheet").NamedRange[] | undefined) => void;
|
|
182
189
|
};
|
|
183
190
|
//# sourceMappingURL=use-calculation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-calculation.d.ts","sourceRoot":"","sources":["../../../hooks/use-calculation.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"use-calculation.d.ts","sourceRoot":"","sources":["../../../hooks/use-calculation.ts"],"names":[],"mappings":"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"}
|
|
@@ -2415,6 +2415,19 @@ export var useCalculation = function (_a) {
|
|
|
2415
2415
|
return (getCalculator().isArray(position) ||
|
|
2416
2416
|
getCalculator().isInArrayRange(position));
|
|
2417
2417
|
}, []));
|
|
2418
|
+
// The spill rectangle anchored at `position` (a dynamic array's projected
|
|
2419
|
+
// cells), or undefined when the cell is not a spilling anchor.
|
|
2420
|
+
var getArrayRange = useCallbackRef(useCallback(function (position) {
|
|
2421
|
+
var range = getCalculator().getArrayRange(position);
|
|
2422
|
+
if (!range)
|
|
2423
|
+
return undefined;
|
|
2424
|
+
return {
|
|
2425
|
+
startRowIndex: range.from.row,
|
|
2426
|
+
startColumnIndex: range.from.col,
|
|
2427
|
+
endRowIndex: range.to.row,
|
|
2428
|
+
endColumnIndex: range.to.col,
|
|
2429
|
+
};
|
|
2430
|
+
}, []));
|
|
2418
2431
|
// Get all dependents of a cell. Returns a mixed list — narrow with
|
|
2419
2432
|
// the `isCellNode`/`isStaticNode` helpers at call sites (NOT
|
|
2420
2433
|
// `instanceof`, which breaks across bundler module instances).
|
|
@@ -2793,6 +2806,7 @@ export var useCalculation = function (_a) {
|
|
|
2793
2806
|
getDependencyGraph: function () { return "[]"; },
|
|
2794
2807
|
updateDependencyGraph: function () { },
|
|
2795
2808
|
isArrayFormula: function () { return false; },
|
|
2809
|
+
getArrayRange: function () { return undefined; },
|
|
2796
2810
|
applyNamedRanges: function (_list) { },
|
|
2797
2811
|
}); }, []);
|
|
2798
2812
|
var api = {
|
|
@@ -2814,6 +2828,7 @@ export var useCalculation = function (_a) {
|
|
|
2814
2828
|
getDependencyGraph: getDependencyGraph,
|
|
2815
2829
|
updateDependencyGraph: updateDependencyGraph,
|
|
2816
2830
|
isArrayFormula: isArrayFormula,
|
|
2831
|
+
getArrayRange: getArrayRange,
|
|
2817
2832
|
// Phase 9 — exposed so `useCalculationInitialize` can guarantee
|
|
2818
2833
|
// named ranges are registered BEFORE cell formulas are parsed
|
|
2819
2834
|
// (otherwise cells using a named range would form no DAG edge
|
|
@@ -7,6 +7,13 @@ import type { useSheetProperties } from "./use-sheet-properties";
|
|
|
7
7
|
import type { UseSpreadsheetProps } from "./use-spreadsheet-state";
|
|
8
8
|
import type { SharedStringRegistry } from "./use-ss-registry";
|
|
9
9
|
import type { useUndoRedo } from "./use-undo-redo";
|
|
10
|
+
/**
|
|
11
|
+
* The A1 spill range (`C1:C3`) a dynamic-array result anchored at
|
|
12
|
+
* `(rowIndex, columnIndex)` covers — persisted on the anchor as `af` so xlsx
|
|
13
|
+
* export can write `<f t="array" ref=…>` and structural edits can find the
|
|
14
|
+
* projected cells of a deleted anchor.
|
|
15
|
+
*/
|
|
16
|
+
export declare const arrayResultToA1Ref: (rowIndex: number, columnIndex: number, result: unknown[][]) => string | undefined;
|
|
10
17
|
type UseOnCalculationSuccessProps<T extends CellData> = {
|
|
11
18
|
locale?: string;
|
|
12
19
|
cellXfsRegistry?: CellXfsRegistry;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-on-calculation-success.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-calculation-success.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAe1D,OAAO,KAAK,EACV,iBAAiB,EACjB,yBAAyB,EACzB,cAAc,EACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"use-on-calculation-success.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-calculation-success.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAe1D,OAAO,KAAK,EACV,iBAAiB,EACjB,yBAAyB,EACzB,cAAc,EACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAC7B,UAAU,MAAM,EAChB,aAAa,MAAM,EACnB,QAAQ,OAAO,EAAE,EAAE,KAClB,MAAM,GAAG,SAiBX,CAAC;AAEF,KAAK,4BAA4B,CAAC,CAAC,SAAS,QAAQ,IAAI;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,qBAAqB,EAAE,UAAU,CAC/B,OAAO,kBAAkB,CAC1B,CAAC,uBAAuB,CAAC,CAAC;IAC3B,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAC/D,aAAa,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,6BAA6B,CAAC,CAAC;IAC7E,aAAa,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,eAAe,CAAC,CAAC;IAClE,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;CAC3C,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAAE,wIASpE,4BAA4B,CAAC,CAAC,CAAC,eAMxB,KAAK,CAAC,CAAC,cAAc,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC,GACnE,gBAAgB,CACd,CAAC,cAAc,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,CAC7D,iBACU,OAAO,aACX,yBAAyB,SAqMzC,CAAC"}
|
|
@@ -7,7 +7,13 @@ import { useCallback } from "react";
|
|
|
7
7
|
import { createSheetDraft, deriveCellFromPrecedents, peekIterable, } from "./../api/immer-utils";
|
|
8
8
|
import { AWAITING_CALCULATION } from "./../helpers";
|
|
9
9
|
import { LOADING_VALUE, SheetCell } from "./../sheet-cell";
|
|
10
|
-
|
|
10
|
+
/**
|
|
11
|
+
* The A1 spill range (`C1:C3`) a dynamic-array result anchored at
|
|
12
|
+
* `(rowIndex, columnIndex)` covers — persisted on the anchor as `af` so xlsx
|
|
13
|
+
* export can write `<f t="array" ref=…>` and structural edits can find the
|
|
14
|
+
* projected cells of a deleted anchor.
|
|
15
|
+
*/
|
|
16
|
+
export var arrayResultToA1Ref = function (rowIndex, columnIndex, result) {
|
|
11
17
|
var _a, _b;
|
|
12
18
|
var numRows = result.length;
|
|
13
19
|
var numCols = (_b = (_a = result[0]) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0;
|