@nuptechs/nup-xlsx-preview 1.1.1 → 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/adapters/react.cjs +3 -3
- package/dist/adapters/react.cjs.map +1 -1
- package/dist/adapters/react.js +3 -3
- package/dist/adapters/react.js.map +1 -1
- package/dist/adapters/vanilla.cjs +21 -21
- package/dist/adapters/vanilla.cjs.map +1 -1
- package/dist/adapters/vanilla.js +21 -21
- package/dist/adapters/vanilla.js.map +1 -1
- package/dist/adapters/vue.cjs +3 -3
- package/dist/adapters/vue.cjs.map +1 -1
- package/dist/adapters/vue.js +3 -3
- package/dist/adapters/vue.js.map +1 -1
- package/dist/index.cjs +20 -20
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +20 -20
- package/dist/index.js.map +1 -1
- package/dist/styles/base.css +23 -8
- package/dist/styles/index.css +23 -8
- package/package.json +1 -1
package/dist/adapters/vue.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {defineComponent,ref,computed,onMounted,onUnmounted,watch,h}from'vue';var I=class{rowPositions;colPositions;rowHeightCache;colWidthCache;totalHeight;totalWidth;overscan;rowCount;colCount;frozenRows;frozenCols;frozenRowsHeight;frozenColsWidth;constructor(e){let{rows:t,cols:o,rowHeights:n,colWidths:s,defaultRowHeight:l=24,defaultColWidth:a=100,overscan:c=5,frozenRows:h=0,frozenCols:
|
|
2
|
-
`),s=[];for(let a of t){let c=a.map(h=>{let
|
|
1
|
+
import {defineComponent,ref,computed,onMounted,onUnmounted,watch,h}from'vue';var I=class{rowPositions;colPositions;rowHeightCache;colWidthCache;totalHeight;totalWidth;overscan;rowCount;colCount;frozenRows;frozenCols;frozenRowsHeight;frozenColsWidth;constructor(e){let{rows:t,cols:o,rowHeights:n,colWidths:s,defaultRowHeight:l=24,defaultColWidth:a=100,overscan:c=5,frozenRows:h=0,frozenCols:y=0}=e;this.frozenRows=h,this.frozenCols=y,this.rowCount=t,this.colCount=o,this.overscan=c,this.rowPositions=new Array(t+1),this.rowHeightCache=new Array(t),this.rowPositions[0]=0;for(let f=0;f<t;f++){let v=n[f]??l;this.rowHeightCache[f]=v,this.rowPositions[f+1]=this.rowPositions[f]+v;}this.totalHeight=this.rowPositions[t],this.frozenRowsHeight=h>0?this.rowPositions[h]??0:0,this.colPositions=new Array(o+1),this.colWidthCache=new Array(o),this.colPositions[0]=0;for(let f=0;f<o;f++){let v=s[f]??a;this.colWidthCache[f]=v,this.colPositions[f+1]=this.colPositions[f]+v;}this.totalWidth=this.colPositions[o],this.frozenColsWidth=y>0?this.colPositions[y]??0:0;}getFrozenInfo(){return {rows:this.frozenRows,cols:this.frozenCols,frozenRowsHeight:this.frozenRowsHeight,frozenColsWidth:this.frozenColsWidth}}binarySearch(e,t){let o=0,n=e.length-2;for(;o<=n;){let s=o+n>>>1,l=e[s],a=e[s+1];if(t>=l&&t<a)return s;t<l?n=s-1:o=s+1;}return Math.max(0,Math.min(o,e.length-2))}getVisibleRange(e,t,o,n){let s=e+this.frozenRowsHeight,l=t+this.frozenColsWidth,a=this.binarySearch(this.rowPositions,s),c=this.binarySearch(this.rowPositions,s+Math.max(0,o)),h=this.binarySearch(this.colPositions,l),y=this.binarySearch(this.colPositions,l+Math.max(0,n)),f=Math.max(this.frozenRows,a-this.overscan),v=Math.min(this.rowCount-1,c+this.overscan),P=Math.max(this.frozenCols,h-this.overscan),b=Math.min(this.colCount-1,y+this.overscan);return {startRow:f,endRow:v,startCol:P,endCol:b}}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],n=t-o;this.colWidthCache[e]=t;for(let s=e+1;s<=this.colCount;s++)this.colPositions[s]+=n;this.totalWidth+=n;}getIndexAtPosition(e,t){return {row:this.binarySearch(this.rowPositions,e),col:this.binarySearch(this.colPositions,t)}}getScrollToPosition(e,t,o,n){let s=this.rowPositions[e]??0,l=this.colPositions[t]??0;return {scrollTop:Math.max(0,s-o/2),scrollLeft:Math.max(0,l-n/2)}}};function G(r){let e="",t=r;for(;t>=0;)e=String.fromCharCode(t%26+65)+e,t=Math.floor(t/26)-1;return e}function pe(r){let e=0,t=r.toUpperCase();for(let o=0;o<t.length;o++)e=e*26+(t.charCodeAt(o)-64);return e-1}function H(r,e){return `${G(e)}${r+1}`}function k(r){let e=r.match(/^([A-Z]+)(\d+)$/i);if(!e)return null;let t=pe(e[1]),o=parseInt(e[2],10)-1;return o<0||t<0?null:{row:o,col:t}}var A=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:n,ctrlKey:s,metaKey:l}=o;n&&this.state.anchor?(this.state.focus={row:e,col:t},this.updateRanges()):s||l?(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=k(e);t&&(this.state.anchor=t,this.state.focus=t,this.state.ranges=[this.createRange(t,t)],this.notifyChange());}selectRange(e,t){let o=k(e),n=k(t);!o||!n||(this.state.anchor=o,this.state.focus=n,this.state.ranges=[this.createRange(o,n)],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),n=Math.max(e.row,t.row),s=Math.min(e.col,t.col),l=Math.max(e.col,t.col),a=[],c=[];for(let h=o;h<=n;h++){let y=[];for(let f=s;f<=l;f++){let v=H(h,f);c.push(v),y.push(this.sheet.cells[v]??null);}a.push(y);}return {start:{row:o,col:s},end:{row:n,col:l},cells:a,cellRefs:c}}notifyChange(){this.onChange&&this.onChange(this.getSelection());}};var L=class{selection;virtualScroll;config;onScroll;onCopy;constructor(e,t,o,n){this.selection=e,this.virtualScroll=t,this.config=o,this.onScroll=n?.onScroll??null,this.onCopy=n?.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:n,metaKey:s}=e,l=n||s;if(l&&t==="c")return "copy";if(l&&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(l)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:n}=t?.start??{row:0,col:0},s=o,l=n;switch(e){case "move-up":s=Math.max(0,o-1);break;case "move-down":s=Math.min(this.virtualScroll.rowCount-1,o+1);break;case "move-left":l=Math.max(0,n-1);break;case "move-right":l=Math.min(this.virtualScroll.colCount-1,n+1);break;case "move-page-up":s=Math.max(0,o-20);break;case "move-page-down":s=Math.min(this.virtualScroll.rowCount-1,o+20);break;case "move-home":l=0;break;case "move-end":l=this.virtualScroll.colCount-1;break;case "move-ctrl-home":s=0,l=0;break;case "move-ctrl-end":s=this.virtualScroll.rowCount-1,l=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(s,l,{shiftKey:false,ctrlKey:false,metaKey:false}),this.scrollToSelection();}extendSelection(e){let t=this.selection.getSelection();if(!t)return;let{row:o,col:n}=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":n=Math.max(0,n-1);break;case "extend-right":n=Math.min(this.virtualScroll.colCount-1,n+1);break}this.selection.handleDrag(o,n),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 K=class{merges;mergeMap;constructor(e=[]){this.merges=[],this.mergeMap=new Map,this.parseMerges(e);}parseMerges(e){for(let t of e){let[o,n]=t.split(":");if(!o||!n)continue;let s=k(o),l=k(n);if(!s||!l)continue;let a={startRow:Math.min(s.row,l.row),startCol:Math.min(s.col,l.col),endRow:Math.max(s.row,l.row),endCol:Math.max(s.col,l.col),cellRef:o};this.merges.push(a);for(let c=a.startRow;c<=a.endRow;c++)for(let h=a.startCol;h<=a.endCol;h++){let y=`${c},${h}`;this.mergeMap.set(y,a);}}}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 n=this.getMergeAt(e,t);if(!n||!this.isMergeMaster(e,t))return null;let s=o(n.startRow,n.startCol),l=o(n.endRow,n.endCol);return {top:s.top,left:s.left,width:l.left+l.width-s.left,height:l.top+l.height-s.top}}getAllMerges(){return [...this.merges]}getVisibleMerges(e,t,o,n){return this.merges.filter(s=>s.endRow>=e&&s.startRow<=t&&s.endCol>=o&&s.startCol<=n)}update(e){this.merges=[],this.mergeMap.clear(),this.parseMerges(e);}};var E=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"}),n=new Blob([t.text],{type:"text/plain"});await navigator.clipboard.write([new ClipboardItem({"text/html":o,"text/plain":n})]);}else await this.copyWithExecCommand(t.text);}catch{await this.copyWithExecCommand(t.text);}return t}formatSelection(e){let{cells:t}=e,o=[];for(let a of t){let c=a.map(h=>this.getCellValue(h));o.push(c.join(" "));}let n=o.join(`
|
|
2
|
+
`),s=[];for(let a of t){let c=a.map(h=>{let y=this.escapeHtml(this.getCellValue(h));return `<td style="${this.getCellStyle(h)}">${y}</td>`});s.push(`<tr>${c.join("")}</tr>`);}let l=`
|
|
3
3
|
<table style="border-collapse: collapse; font-family: Arial, sans-serif; font-size: 12px;">
|
|
4
4
|
<tbody>
|
|
5
5
|
${s.join(`
|
|
6
6
|
`)}
|
|
7
7
|
</tbody>
|
|
8
8
|
</table>
|
|
9
|
-
`.trim();return {text:n,html:l,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,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}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 $=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:n=false,matchWholeCell:s=false}=t,l;try{if(n)l=new RegExp(e,o?"g":"gi");else {let c=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),h=s?`^${c}$`:c;l=new RegExp(h,o?"g":"gi");}}catch{let c=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");l=new RegExp(c,o?"g":"gi");}let a=[];for(let[c,h]of Object.entries(this.sheet.cells)){if(h.v===void 0||h.v===null)continue;let v=String(h.v);l.lastIndex=0;let d=l.exec(v);if(d){let b=this.parseCellRef(c);b&&a.push({row:b.row,col:b.col,cellRef:c,value:v,matchStart:d.index,matchEnd:d.index+d[0].length});}}return a.sort((c,h)=>c.row!==h.row?c.row-h.row:c.col-h.col),this.results=a,this.currentIndex=a.length>0?0:-1,a}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(),n=parseInt(t[2],10)-1,s=0;for(let l=0;l<o.length;l++)s=s*26+(o.charCodeAt(l)-64);return s-=1,{row:n,col:s}}};var K=class{state=null;virtualScroll;onChange;minWidth;maxWidth;constructor(e,t,o=30,n=500){this.virtualScroll=e,this.onChange=t??null,this.minWidth=o,this.maxWidth=n;}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 j={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 U(r,e){let t=r.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 ee(r){return `nup-theme-${r}`}var de={thin:"1px solid",medium:"2px solid",thick:"3px solid",dashed:"1px dashed",dotted:"1px dotted",double:"3px double"};function L(r){if(!r||!r.style)return;let e=de[r.style]||"1px solid",t=r.color||"#000000";return `${e} ${t}`}function fe(r,e){let t=r.replace("#",""),o=parseInt(t.substring(0,2),16),n=parseInt(t.substring(2,4),16),s=parseInt(t.substring(4,6),16),l,a,c;return e<0?(l=Math.round(o*(1+e)),a=Math.round(n*(1+e)),c=Math.round(s*(1+e))):(l=Math.round(o+(255-o)*e),a=Math.round(n+(255-n)*e),c=Math.round(s+(255-s)*e)),`#${l.toString(16).padStart(2,"0")}${a.toString(16).padStart(2,"0")}${c.toString(16).padStart(2,"0")}`}function te(r){if(!r)return {};let e={};if(r.font){let t=r.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(r.fill){let t=r.fill;if(t.color){let o=t.color;t.tint!==void 0&&t.tint!==0&&(o=fe(o,t.tint)),e.backgroundColor=o;}}if(r.alignment){let t=r.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(r.border){let t=r.border;e.borderTop=L(t.top),e.borderRight=L(t.right),e.borderBottom=L(t.bottom),e.borderLeft=L(t.left);}return e}function ge(r,e){if(r!==void 0&&e.styles)return e.styles[r]??e.styles[String(r)]}function oe(r,e,t){let o=t?ge(e,t):void 0;if(!(!r&&!o))return r?o?{...o,...r,font:{...o.font,...r.font},fill:{...o.fill,...r.fill},border:{...o.border,...r.border},alignment:{...o.alignment,...r.alignment}}:r:o}var ve=defineComponent({name:"NupSpreadsheetPreview",props:{workbook:{type:Object,required:true},activeSheet:{type:Number,default:0},theme:{type:[Object,String],default:"default"},width:{type:[Number,String],default:"100%"},height:{type:[Number,String],default:"400px"},showHeaders:{type:Boolean,default:true},showGridLines:{type:Boolean,default:true},showSheetTabs:{type:Boolean,default:true},selectable:{type:Boolean,default:true},resizable:{type:Boolean,default:true},searchable:{type:Boolean,default:false},copyable:{type:Boolean,default:true},keyboardNavigation:{type:Boolean,default:true},frozenRows:{type:Number,default:0},frozenCols:{type:Number,default:0},overscan:{type:Number,default:5},defaultRowHeight:{type:Number,default:24},defaultColWidth:{type:Number,default:100},ariaLabel:{type:String,default:"Spreadsheet"},zoomLevel:{type:Number,default:100,validator:r=>r>=50&&r<=200}},emits:["cellClick","cellDoubleClick","cellRightClick","selectionChange","sheetChange","columnResize","scroll","search","copy"],setup(r,{emit:e,expose:t}){let o=ref(null),n=ref(null),s=ref(r.activeSheet),l=ref({top:0,left:0}),a=ref({width:0,height:0}),c=ref(null),h$1=ref([]),v=ref(""),d=ref(0),b=computed(()=>r.workbook.sheets[s.value]??r.workbook.sheets[0]),H=computed(()=>typeof r.theme=="string"?j[r.theme]??j.default:r.theme),w,x,E,G,F,V,X,Z=()=>{let i=b.value,f={},p={};Object.entries(i.rows).forEach(([m,C])=>{C.h&&(f[parseInt(m)]=C.h);}),Object.entries(i.cols).forEach(([m,C])=>{C.w&&(p[parseInt(m)]=C.w);}),w=new I({rows:i.rowCount,cols:i.colCount,rowHeights:f,colWidths:p,defaultRowHeight:r.defaultRowHeight,defaultColWidth:r.defaultColWidth,overscan:r.overscan}),x=new P(i,m=>{c.value=m,e("selectionChange",m);}),E=new N(i.merges??[]),G=new $(i),F=new A,V=new K(w,(m,C)=>{d.value++,e("columnResize",m,C);}),X=new B(x,w,{enabled:r.keyboardNavigation},{onScroll:(m,C)=>{let y=w.getScrollToPosition(m,C,a.value.height,a.value.width);n.value?.scrollTo({top:y.scrollTop,left:y.scrollLeft,behavior:"smooth"});},onCopy:async()=>{let m=x.getSelection();if(m&&r.copyable){let C=await F.copyToClipboard(m);e("copy",C);}}});};return onMounted(()=>{Z();let i=n.value;i&&(new ResizeObserver(p=>{let m=p[0];m&&(a.value={width:m.contentRect.width,height:m.contentRect.height});}).observe(i),a.value={width:i.clientWidth,height:i.clientHeight}),o.value&&U(o.value,H.value);}),onUnmounted(()=>{V?.destroy();}),watch(()=>r.activeSheet,i=>{s.value=i;}),watch(s,()=>{Z(),l.value={top:0,left:0},n.value&&(n.value.scrollTop=0,n.value.scrollLeft=0),c.value=null,d.value++;}),watch(H,i=>{o.value&&U(o.value,i);}),t({scrollTo:(i,f)=>{let p=w.getScrollToPosition(i,f,a.value.height,a.value.width);n.value?.scrollTo({top:p.scrollTop,left:p.scrollLeft,behavior:"smooth"});},scrollToCell:i=>{let f=M(i);if(f){let p=w.getScrollToPosition(f.row,f.col,a.value.height,a.value.width);n.value?.scrollTo({top:p.scrollTop,left:p.scrollLeft,behavior:"smooth"});}},select:i=>{c.value=i;},selectCell:i=>{x.selectCell(i);},selectAll:()=>{x.selectAll();},clearSelection:()=>{x.clear();},getSelection:()=>c.value,setActiveSheet:i=>{s.value=i,e("sheetChange",i);},getActiveSheet:()=>s.value,search:i=>{v.value=i;let f=G.search(i);return h$1.value=f,e("search",f),f},highlightResults:i=>{h$1.value=i;},clearHighlights:()=>{h$1.value=[],v.value="";},getWorkbook:()=>r.workbook,getVisibleCells:()=>{let i=w.getVisibleRange(l.value.top,l.value.left,a.value.height,a.value.width),f=[];for(let p=i.startRow;p<=i.endRow;p++){let m=[];for(let C=i.startCol;C<=i.endCol;C++)m.push(b.value.cells[W(p,C)]??null);f.push(m);}return f},getCellAt:(i,f)=>b.value.cells[W(i,f)]??null,copySelection:async()=>{let i=x.getSelection();if(i){let f=await F.copyToClipboard(i);e("copy",f);}},setColumnWidth:(i,f)=>{w.setColWidth(i,f),d.value++;},autoFitColumn:()=>{},autoFitAllColumns:()=>{},refresh:()=>{d.value++;},destroy:()=>{V?.destroy();}}),()=>{let i=b.value,f=r.showHeaders?24:0,p=r.showHeaders?40:0,m=a.value.height||400,C=a.value.width||800,y=w?.getVisibleRange(l.value.top,l.value.left,m,C)??{startRow:0,endRow:Math.min(50,i.rowCount-1),startCol:0,endCol:Math.min(20,i.colCount-1)},_=[];for(let u=y.startRow;u<=y.endRow;u++)for(let g=y.startCol;g<=y.endCol;g++){if(E?.isMergeHidden(u,g))continue;let R=E?.getMergeRect(u,g,(T,ue)=>w.getCellRect(T,ue))??w?.getCellRect(u,g);if(!R)continue;let q=W(u,g),z=i.cells[q],le=x?.isCellSelected(u,g),ie=x?.isAnchor(u,g),ae=oe(z?.style,z?.s,r.workbook),ce=te(ae);_.push(h("div",{key:`${u}-${g}`,class:["nup-cell",{"nup-cell-number":z?.t==="n"},{"nup-cell-selected":le},{"nup-cell-anchor":ie}],style:{top:`${R.top}px`,left:`${R.left}px`,width:`${R.width}px`,height:`${R.height}px`,...ce},onClick:T=>{r.selectable&&(x?.handleClick(u,g,{shiftKey:T.shiftKey,ctrlKey:T.ctrlKey,metaKey:T.metaKey}),e("cellClick",{cell:z,row:u,col:g,cellRef:q,originalEvent:T}));}},z?.v!==void 0&&z?.v!==null?String(z.v):""));}let ne=typeof r.theme=="string"?ee(r.theme):"",Q=[];if(r.showHeaders)for(let u=y.startCol;u<=y.endCol;u++){let g=w?.getCellRect(0,u);if(!g)continue;let R=c.value&&u>=c.value.start.col&&u<=c.value.end.col;Q.push(h("div",{key:`col-${u}`,class:["nup-header","nup-header-col",{"nup-header-selected":R}],style:{left:`${g.left-l.value.left+p}px`,top:0,width:`${g.width}px`,height:`${f}px`}},D(u)));}let Y=[];if(r.showHeaders)for(let u=y.startRow;u<=y.endRow;u++){let g=w?.getCellRect(u,0);if(!g)continue;let R=c.value&&u>=c.value.start.row&&u<=c.value.end.row;Y.push(h("div",{key:`row-${u}`,class:["nup-header","nup-header-row",{"nup-header-selected":R}],style:{top:`${g.top-l.value.top+f}px`,left:0,width:`${p}px`,height:`${g.height}px`}},String(u+1)));}let J=r.zoomLevel/100,se=J!==1?{transform:`scale(${J})`,transformOrigin:"top left"}:{};return h("div",{ref:o,class:["nup-spreadsheet",ne,{"nup-no-gridlines":!r.showGridLines}],style:{width:r.width,height:r.height,...se},tabindex:0,onKeydown:u=>X?.handleKeyDown(u)},[r.showHeaders&&h("div",{class:"nup-corner",style:{width:`${p}px`,height:`${f}px`}}),r.showHeaders&&h("div",{class:"nup-col-headers",style:{position:"absolute",top:0,left:0,right:0,height:`${f}px`,overflow:"hidden",zIndex:20}},Q),r.showHeaders&&h("div",{class:"nup-row-headers",style:{position:"absolute",top:0,left:0,bottom:r.showSheetTabs?"32px":0,width:`${p}px`,overflow:"hidden",zIndex:20}},Y),h("div",{ref:n,class:"nup-scroll-container",style:{top:`${f}px`,left:`${p}px`,right:0,bottom:r.showSheetTabs?"32px":0},onScroll:u=>{let g=u.target;l.value={top:g.scrollTop,left:g.scrollLeft};}},[h("div",{class:"nup-content",style:{width:`${w?.totalWidth??0}px`,height:`${w?.totalHeight??0}px`}},_)]),r.showSheetTabs&&r.workbook.sheets.length>1&&h("div",{class:"nup-sheet-tabs",style:{position:"absolute",bottom:0,left:0,right:0}},r.workbook.sheets.map((u,g)=>h("button",{key:u.id,class:["nup-sheet-tab",{"nup-sheet-tab-active":g===s.value}],onClick:()=>{s.value=g,e("sheetChange",g);}},u.name)))])}}}),je=ve;export{ve as NupSpreadsheetPreview,je as default};//# sourceMappingURL=vue.js.map
|
|
9
|
+
`.trim();return {text:n,html:l,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,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}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 V=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:n=false,matchWholeCell:s=false}=t,l;try{if(n)l=new RegExp(e,o?"g":"gi");else {let c=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),h=s?`^${c}$`:c;l=new RegExp(h,o?"g":"gi");}}catch{let c=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");l=new RegExp(c,o?"g":"gi");}let a=[];for(let[c,h]of Object.entries(this.sheet.cells)){if(h.v===void 0||h.v===null)continue;let y=String(h.v);l.lastIndex=0;let f=l.exec(y);if(f){let v=this.parseCellRef(c);v&&a.push({row:v.row,col:v.col,cellRef:c,value:y,matchStart:f.index,matchEnd:f.index+f[0].length});}}return a.sort((c,h)=>c.row!==h.row?c.row-h.row:c.col-h.col),this.results=a,this.currentIndex=a.length>0?0:-1,a}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(),n=parseInt(t[2],10)-1,s=0;for(let l=0;l<o.length;l++)s=s*26+(o.charCodeAt(l)-64);return s-=1,{row:n,col:s}}};var F=class{state=null;virtualScroll;onChange;minWidth;maxWidth;constructor(e,t,o=30,n=500){this.virtualScroll=e,this.onChange=t??null,this.minWidth=o,this.maxWidth=n;}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 X={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 Z(r,e){let t=r.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(r){return `nup-theme-${r}`}var be={thin:"1px solid",medium:"2px solid",thick:"3px solid",dashed:"1px dashed",dotted:"1px dotted",double:"3px double"};function j(r){if(!r||!r.style)return;let e=be[r.style]||"1px solid",t=r.color||"#000000";return `${e} ${t}`}function ve(r,e){let t=r.replace("#",""),o=parseInt(t.substring(0,2),16),n=parseInt(t.substring(2,4),16),s=parseInt(t.substring(4,6),16),l,a,c;return e<0?(l=Math.round(o*(1+e)),a=Math.round(n*(1+e)),c=Math.round(s*(1+e))):(l=Math.round(o+(255-o)*e),a=Math.round(n+(255-n)*e),c=Math.round(s+(255-s)*e)),`#${l.toString(16).padStart(2,"0")}${a.toString(16).padStart(2,"0")}${c.toString(16).padStart(2,"0")}`}function ne(r){if(!r)return {};let e={};if(r.font){let t=r.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(r.fill){let t=r.fill;if(t.color){let o=t.color;t.tint!==void 0&&t.tint!==0&&(o=ve(o,t.tint)),e.backgroundColor=o;}}if(r.alignment){let t=r.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(r.border){let t=r.border;(t.top||t.right||t.bottom||t.left)&&(e.borderTop=j(t.top)||"none",e.borderRight=j(t.right)||"none",e.borderBottom=j(t.bottom)||"none",e.borderLeft=j(t.left)||"none");}return e}function we(r,e){if(r!==void 0&&e.styles)return e.styles[r]??e.styles[String(r)]}function se(r){let e=t=>t&&t!=="none";return !!(e(r.borderTop)||e(r.borderRight)||e(r.borderBottom)||e(r.borderLeft))}function le(r,e,t){let o=t?we(e,t):void 0;if(!(!r&&!o))return r?o?{...o,...r,font:{...o.font,...r.font},fill:{...o.fill,...r.fill},border:{...o.border,...r.border},alignment:{...o.alignment,...r.alignment}}:r:o}var xe=defineComponent({name:"NupSpreadsheetPreview",props:{workbook:{type:Object,required:true},activeSheet:{type:Number,default:0},theme:{type:[Object,String],default:"default"},width:{type:[Number,String],default:"100%"},height:{type:[Number,String],default:"400px"},showHeaders:{type:Boolean,default:true},showGridLines:{type:Boolean,default:true},showSheetTabs:{type:Boolean,default:true},selectable:{type:Boolean,default:true},resizable:{type:Boolean,default:true},searchable:{type:Boolean,default:false},copyable:{type:Boolean,default:true},keyboardNavigation:{type:Boolean,default:true},frozenRows:{type:Number,default:0},frozenCols:{type:Number,default:0},overscan:{type:Number,default:5},defaultRowHeight:{type:Number,default:24},defaultColWidth:{type:Number,default:100},ariaLabel:{type:String,default:"Spreadsheet"},zoomLevel:{type:Number,default:100,validator:r=>r>=50&&r<=200}},emits:["cellClick","cellDoubleClick","cellRightClick","selectionChange","sheetChange","columnResize","scroll","search","copy"],setup(r,{emit:e,expose:t}){let o=ref(null),n=ref(null),s=ref(r.activeSheet),l=ref({top:0,left:0}),a=ref({width:0,height:0}),c=ref(null),h$1=ref([]),y=ref(""),f=ref(0),v=computed(()=>r.workbook.sheets[s.value]??r.workbook.sheets[0]),P=computed(()=>typeof r.theme=="string"?X[r.theme]??X.default:r.theme),b,x,B,_,O,$,Q,Y=(i,d,p)=>{let g=Object.entries(i.cols||{}).sort(([w],[R])=>Number(w)-Number(R)).map(([w,R])=>`${w}:${R.w??d}`).join(","),C=Object.entries(i.rows||{}).sort(([w],[R])=>Number(w)-Number(R)).map(([w,R])=>`${w}:${R.h??p}`).join(",");return `${i.name}:${i.rowCount}:${i.colCount}:${g}:${C}`},N="",U=()=>{let i=v.value,d={},p={};Object.entries(i.rows||{}).forEach(([g,C])=>{C.h&&(d[parseInt(g)]=C.h);}),Object.entries(i.cols||{}).forEach(([g,C])=>{C.w&&(p[parseInt(g)]=C.w);}),console.log("[NupPreview] initHandlers:",{sheetName:i.name,rowCount:i.rowCount,colCount:i.colCount,customColWidths:Object.keys(p).length,colWidthsSample:Object.fromEntries(Object.entries(p).slice(0,5)),defaultColWidth:r.defaultColWidth}),$?.destroy(),b=new I({rows:i.rowCount,cols:i.colCount,rowHeights:d,colWidths:p,defaultRowHeight:r.defaultRowHeight,defaultColWidth:r.defaultColWidth,overscan:r.overscan}),console.log("[NupPreview] VirtualScroll initialized:",{colCount:b.colCount,totalWidth:b.totalWidth,avgColWidth:b.totalWidth/b.colCount}),x=new A(i,g=>{c.value=g,e("selectionChange",g);}),B=new K(i.merges??[]),_=new V(i),O=new E,$=new F(b,(g,C)=>{f.value++,e("columnResize",g,C);}),Q=new L(x,b,{enabled:r.keyboardNavigation},{onScroll:(g,C)=>{let w=b.getScrollToPosition(g,C,a.value.height,a.value.width);n.value?.scrollTo({top:w.scrollTop,left:w.scrollLeft,behavior:"smooth"});},onCopy:async()=>{let g=x.getSelection();if(g&&r.copyable){let C=await O.copyToClipboard(g);e("copy",C);}}}),N=Y(i,r.defaultColWidth,r.defaultRowHeight);};return onMounted(()=>{U();let i=n.value;i&&(new ResizeObserver(p=>{let g=p[0];g&&(a.value={width:g.contentRect.width,height:g.contentRect.height},console.log("[NupPreview] Viewport resized:",a.value));}).observe(i),a.value={width:i.clientWidth,height:i.clientHeight},console.log("[NupPreview] Initial viewport:",a.value)),o.value&&Z(o.value,P.value);}),onUnmounted(()=>{$?.destroy();}),watch(()=>r.activeSheet,i=>{s.value=i;}),watch(P,i=>{o.value&&Z(o.value,i);}),watch(()=>Y(v.value,r.defaultColWidth,r.defaultRowHeight),i=>{if(i!==N&&N!==""){let d=N.split(":")[0],p=v.value.name,g=d!==p;console.log("[NupPreview] Sheet metadata changed:",{isSheetSwitch:g,oldSignature:N.substring(0,50),newSignature:i.substring(0,50)}),U(),g&&(l.value={top:0,left:0},n.value&&(n.value.scrollTop=0,n.value.scrollLeft=0),c.value=null),f.value++;}}),watch(()=>[r.frozenRows,r.frozenCols,r.overscan],()=>{console.log("[NupPreview] Frozen/overscan props changed, reinitializing VirtualScroll"),U(),f.value++;}),t({scrollTo:(i,d)=>{let p=b.getScrollToPosition(i,d,a.value.height,a.value.width);n.value?.scrollTo({top:p.scrollTop,left:p.scrollLeft,behavior:"smooth"});},scrollToCell:i=>{let d=k(i);if(d){let p=b.getScrollToPosition(d.row,d.col,a.value.height,a.value.width);n.value?.scrollTo({top:p.scrollTop,left:p.scrollLeft,behavior:"smooth"});}},select:i=>{c.value=i;},selectCell:i=>{x.selectCell(i);},selectAll:()=>{x.selectAll();},clearSelection:()=>{x.clear();},getSelection:()=>c.value,setActiveSheet:i=>{s.value=i,e("sheetChange",i);},getActiveSheet:()=>s.value,search:i=>{y.value=i;let d=_.search(i);return h$1.value=d,e("search",d),d},highlightResults:i=>{h$1.value=i;},clearHighlights:()=>{h$1.value=[],y.value="";},getWorkbook:()=>r.workbook,getVisibleCells:()=>{let i=b.getVisibleRange(l.value.top,l.value.left,a.value.height,a.value.width),d=[];for(let p=i.startRow;p<=i.endRow;p++){let g=[];for(let C=i.startCol;C<=i.endCol;C++)g.push(v.value.cells[H(p,C)]??null);d.push(g);}return d},getCellAt:(i,d)=>v.value.cells[H(i,d)]??null,copySelection:async()=>{let i=x.getSelection();if(i){let d=await O.copyToClipboard(i);e("copy",d);}},setColumnWidth:(i,d)=>{b.setColWidth(i,d),f.value++;},autoFitColumn:()=>{},autoFitAllColumns:()=>{},refresh:()=>{f.value++;},destroy:()=>{$?.destroy();}}),()=>{let i=v.value,d=r.showHeaders?24:0,p=r.showHeaders?40:0,g=a.value.height||400,C=a.value.width||800,w=b?.getVisibleRange(l.value.top,l.value.left,g,C)??{startRow:0,endRow:Math.min(50,i.rowCount-1),startCol:0,endCol:Math.min(20,i.colCount-1)};w.endCol<i.colCount-1&&console.log("[NupPreview] Visible range:",{range:w,sheetColCount:i.colCount,vpWidth:C,totalWidth:b?.totalWidth,scrollLeft:l.value.left});let R=[];for(let u=w.startRow;u<=w.endRow;u++)for(let m=w.startCol;m<=w.endCol;m++){if(B?.isMergeHidden(u,m))continue;let M=B?.getMergeRect(u,m,(T,me)=>b.getCellRect(T,me))??b?.getCellRect(u,m);if(!M)continue;let te=H(u,m),W=i.cells[te],ue=x?.isCellSelected(u,m),he=x?.isAnchor(u,m),de=le(W?.style,W?.s,r.workbook),oe=ne(de),fe=se(oe),ge=B?.isMergeMaster(u,m);R.push(h("div",{key:`${u}-${m}`,class:["nup-cell",{"nup-cell-number":W?.t==="n"},{"nup-cell-selected":ue},{"nup-cell-anchor":he},{"nup-has-border":fe},{"nup-cell-merge-master":ge}],style:{top:`${M.top}px`,left:`${M.left}px`,width:`${M.width}px`,height:`${M.height}px`,...oe},onClick:T=>{r.selectable&&(x?.handleClick(u,m,{shiftKey:T.shiftKey,ctrlKey:T.ctrlKey,metaKey:T.metaKey}),e("cellClick",{cell:W,row:u,col:m,cellRef:te,originalEvent:T}));}},W?.v!==void 0&&W?.v!==null?String(W.v):""));}let ae=typeof r.theme=="string"?re(r.theme):"",J=[];if(r.showHeaders)for(let u=w.startCol;u<=w.endCol;u++){let m=b?.getCellRect(0,u);if(!m)continue;let M=c.value&&u>=c.value.start.col&&u<=c.value.end.col;J.push(h("div",{key:`col-${u}`,class:["nup-header","nup-header-col",{"nup-header-selected":M}],style:{left:`${m.left-l.value.left+p}px`,top:0,width:`${m.width}px`,height:`${d}px`}},G(u)));}let q=[];if(r.showHeaders)for(let u=w.startRow;u<=w.endRow;u++){let m=b?.getCellRect(u,0);if(!m)continue;let M=c.value&&u>=c.value.start.row&&u<=c.value.end.row;q.push(h("div",{key:`row-${u}`,class:["nup-header","nup-header-row",{"nup-header-selected":M}],style:{top:`${m.top-l.value.top+d}px`,left:0,width:`${p}px`,height:`${m.height}px`}},String(u+1)));}let ee=r.zoomLevel/100,ce=ee!==1?{transform:`scale(${ee})`,transformOrigin:"top left"}:{};return h("div",{ref:o,class:["nup-spreadsheet",ae,{"nup-no-gridlines":!r.showGridLines}],style:{width:r.width,height:r.height,...ce},tabindex:0,onKeydown:u=>Q?.handleKeyDown(u)},[r.showHeaders&&h("div",{class:"nup-corner",style:{width:`${p}px`,height:`${d}px`}}),r.showHeaders&&h("div",{class:"nup-col-headers",style:{position:"absolute",top:0,left:0,right:0,height:`${d}px`,overflow:"hidden",zIndex:20}},J),r.showHeaders&&h("div",{class:"nup-row-headers",style:{position:"absolute",top:0,left:0,bottom:r.showSheetTabs?"32px":0,width:`${p}px`,overflow:"hidden",zIndex:20}},q),h("div",{ref:n,class:"nup-scroll-container",style:{top:`${d}px`,left:`${p}px`,right:0,bottom:r.showSheetTabs?"32px":0},onScroll:u=>{let m=u.target;l.value={top:m.scrollTop,left:m.scrollLeft};}},[h("div",{class:"nup-content",style:{width:`${b?.totalWidth??0}px`,height:`${b?.totalHeight??0}px`}},R)]),r.showSheetTabs&&r.workbook.sheets.length>1&&h("div",{class:"nup-sheet-tabs",style:{position:"absolute",bottom:0,left:0,right:0}},r.workbook.sheets.map((u,m)=>h("button",{key:u.id,class:["nup-sheet-tab",{"nup-sheet-tab-active":m===s.value}],onClick:()=>{s.value=m,e("sheetChange",m);}},u.name)))])}}}),Ze=xe;export{xe as NupSpreadsheetPreview,Ze as default};//# sourceMappingURL=vue.js.map
|
|
10
10
|
//# sourceMappingURL=vue.js.map
|