@ai-matrx/office 0.8.30 → 0.8.31

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.
@@ -2367,7 +2367,8 @@ registerRangedResource({
2367
2367
  }),
2368
2368
  removeOf: (sheet, key) => ({ id: "sheet.mutation.delete-conditional-rule", params: { subUnitId: sheet, cfId: key, derived: true } }),
2369
2369
  hasFormula: (m) => CF_FORMULA(cfRule(m)),
2370
- orderedAdds: true
2370
+ orderedAdds: true,
2371
+ setsOverwrite: true
2371
2372
  });
2372
2373
  var DV = { add: "data-validation.mutation.addRule", update: "data-validation.mutation.updateRule", remove: "data-validation.mutation.removeRule" };
2373
2374
  var DV_RANGE = 1;
@@ -3599,6 +3600,24 @@ function transformMutation(x, y, side) {
3599
3600
  return ok2([x]);
3600
3601
  }
3601
3602
  var blocked = (p) => !Array.isArray(p);
3603
+ function compactDerivedSets(ops) {
3604
+ if (ops.length < 2) return ops;
3605
+ const later = /* @__PURE__ */ new Set();
3606
+ const out = [];
3607
+ for (let i = ops.length - 1; i >= 0; i--) {
3608
+ const m = ops[i];
3609
+ const spec = rangedSpecOf(m.id);
3610
+ if (spec?.setsOverwrite && spec.ids[m.id] === "set") {
3611
+ const at = (k, facet2) => `${spec.family}|${sheetOf(m)}|${k}|${facet2}`;
3612
+ const facet = spec.facet?.(m) ?? "all";
3613
+ const keys = spec.keys(m);
3614
+ if (isDerived(m) && keys.every((k) => later.has(at(k, facet)) || later.has(at(k, "all")))) continue;
3615
+ for (const k of keys) later.add(at(k, facet));
3616
+ }
3617
+ out.push(m);
3618
+ }
3619
+ return out.length === ops.length ? ops : out.reverse();
3620
+ }
3602
3621
  function tSeq(xs, ys, side, acc) {
3603
3622
  if (xs.length === 0 || ys.length === 0) return [xs, ys];
3604
3623
  if (xs.length === 1 && ys.length === 1) {
@@ -3622,33 +3641,17 @@ function tSeq(xs, ys, side, acc) {
3622
3641
  }
3623
3642
  const r = tSeq(curX, [y], side, acc);
3624
3643
  if (blocked(r)) return r;
3625
- curX = r[0];
3644
+ curX = r[0].length > 1 ? compactDerivedSets(r[0]) : r[0];
3626
3645
  for (const m of r[1]) nextY.push(m);
3627
3646
  }
3628
3647
  for (const m of curX) outX.push(m);
3629
- curY = nextY;
3648
+ curY = compactDerivedSets(nextY);
3630
3649
  }
3631
- return [outX, curY];
3632
- }
3633
- function tSeqOld(xs, ys, side, acc) {
3634
- if (xs.length === 0 || ys.length === 0) return [xs, ys];
3635
- if (xs.length === 1 && ys.length === 1) return tSeq(xs, ys, side, acc);
3636
- if (xs.length > 1) {
3637
- const first2 = tSeqOld([xs[0]], ys, side, acc);
3638
- if (blocked(first2)) return first2;
3639
- const rest2 = tSeqOld(xs.slice(1), first2[1], side, acc);
3640
- if (blocked(rest2)) return rest2;
3641
- return [[...first2[0], ...rest2[0]], rest2[1]];
3642
- }
3643
- const first = tSeqOld(xs, [ys[0]], side, acc);
3644
- if (blocked(first)) return first;
3645
- const rest = tSeqOld(first[0], ys.slice(1), side, acc);
3646
- if (blocked(rest)) return rest;
3647
- return [rest[0], [...first[1], ...rest[1]]];
3650
+ return [compactDerivedSets(outX), curY];
3648
3651
  }
3649
3652
  function transformGroup(x, y, side) {
3650
3653
  const acc = { lost: [], dropped: [] };
3651
- const r = (process.env.OLD_TSEQ ? tSeqOld : tSeq)([...x], [...y], side, acc);
3654
+ const r = tSeq([...x], [...y], side, acc);
3652
3655
  if (blocked(r)) return r;
3653
3656
  return { op: r[0], lost: [...new Set(acc.lost)], dropped: [...new Set(acc.dropped)] };
3654
3657
  }