@ai-matrx/office 0.8.53 → 0.8.55

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.
@@ -23,6 +23,12 @@ var SHEET_MUTATIONS = {
23
23
  "sheet.mutation.set-worksheet-row-is-auto-height": covered("size", "ranges", "autoHeightInfo"),
24
24
  "sheet.mutation.set-worksheet-row-auto-height": covered("size", "rowsAutoHeightInfo"),
25
25
  "sheet.mutation.set-worksheet-col-width": covered("size", "ranges", "colWidth"),
26
+ // a row or column's hidden flag (`hd`): per index like a size, the later of two wins (the gate's F5: Make table
27
+ // hides its Record ID column, which was rolled back as "not shared" in a room)
28
+ "sheet.mutation.set-row-hidden": covered("size", "ranges"),
29
+ "sheet.mutation.set-row-visible": covered("size", "ranges"),
30
+ "sheet.mutation.set-col-hidden": covered("size", "ranges"),
31
+ "sheet.mutation.set-col-visible": covered("size", "ranges"),
26
32
  "sheet.mutation.set-worksheet-name": covered("name", "name"),
27
33
  // ── covered (C5c) ────────────────────────────────────────────────────────────────────────────────
28
34
  "sheet.mutation.set.numfmt": covered("numfmt", "values", "refMap"),
@@ -79,10 +85,6 @@ var SHEET_MUTATIONS = {
79
85
  "sheet.mutation.set-frozen": barrier("X", "absolute frozen indices: not in C5a"),
80
86
  "sheet.mutation.set-row-data": barrier("X", "row properties by index: not in C5a"),
81
87
  "sheet.mutation.set-col-data": barrier("X", "column properties by index: not in C5a"),
82
- "sheet.mutation.set-row-hidden": barrier("X", "row visibility: not in C5a"),
83
- "sheet.mutation.set-row-visible": barrier("X", "row visibility: not in C5a"),
84
- "sheet.mutation.set-col-hidden": barrier("X", "column visibility: not in C5a"),
85
- "sheet.mutation.set-col-visible": barrier("X", "column visibility: not in C5a"),
86
88
  "sheet.mutation.add-range-protection": barrier("X", "permissions: not in C5a"),
87
89
  "sheet.mutation.set-range-protection": barrier("X", "permissions: not in C5a"),
88
90
  "sheet.mutation.delete-range-protection": barrier("X", "permissions: not in C5a"),
@@ -763,6 +765,10 @@ var ID = {
763
765
  rowIsAuto: "sheet.mutation.set-worksheet-row-is-auto-height",
764
766
  rowAutoHeight: "sheet.mutation.set-worksheet-row-auto-height",
765
767
  colWidth: "sheet.mutation.set-worksheet-col-width",
768
+ colHidden: "sheet.mutation.set-col-hidden",
769
+ colVisible: "sheet.mutation.set-col-visible",
770
+ rowHidden: "sheet.mutation.set-row-hidden",
771
+ rowVisible: "sheet.mutation.set-row-visible",
766
772
  name: "sheet.mutation.set-worksheet-name",
767
773
  setName: "formula.mutation.set-defined-name",
768
774
  removeName: "formula.mutation.remove-defined-name",
@@ -1061,7 +1067,8 @@ function transformCell(X, Y, side) {
1061
1067
  out.s = { ...outS && typeof outS === "object" ? outS : {}, n: null };
1062
1068
  } else if (side === "right" && outS && typeof outS === "object" && "n" in outS) {
1063
1069
  const rest = withoutStyleKeys(outS, /* @__PURE__ */ new Set(["n"]));
1064
- if (rest) out.s = rest;
1070
+ if (!has(Y.s) && Y.s !== null) out.s = { ...rest ?? {}, n: null };
1071
+ else if (rest) out.s = rest;
1065
1072
  else delete out.s;
1066
1073
  xLost = true;
1067
1074
  }
@@ -1099,6 +1106,34 @@ function transformCellsOverCells(x, y, side) {
1099
1106
  const op = passes.filter((p) => !isEmptyMatrix(p)).map((p) => cellsMutation(x, p));
1100
1107
  return ok2(op, lost, dropped);
1101
1108
  }
1109
+ var coveredByMerge = (ranges, r, c) => ranges.some((q) => q.startRow <= r && r <= q.endRow && q.startColumn <= c && c <= q.endColumn && !(r === q.startRow && c === q.startColumn));
1110
+ var EMPTY_CONTENT = Object.fromEntries(CONTENT_KEYS.filter((k) => k !== "t").map((k) => [k, null]));
1111
+ function valuesUnderMerge(x, y) {
1112
+ const ranges = mergeRanges(y);
1113
+ const out = {};
1114
+ const dropped = [];
1115
+ let changed = false;
1116
+ forEachCell(cellsOf(x), (r, c, v) => {
1117
+ if (v === null || !hasContent(v) || !coveredByMerge(ranges, r, c)) return putCell(out, r, c, v);
1118
+ changed = true;
1119
+ if (!isDerived(x)) dropped.push(cellRef(sheetOf(x), r, c));
1120
+ if ("s" in v) putCell(out, r, c, { s: v.s });
1121
+ });
1122
+ if (!changed) return ok2([x]);
1123
+ return ok2(isEmptyMatrix(out) ? [] : [cellsMutation(x, out)], [], dropped);
1124
+ }
1125
+ function mergeOverValues(x, y) {
1126
+ const ranges = mergeRanges(x);
1127
+ const clear = {};
1128
+ const lost = [];
1129
+ forEachCell(cellsOf(y), (r, c, v) => {
1130
+ if (v === null || !hasContent(v) || !coveredByMerge(ranges, r, c)) return;
1131
+ putCell(clear, r, c, { ...EMPTY_CONTENT });
1132
+ if (!isDerived(y)) lost.push(cellRef(sheetOf(y), r, c));
1133
+ });
1134
+ if (isEmptyMatrix(clear)) return ok2([x]);
1135
+ return ok2([x, { id: ID.values, params: { subUnitId: sheetOf(x), cellValue: clear, derived: true } }], lost);
1136
+ }
1102
1137
  var SIDE_CAR_PARAMS = ["refSheets", "previousName", "derived", "sheetIndex", "sheetsLeft"];
1103
1138
  var isDerived = (m) => m.params.derived === true;
1104
1139
  function derivedSide(x, y, side) {
@@ -1315,9 +1350,21 @@ function annotateFormulas(group, sheets, definedNames) {
1315
1350
  return m;
1316
1351
  });
1317
1352
  }
1353
+ var HIDE_SHOW = {
1354
+ [ID.colHidden]: { axis: "col", hidden: true },
1355
+ [ID.colVisible]: { axis: "col", hidden: false },
1356
+ [ID.rowHidden]: { axis: "row", hidden: true },
1357
+ [ID.rowVisible]: { axis: "row", hidden: false }
1358
+ };
1318
1359
  function sizeOf(m) {
1319
1360
  const p = m.params;
1320
1361
  const values = /* @__PURE__ */ new Map();
1362
+ const hs = HIDE_SHOW[m.id];
1363
+ if (hs) {
1364
+ const [a02, a12] = S(hs.axis);
1365
+ for (const r of p.ranges ?? []) for (let i = r[a02]; i <= r[a12]; i++) values.set(i, hs.hidden);
1366
+ return { axis: hs.axis, attr: "hd", values };
1367
+ }
1321
1368
  if (m.id === ID.rowAutoHeight) {
1322
1369
  for (const { row, autoHeight } of p.rowsAutoHeightInfo ?? []) values.set(row, autoHeight);
1323
1370
  return { axis: "row", attr: "ah", values };
@@ -1337,6 +1384,12 @@ function sizeOf(m) {
1337
1384
  function buildSize(template, values) {
1338
1385
  if (values.size === 0) return null;
1339
1386
  const p = template.params;
1387
+ const hs = HIDE_SHOW[template.id];
1388
+ if (hs) {
1389
+ const [a02, a12] = S(hs.axis);
1390
+ const first2 = (p.ranges ?? [])[0] ?? { startRow: 0, endRow: 0, startColumn: 0, endColumn: 0 };
1391
+ return { id: template.id, params: { ...p, ranges: runs(values.keys()).map((r) => ({ ...first2, [a02]: r.start, [a12]: r.start + r.count - 1 })) } };
1392
+ }
1340
1393
  if (template.id === ID.rowAutoHeight)
1341
1394
  return { id: template.id, params: { ...p, rowsAutoHeightInfo: [...values].sort((a, b) => a[0] - b[0]).map(([row, autoHeight]) => ({ row, autoHeight })) } };
1342
1395
  const axis = template.id === ID.colWidth ? "col" : "row";
@@ -1882,6 +1935,8 @@ function transformMutation(x, y, side) {
1882
1935
  return ok2([...pre, x, ...mid, ...add.length ? [mergeMutation(ID.addMerge, sheet, add)] : []], lostMerges);
1883
1936
  }
1884
1937
  if (fx === "cell" && fy === "cell") return transformCellsOverCells(x, y, side);
1938
+ if (x.id === ID.values && y.id === ID.addMerge) return valuesUnderMerge(x, y);
1939
+ if (x.id === ID.addMerge && y.id === ID.values) return mergeOverValues(x, y);
1885
1940
  if (fx === "merge" && fy === "merge") {
1886
1941
  const xr = mergeRanges(x);
1887
1942
  const yr = mergeRanges(y);