@ai-matrx/office 0.8.30 → 0.8.32

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.
@@ -587,7 +587,8 @@ registerRangedResource({
587
587
  }),
588
588
  removeOf: (sheet, key) => ({ id: "sheet.mutation.delete-conditional-rule", params: { subUnitId: sheet, cfId: key, derived: true } }),
589
589
  hasFormula: (m) => CF_FORMULA(cfRule(m)),
590
- orderedAdds: true
590
+ orderedAdds: true,
591
+ setsOverwrite: true
591
592
  });
592
593
  var DV = { add: "data-validation.mutation.addRule", update: "data-validation.mutation.updateRule", remove: "data-validation.mutation.removeRule" };
593
594
  var DV_RANGE = 1;
@@ -1819,6 +1820,24 @@ function transformMutation(x, y, side) {
1819
1820
  return ok2([x]);
1820
1821
  }
1821
1822
  var blocked = (p) => !Array.isArray(p);
1823
+ function compactDerivedSets(ops) {
1824
+ if (ops.length < 2) return ops;
1825
+ const later = /* @__PURE__ */ new Set();
1826
+ const out = [];
1827
+ for (let i = ops.length - 1; i >= 0; i--) {
1828
+ const m = ops[i];
1829
+ const spec = rangedSpecOf(m.id);
1830
+ if (spec?.setsOverwrite && spec.ids[m.id] === "set") {
1831
+ const at = (k, facet2) => `${spec.family}|${sheetOf(m)}|${k}|${facet2}`;
1832
+ const facet = spec.facet?.(m) ?? "all";
1833
+ const keys = spec.keys(m);
1834
+ if (isDerived(m) && keys.every((k) => later.has(at(k, facet)) || later.has(at(k, "all")))) continue;
1835
+ for (const k of keys) later.add(at(k, facet));
1836
+ }
1837
+ out.push(m);
1838
+ }
1839
+ return out.length === ops.length ? ops : out.reverse();
1840
+ }
1822
1841
  function tSeq(xs, ys, side, acc) {
1823
1842
  if (xs.length === 0 || ys.length === 0) return [xs, ys];
1824
1843
  if (xs.length === 1 && ys.length === 1) {
@@ -1842,33 +1861,17 @@ function tSeq(xs, ys, side, acc) {
1842
1861
  }
1843
1862
  const r = tSeq(curX, [y], side, acc);
1844
1863
  if (blocked(r)) return r;
1845
- curX = r[0];
1864
+ curX = r[0].length > 1 ? compactDerivedSets(r[0]) : r[0];
1846
1865
  for (const m of r[1]) nextY.push(m);
1847
1866
  }
1848
1867
  for (const m of curX) outX.push(m);
1849
- curY = nextY;
1868
+ curY = compactDerivedSets(nextY);
1850
1869
  }
1851
- return [outX, curY];
1852
- }
1853
- function tSeqOld(xs, ys, side, acc) {
1854
- if (xs.length === 0 || ys.length === 0) return [xs, ys];
1855
- if (xs.length === 1 && ys.length === 1) return tSeq(xs, ys, side, acc);
1856
- if (xs.length > 1) {
1857
- const first2 = tSeqOld([xs[0]], ys, side, acc);
1858
- if (blocked(first2)) return first2;
1859
- const rest2 = tSeqOld(xs.slice(1), first2[1], side, acc);
1860
- if (blocked(rest2)) return rest2;
1861
- return [[...first2[0], ...rest2[0]], rest2[1]];
1862
- }
1863
- const first = tSeqOld(xs, [ys[0]], side, acc);
1864
- if (blocked(first)) return first;
1865
- const rest = tSeqOld(first[0], ys.slice(1), side, acc);
1866
- if (blocked(rest)) return rest;
1867
- return [rest[0], [...first[1], ...rest[1]]];
1870
+ return [compactDerivedSets(outX), curY];
1868
1871
  }
1869
1872
  function transformGroup(x, y, side) {
1870
1873
  const acc = { lost: [], dropped: [] };
1871
- const r = (process.env.OLD_TSEQ ? tSeqOld : tSeq)([...x], [...y], side, acc);
1874
+ const r = tSeq([...x], [...y], side, acc);
1872
1875
  if (blocked(r)) return r;
1873
1876
  return { op: r[0], lost: [...new Set(acc.lost)], dropped: [...new Set(acc.dropped)] };
1874
1877
  }