@silurus/ooxml 0.20.0 → 0.21.0

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.
@@ -285,11 +285,11 @@ function ee(e, t, n) {
285
285
  let r = t.cellXfs[e.styleIndex ?? 0]?.numFmtId ?? 0, i = t.numFmts?.find((e) => e.numFmtId === r)?.formatCode ?? null, a = n?.numFmtId ?? r, o = n?.formatCode ?? i;
286
286
  if (e.value.type !== "number") {
287
287
  let t = A(e.value);
288
- return o ? te(t, o) : t;
288
+ return o ? j(t, o) : t;
289
289
  }
290
- return ce(ne(e.formula) ?? e.value.number, a, o);
290
+ return ie(te(e.formula) ?? e.value.number, a, o);
291
291
  }
292
- function te(e, t) {
292
+ function j(e, t) {
293
293
  let n = t.split(";");
294
294
  if (n.length < 4) return e;
295
295
  let r = n[3];
@@ -308,12 +308,12 @@ function te(e, t) {
308
308
  }
309
309
  return i;
310
310
  }
311
- function ne(e) {
311
+ function te(e) {
312
312
  if (!e) return null;
313
313
  let t = e.trim().replace(/^=/, "").toUpperCase().replace(/\s+/g, "");
314
314
  return t === "TODAY()" ? Xe() : t === "NOW()" ? Ze() : null;
315
315
  }
316
- var re = {
316
+ var ne = {
317
317
  14: "m/d/yyyy",
318
318
  15: "d-mmm-yy",
319
319
  16: "d-mmm",
@@ -337,7 +337,7 @@ var re = {
337
337
  56: "m\"月\"d\"日\"",
338
338
  57: "[$-411]ge.m.d",
339
339
  58: "[$-411]ggge\"年\"m\"月\"d\"日\""
340
- }, ie = [
340
+ }, M = [
341
341
  "January",
342
342
  "February",
343
343
  "March",
@@ -350,7 +350,7 @@ var re = {
350
350
  "October",
351
351
  "November",
352
352
  "December"
353
- ], ae = [
353
+ ], re = [
354
354
  "Sunday",
355
355
  "Monday",
356
356
  "Tuesday",
@@ -358,7 +358,7 @@ var re = {
358
358
  "Thursday",
359
359
  "Friday",
360
360
  "Saturday"
361
- ], j = [
361
+ ], N = [
362
362
  "日",
363
363
  "月",
364
364
  "火",
@@ -366,7 +366,7 @@ var re = {
366
366
  "木",
367
367
  "金",
368
368
  "土"
369
- ], oe = [
369
+ ], P = [
370
370
  "日曜日",
371
371
  "月曜日",
372
372
  "火曜日",
@@ -374,7 +374,7 @@ var re = {
374
374
  "木曜日",
375
375
  "金曜日",
376
376
  "土曜日"
377
- ], M = [
377
+ ], F = [
378
378
  {
379
379
  start: new Date(Date.UTC(2019, 4, 1)),
380
380
  abbr: "R",
@@ -406,14 +406,14 @@ var re = {
406
406
  long: "明治"
407
407
  }
408
408
  ];
409
- function N(e) {
410
- for (let t of M) if (e.getTime() >= t.start.getTime()) return {
409
+ function I(e) {
410
+ for (let t of F) if (e.getTime() >= t.start.getTime()) return {
411
411
  abbr: t.abbr,
412
412
  short: t.short,
413
413
  long: t.long,
414
414
  year: e.getUTCFullYear() - t.start.getUTCFullYear() + 1
415
415
  };
416
- let t = M[M.length - 1];
416
+ let t = F[F.length - 1];
417
417
  return {
418
418
  abbr: t.abbr,
419
419
  short: t.short,
@@ -421,11 +421,11 @@ function N(e) {
421
421
  year: e.getUTCFullYear()
422
422
  };
423
423
  }
424
- function P(e) {
424
+ function L(e) {
425
425
  return /* @__PURE__ */ new Date((e - 25569) * 86400 * 1e3);
426
426
  }
427
- function F(e, t) {
428
- let n = P(e), r = n.getUTCFullYear(), i = n.getUTCMonth() + 1, a = n.getUTCDate(), o = n.getUTCDay(), s = n.getUTCHours(), c = n.getUTCMinutes(), l = n.getUTCSeconds(), u = t.split(";")[0], d = /am\/pm|a\/p/i.test(u), f = null, p = () => f ??= N(n), m = "", h = 0, g = !1;
427
+ function R(e, t) {
428
+ let n = L(e), r = n.getUTCFullYear(), i = n.getUTCMonth() + 1, a = n.getUTCDate(), o = n.getUTCDay(), s = n.getUTCHours(), c = n.getUTCMinutes(), l = n.getUTCSeconds(), u = t.split(";")[0], d = /am\/pm|a\/p/i.test(u), f = null, p = () => f ??= I(n), m = "", h = 0, g = !1;
429
429
  for (; h < u.length;) {
430
430
  let t = u[h];
431
431
  if (t === "\"") {
@@ -453,11 +453,11 @@ function F(e, t) {
453
453
  let e = 0;
454
454
  for (; h < u.length && u[h].toLowerCase() === "m";) e++, h++;
455
455
  let t = u.slice(h).replace(/\[[^\]]*\]/g, "");
456
- g || /^:s/i.test(t) ? m += e >= 2 ? String(c).padStart(2, "0") : String(c) : e === 1 ? m += String(i) : e === 2 ? m += String(i).padStart(2, "0") : e === 3 ? m += ie[i - 1].slice(0, 3) : e === 4 ? m += ie[i - 1] : m += ie[i - 1][0], g = !1;
456
+ g || /^:s/i.test(t) ? m += e >= 2 ? String(c).padStart(2, "0") : String(c) : e === 1 ? m += String(i) : e === 2 ? m += String(i).padStart(2, "0") : e === 3 ? m += M[i - 1].slice(0, 3) : e === 4 ? m += M[i - 1] : m += M[i - 1][0], g = !1;
457
457
  } else if (t === "d" || t === "D") {
458
458
  let e = 0;
459
459
  for (; h < u.length && u[h].toLowerCase() === "d";) e++, h++;
460
- e === 1 ? m += String(a) : e === 2 ? m += String(a).padStart(2, "0") : e === 3 ? m += ae[o].slice(0, 3) : m += ae[o], g = !1;
460
+ e === 1 ? m += String(a) : e === 2 ? m += String(a).padStart(2, "0") : e === 3 ? m += re[o].slice(0, 3) : m += re[o], g = !1;
461
461
  } else if (t === "h" || t === "H") {
462
462
  let e = 0;
463
463
  for (; h < u.length && u[h].toLowerCase() === "h";) e++, h++;
@@ -484,48 +484,48 @@ function F(e, t) {
484
484
  m += e >= 2 ? String(t).padStart(2, "0") : String(t), g = !1;
485
485
  } else if (t === "A" || t === "a") {
486
486
  let e = u.slice(h).toUpperCase();
487
- e.startsWith("AAAA") ? (m += oe[o], h += 4) : e.startsWith("AAA") ? (m += j[o], h += 3) : e.startsWith("AM/PM") ? (m += s < 12 ? "AM" : "PM", h += 5) : e.startsWith("A/P") ? (m += s < 12 ? "A" : "P", h += 3) : (m += t, h++), g = !1;
487
+ e.startsWith("AAAA") ? (m += P[o], h += 4) : e.startsWith("AAA") ? (m += N[o], h += 3) : e.startsWith("AM/PM") ? (m += s < 12 ? "AM" : "PM", h += 5) : e.startsWith("A/P") ? (m += s < 12 ? "A" : "P", h += 3) : (m += t, h++), g = !1;
488
488
  } else m += t, h++, t !== ":" && t !== "/" && t !== "-" && t !== "." && t !== " " && (g = !1);
489
489
  }
490
490
  return m;
491
491
  }
492
- function se(e) {
492
+ function z(e) {
493
493
  if (/\[[hms]+\]/i.test(e)) return !0;
494
494
  let t = e.replace(/"[^"]*"/g, "").replace(/\[[^\]]*\]/g, "");
495
495
  return /[yd]/i.test(t) || /a{3,}/i.test(t);
496
496
  }
497
- function ce(e, t, n) {
498
- let r = re[t];
499
- if (r) return F(e, r);
500
- if (n) return se(n) ? F(e, n) : B(e, n);
497
+ function ie(e, t, n) {
498
+ let r = ne[t];
499
+ if (r) return R(e, r);
500
+ if (n) return z(n) ? R(e, n) : U(e, n);
501
501
  switch (t) {
502
502
  case 0: return String(e);
503
503
  case 1: return Math.round(e).toString();
504
504
  case 2: return e.toFixed(2);
505
- case 3: return I(e, 0);
506
- case 4: return I(e, 2);
505
+ case 3: return ae(e, 0);
506
+ case 4: return ae(e, 2);
507
507
  case 9: return Math.round(e * 100) + "%";
508
508
  case 10: return (e * 100).toFixed(2) + "%";
509
509
  case 11: return e.toExponential(2);
510
510
  case 37:
511
- case 38: return I(e, 0);
511
+ case 38: return ae(e, 0);
512
512
  case 39:
513
- case 40: return I(e, 2);
513
+ case 40: return ae(e, 2);
514
514
  case 49: return String(e);
515
515
  default: return String(e);
516
516
  }
517
517
  }
518
- function I(e, t) {
518
+ function ae(e, t) {
519
519
  return e.toLocaleString("en-US", {
520
520
  minimumFractionDigits: t,
521
521
  maximumFractionDigits: t
522
522
  });
523
523
  }
524
- function L(e) {
524
+ function B(e) {
525
525
  let t = e.match(/\.([0#]+)/);
526
526
  return t ? t[1].length : 0;
527
527
  }
528
- function R(e) {
528
+ function V(e) {
529
529
  let t = [], n = "", r = !1, i = !1, a = (e) => {
530
530
  if (!e) return;
531
531
  let n = t[t.length - 1];
@@ -562,39 +562,39 @@ function R(e) {
562
562
  numSpec: n
563
563
  };
564
564
  }
565
- function z(e, t) {
566
- let n = t.includes(",") && /[#0]/.test(t), r = L(t);
567
- return n ? I(e, r) : t.includes(".") ? e.toFixed(r) : /[#0?]/.test(t) ? Math.round(e).toString() : String(e);
565
+ function H(e, t) {
566
+ let n = t.includes(",") && /[#0]/.test(t), r = B(t);
567
+ return n ? ae(e, r) : t.includes(".") ? e.toFixed(r) : /[#0?]/.test(t) ? Math.round(e).toString() : String(e);
568
568
  }
569
- function B(e, t) {
569
+ function U(e, t) {
570
570
  let n = t.split(";"), r;
571
571
  r = e > 0 ? n[0] : e < 0 ? n.length > 1 ? n[1] : n[0] : n.length > 2 ? n[2] : n[0];
572
- let { tokens: i, numSpec: a } = R(r), o = i.some((e) => e.kind === "percent"), s = i.find((e) => e.kind === "sci"), c = e;
572
+ let { tokens: i, numSpec: a } = V(r), o = i.some((e) => e.kind === "percent"), s = i.find((e) => e.kind === "sci"), c = e;
573
573
  o && (c *= 100);
574
574
  let l, u = "";
575
575
  if (s) {
576
- let e = L(a), [t, n] = c.toExponential(e).split("e");
576
+ let e = B(a), [t, n] = c.toExponential(e).split("e");
577
577
  l = t;
578
578
  let r = parseInt(n, 10);
579
579
  u = (r < 0 ? "-" : s.expSign ? "+" : "") + String(Math.abs(r)).padStart(2, "0");
580
- } else l = z(c, a);
580
+ } else l = H(c, a);
581
581
  let d = "", f = !1;
582
582
  for (let e of i) e.kind === "lit" ? d += e.text : e.kind === "percent" ? d += "%" : e.kind === "num" ? (d += l, f = !0) : e.kind === "sci" && (d += "E" + u);
583
583
  return !f && (a.length > 0 || s) && (d += l), d;
584
584
  }
585
- function le(e, t, n) {
585
+ function oe(e, t, n) {
586
586
  let r = [];
587
- for (let i of t.split("\n")) r.push(...ue(e, i, n));
587
+ for (let i of t.split("\n")) r.push(...se(e, i, n));
588
588
  return r;
589
589
  }
590
- function V(e) {
590
+ function W(e) {
591
591
  return e >= 12288 && e <= 40959 || e >= 63744 && e <= 64255 || e >= 44032 && e <= 55215 || e >= 65280 && e <= 65519;
592
592
  }
593
- function ue(e, t, n) {
593
+ function se(e, t, n) {
594
594
  let r = [], i = [], a = 0;
595
595
  for (; a < t.length;) {
596
596
  let e = t[a], n = e.codePointAt(0) ?? 0;
597
- if (V(n)) i.push(e), a += n > 65535 ? 2 : 1;
597
+ if (W(n)) i.push(e), a += n > 65535 ? 2 : 1;
598
598
  else if (e === " ") {
599
599
  let e = a;
600
600
  for (; e < t.length && t[e] === " ";) e++;
@@ -603,7 +603,7 @@ function ue(e, t, n) {
603
603
  let e = a;
604
604
  for (; e < t.length;) {
605
605
  let n = t[e], r = n.codePointAt(0) ?? 0;
606
- if (n === " " || V(r)) break;
606
+ if (n === " " || W(r)) break;
607
607
  e += r > 65535 ? 2 : 1;
608
608
  }
609
609
  i.push(t.slice(a, e)), a = e;
@@ -620,7 +620,7 @@ function ue(e, t, n) {
620
620
  }
621
621
  return r.push(o), r;
622
622
  }
623
- function de(e, t, n, r, i) {
623
+ function ce(e, t, n, r, i) {
624
624
  let a = [], o = [], s = 0, c = 0, l = () => {
625
625
  o.length !== 0 && (a.push({
626
626
  segments: o,
@@ -660,7 +660,7 @@ function de(e, t, n, r, i) {
660
660
  }
661
661
  return l(), a;
662
662
  }
663
- function H(e) {
663
+ function le(e) {
664
664
  let t = "";
665
665
  for (; e > 0;) {
666
666
  let n = (e - 1) % 26;
@@ -668,22 +668,22 @@ function H(e) {
668
668
  }
669
669
  return t;
670
670
  }
671
- function fe(e, t, n) {
671
+ function G(e, t, n) {
672
672
  for (let r of e) if (t >= r.top && t <= r.bottom && n >= r.left && n <= r.right) return !0;
673
673
  return !1;
674
674
  }
675
- function pe(e) {
675
+ function ue(e) {
676
676
  return e && e.value.type === "number" ? e.value.number : null;
677
677
  }
678
- function me(e) {
678
+ function de(e) {
679
679
  return e && e.value.type === "text" ? e.value.text : null;
680
680
  }
681
- function he(e, t) {
681
+ function fe(e, t) {
682
682
  let n = [];
683
- for (let r of e.rows) for (let e of r.cells) e.value.type === "number" && fe(t, e.row, e.col) && n.push(e.value.number);
683
+ for (let r of e.rows) for (let e of r.cells) e.value.type === "number" && G(t, e.row, e.col) && n.push(e.value.number);
684
684
  return n;
685
685
  }
686
- function ge(e, t) {
686
+ function pe(e, t) {
687
687
  let n = t.length ? Math.min(...t) : 0, r = t.length ? Math.max(...t) : 0, i = e.value == null ? NaN : parseFloat(e.value);
688
688
  switch (e.kind) {
689
689
  case "min": return n;
@@ -701,20 +701,20 @@ function ge(e, t) {
701
701
  default: return isNaN(i) ? 0 : i;
702
702
  }
703
703
  }
704
- function _e(e) {
704
+ function me(e) {
705
705
  let t = [], n = /* @__PURE__ */ new Map();
706
706
  for (let t of e.rows) for (let e of t.cells) n.set(`${e.row}:${e.col}`, e);
707
707
  let r = /* @__PURE__ */ new Map();
708
708
  for (let t of e.definedNames ?? []) r.set(t.name, t);
709
709
  for (let n of e.conditionalFormats ?? []) {
710
- let r = he(e, n.sqref);
710
+ let r = fe(e, n.sqref);
711
711
  for (let e of n.rules) {
712
712
  let i = {
713
713
  rule: e,
714
714
  sqref: n.sqref
715
715
  };
716
- if (e.type === "colorScale") i.scaleStops = e.stops.map((e) => ge(e, r));
717
- else if (e.type === "dataBar") i.barMin = ge(e.min, r), i.barMax = ge(e.max, r);
716
+ if (e.type === "colorScale") i.scaleStops = e.stops.map((e) => pe(e, r));
717
+ else if (e.type === "dataBar") i.barMin = pe(e.min, r), i.barMax = pe(e.max, r);
718
718
  else if (e.type === "top10") {
719
719
  let t = [...r].sort((e, t) => e - t), n = t.length;
720
720
  if (n > 0) {
@@ -725,7 +725,7 @@ function _e(e) {
725
725
  } else i.top10Threshold = e.top ? t[Math.max(0, n - r)] : t[Math.min(n - 1, r - 1)];
726
726
  i.top10IsTop = e.top;
727
727
  }
728
- } else e.type === "aboveAverage" ? r.length > 0 && (i.avgValue = r.reduce((e, t) => e + t, 0) / r.length, i.avgIsAbove = e.aboveAverage) : e.type === "iconSet" && (i.iconThresholds = e.cfvos.map((e) => ge(e, r)));
728
+ } else e.type === "aboveAverage" ? r.length > 0 && (i.avgValue = r.reduce((e, t) => e + t, 0) / r.length, i.avgIsAbove = e.aboveAverage) : e.type === "iconSet" && (i.iconThresholds = e.cfvos.map((e) => pe(e, r)));
729
729
  t.push(i);
730
730
  }
731
731
  }
@@ -736,7 +736,7 @@ function _e(e) {
736
736
  definedNames: r
737
737
  };
738
738
  }
739
- function ve(e, t, n) {
739
+ function he(e, t, n) {
740
740
  switch (t) {
741
741
  case "greaterThan": return e > (n[0] ?? 0);
742
742
  case "greaterThanOrEqual": return e >= (n[0] ?? 0);
@@ -749,13 +749,13 @@ function ve(e, t, n) {
749
749
  default: return !1;
750
750
  }
751
751
  }
752
- function ye(e) {
752
+ function ge(e) {
753
753
  let t = e.trim();
754
754
  if (t.length >= 2 && t.startsWith("\"") && t.endsWith("\"")) return { text: t.slice(1, -1).replace(/""/g, "\"") };
755
755
  let n = parseFloat(t);
756
756
  return isNaN(n) ? { text: t } : { num: n };
757
757
  }
758
- function be(e, t, n) {
758
+ function _e(e, t, n) {
759
759
  let r = n[0] ?? "", i = n[1] ?? "", a = (e) => e.toLowerCase();
760
760
  switch (t) {
761
761
  case "equal": return a(e) === a(r);
@@ -769,21 +769,21 @@ function be(e, t, n) {
769
769
  default: return !1;
770
770
  }
771
771
  }
772
- function xe(e, t, n) {
772
+ function ve(e, t, n) {
773
773
  let r = e.replace("#", ""), i = t.replace("#", ""), a = parseInt(r.slice(0, 2), 16), o = parseInt(r.slice(2, 4), 16), s = parseInt(r.slice(4, 6), 16), c = parseInt(i.slice(0, 2), 16), l = parseInt(i.slice(2, 4), 16), u = parseInt(i.slice(4, 6), 16), d = Math.round(a + (c - a) * n), f = Math.round(o + (l - o) * n), p = Math.round(s + (u - s) * n);
774
774
  return `#${d.toString(16).padStart(2, "0").toUpperCase()}${f.toString(16).padStart(2, "0").toUpperCase()}${p.toString(16).padStart(2, "0").toUpperCase()}`;
775
775
  }
776
- function U(e, t, n) {
776
+ function ye(e, t, n) {
777
777
  if (!t.length) return "#FFFFFF";
778
778
  if (e <= n[0]) return t[0].color;
779
779
  if (e >= n[n.length - 1]) return t[t.length - 1].color;
780
780
  for (let r = 1; r < n.length; r++) if (e <= n[r]) {
781
781
  let i = n[r - 1], a = n[r], o = a === i ? 0 : (e - i) / (a - i);
782
- return xe(t[r - 1].color, t[r].color, o);
782
+ return ve(t[r - 1].color, t[r].color, o);
783
783
  }
784
784
  return t[t.length - 1].color;
785
785
  }
786
- function W(e, t) {
786
+ function be(e, t) {
787
787
  if (t && (t.fill && !e.fill && (e.fill = t.fill), t.font?.color && e.fontColor == null && (e.fontColor = t.font.color), t.font?.bold && e.fontBold == null && (e.fontBold = !0), t.font?.italic && e.fontItalic == null && (e.fontItalic = !0), t.font?.underline && e.fontUnderline == null && (e.fontUnderline = !0), t.font?.strike && e.fontStrike == null && (e.fontStrike = !0), t.numFmt && e.numFmt == null && (e.numFmt = {
788
788
  numFmtId: t.numFmt.numFmtId,
789
789
  formatCode: t.numFmt.formatCode || null
@@ -799,16 +799,16 @@ function W(e, t) {
799
799
  };
800
800
  }
801
801
  }
802
- function Se(e, t, n, r, i) {
802
+ function xe(e, t, n, r, i) {
803
803
  let a = {};
804
804
  if (!r.compiled.length) return a;
805
805
  for (let o of r.compiled) {
806
- if (!fe(o.sqref, t, n)) continue;
807
- let s = o.rule, c = pe(e);
806
+ if (!G(o.sqref, t, n)) continue;
807
+ let s = o.rule, c = ue(e);
808
808
  if (s.type === "expression") {
809
809
  let e = o.sqref[0];
810
810
  if (!e) continue;
811
- if (we(s.formula, {
811
+ if (Ce(s.formula, {
812
812
  row: t,
813
813
  col: n,
814
814
  anchorRow: e.top,
@@ -816,18 +816,18 @@ function Se(e, t, n, r, i) {
816
816
  cellIndex: r.cellIndex,
817
817
  definedNames: r.definedNames,
818
818
  depth: 0
819
- }) && (W(a, s.dxfId == null ? null : i[s.dxfId]), s.stopIfTrue)) break;
819
+ }) && (be(a, s.dxfId == null ? null : i[s.dxfId]), s.stopIfTrue)) break;
820
820
  continue;
821
821
  }
822
822
  if (s.type === "cellIs") {
823
- let t = s.formulas.map(ye), n = me(e), r = !1;
824
- c != null && t.every((e) => e.num != null) ? r = ve(c, s.operator, t.map((e) => e.num)) : n != null && t.every((e) => e.text != null) && (r = be(n, s.operator, t.map((e) => e.text))), r && W(a, s.dxfId == null ? null : i[s.dxfId]);
823
+ let t = s.formulas.map(ge), n = de(e), r = !1;
824
+ c != null && t.every((e) => e.num != null) ? r = he(c, s.operator, t.map((e) => e.num)) : n != null && t.every((e) => e.text != null) && (r = _e(n, s.operator, t.map((e) => e.text))), r && be(a, s.dxfId == null ? null : i[s.dxfId]);
825
825
  } else if (s.type === "top10") {
826
826
  if (c == null || o.top10Threshold == null) continue;
827
- (o.top10IsTop ? c >= o.top10Threshold : c <= o.top10Threshold) && W(a, s.dxfId == null ? null : i[s.dxfId]);
827
+ (o.top10IsTop ? c >= o.top10Threshold : c <= o.top10Threshold) && be(a, s.dxfId == null ? null : i[s.dxfId]);
828
828
  } else if (s.type === "aboveAverage") {
829
829
  if (c == null || o.avgValue == null) continue;
830
- (o.avgIsAbove ? c > o.avgValue : c < o.avgValue) && W(a, s.dxfId == null ? null : i[s.dxfId]);
830
+ (o.avgIsAbove ? c > o.avgValue : c < o.avgValue) && be(a, s.dxfId == null ? null : i[s.dxfId]);
831
831
  } else if (s.type === "iconSet") {
832
832
  if (c == null || !o.iconThresholds?.length) continue;
833
833
  let e = o.iconThresholds, t = e.length, n = 0;
@@ -844,7 +844,7 @@ function Se(e, t, n, r, i) {
844
844
  };
845
845
  } else if (s.type === "colorScale") {
846
846
  if (c == null || !o.scaleStops || a.fill) continue;
847
- let e = U(c, s.stops, o.scaleStops);
847
+ let e = ye(c, s.stops, o.scaleStops);
848
848
  a.fill = {
849
849
  patternType: "solid",
850
850
  fgColor: e,
@@ -862,37 +862,37 @@ function Se(e, t, n, r, i) {
862
862
  }
863
863
  return a;
864
864
  }
865
- function G(e) {
865
+ function K(e) {
866
866
  return Array.isArray(e) ? e : [e];
867
867
  }
868
- function K(e) {
868
+ function q(e) {
869
869
  return Array.isArray(e) ? e[0] ?? 0 : e;
870
870
  }
871
- var Ce = 8;
872
- function we(e, t) {
871
+ var Se = 8;
872
+ function Ce(e, t) {
873
873
  try {
874
- return Te(je(e, t));
874
+ return we(Ae(e, t));
875
875
  } catch {
876
876
  return !1;
877
877
  }
878
878
  }
879
- function Te(e) {
880
- let t = K(e);
879
+ function we(e) {
880
+ let t = q(e);
881
881
  return typeof t == "boolean" ? t : typeof t == "number" ? t !== 0 : typeof t == "string" ? t.length > 0 && t.toUpperCase() !== "FALSE" : !1;
882
882
  }
883
- function q(e) {
884
- let t = K(e);
883
+ function J(e) {
884
+ let t = q(e);
885
885
  if (typeof t == "number") return t;
886
886
  if (typeof t == "boolean") return +!!t;
887
887
  if (t == null) return 0;
888
888
  let n = parseFloat(String(t));
889
889
  return isNaN(n) ? 0 : n;
890
890
  }
891
- function J(e) {
892
- let t = K(e);
891
+ function Y(e) {
892
+ let t = q(e);
893
893
  return t == null ? "" : typeof t == "boolean" ? t ? "TRUE" : "FALSE" : String(t);
894
894
  }
895
- var Ee = new Set([
895
+ var Te = new Set([
896
896
  "<",
897
897
  ">",
898
898
  "=",
@@ -904,7 +904,7 @@ var Ee = new Set([
904
904
  "^",
905
905
  "%"
906
906
  ]);
907
- function De(e) {
907
+ function Ee(e) {
908
908
  let t = [], n = 0, r = e;
909
909
  for (; n < r.length;) {
910
910
  let e = r[n];
@@ -965,7 +965,7 @@ function De(e) {
965
965
  }), n = e;
966
966
  continue;
967
967
  }
968
- if (Ee.has(e)) {
968
+ if (Te.has(e)) {
969
969
  (e === "<" || e === ">") && (r[n + 1] === "=" || e === "<" && r[n + 1] === ">") ? (t.push({
970
970
  kind: "op",
971
971
  text: r.slice(n, n + 2)
@@ -975,12 +975,12 @@ function De(e) {
975
975
  }), n++);
976
976
  continue;
977
977
  }
978
- if (e === "$" || Oe(e)) {
978
+ if (e === "$" || De(e)) {
979
979
  let e = n;
980
- for (; e < r.length && (r[e] === "$" || ke(r[e]));) e++;
980
+ for (; e < r.length && (r[e] === "$" || Oe(r[e]));) e++;
981
981
  let i = r.slice(n, e);
982
982
  n = e;
983
- let a = Ae(i);
983
+ let a = ke(i);
984
984
  if (a) t.push({
985
985
  kind: "ref",
986
986
  text: i,
@@ -1002,13 +1002,13 @@ function De(e) {
1002
1002
  }
1003
1003
  return t;
1004
1004
  }
1005
- function Oe(e) {
1005
+ function De(e) {
1006
1006
  return e >= "A" && e <= "Z" || e >= "a" && e <= "z" || e === "_";
1007
1007
  }
1008
- function ke(e) {
1009
- return Oe(e) || e >= "0" && e <= "9" || e === ".";
1008
+ function Oe(e) {
1009
+ return De(e) || e >= "0" && e <= "9" || e === ".";
1010
1010
  }
1011
- function Ae(e) {
1011
+ function ke(e) {
1012
1012
  let t = 0, n = !1, r = !1;
1013
1013
  e[t] === "$" && (n = !0, t++);
1014
1014
  let i = t;
@@ -1028,13 +1028,13 @@ function Ae(e) {
1028
1028
  row: s
1029
1029
  };
1030
1030
  }
1031
- function je(e, t) {
1031
+ function Ae(e, t) {
1032
1032
  return Me({
1033
- toks: De(e),
1033
+ toks: Ee(e),
1034
1034
  pos: 0
1035
1035
  }, t);
1036
1036
  }
1037
- function Y(e) {
1037
+ function je(e) {
1038
1038
  return e.toks[e.pos];
1039
1039
  }
1040
1040
  function X(e) {
@@ -1044,7 +1044,7 @@ function Me(e, t) {
1044
1044
  return Ne(e, t);
1045
1045
  }
1046
1046
  function Ne(e, t) {
1047
- let n = Pe(e, t), r = Y(e);
1047
+ let n = Pe(e, t), r = je(e);
1048
1048
  if (r && r.kind === "op" && (r.text === "<" || r.text === ">" || r.text === "<=" || r.text === ">=" || r.text === "=" || r.text === "<>")) {
1049
1049
  X(e);
1050
1050
  let i = Pe(e, t);
@@ -1055,16 +1055,16 @@ function Ne(e, t) {
1055
1055
  function Pe(e, t) {
1056
1056
  let n = Ie(e, t);
1057
1057
  for (;;) {
1058
- let r = Y(e);
1058
+ let r = je(e);
1059
1059
  if (!r || r.kind !== "op" || r.text !== "&") break;
1060
1060
  X(e);
1061
1061
  let i = Ie(e, t);
1062
- n = J(n) + J(i);
1062
+ n = Y(n) + Y(i);
1063
1063
  }
1064
1064
  return n;
1065
1065
  }
1066
1066
  function Fe(e, t, n) {
1067
- let r = typeof t == "string" && isNaN(parseFloat(t)) ? null : q(t), i = typeof n == "string" && isNaN(parseFloat(n)) ? null : q(n);
1067
+ let r = typeof t == "string" && isNaN(parseFloat(t)) ? null : J(t), i = typeof n == "string" && isNaN(parseFloat(n)) ? null : J(n);
1068
1068
  if (r !== null && i !== null) switch (e) {
1069
1069
  case "<": return r < i;
1070
1070
  case ">": return r > i;
@@ -1087,32 +1087,32 @@ function Fe(e, t, n) {
1087
1087
  function Ie(e, t) {
1088
1088
  let n = Le(e, t);
1089
1089
  for (;;) {
1090
- let r = Y(e);
1090
+ let r = je(e);
1091
1091
  if (!r || r.kind !== "op" || r.text !== "+" && r.text !== "-") break;
1092
1092
  X(e);
1093
1093
  let i = Le(e, t);
1094
- n = r.text === "+" ? q(n) + q(i) : q(n) - q(i);
1094
+ n = r.text === "+" ? J(n) + J(i) : J(n) - J(i);
1095
1095
  }
1096
1096
  return n;
1097
1097
  }
1098
1098
  function Le(e, t) {
1099
1099
  let n = Re(e, t);
1100
1100
  for (;;) {
1101
- let r = Y(e);
1101
+ let r = je(e);
1102
1102
  if (!r || r.kind !== "op" || r.text !== "*" && r.text !== "/") break;
1103
1103
  X(e);
1104
1104
  let i = Re(e, t);
1105
- if (r.text === "*") n = q(n) * q(i);
1105
+ if (r.text === "*") n = J(n) * J(i);
1106
1106
  else {
1107
- let e = q(i);
1108
- n = e === 0 ? 0 : q(n) / e;
1107
+ let e = J(i);
1108
+ n = e === 0 ? 0 : J(n) / e;
1109
1109
  }
1110
1110
  }
1111
1111
  return n;
1112
1112
  }
1113
1113
  function Re(e, t) {
1114
- let n = Y(e);
1115
- return n && n.kind === "op" && n.text === "-" ? (X(e), -q(Re(e, t))) : n && n.kind === "op" && n.text === "+" ? (X(e), q(Re(e, t))) : ze(e, t);
1114
+ let n = je(e);
1115
+ return n && n.kind === "op" && n.text === "-" ? (X(e), -J(Re(e, t))) : n && n.kind === "op" && n.text === "+" ? (X(e), J(Re(e, t))) : ze(e, t);
1116
1116
  }
1117
1117
  function ze(e, t) {
1118
1118
  let n = X(e);
@@ -1126,7 +1126,7 @@ function ze(e, t) {
1126
1126
  return n;
1127
1127
  }
1128
1128
  if (n.kind === "ref") {
1129
- if (Y(e)?.kind === "colon") {
1129
+ if (je(e)?.kind === "colon") {
1130
1130
  X(e);
1131
1131
  let r = X(e);
1132
1132
  if (r?.kind !== "ref" || !r.ref) throw Error("range: expected ref after :");
@@ -1135,16 +1135,16 @@ function ze(e, t) {
1135
1135
  return Ve(n.ref, t);
1136
1136
  }
1137
1137
  if (n.kind === "name") {
1138
- if (Y(e)?.kind === "lparen") {
1138
+ if (je(e)?.kind === "lparen") {
1139
1139
  X(e);
1140
1140
  let r = [];
1141
- if (Y(e)?.kind !== "rparen") for (r.push(Me(e, t)); Y(e)?.kind === "comma";) X(e), r.push(Me(e, t));
1141
+ if (je(e)?.kind !== "rparen") for (r.push(Me(e, t)); je(e)?.kind === "comma";) X(e), r.push(Me(e, t));
1142
1142
  let i = X(e);
1143
1143
  if (!i || i.kind !== "rparen") throw Error("missing )");
1144
1144
  return We(n.text, r, t);
1145
1145
  }
1146
1146
  let r = t.definedNames.get(n.text);
1147
- return r && t.depth < Ce ? je(Be(r.formula), {
1147
+ return r && t.depth < Se ? Ae(Be(r.formula), {
1148
1148
  ...t,
1149
1149
  anchorRow: 1,
1150
1150
  anchorCol: 1,
@@ -1178,140 +1178,140 @@ function Ue(e) {
1178
1178
  }
1179
1179
  function We(e, t, n) {
1180
1180
  switch (e.toUpperCase()) {
1181
- case "AND": return t.flatMap(G).every((e) => Te(e));
1182
- case "OR": return t.flatMap(G).some((e) => Te(e));
1183
- case "NOT": return !Te(t[0]);
1184
- case "IF": return Te(t[0]) ? t[1] ?? !0 : t[2] ?? !1;
1181
+ case "AND": return t.flatMap(K).every((e) => we(e));
1182
+ case "OR": return t.flatMap(K).some((e) => we(e));
1183
+ case "NOT": return !we(t[0]);
1184
+ case "IF": return we(t[0]) ? t[1] ?? !0 : t[2] ?? !1;
1185
1185
  case "IFERROR": return t[0] == null ? t[1] ?? 0 : t[0];
1186
1186
  case "IFS":
1187
- for (let e = 0; e + 1 < t.length; e += 2) if (Te(t[e])) return t[e + 1];
1187
+ for (let e = 0; e + 1 < t.length; e += 2) if (we(t[e])) return t[e + 1];
1188
1188
  return null;
1189
1189
  case "TRUE": return !0;
1190
1190
  case "FALSE": return !1;
1191
1191
  case "ISBLANK": {
1192
- let e = K(t[0]);
1192
+ let e = q(t[0]);
1193
1193
  return e == null || e === "";
1194
1194
  }
1195
- case "ISNUMBER": return typeof K(t[0]) == "number";
1196
- case "ISTEXT": return typeof K(t[0]) == "string";
1197
- case "ISNONTEXT": return typeof K(t[0]) != "string";
1195
+ case "ISNUMBER": return typeof q(t[0]) == "number";
1196
+ case "ISTEXT": return typeof q(t[0]) == "string";
1197
+ case "ISNONTEXT": return typeof q(t[0]) != "string";
1198
1198
  case "ISERROR":
1199
1199
  case "ISERR":
1200
- case "ISNA": return K(t[0]) == null;
1201
- case "ISLOGICAL": return typeof K(t[0]) == "boolean";
1200
+ case "ISNA": return q(t[0]) == null;
1201
+ case "ISLOGICAL": return typeof q(t[0]) == "boolean";
1202
1202
  case "ROUNDDOWN": {
1203
- let e = q(t[0]), n = 10 ** q(t[1]);
1203
+ let e = J(t[0]), n = 10 ** J(t[1]);
1204
1204
  return (e >= 0 ? Math.floor(e * n) : Math.ceil(e * n)) / n;
1205
1205
  }
1206
1206
  case "ROUNDUP": {
1207
- let e = q(t[0]), n = 10 ** q(t[1]);
1207
+ let e = J(t[0]), n = 10 ** J(t[1]);
1208
1208
  return (e >= 0 ? Math.ceil(e * n) : Math.floor(e * n)) / n;
1209
1209
  }
1210
1210
  case "ROUND": {
1211
- let e = q(t[0]), n = 10 ** q(t[1]);
1211
+ let e = J(t[0]), n = 10 ** J(t[1]);
1212
1212
  return Math.round(e * n) / n;
1213
1213
  }
1214
- case "INT": return Math.floor(q(t[0]));
1214
+ case "INT": return Math.floor(J(t[0]));
1215
1215
  case "TRUNC": {
1216
- let e = q(t[0]), n = 10 ** q(t[1] ?? 0);
1216
+ let e = J(t[0]), n = 10 ** J(t[1] ?? 0);
1217
1217
  return (e >= 0 ? Math.floor(e * n) : Math.ceil(e * n)) / n;
1218
1218
  }
1219
1219
  case "CEILING": {
1220
- let e = q(t[0]), n = q(t[1] ?? 1);
1220
+ let e = J(t[0]), n = J(t[1] ?? 1);
1221
1221
  return n === 0 ? 0 : Math.ceil(e / n) * n;
1222
1222
  }
1223
1223
  case "FLOOR": {
1224
- let e = q(t[0]), n = q(t[1] ?? 1);
1224
+ let e = J(t[0]), n = J(t[1] ?? 1);
1225
1225
  return n === 0 ? 0 : Math.floor(e / n) * n;
1226
1226
  }
1227
1227
  case "MOD": {
1228
- let e = q(t[0]), n = q(t[1]);
1228
+ let e = J(t[0]), n = J(t[1]);
1229
1229
  return n === 0 ? null : e - Math.floor(e / n) * n;
1230
1230
  }
1231
- case "POWER": return q(t[0]) ** +q(t[1]);
1231
+ case "POWER": return J(t[0]) ** +J(t[1]);
1232
1232
  case "SQRT": {
1233
- let e = q(t[0]);
1233
+ let e = J(t[0]);
1234
1234
  return e < 0 ? null : Math.sqrt(e);
1235
1235
  }
1236
- case "ABS": return Math.abs(q(t[0]));
1236
+ case "ABS": return Math.abs(J(t[0]));
1237
1237
  case "SIGN": {
1238
- let e = q(t[0]);
1238
+ let e = J(t[0]);
1239
1239
  return e > 0 ? 1 : e < 0 ? -1 : 0;
1240
1240
  }
1241
- case "EXP": return Math.exp(q(t[0]));
1241
+ case "EXP": return Math.exp(J(t[0]));
1242
1242
  case "LN": {
1243
- let e = q(t[0]);
1243
+ let e = J(t[0]);
1244
1244
  return e <= 0 ? null : Math.log(e);
1245
1245
  }
1246
1246
  case "LOG10": {
1247
- let e = q(t[0]);
1247
+ let e = J(t[0]);
1248
1248
  return e <= 0 ? null : Math.log10(e);
1249
1249
  }
1250
1250
  case "MIN": {
1251
- let e = t.flatMap(G).filter((e) => typeof e == "number");
1251
+ let e = t.flatMap(K).filter((e) => typeof e == "number");
1252
1252
  return e.length ? Math.min(...e) : 0;
1253
1253
  }
1254
1254
  case "MAX": {
1255
- let e = t.flatMap(G).filter((e) => typeof e == "number");
1255
+ let e = t.flatMap(K).filter((e) => typeof e == "number");
1256
1256
  return e.length ? Math.max(...e) : 0;
1257
1257
  }
1258
- case "SUM": return t.flatMap(G).reduce((e, t) => e + (typeof t == "number" ? t : 0), 0);
1258
+ case "SUM": return t.flatMap(K).reduce((e, t) => e + (typeof t == "number" ? t : 0), 0);
1259
1259
  case "AVERAGE": {
1260
- let e = t.flatMap(G).filter((e) => typeof e == "number");
1260
+ let e = t.flatMap(K).filter((e) => typeof e == "number");
1261
1261
  return e.length ? e.reduce((e, t) => e + t, 0) / e.length : null;
1262
1262
  }
1263
- case "COUNT": return t.flatMap(G).filter((e) => typeof e == "number").length;
1264
- case "COUNTA": return t.flatMap(G).filter((e) => e != null && e !== "").length;
1265
- case "COUNTBLANK": return t.flatMap(G).filter((e) => e == null || e === "").length;
1266
- case "COUNTIF": return Ge(G(t[0]), t[1]);
1267
- case "SUMIF": return Ke(G(t[0]), t[1], t[2] === void 0 ? null : G(t[2]));
1263
+ case "COUNT": return t.flatMap(K).filter((e) => typeof e == "number").length;
1264
+ case "COUNTA": return t.flatMap(K).filter((e) => e != null && e !== "").length;
1265
+ case "COUNTBLANK": return t.flatMap(K).filter((e) => e == null || e === "").length;
1266
+ case "COUNTIF": return Ge(K(t[0]), t[1]);
1267
+ case "SUMIF": return Ke(K(t[0]), t[1], t[2] === void 0 ? null : K(t[2]));
1268
1268
  case "AVERAGEIF": {
1269
- let e = G(t[0]), n = Ke(e, t[1], t[2] === void 0 ? null : G(t[2])), r = Ge(e, t[1]);
1270
- return r === 0 ? null : q(n) / r;
1269
+ let e = K(t[0]), n = Ke(e, t[1], t[2] === void 0 ? null : K(t[2])), r = Ge(e, t[1]);
1270
+ return r === 0 ? null : J(n) / r;
1271
1271
  }
1272
- case "LEN": return J(t[0]).length;
1273
- case "LEFT": return J(t[0]).slice(0, Math.max(0, q(t[1] ?? 1)));
1272
+ case "LEN": return Y(t[0]).length;
1273
+ case "LEFT": return Y(t[0]).slice(0, Math.max(0, J(t[1] ?? 1)));
1274
1274
  case "RIGHT": {
1275
- let e = J(t[0]), n = Math.max(0, q(t[1] ?? 1));
1275
+ let e = Y(t[0]), n = Math.max(0, J(t[1] ?? 1));
1276
1276
  return n >= e.length ? e : e.slice(e.length - n);
1277
1277
  }
1278
1278
  case "MID": {
1279
- let e = J(t[0]), n = Math.max(1, q(t[1])) - 1, r = Math.max(0, q(t[2]));
1279
+ let e = Y(t[0]), n = Math.max(1, J(t[1])) - 1, r = Math.max(0, J(t[2]));
1280
1280
  return e.slice(n, n + r);
1281
1281
  }
1282
- case "UPPER": return J(t[0]).toUpperCase();
1283
- case "LOWER": return J(t[0]).toLowerCase();
1284
- case "TRIM": return J(t[0]).replace(/\s+/g, " ").trim();
1285
- case "EXACT": return J(t[0]) === J(t[1]);
1282
+ case "UPPER": return Y(t[0]).toUpperCase();
1283
+ case "LOWER": return Y(t[0]).toLowerCase();
1284
+ case "TRIM": return Y(t[0]).replace(/\s+/g, " ").trim();
1285
+ case "EXACT": return Y(t[0]) === Y(t[1]);
1286
1286
  case "FIND": {
1287
- let e = J(t[0]), n = J(t[1]), r = Math.max(1, q(t[2] ?? 1)) - 1, i = n.indexOf(e, r);
1287
+ let e = Y(t[0]), n = Y(t[1]), r = Math.max(1, J(t[2] ?? 1)) - 1, i = n.indexOf(e, r);
1288
1288
  return i < 0 ? null : i + 1;
1289
1289
  }
1290
1290
  case "SEARCH": {
1291
- let e = J(t[0]).toLowerCase(), n = J(t[1]).toLowerCase(), r = Math.max(1, q(t[2] ?? 1)) - 1, i = n.indexOf(e, r);
1291
+ let e = Y(t[0]).toLowerCase(), n = Y(t[1]).toLowerCase(), r = Math.max(1, J(t[2] ?? 1)) - 1, i = n.indexOf(e, r);
1292
1292
  return i < 0 ? null : i + 1;
1293
1293
  }
1294
1294
  case "CONCATENATE":
1295
- case "CONCAT": return t.flatMap(G).map((e) => e == null ? "" : typeof e == "boolean" ? e ? "TRUE" : "FALSE" : String(e)).join("");
1295
+ case "CONCAT": return t.flatMap(K).map((e) => e == null ? "" : typeof e == "boolean" ? e ? "TRUE" : "FALSE" : String(e)).join("");
1296
1296
  case "T": {
1297
- let e = K(t[0]);
1297
+ let e = q(t[0]);
1298
1298
  return typeof e == "string" ? e : "";
1299
1299
  }
1300
1300
  case "N": {
1301
- let e = K(t[0]);
1301
+ let e = q(t[0]);
1302
1302
  return typeof e == "number" ? e : typeof e == "boolean" ? +!!e : 0;
1303
1303
  }
1304
- case "VALUE": return q(t[0]);
1304
+ case "VALUE": return J(t[0]);
1305
1305
  case "ROW": return n.row;
1306
1306
  case "COLUMN": return n.col;
1307
1307
  case "TODAY": return Xe();
1308
1308
  case "NOW": return Ze();
1309
- case "DATE": return Qe(q(t[0]), q(t[1]), q(t[2]));
1310
- case "YEAR": return et(q(t[0])).y;
1311
- case "MONTH": return et(q(t[0])).m;
1312
- case "DAY": return et(q(t[0])).d;
1309
+ case "DATE": return Qe(J(t[0]), J(t[1]), J(t[2]));
1310
+ case "YEAR": return et(J(t[0])).y;
1311
+ case "MONTH": return et(J(t[0])).m;
1312
+ case "DAY": return et(J(t[0])).d;
1313
1313
  case "WEEKDAY": {
1314
- let e = $e(q(t[0])).getUTCDay(), n = q(t[1] ?? 1);
1314
+ let e = $e(J(t[0])).getUTCDay(), n = J(t[1] ?? 1);
1315
1315
  return n === 2 ? e === 0 ? 7 : e : n === 3 ? e === 0 ? 6 : e - 1 : e + 1;
1316
1316
  }
1317
1317
  default: return 0;
@@ -1331,7 +1331,7 @@ function Ke(e, t, n) {
1331
1331
  return a;
1332
1332
  }
1333
1333
  function qe(e) {
1334
- let t = K(e);
1334
+ let t = q(e);
1335
1335
  if (typeof t != "string") {
1336
1336
  let e = typeof t == "number" ? t : null;
1337
1337
  return (n) => e !== null && typeof n == "number" ? n === e : n === t;
@@ -1479,89 +1479,90 @@ function ct(e) {
1479
1479
  }
1480
1480
  function lt(e, t, n, i, a, o, s, c, l, u, d, f, p, h) {
1481
1481
  if (p <= 0 || h <= 0) return;
1482
- let { styles: x, cellMap: w, mergeAnchorMap: A, mergeSkipSet: te, cfContext: ne, cs: re, dpr: ie } = t, ae = a.length, j = o.length, oe = [], M = -s;
1483
- for (let e = 0; e < ae; e++) oe.push(M), M += a[e];
1484
- let N = [], P = -c;
1485
- for (let e = 0; e < j; e++) N.push(P), P += o[e];
1482
+ let { styles: x, cellMap: w, mergeAnchorMap: A, mergeSkipSet: j, cfContext: te, cs: ne, dpr: M } = t, re = a.length, N = o.length, P = [], F = -s;
1483
+ for (let e = 0; e < re; e++) P.push(F), F += a[e];
1484
+ let I = [], L = -c;
1485
+ for (let e = 0; e < N; e++) I.push(L), L += o[e];
1486
1486
  e.save(), e.beginPath(), e.rect(d, f, p, h), e.clip();
1487
+ let R = [];
1487
1488
  for (let r of t.worksheet.mergeCells ?? []) {
1488
1489
  let a = r.top, o = r.left;
1489
- if (a >= n && a < n + j && o >= i && o < i + ae || r.bottom < n || r.top >= n + j || r.right < i || r.left >= i + ae) continue;
1490
+ if (a >= n && a < n + N && o >= i && o < i + re || r.bottom < n || r.top >= n + N || r.right < i || r.left >= i + re) continue;
1490
1491
  let d = t.mergeAnchorMap.get(`${a}:${o}`);
1491
1492
  if (!d) continue;
1492
1493
  let f;
1493
- if (o >= i) f = l + oe[o - i];
1494
+ if (o >= i) f = l + P[o - i];
1494
1495
  else {
1495
1496
  let e = 0;
1496
- for (let n = o; n < i; n++) e += Math.round(g(t.worksheet.colWidths[n] ?? t.worksheet.defaultColWidth) * re);
1497
+ for (let n = o; n < i; n++) e += Math.round(g(t.worksheet.colWidths[n] ?? t.worksheet.defaultColWidth) * ne);
1497
1498
  f = l - s - e;
1498
1499
  }
1499
1500
  let p;
1500
- if (a >= n) p = u + N[a - n];
1501
+ if (a >= n) p = u + I[a - n];
1501
1502
  else {
1502
1503
  let e = 0;
1503
- for (let r = a; r < n; r++) e += Math.round(_(t.worksheet.rowHeights[r] ?? t.worksheet.defaultRowHeight) * re);
1504
+ for (let r = a; r < n; r++) e += Math.round(_(t.worksheet.rowHeights[r] ?? t.worksheet.defaultRowHeight) * ne);
1504
1505
  p = u - c - e;
1505
1506
  }
1506
- let h = d.totalW, b = d.totalH, S = `${a}:${o}`, C = t.cellMap.get(S), { font: w, fill: T, border: E, xf: O } = k(x, C?.styleIndex ?? 0), A = Se(C, a, o, ne, x.dxfs ?? []), te = A.fill ?? T;
1507
- if (te.patternType !== "none" && te.patternType !== "" && te.fgColor && (e.fillStyle = v(te.fgColor), e.fillRect(f, p, h, b)), A.dataBar && A.dataBar.ratio > 0) {
1507
+ let h = d.totalW, b = d.totalH, S = `${a}:${o}`, C = t.cellMap.get(S), { font: w, fill: T, border: E, xf: O } = k(x, C?.styleIndex ?? 0), A = xe(C, a, o, te, x.dxfs ?? []), j = A.fill ?? T;
1508
+ if (j.patternType !== "none" && j.patternType !== "" && j.fgColor && (e.fillStyle = v(j.fgColor), e.fillRect(f, p, h, b)), A.dataBar && A.dataBar.ratio > 0) {
1508
1509
  let t = Math.max(0, (h - 4) * A.dataBar.ratio);
1509
1510
  y(e, A.dataBar.color, f + 2, p + 2, t, b - 4, A.dataBar.gradient);
1510
1511
  }
1511
1512
  if (vt(e, _t(gt(E, a, o, d.right, d.bottom, t.cellMap, x), A.border), f, p, h, b), !C) continue;
1512
- let ie = ee(C, x, A.numFmt);
1513
- if (!ie || ie === "0" && t.worksheet.showZeros === !1) continue;
1514
- let M = w.bold || !!A.fontBold, P = w.italic || !!A.fontItalic, F = w.underline || !!A.fontUnderline, se = w.strike || !!A.fontStrike;
1515
- e.font = D(M !== w.bold || P !== w.italic || F !== w.underline || se !== w.strike ? {
1513
+ let M = ee(C, x, A.numFmt);
1514
+ if (!M || M === "0" && t.worksheet.showZeros === !1) continue;
1515
+ let F = w.bold || !!A.fontBold, L = w.italic || !!A.fontItalic, R = w.underline || !!A.fontUnderline, z = w.strike || !!A.fontStrike;
1516
+ e.font = D(F !== w.bold || L !== w.italic || R !== w.underline || z !== w.strike ? {
1516
1517
  ...w,
1517
- bold: M,
1518
- italic: P,
1519
- underline: F,
1520
- strike: se
1521
- } : w, re);
1522
- let ce = t.hyperlinkMap.get(S) ? "#0563C1" : A.fontColor ?? w.color;
1523
- e.fillStyle = ce ? v(ce) : "#000000";
1524
- let I = C.value.type === "number", L = O.alignH ?? (I ? "right" : "left"), R = O.alignV ?? "bottom", z = O.indent ? Math.round(O.indent * w.size * m * .5) : 0, B = 3 + (L === "left" || !O.alignH ? z : 0);
1518
+ bold: F,
1519
+ italic: L,
1520
+ underline: R,
1521
+ strike: z
1522
+ } : w, ne);
1523
+ let ie = t.hyperlinkMap.get(S) ? "#0563C1" : A.fontColor ?? w.color;
1524
+ e.fillStyle = ie ? v(ie) : "#000000";
1525
+ let ae = C.value.type === "number", B = O.alignH ?? (ae ? "right" : "left"), V = O.alignV ?? "bottom", H = O.indent ? Math.round(O.indent * w.size * m * .5) : 0, U = 3 + (B === "left" || !O.alignH ? H : 0);
1525
1526
  e.save(), e.beginPath(), e.rect(f, p, h, b), e.clip();
1526
- let le;
1527
- L === "right" ? (le = f + h - 3, e.textAlign = "right") : L === "center" ? (le = f + h / 2, e.textAlign = "center") : (le = f + B, e.textAlign = "left");
1528
- let V;
1529
- R === "top" ? (e.textBaseline = "top", V = p + 2) : R === "center" ? (e.textBaseline = "middle", V = p + b / 2) : (e.textBaseline = "bottom", V = p + b - 2), e.fillText(ie, le, V), e.restore();
1530
- }
1531
- for (let s = 0; s < j; s++) {
1532
- let c = n + s, g = u + N[s], _ = o[s];
1533
- if (!(g + _ <= f || g >= f + h)) for (let n = 0; n < ae; n++) {
1534
- let o = i + n, u = l + oe[n], f = a[n];
1527
+ let oe;
1528
+ B === "right" ? (oe = f + h - 3, e.textAlign = "right") : B === "center" ? (oe = f + h / 2, e.textAlign = "center") : (oe = f + U, e.textAlign = "left");
1529
+ let W;
1530
+ V === "top" ? (e.textBaseline = "top", W = p + 2) : V === "center" ? (e.textBaseline = "middle", W = p + b / 2) : (e.textBaseline = "bottom", W = p + b - 2), e.fillText(M, oe, W), e.restore();
1531
+ }
1532
+ for (let s = 0; s < N; s++) {
1533
+ let c = n + s, g = u + I[s], _ = o[s];
1534
+ if (!(g + _ <= f || g >= f + h)) for (let n = 0; n < re; n++) {
1535
+ let o = i + n, u = l + P[n], f = a[n];
1535
1536
  if (u + f <= d || u >= d + p) continue;
1536
1537
  let h = `${c}:${o}`;
1537
- if (te.has(h)) continue;
1538
- let j = A.get(h), M = j ? j.totalW : f, N = j ? j.totalH : _, P = w.get(h), { font: F, fill: se, border: ce, xf: I } = k(x, P?.styleIndex ?? 0), L = Se(P, c, o, ne, x.dxfs ?? []), R = L.fill ?? se, z = t.tableStyleMap.get(h), B = z?.wholeTableDxf == null ? void 0 : (x.dxfs ?? [])[z.wholeTableDxf], V = z?.headerRowDxf == null ? void 0 : (x.dxfs ?? [])[z.headerRowDxf];
1539
- if (R.gradient && R.gradient.stops.length > 0) e.fillStyle = C(e, R.gradient, u, g, M, N), e.fillRect(u, g, M, N);
1540
- else if (R.patternType && R.patternType !== "none" && R.fgColor) {
1541
- let t = R.patternType, n = R.bgColor ?? "FFFFFF", r = S(e, t, R.fgColor, n);
1538
+ if (j.has(h)) continue;
1539
+ let N = A.get(h), F = N ? N.totalW : f, I = N ? N.totalH : _, L = w.get(h), { font: z, fill: ie, border: ae, xf: B } = k(x, L?.styleIndex ?? 0), V = xe(L, c, o, te, x.dxfs ?? []), H = V.fill ?? ie, U = t.tableStyleMap.get(h), W = U?.wholeTableDxf == null ? void 0 : (x.dxfs ?? [])[U.wholeTableDxf], se = U?.headerRowDxf == null ? void 0 : (x.dxfs ?? [])[U.headerRowDxf];
1540
+ if (H.gradient && H.gradient.stops.length > 0) e.fillStyle = C(e, H.gradient, u, g, F, I), e.fillRect(u, g, F, I);
1541
+ else if (H.patternType && H.patternType !== "none" && H.fgColor) {
1542
+ let t = H.patternType, n = H.bgColor ?? "FFFFFF", r = S(e, t, H.fgColor, n);
1542
1543
  if (r) e.fillStyle = r;
1543
1544
  else {
1544
1545
  let r = b(t);
1545
- e.fillStyle = r >= 1 ? v(R.fgColor) : E(R.fgColor, n, r);
1546
+ e.fillStyle = r >= 1 ? v(H.fgColor) : E(H.fgColor, n, r);
1546
1547
  }
1547
- e.fillRect(u, g, M, N);
1548
- } else z && z.isHeader && V?.fill?.fgColor ? (e.fillStyle = v(V.fill.fgColor), e.fillRect(u, g, M, N)) : z && !z.isHeader && !z.isTotals && B?.fill?.fgColor ? (e.fillStyle = v(B.fill.fgColor), e.fillRect(u, g, M, N)) : z && z.isBanded && (e.fillStyle = ct(z.accent), e.fillRect(u, g, M, N));
1549
- if (t.commentCells.has(h) && T(e, u, g, M, N), L.dataBar && L.dataBar.ratio > 0) {
1550
- let t = Math.max(0, (M - 4) * L.dataBar.ratio);
1551
- y(e, L.dataBar.color, u + 2, g + 2, t, N - 4, L.dataBar.gradient);
1548
+ e.fillRect(u, g, F, I);
1549
+ } else U && U.isHeader && se?.fill?.fgColor ? (e.fillStyle = v(se.fill.fgColor), e.fillRect(u, g, F, I)) : U && !U.isHeader && !U.isTotals && W?.fill?.fgColor ? (e.fillStyle = v(W.fill.fgColor), e.fillRect(u, g, F, I)) : U && U.isBanded && (e.fillStyle = ct(U.accent), e.fillRect(u, g, F, I));
1550
+ if (t.commentCells.has(h) && T(e, u, g, F, I), V.dataBar && V.dataBar.ratio > 0) {
1551
+ let t = Math.max(0, (F - 4) * V.dataBar.ratio);
1552
+ y(e, V.dataBar.color, u + 2, g + 2, t, I - 4, V.dataBar.gradient);
1552
1553
  }
1553
- let ue = t.sparklineMap.get(h);
1554
- if (ue && r(e, {
1554
+ let le = t.sparklineMap.get(h);
1555
+ if (le && r(e, {
1555
1556
  x: u,
1556
1557
  y: g,
1557
- w: M,
1558
- h: N
1559
- }, ue), t.worksheet.showGridlines !== !1) {
1560
- let t = .5 / ie;
1561
- e.strokeStyle = "#d0d0d0", e.lineWidth = .5, e.beginPath(), e.moveTo(u + M + t, g), e.lineTo(u + M + t, g + N), e.moveTo(u, g + N + t), e.lineTo(u + M, g + N + t), s === 0 && (e.moveTo(u, g + t), e.lineTo(u + M, g + t)), n === 0 && (e.moveTo(u + t, g), e.lineTo(u + t, g + N)), e.stroke();
1558
+ w: F,
1559
+ h: I
1560
+ }, le), t.worksheet.showGridlines !== !1) {
1561
+ let t = .5 / M;
1562
+ e.strokeStyle = "#d0d0d0", e.lineWidth = .5, e.beginPath(), e.moveTo(u + F + t, g), e.lineTo(u + F + t, g + I), e.moveTo(u, g + I + t), e.lineTo(u + F, g + I + t), s === 0 && (e.moveTo(u, g + t), e.lineTo(u + F, g + t)), n === 0 && (e.moveTo(u + t, g), e.lineTo(u + t, g + I)), e.stroke();
1562
1563
  }
1563
- if (vt(e, _t(j ? gt(ce, c, o, j.right, j.bottom, w, x) : ce, L.border), u, g, M, N), z) {
1564
- let t = B?.border?.horizontal, n = B?.border?.vertical, r = B?.border?.top, i = B?.border?.bottom, a = B?.border?.left, s = B?.border?.right, c = V?.border?.bottom, l = V?.border?.top;
1564
+ if (vt(e, _t(N ? gt(ae, c, o, N.right, N.bottom, w, x) : ae, V.border), u, g, F, I), U) {
1565
+ let t = W?.border?.horizontal, n = W?.border?.vertical, r = W?.border?.top, i = W?.border?.bottom, a = W?.border?.left, s = W?.border?.right, c = se?.border?.bottom, l = se?.border?.top;
1565
1566
  if (t || n || r || i || a || s || c || l) {
1566
1567
  let n = {
1567
1568
  left: null,
@@ -1569,186 +1570,188 @@ function lt(e, t, n, i, a, o, s, c, l, u, d, f, p, h) {
1569
1570
  top: null,
1570
1571
  bottom: null
1571
1572
  };
1572
- z.isTopEdge ? n.top = r ?? null : t && (n.top = t), z.isHeader && c ? n.bottom = c : z.isBottomEdge ? n.bottom = i ?? null : t && (n.bottom = t), (z.isFirstCol || o === 0) && (n.left = a ?? null), z.isLastCol && (n.right = s ?? null), vt(e, n, u, g, M, N);
1573
+ U.isTopEdge ? n.top = r ?? null : t && (n.top = t), U.isHeader && c ? n.bottom = c : U.isBottomEdge ? n.bottom = i ?? null : t && (n.bottom = t), (U.isFirstCol || o === 0) && (n.left = a ?? null), U.isLastCol && (n.right = s ?? null), vt(e, n, u, g, F, I);
1573
1574
  } else {
1574
- let t = .5 / ie;
1575
- e.strokeStyle = z.accent, e.lineWidth = z.isHeader ? 1.5 : 1, e.beginPath(), e.moveTo(u, g + N - t), e.lineTo(u + M, g + N - t), z.isTopEdge && (e.moveTo(u, g + t), e.lineTo(u + M, g + t)), e.stroke();
1575
+ let t = .5 / M;
1576
+ e.strokeStyle = U.accent, e.lineWidth = U.isHeader ? 1.5 : 1, e.beginPath(), e.moveTo(u, g + I - t), e.lineTo(u + F, g + I - t), U.isTopEdge && (e.moveTo(u, g + t), e.lineTo(u + F, g + t)), e.stroke();
1576
1577
  }
1577
1578
  }
1578
- if (t.autoFilterCells.has(h) && at(e, u, g, f, N), !P) continue;
1579
- let H = ee(P, x, L.numFmt);
1580
- if (!H || H === "0" && t.worksheet.showZeros === !1) continue;
1581
- let fe = !!(z && (z.isHeader || z.isTotals)), pe = F.bold || !!L.fontBold || fe, me = F.italic || !!L.fontItalic, he = F.underline || !!L.fontUnderline, ge = F.strike || !!L.fontStrike, _e = pe !== F.bold || me !== F.italic || he !== F.underline || ge !== F.strike ? {
1582
- ...F,
1583
- bold: pe,
1584
- italic: me,
1585
- underline: he,
1586
- strike: ge
1587
- } : F;
1588
- e.font = D(_e, re);
1589
- let ve = t.hyperlinkMap.get(h), ye = z?.isHeader && V?.font?.color ? V.font.color : z && !z.isHeader && !z.isTotals && B?.font?.color ? B.font.color : null, be = ve ? "#0563C1" : L.fontColor ?? ye ?? F.color;
1590
- e.fillStyle = be ? v(be) : "#000000";
1591
- let xe = P.value.type === "number", U = I.alignH ?? (xe ? "right" : "left"), W = I.alignV ?? "bottom", G = I.indent ? Math.round(I.indent * F.size * m * .5) : 0, K = L.iconSet ? Math.max(8, Math.round(Math.min(M, N) * .55)) : 0, Ce = K > 0 ? K + 4 : 0, we = 3 + (U === "left" || !I.alignH ? G : 0) + Ce, Te = M, q = u;
1592
- if (U === "centerContinuous" && !j) for (let e = n + 1; e < ae; e++) {
1593
- let t = `${c}:${i + e}`;
1594
- if (te.has(t) || A.has(t)) break;
1595
- let n = w.get(t);
1596
- if (n && n.value.type !== "empty" || k(x, n?.styleIndex ?? 0).xf.alignH !== "centerContinuous") break;
1597
- Te += a[e];
1598
- }
1599
- let J = u, Ee = M, De = H.includes("\n");
1600
- if (!j && !I.wrapText && !I.textRotation && !xe && !De && U !== "centerContinuous") {
1601
- let t = e.measureText(H).width + we + 3;
1602
- if (t > M) {
1603
- let e = t - M, r = 0, o = 0;
1604
- if (U === "right" ? o = e : U === "center" ? (o = e / 2, r = e / 2) : r = e, r > 0) {
1605
- let e = r;
1606
- for (let t = n + 1; t < ae && e > 0; t++) {
1607
- let n = `${c}:${i + t}`;
1608
- if (te.has(n) || A.has(n)) break;
1609
- let r = w.get(n);
1610
- if (r && r.value.type !== "empty") break;
1611
- Ee += a[t], e -= a[t];
1579
+ if (t.autoFilterCells.has(h) && at(e, u, g, f, I), !L) continue;
1580
+ let G = ee(L, x, V.numFmt);
1581
+ !G || G === "0" && t.worksheet.showZeros === !1 || R.push(() => {
1582
+ let r = !!(U && (U.isHeader || U.isTotals)), s = z.bold || !!V.fontBold || r, l = z.italic || !!V.fontItalic, d = z.underline || !!V.fontUnderline, f = z.strike || !!V.fontStrike, p = s !== z.bold || l !== z.italic || d !== z.underline || f !== z.strike ? {
1583
+ ...z,
1584
+ bold: s,
1585
+ italic: l,
1586
+ underline: d,
1587
+ strike: f
1588
+ } : z;
1589
+ e.font = D(p, ne);
1590
+ let _ = t.hyperlinkMap.get(h), y = U?.isHeader && se?.font?.color ? se.font.color : U && !U.isHeader && !U.isTotals && W?.font?.color ? W.font.color : null, b = _ ? "#0563C1" : V.fontColor ?? y ?? z.color;
1591
+ e.fillStyle = b ? v(b) : "#000000";
1592
+ let S = L.value.type === "number", C = B.alignH ?? (S ? "right" : "left"), T = B.alignV ?? "bottom", E = B.indent ? Math.round(B.indent * z.size * m * .5) : 0, ee = V.iconSet ? Math.max(8, Math.round(Math.min(F, I) * .55)) : 0, te = ee > 0 ? ee + 4 : 0, M = 3 + (C === "left" || !B.alignH ? E : 0) + te, P = F, R = u, ie = n;
1593
+ if (C === "centerContinuous" && !N) for (let e = n + 1; e < re; e++) {
1594
+ let t = `${c}:${i + e}`;
1595
+ if (j.has(t) || A.has(t)) break;
1596
+ let n = w.get(t);
1597
+ if (n && n.value.type !== "empty" || k(x, n?.styleIndex ?? 0).xf.alignH !== "centerContinuous") break;
1598
+ P += a[e], ie = e;
1599
+ }
1600
+ let ae = C === "centerContinuous" ? R : u, H = C === "centerContinuous" ? P : F, le = G.includes("\n");
1601
+ if (!N && !B.wrapText && !B.textRotation && !S && !le) {
1602
+ let t = e.measureText(G).width, r = C === "centerContinuous", o = r ? t + 6 : t + M + 3, s = r ? P : F;
1603
+ if (o > s) {
1604
+ let e = o - s, t = 0, l = 0;
1605
+ if (C === "right" ? l = e : C === "center" || r ? (l = e / 2, t = e / 2) : t = e, t > 0) {
1606
+ let e = t, o = r ? ie + 1 : n + 1;
1607
+ for (let t = o; t < re && e > 0; t++) {
1608
+ let n = `${c}:${i + t}`;
1609
+ if (j.has(n) || A.has(n)) break;
1610
+ let r = w.get(n);
1611
+ if (r && r.value.type !== "empty") break;
1612
+ H += a[t], e -= a[t];
1613
+ }
1612
1614
  }
1613
- }
1614
- if (o > 0) {
1615
- let e = o;
1616
- for (let t = n - 1; t >= 0 && e > 0; t--) {
1617
- let n = `${c}:${i + t}`;
1618
- if (te.has(n) || A.has(n)) break;
1619
- let r = w.get(n);
1620
- if (r && r.value.type !== "empty") break;
1621
- J -= a[t], Ee += a[t], e -= a[t];
1615
+ if (l > 0) {
1616
+ let e = l;
1617
+ for (let t = n - 1; t >= 0 && e > 0; t--) {
1618
+ let n = `${c}:${i + t}`;
1619
+ if (j.has(n) || A.has(n)) break;
1620
+ let r = w.get(n);
1621
+ if (r && r.value.type !== "empty") break;
1622
+ ae -= a[t], H += a[t], e -= a[t];
1623
+ }
1622
1624
  }
1623
1625
  }
1624
1626
  }
1625
- }
1626
- let Oe = H, ke = 0;
1627
- if (U === "fill" && !xe && H.length > 0) {
1628
- let t = Math.max(1, M - 6), n = e.measureText(H).width;
1629
- if (n > 0 && n < t) {
1630
- let e = Math.max(1, Math.floor(t / n));
1631
- Oe = H.repeat(e);
1627
+ let ue = G, de = 0;
1628
+ if (C === "fill" && !S && G.length > 0) {
1629
+ let t = Math.max(1, F - 6), n = e.measureText(G).width;
1630
+ if (n > 0 && n < t) {
1631
+ let e = Math.max(1, Math.floor(t / n));
1632
+ ue = G.repeat(e);
1633
+ }
1632
1634
  }
1633
- }
1634
- if (U === "distributed" || U === "justify" && !I.wrapText && !De) {
1635
- let t = Math.max(1, M - 6), n = e.measureText(Oe).width, r = Math.max(1, [...Oe].length - 1);
1636
- n < t && (ke = Math.max(0, (t - n) / r));
1637
- }
1638
- let Ae, je;
1639
- U === "right" ? (Ae = u + M - 3, je = "right") : U === "center" ? (Ae = u + M / 2, je = "center") : U === "centerContinuous" ? (Ae = q + Te / 2, je = "center", J = q, Ee = Te) : U === "distributed" || U === "justify" && !I.wrapText && !De ? (Ae = u + 3, je = "left") : (Ae = u + we, je = "left");
1640
- let Y = I.textRotation ?? 0, X = Y === 255, Me = Y > 0 && Y !== 255;
1641
- if (L.iconSet && K > 0 && (e.save(), e.beginPath(), e.rect(u, g, M, N), e.clip(), it(e, L.iconSet.name, L.iconSet.index, u + 2, g + (N - K) / 2, K), e.restore()), e.save(), e.beginPath(), e.rect(J, g, Ee, N), e.clip(), X) {
1642
- let t = Math.round(F.size * m * 1.1), n = H.length * t, r = W === "top" ? g + 2 : W === "center" ? g + (N - n) / 2 : g + N - n - 2;
1643
- e.textAlign = "center", e.textBaseline = "top";
1644
- for (let n of H) e.fillText(n, u + M / 2, r), r += t;
1645
- e.restore();
1646
- continue;
1647
- }
1648
- if (Me) {
1649
- let t = Y <= 90 ? -(Y * Math.PI / 180) : (Y - 90) * Math.PI / 180;
1650
- e.translate(u + M / 2, g + N / 2), e.rotate(t), e.textAlign = "center", e.textBaseline = "middle", e.fillText(H, 0, 0), e.restore();
1651
- continue;
1652
- }
1653
- if (I.shrinkToFit) {
1654
- let t = e.measureText(H).width, n = M - we - 3;
1655
- if (t > n && t > 0) {
1656
- let r = n / t, i = U === "right" ? u + M - 3 : U === "center" ? u + M / 2 : u + we;
1657
- e.transform(r, 0, 0, 1, i * (1 - r), 0);
1635
+ if (C === "distributed" || C === "justify" && !B.wrapText && !le) {
1636
+ let t = Math.max(1, F - 6), n = e.measureText(ue).width, r = Math.max(1, [...ue].length - 1);
1637
+ n < t && (de = Math.max(0, (t - n) / r));
1658
1638
  }
1659
- }
1660
- if (e.textAlign = je, ke > 0) try {
1661
- e.letterSpacing = `${ke}px`;
1662
- } catch {}
1663
- if (I.readingOrder === 2) try {
1664
- e.direction = "rtl";
1665
- } catch {}
1666
- else if (I.readingOrder === 1) try {
1667
- e.direction = "ltr";
1668
- } catch {}
1669
- let Ne = P.value.type === "text" ? P.value.runs : void 0, Pe = Ne && Ne.length > 0;
1670
- if (I.wrapText && Pe) {
1671
- let t = de(e, Ne, _e, re, M - we - 3), n = t.reduce((e, t) => e + Math.round(t.maxFontSize * m * 1.2), 0), r;
1672
- r = W === "top" ? g + 2 : W === "center" ? g + (N - n) / 2 : g + N - n - 2, e.textAlign = "left", e.textBaseline = "top";
1673
- for (let n of t) {
1674
- let t = Math.round(n.maxFontSize * m * 1.2), i = n.segments.reduce((e, t) => e + t.width, 0), a;
1675
- a = U === "right" ? u + M - 3 - i : U === "center" ? u + M / 2 - i / 2 : u + we;
1676
- for (let t of n.segments) {
1677
- e.font = D(t.font, re);
1678
- let n = L.fontColor ?? t.font.color;
1679
- e.fillStyle = n ? v(n) : "#000000", e.fillText(t.text, a, r);
1680
- let i = Math.round(t.font.size * m);
1681
- if (t.font.underline && (e.save(), e.strokeStyle = n ? v(n) : "#000000", e.lineWidth = .5, e.beginPath(), e.moveTo(a, r + i + 1), e.lineTo(a + t.width, r + i + 1), e.stroke(), e.restore()), t.font.strike) {
1682
- e.save(), e.strokeStyle = n ? v(n) : "#000000", e.lineWidth = .5;
1683
- let o = r + Math.round(i * .5);
1684
- e.beginPath(), e.moveTo(a, o), e.lineTo(a + t.width, o), e.stroke(), e.restore();
1685
- }
1686
- a += t.width;
1639
+ let fe, pe;
1640
+ C === "right" ? (fe = u + F - 3, pe = "right") : C === "center" ? (fe = u + F / 2, pe = "center") : C === "centerContinuous" ? (fe = R + P / 2, pe = "center") : C === "distributed" || C === "justify" && !B.wrapText && !le ? (fe = u + 3, pe = "left") : (fe = u + M, pe = "left");
1641
+ let me = B.textRotation ?? 0, he = me === 255, ge = me > 0 && me !== 255;
1642
+ if (V.iconSet && ee > 0 && (e.save(), e.beginPath(), e.rect(u, g, F, I), e.clip(), it(e, V.iconSet.name, V.iconSet.index, u + 2, g + (I - ee) / 2, ee), e.restore()), e.save(), e.beginPath(), e.rect(ae, g, H, I), e.clip(), he) {
1643
+ let t = Math.round(z.size * m * 1.1), n = G.length * t, r = T === "top" ? g + 2 : T === "center" ? g + (I - n) / 2 : g + I - n - 2;
1644
+ e.textAlign = "center", e.textBaseline = "top";
1645
+ for (let n of G) e.fillText(n, u + F / 2, r), r += t;
1646
+ e.restore();
1647
+ return;
1648
+ }
1649
+ if (ge) {
1650
+ let t = me <= 90 ? -(me * Math.PI / 180) : (me - 90) * Math.PI / 180;
1651
+ e.translate(u + F / 2, g + I / 2), e.rotate(t), e.textAlign = "center", e.textBaseline = "middle", e.fillText(G, 0, 0), e.restore();
1652
+ return;
1653
+ }
1654
+ if (B.shrinkToFit) {
1655
+ let t = e.measureText(G).width, n = F - M - 3;
1656
+ if (t > n && t > 0) {
1657
+ let r = n / t, i = C === "right" ? u + F - 3 : C === "center" ? u + F / 2 : u + M;
1658
+ e.transform(r, 0, 0, 1, i * (1 - r), 0);
1687
1659
  }
1688
- r += t;
1689
1660
  }
1690
- } else if (I.wrapText) {
1691
- let t = le(e, H, M - we - 3), n = Math.round(F.size * m * 1.2), r = t.length * n, i;
1692
- W === "top" ? (i = g + 2, e.textBaseline = "top") : W === "center" ? (i = g + (N - r) / 2, e.textBaseline = "top") : (i = g + N - r - 2, e.textBaseline = "top");
1693
- for (let r = 0; r < t.length; r++) e.fillText(t[r], Ae, i + r * n);
1694
- } else if (Pe) {
1695
- let t = Ne.map((e) => O(_e, e)), n = Ne.map((n, r) => (e.font = D(t[r], re), e.measureText(n.text).width)), r = n.reduce((e, t) => e + t, 0), i;
1696
- i = U === "right" ? u + M - 3 - r : U === "center" ? u + M / 2 - r / 2 : u + we, e.textAlign = "left";
1697
- let a;
1698
- W === "top" ? (e.textBaseline = "top", a = g + 2) : W === "center" ? (e.textBaseline = "middle", a = g + N / 2) : (e.textBaseline = "bottom", a = g + N - 2);
1699
- let o = i;
1700
- for (let r = 0; r < Ne.length; r++) {
1701
- let i = t[r];
1702
- e.font = D(i, re);
1703
- let s = L.fontColor ?? i.color;
1704
- e.fillStyle = s ? v(s) : "#000000", e.fillText(Ne[r].text, o, a);
1705
- let c = Math.round(i.size * m);
1706
- if (i.underline) {
1707
- let t = W === "top" ? g + 2 + c + 1 : W === "center" ? g + N / 2 + Math.round(c * .55) : g + N - 2 + 1;
1708
- e.save(), e.strokeStyle = s ? v(s) : "#000000", e.lineWidth = .5, e.beginPath(), e.moveTo(o, t), e.lineTo(o + n[r], t), e.stroke(), e.restore();
1661
+ if (e.textAlign = pe, de > 0) try {
1662
+ e.letterSpacing = `${de}px`;
1663
+ } catch {}
1664
+ if (B.readingOrder === 2) try {
1665
+ e.direction = "rtl";
1666
+ } catch {}
1667
+ else if (B.readingOrder === 1) try {
1668
+ e.direction = "ltr";
1669
+ } catch {}
1670
+ let _e = L.value.type === "text" ? L.value.runs : void 0, ve = _e && _e.length > 0;
1671
+ if (B.wrapText && ve) {
1672
+ let t = ce(e, _e, p, ne, F - M - 3), n = t.reduce((e, t) => e + Math.round(t.maxFontSize * m * 1.2), 0), r;
1673
+ r = T === "top" ? g + 2 : T === "center" ? g + (I - n) / 2 : g + I - n - 2, e.textAlign = "left", e.textBaseline = "top";
1674
+ for (let n of t) {
1675
+ let t = Math.round(n.maxFontSize * m * 1.2), i = n.segments.reduce((e, t) => e + t.width, 0), a;
1676
+ a = C === "right" ? u + F - 3 - i : C === "center" ? u + F / 2 - i / 2 : u + M;
1677
+ for (let t of n.segments) {
1678
+ e.font = D(t.font, ne);
1679
+ let n = V.fontColor ?? t.font.color;
1680
+ e.fillStyle = n ? v(n) : "#000000", e.fillText(t.text, a, r);
1681
+ let i = Math.round(t.font.size * m);
1682
+ if (t.font.underline && (e.save(), e.strokeStyle = n ? v(n) : "#000000", e.lineWidth = .5, e.beginPath(), e.moveTo(a, r + i + 1), e.lineTo(a + t.width, r + i + 1), e.stroke(), e.restore()), t.font.strike) {
1683
+ e.save(), e.strokeStyle = n ? v(n) : "#000000", e.lineWidth = .5;
1684
+ let o = r + Math.round(i * .5);
1685
+ e.beginPath(), e.moveTo(a, o), e.lineTo(a + t.width, o), e.stroke(), e.restore();
1686
+ }
1687
+ a += t.width;
1688
+ }
1689
+ r += t;
1709
1690
  }
1710
- if (i.strike) {
1711
- let t = W === "top" ? g + 2 + Math.round(c * .5) : W === "center" ? g + N / 2 : g + N - 2 - Math.round(c * .35);
1712
- e.save(), e.strokeStyle = s ? v(s) : "#000000", e.lineWidth = .5, e.beginPath(), e.moveTo(o, t), e.lineTo(o + n[r], t), e.stroke(), e.restore();
1691
+ } else if (B.wrapText) {
1692
+ let t = oe(e, G, F - M - 3), n = Math.round(z.size * m * 1.2), r = t.length * n, i;
1693
+ T === "top" ? (i = g + 2, e.textBaseline = "top") : T === "center" ? (i = g + (I - r) / 2, e.textBaseline = "top") : (i = g + I - r - 2, e.textBaseline = "top");
1694
+ for (let r = 0; r < t.length; r++) e.fillText(t[r], fe, i + r * n);
1695
+ } else if (ve) {
1696
+ let t = _e.map((e) => O(p, e)), n = _e.map((n, r) => (e.font = D(t[r], ne), e.measureText(n.text).width)), r = n.reduce((e, t) => e + t, 0), i;
1697
+ i = C === "right" ? u + F - 3 - r : C === "center" ? u + F / 2 - r / 2 : u + M, e.textAlign = "left";
1698
+ let a;
1699
+ T === "top" ? (e.textBaseline = "top", a = g + 2) : T === "center" ? (e.textBaseline = "middle", a = g + I / 2) : (e.textBaseline = "bottom", a = g + I - 2);
1700
+ let o = i;
1701
+ for (let r = 0; r < _e.length; r++) {
1702
+ let i = t[r];
1703
+ e.font = D(i, ne);
1704
+ let s = V.fontColor ?? i.color;
1705
+ e.fillStyle = s ? v(s) : "#000000", e.fillText(_e[r].text, o, a);
1706
+ let c = Math.round(i.size * m);
1707
+ if (i.underline) {
1708
+ let t = T === "top" ? g + 2 + c + 1 : T === "center" ? g + I / 2 + Math.round(c * .55) : g + I - 2 + 1;
1709
+ e.save(), e.strokeStyle = s ? v(s) : "#000000", e.lineWidth = .5, e.beginPath(), e.moveTo(o, t), e.lineTo(o + n[r], t), e.stroke(), e.restore();
1710
+ }
1711
+ if (i.strike) {
1712
+ let t = T === "top" ? g + 2 + Math.round(c * .5) : T === "center" ? g + I / 2 : g + I - 2 - Math.round(c * .35);
1713
+ e.save(), e.strokeStyle = s ? v(s) : "#000000", e.lineWidth = .5, e.beginPath(), e.moveTo(o, t), e.lineTo(o + n[r], t), e.stroke(), e.restore();
1714
+ }
1715
+ o += n[r];
1713
1716
  }
1714
- o += n[r];
1715
- }
1716
- } else {
1717
- let t = null, n = () => t ??= e.measureText(H), r = () => {
1718
- let e = Math.min(n().width, Ee - we - 3);
1719
- return {
1720
- x: U === "right" ? u + M - 3 - e : U === "center" ? u + M / 2 - e / 2 : u + we,
1721
- width: e
1722
- };
1723
- }, i = Math.round(F.size * m);
1724
- if (_e.underline || ve) {
1725
- let { x: t, width: n } = r(), a = W === "top" ? g + 2 + i + 1 : W === "center" ? g + N / 2 + Math.round(i * .55) : g + N - 2 + 1;
1726
- e.save(), e.strokeStyle = ve ? "#0563C1" : be ? v(be) : "#000000", e.lineWidth = .5, e.beginPath(), e.moveTo(t, a), e.lineTo(t + n, a), e.stroke(), e.restore();
1727
- }
1728
- if (_e.strike) {
1729
- let { x: t, width: n } = r(), a = W === "top" ? g + 2 + Math.round(i * .5) : W === "center" ? g + N / 2 : g + N - 2 - Math.round(i * .35);
1730
- e.save(), e.strokeStyle = be ? v(be) : "#000000", e.lineWidth = .5, e.beginPath(), e.moveTo(t, a), e.lineTo(t + n, a), e.stroke(), e.restore();
1731
- }
1732
- if (H.includes("\n")) {
1733
- let t = H.split("\n"), n = Math.round(F.size * m * 1.2), r = t.length * n, i;
1734
- W === "top" ? (i = g + 2, e.textBaseline = "top") : W === "center" ? (i = g + (N - r) / 2, e.textBaseline = "top") : (i = g + N - r - 2, e.textBaseline = "top");
1735
- for (let r = 0; r < t.length; r++) e.fillText(t[r], Ae, i + r * n);
1736
1717
  } else {
1737
- let t;
1738
- W === "top" ? (e.textBaseline = "top", t = g + 2) : W === "center" ? (e.textBaseline = "middle", t = g + N / 2) : (e.textBaseline = "bottom", t = g + N - 2), e.fillText(Oe, Ae, t);
1718
+ let t = null, n = () => t ??= e.measureText(G), r = () => {
1719
+ let e = Math.min(n().width, H - M - 3);
1720
+ return {
1721
+ x: C === "right" ? u + F - 3 - e : C === "center" ? u + F / 2 - e / 2 : u + M,
1722
+ width: e
1723
+ };
1724
+ }, i = Math.round(z.size * m);
1725
+ if (p.underline || _) {
1726
+ let { x: t, width: n } = r(), a = T === "top" ? g + 2 + i + 1 : T === "center" ? g + I / 2 + Math.round(i * .55) : g + I - 2 + 1;
1727
+ e.save(), e.strokeStyle = _ ? "#0563C1" : b ? v(b) : "#000000", e.lineWidth = .5, e.beginPath(), e.moveTo(t, a), e.lineTo(t + n, a), e.stroke(), e.restore();
1728
+ }
1729
+ if (p.strike) {
1730
+ let { x: t, width: n } = r(), a = T === "top" ? g + 2 + Math.round(i * .5) : T === "center" ? g + I / 2 : g + I - 2 - Math.round(i * .35);
1731
+ e.save(), e.strokeStyle = b ? v(b) : "#000000", e.lineWidth = .5, e.beginPath(), e.moveTo(t, a), e.lineTo(t + n, a), e.stroke(), e.restore();
1732
+ }
1733
+ if (G.includes("\n")) {
1734
+ let t = G.split("\n"), n = Math.round(z.size * m * 1.2), r = t.length * n, i;
1735
+ T === "top" ? (i = g + 2, e.textBaseline = "top") : T === "center" ? (i = g + (I - r) / 2, e.textBaseline = "top") : (i = g + I - r - 2, e.textBaseline = "top");
1736
+ for (let r = 0; r < t.length; r++) e.fillText(t[r], fe, i + r * n);
1737
+ } else {
1738
+ let t;
1739
+ T === "top" ? (e.textBaseline = "top", t = g + 2) : T === "center" ? (e.textBaseline = "middle", t = g + I / 2) : (e.textBaseline = "bottom", t = g + I - 2), e.fillText(ue, fe, t);
1740
+ }
1739
1741
  }
1740
- }
1741
- e.restore(), H && t.onTextRun && t.onTextRun({
1742
- text: H,
1743
- x: u,
1744
- y: g,
1745
- width: M,
1746
- height: N,
1747
- row: c,
1748
- col: o
1742
+ e.restore(), G && t.onTextRun && t.onTextRun({
1743
+ text: G,
1744
+ x: u,
1745
+ y: g,
1746
+ width: F,
1747
+ height: I,
1748
+ row: c,
1749
+ col: o
1750
+ });
1749
1751
  });
1750
1752
  }
1751
1753
  }
1754
+ for (let e of R) e();
1752
1755
  e.restore();
1753
1756
  }
1754
1757
  function ut(e, t, n, r, i = {}) {
@@ -1764,7 +1767,7 @@ function ut(e, t, n, r, i = {}) {
1764
1767
  for (let e = f; e < f + m; e++) k.push(l(_(t.rowHeights[e] ?? t.defaultRowHeight)));
1765
1768
  let A = /* @__PURE__ */ new Map();
1766
1769
  for (let e of t.rows) for (let t of e.cells) A.set(`${t.row}:${t.col}`, t);
1767
- let ee = /* @__PURE__ */ new Map(), te = /* @__PURE__ */ new Set();
1770
+ let ee = /* @__PURE__ */ new Map(), j = /* @__PURE__ */ new Set();
1768
1771
  for (let e of t.mergeCells ?? []) {
1769
1772
  let n = 0;
1770
1773
  for (let r = e.left; r <= e.right; r++) n += l(g(t.colWidths[r] ?? t.defaultColWidth));
@@ -1776,27 +1779,27 @@ function ut(e, t, n, r, i = {}) {
1776
1779
  right: e.right,
1777
1780
  bottom: e.bottom
1778
1781
  });
1779
- for (let t = e.top; t <= e.bottom; t++) for (let n = e.left; n <= e.right; n++) t === e.top && n === e.left || te.add(`${t}:${n}`);
1782
+ for (let t = e.top; t <= e.bottom; t++) for (let n = e.left; n <= e.right; n++) t === e.top && n === e.left || j.add(`${t}:${n}`);
1780
1783
  }
1781
- let ne = _e(t), re = /* @__PURE__ */ new Set();
1784
+ let te = me(t), ne = /* @__PURE__ */ new Set();
1782
1785
  if (t.autoFilter) {
1783
1786
  let e = t.autoFilter;
1784
- for (let t = e.left; t <= e.right; t++) re.add(`${e.top}:${t}`);
1787
+ for (let t = e.left; t <= e.right; t++) ne.add(`${e.top}:${t}`);
1785
1788
  }
1786
- let ie = /* @__PURE__ */ new Map();
1787
- for (let e of t.hyperlinks ?? []) e.url && ie.set(`${e.row}:${e.col}`, e.url);
1788
- let ae = /* @__PURE__ */ new Set();
1789
+ let M = /* @__PURE__ */ new Map();
1790
+ for (let e of t.hyperlinks ?? []) e.url && M.set(`${e.row}:${e.col}`, e.url);
1791
+ let re = /* @__PURE__ */ new Set();
1789
1792
  for (let e of t.commentRefs ?? []) {
1790
1793
  let t = w(e);
1791
- t && ae.add(`${t.row}:${t.col}`);
1794
+ t && re.add(`${t.row}:${t.col}`);
1792
1795
  }
1793
- let j = {
1796
+ let N = {
1794
1797
  worksheet: t,
1795
1798
  styles: n,
1796
1799
  cellMap: A,
1797
1800
  mergeAnchorMap: ee,
1798
- mergeSkipSet: te,
1799
- cfContext: ne,
1801
+ mergeSkipSet: j,
1802
+ cfContext: te,
1800
1803
  colWidths: O,
1801
1804
  rowHeights: k,
1802
1805
  frozenColWidths: C,
@@ -1807,20 +1810,20 @@ function ut(e, t, n, r, i = {}) {
1807
1810
  startCol: p,
1808
1811
  cs: o,
1809
1812
  dpr: a,
1810
- autoFilterCells: re,
1811
- hyperlinkMap: ie,
1812
- commentCells: ae,
1813
+ autoFilterCells: ne,
1814
+ hyperlinkMap: M,
1815
+ commentCells: re,
1813
1816
  tableStyleMap: ot(t),
1814
1817
  sparklineMap: st(t),
1815
1818
  onTextRun: i.onTextRun
1816
- }, oe = u, M = d, N = oe + E, P = M + D, F = Math.max(0, s - N), se = Math.max(0, c - P);
1817
- x > 0 && S > 0 && lt(e, j, 1, 1, C, T, 0, 0, oe, M, oe, M, E, D), x > 0 && lt(e, j, 1, p, O, T, y, 0, N, M, N, M, F, D), S > 0 && lt(e, j, f, 1, C, k, 0, b, oe, P, oe, P, E, se), lt(e, j, f, p, O, k, y, b, N, P, N, P, F, se), t.images && t.images.length > 0 && i.loadedImages && ft(e, t, i.loadedImages, o, f, p, y, b, N, P, F, se), t.shapeGroups && t.shapeGroups.length > 0 && pt(e, t, o, f, p, y, b, N, P, F, se, i.loadedImages), t.charts && t.charts.length > 0 && Ct(e, t, o, f, p, y, b, N, P, F, se), t.slicers && t.slicers.length > 0 && It(e, t, o, f, p, y, b, N, P, F, se), dt(e, s, c, f, p, m, v, O, k, y, b, C, T, E, D, u, d, o, a), x > 0 && (e.save(), e.strokeStyle = h, e.lineWidth = .5, e.beginPath(), e.moveTo(u, P + .5), e.lineTo(s, P + .5), e.stroke(), e.restore()), S > 0 && (e.save(), e.strokeStyle = h, e.lineWidth = .5, e.beginPath(), e.moveTo(N + .5, d), e.lineTo(N + .5, c), e.stroke(), e.restore());
1819
+ }, P = u, F = d, I = P + E, L = F + D, R = Math.max(0, s - I), z = Math.max(0, c - L);
1820
+ x > 0 && S > 0 && lt(e, N, 1, 1, C, T, 0, 0, P, F, P, F, E, D), x > 0 && lt(e, N, 1, p, O, T, y, 0, I, F, I, F, R, D), S > 0 && lt(e, N, f, 1, C, k, 0, b, P, L, P, L, E, z), lt(e, N, f, p, O, k, y, b, I, L, I, L, R, z), t.images && t.images.length > 0 && i.loadedImages && ft(e, t, i.loadedImages, o, f, p, y, b, I, L, R, z), t.shapeGroups && t.shapeGroups.length > 0 && pt(e, t, o, f, p, y, b, I, L, R, z, i.loadedImages), t.charts && t.charts.length > 0 && Ct(e, t, o, f, p, y, b, I, L, R, z), t.slicers && t.slicers.length > 0 && It(e, t, o, f, p, y, b, I, L, R, z), dt(e, s, c, f, p, m, v, O, k, y, b, C, T, E, D, u, d, o, a), x > 0 && (e.save(), e.strokeStyle = h, e.lineWidth = .5, e.beginPath(), e.moveTo(u, L + .5), e.lineTo(s, L + .5), e.stroke(), e.restore()), S > 0 && (e.save(), e.strokeStyle = h, e.lineWidth = .5, e.beginPath(), e.moveTo(I + .5, d), e.lineTo(I + .5, c), e.stroke(), e.restore());
1818
1821
  }
1819
1822
  function dt(e, t, n, r, i, a, o, s, c, l, u, f, p, m, h, g, _, v, y) {
1820
1823
  let b = "#f8f9fa", x = "#c8ccd0", S = "#444", C = `${Math.max(1, Math.round(11 * v))}px ${d}`, w = g + m, T = _ + h, E = .5 / y;
1821
1824
  e.fillStyle = b, e.fillRect(0, 0, g, _), e.strokeStyle = x, e.lineWidth = .5, e.beginPath(), e.moveTo(E, 0), e.lineTo(E, _), e.moveTo(0, E), e.lineTo(g, E), e.moveTo(g - E, 0), e.lineTo(g - E, _), e.moveTo(0, _ - E), e.lineTo(g, _ - E), e.stroke(), e.font = C, e.fillStyle = S;
1822
1825
  let D = (t, n, r) => {
1823
- e.fillStyle = b, e.fillRect(n, 0, r, _), e.strokeStyle = x, e.lineWidth = .5, e.beginPath(), e.moveTo(n + r - E, 0), e.lineTo(n + r - E, _), e.moveTo(n, _ - E), e.lineTo(n + r, _ - E), e.moveTo(n, E), e.lineTo(n + r, E), e.stroke(), e.fillStyle = S, e.textAlign = "center", e.textBaseline = "middle", e.fillText(H(t), n + r / 2, _ / 2);
1826
+ e.fillStyle = b, e.fillRect(n, 0, r, _), e.strokeStyle = x, e.lineWidth = .5, e.beginPath(), e.moveTo(n + r - E, 0), e.lineTo(n + r - E, _), e.moveTo(n, _ - E), e.lineTo(n + r, _ - E), e.moveTo(n, E), e.lineTo(n + r, E), e.stroke(), e.fillStyle = S, e.textAlign = "center", e.textBaseline = "middle", e.fillText(le(t), n + r / 2, _ / 2);
1824
1827
  }, O = (t, n, r) => {
1825
1828
  e.fillStyle = b, e.fillRect(0, n, g, r), e.strokeStyle = x, e.lineWidth = .5, e.beginPath(), e.moveTo(g - E, n), e.lineTo(g - E, n + r), e.moveTo(0, n + r - E), e.lineTo(g, n + r - E), e.moveTo(E, n), e.lineTo(E, n + r), e.stroke(), e.fillStyle = S, e.textAlign = "right", e.textBaseline = "middle", e.fillText(String(t), g - Math.max(2, Math.round(4 * v)), n + r / 2);
1826
1829
  };