@rowsncolumns/y-spreadsheet 16.0.0 → 16.1.0
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 +1 -1
- package/dist/cjs/helpers-v5.d.ts +64 -0
- package/dist/cjs/helpers-v5.d.ts.map +1 -0
- package/dist/cjs/helpers-v5.js +970 -0
- package/dist/cjs/helpers.d.ts +3 -2
- package/dist/cjs/helpers.d.ts.map +1 -1
- package/dist/cjs/helpers.js +8 -2
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/cjs/use-yspreadsheet-v2.d.ts +4 -2
- package/dist/cjs/use-yspreadsheet-v2.d.ts.map +1 -1
- package/dist/cjs/use-yspreadsheet-v2.js +125 -34
- package/dist/esm/helpers-v5.d.ts +64 -0
- package/dist/esm/helpers-v5.d.ts.map +1 -0
- package/dist/esm/helpers-v5.js +733 -0
- package/dist/esm/helpers.d.ts +3 -2
- package/dist/esm/helpers.d.ts.map +1 -1
- package/dist/esm/helpers.js +8 -2
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/esm/use-yspreadsheet-v2.d.ts +4 -2
- package/dist/esm/use-yspreadsheet-v2.d.ts.map +1 -1
- package/dist/esm/use-yspreadsheet-v2.js +86 -11
- package/package.json +2 -1
package/dist/cjs/helpers.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import type { Patch } from "immer";
|
|
|
4
4
|
import type * as Y from "yjs";
|
|
5
5
|
import type { YRowData, YSheetData } from "./use-yspreadsheet-v2";
|
|
6
6
|
import type { CellKeyV3, CellDataV3, ParsedCellKeyV3, YjsRuntime } from "./types";
|
|
7
|
+
export * from "./helpers-v5";
|
|
7
8
|
/**
|
|
8
9
|
* Simplified structure to pass event data synchronously
|
|
9
10
|
*/
|
|
@@ -22,9 +23,9 @@ export type SheetDataEvent = {
|
|
|
22
23
|
* @param userId
|
|
23
24
|
* @param patches
|
|
24
25
|
* @param source
|
|
25
|
-
* @param sheetDataVersion - Version of sheet data format ("v2" or "
|
|
26
|
+
* @param sheetDataVersion - Version of sheet data format ("v2", "v3" or "v5"). Falls back to docMeta if undefined.
|
|
26
27
|
*/
|
|
27
|
-
export declare const applyPatchesToYDoc: (doc: Y.Doc, userId: string | number, patches: [patch: SpreadsheetPatch<Patch>, type?: HistoryType | undefined | null][], source?: "agent" | "user" | "backend", sheetDataVersion?: "v2" | "v3", yjsRuntime?: YjsRuntime) => void;
|
|
28
|
+
export declare const applyPatchesToYDoc: (doc: Y.Doc, userId: string | number, patches: [patch: SpreadsheetPatch<Patch>, type?: HistoryType | undefined | null][], source?: "agent" | "user" | "backend", sheetDataVersion?: "v2" | "v3" | "v5", yjsRuntime?: YjsRuntime) => void;
|
|
28
29
|
/**
|
|
29
30
|
* Add sheet data to a yjs map using immer patches
|
|
30
31
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,KAAK,EAEX,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,gBAAgB,EACtB,MAAM,iCAAiC,CAAC;AAWzC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,KAAK,KAAK,CAAC,MAAM,KAAK,CAAC;AAO9B,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAEV,SAAS,EACT,UAAU,EACV,eAAe,EACf,UAAU,EACX,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../helpers.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/helpers.js
CHANGED
|
@@ -9,13 +9,15 @@ var set_1 = tslib_1.__importDefault(require("lodash/set"));
|
|
|
9
9
|
var get_1 = tslib_1.__importDefault(require("lodash/get"));
|
|
10
10
|
var unset_1 = tslib_1.__importDefault(require("lodash/unset"));
|
|
11
11
|
var yjs_runtime_1 = require("./yjs-runtime");
|
|
12
|
+
var helpers_v5_1 = require("./helpers-v5");
|
|
13
|
+
tslib_1.__exportStar(require("./helpers-v5"), exports);
|
|
12
14
|
/**
|
|
13
15
|
* Apply patches to yjs
|
|
14
16
|
* @param doc
|
|
15
17
|
* @param userId
|
|
16
18
|
* @param patches
|
|
17
19
|
* @param source
|
|
18
|
-
* @param sheetDataVersion - Version of sheet data format ("v2" or "
|
|
20
|
+
* @param sheetDataVersion - Version of sheet data format ("v2", "v3" or "v5"). Falls back to docMeta if undefined.
|
|
19
21
|
*/
|
|
20
22
|
var applyPatchesToYDoc = function (doc, userId, patches, source, sheetDataVersion, yjsRuntime) {
|
|
21
23
|
var e_1, _a;
|
|
@@ -40,6 +42,7 @@ var applyPatchesToYDoc = function (doc, userId, patches, source, sheetDataVersio
|
|
|
40
42
|
// Use param if provided, otherwise fall back to docMeta for backwards compatibility
|
|
41
43
|
var resolvedVersion = sheetDataVersion !== null && sheetDataVersion !== void 0 ? sheetDataVersion : yDocMeta.get("sheetDataVersion");
|
|
42
44
|
var isV3 = resolvedVersion === "v3";
|
|
45
|
+
var isV5 = resolvedVersion === "v5";
|
|
43
46
|
try {
|
|
44
47
|
for (var patches_1 = tslib_1.__values(patches), patches_1_1 = patches_1.next(); !patches_1_1.done; patches_1_1 = patches_1.next()) {
|
|
45
48
|
var _d = tslib_1.__read(patches_1_1.value, 2), patch = _d[0], _e = _d[1], type = _e === void 0 ? "redo" : _e;
|
|
@@ -47,7 +50,10 @@ var applyPatchesToYDoc = function (doc, userId, patches, source, sheetDataVersio
|
|
|
47
50
|
var patchKey = type === "redo" ? "patches" : "inversePatches";
|
|
48
51
|
if (patch.sheetData) {
|
|
49
52
|
var patches_2 = (_b = patch.sheetData) === null || _b === void 0 ? void 0 : _b[patchKey];
|
|
50
|
-
if (
|
|
53
|
+
if (isV5) {
|
|
54
|
+
(0, helpers_v5_1.addSheetDataPatchesV5)(doc, patches_2);
|
|
55
|
+
}
|
|
56
|
+
else if (isV3) {
|
|
51
57
|
(0, exports.addSheetDataPatchesV3)(ySheetDataV3, patches_2);
|
|
52
58
|
}
|
|
53
59
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../../helpers.ts","../../index.ts","../../observables.ts","../../types.ts","../../use-yspreadsheet-v2.ts","../../use-yspreadsheet.ts","../../vitest.config.ts","../../yjs-runtime.ts"],"version":"5.8.3"}
|
|
1
|
+
{"root":["../../helpers-v5.ts","../../helpers.ts","../../index.ts","../../observables.ts","../../types.ts","../../use-yspreadsheet-v2.ts","../../use-yspreadsheet.ts","../../vitest.config.ts","../../yjs-runtime.ts"],"version":"5.8.3"}
|
|
@@ -74,11 +74,13 @@ export type UseYSpreadsheetPropsV2<T extends CellData, S extends Sheet, C extend
|
|
|
74
74
|
*/
|
|
75
75
|
useV3?: boolean;
|
|
76
76
|
/**
|
|
77
|
-
* Current data version stored in the document ("v2" or "
|
|
77
|
+
* Current data version stored in the document ("v2", "v3" or "v5")
|
|
78
78
|
* If using V3 but version is "v2" or undefined, migration will occur
|
|
79
79
|
* This should be provided by the backend/server
|
|
80
|
+
* "v5" (also when `docMeta.sheetDataVersion` says so): stable line ids, read
|
|
81
|
+
* from and written to `rncCells` (hot plane only, see `helpers-v5.ts`)
|
|
80
82
|
*/
|
|
81
|
-
sheetDataVersion?: "v2" | "v3";
|
|
83
|
+
sheetDataVersion?: "v2" | "v3" | "v5";
|
|
82
84
|
/**
|
|
83
85
|
* Called after migration completes so backend can persist the new version
|
|
84
86
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-yspreadsheet-v2.d.ts","sourceRoot":"","sources":["../../use-yspreadsheet-v2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAEL,UAAU,EACV,KAAK,QAAQ,EAEb,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,KAAK,EACV,KAAK,SAAS,EACf,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACtB,MAAM,iCAAiC,CAAC;AASzC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAInC,OAAO,KAAK,KAAK,CAAC,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"use-yspreadsheet-v2.d.ts","sourceRoot":"","sources":["../../use-yspreadsheet-v2.ts"],"names":[],"mappings":"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"}
|
|
@@ -110,6 +110,18 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
110
110
|
var ySheetDataV3 = (0, react_1.useMemo)(function () { return doc.getMap("sheetDataV3"); }, [doc]);
|
|
111
111
|
// Doc metadata - used as fallback for version when prop is undefined
|
|
112
112
|
var yDocMeta = (0, react_1.useMemo)(function () { return doc.getMap("docMeta"); }, [doc]);
|
|
113
|
+
// V5: the engine marks the doc in `docMeta`; read live (the marker may arrive with a sync)
|
|
114
|
+
var isV5Doc = (0, react_1.useCallback)(function () {
|
|
115
|
+
return sheetDataVersion === "v5" || yDocMeta.get("sheetDataVersion") === "v5";
|
|
116
|
+
}, [sheetDataVersion, yDocMeta]);
|
|
117
|
+
// V5: the composed style plane, folded on a full read and on a remote style
|
|
118
|
+
// change, updated in place by this hook's own writes
|
|
119
|
+
var stylesV5Ref = (0, react_1.useRef)(null);
|
|
120
|
+
var stylesV5 = (0, react_1.useCallback)(function () { var _a; return ((_a = stylesV5Ref.current) !== null && _a !== void 0 ? _a : (stylesV5Ref.current = (0, helpers_1.readStyleOverlayV5)(doc))); }, [doc]);
|
|
121
|
+
var readSheetDataV5 = (0, react_1.useCallback)(function () {
|
|
122
|
+
stylesV5Ref.current = (0, helpers_1.readStyleOverlayV5)(doc);
|
|
123
|
+
return (0, helpers_1.sheetDataV5ToV2)(doc, stylesV5Ref.current);
|
|
124
|
+
}, [doc]);
|
|
113
125
|
var yDisableRecalc = (0, react_1.useMemo)(function () { return doc.getMap("disableRecalc"); }, [doc]);
|
|
114
126
|
// Recalc cells
|
|
115
127
|
var yRecalcCells = (0, react_1.useMemo)(function () { return doc.getArray("recalcCells"); }, [doc]);
|
|
@@ -261,6 +273,7 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
261
273
|
// Trigger cell recalcs
|
|
262
274
|
var syncRecalcCells = (0, react_1.useCallback)(function (recalcCells, origin) {
|
|
263
275
|
var e_2, _a;
|
|
276
|
+
var readV5 = isV5Doc() ? (0, helpers_1.createCellReaderV5)(doc, stylesV5()) : null;
|
|
264
277
|
try {
|
|
265
278
|
for (var recalcCells_1 = tslib_1.__values(recalcCells), recalcCells_1_1 = recalcCells_1.next(); !recalcCells_1_1.done; recalcCells_1_1 = recalcCells_1.next()) {
|
|
266
279
|
var _b = tslib_1.__read(recalcCells_1_1.value, 3), _1 = _b[0], position = _b[1], source = _b[2];
|
|
@@ -268,9 +281,11 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
268
281
|
var isAgent = source === "agent"; // Agent already does the calculation
|
|
269
282
|
// Read directly from Y.js to avoid race condition where recalcCells
|
|
270
283
|
// observer fires before sheetData observer has updated React state
|
|
271
|
-
var formulaValue =
|
|
272
|
-
?
|
|
273
|
-
:
|
|
284
|
+
var formulaValue = readV5
|
|
285
|
+
? (0, utils_1.getExtendedValueFormula)((0, utils_1.getCellUserEnteredValue)(readV5(position.sheetId, position.rowIndex, position.columnIndex)))
|
|
286
|
+
: useV3
|
|
287
|
+
? getUserEnteredValueFromYDocV3(ySheetDataV3, position.sheetId, position.rowIndex, position.columnIndex)
|
|
288
|
+
: getUserEnteredValueFromYDoc(ySheetDataV2, position.sheetId, position.rowIndex, position.columnIndex);
|
|
274
289
|
// Was this from a changeBatch event in the back-end?
|
|
275
290
|
// To support client functions to run only
|
|
276
291
|
var isChangeBatch = position.force && isAgent;
|
|
@@ -338,6 +353,9 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
338
353
|
ySheetDataV3,
|
|
339
354
|
useV3,
|
|
340
355
|
reevaluateDerivationsForCells,
|
|
356
|
+
isV5Doc,
|
|
357
|
+
doc,
|
|
358
|
+
stylesV5,
|
|
341
359
|
]);
|
|
342
360
|
// Setup initial sync
|
|
343
361
|
var setupInitialSync = (0, react_1.useCallback)(function () {
|
|
@@ -394,8 +412,12 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
394
412
|
}
|
|
395
413
|
finally { if (e_3) throw e_3.error; }
|
|
396
414
|
}
|
|
397
|
-
// Load sheet data based on V2 or
|
|
398
|
-
if (
|
|
415
|
+
// Load sheet data based on V2, V3 or V5 mode
|
|
416
|
+
if (isV5Doc()) {
|
|
417
|
+
// V5: hot plane keyed by line ids; never migrated to V3
|
|
418
|
+
onChangeSheetData === null || onChangeSheetData === void 0 ? void 0 : onChangeSheetData(readSheetDataV5());
|
|
419
|
+
}
|
|
420
|
+
else if (useV3) {
|
|
399
421
|
// Check if we need to migrate from V2 to V3
|
|
400
422
|
// Use prop if provided, otherwise fall back to yDocMeta for backwards compatibility
|
|
401
423
|
var resolvedVersion = sheetDataVersion !== null && sheetDataVersion !== void 0 ? sheetDataVersion : yDocMeta.get("sheetDataVersion");
|
|
@@ -474,6 +496,8 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
474
496
|
sheetDataVersion,
|
|
475
497
|
onMigrationComplete,
|
|
476
498
|
deleteV2AfterMigration,
|
|
499
|
+
isV5Doc,
|
|
500
|
+
readSheetDataV5,
|
|
477
501
|
]);
|
|
478
502
|
/**
|
|
479
503
|
* Replay the backend/agent recalc backlog into the local graph — and, on
|
|
@@ -616,6 +640,58 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
616
640
|
ySheetDataV3.unobserve(callback);
|
|
617
641
|
};
|
|
618
642
|
}, [onChangeSheetData, ySheetDataV3, useV3]);
|
|
643
|
+
// Only for sheet Data (V5 docs): `rncCells`, `rncNotes`, the style planes and
|
|
644
|
+
// every sheet's id arrays. A change of an id array, a style plane (or of
|
|
645
|
+
// `docMeta`): full re-read; a cell or note change alone is applied
|
|
646
|
+
// incrementally. Roots are matched by name in `doc.share`, so a root a peer
|
|
647
|
+
// created after this effect ran is seen too.
|
|
648
|
+
(0, ui_1.useIsomorphicLayoutEffect)(function () {
|
|
649
|
+
var callback = function (transaction) {
|
|
650
|
+
var e_6, _a;
|
|
651
|
+
if (transaction.origin === "local" || !isV5Doc())
|
|
652
|
+
return;
|
|
653
|
+
var full = false;
|
|
654
|
+
var cellKeys = [];
|
|
655
|
+
try {
|
|
656
|
+
for (var _b = tslib_1.__values(doc.share), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
657
|
+
var _d = tslib_1.__read(_c.value, 2), name_1 = _d[0], type = _d[1];
|
|
658
|
+
var changed = transaction.changed.get(type);
|
|
659
|
+
if (!changed)
|
|
660
|
+
continue;
|
|
661
|
+
if (name_1 === "rncCells" || name_1 === "rncNotes") {
|
|
662
|
+
changed.forEach(function (key) { return key !== null && cellKeys.push(key); });
|
|
663
|
+
}
|
|
664
|
+
else if (name_1 === "docMeta" ||
|
|
665
|
+
name_1 === "rncCellStylesLog" ||
|
|
666
|
+
name_1 === "rncCellStyles" ||
|
|
667
|
+
name_1.startsWith("rncRowIds:") ||
|
|
668
|
+
name_1.startsWith("rncColIds:")) {
|
|
669
|
+
full = true;
|
|
670
|
+
}
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
catch (e_6_1) { e_6 = { error: e_6_1 }; }
|
|
674
|
+
finally {
|
|
675
|
+
try {
|
|
676
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
677
|
+
}
|
|
678
|
+
finally { if (e_6) throw e_6.error; }
|
|
679
|
+
}
|
|
680
|
+
if (full) {
|
|
681
|
+
onChangeSheetData(readSheetDataV5());
|
|
682
|
+
}
|
|
683
|
+
else if (cellKeys.length) {
|
|
684
|
+
onChangeSheetData(function (prevSheetData) {
|
|
685
|
+
var _a;
|
|
686
|
+
return (_a = (0, helpers_1.processSheetDataChangesV5)(cellKeys, prevSheetData, doc, stylesV5())) !== null && _a !== void 0 ? _a : prevSheetData;
|
|
687
|
+
});
|
|
688
|
+
}
|
|
689
|
+
};
|
|
690
|
+
doc.on("afterTransaction", callback);
|
|
691
|
+
return function () {
|
|
692
|
+
doc.off("afterTransaction", callback);
|
|
693
|
+
};
|
|
694
|
+
}, [doc, onChangeSheetData, isV5Doc, readSheetDataV5, stylesV5]);
|
|
619
695
|
// CellXfs
|
|
620
696
|
(0, ui_1.useIsomorphicLayoutEffect)(function () {
|
|
621
697
|
// Subscribe to sheet data
|
|
@@ -633,16 +709,16 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
633
709
|
}, [onChangeCellXfs, yCellXfs]);
|
|
634
710
|
// All others
|
|
635
711
|
(0, ui_1.useIsomorphicLayoutEffect)(function () {
|
|
636
|
-
var
|
|
712
|
+
var e_7, _a;
|
|
637
713
|
var subs = [];
|
|
638
714
|
var _loop_1 = function (mappingKey, ydoc, callback) {
|
|
639
715
|
// Only observe Arrays (shared strings Map is handled separately if needed)
|
|
640
716
|
if (ydoc instanceof yjs.Array) {
|
|
641
717
|
var subscription = (0, observables_1.createDeepObservable)(ydoc).subscribe(function (events) {
|
|
642
|
-
var
|
|
718
|
+
var e_8, _a;
|
|
643
719
|
var _b;
|
|
644
720
|
try {
|
|
645
|
-
for (var events_1 = (
|
|
721
|
+
for (var events_1 = (e_8 = void 0, tslib_1.__values(events)), events_1_1 = events_1.next(); !events_1_1.done; events_1_1 = events_1.next()) {
|
|
646
722
|
var event_1 = events_1_1.value;
|
|
647
723
|
if (event_1.transaction.origin !== "local") {
|
|
648
724
|
var json = ydoc.toJSON();
|
|
@@ -655,12 +731,12 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
655
731
|
}
|
|
656
732
|
}
|
|
657
733
|
}
|
|
658
|
-
catch (
|
|
734
|
+
catch (e_8_1) { e_8 = { error: e_8_1 }; }
|
|
659
735
|
finally {
|
|
660
736
|
try {
|
|
661
737
|
if (events_1_1 && !events_1_1.done && (_a = events_1.return)) _a.call(events_1);
|
|
662
738
|
}
|
|
663
|
-
finally { if (
|
|
739
|
+
finally { if (e_8) throw e_8.error; }
|
|
664
740
|
}
|
|
665
741
|
});
|
|
666
742
|
subs.push(subscription);
|
|
@@ -686,12 +762,12 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
686
762
|
_loop_1(mappingKey, ydoc, callback);
|
|
687
763
|
}
|
|
688
764
|
}
|
|
689
|
-
catch (
|
|
765
|
+
catch (e_7_1) { e_7 = { error: e_7_1 }; }
|
|
690
766
|
finally {
|
|
691
767
|
try {
|
|
692
768
|
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
693
769
|
}
|
|
694
|
-
finally { if (
|
|
770
|
+
finally { if (e_7) throw e_7.error; }
|
|
695
771
|
}
|
|
696
772
|
return function () {
|
|
697
773
|
subs.forEach(function (sub) { return sub.unsubscribe(); });
|
|
@@ -721,7 +797,7 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
721
797
|
// Skip the first recalc cells change
|
|
722
798
|
var sub = (0, observables_1.createObservable)(yRecalcCells).subscribe(onRecalcCellsChange);
|
|
723
799
|
return function () {
|
|
724
|
-
var
|
|
800
|
+
var e_9, _a;
|
|
725
801
|
sub.unsubscribe();
|
|
726
802
|
try {
|
|
727
803
|
for (var pending_1 = tslib_1.__values(pending), pending_1_1 = pending_1.next(); !pending_1_1.done; pending_1_1 = pending_1.next()) {
|
|
@@ -729,18 +805,18 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
729
805
|
clearTimeout(timer);
|
|
730
806
|
}
|
|
731
807
|
}
|
|
732
|
-
catch (
|
|
808
|
+
catch (e_9_1) { e_9 = { error: e_9_1 }; }
|
|
733
809
|
finally {
|
|
734
810
|
try {
|
|
735
811
|
if (pending_1_1 && !pending_1_1.done && (_a = pending_1.return)) _a.call(pending_1);
|
|
736
812
|
}
|
|
737
|
-
finally { if (
|
|
813
|
+
finally { if (e_9) throw e_9.error; }
|
|
738
814
|
}
|
|
739
815
|
};
|
|
740
816
|
}, [syncRecalcCells, recalcCellsMaxEntries, synced, yRecalcCells]);
|
|
741
817
|
// Broadcast patch
|
|
742
818
|
var onBroadcastPatch = (0, react_1.useCallback)(function (patches) {
|
|
743
|
-
var
|
|
819
|
+
var e_10, _a, e_11, _b;
|
|
744
820
|
var _c;
|
|
745
821
|
// Ignore push flag
|
|
746
822
|
var disableRecalc = Boolean(patches.find(function (_a) {
|
|
@@ -776,12 +852,12 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
776
852
|
}
|
|
777
853
|
}
|
|
778
854
|
}
|
|
779
|
-
catch (
|
|
855
|
+
catch (e_10_1) { e_10 = { error: e_10_1 }; }
|
|
780
856
|
finally {
|
|
781
857
|
try {
|
|
782
858
|
if (patches_1_1 && !patches_1_1.done && (_a = patches_1.return)) _a.call(patches_1);
|
|
783
859
|
}
|
|
784
|
-
finally { if (
|
|
860
|
+
finally { if (e_10) throw e_10.error; }
|
|
785
861
|
}
|
|
786
862
|
// Containment for this non-leader write path: an error may only
|
|
787
863
|
// fill a cell with no effective value (the blank-after-reload case)
|
|
@@ -792,13 +868,19 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
792
868
|
// write merges ONLY the error effective value into the existing doc
|
|
793
869
|
// cell, preserving every other persisted field.
|
|
794
870
|
var persistableErrorCellPatches_1 = [];
|
|
871
|
+
var isV5_1 = isV5Doc();
|
|
872
|
+
var readV5 = isV5_1 && errorCellPatches.length
|
|
873
|
+
? (0, helpers_1.createCellReaderV5)(doc, stylesV5())
|
|
874
|
+
: null;
|
|
795
875
|
try {
|
|
796
876
|
for (var errorCellPatches_1 = tslib_1.__values(errorCellPatches), errorCellPatches_1_1 = errorCellPatches_1.next(); !errorCellPatches_1_1.done; errorCellPatches_1_1 = errorCellPatches_1.next()) {
|
|
797
877
|
var errorPatch = errorCellPatches_1_1.value;
|
|
798
878
|
var _f = tslib_1.__read(errorPatch.path, 4), patchSheetId = _f[0], rowIndex = _f[1], columnIndex = _f[3];
|
|
799
|
-
var currentCellData =
|
|
800
|
-
? (
|
|
801
|
-
:
|
|
879
|
+
var currentCellData = readV5
|
|
880
|
+
? readV5(Number(patchSheetId), Number(rowIndex), Number(columnIndex))
|
|
881
|
+
: useV3
|
|
882
|
+
? (_c = ySheetDataV3.get((0, helpers_1.createCellKeyV3)(Number(patchSheetId), Number(rowIndex), Number(columnIndex)))) === null || _c === void 0 ? void 0 : _c.value
|
|
883
|
+
: (0, helpers_1.getCellDataFromYSheetData)(ySheetDataV2, patchSheetId, Number(rowIndex), Number(columnIndex));
|
|
802
884
|
var incomingCellData = errorPatch.value;
|
|
803
885
|
if (!(0, helpers_1.shouldPersistErrorCellPatch)(currentCellData, incomingCellData)) {
|
|
804
886
|
continue;
|
|
@@ -806,16 +888,19 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
806
888
|
persistableErrorCellPatches_1.push(tslib_1.__assign(tslib_1.__assign({}, errorPatch), { value: (0, helpers_1.mergeErrorEffectiveValueIntoCellData)(currentCellData, incomingCellData) }));
|
|
807
889
|
}
|
|
808
890
|
}
|
|
809
|
-
catch (
|
|
891
|
+
catch (e_11_1) { e_11 = { error: e_11_1 }; }
|
|
810
892
|
finally {
|
|
811
893
|
try {
|
|
812
894
|
if (errorCellPatches_1_1 && !errorCellPatches_1_1.done && (_b = errorCellPatches_1.return)) _b.call(errorCellPatches_1);
|
|
813
895
|
}
|
|
814
|
-
finally { if (
|
|
896
|
+
finally { if (e_11) throw e_11.error; }
|
|
815
897
|
}
|
|
816
898
|
if (persistableErrorCellPatches_1.length) {
|
|
817
899
|
doc.transact(function () {
|
|
818
|
-
if (
|
|
900
|
+
if (isV5_1) {
|
|
901
|
+
(0, helpers_1.addSheetDataPatchesV5)(doc, persistableErrorCellPatches_1, origin, stylesV5());
|
|
902
|
+
}
|
|
903
|
+
else if (useV3) {
|
|
819
904
|
(0, helpers_1.addSheetDataPatchesV3)(ySheetDataV3, persistableErrorCellPatches_1);
|
|
820
905
|
}
|
|
821
906
|
else {
|
|
@@ -825,8 +910,9 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
825
910
|
}
|
|
826
911
|
return;
|
|
827
912
|
}
|
|
913
|
+
var isV5 = isV5Doc();
|
|
828
914
|
doc.transact(function () {
|
|
829
|
-
var
|
|
915
|
+
var e_12, _a, e_13, _b;
|
|
830
916
|
var _c, _d, _e, _f;
|
|
831
917
|
try {
|
|
832
918
|
for (var patches_2 = tslib_1.__values(patches), patches_2_1 = patches_2.next(); !patches_2_1.done; patches_2_1 = patches_2.next()) {
|
|
@@ -841,7 +927,10 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
841
927
|
var patchKey = type === "redo" ? "patches" : "inversePatches";
|
|
842
928
|
if (patch.sheetData) {
|
|
843
929
|
var patches_3 = (_c = patch.sheetData) === null || _c === void 0 ? void 0 : _c[patchKey];
|
|
844
|
-
if (
|
|
930
|
+
if (isV5) {
|
|
931
|
+
(0, helpers_1.addSheetDataPatchesV5)(doc, patches_3, origin, stylesV5());
|
|
932
|
+
}
|
|
933
|
+
else if (useV3) {
|
|
845
934
|
(0, helpers_1.addSheetDataPatchesV3)(ySheetDataV3, patches_3);
|
|
846
935
|
}
|
|
847
936
|
else {
|
|
@@ -853,7 +942,7 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
853
942
|
(0, helpers_1.applyMapPatches)(yCellXfs, patches_4);
|
|
854
943
|
}
|
|
855
944
|
try {
|
|
856
|
-
for (var _j = (
|
|
945
|
+
for (var _j = (e_13 = void 0, tslib_1.__values(documentMap.entries())), _k = _j.next(); !_k.done; _k = _j.next()) {
|
|
857
946
|
var _l = tslib_1.__read(_k.value, 2), mappingKey = _l[0], _m = tslib_1.__read(_l[1], 1), ydoc = _m[0];
|
|
858
947
|
if (patch === null || patch === void 0 ? void 0 : patch[mappingKey]) {
|
|
859
948
|
var patches_5 = (_e = patch[mappingKey]) === null || _e === void 0 ? void 0 : _e[patchKey];
|
|
@@ -872,12 +961,12 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
872
961
|
}
|
|
873
962
|
}
|
|
874
963
|
}
|
|
875
|
-
catch (
|
|
964
|
+
catch (e_13_1) { e_13 = { error: e_13_1 }; }
|
|
876
965
|
finally {
|
|
877
966
|
try {
|
|
878
967
|
if (_k && !_k.done && (_b = _j.return)) _b.call(_j);
|
|
879
968
|
}
|
|
880
|
-
finally { if (
|
|
969
|
+
finally { if (e_13) throw e_13.error; }
|
|
881
970
|
}
|
|
882
971
|
// Recalc cells
|
|
883
972
|
if ((_f = patch.recalcCells) === null || _f === void 0 ? void 0 : _f[type]) {
|
|
@@ -894,12 +983,12 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
894
983
|
}
|
|
895
984
|
}
|
|
896
985
|
}
|
|
897
|
-
catch (
|
|
986
|
+
catch (e_12_1) { e_12 = { error: e_12_1 }; }
|
|
898
987
|
finally {
|
|
899
988
|
try {
|
|
900
989
|
if (patches_2_1 && !patches_2_1.done && (_a = patches_2.return)) _a.call(patches_2);
|
|
901
990
|
}
|
|
902
|
-
finally { if (
|
|
991
|
+
finally { if (e_12) throw e_12.error; }
|
|
903
992
|
}
|
|
904
993
|
}, origin);
|
|
905
994
|
onAfterBroadcastPatch === null || onAfterBroadcastPatch === void 0 ? void 0 : onAfterBroadcastPatch(patches, doc);
|
|
@@ -916,6 +1005,8 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
916
1005
|
isLeader,
|
|
917
1006
|
recalcCellsMaxEntries,
|
|
918
1007
|
useV3,
|
|
1008
|
+
isV5Doc,
|
|
1009
|
+
stylesV5,
|
|
919
1010
|
]);
|
|
920
1011
|
// Listen to active cell change
|
|
921
1012
|
(0, ui_1.useIsomorphicLayoutEffect)(function () {
|
|
@@ -936,7 +1027,7 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
936
1027
|
// Awareness
|
|
937
1028
|
(0, ui_1.useIsomorphicLayoutEffect)(function () {
|
|
938
1029
|
var onChangeAwareness = function () {
|
|
939
|
-
var
|
|
1030
|
+
var e_14, _a;
|
|
940
1031
|
var _b, _c, _d, _e, _f;
|
|
941
1032
|
if (awareness) {
|
|
942
1033
|
var collaborators = [];
|
|
@@ -976,12 +1067,12 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
976
1067
|
});
|
|
977
1068
|
}
|
|
978
1069
|
}
|
|
979
|
-
catch (
|
|
1070
|
+
catch (e_14_1) { e_14 = { error: e_14_1 }; }
|
|
980
1071
|
finally {
|
|
981
1072
|
try {
|
|
982
1073
|
if (_h && !_h.done && (_a = _g.return)) _a.call(_g);
|
|
983
1074
|
}
|
|
984
|
-
finally { if (
|
|
1075
|
+
finally { if (e_14) throw e_14.error; }
|
|
985
1076
|
}
|
|
986
1077
|
setUsers(collaborators);
|
|
987
1078
|
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { CellData, CellFormat } from "@rowsncolumns/spreadsheet";
|
|
2
|
+
import type { SheetData } from "@rowsncolumns/spreadsheet-state";
|
|
3
|
+
import type { Patch } from "immer";
|
|
4
|
+
import type * as Y from "yjs";
|
|
5
|
+
/** A parsed v5 cell key; line ids as decimal strings (an id can exceed 2^53). */
|
|
6
|
+
export type ParsedCellKeyV5 = {
|
|
7
|
+
sheetId: number;
|
|
8
|
+
rowId: string;
|
|
9
|
+
colId: string;
|
|
10
|
+
};
|
|
11
|
+
/** The composed style plane: cell key → format (`StyleOverlay`). */
|
|
12
|
+
export type StyleOverlayV5 = Map<string, CellFormat>;
|
|
13
|
+
/**
|
|
14
|
+
* A sheet's line ids in grid order (position = index + 1), as decimal strings.
|
|
15
|
+
* Later duplicates and non-id values are skipped, as the engine's index does.
|
|
16
|
+
*/
|
|
17
|
+
export declare const readLineIds: (doc: Y.Doc, sheetId: number, axis: "row" | "column") => string[];
|
|
18
|
+
/** The `rncCells` / `rncNotes` key of a cell by its line ids. */
|
|
19
|
+
export declare const createCellKeyV5: (sheetId: number, rowId: string, colId: string) => string;
|
|
20
|
+
/** Parse a v5 key `"{sheetId}:{rowId}:{colId}"`; null when malformed. */
|
|
21
|
+
export declare const parseCellKeyV5: (key: string) => ParsedCellKeyV5 | null;
|
|
22
|
+
/**
|
|
23
|
+
* The composed style plane of a v5 doc (`refold_style_overlay`): the legacy
|
|
24
|
+
* `rncCellStyles` seed (`"{sheetId}!{A1}"`, the client-0 ids of that position)
|
|
25
|
+
* with every `rncCellStylesLog` buffer folded on in array order. Walks the log.
|
|
26
|
+
*/
|
|
27
|
+
export declare const readStyleOverlayV5: (doc: Y.Doc) => StyleOverlayV5;
|
|
28
|
+
/**
|
|
29
|
+
* A v5 doc as V2 `SheetData` (same shape as `sheetDataV3ToV2`), hot plane only:
|
|
30
|
+
* every key of `rncCells`, `rncNotes` and the composed style plane composed as
|
|
31
|
+
* `composeCell` does (tombstones and orphans skipped).
|
|
32
|
+
*/
|
|
33
|
+
export declare const sheetDataV5ToV2: <T extends CellData>(doc: Y.Doc, styles?: ReadonlyMap<string, CellFormat>) => SheetData<T>;
|
|
34
|
+
/**
|
|
35
|
+
* A reader of the cell at a 1-based position (`composeCell`), line ids read once
|
|
36
|
+
* per sheet. Undefined when nothing is there or the line is unnamed.
|
|
37
|
+
*/
|
|
38
|
+
export declare const createCellReaderV5: <T extends CellData = CellData>(doc: Y.Doc, styles?: ReadonlyMap<string, CellFormat>) => (sheetId: number, rowIndex: number, columnIndex: number) => T | undefined;
|
|
39
|
+
/** `createCellReaderV5` for one cell (reads both id arrays: O(lines)). */
|
|
40
|
+
export declare const getCellV5: <T extends CellData = CellData>(doc: Y.Doc, sheetId: number, rowIndex: number, columnIndex: number, styles?: ReadonlyMap<string, CellFormat>) => T | undefined;
|
|
41
|
+
/**
|
|
42
|
+
* Apply changed `rncCells` / `rncNotes` keys to `currentSheetData` (copy-on-write,
|
|
43
|
+
* like `processSheetDataEventsV3`), `uf` from `styles`. Only valid while no id
|
|
44
|
+
* array and no style changed (those need `sheetDataV5ToV2`). Null when nothing changed.
|
|
45
|
+
*/
|
|
46
|
+
export declare const processSheetDataChangesV5: <T extends CellData>(changedKeys: Iterable<string>, currentSheetData: SheetData<T>, doc: Y.Doc, styles?: ReadonlyMap<string, CellFormat>) => SheetData<T> | null;
|
|
47
|
+
/**
|
|
48
|
+
* Apply immer `SheetData` patches to a v5 doc in one transaction (`origin`, the
|
|
49
|
+
* caller's; nested in an open transaction it joins that one). Positional, like
|
|
50
|
+
* the v3 path: a row insert/delete arrives as rewritten rows and is applied as
|
|
51
|
+
* cell writes/removals at each position's line ids; no line is inserted or
|
|
52
|
+
* deleted. Writes past an axis name lines (client-0 padding, `ensure_lines`).
|
|
53
|
+
* `uf` changes append ONE `STYLE_LOG_V2` buffer to `rncCellStylesLog` and stay
|
|
54
|
+
* inline on the cell. `styles`, when given, is the caller's composed style plane
|
|
55
|
+
* (`readStyleOverlayV5`), used instead of folding the log and updated in place.
|
|
56
|
+
*/
|
|
57
|
+
export declare const addSheetDataPatchesV5: (doc: Y.Doc, patches: Patch[] | undefined, origin?: unknown, styles?: StyleOverlayV5) => void;
|
|
58
|
+
/** Set one cell of a v5 doc (see `addSheetDataPatchesV5`). */
|
|
59
|
+
export declare const setCellV5: (doc: Y.Doc, sheetId: number, rowIndex: number, columnIndex: number, value: CellData) => void;
|
|
60
|
+
/** Remove one cell of a v5 doc (see `addSheetDataPatchesV5`). */
|
|
61
|
+
export declare const deleteCellV5: (doc: Y.Doc, sheetId: number, rowIndex: number, columnIndex: number) => void;
|
|
62
|
+
/** Remove every cell of a sheet of a v5 doc; its line ids and dimensions stay. */
|
|
63
|
+
export declare const deleteSheetV5: (doc: Y.Doc, sheetId: number) => void;
|
|
64
|
+
//# sourceMappingURL=helpers-v5.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers-v5.d.ts","sourceRoot":"","sources":["../../helpers-v5.ts"],"names":[],"mappings":"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"}
|