@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.
- package/LICENSE.md +11 -0
- package/README.md +30 -0
- package/build/browser/cjs/7Yh1PqgSd93uKFOq.cjs +6 -0
- package/build/browser/cjs/AbBzPqrBe_7Scafy.cjs +6 -0
- package/build/browser/cjs/B2jt9h-29UhlG-ir.cjs +6 -0
- package/build/browser/cjs/BAY6G2idlFTr3aXF.cjs +6 -0
- package/build/browser/cjs/BJAOd8ki61yYMUO8.cjs +6 -0
- package/build/browser/cjs/BNfn1no9QwiHEFwd.cjs +6 -0
- package/build/browser/cjs/BUkgy8lQRuxtyPlh.cjs +6 -0
- package/build/browser/cjs/B_O3B0P2cyGD9Rbm.cjs +6 -0
- package/build/browser/cjs/BkmEUMAKvuzsSqbR.cjs +7 -0
- package/build/browser/cjs/BlllxPbkhoY0sEC4.cjs +23 -0
- package/build/browser/cjs/BmT4qU5bgAIPFNTH.cjs +124 -0
- package/build/browser/cjs/BqZnbFL2t1u1XgPn.cjs +6 -0
- package/build/browser/cjs/Bs6xUWpBc0gC2FqH.cjs +6 -0
- package/build/browser/cjs/Bsv5BCVCW5dIA5It.cjs +1511 -0
- package/build/browser/cjs/ByZLM15SpxjqWDYX.cjs +6 -0
- package/build/browser/cjs/CaHv2p0pVvOc7XPO.cjs +42 -0
- package/build/browser/cjs/CcIliks7z_TMUXOM.cjs +6 -0
- package/build/browser/cjs/CpbUnis3pqWrW9H4.cjs +11 -0
- package/build/browser/cjs/CvGHijwHYOsCppoo.cjs +6 -0
- package/build/browser/cjs/D5m2Wlak7m4vG0kA.cjs +6 -0
- package/build/browser/cjs/DSNXa0HNC7bG9qZw.cjs +6 -0
- package/build/browser/cjs/DZ-H3oz78Mjq38DI.cjs +6 -0
- package/build/browser/cjs/Da34iNTZrWBA6OUT.cjs +6 -0
- package/build/browser/cjs/DfMNPyGio0O0RToU.cjs +6 -0
- package/build/browser/cjs/Dghi8Yq5nXZtUpoV.cjs +80 -0
- package/build/browser/cjs/Dk63Co0TJejVtNXp.cjs +6 -0
- package/build/browser/cjs/ErSjtO5fMJzUVHk4.cjs +6 -0
- package/build/browser/cjs/G-xZJIN6jjcTuQXA.cjs +6 -0
- package/build/browser/cjs/GPfZ0ZpBee250ywR.cjs +20 -0
- package/build/browser/cjs/IHypcrtWCiX_F0RJ.cjs +11 -0
- package/build/browser/cjs/X-HIF0659hMdI4Fu.cjs +6 -0
- package/build/browser/cjs/index.cjs +6 -0
- package/build/browser/cjs/qhBvSFMQ_DepDCwv.cjs +6 -0
- package/build/browser/cjs/wYOZ6mjOO7MbdyBZ.cjs +6 -0
- package/build/browser/esm/70LlV-Ub5gQiHal4.mjs +10 -0
- package/build/browser/esm/71Qocy3xStWv_56t.mjs +10 -0
- package/build/browser/esm/B9-WgxZWcZj4jdUC.mjs +10 -0
- package/build/browser/esm/BAKRnfUqPzHyyiLx.mjs +3966 -0
- package/build/browser/esm/BChNW8QNTMP8QXKM.mjs +484 -0
- package/build/browser/esm/BCzBxiWxCFs-jcmK.mjs +5651 -0
- package/build/browser/esm/BOn1aDBCyrMSMmVr.mjs +10 -0
- package/build/browser/esm/BPqJ7trmE53kA4iD.mjs +10 -0
- package/build/browser/esm/B_XqbIeKalrEkjs7.mjs +10 -0
- package/build/browser/esm/B_b5FIYJnm4UKAEc.mjs +28 -0
- package/build/browser/esm/BoWGCLoCBi99JpFs.mjs +10 -0
- package/build/browser/esm/Bq9W-xButcfpjGEk.mjs +433 -0
- package/build/browser/esm/ByxOyRbOjkmiHT8z.mjs +10 -0
- package/build/browser/esm/CAxIV1vPiKW9r_Yh.mjs +10 -0
- package/build/browser/esm/CFw23OkHfPquoVEk.mjs +10 -0
- package/build/browser/esm/CG8a93kgahRemVJe.mjs +10 -0
- package/build/browser/esm/CN45di2IcbM8P0Qu.mjs +10 -0
- package/build/browser/esm/COgfNXNmX_PF_eWZ.mjs +35 -0
- package/build/browser/esm/CPv7OpinaYcwbA_W.mjs +10 -0
- package/build/browser/esm/Cfhp3FCr7wP0Rnfu.mjs +10 -0
- package/build/browser/esm/D4GeLOfATuEzvjPr.mjs +1586 -0
- package/build/browser/esm/DMas1DZMe9F5tPaN.mjs +23970 -0
- package/build/browser/esm/DS4xBjO2TN0rQ1lJ.mjs +10 -0
- package/build/browser/esm/DTM0pK30PrZRsXYw.mjs +10 -0
- package/build/browser/esm/DgslJ1_vlPooGZHU.mjs +10 -0
- package/build/browser/esm/DmEPCZ9FSKO_TRTA.mjs +10 -0
- package/build/browser/esm/Do_EO3eQIyPgc7uz.mjs +30 -0
- package/build/browser/esm/ERMewE78C__HUblm.mjs +10 -0
- package/build/browser/esm/Qib5_XvQHWOPzGrm.mjs +10 -0
- package/build/browser/esm/SSYRYFzxzHWQzdAN.mjs +12 -0
- package/build/browser/esm/V_ha0oCA5_oDPanz.mjs +832 -0
- package/build/browser/esm/gTh1PiesKrQblf8O.mjs +10 -0
- package/build/browser/esm/g_p1uVDePbDJJ4nX.mjs +10 -0
- package/build/browser/esm/index.mjs +89 -0
- package/build/licenses/dependencies.txt +1239 -0
- package/build/node/esm/4HPektqH91Rh-rsq.mjs +2445 -0
- package/build/node/esm/70LlV-Ub5gQiHal4.mjs +10 -0
- package/build/node/esm/B9-WgxZWcZj4jdUC.mjs +10 -0
- package/build/node/esm/BDxewg-utn4BhUXl.mjs +35 -0
- package/build/node/esm/BPqJ7trmE53kA4iD.mjs +10 -0
- package/build/node/esm/BUOg554dxBM0VWFi.mjs +22 -0
- package/build/node/esm/B_XqbIeKalrEkjs7.mjs +10 -0
- package/build/node/esm/BoWGCLoCBi99JpFs.mjs +10 -0
- package/build/node/esm/ByxOyRbOjkmiHT8z.mjs +10 -0
- package/build/node/esm/CFw23OkHfPquoVEk.mjs +10 -0
- package/build/node/esm/CG8a93kgahRemVJe.mjs +10 -0
- package/build/node/esm/CN45di2IcbM8P0Qu.mjs +10 -0
- package/build/node/esm/CNOiP4baOWSizP6F.mjs +1070 -0
- package/build/node/esm/CPv7OpinaYcwbA_W.mjs +10 -0
- package/build/node/esm/CVAFJAiy4lznWzaG.mjs +10 -0
- package/build/node/esm/CZd8SSXlusZy49FM.mjs +10 -0
- package/build/node/esm/CZw7SgmfxSHhZZe0.mjs +10 -0
- package/build/node/esm/Cdjab80o1WocCHgN.mjs +13 -0
- package/build/node/esm/CfWoSrOmaP9LrFja.mjs +466 -0
- package/build/node/esm/CnaBpzYiURAKhAxF.mjs +825 -0
- package/build/node/esm/Cp5ea9Hpxse8B4mC.mjs +10 -0
- package/build/node/esm/DH_fbhyW3PwE1rYa.mjs +10 -0
- package/build/node/esm/DNHqdv3-ufdcF5zc.mjs +20 -0
- package/build/node/esm/DS4xBjO2TN0rQ1lJ.mjs +10 -0
- package/build/node/esm/DTM0pK30PrZRsXYw.mjs +10 -0
- package/build/node/esm/DlFgt0KLeXDowatv.mjs +10 -0
- package/build/node/esm/ERMewE78C__HUblm.mjs +10 -0
- package/build/node/esm/GTFYlX2Atw10TdFe.mjs +86 -0
- package/build/node/esm/Qib5_XvQHWOPzGrm.mjs +10 -0
- package/build/node/esm/gTh1PiesKrQblf8O.mjs +10 -0
- package/build/node/esm/g_p1uVDePbDJJ4nX.mjs +10 -0
- package/build/node/esm/index.mjs +23412 -0
- package/build/package.json +58 -0
- package/build/types/index.d.ts +20624 -0
- 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
|
+
};
|