@ai-matrx/office 0.8.34 → 0.8.36
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/CHANGELOG.md +19 -1
- package/dist/collab-sheets-transform.cjs +103 -6
- package/dist/collab-sheets-transform.cjs.map +1 -1
- package/dist/collab-sheets-transform.d.cts +2 -2
- package/dist/collab-sheets-transform.d.ts +2 -2
- package/dist/collab-sheets-transform.js +103 -6
- package/dist/collab-sheets-transform.js.map +1 -1
- package/dist/sheets-comment-anchors.cjs.map +1 -1
- package/dist/sheets-comment-anchors.d.cts +15 -0
- package/dist/sheets-comment-anchors.d.ts +15 -0
- package/dist/sheets-comment-anchors.js.map +1 -1
- package/dist/univer-collab.cjs +124 -8
- package/dist/univer-collab.cjs.map +1 -1
- package/dist/univer-collab.d.cts +18 -2
- package/dist/univer-collab.d.ts +18 -2
- package/dist/univer-collab.js +124 -8
- package/dist/univer-collab.js.map +1 -1
- package/package.json +4 -4
package/dist/univer-collab.cjs
CHANGED
|
@@ -40,6 +40,8 @@ __export(collab_exports, {
|
|
|
40
40
|
SHEETS_COLLAB_PROTO: () => SHEETS_COLLAB_PROTO,
|
|
41
41
|
SHEETS_EDIT_GROUP: () => SHEETS_EDIT_GROUP,
|
|
42
42
|
SHEETS_READABLE_PROTOS: () => SHEETS_READABLE_PROTOS,
|
|
43
|
+
SHEET_ROOM_EDITOR_PRESETS: () => SHEET_ROOM_EDITOR_PRESETS,
|
|
44
|
+
SHEET_ROOM_PLUGIN_PACKAGES: () => SHEET_ROOM_PLUGIN_PACKAGES,
|
|
43
45
|
WorkbookCollabSession: () => WorkbookCollabSession,
|
|
44
46
|
applyDocsOp: () => applyDocsOp,
|
|
45
47
|
asLoadedDocsSnapshot: () => asLoadedDocsSnapshot,
|
|
@@ -1896,6 +1898,10 @@ var SHEET_MUTATIONS = {
|
|
|
1896
1898
|
"data-validation.mutation.updateRule": covered("dv", "ruleId", "payload", "source", "derived"),
|
|
1897
1899
|
"data-validation.mutation.removeRule": covered("dv", "ruleId", "source", "derived"),
|
|
1898
1900
|
"sheet.mutation.set-filter-range": covered("filter", "range", "derived"),
|
|
1901
|
+
// C5f: Univer's cell notes, keyed by note id, anchored to one cell (their transform: comment-anchor-transform.ts)
|
|
1902
|
+
"sheet.mutation.update-note": covered("note", "sheetId", "row", "col", "note", "silent", "derived"),
|
|
1903
|
+
"sheet.mutation.remove-note": covered("note", "sheetId", "noteId", "row", "col", "silent", "derived"),
|
|
1904
|
+
"sheet.mutation.update-note-position": covered("note", "sheetId", "noteId", "row", "col", "newPosition", "silent", "derived"),
|
|
1899
1905
|
"sheet.mutation.set-filter-criteria": covered("filter", "col", "criteria", "reCalc", "derived"),
|
|
1900
1906
|
"sheet.mutation.remove-filter": covered("filter", "derived"),
|
|
1901
1907
|
"sheet.mutation.add-table": barrier("C5c", RESOURCE),
|
|
@@ -1908,9 +1914,6 @@ var SHEET_MUTATIONS = {
|
|
|
1908
1914
|
"sheets.mutation.update-hyper-link": barrier("C5c", RESOURCE),
|
|
1909
1915
|
"sheets.mutation.update-hyper-link-ref": barrier("C5c", RESOURCE),
|
|
1910
1916
|
"sheets.mutation.update-rich-hyper-link": barrier("C5c", RESOURCE),
|
|
1911
|
-
"sheet.mutation.update-note": barrier("C5c", RESOURCE),
|
|
1912
|
-
"sheet.mutation.remove-note": barrier("C5c", RESOURCE),
|
|
1913
|
-
"sheet.mutation.update-note-position": barrier("C5c", RESOURCE),
|
|
1914
1917
|
"sheet.mutation.set-drawing-apply": barrier("C5c", RESOURCE),
|
|
1915
1918
|
"sheet.mutation.set-worksheet-background-image": barrier("C5c", RESOURCE),
|
|
1916
1919
|
"sheet.mutation.add-range-theme": barrier("C5c", RESOURCE),
|
|
@@ -2325,7 +2328,88 @@ var label = (m) => {
|
|
|
2325
2328
|
const c = cellOf(m);
|
|
2326
2329
|
return `${String(m.params.subUnitId ?? "")}!${c ? sheetCellName(c) : "?"} comment`;
|
|
2327
2330
|
};
|
|
2331
|
+
var UPDATE_NOTE = "sheet.mutation.update-note";
|
|
2332
|
+
var REMOVE_NOTE = "sheet.mutation.remove-note";
|
|
2333
|
+
var UPDATE_NOTE_POSITION = "sheet.mutation.update-note-position";
|
|
2334
|
+
var NOTE_IDS = /* @__PURE__ */ new Set([UPDATE_NOTE, REMOVE_NOTE, UPDATE_NOTE_POSITION]);
|
|
2335
|
+
var isNoteMutation = (id) => NOTE_IDS.has(id);
|
|
2336
|
+
var cellAt = (row, col) => typeof row === "number" && typeof col === "number" ? { row, col } : null;
|
|
2337
|
+
function noteRef(m) {
|
|
2338
|
+
const p = m.params;
|
|
2339
|
+
const sheet = String(p.sheetId ?? "");
|
|
2340
|
+
if (m.id === UPDATE_NOTE) return { role: "write", sheet, id: p.note?.id ? String(p.note.id) : null, cell: cellAt(p.row, p.col) };
|
|
2341
|
+
if (m.id === UPDATE_NOTE_POSITION) return { role: "move", sheet, id: p.noteId ? String(p.noteId) : null, cell: cellAt(p.newPosition?.row, p.newPosition?.col) };
|
|
2342
|
+
return { role: "remove", sheet, id: p.noteId ? String(p.noteId) : null, cell: p.noteId ? null : cellAt(p.row, p.col) };
|
|
2343
|
+
}
|
|
2344
|
+
var noteDerived = (m) => m.params.derived === true;
|
|
2345
|
+
var noteLabel = (n) => `${n.sheet}!${n.cell ? sheetCellName(n.cell) : "?"} note`;
|
|
2346
|
+
var tellNote = (m, n) => noteDerived(m) ? [] : [noteLabel(n)];
|
|
2347
|
+
var noteBarrier = (reason) => ({ barrier: true, reason: `note: ${reason}` });
|
|
2348
|
+
var removeNoteOf = (sheet, id) => ({ id: REMOVE_NOTE, params: { sheetId: sheet, noteId: id, derived: true } });
|
|
2349
|
+
var moveNoteTo = (sheet, id, cell) => ({
|
|
2350
|
+
id: UPDATE_NOTE_POSITION,
|
|
2351
|
+
params: { sheetId: sheet, noteId: id, newPosition: { row: cell.row, col: cell.col }, derived: true }
|
|
2352
|
+
});
|
|
2353
|
+
var onSheet = (m, sheet) => String(m.params.subUnitId ?? "") === sheet;
|
|
2354
|
+
function transformCellNote(x, y, side) {
|
|
2355
|
+
const xn = isNoteMutation(x.id);
|
|
2356
|
+
const yn = isNoteMutation(y.id);
|
|
2357
|
+
if (!xn && !yn) return null;
|
|
2358
|
+
if (!xn) {
|
|
2359
|
+
const n2 = noteRef(y);
|
|
2360
|
+
if (n2.role === "remove" || !n2.cell || !onSheet(x, n2.sheet)) return ok([x]);
|
|
2361
|
+
if (x.id === REMOVE_SHEET) return n2.id ? ok([removeNoteOf(n2.sheet, n2.id), x]) : ok([x]);
|
|
2362
|
+
if (!structuralAxisOp(x.id, x.params)) return ok([x]);
|
|
2363
|
+
if (!n2.id) return noteBarrier("a note without an id against a row or column change");
|
|
2364
|
+
const moved = moveSheetAnchorCell(n2.cell, n2.sheet, x.id, x.params);
|
|
2365
|
+
if (!moved) return ok([x, removeNoteOf(n2.sheet, n2.id)]);
|
|
2366
|
+
return moved === n2.cell ? ok([x]) : ok([x, moveNoteTo(n2.sheet, n2.id, moved)]);
|
|
2367
|
+
}
|
|
2368
|
+
const n = noteRef(x);
|
|
2369
|
+
if (!yn) {
|
|
2370
|
+
if (!onSheet(y, n.sheet)) return ok([x]);
|
|
2371
|
+
if (y.id === REMOVE_SHEET) return ok([], [], tellNote(x, n));
|
|
2372
|
+
if (!structuralAxisOp(y.id, y.params)) return ok([x]);
|
|
2373
|
+
if (n.role === "write" && !n.id) return noteBarrier("a note without an id against a row or column change");
|
|
2374
|
+
const p = x.params;
|
|
2375
|
+
const from = cellAt(p.row, p.col);
|
|
2376
|
+
const fromMoved = from ? moveSheetAnchorCell(from, n.sheet, y.id, y.params) : null;
|
|
2377
|
+
if (n.role === "remove") {
|
|
2378
|
+
if (n.id) return ok([x]);
|
|
2379
|
+
return fromMoved ? ok([{ id: x.id, params: { ...p, row: fromMoved.row, col: fromMoved.col } }]) : ok([]);
|
|
2380
|
+
}
|
|
2381
|
+
const moved = n.cell ? moveSheetAnchorCell(n.cell, n.sheet, y.id, y.params) : null;
|
|
2382
|
+
if (n.role === "write") {
|
|
2383
|
+
if (!moved) return ok([], [], tellNote(x, n));
|
|
2384
|
+
return ok([moved === n.cell ? x : { id: x.id, params: { ...p, row: moved.row, col: moved.col } }]);
|
|
2385
|
+
}
|
|
2386
|
+
if (!moved) return n.id ? ok([removeNoteOf(n.sheet, n.id)], [], tellNote(x, n)) : ok([], [], tellNote(x, n));
|
|
2387
|
+
const params = { ...p, newPosition: { ...p.newPosition, row: moved.row, col: moved.col } };
|
|
2388
|
+
if (fromMoved) Object.assign(params, { row: fromMoved.row, col: fromMoved.col });
|
|
2389
|
+
return ok([{ id: x.id, params }]);
|
|
2390
|
+
}
|
|
2391
|
+
const m = noteRef(y);
|
|
2392
|
+
if (n.sheet !== m.sheet) return ok([x]);
|
|
2393
|
+
if (!n.id || !m.id) return noteBarrier("a note change addressed by cell against another note change on its sheet");
|
|
2394
|
+
if (n.id !== m.id) {
|
|
2395
|
+
const sameCell = n.cell && m.cell && n.cell.row === m.cell.row && n.cell.col === m.cell.col;
|
|
2396
|
+
return sameCell ? noteBarrier("two notes written to one cell at once") : ok([x]);
|
|
2397
|
+
}
|
|
2398
|
+
if (n.role === "remove") return ok([x]);
|
|
2399
|
+
if (m.role === "remove") return ok([], [], tellNote(x, n));
|
|
2400
|
+
if (n.role === "write" && m.role === "move") {
|
|
2401
|
+
return m.cell ? ok([{ id: x.id, params: { ...x.params, row: m.cell.row, col: m.cell.col } }]) : ok([x]);
|
|
2402
|
+
}
|
|
2403
|
+
if (n.role === "move" && m.role === "write") return ok([x]);
|
|
2404
|
+
const dx = noteDerived(x);
|
|
2405
|
+
const dy = noteDerived(y);
|
|
2406
|
+
if (dx && dy) return ok([x]);
|
|
2407
|
+
const xWins = dx !== dy ? !dx : side === "left";
|
|
2408
|
+
return xWins ? ok([x], tellNote(y, m)) : ok([], [], tellNote(x, n));
|
|
2409
|
+
}
|
|
2328
2410
|
function transformCommentAnchor(x, y, side) {
|
|
2411
|
+
const note = transformCellNote(x, y, side);
|
|
2412
|
+
if (note) return note;
|
|
2329
2413
|
const xa = x.id === SET_SHEET_COMMENT_ANCHOR;
|
|
2330
2414
|
const ya = y.id === SET_SHEET_COMMENT_ANCHOR;
|
|
2331
2415
|
if (!xa && !ya) return null;
|
|
@@ -2446,7 +2530,7 @@ registerRangedResource({
|
|
|
2446
2530
|
});
|
|
2447
2531
|
|
|
2448
2532
|
// src/collab/sheets/transform/transform.ts
|
|
2449
|
-
var SHEET_TRANSFORMER_VERSION = "
|
|
2533
|
+
var SHEET_TRANSFORMER_VERSION = "c5f-1";
|
|
2450
2534
|
var ID = {
|
|
2451
2535
|
values: "sheet.mutation.set-range-values",
|
|
2452
2536
|
insertRow: "sheet.mutation.insert-row",
|
|
@@ -2535,6 +2619,21 @@ function buildStructural(template, axis, op) {
|
|
|
2535
2619
|
const start = op.kind === "insert" ? op.at : op.start;
|
|
2536
2620
|
return { id: template.id, params: { ...p, range: { ...p.range, [a0]: start, [a1]: start + op.count - 1 } } };
|
|
2537
2621
|
}
|
|
2622
|
+
function crossThrough(x, sy) {
|
|
2623
|
+
const [a0, a1] = S(sy.axis);
|
|
2624
|
+
const p = x.params;
|
|
2625
|
+
const params = { ...p };
|
|
2626
|
+
for (const k of ["range", "sourceRange", "targetRange"]) {
|
|
2627
|
+
const r = p[k];
|
|
2628
|
+
if (!r || typeof r[a0] !== "number" || typeof r[a1] !== "number") continue;
|
|
2629
|
+
const spans = spanThrough(sy.op, r[a0], r[a1]);
|
|
2630
|
+
if (!spans.length) continue;
|
|
2631
|
+
const lo = r[a0] === 0 ? 0 : Math.min(...spans.map(([l]) => l));
|
|
2632
|
+
const hi = Math.max(...spans.map(([, h]) => h));
|
|
2633
|
+
params[k] = { ...r, [a0]: lo, [a1]: hi };
|
|
2634
|
+
}
|
|
2635
|
+
return { id: x.id, params };
|
|
2636
|
+
}
|
|
2538
2637
|
function univerMutationInfo(axis, op) {
|
|
2539
2638
|
const FULL2 = { startRow: 0, endRow: Number.MAX_SAFE_INTEGER, startColumn: 0, endColumn: Number.MAX_SAFE_INTEGER };
|
|
2540
2639
|
const start = op.kind === "insert" ? op.at : op.start;
|
|
@@ -3258,7 +3357,7 @@ function annotateSheetOpsInOrder(group, sheetOrder) {
|
|
|
3258
3357
|
let structural = false;
|
|
3259
3358
|
return group.map((m0) => {
|
|
3260
3359
|
if (structuralOf(m0)) structural = true;
|
|
3261
|
-
const m = structural && rangedSpecOf(m0.id) && !isDerived(m0) ? { id: m0.id, params: { ...m0.params, derived: true } } : m0;
|
|
3360
|
+
const m = structural && (rangedSpecOf(m0.id) || isNoteMutation(m0.id)) && !isDerived(m0) ? { id: m0.id, params: { ...m0.params, derived: true } } : m0;
|
|
3262
3361
|
if (m.id === ID.insertSheet) {
|
|
3263
3362
|
const index = typeof m.params.index === "number" ? Math.min(m.params.index, order.length) : order.length;
|
|
3264
3363
|
order.splice(index, 0, sheetIdOf(m));
|
|
@@ -3505,7 +3604,7 @@ function transformMutation(x, y, side) {
|
|
|
3505
3604
|
const np = numfmtPair(x, y, side, sx, sy);
|
|
3506
3605
|
if (np) return np;
|
|
3507
3606
|
if (sx && sy) {
|
|
3508
|
-
if (sx.axis !== sy.axis) return ok2([x]);
|
|
3607
|
+
if (sx.axis !== sy.axis) return ok2([crossThrough(x, sy)]);
|
|
3509
3608
|
const out = transformAxis(sx.op, sy.op, side);
|
|
3510
3609
|
if (!out) return barrier2(`${x.id} over ${y.id}: moved blocks overlap in part, or the block would split`);
|
|
3511
3610
|
const dropped = out.length === 0 && sx.op.kind === "move" ? [`${sheetOf(x)}: moved ${sx.axis}s`] : [];
|
|
@@ -3727,8 +3826,8 @@ async function sheetsStateHash(snapshot) {
|
|
|
3727
3826
|
}
|
|
3728
3827
|
|
|
3729
3828
|
// src/univer/collab/sheets-ot/room.ts
|
|
3730
|
-
var SHEETS_COLLAB_PROTO =
|
|
3731
|
-
var SHEETS_READABLE_PROTOS = [2, SHEETS_COLLAB_PROTO];
|
|
3829
|
+
var SHEETS_COLLAB_PROTO = 4;
|
|
3830
|
+
var SHEETS_READABLE_PROTOS = [2, 3, SHEETS_COLLAB_PROTO];
|
|
3732
3831
|
var SHEETS_EDIT_GROUP = "sheets.edit";
|
|
3733
3832
|
var flip2 = (side) => side === "left" ? "right" : "left";
|
|
3734
3833
|
var isNoopSheetOp = (op) => op == null || op.length === 0;
|
|
@@ -4572,6 +4671,23 @@ function moveSelectionsThrough(selections, m, maxRows, maxCols) {
|
|
|
4572
4671
|
return selections.map((s) => ({ ...s, range: box(s.range, s.range.rangeType), ...s.primary ? { primary: box(s.primary) } : {} }));
|
|
4573
4672
|
}
|
|
4574
4673
|
|
|
4674
|
+
// src/univer/collab/sheets-ot/room-presets.ts
|
|
4675
|
+
var SHEET_ROOM_EDITOR_PRESETS = {
|
|
4676
|
+
// core + engine-formula + sheets are always there; sheets-formula moves formulas inside plugin ranges
|
|
4677
|
+
UniverSheetsCorePreset: ["@univerjs/sheets-formula"],
|
|
4678
|
+
UniverSheetsSortPreset: [],
|
|
4679
|
+
UniverSheetsFilterPreset: ["@univerjs/sheets-filter"],
|
|
4680
|
+
UniverSheetsTablePreset: ["@univerjs/sheets-table"],
|
|
4681
|
+
UniverSheetsDataValidationPreset: ["@univerjs/data-validation", "@univerjs/sheets-data-validation"],
|
|
4682
|
+
UniverSheetsConditionalFormattingPreset: ["@univerjs/sheets-conditional-formatting"],
|
|
4683
|
+
UniverSheetsFindReplacePreset: [],
|
|
4684
|
+
UniverSheetsHyperLinkPreset: ["@univerjs/sheets-hyper-link"],
|
|
4685
|
+
UniverSheetsDrawingPreset: ["@univerjs/drawing", "@univerjs/sheets-drawing"],
|
|
4686
|
+
UniverSheetsNotePreset: ["@univerjs/sheets-note"],
|
|
4687
|
+
UniverActionRecorderPlugin: []
|
|
4688
|
+
};
|
|
4689
|
+
var SHEET_ROOM_PLUGIN_PACKAGES = [...new Set(Object.values(SHEET_ROOM_EDITOR_PRESETS).flat())];
|
|
4690
|
+
|
|
4575
4691
|
// src/univer/collab/offline-text.ts
|
|
4576
4692
|
var colName3 = (c) => {
|
|
4577
4693
|
let n = c;
|