@silurus/ooxml 0.14.1 → 0.15.1
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/README.md +107 -101
- package/dist/{docx-Q9meJO2G.js → docx-C_zG3e0V.js} +3 -2
- package/dist/{docx-DOf7BLnj.cjs → docx-DKPVLT6O.cjs} +1 -1
- package/dist/docx.cjs +1 -1
- package/dist/docx.mjs +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +3 -3
- package/dist/{pptx-DVyrqUyw.js → pptx-B76oTVMe.js} +3 -1
- package/dist/{pptx-BMJO4Oqg.cjs → pptx-BiUBfZZA.cjs} +1 -1
- package/dist/pptx.cjs +1 -1
- package/dist/pptx.mjs +1 -1
- package/dist/types/docx.d.ts +3 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/pptx.d.ts +2 -0
- package/dist/types/xlsx.d.ts +2 -0
- package/dist/{xlsx-DHjDLAqt.js → xlsx-B3-MeECM.js} +56 -32
- package/dist/{xlsx-59JnO368.cjs → xlsx-CWkWdRpm.cjs} +2 -2
- package/dist/xlsx.cjs +1 -1
- package/dist/xlsx.mjs +1 -1
- package/package.json +15 -15
package/dist/pptx.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./autoResize-ggn4hzd8.cjs`),t=require(`./pptx-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./autoResize-ggn4hzd8.cjs`),t=require(`./pptx-BiUBfZZA.cjs`);exports.PptxPresentation=t.r,exports.PptxViewer=t.n,exports.autoResize=e.t,exports.renderSlide=t.i;
|
package/dist/pptx.mjs
CHANGED
package/dist/types/docx.d.ts
CHANGED
|
@@ -154,6 +154,8 @@ export declare interface DocxTextRunInfo {
|
|
|
154
154
|
h: number;
|
|
155
155
|
/** Font size in CSS px. */
|
|
156
156
|
fontSize: number;
|
|
157
|
+
/** CSS `font` shorthand used for canvas drawing (e.g. `"bold 16px Arial"`). */
|
|
158
|
+
font: string;
|
|
157
159
|
}
|
|
158
160
|
|
|
159
161
|
export declare class DocxViewer {
|
|
@@ -339,6 +341,7 @@ export declare interface RenderPageOptions {
|
|
|
339
341
|
w: number;
|
|
340
342
|
h: number;
|
|
341
343
|
fontSize: number;
|
|
344
|
+
font: string;
|
|
342
345
|
}) => void;
|
|
343
346
|
}
|
|
344
347
|
|
package/dist/types/index.d.ts
CHANGED
|
@@ -514,6 +514,8 @@ declare interface DocxTextRunInfo {
|
|
|
514
514
|
h: number;
|
|
515
515
|
/** Font size in CSS px. */
|
|
516
516
|
fontSize: number;
|
|
517
|
+
/** CSS `font` shorthand used for canvas drawing (e.g. `"bold 16px Arial"`). */
|
|
518
|
+
font: string;
|
|
517
519
|
}
|
|
518
520
|
|
|
519
521
|
declare class DocxViewer {
|
|
@@ -1150,6 +1152,7 @@ declare interface RenderPageOptions {
|
|
|
1150
1152
|
w: number;
|
|
1151
1153
|
h: number;
|
|
1152
1154
|
fontSize: number;
|
|
1155
|
+
font: string;
|
|
1153
1156
|
}) => void;
|
|
1154
1157
|
}
|
|
1155
1158
|
|
|
@@ -1592,6 +1595,8 @@ declare interface TextRunInfo {
|
|
|
1592
1595
|
h: number;
|
|
1593
1596
|
/** Font size in CSS px. */
|
|
1594
1597
|
fontSize: number;
|
|
1598
|
+
/** CSS `font` shorthand used for canvas drawing (e.g. `"bold 16px Arial"`). */
|
|
1599
|
+
font: string;
|
|
1595
1600
|
/** Shape's left edge in canvas CSS px. */
|
|
1596
1601
|
shapeX: number;
|
|
1597
1602
|
/** Shape's top edge in canvas CSS px. */
|
|
@@ -1751,6 +1756,7 @@ declare class XlsxViewer {
|
|
|
1751
1756
|
private isSelecting;
|
|
1752
1757
|
private selectionOverlay;
|
|
1753
1758
|
private keydownHandler;
|
|
1759
|
+
private pendingTap;
|
|
1754
1760
|
constructor(container: HTMLElement, opts?: XlsxViewerOptions);
|
|
1755
1761
|
load(source: string | ArrayBuffer): Promise<void>;
|
|
1756
1762
|
showSheet(index: number): Promise<void>;
|
|
@@ -1768,6 +1774,7 @@ declare class XlsxViewer {
|
|
|
1768
1774
|
/** Copy the selected cell range as tab-separated text to the clipboard. */
|
|
1769
1775
|
private copySelection;
|
|
1770
1776
|
private updateSelectionOverlay;
|
|
1777
|
+
private applyPointerSelection;
|
|
1771
1778
|
private setupSelectionEvents;
|
|
1772
1779
|
private buildTabs;
|
|
1773
1780
|
private updateTabActive;
|
package/dist/types/pptx.d.ts
CHANGED
|
@@ -626,6 +626,8 @@ export declare interface TextRunInfo {
|
|
|
626
626
|
h: number;
|
|
627
627
|
/** Font size in CSS px. */
|
|
628
628
|
fontSize: number;
|
|
629
|
+
/** CSS `font` shorthand used for canvas drawing (e.g. `"bold 16px Arial"`). */
|
|
630
|
+
font: string;
|
|
629
631
|
/** Shape's left edge in canvas CSS px. */
|
|
630
632
|
shapeX: number;
|
|
631
633
|
/** Shape's top edge in canvas CSS px. */
|
package/dist/types/xlsx.d.ts
CHANGED
|
@@ -649,6 +649,7 @@ export declare class XlsxViewer {
|
|
|
649
649
|
private isSelecting;
|
|
650
650
|
private selectionOverlay;
|
|
651
651
|
private keydownHandler;
|
|
652
|
+
private pendingTap;
|
|
652
653
|
constructor(container: HTMLElement, opts?: XlsxViewerOptions);
|
|
653
654
|
load(source: string | ArrayBuffer): Promise<void>;
|
|
654
655
|
showSheet(index: number): Promise<void>;
|
|
@@ -666,6 +667,7 @@ export declare class XlsxViewer {
|
|
|
666
667
|
/** Copy the selected cell range as tab-separated text to the clipboard. */
|
|
667
668
|
private copySelection;
|
|
668
669
|
private updateSelectionOverlay;
|
|
670
|
+
private applyPointerSelection;
|
|
669
671
|
private setupSelectionEvents;
|
|
670
672
|
private buildTabs;
|
|
671
673
|
private updateTabActive;
|
|
@@ -2125,6 +2125,7 @@ var Ft = class {
|
|
|
2125
2125
|
isSelecting = !1;
|
|
2126
2126
|
selectionOverlay;
|
|
2127
2127
|
keydownHandler = null;
|
|
2128
|
+
pendingTap = null;
|
|
2128
2129
|
constructor(e, t = {}) {
|
|
2129
2130
|
this.opts = t, this.wb = new Ft();
|
|
2130
2131
|
let n = document.createElement("div");
|
|
@@ -2354,41 +2355,58 @@ var Ft = class {
|
|
|
2354
2355
|
let g = document.createElement("div");
|
|
2355
2356
|
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
|
}
|
|
2358
|
+
applyPointerSelection(e, t, n, r, i) {
|
|
2359
|
+
let a = this.getHeaderHit(e, t);
|
|
2360
|
+
if (a) {
|
|
2361
|
+
a.kind === "corner" ? (this.selectionMode = "all", this.anchorCell = {
|
|
2362
|
+
row: 1,
|
|
2363
|
+
col: 1
|
|
2364
|
+
}, this.activeCell = {
|
|
2365
|
+
row: 1,
|
|
2366
|
+
col: 1
|
|
2367
|
+
}, this.isSelecting = !1) : a.kind === "row" ? n && this.anchorCell && this.selectionMode === "rows" ? this.activeCell = {
|
|
2368
|
+
row: a.row,
|
|
2369
|
+
col: 1
|
|
2370
|
+
} : (this.selectionMode = "rows", this.anchorCell = {
|
|
2371
|
+
row: a.row,
|
|
2372
|
+
col: 1
|
|
2373
|
+
}, this.activeCell = {
|
|
2374
|
+
row: a.row,
|
|
2375
|
+
col: 1
|
|
2376
|
+
}, i && (this.isSelecting = !0, this.scrollHost.setPointerCapture(r))) : n && this.anchorCell && this.selectionMode === "cols" ? this.activeCell = {
|
|
2377
|
+
row: 1,
|
|
2378
|
+
col: a.col
|
|
2379
|
+
} : (this.selectionMode = "cols", this.anchorCell = {
|
|
2380
|
+
row: 1,
|
|
2381
|
+
col: a.col
|
|
2382
|
+
}, this.activeCell = {
|
|
2383
|
+
row: 1,
|
|
2384
|
+
col: a.col
|
|
2385
|
+
}, i && (this.isSelecting = !0, this.scrollHost.setPointerCapture(r))), this.updateSelectionOverlay(), this.opts.onSelectionChange?.(this.selection);
|
|
2386
|
+
return;
|
|
2387
|
+
}
|
|
2388
|
+
let o = this.getCellAt(e, t);
|
|
2389
|
+
o && (n && this.anchorCell && this.selectionMode === "cells" ? this.activeCell = o : (this.selectionMode = "cells", this.anchorCell = o, this.activeCell = o), i && (this.isSelecting = !0, this.scrollHost.setPointerCapture(r)), this.updateSelectionOverlay(), this.opts.onSelectionChange?.(this.selection));
|
|
2390
|
+
}
|
|
2357
2391
|
setupSelectionEvents() {
|
|
2358
2392
|
this.scrollHost.addEventListener("pointerdown", (e) => {
|
|
2359
|
-
if (e.button
|
|
2360
|
-
|
|
2361
|
-
|
|
2362
|
-
|
|
2363
|
-
|
|
2364
|
-
|
|
2365
|
-
|
|
2366
|
-
|
|
2367
|
-
|
|
2368
|
-
}
|
|
2369
|
-
|
|
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;
|
|
2393
|
+
if (e.button === 0) {
|
|
2394
|
+
if (e.pointerType !== "mouse") {
|
|
2395
|
+
this.pendingTap = {
|
|
2396
|
+
x: e.clientX,
|
|
2397
|
+
y: e.clientY,
|
|
2398
|
+
shiftKey: e.shiftKey,
|
|
2399
|
+
pointerId: e.pointerId
|
|
2400
|
+
};
|
|
2401
|
+
return;
|
|
2402
|
+
}
|
|
2403
|
+
this.applyPointerSelection(e.clientX, e.clientY, e.shiftKey, e.pointerId, !0);
|
|
2388
2404
|
}
|
|
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
2405
|
}), this.scrollHost.addEventListener("pointermove", (e) => {
|
|
2406
|
+
if (this.pendingTap && this.pendingTap.pointerId === e.pointerId) {
|
|
2407
|
+
let t = e.clientX - this.pendingTap.x, n = e.clientY - this.pendingTap.y;
|
|
2408
|
+
t * t + n * n > 64 && (this.pendingTap = null);
|
|
2409
|
+
}
|
|
2392
2410
|
if (this.isSelecting) {
|
|
2393
2411
|
if (this.selectionMode === "rows") {
|
|
2394
2412
|
let t = this.getHeaderHit(e.clientX, e.clientY), n = t?.kind === "row" ? t.row : this.getCellAt(e.clientX, e.clientY)?.row;
|
|
@@ -2411,8 +2429,14 @@ var Ft = class {
|
|
|
2411
2429
|
}
|
|
2412
2430
|
this.updateSelectionOverlay(), this.opts.onSelectionChange?.(this.selection);
|
|
2413
2431
|
}
|
|
2414
|
-
}), this.scrollHost.addEventListener("pointerup", () => {
|
|
2432
|
+
}), this.scrollHost.addEventListener("pointerup", (e) => {
|
|
2433
|
+
if (this.pendingTap && this.pendingTap.pointerId === e.pointerId) {
|
|
2434
|
+
let t = e.clientX - this.pendingTap.x, n = e.clientY - this.pendingTap.y;
|
|
2435
|
+
t * t + n * n <= 64 && this.applyPointerSelection(e.clientX, e.clientY, this.pendingTap.shiftKey, e.pointerId, !1), this.pendingTap = null;
|
|
2436
|
+
}
|
|
2415
2437
|
this.isSelecting = !1;
|
|
2438
|
+
}), this.scrollHost.addEventListener("pointercancel", (e) => {
|
|
2439
|
+
this.pendingTap && this.pendingTap.pointerId === e.pointerId && (this.pendingTap = null), this.isSelecting = !1;
|
|
2416
2440
|
}), this.keydownHandler = (e) => {
|
|
2417
2441
|
(e.ctrlKey || e.metaKey) && e.key === "c" && this.copySelection();
|
|
2418
2442
|
}, document.addEventListener("keydown", this.keydownHandler);
|
|
@@ -6,5 +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(),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)}
|
|
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;pendingTap=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)}applyPointerSelection(e,t,n,r,i){let a=this.getHeaderHit(e,t);if(a){a.kind===`corner`?(this.selectionMode=`all`,this.anchorCell={row:1,col:1},this.activeCell={row:1,col:1},this.isSelecting=!1):a.kind===`row`?n&&this.anchorCell&&this.selectionMode===`rows`?this.activeCell={row:a.row,col:1}:(this.selectionMode=`rows`,this.anchorCell={row:a.row,col:1},this.activeCell={row:a.row,col:1},i&&(this.isSelecting=!0,this.scrollHost.setPointerCapture(r))):n&&this.anchorCell&&this.selectionMode===`cols`?this.activeCell={row:1,col:a.col}:(this.selectionMode=`cols`,this.anchorCell={row:1,col:a.col},this.activeCell={row:1,col:a.col},i&&(this.isSelecting=!0,this.scrollHost.setPointerCapture(r))),this.updateSelectionOverlay(),this.opts.onSelectionChange?.(this.selection);return}let o=this.getCellAt(e,t);o&&(n&&this.anchorCell&&this.selectionMode===`cells`?this.activeCell=o:(this.selectionMode=`cells`,this.anchorCell=o,this.activeCell=o),i&&(this.isSelecting=!0,this.scrollHost.setPointerCapture(r)),this.updateSelectionOverlay(),this.opts.onSelectionChange?.(this.selection))}setupSelectionEvents(){this.scrollHost.addEventListener(`pointerdown`,e=>{if(e.button===0){if(e.pointerType!==`mouse`){this.pendingTap={x:e.clientX,y:e.clientY,shiftKey:e.shiftKey,pointerId:e.pointerId};return}this.applyPointerSelection(e.clientX,e.clientY,e.shiftKey,e.pointerId,!0)}}),this.scrollHost.addEventListener(`pointermove`,e=>{if(this.pendingTap&&this.pendingTap.pointerId===e.pointerId){let t=e.clientX-this.pendingTap.x,n=e.clientY-this.pendingTap.y;t*t+n*n>64&&(this.pendingTap=null)}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`,e=>{if(this.pendingTap&&this.pendingTap.pointerId===e.pointerId){let t=e.clientX-this.pendingTap.x,n=e.clientY-this.pendingTap.y;t*t+n*n<=64&&this.applyPointerSelection(e.clientX,e.clientY,this.pendingTap.shiftKey,e.pointerId,!1),this.pendingTap=null}this.isSelecting=!1}),this.scrollHost.addEventListener(`pointercancel`,e=>{this.pendingTap&&this.pendingTap.pointerId===e.pointerId&&(this.pendingTap=null),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-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./autoResize-ggn4hzd8.cjs`),t=require(`./xlsx-CWkWdRpm.cjs`);exports.XlsxViewer=t.n,exports.XlsxWorkbook=t.r,exports.autoResize=e.t;
|
package/dist/xlsx.mjs
CHANGED
package/package.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@silurus/ooxml",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Browser-based OOXML viewer (
|
|
3
|
+
"version": "0.15.1",
|
|
4
|
+
"description": "Browser-based OOXML viewer (docx/xlsx/pptx) — Rust/WASM parser + Canvas renderer",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Yuki Yokotani <yokotani.yuki@gmail.com>",
|
|
7
7
|
"keywords": [
|
|
8
8
|
"ooxml",
|
|
9
|
-
"pptx",
|
|
10
|
-
"xlsx",
|
|
11
9
|
"docx",
|
|
12
|
-
"
|
|
13
|
-
"
|
|
10
|
+
"xlsx",
|
|
11
|
+
"pptx",
|
|
14
12
|
"word",
|
|
13
|
+
"excel",
|
|
14
|
+
"powerpoint",
|
|
15
15
|
"viewer",
|
|
16
16
|
"canvas",
|
|
17
17
|
"wasm",
|
|
@@ -39,20 +39,20 @@
|
|
|
39
39
|
"require": "./dist/index.cjs",
|
|
40
40
|
"types": "./dist/types/index.d.ts"
|
|
41
41
|
},
|
|
42
|
-
"./
|
|
43
|
-
"import": "./dist/
|
|
44
|
-
"require": "./dist/
|
|
45
|
-
"types": "./dist/types/
|
|
42
|
+
"./docx": {
|
|
43
|
+
"import": "./dist/docx.mjs",
|
|
44
|
+
"require": "./dist/docx.cjs",
|
|
45
|
+
"types": "./dist/types/docx.d.ts"
|
|
46
46
|
},
|
|
47
47
|
"./xlsx": {
|
|
48
48
|
"import": "./dist/xlsx.mjs",
|
|
49
49
|
"require": "./dist/xlsx.cjs",
|
|
50
50
|
"types": "./dist/types/xlsx.d.ts"
|
|
51
51
|
},
|
|
52
|
-
"./
|
|
53
|
-
"import": "./dist/
|
|
54
|
-
"require": "./dist/
|
|
55
|
-
"types": "./dist/types/
|
|
52
|
+
"./pptx": {
|
|
53
|
+
"import": "./dist/pptx.mjs",
|
|
54
|
+
"require": "./dist/pptx.cjs",
|
|
55
|
+
"types": "./dist/types/pptx.d.ts"
|
|
56
56
|
}
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
"typecheck": "tsc --build",
|
|
73
73
|
"storybook": "storybook dev -p 6006",
|
|
74
74
|
"build-storybook": "storybook build",
|
|
75
|
-
"build:wasm": "pnpm --filter @silurus/ooxml-
|
|
75
|
+
"build:wasm": "pnpm --filter @silurus/ooxml-docx wasm && pnpm --filter @silurus/ooxml-xlsx wasm && pnpm --filter @silurus/ooxml-pptx wasm",
|
|
76
76
|
"vrt": "pnpm -r vrt"
|
|
77
77
|
}
|
|
78
78
|
}
|