@nuptechs/nup-xlsx-preview 1.1.2-debug → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,17 +1,17 @@
1
- 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),jsxRuntime=require('react/jsx-runtime');var oe=class{rowPositions;colPositions;rowHeightCache;colWidthCache;totalHeight;totalWidth;overscan;rowCount;colCount;frozenRows;frozenCols;frozenRowsHeight;frozenColsWidth;constructor(e){let{rows:t,cols:o,rowHeights:s,colWidths:l,defaultRowHeight:h=24,defaultColWidth:g=100,overscan:f=5,frozenRows:m=0,frozenCols:S=0}=e;this.frozenRows=m,this.frozenCols=S,this.rowCount=t,this.colCount=o,this.overscan=f,this.rowPositions=new Array(t+1),this.rowHeightCache=new Array(t),this.rowPositions[0]=0;for(let v=0;v<t;v++){let T=s[v]??h;this.rowHeightCache[v]=T,this.rowPositions[v+1]=this.rowPositions[v]+T;}this.totalHeight=this.rowPositions[t],this.frozenRowsHeight=m>0?this.rowPositions[m]??0:0,this.colPositions=new Array(o+1),this.colWidthCache=new Array(o),this.colPositions[0]=0;for(let v=0;v<o;v++){let T=l[v]??g;this.colWidthCache[v]=T,this.colPositions[v+1]=this.colPositions[v]+T;}this.totalWidth=this.colPositions[o],this.frozenColsWidth=S>0?this.colPositions[S]??0:0;}getFrozenInfo(){return {rows:this.frozenRows,cols:this.frozenCols,frozenRowsHeight:this.frozenRowsHeight,frozenColsWidth:this.frozenColsWidth}}binarySearch(e,t){let o=0,s=e.length-2;for(;o<=s;){let l=o+s>>>1,h=e[l],g=e[l+1];if(t>=h&&t<g)return l;t<h?s=l-1:o=l+1;}return Math.max(0,Math.min(o,e.length-2))}getVisibleRange(e,t,o,s){let l=e+this.frozenRowsHeight,h=t+this.frozenColsWidth,g=this.binarySearch(this.rowPositions,l),f=this.binarySearch(this.rowPositions,l+Math.max(0,o)),m=this.binarySearch(this.colPositions,h),S=this.binarySearch(this.colPositions,h+Math.max(0,s)),v=Math.max(this.frozenRows,g-this.overscan),T=Math.min(this.rowCount-1,f+this.overscan),ge=Math.max(this.frozenCols,m-this.overscan),ee=Math.min(this.colCount-1,S+this.overscan);return {startRow:v,endRow:T,startCol:ge,endCol:ee}}getFrozenRowsRange(){return this.frozenRows===0?null:{startRow:0,endRow:this.frozenRows-1}}getFrozenColsRange(){return this.frozenCols===0?null:{startCol:0,endCol:this.frozenCols-1}}getCellRect(e,t){return {top:this.rowPositions[e]??0,left:this.colPositions[t]??0,width:this.colWidthCache[t]??100,height:this.rowHeightCache[e]??24}}getRowHeight(e){return this.rowHeightCache[e]??24}getColWidth(e){return this.colWidthCache[e]??100}setColWidth(e,t){if(e<0||e>=this.colCount)return;let o=this.colWidthCache[e],s=t-o;this.colWidthCache[e]=t;for(let l=e+1;l<=this.colCount;l++)this.colPositions[l]+=s;this.totalWidth+=s;}getIndexAtPosition(e,t){return {row:this.binarySearch(this.rowPositions,e),col:this.binarySearch(this.colPositions,t)}}getScrollToPosition(e,t,o,s){let l=this.rowPositions[e]??0,h=this.colPositions[t]??0;return {scrollTop:Math.max(0,l-o/2),scrollLeft:Math.max(0,h-s/2)}}};function fe(i){let e="",t=i;for(;t>=0;)e=String.fromCharCode(t%26+65)+e,t=Math.floor(t/26)-1;return e}function qe(i){let e=0,t=i.toUpperCase();for(let o=0;o<t.length;o++)e=e*26+(t.charCodeAt(o)-64);return e-1}function E(i,e){return `${fe(e)}${i+1}`}function I(i){let e=i.match(/^([A-Z]+)(\d+)$/i);if(!e)return null;let t=qe(e[1]),o=parseInt(e[2],10)-1;return o<0||t<0?null:{row:o,col:t}}function rt(i){let[e,t]=i.split(":");if(!e)return null;let o=I(e);if(!o)return null;if(!t)return {start:o,end:o};let s=I(t);return s?{start:{row:Math.min(o.row,s.row),col:Math.min(o.col,s.col)},end:{row:Math.max(o.row,s.row),col:Math.max(o.col,s.col)}}:null}function nt(i,e){return i==null?"":e==="n"&&typeof i=="number"?Number.isInteger(i)?i.toLocaleString():i.toLocaleString(void 0,{minimumFractionDigits:0,maximumFractionDigits:2}):String(i)}function st(i){return typeof i=="string"&&i.startsWith("=")}var re=class{state;sheet;onChange;constructor(e,t){this.sheet=e,this.onChange=t??null,this.state={anchor:null,focus:null,ranges:[]};}handleClick(e,t,o){let{shiftKey:s,ctrlKey:l,metaKey:h}=o;s&&this.state.anchor?(this.state.focus={row:e,col:t},this.updateRanges()):l||h?(this.state.anchor={row:e,col:t},this.state.focus={row:e,col:t},this.state.ranges.push(this.createRange(this.state.anchor,this.state.focus))):(this.state.anchor={row:e,col:t},this.state.focus={row:e,col:t},this.state.ranges=[this.createRange(this.state.anchor,this.state.focus)]),this.notifyChange();}handleDrag(e,t){this.state.anchor&&(this.state.focus={row:e,col:t},this.updateRanges(),this.notifyChange());}selectCell(e){let t=I(e);t&&(this.state.anchor=t,this.state.focus=t,this.state.ranges=[this.createRange(t,t)],this.notifyChange());}selectRange(e,t){let o=I(e),s=I(t);!o||!s||(this.state.anchor=o,this.state.focus=s,this.state.ranges=[this.createRange(o,s)],this.notifyChange());}selectAll(){this.state.anchor={row:0,col:0},this.state.focus={row:this.sheet.rowCount-1,col:this.sheet.colCount-1},this.state.ranges=[this.createRange(this.state.anchor,this.state.focus)],this.notifyChange();}clear(){this.state.anchor=null,this.state.focus=null,this.state.ranges=[],this.notifyChange();}getSelection(){return this.state.ranges.length===0?null:this.state.ranges[0]}getAllSelections(){return [...this.state.ranges]}isCellSelected(e,t){return this.state.ranges.some(o=>e>=o.start.row&&e<=o.end.row&&t>=o.start.col&&t<=o.end.col)}isAnchor(e,t){return this.state.anchor?.row===e&&this.state.anchor?.col===t}setSheet(e){this.sheet=e,this.clear();}updateRanges(){if(!this.state.anchor||!this.state.focus)return;let e=this.createRange(this.state.anchor,this.state.focus);this.state.ranges.length>0?this.state.ranges[this.state.ranges.length-1]=e:this.state.ranges.push(e);}createRange(e,t){let o=Math.min(e.row,t.row),s=Math.max(e.row,t.row),l=Math.min(e.col,t.col),h=Math.max(e.col,t.col),g=[],f=[];for(let m=o;m<=s;m++){let S=[];for(let v=l;v<=h;v++){let T=E(m,v);f.push(T),S.push(this.sheet.cells[T]??null);}g.push(S);}return {start:{row:o,col:l},end:{row:s,col:h},cells:g,cellRefs:f}}notifyChange(){this.onChange&&this.onChange(this.getSelection());}};var ne=class{selection;virtualScroll;config;onScroll;onCopy;constructor(e,t,o,s){this.selection=e,this.virtualScroll=t,this.config=o,this.onScroll=s?.onScroll??null,this.onCopy=s?.onCopy??null;}handleKeyDown(e){if(!this.config.enabled)return false;let t=this.getAction(e);return t?(e.preventDefault(),this.executeAction(t),true):false}getAction(e){let{key:t,shiftKey:o,ctrlKey:s,metaKey:l}=e,h=s||l;if(h&&t==="c")return "copy";if(h&&t==="a")return "select-all";if(o)switch(t){case "ArrowUp":return "extend-up";case "ArrowDown":return "extend-down";case "ArrowLeft":return "extend-left";case "ArrowRight":return "extend-right"}if(h)switch(t){case "Home":return "move-ctrl-home";case "End":return "move-ctrl-end"}switch(t){case "ArrowUp":return "move-up";case "ArrowDown":return "move-down";case "ArrowLeft":return "move-left";case "ArrowRight":return "move-right";case "PageUp":return "move-page-up";case "PageDown":return "move-page-down";case "Home":return "move-home";case "End":return "move-end";case "Tab":return o?"move-left":"move-right";case "Enter":return o?"move-up":"move-down"}return null}executeAction(e){let t=this.selection.getSelection();if(!t&&!["select-all","move-ctrl-home"].includes(e)){this.selection.selectCell("A1"),this.scrollToSelection();return}let{row:o,col:s}=t?.start??{row:0,col:0},l=o,h=s;switch(e){case "move-up":l=Math.max(0,o-1);break;case "move-down":l=Math.min(this.virtualScroll.rowCount-1,o+1);break;case "move-left":h=Math.max(0,s-1);break;case "move-right":h=Math.min(this.virtualScroll.colCount-1,s+1);break;case "move-page-up":l=Math.max(0,o-20);break;case "move-page-down":l=Math.min(this.virtualScroll.rowCount-1,o+20);break;case "move-home":h=0;break;case "move-end":h=this.virtualScroll.colCount-1;break;case "move-ctrl-home":l=0,h=0;break;case "move-ctrl-end":l=this.virtualScroll.rowCount-1,h=this.virtualScroll.colCount-1;break;case "select-all":this.selection.selectAll();return;case "copy":this.onCopy?.();return;case "extend-up":case "extend-down":case "extend-left":case "extend-right":this.extendSelection(e);return}this.selection.handleClick(l,h,{shiftKey:false,ctrlKey:false,metaKey:false}),this.scrollToSelection();}extendSelection(e){let t=this.selection.getSelection();if(!t)return;let{row:o,col:s}=t.end;switch(e){case "extend-up":o=Math.max(0,o-1);break;case "extend-down":o=Math.min(this.virtualScroll.rowCount-1,o+1);break;case "extend-left":s=Math.max(0,s-1);break;case "extend-right":s=Math.min(this.virtualScroll.colCount-1,s+1);break}this.selection.handleDrag(o,s),this.scrollToSelection();}scrollToSelection(){let e=this.selection.getSelection();!e||!this.onScroll||this.onScroll(e.start.row,e.start.col);}setVirtualScroll(e){this.virtualScroll=e;}setSelection(e){this.selection=e;}};var se=class{merges;mergeMap;constructor(e=[]){this.merges=[],this.mergeMap=new Map,this.parseMerges(e);}parseMerges(e){for(let t of e){let[o,s]=t.split(":");if(!o||!s)continue;let l=I(o),h=I(s);if(!l||!h)continue;let g={startRow:Math.min(l.row,h.row),startCol:Math.min(l.col,h.col),endRow:Math.max(l.row,h.row),endCol:Math.max(l.col,h.col),cellRef:o};this.merges.push(g);for(let f=g.startRow;f<=g.endRow;f++)for(let m=g.startCol;m<=g.endCol;m++){let S=`${f},${m}`;this.mergeMap.set(S,g);}}}getMergeAt(e,t){return this.mergeMap.get(`${e},${t}`)??null}isMergeMaster(e,t){let o=this.getMergeAt(e,t);return o?o.startRow===e&&o.startCol===t:false}isMergeHidden(e,t){let o=this.getMergeAt(e,t);return o?!(o.startRow===e&&o.startCol===t):false}getMergeMaster(e,t){let o=this.getMergeAt(e,t);return o?{row:o.startRow,col:o.startCol}:null}getMergeRect(e,t,o){let s=this.getMergeAt(e,t);if(!s||!this.isMergeMaster(e,t))return null;let l=o(s.startRow,s.startCol),h=o(s.endRow,s.endCol);return {top:l.top,left:l.left,width:h.left+h.width-l.left,height:h.top+h.height-l.top}}getAllMerges(){return [...this.merges]}getVisibleMerges(e,t,o,s){return this.merges.filter(l=>l.endRow>=e&&l.startRow<=t&&l.endCol>=o&&l.startCol<=s)}update(e){this.merges=[],this.mergeMap.clear(),this.parseMerges(e);}};var le=class{async copyToClipboard(e){let t=this.formatSelection(e);try{if(navigator.clipboard&&typeof ClipboardItem<"u"){let o=new Blob([t.html],{type:"text/html"}),s=new Blob([t.text],{type:"text/plain"});await navigator.clipboard.write([new ClipboardItem({"text/html":o,"text/plain":s})]);}else await this.copyWithExecCommand(t.text);}catch{await this.copyWithExecCommand(t.text);}return t}formatSelection(e){let{cells:t}=e,o=[];for(let g of t){let f=g.map(m=>this.getCellValue(m));o.push(f.join(" "));}let s=o.join(`
2
- `),l=[];for(let g of t){let f=g.map(m=>{let S=this.escapeHtml(this.getCellValue(m));return `<td style="${this.getCellStyle(m)}">${S}</td>`});l.push(`<tr>${f.join("")}</tr>`);}let h=`
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),jsxRuntime=require('react/jsx-runtime');var ne=class{rowPositions;colPositions;rowHeightCache;colWidthCache;totalHeight;totalWidth;overscan;rowCount;colCount;frozenRows;frozenCols;frozenRowsHeight;frozenColsWidth;constructor(e){let{rows:t,cols:r,rowHeights:l,colWidths:i,defaultRowHeight:h=24,defaultColWidth:g=100,overscan:f=5,frozenRows:b=0,frozenCols:S=0}=e;this.frozenRows=b,this.frozenCols=S,this.rowCount=t,this.colCount=r,this.overscan=f,this.rowPositions=new Array(t+1),this.rowHeightCache=new Array(t),this.rowPositions[0]=0;for(let v=0;v<t;v++){let T=l[v]??h;this.rowHeightCache[v]=T,this.rowPositions[v+1]=this.rowPositions[v]+T;}this.totalHeight=this.rowPositions[t],this.frozenRowsHeight=b>0?this.rowPositions[b]??0:0,this.colPositions=new Array(r+1),this.colWidthCache=new Array(r),this.colPositions[0]=0;for(let v=0;v<r;v++){let T=i[v]??g;this.colWidthCache[v]=T,this.colPositions[v+1]=this.colPositions[v]+T;}this.totalWidth=this.colPositions[r],this.frozenColsWidth=S>0?this.colPositions[S]??0:0;}getFrozenInfo(){return {rows:this.frozenRows,cols:this.frozenCols,frozenRowsHeight:this.frozenRowsHeight,frozenColsWidth:this.frozenColsWidth}}binarySearch(e,t){let r=0,l=e.length-2;for(;r<=l;){let i=r+l>>>1,h=e[i],g=e[i+1];if(t>=h&&t<g)return i;t<h?l=i-1:r=i+1;}return Math.max(0,Math.min(r,e.length-2))}getVisibleRange(e,t,r,l){let i=e+this.frozenRowsHeight,h=t+this.frozenColsWidth,g=this.binarySearch(this.rowPositions,i),f=this.binarySearch(this.rowPositions,i+Math.max(0,r)),b=this.binarySearch(this.colPositions,h),S=this.binarySearch(this.colPositions,h+Math.max(0,l)),v=Math.max(this.frozenRows,g-this.overscan),T=Math.min(this.rowCount-1,f+this.overscan),fe=Math.max(this.frozenCols,b-this.overscan),te=Math.min(this.colCount-1,S+this.overscan);return {startRow:v,endRow:T,startCol:fe,endCol:te}}getFrozenRowsRange(){return this.frozenRows===0?null:{startRow:0,endRow:this.frozenRows-1}}getFrozenColsRange(){return this.frozenCols===0?null:{startCol:0,endCol:this.frozenCols-1}}getCellRect(e,t){return {top:this.rowPositions[e]??0,left:this.colPositions[t]??0,width:this.colWidthCache[t]??100,height:this.rowHeightCache[e]??24}}getRowHeight(e){return this.rowHeightCache[e]??24}getColWidth(e){return this.colWidthCache[e]??100}setColWidth(e,t){if(e<0||e>=this.colCount)return;let r=this.colWidthCache[e],l=t-r;this.colWidthCache[e]=t;for(let i=e+1;i<=this.colCount;i++)this.colPositions[i]+=l;this.totalWidth+=l;}getIndexAtPosition(e,t){return {row:this.binarySearch(this.rowPositions,e),col:this.binarySearch(this.colPositions,t)}}getScrollToPosition(e,t,r,l){let i=this.rowPositions[e]??0,h=this.colPositions[t]??0;return {scrollTop:Math.max(0,i-r/2),scrollLeft:Math.max(0,h-l/2)}}};function pe(s){let e="",t=s;for(;t>=0;)e=String.fromCharCode(t%26+65)+e,t=Math.floor(t/26)-1;return e}function Je(s){let e=0,t=s.toUpperCase();for(let r=0;r<t.length;r++)e=e*26+(t.charCodeAt(r)-64);return e-1}function E(s,e){return `${pe(e)}${s+1}`}function I(s){let e=s.match(/^([A-Z]+)(\d+)$/i);if(!e)return null;let t=Je(e[1]),r=parseInt(e[2],10)-1;return r<0||t<0?null:{row:r,col:t}}function ut(s){let[e,t]=s.split(":");if(!e)return null;let r=I(e);if(!r)return null;if(!t)return {start:r,end:r};let l=I(t);return l?{start:{row:Math.min(r.row,l.row),col:Math.min(r.col,l.col)},end:{row:Math.max(r.row,l.row),col:Math.max(r.col,l.col)}}:null}function dt(s,e){return s==null?"":e==="n"&&typeof s=="number"?Number.isInteger(s)?s.toLocaleString():s.toLocaleString(void 0,{minimumFractionDigits:0,maximumFractionDigits:2}):String(s)}function pt(s){return typeof s=="string"&&s.startsWith("=")}var se=class{state;sheet;onChange;constructor(e,t){this.sheet=e,this.onChange=t??null,this.state={anchor:null,focus:null,ranges:[]};}handleClick(e,t,r){let{shiftKey:l,ctrlKey:i,metaKey:h}=r;l&&this.state.anchor?(this.state.focus={row:e,col:t},this.updateRanges()):i||h?(this.state.anchor={row:e,col:t},this.state.focus={row:e,col:t},this.state.ranges.push(this.createRange(this.state.anchor,this.state.focus))):(this.state.anchor={row:e,col:t},this.state.focus={row:e,col:t},this.state.ranges=[this.createRange(this.state.anchor,this.state.focus)]),this.notifyChange();}handleDrag(e,t){this.state.anchor&&(this.state.focus={row:e,col:t},this.updateRanges(),this.notifyChange());}selectCell(e){let t=I(e);t&&(this.state.anchor=t,this.state.focus=t,this.state.ranges=[this.createRange(t,t)],this.notifyChange());}selectRange(e,t){let r=I(e),l=I(t);!r||!l||(this.state.anchor=r,this.state.focus=l,this.state.ranges=[this.createRange(r,l)],this.notifyChange());}selectAll(){this.state.anchor={row:0,col:0},this.state.focus={row:this.sheet.rowCount-1,col:this.sheet.colCount-1},this.state.ranges=[this.createRange(this.state.anchor,this.state.focus)],this.notifyChange();}clear(){this.state.anchor=null,this.state.focus=null,this.state.ranges=[],this.notifyChange();}getSelection(){return this.state.ranges.length===0?null:this.state.ranges[0]}getAllSelections(){return [...this.state.ranges]}isCellSelected(e,t){return this.state.ranges.some(r=>e>=r.start.row&&e<=r.end.row&&t>=r.start.col&&t<=r.end.col)}isAnchor(e,t){return this.state.anchor?.row===e&&this.state.anchor?.col===t}setSheet(e){this.sheet=e,this.clear();}updateRanges(){if(!this.state.anchor||!this.state.focus)return;let e=this.createRange(this.state.anchor,this.state.focus);this.state.ranges.length>0?this.state.ranges[this.state.ranges.length-1]=e:this.state.ranges.push(e);}createRange(e,t){let r=Math.min(e.row,t.row),l=Math.max(e.row,t.row),i=Math.min(e.col,t.col),h=Math.max(e.col,t.col),g=[],f=[];for(let b=r;b<=l;b++){let S=[];for(let v=i;v<=h;v++){let T=E(b,v);f.push(T),S.push(this.sheet.cells[T]??null);}g.push(S);}return {start:{row:r,col:i},end:{row:l,col:h},cells:g,cellRefs:f}}notifyChange(){this.onChange&&this.onChange(this.getSelection());}};var le=class{selection;virtualScroll;config;onScroll;onCopy;constructor(e,t,r,l){this.selection=e,this.virtualScroll=t,this.config=r,this.onScroll=l?.onScroll??null,this.onCopy=l?.onCopy??null;}handleKeyDown(e){if(!this.config.enabled)return false;let t=this.getAction(e);return t?(e.preventDefault(),this.executeAction(t),true):false}getAction(e){let{key:t,shiftKey:r,ctrlKey:l,metaKey:i}=e,h=l||i;if(h&&t==="c")return "copy";if(h&&t==="a")return "select-all";if(r)switch(t){case "ArrowUp":return "extend-up";case "ArrowDown":return "extend-down";case "ArrowLeft":return "extend-left";case "ArrowRight":return "extend-right"}if(h)switch(t){case "Home":return "move-ctrl-home";case "End":return "move-ctrl-end"}switch(t){case "ArrowUp":return "move-up";case "ArrowDown":return "move-down";case "ArrowLeft":return "move-left";case "ArrowRight":return "move-right";case "PageUp":return "move-page-up";case "PageDown":return "move-page-down";case "Home":return "move-home";case "End":return "move-end";case "Tab":return r?"move-left":"move-right";case "Enter":return r?"move-up":"move-down"}return null}executeAction(e){let t=this.selection.getSelection();if(!t&&!["select-all","move-ctrl-home"].includes(e)){this.selection.selectCell("A1"),this.scrollToSelection();return}let{row:r,col:l}=t?.start??{row:0,col:0},i=r,h=l;switch(e){case "move-up":i=Math.max(0,r-1);break;case "move-down":i=Math.min(this.virtualScroll.rowCount-1,r+1);break;case "move-left":h=Math.max(0,l-1);break;case "move-right":h=Math.min(this.virtualScroll.colCount-1,l+1);break;case "move-page-up":i=Math.max(0,r-20);break;case "move-page-down":i=Math.min(this.virtualScroll.rowCount-1,r+20);break;case "move-home":h=0;break;case "move-end":h=this.virtualScroll.colCount-1;break;case "move-ctrl-home":i=0,h=0;break;case "move-ctrl-end":i=this.virtualScroll.rowCount-1,h=this.virtualScroll.colCount-1;break;case "select-all":this.selection.selectAll();return;case "copy":this.onCopy?.();return;case "extend-up":case "extend-down":case "extend-left":case "extend-right":this.extendSelection(e);return}this.selection.handleClick(i,h,{shiftKey:false,ctrlKey:false,metaKey:false}),this.scrollToSelection();}extendSelection(e){let t=this.selection.getSelection();if(!t)return;let{row:r,col:l}=t.end;switch(e){case "extend-up":r=Math.max(0,r-1);break;case "extend-down":r=Math.min(this.virtualScroll.rowCount-1,r+1);break;case "extend-left":l=Math.max(0,l-1);break;case "extend-right":l=Math.min(this.virtualScroll.colCount-1,l+1);break}this.selection.handleDrag(r,l),this.scrollToSelection();}scrollToSelection(){let e=this.selection.getSelection();!e||!this.onScroll||this.onScroll(e.start.row,e.start.col);}setVirtualScroll(e){this.virtualScroll=e;}setSelection(e){this.selection=e;}};var ie=class{merges;mergeMap;constructor(e=[]){this.merges=[],this.mergeMap=new Map,this.parseMerges(e);}parseMerges(e){for(let t of e){let[r,l]=t.split(":");if(!r||!l)continue;let i=I(r),h=I(l);if(!i||!h)continue;let g={startRow:Math.min(i.row,h.row),startCol:Math.min(i.col,h.col),endRow:Math.max(i.row,h.row),endCol:Math.max(i.col,h.col),cellRef:r};this.merges.push(g);for(let f=g.startRow;f<=g.endRow;f++)for(let b=g.startCol;b<=g.endCol;b++){let S=`${f},${b}`;this.mergeMap.set(S,g);}}}getMergeAt(e,t){return this.mergeMap.get(`${e},${t}`)??null}isMergeMaster(e,t){let r=this.getMergeAt(e,t);return r?r.startRow===e&&r.startCol===t:false}isMergeHidden(e,t){let r=this.getMergeAt(e,t);return r?!(r.startRow===e&&r.startCol===t):false}getMergeMaster(e,t){let r=this.getMergeAt(e,t);return r?{row:r.startRow,col:r.startCol}:null}getMergeRect(e,t,r){let l=this.getMergeAt(e,t);if(!l||!this.isMergeMaster(e,t))return null;let i=r(l.startRow,l.startCol),h=r(l.endRow,l.endCol);return {top:i.top,left:i.left,width:h.left+h.width-i.left,height:h.top+h.height-i.top}}getAllMerges(){return [...this.merges]}getVisibleMerges(e,t,r,l){return this.merges.filter(i=>i.endRow>=e&&i.startRow<=t&&i.endCol>=r&&i.startCol<=l)}update(e){this.merges=[],this.mergeMap.clear(),this.parseMerges(e);}};var ae=class{async copyToClipboard(e){let t=this.formatSelection(e);try{if(navigator.clipboard&&typeof ClipboardItem<"u"){let r=new Blob([t.html],{type:"text/html"}),l=new Blob([t.text],{type:"text/plain"});await navigator.clipboard.write([new ClipboardItem({"text/html":r,"text/plain":l})]);}else await this.copyWithExecCommand(t.text);}catch{await this.copyWithExecCommand(t.text);}return t}formatSelection(e){let{cells:t}=e,r=[];for(let g of t){let f=g.map(b=>this.getCellValue(b));r.push(f.join(" "));}let l=r.join(`
2
+ `),i=[];for(let g of t){let f=g.map(b=>{let S=this.escapeHtml(this.getCellValue(b));return `<td style="${this.getCellStyle(b)}">${S}</td>`});i.push(`<tr>${f.join("")}</tr>`);}let h=`
3
3
  <table style="border-collapse: collapse; font-family: Arial, sans-serif; font-size: 12px;">
4
4
  <tbody>
5
- ${l.join(`
5
+ ${i.join(`
6
6
  `)}
7
7
  </tbody>
8
8
  </table>
9
- `.trim();return {text:s,html:h,cells:t}}getCellValue(e){return !e||e.v===void 0||e.v===null?"":String(e.v)}getCellStyle(e){let t=["border: 1px solid #ccc","padding: 4px 8px"];return e?.t==="n"&&t.push("text-align: right"),t.join("; ")}escapeHtml(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}async copyWithExecCommand(e){let t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.left="-9999px",document.body.appendChild(t),t.select();try{document.execCommand("copy");}finally{document.body.removeChild(t);}}};var ie=class{sheet;results;currentIndex;constructor(e){this.sheet=e,this.results=[],this.currentIndex=-1;}search(e,t={}){if(!e)return this.results=[],this.currentIndex=-1,[];let{caseSensitive:o=false,regex:s=false,matchWholeCell:l=false}=t,h;try{if(s)h=new RegExp(e,o?"g":"gi");else {let f=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),m=l?`^${f}$`:f;h=new RegExp(m,o?"g":"gi");}}catch{let f=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");h=new RegExp(f,o?"g":"gi");}let g=[];for(let[f,m]of Object.entries(this.sheet.cells)){if(m.v===void 0||m.v===null)continue;let S=String(m.v);h.lastIndex=0;let v=h.exec(S);if(v){let T=this.parseCellRef(f);T&&g.push({row:T.row,col:T.col,cellRef:f,value:S,matchStart:v.index,matchEnd:v.index+v[0].length});}}return g.sort((f,m)=>f.row!==m.row?f.row-m.row:f.col-m.col),this.results=g,this.currentIndex=g.length>0?0:-1,g}next(){return this.results.length===0?null:(this.currentIndex=(this.currentIndex+1)%this.results.length,this.results[this.currentIndex])}previous(){return this.results.length===0?null:(this.currentIndex=(this.currentIndex-1+this.results.length)%this.results.length,this.results[this.currentIndex])}current(){return this.currentIndex<0||this.currentIndex>=this.results.length?null:this.results[this.currentIndex]}getResults(){return [...this.results]}getCount(){return this.results.length}getCurrentIndex(){return this.currentIndex+1}isResult(e,t){return this.results.some(o=>o.row===e&&o.col===t)}isCurrent(e,t){let o=this.current();return o?.row===e&&o?.col===t}clear(){this.results=[],this.currentIndex=-1;}setSheet(e){this.sheet=e,this.clear();}parseCellRef(e){let t=e.match(/^([A-Z]+)(\d+)$/i);if(!t)return null;let o=t[1].toUpperCase(),s=parseInt(t[2],10)-1,l=0;for(let h=0;h<o.length;h++)l=l*26+(o.charCodeAt(h)-64);return l-=1,{row:s,col:l}}};var ae=class{state=null;virtualScroll;onChange;minWidth;maxWidth;constructor(e,t,o=30,s=500){this.virtualScroll=e,this.onChange=t??null,this.minWidth=o,this.maxWidth=s;}startResize(e,t){let o=this.virtualScroll.getColWidth(e);this.state={isResizing:true,colIndex:e,startX:t,startWidth:o},document.addEventListener("mousemove",this.handleMouseMove),document.addEventListener("mouseup",this.handleMouseUp),document.body.style.cursor="col-resize",document.body.style.userSelect="none";}handleMouseMove=e=>{if(!this.state)return;let t=e.clientX-this.state.startX,o=Math.min(this.maxWidth,Math.max(this.minWidth,this.state.startWidth+t));this.virtualScroll.setColWidth(this.state.colIndex,o),this.onChange?.(this.state.colIndex,o);};handleMouseUp=()=>{this.cleanup();};isResizing(){return this.state?.isResizing??false}getResizeColumn(){return this.state?.colIndex??null}cancel(){this.state&&(this.virtualScroll.setColWidth(this.state.colIndex,this.state.startWidth),this.onChange?.(this.state.colIndex,this.state.startWidth)),this.cleanup();}cleanup(){document.removeEventListener("mousemove",this.handleMouseMove),document.removeEventListener("mouseup",this.handleMouseUp),document.body.style.cursor="",document.body.style.userSelect="",this.state=null;}setVirtualScroll(e){this.virtualScroll=e;}destroy(){this.cleanup();}};var G={default:{name:"default",colors:{background:"#ffffff",foreground:"#202124",grid:"#e0e0e0",headerBackground:"#f8f9fa",headerForeground:"#5f6368",selectionBorder:"#1a73e8",selectionBackground:"rgba(26, 115, 232, 0.08)",frozenBorder:"#dadce0"},fonts:{family:"'Google Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",size:"13px",headerSize:"11px"}},excel:{name:"excel",colors:{background:"#ffffff",foreground:"#000000",grid:"#d4d4d4",headerBackground:"#f0f0f0",headerForeground:"#000000",selectionBorder:"#217346",selectionBackground:"rgba(33, 115, 70, 0.1)",frozenBorder:"#9bc2e6"},fonts:{family:"'Calibri', 'Segoe UI', sans-serif",size:"11px",headerSize:"11px"}},modern:{name:"modern",colors:{background:"#fafafa",foreground:"#18181b",grid:"#e4e4e7",headerBackground:"#f4f4f5",headerForeground:"#71717a",selectionBorder:"#3b82f6",selectionBackground:"rgba(59, 130, 246, 0.08)",frozenBorder:"#a1a1aa"},fonts:{family:"'Inter', -apple-system, BlinkMacSystemFont, sans-serif",size:"13px",headerSize:"11px"}},minimal:{name:"minimal",colors:{background:"#ffffff",foreground:"#27272a",grid:"#f4f4f5",headerBackground:"#ffffff",headerForeground:"#a1a1aa",selectionBorder:"#18181b",selectionBackground:"rgba(24, 24, 27, 0.04)",frozenBorder:"#e4e4e7"},fonts:{family:"'SF Pro Display', -apple-system, BlinkMacSystemFont, sans-serif",size:"13px",headerSize:"11px"}},dark:{name:"dark",colors:{background:"#1e1e1e",foreground:"#d4d4d4",grid:"#3c3c3c",headerBackground:"#252526",headerForeground:"#858585",selectionBorder:"#0078d4",selectionBackground:"rgba(0, 120, 212, 0.2)",frozenBorder:"#4a4a4a"},fonts:{family:"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",size:"13px",headerSize:"11px"}},midnight:{name:"midnight",colors:{background:"#0d1117",foreground:"#c9d1d9",grid:"#21262d",headerBackground:"#161b22",headerForeground:"#8b949e",selectionBorder:"#58a6ff",selectionBackground:"rgba(88, 166, 255, 0.15)",frozenBorder:"#30363d"},fonts:{family:"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",size:"13px",headerSize:"11px"}},accessible:{name:"accessible",colors:{background:"#ffffff",foreground:"#000000",grid:"#000000",headerBackground:"#e6e6e6",headerForeground:"#000000",selectionBorder:"#0000ff",selectionBackground:"rgba(0, 0, 255, 0.15)",frozenBorder:"#000000"},fonts:{family:"Arial, Helvetica, sans-serif",size:"14px",headerSize:"12px"}}};function lt(i){return G[i]??G.default}function ye(i,e){let t=i.style;t.setProperty("--nup-background",e.colors.background),t.setProperty("--nup-foreground",e.colors.foreground),t.setProperty("--nup-grid",e.colors.grid),t.setProperty("--nup-header-bg",e.colors.headerBackground),t.setProperty("--nup-header-fg",e.colors.headerForeground),t.setProperty("--nup-selection-border",e.colors.selectionBorder),t.setProperty("--nup-selection-bg",e.colors.selectionBackground),t.setProperty("--nup-frozen-border",e.colors.frozenBorder),t.setProperty("--nup-font-family",e.fonts.family),t.setProperty("--nup-font-size",e.fonts.size);}function Re(i){return `nup-theme-${i}`}var it={thin:"1px solid",medium:"2px solid",thick:"3px solid",dashed:"1px dashed",dotted:"1px dotted",double:"3px double"};function Ve(i){if(!i||!i.style)return;let e=it[i.style]||"1px solid",t=i.color||"#000000";return `${e} ${t}`}function at(i,e){let t=i.replace("#",""),o=parseInt(t.substring(0,2),16),s=parseInt(t.substring(2,4),16),l=parseInt(t.substring(4,6),16),h,g,f;return e<0?(h=Math.round(o*(1+e)),g=Math.round(s*(1+e)),f=Math.round(l*(1+e))):(h=Math.round(o+(255-o)*e),g=Math.round(s+(255-s)*e),f=Math.round(l+(255-l)*e)),`#${h.toString(16).padStart(2,"0")}${g.toString(16).padStart(2,"0")}${f.toString(16).padStart(2,"0")}`}function ct(i){if(!i)return {};let e={};if(i.font){let t=i.font;t.name&&(e.fontFamily=t.name),t.size&&(e.fontSize=`${t.size}pt`),t.bold&&(e.fontWeight="bold"),t.italic&&(e.fontStyle="italic"),t.color&&(e.color=t.color);let o=[];t.underline&&o.push("underline"),t.strike&&o.push("line-through"),o.length>0&&(e.textDecoration=o.join(" "));}if(i.fill){let t=i.fill;if(t.color){let o=t.color;t.tint!==void 0&&t.tint!==0&&(o=at(o,t.tint)),e.backgroundColor=o;}}if(i.alignment){let t=i.alignment;t.horizontal&&(e.textAlign=t.horizontal),t.vertical&&(e.verticalAlign=t.vertical==="middle"?"middle":t.vertical),t.wrapText&&(e.whiteSpace="pre-wrap"),t.indent&&(e.paddingLeft=`${t.indent*8}px`),t.rotation&&(e.transform=`rotate(${t.rotation}deg)`);}if(i.border){let t=i.border;e.borderTop=Ve(t.top),e.borderRight=Ve(t.right),e.borderBottom=Ve(t.bottom),e.borderLeft=Ve(t.left);}return e}function ht(i){let e=Object.entries(i).filter(([,t])=>t!==void 0);return e.length===0?"":e.map(([t,o])=>`${t.replace(/([A-Z])/g,"-$1").toLowerCase()}: ${o}`).join("; ")}function _e(i,e){if(i!==void 0&&e.styles)return e.styles[i]??e.styles[String(i)]}function ut(i,e,t){let o=t?_e(e,t):void 0;if(!(!i&&!o))return i?o?{...o,...i,font:{...o.font,...i.font},fill:{...o.fill,...i.fill},border:{...o.border,...i.border},alignment:{...o.alignment,...i.alignment}}:i:o}var gt=react.forwardRef(function(e,t){let{workbook:o,activeSheet:s=0,theme:l="default",width:h="100%",height:g="400px",className:f="",style:m={},showHeaders:S=true,showGridLines:v=true,showSheetTabs:T=true,selectable:ge=true,resizable:ee=true,searchable:Fe=false,copyable:De=true,keyboardNavigation:Oe=true,frozenRows:Me=0,frozenCols:Te=0,overscan:ke=5,defaultRowHeight:He=24,defaultColWidth:ze=100,ariaLabel:Ue="Spreadsheet",onCellClick:Pe,onCellDoubleClick:Ne,onCellRightClick:me,onSelectionChange:$e,onSheetChange:We,onColumnResize:Ie,onScroll:be,onSearch:Y,onCopy:V}=e,O=react.useRef(null),N=react.useRef(null),[A,z]=react.useState(s),[K,q]=react.useState({top:0,left:0}),[k,M]=react.useState({width:0,height:0}),[R,he]=react.useState(null),[ue,te]=react.useState([]),[we,ve]=react.useState(""),[Ce,U]=react.useState(0),w=o.sheets[A]??o.sheets[0],Ee=react.useMemo(()=>typeof l=="string"?G[l]??G.default:l,[l]),y=react.useMemo(()=>{let r={},n={};return Object.entries(w.rows).forEach(([p,b])=>{b.h&&(r[parseInt(p)]=b.h);}),Object.entries(w.cols).forEach(([p,b])=>{b.w&&(n[parseInt(p)]=b.w);}),new oe({rows:w.rowCount,cols:w.colCount,rowHeights:r,colWidths:n,defaultRowHeight:He,defaultColWidth:ze,overscan:ke,frozenRows:Me,frozenCols:Te})},[w,He,ze,ke,Me,Te,Ce]),x=react.useMemo(()=>new re(w,r=>{he(r),$e?.(r);}),[w,$e]),_=react.useMemo(()=>new se(w.merges??[]),[w.merges]),P=react.useMemo(()=>new ie(w),[w]),F=react.useMemo(()=>new le,[]),Z=react.useMemo(()=>new ae(y,(r,n)=>{U(p=>p+1),Ie?.(r,n);}),[y,Ie]),Se=react.useMemo(()=>new ne(x,y,{enabled:Oe},{onScroll:(r,n)=>{let p=y.getScrollToPosition(r,n,k.height,k.width);N.current?.scrollTo({top:p.scrollTop,left:p.scrollLeft,behavior:"smooth"});},onCopy:async()=>{let r=x.getSelection();if(r&&De){let n=await F.copyToClipboard(r);V?.(n);}}}),[x,y,Oe,De,k,F,V]);react.useLayoutEffect(()=>{let r=N.current;if(!r)return;let n=new ResizeObserver(p=>{let b=p[0];b&&M({width:b.contentRect.width,height:b.contentRect.height});});return n.observe(r),M({width:r.clientWidth,height:r.clientHeight}),()=>n.disconnect()},[]),react.useEffect(()=>{O.current&&ye(O.current,Ee);},[Ee]),react.useEffect(()=>{z(s);},[s]);let $=react.useCallback(r=>{let{scrollTop:n,scrollLeft:p}=r.currentTarget;q({top:n,left:p});let b=y.getVisibleRange(n,p,k.height,k.width);be?.({scrollTop:n,scrollLeft:p,visibleRows:{start:b.startRow,end:b.endRow},visibleCols:{start:b.startCol,end:b.endCol}});},[y,k,be]),je=react.useCallback((r,n,p)=>{if(!ge)return;let b=E(r,n),W=w.cells[b]??null;x.handleClick(r,n,{shiftKey:p.shiftKey,ctrlKey:p.ctrlKey,metaKey:p.metaKey}),Pe?.({cell:W,row:r,col:n,cellRef:b,originalEvent:p.nativeEvent});},[ge,w,x,Pe]),a=react.useCallback((r,n,p)=>{let b=E(r,n),W=w.cells[b]??null;Ne?.({cell:W,row:r,col:n,cellRef:b,originalEvent:p.nativeEvent});},[w,Ne]),u=react.useCallback((r,n,p)=>{p.preventDefault();let b=E(r,n),W=w.cells[b]??null;me?.({cell:W,row:r,col:n,cellRef:b,originalEvent:p.nativeEvent});},[w,me]),C=react.useCallback(r=>{Se.handleKeyDown(r.nativeEvent);},[Se]),d=react.useCallback(r=>{z(r),x.clear(),We?.(r);},[x,We]),c=react.useCallback(r=>{ve(r);let n=P.search(r);te(n),Y?.(n);},[P,Y]),H=react.useCallback((r,n)=>{ee&&(n.preventDefault(),n.stopPropagation(),Z.startResize(r,n.clientX));},[ee,Z]);react.useImperativeHandle(t,()=>({scrollTo:(r,n)=>{let p=y.getScrollToPosition(r,n,k.height,k.width);N.current?.scrollTo({top:p.scrollTop,left:p.scrollLeft,behavior:"smooth"});},scrollToCell:r=>{let n=I(r);if(n){let p=y.getScrollToPosition(n.row,n.col,k.height,k.width);N.current?.scrollTo({top:p.scrollTop,left:p.scrollLeft,behavior:"smooth"});}},select:r=>{he(r);},selectCell:r=>{x.selectCell(r);},selectAll:()=>{x.selectAll();},clearSelection:()=>{x.clear();},getSelection:()=>R,setActiveSheet:d,getActiveSheet:()=>A,search:r=>(c(r),P.getResults()),highlightResults:r=>{te(r);},clearHighlights:()=>{te([]),ve("");},getWorkbook:()=>o,getVisibleCells:()=>{let r=y.getVisibleRange(K.top,K.left,k.height,k.width),n=[];for(let p=r.startRow;p<=r.endRow;p++){let b=[];for(let W=r.startCol;W<=r.endCol;W++)b.push(w.cells[E(p,W)]??null);n.push(b);}return n},getCellAt:(r,n)=>w.cells[E(r,n)]??null,copySelection:async()=>{let r=x.getSelection();if(r){let n=await F.copyToClipboard(r);V?.(n);}},setColumnWidth:(r,n)=>{y.setColWidth(r,n),U(p=>p+1);},autoFitColumn:()=>{},autoFitAllColumns:()=>{},refresh:()=>U(r=>r+1),destroy:()=>{Z.destroy();}}),[y,k,x,P,F,d,c,A,R,o,w,K,Z,V]);let B=S?24:0,D=S?40:0,j=y.getVisibleRange(K.top,K.left,k.height,k.width),Le=[];for(let r=j.startRow;r<=j.endRow;r++)for(let n=j.startCol;n<=j.endCol;n++){if(_.isMergeHidden(r,n))continue;let p=_.getMergeRect(r,n,(X,ot)=>y.getCellRect(X,ot))??y.getCellRect(r,n),b=E(r,n),W=w.cells[b],Je=x.isCellSelected(r,n),Xe=x.isAnchor(r,n),et=ue.some(X=>X.row===r&&X.col===n),tt=P.isCurrent(r,n),pe="nup-cell";W?.t==="n"&&(pe+=" nup-cell-number"),Je&&(pe+=" nup-cell-selected"),Xe&&(pe+=" nup-cell-anchor"),et&&(pe+=" nup-cell-search-result"),tt&&(pe+=" nup-cell-search-current"),Le.push(jsxRuntime.jsx("div",{className:pe,style:{top:p.top,left:p.left,width:p.width,height:p.height},onClick:X=>je(r,n,X),onDoubleClick:X=>a(r,n,X),onContextMenu:X=>u(r,n,X),"data-row":r,"data-col":n,"data-cell-ref":b,role:"gridcell","aria-rowindex":r+1,"aria-colindex":n+1,tabIndex:Xe?0:-1,children:W?.v!==void 0&&W?.v!==null?String(W.v):""},`${r}-${n}`));}let Ae=[];if(S)for(let r=j.startCol;r<=j.endCol;r++){let n=y.getCellRect(0,r),p=R&&r>=R.start.col&&r<=R.end.col;Ae.push(jsxRuntime.jsxs("div",{className:`nup-header nup-header-col${p?" nup-header-selected":""}`,style:{left:n.left,width:n.width,height:B},children:[fe(r),ee&&jsxRuntime.jsx("div",{className:"nup-resize-handle",onMouseDown:b=>H(r,b)})]},`ch-${r}`));}let Be=[];if(S)for(let r=j.startRow;r<=j.endRow;r++){let n=y.getCellRect(r,0),p=R&&r>=R.start.row&&r<=R.end.row;Be.push(jsxRuntime.jsx("div",{className:`nup-header nup-header-row${p?" nup-header-selected":""}`,style:{top:n.top,width:D,height:n.height},children:r+1},`rh-${r}`));}let Ke=null;if(R){let r=y.getCellRect(R.start.row,R.start.col),n=y.getCellRect(R.end.row,R.end.col);Ke=jsxRuntime.jsx("div",{className:"nup-selection-border",style:{top:r.top,left:r.left,width:n.left+n.width-r.left,height:n.top+n.height-r.top}});}let de=typeof l=="string"?Re(l):"";return jsxRuntime.jsxs("div",{ref:O,className:`nup-spreadsheet ${de} ${f} ${v?"":"nup-no-gridlines"}`,style:{width:h,height:g,...m},tabIndex:0,onKeyDown:C,role:"grid","aria-label":Ue,"aria-rowcount":w.rowCount,"aria-colcount":w.colCount,children:[Fe&&jsxRuntime.jsxs("div",{className:"nup-search-bar",children:[jsxRuntime.jsx("input",{type:"search",className:"nup-search-input",placeholder:"Search...",value:we,onChange:r=>c(r.target.value),"aria-label":"Search in spreadsheet"}),ue.length>0&&jsxRuntime.jsxs("span",{className:"nup-search-count",children:[P.getCurrentIndex()," of ",ue.length]}),jsxRuntime.jsx("button",{className:"nup-search-btn",onClick:()=>{let r=P.next();if(r){let n=y.getScrollToPosition(r.row,r.col,k.height,k.width);N.current?.scrollTo({top:n.scrollTop,left:n.scrollLeft,behavior:"smooth"});}},"aria-label":"Next result",children:"Next"})]}),S&&jsxRuntime.jsx("div",{className:"nup-corner",style:{width:D,height:B}}),S&&jsxRuntime.jsx("div",{className:"nup-header-row-container",style:{position:"absolute",top:0,left:D,right:0,height:B,overflow:"hidden"},children:jsxRuntime.jsx("div",{style:{position:"relative",width:y.totalWidth,height:B,transform:`translateX(${-K.left}px)`},children:Ae})}),S&&jsxRuntime.jsx("div",{className:"nup-header-col-container",style:{position:"absolute",top:B,left:0,bottom:T?32:0,width:D,overflow:"hidden"},children:jsxRuntime.jsx("div",{style:{position:"relative",width:D,height:y.totalHeight,transform:`translateY(${-K.top}px)`},children:Be})}),jsxRuntime.jsx("div",{ref:N,className:"nup-scroll-container",style:{top:B,left:D,right:0,bottom:T?32:0},onScroll:$,children:jsxRuntime.jsxs("div",{className:"nup-content",style:{width:y.totalWidth,height:y.totalHeight},children:[Le,Ke]})}),T&&o.sheets.length>1&&jsxRuntime.jsx("div",{className:"nup-sheet-tabs",children:o.sheets.map((r,n)=>jsxRuntime.jsx("button",{className:`nup-sheet-tab${n===A?" nup-sheet-tab-active":""}`,onClick:()=>d(n),children:r.name},r.id))})]})});function Qe(i,e){let t=typeof i=="string"?document.querySelector(i):i;if(!t)throw new Error("Container element not found");let{workbook:o,activeSheet:s=0,theme:l="default",width:h="100%",height:g="400px",showHeaders:f=true,showGridLines:m=true,showSheetTabs:S=true,selectable:v=true,resizable:T=true,searchable:ge=false,copyable:ee=true,keyboardNavigation:Fe=true,frozenRows:De=0,frozenCols:Oe=0,overscan:Me=5,defaultRowHeight:Te=24,defaultColWidth:ke=100,ariaLabel:He="Spreadsheet",onCellClick:ze,onCellDoubleClick:Ue,onCellRightClick:Pe,onSelectionChange:Ne,onSheetChange:me,onColumnResize:$e,onScroll:We,onSearch:Ie,onCopy:be}=e,Y=s,V=0,O=0,N=0,A=0,z=null,K=[],q=()=>o.sheets[Y]??o.sheets[0],k=()=>typeof l=="string"?G[l]??G.default:l,M,R,he,ue,te,we,ve,Ce=()=>{let a=q(),u={},C={};Object.entries(a.rows).forEach(([d,c])=>{c.h&&(u[parseInt(d)]=c.h);}),Object.entries(a.cols).forEach(([d,c])=>{c.w&&(C[parseInt(d)]=c.w);}),M=new oe({rows:a.rowCount,cols:a.colCount,rowHeights:u,colWidths:C,defaultRowHeight:Te,defaultColWidth:ke,overscan:Me}),R=new re(a,d=>{z=d,Ne?.(d),$();}),he=new se(a.merges??[]),ue=new ie(a),te=new le,we=new ae(M,(d,c)=>{$e?.(d,c),$();}),ve=new ne(R,M,{enabled:Fe},{onScroll:(d,c)=>{let H=M.getScrollToPosition(d,c,A,N);x?.scrollTo({top:H.scrollTop,left:H.scrollLeft,behavior:"smooth"});},onCopy:async()=>{let d=R.getSelection();if(d&&ee){let c=await te.copyToClipboard(d);be?.(c);}}});},U=f?24:0,w=f?40:0,Ee=typeof l=="string"?Re(l):"";t.innerHTML=`
10
- <div class="nup-spreadsheet ${Ee} ${m?"":"nup-no-gridlines"}"
9
+ `.trim();return {text:l,html:h,cells:t}}getCellValue(e){return !e||e.v===void 0||e.v===null?"":String(e.v)}getCellStyle(e){let t=["border: 1px solid #ccc","padding: 4px 8px"];return e?.t==="n"&&t.push("text-align: right"),t.join("; ")}escapeHtml(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}async copyWithExecCommand(e){let t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.left="-9999px",document.body.appendChild(t),t.select();try{document.execCommand("copy");}finally{document.body.removeChild(t);}}};var ce=class{sheet;results;currentIndex;constructor(e){this.sheet=e,this.results=[],this.currentIndex=-1;}search(e,t={}){if(!e)return this.results=[],this.currentIndex=-1,[];let{caseSensitive:r=false,regex:l=false,matchWholeCell:i=false}=t,h;try{if(l)h=new RegExp(e,r?"g":"gi");else {let f=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),b=i?`^${f}$`:f;h=new RegExp(b,r?"g":"gi");}}catch{let f=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");h=new RegExp(f,r?"g":"gi");}let g=[];for(let[f,b]of Object.entries(this.sheet.cells)){if(b.v===void 0||b.v===null)continue;let S=String(b.v);h.lastIndex=0;let v=h.exec(S);if(v){let T=this.parseCellRef(f);T&&g.push({row:T.row,col:T.col,cellRef:f,value:S,matchStart:v.index,matchEnd:v.index+v[0].length});}}return g.sort((f,b)=>f.row!==b.row?f.row-b.row:f.col-b.col),this.results=g,this.currentIndex=g.length>0?0:-1,g}next(){return this.results.length===0?null:(this.currentIndex=(this.currentIndex+1)%this.results.length,this.results[this.currentIndex])}previous(){return this.results.length===0?null:(this.currentIndex=(this.currentIndex-1+this.results.length)%this.results.length,this.results[this.currentIndex])}current(){return this.currentIndex<0||this.currentIndex>=this.results.length?null:this.results[this.currentIndex]}getResults(){return [...this.results]}getCount(){return this.results.length}getCurrentIndex(){return this.currentIndex+1}isResult(e,t){return this.results.some(r=>r.row===e&&r.col===t)}isCurrent(e,t){let r=this.current();return r?.row===e&&r?.col===t}clear(){this.results=[],this.currentIndex=-1;}setSheet(e){this.sheet=e,this.clear();}parseCellRef(e){let t=e.match(/^([A-Z]+)(\d+)$/i);if(!t)return null;let r=t[1].toUpperCase(),l=parseInt(t[2],10)-1,i=0;for(let h=0;h<r.length;h++)i=i*26+(r.charCodeAt(h)-64);return i-=1,{row:l,col:i}}};var he=class{state=null;virtualScroll;onChange;minWidth;maxWidth;constructor(e,t,r=30,l=500){this.virtualScroll=e,this.onChange=t??null,this.minWidth=r,this.maxWidth=l;}startResize(e,t){let r=this.virtualScroll.getColWidth(e);this.state={isResizing:true,colIndex:e,startX:t,startWidth:r},document.addEventListener("mousemove",this.handleMouseMove),document.addEventListener("mouseup",this.handleMouseUp),document.body.style.cursor="col-resize",document.body.style.userSelect="none";}handleMouseMove=e=>{if(!this.state)return;let t=e.clientX-this.state.startX,r=Math.min(this.maxWidth,Math.max(this.minWidth,this.state.startWidth+t));this.virtualScroll.setColWidth(this.state.colIndex,r),this.onChange?.(this.state.colIndex,r);};handleMouseUp=()=>{this.cleanup();};isResizing(){return this.state?.isResizing??false}getResizeColumn(){return this.state?.colIndex??null}cancel(){this.state&&(this.virtualScroll.setColWidth(this.state.colIndex,this.state.startWidth),this.onChange?.(this.state.colIndex,this.state.startWidth)),this.cleanup();}cleanup(){document.removeEventListener("mousemove",this.handleMouseMove),document.removeEventListener("mouseup",this.handleMouseUp),document.body.style.cursor="",document.body.style.userSelect="",this.state=null;}setVirtualScroll(e){this.virtualScroll=e;}destroy(){this.cleanup();}};var G={default:{name:"default",colors:{background:"#ffffff",foreground:"#202124",grid:"#e0e0e0",headerBackground:"#f8f9fa",headerForeground:"#5f6368",selectionBorder:"#1a73e8",selectionBackground:"rgba(26, 115, 232, 0.08)",frozenBorder:"#dadce0"},fonts:{family:"'Google Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",size:"13px",headerSize:"11px"}},excel:{name:"excel",colors:{background:"#ffffff",foreground:"#000000",grid:"#d4d4d4",headerBackground:"#f0f0f0",headerForeground:"#000000",selectionBorder:"#217346",selectionBackground:"rgba(33, 115, 70, 0.1)",frozenBorder:"#9bc2e6"},fonts:{family:"'Calibri', 'Segoe UI', sans-serif",size:"11px",headerSize:"11px"}},modern:{name:"modern",colors:{background:"#fafafa",foreground:"#18181b",grid:"#e4e4e7",headerBackground:"#f4f4f5",headerForeground:"#71717a",selectionBorder:"#3b82f6",selectionBackground:"rgba(59, 130, 246, 0.08)",frozenBorder:"#a1a1aa"},fonts:{family:"'Inter', -apple-system, BlinkMacSystemFont, sans-serif",size:"13px",headerSize:"11px"}},minimal:{name:"minimal",colors:{background:"#ffffff",foreground:"#27272a",grid:"#f4f4f5",headerBackground:"#ffffff",headerForeground:"#a1a1aa",selectionBorder:"#18181b",selectionBackground:"rgba(24, 24, 27, 0.04)",frozenBorder:"#e4e4e7"},fonts:{family:"'SF Pro Display', -apple-system, BlinkMacSystemFont, sans-serif",size:"13px",headerSize:"11px"}},dark:{name:"dark",colors:{background:"#1e1e1e",foreground:"#d4d4d4",grid:"#3c3c3c",headerBackground:"#252526",headerForeground:"#858585",selectionBorder:"#0078d4",selectionBackground:"rgba(0, 120, 212, 0.2)",frozenBorder:"#4a4a4a"},fonts:{family:"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",size:"13px",headerSize:"11px"}},midnight:{name:"midnight",colors:{background:"#0d1117",foreground:"#c9d1d9",grid:"#21262d",headerBackground:"#161b22",headerForeground:"#8b949e",selectionBorder:"#58a6ff",selectionBackground:"rgba(88, 166, 255, 0.15)",frozenBorder:"#30363d"},fonts:{family:"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",size:"13px",headerSize:"11px"}},accessible:{name:"accessible",colors:{background:"#ffffff",foreground:"#000000",grid:"#000000",headerBackground:"#e6e6e6",headerForeground:"#000000",selectionBorder:"#0000ff",selectionBackground:"rgba(0, 0, 255, 0.15)",frozenBorder:"#000000"},fonts:{family:"Arial, Helvetica, sans-serif",size:"14px",headerSize:"12px"}}};function ft(s){return G[s]??G.default}function ye(s,e){let t=s.style;t.setProperty("--nup-background",e.colors.background),t.setProperty("--nup-foreground",e.colors.foreground),t.setProperty("--nup-grid",e.colors.grid),t.setProperty("--nup-header-bg",e.colors.headerBackground),t.setProperty("--nup-header-fg",e.colors.headerForeground),t.setProperty("--nup-selection-border",e.colors.selectionBorder),t.setProperty("--nup-selection-bg",e.colors.selectionBackground),t.setProperty("--nup-frozen-border",e.colors.frozenBorder),t.setProperty("--nup-font-family",e.fonts.family),t.setProperty("--nup-font-size",e.fonts.size);}function Re(s){return `nup-theme-${s}`}var gt={thin:"1px solid",medium:"2px solid",thick:"3px solid",dashed:"1px dashed",dotted:"1px dotted",double:"3px double"};function Fe(s){if(!s||!s.style)return;let e=gt[s.style]||"1px solid",t=s.color||"#000000";return `${e} ${t}`}function mt(s,e){let t=s.replace("#",""),r=parseInt(t.substring(0,2),16),l=parseInt(t.substring(2,4),16),i=parseInt(t.substring(4,6),16),h,g,f;return e<0?(h=Math.round(r*(1+e)),g=Math.round(l*(1+e)),f=Math.round(i*(1+e))):(h=Math.round(r+(255-r)*e),g=Math.round(l+(255-l)*e),f=Math.round(i+(255-i)*e)),`#${h.toString(16).padStart(2,"0")}${g.toString(16).padStart(2,"0")}${f.toString(16).padStart(2,"0")}`}function xe(s){if(!s)return {};let e={};if(s.font){let t=s.font;t.name&&(e.fontFamily=t.name),t.size&&(e.fontSize=`${t.size}pt`),t.bold&&(e.fontWeight="bold"),t.italic&&(e.fontStyle="italic"),t.color&&(e.color=t.color);let r=[];t.underline&&r.push("underline"),t.strike&&r.push("line-through"),r.length>0&&(e.textDecoration=r.join(" "));}if(s.fill){let t=s.fill;if(t.color){let r=t.color;t.tint!==void 0&&t.tint!==0&&(r=mt(r,t.tint)),e.backgroundColor=r;}}if(s.alignment){let t=s.alignment;t.horizontal&&(e.textAlign=t.horizontal),t.vertical&&(e.verticalAlign=t.vertical==="middle"?"middle":t.vertical),t.wrapText&&(e.whiteSpace="pre-wrap"),t.indent&&(e.paddingLeft=`${t.indent*8}px`),t.rotation&&(e.transform=`rotate(${t.rotation}deg)`);}if(s.border){let t=s.border;(t.top||t.right||t.bottom||t.left)&&(e.borderTop=Fe(t.top)||"none",e.borderRight=Fe(t.right)||"none",e.borderBottom=Fe(t.bottom)||"none",e.borderLeft=Fe(t.left)||"none");}return e}function Ge(s){let e=Object.entries(s).filter(([,t])=>t!==void 0);return e.length===0?"":e.map(([t,r])=>`${t.replace(/([A-Z])/g,"-$1").toLowerCase()}: ${r}`).join("; ")}function et(s,e){if(s!==void 0&&e.styles)return e.styles[s]??e.styles[String(s)]}function De(s){let e=t=>t&&t!=="none";return !!(e(s.borderTop)||e(s.borderRight)||e(s.borderBottom)||e(s.borderLeft))}function Me(s,e,t){let r=t?et(e,t):void 0;if(!(!s&&!r))return s?r?{...r,...s,font:{...r.font,...s.font},fill:{...r.fill,...s.fill},border:{...r.border,...s.border},alignment:{...r.alignment,...s.alignment}}:s:r}var Ct=react.forwardRef(function(e,t){let{workbook:r,activeSheet:l=0,theme:i="default",width:h="100%",height:g="400px",className:f="",style:b={},showHeaders:S=true,showGridLines:v=true,showSheetTabs:T=true,selectable:fe=true,resizable:te=true,searchable:Oe=false,copyable:Ue=true,keyboardNavigation:je=true,frozenRows:ke=0,frozenCols:He=0,overscan:ze=5,defaultRowHeight:Pe=24,defaultColWidth:Ne=100,ariaLabel:Xe="Spreadsheet",onCellClick:$e,onCellDoubleClick:We,onCellRightClick:ge,onSelectionChange:Ie,onSheetChange:Ee,onColumnResize:Le,onScroll:me,onSearch:Y,onCopy:F}=e,O=react.useRef(null),$=react.useRef(null),[A,P]=react.useState(l),[V,_]=react.useState({top:0,left:0}),[H,M]=react.useState({width:0,height:0}),[R,re]=react.useState(null),[de,oe]=react.useState([]),[be,we]=react.useState(""),[ve,U]=react.useState(0),w=r.sheets[A]??r.sheets[0],Ae=react.useMemo(()=>typeof i=="string"?G[i]??G.default:i,[i]),y=react.useMemo(()=>{let o={},n={};return Object.entries(w.rows).forEach(([p,m])=>{m.h&&(o[parseInt(p)]=m.h);}),Object.entries(w.cols).forEach(([p,m])=>{m.w&&(n[parseInt(p)]=m.w);}),new ne({rows:w.rowCount,cols:w.colCount,rowHeights:o,colWidths:n,defaultRowHeight:Pe,defaultColWidth:Ne,overscan:ze,frozenRows:ke,frozenCols:He})},[w,Pe,Ne,ze,ke,He,ve]),x=react.useMemo(()=>new se(w,o=>{re(o),Ie?.(o);}),[w,Ie]),j=react.useMemo(()=>new ie(w.merges??[]),[w.merges]),N=react.useMemo(()=>new ce(w),[w]),D=react.useMemo(()=>new ae,[]),Z=react.useMemo(()=>new he(y,(o,n)=>{U(p=>p+1),Le?.(o,n);}),[y,Le]),Ce=react.useMemo(()=>new le(x,y,{enabled:je},{onScroll:(o,n)=>{let p=y.getScrollToPosition(o,n,H.height,H.width);$.current?.scrollTo({top:p.scrollTop,left:p.scrollLeft,behavior:"smooth"});},onCopy:async()=>{let o=x.getSelection();if(o&&Ue){let n=await D.copyToClipboard(o);F?.(n);}}}),[x,y,je,Ue,H,D,F]);react.useLayoutEffect(()=>{let o=$.current;if(!o)return;let n=new ResizeObserver(p=>{let m=p[0];m&&M({width:m.contentRect.width,height:m.contentRect.height});});return n.observe(o),M({width:o.clientWidth,height:o.clientHeight}),()=>n.disconnect()},[]),react.useEffect(()=>{O.current&&ye(O.current,Ae);},[Ae]),react.useEffect(()=>{P(l);},[l]);let W=react.useCallback(o=>{let{scrollTop:n,scrollLeft:p}=o.currentTarget;_({top:n,left:p});let m=y.getVisibleRange(n,p,H.height,H.width);me?.({scrollTop:n,scrollLeft:p,visibleRows:{start:m.startRow,end:m.endRow},visibleCols:{start:m.startCol,end:m.endCol}});},[y,H,me]),Ye=react.useCallback((o,n,p)=>{if(!fe)return;let m=E(o,n),k=w.cells[m]??null;x.handleClick(o,n,{shiftKey:p.shiftKey,ctrlKey:p.ctrlKey,metaKey:p.metaKey}),$e?.({cell:k,row:o,col:n,cellRef:m,originalEvent:p.nativeEvent});},[fe,w,x,$e]),a=react.useCallback((o,n,p)=>{let m=E(o,n),k=w.cells[m]??null;We?.({cell:k,row:o,col:n,cellRef:m,originalEvent:p.nativeEvent});},[w,We]),u=react.useCallback((o,n,p)=>{p.preventDefault();let m=E(o,n),k=w.cells[m]??null;ge?.({cell:k,row:o,col:n,cellRef:m,originalEvent:p.nativeEvent});},[w,ge]),C=react.useCallback(o=>{Ce.handleKeyDown(o.nativeEvent);},[Ce]),d=react.useCallback(o=>{P(o),x.clear(),Ee?.(o);},[x,Ee]),c=react.useCallback(o=>{we(o);let n=N.search(o);oe(n),Y?.(n);},[N,Y]),z=react.useCallback((o,n)=>{te&&(n.preventDefault(),n.stopPropagation(),Z.startResize(o,n.clientX));},[te,Z]);react.useImperativeHandle(t,()=>({scrollTo:(o,n)=>{let p=y.getScrollToPosition(o,n,H.height,H.width);$.current?.scrollTo({top:p.scrollTop,left:p.scrollLeft,behavior:"smooth"});},scrollToCell:o=>{let n=I(o);if(n){let p=y.getScrollToPosition(n.row,n.col,H.height,H.width);$.current?.scrollTo({top:p.scrollTop,left:p.scrollLeft,behavior:"smooth"});}},select:o=>{re(o);},selectCell:o=>{x.selectCell(o);},selectAll:()=>{x.selectAll();},clearSelection:()=>{x.clear();},getSelection:()=>R,setActiveSheet:d,getActiveSheet:()=>A,search:o=>(c(o),N.getResults()),highlightResults:o=>{oe(o);},clearHighlights:()=>{oe([]),we("");},getWorkbook:()=>r,getVisibleCells:()=>{let o=y.getVisibleRange(V.top,V.left,H.height,H.width),n=[];for(let p=o.startRow;p<=o.endRow;p++){let m=[];for(let k=o.startCol;k<=o.endCol;k++)m.push(w.cells[E(p,k)]??null);n.push(m);}return n},getCellAt:(o,n)=>w.cells[E(o,n)]??null,copySelection:async()=>{let o=x.getSelection();if(o){let n=await D.copyToClipboard(o);F?.(n);}},setColumnWidth:(o,n)=>{y.setColWidth(o,n),U(p=>p+1);},autoFitColumn:()=>{},autoFitAllColumns:()=>{},refresh:()=>U(o=>o+1),destroy:()=>{Z.destroy();}}),[y,H,x,N,D,d,c,A,R,r,w,V,Z,F]);let B=S?24:0,K=S?40:0,X=y.getVisibleRange(V.top,V.left,H.height,H.width),Be=[];for(let o=X.startRow;o<=X.endRow;o++)for(let n=X.startCol;n<=X.endCol;n++){if(j.isMergeHidden(o,n))continue;let p=j.getMergeRect(o,n,(q,ht)=>y.getCellRect(q,ht))??y.getCellRect(o,n),m=E(o,n),k=w.cells[m],_e=x.isCellSelected(o,n),Ze=x.isAnchor(o,n),st=de.some(q=>q.row===o&&q.col===n),lt=N.isCurrent(o,n),it=Me(k?.style,k?.s,r),Qe=xe(it),at=De(Qe),ct=j.isMergeMaster(o,n),Q="nup-cell";k?.t==="n"&&(Q+=" nup-cell-number"),_e&&(Q+=" nup-cell-selected"),Ze&&(Q+=" nup-cell-anchor"),st&&(Q+=" nup-cell-search-result"),lt&&(Q+=" nup-cell-search-current"),at&&(Q+=" nup-has-border"),ct&&(Q+=" nup-cell-merge-master"),Be.push(jsxRuntime.jsx("div",{className:Q,style:{top:p.top,left:p.left,width:p.width,height:p.height,...Qe},onClick:q=>Ye(o,n,q),onDoubleClick:q=>a(o,n,q),onContextMenu:q=>u(o,n,q),"data-row":o,"data-col":n,"data-cell-ref":m,role:"gridcell","aria-rowindex":o+1,"aria-colindex":n+1,tabIndex:Ze?0:-1,children:k?.v!==void 0&&k?.v!==null?String(k.v):""},`${o}-${n}`));}let Ke=[];if(S)for(let o=X.startCol;o<=X.endCol;o++){let n=y.getCellRect(0,o),p=R&&o>=R.start.col&&o<=R.end.col;Ke.push(jsxRuntime.jsxs("div",{className:`nup-header nup-header-col${p?" nup-header-selected":""}`,style:{left:n.left,width:n.width,height:B},children:[pe(o),te&&jsxRuntime.jsx("div",{className:"nup-resize-handle",onMouseDown:m=>z(o,m)})]},`ch-${o}`));}let Ve=[];if(S)for(let o=X.startRow;o<=X.endRow;o++){let n=y.getCellRect(o,0),p=R&&o>=R.start.row&&o<=R.end.row;Ve.push(jsxRuntime.jsx("div",{className:`nup-header nup-header-row${p?" nup-header-selected":""}`,style:{top:n.top,width:K,height:n.height},children:o+1},`rh-${o}`));}let Se=null;if(R){let o=y.getCellRect(R.start.row,R.start.col),n=y.getCellRect(R.end.row,R.end.col);Se=jsxRuntime.jsx("div",{className:"nup-selection-border",style:{top:o.top,left:o.left,width:n.left+n.width-o.left,height:n.top+n.height-o.top}});}let qe=typeof i=="string"?Re(i):"";return jsxRuntime.jsxs("div",{ref:O,className:`nup-spreadsheet ${qe} ${f} ${v?"":"nup-no-gridlines"}`,style:{width:h,height:g,...b},tabIndex:0,onKeyDown:C,role:"grid","aria-label":Xe,"aria-rowcount":w.rowCount,"aria-colcount":w.colCount,children:[Oe&&jsxRuntime.jsxs("div",{className:"nup-search-bar",children:[jsxRuntime.jsx("input",{type:"search",className:"nup-search-input",placeholder:"Search...",value:be,onChange:o=>c(o.target.value),"aria-label":"Search in spreadsheet"}),de.length>0&&jsxRuntime.jsxs("span",{className:"nup-search-count",children:[N.getCurrentIndex()," of ",de.length]}),jsxRuntime.jsx("button",{className:"nup-search-btn",onClick:()=>{let o=N.next();if(o){let n=y.getScrollToPosition(o.row,o.col,H.height,H.width);$.current?.scrollTo({top:n.scrollTop,left:n.scrollLeft,behavior:"smooth"});}},"aria-label":"Next result",children:"Next"})]}),S&&jsxRuntime.jsx("div",{className:"nup-corner",style:{width:K,height:B}}),S&&jsxRuntime.jsx("div",{className:"nup-header-row-container",style:{position:"absolute",top:0,left:K,right:0,height:B,overflow:"hidden"},children:jsxRuntime.jsx("div",{style:{position:"relative",width:y.totalWidth,height:B,transform:`translateX(${-V.left}px)`},children:Ke})}),S&&jsxRuntime.jsx("div",{className:"nup-header-col-container",style:{position:"absolute",top:B,left:0,bottom:T?32:0,width:K,overflow:"hidden"},children:jsxRuntime.jsx("div",{style:{position:"relative",width:K,height:y.totalHeight,transform:`translateY(${-V.top}px)`},children:Ve})}),jsxRuntime.jsx("div",{ref:$,className:"nup-scroll-container",style:{top:B,left:K,right:0,bottom:T?32:0},onScroll:W,children:jsxRuntime.jsxs("div",{className:"nup-content",style:{width:y.totalWidth,height:y.totalHeight},children:[Be,Se]})}),T&&r.sheets.length>1&&jsxRuntime.jsx("div",{className:"nup-sheet-tabs",children:r.sheets.map((o,n)=>jsxRuntime.jsx("button",{className:`nup-sheet-tab${n===A?" nup-sheet-tab-active":""}`,onClick:()=>d(n),children:o.name},o.id))})]})});function nt(s,e){let t=typeof s=="string"?document.querySelector(s):s;if(!t)throw new Error("Container element not found");let{workbook:r,activeSheet:l=0,theme:i="default",width:h="100%",height:g="400px",showHeaders:f=true,showGridLines:b=true,showSheetTabs:S=true,selectable:v=true,resizable:T=true,searchable:fe=false,copyable:te=true,keyboardNavigation:Oe=true,frozenRows:Ue=0,frozenCols:je=0,overscan:ke=5,defaultRowHeight:He=24,defaultColWidth:ze=100,ariaLabel:Pe="Spreadsheet",onCellClick:Ne,onCellDoubleClick:Xe,onCellRightClick:$e,onSelectionChange:We,onSheetChange:ge,onColumnResize:Ie,onScroll:Ee,onSearch:Le,onCopy:me}=e,Y=l,F=0,O=0,$=0,A=0,P=null,V=[],_=()=>r.sheets[Y]??r.sheets[0],H=()=>typeof i=="string"?G[i]??G.default:i,M,R,re,de,oe,be,we,ve=()=>{let a=_(),u={},C={};Object.entries(a.rows).forEach(([d,c])=>{c.h&&(u[parseInt(d)]=c.h);}),Object.entries(a.cols).forEach(([d,c])=>{c.w&&(C[parseInt(d)]=c.w);}),M=new ne({rows:a.rowCount,cols:a.colCount,rowHeights:u,colWidths:C,defaultRowHeight:He,defaultColWidth:ze,overscan:ke}),R=new se(a,d=>{P=d,We?.(d),W();}),re=new ie(a.merges??[]),de=new ce(a),oe=new ae,be=new he(M,(d,c)=>{Ie?.(d,c),W();}),we=new le(R,M,{enabled:Oe},{onScroll:(d,c)=>{let z=M.getScrollToPosition(d,c,A,$);x?.scrollTo({top:z.scrollTop,left:z.scrollLeft,behavior:"smooth"});},onCopy:async()=>{let d=R.getSelection();if(d&&te){let c=await oe.copyToClipboard(d);me?.(c);}}});},U=f?24:0,w=f?40:0,Ae=typeof i=="string"?Re(i):"";t.innerHTML=`
10
+ <div class="nup-spreadsheet ${Ae} ${b?"":"nup-no-gridlines"}"
11
11
  style="width: ${typeof h=="number"?h+"px":h}; height: ${typeof g=="number"?g+"px":g};"
12
12
  tabindex="0"
13
13
  role="grid"
14
- aria-label="${He}">
14
+ aria-label="${Pe}">
15
15
  ${f?`<div class="nup-corner" style="width: ${w}px; height: ${U}px;"></div>`:""}
16
16
  ${f?`
17
17
  <div class="nup-header-row-container" style="position: absolute; top: 0; left: ${w}px; right: 0; height: ${U}px; overflow: hidden;">
@@ -24,32 +24,32 @@
24
24
  <div class="nup-scroll-container" style="top: ${U}px; left: ${w}px; right: 0; bottom: ${S?"32px":"0"};">
25
25
  <div class="nup-content"></div>
26
26
  </div>
27
- ${S&&o.sheets.length>1?'<div class="nup-sheet-tabs"></div>':""}
27
+ ${S&&r.sheets.length>1?'<div class="nup-sheet-tabs"></div>':""}
28
28
  </div>
29
- `;let y=t.querySelector(".nup-spreadsheet"),x=t.querySelector(".nup-scroll-container"),_=t.querySelector(".nup-content"),P=t.querySelector(".nup-header-row-inner"),F=t.querySelector(".nup-header-col-inner"),Z=t.querySelector(".nup-sheet-tabs");ye(y,k()),Ce();let Se=new ResizeObserver(a=>{let u=a[0];u&&(N=u.contentRect.width,A=u.contentRect.height,$());});Se.observe(x),N=x.clientWidth,A=x.clientHeight,x.addEventListener("scroll",()=>{V=x.scrollTop,O=x.scrollLeft,P&&(P.style.transform=`translateX(${-O}px)`),F&&(F.style.transform=`translateY(${-V}px)`);let a=M.getVisibleRange(V,O,A,N);We?.({scrollTop:V,scrollLeft:O,visibleRows:{start:a.startRow,end:a.endRow},visibleCols:{start:a.startCol,end:a.endCol}}),$();}),y.addEventListener("keydown",a=>{ve.handleKeyDown(a);});let $=()=>{let a=q(),u=M.getVisibleRange(V,O,A,N);_.style.width=`${M.totalWidth}px`,_.style.height=`${M.totalHeight}px`,P&&(P.style.width=`${M.totalWidth}px`),F&&(F.style.height=`${M.totalHeight}px`);let C="";for(let d=u.startRow;d<=u.endRow;d++)for(let c=u.startCol;c<=u.endCol;c++){if(he.isMergeHidden(d,c))continue;let H=he.getMergeRect(d,c,(de,r)=>M.getCellRect(de,r))??M.getCellRect(d,c),B=E(d,c),D=a.cells[B],j=R.isCellSelected(d,c),Le=R.isAnchor(d,c),Ae=K.some(de=>de.row===d&&de.col===c),Be=["nup-cell",D?.t==="n"?"nup-cell-number":"",j?"nup-cell-selected":"",Le?"nup-cell-anchor":"",Ae?"nup-cell-search-result":""].filter(Boolean).join(" "),Ke=D?.v!==void 0&&D?.v!==null?String(D.v):"";C+=`
30
- <div class="${Be}"
31
- style="top: ${H.top}px; left: ${H.left}px; width: ${H.width}px; height: ${H.height}px;"
29
+ `;let y=t.querySelector(".nup-spreadsheet"),x=t.querySelector(".nup-scroll-container"),j=t.querySelector(".nup-content"),N=t.querySelector(".nup-header-row-inner"),D=t.querySelector(".nup-header-col-inner"),Z=t.querySelector(".nup-sheet-tabs");ye(y,H()),ve();let Ce=new ResizeObserver(a=>{let u=a[0];u&&($=u.contentRect.width,A=u.contentRect.height,W());});Ce.observe(x),$=x.clientWidth,A=x.clientHeight,x.addEventListener("scroll",()=>{F=x.scrollTop,O=x.scrollLeft,N&&(N.style.transform=`translateX(${-O}px)`),D&&(D.style.transform=`translateY(${-F}px)`);let a=M.getVisibleRange(F,O,A,$);Ee?.({scrollTop:F,scrollLeft:O,visibleRows:{start:a.startRow,end:a.endRow},visibleCols:{start:a.startCol,end:a.endCol}}),W();}),y.addEventListener("keydown",a=>{we.handleKeyDown(a);});let W=()=>{let a=_(),u=M.getVisibleRange(F,O,A,$);j.style.width=`${M.totalWidth}px`,j.style.height=`${M.totalHeight}px`,N&&(N.style.width=`${M.totalWidth}px`),D&&(D.style.height=`${M.totalHeight}px`);let C="";for(let d=u.startRow;d<=u.endRow;d++)for(let c=u.startCol;c<=u.endCol;c++){if(re.isMergeHidden(d,c))continue;let z=re.getMergeRect(d,c,(k,_e)=>M.getCellRect(k,_e))??M.getCellRect(d,c),B=E(d,c),K=a.cells[B],X=R.isCellSelected(d,c),Be=R.isAnchor(d,c),Ke=V.some(k=>k.row===d&&k.col===c),Ve=Me(K?.style,K?.s,r),Se=xe(Ve),qe=De(Se),o=re.isMergeMaster(d,c),n=["nup-cell",K?.t==="n"?"nup-cell-number":"",X?"nup-cell-selected":"",Be?"nup-cell-anchor":"",Ke?"nup-cell-search-result":"",qe?"nup-has-border":"",o?"nup-cell-merge-master":""].filter(Boolean).join(" "),p=K?.v!==void 0&&K?.v!==null?String(K.v):"",m=Ge(Se);C+=`
30
+ <div class="${n}"
31
+ style="top: ${z.top}px; left: ${z.left}px; width: ${z.width}px; height: ${z.height}px; ${m}"
32
32
  data-row="${d}" data-col="${c}" data-cell-ref="${B}">
33
- ${Ze(Ke)}
33
+ ${ot(p)}
34
34
  </div>
35
- `;}if(z){let d=M.getCellRect(z.start.row,z.start.col),c=M.getCellRect(z.end.row,z.end.col);C+=`
35
+ `;}if(P){let d=M.getCellRect(P.start.row,P.start.col),c=M.getCellRect(P.end.row,P.end.col);C+=`
36
36
  <div class="nup-selection-border"
37
37
  style="top: ${d.top}px; left: ${d.left}px; width: ${c.left+c.width-d.left}px; height: ${c.top+c.height-d.top}px;">
38
38
  </div>
39
- `;}if(_.innerHTML=C,f&&P){let d="";for(let c=u.startCol;c<=u.endCol;c++){let H=M.getCellRect(0,c),B=z&&c>=z.start.col&&c<=z.end.col;d+=`
39
+ `;}if(j.innerHTML=C,f&&N){let d="";for(let c=u.startCol;c<=u.endCol;c++){let z=M.getCellRect(0,c),B=P&&c>=P.start.col&&c<=P.end.col;d+=`
40
40
  <div class="nup-header nup-header-col ${B?"nup-header-selected":""}"
41
- style="left: ${H.left}px; width: ${H.width}px; height: ${U}px;">
42
- ${fe(c)}
41
+ style="left: ${z.left}px; width: ${z.width}px; height: ${U}px;">
42
+ ${pe(c)}
43
43
  ${T?'<div class="nup-resize-handle" data-col="'+c+'"></div>':""}
44
44
  </div>
45
- `;}P.innerHTML=d;}if(f&&F){let d="";for(let c=u.startRow;c<=u.endRow;c++){let H=M.getCellRect(c,0),B=z&&c>=z.start.row&&c<=z.end.row;d+=`
45
+ `;}N.innerHTML=d;}if(f&&D){let d="";for(let c=u.startRow;c<=u.endRow;c++){let z=M.getCellRect(c,0),B=P&&c>=P.start.row&&c<=P.end.row;d+=`
46
46
  <div class="nup-header nup-header-row ${B?"nup-header-selected":""}"
47
- style="top: ${H.top}px; width: ${w}px; height: ${H.height}px;">
47
+ style="top: ${z.top}px; width: ${w}px; height: ${z.height}px;">
48
48
  ${c+1}
49
49
  </div>
50
- `;}F.innerHTML=d;}Z&&o.sheets.length>1&&(Z.innerHTML=o.sheets.map((d,c)=>`
50
+ `;}D.innerHTML=d;}Z&&r.sheets.length>1&&(Z.innerHTML=r.sheets.map((d,c)=>`
51
51
  <button class="nup-sheet-tab ${c===Y?"nup-sheet-tab-active":""}" data-sheet="${c}">
52
- ${Ze(d.name)}
52
+ ${ot(d.name)}
53
53
  </button>
54
- `).join(""));};return _.addEventListener("click",a=>{if(!v)return;let u=a.target.closest(".nup-cell");if(!u)return;let C=parseInt(u.dataset.row??"0"),d=parseInt(u.dataset.col??"0"),c=u.dataset.cellRef??"";R.handleClick(C,d,{shiftKey:a.shiftKey,ctrlKey:a.ctrlKey,metaKey:a.metaKey}),ze?.({cell:q().cells[c]??null,row:C,col:d,cellRef:c,originalEvent:a});}),_.addEventListener("dblclick",a=>{let u=a.target.closest(".nup-cell");if(!u)return;let C=parseInt(u.dataset.row??"0"),d=parseInt(u.dataset.col??"0"),c=u.dataset.cellRef??"";Ue?.({cell:q().cells[c]??null,row:C,col:d,cellRef:c,originalEvent:a});}),_.addEventListener("contextmenu",a=>{let u=a.target.closest(".nup-cell");if(!u)return;a.preventDefault();let C=parseInt(u.dataset.row??"0"),d=parseInt(u.dataset.col??"0"),c=u.dataset.cellRef??"";Pe?.({cell:q().cells[c]??null,row:C,col:d,cellRef:c,originalEvent:a});}),Z?.addEventListener("click",a=>{let u=a.target.closest(".nup-sheet-tab");if(!u)return;let C=parseInt(u.dataset.sheet??"0");Y=C,Ce(),me?.(C),$();}),T&&P&&P.addEventListener("mousedown",a=>{let u=a.target.closest(".nup-resize-handle");if(!u)return;let C=parseInt(u.dataset.col??"0");we.startResize(C,a.clientX);}),$(),{scrollTo:(a,u)=>{let C=M.getScrollToPosition(a,u,A,N);x.scrollTo({top:C.scrollTop,left:C.scrollLeft,behavior:"smooth"});},scrollToCell:a=>{let u=I(a);if(u){let C=M.getScrollToPosition(u.row,u.col,A,N);x.scrollTo({top:C.scrollTop,left:C.scrollLeft,behavior:"smooth"});}},select:a=>{z=a,$();},selectCell:a=>{R.selectCell(a);},selectAll:()=>{R.selectAll();},clearSelection:()=>{R.clear();},getSelection:()=>z,setActiveSheet:a=>{Y=a,Ce(),me?.(a),$();},getActiveSheet:()=>Y,search:a=>{let u=ue.search(a);return K=u,Ie?.(u),$(),u},highlightResults:a=>{K=a,$();},clearHighlights:()=>{K=[],$();},getWorkbook:()=>o,getVisibleCells:()=>{let a=q(),u=M.getVisibleRange(V,O,A,N),C=[];for(let d=u.startRow;d<=u.endRow;d++){let c=[];for(let H=u.startCol;H<=u.endCol;H++)c.push(a.cells[E(d,H)]??null);C.push(c);}return C},getCellAt:(a,u)=>q().cells[E(a,u)]??null,copySelection:async()=>{let a=R.getSelection();if(a){let u=await te.copyToClipboard(a);be?.(u);}},setColumnWidth:(a,u)=>{M.setColWidth(a,u),$();},autoFitColumn:()=>{},autoFitAllColumns:()=>{},refresh:()=>$(),destroy:()=>{Se.disconnect(),we.destroy(),t.innerHTML="";}}}function Ze(i){return i.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}exports.ClipboardHandler=le;exports.KeyboardHandler=ne;exports.MergeHandler=se;exports.ReactSpreadsheetPreview=gt;exports.ResizeHandler=ae;exports.SearchHandler=ie;exports.SelectionHandler=re;exports.VirtualScroll=oe;exports.applyTheme=ye;exports.cellRefToCoords=I;exports.colIndexToLetter=fe;exports.coordsToCellRef=E;exports.createSpreadsheetPreview=Qe;exports.cssToStyleString=ht;exports.default=Qe;exports.formatCellValue=nt;exports.getCellStyle=ut;exports.getTheme=lt;exports.getThemeClass=Re;exports.isFormula=st;exports.letterToColIndex=qe;exports.parseRange=rt;exports.resolveStyle=_e;exports.styleToCss=ct;exports.themes=G;//# sourceMappingURL=index.cjs.map
54
+ `).join(""));};return j.addEventListener("click",a=>{if(!v)return;let u=a.target.closest(".nup-cell");if(!u)return;let C=parseInt(u.dataset.row??"0"),d=parseInt(u.dataset.col??"0"),c=u.dataset.cellRef??"";R.handleClick(C,d,{shiftKey:a.shiftKey,ctrlKey:a.ctrlKey,metaKey:a.metaKey}),Ne?.({cell:_().cells[c]??null,row:C,col:d,cellRef:c,originalEvent:a});}),j.addEventListener("dblclick",a=>{let u=a.target.closest(".nup-cell");if(!u)return;let C=parseInt(u.dataset.row??"0"),d=parseInt(u.dataset.col??"0"),c=u.dataset.cellRef??"";Xe?.({cell:_().cells[c]??null,row:C,col:d,cellRef:c,originalEvent:a});}),j.addEventListener("contextmenu",a=>{let u=a.target.closest(".nup-cell");if(!u)return;a.preventDefault();let C=parseInt(u.dataset.row??"0"),d=parseInt(u.dataset.col??"0"),c=u.dataset.cellRef??"";$e?.({cell:_().cells[c]??null,row:C,col:d,cellRef:c,originalEvent:a});}),Z?.addEventListener("click",a=>{let u=a.target.closest(".nup-sheet-tab");if(!u)return;let C=parseInt(u.dataset.sheet??"0");Y=C,ve(),ge?.(C),W();}),T&&N&&N.addEventListener("mousedown",a=>{let u=a.target.closest(".nup-resize-handle");if(!u)return;let C=parseInt(u.dataset.col??"0");be.startResize(C,a.clientX);}),W(),{scrollTo:(a,u)=>{let C=M.getScrollToPosition(a,u,A,$);x.scrollTo({top:C.scrollTop,left:C.scrollLeft,behavior:"smooth"});},scrollToCell:a=>{let u=I(a);if(u){let C=M.getScrollToPosition(u.row,u.col,A,$);x.scrollTo({top:C.scrollTop,left:C.scrollLeft,behavior:"smooth"});}},select:a=>{P=a,W();},selectCell:a=>{R.selectCell(a);},selectAll:()=>{R.selectAll();},clearSelection:()=>{R.clear();},getSelection:()=>P,setActiveSheet:a=>{Y=a,ve(),ge?.(a),W();},getActiveSheet:()=>Y,search:a=>{let u=de.search(a);return V=u,Le?.(u),W(),u},highlightResults:a=>{V=a,W();},clearHighlights:()=>{V=[],W();},getWorkbook:()=>r,getVisibleCells:()=>{let a=_(),u=M.getVisibleRange(F,O,A,$),C=[];for(let d=u.startRow;d<=u.endRow;d++){let c=[];for(let z=u.startCol;z<=u.endCol;z++)c.push(a.cells[E(d,z)]??null);C.push(c);}return C},getCellAt:(a,u)=>_().cells[E(a,u)]??null,copySelection:async()=>{let a=R.getSelection();if(a){let u=await oe.copyToClipboard(a);me?.(u);}},setColumnWidth:(a,u)=>{M.setColWidth(a,u),W();},autoFitColumn:()=>{},autoFitAllColumns:()=>{},refresh:()=>W(),destroy:()=>{Ce.disconnect(),be.destroy(),t.innerHTML="";}}}function ot(s){return s.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}exports.ClipboardHandler=ae;exports.KeyboardHandler=le;exports.MergeHandler=ie;exports.ReactSpreadsheetPreview=Ct;exports.ResizeHandler=he;exports.SearchHandler=ce;exports.SelectionHandler=se;exports.VirtualScroll=ne;exports.applyTheme=ye;exports.cellRefToCoords=I;exports.colIndexToLetter=pe;exports.coordsToCellRef=E;exports.createSpreadsheetPreview=nt;exports.cssToStyleString=Ge;exports.default=nt;exports.formatCellValue=dt;exports.getCellStyle=Me;exports.getTheme=ft;exports.getThemeClass=Re;exports.isFormula=pt;exports.letterToColIndex=Je;exports.parseRange=ut;exports.resolveStyle=et;exports.styleToCss=xe;exports.themes=G;//# sourceMappingURL=index.cjs.map
55
55
  //# sourceMappingURL=index.cjs.map