@rowsncolumns/rnc-yrs-store 0.14.2 → 0.15.1
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/rnc_yrs_store.d.ts +42 -0
- package/dist/rnc_yrs_store.js +99 -0
- package/dist/rnc_yrs_store_bg.wasm +0 -0
- package/package.json +1 -1
package/dist/rnc_yrs_store.d.ts
CHANGED
|
@@ -23,10 +23,27 @@ export class SpreadsheetEngine {
|
|
|
23
23
|
* inner engine still does both in one call for the older bespoke/worker path.)
|
|
24
24
|
*/
|
|
25
25
|
applyUpdate(bytes: Uint8Array): void;
|
|
26
|
+
/**
|
|
27
|
+
* The legacy Ctrl+Shift+Enter array covering a 1-based cell, as JSON
|
|
28
|
+
* `{"range":{startRowIndex,endRowIndex,startColumnIndex,endColumnIndex},"formula":"=…"}`, or
|
|
29
|
+
* `null` — the same shape as `rnc-engine`'s `SpreadsheetEngine.arrayFormulaAt`, which the
|
|
30
|
+
* `@rowsncolumns/rnc-engine` wrapper feature-detects (formula-bar `{…}` display, re-entry
|
|
31
|
+
* range, part-of-array checks in the editor).
|
|
32
|
+
*/
|
|
33
|
+
arrayFormulaAt(sheet_id: number, row: number, col: number): string;
|
|
26
34
|
/**
|
|
27
35
|
* Cold-block body cache diagnostics as JSON `{"hits", "misses", "bytes"}`.
|
|
28
36
|
*/
|
|
29
37
|
blockCacheStats(): string;
|
|
38
|
+
/**
|
|
39
|
+
* The workbook calculation mode: `"auto"`, `"autoNoTable"` or `"manual"`. Set it with the
|
|
40
|
+
* `set-calculation-mode` command.
|
|
41
|
+
*/
|
|
42
|
+
calculationMode(): string;
|
|
43
|
+
/**
|
|
44
|
+
* Manual mode: formulas may be out of date — show "Calculate" in the status bar.
|
|
45
|
+
*/
|
|
46
|
+
calculationPending(): boolean;
|
|
30
47
|
canRedo(): boolean;
|
|
31
48
|
canUndo(): boolean;
|
|
32
49
|
/**
|
|
@@ -75,6 +92,11 @@ export class SpreadsheetEngine {
|
|
|
75
92
|
* its own region.
|
|
76
93
|
*/
|
|
77
94
|
dataRegion(sheet_id: number, row: number, col: number): string;
|
|
95
|
+
/**
|
|
96
|
+
* The workbook's What-If data tables as a `DataTable[]` JSON — `{ sheetId, range,
|
|
97
|
+
* rowInputCell?, columnInputCell? }`, `range` being the body (`{=TABLE(row, column)}` cells).
|
|
98
|
+
*/
|
|
99
|
+
dataTables(): string;
|
|
78
100
|
/**
|
|
79
101
|
* How many inbound updates are deferred on a causal gap (a dropped/reordered transport
|
|
80
102
|
* drain). Zero in a healthy stream; persistently non-zero means the host should run a
|
|
@@ -266,11 +288,25 @@ export class SpreadsheetEngine {
|
|
|
266
288
|
* Register a host (JS) custom-function name (`SpreadsheetEngineLike.registerCustomFunction`).
|
|
267
289
|
*/
|
|
268
290
|
registerCustomFunction(name: string): void;
|
|
291
|
+
/**
|
|
292
|
+
* The workbook's scenarios as a `SheetScenarios[]` JSON — `{ sheetId, scenarios: [{ name,
|
|
293
|
+
* cells: [{ rowIndex, columnIndex, value }], comment?, user?, locked, hidden }], current?,
|
|
294
|
+
* show?, resultCells? }` (Data ▸ What-If Analysis ▸ Scenario Manager).
|
|
295
|
+
*/
|
|
296
|
+
scenarios(): string;
|
|
269
297
|
/**
|
|
270
298
|
* Pin the evaluation timezone for `TODAY()` / `NOW()` as minutes east of UTC (`null` /
|
|
271
299
|
* `undefined` restores the default `Local` clock). Returns `false` for an offset outside ±24h.
|
|
272
300
|
*/
|
|
273
301
|
setTimezoneOffsetMinutes(minutes?: number | null): boolean;
|
|
302
|
+
/**
|
|
303
|
+
* Where the workbook lives, for `CELL("filename")` — `{directory}[{fileName}]{sheet}`, so the
|
|
304
|
+
* `MID(CELL("filename"),FIND("]",…)+1,…)` sheet-name idiom works — and `INFO("directory")`.
|
|
305
|
+
* Hosts pass the asset's title as `fileName` (e.g. `Budget.xlsx`) and may pass a folder path or
|
|
306
|
+
* URL ending in `/` as `directory`. An empty `fileName` means unsaved (`""`). The next recalc
|
|
307
|
+
* refreshes the cells that read it.
|
|
308
|
+
*/
|
|
309
|
+
setWorkbookIdentity(directory: string, file_name: string): void;
|
|
274
310
|
/**
|
|
275
311
|
* Per-sheet 1-based data extents as JSON `[{"sheetId", "maxRow", "maxCol"}]`.
|
|
276
312
|
*/
|
|
@@ -372,7 +408,10 @@ export interface InitOutput {
|
|
|
372
408
|
readonly spreadsheetengine_applyCommand: (a: number, b: number, c: number) => [number, number, number, number];
|
|
373
409
|
readonly spreadsheetengine_applyCommandQuiet: (a: number, b: number, c: number) => [number, number];
|
|
374
410
|
readonly spreadsheetengine_applyUpdate: (a: number, b: number, c: number) => [number, number];
|
|
411
|
+
readonly spreadsheetengine_arrayFormulaAt: (a: number, b: number, c: number, d: number) => [number, number];
|
|
375
412
|
readonly spreadsheetengine_blockCacheStats: (a: number) => [number, number];
|
|
413
|
+
readonly spreadsheetengine_calculationMode: (a: number) => [number, number];
|
|
414
|
+
readonly spreadsheetengine_calculationPending: (a: number) => number;
|
|
376
415
|
readonly spreadsheetengine_canRedo: (a: number) => number;
|
|
377
416
|
readonly spreadsheetengine_canUndo: (a: number) => number;
|
|
378
417
|
readonly spreadsheetengine_clearHistory: (a: number) => void;
|
|
@@ -380,6 +419,7 @@ export interface InitOutput {
|
|
|
380
419
|
readonly spreadsheetengine_conditionalFormatRuleStats: (a: number, b: number, c: number, d: number, e: number) => [number, number];
|
|
381
420
|
readonly spreadsheetengine_dataEdge: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => number;
|
|
382
421
|
readonly spreadsheetengine_dataRegion: (a: number, b: number, c: number, d: number) => [number, number];
|
|
422
|
+
readonly spreadsheetengine_dataTables: (a: number) => [number, number];
|
|
383
423
|
readonly spreadsheetengine_deferredRemoteUpdates: (a: number) => number;
|
|
384
424
|
readonly spreadsheetengine_dependents: (a: number, b: number, c: number, d: number) => [number, number];
|
|
385
425
|
readonly spreadsheetengine_documentFacets: (a: number) => [number, number];
|
|
@@ -418,7 +458,9 @@ export interface InitOutput {
|
|
|
418
458
|
readonly spreadsheetengine_redo: (a: number) => [number, number];
|
|
419
459
|
readonly spreadsheetengine_redoDepth: (a: number) => number;
|
|
420
460
|
readonly spreadsheetengine_registerCustomFunction: (a: number, b: number, c: number) => void;
|
|
461
|
+
readonly spreadsheetengine_scenarios: (a: number) => [number, number];
|
|
421
462
|
readonly spreadsheetengine_setTimezoneOffsetMinutes: (a: number, b: number) => number;
|
|
463
|
+
readonly spreadsheetengine_setWorkbookIdentity: (a: number, b: number, c: number, d: number, e: number) => void;
|
|
422
464
|
readonly spreadsheetengine_sheetExtents: (a: number) => [number, number];
|
|
423
465
|
readonly spreadsheetengine_sheetIds: (a: number) => [number, number];
|
|
424
466
|
readonly spreadsheetengine_sheetStats: (a: number) => [number, number];
|
package/dist/rnc_yrs_store.js
CHANGED
|
@@ -77,6 +77,29 @@ export class SpreadsheetEngine {
|
|
|
77
77
|
throw takeFromExternrefTable0(ret[0]);
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* The legacy Ctrl+Shift+Enter array covering a 1-based cell, as JSON
|
|
82
|
+
* `{"range":{startRowIndex,endRowIndex,startColumnIndex,endColumnIndex},"formula":"=…"}`, or
|
|
83
|
+
* `null` — the same shape as `rnc-engine`'s `SpreadsheetEngine.arrayFormulaAt`, which the
|
|
84
|
+
* `@rowsncolumns/rnc-engine` wrapper feature-detects (formula-bar `{…}` display, re-entry
|
|
85
|
+
* range, part-of-array checks in the editor).
|
|
86
|
+
* @param {number} sheet_id
|
|
87
|
+
* @param {number} row
|
|
88
|
+
* @param {number} col
|
|
89
|
+
* @returns {string}
|
|
90
|
+
*/
|
|
91
|
+
arrayFormulaAt(sheet_id, row, col) {
|
|
92
|
+
let deferred1_0;
|
|
93
|
+
let deferred1_1;
|
|
94
|
+
try {
|
|
95
|
+
const ret = wasm.spreadsheetengine_arrayFormulaAt(this.__wbg_ptr, sheet_id, row, col);
|
|
96
|
+
deferred1_0 = ret[0];
|
|
97
|
+
deferred1_1 = ret[1];
|
|
98
|
+
return getStringFromWasm0(ret[0], ret[1]);
|
|
99
|
+
} finally {
|
|
100
|
+
wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
80
103
|
/**
|
|
81
104
|
* Cold-block body cache diagnostics as JSON `{"hits", "misses", "bytes"}`.
|
|
82
105
|
* @returns {string}
|
|
@@ -93,6 +116,31 @@ export class SpreadsheetEngine {
|
|
|
93
116
|
wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
|
|
94
117
|
}
|
|
95
118
|
}
|
|
119
|
+
/**
|
|
120
|
+
* The workbook calculation mode: `"auto"`, `"autoNoTable"` or `"manual"`. Set it with the
|
|
121
|
+
* `set-calculation-mode` command.
|
|
122
|
+
* @returns {string}
|
|
123
|
+
*/
|
|
124
|
+
calculationMode() {
|
|
125
|
+
let deferred1_0;
|
|
126
|
+
let deferred1_1;
|
|
127
|
+
try {
|
|
128
|
+
const ret = wasm.spreadsheetengine_calculationMode(this.__wbg_ptr);
|
|
129
|
+
deferred1_0 = ret[0];
|
|
130
|
+
deferred1_1 = ret[1];
|
|
131
|
+
return getStringFromWasm0(ret[0], ret[1]);
|
|
132
|
+
} finally {
|
|
133
|
+
wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Manual mode: formulas may be out of date — show "Calculate" in the status bar.
|
|
138
|
+
* @returns {boolean}
|
|
139
|
+
*/
|
|
140
|
+
calculationPending() {
|
|
141
|
+
const ret = wasm.spreadsheetengine_calculationPending(this.__wbg_ptr);
|
|
142
|
+
return ret !== 0;
|
|
143
|
+
}
|
|
96
144
|
/**
|
|
97
145
|
* @returns {boolean}
|
|
98
146
|
*/
|
|
@@ -211,6 +259,23 @@ export class SpreadsheetEngine {
|
|
|
211
259
|
wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
|
|
212
260
|
}
|
|
213
261
|
}
|
|
262
|
+
/**
|
|
263
|
+
* The workbook's What-If data tables as a `DataTable[]` JSON — `{ sheetId, range,
|
|
264
|
+
* rowInputCell?, columnInputCell? }`, `range` being the body (`{=TABLE(row, column)}` cells).
|
|
265
|
+
* @returns {string}
|
|
266
|
+
*/
|
|
267
|
+
dataTables() {
|
|
268
|
+
let deferred1_0;
|
|
269
|
+
let deferred1_1;
|
|
270
|
+
try {
|
|
271
|
+
const ret = wasm.spreadsheetengine_dataTables(this.__wbg_ptr);
|
|
272
|
+
deferred1_0 = ret[0];
|
|
273
|
+
deferred1_1 = ret[1];
|
|
274
|
+
return getStringFromWasm0(ret[0], ret[1]);
|
|
275
|
+
} finally {
|
|
276
|
+
wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
214
279
|
/**
|
|
215
280
|
* How many inbound updates are deferred on a causal gap (a dropped/reordered transport
|
|
216
281
|
* drain). Zero in a healthy stream; persistently non-zero means the host should run a
|
|
@@ -922,6 +987,24 @@ export class SpreadsheetEngine {
|
|
|
922
987
|
const len0 = WASM_VECTOR_LEN;
|
|
923
988
|
wasm.spreadsheetengine_registerCustomFunction(this.__wbg_ptr, ptr0, len0);
|
|
924
989
|
}
|
|
990
|
+
/**
|
|
991
|
+
* The workbook's scenarios as a `SheetScenarios[]` JSON — `{ sheetId, scenarios: [{ name,
|
|
992
|
+
* cells: [{ rowIndex, columnIndex, value }], comment?, user?, locked, hidden }], current?,
|
|
993
|
+
* show?, resultCells? }` (Data ▸ What-If Analysis ▸ Scenario Manager).
|
|
994
|
+
* @returns {string}
|
|
995
|
+
*/
|
|
996
|
+
scenarios() {
|
|
997
|
+
let deferred1_0;
|
|
998
|
+
let deferred1_1;
|
|
999
|
+
try {
|
|
1000
|
+
const ret = wasm.spreadsheetengine_scenarios(this.__wbg_ptr);
|
|
1001
|
+
deferred1_0 = ret[0];
|
|
1002
|
+
deferred1_1 = ret[1];
|
|
1003
|
+
return getStringFromWasm0(ret[0], ret[1]);
|
|
1004
|
+
} finally {
|
|
1005
|
+
wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
|
|
1006
|
+
}
|
|
1007
|
+
}
|
|
925
1008
|
/**
|
|
926
1009
|
* Pin the evaluation timezone for `TODAY()` / `NOW()` as minutes east of UTC (`null` /
|
|
927
1010
|
* `undefined` restores the default `Local` clock). Returns `false` for an offset outside ±24h.
|
|
@@ -932,6 +1015,22 @@ export class SpreadsheetEngine {
|
|
|
932
1015
|
const ret = wasm.spreadsheetengine_setTimezoneOffsetMinutes(this.__wbg_ptr, isLikeNone(minutes) ? Number.MAX_SAFE_INTEGER : (minutes) >> 0);
|
|
933
1016
|
return ret !== 0;
|
|
934
1017
|
}
|
|
1018
|
+
/**
|
|
1019
|
+
* Where the workbook lives, for `CELL("filename")` — `{directory}[{fileName}]{sheet}`, so the
|
|
1020
|
+
* `MID(CELL("filename"),FIND("]",…)+1,…)` sheet-name idiom works — and `INFO("directory")`.
|
|
1021
|
+
* Hosts pass the asset's title as `fileName` (e.g. `Budget.xlsx`) and may pass a folder path or
|
|
1022
|
+
* URL ending in `/` as `directory`. An empty `fileName` means unsaved (`""`). The next recalc
|
|
1023
|
+
* refreshes the cells that read it.
|
|
1024
|
+
* @param {string} directory
|
|
1025
|
+
* @param {string} file_name
|
|
1026
|
+
*/
|
|
1027
|
+
setWorkbookIdentity(directory, file_name) {
|
|
1028
|
+
const ptr0 = passStringToWasm0(directory, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
1029
|
+
const len0 = WASM_VECTOR_LEN;
|
|
1030
|
+
const ptr1 = passStringToWasm0(file_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
1031
|
+
const len1 = WASM_VECTOR_LEN;
|
|
1032
|
+
wasm.spreadsheetengine_setWorkbookIdentity(this.__wbg_ptr, ptr0, len0, ptr1, len1);
|
|
1033
|
+
}
|
|
935
1034
|
/**
|
|
936
1035
|
* Per-sheet 1-based data extents as JSON `[{"sheetId", "maxRow", "maxCol"}]`.
|
|
937
1036
|
* @returns {string}
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rowsncolumns/rnc-yrs-store",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.1",
|
|
4
4
|
"author": "Vinay M",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"description": "Document-backed Rust→WASM spreadsheet calc engine (yrs/CRDT, canonical sheetDataV3). Ships the `SpreadsheetEngine` (a `Store<YrsStore>`): applyCommand / undo / redo / canUndo + the Yjs collaboration surface (applyUpdate / takePendingUpdates / loadFromUpdate / stateAsUpdate) the Keryx update-pump binds to. This is the 1,000,000-row engine the demo-app ships today — previously vendored, now a versioned package. The PREBUILT wasm is included (consumers need NO Rust/wasm toolchain); the glue's default init REQUIRES an explicit `module_or_path` — pass the URL of the served `rnc_yrs_store_bg.wasm` (webpack/Turbopack statically resolve a bundled `new URL`, which would 404 from this package, so the inline-default branch is intentionally a throw).",
|