@rowsncolumns/y-spreadsheet 15.0.2 → 15.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/dist/cjs/helpers.d.ts +5 -5
- package/dist/cjs/helpers.d.ts.map +1 -1
- package/dist/cjs/helpers.js +21 -17
- package/dist/cjs/types.d.ts +36 -0
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/use-yspreadsheet-v2.d.ts +21 -3
- package/dist/cjs/use-yspreadsheet-v2.d.ts.map +1 -1
- package/dist/cjs/use-yspreadsheet-v2.js +125 -63
- package/dist/cjs/use-yspreadsheet.d.ts +6 -4
- package/dist/cjs/use-yspreadsheet.d.ts.map +1 -1
- package/dist/cjs/use-yspreadsheet.js +17 -15
- package/dist/esm/helpers.d.ts +5 -5
- package/dist/esm/helpers.d.ts.map +1 -1
- package/dist/esm/helpers.js +17 -17
- package/dist/esm/types.d.ts +36 -0
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/use-yspreadsheet-v2.d.ts +21 -3
- package/dist/esm/use-yspreadsheet-v2.d.ts.map +1 -1
- package/dist/esm/use-yspreadsheet-v2.js +84 -38
- package/dist/esm/use-yspreadsheet.d.ts +6 -4
- package/dist/esm/use-yspreadsheet.d.ts.map +1 -1
- package/dist/esm/use-yspreadsheet.js +13 -13
- package/package.json +1 -2
|
@@ -12,9 +12,9 @@ var helpers_1 = require("./helpers");
|
|
|
12
12
|
/**
|
|
13
13
|
* Convert Y.js events to SheetDataEvent format for incremental processing
|
|
14
14
|
*/
|
|
15
|
-
var convertToSheetDataEvents = function (events) {
|
|
15
|
+
var convertToSheetDataEvents = function (events, yjs) {
|
|
16
16
|
return events.map(function (event) {
|
|
17
|
-
var isYArrayEvent = event instanceof
|
|
17
|
+
var isYArrayEvent = event instanceof yjs.YArrayEvent;
|
|
18
18
|
return {
|
|
19
19
|
path: event.path,
|
|
20
20
|
delta: isYArrayEvent
|
|
@@ -57,10 +57,10 @@ var observables_1 = require("./observables");
|
|
|
57
57
|
// Add a single null entry to the YSheetData
|
|
58
58
|
var origin = "local";
|
|
59
59
|
var useYSpreadsheetV2 = function (_a) {
|
|
60
|
-
var onChangeSheetData = _a.onChangeSheetData, onChangeSheets = _a.onChangeSheets, onChangeTables = _a.onChangeTables, onChangeCharts = _a.onChangeCharts, onChangeEmbeds = _a.onChangeEmbeds, onChangeConditionalFormats = _a.onChangeConditionalFormats, onChangeDataValidations = _a.onChangeDataValidations, onChangeCitations = _a.onChangeCitations, onAfterBroadcastPatch = _a.onAfterBroadcastPatch, recalcCellsMaxEntries = _a.recalcCellsMaxEntries, onChangeNamedRanges = _a.onChangeNamedRanges, onChangeProtectedRanges = _a.onChangeProtectedRanges, onChangePivotTables = _a.onChangePivotTables, enqueueCalculation = _a.enqueueCalculation, enqueueGraphOperation = _a.enqueueGraphOperation, reevaluateDerivationsForCells = _a.reevaluateDerivationsForCells, onChangeCellXfs = _a.onChangeCellXfs, onChangeSharedStrings = _a.onChangeSharedStrings, calculateNow = _a.calculateNow, onChangeActiveSheet = _a.onChangeActiveSheet, clientOnlyFunctionPattern = _a.clientOnlyFunctionPattern, initialSheets = _a.initialSheets, awarenessScopeId = _a.awarenessScopeId, userId = _a.userId, title = _a.title, sheetId = _a.sheetId, activeCell = _a.activeCell, kind = _a.kind, agentInitiator = _a.agentInitiator, selections = _a.selections, doc = _a.doc, provider = _a.provider,
|
|
61
|
-
var
|
|
62
|
-
var
|
|
63
|
-
var
|
|
60
|
+
var onChangeSheetData = _a.onChangeSheetData, onChangeSheets = _a.onChangeSheets, onChangeTables = _a.onChangeTables, onChangeCharts = _a.onChangeCharts, onChangeEmbeds = _a.onChangeEmbeds, onChangeConditionalFormats = _a.onChangeConditionalFormats, onChangeDataValidations = _a.onChangeDataValidations, onChangeCitations = _a.onChangeCitations, onAfterBroadcastPatch = _a.onAfterBroadcastPatch, recalcCellsMaxEntries = _a.recalcCellsMaxEntries, onChangeNamedRanges = _a.onChangeNamedRanges, onChangeProtectedRanges = _a.onChangeProtectedRanges, onChangePivotTables = _a.onChangePivotTables, enqueueCalculation = _a.enqueueCalculation, enqueueGraphOperation = _a.enqueueGraphOperation, reevaluateDerivationsForCells = _a.reevaluateDerivationsForCells, onChangeCellXfs = _a.onChangeCellXfs, onChangeSharedStrings = _a.onChangeSharedStrings, calculateNow = _a.calculateNow, onChangeActiveSheet = _a.onChangeActiveSheet, clientOnlyFunctionPattern = _a.clientOnlyFunctionPattern, initialSheets = _a.initialSheets, awarenessScopeId = _a.awarenessScopeId, _b = _a.canWrite, canWrite = _b === void 0 ? true : _b, userId = _a.userId, title = _a.title, sheetId = _a.sheetId, activeCell = _a.activeCell, kind = _a.kind, agentInitiator = _a.agentInitiator, selections = _a.selections, doc = _a.doc, provider = _a.provider, _c = _a.yjs, yjs = _c === void 0 ? Y : _c, _d = _a.useV3, useV3 = _d === void 0 ? false : _d, _e = _a.sheetDataVersion, sheetDataVersion = _e === void 0 ? "v2" : _e, onMigrationComplete = _a.onMigrationComplete, _f = _a.deleteV2AfterMigration, deleteV2AfterMigration = _f === void 0 ? false : _f, _g = _a.skipInitialSync, skipInitialSync = _g === void 0 ? false : _g, _h = _a.supportLegacySharedStringsArray, supportLegacySharedStringsArray = _h === void 0 ? false : _h;
|
|
61
|
+
var _j = tslib_1.__read((0, react_1.useState)(false), 2), synced = _j[0], setSynced = _j[1];
|
|
62
|
+
var _k = tslib_1.__read((0, react_1.useState)([]), 2), users = _k[0], setUsers = _k[1];
|
|
63
|
+
var _l = tslib_1.__read((0, react_1.useState)(false), 2), isLeader = _l[0], setIsLeader = _l[1];
|
|
64
64
|
var isLeaderRef = (0, react_1.useRef)(false);
|
|
65
65
|
var resolvedAwarenessScopeId = awarenessScopeId;
|
|
66
66
|
// Listen to awareness
|
|
@@ -76,22 +76,30 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
76
76
|
return (state === null || state === void 0 ? void 0 : state.docGuid) === resolvedAwarenessScopeId;
|
|
77
77
|
})
|
|
78
78
|
: entries;
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
79
|
+
// Only peers that can persist may lead (see `canWrite`). A view-only
|
|
80
|
+
// client's recalc write-backs are refused by the server, so electing it
|
|
81
|
+
// silently drops every computed value. A missing field is a writer.
|
|
82
|
+
var writers = docStates
|
|
83
|
+
.filter(function (_a) {
|
|
84
|
+
var _b = tslib_1.__read(_a, 2), _ = _b[0], state = _b[1];
|
|
85
|
+
return (state === null || state === void 0 ? void 0 : state.canWrite) !== false;
|
|
86
|
+
})
|
|
87
|
+
.map(function (_a) {
|
|
84
88
|
var _b = tslib_1.__read(_a, 1), clientId = _b[0];
|
|
85
89
|
return clientId;
|
|
86
90
|
});
|
|
87
|
-
|
|
91
|
+
if (!canWrite || !writers.length) {
|
|
92
|
+
setIsLeader(false);
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
var minId = Math.min.apply(Math, tslib_1.__spreadArray([], tslib_1.__read(writers), false));
|
|
88
96
|
// Always include self in the elec
|
|
89
97
|
setIsLeader(doc.clientID === minId);
|
|
90
98
|
};
|
|
91
99
|
awareness.on("change", updateLeader);
|
|
92
100
|
updateLeader(); // Initial check
|
|
93
101
|
return function () { return awareness.off("change", updateLeader); };
|
|
94
|
-
}, [awareness, doc, resolvedAwarenessScopeId]);
|
|
102
|
+
}, [awareness, doc, resolvedAwarenessScopeId, canWrite]);
|
|
95
103
|
(0, ui_1.useIsomorphicLayoutEffect)(function () {
|
|
96
104
|
isLeaderRef.current = isLeader;
|
|
97
105
|
}, [isLeader]);
|
|
@@ -243,6 +251,12 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
243
251
|
return source === "backend" || source === "agent";
|
|
244
252
|
});
|
|
245
253
|
}, [yRecalcCells]);
|
|
254
|
+
/**
|
|
255
|
+
* Set once the initial sync has built the dependency graph and replayed the
|
|
256
|
+
* backlog, so a later leadership hand-over can replay it again.
|
|
257
|
+
*/
|
|
258
|
+
var graphReadyRef = (0, react_1.useRef)(false);
|
|
259
|
+
var initialSyncTimerRef = (0, react_1.useRef)(null);
|
|
246
260
|
// Trigger cell recalcs
|
|
247
261
|
var syncRecalcCells = (0, react_1.useCallback)(function (recalcCells, origin) {
|
|
248
262
|
var e_2, _a;
|
|
@@ -460,6 +474,24 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
460
474
|
onMigrationComplete,
|
|
461
475
|
deleteV2AfterMigration,
|
|
462
476
|
]);
|
|
477
|
+
/**
|
|
478
|
+
* Replay the backend/agent recalc backlog into the local graph — and, on
|
|
479
|
+
* the leader, evaluate it. Only the leader clears the entries, and only once
|
|
480
|
+
* they sit in its calculation queue: a non-leader merely graph-enqueues
|
|
481
|
+
* (no evaluation), so if it deleted them the leader would never recompute
|
|
482
|
+
* the backlog at all.
|
|
483
|
+
*/
|
|
484
|
+
var drainBacklog = (0, react_1.useCallback)(function () {
|
|
485
|
+
var backlog = getBacklog();
|
|
486
|
+
if (!backlog.length)
|
|
487
|
+
return;
|
|
488
|
+
syncRecalcCells(backlog, "backend");
|
|
489
|
+
if (isLeaderRef.current) {
|
|
490
|
+
doc.transact(function () {
|
|
491
|
+
yRecalcCells.delete(0, yRecalcCells.length);
|
|
492
|
+
}, origin);
|
|
493
|
+
}
|
|
494
|
+
}, [getBacklog, syncRecalcCells, doc, yRecalcCells]);
|
|
463
495
|
// Synced
|
|
464
496
|
var onSynced = (0, react_1.useCallback)(function () {
|
|
465
497
|
if (!synced) {
|
|
@@ -469,42 +501,48 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
469
501
|
(0, react_dom_1.flushSync)(function () {
|
|
470
502
|
setupInitialSync();
|
|
471
503
|
});
|
|
472
|
-
// Build dependency graph, then sync backlog cells
|
|
473
|
-
|
|
474
|
-
|
|
504
|
+
// Build dependency graph, then sync backlog cells. Deferred through a
|
|
505
|
+
// timer, not `requestAnimationFrame`: rAF is paused in background tabs,
|
|
506
|
+
// which left a backgrounded leader's backlog unevaluated indefinitely.
|
|
507
|
+
initialSyncTimerRef.current = setTimeout(function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
475
508
|
return tslib_1.__generator(this, function (_a) {
|
|
476
509
|
switch (_a.label) {
|
|
477
|
-
case 0:
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
510
|
+
case 0:
|
|
511
|
+
initialSyncTimerRef.current = null;
|
|
512
|
+
return [4 /*yield*/, calculateNow({
|
|
513
|
+
disableEvaluation: true,
|
|
514
|
+
shouldResetCellDependencyGraph: true,
|
|
515
|
+
})];
|
|
481
516
|
case 1:
|
|
482
517
|
_a.sent();
|
|
483
|
-
backlog
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
// Clear processed backlog entries from yRecalcCells
|
|
487
|
-
doc.transact(function () {
|
|
488
|
-
yRecalcCells.delete(0, yRecalcCells.length);
|
|
489
|
-
}, origin);
|
|
490
|
-
}
|
|
518
|
+
// Sync backlog after graph is initialized
|
|
519
|
+
drainBacklog();
|
|
520
|
+
graphReadyRef.current = true;
|
|
491
521
|
return [2 /*return*/];
|
|
492
522
|
}
|
|
493
523
|
});
|
|
494
|
-
}); });
|
|
524
|
+
}); }, 0);
|
|
495
525
|
}
|
|
496
526
|
setSynced(true);
|
|
497
527
|
}
|
|
498
|
-
}, [
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
]);
|
|
528
|
+
}, [calculateNow, setupInitialSync, synced, drainBacklog, skipInitialSync]);
|
|
529
|
+
// A client that becomes leader after its initial sync (the previous leader
|
|
530
|
+
// left, or the election settled late) takes over whatever backlog is still
|
|
531
|
+
// in the document: as a non-leader it only mirrored those cells into its
|
|
532
|
+
// graph, so it evaluates them now — and only now clears them.
|
|
533
|
+
(0, ui_1.useIsomorphicLayoutEffect)(function () {
|
|
534
|
+
if (!isLeader || !synced || !graphReadyRef.current)
|
|
535
|
+
return;
|
|
536
|
+
drainBacklog();
|
|
537
|
+
}, [isLeader, synced, drainBacklog]);
|
|
538
|
+
(0, ui_1.useIsomorphicLayoutEffect)(function () {
|
|
539
|
+
return function () {
|
|
540
|
+
if (initialSyncTimerRef.current !== null) {
|
|
541
|
+
clearTimeout(initialSyncTimerRef.current);
|
|
542
|
+
initialSyncTimerRef.current = null;
|
|
543
|
+
}
|
|
544
|
+
};
|
|
545
|
+
}, []);
|
|
508
546
|
// Sync state
|
|
509
547
|
if ((provider === null || provider === void 0 ? void 0 : provider.synced) && !synced) {
|
|
510
548
|
onSynced();
|
|
@@ -533,7 +571,7 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
533
571
|
var origin_1 = (_b = (_a = events === null || events === void 0 ? void 0 : events[0]) === null || _a === void 0 ? void 0 : _a.transaction) === null || _b === void 0 ? void 0 : _b.origin;
|
|
534
572
|
if (origin_1 !== "local") {
|
|
535
573
|
// Convert Y.js events to SheetDataEvent format and apply incremental updates
|
|
536
|
-
var sheetDataEvents_1 = convertToSheetDataEvents(events);
|
|
574
|
+
var sheetDataEvents_1 = convertToSheetDataEvents(events, yjs);
|
|
537
575
|
onChangeSheetData(function (prevSheetData) {
|
|
538
576
|
var result = (0, helpers_1.processSheetDataEvents)(sheetDataEvents_1, prevSheetData, ySheetDataV2);
|
|
539
577
|
// Fall back to full serialization only if incremental update fails
|
|
@@ -598,7 +636,7 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
598
636
|
var subs = [];
|
|
599
637
|
var _loop_1 = function (mappingKey, ydoc, callback) {
|
|
600
638
|
// Only observe Arrays (shared strings Map is handled separately if needed)
|
|
601
|
-
if (ydoc instanceof
|
|
639
|
+
if (ydoc instanceof yjs.Array) {
|
|
602
640
|
var subscription = (0, observables_1.createDeepObservable)(ydoc).subscribe(function (events) {
|
|
603
641
|
var e_7, _a;
|
|
604
642
|
var _b;
|
|
@@ -626,7 +664,7 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
626
664
|
});
|
|
627
665
|
subs.push(subscription);
|
|
628
666
|
}
|
|
629
|
-
else if (ydoc instanceof
|
|
667
|
+
else if (ydoc instanceof yjs.Map && mappingKey === "sharedStrings") {
|
|
630
668
|
// Handle shared strings Map observation
|
|
631
669
|
var callback_map_1 = function (event) {
|
|
632
670
|
if (event.transaction.origin !== "local") {
|
|
@@ -663,24 +701,45 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
663
701
|
if (!synced) {
|
|
664
702
|
return;
|
|
665
703
|
}
|
|
704
|
+
var pending = new Set();
|
|
666
705
|
// Sync all cells that are updated in the backend
|
|
667
706
|
// // Observe recalc cells separat
|
|
668
707
|
var onRecalcCellsChange = function (event) {
|
|
669
708
|
var patches = (0, observables_1.getPatchDeltasFromEvent)(event);
|
|
670
709
|
var origin = event.transaction.origin;
|
|
671
710
|
if (origin !== "local") {
|
|
672
|
-
requestAnimationFrame
|
|
711
|
+
// A timer, not `requestAnimationFrame`: rAF is paused in background
|
|
712
|
+
// tabs, so a backgrounded leader would stop evaluating remote patches.
|
|
713
|
+
var timer_1 = setTimeout(function () {
|
|
714
|
+
pending.delete(timer_1);
|
|
673
715
|
syncRecalcCells(patches, origin);
|
|
674
|
-
});
|
|
716
|
+
}, 0);
|
|
717
|
+
pending.add(timer_1);
|
|
675
718
|
}
|
|
676
719
|
};
|
|
677
720
|
// Skip the first recalc cells change
|
|
678
721
|
var sub = (0, observables_1.createObservable)(yRecalcCells).subscribe(onRecalcCellsChange);
|
|
679
|
-
return function () {
|
|
722
|
+
return function () {
|
|
723
|
+
var e_8, _a;
|
|
724
|
+
sub.unsubscribe();
|
|
725
|
+
try {
|
|
726
|
+
for (var pending_1 = tslib_1.__values(pending), pending_1_1 = pending_1.next(); !pending_1_1.done; pending_1_1 = pending_1.next()) {
|
|
727
|
+
var timer = pending_1_1.value;
|
|
728
|
+
clearTimeout(timer);
|
|
729
|
+
}
|
|
730
|
+
}
|
|
731
|
+
catch (e_8_1) { e_8 = { error: e_8_1 }; }
|
|
732
|
+
finally {
|
|
733
|
+
try {
|
|
734
|
+
if (pending_1_1 && !pending_1_1.done && (_a = pending_1.return)) _a.call(pending_1);
|
|
735
|
+
}
|
|
736
|
+
finally { if (e_8) throw e_8.error; }
|
|
737
|
+
}
|
|
738
|
+
};
|
|
680
739
|
}, [syncRecalcCells, recalcCellsMaxEntries, synced, yRecalcCells]);
|
|
681
740
|
// Broadcast patch
|
|
682
741
|
var onBroadcastPatch = (0, react_1.useCallback)(function (patches) {
|
|
683
|
-
var
|
|
742
|
+
var e_9, _a, e_10, _b;
|
|
684
743
|
var _c;
|
|
685
744
|
// Ignore push flag
|
|
686
745
|
var disableRecalc = Boolean(patches.find(function (_a) {
|
|
@@ -716,12 +775,12 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
716
775
|
}
|
|
717
776
|
}
|
|
718
777
|
}
|
|
719
|
-
catch (
|
|
778
|
+
catch (e_9_1) { e_9 = { error: e_9_1 }; }
|
|
720
779
|
finally {
|
|
721
780
|
try {
|
|
722
781
|
if (patches_1_1 && !patches_1_1.done && (_a = patches_1.return)) _a.call(patches_1);
|
|
723
782
|
}
|
|
724
|
-
finally { if (
|
|
783
|
+
finally { if (e_9) throw e_9.error; }
|
|
725
784
|
}
|
|
726
785
|
// Containment for this non-leader write path: an error may only
|
|
727
786
|
// fill a cell with no effective value (the blank-after-reload case)
|
|
@@ -746,12 +805,12 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
746
805
|
persistableErrorCellPatches_1.push(tslib_1.__assign(tslib_1.__assign({}, errorPatch), { value: (0, helpers_1.mergeErrorEffectiveValueIntoCellData)(currentCellData, incomingCellData) }));
|
|
747
806
|
}
|
|
748
807
|
}
|
|
749
|
-
catch (
|
|
808
|
+
catch (e_10_1) { e_10 = { error: e_10_1 }; }
|
|
750
809
|
finally {
|
|
751
810
|
try {
|
|
752
811
|
if (errorCellPatches_1_1 && !errorCellPatches_1_1.done && (_b = errorCellPatches_1.return)) _b.call(errorCellPatches_1);
|
|
753
812
|
}
|
|
754
|
-
finally { if (
|
|
813
|
+
finally { if (e_10) throw e_10.error; }
|
|
755
814
|
}
|
|
756
815
|
if (persistableErrorCellPatches_1.length) {
|
|
757
816
|
doc.transact(function () {
|
|
@@ -759,14 +818,14 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
759
818
|
(0, helpers_1.addSheetDataPatchesV3)(ySheetDataV3, persistableErrorCellPatches_1);
|
|
760
819
|
}
|
|
761
820
|
else {
|
|
762
|
-
(0, helpers_1.addSheetDataPatches)(ySheetDataV2, persistableErrorCellPatches_1);
|
|
821
|
+
(0, helpers_1.addSheetDataPatches)(ySheetDataV2, persistableErrorCellPatches_1, yjs);
|
|
763
822
|
}
|
|
764
823
|
}, origin);
|
|
765
824
|
}
|
|
766
825
|
return;
|
|
767
826
|
}
|
|
768
827
|
doc.transact(function () {
|
|
769
|
-
var
|
|
828
|
+
var e_11, _a, e_12, _b;
|
|
770
829
|
var _c, _d, _e, _f;
|
|
771
830
|
try {
|
|
772
831
|
for (var patches_2 = tslib_1.__values(patches), patches_2_1 = patches_2.next(); !patches_2_1.done; patches_2_1 = patches_2.next()) {
|
|
@@ -785,7 +844,7 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
785
844
|
(0, helpers_1.addSheetDataPatchesV3)(ySheetDataV3, patches_3);
|
|
786
845
|
}
|
|
787
846
|
else {
|
|
788
|
-
(0, helpers_1.addSheetDataPatches)(ySheetDataV2, patches_3);
|
|
847
|
+
(0, helpers_1.addSheetDataPatches)(ySheetDataV2, patches_3, yjs);
|
|
789
848
|
}
|
|
790
849
|
}
|
|
791
850
|
if (patch.cellXfs) {
|
|
@@ -793,15 +852,15 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
793
852
|
(0, helpers_1.applyMapPatches)(yCellXfs, patches_4);
|
|
794
853
|
}
|
|
795
854
|
try {
|
|
796
|
-
for (var _j = (
|
|
855
|
+
for (var _j = (e_12 = void 0, tslib_1.__values(documentMap.entries())), _k = _j.next(); !_k.done; _k = _j.next()) {
|
|
797
856
|
var _l = tslib_1.__read(_k.value, 2), mappingKey = _l[0], _m = tslib_1.__read(_l[1], 1), ydoc = _m[0];
|
|
798
857
|
if (patch === null || patch === void 0 ? void 0 : patch[mappingKey]) {
|
|
799
858
|
var patches_5 = (_e = patch[mappingKey]) === null || _e === void 0 ? void 0 : _e[patchKey];
|
|
800
859
|
// Handle shared strings Map (always use Map now)
|
|
801
|
-
if (mappingKey === "sharedStrings" && ydoc instanceof
|
|
860
|
+
if (mappingKey === "sharedStrings" && ydoc instanceof yjs.Map) {
|
|
802
861
|
(0, helpers_1.applyMapPatches)(ydoc, patches_5);
|
|
803
862
|
}
|
|
804
|
-
else if (ydoc instanceof
|
|
863
|
+
else if (ydoc instanceof yjs.Array) {
|
|
805
864
|
// Check if we are updating sheets
|
|
806
865
|
if (mappingKey === "sheets" && ydoc.length === 0) {
|
|
807
866
|
// Add initial sheets
|
|
@@ -812,12 +871,12 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
812
871
|
}
|
|
813
872
|
}
|
|
814
873
|
}
|
|
815
|
-
catch (
|
|
874
|
+
catch (e_12_1) { e_12 = { error: e_12_1 }; }
|
|
816
875
|
finally {
|
|
817
876
|
try {
|
|
818
877
|
if (_k && !_k.done && (_b = _j.return)) _b.call(_j);
|
|
819
878
|
}
|
|
820
|
-
finally { if (
|
|
879
|
+
finally { if (e_12) throw e_12.error; }
|
|
821
880
|
}
|
|
822
881
|
// Recalc cells
|
|
823
882
|
if ((_f = patch.recalcCells) === null || _f === void 0 ? void 0 : _f[type]) {
|
|
@@ -834,12 +893,12 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
834
893
|
}
|
|
835
894
|
}
|
|
836
895
|
}
|
|
837
|
-
catch (
|
|
896
|
+
catch (e_11_1) { e_11 = { error: e_11_1 }; }
|
|
838
897
|
finally {
|
|
839
898
|
try {
|
|
840
899
|
if (patches_2_1 && !patches_2_1.done && (_a = patches_2.return)) _a.call(patches_2);
|
|
841
900
|
}
|
|
842
|
-
finally { if (
|
|
901
|
+
finally { if (e_11) throw e_11.error; }
|
|
843
902
|
}
|
|
844
903
|
}, origin);
|
|
845
904
|
onAfterBroadcastPatch === null || onAfterBroadcastPatch === void 0 ? void 0 : onAfterBroadcastPatch(patches, doc);
|
|
@@ -847,6 +906,7 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
847
906
|
onAfterBroadcastPatch,
|
|
848
907
|
documentMap,
|
|
849
908
|
yRecalcCells,
|
|
909
|
+
yjs,
|
|
850
910
|
doc,
|
|
851
911
|
userId,
|
|
852
912
|
yDisableRecalc,
|
|
@@ -875,7 +935,7 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
875
935
|
// Awareness
|
|
876
936
|
(0, ui_1.useIsomorphicLayoutEffect)(function () {
|
|
877
937
|
var onChangeAwareness = function () {
|
|
878
|
-
var
|
|
938
|
+
var e_13, _a;
|
|
879
939
|
var _b, _c, _d, _e, _f;
|
|
880
940
|
if (awareness) {
|
|
881
941
|
var collaborators = [];
|
|
@@ -915,12 +975,12 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
915
975
|
});
|
|
916
976
|
}
|
|
917
977
|
}
|
|
918
|
-
catch (
|
|
978
|
+
catch (e_13_1) { e_13 = { error: e_13_1 }; }
|
|
919
979
|
finally {
|
|
920
980
|
try {
|
|
921
981
|
if (_h && !_h.done && (_a = _g.return)) _a.call(_g);
|
|
922
982
|
}
|
|
923
|
-
finally { if (
|
|
983
|
+
finally { if (e_13) throw e_13.error; }
|
|
924
984
|
}
|
|
925
985
|
setUsers(collaborators);
|
|
926
986
|
}
|
|
@@ -942,6 +1002,7 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
942
1002
|
awareness.setLocalStateField("userId", userId);
|
|
943
1003
|
awareness.setLocalStateField("title", title);
|
|
944
1004
|
awareness.setLocalStateField("sheetId", sheetId);
|
|
1005
|
+
awareness.setLocalStateField("canWrite", canWrite);
|
|
945
1006
|
if (resolvedAwarenessScopeId) {
|
|
946
1007
|
awareness.setLocalStateField("docGuid", resolvedAwarenessScopeId);
|
|
947
1008
|
}
|
|
@@ -963,6 +1024,7 @@ var useYSpreadsheetV2 = function (_a) {
|
|
|
963
1024
|
}, [
|
|
964
1025
|
awareness,
|
|
965
1026
|
resolvedAwarenessScopeId,
|
|
1027
|
+
canWrite,
|
|
966
1028
|
userId,
|
|
967
1029
|
title,
|
|
968
1030
|
sheetId,
|
|
@@ -3,15 +3,17 @@ import type { CellInterface } from "@rowsncolumns/grid";
|
|
|
3
3
|
import type { CellData, Collaborator, ConditionalFormatRule, DataValidationRuleRecord, EmbeddedChart, EmbeddedObject, NamedRange, ProtectedRange, Sheet, TableView } from "@rowsncolumns/spreadsheet";
|
|
4
4
|
import type { CalculateNowOptions, CalculationOperation, HistoryType, SheetData, SpreadsheetPatch } from "@rowsncolumns/spreadsheet-state";
|
|
5
5
|
import type { Patch } from "immer";
|
|
6
|
-
import
|
|
7
|
-
import type
|
|
6
|
+
import * as Y from "yjs";
|
|
7
|
+
import type { CollabProviderLike, YjsRuntime } from "./types";
|
|
8
8
|
export type useYSpreadsheetProps<T extends CellData, S extends Sheet, C extends EmbeddedChart, O extends EmbeddedObject> = {
|
|
9
9
|
userId: string | number;
|
|
10
10
|
title: string;
|
|
11
11
|
sheetId: number;
|
|
12
12
|
activeCell?: CellInterface;
|
|
13
|
-
provider?: HocuspocusProvider |
|
|
13
|
+
provider?: HocuspocusProvider | CollabProviderLike | any;
|
|
14
14
|
doc: Y.Doc;
|
|
15
|
+
/** The Yjs implementation `doc` belongs to; defaults to `yjs` (see `YjsRuntime`). */
|
|
16
|
+
yjs?: YjsRuntime;
|
|
15
17
|
calculateNow(options?: CalculateNowOptions): void;
|
|
16
18
|
onChangeSheetData: React.Dispatch<React.SetStateAction<SheetData<T>>>;
|
|
17
19
|
onChangeTables: React.Dispatch<React.SetStateAction<TableView[]>>;
|
|
@@ -31,7 +33,7 @@ export type useYSpreadsheetProps<T extends CellData, S extends Sheet, C extends
|
|
|
31
33
|
* Does not load initial data
|
|
32
34
|
* @returns
|
|
33
35
|
*/
|
|
34
|
-
export declare const useYSpreadsheet: <T extends CellData, S extends Sheet, C extends EmbeddedChart, O extends EmbeddedObject>({ onChangeSheetData, onChangeSheets, onChangeTables, onChangeCharts, onChangeEmbeds, onChangeConditionalFormats, onChangeDataValidations, onChangeNamedRanges, onChangeProtectedRanges, onError, enqueueCalculation, calculateNow, userId, title, sheetId, activeCell, doc, provider, }: useYSpreadsheetProps<T, S, C, O>) => {
|
|
36
|
+
export declare const useYSpreadsheet: <T extends CellData, S extends Sheet, C extends EmbeddedChart, O extends EmbeddedObject>({ onChangeSheetData, onChangeSheets, onChangeTables, onChangeCharts, onChangeEmbeds, onChangeConditionalFormats, onChangeDataValidations, onChangeNamedRanges, onChangeProtectedRanges, onError, enqueueCalculation, calculateNow, userId, title, sheetId, activeCell, doc, provider, yjs, }: useYSpreadsheetProps<T, S, C, O>) => {
|
|
35
37
|
onBroadcastPatch: (patches: [patch: SpreadsheetPatch<Patch>, type?: HistoryType | undefined][]) => void;
|
|
36
38
|
users: Collaborator[];
|
|
37
39
|
synced: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-yspreadsheet.d.ts","sourceRoot":"","sources":["../../use-yspreadsheet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EACV,QAAQ,EACR,YAAY,EACZ,qBAAqB,EACrB,wBAAwB,EACxB,aAAa,EACb,cAAc,EACd,UAAU,EACV,cAAc,EACd,KAAK,EACL,SAAS,EACV,MAAM,2BAA2B,CAAC;AAKnC,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EACpB,WAAW,EAEX,SAAS,EACT,gBAAgB,EACjB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAInC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"use-yspreadsheet.d.ts","sourceRoot":"","sources":["../../use-yspreadsheet.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,13 +6,15 @@ var spreadsheet_1 = require("@rowsncolumns/spreadsheet");
|
|
|
6
6
|
var immer_1 = require("immer");
|
|
7
7
|
var uniqBy_1 = tslib_1.__importDefault(require("lodash/uniqBy"));
|
|
8
8
|
var react_1 = require("react");
|
|
9
|
-
var
|
|
10
|
-
var getStateVector = function (doc
|
|
9
|
+
var Y = tslib_1.__importStar(require("yjs"));
|
|
10
|
+
var getStateVector = function (doc, yjs) {
|
|
11
|
+
return yjs.encodeStateVector(doc);
|
|
12
|
+
};
|
|
11
13
|
// Function to get updates between two state vectors
|
|
12
|
-
var getUpdatesBetween = function (doc, stateVector1, stateVector2) {
|
|
13
|
-
var diff =
|
|
14
|
-
var newDiff =
|
|
15
|
-
return
|
|
14
|
+
var getUpdatesBetween = function (doc, stateVector1, stateVector2, yjs) {
|
|
15
|
+
var diff = yjs.encodeStateAsUpdate(doc, stateVector1);
|
|
16
|
+
var newDiff = yjs.encodeStateAsUpdate(doc, stateVector2);
|
|
17
|
+
return yjs.diffUpdate(diff, newDiff);
|
|
16
18
|
};
|
|
17
19
|
/**
|
|
18
20
|
* Connects to a Y server and picks up the most recent change
|
|
@@ -20,9 +22,9 @@ var getUpdatesBetween = function (doc, stateVector1, stateVector2) {
|
|
|
20
22
|
* @returns
|
|
21
23
|
*/
|
|
22
24
|
var useYSpreadsheet = function (_a) {
|
|
23
|
-
var onChangeSheetData = _a.onChangeSheetData, onChangeSheets = _a.onChangeSheets, onChangeTables = _a.onChangeTables, onChangeCharts = _a.onChangeCharts, onChangeEmbeds = _a.onChangeEmbeds, onChangeConditionalFormats = _a.onChangeConditionalFormats, onChangeDataValidations = _a.onChangeDataValidations, onChangeNamedRanges = _a.onChangeNamedRanges, onChangeProtectedRanges = _a.onChangeProtectedRanges, onError = _a.onError, enqueueCalculation = _a.enqueueCalculation, calculateNow = _a.calculateNow, userId = _a.userId, title = _a.title, sheetId = _a.sheetId, activeCell = _a.activeCell, doc = _a.doc, provider = _a.provider;
|
|
24
|
-
var
|
|
25
|
-
var
|
|
25
|
+
var onChangeSheetData = _a.onChangeSheetData, onChangeSheets = _a.onChangeSheets, onChangeTables = _a.onChangeTables, onChangeCharts = _a.onChangeCharts, onChangeEmbeds = _a.onChangeEmbeds, onChangeConditionalFormats = _a.onChangeConditionalFormats, onChangeDataValidations = _a.onChangeDataValidations, onChangeNamedRanges = _a.onChangeNamedRanges, onChangeProtectedRanges = _a.onChangeProtectedRanges, onError = _a.onError, enqueueCalculation = _a.enqueueCalculation, calculateNow = _a.calculateNow, userId = _a.userId, title = _a.title, sheetId = _a.sheetId, activeCell = _a.activeCell, doc = _a.doc, provider = _a.provider, _b = _a.yjs, yjs = _b === void 0 ? Y : _b;
|
|
26
|
+
var _c = tslib_1.__read((0, react_1.useState)([]), 2), users = _c[0], setUsers = _c[1];
|
|
27
|
+
var _d = tslib_1.__read((0, react_1.useState)(false), 2), synced = _d[0], setSynced = _d[1];
|
|
26
28
|
var previousStateVectorRef = (0, react_1.useRef)(undefined);
|
|
27
29
|
var currentStateVectorRef = (0, react_1.useRef)(undefined);
|
|
28
30
|
// Recalc cells
|
|
@@ -96,10 +98,10 @@ var useYSpreadsheet = function (_a) {
|
|
|
96
98
|
var syncedDoc = doc;
|
|
97
99
|
if (previousStateVectorRef.current) {
|
|
98
100
|
// Capture the current state vector on subsequent syncs
|
|
99
|
-
currentStateVectorRef.current = getStateVector(doc);
|
|
100
|
-
var updates = getUpdatesBetween(doc, previousStateVectorRef.current, currentStateVectorRef.current);
|
|
101
|
-
var newDoc = new
|
|
102
|
-
|
|
101
|
+
currentStateVectorRef.current = getStateVector(doc, yjs);
|
|
102
|
+
var updates = getUpdatesBetween(doc, previousStateVectorRef.current, currentStateVectorRef.current, yjs);
|
|
103
|
+
var newDoc = new yjs.Doc({ gc: true });
|
|
104
|
+
yjs.applyUpdate(newDoc, updates);
|
|
103
105
|
syncedDoc = newDoc;
|
|
104
106
|
previousStateVectorRef.current = currentStateVectorRef.current;
|
|
105
107
|
}
|
|
@@ -169,7 +171,7 @@ var useYSpreadsheet = function (_a) {
|
|
|
169
171
|
});
|
|
170
172
|
// Set synced
|
|
171
173
|
setSynced(true);
|
|
172
|
-
}, [calculateNow, docMap, onError, doc]);
|
|
174
|
+
}, [calculateNow, docMap, onError, doc, yjs]);
|
|
173
175
|
// Sync state
|
|
174
176
|
if ((provider === null || provider === void 0 ? void 0 : provider.synced) && !synced) {
|
|
175
177
|
onSynced();
|
|
@@ -180,7 +182,7 @@ var useYSpreadsheet = function (_a) {
|
|
|
180
182
|
var onConnectionStatusChange = function (_a) {
|
|
181
183
|
var status = _a.status;
|
|
182
184
|
if (status === "disconnected") {
|
|
183
|
-
previousStateVectorRef.current = getStateVector(doc);
|
|
185
|
+
previousStateVectorRef.current = getStateVector(doc, yjs);
|
|
184
186
|
}
|
|
185
187
|
};
|
|
186
188
|
provider === null || provider === void 0 ? void 0 : provider.on("status", onConnectionStatusChange);
|
package/dist/esm/helpers.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { type HistoryType, type SheetData, type SpreadsheetPatch } from "@rowsnc
|
|
|
3
3
|
import type { Patch } from "immer";
|
|
4
4
|
import * as Y from "yjs";
|
|
5
5
|
import type { YRowData, YSheetData } from "./use-yspreadsheet-v2";
|
|
6
|
-
import type { CellKeyV3, CellDataV3, ParsedCellKeyV3 } from "./types";
|
|
6
|
+
import type { CellKeyV3, CellDataV3, ParsedCellKeyV3, YjsRuntime } from "./types";
|
|
7
7
|
/**
|
|
8
8
|
* Simplified structure to pass event data synchronously
|
|
9
9
|
*/
|
|
@@ -24,7 +24,7 @@ export type SheetDataEvent = {
|
|
|
24
24
|
* @param source
|
|
25
25
|
* @param sheetDataVersion - Version of sheet data format ("v2" or "v3"). Falls back to docMeta if undefined.
|
|
26
26
|
*/
|
|
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") => void;
|
|
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", yjs?: YjsRuntime) => void;
|
|
28
28
|
/**
|
|
29
29
|
* Add sheet data to a yjs map using immer patches
|
|
30
30
|
*
|
|
@@ -33,10 +33,10 @@ export declare const applyPatchesToYDoc: (doc: Y.Doc, userId: string | number, p
|
|
|
33
33
|
* 1. Deduplicating patches targeting the same cell (later patches win)
|
|
34
34
|
* 2. Grouping updates by sheet/row for efficient batch application
|
|
35
35
|
*/
|
|
36
|
-
export declare const addSheetDataPatches: (ySheetData: Y.Map<YSheetData>, patches: Patch[]) => void;
|
|
37
|
-
export declare const getSheetFromYSheetData: (ySheetData: Y.Map<YSheetData>, sheetId: string | number) => YSheetData;
|
|
36
|
+
export declare const addSheetDataPatches: (ySheetData: Y.Map<YSheetData>, patches: Patch[], yjs?: YjsRuntime) => void;
|
|
37
|
+
export declare const getSheetFromYSheetData: (ySheetData: Y.Map<YSheetData>, sheetId: string | number, yjs?: YjsRuntime) => YSheetData;
|
|
38
38
|
export declare const deleteSheetFromYSheetData: (ySheetData: Y.Map<YSheetData>, sheetId: string | number) => void;
|
|
39
|
-
export declare const getRowDataFromSheet: (ysheet: Y.Array<YRowData | null>, rowIndex: number | string) => Y.Array<CellData | null>;
|
|
39
|
+
export declare const getRowDataFromSheet: (ysheet: Y.Array<YRowData | null>, rowIndex: number | string, yjs?: YjsRuntime) => Y.Array<CellData | null>;
|
|
40
40
|
export declare const setCellDataInRowData: (rowData: Y.Array<CellData | null>, columnIndex: number | string, cellData?: CellData | null) => void;
|
|
41
41
|
export declare const removeRowData: (ysheet: Y.Array<YRowData | null>, rowIndex: number | string) => void;
|
|
42
42
|
/**
|
|
@@ -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,CAAC,MAAM,KAAK,CAAC;AAOzB,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAEV,SAAS,EACT,UAAU,EACV,eAAe,
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../helpers.ts"],"names":[],"mappings":"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"}
|