@gridsheet/preact-core 3.4.0 → 3.4.2
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.
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hooks-BTcuh87d.mjs","sources":["../../engine/dist/index.js","../../web/dist/index.js","../../react-core/src/store/helpers.ts","../../react-core/src/store/actions.ts","../../react-core/src/lib/hooks.ts"],"sourcesContent":["import z from \"dayjs\";\nimport As from \"dayjs/plugin/utc.js\";\nimport Is from \"dayjs/plugin/timezone.js\";\nconst Cs = 20, rt = 24, he = 90, jr = 500, Gr = 1e3, $e = 24, Le = 50, Zr = 5, qr = 5, Kr = 5, Jr = 10, qe = 1e3, fe = 86400, Ts = \"YYYY-MM-DDTHH:mm:ss.SSSZ\", Ms = {\n startY: -1,\n startX: -1,\n endY: -1,\n endX: -1\n}, Fs = new Date(1900, 0, 1), vt = \"default\", kt = \"defaultCol\", $t = \"defaultRow\", pe = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\", Ft = /* @__PURE__ */ new Map(), Ot = /* @__PURE__ */ new Map(), Os = (r, t = qe) => {\n const e = Ft.get(--r);\n if (e != null)\n return e;\n if (r === 0)\n return \"\";\n let s = r, i = \"\";\n do\n i = pe[--s % 26] + i, s = Math.floor(s / 26);\n while (s > 0);\n Ft.set(r, i);\n const n = Ft.keys();\n for (let o = n.next(); Ft.size > t; o = n.next())\n Ft.delete(o.value);\n return i;\n}, Ds = (r, t = qe) => {\n const e = Ot.get(r);\n if (e != null)\n return e;\n if (r === \"\")\n return 0;\n const s = r;\n let i = 0;\n for (let o = 0; o < s.length; o++) {\n const a = s[s.length - o - 1], l = pe.indexOf(a) + 1;\n i += pe.length ** o * l;\n }\n Ot.set(r, i);\n const n = Ot.keys();\n for (let o = n.next(); Ot.size > t; o = n.next())\n Ot.delete(o.value);\n return i;\n}, G = (r) => {\n if (r === 0)\n return \"\";\n const t = Os(r + 1);\n return r < 0 ? `$${t}` : t;\n}, Ht = (r, t = !1) => {\n const e = Ds(r.toUpperCase());\n return t ? -e : e;\n}, bt = (r) => r === 0 ? \"\" : r < 0 ? `$${r}` : String(r), Ns = (r, t = !1) => (typeof r == \"string\" && (r = parseInt(r, 10)), t ? -r : r), M = ({ y: r, x: t, absX: e, absY: s }) => {\n if (t === -1 && r === -1)\n return \"?\";\n const i = t === void 0 ? \"\" : t === 0 ? \"0\" : `${e ? \"$\" : \"\"}${G(t)}`, n = r === void 0 ? \"\" : r === 0 ? \"0\" : `${s ? \"$\" : \"\"}${bt(r)}`;\n return `${i}${n}`;\n}, T = (r) => {\n const t = r.match(/(\\$)?([a-zA-Z]*)(\\$)?([0-9]*)/);\n if (t == null)\n return { y: -1, x: -1 };\n const [, e, s, i, n] = t.slice(), [o, a] = [e != null, i != null];\n return s === \"\" && n === \"\" ? { y: -1, x: -1, absX: !1, absY: !1 } : { y: Ns(n) || 0, x: Ht(s) || 0, absX: o, absY: a };\n}, Ke = (r, t, e) => {\n const s = r.match(/([A-Z]*)([0-9]*)/);\n if (s == null)\n return r;\n const [, i, n] = s.slice();\n return `${t ? \"$\" : \"\"}${i.toUpperCase()}${e ? \"$\" : \"\"}${n}`;\n}, Qr = (r) => `0${r}`, tn = (r) => typeof r == \"number\" ? `${G(r)}0` : `${r.toUpperCase()}0`, en = (r) => r.replace(/\\$/g, \"\"), Je = (r, t = !1, e = !1) => `${t ? \"$\" : \"\"}#${r}${e ? \"$\" : \"\"}`, sn = (r, t) => {\n const { rows: e, cols: s } = He(r), { rows: i, cols: n } = He(t);\n return {\n rows: e > i ? e : i,\n cols: s > n ? s : n\n };\n}, vs = (r, t) => {\n const e = { ...r };\n return t.left < r.left && (e.left = t.left), t.right > r.right && (e.right = t.right), t.top < r.top && (e.top = t.top), t.bottom > r.bottom && (e.bottom = t.bottom), e;\n}, ks = (r) => {\n if (r.endY === -1 || r.endX === -1)\n return { top: -1, left: -1, bottom: -1, right: -1 };\n const [t, e] = r.startY < r.endY ? [r.startY, r.endY] : [r.endY, r.startY], [s, i] = r.startX < r.endX ? [r.startX, r.endX] : [r.endX, r.startX];\n return { top: t, left: s, bottom: e, right: i };\n}, Pe = (r) => ({\n startY: r.top,\n startX: r.left,\n endY: r.bottom,\n endX: r.right\n}), rn = (r) => {\n const { top: t, left: e, bottom: s, right: i } = r;\n if (t === s && e === i)\n return M({ y: t, x: e });\n const n = M({ y: t, x: e }), o = M({ y: s, x: i });\n return `${n}:${o}`;\n}, nn = (r, t) => r.start === -1 || r.end === -1 ? !1 : r.start <= t && t <= r.end || r.end <= t && t <= r.start, on = (r, t) => {\n if (r.top === -1 || r.left === -1 || r.bottom === -1 || r.right === -1)\n return !1;\n const { y: e, x: s } = t, { top: i, left: n, bottom: o, right: a } = r;\n return i <= e && e <= o && n <= s && s <= a;\n}, $s = (r) => r.endY === -1 || r.endX === -1 ? { rows: 0, cols: 0 } : {\n rows: Math.abs(r.startY - r.endY),\n cols: Math.abs(r.startX - r.endX)\n}, an = (r) => r.endY === -1 || r.endX === -1 ? { rows: 1, cols: 1 } : {\n rows: 1 + Math.abs(r.startY - r.endY),\n cols: 1 + Math.abs(r.startX - r.endX)\n}, He = (r) => ({\n rows: Math.abs(r.top - r.bottom),\n cols: Math.abs(r.left - r.right)\n}), me = (r) => ({\n rows: 1 + Math.abs(r.top - r.bottom),\n cols: 1 + Math.abs(r.left - r.right)\n}), Zt = ({ base: r = 0, matrix: t }) => {\n const e = t.length;\n return e === 0 ? { rows: 0, cols: 0 } : { rows: r + e, cols: r + t[0].length };\n}, cn = (r, t, e = 1) => Array.from({ length: (t - r - 1) / e + 1 }, (s, i) => r + i * e), ln = (r, t) => {\n const e = [];\n return r.forEach((s) => {\n const i = [];\n t.forEach((n) => {\n i.push(s[n]);\n }), e.push(i);\n }), e;\n}, hn = (r, t) => {\n const e = [];\n return r.forEach((s) => {\n const i = {};\n s.forEach((n, o) => {\n if (o >= t.length)\n return;\n const a = t[o];\n i[a] = n;\n }), e.push(i);\n }), e;\n}, Jt = (r, t, e) => [...Array(r)].map(() => Array(t).fill(e)), un = ({\n cells: r = {},\n ensured: t = {},\n matrix: e = [],\n flattenAs: s = \"value\",\n origin: i = \"A1\"\n}) => Ls({\n cells: r,\n ensured: t,\n matrices: { [i]: e },\n flattenAs: s\n}), Ls = ({\n cells: r = {},\n ensured: t = {},\n matrices: e = {},\n flattenAs: s = \"value\"\n} = {}) => {\n const i = Object.keys(r), a = Object.values(e).reduce((c, f) => {\n var d;\n return c + f.length * (((d = f[0]) == null ? void 0 : d.length) ?? 0);\n }, 0) > 1e5;\n a ? (Object.defineProperty(r, \"__matrices\", { value: e, configurable: !0 }), Object.defineProperty(r, \"__flattenAs\", { value: s, configurable: !0 })) : Ps({ cells: r, flattenAs: s, matrices: e });\n const { numRows: l, numCols: h } = Object.assign({ numRows: 1, numCols: 1 }, t), u = M({ y: l, x: h });\n return r[u] == null && (r[u] = {}), a && (i.push(u), Object.defineProperty(r, \"__userKeys\", { value: i, configurable: !0 })), r;\n}, Ps = ({\n cells: r = {},\n matrices: t = {},\n flattenAs: e\n}) => (Object.keys(t).forEach((s) => {\n const i = t[s], { y: n, x: o } = T(s), a = [];\n for (let l = 0; l < i.length; l++) {\n const h = i[l], u = String(n + l);\n for (let c = 0; c < h.length; c++) {\n a[c] == null && (a[c] = G(o + c));\n const f = a[c] + u;\n if (e) {\n const d = r[f];\n d ? e in d || (d[e] = h[c]) : r[f] = { [e]: h[c] };\n } else\n r[f] = h[c];\n }\n }\n}), r), Hs = (r = {}, t) => {\n let [e, s] = [0, 0];\n return (t ?? Object.keys(r)).forEach((i) => {\n if (i === vt || i === kt || i === $t)\n return;\n const { y: n, x: o } = T(i);\n e < n && (e = n), s < o && (s = o);\n }), { numRows: e, numCols: s };\n}, dn = (r, t) => {\n const e = [];\n for (let s = r; s <= t; s++)\n e.push(s);\n return e;\n}, Ys = (r, t) => (r.left === -1 && (r = {\n left: t.x,\n top: t.y,\n right: t.x,\n bottom: t.y\n}), r), Bs = (r) => {\n if (r.indexOf(\":\") === -1)\n return [r];\n const t = [];\n if (/^\\d+\\:\\d+$/.test(r)) {\n const [u, c] = r.split(\":\").map(Number);\n for (let f = u; f <= c; f++)\n t.push(`${f}`);\n return t;\n }\n const s = r.match(/^([A-Z]*)(\\d+)?\\:([A-Z]*)(\\d+)?$/);\n if (!s)\n return console.error(\"Invalid range format\", r), [r];\n const [, i, n, o, a] = s, l = i ? Ht(i) : 1, h = o ? Ht(o) : 1;\n for (let u = l; u <= h; u++) {\n const c = i || o ? G(u) : \"\";\n if (n && a)\n for (let f = Number(n); f <= Number(a); f++)\n t.push(`${c}${f}`);\n else !n && !a && t.push(c);\n }\n return t;\n}, fn = (r) => {\n const t = $s(r);\n return t.rows + t.cols === 0 ? { startY: -1, startX: -1, endY: -1, endX: -1 } : { ...r };\n}, pn = (r, t, e, s) => {\n for (; r <= t; ) {\n const i = Math.floor((r + t) / 2);\n e(i) ? s ? t = i - 1 : r = i + 1 : s ? r = i + 1 : t = i - 1;\n }\n return s ? r : t;\n}, mn = (r) => {\n if (r.length === 0)\n return [];\n const t = r.map((o) => {\n const { y: a, x: l } = T(o);\n return { y: a, x: l };\n }), e = (o, a) => `${o},${a}`, s = new Set(t.map((o) => e(o.y, o.x))), i = /* @__PURE__ */ new Set(), n = [];\n for (const o of t) {\n const a = e(o.y, o.x);\n if (i.has(a))\n continue;\n let l = o.y, h = o.x, u = o.y, c = o.x;\n const f = [o];\n for (i.add(a); f.length > 0; ) {\n const { y: d, x: p } = f.shift();\n d < l && (l = d), d > u && (u = d), p < h && (h = p), p > c && (c = p);\n for (const [m, y] of [\n [0, 1],\n [0, -1],\n [1, 0],\n [-1, 0]\n ]) {\n const g = e(d + m, p + y);\n s.has(g) && !i.has(g) && (i.add(g), f.push({ y: d + m, x: p + y }));\n }\n }\n n.push({ top: l, left: h, bottom: u, right: c });\n }\n return n;\n}, yn = (r, t = !0) => {\n const e = /* @__PURE__ */ new Set(), s = [];\n for (const i of r) {\n const { x: n } = T(i);\n e.has(n) || (e.add(n), s.push(n));\n }\n return t === !0 ? s.sort((i, n) => i - n) : t === !1 && s.sort((i, n) => n - i), s;\n}, gn = (r, t = !0) => {\n const e = /* @__PURE__ */ new Set(), s = [];\n for (const i of r) {\n const { y: n } = T(i);\n e.has(n) || (e.add(n), s.push(n));\n }\n return t === !0 ? s.sort((i, n) => i - n) : t === !1 && s.sort((i, n) => n - i), s;\n}, wn = (r) => r.startY === -1 || r.startX === -1 || r.endY === -1 || r.endX === -1, at = 864e5;\nclass R {\n constructor(t, e = \"HH:mm:ss\") {\n this.__gsType = \"Time\", this.days = t, this.format = e;\n }\n add(t) {\n return new Date(t.getTime() + this.days * at);\n }\n sub(t) {\n return new Date(t.getTime() - this.days * at);\n }\n stringify(t) {\n const e = this.toMilliseconds(), s = Math.abs(e), i = e < 0 ? \"-\" : \"\", n = s % 1e3;\n let o = Math.floor(s / 1e3);\n const a = o % 60;\n o = Math.floor(o / 60);\n const l = o % 60, h = Math.floor(o / 60);\n let c = t ?? (n === 0 ? \"HH:mm:ss\" : \"HH:mm:ss.SSS\");\n return c = c.replace(\"HH\", i + String(h).padStart(2, \"0\")), c = c.replace(\"H\", i + String(h)), c = c.replace(\"mm\", String(l).padStart(2, \"0\")), c = c.replace(\"ss\", String(a).padStart(2, \"0\")), c = c.replace(\"SSS\", String(n).padStart(3, \"0\")), c = c.replace(\"SS\", String(n).padStart(3, \"0\").substring(0, 2)), c = c.replace(\"S\", String(n).padStart(3, \"0\").substring(0, 1)), c;\n }\n toMilliseconds() {\n return this.days * at;\n }\n toDate() {\n return new Date(Fs.getTime() + this.days * at);\n }\n toJSON() {\n return { __gsType: \"Time\", days: this.days, format: this.format };\n }\n toString() {\n return this.stringify();\n }\n static create(t = 0, e = 0, s = 0, i = 0) {\n const n = t * 36e5 + e * 6e4 + s * 1e3 + i;\n return new R(n / at);\n }\n static fromDate(t) {\n const e = t.getHours() * 36e5 + t.getMinutes() * 6e4 + t.getSeconds() * 1e3 + t.getMilliseconds();\n return new R(e / at);\n }\n static fromDates(t, e) {\n return new R((t.getTime() - e.getTime()) / at);\n }\n static fromObject(t) {\n return new R(t.days, t.format);\n }\n static is(t) {\n return t instanceof R || (t == null ? void 0 : t.__gsType) === \"Time\";\n }\n static ensure(t) {\n return t instanceof R ? t : (t == null ? void 0 : t.__gsType) === \"Time\" ? R.fromObject(t) : R.create();\n }\n static parse(t, e, s = !1) {\n if (e != null) {\n const i = Us(e), n = t.match(i);\n if (n != null && n.groups)\n return R.create(\n Number(n.groups.HH || n.groups.H || 0),\n Number(n.groups.mm || n.groups.m || 0),\n Number(n.groups.ss || n.groups.s || 0),\n Number(n.groups.SSS || n.groups.SS || n.groups.S || 0)\n );\n }\n if (!s) {\n {\n const i = t.match(/^([+-]?)(\\d+):(\\d{2})$/);\n if (i) {\n const [, n, o, a] = i, l = n === \"-\" ? -1 : 1;\n return R.create(l * Number(o), l * Number(a));\n }\n }\n {\n const i = t.match(/^([+-]?)(\\d+):(\\d{2}):(\\d{2})$/);\n if (i) {\n const [, n, o, a, l] = i, h = n === \"-\" ? -1 : 1;\n return R.create(h * Number(o), h * Number(a), h * Number(l));\n }\n }\n {\n const i = t.match(/^([+-]?)(\\d+):(\\d{2}):(\\d{2})\\.(\\d+)$/);\n if (i) {\n const [, n, o, a, l, h] = i, u = n === \"-\" ? -1 : 1;\n return R.create(u * Number(o), u * Number(a), u * Number(l), u * Number(h));\n }\n }\n }\n }\n}\nconst Ye = {\n HH: { group: \"HH\", pattern: \"(?<HH>\\\\d+)\" },\n H: { group: \"H\", pattern: \"(?<HH>\\\\d+)\" },\n mm: { group: \"mm\", pattern: \"(?<mm>[0-5]\\\\d)\" },\n m: { group: \"m\", pattern: \"(?<m>\\\\d|[1-5]\\\\d)\" },\n ss: { group: \"ss\", pattern: \"(?<ss>[0-5]\\\\d)\" },\n s: { group: \"s\", pattern: \"(?<s>\\\\d|[1-5]\\\\d)\" },\n SSS: { group: \"SSS\", pattern: \"(?<SSS>\\\\d{3})\" },\n SS: { group: \"SS\", pattern: \"(?<SS>\\\\d{2})\" },\n S: { group: \"S\", pattern: \"(?<S>\\\\d)\" }\n};\nfunction Us(r) {\n const t = Object.keys(Ye).sort((n, o) => o.length - n.length), e = new RegExp(t.join(\"|\"), \"g\"), i = r.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\").replace(e, (n) => {\n var o;\n return ((o = Ye[n]) == null ? void 0 : o.pattern) ?? n;\n });\n return new RegExp(`^${i}$`);\n}\nclass S {\n constructor(t, e, s) {\n this.__gsType = \"FormulaError\", this.code = t, this.message = e, this.error = s;\n }\n static is(t) {\n return t instanceof S || (t == null ? void 0 : t.__gsType) === \"FormulaError\";\n }\n toString() {\n return this.code;\n }\n}\nclass _t {\n constructor(t) {\n this.code = t, this.__gsType = \"Sentinel\";\n }\n is(t) {\n return _t.is(t, this.code);\n }\n static is(t, e) {\n return t instanceof _t || (t == null ? void 0 : t.__gsType) === \"Sentinel\" ? e == null || t.code === e : !1;\n }\n}\nconst Yt = new _t(\"solving\"), Dt = new _t(\"none\");\nclass L {\n constructor(t) {\n this.__gsType = \"Pending\", this.promise = t, this.timestamp = Date.now();\n }\n static is(t) {\n return t instanceof L || (t == null ? void 0 : t.__gsType) === \"Pending\";\n }\n toString() {\n return `<Pending #${this.timestamp}>`;\n }\n}\nclass W {\n constructor(t) {\n this.__gsType = \"Spilling\", this.matrix = this.ensure2D(t);\n }\n ensure2D(t) {\n return t.length === 0 ? [] : Array.isArray(t[0]) ? t : [t];\n }\n static is(t) {\n return t instanceof W || (t == null ? void 0 : t.__gsType) === \"Spilling\";\n }\n}\nconst Qt = (r, t = !0) => {\n let e = r;\n return t && e.startsWith(\"$\") && (e = e.slice(1)), t && e.endsWith(\"$\") && (e = e.slice(0, -1)), e.replace(\"#\", \"\");\n};\nclass ht {\n constructor(t) {\n this.ids = [], this.value = t;\n }\n}\nclass be extends ht {\n evaluate() {\n return this.value;\n }\n}\nclass Vs extends ht {\n evaluate() {\n throw new S(\"#REF!\", \"Reference does not exist.\");\n }\n}\nclass zs extends ht {\n evaluate() {\n throw new S(\"#NAME?\", `Invalid ref: ${this.value}`);\n }\n}\nclass Qe extends ht {\n constructor(t) {\n super(t);\n }\n stringify() {\n return this.value.toUpperCase();\n }\n evaluate({ sheet: t }) {\n const e = Rt(this.value, { sheet: t, dependency: \"\" });\n if (e.sheet == null)\n throw new S(\"#REF!\", `Unknown sheet: ${e.sheetName}`);\n if (e.addresses.length === 0)\n throw new S(\"#REF!\", `Invalid address: ${this.value}`);\n const { y: s, x: i } = T(e.addresses[0]);\n return e.sheet.trim({ top: s, left: i, bottom: s, right: i });\n }\n identify(t) {\n const { slideY: e = 0, slideX: s = 0 } = t, i = Rt(this.value, t);\n if (i.sheet == null)\n return this.value;\n const n = i.addresses[0], { y: o, x: a, absX: l, absY: h } = T(n), u = {\n y: o + e,\n x: a + s,\n absX: l,\n absY: h\n }, c = i.sheet.getId(u);\n return c == null ? this.value : (this.ids = [c], `#${i.sheet.id}!${Je(c, l, h)}`);\n }\n}\nclass ts extends ht {\n stringify() {\n return this.value.toUpperCase();\n }\n evaluate({ sheet: t }) {\n const e = Rt(this.value, { sheet: t, dependency: \"\" });\n if (e.sheet == null)\n throw new S(\"#REF!\", `Unknown sheet: ${e.sheetName}`);\n if (e.addresses.length === 0)\n throw new S(\"#REF!\", `Invalid address: ${this.value}`);\n const s = e.sheet.rangeToArea(e.addresses.join(\":\"));\n return e.sheet.trim(s);\n }\n identify(t) {\n const { slideY: e = 0, slideX: s = 0 } = t, i = Rt(this.value, t);\n if (i.sheet == null)\n return this.value;\n const n = [];\n for (let o = 0; o < i.addresses.length; o++) {\n const a = i.addresses[o], { y: l, x: h, absX: u, absY: c } = T(a), f = {\n y: l + e,\n x: h + s,\n absX: u,\n absY: c\n }, d = i.sheet.getId(f);\n if (d == null)\n return this.value;\n this.ids.push(d), n.push(Je(d, u, c));\n }\n return `#${i.sheet.id}!${n.join(\":\")}`;\n }\n}\nclass ye extends ht {\n parse(t) {\n if (this.value.indexOf(\"!\") !== -1) {\n const [e, s] = this.value.split(\"!\"), i = Number(e.slice(1));\n return { sheet: t.getSheetBySheetId(i), id: Qt(s, !1) };\n }\n return { sheet: t, id: Qt(this.value, !1) };\n }\n evaluate({ sheet: t }) {\n const e = this.parse(t);\n if (e.id === \"?\")\n throw new S(\"#REF!\", \"Reference does not exist\");\n const { y: s, x: i } = e.sheet.getPointById(e.id), [n, o] = [Math.abs(s), Math.abs(i)];\n return e.sheet.trim({\n top: n,\n left: o,\n bottom: n,\n right: o\n });\n }\n display({ sheet: t, slideY: e = 0, slideX: s = 0 }) {\n const i = this.parse(t), n = i.sheet.getAddressById(i.id, e, s);\n return n ? i.sheet.id === t.id ? n : `${i.sheet.sheetPrefix()}${n}` : \"#REF!\";\n }\n identify(t) {\n const { sheet: e, slideY: s = 0, slideX: i = 0 } = t, n = this.display({ sheet: e, slideY: s, slideX: i });\n if (n == null || n.length < 2)\n return \"#?\";\n const { formula: o, ids: a } = Rt(n, t);\n return this.ids = a, o || \"#?\";\n }\n}\nclass ge extends ht {\n parse(t) {\n const e = this.value;\n if (e.indexOf(\"!\") !== -1) {\n const [s, i] = e.split(\"!\"), n = Number(s.slice(1));\n return { sheet: t.getSheetBySheetId(n), ids: i.split(\":\") };\n }\n return { sheet: t, ids: e.split(\":\") };\n }\n evaluate({ sheet: t }) {\n const e = this.parse(t), s = e.ids.map((c) => Qt(c)), i = [];\n for (let c = 0; c < s.length; c++) {\n const f = s[c];\n if (f === \"?\")\n throw new S(\"#REF!\", \"Reference does not exist\");\n const d = e.sheet.getPointById(f);\n i.push(d);\n }\n const [n, o] = i, [a, l, h, u] = [n.y, n.x, o.y || e.sheet.numRows, o.x || e.sheet.numCols];\n return e.sheet.trim({ top: a, left: l, bottom: h, right: u });\n }\n display({ sheet: t, slideY: e = 0, slideX: s = 0 }) {\n const i = this.parse(t), n = i.ids.map((o) => Qt(o, !1)).map((o) => i.sheet.getAddressById(o, e, s) || \"#REF!\").join(\":\");\n return i.sheet.id === t.id ? n : `${i.sheet.sheetPrefix()}${n}`;\n }\n identify(t) {\n const { sheet: e, slideY: s = 0, slideX: i = 0 } = t, n = this.display({ sheet: e, slideY: s, slideX: i }), { formula: o, ids: a } = Rt(n, t);\n return this.ids = a, o || \"#?\";\n }\n}\nclass Kt {\n constructor(t, e = 0, s = [], i) {\n this.name = t, this.precedence = e, this.args = s, this.at = i;\n }\n evaluate({ sheet: t }) {\n const e = this.name.toLowerCase(), s = t.getFunctionByName(e);\n if (s == null)\n throw new S(\"#NAME?\", `Unknown function: ${e}`);\n return new s({ args: this.args, sheet: t, at: this.at }).call();\n }\n}\nconst Ws = new be(0), Xs = {\n \"+\": \"add\",\n \"-\": \"minus\",\n \"/\": \"divide\",\n \"*\": \"multiply\",\n \"^\": \"power\",\n \"&\": \"concat\",\n \"=\": \"eq\",\n \"<>\": \"ne\",\n \">\": \"gt\",\n \">=\": \"gte\",\n \"<\": \"lt\",\n \"<=\": \"lte\"\n}, js = {\n \"-\": \"uminus\"\n}, es = /* @__PURE__ */ new Set([\" \", `\n`, \"\\r\", \"\t\", \"\\f\"]), Gs = /* @__PURE__ */ new Set([...es, \"+\", \"-\", \"/\", \"*\", \"^\", \"&\", \"=\", \"<\", \">\", \")\", \",\", \"%\"]);\nclass I {\n constructor(t, e, s = 0, i, n = !0) {\n this.type = t, this.entity = e, this.precedence = s, this.at = i, this.closed = n;\n }\n length() {\n return this.type === \"VALUE\" && typeof this.entity == \"string\" ? this.entity.length + (this.closed ? 2 : 1) : new String(this.entity).length;\n }\n stringify() {\n if (this.type === \"VALUE\") {\n if (typeof this.entity == \"string\")\n return this.closed ? `\"${this.entity}\"` : `\"${this.entity}`;\n if (typeof this.entity == \"boolean\")\n return this.entity ? \"TRUE\" : \"FALSE\";\n if (this.raw != null)\n return this.raw;\n }\n return this.entity;\n }\n convert() {\n switch (this.type) {\n case \"VALUE\":\n return new be(this.entity);\n case \"ID\":\n return new ye(this.entity);\n case \"ID_RANGE\":\n return new ge(this.entity);\n case \"REF\":\n return new Qe(this.entity);\n case \"RANGE\":\n return new ts(this.entity);\n case \"INFIX_OPERATOR\": {\n const t = Xs[this.entity];\n return new Kt(t, this.precedence, void 0, this.at);\n }\n case \"PREFIX_OPERATOR\": {\n const t = js[this.entity];\n return new Kt(t, this.precedence, void 0, this.at);\n }\n case \"FUNCTION\":\n return new Kt(this.entity, 0, [], this.at);\n case \"UNREFERENCED\":\n return new Vs(this.entity);\n case \"INVALID_REF\":\n return new zs(this.entity);\n }\n }\n}\nconst Zs = (r) => es.has(r), qs = { true: !0, false: !1 }, Be = new I(\"OPEN\", \"(\"), Ks = new I(\"CLOSE\", \")\"), Js = new I(\"COMMA\", \",\"), V = \"INFIX_OPERATOR\", Qs = \"PREFIX_OPERATOR\", ti = \"POSTFIX_OPERATOR\";\nclass te {\n constructor(t, e) {\n this.tokens = [], this.foreign = !1, this.identifiedFormula = \"\", this.dependencyIds = [], this.formula = t, this.index = 0, this.tokens = [], this.at = e == null ? void 0 : e.at;\n }\n isWhiteSpace() {\n return Zs(this.formula[this.index]);\n }\n next(t = 1) {\n this.index += t;\n }\n get(t = 0) {\n return this.formula[this.index + t];\n }\n getToken(t = 0) {\n return this.tokens[this.tokens.length + t];\n }\n getTokenIndexByCharPosition(t) {\n let e = 0, s = 0;\n for (let i = 0; i < this.tokens.length; i++) {\n const n = this.tokens[i];\n if (s = e + n.length(), e <= t && t <= s)\n return [i, t === e || t === s];\n e = s;\n }\n return [-1, !1];\n }\n getTokenPositionRange(t, e = 1) {\n let s = 0, i = 0;\n for (let n = 0; n < t; n++)\n s = i, i += this.tokens[n].length();\n return [s + e, i + e];\n }\n stringify() {\n return this.tokens.map((t) => t.stringify()).join(\"\");\n }\n identify(t) {\n const e = [], s = [];\n for (const i of this.tokens)\n switch (i.type) {\n case \"VALUE\":\n typeof i.entity == \"number\" || typeof i.entity == \"boolean\" ? e.push(String(i.entity)) : e.push(i.closed ? `\"${i.entity}\"` : `\"${i.entity}`);\n break;\n case \"ID\": {\n const n = new ye(i.entity);\n e.push(n.identify(t)), s.push(...n.ids);\n break;\n }\n case \"ID_RANGE\": {\n const n = new ge(i.entity);\n e.push(n.identify(t)), s.push(...n.ids);\n break;\n }\n case \"REF\": {\n const n = new Qe(i.entity);\n e.push(n.identify(t)), s.push(...n.ids);\n break;\n }\n case \"RANGE\": {\n const n = new ts(i.entity);\n e.push(n.identify(t)), s.push(...n.ids);\n break;\n }\n default:\n e.push(i.entity);\n break;\n }\n this.identifiedFormula = e.join(\"\"), this.dependencyIds = s;\n }\n display({ sheet: t }) {\n return this.tokens.map((e) => {\n switch (e.type) {\n case \"VALUE\":\n return typeof e.entity == \"number\" || typeof e.entity == \"boolean\" ? e.raw ?? e.entity : e.closed ? `\"${e.entity}\"` : `\"${e.entity}`;\n case \"ID\":\n return new ye(e.entity).display({ sheet: t });\n case \"ID_RANGE\":\n return new ge(e.entity).display({ sheet: t });\n }\n return e.entity;\n }).join(\"\");\n }\n tokenize(t = {}) {\n var e, s;\n for (; this.index <= this.formula.length; ) {\n this.skipSpaces();\n let i = this.get();\n switch (this.next(), i) {\n case void 0:\n return;\n case \"(\":\n this.tokens.push(Be);\n continue;\n case \")\":\n this.tokens.push(Ks);\n continue;\n case \",\":\n this.tokens.push(Js);\n continue;\n case \"+\":\n this.tokens.push(new I(V, \"+\", 3, this.at));\n continue;\n case \"-\": {\n const o = (e = this.getToken(-1)) == null ? void 0 : e.type, a = (s = this.getToken(-2)) == null ? void 0 : s.type;\n o === V || o === \"SPACE\" && a === V ? this.tokens.push(new I(Qs, \"-\", 6, this.at)) : this.tokens.push(new I(V, \"-\", 3, this.at));\n continue;\n }\n case \"/\":\n this.tokens.push(new I(V, \"/\", 4, this.at));\n continue;\n case \"*\":\n this.tokens.push(new I(V, \"*\", 4, this.at));\n continue;\n case \"^\":\n this.tokens.push(new I(V, \"^\", 5, this.at));\n continue;\n case \"&\":\n this.tokens.push(new I(V, \"&\", 4, this.at));\n continue;\n case \"=\":\n this.tokens.push(new I(V, \"=\", 1, this.at));\n continue;\n case \">\":\n if (this.get() === \"=\") {\n this.next(), this.tokens.push(new I(V, \">=\", 2, this.at));\n continue;\n }\n this.tokens.push(new I(V, \">\", 2, this.at));\n continue;\n case \"<\":\n if (this.get() === \"=\") {\n this.next(), this.tokens.push(new I(V, \"<=\", 2, this.at));\n continue;\n }\n if (this.get() === \">\") {\n this.next(), this.tokens.push(new I(V, \"<>\", 1, this.at));\n continue;\n }\n this.tokens.push(new I(V, \"<\", 2, this.at));\n continue;\n case '\"': {\n const { buf: o, closed: a } = this.getString('\"');\n this.tokens.push(new I(\"VALUE\", o, 0, this.at, a));\n continue;\n }\n case \"'\": {\n const { buf: o } = this.getString(\"'\");\n i = `'${o}'`;\n break;\n }\n case \"!\": {\n this.foreign = !0;\n break;\n }\n case \"%\": {\n this.tokens.push(new I(ti, \"%\", 4, this.at));\n continue;\n }\n }\n let n = i;\n for (; ; ) {\n const o = this.get();\n if (o === \"(\") {\n this.tokens.push(new I(\"FUNCTION\", n, 0, this.at), Be), this.next();\n break;\n }\n if (o == null || Gs.has(o)) {\n if (n.length === 0)\n break;\n if (n.match(/^[+-]?(\\d*[.])?\\d+$/)) {\n const a = new I(\"VALUE\", parseFloat(n), 0, this.at);\n a.raw = n, this.tokens.push(a);\n } else {\n const a = qs[n.toLowerCase()];\n a != null ? this.tokens.push(new I(\"VALUE\", a, 0, this.at)) : n.startsWith(\"#\") ? n.indexOf(\"#REF!\") !== -1 ? this.tokens.push(new I(\"UNREFERENCED\", n, 0, this.at)) : n.indexOf(\":\") !== -1 ? this.tokens.push(new I(\"ID_RANGE\", ei(n, t), 0, this.at)) : this.tokens.push(new I(\"ID\", n, 0, this.at)) : n.indexOf(\":\") !== -1 ? this.tokens.push(new I(\"RANGE\", n, 0, this.at)) : !n.startsWith(\"'\") && n.indexOf(\"!\") === -1 && n.includes(\".\") && /[a-zA-Z]/.test(n) || isNaN(n[n.length - 1]) ? this.tokens.push(new I(\"INVALID_REF\", n, 0, this.at)) : this.tokens.push(new I(\"REF\", n, 0, this.at));\n }\n break;\n }\n n += o, this.next();\n }\n }\n }\n skipSpaces() {\n let t = \"\";\n for (; this.isWhiteSpace(); )\n t += this.formula[this.index++];\n t !== \"\" && this.tokens.push(new I(\"SPACE\", t, 0, this.at));\n }\n getString(t = '\"') {\n let e = \"\";\n for (; ; ) {\n const s = this.get();\n if (this.next(), s == null)\n return { buf: e, closed: !1 };\n if (s === t)\n if (t === '\"' && this.get() === t) {\n e += t, this.next();\n continue;\n } else if (t === \"'\" && this.get() === t) {\n e += s;\n continue;\n } else\n return { buf: e, closed: !0 };\n else\n e += s;\n }\n }\n}\nconst ei = (r, t) => {\n const [e, s] = r.split(\"!\"), i = s.split(\":\"), n = /* @__PURE__ */ new Set();\n return Object.keys(t).forEach((o) => {\n const a = t[o], l = new RegExp(`(\\\\$)?#${o}\\\\b(\\\\$)?`);\n for (let h = 0; h < i.length; h++) {\n if (n.has(h))\n continue;\n const u = i[h], c = u.replace(l, (f, d, p) => `${d || \"\"}#${a}${p || \"\"}`);\n c !== u && (i[h] = c, n.add(h));\n }\n }), `${e}!${i.join(\":\")}`;\n};\nclass ss {\n constructor(t) {\n this.index = 0, this.depth = 0, this.tokens = t;\n }\n build() {\n const { expr: t } = this.parse(!1);\n return t;\n }\n parse(t) {\n const e = [];\n let s;\n const i = (n = !1) => {\n if (s) {\n const o = e.pop();\n s.args.push(o);\n }\n return { hasNext: n, expr: e.shift() };\n };\n for (; this.tokens.length > this.index; ) {\n const n = this.tokens[this.index++];\n if (n.type !== \"SPACE\") {\n if (n.type === \"COMMA\") {\n if (!t)\n throw new S(\"#ERROR!\", \"Invalid comma\");\n return i(!0);\n } else if (n.type === \"VALUE\" || n.type === \"ID\" || n.type === \"ID_RANGE\" || n.type === \"REF\" || n.type === \"RANGE\" || n.type === \"UNREFERENCED\" || n.type === \"INVALID_REF\") {\n const o = n.convert();\n e.push(o);\n } else if (n.type === \"POSTFIX_OPERATOR\" && n.entity === \"%\") {\n const o = e.pop();\n if (!o)\n throw new S(\"#ERROR!\", \"Missing expression before %\");\n const a = new Kt(\"divide\", 4, [o, new be(100)]);\n e.push(a);\n } else if (n.type === \"FUNCTION\") {\n this.index++, this.depth++;\n const o = n.convert();\n for (e.push(o); ; ) {\n const { expr: a, hasNext: l } = this.parse(!0);\n if (a && o.args.push(a), !l)\n break;\n }\n } else if (n.type === \"OPEN\") {\n this.depth++;\n const { expr: o } = this.parse(!1);\n e.push(o);\n } else if (n.type === \"CLOSE\") {\n if (this.depth-- === 0)\n throw new S(\"#ERROR!\", \"Unexpected end paren\");\n return i();\n } else if (n.type === \"INFIX_OPERATOR\") {\n const o = n.convert();\n let a = e.pop();\n if (a == null)\n if (o.name === \"minus\" || o.name === \"add\")\n a = Ws;\n else\n throw new S(\"#ERROR!\", \"Missing left expression\");\n if (s == null)\n o.args.push(a), e.unshift(o);\n else if (o.precedence > s.precedence)\n o.args.push(a), s.args.push(o), e.unshift(s);\n else {\n const l = e.shift();\n o.args.push(l), s.args.push(a), e.unshift(o);\n }\n s = o;\n } else if (n.type === \"PREFIX_OPERATOR\") {\n const o = n.convert();\n s ? s.args.push(o) : e.unshift(o), s = o;\n }\n }\n }\n return i();\n }\n}\nconst xn = ss, bn = (r) => (r.charAt(0) === \"'\" && (r = r.slice(1)), r.charAt(r.length - 1) === \"'\" && (r = r.slice(0, -1)), r);\nfunction si(r) {\n let t, e = [];\n if (r.startsWith(\"'\")) {\n let s = 1, i = \"\";\n for (; s < r.length; ) {\n const o = r[s], a = r[s + 1];\n if (o === \"'\")\n if (a === \"'\")\n i += \"'\", s += 2;\n else if (a === \"!\") {\n s += 2;\n break;\n } else\n return { sheetName: void 0, addresses: [] };\n else\n i += o, s++;\n }\n t = i, e = r.slice(s).trim().split(\":\");\n } else {\n const s = r.indexOf(\"!\");\n s !== -1 ? (t = r.slice(0, s), e = r.slice(s + 1).trim().split(\":\")) : e = r.trim().split(\":\");\n }\n return { sheetName: t, addresses: e };\n}\nconst Rt = (r, { sheet: t, operation: e, dependency: s }) => {\n const { sheetName: i, addresses: n } = si(r), o = [];\n if (i && (t = t.getSheetBySheetName(i), t == null))\n return { sheet: t, sheetName: i, addresses: n, ids: o };\n if (n.length === 0)\n return { sheet: t, sheetName: i, addresses: n, ids: o };\n const a = [];\n for (let h = 0; h < n.length; h++) {\n const u = n[h], { y: c, x: f, absX: d, absY: p } = T(u);\n let m = t.getId({ y: c, x: f });\n if (m === s && (e === \"removeRows\" ? m = t.getId({ y: c - 1, x: f }) : e === \"removeCols\" && (m = t.getId({ y: c, x: f - 1 }))), m == null) {\n a.push(Ke(u, !!d, !!p) || \"?\");\n continue;\n }\n o.push(m), a.push(`${d ? \"$\" : \"\"}#${m}${p ? \"$\" : \"\"}`);\n }\n let l = `#${t.id}!${a.join(\":\")}`;\n return {\n sheet: t,\n sheetName: i,\n addresses: n,\n ids: o,\n formula: l\n };\n}, Bt = (r, t) => t.length === 0 ? r : Object.fromEntries(\n Object.entries(r).filter(([e]) => !t.includes(e))\n), Lt = (r, t, e = {}) => {\n r.systems[t] == null && (r.systems[t] = {});\n const s = r.systems[t];\n for (const i of Object.keys(e))\n s[i] ?? (s[i] = e[i]);\n return s;\n}, ee = (r, t, e) => {\n r.asyncCaches || (r.asyncCaches = {}), r.asyncCaches[t] = e;\n}, st = () => !0, is = (r, t, e = {}) => {\n const s = T(t);\n return r.getCell(s, e);\n}, ii = (r, { area: t, resolution: e = \"RESOLVED\", raise: s = !1, filter: i = st, asScalar: n = !1 } = {}) => r.__raw__._toValueMatrix({ area: t, resolution: e, raise: s, filter: i, asScalar: n }), Sn = (r, {\n area: t,\n resolution: e = \"RESOLVED\",\n raise: s = !1,\n filter: i = st,\n asScalar: n = !1,\n frameBudgetMs: o,\n onProgress: a,\n yieldControl: l\n} = {}) => r.__raw__._toValueMatrixAsync({\n area: t,\n resolution: e,\n raise: s,\n filter: i,\n asScalar: n,\n frameBudgetMs: o,\n onProgress: a,\n yieldControl: l\n}), _n = (r, {\n resolution: t = \"RESOLVED\",\n raise: e = !1,\n filter: s = st,\n addresses: i,\n area: n,\n asScalar: o = !1\n} = {}) => {\n const a = {};\n if (i) {\n for (const f of i) {\n const d = T(f), p = is(r, f, { resolution: t, raise: e }) ?? {};\n if (s(p)) {\n let m = p.value;\n o && (m = r.getPolicy(d).toScalar({ value: p.value, cell: p, sheet: r.__raw__, point: d })), a[f] = m;\n }\n }\n return a;\n }\n const { top: l, left: h, bottom: u, right: c } = n ?? r.area;\n for (let f = l; f <= u; f++)\n for (let d = h; d <= c; d++) {\n const p = r.getCell({ y: f, x: d }, { resolution: t, raise: e }) ?? {};\n if (s(p)) {\n let m = p.value;\n o && (m = r.getPolicy({ y: f, x: d }).toScalar({ value: p.value, cell: p, sheet: r.__raw__, point: { y: f, x: d } })), a[M({ y: f, x: d })] = m;\n }\n }\n return a;\n}, Rn = (r, { resolution: t = \"RESOLVED\", raise: e = !1, filter: s = st, rows: i, area: n, asScalar: o = !1 } = {}) => {\n const a = [], { top: l, left: h, bottom: u, right: c } = n ?? r.area, f = i ?? Array.from({ length: r.numRows }, (d, p) => l + p);\n for (const d of f) {\n const p = {};\n a.push(p);\n for (let m = h; m <= c; m++) {\n const y = r.getCell({ y: d, x: m }, { resolution: t, raise: e }) ?? {};\n if (s(y)) {\n let g = y.value;\n o && (g = r.getPolicy({ y: d, x: m }).toScalar({ value: y.value, cell: y, sheet: r.__raw__, point: { y: d, x: m } })), p[G(m)] = g;\n }\n }\n }\n return a;\n}, En = (r, { resolution: t = \"RESOLVED\", raise: e = !1, filter: s = st, cols: i, area: n, asScalar: o = !1 } = {}) => {\n const a = [], { top: l, left: h, bottom: u, right: c } = n ?? r.area, f = i ? i.map((d) => typeof d == \"string\" ? Ht(d) : d) : Array.from({ length: r.numCols }, (d, p) => h + p);\n for (const d of f) {\n const p = {};\n a.push(p);\n for (let m = l; m <= u; m++) {\n const y = r.getCell({ y: m, x: d }, { resolution: t, raise: e }) ?? {};\n if (s(y)) {\n let g = y.value;\n o && (g = r.getPolicy({ y: m, x: d }).toScalar({ value: y.value, cell: y, sheet: r.__raw__, point: { y: m, x: d } })), p[bt(m)] = g;\n }\n }\n }\n return a;\n}, An = (r, { area: t, resolution: e = \"RESOLVED\", raise: s = !1, filter: i = st, ignoreFields: n = [] } = {}) => {\n const { top: o, left: a, bottom: l, right: h } = t ?? r.area, u = Jt(l - o + 1, h - a + 1);\n for (let c = o; c <= l; c++)\n for (let f = a; f <= h; f++) {\n const d = r.getCell({ y: c, x: f }, { resolution: e, raise: s }) ?? {};\n if (i(d)) {\n const p = Bt(d, n);\n u[c - o][f - a] = p;\n }\n }\n return u;\n}, In = (r, {\n resolution: t = \"RESOLVED\",\n raise: e = !1,\n filter: s = st,\n addresses: i,\n area: n,\n ignoreFields: o = []\n} = {}) => {\n const a = {};\n if (i) {\n for (const f of i) {\n const d = is(r, f, { resolution: t, raise: e }) ?? {};\n s(d) && (a[f] = Bt(d, o));\n }\n return a;\n }\n const { top: l, left: h, bottom: u, right: c } = n ?? r.area;\n for (let f = l; f <= u; f++)\n for (let d = h; d <= c; d++) {\n const p = r.getCell({ y: f, x: d }, { resolution: t, raise: e }) ?? {};\n s(p) && (a[M({ y: f, x: d })] = Bt(p, o));\n }\n return a;\n}, Cn = (r, { resolution: t = \"RESOLVED\", raise: e = !1, filter: s = st, rows: i, area: n, ignoreFields: o = [] } = {}) => {\n const a = [], { top: l, left: h, bottom: u, right: c } = n ?? r.area, f = i ?? Array.from({ length: r.numRows }, (d, p) => l + p);\n for (const d of f) {\n const p = {};\n a.push(p);\n for (let m = h; m <= c; m++) {\n const y = r.getCell({ y: d, x: m }, { resolution: t, raise: e }) ?? {};\n s(y) && (p[G(m)] = Bt(y, o));\n }\n }\n return a;\n}, rs = (r) => `'${r.replace(/'/g, \"''\")}'`, ri = (r) => r ? `${rs(r)}!` : \"\", Tn = (r, { resolution: t = \"RESOLVED\", raise: e = !1, filter: s = st, cols: i, area: n, ignoreFields: o = [] } = {}) => {\n const a = [], { top: l, left: h, bottom: u, right: c } = n ?? r.area, f = i ? i.map((d) => typeof d == \"string\" ? Ht(d) : d) : Array.from({ length: r.numCols }, (d, p) => h + p);\n for (const d of f) {\n const p = {};\n a.push(p);\n for (let m = l; m <= u; m++) {\n const y = r.getCell({ y: m, x: d }, { resolution: t, raise: e }) ?? {};\n s(y) && (p[bt(m)] = Bt(y, o));\n }\n }\n return a;\n}, ne = 1, oe = 2, Se = 4, _e = 8, Re = 16, Ee = 32, Ut = 64, Vt = 128, St = 256, ae = 512, se = 8192, ce = 1024, Ae = 16384, Ie = 32768, Ce = 65536, le = 131072, ni = 0, ns = Ut | Vt, xt = St | ae | se | ce | Ae | le, os = Se | _e, as = Re | Ee, cs = os | as, ls = ne | oe, hs = xt | ls | cs | ns, us = Ce | Ie | le, oi = 524288, ai = hs | us, F = (r, t) => r === void 0 ? !1 : (r & t) === t, ci = (r) => {\n const t = [];\n return F(r, ne) && t.push(\"RemoveRow\"), F(r, oe) && t.push(\"RemoveCol\"), F(r, Se) && t.push(\"InsertRowAbove\"), F(r, _e) && t.push(\"InsertRowBelow\"), F(r, Re) && t.push(\"InsertColLeft\"), F(r, Ee) && t.push(\"InsertColRight\"), F(r, Ut) && t.push(\"MoveFrom\"), F(r, Vt) && t.push(\"MoveTo\"), F(r, St) && t.push(\"Write\"), F(r, ae) && t.push(\"Style\"), F(r, ce) && t.push(\"Resize\"), F(r, Ae) && t.push(\"SetPolicy\"), F(r, le) && t.push(\"SetLabel\"), F(r, Ie) && t.push(\"Sort\"), F(r, Ce) && t.push(\"Filter\"), t;\n}, Mn = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n Add: cs,\n ColumnMenu: us,\n Copy: se,\n Delete: ls,\n Filter: Ce,\n InsertCols: as,\n InsertColsLeft: Re,\n InsertColsRight: Ee,\n InsertRows: os,\n InsertRowsAbove: Se,\n InsertRowsBelow: _e,\n Move: ns,\n MoveFrom: Ut,\n MoveTo: Vt,\n NoOperation: ni,\n ReadOnly: hs,\n RemoveCols: oe,\n RemoveRows: ne,\n Resize: ce,\n RowMenu: oi,\n SetLabel: le,\n SetPolicy: Ae,\n Sort: Ie,\n Style: ae,\n Update: xt,\n ViewOnly: ai,\n Write: St,\n debugOperations: ci,\n hasOperation: F\n}, Symbol.toStringTag, { value: \"Module\" }));\nz.extend(Is);\nz.extend(As);\nconst ds = /* @__PURE__ */ new Set([\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"]), li = /* @__PURE__ */ new Set([...ds, \"Z\", \"z\"]), hi = /* @__PURE__ */ new Set([\"J\", \"F\", \"M\", \"A\", \"S\", \"O\", \"N\", \"D\", ...ds]), ui = /* @__PURE__ */ new Set([\"N\", \"B\", \"R\", \"Y\", \"N\", \"L\", \"G\", \"P\", \"T\", \"V\", \"C\", ...li]), di = /* @__PURE__ */ new Set([\n \"jan\",\n \"feb\",\n \"mar\",\n \"apr\",\n \"may\",\n \"jun\",\n \"jul\",\n \"aug\",\n \"sep\",\n \"oct\",\n \"nov\",\n \"dec\",\n \"january\",\n \"february\",\n \"march\",\n \"april\",\n \"june\",\n \"july\",\n \"august\",\n \"september\",\n \"october\",\n \"november\",\n \"december\",\n \"mon\",\n \"tue\",\n \"wed\",\n \"thu\",\n \"fri\",\n \"sat\",\n \"sun\",\n \"monday\",\n \"tuesday\",\n \"wednesday\",\n \"thursday\",\n \"friday\",\n \"saturday\",\n \"sunday\",\n \"am\",\n \"pm\",\n \"utc\",\n \"gmt\",\n \"est\",\n \"cst\",\n \"mst\",\n \"pst\",\n \"jst\",\n \"cet\",\n \"eet\",\n \"ist\",\n \"aest\",\n \"edt\",\n \"cdt\",\n \"mdt\",\n \"pdt\",\n \"bst\",\n \"hst\",\n \"akst\",\n \"akdt\",\n \"nzst\",\n \"nzdt\",\n \"t\",\n \"z\"\n]);\nfunction fs(r) {\n const t = r[0];\n if (t == null || !hi.has(t.toUpperCase()) || !ui.has(r[r.length - 1].toUpperCase()) || r.match(/[=*&#@!?[\\]{}\"'()|%\\\\<>~+\\r\\n]/))\n return;\n const e = r.split(/[\\s,/\\-:.]+/).filter(Boolean);\n for (const i of e)\n if (/^[a-zA-Z]+$/.test(i) && !di.has(i.toLowerCase()))\n return;\n let s = \"UTC\";\n try {\n s = Intl.DateTimeFormat().resolvedOptions().timeZone;\n } catch {\n }\n try {\n return z.tz(r, s).toDate();\n } catch {\n }\n}\nconst fi = { true: !0, false: !1 };\nclass Te {\n constructor(t) {\n this.priority = 0, this.datetimeFormat = \"YYYY-MM-DD HH:mm:ss\", this.dateFormat = \"YYYY-MM-DD\", this.timeFormat = \"HH:mm:ss\", this.decimalPrecision = 14, this.deserializeFunctions = [], this.priority = (t == null ? void 0 : t.priority) ?? 1, this.applyMixins(t == null ? void 0 : t.mixins), this.registerDeserializeFunctions();\n }\n registerDeserializeFunctions() {\n this.deserializeFunctions = [\n ...this.deserializeFirst ? [this.deserializeFirst.bind(this)] : [],\n this.deserializeNumber.bind(this),\n this.deserializeTime.bind(this),\n this.deserializeDate.bind(this),\n this.deserializeBool.bind(this),\n this.deserializeAny.bind(this)\n ];\n }\n applyMixins(t) {\n if (t == null)\n return;\n const e = Object.getPrototypeOf(this);\n for (const s of t)\n for (const i in s)\n e !== Te.prototype && Object.prototype.hasOwnProperty.call(e, i) || (this[i] = s[i]);\n }\n // --- RENDER ---\n render(t) {\n let { value: e, cell: s } = t;\n const { sheet: i, point: n } = t;\n s == null && (s = i.getCell(n, { resolution: \"EVALUATED\", raise: !0 }) ?? {}, e = s.value);\n let o;\n if (L.is(e))\n o = \"\";\n else if (e == null)\n o = this.renderNull({ ...t, value: e, cell: s });\n else\n switch (typeof e) {\n case \"object\":\n if (e instanceof Date)\n o = this.renderDate({ ...t, value: e, cell: s });\n else if (R.is(e))\n o = this.renderTime({ value: R.ensure(e), cell: s, sheet: i, point: n });\n else if (Array.isArray(e))\n o = this.renderArray({ ...t, value: e, cell: s });\n else {\n if (S.is(e))\n throw e;\n nt(e) ? o = this.renderSheet({ ...t, value: e, cell: s }) : o = this.renderObject({ ...t, value: e, cell: s });\n }\n break;\n case \"string\":\n o = this.renderString({ ...t, value: e, cell: s });\n break;\n case \"number\":\n o = this.renderNumber({ ...t, value: e, cell: s });\n break;\n case \"boolean\":\n o = this.renderBool({ ...t, value: e, cell: s });\n break;\n case \"function\":\n o = e();\n break;\n default:\n o = \"\";\n }\n return this.renderCallback ? this.renderCallback(o, { ...t, value: e, cell: s }) : o;\n }\n renderString({ value: t }) {\n return t;\n }\n renderBool({ value: t }) {\n return t ? \"TRUE\" : \"FALSE\";\n }\n renderNumber({ value: t }) {\n return isNaN(t) ? \"NaN\" : parseFloat(t.toPrecision(this.decimalPrecision));\n }\n renderDate({ value: t }) {\n return t.getHours() + t.getMinutes() + t.getSeconds() === 0 ? z(t).format(this.dateFormat) : z(t).format(this.datetimeFormat);\n }\n renderTime({ value: t }) {\n return t.stringify(this.timeFormat);\n }\n renderArray(t) {\n let { value: e, cell: s } = t;\n return e = e == null ? void 0 : e[0], Array.isArray(e) && (e = e[0]), this.render({ ...t, value: e, cell: s });\n }\n renderObject({ value: t }) {\n return JSON.stringify(t);\n }\n renderNull(t) {\n return \"\";\n }\n renderSheet({ value: t, ...e }) {\n const s = e.sheet.getId(e.point), i = t.__raw__.strip({ raise: !0, at: s });\n return this.render({ ...e, value: i });\n }\n renderRowHeaderLabel(t) {\n return null;\n }\n renderColHeaderLabel(t) {\n return null;\n }\n // --- TO SCALAR ---\n toScalar(t) {\n const { value: e, cell: s, sheet: i, point: n } = t;\n if (!L.is(e)) {\n if (e == null)\n return this.toScalarNull({ value: e, cell: s, sheet: i, point: n });\n switch (typeof e) {\n case \"string\":\n return this.toScalarString({ value: e, cell: s, sheet: i, point: n });\n case \"number\":\n return this.toScalarNumber({ value: e, cell: s, sheet: i, point: n });\n case \"boolean\":\n return this.toScalarBool({ value: e, cell: s, sheet: i, point: n });\n case \"object\":\n if (e instanceof Date)\n return this.toScalarDate({ value: e, cell: s, sheet: i, point: n });\n if (R.is(e))\n return this.toScalarTime({ value: R.ensure(e), cell: s, sheet: i, point: n });\n if (Array.isArray(e))\n return this.toScalarArray({ value: e, cell: s, sheet: i, point: n });\n if (S.is(e))\n throw e;\n return;\n default:\n return;\n }\n }\n }\n toScalarString({ value: t }) {\n return t;\n }\n toScalarNumber({ value: t }) {\n return t == null ? void 0 : t.toPrecision(this.decimalPrecision);\n }\n toScalarBool({ value: t }) {\n return t;\n }\n toScalarDate({ value: t }) {\n return t.getHours() + t.getMinutes() + t.getSeconds() === 0 ? z(t).format(this.dateFormat) : z(t).format(this.datetimeFormat);\n }\n toScalarTime({ value: t }) {\n return t.stringify(this.timeFormat);\n }\n toScalarArray({ value: t, cell: e, sheet: s, point: i }) {\n let n = t == null ? void 0 : t[0];\n return Array.isArray(n) && (n = n[0]), this.toScalar({ value: n, cell: e, sheet: s, point: i });\n }\n toScalarNull(t) {\n return null;\n }\n // --- SERIALIZE ---\n serialize({ value: t, cell: e, sheet: s, point: i }) {\n return t === void 0 && (t = e == null ? void 0 : e.value), L.is(t) ? \"\" : t instanceof Date ? this.serializeDate({ value: t, cell: e, sheet: s, point: i }) : R.is(t) ? this.serializeTime({ value: R.ensure(t), cell: e, sheet: s, point: i }) : t == null ? this.serializeNull({ cell: e, sheet: s, point: i }) : Array.isArray(t) ? this.serializeArray({ value: t, cell: e, sheet: s, point: i }) : t instanceof S ? this.serializeFormulaError({ value: t, cell: e, sheet: s, point: i }) : t instanceof Error ? this.serializeError({ value: t, cell: e, sheet: s, point: i }) : t.toString();\n }\n serializeString({ value: t }) {\n return t;\n }\n serializeBool({ value: t }) {\n return t ? \"true\" : \"false\";\n }\n serializeNumber({ value: t }) {\n return isNaN(t) ? \"NaN\" : parseFloat(t.toPrecision(this.decimalPrecision)).toString();\n }\n serializeDate({ value: t }) {\n return t.getHours() + t.getMinutes() + t.getSeconds() === 0 ? z(t).format(this.dateFormat) : z(t).format(this.datetimeFormat);\n }\n serializeTime({ value: t }) {\n return t.stringify(this.timeFormat);\n }\n serializeArray(t) {\n let { value: e } = t;\n return e = e == null ? void 0 : e[0], Array.isArray(e) && (e = e[0]), this.serialize({ ...t, value: e });\n }\n serializeNull(t) {\n return \"\";\n }\n serializeFormulaError({ value: t }) {\n return t.code;\n }\n serializeError(t) {\n return \"\";\n }\n serializeForClipboard(t) {\n const { point: e, sheet: s } = t;\n return s.getSerializedValue({ point: e }) ?? \"\";\n }\n // --- DESERIALIZE ---\n deserializeValue(t, e) {\n try {\n const s = typeof t != \"string\" ? this.deserializeRaw(t, e) : this.deserialize(t, e);\n return this.deserializeCallback ? this.deserializeCallback(s, e) : s;\n } catch (s) {\n return { ...e, value: String(s) };\n }\n }\n deserializeRaw(t, e) {\n return R.is(t) && (t = R.ensure(t)), { ...e, value: t };\n }\n deserialize(t, e) {\n if (t[0] === \"'\")\n return { ...e, value: t };\n for (let s = 0; s < this.deserializeFunctions.length; s++) {\n const i = this.deserializeFunctions[s](t, e);\n if ((i == null ? void 0 : i.value) !== void 0)\n return { ...e, ...i };\n }\n return t === \"\" ? { ...e, value: void 0 } : { ...e, value: t };\n }\n deserializeAny(t, e) {\n return t == null || t === \"\" ? { value: void 0 } : { value: t };\n }\n deserializeBool(t, e) {\n return { value: fi[t.toLowerCase()] };\n }\n deserializeNumber(t, e) {\n return t.match(/^-?[\\d.]+$/) != null && t.match(/\\.$/) == null && (t.match(/\\./g) || []).length <= 1 ? { value: parseFloat(t) } : { value: void 0 };\n }\n deserializeTime(t, e) {\n return t.length < 3 || isNaN(t[t.length - 1]) ? { value: void 0 } : { value: R.parse(t) };\n }\n deserializeDate(t, e) {\n return { value: fs(t) };\n }\n // --- SELECT ---\n getSelectFallback(t) {\n return { value: null };\n }\n getSelectOptions() {\n return [];\n }\n select(t) {\n const { next: e, sheet: s, point: i } = t, n = this.getSelectOptions();\n return n.length === 0 || n.some((a) => a.value === (e == null ? void 0 : e.value)) ? e : { ...e, ...this.getSelectFallback({ sheet: s, point: i, value: e == null ? void 0 : e.value }) };\n }\n}\nconst Nt = \"default\", pi = new Te({ priority: 0 }), tt = (r) => r == null ? \"\" : String(r);\nfunction Et(r) {\n return typeof r == \"number\" ? \"number\" : r instanceof Date ? \"date\" : R.is(r) ? \"time\" : typeof r == \"boolean\" ? \"boolean\" : \"string\";\n}\nfunction At(r, t) {\n switch (t) {\n case \"number\": {\n let e = r.replace(/[,_]/g, \"\"), s = 1;\n e.endsWith(\"%\") && (e = e.slice(0, -1), s = 0.01);\n const i = Number(e);\n return { ok: !isNaN(i), num: i * s };\n }\n case \"date\": {\n const e = fs(r);\n return e ? { ok: !0, num: e.getTime() } : { ok: !1, num: NaN };\n }\n case \"time\": {\n const e = R.parse(r);\n return e ? { ok: !0, num: e.toMilliseconds() } : { ok: !1, num: NaN };\n }\n case \"boolean\": {\n const e = r.toLowerCase();\n return e === \"true\" ? { ok: !0, num: 1 } : e === \"false\" ? { ok: !0, num: 0 } : { ok: !1, num: NaN };\n }\n default:\n return { ok: !1, num: NaN };\n }\n}\nfunction It(r, t) {\n switch (t) {\n case \"number\":\n return r;\n case \"date\":\n return r.getTime();\n case \"time\":\n return R.ensure(r).toMilliseconds();\n case \"boolean\":\n return r ? 1 : 0;\n default:\n return NaN;\n }\n}\nconst mi = (r, t) => {\n const e = Et(t);\n if (e === \"string\") {\n const i = tt(t);\n return r.value.some((n) => i === n);\n }\n const s = It(t, e);\n return r.value.some((i) => {\n const n = At(i, e);\n return n.ok && s === n.num;\n });\n}, yi = (r, t) => {\n const e = Et(t);\n if (e === \"string\") {\n const i = tt(t);\n return !r.value.some((n) => i === n);\n }\n const s = It(t, e);\n return !r.value.some((i) => {\n const n = At(i, e);\n return n.ok && s === n.num;\n });\n}, gi = (r, t) => {\n const e = Et(t);\n if (e === \"string\")\n return tt(t) > r.value[0];\n const s = It(t, e), i = At(r.value[0], e);\n return i.ok && s > i.num;\n}, wi = (r, t) => {\n const e = Et(t);\n if (e === \"string\")\n return tt(t) >= r.value[0];\n const s = It(t, e), i = At(r.value[0], e);\n return i.ok && s >= i.num;\n}, xi = (r, t) => {\n const e = Et(t);\n if (e === \"string\")\n return tt(t) < r.value[0];\n const s = It(t, e), i = At(r.value[0], e);\n return i.ok && s < i.num;\n}, bi = (r, t) => {\n const e = Et(t);\n if (e === \"string\")\n return tt(t) <= r.value[0];\n const s = It(t, e), i = At(r.value[0], e);\n return i.ok && s <= i.num;\n}, Si = (r, t) => t == null || tt(t) === \"\", _i = (r, t) => t != null && tt(t) !== \"\", Ri = (r, t) => {\n const e = tt(t).toLowerCase();\n return r.value.some((s) => e.includes(s.toLowerCase()));\n}, Ei = (r, t) => {\n const e = tt(t).toLowerCase();\n return !r.value.some((s) => e.includes(s.toLowerCase()));\n}, Ai = {\n eq: mi,\n ne: yi,\n gt: gi,\n gte: wi,\n lt: xi,\n lte: bi,\n blank: Si,\n nonblank: _i,\n includes: Ri,\n excludes: Ei\n};\nfunction Ue(r, t) {\n const e = Ai[r.method];\n return e ? e(r, t) : !0;\n}\nfunction Ii(r, t) {\n const e = r.mode ?? \"or\";\n return r.conditions.length === 0 ? !0 : e === \"and\" ? r.conditions.every((s) => Ue(s, t)) : r.conditions.some((s) => Ue(s, t));\n}\nclass wt {\n constructor(t) {\n this.map = {}, this.dependentIds = /* @__PURE__ */ new Set(), this.sheet = t;\n }\n collectDependents(...t) {\n t.forEach((e) => {\n var s, i;\n (i = (s = this.sheet.registry.systems[e]) == null ? void 0 : s.dependents) == null || i.forEach((n) => {\n this.dependentIds.add(n);\n });\n });\n }\n /**\n * Compare two idMatrix snapshots (`before` and `after`) and populate\n * `this.map` and collect dependents for every position where the occupying\n * cell ID changed. Works for any rearrangement (sort, move, etc.).\n */\n buildMap(t, e) {\n for (let s = 0; s < t.length; s++) {\n const i = t[s], n = e[s];\n i != null && n != null && i !== n && (this.collectDependents(i, n), this.map[i] = n);\n }\n }\n resolveDependents(t) {\n this.sheet.clearAddressCaches();\n const e = {};\n return this.dependentIds.forEach((s) => {\n const i = this.sheet.registry.data[s];\n i != null && (e[s] = { ...i }, this.sheet.clearDependencies(s), i.value = this.sheet.processFormula(i.value, {\n dependency: s,\n idMap: this.map,\n operation: t\n }));\n }), e;\n }\n}\nconst qt = (r) => {\n switch (r) {\n case \"INSERT_ROWS\":\n case \"INSERT_COLS\":\n case \"REMOVE_ROWS\":\n case \"REMOVE_COLS\":\n case \"MOVE\":\n case \"SORT_ROWS\":\n return !0;\n }\n return !1;\n}, ue = () => !0;\nclass Y {\n constructor({ limits: t = {}, name: e, registry: s = Ne({}), eager: i = !1 }) {\n this.__gsType = \"Sheet\", this._stripped = Dt, this.area = { top: 0, left: 0, bottom: 0, right: 0 }, this.id = 0, this.name = \"\", this.eager = !1, this.prevName = \"\", this.status = 0, this.idsToBeIdentified = [], this.totalWidth = 0, this.totalHeight = 0, this.fullHeight = 0, this.defaultColWidth = he, this.defaultRowHeight = rt, this.version = 0, this.addressCaches = /* @__PURE__ */ new Map(), this._addressCacheWatermark = 0, this.lastChangedAddresses = [], this._initCells = null, this._hasExplicitCells = !1, this._initMatrices = null, this._matrixBases = [], this._matrixByBase = [], this._colLetters = [], this._rowHeightOverrides = /* @__PURE__ */ new Map(), this._filteredRows = /* @__PURE__ */ new Set(), this.idMatrix = [], this.changedTime = Date.now(), this.eager = i, this._limits = {\n minRows: t.minRows ?? 1,\n maxRows: t.maxRows ?? -1,\n minCols: t.minCols ?? 1,\n maxCols: t.maxCols ?? -1\n }, this.name = e || \"\", this.prevName = this.name, this.registry = s;\n }\n get minNumRows() {\n return this._limits.minRows;\n }\n get maxNumRows() {\n return this._limits.maxRows;\n }\n get minNumCols() {\n return this._limits.minCols;\n }\n get maxNumCols() {\n return this._limits.maxCols;\n }\n static is(t) {\n return (t == null ? void 0 : t.__gsType) === \"Sheet\";\n }\n toString() {\n return `Sheet(name=${rs(this.name)}, top=${this.top}, left=${this.left}, bottom=${this.bottom}, right=${this.right})`;\n }\n get headerHeight() {\n var t;\n return ((t = this.getCell({ y: 0, x: 0 }, { resolution: \"SYSTEM\" })) == null ? void 0 : t.height) || $e;\n }\n setHeaderHeight(t, e = !0) {\n return this.update({\n diff: { 0: { height: t } },\n partial: !0,\n historicize: e\n });\n }\n get headerWidth() {\n var t;\n return ((t = this.getCell({ y: 0, x: 0 }, { resolution: \"SYSTEM\" })) == null ? void 0 : t.width) || Le;\n }\n setHeaderWidth(t, e = !0) {\n return this.update({\n diff: { 0: { width: t } },\n partial: !0,\n historicize: e\n });\n }\n /**\n * Get the raw (mutable) cell data for a point. Unlike getCell, this returns the actual registry.data reference.\n * @internal\n */\n _pointToRawCell({ y: t, x: e }) {\n const s = this.getId({ y: t, x: e });\n if (s != null)\n return this._ensureCellPopulated(t, e, s), this.registry.data[s];\n }\n isRowFiltered(t) {\n var e;\n return !!((e = this._pointToRawCell({ y: t, x: 0 })) != null && e.filtered);\n }\n hasActiveFilters() {\n const t = this.numCols;\n for (let e = 1; e <= t; e++) {\n const s = this._pointToRawCell({ y: 0, x: e });\n if (s != null && s.filter && s.filter.conditions.length > 0)\n return !0;\n }\n return !1;\n }\n /**\n * Returns true if any data cell in this sheet currently holds a Pending value\n * (i.e. an async formula that hasn't resolved yet).\n */\n hasPendingCells() {\n for (const t of Object.keys(this.registry.data)) {\n const e = this.registry.data[t];\n if (L.is(e == null ? void 0 : e.value))\n return !0;\n }\n return !1;\n }\n /**\n * Returns a Promise that resolves when all in-flight async formula computations\n * have completed and no data cells hold Pending values.\n * If nothing is pending, resolves immediately.\n * Useful for waiting before sort/filter so that cell values are fully resolved.\n */\n waitForPending() {\n const t = this.registry.asyncPending;\n if (t.size > 0) {\n const e = Array.from(t.values()).map((s) => s.promise);\n return Promise.all(e).then(() => this.waitForPending());\n }\n return this.hasPendingCells() ? new Promise((e) => {\n const s = () => {\n if (this.registry.asyncPending.size > 0) {\n const i = Array.from(this.registry.asyncPending.values()).map((n) => n.promise);\n Promise.all(i).then(s);\n } else this.hasPendingCells() ? setTimeout(s, 50) : e();\n };\n s();\n }) : Promise.resolve();\n }\n /**\n * Returns the addresses that were changed in the most recent `_update()` call.\n * Useful inside `onChange` to know which cells were modified.\n */\n getLastChangedAddresses() {\n return this.lastChangedAddresses;\n }\n /**\n * Eagerly fire every async formula cell in this sheet, ignoring the visible\n * range.\n *\n * GridSheet is virtualized: normally only cells the UI renders get solved, so\n * an off-screen `=…` formula that calls an async function never fires. Only\n * async cells need this — sync formulas have no side effects and resolve when\n * read (e.g. by serialization), whereas an async cell must be *fired* and given\n * time to settle before its value can be read. `resolveAll()` therefore walks\n * the async-formula index ({@link Registry.asyncFormulaCells}) and solves each\n * one, which fires it through the usual machinery: it resolves, populates the\n * per-cell async cache, and triggers a re-render via `transmit()`. Sync cells\n * that depend on those results resolve normally on the next read.\n *\n * Cells already resolved (async-cache hit) or in flight (Pending) are not\n * re-fired — solving is a cache hit for them — so repeated calls converge and\n * are cheap. After awaiting {@link waitForPending}, serialization helpers such\n * as `toValueMatrix` return resolved values for off-screen cells too.\n *\n * This is the building block behind the opt-in `eager` sheet option; call it\n * directly to resolve on demand without enabling eager mode.\n *\n * @returns the number of async formula cells visited (for diagnostics/tests).\n */\n resolveAll() {\n var s;\n const t = this.registry;\n let e = 0;\n for (const i of Array.from(t.asyncFormulaCells)) {\n const n = t.data[i];\n if (n == null || typeof n.value != \"string\" || n.value.charAt(0) !== \"=\") {\n t.asyncFormulaCells.delete(i);\n continue;\n }\n if (((s = t.systems[i]) == null ? void 0 : s.sheetId) !== this.id)\n continue;\n const { y: o, x: a } = this.getPointById(i);\n if (o < 0 || a < 0) {\n t.asyncFormulaCells.delete(i);\n continue;\n }\n this.getCell({ y: o, x: a }, { resolution: \"RESOLVED\", raise: !1 }), e++;\n }\n return e;\n }\n /**\n * Capture the full cell state of all filter-related header cells as a CellsByIdType snapshot.\n * @internal\n */\n _captureFilterCellStates() {\n var i, n;\n const t = {}, e = this.numCols, s = this.numRows;\n for (let o = 1; o <= e; o++) {\n const a = this.getId({ y: 0, x: o });\n a != null && (t[a] = { filter: ((i = this.registry.data[a]) == null ? void 0 : i.filter) ?? null });\n }\n for (let o = 1; o <= s; o++) {\n const a = this.getId({ y: o, x: 0 });\n a != null && (t[a] = { filtered: ((n = this.registry.data[a]) == null ? void 0 : n.filtered) ?? !1 });\n }\n return t;\n }\n filterRows({\n x: t,\n filter: e\n } = {}) {\n const s = this._captureFilterCellStates();\n if (t == null) {\n const o = this.numCols;\n for (let a = 1; a <= o; a++) {\n const l = this._pointToRawCell({ y: 0, x: a });\n l == null || delete l.filter;\n }\n } else {\n const o = this._pointToRawCell({ y: 0, x: t });\n o && (e ? o.filter = e : delete o.filter);\n }\n this._reapplyFilters();\n const i = this._captureFilterCellStates(), n = Object.keys(s).filter(\n (o) => JSON.stringify(s[o]) !== JSON.stringify(i[o])\n );\n if (n.length > 0) {\n const o = {}, a = {};\n for (const l of n)\n o[l] = s[l], a[l] = i[l];\n this._pushHistory({\n applyed: !0,\n operation: \"UPDATE\",\n srcSheetId: this.id,\n dstSheetId: this.id,\n diffBefore: o,\n diffAfter: a,\n partial: !0\n });\n }\n return this.refresh(!1, !0);\n }\n /** @internal */\n _reapplyFilters() {\n const t = this.numCols, e = [], s = [];\n for (let n = 1; n <= t; n++) {\n const o = this._pointToRawCell({ y: 0, x: n });\n o != null && o.filter && o.filter.conditions.length > 0 && e.push({ x: n, filter: o.filter }), s.push(M({ y: 0, x: n }));\n }\n const i = this.numRows;\n for (let n = 1; n <= i; n++) {\n const o = this._pointToRawCell({ y: n, x: 0 });\n if (!o || o.filterFixed)\n continue;\n let a = !1;\n for (const { x: h, filter: u } of e) {\n const c = this.getCell({ y: n, x: h }, { resolution: \"RESOLVED\" });\n if (!Ii(u, c == null ? void 0 : c.value)) {\n a = !0;\n break;\n }\n }\n const l = !!o.filtered;\n a ? (o.filtered = !0, this._filteredRows.add(n)) : (delete o.filtered, this._filteredRows.delete(n)), l !== a && s.push(M({ y: n, x: 0 }));\n }\n this.lastChangedAddresses = s;\n }\n sortRows({ x: t, direction: e }) {\n const s = this.numRows;\n if (s <= 1)\n return this;\n const i = /* @__PURE__ */ new Set(), n = [];\n for (let c = 1; c <= s; c++) {\n const f = this._pointToRawCell({ y: c, x: 0 });\n f != null && f.sortFixed ? i.add(c) : n.push(c);\n }\n n.sort((c, f) => {\n const d = this.getCell({ y: c, x: t }, { resolution: \"RESOLVED\" }), p = this.getCell({ y: f, x: t }, { resolution: \"RESOLVED\" }), m = d == null ? void 0 : d.value, y = p == null ? void 0 : p.value;\n if (m == null && y == null)\n return 0;\n if (m == null)\n return 1;\n if (y == null)\n return -1;\n let g = 0;\n return typeof m == \"number\" && typeof y == \"number\" ? g = m - y : m instanceof Date && y instanceof Date ? g = m.getTime() - y.getTime() : g = String(m).localeCompare(String(y)), e === \"asc\" ? g : -g;\n });\n const o = [];\n for (let c = 1; c <= s; c++)\n i.has(c) || o.push(c);\n let a = !1;\n for (let c = 0; c < n.length; c++)\n if (n[c] !== o[c]) {\n a = !0;\n break;\n }\n if (!a)\n return this;\n const l = {};\n for (const c of i)\n l[c] = c;\n for (let c = 0; c < n.length; c++)\n l[n[c]] = o[c];\n this._materializeIdMatrix();\n const h = this.idMatrix.slice();\n for (const [c, f] of Object.entries(l))\n this.idMatrix[Number(f)] = h[Number(c)];\n this.addressCaches.clear();\n const u = new wt(this);\n return u.buildMap(h.flat(), this.idMatrix.flat()), u.resolveDependents(), this._pushHistory({\n applyed: !0,\n operation: \"SORT_ROWS\",\n srcSheetId: this.id,\n dstSheetId: this.id,\n sortedRowMapping: l\n }), this.refresh(!0, !0);\n }\n /** @internal */\n _sortRowMapping(t, e = !1) {\n const s = new Array(this.numRows);\n if (e)\n for (const [n, o] of Object.entries(t)) {\n const a = Number(n);\n s[a - 1] = o;\n }\n else\n for (const [n, o] of Object.entries(t)) {\n const a = Number(n);\n s[o - 1] = a;\n }\n this._materializeIdMatrix();\n const i = [];\n for (let n = 0; n < s.length; n++)\n i.push(this.idMatrix[s[n]]);\n for (let n = 0; n < s.length; n++)\n this.idMatrix[n + 1] = i[n];\n this.addressCaches.clear();\n }\n get isInitialized() {\n return this.status === 2;\n }\n get policies() {\n return this.registry.policies;\n }\n /** @internal */\n getSystem(t) {\n const e = this.getId(t);\n if (e != null)\n return this.registry.systems[e];\n }\n /** @internal */\n processFormula(t, { idMap: e, ...s }) {\n if ((typeof t == \"string\" || t instanceof String) && t.charAt(0) === \"=\") {\n const i = new te(t.substring(1));\n return i.tokenize(e), i.identify({ ...s, sheet: this }), i.dependencyIds.forEach((n) => this.addDependency(n, s.dependency)), s.dependency != null && (this._formulaHasAsync(i) ? this.registry.asyncFormulaCells.add(s.dependency) : this.registry.asyncFormulaCells.delete(s.dependency)), \"=\" + i.identifiedFormula;\n }\n return s.dependency != null && this.registry.asyncFormulaCells.delete(s.dependency), t;\n }\n /**\n * Whether a tokenized formula calls at least one async function, decided via\n * the function class's static `isAsync` flag (no instantiation). Drives the\n * async-formula index that {@link resolveAll} walks.\n * @internal\n */\n _formulaHasAsync(t) {\n for (const e of t.tokens)\n if (e.type === \"FUNCTION\") {\n const s = this.registry.functions[String(e.entity).toLowerCase()];\n if (s != null && s.isAsync)\n return !0;\n }\n return !1;\n }\n /** @internal */\n resolveFormulas() {\n this.idsToBeIdentified.forEach((t) => {\n var s;\n const e = this.registry.data[t];\n ((s = this.registry.systems[t]) == null ? void 0 : s.sheetId) != null && e != null && (this.clearDependencies(t), e.value = this.processFormula(e == null ? void 0 : e.value, { dependency: t }));\n }), this.idsToBeIdentified = [], this.status = 2;\n }\n /** @internal */\n getSheetBySheetName(t) {\n const e = this.registry.sheetIdsByName[t];\n return this.getSheetBySheetId(e);\n }\n /** @internal */\n getSheetBySheetId(t) {\n var e, s, i;\n return (i = (s = (e = this.registry.contextsBySheetId[t]) == null ? void 0 : e.store) == null ? void 0 : s.sheetReactive) == null ? void 0 : i.current;\n }\n /** @internal */\n static _stack(...t) {\n const e = {};\n return t.forEach((s) => {\n s != null && s.style && (e.style = { ...e.style, ...s.style }), s != null && s.prevention && (e.prevention = (e.prevention || 0) | s.prevention);\n }), e;\n }\n /** @internal */\n initialize(t) {\n var a, l;\n if (this.status > 1)\n return;\n t[0] == null && (t[0] = { width: Le, height: $e });\n const e = Hs(t, t.__userKeys);\n this.area = {\n top: 1,\n left: 1,\n bottom: e.numRows,\n right: e.numCols\n }, this.idMatrix = new Array(e.numRows + 1), this._colLetters = [];\n for (let h = 0; h <= e.numCols; h++)\n this._colLetters[h] = G(h);\n const s = t.__userKeys ?? Object.keys(t);\n s.forEach((h) => {\n if (h === vt || h === kt || h === $t)\n return;\n const u = Bs(h), c = t[h];\n u.forEach((f) => {\n const d = t[f];\n t[f] = {\n ...d,\n ...c,\n ...Y._stack(d, c)\n };\n });\n }), this._common = t == null ? void 0 : t[vt], this._commonCol = t == null ? void 0 : t[kt], this._commonRow = t == null ? void 0 : t[$t], this._initCells = t;\n const i = (t == null ? void 0 : t.__userKeys) ?? (t ? Object.keys(t) : []);\n this._hasExplicitCells = i.some((h) => {\n if (h === vt || h === kt || h === $t)\n return !1;\n const u = t == null ? void 0 : t[h];\n return u == null || !(\"value\" in u) ? !1 : h.includes(\":\") ? !0 : /^\\$?[A-Z]+\\$?[1-9]/.test(h);\n });\n const n = t.__matrices;\n if (n) {\n this._initMatrices = n, this._initFlattenAs = t.__flattenAs, this._matrixByBase = [];\n for (const h of Object.keys(n)) {\n const { y: u, x: c } = T(h);\n this._matrixByBase.push({ baseY: u, baseX: c, matrix: n[h] });\n }\n }\n ((a = this._commonCol) == null ? void 0 : a.width) != null && (this.defaultColWidth = this._commonCol.width), ((l = this._commonRow) == null ? void 0 : l.height) != null && (this.defaultRowHeight = this._commonRow.height), this._ensureIdRow(0);\n for (let h = 0; h <= e.numCols; h++) {\n const u = this.idMatrix[0][h];\n this._ensureCellPopulated(0, h, u);\n }\n const o = s;\n for (const h of o) {\n if (h === vt || h === kt || h === $t)\n continue;\n const u = T(h), { y: c, x: f } = u;\n if (c === 0 && f === 0 || c === 0 || f === 0 || c <= 0 || f <= 0 || c > e.numRows || f > e.numCols)\n continue;\n const p = this._ensureIdRow(c)[f];\n p != null && this._ensureCellPopulated(c, f, p);\n }\n this.status = 1, this.registry.sheetIdsByName[this.name] = this.id;\n }\n /** @internal */\n _incrementVersion() {\n this.version++, this.version >= Number.MAX_SAFE_INTEGER && (this.version = 1);\n }\n /** @internal */\n _xsheetDispatch(t) {\n if (t === this)\n return;\n t.refresh(!0);\n const e = this.registry.contextsBySheetId[t.id];\n if (e !== null) {\n const { dispatch: s } = e;\n requestAnimationFrame(() => {\n s(this.registry.updateSheet(t));\n });\n }\n }\n /** @internal */\n _generateId() {\n return (this.registry.cellHead++).toString();\n }\n /**\n * Lazily generate the ID row for the given y-coordinate.\n * If the row already exists, returns it immediately.\n * @internal\n */\n _ensureIdRow(t) {\n let e = this.idMatrix[t];\n if (e != null)\n return e;\n const s = this.area.right;\n e = [];\n for (let i = 0; i <= s; i++) {\n const n = this._generateId();\n e.push(n);\n const o = this._colLetters[i] || G(i);\n this.addressCaches.set(n, t === 0 ? `${o}0` : i === 0 ? `0${t}` : `${o}${t}`);\n }\n return this.idMatrix[t] = e, e;\n }\n /**\n * Ensure that registry.data and registry.systems exist for a given cell.\n * Performs lazy cell stacking using stored initialization defaults.\n * @internal\n */\n _ensureCellPopulated(t, e, s) {\n var l, h;\n if (this.registry.data[s] != null)\n return;\n const i = this._initCells, n = Date.now();\n let o;\n if (t === 0 && e > 0) {\n const u = this._colLetters[e] || G(e), c = i == null ? void 0 : i[u], { style: f, ...d } = c ?? {}, p = i == null ? void 0 : i[u + \"0\"];\n o = {\n ...this._commonCol,\n ...d,\n ...p,\n ...Y._stack(this._commonCol, p)\n };\n } else if (e === 0 && t > 0) {\n const u = bt(t), c = i == null ? void 0 : i[u], { style: f, ...d } = c ?? {}, p = i == null ? void 0 : i[\"0\" + u];\n o = {\n ...this._commonRow,\n ...d,\n ...p,\n ...Y._stack(this._commonRow, p)\n };\n } else if (t === 0 && e === 0) {\n const u = i == null ? void 0 : i[\"0\"];\n o = { ...u, ...Y._stack(u) };\n } else {\n const u = this._colLetters[e] || G(e), c = bt(t), f = `${u}${c}`, d = i == null ? void 0 : i[c], p = i == null ? void 0 : i[u];\n let m = i == null ? void 0 : i[f];\n if ((m == null || !(\"value\" in m)) && this._matrixByBase.length > 0)\n for (const { baseY: y, baseX: g, matrix: b } of this._matrixByBase) {\n const _ = t - y, x = e - g;\n if (_ >= 0 && _ < b.length && x >= 0 && x < b[_].length) {\n const w = b[_][x];\n let E;\n this._initFlattenAs ? E = { [this._initFlattenAs]: w } : E = w, m = m ? { ...E, ...m } : E;\n break;\n }\n }\n o = {\n ...this._common,\n ...d,\n ...p,\n ...m,\n ...Y._stack(this._common, d, p, m)\n };\n }\n (h = (l = o == null ? void 0 : o.value) == null ? void 0 : l.startsWith) != null && h.call(l, \"=\") && ((o == null ? void 0 : o.formulaEnabled) ?? !0) && this.idsToBeIdentified.push(s), t === 0 ? o.width == null && (o.width = he) : e === 0 ? (o.height == null && (o.height = rt), o.height !== (this.defaultRowHeight || rt) && this._rowHeightOverrides.set(t, o.height), o.filtered && this._filteredRows.add(t)) : (delete o.height, delete o.width, delete o.label), o = (this.policies[o.policy ?? \"\"] ?? this.defaultPolicy).deserializeValue(o.value, o) ?? {}, this.registry.systems[s] = { ...this.registry.systems[s], id: s, changedTime: n, sheetId: this.id }, this.registry.data[s] = o;\n }\n /**\n * Materialize all lazy ID rows. Call this before operations that need the full\n * idMatrix (e.g. .flat(), .map(), .slice() for sort/move/undo/redo).\n * @internal\n */\n _materializeIdMatrix() {\n for (let t = 0; t < this.idMatrix.length; t++)\n this.idMatrix[t] == null && this._ensureIdRow(t);\n }\n /**\n * Compute the absolute top offset for a given row using arithmetic + overrides.\n * Avoids iterating all rows — O(overrides) instead of O(numRows).\n * @internal\n */\n getOffsetTop(t) {\n const e = this.headerHeight, s = this.defaultRowHeight || rt;\n let i = e + (t - 1) * s;\n for (const [n, o] of this._rowHeightOverrides)\n n < t && (i += o - s);\n for (const n of this._filteredRows)\n if (n < t) {\n const o = this._rowHeightOverrides.get(n) ?? s;\n i -= o;\n }\n return i;\n }\n /**\n * Re-key the row-metadata caches after rows are removed at [y, y+numRows).\n * These maps are keyed by absolute row number, so deletions must drop the removed\n * keys and shift later keys down — otherwise stale entries corrupt getOffsetTop().\n * @internal\n */\n _shiftRowMetaForRemove(t, e) {\n const s = /* @__PURE__ */ new Map();\n for (const [n, o] of this._rowHeightOverrides)\n n < t ? s.set(n, o) : n >= t + e && s.set(n - e, o);\n this._rowHeightOverrides = s;\n const i = /* @__PURE__ */ new Set();\n for (const n of this._filteredRows)\n n < t ? i.add(n) : n >= t + e && i.add(n - e);\n this._filteredRows = i;\n }\n /**\n * Re-key the row-metadata caches after numRows are inserted at y, shifting keys >= y up.\n * @internal\n */\n _shiftRowMetaForInsert(t, e) {\n const s = /* @__PURE__ */ new Map();\n for (const [n, o] of this._rowHeightOverrides)\n s.set(n < t ? n : n + e, o);\n this._rowHeightOverrides = s;\n const i = /* @__PURE__ */ new Set();\n for (const n of this._filteredRows)\n i.add(n < t ? n : n + e);\n this._filteredRows = i;\n }\n /**\n * (Re)seed row-metadata for the rows at [y, y+numRows) from their current header cells.\n * Used after rows are added (insert / undo-remove / redo-insert) so non-default heights\n * and filtered state are reflected immediately rather than only on the next lazy read.\n * @internal\n */\n _seedRowMeta(t, e) {\n const s = this.defaultRowHeight || rt;\n for (let i = 0; i < e; i++) {\n const n = t + i, o = this.getId({ y: n, x: 0 }), a = o ? this.registry.data[o] : void 0;\n (a == null ? void 0 : a.height) != null && a.height !== s ? this._rowHeightOverrides.set(n, a.height) : this._rowHeightOverrides.delete(n), a != null && a.filtered ? this._filteredRows.add(n) : this._filteredRows.delete(n);\n }\n }\n getRectSize({ top: t, left: e, bottom: s, right: i }) {\n var d, p;\n const n = e || 1, o = t || 1, a = ((d = this.registry.systems[this.getId({ y: 0, x: i })]) == null ? void 0 : d.offsetLeft) ?? 0, l = ((p = this.registry.systems[this.getId({ y: 0, x: n })]) == null ? void 0 : p.offsetLeft) ?? 0, h = this.getOffsetTop(s), u = this.getOffsetTop(o), c = Math.max(0, a - l), f = Math.max(0, h - u);\n return { y: o, x: n, height: f, width: c };\n }\n /** @internal */\n setTotalSize() {\n const t = this.numCols, e = this.numRows, s = this.headerWidth, i = this.headerHeight, n = this.defaultRowHeight || rt;\n let o = 0;\n for (let u = 1; u <= t; u++) {\n const c = this.getCell({ y: 0, x: u }, { resolution: \"SYSTEM\" }), f = (c == null ? void 0 : c.width) || this.defaultColWidth || he, d = this.registry.systems[this.getId({ y: 0, x: u })];\n d != null && (d.offsetLeft = s + o), o += f;\n }\n this.totalWidth = s + o;\n let a = 0, l = 0;\n for (const [u, c] of this._rowHeightOverrides)\n u >= 1 && u <= e && (a += c - n);\n for (const u of this._filteredRows)\n if (u >= 1 && u <= e) {\n const c = this._rowHeightOverrides.get(u) ?? n;\n l += c;\n }\n const h = e * n + a;\n this.totalHeight = i + h - l, this.fullHeight = i + h;\n }\n /** @internal */\n refresh(t = !1, e = !1) {\n return this._incrementVersion(), this.lastChangedTime = this.changedTime, this.changedTime = Date.now(), this.clearSolvedCaches(), this._stripped = Dt, t && this.addressCaches.clear(), e && this.setTotalSize(), this;\n }\n /** @internal */\n clone(t = !1) {\n const e = Object.assign(Object.create(Object.getPrototypeOf(this)), this);\n return e._stripped = Dt, e.refresh(t);\n }\n /** @internal */\n getPointById(t, e = 0, s = 0) {\n const i = t.startsWith(\"$\");\n i && (t = t.slice(1), s = 0);\n const n = t.endsWith(\"$\");\n n && (t = t.slice(0, -1), e = 0);\n const o = this.addressCaches.get(t);\n if (o) {\n const h = T(o);\n return { y: h.y + e, x: h.x + s, absCol: i, absRow: n };\n }\n const a = this._addressCacheWatermark, l = this._scanForIdFrom(a, t);\n if (l != null)\n return { y: l.y + e, x: l.x + s, absCol: i, absRow: n };\n if (a > 0) {\n const h = this._scanForIdFrom(0, t);\n if (h != null)\n return { y: h.y + e, x: h.x + s, absCol: i, absRow: n };\n }\n return { y: -1, x: -1, absCol: i, absRow: n };\n }\n /**\n * Scan materialized rows from `fromY`, seeding addressCaches as it goes. Advances the\n * watermark past every row scanned through its last column; if `id` is found mid-row,\n * leaves the watermark at that (still partially seeded) row. Returns the point or null.\n * @internal\n */\n _scanForIdFrom(t, e) {\n let s = t;\n for (; s < this.idMatrix.length; s++) {\n const i = this.idMatrix[s];\n if (i != null)\n for (let n = 0; n < i.length; n++) {\n const o = i[n];\n if (this.addressCaches.set(o, M({ y: s, x: n })), o === e)\n return this._addressCacheWatermark = s, { y: s, x: n };\n }\n }\n return this._addressCacheWatermark = s, null;\n }\n /** @internal */\n getAddressById(t, e = 0, s = 0) {\n const { y: i, x: n, absCol: o, absRow: a } = this.getPointById(t, e, s);\n return Ke(M({ y: i, x: n }), o, a);\n }\n /** @internal */\n clearAddressCaches() {\n this.addressCaches.clear(), this._addressCacheWatermark = 0;\n }\n /** @internal */\n _warmAddressCaches() {\n this._materializeIdMatrix();\n for (let t = 0; t < this.idMatrix.length; t++) {\n const e = this.idMatrix[t];\n for (let s = 0; s < e.length; s++)\n this.addressCaches.set(e[s], M({ y: t, x: s }));\n }\n this._addressCacheWatermark = this.idMatrix.length;\n }\n /** @internal */\n getId(t) {\n var i;\n const { y: e, x: s } = t;\n return e >= 0 && s >= 0 && e <= this.area.bottom && s <= this.area.right ? this._ensureIdRow(e)[s] : (i = this.idMatrix[e]) == null ? void 0 : i[s];\n }\n /** @internal */\n getCell(t, { resolution: e = \"RESOLVED\", raise: s = !1 } = {}) {\n const { y: i, x: n } = t;\n if (i === -1 || n === -1)\n return;\n const o = this.getId(t);\n if (o == null)\n return;\n this._ensureCellPopulated(i, n, o);\n const a = this.registry.data[o];\n if (a == null)\n return;\n let l = a.value;\n return e !== \"SYSTEM\" && (a.formulaEnabled ?? !0) && (l = we({ value: l, sheet: this, point: t, raise: s, resolution: e, at: o })), { ...a, value: l };\n }\n /**\n * Cheap raw-value peek that does NOT materialize the cell. Returns the populated\n * value if the cell already exists, otherwise reads straight from the deferred\n * matrix / init cells. Lets a full-column/row scan (e.g. Ctrl+Shift+arrow's\n * \"select to data edge\") stay O(1) per cell instead of stacking every cell it\n * walks over — a million-row scan was ~1.9s (and materialized the whole column)\n * purely because the empty-check went through getCell.\n */\n peekRawValue({ y: t, x: e }) {\n var i;\n const s = this.idMatrix[t];\n if (s != null) {\n const n = s[e], o = n != null ? this.registry.data[n] : void 0;\n if (o != null)\n return o.value;\n }\n if (!(t <= 0 || e <= 0)) {\n if (this._hasExplicitCells) {\n const n = `${this._colLetters[e] || G(e)}${bt(t)}`, o = (i = this._initCells) == null ? void 0 : i[n];\n if (o != null && \"value\" in o)\n return o.value;\n }\n for (const { baseY: n, baseX: o, matrix: a } of this._matrixByBase) {\n const l = t - n, h = e - o;\n if (l >= 0 && l < a.length) {\n const u = a[l];\n if (h >= 0 && h < u.length) {\n const c = u[h];\n return this._initFlattenAs ? c : c == null ? void 0 : c.value;\n }\n }\n }\n }\n }\n /** @internal */\n get numRows() {\n const { top: t, bottom: e } = this.area;\n return 1 + e - t;\n }\n get numCols() {\n const { left: t, right: e } = this.area;\n return 1 + e - t;\n }\n get top() {\n return this.area.top;\n }\n get left() {\n return this.area.left;\n }\n get bottom() {\n return this.area.bottom;\n }\n get right() {\n return this.area.right;\n }\n /**\n * Fill one matrix row (y) from cell values. Shared by the sync and async\n * _toValueMatrix so the two never diverge. Per-row (not per-cell) call, so the\n * indirection is negligible even at a million cells. @internal\n */\n _fillValueRow(t, e, {\n top: s,\n left: i,\n right: n,\n at: o,\n resolution: a = \"RESOLVED\",\n raise: l = !1,\n filter: h = ue,\n asScalar: u = !1\n }) {\n for (let c = i; c <= n; c++) {\n const f = this.getId({ y: e, x: c });\n if (o === f)\n throw new S(\"#REF!\", \"References are circulating.\");\n const d = this.getCell({ y: e, x: c }, { resolution: a, raise: l }) ?? {};\n if (h(d)) {\n let p = d.value;\n u && (p = this.getPolicy({ y: e, x: c }).toScalar({ value: d.value, cell: d, sheet: this, point: { y: e, x: c } })), t[e - s][c - i] = p;\n }\n }\n }\n /** @internal */\n _toValueMatrix({\n area: t,\n at: e,\n resolution: s = \"RESOLVED\",\n raise: i = !1,\n filter: n = ue,\n asScalar: o = !1\n } = {}) {\n const { top: a, left: l, bottom: h, right: u } = t ?? this.area, c = Jt(h - a + 1, u - l + 1);\n for (let f = a; f <= h; f++)\n this._fillValueRow(c, f, { top: a, left: l, right: u, at: e, resolution: s, raise: i, filter: n, asScalar: o });\n return c;\n }\n /**\n * Async, time-sliced variant of _toValueMatrix. Reading every cell lazily\n * materializes the whole sheet (~hundreds of ms at a million cells), so doing\n * it synchronously freezes the host. This processes rows until `frameBudgetMs`\n * elapses, then reports progress and yields — leaving the UI responsive and\n * letting the caller paint a progress indicator. The caller supplies\n * `yieldControl` (a macrotask/rAF yielder so the host actually paints between\n * chunks); the default microtask only cooperates, which suffices for headless\n * callers that just want to avoid monopolizing the loop. @internal\n */\n async _toValueMatrixAsync({\n area: t,\n at: e,\n resolution: s = \"RESOLVED\",\n raise: i = !1,\n filter: n = ue,\n asScalar: o = !1,\n frameBudgetMs: a = 12,\n onProgress: l,\n yieldControl: h\n } = {}) {\n const { top: u, left: c, bottom: f, right: d } = t ?? this.area, p = Math.max(0, f - u + 1), m = Jt(p, d - c + 1), y = h ?? (() => Promise.resolve());\n l == null || l({ done: 0, total: p });\n let g = Date.now(), b = 0;\n for (let _ = u; _ <= f; _++)\n this._fillValueRow(m, _, { top: u, left: c, right: d, at: e, resolution: s, raise: i, filter: n, asScalar: o }), b++, Date.now() - g >= a && (l == null || l({ done: b, total: p }), await y(), g = Date.now());\n return l == null || l({ done: p, total: p }), m;\n }\n /** @internal */\n _pushHistory(t) {\n const e = this.registry;\n if (e.histories.splice(e.historyIndex + 1, e.histories.length).forEach(this._cleanStrayed.bind(this)), e.histories.push(t), e.lastHistory = e.currentHistory = t, e.histories.length > e.historyLimit) {\n const i = e.histories.splice(0, 1)[0];\n this._cleanObsolete(i);\n } else\n e.historyIndex++;\n }\n /** @internal */\n _cleanObsolete(t) {\n (t.operation === \"REMOVE_ROWS\" || t.operation === \"REMOVE_COLS\") && t.deleted.forEach((e) => {\n e.forEach((s) => {\n this._deleteOrphanedId(s);\n });\n }), t.operation === \"MOVE\" && t.moveRelations.forEach((e) => {\n e.new != null && this._deleteOrphanedId(e.new), e.lost != null && this._deleteOrphanedId(e.lost);\n });\n }\n /** @internal */\n _cleanStrayed(t) {\n (t.operation === \"INSERT_ROWS\" || t.operation === \"INSERT_COLS\") && t.idMatrix.forEach((e) => {\n e.forEach((s) => {\n this._deleteOrphanedId(s);\n });\n });\n }\n /**\n * Remove an id from registry.data and registry.dependents entirely.\n * @internal\n */\n _deleteOrphanedId(t) {\n var s;\n const e = this.registry.systems[t];\n (s = e == null ? void 0 : e.dependencies) == null || s.forEach((i) => {\n var n, o;\n (o = (n = this.registry.systems[i]) == null ? void 0 : n.dependents) == null || o.delete(t);\n }), delete this.registry.data[t], delete this.registry.systems[t];\n }\n /** @internal */\n _copyCellLayout(t) {\n if (t == null)\n return;\n const e = {};\n return t.style != null && (e.style = t.style), t.justifyContent != null && (e.justifyContent = t.justifyContent), t.alignItems != null && (e.alignItems = t.alignItems), t.policy != null && (e.policy = t.policy), t.width != null && (e.width = t.width), t.height != null && (e.height = t.height), e;\n }\n move({\n srcSheet: t = this,\n src: e,\n dst: s,\n historicize: i = !0,\n operator: n = \"SYSTEM\",\n undoReflection: o,\n redoReflection: a\n }) {\n const l = t.__raw__, h = this._createMoveRelations(l, e, this, s), { diffBefore: u, diffAfter: c } = this._moveCells(l, this, h, !1, n);\n return this._xsheetDispatch(l), i && this._pushHistory({\n applyed: !0,\n operation: \"MOVE\",\n srcSheetId: l.id,\n dstSheetId: this.id,\n undoReflection: o,\n redoReflection: a,\n diffBefore: u,\n diffAfter: c,\n moveRelations: h\n }), this.refresh(!0);\n }\n /**\n * Build MoveRelations from src area to dst area, skipping filtered rows.\n *\n * Layout of the returned array (processed in this order by _moveCells):\n * 1. Entries where [0] is a newly-generated ID — these fill the vacated src cells (processed last in forward order)\n * 2. Entries where [0] is a src address and [1] is a dst address — the actual moves (processed first in forward order, descending)\n * Entries whose [1] is an existing ID mean the destination cell is displaced/overflowed and\n * is no longer addressable; on forward pass they are skipped; on reverse pass the ID is written back.\n */\n /** @internal */\n _createMoveRelations(t, e, s, i) {\n const { top: n, left: o, bottom: a, right: l } = e, { top: h, left: u } = i, c = s.numRows, f = s.numCols, d = [];\n for (let x = n; x <= a; x++)\n t.isRowFiltered(x) || d.push(x);\n const p = l - o + 1, m = d.length, y = [];\n {\n let x = 0, w = h;\n for (; x < m; )\n s.isRowFiltered(w) || (y.push(w), x++), w++;\n }\n const g = /* @__PURE__ */ new Set();\n for (let x = 0; x < m; x++)\n for (let w = 0; w < p; w++)\n g.add(M({ y: d[x], x: o + w }));\n const b = /* @__PURE__ */ new Set();\n for (let x = 0; x < m; x++) {\n const w = y[x];\n for (let E = 0; E < p; E++) {\n const D = u + E;\n w <= c && D <= f && b.add(M({ y: w, x: D }));\n }\n }\n const _ = [];\n for (let x = 0; x < m; x++) {\n const w = d[x], E = y[x];\n for (let D = 0; D < p; D++) {\n const k = o + D, N = u + D, B = M({ y: w, x: k }), Z = E <= c && N <= f, q = Z ? M({ y: E, x: N }) : void 0;\n let C;\n t === s && b.has(B) || (C = t._generateId());\n let v;\n if (Z) {\n if (!(t === s && g.has(q))) {\n const U = s.getId({ y: E, x: N });\n U != null && (v = U);\n }\n } else {\n const U = t.getId({ y: w, x: k });\n U != null && (v = U);\n }\n const X = t.getCell({ y: w, x: k }, { resolution: \"SYSTEM\" }), it = Z ? s.getCell({ y: E, x: N }, { resolution: \"SYSTEM\" }) : void 0;\n _.push({\n before: X == null ? void 0 : X.policy,\n after: it == null ? void 0 : it.policy,\n src: B,\n dst: q,\n new: C,\n lost: v\n });\n }\n }\n return _;\n }\n get defaultPolicy() {\n return this.policies[Nt] ?? pi;\n }\n /**\n * Apply (or reverse) a MoveRelations list.\n *\n * Forward (reverse=false): process descending — actual ID moves happen bottom-up so\n * earlier entries don't clobber later ones; vacate entries (at front of array) are\n * applied last.\n * Reverse (reverse=true): process ascending — restores IDs in the natural order.\n *\n * On forward pass: applies policy, collects diffBefore, runs ReferencePreserver.\n * On reverse pass: only moves IDs (caller is responsible for applyDiff(diffBefore)).\n */\n /** @internal */\n _moveCells(t, e, s, i, n = \"SYSTEM\") {\n const o = {}, a = new wt(e), l = {}, h = [], u = [];\n if (i)\n for (const {\n before: m,\n after: y,\n src: g,\n dst: b,\n new: _,\n lost: x\n } of s) {\n if (b != null) {\n const w = T(b), E = e.getId(w);\n if (E != null) {\n const D = T(g);\n h.push({ y: D.y, x: D.x, id: E });\n }\n }\n if (x != null)\n if (b != null) {\n const w = T(b);\n u.push({ y: w.y, x: w.x, id: x });\n } else {\n const w = T(g);\n h.push({ y: w.y, x: w.x, id: x });\n }\n }\n else\n for (const {\n before: m,\n after: y,\n src: g,\n dst: b,\n new: _,\n lost: x\n } of s) {\n const w = T(g), E = t.getId(w), D = b != null ? T(b) : void 0, k = D != null ? e.getId(D) : void 0, N = E != null ? t.registry.data[E] : void 0, B = k != null ? e.registry.data[k] : void 0;\n if (!(n === \"USER\" && (F(N == null ? void 0 : N.prevention, Ut) || F(B == null ? void 0 : B.prevention, Vt)))) {\n if (_ != null) {\n const Z = m || Nt, C = (t.policies[Z] ?? t.defaultPolicy).select({\n sheet: t,\n point: w,\n next: { value: null },\n current: N,\n operation: Ut\n });\n l[_] = {\n ...C,\n policy: m\n }, this.registry.systems[_] = { id: _, sheetId: t.id, changedTime: Date.now() }, h.push({ y: w.y, x: w.x, id: _ });\n }\n if (k != null && D != null && b != null) {\n const Z = y || Nt, q = m || Nt, C = e.policies[Z] ?? e.defaultPolicy, v = t.policies[q] ?? t.defaultPolicy, X = v.priority > C.priority, U = (X ? v : C).select({\n sheet: e,\n point: D,\n next: N,\n current: B,\n operation: Vt\n });\n if (U && (o[E] = N ?? {}, l[E] = {\n ...N,\n ...U,\n policy: X ? m : y\n }), N != null) {\n const K = this.registry.systems[E];\n K && (K.changedTime = Date.now());\n }\n u.push({ y: D.y, x: D.x, id: E });\n }\n }\n }\n i || (t._materializeIdMatrix(), t !== e && e._materializeIdMatrix());\n const c = i ? null : t.idMatrix.flat(), f = !i && t !== e ? e.idMatrix.flat() : null;\n Object.assign(this.registry.data, l);\n for (const { y: m, x: y, id: g } of h)\n t._ensureIdRow(m)[y] = g;\n for (const { y: m, x: y, id: g } of u)\n e._ensureIdRow(m)[y] = g;\n const d = s.filter((m) => m.dst != null).map((m) => m.dst), p = s.map((m) => m.src);\n if (t === e ? e.lastChangedAddresses = [.../* @__PURE__ */ new Set([...p, ...d])] : (e.lastChangedAddresses = d, t.lastChangedAddresses = p), !i) {\n a.buildMap(c.flat(), t.idMatrix.flat()), t !== e && a.buildMap(f.flat(), e.idMatrix.flat());\n const m = a.resolveDependents(\"move\");\n Object.assign(o, m);\n }\n return { diffBefore: o, diffAfter: {} };\n }\n /** Build the paste (copy) diff without applying it. Shared by copy()/copyAsync(). @internal */\n _buildCopyDiff({ srcSheet: t = this, src: e, dst: s, onlyValue: i = !1 }) {\n const n = t !== this, { top: o, left: a, bottom: l, right: h } = e, { top: u, left: c, bottom: f, right: d } = s, p = {}, m = Date.now(), y = [];\n for (let w = o; w <= l; w++)\n t.isRowFiltered(w) || y.push(w);\n const g = [];\n for (let w = u; w <= f; w++)\n w > this.numRows || this.isRowFiltered(w) || g.push(w);\n const b = y.length, _ = h - a + 1, x = d - c + 1;\n for (let w = 0; w < g.length; w++) {\n const E = g[w], D = y[w % b];\n for (let k = 0; k <= x - 1; k++) {\n const N = c + k;\n if (N > this.numCols)\n continue;\n const B = a + k % _, Z = n ? 0 : E - D, q = n ? 0 : N - B, C = {\n ...t.getCell({ y: D, x: B }, { resolution: \"SYSTEM\" })\n }, v = { y: E, x: N }, X = this.getCell(v, { resolution: \"SYSTEM\" }), it = this.getPolicy(v), U = { y: D, x: B }, K = t.getPolicy(U), pt = t.getCell(U, { resolution: \"SYSTEM\" }), mt = K.priority > it.priority;\n C.policy = mt ? pt == null ? void 0 : pt.policy : X == null ? void 0 : X.policy;\n const Ct = this.getId(v);\n this.clearDependencies(Ct);\n const Tt = (C == null ? void 0 : C.formulaEnabled) ?? !0 ? this.processFormula(C == null ? void 0 : C.value, {\n dependency: Ct,\n slideY: Z,\n slideX: q\n }) : C == null ? void 0 : C.value, P = this.getId(v), et = this.registry.systems[P];\n et != null && (et.changedTime = m);\n const yt = M(v);\n if (i) {\n const $ = this.getCell(v, { resolution: \"SYSTEM\" });\n C.style = $ == null ? void 0 : $.style, C.justifyContent = $ == null ? void 0 : $.justifyContent, C.alignItems = $ == null ? void 0 : $.alignItems;\n }\n p[yt] = { ...C, value: Tt };\n }\n }\n return p;\n }\n copy(t) {\n const { operator: e = \"SYSTEM\", undoReflection: s, redoReflection: i } = t;\n return this.update({\n diff: this._buildCopyDiff(t),\n partial: !1,\n operator: e,\n operation: se,\n undoReflection: s,\n redoReflection: i\n });\n }\n /**\n * Async, progress-reporting counterpart to {@link copy} (large paste). Builds AND\n * applies the paste one dst-row-chunk at a time — never materializing the whole\n * diff — so progress advances throughout and peak memory stays to a chunk (the\n * full-diff build was what stalled a 2-million-cell paste at 0%). The source region\n * is snapshotted first so an overlapping paste (e.g. the copied cell is inside the\n * target) never reads an already-pasted value. @internal\n */\n async copyAsync(t, e) {\n const { srcSheet: s = this, src: i, dst: n, onlyValue: o = !1, operator: a = \"SYSTEM\", undoReflection: l, redoReflection: h } = t, { onProgress: u, yieldControl: c, frameBudgetMs: f = 12 } = e, d = c ?? (() => Promise.resolve()), p = s !== this, { top: m, left: y, bottom: g, right: b } = i, { top: _, left: x, bottom: w, right: E } = n, D = Date.now(), k = [];\n for (let P = m; P <= g; P++)\n s.isRowFiltered(P) || k.push(P);\n const N = k.length, B = b - y + 1, Z = E - x + 1, q = [], C = [];\n for (let P = 0; P < N; P++) {\n const et = k[P], yt = [], $ = [];\n for (let ot = 0; ot < B; ot++) {\n const gt = y + ot;\n yt.push(s.getCell({ y: et, x: gt }, { resolution: \"SYSTEM\" }) ?? null), $.push(s.getPolicy({ y: et, x: gt }));\n }\n q.push(yt), C.push($);\n }\n const v = { diffBefore: {}, diffAfter: {}, changedAddresses: [] }, X = {\n partial: !1,\n updateChangedTime: !0,\n ignoreFields: [\"label\"],\n operator: a,\n op: se,\n formulaIdentify: !1,\n // the formula is already resolved (with slide) in the loop below\n changedTime: Date.now()\n }, it = this._filteredRows.size === 0, U = Math.min(w, this.numRows), K = Math.max(0, U - _ + 1);\n let pt = !1, mt = Date.now(), Ct = 0, Tt = 0;\n u == null || u({ done: 0, total: K });\n for (let P = _; P <= U; P++) {\n if (Tt++, !it && this.isRowFiltered(P)) {\n Date.now() - mt >= f && (u == null || u({ done: Tt, total: K }), await d(), mt = Date.now());\n continue;\n }\n const et = Ct % N, yt = k[et];\n Ct++;\n for (let $ = 0; $ <= Z - 1; $++) {\n const ot = x + $;\n if (ot > this.numCols)\n continue;\n const gt = $ % B, xs = y + gt, bs = p ? 0 : P - yt, Ss = p ? 0 : ot - xs, J = q[et][gt], Xt = { y: P, x: ot }, Mt = this.getId(Xt), H = this.registry.data[Mt] ?? this.getCell(Xt, { resolution: \"SYSTEM\" }), _s = (H == null ? void 0 : H.policy) == null ? this.defaultPolicy : this.policies[H.policy] ?? this.defaultPolicy, Rs = C[et][gt].priority > _s.priority;\n this.clearDependencies(Mt);\n const jt = J == null ? void 0 : J.value, Es = typeof jt == \"string\" && jt.charCodeAt(0) === 61 && ((J == null ? void 0 : J.formulaEnabled) ?? !0) ? this.processFormula(jt, { dependency: Mt, slideY: bs, slideX: Ss }) : jt, ke = this.registry.systems[Mt];\n ke != null && (ke.changedTime = D);\n const Gt = { ...J, value: Es, policy: Rs ? J == null ? void 0 : J.policy : H == null ? void 0 : H.policy };\n o && (Gt.style = H == null ? void 0 : H.style, Gt.justifyContent = H == null ? void 0 : H.justifyContent, Gt.alignItems = H == null ? void 0 : H.alignItems), this._applyUpdateCell(Xt, Mt, M(Xt), Gt, X, v, !0) && (pt = !0);\n }\n Date.now() - mt >= f && (u == null || u({ done: Tt, total: K }), await d(), mt = Date.now());\n }\n return this.lastChangedAddresses = v.changedAddresses, u == null || u({ done: K, total: K }), this._pushHistory({\n applyed: !0,\n operation: \"UPDATE\",\n srcSheetId: this.id,\n dstSheetId: this.id,\n undoReflection: l,\n redoReflection: h,\n diffBefore: v.diffBefore,\n diffAfter: v.diffAfter,\n partial: !1\n }), this.refresh(!1, pt);\n }\n getPolicy(t) {\n const e = this.getCell(t, { resolution: \"SYSTEM\" });\n return (e == null ? void 0 : e.policy) == null ? this.defaultPolicy : this.policies[e.policy] ?? this.defaultPolicy;\n }\n /** @internal */\n _update({\n diff: t,\n partial: e = !0,\n updateChangedTime: s = !0,\n ignoreFields: i = [\"label\"],\n operator: n = \"SYSTEM\",\n operation: o = xt,\n formulaIdentify: a = !0\n }) {\n const l = { diffBefore: {}, diffAfter: {}, changedAddresses: [] }, h = {\n partial: e,\n updateChangedTime: s,\n ignoreFields: i,\n operator: n,\n op: o,\n formulaIdentify: a,\n changedTime: Date.now()\n };\n let u = !1;\n for (const c of Object.keys(t)) {\n const f = T(c);\n this._applyUpdateCell(f, this.getId(f), c, t[c], h, l) && (u = !0);\n }\n return this.lastChangedAddresses = l.changedAddresses, {\n diffBefore: l.diffBefore,\n diffAfter: l.diffAfter,\n resized: u\n };\n }\n /**\n * Apply one diff entry to registry.data, recording undo/redo state into `out`.\n * Shared by the synchronous `_update` and the chunked `updateAsync` so the two\n * never diverge. Returns whether this cell triggered a resize. @internal\n */\n _applyUpdateCell(t, e, s, i, n, o, a = !1) {\n var f, d, p, m, y;\n const l = this.registry.data[e];\n if (n.operator === \"USER\" && F(l == null ? void 0 : l.prevention, xt))\n return !1;\n let h = a ? i : { ...i };\n n.formulaIdentify && \"value\" in h && (h.formulaEnabled ?? (l == null ? void 0 : l.formulaEnabled) ?? !0) && (this.clearDependencies(e), h.value = this.processFormula(h.value, { dependency: e })), n.ignoreFields.forEach((g) => {\n h[g] = l == null ? void 0 : l[g];\n }), n.operator === \"USER\" && F(l == null ? void 0 : l.prevention, St) && delete h.value, n.operator === \"USER\" && F(l == null ? void 0 : l.prevention, ae) && ((f = h == null ? void 0 : h.style) == null || delete f.justifyContent, (d = h == null ? void 0 : h.style) == null || delete d.alignItems), n.operator === \"USER\" && F(l == null ? void 0 : l.prevention, ce) && ((p = h == null ? void 0 : h.style) == null || delete p.width, (m = h == null ? void 0 : h.style) == null || delete m.height);\n let u = !1;\n if ((h.width != null || h.height != null) && (u = !0), o.diffBefore[e] = l ?? {}, h = (this.policies[(l == null ? void 0 : l.policy) || Nt] ?? this.defaultPolicy).select({ sheet: this, point: t, next: h, current: l, operation: n.op }) ?? h, n.updateChangedTime) {\n const g = this.registry.systems[e];\n g != null && (g.changedTime = n.changedTime);\n }\n if (n.partial) {\n const g = { ...l, ...h };\n this.registry.data[e] = g, o.diffAfter[e] = g;\n } else\n this.registry.data[e] = h, o.diffAfter[e] = h;\n if (t.x === 0 && t.y >= 1) {\n const g = (y = this.registry.data[e]) == null ? void 0 : y.height, b = this.defaultRowHeight || rt;\n g != null && g !== b ? this._rowHeightOverrides.set(t.y, g) : this._rowHeightOverrides.delete(t.y);\n }\n return o.changedAddresses.push(s), u;\n }\n update({\n diff: t,\n partial: e = !0,\n updateChangedTime: s = !0,\n historicize: i = !0,\n operator: n = \"SYSTEM\",\n operation: o = xt,\n ignoreFields: a,\n undoReflection: l,\n redoReflection: h\n }) {\n const { diffBefore: u, diffAfter: c, resized: f } = this._update({\n diff: t,\n partial: e,\n operator: n,\n operation: o,\n updateChangedTime: s,\n ...a != null ? { ignoreFields: a } : {}\n });\n return i && this._pushHistory({\n applyed: !0,\n operation: \"UPDATE\",\n srcSheetId: this.id,\n dstSheetId: this.id,\n undoReflection: l,\n redoReflection: h,\n diffBefore: u,\n diffAfter: c,\n partial: e\n }), this.refresh(!1, f);\n }\n /**\n * Async, time-sliced counterpart to {@link update}. Applies the diff in chunks,\n * yielding + reporting progress between them, so a bulk write (fill / paste of\n * millions of cells) doesn't freeze the host and can drive a progress bar. Pushes\n * a SINGLE history entry (one undo) and produces the same result as update().\n * The caller is responsible for blocking other mutations while this runs — the\n * sheet is in an intermediate state between chunks.\n */\n async updateAsync({\n diff: t,\n partial: e = !0,\n updateChangedTime: s = !0,\n historicize: i = !0,\n operator: n = \"SYSTEM\",\n operation: o = xt,\n ignoreFields: a = [\"label\"],\n undoReflection: l,\n redoReflection: h,\n onProgress: u,\n yieldControl: c,\n frameBudgetMs: f = 12\n }) {\n const d = { diffBefore: {}, diffAfter: {}, changedAddresses: [] }, p = {\n partial: e,\n updateChangedTime: s,\n ignoreFields: a,\n operator: n,\n op: o,\n formulaIdentify: !0,\n changedTime: Date.now()\n }, m = Object.keys(t), y = m.length, g = c ?? (() => Promise.resolve());\n let b = !1, _ = Date.now();\n u == null || u({ done: 0, total: y });\n for (let x = 0; x < y; x++) {\n const w = m[x], E = T(w);\n this._applyUpdateCell(E, this.getId(E), w, t[w], p, d) && (b = !0), Date.now() - _ >= f && (u == null || u({ done: x + 1, total: y }), await g(), _ = Date.now());\n }\n return this.lastChangedAddresses = d.changedAddresses, u == null || u({ done: y, total: y }), i && this._pushHistory({\n applyed: !0,\n operation: \"UPDATE\",\n srcSheetId: this.id,\n dstSheetId: this.id,\n undoReflection: l,\n redoReflection: h,\n diffBefore: d.diffBefore,\n diffAfter: d.diffAfter,\n partial: e\n }), this.refresh(!1, b);\n }\n /** @internal */\n writeRawCellMatrix({\n point: t,\n matrix: e,\n updateChangedTime: s = !0,\n historicize: i = !0,\n onlyValue: n = !1,\n operator: o = \"SYSTEM\",\n undoReflection: a,\n redoReflection: l\n }) {\n const { y: h, x: u } = t, c = {};\n let f = 0, d = h;\n for (; f < e.length && !(d > this.bottom); ) {\n if (this.isRowFiltered(d)) {\n d++;\n continue;\n }\n e[f].forEach((m, y) => {\n const g = u + y;\n if (g > this.right)\n return;\n const b = { y: d, x: g }, _ = this.parse(b, m.value ?? \"\");\n if (_.style = { ...m.style, ..._.style }, n) {\n const x = this.getCell(b, { resolution: \"SYSTEM\" });\n _.style = x == null ? void 0 : x.style, _.justifyContent = x == null ? void 0 : x.justifyContent, _.alignItems = x == null ? void 0 : x.alignItems;\n }\n c[M(b)] = _;\n }), f++, d++;\n }\n return this.update({\n diff: c,\n partial: !0,\n updateChangedTime: s,\n historicize: i,\n operator: o,\n operation: St,\n undoReflection: a,\n redoReflection: l\n });\n }\n writeMatrix(t) {\n const e = t.matrix.map((s) => s.map((i) => ({ value: i })));\n return this.writeRawCellMatrix({ ...t, matrix: e });\n }\n write(t) {\n const { point: e, value: s } = t, i = this.parse(e, s ?? \"\"), n = this.getCell(e, { resolution: \"RAW\" });\n if (((n == null ? void 0 : n.value) ?? null) === i.value)\n return this;\n const o = { [M(e)]: i };\n return this.update({\n ...t,\n diff: o,\n partial: !0,\n operation: St\n });\n }\n insertRows({\n y: t,\n numRows: e,\n baseY: s,\n diff: i,\n partial: n,\n updateChangedTime: o,\n operator: a = \"SYSTEM\",\n undoReflection: l,\n redoReflection: h\n }) {\n if (this.maxNumRows !== -1 && this.numRows + e > this.maxNumRows)\n return console.error(`Rows are limited to ${this.maxNumRows}.`), this;\n const u = this.numCols, c = [], f = Date.now();\n for (let d = 0; d < e; d++) {\n const p = [];\n for (let m = 0; m <= u; m++) {\n const y = this._generateId();\n p.push(y);\n const g = this.getCell({ y: s, x: m }, { resolution: \"SYSTEM\" }), b = this._copyCellLayout(g);\n this.registry.data[y] = { ...b }, this.registry.systems[y] = { id: y, sheetId: this.id, changedTime: f };\n }\n c.push(p);\n }\n if (this.idMatrix.splice(t, 0, ...c), this.area.bottom += e, this._shiftRowMetaForInsert(t, e), this._seedRowMeta(t, e), this._pushHistory({\n applyed: !0,\n operation: \"INSERT_ROWS\",\n srcSheetId: this.id,\n dstSheetId: this.id,\n undoReflection: l,\n redoReflection: h,\n y: t,\n numRows: e,\n idMatrix: c\n }), i && Object.assign(this.registry.lastHistory, this._update({ diff: i, partial: n, updateChangedTime: o, operator: a }), {\n partial: n\n }), this.registry.onInsertRows) {\n const d = this.clone();\n d.area = {\n top: t,\n bottom: t + e - 1,\n left: this.area.left,\n right: this.area.right\n }, d.addressCaches = /* @__PURE__ */ new Map(), d._addressCacheWatermark = 0, this.registry.onInsertRows({ sheet: d, y: t, numRows: e });\n }\n return this.refresh(!0, !0);\n }\n removeRows({\n y: t,\n numRows: e,\n operator: s = \"SYSTEM\",\n undoReflection: i,\n redoReflection: n\n }) {\n if (this.minNumRows !== -1 && this.numRows - e < this.minNumRows)\n return console.error(`At least ${this.minNumRows} row(s) are required.`), this;\n const o = new wt(this), a = [];\n this._materializeIdMatrix();\n const l = this.idMatrix.map((c) => [...c]);\n for (let c = t; c < t + e; c++) {\n const f = this.getCell({ y: c, x: 0 }, { resolution: \"SYSTEM\" });\n if (s === \"USER\" && F(f == null ? void 0 : f.prevention, ne))\n return console.warn(`Cannot delete row ${c}.`), this;\n for (let d = 1; d <= this.numCols; d++) {\n const p = this.getId({ y: c, x: d });\n p != null && (o.collectDependents(p), o.map[p] = this.getId({ y: c + e, x: d }));\n }\n a.unshift(c);\n }\n const h = [];\n a.forEach((c) => {\n const f = this.idMatrix.splice(c, 1);\n h.unshift(f[0]);\n }), this.area.bottom -= a.length, this._shiftRowMetaForRemove(t, e);\n const u = o.resolveDependents(\"removeRows\");\n if (this._pushHistory({\n applyed: !0,\n operation: \"REMOVE_ROWS\",\n srcSheetId: this.id,\n dstSheetId: this.id,\n undoReflection: i,\n redoReflection: n,\n ys: a.reverse(),\n diffBefore: u,\n deleted: h\n }), this.registry.onRemoveRows) {\n const c = this.clone();\n c.idMatrix = l, c.area = {\n top: t,\n bottom: t + e - 1,\n left: this.area.left,\n right: this.area.right\n }, c.addressCaches = /* @__PURE__ */ new Map(), c._addressCacheWatermark = 0, this.registry.onRemoveRows({ sheet: c, ys: a.reverse() });\n }\n return this.refresh(!0, !0);\n }\n insertCols({\n x: t,\n numCols: e,\n baseX: s,\n diff: i,\n partial: n,\n updateChangedTime: o,\n operator: a = \"SYSTEM\",\n undoReflection: l,\n redoReflection: h\n }) {\n if (this.maxNumCols !== -1 && this.numCols + e > this.maxNumCols)\n return console.error(`Columns are limited to ${this.maxNumCols}.`), this;\n const u = this.numRows, c = [], f = Date.now();\n for (let d = 0; d <= u; d++) {\n const p = [];\n for (let m = 0; m < e; m++) {\n const y = this._generateId();\n p.push(y);\n const g = this.getCell({ y: d, x: s }, { resolution: \"SYSTEM\" }), b = this._copyCellLayout(g);\n this._ensureIdRow(d).splice(t, 0, y), this.registry.data[y] = { ...b }, this.registry.systems[y] = { id: y, sheetId: this.id, changedTime: f };\n }\n c.push(p);\n }\n if (this.area.right += e, this._pushHistory({\n applyed: !0,\n operation: \"INSERT_COLS\",\n srcSheetId: this.id,\n dstSheetId: this.id,\n undoReflection: l,\n redoReflection: h,\n x: t,\n numCols: e,\n idMatrix: c\n }), i && Object.assign(this.registry.lastHistory, this._update({ diff: i, partial: n, updateChangedTime: o, operator: a }), {\n partial: n\n }), this.registry.onInsertCols) {\n const d = this.clone();\n d.area = {\n top: this.area.top,\n bottom: this.area.bottom,\n left: t,\n right: t + e - 1\n }, d.addressCaches = /* @__PURE__ */ new Map(), d._addressCacheWatermark = 0, this.registry.onInsertCols({ sheet: d, x: t, numCols: e });\n }\n return this.refresh(!0, !0);\n }\n removeCols({\n x: t,\n numCols: e,\n operator: s = \"SYSTEM\",\n undoReflection: i,\n redoReflection: n\n }) {\n if (this.minNumCols !== -1 && this.numCols - e < this.minNumCols)\n return console.error(`At least ${this.minNumCols} column(s) are required.`), this;\n const o = new wt(this), a = [];\n this._materializeIdMatrix();\n const l = this.idMatrix.map((c) => [...c]);\n for (let c = t; c < t + e; c++) {\n const f = this.getCell({ y: 0, x: c }, { resolution: \"SYSTEM\" });\n if (s === \"USER\" && F(f == null ? void 0 : f.prevention, oe)) {\n console.warn(`Cannot delete col ${c}.`);\n continue;\n }\n for (let d = 1; d <= this.numRows; d++) {\n const p = this.getId({ y: d, x: c });\n p != null && (o.collectDependents(p), o.map[p] = this.getId({ y: d, x: c + e }));\n }\n a.unshift(c);\n }\n const h = [];\n this.idMatrix.forEach((c) => {\n const f = [];\n h.push(f), a.forEach((d) => {\n f.unshift(...c.splice(d, 1));\n });\n }), this.area.right -= a.length;\n const u = o.resolveDependents(\"removeCols\");\n if (this._pushHistory({\n applyed: !0,\n operation: \"REMOVE_COLS\",\n srcSheetId: this.id,\n dstSheetId: this.id,\n undoReflection: i,\n redoReflection: n,\n xs: a.reverse(),\n diffBefore: u,\n deleted: h\n }), this.registry.onRemoveCols) {\n const c = this.clone();\n c.idMatrix = l, c.area = {\n top: this.area.top,\n bottom: this.area.bottom,\n left: t,\n right: t + e - 1\n }, c.addressCaches = /* @__PURE__ */ new Map(), c._addressCacheWatermark = 0, this.registry.onRemoveCols({ sheet: c, xs: a.reverse() });\n }\n return this.refresh(!0, !0);\n }\n /** @internal */\n histories() {\n return [...this.registry.histories];\n }\n /** @internal */\n historyIndex() {\n return this.registry.historyIndex;\n }\n /** @internal */\n historySize() {\n return this.registry.histories.length;\n }\n /** @internal */\n getHistoryLimit() {\n return this.registry.historyLimit;\n }\n /** @internal */\n parse(t, e) {\n const s = this.getCell(t, { resolution: \"SYSTEM\" }) ?? {};\n return this.getPolicy(t).deserializeValue(e, s);\n }\n /** @internal */\n render(t) {\n const { point: e, apply: s } = t;\n return this.getId(e), this.getPolicy(e).render({ sheet: this, point: e, apply: s, value: void 0 });\n }\n getSerializedValue({\n point: t,\n cell: e,\n resolution: s = \"RESOLVED\"\n }) {\n if (e == null) {\n const o = this.getId(t);\n e = o != null ? this.registry.data[o] : void 0;\n }\n if (e == null)\n return \"\";\n const i = this.getPolicy(t), n = e.value;\n if (typeof n == \"string\" && n[0] === \"=\") {\n if (s === \"SYSTEM\")\n return n;\n if (s === \"RAW\" || (e == null ? void 0 : e.formulaEnabled) === !1) {\n const o = new te(n.substring(1));\n return o.tokenize(), \"=\" + o.display({ sheet: this });\n }\n try {\n const o = this.getId(t), a = we({ value: n, sheet: this, point: t, raise: !0, resolution: s, at: o }), l = ut({ value: a, raise: !1 });\n return i.serialize({ value: l, cell: e, sheet: this, point: t });\n } catch (o) {\n return i.serialize({ value: o, cell: e, sheet: this, point: t });\n }\n }\n return i.serialize({ value: n, cell: e, sheet: this, point: t });\n }\n /** @internal */\n trim(t) {\n const e = Object.assign(Object.create(Object.getPrototypeOf(this)), this);\n return e.area = t, e._stripped = Dt, e;\n }\n /**\n * Solve all formulas in this sheet and return a 2D matrix of resolved values.\n * @internal\n */\n solve({ raise: t = !1, at: e }) {\n return Ve({ sheet: this, raise: t, at: e });\n }\n /**\n * Collapse this sheet to a scalar (top-left cell value).\n * @internal\n */\n strip({ raise: t = !1, at: e }) {\n var i;\n if (!Dt.is(this._stripped))\n return this._stripped;\n let s = this;\n for (; s instanceof Y; )\n s = (i = Ve({ sheet: s, raise: t, at: e })[0]) == null ? void 0 : i[0];\n return this._stripped = s, this._stripped;\n }\n /** @internal */\n /** Apply one undo/redo diff entry to registry.data. Shared by sync/async. @internal */\n _applyDiffCell(t, e, s) {\n let i;\n s ? (i = { ...this.registry.data[t] }, Object.keys(e).forEach((a) => {\n e[a] === void 0 ? delete i[a] : i[a] = e[a];\n })) : i = { ...e };\n const n = this.registry.systems[t];\n n != null && (n.changedTime = Date.now()), this.registry.data[t] = i, this.clearDependencies(t), this.processFormula(i.value, { dependency: t });\n const o = this.addressCaches.get(t);\n if (o) {\n const a = T(o);\n if (a.x === 0 && a.y > 0) {\n const l = this.defaultRowHeight || rt, h = i.height ?? l;\n h !== l ? this._rowHeightOverrides.set(a.y, h) : this._rowHeightOverrides.delete(a.y), i.filtered ? this._filteredRows.add(a.y) : this._filteredRows.delete(a.y);\n }\n }\n }\n _finishApplyDiff(t) {\n this._warmAddressCaches();\n const e = [];\n for (const s of t) {\n const i = this.getAddressById(s);\n i && e.push(i);\n }\n this.lastChangedAddresses = e;\n }\n _applyDiff(t = {}, e = !0) {\n const s = Object.keys(t);\n for (const i of s)\n this._applyDiffCell(i, t[i] ?? {}, e);\n this._finishApplyDiff(s);\n }\n /** Chunked, progress-reporting counterpart to _applyDiff (large undo/redo). @internal */\n async _applyDiffAsync(t = {}, e = !0, s = {}) {\n var h, u, c;\n const i = Object.keys(t), n = i.length, o = s.yieldControl ?? (() => Promise.resolve()), a = s.frameBudgetMs ?? 12;\n let l = Date.now();\n (h = s.onProgress) == null || h.call(s, { done: 0, total: n });\n for (let f = 0; f < n; f++) {\n const d = i[f];\n this._applyDiffCell(d, t[d] ?? {}, e), Date.now() - l >= a && ((u = s.onProgress) == null || u.call(s, { done: f + 1, total: n }), await o(), l = Date.now());\n }\n (c = s.onProgress) == null || c.call(s, { done: n, total: n });\n }\n undo() {\n if (this.registry.historyIndex < 0)\n return { history: null, newSheet: this.__raw__ };\n const t = this.registry.histories[this.registry.historyIndex--];\n t.applyed = !1, this.registry.currentHistory = this.registry.histories[this.registry.historyIndex];\n const e = this.getSheetBySheetId(t.srcSheetId), s = this.getSheetBySheetId(t.dstSheetId);\n if (!s)\n return { history: null, newSheet: this.__raw__ };\n switch (t.operation) {\n case \"UPDATE\":\n s._applyDiff(t.diffBefore, t.partial ?? !1);\n break;\n case \"INSERT_ROWS\": {\n t.diffBefore && s._applyDiff(t.diffBefore, !1);\n const { rows: i } = Zt({ matrix: t.idMatrix });\n s._materializeIdMatrix(), s.idMatrix.splice(t.y, i), s.area.bottom -= i, s._shiftRowMetaForRemove(t.y, i);\n break;\n }\n case \"INSERT_COLS\": {\n t.diffBefore && s._applyDiff(t.diffBefore, !1);\n const { cols: i } = Zt({ matrix: t.idMatrix });\n s._materializeIdMatrix(), s.idMatrix.forEach((n) => {\n n.splice(t.x, i);\n }), s.area.right -= i;\n break;\n }\n case \"REMOVE_ROWS\": {\n const { ys: i, deleted: n } = t;\n s._materializeIdMatrix(), i.forEach((a, l) => {\n s.idMatrix.splice(a, 0, n[l]);\n }), s.area.bottom += i.length;\n const o = Math.min(...i);\n s._shiftRowMetaForInsert(o, i.length), s._seedRowMeta(o, i.length), this._applyDiff(t.diffBefore, !1);\n break;\n }\n case \"REMOVE_COLS\": {\n const { xs: i, deleted: n } = t;\n s._materializeIdMatrix(), s.idMatrix.forEach((o, a) => {\n for (let l = 0; l < i.length; l++)\n o.splice(i[l], 0, n[a][l]);\n }), s.area.right += i.length, this._applyDiff(t.diffBefore, !1);\n break;\n }\n case \"MOVE\": {\n e && this._moveCells(e, s, t.moveRelations, !0);\n const i = s.lastChangedAddresses;\n s._applyDiff(t.diffBefore, !1), s.lastChangedAddresses = [.../* @__PURE__ */ new Set([...i, ...s.lastChangedAddresses])];\n break;\n }\n case \"SORT_ROWS\": {\n s._materializeIdMatrix();\n const i = s.idMatrix.flat();\n s._sortRowMapping(t.sortedRowMapping, !0);\n const n = new wt(s);\n n.buildMap(i, s.idMatrix.flat()), n.resolveDependents(), s._reapplyFilters();\n break;\n }\n }\n return this.refresh(qt(t.operation), !0), s !== this && (s.addressCaches.clear(), s.setTotalSize()), t.operation === \"MOVE\" && e && e !== s && this._xsheetDispatch(e), {\n history: t,\n callback: ({ sheetReactive: i }) => {\n var n, o;\n (o = i.current) == null || o.registry.transmit((n = t.undoReflection) == null ? void 0 : n.transmit);\n }\n };\n }\n redo() {\n if (this.registry.historyIndex + 1 >= this.registry.histories.length)\n return { history: null, newSheet: this.__raw__ };\n const t = this.registry.histories[++this.registry.historyIndex];\n t.applyed = !0, this.registry.currentHistory = t;\n const e = this.getSheetBySheetId(t.srcSheetId), s = this.getSheetBySheetId(t.dstSheetId);\n if (!s)\n return { history: null, newSheet: this.__raw__ };\n switch (t.operation) {\n case \"UPDATE\":\n s._applyDiff(t.diffAfter, t.partial ?? !1);\n break;\n case \"INSERT_ROWS\": {\n t.diffAfter && s._applyDiff(t.diffAfter, !1);\n const { rows: i } = Zt({ matrix: t.idMatrix });\n s._materializeIdMatrix(), s.idMatrix.splice(t.y, 0, ...t.idMatrix), s.area.bottom += i, s._shiftRowMetaForInsert(t.y, i), s._seedRowMeta(t.y, i);\n break;\n }\n case \"INSERT_COLS\": {\n t.diffAfter && s._applyDiff(t.diffAfter, !1);\n const { cols: i } = Zt({ matrix: t.idMatrix });\n s._materializeIdMatrix(), s.idMatrix.map((n, o) => {\n n.splice(t.x, 0, ...t.idMatrix[o]);\n }), s.area.right += i;\n break;\n }\n case \"REMOVE_ROWS\": {\n s.removeRows({\n y: t.ys[0],\n numRows: t.ys.length,\n operator: \"SYSTEM\",\n undoReflection: t.undoReflection,\n redoReflection: t.redoReflection\n });\n break;\n }\n case \"REMOVE_COLS\": {\n s.removeCols({\n x: t.xs[0],\n numCols: t.xs.length,\n operator: \"SYSTEM\",\n undoReflection: t.undoReflection,\n redoReflection: t.redoReflection\n });\n break;\n }\n case \"MOVE\": {\n e && this._moveCells(e, s, t.moveRelations, !1);\n break;\n }\n case \"SORT_ROWS\": {\n s._materializeIdMatrix();\n const i = s.idMatrix.flat();\n s._sortRowMapping(t.sortedRowMapping, !1);\n const n = new wt(s);\n n.buildMap(i, s.idMatrix.flat()), n.resolveDependents(), s._reapplyFilters();\n break;\n }\n }\n return this.refresh(qt(t.operation), !0), s !== this && (s.addressCaches.clear(), s.setTotalSize()), t.operation === \"MOVE\" && e && e !== s && this._xsheetDispatch(e), {\n history: t,\n callback: ({ sheetReactive: i }) => {\n var n, o;\n (o = i.current) == null || o.registry.transmit((n = t.redoReflection) == null ? void 0 : n.transmit);\n }\n };\n }\n /** @internal The history the next undo would apply (without applying it). */\n peekUndo() {\n const t = this.registry.historyIndex;\n return t < 0 ? null : this.registry.histories[t];\n }\n /** @internal The history the next redo would apply. */\n peekRedo() {\n const t = this.registry.historyIndex + 1;\n return t >= this.registry.histories.length ? null : this.registry.histories[t];\n }\n /**\n * Async, progress-reporting undo of a large UPDATE (paste/fill). Mirrors the UPDATE\n * branch of undo() but applies diffBefore in chunks. Only call when peekUndo() is an\n * UPDATE; other operations must use the synchronous undo(). @internal\n */\n async undoAsync(t) {\n if (this.registry.historyIndex < 0)\n return { history: null, newSheet: this.__raw__ };\n const e = this.registry.histories[this.registry.historyIndex];\n if (e.operation !== \"UPDATE\")\n return this.undo();\n this.registry.historyIndex--, e.applyed = !1, this.registry.currentHistory = this.registry.histories[this.registry.historyIndex];\n const s = this.getSheetBySheetId(e.dstSheetId);\n return s ? (await s._applyDiffAsync(e.diffBefore, e.partial ?? !1, t), this.refresh(qt(e.operation), !0), s !== this && (s.addressCaches.clear(), s.setTotalSize()), {\n history: e,\n callback: ({ sheetReactive: i }) => {\n var n, o;\n (o = i.current) == null || o.registry.transmit((n = e.undoReflection) == null ? void 0 : n.transmit);\n }\n }) : { history: null, newSheet: this.__raw__ };\n }\n /** Async, progress-reporting redo of a large UPDATE (paste/fill). @internal */\n async redoAsync(t) {\n if (this.registry.historyIndex + 1 >= this.registry.histories.length)\n return { history: null, newSheet: this.__raw__ };\n const e = this.registry.histories[this.registry.historyIndex + 1];\n if (e.operation !== \"UPDATE\")\n return this.redo();\n this.registry.historyIndex++, e.applyed = !0, this.registry.currentHistory = e;\n const s = this.getSheetBySheetId(e.dstSheetId);\n return s ? (await s._applyDiffAsync(e.diffAfter, e.partial ?? !1, t), this.refresh(qt(e.operation), !0), s !== this && (s.addressCaches.clear(), s.setTotalSize()), {\n history: e,\n callback: ({ sheetReactive: i }) => {\n var n, o;\n (o = i.current) == null || o.registry.transmit((n = e.redoReflection) == null ? void 0 : n.transmit);\n }\n }) : { history: null, newSheet: this.__raw__ };\n }\n /** @internal */\n getFunctionByName(t) {\n return this.registry.functions[t];\n }\n /** @internal */\n clearDependencies(t) {\n var s;\n const e = this.registry.systems[t];\n (s = e == null ? void 0 : e.dependencies) == null || s.forEach((i) => {\n var n, o;\n (o = (n = this.registry.systems[i]) == null ? void 0 : n.dependents) == null || o.delete(t);\n }), e != null && (e.dependencies = /* @__PURE__ */ new Set());\n }\n /** @internal */\n addDependency(t, e) {\n const s = Lt(this.registry, t);\n s.dependents == null && (s.dependents = /* @__PURE__ */ new Set()), s.dependents.add(e);\n const i = Lt(this.registry, e);\n i.dependencies == null && (i.dependencies = /* @__PURE__ */ new Set()), i.dependencies.add(t);\n }\n /** @internal */\n getSolvedCache(t) {\n const e = this.getId(t);\n return [this.registry.solvedCaches.has(e), this.registry.solvedCaches.get(e)];\n }\n /** @internal */\n setSolvingCache(t) {\n const e = this.getId(t);\n this.registry.solvedCaches.set(e, Yt), Lt(this.registry, e, { tmpAsyncCaches: {} });\n }\n /** @internal */\n finishSolvedCache(t, e) {\n if (Yt.is(e))\n return;\n const s = this.getId(t);\n this.registry.solvedCaches.set(s, e);\n const i = this.registry.data[s];\n if (i == null)\n return;\n const n = this.registry.systems[s], o = n == null ? void 0 : n.tmpAsyncCaches;\n o != null && (Object.keys(o).length > 0 ? i.asyncCaches = o : delete i.asyncCaches, delete n.tmpAsyncCaches);\n }\n /** @internal */\n clearSolvedCaches() {\n this.registry.solvedCaches.clear();\n for (const t of this.registry.lastSpilledTargetIds) {\n const e = this.registry.systems[t];\n (e == null ? void 0 : e.spilledFrom) != null && delete e.spilledFrom;\n }\n this.registry.lastSpilledTargetIds.clear();\n }\n /**\n * Spill a 2D matrix of values starting from the origin cell.\n * The origin cell receives matrix[0][0] and adjacent cells receive spill values in solvedCaches.\n * For a 1×1 matrix, no spill occurs — the single value is cached directly.\n * Throws FormulaError('#REF!') if the spill range is obstructed.\n *\n * @param origin The anchor cell that produced the spill.\n * @param matrix The 2D array of resolved scalar values.\n * @returns The top-left value (matrix[0][0]).\n * @internal\n */\n spill(t, e) {\n var a;\n const s = e.length, i = s > 0 ? e[0].length : 0;\n if (s <= 1 && i <= 1)\n return (a = e[0]) == null ? void 0 : a[0];\n for (let l = 0; l < s; l++)\n for (let h = 0; h < i; h++) {\n if (l === 0 && h === 0)\n continue;\n const u = { y: t.y + l, x: t.x + h }, c = this.getId(u), f = M(u);\n if (c == null) {\n console.warn(`Spill target ${f} is out of bounds.`);\n continue;\n }\n const d = this.registry.data[c];\n if ((d == null ? void 0 : d.value) != null && d.value !== \"\")\n throw new S(\n \"#REF!\",\n `Array result was not expanded because it would overwrite data in ${f}.`\n );\n if (this.registry.solvedCaches.has(c))\n throw new S(\n \"#REF!\",\n `Array result was not expanded because ${f} is already occupied by another formula.`\n );\n }\n const n = this.getId(t), o = [];\n for (let l = 0; l < s; l++)\n for (let h = 0; h < i; h++) {\n const u = { y: t.y + l, x: t.x + h }, c = this.getId(u);\n if (c != null && (this.finishSolvedCache(u, e[l][h]), (l !== 0 || h !== 0) && (o.push(M(u)), n != null))) {\n const f = Lt(this.registry, c, {});\n f.spilledFrom = M(t), this.registry.lastSpilledTargetIds.add(c);\n }\n }\n return e[0][0];\n }\n /** @internal */\n sheetPrefix(t = !1) {\n return t ? \"\" : ri(this.name);\n }\n /** @internal */\n rangeToArea(t) {\n const e = t.split(\":\");\n let [s, i] = e;\n s.match(/[a-zA-Z]$/) && (s += \"1\"), s.match(/^[1-9]/) && (s = `A${s}`), i != null && i.match(/[a-zA-Z]$/) && (i += this.bottom), i != null && i.match(/^[1-9]/) && (i = `${G(this.right)}${i}`);\n const { y: n, x: o } = T(s), { y: a, x: l } = T(i || s);\n return {\n top: Math.abs(n),\n left: Math.abs(o),\n bottom: Math.abs(a),\n right: Math.abs(l)\n };\n }\n get __raw__() {\n return this;\n }\n get shape() {\n return me(this.area);\n }\n get hasSingleCell() {\n const t = this.shape;\n return t.rows === 1 && t.cols === 1;\n }\n get currentVersion() {\n return this.version;\n }\n}\nconst we = ({ value: r, sheet: t, point: e, raise: s = !0, resolution: i = \"RESOLVED\", at: n }) => {\n var h;\n const [o, a] = t.getSolvedCache(e);\n if (o && r == null && !Yt.is(a))\n return a;\n if (typeof r != \"string\" || i === \"SYSTEM\")\n return r;\n if (r.charAt(0) === \"'\")\n return i === \"RAW\" ? r : r.substring(1);\n if (r.charAt(0) !== \"=\")\n return r;\n if (i === \"RAW\") {\n const u = new te(r.substring(1), { at: n });\n return u.tokenize(), \"=\" + u.display({ sheet: t });\n }\n let l = r;\n if (o && !Yt.is(a))\n l = a;\n else\n try {\n const u = new te(r.substring(1), { at: n });\n u.tokenize();\n const f = new ss(u.tokens).build();\n l = (h = f == null ? void 0 : f.evaluate) == null ? void 0 : h.call(f, { sheet: t });\n } catch (u) {\n if (s)\n throw t.finishSolvedCache(e, u), u;\n return u;\n }\n return W.is(l) ? l = t.spill(e, l.matrix) : t.finishSolvedCache(e, l), i === \"RESOLVED\" && l instanceof Y && (l = ut({ value: l, raise: s, at: n })), L.is(l) && t.finishSolvedCache(e, l), l;\n}, Ve = ({ sheet: r, raise: t = !0, at: e }) => {\n const s = r.area;\n return r._toValueMatrix({ area: s, at: e, resolution: \"SYSTEM\" }).map((n, o) => {\n const a = s.top + o;\n return n.map((l, h) => {\n const u = s.left + h, c = { y: a, x: u }, [f, d] = r.getSolvedCache(c);\n try {\n if (Yt.is(d))\n throw new S(\"#REF!\", \"References are circulating.\", new Error(l));\n if (L.is(d))\n return d;\n if (S.is(d))\n throw d;\n if (d != null)\n return d;\n r.setSolvingCache(c);\n const p = we({ value: l, sheet: r, point: c, raise: t, at: e, resolution: \"RESOLVED\" });\n return r.finishSolvedCache(c, p), p;\n } catch (p) {\n if (r.finishSolvedCache(c, p), t)\n throw p;\n return p;\n }\n });\n });\n}, ut = ({ value: r, at: t, raise: e = !0 }) => r instanceof Y ? r.strip({ raise: e, at: t }) : r, xe = new _t(\"asyncCacheMiss\"), Ci = (r) => r.some((t) => L.is(t)), ps = (r) => (r == null ? void 0 : r.__gsType) === \"Sheet\", Pt = (r, t) => {\n for (const e of r)\n if (L.is(e) || Array.isArray(e) && Pt(e, t) || W.is(e) && Pt(e.matrix, t) || ps(e) && Pt(e._toValueMatrix({ at: t }), t))\n return !0;\n return !1;\n}, Ti = (r, t = 0) => {\n let e = 3735928559 ^ t, s = 1103547991 ^ t;\n for (let i = 0; i < r.length; i++) {\n const n = r.charCodeAt(i);\n e = Math.imul(e ^ n, 2654435761), s = Math.imul(s ^ n, 1597334677);\n }\n return e = Math.imul(e ^ e >>> 16, 2246822507), e ^= Math.imul(s ^ s >>> 13, 3266489909), s = Math.imul(s ^ s >>> 16, 2246822507), s ^= Math.imul(e ^ e >>> 13, 3266489909), 4294967296 * (2097151 & s) + (e >>> 0);\n}, Mi = (r, t, e = 1) => {\n const s = JSON.stringify(t, (n, o) => ps(o) ? ii(o) : L.is(o) ? null : o), i = Array.from({ length: e }, (n, o) => Ti(s, o).toString(36));\n return `${r}:${s.length}:${i.join(\"-\")}`;\n}, Fi = (r, t, e, s = !1) => {\n var l;\n const i = r.registry, n = i.data[t];\n if (n == null)\n return xe;\n const o = Lt(i, t, { tmpAsyncCaches: {} });\n if (n.asyncCaches != null) {\n const h = n.asyncCaches[e];\n if (h != null && (h.expireTime == null || Date.now() < h.expireTime))\n return o.tmpAsyncCaches[e] = h, h.value;\n }\n const a = `${t}:${e}`;\n if (i.asyncPending.has(a))\n return i.asyncPending.get(a);\n if (s && ((l = i.asyncInflight) != null && l.has(e))) {\n const h = i.asyncInflight.get(e);\n return i.asyncPending.set(a, h.pending), h.pending.promise.then((u) => {\n const c = i.data[t];\n c != null && ee(c, e, { value: u, expireTime: h.expireTime });\n }).catch((u) => {\n S.is(u) || (u = new S(\"#ASYNC!\", (u == null ? void 0 : u.message) ?? String(u), u instanceof Error ? u : void 0));\n const c = i.data[t];\n c != null && ee(c, e, { value: u, expireTime: h.expireTime });\n }).finally(() => {\n i.asyncPending.delete(a);\n }), h.pending;\n }\n return xe;\n}, Oi = (r, t, e, s, i, n = !1) => {\n const o = t.registry, a = i != null ? Date.now() + i : void 0, l = `${e}:${s}`, h = new L(r);\n return o.asyncPending.set(l, h), n && (o.asyncInflight || (o.asyncInflight = /* @__PURE__ */ new Map()), o.asyncInflight.set(s, { pending: h, expireTime: a })), r.then((u) => {\n const c = o.data[e];\n c != null && ee(c, s, { value: u, expireTime: a });\n }).catch((u) => {\n S.is(u) || (u = new S(\"#ASYNC!\", (u == null ? void 0 : u.message) ?? String(u), u instanceof Error ? u : void 0));\n const c = o.data[e];\n c != null && ee(c, s, { value: u, expireTime: a });\n }).finally(() => {\n o.asyncPending.delete(l), n && o.asyncInflight && o.asyncInflight.delete(s), o.solvedCaches.clear(), o.transmit();\n }), h;\n}, de = () => new L(Promise.resolve()), Me = (r, t) => {\n if (typeof r == \"string\" || typeof t == \"string\")\n return Q(r) > Q(t);\n try {\n return O(r) > O(t);\n } catch {\n return !1;\n }\n}, Fe = (r, t) => {\n if (typeof r == \"string\" || typeof t == \"string\")\n return Q(r) >= Q(t);\n try {\n return O(r) >= O(t);\n } catch {\n return !1;\n }\n}, ms = (r, t) => !Fe(r, t), ys = (r, t) => !Me(r, t), Oe = (r, t) => Q(r).toLowerCase() === Q(t).toLowerCase(), Di = (r, t) => !Oe(r, t), De = (r) => typeof r != \"string\" || !r.endsWith(\"%\") ? !1 : !isNaN(parseFloat(r.slice(0, -1))), zt = (r) => typeof r == \"number\" || De(r) ? !0 : typeof r == \"string\" ? !isNaN(parseFloat(r)) && isFinite(Number(r)) : !1, O = (r, t) => {\n const { alternative: e, ignore: s } = t || {};\n if (L.is(r))\n return r;\n if (typeof r > \"u\" && typeof e < \"u\")\n return e;\n if (!r)\n return 0;\n if (r instanceof Y) {\n const n = ut({ value: r });\n return O(n, { alternative: e });\n }\n if (r instanceof Date)\n return r.getTime();\n if (R.is(r))\n return r.days;\n if (De(r))\n return parseFloat(r.slice(0, -1)) / 100;\n const i = parseFloat(r);\n if (isNaN(i)) {\n if (s)\n return e ?? 0;\n throw new S(\"#VALUE!\", `${r} cannot be converted to a number`);\n }\n return i;\n}, Q = (r) => {\n if (L.is(r))\n return r;\n if (r === 0)\n return \"0\";\n if (!r)\n return \"\";\n if (r instanceof Y) {\n const t = ut({ value: r });\n return Q(t);\n }\n switch (r.constructor.name) {\n case \"Date\":\n return z(r).format(Ts);\n default:\n return String(r);\n }\n}, Wt = (r, t) => {\n const { alternative: e, ignore: s } = t ?? {};\n if (L.is(r))\n return r;\n if (typeof r > \"u\" && typeof e < \"u\")\n return e;\n if (r === null)\n return !1;\n if (r instanceof Y) {\n const i = ut({ value: r });\n return Wt(i, t);\n }\n if (typeof r == \"string\" || r instanceof String) {\n const i = { true: !0, false: !1 }[r.toLowerCase()];\n if (i == null) {\n if (s)\n return !1;\n throw new S(\"#VALUE!\", `text '${r}' cannot be converted to a boolean`);\n }\n return i;\n }\n return !!r;\n};\nfunction Ni(r) {\n if (L.is(r) || r instanceof Date)\n return r;\n if (r instanceof Y) {\n const t = ut({ value: r });\n return Ni(t);\n }\n if (typeof r == \"number\")\n return new Date(r);\n if (typeof r == \"string\") {\n const t = new Date(r);\n if (!isNaN(t.getTime()))\n return t;\n }\n throw new S(\"#VALUE!\", `${r} cannot be converted to a date`);\n}\nconst vi = /^(<=|>=|<>|>|<|=)?(.*)$/, ki = (r, t) => {\n const e = t.match(vi), [, s = \"\", i = \"\"] = e || [];\n let n = i;\n if (s === \">\" || s === \"<\" || s === \">=\" || s === \"<=\")\n switch (typeof r == \"number\" && (n = parseFloat(i)), s) {\n case \">\":\n return Me(r, n);\n case \">=\":\n return Fe(r, n);\n case \"<\":\n return ms(r, n);\n case \"<=\":\n return ys(r, n);\n }\n const o = s === \"\" || s === \"=\";\n if (i === \"\")\n return (r == null || r === \"\") === o;\n if (typeof r == \"string\" || r instanceof String) {\n const a = i.replace(/~\\*/g, \"(\\\\*)\").replace(/~\\?/g, \"(\\\\?)\").replace(/\\*/g, \"(.*)\").replace(/\\?/g, \"(.)\");\n return RegExp(`^${a}$`, \"i\").test(r) === o;\n }\n return Oe(r, n) === o;\n}, dt = (r, t, e) => {\n if (r instanceof Y) {\n const s = r.solve({ at: e });\n for (let i = 0; i < s.length; i++)\n for (let n = 0; n < s[i].length; n++)\n t(s[i][n], { y: i, x: n });\n } else if (W.is(r)) {\n const s = r.matrix;\n for (let i = 0; i < s.length; i++)\n for (let n = 0; n < s[i].length; n++)\n t(s[i][n], { y: i, x: n });\n } else if (Array.isArray(r) && Array.isArray(r[0]))\n for (let s = 0; s < r.length; s++)\n for (let i = 0; i < r[s].length; i++)\n t(r[s][i], { y: s, x: i });\n else\n t(r, { y: 0, x: 0 });\n}, Fn = (r, t, e) => {\n if (r.length === 0)\n return [];\n const s = r[0], i = s.numRows, n = s.numCols, o = Array.from({ length: i }, () => Array(n).fill(!0));\n for (let a = 0; a < r.length; a++) {\n const l = r[a], h = t[a];\n dt(\n l,\n (u, c) => {\n var f, d;\n (f = o[c.y])[d = c.x] && (f[d] = ki(u, h));\n },\n e\n );\n }\n return o;\n}, nt = (r) => (r == null ? void 0 : r.__gsType) === \"Sheet\", On = {\n name: \"condition\",\n description: 'The condition to evaluate. Use \"=\" for equal, \"<\" for less than, \">\" for greater than, \"<=\" for less than or equal, \">=\" for greater than or equal, \"<>\" for not equal.',\n acceptedTypes: [\"any\"]\n}, $i = (r, { nullable: t = !0, errorTolerant: e = !1, acceptedTypes: s }) => {\n if (!s || s.length === 0)\n return !0;\n if (r == null)\n return t;\n if (S.is(r) || r instanceof Error) {\n if (e)\n return !0;\n throw r;\n }\n for (const i of s)\n switch (i) {\n case \"any\":\n return !0;\n case \"number\":\n if (zt(r))\n return !0;\n break;\n case \"string\":\n if (typeof r == \"string\")\n return !0;\n break;\n case \"boolean\":\n if (typeof r == \"boolean\")\n return !0;\n break;\n case \"date\":\n if (r instanceof Date)\n return !0;\n break;\n case \"time\":\n if (R.is(r))\n return !0;\n break;\n case \"matrix\":\n if (ft(r))\n return !0;\n break;\n case \"reference\":\n if (nt(r))\n return !0;\n break;\n }\n return !1;\n}, ft = (r) => nt(r) || W.is(r) || Array.isArray(r) && Array.isArray(r[0]), Li = (r, t) => {\n var i;\n if (!ft(r))\n return r;\n if (nt(r))\n return ut({ value: r, raise: !1, at: t });\n const e = W.is(r) ? r.matrix : r;\n return (i = e == null ? void 0 : e[0]) == null ? void 0 : i[0];\n}, ze = (r) => {\n if (nt(r))\n return !r.hasSingleCell;\n if (W.is(r)) {\n const t = r.matrix;\n return t.length > 1 || t.length === 1 && t[0].length > 1;\n }\n return Array.isArray(r) && Array.isArray(r[0]) ? r.length > 1 || r[0].length > 1 : !1;\n}, We = (r, t) => {\n const e = [];\n let s = -1, i = 0;\n for (let n = 0; n < r.length; n++)\n r[n].variadic && (s < 0 && (s = n), i++);\n for (let n = 0; n < t; n++)\n if (s >= 0 && n >= s) {\n const o = (n - s) % i;\n e.push(s + o);\n } else n < r.length ? e.push(n) : e.push(r.length - 1);\n return e;\n}, re = class re {\n constructor({ args: t, sheet: e, at: s }) {\n this.defs = [], this.description = \"\", this.category = \"other\", this.isAsync = !1, this.hashPrecision = 1, this.useInflight = !0, this.broadcastDisabled = !1, this.autoSpilling = !1, this.eachMatrix = (i, n) => {\n if (nt(i)) {\n const o = i.solve({ at: this.at, raise: !0 });\n for (let a = 0; a < o.length; a++)\n for (let l = 0; l < o[a].length; l++)\n n(o[a][l]);\n } else if (W.is(i)) {\n const o = i.matrix;\n for (let a = 0; a < o.length; a++)\n for (let l = 0; l < o[a].length; l++)\n n(o[a][l]);\n } else if (Array.isArray(i) && Array.isArray(i[0]))\n for (let o = 0; o < i.length; o++)\n for (let a = 0; a < i[o].length; a++)\n n(i[o][a]);\n else\n n(i);\n }, this.args = t.map((i) => {\n try {\n return i.evaluate({ sheet: e });\n } catch (n) {\n return n;\n }\n }), this.sheet = e, this.at = s ?? \"?\";\n }\n _main(...t) {\n if (this.autoSpilling) {\n const e = this.main(...t);\n return this.isAsync ? Promise.resolve(e).then((s) => new W(s)) : new W(e);\n }\n return this.main(...t);\n }\n /**\n * Validate and normalise arguments before `main()` is called.\n *\n * Checks:\n * 1. Argument count satisfies defs (respecting optional / variadic).\n * 2. Each argument's runtime type matches the corresponding def's `type` list.\n *\n * Subclasses may override for additional coercion / spreading.\n */\n validate(t) {\n const e = [...t], s = this.defs;\n if (s.length === 0) {\n if (t.length !== 0)\n throw new S(\"#N/A\", \"Too many arguments: expected 0, got \" + t.length + \".\");\n return e;\n }\n let i = 0, n = !1;\n for (const a of s)\n a.variadic && (n = !0), a.optional || i++;\n if (t.length < i)\n throw new S(\"#N/A\", `Too few arguments: expected at least ${i}, got ${t.length}.`);\n if (!n && t.length > s.length)\n throw new S(\"#N/A\", `Too many arguments: expected at most ${s.length}, got ${t.length}.`);\n const o = We(s, t.length);\n for (let a = 0; a < t.length; a++) {\n const l = s[o[a]];\n if (!l)\n continue;\n let h = t[a];\n if (!(!l.acceptedTypes || l.acceptedTypes.length === 0)) {\n if (ze(h)) {\n if (!l.takesMatrix)\n continue;\n } else ft(h) && (l.takesMatrix || (h = Li(h, this.at)));\n if (De(h) && (h = parseFloat(h.slice(0, -1)) / 100), !$i(h, l))\n throw new S(\n \"#VALUE!\",\n `Argument \"${l.name}\" (position ${a + 1}) expected ${l.acceptedTypes.join(\" | \")}, got ${typeof h}.`\n );\n e[a] = h;\n }\n }\n return e;\n }\n /**\n * Extract a 2D array from a matrix value (Spilling, Sheet, or nested array).\n * Default behavior for Sheet is value.solve(). Functions like COL can override\n * this to preserve Sheet metadata per cell.\n */\n toMatrix(t) {\n return W.is(t) ? t.matrix : nt(t) ? t.solve({ at: this.at }) : Array.isArray(t) && Array.isArray(t[0]) ? t : [[t]];\n }\n /**\n * Collapse a 1×1 matrix value (Sheet, Spilling, or 2D array) to a scalar.\n * Non-matrix values pass through unchanged.\n *\n * Override in sub-classes that need the original Sheet / reference\n * metadata (e.g. COL, ROW) — for instance, to extract position\n * information before collapsing.\n */\n toScalar(t) {\n var e, s, i;\n if (nt(t)) {\n const { rows: n, cols: o } = t.shape;\n return n === 1 && o === 1 ? t.strip({}) : t;\n }\n return W.is(t) ? (s = (e = t.matrix) == null ? void 0 : e[0]) == null ? void 0 : s[0] : Array.isArray(t) ? Array.isArray(t[0]) ? (i = t[0]) == null ? void 0 : i[0] : t[0] : t;\n }\n call() {\n const t = this.broadcast();\n if (t !== void 0)\n return t;\n if (Pt(this.args, this.at))\n return de();\n if (this.args = this.validate(this.args), this.isAsync) {\n const e = Mi(this.constructor.name, this.args, this.hashPrecision), s = Fi(this.sheet, this.at, e, this.useInflight);\n if (s !== xe)\n return s;\n const i = this._main(...this.args);\n return Oi(i, this.sheet, this.at, e, this.ttlMilliseconds, this.useInflight);\n }\n return this._main(...this.args);\n }\n /**\n * If any broadcastable argument is a matrix (multi-cell), expand the call\n * across all element positions and return a Spilling.\n * Returns `undefined` when no broadcast is necessary.\n *\n * Rules:\n * - broadcastDisabled = true → never broadcast\n * - An arg is broadcastable when its corresponding args[].takesMatrix is not true\n * - A Sheet/Spilling/2D-array whose size is (1,1) is treated as a scalar\n * (not broadcast); only multi-cell matrices trigger broadcast\n * - For variadic args, extra args are assigned round-robin\n * across the variadic helpArg positions\n */\n broadcast() {\n if (this.broadcastDisabled)\n return;\n const t = We(this.defs, this.args.length), e = this.args.map((h, u) => {\n var f;\n const c = t[u];\n return !((f = this.defs[c]) != null && f.takesMatrix);\n }), s = this.args.map((h, u) => e[u] && ze(h) ? this.toMatrix(h) : null);\n if (s.every((h) => h === null))\n return;\n const i = this.args.map((h, u) => s[u] !== null ? h : this.toScalar(h));\n let n = 1, o = 1;\n for (const h of s)\n h && (n = Math.max(n, h.length), o = Math.max(\n o,\n h.reduce((u, c) => Math.max(u, c.length), 0)\n ));\n const a = this.args, l = [];\n for (let h = 0; h < n; h++) {\n const u = [];\n for (let c = 0; c < o; c++) {\n const f = i.map((d, p) => {\n var y;\n const m = s[p];\n return m ? ((y = m == null ? void 0 : m[h]) == null ? void 0 : y[c]) ?? null : d;\n });\n try {\n if (Ci(f))\n u.push(de());\n else {\n const d = this.validate(f);\n Pt(d, this.at) ? u.push(de()) : u.push(this._main(...d));\n }\n } catch (d) {\n u.push(d);\n }\n }\n l.push(u);\n }\n return this.args = a, l;\n }\n};\nre.__name = \"\", re.isAsync = !1;\nlet A = re;\nconst ve = class ve extends A {\n constructor() {\n super(...arguments), this.isAsync = !0;\n }\n};\nve.isAsync = !0;\nlet Xe = ve;\nconst Pi = `Returns the sum of two numbers.\nThis is the same as the '+' operator.`;\nclass Hi extends A {\n constructor() {\n super(...arguments), this.example = \"ADD(2, 3)\", this.description = Pi, this.defs = [\n { name: \"value1\", description: \"First additive.\", acceptedTypes: [\"number\", \"date\", \"time\"] },\n { name: \"value2\", description: \"Second additive.\", acceptedTypes: [\"number\", \"date\", \"time\"] }\n ], this.category = \"math\";\n }\n main(t, e) {\n if (typeof t == \"number\" && typeof e == \"number\")\n return t + e;\n if (t instanceof Date && R.is(e))\n return R.ensure(e).add(t);\n if (R.is(t) && e instanceof Date)\n return R.ensure(t).add(e);\n if (t instanceof Date && typeof e == \"number\")\n return z(t).add(e * fe, \"second\").toDate();\n if (typeof t == \"number\" && e instanceof Date)\n return z(e).add(t * fe, \"second\").toDate();\n try {\n return O(t, { alternative: 0 }) + O(e, { alternative: 0 });\n } catch {\n throw new S(\"#VALUE!\", \"Mismatched types for augend or addend.\");\n }\n }\n}\nconst Yi = `Returns the difference of two numbers.\nThis is the same as the '-' operator.`;\nclass Bi extends A {\n constructor() {\n super(...arguments), this.example = \"MINUS(8, 3)\", this.description = Yi, this.defs = [\n { name: \"value1\", description: \"A number that will be subtracted.\", acceptedTypes: [\"number\", \"date\", \"time\"] },\n {\n name: \"value2\",\n description: \"A number that will subtract from value1.\",\n acceptedTypes: [\"number\", \"date\", \"time\"]\n }\n ], this.category = \"math\";\n }\n main(t, e) {\n if (typeof t == \"number\" && typeof e == \"number\")\n return t - e;\n if (t instanceof Date && e instanceof Date)\n return R.fromDates(t, e);\n if (t instanceof Date && R.is(e))\n return R.ensure(e).sub(t);\n if (R.is(t) && e instanceof Date)\n return R.ensure(t).sub(e);\n if (t instanceof Date && typeof e == \"number\")\n return z(t).subtract(e * fe, \"second\").toDate();\n try {\n return O(t, { alternative: 0 }) - O(e, { alternative: 0 });\n } catch {\n throw new S(\"#VALUE!\", \"Mismatched types for minuend or subtrahend.\");\n }\n }\n}\nconst Ui = `Returns the product of two numbers.\nThis is the same as the '*' operator.`;\nclass Vi extends A {\n constructor() {\n super(...arguments), this.example = \"MULTIPLY(6, 7)\", this.description = Ui, this.defs = [\n { name: \"factor1\", description: \"First factor.\", acceptedTypes: [\"number\"] },\n { name: \"factor2\", description: \"Second factor.\", acceptedTypes: [\"number\"] }\n ], this.category = \"math\";\n }\n main(t, e) {\n return O(t) * O(e);\n }\n}\nconst zi = `Returns the result of dividing one number by another.\nThis is the same as the '/' operator.`;\nclass Wi extends A {\n constructor() {\n super(...arguments), this.example = \"DIVIDE(4, 2)\", this.description = zi, this.defs = [\n {\n name: \"dividend\",\n description: \"A number that will be divided by divisor.\",\n acceptedTypes: [\"number\"]\n },\n {\n name: \"divisor\",\n description: \"A number that will divide a dividend. Must be non-zero.\",\n acceptedTypes: [\"number\"]\n }\n ], this.category = \"math\";\n }\n validate(t) {\n const e = super.validate(t).map((s) => O(s));\n if (e[1] === 0)\n throw new S(\"#DIV/0!\", \"The second argument must be non-zero.\");\n return e;\n }\n main(t, e) {\n return t / e;\n }\n}\nconst Xi = \"Returns the sum of a series of numbers or cells.\";\nclass ji extends A {\n constructor() {\n super(...arguments), this.example = \"SUM(A2:A100, 101)\", this.description = Xi, this.defs = [\n {\n name: \"value\",\n description: \"Numbers or ranges to sum.\",\n takesMatrix: !0,\n acceptedTypes: [\"number\", \"matrix\"],\n variadic: !0\n }\n ], this.category = \"math\";\n }\n main(...t) {\n if (t.length === 0)\n return 0;\n let e = 0;\n return t.forEach((s) => {\n dt(\n s,\n (i) => {\n e += O(i, { ignore: !0 });\n },\n this.at\n );\n }), e;\n }\n}\nconst Gi = `Returns the concatenation of two values.\nThis is the same as the '&' operator.`;\nclass Zi extends A {\n constructor() {\n super(...arguments), this.example = 'CONCAT(\"Hello\", \"World\")', this.description = Gi, this.defs = [\n {\n name: \"value1\",\n description: \"A value to be concatenated with value2.\",\n acceptedTypes: [\"string\", \"number\", \"boolean\"]\n },\n {\n name: \"value2\",\n description: \"A value to be concatenated with value1\",\n acceptedTypes: [\"string\", \"number\", \"boolean\"]\n }\n ], this.category = \"text\";\n }\n main(t, e) {\n return Q(t) + Q(e);\n }\n}\nconst qi = `Returns TRUE if the two specified values are equal, FALSE if they are not.\nThis is the same as the '=' operator.`;\nclass Ki extends A {\n constructor() {\n super(...arguments), this.example = \"EQ(6, 7)\", this.description = qi, this.defs = [\n { name: \"value1\", description: \"First value.\", acceptedTypes: [\"any\"] },\n { name: \"value2\", description: \"A value to be compared with value1.\", acceptedTypes: [\"any\"] }\n ], this.category = \"logical\";\n }\n main(t, e) {\n return Oe(t, e);\n }\n}\nconst Ji = `Returns TRUE if the two specified values are not equal, FALSE if they are.\nThis is the same as the '<>' operator.`;\nclass Qi extends A {\n constructor() {\n super(...arguments), this.example = \"NE(6, 7)\", this.description = Ji, this.defs = [\n { name: \"value1\", description: \"First value.\", acceptedTypes: [\"any\"] },\n { name: \"value2\", description: \"A value to be compared with value1.\", acceptedTypes: [\"any\"] }\n ], this.category = \"logical\";\n }\n main(t, e) {\n return Di(t, e);\n }\n}\nconst tr = `Returns TRUE if the first argument is truly greater than the second, FALSE otherwise.\nThis is the same as the '>' operator.`;\nclass er extends A {\n constructor() {\n super(...arguments), this.example = \"GT(5, 3)\", this.description = tr, this.defs = [\n { name: \"value1\", description: \"First value.\", acceptedTypes: [\"any\"] },\n { name: \"value2\", description: \"A value to be compared with value1.\", acceptedTypes: [\"any\"] }\n ], this.category = \"logical\";\n }\n main(t, e) {\n return Me(t, e);\n }\n}\nconst sr = `Returns TRUE if the first argument is greater than the second, FALSE otherwise.\nThis is the same as the '>=' operator.`;\nclass ir extends A {\n constructor() {\n super(...arguments), this.example = \"GTE(5, 3)\", this.description = sr, this.defs = [\n { name: \"value1\", description: \"First value.\", acceptedTypes: [\"any\"] },\n { name: \"value2\", description: \"A value to be compared with value1.\", acceptedTypes: [\"any\"] }\n ], this.category = \"logical\";\n }\n main(t, e) {\n return Fe(t, e);\n }\n}\nconst rr = `Returns TRUE if the first argument is truely less than the second argument, FALSE otherwise.\nThis is the same as the '<' operator.`;\nclass nr extends A {\n constructor() {\n super(...arguments), this.example = \"LT(3, 6)\", this.description = rr, this.defs = [\n { name: \"value1\", description: \"First value.\", acceptedTypes: [\"any\"] },\n { name: \"value2\", description: \"A value to be compared with value1.\", acceptedTypes: [\"any\"] }\n ], this.category = \"logical\";\n }\n main(t, e) {\n return ms(t, e);\n }\n}\nconst or = `Returns TRUE if the first argument is less than the second argument, FALSE otherwise.\nThis is the same as the '<=' operator.`;\nclass ar extends A {\n constructor() {\n super(...arguments), this.example = \"LTE(3, 6)\", this.description = or, this.defs = [\n { name: \"value1\", description: \"First value.\", acceptedTypes: [\"any\"] },\n { name: \"value2\", description: \"A value to be compared with value1.\", acceptedTypes: [\"any\"] }\n ], this.category = \"logical\";\n }\n main(t, e) {\n return ys(t, e);\n }\n}\nconst cr = \"Returns a serial value corresponding to the current date and time.\";\nclass lr extends A {\n constructor() {\n super(...arguments), this.example = \"NOW()\", this.description = cr, this.defs = [], this.category = \"time\";\n }\n main() {\n return /* @__PURE__ */ new Date();\n }\n}\nconst hr = `Returns TRUE if all arguments are logically TRUE.\nReturns FALSE if any argument is logically FALSE.`;\nclass ur extends A {\n constructor() {\n super(...arguments), this.example = \"AND(A1=1, A2=2)\", this.description = hr, this.defs = [\n {\n name: \"expression\",\n description: \"Logical expressions to evaluate.\",\n acceptedTypes: [\"boolean\", \"number\"],\n variadic: !0\n }\n ], this.category = \"logical\";\n }\n main(...t) {\n return t.map((e) => Wt(e)).reduce((e, s) => e && s);\n }\n}\nconst dr = `Returns TRUE if any argument is logically true.\nReturns FALSE if all arguments are logically false.`;\nclass fr extends A {\n constructor() {\n super(...arguments), this.example = \"OR(A1=1, A2=2)\", this.description = dr, this.defs = [\n {\n name: \"expression\",\n description: \"Logical expressions to evaluate.\",\n acceptedTypes: [\"boolean\", \"number\"],\n variadic: !0\n }\n ], this.category = \"logical\";\n }\n main(...t) {\n return t.map((e) => Wt(e)).reduce((e, s) => e || s);\n }\n}\nconst pr = `If the logical expression is TRUE, the second argument is returned.\nIf FALSE, the third argument is returned.`;\nclass mr extends A {\n constructor() {\n super(...arguments), this.example = 'IF(A2 = \"Human\", \"Hello\", \"World\")', this.description = pr, this.defs = [\n { name: \"condition\", description: \"An expression as a condition\", acceptedTypes: [\"any\"] },\n {\n name: \"value1\",\n description: \"value to be returned if the condition is true.\",\n acceptedTypes: [\"any\"]\n },\n {\n name: \"value2\",\n description: \"value to be returned if the condition is false.\",\n optional: !0,\n acceptedTypes: [\"any\"]\n }\n ], this.category = \"logical\";\n }\n main(t, e, s = !1) {\n return Wt(t) ? e : s;\n }\n}\nconst yr = \"Returns the first argument if it is not an error value, otherwise returns the second argument if present, or a blank if the second argument is absent.\";\nclass gr extends A {\n constructor() {\n super(...arguments), this.example = 'IFERROR(A1, \"Error in cell A1\")', this.description = yr, this.defs = [\n {\n name: \"value\",\n description: \"The value to return if value itself is not an error.\",\n acceptedTypes: [\"any\"],\n errorTolerant: !0\n },\n {\n name: \"value_if_error\",\n description: \"The value the function returns if value is an error.\",\n optional: !0,\n acceptedTypes: [\"any\"]\n }\n ], this.category = \"logical\", this.broadcastDisabled = !0;\n }\n main(t, e) {\n return S.is(t) || t instanceof Error ? e : t;\n }\n}\nconst wr = `Returns the inverse of the Boolean; if TRUE, NOT returns FALSE.\nIf FALSE, NOT returns TRUE.`;\nclass xr extends A {\n constructor() {\n super(...arguments), this.example = \"NOT(TRUE)\", this.description = wr, this.defs = [\n {\n name: \"logical expression\",\n description: \"A logical expression as a boolean.\",\n acceptedTypes: [\"boolean\", \"number\"]\n }\n ], this.category = \"logical\";\n }\n main(t) {\n return !Wt(t);\n }\n}\nconst br = \"Returns the count of a series of numbers or cells.\";\nclass Sr extends A {\n constructor() {\n super(...arguments), this.example = \"COUNT(A2:A100,B2:B100,4,26)\", this.description = br, this.defs = [\n {\n name: \"value\",\n description: \"Numbers or ranges to count.\",\n takesMatrix: !0,\n acceptedTypes: [\"number\", \"matrix\"],\n variadic: !0\n }\n ], this.category = \"math\";\n }\n main(...t) {\n let e = 0;\n return t.forEach((s) => {\n ft(s) ? dt(\n s,\n (i) => {\n zt(i) && e++;\n },\n this.at\n ) : (O(s), e++);\n }), e;\n }\n}\nconst _r = \"Returns the absolute value of a number\";\nclass Rr extends A {\n constructor() {\n super(...arguments), this.example = \"ABS(-2)\", this.description = _r, this.defs = [{ name: \"value\", description: \"target number\", acceptedTypes: [\"number\"] }], this.category = \"math\";\n }\n main(t) {\n return Math.abs(O(t));\n }\n}\nconst Er = \"Returns a number multiplied by an exponent.\";\nclass je extends A {\n constructor() {\n super(...arguments), this.example = \"POWER(4,0.5)\", this.description = Er, this.defs = [\n { name: \"base\", description: \"A number to be multiplied by an exponent.\", acceptedTypes: [\"number\"] },\n { name: \"exponent\", description: \"An exponent to power the base.\", acceptedTypes: [\"number\"] }\n ], this.category = \"math\";\n }\n main(t, e) {\n return Math.pow(O(t), O(e));\n }\n}\nconst Ar = \"Returns the number of values in the data set.\";\nclass Ir extends A {\n constructor() {\n super(...arguments), this.example = \"COUNTA(A2:A100,B2:B100,4,26)\", this.description = Ar, this.defs = [\n {\n name: \"value\",\n description: \"Values or ranges to count.\",\n takesMatrix: !0,\n acceptedTypes: [\"number\", \"matrix\"],\n variadic: !0\n }\n ], this.category = \"math\";\n }\n main(...t) {\n let e = 0;\n return t.forEach((s) => {\n dt(\n s,\n (i) => {\n i != null && i !== \"\" && e++;\n },\n this.at\n );\n }), e;\n }\n}\nconst Cr = \"Returns the average of a series of numbers or cells.\";\nclass Tr extends A {\n constructor() {\n super(...arguments), this.example = \"AVERAGE(A2:A100, 101)\", this.description = Cr, this.defs = [\n {\n name: \"value\",\n description: \"Numbers or ranges to average.\",\n takesMatrix: !0,\n acceptedTypes: [\"number\", \"matrix\"],\n variadic: !0\n }\n ], this.category = \"statistics\";\n }\n main(...t) {\n let e = 0, s = 0;\n if (t.forEach((i) => {\n if (ft(i))\n dt(\n i,\n (n) => {\n zt(n) && (e += O(n), s++);\n },\n this.at\n );\n else {\n const n = O(i);\n e += n, s++;\n }\n }), s === 0)\n throw new S(\"#DIV/0!\", \"Evaluation of function AVERAGE caused a divide by zero error.\");\n return e / s;\n }\n}\nconst Mr = \"Returns the max in a series of numbers or cells.\";\nclass Fr extends A {\n constructor() {\n super(...arguments), this.example = \"MAX(A2:A100, 101)\", this.description = Mr, this.defs = [\n {\n name: \"value\",\n description: \"Numbers or ranges to find max from.\",\n acceptedTypes: [\"number\", \"matrix\"],\n takesMatrix: !0,\n variadic: !0\n }\n ], this.category = \"statistics\";\n }\n main(...t) {\n let e = -1 / 0, s = !1;\n return t.forEach((i) => {\n if (ft(i))\n dt(\n i,\n (n) => {\n if (zt(n)) {\n const o = O(n);\n o > e && (e = o), s = !0;\n }\n },\n this.at\n );\n else {\n const n = O(i);\n n > e && (e = n), s = !0;\n }\n }), s ? e : 0;\n }\n}\nconst Or = \"Returns the min in a series of numbers or cells.\";\nclass Dr extends A {\n constructor() {\n super(...arguments), this.example = \"MIN(A2:A100, 101)\", this.description = Or, this.defs = [\n {\n name: \"value\",\n description: \"Numbers or ranges to find min from.\",\n acceptedTypes: [\"number\", \"matrix\"],\n takesMatrix: !0,\n variadic: !0\n }\n ], this.category = \"statistics\";\n }\n main(...t) {\n let e = 1 / 0, s = !1;\n return t.forEach((i) => {\n if (ft(i))\n dt(\n i,\n (n) => {\n if (zt(n)) {\n const o = O(n);\n o < e && (e = o), s = !0;\n }\n },\n this.at\n );\n else {\n const n = O(i);\n n < e && (e = n), s = !0;\n }\n }), s ? e : 0;\n }\n}\nconst Nr = \"Returns the length of a string.\";\nclass vr extends A {\n constructor() {\n super(...arguments), this.example = \"LEN(A2)\", this.description = Nr, this.defs = [\n {\n name: \"text\",\n description: \"A text to be returned the length.\",\n acceptedTypes: [\"string\", \"number\"]\n }\n ], this.category = \"text\";\n }\n main(t) {\n return Q(t).length;\n }\n}\nconst kr = \"Returns a number with positive and negative values reversed.\";\nclass $r extends A {\n constructor() {\n super(...arguments), this.example = \"UMINUS(4)\", this.description = kr, this.defs = [\n { name: \"value1\", description: \"A number that will be subtracted.\", acceptedTypes: [\"number\"] }\n ], this.category = \"math\";\n }\n main(t) {\n return -O(t);\n }\n}\nconst Lr = `Enables the display of values returned from an array formula into multiple rows and/or columns.\nIf the argument is already a Spilling, it is returned as-is. If it is a Sheet (range reference), the field matrix is extracted and wrapped in a Spilling. Otherwise the value is wrapped as a single-element Spilling.`;\nclass Pr extends A {\n constructor() {\n super(...arguments), this.autoSpilling = !0, this.example = \"ARRAYFORMULA(A1:A10 * B1:B10)\", this.description = Lr, this.defs = [\n {\n name: \"value\",\n description: \"The array expression or value to evaluate.\",\n takesMatrix: !0,\n acceptedTypes: [\"matrix\", \"any\"]\n }\n ], this.category = \"logical\", this.broadcastDisabled = !0;\n }\n main(t) {\n return W.is(t) ? t : t instanceof Y ? t._toValueMatrix() : Array.isArray(t) ? t : [[t]];\n }\n}\nconst gs = {\n // Arithmetic & Comparison\n add: Hi,\n minus: Bi,\n uminus: $r,\n multiply: Vi,\n divide: Wi,\n pow: je,\n power: je,\n concat: Zi,\n eq: Ki,\n ne: Qi,\n gt: er,\n gte: ir,\n lt: nr,\n lte: ar,\n // Logical\n if: mr,\n iferror: gr,\n and: ur,\n or: fr,\n not: xr,\n arrayformula: Pr,\n // Statistics & Aggregation\n sum: ji,\n max: Fr,\n min: Dr,\n average: Tr,\n count: Sr,\n counta: Ir,\n // Text\n len: vr,\n // Math\n abs: Rr,\n // Time\n now: lr\n}, Ge = /* @__PURE__ */ new Map(), Dn = (r = gs) => {\n let t = Ge.get(r);\n return t || (t = Object.keys(r).map((e) => {\n const s = r[e], i = new s({ args: [], sheet: {} });\n return {\n name: e.toUpperCase(),\n category: i.category,\n example: i.example ?? (s == null ? void 0 : s.__name) ?? \"Unknown\",\n description: i.description ?? \"\",\n defs: i.defs || []\n };\n }), Ge.set(r, t)), t;\n};\nclass Hr {\n constructor({\n historyLimit: t,\n additionalFunctions: e,\n policies: s = {},\n onSave: i,\n onChange: n,\n onRemoveRows: o,\n onRemoveCols: a,\n onInsertRows: l,\n onInsertCols: h,\n onSelect: u,\n onKeyUp: c,\n onInit: f\n } = {}) {\n this.sheetHead = 0, this.cellHead = 0, this.data = {}, this.systems = {}, this.sheetIdsByName = {}, this.contextsBySheetId = {}, this.choosingSheetId = 0, this.choosingAddress = \"\", this.editingSheetId = 0, this.editingAddress = \"\", this.paletteBySheetName = {}, this.lastFocused = null, this.solvedCaches = /* @__PURE__ */ new Map(), this.lastSpilledTargetIds = /* @__PURE__ */ new Set(), this.asyncFormulaCells = /* @__PURE__ */ new Set(), this.asyncPending = /* @__PURE__ */ new Map(), this.copyingSheetId = 0, this.copyingZone = Ms, this.cutting = !1, this.histories = [], this.historyIndex = -1, this.historyLimit = Cs, this._componentSheetIds = /* @__PURE__ */ new Map(), this.ready = !1, this.functions = {}, this.policies = {}, this.transmit = (d) => {\n }, this.updateSheet = (d) => ({ type: 0, value: d }), t != null && (this.historyLimit = t), this.functions = {\n ...gs,\n ...e\n };\n for (const d in this.functions) {\n const p = this.functions[d];\n p.__name = d;\n }\n this.policies = s, this.onSave = i, this.onChange = n, this.onRemoveRows = o, this.onRemoveCols = a, this.onInsertRows = l, this.onInsertCols = h, this.onSelect = u, this.onKeyUp = c, this.onInit = f;\n }\n boot() {\n if (this.ready || Object.keys(this.contextsBySheetId).length === 0)\n return;\n const t = Object.keys(this.contextsBySheetId), e = [];\n for (let s = 0; s < t.length; s++) {\n const i = t[s], n = this.contextsBySheetId[i], o = n.store.sheetReactive.current;\n if (!o || o.status === 0)\n return;\n e.push(n);\n }\n for (let s = 0; s < e.length; s++) {\n const { store: i, dispatch: n } = e[s], o = i.sheetReactive.current;\n o && (o.resolveFormulas(), n(this.updateSheet(o)));\n }\n this.ready = !0;\n }\n}\nconst Ne = (r = {}) => new Hr(r), Nn = Ne, vn = (r = {}) => ({ registry: Ne(r) }), Yr = (r) => ({\n renderNumber({ value: t }) {\n if (t == null || isNaN(t))\n return \"NaN\";\n const [e, s] = String(parseFloat(t.toPrecision(this.decimalPrecision))).split(\".\"), i = e.replace(/(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, `$1${r}`);\n return s == null ? i : `${i}.${s}`;\n }\n}), kn = Yr(\",\"), $n = {\n renderNumber({ value: r }) {\n return r == null || isNaN(r) ? \"0%\" : `${parseFloat((r * 100).toPrecision(this.decimalPrecision))}%`;\n }\n}, Ln = (r, t, e, s) => {\n if (t != null)\n return t;\n const i = r.getPolicy(e);\n return (e.x === 0 ? i.renderRowHeaderLabel(s) : i.renderColHeaderLabel(s)) ?? null;\n}, Pn = [\n // orange\n \"#FF6600\",\n // purple\n \"#AA44FF\",\n // emeraldblue\n \"#00CCCC\",\n // peach\n \"#EEAAEE\",\n // yellow\n \"#DDDD00\",\n // winered\n \"#AA4444\",\n // lightgreen\n \"#00FF00\",\n // pink\n \"#FF00FF\",\n // navy\n \"#3366FF\",\n // cyan\n \"#008888\"\n], j = \"dashed 1px #888888\", Ze = {\n left: [\"horizontal\", -1],\n right: [\"horizontal\", 1],\n up: [\"vertical\", -1],\n down: [\"vertical\", 1],\n none: [\"none\", 0]\n};\nclass Hn {\n constructor(t, e) {\n const { sheetReactive: s, choosing: i, selectingZone: n } = t, o = s.current;\n if (!o)\n throw new Error(\"Sheet is not available\");\n this.src = Ys(ks(n), i), this.direction = this.suggestDirection(e), this.dst = this.getDestinationArea(e), this.sheet = o;\n }\n /** Build the fill diff without applying it. Shared by the sync/async apply paths. */\n buildDiff() {\n var c, f;\n const [t, e] = Ze[this.direction], { top: s, left: i, bottom: n, right: o } = this.src, a = Jt(n - s + 1, o - i + 1);\n for (let d = s; d <= n; d++)\n for (let p = i; p <= o; p++)\n a[d - s][p - i] = this.sheet.getCell({ y: d, x: p }, { resolution: \"SYSTEM\" }) ?? null;\n const l = me(this.src), h = me(this.dst), u = {};\n if (t === \"horizontal\")\n for (let d = 0; d < h.rows; d++) {\n const p = this.getChangePatterns(a[d], \"\");\n for (let m = 0; m < h.cols; m++) {\n const y = (c = a[d % l.rows]) == null ? void 0 : c[m % l.cols], g = e > 0 ? this.dst.left + m : this.dst.right - m, b = e > 0 ? m % l.cols : (l.cols - 1 - m % l.cols) % l.cols, _ = { y: this.dst.top + d, x: g }, x = this.sheet.getId(_), w = p[b].next().value, E = (y == null ? void 0 : y.formulaEnabled) ?? !0 ? this.sheet.processFormula(w, {\n dependency: x\n }) : w;\n u[M(_)] = {\n ...y,\n value: E\n };\n }\n }\n else if (t === \"vertical\")\n for (let d = 0; d < h.cols; d++) {\n const p = this.getChangePatterns(\n a.map((m) => m[d]),\n \"\"\n );\n for (let m = 0; m < h.rows; m++) {\n const y = (f = a[m % l.rows]) == null ? void 0 : f[d % l.cols], g = e > 0 ? this.dst.top + m : this.dst.bottom - m, b = e > 0 ? m % l.rows : (l.rows - 1 - m % l.rows) % l.rows, _ = p[b].next().value;\n u[M({ y: g, x: this.dst.left + d })] = { ...y, value: _ };\n }\n }\n return u;\n }\n get reflections() {\n return {\n undoReflection: { sheetId: this.sheet.id, selectingZone: Pe(this.src) },\n redoReflection: { sheetId: this.sheet.id, selectingZone: Pe(this.dst) }\n };\n }\n get applied() {\n return this.sheet.update({ diff: this.buildDiff(), operator: \"USER\", ...this.reflections });\n }\n /** Async, progress-reporting apply. Same result as `applied` but time-sliced. */\n appliedAsync(t) {\n return this.sheet.updateAsync({ diff: this.buildDiff(), operator: \"USER\", ...this.reflections, ...t });\n }\n get wholeArea() {\n return vs(this.src, this.dst);\n }\n getCellStyle(t) {\n const { x: e, y: s } = t, i = {}, { top: n, left: o, bottom: a, right: l } = this.src;\n switch (this.direction) {\n case \"left\": {\n this.dst.left <= e && e <= this.dst.right && (n === s && (i.borderTop = j), a === s - 1 && (i.borderTop = j)), this.dst.left === e && n <= s && s <= a && (i.borderLeft = j);\n break;\n }\n case \"right\": {\n this.dst.left <= e && e <= this.dst.right && (n === s && (i.borderTop = j), a === s - 1 && (i.borderTop = j)), this.dst.right === e - 1 && n <= s && s <= a && (i.borderLeft = j);\n break;\n }\n case \"up\": {\n this.dst.top <= s && s <= this.dst.bottom && (o === e && (i.borderLeft = j), l === e - 1 && (i.borderLeft = j)), this.dst.top === s && o <= e && e <= l && (i.borderTop = j);\n break;\n }\n case \"down\": {\n this.dst.top <= s && s <= this.dst.bottom && (o === e && (i.borderLeft = j), l === e - 1 && (i.borderLeft = j)), this.dst.bottom === s - 1 && o <= e && e <= l && (i.borderTop = j);\n break;\n }\n }\n return i;\n }\n getDestinationArea(t) {\n const { x: e, y: s } = t, { top: i, left: n, bottom: o, right: a } = this.src;\n switch (this.direction) {\n case \"left\":\n return { top: i, bottom: o, left: e, right: n - 1 };\n case \"right\":\n return { top: i, bottom: o, left: a + 1, right: e };\n case \"up\":\n return { left: n, right: a, top: s, bottom: i - 1 };\n case \"down\":\n return { left: n, right: a, top: o + 1, bottom: s };\n }\n return this.src;\n }\n suggestDirection(t) {\n const { top: e, left: s, bottom: i, right: n } = this.src;\n let o = 0, a = 0;\n return t.x < s ? o = t.x - s : t.x > n && (o = t.x - n), t.y < e ? a = t.y - e : t.y > i && (a = t.y - i), Math.abs(o) > 0 && Math.abs(a) > 0 ? Math.abs(o) > Math.abs(a) ? o < 0 ? \"left\" : \"right\" : a < 0 ? \"up\" : \"down\" : o !== 0 ? o < 0 ? \"left\" : \"right\" : a !== 0 ? a < 0 ? \"up\" : \"down\" : \"none\";\n }\n getChangePatterns(t, e) {\n const s = [], i = Br(t), [n, o] = Ze[this.direction];\n return i.forEach((a) => {\n const l = o > 0 ? a.last : a.first;\n switch (a.kind) {\n case \"other\": {\n s.push(ct(a.first));\n return;\n }\n case \"formula\": {\n const h = a.first, u = this.sheet;\n function* c() {\n let f = 0;\n const d = t.length * o;\n for (; ; )\n f += d, yield u.processFormula(h, {\n dependency: e,\n slideY: n === \"vertical\" ? f : 0,\n slideX: n === \"horizontal\" ? f : 0\n });\n }\n s.push(c());\n return;\n }\n case \"number\": {\n if (!a.equidistant) {\n s.push(ct(a.first), ...a.nexts.map((c) => ct(c)));\n return;\n }\n function* h() {\n let c = l;\n const f = a.numericDelta * o;\n for (; ; )\n c += f, yield c;\n }\n const u = h();\n s.push(u, ...a.nexts.map(() => u));\n return;\n }\n case \"date\": {\n const h = (f) => o > 0 ? a.time.add(f) : a.time.sub(f);\n if (!a.equidistant) {\n s.push(ct(a.first), ...a.nexts.map((f) => ct(f)));\n return;\n }\n function* u() {\n let f = l;\n for (; ; )\n f = h(f), yield new Date(f);\n }\n const c = u();\n s.push(c, ...a.nexts.map(() => c));\n return;\n }\n case \"string+number\": {\n if (!a.equidistant) {\n s.push(ct(a.first), ...a.nexts.map((c) => ct(c)));\n return;\n }\n function* h() {\n const { prefix: c } = lt(a.first), { number: f } = lt(l);\n let d = f;\n const p = a.numericDelta * o;\n for (; ; )\n d += p, yield `${c}${Math.abs(d)}`;\n }\n const u = h();\n s.push(u, ...a.nexts.map(() => u));\n return;\n }\n }\n }), s;\n }\n}\nfunction* ct(r) {\n for (; ; )\n yield r;\n}\nconst ws = new RegExp(\"(.+?)(\\\\d+)$\"), lt = (r) => {\n const t = r.match(ws);\n if (t) {\n const [, e, s] = t;\n return { prefix: e, number: Number(s) };\n }\n return { prefix: \"\", number: 0 };\n};\nclass ie {\n constructor(t) {\n this.time = R.create(), this.numericDelta = 0, this.equidistant = !0, this.first = t, this.nexts = [], this.kind = this.discriminate(t);\n }\n discriminate(t) {\n const e = t instanceof Date ? \"date\" : typeof t;\n return e === \"number\" || e === \"date\" ? e : e === \"string\" && t[0] === \"=\" ? \"formula\" : e === \"string\" && t.match(ws) ? \"string+number\" : \"other\";\n }\n get last() {\n return this.nexts.length === 0 ? this.first : this.nexts[this.nexts.length - 1];\n }\n add(t) {\n const e = this.discriminate(t);\n if (this.kind !== e || e === \"other\" || e === \"formula\")\n return new ie(t);\n if (this.nexts.length === 0)\n switch (e) {\n case \"date\": {\n this.time = R.fromDates(t, this.first);\n break;\n }\n case \"number\": {\n this.numericDelta = t - this.first;\n break;\n }\n case \"string+number\": {\n const { prefix: s, number: i } = lt(this.first), { prefix: n, number: o } = lt(t);\n s === n && (this.numericDelta = o - i);\n break;\n }\n }\n this.nexts.push(t);\n }\n subdivide() {\n if (this.nexts.length === 0)\n return [];\n const t = [];\n let e = this;\n switch (this.kind) {\n case \"date\": {\n const s = this.nexts.every((i, n) => n === 0 || z(i).isSame(this.time.add(this.nexts[n - 1])));\n return this.equidistant = s, [];\n }\n case \"number\": {\n const s = this.nexts.every((i, n) => n === 0 || i === this.first + this.numericDelta * (n + 1));\n return this.equidistant = s, [];\n }\n case \"string+number\": {\n const { prefix: s } = lt(this.first);\n for (let i = 0; i < e.nexts.length; i++) {\n const n = e.nexts[i], { prefix: o, number: a } = lt(n);\n if (s !== o) {\n const l = this.nexts.splice(i, this.nexts.length);\n e = new ie(l.splice(0, 1)[0]), l.forEach(e.add.bind(e)), t.push(e, ...e.subdivide());\n break;\n } else {\n const { number: l } = lt(e.first);\n a !== l + (i + 1) * e.numericDelta && (e.equidistant = !1);\n }\n }\n break;\n }\n }\n return t;\n }\n}\nfunction Br(r) {\n var s, i;\n let t = new ie((s = r[0]) == null ? void 0 : s.value);\n const e = [t];\n for (let n = 1; n < r.length; n++) {\n const o = (i = r[n]) == null ? void 0 : i.value, a = t.add(o);\n a && (e.push(a), t = a);\n }\n for (let n = e.length - 1; n >= 0; n--) {\n const o = e[n];\n e.splice(n + 1, 0, ...o.subdivide());\n }\n return e;\n}\nexport {\n Hn as Autofill,\n A as BaseFunction,\n Xe as BaseFunctionAsync,\n Pn as COLOR_PALETTE,\n kt as DEFAULT_COL_KEY,\n rt as DEFAULT_HEIGHT,\n Cs as DEFAULT_HISTORY_LIMIT,\n $t as DEFAULT_ROW_KEY,\n he as DEFAULT_WIDTH,\n S as FormulaError,\n xn as FormulaParser,\n $e as HEADER_HEIGHT,\n Le as HEADER_WIDTH,\n te as Lexer,\n qr as MIN_HEIGHT,\n Zr as MIN_WIDTH,\n Kr as OVERSCAN_X,\n Jr as OVERSCAN_Y,\n L as Pending,\n $n as PercentagePolicyMixin,\n Te as Policy,\n ts as RangeEntity,\n Qe as RefEntity,\n Hr as Registry,\n jr as SHEET_HEIGHT,\n Gr as SHEET_WIDTH,\n Y as Sheet,\n W as Spilling,\n kn as ThousandSeparatorPolicyMixin,\n R as Time,\n be as ValueEntity,\n T as a2p,\n hn as aa2oa,\n mn as addressesToAreas,\n yn as addressesToCols,\n gn as addressesToRows,\n on as among,\n He as areaDiff,\n me as areaShape,\n rn as areaToRange,\n Pe as areaToZone,\n nn as between,\n pn as binarySearch,\n Ls as buildInitialCells,\n un as buildInitialCellsFromOrigin,\n Ht as c2x,\n tn as ch,\n ki as check,\n Ys as complementSelectingArea,\n vs as concatAreas,\n On as conditionArg,\n Nn as createBinding,\n vn as createBook,\n Fn as createBooleanMask,\n Jt as createMatrix,\n Ne as createRegistry,\n dt as eachMatrix,\n Wt as ensureBoolean,\n Ni as ensureDate,\n O as ensureNumber,\n Q as ensureString,\n Dn as getFunctionHelps,\n Ln as getLabel,\n Hs as getMaxSizesFromCells,\n Ke as grantAddressAbsolute,\n zt as isNumeric,\n De as isPercentage,\n wn as isZoneNotSelected,\n cn as makeSequence,\n Zt as matrixShape,\n ln as oa2aa,\n Mn as operations,\n M as p2a,\n Ns as r2y,\n dn as range,\n fn as restrictZone,\n Qr as rh,\n si as splitRef,\n en as stripAddressAbsolute,\n Li as stripMatrix,\n bn as stripSheetName,\n sn as superposeArea,\n Tn as toCellCols,\n An as toCellMatrix,\n In as toCellObject,\n Cn as toCellRows,\n ri as toSheetPrefix,\n En as toValueCols,\n ii as toValueMatrix,\n Sn as toValueMatrixAsync,\n _n as toValueObject,\n Rn as toValueRows,\n G as x2c,\n bt as y2r,\n an as zoneShape,\n ks as zoneToArea\n};\n//# sourceMappingURL=index.js.map\n","import { Lexer as V, splitRef as I, a2p as $, toSheetPrefix as X, grantAddressAbsolute as N, DEFAULT_WIDTH as H, DEFAULT_HEIGHT as O, OVERSCAN_X as P, binarySearch as v, range as F, OVERSCAN_Y as j } from \"@gridsheet/engine\";\nexport * from \"@gridsheet/engine\";\nconst _ = (e) => {\n e == null || e.focus({ preventScroll: !0 });\n}, U = () => typeof navigator < \"u\" && /^((?!chrome|android).)*safari/i.test(navigator.userAgent), Z = (e) => {\n if (!U())\n return () => {\n };\n const o = (i) => {\n const { scrollTop: s, scrollHeight: g, clientHeight: d, scrollLeft: c, scrollWidth: p, clientWidth: x } = e, b = i.deltaY < 0 && s <= 0, f = i.deltaY > 0 && s + d >= g, h = i.deltaX < 0 && c <= 0, u = i.deltaX > 0 && c + x >= p;\n (b || f || h || u) && (i.preventDefault(), window.scrollBy({ top: i.deltaY, left: i.deltaX, behavior: \"auto\" }));\n };\n let r = 0, a = 0;\n const t = (i) => {\n i.touches.length === 1 && (r = i.touches[0].clientX, a = i.touches[0].clientY);\n }, n = (i) => {\n if (i.touches.length !== 1)\n return;\n const { scrollTop: s, scrollHeight: g, clientHeight: d, scrollLeft: c, scrollWidth: p, clientWidth: x } = e, b = i.touches[0].clientX - r, f = i.touches[0].clientY - a, h = f > 0 && s <= 0, u = f < 0 && s + d >= g, m = b > 0 && c <= 0, y = b < 0 && c + x >= p;\n (h || u || m || y) && i.preventDefault();\n };\n return e.addEventListener(\"wheel\", o, { passive: !1 }), e.addEventListener(\"touchstart\", t, { passive: !0 }), e.addEventListener(\"touchmove\", n, { passive: !1 }), () => {\n e.removeEventListener(\"wheel\", o), e.removeEventListener(\"touchstart\", t), e.removeEventListener(\"touchmove\", n);\n };\n}, R = (e, o) => {\n var a;\n _(e), !((a = document.execCommand) != null && a.call(document, \"insertText\", !1, o)) && e.setRangeText(o, e.selectionStart, e.selectionEnd, \"end\");\n}, q = ({ input: e, ref: o, dryRun: r = !1 }) => {\n var s;\n if (!((s = e == null ? void 0 : e.value) != null && s.startsWith(\"=\")) || e.selectionStart === 0)\n return !1;\n const a = new V(e.value.substring(1));\n a.tokenize();\n const [t, n] = a.getTokenIndexByCharPosition(e.selectionStart - 1);\n let i = a.tokens[t];\n if ((i == null ? void 0 : i.type) === \"SPACE\" && (i = a.tokens[t - 1]), i == null || i.type === \"OPEN\" || i.type === \"COMMA\" || i.type === \"INFIX_OPERATOR\" || i.type === \"PREFIX_OPERATOR\")\n r || R(e, o);\n else if (i.type === \"REF\" || i.type === \"RANGE\") {\n if (!r) {\n const { sheetName: g, addresses: d } = I(o), { addresses: c } = I(i.entity), p = c.map((f) => $(f));\n c.length === 2 && d.length === 1 && d.push(d[0]), o = X(g) + d.map((f, h) => {\n var u, m;\n return N(f, !!((u = p[h]) != null && u.absX), !!((m = p[h]) != null && m.absY));\n }).join(\":\");\n const [x, b] = a.getTokenPositionRange(t + 1, 1);\n e.setSelectionRange(x, b), R(e, o);\n }\n } else\n return !1;\n return !0;\n}, ee = (e) => q({ input: e, ref: \"\", dryRun: !0 }), oe = (e) => {\n e != null && (e.style.width = `${e.scrollWidth}px`, e.style.height = `${e.scrollHeight}px`);\n}, te = (e, o, r) => {\n var i, s;\n const a = e == null ? void 0 : e.style;\n if (a == null)\n return;\n const t = ((i = o.getCell({ x: r.x, y: 0 }, { resolution: \"SYSTEM\" })) == null ? void 0 : i.width) ?? H, n = ((s = o.getCell(r, { resolution: \"SYSTEM\" })) == null ? void 0 : s.height) ?? O;\n a.width = `${t}px`, a.height = `${n}px`;\n}, re = (e) => typeof window > \"u\" || e == null ? !1 : document.activeElement === e, ae = (e, o) => {\n const r = e.currentTarget;\n if (!o.startsWith(\"=\"))\n return !1;\n const { selectionStart: t, selectionEnd: n } = r;\n if (e.key === '\"') {\n if (t !== n) {\n e.preventDefault();\n const d = o.slice(t, n);\n return R(r, `\"${d}\"`), requestAnimationFrame(() => {\n r.setSelectionRange(t + 1, n + 1);\n }), !0;\n }\n const i = o[t], s = o.slice(1, t);\n let g = 0;\n for (let d = 0; d < s.length; d++)\n s[d] === '\"' && (d + 1 < s.length && s[d + 1] === '\"' ? d++ : g++);\n return g % 2 === 1 && i === '\"' ? (e.preventDefault(), r.setSelectionRange(t + 1, t + 1), !0) : (e.preventDefault(), R(r, '\"\"'), requestAnimationFrame(() => {\n r.setSelectionRange(t + 1, t + 1);\n }), !0);\n }\n return e.key === \"Backspace\" && t === n && t > 0 && o[t - 1] === '\"' && o[t] === '\"' ? (e.preventDefault(), r.setRangeText(\"\", t - 1, t + 1, \"end\"), r.dispatchEvent(new Event(\"input\", { bubbles: !0 })), !0) : !1;\n}, w = 16e6, ie = (e) => Math.min(e.totalHeight, w), W = (e, o, r) => {\n const a = e.totalHeight;\n if (a <= w)\n return o;\n const t = Math.max(1, w - r), n = Math.max(0, a - r);\n return o / t * n;\n}, G = (e, o, r) => {\n const a = e.totalHeight;\n if (a <= w)\n return o;\n const t = Math.max(1, w - r), n = Math.max(1, a - r);\n return o / n * t;\n}, Q = (e, { y: o, x: r }) => {\n var d;\n const a = e.getCell({ y: 0, x: r }, { resolution: \"SYSTEM\" }), t = e.getCell({ y: o, x: 0 }, { resolution: \"SYSTEM\" }), n = ((d = e.getSystem({ y: 0, x: r })) == null ? void 0 : d.offsetLeft) ?? 0, i = e.getOffsetTop(o), s = (a == null ? void 0 : a.width) || H, g = t != null && t.filtered ? 0 : (t == null ? void 0 : t.height) || O;\n return {\n top: i,\n left: n,\n bottom: i + g,\n right: n + s,\n width: s,\n height: g\n };\n}, Y = (e) => {\n const o = e.scrollTop, r = e.scrollLeft, a = e.clientHeight, t = e.clientWidth, n = o + a, i = r + t;\n return { top: o, left: r, bottom: n, right: i, height: a, width: t };\n}, ne = (e, o) => {\n var L;\n if (o == null)\n return null;\n let r = 0, a = 0, t = e.numRows, n = e.numCols;\n const { top: i, left: s, right: g, height: d } = Y(o), c = W(e, i, d), p = c + d;\n let x = 0;\n for (let l = 1; l <= e.numCols; l++) {\n const M = ((L = e.getCell({ y: 0, x: l }, { resolution: \"SYSTEM\" })) == null ? void 0 : L.width) || H;\n if (x += M, a === 0 && x > s && (a = Math.max(l - P, 1)), x > g) {\n n = Math.min(l + P, e.numCols);\n break;\n }\n }\n const b = e.headerHeight, f = e.numRows, h = (l) => e.getOffsetTop(l + 1) - b, u = v(1, f, (l) => h(l) > c, !0);\n if (r = u > f ? 0 : Math.max(u - j, 1), r > 0 && e.totalHeight > w) {\n const l = c - i;\n if (l > 0 && e.getOffsetTop(r) - b < l) {\n const M = v(1, f, (D) => e.getOffsetTop(D) - b >= l, !0);\n r = Math.min(Math.max(r, M), u);\n }\n }\n const m = v(1, f, (l) => h(l) > p, !0);\n t = m > f ? f : Math.min(m + j, f);\n const y = r === 0 ? [] : F(r, t).filter((l) => !e.isRowFiltered(l)), A = F(a, n), z = e.getRectSize({\n top: 1,\n left: 1,\n bottom: r,\n right: a\n }), T = e.getRectSize({\n top: t,\n left: n,\n bottom: e.numRows,\n right: e.numCols\n });\n let E = z.height, C = T.height;\n if (e.totalHeight > w) {\n E = Math.max(0, i - c + z.height);\n const l = e.totalHeight - e.headerHeight - z.height - T.height;\n C = Math.max(0, w - e.headerHeight - E - l);\n }\n return {\n ys: y,\n xs: A,\n adjuster: {\n top: E,\n left: z.width,\n bottom: C,\n right: T.width\n }\n };\n}, se = (e, o, r) => {\n const a = e.numRows;\n if (a < 1)\n return [1, 0];\n const t = e.headerHeight, n = (g) => e.getOffsetTop(g + 1) - t, i = v(1, a, (g) => n(g) > o, !0), s = v(1, a, (g) => n(g) > o + r, !0);\n return [Math.max(1, i - 1), Math.min(s + 1, a)];\n}, ge = (e, o, r) => {\n const a = e.numCols;\n if (a < 1)\n return [1, 0];\n const t = e.headerWidth, n = (g) => {\n var d;\n return (((d = e.getSystem({ y: 0, x: g + 1 })) == null ? void 0 : d.offsetLeft) ?? e.totalWidth) - t;\n }, i = v(1, a, (g) => n(g) > o, !0), s = v(1, a, (g) => n(g) > o + r, !0);\n return [Math.max(1, i - 1), Math.min(s + 1, a)];\n}, de = (e, o, r, a = \"auto\") => {\n if (o == null)\n return;\n const t = Y(o), n = t.height, i = W(e, t.top, n), s = Q(e, r), g = s.top - e.headerHeight, d = s.bottom - n + 1, c = s.left - e.headerWidth, p = s.right - t.width + 1, x = g < i, b = s.bottom > i + n, f = c < t.left, h = s.right > t.right, u = (A) => G(e, Math.max(0, A), n);\n let m = t.top;\n x ? m = u(g) : b && (m = u(d));\n let y = t.left;\n f ? y = c : h && (y = p), (m !== t.top || y !== t.left) && o.scrollTo({ left: y, top: m, behavior: a });\n}, S = (e, o, r, a) => {\n var n;\n const t = v(\n 0,\n e.length - 1,\n (i) => o(e[i].getBoundingClientRect()) < r,\n !1\n );\n return parseInt(((n = e[t]) == null ? void 0 : n.dataset[a]) ?? \"1\");\n}, le = (e) => {\n const {\n top: o,\n left: r,\n bottom: a,\n right: t\n } = e.getBoundingClientRect(), n = Array.from(e.querySelectorAll(\".gs-th-left\")), i = Array.from(e.querySelectorAll(\".gs-th-top\")), s = S(n, (p) => p.top, o, \"y\"), g = S(n, (p) => p.bottom, a + 1, \"y\"), d = S(i, (p) => p.left, r, \"x\"), c = S(i, (p) => p.right, t + 1, \"x\");\n return { top: s, left: d, bottom: g, right: c };\n}, k = 8, ce = (e, o = 260, r = k) => e.right - o >= r ? { x: e.right, y: e.bottom, hAlign: \"right\" } : { x: Math.max(e.left, r), y: e.bottom, hAlign: \"left\" }, pe = (e, o, r = k) => {\n const t = e + o - (window.innerWidth - r);\n return t > 0 ? e - t : e;\n}, fe = (e, o = k) => {\n if (e.style.left = `calc(100% + ${o}px)`, e.style.right = \"auto\", e.getBoundingClientRect().right > window.innerWidth - k) {\n const a = { left: \"auto\", right: `calc(100% + ${o}px)` };\n return e.style.left = a.left, e.style.right = a.right, a;\n }\n return { left: `calc(100% + ${o}px)`, right: \"auto\" };\n}, ue = (e) => {\n const o = e.getBoundingClientRect(), r = window.innerWidth, a = window.innerHeight;\n o.right > r - k && (e.style.left = `${parseFloat(e.style.left || \"0\") - (o.right - (r - k))}px`), o.bottom > a - k && (e.style.top = `${parseFloat(e.style.top || \"0\") - (o.bottom - (a - k))}px`);\n}, be = (e) => e === \"right\" ? \"translateX(-100%)\" : \"none\", B = 1787241466, J = `.gs-root1{display:inline-block;position:relative;border-spacing:0;width:fit-content;max-width:100%;overflow:auto;font-family:\"SF Pro Text\",\"SF Pro Icons\",\"Helvetica Neue\",Helvetica,Arial,Meiryo,sans-serif;visibility:hidden;opacity:0}.gs-root1.gs-initialized{visibility:visible;opacity:1;transition:opacity .2s ease-in-out}.gs-root1 .gs-main{flex:1;max-width:100%;overflow:hidden;position:relative;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.gs-root1 .gs-resizing{width:100%;height:100%;position:absolute;background-color:color-mix(in srgb,var(--gs-accent,#2563eb) 8%,transparent);top:0;left:0;z-index:2}.gs-root1 .gs-line-horizontal{width:100%}.gs-root1 .gs-line-vertical{height:100%}.gs-root1 .gs-line{position:relative;top:0;left:0;border:dotted 1px var(--gs-accent,#2563eb);box-sizing:border-box}.gs-root1 .gs-line span{font-size:10px;padding:3px;background-color:var(--gs-accent,#2563eb);color:#fff;margin:0;position:absolute;top:0;left:0}.gs-root1 .gs-scroll-handle{width:100%;height:100%;cursor:cell}.gs-hidden{visibility:hidden;position:absolute;top:0;left:0;width:0;height:0;overflow:hidden;pointer-events:none;z-index:-1}.gs-fixed{position:fixed;top:0;left:0;z-index:1}:where(.gs-root1[data-mode=light],.gs-editor[data-mode=light]){--gs-fg:#1f2328;--gs-muted-fg:#6b7280;--gs-border:#e3e6ea;--gs-bg:rgba(128, 128, 128, 0.07);--gs-canvas:transparent;--gs-surface:#ffffff;--gs-editor-surface:#ffffff;--gs-header-bg:#f4f5f7;--gs-header-fg:#59616b;--gs-accent:#2563eb}.gs-root1{background-color:var(--gs-bg);color:var(--gs-fg)}.gs-root1 .gs-main{background-color:var(--gs-canvas)}.gs-root1 .gs-tabular{background-color:var(--gs-canvas)}.gs-root1 .gs-sheet-body-data{background-color:var(--gs-surface)}.gs-root1 .gs-formula-bar{background-color:var(--gs-header-bg)}.gs-root1 .gs-formula-bar-editor-inner{color:var(--gs-fg)}.gs-root1 .gs-cell{border:solid 1px var(--gs-border)}.gs-root1 .gs-adjuster{background-color:var(--gs-border)}.gs-root1 .gs-tabular-inner{background-color:var(--gs-border)}.gs-root1 .gs-large-editor textarea{color:var(--gs-fg);caret-color:var(--gs-fg)}.gs-root1 .gs-th{background-color:var(--gs-header-bg);color:var(--gs-header-fg)}.gs-root1 .gs-th-top{border-left:solid 1px var(--gs-border)}.gs-root1 .gs-th-top .gs-th-inner{border-top:solid var(--gs-mx-bt,1px) var(--gs-border)}.gs-root1 .gs-th-left{border-top:solid 1px var(--gs-border)}.gs-root1 .gs-th-left .gs-th-inner{border-left:solid var(--gs-mx-bl,1px) var(--gs-border)}.gs-root1 .gs-search-bar{color:color-mix(in srgb,var(--gs-fg) 40%,transparent)}.gs-root1 .gs-search-bar textarea{color:var(--gs-fg);caret-color:var(--gs-fg)}.gs-editor.gs-editing textarea{caret-color:var(--gs-fg)}.gs-editor.gs-editing .gs-editor-hl{background-color:var(--gs-editor-surface);color:var(--gs-fg)}.gs-editor .gs-editor-options{color:var(--gs-fg);background-color:var(--gs-editor-surface);border:solid 1px var(--gs-border)}:where(.gs-root1[data-mode=dark],.gs-editor[data-mode=dark]){--gs-fg:#e4e6e9;--gs-muted-fg:#8b9096;--gs-border:#2c2f34;--gs-bg:rgba(128, 128, 128, 0.07);--gs-canvas:transparent;--gs-surface:#1c1e21;--gs-editor-surface:#1c1e21;--gs-header-bg:#212327;--gs-header-fg:#a6abb2;--gs-accent:#3b82f6}:where(.gs-root1[data-mode=auto],.gs-editor[data-mode=auto]){--gs-fg:#1f2328;--gs-muted-fg:#6b7280;--gs-border:#e3e6ea;--gs-bg:rgba(128, 128, 128, 0.07);--gs-canvas:transparent;--gs-surface:#ffffff;--gs-editor-surface:#ffffff;--gs-header-bg:#f4f5f7;--gs-header-fg:#59616b;--gs-accent:#2563eb}@media (prefers-color-scheme:dark){:where(.gs-root1[data-mode=auto],.gs-editor[data-mode=auto]){--gs-fg:#e4e6e9;--gs-muted-fg:#8b9096;--gs-border:#2c2f34;--gs-bg:rgba(128, 128, 128, 0.07);--gs-canvas:transparent;--gs-surface:#1c1e21;--gs-editor-surface:#1c1e21;--gs-header-bg:#212327;--gs-header-fg:#a6abb2;--gs-accent:#3b82f6}}:where(.gs-root1[data-mode=inherit-light],.gs-editor[data-mode=inherit-light]){--gs-fg:#1f2328;--gs-muted-fg:#6b7280;--gs-border:#e3e6ea;--gs-bg:rgba(128, 128, 128, 0.07);--gs-surface:#ffffff;--gs-editor-surface:#ffffff;--gs-header-bg:#f4f5f7;--gs-header-fg:#59616b;--gs-accent:#2563eb;--gs-bg:transparent;--gs-canvas:transparent;--gs-surface:transparent;--gs-header-bg:transparent}:where(.gs-root1[data-mode=inherit-dark],.gs-editor[data-mode=inherit-dark]){--gs-fg:#e4e6e9;--gs-muted-fg:#8b9096;--gs-border:#2c2f34;--gs-bg:rgba(128, 128, 128, 0.07);--gs-surface:#1c1e21;--gs-editor-surface:#1c1e21;--gs-header-bg:#212327;--gs-header-fg:#a6abb2;--gs-accent:#3b82f6;--gs-bg:transparent;--gs-canvas:transparent;--gs-surface:transparent;--gs-header-bg:transparent}.gs-root1[data-mode=inherit-dark] .gs-adjuster,.gs-root1[data-mode=inherit-dark] .gs-tabular-inner,.gs-root1[data-mode=inherit-light] .gs-adjuster,.gs-root1[data-mode=inherit-light] .gs-tabular-inner{background-color:transparent}.gs-root1[data-mode=inherit-light] .gs-th{background-color:rgba(128,128,128,.1);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.gs-root1[data-mode=inherit-dark] .gs-th{background-color:rgba(128,128,128,.1);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.gs-root1[data-gridlines=horizontal] .gs-cell{border-left-color:transparent;border-right-color:transparent}.gs-root1[data-gridlines=none] .gs-cell{border-color:transparent}.gs-root1[data-density=comfortable] .gs-cell-rendered{padding:0 10px}.gs-cell{transition:border-color .2s ease;padding:0;margin:0;box-sizing:border-box;position:relative;font-size:13px;letter-spacing:1px;line-height:24px;cursor:cell;user-select:none;-webkit-user-select:none;-moz-user-select:none}.gs-cell.gs-copying textarea:focus{outline:solid 1px var(--gs-accent,#2563eb)}.gs-cell.gs-selecting{z-index:1;background-color:color-mix(in srgb,var(--gs-accent,#2563eb) 7%,transparent)}.gs-cell.gs-selecting .gs-cell-label{display:block}.gs-cell.gs-choosing{margin-top:-1px;margin-left:-1px;z-index:1}.gs-cell.gs-choosing.gs-editing{color:transparent}.gs-cell.gs-choosing .gs-cell-label{display:block}.gs-cell.gs-pending .gs-cell-rendered{position:relative;overflow:hidden}.gs-cell.gs-pending .gs-cell-rendered::after{content:'';position:absolute;bottom:0;left:0;height:4px;width:40%;border-radius:1px;background:color-mix(in srgb,var(--gs-accent,#2563eb) 65%,transparent);animation:gs-pending-slide 1.4s ease-in-out infinite}.gs-cell .gs-formula-error-triangle{position:absolute;top:0;right:0;border-top:4px solid rgba(200,0,0,.9);border-right:4px solid rgba(200,0,0,.9);border-bottom:4px solid transparent;border-left:4px solid transparent;z-index:2;cursor:help}.gs-cell .gs-cell-label{font-size:10px;font-weight:500;font-style:normal;font-family:inherit;letter-spacing:.2px;line-height:1.4;position:absolute;top:0;right:0;background-color:var(--gs-accent,#2563eb);color:#fff;padding:1px 5px;border-bottom-left-radius:4px;display:none;opacity:.92}.gs-cell .gs-cell-inner-wrap{width:100%;height:100%;position:absolute;top:0;left:0}.gs-cell .gs-cell-inner{width:100%;height:100%;overflow:hidden;display:flex;box-sizing:border-box;border:none!important}.gs-cell .gs-cell-rendered{overflow:hidden;white-space:pre-wrap;cursor:cell;word-wrap:break-word;word-break:break-all;padding:0 6px;width:100%;height:100%}.gs-cell .gs-cell-rendered>*{position:relative}.gs-cell .gs-cell-rendered>.backface{z-index:0}.gs-cell .gs-autofill-drag{background-color:var(--gs-accent,#2563eb);position:absolute;width:7px;height:7px;bottom:0;right:0;cursor:crosshair;z-index:1}.gs-th[data-x=\"1\"] .gs-th-inner-wrap{border-left:none}.gs-th[data-y=\"1\"] .gs-th-inner-wrap{border-top:none}.gs-formula-error-tooltip{position:fixed;background-color:rgba(35,8,8,.94);color:#fff;padding:6px 10px;border-radius:4px;border-left:3px solid rgba(220,50,50,.8);font-size:12px;line-height:1.5;max-width:260px;white-space:pre-wrap;word-break:break-word;box-shadow:0 3px 10px rgba(0,0,0,.4);z-index:100;pointer-events:none;letter-spacing:.3px}.gs-menu-modal{width:100%;height:100vh;z-index:12}.gs-label-input-label{font-size:13px;letter-spacing:1px}.gs-menu-divider{background-color:#aaa;padding:0;margin:5px 0;height:1px;list-style-type:none}.gs-menu-btn{position:absolute;background-color:rgba(128,128,128,.3);border:1px solid #ccc;border-radius:50%;cursor:pointer;font-size:12px;font-weight:700;line-height:1;color:#888;width:18px;height:18px;padding:0;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s ease;z-index:2}.gs-context-menu{z-index:12;position:fixed;background-color:#fff;padding:5px 0;border-radius:5px;box-shadow:rgba(60,64,67,.3) 0 1px 2px 0,rgba(60,64,67,.15) 0 1px 3px 1px;opacity:.9;transition:opacity .15s ease}.gs-context-menu:hover{opacity:1}.gs-context-menu .gs-menu-items{color:#555;margin:0;padding:0;min-width:250px}.gs-menu-item{padding:5px 10px;list-style-type:none;display:flex}.gs-menu-item.gs-enabled{cursor:pointer}.gs-menu-item.gs-enabled:hover{background-color:#eee}.gs-menu-item.gs-disabled{opacity:.5;cursor:not-allowed}.gs-menu-item .gs-menu-name{font-size:13px;letter-spacing:1px;flex:1}.gs-submenu-parent{position:relative;align-items:center}.gs-submenu-parent .gs-submenu-arrow{margin-left:8px;font-size:11px;opacity:.6}.gs-submenu-flyout{z-index:12;position:fixed;background-color:#fff;padding:5px 0;border-radius:5px;box-shadow:rgba(60,64,67,.3) 0 1px 2px 0,rgba(60,64,67,.15) 0 1px 3px 1px;opacity:.9;transition:opacity .15s ease;min-width:200px;margin:0;color:#555;opacity:1;list-style-type:none}.gs-submenu-flyout:hover{opacity:1}.gs-menu-shortcut{font-size:10px;line-height:20px;color:#999}.gs-menu-shortcut:before{content:\"( \"}.gs-menu-shortcut:after{content:\" )\"}.gs-menu-shortcut .gs-menu-underline{text-decoration:underline}.gs-column-menu{z-index:12;position:fixed;background-color:#fff;padding:5px 0;border-radius:5px;box-shadow:rgba(60,64,67,.3) 0 1px 2px 0,rgba(60,64,67,.15) 0 1px 3px 1px;opacity:.9;transition:opacity .15s ease}.gs-column-menu:hover{opacity:1}.gs-column-menu ul{color:#555;margin:0;padding:0;min-width:200px}.gs-column-menu .gs-column-menu-sort{align-items:center}.gs-column-menu .gs-column-menu-sort .gs-sort-buttons{display:flex;gap:4px;margin-left:auto}.gs-column-menu .gs-column-menu-sort .gs-sort-btn{font-size:12px;padding:4px 8px;border:1px solid transparent;border-radius:3px;background-color:rgba(180,180,180,.1);cursor:pointer;color:#555;font-weight:700;letter-spacing:.5px}.gs-column-menu .gs-column-menu-sort .gs-sort-btn:hover:not(:disabled){border-color:#555}.gs-column-menu .gs-column-menu-sort .gs-sort-btn:disabled{opacity:.5;cursor:not-allowed}.gs-column-menu .gs-column-menu-label{padding:5px 10px}.gs-column-menu .gs-label-input-row{display:flex;gap:4px;align-items:center}.gs-column-menu .gs-label-input{flex:1;font-size:13px;padding:4px 6px;border:none;border-bottom:1px solid #ccc;border-radius:0;outline:0;min-width:0;width:100px;background-color:transparent;box-shadow:none}.gs-column-menu .gs-label-input:focus{border-bottom-color:var(--gs-accent,#2563eb);outline:0;box-shadow:none}.gs-column-menu .gs-label-apply-btn{font-size:12px;padding:4px 8px;border:1px solid transparent;border-radius:3px;background-color:rgba(180,180,180,.1);cursor:pointer;color:#555;font-weight:700;letter-spacing:.5px}.gs-column-menu .gs-label-apply-btn:hover:not(:disabled){border-color:#555}.gs-column-menu .gs-label-apply-btn:disabled{opacity:.5;cursor:not-allowed}.gs-column-menu .gs-column-menu-filter{padding:5px 10px;list-style-type:none;font-size:13px}.gs-column-menu .gs-filter-header{display:flex;align-items:center;gap:8px}.gs-column-menu .gs-filter-header .gs-filter-add-btn{font-size:12px;padding:3px 9px;border:1px solid transparent;border-radius:3px;background-color:rgba(180,180,180,.1);cursor:pointer;color:#555;letter-spacing:1px}.gs-column-menu .gs-filter-header .gs-filter-add-btn:hover{border-color:#555}.gs-column-menu .gs-filter-mode-toggle{display:flex;gap:6px;margin-left:auto}.gs-column-menu .gs-filter-mode-toggle label{display:flex;align-items:center;gap:3px;font-size:11px;font-weight:700;letter-spacing:.5px;color:#888;cursor:pointer;user-select:none}.gs-column-menu .gs-filter-mode-toggle label input[type=radio]{margin:0;cursor:pointer}.gs-column-menu .gs-filter-mode-toggle label.gs-active{color:var(--gs-accent,#2563eb)}.gs-column-menu .gs-filter-mode-toggle.gs-disabled{opacity:.4;pointer-events:none}.gs-column-menu .gs-filter-conditions{display:flex;flex-direction:column;gap:5px;margin-top:6px;max-height:200px;overflow-y:auto}.gs-column-menu .gs-filter-condition-row{display:flex;gap:4px;align-items:normal}.gs-column-menu .gs-filter-method-select{font-size:12px;padding:4px 4px;border:none;border-bottom:1px solid #ccc;border-radius:0;outline:0;background-color:#fff;box-shadow:none;min-width:40px;max-width:80px;cursor:pointer}.gs-column-menu .gs-filter-method-select:focus{border-bottom-color:var(--gs-accent,#2563eb);outline:0;box-shadow:none}.gs-column-menu .gs-filter-value-input{flex:1;font-size:13px;padding:4px 6px;border:none;border-bottom:1px solid #ccc;border-radius:0;outline:0;min-width:0;width:80px;background-color:transparent;box-shadow:none}.gs-column-menu .gs-filter-value-input:focus{border-bottom-color:var(--gs-accent,#2563eb);outline:0;box-shadow:none}.gs-column-menu .gs-filter-remove-btn{font-size:12px;padding:0;border:none;border-radius:3px;background-color:transparent;cursor:pointer;color:#999;line-height:1;flex-shrink:0}.gs-column-menu .gs-filter-remove-btn:hover{color:#c33}.gs-column-menu .gs-filter-actions{display:flex;gap:4px;margin-top:10px;align-items:center}.gs-column-menu .gs-filter-actions .gs-filter-reset-all-btn{font-size:12px;padding:3px 9px;border:1px solid transparent;border-radius:3px;background-color:transparent;cursor:pointer;color:#c33;font-weight:700;letter-spacing:1px}.gs-column-menu .gs-filter-actions .gs-filter-reset-all-btn:hover{border-color:#c33}.gs-column-menu .gs-filter-actions .gs-filter-actions-right{display:flex;gap:4px;margin-left:auto}.gs-column-menu .gs-filter-actions .gs-filter-reset-btn{font-size:12px;padding:3px 9px;border:1px solid transparent;border-radius:3px;background-color:transparent;cursor:pointer;color:#e08000;font-weight:700;letter-spacing:1px}.gs-column-menu .gs-filter-actions .gs-filter-reset-btn:hover{border-color:#e08000}.gs-column-menu .gs-filter-actions .gs-filter-apply-btn{font-size:12px;padding:3px 6px;border:1px solid transparent;border-radius:3px;background-color:transparent;color:var(--gs-accent,#2563eb);cursor:pointer;font-weight:700;letter-spacing:1px}.gs-column-menu .gs-filter-actions .gs-filter-apply-btn:hover{border-color:var(--gs-accent,#2563eb)}.gs-column-menu-waiting{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px 30px;gap:12px;min-width:180px}.gs-column-menu-waiting .gs-waiting-message{font-size:13px;font-weight:700;color:#555;letter-spacing:.5px}.gs-column-menu-waiting .gs-waiting-spinner{width:24px;height:24px;border:3px solid #e0e0e0;border-top-color:var(--gs-accent,#2563eb);border-radius:50%;animation:spin .8s linear infinite}.gs-column-menu-waiting .gs-waiting-cancel-btn{font-size:12px;padding:4px 18px;border:1px solid #c33;border-radius:3px;background-color:transparent;color:#c33;cursor:pointer;font-weight:700;letter-spacing:1px}.gs-column-menu-waiting .gs-waiting-cancel-btn:hover{background-color:#c33;color:#fff}.gs-column-menu-btn{right:4px;top:50%;transform:translateY(-50%)}.gs-column-menu-btn.gs-filtered{opacity:1;background-color:color-mix(in srgb,var(--gs-accent,#2563eb) 12%,transparent);border-color:var(--gs-accent,#2563eb);color:var(--gs-accent,#2563eb)}.gs-column-menu-btn.gs-active{opacity:1;background-color:color-mix(in srgb,var(--gs-accent,#2563eb) 18%,transparent);border-color:var(--gs-accent,#2563eb);color:var(--gs-accent,#2563eb)}.gs-th-top:hover .gs-column-menu-btn{opacity:1}.gs-row-menu{z-index:12;position:fixed;background-color:#fff;padding:5px 0;border-radius:5px;box-shadow:rgba(60,64,67,.3) 0 1px 2px 0,rgba(60,64,67,.15) 0 1px 3px 1px;opacity:.9;transition:opacity .15s ease}.gs-row-menu:hover{opacity:1}.gs-row-menu ul{color:#555;margin:0;padding:0;min-width:200px}.gs-row-fixed-toggle{display:flex;align-items:center;gap:6px}.gs-row-fixed-check{font-size:12px;width:14px;text-align:center;color:transparent}.gs-row-fixed-check.gs-row-fixed-active{color:var(--gs-accent,#2563eb)}.gs-row-menu-btn{top:50%;transform:translateY(-50%);right:2px}.gs-row-menu-btn.gs-active{opacity:1;background-color:color-mix(in srgb,var(--gs-accent,#2563eb) 18%,transparent);border-color:var(--gs-accent,#2563eb);color:var(--gs-accent,#2563eb)}.gs-th-left:hover .gs-row-menu-btn{opacity:1}.gs-corner-menu-btn{bottom:2px;right:2px}.gs-corner-menu-btn:hover{opacity:1;background-color:color-mix(in srgb,var(--gs-accent,#2563eb) 18%,transparent);border-color:var(--gs-accent,#2563eb);color:var(--gs-accent,#2563eb)}.gs-th-left.gs-th-top:hover .gs-corner-menu-btn{opacity:1}.gs-editor-hl{padding:0 2px!important;position:absolute;font-family:monospace,Arial;font-size:12px;line-height:24px;letter-spacing:1px}.gs-formula-bar-editor-inner{position:relative;flex:1;min-width:0;display:flex;align-items:center}.gs-editor{opacity:0;z-index:-1}.gs-editor .gs-editor-inner{position:relative}.gs-editor .gs-editor-hl{box-sizing:content-box;border:solid 2px var(--gs-accent,#2563eb);margin:-2px -1px}.gs-editor textarea{width:100%;padding:0 2px!important;position:absolute;font-size:12px;font-family:monospace,Arial;line-height:24px;letter-spacing:1px;top:0;left:0;border:none;outline:0;background-color:transparent;color:transparent;resize:none;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;overflow:hidden;cursor:default;white-space:pre;height:auto}.gs-editor.gs-editing{z-index:11;opacity:1}.gs-editor.gs-editing .gs-cell-label{pointer-events:none;font-family:inherit;font-weight:500;position:absolute;top:0;right:0;margin-top:-17px;margin-right:-2px;padding:1px 5px;border-top-left-radius:4px;border-top-right-radius:4px;font-size:10px;background-color:var(--gs-accent,#2563eb);color:#fff;z-index:1}.gs-formula-bar{width:100%;position:relative;display:flex;align-items:stretch;box-sizing:border-box;border-style:solid;border-color:var(--gs-border,#e3e6ea);border-width:var(--gs-fb-bt,1px) var(--gs-fb-br,1px) var(--gs-fb-bb,1px) var(--gs-fb-bl,1px);padding:3px 6px;gap:6px}.gs-formula-bar .gs-selecting-address{display:flex;align-items:center;justify-content:center;min-width:38px;padding:0 4px;color:var(--gs-muted-fg,#6b7280);font-size:12px;font-variant-numeric:tabular-nums;text-align:center}.gs-formula-bar[data-spill=true]{background-color:color-mix(in srgb,var(--gs-accent,#2563eb) 6%,var(--gs-header-bg,#f4f5f7))}.gs-formula-bar[data-spill=true] .gs-selecting-address{color:var(--gs-accent,#2563eb);font-style:italic}.gs-formula-bar[data-spill=true] .gs-selecting-address::after{content:\"\\\\2196\";margin-left:2px;font-style:normal;font-size:9px}.gs-formula-bar .gs-fx{display:flex;align-items:center;justify-content:center;align-self:center;width:26px;height:18px;flex-shrink:0;color:var(--gs-muted-fg,#6b7280);font-style:italic;font-family:inherit;font-weight:400;text-align:center;font-size:13px;letter-spacing:.3px;border-radius:4px;background-color:color-mix(in srgb,var(--gs-fg,#1f2328) 6%,transparent)}.gs-formula-bar .gs-editor-hl{z-index:0;overflow-y:auto;box-sizing:border-box;white-space:pre-wrap;word-break:break-all;text-align:left;line-height:24px}.gs-formula-bar textarea{position:relative;z-index:1;width:100%;vertical-align:bottom;color:transparent;border:none;background-color:transparent;padding:0 2px;box-sizing:border-box;text-align:left;outline:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;font-size:12px;font-family:monospace,Arial;height:24px;line-height:24px;min-height:24px;letter-spacing:1px;resize:vertical;caret-color:var(--gs-fg,#1f2328);white-space:pre-wrap;word-break:break-all}.gs-token-type-INVALID_REF{color:red}.gs-token-type-VALUE.gs-token-entity-type-boolean,.gs-token-type-VALUE.gs-token-entity-type-number{color:#39f}.gs-token-type-VALUE.gs-token-entity-type-string{color:#090}.gs-editor-options{position:fixed;z-index:1000;padding:4px;background:var(--gs-bg,#fff);box-shadow:0 4px 12px rgba(0,0,0,.15);border:1px solid rgba(0,0,0,.1);border-radius:6px;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif;overflow:visible}.gs-editor-option{position:relative;cursor:pointer;list-style:none;padding:6px 12px;font-size:13px;border-radius:4px;color:#333;margin-bottom:2px}.gs-editor-option-content{display:flex;justify-content:space-between;width:100%;align-items:center}.gs-editor-option-tab{font-size:10px;color:#aaa;margin-left:8px;padding:2px 4px;border:1px solid #ddd;border-radius:3px;background:#f9f9f9}.gs-editor-option:last-child{margin-bottom:0}.gs-editor-option:hover{background-color:#f5f5f5}.gs-editor-option-selected{background-color:color-mix(in srgb,var(--gs-accent,#2563eb) 12%,transparent);color:var(--gs-accent,#2563eb);font-weight:500}.gs-editor-option-selected:hover{background-color:color-mix(in srgb,var(--gs-accent,#2563eb) 18%,transparent)}.gs-fn-guide1{position:absolute;top:-4px;left:calc(100% + 8px);background:#fff;border:1px solid rgba(0,0,0,.1);box-shadow:0 4px 16px rgba(0,0,0,.12);border-radius:6px;padding:16px;width:280px;z-index:1000;cursor:default;white-space:normal;color:#333}.gs-fn-guide1-tooltip{margin-bottom:8px;line-height:1.4;font-size:13px}.gs-fn-guide1-example{font-family:monospace;font-weight:600;font-size:13px;margin-bottom:8px;color:#1a1a1a;background:#f5f5f5;padding:6px 8px;border-radius:4px;border:1px solid #eee;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.gs-fn-guide1-desc{font-size:13px;color:#555;margin-bottom:12px;line-height:1.4}.gs-fn-guide1-desc p{margin:0 0 6px 0}.gs-fn-guide1-desc p:last-child{margin-bottom:0}.gs-fn-guide1-args{border-top:1px solid #eee;padding-top:10px}.gs-fn-guide1-arg{margin-bottom:6px;line-height:1.4;font-size:12px}.gs-fn-guide1-arg-name{font-weight:600;color:var(--gs-accent,#2563eb)}.gs-fn-guide1-arg-opt{color:#888;font-size:11px}.gs-fn-guide1-arg-iter{font-weight:600;color:var(--gs-accent,#2563eb)}.gs-fn-guide1-arg-type{color:var(--gs-accent,#2563eb);padding:0 4px;background:color-mix(in srgb,var(--gs-accent,#2563eb) 12%,transparent);border-radius:3px;font-size:11px;margin:0 4px}.gs-fn-guide1-arg-desc{color:#666}.gs-fn-guide-category{position:absolute;top:-11px;right:8px;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif;font-size:11px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;padding:2px 7px;border-radius:4px;background:#e8eaf6;color:#3949ab;border:1px solid #c5cae9;white-space:nowrap}.gs-fn-guide-category.gs-fn-guide-category-math{background:#e3f2fd;color:#1565c0;border-color:#bbdefb}.gs-fn-guide-category.gs-fn-guide-category-statistics{background:#e8f5e9;color:#2e7d32;border-color:#c8e6c9}.gs-fn-guide-category.gs-fn-guide-category-text{background:#fff8e1;color:#f57f17;border-color:#ffecb3}.gs-fn-guide-category.gs-fn-guide-category-time{background:#fce4ec;color:#880e4f;border-color:#f8bbd0}.gs-fn-guide-category.gs-fn-guide-category-lookup{background:#f3e5f5;color:#6a1b9a;border-color:#e1bee7}.gs-fn-guide-category.gs-fn-guide-category-logical{background:#e0f2f1;color:#00695c;border-color:#b2dfdb}.gs-fn-guide-category.gs-fn-guide-category-information{background:#e0f7fa;color:#006064;border-color:#b2ebf2}.gs-fn-guide-category.gs-fn-guide-category-finance{background:#fff3e0;color:#e65100;border-color:#ffe0b2}.gs-fn-guide-category.gs-fn-guide-category-engineering{background:#efebe9;color:#4e342e;border-color:#d7ccc8}.gs-fn-guide-category.gs-fn-guide-category-ai{background:#e8eaf6;color:#3949ab;border-color:#c5cae9}.gs-fn-guide-category.gs-fn-guide-category-other{background:#f5f5f5;color:#616161;border-color:#e0e0e0}.gs-editor-portal{display:contents}.gs-editor-portal[data-mode=dark] .gs-editor-options,.gs-editor-portal[data-mode=inherit-dark] .gs-editor-options,.gs-editor[data-mode=dark] .gs-editor-options,.gs-editor[data-mode=inherit-dark] .gs-editor-options{background:#252526;border-color:#454545;box-shadow:0 4px 12px rgba(0,0,0,.5)}.gs-editor-portal[data-mode=dark] .gs-editor-option,.gs-editor-portal[data-mode=inherit-dark] .gs-editor-option,.gs-editor[data-mode=dark] .gs-editor-option,.gs-editor[data-mode=inherit-dark] .gs-editor-option{color:#ccc}.gs-editor-portal[data-mode=dark] .gs-editor-option:hover,.gs-editor-portal[data-mode=inherit-dark] .gs-editor-option:hover,.gs-editor[data-mode=dark] .gs-editor-option:hover,.gs-editor[data-mode=inherit-dark] .gs-editor-option:hover{background-color:#333}.gs-editor-portal[data-mode=dark] .gs-editor-option-selected,.gs-editor-portal[data-mode=inherit-dark] .gs-editor-option-selected,.gs-editor[data-mode=dark] .gs-editor-option-selected,.gs-editor[data-mode=inherit-dark] .gs-editor-option-selected{background-color:#094771;color:#fff}.gs-editor-portal[data-mode=dark] .gs-editor-option-selected:hover,.gs-editor-portal[data-mode=inherit-dark] .gs-editor-option-selected:hover,.gs-editor[data-mode=dark] .gs-editor-option-selected:hover,.gs-editor[data-mode=inherit-dark] .gs-editor-option-selected:hover{background-color:#0d5a8f}.gs-editor-portal[data-mode=dark] .gs-editor-option-tab,.gs-editor-portal[data-mode=inherit-dark] .gs-editor-option-tab,.gs-editor[data-mode=dark] .gs-editor-option-tab,.gs-editor[data-mode=inherit-dark] .gs-editor-option-tab{color:#777;background:#333;border-color:#444}.gs-editor-portal[data-mode=dark] .gs-fn-guide1,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide1,.gs-editor[data-mode=dark] .gs-fn-guide1,.gs-editor[data-mode=inherit-dark] .gs-fn-guide1{background:#252526;border-color:#454545;color:#ccc}.gs-editor-portal[data-mode=dark] .gs-fn-guide1-example,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide1-example,.gs-editor[data-mode=dark] .gs-fn-guide1-example,.gs-editor[data-mode=inherit-dark] .gs-fn-guide1-example{background:#1e1e1e;border-color:#333;color:#d4d4d4}.gs-editor-portal[data-mode=dark] .gs-fn-guide1-desc,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide1-desc,.gs-editor[data-mode=dark] .gs-fn-guide1-desc,.gs-editor[data-mode=inherit-dark] .gs-fn-guide1-desc{color:#aaa}.gs-editor-portal[data-mode=dark] .gs-fn-guide1-args,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide1-args,.gs-editor[data-mode=dark] .gs-fn-guide1-args,.gs-editor[data-mode=inherit-dark] .gs-fn-guide1-args{border-color:#333}.gs-editor-portal[data-mode=dark] .gs-fn-guide1-arg-iter,.gs-editor-portal[data-mode=dark] .gs-fn-guide1-arg-name,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide1-arg-iter,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide1-arg-name,.gs-editor[data-mode=dark] .gs-fn-guide1-arg-iter,.gs-editor[data-mode=dark] .gs-fn-guide1-arg-name,.gs-editor[data-mode=inherit-dark] .gs-fn-guide1-arg-iter,.gs-editor[data-mode=inherit-dark] .gs-fn-guide1-arg-name{color:#4fc1ff}.gs-editor-portal[data-mode=dark] .gs-fn-guide1-arg-opt,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide1-arg-opt,.gs-editor[data-mode=dark] .gs-fn-guide1-arg-opt,.gs-editor[data-mode=inherit-dark] .gs-fn-guide1-arg-opt{color:#777}.gs-editor-portal[data-mode=dark] .gs-fn-guide1-arg-type,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide1-arg-type,.gs-editor[data-mode=dark] .gs-fn-guide1-arg-type,.gs-editor[data-mode=inherit-dark] .gs-fn-guide1-arg-type{background:#094771;color:#4fc1ff}.gs-editor-portal[data-mode=dark] .gs-fn-guide1-arg-desc,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide1-arg-desc,.gs-editor[data-mode=dark] .gs-fn-guide1-arg-desc,.gs-editor[data-mode=inherit-dark] .gs-fn-guide1-arg-desc{color:#999}.gs-editor-portal[data-mode=dark] .gs-fn-guide-category,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide-category,.gs-editor[data-mode=dark] .gs-fn-guide-category,.gs-editor[data-mode=inherit-dark] .gs-fn-guide-category{background:#2a2d3e;color:#7986cb;border-color:#3d4166}.gs-editor-portal[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-math,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-math,.gs-editor[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-math,.gs-editor[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-math{background:#0d2137;color:#64b5f6;border-color:#1a3a5c}.gs-editor-portal[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-statistics,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-statistics,.gs-editor[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-statistics,.gs-editor[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-statistics{background:#0d2218;color:#66bb6a;border-color:#1a3d2a}.gs-editor-portal[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-text,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-text,.gs-editor[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-text,.gs-editor[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-text{background:#2e2200;color:#ffd54f;border-color:#4d3900}.gs-editor-portal[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-time,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-time,.gs-editor[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-time,.gs-editor[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-time{background:#2d0d1e;color:#f48fb1;border-color:#4d1a33}.gs-editor-portal[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-lookup,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-lookup,.gs-editor[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-lookup,.gs-editor[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-lookup{background:#260d33;color:#ce93d8;border-color:#3d1a54}.gs-editor-portal[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-logical,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-logical,.gs-editor[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-logical,.gs-editor[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-logical{background:#0d2421;color:#4db6ac;border-color:#1a3d39}.gs-editor-portal[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-information,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-information,.gs-editor[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-information,.gs-editor[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-information{background:#0d2426;color:#4dd0e1;border-color:#1a3d40}.gs-editor-portal[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-finance,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-finance,.gs-editor[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-finance,.gs-editor[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-finance{background:#2e1500;color:#ffb74d;border-color:#4d2800}.gs-editor-portal[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-engineering,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-engineering,.gs-editor[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-engineering,.gs-editor[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-engineering{background:#1e1714;color:#bcaaa4;border-color:#332c28}.gs-editor-portal[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-ai,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-ai,.gs-editor[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-ai,.gs-editor[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-ai{background:#10142e;color:#7986cb;border-color:#232a52}.gs-editor-portal[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-other,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-other,.gs-editor[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-other,.gs-editor[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-other{background:#1e1e1e;color:#9e9e9e;border-color:#333}.gs-editor-portal[data-mode=dark] .gs-fn-guide2,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide2,.gs-editor[data-mode=dark] .gs-fn-guide2,.gs-editor[data-mode=inherit-dark] .gs-fn-guide2{background:#252526;border-color:#454545;box-shadow:0 4px 12px rgba(0,0,0,.5);color:#ccc}.gs-editor-portal[data-mode=dark] .gs-fn-guide2-name,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide2-name,.gs-editor[data-mode=dark] .gs-fn-guide2-name,.gs-editor[data-mode=inherit-dark] .gs-fn-guide2-name{color:#dfdbdb;background:#333;border-color:#444}.gs-editor-portal[data-mode=dark] .gs-fn-guide2 .gs-active-arg,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide2 .gs-active-arg,.gs-editor[data-mode=dark] .gs-fn-guide2 .gs-active-arg,.gs-editor[data-mode=inherit-dark] .gs-fn-guide2 .gs-active-arg{color:#fff;background-color:#094771}.gs-editor-portal[data-mode=dark] .gs-fn-guide2-arg-type,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide2-arg-type,.gs-editor[data-mode=dark] .gs-fn-guide2-arg-type,.gs-editor[data-mode=inherit-dark] .gs-fn-guide2-arg-type{background:#094771;color:#4fc1ff}.gs-editor-portal[data-mode=dark] .gs-fn-guide2-desc,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide2-desc,.gs-editor[data-mode=dark] .gs-fn-guide2-desc,.gs-editor[data-mode=inherit-dark] .gs-fn-guide2-desc{color:#aaa;border-top-color:#333}.gs-fn-guide2{position:fixed;left:0;background:#fff;border:1px solid rgba(0,0,0,.1);box-shadow:0 4px 16px rgba(0,0,0,.12);border-radius:6px;padding:12px 16px;width:280px;z-index:1000;cursor:default;white-space:normal;color:#333;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif;transition:opacity .1s ease-in-out}.gs-fn-guide2.gs-fn-guide2-hidden{opacity:0!important;pointer-events:none!important}.gs-fn-guide2-name{font-family:monospace;font-weight:700;font-size:13px;color:#1a1a1a;background:#f5f5f5;padding:6px 8px;border-radius:4px;border:1px solid #eee;display:flex;align-items:center;gap:6px;flex-wrap:wrap;width:100%;box-sizing:border-box;margin-bottom:8px}.gs-fn-guide2-args-inline{font-size:13px;font-family:monospace;line-height:1.5;margin-bottom:8px;color:#666}.gs-fn-guide2-args-inline span{transition:all .2s ease-in-out}.gs-fn-guide2 .gs-active-arg{font-weight:700;color:var(--gs-accent,#2563eb);background-color:color-mix(in srgb,var(--gs-accent,#2563eb) 12%,transparent);padding:2px 4px;margin:0 -4px;border-radius:4px}.gs-fn-guide2-arg-type{color:var(--gs-accent,#2563eb);padding:0 4px;background:color-mix(in srgb,var(--gs-accent,#2563eb) 12%,transparent);border-radius:3px;font-size:11px;margin:0 4px}.gs-fn-guide2-desc{font-size:12px;color:#555;line-height:1.4;border-top:1px solid #eee;padding-top:8px;margin-top:4px}.gs-fn-guide2-desc p{margin:0}.gs-fn-guide2-desc-more{font-style:italic;color:#888;margin-top:4px!important;font-size:11px}.gs-adjuster{padding:0}.gs-table{margin:0}.gs-tabular{overflow:auto;overflow-anchor:none;display:flex;box-sizing:border-box;position:relative}.gs-root1[data-matrix-align=both] .gs-tabular,.gs-root1[data-matrix-align=horizontal] .gs-tabular{justify-content:safe center}.gs-root1[data-matrix-align=both] .gs-tabular,.gs-root1[data-matrix-align=vertical] .gs-tabular{align-items:safe center}.gs-tabular-inner{flex:0 0 auto;position:relative;overflow:hidden;overflow:clip;box-sizing:border-box;border-right:solid var(--gs-mx-br,1px) var(--gs-border,#e3e6ea);border-bottom:solid var(--gs-mx-bb,1px) var(--gs-border,#e3e6ea)}.gs-tabular-inner>table{table-layout:fixed;border-collapse:collapse;border-spacing:0}.gs-main[data-overflow-x=true] .gs-tabular-inner{border-right-width:0}.gs-main[data-overflow-y=true] .gs-tabular-inner{border-bottom-width:0}.gs-main::after{content:'';position:absolute;inset:0;pointer-events:none;z-index:3;border:0 solid var(--gs-border,#e3e6ea)}.gs-main[data-overflow-x=true]::after{border-right-width:var(--gs-mx-br,1px)}.gs-main[data-overflow-y=true]::after{border-bottom-width:var(--gs-mx-bb,1px)}.gs-th{z-index:2;padding:0;position:sticky;font-size:13px;font-weight:400;box-sizing:border-box;vertical-align:top}.gs-th .gs-resizer{position:absolute;border-color:transparent;box-sizing:border-box;z-index:2}.gs-th .gs-resizer:hover{background-color:var(--gs-accent,#2563eb)}.gs-th .gs-resizer.gs-protected{display:none}.gs-th-inner{height:100%;box-sizing:border-box;vertical-align:middle;overflow:hidden;display:flex;align-items:center;justify-content:center}.gs-th-inner-wrap{height:100%;box-sizing:border-box;background-color:transparent}.gs-th-top{top:0;overflow:hidden}.gs-th-top .gs-resizer{top:0;right:0;width:3px;cursor:e-resize}.gs-th-top .gs-resizer.gs-dragging{border-right-style:dotted;height:1000000px!important;cursor:e-resize}.gs-th-left{left:0;overflow:hidden;min-width:30px;border-top:solid 1px var(--gs-border,#e3e6ea)}.gs-th-left .gs-resizer{left:0;bottom:0;height:3px;cursor:n-resize}.gs-th-left .gs-resizer.gs-dragging{border-bottom-style:dotted;width:1000000px!important;cursor:n-resize}.gs-th-top.gs-th-left{top:0;left:0;z-index:3;border:none!important}.gs-th-left.gs-filter-fixed .gs-th-inner::before{content:'‹\\\\00a0'}.gs-th-left.gs-sort-fixed .gs-th-inner::after{content:'\\\\00a0›'}.gs-col-addr{position:absolute;top:2px;right:4px;font-size:9px;opacity:.5;line-height:1;letter-spacing:.3px;pointer-events:none}.gs-search-bar{width:100%;display:flex;align-items:center;padding:3px 0;border-top:solid 1px rgba(128,128,128,.3);border-left:solid 1px rgba(128,128,128,.3);border-right:solid 1px rgba(128,128,128,.3);border-bottom:solid 1px rgba(128,128,128,.3);box-sizing:border-box;background-color:rgba(200,50,0,.2)}.gs-search-bar.gs-search-found{background-color:rgba(0,200,100,.2)}.gs-search-bar .gs-search-bar-inner{border-left:solid 1px rgba(128,128,128,.5)}.gs-search-bar .gs-search-bar-icon{border-left:solid 1px rgba(128,128,128,.3);display:flex;align-items:center;justify-content:center;width:30px;flex-shrink:0}.gs-search-bar .gs-search-input-wrapper{flex-grow:1;position:relative;display:flex;align-items:center;height:100%}.gs-search-bar .gs-search-input-ghost{position:absolute;left:2px;right:2px;top:0;bottom:0;pointer-events:none;font-size:12px;font-family:monospace,Arial;line-height:24px;letter-spacing:1px;white-space:pre-wrap;word-break:break-all;color:transparent;overflow:hidden}.gs-search-bar .gs-search-input-ghost .gs-search-ghost-hint{color:#aaa}.gs-search-bar textarea{background-color:transparent;border:none;padding:0 2px;box-sizing:border-box;outline:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;font-size:12px;font-family:monospace,Arial;height:24px;line-height:24px;min-height:24px;letter-spacing:1px;caret-color:rgba(128,128,128);white-space:pre-wrap;word-break:break-all;flex-grow:1;width:100%;resize:none}.gs-search-progress{color:#999;font-size:13px;width:60px;flex-shrink:0;white-space:nowrap;text-align:center}.gs-search-close{cursor:pointer;display:flex;align-items:center;justify-content:center;width:24px;flex-shrink:0}.gs-search-buttons{display:flex;align-items:center;white-space:nowrap;flex-shrink:0}.gs-search-button{display:inline-flex;cursor:pointer;margin:0 2px}.gs-search-button span{display:inline-block;font-size:11px;padding:3px 5px;background-color:rgba(128,128,128,.1);border:1px solid rgba(128,128,128,.3);border-radius:3px;transition:all .15s ease;line-height:1}.gs-search-button span:hover{background-color:rgba(128,128,128,.2)}.gs-search-button span.gs-search-button-on{color:var(--gs-accent,#2563eb);background-color:color-mix(in srgb,var(--gs-accent,#2563eb) 22%,transparent);border-color:var(--gs-accent,#2563eb)}.gs-search-range span{white-space:nowrap;font-family:monospace}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.gs-loading-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:color-mix(in srgb,var(--gs-surface,#fff) 70%,transparent);display:flex;align-items:center;justify-content:center;z-index:100;pointer-events:all}.gs-loading-spinner{width:32px;height:32px;border:3px solid color-mix(in srgb,var(--gs-fg,#1f2328) 12%,transparent);border-top-color:var(--gs-accent,#2563eb);border-radius:50%;animation:spin .8s linear infinite}.gs-progress-overlay{position:absolute;top:0;left:0;right:0;bottom:0;z-index:100;pointer-events:all;display:flex;align-items:center;justify-content:center}.gs-progress-box{min-width:240px;padding:16px 18px;border-radius:8px;background:var(--gs-editor-surface,#fff);border:1px solid var(--gs-border,#e3e6ea);box-shadow:0 6px 24px rgba(0,0,0,.28);display:flex;flex-direction:column;gap:10px}.gs-progress-head{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--gs-fg,#1f2328)}.gs-progress-head .gs-loading-spinner{width:15px;height:15px;border-width:2px}.gs-progress-track{height:6px;border-radius:3px;overflow:hidden;background:color-mix(in srgb,var(--gs-fg,#1f2328) 12%,transparent)}.gs-progress-fill{height:100%;border-radius:3px;background:var(--gs-accent,#2563eb);transition:width .1s linear}@keyframes gs-pending-slide{0%{left:-40%}100%{left:100%}}@keyframes gs-pending-pulse{0%{left:0;width:0}50%{left:0;width:100%}100%{left:100%;width:0}}@keyframes gs-flash{0%{opacity:0}20%{opacity:1}100%{opacity:0}}.gs-flash-overlay{position:absolute;inset:0;pointer-events:none;z-index:9999;background:color-mix(in srgb,var(--gs-accent,#2563eb) 15%,transparent);opacity:0}.gs-flash-overlay--active{animation:gs-flash .6s ease-out forwards}`, me = () => {\n if (typeof window > \"u\" || document.querySelector(`style.gs-styling[data-modified-at='${B}']`))\n return;\n const o = document.createElement(\"style\");\n document.head.appendChild(o), o.setAttribute(\"class\", \"gs-styling\"), o.setAttribute(\"data-modified-at\", `${B}`), o.innerText = J;\n};\nexport {\n w as SCROLL_CAP,\n ce as calcBelowPosition,\n fe as calcSideStyle,\n pe as clampLeft,\n ue as clampPopup,\n me as embedStyle,\n oe as expandInput,\n _ as focus,\n le as getAreaInTabular,\n Q as getCellRectPositions,\n ge as getVisibleColRange,\n se as getVisibleRowRange,\n be as hAlignTransform,\n ae as handleFormulaQuoteAutoClose,\n q as insertRef,\n R as insertTextAtCursor,\n re as isFocus,\n ee as isRefInsertable,\n ie as physicalScrollHeight,\n Z as preventSafariBounce,\n te as resetInput,\n de as smartScroll,\n G as toPhysicalScrollTop,\n W as toVirtualScrollTop,\n ne as virtualize\n};\n//# sourceMappingURL=index.js.map\n","import { a2p, x2c, y2r } from '@gridsheet/web';\nimport { Sheet } from '@gridsheet/web';\nimport type { Address, PointType, StorePatchType, StoreType } from '../types';\n\n/**\n * Strip redundant fields from a StorePatchType before recording in history.\n * - selectingZone with endY === -1 && endX === -1 is a no-selection sentinel and need not be stored.\n */\nexport const compactReflection = (reflection: StorePatchType): StorePatchType => {\n const result = { ...reflection };\n if (result.selectingZone != null && result.selectingZone.endY === -1 && result.selectingZone.endX === -1) {\n delete result.selectingZone;\n }\n return result;\n};\n\nexport const restrictPoints = (store: StoreType, sheet: Sheet) => {\n const { choosing, selectingZone } = store;\n let { y, x } = choosing;\n let { startY: y1, startX: x1, endY: y2, endX: x2 } = selectingZone;\n const [numRows, numCols] = [sheet.numRows, sheet.numCols];\n if (y > numRows) {\n y = numRows;\n }\n if (x > numCols) {\n x = numCols;\n }\n if (y1 > numRows) {\n y1 = numRows;\n }\n if (y2 > numRows) {\n y2 = numRows;\n }\n if (x1 > numCols) {\n x1 = numCols;\n }\n if (x2 > numCols) {\n x2 = numCols;\n }\n return {\n choosing: { y, x } as PointType,\n selectingZone: { startY: y1, startX: x1, endY: y2, endX: x2 },\n };\n};\n\nconst FLASH_CLASS = 'gs-flash-overlay--active';\nconst FLASH_DURATION_MS = 600;\nexport const flashSheet = (el: HTMLElement | null) => {\n if (!el) {\n return;\n }\n el.classList.remove(FLASH_CLASS);\n // force reflow to restart animation when called consecutively\n void el.offsetWidth;\n el.classList.add(FLASH_CLASS);\n setTimeout(() => el.classList.remove(FLASH_CLASS), FLASH_DURATION_MS);\n};\n\nexport const flashWithCallback = (\n store: StoreType,\n sheet: Sheet,\n callback: ((s: StoreType) => void) | undefined,\n): StoreType & { callback?: (store: StoreType) => void } => ({\n ...store,\n sheetReactive: { current: sheet },\n callback: (s: StoreType) => {\n callback?.(s);\n flashSheet(store.flashRef.current);\n },\n});\n\nexport const initSearchStatement = (sheet: Sheet, store: StoreType) => {\n const { searchQuery, searchCaseSensitive, searchRegex, searchRange } = store;\n let { choosing } = store;\n if (!searchQuery) {\n return { matchingCells: [] };\n }\n const matchingCells: Address[] = [];\n\n let matcher: (value: string) => boolean;\n if (searchRegex) {\n try {\n const flags = searchCaseSensitive ? '' : 'i';\n const regex = new RegExp(searchQuery, flags);\n matcher = (v: string) => regex.test(v);\n } catch (e) {\n // Invalid regex, treat as literal string\n const q = searchCaseSensitive ? searchQuery : searchQuery.toLowerCase();\n matcher = (v: string) => {\n const s = searchCaseSensitive ? v : v.toLowerCase();\n return s.indexOf(q) !== -1;\n };\n }\n } else {\n const q = searchCaseSensitive ? searchQuery : searchQuery.toLowerCase();\n matcher = (v: string) => {\n const s = searchCaseSensitive ? v : v.toLowerCase();\n return s.indexOf(q) !== -1;\n };\n }\n\n // Determine search range\n let startY = 1,\n endY = sheet.bottom;\n let startX = 1,\n endX = sheet.right;\n if (searchRange) {\n startY = searchRange.startY;\n endY = searchRange.endY;\n startX = searchRange.startX;\n endX = searchRange.endX;\n }\n\n for (let y = startY; y <= endY; y++) {\n for (let x = startX; x <= endX; x++) {\n const v = sheet.getSerializedValue({ point: { y, x } });\n if (matcher(v)) {\n matchingCells.push(`${x2c(x)}${y2r(y)}`);\n }\n }\n }\n const matchingCellIndex = matchingCells.length === store.matchingCells.length ? store.matchingCellIndex : 0;\n if (matchingCells.length > 0) {\n const address = matchingCells[matchingCellIndex];\n choosing = a2p(address);\n }\n return { matchingCells, searchQuery, matchingCellIndex, choosing };\n};\n\nexport const isXSheetFocused = (store: StoreType) => {\n const { sheetId, sheetReactive: sheetRef } = store;\n const sheet = sheetRef.current;\n if (!sheet) {\n return false;\n }\n if (sheetId === sheet.registry.editingSheetId) {\n return false;\n }\n return !!sheet.registry.editingAddress;\n};\n","import {\n StoreType,\n RectType,\n ZoneType,\n PointType,\n RangeType,\n FeedbackType,\n CellsByAddressType,\n AreaType,\n PositionType,\n ModeType,\n RawCellType,\n OperatorType,\n FilterConfig,\n PendingAsyncOp,\n} from '../types';\nimport { zoneToArea, superposeArea, matrixShape, areaShape, areaDiff, areaToZone, restrictZone } from '@gridsheet/web';\nimport { Sheet } from '@gridsheet/web';\n\nimport { p2a, a2p } from '@gridsheet/web';\nimport { DEFAULT_HEIGHT, DEFAULT_WIDTH } from '@gridsheet/web';\nimport { initSearchStatement, restrictPoints, flashSheet, flashWithCallback, compactReflection } from './helpers';\nimport { smartScroll } from '@gridsheet/web';\nimport { focus } from '@gridsheet/web';\nimport { operations as prevention } from '@gridsheet/web';\nimport { Autofill } from '@gridsheet/web';\n\nconst resetZone: ZoneType = { startY: -1, startX: -1, endY: -1, endX: -1 };\n\n// Yield between async-mutation chunks. Using rAF for every chunk throttled the whole\n// op to 60fps (each chunk waited a full frame). Instead yield via a MessageChannel\n// macrotask (near-zero overhead, so throughput isn't frame-capped) and only force a\n// real paint via rAF every ~80ms so the progress bar still advances smoothly.\nconst rafYield = (() => {\n let ch: MessageChannel | null = null;\n let waiting: (() => void) | null = null;\n let lastPaint = 0;\n return (): Promise<void> =>\n new Promise<void>((resolve) => {\n const now = Date.now();\n if (now - lastPaint >= 80) {\n lastPaint = now;\n requestAnimationFrame(() => resolve());\n return;\n }\n if (ch == null) {\n ch = new MessageChannel();\n ch.port1.onmessage = () => {\n const w = waiting;\n waiting = null;\n w?.();\n };\n }\n waiting = resolve;\n ch.port2.postMessage(null);\n });\n})();\n\n// Above this many target cells, fill/paste run as a chunked async op with a progress\n// bar instead of a blocking write.\nconst ASYNC_MUTATION_THRESHOLD = 20000;\n\n// Build a pending async op that undoes/redoes a large same-sheet UPDATE (paste/fill)\n// in chunks with a progress bar, restoring the selection/cursor from the reflection.\nconst makeUndoRedoOp = (sheet: Sheet, history: any, store: StoreType, isRedo: boolean): PendingAsyncOp => {\n const reflection = isRedo ? history.redoReflection : history.undoReflection;\n return {\n run: async (onProgress) => {\n const opts = {\n onProgress: (p: { done: number; total: number }) => onProgress(p.total > 0 ? p.done / p.total : 1),\n yieldControl: rafYield,\n };\n if (isRedo) {\n await sheet.redoAsync(opts);\n } else {\n await sheet.undoAsync(opts);\n }\n return sheet.__raw__;\n },\n selectingZone: reflection?.selectingZone ?? store.selectingZone,\n label: isRedo ? 'Redoing' : 'Undoing',\n finalize: reflection?.choosing ? { choosing: reflection.choosing } : {},\n postCommit: () => {\n sheet.registry.transmit(reflection?.transmit);\n flashSheet(store.flashRef.current);\n },\n };\n};\n\nconst actions: { [s: string]: CoreAction<any> } = {};\n\ntype StoreWithCallback = StoreType & {\n callback?: (store: StoreType) => void;\n};\n\nexport const reducer = <T>(store: StoreType, action: { type: number; value: T }): StoreType => {\n const act: CoreAction<T> | undefined = actions[action.type];\n if (act == null) {\n return store;\n }\n\n // React StrictMode calls reducers twice per dispatch to detect side effects.\n // Since Sheet is a mutable object, the second call re-applies operations (double undo, etc.).\n // Guard: React passes the SAME action object reference to both calls, so we use object identity\n // to distinguish a StrictMode second-call (same reference) from a new dispatch (new reference).\n // Using a Map allows multiple batched dispatches to each have their own cached result,\n // preventing the single-slot cache from being overwritten when actions are processed together.\n const registry = store.sheetReactive.current?.registry;\n if (registry?._strictModeCache?.has(action)) {\n const cached = registry._strictModeCache.get(action) as StoreType;\n registry._strictModeCache.delete(action);\n return cached;\n }\n\n const { callback, ...newStore } = act.reduce(store, action.value);\n callback?.(newStore);\n const result = { ...store, ...newStore };\n\n if (registry) {\n if (!registry._strictModeCache) {\n registry._strictModeCache = new Map();\n }\n registry._strictModeCache.set(action, result);\n queueMicrotask(() => {\n registry._strictModeCache?.delete(action);\n });\n }\n\n return result;\n};\n\nexport class CoreAction<T> {\n static head = 1;\n private actionId: number = 1;\n /** Whether this action mutates sheet data (triggers loading indicator). */\n public mutation = false;\n /** Whether this action kicks off a chunked async mutation (fill/paste): its reduce\n * sets `pendingAsyncOp` and GridSheet runs it with a progress bar. Locked while one runs. */\n public asyncMutation = false;\n\n public reduce(store: StoreType, payload: T): StoreWithCallback {\n return store;\n }\n public call(payload: T): { type: number; value: T } {\n return {\n type: this.actionId,\n value: payload,\n };\n }\n public bind() {\n this.actionId = CoreAction.head++;\n actions[this.actionId] = this;\n return this.call.bind(this);\n }\n}\n\n/** Returns true if the given action type is a mutation (heavy operation). */\nexport const isMutationAction = (type: number): boolean => {\n return actions[type]?.mutation === true;\n};\n\n/** Returns true if the action starts a chunked async mutation (fill/paste). */\nexport const isAsyncMutationAction = (type: number): boolean => {\n return actions[type]?.asyncMutation === true;\n};\n\nclass SetSearchQueryAction<T extends string | undefined> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const searchQuery = payload;\n const { sheetReactive: sheetRef } = store;\n if (sheetRef.current == null) {\n return store;\n }\n return {\n ...store,\n ...initSearchStatement(sheetRef.current, { ...store, searchQuery }),\n searchQuery,\n };\n }\n}\nexport const setSearchQuery = new SetSearchQueryAction().bind();\n\nclass SetSearchCaseSensitiveAction<T extends boolean> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const searchCaseSensitive = payload;\n const { sheetReactive: sheetRef } = store;\n if (sheetRef.current == null) {\n return store;\n }\n return {\n ...store,\n ...initSearchStatement(sheetRef.current, { ...store, searchCaseSensitive }),\n searchCaseSensitive,\n };\n }\n}\nexport const setSearchCaseSensitive = new SetSearchCaseSensitiveAction().bind();\n\nclass SetSearchRegexAction<T extends boolean> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const searchRegex = payload;\n const { sheetReactive: sheetRef } = store;\n if (sheetRef.current == null) {\n return store;\n }\n return {\n ...store,\n ...initSearchStatement(sheetRef.current, { ...store, searchRegex }),\n searchRegex,\n };\n }\n}\nexport const setSearchRegex = new SetSearchRegexAction().bind();\n\nclass SetSearchRangeAction<T extends ZoneType | undefined> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const searchRange = payload;\n const { sheetReactive: sheetRef } = store;\n if (sheetRef.current == null) {\n return store;\n }\n return {\n ...store,\n ...initSearchStatement(sheetRef.current, { ...store, searchRange }),\n searchRange,\n };\n }\n}\nexport const setSearchRange = new SetSearchRangeAction().bind();\n\nclass SetEditingAddressAction<T extends string> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n editingAddress: payload,\n };\n }\n}\nexport const setEditingAddress = new SetEditingAddressAction().bind();\n\nclass SetAutofillDraggingToAction<T extends PointType | null> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n autofillDraggingTo: payload,\n };\n }\n}\nexport const setAutofillDraggingTo = new SetAutofillDraggingToAction().bind();\n\nclass SubmitAutofillAction<T extends PointType> extends CoreAction<T> {\n mutation = true;\n reduce(store: StoreType, payload: T): StoreWithCallback {\n try {\n const autofill = new Autofill(store, payload);\n const sheet = autofill.applied;\n const selectingZone = areaToZone(autofill.wholeArea);\n\n const result = {\n ...store,\n sheetReactive: { current: sheet },\n ...initSearchStatement(sheet, store),\n ...restrictPoints(store, sheet),\n selectingZone,\n leftHeaderSelecting: false,\n topHeaderSelecting: false,\n autofillDraggingTo: null,\n };\n // A drag-fill starts on the fill handle (mousedown there, not on a cell), so the editor\n // was blurred and nothing refocuses it — leaving the grid unresponsive to the keyboard\n // right after a fill. Restore focus after the re-render.\n return {\n ...result,\n callback: (next: StoreType) => requestAnimationFrame(() => focus(next.editorRef.current)),\n };\n } catch (e) {\n // The fill may fail (e.g. a target beyond the sheet). Never leave\n // autofillDraggingTo set — a stuck value blocks all future clicks\n // (handleDragStart early-returns while it is set).\n // eslint-disable-next-line no-console\n console.error('[gridsheet] autofill failed:', e);\n return { ...store, autofillDraggingTo: null };\n }\n }\n}\nexport const submitAutofill = new SubmitAutofillAction().bind();\n\nclass SetContextMenuPositionAction<T extends PositionType> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n contextMenuPosition: payload,\n };\n }\n}\nexport const setContextMenuPosition = new SetContextMenuPositionAction().bind();\n\nclass SetResizingPositionYAction<T extends [number, number, number]> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n resizingPositionY: payload,\n };\n }\n}\nexport const setResizingPositionY = new SetResizingPositionYAction().bind();\n\nclass SetResizingPositionXAction<T extends [number, number, number]> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n resizingPositionX: payload,\n };\n }\n}\nexport const setResizingPositionX = new SetResizingPositionXAction().bind();\n\nclass SetEnteringAction<T extends boolean> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n entering: payload,\n };\n }\n}\nexport const setEntering = new SetEnteringAction().bind();\n\nclass UpdateSheetAction<T extends Sheet> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n sheetReactive: { current: payload },\n ...initSearchStatement(payload, store),\n ...restrictPoints(store, payload),\n };\n }\n}\nexport const updateSheet = new UpdateSheetAction().bind();\n\nclass SetEditorRectAction<T extends RectType> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n editorRect: payload,\n };\n }\n}\nexport const setEditorRect = new SetEditorRectAction().bind();\n\nclass SetDragging<T extends boolean> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n dragging: payload,\n };\n }\n}\nexport const setDragging = new SetDragging().bind();\n\nclass BlurAction<T extends null> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n editingAddress: '',\n };\n }\n}\nexport const blur = new BlurAction().bind();\n\nclass CopyAction<T extends ZoneType> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { sheetReactive: sheetRef } = store;\n const sheet = sheetRef.current;\n if (!sheet) {\n return store;\n }\n return {\n ...store,\n callback: ({ sheetReactive: sheetRef }) => {\n sheet.registry.transmit({\n copyingSheetId: sheet.id,\n copyingZone: payload,\n cutting: false,\n });\n },\n };\n }\n}\nexport const copy = new CopyAction().bind();\n\nclass CutAction<T extends ZoneType> extends CoreAction<T> {\n mutation = true;\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { sheetReactive: sheetRef } = store;\n const sheet = sheetRef.current;\n if (!sheet) {\n return store;\n }\n return {\n ...store,\n callback: ({ sheetReactive: sheetRef }) => {\n sheet.registry.transmit({\n copyingSheetId: sheet.id,\n copyingZone: payload,\n cutting: true,\n });\n },\n };\n }\n}\nexport const cut = new CutAction().bind();\n\nclass PasteAction<T extends { matrix: RawCellType[][]; onlyValue: boolean }> extends CoreAction<T> {\n mutation = true;\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { choosing, selectingZone, sheetReactive: dstSheetRef } = store;\n const dstSheet = dstSheetRef.current;\n if (!dstSheet) {\n return store;\n }\n const { registry } = dstSheet;\n const { copyingSheetId, copyingZone, cutting } = registry;\n const srcSheet = dstSheet.getSheetBySheetId(copyingSheetId);\n\n let selectingArea = zoneToArea(selectingZone);\n const copyingArea = zoneToArea(copyingZone);\n const { matrix, onlyValue } = payload;\n\n if (cutting) {\n if (!srcSheet) {\n return store;\n }\n const src = copyingArea;\n const { rows: dy, cols: dx } = areaDiff(copyingArea);\n const dst: AreaType =\n selectingArea.top !== -1\n ? {\n top: selectingArea.top,\n left: selectingArea.left,\n bottom: selectingArea.top + dy,\n right: selectingArea.left + dx,\n }\n : {\n top: choosing.y,\n left: choosing.x,\n bottom: choosing.y + dy,\n right: choosing.x + dx,\n };\n\n const nextSelectingZone = restrictZone(areaToZone(dst));\n const newSheet = dstSheet.move({\n srcSheet,\n src,\n dst,\n operator: 'USER',\n undoReflection: compactReflection({\n sheetId: srcSheet.id,\n selectingZone: nextSelectingZone,\n choosing,\n transmit: { copyingSheetId: srcSheet.id, copyingZone, cutting: true },\n }),\n redoReflection: compactReflection({\n sheetId: srcSheet.id,\n choosing,\n transmit: { copyingSheetId: srcSheet.id, copyingZone: resetZone },\n }),\n });\n\n return {\n ...store,\n ...initSearchStatement(newSheet, store),\n sheetReactive: { current: newSheet },\n selectingZone: nextSelectingZone,\n inputting: newSheet.getSerializedValue({ point: choosing, resolution: 'RAW' }),\n callback: ({ sheetReactive: sheetRef }) => {\n registry.transmit({\n cutting: false,\n copyingZone: resetZone,\n });\n },\n };\n }\n\n let newSheet: Sheet;\n let { y, x } = choosing;\n\n if (copyingArea.top === -1) {\n const { rows: height, cols: width } = matrixShape({ matrix, base: -1 });\n selectingArea = {\n top: y,\n left: x,\n bottom: y + height,\n right: x + width,\n };\n const nextSelectingZone = restrictZone(areaToZone(selectingArea));\n newSheet = dstSheet.writeRawCellMatrix({\n point: { y, x },\n matrix,\n onlyValue,\n undoReflection: compactReflection({\n sheetId: dstSheet.id,\n selectingZone: nextSelectingZone,\n choosing,\n }),\n redoReflection: compactReflection({\n sheetId: dstSheet.id,\n selectingZone: nextSelectingZone,\n choosing,\n }),\n });\n } else {\n if (srcSheet == null) {\n return store;\n }\n let { rows: dy, cols: dx } = areaDiff(copyingArea);\n if (selectingArea.top !== -1) {\n y = selectingArea.top;\n x = selectingArea.left;\n const superposed = superposeArea(selectingArea, copyingArea);\n dy = superposed.rows;\n dx = superposed.cols;\n }\n selectingArea = { top: y, left: x, bottom: y + dy, right: x + dx };\n const copyProps = {\n srcSheet,\n src: copyingArea,\n dst: selectingArea,\n onlyValue,\n operator: 'USER' as OperatorType,\n undoReflection: compactReflection({\n sheetId: srcSheet.id,\n transmit: { copyingZone },\n choosing,\n selectingZone,\n }),\n redoReflection: compactReflection({\n sheetId: srcSheet.id,\n transmit: { copyingSheetId: srcSheet.id, copyingZone: resetZone },\n choosing,\n selectingZone: areaToZone(selectingArea),\n }),\n };\n // A large paste writes millions of cells — run it as a chunked async op with a\n // progress bar (paste doesn't change the sheet's dimensions, so the target\n // selection is known up front). Small pastes stay synchronous.\n if ((dy + 1) * (dx + 1) > ASYNC_MUTATION_THRESHOLD) {\n const nextSelectingZone = restrictZone(areaToZone(selectingArea));\n nextSelectingZone.endX = Math.min(nextSelectingZone.endX, dstSheet.numCols);\n nextSelectingZone.endY = Math.min(nextSelectingZone.endY, dstSheet.numRows);\n return {\n ...store,\n pendingAsyncOp: {\n run: (onProgress) =>\n dstSheet.copyAsync(copyProps, {\n onProgress: (p) => onProgress(p.total > 0 ? p.done / p.total : 1),\n yieldControl: rafYield,\n }),\n selectingZone: nextSelectingZone,\n label: 'Pasting',\n postCommit: () => registry.transmit({ copyingZone: resetZone }),\n },\n };\n }\n newSheet = dstSheet.copy(copyProps);\n }\n\n const nextSelectingZone = restrictZone(areaToZone(selectingArea));\n nextSelectingZone.endX = Math.min(nextSelectingZone.endX, newSheet.numCols);\n nextSelectingZone.endY = Math.min(nextSelectingZone.endY, newSheet.numRows);\n return {\n ...store,\n sheetReactive: { current: newSheet },\n selectingZone: nextSelectingZone,\n inputting: newSheet.getSerializedValue({ point: choosing, resolution: 'RAW' }),\n ...initSearchStatement(newSheet, store),\n callback: ({ sheetReactive: sheetRef }) => {\n registry.transmit({\n copyingZone: resetZone,\n });\n },\n };\n }\n}\nexport const paste = new PasteAction().bind();\n\nclass EscapeAction<T extends null> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { sheetReactive: sheetRef } = store;\n return {\n ...store,\n editingAddress: '',\n leftHeaderSelecting: false,\n topHeaderSelecting: false,\n callback: ({ sheetReactive: sheetRef }) => {\n sheetRef.current!.registry.transmit({\n copyingZone: resetZone,\n cutting: false,\n });\n },\n };\n }\n}\nexport const escape = new EscapeAction().bind();\n\nclass ChooseAction<T extends PointType> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n choosing: payload,\n entering: true,\n };\n }\n}\nexport const choose = new ChooseAction().bind();\n\nclass SelectAction<T extends ZoneType> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n selectingZone: payload,\n leftHeaderSelecting: false,\n topHeaderSelecting: false,\n };\n }\n}\nexport const select = new SelectAction().bind();\n\nclass SelectRowsAction<T extends { range: RangeType; numCols: number }> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { range, numCols } = payload;\n const { start, end } = range;\n const sheet = store.sheetReactive.current;\n const selectingZone = {\n startY: start,\n startX: 1,\n endY: end,\n endX: numCols,\n };\n // Find the first non-filtered row in the selection for choosing\n let choosingY = start;\n if (sheet) {\n for (let y = start; y <= end; y++) {\n if (!sheet.isRowFiltered(y)) {\n choosingY = y;\n break;\n }\n }\n }\n return {\n ...store,\n selectingZone,\n choosing: { y: choosingY, x: 1 },\n leftHeaderSelecting: true,\n topHeaderSelecting: false,\n };\n }\n}\nexport const selectRows = new SelectRowsAction().bind();\n\nclass SelectColsAction<T extends { range: RangeType; numRows: number }> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { range, numRows } = payload;\n const { start, end } = range;\n const sheet = store.sheetReactive.current;\n const selectingZone = {\n startY: 1,\n startX: start,\n endY: numRows,\n endX: end,\n };\n // Find the first non-filtered row (y=1 is always visible for columns, use y=1)\n // For columns there is no column-level filter, so choosing y=1 (first data row visible)\n let choosingY = 1;\n if (sheet) {\n for (let y = 1; y <= numRows; y++) {\n if (!sheet.isRowFiltered(y)) {\n choosingY = y;\n break;\n }\n }\n }\n return {\n ...store,\n selectingZone,\n choosing: { y: choosingY, x: start },\n leftHeaderSelecting: false,\n topHeaderSelecting: true,\n };\n }\n}\nexport const selectCols = new SelectColsAction().bind();\n\nclass DragAction<T extends PointType> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { startY, startX } = store.selectingZone;\n const selectingZone = {\n startY,\n startX,\n endY: payload.y,\n endX: payload.x,\n };\n if (startY === payload.y && startX === payload.x) {\n selectingZone.endY = -1;\n selectingZone.endX = -1;\n }\n return { ...store, selectingZone };\n }\n}\nexport const drag = new DragAction().bind();\n\nclass SearchAction<T extends number> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { matchingCells } = store;\n let { matchingCellIndex, choosing } = store;\n matchingCellIndex += payload;\n if (matchingCellIndex >= matchingCells.length) {\n matchingCellIndex = 0;\n } else if (matchingCellIndex < 0) {\n matchingCellIndex = matchingCells.length - 1;\n }\n\n if (matchingCells.length > 0) {\n const address = matchingCells[matchingCellIndex];\n choosing = a2p(address);\n }\n return { ...store, matchingCells, matchingCellIndex, choosing };\n }\n}\nexport const search = new SearchAction().bind();\n\nclass WriteAction<T extends { value: string; point?: PointType }> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n let { value, point } = payload;\n const { choosing, selectingZone, sheetReactive: sheetRef } = store;\n if (point == null) {\n point = choosing;\n }\n const sheet = sheetRef.current;\n if (!sheet) {\n return store;\n }\n const newSheet = sheet.write({\n point: point,\n value,\n operator: 'USER',\n undoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing: point,\n }),\n redoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing: point,\n }),\n });\n return {\n ...store,\n ...initSearchStatement(newSheet, store),\n sheetReactive: { current: newSheet },\n callback: ({ sheetReactive: sheetRef }) => {\n sheet.registry.transmit({\n copyingZone: resetZone,\n });\n },\n };\n }\n}\nexport const write = new WriteAction().bind();\n\nclass ClearAction<T extends null> extends CoreAction<T> {\n mutation = true;\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { choosing, selectingZone, sheetReactive: sheetRef } = store;\n const sheet = sheetRef.current;\n if (!sheet) {\n return store;\n }\n\n let selectingArea = zoneToArea(selectingZone);\n if (selectingArea.top === -1) {\n const { y, x } = choosing;\n selectingArea = { top: y, left: x, bottom: y, right: x };\n }\n const { top, left, bottom, right } = selectingArea;\n const diff: CellsByAddressType = {};\n let diffCount = 0;\n for (let y = top; y <= bottom; y++) {\n if (sheet.isRowFiltered(y)) {\n continue;\n }\n for (let x = left; x <= right; x++) {\n const cell = sheet.getCell({ y, x }, { resolution: 'SYSTEM' });\n const address = p2a({ y, x });\n if (prevention.hasOperation(cell?.prevention, prevention.Write)) {\n continue;\n }\n // Spilled cells are derived from the origin cell's formula and should\n // not be cleared independently — doing so would blank the FormulaBar\n // while the spill re-populates the value on next evaluation.\n if (sheet.getSystem({ y, x })?.spilledFrom != null) {\n continue;\n }\n if (cell?.value != null) {\n diff[address] = { value: undefined };\n diffCount++;\n }\n }\n }\n if (diffCount === 0) {\n return store;\n }\n sheet.update({\n diff,\n partial: true,\n operator: 'USER',\n undoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n }),\n redoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n }),\n });\n return {\n ...store,\n ...initSearchStatement(sheet, store),\n sheetReactive: { current: sheet },\n };\n }\n}\nexport const clear = new ClearAction().bind();\n\nclass UndoAction<T extends null> extends CoreAction<T> {\n mutation = true;\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { sheetReactive: sheetRef } = store;\n const sheet = sheetRef.current;\n if (!sheet) {\n return store;\n }\n // Route a large same-sheet paste/fill undo through the chunked async path (progress bar).\n const peeked = sheet.peekUndo();\n if (\n peeked != null &&\n peeked.operation === 'UPDATE' &&\n peeked.dstSheetId === sheet.id &&\n Object.keys(peeked.diffBefore ?? {}).length > ASYNC_MUTATION_THRESHOLD\n ) {\n return { ...store, pendingAsyncOp: makeUndoRedoOp(sheet, peeked, store, false) };\n }\n const { history, callback } = sheet.undo();\n if (history == null) {\n return store;\n }\n if (history.dstSheetId !== sheet.id) {\n const { dispatch, store: dstStore } = sheet.registry.contextsBySheetId[history.dstSheetId];\n dispatch(\n setStore({\n ...dstStore,\n ...history.undoReflection,\n sheetReactive: { current: dstStore.sheetReactive.current },\n }),\n );\n flashSheet(dstStore.flashRef.current);\n // For cross-sheet MOVE: the src (current) sheet's lastChangedAddresses was also updated.\n // Return updated sheetReactive so this sheet's Emitter fires onChange.\n if (history.srcSheetId === sheet.id) {\n return flashWithCallback(store, sheet, callback);\n }\n return store;\n }\n return {\n ...store,\n ...restrictPoints(store, sheet),\n ...history.undoReflection,\n ...initSearchStatement(sheet, store),\n sheetReactive: { current: sheet },\n callback: (s: StoreType) => {\n callback?.(s);\n flashSheet(store.flashRef.current);\n },\n };\n }\n}\nexport const undo = new UndoAction().bind();\n\nclass RedoAction<T extends null> extends CoreAction<T> {\n mutation = true;\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { sheetReactive: sheetRef } = store;\n const sheet = sheetRef.current;\n if (sheet == null) {\n return store;\n }\n // Route a large same-sheet paste/fill redo through the chunked async path (progress bar).\n const peeked = sheet.peekRedo();\n if (\n peeked != null &&\n peeked.operation === 'UPDATE' &&\n peeked.dstSheetId === sheet.id &&\n Object.keys(peeked.diffAfter ?? {}).length > ASYNC_MUTATION_THRESHOLD\n ) {\n return { ...store, pendingAsyncOp: makeUndoRedoOp(sheet, peeked, store, true) };\n }\n const { history, newSheet, callback } = sheet.redo();\n if (history == null) {\n return store;\n }\n if (history.dstSheetId !== sheet.id) {\n const { dispatch, store: dstStore } = sheet.registry.contextsBySheetId[history.dstSheetId];\n dispatch(\n setStore({\n ...dstStore,\n ...history.redoReflection,\n sheetReactive: { current: dstStore.sheetReactive.current },\n }),\n );\n flashSheet(dstStore.flashRef.current);\n // For cross-sheet MOVE: the src (current) sheet's lastChangedAddresses was also updated.\n // Return updated sheetReactive so this sheet's Emitter fires onChange.\n if (history.srcSheetId === sheet.id) {\n return flashWithCallback(store, sheet, callback);\n }\n return store;\n }\n return {\n ...store,\n ...restrictPoints(store, sheet),\n ...history.redoReflection,\n ...initSearchStatement(sheet, store),\n sheetReactive: { current: sheet },\n callback: (s: StoreType) => {\n callback?.(s);\n flashSheet(store.flashRef.current);\n },\n };\n }\n}\nexport const redo = new RedoAction().bind();\n\nclass ArrowAction<\n T extends {\n shiftKey: boolean;\n deltaY: number;\n deltaX: number;\n numRows: number;\n numCols: number;\n },\n> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { shiftKey, deltaY, deltaX, numRows, numCols } = payload;\n const { choosing, sheetReactive: sheetRef, tabularRef } = store;\n const sheet = sheetRef.current;\n if (sheet == null) {\n return store;\n }\n let { selectingZone } = store;\n const { y, x } = choosing;\n if (shiftKey) {\n const [dragEndY, dragEndX] = [\n selectingZone.endY === -1 ? y : selectingZone.endY,\n selectingZone.endX === -1 ? x : selectingZone.endX,\n ];\n const [nextY, nextX] = [dragEndY + deltaY, dragEndX + deltaX];\n if (nextY < 1 || numRows < nextY || nextX < 1 || numCols < nextX) {\n return store;\n }\n selectingZone =\n y === nextY && x === nextX\n ? { startY: -1, startX: -1, endY: -1, endX: -1 }\n : { startY: y, startX: x, endY: nextY, endX: nextX };\n return {\n ...store,\n selectingZone,\n };\n }\n const [nextY, nextX] = [y + deltaY, x + deltaX];\n if (nextY < 1 || numRows < nextY || nextX < 1 || numCols < nextX) {\n return store;\n }\n // Skip hidden rows\n let resolvedY = nextY;\n if (sheet.isRowFiltered(resolvedY)) {\n const dir = deltaY >= 0 ? 1 : -1;\n while (resolvedY >= 1 && resolvedY <= numRows && sheet.isRowFiltered(resolvedY)) {\n resolvedY += dir;\n }\n if (resolvedY < 1 || resolvedY > numRows) {\n return store; // no visible row in that direction\n }\n }\n let { y: editorTop, x: editorLeft, height, width } = store.editorRect;\n if (deltaY > 0) {\n for (let i = y; i < resolvedY; i++) {\n editorTop += sheet.getCell({ y: i, x: 0 }, { resolution: 'SYSTEM' })?.height || DEFAULT_HEIGHT;\n }\n } else if (deltaY < 0) {\n for (let i = y - 1; i >= resolvedY; i--) {\n editorTop -= sheet.getCell({ y: i, x: 0 }, { resolution: 'SYSTEM' })?.height || DEFAULT_HEIGHT;\n }\n }\n if (deltaX > 0) {\n for (let i = x; i < nextX; i++) {\n editorLeft += sheet.getCell({ y: 0, x: i }, { resolution: 'SYSTEM' })?.width || DEFAULT_WIDTH;\n }\n } else if (deltaX < 0) {\n for (let i = x - 1; i >= nextX; i--) {\n editorLeft -= sheet.getCell({ y: 0, x: i }, { resolution: 'SYSTEM' })?.width || DEFAULT_WIDTH;\n }\n }\n\n const cell = sheet.getCell({ y: resolvedY, x: nextX }, { resolution: 'SYSTEM' });\n height = cell?.height || DEFAULT_HEIGHT;\n width = cell?.width || DEFAULT_WIDTH;\n\n smartScroll(sheet, tabularRef.current, { y: resolvedY, x: nextX });\n return {\n ...store,\n selectingZone: { startY: -1, startX: -1, endY: -1, endX: -1 },\n choosing: { y: resolvedY, x: nextX } as PointType,\n editorRect: { y: editorTop, x: editorLeft, height, width },\n };\n }\n}\nexport const arrow = new ArrowAction().bind();\n\nclass WalkAction<\n T extends {\n deltaY: number;\n deltaX: number;\n numRows: number;\n numCols: number;\n },\n> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { numRows, numCols } = payload;\n let { deltaY, deltaX } = payload;\n const { choosing, selectingZone, sheetReactive: sheetRef, tabularRef: gridOuterRef } = store;\n const sheet = sheetRef.current;\n if (sheet == null) {\n return store;\n }\n\n let { y: editorTop, x: editorLeft, height, width } = store.editorRect;\n const { y, x } = choosing;\n const selectingArea = zoneToArea(selectingZone);\n const { top, left, bottom, right } = selectingArea;\n let [nextY, nextX] = [y + deltaY, x + deltaX];\n if (nextY < top && top !== -1) {\n deltaY = bottom - nextY;\n nextY = bottom;\n if (nextX > left) {\n nextX--;\n deltaX--;\n } else {\n deltaX = right - nextX;\n nextX = right;\n }\n }\n if (nextY > bottom && bottom !== -1) {\n deltaY = top - nextY;\n nextY = top;\n if (nextX < right) {\n nextX++;\n deltaX++;\n } else {\n deltaX = left - nextX;\n nextX = left;\n }\n }\n if (nextX < left && left !== -1) {\n deltaX = right - nextX;\n nextX = right;\n if (nextY > top) {\n nextY--;\n deltaY--;\n } else {\n deltaY = bottom - nextY;\n nextY = bottom;\n }\n }\n if (nextX > right && right !== -1) {\n deltaX = left - nextX;\n nextX = left;\n if (nextY < bottom) {\n nextY++;\n deltaY++;\n } else {\n deltaY = top - nextY;\n nextY = top;\n }\n }\n\n if (nextY < 1 || numRows < nextY || nextX < 1 || numCols < nextX) {\n return store;\n }\n\n // Skip hidden rows\n if (sheet.isRowFiltered(nextY)) {\n const dir = deltaY >= 0 ? 1 : -1;\n const lo = top !== -1 ? top : 1;\n const hi = bottom !== -1 ? bottom : numRows;\n while (nextY >= lo && nextY <= hi && sheet.isRowFiltered(nextY)) {\n nextY += dir;\n }\n if (nextY < lo || nextY > hi || sheet.isRowFiltered(nextY)) {\n return store; // no visible row in range\n }\n }\n\n if (deltaY > 0) {\n for (let i = y; i < nextY; i++) {\n editorTop += sheet.getCell({ y: i, x: 0 }, { resolution: 'SYSTEM' })?.height || DEFAULT_HEIGHT;\n }\n } else if (deltaY < 0) {\n for (let i = y - 1; i >= nextY; i--) {\n editorTop -= sheet.getCell({ y: i, x: 0 }, { resolution: 'SYSTEM' })?.height || DEFAULT_HEIGHT;\n }\n }\n if (deltaX > 0) {\n for (let i = x; i < nextX; i++) {\n editorLeft += sheet.getCell({ y: 0, x: i }, { resolution: 'SYSTEM' })?.width || DEFAULT_WIDTH;\n }\n } else if (deltaX < 0) {\n for (let i = x - 1; i >= nextX; i--) {\n editorLeft -= sheet.getCell({ y: 0, x: i }, { resolution: 'SYSTEM' })?.width || DEFAULT_WIDTH;\n }\n }\n const cell = sheet.getCell({ y: nextY, x: nextX }, { resolution: 'SYSTEM' });\n height = cell?.height || DEFAULT_HEIGHT;\n width = cell?.width || DEFAULT_WIDTH;\n smartScroll(sheet, gridOuterRef.current, { y: nextY, x: nextX });\n return {\n ...store,\n choosing: { y: nextY, x: nextX } as PointType,\n editorRect: { y: editorTop, x: editorLeft, height, width },\n };\n }\n}\nexport const walk = new WalkAction().bind();\n\nclass SetInputtingAction<T extends string> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n inputting: payload,\n };\n }\n}\n\nexport const setInputting = new SetInputtingAction().bind();\n\nclass InsertRowsAboveAction<T extends { numRows: number; y: number; operator?: OperatorType }> extends CoreAction<T> {\n mutation = true;\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { numRows, y, operator } = payload;\n const { sheetReactive: sheetRef, selectingZone, choosing } = store;\n const sheet = sheetRef.current;\n if (sheet == null) {\n return store;\n }\n sheet.insertRows({\n y,\n numRows,\n baseY: y,\n operator,\n undoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n }),\n redoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n }),\n });\n return {\n ...store,\n sheetReactive: { current: sheet },\n };\n }\n}\nexport const insertRowsAbove = new InsertRowsAboveAction().bind();\n\nclass InsertRowsBelowAction<T extends { numRows: number; y: number; operator?: OperatorType }> extends CoreAction<T> {\n mutation = true;\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { numRows, y, operator } = payload;\n const { sheetReactive: sheetRef, selectingZone, choosing, editorRef } = store;\n const sheet = sheetRef.current;\n if (sheet == null) {\n return store;\n }\n const nextSelectingZone = {\n ...selectingZone,\n startY: selectingZone.startY + numRows,\n endY: selectingZone.endY + numRows,\n };\n const nextChoosing = { ...choosing, y: choosing.y + numRows };\n\n sheet.insertRows({\n y: y + 1,\n numRows,\n baseY: y,\n operator,\n undoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n }),\n redoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone: nextSelectingZone,\n choosing: nextChoosing,\n }),\n });\n return {\n ...store,\n selectingZone: nextSelectingZone,\n choosing: nextChoosing,\n sheetReactive: { current: sheet },\n };\n }\n}\nexport const insertRowsBelow = new InsertRowsBelowAction().bind();\n\nclass InsertColsLeftAction<T extends { numCols: number; x: number; operator?: OperatorType }> extends CoreAction<T> {\n mutation = true;\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { numCols, x, operator } = payload;\n const { sheetReactive: sheetRef, selectingZone, choosing, editorRef } = store;\n const sheet = sheetRef.current;\n if (sheet == null) {\n return store;\n }\n\n sheet.insertCols({\n x,\n numCols,\n baseX: x,\n operator,\n undoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n }),\n redoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n }),\n });\n return {\n ...store,\n sheetReactive: { current: sheet },\n };\n }\n}\nexport const insertColsLeft = new InsertColsLeftAction().bind();\n\nclass InsertColsRightAction<T extends { numCols: number; x: number; operator?: OperatorType }> extends CoreAction<T> {\n mutation = true;\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { numCols, x, operator } = payload;\n const { sheetReactive: sheetRef, selectingZone, choosing } = store;\n const sheet = sheetRef.current;\n if (sheet == null) {\n return store;\n }\n const nextSelectingZone = {\n ...selectingZone,\n startX: selectingZone.startX + numCols,\n endX: selectingZone.endX + numCols,\n };\n const nextChoosing = { ...choosing, x: choosing.x + numCols };\n\n selectingZone.startX += numCols;\n selectingZone.endX += numCols;\n\n sheet.insertCols({\n x: x + 1,\n numCols,\n baseX: x,\n operator,\n undoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n }),\n redoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone: nextSelectingZone,\n choosing: nextChoosing,\n }),\n });\n return {\n ...store,\n selectingZone: nextSelectingZone,\n choosing: nextChoosing,\n sheetReactive: { current: sheet },\n };\n }\n}\nexport const insertColsRight = new InsertColsRightAction().bind();\n\nclass RemoveRowsAction<T extends { numRows: number; y: number; operator?: OperatorType }> extends CoreAction<T> {\n mutation = true;\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { numRows, y, operator } = payload;\n const { sheetReactive: sheetRef, selectingZone, choosing, editorRef } = store;\n const sheet = sheetRef.current;\n if (sheet == null) {\n return store;\n }\n\n sheet.removeRows({\n y,\n numRows,\n operator,\n undoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n sheetHeight: store.sheetHeight,\n }),\n redoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n }),\n });\n\n // Move the selection to the adjacent row that shifted into the deleted position\n // (clamped to the last row), skipping filtered rows so it stays visible.\n const numRows2 = sheet.numRows;\n const numCols2 = sheet.numCols;\n let adjY = Math.max(1, Math.min(y, numRows2));\n if (sheet.isRowFiltered(adjY)) {\n let found = -1;\n for (let yy = adjY; yy <= numRows2; yy++) {\n if (!sheet.isRowFiltered(yy)) {\n found = yy;\n break;\n }\n }\n if (found === -1) {\n for (let yy = adjY; yy >= 1; yy--) {\n if (!sheet.isRowFiltered(yy)) {\n found = yy;\n break;\n }\n }\n }\n if (found !== -1) {\n adjY = found;\n }\n }\n\n return {\n ...store,\n sheetReactive: { current: sheet },\n selectingZone: { startY: adjY, startX: 1, endY: adjY, endX: numCols2 },\n choosing: { y: adjY, x: 1 },\n leftHeaderSelecting: true,\n topHeaderSelecting: false,\n };\n }\n}\nexport const removeRows = new RemoveRowsAction().bind();\n\nclass RemoveColsAction<T extends { numCols: number; x: number; operator?: OperatorType }> extends CoreAction<T> {\n mutation = true;\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { numCols, x, operator } = payload;\n const { sheetReactive: sheetRef, selectingZone, choosing, editorRef } = store;\n const sheet = sheetRef.current;\n if (sheet == null) {\n return store;\n }\n\n sheet.removeCols({\n x,\n numCols,\n operator,\n undoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n sheetWidth: store.sheetWidth,\n }),\n redoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n }),\n });\n\n // Move the selection to the adjacent column that shifted into the deleted position\n // (clamped to the last column). choosing.y lands on the first visible row.\n const numCols2 = sheet.numCols;\n const numRows2 = sheet.numRows;\n const adjX = Math.max(1, Math.min(x, numCols2));\n let choosingY = 1;\n for (let yy = 1; yy <= numRows2; yy++) {\n if (!sheet.isRowFiltered(yy)) {\n choosingY = yy;\n break;\n }\n }\n\n return {\n ...store,\n sheetReactive: { current: sheet },\n selectingZone: { startY: 1, startX: adjX, endY: numRows2, endX: adjX },\n choosing: { y: choosingY, x: adjX },\n leftHeaderSelecting: false,\n topHeaderSelecting: true,\n };\n }\n}\nexport const removeCols = new RemoveColsAction().bind();\n\nclass SortRowsAction<T extends { x: number; direction: 'asc' | 'desc' }> extends CoreAction<T> {\n mutation = true;\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { x, direction } = payload;\n const { sheetReactive: sheetRef, selectingZone, choosing } = store;\n const sheet = sheetRef.current;\n if (sheet == null) {\n return store;\n }\n sheet.sortRows({ x, direction });\n const reflection = compactReflection({ sheetId: sheet.id, selectingZone, choosing });\n if (sheet.registry.lastHistory) {\n sheet.registry.lastHistory.undoReflection = reflection;\n sheet.registry.lastHistory.redoReflection = reflection;\n }\n return {\n ...store,\n sheetReactive: { current: sheet },\n };\n }\n}\nexport const sortRows = new SortRowsAction().bind();\n\nclass FilterRowsAction<T extends { x?: number; filter?: FilterConfig }> extends CoreAction<T> {\n mutation = true;\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { x, filter } = payload;\n const { sheetReactive: sheetRef, selectingZone, choosing } = store;\n const sheet = sheetRef.current;\n if (sheet == null) {\n return store;\n }\n sheet.filterRows({ x, filter });\n const reflection = compactReflection({ sheetId: sheet.id, selectingZone, choosing });\n if (sheet.registry.lastHistory) {\n sheet.registry.lastHistory.undoReflection = reflection;\n sheet.registry.lastHistory.redoReflection = reflection;\n }\n let newChoosing = choosing;\n if (sheet.isRowFiltered(choosing.y)) {\n for (let y = 1; y <= sheet.numRows; y++) {\n if (!sheet.isRowFiltered(y)) {\n newChoosing = { y, x: choosing.x };\n break;\n }\n }\n }\n return {\n ...store,\n choosing: newChoosing,\n selectingZone: newChoosing !== choosing ? resetZone : selectingZone,\n sheetReactive: { current: sheet },\n callback: ({ sheetReactive: sheetRef }) => {\n const t = sheetRef.current;\n if (t) {\n t.registry.transmit({\n cutting: false,\n copyingZone: resetZone,\n });\n }\n },\n };\n }\n}\nexport const filterRows = new FilterRowsAction().bind();\n\nclass SetColumnMenuAction<\n T extends { x: number; position: { y: number; x: number }; focusLabel?: boolean } | null,\n> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n columnMenuState: payload,\n };\n }\n}\nexport const setColumnMenu = new SetColumnMenuAction().bind();\n\nclass SetRowMenuAction<T extends { y: number; position: { y: number; x: number } } | null> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n rowMenuState: payload,\n };\n }\n}\nexport const setRowMenu = new SetRowMenuAction().bind();\n\nclass SetEditorHoveringAction<T extends boolean> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n editorHovering: payload,\n };\n }\n}\nexport const setEditorHovering = new SetEditorHoveringAction().bind();\n\nclass setStoreAction<T extends Partial<StoreType>> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n ...payload,\n };\n }\n}\nexport const setStore = new setStoreAction().bind();\n\n// The data-block edge reached by scanning from (y, x) in direction (dy, dx) — the\n// Excel Ctrl+(Shift+)arrow semantics, generalized to all four directions: inside a\n// run of filled cells → the run's last filled cell; at a boundary/gap → the next\n// filled cell (skipping blanks), else the grid edge.\nconst dataEdge = (sheet: Sheet, y: number, x: number, dy: number, dx: number): PointType => {\n const numRows = sheet.numRows;\n const numCols = sheet.numCols;\n const inBounds = (yy: number, xx: number) => yy >= 1 && yy <= numRows && xx >= 1 && xx <= numCols;\n const filled = (yy: number, xx: number): boolean => {\n // peekRawValue avoids materializing each scanned cell — a full-column scan\n // through getCell populated (and stalled on) the whole column.\n const v = sheet.peekRawValue({ y: yy, x: xx });\n return v != null && v !== '';\n };\n if (!inBounds(y + dy, x + dx)) {\n return { y, x }; // already at the grid edge in this direction\n }\n if (filled(y, x) && filled(y + dy, x + dx)) {\n // Inside a run: advance to its last filled cell.\n let py = y;\n let px = x;\n while (inBounds(py + dy, px + dx) && filled(py + dy, px + dx)) {\n py += dy;\n px += dx;\n }\n return { y: py, x: px };\n }\n // At a boundary/gap: skip blanks to the next filled cell, else stop at the edge.\n let py = y + dy;\n let px = x + dx;\n while (!filled(py, px) && inBounds(py + dy, px + dx)) {\n py += dy;\n px += dx;\n }\n return { y: py, x: px };\n};\n\n// Ctrl+Shift+arrow: extend the selection from the active cell to the data-block\n// edge in the pressed direction — the drag-free way to select a large range.\nclass SelectToDataEdgeAction<T extends { deltaY: number; deltaX: number }> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { deltaY, deltaX } = payload;\n const { choosing, selectingZone, sheetReactive: sheetRef, tabularRef } = store;\n const sheet = sheetRef.current;\n if (sheet == null) {\n return store;\n }\n const curEndY = selectingZone.endY === -1 ? choosing.y : selectingZone.endY;\n const curEndX = selectingZone.endX === -1 ? choosing.x : selectingZone.endX;\n const { y: endY, x: endX } = dataEdge(sheet, curEndY, curEndX, deltaY, deltaX);\n smartScroll(sheet, tabularRef.current, { y: endY, x: endX });\n return {\n ...store,\n selectingZone: { startY: choosing.y, startX: choosing.x, endY, endX },\n };\n }\n}\nexport const selectToDataEdge = new SelectToDataEdgeAction().bind();\n\n// Ctrl+D: fill the selection's top row down through the rest of the selection.\n// Reuses Autofill (src = top row, dragged down to the selection bottom), so\n// sequences/formulas behave exactly like a manual drag-fill.\nconst makeFillOp = (autofill: Autofill, selectingZone: ZoneType, label: string): PendingAsyncOp => ({\n run: (onProgress) =>\n autofill.appliedAsync({\n onProgress: (p) => onProgress(p.total > 0 ? p.done / p.total : 1),\n yieldControl: rafYield,\n }),\n selectingZone,\n label,\n});\n\nclass FillDownAction<T extends null> extends CoreAction<T> {\n asyncMutation = true;\n reduce(store: StoreType): StoreWithCallback {\n const { selectingZone, sheetReactive: sheetRef } = store;\n const sheet = sheetRef.current;\n if (sheet == null || selectingZone.endY === -1) {\n return store;\n }\n const area = zoneToArea(selectingZone);\n if (area.top >= area.bottom) {\n return store; // single row — nothing below to fill\n }\n try {\n const synthetic: StoreType = {\n ...store,\n choosing: { y: area.top, x: area.left },\n selectingZone: { startY: area.top, startX: area.left, endY: area.top, endX: area.right },\n };\n const autofill = new Autofill(synthetic, { y: area.bottom, x: area.right });\n return { ...store, pendingAsyncOp: makeFillOp(autofill, selectingZone, 'Filling') };\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('[gridsheet] fill down failed:', e);\n return store;\n }\n }\n}\nexport const fillDown = new FillDownAction().bind();\n\n// Ctrl+R: fill the selection's left column right through the rest of the selection.\nclass FillRightAction<T extends null> extends CoreAction<T> {\n asyncMutation = true;\n reduce(store: StoreType): StoreWithCallback {\n const { selectingZone, sheetReactive: sheetRef } = store;\n const sheet = sheetRef.current;\n if (sheet == null || selectingZone.endX === -1) {\n return store;\n }\n const area = zoneToArea(selectingZone);\n if (area.left >= area.right) {\n return store; // single column — nothing to the right to fill\n }\n try {\n const synthetic: StoreType = {\n ...store,\n choosing: { y: area.top, x: area.left },\n selectingZone: { startY: area.top, startX: area.left, endY: area.bottom, endX: area.left },\n };\n const autofill = new Autofill(synthetic, { y: area.bottom, x: area.right });\n return { ...store, pendingAsyncOp: makeFillOp(autofill, selectingZone, 'Filling') };\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('[gridsheet] fill right failed:', e);\n return store;\n }\n }\n}\nexport const fillRight = new FillRightAction().bind();\n\n// Finalize the async op: adopt the mutated sheet, restore selection, clear the pending state.\nclass CommitAsyncOpAction<\n T extends { sheet: Sheet; selectingZone: ZoneType; finalize?: Partial<StoreType> },\n> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const next: StoreType = {\n ...store,\n sheetReactive: { current: payload.sheet },\n selectingZone: payload.selectingZone,\n pendingAsyncOp: null,\n ...(payload.finalize ?? {}),\n };\n return {\n ...next,\n ...initSearchStatement(payload.sheet, next),\n ...restrictPoints(next, payload.sheet),\n // The progress overlay (pointer-events blocking) ran over the grid while the chunked\n // fill/paste/undo committed; return focus to the editor so the keyboard works right after.\n callback: (committed: StoreType) => requestAnimationFrame(() => focus(committed.editorRef.current)),\n };\n }\n}\nexport const commitAsyncOp = new CommitAsyncOpAction().bind();\n\nexport const userActions = {\n blur,\n copy,\n cut,\n paste,\n escape,\n choose,\n select,\n selectRows,\n selectCols,\n drag,\n search,\n write,\n clear,\n undo,\n redo,\n arrow,\n walk,\n insertRowsAbove,\n insertRowsBelow,\n insertColsLeft,\n insertColsRight,\n removeRows,\n removeCols,\n sortRows,\n filterRows,\n selectToDataEdge,\n fillDown,\n fillRight,\n};\n","import { useEffect, useState, useRef } from 'react';\nimport { createBook, type BookType, type RegistryProps, type TransmitProps } from '@gridsheet/web';\nimport { updateSheet } from '../store/actions';\n\n// Return the document object with SSR.\nexport const useBrowser = () => {\n const [ok, setOk] = useState(false);\n useEffect(() => {\n setOk(true);\n }, []);\n if (ok && typeof window !== 'undefined') {\n return { window, document };\n }\n return { window: null, document: null };\n};\n\nexport const useDebounce = <T>(value: T, delay = 100) => {\n const [debouncedValue, setDebouncedValue] = useState(value);\n const timerRef = useRef<number>();\n\n useEffect(() => {\n timerRef.current = window.setTimeout(() => setDebouncedValue(value), delay);\n return () => {\n window.clearTimeout(timerRef.current);\n };\n }, [value, delay]);\n return debouncedValue;\n};\n\nexport const useDebounceCallback = (callback: (...args: any[]) => void, delay = 100) => {\n const debouncedCallback = useRef(callback);\n const timerRef = useRef<number>();\n\n useEffect(() => {\n debouncedCallback.current = callback;\n }, [callback]);\n\n return (...args: any[]) => {\n window.clearTimeout(timerRef.current);\n timerRef.current = window.setTimeout(() => {\n debouncedCallback.current(...args);\n }, delay);\n };\n};\n\nexport const useBook = (props: RegistryProps = {}) => {\n const [book, setBook] = useState<BookType>(() => createBook(props));\n const { registry } = book;\n registry.updateSheet = updateSheet;\n registry.transmit = (patch?: TransmitProps) => {\n Object.assign(registry, patch);\n if (!registry.ready) {\n return;\n }\n requestAnimationFrame(() => setBook({ registry }));\n };\n useEffect(() => {\n Object.assign(registry, props);\n }, [props]);\n return book;\n};\n"],"names":["fe","pe","G","me","S","be","ge","ee","ne","oe","ae","se","ce","le","R","ue","te","_","w","k","B","Z","q","U","J","W","Y","de","Q","re","ve","ie","V","I","$","X","N","H","O","L","M","P","v","j","F","A","z","T","x2c","y2r","a2p","_a","Autofill","areaToZone","focus","sheetRef","zoneToArea","areaDiff","nextSelectingZone","restrictZone","newSheet","matrixShape","superposeArea","p2a","prevention","nextY","nextX","DEFAULT_HEIGHT","DEFAULT_WIDTH","smartScroll","hi","py","px","createBook"],"mappings":"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"}
|