@bilig/headless 0.8.0 → 0.8.2
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/README.md +15 -0
- package/dist/persistence.d.ts +1 -1
- package/dist/persistence.js +13 -11
- package/dist/persistence.js.map +1 -1
- package/dist/tracked-cell-index-changes.d.ts +1 -7
- package/dist/tracked-cell-index-changes.js +20 -434
- package/dist/tracked-cell-index-changes.js.map +1 -1
- package/dist/tracked-cell-lazy-physical-changes.d.ts +21 -0
- package/dist/tracked-cell-lazy-physical-changes.js +333 -0
- package/dist/tracked-cell-lazy-physical-changes.js.map +1 -0
- package/dist/tracked-cell-value-read.d.ts +18 -0
- package/dist/tracked-cell-value-read.js +46 -0
- package/dist/tracked-cell-value-read.js.map +1 -0
- package/dist/tracked-engine-event-refs.d.ts +1 -1
- package/dist/tracked-engine-event-refs.js +14 -4
- package/dist/tracked-engine-event-refs.js.map +1 -1
- package/dist/tracked-index-source-order.d.ts +5 -0
- package/dist/tracked-index-source-order.js +15 -0
- package/dist/tracked-index-source-order.js.map +1 -0
- package/dist/work-paper-address-format.d.ts +33 -0
- package/dist/work-paper-address-format.js +116 -0
- package/dist/work-paper-address-format.js.map +1 -0
- package/dist/work-paper-axis-helpers.d.ts +26 -0
- package/dist/work-paper-axis-helpers.js +104 -0
- package/dist/work-paper-axis-helpers.js.map +1 -0
- package/dist/work-paper-capability-checks.d.ts +17 -0
- package/dist/work-paper-capability-checks.js +101 -0
- package/dist/work-paper-capability-checks.js.map +1 -0
- package/dist/work-paper-capability-operations.d.ts +34 -0
- package/dist/work-paper-capability-operations.js +70 -0
- package/dist/work-paper-capability-operations.js.map +1 -0
- package/dist/work-paper-capability-surface.d.ts +97 -0
- package/dist/work-paper-capability-surface.js +236 -0
- package/dist/work-paper-capability-surface.js.map +1 -0
- package/dist/work-paper-cell-content-setter.d.ts +37 -0
- package/dist/work-paper-cell-content-setter.js +87 -0
- package/dist/work-paper-cell-content-setter.js.map +1 -0
- package/dist/work-paper-cell-mutation-refs.d.ts +23 -0
- package/dist/work-paper-cell-mutation-refs.js +50 -0
- package/dist/work-paper-cell-mutation-refs.js.map +1 -0
- package/dist/work-paper-cell-read.d.ts +41 -0
- package/dist/work-paper-cell-read.js +54 -0
- package/dist/work-paper-cell-read.js.map +1 -0
- package/dist/work-paper-clipboard-operations.d.ts +24 -0
- package/dist/work-paper-clipboard-operations.js +56 -0
- package/dist/work-paper-clipboard-operations.js.map +1 -0
- package/dist/work-paper-clipboard.d.ts +13 -0
- package/dist/work-paper-clipboard.js +19 -0
- package/dist/work-paper-clipboard.js.map +1 -0
- package/dist/work-paper-config.d.ts +11 -0
- package/dist/work-paper-config.js +247 -0
- package/dist/work-paper-config.js.map +1 -0
- package/dist/work-paper-date-time.d.ts +4 -0
- package/dist/work-paper-date-time.js +38 -0
- package/dist/work-paper-date-time.js.map +1 -0
- package/dist/work-paper-dependency-refs.d.ts +11 -0
- package/dist/work-paper-dependency-refs.js +74 -0
- package/dist/work-paper-dependency-refs.js.map +1 -0
- package/dist/work-paper-emitter.d.ts +22 -0
- package/dist/work-paper-emitter.js +130 -0
- package/dist/work-paper-emitter.js.map +1 -0
- package/dist/work-paper-engine-event-tracker.d.ts +24 -0
- package/dist/work-paper-engine-event-tracker.js +92 -0
- package/dist/work-paper-engine-event-tracker.js.map +1 -0
- package/dist/work-paper-errors.d.ts +4 -0
- package/dist/work-paper-errors.js +7 -0
- package/dist/work-paper-errors.js.map +1 -1
- package/dist/work-paper-existing-numeric-fast-path.d.ts +31 -0
- package/dist/work-paper-existing-numeric-fast-path.js +120 -0
- package/dist/work-paper-existing-numeric-fast-path.js.map +1 -0
- package/dist/work-paper-fill-helpers.d.ts +8 -0
- package/dist/work-paper-fill-helpers.js +34 -0
- package/dist/work-paper-fill-helpers.js.map +1 -0
- package/dist/work-paper-formula-analysis.d.ts +18 -0
- package/dist/work-paper-formula-analysis.js +54 -0
- package/dist/work-paper-formula-analysis.js.map +1 -0
- package/dist/work-paper-formula-rewrite.d.ts +22 -0
- package/dist/work-paper-formula-rewrite.js +71 -0
- package/dist/work-paper-formula-rewrite.js.map +1 -0
- package/dist/work-paper-function-registry.d.ts +39 -0
- package/dist/work-paper-function-registry.js +66 -0
- package/dist/work-paper-function-registry.js.map +1 -0
- package/dist/work-paper-history-operations.d.ts +15 -0
- package/dist/work-paper-history-operations.js +14 -0
- package/dist/work-paper-history-operations.js.map +1 -0
- package/dist/work-paper-history.d.ts +50 -0
- package/dist/work-paper-history.js +136 -0
- package/dist/work-paper-history.js.map +1 -0
- package/dist/work-paper-internals.d.ts +24 -0
- package/dist/work-paper-internals.js +59 -0
- package/dist/work-paper-internals.js.map +1 -0
- package/dist/work-paper-literal-mutation-queue.d.ts +18 -0
- package/dist/work-paper-literal-mutation-queue.js +40 -0
- package/dist/work-paper-literal-mutation-queue.js.map +1 -0
- package/dist/work-paper-matrix-application.d.ts +31 -0
- package/dist/work-paper-matrix-application.js +85 -0
- package/dist/work-paper-matrix-application.js.map +1 -0
- package/dist/work-paper-mutation-queues.d.ts +29 -0
- package/dist/work-paper-mutation-queues.js +72 -0
- package/dist/work-paper-mutation-queues.js.map +1 -0
- package/dist/work-paper-named-expression-fast-path.d.ts +37 -0
- package/dist/work-paper-named-expression-fast-path.js +100 -0
- package/dist/work-paper-named-expression-fast-path.js.map +1 -0
- package/dist/work-paper-named-expression-helpers.d.ts +54 -0
- package/dist/work-paper-named-expression-helpers.js +179 -0
- package/dist/work-paper-named-expression-helpers.js.map +1 -0
- package/dist/work-paper-named-expression-operations.d.ts +39 -0
- package/dist/work-paper-named-expression-operations.js +82 -0
- package/dist/work-paper-named-expression-operations.js.map +1 -0
- package/dist/work-paper-public-surface.d.ts +73 -0
- package/dist/work-paper-public-surface.js +165 -0
- package/dist/work-paper-public-surface.js.map +1 -0
- package/dist/work-paper-read-operations.d.ts +52 -0
- package/dist/work-paper-read-operations.js +185 -0
- package/dist/work-paper-read-operations.js.map +1 -0
- package/dist/work-paper-runtime-adapters.d.ts +144 -0
- package/dist/work-paper-runtime-adapters.js +256 -0
- package/dist/work-paper-runtime-adapters.js.map +1 -0
- package/dist/work-paper-runtime-helpers.d.ts +27 -0
- package/dist/work-paper-runtime-helpers.js +305 -0
- package/dist/work-paper-runtime-helpers.js.map +1 -0
- package/dist/work-paper-runtime-surface.d.ts +137 -0
- package/dist/work-paper-runtime-surface.js +702 -0
- package/dist/work-paper-runtime-surface.js.map +1 -0
- package/dist/work-paper-runtime.d.ts +56 -285
- package/dist/work-paper-runtime.js +403 -4809
- package/dist/work-paper-runtime.js.map +1 -1
- package/dist/work-paper-scratch-evaluator.js +29 -26
- package/dist/work-paper-scratch-evaluator.js.map +1 -1
- package/dist/work-paper-sheet-dimension-cache.d.ts +36 -0
- package/dist/work-paper-sheet-dimension-cache.js +158 -0
- package/dist/work-paper-sheet-dimension-cache.js.map +1 -0
- package/dist/work-paper-sheet-initialization.d.ts +19 -0
- package/dist/work-paper-sheet-initialization.js +93 -0
- package/dist/work-paper-sheet-initialization.js.map +1 -0
- package/dist/work-paper-sheet-inspection.d.ts +66 -0
- package/dist/work-paper-sheet-inspection.js +204 -0
- package/dist/work-paper-sheet-inspection.js.map +1 -0
- package/dist/work-paper-sheet-operations.d.ts +59 -0
- package/dist/work-paper-sheet-operations.js +104 -0
- package/dist/work-paper-sheet-operations.js.map +1 -0
- package/dist/work-paper-sheet-read.d.ts +21 -0
- package/dist/work-paper-sheet-read.js +32 -0
- package/dist/work-paper-sheet-read.js.map +1 -0
- package/dist/work-paper-sheet-rename-fast-path.d.ts +18 -0
- package/dist/work-paper-sheet-rename-fast-path.js +43 -0
- package/dist/work-paper-sheet-rename-fast-path.js.map +1 -0
- package/dist/work-paper-static-api.d.ts +18 -0
- package/dist/work-paper-static-api.js +44 -0
- package/dist/work-paper-static-api.js.map +1 -0
- package/dist/work-paper-static-registry.d.ts +21 -0
- package/dist/work-paper-static-registry.js +150 -0
- package/dist/work-paper-static-registry.js.map +1 -0
- package/dist/work-paper-tracked-change-reducer.d.ts +41 -0
- package/dist/work-paper-tracked-change-reducer.js +281 -0
- package/dist/work-paper-tracked-change-reducer.js.map +1 -0
- package/dist/work-paper-tracked-event-helpers.d.ts +89 -0
- package/dist/work-paper-tracked-event-helpers.js +366 -0
- package/dist/work-paper-tracked-event-helpers.js.map +1 -0
- package/dist/work-paper-types.d.ts +6 -5
- package/dist/work-paper-visibility-snapshot.d.ts +36 -0
- package/dist/work-paper-visibility-snapshot.js +62 -0
- package/dist/work-paper-visibility-snapshot.js.map +1 -0
- package/package.json +13 -5
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
import { ValueTag } from '@bilig/protocol';
|
|
2
|
+
import { isArrayValue } from '@bilig/formula';
|
|
3
|
+
import { WorkPaperInvalidArgumentsError } from './work-paper-errors.js';
|
|
4
|
+
export function emptyValue() {
|
|
5
|
+
return { tag: ValueTag.Empty };
|
|
6
|
+
}
|
|
7
|
+
export function errorValue(code) {
|
|
8
|
+
return { tag: ValueTag.Error, code };
|
|
9
|
+
}
|
|
10
|
+
export function scalarValueFromLiteral(value) {
|
|
11
|
+
if (value === null) {
|
|
12
|
+
return emptyValue();
|
|
13
|
+
}
|
|
14
|
+
if (typeof value === 'number') {
|
|
15
|
+
return { tag: ValueTag.Number, value };
|
|
16
|
+
}
|
|
17
|
+
if (typeof value === 'boolean') {
|
|
18
|
+
return { tag: ValueTag.Boolean, value };
|
|
19
|
+
}
|
|
20
|
+
return { tag: ValueTag.String, value, stringId: 0 };
|
|
21
|
+
}
|
|
22
|
+
export function scalarFromResult(result) {
|
|
23
|
+
if (!isArrayValue(result)) {
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
return result.values[0] ?? emptyValue();
|
|
27
|
+
}
|
|
28
|
+
const SIMPLE_NUMERIC_FORMULA_RE = /^[+-]?(?:(?:\d+(?:\.\d*)?)|(?:\.\d+))(?:[Ee][+-]?\d+)?$/;
|
|
29
|
+
export function tryReadSimpleScalarFormulaBody(raw) {
|
|
30
|
+
if (typeof raw !== 'string') {
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
const trimmed = raw.trim();
|
|
34
|
+
if (!trimmed.startsWith('=')) {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
const body = trimmed.slice(1).trim();
|
|
38
|
+
return body.length === 0 ? undefined : body;
|
|
39
|
+
}
|
|
40
|
+
export function tryEvaluateSimpleScalarFormulaBody(body) {
|
|
41
|
+
if (SIMPLE_NUMERIC_FORMULA_RE.test(body)) {
|
|
42
|
+
const value = Number(body);
|
|
43
|
+
return Number.isFinite(value) ? { tag: ValueTag.Number, value: Object.is(value, -0) ? 0 : value } : undefined;
|
|
44
|
+
}
|
|
45
|
+
const upper = body.toUpperCase();
|
|
46
|
+
if (upper === 'TRUE') {
|
|
47
|
+
return { tag: ValueTag.Boolean, value: true };
|
|
48
|
+
}
|
|
49
|
+
if (upper === 'FALSE') {
|
|
50
|
+
return { tag: ValueTag.Boolean, value: false };
|
|
51
|
+
}
|
|
52
|
+
if (body.length >= 2 && body.startsWith('"') && body.endsWith('"')) {
|
|
53
|
+
return { tag: ValueTag.String, value: body.slice(1, -1).replaceAll('""', '"'), stringId: 0 };
|
|
54
|
+
}
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
export function tryEvaluateSimpleNamedExpression(raw) {
|
|
58
|
+
if (raw === null || typeof raw === 'number' || typeof raw === 'boolean') {
|
|
59
|
+
return scalarValueFromLiteral(raw);
|
|
60
|
+
}
|
|
61
|
+
if (typeof raw === 'string' && !raw.trim().startsWith('=')) {
|
|
62
|
+
return scalarValueFromLiteral(raw);
|
|
63
|
+
}
|
|
64
|
+
const body = tryReadSimpleScalarFormulaBody(raw);
|
|
65
|
+
return body === undefined ? undefined : tryEvaluateSimpleScalarFormulaBody(body);
|
|
66
|
+
}
|
|
67
|
+
export function valuesEqual(left, right) {
|
|
68
|
+
if (left.tag !== right.tag) {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
switch (left.tag) {
|
|
72
|
+
case ValueTag.Number:
|
|
73
|
+
return right.tag === ValueTag.Number && left.value === right.value;
|
|
74
|
+
case ValueTag.Boolean:
|
|
75
|
+
return right.tag === ValueTag.Boolean && left.value === right.value;
|
|
76
|
+
case ValueTag.String:
|
|
77
|
+
return right.tag === ValueTag.String && left.value === right.value;
|
|
78
|
+
case ValueTag.Error:
|
|
79
|
+
return right.tag === ValueTag.Error && left.code === right.code;
|
|
80
|
+
case ValueTag.Empty:
|
|
81
|
+
return true;
|
|
82
|
+
default:
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
function isCellValueMatrix(value) {
|
|
87
|
+
return Array.isArray(value);
|
|
88
|
+
}
|
|
89
|
+
export function matrixValuesEqual(left, right) {
|
|
90
|
+
if (!left && !right) {
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
if (!left || !right) {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
if (isCellValueMatrix(left) !== isCellValueMatrix(right)) {
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
if (!isCellValueMatrix(left) && !isCellValueMatrix(right)) {
|
|
100
|
+
return valuesEqual(left, right);
|
|
101
|
+
}
|
|
102
|
+
if (!isCellValueMatrix(left) || !isCellValueMatrix(right)) {
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
const leftMatrix = left;
|
|
106
|
+
const rightMatrix = right;
|
|
107
|
+
if (leftMatrix.length !== rightMatrix.length) {
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
return leftMatrix.every((row, rowIndex) => {
|
|
111
|
+
const otherRow = rightMatrix[rowIndex];
|
|
112
|
+
if (!otherRow || row.length !== otherRow.length) {
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
return row.every((value, columnIndex) => {
|
|
116
|
+
const otherValue = otherRow[columnIndex];
|
|
117
|
+
if (!otherValue) {
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
return valuesEqual(value, otherValue);
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
export function normalizeName(name) {
|
|
125
|
+
return name.trim().toUpperCase();
|
|
126
|
+
}
|
|
127
|
+
export function makeNamedExpressionKey(name, scope) {
|
|
128
|
+
return `${scope ?? 'workbook'}:${normalizeName(name)}`;
|
|
129
|
+
}
|
|
130
|
+
export function makeInternalScopedName(scope, name) {
|
|
131
|
+
return `__BILIG_WORKPAPER_SCOPE_${scope}_${normalizeName(name)}`;
|
|
132
|
+
}
|
|
133
|
+
export function isFormulaContent(content) {
|
|
134
|
+
return typeof content === 'string' && content.trim().startsWith('=');
|
|
135
|
+
}
|
|
136
|
+
export function isWorkPaperSheetMatrix(value) {
|
|
137
|
+
return Array.isArray(value);
|
|
138
|
+
}
|
|
139
|
+
export function matrixContainsFormulaContent(content) {
|
|
140
|
+
return content.some((row) => row.some((cell) => isFormulaContent(cell)));
|
|
141
|
+
}
|
|
142
|
+
export function isDeferredBatchLiteralContent(content) {
|
|
143
|
+
return content === null || typeof content === 'boolean' || typeof content === 'number' || typeof content === 'string';
|
|
144
|
+
}
|
|
145
|
+
export function stripLeadingEquals(formula) {
|
|
146
|
+
return formula.trim().startsWith('=') ? formula.trim().slice(1) : formula.trim();
|
|
147
|
+
}
|
|
148
|
+
export function assertRowAndColumn(value, label) {
|
|
149
|
+
if (!Number.isInteger(value) || value < 0) {
|
|
150
|
+
throw new WorkPaperInvalidArgumentsError(`${label} to be a non-negative integer`);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
export function assertRange(range) {
|
|
154
|
+
assertRowAndColumn(range.start.sheet, 'start.sheet');
|
|
155
|
+
assertRowAndColumn(range.start.row, 'start.row');
|
|
156
|
+
assertRowAndColumn(range.start.col, 'start.col');
|
|
157
|
+
assertRowAndColumn(range.end.sheet, 'end.sheet');
|
|
158
|
+
assertRowAndColumn(range.end.row, 'end.row');
|
|
159
|
+
assertRowAndColumn(range.end.col, 'end.col');
|
|
160
|
+
if (range.start.sheet !== range.end.sheet) {
|
|
161
|
+
throw new WorkPaperInvalidArgumentsError('Ranges must stay on a single sheet');
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
export function isCellRange(value) {
|
|
165
|
+
return 'start' in value && 'end' in value;
|
|
166
|
+
}
|
|
167
|
+
export function cloneCellValue(value) {
|
|
168
|
+
switch (value.tag) {
|
|
169
|
+
case ValueTag.Empty:
|
|
170
|
+
return emptyValue();
|
|
171
|
+
case ValueTag.Number:
|
|
172
|
+
return { tag: ValueTag.Number, value: value.value };
|
|
173
|
+
case ValueTag.Boolean:
|
|
174
|
+
return { tag: ValueTag.Boolean, value: value.value };
|
|
175
|
+
case ValueTag.String:
|
|
176
|
+
return { tag: ValueTag.String, value: value.value, stringId: value.stringId };
|
|
177
|
+
case ValueTag.Error:
|
|
178
|
+
return { tag: ValueTag.Error, code: value.code };
|
|
179
|
+
default:
|
|
180
|
+
return emptyValue();
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
export function transformFormulaNode(node, transform) {
|
|
184
|
+
const current = transform(node);
|
|
185
|
+
switch (current.kind) {
|
|
186
|
+
case 'BooleanLiteral':
|
|
187
|
+
case 'CellRef':
|
|
188
|
+
case 'ColumnRef':
|
|
189
|
+
case 'ErrorLiteral':
|
|
190
|
+
case 'NameRef':
|
|
191
|
+
case 'NumberLiteral':
|
|
192
|
+
case 'RangeRef':
|
|
193
|
+
case 'RowRef':
|
|
194
|
+
case 'SpillRef':
|
|
195
|
+
case 'StringLiteral':
|
|
196
|
+
case 'StructuredRef':
|
|
197
|
+
return current;
|
|
198
|
+
case 'UnaryExpr':
|
|
199
|
+
return {
|
|
200
|
+
...current,
|
|
201
|
+
argument: transformFormulaNode(current.argument, transform),
|
|
202
|
+
};
|
|
203
|
+
case 'BinaryExpr':
|
|
204
|
+
return {
|
|
205
|
+
...current,
|
|
206
|
+
left: transformFormulaNode(current.left, transform),
|
|
207
|
+
right: transformFormulaNode(current.right, transform),
|
|
208
|
+
};
|
|
209
|
+
case 'CallExpr':
|
|
210
|
+
return {
|
|
211
|
+
...current,
|
|
212
|
+
args: current.args.map((argument) => transformFormulaNode(argument, transform)),
|
|
213
|
+
};
|
|
214
|
+
case 'InvokeExpr':
|
|
215
|
+
return {
|
|
216
|
+
...current,
|
|
217
|
+
callee: transformFormulaNode(current.callee, transform),
|
|
218
|
+
args: current.args.map((argument) => transformFormulaNode(argument, transform)),
|
|
219
|
+
};
|
|
220
|
+
default:
|
|
221
|
+
return current;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
export function collectFormulaNameRefs(node, output) {
|
|
225
|
+
switch (node.kind) {
|
|
226
|
+
case 'BooleanLiteral':
|
|
227
|
+
case 'CellRef':
|
|
228
|
+
case 'ColumnRef':
|
|
229
|
+
case 'ErrorLiteral':
|
|
230
|
+
case 'NameRef':
|
|
231
|
+
if (node.kind === 'NameRef') {
|
|
232
|
+
output.add(node.name);
|
|
233
|
+
}
|
|
234
|
+
return;
|
|
235
|
+
case 'NumberLiteral':
|
|
236
|
+
case 'RangeRef':
|
|
237
|
+
case 'RowRef':
|
|
238
|
+
case 'SpillRef':
|
|
239
|
+
case 'StringLiteral':
|
|
240
|
+
case 'StructuredRef':
|
|
241
|
+
return;
|
|
242
|
+
case 'UnaryExpr':
|
|
243
|
+
collectFormulaNameRefs(node.argument, output);
|
|
244
|
+
return;
|
|
245
|
+
case 'BinaryExpr':
|
|
246
|
+
collectFormulaNameRefs(node.left, output);
|
|
247
|
+
collectFormulaNameRefs(node.right, output);
|
|
248
|
+
return;
|
|
249
|
+
case 'CallExpr':
|
|
250
|
+
node.args.forEach((argument) => collectFormulaNameRefs(argument, output));
|
|
251
|
+
return;
|
|
252
|
+
case 'InvokeExpr':
|
|
253
|
+
collectFormulaNameRefs(node.callee, output);
|
|
254
|
+
node.args.forEach((argument) => collectFormulaNameRefs(argument, output));
|
|
255
|
+
return;
|
|
256
|
+
default:
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
function isAbsoluteCellReference(value) {
|
|
261
|
+
return /^\$[A-Z]+\$[1-9][0-9]*$/.test(value.toUpperCase());
|
|
262
|
+
}
|
|
263
|
+
function isAbsoluteRowReference(value) {
|
|
264
|
+
return /^\$[1-9][0-9]*$/.test(value);
|
|
265
|
+
}
|
|
266
|
+
function isAbsoluteColumnReference(value) {
|
|
267
|
+
return /^\$[A-Z]+$/.test(value.toUpperCase());
|
|
268
|
+
}
|
|
269
|
+
export function formulaHasRelativeReferences(node) {
|
|
270
|
+
switch (node.kind) {
|
|
271
|
+
case 'BooleanLiteral':
|
|
272
|
+
case 'ErrorLiteral':
|
|
273
|
+
case 'NameRef':
|
|
274
|
+
case 'NumberLiteral':
|
|
275
|
+
case 'StringLiteral':
|
|
276
|
+
case 'StructuredRef':
|
|
277
|
+
return false;
|
|
278
|
+
case 'CellRef':
|
|
279
|
+
case 'SpillRef':
|
|
280
|
+
return !isAbsoluteCellReference(node.ref);
|
|
281
|
+
case 'RowRef':
|
|
282
|
+
return !isAbsoluteRowReference(node.ref);
|
|
283
|
+
case 'ColumnRef':
|
|
284
|
+
return !isAbsoluteColumnReference(node.ref);
|
|
285
|
+
case 'RangeRef':
|
|
286
|
+
if (node.refKind === 'cells') {
|
|
287
|
+
return !isAbsoluteCellReference(node.start) || !isAbsoluteCellReference(node.end);
|
|
288
|
+
}
|
|
289
|
+
if (node.refKind === 'rows') {
|
|
290
|
+
return !isAbsoluteRowReference(node.start) || !isAbsoluteRowReference(node.end);
|
|
291
|
+
}
|
|
292
|
+
return !isAbsoluteColumnReference(node.start) || !isAbsoluteColumnReference(node.end);
|
|
293
|
+
case 'UnaryExpr':
|
|
294
|
+
return formulaHasRelativeReferences(node.argument);
|
|
295
|
+
case 'BinaryExpr':
|
|
296
|
+
return formulaHasRelativeReferences(node.left) || formulaHasRelativeReferences(node.right);
|
|
297
|
+
case 'CallExpr':
|
|
298
|
+
return node.args.some((argument) => formulaHasRelativeReferences(argument));
|
|
299
|
+
case 'InvokeExpr':
|
|
300
|
+
return formulaHasRelativeReferences(node.callee) || node.args.some((argument) => formulaHasRelativeReferences(argument));
|
|
301
|
+
default:
|
|
302
|
+
return false;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
//# sourceMappingURL=work-paper-runtime-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work-paper-runtime-helpers.js","sourceRoot":"","sources":["../src/work-paper-runtime-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import type { EngineCellMutationRef, SheetRecord } from '@bilig/core';
|
|
2
|
+
import type { CellRangeRef, LiteralInput } from '@bilig/protocol';
|
|
3
|
+
import { type WorkPaperHistoryRecord } from './work-paper-history.js';
|
|
4
|
+
import type { WorkPaperSheetDimensionCache } from './work-paper-sheet-dimension-cache.js';
|
|
5
|
+
import { type InternalNamedExpression, type WorkPaperNamedExpressionValueSnapshot } from './work-paper-named-expression-helpers.js';
|
|
6
|
+
import type { WorkPaperEngineEventTracker } from './work-paper-engine-event-tracker.js';
|
|
7
|
+
import type { WorkPaperMutationQueues } from './work-paper-mutation-queues.js';
|
|
8
|
+
import { type VisibilitySnapshot } from './work-paper-visibility-snapshot.js';
|
|
9
|
+
import type { TrackedEngineEvent } from './tracked-engine-event-refs.js';
|
|
10
|
+
import { type MaterializedTrackedEventChanges } from './work-paper-tracked-change-reducer.js';
|
|
11
|
+
import { type QueuedEvent } from './work-paper-tracked-event-helpers.js';
|
|
12
|
+
import type { RawCellContent, WorkPaperAddressLike, WorkPaperCellAddress, WorkPaperCellChange, WorkPaperCellRange, WorkPaperChange, WorkPaperDependencyRef, WorkPaperStats } from './work-paper-types.js';
|
|
13
|
+
import { WorkPaperPublicSurface } from './work-paper-public-surface.js';
|
|
14
|
+
type NamedExpressionValueSnapshot = WorkPaperNamedExpressionValueSnapshot;
|
|
15
|
+
export declare const EMPTY_NAMED_EXPRESSION_VALUES: NamedExpressionValueSnapshot;
|
|
16
|
+
export declare abstract class WorkPaperRuntimeSurface extends WorkPaperPublicSurface {
|
|
17
|
+
protected abstract readonly namedExpressions: Map<string, InternalNamedExpression>;
|
|
18
|
+
protected abstract readonly engineEvents: WorkPaperEngineEventTracker;
|
|
19
|
+
protected abstract readonly mutationQueues: WorkPaperMutationQueues;
|
|
20
|
+
protected abstract readonly sheetDimensionCache: WorkPaperSheetDimensionCache;
|
|
21
|
+
protected abstract visibilityCache: VisibilitySnapshot | null;
|
|
22
|
+
protected abstract namedExpressionValueCache: NamedExpressionValueSnapshot | null;
|
|
23
|
+
protected abstract sheetRecordsCache: readonly SheetRecord[] | null;
|
|
24
|
+
protected abstract batchDepth: number;
|
|
25
|
+
protected abstract batchStartVisibility: VisibilitySnapshot | null;
|
|
26
|
+
protected abstract batchStartNamedValues: NamedExpressionValueSnapshot | null;
|
|
27
|
+
protected abstract batchUsesTrackedFastPath: boolean;
|
|
28
|
+
protected abstract batchUndoStackLength: number;
|
|
29
|
+
protected abstract evaluationSuspended: boolean;
|
|
30
|
+
protected abstract suspendedVisibility: VisibilitySnapshot | null;
|
|
31
|
+
protected abstract suspendedNamedValues: NamedExpressionValueSnapshot | null;
|
|
32
|
+
protected abstract suspendedUsesTrackedFastPath: boolean;
|
|
33
|
+
protected abstract queuedEvents: QueuedEvent[];
|
|
34
|
+
protected abstract disposed: boolean;
|
|
35
|
+
protected abstract evaluateNamedExpression(expression: InternalNamedExpression): ReturnType<WorkPaperPublicSurface['calculateFormula']>;
|
|
36
|
+
getStats(): WorkPaperStats;
|
|
37
|
+
rebuildAndRecalculate(): WorkPaperChange[];
|
|
38
|
+
batch(batchOperations: () => void): WorkPaperChange[];
|
|
39
|
+
suspendEvaluation(): void;
|
|
40
|
+
resumeEvaluation(): WorkPaperChange[];
|
|
41
|
+
isEvaluationSuspended(): boolean;
|
|
42
|
+
undo(): WorkPaperChange[];
|
|
43
|
+
redo(): WorkPaperChange[];
|
|
44
|
+
isThereSomethingToUndo(): boolean;
|
|
45
|
+
isThereSomethingToRedo(): boolean;
|
|
46
|
+
clearUndoStack(): void;
|
|
47
|
+
clearRedoStack(): void;
|
|
48
|
+
getCellDependents(address: WorkPaperAddressLike): WorkPaperDependencyRef[];
|
|
49
|
+
getCellPrecedents(address: WorkPaperAddressLike): WorkPaperDependencyRef[];
|
|
50
|
+
getSheetName(sheetId: number): string | undefined;
|
|
51
|
+
getSheetNames(): string[];
|
|
52
|
+
getSheetId(name: string): number | undefined;
|
|
53
|
+
doesSheetExist(name: string): boolean;
|
|
54
|
+
countSheets(): number;
|
|
55
|
+
moveCells(source: WorkPaperCellRange, target: WorkPaperCellAddress): WorkPaperChange[];
|
|
56
|
+
protected applyHistoryOperation(kind: 'undo' | 'redo'): WorkPaperChange[];
|
|
57
|
+
protected resetChangeTrackingCaches(): void;
|
|
58
|
+
protected ensureVisibilityCache(): VisibilitySnapshot;
|
|
59
|
+
protected ensureNamedExpressionValueCache(): NamedExpressionValueSnapshot;
|
|
60
|
+
protected flushPendingBatchOps(): void;
|
|
61
|
+
protected applyCellMutationRefs(refs: readonly EngineCellMutationRef[], options: {
|
|
62
|
+
captureUndo?: boolean;
|
|
63
|
+
potentialNewCells?: number;
|
|
64
|
+
source?: 'local' | 'restore';
|
|
65
|
+
returnUndoOps?: boolean;
|
|
66
|
+
reuseRefs?: boolean;
|
|
67
|
+
}): void;
|
|
68
|
+
protected flushSuspendedCellMutations(): void;
|
|
69
|
+
protected enqueueSuspendedLiteralMutation(sheetId: number, row: number, col: number, content: RawCellContent, cellIndex: number | undefined): boolean;
|
|
70
|
+
protected enqueueDeferredBatchLiteral(sheetId: number, row: number, col: number, content: RawCellContent, cellIndex: number | undefined): boolean;
|
|
71
|
+
protected prepareReadableState(): void;
|
|
72
|
+
protected assertNotDisposed(): void;
|
|
73
|
+
protected assertReadable(): void;
|
|
74
|
+
protected sheetRecord(sheetId: number): SheetRecord;
|
|
75
|
+
protected sheetName(sheetId: number): string;
|
|
76
|
+
protected capabilityContext(): {
|
|
77
|
+
config: import("./work-paper-types.js").WorkPaperConfig;
|
|
78
|
+
requireSheet: (sheetId: number) => void;
|
|
79
|
+
doesSheetExist: (sheetName: string) => boolean;
|
|
80
|
+
getSheetIdByName: (sheetName: string) => number | undefined;
|
|
81
|
+
};
|
|
82
|
+
protected requireSheetId(name: string): number;
|
|
83
|
+
protected a1(address: Pick<WorkPaperCellAddress, 'row' | 'col'>): string;
|
|
84
|
+
protected trackedA1(row: number, col: number): string;
|
|
85
|
+
protected rangeRef(range: WorkPaperCellRange): CellRangeRef;
|
|
86
|
+
protected getDirectPrecedentStrings(address: WorkPaperCellAddress): string[];
|
|
87
|
+
protected getDirectPrecedentRefs(address: WorkPaperCellAddress): WorkPaperDependencyRef[];
|
|
88
|
+
protected listSheetRecords(): readonly SheetRecord[];
|
|
89
|
+
protected captureVisibilitySnapshot(): VisibilitySnapshot;
|
|
90
|
+
protected captureNamedExpressionValueSnapshot(): NamedExpressionValueSnapshot;
|
|
91
|
+
protected computeCellChanges(beforeVisibility: VisibilitySnapshot, afterVisibility: VisibilitySnapshot): WorkPaperChange[];
|
|
92
|
+
protected materializeTrackedEventChanges(event: TrackedEngineEvent, lazy?: boolean): MaterializedTrackedEventChanges;
|
|
93
|
+
protected readSingleTrackedCellChange(cellIndex: number): WorkPaperCellChange | undefined;
|
|
94
|
+
protected readTinySortedPhysicalTrackedEventChanges(event: TrackedEngineEvent): WorkPaperCellChange[] | null;
|
|
95
|
+
protected tryReadTinyTrackedEventChangesWithoutVisibility(event: TrackedEngineEvent): WorkPaperChange[] | null;
|
|
96
|
+
protected computeCellChangesFromTrackedEvents(beforeVisibility: VisibilitySnapshot, events: readonly TrackedEngineEvent[], updateVisibility?: boolean, options?: {
|
|
97
|
+
readonly preferLazyPublicChanges?: boolean;
|
|
98
|
+
}): {
|
|
99
|
+
changes: WorkPaperChange[];
|
|
100
|
+
nextVisibility: VisibilitySnapshot;
|
|
101
|
+
} | null;
|
|
102
|
+
protected computeNamedExpressionChanges(beforeNames: NamedExpressionValueSnapshot, afterNames: NamedExpressionValueSnapshot): WorkPaperChange[];
|
|
103
|
+
protected canUseTrackedStructuralFastPath(): boolean;
|
|
104
|
+
protected canUseTrackedMutationFastPath(): boolean;
|
|
105
|
+
protected canUseNamedExpressionChangeFastPath(): boolean;
|
|
106
|
+
protected canUseMetadataOnlySheetRenameFastPath(): boolean;
|
|
107
|
+
protected downgradeTrackedBatchFastPath(): void;
|
|
108
|
+
protected computeTrackedChangesWithoutVisibilityCache(events: readonly TrackedEngineEvent[], options?: {
|
|
109
|
+
readonly preferLazyPublicChanges?: boolean;
|
|
110
|
+
}): WorkPaperChange[];
|
|
111
|
+
protected tryRenameSheetWithoutVisibilitySnapshots(oldName: string, newName: string): WorkPaperChange[] | null;
|
|
112
|
+
protected captureTrackedChangesWithoutVisibilityCache(mutate: () => void, options?: {
|
|
113
|
+
readonly preservePendingTrackedPositions?: boolean;
|
|
114
|
+
readonly singleLiteralChange?: {
|
|
115
|
+
readonly address: WorkPaperCellAddress;
|
|
116
|
+
readonly cellIndex?: number;
|
|
117
|
+
readonly isPhysicalSheet: boolean;
|
|
118
|
+
readonly sheetName: string;
|
|
119
|
+
readonly value: LiteralInput;
|
|
120
|
+
};
|
|
121
|
+
}): WorkPaperChange[];
|
|
122
|
+
protected batchStructuralChanges(batchOperations: () => void): WorkPaperChange[];
|
|
123
|
+
protected computeChangesAfterMutation(beforeVisibility: VisibilitySnapshot, beforeNames: NamedExpressionValueSnapshot): WorkPaperChange[];
|
|
124
|
+
protected captureChanges(semanticEvent: QueuedEvent | undefined, mutate: () => void, options?: {
|
|
125
|
+
readonly preservePendingTrackedPositions?: boolean;
|
|
126
|
+
}): WorkPaperChange[];
|
|
127
|
+
protected shouldSuppressEvents(): boolean;
|
|
128
|
+
protected flushQueuedEvents(): void;
|
|
129
|
+
protected getUndoStack(): WorkPaperHistoryRecord[];
|
|
130
|
+
protected getRedoStack(): WorkPaperHistoryRecord[];
|
|
131
|
+
protected clearHistoryStacks(): void;
|
|
132
|
+
protected mergeUndoHistory(startIndex: number): void;
|
|
133
|
+
protected nextSheetName(): string;
|
|
134
|
+
protected collectRangeDependencies(range: WorkPaperCellRange, readDependencies: (address: WorkPaperCellAddress) => readonly string[]): WorkPaperDependencyRef[];
|
|
135
|
+
protected toDependencyRefs(values: readonly string[]): WorkPaperDependencyRef[];
|
|
136
|
+
}
|
|
137
|
+
export {};
|