@gridsheet/preact-core 3.2.0 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/FunctionGuide.d.ts +1 -1
- package/dist/components/useAutocomplete.d.ts +1 -1
- package/dist/hooks-DroLjp9H.mjs +6601 -0
- package/dist/hooks-DroLjp9H.mjs.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +607 -465
- package/dist/index.js.map +1 -1
- package/dist/lib/clipboard.d.ts +1 -1
- package/dist/lib/hooks.d.ts +1 -1
- package/dist/lib/menu.d.ts +1 -1
- package/dist/policy/checkbox.d.ts +1 -1
- package/dist/spellbook.d.ts +3 -3
- package/dist/spellbook.js +2 -3
- package/dist/spellbook.js.map +1 -1
- package/dist/store/actions.d.ts +3 -1
- package/dist/store/helpers.d.ts +1 -1
- package/dist/types.d.ts +3 -2
- package/package.json +4 -3
- package/dist/hooks-ykrgAwg5.mjs +0 -1533
- package/dist/hooks-ykrgAwg5.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks-DroLjp9H.mjs","sources":["../../engine/dist/index.js","../../web/dist/index.js","../../react-core/src/store/helpers.ts","../../react-core/src/store/actions.ts","../../react-core/src/lib/hooks.ts"],"sourcesContent":["import H from \"dayjs\";\nimport ds from \"dayjs/plugin/utc.js\";\nimport fs from \"dayjs/plugin/timezone.js\";\nconst ps = 20, J = 24, jt = 90, Dr = 500, vr = 1e3, Re = 24, _e = 50, kr = 5, Pr = 5, $r = 5, Lr = 10, $e = 1e3, Zt = 86400, ms = \"YYYY-MM-DDTHH:mm:ss.SSSZ\", gs = {\n startY: -1,\n startX: -1,\n endY: -1,\n endX: -1\n}, ys = new Date(1900, 0, 1), Ft = \"default\", Dt = \"defaultCol\", vt = \"defaultRow\", qt = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\", gt = /* @__PURE__ */ new Map(), yt = /* @__PURE__ */ new Map(), ws = (r, t = $e) => {\n const e = gt.get(--r);\n if (e != null)\n return e;\n if (r === 0)\n return \"\";\n let s = r, i = \"\";\n do\n i = qt[--s % 26] + i, s = Math.floor(s / 26);\n while (s > 0);\n gt.set(r, i);\n const n = gt.keys();\n for (let o = n.next(); gt.size > t; o = n.next())\n gt.delete(o.value);\n return i;\n}, xs = (r, t = $e) => {\n const e = yt.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 = qt.indexOf(a) + 1;\n i += qt.length ** o * l;\n }\n yt.set(r, i);\n const n = yt.keys();\n for (let o = n.next(); yt.size > t; o = n.next())\n yt.delete(o.value);\n return i;\n}, W = (r) => {\n if (r === 0)\n return \"\";\n const t = ws(r + 1);\n return r < 0 ? `$${t}` : t;\n}, _t = (r, t = !1) => {\n const e = xs(r.toUpperCase());\n return t ? -e : e;\n}, Et = (r) => r === 0 ? \"\" : r < 0 ? `$${r}` : String(r), bs = (r, t = !1) => (typeof r == \"string\" && (r = parseInt(r, 10)), t ? -r : r), D = ({ 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 ? \"$\" : \"\"}${W(t)}`, n = r === void 0 ? \"\" : r === 0 ? \"0\" : `${s ? \"$\" : \"\"}${Et(r)}`;\n return `${i}${n}`;\n}, N = (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: bs(n) || 0, x: _t(s) || 0, absX: o, absY: a };\n}, Le = (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}, Hr = (r) => `0${r}`, Yr = (r) => typeof r == \"number\" ? `${W(r)}0` : `${r.toUpperCase()}0`, Br = (r) => r.replace(/\\$/g, \"\"), He = (r, t = !1, e = !1) => `${t ? \"$\" : \"\"}#${r}${e ? \"$\" : \"\"}`, Ur = (r, t) => {\n const { rows: e, cols: s } = Ae(r), { rows: i, cols: n } = Ae(t);\n return {\n rows: e > i ? e : i,\n cols: s > n ? s : n\n };\n}, Ss = (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}, Rs = (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}, Ee = (r) => ({\n startY: r.top,\n startX: r.left,\n endY: r.bottom,\n endX: r.right\n}), zr = (r) => {\n const { top: t, left: e, bottom: s, right: i } = r;\n if (t === s && e === i)\n return D({ y: t, x: e });\n const n = D({ y: t, x: e }), o = D({ y: s, x: i });\n return `${n}:${o}`;\n}, Vr = (r, t) => r.start === -1 || r.end === -1 ? !1 : r.start <= t && t <= r.end || r.end <= t && t <= r.start, Wr = (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}, Xr = (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}, Ae = (r) => ({\n rows: Math.abs(r.top - r.bottom),\n cols: Math.abs(r.left - r.right)\n}), Kt = (r) => ({\n rows: 1 + Math.abs(r.top - r.bottom),\n cols: 1 + Math.abs(r.left - r.right)\n}), Nt = ({ 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}, jr = (r, t, e = 1) => Array.from({ length: (t - r - 1) / e + 1 }, (s, i) => r + i * e), Gr = (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}, Zr = (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}, se = (r, t, e) => [...Array(r)].map(() => Array(t).fill(e)), qr = ({\n cells: r = {},\n ensured: t = {},\n matrix: e = [],\n flattenAs: s = \"value\",\n origin: i = \"A1\"\n}) => Es({\n cells: r,\n ensured: t,\n matrices: { [i]: e },\n flattenAs: s\n}), Es = ({\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 })) : As({ cells: r, flattenAs: s, matrices: e });\n const { numRows: l, numCols: u } = Object.assign({ numRows: 1, numCols: 1 }, t), h = D({ y: l, x: u });\n return r[h] == null && (r[h] = {}), a && (i.push(h), Object.defineProperty(r, \"__userKeys\", { value: i, configurable: !0 })), r;\n}, As = ({\n cells: r = {},\n matrices: t = {},\n flattenAs: e\n}) => (Object.keys(t).forEach((s) => {\n const i = t[s], { y: n, x: o } = N(s), a = [];\n for (let l = 0; l < i.length; l++) {\n const u = i[l], h = String(n + l);\n for (let c = 0; c < u.length; c++) {\n a[c] == null && (a[c] = W(o + c));\n const f = a[c] + h;\n if (e) {\n const d = r[f];\n d ? e in d || (d[e] = u[c]) : r[f] = { [e]: u[c] };\n } else\n r[f] = u[c];\n }\n }\n}), r), Cs = (r = {}, t) => {\n let [e, s] = [0, 0];\n return (t ?? Object.keys(r)).forEach((i) => {\n if (i === Ft || i === Dt || i === vt)\n return;\n const { y: n, x: o } = N(i);\n e < n && (e = n), s < o && (s = o);\n }), { numRows: e, numCols: s };\n}, Kr = (r, t) => {\n const e = [];\n for (let s = r; s <= t; s++)\n e.push(s);\n return e;\n}, Is = (r, t) => (r.left === -1 && (r = {\n left: t.x,\n top: t.y,\n right: t.x,\n bottom: t.y\n}), r), Ts = (r) => {\n if (r.indexOf(\":\") === -1)\n return [r];\n const t = [];\n if (/^\\d+\\:\\d+$/.test(r)) {\n const [h, c] = r.split(\":\").map(Number);\n for (let f = h; 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 ? _t(i) : 1, u = o ? _t(o) : 1;\n for (let h = l; h <= u; h++) {\n const c = i || o ? W(h) : \"\";\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}, Jr = (r) => {\n const t = _s(r);\n return t.rows + t.cols === 0 ? { startY: -1, startX: -1, endY: -1, endX: -1 } : { ...r };\n}, Qr = (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}, tn = (r) => {\n if (r.length === 0)\n return [];\n const t = r.map((o) => {\n const { y: a, x: l } = N(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, u = o.x, h = 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 > h && (h = d), p < u && (u = p), p > c && (c = p);\n for (const [m, g] of [\n [0, 1],\n [0, -1],\n [1, 0],\n [-1, 0]\n ]) {\n const y = e(d + m, p + g);\n s.has(y) && !i.has(y) && (i.add(y), f.push({ y: d + m, x: p + g }));\n }\n }\n n.push({ top: l, left: u, bottom: h, right: c });\n }\n return n;\n}, en = (r, t = !0) => {\n const e = /* @__PURE__ */ new Set(), s = [];\n for (const i of r) {\n const { x: n } = N(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}, sn = (r, t = !0) => {\n const e = /* @__PURE__ */ new Set(), s = [];\n for (const i of r) {\n const { y: n } = N(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}, rn = (r) => r.startY === -1 || r.startX === -1 || r.endY === -1 || r.endX === -1, et = 864e5;\nclass b {\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 * et);\n }\n sub(t) {\n return new Date(t.getTime() - this.days * et);\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, u = 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(u).padStart(2, \"0\")), c = c.replace(\"H\", i + String(u)), 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 * et;\n }\n toDate() {\n return new Date(ys.getTime() + this.days * et);\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 b(n / et);\n }\n static fromDate(t) {\n const e = t.getHours() * 36e5 + t.getMinutes() * 6e4 + t.getSeconds() * 1e3 + t.getMilliseconds();\n return new b(e / et);\n }\n static fromDates(t, e) {\n return new b((t.getTime() - e.getTime()) / et);\n }\n static fromObject(t) {\n return new b(t.days, t.format);\n }\n static is(t) {\n return t instanceof b || (t == null ? void 0 : t.__gsType) === \"Time\";\n }\n static ensure(t) {\n return t instanceof b ? t : (t == null ? void 0 : t.__gsType) === \"Time\" ? b.fromObject(t) : b.create();\n }\n static parse(t, e, s = !1) {\n if (e != null) {\n const i = Ms(e), n = t.match(i);\n if (n != null && n.groups)\n return b.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 b.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, u = n === \"-\" ? -1 : 1;\n return b.create(u * Number(o), u * Number(a), u * 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, u] = i, h = n === \"-\" ? -1 : 1;\n return b.create(h * Number(o), h * Number(a), h * Number(l), h * Number(u));\n }\n }\n }\n }\n}\nconst Ce = {\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 Ms(r) {\n const t = Object.keys(Ce).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 = Ce[n]) == null ? void 0 : o.pattern) ?? n;\n });\n return new RegExp(`^${i}$`);\n}\nclass x {\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 x || (t == null ? void 0 : t.__gsType) === \"FormulaError\";\n }\n toString() {\n return this.code;\n }\n}\nclass ut {\n constructor(t) {\n this.code = t, this.__gsType = \"Sentinel\";\n }\n is(t) {\n return ut.is(t, this.code);\n }\n static is(t, e) {\n return t instanceof ut || (t == null ? void 0 : t.__gsType) === \"Sentinel\" ? e == null || t.code === e : !1;\n }\n}\nconst At = new ut(\"solving\"), wt = new ut(\"none\");\nclass k {\n constructor(t) {\n this.__gsType = \"Pending\", this.promise = t, this.timestamp = Date.now();\n }\n static is(t) {\n return t instanceof k || (t == null ? void 0 : t.__gsType) === \"Pending\";\n }\n toString() {\n return `<Pending #${this.timestamp}>`;\n }\n}\nclass B {\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 B || (t == null ? void 0 : t.__gsType) === \"Spilling\";\n }\n}\nconst Pt = (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 rt {\n constructor(t) {\n this.ids = [], this.value = t;\n }\n}\nclass ie extends rt {\n evaluate() {\n return this.value;\n }\n}\nclass Os extends rt {\n evaluate() {\n throw new x(\"#REF!\", \"Reference does not exist.\");\n }\n}\nclass Ns extends rt {\n evaluate() {\n throw new x(\"#NAME?\", `Invalid ref: ${this.value}`);\n }\n}\nclass Ye extends rt {\n constructor(t) {\n super(t);\n }\n stringify() {\n return this.value.toUpperCase();\n }\n evaluate({ sheet: t }) {\n const e = dt(this.value, { sheet: t, dependency: \"\" });\n if (e.sheet == null)\n throw new x(\"#REF!\", `Unknown sheet: ${e.sheetName}`);\n if (e.addresses.length === 0)\n throw new x(\"#REF!\", `Invalid address: ${this.value}`);\n const { y: s, x: i } = N(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 = dt(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: u } = N(n), h = {\n y: o + e,\n x: a + s,\n absX: l,\n absY: u\n }, c = i.sheet.getId(h);\n return c == null ? this.value : (this.ids = [c], `#${i.sheet.id}!${He(c, l, u)}`);\n }\n}\nclass Be extends rt {\n stringify() {\n return this.value.toUpperCase();\n }\n evaluate({ sheet: t }) {\n const e = dt(this.value, { sheet: t, dependency: \"\" });\n if (e.sheet == null)\n throw new x(\"#REF!\", `Unknown sheet: ${e.sheetName}`);\n if (e.addresses.length === 0)\n throw new x(\"#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 = dt(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: u, absX: h, absY: c } = N(a), f = {\n y: l + e,\n x: u + s,\n absX: h,\n absY: c\n }, d = i.sheet.getId(f);\n if (d == null)\n return this.value;\n this.ids.push(d), n.push(He(d, h, c));\n }\n return `#${i.sheet.id}!${n.join(\":\")}`;\n }\n}\nclass Jt extends rt {\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: Pt(s, !1) };\n }\n return { sheet: t, id: Pt(this.value, !1) };\n }\n evaluate({ sheet: t }) {\n const e = this.parse(t);\n if (e.id === \"?\")\n throw new x(\"#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 } = dt(n, t);\n return this.ids = a, o || \"#?\";\n }\n}\nclass Qt extends rt {\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) => Pt(c)), i = [];\n for (let c = 0; c < s.length; c++) {\n const f = s[c];\n if (f === \"?\")\n throw new x(\"#REF!\", \"Reference does not exist\");\n const d = e.sheet.getPointById(f);\n i.push(d);\n }\n const [n, o] = i, [a, l, u, h] = [n.y, n.x, o.y || e.sheet.numRows, o.x || e.sheet.numCols];\n return e.sheet.trim({ top: a, left: l, bottom: u, right: h });\n }\n display({ sheet: t, slideY: e = 0, slideX: s = 0 }) {\n const i = this.parse(t), n = i.ids.map((o) => Pt(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 } = dt(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 x(\"#NAME?\", `Unknown function: ${e}`);\n return new s({ args: this.args, sheet: t, at: this.at }).call();\n }\n}\nconst Fs = new ie(0), Ds = {\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}, vs = {\n \"-\": \"uminus\"\n}, Ue = /* @__PURE__ */ new Set([\" \", `\n`, \"\\r\", \"\t\", \"\\f\"]), ks = /* @__PURE__ */ new Set([...Ue, \"+\", \"-\", \"/\", \"*\", \"^\", \"&\", \"=\", \"<\", \">\", \")\", \",\", \"%\"]);\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 ie(this.entity);\n case \"ID\":\n return new Jt(this.entity);\n case \"ID_RANGE\":\n return new Qt(this.entity);\n case \"REF\":\n return new Ye(this.entity);\n case \"RANGE\":\n return new Be(this.entity);\n case \"INFIX_OPERATOR\": {\n const t = Ds[this.entity];\n return new kt(t, this.precedence, void 0, this.at);\n }\n case \"PREFIX_OPERATOR\": {\n const t = vs[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 Os(this.entity);\n case \"INVALID_REF\":\n return new Ns(this.entity);\n }\n }\n}\nconst Ps = (r) => Ue.has(r), $s = { true: !0, false: !1 }, Ie = new I(\"OPEN\", \"(\"), Ls = new I(\"CLOSE\", \")\"), Hs = new I(\"COMMA\", \",\"), L = \"INFIX_OPERATOR\", Ys = \"PREFIX_OPERATOR\", Bs = \"POSTFIX_OPERATOR\";\nclass $t {\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 Ps(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 Jt(i.entity);\n e.push(n.identify(t)), s.push(...n.ids);\n break;\n }\n case \"ID_RANGE\": {\n const n = new Qt(i.entity);\n e.push(n.identify(t)), s.push(...n.ids);\n break;\n }\n case \"REF\": {\n const n = new Ye(i.entity);\n e.push(n.identify(t)), s.push(...n.ids);\n break;\n }\n case \"RANGE\": {\n const n = new Be(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 Jt(e.entity).display({ sheet: t });\n case \"ID_RANGE\":\n return new Qt(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(Ie);\n continue;\n case \")\":\n this.tokens.push(Ls);\n continue;\n case \",\":\n this.tokens.push(Hs);\n continue;\n case \"+\":\n this.tokens.push(new I(L, \"+\", 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 === L || o === \"SPACE\" && a === L ? this.tokens.push(new I(Ys, \"-\", 6, this.at)) : this.tokens.push(new I(L, \"-\", 3, this.at));\n continue;\n }\n case \"/\":\n this.tokens.push(new I(L, \"/\", 4, this.at));\n continue;\n case \"*\":\n this.tokens.push(new I(L, \"*\", 4, this.at));\n continue;\n case \"^\":\n this.tokens.push(new I(L, \"^\", 5, this.at));\n continue;\n case \"&\":\n this.tokens.push(new I(L, \"&\", 4, this.at));\n continue;\n case \"=\":\n this.tokens.push(new I(L, \"=\", 1, this.at));\n continue;\n case \">\":\n if (this.get() === \"=\") {\n this.next(), this.tokens.push(new I(L, \">=\", 2, this.at));\n continue;\n }\n this.tokens.push(new I(L, \">\", 2, this.at));\n continue;\n case \"<\":\n if (this.get() === \"=\") {\n this.next(), this.tokens.push(new I(L, \"<=\", 2, this.at));\n continue;\n }\n if (this.get() === \">\") {\n this.next(), this.tokens.push(new I(L, \"<>\", 1, this.at));\n continue;\n }\n this.tokens.push(new I(L, \"<\", 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(Bs, \"%\", 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), Ie), this.next();\n break;\n }\n if (o == null || ks.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 = $s[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\", Us(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 Us = (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 u = 0; u < i.length; u++) {\n if (n.has(u))\n continue;\n const h = i[u], c = h.replace(l, (f, d, p) => `${d || \"\"}#${a}${p || \"\"}`);\n c !== h && (i[u] = c, n.add(u));\n }\n }), `${e}!${i.join(\":\")}`;\n};\nclass ze {\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 x(\"#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 x(\"#ERROR!\", \"Missing expression before %\");\n const a = new kt(\"divide\", 4, [o, new ie(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 x(\"#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 = Fs;\n else\n throw new x(\"#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 nn = ze, on = (r) => (r.charAt(0) === \"'\" && (r = r.slice(1)), r.charAt(r.length - 1) === \"'\" && (r = r.slice(0, -1)), r);\nfunction zs(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 dt = (r, { sheet: t, operation: e, dependency: s }) => {\n const { sheetName: i, addresses: n } = zs(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 u = 0; u < n.length; u++) {\n const h = n[u], { y: c, x: f, absX: d, absY: p } = N(h);\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(Le(h, !!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}, Ct = (r, t) => t.length === 0 ? r : Object.fromEntries(\n Object.entries(r).filter(([e]) => !t.includes(e))\n), bt = (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}, Lt = (r, t, e) => {\n r.asyncCaches || (r.asyncCaches = {}), r.asyncCaches[t] = e;\n}, tt = () => !0, Ve = (r, t, e = {}) => {\n const s = N(t);\n return r.getCell(s, e);\n}, Vs = (r, { area: t, resolution: e = \"RESOLVED\", raise: s = !1, filter: i = tt, asScalar: n = !1 } = {}) => r.__raw__._toValueMatrix({ area: t, resolution: e, raise: s, filter: i, asScalar: n }), an = (r, {\n resolution: t = \"RESOLVED\",\n raise: e = !1,\n filter: s = tt,\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 = N(f), p = Ve(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: u, bottom: h, right: c } = n ?? r.area;\n for (let f = l; f <= h; f++)\n for (let d = u; 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[D({ y: f, x: d })] = m;\n }\n }\n return a;\n}, cn = (r, { resolution: t = \"RESOLVED\", raise: e = !1, filter: s = tt, rows: i, area: n, asScalar: o = !1 } = {}) => {\n const a = [], { top: l, left: u, bottom: h, 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 = u; m <= c; m++) {\n const g = r.getCell({ y: d, x: m }, { resolution: t, raise: e }) ?? {};\n if (s(g)) {\n let y = g.value;\n o && (y = r.getPolicy({ y: d, x: m }).toScalar({ value: g.value, cell: g, sheet: r.__raw__, point: { y: d, x: m } })), p[W(m)] = y;\n }\n }\n }\n return a;\n}, ln = (r, { resolution: t = \"RESOLVED\", raise: e = !1, filter: s = tt, cols: i, area: n, asScalar: o = !1 } = {}) => {\n const a = [], { top: l, left: u, bottom: h, right: c } = n ?? r.area, f = i ? i.map((d) => typeof d == \"string\" ? _t(d) : d) : Array.from({ length: r.numCols }, (d, p) => u + p);\n for (const d of f) {\n const p = {};\n a.push(p);\n for (let m = l; m <= h; m++) {\n const g = r.getCell({ y: m, x: d }, { resolution: t, raise: e }) ?? {};\n if (s(g)) {\n let y = g.value;\n o && (y = r.getPolicy({ y: m, x: d }).toScalar({ value: g.value, cell: g, sheet: r.__raw__, point: { y: m, x: d } })), p[Et(m)] = y;\n }\n }\n }\n return a;\n}, hn = (r, { area: t, resolution: e = \"RESOLVED\", raise: s = !1, filter: i = tt, ignoreFields: n = [] } = {}) => {\n const { top: o, left: a, bottom: l, right: u } = t ?? r.area, h = se(l - o + 1, u - a + 1);\n for (let c = o; c <= l; c++)\n for (let f = a; f <= u; f++) {\n const d = r.getCell({ y: c, x: f }, { resolution: e, raise: s }) ?? {};\n if (i(d)) {\n const p = Ct(d, n);\n h[c - o][f - a] = p;\n }\n }\n return h;\n}, un = (r, {\n resolution: t = \"RESOLVED\",\n raise: e = !1,\n filter: s = tt,\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 = Ve(r, f, { resolution: t, raise: e }) ?? {};\n s(d) && (a[f] = Ct(d, o));\n }\n return a;\n }\n const { top: l, left: u, bottom: h, right: c } = n ?? r.area;\n for (let f = l; f <= h; f++)\n for (let d = u; d <= c; d++) {\n const p = r.getCell({ y: f, x: d }, { resolution: t, raise: e }) ?? {};\n s(p) && (a[D({ y: f, x: d })] = Ct(p, o));\n }\n return a;\n}, dn = (r, { resolution: t = \"RESOLVED\", raise: e = !1, filter: s = tt, rows: i, area: n, ignoreFields: o = [] } = {}) => {\n const a = [], { top: l, left: u, bottom: h, 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 = u; m <= c; m++) {\n const g = r.getCell({ y: d, x: m }, { resolution: t, raise: e }) ?? {};\n s(g) && (p[W(m)] = Ct(g, o));\n }\n }\n return a;\n}, We = (r) => `'${r.replace(/'/g, \"''\")}'`, Ws = (r) => r ? `${We(r)}!` : \"\", fn = (r, { resolution: t = \"RESOLVED\", raise: e = !1, filter: s = tt, cols: i, area: n, ignoreFields: o = [] } = {}) => {\n const a = [], { top: l, left: u, bottom: h, right: c } = n ?? r.area, f = i ? i.map((d) => typeof d == \"string\" ? _t(d) : d) : Array.from({ length: r.numCols }, (d, p) => u + p);\n for (const d of f) {\n const p = {};\n a.push(p);\n for (let m = l; m <= h; m++) {\n const g = r.getCell({ y: m, x: d }, { resolution: t, raise: e }) ?? {};\n s(g) && (p[Et(m)] = Ct(g, o));\n }\n }\n return a;\n}, Bt = 1, Ut = 2, re = 4, ne = 8, oe = 16, ae = 32, It = 64, Tt = 128, ht = 256, zt = 512, ce = 8192, Vt = 1024, le = 16384, he = 32768, ue = 65536, Wt = 131072, Xs = 0, Xe = It | Tt, St = ht | zt | ce | Vt | le | Wt, je = re | ne, Ge = oe | ae, Ze = je | Ge, qe = Bt | Ut, Ke = St | qe | Ze | Xe, Je = ue | he | Wt, js = 524288, Gs = Ke | Je, O = (r, t) => r === void 0 ? !1 : (r & t) === t, Zs = (r) => {\n const t = [];\n return O(r, Bt) && t.push(\"RemoveRow\"), O(r, Ut) && t.push(\"RemoveCol\"), O(r, re) && t.push(\"InsertRowAbove\"), O(r, ne) && t.push(\"InsertRowBelow\"), O(r, oe) && t.push(\"InsertColLeft\"), O(r, ae) && t.push(\"InsertColRight\"), O(r, It) && t.push(\"MoveFrom\"), O(r, Tt) && t.push(\"MoveTo\"), O(r, ht) && t.push(\"Write\"), O(r, zt) && t.push(\"Style\"), O(r, Vt) && t.push(\"Resize\"), O(r, le) && t.push(\"SetPolicy\"), O(r, Wt) && t.push(\"SetLabel\"), O(r, he) && t.push(\"Sort\"), O(r, ue) && t.push(\"Filter\"), t;\n}, pn = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n Add: Ze,\n ColumnMenu: Je,\n Copy: ce,\n Delete: qe,\n Filter: ue,\n InsertCols: Ge,\n InsertColsLeft: oe,\n InsertColsRight: ae,\n InsertRows: je,\n InsertRowsAbove: re,\n InsertRowsBelow: ne,\n Move: Xe,\n MoveFrom: It,\n MoveTo: Tt,\n NoOperation: Xs,\n ReadOnly: Ke,\n RemoveCols: Ut,\n RemoveRows: Bt,\n Resize: Vt,\n RowMenu: js,\n SetLabel: Wt,\n SetPolicy: le,\n Sort: he,\n Style: zt,\n Update: St,\n ViewOnly: Gs,\n Write: ht,\n debugOperations: Zs,\n hasOperation: O\n}, Symbol.toStringTag, { value: \"Module\" }));\nH.extend(fs);\nH.extend(ds);\nconst Qe = /* @__PURE__ */ new Set([\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"]), qs = /* @__PURE__ */ new Set([...Qe, \"Z\", \"z\"]), Ks = /* @__PURE__ */ new Set([\"J\", \"F\", \"M\", \"A\", \"S\", \"O\", \"N\", \"D\", ...Qe]), Js = /* @__PURE__ */ new Set([\"N\", \"B\", \"R\", \"Y\", \"N\", \"L\", \"G\", \"P\", \"T\", \"V\", \"C\", ...qs]), Qs = /* @__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 ts(r) {\n const t = r[0];\n if (t == null || !Ks.has(t.toUpperCase()) || !Js.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) && !Qs.has(i.toLowerCase()))\n return;\n let s = \"UTC\";\n try {\n s = Intl.DateTimeFormat().resolvedOptions().timeZone;\n } catch {\n }\n try {\n return H.tz(r, s).toDate();\n } catch {\n }\n}\nconst ti = { true: !0, false: !1 };\nclass de {\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 !== de.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 (k.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 (b.is(e))\n o = this.renderTime({ value: b.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 (x.is(e))\n throw e;\n Q(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 ? H(t).format(this.dateFormat) : H(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 (!k.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 (b.is(e))\n return this.toScalarTime({ value: b.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 (x.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 ? H(t).format(this.dateFormat) : H(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), k.is(t) ? \"\" : t instanceof Date ? this.serializeDate({ value: t, cell: e, sheet: s, point: i }) : b.is(t) ? this.serializeTime({ value: b.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 x ? 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 ? H(t).format(this.dateFormat) : H(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 b.is(t) && (t = b.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: ti[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: b.parse(t) };\n }\n deserializeDate(t, e) {\n return { value: ts(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 xt = \"default\", ei = new de({ priority: 0 }), j = (r) => r == null ? \"\" : String(r);\nfunction ft(r) {\n return typeof r == \"number\" ? \"number\" : r instanceof Date ? \"date\" : b.is(r) ? \"time\" : typeof r == \"boolean\" ? \"boolean\" : \"string\";\n}\nfunction pt(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 = ts(r);\n return e ? { ok: !0, num: e.getTime() } : { ok: !1, num: NaN };\n }\n case \"time\": {\n const e = b.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 mt(r, t) {\n switch (t) {\n case \"number\":\n return r;\n case \"date\":\n return r.getTime();\n case \"time\":\n return b.ensure(r).toMilliseconds();\n case \"boolean\":\n return r ? 1 : 0;\n default:\n return NaN;\n }\n}\nconst si = (r, t) => {\n const e = ft(t);\n if (e === \"string\") {\n const i = j(t);\n return r.value.some((n) => i === n);\n }\n const s = mt(t, e);\n return r.value.some((i) => {\n const n = pt(i, e);\n return n.ok && s === n.num;\n });\n}, ii = (r, t) => {\n const e = ft(t);\n if (e === \"string\") {\n const i = j(t);\n return !r.value.some((n) => i === n);\n }\n const s = mt(t, e);\n return !r.value.some((i) => {\n const n = pt(i, e);\n return n.ok && s === n.num;\n });\n}, ri = (r, t) => {\n const e = ft(t);\n if (e === \"string\")\n return j(t) > r.value[0];\n const s = mt(t, e), i = pt(r.value[0], e);\n return i.ok && s > i.num;\n}, ni = (r, t) => {\n const e = ft(t);\n if (e === \"string\")\n return j(t) >= r.value[0];\n const s = mt(t, e), i = pt(r.value[0], e);\n return i.ok && s >= i.num;\n}, oi = (r, t) => {\n const e = ft(t);\n if (e === \"string\")\n return j(t) < r.value[0];\n const s = mt(t, e), i = pt(r.value[0], e);\n return i.ok && s < i.num;\n}, ai = (r, t) => {\n const e = ft(t);\n if (e === \"string\")\n return j(t) <= r.value[0];\n const s = mt(t, e), i = pt(r.value[0], e);\n return i.ok && s <= i.num;\n}, ci = (r, t) => t == null || j(t) === \"\", li = (r, t) => t != null && j(t) !== \"\", hi = (r, t) => {\n const e = j(t).toLowerCase();\n return r.value.some((s) => e.includes(s.toLowerCase()));\n}, ui = (r, t) => {\n const e = j(t).toLowerCase();\n return !r.value.some((s) => e.includes(s.toLowerCase()));\n}, di = {\n eq: si,\n ne: ii,\n gt: ri,\n gte: ni,\n lt: oi,\n lte: ai,\n blank: ci,\n nonblank: li,\n includes: hi,\n excludes: ui\n};\nfunction Te(r, t) {\n const e = di[r.method];\n return e ? e(r, t) : !0;\n}\nfunction fi(r, t) {\n const e = r.mode ?? \"or\";\n return r.conditions.length === 0 ? !0 : e === \"and\" ? r.conditions.every((s) => Te(s, t)) : r.conditions.some((s) => Te(s, t));\n}\nclass lt {\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 Me = (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}, pi = () => !0;\nclass $ {\n constructor({ limits: t = {}, name: e, registry: s = ye({}), eager: i = !1 }) {\n this.__gsType = \"Sheet\", this._stripped = wt, 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 = jt, this.defaultRowHeight = J, this.version = 0, this.addressCaches = /* @__PURE__ */ new Map(), this.lastChangedAddresses = [], this._initCells = null, 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=${We(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) || Re;\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) || _e;\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 (k.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(D({ 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: u, filter: h } of e) {\n const c = this.getCell({ y: n, x: u }, { resolution: \"RESOLVED\" });\n if (!fi(h, 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(D({ 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, g = p == null ? void 0 : p.value;\n if (m == null && g == null)\n return 0;\n if (m == null)\n return 1;\n if (g == null)\n return -1;\n let y = 0;\n return typeof m == \"number\" && typeof g == \"number\" ? y = m - g : m instanceof Date && g instanceof Date ? y = m.getTime() - g.getTime() : y = String(m).localeCompare(String(g)), e === \"asc\" ? y : -y;\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 u = this.idMatrix.slice();\n for (const [c, f] of Object.entries(l))\n this.idMatrix[Number(f)] = u[Number(c)];\n this.addressCaches.clear();\n const h = new lt(this);\n return h.buildMap(u.flat(), this.idMatrix.flat()), h.resolveDependents(), this._pushHistory({\n applyed: !0,\n operation: \"SORT_ROWS\",\n srcSheetId: this.id,\n dstSheetId: this.id,\n sortedRowMapping: l\n }), this.refresh(!0, !0);\n }\n /** @internal */\n _sortRowMapping(t, e = !1) {\n const s = new Array(this.numRows);\n if (e)\n for (const [n, o] of Object.entries(t)) {\n const a = Number(n);\n s[a - 1] = o;\n }\n else\n for (const [n, o] of Object.entries(t)) {\n const a = Number(n);\n s[o - 1] = a;\n }\n this._materializeIdMatrix();\n const i = [];\n for (let n = 0; n < s.length; n++)\n i.push(this.idMatrix[s[n]]);\n for (let n = 0; n < s.length; n++)\n this.idMatrix[n + 1] = i[n];\n this.addressCaches.clear();\n }\n get isInitialized() {\n return this.status === 2;\n }\n get policies() {\n return this.registry.policies;\n }\n /** @internal */\n getSystem(t) {\n const e = this.getId(t);\n if (e != null)\n return this.registry.systems[e];\n }\n /** @internal */\n processFormula(t, { idMap: e, ...s }) {\n if ((typeof t == \"string\" || t instanceof String) && t.charAt(0) === \"=\") {\n const i = new $t(t.substring(1));\n return i.tokenize(e), i.identify({ ...s, sheet: this }), i.dependencyIds.forEach((n) => this.addDependency(n, s.dependency)), s.dependency != null && (this._formulaHasAsync(i) ? this.registry.asyncFormulaCells.add(s.dependency) : this.registry.asyncFormulaCells.delete(s.dependency)), \"=\" + i.identifiedFormula;\n }\n return s.dependency != null && this.registry.asyncFormulaCells.delete(s.dependency), t;\n }\n /**\n * Whether a tokenized formula calls at least one async function, decided via\n * the function class's static `isAsync` flag (no instantiation). Drives the\n * async-formula index that {@link resolveAll} walks.\n * @internal\n */\n _formulaHasAsync(t) {\n for (const e of t.tokens)\n if (e.type === \"FUNCTION\") {\n const s = this.registry.functions[String(e.entity).toLowerCase()];\n if (s != null && s.isAsync)\n return !0;\n }\n return !1;\n }\n /** @internal */\n resolveFormulas() {\n this.idsToBeIdentified.forEach((t) => {\n var s;\n const e = this.registry.data[t];\n ((s = this.registry.systems[t]) == null ? void 0 : s.sheetId) != null && e != null && (this.clearDependencies(t), e.value = this.processFormula(e == null ? void 0 : e.value, { dependency: t }));\n }), this.idsToBeIdentified = [], this.status = 2;\n }\n /** @internal */\n getSheetBySheetName(t) {\n const e = this.registry.sheetIdsByName[t];\n return this.getSheetBySheetId(e);\n }\n /** @internal */\n getSheetBySheetId(t) {\n var e, s, i;\n return (i = (s = (e = this.registry.contextsBySheetId[t]) == null ? void 0 : e.store) == null ? void 0 : s.sheetReactive) == null ? void 0 : i.current;\n }\n /** @internal */\n static _stack(...t) {\n const e = {};\n return t.forEach((s) => {\n s != null && s.style && (e.style = { ...e.style, ...s.style }), s != null && s.prevention && (e.prevention = (e.prevention || 0) | s.prevention);\n }), e;\n }\n /** @internal */\n initialize(t) {\n var o, a;\n if (this.status > 1)\n return;\n t[0] == null && (t[0] = { width: _e, height: Re });\n const e = Cs(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 l = 0; l <= e.numCols; l++)\n this._colLetters[l] = W(l);\n const s = t.__userKeys ?? Object.keys(t);\n s.forEach((l) => {\n if (l === Ft || l === Dt || l === vt)\n return;\n const u = Ts(l), h = t[l];\n u.forEach((c) => {\n const f = t[c];\n t[c] = {\n ...f,\n ...h,\n ...$._stack(f, h)\n };\n });\n }), this._common = t == null ? void 0 : t[Ft], this._commonCol = t == null ? void 0 : t[Dt], this._commonRow = t == null ? void 0 : t[vt], this._initCells = t;\n const i = t.__matrices;\n if (i) {\n this._initMatrices = i, this._initFlattenAs = t.__flattenAs, this._matrixByBase = [];\n for (const l of Object.keys(i)) {\n const { y: u, x: h } = N(l);\n this._matrixByBase.push({ baseY: u, baseX: h, matrix: i[l] });\n }\n }\n ((o = this._commonCol) == null ? void 0 : o.width) != null && (this.defaultColWidth = this._commonCol.width), ((a = this._commonRow) == null ? void 0 : a.height) != null && (this.defaultRowHeight = this._commonRow.height), this._ensureIdRow(0);\n for (let l = 0; l <= e.numCols; l++) {\n const u = this.idMatrix[0][l];\n this._ensureCellPopulated(0, l, u);\n }\n const n = s;\n for (const l of n) {\n if (l === Ft || l === Dt || l === vt)\n continue;\n const u = N(l), { y: h, x: c } = u;\n if (h === 0 && c === 0 || h === 0 || c === 0 || h <= 0 || c <= 0 || h > e.numRows || c > e.numCols)\n continue;\n const d = this._ensureIdRow(h)[c];\n d != null && this._ensureCellPopulated(h, c, d);\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] || W(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, u;\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 h = this._colLetters[e] || W(e), c = i == null ? void 0 : i[h], { style: f, ...d } = c ?? {}, p = i == null ? void 0 : i[h + \"0\"];\n o = {\n ...this._commonCol,\n ...d,\n ...p,\n ...$._stack(this._commonCol, p)\n };\n } else if (e === 0 && t > 0) {\n const h = Et(t), c = i == null ? void 0 : i[h], { style: f, ...d } = c ?? {}, p = i == null ? void 0 : i[\"0\" + h];\n o = {\n ...this._commonRow,\n ...d,\n ...p,\n ...$._stack(this._commonRow, p)\n };\n } else if (t === 0 && e === 0) {\n const h = i == null ? void 0 : i[\"0\"];\n o = { ...h, ...$._stack(h) };\n } else {\n const h = this._colLetters[e] || W(e), c = Et(t), f = `${h}${c}`, d = i == null ? void 0 : i[c], p = i == null ? void 0 : i[h];\n let m = i == null ? void 0 : i[f];\n if ((m == null || !(\"value\" in m)) && this._matrixByBase.length > 0)\n for (const { baseY: g, baseX: y, matrix: R } of this._matrixByBase) {\n const A = t - g, w = e - y;\n if (A >= 0 && A < R.length && w >= 0 && w < R[A].length) {\n const S = R[A][w];\n let _;\n this._initFlattenAs ? _ = { [this._initFlattenAs]: S } : _ = S, m = m ? { ..._, ...m } : _;\n break;\n }\n }\n o = {\n ...this._common,\n ...d,\n ...p,\n ...m,\n ...$._stack(this._common, d, p, m)\n };\n }\n (u = (l = o == null ? void 0 : o.value) == null ? void 0 : l.startsWith) != null && u.call(l, \"=\") && ((o == null ? void 0 : o.formulaEnabled) ?? !0) && this.idsToBeIdentified.push(s), t === 0 ? o.width == null && (o.width = jt) : e === 0 ? (o.height == null && (o.height = J), o.height !== (this.defaultRowHeight || J) && 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 || J;\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 || J;\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, u = this.getOffsetTop(s), h = this.getOffsetTop(o), c = Math.max(0, a - l), f = Math.max(0, u - h);\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 || J;\n let o = 0;\n for (let h = 1; h <= t; h++) {\n const c = this.getCell({ y: 0, x: h }, { resolution: \"SYSTEM\" }), f = (c == null ? void 0 : c.width) || this.defaultColWidth || jt, d = this.registry.systems[this.getId({ y: 0, x: h })];\n d != null && (d.offsetLeft = s + o), o += f;\n }\n this.totalWidth = s + o;\n let a = 0, l = 0;\n for (const [h, c] of this._rowHeightOverrides)\n h >= 1 && h <= e && (a += c - n);\n for (const h of this._filteredRows)\n if (h >= 1 && h <= e) {\n const c = this._rowHeightOverrides.get(h) ?? n;\n l += c;\n }\n const u = e * n + a;\n this.totalHeight = i + u - l, this.fullHeight = i + u;\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 = wt, 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 = wt, 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 a = N(o);\n return { y: a.y + e, x: a.x + s, absCol: i, absRow: n };\n }\n this._materializeIdMatrix();\n for (let a = 0; a < this.idMatrix.length; a++) {\n const l = this.idMatrix[a];\n for (let u = 0; u < l.length; u++) {\n const h = l[u], c = D({ y: a, x: u });\n if (this.addressCaches.set(h, c), h === t)\n return {\n y: a + e,\n x: u + s,\n absCol: i,\n absRow: n\n };\n }\n }\n return { y: -1, x: -1, absCol: i, absRow: n };\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 Le(D({ y: i, x: n }), o, a);\n }\n /** @internal */\n clearAddressCaches() {\n this.addressCaches.clear();\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], D({ y: t, x: s }));\n }\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 = te({ value: l, sheet: this, point: t, raise: s, resolution: e, at: o })), { ...a, value: l };\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 /** @internal */\n _toValueMatrix({\n area: t,\n at: e,\n resolution: s = \"RESOLVED\",\n raise: i = !1,\n filter: n = pi,\n asScalar: o = !1\n } = {}) {\n const { top: a, left: l, bottom: u, right: h } = t ?? this.area, c = se(u - a + 1, h - l + 1);\n for (let f = a; f <= u; f++)\n for (let d = l; d <= h; d++) {\n const p = this.getId({ y: f, x: d });\n if (e === p)\n throw new x(\"#REF!\", \"References are circulating.\");\n const m = this.getCell({ y: f, x: d }, { resolution: s, raise: i }) ?? {};\n if (n(m)) {\n let g = m.value;\n o && (g = this.getPolicy({ y: f, x: d }).toScalar({ value: m.value, cell: m, sheet: this, point: { y: f, x: d } })), c[f - a][d - l] = g;\n }\n }\n return c;\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__, u = this._createMoveRelations(l, e, this, s), { diffBefore: h, diffAfter: c } = this._moveCells(l, this, u, !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: h,\n diffAfter: c,\n moveRelations: u\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: u, left: h } = i, c = s.numRows, f = s.numCols, d = [];\n for (let w = n; w <= a; w++)\n t.isRowFiltered(w) || d.push(w);\n const p = l - o + 1, m = d.length, g = [];\n {\n let w = 0, S = u;\n for (; w < m; )\n s.isRowFiltered(S) || (g.push(S), w++), S++;\n }\n const y = /* @__PURE__ */ new Set();\n for (let w = 0; w < m; w++)\n for (let S = 0; S < p; S++)\n y.add(D({ y: d[w], x: o + S }));\n const R = /* @__PURE__ */ new Set();\n for (let w = 0; w < m; w++) {\n const S = g[w];\n for (let _ = 0; _ < p; _++) {\n const M = h + _;\n S <= c && M <= f && R.add(D({ y: S, x: M }));\n }\n }\n const A = [];\n for (let w = 0; w < m; w++) {\n const S = d[w], _ = g[w];\n for (let M = 0; M < p; M++) {\n const T = o + M, C = h + M, Y = D({ y: S, x: T }), U = _ <= c && C <= f, G = U ? D({ y: _, x: C }) : void 0;\n let V;\n t === s && R.has(Y) || (V = t._generateId());\n let q;\n if (U) {\n if (!(t === s && y.has(G))) {\n const P = s.getId({ y: _, x: C });\n P != null && (q = P);\n }\n } else {\n const P = t.getId({ y: S, x: T });\n P != null && (q = P);\n }\n const K = t.getCell({ y: S, x: T }, { resolution: \"SYSTEM\" }), v = U ? s.getCell({ y: _, x: C }, { resolution: \"SYSTEM\" }) : void 0;\n A.push({\n before: K == null ? void 0 : K.policy,\n after: v == null ? void 0 : v.policy,\n src: Y,\n dst: G,\n new: V,\n lost: q\n });\n }\n }\n return A;\n }\n get defaultPolicy() {\n return this.policies[xt] ?? ei;\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 lt(e), l = {}, u = [], h = [];\n if (i)\n for (const {\n before: m,\n after: g,\n src: y,\n dst: R,\n new: A,\n lost: w\n } of s) {\n if (R != null) {\n const S = N(R), _ = e.getId(S);\n if (_ != null) {\n const M = N(y);\n u.push({ y: M.y, x: M.x, id: _ });\n }\n }\n if (w != null)\n if (R != null) {\n const S = N(R);\n h.push({ y: S.y, x: S.x, id: w });\n } else {\n const S = N(y);\n u.push({ y: S.y, x: S.x, id: w });\n }\n }\n else\n for (const {\n before: m,\n after: g,\n src: y,\n dst: R,\n new: A,\n lost: w\n } of s) {\n const S = N(y), _ = t.getId(S), M = R != null ? N(R) : void 0, T = M != null ? e.getId(M) : void 0, C = _ != null ? t.registry.data[_] : void 0, Y = T != null ? e.registry.data[T] : void 0;\n if (!(n === \"USER\" && (O(C == null ? void 0 : C.prevention, It) || O(Y == null ? void 0 : Y.prevention, Tt)))) {\n if (A != null) {\n const U = m || xt, V = (t.policies[U] ?? t.defaultPolicy).select({\n sheet: t,\n point: S,\n next: { value: null },\n current: C,\n operation: It\n });\n l[A] = {\n ...V,\n policy: m\n }, this.registry.systems[A] = { id: A, sheetId: t.id, changedTime: Date.now() }, u.push({ y: S.y, x: S.x, id: A });\n }\n if (T != null && M != null && R != null) {\n const U = g || xt, G = m || xt, V = e.policies[U] ?? e.defaultPolicy, q = t.policies[G] ?? t.defaultPolicy, K = q.priority > V.priority, P = (K ? q : V).select({\n sheet: e,\n point: M,\n next: C,\n current: Y,\n operation: Tt\n });\n if (P && (o[_] = C ?? {}, l[_] = {\n ...C,\n ...P,\n policy: K ? m : g\n }), C != null) {\n const ct = this.registry.systems[_];\n ct && (ct.changedTime = Date.now());\n }\n h.push({ y: M.y, x: M.x, id: _ });\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: g, id: y } of u)\n t._ensureIdRow(m)[g] = y;\n for (const { y: m, x: g, id: y } of h)\n e._ensureIdRow(m)[g] = y;\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 copy({\n srcSheet: t = this,\n src: e,\n dst: s,\n onlyValue: i = !1,\n operator: n = \"SYSTEM\",\n undoReflection: o,\n redoReflection: a\n }) {\n const l = t !== this, { top: u, left: h, bottom: c, right: f } = e, { top: d, left: p, bottom: m, right: g } = s, y = {}, R = Date.now(), A = [];\n for (let T = u; T <= c; T++)\n t.isRowFiltered(T) || A.push(T);\n const w = [];\n for (let T = d; T <= m; T++)\n T > this.numRows || this.isRowFiltered(T) || w.push(T);\n const S = A.length, _ = f - h + 1, M = g - p + 1;\n for (let T = 0; T < w.length; T++) {\n const C = w[T], Y = A[T % S];\n for (let U = 0; U <= M - 1; U++) {\n const G = p + U;\n if (G > this.numCols)\n continue;\n const V = h + U % _, q = l ? 0 : C - Y, K = l ? 0 : G - V, v = {\n ...t.getCell({ y: Y, x: V }, { resolution: \"SYSTEM\" })\n }, P = { y: C, x: G }, ct = this.getCell(P, { resolution: \"SYSTEM\" }), os = this.getPolicy(P), xe = { y: Y, x: V }, as = t.getPolicy(xe), Xt = t.getCell(xe, { resolution: \"SYSTEM\" }), cs = as.priority > os.priority;\n v.policy = cs ? Xt == null ? void 0 : Xt.policy : ct == null ? void 0 : ct.policy;\n const be = this.getId(P);\n this.clearDependencies(be);\n const ls = (v == null ? void 0 : v.formulaEnabled) ?? !0 ? this.processFormula(v == null ? void 0 : v.value, {\n dependency: be,\n slideY: q,\n slideX: K\n }) : v == null ? void 0 : v.value, hs = this.getId(P), Se = this.registry.systems[hs];\n Se != null && (Se.changedTime = R);\n const us = D(P);\n if (i) {\n const Z = this.getCell(P, { resolution: \"SYSTEM\" });\n v.style = Z == null ? void 0 : Z.style, v.justifyContent = Z == null ? void 0 : Z.justifyContent, v.alignItems = Z == null ? void 0 : Z.alignItems;\n }\n y[us] = { ...v, value: ls };\n }\n }\n return this.update({\n diff: y,\n partial: !1,\n operator: n,\n operation: ce,\n undoReflection: o,\n redoReflection: a\n });\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 = St,\n formulaIdentify: a = !0\n }) {\n const l = {}, u = {}, h = [], c = Date.now();\n let f = !1;\n return Object.keys(t).forEach((d) => {\n var w, S, _, M, T;\n const p = N(d), m = this.getId(p), g = this.registry.data[m];\n if (n === \"USER\" && O(g == null ? void 0 : g.prevention, St))\n return;\n let y = { ...t[d] };\n if (a && \"value\" in y && (y.formulaEnabled ?? (g == null ? void 0 : g.formulaEnabled) ?? !0) && (this.clearDependencies(m), y.value = this.processFormula(y.value, { dependency: m })), i.forEach((C) => {\n y[C] = g == null ? void 0 : g[C];\n }), n === \"USER\" && O(g == null ? void 0 : g.prevention, ht) && delete y.value, n === \"USER\" && O(g == null ? void 0 : g.prevention, zt) && ((w = y == null ? void 0 : y.style) == null || delete w.justifyContent, (S = y == null ? void 0 : y.style) == null || delete S.alignItems), n === \"USER\" && O(g == null ? void 0 : g.prevention, Vt) && ((_ = y == null ? void 0 : y.style) == null || delete _.width, (M = y == null ? void 0 : y.style) == null || delete M.height), (y.width != null || y.height != null) && (f = !0), l[m] = g ?? {}, y = { ...(this.policies[(g == null ? void 0 : g.policy) || xt] ?? this.defaultPolicy).select({\n sheet: this,\n point: p,\n next: y,\n current: g,\n operation: o\n }) }, s) {\n const C = this.registry.systems[m];\n C != null && (C.changedTime = c);\n }\n if (e) {\n const C = { ...g, ...y };\n this.registry.data[m] = C, u[m] = C;\n } else\n this.registry.data[m] = y, u[m] = y;\n if (p.x === 0 && p.y >= 1) {\n const C = (T = this.registry.data[m]) == null ? void 0 : T.height, Y = this.defaultRowHeight || J;\n C != null && C !== Y ? this._rowHeightOverrides.set(p.y, C) : this._rowHeightOverrides.delete(p.y);\n }\n h.push(d);\n }), this.lastChangedAddresses = h, {\n diffBefore: l,\n diffAfter: u,\n resized: f\n };\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 = St,\n ignoreFields: a,\n undoReflection: l,\n redoReflection: u\n }) {\n const { diffBefore: h, 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: u,\n diffBefore: h,\n diffAfter: c,\n partial: e\n }), this.refresh(!1, f);\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: u, x: h } = t, c = {};\n let f = 0, d = u;\n for (; f < e.length && !(d > this.bottom); ) {\n if (this.isRowFiltered(d)) {\n d++;\n continue;\n }\n e[f].forEach((m, g) => {\n const y = h + g;\n if (y > this.right)\n return;\n const R = { y: d, x: y }, A = this.parse(R, m.value ?? \"\");\n if (A.style = { ...m.style, ...A.style }, n) {\n const w = this.getCell(R, { resolution: \"SYSTEM\" });\n A.style = w == null ? void 0 : w.style, A.justifyContent = w == null ? void 0 : w.justifyContent, A.alignItems = w == null ? void 0 : w.alignItems;\n }\n c[D(R)] = A;\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: ht,\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 = { [D(e)]: i };\n return this.update({\n ...t,\n diff: o,\n partial: !0,\n operation: ht\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: u\n }) {\n if (this.maxNumRows !== -1 && this.numRows + e > this.maxNumRows)\n return console.error(`Rows are limited to ${this.maxNumRows}.`), this;\n const h = this.numCols, c = [], f = Date.now();\n for (let d = 0; d < e; d++) {\n const p = [];\n for (let m = 0; m <= h; m++) {\n const g = this._generateId();\n p.push(g);\n const y = this.getCell({ y: s, x: m }, { resolution: \"SYSTEM\" }), R = this._copyCellLayout(y);\n this.registry.data[g] = { ...R }, this.registry.systems[g] = { id: g, 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: u,\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(), 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 lt(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\" && O(f == null ? void 0 : f.prevention, Bt))\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 u = [];\n a.forEach((c) => {\n const f = this.idMatrix.splice(c, 1);\n u.unshift(f[0]);\n }), this.area.bottom -= a.length, this._shiftRowMetaForRemove(t, e);\n const h = 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: h,\n deleted: u\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(), 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: u\n }) {\n if (this.maxNumCols !== -1 && this.numCols + e > this.maxNumCols)\n return console.error(`Columns are limited to ${this.maxNumCols}.`), this;\n const h = this.numRows, c = [], f = Date.now();\n for (let d = 0; d <= h; d++) {\n const p = [];\n for (let m = 0; m < e; m++) {\n const g = this._generateId();\n p.push(g);\n const y = this.getCell({ y: d, x: s }, { resolution: \"SYSTEM\" }), R = this._copyCellLayout(y);\n this._ensureIdRow(d).splice(t, 0, g), this.registry.data[g] = { ...R }, this.registry.systems[g] = { id: g, 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: u,\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(), 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 lt(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\" && O(f == null ? void 0 : f.prevention, Ut)) {\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 u = [];\n this.idMatrix.forEach((c) => {\n const f = [];\n u.push(f), a.forEach((d) => {\n f.unshift(...c.splice(d, 1));\n });\n }), this.area.right -= a.length;\n const h = 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: h,\n deleted: u\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(), 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 $t(n.substring(1));\n return o.tokenize(), \"=\" + o.display({ sheet: this });\n }\n try {\n const o = this.getId(t), a = te({ value: n, sheet: this, point: t, raise: !0, resolution: s, at: o }), l = nt({ 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 = wt, 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 Oe({ 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 (!wt.is(this._stripped))\n return this._stripped;\n let s = this;\n for (; s instanceof $; )\n s = (i = Oe({ sheet: s, raise: t, at: e })[0]) == null ? void 0 : i[0];\n return this._stripped = s, this._stripped;\n }\n /** @internal */\n _applyDiff(t = {}, e = !0) {\n const s = Object.keys(t);\n s.forEach((n) => {\n const o = t[n] ?? {};\n let a;\n e ? (a = { ...this.registry.data[n] }, Object.keys(o).forEach((h) => {\n o[h] === void 0 ? delete a[h] : a[h] = o[h];\n })) : a = { ...o };\n const l = this.registry.systems[n];\n l != null && (l.changedTime = Date.now()), this.registry.data[n] = a, this.clearDependencies(n), this.processFormula(a.value, { dependency: n });\n const u = this.addressCaches.get(n);\n if (u) {\n const h = N(u);\n if (h.x === 0 && h.y > 0) {\n const c = this.defaultRowHeight || J, f = a.height ?? c;\n f !== c ? this._rowHeightOverrides.set(h.y, f) : this._rowHeightOverrides.delete(h.y), a.filtered ? this._filteredRows.add(h.y) : this._filteredRows.delete(h.y);\n }\n }\n }), this._warmAddressCaches();\n const i = [];\n for (const n of s) {\n const o = this.getAddressById(n);\n o && i.push(o);\n }\n this.lastChangedAddresses = i;\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 } = Nt({ 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 } = Nt({ 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 lt(s);\n n.buildMap(i, s.idMatrix.flat()), n.resolveDependents(), s._reapplyFilters();\n break;\n }\n }\n return this.refresh(Me(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 } = Nt({ 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 } = Nt({ 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 lt(s);\n n.buildMap(i, s.idMatrix.flat()), n.resolveDependents(), s._reapplyFilters();\n break;\n }\n }\n return this.refresh(Me(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 */\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 = bt(this.registry, t);\n s.dependents == null && (s.dependents = /* @__PURE__ */ new Set()), s.dependents.add(e);\n const i = bt(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, At), bt(this.registry, e, { tmpAsyncCaches: {} });\n }\n /** @internal */\n finishSolvedCache(t, e) {\n if (At.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 u = 0; u < i; u++) {\n if (l === 0 && u === 0)\n continue;\n const h = { y: t.y + l, x: t.x + u }, c = this.getId(h), f = D(h);\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 x(\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 x(\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 u = 0; u < i; u++) {\n const h = { y: t.y + l, x: t.x + u }, c = this.getId(h);\n if (c != null && (this.finishSolvedCache(h, e[l][u]), (l !== 0 || u !== 0) && (o.push(D(h)), n != null))) {\n const f = bt(this.registry, c, {});\n f.spilledFrom = D(t), this.registry.lastSpilledTargetIds.add(c);\n }\n }\n return e[0][0];\n }\n /** @internal */\n sheetPrefix(t = !1) {\n return t ? \"\" : Ws(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 = `${W(this.right)}${i}`);\n const { y: n, x: o } = N(s), { y: a, x: l } = N(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 Kt(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 te = ({ value: r, sheet: t, point: e, raise: s = !0, resolution: i = \"RESOLVED\", at: n }) => {\n var u;\n const [o, a] = t.getSolvedCache(e);\n if (o && r == null && !At.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 h = new $t(r.substring(1), { at: n });\n return h.tokenize(), \"=\" + h.display({ sheet: t });\n }\n let l = r;\n if (o && !At.is(a))\n l = a;\n else\n try {\n const h = new $t(r.substring(1), { at: n });\n h.tokenize();\n const f = new ze(h.tokens).build();\n l = (u = f == null ? void 0 : f.evaluate) == null ? void 0 : u.call(f, { sheet: t });\n } catch (h) {\n if (s)\n throw t.finishSolvedCache(e, h), h;\n return h;\n }\n return B.is(l) ? l = t.spill(e, l.matrix) : t.finishSolvedCache(e, l), i === \"RESOLVED\" && l instanceof $ && (l = nt({ value: l, raise: s, at: n })), k.is(l) && t.finishSolvedCache(e, l), l;\n}, Oe = ({ 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, u) => {\n const h = s.left + u, c = { y: a, x: h }, [f, d] = r.getSolvedCache(c);\n try {\n if (At.is(d))\n throw new x(\"#REF!\", \"References are circulating.\", new Error(l));\n if (k.is(d))\n return d;\n if (x.is(d))\n throw d;\n if (d != null)\n return d;\n r.setSolvingCache(c);\n const p = te({ 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}, nt = ({ value: r, at: t, raise: e = !0 }) => r instanceof $ ? r.strip({ raise: e, at: t }) : r, ee = new ut(\"asyncCacheMiss\"), mi = (r) => r.some((t) => k.is(t)), es = (r) => (r == null ? void 0 : r.__gsType) === \"Sheet\", Rt = (r, t) => {\n for (const e of r)\n if (k.is(e) || Array.isArray(e) && Rt(e, t) || B.is(e) && Rt(e.matrix, t) || es(e) && Rt(e._toValueMatrix({ at: t }), t))\n return !0;\n return !1;\n}, gi = (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}, yi = (r, t, e = 1) => {\n const s = JSON.stringify(t, (n, o) => es(o) ? Vs(o) : k.is(o) ? null : o), i = Array.from({ length: e }, (n, o) => gi(s, o).toString(36));\n return `${r}:${s.length}:${i.join(\"-\")}`;\n}, wi = (r, t, e, s = !1) => {\n var l;\n const i = r.registry, n = i.data[t];\n if (n == null)\n return ee;\n const o = bt(i, t, { tmpAsyncCaches: {} });\n if (n.asyncCaches != null) {\n const u = n.asyncCaches[e];\n if (u != null && (u.expireTime == null || Date.now() < u.expireTime))\n return o.tmpAsyncCaches[e] = u, u.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 u = i.asyncInflight.get(e);\n return i.asyncPending.set(a, u.pending), u.pending.promise.then((h) => {\n const c = i.data[t];\n c != null && Lt(c, e, { value: h, expireTime: u.expireTime });\n }).catch((h) => {\n x.is(h) || (h = new x(\"#ASYNC!\", (h == null ? void 0 : h.message) ?? String(h), h instanceof Error ? h : void 0));\n const c = i.data[t];\n c != null && Lt(c, e, { value: h, expireTime: u.expireTime });\n }).finally(() => {\n i.asyncPending.delete(a);\n }), u.pending;\n }\n return ee;\n}, xi = (r, t, e, s, i, n = !1) => {\n const o = t.registry, a = i != null ? Date.now() + i : void 0, l = `${e}:${s}`, u = new k(r);\n return o.asyncPending.set(l, u), n && (o.asyncInflight || (o.asyncInflight = /* @__PURE__ */ new Map()), o.asyncInflight.set(s, { pending: u, expireTime: a })), r.then((h) => {\n const c = o.data[e];\n c != null && Lt(c, s, { value: h, expireTime: a });\n }).catch((h) => {\n x.is(h) || (h = new x(\"#ASYNC!\", (h == null ? void 0 : h.message) ?? String(h), h instanceof Error ? h : void 0));\n const c = o.data[e];\n c != null && Lt(c, s, { value: h, expireTime: a });\n }).finally(() => {\n o.asyncPending.delete(l), n && o.asyncInflight && o.asyncInflight.delete(s), o.solvedCaches.clear(), o.transmit();\n }), u;\n}, Gt = () => new k(Promise.resolve()), fe = (r, t) => {\n if (typeof r == \"string\" || typeof t == \"string\")\n return X(r) > X(t);\n try {\n return F(r) > F(t);\n } catch {\n return !1;\n }\n}, pe = (r, t) => {\n if (typeof r == \"string\" || typeof t == \"string\")\n return X(r) >= X(t);\n try {\n return F(r) >= F(t);\n } catch {\n return !1;\n }\n}, ss = (r, t) => !pe(r, t), is = (r, t) => !fe(r, t), me = (r, t) => X(r).toLowerCase() === X(t).toLowerCase(), bi = (r, t) => !me(r, t), ge = (r) => typeof r != \"string\" || !r.endsWith(\"%\") ? !1 : !isNaN(parseFloat(r.slice(0, -1))), Mt = (r) => typeof r == \"number\" || ge(r) ? !0 : typeof r == \"string\" ? !isNaN(parseFloat(r)) && isFinite(Number(r)) : !1, F = (r, t) => {\n const { alternative: e, ignore: s } = t || {};\n if (k.is(r))\n return r;\n if (typeof r > \"u\" && typeof e < \"u\")\n return e;\n if (!r)\n return 0;\n if (r instanceof $) {\n const n = nt({ value: r });\n return F(n, { alternative: e });\n }\n if (r instanceof Date)\n return r.getTime();\n if (b.is(r))\n return r.days;\n if (ge(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 x(\"#VALUE!\", `${r} cannot be converted to a number`);\n }\n return i;\n}, X = (r) => {\n if (k.is(r))\n return r;\n if (r === 0)\n return \"0\";\n if (!r)\n return \"\";\n if (r instanceof $) {\n const t = nt({ value: r });\n return X(t);\n }\n switch (r.constructor.name) {\n case \"Date\":\n return H(r).format(ms);\n default:\n return String(r);\n }\n}, Ot = (r, t) => {\n const { alternative: e, ignore: s } = t ?? {};\n if (k.is(r))\n return r;\n if (typeof r > \"u\" && typeof e < \"u\")\n return e;\n if (r === null)\n return !1;\n if (r instanceof $) {\n const i = nt({ value: r });\n return Ot(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 x(\"#VALUE!\", `text '${r}' cannot be converted to a boolean`);\n }\n return i;\n }\n return !!r;\n};\nfunction Si(r) {\n if (k.is(r) || r instanceof Date)\n return r;\n if (r instanceof $) {\n const t = nt({ value: r });\n return Si(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 x(\"#VALUE!\", `${r} cannot be converted to a date`);\n}\nconst Ri = /^(<=|>=|<>|>|<|=)?(.*)$/, _i = (r, t) => {\n const e = t.match(Ri), [, 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 fe(r, n);\n case \">=\":\n return pe(r, n);\n case \"<\":\n return ss(r, n);\n case \"<=\":\n return is(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 me(r, n) === o;\n}, ot = (r, t, e) => {\n if (r instanceof $) {\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 (B.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}, mn = (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], u = t[a];\n ot(\n l,\n (h, c) => {\n var f, d;\n (f = o[c.y])[d = c.x] && (f[d] = _i(h, u));\n },\n e\n );\n }\n return o;\n}, Q = (r) => (r == null ? void 0 : r.__gsType) === \"Sheet\", gn = {\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}, Ei = (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 (x.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 (Mt(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 (b.is(r))\n return !0;\n break;\n case \"matrix\":\n if (at(r))\n return !0;\n break;\n case \"reference\":\n if (Q(r))\n return !0;\n break;\n }\n return !1;\n}, at = (r) => Q(r) || B.is(r) || Array.isArray(r) && Array.isArray(r[0]), Ai = (r, t) => {\n var i;\n if (!at(r))\n return r;\n if (Q(r))\n return nt({ value: r, raise: !1, at: t });\n const e = B.is(r) ? r.matrix : r;\n return (i = e == null ? void 0 : e[0]) == null ? void 0 : i[0];\n}, Ne = (r) => {\n if (Q(r))\n return !r.hasSingleCell;\n if (B.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}, Fe = (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}, Yt = class Yt {\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 (Q(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 (B.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 return this.autoSpilling ? new B(this.main(...t)) : 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 x(\"#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 x(\"#N/A\", `Too few arguments: expected at least ${i}, got ${t.length}.`);\n if (!n && t.length > s.length)\n throw new x(\"#N/A\", `Too many arguments: expected at most ${s.length}, got ${t.length}.`);\n const o = Fe(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 u = t[a];\n if (!(!l.acceptedTypes || l.acceptedTypes.length === 0)) {\n if (Ne(u)) {\n if (!l.takesMatrix)\n continue;\n } else at(u) && (l.takesMatrix || (u = Ai(u, this.at)));\n if (ge(u) && (u = parseFloat(u.slice(0, -1)) / 100), !Ei(u, l))\n throw new x(\n \"#VALUE!\",\n `Argument \"${l.name}\" (position ${a + 1}) expected ${l.acceptedTypes.join(\" | \")}, got ${typeof u}.`\n );\n e[a] = u;\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 B.is(t) ? t.matrix : Q(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 (Q(t)) {\n const { rows: n, cols: o } = t.shape;\n return n === 1 && o === 1 ? t.strip({}) : t;\n }\n return B.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 (Rt(this.args, this.at))\n return Gt();\n if (this.args = this.validate(this.args), this.isAsync) {\n const e = yi(this.constructor.name, this.args, this.hashPrecision), s = wi(this.sheet, this.at, e, this.useInflight);\n if (s !== ee)\n return s;\n const i = this._main(...this.args);\n return xi(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 = Fe(this.defs, this.args.length), e = this.args.map((u, h) => {\n var f;\n const c = t[h];\n return !((f = this.defs[c]) != null && f.takesMatrix);\n }), s = this.args.map((u, h) => e[h] && Ne(u) ? this.toMatrix(u) : null);\n if (s.every((u) => u === null))\n return;\n const i = this.args.map((u, h) => s[h] !== null ? u : this.toScalar(u));\n let n = 1, o = 1;\n for (const u of s)\n u && (n = Math.max(n, u.length), o = Math.max(\n o,\n u.reduce((h, c) => Math.max(h, c.length), 0)\n ));\n const a = this.args, l = [];\n for (let u = 0; u < n; u++) {\n const h = [];\n for (let c = 0; c < o; c++) {\n const f = i.map((d, p) => {\n var g;\n const m = s[p];\n return m ? ((g = m == null ? void 0 : m[u]) == null ? void 0 : g[c]) ?? null : d;\n });\n try {\n if (mi(f))\n h.push(Gt());\n else {\n const d = this.validate(f);\n Rt(d, this.at) ? h.push(Gt()) : h.push(this._main(...d));\n }\n } catch (d) {\n h.push(d);\n }\n }\n l.push(h);\n }\n return this.args = a, l;\n }\n};\nYt.__name = \"\", Yt.isAsync = !1;\nlet E = Yt;\nconst we = class we extends E {\n constructor() {\n super(...arguments), this.isAsync = !0;\n }\n};\nwe.isAsync = !0;\nlet De = we;\nconst Ci = `Returns the sum of two numbers.\nThis is the same as the '+' operator.`;\nclass Ii extends E {\n constructor() {\n super(...arguments), this.example = \"ADD(2, 3)\", this.description = Ci, 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 && b.is(e))\n return b.ensure(e).add(t);\n if (b.is(t) && e instanceof Date)\n return b.ensure(t).add(e);\n if (t instanceof Date && typeof e == \"number\")\n return H(t).add(e * Zt, \"second\").toDate();\n if (typeof t == \"number\" && e instanceof Date)\n return H(e).add(t * Zt, \"second\").toDate();\n try {\n return F(t, { alternative: 0 }) + F(e, { alternative: 0 });\n } catch {\n throw new x(\"#VALUE!\", \"Mismatched types for augend or addend.\");\n }\n }\n}\nconst Ti = `Returns the difference of two numbers.\nThis is the same as the '-' operator.`;\nclass Mi extends E {\n constructor() {\n super(...arguments), this.example = \"MINUS(8, 3)\", this.description = Ti, 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 b.fromDates(t, e);\n if (t instanceof Date && b.is(e))\n return b.ensure(e).sub(t);\n if (b.is(t) && e instanceof Date)\n return b.ensure(t).sub(e);\n if (t instanceof Date && typeof e == \"number\")\n return H(t).subtract(e * Zt, \"second\").toDate();\n try {\n return F(t, { alternative: 0 }) - F(e, { alternative: 0 });\n } catch {\n throw new x(\"#VALUE!\", \"Mismatched types for minuend or subtrahend.\");\n }\n }\n}\nconst Oi = `Returns the product of two numbers.\nThis is the same as the '*' operator.`;\nclass Ni extends E {\n constructor() {\n super(...arguments), this.example = \"MULTIPLY(6, 7)\", this.description = Oi, 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 F(t) * F(e);\n }\n}\nconst Fi = `Returns the result of dividing one number by another.\nThis is the same as the '/' operator.`;\nclass Di extends E {\n constructor() {\n super(...arguments), this.example = \"DIVIDE(4, 2)\", this.description = Fi, 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) => F(s));\n if (e[1] === 0)\n throw new x(\"#DIV/0!\", \"The second argument must be non-zero.\");\n return e;\n }\n main(t, e) {\n return t / e;\n }\n}\nconst vi = \"Returns the sum of a series of numbers or cells.\";\nclass ki extends E {\n constructor() {\n super(...arguments), this.example = \"SUM(A2:A100, 101)\", this.description = vi, 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 ot(\n s,\n (i) => {\n e += F(i, { ignore: !0 });\n },\n this.at\n );\n }), e;\n }\n}\nconst Pi = `Returns the concatenation of two values.\nThis is the same as the '&' operator.`;\nclass $i extends E {\n constructor() {\n super(...arguments), this.example = 'CONCAT(\"Hello\", \"World\")', this.description = Pi, 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 X(t) + X(e);\n }\n}\nconst Li = `Returns TRUE if the two specified values are equal, FALSE if they are not.\nThis is the same as the '=' operator.`;\nclass Hi extends E {\n constructor() {\n super(...arguments), this.example = \"EQ(6, 7)\", this.description = Li, 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 Yi = `Returns TRUE if the two specified values are not equal, FALSE if they are.\nThis is the same as the '<>' operator.`;\nclass Bi extends E {\n constructor() {\n super(...arguments), this.example = \"NE(6, 7)\", this.description = Yi, 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 bi(t, e);\n }\n}\nconst Ui = `Returns TRUE if the first argument is truly greater than the second, FALSE otherwise.\nThis is the same as the '>' operator.`;\nclass zi extends E {\n constructor() {\n super(...arguments), this.example = \"GT(5, 3)\", this.description = Ui, 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 Vi = `Returns TRUE if the first argument is greater than the second, FALSE otherwise.\nThis is the same as the '>=' operator.`;\nclass Wi extends E {\n constructor() {\n super(...arguments), this.example = \"GTE(5, 3)\", this.description = Vi, 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 pe(t, e);\n }\n}\nconst Xi = `Returns TRUE if the first argument is truely less than the second argument, FALSE otherwise.\nThis is the same as the '<' operator.`;\nclass ji extends E {\n constructor() {\n super(...arguments), this.example = \"LT(3, 6)\", this.description = Xi, 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 ss(t, e);\n }\n}\nconst Gi = `Returns TRUE if the first argument is less than the second argument, FALSE otherwise.\nThis is the same as the '<=' operator.`;\nclass Zi extends E {\n constructor() {\n super(...arguments), this.example = \"LTE(3, 6)\", this.description = Gi, 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 is(t, e);\n }\n}\nconst qi = \"Returns a serial value corresponding to the current date and time.\";\nclass Ki extends E {\n constructor() {\n super(...arguments), this.example = \"NOW()\", this.description = qi, this.defs = [], this.category = \"time\";\n }\n main() {\n return /* @__PURE__ */ new Date();\n }\n}\nconst Ji = `Returns TRUE if all arguments are logically TRUE.\nReturns FALSE if any argument is logically FALSE.`;\nclass Qi extends E {\n constructor() {\n super(...arguments), this.example = \"AND(A1=1, A2=2)\", this.description = Ji, 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) => Ot(e)).reduce((e, s) => e && s);\n }\n}\nconst tr = `Returns TRUE if any argument is logically true.\nReturns FALSE if all arguments are logically false.`;\nclass er extends E {\n constructor() {\n super(...arguments), this.example = \"OR(A1=1, A2=2)\", this.description = tr, 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) => Ot(e)).reduce((e, s) => e || s);\n }\n}\nconst sr = `If the logical expression is TRUE, the second argument is returned.\nIf FALSE, the third argument is returned.`;\nclass ir extends E {\n constructor() {\n super(...arguments), this.example = 'IF(A2 = \"Human\", \"Hello\", \"World\")', this.description = sr, 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 Ot(t) ? e : s;\n }\n}\nconst rr = \"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 nr extends E {\n constructor() {\n super(...arguments), this.example = 'IFERROR(A1, \"Error in cell A1\")', this.description = rr, 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 x.is(t) || t instanceof Error ? e : t;\n }\n}\nconst or = `Returns the inverse of the Boolean; if TRUE, NOT returns FALSE.\nIf FALSE, NOT returns TRUE.`;\nclass ar extends E {\n constructor() {\n super(...arguments), this.example = \"NOT(TRUE)\", this.description = or, 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 !Ot(t);\n }\n}\nconst cr = \"Returns the count of a series of numbers or cells.\";\nclass lr extends E {\n constructor() {\n super(...arguments), this.example = \"COUNT(A2:A100,B2:B100,4,26)\", this.description = cr, 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 at(s) ? ot(\n s,\n (i) => {\n Mt(i) && e++;\n },\n this.at\n ) : (F(s), e++);\n }), e;\n }\n}\nconst hr = \"Returns the absolute value of a number\";\nclass ur extends E {\n constructor() {\n super(...arguments), this.example = \"ABS(-2)\", this.description = hr, this.defs = [{ name: \"value\", description: \"target number\", acceptedTypes: [\"number\"] }], this.category = \"math\";\n }\n main(t) {\n return Math.abs(F(t));\n }\n}\nconst dr = \"Returns a number multiplied by an exponent.\";\nclass ve extends E {\n constructor() {\n super(...arguments), this.example = \"POWER(4,0.5)\", this.description = dr, 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(F(t), F(e));\n }\n}\nconst fr = \"Returns the number of values in the data set.\";\nclass pr extends E {\n constructor() {\n super(...arguments), this.example = \"COUNTA(A2:A100,B2:B100,4,26)\", this.description = fr, 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 ot(\n s,\n (i) => {\n i != null && i !== \"\" && e++;\n },\n this.at\n );\n }), e;\n }\n}\nconst mr = \"Returns the average of a series of numbers or cells.\";\nclass gr extends E {\n constructor() {\n super(...arguments), this.example = \"AVERAGE(A2:A100, 101)\", this.description = mr, 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 (at(i))\n ot(\n i,\n (n) => {\n Mt(n) && (e += F(n), s++);\n },\n this.at\n );\n else {\n const n = F(i);\n e += n, s++;\n }\n }), s === 0)\n throw new x(\"#DIV/0!\", \"Evaluation of function AVERAGE caused a divide by zero error.\");\n return e / s;\n }\n}\nconst yr = \"Returns the max in a series of numbers or cells.\";\nclass wr extends E {\n constructor() {\n super(...arguments), this.example = \"MAX(A2:A100, 101)\", this.description = yr, 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 (at(i))\n ot(\n i,\n (n) => {\n if (Mt(n)) {\n const o = F(n);\n o > e && (e = o), s = !0;\n }\n },\n this.at\n );\n else {\n const n = F(i);\n n > e && (e = n), s = !0;\n }\n }), s ? e : 0;\n }\n}\nconst xr = \"Returns the min in a series of numbers or cells.\";\nclass br extends E {\n constructor() {\n super(...arguments), this.example = \"MIN(A2:A100, 101)\", this.description = xr, 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 (at(i))\n ot(\n i,\n (n) => {\n if (Mt(n)) {\n const o = F(n);\n o < e && (e = o), s = !0;\n }\n },\n this.at\n );\n else {\n const n = F(i);\n n < e && (e = n), s = !0;\n }\n }), s ? e : 0;\n }\n}\nconst Sr = \"Returns the length of a string.\";\nclass Rr extends E {\n constructor() {\n super(...arguments), this.example = \"LEN(A2)\", this.description = Sr, 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 X(t).length;\n }\n}\nconst _r = \"Returns a number with positive and negative values reversed.\";\nclass Er extends E {\n constructor() {\n super(...arguments), this.example = \"UMINUS(4)\", this.description = _r, this.defs = [\n { name: \"value1\", description: \"A number that will be subtracted.\", acceptedTypes: [\"number\"] }\n ], this.category = \"math\";\n }\n main(t) {\n return -F(t);\n }\n}\nconst Ar = `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 Cr extends E {\n constructor() {\n super(...arguments), this.autoSpilling = !0, this.example = \"ARRAYFORMULA(A1:A10 * B1:B10)\", this.description = Ar, 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 B.is(t) ? t : t instanceof $ ? t._toValueMatrix() : Array.isArray(t) ? t : [[t]];\n }\n}\nconst rs = {\n // Arithmetic & Comparison\n add: Ii,\n minus: Mi,\n uminus: Er,\n multiply: Ni,\n divide: Di,\n pow: ve,\n power: ve,\n concat: $i,\n eq: Hi,\n ne: Bi,\n gt: zi,\n gte: Wi,\n lt: ji,\n lte: Zi,\n // Logical\n if: ir,\n iferror: nr,\n and: Qi,\n or: er,\n not: ar,\n arrayformula: Cr,\n // Statistics & Aggregation\n sum: ki,\n max: wr,\n min: br,\n average: gr,\n count: lr,\n counta: pr,\n // Text\n len: Rr,\n // Math\n abs: ur,\n // Time\n now: Ki\n}, ke = /* @__PURE__ */ new Map(), yn = (r = rs) => {\n let t = ke.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 }), ke.set(r, t)), t;\n};\nclass Ir {\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: u,\n onSelect: h,\n onKeyUp: c,\n onInit: f\n } = {}) {\n this.sheetHead = 0, this.cellHead = 0, this.data = {}, this.systems = {}, this.sheetIdsByName = {}, this.contextsBySheetId = {}, this.choosingSheetId = 0, this.choosingAddress = \"\", this.editingSheetId = 0, this.editingAddress = \"\", this.paletteBySheetName = {}, this.lastFocused = null, this.solvedCaches = /* @__PURE__ */ new Map(), this.lastSpilledTargetIds = /* @__PURE__ */ new Set(), this.asyncFormulaCells = /* @__PURE__ */ new Set(), this.asyncPending = /* @__PURE__ */ new Map(), this.copyingSheetId = 0, this.copyingZone = gs, this.cutting = !1, this.histories = [], this.historyIndex = -1, this.historyLimit = ps, this._componentSheetIds = /* @__PURE__ */ new Map(), this.ready = !1, this.functions = {}, this.policies = {}, this.transmit = (d) => {\n }, this.updateSheet = (d) => ({ type: 0, value: d }), t != null && (this.historyLimit = t), this.functions = {\n ...rs,\n ...e\n };\n for (const d in this.functions) {\n const p = this.functions[d];\n p.__name = d;\n }\n this.policies = s, this.onSave = i, this.onChange = n, this.onRemoveRows = o, this.onRemoveCols = a, this.onInsertRows = l, this.onInsertCols = u, this.onSelect = h, this.onKeyUp = c, this.onInit = f;\n }\n boot() {\n if (this.ready || Object.keys(this.contextsBySheetId).length === 0)\n return;\n const t = Object.keys(this.contextsBySheetId), e = [];\n for (let s = 0; s < t.length; s++) {\n const i = t[s], n = this.contextsBySheetId[i], o = n.store.sheetReactive.current;\n if (!o || o.status === 0)\n return;\n e.push(n);\n }\n for (let s = 0; s < e.length; s++) {\n const { store: i, dispatch: n } = e[s], o = i.sheetReactive.current;\n o && (o.resolveFormulas(), n(this.updateSheet(o)));\n }\n this.ready = !0;\n }\n}\nconst ye = (r = {}) => new Ir(r), wn = ye, xn = (r = {}) => ({ registry: ye(r) }), Tr = (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}), bn = Tr(\",\"), Sn = {\n renderNumber({ value: r }) {\n return r == null || isNaN(r) ? \"0%\" : `${parseFloat((r * 100).toPrecision(this.decimalPrecision))}%`;\n }\n}, Rn = (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}, _n = [\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], z = \"dashed 1px #888888\", Pe = {\n left: [\"horizontal\", -1],\n right: [\"horizontal\", 1],\n up: [\"vertical\", -1],\n down: [\"vertical\", 1],\n none: [\"none\", 0]\n};\nclass En {\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 = Is(Rs(n), i), this.direction = this.suggestDirection(e), this.dst = this.getDestinationArea(e), this.sheet = o;\n }\n get applied() {\n var f, d;\n const [t, e] = Pe[this.direction], { top: s, left: i, bottom: n, right: o } = this.src, a = se(n - s + 1, o - i + 1);\n for (let p = s; p <= n; p++)\n for (let m = i; m <= o; m++)\n a[p - s][m - i] = this.sheet.getCell({ y: p, x: m }, { resolution: \"SYSTEM\" }) ?? null;\n const l = Kt(this.src), u = Kt(this.dst), h = {};\n if (t === \"horizontal\")\n for (let p = 0; p < u.rows; p++) {\n const m = this.getChangePatterns(a[p], \"\");\n for (let g = 0; g < u.cols; g++) {\n const y = (f = a[p % l.rows]) == null ? void 0 : f[g % l.cols], R = e > 0 ? this.dst.left + g : this.dst.right - g, A = e > 0 ? g % l.cols : (l.cols - 1 - g % l.cols) % l.cols, w = { y: this.dst.top + p, x: R }, S = this.sheet.getId(w), _ = m[A].next().value, M = (y == null ? void 0 : y.formulaEnabled) ?? !0 ? this.sheet.processFormula(_, {\n dependency: S\n }) : _;\n h[D(w)] = {\n ...y,\n value: M\n };\n }\n }\n else if (t === \"vertical\")\n for (let p = 0; p < u.cols; p++) {\n const m = this.getChangePatterns(\n a.map((g) => g[p]),\n \"\"\n );\n for (let g = 0; g < u.rows; g++) {\n const y = (d = a[g % l.rows]) == null ? void 0 : d[p % l.cols], R = e > 0 ? this.dst.top + g : this.dst.bottom - g, A = e > 0 ? g % l.rows : (l.rows - 1 - g % l.rows) % l.rows, w = m[A].next().value;\n h[D({ y: R, x: this.dst.left + p })] = { ...y, value: w };\n }\n }\n return this.sheet.update({\n diff: h,\n operator: \"USER\",\n undoReflection: {\n sheetId: this.sheet.id,\n selectingZone: Ee(this.src)\n },\n redoReflection: {\n sheetId: this.sheet.id,\n selectingZone: Ee(this.dst)\n }\n });\n }\n get wholeArea() {\n return Ss(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 = z), a === s - 1 && (i.borderTop = z)), this.dst.left === e && n <= s && s <= a && (i.borderLeft = z);\n break;\n }\n case \"right\": {\n this.dst.left <= e && e <= this.dst.right && (n === s && (i.borderTop = z), a === s - 1 && (i.borderTop = z)), this.dst.right === e - 1 && n <= s && s <= a && (i.borderLeft = z);\n break;\n }\n case \"up\": {\n this.dst.top <= s && s <= this.dst.bottom && (o === e && (i.borderLeft = z), l === e - 1 && (i.borderLeft = z)), this.dst.top === s && o <= e && e <= l && (i.borderTop = z);\n break;\n }\n case \"down\": {\n this.dst.top <= s && s <= this.dst.bottom && (o === e && (i.borderLeft = z), l === e - 1 && (i.borderLeft = z)), this.dst.bottom === s - 1 && o <= e && e <= l && (i.borderTop = z);\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 = Mr(t), [n, o] = Pe[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(st(a.first));\n return;\n }\n case \"formula\": {\n const u = a.first, h = this.sheet;\n function* c() {\n let f = 0;\n const d = t.length * o;\n for (; ; )\n f += d, yield h.processFormula(u, {\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(st(a.first), ...a.nexts.map((c) => st(c)));\n return;\n }\n function* u() {\n let c = l;\n const f = a.numericDelta * o;\n for (; ; )\n c += f, yield c;\n }\n const h = u();\n s.push(h, ...a.nexts.map(() => h));\n return;\n }\n case \"date\": {\n const u = (f) => o > 0 ? a.time.add(f) : a.time.sub(f);\n if (!a.equidistant) {\n s.push(st(a.first), ...a.nexts.map((f) => st(f)));\n return;\n }\n function* h() {\n let f = l;\n for (; ; )\n f = u(f), yield new Date(f);\n }\n const c = h();\n s.push(c, ...a.nexts.map(() => c));\n return;\n }\n case \"string+number\": {\n if (!a.equidistant) {\n s.push(st(a.first), ...a.nexts.map((c) => st(c)));\n return;\n }\n function* u() {\n const { prefix: c } = it(a.first), { number: f } = it(l);\n let d = f;\n const p = a.numericDelta * o;\n for (; ; )\n d += p, yield `${c}${Math.abs(d)}`;\n }\n const h = u();\n s.push(h, ...a.nexts.map(() => h));\n return;\n }\n }\n }), s;\n }\n}\nfunction* st(r) {\n for (; ; )\n yield r;\n}\nconst ns = new RegExp(\"(.+?)(\\\\d+)$\"), it = (r) => {\n const t = r.match(ns);\n if (t) {\n const [, e, s] = t;\n return { prefix: e, number: Number(s) };\n }\n return { prefix: \"\", number: 0 };\n};\nclass Ht {\n constructor(t) {\n this.time = b.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(ns) ? \"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 Ht(t);\n if (this.nexts.length === 0)\n switch (e) {\n case \"date\": {\n this.time = b.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 } = it(this.first), { prefix: n, number: o } = it(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 || H(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 } = it(this.first);\n for (let i = 0; i < e.nexts.length; i++) {\n const n = e.nexts[i], { prefix: o, number: a } = it(n);\n if (s !== o) {\n const l = this.nexts.splice(i, this.nexts.length);\n e = new Ht(l.splice(0, 1)[0]), l.forEach(e.add.bind(e)), t.push(e, ...e.subdivide());\n break;\n } else {\n const { number: l } = it(e.first);\n a !== l + (i + 1) * e.numericDelta && (e.equidistant = !1);\n }\n }\n break;\n }\n }\n return t;\n }\n}\nfunction Mr(r) {\n var s, i;\n let t = new Ht((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 En as Autofill,\n E as BaseFunction,\n De as BaseFunctionAsync,\n _n as COLOR_PALETTE,\n Dt as DEFAULT_COL_KEY,\n J as DEFAULT_HEIGHT,\n ps as DEFAULT_HISTORY_LIMIT,\n vt as DEFAULT_ROW_KEY,\n jt as DEFAULT_WIDTH,\n x as FormulaError,\n nn as FormulaParser,\n Re as HEADER_HEIGHT,\n _e as HEADER_WIDTH,\n $t as Lexer,\n Pr as MIN_HEIGHT,\n kr as MIN_WIDTH,\n $r as OVERSCAN_X,\n Lr as OVERSCAN_Y,\n k as Pending,\n Sn as PercentagePolicyMixin,\n de as Policy,\n Be as RangeEntity,\n Ye as RefEntity,\n Ir as Registry,\n Dr as SHEET_HEIGHT,\n vr as SHEET_WIDTH,\n $ as Sheet,\n B as Spilling,\n bn as ThousandSeparatorPolicyMixin,\n b as Time,\n ie as ValueEntity,\n N as a2p,\n Zr as aa2oa,\n tn as addressesToAreas,\n en as addressesToCols,\n sn as addressesToRows,\n Wr as among,\n Ae as areaDiff,\n Kt as areaShape,\n zr as areaToRange,\n Ee as areaToZone,\n Vr as between,\n Qr as binarySearch,\n Es as buildInitialCells,\n qr as buildInitialCellsFromOrigin,\n _t as c2x,\n Yr as ch,\n _i as check,\n Is as complementSelectingArea,\n Ss as concatAreas,\n gn as conditionArg,\n wn as createBinding,\n xn as createBook,\n mn as createBooleanMask,\n se as createMatrix,\n ye as createRegistry,\n ot as eachMatrix,\n Ot as ensureBoolean,\n Si as ensureDate,\n F as ensureNumber,\n X as ensureString,\n yn as getFunctionHelps,\n Rn as getLabel,\n Cs as getMaxSizesFromCells,\n Le as grantAddressAbsolute,\n Mt as isNumeric,\n ge as isPercentage,\n rn as isZoneNotSelected,\n jr as makeSequence,\n Nt as matrixShape,\n Gr as oa2aa,\n pn as operations,\n D as p2a,\n bs as r2y,\n Kr as range,\n Jr as restrictZone,\n Hr as rh,\n zs as splitRef,\n Br as stripAddressAbsolute,\n Ai as stripMatrix,\n on as stripSheetName,\n Ur as superposeArea,\n fn as toCellCols,\n hn as toCellMatrix,\n un as toCellObject,\n dn as toCellRows,\n Ws as toSheetPrefix,\n ln as toValueCols,\n Vs as toValueMatrix,\n an as toValueObject,\n cn as toValueRows,\n W as x2c,\n Et as y2r,\n Xr as zoneShape,\n Rs as zoneToArea\n};\n//# sourceMappingURL=index.js.map\n","import { Lexer as F, splitRef as A, a2p as I, toSheetPrefix as M, grantAddressAbsolute as B, DEFAULT_WIDTH as z, DEFAULT_HEIGHT as S, OVERSCAN_X as T, OVERSCAN_Y as R, range as E, binarySearch as P } from \"@gridsheet/engine\";\nexport * from \"@gridsheet/engine\";\nconst j = (e) => {\n e == null || e.focus({ preventScroll: !0 });\n}, H = () => typeof navigator < \"u\" && /^((?!chrome|android).)*safari/i.test(navigator.userAgent), $ = (e) => {\n if (!H())\n return () => {\n };\n const o = (t) => {\n const { scrollTop: n, scrollHeight: l, clientHeight: g, scrollLeft: c, scrollWidth: d, clientWidth: f } = e, u = t.deltaY < 0 && n <= 0, b = t.deltaY > 0 && n + g >= l, m = t.deltaX < 0 && c <= 0, x = t.deltaX > 0 && c + f >= d;\n (u || b || m || x) && (t.preventDefault(), window.scrollBy({ top: t.deltaY, left: t.deltaX, behavior: \"auto\" }));\n };\n let i = 0, a = 0;\n const r = (t) => {\n t.touches.length === 1 && (i = t.touches[0].clientX, a = t.touches[0].clientY);\n }, s = (t) => {\n if (t.touches.length !== 1)\n return;\n const { scrollTop: n, scrollHeight: l, clientHeight: g, scrollLeft: c, scrollWidth: d, clientWidth: f } = e, u = t.touches[0].clientX - i, b = t.touches[0].clientY - a, m = b > 0 && n <= 0, x = b < 0 && n + g >= l, y = u > 0 && c <= 0, p = u < 0 && c + f >= d;\n (m || x || y || p) && t.preventDefault();\n };\n return e.addEventListener(\"wheel\", o, { passive: !1 }), e.addEventListener(\"touchstart\", r, { passive: !0 }), e.addEventListener(\"touchmove\", s, { passive: !1 }), () => {\n e.removeEventListener(\"wheel\", o), e.removeEventListener(\"touchstart\", r), e.removeEventListener(\"touchmove\", s);\n };\n}, v = (e, o) => {\n var a;\n j(e), !((a = document.execCommand) != null && a.call(document, \"insertText\", !1, o)) && e.setRangeText(o, e.selectionStart, e.selectionEnd, \"end\");\n}, Y = ({ input: e, ref: o, dryRun: i = !1 }) => {\n var n;\n if (!((n = e == null ? void 0 : e.value) != null && n.startsWith(\"=\")) || e.selectionStart === 0)\n return !1;\n const a = new F(e.value.substring(1));\n a.tokenize();\n const [r, s] = a.getTokenIndexByCharPosition(e.selectionStart - 1);\n let t = a.tokens[r];\n if ((t == null ? void 0 : t.type) === \"SPACE\" && (t = a.tokens[r - 1]), t == null || t.type === \"OPEN\" || t.type === \"COMMA\" || t.type === \"INFIX_OPERATOR\" || t.type === \"PREFIX_OPERATOR\")\n i || v(e, o);\n else if (t.type === \"REF\" || t.type === \"RANGE\") {\n if (!i) {\n const { sheetName: l, addresses: g } = A(o), { addresses: c } = A(t.entity), d = c.map((b) => I(b));\n c.length === 2 && g.length === 1 && g.push(g[0]), o = M(l) + g.map((b, m) => {\n var x, y;\n return B(b, !!((x = d[m]) != null && x.absX), !!((y = d[m]) != null && y.absY));\n }).join(\":\");\n const [f, u] = a.getTokenPositionRange(r + 1, 1);\n e.setSelectionRange(f, u), v(e, o);\n }\n } else\n return !1;\n return !0;\n}, X = (e) => Y({ input: e, ref: \"\", dryRun: !0 }), N = (e) => {\n e != null && (e.style.width = `${e.scrollWidth}px`, e.style.height = `${e.scrollHeight}px`);\n}, _ = (e, o, i) => {\n var t, n;\n const a = e == null ? void 0 : e.style;\n if (a == null)\n return;\n const r = ((t = o.getCell({ x: i.x, y: 0 }, { resolution: \"SYSTEM\" })) == null ? void 0 : t.width) ?? z, s = ((n = o.getCell(i, { resolution: \"SYSTEM\" })) == null ? void 0 : n.height) ?? S;\n a.width = `${r}px`, a.height = `${s}px`;\n}, U = (e) => typeof window > \"u\" || e == null ? !1 : document.activeElement === e, V = (e, o) => {\n const i = e.currentTarget;\n if (!o.startsWith(\"=\"))\n return !1;\n const { selectionStart: r, selectionEnd: s } = i;\n if (e.key === '\"') {\n if (r !== s) {\n e.preventDefault();\n const g = o.slice(r, s);\n return v(i, `\"${g}\"`), requestAnimationFrame(() => {\n i.setSelectionRange(r + 1, s + 1);\n }), !0;\n }\n const t = o[r], n = o.slice(1, r);\n let l = 0;\n for (let g = 0; g < n.length; g++)\n n[g] === '\"' && (g + 1 < n.length && n[g + 1] === '\"' ? g++ : l++);\n return l % 2 === 1 && t === '\"' ? (e.preventDefault(), i.setSelectionRange(r + 1, r + 1), !0) : (e.preventDefault(), v(i, '\"\"'), requestAnimationFrame(() => {\n i.setSelectionRange(r + 1, r + 1);\n }), !0);\n }\n return e.key === \"Backspace\" && r === s && r > 0 && o[r - 1] === '\"' && o[r] === '\"' ? (e.preventDefault(), i.setRangeText(\"\", r - 1, r + 1, \"end\"), i.dispatchEvent(new Event(\"input\", { bubbles: !0 })), !0) : !1;\n}, O = (e, { y: o, x: i }) => {\n var g;\n const a = e.getCell({ y: 0, x: i }, { resolution: \"SYSTEM\" }), r = e.getCell({ y: o, x: 0 }, { resolution: \"SYSTEM\" }), s = ((g = e.getSystem({ y: 0, x: i })) == null ? void 0 : g.offsetLeft) ?? 0, t = e.getOffsetTop(o), n = (a == null ? void 0 : a.width) || z, l = r != null && r.filtered ? 0 : (r == null ? void 0 : r.height) || S;\n return {\n top: t,\n left: s,\n bottom: t + l,\n right: s + n,\n width: n,\n height: l\n };\n}, L = (e) => {\n const o = e.scrollTop, i = e.scrollLeft, a = e.clientHeight, r = e.clientWidth, s = o + a, t = i + r;\n return { top: o, left: i, bottom: s, right: t, height: a, width: r };\n}, q = (e, o) => {\n var x, y;\n if (o == null)\n return null;\n let i = 0, a = 0, r = e.numRows, s = e.numCols;\n const { top: t, left: n, bottom: l, right: g } = L(o);\n let c = 0, d = 0;\n for (let p = 1; p <= e.numCols; p++) {\n const w = ((x = e.getCell({ y: 0, x: p }, { resolution: \"SYSTEM\" })) == null ? void 0 : x.width) || z;\n if (c += w, a === 0 && c > n && (a = Math.max(p - T, 1)), c > g) {\n s = Math.min(p + T, e.numCols);\n break;\n }\n }\n for (let p = 1; p <= e.numRows; p++) {\n if (e.isRowFiltered(p))\n continue;\n const w = ((y = e.getCell({ y: p, x: 0 }, { resolution: \"SYSTEM\" })) == null ? void 0 : y.height) || S;\n if (d += w, i === 0 && d > t && (i = Math.max(p - R, 1)), d > l) {\n r = Math.min(p + R, e.numRows);\n break;\n }\n }\n const f = i === 0 ? [] : E(i, r).filter((p) => !e.isRowFiltered(p)), u = E(a, s), b = e.getRectSize({\n top: 1,\n left: 1,\n bottom: i,\n right: a\n }), m = e.getRectSize({\n top: r,\n left: s,\n bottom: e.numRows,\n right: e.numCols\n });\n return {\n ys: f,\n xs: u,\n adjuster: {\n top: b.height,\n left: b.width,\n bottom: m.height,\n right: m.width\n }\n };\n}, G = (e, o, i, a = \"auto\") => {\n if (o == null)\n return;\n const r = L(o), s = O(e, i), t = s.top - e.headerHeight, n = s.left - e.headerWidth, l = s.bottom - r.height + 1, g = s.right - r.width + 1, c = t < r.top, d = n < r.left, f = s.bottom > r.bottom, u = s.right > r.right;\n d ? c ? o.scrollTo({ left: n, top: t, behavior: a }) : f ? o.scrollTo({ left: n, top: l, behavior: a }) : o.scrollTo({ left: n, top: r.top, behavior: a }) : u ? c ? o.scrollTo({ left: g, top: t, behavior: a }) : f ? o.scrollTo({ left: g, top: l, behavior: a }) : o.scrollTo({ left: g, top: r.top, behavior: a }) : c ? o.scrollTo({ left: r.left, top: t, behavior: a }) : f && o.scrollTo({ left: r.left, top: l, behavior: a });\n}, k = (e, o, i, a) => {\n var s;\n const r = P(\n 0,\n e.length - 1,\n (t) => o(e[t].getBoundingClientRect()) < i,\n !1\n );\n return parseInt(((s = e[r]) == null ? void 0 : s.dataset[a]) ?? \"1\");\n}, Q = (e) => {\n const {\n top: o,\n left: i,\n bottom: a,\n right: r\n } = e.getBoundingClientRect(), s = Array.from(e.querySelectorAll(\".gs-th-left\")), t = Array.from(e.querySelectorAll(\".gs-th-top\")), n = k(s, (d) => d.top, o, \"y\"), l = k(s, (d) => d.bottom, a + 1, \"y\"), g = k(t, (d) => d.left, i, \"x\"), c = k(t, (d) => d.right, r + 1, \"x\");\n return { top: n, left: g, bottom: l, right: c };\n}, h = 8, J = (e, o = 260, i = h) => e.right - o >= i ? { x: e.right, y: e.bottom, hAlign: \"right\" } : { x: Math.max(e.left, i), y: e.bottom, hAlign: \"left\" }, K = (e, o, i = h) => {\n const r = e + o - (window.innerWidth - i);\n return r > 0 ? e - r : e;\n}, Z = (e, o = h) => {\n if (e.style.left = `calc(100% + ${o}px)`, e.style.right = \"auto\", e.getBoundingClientRect().right > window.innerWidth - h) {\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}, ee = (e) => {\n const o = e.getBoundingClientRect(), i = window.innerWidth, a = window.innerHeight;\n o.right > i - h && (e.style.left = `${parseFloat(e.style.left || \"0\") - (o.right - (i - h))}px`), o.bottom > a - h && (e.style.top = `${parseFloat(e.style.top || \"0\") - (o.bottom - (a - h))}px`);\n}, oe = (e) => e === \"right\" ? \"translateX(-100%)\" : \"none\", C = 1786834463, W = `.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-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-menu .gs-row-fixed-toggle{display:flex;align-items:center;gap:6px}.gs-row-menu .gs-row-fixed-check{font-size:12px;width:14px;text-align:center;color:color-mix(in srgb,var(--gs-accent,#2563eb) 12%,transparent)}.gs-row-menu .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-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-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;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}@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}`, re = () => {\n if (typeof window > \"u\" || document.querySelector(`style.gs-styling[data-modified-at='${C}']`))\n return;\n const o = document.createElement(\"style\");\n document.head.appendChild(o), o.setAttribute(\"class\", \"gs-styling\"), o.setAttribute(\"data-modified-at\", `${C}`), o.innerText = W;\n};\nexport {\n J as calcBelowPosition,\n Z as calcSideStyle,\n K as clampLeft,\n ee as clampPopup,\n re as embedStyle,\n N as expandInput,\n j as focus,\n Q as getAreaInTabular,\n O as getCellRectPositions,\n oe as hAlignTransform,\n V as handleFormulaQuoteAutoClose,\n Y as insertRef,\n v as insertTextAtCursor,\n U as isFocus,\n X as isRefInsertable,\n $ as preventSafariBounce,\n _ as resetInput,\n G as smartScroll,\n q 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} 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 { operations as prevention } from '@gridsheet/web';\nimport { Autofill } from '@gridsheet/web';\n\nconst resetZone: ZoneType = { startY: -1, startX: -1, endY: -1, endX: -1 };\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\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\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 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 return result;\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 newSheet = dstSheet.copy({\n srcSheet,\n src: copyingArea,\n dst: selectingArea,\n onlyValue,\n operator: 'USER',\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 }\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 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 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\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};\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":["J","W","N","h","L","re","oe","O","H","k","Q","j","_","C","Y","U","G","V","q","K","v","Z","$","ee","X","Yt","we","b","x","F","A","I","M","B","z","S","T","R","E","P","x2","x2c","y2r","a2p","_a","Autofill","areaToZone","sheetRef","zoneToArea","areaDiff","nextSelectingZone","restrictZone","newSheet","matrixShape","superposeArea","p2a","prevention","nextY","nextX","DEFAULT_HEIGHT","DEFAULT_WIDTH","smartScroll","hi","createBook"],"mappings":"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"}
|