@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.
@@ -2304,7 +2304,8 @@ registerRangedResource({
2304
2304
  }),
2305
2305
  removeOf: (sheet, key) => ({ id: "sheet.mutation.delete-conditional-rule", params: { subUnitId: sheet, cfId: key, derived: true } }),
2306
2306
  hasFormula: (m) => CF_FORMULA(cfRule(m)),
2307
- orderedAdds: true
2307
+ orderedAdds: true,
2308
+ setsOverwrite: true
2308
2309
  });
2309
2310
  var DV = { add: "data-validation.mutation.addRule", update: "data-validation.mutation.updateRule", remove: "data-validation.mutation.removeRule" };
2310
2311
  var DV_RANGE = 1;
@@ -3536,6 +3537,24 @@ function transformMutation(x, y, side) {
3536
3537
  return ok2([x]);
3537
3538
  }
3538
3539
  var blocked = (p) => !Array.isArray(p);
3540
+ function compactDerivedSets(ops) {
3541
+ if (ops.length < 2) return ops;
3542
+ const later = /* @__PURE__ */ new Set();
3543
+ const out = [];
3544
+ for (let i = ops.length - 1; i >= 0; i--) {
3545
+ const m = ops[i];
3546
+ const spec = rangedSpecOf(m.id);
3547
+ if (spec?.setsOverwrite && spec.ids[m.id] === "set") {
3548
+ const at = (k, facet2) => `${spec.family}|${sheetOf(m)}|${k}|${facet2}`;
3549
+ const facet = spec.facet?.(m) ?? "all";
3550
+ const keys = spec.keys(m);
3551
+ if (isDerived(m) && keys.every((k) => later.has(at(k, facet)) || later.has(at(k, "all")))) continue;
3552
+ for (const k of keys) later.add(at(k, facet));
3553
+ }
3554
+ out.push(m);
3555
+ }
3556
+ return out.length === ops.length ? ops : out.reverse();
3557
+ }
3539
3558
  function tSeq(xs, ys, side, acc) {
3540
3559
  if (xs.length === 0 || ys.length === 0) return [xs, ys];
3541
3560
  if (xs.length === 1 && ys.length === 1) {
@@ -3559,33 +3578,17 @@ function tSeq(xs, ys, side, acc) {
3559
3578
  }
3560
3579
  const r = tSeq(curX, [y], side, acc);
3561
3580
  if (blocked(r)) return r;
3562
- curX = r[0];
3581
+ curX = r[0].length > 1 ? compactDerivedSets(r[0]) : r[0];
3563
3582
  for (const m of r[1]) nextY.push(m);
3564
3583
  }
3565
3584
  for (const m of curX) outX.push(m);
3566
- curY = nextY;
3585
+ curY = compactDerivedSets(nextY);
3567
3586
  }
3568
- return [outX, curY];
3569
- }
3570
- function tSeqOld(xs, ys, side, acc) {
3571
- if (xs.length === 0 || ys.length === 0) return [xs, ys];
3572
- if (xs.length === 1 && ys.length === 1) return tSeq(xs, ys, side, acc);
3573
- if (xs.length > 1) {
3574
- const first2 = tSeqOld([xs[0]], ys, side, acc);
3575
- if (blocked(first2)) return first2;
3576
- const rest2 = tSeqOld(xs.slice(1), first2[1], side, acc);
3577
- if (blocked(rest2)) return rest2;
3578
- return [[...first2[0], ...rest2[0]], rest2[1]];
3579
- }
3580
- const first = tSeqOld(xs, [ys[0]], side, acc);
3581
- if (blocked(first)) return first;
3582
- const rest = tSeqOld(first[0], ys.slice(1), side, acc);
3583
- if (blocked(rest)) return rest;
3584
- return [rest[0], [...first[1], ...rest[1]]];
3587
+ return [compactDerivedSets(outX), curY];
3585
3588
  }
3586
3589
  function transformGroup(x, y, side) {
3587
3590
  const acc = { lost: [], dropped: [] };
3588
- const r = (process.env.OLD_TSEQ ? tSeqOld : tSeq)([...x], [...y], side, acc);
3591
+ const r = tSeq([...x], [...y], side, acc);
3589
3592
  if (blocked(r)) return r;
3590
3593
  return { op: r[0], lost: [...new Set(acc.lost)], dropped: [...new Set(acc.dropped)] };
3591
3594
  }