@gridsheet/react-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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks-BhxFU0X7.mjs","sources":["../../engine/dist/index.js","../../web/dist/index.js","../src/store/helpers.ts","../src/store/actions.ts","../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 var i, n;\n if ((typeof t == \"string\" || t instanceof String) && t.charAt(0) === \"=\") {\n const o = new te(t.substring(1));\n return o.tokenize(e), o.identify({ ...s, sheet: this }), o.dependencyIds.forEach((a) => this.addDependency(a, s.dependency)), s.dependency != null && (this._formulaHasAsync(o) ? this.registry.asyncFormulaCells.add(s.dependency) : this.registry.asyncFormulaCells.delete(s.dependency), (n = (i = this.registry).onFormula) == null || n.call(i)), \"=\" + o.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 (; Y.is(s); )\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\" && Y.is(l) && (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 }) => Y.is(r) ? 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 (Y.is(r)) {\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 (Y.is(r)) {\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 (Y.is(r)) {\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 (Y.is(r)) {\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 (Y.is(r)) {\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 : Y.is(t) ? 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 onFormula: d\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 = (p) => {\n }, this.updateSheet = (p) => ({ type: 0, value: p }), t != null && (this.historyLimit = t), this.functions = {\n ...gs,\n ...e\n };\n for (const p in this.functions) {\n const m = this.functions[p];\n m.__name = p;\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, this.onFormula = d;\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":["Cs","rt","he","jr","Gr","$e","Le","Zr","qr","Kr","Jr","qe","fe","Ts","Ms","Fs","vt","kt","$t","pe","Ft","Ot","Os","r","t","e","i","Ds","G","Ht","bt","Ns","M","T","Ke","Qr","tn","en","Je","sn","He","vs","ks","Pe","rn","nn","on","$s","an","me","Zt","cn","ln","hn","Jt","un","Ls","a","f","Ps","l","h","u","c","d","Hs","dn","Ys","Bs","s","n","o","fn","pn","mn","p","m","y","g","yn","gn","wn","at","R$1","R","Us","Ye","S$1","S","_t","Yt","Dt","W$1","W","Qt","ht","Vs","zs","Qe","Rt","ts","ye","Kt","Ws","be","Xs","js","es","Gs","I","ge","Zs","qs","Be","Ks","Js","Qs","ti","te$1","ei","ss","xn","bn","si","Bt","Lt","ee","st","is","ii","Sn","_n","Rn","En","An","In","Cn","rs","ri","Tn","ne","oe","Se","_e","Re","Ee","Ut","Vt","St","ae","se","ce","Ae","Ie","Ce","le","ni","ns","xt","os","as","cs","ls","hs","us","oi","ai","F","ci","Mn","z","Is","As","ds","li","hi","ui","di","fs","fi","Te","nt","Nt","pi","tt","Et","At","It","mi","yi","gi","wi","xi","bi","Si","_i","Ri","Ei","Ai","Ue","Ii","wt","qt","ue","Y$1","Y","Ne","te","b","_","x","E","we","w","D","k","N","B","Z","q","C","v","X","it","U","K","pt","mt","Ct","Tt","P","et","yt","$","ot","gt","xs","bs","Ss","J","Xt","Mt","H","_s","Rs","jt","Es","ke","Gt","ut","Ve","xe","Ci","ps","Pt","Ti","Mi","Fi","Oi","de","Me","Q","O","Fe","ms","ys","Oe","Di","De","zt","Wt","Ni","vi","ki","dt","Fn","On","$i","ft","Li","ze","We","re","A","ve","Xe","Pi","Hi","Yi","Bi","Ui","Vi","zi","Wi","Xi","ji","Gi","Zi","qi","Ki","Ji","Qi","tr","er","sr","ir","rr","nr","or","ar","cr","lr","hr","ur","dr","fr","pr","mr","yr","gr","wr","xr","br","Sr","_r","Rr","Er","je","Ar","Ir","Cr","Tr","Mr","Fr","Or","Dr","Nr","vr","kr","$r","Lr","Pr","gs","Ge","Dn","Hr","vn","Yr","kn","$n","Ln","Pn","j","Ze","Hn","Br","ct","lt","ws","ie$1","ie","V","L","compactReflection","reflection","result","restrictPoints","store","sheet","choosing","selectingZone","y1","x1","y2","x2","numRows","numCols","FLASH_CLASS","FLASH_DURATION_MS","flashSheet","el","flashWithCallback","callback","initSearchStatement","searchQuery","searchCaseSensitive","searchRegex","searchRange","matchingCells","matcher","flags","regex","startY","endY","startX","endX","x2c","y2r","matchingCellIndex","address","a2p","isXSheetFocused","sheetId","sheetRef","resetZone","rafYield","ch","waiting","lastPaint","resolve","now","ASYNC_MUTATION_THRESHOLD","makeUndoRedoOp","history","isRedo","onProgress","opts","actions","reducer","action","act","registry","_a","_b","cached","newStore","_CoreAction","payload","CoreAction","isMutationAction","type","isAsyncMutationAction","SetSearchQueryAction","setSearchQuery","SetSearchCaseSensitiveAction","setSearchCaseSensitive","SetSearchRegexAction","setSearchRegex","SetSearchRangeAction","setSearchRange","SetEditingAddressAction","setEditingAddress","SetAutofillDraggingToAction","setAutofillDraggingTo","SubmitAutofillAction","autofill","Autofill","areaToZone","next","focus","submitAutofill","SetContextMenuPositionAction","setContextMenuPosition","SetResizingPositionYAction","setResizingPositionY","SetResizingPositionXAction","setResizingPositionX","SetEnteringAction","setEntering","UpdateSheetAction","updateSheet","SetEditorRectAction","setEditorRect","SetDragging","setDragging","BlurAction","blur","CopyAction","copy","CutAction","cut","PasteAction","dstSheetRef","dstSheet","copyingSheetId","copyingZone","cutting","srcSheet","selectingArea","zoneToArea","copyingArea","matrix","onlyValue","src","dy","dx","areaDiff","dst","nextSelectingZone","restrictZone","newSheet","height","width","matrixShape","superposed","superposeArea","copyProps","paste","EscapeAction","escape","ChooseAction","choose","SelectAction","select","SelectRowsAction","range","start","end","choosingY","selectRows","SelectColsAction","selectCols","DragAction","drag","SearchAction","search","WriteAction","value","point","write","ClearAction","top","left","bottom","right","diff","diffCount","cell","p2a","prevention","clear","UndoAction","peeked","dispatch","dstStore","setStore","undo","RedoAction","redo","ArrowAction","shiftKey","deltaY","deltaX","tabularRef","dragEndY","dragEndX","nextY","nextX","resolvedY","dir","editorTop","editorLeft","DEFAULT_HEIGHT","_c","DEFAULT_WIDTH","_d","smartScroll","arrow","WalkAction","gridOuterRef","lo","walk","SetInputtingAction","setInputting","InsertRowsAboveAction","operator","insertRowsAbove","InsertRowsBelowAction","editorRef","nextChoosing","insertRowsBelow","InsertColsLeftAction","insertColsLeft","InsertColsRightAction","insertColsRight","RemoveRowsAction","numRows2","numCols2","adjY","found","yy","removeRows","RemoveColsAction","adjX","removeCols","SortRowsAction","direction","sortRows","FilterRowsAction","filter","newChoosing","filterRows","SetColumnMenuAction","setColumnMenu","SetRowMenuAction","setRowMenu","SetEditorHoveringAction","setEditorHovering","setStoreAction","dataEdge","inBounds","xx","filled","py","px","SelectToDataEdgeAction","curEndY","curEndX","selectToDataEdge","makeFillOp","label","FillDownAction","area","synthetic","fillDown","FillRightAction","fillRight","CommitAsyncOpAction","committed","commitAsyncOp","userActions","useBrowser","ok","setOk","useState","useEffect","useDebounceCallback","delay","debouncedCallback","useRef","timerRef","args","useBook","props","book","setBook","createBook","patch"],"mappings":"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"}