@silurus/ooxml 0.12.0 → 0.13.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.
@@ -1583,7 +1583,15 @@ function it(e, t, n, r, i, a, o, s, c, l, d, _, b, E) {
1583
1583
  q === "top" ? (e.textBaseline = "top", t = f + 2) : q === "center" ? (e.textBaseline = "middle", t = f + P / 2) : (e.textBaseline = "bottom", t = f + P - 2), e.fillText(G, Ce, t);
1584
1584
  }
1585
1585
  }
1586
- e.restore();
1586
+ e.restore(), G && t.onTextRun && t.onTextRun({
1587
+ text: G,
1588
+ x: l,
1589
+ y: f,
1590
+ width: N,
1591
+ height: P,
1592
+ row: s,
1593
+ col: a
1594
+ });
1587
1595
  }
1588
1596
  }
1589
1597
  e.restore();
@@ -1647,7 +1655,8 @@ function at(e, t, n, r, i = {}) {
1647
1655
  autoFilterCells: ne,
1648
1656
  hyperlinkMap: re,
1649
1657
  commentCells: M,
1650
- tableStyleMap: nt(t)
1658
+ tableStyleMap: nt(t),
1659
+ onTextRun: i.onTextRun
1651
1660
  }, N = u, P = m, F = N + E, I = P + ee, L = Math.max(0, s - F), R = Math.max(0, c - I);
1652
1661
  S > 0 && C > 0 && it(e, ie, 1, 1, w, T, 0, 0, N, P, N, P, E, ee), S > 0 && it(e, ie, 1, g, D, T, y, 0, F, P, F, P, L, ee), C > 0 && it(e, ie, h, 1, w, O, 0, x, N, I, N, I, E, R), it(e, ie, h, g, D, O, y, x, F, I, F, I, L, R), t.images && t.images.length > 0 && i.loadedImages && st(e, t, i.loadedImages, o, h, g, y, x, F, I, L, R), t.shapeGroups && t.shapeGroups.length > 0 && ct(e, t, o, h, g, y, x, F, I, L, R, i.loadedImages), t.charts && t.charts.length > 0 && vt(e, t, o, h, g, y, x, F, I, L, R), t.slicers && t.slicers.length > 0 && jt(e, t, o, h, g, y, x, F, I, L, R), ot(e, s, c, h, g, _, v, D, O, y, x, w, T, E, ee, u, m, o, a), S > 0 && (e.save(), e.strokeStyle = d, e.lineWidth = .5, e.beginPath(), e.moveTo(u, I + .5), e.lineTo(s, I + .5), e.stroke(), e.restore()), C > 0 && (e.save(), e.strokeStyle = d, e.lineWidth = .5, e.beginPath(), e.moveTo(F + .5, m), e.lineTo(F + .5, c), e.stroke(), e.restore());
1653
1662
  }
@@ -2110,12 +2119,22 @@ var Ft = class {
2110
2119
  currentWorksheet = null;
2111
2120
  opts;
2112
2121
  resizeObserver = null;
2122
+ anchorCell = null;
2123
+ activeCell = null;
2124
+ selectionMode = "cells";
2125
+ isSelecting = !1;
2126
+ selectionOverlay;
2127
+ keydownHandler = null;
2113
2128
  constructor(e, t = {}) {
2114
2129
  this.opts = t, this.wb = new Ft();
2115
2130
  let n = document.createElement("div");
2116
- n.style.cssText = "position:relative;width:100%;height:100%;border:1px solid #c8ccd0;background:#fff;box-sizing:border-box;font-family:sans-serif;display:flex;flex-direction:column;", this.canvasArea = document.createElement("div"), this.canvasArea.style.cssText = "position:relative;flex:1;min-height:0;overflow:hidden;", this.canvas = document.createElement("canvas"), this.canvas.style.cssText = "position:absolute;top:0;left:0;z-index:0;display:block;", this.scrollHost = document.createElement("div"), this.scrollHost.style.cssText = "position:absolute;inset:0;overflow:auto;z-index:1;background:transparent;", this.spacer = document.createElement("div"), this.spacer.style.cssText = "position:absolute;top:0;left:0;pointer-events:none;", this.scrollHost.appendChild(this.spacer), this.canvasArea.appendChild(this.canvas), this.canvasArea.appendChild(this.scrollHost), this.tabBar = document.createElement("div"), this.tabBar.style.cssText = `display:flex;align-items:flex-end;height:${It}px;flex-shrink:0;background:#f0f0f0;border-top:1px solid #c8ccd0;overflow-x:auto;overflow-y:hidden;padding:0 4px;gap:1px;scrollbar-width:none;`;
2131
+ n.style.cssText = "position:relative;width:100%;height:100%;border:1px solid #c8ccd0;background:#fff;box-sizing:border-box;font-family:sans-serif;display:flex;flex-direction:column;", this.canvasArea = document.createElement("div"), this.canvasArea.style.cssText = "position:relative;flex:1;min-height:0;overflow:hidden;", this.canvas = document.createElement("canvas"), this.canvas.style.cssText = "position:absolute;top:0;left:0;z-index:0;display:block;", this.selectionOverlay = document.createElement("div"), this.selectionOverlay.style.cssText = "position:absolute;top:0;left:0;z-index:1;pointer-events:none;overflow:hidden;width:100%;height:100%;", this.scrollHost = document.createElement("div"), this.scrollHost.style.cssText = "position:absolute;inset:0;overflow:auto;z-index:2;background:transparent;", this.spacer = document.createElement("div"), this.spacer.style.cssText = "position:absolute;top:0;left:0;pointer-events:none;", this.scrollHost.appendChild(this.spacer), this.canvasArea.appendChild(this.canvas), this.canvasArea.appendChild(this.selectionOverlay), this.canvasArea.appendChild(this.scrollHost), this.tabBar = document.createElement("div"), this.tabBar.style.cssText = `display:flex;align-items:flex-end;height:${It}px;flex-shrink:0;background:#f0f0f0;border-top:1px solid #c8ccd0;overflow-x:auto;overflow-y:hidden;padding:0 4px;gap:1px;scrollbar-width:none;`;
2117
2132
  let r = document.createElement("style");
2118
- r.textContent = ".xlsx-tab-bar::-webkit-scrollbar{display:none}", document.head.appendChild(r), this.tabBar.classList.add("xlsx-tab-bar"), n.appendChild(this.canvasArea), n.appendChild(this.tabBar), e.appendChild(n), this.scrollHost.addEventListener("scroll", () => this.renderCurrentSheet()), this.resizeObserver = new ResizeObserver(() => this.renderCurrentSheet()), this.resizeObserver.observe(this.canvasArea);
2133
+ r.textContent = ".xlsx-tab-bar::-webkit-scrollbar{display:none}", document.head.appendChild(r), this.tabBar.classList.add("xlsx-tab-bar"), n.appendChild(this.canvasArea), n.appendChild(this.tabBar), e.appendChild(n), this.scrollHost.addEventListener("scroll", () => {
2134
+ this.renderCurrentSheet(), this.updateSelectionOverlay();
2135
+ }), this.resizeObserver = new ResizeObserver(() => {
2136
+ this.renderCurrentSheet(), this.updateSelectionOverlay();
2137
+ }), this.resizeObserver.observe(this.canvasArea), this.setupSelectionEvents();
2119
2138
  }
2120
2139
  async load(e) {
2121
2140
  try {
@@ -2125,7 +2144,278 @@ var Ft = class {
2125
2144
  }
2126
2145
  }
2127
2146
  async showSheet(e) {
2128
- this.currentSheet = e, this.scrollHost.scrollLeft = 0, this.scrollHost.scrollTop = 0, this.updateTabActive(e), this.currentWorksheet = await this.wb.getWorksheet(e), this.updateSpacerSize(this.currentWorksheet), await this.renderCurrentSheet(), this.opts.onSheetChange?.(e, this.wb.sheetNames[e] ?? "");
2147
+ this.currentSheet = e, this.scrollHost.scrollLeft = 0, this.scrollHost.scrollTop = 0, this.anchorCell = null, this.activeCell = null, this.selectionMode = "cells", this.updateSelectionOverlay(), this.updateTabActive(e), this.currentWorksheet = await this.wb.getWorksheet(e), this.updateSpacerSize(this.currentWorksheet), await this.renderCurrentSheet(), this.opts.onSheetChange?.(e, this.wb.sheetNames[e] ?? "");
2148
+ }
2149
+ getCellAt(e, t) {
2150
+ let n = this.currentWorksheet;
2151
+ if (!n) return null;
2152
+ let r = this.opts.cellScale ?? 1, i = this.canvasArea.getBoundingClientRect(), a = (e - i.left) / r, o = (t - i.top) / r;
2153
+ if (a < 50 || o < 22) return null;
2154
+ let s = a - 50, c = o - 22, l = n.freezeRows ?? 0, u = n.freezeCols ?? 0, d = 0, m = [];
2155
+ for (let e = 1; e <= l; e++) {
2156
+ let t = p(n.rowHeights[e] ?? n.defaultRowHeight);
2157
+ m.push(t), d += t;
2158
+ }
2159
+ let h = 0, g = [];
2160
+ for (let e = 1; e <= u; e++) {
2161
+ let t = f(n.colWidths[e] ?? n.defaultColWidth);
2162
+ g.push(t), h += t;
2163
+ }
2164
+ let _;
2165
+ if (c < d) {
2166
+ _ = -1;
2167
+ let e = 0;
2168
+ for (let t = 0; t < l; t++) if (e += m[t], c < e) {
2169
+ _ = t + 1;
2170
+ break;
2171
+ }
2172
+ if (_ === -1) return null;
2173
+ } else {
2174
+ let e = c - d + this.scrollHost.scrollTop / r;
2175
+ _ = -1;
2176
+ let t = 0;
2177
+ for (let r = l + 1; r <= 1048576; r++) if (t += p(n.rowHeights[r] ?? n.defaultRowHeight), e < t) {
2178
+ _ = r;
2179
+ break;
2180
+ }
2181
+ if (_ === -1) return null;
2182
+ }
2183
+ let v;
2184
+ if (s < h) {
2185
+ v = -1;
2186
+ let e = 0;
2187
+ for (let t = 0; t < u; t++) if (e += g[t], s < e) {
2188
+ v = t + 1;
2189
+ break;
2190
+ }
2191
+ if (v === -1) return null;
2192
+ } else {
2193
+ let e = s - h + this.scrollHost.scrollLeft / r;
2194
+ v = -1;
2195
+ let t = 0;
2196
+ for (let r = u + 1; r <= 16384; r++) if (t += f(n.colWidths[r] ?? n.defaultColWidth), e < t) {
2197
+ v = r;
2198
+ break;
2199
+ }
2200
+ if (v === -1) return null;
2201
+ }
2202
+ return {
2203
+ row: _,
2204
+ col: v
2205
+ };
2206
+ }
2207
+ getCellRect(e, t) {
2208
+ let n = this.currentWorksheet;
2209
+ if (!n) return null;
2210
+ let r = this.opts.cellScale ?? 1, i = n.freezeRows ?? 0, a = n.freezeCols ?? 0, o;
2211
+ if (t <= a) {
2212
+ let e = 50;
2213
+ for (let r = 1; r < t; r++) e += f(n.colWidths[r] ?? n.defaultColWidth);
2214
+ o = e * r;
2215
+ } else {
2216
+ let e = 0;
2217
+ for (let t = 1; t <= a; t++) e += f(n.colWidths[t] ?? n.defaultColWidth);
2218
+ let i = 50 + e;
2219
+ for (let e = a + 1; e < t; e++) i += f(n.colWidths[e] ?? n.defaultColWidth);
2220
+ o = (i - this.scrollHost.scrollLeft / r) * r;
2221
+ }
2222
+ let s;
2223
+ if (e <= i) {
2224
+ let t = 22;
2225
+ for (let r = 1; r < e; r++) t += p(n.rowHeights[r] ?? n.defaultRowHeight);
2226
+ s = t * r;
2227
+ } else {
2228
+ let t = 0;
2229
+ for (let e = 1; e <= i; e++) t += p(n.rowHeights[e] ?? n.defaultRowHeight);
2230
+ let a = 22 + t;
2231
+ for (let t = i + 1; t < e; t++) a += p(n.rowHeights[t] ?? n.defaultRowHeight);
2232
+ s = (a - this.scrollHost.scrollTop / r) * r;
2233
+ }
2234
+ let c = f(n.colWidths[t] ?? n.defaultColWidth) * r, l = p(n.rowHeights[e] ?? n.defaultRowHeight) * r;
2235
+ return {
2236
+ x: o,
2237
+ y: s,
2238
+ w: c,
2239
+ h: l
2240
+ };
2241
+ }
2242
+ get selection() {
2243
+ return !this.anchorCell || !this.activeCell ? null : {
2244
+ anchor: this.anchorCell,
2245
+ active: this.activeCell,
2246
+ mode: this.selectionMode
2247
+ };
2248
+ }
2249
+ getHeaderHit(e, t) {
2250
+ let n = this.currentWorksheet;
2251
+ if (!n) return null;
2252
+ let r = this.opts.cellScale ?? 1, i = this.canvasArea.getBoundingClientRect(), a = (e - i.left) / r, o = (t - i.top) / r, s = a < 50, c = o < 22;
2253
+ if (!s && !c) return null;
2254
+ if (s && c) return { kind: "corner" };
2255
+ let l = n.freezeRows ?? 0, u = n.freezeCols ?? 0;
2256
+ if (s) {
2257
+ let e = o - 22;
2258
+ if (e < 0) return { kind: "corner" };
2259
+ let t = 0, i = [];
2260
+ for (let e = 1; e <= l; e++) {
2261
+ let r = p(n.rowHeights[e] ?? n.defaultRowHeight);
2262
+ i.push(r), t += r;
2263
+ }
2264
+ if (e < t) {
2265
+ let t = 0;
2266
+ for (let n = 0; n < l; n++) if (t += i[n], e < t) return {
2267
+ kind: "row",
2268
+ row: n + 1
2269
+ };
2270
+ return null;
2271
+ }
2272
+ let a = e - t + this.scrollHost.scrollTop / r, s = 0;
2273
+ for (let e = l + 1; e <= 1048576; e++) if (s += p(n.rowHeights[e] ?? n.defaultRowHeight), a < s) return {
2274
+ kind: "row",
2275
+ row: e
2276
+ };
2277
+ return null;
2278
+ }
2279
+ let d = a - 50;
2280
+ if (d < 0) return { kind: "corner" };
2281
+ let m = 0, h = [];
2282
+ for (let e = 1; e <= u; e++) {
2283
+ let t = f(n.colWidths[e] ?? n.defaultColWidth);
2284
+ h.push(t), m += t;
2285
+ }
2286
+ if (d < m) {
2287
+ let e = 0;
2288
+ for (let t = 0; t < u; t++) if (e += h[t], d < e) return {
2289
+ kind: "col",
2290
+ col: t + 1
2291
+ };
2292
+ return null;
2293
+ }
2294
+ let g = d - m + this.scrollHost.scrollLeft / r, _ = 0;
2295
+ for (let e = u + 1; e <= 16384; e++) if (_ += f(n.colWidths[e] ?? n.defaultColWidth), g < _) return {
2296
+ kind: "col",
2297
+ col: e
2298
+ };
2299
+ return null;
2300
+ }
2301
+ copySelection() {
2302
+ let e = this.currentWorksheet;
2303
+ if (!e || !this.anchorCell || !this.activeCell) return;
2304
+ let t = 1, n = 1;
2305
+ for (let r of e.rows) {
2306
+ r.index > t && (t = r.index);
2307
+ for (let e of r.cells) e.col > n && (n = e.col);
2308
+ }
2309
+ let r, i, a, o;
2310
+ this.selectionMode === "all" ? (r = 1, i = t, a = 1, o = n) : this.selectionMode === "rows" ? (r = Math.min(this.anchorCell.row, this.activeCell.row), i = Math.max(this.anchorCell.row, this.activeCell.row), a = 1, o = n) : this.selectionMode === "cols" ? (a = Math.min(this.anchorCell.col, this.activeCell.col), o = Math.max(this.anchorCell.col, this.activeCell.col), r = 1, i = t) : (r = Math.min(this.anchorCell.row, this.activeCell.row), i = Math.max(this.anchorCell.row, this.activeCell.row), a = Math.min(this.anchorCell.col, this.activeCell.col), o = Math.max(this.anchorCell.col, this.activeCell.col));
2311
+ let s = /* @__PURE__ */ new Map();
2312
+ for (let t of e.rows) if (!(t.index < r || t.index > i)) for (let e of t.cells) {
2313
+ if (e.col < a || e.col > o) continue;
2314
+ let n = e.value, r = "";
2315
+ n.type === "text" ? r = n.runs ? n.runs.map((e) => e.text).join("") : n.text : n.type === "number" ? r = String(n.number) : n.type === "bool" ? r = n.bool ? "TRUE" : "FALSE" : n.type === "error" && (r = n.error), r && s.set(`${t.index}:${e.col}`, r);
2316
+ }
2317
+ let c = [];
2318
+ for (let e = r; e <= i; e++) {
2319
+ let t = [];
2320
+ for (let n = a; n <= o; n++) t.push(s.get(`${e}:${n}`) ?? "");
2321
+ c.push(t.join(" "));
2322
+ }
2323
+ navigator.clipboard.writeText(c.join("\n")).catch(() => void 0);
2324
+ }
2325
+ updateSelectionOverlay() {
2326
+ if (this.selectionOverlay.innerHTML = "", !this.anchorCell || !this.activeCell) return;
2327
+ let e = this.opts.cellScale ?? 1, t = this.currentWorksheet, n = t?.freezeRows ?? 0, r = t?.freezeCols ?? 0, i = 0;
2328
+ if (t) for (let e = 1; e <= n; e++) i += p(t.rowHeights[e] ?? t.defaultRowHeight);
2329
+ let a = 0;
2330
+ if (t) for (let e = 1; e <= r; e++) a += f(t.colWidths[e] ?? t.defaultColWidth);
2331
+ let o, s, c, l, u = 1, d = 1;
2332
+ if (this.selectionMode === "all") o = 50 * e, s = 22 * e, c = this.canvasArea.clientWidth - 50 * e, l = this.canvasArea.clientHeight - 22 * e;
2333
+ else if (this.selectionMode === "rows") {
2334
+ u = Math.min(this.anchorCell.row, this.activeCell.row);
2335
+ let t = Math.max(this.anchorCell.row, this.activeCell.row), n = this.getCellRect(u, 1), r = this.getCellRect(t, 1);
2336
+ if (!n || !r) return;
2337
+ o = 50 * e, s = n.y, c = this.canvasArea.clientWidth - 50 * e, l = r.y + r.h - n.y;
2338
+ } else if (this.selectionMode === "cols") {
2339
+ d = Math.min(this.anchorCell.col, this.activeCell.col);
2340
+ let t = Math.max(this.anchorCell.col, this.activeCell.col), n = this.getCellRect(1, d), r = this.getCellRect(1, t);
2341
+ if (!n || !r) return;
2342
+ o = n.x, s = 22 * e, c = r.x + r.w - n.x, l = this.canvasArea.clientHeight - 22 * e;
2343
+ } else {
2344
+ u = Math.min(this.anchorCell.row, this.activeCell.row);
2345
+ let e = Math.max(this.anchorCell.row, this.activeCell.row);
2346
+ d = Math.min(this.anchorCell.col, this.activeCell.col);
2347
+ let t = Math.max(this.anchorCell.col, this.activeCell.col), n = this.getCellRect(u, d), r = this.getCellRect(e, t);
2348
+ if (!n || !r) return;
2349
+ o = n.x, s = n.y, c = r.x + r.w - n.x, l = r.y + r.h - n.y;
2350
+ }
2351
+ o < 50 * e && (c -= 50 * e - o, o = 50 * e), s < 22 * e && (l -= 22 * e - s, s = 22 * e);
2352
+ let m = (50 + a) * e, h = (22 + i) * e;
2353
+ if (d > r && o < m && (c -= m - o, o = m), u > n && s < h && (l -= h - s, s = h), c <= 0 || l <= 0) return;
2354
+ let g = document.createElement("div");
2355
+ g.style.cssText = `position:absolute;left:${o}px;top:${s}px;width:${c}px;height:${l}px;box-sizing:border-box;border:2px solid #1a73e8;background:rgba(26,115,232,0.08);pointer-events:none;`, this.selectionOverlay.appendChild(g);
2356
+ }
2357
+ setupSelectionEvents() {
2358
+ this.scrollHost.addEventListener("pointerdown", (e) => {
2359
+ if (e.button !== 0) return;
2360
+ let t = this.getHeaderHit(e.clientX, e.clientY);
2361
+ if (t) {
2362
+ t.kind === "corner" ? (this.selectionMode = "all", this.anchorCell = {
2363
+ row: 1,
2364
+ col: 1
2365
+ }, this.activeCell = {
2366
+ row: 1,
2367
+ col: 1
2368
+ }, this.isSelecting = !1) : t.kind === "row" ? e.shiftKey && this.anchorCell && this.selectionMode === "rows" ? this.activeCell = {
2369
+ row: t.row,
2370
+ col: 1
2371
+ } : (this.selectionMode = "rows", this.anchorCell = {
2372
+ row: t.row,
2373
+ col: 1
2374
+ }, this.activeCell = {
2375
+ row: t.row,
2376
+ col: 1
2377
+ }, this.isSelecting = !0, this.scrollHost.setPointerCapture(e.pointerId)) : e.shiftKey && this.anchorCell && this.selectionMode === "cols" ? this.activeCell = {
2378
+ row: 1,
2379
+ col: t.col
2380
+ } : (this.selectionMode = "cols", this.anchorCell = {
2381
+ row: 1,
2382
+ col: t.col
2383
+ }, this.activeCell = {
2384
+ row: 1,
2385
+ col: t.col
2386
+ }, this.isSelecting = !0, this.scrollHost.setPointerCapture(e.pointerId)), this.updateSelectionOverlay(), this.opts.onSelectionChange?.(this.selection);
2387
+ return;
2388
+ }
2389
+ let n = this.getCellAt(e.clientX, e.clientY);
2390
+ n && (e.shiftKey && this.anchorCell && this.selectionMode === "cells" ? this.activeCell = n : (this.selectionMode = "cells", this.anchorCell = n, this.activeCell = n), this.isSelecting = !0, this.scrollHost.setPointerCapture(e.pointerId), this.updateSelectionOverlay(), this.opts.onSelectionChange?.(this.selection));
2391
+ }), this.scrollHost.addEventListener("pointermove", (e) => {
2392
+ if (this.isSelecting) {
2393
+ if (this.selectionMode === "rows") {
2394
+ let t = this.getHeaderHit(e.clientX, e.clientY), n = t?.kind === "row" ? t.row : this.getCellAt(e.clientX, e.clientY)?.row;
2395
+ if (!n || n === this.activeCell?.row) return;
2396
+ this.activeCell = {
2397
+ row: n,
2398
+ col: 1
2399
+ };
2400
+ } else if (this.selectionMode === "cols") {
2401
+ let t = this.getHeaderHit(e.clientX, e.clientY), n = t?.kind === "col" ? t.col : this.getCellAt(e.clientX, e.clientY)?.col;
2402
+ if (!n || n === this.activeCell?.col) return;
2403
+ this.activeCell = {
2404
+ row: 1,
2405
+ col: n
2406
+ };
2407
+ } else {
2408
+ let t = this.getCellAt(e.clientX, e.clientY);
2409
+ if (!t || t.row === this.activeCell?.row && t.col === this.activeCell?.col) return;
2410
+ this.activeCell = t;
2411
+ }
2412
+ this.updateSelectionOverlay(), this.opts.onSelectionChange?.(this.selection);
2413
+ }
2414
+ }), this.scrollHost.addEventListener("pointerup", () => {
2415
+ this.isSelecting = !1;
2416
+ }), this.keydownHandler = (e) => {
2417
+ (e.ctrlKey || e.metaKey) && e.key === "c" && this.copySelection();
2418
+ }, document.addEventListener("keydown", this.keydownHandler);
2129
2419
  }
2130
2420
  buildTabs() {
2131
2421
  this.tabBar.innerHTML = "", this.tabs = [], this.wb.sheetNames.forEach((e, t) => {
@@ -2221,7 +2511,7 @@ var Ft = class {
2221
2511
  return this.wb.sheetNames;
2222
2512
  }
2223
2513
  destroy() {
2224
- this.resizeObserver?.disconnect(), this.wb.destroy();
2514
+ this.resizeObserver?.disconnect(), this.keydownHandler && document.removeEventListener("keydown", this.keydownHandler), this.wb.destroy();
2225
2515
  }
2226
2516
  }, Rt = /* @__PURE__ */ e({
2227
2517
  XlsxViewer: () => Lt,
@@ -6,4 +6,5 @@ const e=require(`./autoResize-ggn4hzd8.cjs`),t=require(`./renderer-DB-DghvA.cjs`
6
6
  `||e===`\r`){n++;continue}if(e===`(`){t.push({kind:`lparen`,text:e}),n++;continue}if(e===`)`){t.push({kind:`rparen`,text:e}),n++;continue}if(e===`,`){t.push({kind:`comma`,text:e}),n++;continue}if(e===`:`){t.push({kind:`colon`,text:e}),n++;continue}if(e===`"`){let e=n+1,i=``;for(;e<r.length;){if(r[e]===`"`&&r[e+1]===`"`){i+=`"`,e+=2;continue}if(r[e]===`"`)break;i+=r[e],e++}t.push({kind:`str`,text:i}),n=e+1;continue}if(e>=`0`&&e<=`9`){let e=n;for(;e<r.length&&(r[e]>=`0`&&r[e]<=`9`||r[e]===`.`);)e++;t.push({kind:`num`,text:r.slice(n,e)}),n=e;continue}if(be.has(e)){(e===`<`||e===`>`)&&(r[n+1]===`=`||e===`<`&&r[n+1]===`>`)?(t.push({kind:`op`,text:r.slice(n,n+2)}),n+=2):(t.push({kind:`op`,text:e}),n++);continue}if(e===`$`||Se(e)){let e=n;for(;e<r.length&&(r[e]===`$`||Ce(r[e]));)e++;let i=r.slice(n,e);n=e;let a=we(i);if(a)t.push({kind:`ref`,text:i,ref:a});else{let e=i.toUpperCase();e===`TRUE`||e===`FALSE`?t.push({kind:`bool`,text:e}):t.push({kind:`name`,text:i})}continue}n++}return t}function Se(e){return e>=`A`&&e<=`Z`||e>=`a`&&e<=`z`||e===`_`}function Ce(e){return Se(e)||e>=`0`&&e<=`9`||e===`.`}function we(e){let t=0,n=!1,r=!1;e[t]===`$`&&(n=!0,t++);let i=t;for(;t<e.length&&e[t]>=`A`&&e[t].toUpperCase()<=`Z`&&!(!(e[t]>=`A`&&e[t]<=`Z`)&&!(e[t]>=`a`&&e[t]<=`z`));)t++;if(t===i)return null;let a=e.slice(i,t).toUpperCase();e[t]===`$`&&(r=!0,t++);let o=t;for(;t<e.length&&e[t]>=`0`&&e[t]<=`9`;)t++;if(t===o||t!==e.length)return null;let s=parseInt(e.slice(o,t),10),c=0;for(let e=0;e<a.length;e++)c=c*26+(a.charCodeAt(e)-64);return{colAbs:n,col:c,rowAbs:r,row:s}}function Te(e,t){return De({toks:xe(e),pos:0},t)}function Ee(e){return e.toks[e.pos]}function X(e){return e.toks[e.pos++]}function De(e,t){return Oe(e,t)}function Oe(e,t){let n=ke(e,t),r=Ee(e);if(r&&r.kind===`op`&&(r.text===`<`||r.text===`>`||r.text===`<=`||r.text===`>=`||r.text===`=`||r.text===`<>`)){X(e);let i=ke(e,t);return Ae(r.text,n,i)}return n}function ke(e,t){let n=je(e,t);for(;;){let r=Ee(e);if(!r||r.kind!==`op`||r.text!==`&`)break;X(e);let i=je(e,t);n=Y(n)+Y(i)}return n}function Ae(e,t,n){let r=typeof t==`string`&&isNaN(parseFloat(t))?null:J(t),i=typeof n==`string`&&isNaN(parseFloat(n))?null:J(n);if(r!==null&&i!==null)switch(e){case`<`:return r<i;case`>`:return r>i;case`<=`:return r<=i;case`>=`:return r>=i;case`=`:return r===i;case`<>`:return r!==i}let a=String(t??``),o=String(n??``);switch(e){case`<`:return a<o;case`>`:return a>o;case`<=`:return a<=o;case`>=`:return a>=o;case`=`:return a===o;case`<>`:return a!==o}return!1}function je(e,t){let n=Me(e,t);for(;;){let r=Ee(e);if(!r||r.kind!==`op`||r.text!==`+`&&r.text!==`-`)break;X(e);let i=Me(e,t);n=r.text===`+`?J(n)+J(i):J(n)-J(i)}return n}function Me(e,t){let n=Ne(e,t);for(;;){let r=Ee(e);if(!r||r.kind!==`op`||r.text!==`*`&&r.text!==`/`)break;X(e);let i=Ne(e,t);if(r.text===`*`)n=J(n)*J(i);else{let e=J(i);n=e===0?0:J(n)/e}}return n}function Ne(e,t){let n=Ee(e);return n&&n.kind===`op`&&n.text===`-`?(X(e),-J(Ne(e,t))):n&&n.kind===`op`&&n.text===`+`?(X(e),J(Ne(e,t))):Pe(e,t)}function Pe(e,t){let n=X(e);if(!n)return 0;if(n.kind===`num`)return parseFloat(n.text);if(n.kind===`str`)return n.text;if(n.kind===`bool`)return n.text===`TRUE`;if(n.kind===`lparen`){let n=De(e,t),r=X(e);if(!r||r.kind!==`rparen`)throw Error(`missing )`);return n}if(n.kind===`ref`){if(Ee(e)?.kind===`colon`){X(e);let r=X(e);if(r?.kind!==`ref`||!r.ref)throw Error(`range: expected ref after :`);return Le(n.ref,r.ref,t)}return Ie(n.ref,t)}if(n.kind===`name`){if(Ee(e)?.kind===`lparen`){X(e);let r=[];if(Ee(e)?.kind!==`rparen`)for(r.push(De(e,t));Ee(e)?.kind===`comma`;)X(e),r.push(De(e,t));let i=X(e);if(!i||i.kind!==`rparen`)throw Error(`missing )`);return ze(n.text,r,t)}let r=t.definedNames.get(n.text);return r&&t.depth<q?Te(Fe(r.formula),{...t,anchorRow:1,anchorCol:1,depth:t.depth+1}):0}return 0}function Fe(e){let t=e.match(/^(?:'[^']*'|[A-Za-z_][A-Za-z0-9_.]*)!(.*)$/);return t?t[1]:e}function Ie(e,t){let n=e.colAbs?e.col:e.col+(t.col-t.anchorCol),r=e.rowAbs?e.row:e.row+(t.row-t.anchorRow);return Re(t.cellIndex.get(`${r}:${n}`))}function Le(e,t,n){let r=e.colAbs?e.col:e.col+(n.col-n.anchorCol),i=e.rowAbs?e.row:e.row+(n.row-n.anchorRow),a=t.colAbs?t.col:t.col+(n.col-n.anchorCol),o=t.rowAbs?t.row:t.row+(n.row-n.anchorRow),s=Math.min(r,a),c=Math.max(r,a),l=Math.min(i,o),u=Math.max(i,o),d=[],f=4096;for(let e=l;e<=u&&d.length<f;e++)for(let t=s;t<=c&&d.length<f;t++)d.push(Re(n.cellIndex.get(`${e}:${t}`)));return d}function Re(e){if(!e)return null;switch(e.value.type){case`number`:return e.value.number;case`bool`:return e.value.bool;case`text`:return e.value.text;case`error`:return null;default:return null}}function ze(e,t,n){switch(e.toUpperCase()){case`AND`:return t.flatMap(G).every(e=>ye(e));case`OR`:return t.flatMap(G).some(e=>ye(e));case`NOT`:return!ye(t[0]);case`IF`:return ye(t[0])?t[1]??!0:t[2]??!1;case`IFERROR`:return t[0]==null?t[1]??0:t[0];case`IFS`:for(let e=0;e+1<t.length;e+=2)if(ye(t[e]))return t[e+1];return null;case`TRUE`:return!0;case`FALSE`:return!1;case`ISBLANK`:{let e=K(t[0]);return e==null||e===``}case`ISNUMBER`:return typeof K(t[0])==`number`;case`ISTEXT`:return typeof K(t[0])==`string`;case`ISNONTEXT`:return typeof K(t[0])!=`string`;case`ISERROR`:case`ISERR`:case`ISNA`:return K(t[0])==null;case`ISLOGICAL`:return typeof K(t[0])==`boolean`;case`ROUNDDOWN`:{let e=J(t[0]),n=10**J(t[1]);return(e>=0?Math.floor(e*n):Math.ceil(e*n))/n}case`ROUNDUP`:{let e=J(t[0]),n=10**J(t[1]);return(e>=0?Math.ceil(e*n):Math.floor(e*n))/n}case`ROUND`:{let e=J(t[0]),n=10**J(t[1]);return Math.round(e*n)/n}case`INT`:return Math.floor(J(t[0]));case`TRUNC`:{let e=J(t[0]),n=10**J(t[1]??0);return(e>=0?Math.floor(e*n):Math.ceil(e*n))/n}case`CEILING`:{let e=J(t[0]),n=J(t[1]??1);return n===0?0:Math.ceil(e/n)*n}case`FLOOR`:{let e=J(t[0]),n=J(t[1]??1);return n===0?0:Math.floor(e/n)*n}case`MOD`:{let e=J(t[0]),n=J(t[1]);return n===0?null:e-Math.floor(e/n)*n}case`POWER`:return J(t[0])**+J(t[1]);case`SQRT`:{let e=J(t[0]);return e<0?null:Math.sqrt(e)}case`ABS`:return Math.abs(J(t[0]));case`SIGN`:{let e=J(t[0]);return e>0?1:e<0?-1:0}case`EXP`:return Math.exp(J(t[0]));case`LN`:{let e=J(t[0]);return e<=0?null:Math.log(e)}case`LOG10`:{let e=J(t[0]);return e<=0?null:Math.log10(e)}case`MIN`:{let e=t.flatMap(G).filter(e=>typeof e==`number`);return e.length?Math.min(...e):0}case`MAX`:{let e=t.flatMap(G).filter(e=>typeof e==`number`);return e.length?Math.max(...e):0}case`SUM`:return t.flatMap(G).reduce((e,t)=>e+(typeof t==`number`?t:0),0);case`AVERAGE`:{let e=t.flatMap(G).filter(e=>typeof e==`number`);return e.length?e.reduce((e,t)=>e+t,0)/e.length:null}case`COUNT`:return t.flatMap(G).filter(e=>typeof e==`number`).length;case`COUNTA`:return t.flatMap(G).filter(e=>e!=null&&e!==``).length;case`COUNTBLANK`:return t.flatMap(G).filter(e=>e==null||e===``).length;case`COUNTIF`:return Be(G(t[0]),t[1]);case`SUMIF`:return Ve(G(t[0]),t[1],t[2]===void 0?null:G(t[2]));case`AVERAGEIF`:{let e=G(t[0]),n=Ve(e,t[1],t[2]===void 0?null:G(t[2])),r=Be(e,t[1]);return r===0?null:J(n)/r}case`LEN`:return Y(t[0]).length;case`LEFT`:return Y(t[0]).slice(0,Math.max(0,J(t[1]??1)));case`RIGHT`:{let e=Y(t[0]),n=Math.max(0,J(t[1]??1));return n>=e.length?e:e.slice(e.length-n)}case`MID`:{let e=Y(t[0]),n=Math.max(1,J(t[1]))-1,r=Math.max(0,J(t[2]));return e.slice(n,n+r)}case`UPPER`:return Y(t[0]).toUpperCase();case`LOWER`:return Y(t[0]).toLowerCase();case`TRIM`:return Y(t[0]).replace(/\s+/g,` `).trim();case`EXACT`:return Y(t[0])===Y(t[1]);case`FIND`:{let e=Y(t[0]),n=Y(t[1]),r=Math.max(1,J(t[2]??1))-1,i=n.indexOf(e,r);return i<0?null:i+1}case`SEARCH`:{let e=Y(t[0]).toLowerCase(),n=Y(t[1]).toLowerCase(),r=Math.max(1,J(t[2]??1))-1,i=n.indexOf(e,r);return i<0?null:i+1}case`CONCATENATE`:case`CONCAT`:return t.flatMap(G).map(e=>e==null?``:typeof e==`boolean`?e?`TRUE`:`FALSE`:String(e)).join(``);case`T`:{let e=K(t[0]);return typeof e==`string`?e:``}case`N`:{let e=K(t[0]);return typeof e==`number`?e:typeof e==`boolean`?+!!e:0}case`VALUE`:return J(t[0]);case`ROW`:return n.row;case`COLUMN`:return n.col;case`TODAY`:return Ge();case`NOW`:return Ke();case`DATE`:return qe(J(t[0]),J(t[1]),J(t[2]));case`YEAR`:return Ye(J(t[0])).y;case`MONTH`:return Ye(J(t[0])).m;case`DAY`:return Ye(J(t[0])).d;case`WEEKDAY`:{let e=Je(J(t[0])).getUTCDay(),n=J(t[1]??1);return n===2?e===0?7:e:n===3?e===0?6:e-1:e+1}default:return 0}}function Be(e,t){let n=He(t),r=0;for(let t of e)n(t)&&r++;return r}function Ve(e,t,n){let r=He(t),i=n??e,a=0;for(let t=0;t<e.length;t++)if(r(e[t])){let e=i[t];typeof e==`number`&&(a+=e)}return a}function He(e){let t=K(e);if(typeof t!=`string`){let e=typeof t==`number`?t:null;return n=>e!==null&&typeof n==`number`?n===e:n===t}let n=t.match(/^(<=|>=|<>|<|>|=)(.*)$/),r=n?n[1]:`=`,i=n?n[2]:t,a=i.trim()===``?NaN:parseFloat(i),o=!isNaN(a)&&/^-?\d+(\.\d+)?$/.test(i.trim());return e=>{if(o&&typeof e==`number`)switch(r){case`<`:return e<a;case`>`:return e>a;case`<=`:return e<=a;case`>=`:return e>=a;case`<>`:return e!==a;default:return e===a}let t=e==null?``:typeof e==`boolean`?e?`TRUE`:`FALSE`:String(e);switch(r){case`<>`:return t!==i;case`<`:return t<i;case`>`:return t>i;case`<=`:return t<=i;case`>=`:return t>=i;default:return t===i}}}var Ue=25569,We=864e5;function Ge(){let e=new Date,t=Date.UTC(e.getFullYear(),e.getMonth(),e.getDate());return Math.floor(t/We)+Ue}function Ke(){return Date.now()/We+Ue}function qe(e,t,n){let r=Date.UTC(e,t-1,n);return Math.floor(r/We)+Ue}function Je(e){let t=(Math.floor(e)-Ue)*We;return new Date(t)}function Ye(e){let t=Je(e);return{y:t.getUTCFullYear(),m:t.getUTCMonth()+1,d:t.getUTCDate()}}var Xe=[`#FF0000`,`#FFFF00`,`#00B050`],Ze=[`#FF0000`,`#FF6600`,`#FFFF00`,`#00B050`],Qe=[`#FF0000`,`#FF6600`,`#FFFF00`,`#92D050`,`#00B050`];function $e(e,t,n,r,i,a){if(t===`NoIcons`)return;let o=t||`3TrafficLights1`,s=parseInt(o[0])||3,c=s===5?Qe:s===4?Ze:Xe,l=c[Math.max(0,Math.min(n,c.length-1))];if(e.save(),e.fillStyle=l,o.includes(`Arrow`)){let t=a/2;e.beginPath(),n===s-1?(e.moveTo(r+t,i),e.lineTo(r+a,i+a),e.lineTo(r,i+a)):n===0?(e.moveTo(r,i),e.lineTo(r+a,i),e.lineTo(r+t,i+a)):(e.moveTo(r,i+a*.3),e.lineTo(r+a,i+t),e.lineTo(r,i+a*.7)),e.closePath(),e.fill()}else o.includes(`Flag`)?(e.beginPath(),e.moveTo(r,i),e.lineTo(r+a,i),e.lineTo(r,i+a),e.closePath(),e.fill()):(e.beginPath(),e.arc(r+a/2,i+a/2,a/2,0,Math.PI*2),e.fill());e.restore()}function et(e,t,n,r,i){let a=Math.max(6,Math.round(Math.min(r,i)*.45)),o=t+r-a-1,s=n+i-a-1;e.save(),e.fillStyle=`#D0D0D0`,e.fillRect(o,s,a,a),e.fillStyle=`#444444`;let c=a*.55,l=o+(a-c)/2,u=s+(a-c*.5)/2;e.beginPath(),e.moveTo(l,u),e.lineTo(l+c,u),e.lineTo(l+c/2,u+c*.5),e.closePath(),e.fill(),e.restore()}function tt(e){let t=new Map;for(let n of e.tables??[]){let e=n.accentColor||`#808080`,r=Math.max(0,n.headerRowCount??1),i=Math.max(0,n.totalsRowCount??0),{top:a,bottom:o,left:s,right:c}=n.range,l=a+r-1,u=o-i+1;for(let d=a;d<=o;d++){let f=r>0&&d<=l,p=i>0&&d>=u,m=!f&&!p?d-l-1:-1;for(let r=s;r<=c;r++)t.set(`${d}:${r}`,{accent:e,isHeader:f,isTotals:p,isBanded:n.showRowStripes&&m>=0&&m%2==1,isFirstCol:n.showFirstColumn&&r===s,isLastCol:n.showLastColumn&&r===c,isTopEdge:d===a,isBottomEdge:d===o,wholeTableDxf:n.wholeTableDxf,headerRowDxf:n.headerRowDxf})}}return t}function nt(e){let t=e.replace(`#`,``);if(t.length<6)return`#F2F2F2`;let n=parseInt(t.slice(0,2),16),r=parseInt(t.slice(2,4),16),i=parseInt(t.slice(4,6),16),a=e=>Math.round(e*.2+255*.8),o=e=>e.toString(16).padStart(2,`0`).toUpperCase();return`#${o(a(n))}${o(a(r))}${o(a(i))}`}function rt(e,t,n,r,i,a,o,s,c,u,g,y,T,D){if(T<=0||D<=0)return;let{styles:O,cellMap:k,mergeAnchorMap:A,mergeSkipSet:j,cfContext:ee,cs:te,dpr:ne}=t,re=i.length,M=a.length,ie=[],N=-o;for(let e=0;e<re;e++)ie.push(N),N+=i[e];let P=[],F=-s;for(let e=0;e<M;e++)P.push(F),F+=a[e];e.save(),e.beginPath(),e.rect(g,y,T,D),e.clip();for(let i of t.worksheet.mergeCells??[]){let a=i.top,h=i.left;if(a>=n&&a<n+M&&h>=r&&h<r+re||i.bottom<n||i.top>=n+M||i.right<r||i.left>=r+re)continue;let g=t.mergeAnchorMap.get(`${a}:${h}`);if(!g)continue;let _;if(h>=r)_=c+ie[h-r];else{let e=0;for(let n=h;n<r;n++)e+=Math.round(d(t.worksheet.colWidths[n]??t.worksheet.defaultColWidth)*te);_=c-o-e}let v;if(a>=n)v=u+P[a-n];else{let e=0;for(let r=a;r<n;r++)e+=Math.round(f(t.worksheet.rowHeights[r]??t.worksheet.defaultRowHeight)*te);v=u-s-e}let y=g.totalW,b=g.totalH,x=`${a}:${h}`,C=t.cellMap.get(x),{font:T,fill:D,border:k,xf:A}=w(O,C?.styleIndex??0),j=_e(C,a,h,ee,O.dxfs??[]),ne=j.fill??D;if(ne.patternType!==`none`&&ne.patternType!==``&&ne.fgColor&&(e.fillStyle=p(ne.fgColor),e.fillRect(_,v,y,b)),j.dataBar&&j.dataBar.ratio>0){let t=Math.max(0,(y-4)*j.dataBar.ratio);m(e,j.dataBar.color,_+2,v+2,t,b-4,j.dataBar.gradient)}if(ft(e,dt(ut(k,a,h,g.right,g.bottom,t.cellMap,O),j.border),_,v,y,b),!C)continue;let N=E(C,O,j.numFmt);if(!N||N===`0`&&t.worksheet.showZeros===!1)continue;let F=T.bold||!!j.fontBold,I=T.italic||!!j.fontItalic,ae=T.underline||!!j.fontUnderline,L=T.strike||!!j.fontStrike;e.font=S(F!==T.bold||I!==T.italic||ae!==T.underline||L!==T.strike?{...T,bold:F,italic:I,underline:ae,strike:L}:T,te);let R=t.hyperlinkMap.get(x)?`#0563C1`:j.fontColor??T.color;e.fillStyle=R?p(R):`#000000`;let oe=C.value.type===`number`,z=A.alignH??(oe?`right`:`left`),B=A.alignV??`bottom`,se=A.indent?Math.round(A.indent*T.size*l*.5):0,V=3+(z===`left`||!A.alignH?se:0);e.save(),e.beginPath(),e.rect(_,v,y,b),e.clip();let H;z===`right`?(H=_+y-3,e.textAlign=`right`):z===`center`?(H=_+y/2,e.textAlign=`center`):(H=_+V,e.textAlign=`left`);let U;B===`top`?(e.textBaseline=`top`,U=v+2):B===`center`?(e.textBaseline=`middle`,U=v+b/2):(e.textBaseline=`bottom`,U=v+b-2),e.fillText(N,H,U),e.restore()}for(let o=0;o<M;o++){let s=n+o,d=u+P[o],f=a[o];if(!(d+f<=y||d>=y+D))for(let n=0;n<re;n++){let a=r+n,u=c+ie[n],y=i[n];if(u+y<=g||u>=g+T)continue;let D=`${s}:${a}`;if(j.has(D))continue;let M=A.get(D),N=M?M.totalW:y,P=M?M.totalH:f,F=k.get(D),{font:I,fill:ae,border:L,xf:R}=w(O,F?.styleIndex??0),z=_e(F,s,a,ee,O.dxfs??[]),B=z.fill??ae,V=t.tableStyleMap.get(D),H=V?.wholeTableDxf==null?void 0:(O.dxfs??[])[V.wholeTableDxf],U=V?.headerRowDxf==null?void 0:(O.dxfs??[])[V.headerRowDxf];if(B.gradient&&B.gradient.stops.length>0)e.fillStyle=v(e,B.gradient,u,d,N,P),e.fillRect(u,d,N,P);else if(B.patternType&&B.patternType!==`none`&&B.fgColor){let t=B.patternType,n=B.bgColor??`FFFFFF`,r=_(e,t,B.fgColor,n);if(r)e.fillStyle=r;else{let r=h(t);e.fillStyle=r>=1?p(B.fgColor):x(B.fgColor,n,r)}e.fillRect(u,d,N,P)}else V&&V.isHeader&&U?.fill?.fgColor?(e.fillStyle=p(U.fill.fgColor),e.fillRect(u,d,N,P)):V&&!V.isHeader&&!V.isTotals&&H?.fill?.fgColor?(e.fillStyle=p(H.fill.fgColor),e.fillRect(u,d,N,P)):V&&V.isBanded&&(e.fillStyle=nt(V.accent),e.fillRect(u,d,N,P));if(t.commentCells.has(D)&&b(e,u,d,N,P),z.dataBar&&z.dataBar.ratio>0){let t=Math.max(0,(N-4)*z.dataBar.ratio);m(e,z.dataBar.color,u+2,d+2,t,P-4,z.dataBar.gradient)}if(t.worksheet.showGridlines!==!1){let t=.5/ne;e.strokeStyle=`#d0d0d0`,e.lineWidth=.5,e.beginPath(),e.moveTo(u+N+t,d),e.lineTo(u+N+t,d+P),e.moveTo(u,d+P+t),e.lineTo(u+N,d+P+t),o===0&&(e.moveTo(u,d+t),e.lineTo(u+N,d+t)),n===0&&(e.moveTo(u+t,d),e.lineTo(u+t,d+P)),e.stroke()}if(ft(e,dt(M?ut(L,s,a,M.right,M.bottom,k,O):L,z.border),u,d,N,P),V){let t=H?.border?.horizontal,n=H?.border?.vertical,r=H?.border?.top,i=H?.border?.bottom,o=H?.border?.left,s=H?.border?.right,c=U?.border?.bottom,l=U?.border?.top;if(t||n||r||i||o||s||c||l){let n={left:null,right:null,top:null,bottom:null};V.isTopEdge?n.top=r??null:t&&(n.top=t),V.isHeader&&c?n.bottom=c:V.isBottomEdge?n.bottom=i??null:t&&(n.bottom=t),(V.isFirstCol||a===0)&&(n.left=o??null),V.isLastCol&&(n.right=s??null),ft(e,n,u,d,N,P)}else{let t=.5/ne;e.strokeStyle=V.accent,e.lineWidth=V.isHeader?1.5:1,e.beginPath(),e.moveTo(u,d+P-t),e.lineTo(u+N,d+P-t),V.isTopEdge&&(e.moveTo(u,d+t),e.lineTo(u+N,d+t)),e.stroke()}}if(t.autoFilterCells.has(D)&&et(e,u,d,y,P),!F)continue;let W=E(F,O,z.numFmt);if(!W||W===`0`&&t.worksheet.showZeros===!1)continue;let ce=!!(V&&(V.isHeader||V.isTotals)),le=I.bold||!!z.fontBold||ce,ue=I.italic||!!z.fontItalic,de=I.underline||!!z.fontUnderline,fe=I.strike||!!z.fontStrike,pe=le!==I.bold||ue!==I.italic||de!==I.underline||fe!==I.strike?{...I,bold:le,italic:ue,underline:de,strike:fe}:I;e.font=S(pe,te);let me=t.hyperlinkMap.get(D),he=V?.isHeader&&U?.font?.color?U.font.color:V&&!V.isHeader&&!V.isTotals&&H?.font?.color?H.font.color:null,ge=me?`#0563C1`:z.fontColor??he??I.color;e.fillStyle=ge?p(ge):`#000000`;let G=F.value.type===`number`,K=R.alignH??(G?`right`:`left`),q=R.alignV??`bottom`,ve=R.indent?Math.round(R.indent*I.size*l*.5):0,ye=z.iconSet?Math.max(8,Math.round(Math.min(N,P)*.55)):0,J=ye>0?ye+4:0,Y=3+(K===`left`||!R.alignH?ve:0)+J,be=u,xe=N,Se=W.includes(`
7
7
  `);if(!M&&!R.wrapText&&!R.textRotation&&!G&&!Se){let t=e.measureText(W).width+Y+3;if(t>N){let e=t-N,a=0,o=0;if(K===`right`?o=e:K===`center`?(o=e/2,a=e/2):a=e,a>0){let e=a;for(let t=n+1;t<re&&e>0;t++){let n=`${s}:${r+t}`;if(j.has(n)||A.has(n))break;let a=k.get(n);if(a&&a.value.type!==`empty`)break;xe+=i[t],e-=i[t]}}if(o>0){let e=o;for(let t=n-1;t>=0&&e>0;t--){let n=`${s}:${r+t}`;if(j.has(n)||A.has(n))break;let a=k.get(n);if(a&&a.value.type!==`empty`)break;be-=i[t],xe+=i[t],e-=i[t]}}}}let Ce,we;K===`right`?(Ce=u+N-3,we=`right`):K===`center`?(Ce=u+N/2,we=`center`):(Ce=u+Y,we=`left`);let Te=R.textRotation??0,Ee=Te===255,X=Te>0&&Te!==255;if(z.iconSet&&ye>0&&(e.save(),e.beginPath(),e.rect(u,d,N,P),e.clip(),$e(e,z.iconSet.name,z.iconSet.index,u+2,d+(P-ye)/2,ye),e.restore()),e.save(),e.beginPath(),e.rect(be,d,xe,P),e.clip(),Ee){let t=Math.round(I.size*l*1.1),n=W.length*t,r=q===`top`?d+2:q===`center`?d+(P-n)/2:d+P-n-2;e.textAlign=`center`,e.textBaseline=`top`;for(let n of W)e.fillText(n,u+N/2,r),r+=t;e.restore();continue}if(X){let t=Te<=90?-(Te*Math.PI/180):(Te-90)*Math.PI/180;e.translate(u+N/2,d+P/2),e.rotate(t),e.textAlign=`center`,e.textBaseline=`middle`,e.fillText(W,0,0),e.restore();continue}if(R.shrinkToFit){let t=e.measureText(W).width,n=N-Y-3;if(t>n&&t>0){let r=n/t,i=K===`right`?u+N-3:K===`center`?u+N/2:u+Y;e.transform(r,0,0,1,i*(1-r),0)}}e.textAlign=we;let De=F.value.type===`text`?F.value.runs:void 0,Oe=De&&De.length>0;if(R.wrapText&&Oe){let t=se(e,De,pe,te,N-Y-3),n=t.reduce((e,t)=>e+Math.round(t.maxFontSize*l*1.2),0),r;r=q===`top`?d+2:q===`center`?d+(P-n)/2:d+P-n-2,e.textAlign=`left`,e.textBaseline=`top`;for(let n of t){let t=Math.round(n.maxFontSize*l*1.2),i=n.segments.reduce((e,t)=>e+t.width,0),a;a=K===`right`?u+N-3-i:K===`center`?u+N/2-i/2:u+Y;for(let t of n.segments){e.font=S(t.font,te);let n=z.fontColor??t.font.color;e.fillStyle=n?p(n):`#000000`,e.fillText(t.text,a,r);let i=Math.round(t.font.size*l);if(t.font.underline&&(e.save(),e.strokeStyle=n?p(n):`#000000`,e.lineWidth=.5,e.beginPath(),e.moveTo(a,r+i+1),e.lineTo(a+t.width,r+i+1),e.stroke(),e.restore()),t.font.strike){e.save(),e.strokeStyle=n?p(n):`#000000`,e.lineWidth=.5;let o=r+Math.round(i*.5);e.beginPath(),e.moveTo(a,o),e.lineTo(a+t.width,o),e.stroke(),e.restore()}a+=t.width}r+=t}}else if(R.wrapText){let t=oe(e,W,N-Y-3),n=Math.round(I.size*l*1.2),r=t.length*n,i;q===`top`?(i=d+2,e.textBaseline=`top`):q===`center`?(i=d+(P-r)/2,e.textBaseline=`top`):(i=d+P-r-2,e.textBaseline=`top`);for(let r=0;r<t.length;r++)e.fillText(t[r],Ce,i+r*n)}else if(Oe){let t=De.map(e=>C(pe,e)),n=De.map((n,r)=>(e.font=S(t[r],te),e.measureText(n.text).width)),r=n.reduce((e,t)=>e+t,0),i;i=K===`right`?u+N-3-r:K===`center`?u+N/2-r/2:u+Y,e.textAlign=`left`;let a;q===`top`?(e.textBaseline=`top`,a=d+2):q===`center`?(e.textBaseline=`middle`,a=d+P/2):(e.textBaseline=`bottom`,a=d+P-2);let o=i;for(let r=0;r<De.length;r++){let i=t[r];e.font=S(i,te);let s=z.fontColor??i.color;e.fillStyle=s?p(s):`#000000`,e.fillText(De[r].text,o,a);let c=Math.round(i.size*l);if(i.underline){let t=q===`top`?d+2+c+1:q===`center`?d+P/2+Math.round(c*.55):d+P-2+1;e.save(),e.strokeStyle=s?p(s):`#000000`,e.lineWidth=.5,e.beginPath(),e.moveTo(o,t),e.lineTo(o+n[r],t),e.stroke(),e.restore()}if(i.strike){let t=q===`top`?d+2+Math.round(c*.5):q===`center`?d+P/2:d+P-2-Math.round(c*.35);e.save(),e.strokeStyle=s?p(s):`#000000`,e.lineWidth=.5,e.beginPath(),e.moveTo(o,t),e.lineTo(o+n[r],t),e.stroke(),e.restore()}o+=n[r]}}else{let t=null,n=()=>t??=e.measureText(W),r=()=>{let e=Math.min(n().width,xe-Y-3);return{x:K===`right`?u+N-3-e:K===`center`?u+N/2-e/2:u+Y,width:e}},i=Math.round(I.size*l);if(pe.underline||me){let{x:t,width:n}=r(),a=q===`top`?d+2+i+1:q===`center`?d+P/2+Math.round(i*.55):d+P-2+1;e.save(),e.strokeStyle=me?`#0563C1`:ge?p(ge):`#000000`,e.lineWidth=.5,e.beginPath(),e.moveTo(t,a),e.lineTo(t+n,a),e.stroke(),e.restore()}if(pe.strike){let{x:t,width:n}=r(),a=q===`top`?d+2+Math.round(i*.5):q===`center`?d+P/2:d+P-2-Math.round(i*.35);e.save(),e.strokeStyle=ge?p(ge):`#000000`,e.lineWidth=.5,e.beginPath(),e.moveTo(t,a),e.lineTo(t+n,a),e.stroke(),e.restore()}if(W.includes(`
8
8
  `)){let t=W.split(`
9
- `),n=Math.round(I.size*l*1.2),r=t.length*n,i;q===`top`?(i=d+2,e.textBaseline=`top`):q===`center`?(i=d+(P-r)/2,e.textBaseline=`top`):(i=d+P-r-2,e.textBaseline=`top`);for(let r=0;r<t.length;r++)e.fillText(t[r],Ce,i+r*n)}else{let t;q===`top`?(e.textBaseline=`top`,t=d+2):q===`center`?(e.textBaseline=`middle`,t=d+P/2):(e.textBaseline=`bottom`,t=d+P-2),e.fillText(W,Ce,t)}}e.restore()}}e.restore()}function it(e,t,n,r,i={}){let a=i.dpr??1,o=i.cellScale??1,s=e.canvas.width/a,c=e.canvas.height/a;e.clearRect(0,0,s,c),e.fillStyle=`#ffffff`,e.fillRect(0,0,s,c);let l=e=>Math.round(e*o),p=l(50),m=l(22),{row:h,col:g,rows:_,cols:v}=r,b=(i.scrollOffsetX??0)*o,x=(i.scrollOffsetY??0)*o,S=i.freezeRows??0,C=i.freezeCols??0,w=[];for(let e=1;e<=C;e++)w.push(l(d(t.colWidths[e]??t.defaultColWidth)));let T=[];for(let e=1;e<=S;e++)T.push(l(f(t.rowHeights[e]??t.defaultRowHeight)));let E=w.reduce((e,t)=>e+t,0),D=T.reduce((e,t)=>e+t,0),O=[];for(let e=g;e<g+v;e++)O.push(l(d(t.colWidths[e]??t.defaultColWidth)));let k=[];for(let e=h;e<h+_;e++)k.push(l(f(t.rowHeights[e]??t.defaultRowHeight)));let A=new Map;for(let e of t.rows)for(let t of e.cells)A.set(`${t.row}:${t.col}`,t);let j=new Map,ee=new Set;for(let e of t.mergeCells??[]){let n=0;for(let r=e.left;r<=e.right;r++)n+=l(d(t.colWidths[r]??t.defaultColWidth));let r=0;for(let n=e.top;n<=e.bottom;n++)r+=l(f(t.rowHeights[n]??t.defaultRowHeight));j.set(`${e.top}:${e.left}`,{totalW:n,totalH:r,right:e.right,bottom:e.bottom});for(let t=e.top;t<=e.bottom;t++)for(let n=e.left;n<=e.right;n++)t===e.top&&n===e.left||ee.add(`${t}:${n}`)}let te=ue(t),ne=new Set;if(t.autoFilter){let e=t.autoFilter;for(let t=e.left;t<=e.right;t++)ne.add(`${e.top}:${t}`)}let re=new Map;for(let e of t.hyperlinks??[])e.url&&re.set(`${e.row}:${e.col}`,e.url);let M=new Set;for(let e of t.commentRefs??[]){let t=y(e);t&&M.add(`${t.row}:${t.col}`)}let ie={worksheet:t,styles:n,cellMap:A,mergeAnchorMap:j,mergeSkipSet:ee,cfContext:te,colWidths:O,rowHeights:k,frozenColWidths:w,frozenRowHeights:T,frozenW:E,frozenH:D,startRow:h,startCol:g,cs:o,dpr:a,autoFilterCells:ne,hyperlinkMap:re,commentCells:M,tableStyleMap:tt(t)},N=p,P=m,F=N+E,I=P+D,ae=Math.max(0,s-F),L=Math.max(0,c-I);S>0&&C>0&&rt(e,ie,1,1,w,T,0,0,N,P,N,P,E,D),S>0&&rt(e,ie,1,g,O,T,b,0,F,P,F,P,ae,D),C>0&&rt(e,ie,h,1,w,k,0,x,N,I,N,I,E,L),rt(e,ie,h,g,O,k,b,x,F,I,F,I,ae,L),t.images&&t.images.length>0&&i.loadedImages&&ot(e,t,i.loadedImages,o,h,g,b,x,F,I,ae,L),t.shapeGroups&&t.shapeGroups.length>0&&st(e,t,o,h,g,b,x,F,I,ae,L,i.loadedImages),t.charts&&t.charts.length>0&&_t(e,t,o,h,g,b,x,F,I,ae,L),t.slicers&&t.slicers.length>0&&At(e,t,o,h,g,b,x,F,I,ae,L),at(e,s,c,h,g,_,v,O,k,b,x,w,T,E,D,p,m,o,a),S>0&&(e.save(),e.strokeStyle=u,e.lineWidth=.5,e.beginPath(),e.moveTo(p,I+.5),e.lineTo(s,I+.5),e.stroke(),e.restore()),C>0&&(e.save(),e.strokeStyle=u,e.lineWidth=.5,e.beginPath(),e.moveTo(F+.5,m),e.lineTo(F+.5,c),e.stroke(),e.restore())}function at(e,t,n,r,i,a,s,c,l,u,d,f,p,m,h,g,_,v,y){let b=`#f8f9fa`,x=`#c8ccd0`,S=`#444`,C=`${Math.max(1,Math.round(11*v))}px ${o}`,w=g+m,T=_+h,E=.5/y;e.fillStyle=b,e.fillRect(0,0,g,_),e.strokeStyle=x,e.lineWidth=.5,e.beginPath(),e.moveTo(E,0),e.lineTo(E,_),e.moveTo(0,E),e.lineTo(g,E),e.moveTo(g-E,0),e.lineTo(g-E,_),e.moveTo(0,_-E),e.lineTo(g,_-E),e.stroke(),e.font=C,e.fillStyle=S;let D=(t,n,r)=>{e.fillStyle=b,e.fillRect(n,0,r,_),e.strokeStyle=x,e.lineWidth=.5,e.beginPath(),e.moveTo(n+r-E,0),e.lineTo(n+r-E,_),e.moveTo(n,_-E),e.lineTo(n+r,_-E),e.moveTo(n,E),e.lineTo(n+r,E),e.stroke(),e.fillStyle=S,e.textAlign=`center`,e.textBaseline=`middle`,e.fillText(V(t),n+r/2,_/2)},O=(t,n,r)=>{e.fillStyle=b,e.fillRect(0,n,g,r),e.strokeStyle=x,e.lineWidth=.5,e.beginPath(),e.moveTo(g-E,n),e.lineTo(g-E,n+r),e.moveTo(0,n+r-E),e.lineTo(g,n+r-E),e.moveTo(E,n),e.lineTo(E,n+r),e.stroke(),e.fillStyle=S,e.textAlign=`right`,e.textBaseline=`middle`,e.fillText(String(t),g-Math.max(2,Math.round(4*v)),n+r/2)};if(f.length>0){e.save(),e.beginPath(),e.rect(g,0,m,_),e.clip();let t=g;for(let e=0;e<f.length;e++)D(e+1,t,f[e]),t+=f[e];e.restore()}e.save(),e.beginPath(),e.rect(w,0,t-w,_),e.clip();let k=w-u;for(let e=0;e<c.length;e++){let n=c[e];k+n>w&&k<t&&D(i+e,k,n),k+=n}if(e.restore(),p.length>0){e.save(),e.beginPath(),e.rect(0,_,g,h),e.clip();let t=_;for(let e=0;e<p.length;e++)O(e+1,t,p[e]),t+=p[e];e.restore()}e.save(),e.beginPath(),e.rect(0,T,g,n-T),e.clip();let A=T-d;for(let e=0;e<l.length;e++){let t=l[e];A+t>T&&A<n&&O(r+e,A,t),A+=t}e.restore()}var Z=9525;function Q(e,t,n){let r=0;for(let i=1;i<t;i++)r+=Math.round(d(e.colWidths[i]??e.defaultColWidth)*n);return r}function $(e,t,n){let r=0;for(let i=1;i<t;i++)r+=Math.round(f(e.rowHeights[i]??e.defaultRowHeight)*n);return r}function ot(e,t,n,r,i,a,o,s,c,l,u,d){if(u<=0||d<=0)return;let f=Q(t,a,r),p=$(t,i,r);e.save(),e.beginPath(),e.rect(c,l,u,d),e.clip();for(let i of t.images){let a=n.get(i.dataUrl);if(!a)continue;let m=i.fromCol+1,h=i.fromRow+1,g=i.toCol+1,_=i.toRow+1,v=Q(t,m,r)+i.fromColOff*r/Z,y=$(t,h,r)+i.fromRowOff*r/Z,b=Q(t,g,r)+i.toColOff*r/Z,x=$(t,_,r)+i.toRowOff*r/Z,S=b-v,C=x-y;if(S<=0||C<=0)continue;let w=c+(v-f)-o,T=l+(y-p)-s;w+S<c||w>c+u||T+C<l||T>l+d||e.drawImage(a,w,T,S,C)}e.restore()}function st(e,t,n,r,i,a,o,s,c,l,u,d){if(l<=0||u<=0)return;let f=t.shapeGroups;if(!f||f.length===0)return;let p=Q(t,i,n),m=$(t,r,n);e.save(),e.beginPath(),e.rect(s,c,l,u),e.clip();for(let r of f){let i=r.fromCol+1,f=r.fromRow+1,h=r.toCol+1,g=r.toRow+1,_=Q(t,i,n)+r.fromColOff*n/Z,v=$(t,f,n)+r.fromRowOff*n/Z,y=Q(t,h,n)+r.toColOff*n/Z,b=$(t,g,n)+r.toRowOff*n/Z,x=y-_,S=b-v;if(x<=0||S<=0)continue;let C=s+(_-p)-a,w=c+(v-m)-o;if(!(C+x<s||C>s+l)&&!(w+S<c||w>c+u))for(let t of r.shapes){let n=C+t.x*x,r=w+t.y*S,i=t.w*x,a=t.h*S;i<=0||a<=0||ct(e,t,n,r,i,a,d)}}e.restore()}function ct(e,t,n,r,i,a,o){if(e.save(),t.rot===0?e.translate(n,r):(e.translate(n+i/2,r+a/2),e.rotate(t.rot*Math.PI/180),e.translate(-i/2,-a/2)),t.geom.type===`custom`)for(let n of t.geom.paths){if(n.w<=0||n.h<=0)continue;let r=i/n.w,o=a/n.h;e.beginPath();let s=0,c=0,l=0,u=0;for(let t of n.commands)switch(t.op){case`moveTo`:{let n=t.x*r,i=t.y*o;e.moveTo(n,i),s=l=n,c=u=i;break}case`lineTo`:{let n=t.x*r,i=t.y*o;e.lineTo(n,i),s=n,c=i;break}case`cubicBezTo`:{let n=t.x3*r,i=t.y3*o;e.bezierCurveTo(t.x1*r,t.y1*o,t.x2*r,t.y2*o,n,i),s=n,c=i;break}case`quadBezTo`:{let n=t.x2*r,i=t.y2*o;e.quadraticCurveTo(t.x1*r,t.y1*o,n,i),s=n,c=i;break}case`arcTo`:{let n=t.wr*r,i=t.hr*o;if(n<=0||i<=0)break;let a=t.stAng/6e4*(Math.PI/180),l=t.swAng/6e4*(Math.PI/180),u=s-Math.cos(a)*n,d=c-Math.sin(a)*i,f=a+l;e.ellipse(u,d,n,i,0,a,f,l<0),s=u+Math.cos(f)*n,c=d+Math.sin(f)*i;break}case`close`:e.closePath(),s=l,c=u;break}lt(e,t)}else if(t.geom.type===`preset`){switch(e.beginPath(),t.geom.name){case`ellipse`:case`roundRect`:{let t=i/2,n=a/2;e.ellipse(t,n,t,n,0,0,Math.PI*2);break}default:e.rect(0,0,i,a)}lt(e,t)}else if(t.geom.type===`image`){let n=o?.get(t.geom.dataUrl);n&&e.drawImage(n,0,0,i,a)}e.restore()}function lt(e,t){t.fillColor&&(e.fillStyle=t.fillColor,e.fill()),t.strokeColor&&t.strokeWidth>0&&(e.strokeStyle=t.strokeColor,e.lineWidth=Math.max(.5,t.strokeWidth/Z),e.stroke())}function ut(e,t,n,r,i,a,o){if(r===n&&i===t)return e;let s=(e,r)=>{if(e===t&&r===n)return null;let i=a.get(`${e}:${r}`);return i?w(o,i.styleIndex).border:null},c=s(t,r),l=s(i,n),u=s(i,r),d=(e,...t)=>{if(e?.style)return e;for(let e of t)if(e?.style)return e;return e??null};return{left:e.left,top:e.top,right:d(c?.right,u?.right,e.right),bottom:d(l?.bottom,u?.bottom,e.bottom),diagonalUp:e.diagonalUp??null,diagonalDown:e.diagonalDown??null}}function dt(e,t){if(!t)return e;let n=(e,t)=>t&&t.style?t:e??null;return{left:n(e.left,t.left),right:n(e.right,t.right),top:n(e.top,t.top),bottom:n(e.bottom,t.bottom),diagonalUp:n(e.diagonalUp,t.diagonalUp),diagonalDown:n(e.diagonalDown,t.diagonalDown)}}function ft(e,t,n,r,i,a){let o=[{edge:t.top,x1:n,y1:r,x2:n+i,y2:r},{edge:t.bottom,x1:n,y1:r+a,x2:n+i,y2:r+a},{edge:t.left,x1:n,y1:r,x2:n,y2:r+a},{edge:t.right,x1:n+i,y1:r,x2:n+i,y2:r+a},{edge:t.diagonalUp,x1:n,y1:r+a,x2:n+i,y2:r},{edge:t.diagonalDown,x1:n,y1:r,x2:n+i,y2:r+a}];for(let{edge:t,x1:n,y1:r,x2:i,y2:a}of o){if(!t||!t.style||t.style===`none`)continue;e.beginPath(),e.strokeStyle=t.color?p(t.color):`#000000`,e.lineWidth=pt(t.style);let o=mt(t.style);e.setLineDash(o),e.moveTo(n,r),e.lineTo(i,a),e.stroke(),e.setLineDash([])}}function pt(e){switch(e){case`thick`:return 2;case`medium`:case`mediumDashed`:case`mediumDashDot`:case`mediumDashDotDot`:case`slantDashDot`:return 1.5;case`hair`:return .5;default:return 1}}function mt(e){switch(e){case`dashed`:case`mediumDashed`:return[4,3];case`dotted`:return[2,2];case`dashDot`:case`mediumDashDot`:return[4,2,1,2];case`dashDotDot`:case`mediumDashDotDot`:return[4,2,1,2,1,2];case`slantDashDot`:return[5,3,1,3];default:return[]}}function ht(e){let t=e.chartType,n=e.grouping;if(t===`bar`){let t=e.barDir===`bar`;return n===`stacked`?t?`stackedBarH`:`stackedBar`:n===`percentStacked`?t?`stackedBarHPct`:`stackedBarPct`:t?`clusteredBarH`:`clusteredBar`}return t===`line`?n===`stacked`?`stackedLine`:n===`percentStacked`?`stackedLinePct`:`line`:t===`area`?n===`stacked`?`stackedArea`:n===`percentStacked`?`stackedAreaPct`:`area`:t}function gt(e){return{chartType:ht(e),title:e.title,categories:e.categories,series:e.series.map(e=>({name:e.name,color:e.color??null,values:e.values,seriesType:e.seriesType??null,categories:e.categories.length>0?e.categories:null,showMarker:e.showMarker??null,valFormatCode:e.valFormatCode??null})),showDataLabels:e.showDataLabels??!1,valMin:null,valMax:null,catAxisTitle:e.catAxisTitle??null,valAxisTitle:e.valAxisTitle??null,catAxisHidden:e.catAxisHidden??!1,valAxisHidden:e.valAxisHidden??!1,plotAreaBg:null,chartBg:e.hasChartSpPr?e.chartBg??null:`FFFFFF`,legendManualLayout:e.legendManualLayout??null,showLegend:e.showLegend??!1,legendPos:e.legendPos??null,catAxisCrossBetween:`between`,valAxisMajorTickMark:`cross`,catAxisMajorTickMark:`cross`,titleFontSizeHpt:e.titleFontSizeHpt??null,titleFontColor:e.titleFontColor??null,titleFontFace:e.titleFontFace??null,catAxisFontSizeHpt:e.catAxisFontSizeHpt??null,valAxisFontSizeHpt:e.valAxisFontSizeHpt??null,dataLabelFontSizeHpt:null,subtotalIndices:[],valAxisFormatCode:e.valAxisFormatCode??null,barGapWidth:e.barGapWidth??null,barOverlap:e.barOverlap??null,dataLabelPosition:e.dataLabelPosition??null,dataLabelFontColor:e.dataLabelFontColor??null,dataLabelFormatCode:e.dataLabelFormatCode??null}}function _t(e,n,r,i,a,o,s,c,l,u,d){if(u<=0||d<=0)return;let f=Q(n,a,r),p=$(n,i,r);for(let i of n.charts){let a=i.fromCol+1,m=i.fromRow+1,h=i.toCol+1,g=i.toRow+1,_=Q(n,a,r)+i.fromColOff*r/Z,v=$(n,m,r)+i.fromRowOff*r/Z,y=Q(n,h,r)+i.toColOff*r/Z,b=$(n,g,r)+i.toRowOff*r/Z,x=y-_,S=b-v;if(x<=0||S<=0)continue;let C=c+(_-f)-o,w=l+(v-p)-s;if(C+x<c||C>c+u||w+S<l||w>l+d)continue;e.save(),e.beginPath(),e.rect(c,l,u,d),e.clip();let T=4/3*r;t.t(e,gt(i.chart),{x:C,y:w,w:x,h:S},T),e.restore()}}var vt=`600 12px "Meiryo UI", "Segoe UI", sans-serif`,yt=`11px "Meiryo UI", "Segoe UI", sans-serif`,bt=`#FFFFFF`,xt=`#BFBFBF`,St=`#F2F2F2`,Ct=`#404040`,wt=`#FFFFFF`,Tt=`#000000`,Et=`#A5A5A5`,Dt=`#E7E6E6`,Ot=`#A6A6A6`,kt=`#C6C6C6`;function At(e,t,n,r,i,a,o,s,c,l,u){if(l<=0||u<=0)return;let d=t.slicers;if(!d)return;let f=Q(t,i,n),p=$(t,r,n);for(let r of d){let i=r.fromCol+1,d=r.fromRow+1,m=r.toCol+1,h=r.toRow+1,g=Q(t,i,n)+r.fromColOff*n/Z,_=$(t,d,n)+r.fromRowOff*n/Z,v=Q(t,m,n)+r.toColOff*n/Z,y=$(t,h,n)+r.toRowOff*n/Z,b=v-g,x=y-_;if(b<=0||x<=0)continue;let S=s+(g-f)-a,C=c+(_-p)-o;S+b<s||S>s+l||C+x<c||C>c+u||(e.save(),e.beginPath(),e.rect(s,c,l,u),e.clip(),jt(e,r.caption,r.items,S,C,b,x,n),e.restore())}}function jt(e,t,n,r,i,a,o,s){e.fillStyle=bt,e.fillRect(r,i,a,o),e.strokeStyle=xt,e.lineWidth=1,e.strokeRect(r+.5,i+.5,a-1,o-1);let c=Math.max(20*s,14);e.fillStyle=St,e.fillRect(r+1,i+1,a-2,c),e.fillStyle=Ct,e.font=Mt(vt,s),e.textBaseline=`middle`,e.textAlign=`left`;let l=6*s;if(Nt(e,t,r+l,i+c/2+1,a-2*l),n.length===0)return;let u=Math.max(1,Math.round(2*s)),d=4*s,f=r+d,p=i+c+d,m=a-2*d,h=o-c-2*d;if(m<=0||h<=0)return;let g=Math.max(18*s,16),_=Math.max(1,Math.floor((h+u)/(g+u))),v=Math.min(n.length,_),y=Math.min(g,(h-u*(v-1))/v);if(y<=0)return;e.font=Mt(yt,s);let b=8*s;for(let t=0;t<v;t++){let r=n[t],i=p+t*(y+u),a=r.selected;e.fillStyle=a?wt:Dt,e.fillRect(f,i,m,y),e.strokeStyle=a?Et:kt,e.lineWidth=1,e.strokeRect(f+.5,i+.5,m-1,y-1),e.fillStyle=a?Tt:Ot,Nt(e,r.name,f+b,i+y/2+1,m-2*b)}}function Mt(e,t){return e.replace(/(\d+(?:\.\d+)?)px/,(e,n)=>`${Math.round(Number(n)*t)}px`)}function Nt(e,t,n,r,i){if(i<=0)return;let a=t;if(e.measureText(a).width>i){for(;a.length>0&&e.measureText(a+`…`).width>i;)a=a.slice(0,-1);a=a.length>0?a+`…`:``}e.fillText(a,n,r)}var Pt=class{worker;parsedWorkbook=null;sheetCache=new Map;imageCache=new Map;rawData=null;constructor(){this.worker=new i;let e=new URL(a,location.href).href;this.worker.postMessage({type:`init`,wasmUrl:e})}async load(e){let t=typeof e==`string`?await fetch(e).then(e=>e.arrayBuffer()):e;this.rawData=t,this.parsedWorkbook=await this.sendMessage({type:`parse`,data:t.slice(0)})}get sheetNames(){return this.parsedWorkbook?.workbook.sheets.map(e=>e.name)??[]}get sheetCount(){return this.parsedWorkbook?.workbook.sheets.length??0}async getWorksheet(e){if(this.sheetCache.has(e))return this.sheetCache.get(e);if(!this.parsedWorkbook||!this.rawData)throw Error(`Workbook not loaded`);let t=this.parsedWorkbook.workbook.sheets[e];if(!t)throw Error(`Sheet index ${e} out of range`);let n=await this.sendMessage({type:`parseSheet`,data:this.rawData.slice(0),sheetIndex:e,sheetName:t.name});return this.sheetCache.set(e,n),n}async renderViewport(e,t,n,r={}){if(!this.parsedWorkbook)throw Error(`Workbook not loaded`);let i=this.sheetCache.get(t)??await this.getWorksheet(t),a=this.parsedWorkbook.styles,o=[];if(i.images)for(let e of i.images)this.imageCache.has(e.dataUrl)||o.push(e.dataUrl);if(i.shapeGroups)for(let e of i.shapeGroups)for(let t of e.shapes)t.geom.type===`image`&&!this.imageCache.has(t.geom.dataUrl)&&o.push(t.geom.dataUrl);o.length>0&&await Promise.all(o.map(async e=>{let t=new Image;t.src=e,await new Promise((e,n)=>{t.onload=()=>e(),t.onerror=()=>n(Error(`image decode failed`))}),this.imageCache.set(e,t)})).catch(()=>{});let s=r.dpr??(typeof window<`u`?window.devicePixelRatio:1),c=e instanceof HTMLCanvasElement?e.clientWidth||800:e.width,l=e instanceof HTMLCanvasElement?e.clientHeight||600:e.height,u=r.width??c,d=r.height??l;e.width=Math.round(u*s),e.height=Math.round(d*s),e instanceof HTMLCanvasElement&&(e.style.width=`${u}px`,e.style.height=`${d}px`);let f=e.getContext(`2d`);f.scale(s,s),it(f,i,a,n,{...r,dpr:s,loadedImages:this.imageCache})}destroy(){this.worker.terminate()}sendMessage(e){return new Promise((t,n)=>{let r=e=>{this.worker.removeEventListener(`message`,r),e.data.type===`error`?n(Error(e.data.message)):e.data.type===`parsed`?t(e.data.workbook):e.data.type===`parsedSheet`&&t(e.data.worksheet)};this.worker.addEventListener(`message`,r),this.worker.postMessage(e)})}},Ft=30,It=class{wb;canvas;canvasArea;scrollHost;spacer;tabBar;tabs=[];currentSheet=0;currentWorksheet=null;opts;resizeObserver=null;constructor(e,t={}){this.opts=t,this.wb=new Pt;let n=document.createElement(`div`);n.style.cssText=`position:relative;width:100%;height:100%;border:1px solid #c8ccd0;background:#fff;box-sizing:border-box;font-family:sans-serif;display:flex;flex-direction:column;`,this.canvasArea=document.createElement(`div`),this.canvasArea.style.cssText=`position:relative;flex:1;min-height:0;overflow:hidden;`,this.canvas=document.createElement(`canvas`),this.canvas.style.cssText=`position:absolute;top:0;left:0;z-index:0;display:block;`,this.scrollHost=document.createElement(`div`),this.scrollHost.style.cssText=`position:absolute;inset:0;overflow:auto;z-index:1;background:transparent;`,this.spacer=document.createElement(`div`),this.spacer.style.cssText=`position:absolute;top:0;left:0;pointer-events:none;`,this.scrollHost.appendChild(this.spacer),this.canvasArea.appendChild(this.canvas),this.canvasArea.appendChild(this.scrollHost),this.tabBar=document.createElement(`div`),this.tabBar.style.cssText=`display:flex;align-items:flex-end;height:${Ft}px;flex-shrink:0;background:#f0f0f0;border-top:1px solid #c8ccd0;overflow-x:auto;overflow-y:hidden;padding:0 4px;gap:1px;scrollbar-width:none;`;let r=document.createElement(`style`);r.textContent=`.xlsx-tab-bar::-webkit-scrollbar{display:none}`,document.head.appendChild(r),this.tabBar.classList.add(`xlsx-tab-bar`),n.appendChild(this.canvasArea),n.appendChild(this.tabBar),e.appendChild(n),this.scrollHost.addEventListener(`scroll`,()=>this.renderCurrentSheet()),this.resizeObserver=new ResizeObserver(()=>this.renderCurrentSheet()),this.resizeObserver.observe(this.canvasArea)}async load(e){try{await this.wb.load(e),this.buildTabs(),this.opts.onReady?.(this.wb.sheetNames),await this.showSheet(0)}catch(e){this.opts.onError?.(e instanceof Error?e:Error(String(e)))}}async showSheet(e){this.currentSheet=e,this.scrollHost.scrollLeft=0,this.scrollHost.scrollTop=0,this.updateTabActive(e),this.currentWorksheet=await this.wb.getWorksheet(e),this.updateSpacerSize(this.currentWorksheet),await this.renderCurrentSheet(),this.opts.onSheetChange?.(e,this.wb.sheetNames[e]??``)}buildTabs(){this.tabBar.innerHTML=``,this.tabs=[],this.wb.sheetNames.forEach((e,t)=>{let n=document.createElement(`button`);n.textContent=e,n.title=e,n.style.cssText=this.tabStyle(!1),n.addEventListener(`click`,()=>this.showSheet(t)),this.tabBar.appendChild(n),this.tabs.push(n)})}updateTabActive(e){this.tabs.forEach((t,n)=>{t.style.cssText=this.tabStyle(n===e)}),this.tabs[e]?.scrollIntoView({block:`nearest`,inline:`nearest`})}tabStyle(e){let t=Ft-2,n=Ft-5;return e?`display:inline-block;padding:0 14px;border:1px solid #c8ccd0;border-bottom:none;border-radius:3px 3px 0 0;cursor:pointer;white-space:nowrap;max-width:160px;overflow:hidden;text-overflow:ellipsis;outline:none;box-sizing:border-box;height:${t}px;font-size:13px;background:#fff;color:#000;border-bottom:1px solid #fff;font-weight:600;position:relative;top:1px;`:`display:inline-block;padding:0 14px;border:1px solid #c8ccd0;border-bottom:none;border-radius:3px 3px 0 0;cursor:pointer;white-space:nowrap;max-width:160px;overflow:hidden;text-overflow:ellipsis;outline:none;box-sizing:border-box;height:${n}px;font-size:11px;background:#e0e0e0;color:#555;`}updateSpacerSize(e){let t=this.opts.cellScale??1,n=e.freezeRows??0,r=e.freezeCols??0,i=0;for(let t=1;t<=r;t++)i+=d(e.colWidths[t]??e.defaultColWidth);let a=0;for(let t=1;t<=n;t++)a+=f(e.rowHeights[t]??e.defaultRowHeight);let o=Math.max(50,n),s=Math.max(26,r);for(let t of e.rows){t.index>o&&(o=t.index);for(let e of t.cells)e.col>s&&(s=e.col)}o+=30,s+=10;let c=50+i;for(let t=r+1;t<=s;t++)c+=d(e.colWidths[t]??e.defaultColWidth);let l=22+a;for(let t=n+1;t<=o;t++)l+=f(e.rowHeights[t]??e.defaultRowHeight);this.spacer.style.width=`${Math.round(c*t)}px`,this.spacer.style.height=`${Math.round(l*t)}px`}async renderCurrentSheet(){if(!this.currentWorksheet)return;let e=this.currentWorksheet,t=this.canvasArea.clientWidth,n=this.canvasArea.clientHeight;if(t<=0||n<=0)return;let r=this.opts.cellScale??1,i=window.devicePixelRatio??1,a=e.freezeRows??0,o=e.freezeCols??0,s=0;for(let t=1;t<=o;t++)s+=d(e.colWidths[t]??e.defaultColWidth);let c=0;for(let t=1;t<=a;t++)c+=f(e.rowHeights[t]??e.defaultRowHeight);let l=this.scrollHost.scrollLeft/r,u=this.scrollHost.scrollTop/r,p=o+1,m=0,h=0;for(;;){let t=d(e.colWidths[p]??e.defaultColWidth);if(m+t>l){h=l-m;break}if(m+=t,p++,p>16384)break}let g=a+1,_=0,v=0;for(;;){let t=f(e.rowHeights[g]??e.defaultRowHeight);if(_+t>u){v=u-_;break}if(_+=t,g++,g>1048576)break}let y=t/r-50-s,b=n/r-22-c,x=0;{let t=-h,n=p;for(;t<y+h&&n<=16384;)t+=d(e.colWidths[n]??e.defaultColWidth),x++,n++;x+=2}let S=0;{let t=-v,n=g;for(;t<b+v&&n<=1048576;)t+=f(e.rowHeights[n]??e.defaultRowHeight),S++,n++;S+=2}let C={row:g,col:p,rows:S,cols:x};await this.wb.renderViewport(this.canvas,this.currentSheet,C,{width:t,height:n,dpr:i,cellScale:r,scrollOffsetX:h,scrollOffsetY:v,freezeRows:a,freezeCols:o})}get sheetNames(){return this.wb.sheetNames}destroy(){this.resizeObserver?.disconnect(),this.wb.destroy()}},Lt=e.n({XlsxViewer:()=>It,XlsxWorkbook:()=>Pt,autoResize:()=>e.t});Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return It}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return Pt}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return Lt}});
9
+ `),n=Math.round(I.size*l*1.2),r=t.length*n,i;q===`top`?(i=d+2,e.textBaseline=`top`):q===`center`?(i=d+(P-r)/2,e.textBaseline=`top`):(i=d+P-r-2,e.textBaseline=`top`);for(let r=0;r<t.length;r++)e.fillText(t[r],Ce,i+r*n)}else{let t;q===`top`?(e.textBaseline=`top`,t=d+2):q===`center`?(e.textBaseline=`middle`,t=d+P/2):(e.textBaseline=`bottom`,t=d+P-2),e.fillText(W,Ce,t)}}e.restore(),W&&t.onTextRun&&t.onTextRun({text:W,x:u,y:d,width:N,height:P,row:s,col:a})}}e.restore()}function it(e,t,n,r,i={}){let a=i.dpr??1,o=i.cellScale??1,s=e.canvas.width/a,c=e.canvas.height/a;e.clearRect(0,0,s,c),e.fillStyle=`#ffffff`,e.fillRect(0,0,s,c);let l=e=>Math.round(e*o),p=l(50),m=l(22),{row:h,col:g,rows:_,cols:v}=r,b=(i.scrollOffsetX??0)*o,x=(i.scrollOffsetY??0)*o,S=i.freezeRows??0,C=i.freezeCols??0,w=[];for(let e=1;e<=C;e++)w.push(l(d(t.colWidths[e]??t.defaultColWidth)));let T=[];for(let e=1;e<=S;e++)T.push(l(f(t.rowHeights[e]??t.defaultRowHeight)));let E=w.reduce((e,t)=>e+t,0),D=T.reduce((e,t)=>e+t,0),O=[];for(let e=g;e<g+v;e++)O.push(l(d(t.colWidths[e]??t.defaultColWidth)));let k=[];for(let e=h;e<h+_;e++)k.push(l(f(t.rowHeights[e]??t.defaultRowHeight)));let A=new Map;for(let e of t.rows)for(let t of e.cells)A.set(`${t.row}:${t.col}`,t);let j=new Map,ee=new Set;for(let e of t.mergeCells??[]){let n=0;for(let r=e.left;r<=e.right;r++)n+=l(d(t.colWidths[r]??t.defaultColWidth));let r=0;for(let n=e.top;n<=e.bottom;n++)r+=l(f(t.rowHeights[n]??t.defaultRowHeight));j.set(`${e.top}:${e.left}`,{totalW:n,totalH:r,right:e.right,bottom:e.bottom});for(let t=e.top;t<=e.bottom;t++)for(let n=e.left;n<=e.right;n++)t===e.top&&n===e.left||ee.add(`${t}:${n}`)}let te=ue(t),ne=new Set;if(t.autoFilter){let e=t.autoFilter;for(let t=e.left;t<=e.right;t++)ne.add(`${e.top}:${t}`)}let re=new Map;for(let e of t.hyperlinks??[])e.url&&re.set(`${e.row}:${e.col}`,e.url);let M=new Set;for(let e of t.commentRefs??[]){let t=y(e);t&&M.add(`${t.row}:${t.col}`)}let ie={worksheet:t,styles:n,cellMap:A,mergeAnchorMap:j,mergeSkipSet:ee,cfContext:te,colWidths:O,rowHeights:k,frozenColWidths:w,frozenRowHeights:T,frozenW:E,frozenH:D,startRow:h,startCol:g,cs:o,dpr:a,autoFilterCells:ne,hyperlinkMap:re,commentCells:M,tableStyleMap:tt(t),onTextRun:i.onTextRun},N=p,P=m,F=N+E,I=P+D,ae=Math.max(0,s-F),L=Math.max(0,c-I);S>0&&C>0&&rt(e,ie,1,1,w,T,0,0,N,P,N,P,E,D),S>0&&rt(e,ie,1,g,O,T,b,0,F,P,F,P,ae,D),C>0&&rt(e,ie,h,1,w,k,0,x,N,I,N,I,E,L),rt(e,ie,h,g,O,k,b,x,F,I,F,I,ae,L),t.images&&t.images.length>0&&i.loadedImages&&ot(e,t,i.loadedImages,o,h,g,b,x,F,I,ae,L),t.shapeGroups&&t.shapeGroups.length>0&&st(e,t,o,h,g,b,x,F,I,ae,L,i.loadedImages),t.charts&&t.charts.length>0&&_t(e,t,o,h,g,b,x,F,I,ae,L),t.slicers&&t.slicers.length>0&&At(e,t,o,h,g,b,x,F,I,ae,L),at(e,s,c,h,g,_,v,O,k,b,x,w,T,E,D,p,m,o,a),S>0&&(e.save(),e.strokeStyle=u,e.lineWidth=.5,e.beginPath(),e.moveTo(p,I+.5),e.lineTo(s,I+.5),e.stroke(),e.restore()),C>0&&(e.save(),e.strokeStyle=u,e.lineWidth=.5,e.beginPath(),e.moveTo(F+.5,m),e.lineTo(F+.5,c),e.stroke(),e.restore())}function at(e,t,n,r,i,a,s,c,l,u,d,f,p,m,h,g,_,v,y){let b=`#f8f9fa`,x=`#c8ccd0`,S=`#444`,C=`${Math.max(1,Math.round(11*v))}px ${o}`,w=g+m,T=_+h,E=.5/y;e.fillStyle=b,e.fillRect(0,0,g,_),e.strokeStyle=x,e.lineWidth=.5,e.beginPath(),e.moveTo(E,0),e.lineTo(E,_),e.moveTo(0,E),e.lineTo(g,E),e.moveTo(g-E,0),e.lineTo(g-E,_),e.moveTo(0,_-E),e.lineTo(g,_-E),e.stroke(),e.font=C,e.fillStyle=S;let D=(t,n,r)=>{e.fillStyle=b,e.fillRect(n,0,r,_),e.strokeStyle=x,e.lineWidth=.5,e.beginPath(),e.moveTo(n+r-E,0),e.lineTo(n+r-E,_),e.moveTo(n,_-E),e.lineTo(n+r,_-E),e.moveTo(n,E),e.lineTo(n+r,E),e.stroke(),e.fillStyle=S,e.textAlign=`center`,e.textBaseline=`middle`,e.fillText(V(t),n+r/2,_/2)},O=(t,n,r)=>{e.fillStyle=b,e.fillRect(0,n,g,r),e.strokeStyle=x,e.lineWidth=.5,e.beginPath(),e.moveTo(g-E,n),e.lineTo(g-E,n+r),e.moveTo(0,n+r-E),e.lineTo(g,n+r-E),e.moveTo(E,n),e.lineTo(E,n+r),e.stroke(),e.fillStyle=S,e.textAlign=`right`,e.textBaseline=`middle`,e.fillText(String(t),g-Math.max(2,Math.round(4*v)),n+r/2)};if(f.length>0){e.save(),e.beginPath(),e.rect(g,0,m,_),e.clip();let t=g;for(let e=0;e<f.length;e++)D(e+1,t,f[e]),t+=f[e];e.restore()}e.save(),e.beginPath(),e.rect(w,0,t-w,_),e.clip();let k=w-u;for(let e=0;e<c.length;e++){let n=c[e];k+n>w&&k<t&&D(i+e,k,n),k+=n}if(e.restore(),p.length>0){e.save(),e.beginPath(),e.rect(0,_,g,h),e.clip();let t=_;for(let e=0;e<p.length;e++)O(e+1,t,p[e]),t+=p[e];e.restore()}e.save(),e.beginPath(),e.rect(0,T,g,n-T),e.clip();let A=T-d;for(let e=0;e<l.length;e++){let t=l[e];A+t>T&&A<n&&O(r+e,A,t),A+=t}e.restore()}var Z=9525;function Q(e,t,n){let r=0;for(let i=1;i<t;i++)r+=Math.round(d(e.colWidths[i]??e.defaultColWidth)*n);return r}function $(e,t,n){let r=0;for(let i=1;i<t;i++)r+=Math.round(f(e.rowHeights[i]??e.defaultRowHeight)*n);return r}function ot(e,t,n,r,i,a,o,s,c,l,u,d){if(u<=0||d<=0)return;let f=Q(t,a,r),p=$(t,i,r);e.save(),e.beginPath(),e.rect(c,l,u,d),e.clip();for(let i of t.images){let a=n.get(i.dataUrl);if(!a)continue;let m=i.fromCol+1,h=i.fromRow+1,g=i.toCol+1,_=i.toRow+1,v=Q(t,m,r)+i.fromColOff*r/Z,y=$(t,h,r)+i.fromRowOff*r/Z,b=Q(t,g,r)+i.toColOff*r/Z,x=$(t,_,r)+i.toRowOff*r/Z,S=b-v,C=x-y;if(S<=0||C<=0)continue;let w=c+(v-f)-o,T=l+(y-p)-s;w+S<c||w>c+u||T+C<l||T>l+d||e.drawImage(a,w,T,S,C)}e.restore()}function st(e,t,n,r,i,a,o,s,c,l,u,d){if(l<=0||u<=0)return;let f=t.shapeGroups;if(!f||f.length===0)return;let p=Q(t,i,n),m=$(t,r,n);e.save(),e.beginPath(),e.rect(s,c,l,u),e.clip();for(let r of f){let i=r.fromCol+1,f=r.fromRow+1,h=r.toCol+1,g=r.toRow+1,_=Q(t,i,n)+r.fromColOff*n/Z,v=$(t,f,n)+r.fromRowOff*n/Z,y=Q(t,h,n)+r.toColOff*n/Z,b=$(t,g,n)+r.toRowOff*n/Z,x=y-_,S=b-v;if(x<=0||S<=0)continue;let C=s+(_-p)-a,w=c+(v-m)-o;if(!(C+x<s||C>s+l)&&!(w+S<c||w>c+u))for(let t of r.shapes){let n=C+t.x*x,r=w+t.y*S,i=t.w*x,a=t.h*S;i<=0||a<=0||ct(e,t,n,r,i,a,d)}}e.restore()}function ct(e,t,n,r,i,a,o){if(e.save(),t.rot===0?e.translate(n,r):(e.translate(n+i/2,r+a/2),e.rotate(t.rot*Math.PI/180),e.translate(-i/2,-a/2)),t.geom.type===`custom`)for(let n of t.geom.paths){if(n.w<=0||n.h<=0)continue;let r=i/n.w,o=a/n.h;e.beginPath();let s=0,c=0,l=0,u=0;for(let t of n.commands)switch(t.op){case`moveTo`:{let n=t.x*r,i=t.y*o;e.moveTo(n,i),s=l=n,c=u=i;break}case`lineTo`:{let n=t.x*r,i=t.y*o;e.lineTo(n,i),s=n,c=i;break}case`cubicBezTo`:{let n=t.x3*r,i=t.y3*o;e.bezierCurveTo(t.x1*r,t.y1*o,t.x2*r,t.y2*o,n,i),s=n,c=i;break}case`quadBezTo`:{let n=t.x2*r,i=t.y2*o;e.quadraticCurveTo(t.x1*r,t.y1*o,n,i),s=n,c=i;break}case`arcTo`:{let n=t.wr*r,i=t.hr*o;if(n<=0||i<=0)break;let a=t.stAng/6e4*(Math.PI/180),l=t.swAng/6e4*(Math.PI/180),u=s-Math.cos(a)*n,d=c-Math.sin(a)*i,f=a+l;e.ellipse(u,d,n,i,0,a,f,l<0),s=u+Math.cos(f)*n,c=d+Math.sin(f)*i;break}case`close`:e.closePath(),s=l,c=u;break}lt(e,t)}else if(t.geom.type===`preset`){switch(e.beginPath(),t.geom.name){case`ellipse`:case`roundRect`:{let t=i/2,n=a/2;e.ellipse(t,n,t,n,0,0,Math.PI*2);break}default:e.rect(0,0,i,a)}lt(e,t)}else if(t.geom.type===`image`){let n=o?.get(t.geom.dataUrl);n&&e.drawImage(n,0,0,i,a)}e.restore()}function lt(e,t){t.fillColor&&(e.fillStyle=t.fillColor,e.fill()),t.strokeColor&&t.strokeWidth>0&&(e.strokeStyle=t.strokeColor,e.lineWidth=Math.max(.5,t.strokeWidth/Z),e.stroke())}function ut(e,t,n,r,i,a,o){if(r===n&&i===t)return e;let s=(e,r)=>{if(e===t&&r===n)return null;let i=a.get(`${e}:${r}`);return i?w(o,i.styleIndex).border:null},c=s(t,r),l=s(i,n),u=s(i,r),d=(e,...t)=>{if(e?.style)return e;for(let e of t)if(e?.style)return e;return e??null};return{left:e.left,top:e.top,right:d(c?.right,u?.right,e.right),bottom:d(l?.bottom,u?.bottom,e.bottom),diagonalUp:e.diagonalUp??null,diagonalDown:e.diagonalDown??null}}function dt(e,t){if(!t)return e;let n=(e,t)=>t&&t.style?t:e??null;return{left:n(e.left,t.left),right:n(e.right,t.right),top:n(e.top,t.top),bottom:n(e.bottom,t.bottom),diagonalUp:n(e.diagonalUp,t.diagonalUp),diagonalDown:n(e.diagonalDown,t.diagonalDown)}}function ft(e,t,n,r,i,a){let o=[{edge:t.top,x1:n,y1:r,x2:n+i,y2:r},{edge:t.bottom,x1:n,y1:r+a,x2:n+i,y2:r+a},{edge:t.left,x1:n,y1:r,x2:n,y2:r+a},{edge:t.right,x1:n+i,y1:r,x2:n+i,y2:r+a},{edge:t.diagonalUp,x1:n,y1:r+a,x2:n+i,y2:r},{edge:t.diagonalDown,x1:n,y1:r,x2:n+i,y2:r+a}];for(let{edge:t,x1:n,y1:r,x2:i,y2:a}of o){if(!t||!t.style||t.style===`none`)continue;e.beginPath(),e.strokeStyle=t.color?p(t.color):`#000000`,e.lineWidth=pt(t.style);let o=mt(t.style);e.setLineDash(o),e.moveTo(n,r),e.lineTo(i,a),e.stroke(),e.setLineDash([])}}function pt(e){switch(e){case`thick`:return 2;case`medium`:case`mediumDashed`:case`mediumDashDot`:case`mediumDashDotDot`:case`slantDashDot`:return 1.5;case`hair`:return .5;default:return 1}}function mt(e){switch(e){case`dashed`:case`mediumDashed`:return[4,3];case`dotted`:return[2,2];case`dashDot`:case`mediumDashDot`:return[4,2,1,2];case`dashDotDot`:case`mediumDashDotDot`:return[4,2,1,2,1,2];case`slantDashDot`:return[5,3,1,3];default:return[]}}function ht(e){let t=e.chartType,n=e.grouping;if(t===`bar`){let t=e.barDir===`bar`;return n===`stacked`?t?`stackedBarH`:`stackedBar`:n===`percentStacked`?t?`stackedBarHPct`:`stackedBarPct`:t?`clusteredBarH`:`clusteredBar`}return t===`line`?n===`stacked`?`stackedLine`:n===`percentStacked`?`stackedLinePct`:`line`:t===`area`?n===`stacked`?`stackedArea`:n===`percentStacked`?`stackedAreaPct`:`area`:t}function gt(e){return{chartType:ht(e),title:e.title,categories:e.categories,series:e.series.map(e=>({name:e.name,color:e.color??null,values:e.values,seriesType:e.seriesType??null,categories:e.categories.length>0?e.categories:null,showMarker:e.showMarker??null,valFormatCode:e.valFormatCode??null})),showDataLabels:e.showDataLabels??!1,valMin:null,valMax:null,catAxisTitle:e.catAxisTitle??null,valAxisTitle:e.valAxisTitle??null,catAxisHidden:e.catAxisHidden??!1,valAxisHidden:e.valAxisHidden??!1,plotAreaBg:null,chartBg:e.hasChartSpPr?e.chartBg??null:`FFFFFF`,legendManualLayout:e.legendManualLayout??null,showLegend:e.showLegend??!1,legendPos:e.legendPos??null,catAxisCrossBetween:`between`,valAxisMajorTickMark:`cross`,catAxisMajorTickMark:`cross`,titleFontSizeHpt:e.titleFontSizeHpt??null,titleFontColor:e.titleFontColor??null,titleFontFace:e.titleFontFace??null,catAxisFontSizeHpt:e.catAxisFontSizeHpt??null,valAxisFontSizeHpt:e.valAxisFontSizeHpt??null,dataLabelFontSizeHpt:null,subtotalIndices:[],valAxisFormatCode:e.valAxisFormatCode??null,barGapWidth:e.barGapWidth??null,barOverlap:e.barOverlap??null,dataLabelPosition:e.dataLabelPosition??null,dataLabelFontColor:e.dataLabelFontColor??null,dataLabelFormatCode:e.dataLabelFormatCode??null}}function _t(e,n,r,i,a,o,s,c,l,u,d){if(u<=0||d<=0)return;let f=Q(n,a,r),p=$(n,i,r);for(let i of n.charts){let a=i.fromCol+1,m=i.fromRow+1,h=i.toCol+1,g=i.toRow+1,_=Q(n,a,r)+i.fromColOff*r/Z,v=$(n,m,r)+i.fromRowOff*r/Z,y=Q(n,h,r)+i.toColOff*r/Z,b=$(n,g,r)+i.toRowOff*r/Z,x=y-_,S=b-v;if(x<=0||S<=0)continue;let C=c+(_-f)-o,w=l+(v-p)-s;if(C+x<c||C>c+u||w+S<l||w>l+d)continue;e.save(),e.beginPath(),e.rect(c,l,u,d),e.clip();let T=4/3*r;t.t(e,gt(i.chart),{x:C,y:w,w:x,h:S},T),e.restore()}}var vt=`600 12px "Meiryo UI", "Segoe UI", sans-serif`,yt=`11px "Meiryo UI", "Segoe UI", sans-serif`,bt=`#FFFFFF`,xt=`#BFBFBF`,St=`#F2F2F2`,Ct=`#404040`,wt=`#FFFFFF`,Tt=`#000000`,Et=`#A5A5A5`,Dt=`#E7E6E6`,Ot=`#A6A6A6`,kt=`#C6C6C6`;function At(e,t,n,r,i,a,o,s,c,l,u){if(l<=0||u<=0)return;let d=t.slicers;if(!d)return;let f=Q(t,i,n),p=$(t,r,n);for(let r of d){let i=r.fromCol+1,d=r.fromRow+1,m=r.toCol+1,h=r.toRow+1,g=Q(t,i,n)+r.fromColOff*n/Z,_=$(t,d,n)+r.fromRowOff*n/Z,v=Q(t,m,n)+r.toColOff*n/Z,y=$(t,h,n)+r.toRowOff*n/Z,b=v-g,x=y-_;if(b<=0||x<=0)continue;let S=s+(g-f)-a,C=c+(_-p)-o;S+b<s||S>s+l||C+x<c||C>c+u||(e.save(),e.beginPath(),e.rect(s,c,l,u),e.clip(),jt(e,r.caption,r.items,S,C,b,x,n),e.restore())}}function jt(e,t,n,r,i,a,o,s){e.fillStyle=bt,e.fillRect(r,i,a,o),e.strokeStyle=xt,e.lineWidth=1,e.strokeRect(r+.5,i+.5,a-1,o-1);let c=Math.max(20*s,14);e.fillStyle=St,e.fillRect(r+1,i+1,a-2,c),e.fillStyle=Ct,e.font=Mt(vt,s),e.textBaseline=`middle`,e.textAlign=`left`;let l=6*s;if(Nt(e,t,r+l,i+c/2+1,a-2*l),n.length===0)return;let u=Math.max(1,Math.round(2*s)),d=4*s,f=r+d,p=i+c+d,m=a-2*d,h=o-c-2*d;if(m<=0||h<=0)return;let g=Math.max(18*s,16),_=Math.max(1,Math.floor((h+u)/(g+u))),v=Math.min(n.length,_),y=Math.min(g,(h-u*(v-1))/v);if(y<=0)return;e.font=Mt(yt,s);let b=8*s;for(let t=0;t<v;t++){let r=n[t],i=p+t*(y+u),a=r.selected;e.fillStyle=a?wt:Dt,e.fillRect(f,i,m,y),e.strokeStyle=a?Et:kt,e.lineWidth=1,e.strokeRect(f+.5,i+.5,m-1,y-1),e.fillStyle=a?Tt:Ot,Nt(e,r.name,f+b,i+y/2+1,m-2*b)}}function Mt(e,t){return e.replace(/(\d+(?:\.\d+)?)px/,(e,n)=>`${Math.round(Number(n)*t)}px`)}function Nt(e,t,n,r,i){if(i<=0)return;let a=t;if(e.measureText(a).width>i){for(;a.length>0&&e.measureText(a+`…`).width>i;)a=a.slice(0,-1);a=a.length>0?a+`…`:``}e.fillText(a,n,r)}var Pt=class{worker;parsedWorkbook=null;sheetCache=new Map;imageCache=new Map;rawData=null;constructor(){this.worker=new i;let e=new URL(a,location.href).href;this.worker.postMessage({type:`init`,wasmUrl:e})}async load(e){let t=typeof e==`string`?await fetch(e).then(e=>e.arrayBuffer()):e;this.rawData=t,this.parsedWorkbook=await this.sendMessage({type:`parse`,data:t.slice(0)})}get sheetNames(){return this.parsedWorkbook?.workbook.sheets.map(e=>e.name)??[]}get sheetCount(){return this.parsedWorkbook?.workbook.sheets.length??0}async getWorksheet(e){if(this.sheetCache.has(e))return this.sheetCache.get(e);if(!this.parsedWorkbook||!this.rawData)throw Error(`Workbook not loaded`);let t=this.parsedWorkbook.workbook.sheets[e];if(!t)throw Error(`Sheet index ${e} out of range`);let n=await this.sendMessage({type:`parseSheet`,data:this.rawData.slice(0),sheetIndex:e,sheetName:t.name});return this.sheetCache.set(e,n),n}async renderViewport(e,t,n,r={}){if(!this.parsedWorkbook)throw Error(`Workbook not loaded`);let i=this.sheetCache.get(t)??await this.getWorksheet(t),a=this.parsedWorkbook.styles,o=[];if(i.images)for(let e of i.images)this.imageCache.has(e.dataUrl)||o.push(e.dataUrl);if(i.shapeGroups)for(let e of i.shapeGroups)for(let t of e.shapes)t.geom.type===`image`&&!this.imageCache.has(t.geom.dataUrl)&&o.push(t.geom.dataUrl);o.length>0&&await Promise.all(o.map(async e=>{let t=new Image;t.src=e,await new Promise((e,n)=>{t.onload=()=>e(),t.onerror=()=>n(Error(`image decode failed`))}),this.imageCache.set(e,t)})).catch(()=>{});let s=r.dpr??(typeof window<`u`?window.devicePixelRatio:1),c=e instanceof HTMLCanvasElement?e.clientWidth||800:e.width,l=e instanceof HTMLCanvasElement?e.clientHeight||600:e.height,u=r.width??c,d=r.height??l;e.width=Math.round(u*s),e.height=Math.round(d*s),e instanceof HTMLCanvasElement&&(e.style.width=`${u}px`,e.style.height=`${d}px`);let f=e.getContext(`2d`);f.scale(s,s),it(f,i,a,n,{...r,dpr:s,loadedImages:this.imageCache})}destroy(){this.worker.terminate()}sendMessage(e){return new Promise((t,n)=>{let r=e=>{this.worker.removeEventListener(`message`,r),e.data.type===`error`?n(Error(e.data.message)):e.data.type===`parsed`?t(e.data.workbook):e.data.type===`parsedSheet`&&t(e.data.worksheet)};this.worker.addEventListener(`message`,r),this.worker.postMessage(e)})}},Ft=30,It=class{wb;canvas;canvasArea;scrollHost;spacer;tabBar;tabs=[];currentSheet=0;currentWorksheet=null;opts;resizeObserver=null;anchorCell=null;activeCell=null;selectionMode=`cells`;isSelecting=!1;selectionOverlay;keydownHandler=null;constructor(e,t={}){this.opts=t,this.wb=new Pt;let n=document.createElement(`div`);n.style.cssText=`position:relative;width:100%;height:100%;border:1px solid #c8ccd0;background:#fff;box-sizing:border-box;font-family:sans-serif;display:flex;flex-direction:column;`,this.canvasArea=document.createElement(`div`),this.canvasArea.style.cssText=`position:relative;flex:1;min-height:0;overflow:hidden;`,this.canvas=document.createElement(`canvas`),this.canvas.style.cssText=`position:absolute;top:0;left:0;z-index:0;display:block;`,this.selectionOverlay=document.createElement(`div`),this.selectionOverlay.style.cssText=`position:absolute;top:0;left:0;z-index:1;pointer-events:none;overflow:hidden;width:100%;height:100%;`,this.scrollHost=document.createElement(`div`),this.scrollHost.style.cssText=`position:absolute;inset:0;overflow:auto;z-index:2;background:transparent;`,this.spacer=document.createElement(`div`),this.spacer.style.cssText=`position:absolute;top:0;left:0;pointer-events:none;`,this.scrollHost.appendChild(this.spacer),this.canvasArea.appendChild(this.canvas),this.canvasArea.appendChild(this.selectionOverlay),this.canvasArea.appendChild(this.scrollHost),this.tabBar=document.createElement(`div`),this.tabBar.style.cssText=`display:flex;align-items:flex-end;height:${Ft}px;flex-shrink:0;background:#f0f0f0;border-top:1px solid #c8ccd0;overflow-x:auto;overflow-y:hidden;padding:0 4px;gap:1px;scrollbar-width:none;`;let r=document.createElement(`style`);r.textContent=`.xlsx-tab-bar::-webkit-scrollbar{display:none}`,document.head.appendChild(r),this.tabBar.classList.add(`xlsx-tab-bar`),n.appendChild(this.canvasArea),n.appendChild(this.tabBar),e.appendChild(n),this.scrollHost.addEventListener(`scroll`,()=>{this.renderCurrentSheet(),this.updateSelectionOverlay()}),this.resizeObserver=new ResizeObserver(()=>{this.renderCurrentSheet(),this.updateSelectionOverlay()}),this.resizeObserver.observe(this.canvasArea),this.setupSelectionEvents()}async load(e){try{await this.wb.load(e),this.buildTabs(),this.opts.onReady?.(this.wb.sheetNames),await this.showSheet(0)}catch(e){this.opts.onError?.(e instanceof Error?e:Error(String(e)))}}async showSheet(e){this.currentSheet=e,this.scrollHost.scrollLeft=0,this.scrollHost.scrollTop=0,this.anchorCell=null,this.activeCell=null,this.selectionMode=`cells`,this.updateSelectionOverlay(),this.updateTabActive(e),this.currentWorksheet=await this.wb.getWorksheet(e),this.updateSpacerSize(this.currentWorksheet),await this.renderCurrentSheet(),this.opts.onSheetChange?.(e,this.wb.sheetNames[e]??``)}getCellAt(e,t){let n=this.currentWorksheet;if(!n)return null;let r=this.opts.cellScale??1,i=this.canvasArea.getBoundingClientRect(),a=(e-i.left)/r,o=(t-i.top)/r;if(a<50||o<22)return null;let s=a-50,c=o-22,l=n.freezeRows??0,u=n.freezeCols??0,p=0,m=[];for(let e=1;e<=l;e++){let t=f(n.rowHeights[e]??n.defaultRowHeight);m.push(t),p+=t}let h=0,g=[];for(let e=1;e<=u;e++){let t=d(n.colWidths[e]??n.defaultColWidth);g.push(t),h+=t}let _;if(c<p){_=-1;let e=0;for(let t=0;t<l;t++)if(e+=m[t],c<e){_=t+1;break}if(_===-1)return null}else{let e=c-p+this.scrollHost.scrollTop/r;_=-1;let t=0;for(let r=l+1;r<=1048576;r++)if(t+=f(n.rowHeights[r]??n.defaultRowHeight),e<t){_=r;break}if(_===-1)return null}let v;if(s<h){v=-1;let e=0;for(let t=0;t<u;t++)if(e+=g[t],s<e){v=t+1;break}if(v===-1)return null}else{let e=s-h+this.scrollHost.scrollLeft/r;v=-1;let t=0;for(let r=u+1;r<=16384;r++)if(t+=d(n.colWidths[r]??n.defaultColWidth),e<t){v=r;break}if(v===-1)return null}return{row:_,col:v}}getCellRect(e,t){let n=this.currentWorksheet;if(!n)return null;let r=this.opts.cellScale??1,i=n.freezeRows??0,a=n.freezeCols??0,o;if(t<=a){let e=50;for(let r=1;r<t;r++)e+=d(n.colWidths[r]??n.defaultColWidth);o=e*r}else{let e=0;for(let t=1;t<=a;t++)e+=d(n.colWidths[t]??n.defaultColWidth);let i=50+e;for(let e=a+1;e<t;e++)i+=d(n.colWidths[e]??n.defaultColWidth);o=(i-this.scrollHost.scrollLeft/r)*r}let s;if(e<=i){let t=22;for(let r=1;r<e;r++)t+=f(n.rowHeights[r]??n.defaultRowHeight);s=t*r}else{let t=0;for(let e=1;e<=i;e++)t+=f(n.rowHeights[e]??n.defaultRowHeight);let a=22+t;for(let t=i+1;t<e;t++)a+=f(n.rowHeights[t]??n.defaultRowHeight);s=(a-this.scrollHost.scrollTop/r)*r}let c=d(n.colWidths[t]??n.defaultColWidth)*r,l=f(n.rowHeights[e]??n.defaultRowHeight)*r;return{x:o,y:s,w:c,h:l}}get selection(){return!this.anchorCell||!this.activeCell?null:{anchor:this.anchorCell,active:this.activeCell,mode:this.selectionMode}}getHeaderHit(e,t){let n=this.currentWorksheet;if(!n)return null;let r=this.opts.cellScale??1,i=this.canvasArea.getBoundingClientRect(),a=(e-i.left)/r,o=(t-i.top)/r,s=a<50,c=o<22;if(!s&&!c)return null;if(s&&c)return{kind:`corner`};let l=n.freezeRows??0,u=n.freezeCols??0;if(s){let e=o-22;if(e<0)return{kind:`corner`};let t=0,i=[];for(let e=1;e<=l;e++){let r=f(n.rowHeights[e]??n.defaultRowHeight);i.push(r),t+=r}if(e<t){let t=0;for(let n=0;n<l;n++)if(t+=i[n],e<t)return{kind:`row`,row:n+1};return null}let a=e-t+this.scrollHost.scrollTop/r,s=0;for(let e=l+1;e<=1048576;e++)if(s+=f(n.rowHeights[e]??n.defaultRowHeight),a<s)return{kind:`row`,row:e};return null}let p=a-50;if(p<0)return{kind:`corner`};let m=0,h=[];for(let e=1;e<=u;e++){let t=d(n.colWidths[e]??n.defaultColWidth);h.push(t),m+=t}if(p<m){let e=0;for(let t=0;t<u;t++)if(e+=h[t],p<e)return{kind:`col`,col:t+1};return null}let g=p-m+this.scrollHost.scrollLeft/r,_=0;for(let e=u+1;e<=16384;e++)if(_+=d(n.colWidths[e]??n.defaultColWidth),g<_)return{kind:`col`,col:e};return null}copySelection(){let e=this.currentWorksheet;if(!e||!this.anchorCell||!this.activeCell)return;let t=1,n=1;for(let r of e.rows){r.index>t&&(t=r.index);for(let e of r.cells)e.col>n&&(n=e.col)}let r,i,a,o;this.selectionMode===`all`?(r=1,i=t,a=1,o=n):this.selectionMode===`rows`?(r=Math.min(this.anchorCell.row,this.activeCell.row),i=Math.max(this.anchorCell.row,this.activeCell.row),a=1,o=n):this.selectionMode===`cols`?(a=Math.min(this.anchorCell.col,this.activeCell.col),o=Math.max(this.anchorCell.col,this.activeCell.col),r=1,i=t):(r=Math.min(this.anchorCell.row,this.activeCell.row),i=Math.max(this.anchorCell.row,this.activeCell.row),a=Math.min(this.anchorCell.col,this.activeCell.col),o=Math.max(this.anchorCell.col,this.activeCell.col));let s=new Map;for(let t of e.rows)if(!(t.index<r||t.index>i))for(let e of t.cells){if(e.col<a||e.col>o)continue;let n=e.value,r=``;n.type===`text`?r=n.runs?n.runs.map(e=>e.text).join(``):n.text:n.type===`number`?r=String(n.number):n.type===`bool`?r=n.bool?`TRUE`:`FALSE`:n.type===`error`&&(r=n.error),r&&s.set(`${t.index}:${e.col}`,r)}let c=[];for(let e=r;e<=i;e++){let t=[];for(let n=a;n<=o;n++)t.push(s.get(`${e}:${n}`)??``);c.push(t.join(` `))}navigator.clipboard.writeText(c.join(`
10
+ `)).catch(()=>void 0)}updateSelectionOverlay(){if(this.selectionOverlay.innerHTML=``,!this.anchorCell||!this.activeCell)return;let e=this.opts.cellScale??1,t=this.currentWorksheet,n=t?.freezeRows??0,r=t?.freezeCols??0,i=0;if(t)for(let e=1;e<=n;e++)i+=f(t.rowHeights[e]??t.defaultRowHeight);let a=0;if(t)for(let e=1;e<=r;e++)a+=d(t.colWidths[e]??t.defaultColWidth);let o,s,c,l,u=1,p=1;if(this.selectionMode===`all`)o=50*e,s=22*e,c=this.canvasArea.clientWidth-50*e,l=this.canvasArea.clientHeight-22*e;else if(this.selectionMode===`rows`){u=Math.min(this.anchorCell.row,this.activeCell.row);let t=Math.max(this.anchorCell.row,this.activeCell.row),n=this.getCellRect(u,1),r=this.getCellRect(t,1);if(!n||!r)return;o=50*e,s=n.y,c=this.canvasArea.clientWidth-50*e,l=r.y+r.h-n.y}else if(this.selectionMode===`cols`){p=Math.min(this.anchorCell.col,this.activeCell.col);let t=Math.max(this.anchorCell.col,this.activeCell.col),n=this.getCellRect(1,p),r=this.getCellRect(1,t);if(!n||!r)return;o=n.x,s=22*e,c=r.x+r.w-n.x,l=this.canvasArea.clientHeight-22*e}else{u=Math.min(this.anchorCell.row,this.activeCell.row);let e=Math.max(this.anchorCell.row,this.activeCell.row);p=Math.min(this.anchorCell.col,this.activeCell.col);let t=Math.max(this.anchorCell.col,this.activeCell.col),n=this.getCellRect(u,p),r=this.getCellRect(e,t);if(!n||!r)return;o=n.x,s=n.y,c=r.x+r.w-n.x,l=r.y+r.h-n.y}o<50*e&&(c-=50*e-o,o=50*e),s<22*e&&(l-=22*e-s,s=22*e);let m=(50+a)*e,h=(22+i)*e;if(p>r&&o<m&&(c-=m-o,o=m),u>n&&s<h&&(l-=h-s,s=h),c<=0||l<=0)return;let g=document.createElement(`div`);g.style.cssText=`position:absolute;left:${o}px;top:${s}px;width:${c}px;height:${l}px;box-sizing:border-box;border:2px solid #1a73e8;background:rgba(26,115,232,0.08);pointer-events:none;`,this.selectionOverlay.appendChild(g)}setupSelectionEvents(){this.scrollHost.addEventListener(`pointerdown`,e=>{if(e.button!==0)return;let t=this.getHeaderHit(e.clientX,e.clientY);if(t){t.kind===`corner`?(this.selectionMode=`all`,this.anchorCell={row:1,col:1},this.activeCell={row:1,col:1},this.isSelecting=!1):t.kind===`row`?e.shiftKey&&this.anchorCell&&this.selectionMode===`rows`?this.activeCell={row:t.row,col:1}:(this.selectionMode=`rows`,this.anchorCell={row:t.row,col:1},this.activeCell={row:t.row,col:1},this.isSelecting=!0,this.scrollHost.setPointerCapture(e.pointerId)):e.shiftKey&&this.anchorCell&&this.selectionMode===`cols`?this.activeCell={row:1,col:t.col}:(this.selectionMode=`cols`,this.anchorCell={row:1,col:t.col},this.activeCell={row:1,col:t.col},this.isSelecting=!0,this.scrollHost.setPointerCapture(e.pointerId)),this.updateSelectionOverlay(),this.opts.onSelectionChange?.(this.selection);return}let n=this.getCellAt(e.clientX,e.clientY);n&&(e.shiftKey&&this.anchorCell&&this.selectionMode===`cells`?this.activeCell=n:(this.selectionMode=`cells`,this.anchorCell=n,this.activeCell=n),this.isSelecting=!0,this.scrollHost.setPointerCapture(e.pointerId),this.updateSelectionOverlay(),this.opts.onSelectionChange?.(this.selection))}),this.scrollHost.addEventListener(`pointermove`,e=>{if(this.isSelecting){if(this.selectionMode===`rows`){let t=this.getHeaderHit(e.clientX,e.clientY),n=t?.kind===`row`?t.row:this.getCellAt(e.clientX,e.clientY)?.row;if(!n||n===this.activeCell?.row)return;this.activeCell={row:n,col:1}}else if(this.selectionMode===`cols`){let t=this.getHeaderHit(e.clientX,e.clientY),n=t?.kind===`col`?t.col:this.getCellAt(e.clientX,e.clientY)?.col;if(!n||n===this.activeCell?.col)return;this.activeCell={row:1,col:n}}else{let t=this.getCellAt(e.clientX,e.clientY);if(!t||t.row===this.activeCell?.row&&t.col===this.activeCell?.col)return;this.activeCell=t}this.updateSelectionOverlay(),this.opts.onSelectionChange?.(this.selection)}}),this.scrollHost.addEventListener(`pointerup`,()=>{this.isSelecting=!1}),this.keydownHandler=e=>{(e.ctrlKey||e.metaKey)&&e.key===`c`&&this.copySelection()},document.addEventListener(`keydown`,this.keydownHandler)}buildTabs(){this.tabBar.innerHTML=``,this.tabs=[],this.wb.sheetNames.forEach((e,t)=>{let n=document.createElement(`button`);n.textContent=e,n.title=e,n.style.cssText=this.tabStyle(!1),n.addEventListener(`click`,()=>this.showSheet(t)),this.tabBar.appendChild(n),this.tabs.push(n)})}updateTabActive(e){this.tabs.forEach((t,n)=>{t.style.cssText=this.tabStyle(n===e)}),this.tabs[e]?.scrollIntoView({block:`nearest`,inline:`nearest`})}tabStyle(e){let t=Ft-2,n=Ft-5;return e?`display:inline-block;padding:0 14px;border:1px solid #c8ccd0;border-bottom:none;border-radius:3px 3px 0 0;cursor:pointer;white-space:nowrap;max-width:160px;overflow:hidden;text-overflow:ellipsis;outline:none;box-sizing:border-box;height:${t}px;font-size:13px;background:#fff;color:#000;border-bottom:1px solid #fff;font-weight:600;position:relative;top:1px;`:`display:inline-block;padding:0 14px;border:1px solid #c8ccd0;border-bottom:none;border-radius:3px 3px 0 0;cursor:pointer;white-space:nowrap;max-width:160px;overflow:hidden;text-overflow:ellipsis;outline:none;box-sizing:border-box;height:${n}px;font-size:11px;background:#e0e0e0;color:#555;`}updateSpacerSize(e){let t=this.opts.cellScale??1,n=e.freezeRows??0,r=e.freezeCols??0,i=0;for(let t=1;t<=r;t++)i+=d(e.colWidths[t]??e.defaultColWidth);let a=0;for(let t=1;t<=n;t++)a+=f(e.rowHeights[t]??e.defaultRowHeight);let o=Math.max(50,n),s=Math.max(26,r);for(let t of e.rows){t.index>o&&(o=t.index);for(let e of t.cells)e.col>s&&(s=e.col)}o+=30,s+=10;let c=50+i;for(let t=r+1;t<=s;t++)c+=d(e.colWidths[t]??e.defaultColWidth);let l=22+a;for(let t=n+1;t<=o;t++)l+=f(e.rowHeights[t]??e.defaultRowHeight);this.spacer.style.width=`${Math.round(c*t)}px`,this.spacer.style.height=`${Math.round(l*t)}px`}async renderCurrentSheet(){if(!this.currentWorksheet)return;let e=this.currentWorksheet,t=this.canvasArea.clientWidth,n=this.canvasArea.clientHeight;if(t<=0||n<=0)return;let r=this.opts.cellScale??1,i=window.devicePixelRatio??1,a=e.freezeRows??0,o=e.freezeCols??0,s=0;for(let t=1;t<=o;t++)s+=d(e.colWidths[t]??e.defaultColWidth);let c=0;for(let t=1;t<=a;t++)c+=f(e.rowHeights[t]??e.defaultRowHeight);let l=this.scrollHost.scrollLeft/r,u=this.scrollHost.scrollTop/r,p=o+1,m=0,h=0;for(;;){let t=d(e.colWidths[p]??e.defaultColWidth);if(m+t>l){h=l-m;break}if(m+=t,p++,p>16384)break}let g=a+1,_=0,v=0;for(;;){let t=f(e.rowHeights[g]??e.defaultRowHeight);if(_+t>u){v=u-_;break}if(_+=t,g++,g>1048576)break}let y=t/r-50-s,b=n/r-22-c,x=0;{let t=-h,n=p;for(;t<y+h&&n<=16384;)t+=d(e.colWidths[n]??e.defaultColWidth),x++,n++;x+=2}let S=0;{let t=-v,n=g;for(;t<b+v&&n<=1048576;)t+=f(e.rowHeights[n]??e.defaultRowHeight),S++,n++;S+=2}let C={row:g,col:p,rows:S,cols:x};await this.wb.renderViewport(this.canvas,this.currentSheet,C,{width:t,height:n,dpr:i,cellScale:r,scrollOffsetX:h,scrollOffsetY:v,freezeRows:a,freezeCols:o})}get sheetNames(){return this.wb.sheetNames}destroy(){this.resizeObserver?.disconnect(),this.keydownHandler&&document.removeEventListener(`keydown`,this.keydownHandler),this.wb.destroy()}},Lt=e.n({XlsxViewer:()=>It,XlsxWorkbook:()=>Pt,autoResize:()=>e.t});Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return It}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return Pt}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return Lt}});
package/dist/xlsx.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./autoResize-ggn4hzd8.cjs`),t=require(`./xlsx-eilavpD_.cjs`);exports.XlsxViewer=t.n,exports.XlsxWorkbook=t.r,exports.autoResize=e.t;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./autoResize-ggn4hzd8.cjs`),t=require(`./xlsx-B4rNAWcg.cjs`);exports.XlsxViewer=t.n,exports.XlsxWorkbook=t.r,exports.autoResize=e.t;
package/dist/xlsx.mjs CHANGED
@@ -1,3 +1,3 @@
1
1
  import { t as e } from "./autoResize-U2-IRmNE.js";
2
- import { n as t, r as n } from "./xlsx-BWBXfR7z.js";
2
+ import { n as t, r as n } from "./xlsx-B-twWw7w.js";
3
3
  export { t as XlsxViewer, n as XlsxWorkbook, e as autoResize };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@silurus/ooxml",
3
- "version": "0.12.0",
3
+ "version": "0.13.0",
4
4
  "description": "Browser-based OOXML viewer (pptx/xlsx/docx) — Rust/WASM parser + Canvas renderer",
5
5
  "license": "MIT",
6
6
  "author": "Yuki Yokotani <yokotani.yuki@gmail.com>",