@sheetxl/sdk 0.1.98

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.
Files changed (106) hide show
  1. package/LICENSE.md +11 -0
  2. package/README.md +30 -0
  3. package/build/browser/cjs/7Yh1PqgSd93uKFOq.cjs +6 -0
  4. package/build/browser/cjs/AbBzPqrBe_7Scafy.cjs +6 -0
  5. package/build/browser/cjs/B2jt9h-29UhlG-ir.cjs +6 -0
  6. package/build/browser/cjs/BAY6G2idlFTr3aXF.cjs +6 -0
  7. package/build/browser/cjs/BJAOd8ki61yYMUO8.cjs +6 -0
  8. package/build/browser/cjs/BNfn1no9QwiHEFwd.cjs +6 -0
  9. package/build/browser/cjs/BUkgy8lQRuxtyPlh.cjs +6 -0
  10. package/build/browser/cjs/B_O3B0P2cyGD9Rbm.cjs +6 -0
  11. package/build/browser/cjs/BkmEUMAKvuzsSqbR.cjs +7 -0
  12. package/build/browser/cjs/BlllxPbkhoY0sEC4.cjs +23 -0
  13. package/build/browser/cjs/BmT4qU5bgAIPFNTH.cjs +124 -0
  14. package/build/browser/cjs/BqZnbFL2t1u1XgPn.cjs +6 -0
  15. package/build/browser/cjs/Bs6xUWpBc0gC2FqH.cjs +6 -0
  16. package/build/browser/cjs/Bsv5BCVCW5dIA5It.cjs +1511 -0
  17. package/build/browser/cjs/ByZLM15SpxjqWDYX.cjs +6 -0
  18. package/build/browser/cjs/CaHv2p0pVvOc7XPO.cjs +42 -0
  19. package/build/browser/cjs/CcIliks7z_TMUXOM.cjs +6 -0
  20. package/build/browser/cjs/CpbUnis3pqWrW9H4.cjs +11 -0
  21. package/build/browser/cjs/CvGHijwHYOsCppoo.cjs +6 -0
  22. package/build/browser/cjs/D5m2Wlak7m4vG0kA.cjs +6 -0
  23. package/build/browser/cjs/DSNXa0HNC7bG9qZw.cjs +6 -0
  24. package/build/browser/cjs/DZ-H3oz78Mjq38DI.cjs +6 -0
  25. package/build/browser/cjs/Da34iNTZrWBA6OUT.cjs +6 -0
  26. package/build/browser/cjs/DfMNPyGio0O0RToU.cjs +6 -0
  27. package/build/browser/cjs/Dghi8Yq5nXZtUpoV.cjs +80 -0
  28. package/build/browser/cjs/Dk63Co0TJejVtNXp.cjs +6 -0
  29. package/build/browser/cjs/ErSjtO5fMJzUVHk4.cjs +6 -0
  30. package/build/browser/cjs/G-xZJIN6jjcTuQXA.cjs +6 -0
  31. package/build/browser/cjs/GPfZ0ZpBee250ywR.cjs +20 -0
  32. package/build/browser/cjs/IHypcrtWCiX_F0RJ.cjs +11 -0
  33. package/build/browser/cjs/X-HIF0659hMdI4Fu.cjs +6 -0
  34. package/build/browser/cjs/index.cjs +6 -0
  35. package/build/browser/cjs/qhBvSFMQ_DepDCwv.cjs +6 -0
  36. package/build/browser/cjs/wYOZ6mjOO7MbdyBZ.cjs +6 -0
  37. package/build/browser/esm/70LlV-Ub5gQiHal4.mjs +10 -0
  38. package/build/browser/esm/71Qocy3xStWv_56t.mjs +10 -0
  39. package/build/browser/esm/B9-WgxZWcZj4jdUC.mjs +10 -0
  40. package/build/browser/esm/BAKRnfUqPzHyyiLx.mjs +3966 -0
  41. package/build/browser/esm/BChNW8QNTMP8QXKM.mjs +484 -0
  42. package/build/browser/esm/BCzBxiWxCFs-jcmK.mjs +5651 -0
  43. package/build/browser/esm/BOn1aDBCyrMSMmVr.mjs +10 -0
  44. package/build/browser/esm/BPqJ7trmE53kA4iD.mjs +10 -0
  45. package/build/browser/esm/B_XqbIeKalrEkjs7.mjs +10 -0
  46. package/build/browser/esm/B_b5FIYJnm4UKAEc.mjs +28 -0
  47. package/build/browser/esm/BoWGCLoCBi99JpFs.mjs +10 -0
  48. package/build/browser/esm/Bq9W-xButcfpjGEk.mjs +433 -0
  49. package/build/browser/esm/ByxOyRbOjkmiHT8z.mjs +10 -0
  50. package/build/browser/esm/CAxIV1vPiKW9r_Yh.mjs +10 -0
  51. package/build/browser/esm/CFw23OkHfPquoVEk.mjs +10 -0
  52. package/build/browser/esm/CG8a93kgahRemVJe.mjs +10 -0
  53. package/build/browser/esm/CN45di2IcbM8P0Qu.mjs +10 -0
  54. package/build/browser/esm/COgfNXNmX_PF_eWZ.mjs +35 -0
  55. package/build/browser/esm/CPv7OpinaYcwbA_W.mjs +10 -0
  56. package/build/browser/esm/Cfhp3FCr7wP0Rnfu.mjs +10 -0
  57. package/build/browser/esm/D4GeLOfATuEzvjPr.mjs +1586 -0
  58. package/build/browser/esm/DMas1DZMe9F5tPaN.mjs +23970 -0
  59. package/build/browser/esm/DS4xBjO2TN0rQ1lJ.mjs +10 -0
  60. package/build/browser/esm/DTM0pK30PrZRsXYw.mjs +10 -0
  61. package/build/browser/esm/DgslJ1_vlPooGZHU.mjs +10 -0
  62. package/build/browser/esm/DmEPCZ9FSKO_TRTA.mjs +10 -0
  63. package/build/browser/esm/Do_EO3eQIyPgc7uz.mjs +30 -0
  64. package/build/browser/esm/ERMewE78C__HUblm.mjs +10 -0
  65. package/build/browser/esm/Qib5_XvQHWOPzGrm.mjs +10 -0
  66. package/build/browser/esm/SSYRYFzxzHWQzdAN.mjs +12 -0
  67. package/build/browser/esm/V_ha0oCA5_oDPanz.mjs +832 -0
  68. package/build/browser/esm/gTh1PiesKrQblf8O.mjs +10 -0
  69. package/build/browser/esm/g_p1uVDePbDJJ4nX.mjs +10 -0
  70. package/build/browser/esm/index.mjs +89 -0
  71. package/build/licenses/dependencies.txt +1239 -0
  72. package/build/node/esm/4HPektqH91Rh-rsq.mjs +2445 -0
  73. package/build/node/esm/70LlV-Ub5gQiHal4.mjs +10 -0
  74. package/build/node/esm/B9-WgxZWcZj4jdUC.mjs +10 -0
  75. package/build/node/esm/BDxewg-utn4BhUXl.mjs +35 -0
  76. package/build/node/esm/BPqJ7trmE53kA4iD.mjs +10 -0
  77. package/build/node/esm/BUOg554dxBM0VWFi.mjs +22 -0
  78. package/build/node/esm/B_XqbIeKalrEkjs7.mjs +10 -0
  79. package/build/node/esm/BoWGCLoCBi99JpFs.mjs +10 -0
  80. package/build/node/esm/ByxOyRbOjkmiHT8z.mjs +10 -0
  81. package/build/node/esm/CFw23OkHfPquoVEk.mjs +10 -0
  82. package/build/node/esm/CG8a93kgahRemVJe.mjs +10 -0
  83. package/build/node/esm/CN45di2IcbM8P0Qu.mjs +10 -0
  84. package/build/node/esm/CNOiP4baOWSizP6F.mjs +1070 -0
  85. package/build/node/esm/CPv7OpinaYcwbA_W.mjs +10 -0
  86. package/build/node/esm/CVAFJAiy4lznWzaG.mjs +10 -0
  87. package/build/node/esm/CZd8SSXlusZy49FM.mjs +10 -0
  88. package/build/node/esm/CZw7SgmfxSHhZZe0.mjs +10 -0
  89. package/build/node/esm/Cdjab80o1WocCHgN.mjs +13 -0
  90. package/build/node/esm/CfWoSrOmaP9LrFja.mjs +466 -0
  91. package/build/node/esm/CnaBpzYiURAKhAxF.mjs +825 -0
  92. package/build/node/esm/Cp5ea9Hpxse8B4mC.mjs +10 -0
  93. package/build/node/esm/DH_fbhyW3PwE1rYa.mjs +10 -0
  94. package/build/node/esm/DNHqdv3-ufdcF5zc.mjs +20 -0
  95. package/build/node/esm/DS4xBjO2TN0rQ1lJ.mjs +10 -0
  96. package/build/node/esm/DTM0pK30PrZRsXYw.mjs +10 -0
  97. package/build/node/esm/DlFgt0KLeXDowatv.mjs +10 -0
  98. package/build/node/esm/ERMewE78C__HUblm.mjs +10 -0
  99. package/build/node/esm/GTFYlX2Atw10TdFe.mjs +86 -0
  100. package/build/node/esm/Qib5_XvQHWOPzGrm.mjs +10 -0
  101. package/build/node/esm/gTh1PiesKrQblf8O.mjs +10 -0
  102. package/build/node/esm/g_p1uVDePbDJJ4nX.mjs +10 -0
  103. package/build/node/esm/index.mjs +23412 -0
  104. package/build/package.json +58 -0
  105. package/build/types/index.d.ts +20624 -0
  106. package/package.json +85 -0
@@ -0,0 +1,1070 @@
1
+ /**
2
+ * @license @sheetxl/sdk - A high-performance, embeddable spreadsheet engine. - v0.0.0
3
+ *
4
+ * (C) 2025-present SheetXL Inc. & Michael T. Ford
5
+ * License: The license can be found at https://www.sheetxl.com/license.
6
+ */
7
+ import { FormulaError as e, CoordUtils as t, c as n, ScalarType as r, t as s, g as i, CommonUtils as o, a, b as l, d as u, e as c, r as p, m as f, f as h } from "./index.mjs";
8
+ import { Lexer as g, createToken as d, EmbeddedActionsParser as m } from "chevrotain";
9
+ const E = d({ name: "WhiteSpace", pattern: /\s+/, group: g.SKIPPED }), A = d({ name: "String", pattern: /"(""|[^"])*"/ }), N = d({ name: "SingleQuotedString", pattern: /'(''|[^'])*'/ }), I = d({ name: "SheetQuoted", pattern: /'((?![\\/[\]*?:]).)+?'!/ }), O = d({ name: "FunctionToken", pattern: /[A-Za-z_]+[A-Za-z_0-9.]*\(/ }), x = d({ name: "NamedTableReference", pattern: /[A-Za-z_]+[A-Za-z_0-9.]*\[/ }), S = d({ name: "BracketedString", pattern: /\[([^[\]]*)\]/, longer_alt: [x, A] }), L = d({ name: "LiteralError", pattern: /#PARSE!|#NULL!|#DIV\/0!|#VALUE!|#NUM!|#FIELD!|#N\/A|#GETTING_DATA|#SPILL!|#CONNECT!|#BLOCKED!|#UNKNOWN!|#FIELD!|#CALC!|#BUSY!|#PYTHON!|#TIMEOUT!/ }), T = d({ name: "RefError", pattern: /#REF!|#NAME\?/ }), R = d({ name: "Sheet", pattern: /[A-Za-z_.\d\u007F-\uFFFF]+!/ }), v = /^[a-zA-Z_][a-zA-Z0-9_.?]*:?/, U = d({ name: "Name", pattern: { exec: (e2, t2) => {
10
+ try {
11
+ const n2 = v.exec(e2.substring(t2));
12
+ if (n2) {
13
+ const e3 = n2[0];
14
+ if (e3.endsWith(":")) {
15
+ const t3 = e3.length;
16
+ return "." === e3[t3 - 2] ? [e3.substring(0, t3 - 2)] : [e3.substring(0, t3 - 1)];
17
+ }
18
+ return [e3];
19
+ }
20
+ } catch (e3) {
21
+ console.warn("Error parsing name", e3);
22
+ }
23
+ return null;
24
+ } }, line_breaks: false, start_chars_hint: (() => {
25
+ const e2 = [];
26
+ for (let t2 = 65; t2 <= 90; t2++) e2.push(t2);
27
+ for (let t2 = 97; t2 <= 122; t2++) e2.push(t2);
28
+ for (let t2 = 48; t2 <= 57; t2++) e2.push(t2);
29
+ return e2;
30
+ })() }), y = d({ name: "Cell", pattern: /[$]?[A-Za-z]{1,3}[$]?[1-9][0-9]*/, longer_alt: U }), w = d({ name: "Column", pattern: /[$]?[A-Za-z]{1,3}/, longer_alt: U }), C = d({ name: "AbsRow", pattern: /[$][0-9]+/, longer_alt: U }), _ = d({ name: "NumberToken", pattern: /[0-9]+[.]?[0-9]*([eE][+-][0-9]+)?/ }), M = d({ name: "Boolean", pattern: /TRUE|FALSE/i }), b = d({ name: "Comma", pattern: /,/ }), P = d({ name: "RangeUnion", pattern: /:/ }), B = d({ name: "RangeTrimFull", pattern: /\.:\./ }), F = d({ name: "RangeTrimLeading", pattern: /\.:/ }), $ = d({ name: "RangeTrimTrailing", pattern: /:\./ }), W = d({ name: "Semicolon", pattern: /;/ }), z = d({ name: "OpenParen", pattern: /\(/ }), k = d({ name: "CloseParen", pattern: /\)/ }), V = d({ name: "OpenSquareParen", pattern: /\[/ }), G = d({ name: "CloseSquareParen", pattern: /]/ });
31
+ d({ name: "exclamationMark", pattern: /!/ });
32
+ const q = d({ name: "OpenCurlyParen", pattern: /{/ }), j = d({ name: "CloseCurlyParen", pattern: /}/ }), Y = d({ name: "QuoteS", pattern: /'/ }), D = d({ name: "MulOp", pattern: /\*/ }), Z = d({ name: "PlusOp", pattern: /\+/ }), H = d({ name: "DivOp", pattern: /\// }), K = d({ name: "MinOp", pattern: /-/ }), Q = d({ name: "ImplicitIntersectOp", pattern: /@/ }), X = d({ name: "ConcatOp", pattern: /&/ }), J = d({ name: "ExOp", pattern: /\^/ }), ee = d({ name: "PercentOp", pattern: /%/ }), te = d({ name: "TableSpecifier", pattern: /#(All|Data|Headers|Totals|This Row)/i }), ne = d({ name: "ArrayAnchorOp", pattern: /#/, longer_alt: [te, L, T] }), re = d({ name: "GtOp", pattern: />/ }), se = d({ name: "EqOp", pattern: /=/ }), ie = d({ name: "LtOp", pattern: /</ }), oe = [E, A, I, N, O, x, S, L, T, R, y, M, w, C, te, ne, Q, U, _, b, B, F, $, P, W, z, k, V, G, q, j, Y, D, Z, H, K, X, J, D, ee, d({ name: "NeqOp", pattern: /<>/ }), d({ name: "GteOp", pattern: />=/ }), d({ name: "LteOp", pattern: /<=/ }), re, se, ie], ae = new g(oe, { ensureOptimizations: true }), le = {};
33
+ oe.forEach((e2) => {
34
+ le[e2.name] = e2;
35
+ });
36
+ const ue = { boolean: 3, string: 2, number: 1 }, ce = (e2, t2) => {
37
+ let n2 = e2 + t2;
38
+ return n2 = Math.abs(n2) < 99e-14 ? 0 : n2, isFinite(n2) ? n2 : Number.NaN;
39
+ }, pe = (e2, t2) => {
40
+ let n2 = e2 - t2;
41
+ return n2 = Math.abs(n2) < 99e-14 ? 0 : n2, isFinite(n2) ? n2 : Number.NaN;
42
+ }, fe = (e2, t2) => {
43
+ let n2 = e2 * t2;
44
+ return n2 = Math.abs(n2) < 99e-14 ? 0 : n2, isFinite(n2) ? n2 : Number.NaN;
45
+ }, he = (e2, t2) => {
46
+ if (0 === t2) return 1 / 0;
47
+ let n2 = e2 / t2;
48
+ return n2 = Math.abs(n2) < 99e-14 ? 0 : n2, isFinite(n2) ? n2 : Number.NaN;
49
+ }, ge = (e2, t2) => {
50
+ const n2 = e2 ** t2;
51
+ return isFinite(n2) ? n2 : Number.NaN;
52
+ }, de = (e2 = "", t2 = "") => {
53
+ null === e2 && (e2 = ""), null === t2 && (t2 = "");
54
+ return "boolean" === typeof e2 && (e2 = e2 ? "TRUE" : "FALSE"), "boolean" === typeof t2 && (t2 = t2 ? "TRUE" : "FALSE"), "" + e2 + t2;
55
+ }, me = (e2 = null, t2 = null) => typeof e2 === typeof t2 && e2 === t2, Ee = (e2 = null, t2 = null) => typeof e2 !== typeof t2 || e2 !== t2, Ae = (e2 = null, t2 = null) => {
56
+ const n2 = typeof e2, r2 = typeof t2;
57
+ return n2 === r2 ? e2 > t2 : ue[n2] > ue[r2];
58
+ }, Ne = (e2 = null, t2 = null) => {
59
+ const n2 = typeof e2, r2 = typeof t2;
60
+ return n2 === r2 ? e2 >= t2 : ue[n2] >= ue[r2];
61
+ }, Ie = (e2 = null, t2 = null) => {
62
+ const n2 = typeof e2, r2 = typeof t2;
63
+ return n2 === r2 ? e2 < t2 : ue[n2] < ue[r2];
64
+ }, Oe = (e2 = null, t2 = null) => {
65
+ const n2 = typeof e2, r2 = typeof t2;
66
+ return n2 === r2 ? e2 <= t2 : ue[n2] <= ue[r2];
67
+ }, xe = { type: r.Number, coerce: true, includeBoolean: true, includeMistyped: true, mismatchFill: e.BuiltIn.NA }, Se = { type: r.String, coerce: true, includeMistyped: true, mismatchFill: e.BuiltIn.NA }, Le = { type: null, coerce: true, includeMistyped: true, mismatchFill: e.BuiltIn.NA }, Te = (t2, i2, o2, a2) => {
68
+ if (null !== i2 && void 0 !== i2.colStart && (i2 = t2.getValueAt(i2.rowStart, i2.colStart)), null !== o2 && void 0 !== o2.colStart && (o2 = t2.getValueAt(o2.rowStart, o2.colStart)), "number" == typeof i2 && "number" == typeof o2) return a2(i2, o2);
69
+ let l2, u2;
70
+ if (i2?.isIRange ? l2 = i2 : o2?.isIRange && (u2 = o2), !l2 && !u2) {
71
+ const t3 = false;
72
+ return i2 = n(i2, s(i2, true), r.Number, true, t3), o2 = n(o2, s(o2, true), r.Number, true, t3), i2 instanceof e.Value ? i2 : o2 instanceof e.Value ? o2 : a2(i2, o2);
73
+ }
74
+ return l2 || (l2 = t2.getRange(i2)), l2.broadcast(o2, a2, xe).fillEmpty(0);
75
+ }, Re = (e2, t2, n2, r2) => {
76
+ let s2, i2;
77
+ return null !== t2 && void 0 !== t2.colStart && (t2 = e2.getValueAt(t2.rowStart, t2.colStart)), null !== n2 && void 0 !== n2.colStart && (n2 = e2.getValueAt(n2.rowStart, n2.colStart)), t2?.isIRange ? (s2 = t2, i2 = n2) : n2?.isIRange && (s2 = n2, i2 = t2), s2 ? s2.broadcast(i2, r2, Le) : r2(t2, n2);
78
+ }, ve = (t2, i2) => {
79
+ null == i2 && (i2 = 0);
80
+ let o2, a2 = 1;
81
+ if ("+" === t2) return i2;
82
+ if ("-" !== t2) throw new e.Value(`Unrecognized prefix: ${t2}`);
83
+ return a2 = -a2, i2?.isIRange && (o2 = i2), o2 ? o2.broadcast(a2, fe, Le) : "number" != typeof (i2 = n(i2, s(i2, true), r.Number)) || isNaN(i2) ? e.BuiltIn.Value : i2 * a2;
84
+ }, Ue = (t2, n2, r2, s2) => {
85
+ if (!n2) return e.BuiltIn.Ref;
86
+ if (n2.isIReferenceRange && (n2 = n2.getCoords()), void 0 === n2.colStart) return e.BuiltIn.Ref;
87
+ if (r2.isIReferenceRange && (r2 = r2.getCoords()), void 0 === r2.colStart) return e.BuiltIn.Ref;
88
+ const i2 = s2(n2, r2);
89
+ return i2 ? t2.getReference(i2) : e.BuiltIn.Null;
90
+ }, ye = { "+": (e2, t2, n2) => Te(e2, t2, n2, ce), "-": (e2, t2, n2) => Te(e2, t2, n2, pe), "*": (e2, t2, n2) => Te(e2, t2, n2, fe), "/": (e2, t2, n2) => Te(e2, t2, n2, he), "^": (e2, t2, n2) => Te(e2, t2, n2, ge), " ": (e2, n2, r2, s2) => Ue(e2, n2, r2, t.intersectRanges), ":": (e2, n2, r2, s2) => Ue(e2, n2, r2, t.unionRanges), ".:.": (e2, n2, r2, s2) => {
91
+ const i2 = Ue(e2, n2, r2, t.unionRanges);
92
+ return e2.getFunction("TRIMRANGE").execute(i2, 3, 3);
93
+ }, ".:": (e2, n2, r2, s2) => {
94
+ const i2 = Ue(e2, n2, r2, t.unionRanges);
95
+ return e2.getFunction("TRIMRANGE").execute(i2, 1, 1);
96
+ }, ":.": (e2, n2, r2, s2) => {
97
+ const i2 = Ue(e2, n2, r2, t.unionRanges);
98
+ return e2.getFunction("TRIMRANGE").execute(i2, 2, 2);
99
+ }, "&": (e2, t2, i2) => ((e3, t3, i3, o2) => {
100
+ if (null !== t3 && void 0 !== t3.colStart && (t3 = e3.getValueAt(t3.rowStart, t3.colStart)), null !== i3 && void 0 !== i3.colStart && (i3 = e3.getValueAt(i3.rowStart, i3.colStart)), "string" == typeof t3 && "string" == typeof i3) return o2(t3, i3);
101
+ let a2, l2;
102
+ return t3?.isIRange ? a2 = t3 : i3?.isIRange && (l2 = i3), a2 || l2 ? (a2 || (a2 = e3.getRange(t3)), a2.broadcast(i3, o2, Se)) : o2(t3 = n(t3, s(t3, true), r.String), i3 = n(i3, s(i3, true), r.String));
103
+ })(e2, t2, i2, de), "=": (e2, t2, n2) => Re(e2, t2, n2, me), "<>": (e2, t2, n2) => Re(e2, t2, n2, Ee), ">": (e2, t2, n2) => Re(e2, t2, n2, Ae), "<": (e2, t2, n2) => Re(e2, t2, n2, Ie), ">=": (e2, t2, n2) => Re(e2, t2, n2, Ne), "<=": (e2, t2, n2) => Re(e2, t2, n2, Oe) }, we = { "-": (e2, t2) => ve("-", t2), "+": (e2, t2) => ve("+", t2), "@": (t2, n2) => {
104
+ if (!n2 || !n2.isIReferenceRange) return n2;
105
+ const r2 = n2.getCoords(), s2 = n2, i2 = t2.getPosition(), o2 = s2.getHeight(), a2 = s2.getWidth();
106
+ if (a2 > 1 && o2 > 1) return e.BuiltIn.Value;
107
+ if (o2 > 1) {
108
+ const e2 = i2.rowIndex - r2.rowStart;
109
+ if (e2 >= 0 && e2 < o2) return s2.getValueAt(e2, 0);
110
+ } else {
111
+ if (!(a2 > 1)) return s2.getValueAt(0, 0);
112
+ {
113
+ const e2 = i2.colIndex - r2.colStart;
114
+ if (e2 >= 0 && e2 < a2) return s2.getValueAt(0, e2);
115
+ }
116
+ }
117
+ return e.BuiltIn.Value;
118
+ } }, Ce = { "%": (e2, t2) => Te(e2, t2, 100, he), "#": (t2, n2) => {
119
+ const r2 = t2.getSpillAt(n2.rowStart, n2.colStart);
120
+ return r2 || e.BuiltIn.Ref;
121
+ } };
122
+ function _e(e2) {
123
+ const t2 = (e2 = e2.toUpperCase()).length;
124
+ let n2 = 0;
125
+ for (let r2 = 0; r2 < t2; r2++) {
126
+ const s2 = e2.charCodeAt(r2);
127
+ isNaN(s2) || (n2 += (s2 - 64) * 26 ** (t2 - r2 - 1));
128
+ }
129
+ return n2;
130
+ }
131
+ function Me(e2) {
132
+ return { type: "cell", value: Object.freeze({ colIndex: e2.colIndex, rowIndex: e2.rowIndex, $colIndex: e2.$colIndex || false, $rowIndex: e2.$rowIndex || false }), inputs: null, isReference: true };
133
+ }
134
+ function be(e2, t2) {
135
+ const n2 = e2.startsWith("$");
136
+ n2 && (e2 = e2.substring(1));
137
+ let r2 = parseInt(e2) - 1;
138
+ return n2 || r2 === Number.MIN_SAFE_INTEGER || (r2 -= t2.colIndex), { type: "cell", value: Object.freeze({ colIndex: Number.MIN_SAFE_INTEGER, $colIndex: false, rowIndex: r2, $rowIndex: n2 }), inputs: null, isReference: true };
139
+ }
140
+ function Pe(e2, t2) {
141
+ return { type: "function", value: e2 = e2.toUpperCase(), inputs: t2 };
142
+ }
143
+ function Be(e2, t2) {
144
+ return { type: "tableReference", value: e2, inputs: t2 };
145
+ }
146
+ function Fe(e2) {
147
+ return { type: "tableSpecifier", value: e2, inputs: null, isReference: true };
148
+ }
149
+ function $e(e2, t2, n2, r2 = false) {
150
+ const s2 = { type: "infix", value: e2, inputs: [t2, n2] };
151
+ return r2 && (s2.isReference = true), s2;
152
+ }
153
+ function We(e2, t2, n2 = false) {
154
+ const r2 = { type: "postfix", value: e2, inputs: [t2] };
155
+ return n2 && (r2.isReference = true), r2;
156
+ }
157
+ function ze(e2, t2, n2 = false) {
158
+ const r2 = { type: "prefix", value: e2, inputs: [t2] };
159
+ return n2 && (r2.isReference = true), r2;
160
+ }
161
+ function ke(e2) {
162
+ return { type: "named", value: e2, inputs: null, isReference: true };
163
+ }
164
+ function Ve(e2) {
165
+ return { type: "number", value: Number(e2), isLiteral: true };
166
+ }
167
+ function Ge(e2) {
168
+ let t2 = e2;
169
+ const n2 = e2 && e2.length > 1 && '"' === e2[0] && '"' === e2[e2.length - 1];
170
+ return n2 && (t2 = e2.substring(1, e2.length - 1)), { type: n2 ? "quotedString" : "string", value: t2, isLiteral: true };
171
+ }
172
+ function qe(e2) {
173
+ return { type: "boolean", value: "TRUE" === e2 || "TRUE" === e2.toUpperCase(), isLiteral: true };
174
+ }
175
+ function je(t2) {
176
+ return { type: "error", value: e.getBuiltInByLabel(t2.toUpperCase()), isLiteral: true };
177
+ }
178
+ function Ye(t2) {
179
+ return { type: "error", value: t2 ? e.getBuiltInByLabel(t2.toUpperCase()) : e.BuiltIn.Ref, inputs: null, isReference: true };
180
+ }
181
+ function De(e2, t2) {
182
+ const n2 = function e3(n3, r2) {
183
+ const s2 = n3.inputs;
184
+ let i2;
185
+ if (s2) {
186
+ const t3 = s2.length;
187
+ for (let r3 = 0; r3 < t3; r3++) {
188
+ const t4 = s2[r3], o3 = e3(t4, n3);
189
+ o3 !== t4 && (i2 || (i2 = [...s2]), i2[r3] = o3);
190
+ }
191
+ }
192
+ const o2 = i2 ? { ...n3, inputs: i2 } : n3, a2 = t2(o2, r2);
193
+ return void 0 === a2 ? o2 : a2;
194
+ }(e2, void 0);
195
+ return n2 || this;
196
+ }
197
+ function Ze(e2, t2) {
198
+ let n2 = 0, r2 = De(e2, (e3) => {
199
+ const t3 = { ...e3 };
200
+ return t3.evalIndex = n2++, t3;
201
+ });
202
+ const s2 = new Array(n2), o2 = /* @__PURE__ */ new Set(), a2 = /* @__PURE__ */ new Map();
203
+ let l2;
204
+ const u2 = /* @__PURE__ */ new Map(), c2 = [], p2 = [];
205
+ r2 = De(r2, (e3, t3) => {
206
+ const n3 = e3.type, r3 = e3.evalIndex;
207
+ if (s2[r3] = null, e3.isReference) {
208
+ const t4 = e3, r4 = { node: e3, index: u2.size, op: null, value: null, inputs: null };
209
+ if (u2.set(t4, r4), "cell" === n3) {
210
+ const n4 = t4.value;
211
+ return n4.$colIndex && (r4.hasHorizontalAbs = true), n4.$rowIndex && (r4.hasVerticalAbs = true), r4.value = a2.size, a2.set(t4, a2.size), o2.add(r4), e3.refIndex = p2.length, void p2.push(r4.index);
212
+ }
213
+ if ("infix" === n3 || "prefix" === n3 || "postfix" === n3 || "spill" === n3) {
214
+ const n4 = t4.inputs, s3 = n4.length, i2 = e3.value;
215
+ r4.op = i2;
216
+ const a3 = new Array(s3);
217
+ r4.inputs = a3;
218
+ for (let e4 = 0; e4 < s3; e4++) {
219
+ const t5 = n4[e4], s4 = u2.get(t5);
220
+ s4 && (s4.hasHorizontalAbs && (r4.hasHorizontalAbs = true), s4.hasVerticalAbs && (r4.hasVerticalAbs = true)), a3[e4] = s4 ? s4.index : -1, o2.delete(s4);
221
+ }
222
+ if (o2.add(r4), Je.includes(i2)) {
223
+ const t5 = n4[0], s4 = !!t5 && "cell" === t5.type, i3 = n4[1], o3 = !!i3 && "cell" === i3.type;
224
+ s4 && o3 && (p2.splice(i3.refIndex, 1), i3.refIndex = t5.refIndex, e3.refIndex = t5.refIndex, p2[t5.refIndex] = r4.index);
225
+ } else "#" === i2 && (e3.refIndex = n4[0].refIndex);
226
+ return void c2.push(e3);
227
+ }
228
+ if ("error" === n3 || "named" === n3) {
229
+ l2 || (l2 = /* @__PURE__ */ new Map());
230
+ const s3 = t4.value;
231
+ let i2 = l2.get(s3);
232
+ return r4.op = n3, void 0 === i2 && (i2 = l2.size, l2.set(s3, i2)), r4.value = i2, o2.add(r4), e3.refIndex = p2.length, void p2.push(r4.index);
233
+ }
234
+ "tableReference" === n3 && (r4.op = n3), "tableSpecifier" === n3 && (r4.op = n3), "structuredArg" === n3 && (r4.op = n3);
235
+ } else if (t3 && t3.isReference) {
236
+ const t4 = e3, n4 = { node: e3, index: u2.size, op: "function", value: e3.value, inputs: null };
237
+ u2.set(t4, n4);
238
+ }
239
+ if (e3.isLiteral) if ("array" !== n3) s2[r3] = e3.value;
240
+ else {
241
+ const t4 = e3.value, n4 = t4.length, o3 = new Array(n4);
242
+ for (let e4 = 0; e4 < n4; e4++) {
243
+ const n5 = t4[e4].value, r4 = n5.length, s3 = new Array(r4);
244
+ for (let e5 = 0; e5 < r4; e5++) {
245
+ const t5 = n5[e5];
246
+ let r5 = t5.value;
247
+ if ("prefix" === t5.type) {
248
+ const e6 = t5.value;
249
+ r5 = t5.inputs[0].value, "-" === e6 && (r5 = -r5);
250
+ }
251
+ s3[e5] = r5;
252
+ }
253
+ o3[e4] = s3;
254
+ }
255
+ s2[r3] = i(o3);
256
+ }
257
+ else {
258
+ if ("empty" !== n3) return c2.push(e3), e3;
259
+ s2[r3] = void 0;
260
+ }
261
+ });
262
+ const f2 = new Array(a2.size);
263
+ a2.forEach((e3, t3) => {
264
+ const n3 = t3.value, r3 = n3.colIndex, s3 = n3.rowIndex, i2 = n3.$colIndex, o3 = n3.$rowIndex, a3 = { colStart: r3, rowStart: s3, colEnd: r3, rowEnd: s3, $colStart: i2, $rowStart: o3, $colEnd: i2, $rowEnd: o3 };
265
+ r3 === Number.MIN_SAFE_INTEGER && (a3.colEnd = Number.MAX_SAFE_INTEGER), s3 === Number.MIN_SAFE_INTEGER && (a3.rowEnd = Number.MAX_SAFE_INTEGER), n3.sheetName && (a3.sheetName = n3.sheetName), f2[e3] = a3;
266
+ });
267
+ const h2 = f2.length, g2 = new Array(h2);
268
+ for (let e3 = 0; e3 < h2; e3++) g2[e3] = { colStart: 0, rowStart: 0, colEnd: 0, rowEnd: 0, sheetName: null };
269
+ const d2 = new Array(u2.size);
270
+ let m2;
271
+ u2.forEach((e3) => {
272
+ d2[e3.index] = e3;
273
+ }), l2 && (m2 = [], l2.forEach((e3, t3) => {
274
+ m2.push(t3);
275
+ }));
276
+ const E2 = [];
277
+ o2.forEach((e3) => {
278
+ E2.push(e3.index);
279
+ });
280
+ const A2 = c2.length;
281
+ for (let e3 = 0; e3 < A2; e3++) {
282
+ const t3 = c2[e3], n3 = t3.type;
283
+ if ("infix" === n3) {
284
+ const e4 = t3.value;
285
+ t3.fn = ye[e4];
286
+ } else if ("prefix" === n3) {
287
+ const e4 = t3.value;
288
+ t3.fn = we[e4];
289
+ } else if ("postfix" === n3) {
290
+ const e4 = t3.value;
291
+ t3.fn = Ce[e4];
292
+ }
293
+ }
294
+ const N2 = function(e3) {
295
+ const t3 = [], n3 = (e4, n4) => {
296
+ const r4 = { type: e4.type, value: e4.value };
297
+ void 0 !== e4.evalIndex && (r4.evalIndex = e4.evalIndex), void 0 !== e4.refIndex && (r4.refIndex = e4.refIndex), n4 && (r4.ctx = n4), t3.push(r4);
298
+ }, r3 = (e4, n4, r4, s4) => {
299
+ if (null == n4) return;
300
+ if (t3.length > 1 && "whitespace" === e4 && "whitespace" === t3[t3.length - 1].type) return;
301
+ const i2 = { type: e4, value: n4 };
302
+ r4 && (i2.ctx = r4), void 0 !== s4 && (i2.evalIndex = s4), t3.push(i2);
303
+ };
304
+ !function e4(t4, s4, i2) {
305
+ const o3 = t4.evalIndex ?? i2 ?? 0, a3 = t4.type, l3 = (t5, n4, s5) => {
306
+ if (!t5) return;
307
+ const i3 = t5.length;
308
+ for (let o4 = 0; o4 < i3; o4++) e4(t5[o4], n4, s5), o4 < i3 - 1 && r3("comma", ",", n4);
309
+ };
310
+ if (t4.isLiteral) {
311
+ if (r3("whitespace", t4.wsBefore, s4), "array" === a3) {
312
+ r3("type", "{", s4);
313
+ const n4 = t4.value, i3 = n4.length;
314
+ for (let t5 = 0; t5 < i3; t5++) {
315
+ const a4 = n4[t5], l4 = a4.value, u3 = l4.length;
316
+ for (let t6 = 0; t6 < u3; t6++) {
317
+ const n5 = l4[t6];
318
+ r3("whitespace", n5.wsBefore, s4), e4(n5, s4, o3), r3("whitespace", n5.wsAfter, s4), t6 < u3 - 1 && r3("comma", ",", s4);
319
+ }
320
+ t5 < i3 - 1 && (r3("whitespace", a4.wsBefore, s4), r3("comma", ";", s4), r3("whitespace", a4.wsAfter, s4));
321
+ }
322
+ t4.error || r3("type", "}", s4);
323
+ } else "quotedString" === a3 ? (t4 = { type: a3, value: '"' + t4.value + '"' }, n3(t4, s4)) : n3(t4, s4);
324
+ r3("whitespace", t4.wsAfter, s4);
325
+ } else if ("infix" === a3) e4(t4.inputs[0], s4, o3), r3("whitespace", t4.wsBefore, s4), n3(t4, s4), r3("whitespace", t4.wsAfter, s4), e4(t4.inputs[1], s4, o3);
326
+ else if ("prefix" === a3) r3("whitespace", t4.wsBefore, s4), n3(t4, s4), r3("whitespace", t4.wsAfter, s4), e4(t4.inputs[0], s4, o3);
327
+ else if ("postfix" === a3) e4(t4.inputs[0], s4, o3), r3("whitespace", t4.wsBefore, s4), n3(t4, s4), r3("whitespace", t4.wsAfter, s4);
328
+ else {
329
+ r3("whitespace", t4.wsBefore, s4);
330
+ const i3 = t4.inputs;
331
+ switch (a3) {
332
+ case "function":
333
+ n3(t4, s4);
334
+ const u3 = { name: String(t4.value), argIndex: -1 };
335
+ if (r3("paren", "(", u3, t4.evalIndex), i3) {
336
+ const t5 = i3.length;
337
+ for (let n4 = 0; n4 < t5; n4++) {
338
+ const s5 = { ...u3, argIndex: n4 };
339
+ e4(i3[n4], s5, o3), n4 < t5 - 1 && r3("comma", ",", s5);
340
+ }
341
+ }
342
+ t4.error || r3("paren", ")", u3, t4.evalIndex);
343
+ break;
344
+ case "cell":
345
+ n3(t4, s4);
346
+ break;
347
+ case "paren":
348
+ r3(a3, "(", s4, o3), l3(i3, s4, o3), t4.error || r3(a3, ")", s4, o3);
349
+ break;
350
+ case "squareParen":
351
+ r3(a3, "[", s4, o3), l3(i3, s4, o3), t4.error || r3(a3, "]", s4, o3);
352
+ break;
353
+ case "tableReference":
354
+ n3(t4, s4);
355
+ const c3 = { name: String(t4.value), argIndex: -1 };
356
+ if (r3("paren", "[", c3), i3) {
357
+ const t5 = i3.length;
358
+ for (let n4 = 0; n4 < t5; n4++) {
359
+ const s5 = { ...c3, argIndex: n4 };
360
+ e4(i3[n4], s5, o3), n4 < t5 - 1 && r3("comma", ",", s5);
361
+ }
362
+ }
363
+ t4.error || r3("paren", "]", c3);
364
+ break;
365
+ default:
366
+ void 0 !== t4.value && n3(t4, s4), i3 && i3.forEach((t5) => e4(t5, s4, o3));
367
+ }
368
+ r3("whitespace", t4.wsAfter, s4);
369
+ }
370
+ }(e3);
371
+ const s3 = t3.length;
372
+ for (let e4 = 0; e4 < s3; e4++) {
373
+ const n4 = t3[e4];
374
+ if ("whitespace" === n4.type && void 0 === n4.evalIndex) {
375
+ const r4 = t3[e4 + 1];
376
+ r4 && void 0 !== r4.evalIndex && (n4.evalIndex = r4.evalIndex);
377
+ }
378
+ }
379
+ return t3;
380
+ }(r2);
381
+ return { ast: r2, evaluations: s2, executions: c2, precedentsAbsolute: g2, precedentsExecute: d2, precedentsNamed: m2, precedentsRelative: f2, precedentsRoot: E2, references: p2, tokens: N2, error: t2 };
382
+ }
383
+ function He(t2, n2) {
384
+ let r2, s2 = -1, i2 = "";
385
+ Number.isSafeInteger(t2.previousToken?.startLine) ? (s2 = t2.previousToken.startLine, r2 = t2.previousToken.endColumn + 1) : Number.isSafeInteger(t2.token?.startLine) && (s2 = t2.token.startLine, r2 = t2.token.startColumn), -1 !== s2 ? (i2 += "\n" + n2.split("\n")[s2 - 1] + "\n", i2 += Array(r2 - 1).fill(" ").join("") + "^\n", i2 += `Error at position ${s2}:${r2}
386
+ ` + t2.message, t2.errorLocation = { line: s2, column: r2 }) : i2 = n2 + "\n" + t2.message;
387
+ const o2 = new e.Parse(i2);
388
+ return o2.details = t2, o2;
389
+ }
390
+ const Ke = function(e2, t2) {
391
+ return t2.wsBefore && (e2.wsBefore = t2.wsBefore), t2.wsAfter && (e2.wsAfter = t2.wsAfter), t2.image && (e2.image = t2.image), e2;
392
+ }, Qe = "_XLFN.", Xe = Object.freeze([[":", ".:.", ".:", , ":."], ["^"], ["*", "/"], ["+", "-"], ["&"], ["<", ">", "=", "<>", "<=", ">="]]), Je = Object.freeze([":", ".:.", ".:", , ":."]), et = Object.freeze([":", " ", ".:.", ".:", , ":."]), tt = Object.freeze(["@"]), nt = Object.freeze(["#"]), rt = Object.freeze(et.concat(tt).concat(nt)), { String: st, SheetQuoted: it, SingleQuotedString: ot, FunctionToken: at, NamedTableReference: lt, LiteralError: ut, RefError: ct, Cell: pt, Sheet: ft, Name: ht, NumberToken: gt, Boolean: dt, Column: mt, AbsRow: Et, ImplicitIntersectOp: At, Comma: Nt, RangeUnion: It, RangeTrimFull: Ot, RangeTrimLeading: xt, RangeTrimTrailing: St, Semicolon: Lt, OpenParen: Tt, CloseParen: Rt, OpenSquareParen: vt, CloseSquareParen: Ut, OpenCurlyParen: yt, CloseCurlyParen: wt, MulOp: Ct, PlusOp: _t, DivOp: Mt, MinOp: bt, ConcatOp: Pt, ExOp: Bt, PercentOp: Ft, ArrayAnchorOp: $t, TableSpecifier: Wt, BracketedString: zt, NeqOp: kt, GteOp: Vt, LteOp: Gt, GtOp: qt, EqOp: jt, LtOp: Yt } = le;
393
+ class Dt extends m {
394
+ constructor() {
395
+ super(le, { nodeLocationTracking: "full", maxLookahead: 1, skipValidations: true, recoveryEnabled: true }), this.position = { colIndex: 0, rowIndex: 0 }, this.astErrors = [];
396
+ const e2 = this, t2 = (t3, n2, r2) => {
397
+ let s2;
398
+ e2.CONSUME(n2);
399
+ const i2 = e2.getLexerPosition();
400
+ s2 = e2.ACTION(() => (s2 = { type: t3, value: null, inputs: null }, this._ensureWhitespace(s2, i2, true)));
401
+ const o2 = [], a2 = e2.SUBRULE(e2.intersectOp);
402
+ a2 && o2.push(a2);
403
+ const l2 = e2.SUBRULE(e2.group), u2 = e2.OPTION(() => this.CONSUME(r2));
404
+ return s2 = e2.ACTION(() => {
405
+ if (l2) for (let e3 = 0; e3 < l2.length; e3++) o2.push(l2[e3]);
406
+ return s2 && (u2 || this._reportError(s2, "Missing closing parenthesis", i2), s2.inputs = o2), this._ensureWhitespace(s2, e2.getLexerPosition(), false, true);
407
+ }), s2;
408
+ };
409
+ e2.RULE("infixOp", () => {
410
+ const t3 = [], n2 = [e2.SUBRULE(e2.postfixOp)];
411
+ return e2.MANY(() => {
412
+ const r2 = e2.OR(e2.c1 || (e2.c1 = [{ ALT: () => e2.CONSUME(It).image }, { ALT: () => e2.CONSUME(_t).image }, { ALT: () => e2.CONSUME(bt).image }, { ALT: () => e2.CONSUME(Ct).image }, { ALT: () => e2.CONSUME(Mt).image }, { ALT: () => e2.CONSUME(Bt).image }, { ALT: () => e2.CONSUME(Pt).image }, { ALT: () => e2.CONSUME(qt).image }, { ALT: () => e2.CONSUME(jt).image }, { ALT: () => e2.CONSUME(Yt).image }, { ALT: () => e2.CONSUME(kt).image }, { ALT: () => e2.CONSUME(Vt).image }, { ALT: () => e2.CONSUME(Gt).image }, { ALT: () => e2.CONSUME(Ot).image }, { ALT: () => e2.CONSUME(xt).image }, { ALT: () => e2.CONSUME(St).image }]));
413
+ t3.push([r2, e2.getLexerPosition(), rt.includes(r2)]), n2.push(e2.SUBRULE2(e2.postfixOp));
414
+ }), e2.ACTION(() => {
415
+ let e3 = t3.length;
416
+ const r2 = Xe.length;
417
+ for (let s2 = 0; e3 > 0 && s2 < r2; s2++) {
418
+ const r3 = Xe[s2];
419
+ let i2 = t3.length;
420
+ for (let s3 = 0; s3 < i2; s3++) {
421
+ const o2 = t3[s3], a2 = o2[0];
422
+ if (!r3.includes(a2)) continue;
423
+ let l2 = $e(a2, n2[s3], n2[s3 + 1], o2[2]);
424
+ l2 = this._ensureWhitespace(l2, o2[1]), t3.splice(s3, 1), n2.splice(s3, 2, l2), s3--, i2--, e3--;
425
+ }
426
+ }
427
+ }), n2[0];
428
+ }), e2.RULE("plusMinusOp", () => e2.OR([{ ALT: () => e2.CONSUME(_t).image }, { ALT: () => e2.CONSUME(bt).image }])), e2.RULE("postfixOp", () => {
429
+ let t3 = e2.SUBRULE(e2.prefixOp);
430
+ const n2 = [];
431
+ return e2.MANY(() => {
432
+ const t4 = e2.OR([{ ALT: () => e2.CONSUME(Ft).image }, { ALT: () => e2.CONSUME($t).image }]);
433
+ e2.ACTION(() => {
434
+ n2.push([t4, e2.getLexerPosition()]);
435
+ });
436
+ }), e2.ACTION(() => {
437
+ const e3 = n2.length;
438
+ if (0 !== e3) for (let r2 = 0; r2 < e3; r2++) {
439
+ const e4 = n2[r2], s2 = e4[0], i2 = e4[1], o2 = rt.includes(s2);
440
+ t3 = We(s2, t3, o2), t3 = this._ensureWhitespace(t3, i2);
441
+ }
442
+ }), t3;
443
+ }), e2.RULE("prefixOp", () => {
444
+ const t3 = [];
445
+ e2.MANY(() => {
446
+ const n3 = e2.OR([{ ALT: () => e2.CONSUME(_t).image }, { ALT: () => e2.CONSUME(bt).image }, { ALT: () => e2.CONSUME(At).image }]);
447
+ e2.ACTION(() => {
448
+ t3.push([n3, e2.getLexerPosition()]);
449
+ });
450
+ });
451
+ let n2 = e2.SUBRULE(e2.formula);
452
+ return e2.ACTION(() => {
453
+ const e3 = t3.length;
454
+ if (0 !== e3) for (let r2 = e3 - 1; r2 >= 0; r2--) {
455
+ const e4 = t3[r2], s2 = e4[0], i2 = e4[1], o2 = rt.includes(s2);
456
+ n2 = ze(s2, n2, o2), n2 = this._ensureWhitespace(n2, i2);
457
+ }
458
+ }), n2;
459
+ }), e2.RULE("intersectOp", () => {
460
+ const t3 = [e2.SUBRULE(e2.infixOp)];
461
+ return e2.MANY(() => {
462
+ e2.OPTION({ GATE: () => {
463
+ const t4 = e2.LA(0);
464
+ return e2.LA(1).startOffset > t4.endOffset + 1;
465
+ }, DEF: () => {
466
+ t3.push(e2.SUBRULE3(e2.infixOp));
467
+ } });
468
+ }), e2.ACTION(() => {
469
+ for (; t3.length > 1; ) {
470
+ let e3 = t3.length - 1;
471
+ for (let n2 = 0; n2 < e3; n2++) {
472
+ const r2 = t3[n2], s2 = t3[n2 + 1], i2 = $e(" ", r2, s2, true);
473
+ if (delete r2.wsAfter, s2.wsBefore) {
474
+ const e4 = s2.wsBefore.slice(0, -1), t4 = e4.length;
475
+ delete s2.wsBefore, t4 > 0 && (i2.wsBefore = e4);
476
+ }
477
+ n2 + 1 < e3 && delete s2.wsAfter, t3.splice(n2, 2, i2), n2--, e3--;
478
+ }
479
+ }
480
+ }), t3[0];
481
+ }), e2.RULE("formula", () => e2.OR9([{ ALT: () => e2.SUBRULE(e2.referenceWithoutInfix) }, { ALT: () => e2.SUBRULE(e2.function) }, { ALT: () => e2.SUBRULE(e2.paren) }, { ALT: () => e2.SUBRULE(e2.namedTableReference) }, { ALT: () => e2.SUBRULE(e2.bracketedString) }, { ALT: () => e2.SUBRULE(e2.squareParen) }, { ALT: () => e2.SUBRULE(e2.literal) }, { ALT: () => e2.SUBRULE(e2.literalArray) }])), e2.RULE("group", () => {
482
+ const t3 = [];
483
+ return e2.MANY(() => {
484
+ e2.CONSUME(Nt);
485
+ const n2 = e2.SUBRULE2(e2.intersectOp);
486
+ e2.ACTION(() => {
487
+ t3.push(n2);
488
+ });
489
+ }), t3;
490
+ }), e2.RULE("paren", () => t2("paren", Tt, Rt)), e2.RULE("literalArray", () => {
491
+ let t3 = { type: "row", value: [], isLiteral: true };
492
+ e2.CONSUME(yt);
493
+ const n2 = e2.getLexerPosition();
494
+ let r2 = e2.ACTION(() => this._ensureWhitespace({ type: "array", value: [t3], isLiteral: true }, n2, true));
495
+ const s2 = e2.SUBRULE(e2.literalForArray);
496
+ e2.ACTION(() => {
497
+ t3.value.push(s2);
498
+ }), e2.MANY(() => {
499
+ const n3 = e2.OR([{ ALT: () => e2.CONSUME(Nt).image }, { ALT: () => e2.CONSUME(Lt).image }]), s3 = e2.SUBRULE2(e2.literalForArray);
500
+ e2.ACTION(() => {
501
+ "," === n3 || (t3 = { type: "row", value: [], isLiteral: true }, r2.value.push(t3)), t3.value.push(s3);
502
+ });
503
+ });
504
+ const i2 = e2.OPTION(() => this.CONSUME(wt));
505
+ return r2 = e2.ACTION(() => (i2 || this._reportError(r2, "Missing closing parenthesis '}'", n2), this._ensureWhitespace(r2, e2.getLexerPosition(), false, true))), r2;
506
+ }), e2.RULE("literalForArray", () => e2.OR([{ ALT: () => {
507
+ const t3 = e2.OPTION(() => e2.SUBRULE(e2.plusMinusOp)), n2 = e2.CONSUME(gt), r2 = e2.ACTION(() => this._ensureWhitespace(Ve(n2.image), e2.getLexerPosition()));
508
+ return t3 ? e2.ACTION(() => /* @__PURE__ */ function(e3, t4) {
509
+ return { type: "prefix", value: e3, inputs: [t4] };
510
+ }(t3, r2)) : r2;
511
+ } }, { ALT: () => {
512
+ const t3 = e2.CONSUME(st);
513
+ return e2.ACTION(() => this._ensureWhitespace(Ge(t3.image), e2.getLexerPosition()));
514
+ } }, { ALT: () => {
515
+ const t3 = e2.CONSUME(dt);
516
+ return e2.ACTION(() => this._ensureWhitespace(qe(t3.image), e2.getLexerPosition()));
517
+ } }, { ALT: () => {
518
+ const t3 = e2.CONSUME(ut);
519
+ return e2.ACTION(() => this._ensureWhitespace(je(t3.image), e2.getLexerPosition()));
520
+ } }, { ALT: () => {
521
+ const t3 = e2.CONSUME(ct);
522
+ return e2.ACTION(() => this._ensureWhitespace(Ye(t3.image), e2.getLexerPosition()));
523
+ } }])), e2.RULE("literal", () => e2.OR([{ ALT: () => {
524
+ const t3 = e2.CONSUME(gt);
525
+ return e2.ACTION(() => this._ensureWhitespace(Ve(t3.image), e2.getLexerPosition()));
526
+ } }, { ALT: () => {
527
+ const t3 = e2.CONSUME(st);
528
+ return e2.ACTION(() => this._ensureWhitespace(Ge(t3.image), e2.getLexerPosition()));
529
+ } }, { ALT: () => {
530
+ const t3 = e2.CONSUME(dt);
531
+ return e2.ACTION(() => this._ensureWhitespace(qe(t3.image), e2.getLexerPosition()));
532
+ } }, { ALT: () => {
533
+ const t3 = e2.CONSUME(ut);
534
+ return e2.ACTION(() => this._ensureWhitespace(je(t3.image), e2.getLexerPosition()));
535
+ } }])), e2.RULE("function", () => {
536
+ const t3 = e2.CONSUME(at).image.slice(0, -1), n2 = e2.getLexerPosition(), r2 = e2.SUBRULE(e2.functionArguments);
537
+ let s2 = e2.ACTION(() => this._ensureWhitespace(Pe(t3, r2), n2, true));
538
+ const i2 = e2.OPTION(() => this.CONSUME(Rt));
539
+ return s2 = e2.ACTION(() => (i2 || this._reportError(s2, "Missing closing parenthesis ')'", n2), this._ensureWhitespace(s2, e2.getLexerPosition(), false, true))), s2;
540
+ }), e2.RULE("functionArguments", () => {
541
+ const t3 = [];
542
+ return e2.MANY2(() => {
543
+ let n2;
544
+ e2.CONSUME2(Nt), n2 = e2.ACTION(() => this._ensureWhitespace({ type: "empty", value: "" }, e2.getLexerPosition(), false, true)), t3.push(n2);
545
+ }), e2.OPTION(() => {
546
+ t3.push(e2.SUBRULE(e2.intersectOp)), e2.MANY(() => {
547
+ let n2;
548
+ e2.CONSUME1(Nt), n2 = e2.ACTION(() => this._ensureWhitespace({ type: "empty", value: "" }, e2.getLexerPosition(), false, true)), t3.push(n2), e2.OPTION3(() => {
549
+ t3.pop(), t3.push(e2.SUBRULE2(e2.intersectOp));
550
+ });
551
+ });
552
+ }), t3;
553
+ }), e2.RULE("bracketedString", () => {
554
+ const t3 = e2.CONSUME(zt), n2 = e2.getLexerPosition();
555
+ return e2.ACTION(() => {
556
+ const r2 = t3.image;
557
+ let s2 = Be("", [Fe(r2.substring(1, r2.length - 1))]);
558
+ return s2 = this._ensureWhitespace(s2, n2, true, false), s2 = this._ensureWhitespace(s2, e2.getLexerPosition(), false, true), s2;
559
+ });
560
+ }), e2.RULE("squareParen", () => {
561
+ e2.CONSUME(vt);
562
+ const t3 = e2.getLexerPosition();
563
+ let n2 = Be("", [e2.SUBRULE(e2.structuredArgument)]);
564
+ const r2 = e2.OPTION(() => this.CONSUME(Ut));
565
+ return e2.ACTION(() => {
566
+ r2 || this._reportError(n2, "Missing closing parenthesis ']'", t3), n2 = this._ensureWhitespace(n2, t3, true, false), n2 = this._ensureWhitespace(n2, e2.getLexerPosition(), false, true);
567
+ }), n2;
568
+ }), e2.RULE("namedTableReference", () => {
569
+ const t3 = e2.CONSUME(lt).image.slice(0, -1), n2 = e2.getLexerPosition(), r2 = e2.SUBRULE(e2.structuredArguments);
570
+ let s2 = e2.ACTION(() => this._ensureWhitespace(Be(t3, r2), n2, true));
571
+ const i2 = e2.OPTION(() => this.CONSUME(Ut));
572
+ return s2 = e2.ACTION(() => (i2 || this._reportError(s2, "Missing closing parenthesis ']'", n2), this._ensureWhitespace(s2, e2.getLexerPosition(), false, true))), s2;
573
+ }), e2.RULE("structuredArguments", () => {
574
+ const t3 = [];
575
+ return e2.MANY2(() => {
576
+ e2.CONSUME2(Nt), e2.ACTION(() => {
577
+ t3.push(this._ensureWhitespace({ type: "empty", value: "" }, e2.getLexerPosition(), false, true));
578
+ });
579
+ }), e2.OPTION(() => {
580
+ const n2 = e2.SUBRULE(e2.structuredArgument);
581
+ e2.ACTION(() => {
582
+ n2 && t3.push(n2);
583
+ }), e2.MANY(() => {
584
+ e2.CONSUME1(Nt), e2.OPTION3(() => {
585
+ let n3 = e2.SUBRULE2(e2.structuredArgument);
586
+ e2.ACTION(() => {
587
+ n3 || (n3 = this._ensureWhitespace({ type: "empty", value: "" }, e2.getLexerPosition(), false, true)), t3.push(n3);
588
+ });
589
+ });
590
+ });
591
+ }), t3;
592
+ }), e2.RULE("structuredArgument", () => {
593
+ const t3 = e2.OPTION(() => e2.CONSUME(At)), n2 = e2.getLexerPosition(), r2 = e2.OPTION2(() => this.CONSUME(vt));
594
+ let s2 = e2.OR([{ ALT: () => {
595
+ const t4 = e2.CONSUME(Wt);
596
+ return e2.ACTION(() => this._ensureWhitespace(Fe(t4.image), e2.getLexerPosition()));
597
+ } }, { ALT: () => {
598
+ const t4 = e2.CONSUME(zt);
599
+ return e2.ACTION(() => this._ensureWhitespace(Fe(t4.image), e2.getLexerPosition()));
600
+ } }, { ALT: () => {
601
+ const t4 = e2.CONSUME(ht);
602
+ return e2.ACTION(() => this._ensureWhitespace(ke(t4.image), e2.getLexerPosition()));
603
+ } }, { ALT: () => {
604
+ const t4 = e2.CONSUME(ot);
605
+ return e2.ACTION(() => this._ensureWhitespace(Ge(t4.image), e2.getLexerPosition()));
606
+ } }]);
607
+ if (r2) {
608
+ const t4 = e2.OPTION3(() => this.CONSUME(Rt));
609
+ e2.ACTION(() => (t4 || this._reportError(s2, "Missing closing parenthesis ']'", n2), this._ensureWhitespace(s2, e2.getLexerPosition(), false, true))), s2 = { type: "structuredArg", value: null, inputs: [s2] };
610
+ }
611
+ return e2.ACTION(() => {
612
+ t3 && (s2 = ze(t3.image, s2, true), s2 = this._ensureWhitespace(s2, e2.getLexerPosition()));
613
+ }), s2;
614
+ }), e2.RULE("referenceWithoutInfix", () => e2.OR([{ ALT: () => e2.SUBRULE(e2.reference) }, { ALT: () => {
615
+ const t3 = e2.SUBRULE(e2.prefixSheetName), n2 = e2.SUBRULE2(e2.formula);
616
+ return e2.ACTION(() => {
617
+ if ((e3 = n2) && e3.isFormulaError) return n2;
618
+ var e3;
619
+ n2.ref && (n2.ref.sheet = t3);
620
+ }), n2;
621
+ } }])), e2.RULE("reference", () => {
622
+ const t3 = e2.OPTION4(() => e2.CONSUME(At));
623
+ let n2 = e2.OR([{ ALT: () => {
624
+ const t4 = e2.CONSUME(pt), n3 = e2.getLexerPosition(), r2 = e2.OPTION(() => e2.CONSUME($t));
625
+ return e2.ACTION(() => {
626
+ const s2 = this._ensureWhitespace(function(e3, t5) {
627
+ const n4 = e3.match(/([$]?)([A-Za-z]{1,3})([$]?)([1-9][0-9]*)/);
628
+ let r3 = _e(n4[2]) - 1;
629
+ const s3 = 1 === n4[1].length;
630
+ let i2 = +n4[4] - 1;
631
+ const o2 = 1 === n4[3].length;
632
+ return s3 || r3 === Number.MIN_SAFE_INTEGER || (r3 -= t5.colIndex), o2 || i2 === Number.MIN_SAFE_INTEGER || (i2 -= t5.rowIndex), { type: "cell", value: Object.freeze({ colIndex: r3, rowIndex: i2, $colIndex: s3, $rowIndex: o2 }), inputs: null, isReference: true };
633
+ }(t4.image, e2.position), n3);
634
+ return r2 ? this._ensureWhitespace(We("#", s2, true), n3) : s2;
635
+ });
636
+ } }, { ALT: () => {
637
+ const t4 = e2.CONSUME(ht);
638
+ return e2.ACTION(() => this._ensureWhitespace(ke(t4.image), e2.getLexerPosition()));
639
+ } }, { ALT: () => {
640
+ const t4 = e2.CONSUME(mt);
641
+ return e2.ACTION(() => this._ensureWhitespace(function(e3, t5) {
642
+ const n3 = e3.startsWith("$");
643
+ n3 && (e3 = e3.substring(1));
644
+ let r2 = _e(e3) - 1;
645
+ return n3 || r2 === Number.MIN_SAFE_INTEGER || (r2 -= t5.colIndex), { type: "cell", value: Object.freeze({ colIndex: r2, rowIndex: Number.MIN_SAFE_INTEGER, $colIndex: n3, $rowIndex: false }), inputs: null, isReference: true };
646
+ }(t4.image, e2.position), e2.getLexerPosition()));
647
+ } }, { ALT: () => {
648
+ const t4 = e2.CONSUME(Et);
649
+ return e2.ACTION(() => this._ensureWhitespace(be(t4.image, e2.position), e2.getLexerPosition()));
650
+ } }, { ALT: () => {
651
+ const t4 = e2.CONSUME(ct);
652
+ return e2.ACTION(() => this._ensureWhitespace(Ye(t4.image), e2.getLexerPosition()));
653
+ } }]);
654
+ return e2.ACTION(() => {
655
+ t3 && (n2 = ze(t3, n2, true), n2 = this._ensureWhitespace(n2, e2.getLexerPosition()));
656
+ }), n2;
657
+ }), e2.RULE("prefixSheetName", () => e2.OR([{ ALT: () => e2.CONSUME(ft).image.slice(0, -1) }, { ALT: () => e2.CONSUME(it).image.slice(1, -2).replace(/''/g, "'") }])), e2.performSelfAnalysis();
658
+ }
659
+ _reportError(e2, t2, n2 = void 0, r2 = "SyntaxError") {
660
+ void 0 === n2 && (n2 = this.getLexerPosition()), e2.error = true, this.astErrors.push({ name: r2, message: t2, previousToken: this.input[n2], ast: e2 });
661
+ }
662
+ _ensureWhitespace(e2, t2, n2 = false, r2 = false) {
663
+ if (!e2) return console.warn("node is null"), e2;
664
+ const s2 = this.input, i2 = s2[t2];
665
+ if (e2.image || (e2.image = i2.image), !r2) {
666
+ const n3 = i2.startOffset, r3 = s2[t2 - 1], o2 = r3?.endOffset ?? -1;
667
+ o2 + 1 < n3 && (e2.wsBefore = " ".repeat(n3 - o2 - 1));
668
+ }
669
+ if (!n2) {
670
+ const n3 = i2.endOffset, r3 = s2[t2 + 1], o2 = r3?.startOffset ?? this.inputTextLength;
671
+ n3 + 1 < o2 && (e2.wsAfter = " ".repeat(o2 - n3 - 1));
672
+ }
673
+ return e2;
674
+ }
675
+ _createAST(t2, n2) {
676
+ const r2 = function(t3) {
677
+ const n3 = ae.tokenize(t3);
678
+ if (n3.errors.length > 0) {
679
+ const r3 = n3.errors[0], s3 = r3.line, i3 = r3.column;
680
+ let o3 = "\n" + t3.split("\n")[s3 - 1] + "\n";
681
+ throw o3 += Array(i3 - 1).fill(" ").join("") + "^\n", r3.message = o3 + `Error at position ${s3}:${i3}
682
+ ` + r3.message, r3.errorLocation = { line: s3, column: i3 }, new e.Parse(r3.message, { line: s3, column: i3, offset: r3.offset, length: r3.length });
683
+ }
684
+ return n3;
685
+ }(n2);
686
+ let s2;
687
+ if (!r2) return s2 = { type: "text", value: n2 }, s2;
688
+ const i2 = r2.tokens;
689
+ this.input = i2, this.inputTextLength = n2.length;
690
+ const o2 = t2.getPosition();
691
+ return this.position = o2, this.astErrors = [], this.reset(), s2 = this.intersectOp(), s2 = De(s2, (e2, t3) => {
692
+ let n3 = e2.type;
693
+ if ("function" === n3 && e2.value && e2.value.toUpperCase().startsWith(Qe)) {
694
+ const t4 = e2.value.substring(6);
695
+ let r4 = e2.image.substring(6), s3 = e2;
696
+ "ANCHORARRAY" === t4 ? (s3 = We("#", e2.inputs[0], true), r4 = "#") : "SINGLE" === t4 ? (s3 = ze("@", e2.inputs[0], true), r4 = "@") : s3 = Pe(t4, e2.inputs), Ke(s3, e2), s3.image = r4, n3 = (e2 = s3).type;
697
+ }
698
+ const r3 = t3?.isReference;
699
+ if (r3) {
700
+ const n4 = t3.value;
701
+ if ((":" === n4 || ".:." === n4 || ".:" === n4 || ":." === n4) && Number.isInteger(e2.value)) {
702
+ const n5 = t3.inputs[0] === e2 ? t3.inputs[1] : t3.inputs[0];
703
+ if (n5 && Number.isInteger(n5.value)) {
704
+ const t4 = be(e2.image, o2);
705
+ return Ke(t4, e2), t4;
706
+ }
707
+ }
708
+ } else if ("cell" === n3) {
709
+ const t4 = e2.value;
710
+ if (t4.rowIndex === Number.MIN_SAFE_INTEGER || t4.colIndex >= 16384) {
711
+ const t5 = ke(e2.image);
712
+ return Ke(t5, e2), t5;
713
+ }
714
+ }
715
+ return e2;
716
+ }), s2;
717
+ }
718
+ build(t2, n2) {
719
+ if (0 === n2.length) throw Error("Input must not be empty.");
720
+ let r2, s2, i2;
721
+ try {
722
+ r2 = this._createAST(t2, n2);
723
+ } catch (t3) {
724
+ i2 = t3 instanceof e.Parse ? t3 : new e.Parse(t3.message, t3);
725
+ }
726
+ const a2 = this.errors;
727
+ if (a2.length > 0) {
728
+ i2 = He(a2[0], n2);
729
+ }
730
+ const l2 = this.astErrors;
731
+ if (l2.length > 0) {
732
+ i2 = He(l2[0], n2);
733
+ }
734
+ return s2 = r2 ? Ze(r2, i2) : { ast: null, evaluations: o.EmptyArray, executions: o.EmptyArray, precedentsAbsolute: o.EmptyArray, precedentsExecute: o.EmptyArray, precedentsNamed: null, precedentsRelative: o.EmptyArray, precedentsRoot: o.EmptyArray, references: o.EmptyArray, tokens: o.EmptyArray, error: i2 }, s2;
735
+ }
736
+ }
737
+ class Zt {
738
+ constructor(e2, t2) {
739
+ this._options = e2, this._compiled = t2;
740
+ }
741
+ getTextAt(e2, t2, n2 = false) {
742
+ return n2 ? l(this._compiled.tokens) : a(this._compiled.tokens, e2, t2);
743
+ }
744
+ getTokens() {
745
+ return this._compiled.tokens;
746
+ }
747
+ getError() {
748
+ return this._compiled.error ?? null;
749
+ }
750
+ isEquals(e2) {
751
+ if (!(e2 && e2 instanceof Zt)) return false;
752
+ if (this === e2) return true;
753
+ const t2 = this._compiled.tokens, n2 = e2._compiled.tokens;
754
+ if (t2.length !== n2.length) return false;
755
+ return l(t2) === l(n2);
756
+ }
757
+ getReferences() {
758
+ const e2 = this._compiled, t2 = e2.references, n2 = t2.length;
759
+ if (0 === n2) return o.EmptyArray;
760
+ const r2 = e2.precedentsExecute, s2 = e2.precedentsRelative, i2 = new Array(n2);
761
+ for (let o2 = 0; o2 < n2; o2++) {
762
+ const n3 = r2[t2[o2]], a2 = n3.inputs;
763
+ if (a2 && 2 === a2.length) {
764
+ const e3 = s2[r2[a2[0]].value], t3 = s2[r2[a2[1]].value];
765
+ i2[o2] = { colStart: e3.colStart, rowStart: e3.rowStart, colEnd: t3.colEnd, rowEnd: t3.rowEnd, $colStart: e3.$colStart, $rowStart: e3.$rowStart, $colEnd: t3.$colEnd, $rowEnd: t3.$rowEnd, sheetName: e3.sheetName };
766
+ } else if ("cell" === n3.node.type) {
767
+ const e3 = s2[n3.value];
768
+ i2[o2] = { ...e3 };
769
+ } else if ("named" === n3.op) {
770
+ const t3 = e2.precedentsNamed;
771
+ i2[o2] = t3[n3.value];
772
+ } else "error" === n3.op && (i2[o2] = n3.node.value);
773
+ }
774
+ return i2;
775
+ }
776
+ setReferenceAt(e2, n2) {
777
+ const r2 = this._compiled, s2 = r2.references;
778
+ if (0 === s2.length) return o.EmptyArray;
779
+ const i2 = r2.precedentsExecute, a2 = s2[e2];
780
+ if (void 0 === a2) throw new Error(`Invalid reference index: ${e2}`);
781
+ const l2 = i2[a2], u2 = l2.node, c2 = u2.inputs ?? o.EmptyArray;
782
+ let p2, f2, h2 = false;
783
+ n2 && (p2 = { colIndex: n2.colStart, rowIndex: n2.rowStart, $colIndex: n2.$colStart ?? false, $rowIndex: n2.$rowStart ?? false }, n2.sheetName && (p2.sheetName = n2.sheetName), h2 = !t.isSingleCell(n2), h2 && (f2 = { colIndex: n2.colEnd, rowIndex: n2.rowEnd, $colIndex: n2.$colEnd ?? false, $rowIndex: n2.$rowEnd ?? false }, n2.colEnd === Number.MAX_SAFE_INTEGER && (f2.colIndex = Number.MIN_SAFE_INTEGER), n2.rowEnd === Number.MAX_SAFE_INTEGER && (f2.rowIndex = Number.MIN_SAFE_INTEGER)));
784
+ const g2 = 2 === c2.length;
785
+ let d2 = -1, m2 = -1;
786
+ if (g2) d2 = c2[0].evalIndex, m2 = c2[1].evalIndex;
787
+ else {
788
+ if ("cell" !== u2.type) throw "named" === l2.op ? new Error("Cannot setReference for a named reference") : new Error(`Invalidate reference index: ${e2}`);
789
+ d2 = u2.evalIndex;
790
+ }
791
+ const E2 = this._compiled.ast, A2 = De(E2, (e3) => {
792
+ if (!e3 || !e3.isReference) return;
793
+ const t2 = e3.type;
794
+ if (!n2 && Je.includes(e3.value)) {
795
+ const e4 = c2[0], t3 = c2[1];
796
+ let n3 = e4.evalIndex === d2, r4 = t3.evalIndex === m2;
797
+ if (n3 || r4) {
798
+ const e5 = Ye();
799
+ return e5.image = "#REF!", e5;
800
+ }
801
+ }
802
+ if (!("cell" === t2 || "error" === t2)) return;
803
+ const r3 = e3.evalIndex;
804
+ let s3, i3 = r3 === d2;
805
+ if (i3 || r3 === m2) {
806
+ if (n2) if (g2 === h2) {
807
+ let t3 = i3 ? p2 : f2;
808
+ s3 = { ...e3 }, s3.value = t3, s3.image = null;
809
+ } else s3 = h2 ? $e(":", Me(p2), Me(f2), true) : Me(p2);
810
+ else s3 = Ye(), s3.image = "#REF!";
811
+ return s3;
812
+ }
813
+ });
814
+ if (A2 === E2) return this;
815
+ const N2 = Ze(A2, this._compiled.error), I2 = this._options;
816
+ return new Zt(I2, N2);
817
+ }
818
+ _resolveNamed(t2, n2, r2, s2) {
819
+ const i2 = this._options?.getNamed;
820
+ if (!i2) return e.BuiltIn.Name;
821
+ let o2 = i2?.(t2, this._options.getSheetName?.())?.[0];
822
+ return o2 ? (o2.isFormulaError || (o2 = u(o2, n2, r2, s2)), o2) : e.BuiltIn.Name;
823
+ }
824
+ getDirectPrecedentsAt(n2, r2, s2 = false, i2, a2) {
825
+ const l2 = this._compiled, c2 = l2.precedentsRoot, p2 = c2.length;
826
+ if (0 === p2) return o.EmptyArray;
827
+ const f2 = l2.precedentsRelative, h2 = l2.precedentsAbsolute, g2 = f2.length;
828
+ for (let e2 = 0; e2 < g2; e2++) {
829
+ const t2 = f2[e2];
830
+ let s3 = h2[e2], i3 = u(t2, n2, r2, s3);
831
+ h2[e2] = i3;
832
+ }
833
+ let d2 = false;
834
+ const m2 = l2.precedentsExecute, E2 = m2.length, A2 = Ht;
835
+ for (let s3 = 0; s3 < E2; s3++) {
836
+ const i3 = m2[s3], o2 = i3.op;
837
+ if (!o2) {
838
+ const e2 = h2[i3.value];
839
+ A2[i3.index] = e2;
840
+ continue;
841
+ }
842
+ if ("named" === o2) {
843
+ d2 = true, A2[i3.index] = this._resolveNamed(i3.node.value, n2, r2);
844
+ continue;
845
+ }
846
+ if ("error" === o2) {
847
+ A2[i3.index] = i3.node.value;
848
+ continue;
849
+ }
850
+ if ("@" === o2 || "#" === o2) {
851
+ A2[i3.index] = A2[i3.inputs[0]];
852
+ continue;
853
+ }
854
+ const a3 = i3.inputs;
855
+ if (!a3) continue;
856
+ let l3 = A2[a3[0]];
857
+ if (void 0 === l3) {
858
+ A2[i3.index] = e.BuiltIn.Value;
859
+ continue;
860
+ }
861
+ if (l3.isFormulaError) {
862
+ A2[i3.index] = l3;
863
+ continue;
864
+ }
865
+ let u2, c3 = A2[a3[1]];
866
+ void 0 !== c3 ? c3.isFormulaError ? A2[i3.index] = c3 : (" " === o2 ? u2 = t.intersectRanges(l3, c3) : ":" !== o2 && ".:." !== o2 && ":." !== o2 && ".:" !== o2 || (u2 = A2[i3.index] = t.unionRanges(l3, c3)), A2[i3.index] = u2 ?? e.BuiltIn.Null) : A2[i3.index] = e.BuiltIn.Value;
867
+ }
868
+ const N2 = new Array(p2);
869
+ for (let e2 = 0; e2 < p2; e2++) {
870
+ const t2 = c2[e2], n3 = A2[t2];
871
+ if (N2[e2] = void 0 !== n3?.rowStart ? { ...n3 } : n3, i2 || a2) {
872
+ const r3 = m2[t2];
873
+ d2 && "named" === r3.op ? (i2 && (i2[e2] = n3.$colStart || n3.$colEnd), a2 && (a2[e2] = n3.$rowStart || n3.$rowEnd)) : (i2 && (i2[e2] = r3.hasVerticalAbs), a2 && (a2[e2] = r3.hasHorizontalAbs));
874
+ }
875
+ }
876
+ return N2;
877
+ }
878
+ evaluate(t2, n2, r2) {
879
+ const s2 = t2.getPosition(), i2 = s2?.rowIndex ?? 0, o2 = s2?.colIndex ?? 0;
880
+ let a2 = this._compiled;
881
+ if (void 0 !== n2) {
882
+ let e2;
883
+ if (De(a2.ast, (t3) => {
884
+ t3.evalIndex === n2 && (e2 = t3);
885
+ }), !e2) throw new Error(`Invalid evalIndex: ${n2}`);
886
+ a2 = Ze(e2, a2.error);
887
+ }
888
+ if (a2.error) return a2.error;
889
+ const l2 = a2.evaluations, c2 = a2.executions;
890
+ let p2, h2;
891
+ r2 || (r2 = this._resolvePrecedents(t2));
892
+ const g2 = a2.precedentsExecute, d2 = a2.precedentsRelative, m2 = a2.precedentsAbsolute, E2 = g2.length;
893
+ for (let e2 = 0; e2 < E2; e2++) {
894
+ const n3 = g2[e2], r3 = n3.op;
895
+ if (r3) {
896
+ if ("named" === r3) {
897
+ const e3 = n3.node;
898
+ let r4 = this._resolveNamed(n3.node.value, i2, o2);
899
+ void 0 !== r4?.colStart && (r4 = t2.getReference(r4)), l2[e3.evalIndex] = r4;
900
+ } else if ("error" === r3) {
901
+ const e3 = n3.node;
902
+ l2[e3.evalIndex] = n3.node.value;
903
+ }
904
+ } else {
905
+ const t3 = d2[n3.value];
906
+ let r4 = m2[e2];
907
+ const s3 = u(t3, i2, o2, r4), a3 = n3.node;
908
+ l2[a3.evalIndex] = s3;
909
+ }
910
+ }
911
+ const A2 = a2.precedentsRoot, N2 = A2.length;
912
+ if (N2 !== r2.length) return e.BuiltIn.Parse;
913
+ for (let e2 = 0; e2 < N2; e2++) {
914
+ const t3 = g2[A2[e2]].node;
915
+ let n3 = r2[e2];
916
+ n3.isIRange && "cell" === t3.type && n3.size > 1 && (n3 = n3.getValueAt(0, 0) ?? null), l2[t3.evalIndex] = n3;
917
+ }
918
+ let I2;
919
+ const O2 = (n3) => {
920
+ const r3 = n3.inputs, s3 = r3 ? r3.length : 0;
921
+ let i3;
922
+ switch (n3.type) {
923
+ case "infix":
924
+ const o3 = n3.value;
925
+ let a3 = l2[r3[0].evalIndex], u2 = l2[r3[1].evalIndex];
926
+ if ("+" === o3 && "number" == typeof a3 && "number" == typeof u2) {
927
+ const e2 = a3 + u2;
928
+ return Math.abs(e2) < 99e-14 ? 0 : e2;
929
+ }
930
+ if ("-" === o3 && "number" == typeof a3 && "number" == typeof u2) {
931
+ const e2 = a3 - u2;
932
+ return Math.abs(e2) < 99e-14 ? 0 : e2;
933
+ }
934
+ if (a3 && a3.isFormulaError) return a3;
935
+ if (u2 && u2.isFormulaError) return u2;
936
+ const c3 = n3.fn;
937
+ return i3 = c3 ? c3(t2, a3, u2) : e.BuiltIn.Value, i3 = f(i3, null), i3;
938
+ case "function":
939
+ I2 || (I2 = new Array(s3)), I2.length !== s3 && (I2.length = s3);
940
+ for (let e2 = 0; e2 < s3; e2++) I2[e2] = l2[r3[e2].evalIndex];
941
+ return i3 = this._callFunction(t2, n3, I2), i3 && "function" == typeof i3.then ? i3.then((r4) => {
942
+ r4 = f(r4, t2), i3 instanceof e.Known && (h2 = i3), l2[n3.evalIndex] = r4;
943
+ }).catch((t3) => {
944
+ const r4 = t3 instanceof e.Known ? t3 : new e.Value("Uncaught error", { cause: t3 });
945
+ l2[n3.evalIndex] = r4;
946
+ }) : i3 instanceof e.Known && (h2 = i3), i3;
947
+ case "prefix":
948
+ case "postfix":
949
+ let p3 = l2[r3[0].evalIndex];
950
+ if (p3 && p3.isFormulaError) return p3;
951
+ const g3 = n3.fn;
952
+ return i3 = g3 ? g3(t2, p3) : e.BuiltIn.Value, i3;
953
+ case "paren":
954
+ if (1 === s3) return l2[r3[0].evalIndex];
955
+ {
956
+ const e2 = new Array(s3);
957
+ for (let t3 = 0; t3 < s3; t3++) e2[t3] = l2[r3[t3].evalIndex];
958
+ return e2;
959
+ }
960
+ case "named":
961
+ return null;
962
+ case "empty":
963
+ return;
964
+ }
965
+ };
966
+ let x2 = c2.length;
967
+ for (let e2 = 0; e2 < x2; e2++) {
968
+ const t3 = c2[e2];
969
+ if (h2) return h2;
970
+ if (p2) p2 = p2.then(() => {
971
+ const e3 = O2(t3);
972
+ return l2[t3.evalIndex] = e3, e3;
973
+ });
974
+ else {
975
+ const e3 = O2(t3);
976
+ l2[t3.evalIndex] = e3, e3 && "function" == typeof e3.then && (p2 = e3);
977
+ }
978
+ }
979
+ if (p2) return p2.then(() => {
980
+ const e2 = l2[l2.length - 1];
981
+ return this._finalizeReturnValue(t2, e2);
982
+ });
983
+ const S2 = l2[l2.length - 1];
984
+ return this._finalizeReturnValue(t2, S2);
985
+ }
986
+ _resolvePrecedents(t2) {
987
+ const n2 = t2.getPosition(), r2 = n2?.rowIndex ?? 0, s2 = n2?.colIndex ?? 0;
988
+ const i2 = this.getDirectPrecedentsAt(r2, s2), a2 = i2.length;
989
+ let l2;
990
+ if (a2 > 0) {
991
+ l2 = new Array(a2);
992
+ for (let n3 = 0; n3 < a2; n3++) {
993
+ const r3 = i2[n3];
994
+ if (r3 instanceof e.Known) l2[n3] = r3;
995
+ else if (Array.isArray(r3)) {
996
+ const e2 = new Array(r3.length);
997
+ for (let n4 = 0; n4 < r3.length; n4++) e2[n4] = t2.getReference(r3[n4]);
998
+ l2[n3] = e2;
999
+ } else l2[n3] = t2.getReference(r3);
1000
+ }
1001
+ } else l2 = o.EmptyArray;
1002
+ return l2;
1003
+ }
1004
+ wrapImplicit(e2, t2, n2) {
1005
+ const r2 = this._compiled.ast;
1006
+ if (!r2 || !r2.isReference) return this;
1007
+ if ("cell" === r2.type) return this;
1008
+ if ("@" === r2.value) return this;
1009
+ if (!n2) return this;
1010
+ const s2 = c(t2) + p(e2);
1011
+ if (n2.has(s2)) return this;
1012
+ const i2 = Ze(ze("@", r2, true), this._compiled.error);
1013
+ return new Zt(this._options, i2);
1014
+ }
1015
+ _callFunction(t2, n2, r2) {
1016
+ const s2 = n2?.cacheFn ?? t2.getFunction(n2.value);
1017
+ if (!s2) return new e.Parse();
1018
+ const i2 = s2.isBuiltIn();
1019
+ let o2;
1020
+ i2 ? n2.cacheFn = s2 : this._context = t2;
1021
+ try {
1022
+ o2 = s2.execute(...r2);
1023
+ } catch (t3) {
1024
+ o2 = t3 instanceof e.Known ? t3 : new e.Value(t3.message, { cause: t3 });
1025
+ }
1026
+ return i2 || (this._context = null), void 0 === o2 ? new e.Parse() : o2;
1027
+ }
1028
+ _finalizeReturnValue(t2, n2) {
1029
+ if (n2 && void 0 !== n2.colStart && (n2 = t2.getValueAt(n2.rowStart, n2.colStart)), Array.isArray(n2)) if (1 === n2.length && Array.isArray(n2[0]) && 1 === n2[0].length) n2 = n2[0][0], Array.isArray(n2) && (n2 = e.BuiltIn.Value);
1030
+ else try {
1031
+ n2 = t2.getRange(n2);
1032
+ } catch (t3) {
1033
+ n2 = e.BuiltIn.Value;
1034
+ }
1035
+ return n2?.isIRange ? 1 === n2.size ? (n2 = n2.getValueAt(0, 0, Kt), null === (n2 = f(n2, t2)) && (n2 = 0)) : n2 = n2.fillEmpty(0) : null === (n2 = f(n2, t2)) && (n2 = 0), n2;
1036
+ }
1037
+ get [Symbol.toStringTag]() {
1038
+ return "[FormulaBlock]";
1039
+ }
1040
+ toString() {
1041
+ const e2 = this._compiled;
1042
+ if (e2.error) return e2.error.toString();
1043
+ const t2 = this._context;
1044
+ if (t2) {
1045
+ const e3 = t2.getPosition();
1046
+ return this.getTextAt(e3.rowIndex, e3.colIndex);
1047
+ }
1048
+ return l(e2.tokens);
1049
+ }
1050
+ }
1051
+ const Ht = new Array(20);
1052
+ for (let e2 = 0; e2 < Ht.length; e2++) Ht[e2] = { colStart: 0, rowStart: 0, colEnd: 0, rowEnd: 0, sheetName: null };
1053
+ const Kt = { type: null };
1054
+ class Qt {
1055
+ constructor(e2) {
1056
+ this._options = { getEntireCoords: h, ...e2 }, this._astBuilder = new Dt();
1057
+ }
1058
+ parse(e2, t2) {
1059
+ const n2 = e2.getPosition();
1060
+ n2.sheetName;
1061
+ const r2 = this._astBuilder.build(e2, t2);
1062
+ return new Zt(this._options, r2);
1063
+ }
1064
+ eval(e2, t2) {
1065
+ return this.parse(e2, t2).evaluate(e2);
1066
+ }
1067
+ }
1068
+ export {
1069
+ Qt as FormulaParser
1070
+ };