@sheetxl/sdk 0.3.14 → 0.3.15
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/browser/cjs/{CT0LIwthR_TTm6Df.cjs → -yRbHz5qdE2N-6f9.cjs} +1 -1
- package/browser/cjs/{BF13jsmGwsNudNNW.cjs → 5EqiaNhngkZbrdk-.cjs} +1 -1
- package/browser/cjs/{CE9uNYgIyYe4rVUf.cjs → 7ioCgAkU6ory-IsA.cjs} +2 -2
- package/browser/cjs/{8aIeKbowL_J_aN9R.cjs → 8oOeZj2OH869mChO.cjs} +3 -3
- package/browser/cjs/{BSYMCJ1Nsgy1i_Sp.cjs → 9Kh6CpwCUd7fxskF.cjs} +4 -4
- package/browser/cjs/{LJezXQOkoTEbd2rY.cjs → B-X7cH_BhfOvB_Ld.cjs} +1 -1
- package/browser/cjs/{BWB01zmL2kTQLhfc.cjs → B7NY65wMYLvlsWQ8.cjs} +1 -1
- package/browser/cjs/{CULuO5WQT34cNGkW.cjs → B8Wr1W_8mYMpOyeu.cjs} +1 -1
- package/browser/cjs/{1dPRMCsLCZECB1Ai.cjs → BAux495OYxJNpIKI.cjs} +1 -1
- package/browser/cjs/{CqIxgWPnP-ZBQBu-.cjs → BOmX_zv2mu0sLojT.cjs} +1 -1
- package/browser/cjs/{CTGw0eKrKosQ5REr.cjs → BRZdqXKelQrZJuAL.cjs} +1 -1
- package/browser/cjs/{DnZXiw0o3p2P9-nx.cjs → BRsuT3oZW7JPUSws.cjs} +1 -1
- package/browser/cjs/{B9Oy1qCf26IvqgjE.cjs → BWuaryKYFdUNwTJ0.cjs} +1 -1
- package/browser/cjs/{DL3jWsHLhhvkFIAl.cjs → Bi7ONRZO7PHVTlrm.cjs} +1 -1
- package/browser/cjs/{DbCavl-WwpsRab-e.cjs → BjfQz6M_LjsfkN6L.cjs} +1 -1
- package/browser/cjs/{C0EWMi16u8BhL6Wx.cjs → BmEVUaVFAZWyvufV.cjs} +1 -1
- package/browser/cjs/{DuQ1Pg9S2TO2b4wN.cjs → BoDAUlrUxotqRjg_.cjs} +1 -1
- package/browser/cjs/{BVrzaYeWRd6RyL_W.cjs → BtZJhlaZrIM2t6fU.cjs} +1 -1
- package/browser/cjs/{Jaqi0U-9vST7VnqR.cjs → CDyTWHYfdEtWEhBr.cjs} +1 -1
- package/browser/cjs/{BIag2lGErIJ-HZEY.cjs → CQ4E-OZJ20CvOOTo.cjs} +1 -1
- package/browser/cjs/{DhBnGi1WenXkkZfg.cjs → CktBnUdk1N-XIck9.cjs} +1 -1
- package/browser/cjs/{BgfRfc-5sJYatfnr.cjs → CydvidCM8uXSb50e.cjs} +2 -2
- package/browser/cjs/{Bhj7qC3TdOvLeb8f.cjs → DEL71yZlGM7XV48Z.cjs} +1 -1
- package/browser/cjs/{CxIYZNqOron9rPt2.cjs → DJYICP2Rz5n1FtJB.cjs} +4 -4
- package/browser/cjs/{BGjfDfnlNt1L-5TV.cjs → DLM6UZjzfidWxpGL.cjs} +1 -1
- package/browser/cjs/{BHPedEEK-t-n8JA0.cjs → DMRU2MphvLANZOkR.cjs} +2 -2
- package/browser/cjs/{BVED8hrV9vtZcgBL.cjs → DW_IVEdXmpUEu0ev.cjs} +1 -1
- package/browser/cjs/{BtlE-mUXtWIsmgtC.cjs → DXyc5lPijdh4qdKE.cjs} +1 -1
- package/browser/cjs/{Brzrr884LUDoK1o4.cjs → DfD9OgGTGBuhtKRJ.cjs} +1 -1
- package/browser/cjs/{JtNjVhk0M044E0nA.cjs → Dy8X0MA0w5uGb8fK.cjs} +2 -2
- package/browser/cjs/{CKwNhUTGmZjlmPJy.cjs → DzbiyJqJGk0AK-YY.cjs} +1 -1
- package/browser/cjs/{DvS2Op5zN294iZaw.cjs → EzdU67SWDK5FN0Xc.cjs} +4 -4
- package/browser/cjs/index.cjs +2 -2
- package/browser/cjs/{BXlAY7ecg4dRYeb-.cjs → om_tgYcOnt0PAO4H.cjs} +1 -1
- package/{node/esm/DSN9XLLztxgAAaZk.mjs → browser/esm/1VAWBuFrBIWDOUsN.mjs} +1 -1
- package/browser/esm/{DycyfHdm4H-VTG6U.mjs → B4WMdPBPZYkxtOxh.mjs} +3 -3
- package/browser/esm/{Bsg4V_1FdLwUhHn6.mjs → BCOZeIY7RhyvcE3z.mjs} +1 -1
- package/browser/esm/{B2AFYWs7acbICZbD.mjs → BGahpdYkVPG3nqvB.mjs} +2 -2
- package/{node/esm/Co7_dnXPukr0Tnvo.mjs → browser/esm/BIltPl09aD0KfL6P.mjs} +1 -1
- package/{node/esm/Cd6laeHbIBrp1WAg.mjs → browser/esm/BMwDUPf_0Q2WYecA.mjs} +1 -1
- package/browser/esm/{D9J21Xb_PHOcBrH9.mjs → BOhgLzaZFb9KqZYk.mjs} +1 -1
- package/browser/esm/{DJGNTGF5dARojz25.mjs → BWeA3HAUGtLF-wVp.mjs} +1 -1
- package/browser/esm/{DFYhKP-6xP-UhlPk.mjs → Be2Kw-Pgkw_XFpxm.mjs} +4 -4
- package/browser/esm/{BmU7e4P2NNKt4jaA.mjs → C0bOswIDG235ZdMW.mjs} +1 -1
- package/{node/esm/C8EeQhydwMgyJtqh.mjs → browser/esm/CR6G1oRs9Bn1lg06.mjs} +1 -1
- package/browser/esm/{Ba6BLASNZ2ng3Z4J.mjs → CUj-4k5GCpRanrE_.mjs} +2 -2
- package/browser/esm/{BEPn0iVwR-jobPPN.mjs → CcE_950TcVwlhGK9.mjs} +1 -1
- package/browser/esm/{Dc_pyd0BWrHZOyCH.mjs → CddeC8JOWYjmCKDX.mjs} +1 -1
- package/browser/esm/{uVZh7QIcWvTtEli3.mjs → Cj8SEZq5QNJh8oR-.mjs} +1 -1
- package/browser/esm/{CwdKsd-ZDUg2AKCG.mjs → CwATxIrqQ2QONbOs.mjs} +2 -2
- package/browser/esm/{CdlVfw_wrrlNTdFq.mjs → D-21xIoy6R7bPkQi.mjs} +4 -4
- package/browser/esm/{zSf__4f2cNX4MU_E.mjs → D34jPp9Yy6981yZU.mjs} +1 -1
- package/{node/esm/BrEhZoYS4tZ85Wb2.mjs → browser/esm/D6kfTS-oUI0lM2H4.mjs} +1 -1
- package/browser/esm/{KFiVyahuAM5oLSEO.mjs → DJ4hRv0TpFJS5bHE.mjs} +1 -1
- package/browser/esm/{-YVm-arRxvi2aHrX.mjs → DRTmVUOOLwcWUUk4.mjs} +8 -8
- package/browser/esm/{BWOprnZh2TdnVkhN.mjs → DTcQhFyjAE0sD-iw.mjs} +1 -1
- package/browser/esm/{DCHNFXRP7bdy8j6A.mjs → DVyGXw7aK-S-EcEd.mjs} +1 -1
- package/{node/esm/CrEgrnNSQxlNdSQH.mjs → browser/esm/DXil9XHeN_zpA9S1.mjs} +1 -1
- package/browser/esm/{LKG9SvMMGVk1PGFE.mjs → DjIxue2pkO7-mJu4.mjs} +1 -1
- package/{node/esm/BwnoiW_KFoozChmu.mjs → browser/esm/Dz9GtY4DmAQ_ZySa.mjs} +1 -1
- package/browser/esm/{Bg9gl5UmmX4fFqh9.mjs → E8ih3LpR0IxMBEK9.mjs} +1 -1
- package/{node/esm/COAb5hzzzgPny-MC.mjs → browser/esm/WoK6jDi262FoO83F.mjs} +1 -1
- package/browser/esm/{DXYVpaIcWXN8I-8P.mjs → cKnC5xOZdyy69lVE.mjs} +1 -1
- package/browser/esm/index.mjs +2 -2
- package/browser/esm/{D3vJL6oluiC46rst.mjs → jIKqEEzy3BdJt11n.mjs} +2 -2
- package/browser/esm/{U3LNSOTrmO9UgNbu.mjs → qvmICQb2r_9Ch3l7.mjs} +1 -1
- package/browser/esm/{BtiMbXDnIykNjg5S.mjs → yG9WtHlVnnE207Vt.mjs} +1 -1
- package/browser/esm/{C5mSzLFiageMor4e.mjs → yJY_M8wzKgKV92VQ.mjs} +1 -1
- package/licenses/dependencies.txt +3 -3
- package/{browser/esm/DSN9XLLztxgAAaZk.mjs → node/esm/1VAWBuFrBIWDOUsN.mjs} +1 -1
- package/node/esm/{C1bbHaeepohFLWRt.mjs → B4mU40-jn99Q5FIi.mjs} +1 -1
- package/{browser/esm/Co7_dnXPukr0Tnvo.mjs → node/esm/BIltPl09aD0KfL6P.mjs} +1 -1
- package/node/esm/{9HfD6WZTaZM-6dDl.mjs → BLfjpWs4wSUanDnr.mjs} +2 -2
- package/{browser/esm/Cd6laeHbIBrp1WAg.mjs → node/esm/BMwDUPf_0Q2WYecA.mjs} +1 -1
- package/node/esm/{DI92jUYb3AXDTHUJ.mjs → BkgjaYUkJEGCVT6Z.mjs} +3 -3
- package/node/esm/{BmU7e4P2NNKt4jaA.mjs → C0bOswIDG235ZdMW.mjs} +1 -1
- package/node/esm/{nYLEHJleyWkMI330.mjs → C7befGADfOxZ9okt.mjs} +1 -1
- package/node/esm/{aL_EXhi6Vnbf9pxV.mjs → CAD9L23iI-J8139y.mjs} +1 -1
- package/node/esm/{DqRtrYgkB_pwJFvO.mjs → CEpUWfb1trQhoqnv.mjs} +1 -1
- package/node/esm/{BysyMI6RFkN8PLLR.mjs → CHekmDjJknOCqWhl.mjs} +1 -1
- package/{browser/esm/C8EeQhydwMgyJtqh.mjs → node/esm/CR6G1oRs9Bn1lg06.mjs} +1 -1
- package/node/esm/{Dc_pyd0BWrHZOyCH.mjs → CddeC8JOWYjmCKDX.mjs} +1 -1
- package/node/esm/{uVZh7QIcWvTtEli3.mjs → Cj8SEZq5QNJh8oR-.mjs} +1 -1
- package/node/esm/{zFNQLaTjWwvteTs6.mjs → CvCh56Dl25LTcclP.mjs} +1 -1
- package/node/esm/{zSf__4f2cNX4MU_E.mjs → D34jPp9Yy6981yZU.mjs} +1 -1
- package/{browser/esm/BrEhZoYS4tZ85Wb2.mjs → node/esm/D6kfTS-oUI0lM2H4.mjs} +1 -1
- package/node/esm/{DB-HBYhBVQf-CDP-.mjs → DGvRr2O57Gw8yaUm.mjs} +2 -2
- package/node/esm/{DABsFhb4jhWMc8cx.mjs → DHLbD6U6y0Q7lQcG.mjs} +1 -1
- package/node/esm/{Ci5M6NyPwSFv92Tf.mjs → DSTRVGJxpY38kv5r.mjs} +1 -1
- package/node/esm/{BWOprnZh2TdnVkhN.mjs → DTcQhFyjAE0sD-iw.mjs} +1 -1
- package/{browser/esm/CrEgrnNSQxlNdSQH.mjs → node/esm/DXil9XHeN_zpA9S1.mjs} +1 -1
- package/{browser/esm/BwnoiW_KFoozChmu.mjs → node/esm/Dz9GtY4DmAQ_ZySa.mjs} +1 -1
- package/node/esm/{Bg9gl5UmmX4fFqh9.mjs → E8ih3LpR0IxMBEK9.mjs} +1 -1
- package/node/esm/{DznaZk0_McqR6Kkp.mjs → UM3L941jd7VuAKjX.mjs} +1 -1
- package/{browser/esm/COAb5hzzzgPny-MC.mjs → node/esm/WoK6jDi262FoO83F.mjs} +1 -1
- package/node/esm/{CQoT5g8P4yNsKNpj.mjs → _Gi8Ygo4T31IvQ_Z.mjs} +1 -1
- package/node/esm/index.mjs +7 -7
- package/node/esm/{BN6YclXjHDyEL9VX.mjs → nu2Rn52DdGuXHpbG.mjs} +4 -4
- package/node/esm/{U3LNSOTrmO9UgNbu.mjs → qvmICQb2r_9Ch3l7.mjs} +1 -1
- package/node/esm/{CyA799CHp0acXJO4.mjs → tDautIgBG3QhJPff.mjs} +2 -2
- package/node/esm/{C5mSzLFiageMor4e.mjs → yJY_M8wzKgKV92VQ.mjs} +1 -1
- package/package.json +4 -4
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.
|
|
2
|
+
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.15
|
|
3
3
|
*
|
|
4
4
|
* (C) 2025-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: The license can be found at https://www.sheetxl.com/license.
|
|
@@ -46,7 +46,7 @@ class e {
|
|
|
46
46
|
terminate() {
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
|
-
const t = '/**\n * @license @sheetxl/primitives - Primitives - Base types for SheetXL functions. - v0.3.14\n *\n * (C) 2025-present SheetXL Inc. & Michael T. Ford\n * License: The license can be found at https://www.sheetxl.com/license.\n */\nconst W = { Number: "n", String: "s", Boolean: "b", Error: "e", Null: "z" };\nvar Re, ae, d;\n(ae = Re || (Re = {})).Orientation = { Column: "column", Row: "row" }, ae.Orientations = { ...ae.Orientation, Both: "both" }, ae.Direction = { Up: "up", Down: "down", Left: "left", Right: "right" }, ((e) => {\n e.Code = { Parse: 0, Null: 1, Div0: 2, Value: 3, Ref: 4, Name: 5, Num: 6, NA: 7, GettingData: 8, Spill: 9, Connect: 10, Blocked: 11, Unknown: 12, Field: 13, Calc: 14, Busy: 16, Python: 19, Timeout: 20 }, e.Label = { Parse: "#PARSE!", Null: "#NULL!", Div0: "#DIV/0!", Value: "#VALUE!", Ref: "#REF!", Name: "#NAME?", Num: "#NUM!", NA: "#N/A", GettingData: "#GETTING_DATA", Spill: "#SPILL!", Connect: "#CONNECT!", Blocked: "#BLOCKED!", Unknown: "#UNKNOWN!", Field: "#FIELD!", Calc: "#CALC!", Busy: "#BUSY!", Python: "#PYTHON!", Timeout: "#TIMEOUT!" };\n class t extends Error {\n constructor(c, m, fe, B) {\n super(fe, B), this._label = m, this._code = c, this.details = B;\n }\n static {\n this.code = e.Code.Unknown;\n }\n get isFormulaError() {\n return !0;\n }\n getLabel() {\n return this._label;\n }\n getCode() {\n return this._code;\n }\n equals(c) {\n return !!c && (this._code === c._code || this._code === c.code);\n }\n get [Symbol.toStringTag]() {\n return "[FormulaError]";\n }\n toString() {\n return this.message || this._label;\n }\n }\n e.Known = t;\n class r extends t {\n constructor(c, m) {\n super(e.Code.Parse, e.Label.Parse, c, m);\n }\n static {\n this.code = e.Code.Parse;\n }\n getDetails() {\n const c = this.details;\n return { line: c?.line ?? 1, column: c?.column ?? 1, offset: c?.offset ?? 0, length: c?.length ?? 0 };\n }\n }\n e.Parse = r;\n class n extends t {\n constructor(c, m) {\n super(e.Code.Null, e.Label.Null, c, m);\n }\n static {\n this.code = e.Code.Null;\n }\n }\n e.Null = n;\n class o extends t {\n constructor(c, m) {\n super(e.Code.Div0, e.Label.Div0, c, m);\n }\n static {\n this.code = e.Code.Div0;\n }\n }\n e.Div0 = o;\n class i extends t {\n constructor(c, m) {\n super(e.Code.Value, e.Label.Value, c, m);\n }\n static {\n this.code = e.Code.Value;\n }\n }\n e.Value = i;\n class a extends t {\n constructor(c, m) {\n super(e.Code.Ref, e.Label.Ref, c, m);\n }\n static {\n this.code = e.Code.Ref;\n }\n }\n e.Ref = a;\n class l extends t {\n constructor(c, m) {\n super(e.Code.Name, e.Label.Name, c, m);\n }\n static {\n this.code = e.Code.Name;\n }\n }\n e.Name = l;\n class u extends t {\n constructor(c, m) {\n super(e.Code.Num, e.Label.Num, c, m);\n }\n static {\n this.code = e.Code.Num;\n }\n }\n e.Num = u;\n class f extends t {\n constructor(c, m) {\n super(e.Code.NA, e.Label.NA, c, m);\n }\n static {\n this.code = e.Code.NA;\n }\n }\n e.NA = f;\n class h extends t {\n constructor(c, m) {\n super(e.Code.GettingData, e.Label.GettingData, c, m);\n }\n static {\n this.code = e.Code.GettingData;\n }\n }\n e.GettingData = h;\n class g extends t {\n constructor(c, m) {\n super(e.Code.Spill, e.Label.Spill, c, m);\n }\n static {\n this.code = e.Code.Spill;\n }\n }\n e.Spill = g;\n class p extends t {\n constructor(c, m) {\n super(e.Code.Connect, e.Label.Connect, c, m);\n }\n static {\n this.code = e.Code.Connect;\n }\n }\n e.Connect = p;\n class y extends t {\n constructor(c, m) {\n super(e.Code.Blocked, e.Label.Blocked, c, m);\n }\n static {\n this.code = e.Code.Blocked;\n }\n }\n e.Blocked = y;\n class T extends t {\n constructor(c, m) {\n super(e.Code.Unknown, e.Label.Unknown, c, m);\n }\n static {\n this.code = e.Code.Unknown;\n }\n }\n e.Unknown = T;\n class A extends t {\n constructor(c, m) {\n super(e.Code.Field, e.Label.Field, c, m);\n }\n static {\n this.code = e.Code.Field;\n }\n }\n e.Field = A;\n class D extends t {\n constructor(c, m) {\n super(e.Code.Calc, e.Label.Calc, c, m);\n }\n static {\n this.code = e.Code.Calc;\n }\n }\n e.Calc = D;\n class U extends t {\n constructor(c, m) {\n super(e.Code.Busy, e.Label.Busy, c, m);\n }\n static {\n this.code = e.Code.Busy;\n }\n }\n e.Busy = U;\n class I extends t {\n constructor(c, m) {\n super(e.Code.Python, e.Label.Python, c, m);\n }\n static {\n this.code = e.Code.Python;\n }\n }\n e.Python = I;\n class J extends t {\n constructor(c, m) {\n super(e.Code.Timeout, e.Label.Timeout, c, m);\n }\n static {\n this.code = e.Code.Timeout;\n }\n }\n e.Timeout = J;\n})(d || (d = {}));\nconst _ = {};\n_[d.Code.Parse] = d.Parse, _[d.Code.Null] = d.Null, _[d.Code.Div0] = d.Div0, _[d.Code.Value] = d.Value, _[d.Code.Ref] = d.Ref, _[d.Code.Name] = d.Name, _[d.Code.Num] = d.Num, _[d.Code.NA] = d.NA, _[d.Code.GettingData] = d.GettingData, _[d.Code.Spill] = d.Spill, _[d.Code.Connect] = d.Connect, _[d.Code.Blocked] = d.Blocked, _[d.Code.Unknown] = d.Unknown, _[d.Code.Field] = d.Field, _[d.Code.Calc] = d.Calc, _[d.Code.Busy] = d.Busy, _[d.Code.Python] = d.Python, _[d.Code.Timeout] = d.Timeout;\nconst et = /* @__PURE__ */ new Map(), Te = /* @__PURE__ */ new Map(), tt = /* @__PURE__ */ new Map(), rt = /* @__PURE__ */ new Map(), ke = Object.keys(_);\nfor (let e = 0; e < ke.length; e++) {\n const t = ke[e], r = _[t];\n tt.set(d.Label[t], r), rt.set(d.Code[t], r);\n const n = new r();\n et.set(n.getLabel(), n), Te.set(n.getCode(), n);\n}\nconst Et = Te.get(d.Code.Unknown);\nvar v;\n(v = d || (d = {})).BuiltIn = { Parse: new v.Parse(), Null: new v.Null(), Div0: new v.Div0(), Value: new v.Value(), Ref: new v.Ref(), Name: new v.Name(), Num: new v.Num(), NA: new v.NA(), GettingData: new v.GettingData(), Spill: new v.Spill(), Connect: new v.Connect(), Blocked: new v.Blocked(), Unknown: new v.Unknown(), Field: new v.Field(), Calc: new v.Calc(), Busy: new v.Busy(), Python: new v.Python(), Timeout: new v.Timeout() }, v.getBuiltInByLabel = (e) => et.get(e), v.newTypedError = (e, t, r) => {\n let n;\n return n = typeof e == "string" ? tt.get(e) : rt.get(e), n || (n = v.Unknown), new n(t, r);\n}, v.getBuiltInById = (e) => Te.get(e) || Et;\n/**\n * @license @sheetxl/utils - Utils - Utilities used by most SheetXL components. - v0.3.14\n *\n * (C) 2025-present SheetXL Inc. & Michael T. Ford\n * License: The license can be found at https://www.sheetxl.com/license.\n */\nconst S = { html: "text/html", plain: "text/plain", png: "image/png" }, St = Object.freeze({ left: 0, top: 0 }), xt = Object.freeze({ left: 0, top: 0, bottom: 0, right: 0 }), Ct = Object.freeze({ x: 0, y: 0, width: 0, height: 0 });\nObject.freeze(Object.defineProperty({ __proto__: null, EmptyBounds: Ct, EmptyRect: xt, EmptyTopLeft: St }, Symbol.toStringTag, { value: "Module" }));\nconst j = { Column: "column", Row: "row" }, vt = Object.freeze({ colIndex: 0, rowIndex: 0 }), Tt = Object.freeze({ colStart: 0, rowStart: 0, colEnd: 0, rowEnd: 0 }), nt = (e, t) => e.colStart === t.colStart ? e.rowStart - t.rowStart : e.colStart - t.colStart, ot = (e, t) => e.rowStart === t.rowStart ? e.colStart - t.colStart : e.rowStart - t.rowStart, _t = (e, t) => e.rowEnd === t.rowEnd ? t.colEnd - e.colEnd : t.rowEnd - e.rowEnd, Ot = (e, t) => e.colEnd === t.colEnd ? t.rowEnd - e.rowEnd : t.colEnd - e.colEnd, Le = (e, t) => e.colIndex === t.colIndex ? e.rowIndex - t.rowIndex : e.colIndex - t.colIndex, Ae = (e, t) => e.rowIndex === t.rowIndex ? e.colIndex - t.colIndex : e.rowIndex - t.rowIndex, it = (e = j.Row, t = !1) => t ? e !== j.Column ? _t : Ot : e !== j.Column ? ot : nt, Me = (e, t) => e === t || !(!e || !t) && e.rowIndex === t.rowIndex && e.colIndex === t.colIndex, Se = (e, t) => e === t || !(!e || !t) && e.rowStart === t.rowStart && e.rowEnd === t.rowEnd && e.colStart === t.colStart && e.colEnd === t.colEnd, xe = (e, t) => !(!e || !t) && !(e.colStart > t.colEnd || t.colStart > e.colEnd) && !(e.rowStart > t.rowEnd || t.rowStart > e.rowEnd), je = (e, t) => {\n if (e === t) return !0;\n if (!e || !t || e.length !== t.length) return !1;\n for (let r = 0; r < e.length; r++) if (!Se(e[r], t[r])) return !1;\n return !0;\n}, he = (e, t, r) => {\n if (!e && !t) return null;\n if (!e) return r ? t : { ...t };\n if (!t) return r ? e : { ...e };\n const n = Math.min(e.colStart, t.colStart), o = Math.min(e.rowStart, t.rowStart), i = Math.max(e.colEnd, t.colEnd), a = Math.max(e.rowEnd, t.rowEnd);\n let l = r;\n return l ? (l.colStart = n, l.rowStart = o, l.colEnd = i, l.rowEnd = a) : l = { colStart: n, rowStart: o, colEnd: i, rowEnd: a }, l;\n}, Pe = (e, t) => {\n if (!t || t.length === 0) return e;\n const r = { ...e };\n for (let n = 0; n < t.length; n++) {\n const o = t[n];\n xe(r, o) && (r.rowStart = Math.min(r.rowStart, o.rowStart), r.colStart = Math.min(r.colStart, o.colStart), r.rowEnd = Math.max(r.rowEnd, o.rowEnd), r.colEnd = Math.max(r.colEnd, o.colEnd));\n }\n return r;\n}, It = [null, null], Nt = (e, t, r) => {\n if (e[0].value === e[1].value) return t;\n};\nfunction Fe(e, t = 2, r, n = j.Row, o) {\n let i = [...e];\n if (t <= 0 || e.length <= 1) return i;\n let a = n === j.Column, l = 0, u = !1;\n do {\n const f = i.sort(it(a ? j.Row : j.Column));\n i = [], i.push(f[0]);\n const h = f.length;\n let g = 0, p = f[0], y = p.colStart, T = p.rowStart, A = p.colEnd, D = p.rowEnd;\n for (let U = 1; U < h; U++) {\n const I = f[U];\n let J = !1;\n if (J = a ? p && T === I.rowStart && D === I.rowEnd && A + 1 === I.colStart : p && y === I.colStart && A === I.colEnd && D + 1 === I.rowStart, J) {\n let E = { colStart: y, rowStart: T, colEnd: a ? I.colEnd : A, rowEnd: a ? D : I.rowEnd };\n if (p.value !== void 0 && (E.value = p.value), r) {\n const c = o ?? [null, null];\n c[0] = p, c[1] = I, E = r(c, E, n);\n }\n if (E) {\n i[g] = E, u = !0, p = E, y = p.colStart, T = p.rowStart, A = p.colEnd, D = p.rowEnd;\n continue;\n }\n }\n i[++g] = I, p = I, y = p.colStart, T = p.rowStart, A = p.colEnd, D = p.rowEnd;\n }\n l++, a = !a, l === 1 && (u = !0);\n } while (l < t && u && i.length > 1);\n return i;\n}\nObject.freeze(Object.defineProperty({ __proto__: null, EmptyCell: vt, EmptyRange: Tt, cellToRange: (e, t) => {\n if (!e) return null;\n let r = t;\n return r || (r = { ...e }, delete r.colIndex, delete r.rowIndex), r.colStart = e.colIndex ?? 0, r.rowStart = e.rowIndex ?? 0, r.colEnd = e.colIndex ?? 0, r.rowEnd = e.rowIndex ?? 0, r;\n}, columnFirstCellComparator: Le, columnFirstRangeComparator: nt, createCellComparator: (e = j.Row, t = !1) => t ? e !== j.Column ? (r, n) => r.rowIndex === n.rowIndex ? n.colIndex - r.colIndex : n.rowIndex - r.rowIndex : (r, n) => r.colIndex === n.colIndex ? n.rowIndex - r.rowIndex : n.colIndex - r.colIndex : e !== j.Column ? Ae : Le, createConflatingRanges: (e, t = !1) => {\n const r = [];\n let n, o, i = Number.MIN_SAFE_INTEGER, a = Number.MIN_SAFE_INTEGER;\n return { append: (l, u, f) => {\n let h = !0;\n const g = f !== void 0;\n if (g) {\n const T = e ? e(o, f, t) : o === f ? f : void 0;\n T === void 0 ? h = !1 : f = T;\n }\n if (h && u === a + 1 && l === i) return t ? n.rowEnd = u : n.colEnd = u, a = u, void (o = f);\n n && r.push(n);\n const p = t ? l : u, y = t ? u : l;\n n = { colStart: p, rowStart: y, colEnd: p, rowEnd: y }, g && (n.value = f), i = l, a = u, o = f;\n }, done: (l) => (n && (r.push(n), n = null), l ? Fe(r, 3, l === !0 ? Nt : l, t ? j.Column : j.Row, It) : r) };\n}, createRangeComparator: it, defaultRange: (e, t, r) => e ? r ? (r.colStart = e.colStart ?? t.colStart, r.rowStart = e.rowStart ?? t.rowStart, r.colEnd = e.colEnd ?? t.colEnd, r.rowEnd = e.rowEnd ?? t.rowEnd, r) : { colStart: e.colStart ?? t.colStart, rowStart: e.rowStart ?? t.rowStart, colEnd: e.colEnd ?? t.colEnd, rowEnd: e.rowEnd ?? t.rowEnd } : t, extendRangeToIntersectingRanges: Pe, extendRangeToUnionRanges: (e, t) => {\n if (!t || t.length === 0) return e;\n let r = e, n = null;\n for (; !Se(r, n); ) n = r, r = Pe(n, t);\n return r;\n}, indexOfCoords: (e, t) => {\n const r = { colStart: e.colIndex, rowStart: e.rowIndex, colEnd: e.colIndex, rowEnd: e.rowIndex };\n for (let n = t.length - 1; n >= 0; n--) if (xe(r, t[n])) return n;\n return -1;\n}, intersectRanges: (e, t, r) => {\n if (!e) return r ? t : { ...t };\n if (!t) return r ? e : { ...e };\n if (!e && !t || e.rowStart > t.rowEnd || e.rowEnd < t.rowStart || e.colStart > t.colEnd || e.colEnd < t.colStart) return null;\n const n = Math.max(e.colStart, t.colStart), o = Math.max(e.rowStart, t.rowStart), i = Math.min(e.colEnd, t.colEnd), a = Math.min(e.rowEnd, t.rowEnd);\n let l = r;\n return l ? (l.colStart = n, l.rowStart = o, l.colEnd = i, l.rowEnd = a) : l = { colStart: n, rowStart: o, colEnd: i, rowEnd: a }, l;\n}, isCellWithinRange: (e, t) => !(!e || !t) && !(e.rowIndex < t.rowStart || e.rowIndex > t.rowEnd) && !(e.colIndex < t.colStart || e.colIndex > t.colEnd), isEqualCells: Me, isEqualRanges: Se, isEqualRangesArrays: je, isEqualSelectionCoords: (e, t) => e === t || !(!e || !t) && e.rangeIndex === t.rangeIndex && !!Me(e.cell, t.cell) && je(e.ranges, t.ranges), isRangeWithinRange: (e, t) => !(e.rowStart < t.rowStart || e.rowEnd > t.rowEnd) && !(e.colStart < t.colStart || e.colEnd > t.colEnd), isRangesIntersect: xe, isSingleCell: (e) => !!e && e.rowEnd === e.rowStart && e.colStart === e.colEnd, isValidRange: (e) => !!e && !(typeof e.colStart != "number" || e.colStart < 0) && !(typeof e.colEnd != "number" || e.colEnd < e.colStart) && !(typeof e.rowStart != "number" || e.rowStart < 0) && !(typeof e.rowEnd != "number" || e.rowEnd < e.rowStart), mergeRangedValues: Fe, rowFirstCellComparator: Ae, rowFirstRangeComparator: ot, sanitizeRange: (e) => e ? { colStart: e.colIndex ?? e.colStart ?? 0, rowStart: e.rowIndex ?? e.rowStart ?? 0, colEnd: e.colIndex ?? e.colEnd ?? 0, rowEnd: e.rowIndex ?? e.rowEnd ?? 0 } : null, translateRange: (e, t = -e.rowStart, r = -e.colStart, n) => n ? (n.colStart = e.colStart + r, n.rowStart = e.rowStart + t, n.colEnd = e.colEnd + r, n.rowEnd = e.rowEnd + t, n) : { colStart: e.colStart + r, rowStart: e.rowStart + t, colEnd: e.colEnd + r, rowEnd: e.rowEnd + t }, unionRanges: he, unionRangesArrays: (e, t, r) => {\n if (!e || e.length === 0) return null;\n if (e.length === 1 && !t) return e[0];\n let n = e[0];\n for (let o = 1; o < e.length; o++) n = he(n, e[o], r);\n return t && (n = he(n, t, r)), n;\n} }, Symbol.toStringTag, { value: "Module" }));\nfunction Rt(e) {\n const t = Object.prototype.toString.call(e);\n return t === "[object RegExp]" || t === "[object Date]" || function(r) {\n return r.$$typeof === kt;\n }(e);\n}\nconst kt = typeof Symbol == "function" && Symbol.for ? Symbol.for("react.element") : 60103;\nfunction Lt(e) {\n return /* @__PURE__ */ function(t) {\n return !!t && typeof t == "object";\n }(e) && !Rt(e);\n}\nfunction ne(e, t) {\n return t.clone !== !1 && t.isMergeableObject(e) ? Y((r = e, Array.isArray(r) ? [] : {}), e, t) : e;\n var r;\n}\nfunction At(e, t, r) {\n return e.concat(t).map(function(n) {\n return ne(n, r);\n });\n}\nfunction De(e) {\n return Object.keys(e).concat(function(t) {\n return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(t).filter(function(r) {\n return Object.propertyIsEnumerable.call(t, r);\n }) : [];\n }(e));\n}\nfunction Ue(e, t) {\n try {\n return t in e;\n } catch {\n return !1;\n }\n}\nfunction Mt(e, t, r) {\n const n = {};\n return r.isMergeableObject(e) && De(e).forEach(function(o) {\n n[o] = ne(e[o], r);\n }), De(t).forEach(function(o) {\n (function(i, a) {\n return Ue(i, a) && !(Object.hasOwnProperty.call(i, a) && Object.propertyIsEnumerable.call(i, a));\n })(e, o) || (Ue(e, o) && r.isMergeableObject(t[o]) ? n[o] = function(i, a) {\n if (!a.customMerge) return Y;\n const l = a.customMerge(i);\n return typeof l == "function" ? l : Y;\n }(o, r)(e[o], t[o], r) : n[o] = ne(t[o], r));\n }), n;\n}\nfunction Y(e, t, r) {\n (r = r || {}).arrayMerge = r.arrayMerge || At, r.isMergeableObject = r.isMergeableObject || Lt, r.cloneUnlessOtherwiseSpecified = ne;\n const n = Array.isArray(t);\n return n === Array.isArray(e) ? n ? r.arrayMerge(e, t, r) : Mt(e, t, r) : ne(t, r);\n}\nY.all = function(e, t) {\n if (!Array.isArray(e)) throw new Error("first argument should be an array");\n return e.reduce(function(r, n) {\n return Y(r, n, t);\n }, {});\n};\nconst jt = Object.freeze([]), Pt = Object.freeze({}), Be = (e) => e, de = () => "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(e) {\n let t = 16 * Math.random() | 0;\n return (e === "x" ? t : 3 & t | 8).toString(16);\n}), Ft = (e) => 1 * e, at = (e, t) => e === t || !(!Array.isArray(e) || !Array.isArray(t) || e.length !== t.length) && e.every((r, n) => r === t[n]), re = (e) => typeof e == "object" && !Array.isArray(e) && e !== null, lt = (e) => typeof e != "object" || Array.isArray(e) || e === null ? e : (Object.keys(e).forEach(function(t) {\n e[t] && typeof e[t] == "object" ? lt(e[t]) : e[t] !== null && e[t] !== void 0 || delete e[t], typeof e[t] == "object" && Object.keys(e[t]).length === 0 && delete e[t];\n}), Object.keys(e).length === 0 ? null : e), Dt = (e, t) => !(e !== t && !at(e, t)) || !!e.isEqual?.(t), st = (e, t, r = Dt) => {\n if (e == null || e === t) return null;\n if (!e || typeof e != "object" || Array.isArray(e) || e.isImmutable?.()) return r(e, t) ? null : e;\n const n = Object.keys(e);\n if (n.length === 0) return null;\n let o = !1;\n for (let i = 0; i < n.length; i++) {\n const a = n[i];\n st(e[a], t?.[a], r) === null && (o = !0, delete e[a]);\n }\n return o && Object.keys(e).length === 0 ? null : void 0;\n}, $e = typeof performance == "object" && typeof performance.now == "function" ? () => performance.now() : () => Date.now(), ze = (e) => e == null, Ke = (e, t) => !(t.left > e.right || t.right < e.left || t.top > e.bottom || t.bottom < e.top), Ve = !(typeof window > "u" || !window.document || !window.document.createElement), k = { Windows: "windows", MacOS: "macos", IOS: "ios", Linux: "linux", Android: "android", Safari: "safari", Firefox: "firefox", Node: "node", Unknown: "unknown" }, oe = () => {\n if (ct()) return k.Node;\n const e = globalThis.navigator !== void 0 && globalThis.navigator.userAgent ? globalThis.navigator.userAgent.toLowerCase() : "";\n return e ? /(win32|win64|windows|wince)/i.test(e) ? k.Windows : /(macintosh|macintel|macppc|mac68k|macos)/i.test(e) ? k.MacOS : /(iphone|ipad|ipod)/i.test(e) ? k.IOS : /android/.test(e) ? k.Android : /linux/.test(e) ? k.Linux : /^((?!chrome|android|).)*safari/i.test(e) ? k.Safari : /^((?!chrome|android|Seamonkey).)*firefox/i.test(e) ? k.Firefox : k.Unknown : k.Unknown;\n};\nfunction ct() {\n return typeof process < "u" && process.release?.name === "node" || (typeof process < "u" && process.browser, !1);\n}\nconst qe = (e, t = !1) => (document.hasFocus() || t) && (e === document.activeElement || e?.contains(document.activeElement)), Ut = Object.freeze(Object.defineProperty({ __proto__: null, EmptyArray: jt, EmptyObject: Pt, OSType: k, arrayMove: function(e, t, r) {\n const n = e.slice();\n return n.splice(r < 0 ? n.length + r : r, 0, n.splice(t, 1)[0]), n;\n}, asNumber: (e) => {\n const t = Ft(e);\n return Number.isFinite(t) ? t : 0;\n}, camelToPrettyCase: (e) => e.length === 1 ? e.toUpperCase() : e.replace(/([A-Z])/g, " $1").replace(/^./, function(t) {\n return t.toUpperCase();\n}).trim(), canUseDOM: Ve, cancelTimeout: (e) => {\n cancelAnimationFrame(e.id);\n}, castToString: (e) => e == null || e === void 0 ? "" : typeof e != "string" ? "" + e : e, cloneObject: (e) => ze(e) ? e : JSON.parse(JSON.stringify(e)), consoleWithNoSource: (...e) => new Promise((t) => {\n setTimeout(() => {\n Function("console.log.apply(console, arguments)").apply(null, e), t();\n });\n}), debounce: function(e, t = 300, r = !1) {\n let n, o, i, a, l = 0;\n function u() {\n let h = Date.now() - l;\n h < t && h >= 0 ? n = setTimeout(u, t - h) : (n = null, r || (a = e.apply(i, o), i = o = null));\n }\n t == null && (t = 100);\n const f = function() {\n i = globalThis, o = arguments, l = Date.now();\n var h = r && !n;\n return n || (n = setTimeout(u, t)), h && (a = e.apply(i, o), i = o = null), a;\n };\n return f.clear = function() {\n n && (clearTimeout(n), n = null);\n }, f.flush = function() {\n n && (a = e.apply(i, o), i = o = null, clearTimeout(n), n = null);\n }, f;\n}, deepEqual: function e(t, r) {\n if (t === r) return !0;\n if (t && r && typeof t == "object" && typeof r == "object") {\n if (t.constructor !== r.constructor) return !1;\n let n, o, i;\n if (Array.isArray(t)) {\n if (n = t.length, n != r.length) return !1;\n for (o = n; o-- !== 0; ) if (!e(t[o], r[o])) return !1;\n return !0;\n }\n if (t instanceof Map && r instanceof Map) {\n if (t.size !== r.size) return !1;\n for (o of t.entries()) if (!r.has(o[0])) return !1;\n for (o of t.entries()) if (!e(o[1], r.get(o[0]))) return !1;\n return !0;\n }\n if (t instanceof Set && r instanceof Set) {\n if (t.size !== r.size) return !1;\n for (o of t.entries()) if (!r.has(o[0])) return !1;\n return !0;\n }\n if (ArrayBuffer.isView(t) && ArrayBuffer.isView(r)) {\n if (n = t.length, n != r.length) return !1;\n for (o = n; o-- !== 0; ) if (t[o] !== r[o]) return !1;\n return !0;\n }\n if (t.constructor === RegExp) return t.source === r.source && t.flags === r.flags;\n if (t.valueOf !== Object.prototype.valueOf) return t.valueOf() === r.valueOf();\n if (t.toString !== Object.prototype.toString) return t.toString() === r.toString();\n if (i = Object.keys(t), n = i.length, n !== Object.keys(r).length) return !1;\n for (o = n; o-- !== 0; ) if (!Object.prototype.hasOwnProperty.call(r, i[o])) return !1;\n for (o = n; o-- !== 0; ) {\n let a = i[o];\n if ((a !== "_owner" || !t.$$typeof) && !e(t[a], r[a])) return !1;\n }\n return !0;\n }\n return t != t && r != r;\n}, deepFreeze: function e(t) {\n return Object.freeze(t), Object.keys(t).forEach((r) => {\n typeof t[r] != "object" || t[r] === null || Object.isFrozen(t[r]) || e(t[r]);\n }), t;\n}, deepMerge: Y, diffValues: (e, t) => {\n const r = {}, n = Object.keys(t), o = n.length;\n for (let i = 0; i < o; i++) {\n const a = n[i];\n e[a] !== t[a] && (e[a] === void 0 ? r[a] = t[a] : r[a] = e[a]);\n }\n return Object.keys(r).length === 0 ? null : r;\n}, findEqualOrGreater: function(e, t, r = Be) {\n let n = 0, o = e.length - 1;\n for (; n <= o; ) {\n let i = Math.floor((n + o) / 2), a = r(e[i]);\n if (a === t) return i;\n a < t ? n = i + 1 : o = i - 1;\n }\n return n;\n}, findEqualOrLesser: function(e, t, r = Be) {\n let n = e.length - 1, o = 0;\n for (; n >= o; ) {\n let i = Math.floor((n + o) / 2), a = r(e[i]);\n if (a === t) return i;\n a > t ? n = i - 1 : o = i + 1;\n }\n return n;\n}, findNextStep: (e, t = !0, r = 15, n = 10, o = 400) => {\n const i = Math.max(e - n, 0) + (t ? 1 : -1);\n return Math.min(o, Math[t ? "ceil" : "floor"](i / r) * r + n);\n}, getDPI: () => {\n let e = 1;\n return typeof window == "object" && (e = window.devicePixelRatio || 1), e;\n}, getFromPath: (e, t) => {\n const r = t.split(".");\n let n = e;\n for (let o = 0; o < r.length; o++) {\n const i = r[o];\n if (!n) return null;\n let a = n[i];\n if (typeof a == "function" && (a = a.bind(n)()), !a || !re(a)) return a;\n n = a;\n }\n return n ?? null;\n}, getOS: oe, hasFocus: qe, isDefined: (e) => e != null, isEmpty: (e) => e == null || e === "", isEqualArrays: at, isEqualBounds: (e, t) => e === t || !(e && !t || t && !e) && e.x === t.x && e.y === t.y && e.width === t.width && e.height === t.height, isEqualObjectKeys: (e, t) => {\n if (e === t) return !0;\n if (e && !t || t && !e) return !1;\n const r = Object.keys(e);\n if (r.length !== Object.keys(t).length) return !1;\n for (let n = 0; n < r.length; n++) if (e[r[n]] !== t[r[n]]) return !1;\n return !0;\n}, isNode: ct, isNullOrUndefined: ze, isNumeric: (e) => {\n const t = 1 * e;\n return Number.isFinite(t) && typeof t == "number";\n}, isObject: re, isPromiseLike: (e) => !!e && typeof e.then == "function", isRectInsideRect: (e, t) => e.top >= t.top && e.bottom <= t.bottom && e.left >= t.left && e.right <= t.right, isRectIntersect: Ke, mergeContentful: (...e) => {\n const t = e.length;\n if (t > 0 && e[t - 1] !== void 0 && !re(e[t - 1])) return e[t - 1];\n let r = e[0] || {};\n for (let n = 1; n < t; n++) r = Y(r, e[n] || {}, { arrayMerge: (o, i) => [...i] });\n return r;\n}, nextTick: (e) => {\n typeof window < "u" && typeof window.requestAnimationFrame == "function" ? window.requestAnimationFrame(() => {\n e();\n }) : (typeof setImmediate == "function" ? setImmediate : setTimeout)(() => {\n e();\n });\n}, openFileDialog: (e = "*.*") => new Promise((t, r) => {\n if (!Ve) return void r("Unable to open dialog with no dom.");\n const n = document.createElement("input");\n n.type = "file", n.accept = e;\n let o = null, i = !1;\n globalThis.addEventListener?.("focus", () => {\n setTimeout(() => {\n o || i || (i = !0, t(null));\n }, 1e3);\n }, { once: !0, passive: !0 }), n.onchange = () => {\n if (o = n.files[0], o) {\n if (i) return void console.warn("File open detected after faux cancel.", o);\n t(o);\n }\n }, n.autofocus = !0, n.click();\n}), rafThrottle: (e) => {\n let t, r = !1, n = function() {\n r = !1, e(t);\n };\n return function(o) {\n t = o, t && t.persist && t.persist(), r || (r = !0, requestAnimationFrame(n));\n };\n}, removeEmptyProperties: lt, removeEqualValues: st, removeListenerAll: (e) => {\n if (!e) return [];\n for (let t = 0; t < e.length; t++) e[t] && e[t]();\n return [];\n}, requestTimeout: (e, t) => {\n const r = $e(), n = { id: requestAnimationFrame(function o() {\n $e() - r >= t ? e.call(null) : n.id = requestAnimationFrame(o);\n }) };\n return n;\n}, roundAccurately: (e, t = 0) => {\n if (e == null || !isFinite(e)) return null;\n const r = 10 ** t;\n return Number(Math.round(e * r) / r);\n}, setToPath: (e, t, r) => {\n const n = t.split(".");\n let o = e;\n if (!o) throw new Error("Can not set path to a null path.");\n for (let i = 0; o && i < n.length - 1; i++) {\n const a = n[i];\n let l = o[a];\n if (l == null && (l = {}, o[a] = l), !re(l)) throw new Error("Can not set path to a non object path.");\n o = l;\n }\n if (typeof r != "number" && typeof r != "boolean" && typeof r != "string" && !re(r)) throw new Error(`Can not set path to ${r} that is not a a supported primitive.`);\n return o[n[n.length - 1]] = r, e;\n}, splitNumber: (e) => {\n let t = Math.abs(e);\n if (isNaN(t) || !isFinite(e)) return null;\n let r = 0 | t, n = t - r, o = 0, i = 0, a = 1;\n if (n > 5e-8) for (; i < 8 && Math.abs(o / a - n) > 5e-8; ) i++, a *= 10, o = Math.round(n * a);\n return { ip: Math.trunc(e), fp: o, ipLength: Math.ceil(Math.log10(r + 1)), fpLength: i };\n}, subtractRect: (e, t, r = !1) => {\n if (!t) return [e];\n if (!Ke(e, t)) return [];\n const n = [];\n let o = e;\n const i = () => {\n t.top > o.top && t.top < o.bottom && (n.push({ ...o, bottom: t.top }), o = { ...o, top: t.top });\n }, a = () => {\n t.bottom > o.top && t.bottom < o.bottom && (n.push({ ...o, top: t.bottom }), o = { ...o, bottom: t.bottom });\n }, l = () => {\n t.right > o.left && t.right < o.right && (n.push({ ...o, left: t.right }), o = { ...o, right: t.right });\n }, u = () => {\n t.left > o.left && t.left < o.right && (n.push({ ...o, right: t.left }), o = { ...o, left: t.left });\n };\n return r ? (u(), l(), i(), a()) : (i(), a(), l(), u()), n;\n}, textToKey: (e) => e.replace(/[^a-zA-Z0-9]/g, "").toLowerCase(), throttle: function(e, t) {\n let r = null;\n return (...n) => {\n const o = Date.now();\n (!r || o - r >= t) && (r = o, e(...n));\n };\n}, toSafeJSON: function e(t) {\n if (t === null || typeof t != "object") return t;\n if (typeof t.toJSON == "function") return t.toJSON();\n if (Array.isArray(t)) return t.map((n) => e(n));\n if (typeof t.toString == "function" && t.toString !== Object.prototype.toString) return t.toString();\n const r = {};\n for (const n in t) t.hasOwnProperty(n) && (r[n] = e(t[n]));\n return r;\n}, transpose: (e) => {\n if (!e) return e;\n const t = e.length, r = e[0].length, n = [];\n for (let o = 0; o < r; o++) n[o] = Array(t);\n for (let o = 0; o < t; o++) for (let i = 0; i < r; i++) n[i][o] = e[o][i];\n return n;\n}, uuidV4: de, validEnumValue: (e, t) => {\n if (!Object.values(e).includes(t)) throw new Error(`Invalid type: ${t ?? "null"}. Must be one of: ${Object.values(t).join(", ")}.`);\n}, whenFocus: async (e, t = !1) => new Promise((r) => {\n qe(e, t) ? r(!0) : e.addEventListener("focusin", () => {\n r(!0);\n }, { once: !0 }), e.focus();\n}) }, Symbol.toStringTag, { value: "Module" }));\nObject.freeze(Object.defineProperty({ __proto__: null, MESSAGE_ERROR_INVALID_ARG: (e) => `Invalid argument: \'${e}\'.` }, Symbol.toStringTag, { value: "Module" }));\nconst ut = (e) => {\n const t = new Uint8Array(e), r = t.byteLength;\n let n = "";\n for (let o = 0; o < r; o++) n += String.fromCharCode(t[o]);\n if (typeof window < "u" && typeof globalThis.btoa == "function") return globalThis.btoa(n);\n if (typeof Buffer < "u") return Buffer.from(n, "binary").toString("base64");\n throw new Error("Unsupported environment");\n}, Ce = (e) => new Promise((t, r) => {\n if (e) if (typeof FileReader < "u") {\n const n = new FileReader();\n n.onload = () => {\n t(n.result);\n }, n.onerror = () => {\n r(n.error);\n }, n.readAsText(e);\n } else if (typeof Buffer < "u") {\n const n = (o) => Buffer.from(o).toString("utf-8");\n e.arrayBuffer().then((o) => {\n t(n(o));\n }).catch((o) => {\n r(o);\n });\n } else r(new Error("Unsupported environment"));\n else t("");\n});\nObject.freeze(Object.defineProperty({ __proto__: null, DEFAULT_MIME_TYPE: "*/*", arrayBufferToBase64: ut, base64ToArrayBuffer: (e) => {\n const t = typeof window < "u" && typeof globalThis.atob == "function" ? globalThis.atob(e) : Buffer.from(e, "base64").toString("binary"), r = t.length, n = new Uint8Array(r);\n for (let o = 0; o < r; o++) n[o] = t.charCodeAt(o);\n return n.buffer;\n}, blobToString: Ce }, Symbol.toStringTag, { value: "Module" }));\nconst dt = "data:image/png;base64,", ft = "Unable to resolve image.", Ge = (e) => new Promise(async (t, r) => {\n let n = null;\n try {\n n = new Image(), n.src = e, n.addEventListener("load", function() {\n t({ width: n.naturalWidth, height: n.naturalHeight });\n }, { once: !0 }), n.addEventListener("error", function() {\n URL.revokeObjectURL(e), r("Invalid Image");\n }, { once: !0 }), await n.decode("sync");\n } catch {\n n?.src && URL.revokeObjectURL(n.src);\n }\n n || r(ft);\n}), we = "image/svg+xml";\nObject.freeze(Object.defineProperty({ __proto__: null, DATA_URL_PNG_PREFIX: dt, getImageDataUrl: (e, t = 1) => new Promise(async (r, n) => {\n let o = null;\n try {\n o = new Image(), o.src = e, o.addEventListener("load", function() {\n try {\n const i = document.createElement("canvas");\n i.width = o.naturalWidth, i.height = o.naturalHeight, i.getContext("2d").drawImage(o, 0, 0);\n const a = i.toDataURL("image/png", t);\n r({ elemImg: o, dataUrl: a });\n } catch (i) {\n URL.revokeObjectURL(e), n(i);\n }\n }, { once: !0 }), o.addEventListener("error", function() {\n URL.revokeObjectURL(e), n("Invalid Image");\n }, { once: !0 }), await o.decode("sync");\n } catch {\n o?.src && URL.revokeObjectURL(o.src);\n }\n o || n(ft);\n}), loadImageDetails: async (e, t = null) => {\n let r = null;\n const n = async () => {\n try {\n const i = t ?? "image/*", a = URL.createObjectURL(new Blob([e], { type: i })), l = await Ge(a);\n r = { mimeType: i, naturalDimensions: l, asUrl: a };\n } catch {\n }\n }, o = async () => {\n try {\n const i = new TextDecoder().decode(e), a = URL.createObjectURL(new Blob([i], { type: we })), l = await Ge(a);\n r = { mimeType: t ?? we, naturalDimensions: l, asUrl: a, asSVGText: i };\n } catch {\n }\n };\n if (t === we ? await o() : t.startsWith("image/") ? await n() : (await n(), r || await o()), !r) throw new Error("Failed to load image");\n return r;\n} }, Symbol.toStringTag, { value: "Module" }));\nvar We, Ye;\n(Ye = We || (We = {})).resolveTypedUpdates = (e, t, r, n) => {\n if (e === null) return e;\n if (e === void 0) return n;\n let o = e;\n if (t?.shorthand) {\n const u = t?.shorthand(e, r);\n u !== void 0 && (o = u);\n }\n if (o !== null && t?.getSubType) {\n const u = t.getSubType(o);\n u && (t = u);\n }\n const i = t?.properties, a = t?.arrayType ?? !1;\n let l = o;\n if (t && t.merge && l && n) l = t.merge(l, n, r);\n else if (!a && i) {\n const u = Object.keys({ ...o, ...n });\n l = null;\n for (let f = 0; f < u.length; f++) {\n const h = u[f];\n let g, p = o[h];\n if (p !== void 0) {\n const y = i[h];\n g = y ? (0, Ye.resolveTypedUpdates)(p, y, r, n?.[h]) : p;\n } else g = n?.[h];\n g != null && (l = l ?? {}, l[h] = g);\n }\n }\n return l;\n};\nconst Je = `The Safari browser does not support advanced copy and paste.\nCopy and paste will be limited to within the browser tab.\n\nPlease use Chrome or Edge if external copy and paste is required.`, ye = `You do not have permissions to access the clipboard.\nAll copy and paste operations will be limited to the browser tab.`, pt = { Safari: `The Safari browser does not support advanced copy and paste.\nCopy and paste will be limited to within the browser tab.\n\nPlease use Chrome or Edge if external copy and paste is required.`, Perms: ye, PermsWrite: oe() === k.Safari ? Je : ye, PermsRead: oe() === k.Safari ? Je : ye }, ge = async () => new Promise((e) => {\n document.hasFocus() ? e() : globalThis.addEventListener?.("focus", () => {\n e();\n }, { once: !0 }), document.activeElement.focus?.();\n}), be = async (e, t, r) => {\n if (oe() === k.Safari) return await r(new Error(pt.Safari));\n try {\n const n = async (a) => {\n try {\n return await a();\n } catch (l) {\n if (l.message?.includes("Document is not focused")) return !1;\n throw l;\n }\n }, o = await globalThis?.navigator?.permissions?.query({ name: e, allowWithoutGesture: !0, allowWithoutSanitization: !0 });\n let i = !1;\n if (o.state === "prompt" && (i = await n(t)), i || o.state !== "granted" || (i = await t()), !i) return await r(new Error(o.state));\n } catch (n) {\n return n.message === "No valid data on clipboard" || n.name === "DataError" ? void 0 : await r(n);\n }\n}, mt = async (e) => {\n try {\n return await e.read({ unsanitized: [S.html] });\n } catch {\n }\n return await e.read();\n}, Bt = async (e, t) => {\n if (!e) return null;\n const r = await mt(e);\n let n = !1;\n for (let o = 0; !n && r && o < r.length; o++) if (n = r[o].types.includes(t), n)\n return await r[o].getType(t);\n return n ? void 0 : null;\n};\nif (!globalThis.ClipboardItem) {\n const e = (r, n) => new Blob([n], { type: r });\n class t {\n constructor(n, o) {\n this._items = {}, this._types = Object.keys(n);\n const i = {}, a = Object.keys(n);\n for (let l = 0; l < a.length; l++) {\n const u = a[l];\n let f = n[u];\n i[u] = typeof f == "string" ? e(u, f) : f;\n }\n this._items = i, this._presentationStyle = o?.presentationStyle ?? "unspecified";\n }\n get types() {\n return this._types;\n }\n getType(n) {\n return Promise.resolve(this._items[n]);\n }\n supports(n) {\n return !0;\n }\n }\n globalThis.ClipboardItem = t;\n}\nconst ve = async (e, t = S.html) => new Promise(async (r, n) => {\n try {\n const o = await Bt(e, t);\n if (o) {\n const i = new FileReader();\n i.onload = () => {\n r(i.result);\n }, i.onerror = () => {\n r("");\n }, i.readAsText(o);\n } else r("");\n } catch (o) {\n n(o);\n }\n}), He = async (e, t = S.html) => {\n const r = await ve(e, t);\n if (!r) return null;\n let n = null;\n try {\n n = new DOMParser().parseFromString(r, S.html);\n } catch {\n console.warn("Can\'t parse html from clipboard.");\n }\n return n;\n}, $t = async (e) => {\n e && await e.writeText("");\n}, ie = "clipboard-uuid", Q = "web text/uuid", Xe = (e) => `<div style="display:none" ${ie}="${e}"/>`, zt = (e, t) => {\n let r = null;\n try {\n const n = new DOMParser().parseFromString(t, S.html);\n n.body.firstElementChild.setAttribute(ie, e), r = n.getElementsByTagName("body")[0].innerHTML;\n } catch (n) {\n console.warn("Can\'t embed uuid.", n);\n }\n return r;\n}, Ze = (e, t) => {\n if (!t || !e) return !1;\n try {\n const r = t.querySelectorAll(`[${ie}="${e}"]`);\n if (r && r.length === 1) return !0;\n if (t.querySelector("parsererror")) throw new Error("We are unable to parse node");\n return !1;\n } catch {\n return !1;\n }\n};\nclass Qe {\n constructor(t) {\n if (t?.nativeClipboard === void 0 || t?.nativeClipboard === !0) try {\n this._nativeClipboard = globalThis?.navigator.clipboard;\n } catch {\n t?.nativeClipboard === !0 && console.warn("NativeClipboard option set to true but no native clipboard available.");\n }\n else this._nativeClipboard = t?.nativeClipboard === !1 ? null : t?.nativeClipboard;\n this._disableCheckOnFocus = t?.disableCheckOnFocus ?? !1, this._init();\n }\n async _checkForChanges() {\n this._nativeClipboard && this._state && !this._disableCheckOnFocus && await be("clipboard-read", async () => {\n await ge();\n const t = await ve(this._nativeClipboard, Q);\n if (!this._state || t && t === this._state.uuid) return !0;\n const r = await He(this._nativeClipboard, S.html);\n return !this._state || (Ze(this._state.uuid, r) || this.clear(), !0);\n }, async (t) => {\n t?.message === "denied" || t.message?.includes("Document is not focused") || oe() === k.Safari || console.warn("Unable to detect clipboard changes: ", t);\n });\n }\n _init() {\n const t = this;\n this._listeners = /* @__PURE__ */ new Map(), this._listenersCapture = /* @__PURE__ */ new Map(), this._state = null, this._nativeClipboard && (this._onFocus = () => {\n t._checkForChanges();\n }, this._onBlur = () => {\n globalThis.addEventListener?.("focus", t._onFocus, { once: !0 });\n }, globalThis.addEventListener?.("blur", this._onBlur), this._nativeClipboard.addEventListener("clipboardchange", (r) => {\n t._checkForChanges();\n }));\n }\n async read() {\n if (!this._nativeClipboard) return this._state?.items ?? null;\n const t = this;\n return await be("clipboard-read", async () => {\n if (await ge(), this._state?.uuid) {\n const r = await ve(this._nativeClipboard, Q);\n if (r && r === t._state.uuid) return !0;\n const n = await He(this._nativeClipboard, S.html);\n if (Ze(t._state?.uuid, n)) return !0;\n }\n return t._state = { items: await mt(this._nativeClipboard), uuid: null, ref: null }, this.dispatchEvent(new Event("clipboardread")), !0;\n }, async (r) => {\n this.dispatchEvent(new Event("clipboarderrorread"));\n }), this._state?.items ?? [];\n }\n async write(t) {\n return this._write({ uuid: de(), items: t, ref: null });\n }\n async _write(t) {\n if (!this._nativeClipboard) return this._state = t, this.dispatchEvent(new Event("clipboardwrite")), this.dispatchEvent(new Event("clipboardchange")), null;\n const r = this, n = [], o = t.uuid;\n let i = t.items ?? [];\n const a = () => {\n r._state = { uuid: o, ref: t.ref, items: n }, r.dispatchEvent(new Event("clipboardwrite")), r.dispatchEvent(new Event("clipboardchange"));\n };\n await be("clipboard-write", async () => {\n await ge(), o && i.length === 0 && (i.push(new ClipboardItem({ [Q]: new Blob([o], { type: Q }) })), i.push(new ClipboardItem({ [S.html]: new Blob([Xe(o)], { type: S.html }) })));\n for (let l = 0; l < Math.min(1, i.length); l++) {\n const u = i[l];\n let f = u.types.indexOf(S.html), h = null;\n if (f !== -1) {\n const y = await u.getType(S.html);\n h = await Ce(y), h && (h = zt(o, h));\n }\n if (!h && u.types.includes(S.plain)) {\n const y = await u.getType(S.plain);\n if (y) {\n let T = null;\n typeof y == "string" ? (console.warn("text as string", y), T = y) : T = await Ce(y), T && (h = `<div ${ie}="${o}">${T}</div>`);\n }\n }\n if (!h && u.types.includes(S.png)) {\n const y = await u.getType(S.png), T = ut(await y.arrayBuffer());\n h = `<div ${ie}="${o}"><img src="${dt + T}"/></div>`;\n }\n !h && o && (h = Xe(o));\n const g = new Blob([h ?? ""], { type: S.html }), p = {};\n for (let y = 0; y < u.types.length; y++) {\n const T = u.types[y];\n p[T] = y === f ? g : u.getType(T);\n }\n h && f === -1 && (p[S.html] = g), o && (p[Q] = new Blob([o], { type: Q })), n.push(new ClipboardItem(p));\n }\n try {\n n && n.length !== 0 ? await this._nativeClipboard.write(n) : await $t(this._nativeClipboard);\n } catch (l) {\n l.message?.includes("Document is not focused") || console.warn("Unable to write to native clipboard: ", l);\n }\n return a(), !0;\n }, async (l) => {\n this.dispatchEvent(new Event("clipboarderrorwrite")), a();\n });\n }\n async writeReference(t) {\n if (!t) return void this.clear();\n let r = null;\n const n = {};\n try {\n const i = await t.toText?.() ?? null;\n i && (n[S.plain] = new Blob([i ?? ""], { type: S.plain }));\n } catch (i) {\n r = i;\n }\n try {\n const i = await t.toHtml?.() ?? null;\n i && (n[S.html] = new Blob([i], { type: S.html }));\n } catch (i) {\n r = i, console.warn("export to html", i);\n }\n try {\n const i = await t.toImage?.() ?? null;\n i && (n[S.png] = i);\n } catch (i) {\n r = i, console.warn("export to png", i);\n }\n const o = this._write({ uuid: de(), ref: t, items: Object.keys(n).length > 0 ? [new ClipboardItem(n)] : null });\n if (r) throw r;\n return o;\n }\n clear(t = !1) {\n this._state && (this._state = null, t && this._write({ uuid: null, ref: null, items: null }), this.dispatchEvent(new Event("clipboardwrite")), this.dispatchEvent(new Event("clipboardchange")));\n }\n async readReference() {\n return await this.read(), this._state?.ref ?? null;\n }\n readText() {\n return new Promise(async (t, r) => {\n const n = await this.read();\n let o = null;\n for (let a = 0; !o && n && a < n.length; a++) n[a].types.includes(S.plain) && (o = await n[a].getType(S.plain));\n if (!o) return void t("");\n const i = new FileReader();\n i.onload = () => {\n t(i.result);\n }, i.readAsText(o), i.onerror = (a) => {\n r(a);\n };\n });\n }\n async writeText(t) {\n const r = [new ClipboardItem({ [S.plain]: new Blob([t], { type: S.plain }) })];\n return this._write({ uuid: de(), items: r, ref: null });\n }\n addEventListener(t, r, n = {}) {\n const o = n?.capture ? this._listenersCapture : this._listeners;\n let i = o.get(t);\n i || (i = /* @__PURE__ */ new Map(), o.set(t, i)), i.set(r, typeof n == "boolean" ? {} : n);\n }\n dispatchEvent(t) {\n if (!t) return;\n const r = (n) => {\n const o = n.get(t.type);\n o && o.forEach((i, a) => {\n try {\n typeof a == "function" ? a(t) : a.handleEvent && a.handleEvent(t), i.once && o.delete(a);\n } catch (l) {\n console.warn(l);\n }\n });\n };\n return r(this._listenersCapture), r(this._listeners), !0;\n }\n removeEventListener(t, r, n) {\n const o = n?.capture ? this._listenersCapture : this._listeners, i = o.get(t);\n i && (i.delete(r), i.size === 0 && o.delete(t));\n }\n close() {\n globalThis.removeEventListener?.("focus", this._onFocus), globalThis.removeEventListener?.("blur", this._onBlur);\n }\n}\nvar Ee;\n(Ee = Qe || (Qe = {})).ErrorMessages = pt, Ee.Global = new Ee();\nconst Kt = "__SHEETXL";\nlet ee = null, le = null;\nasync function Vt() {\n if (ee)\n return ee;\n if (le) {\n if (await le, !ee)\n throw new Error("ESBuild initialization promise resolved, but instance is not available.");\n return ee;\n }\n let e, t;\n le = new Promise((r, n) => {\n e = r, t = n;\n });\n try {\n const { initialize: r } = await Promise.resolve().then(function() {\n return rr;\n });\n return ee = await r(), e(), ee;\n } catch (r) {\n throw console.error("Failed to import or initialize esbuild:", r), le = null, t(r), r;\n }\n}\nconst qt = {\n // ESBuild.TsconfigRaw =\n compilerOptions: {\n target: "esnext"\n }\n};\nasync function Gt(e, t, r = "/script.js", n = Kt) {\n try {\n const o = await Vt(), i = "@sheetxl/primitives", a = `\n export const FormulaContext = globalThis.${n}?.FormulaContext;\n export const ScalarType = globalThis.${n}?.ScalarType;\n export const Observable = globalThis.${n}?.Observable;\n export const IRange = globalThis.${n}?.IRange;\n export const FormulaError = globalThis.${n}?.FormulaError;\n // Add more exports as needed\n `, l = {\n // ESBuild.Plugin = {\n name: "sheetxl-esbuild-in-memory",\n setup(f) {\n const h = "sheetxl-" + (/* @__PURE__ */ new Date()).getTime();\n f.onResolve({ filter: new RegExp(`^(${r.replace("/", "\\\\/")}|${i})$`) }, (g) => ({\n path: g.path,\n namespace: h\n })), f.onResolve({ filter: /.*/ }, (g) => {\n if (g.namespace !== h)\n return console.warn(`esbuild: Treating import "${g.path}" as external.`), { path: g.path, external: !0 };\n }), f.onLoad({ filter: /.*/, namespace: h }, (g) => {\n let p;\n if (g.path === r)\n p = t;\n else if (g.path === i)\n p = a;\n else\n return {\n errors: [{ text: `Cannot load unknown path in ${h}: ${g.path}` }]\n };\n return {\n contents: p,\n loader: "ts"\n // leave this as \'ts\' so esbuild generates proper sourcemaps\n };\n });\n }\n }, u = await o.build({\n entryPoints: [r],\n // Use the virtual entry point\n bundle: !0,\n // IMPORTANT: Enable bundling\n write: !1,\n // IMPORTANT: Return result in memory\n format: "esm",\n // Output format\n plugins: [l],\n // TODO - later change to external and prepend when executing from ui\n sourcemap: "inline",\n // Generate separate source map string\n tsconfigRaw: qt,\n // Pass the mapped options\n minify: !0,\n // sourcemap: \'external\', // Generate separate source map string\n // Or use \'inline\' if you prefer data URLs embedded in the code\n // To suppress warnings about dynamic import() if esbuild complains:\n // supported: { \'dynamic-import\': true },\n platform: "neutral"\n // not really needed\n });\n if (u.outputFiles && u.outputFiles.length > 0)\n return u.outputFiles[0].text;\n throw u.errors && u.errors.length > 0 ? new Error(`esbuild bundling failed: ${u.errors.map((f) => f.text).join(`\n`)}`) : new Error("esbuild did not produce an output file.");\n } catch (o) {\n throw console.error("esbuild bundling process failed:", o), o;\n }\n}\nconst Wt = `\n/**\n * Represents the completion of an asynchronous operation\n */\ninterface Promise<T> {\n /**\n * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The\n * resolved value cannot be modified from the callback.\n * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).\n * @returns A Promise for the completion of the callback.\n */\n finally(onfinally?: (() => void) | undefined | null): Promise<T>;\n}\n`, Yt = `\n interface FirstTest {\n isTrue?: boolean;\n }\n`, Jt = async () => Yt, ht = /* @__PURE__ */ new Map([\n ["IReferenceRange", "r"],\n ["IRange", "l"]\n]), wt = /* @__PURE__ */ new Map([\n ["IWorkbook", "workbook"],\n ["ISheet", "sheet"],\n ["ICellRanges", "ranges"],\n ["ICellRange", "range"],\n ["IFormulaContext", "context"]\n]), _e = (e, t) => {\n Array.from(t.keys()).forEach((n) => {\n const o = t.get(n);\n t.set(`${e}.${n}`, o);\n });\n}, Ht = /* @__PURE__ */ new Map([\n ["Scalar", "*"],\n ["FormulaError.Known", W.Error],\n ["Date", "Date"],\n ["JSON", "JSON"]\n]), Xt = /* @__PURE__ */ new Map([\n // Repeating\n]), Oe = "SheetXL";\n_e(Oe, ht);\n_e(Oe, wt);\n_e(Oe, Xt);\nconst Zt = /* @__PURE__ */ new Map([\n ["Promise", () => ({ async: !0 })],\n // [\'PromiseLike\', (): Partial<IFunction.ReturnTypeJSON> => {\n // return { async: true };\n // }],\n ["Observable", () => ({ stream: !0 })]\n]);\nlet se = null;\nasync function Qt() {\n if (se)\n return se;\n try {\n return await (await Promise.resolve().then(function() {\n return or;\n })).initialize();\n } catch (e) {\n throw se = null, e;\n } finally {\n se = null;\n }\n}\nasync function er(e) {\n const t = e?.source ?? null;\n if (!t) return null;\n const r = (e.disableBundle || e.declarationsOnly) ?? !1, n = [\n Jt(),\n //import(\'typescript\'), // when bundled, but node check causes issues. We could bundle replace isNode but felt hacky\n Qt()\n ], o = await Promise.all(n), i = o[0], a = o[1];\n let l = "", u = null;\n const f = [], h = {\n allowJs: !0,\n declaration: !1,\n sourceMap: !1,\n // was true but now bundler will do this\n inlineSourceMap: !1,\n inlineSources: !1,\n isolatedModules: !0,\n preserveConstEnums: !1,\n // types: [\'WebWorker\'],\n module: 99,\n //"esNext",\n noResolve: !0,\n emitDeclarationOnly: !1,\n target: a.ScriptTarget.ES2020\n // lib: [\'webworker\', \'es2020\', \'esnext.asynciterable\'], // Use the webworker lib instead of dom\n }, g = "script", p = `${g}.ts`, y = "lib.d.ts", T = "global.d.ts", A = {\n [p]: t,\n [y]: Wt,\n [T]: i\n }, D = {\n getSourceFile: (s, w, L, P) => a.createSourceFile(s, A[s], a.ScriptTarget.Latest, !0),\n fileExists: (s) => A[s] !== void 0,\n readFile: (s) => A[s],\n writeFile: (s, w) => {\n A[s] = w;\n },\n // not used\n getCurrentDirectory: () => "./",\n getCanonicalFileName: (s) => s,\n useCaseSensitiveFileNames: () => !0,\n getDefaultLibFileName: (s) => y,\n getNewLine: () => `\n`\n }, U = a.createProgram([p, T], h, D), I = U.getTypeChecker(), J = U.getSourceFile(p), E = U.emit();\n E.diagnostics.length > 0 && console.warn(E.diagnostics), l = A[`${g}.js`];\n const c = (s, w, L, P) => {\n if (!s) {\n $(s, new Error(`Type is not defined for \'${w?.name ?? "return"}\'.`));\n return;\n }\n if (s.kind === a.SyntaxKind.NumberKeyword)\n w.scalar = W.Number;\n else if (s.kind === a.SyntaxKind.StringKeyword)\n w.scalar = W.String;\n else if (s.kind === a.SyntaxKind.BooleanKeyword)\n w.scalar = W.Boolean;\n else if (s.kind === a.SyntaxKind.UndefinedKeyword || s.kind === a.SyntaxKind.NullKeyword || s.kind === a.SyntaxKind.VoidKeyword) {\n if (P) {\n $(s, new Error(`\'undefined\' is not a valid type for input: \'${s?.parent?.name?.escapedText}\'.`));\n return;\n }\n w.scalar = W.Null;\n } else if (s.kind === a.SyntaxKind.BigIntKeyword)\n w.scalar = W.Number;\n else if (s.kind === a.SyntaxKind.AnyKeyword)\n w.scalar = W.Null;\n else if (s.kind === a.SyntaxKind.ArrayType) {\n const M = s.elementType;\n if (!M) {\n $(s, new Error(`\'Array\' must be typed: \'${s?.parent?.name?.escapedText}\'.`));\n return;\n }\n w.arrayDepth = (w.arrayDepth ?? 0) + 1, c(M, w, L, P);\n } else if (s.kind !== a.SyntaxKind.TupleType) {\n if (s.kind === a.SyntaxKind.TypeReference) {\n const M = s.typeName?.getText?.() ?? null, K = ht.get(M);\n let V = !1;\n K && (w.range = K, V = !0);\n const q = Ht.get(M);\n if (q && (w.scalar = q), q !== void 0 && (V = !0), P) {\n const R = wt.get(M);\n if (R)\n return R;\n } else {\n const R = Zt.get(M);\n if (R) {\n const b = { ...w, ...R() };\n let N = 0;\n if (b.async && N++, b.stream && N++, N > 1) {\n $(s, new Error(`\'${M}\' cannot have multiple modifiers: \'${s?.parent?.name?.escapedText}\'.`));\n return;\n }\n w = b, V = !0;\n }\n }\n if (!V) {\n $("node", new Error(`\'${M}\' is not a valid type: \'${s?.parent?.name?.escapedText}\'.`));\n return;\n }\n const H = s.typeArguments;\n if (H) {\n if (H.length !== 1) {\n $(s, new Error(`\'${M}\' must be typed with exactly 1 type: \'${s?.parent?.name?.escapedText}\'.`));\n return;\n }\n c(H[0], w, L, P);\n }\n }\n }\n }, m = (s) => (a.getCombinedModifierFlags(s) & a.ModifierFlags.Export) !== 0, fe = (s) => (a.getCombinedModifierFlags(s) & a.ModifierFlags.Default) !== 0, B = [], $ = (s, w) => {\n B.push(w);\n };\n if (a.forEachChild(J, (s) => {\n if (m(s) && a.isFunctionDeclaration(s)) {\n const w = {}, L = {\n parameters: {}\n }, P = s?.name?.getText();\n try {\n w.name = P;\n const K = I.getSymbolAtLocation(s.name).getDocumentationComment(I);\n if (K && K.length > 0 && K[0].text) {\n let R = K[0].text;\n R = R.replace(/[\\r\\n]+/g, "\\\\n").trim(), L.summary = R;\n }\n const V = {};\n c(s.type, V, w, !1), w.returnType = V;\n const q = {};\n fe(s) && (q.default = !0, u = P), Object.keys(q).length > 0 && (w.behavior = q), w.parameters = [];\n const H = /* @__PURE__ */ new Map();\n for (let R = 0; R < s.parameters.length; R++) {\n const b = s.parameters[R], N = {};\n N.name = b.name?.getText();\n const X = c(b.type, N, w, !0);\n if (X) {\n if (w.parameters.length !== 0) {\n const F = s?.parent?.name?.getText();\n $(s, new Error(`\'${w.name}\' contexts must be the first parameter: \'${F}\'.`));\n return;\n }\n w.context = X;\n continue;\n }\n const z = !((b.initializer === void 0 || b.initializer === null) && (b.questionToken === void 0 || b.questionToken === null));\n let C;\n if (z && (N.optional = !0, b.initializer))\n try {\n b.initializer.kind === a.SyntaxKind.StringLiteral ? C = b.initializer.text : b.initializer.kind === a.SyntaxKind.NumericLiteral ? C = parseFloat(b.initializer.text) : b.initializer.kind === a.SyntaxKind.TrueKeyword || b.initializer.kind === a.SyntaxKind.FalseKeyword ? C = b.initializer.kind === a.SyntaxKind.TrueKeyword : b.initializer.kind === a.SyntaxKind.NullKeyword ? C = null : b.initializer.kind === a.SyntaxKind.ObjectLiteralExpression || b.initializer.kind === a.SyntaxKind.ArrayLiteralExpression ? C = b.initializer.getText() : C = b.initializer.getText?.();\n } catch (O) {\n console.warn(`Couldn\'t extract default value for parameter \'${N.name}\'`, O);\n }\n b.dotDotDotToken && (N.rest = !0), w.parameters.push(N);\n const x = { description: "" };\n L.parameters[N.name] = x;\n const G = I.getSymbolAtLocation(b.name).getDocumentationComment(I);\n G && G.length > 0 && G[0].text && (x.description = G[0].text), C !== void 0 && (x.defaultValue = C), H.set(N.name, N);\n }\n if (s.jsDoc && s.jsDoc.length > 0) {\n const R = s.jsDoc;\n for (let b = 0; b < R.length; b++) {\n const N = R[b]?.tags;\n if (N)\n for (let X = 0; X < N.length; X++) {\n const z = N[X];\n let C = z?.tagName?.text;\n if (!C) continue;\n C = C.toLowerCase();\n let x = z.comment;\n const G = C === "hidden";\n if (!(typeof x != "string" && !G) && (typeof x == "string" && (x = x.replace(/[\\r\\n]+/g, "\\\\n").trim()), !(!G && x && (x = x.split(/\\\\n/)[0], !x || x.length === 0)))) {\n if (x && typeof x == "string") {\n const O = /\\{@link(code|plain)?\\s+([^}|]+)(?:\\s*\\|\\s*([^}]+))?\\}/g;\n let F, Z = x, te = [];\n for (; (F = O.exec(x)) !== null; ) {\n const [pe, me, gt, Ne] = F, bt = [gt.trim()];\n Ne && bt.push(Ne.trim());\n }\n x = Z, te.length > 0 && C === "see" && (L.links || (L.links = []), L.links.push(...te));\n }\n if (C === "name") {\n const O = x;\n O !== P && (L.name = O);\n } else if (C === "description") {\n const O = x;\n } else if (C === "summary") {\n const O = x;\n O && (L.summary = O);\n } else if (C === "param") {\n const O = z.name?.text, F = H.get(O);\n if (!F) {\n B.push(new Error(`Parameter \'${O}\' not found in function \'${P}\'.`));\n continue;\n }\n if (z.typeExpression && z.typeExpression.type)\n try {\n const Z = z.typeExpression.type;\n if (Z.kind === a.SyntaxKind.UnionType) {\n const te = [];\n F.enums = te, Z.types.forEach((pe) => {\n if (pe.kind === a.SyntaxKind.LiteralType) {\n const me = pe.literal.text;\n me && te.push(me);\n }\n });\n }\n } catch (Z) {\n console.warn("Error parsing JSDoc type expression:", Z);\n }\n } else if (C === "returns" || C === "return")\n w.returnType.description = x;\n else if (C === "category")\n L.category = x;\n else if (C === "hidden") {\n let O = !0;\n const F = x?.toLowerCase();\n F === "false" ? O = !1 : F !== "true" && (O = x), O !== !1 && (L.hidden = O ?? !0);\n }\n }\n }\n }\n }\n Object.keys(w.returnType).length === 0 && delete w.returnType, f.push([w, L]);\n } catch (M) {\n $(s, new Error(`\'${P}\': ${M.message}`));\n }\n }\n }), B.length > 0)\n throw console.warn(B), new Error("There were compilation errors.", { cause: B });\n if (f.length === 0)\n throw new Error("No exported functions.");\n const yt = `${Ut.uuidV4()}-script`;\n try {\n !r && B.length === 0 && (l = await Gt(a, l, g));\n } catch {\n console.warn("Error bundling script");\n }\n const Ie = {\n functions: f,\n commitId: yt,\n source: t,\n name: "Script",\n language: "typescript",\n // default\n compiled: l\n };\n return u && (Ie.autoRun = u), Ie;\n}\nself.addEventListener("message", async (e) => {\n const { id: t, params: r } = e.data;\n try {\n const n = await er(r);\n self.postMessage({ id: t, result: n, error: null });\n } catch (n) {\n self.postMessage({\n id: t,\n result: null,\n error: {\n message: n.message,\n stack: n.stack,\n cause: n.cause\n }\n });\n }\n});\nlet ce = null;\nasync function tr() {\n return ce || (ce = new Promise(async (e, t) => {\n try {\n const r = "0.20.2", n = `https://esm.sh/esbuild-wasm@${r}`, o = `https://esm.sh/esbuild-wasm@${r}/esbuild.wasm`, a = (await import(\n /* webpackIgnore: true */\n /* @vite-ignore */\n n\n )).default;\n await a.initialize({\n wasmURL: o,\n // Provide the specific WASM URL\n worker: !1\n // Keep processing on the current thread\n }), e(a);\n } catch (r) {\n console.error("Error initializing esbuild:", r), t(r);\n }\n }), ce);\n}\nvar rr = /* @__PURE__ */ Object.freeze({\n __proto__: null,\n initialize: tr\n});\nlet ue = null;\nasync function nr() {\n return ue || (ue = new Promise(async (e, t) => {\n let r = null;\n try {\n r = await import("https://esm.sh/typescript@5.7.2");\n } catch (n) {\n console.error("Error initializing Browser TypeScript module:", n);\n }\n r || console.log("use script fallback"), e(r);\n }), ue);\n}\nvar or = /* @__PURE__ */ Object.freeze({\n __proto__: null,\n initialize: nr\n});\n', r = typeof self < "u" && self.Blob && new Blob(["URL.revokeObjectURL(import.meta.url);", t], { type: "text/javascript;charset=utf-8" });
|
|
49
|
+
const t = '/**\n * @license @sheetxl/primitives - Primitives - Base types for SheetXL functions. - v0.3.15\n *\n * (C) 2025-present SheetXL Inc. & Michael T. Ford\n * License: The license can be found at https://www.sheetxl.com/license.\n */\nconst W = { Number: "n", String: "s", Boolean: "b", Error: "e", Null: "z" };\nvar Re, ae, d;\n(ae = Re || (Re = {})).Orientation = { Column: "column", Row: "row" }, ae.Orientations = { ...ae.Orientation, Both: "both" }, ae.Direction = { Up: "up", Down: "down", Left: "left", Right: "right" }, ((e) => {\n e.Code = { Parse: 0, Null: 1, Div0: 2, Value: 3, Ref: 4, Name: 5, Num: 6, NA: 7, GettingData: 8, Spill: 9, Connect: 10, Blocked: 11, Unknown: 12, Field: 13, Calc: 14, Busy: 16, Python: 19, Timeout: 20 }, e.Label = { Parse: "#PARSE!", Null: "#NULL!", Div0: "#DIV/0!", Value: "#VALUE!", Ref: "#REF!", Name: "#NAME?", Num: "#NUM!", NA: "#N/A", GettingData: "#GETTING_DATA", Spill: "#SPILL!", Connect: "#CONNECT!", Blocked: "#BLOCKED!", Unknown: "#UNKNOWN!", Field: "#FIELD!", Calc: "#CALC!", Busy: "#BUSY!", Python: "#PYTHON!", Timeout: "#TIMEOUT!" };\n class t extends Error {\n constructor(c, m, fe, B) {\n super(fe, B), this._label = m, this._code = c, this.details = B;\n }\n static {\n this.code = e.Code.Unknown;\n }\n get isFormulaError() {\n return !0;\n }\n getLabel() {\n return this._label;\n }\n getCode() {\n return this._code;\n }\n equals(c) {\n return !!c && (this._code === c._code || this._code === c.code);\n }\n get [Symbol.toStringTag]() {\n return "[FormulaError]";\n }\n toString() {\n return this.message || this._label;\n }\n }\n e.Known = t;\n class r extends t {\n constructor(c, m) {\n super(e.Code.Parse, e.Label.Parse, c, m);\n }\n static {\n this.code = e.Code.Parse;\n }\n getDetails() {\n const c = this.details;\n return { line: c?.line ?? 1, column: c?.column ?? 1, offset: c?.offset ?? 0, length: c?.length ?? 0 };\n }\n }\n e.Parse = r;\n class n extends t {\n constructor(c, m) {\n super(e.Code.Null, e.Label.Null, c, m);\n }\n static {\n this.code = e.Code.Null;\n }\n }\n e.Null = n;\n class o extends t {\n constructor(c, m) {\n super(e.Code.Div0, e.Label.Div0, c, m);\n }\n static {\n this.code = e.Code.Div0;\n }\n }\n e.Div0 = o;\n class i extends t {\n constructor(c, m) {\n super(e.Code.Value, e.Label.Value, c, m);\n }\n static {\n this.code = e.Code.Value;\n }\n }\n e.Value = i;\n class a extends t {\n constructor(c, m) {\n super(e.Code.Ref, e.Label.Ref, c, m);\n }\n static {\n this.code = e.Code.Ref;\n }\n }\n e.Ref = a;\n class l extends t {\n constructor(c, m) {\n super(e.Code.Name, e.Label.Name, c, m);\n }\n static {\n this.code = e.Code.Name;\n }\n }\n e.Name = l;\n class u extends t {\n constructor(c, m) {\n super(e.Code.Num, e.Label.Num, c, m);\n }\n static {\n this.code = e.Code.Num;\n }\n }\n e.Num = u;\n class f extends t {\n constructor(c, m) {\n super(e.Code.NA, e.Label.NA, c, m);\n }\n static {\n this.code = e.Code.NA;\n }\n }\n e.NA = f;\n class h extends t {\n constructor(c, m) {\n super(e.Code.GettingData, e.Label.GettingData, c, m);\n }\n static {\n this.code = e.Code.GettingData;\n }\n }\n e.GettingData = h;\n class g extends t {\n constructor(c, m) {\n super(e.Code.Spill, e.Label.Spill, c, m);\n }\n static {\n this.code = e.Code.Spill;\n }\n }\n e.Spill = g;\n class p extends t {\n constructor(c, m) {\n super(e.Code.Connect, e.Label.Connect, c, m);\n }\n static {\n this.code = e.Code.Connect;\n }\n }\n e.Connect = p;\n class y extends t {\n constructor(c, m) {\n super(e.Code.Blocked, e.Label.Blocked, c, m);\n }\n static {\n this.code = e.Code.Blocked;\n }\n }\n e.Blocked = y;\n class T extends t {\n constructor(c, m) {\n super(e.Code.Unknown, e.Label.Unknown, c, m);\n }\n static {\n this.code = e.Code.Unknown;\n }\n }\n e.Unknown = T;\n class A extends t {\n constructor(c, m) {\n super(e.Code.Field, e.Label.Field, c, m);\n }\n static {\n this.code = e.Code.Field;\n }\n }\n e.Field = A;\n class D extends t {\n constructor(c, m) {\n super(e.Code.Calc, e.Label.Calc, c, m);\n }\n static {\n this.code = e.Code.Calc;\n }\n }\n e.Calc = D;\n class U extends t {\n constructor(c, m) {\n super(e.Code.Busy, e.Label.Busy, c, m);\n }\n static {\n this.code = e.Code.Busy;\n }\n }\n e.Busy = U;\n class I extends t {\n constructor(c, m) {\n super(e.Code.Python, e.Label.Python, c, m);\n }\n static {\n this.code = e.Code.Python;\n }\n }\n e.Python = I;\n class J extends t {\n constructor(c, m) {\n super(e.Code.Timeout, e.Label.Timeout, c, m);\n }\n static {\n this.code = e.Code.Timeout;\n }\n }\n e.Timeout = J;\n})(d || (d = {}));\nconst _ = {};\n_[d.Code.Parse] = d.Parse, _[d.Code.Null] = d.Null, _[d.Code.Div0] = d.Div0, _[d.Code.Value] = d.Value, _[d.Code.Ref] = d.Ref, _[d.Code.Name] = d.Name, _[d.Code.Num] = d.Num, _[d.Code.NA] = d.NA, _[d.Code.GettingData] = d.GettingData, _[d.Code.Spill] = d.Spill, _[d.Code.Connect] = d.Connect, _[d.Code.Blocked] = d.Blocked, _[d.Code.Unknown] = d.Unknown, _[d.Code.Field] = d.Field, _[d.Code.Calc] = d.Calc, _[d.Code.Busy] = d.Busy, _[d.Code.Python] = d.Python, _[d.Code.Timeout] = d.Timeout;\nconst et = /* @__PURE__ */ new Map(), Te = /* @__PURE__ */ new Map(), tt = /* @__PURE__ */ new Map(), rt = /* @__PURE__ */ new Map(), ke = Object.keys(_);\nfor (let e = 0; e < ke.length; e++) {\n const t = ke[e], r = _[t];\n tt.set(d.Label[t], r), rt.set(d.Code[t], r);\n const n = new r();\n et.set(n.getLabel(), n), Te.set(n.getCode(), n);\n}\nconst Et = Te.get(d.Code.Unknown);\nvar v;\n(v = d || (d = {})).BuiltIn = { Parse: new v.Parse(), Null: new v.Null(), Div0: new v.Div0(), Value: new v.Value(), Ref: new v.Ref(), Name: new v.Name(), Num: new v.Num(), NA: new v.NA(), GettingData: new v.GettingData(), Spill: new v.Spill(), Connect: new v.Connect(), Blocked: new v.Blocked(), Unknown: new v.Unknown(), Field: new v.Field(), Calc: new v.Calc(), Busy: new v.Busy(), Python: new v.Python(), Timeout: new v.Timeout() }, v.getBuiltInByLabel = (e) => et.get(e), v.newTypedError = (e, t, r) => {\n let n;\n return n = typeof e == "string" ? tt.get(e) : rt.get(e), n || (n = v.Unknown), new n(t, r);\n}, v.getBuiltInById = (e) => Te.get(e) || Et;\n/**\n * @license @sheetxl/utils - Utils - Utilities used by most SheetXL components. - v0.3.15\n *\n * (C) 2025-present SheetXL Inc. & Michael T. Ford\n * License: The license can be found at https://www.sheetxl.com/license.\n */\nconst S = { html: "text/html", plain: "text/plain", png: "image/png" }, St = Object.freeze({ left: 0, top: 0 }), xt = Object.freeze({ left: 0, top: 0, bottom: 0, right: 0 }), Ct = Object.freeze({ x: 0, y: 0, width: 0, height: 0 });\nObject.freeze(Object.defineProperty({ __proto__: null, EmptyBounds: Ct, EmptyRect: xt, EmptyTopLeft: St }, Symbol.toStringTag, { value: "Module" }));\nconst j = { Column: "column", Row: "row" }, vt = Object.freeze({ colIndex: 0, rowIndex: 0 }), Tt = Object.freeze({ colStart: 0, rowStart: 0, colEnd: 0, rowEnd: 0 }), nt = (e, t) => e.colStart === t.colStart ? e.rowStart - t.rowStart : e.colStart - t.colStart, ot = (e, t) => e.rowStart === t.rowStart ? e.colStart - t.colStart : e.rowStart - t.rowStart, _t = (e, t) => e.rowEnd === t.rowEnd ? t.colEnd - e.colEnd : t.rowEnd - e.rowEnd, Ot = (e, t) => e.colEnd === t.colEnd ? t.rowEnd - e.rowEnd : t.colEnd - e.colEnd, Le = (e, t) => e.colIndex === t.colIndex ? e.rowIndex - t.rowIndex : e.colIndex - t.colIndex, Ae = (e, t) => e.rowIndex === t.rowIndex ? e.colIndex - t.colIndex : e.rowIndex - t.rowIndex, it = (e = j.Row, t = !1) => t ? e !== j.Column ? _t : Ot : e !== j.Column ? ot : nt, Me = (e, t) => e === t || !(!e || !t) && e.rowIndex === t.rowIndex && e.colIndex === t.colIndex, Se = (e, t) => e === t || !(!e || !t) && e.rowStart === t.rowStart && e.rowEnd === t.rowEnd && e.colStart === t.colStart && e.colEnd === t.colEnd, xe = (e, t) => !(!e || !t) && !(e.colStart > t.colEnd || t.colStart > e.colEnd) && !(e.rowStart > t.rowEnd || t.rowStart > e.rowEnd), je = (e, t) => {\n if (e === t) return !0;\n if (!e || !t || e.length !== t.length) return !1;\n for (let r = 0; r < e.length; r++) if (!Se(e[r], t[r])) return !1;\n return !0;\n}, he = (e, t, r) => {\n if (!e && !t) return null;\n if (!e) return r ? t : { ...t };\n if (!t) return r ? e : { ...e };\n const n = Math.min(e.colStart, t.colStart), o = Math.min(e.rowStart, t.rowStart), i = Math.max(e.colEnd, t.colEnd), a = Math.max(e.rowEnd, t.rowEnd);\n let l = r;\n return l ? (l.colStart = n, l.rowStart = o, l.colEnd = i, l.rowEnd = a) : l = { colStart: n, rowStart: o, colEnd: i, rowEnd: a }, l;\n}, Pe = (e, t) => {\n if (!t || t.length === 0) return e;\n const r = { ...e };\n for (let n = 0; n < t.length; n++) {\n const o = t[n];\n xe(r, o) && (r.rowStart = Math.min(r.rowStart, o.rowStart), r.colStart = Math.min(r.colStart, o.colStart), r.rowEnd = Math.max(r.rowEnd, o.rowEnd), r.colEnd = Math.max(r.colEnd, o.colEnd));\n }\n return r;\n}, It = [null, null], Nt = (e, t, r) => {\n if (e[0].value === e[1].value) return t;\n};\nfunction Fe(e, t = 2, r, n = j.Row, o) {\n let i = [...e];\n if (t <= 0 || e.length <= 1) return i;\n let a = n === j.Column, l = 0, u = !1;\n do {\n const f = i.sort(it(a ? j.Row : j.Column));\n i = [], i.push(f[0]);\n const h = f.length;\n let g = 0, p = f[0], y = p.colStart, T = p.rowStart, A = p.colEnd, D = p.rowEnd;\n for (let U = 1; U < h; U++) {\n const I = f[U];\n let J = !1;\n if (J = a ? p && T === I.rowStart && D === I.rowEnd && A + 1 === I.colStart : p && y === I.colStart && A === I.colEnd && D + 1 === I.rowStart, J) {\n let E = { colStart: y, rowStart: T, colEnd: a ? I.colEnd : A, rowEnd: a ? D : I.rowEnd };\n if (p.value !== void 0 && (E.value = p.value), r) {\n const c = o ?? [null, null];\n c[0] = p, c[1] = I, E = r(c, E, n);\n }\n if (E) {\n i[g] = E, u = !0, p = E, y = p.colStart, T = p.rowStart, A = p.colEnd, D = p.rowEnd;\n continue;\n }\n }\n i[++g] = I, p = I, y = p.colStart, T = p.rowStart, A = p.colEnd, D = p.rowEnd;\n }\n l++, a = !a, l === 1 && (u = !0);\n } while (l < t && u && i.length > 1);\n return i;\n}\nObject.freeze(Object.defineProperty({ __proto__: null, EmptyCell: vt, EmptyRange: Tt, cellToRange: (e, t) => {\n if (!e) return null;\n let r = t;\n return r || (r = { ...e }, delete r.colIndex, delete r.rowIndex), r.colStart = e.colIndex ?? 0, r.rowStart = e.rowIndex ?? 0, r.colEnd = e.colIndex ?? 0, r.rowEnd = e.rowIndex ?? 0, r;\n}, columnFirstCellComparator: Le, columnFirstRangeComparator: nt, createCellComparator: (e = j.Row, t = !1) => t ? e !== j.Column ? (r, n) => r.rowIndex === n.rowIndex ? n.colIndex - r.colIndex : n.rowIndex - r.rowIndex : (r, n) => r.colIndex === n.colIndex ? n.rowIndex - r.rowIndex : n.colIndex - r.colIndex : e !== j.Column ? Ae : Le, createConflatingRanges: (e, t = !1) => {\n const r = [];\n let n, o, i = Number.MIN_SAFE_INTEGER, a = Number.MIN_SAFE_INTEGER;\n return { append: (l, u, f) => {\n let h = !0;\n const g = f !== void 0;\n if (g) {\n const T = e ? e(o, f, t) : o === f ? f : void 0;\n T === void 0 ? h = !1 : f = T;\n }\n if (h && u === a + 1 && l === i) return t ? n.rowEnd = u : n.colEnd = u, a = u, void (o = f);\n n && r.push(n);\n const p = t ? l : u, y = t ? u : l;\n n = { colStart: p, rowStart: y, colEnd: p, rowEnd: y }, g && (n.value = f), i = l, a = u, o = f;\n }, done: (l) => (n && (r.push(n), n = null), l ? Fe(r, 3, l === !0 ? Nt : l, t ? j.Column : j.Row, It) : r) };\n}, createRangeComparator: it, defaultRange: (e, t, r) => e ? r ? (r.colStart = e.colStart ?? t.colStart, r.rowStart = e.rowStart ?? t.rowStart, r.colEnd = e.colEnd ?? t.colEnd, r.rowEnd = e.rowEnd ?? t.rowEnd, r) : { colStart: e.colStart ?? t.colStart, rowStart: e.rowStart ?? t.rowStart, colEnd: e.colEnd ?? t.colEnd, rowEnd: e.rowEnd ?? t.rowEnd } : t, extendRangeToIntersectingRanges: Pe, extendRangeToUnionRanges: (e, t) => {\n if (!t || t.length === 0) return e;\n let r = e, n = null;\n for (; !Se(r, n); ) n = r, r = Pe(n, t);\n return r;\n}, indexOfCoords: (e, t) => {\n const r = { colStart: e.colIndex, rowStart: e.rowIndex, colEnd: e.colIndex, rowEnd: e.rowIndex };\n for (let n = t.length - 1; n >= 0; n--) if (xe(r, t[n])) return n;\n return -1;\n}, intersectRanges: (e, t, r) => {\n if (!e) return r ? t : { ...t };\n if (!t) return r ? e : { ...e };\n if (!e && !t || e.rowStart > t.rowEnd || e.rowEnd < t.rowStart || e.colStart > t.colEnd || e.colEnd < t.colStart) return null;\n const n = Math.max(e.colStart, t.colStart), o = Math.max(e.rowStart, t.rowStart), i = Math.min(e.colEnd, t.colEnd), a = Math.min(e.rowEnd, t.rowEnd);\n let l = r;\n return l ? (l.colStart = n, l.rowStart = o, l.colEnd = i, l.rowEnd = a) : l = { colStart: n, rowStart: o, colEnd: i, rowEnd: a }, l;\n}, isCellWithinRange: (e, t) => !(!e || !t) && !(e.rowIndex < t.rowStart || e.rowIndex > t.rowEnd) && !(e.colIndex < t.colStart || e.colIndex > t.colEnd), isEqualCells: Me, isEqualRanges: Se, isEqualRangesArrays: je, isEqualSelectionCoords: (e, t) => e === t || !(!e || !t) && e.rangeIndex === t.rangeIndex && !!Me(e.cell, t.cell) && je(e.ranges, t.ranges), isRangeWithinRange: (e, t) => !(e.rowStart < t.rowStart || e.rowEnd > t.rowEnd) && !(e.colStart < t.colStart || e.colEnd > t.colEnd), isRangesIntersect: xe, isSingleCell: (e) => !!e && e.rowEnd === e.rowStart && e.colStart === e.colEnd, isValidRange: (e) => !!e && !(typeof e.colStart != "number" || e.colStart < 0) && !(typeof e.colEnd != "number" || e.colEnd < e.colStart) && !(typeof e.rowStart != "number" || e.rowStart < 0) && !(typeof e.rowEnd != "number" || e.rowEnd < e.rowStart), mergeRangedValues: Fe, rowFirstCellComparator: Ae, rowFirstRangeComparator: ot, sanitizeRange: (e) => e ? { colStart: e.colIndex ?? e.colStart ?? 0, rowStart: e.rowIndex ?? e.rowStart ?? 0, colEnd: e.colIndex ?? e.colEnd ?? 0, rowEnd: e.rowIndex ?? e.rowEnd ?? 0 } : null, translateRange: (e, t = -e.rowStart, r = -e.colStart, n) => n ? (n.colStart = e.colStart + r, n.rowStart = e.rowStart + t, n.colEnd = e.colEnd + r, n.rowEnd = e.rowEnd + t, n) : { colStart: e.colStart + r, rowStart: e.rowStart + t, colEnd: e.colEnd + r, rowEnd: e.rowEnd + t }, unionRanges: he, unionRangesArrays: (e, t, r) => {\n if (!e || e.length === 0) return null;\n if (e.length === 1 && !t) return e[0];\n let n = e[0];\n for (let o = 1; o < e.length; o++) n = he(n, e[o], r);\n return t && (n = he(n, t, r)), n;\n} }, Symbol.toStringTag, { value: "Module" }));\nfunction Rt(e) {\n const t = Object.prototype.toString.call(e);\n return t === "[object RegExp]" || t === "[object Date]" || function(r) {\n return r.$$typeof === kt;\n }(e);\n}\nconst kt = typeof Symbol == "function" && Symbol.for ? Symbol.for("react.element") : 60103;\nfunction Lt(e) {\n return /* @__PURE__ */ function(t) {\n return !!t && typeof t == "object";\n }(e) && !Rt(e);\n}\nfunction ne(e, t) {\n return t.clone !== !1 && t.isMergeableObject(e) ? Y((r = e, Array.isArray(r) ? [] : {}), e, t) : e;\n var r;\n}\nfunction At(e, t, r) {\n return e.concat(t).map(function(n) {\n return ne(n, r);\n });\n}\nfunction De(e) {\n return Object.keys(e).concat(function(t) {\n return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(t).filter(function(r) {\n return Object.propertyIsEnumerable.call(t, r);\n }) : [];\n }(e));\n}\nfunction Ue(e, t) {\n try {\n return t in e;\n } catch {\n return !1;\n }\n}\nfunction Mt(e, t, r) {\n const n = {};\n return r.isMergeableObject(e) && De(e).forEach(function(o) {\n n[o] = ne(e[o], r);\n }), De(t).forEach(function(o) {\n (function(i, a) {\n return Ue(i, a) && !(Object.hasOwnProperty.call(i, a) && Object.propertyIsEnumerable.call(i, a));\n })(e, o) || (Ue(e, o) && r.isMergeableObject(t[o]) ? n[o] = function(i, a) {\n if (!a.customMerge) return Y;\n const l = a.customMerge(i);\n return typeof l == "function" ? l : Y;\n }(o, r)(e[o], t[o], r) : n[o] = ne(t[o], r));\n }), n;\n}\nfunction Y(e, t, r) {\n (r = r || {}).arrayMerge = r.arrayMerge || At, r.isMergeableObject = r.isMergeableObject || Lt, r.cloneUnlessOtherwiseSpecified = ne;\n const n = Array.isArray(t);\n return n === Array.isArray(e) ? n ? r.arrayMerge(e, t, r) : Mt(e, t, r) : ne(t, r);\n}\nY.all = function(e, t) {\n if (!Array.isArray(e)) throw new Error("first argument should be an array");\n return e.reduce(function(r, n) {\n return Y(r, n, t);\n }, {});\n};\nconst jt = Object.freeze([]), Pt = Object.freeze({}), Be = (e) => e, de = () => "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(e) {\n let t = 16 * Math.random() | 0;\n return (e === "x" ? t : 3 & t | 8).toString(16);\n}), Ft = (e) => 1 * e, at = (e, t) => e === t || !(!Array.isArray(e) || !Array.isArray(t) || e.length !== t.length) && e.every((r, n) => r === t[n]), re = (e) => typeof e == "object" && !Array.isArray(e) && e !== null, lt = (e) => typeof e != "object" || Array.isArray(e) || e === null ? e : (Object.keys(e).forEach(function(t) {\n e[t] && typeof e[t] == "object" ? lt(e[t]) : e[t] !== null && e[t] !== void 0 || delete e[t], typeof e[t] == "object" && Object.keys(e[t]).length === 0 && delete e[t];\n}), Object.keys(e).length === 0 ? null : e), Dt = (e, t) => !(e !== t && !at(e, t)) || !!e.isEqual?.(t), st = (e, t, r = Dt) => {\n if (e == null || e === t) return null;\n if (!e || typeof e != "object" || Array.isArray(e) || e.isImmutable?.()) return r(e, t) ? null : e;\n const n = Object.keys(e);\n if (n.length === 0) return null;\n let o = !1;\n for (let i = 0; i < n.length; i++) {\n const a = n[i];\n st(e[a], t?.[a], r) === null && (o = !0, delete e[a]);\n }\n return o && Object.keys(e).length === 0 ? null : void 0;\n}, $e = typeof performance == "object" && typeof performance.now == "function" ? () => performance.now() : () => Date.now(), ze = (e) => e == null, Ke = (e, t) => !(t.left > e.right || t.right < e.left || t.top > e.bottom || t.bottom < e.top), Ve = !(typeof window > "u" || !window.document || !window.document.createElement), k = { Windows: "windows", MacOS: "macos", IOS: "ios", Linux: "linux", Android: "android", Safari: "safari", Firefox: "firefox", Node: "node", Unknown: "unknown" }, oe = () => {\n if (ct()) return k.Node;\n const e = globalThis.navigator !== void 0 && globalThis.navigator.userAgent ? globalThis.navigator.userAgent.toLowerCase() : "";\n return e ? /(win32|win64|windows|wince)/i.test(e) ? k.Windows : /(macintosh|macintel|macppc|mac68k|macos)/i.test(e) ? k.MacOS : /(iphone|ipad|ipod)/i.test(e) ? k.IOS : /android/.test(e) ? k.Android : /linux/.test(e) ? k.Linux : /^((?!chrome|android|).)*safari/i.test(e) ? k.Safari : /^((?!chrome|android|Seamonkey).)*firefox/i.test(e) ? k.Firefox : k.Unknown : k.Unknown;\n};\nfunction ct() {\n return typeof process < "u" && process.release?.name === "node" || (typeof process < "u" && process.browser, !1);\n}\nconst qe = (e, t = !1) => (document.hasFocus() || t) && (e === document.activeElement || e?.contains(document.activeElement)), Ut = Object.freeze(Object.defineProperty({ __proto__: null, EmptyArray: jt, EmptyObject: Pt, OSType: k, arrayMove: function(e, t, r) {\n const n = e.slice();\n return n.splice(r < 0 ? n.length + r : r, 0, n.splice(t, 1)[0]), n;\n}, asNumber: (e) => {\n const t = Ft(e);\n return Number.isFinite(t) ? t : 0;\n}, camelToPrettyCase: (e) => e.length === 1 ? e.toUpperCase() : e.replace(/([A-Z])/g, " $1").replace(/^./, function(t) {\n return t.toUpperCase();\n}).trim(), canUseDOM: Ve, cancelTimeout: (e) => {\n cancelAnimationFrame(e.id);\n}, castToString: (e) => e == null || e === void 0 ? "" : typeof e != "string" ? "" + e : e, cloneObject: (e) => ze(e) ? e : JSON.parse(JSON.stringify(e)), consoleWithNoSource: (...e) => new Promise((t) => {\n setTimeout(() => {\n Function("console.log.apply(console, arguments)").apply(null, e), t();\n });\n}), debounce: function(e, t = 300, r = !1) {\n let n, o, i, a, l = 0;\n function u() {\n let h = Date.now() - l;\n h < t && h >= 0 ? n = setTimeout(u, t - h) : (n = null, r || (a = e.apply(i, o), i = o = null));\n }\n t == null && (t = 100);\n const f = function() {\n i = globalThis, o = arguments, l = Date.now();\n var h = r && !n;\n return n || (n = setTimeout(u, t)), h && (a = e.apply(i, o), i = o = null), a;\n };\n return f.clear = function() {\n n && (clearTimeout(n), n = null);\n }, f.flush = function() {\n n && (a = e.apply(i, o), i = o = null, clearTimeout(n), n = null);\n }, f;\n}, deepEqual: function e(t, r) {\n if (t === r) return !0;\n if (t && r && typeof t == "object" && typeof r == "object") {\n if (t.constructor !== r.constructor) return !1;\n let n, o, i;\n if (Array.isArray(t)) {\n if (n = t.length, n != r.length) return !1;\n for (o = n; o-- !== 0; ) if (!e(t[o], r[o])) return !1;\n return !0;\n }\n if (t instanceof Map && r instanceof Map) {\n if (t.size !== r.size) return !1;\n for (o of t.entries()) if (!r.has(o[0])) return !1;\n for (o of t.entries()) if (!e(o[1], r.get(o[0]))) return !1;\n return !0;\n }\n if (t instanceof Set && r instanceof Set) {\n if (t.size !== r.size) return !1;\n for (o of t.entries()) if (!r.has(o[0])) return !1;\n return !0;\n }\n if (ArrayBuffer.isView(t) && ArrayBuffer.isView(r)) {\n if (n = t.length, n != r.length) return !1;\n for (o = n; o-- !== 0; ) if (t[o] !== r[o]) return !1;\n return !0;\n }\n if (t.constructor === RegExp) return t.source === r.source && t.flags === r.flags;\n if (t.valueOf !== Object.prototype.valueOf) return t.valueOf() === r.valueOf();\n if (t.toString !== Object.prototype.toString) return t.toString() === r.toString();\n if (i = Object.keys(t), n = i.length, n !== Object.keys(r).length) return !1;\n for (o = n; o-- !== 0; ) if (!Object.prototype.hasOwnProperty.call(r, i[o])) return !1;\n for (o = n; o-- !== 0; ) {\n let a = i[o];\n if ((a !== "_owner" || !t.$$typeof) && !e(t[a], r[a])) return !1;\n }\n return !0;\n }\n return t != t && r != r;\n}, deepFreeze: function e(t) {\n return Object.freeze(t), Object.keys(t).forEach((r) => {\n typeof t[r] != "object" || t[r] === null || Object.isFrozen(t[r]) || e(t[r]);\n }), t;\n}, deepMerge: Y, diffValues: (e, t) => {\n const r = {}, n = Object.keys(t), o = n.length;\n for (let i = 0; i < o; i++) {\n const a = n[i];\n e[a] !== t[a] && (e[a] === void 0 ? r[a] = t[a] : r[a] = e[a]);\n }\n return Object.keys(r).length === 0 ? null : r;\n}, findEqualOrGreater: function(e, t, r = Be) {\n let n = 0, o = e.length - 1;\n for (; n <= o; ) {\n let i = Math.floor((n + o) / 2), a = r(e[i]);\n if (a === t) return i;\n a < t ? n = i + 1 : o = i - 1;\n }\n return n;\n}, findEqualOrLesser: function(e, t, r = Be) {\n let n = e.length - 1, o = 0;\n for (; n >= o; ) {\n let i = Math.floor((n + o) / 2), a = r(e[i]);\n if (a === t) return i;\n a > t ? n = i - 1 : o = i + 1;\n }\n return n;\n}, findNextStep: (e, t = !0, r = 15, n = 10, o = 400) => {\n const i = Math.max(e - n, 0) + (t ? 1 : -1);\n return Math.min(o, Math[t ? "ceil" : "floor"](i / r) * r + n);\n}, getDPI: () => {\n let e = 1;\n return typeof window == "object" && (e = window.devicePixelRatio || 1), e;\n}, getFromPath: (e, t) => {\n const r = t.split(".");\n let n = e;\n for (let o = 0; o < r.length; o++) {\n const i = r[o];\n if (!n) return null;\n let a = n[i];\n if (typeof a == "function" && (a = a.bind(n)()), !a || !re(a)) return a;\n n = a;\n }\n return n ?? null;\n}, getOS: oe, hasFocus: qe, isDefined: (e) => e != null, isEmpty: (e) => e == null || e === "", isEqualArrays: at, isEqualBounds: (e, t) => e === t || !(e && !t || t && !e) && e.x === t.x && e.y === t.y && e.width === t.width && e.height === t.height, isEqualObjectKeys: (e, t) => {\n if (e === t) return !0;\n if (e && !t || t && !e) return !1;\n const r = Object.keys(e);\n if (r.length !== Object.keys(t).length) return !1;\n for (let n = 0; n < r.length; n++) if (e[r[n]] !== t[r[n]]) return !1;\n return !0;\n}, isNode: ct, isNullOrUndefined: ze, isNumeric: (e) => {\n const t = 1 * e;\n return Number.isFinite(t) && typeof t == "number";\n}, isObject: re, isPromiseLike: (e) => !!e && typeof e.then == "function", isRectInsideRect: (e, t) => e.top >= t.top && e.bottom <= t.bottom && e.left >= t.left && e.right <= t.right, isRectIntersect: Ke, mergeContentful: (...e) => {\n const t = e.length;\n if (t > 0 && e[t - 1] !== void 0 && !re(e[t - 1])) return e[t - 1];\n let r = e[0] || {};\n for (let n = 1; n < t; n++) r = Y(r, e[n] || {}, { arrayMerge: (o, i) => [...i] });\n return r;\n}, nextTick: (e) => {\n typeof window < "u" && typeof window.requestAnimationFrame == "function" ? window.requestAnimationFrame(() => {\n e();\n }) : (typeof setImmediate == "function" ? setImmediate : setTimeout)(() => {\n e();\n });\n}, openFileDialog: (e = "*.*") => new Promise((t, r) => {\n if (!Ve) return void r("Unable to open dialog with no dom.");\n const n = document.createElement("input");\n n.type = "file", n.accept = e;\n let o = null, i = !1;\n globalThis.addEventListener?.("focus", () => {\n setTimeout(() => {\n o || i || (i = !0, t(null));\n }, 1e3);\n }, { once: !0, passive: !0 }), n.onchange = () => {\n if (o = n.files[0], o) {\n if (i) return void console.warn("File open detected after faux cancel.", o);\n t(o);\n }\n }, n.autofocus = !0, n.click();\n}), rafThrottle: (e) => {\n let t, r = !1, n = function() {\n r = !1, e(t);\n };\n return function(o) {\n t = o, t && t.persist && t.persist(), r || (r = !0, requestAnimationFrame(n));\n };\n}, removeEmptyProperties: lt, removeEqualValues: st, removeListenerAll: (e) => {\n if (!e) return [];\n for (let t = 0; t < e.length; t++) e[t] && e[t]();\n return [];\n}, requestTimeout: (e, t) => {\n const r = $e(), n = { id: requestAnimationFrame(function o() {\n $e() - r >= t ? e.call(null) : n.id = requestAnimationFrame(o);\n }) };\n return n;\n}, roundAccurately: (e, t = 0) => {\n if (e == null || !isFinite(e)) return null;\n const r = 10 ** t;\n return Number(Math.round(e * r) / r);\n}, setToPath: (e, t, r) => {\n const n = t.split(".");\n let o = e;\n if (!o) throw new Error("Can not set path to a null path.");\n for (let i = 0; o && i < n.length - 1; i++) {\n const a = n[i];\n let l = o[a];\n if (l == null && (l = {}, o[a] = l), !re(l)) throw new Error("Can not set path to a non object path.");\n o = l;\n }\n if (typeof r != "number" && typeof r != "boolean" && typeof r != "string" && !re(r)) throw new Error(`Can not set path to ${r} that is not a a supported primitive.`);\n return o[n[n.length - 1]] = r, e;\n}, splitNumber: (e) => {\n let t = Math.abs(e);\n if (isNaN(t) || !isFinite(e)) return null;\n let r = 0 | t, n = t - r, o = 0, i = 0, a = 1;\n if (n > 5e-8) for (; i < 8 && Math.abs(o / a - n) > 5e-8; ) i++, a *= 10, o = Math.round(n * a);\n return { ip: Math.trunc(e), fp: o, ipLength: Math.ceil(Math.log10(r + 1)), fpLength: i };\n}, subtractRect: (e, t, r = !1) => {\n if (!t) return [e];\n if (!Ke(e, t)) return [];\n const n = [];\n let o = e;\n const i = () => {\n t.top > o.top && t.top < o.bottom && (n.push({ ...o, bottom: t.top }), o = { ...o, top: t.top });\n }, a = () => {\n t.bottom > o.top && t.bottom < o.bottom && (n.push({ ...o, top: t.bottom }), o = { ...o, bottom: t.bottom });\n }, l = () => {\n t.right > o.left && t.right < o.right && (n.push({ ...o, left: t.right }), o = { ...o, right: t.right });\n }, u = () => {\n t.left > o.left && t.left < o.right && (n.push({ ...o, right: t.left }), o = { ...o, left: t.left });\n };\n return r ? (u(), l(), i(), a()) : (i(), a(), l(), u()), n;\n}, textToKey: (e) => e.replace(/[^a-zA-Z0-9]/g, "").toLowerCase(), throttle: function(e, t) {\n let r = null;\n return (...n) => {\n const o = Date.now();\n (!r || o - r >= t) && (r = o, e(...n));\n };\n}, toSafeJSON: function e(t) {\n if (t === null || typeof t != "object") return t;\n if (typeof t.toJSON == "function") return t.toJSON();\n if (Array.isArray(t)) return t.map((n) => e(n));\n if (typeof t.toString == "function" && t.toString !== Object.prototype.toString) return t.toString();\n const r = {};\n for (const n in t) t.hasOwnProperty(n) && (r[n] = e(t[n]));\n return r;\n}, transpose: (e) => {\n if (!e) return e;\n const t = e.length, r = e[0].length, n = [];\n for (let o = 0; o < r; o++) n[o] = Array(t);\n for (let o = 0; o < t; o++) for (let i = 0; i < r; i++) n[i][o] = e[o][i];\n return n;\n}, uuidV4: de, validEnumValue: (e, t) => {\n if (!Object.values(e).includes(t)) throw new Error(`Invalid type: ${t ?? "null"}. Must be one of: ${Object.values(t).join(", ")}.`);\n}, whenFocus: async (e, t = !1) => new Promise((r) => {\n qe(e, t) ? r(!0) : e.addEventListener("focusin", () => {\n r(!0);\n }, { once: !0 }), e.focus();\n}) }, Symbol.toStringTag, { value: "Module" }));\nObject.freeze(Object.defineProperty({ __proto__: null, MESSAGE_ERROR_INVALID_ARG: (e) => `Invalid argument: \'${e}\'.` }, Symbol.toStringTag, { value: "Module" }));\nconst ut = (e) => {\n const t = new Uint8Array(e), r = t.byteLength;\n let n = "";\n for (let o = 0; o < r; o++) n += String.fromCharCode(t[o]);\n if (typeof window < "u" && typeof globalThis.btoa == "function") return globalThis.btoa(n);\n if (typeof Buffer < "u") return Buffer.from(n, "binary").toString("base64");\n throw new Error("Unsupported environment");\n}, Ce = (e) => new Promise((t, r) => {\n if (e) if (typeof FileReader < "u") {\n const n = new FileReader();\n n.onload = () => {\n t(n.result);\n }, n.onerror = () => {\n r(n.error);\n }, n.readAsText(e);\n } else if (typeof Buffer < "u") {\n const n = (o) => Buffer.from(o).toString("utf-8");\n e.arrayBuffer().then((o) => {\n t(n(o));\n }).catch((o) => {\n r(o);\n });\n } else r(new Error("Unsupported environment"));\n else t("");\n});\nObject.freeze(Object.defineProperty({ __proto__: null, DEFAULT_MIME_TYPE: "*/*", arrayBufferToBase64: ut, base64ToArrayBuffer: (e) => {\n const t = typeof window < "u" && typeof globalThis.atob == "function" ? globalThis.atob(e) : Buffer.from(e, "base64").toString("binary"), r = t.length, n = new Uint8Array(r);\n for (let o = 0; o < r; o++) n[o] = t.charCodeAt(o);\n return n.buffer;\n}, blobToString: Ce }, Symbol.toStringTag, { value: "Module" }));\nconst dt = "data:image/png;base64,", ft = "Unable to resolve image.", Ge = (e) => new Promise(async (t, r) => {\n let n = null;\n try {\n n = new Image(), n.src = e, n.addEventListener("load", function() {\n t({ width: n.naturalWidth, height: n.naturalHeight });\n }, { once: !0 }), n.addEventListener("error", function() {\n URL.revokeObjectURL(e), r("Invalid Image");\n }, { once: !0 }), await n.decode("sync");\n } catch {\n n?.src && URL.revokeObjectURL(n.src);\n }\n n || r(ft);\n}), we = "image/svg+xml";\nObject.freeze(Object.defineProperty({ __proto__: null, DATA_URL_PNG_PREFIX: dt, getImageDataUrl: (e, t = 1) => new Promise(async (r, n) => {\n let o = null;\n try {\n o = new Image(), o.src = e, o.addEventListener("load", function() {\n try {\n const i = document.createElement("canvas");\n i.width = o.naturalWidth, i.height = o.naturalHeight, i.getContext("2d").drawImage(o, 0, 0);\n const a = i.toDataURL("image/png", t);\n r({ elemImg: o, dataUrl: a });\n } catch (i) {\n URL.revokeObjectURL(e), n(i);\n }\n }, { once: !0 }), o.addEventListener("error", function() {\n URL.revokeObjectURL(e), n("Invalid Image");\n }, { once: !0 }), await o.decode("sync");\n } catch {\n o?.src && URL.revokeObjectURL(o.src);\n }\n o || n(ft);\n}), loadImageDetails: async (e, t = null) => {\n let r = null;\n const n = async () => {\n try {\n const i = t ?? "image/*", a = URL.createObjectURL(new Blob([e], { type: i })), l = await Ge(a);\n r = { mimeType: i, naturalDimensions: l, asUrl: a };\n } catch {\n }\n }, o = async () => {\n try {\n const i = new TextDecoder().decode(e), a = URL.createObjectURL(new Blob([i], { type: we })), l = await Ge(a);\n r = { mimeType: t ?? we, naturalDimensions: l, asUrl: a, asSVGText: i };\n } catch {\n }\n };\n if (t === we ? await o() : t.startsWith("image/") ? await n() : (await n(), r || await o()), !r) throw new Error("Failed to load image");\n return r;\n} }, Symbol.toStringTag, { value: "Module" }));\nvar We, Ye;\n(Ye = We || (We = {})).resolveTypedUpdates = (e, t, r, n) => {\n if (e === null) return e;\n if (e === void 0) return n;\n let o = e;\n if (t?.shorthand) {\n const u = t?.shorthand(e, r);\n u !== void 0 && (o = u);\n }\n if (o !== null && t?.getSubType) {\n const u = t.getSubType(o);\n u && (t = u);\n }\n const i = t?.properties, a = t?.arrayType ?? !1;\n let l = o;\n if (t && t.merge && l && n) l = t.merge(l, n, r);\n else if (!a && i) {\n const u = Object.keys({ ...o, ...n });\n l = null;\n for (let f = 0; f < u.length; f++) {\n const h = u[f];\n let g, p = o[h];\n if (p !== void 0) {\n const y = i[h];\n g = y ? (0, Ye.resolveTypedUpdates)(p, y, r, n?.[h]) : p;\n } else g = n?.[h];\n g != null && (l = l ?? {}, l[h] = g);\n }\n }\n return l;\n};\nconst Je = `The Safari browser does not support advanced copy and paste.\nCopy and paste will be limited to within the browser tab.\n\nPlease use Chrome or Edge if external copy and paste is required.`, ye = `You do not have permissions to access the clipboard.\nAll copy and paste operations will be limited to the browser tab.`, pt = { Safari: `The Safari browser does not support advanced copy and paste.\nCopy and paste will be limited to within the browser tab.\n\nPlease use Chrome or Edge if external copy and paste is required.`, Perms: ye, PermsWrite: oe() === k.Safari ? Je : ye, PermsRead: oe() === k.Safari ? Je : ye }, ge = async () => new Promise((e) => {\n document.hasFocus() ? e() : globalThis.addEventListener?.("focus", () => {\n e();\n }, { once: !0 }), document.activeElement.focus?.();\n}), be = async (e, t, r) => {\n if (oe() === k.Safari) return await r(new Error(pt.Safari));\n try {\n const n = async (a) => {\n try {\n return await a();\n } catch (l) {\n if (l.message?.includes("Document is not focused")) return !1;\n throw l;\n }\n }, o = await globalThis?.navigator?.permissions?.query({ name: e, allowWithoutGesture: !0, allowWithoutSanitization: !0 });\n let i = !1;\n if (o.state === "prompt" && (i = await n(t)), i || o.state !== "granted" || (i = await t()), !i) return await r(new Error(o.state));\n } catch (n) {\n return n.message === "No valid data on clipboard" || n.name === "DataError" ? void 0 : await r(n);\n }\n}, mt = async (e) => {\n try {\n return await e.read({ unsanitized: [S.html] });\n } catch {\n }\n return await e.read();\n}, Bt = async (e, t) => {\n if (!e) return null;\n const r = await mt(e);\n let n = !1;\n for (let o = 0; !n && r && o < r.length; o++) if (n = r[o].types.includes(t), n)\n return await r[o].getType(t);\n return n ? void 0 : null;\n};\nif (!globalThis.ClipboardItem) {\n const e = (r, n) => new Blob([n], { type: r });\n class t {\n constructor(n, o) {\n this._items = {}, this._types = Object.keys(n);\n const i = {}, a = Object.keys(n);\n for (let l = 0; l < a.length; l++) {\n const u = a[l];\n let f = n[u];\n i[u] = typeof f == "string" ? e(u, f) : f;\n }\n this._items = i, this._presentationStyle = o?.presentationStyle ?? "unspecified";\n }\n get types() {\n return this._types;\n }\n getType(n) {\n return Promise.resolve(this._items[n]);\n }\n supports(n) {\n return !0;\n }\n }\n globalThis.ClipboardItem = t;\n}\nconst ve = async (e, t = S.html) => new Promise(async (r, n) => {\n try {\n const o = await Bt(e, t);\n if (o) {\n const i = new FileReader();\n i.onload = () => {\n r(i.result);\n }, i.onerror = () => {\n r("");\n }, i.readAsText(o);\n } else r("");\n } catch (o) {\n n(o);\n }\n}), He = async (e, t = S.html) => {\n const r = await ve(e, t);\n if (!r) return null;\n let n = null;\n try {\n n = new DOMParser().parseFromString(r, S.html);\n } catch {\n console.warn("Can\'t parse html from clipboard.");\n }\n return n;\n}, $t = async (e) => {\n e && await e.writeText("");\n}, ie = "clipboard-uuid", Q = "web text/uuid", Xe = (e) => `<div style="display:none" ${ie}="${e}"/>`, zt = (e, t) => {\n let r = null;\n try {\n const n = new DOMParser().parseFromString(t, S.html);\n n.body.firstElementChild.setAttribute(ie, e), r = n.getElementsByTagName("body")[0].innerHTML;\n } catch (n) {\n console.warn("Can\'t embed uuid.", n);\n }\n return r;\n}, Ze = (e, t) => {\n if (!t || !e) return !1;\n try {\n const r = t.querySelectorAll(`[${ie}="${e}"]`);\n if (r && r.length === 1) return !0;\n if (t.querySelector("parsererror")) throw new Error("We are unable to parse node");\n return !1;\n } catch {\n return !1;\n }\n};\nclass Qe {\n constructor(t) {\n if (t?.nativeClipboard === void 0 || t?.nativeClipboard === !0) try {\n this._nativeClipboard = globalThis?.navigator.clipboard;\n } catch {\n t?.nativeClipboard === !0 && console.warn("NativeClipboard option set to true but no native clipboard available.");\n }\n else this._nativeClipboard = t?.nativeClipboard === !1 ? null : t?.nativeClipboard;\n this._disableCheckOnFocus = t?.disableCheckOnFocus ?? !1, this._init();\n }\n async _checkForChanges() {\n this._nativeClipboard && this._state && !this._disableCheckOnFocus && await be("clipboard-read", async () => {\n await ge();\n const t = await ve(this._nativeClipboard, Q);\n if (!this._state || t && t === this._state.uuid) return !0;\n const r = await He(this._nativeClipboard, S.html);\n return !this._state || (Ze(this._state.uuid, r) || this.clear(), !0);\n }, async (t) => {\n t?.message === "denied" || t.message?.includes("Document is not focused") || oe() === k.Safari || console.warn("Unable to detect clipboard changes: ", t);\n });\n }\n _init() {\n const t = this;\n this._listeners = /* @__PURE__ */ new Map(), this._listenersCapture = /* @__PURE__ */ new Map(), this._state = null, this._nativeClipboard && (this._onFocus = () => {\n t._checkForChanges();\n }, this._onBlur = () => {\n globalThis.addEventListener?.("focus", t._onFocus, { once: !0 });\n }, globalThis.addEventListener?.("blur", this._onBlur), this._nativeClipboard.addEventListener("clipboardchange", (r) => {\n t._checkForChanges();\n }));\n }\n async read() {\n if (!this._nativeClipboard) return this._state?.items ?? null;\n const t = this;\n return await be("clipboard-read", async () => {\n if (await ge(), this._state?.uuid) {\n const r = await ve(this._nativeClipboard, Q);\n if (r && r === t._state.uuid) return !0;\n const n = await He(this._nativeClipboard, S.html);\n if (Ze(t._state?.uuid, n)) return !0;\n }\n return t._state = { items: await mt(this._nativeClipboard), uuid: null, ref: null }, this.dispatchEvent(new Event("clipboardread")), !0;\n }, async (r) => {\n this.dispatchEvent(new Event("clipboarderrorread"));\n }), this._state?.items ?? [];\n }\n async write(t) {\n return this._write({ uuid: de(), items: t, ref: null });\n }\n async _write(t) {\n if (!this._nativeClipboard) return this._state = t, this.dispatchEvent(new Event("clipboardwrite")), this.dispatchEvent(new Event("clipboardchange")), null;\n const r = this, n = [], o = t.uuid;\n let i = t.items ?? [];\n const a = () => {\n r._state = { uuid: o, ref: t.ref, items: n }, r.dispatchEvent(new Event("clipboardwrite")), r.dispatchEvent(new Event("clipboardchange"));\n };\n await be("clipboard-write", async () => {\n await ge(), o && i.length === 0 && (i.push(new ClipboardItem({ [Q]: new Blob([o], { type: Q }) })), i.push(new ClipboardItem({ [S.html]: new Blob([Xe(o)], { type: S.html }) })));\n for (let l = 0; l < Math.min(1, i.length); l++) {\n const u = i[l];\n let f = u.types.indexOf(S.html), h = null;\n if (f !== -1) {\n const y = await u.getType(S.html);\n h = await Ce(y), h && (h = zt(o, h));\n }\n if (!h && u.types.includes(S.plain)) {\n const y = await u.getType(S.plain);\n if (y) {\n let T = null;\n typeof y == "string" ? (console.warn("text as string", y), T = y) : T = await Ce(y), T && (h = `<div ${ie}="${o}">${T}</div>`);\n }\n }\n if (!h && u.types.includes(S.png)) {\n const y = await u.getType(S.png), T = ut(await y.arrayBuffer());\n h = `<div ${ie}="${o}"><img src="${dt + T}"/></div>`;\n }\n !h && o && (h = Xe(o));\n const g = new Blob([h ?? ""], { type: S.html }), p = {};\n for (let y = 0; y < u.types.length; y++) {\n const T = u.types[y];\n p[T] = y === f ? g : u.getType(T);\n }\n h && f === -1 && (p[S.html] = g), o && (p[Q] = new Blob([o], { type: Q })), n.push(new ClipboardItem(p));\n }\n try {\n n && n.length !== 0 ? await this._nativeClipboard.write(n) : await $t(this._nativeClipboard);\n } catch (l) {\n l.message?.includes("Document is not focused") || console.warn("Unable to write to native clipboard: ", l);\n }\n return a(), !0;\n }, async (l) => {\n this.dispatchEvent(new Event("clipboarderrorwrite")), a();\n });\n }\n async writeReference(t) {\n if (!t) return void this.clear();\n let r = null;\n const n = {};\n try {\n const i = await t.toText?.() ?? null;\n i && (n[S.plain] = new Blob([i ?? ""], { type: S.plain }));\n } catch (i) {\n r = i;\n }\n try {\n const i = await t.toHtml?.() ?? null;\n i && (n[S.html] = new Blob([i], { type: S.html }));\n } catch (i) {\n r = i, console.warn("export to html", i);\n }\n try {\n const i = await t.toImage?.() ?? null;\n i && (n[S.png] = i);\n } catch (i) {\n r = i, console.warn("export to png", i);\n }\n const o = this._write({ uuid: de(), ref: t, items: Object.keys(n).length > 0 ? [new ClipboardItem(n)] : null });\n if (r) throw r;\n return o;\n }\n clear(t = !1) {\n this._state && (this._state = null, t && this._write({ uuid: null, ref: null, items: null }), this.dispatchEvent(new Event("clipboardwrite")), this.dispatchEvent(new Event("clipboardchange")));\n }\n async readReference() {\n return await this.read(), this._state?.ref ?? null;\n }\n readText() {\n return new Promise(async (t, r) => {\n const n = await this.read();\n let o = null;\n for (let a = 0; !o && n && a < n.length; a++) n[a].types.includes(S.plain) && (o = await n[a].getType(S.plain));\n if (!o) return void t("");\n const i = new FileReader();\n i.onload = () => {\n t(i.result);\n }, i.readAsText(o), i.onerror = (a) => {\n r(a);\n };\n });\n }\n async writeText(t) {\n const r = [new ClipboardItem({ [S.plain]: new Blob([t], { type: S.plain }) })];\n return this._write({ uuid: de(), items: r, ref: null });\n }\n addEventListener(t, r, n = {}) {\n const o = n?.capture ? this._listenersCapture : this._listeners;\n let i = o.get(t);\n i || (i = /* @__PURE__ */ new Map(), o.set(t, i)), i.set(r, typeof n == "boolean" ? {} : n);\n }\n dispatchEvent(t) {\n if (!t) return;\n const r = (n) => {\n const o = n.get(t.type);\n o && o.forEach((i, a) => {\n try {\n typeof a == "function" ? a(t) : a.handleEvent && a.handleEvent(t), i.once && o.delete(a);\n } catch (l) {\n console.warn(l);\n }\n });\n };\n return r(this._listenersCapture), r(this._listeners), !0;\n }\n removeEventListener(t, r, n) {\n const o = n?.capture ? this._listenersCapture : this._listeners, i = o.get(t);\n i && (i.delete(r), i.size === 0 && o.delete(t));\n }\n close() {\n globalThis.removeEventListener?.("focus", this._onFocus), globalThis.removeEventListener?.("blur", this._onBlur);\n }\n}\nvar Ee;\n(Ee = Qe || (Qe = {})).ErrorMessages = pt, Ee.Global = new Ee();\nconst Kt = "__SHEETXL";\nlet ee = null, le = null;\nasync function Vt() {\n if (ee)\n return ee;\n if (le) {\n if (await le, !ee)\n throw new Error("ESBuild initialization promise resolved, but instance is not available.");\n return ee;\n }\n let e, t;\n le = new Promise((r, n) => {\n e = r, t = n;\n });\n try {\n const { initialize: r } = await Promise.resolve().then(function() {\n return rr;\n });\n return ee = await r(), e(), ee;\n } catch (r) {\n throw console.error("Failed to import or initialize esbuild:", r), le = null, t(r), r;\n }\n}\nconst qt = {\n // ESBuild.TsconfigRaw =\n compilerOptions: {\n target: "esnext"\n }\n};\nasync function Gt(e, t, r = "/script.js", n = Kt) {\n try {\n const o = await Vt(), i = "@sheetxl/primitives", a = `\n export const FormulaContext = globalThis.${n}?.FormulaContext;\n export const ScalarType = globalThis.${n}?.ScalarType;\n export const Observable = globalThis.${n}?.Observable;\n export const IRange = globalThis.${n}?.IRange;\n export const FormulaError = globalThis.${n}?.FormulaError;\n // Add more exports as needed\n `, l = {\n // ESBuild.Plugin = {\n name: "sheetxl-esbuild-in-memory",\n setup(f) {\n const h = "sheetxl-" + (/* @__PURE__ */ new Date()).getTime();\n f.onResolve({ filter: new RegExp(`^(${r.replace("/", "\\\\/")}|${i})$`) }, (g) => ({\n path: g.path,\n namespace: h\n })), f.onResolve({ filter: /.*/ }, (g) => {\n if (g.namespace !== h)\n return console.warn(`esbuild: Treating import "${g.path}" as external.`), { path: g.path, external: !0 };\n }), f.onLoad({ filter: /.*/, namespace: h }, (g) => {\n let p;\n if (g.path === r)\n p = t;\n else if (g.path === i)\n p = a;\n else\n return {\n errors: [{ text: `Cannot load unknown path in ${h}: ${g.path}` }]\n };\n return {\n contents: p,\n loader: "ts"\n // leave this as \'ts\' so esbuild generates proper sourcemaps\n };\n });\n }\n }, u = await o.build({\n entryPoints: [r],\n // Use the virtual entry point\n bundle: !0,\n // IMPORTANT: Enable bundling\n write: !1,\n // IMPORTANT: Return result in memory\n format: "esm",\n // Output format\n plugins: [l],\n // TODO - later change to external and prepend when executing from ui\n sourcemap: "inline",\n // Generate separate source map string\n tsconfigRaw: qt,\n // Pass the mapped options\n minify: !0,\n // sourcemap: \'external\', // Generate separate source map string\n // Or use \'inline\' if you prefer data URLs embedded in the code\n // To suppress warnings about dynamic import() if esbuild complains:\n // supported: { \'dynamic-import\': true },\n platform: "neutral"\n // not really needed\n });\n if (u.outputFiles && u.outputFiles.length > 0)\n return u.outputFiles[0].text;\n throw u.errors && u.errors.length > 0 ? new Error(`esbuild bundling failed: ${u.errors.map((f) => f.text).join(`\n`)}`) : new Error("esbuild did not produce an output file.");\n } catch (o) {\n throw console.error("esbuild bundling process failed:", o), o;\n }\n}\nconst Wt = `\n/**\n * Represents the completion of an asynchronous operation\n */\ninterface Promise<T> {\n /**\n * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The\n * resolved value cannot be modified from the callback.\n * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).\n * @returns A Promise for the completion of the callback.\n */\n finally(onfinally?: (() => void) | undefined | null): Promise<T>;\n}\n`, Yt = `\n interface FirstTest {\n isTrue?: boolean;\n }\n`, Jt = async () => Yt, ht = /* @__PURE__ */ new Map([\n ["IReferenceRange", "r"],\n ["IRange", "l"]\n]), wt = /* @__PURE__ */ new Map([\n ["IWorkbook", "workbook"],\n ["ISheet", "sheet"],\n ["ICellRanges", "ranges"],\n ["ICellRange", "range"],\n ["IFormulaContext", "context"]\n]), _e = (e, t) => {\n Array.from(t.keys()).forEach((n) => {\n const o = t.get(n);\n t.set(`${e}.${n}`, o);\n });\n}, Ht = /* @__PURE__ */ new Map([\n ["Scalar", "*"],\n ["FormulaError.Known", W.Error],\n ["Date", "Date"],\n ["JSON", "JSON"]\n]), Xt = /* @__PURE__ */ new Map([\n // Repeating\n]), Oe = "SheetXL";\n_e(Oe, ht);\n_e(Oe, wt);\n_e(Oe, Xt);\nconst Zt = /* @__PURE__ */ new Map([\n ["Promise", () => ({ async: !0 })],\n // [\'PromiseLike\', (): Partial<IFunction.ReturnTypeJSON> => {\n // return { async: true };\n // }],\n ["Observable", () => ({ stream: !0 })]\n]);\nlet se = null;\nasync function Qt() {\n if (se)\n return se;\n try {\n return await (await Promise.resolve().then(function() {\n return or;\n })).initialize();\n } catch (e) {\n throw se = null, e;\n } finally {\n se = null;\n }\n}\nasync function er(e) {\n const t = e?.source ?? null;\n if (!t) return null;\n const r = (e.disableBundle || e.declarationsOnly) ?? !1, n = [\n Jt(),\n //import(\'typescript\'), // when bundled, but node check causes issues. We could bundle replace isNode but felt hacky\n Qt()\n ], o = await Promise.all(n), i = o[0], a = o[1];\n let l = "", u = null;\n const f = [], h = {\n allowJs: !0,\n declaration: !1,\n sourceMap: !1,\n // was true but now bundler will do this\n inlineSourceMap: !1,\n inlineSources: !1,\n isolatedModules: !0,\n preserveConstEnums: !1,\n // types: [\'WebWorker\'],\n module: 99,\n //"esNext",\n noResolve: !0,\n emitDeclarationOnly: !1,\n target: a.ScriptTarget.ES2020\n // lib: [\'webworker\', \'es2020\', \'esnext.asynciterable\'], // Use the webworker lib instead of dom\n }, g = "script", p = `${g}.ts`, y = "lib.d.ts", T = "global.d.ts", A = {\n [p]: t,\n [y]: Wt,\n [T]: i\n }, D = {\n getSourceFile: (s, w, L, P) => a.createSourceFile(s, A[s], a.ScriptTarget.Latest, !0),\n fileExists: (s) => A[s] !== void 0,\n readFile: (s) => A[s],\n writeFile: (s, w) => {\n A[s] = w;\n },\n // not used\n getCurrentDirectory: () => "./",\n getCanonicalFileName: (s) => s,\n useCaseSensitiveFileNames: () => !0,\n getDefaultLibFileName: (s) => y,\n getNewLine: () => `\n`\n }, U = a.createProgram([p, T], h, D), I = U.getTypeChecker(), J = U.getSourceFile(p), E = U.emit();\n E.diagnostics.length > 0 && console.warn(E.diagnostics), l = A[`${g}.js`];\n const c = (s, w, L, P) => {\n if (!s) {\n $(s, new Error(`Type is not defined for \'${w?.name ?? "return"}\'.`));\n return;\n }\n if (s.kind === a.SyntaxKind.NumberKeyword)\n w.scalar = W.Number;\n else if (s.kind === a.SyntaxKind.StringKeyword)\n w.scalar = W.String;\n else if (s.kind === a.SyntaxKind.BooleanKeyword)\n w.scalar = W.Boolean;\n else if (s.kind === a.SyntaxKind.UndefinedKeyword || s.kind === a.SyntaxKind.NullKeyword || s.kind === a.SyntaxKind.VoidKeyword) {\n if (P) {\n $(s, new Error(`\'undefined\' is not a valid type for input: \'${s?.parent?.name?.escapedText}\'.`));\n return;\n }\n w.scalar = W.Null;\n } else if (s.kind === a.SyntaxKind.BigIntKeyword)\n w.scalar = W.Number;\n else if (s.kind === a.SyntaxKind.AnyKeyword)\n w.scalar = W.Null;\n else if (s.kind === a.SyntaxKind.ArrayType) {\n const M = s.elementType;\n if (!M) {\n $(s, new Error(`\'Array\' must be typed: \'${s?.parent?.name?.escapedText}\'.`));\n return;\n }\n w.arrayDepth = (w.arrayDepth ?? 0) + 1, c(M, w, L, P);\n } else if (s.kind !== a.SyntaxKind.TupleType) {\n if (s.kind === a.SyntaxKind.TypeReference) {\n const M = s.typeName?.getText?.() ?? null, K = ht.get(M);\n let V = !1;\n K && (w.range = K, V = !0);\n const q = Ht.get(M);\n if (q && (w.scalar = q), q !== void 0 && (V = !0), P) {\n const R = wt.get(M);\n if (R)\n return R;\n } else {\n const R = Zt.get(M);\n if (R) {\n const b = { ...w, ...R() };\n let N = 0;\n if (b.async && N++, b.stream && N++, N > 1) {\n $(s, new Error(`\'${M}\' cannot have multiple modifiers: \'${s?.parent?.name?.escapedText}\'.`));\n return;\n }\n w = b, V = !0;\n }\n }\n if (!V) {\n $("node", new Error(`\'${M}\' is not a valid type: \'${s?.parent?.name?.escapedText}\'.`));\n return;\n }\n const H = s.typeArguments;\n if (H) {\n if (H.length !== 1) {\n $(s, new Error(`\'${M}\' must be typed with exactly 1 type: \'${s?.parent?.name?.escapedText}\'.`));\n return;\n }\n c(H[0], w, L, P);\n }\n }\n }\n }, m = (s) => (a.getCombinedModifierFlags(s) & a.ModifierFlags.Export) !== 0, fe = (s) => (a.getCombinedModifierFlags(s) & a.ModifierFlags.Default) !== 0, B = [], $ = (s, w) => {\n B.push(w);\n };\n if (a.forEachChild(J, (s) => {\n if (m(s) && a.isFunctionDeclaration(s)) {\n const w = {}, L = {\n parameters: {}\n }, P = s?.name?.getText();\n try {\n w.name = P;\n const K = I.getSymbolAtLocation(s.name).getDocumentationComment(I);\n if (K && K.length > 0 && K[0].text) {\n let R = K[0].text;\n R = R.replace(/[\\r\\n]+/g, "\\\\n").trim(), L.summary = R;\n }\n const V = {};\n c(s.type, V, w, !1), w.returnType = V;\n const q = {};\n fe(s) && (q.default = !0, u = P), Object.keys(q).length > 0 && (w.behavior = q), w.parameters = [];\n const H = /* @__PURE__ */ new Map();\n for (let R = 0; R < s.parameters.length; R++) {\n const b = s.parameters[R], N = {};\n N.name = b.name?.getText();\n const X = c(b.type, N, w, !0);\n if (X) {\n if (w.parameters.length !== 0) {\n const F = s?.parent?.name?.getText();\n $(s, new Error(`\'${w.name}\' contexts must be the first parameter: \'${F}\'.`));\n return;\n }\n w.context = X;\n continue;\n }\n const z = !((b.initializer === void 0 || b.initializer === null) && (b.questionToken === void 0 || b.questionToken === null));\n let C;\n if (z && (N.optional = !0, b.initializer))\n try {\n b.initializer.kind === a.SyntaxKind.StringLiteral ? C = b.initializer.text : b.initializer.kind === a.SyntaxKind.NumericLiteral ? C = parseFloat(b.initializer.text) : b.initializer.kind === a.SyntaxKind.TrueKeyword || b.initializer.kind === a.SyntaxKind.FalseKeyword ? C = b.initializer.kind === a.SyntaxKind.TrueKeyword : b.initializer.kind === a.SyntaxKind.NullKeyword ? C = null : b.initializer.kind === a.SyntaxKind.ObjectLiteralExpression || b.initializer.kind === a.SyntaxKind.ArrayLiteralExpression ? C = b.initializer.getText() : C = b.initializer.getText?.();\n } catch (O) {\n console.warn(`Couldn\'t extract default value for parameter \'${N.name}\'`, O);\n }\n b.dotDotDotToken && (N.rest = !0), w.parameters.push(N);\n const x = { description: "" };\n L.parameters[N.name] = x;\n const G = I.getSymbolAtLocation(b.name).getDocumentationComment(I);\n G && G.length > 0 && G[0].text && (x.description = G[0].text), C !== void 0 && (x.defaultValue = C), H.set(N.name, N);\n }\n if (s.jsDoc && s.jsDoc.length > 0) {\n const R = s.jsDoc;\n for (let b = 0; b < R.length; b++) {\n const N = R[b]?.tags;\n if (N)\n for (let X = 0; X < N.length; X++) {\n const z = N[X];\n let C = z?.tagName?.text;\n if (!C) continue;\n C = C.toLowerCase();\n let x = z.comment;\n const G = C === "hidden";\n if (!(typeof x != "string" && !G) && (typeof x == "string" && (x = x.replace(/[\\r\\n]+/g, "\\\\n").trim()), !(!G && x && (x = x.split(/\\\\n/)[0], !x || x.length === 0)))) {\n if (x && typeof x == "string") {\n const O = /\\{@link(code|plain)?\\s+([^}|]+)(?:\\s*\\|\\s*([^}]+))?\\}/g;\n let F, Z = x, te = [];\n for (; (F = O.exec(x)) !== null; ) {\n const [pe, me, gt, Ne] = F, bt = [gt.trim()];\n Ne && bt.push(Ne.trim());\n }\n x = Z, te.length > 0 && C === "see" && (L.links || (L.links = []), L.links.push(...te));\n }\n if (C === "name") {\n const O = x;\n O !== P && (L.name = O);\n } else if (C === "description") {\n const O = x;\n } else if (C === "summary") {\n const O = x;\n O && (L.summary = O);\n } else if (C === "param") {\n const O = z.name?.text, F = H.get(O);\n if (!F) {\n B.push(new Error(`Parameter \'${O}\' not found in function \'${P}\'.`));\n continue;\n }\n if (z.typeExpression && z.typeExpression.type)\n try {\n const Z = z.typeExpression.type;\n if (Z.kind === a.SyntaxKind.UnionType) {\n const te = [];\n F.enums = te, Z.types.forEach((pe) => {\n if (pe.kind === a.SyntaxKind.LiteralType) {\n const me = pe.literal.text;\n me && te.push(me);\n }\n });\n }\n } catch (Z) {\n console.warn("Error parsing JSDoc type expression:", Z);\n }\n } else if (C === "returns" || C === "return")\n w.returnType.description = x;\n else if (C === "category")\n L.category = x;\n else if (C === "hidden") {\n let O = !0;\n const F = x?.toLowerCase();\n F === "false" ? O = !1 : F !== "true" && (O = x), O !== !1 && (L.hidden = O ?? !0);\n }\n }\n }\n }\n }\n Object.keys(w.returnType).length === 0 && delete w.returnType, f.push([w, L]);\n } catch (M) {\n $(s, new Error(`\'${P}\': ${M.message}`));\n }\n }\n }), B.length > 0)\n throw console.warn(B), new Error("There were compilation errors.", { cause: B });\n if (f.length === 0)\n throw new Error("No exported functions.");\n const yt = `${Ut.uuidV4()}-script`;\n try {\n !r && B.length === 0 && (l = await Gt(a, l, g));\n } catch {\n console.warn("Error bundling script");\n }\n const Ie = {\n functions: f,\n commitId: yt,\n source: t,\n name: "Script",\n language: "typescript",\n // default\n compiled: l\n };\n return u && (Ie.autoRun = u), Ie;\n}\nself.addEventListener("message", async (e) => {\n const { id: t, params: r } = e.data;\n try {\n const n = await er(r);\n self.postMessage({ id: t, result: n, error: null });\n } catch (n) {\n self.postMessage({\n id: t,\n result: null,\n error: {\n message: n.message,\n stack: n.stack,\n cause: n.cause\n }\n });\n }\n});\nlet ce = null;\nasync function tr() {\n return ce || (ce = new Promise(async (e, t) => {\n try {\n const r = "0.20.2", n = `https://esm.sh/esbuild-wasm@${r}`, o = `https://esm.sh/esbuild-wasm@${r}/esbuild.wasm`, a = (await import(\n /* webpackIgnore: true */\n /* @vite-ignore */\n n\n )).default;\n await a.initialize({\n wasmURL: o,\n // Provide the specific WASM URL\n worker: !1\n // Keep processing on the current thread\n }), e(a);\n } catch (r) {\n console.error("Error initializing esbuild:", r), t(r);\n }\n }), ce);\n}\nvar rr = /* @__PURE__ */ Object.freeze({\n __proto__: null,\n initialize: tr\n});\nlet ue = null;\nasync function nr() {\n return ue || (ue = new Promise(async (e, t) => {\n let r = null;\n try {\n r = await import("https://esm.sh/typescript@5.7.2");\n } catch (n) {\n console.error("Error initializing Browser TypeScript module:", n);\n }\n r || console.log("use script fallback"), e(r);\n }), ue);\n}\nvar or = /* @__PURE__ */ Object.freeze({\n __proto__: null,\n initialize: nr\n});\n', r = typeof self < "u" && self.Blob && new Blob(["URL.revokeObjectURL(import.meta.url);", t], { type: "text/javascript;charset=utf-8" });
|
|
50
50
|
function o(n2) {
|
|
51
51
|
let e2;
|
|
52
52
|
try {
|
|
@@ -72,7 +72,7 @@ async function i() {
|
|
|
72
72
|
return await a();
|
|
73
73
|
}
|
|
74
74
|
const a = async () => {
|
|
75
|
-
const { compileModule: n2 } = await import("./
|
|
75
|
+
const { compileModule: n2 } = await import("./nu2Rn52DdGuXHpbG.mjs"), t2 = new e((e2) => n2(e2));
|
|
76
76
|
return await t2.start(), t2;
|
|
77
77
|
};
|
|
78
78
|
export {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.
|
|
2
|
+
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.15
|
|
3
3
|
*
|
|
4
4
|
* (C) 2025-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: The license can be found at https://www.sheetxl.com/license.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.
|
|
2
|
+
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.15
|
|
3
3
|
*
|
|
4
4
|
* (C) 2025-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: The license can be found at https://www.sheetxl.com/license.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.
|
|
2
|
+
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.15
|
|
3
3
|
*
|
|
4
4
|
* (C) 2025-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: The license can be found at https://www.sheetxl.com/license.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.
|
|
2
|
+
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.15
|
|
3
3
|
*
|
|
4
4
|
* (C) 2025-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: The license can be found at https://www.sheetxl.com/license.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.
|
|
2
|
+
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.15
|
|
3
3
|
*
|
|
4
4
|
* (C) 2025-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: The license can be found at https://www.sheetxl.com/license.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.
|
|
2
|
+
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.15
|
|
3
3
|
*
|
|
4
4
|
* (C) 2025-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: The license can be found at https://www.sheetxl.com/license.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.
|
|
2
|
+
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.15
|
|
3
3
|
*
|
|
4
4
|
* (C) 2025-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: The license can be found at https://www.sheetxl.com/license.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.
|
|
2
|
+
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.15
|
|
3
3
|
*
|
|
4
4
|
* (C) 2025-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: The license can be found at https://www.sheetxl.com/license.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.
|
|
2
|
+
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.15
|
|
3
3
|
*
|
|
4
4
|
* (C) 2025-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: The license can be found at https://www.sheetxl.com/license.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.
|
|
2
|
+
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.15
|
|
3
3
|
*
|
|
4
4
|
* (C) 2025-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: The license can be found at https://www.sheetxl.com/license.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.
|
|
2
|
+
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.15
|
|
3
3
|
*
|
|
4
4
|
* (C) 2025-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: The license can be found at https://www.sheetxl.com/license.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.
|
|
2
|
+
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.15
|
|
3
3
|
*
|
|
4
4
|
* (C) 2025-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: The license can be found at https://www.sheetxl.com/license.
|
|
@@ -10,7 +10,7 @@ class r {
|
|
|
10
10
|
}
|
|
11
11
|
async getWorkerWrapper() {
|
|
12
12
|
if (this.workerWrapper) return this.workerWrapper;
|
|
13
|
-
const { createCompilerWorker: r2 } = await import("./
|
|
13
|
+
const { createCompilerWorker: r2 } = await import("./BkgjaYUkJEGCVT6Z.mjs");
|
|
14
14
|
return this.workerWrapper = await r2(), this.workerWrapper;
|
|
15
15
|
}
|
|
16
16
|
async compileModule(r2) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.
|
|
2
|
+
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.15
|
|
3
3
|
*
|
|
4
4
|
* (C) 2025-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: The license can be found at https://www.sheetxl.com/license.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.
|
|
2
|
+
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.15
|
|
3
3
|
*
|
|
4
4
|
* (C) 2025-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: The license can be found at https://www.sheetxl.com/license.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.
|
|
2
|
+
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.15
|
|
3
3
|
*
|
|
4
4
|
* (C) 2025-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: The license can be found at https://www.sheetxl.com/license.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.
|
|
2
|
+
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.15
|
|
3
3
|
*
|
|
4
4
|
* (C) 2025-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: The license can be found at https://www.sheetxl.com/license.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.
|
|
2
|
+
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.15
|
|
3
3
|
*
|
|
4
4
|
* (C) 2025-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: The license can be found at https://www.sheetxl.com/license.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.
|
|
2
|
+
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.15
|
|
3
3
|
*
|
|
4
4
|
* (C) 2025-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: The license can be found at https://www.sheetxl.com/license.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.
|
|
2
|
+
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.15
|
|
3
3
|
*
|
|
4
4
|
* (C) 2025-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: The license can be found at https://www.sheetxl.com/license.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.
|
|
2
|
+
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.15
|
|
3
3
|
*
|
|
4
4
|
* (C) 2025-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: The license can be found at https://www.sheetxl.com/license.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.
|
|
2
|
+
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.15
|
|
3
3
|
*
|
|
4
4
|
* (C) 2025-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: The license can be found at https://www.sheetxl.com/license.
|
package/node/esm/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.
|
|
2
|
+
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.3.15
|
|
3
3
|
*
|
|
4
4
|
* (C) 2025-present SheetXL Inc. & Michael T. Ford
|
|
5
5
|
* License: The license can be found at https://www.sheetxl.com/license.
|
|
@@ -1630,7 +1630,7 @@ class fe extends ae {
|
|
|
1630
1630
|
}
|
|
1631
1631
|
const pe = () => {
|
|
1632
1632
|
try {
|
|
1633
|
-
return "0.3.
|
|
1633
|
+
return "0.3.15";
|
|
1634
1634
|
} catch (t5) {
|
|
1635
1635
|
return "";
|
|
1636
1636
|
}
|
|
@@ -14174,7 +14174,7 @@ class t_ {
|
|
|
14174
14174
|
async _initialize() {
|
|
14175
14175
|
const t5 = await Fe._validate(true), e2 = n_();
|
|
14176
14176
|
this._calcScope = e2, this._runtime = new e_(this._options, t5);
|
|
14177
|
-
const { initializeBuiltIns: n2 } = await import("./
|
|
14177
|
+
const { initializeBuiltIns: n2 } = await import("./tDautIgBG3QhJPff.mjs"), r2 = this;
|
|
14178
14178
|
return this._builtInFunctions = Object.freeze(n2(() => r2)), { builtInFunctions: this._builtInFunctions, calcScope: this._calcScope };
|
|
14179
14179
|
}
|
|
14180
14180
|
getBuiltInFunctions() {
|
|
@@ -14347,7 +14347,7 @@ class e_ {
|
|
|
14347
14347
|
}
|
|
14348
14348
|
getVersion() {
|
|
14349
14349
|
try {
|
|
14350
|
-
const t5 = "0.3.
|
|
14350
|
+
const t5 = "0.3.15";
|
|
14351
14351
|
if (-1 === t5.indexOf(".env.")) return `${t5}`;
|
|
14352
14352
|
} catch (t5) {
|
|
14353
14353
|
return "local";
|
|
@@ -14872,7 +14872,7 @@ class R_ extends El {
|
|
|
14872
14872
|
this._context = r2;
|
|
14873
14873
|
const o2 = await r2._initialize(), s2 = o2.builtInFunctions;
|
|
14874
14874
|
this._functions = new I_({ transactions: this._transactions, context: r2, readonlyFunctions: s2 });
|
|
14875
|
-
const i2 = await import("./
|
|
14875
|
+
const i2 = await import("./CHekmDjJknOCqWhl.mjs");
|
|
14876
14876
|
this._formulaParser = new i2.FormulaParser(), this._scope = o2.calcScope, this._status = dp.Status.Ready, this._emitter.notify("onStatusChange"), this._emitter.notify("onReady");
|
|
14877
14877
|
} catch (t5) {
|
|
14878
14878
|
throw this._status = dp.Status.Off, this._emitter.notify("onError", t5), this._emitter.notify("onStatusChange"), t5;
|
|
@@ -17768,7 +17768,7 @@ class HS {
|
|
|
17768
17768
|
}
|
|
17769
17769
|
}
|
|
17770
17770
|
async function VS() {
|
|
17771
|
-
const { getCrypto: t5 } = await import("./
|
|
17771
|
+
const { getCrypto: t5 } = await import("./B4mU40-jn99Q5FIi.mjs");
|
|
17772
17772
|
return t5();
|
|
17773
17773
|
}
|
|
17774
17774
|
const GS = async (t5, e2, ...n2) => {
|
|
@@ -22367,7 +22367,7 @@ class Tw {
|
|
|
22367
22367
|
return this._modules;
|
|
22368
22368
|
}
|
|
22369
22369
|
async createModule(t5) {
|
|
22370
|
-
const e2 = await import("./
|
|
22370
|
+
const e2 = await import("./BLfjpWs4wSUanDnr.mjs"), n2 = await e2.ScriptingUtils.compileTypescript(t5);
|
|
22371
22371
|
return n2 ? await Mw(n2, t5?.declarationsOnly ?? false) : null;
|
|
22372
22372
|
}
|
|
22373
22373
|
addModule(t5, e2, n2) {
|