@datalayer/cells 0.0.0-stage → 0.0.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/LICENSE +21 -0
- package/README.md +55 -2
- package/lib/chrome/index.d.ts +7 -0
- package/lib/chrome/index.d.ts.map +1 -0
- package/lib/chrome/index.js +7 -0
- package/lib/chrome/index.js.map +1 -0
- package/lib/collab/index.d.ts +7 -0
- package/lib/collab/index.d.ts.map +1 -0
- package/lib/collab/index.js +7 -0
- package/lib/collab/index.js.map +1 -0
- package/lib/core/axis.d.ts +103 -0
- package/lib/core/axis.d.ts.map +1 -0
- package/lib/core/axis.js +470 -0
- package/lib/core/axis.js.map +1 -0
- package/lib/core/cells.d.ts +71 -0
- package/lib/core/cells.d.ts.map +1 -0
- package/lib/core/cells.js +285 -0
- package/lib/core/cells.js.map +1 -0
- package/lib/core/commands.d.ts +157 -0
- package/lib/core/commands.d.ts.map +1 -0
- package/lib/core/commands.js +620 -0
- package/lib/core/commands.js.map +1 -0
- package/lib/core/format.d.ts +52 -0
- package/lib/core/format.d.ts.map +1 -0
- package/lib/core/format.js +264 -0
- package/lib/core/format.js.map +1 -0
- package/lib/core/history.d.ts +42 -0
- package/lib/core/history.d.ts.map +1 -0
- package/lib/core/history.js +63 -0
- package/lib/core/history.js.map +1 -0
- package/lib/core/index.d.ts +23 -0
- package/lib/core/index.d.ts.map +1 -0
- package/lib/core/index.js +28 -0
- package/lib/core/index.js.map +1 -0
- package/lib/core/model.d.ts +116 -0
- package/lib/core/model.d.ts.map +1 -0
- package/lib/core/model.js +330 -0
- package/lib/core/model.js.map +1 -0
- package/lib/core/patches.d.ts +140 -0
- package/lib/core/patches.d.ts.map +1 -0
- package/lib/core/patches.js +272 -0
- package/lib/core/patches.js.map +1 -0
- package/lib/core/reactor.d.ts +24 -0
- package/lib/core/reactor.d.ts.map +1 -0
- package/lib/core/reactor.js +48 -0
- package/lib/core/reactor.js.map +1 -0
- package/lib/core/selection.d.ts +81 -0
- package/lib/core/selection.d.ts.map +1 -0
- package/lib/core/selection.js +175 -0
- package/lib/core/selection.js.map +1 -0
- package/lib/core/strings.d.ts +19 -0
- package/lib/core/strings.d.ts.map +1 -0
- package/lib/core/strings.js +61 -0
- package/lib/core/strings.js.map +1 -0
- package/lib/core/styles.d.ts +48 -0
- package/lib/core/styles.d.ts.map +1 -0
- package/lib/core/styles.js +102 -0
- package/lib/core/styles.js.map +1 -0
- package/lib/core/values.d.ts +20 -0
- package/lib/core/values.d.ts.map +1 -0
- package/lib/core/values.js +39 -0
- package/lib/core/values.js.map +1 -0
- package/lib/core/workbook.d.ts +59 -0
- package/lib/core/workbook.d.ts.map +1 -0
- package/lib/core/workbook.js +101 -0
- package/lib/core/workbook.js.map +1 -0
- package/lib/core/zone.d.ts +48 -0
- package/lib/core/zone.d.ts.map +1 -0
- package/lib/core/zone.js +89 -0
- package/lib/core/zone.js.map +1 -0
- package/lib/csv/index.d.ts +7 -0
- package/lib/csv/index.d.ts.map +1 -0
- package/lib/csv/index.js +7 -0
- package/lib/csv/index.js.map +1 -0
- package/lib/index.d.ts +8 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +13 -0
- package/lib/index.js.map +1 -0
- package/lib/plugin/index.d.ts +7 -0
- package/lib/plugin/index.d.ts.map +1 -0
- package/lib/plugin/index.js +7 -0
- package/lib/plugin/index.js.map +1 -0
- package/lib/points/index.d.ts +154 -0
- package/lib/points/index.d.ts.map +1 -0
- package/lib/points/index.js +50 -0
- package/lib/points/index.js.map +1 -0
- package/lib/points/resolve.d.ts +56 -0
- package/lib/points/resolve.d.ts.map +1 -0
- package/lib/points/resolve.js +106 -0
- package/lib/points/resolve.js.map +1 -0
- package/lib/xlsx/index.d.ts +7 -0
- package/lib/xlsx/index.d.ts.map +1 -0
- package/lib/xlsx/index.js +7 -0
- package/lib/xlsx/index.js.map +1 -0
- package/package.json +116 -4
- package/style/cells.css +7 -0
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2022-2026 Datalayer, Inc.
|
|
3
|
+
*
|
|
4
|
+
* MIT License
|
|
5
|
+
*/
|
|
6
|
+
import { cellError, isCellError, isErrorCode } from './values.js';
|
|
7
|
+
export const CHUNK = 1024;
|
|
8
|
+
const SHIFT = 10;
|
|
9
|
+
const MASK = CHUNK - 1;
|
|
10
|
+
/** The formula table: one entry per formula cell, reused through a free list. */
|
|
11
|
+
export class FormulaTable {
|
|
12
|
+
#entries = [];
|
|
13
|
+
#free = [];
|
|
14
|
+
add(entry) {
|
|
15
|
+
const i = this.#free.pop() ?? this.#entries.length;
|
|
16
|
+
this.#entries[i] = entry;
|
|
17
|
+
return i;
|
|
18
|
+
}
|
|
19
|
+
get(i) {
|
|
20
|
+
const e = this.#entries[i];
|
|
21
|
+
if (e === undefined)
|
|
22
|
+
throw new Error(`No formula at ${i} in the formula table.`);
|
|
23
|
+
return e;
|
|
24
|
+
}
|
|
25
|
+
remove(i) {
|
|
26
|
+
this.get(i);
|
|
27
|
+
this.#entries[i] = undefined;
|
|
28
|
+
this.#free.push(i);
|
|
29
|
+
}
|
|
30
|
+
get size() {
|
|
31
|
+
return this.#entries.length - this.#free.length;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
class Chunk {
|
|
35
|
+
kind = new Uint8Array(CHUNK);
|
|
36
|
+
num = new Float64Array(CHUNK);
|
|
37
|
+
ref = new Uint32Array(CHUNK);
|
|
38
|
+
style = new Uint16Array(CHUNK);
|
|
39
|
+
/** Rows holding a value or a style: the chunk is dropped at 0. */
|
|
40
|
+
filled = 0;
|
|
41
|
+
}
|
|
42
|
+
class Column {
|
|
43
|
+
chunks = new Map();
|
|
44
|
+
}
|
|
45
|
+
export class SheetCells {
|
|
46
|
+
#pools;
|
|
47
|
+
#columns = new Map();
|
|
48
|
+
#filled = 0;
|
|
49
|
+
constructor(pools) {
|
|
50
|
+
this.#pools = pools;
|
|
51
|
+
}
|
|
52
|
+
/** How many cells hold a value or a style. */
|
|
53
|
+
get filled() {
|
|
54
|
+
return this.#filled;
|
|
55
|
+
}
|
|
56
|
+
/** How many chunks are allocated, for `stats()`. */
|
|
57
|
+
get chunkCount() {
|
|
58
|
+
let n = 0;
|
|
59
|
+
for (const c of this.#columns.values())
|
|
60
|
+
n += c.chunks.size;
|
|
61
|
+
return n;
|
|
62
|
+
}
|
|
63
|
+
/** The columns holding anything, in no order. */
|
|
64
|
+
columnIndexes() {
|
|
65
|
+
return this.#columns.keys();
|
|
66
|
+
}
|
|
67
|
+
/** The content of a cell, or `null` when it holds neither a value nor a style. */
|
|
68
|
+
get(row, col) {
|
|
69
|
+
const chunk = this.#columns.get(col)?.chunks.get(row >>> SHIFT);
|
|
70
|
+
if (chunk === undefined)
|
|
71
|
+
return null;
|
|
72
|
+
const i = row & MASK;
|
|
73
|
+
if (chunk.kind[i] === 0 /* Kind.Empty */ && chunk.style[i] === 0)
|
|
74
|
+
return null;
|
|
75
|
+
return this.#read(chunk, i);
|
|
76
|
+
}
|
|
77
|
+
/** The number in a cell when it holds a literal number, else `undefined`. The aggregate path. */
|
|
78
|
+
numberAt(row, col) {
|
|
79
|
+
const chunk = this.#columns.get(col)?.chunks.get(row >>> SHIFT);
|
|
80
|
+
if (chunk === undefined)
|
|
81
|
+
return undefined;
|
|
82
|
+
const i = row & MASK;
|
|
83
|
+
return chunk.kind[i] === 1 /* Kind.Number */ ? chunk.num[i] : undefined;
|
|
84
|
+
}
|
|
85
|
+
/** Write a cell; `null` empties it (value and style). */
|
|
86
|
+
set(row, col, content) {
|
|
87
|
+
let column = this.#columns.get(col);
|
|
88
|
+
const ci = row >>> SHIFT;
|
|
89
|
+
let chunk = column?.chunks.get(ci);
|
|
90
|
+
const i = row & MASK;
|
|
91
|
+
if (chunk !== undefined)
|
|
92
|
+
this.#clear(chunk, i);
|
|
93
|
+
if (content === null ||
|
|
94
|
+
(content.value === null && content.formula === undefined && content.style === 0)) {
|
|
95
|
+
if (chunk !== undefined && chunk.filled === 0) {
|
|
96
|
+
column.chunks.delete(ci);
|
|
97
|
+
if (column.chunks.size === 0)
|
|
98
|
+
this.#columns.delete(col);
|
|
99
|
+
}
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
if (column === undefined) {
|
|
103
|
+
column = new Column();
|
|
104
|
+
this.#columns.set(col, column);
|
|
105
|
+
}
|
|
106
|
+
if (chunk === undefined) {
|
|
107
|
+
chunk = new Chunk();
|
|
108
|
+
column.chunks.set(ci, chunk);
|
|
109
|
+
}
|
|
110
|
+
this.#write(chunk, i, content);
|
|
111
|
+
}
|
|
112
|
+
/** Every populated cell of a zone, column by column, rows ascending. */
|
|
113
|
+
*entries(zone) {
|
|
114
|
+
const cols = [...this.#columns.keys()].sort((a, b) => a - b);
|
|
115
|
+
for (const col of cols) {
|
|
116
|
+
if (zone && (col < zone.left || col > zone.right))
|
|
117
|
+
continue;
|
|
118
|
+
const column = this.#columns.get(col);
|
|
119
|
+
const chunkIds = [...column.chunks.keys()].sort((a, b) => a - b);
|
|
120
|
+
for (const ci of chunkIds) {
|
|
121
|
+
const base = ci << SHIFT;
|
|
122
|
+
if (zone && (base + CHUNK - 1 < zone.top || base > zone.bottom))
|
|
123
|
+
continue;
|
|
124
|
+
const chunk = column.chunks.get(ci);
|
|
125
|
+
const from = zone ? Math.max(0, zone.top - base) : 0;
|
|
126
|
+
const to = zone ? Math.min(CHUNK - 1, zone.bottom - base) : CHUNK - 1;
|
|
127
|
+
for (let i = from; i <= to; i += 1) {
|
|
128
|
+
if (chunk.kind[i] === 0 /* Kind.Empty */ && chunk.style[i] === 0)
|
|
129
|
+
continue;
|
|
130
|
+
yield [base + i, col, this.#read(chunk, i)];
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/** The last row holding anything in a column, or -1. */
|
|
136
|
+
lastRowIn(col) {
|
|
137
|
+
const column = this.#columns.get(col);
|
|
138
|
+
if (column === undefined)
|
|
139
|
+
return -1;
|
|
140
|
+
const ci = Math.max(...column.chunks.keys());
|
|
141
|
+
const chunk = column.chunks.get(ci);
|
|
142
|
+
for (let i = CHUNK - 1; i >= 0; i -= 1) {
|
|
143
|
+
if (chunk.kind[i] !== 0 /* Kind.Empty */ || chunk.style[i] !== 0)
|
|
144
|
+
return (ci << SHIFT) + i;
|
|
145
|
+
}
|
|
146
|
+
throw new Error('A kept chunk holds nothing: the store is inconsistent.');
|
|
147
|
+
}
|
|
148
|
+
/** Whether a zone holds anything. */
|
|
149
|
+
isEmpty(zone) {
|
|
150
|
+
for (const _ of this.entries(zone))
|
|
151
|
+
return false;
|
|
152
|
+
return true;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Move rows: `n > 0` inserts `n` empty rows at `at` (rows at the end fall off
|
|
156
|
+
* `limit`); `n < 0` deletes `-n` rows from `at`. Only columns holding data are touched.
|
|
157
|
+
*/
|
|
158
|
+
shiftRows(at, n, limit) {
|
|
159
|
+
for (const [col, column] of [...this.#columns]) {
|
|
160
|
+
const moved = [];
|
|
161
|
+
for (const [ci, chunk] of [...column.chunks]) {
|
|
162
|
+
const base = ci << SHIFT;
|
|
163
|
+
if (base + CHUNK - 1 < at)
|
|
164
|
+
continue;
|
|
165
|
+
for (let i = 0; i < CHUNK; i += 1) {
|
|
166
|
+
const row = base + i;
|
|
167
|
+
if (row < at)
|
|
168
|
+
continue;
|
|
169
|
+
if (chunk.kind[i] === 0 /* Kind.Empty */ && chunk.style[i] === 0)
|
|
170
|
+
continue;
|
|
171
|
+
const content = this.#read(chunk, i);
|
|
172
|
+
this.set(row, col, null);
|
|
173
|
+
if (n < 0 && row < at - n)
|
|
174
|
+
continue; // deleted
|
|
175
|
+
const target = row + n;
|
|
176
|
+
if (target < limit)
|
|
177
|
+
moved.push([target, content]);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
for (const [row, content] of moved)
|
|
181
|
+
this.set(row, col, content);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
/** Move columns: `n > 0` inserts at `at`, `n < 0` deletes `-n` from `at`. */
|
|
185
|
+
shiftCols(at, n, limit) {
|
|
186
|
+
const keys = [...this.#columns.keys()]
|
|
187
|
+
.filter((c) => c >= at)
|
|
188
|
+
.sort((a, b) => (n > 0 ? b - a : a - b));
|
|
189
|
+
for (const col of keys) {
|
|
190
|
+
const column = this.#columns.get(col);
|
|
191
|
+
this.#columns.delete(col);
|
|
192
|
+
if (n < 0 && col < at - n) {
|
|
193
|
+
for (const [ci, chunk] of column.chunks) {
|
|
194
|
+
for (let i = 0; i < CHUNK; i += 1)
|
|
195
|
+
this.#clear(chunk, i);
|
|
196
|
+
void ci;
|
|
197
|
+
}
|
|
198
|
+
continue;
|
|
199
|
+
}
|
|
200
|
+
const target = col + n;
|
|
201
|
+
if (target < limit)
|
|
202
|
+
this.#columns.set(target, column);
|
|
203
|
+
else
|
|
204
|
+
for (const chunk of column.chunks.values())
|
|
205
|
+
for (let i = 0; i < CHUNK; i += 1)
|
|
206
|
+
this.#clear(chunk, i);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
#read(chunk, i) {
|
|
210
|
+
const style = chunk.style[i];
|
|
211
|
+
switch (chunk.kind[i]) {
|
|
212
|
+
case 0 /* Kind.Empty */:
|
|
213
|
+
return { value: null, style };
|
|
214
|
+
case 1 /* Kind.Number */:
|
|
215
|
+
return { value: chunk.num[i], style };
|
|
216
|
+
case 3 /* Kind.Boolean */:
|
|
217
|
+
return { value: chunk.num[i] !== 0, style };
|
|
218
|
+
case 2 /* Kind.String */:
|
|
219
|
+
return { value: this.#pools.strings.get(chunk.ref[i]), style };
|
|
220
|
+
case 4 /* Kind.Error */: {
|
|
221
|
+
const code = this.#pools.strings.get(chunk.ref[i]);
|
|
222
|
+
if (!isErrorCode(code))
|
|
223
|
+
throw new Error(`The store holds '${code}' as an error.`);
|
|
224
|
+
return { value: cellError(code), style };
|
|
225
|
+
}
|
|
226
|
+
case 5 /* Kind.Formula */: {
|
|
227
|
+
const e = this.#pools.formulas.get(chunk.ref[i]);
|
|
228
|
+
return { value: e.cached, formula: e.source, style };
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
#write(chunk, i, content) {
|
|
233
|
+
const { value, formula, style } = content;
|
|
234
|
+
if (!Number.isInteger(style) || style < 0 || style > 0xffff)
|
|
235
|
+
throw new Error(`No style index ${style}.`);
|
|
236
|
+
chunk.style[i] = style;
|
|
237
|
+
if (formula !== undefined) {
|
|
238
|
+
chunk.kind[i] = 5 /* Kind.Formula */;
|
|
239
|
+
chunk.ref[i] = this.#pools.formulas.add({ source: formula, cached: value });
|
|
240
|
+
}
|
|
241
|
+
else if (value === null) {
|
|
242
|
+
chunk.kind[i] = 0 /* Kind.Empty */;
|
|
243
|
+
}
|
|
244
|
+
else if (typeof value === 'number') {
|
|
245
|
+
if (!Number.isFinite(value))
|
|
246
|
+
throw new Error(`A cell cannot hold ${value}; use an error value.`);
|
|
247
|
+
chunk.kind[i] = 1 /* Kind.Number */;
|
|
248
|
+
chunk.num[i] = value;
|
|
249
|
+
}
|
|
250
|
+
else if (typeof value === 'boolean') {
|
|
251
|
+
chunk.kind[i] = 3 /* Kind.Boolean */;
|
|
252
|
+
chunk.num[i] = value ? 1 : 0;
|
|
253
|
+
}
|
|
254
|
+
else if (typeof value === 'string') {
|
|
255
|
+
chunk.kind[i] = 2 /* Kind.String */;
|
|
256
|
+
chunk.ref[i] = this.#pools.strings.intern(value);
|
|
257
|
+
}
|
|
258
|
+
else if (isCellError(value)) {
|
|
259
|
+
chunk.kind[i] = 4 /* Kind.Error */;
|
|
260
|
+
chunk.ref[i] = this.#pools.strings.intern(value.error);
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
throw new Error(`A cell cannot hold ${JSON.stringify(value)}.`);
|
|
264
|
+
}
|
|
265
|
+
chunk.filled += 1;
|
|
266
|
+
this.#filled += 1;
|
|
267
|
+
}
|
|
268
|
+
/** Empty one row of a chunk, releasing what it referenced. */
|
|
269
|
+
#clear(chunk, i) {
|
|
270
|
+
const kind = chunk.kind[i];
|
|
271
|
+
if (kind === 0 /* Kind.Empty */ && chunk.style[i] === 0)
|
|
272
|
+
return;
|
|
273
|
+
if (kind === 2 /* Kind.String */ || kind === 4 /* Kind.Error */)
|
|
274
|
+
this.#pools.strings.release(chunk.ref[i]);
|
|
275
|
+
else if (kind === 5 /* Kind.Formula */)
|
|
276
|
+
this.#pools.formulas.remove(chunk.ref[i]);
|
|
277
|
+
chunk.kind[i] = 0 /* Kind.Empty */;
|
|
278
|
+
chunk.num[i] = 0;
|
|
279
|
+
chunk.ref[i] = 0;
|
|
280
|
+
chunk.style[i] = 0;
|
|
281
|
+
chunk.filled -= 1;
|
|
282
|
+
this.#filled -= 1;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
//# sourceMappingURL=cells.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cells.js","sourceRoot":"","sources":["../../src/core/cells.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAeH,OAAO,EAAkB,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAGlF,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC;AAC1B,MAAM,KAAK,GAAG,EAAE,CAAC;AACjB,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC;AA2BvB,iFAAiF;AACjF,MAAM,OAAO,YAAY;IACvB,QAAQ,GAAiC,EAAE,CAAC;IAC5C,KAAK,GAAa,EAAE,CAAC;IAErB,GAAG,CAAC,KAAmB;QACrB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QACnD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACzB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,GAAG,CAAC,CAAS;QACX,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,CAAC;QACjF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,CAAC,CAAS;QACd,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACZ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAClD,CAAC;CACF;AAED,MAAM,KAAK;IACA,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IAC7B,GAAG,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;IAC9B,GAAG,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;IAC7B,KAAK,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;IACxC,kEAAkE;IAClE,MAAM,GAAG,CAAC,CAAC;CACZ;AAED,MAAM,MAAM;IACD,MAAM,GAAG,IAAI,GAAG,EAAiB,CAAC;CAC5C;AAOD,MAAM,OAAO,UAAU;IACZ,MAAM,CAAQ;IACvB,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IACrC,OAAO,GAAG,CAAC,CAAC;IAEZ,YAAY,KAAY;QACtB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,8CAA8C;IAC9C,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,oDAAoD;IACpD,IAAI,UAAU;QACZ,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QAC3D,OAAO,CAAC,CAAC;IACX,CAAC;IAED,iDAAiD;IACjD,aAAa;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED,kFAAkF;IAClF,GAAG,CAAC,GAAW,EAAE,GAAW;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC;QAChE,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACrC,MAAM,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;QACrB,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,uBAAe,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACtE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,iGAAiG;IACjG,QAAQ,CAAC,GAAW,EAAE,GAAW;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC;QAChE,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC1C,MAAM,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;QACrB,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClE,CAAC;IAED,yDAAyD;IACzD,GAAG,CAAC,GAAW,EAAE,GAAW,EAAE,OAA2B;QACvD,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,MAAM,EAAE,GAAG,GAAG,KAAK,KAAK,CAAC;QACzB,IAAI,KAAK,GAAG,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;QACrB,IAAI,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC/C,IACE,OAAO,KAAK,IAAI;YAChB,CAAC,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC,EAChF,CAAC;YACD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9C,MAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC1B,IAAI,MAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC;oBAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC3D,CAAC;YACD,OAAO;QACT,CAAC;QACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACtB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;YACpB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,wEAAwE;IACxE,CAAC,OAAO,CAAC,IAAW;QAClB,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;gBAAE,SAAS;YAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACjE,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;gBAC1B,MAAM,IAAI,GAAG,EAAE,IAAI,KAAK,CAAC;gBACzB,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;oBAAE,SAAS;gBAC1E,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC;gBACrC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrD,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;gBACtE,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;oBACnC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,uBAAe,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;wBAAE,SAAS;oBACnE,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,wDAAwD;IACxD,SAAS,CAAC,GAAW;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,CAAC,CAAC,CAAC;QACpC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC;QACrC,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,uBAAe,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;gBAAE,OAAO,CAAC,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;QACrF,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IAED,qCAAqC;IACrC,OAAO,CAAC,IAAU;QAChB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,EAAU,EAAE,CAAS,EAAE,KAAa;QAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/C,MAAM,KAAK,GAA4B,EAAE,CAAC;YAC1C,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7C,MAAM,IAAI,GAAG,EAAE,IAAI,KAAK,CAAC;gBACzB,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC,GAAG,EAAE;oBAAE,SAAS;gBACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;oBAClC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC;oBACrB,IAAI,GAAG,GAAG,EAAE;wBAAE,SAAS;oBACvB,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,uBAAe,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;wBAAE,SAAS;oBACnE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;oBACrC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;oBACzB,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,EAAE,GAAG,CAAC;wBAAE,SAAS,CAAC,UAAU;oBAC/C,MAAM,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC;oBACvB,IAAI,MAAM,GAAG,KAAK;wBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC;YACD,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,KAAK;gBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,SAAS,CAAC,EAAU,EAAE,CAAS,EAAE,KAAa;QAC5C,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;aACnC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;aACtB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;YACvC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;gBAC1B,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC;wBAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;oBACzD,KAAK,EAAE,CAAC;gBACV,CAAC;gBACD,SAAS;YACX,CAAC;YACD,MAAM,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC;YACvB,IAAI,MAAM,GAAG,KAAK;gBAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;gBAEpD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;oBACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC;wBAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAY,EAAE,CAAS;QAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,QAAQ,KAAK,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,CAAC;YAC9B;gBACE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YAChC;gBACE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;YACxC;gBACE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;YAC9C;gBACE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;YACjE,uBAAe,CAAC,CAAC,CAAC;gBAChB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,gBAAgB,CAAC,CAAC;gBAClF,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;YAC3C,CAAC;YACD,yBAAiB,CAAC,CAAC,CAAC;gBAClB,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjD,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;YACvD,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAY,EAAE,CAAS,EAAE,OAAoB;QAClD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,MAAM;YACzD,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,GAAG,CAAC,CAAC;QAC9C,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACvB,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,uBAAe,CAAC;YAC7B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9E,CAAC;aAAM,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAa,CAAC;QAC7B,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,uBAAuB,CAAC,CAAC;YACtE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,sBAAc,CAAC;YAC5B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACvB,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;YACtC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,uBAAe,CAAC;YAC7B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,sBAAc,CAAC;YAC5B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnD,CAAC;aAAM,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAa,CAAC;YAC3B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClE,CAAC;QACD,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;QAClB,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;IACpB,CAAC;IAED,8DAA8D;IAC9D,MAAM,CAAC,KAAY,EAAE,CAAS;QAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAS,CAAC;QACnC,IAAI,IAAI,uBAAe,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;YAAE,OAAO;QACxD,IAAI,IAAI,wBAAgB,IAAI,IAAI,uBAAe;YAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aACtF,IAAI,IAAI,yBAAiB;YAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAa,CAAC;QAC3B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACjB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACjB,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACnB,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;QAClB,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;IACpB,CAAC;CACF"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The core commands: a typed union, each with a handler that refuses with
|
|
3
|
+
* reasons or produces patches. `CellsCorePlugin` contributes the handlers to
|
|
4
|
+
* the `datalayer.cells.command` point, as any plugin contributes its own.
|
|
5
|
+
*
|
|
6
|
+
* @module core/commands
|
|
7
|
+
*/
|
|
8
|
+
import type { CellContent } from './cells.js';
|
|
9
|
+
import { type AxisName, type CellsPatch } from './patches.js';
|
|
10
|
+
import { type Style } from './styles.js';
|
|
11
|
+
import { type CellValue } from './values.js';
|
|
12
|
+
import type { Sheet, Workbook } from './workbook.js';
|
|
13
|
+
import { type Position, type Zone, zoneContains } from './zone.js';
|
|
14
|
+
import type { CommandHandler } from '../points/index.js';
|
|
15
|
+
/** Why a command was refused. */
|
|
16
|
+
export type RefusalReason = 'ReadOnly' | 'UnknownCommand' | 'UnknownSheet' | 'OutOfBounds' | 'InvalidArgument' | 'MergeOverlap' | 'NoMerge' | 'NotEmptyAtEnd' | 'LastSheet' | 'DuplicateSheetName' | 'InvalidSheetName' | 'Gate';
|
|
17
|
+
export interface Refusal {
|
|
18
|
+
readonly reason: RefusalReason | (string & {});
|
|
19
|
+
/** A sentence a person can read. */
|
|
20
|
+
readonly message: string;
|
|
21
|
+
}
|
|
22
|
+
export type CommandResult = {
|
|
23
|
+
readonly ok: true;
|
|
24
|
+
} | {
|
|
25
|
+
readonly ok: false;
|
|
26
|
+
readonly refusals: readonly Refusal[];
|
|
27
|
+
};
|
|
28
|
+
export declare const OK: CommandResult;
|
|
29
|
+
export declare function refuse(reason: Refusal['reason'], message: string): CommandResult;
|
|
30
|
+
/** What a handler sees: the workbook, read-only by contract (writes go through patches). */
|
|
31
|
+
export interface CommandContext {
|
|
32
|
+
readonly workbook: Workbook;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* What a cell is set to. A plain value is a literal; `{ formula }` a formula
|
|
36
|
+
* (without `=`); `style` replaces the style (`null`: the default; absent: kept).
|
|
37
|
+
*/
|
|
38
|
+
export type CellInput = CellValue | {
|
|
39
|
+
readonly value?: CellValue;
|
|
40
|
+
readonly formula?: string;
|
|
41
|
+
readonly style?: Style | null;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* What typing `text` into a cell means: a formula for `=…`, a number, a
|
|
45
|
+
* boolean (`TRUE`, `FALSE`), else the text itself. A leading `'` forces text.
|
|
46
|
+
*/
|
|
47
|
+
export declare function parseInput(text: string): CellInput;
|
|
48
|
+
export interface SetCellsCommand {
|
|
49
|
+
readonly type: 'SET_CELLS';
|
|
50
|
+
readonly sheet: string;
|
|
51
|
+
/** The top-left cell; `cells` is a block of rows from there. */
|
|
52
|
+
readonly at: Position;
|
|
53
|
+
readonly cells: readonly (readonly CellInput[])[];
|
|
54
|
+
}
|
|
55
|
+
export interface SetStyleCommand {
|
|
56
|
+
readonly type: 'SET_STYLE';
|
|
57
|
+
readonly sheet: string;
|
|
58
|
+
readonly zone: Zone;
|
|
59
|
+
/** Merged into each cell's style; `null` resets to the default. */
|
|
60
|
+
readonly style: Style | null;
|
|
61
|
+
}
|
|
62
|
+
export interface ClearCommand {
|
|
63
|
+
readonly type: 'CLEAR';
|
|
64
|
+
readonly sheet: string;
|
|
65
|
+
readonly zone: Zone;
|
|
66
|
+
readonly what?: 'all' | 'contents' | 'styles';
|
|
67
|
+
}
|
|
68
|
+
export interface InsertAxisCommand {
|
|
69
|
+
readonly type: 'INSERT_AXIS';
|
|
70
|
+
readonly sheet: string;
|
|
71
|
+
readonly axis: AxisName;
|
|
72
|
+
readonly at: number;
|
|
73
|
+
readonly n: number;
|
|
74
|
+
}
|
|
75
|
+
export interface DeleteAxisCommand {
|
|
76
|
+
readonly type: 'DELETE_AXIS';
|
|
77
|
+
readonly sheet: string;
|
|
78
|
+
readonly axis: AxisName;
|
|
79
|
+
readonly at: number;
|
|
80
|
+
readonly n: number;
|
|
81
|
+
}
|
|
82
|
+
export interface MoveAxisCommand {
|
|
83
|
+
readonly type: 'MOVE_AXIS';
|
|
84
|
+
readonly sheet: string;
|
|
85
|
+
readonly axis: AxisName;
|
|
86
|
+
readonly at: number;
|
|
87
|
+
readonly n: number;
|
|
88
|
+
/** Before this index, in the coordinates before the move. */
|
|
89
|
+
readonly to: number;
|
|
90
|
+
}
|
|
91
|
+
export interface ResizeAxisCommand {
|
|
92
|
+
readonly type: 'RESIZE_AXIS';
|
|
93
|
+
readonly sheet: string;
|
|
94
|
+
readonly axis: AxisName;
|
|
95
|
+
readonly from: number;
|
|
96
|
+
/** Inclusive. */
|
|
97
|
+
readonly to: number;
|
|
98
|
+
readonly size: number;
|
|
99
|
+
}
|
|
100
|
+
export interface HideAxisCommand {
|
|
101
|
+
readonly type: 'HIDE_AXIS';
|
|
102
|
+
readonly sheet: string;
|
|
103
|
+
readonly axis: AxisName;
|
|
104
|
+
readonly from: number;
|
|
105
|
+
readonly to: number;
|
|
106
|
+
readonly hidden: boolean;
|
|
107
|
+
}
|
|
108
|
+
export interface MergeCommand {
|
|
109
|
+
readonly type: 'MERGE';
|
|
110
|
+
readonly sheet: string;
|
|
111
|
+
readonly zone: Zone;
|
|
112
|
+
}
|
|
113
|
+
export interface UnmergeCommand {
|
|
114
|
+
readonly type: 'UNMERGE';
|
|
115
|
+
readonly sheet: string;
|
|
116
|
+
readonly zone: Zone;
|
|
117
|
+
}
|
|
118
|
+
export interface AddSheetCommand {
|
|
119
|
+
readonly type: 'ADD_SHEET';
|
|
120
|
+
readonly name?: string;
|
|
121
|
+
/** Tab position; the end by default. */
|
|
122
|
+
readonly at?: number;
|
|
123
|
+
/** The id to give it; fresh by default. */
|
|
124
|
+
readonly id?: string;
|
|
125
|
+
}
|
|
126
|
+
export interface DeleteSheetCommand {
|
|
127
|
+
readonly type: 'DELETE_SHEET';
|
|
128
|
+
readonly sheet: string;
|
|
129
|
+
}
|
|
130
|
+
export interface RenameSheetCommand {
|
|
131
|
+
readonly type: 'RENAME_SHEET';
|
|
132
|
+
readonly sheet: string;
|
|
133
|
+
readonly name: string;
|
|
134
|
+
}
|
|
135
|
+
export interface MoveSheetCommand {
|
|
136
|
+
readonly type: 'MOVE_SHEET';
|
|
137
|
+
readonly sheet: string;
|
|
138
|
+
readonly to: number;
|
|
139
|
+
}
|
|
140
|
+
export interface FreezeCommand {
|
|
141
|
+
readonly type: 'FREEZE';
|
|
142
|
+
readonly sheet: string;
|
|
143
|
+
readonly rows: number;
|
|
144
|
+
readonly cols: number;
|
|
145
|
+
}
|
|
146
|
+
export type CoreCommand = SetCellsCommand | SetStyleCommand | ClearCommand | InsertAxisCommand | DeleteAxisCommand | MoveAxisCommand | ResizeAxisCommand | HideAxisCommand | MergeCommand | UnmergeCommand | AddSheetCommand | DeleteSheetCommand | RenameSheetCommand | MoveSheetCommand | FreezeCommand;
|
|
147
|
+
/** Any command: a core one, or a plugin's. */
|
|
148
|
+
export type Command = CoreCommand | ({
|
|
149
|
+
readonly type: string;
|
|
150
|
+
} & Record<string, unknown>);
|
|
151
|
+
declare function all(...results: CommandResult[]): CommandResult;
|
|
152
|
+
/** A cells patch writing `contents` (by position) over `zone`, from the current state. */
|
|
153
|
+
export declare function cellsPatch(sheet: Sheet, zone: Zone, contents: readonly [number, number, CellContent | null][]): CellsPatch;
|
|
154
|
+
/** The core command handlers, contributed by `CellsCorePlugin`. */
|
|
155
|
+
export declare const CORE_COMMANDS: readonly CommandHandler<any>[];
|
|
156
|
+
export { all as allResults, zoneContains };
|
|
157
|
+
//# sourceMappingURL=commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/core/commands.ts"],"names":[],"mappings":"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"}
|