xlsx-preview 1.0.3 → 1.0.5
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/xlsxPreview.demo.js +1 -1
- package/dist/xlsxPreview.min.js +1 -1
- package/dist/xlsxPreview.min.js.map +1 -1
- package/dist/xlsxPreview.umd.js +1 -1
- package/dist/xlsxPreview.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/CSSStyles/base.ts +1 -1
- package/webpack.config.ts +1 -0
- package/pnpm-lock.yaml +0 -2229
package/dist/xlsxPreview.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var xlsxPreview;(()=>{"use strict";var t={d:(e,n)=>{for(var o in n)t.o(n,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:n[o]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{default:()=>L,xlsx2Html:()=>M});const n=ExcelJS;function o(t){let e="";for(const n of t){let t=n.toString(16);for(;t.length<2;)t="0"+t;e+=t}return e}const r=function(){const t=crypto.getRandomValues(new Uint8Array(8)),e=t.slice(0,4),n=t.slice(4);return`${o(e)}-${o(n)}`}(),l=`excel-sheets-${r}`,s=`table-${r}`,i=`tbody-${r}`,c=`sheet-${r}`,a=`sheet-toggle-bar-${r}`,f=`locate-btns-x-${r}`,d=`l-btn-${r}`,u=`toggle-btns-x-${r}`,$=`t-btn-${r}`;let h=20,g=16;const b=`\nfunction toggleBtnEventBind() {\n document.querySelector('.${u}').addEventListener('click',e => {\n const target = e.target;\n if(target.classList.contains('${$}')) {\n const index = target.dataset.index;\n setActiveByIndex(index);\n }\n })\n}\n`,p=`\nconst sheetBtnOffsetMap = (function calcSheetToggleBtnOffset() {\n const result = [];\n const btns = document.querySelectorAll(".${$}");\n btns.forEach((ele, idx) => {\n result[idx] = ele.offsetLeft;\n });\n return result;\n})();\n`,x=`\nfunction setActiveByIndex(index) {\n document.querySelector('.${$}.active').classList.remove('active');\n document.querySelector('.${c}.active').classList.remove('active');\n document.querySelector('.${$}[data-index="' + index + '"]').classList.add("active");\n document.querySelector('.${c}[data-index="' + index + '"]').classList.add("active");\n}\n`,y=`\nlet offsetIndex = 0;\nfunction locateBtnEventBind() {\n document.querySelector('.${f}').addEventListener('click', e => {\n const target = e.target;\n if (target.classList.contains('${d}')) {\n const toggleBtnX = document.querySelector('.${u}');\n switch (target.id) {\n case 'first-${r}':\n toggleBtnX.scrollTo({ left: 0 });\n offsetIndex = 0;\n break;\n case 'last-${r}':\n toggleBtnX.scrollTo({ left: sheetBtnOffsetMap[sheetBtnOffsetMap.length - 1] })\n offsetIndex = sheetBtnOffsetMap.length - 1;\n break;\n case 'prev-${r}':\n toPrevOffsetIndex(toggleBtnX);\n break;\n case 'next-${r}':\n if (offsetIndex === sheetBtnOffsetMap.length - 1) return;\n toggleBtnX.scrollTo({ left: sheetBtnOffsetMap[++offsetIndex] });\n break;\n default:\n break;\n }\n }\n })\n}\n`,v={};function w(t,e){if(v[t])return`<tr>${e}${v[t]}</tr>`;let n="";for(let e=1;e<=t;e++)n+="<td></td>";return v[t]=n,`<tr>${e}${n}</tr>`}function m(t,e){const{rows:n,cols:o}=e,{tl:r,br:l}=t,s=(r.col-r.nativeCol)*o[Math.ceil(r.col)],i=(r.row-r.nativeRow)*n[Math.ceil(r.row)];let c=0;for(let t=r.nativeCol;t>=0;t--)c+=o[t];let a=0;for(let t=r.nativeRow;t>=0;t--)a+=n[t];const f=c+s,d=a+i,u=(l.col-l.nativeCol)*o[Math.ceil(l.col)],$=(l.col-l.nativeCol)*n[Math.ceil(l.row)];let h=0;for(let t=l.nativeCol;t>=0;t--)h+=o[t];let g=0;for(let t=l.nativeRow;t>=0;t--)g+=n[t];return{left:f,top:d,width:h+u-f,height:g+$-d}}function B(t,e,n){if(t.width)return t;const{cols:o}=n,{tl:r,br:l}=e,s=(l.nativeColOff-r.nativeColOff)/1e4,i=r.nativeColOff/1e4;let c=0;for(let t=r.nativeCol;t>=0;t--)c+=o[t];const a=c+i;return Object.assign(Object.assign({},t),{left:a,width:s})}function O(t){let e="";const{bold:n,italic:o,family:r,name:l,size:s,underline:i,color:c}=t;return n&&(e+="font-weight: bold;"),o&&(e+="font-style: italic;"),r&&(e+=`font-family: ${l};`),s&&(e+=`font-size: ${s}px;`),i&&(e+="text-decoration: underline;"),c&&c.argb&&(e+=`color: ${k(c.argb)};`),e}function k(t){const{a:e,r:n,g:o,b:r}=function(t){if(8!==t.length)throw"This is not a standard argb string.";const e=[];for(let n=0;n<4;n++)e.push(t.substr(2*n,2));const[n,o,r,l]=e.map((t=>parseInt(t,16)));return{a:n,r:o,g:r,b:l}}(t);return`rgba(${n},${o},${r},${e/255})`}function S(t){let e=null;if(t.isMerged){if(t.master!==t)return"";e=function(t){if(!t.isMerged||t.master!==t)return null;const{row:e,col:n}=t.fullAddress;let o,r=e+1;do{o=t.worksheet.findCell(r++,n)}while(o&&o.master===t);let l=n+1;o=void 0;do{o=t.worksheet.findCell(e,l++)}while(o&&o.master===t);const s={};return r-e>1&&(s.row=r-e-1),l-n>1&&(s.col=l-n-1),s}(t)}let o=function(t){const{type:e,value:o}=t;switch(e){case n.ValueType.Null:return"";case n.ValueType.Hyperlink:return function(t){return`<a href="${t.hyperlink}" target="_blank">${t.text}</a>`}(o);case n.ValueType.RichText:return function(t){const e=t.richText;let n="";for(const t of e){let e="";t.font&&(e=O(t.font)),n+=e?`<span style="${e}">${t.text}</span>`:`<span>${t.text}</span>`}return n}(o);case n.ValueType.Formula:return function(t){return"0.00%"===t.numFmt?(100*t.result).toFixed(2)+"%":t.result||""}(t);case n.ValueType.Date:return function(t){return t.toString()}(o);default:return o||""}}(t),r="";e&&(e.col&&(r+=` colspan="${e.col}"`),e.row&&(r+=` rowspan="${e.row}"`));let l="";return t.font&&(l+=O(t.font)),t.alignment&&(l+=function(t){let e="";const{horizontal:n,vertical:o,indent:r,readingOrder:l}=t;return n&&(e+=`text-align: ${n};`),o&&(e+=`vertical-align: ${o};`),r&&(e+=`text-indent: ${r};`),l&&(e+=`direction: ${l};`),e}(t.alignment)),t.fill&&(l+=function(t){const{type:e}=t;if("pattern"===e){const{fgColor:e,bgColor:n}=t;if(e&&e.argb)return`background-color: ${k(e.argb)};`;if(n&&n.argb)return`background-color: ${k(n.argb)};`}return""}(t.fill)),l&&(r+=` style="${l}"`),`<td${r}>${o}</td>`}function C(t){return e=this,n=void 0,l=function*(){const e={rows:[],cols:[]},n={};t.eachRow(((t,e)=>{n[e]=t}));const o=t.lastRow&&t.lastRow.number||0,l=Math.max(o,h),c=t.lastColumn&&t.lastColumn.number||0,a=Math.max(c,g),{resultRows:f,rowsSpan:d}=function(t,e,n,o){let r="";const l=[];for(let s=1;s<=e;s++){let e="";const i=`<td class="order order-row">${s}</td>`;let c;if(t[s]){const{height:r}=t[s];let l="";for(let t=1;t<=n;t++){const e=o.findCell(s,t);l+=e?S(e):"<td></td>"}let a="";r?(a+=` style="height:${r}px;"`,c=r):c=24,e+=`<tr${a}>${i}${l}</tr>`}else c=24,e+=w(n,i);r+=e,l[s]=c}return{resultRows:r,rowsSpan:l}}(n,l,a,t);e.rows=[24,...d];const{sheetWidth:u,orderCol:$,colStyles:b,colsSpan:p}=function(t,e){const n=e.properties.defaultColWidth||9;let o=0,r='<td class="order order-row"></td>',l="";const s=[];for(let c=1;c<=t;c++){const t=e.getColumn(c);if(r+=`<td class="order order-col index-${c}">${t.letter}</td>`,t.width){const e=72*t.width/n;s[c]=e,o+=e,l+=`.${i} td.index-${c} { width: ${e}px; }`}else o+=72,s[c]=72}return{sheetWidth:o,orderCol:r,colStyles:l,colsSpan:s}}(a,t);e.cols=[32,...p];const x=t.views.some((t=>!t.showGridLines))?`.${i}.${i} td:not(.order) { border: none; }`:"";let y=`<body class="embed-body-${r}">\n <table class="${s}">\n <tbody class="${i}">${$+f}</tbody>\n </table>\n </body>`;const v=`.${s} { width: ${u}px; } ${x}`,O=yield function(t,e){return n=this,o=void 0,l=function*(){const n=t.getImages();let o="";for(const r of n){let n=m(r.range,e);const{left:l,top:s,width:i,height:c}=B(n,r.range,e),a=`position: absolute; left: ${l}px; top: ${s}px; width: ${i}px; height: ${c}px;`,f=t.workbook.getImage(r.imageId),d=`image/${f.extension}`;f.base64?o+=`<img src="${f.base64}" style="${a}" />`:f.buffer&&(o+=`<object type="${d}" data="${URL.createObjectURL(new Blob([f.buffer],{type:d}))}" style="${a}"></object>`)}return o},new((r=void 0)||(r=Promise))((function(t,e){function s(t){try{c(l.next(t))}catch(t){e(t)}}function i(t){try{c(l.throw(t))}catch(t){e(t)}}function c(e){var n;e.done?t(e.value):(n=e.value,n instanceof r?n:new r((function(t){t(n)}))).then(s,i)}c((l=l.apply(n,o||[])).next())}));var n,o,r,l}(t,e);return y+=O,y+=`<style>${v}${b}</style>`,y+=`\n <style>\n .embed-body-${r} { margin: 0; padding: 0; }\n .${s} { border-collapse: collapse; table-layout: fixed; }\n .${i} { border-right: 1px solid #f0f0f0; border-bottom: 1px solid #f0f0f0; }\n .${i} td { border-left: 1px solid #f0f0f0; border-top: 1px solid #f0f0f0; width: 72px; height: 24px; text-overflow: ellipsis; overflow: hidden; }\n .${i} td.order { color: #333; text-align: center; background: #b6d9fb; }\n .${i} td.order-row { width: 32px; }\n </style>`,y},new((o=void 0)||(o=Promise))((function(t,r){function s(t){try{c(l.next(t))}catch(t){r(t)}}function i(t){try{c(l.throw(t))}catch(t){r(t)}}function c(e){var n;e.done?t(e.value):(n=e.value,n instanceof o?n:new o((function(t){t(n)}))).then(s,i)}c((l=l.apply(e,n||[])).next())}));var e,n,o,l}function M(t,e){return o=this,s=void 0,v=function*(){var o;let s;if((null==e?void 0:e.minimumRows)&&((o=e.minimumRows)<20&&console.warn("setMinimumNumberRows: count less then DEFAULT_NUMBER_ROWS."),h=o),(null==e?void 0:e.minimumCols)&&function(t){t<16&&console.warn("setMinimumNumberCols: count less then DEFAULT_NUMBER_COLS."),g=t}(e.minimumCols),t instanceof Blob)s=yield t.arrayBuffer();else{if(!(t instanceof ArrayBuffer))throw"xlsx2Html(data, options): The parameter data can only be passed ArrayBuffer, Blob or File type";s=t}const i=new n.Workbook;yield i.xlsx.load(s);const v=i.worksheets.length,w=[];for(let t=0;t<v;t++){const e=yield C(i.worksheets[t]);w.push(e)}if(!0===(null==e?void 0:e.separateSheets))return"arrayBuffer"===e.output?w.map((t=>R(t))):w;const m=function(t,e){let n="",o="";for(let r=0;r<t.length;r++){const l="text/html",s=URL.createObjectURL(new Blob([t[r]],{type:l})),i=0===r?" active":"";n+=`<object class="${c}${i}" data-index="${r}" type="${l}" data="${s}"></object>`,o+=`<button class="${$}${i}" data-index="${r}">${e[r].name}</button>`}return n+=`<div class="${a}"><div class="${f}">\n <button class="${d}" id="first-${r}">⇤</button>\n <button class="${d}" id="prev-${r}">←</button>\n <button class="${d}" id="next-${r}">→</button>\n <button class="${d}" id="last-${r}">⇥</button>\n </div><div class="${u}">${o}</div></div>`,n+=`\n <style>\n body { margin-bottom: 0; }\n .${l} { position: relative; }\n .${c} { display: none; width: 100%; height: calc(100% - 30px); }\n .${c}.active { display: block; }\n .${a} { position: fixed; left: 0px; bottom: 0px; width: 100%; display: flex; }\n .${f} { display: flex; algin-items: center; margin-right: 1px; }\n .${d} { height: 30px; border: none; }\n .${d}:active { background: #fff; }\n .${u} { position: relative; flex: 1; overflow: hidden; white-space: nowrap; }\n .${$} { height: 30px; padding: 0 15px; border: none; box-shadow: 1px 0 2px #ccc; }\n .${$}.active { border-bottom: 2px solid; background: #fff; }\n </style>\n <script>\n ${b}\n ${p}\n ${x}\n \nfunction toPrevOffsetIndex(toggleBtnX) {\n if (offsetIndex === 0) return;\n const scrollLeft = toggleBtnX.scrollLeft;\n const scrollWidth = toggleBtnX.scrollWidth;\n const offsetWidth = toggleBtnX.offsetWidth;\n const maxOffset = scrollWidth - offsetWidth;\n let idx = offsetIndex - 1;\n while (idx >= 0) {\n let cur = sheetBtnOffsetMap[idx];\n if (cur < maxOffset) {\n toggleBtnX.scrollTo({ left: cur });\n offsetIndex = idx;\n break;\n }\n idx--;\n }\n}\n\n ${y}\n window.onload = function() {\n toggleBtnEventBind();\n locateBtnEventBind();\n }\n <\/script>`,`<div class="${l}">${n}</div>`}(w,i.worksheets);return"arrayBuffer"===(null==e?void 0:e.output)?R(m):m},new((i=void 0)||(i=Promise))((function(t,e){function n(t){try{l(v.next(t))}catch(t){e(t)}}function r(t){try{l(v.throw(t))}catch(t){e(t)}}function l(e){var o;e.done?t(e.value):(o=e.value,o instanceof i?o:new i((function(t){t(o)}))).then(n,r)}l((v=v.apply(o,s||[])).next())}));var o,s,i,v}function R(t){return new Blob([t],{type:"text/html"}).arrayBuffer()}const L={xlsx2Html:M};xlsxPreview=e})();
|
|
1
|
+
var xlsxPreview;(()=>{"use strict";var t={d:(e,n)=>{for(var o in n)t.o(n,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:n[o]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{default:()=>L,xlsx2Html:()=>M});const n=ExcelJS;function o(t){let e="";for(const n of t){let t=n.toString(16);for(;t.length<2;)t="0"+t;e+=t}return e}const r=function(){const t=crypto.getRandomValues(new Uint8Array(8)),e=t.slice(0,4),n=t.slice(4);return`${o(e)}-${o(n)}`}(),l=`excel-sheets-${r}`,s=`table-${r}`,i=`tbody-${r}`,c=`sheet-${r}`,a=`sheet-toggle-bar-${r}`,f=`locate-btns-x-${r}`,d=`l-btn-${r}`,u=`toggle-btns-x-${r}`,$=`t-btn-${r}`;let h=20,g=16;const b=`\nfunction toggleBtnEventBind() {\n document.querySelector('.${u}').addEventListener('click',e => {\n const target = e.target;\n if(target.classList.contains('${$}')) {\n const index = target.dataset.index;\n setActiveByIndex(index);\n }\n })\n}\n`,p=`\nconst sheetBtnOffsetMap = (function calcSheetToggleBtnOffset() {\n const result = [];\n const btns = document.querySelectorAll(".${$}");\n btns.forEach((ele, idx) => {\n result[idx] = ele.offsetLeft;\n });\n return result;\n})();\n`,x=`\nfunction setActiveByIndex(index) {\n document.querySelector('.${$}.active').classList.remove('active');\n document.querySelector('.${c}.active').classList.remove('active');\n document.querySelector('.${$}[data-index="' + index + '"]').classList.add("active");\n document.querySelector('.${c}[data-index="' + index + '"]').classList.add("active");\n}\n`,y=`\nlet offsetIndex = 0;\nfunction locateBtnEventBind() {\n document.querySelector('.${f}').addEventListener('click', e => {\n const target = e.target;\n if (target.classList.contains('${d}')) {\n const toggleBtnX = document.querySelector('.${u}');\n switch (target.id) {\n case 'first-${r}':\n toggleBtnX.scrollTo({ left: 0 });\n offsetIndex = 0;\n break;\n case 'last-${r}':\n toggleBtnX.scrollTo({ left: sheetBtnOffsetMap[sheetBtnOffsetMap.length - 1] })\n offsetIndex = sheetBtnOffsetMap.length - 1;\n break;\n case 'prev-${r}':\n toPrevOffsetIndex(toggleBtnX);\n break;\n case 'next-${r}':\n if (offsetIndex === sheetBtnOffsetMap.length - 1) return;\n toggleBtnX.scrollTo({ left: sheetBtnOffsetMap[++offsetIndex] });\n break;\n default:\n break;\n }\n }\n })\n}\n`,v={};function w(t,e){if(v[t])return`<tr>${e}${v[t]}</tr>`;let n="";for(let e=1;e<=t;e++)n+="<td></td>";return v[t]=n,`<tr>${e}${n}</tr>`}function m(t,e){const{rows:n,cols:o}=e,{tl:r,br:l}=t,s=(r.col-r.nativeCol)*o[Math.ceil(r.col)],i=(r.row-r.nativeRow)*n[Math.ceil(r.row)];let c=0;for(let t=r.nativeCol;t>=0;t--)c+=o[t];let a=0;for(let t=r.nativeRow;t>=0;t--)a+=n[t];const f=c+s,d=a+i,u=(l.col-l.nativeCol)*o[Math.ceil(l.col)],$=(l.col-l.nativeCol)*n[Math.ceil(l.row)];let h=0;for(let t=l.nativeCol;t>=0;t--)h+=o[t];let g=0;for(let t=l.nativeRow;t>=0;t--)g+=n[t];return{left:f,top:d,width:h+u-f,height:g+$-d}}function B(t,e,n){if(t.width)return t;const{cols:o}=n,{tl:r,br:l}=e,s=(l.nativeColOff-r.nativeColOff)/1e4,i=r.nativeColOff/1e4;let c=0;for(let t=r.nativeCol;t>=0;t--)c+=o[t];const a=c+i;return Object.assign(Object.assign({},t),{left:a,width:s})}function O(t){let e="";const{bold:n,italic:o,family:r,name:l,size:s,underline:i,color:c}=t;return n&&(e+="font-weight: bold;"),o&&(e+="font-style: italic;"),r&&(e+=`font-family: ${l};`),s&&(e+=`font-size: ${s}px;`),i&&(e+="text-decoration: underline;"),c&&c.argb&&(e+=`color: ${k(c.argb)};`),e}function k(t){const{a:e,r:n,g:o,b:r}=function(t){if(8!==t.length)throw"This is not a standard argb string.";const e=[];for(let n=0;n<4;n++)e.push(t.substr(2*n,2));const[n,o,r,l]=e.map((t=>parseInt(t,16)));return{a:n,r:o,g:r,b:l}}(t);return`rgba(${n},${o},${r},${e/255})`}function S(t){let e=null;if(t.isMerged){if(t.master!==t)return"";e=function(t){if(!t.isMerged||t.master!==t)return null;const{row:e,col:n}=t.fullAddress;let o,r=e+1;do{o=t.worksheet.findCell(r++,n)}while(o&&o.master===t);let l=n+1;o=void 0;do{o=t.worksheet.findCell(e,l++)}while(o&&o.master===t);const s={};return r-e>1&&(s.row=r-e-1),l-n>1&&(s.col=l-n-1),s}(t)}let o=function(t){const{type:e,value:o}=t;switch(e){case n.ValueType.Null:return"";case n.ValueType.Hyperlink:return function(t){return`<a href="${t.hyperlink}" target="_blank">${t.text}</a>`}(o);case n.ValueType.RichText:return function(t){const e=t.richText;let n="";for(const t of e){let e="";t.font&&(e=O(t.font)),n+=e?`<span style="${e}">${t.text}</span>`:`<span>${t.text}</span>`}return n}(o);case n.ValueType.Formula:return function(t){return"0.00%"===t.numFmt?(100*t.result).toFixed(2)+"%":t.result||""}(t);case n.ValueType.Date:return function(t){return t.toString()}(o);default:return o||""}}(t),r="";e&&(e.col&&(r+=` colspan="${e.col}"`),e.row&&(r+=` rowspan="${e.row}"`));let l="";return t.font&&(l+=O(t.font)),t.alignment&&(l+=function(t){let e="";const{horizontal:n,vertical:o,indent:r,readingOrder:l}=t;return n&&(e+=`text-align: ${n};`),o&&(e+=`vertical-align: ${o};`),r&&(e+=`text-indent: ${r};`),l&&(e+=`direction: ${l};`),e}(t.alignment)),t.fill&&(l+=function(t){const{type:e}=t;if("pattern"===e){const{fgColor:e,bgColor:n}=t;if(e&&e.argb)return`background-color: ${k(e.argb)};`;if(n&&n.argb)return`background-color: ${k(n.argb)};`}return""}(t.fill)),l&&(r+=` style="${l}"`),`<td${r}>${o}</td>`}function C(t){return e=this,n=void 0,l=function*(){const e={rows:[],cols:[]},n={};t.eachRow(((t,e)=>{n[e]=t}));const o=t.lastRow&&t.lastRow.number||0,l=Math.max(o,h),c=t.lastColumn&&t.lastColumn.number||0,a=Math.max(c,g),{resultRows:f,rowsSpan:d}=function(t,e,n,o){let r="";const l=[];for(let s=1;s<=e;s++){let e="";const i=`<td class="order order-row">${s}</td>`;let c;if(t[s]){const{height:r}=t[s];let l="";for(let t=1;t<=n;t++){const e=o.findCell(s,t);l+=e?S(e):"<td></td>"}let a="";r?(a+=` style="height:${r}px;"`,c=r):c=24,e+=`<tr${a}>${i}${l}</tr>`}else c=24,e+=w(n,i);r+=e,l[s]=c}return{resultRows:r,rowsSpan:l}}(n,l,a,t);e.rows=[24,...d];const{sheetWidth:u,orderCol:$,colStyles:b,colsSpan:p}=function(t,e){const n=e.properties.defaultColWidth||9;let o=0,r='<td class="order order-row"></td>',l="";const s=[];for(let c=1;c<=t;c++){const t=e.getColumn(c);if(r+=`<td class="order order-col index-${c}">${t.letter}</td>`,t.width){const e=72*t.width/n;s[c]=e,o+=e,l+=`.${i} td.index-${c} { width: ${e}px; }`}else o+=72,s[c]=72}return{sheetWidth:o,orderCol:r,colStyles:l,colsSpan:s}}(a,t);e.cols=[32,...p];const x=t.views.some((t=>!t.showGridLines))?`.${i}.${i} td:not(.order) { border: none; }`:"";let y=`<body class="embed-body-${r}">\n <table class="${s}">\n <tbody class="${i}">${$+f}</tbody>\n </table>\n </body>`;const v=`.${s} { width: ${u}px; } ${x}`,O=yield function(t,e){return n=this,o=void 0,l=function*(){const n=t.getImages();let o="";for(const r of n){let n=m(r.range,e);const{left:l,top:s,width:i,height:c}=B(n,r.range,e),a=`position: absolute; left: ${l}px; top: ${s}px; width: ${i}px; height: ${c}px;`,f=t.workbook.getImage(r.imageId),d=`image/${f.extension}`;f.base64?o+=`<img src="${f.base64}" style="${a}" />`:f.buffer&&(o+=`<object type="${d}" data="${URL.createObjectURL(new Blob([f.buffer],{type:d}))}" style="${a}"></object>`)}return o},new((r=void 0)||(r=Promise))((function(t,e){function s(t){try{c(l.next(t))}catch(t){e(t)}}function i(t){try{c(l.throw(t))}catch(t){e(t)}}function c(e){var n;e.done?t(e.value):(n=e.value,n instanceof r?n:new r((function(t){t(n)}))).then(s,i)}c((l=l.apply(n,o||[])).next())}));var n,o,r,l}(t,e);return y+=O,y+=`<style>${v}${b}</style>`,y+=`\n <style>\n .embed-body-${r} { margin: 0; padding: 0; }\n .${s} { border-collapse: collapse; table-layout: fixed; }\n .${i} { border-right: 1px solid #f0f0f0; border-bottom: 1px solid #f0f0f0; }\n .${i} td { border-left: 1px solid #f0f0f0; border-top: 1px solid #f0f0f0; width: 72px; height: 24px; text-overflow: ellipsis; overflow: hidden; }\n .${i} td.order { color: #333; text-align: center; background: #b6d9fb; }\n .${i} td.order-row { width: 32px; }\n </style>`,y},new((o=void 0)||(o=Promise))((function(t,r){function s(t){try{c(l.next(t))}catch(t){r(t)}}function i(t){try{c(l.throw(t))}catch(t){r(t)}}function c(e){var n;e.done?t(e.value):(n=e.value,n instanceof o?n:new o((function(t){t(n)}))).then(s,i)}c((l=l.apply(e,n||[])).next())}));var e,n,o,l}function M(t,e){return o=this,s=void 0,v=function*(){var o;let s;if((null==e?void 0:e.minimumRows)&&((o=e.minimumRows)<20&&console.warn("setMinimumNumberRows: count less then DEFAULT_NUMBER_ROWS."),h=o),(null==e?void 0:e.minimumCols)&&function(t){t<16&&console.warn("setMinimumNumberCols: count less then DEFAULT_NUMBER_COLS."),g=t}(e.minimumCols),t instanceof Blob)s=yield t.arrayBuffer();else{if(!(t instanceof ArrayBuffer))throw"xlsx2Html(data, options): The parameter data can only be passed ArrayBuffer, Blob or File type";s=t}const i=new n.Workbook;yield i.xlsx.load(s);const v=i.worksheets.length,w=[];for(let t=0;t<v;t++){const e=yield C(i.worksheets[t]);w.push(e)}if(!0===(null==e?void 0:e.separateSheets))return"arrayBuffer"===e.output?w.map((t=>R(t))):w;const m=function(t,e){let n="",o="";for(let r=0;r<t.length;r++){const l="text/html",s=URL.createObjectURL(new Blob([t[r]],{type:l})),i=0===r?" active":"";n+=`<object class="${c}${i}" data-index="${r}" type="${l}" data="${s}"></object>`,o+=`<button class="${$}${i}" data-index="${r}">${e[r].name}</button>`}return n+=`<div class="${a}"><div class="${f}">\n <button class="${d}" id="first-${r}">⇤</button>\n <button class="${d}" id="prev-${r}">←</button>\n <button class="${d}" id="next-${r}">→</button>\n <button class="${d}" id="last-${r}">⇥</button>\n </div><div class="${u}">${o}</div></div>`,n+=`\n <style>\n body { margin-bottom: 0; }\n .${l} { position: relative; height: 100%; }\n .${c} { display: none; width: 100%; height: calc(100% - 30px); }\n .${c}.active { display: block; }\n .${a} { position: fixed; left: 0px; bottom: 0px; width: 100%; display: flex; }\n .${f} { display: flex; algin-items: center; margin-right: 1px; }\n .${d} { height: 30px; border: none; }\n .${d}:active { background: #fff; }\n .${u} { position: relative; flex: 1; overflow: hidden; white-space: nowrap; }\n .${$} { height: 30px; padding: 0 15px; border: none; box-shadow: 1px 0 2px #ccc; }\n .${$}.active { border-bottom: 2px solid; background: #fff; }\n </style>\n <script>\n ${b}\n ${p}\n ${x}\n \nfunction toPrevOffsetIndex(toggleBtnX) {\n if (offsetIndex === 0) return;\n const scrollLeft = toggleBtnX.scrollLeft;\n const scrollWidth = toggleBtnX.scrollWidth;\n const offsetWidth = toggleBtnX.offsetWidth;\n const maxOffset = scrollWidth - offsetWidth;\n let idx = offsetIndex - 1;\n while (idx >= 0) {\n let cur = sheetBtnOffsetMap[idx];\n if (cur < maxOffset) {\n toggleBtnX.scrollTo({ left: cur });\n offsetIndex = idx;\n break;\n }\n idx--;\n }\n}\n\n ${y}\n window.onload = function() {\n toggleBtnEventBind();\n locateBtnEventBind();\n }\n <\/script>`,`<div class="${l}">${n}</div>`}(w,i.worksheets);return"arrayBuffer"===(null==e?void 0:e.output)?R(m):m},new((i=void 0)||(i=Promise))((function(t,e){function n(t){try{l(v.next(t))}catch(t){e(t)}}function r(t){try{l(v.throw(t))}catch(t){e(t)}}function l(e){var o;e.done?t(e.value):(o=e.value,o instanceof i?o:new i((function(t){t(o)}))).then(n,r)}l((v=v.apply(o,s||[])).next())}));var o,s,i,v}function R(t){return new Blob([t],{type:"text/html"}).arrayBuffer()}const L={xlsx2Html:M};xlsxPreview=e})();
|
|
2
2
|
//# sourceMappingURL=xlsxPreview.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xlsxPreview.min.js","mappings":"mCACA,IAAIA,EAAsB,CCA1BA,EAAwB,CAACC,EAASC,KACjC,IAAI,IAAIC,KAAOD,EACXF,EAAoBI,EAAEF,EAAYC,KAASH,EAAoBI,EAAEH,EAASE,IAC5EE,OAAOC,eAAeL,EAASE,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,MCJ3EH,EAAwB,CAACS,EAAKC,IAAUL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,GCClFV,EAAyBC,IACH,oBAAXa,QAA0BA,OAAOC,aAC1CV,OAAOC,eAAeL,EAASa,OAAOC,YAAa,CAAEC,MAAO,WAE7DX,OAAOC,eAAeL,EAAS,aAAc,CAAEe,OAAO,M,mDCLvD,MAAM,EAA+BC,QCUrC,SAASC,EAAaC,GACpB,IAAIC,EAAiB,GACrB,IAAK,MAAMC,KAAKF,EAAO,CACrB,IAAIG,EAAOD,EAAEE,SAAS,IACtB,KAAOD,EAAKE,OAAS,GACnBF,EAAO,IAAMA,EAEfF,GAAUE,EAEZ,OAAOF,ECjBF,MAAMK,EDoBN,WACL,MAAMC,EAAOC,OAAOC,gBAAgB,IAAIC,WAAW,IAC7CC,EAAQJ,EAAKK,MAAM,EAAG,GACtBC,EAAMN,EAAKK,MAAM,GAGvB,MAAO,GAFUb,EAAaY,MACdZ,EAAac,KCzBXC,GAEPC,EAAmB,gBAAgBT,IAEnCU,EAAY,SAASV,IACrBW,EAAY,SAASX,IACrBY,EAAY,SAASZ,IACrBa,EAAuB,oBAAoBb,IAC3Cc,EAAqB,iBAAiBd,IACtCe,EAAuB,SAASf,IAChCgB,EAAqB,iBAAiBhB,IACtCiB,EAAuB,SAASjB,IAYtC,IAAIkB,EAFiB,GAGjBC,EAFiB,GCf5B,MAAMC,EAAqB,iEAEEJ,wGAEOC,sGAQ9BI,EAAa,wIAG0BJ,4GAQvCK,EAAmB,oEAEIL,sEACAL,sEACAK,wFACAL,gEAwBvBW,EAAqB,uFAGET,0GAEQC,6DACeC,yDAE9BhB,sHAIDA,8LAIAA,uFAGAA,wOChEfwB,EAA6C,GAC5C,SAASC,EAAYC,EAAiBC,GAC3C,GAAIH,EAAgBE,GAClB,MAAO,OAAOC,IAAYH,EAAgBE,UAC5C,IAAIE,EAAQ,GACZ,IAAK,IAAIC,EAAI,EAAGA,GAAKH,EAASG,IAC5BD,GAAS,YAGX,OADAJ,EAAgBE,GAAWE,EACpB,OAAOD,IAAYC,SCtB5B,SAASE,EACPpC,EACAqC,GAEA,MAAM,KAAEC,EAAI,KAAEC,GAASF,GACjB,GAAEG,EAAE,GAAEC,GAAOzC,EACb0C,GAAcF,EAAGG,IAAMH,EAAGI,WAAaL,EAAKM,KAAKC,KAAKN,EAAGG,MACzDI,GAAaP,EAAGQ,IAAMR,EAAGS,WAAaX,EAAKO,KAAKC,KAAKN,EAAGQ,MAC9D,IAAIE,EAAW,EACf,IAAK,IAAIC,EAAIX,EAAGI,UAAWO,GAAK,EAAGA,IACjCD,GAAYX,EAAKY,GAEnB,IAAIC,EAAU,EACd,IAAK,IAAID,EAAIX,EAAGS,UAAWE,GAAK,EAAGA,IACjCC,GAAWd,EAAKa,GAElB,MAAME,EAAOH,EAAWR,EAClBY,EAAMF,EAAUL,EAEhBQ,GAAed,EAAGE,IAAMF,EAAGG,WAAaL,EAAKM,KAAKC,KAAKL,EAAGE,MAC1Da,GAAgBf,EAAGE,IAAMF,EAAGG,WAAaN,EAAKO,KAAKC,KAAKL,EAAGO,MACjE,IAAIS,EAAY,EAChB,IAAK,IAAIN,EAAIV,EAAGG,UAAWO,GAAK,EAAGA,IACjCM,GAAalB,EAAKY,GAEpB,IAAIO,EAAa,EACjB,IAAK,IAAIP,EAAIV,EAAGQ,UAAWE,GAAK,EAAGA,IACjCO,GAAcpB,EAAKa,GAIrB,MAAO,CACLE,KAAAA,EACAC,IAAAA,EACAK,MALYF,EAAYF,EAAcF,EAMtCO,OALaF,EAAaF,EAAeF,GAS7C,SAASO,EACPC,EACA9D,EACAqC,GAEA,GAAIyB,EAAIH,MAAO,OAAOG,EACtB,MAAM,KAAEvB,GAASF,GACX,GAAEG,EAAE,GAAEC,GAAOzC,EACb2D,GAASlB,EAAGsB,aAAevB,EAAGuB,cAAgB,IAC9CC,EAAaxB,EAAGuB,aAAe,IAErC,IAAIb,EAAW,EACf,IAAK,IAAIC,EAAIX,EAAGI,UAAWO,GAAK,EAAGA,IACjCD,GAAYX,EAAKY,GAEnB,MAAME,EAAOH,EAAWc,EACxB,OAAO,OAAP,wBACKF,GAAG,CACNT,KAAAA,EACAM,MAAAA,IChDG,SAASM,EAAQC,GACtB,IAAIC,EAAS,GACb,MAAM,KAAEC,EAAI,OAAEC,EAAM,OAAEC,EAAM,KAAEC,EAAI,KAAEC,EAAI,UAAEC,EAAS,MAAEC,GAAUR,EAO/D,OANIE,IAAMD,GAAU,sBAChBE,IAAQF,GAAU,uBAClBG,IAAQH,GAAU,gBAAgBI,MAClCC,IAAML,GAAU,cAAcK,QAC9BC,IAAWN,GAAU,+BACrBO,GAASA,EAAMC,OAAMR,GAAU,UAAUS,EAASF,EAAMC,UACrDR,EAkBF,SAASS,EAASD,GACvB,MAAM,EAAEE,EAAC,EAAEC,EAAC,EAAEC,EAAC,EAAEC,GLzCZ,SAAmBL,GACxB,GAAoB,IAAhBA,EAAKtE,OAAc,KAAM,sCAC7B,MAAMqE,EAAkB,GACxB,IAAK,IAAIvC,EAAI,EAAGA,EAAI,EAAGA,IACrBuC,EAAMO,KAAKN,EAAKO,OAAW,EAAJ/C,EAAO,IAEhC,MAAO0C,EAAGC,EAAGC,EAAGC,GAAKN,EAAMS,KAAKjF,GAAMkF,SAASlF,EAAG,MAClD,MAAO,CAAE2E,EAAAA,EAAGC,EAAAA,EAAGC,EAAAA,EAAGC,EAAAA,GKkCKK,CAAUV,GACjC,MAAO,QAAQG,KAAKC,KAAKC,KAAKH,EAAI,OCU7B,SAASS,EAAQC,GACtB,IAAIC,EAA8B,KAClC,GAAID,EAAKE,SAAU,CAEjB,GAAIF,EAAKG,SAAWH,EAAM,MAAO,GACjCC,EA7BJ,SAA0BD,GACxB,IAAKA,EAAKE,UAAYF,EAAKG,SAAWH,EAAM,OAAO,KACnD,MAAM,IAAEvC,EAAG,IAAEL,GAAQ4C,EAAKI,YAE1B,IACIC,EADAC,EAAU7C,EAAM,EAEpB,GACE4C,EAAWL,EAAKO,UAAUC,SAASF,IAAWlD,SACvCiD,GAAYA,EAASF,SAAWH,GACzC,IAAIS,EAAUrD,EAAM,EACpBiD,OAAWK,EACX,GACEL,EAAWL,EAAKO,UAAUC,SAAS/C,EAAKgD,WACjCJ,GAAYA,EAASF,SAAWH,GACzC,MAAMW,EAAqB,GAO3B,OANIL,EAAU7C,EAAM,IAClBkD,EAASlD,IAAM6C,EAAU7C,EAAM,GAE7BgD,EAAUrD,EAAM,IAClBuD,EAASvD,IAAMqD,EAAUrD,EAAM,GAE1BuD,EAQQC,CAAiBZ,GAEhC,IAAIa,EAjDN,SAA2Bb,GACzB,MAAM,KAAEc,EAAI,MAAExG,GAAU0F,EACxB,OAAQc,GACN,KAAK,EAAAC,UAAA,KACH,MAAO,GACT,KAAK,EAAAA,UAAA,UACH,OCbC,SAAsBzG,GAC3B,MAAO,YAAYA,EAAM0G,8BAA8B1G,EAAMuG,WDYlDI,CAAa3G,GACtB,KAAK,EAAAyG,UAAA,SACH,OCXC,SAAqBzG,GAC1B,MAAM4G,EAAY5G,EAA4B4G,SAC9C,IAAIL,EAAO,GACX,IAAK,MAAMM,KAAQD,EAAU,CAC3B,IAAItC,EAAS,GACTuC,EAAKxC,OACPC,EAASF,EAAQyC,EAAKxC,OAGtBkC,GADEjC,EACM,gBAAgBA,MAAWuC,EAAKN,cAEhC,SAASM,EAAKN,cAG1B,OAAOA,EDHIO,CAAY9G,GACrB,KAAK,EAAAyG,UAAA,QACH,OCIC,SAAyBf,GAC9B,MAAoB,UAAhBA,EAAKqB,QAC2B,IAAzBrB,EAAKtF,QAAyB4G,QAAQ,GAAK,IAE7CtB,EAAKtF,QAAoB,GDRvB6G,CAAgBvB,GACzB,KAAK,EAAAe,UAAA,KACH,OCUC,SAAiBzG,GACtB,OAAOA,EAAMO,WDXF2G,CAAQlH,GACjB,QACE,OAAQA,GAAoB,IAmCrBmH,CAAkBzB,GACzB0B,EAAY,GACZzB,IACEA,EAAW7C,MAAKsE,GAAa,aAAazB,EAAW7C,QACrD6C,EAAWxC,MAAKiE,GAAa,aAAazB,EAAWxC,SAE3D,IAAIkE,EAAe,GAKnB,OAJI3B,EAAKrB,OAAMgD,GAAgBjD,EAAQsB,EAAKrB,OACxCqB,EAAK4B,YAAWD,GDhEf,SAAsBC,GAC3B,IAAIhD,EAAS,GACb,MAAM,WAAEiD,EAAU,SAAEC,EAAQ,OAAEC,EAAM,aAAEC,GAAiBJ,EAKvD,OAJIC,IAAYjD,GAAU,eAAeiD,MACrCC,IAAUlD,GAAU,mBAAmBkD,MACvCC,IAAQnD,GAAU,gBAAgBmD,MAClCC,IAAcpD,GAAU,cAAcoD,MACnCpD,ECyD6BqD,CAAajC,EAAK4B,YAClD5B,EAAKkC,OAAMP,GD3CV,SAAiBO,GACtB,MAAM,KAAEpB,GAASoB,EACjB,GAAa,YAATpB,EAAoB,CACtB,MAAM,QAAEqB,EAAO,QAAEC,GAAYF,EAC7B,GAAIC,GAAWA,EAAQ/C,KAErB,MAAO,qBADOC,EAAS8C,EAAQ/C,SAE1B,GAAIgD,GAAWA,EAAQhD,KAE5B,MAAO,qBADOC,EAAS+C,EAAQhD,SAInC,MAAO,GC+BwBiD,CAAQrC,EAAKkC,OACxCP,IAAcD,GAAa,WAAWC,MACnC,MAAMD,KAAab,SEqBb,SAAeyB,EAASC,G,qCACrC,MAAMzF,EAAkC,CACtCC,KAAM,GACNC,KAAM,IAGFD,EAAgB,GACtBwF,EAAUC,SAAQ,CAAC/E,EAAKgF,KACtB1F,EAAK0F,GAAahF,KAEpB,MAAMiF,EAAWH,EAAUG,SAAWH,EAAUG,QAAQC,QAAW,EAC7DC,EAAStF,KAAKuF,IAAIH,EAASzG,GAC3B6G,EAAcP,EAAUO,YAAcP,EAAUO,WAAWH,QAAW,EACtEI,EAASzF,KAAKuF,IAAIC,EAAY5G,IAE9B,WAAE8G,EAAU,SAAEC,GAzFtB,SACElG,EACA6F,EACAG,EACAR,GAEA,IAAIS,EAAa,GACjB,MAAMC,EAAqB,GAC3B,IAAK,IAAIC,EAAQ,EAAGA,GAASN,EAAQM,IAAS,CAC5C,IAAIxI,EAAS,GACb,MAAMgC,EAAY,+BAA+BwG,SACjD,IAAIC,EAEJ,GAAKpG,EAAKmG,GAGH,CAEL,MAAM,OAAE7E,GAAWtB,EAAKmG,GACxB,IAAIE,EAAc,GAClB,IAAK,IAAIC,EAAI,EAAGA,GAAKN,EAAQM,IAAK,CAChC,MAAMC,EAAUf,EAAU/B,SAAS0C,EAAOG,GAIxCD,GAHGE,EAGYvD,EAAQuD,GAFR,YAKnB,IAAIC,EAAW,GACXlF,GACFkF,GAAY,kBAAkBlF,QAC9B8E,EAAY9E,GAEZ8E,EPnCmB,GOqCrBzI,GAAU,MAAM6I,KAAY7G,IAAY0G,cArBxCD,EPhBqB,GOiBrBzI,GAAU8B,EAAYuG,EAAQrG,GAuBhCsG,GAActI,EACduI,EAASC,GAASC,EAEpB,MAAO,CAAEH,WAAAA,EAAYC,SAAAA,GAgDYO,CAAQzG,EAAM6F,EAAQG,EAAQR,GAC/DzF,EAAYC,KAAO,CPvFiB,MOuFWkG,GAC/C,MAAM,WAAEQ,EAAU,SAAEC,EAAQ,UAAEC,EAAS,SAAEC,GA/C3C,SAAsBb,EAAgBR,GACpC,MAAMsB,EAAqBtB,EAAUuB,WAAWC,iBAAmB,EACnE,IAAIN,EAAa,EACbC,EAAW,oCACXC,EAAY,GAChB,MAAMC,EAAqB,GAC3B,IAAK,IAAIP,EAAI,EAAGA,GAAKN,EAAQM,IAAK,CAChC,MAAMW,EAASzB,EAAU0B,UAAUZ,GAEnC,GADAK,GAAY,oCAAoCL,MAAMW,EAAOE,cACxDF,EAAO5F,MAGL,CACL,MAAM+F,EP1Dc,GO0DEH,EAAO5F,MAAsByF,EACnDD,EAASP,GAAKc,EACdV,GAAcU,EACdR,GAAa,IAAIjI,cAAsB2H,cAAcc,cANrDV,GPvDoB,GOwDpBG,EAASP,GPxDW,GOgExB,MAAO,CACLI,WAAAA,EACAC,SAAAA,EACAC,UAAAA,EACAC,SAAAA,GAwBoDQ,CACpDrB,EACAR,GAEFzF,EAAYE,KAAO,CP3FgB,MO2FW4G,GAE9C,MACMS,EADgB9B,EAAU+B,MAAMC,MAAMvJ,IAAUA,EAAKwJ,gBAEvD,IAAI9I,KAAaA,qCACjB,GAEJ,IAAIhB,EL1FG,2BAA2BK,8BACZU,kCACIC,MKwFHgI,EAAWV,2CAClC,MAAMyB,EAAa,IAAIhJ,cAAsBgI,UAAmBY,IAC1DK,QJxDD,SACLnC,EACAzF,G,qCAEA,MAAM6H,EAASpC,EAAUqC,YACzB,IAAIC,EAAY,GAChB,IAAK,MAAMC,KAAOH,EAAQ,CACxB,IAAII,EAAMlI,EAAkBiI,EAAIrK,MAAOqC,GACvC,MAAM,KAAEgB,EAAI,IAAEC,EAAG,MAAEK,EAAK,OAAEC,GAAWC,EACnCyG,EACAD,EAAIrK,MACJqC,GAEI8B,EAAS,6BAA6Bd,aAAgBC,eAAiBK,gBAAoBC,OAC3F2G,EAAUzC,EAAU0C,SAASC,SAASJ,EAAIK,SAC1CrE,EAAO,SAASkE,EAAQI,YAC1BJ,EAAQK,OACVR,GAAa,aAAaG,EAAQK,kBAAkBzG,QAC3CoG,EAAQM,SAEjBT,GAAa,iBAAiB/D,YADlByE,IAAIC,gBAAgB,IAAIC,KAAK,CAACT,EAAQM,QAAS,CAAExE,KAAAA,gBACDlC,gBAGhE,OAAOiG,G,+RIiCea,CAAanD,EAAWzF,GAI9C,OAHApC,GAAUgK,EACVhK,GAAU,UAAU+J,IAAad,YACjCjJ,GC1Ga,oCAEKK,wCACXU,iEACAC,oFACAA,yJACAA,gFACAA,gDDoGAhB,G,+REvHF,SAAeiL,EAAUC,EAAgBC,G,qCTsBzC,IAA8BC,ESfnC,IAAIR,EACJ,IAPIO,MAAAA,OAAO,EAAPA,EAASE,gBTqBsBD,ESpBZD,EAAQE,aTeL,IAOxBC,QAAQC,KAAK,8DAEfhK,EAAsB6J,IStBlBD,MAAAA,OAAO,EAAPA,EAASK,cTyBR,SAA8BJ,GAC/BA,EAZsB,IAaxBE,QAAQC,KAAK,8DAEf/J,EAAsB4J,ES5BpBK,CAAqBN,EAAQK,aAG3BN,aAAgBH,KAClBH,QAAeM,EAAKQ,kBACf,MAAIR,aAAgBS,aAGzB,KAAM,iGAFNf,EAASM,EAIX,MAAMX,EAAW,IAAI,EAAAqB,eACfrB,EAASsB,KAAKC,KAAKlB,GACzB,MAAMmB,EAAYxB,EAASyB,WAAW5L,OAChC6L,EAAmB,GACzB,IAAK,IAAIC,EAAM,EAAGA,EAAMH,EAAWG,IAAO,CACxC,MAAMlM,QAAe4H,EAAS2C,EAASyB,WAAWE,IAClDD,EAAOjH,KAAKhF,GAGd,IAAgC,KAA5BmL,MAAAA,OAAO,EAAPA,EAASgB,gBACX,MAAuB,gBAAnBhB,EAAQiB,OACEH,EAAO/G,KAAKmH,GAAUC,EAASD,KAGtCJ,EAET,MAAMjM,EPDD,SAAqBiM,EAAkBpE,GAC5C,IAAI0E,EAAO,GACPC,EAAU,GACd,IAAK,IAAItK,EAAI,EAAGA,EAAI+J,EAAO7L,OAAQ8B,IAAK,CACtC,MAAMuK,EAAY,YACZC,EAAM7B,IAAIC,gBAAgB,IAAIC,KAAK,CAACkB,EAAO/J,IAAK,CAAEkE,KAAMqG,KACxDE,EAAe,IAANzK,EAAU,UAAY,GACrCqK,GAAQ,kBAAkBtL,IAAY0L,kBAAuBzK,YAAYuK,YAAoBC,eAC7FF,GAAW,kBAAkBlL,IAAuBqL,kBAAuBzK,MAAM2F,EAAU3F,GAAGoC,gBAWhG,OAFAiI,GAAQ,eAAerL,kBAPWC,2BACfC,gBAAmCf,qCACnCe,eAAkCf,qCAClCe,eAAkCf,qCAClCe,eAAkCf,sCAEnBgB,MAAuBmL,gBAEzDD,GAAQ,2DMpBDzL,qCACAG,wEACAA,wCACAC,sFACAC,wEACAC,6CACAA,0CACAC,qFACAC,0FACAA,2FPmDHG,UACAC,UACAC,8fAEAC,qHC3CG,eAAed,MAAqByL,UOlB5BK,CAAYX,EAAQ1B,EAASyB,YAE5C,MAAwB,iBAApBb,MAAAA,OAAO,EAAPA,EAASiB,QACJE,EAAStM,GAEXA,G,+RAGT,SAASsM,EAASpB,GAEhB,OADa,IAAIH,KAAK,CAACG,GAAO,CAAE9E,KAAM,cAC1BsF,cAGd,SACET,UAAAA,G","sources":["webpack://xlsxPreview/webpack/bootstrap","webpack://xlsxPreview/webpack/runtime/define property getters","webpack://xlsxPreview/webpack/runtime/hasOwnProperty shorthand","webpack://xlsxPreview/webpack/runtime/make namespace object","webpack://xlsxPreview/external var \"ExcelJS\"","webpack://xlsxPreview/./src/utils.ts","webpack://xlsxPreview/./src/constants/base.ts","webpack://xlsxPreview/./src/htmls/genScripts.ts","webpack://xlsxPreview/./src/htmls/genHtmlStructure.ts","webpack://xlsxPreview/./src/images/genImages.ts","webpack://xlsxPreview/./src/CSSStyles/inline.ts","webpack://xlsxPreview/./src/htmls/genCell.ts","webpack://xlsxPreview/./src/htmls/genText.ts","webpack://xlsxPreview/./src/htmls/genSheet.ts","webpack://xlsxPreview/./src/CSSStyles/base.ts","webpack://xlsxPreview/./src/index.ts"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = ExcelJS;","export function parseARGB(argb: string) {\r\n if (argb.length !== 8) throw \"This is not a standard argb string.\";\r\n const color: string[] = [];\r\n for (let i = 0; i < 4; i++) {\r\n color.push(argb.substr(i * 2, 2));\r\n }\r\n const [a, r, g, b] = color.map((v) => parseInt(v, 16));\r\n return { a, r, g, b };\r\n}\r\n\r\nfunction toAndJoinHex(range: Uint8Array): string {\r\n let result: string = \"\";\r\n for (const v of range) {\r\n let to16 = v.toString(16);\r\n while (to16.length < 2) {\r\n to16 = \"0\" + to16;\r\n }\r\n result += to16;\r\n }\r\n return result;\r\n}\r\n\r\nexport function uuid() {\r\n const view = crypto.getRandomValues(new Uint8Array(8));\r\n const front = view.slice(0, 4);\r\n const end = view.slice(4);\r\n const fontPart = toAndJoinHex(front);\r\n const endPart = toAndJoinHex(end);\r\n return `${fontPart}-${endPart}`;\r\n}\r\n","import { uuid } from \"../utils\";\r\n\r\nexport const UUID = uuid();\r\n\r\nexport const EXCEL_SHEETS_CLS = `excel-sheets-${UUID}`;\r\n\r\nexport const TABLE_CLS = `table-${UUID}`;\r\nexport const TBODY_CLS = `tbody-${UUID}`;\r\nexport const SHEET_CLS = `sheet-${UUID}`;\r\nexport const SHEET_TOGGLE_BAR_CLS = `sheet-toggle-bar-${UUID}`;\r\nexport const SHEET_LOCATE_BTN_X = `locate-btns-x-${UUID}`;\r\nexport const SHEET_LOCATE_BTN_CLS = `l-btn-${UUID}`;\r\nexport const SHEET_TOGGLE_BTN_X = `toggle-btns-x-${UUID}`;\r\nexport const SHEET_TOGGLE_BTN_CLS = `t-btn-${UUID}`;\r\n\r\nexport const CELL_HEIGHT = 24;\r\nexport const CELL_WIDTH = 72;\r\nexport const TABLE_BORDER_COLOR = \"#f0f0f0\";\r\nexport const ORDER_CELL_BACKGROUND = \"#b6d9fb\";\r\n\r\nexport const FIRST_ORDER_ROW_HEIGHT = 24;\r\nexport const FIRST_ORDER_COL_WIDTH = 32;\r\n\r\nconst DEFAULT_NUMBER_ROWS = 20;\r\nconst DEFAULT_NUMBER_COLS = 16;\r\nexport let MINIMUM_NUMBER_ROWS = DEFAULT_NUMBER_ROWS;\r\nexport let MINIMUM_NUMBER_COLS = DEFAULT_NUMBER_COLS;\r\n\r\nexport function setMinimumNumberRows(count: number) {\r\n if (count < DEFAULT_NUMBER_ROWS) {\r\n console.warn(\"setMinimumNumberRows: count less then DEFAULT_NUMBER_ROWS.\");\r\n }\r\n MINIMUM_NUMBER_ROWS = count;\r\n}\r\n\r\nexport function setMinimumNumberCols(count: number) {\r\n if (count < DEFAULT_NUMBER_COLS) {\r\n console.warn(\"setMinimumNumberCols: count less then DEFAULT_NUMBER_COLS.\");\r\n }\r\n MINIMUM_NUMBER_COLS = count;\r\n}\r\n","import {\n SHEET_CLS,\n SHEET_LOCATE_BTN_CLS,\n SHEET_LOCATE_BTN_X,\n SHEET_TOGGLE_BTN_CLS,\n SHEET_TOGGLE_BTN_X,\n UUID,\n} from \"constants/base\";\n\nconst toggleBtnEventBind = `\nfunction toggleBtnEventBind() {\n document.querySelector('.${SHEET_TOGGLE_BTN_X}').addEventListener('click',e => {\n const target = e.target;\n if(target.classList.contains('${SHEET_TOGGLE_BTN_CLS}')) {\n const index = target.dataset.index;\n setActiveByIndex(index);\n }\n })\n}\n`;\n\nconst calcOffset = `\nconst sheetBtnOffsetMap = (function calcSheetToggleBtnOffset() {\n const result = [];\n const btns = document.querySelectorAll(\".${SHEET_TOGGLE_BTN_CLS}\");\n btns.forEach((ele, idx) => {\n result[idx] = ele.offsetLeft;\n });\n return result;\n})();\n`;\n\nconst setActiveByIndex = `\nfunction setActiveByIndex(index) {\n document.querySelector('.${SHEET_TOGGLE_BTN_CLS}.active').classList.remove('active');\n document.querySelector('.${SHEET_CLS}.active').classList.remove('active');\n document.querySelector('.${SHEET_TOGGLE_BTN_CLS}[data-index=\"' + index + '\"]').classList.add(\"active\");\n document.querySelector('.${SHEET_CLS}[data-index=\"' + index + '\"]').classList.add(\"active\");\n}\n`;\n\nconst toPrevOffsetIndex = `\nfunction toPrevOffsetIndex(toggleBtnX) {\n if (offsetIndex === 0) return;\n const scrollLeft = toggleBtnX.scrollLeft;\n const scrollWidth = toggleBtnX.scrollWidth;\n const offsetWidth = toggleBtnX.offsetWidth;\n const maxOffset = scrollWidth - offsetWidth;\n let idx = offsetIndex - 1;\n while (idx >= 0) {\n let cur = sheetBtnOffsetMap[idx];\n if (cur < maxOffset) {\n toggleBtnX.scrollTo({ left: cur });\n offsetIndex = idx;\n break;\n }\n idx--;\n }\n}\n`;\n\nconst locateBtnEventBind = `\nlet offsetIndex = 0;\nfunction locateBtnEventBind() {\n document.querySelector('.${SHEET_LOCATE_BTN_X}').addEventListener('click', e => {\n const target = e.target;\n if (target.classList.contains('${SHEET_LOCATE_BTN_CLS}')) {\n const toggleBtnX = document.querySelector('.${SHEET_TOGGLE_BTN_X}');\n switch (target.id) {\n case 'first-${UUID}':\n toggleBtnX.scrollTo({ left: 0 });\n offsetIndex = 0;\n break;\n case 'last-${UUID}':\n toggleBtnX.scrollTo({ left: sheetBtnOffsetMap[sheetBtnOffsetMap.length - 1] })\n offsetIndex = sheetBtnOffsetMap.length - 1;\n break;\n case 'prev-${UUID}':\n toPrevOffsetIndex(toggleBtnX);\n break;\n case 'next-${UUID}':\n if (offsetIndex === sheetBtnOffsetMap.length - 1) return;\n toggleBtnX.scrollTo({ left: sheetBtnOffsetMap[++offsetIndex] });\n break;\n default:\n break;\n }\n }\n })\n}\n`;\nexport default function genScripts() {\n const scripts = `\n <script>\n ${toggleBtnEventBind}\n ${calcOffset}\n ${setActiveByIndex}\n ${toPrevOffsetIndex}\n ${locateBtnEventBind}\n window.onload = function() {\n toggleBtnEventBind();\n locateBtnEventBind();\n }\n </script>`;\n return scripts;\n}\n","import { Worksheet } from \"exceljs\";\r\nimport {\r\n SHEET_TOGGLE_BTN_CLS,\r\n SHEET_TOGGLE_BTN_X,\r\n SHEET_CLS,\r\n TABLE_CLS,\r\n TBODY_CLS,\r\n UUID,\r\n EXCEL_SHEETS_CLS,\r\n SHEET_LOCATE_BTN_X,\r\n SHEET_LOCATE_BTN_CLS,\r\n SHEET_TOGGLE_BAR_CLS,\r\n} from \"../constants/base\";\r\nimport { genToggleSheetCSS } from \"../CSSStyles/base\";\r\nimport genScripts from \"./genScripts\";\r\n\r\nconst EMPTY_ROW_CACHE: { [key: number]: string } = {};\r\nexport function genEmptyRow(columns: number, orderCell: string): string {\r\n if (EMPTY_ROW_CACHE[columns])\r\n return `<tr>${orderCell}${EMPTY_ROW_CACHE[columns]}</tr>`;\r\n let cells = \"\";\r\n for (let i = 1; i <= columns; i++) {\r\n cells += `<td></td>`;\r\n }\r\n EMPTY_ROW_CACHE[columns] = cells;\r\n return `<tr>${orderCell}${cells}</tr>`;\r\n}\r\n\r\nexport function wrapTable(html: string): string {\r\n return `<body class=\"embed-body-${UUID}\">\r\n <table class=\"${TABLE_CLS}\">\r\n <tbody class=\"${TBODY_CLS}\">${html}</tbody>\r\n </table>\r\n </body>`;\r\n}\r\n\r\nexport function sheetsInAll(sheets: string[], workSheet: Worksheet[]) {\r\n let html = \"\";\r\n let buttons = \"\";\r\n for (let i = 0; i < sheets.length; i++) {\r\n const MIME_TYPE = \"text/html\";\r\n const url = URL.createObjectURL(new Blob([sheets[i]], { type: MIME_TYPE }));\r\n const active = i === 0 ? \" active\" : \"\";\r\n html += `<object class=\"${SHEET_CLS}${active}\" data-index=\"${i}\" type=\"${MIME_TYPE}\" data=\"${url}\"></object>`;\r\n buttons += `<button class=\"${SHEET_TOGGLE_BTN_CLS}${active}\" data-index=\"${i}\">${workSheet[i].name}</button>`;\r\n }\r\n const locateBtns = `<div class=\"${SHEET_LOCATE_BTN_X}\">\r\n <button class=\"${SHEET_LOCATE_BTN_CLS}\" id=\"first-${UUID}\">⇤</button>\r\n <button class=\"${SHEET_LOCATE_BTN_CLS}\" id=\"prev-${UUID}\">←</button>\r\n <button class=\"${SHEET_LOCATE_BTN_CLS}\" id=\"next-${UUID}\">→</button>\r\n <button class=\"${SHEET_LOCATE_BTN_CLS}\" id=\"last-${UUID}\">⇥</button>\r\n </div>`;\r\n const toggleBtns = `<div class=\"${SHEET_TOGGLE_BTN_X}\">${buttons}</div>`;\r\n html += `<div class=\"${SHEET_TOGGLE_BAR_CLS}\">${locateBtns}${toggleBtns}</div>`;\r\n html += `${genToggleSheetCSS()}${genScripts()}`;\r\n return `<div class=\"${EXCEL_SHEETS_CLS}\">${html}</div>`;\r\n}\r\n","import { ImageRange, Worksheet } from \"exceljs\";\r\nimport { ImagePosAndSize, RowsAndColsSpanMap } from \"../types/table\";\r\n\r\nfunction calcImgPosAndSize(\r\n range: ImageRange,\r\n positionMap: RowsAndColsSpanMap\r\n): ImagePosAndSize {\r\n const { rows, cols } = positionMap;\r\n const { tl, br } = range;\r\n const offsetLeft = (tl.col - tl.nativeCol) * cols[Math.ceil(tl.col)];\r\n const offsetTop = (tl.row - tl.nativeRow) * rows[Math.ceil(tl.row)];\r\n let baseLeft = 0;\r\n for (let k = tl.nativeCol; k >= 0; k--) {\r\n baseLeft += cols[k];\r\n }\r\n let baseTop = 0;\r\n for (let k = tl.nativeRow; k >= 0; k--) {\r\n baseTop += rows[k];\r\n }\r\n const left = baseLeft + offsetLeft;\r\n const top = baseTop + offsetTop;\r\n\r\n const offsetRight = (br.col - br.nativeCol) * cols[Math.ceil(br.col)];\r\n const offsetBottom = (br.col - br.nativeCol) * rows[Math.ceil(br.row)];\r\n let baseRight = 0;\r\n for (let k = br.nativeCol; k >= 0; k--) {\r\n baseRight += cols[k];\r\n }\r\n let baseBottom = 0;\r\n for (let k = br.nativeRow; k >= 0; k--) {\r\n baseBottom += rows[k];\r\n }\r\n const width = baseRight + offsetRight - left;\r\n const height = baseBottom + offsetBottom - top;\r\n return {\r\n left,\r\n top,\r\n width,\r\n height,\r\n };\r\n}\r\n\r\nfunction regulateImgPosAndSize(\r\n res: ImagePosAndSize,\r\n range: ImageRange,\r\n positionMap: RowsAndColsSpanMap\r\n): ImagePosAndSize {\r\n if (res.width) return res;\r\n const { cols } = positionMap;\r\n const { tl, br } = range;\r\n const width = (br.nativeColOff - tl.nativeColOff) / 10000;\r\n const leftOffset = tl.nativeColOff / 10000;\r\n\r\n let baseLeft = 0;\r\n for (let k = tl.nativeCol; k >= 0; k--) {\r\n baseLeft += cols[k];\r\n }\r\n const left = baseLeft + leftOffset;\r\n return {\r\n ...res,\r\n left,\r\n width,\r\n };\r\n}\r\n\r\nexport async function genImageHtml(\r\n workSheet: Worksheet,\r\n positionMap: RowsAndColsSpanMap\r\n): Promise<string> {\r\n const images = workSheet.getImages();\r\n let imageHtml = \"\";\r\n for (const img of images) {\r\n let pos = calcImgPosAndSize(img.range, positionMap);\r\n const { left, top, width, height } = regulateImgPosAndSize(\r\n pos,\r\n img.range,\r\n positionMap\r\n );\r\n const styles = `position: absolute; left: ${left}px; top: ${top}px; width: ${width}px; height: ${height}px;`;\r\n const imgData = workSheet.workbook.getImage(img.imageId as any as number);\r\n const type = `image/${imgData.extension}`;\r\n if (imgData.base64) {\r\n imageHtml += `<img src=\"${imgData.base64}\" style=\"${styles}\" />`;\r\n } else if (imgData.buffer) {\r\n const url = URL.createObjectURL(new Blob([imgData.buffer], { type }));\r\n imageHtml += `<object type=\"${type}\" data=\"${url}\" style=\"${styles}\"></object>`;\r\n }\r\n }\r\n return imageHtml;\r\n}\r\n","import { Alignment, Fill, Font } from \"exceljs\";\r\nimport { parseARGB } from \"../utils\";\r\n\r\nexport function genAlignment(alignment: Partial<Alignment>): string {\r\n let styles = \"\";\r\n const { horizontal, vertical, indent, readingOrder } = alignment;\r\n if (horizontal) styles += `text-align: ${horizontal};`;\r\n if (vertical) styles += `vertical-align: ${vertical};`;\r\n if (indent) styles += `text-indent: ${indent};`;\r\n if (readingOrder) styles += `direction: ${readingOrder};`;\r\n return styles;\r\n}\r\n\r\nexport function genFont(font: Partial<Font>): string {\r\n let styles = \"\";\r\n const { bold, italic, family, name, size, underline, color } = font;\r\n if (bold) styles += \"font-weight: bold;\";\r\n if (italic) styles += \"font-style: italic;\";\r\n if (family) styles += `font-family: ${name};`;\r\n if (size) styles += `font-size: ${size}px;`;\r\n if (underline) styles += \"text-decoration: underline;\";\r\n if (color && color.argb) styles += `color: ${genColor(color.argb)};`;\r\n return styles;\r\n}\r\n\r\nexport function genFill(fill: Fill): string {\r\n const { type } = fill;\r\n if (type === \"pattern\") {\r\n const { fgColor, bgColor } = fill;\r\n if (fgColor && fgColor.argb) {\r\n const color = genColor(fgColor.argb);\r\n return `background-color: ${color};`;\r\n } else if (bgColor && bgColor.argb) {\r\n const color = genColor(bgColor.argb);\r\n return `background-color: ${color};`;\r\n }\r\n }\r\n return \"\";\r\n}\r\n\r\nexport function genColor(argb: string) {\r\n const { a, r, g, b } = parseARGB(argb);\r\n return `rgba(${r},${g},${b},${a / 255})`;\r\n}\r\n","import {\n Cell,\n CellHyperlinkValue,\n CellRichTextValue,\n ValueType,\n} from \"exceljs\";\nimport { genAlignment, genFill, genFont } from \"../CSSStyles/inline\";\nimport { CellSpan } from \"../types/table\";\nimport { genDate, genForMulaValue, genHyperLink, genRichText } from \"./genText\";\n\nfunction genCellTextByType(cell: Cell): string {\n const { type, value } = cell;\n switch (type) {\n case ValueType.Null:\n return '';\n case ValueType.Hyperlink:\n return genHyperLink(value as CellHyperlinkValue);\n case ValueType.RichText:\n return genRichText(value as CellRichTextValue);\n case ValueType.Formula:\n return genForMulaValue(cell);\n case ValueType.Date:\n return genDate(value as Date);\n default:\n return (value as string) || \"\";\n }\n}\n\nfunction computedCellSpan(cell: Cell) {\n if (!cell.isMerged || cell.master !== cell) return null;\n const { row, col } = cell.fullAddress;\n // find the next merged cell\n let nextRow = row + 1;\n let nextCell: Cell | undefined;\n do {\n nextCell = cell.worksheet.findCell(nextRow++, col);\n } while (nextCell && nextCell.master === cell);\n let nextCol = col + 1;\n nextCell = undefined;\n do {\n nextCell = cell.worksheet.findCell(row, nextCol++);\n } while (nextCell && nextCell.master === cell);\n const cellSpan: CellSpan = {};\n if (nextRow - row > 1) {\n cellSpan.row = nextRow - row - 1;\n }\n if (nextCol - col > 1) {\n cellSpan.col = nextCol - col - 1;\n }\n return cellSpan;\n}\n\nexport function genCell(cell: Cell) {\n let colRowData: CellSpan | null = null;\n if (cell.isMerged) {\n // If cell is merged and it isn't the master.\n if (cell.master !== cell) return \"\";\n colRowData = computedCellSpan(cell);\n }\n let text = genCellTextByType(cell);\n let cellAttrs = \"\";\n if (colRowData) {\n if (colRowData.col) cellAttrs += ` colspan=\"${colRowData.col}\"`;\n if (colRowData.row) cellAttrs += ` rowspan=\"${colRowData.row}\"`;\n }\n let curCellStyle = \"\";\n if (cell.font) curCellStyle += genFont(cell.font);\n if (cell.alignment) curCellStyle += genAlignment(cell.alignment);\n if (cell.fill) curCellStyle += genFill(cell.fill);\n if (curCellStyle) cellAttrs += ` style=\"${curCellStyle}\"`;\n return `<td${cellAttrs}>${text}</td>`;\n}\n","import { Cell, CellHyperlinkValue, CellRichTextValue } from \"exceljs\";\nimport { genFont } from \"../CSSStyles/inline\";\n\nexport function genHyperLink(value: CellHyperlinkValue): string {\n return `<a href=\"${value.hyperlink}\" target=\"_blank\">${value.text}</a>`;\n}\n\nexport function genRichText(value: CellRichTextValue): string {\n const richText = (value as CellRichTextValue).richText;\n let text = \"\";\n for (const rich of richText) {\n let styles = \"\";\n if (rich.font) {\n styles = genFont(rich.font);\n }\n if (styles) {\n text += `<span style=\"${styles}\">${rich.text}</span>`;\n } else {\n text += `<span>${rich.text}</span>`;\n }\n }\n return text;\n}\n\nexport function genForMulaValue(cell: Cell): string {\n if (cell.numFmt === \"0.00%\") {\n return ((cell.result as number) * 100).toFixed(2) + \"%\";\n } else {\n return cell.result as string || \"\";\n }\n}\n\nexport function genDate(value: Date): string {\n return value.toString();\n}\n","import { Row, Worksheet } from \"exceljs\";\nimport {\n CELL_HEIGHT,\n CELL_WIDTH,\n FIRST_ORDER_COL_WIDTH,\n FIRST_ORDER_ROW_HEIGHT,\n MINIMUM_NUMBER_COLS,\n MINIMUM_NUMBER_ROWS,\n TABLE_CLS,\n TBODY_CLS,\n} from \"../constants/base\";\nimport { genBaseCSS } from \"../CSSStyles/base\";\nimport { genImageHtml } from \"../images/genImages\";\nimport { RowsAndColsSpanMap } from \"../types/table\";\nimport { genCell } from \"./genCell\";\nimport { genEmptyRow, wrapTable } from \"./genHtmlStructure\";\n\nfunction genRows(\n rows: RowsMap,\n maxRow: number,\n maxCol: number,\n workSheet: Worksheet\n) {\n let resultRows = \"\";\n const rowsSpan: number[] = [];\n for (let index = 1; index <= maxRow; index++) {\n let result = \"\";\n const orderCell = `<td class=\"order order-row\">${index}</td>`;\n let rowHeight: number;\n // add default.\n if (!rows[index]) {\n rowHeight = CELL_HEIGHT;\n result += genEmptyRow(maxCol, orderCell);\n } else {\n // generate cells.\n const { height } = rows[index];\n let cellsResult = \"\";\n for (let j = 1; j <= maxCol; j++) {\n const curCell = workSheet.findCell(index, j);\n if (!curCell) {\n cellsResult += \"<td></td>\";\n } else {\n cellsResult += genCell(curCell);\n }\n }\n let rowAttrs = \"\";\n if (height) {\n rowAttrs += ` style=\"height:${height}px;\"`;\n rowHeight = height;\n } else {\n rowHeight = CELL_HEIGHT;\n }\n result += `<tr${rowAttrs}>${orderCell}${cellsResult}</tr>`;\n }\n\n resultRows += result;\n rowsSpan[index] = rowHeight;\n }\n return { resultRows, rowsSpan };\n}\n\nfunction genOrderCols(maxCol: number, workSheet: Worksheet) {\n const curDefaultColWidth = workSheet.properties.defaultColWidth || 9;\n let sheetWidth = 0;\n let orderCol = '<td class=\"order order-row\"></td>';\n let colStyles = \"\";\n const colsSpan: number[] = [];\n for (let j = 1; j <= maxCol; j++) {\n const column = workSheet.getColumn(j);\n orderCol += `<td class=\"order order-col index-${j}\">${column.letter}</td>`;\n if (!column.width) {\n sheetWidth += CELL_WIDTH;\n colsSpan[j] = CELL_WIDTH;\n } else {\n const curCellWidth = (column.width * CELL_WIDTH) / curDefaultColWidth;\n colsSpan[j] = curCellWidth;\n sheetWidth += curCellWidth;\n colStyles += `.${TBODY_CLS} td.index-${j} { width: ${curCellWidth}px; }`;\n }\n }\n return {\n sheetWidth,\n orderCol,\n colStyles,\n colsSpan,\n };\n}\n\ninterface RowsMap {\n [key: string]: Row;\n}\nexport default async function genSheet(workSheet: Worksheet) {\n const positionMap: RowsAndColsSpanMap = {\n rows: [],\n cols: [],\n };\n // generate rows.\n const rows: RowsMap = {};\n workSheet.eachRow((row, rowNumber) => {\n rows[rowNumber] = row;\n });\n const lastRow = (workSheet.lastRow && workSheet.lastRow.number) || 0;\n const maxRow = Math.max(lastRow, MINIMUM_NUMBER_ROWS);\n const lastColumn = (workSheet.lastColumn && workSheet.lastColumn.number) || 0;\n const maxCol = Math.max(lastColumn, MINIMUM_NUMBER_COLS);\n\n const { resultRows, rowsSpan } = genRows(rows, maxRow, maxCol, workSheet);\n positionMap.rows = [FIRST_ORDER_ROW_HEIGHT, ...rowsSpan];\n const { sheetWidth, orderCol, colStyles, colsSpan } = genOrderCols(\n maxCol,\n workSheet\n );\n positionMap.cols = [FIRST_ORDER_COL_WIDTH, ...colsSpan];\n\n const hideGridLines = workSheet.views.some((view) => !view.showGridLines);\n const gridLineStyle = hideGridLines\n ? `.${TBODY_CLS}.${TBODY_CLS} td:not(.order) { border: none; }`\n : \"\";\n\n let result = wrapTable(orderCol + resultRows);\n const tableStyle = `.${TABLE_CLS} { width: ${sheetWidth}px; } ${gridLineStyle}`;\n const imgHtml = await genImageHtml(workSheet, positionMap);\n result += imgHtml;\n result += `<style>${tableStyle}${colStyles}</style>`;\n result += genBaseCSS();\n return result;\n}\n","import {\r\n SHEET_TOGGLE_BTN_CLS,\r\n SHEET_TOGGLE_BTN_X,\r\n TABLE_BORDER_COLOR,\r\n CELL_HEIGHT,\r\n CELL_WIDTH,\r\n SHEET_CLS,\r\n TABLE_CLS,\r\n TBODY_CLS,\r\n UUID,\r\n EXCEL_SHEETS_CLS,\r\n ORDER_CELL_BACKGROUND,\r\n SHEET_TOGGLE_BAR_CLS,\r\n SHEET_LOCATE_BTN_X,\r\n SHEET_LOCATE_BTN_CLS,\r\n} from \"../constants/base\";\r\n\r\nexport function genBaseCSS(): string {\r\n const base = `\r\n <style>\r\n .embed-body-${UUID} { margin: 0; padding: 0; }\r\n .${TABLE_CLS} { border-collapse: collapse; table-layout: fixed; }\r\n .${TBODY_CLS} { border-right: 1px solid ${TABLE_BORDER_COLOR}; border-bottom: 1px solid ${TABLE_BORDER_COLOR}; }\r\n .${TBODY_CLS} td { border-left: 1px solid ${TABLE_BORDER_COLOR}; border-top: 1px solid ${TABLE_BORDER_COLOR}; width: ${CELL_WIDTH}px; height: ${CELL_HEIGHT}px; text-overflow: ellipsis; overflow: hidden; }\r\n .${TBODY_CLS} td.order { color: #333; text-align: center; background: ${ORDER_CELL_BACKGROUND}; }\r\n .${TBODY_CLS} td.order-row { width: 32px; }\r\n </style>`;\r\n return base;\r\n}\r\n\r\nexport function genToggleSheetCSS(): string {\r\n return `\r\n <style>\r\n body { margin-bottom: 0; }\r\n .${EXCEL_SHEETS_CLS} { position: relative; }\r\n .${SHEET_CLS} { display: none; width: 100%; height: calc(100% - 30px); }\r\n .${SHEET_CLS}.active { display: block; }\r\n .${SHEET_TOGGLE_BAR_CLS} { position: fixed; left: 0px; bottom: 0px; width: 100%; display: flex; }\r\n .${SHEET_LOCATE_BTN_X} { display: flex; algin-items: center; margin-right: 1px; }\r\n .${SHEET_LOCATE_BTN_CLS} { height: 30px; border: none; }\r\n .${SHEET_LOCATE_BTN_CLS}:active { background: #fff; }\r\n .${SHEET_TOGGLE_BTN_X} { position: relative; flex: 1; overflow: hidden; white-space: nowrap; }\r\n .${SHEET_TOGGLE_BTN_CLS} { height: 30px; padding: 0 15px; border: none; box-shadow: 1px 0 2px #ccc; }\r\n .${SHEET_TOGGLE_BTN_CLS}.active { border-bottom: 2px solid; background: #fff; }\r\n </style>`;\r\n}\r\n","import { Workbook } from \"exceljs\";\r\nimport { setMinimumNumberCols, setMinimumNumberRows } from \"./constants/base\";\r\nimport { sheetsInAll } from \"./htmls/genHtmlStructure\";\r\nimport genSheet from \"./htmls/genSheet\";\r\nimport { XlsxData, XlsxOptions } from \"./types\";\r\n\r\nexport async function xlsx2Html(data: XlsxData, options?: XlsxOptions) {\r\n if (options?.minimumRows) {\r\n setMinimumNumberRows(options.minimumRows);\r\n }\r\n if (options?.minimumCols) {\r\n setMinimumNumberCols(options.minimumCols);\r\n }\r\n let buffer: ArrayBuffer;\r\n if (data instanceof Blob) {\r\n buffer = await data.arrayBuffer();\r\n } else if (data instanceof ArrayBuffer) {\r\n buffer = data;\r\n } else {\r\n throw \"xlsx2Html(data, options): The parameter data can only be passed ArrayBuffer, Blob or File type\";\r\n }\r\n const workbook = new Workbook();\r\n await workbook.xlsx.load(buffer);\r\n const sheetsLen = workbook.worksheets.length;\r\n const sheets: string[] = [];\r\n for (let idx = 0; idx < sheetsLen; idx++) {\r\n const result = await genSheet(workbook.worksheets[idx]);\r\n sheets.push(result);\r\n }\r\n // Separate sheets.\r\n if (options?.separateSheets === true) {\r\n if (options.output === \"arrayBuffer\") {\r\n const all = sheets.map((sheet) => toBuffer(sheet));\r\n return all;\r\n }\r\n return sheets;\r\n }\r\n const result = sheetsInAll(sheets, workbook.worksheets);\r\n // Output ArrayBuffer\r\n if (options?.output === \"arrayBuffer\") {\r\n return toBuffer(result);\r\n }\r\n return result;\r\n}\r\n\r\nfunction toBuffer(data: string) {\r\n const blob = new Blob([data], { type: \"text/html\" });\r\n return blob.arrayBuffer();\r\n}\r\n\r\nexport default {\r\n xlsx2Html\r\n}"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","ExcelJS","toAndJoinHex","range","result","v","to16","toString","length","UUID","view","crypto","getRandomValues","Uint8Array","front","slice","end","uuid","EXCEL_SHEETS_CLS","TABLE_CLS","TBODY_CLS","SHEET_CLS","SHEET_TOGGLE_BAR_CLS","SHEET_LOCATE_BTN_X","SHEET_LOCATE_BTN_CLS","SHEET_TOGGLE_BTN_X","SHEET_TOGGLE_BTN_CLS","MINIMUM_NUMBER_ROWS","MINIMUM_NUMBER_COLS","toggleBtnEventBind","calcOffset","setActiveByIndex","locateBtnEventBind","EMPTY_ROW_CACHE","genEmptyRow","columns","orderCell","cells","i","calcImgPosAndSize","positionMap","rows","cols","tl","br","offsetLeft","col","nativeCol","Math","ceil","offsetTop","row","nativeRow","baseLeft","k","baseTop","left","top","offsetRight","offsetBottom","baseRight","baseBottom","width","height","regulateImgPosAndSize","res","nativeColOff","leftOffset","genFont","font","styles","bold","italic","family","name","size","underline","color","argb","genColor","a","r","g","b","push","substr","map","parseInt","parseARGB","genCell","cell","colRowData","isMerged","master","fullAddress","nextCell","nextRow","worksheet","findCell","nextCol","undefined","cellSpan","computedCellSpan","text","type","ValueType","hyperlink","genHyperLink","richText","rich","genRichText","numFmt","toFixed","genForMulaValue","genDate","genCellTextByType","cellAttrs","curCellStyle","alignment","horizontal","vertical","indent","readingOrder","genAlignment","fill","fgColor","bgColor","genFill","genSheet","workSheet","eachRow","rowNumber","lastRow","number","maxRow","max","lastColumn","maxCol","resultRows","rowsSpan","index","rowHeight","cellsResult","j","curCell","rowAttrs","genRows","sheetWidth","orderCol","colStyles","colsSpan","curDefaultColWidth","properties","defaultColWidth","column","getColumn","letter","curCellWidth","genOrderCols","gridLineStyle","views","some","showGridLines","tableStyle","imgHtml","images","getImages","imageHtml","img","pos","imgData","workbook","getImage","imageId","extension","base64","buffer","URL","createObjectURL","Blob","genImageHtml","xlsx2Html","data","options","count","minimumRows","console","warn","minimumCols","setMinimumNumberCols","arrayBuffer","ArrayBuffer","Workbook","xlsx","load","sheetsLen","worksheets","sheets","idx","separateSheets","output","sheet","toBuffer","html","buttons","MIME_TYPE","url","active","sheetsInAll"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"xlsxPreview.min.js","mappings":"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","sources":["webpack://xlsxPreview/webpack/bootstrap","webpack://xlsxPreview/webpack/runtime/define property getters","webpack://xlsxPreview/webpack/runtime/hasOwnProperty shorthand","webpack://xlsxPreview/webpack/runtime/make namespace object","webpack://xlsxPreview/external var \"ExcelJS\"","webpack://xlsxPreview/./src/utils.ts","webpack://xlsxPreview/./src/constants/base.ts","webpack://xlsxPreview/./src/htmls/genScripts.ts","webpack://xlsxPreview/./src/htmls/genHtmlStructure.ts","webpack://xlsxPreview/./src/images/genImages.ts","webpack://xlsxPreview/./src/CSSStyles/inline.ts","webpack://xlsxPreview/./src/htmls/genCell.ts","webpack://xlsxPreview/./src/htmls/genText.ts","webpack://xlsxPreview/./src/htmls/genSheet.ts","webpack://xlsxPreview/./src/CSSStyles/base.ts","webpack://xlsxPreview/./src/index.ts"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = ExcelJS;","export function parseARGB(argb: string) {\r\n if (argb.length !== 8) throw \"This is not a standard argb string.\";\r\n const color: string[] = [];\r\n for (let i = 0; i < 4; i++) {\r\n color.push(argb.substr(i * 2, 2));\r\n }\r\n const [a, r, g, b] = color.map((v) => parseInt(v, 16));\r\n return { a, r, g, b };\r\n}\r\n\r\nfunction toAndJoinHex(range: Uint8Array): string {\r\n let result: string = \"\";\r\n for (const v of range) {\r\n let to16 = v.toString(16);\r\n while (to16.length < 2) {\r\n to16 = \"0\" + to16;\r\n }\r\n result += to16;\r\n }\r\n return result;\r\n}\r\n\r\nexport function uuid() {\r\n const view = crypto.getRandomValues(new Uint8Array(8));\r\n const front = view.slice(0, 4);\r\n const end = view.slice(4);\r\n const fontPart = toAndJoinHex(front);\r\n const endPart = toAndJoinHex(end);\r\n return `${fontPart}-${endPart}`;\r\n}\r\n","import { uuid } from \"../utils\";\r\n\r\nexport const UUID = uuid();\r\n\r\nexport const EXCEL_SHEETS_CLS = `excel-sheets-${UUID}`;\r\n\r\nexport const TABLE_CLS = `table-${UUID}`;\r\nexport const TBODY_CLS = `tbody-${UUID}`;\r\nexport const SHEET_CLS = `sheet-${UUID}`;\r\nexport const SHEET_TOGGLE_BAR_CLS = `sheet-toggle-bar-${UUID}`;\r\nexport const SHEET_LOCATE_BTN_X = `locate-btns-x-${UUID}`;\r\nexport const SHEET_LOCATE_BTN_CLS = `l-btn-${UUID}`;\r\nexport const SHEET_TOGGLE_BTN_X = `toggle-btns-x-${UUID}`;\r\nexport const SHEET_TOGGLE_BTN_CLS = `t-btn-${UUID}`;\r\n\r\nexport const CELL_HEIGHT = 24;\r\nexport const CELL_WIDTH = 72;\r\nexport const TABLE_BORDER_COLOR = \"#f0f0f0\";\r\nexport const ORDER_CELL_BACKGROUND = \"#b6d9fb\";\r\n\r\nexport const FIRST_ORDER_ROW_HEIGHT = 24;\r\nexport const FIRST_ORDER_COL_WIDTH = 32;\r\n\r\nconst DEFAULT_NUMBER_ROWS = 20;\r\nconst DEFAULT_NUMBER_COLS = 16;\r\nexport let MINIMUM_NUMBER_ROWS = DEFAULT_NUMBER_ROWS;\r\nexport let MINIMUM_NUMBER_COLS = DEFAULT_NUMBER_COLS;\r\n\r\nexport function setMinimumNumberRows(count: number) {\r\n if (count < DEFAULT_NUMBER_ROWS) {\r\n console.warn(\"setMinimumNumberRows: count less then DEFAULT_NUMBER_ROWS.\");\r\n }\r\n MINIMUM_NUMBER_ROWS = count;\r\n}\r\n\r\nexport function setMinimumNumberCols(count: number) {\r\n if (count < DEFAULT_NUMBER_COLS) {\r\n console.warn(\"setMinimumNumberCols: count less then DEFAULT_NUMBER_COLS.\");\r\n }\r\n MINIMUM_NUMBER_COLS = count;\r\n}\r\n","import {\n SHEET_CLS,\n SHEET_LOCATE_BTN_CLS,\n SHEET_LOCATE_BTN_X,\n SHEET_TOGGLE_BTN_CLS,\n SHEET_TOGGLE_BTN_X,\n UUID,\n} from \"constants/base\";\n\nconst toggleBtnEventBind = `\nfunction toggleBtnEventBind() {\n document.querySelector('.${SHEET_TOGGLE_BTN_X}').addEventListener('click',e => {\n const target = e.target;\n if(target.classList.contains('${SHEET_TOGGLE_BTN_CLS}')) {\n const index = target.dataset.index;\n setActiveByIndex(index);\n }\n })\n}\n`;\n\nconst calcOffset = `\nconst sheetBtnOffsetMap = (function calcSheetToggleBtnOffset() {\n const result = [];\n const btns = document.querySelectorAll(\".${SHEET_TOGGLE_BTN_CLS}\");\n btns.forEach((ele, idx) => {\n result[idx] = ele.offsetLeft;\n });\n return result;\n})();\n`;\n\nconst setActiveByIndex = `\nfunction setActiveByIndex(index) {\n document.querySelector('.${SHEET_TOGGLE_BTN_CLS}.active').classList.remove('active');\n document.querySelector('.${SHEET_CLS}.active').classList.remove('active');\n document.querySelector('.${SHEET_TOGGLE_BTN_CLS}[data-index=\"' + index + '\"]').classList.add(\"active\");\n document.querySelector('.${SHEET_CLS}[data-index=\"' + index + '\"]').classList.add(\"active\");\n}\n`;\n\nconst toPrevOffsetIndex = `\nfunction toPrevOffsetIndex(toggleBtnX) {\n if (offsetIndex === 0) return;\n const scrollLeft = toggleBtnX.scrollLeft;\n const scrollWidth = toggleBtnX.scrollWidth;\n const offsetWidth = toggleBtnX.offsetWidth;\n const maxOffset = scrollWidth - offsetWidth;\n let idx = offsetIndex - 1;\n while (idx >= 0) {\n let cur = sheetBtnOffsetMap[idx];\n if (cur < maxOffset) {\n toggleBtnX.scrollTo({ left: cur });\n offsetIndex = idx;\n break;\n }\n idx--;\n }\n}\n`;\n\nconst locateBtnEventBind = `\nlet offsetIndex = 0;\nfunction locateBtnEventBind() {\n document.querySelector('.${SHEET_LOCATE_BTN_X}').addEventListener('click', e => {\n const target = e.target;\n if (target.classList.contains('${SHEET_LOCATE_BTN_CLS}')) {\n const toggleBtnX = document.querySelector('.${SHEET_TOGGLE_BTN_X}');\n switch (target.id) {\n case 'first-${UUID}':\n toggleBtnX.scrollTo({ left: 0 });\n offsetIndex = 0;\n break;\n case 'last-${UUID}':\n toggleBtnX.scrollTo({ left: sheetBtnOffsetMap[sheetBtnOffsetMap.length - 1] })\n offsetIndex = sheetBtnOffsetMap.length - 1;\n break;\n case 'prev-${UUID}':\n toPrevOffsetIndex(toggleBtnX);\n break;\n case 'next-${UUID}':\n if (offsetIndex === sheetBtnOffsetMap.length - 1) return;\n toggleBtnX.scrollTo({ left: sheetBtnOffsetMap[++offsetIndex] });\n break;\n default:\n break;\n }\n }\n })\n}\n`;\nexport default function genScripts() {\n const scripts = `\n <script>\n ${toggleBtnEventBind}\n ${calcOffset}\n ${setActiveByIndex}\n ${toPrevOffsetIndex}\n ${locateBtnEventBind}\n window.onload = function() {\n toggleBtnEventBind();\n locateBtnEventBind();\n }\n </script>`;\n return scripts;\n}\n","import { Worksheet } from \"exceljs\";\r\nimport {\r\n SHEET_TOGGLE_BTN_CLS,\r\n SHEET_TOGGLE_BTN_X,\r\n SHEET_CLS,\r\n TABLE_CLS,\r\n TBODY_CLS,\r\n UUID,\r\n EXCEL_SHEETS_CLS,\r\n SHEET_LOCATE_BTN_X,\r\n SHEET_LOCATE_BTN_CLS,\r\n SHEET_TOGGLE_BAR_CLS,\r\n} from \"../constants/base\";\r\nimport { genToggleSheetCSS } from \"../CSSStyles/base\";\r\nimport genScripts from \"./genScripts\";\r\n\r\nconst EMPTY_ROW_CACHE: { [key: number]: string } = {};\r\nexport function genEmptyRow(columns: number, orderCell: string): string {\r\n if (EMPTY_ROW_CACHE[columns])\r\n return `<tr>${orderCell}${EMPTY_ROW_CACHE[columns]}</tr>`;\r\n let cells = \"\";\r\n for (let i = 1; i <= columns; i++) {\r\n cells += `<td></td>`;\r\n }\r\n EMPTY_ROW_CACHE[columns] = cells;\r\n return `<tr>${orderCell}${cells}</tr>`;\r\n}\r\n\r\nexport function wrapTable(html: string): string {\r\n return `<body class=\"embed-body-${UUID}\">\r\n <table class=\"${TABLE_CLS}\">\r\n <tbody class=\"${TBODY_CLS}\">${html}</tbody>\r\n </table>\r\n </body>`;\r\n}\r\n\r\nexport function sheetsInAll(sheets: string[], workSheet: Worksheet[]) {\r\n let html = \"\";\r\n let buttons = \"\";\r\n for (let i = 0; i < sheets.length; i++) {\r\n const MIME_TYPE = \"text/html\";\r\n const url = URL.createObjectURL(new Blob([sheets[i]], { type: MIME_TYPE }));\r\n const active = i === 0 ? \" active\" : \"\";\r\n html += `<object class=\"${SHEET_CLS}${active}\" data-index=\"${i}\" type=\"${MIME_TYPE}\" data=\"${url}\"></object>`;\r\n buttons += `<button class=\"${SHEET_TOGGLE_BTN_CLS}${active}\" data-index=\"${i}\">${workSheet[i].name}</button>`;\r\n }\r\n const locateBtns = `<div class=\"${SHEET_LOCATE_BTN_X}\">\r\n <button class=\"${SHEET_LOCATE_BTN_CLS}\" id=\"first-${UUID}\">⇤</button>\r\n <button class=\"${SHEET_LOCATE_BTN_CLS}\" id=\"prev-${UUID}\">←</button>\r\n <button class=\"${SHEET_LOCATE_BTN_CLS}\" id=\"next-${UUID}\">→</button>\r\n <button class=\"${SHEET_LOCATE_BTN_CLS}\" id=\"last-${UUID}\">⇥</button>\r\n </div>`;\r\n const toggleBtns = `<div class=\"${SHEET_TOGGLE_BTN_X}\">${buttons}</div>`;\r\n html += `<div class=\"${SHEET_TOGGLE_BAR_CLS}\">${locateBtns}${toggleBtns}</div>`;\r\n html += `${genToggleSheetCSS()}${genScripts()}`;\r\n return `<div class=\"${EXCEL_SHEETS_CLS}\">${html}</div>`;\r\n}\r\n","import { ImageRange, Worksheet } from \"exceljs\";\r\nimport { ImagePosAndSize, RowsAndColsSpanMap } from \"../types/table\";\r\n\r\nfunction calcImgPosAndSize(\r\n range: ImageRange,\r\n positionMap: RowsAndColsSpanMap\r\n): ImagePosAndSize {\r\n const { rows, cols } = positionMap;\r\n const { tl, br } = range;\r\n const offsetLeft = (tl.col - tl.nativeCol) * cols[Math.ceil(tl.col)];\r\n const offsetTop = (tl.row - tl.nativeRow) * rows[Math.ceil(tl.row)];\r\n let baseLeft = 0;\r\n for (let k = tl.nativeCol; k >= 0; k--) {\r\n baseLeft += cols[k];\r\n }\r\n let baseTop = 0;\r\n for (let k = tl.nativeRow; k >= 0; k--) {\r\n baseTop += rows[k];\r\n }\r\n const left = baseLeft + offsetLeft;\r\n const top = baseTop + offsetTop;\r\n\r\n const offsetRight = (br.col - br.nativeCol) * cols[Math.ceil(br.col)];\r\n const offsetBottom = (br.col - br.nativeCol) * rows[Math.ceil(br.row)];\r\n let baseRight = 0;\r\n for (let k = br.nativeCol; k >= 0; k--) {\r\n baseRight += cols[k];\r\n }\r\n let baseBottom = 0;\r\n for (let k = br.nativeRow; k >= 0; k--) {\r\n baseBottom += rows[k];\r\n }\r\n const width = baseRight + offsetRight - left;\r\n const height = baseBottom + offsetBottom - top;\r\n return {\r\n left,\r\n top,\r\n width,\r\n height,\r\n };\r\n}\r\n\r\nfunction regulateImgPosAndSize(\r\n res: ImagePosAndSize,\r\n range: ImageRange,\r\n positionMap: RowsAndColsSpanMap\r\n): ImagePosAndSize {\r\n if (res.width) return res;\r\n const { cols } = positionMap;\r\n const { tl, br } = range;\r\n const width = (br.nativeColOff - tl.nativeColOff) / 10000;\r\n const leftOffset = tl.nativeColOff / 10000;\r\n\r\n let baseLeft = 0;\r\n for (let k = tl.nativeCol; k >= 0; k--) {\r\n baseLeft += cols[k];\r\n }\r\n const left = baseLeft + leftOffset;\r\n return {\r\n ...res,\r\n left,\r\n width,\r\n };\r\n}\r\n\r\nexport async function genImageHtml(\r\n workSheet: Worksheet,\r\n positionMap: RowsAndColsSpanMap\r\n): Promise<string> {\r\n const images = workSheet.getImages();\r\n let imageHtml = \"\";\r\n for (const img of images) {\r\n let pos = calcImgPosAndSize(img.range, positionMap);\r\n const { left, top, width, height } = regulateImgPosAndSize(\r\n pos,\r\n img.range,\r\n positionMap\r\n );\r\n const styles = `position: absolute; left: ${left}px; top: ${top}px; width: ${width}px; height: ${height}px;`;\r\n const imgData = workSheet.workbook.getImage(img.imageId as any as number);\r\n const type = `image/${imgData.extension}`;\r\n if (imgData.base64) {\r\n imageHtml += `<img src=\"${imgData.base64}\" style=\"${styles}\" />`;\r\n } else if (imgData.buffer) {\r\n const url = URL.createObjectURL(new Blob([imgData.buffer], { type }));\r\n imageHtml += `<object type=\"${type}\" data=\"${url}\" style=\"${styles}\"></object>`;\r\n }\r\n }\r\n return imageHtml;\r\n}\r\n","import { Alignment, Fill, Font } from \"exceljs\";\r\nimport { parseARGB } from \"../utils\";\r\n\r\nexport function genAlignment(alignment: Partial<Alignment>): string {\r\n let styles = \"\";\r\n const { horizontal, vertical, indent, readingOrder } = alignment;\r\n if (horizontal) styles += `text-align: ${horizontal};`;\r\n if (vertical) styles += `vertical-align: ${vertical};`;\r\n if (indent) styles += `text-indent: ${indent};`;\r\n if (readingOrder) styles += `direction: ${readingOrder};`;\r\n return styles;\r\n}\r\n\r\nexport function genFont(font: Partial<Font>): string {\r\n let styles = \"\";\r\n const { bold, italic, family, name, size, underline, color } = font;\r\n if (bold) styles += \"font-weight: bold;\";\r\n if (italic) styles += \"font-style: italic;\";\r\n if (family) styles += `font-family: ${name};`;\r\n if (size) styles += `font-size: ${size}px;`;\r\n if (underline) styles += \"text-decoration: underline;\";\r\n if (color && color.argb) styles += `color: ${genColor(color.argb)};`;\r\n return styles;\r\n}\r\n\r\nexport function genFill(fill: Fill): string {\r\n const { type } = fill;\r\n if (type === \"pattern\") {\r\n const { fgColor, bgColor } = fill;\r\n if (fgColor && fgColor.argb) {\r\n const color = genColor(fgColor.argb);\r\n return `background-color: ${color};`;\r\n } else if (bgColor && bgColor.argb) {\r\n const color = genColor(bgColor.argb);\r\n return `background-color: ${color};`;\r\n }\r\n }\r\n return \"\";\r\n}\r\n\r\nexport function genColor(argb: string) {\r\n const { a, r, g, b } = parseARGB(argb);\r\n return `rgba(${r},${g},${b},${a / 255})`;\r\n}\r\n","import {\n Cell,\n CellHyperlinkValue,\n CellRichTextValue,\n ValueType,\n} from \"exceljs\";\nimport { genAlignment, genFill, genFont } from \"../CSSStyles/inline\";\nimport { CellSpan } from \"../types/table\";\nimport { genDate, genForMulaValue, genHyperLink, genRichText } from \"./genText\";\n\nfunction genCellTextByType(cell: Cell): string {\n const { type, value } = cell;\n switch (type) {\n case ValueType.Null:\n return '';\n case ValueType.Hyperlink:\n return genHyperLink(value as CellHyperlinkValue);\n case ValueType.RichText:\n return genRichText(value as CellRichTextValue);\n case ValueType.Formula:\n return genForMulaValue(cell);\n case ValueType.Date:\n return genDate(value as Date);\n default:\n return (value as string) || \"\";\n }\n}\n\nfunction computedCellSpan(cell: Cell) {\n if (!cell.isMerged || cell.master !== cell) return null;\n const { row, col } = cell.fullAddress;\n // find the next merged cell\n let nextRow = row + 1;\n let nextCell: Cell | undefined;\n do {\n nextCell = cell.worksheet.findCell(nextRow++, col);\n } while (nextCell && nextCell.master === cell);\n let nextCol = col + 1;\n nextCell = undefined;\n do {\n nextCell = cell.worksheet.findCell(row, nextCol++);\n } while (nextCell && nextCell.master === cell);\n const cellSpan: CellSpan = {};\n if (nextRow - row > 1) {\n cellSpan.row = nextRow - row - 1;\n }\n if (nextCol - col > 1) {\n cellSpan.col = nextCol - col - 1;\n }\n return cellSpan;\n}\n\nexport function genCell(cell: Cell) {\n let colRowData: CellSpan | null = null;\n if (cell.isMerged) {\n // If cell is merged and it isn't the master.\n if (cell.master !== cell) return \"\";\n colRowData = computedCellSpan(cell);\n }\n let text = genCellTextByType(cell);\n let cellAttrs = \"\";\n if (colRowData) {\n if (colRowData.col) cellAttrs += ` colspan=\"${colRowData.col}\"`;\n if (colRowData.row) cellAttrs += ` rowspan=\"${colRowData.row}\"`;\n }\n let curCellStyle = \"\";\n if (cell.font) curCellStyle += genFont(cell.font);\n if (cell.alignment) curCellStyle += genAlignment(cell.alignment);\n if (cell.fill) curCellStyle += genFill(cell.fill);\n if (curCellStyle) cellAttrs += ` style=\"${curCellStyle}\"`;\n return `<td${cellAttrs}>${text}</td>`;\n}\n","import { Cell, CellHyperlinkValue, CellRichTextValue } from \"exceljs\";\nimport { genFont } from \"../CSSStyles/inline\";\n\nexport function genHyperLink(value: CellHyperlinkValue): string {\n return `<a href=\"${value.hyperlink}\" target=\"_blank\">${value.text}</a>`;\n}\n\nexport function genRichText(value: CellRichTextValue): string {\n const richText = (value as CellRichTextValue).richText;\n let text = \"\";\n for (const rich of richText) {\n let styles = \"\";\n if (rich.font) {\n styles = genFont(rich.font);\n }\n if (styles) {\n text += `<span style=\"${styles}\">${rich.text}</span>`;\n } else {\n text += `<span>${rich.text}</span>`;\n }\n }\n return text;\n}\n\nexport function genForMulaValue(cell: Cell): string {\n if (cell.numFmt === \"0.00%\") {\n return ((cell.result as number) * 100).toFixed(2) + \"%\";\n } else {\n return cell.result as string || \"\";\n }\n}\n\nexport function genDate(value: Date): string {\n return value.toString();\n}\n","import { Row, Worksheet } from \"exceljs\";\nimport {\n CELL_HEIGHT,\n CELL_WIDTH,\n FIRST_ORDER_COL_WIDTH,\n FIRST_ORDER_ROW_HEIGHT,\n MINIMUM_NUMBER_COLS,\n MINIMUM_NUMBER_ROWS,\n TABLE_CLS,\n TBODY_CLS,\n} from \"../constants/base\";\nimport { genBaseCSS } from \"../CSSStyles/base\";\nimport { genImageHtml } from \"../images/genImages\";\nimport { RowsAndColsSpanMap } from \"../types/table\";\nimport { genCell } from \"./genCell\";\nimport { genEmptyRow, wrapTable } from \"./genHtmlStructure\";\n\nfunction genRows(\n rows: RowsMap,\n maxRow: number,\n maxCol: number,\n workSheet: Worksheet\n) {\n let resultRows = \"\";\n const rowsSpan: number[] = [];\n for (let index = 1; index <= maxRow; index++) {\n let result = \"\";\n const orderCell = `<td class=\"order order-row\">${index}</td>`;\n let rowHeight: number;\n // add default.\n if (!rows[index]) {\n rowHeight = CELL_HEIGHT;\n result += genEmptyRow(maxCol, orderCell);\n } else {\n // generate cells.\n const { height } = rows[index];\n let cellsResult = \"\";\n for (let j = 1; j <= maxCol; j++) {\n const curCell = workSheet.findCell(index, j);\n if (!curCell) {\n cellsResult += \"<td></td>\";\n } else {\n cellsResult += genCell(curCell);\n }\n }\n let rowAttrs = \"\";\n if (height) {\n rowAttrs += ` style=\"height:${height}px;\"`;\n rowHeight = height;\n } else {\n rowHeight = CELL_HEIGHT;\n }\n result += `<tr${rowAttrs}>${orderCell}${cellsResult}</tr>`;\n }\n\n resultRows += result;\n rowsSpan[index] = rowHeight;\n }\n return { resultRows, rowsSpan };\n}\n\nfunction genOrderCols(maxCol: number, workSheet: Worksheet) {\n const curDefaultColWidth = workSheet.properties.defaultColWidth || 9;\n let sheetWidth = 0;\n let orderCol = '<td class=\"order order-row\"></td>';\n let colStyles = \"\";\n const colsSpan: number[] = [];\n for (let j = 1; j <= maxCol; j++) {\n const column = workSheet.getColumn(j);\n orderCol += `<td class=\"order order-col index-${j}\">${column.letter}</td>`;\n if (!column.width) {\n sheetWidth += CELL_WIDTH;\n colsSpan[j] = CELL_WIDTH;\n } else {\n const curCellWidth = (column.width * CELL_WIDTH) / curDefaultColWidth;\n colsSpan[j] = curCellWidth;\n sheetWidth += curCellWidth;\n colStyles += `.${TBODY_CLS} td.index-${j} { width: ${curCellWidth}px; }`;\n }\n }\n return {\n sheetWidth,\n orderCol,\n colStyles,\n colsSpan,\n };\n}\n\ninterface RowsMap {\n [key: string]: Row;\n}\nexport default async function genSheet(workSheet: Worksheet) {\n const positionMap: RowsAndColsSpanMap = {\n rows: [],\n cols: [],\n };\n // generate rows.\n const rows: RowsMap = {};\n workSheet.eachRow((row, rowNumber) => {\n rows[rowNumber] = row;\n });\n const lastRow = (workSheet.lastRow && workSheet.lastRow.number) || 0;\n const maxRow = Math.max(lastRow, MINIMUM_NUMBER_ROWS);\n const lastColumn = (workSheet.lastColumn && workSheet.lastColumn.number) || 0;\n const maxCol = Math.max(lastColumn, MINIMUM_NUMBER_COLS);\n\n const { resultRows, rowsSpan } = genRows(rows, maxRow, maxCol, workSheet);\n positionMap.rows = [FIRST_ORDER_ROW_HEIGHT, ...rowsSpan];\n const { sheetWidth, orderCol, colStyles, colsSpan } = genOrderCols(\n maxCol,\n workSheet\n );\n positionMap.cols = [FIRST_ORDER_COL_WIDTH, ...colsSpan];\n\n const hideGridLines = workSheet.views.some((view) => !view.showGridLines);\n const gridLineStyle = hideGridLines\n ? `.${TBODY_CLS}.${TBODY_CLS} td:not(.order) { border: none; }`\n : \"\";\n\n let result = wrapTable(orderCol + resultRows);\n const tableStyle = `.${TABLE_CLS} { width: ${sheetWidth}px; } ${gridLineStyle}`;\n const imgHtml = await genImageHtml(workSheet, positionMap);\n result += imgHtml;\n result += `<style>${tableStyle}${colStyles}</style>`;\n result += genBaseCSS();\n return result;\n}\n","import {\r\n SHEET_TOGGLE_BTN_CLS,\r\n SHEET_TOGGLE_BTN_X,\r\n TABLE_BORDER_COLOR,\r\n CELL_HEIGHT,\r\n CELL_WIDTH,\r\n SHEET_CLS,\r\n TABLE_CLS,\r\n TBODY_CLS,\r\n UUID,\r\n EXCEL_SHEETS_CLS,\r\n ORDER_CELL_BACKGROUND,\r\n SHEET_TOGGLE_BAR_CLS,\r\n SHEET_LOCATE_BTN_X,\r\n SHEET_LOCATE_BTN_CLS,\r\n} from \"../constants/base\";\r\n\r\nexport function genBaseCSS(): string {\r\n const base = `\r\n <style>\r\n .embed-body-${UUID} { margin: 0; padding: 0; }\r\n .${TABLE_CLS} { border-collapse: collapse; table-layout: fixed; }\r\n .${TBODY_CLS} { border-right: 1px solid ${TABLE_BORDER_COLOR}; border-bottom: 1px solid ${TABLE_BORDER_COLOR}; }\r\n .${TBODY_CLS} td { border-left: 1px solid ${TABLE_BORDER_COLOR}; border-top: 1px solid ${TABLE_BORDER_COLOR}; width: ${CELL_WIDTH}px; height: ${CELL_HEIGHT}px; text-overflow: ellipsis; overflow: hidden; }\r\n .${TBODY_CLS} td.order { color: #333; text-align: center; background: ${ORDER_CELL_BACKGROUND}; }\r\n .${TBODY_CLS} td.order-row { width: 32px; }\r\n </style>`;\r\n return base;\r\n}\r\n\r\nexport function genToggleSheetCSS(): string {\r\n return `\r\n <style>\r\n body { margin-bottom: 0; }\r\n .${EXCEL_SHEETS_CLS} { position: relative; height: 100%; }\r\n .${SHEET_CLS} { display: none; width: 100%; height: calc(100% - 30px); }\r\n .${SHEET_CLS}.active { display: block; }\r\n .${SHEET_TOGGLE_BAR_CLS} { position: fixed; left: 0px; bottom: 0px; width: 100%; display: flex; }\r\n .${SHEET_LOCATE_BTN_X} { display: flex; algin-items: center; margin-right: 1px; }\r\n .${SHEET_LOCATE_BTN_CLS} { height: 30px; border: none; }\r\n .${SHEET_LOCATE_BTN_CLS}:active { background: #fff; }\r\n .${SHEET_TOGGLE_BTN_X} { position: relative; flex: 1; overflow: hidden; white-space: nowrap; }\r\n .${SHEET_TOGGLE_BTN_CLS} { height: 30px; padding: 0 15px; border: none; box-shadow: 1px 0 2px #ccc; }\r\n .${SHEET_TOGGLE_BTN_CLS}.active { border-bottom: 2px solid; background: #fff; }\r\n </style>`;\r\n}\r\n","import { Workbook } from \"exceljs\";\r\nimport { setMinimumNumberCols, setMinimumNumberRows } from \"./constants/base\";\r\nimport { sheetsInAll } from \"./htmls/genHtmlStructure\";\r\nimport genSheet from \"./htmls/genSheet\";\r\nimport { XlsxData, XlsxOptions } from \"./types\";\r\n\r\nexport async function xlsx2Html(data: XlsxData, options?: XlsxOptions) {\r\n if (options?.minimumRows) {\r\n setMinimumNumberRows(options.minimumRows);\r\n }\r\n if (options?.minimumCols) {\r\n setMinimumNumberCols(options.minimumCols);\r\n }\r\n let buffer: ArrayBuffer;\r\n if (data instanceof Blob) {\r\n buffer = await data.arrayBuffer();\r\n } else if (data instanceof ArrayBuffer) {\r\n buffer = data;\r\n } else {\r\n throw \"xlsx2Html(data, options): The parameter data can only be passed ArrayBuffer, Blob or File type\";\r\n }\r\n const workbook = new Workbook();\r\n await workbook.xlsx.load(buffer);\r\n const sheetsLen = workbook.worksheets.length;\r\n const sheets: string[] = [];\r\n for (let idx = 0; idx < sheetsLen; idx++) {\r\n const result = await genSheet(workbook.worksheets[idx]);\r\n sheets.push(result);\r\n }\r\n // Separate sheets.\r\n if (options?.separateSheets === true) {\r\n if (options.output === \"arrayBuffer\") {\r\n const all = sheets.map((sheet) => toBuffer(sheet));\r\n return all;\r\n }\r\n return sheets;\r\n }\r\n const result = sheetsInAll(sheets, workbook.worksheets);\r\n // Output ArrayBuffer\r\n if (options?.output === \"arrayBuffer\") {\r\n return toBuffer(result);\r\n }\r\n return result;\r\n}\r\n\r\nfunction toBuffer(data: string) {\r\n const blob = new Blob([data], { type: \"text/html\" });\r\n return blob.arrayBuffer();\r\n}\r\n\r\nexport default {\r\n xlsx2Html\r\n}"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","ExcelJS","toAndJoinHex","range","result","v","to16","toString","length","UUID","view","crypto","getRandomValues","Uint8Array","front","slice","end","uuid","EXCEL_SHEETS_CLS","TABLE_CLS","TBODY_CLS","SHEET_CLS","SHEET_TOGGLE_BAR_CLS","SHEET_LOCATE_BTN_X","SHEET_LOCATE_BTN_CLS","SHEET_TOGGLE_BTN_X","SHEET_TOGGLE_BTN_CLS","MINIMUM_NUMBER_ROWS","MINIMUM_NUMBER_COLS","toggleBtnEventBind","calcOffset","setActiveByIndex","locateBtnEventBind","EMPTY_ROW_CACHE","genEmptyRow","columns","orderCell","cells","i","calcImgPosAndSize","positionMap","rows","cols","tl","br","offsetLeft","col","nativeCol","Math","ceil","offsetTop","row","nativeRow","baseLeft","k","baseTop","left","top","offsetRight","offsetBottom","baseRight","baseBottom","width","height","regulateImgPosAndSize","res","nativeColOff","leftOffset","genFont","font","styles","bold","italic","family","name","size","underline","color","argb","genColor","a","r","g","b","push","substr","map","parseInt","parseARGB","genCell","cell","colRowData","isMerged","master","fullAddress","nextCell","nextRow","worksheet","findCell","nextCol","undefined","cellSpan","computedCellSpan","text","type","ValueType","hyperlink","genHyperLink","richText","rich","genRichText","numFmt","toFixed","genForMulaValue","genDate","genCellTextByType","cellAttrs","curCellStyle","alignment","horizontal","vertical","indent","readingOrder","genAlignment","fill","fgColor","bgColor","genFill","genSheet","workSheet","eachRow","rowNumber","lastRow","number","maxRow","max","lastColumn","maxCol","resultRows","rowsSpan","index","rowHeight","cellsResult","j","curCell","rowAttrs","genRows","sheetWidth","orderCol","colStyles","colsSpan","curDefaultColWidth","properties","defaultColWidth","column","getColumn","letter","curCellWidth","genOrderCols","gridLineStyle","views","some","showGridLines","tableStyle","imgHtml","images","getImages","imageHtml","img","pos","imgData","workbook","getImage","imageId","extension","base64","buffer","URL","createObjectURL","Blob","genImageHtml","xlsx2Html","data","options","count","minimumRows","console","warn","minimumCols","setMinimumNumberCols","arrayBuffer","ArrayBuffer","Workbook","xlsx","load","sheetsLen","worksheets","sheets","idx","separateSheets","output","sheet","toBuffer","html","buttons","MIME_TYPE","url","active","sheetsInAll"],"sourceRoot":""}
|
package/dist/xlsxPreview.umd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("exceljs")):"function"==typeof define&&define.amd?define(["exceljs"],e):"object"==typeof exports?exports.xlsxPreview=e(require("exceljs")):t.xlsxPreview=e(t.exceljs)}(self,(function(t){return(()=>{"use strict";var e={674:e=>{e.exports=t}},n={};function o(t){var r=n[t];if(void 0!==r)return r.exports;var l=n[t]={exports:{}};return e[t](l,l.exports,o),l.exports}o.d=(t,e)=>{for(var n in e)o.o(e,n)&&!o.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},o.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),o.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var r={};return(()=>{o.r(r),o.d(r,{default:()=>j,xlsx2Html:()=>M});var t=o(674);function e(t){let e="";for(const n of t){let t=n.toString(16);for(;t.length<2;)t="0"+t;e+=t}return e}const n=function(){const t=crypto.getRandomValues(new Uint8Array(8)),n=t.slice(0,4),o=t.slice(4);return`${e(n)}-${e(o)}`}(),l=`excel-sheets-${n}`,s=`table-${n}`,i=`tbody-${n}`,c=`sheet-${n}`,a=`sheet-toggle-bar-${n}`,f=`locate-btns-x-${n}`,d=`l-btn-${n}`,u=`toggle-btns-x-${n}`,$=`t-btn-${n}`;let p=20,h=16;const x=`\nfunction toggleBtnEventBind() {\n document.querySelector('.${u}').addEventListener('click',e => {\n const target = e.target;\n if(target.classList.contains('${$}')) {\n const index = target.dataset.index;\n setActiveByIndex(index);\n }\n })\n}\n`,b=`\nconst sheetBtnOffsetMap = (function calcSheetToggleBtnOffset() {\n const result = [];\n const btns = document.querySelectorAll(".${$}");\n btns.forEach((ele, idx) => {\n result[idx] = ele.offsetLeft;\n });\n return result;\n})();\n`,g=`\nfunction setActiveByIndex(index) {\n document.querySelector('.${$}.active').classList.remove('active');\n document.querySelector('.${c}.active').classList.remove('active');\n document.querySelector('.${$}[data-index="' + index + '"]').classList.add("active");\n document.querySelector('.${c}[data-index="' + index + '"]').classList.add("active");\n}\n`,y=`\nlet offsetIndex = 0;\nfunction locateBtnEventBind() {\n document.querySelector('.${f}').addEventListener('click', e => {\n const target = e.target;\n if (target.classList.contains('${d}')) {\n const toggleBtnX = document.querySelector('.${u}');\n switch (target.id) {\n case 'first-${n}':\n toggleBtnX.scrollTo({ left: 0 });\n offsetIndex = 0;\n break;\n case 'last-${n}':\n toggleBtnX.scrollTo({ left: sheetBtnOffsetMap[sheetBtnOffsetMap.length - 1] })\n offsetIndex = sheetBtnOffsetMap.length - 1;\n break;\n case 'prev-${n}':\n toPrevOffsetIndex(toggleBtnX);\n break;\n case 'next-${n}':\n if (offsetIndex === sheetBtnOffsetMap.length - 1) return;\n toggleBtnX.scrollTo({ left: sheetBtnOffsetMap[++offsetIndex] });\n break;\n default:\n break;\n }\n }\n })\n}\n`,v={};function m(t,e){if(v[t])return`<tr>${e}${v[t]}</tr>`;let n="";for(let e=1;e<=t;e++)n+="<td></td>";return v[t]=n,`<tr>${e}${n}</tr>`}function w(t,e){const{rows:n,cols:o}=e,{tl:r,br:l}=t,s=(r.col-r.nativeCol)*o[Math.ceil(r.col)],i=(r.row-r.nativeRow)*n[Math.ceil(r.row)];let c=0;for(let t=r.nativeCol;t>=0;t--)c+=o[t];let a=0;for(let t=r.nativeRow;t>=0;t--)a+=n[t];const f=c+s,d=a+i,u=(l.col-l.nativeCol)*o[Math.ceil(l.col)],$=(l.col-l.nativeCol)*n[Math.ceil(l.row)];let p=0;for(let t=l.nativeCol;t>=0;t--)p+=o[t];let h=0;for(let t=l.nativeRow;t>=0;t--)h+=n[t];return{left:f,top:d,width:p+u-f,height:h+$-d}}function B(t,e,n){if(t.width)return t;const{cols:o}=n,{tl:r,br:l}=e,s=(l.nativeColOff-r.nativeColOff)/1e4,i=r.nativeColOff/1e4;let c=0;for(let t=r.nativeCol;t>=0;t--)c+=o[t];const a=c+i;return Object.assign(Object.assign({},t),{left:a,width:s})}function O(t){let e="";const{bold:n,italic:o,family:r,name:l,size:s,underline:i,color:c}=t;return n&&(e+="font-weight: bold;"),o&&(e+="font-style: italic;"),r&&(e+=`font-family: ${l};`),s&&(e+=`font-size: ${s}px;`),i&&(e+="text-decoration: underline;"),c&&c.argb&&(e+=`color: ${k(c.argb)};`),e}function k(t){const{a:e,r:n,g:o,b:r}=function(t){if(8!==t.length)throw"This is not a standard argb string.";const e=[];for(let n=0;n<4;n++)e.push(t.substr(2*n,2));const[n,o,r,l]=e.map((t=>parseInt(t,16)));return{a:n,r:o,g:r,b:l}}(t);return`rgba(${n},${o},${r},${e/255})`}function S(e){let n=null;if(e.isMerged){if(e.master!==e)return"";n=function(t){if(!t.isMerged||t.master!==t)return null;const{row:e,col:n}=t.fullAddress;let o,r=e+1;do{o=t.worksheet.findCell(r++,n)}while(o&&o.master===t);let l=n+1;o=void 0;do{o=t.worksheet.findCell(e,l++)}while(o&&o.master===t);const s={};return r-e>1&&(s.row=r-e-1),l-n>1&&(s.col=l-n-1),s}(e)}let o=function(e){const{type:n,value:o}=e;switch(n){case t.ValueType.Null:return"";case t.ValueType.Hyperlink:return function(t){return`<a href="${t.hyperlink}" target="_blank">${t.text}</a>`}(o);case t.ValueType.RichText:return function(t){const e=t.richText;let n="";for(const t of e){let e="";t.font&&(e=O(t.font)),n+=e?`<span style="${e}">${t.text}</span>`:`<span>${t.text}</span>`}return n}(o);case t.ValueType.Formula:return function(t){return"0.00%"===t.numFmt?(100*t.result).toFixed(2)+"%":t.result||""}(e);case t.ValueType.Date:return function(t){return t.toString()}(o);default:return o||""}}(e),r="";n&&(n.col&&(r+=` colspan="${n.col}"`),n.row&&(r+=` rowspan="${n.row}"`));let l="";return e.font&&(l+=O(e.font)),e.alignment&&(l+=function(t){let e="";const{horizontal:n,vertical:o,indent:r,readingOrder:l}=t;return n&&(e+=`text-align: ${n};`),o&&(e+=`vertical-align: ${o};`),r&&(e+=`text-indent: ${r};`),l&&(e+=`direction: ${l};`),e}(e.alignment)),e.fill&&(l+=function(t){const{type:e}=t;if("pattern"===e){const{fgColor:e,bgColor:n}=t;if(e&&e.argb)return`background-color: ${k(e.argb)};`;if(n&&n.argb)return`background-color: ${k(n.argb)};`}return""}(e.fill)),l&&(r+=` style="${l}"`),`<td${r}>${o}</td>`}function C(t){return e=this,o=void 0,l=function*(){const e={rows:[],cols:[]},o={};t.eachRow(((t,e)=>{o[e]=t}));const r=t.lastRow&&t.lastRow.number||0,l=Math.max(r,p),c=t.lastColumn&&t.lastColumn.number||0,a=Math.max(c,h),{resultRows:f,rowsSpan:d}=function(t,e,n,o){let r="";const l=[];for(let s=1;s<=e;s++){let e="";const i=`<td class="order order-row">${s}</td>`;let c;if(t[s]){const{height:r}=t[s];let l="";for(let t=1;t<=n;t++){const e=o.findCell(s,t);l+=e?S(e):"<td></td>"}let a="";r?(a+=` style="height:${r}px;"`,c=r):c=24,e+=`<tr${a}>${i}${l}</tr>`}else c=24,e+=m(n,i);r+=e,l[s]=c}return{resultRows:r,rowsSpan:l}}(o,l,a,t);e.rows=[24,...d];const{sheetWidth:u,orderCol:$,colStyles:x,colsSpan:b}=function(t,e){const n=e.properties.defaultColWidth||9;let o=0,r='<td class="order order-row"></td>',l="";const s=[];for(let c=1;c<=t;c++){const t=e.getColumn(c);if(r+=`<td class="order order-col index-${c}">${t.letter}</td>`,t.width){const e=72*t.width/n;s[c]=e,o+=e,l+=`.${i} td.index-${c} { width: ${e}px; }`}else o+=72,s[c]=72}return{sheetWidth:o,orderCol:r,colStyles:l,colsSpan:s}}(a,t);e.cols=[32,...b];const g=t.views.some((t=>!t.showGridLines))?`.${i}.${i} td:not(.order) { border: none; }`:"";let y=`<body class="embed-body-${n}">\n <table class="${s}">\n <tbody class="${i}">${$+f}</tbody>\n </table>\n </body>`;const v=`.${s} { width: ${u}px; } ${g}`,O=yield function(t,e){return n=this,o=void 0,l=function*(){const n=t.getImages();let o="";for(const r of n){let n=w(r.range,e);const{left:l,top:s,width:i,height:c}=B(n,r.range,e),a=`position: absolute; left: ${l}px; top: ${s}px; width: ${i}px; height: ${c}px;`,f=t.workbook.getImage(r.imageId),d=`image/${f.extension}`;f.base64?o+=`<img src="${f.base64}" style="${a}" />`:f.buffer&&(o+=`<object type="${d}" data="${URL.createObjectURL(new Blob([f.buffer],{type:d}))}" style="${a}"></object>`)}return o},new((r=void 0)||(r=Promise))((function(t,e){function s(t){try{c(l.next(t))}catch(t){e(t)}}function i(t){try{c(l.throw(t))}catch(t){e(t)}}function c(e){var n;e.done?t(e.value):(n=e.value,n instanceof r?n:new r((function(t){t(n)}))).then(s,i)}c((l=l.apply(n,o||[])).next())}));var n,o,r,l}(t,e);return y+=O,y+=`<style>${v}${x}</style>`,y+=`\n <style>\n .embed-body-${n} { margin: 0; padding: 0; }\n .${s} { border-collapse: collapse; table-layout: fixed; }\n .${i} { border-right: 1px solid #f0f0f0; border-bottom: 1px solid #f0f0f0; }\n .${i} td { border-left: 1px solid #f0f0f0; border-top: 1px solid #f0f0f0; width: 72px; height: 24px; text-overflow: ellipsis; overflow: hidden; }\n .${i} td.order { color: #333; text-align: center; background: #b6d9fb; }\n .${i} td.order-row { width: 32px; }\n </style>`,y},new((r=void 0)||(r=Promise))((function(t,n){function s(t){try{c(l.next(t))}catch(t){n(t)}}function i(t){try{c(l.throw(t))}catch(t){n(t)}}function c(e){var n;e.done?t(e.value):(n=e.value,n instanceof r?n:new r((function(t){t(n)}))).then(s,i)}c((l=l.apply(e,o||[])).next())}));var e,o,r,l}function M(e,o){return r=this,s=void 0,v=function*(){var r;let s;if((null==o?void 0:o.minimumRows)&&((r=o.minimumRows)<20&&console.warn("setMinimumNumberRows: count less then DEFAULT_NUMBER_ROWS."),p=r),(null==o?void 0:o.minimumCols)&&function(t){t<16&&console.warn("setMinimumNumberCols: count less then DEFAULT_NUMBER_COLS."),h=t}(o.minimumCols),e instanceof Blob)s=yield e.arrayBuffer();else{if(!(e instanceof ArrayBuffer))throw"xlsx2Html(data, options): The parameter data can only be passed ArrayBuffer, Blob or File type";s=e}const i=new t.Workbook;yield i.xlsx.load(s);const v=i.worksheets.length,m=[];for(let t=0;t<v;t++){const e=yield C(i.worksheets[t]);m.push(e)}if(!0===(null==o?void 0:o.separateSheets))return"arrayBuffer"===o.output?m.map((t=>R(t))):m;const w=function(t,e){let o="",r="";for(let n=0;n<t.length;n++){const l="text/html",s=URL.createObjectURL(new Blob([t[n]],{type:l})),i=0===n?" active":"";o+=`<object class="${c}${i}" data-index="${n}" type="${l}" data="${s}"></object>`,r+=`<button class="${$}${i}" data-index="${n}">${e[n].name}</button>`}return o+=`<div class="${a}"><div class="${f}">\n <button class="${d}" id="first-${n}">⇤</button>\n <button class="${d}" id="prev-${n}">←</button>\n <button class="${d}" id="next-${n}">→</button>\n <button class="${d}" id="last-${n}">⇥</button>\n </div><div class="${u}">${r}</div></div>`,o+=`\n <style>\n body { margin-bottom: 0; }\n .${l} { position: relative; }\n .${c} { display: none; width: 100%; height: calc(100% - 30px); }\n .${c}.active { display: block; }\n .${a} { position: fixed; left: 0px; bottom: 0px; width: 100%; display: flex; }\n .${f} { display: flex; algin-items: center; margin-right: 1px; }\n .${d} { height: 30px; border: none; }\n .${d}:active { background: #fff; }\n .${u} { position: relative; flex: 1; overflow: hidden; white-space: nowrap; }\n .${$} { height: 30px; padding: 0 15px; border: none; box-shadow: 1px 0 2px #ccc; }\n .${$}.active { border-bottom: 2px solid; background: #fff; }\n </style>\n <script>\n ${x}\n ${b}\n ${g}\n \nfunction toPrevOffsetIndex(toggleBtnX) {\n if (offsetIndex === 0) return;\n const scrollLeft = toggleBtnX.scrollLeft;\n const scrollWidth = toggleBtnX.scrollWidth;\n const offsetWidth = toggleBtnX.offsetWidth;\n const maxOffset = scrollWidth - offsetWidth;\n let idx = offsetIndex - 1;\n while (idx >= 0) {\n let cur = sheetBtnOffsetMap[idx];\n if (cur < maxOffset) {\n toggleBtnX.scrollTo({ left: cur });\n offsetIndex = idx;\n break;\n }\n idx--;\n }\n}\n\n ${y}\n window.onload = function() {\n toggleBtnEventBind();\n locateBtnEventBind();\n }\n <\/script>`,`<div class="${l}">${o}</div>`}(m,i.worksheets);return"arrayBuffer"===(null==o?void 0:o.output)?R(w):w},new((i=void 0)||(i=Promise))((function(t,e){function n(t){try{l(v.next(t))}catch(t){e(t)}}function o(t){try{l(v.throw(t))}catch(t){e(t)}}function l(e){var r;e.done?t(e.value):(r=e.value,r instanceof i?r:new i((function(t){t(r)}))).then(n,o)}l((v=v.apply(r,s||[])).next())}));var r,s,i,v}function R(t){return new Blob([t],{type:"text/html"}).arrayBuffer()}const j={xlsx2Html:M}})(),r})()}));
|
|
1
|
+
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("exceljs")):"function"==typeof define&&define.amd?define(["exceljs"],e):"object"==typeof exports?exports.xlsxPreview=e(require("exceljs")):t.xlsxPreview=e(t.exceljs)}(globalThis,(function(t){return(()=>{"use strict";var e={674:e=>{e.exports=t}},n={};function o(t){var r=n[t];if(void 0!==r)return r.exports;var l=n[t]={exports:{}};return e[t](l,l.exports,o),l.exports}o.d=(t,e)=>{for(var n in e)o.o(e,n)&&!o.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},o.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),o.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var r={};return(()=>{o.r(r),o.d(r,{default:()=>j,xlsx2Html:()=>M});var t=o(674);function e(t){let e="";for(const n of t){let t=n.toString(16);for(;t.length<2;)t="0"+t;e+=t}return e}const n=function(){const t=crypto.getRandomValues(new Uint8Array(8)),n=t.slice(0,4),o=t.slice(4);return`${e(n)}-${e(o)}`}(),l=`excel-sheets-${n}`,s=`table-${n}`,i=`tbody-${n}`,c=`sheet-${n}`,a=`sheet-toggle-bar-${n}`,f=`locate-btns-x-${n}`,d=`l-btn-${n}`,u=`toggle-btns-x-${n}`,$=`t-btn-${n}`;let h=20,p=16;const x=`\nfunction toggleBtnEventBind() {\n document.querySelector('.${u}').addEventListener('click',e => {\n const target = e.target;\n if(target.classList.contains('${$}')) {\n const index = target.dataset.index;\n setActiveByIndex(index);\n }\n })\n}\n`,b=`\nconst sheetBtnOffsetMap = (function calcSheetToggleBtnOffset() {\n const result = [];\n const btns = document.querySelectorAll(".${$}");\n btns.forEach((ele, idx) => {\n result[idx] = ele.offsetLeft;\n });\n return result;\n})();\n`,g=`\nfunction setActiveByIndex(index) {\n document.querySelector('.${$}.active').classList.remove('active');\n document.querySelector('.${c}.active').classList.remove('active');\n document.querySelector('.${$}[data-index="' + index + '"]').classList.add("active");\n document.querySelector('.${c}[data-index="' + index + '"]').classList.add("active");\n}\n`,y=`\nlet offsetIndex = 0;\nfunction locateBtnEventBind() {\n document.querySelector('.${f}').addEventListener('click', e => {\n const target = e.target;\n if (target.classList.contains('${d}')) {\n const toggleBtnX = document.querySelector('.${u}');\n switch (target.id) {\n case 'first-${n}':\n toggleBtnX.scrollTo({ left: 0 });\n offsetIndex = 0;\n break;\n case 'last-${n}':\n toggleBtnX.scrollTo({ left: sheetBtnOffsetMap[sheetBtnOffsetMap.length - 1] })\n offsetIndex = sheetBtnOffsetMap.length - 1;\n break;\n case 'prev-${n}':\n toPrevOffsetIndex(toggleBtnX);\n break;\n case 'next-${n}':\n if (offsetIndex === sheetBtnOffsetMap.length - 1) return;\n toggleBtnX.scrollTo({ left: sheetBtnOffsetMap[++offsetIndex] });\n break;\n default:\n break;\n }\n }\n })\n}\n`,v={};function m(t,e){if(v[t])return`<tr>${e}${v[t]}</tr>`;let n="";for(let e=1;e<=t;e++)n+="<td></td>";return v[t]=n,`<tr>${e}${n}</tr>`}function w(t,e){const{rows:n,cols:o}=e,{tl:r,br:l}=t,s=(r.col-r.nativeCol)*o[Math.ceil(r.col)],i=(r.row-r.nativeRow)*n[Math.ceil(r.row)];let c=0;for(let t=r.nativeCol;t>=0;t--)c+=o[t];let a=0;for(let t=r.nativeRow;t>=0;t--)a+=n[t];const f=c+s,d=a+i,u=(l.col-l.nativeCol)*o[Math.ceil(l.col)],$=(l.col-l.nativeCol)*n[Math.ceil(l.row)];let h=0;for(let t=l.nativeCol;t>=0;t--)h+=o[t];let p=0;for(let t=l.nativeRow;t>=0;t--)p+=n[t];return{left:f,top:d,width:h+u-f,height:p+$-d}}function B(t,e,n){if(t.width)return t;const{cols:o}=n,{tl:r,br:l}=e,s=(l.nativeColOff-r.nativeColOff)/1e4,i=r.nativeColOff/1e4;let c=0;for(let t=r.nativeCol;t>=0;t--)c+=o[t];const a=c+i;return Object.assign(Object.assign({},t),{left:a,width:s})}function O(t){let e="";const{bold:n,italic:o,family:r,name:l,size:s,underline:i,color:c}=t;return n&&(e+="font-weight: bold;"),o&&(e+="font-style: italic;"),r&&(e+=`font-family: ${l};`),s&&(e+=`font-size: ${s}px;`),i&&(e+="text-decoration: underline;"),c&&c.argb&&(e+=`color: ${k(c.argb)};`),e}function k(t){const{a:e,r:n,g:o,b:r}=function(t){if(8!==t.length)throw"This is not a standard argb string.";const e=[];for(let n=0;n<4;n++)e.push(t.substr(2*n,2));const[n,o,r,l]=e.map((t=>parseInt(t,16)));return{a:n,r:o,g:r,b:l}}(t);return`rgba(${n},${o},${r},${e/255})`}function S(e){let n=null;if(e.isMerged){if(e.master!==e)return"";n=function(t){if(!t.isMerged||t.master!==t)return null;const{row:e,col:n}=t.fullAddress;let o,r=e+1;do{o=t.worksheet.findCell(r++,n)}while(o&&o.master===t);let l=n+1;o=void 0;do{o=t.worksheet.findCell(e,l++)}while(o&&o.master===t);const s={};return r-e>1&&(s.row=r-e-1),l-n>1&&(s.col=l-n-1),s}(e)}let o=function(e){const{type:n,value:o}=e;switch(n){case t.ValueType.Null:return"";case t.ValueType.Hyperlink:return function(t){return`<a href="${t.hyperlink}" target="_blank">${t.text}</a>`}(o);case t.ValueType.RichText:return function(t){const e=t.richText;let n="";for(const t of e){let e="";t.font&&(e=O(t.font)),n+=e?`<span style="${e}">${t.text}</span>`:`<span>${t.text}</span>`}return n}(o);case t.ValueType.Formula:return function(t){return"0.00%"===t.numFmt?(100*t.result).toFixed(2)+"%":t.result||""}(e);case t.ValueType.Date:return function(t){return t.toString()}(o);default:return o||""}}(e),r="";n&&(n.col&&(r+=` colspan="${n.col}"`),n.row&&(r+=` rowspan="${n.row}"`));let l="";return e.font&&(l+=O(e.font)),e.alignment&&(l+=function(t){let e="";const{horizontal:n,vertical:o,indent:r,readingOrder:l}=t;return n&&(e+=`text-align: ${n};`),o&&(e+=`vertical-align: ${o};`),r&&(e+=`text-indent: ${r};`),l&&(e+=`direction: ${l};`),e}(e.alignment)),e.fill&&(l+=function(t){const{type:e}=t;if("pattern"===e){const{fgColor:e,bgColor:n}=t;if(e&&e.argb)return`background-color: ${k(e.argb)};`;if(n&&n.argb)return`background-color: ${k(n.argb)};`}return""}(e.fill)),l&&(r+=` style="${l}"`),`<td${r}>${o}</td>`}function C(t){return e=this,o=void 0,l=function*(){const e={rows:[],cols:[]},o={};t.eachRow(((t,e)=>{o[e]=t}));const r=t.lastRow&&t.lastRow.number||0,l=Math.max(r,h),c=t.lastColumn&&t.lastColumn.number||0,a=Math.max(c,p),{resultRows:f,rowsSpan:d}=function(t,e,n,o){let r="";const l=[];for(let s=1;s<=e;s++){let e="";const i=`<td class="order order-row">${s}</td>`;let c;if(t[s]){const{height:r}=t[s];let l="";for(let t=1;t<=n;t++){const e=o.findCell(s,t);l+=e?S(e):"<td></td>"}let a="";r?(a+=` style="height:${r}px;"`,c=r):c=24,e+=`<tr${a}>${i}${l}</tr>`}else c=24,e+=m(n,i);r+=e,l[s]=c}return{resultRows:r,rowsSpan:l}}(o,l,a,t);e.rows=[24,...d];const{sheetWidth:u,orderCol:$,colStyles:x,colsSpan:b}=function(t,e){const n=e.properties.defaultColWidth||9;let o=0,r='<td class="order order-row"></td>',l="";const s=[];for(let c=1;c<=t;c++){const t=e.getColumn(c);if(r+=`<td class="order order-col index-${c}">${t.letter}</td>`,t.width){const e=72*t.width/n;s[c]=e,o+=e,l+=`.${i} td.index-${c} { width: ${e}px; }`}else o+=72,s[c]=72}return{sheetWidth:o,orderCol:r,colStyles:l,colsSpan:s}}(a,t);e.cols=[32,...b];const g=t.views.some((t=>!t.showGridLines))?`.${i}.${i} td:not(.order) { border: none; }`:"";let y=`<body class="embed-body-${n}">\n <table class="${s}">\n <tbody class="${i}">${$+f}</tbody>\n </table>\n </body>`;const v=`.${s} { width: ${u}px; } ${g}`,O=yield function(t,e){return n=this,o=void 0,l=function*(){const n=t.getImages();let o="";for(const r of n){let n=w(r.range,e);const{left:l,top:s,width:i,height:c}=B(n,r.range,e),a=`position: absolute; left: ${l}px; top: ${s}px; width: ${i}px; height: ${c}px;`,f=t.workbook.getImage(r.imageId),d=`image/${f.extension}`;f.base64?o+=`<img src="${f.base64}" style="${a}" />`:f.buffer&&(o+=`<object type="${d}" data="${URL.createObjectURL(new Blob([f.buffer],{type:d}))}" style="${a}"></object>`)}return o},new((r=void 0)||(r=Promise))((function(t,e){function s(t){try{c(l.next(t))}catch(t){e(t)}}function i(t){try{c(l.throw(t))}catch(t){e(t)}}function c(e){var n;e.done?t(e.value):(n=e.value,n instanceof r?n:new r((function(t){t(n)}))).then(s,i)}c((l=l.apply(n,o||[])).next())}));var n,o,r,l}(t,e);return y+=O,y+=`<style>${v}${x}</style>`,y+=`\n <style>\n .embed-body-${n} { margin: 0; padding: 0; }\n .${s} { border-collapse: collapse; table-layout: fixed; }\n .${i} { border-right: 1px solid #f0f0f0; border-bottom: 1px solid #f0f0f0; }\n .${i} td { border-left: 1px solid #f0f0f0; border-top: 1px solid #f0f0f0; width: 72px; height: 24px; text-overflow: ellipsis; overflow: hidden; }\n .${i} td.order { color: #333; text-align: center; background: #b6d9fb; }\n .${i} td.order-row { width: 32px; }\n </style>`,y},new((r=void 0)||(r=Promise))((function(t,n){function s(t){try{c(l.next(t))}catch(t){n(t)}}function i(t){try{c(l.throw(t))}catch(t){n(t)}}function c(e){var n;e.done?t(e.value):(n=e.value,n instanceof r?n:new r((function(t){t(n)}))).then(s,i)}c((l=l.apply(e,o||[])).next())}));var e,o,r,l}function M(e,o){return r=this,s=void 0,v=function*(){var r;let s;if((null==o?void 0:o.minimumRows)&&((r=o.minimumRows)<20&&console.warn("setMinimumNumberRows: count less then DEFAULT_NUMBER_ROWS."),h=r),(null==o?void 0:o.minimumCols)&&function(t){t<16&&console.warn("setMinimumNumberCols: count less then DEFAULT_NUMBER_COLS."),p=t}(o.minimumCols),e instanceof Blob)s=yield e.arrayBuffer();else{if(!(e instanceof ArrayBuffer))throw"xlsx2Html(data, options): The parameter data can only be passed ArrayBuffer, Blob or File type";s=e}const i=new t.Workbook;yield i.xlsx.load(s);const v=i.worksheets.length,m=[];for(let t=0;t<v;t++){const e=yield C(i.worksheets[t]);m.push(e)}if(!0===(null==o?void 0:o.separateSheets))return"arrayBuffer"===o.output?m.map((t=>R(t))):m;const w=function(t,e){let o="",r="";for(let n=0;n<t.length;n++){const l="text/html",s=URL.createObjectURL(new Blob([t[n]],{type:l})),i=0===n?" active":"";o+=`<object class="${c}${i}" data-index="${n}" type="${l}" data="${s}"></object>`,r+=`<button class="${$}${i}" data-index="${n}">${e[n].name}</button>`}return o+=`<div class="${a}"><div class="${f}">\n <button class="${d}" id="first-${n}">⇤</button>\n <button class="${d}" id="prev-${n}">←</button>\n <button class="${d}" id="next-${n}">→</button>\n <button class="${d}" id="last-${n}">⇥</button>\n </div><div class="${u}">${r}</div></div>`,o+=`\n <style>\n body { margin-bottom: 0; }\n .${l} { position: relative; height: 100%; }\n .${c} { display: none; width: 100%; height: calc(100% - 30px); }\n .${c}.active { display: block; }\n .${a} { position: fixed; left: 0px; bottom: 0px; width: 100%; display: flex; }\n .${f} { display: flex; algin-items: center; margin-right: 1px; }\n .${d} { height: 30px; border: none; }\n .${d}:active { background: #fff; }\n .${u} { position: relative; flex: 1; overflow: hidden; white-space: nowrap; }\n .${$} { height: 30px; padding: 0 15px; border: none; box-shadow: 1px 0 2px #ccc; }\n .${$}.active { border-bottom: 2px solid; background: #fff; }\n </style>\n <script>\n ${x}\n ${b}\n ${g}\n \nfunction toPrevOffsetIndex(toggleBtnX) {\n if (offsetIndex === 0) return;\n const scrollLeft = toggleBtnX.scrollLeft;\n const scrollWidth = toggleBtnX.scrollWidth;\n const offsetWidth = toggleBtnX.offsetWidth;\n const maxOffset = scrollWidth - offsetWidth;\n let idx = offsetIndex - 1;\n while (idx >= 0) {\n let cur = sheetBtnOffsetMap[idx];\n if (cur < maxOffset) {\n toggleBtnX.scrollTo({ left: cur });\n offsetIndex = idx;\n break;\n }\n idx--;\n }\n}\n\n ${y}\n window.onload = function() {\n toggleBtnEventBind();\n locateBtnEventBind();\n }\n <\/script>`,`<div class="${l}">${o}</div>`}(m,i.worksheets);return"arrayBuffer"===(null==o?void 0:o.output)?R(w):w},new((i=void 0)||(i=Promise))((function(t,e){function n(t){try{l(v.next(t))}catch(t){e(t)}}function o(t){try{l(v.throw(t))}catch(t){e(t)}}function l(e){var r;e.done?t(e.value):(r=e.value,r instanceof i?r:new i((function(t){t(r)}))).then(n,o)}l((v=v.apply(r,s||[])).next())}));var r,s,i,v}function R(t){return new Blob([t],{type:"text/html"}).arrayBuffer()}const j={xlsx2Html:M}})(),r})()}));
|
|
2
2
|
//# sourceMappingURL=xlsxPreview.umd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xlsxPreview.umd.js","mappings":"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","sources":["webpack://xlsxPreview/webpack/universalModuleDefinition","webpack://xlsxPreview/external umd \"exceljs\"","webpack://xlsxPreview/webpack/bootstrap","webpack://xlsxPreview/webpack/runtime/define property getters","webpack://xlsxPreview/webpack/runtime/hasOwnProperty shorthand","webpack://xlsxPreview/webpack/runtime/make namespace object","webpack://xlsxPreview/./src/utils.ts","webpack://xlsxPreview/./src/constants/base.ts","webpack://xlsxPreview/./src/htmls/genScripts.ts","webpack://xlsxPreview/./src/htmls/genHtmlStructure.ts","webpack://xlsxPreview/./src/images/genImages.ts","webpack://xlsxPreview/./src/CSSStyles/inline.ts","webpack://xlsxPreview/./src/htmls/genCell.ts","webpack://xlsxPreview/./src/htmls/genText.ts","webpack://xlsxPreview/./src/htmls/genSheet.ts","webpack://xlsxPreview/./src/CSSStyles/base.ts","webpack://xlsxPreview/./src/index.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"exceljs\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"exceljs\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"xlsxPreview\"] = factory(require(\"exceljs\"));\n\telse\n\t\troot[\"xlsxPreview\"] = factory(root[\"exceljs\"]);\n})(self, function(__WEBPACK_EXTERNAL_MODULE__674__) {\nreturn ","module.exports = __WEBPACK_EXTERNAL_MODULE__674__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export function parseARGB(argb: string) {\r\n if (argb.length !== 8) throw \"This is not a standard argb string.\";\r\n const color: string[] = [];\r\n for (let i = 0; i < 4; i++) {\r\n color.push(argb.substr(i * 2, 2));\r\n }\r\n const [a, r, g, b] = color.map((v) => parseInt(v, 16));\r\n return { a, r, g, b };\r\n}\r\n\r\nfunction toAndJoinHex(range: Uint8Array): string {\r\n let result: string = \"\";\r\n for (const v of range) {\r\n let to16 = v.toString(16);\r\n while (to16.length < 2) {\r\n to16 = \"0\" + to16;\r\n }\r\n result += to16;\r\n }\r\n return result;\r\n}\r\n\r\nexport function uuid() {\r\n const view = crypto.getRandomValues(new Uint8Array(8));\r\n const front = view.slice(0, 4);\r\n const end = view.slice(4);\r\n const fontPart = toAndJoinHex(front);\r\n const endPart = toAndJoinHex(end);\r\n return `${fontPart}-${endPart}`;\r\n}\r\n","import { uuid } from \"../utils\";\r\n\r\nexport const UUID = uuid();\r\n\r\nexport const EXCEL_SHEETS_CLS = `excel-sheets-${UUID}`;\r\n\r\nexport const TABLE_CLS = `table-${UUID}`;\r\nexport const TBODY_CLS = `tbody-${UUID}`;\r\nexport const SHEET_CLS = `sheet-${UUID}`;\r\nexport const SHEET_TOGGLE_BAR_CLS = `sheet-toggle-bar-${UUID}`;\r\nexport const SHEET_LOCATE_BTN_X = `locate-btns-x-${UUID}`;\r\nexport const SHEET_LOCATE_BTN_CLS = `l-btn-${UUID}`;\r\nexport const SHEET_TOGGLE_BTN_X = `toggle-btns-x-${UUID}`;\r\nexport const SHEET_TOGGLE_BTN_CLS = `t-btn-${UUID}`;\r\n\r\nexport const CELL_HEIGHT = 24;\r\nexport const CELL_WIDTH = 72;\r\nexport const TABLE_BORDER_COLOR = \"#f0f0f0\";\r\nexport const ORDER_CELL_BACKGROUND = \"#b6d9fb\";\r\n\r\nexport const FIRST_ORDER_ROW_HEIGHT = 24;\r\nexport const FIRST_ORDER_COL_WIDTH = 32;\r\n\r\nconst DEFAULT_NUMBER_ROWS = 20;\r\nconst DEFAULT_NUMBER_COLS = 16;\r\nexport let MINIMUM_NUMBER_ROWS = DEFAULT_NUMBER_ROWS;\r\nexport let MINIMUM_NUMBER_COLS = DEFAULT_NUMBER_COLS;\r\n\r\nexport function setMinimumNumberRows(count: number) {\r\n if (count < DEFAULT_NUMBER_ROWS) {\r\n console.warn(\"setMinimumNumberRows: count less then DEFAULT_NUMBER_ROWS.\");\r\n }\r\n MINIMUM_NUMBER_ROWS = count;\r\n}\r\n\r\nexport function setMinimumNumberCols(count: number) {\r\n if (count < DEFAULT_NUMBER_COLS) {\r\n console.warn(\"setMinimumNumberCols: count less then DEFAULT_NUMBER_COLS.\");\r\n }\r\n MINIMUM_NUMBER_COLS = count;\r\n}\r\n","import {\n SHEET_CLS,\n SHEET_LOCATE_BTN_CLS,\n SHEET_LOCATE_BTN_X,\n SHEET_TOGGLE_BTN_CLS,\n SHEET_TOGGLE_BTN_X,\n UUID,\n} from \"constants/base\";\n\nconst toggleBtnEventBind = `\nfunction toggleBtnEventBind() {\n document.querySelector('.${SHEET_TOGGLE_BTN_X}').addEventListener('click',e => {\n const target = e.target;\n if(target.classList.contains('${SHEET_TOGGLE_BTN_CLS}')) {\n const index = target.dataset.index;\n setActiveByIndex(index);\n }\n })\n}\n`;\n\nconst calcOffset = `\nconst sheetBtnOffsetMap = (function calcSheetToggleBtnOffset() {\n const result = [];\n const btns = document.querySelectorAll(\".${SHEET_TOGGLE_BTN_CLS}\");\n btns.forEach((ele, idx) => {\n result[idx] = ele.offsetLeft;\n });\n return result;\n})();\n`;\n\nconst setActiveByIndex = `\nfunction setActiveByIndex(index) {\n document.querySelector('.${SHEET_TOGGLE_BTN_CLS}.active').classList.remove('active');\n document.querySelector('.${SHEET_CLS}.active').classList.remove('active');\n document.querySelector('.${SHEET_TOGGLE_BTN_CLS}[data-index=\"' + index + '\"]').classList.add(\"active\");\n document.querySelector('.${SHEET_CLS}[data-index=\"' + index + '\"]').classList.add(\"active\");\n}\n`;\n\nconst toPrevOffsetIndex = `\nfunction toPrevOffsetIndex(toggleBtnX) {\n if (offsetIndex === 0) return;\n const scrollLeft = toggleBtnX.scrollLeft;\n const scrollWidth = toggleBtnX.scrollWidth;\n const offsetWidth = toggleBtnX.offsetWidth;\n const maxOffset = scrollWidth - offsetWidth;\n let idx = offsetIndex - 1;\n while (idx >= 0) {\n let cur = sheetBtnOffsetMap[idx];\n if (cur < maxOffset) {\n toggleBtnX.scrollTo({ left: cur });\n offsetIndex = idx;\n break;\n }\n idx--;\n }\n}\n`;\n\nconst locateBtnEventBind = `\nlet offsetIndex = 0;\nfunction locateBtnEventBind() {\n document.querySelector('.${SHEET_LOCATE_BTN_X}').addEventListener('click', e => {\n const target = e.target;\n if (target.classList.contains('${SHEET_LOCATE_BTN_CLS}')) {\n const toggleBtnX = document.querySelector('.${SHEET_TOGGLE_BTN_X}');\n switch (target.id) {\n case 'first-${UUID}':\n toggleBtnX.scrollTo({ left: 0 });\n offsetIndex = 0;\n break;\n case 'last-${UUID}':\n toggleBtnX.scrollTo({ left: sheetBtnOffsetMap[sheetBtnOffsetMap.length - 1] })\n offsetIndex = sheetBtnOffsetMap.length - 1;\n break;\n case 'prev-${UUID}':\n toPrevOffsetIndex(toggleBtnX);\n break;\n case 'next-${UUID}':\n if (offsetIndex === sheetBtnOffsetMap.length - 1) return;\n toggleBtnX.scrollTo({ left: sheetBtnOffsetMap[++offsetIndex] });\n break;\n default:\n break;\n }\n }\n })\n}\n`;\nexport default function genScripts() {\n const scripts = `\n <script>\n ${toggleBtnEventBind}\n ${calcOffset}\n ${setActiveByIndex}\n ${toPrevOffsetIndex}\n ${locateBtnEventBind}\n window.onload = function() {\n toggleBtnEventBind();\n locateBtnEventBind();\n }\n </script>`;\n return scripts;\n}\n","import { Worksheet } from \"exceljs\";\r\nimport {\r\n SHEET_TOGGLE_BTN_CLS,\r\n SHEET_TOGGLE_BTN_X,\r\n SHEET_CLS,\r\n TABLE_CLS,\r\n TBODY_CLS,\r\n UUID,\r\n EXCEL_SHEETS_CLS,\r\n SHEET_LOCATE_BTN_X,\r\n SHEET_LOCATE_BTN_CLS,\r\n SHEET_TOGGLE_BAR_CLS,\r\n} from \"../constants/base\";\r\nimport { genToggleSheetCSS } from \"../CSSStyles/base\";\r\nimport genScripts from \"./genScripts\";\r\n\r\nconst EMPTY_ROW_CACHE: { [key: number]: string } = {};\r\nexport function genEmptyRow(columns: number, orderCell: string): string {\r\n if (EMPTY_ROW_CACHE[columns])\r\n return `<tr>${orderCell}${EMPTY_ROW_CACHE[columns]}</tr>`;\r\n let cells = \"\";\r\n for (let i = 1; i <= columns; i++) {\r\n cells += `<td></td>`;\r\n }\r\n EMPTY_ROW_CACHE[columns] = cells;\r\n return `<tr>${orderCell}${cells}</tr>`;\r\n}\r\n\r\nexport function wrapTable(html: string): string {\r\n return `<body class=\"embed-body-${UUID}\">\r\n <table class=\"${TABLE_CLS}\">\r\n <tbody class=\"${TBODY_CLS}\">${html}</tbody>\r\n </table>\r\n </body>`;\r\n}\r\n\r\nexport function sheetsInAll(sheets: string[], workSheet: Worksheet[]) {\r\n let html = \"\";\r\n let buttons = \"\";\r\n for (let i = 0; i < sheets.length; i++) {\r\n const MIME_TYPE = \"text/html\";\r\n const url = URL.createObjectURL(new Blob([sheets[i]], { type: MIME_TYPE }));\r\n const active = i === 0 ? \" active\" : \"\";\r\n html += `<object class=\"${SHEET_CLS}${active}\" data-index=\"${i}\" type=\"${MIME_TYPE}\" data=\"${url}\"></object>`;\r\n buttons += `<button class=\"${SHEET_TOGGLE_BTN_CLS}${active}\" data-index=\"${i}\">${workSheet[i].name}</button>`;\r\n }\r\n const locateBtns = `<div class=\"${SHEET_LOCATE_BTN_X}\">\r\n <button class=\"${SHEET_LOCATE_BTN_CLS}\" id=\"first-${UUID}\">⇤</button>\r\n <button class=\"${SHEET_LOCATE_BTN_CLS}\" id=\"prev-${UUID}\">←</button>\r\n <button class=\"${SHEET_LOCATE_BTN_CLS}\" id=\"next-${UUID}\">→</button>\r\n <button class=\"${SHEET_LOCATE_BTN_CLS}\" id=\"last-${UUID}\">⇥</button>\r\n </div>`;\r\n const toggleBtns = `<div class=\"${SHEET_TOGGLE_BTN_X}\">${buttons}</div>`;\r\n html += `<div class=\"${SHEET_TOGGLE_BAR_CLS}\">${locateBtns}${toggleBtns}</div>`;\r\n html += `${genToggleSheetCSS()}${genScripts()}`;\r\n return `<div class=\"${EXCEL_SHEETS_CLS}\">${html}</div>`;\r\n}\r\n","import { ImageRange, Worksheet } from \"exceljs\";\r\nimport { ImagePosAndSize, RowsAndColsSpanMap } from \"../types/table\";\r\n\r\nfunction calcImgPosAndSize(\r\n range: ImageRange,\r\n positionMap: RowsAndColsSpanMap\r\n): ImagePosAndSize {\r\n const { rows, cols } = positionMap;\r\n const { tl, br } = range;\r\n const offsetLeft = (tl.col - tl.nativeCol) * cols[Math.ceil(tl.col)];\r\n const offsetTop = (tl.row - tl.nativeRow) * rows[Math.ceil(tl.row)];\r\n let baseLeft = 0;\r\n for (let k = tl.nativeCol; k >= 0; k--) {\r\n baseLeft += cols[k];\r\n }\r\n let baseTop = 0;\r\n for (let k = tl.nativeRow; k >= 0; k--) {\r\n baseTop += rows[k];\r\n }\r\n const left = baseLeft + offsetLeft;\r\n const top = baseTop + offsetTop;\r\n\r\n const offsetRight = (br.col - br.nativeCol) * cols[Math.ceil(br.col)];\r\n const offsetBottom = (br.col - br.nativeCol) * rows[Math.ceil(br.row)];\r\n let baseRight = 0;\r\n for (let k = br.nativeCol; k >= 0; k--) {\r\n baseRight += cols[k];\r\n }\r\n let baseBottom = 0;\r\n for (let k = br.nativeRow; k >= 0; k--) {\r\n baseBottom += rows[k];\r\n }\r\n const width = baseRight + offsetRight - left;\r\n const height = baseBottom + offsetBottom - top;\r\n return {\r\n left,\r\n top,\r\n width,\r\n height,\r\n };\r\n}\r\n\r\nfunction regulateImgPosAndSize(\r\n res: ImagePosAndSize,\r\n range: ImageRange,\r\n positionMap: RowsAndColsSpanMap\r\n): ImagePosAndSize {\r\n if (res.width) return res;\r\n const { cols } = positionMap;\r\n const { tl, br } = range;\r\n const width = (br.nativeColOff - tl.nativeColOff) / 10000;\r\n const leftOffset = tl.nativeColOff / 10000;\r\n\r\n let baseLeft = 0;\r\n for (let k = tl.nativeCol; k >= 0; k--) {\r\n baseLeft += cols[k];\r\n }\r\n const left = baseLeft + leftOffset;\r\n return {\r\n ...res,\r\n left,\r\n width,\r\n };\r\n}\r\n\r\nexport async function genImageHtml(\r\n workSheet: Worksheet,\r\n positionMap: RowsAndColsSpanMap\r\n): Promise<string> {\r\n const images = workSheet.getImages();\r\n let imageHtml = \"\";\r\n for (const img of images) {\r\n let pos = calcImgPosAndSize(img.range, positionMap);\r\n const { left, top, width, height } = regulateImgPosAndSize(\r\n pos,\r\n img.range,\r\n positionMap\r\n );\r\n const styles = `position: absolute; left: ${left}px; top: ${top}px; width: ${width}px; height: ${height}px;`;\r\n const imgData = workSheet.workbook.getImage(img.imageId as any as number);\r\n const type = `image/${imgData.extension}`;\r\n if (imgData.base64) {\r\n imageHtml += `<img src=\"${imgData.base64}\" style=\"${styles}\" />`;\r\n } else if (imgData.buffer) {\r\n const url = URL.createObjectURL(new Blob([imgData.buffer], { type }));\r\n imageHtml += `<object type=\"${type}\" data=\"${url}\" style=\"${styles}\"></object>`;\r\n }\r\n }\r\n return imageHtml;\r\n}\r\n","import { Alignment, Fill, Font } from \"exceljs\";\r\nimport { parseARGB } from \"../utils\";\r\n\r\nexport function genAlignment(alignment: Partial<Alignment>): string {\r\n let styles = \"\";\r\n const { horizontal, vertical, indent, readingOrder } = alignment;\r\n if (horizontal) styles += `text-align: ${horizontal};`;\r\n if (vertical) styles += `vertical-align: ${vertical};`;\r\n if (indent) styles += `text-indent: ${indent};`;\r\n if (readingOrder) styles += `direction: ${readingOrder};`;\r\n return styles;\r\n}\r\n\r\nexport function genFont(font: Partial<Font>): string {\r\n let styles = \"\";\r\n const { bold, italic, family, name, size, underline, color } = font;\r\n if (bold) styles += \"font-weight: bold;\";\r\n if (italic) styles += \"font-style: italic;\";\r\n if (family) styles += `font-family: ${name};`;\r\n if (size) styles += `font-size: ${size}px;`;\r\n if (underline) styles += \"text-decoration: underline;\";\r\n if (color && color.argb) styles += `color: ${genColor(color.argb)};`;\r\n return styles;\r\n}\r\n\r\nexport function genFill(fill: Fill): string {\r\n const { type } = fill;\r\n if (type === \"pattern\") {\r\n const { fgColor, bgColor } = fill;\r\n if (fgColor && fgColor.argb) {\r\n const color = genColor(fgColor.argb);\r\n return `background-color: ${color};`;\r\n } else if (bgColor && bgColor.argb) {\r\n const color = genColor(bgColor.argb);\r\n return `background-color: ${color};`;\r\n }\r\n }\r\n return \"\";\r\n}\r\n\r\nexport function genColor(argb: string) {\r\n const { a, r, g, b } = parseARGB(argb);\r\n return `rgba(${r},${g},${b},${a / 255})`;\r\n}\r\n","import {\n Cell,\n CellHyperlinkValue,\n CellRichTextValue,\n ValueType,\n} from \"exceljs\";\nimport { genAlignment, genFill, genFont } from \"../CSSStyles/inline\";\nimport { CellSpan } from \"../types/table\";\nimport { genDate, genForMulaValue, genHyperLink, genRichText } from \"./genText\";\n\nfunction genCellTextByType(cell: Cell): string {\n const { type, value } = cell;\n switch (type) {\n case ValueType.Null:\n return '';\n case ValueType.Hyperlink:\n return genHyperLink(value as CellHyperlinkValue);\n case ValueType.RichText:\n return genRichText(value as CellRichTextValue);\n case ValueType.Formula:\n return genForMulaValue(cell);\n case ValueType.Date:\n return genDate(value as Date);\n default:\n return (value as string) || \"\";\n }\n}\n\nfunction computedCellSpan(cell: Cell) {\n if (!cell.isMerged || cell.master !== cell) return null;\n const { row, col } = cell.fullAddress;\n // find the next merged cell\n let nextRow = row + 1;\n let nextCell: Cell | undefined;\n do {\n nextCell = cell.worksheet.findCell(nextRow++, col);\n } while (nextCell && nextCell.master === cell);\n let nextCol = col + 1;\n nextCell = undefined;\n do {\n nextCell = cell.worksheet.findCell(row, nextCol++);\n } while (nextCell && nextCell.master === cell);\n const cellSpan: CellSpan = {};\n if (nextRow - row > 1) {\n cellSpan.row = nextRow - row - 1;\n }\n if (nextCol - col > 1) {\n cellSpan.col = nextCol - col - 1;\n }\n return cellSpan;\n}\n\nexport function genCell(cell: Cell) {\n let colRowData: CellSpan | null = null;\n if (cell.isMerged) {\n // If cell is merged and it isn't the master.\n if (cell.master !== cell) return \"\";\n colRowData = computedCellSpan(cell);\n }\n let text = genCellTextByType(cell);\n let cellAttrs = \"\";\n if (colRowData) {\n if (colRowData.col) cellAttrs += ` colspan=\"${colRowData.col}\"`;\n if (colRowData.row) cellAttrs += ` rowspan=\"${colRowData.row}\"`;\n }\n let curCellStyle = \"\";\n if (cell.font) curCellStyle += genFont(cell.font);\n if (cell.alignment) curCellStyle += genAlignment(cell.alignment);\n if (cell.fill) curCellStyle += genFill(cell.fill);\n if (curCellStyle) cellAttrs += ` style=\"${curCellStyle}\"`;\n return `<td${cellAttrs}>${text}</td>`;\n}\n","import { Cell, CellHyperlinkValue, CellRichTextValue } from \"exceljs\";\nimport { genFont } from \"../CSSStyles/inline\";\n\nexport function genHyperLink(value: CellHyperlinkValue): string {\n return `<a href=\"${value.hyperlink}\" target=\"_blank\">${value.text}</a>`;\n}\n\nexport function genRichText(value: CellRichTextValue): string {\n const richText = (value as CellRichTextValue).richText;\n let text = \"\";\n for (const rich of richText) {\n let styles = \"\";\n if (rich.font) {\n styles = genFont(rich.font);\n }\n if (styles) {\n text += `<span style=\"${styles}\">${rich.text}</span>`;\n } else {\n text += `<span>${rich.text}</span>`;\n }\n }\n return text;\n}\n\nexport function genForMulaValue(cell: Cell): string {\n if (cell.numFmt === \"0.00%\") {\n return ((cell.result as number) * 100).toFixed(2) + \"%\";\n } else {\n return cell.result as string || \"\";\n }\n}\n\nexport function genDate(value: Date): string {\n return value.toString();\n}\n","import { Row, Worksheet } from \"exceljs\";\nimport {\n CELL_HEIGHT,\n CELL_WIDTH,\n FIRST_ORDER_COL_WIDTH,\n FIRST_ORDER_ROW_HEIGHT,\n MINIMUM_NUMBER_COLS,\n MINIMUM_NUMBER_ROWS,\n TABLE_CLS,\n TBODY_CLS,\n} from \"../constants/base\";\nimport { genBaseCSS } from \"../CSSStyles/base\";\nimport { genImageHtml } from \"../images/genImages\";\nimport { RowsAndColsSpanMap } from \"../types/table\";\nimport { genCell } from \"./genCell\";\nimport { genEmptyRow, wrapTable } from \"./genHtmlStructure\";\n\nfunction genRows(\n rows: RowsMap,\n maxRow: number,\n maxCol: number,\n workSheet: Worksheet\n) {\n let resultRows = \"\";\n const rowsSpan: number[] = [];\n for (let index = 1; index <= maxRow; index++) {\n let result = \"\";\n const orderCell = `<td class=\"order order-row\">${index}</td>`;\n let rowHeight: number;\n // add default.\n if (!rows[index]) {\n rowHeight = CELL_HEIGHT;\n result += genEmptyRow(maxCol, orderCell);\n } else {\n // generate cells.\n const { height } = rows[index];\n let cellsResult = \"\";\n for (let j = 1; j <= maxCol; j++) {\n const curCell = workSheet.findCell(index, j);\n if (!curCell) {\n cellsResult += \"<td></td>\";\n } else {\n cellsResult += genCell(curCell);\n }\n }\n let rowAttrs = \"\";\n if (height) {\n rowAttrs += ` style=\"height:${height}px;\"`;\n rowHeight = height;\n } else {\n rowHeight = CELL_HEIGHT;\n }\n result += `<tr${rowAttrs}>${orderCell}${cellsResult}</tr>`;\n }\n\n resultRows += result;\n rowsSpan[index] = rowHeight;\n }\n return { resultRows, rowsSpan };\n}\n\nfunction genOrderCols(maxCol: number, workSheet: Worksheet) {\n const curDefaultColWidth = workSheet.properties.defaultColWidth || 9;\n let sheetWidth = 0;\n let orderCol = '<td class=\"order order-row\"></td>';\n let colStyles = \"\";\n const colsSpan: number[] = [];\n for (let j = 1; j <= maxCol; j++) {\n const column = workSheet.getColumn(j);\n orderCol += `<td class=\"order order-col index-${j}\">${column.letter}</td>`;\n if (!column.width) {\n sheetWidth += CELL_WIDTH;\n colsSpan[j] = CELL_WIDTH;\n } else {\n const curCellWidth = (column.width * CELL_WIDTH) / curDefaultColWidth;\n colsSpan[j] = curCellWidth;\n sheetWidth += curCellWidth;\n colStyles += `.${TBODY_CLS} td.index-${j} { width: ${curCellWidth}px; }`;\n }\n }\n return {\n sheetWidth,\n orderCol,\n colStyles,\n colsSpan,\n };\n}\n\ninterface RowsMap {\n [key: string]: Row;\n}\nexport default async function genSheet(workSheet: Worksheet) {\n const positionMap: RowsAndColsSpanMap = {\n rows: [],\n cols: [],\n };\n // generate rows.\n const rows: RowsMap = {};\n workSheet.eachRow((row, rowNumber) => {\n rows[rowNumber] = row;\n });\n const lastRow = (workSheet.lastRow && workSheet.lastRow.number) || 0;\n const maxRow = Math.max(lastRow, MINIMUM_NUMBER_ROWS);\n const lastColumn = (workSheet.lastColumn && workSheet.lastColumn.number) || 0;\n const maxCol = Math.max(lastColumn, MINIMUM_NUMBER_COLS);\n\n const { resultRows, rowsSpan } = genRows(rows, maxRow, maxCol, workSheet);\n positionMap.rows = [FIRST_ORDER_ROW_HEIGHT, ...rowsSpan];\n const { sheetWidth, orderCol, colStyles, colsSpan } = genOrderCols(\n maxCol,\n workSheet\n );\n positionMap.cols = [FIRST_ORDER_COL_WIDTH, ...colsSpan];\n\n const hideGridLines = workSheet.views.some((view) => !view.showGridLines);\n const gridLineStyle = hideGridLines\n ? `.${TBODY_CLS}.${TBODY_CLS} td:not(.order) { border: none; }`\n : \"\";\n\n let result = wrapTable(orderCol + resultRows);\n const tableStyle = `.${TABLE_CLS} { width: ${sheetWidth}px; } ${gridLineStyle}`;\n const imgHtml = await genImageHtml(workSheet, positionMap);\n result += imgHtml;\n result += `<style>${tableStyle}${colStyles}</style>`;\n result += genBaseCSS();\n return result;\n}\n","import {\r\n SHEET_TOGGLE_BTN_CLS,\r\n SHEET_TOGGLE_BTN_X,\r\n TABLE_BORDER_COLOR,\r\n CELL_HEIGHT,\r\n CELL_WIDTH,\r\n SHEET_CLS,\r\n TABLE_CLS,\r\n TBODY_CLS,\r\n UUID,\r\n EXCEL_SHEETS_CLS,\r\n ORDER_CELL_BACKGROUND,\r\n SHEET_TOGGLE_BAR_CLS,\r\n SHEET_LOCATE_BTN_X,\r\n SHEET_LOCATE_BTN_CLS,\r\n} from \"../constants/base\";\r\n\r\nexport function genBaseCSS(): string {\r\n const base = `\r\n <style>\r\n .embed-body-${UUID} { margin: 0; padding: 0; }\r\n .${TABLE_CLS} { border-collapse: collapse; table-layout: fixed; }\r\n .${TBODY_CLS} { border-right: 1px solid ${TABLE_BORDER_COLOR}; border-bottom: 1px solid ${TABLE_BORDER_COLOR}; }\r\n .${TBODY_CLS} td { border-left: 1px solid ${TABLE_BORDER_COLOR}; border-top: 1px solid ${TABLE_BORDER_COLOR}; width: ${CELL_WIDTH}px; height: ${CELL_HEIGHT}px; text-overflow: ellipsis; overflow: hidden; }\r\n .${TBODY_CLS} td.order { color: #333; text-align: center; background: ${ORDER_CELL_BACKGROUND}; }\r\n .${TBODY_CLS} td.order-row { width: 32px; }\r\n </style>`;\r\n return base;\r\n}\r\n\r\nexport function genToggleSheetCSS(): string {\r\n return `\r\n <style>\r\n body { margin-bottom: 0; }\r\n .${EXCEL_SHEETS_CLS} { position: relative; }\r\n .${SHEET_CLS} { display: none; width: 100%; height: calc(100% - 30px); }\r\n .${SHEET_CLS}.active { display: block; }\r\n .${SHEET_TOGGLE_BAR_CLS} { position: fixed; left: 0px; bottom: 0px; width: 100%; display: flex; }\r\n .${SHEET_LOCATE_BTN_X} { display: flex; algin-items: center; margin-right: 1px; }\r\n .${SHEET_LOCATE_BTN_CLS} { height: 30px; border: none; }\r\n .${SHEET_LOCATE_BTN_CLS}:active { background: #fff; }\r\n .${SHEET_TOGGLE_BTN_X} { position: relative; flex: 1; overflow: hidden; white-space: nowrap; }\r\n .${SHEET_TOGGLE_BTN_CLS} { height: 30px; padding: 0 15px; border: none; box-shadow: 1px 0 2px #ccc; }\r\n .${SHEET_TOGGLE_BTN_CLS}.active { border-bottom: 2px solid; background: #fff; }\r\n </style>`;\r\n}\r\n","import { Workbook } from \"exceljs\";\r\nimport { setMinimumNumberCols, setMinimumNumberRows } from \"./constants/base\";\r\nimport { sheetsInAll } from \"./htmls/genHtmlStructure\";\r\nimport genSheet from \"./htmls/genSheet\";\r\nimport { XlsxData, XlsxOptions } from \"./types\";\r\n\r\nexport async function xlsx2Html(data: XlsxData, options?: XlsxOptions) {\r\n if (options?.minimumRows) {\r\n setMinimumNumberRows(options.minimumRows);\r\n }\r\n if (options?.minimumCols) {\r\n setMinimumNumberCols(options.minimumCols);\r\n }\r\n let buffer: ArrayBuffer;\r\n if (data instanceof Blob) {\r\n buffer = await data.arrayBuffer();\r\n } else if (data instanceof ArrayBuffer) {\r\n buffer = data;\r\n } else {\r\n throw \"xlsx2Html(data, options): The parameter data can only be passed ArrayBuffer, Blob or File type\";\r\n }\r\n const workbook = new Workbook();\r\n await workbook.xlsx.load(buffer);\r\n const sheetsLen = workbook.worksheets.length;\r\n const sheets: string[] = [];\r\n for (let idx = 0; idx < sheetsLen; idx++) {\r\n const result = await genSheet(workbook.worksheets[idx]);\r\n sheets.push(result);\r\n }\r\n // Separate sheets.\r\n if (options?.separateSheets === true) {\r\n if (options.output === \"arrayBuffer\") {\r\n const all = sheets.map((sheet) => toBuffer(sheet));\r\n return all;\r\n }\r\n return sheets;\r\n }\r\n const result = sheetsInAll(sheets, workbook.worksheets);\r\n // Output ArrayBuffer\r\n if (options?.output === \"arrayBuffer\") {\r\n return toBuffer(result);\r\n }\r\n return result;\r\n}\r\n\r\nfunction toBuffer(data: string) {\r\n const blob = new Blob([data], { type: \"text/html\" });\r\n return blob.arrayBuffer();\r\n}\r\n\r\nexport default {\r\n xlsx2Html\r\n}"],"names":["root","factory","exports","module","require","define","amd","self","__WEBPACK_EXTERNAL_MODULE__674__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","d","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","toAndJoinHex","range","result","v","to16","toString","length","UUID","view","crypto","getRandomValues","Uint8Array","front","slice","end","uuid","EXCEL_SHEETS_CLS","TABLE_CLS","TBODY_CLS","SHEET_CLS","SHEET_TOGGLE_BAR_CLS","SHEET_LOCATE_BTN_X","SHEET_LOCATE_BTN_CLS","SHEET_TOGGLE_BTN_X","SHEET_TOGGLE_BTN_CLS","MINIMUM_NUMBER_ROWS","MINIMUM_NUMBER_COLS","toggleBtnEventBind","calcOffset","setActiveByIndex","locateBtnEventBind","EMPTY_ROW_CACHE","genEmptyRow","columns","orderCell","cells","i","calcImgPosAndSize","positionMap","rows","cols","tl","br","offsetLeft","col","nativeCol","Math","ceil","offsetTop","row","nativeRow","baseLeft","k","baseTop","left","top","offsetRight","offsetBottom","baseRight","baseBottom","width","height","regulateImgPosAndSize","res","nativeColOff","leftOffset","genFont","font","styles","bold","italic","family","name","size","underline","color","argb","genColor","a","g","b","push","substr","map","parseInt","parseARGB","genCell","cell","colRowData","isMerged","master","fullAddress","nextCell","nextRow","worksheet","findCell","nextCol","cellSpan","computedCellSpan","text","type","ValueType","hyperlink","genHyperLink","richText","rich","genRichText","numFmt","toFixed","genForMulaValue","genDate","genCellTextByType","cellAttrs","curCellStyle","alignment","horizontal","vertical","indent","readingOrder","genAlignment","fill","fgColor","bgColor","genFill","genSheet","workSheet","eachRow","rowNumber","lastRow","number","maxRow","max","lastColumn","maxCol","resultRows","rowsSpan","index","rowHeight","cellsResult","j","curCell","rowAttrs","genRows","sheetWidth","orderCol","colStyles","colsSpan","curDefaultColWidth","properties","defaultColWidth","column","getColumn","letter","curCellWidth","genOrderCols","gridLineStyle","views","some","showGridLines","tableStyle","imgHtml","images","getImages","imageHtml","img","pos","imgData","workbook","getImage","imageId","extension","base64","buffer","URL","createObjectURL","Blob","genImageHtml","xlsx2Html","data","options","count","minimumRows","console","warn","minimumCols","setMinimumNumberCols","arrayBuffer","ArrayBuffer","Workbook","xlsx","load","sheetsLen","worksheets","sheets","idx","separateSheets","output","sheet","toBuffer","html","buttons","MIME_TYPE","url","active","sheetsInAll"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"xlsxPreview.umd.js","mappings":"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","sources":["webpack://xlsxPreview/webpack/universalModuleDefinition","webpack://xlsxPreview/external umd \"exceljs\"","webpack://xlsxPreview/webpack/bootstrap","webpack://xlsxPreview/webpack/runtime/define property getters","webpack://xlsxPreview/webpack/runtime/hasOwnProperty shorthand","webpack://xlsxPreview/webpack/runtime/make namespace object","webpack://xlsxPreview/./src/utils.ts","webpack://xlsxPreview/./src/constants/base.ts","webpack://xlsxPreview/./src/htmls/genScripts.ts","webpack://xlsxPreview/./src/htmls/genHtmlStructure.ts","webpack://xlsxPreview/./src/images/genImages.ts","webpack://xlsxPreview/./src/CSSStyles/inline.ts","webpack://xlsxPreview/./src/htmls/genCell.ts","webpack://xlsxPreview/./src/htmls/genText.ts","webpack://xlsxPreview/./src/htmls/genSheet.ts","webpack://xlsxPreview/./src/CSSStyles/base.ts","webpack://xlsxPreview/./src/index.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"exceljs\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"exceljs\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"xlsxPreview\"] = factory(require(\"exceljs\"));\n\telse\n\t\troot[\"xlsxPreview\"] = factory(root[\"exceljs\"]);\n})(globalThis, function(__WEBPACK_EXTERNAL_MODULE__674__) {\nreturn ","module.exports = __WEBPACK_EXTERNAL_MODULE__674__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export function parseARGB(argb: string) {\r\n if (argb.length !== 8) throw \"This is not a standard argb string.\";\r\n const color: string[] = [];\r\n for (let i = 0; i < 4; i++) {\r\n color.push(argb.substr(i * 2, 2));\r\n }\r\n const [a, r, g, b] = color.map((v) => parseInt(v, 16));\r\n return { a, r, g, b };\r\n}\r\n\r\nfunction toAndJoinHex(range: Uint8Array): string {\r\n let result: string = \"\";\r\n for (const v of range) {\r\n let to16 = v.toString(16);\r\n while (to16.length < 2) {\r\n to16 = \"0\" + to16;\r\n }\r\n result += to16;\r\n }\r\n return result;\r\n}\r\n\r\nexport function uuid() {\r\n const view = crypto.getRandomValues(new Uint8Array(8));\r\n const front = view.slice(0, 4);\r\n const end = view.slice(4);\r\n const fontPart = toAndJoinHex(front);\r\n const endPart = toAndJoinHex(end);\r\n return `${fontPart}-${endPart}`;\r\n}\r\n","import { uuid } from \"../utils\";\r\n\r\nexport const UUID = uuid();\r\n\r\nexport const EXCEL_SHEETS_CLS = `excel-sheets-${UUID}`;\r\n\r\nexport const TABLE_CLS = `table-${UUID}`;\r\nexport const TBODY_CLS = `tbody-${UUID}`;\r\nexport const SHEET_CLS = `sheet-${UUID}`;\r\nexport const SHEET_TOGGLE_BAR_CLS = `sheet-toggle-bar-${UUID}`;\r\nexport const SHEET_LOCATE_BTN_X = `locate-btns-x-${UUID}`;\r\nexport const SHEET_LOCATE_BTN_CLS = `l-btn-${UUID}`;\r\nexport const SHEET_TOGGLE_BTN_X = `toggle-btns-x-${UUID}`;\r\nexport const SHEET_TOGGLE_BTN_CLS = `t-btn-${UUID}`;\r\n\r\nexport const CELL_HEIGHT = 24;\r\nexport const CELL_WIDTH = 72;\r\nexport const TABLE_BORDER_COLOR = \"#f0f0f0\";\r\nexport const ORDER_CELL_BACKGROUND = \"#b6d9fb\";\r\n\r\nexport const FIRST_ORDER_ROW_HEIGHT = 24;\r\nexport const FIRST_ORDER_COL_WIDTH = 32;\r\n\r\nconst DEFAULT_NUMBER_ROWS = 20;\r\nconst DEFAULT_NUMBER_COLS = 16;\r\nexport let MINIMUM_NUMBER_ROWS = DEFAULT_NUMBER_ROWS;\r\nexport let MINIMUM_NUMBER_COLS = DEFAULT_NUMBER_COLS;\r\n\r\nexport function setMinimumNumberRows(count: number) {\r\n if (count < DEFAULT_NUMBER_ROWS) {\r\n console.warn(\"setMinimumNumberRows: count less then DEFAULT_NUMBER_ROWS.\");\r\n }\r\n MINIMUM_NUMBER_ROWS = count;\r\n}\r\n\r\nexport function setMinimumNumberCols(count: number) {\r\n if (count < DEFAULT_NUMBER_COLS) {\r\n console.warn(\"setMinimumNumberCols: count less then DEFAULT_NUMBER_COLS.\");\r\n }\r\n MINIMUM_NUMBER_COLS = count;\r\n}\r\n","import {\n SHEET_CLS,\n SHEET_LOCATE_BTN_CLS,\n SHEET_LOCATE_BTN_X,\n SHEET_TOGGLE_BTN_CLS,\n SHEET_TOGGLE_BTN_X,\n UUID,\n} from \"constants/base\";\n\nconst toggleBtnEventBind = `\nfunction toggleBtnEventBind() {\n document.querySelector('.${SHEET_TOGGLE_BTN_X}').addEventListener('click',e => {\n const target = e.target;\n if(target.classList.contains('${SHEET_TOGGLE_BTN_CLS}')) {\n const index = target.dataset.index;\n setActiveByIndex(index);\n }\n })\n}\n`;\n\nconst calcOffset = `\nconst sheetBtnOffsetMap = (function calcSheetToggleBtnOffset() {\n const result = [];\n const btns = document.querySelectorAll(\".${SHEET_TOGGLE_BTN_CLS}\");\n btns.forEach((ele, idx) => {\n result[idx] = ele.offsetLeft;\n });\n return result;\n})();\n`;\n\nconst setActiveByIndex = `\nfunction setActiveByIndex(index) {\n document.querySelector('.${SHEET_TOGGLE_BTN_CLS}.active').classList.remove('active');\n document.querySelector('.${SHEET_CLS}.active').classList.remove('active');\n document.querySelector('.${SHEET_TOGGLE_BTN_CLS}[data-index=\"' + index + '\"]').classList.add(\"active\");\n document.querySelector('.${SHEET_CLS}[data-index=\"' + index + '\"]').classList.add(\"active\");\n}\n`;\n\nconst toPrevOffsetIndex = `\nfunction toPrevOffsetIndex(toggleBtnX) {\n if (offsetIndex === 0) return;\n const scrollLeft = toggleBtnX.scrollLeft;\n const scrollWidth = toggleBtnX.scrollWidth;\n const offsetWidth = toggleBtnX.offsetWidth;\n const maxOffset = scrollWidth - offsetWidth;\n let idx = offsetIndex - 1;\n while (idx >= 0) {\n let cur = sheetBtnOffsetMap[idx];\n if (cur < maxOffset) {\n toggleBtnX.scrollTo({ left: cur });\n offsetIndex = idx;\n break;\n }\n idx--;\n }\n}\n`;\n\nconst locateBtnEventBind = `\nlet offsetIndex = 0;\nfunction locateBtnEventBind() {\n document.querySelector('.${SHEET_LOCATE_BTN_X}').addEventListener('click', e => {\n const target = e.target;\n if (target.classList.contains('${SHEET_LOCATE_BTN_CLS}')) {\n const toggleBtnX = document.querySelector('.${SHEET_TOGGLE_BTN_X}');\n switch (target.id) {\n case 'first-${UUID}':\n toggleBtnX.scrollTo({ left: 0 });\n offsetIndex = 0;\n break;\n case 'last-${UUID}':\n toggleBtnX.scrollTo({ left: sheetBtnOffsetMap[sheetBtnOffsetMap.length - 1] })\n offsetIndex = sheetBtnOffsetMap.length - 1;\n break;\n case 'prev-${UUID}':\n toPrevOffsetIndex(toggleBtnX);\n break;\n case 'next-${UUID}':\n if (offsetIndex === sheetBtnOffsetMap.length - 1) return;\n toggleBtnX.scrollTo({ left: sheetBtnOffsetMap[++offsetIndex] });\n break;\n default:\n break;\n }\n }\n })\n}\n`;\nexport default function genScripts() {\n const scripts = `\n <script>\n ${toggleBtnEventBind}\n ${calcOffset}\n ${setActiveByIndex}\n ${toPrevOffsetIndex}\n ${locateBtnEventBind}\n window.onload = function() {\n toggleBtnEventBind();\n locateBtnEventBind();\n }\n </script>`;\n return scripts;\n}\n","import { Worksheet } from \"exceljs\";\r\nimport {\r\n SHEET_TOGGLE_BTN_CLS,\r\n SHEET_TOGGLE_BTN_X,\r\n SHEET_CLS,\r\n TABLE_CLS,\r\n TBODY_CLS,\r\n UUID,\r\n EXCEL_SHEETS_CLS,\r\n SHEET_LOCATE_BTN_X,\r\n SHEET_LOCATE_BTN_CLS,\r\n SHEET_TOGGLE_BAR_CLS,\r\n} from \"../constants/base\";\r\nimport { genToggleSheetCSS } from \"../CSSStyles/base\";\r\nimport genScripts from \"./genScripts\";\r\n\r\nconst EMPTY_ROW_CACHE: { [key: number]: string } = {};\r\nexport function genEmptyRow(columns: number, orderCell: string): string {\r\n if (EMPTY_ROW_CACHE[columns])\r\n return `<tr>${orderCell}${EMPTY_ROW_CACHE[columns]}</tr>`;\r\n let cells = \"\";\r\n for (let i = 1; i <= columns; i++) {\r\n cells += `<td></td>`;\r\n }\r\n EMPTY_ROW_CACHE[columns] = cells;\r\n return `<tr>${orderCell}${cells}</tr>`;\r\n}\r\n\r\nexport function wrapTable(html: string): string {\r\n return `<body class=\"embed-body-${UUID}\">\r\n <table class=\"${TABLE_CLS}\">\r\n <tbody class=\"${TBODY_CLS}\">${html}</tbody>\r\n </table>\r\n </body>`;\r\n}\r\n\r\nexport function sheetsInAll(sheets: string[], workSheet: Worksheet[]) {\r\n let html = \"\";\r\n let buttons = \"\";\r\n for (let i = 0; i < sheets.length; i++) {\r\n const MIME_TYPE = \"text/html\";\r\n const url = URL.createObjectURL(new Blob([sheets[i]], { type: MIME_TYPE }));\r\n const active = i === 0 ? \" active\" : \"\";\r\n html += `<object class=\"${SHEET_CLS}${active}\" data-index=\"${i}\" type=\"${MIME_TYPE}\" data=\"${url}\"></object>`;\r\n buttons += `<button class=\"${SHEET_TOGGLE_BTN_CLS}${active}\" data-index=\"${i}\">${workSheet[i].name}</button>`;\r\n }\r\n const locateBtns = `<div class=\"${SHEET_LOCATE_BTN_X}\">\r\n <button class=\"${SHEET_LOCATE_BTN_CLS}\" id=\"first-${UUID}\">⇤</button>\r\n <button class=\"${SHEET_LOCATE_BTN_CLS}\" id=\"prev-${UUID}\">←</button>\r\n <button class=\"${SHEET_LOCATE_BTN_CLS}\" id=\"next-${UUID}\">→</button>\r\n <button class=\"${SHEET_LOCATE_BTN_CLS}\" id=\"last-${UUID}\">⇥</button>\r\n </div>`;\r\n const toggleBtns = `<div class=\"${SHEET_TOGGLE_BTN_X}\">${buttons}</div>`;\r\n html += `<div class=\"${SHEET_TOGGLE_BAR_CLS}\">${locateBtns}${toggleBtns}</div>`;\r\n html += `${genToggleSheetCSS()}${genScripts()}`;\r\n return `<div class=\"${EXCEL_SHEETS_CLS}\">${html}</div>`;\r\n}\r\n","import { ImageRange, Worksheet } from \"exceljs\";\r\nimport { ImagePosAndSize, RowsAndColsSpanMap } from \"../types/table\";\r\n\r\nfunction calcImgPosAndSize(\r\n range: ImageRange,\r\n positionMap: RowsAndColsSpanMap\r\n): ImagePosAndSize {\r\n const { rows, cols } = positionMap;\r\n const { tl, br } = range;\r\n const offsetLeft = (tl.col - tl.nativeCol) * cols[Math.ceil(tl.col)];\r\n const offsetTop = (tl.row - tl.nativeRow) * rows[Math.ceil(tl.row)];\r\n let baseLeft = 0;\r\n for (let k = tl.nativeCol; k >= 0; k--) {\r\n baseLeft += cols[k];\r\n }\r\n let baseTop = 0;\r\n for (let k = tl.nativeRow; k >= 0; k--) {\r\n baseTop += rows[k];\r\n }\r\n const left = baseLeft + offsetLeft;\r\n const top = baseTop + offsetTop;\r\n\r\n const offsetRight = (br.col - br.nativeCol) * cols[Math.ceil(br.col)];\r\n const offsetBottom = (br.col - br.nativeCol) * rows[Math.ceil(br.row)];\r\n let baseRight = 0;\r\n for (let k = br.nativeCol; k >= 0; k--) {\r\n baseRight += cols[k];\r\n }\r\n let baseBottom = 0;\r\n for (let k = br.nativeRow; k >= 0; k--) {\r\n baseBottom += rows[k];\r\n }\r\n const width = baseRight + offsetRight - left;\r\n const height = baseBottom + offsetBottom - top;\r\n return {\r\n left,\r\n top,\r\n width,\r\n height,\r\n };\r\n}\r\n\r\nfunction regulateImgPosAndSize(\r\n res: ImagePosAndSize,\r\n range: ImageRange,\r\n positionMap: RowsAndColsSpanMap\r\n): ImagePosAndSize {\r\n if (res.width) return res;\r\n const { cols } = positionMap;\r\n const { tl, br } = range;\r\n const width = (br.nativeColOff - tl.nativeColOff) / 10000;\r\n const leftOffset = tl.nativeColOff / 10000;\r\n\r\n let baseLeft = 0;\r\n for (let k = tl.nativeCol; k >= 0; k--) {\r\n baseLeft += cols[k];\r\n }\r\n const left = baseLeft + leftOffset;\r\n return {\r\n ...res,\r\n left,\r\n width,\r\n };\r\n}\r\n\r\nexport async function genImageHtml(\r\n workSheet: Worksheet,\r\n positionMap: RowsAndColsSpanMap\r\n): Promise<string> {\r\n const images = workSheet.getImages();\r\n let imageHtml = \"\";\r\n for (const img of images) {\r\n let pos = calcImgPosAndSize(img.range, positionMap);\r\n const { left, top, width, height } = regulateImgPosAndSize(\r\n pos,\r\n img.range,\r\n positionMap\r\n );\r\n const styles = `position: absolute; left: ${left}px; top: ${top}px; width: ${width}px; height: ${height}px;`;\r\n const imgData = workSheet.workbook.getImage(img.imageId as any as number);\r\n const type = `image/${imgData.extension}`;\r\n if (imgData.base64) {\r\n imageHtml += `<img src=\"${imgData.base64}\" style=\"${styles}\" />`;\r\n } else if (imgData.buffer) {\r\n const url = URL.createObjectURL(new Blob([imgData.buffer], { type }));\r\n imageHtml += `<object type=\"${type}\" data=\"${url}\" style=\"${styles}\"></object>`;\r\n }\r\n }\r\n return imageHtml;\r\n}\r\n","import { Alignment, Fill, Font } from \"exceljs\";\r\nimport { parseARGB } from \"../utils\";\r\n\r\nexport function genAlignment(alignment: Partial<Alignment>): string {\r\n let styles = \"\";\r\n const { horizontal, vertical, indent, readingOrder } = alignment;\r\n if (horizontal) styles += `text-align: ${horizontal};`;\r\n if (vertical) styles += `vertical-align: ${vertical};`;\r\n if (indent) styles += `text-indent: ${indent};`;\r\n if (readingOrder) styles += `direction: ${readingOrder};`;\r\n return styles;\r\n}\r\n\r\nexport function genFont(font: Partial<Font>): string {\r\n let styles = \"\";\r\n const { bold, italic, family, name, size, underline, color } = font;\r\n if (bold) styles += \"font-weight: bold;\";\r\n if (italic) styles += \"font-style: italic;\";\r\n if (family) styles += `font-family: ${name};`;\r\n if (size) styles += `font-size: ${size}px;`;\r\n if (underline) styles += \"text-decoration: underline;\";\r\n if (color && color.argb) styles += `color: ${genColor(color.argb)};`;\r\n return styles;\r\n}\r\n\r\nexport function genFill(fill: Fill): string {\r\n const { type } = fill;\r\n if (type === \"pattern\") {\r\n const { fgColor, bgColor } = fill;\r\n if (fgColor && fgColor.argb) {\r\n const color = genColor(fgColor.argb);\r\n return `background-color: ${color};`;\r\n } else if (bgColor && bgColor.argb) {\r\n const color = genColor(bgColor.argb);\r\n return `background-color: ${color};`;\r\n }\r\n }\r\n return \"\";\r\n}\r\n\r\nexport function genColor(argb: string) {\r\n const { a, r, g, b } = parseARGB(argb);\r\n return `rgba(${r},${g},${b},${a / 255})`;\r\n}\r\n","import {\n Cell,\n CellHyperlinkValue,\n CellRichTextValue,\n ValueType,\n} from \"exceljs\";\nimport { genAlignment, genFill, genFont } from \"../CSSStyles/inline\";\nimport { CellSpan } from \"../types/table\";\nimport { genDate, genForMulaValue, genHyperLink, genRichText } from \"./genText\";\n\nfunction genCellTextByType(cell: Cell): string {\n const { type, value } = cell;\n switch (type) {\n case ValueType.Null:\n return '';\n case ValueType.Hyperlink:\n return genHyperLink(value as CellHyperlinkValue);\n case ValueType.RichText:\n return genRichText(value as CellRichTextValue);\n case ValueType.Formula:\n return genForMulaValue(cell);\n case ValueType.Date:\n return genDate(value as Date);\n default:\n return (value as string) || \"\";\n }\n}\n\nfunction computedCellSpan(cell: Cell) {\n if (!cell.isMerged || cell.master !== cell) return null;\n const { row, col } = cell.fullAddress;\n // find the next merged cell\n let nextRow = row + 1;\n let nextCell: Cell | undefined;\n do {\n nextCell = cell.worksheet.findCell(nextRow++, col);\n } while (nextCell && nextCell.master === cell);\n let nextCol = col + 1;\n nextCell = undefined;\n do {\n nextCell = cell.worksheet.findCell(row, nextCol++);\n } while (nextCell && nextCell.master === cell);\n const cellSpan: CellSpan = {};\n if (nextRow - row > 1) {\n cellSpan.row = nextRow - row - 1;\n }\n if (nextCol - col > 1) {\n cellSpan.col = nextCol - col - 1;\n }\n return cellSpan;\n}\n\nexport function genCell(cell: Cell) {\n let colRowData: CellSpan | null = null;\n if (cell.isMerged) {\n // If cell is merged and it isn't the master.\n if (cell.master !== cell) return \"\";\n colRowData = computedCellSpan(cell);\n }\n let text = genCellTextByType(cell);\n let cellAttrs = \"\";\n if (colRowData) {\n if (colRowData.col) cellAttrs += ` colspan=\"${colRowData.col}\"`;\n if (colRowData.row) cellAttrs += ` rowspan=\"${colRowData.row}\"`;\n }\n let curCellStyle = \"\";\n if (cell.font) curCellStyle += genFont(cell.font);\n if (cell.alignment) curCellStyle += genAlignment(cell.alignment);\n if (cell.fill) curCellStyle += genFill(cell.fill);\n if (curCellStyle) cellAttrs += ` style=\"${curCellStyle}\"`;\n return `<td${cellAttrs}>${text}</td>`;\n}\n","import { Cell, CellHyperlinkValue, CellRichTextValue } from \"exceljs\";\nimport { genFont } from \"../CSSStyles/inline\";\n\nexport function genHyperLink(value: CellHyperlinkValue): string {\n return `<a href=\"${value.hyperlink}\" target=\"_blank\">${value.text}</a>`;\n}\n\nexport function genRichText(value: CellRichTextValue): string {\n const richText = (value as CellRichTextValue).richText;\n let text = \"\";\n for (const rich of richText) {\n let styles = \"\";\n if (rich.font) {\n styles = genFont(rich.font);\n }\n if (styles) {\n text += `<span style=\"${styles}\">${rich.text}</span>`;\n } else {\n text += `<span>${rich.text}</span>`;\n }\n }\n return text;\n}\n\nexport function genForMulaValue(cell: Cell): string {\n if (cell.numFmt === \"0.00%\") {\n return ((cell.result as number) * 100).toFixed(2) + \"%\";\n } else {\n return cell.result as string || \"\";\n }\n}\n\nexport function genDate(value: Date): string {\n return value.toString();\n}\n","import { Row, Worksheet } from \"exceljs\";\nimport {\n CELL_HEIGHT,\n CELL_WIDTH,\n FIRST_ORDER_COL_WIDTH,\n FIRST_ORDER_ROW_HEIGHT,\n MINIMUM_NUMBER_COLS,\n MINIMUM_NUMBER_ROWS,\n TABLE_CLS,\n TBODY_CLS,\n} from \"../constants/base\";\nimport { genBaseCSS } from \"../CSSStyles/base\";\nimport { genImageHtml } from \"../images/genImages\";\nimport { RowsAndColsSpanMap } from \"../types/table\";\nimport { genCell } from \"./genCell\";\nimport { genEmptyRow, wrapTable } from \"./genHtmlStructure\";\n\nfunction genRows(\n rows: RowsMap,\n maxRow: number,\n maxCol: number,\n workSheet: Worksheet\n) {\n let resultRows = \"\";\n const rowsSpan: number[] = [];\n for (let index = 1; index <= maxRow; index++) {\n let result = \"\";\n const orderCell = `<td class=\"order order-row\">${index}</td>`;\n let rowHeight: number;\n // add default.\n if (!rows[index]) {\n rowHeight = CELL_HEIGHT;\n result += genEmptyRow(maxCol, orderCell);\n } else {\n // generate cells.\n const { height } = rows[index];\n let cellsResult = \"\";\n for (let j = 1; j <= maxCol; j++) {\n const curCell = workSheet.findCell(index, j);\n if (!curCell) {\n cellsResult += \"<td></td>\";\n } else {\n cellsResult += genCell(curCell);\n }\n }\n let rowAttrs = \"\";\n if (height) {\n rowAttrs += ` style=\"height:${height}px;\"`;\n rowHeight = height;\n } else {\n rowHeight = CELL_HEIGHT;\n }\n result += `<tr${rowAttrs}>${orderCell}${cellsResult}</tr>`;\n }\n\n resultRows += result;\n rowsSpan[index] = rowHeight;\n }\n return { resultRows, rowsSpan };\n}\n\nfunction genOrderCols(maxCol: number, workSheet: Worksheet) {\n const curDefaultColWidth = workSheet.properties.defaultColWidth || 9;\n let sheetWidth = 0;\n let orderCol = '<td class=\"order order-row\"></td>';\n let colStyles = \"\";\n const colsSpan: number[] = [];\n for (let j = 1; j <= maxCol; j++) {\n const column = workSheet.getColumn(j);\n orderCol += `<td class=\"order order-col index-${j}\">${column.letter}</td>`;\n if (!column.width) {\n sheetWidth += CELL_WIDTH;\n colsSpan[j] = CELL_WIDTH;\n } else {\n const curCellWidth = (column.width * CELL_WIDTH) / curDefaultColWidth;\n colsSpan[j] = curCellWidth;\n sheetWidth += curCellWidth;\n colStyles += `.${TBODY_CLS} td.index-${j} { width: ${curCellWidth}px; }`;\n }\n }\n return {\n sheetWidth,\n orderCol,\n colStyles,\n colsSpan,\n };\n}\n\ninterface RowsMap {\n [key: string]: Row;\n}\nexport default async function genSheet(workSheet: Worksheet) {\n const positionMap: RowsAndColsSpanMap = {\n rows: [],\n cols: [],\n };\n // generate rows.\n const rows: RowsMap = {};\n workSheet.eachRow((row, rowNumber) => {\n rows[rowNumber] = row;\n });\n const lastRow = (workSheet.lastRow && workSheet.lastRow.number) || 0;\n const maxRow = Math.max(lastRow, MINIMUM_NUMBER_ROWS);\n const lastColumn = (workSheet.lastColumn && workSheet.lastColumn.number) || 0;\n const maxCol = Math.max(lastColumn, MINIMUM_NUMBER_COLS);\n\n const { resultRows, rowsSpan } = genRows(rows, maxRow, maxCol, workSheet);\n positionMap.rows = [FIRST_ORDER_ROW_HEIGHT, ...rowsSpan];\n const { sheetWidth, orderCol, colStyles, colsSpan } = genOrderCols(\n maxCol,\n workSheet\n );\n positionMap.cols = [FIRST_ORDER_COL_WIDTH, ...colsSpan];\n\n const hideGridLines = workSheet.views.some((view) => !view.showGridLines);\n const gridLineStyle = hideGridLines\n ? `.${TBODY_CLS}.${TBODY_CLS} td:not(.order) { border: none; }`\n : \"\";\n\n let result = wrapTable(orderCol + resultRows);\n const tableStyle = `.${TABLE_CLS} { width: ${sheetWidth}px; } ${gridLineStyle}`;\n const imgHtml = await genImageHtml(workSheet, positionMap);\n result += imgHtml;\n result += `<style>${tableStyle}${colStyles}</style>`;\n result += genBaseCSS();\n return result;\n}\n","import {\r\n SHEET_TOGGLE_BTN_CLS,\r\n SHEET_TOGGLE_BTN_X,\r\n TABLE_BORDER_COLOR,\r\n CELL_HEIGHT,\r\n CELL_WIDTH,\r\n SHEET_CLS,\r\n TABLE_CLS,\r\n TBODY_CLS,\r\n UUID,\r\n EXCEL_SHEETS_CLS,\r\n ORDER_CELL_BACKGROUND,\r\n SHEET_TOGGLE_BAR_CLS,\r\n SHEET_LOCATE_BTN_X,\r\n SHEET_LOCATE_BTN_CLS,\r\n} from \"../constants/base\";\r\n\r\nexport function genBaseCSS(): string {\r\n const base = `\r\n <style>\r\n .embed-body-${UUID} { margin: 0; padding: 0; }\r\n .${TABLE_CLS} { border-collapse: collapse; table-layout: fixed; }\r\n .${TBODY_CLS} { border-right: 1px solid ${TABLE_BORDER_COLOR}; border-bottom: 1px solid ${TABLE_BORDER_COLOR}; }\r\n .${TBODY_CLS} td { border-left: 1px solid ${TABLE_BORDER_COLOR}; border-top: 1px solid ${TABLE_BORDER_COLOR}; width: ${CELL_WIDTH}px; height: ${CELL_HEIGHT}px; text-overflow: ellipsis; overflow: hidden; }\r\n .${TBODY_CLS} td.order { color: #333; text-align: center; background: ${ORDER_CELL_BACKGROUND}; }\r\n .${TBODY_CLS} td.order-row { width: 32px; }\r\n </style>`;\r\n return base;\r\n}\r\n\r\nexport function genToggleSheetCSS(): string {\r\n return `\r\n <style>\r\n body { margin-bottom: 0; }\r\n .${EXCEL_SHEETS_CLS} { position: relative; height: 100%; }\r\n .${SHEET_CLS} { display: none; width: 100%; height: calc(100% - 30px); }\r\n .${SHEET_CLS}.active { display: block; }\r\n .${SHEET_TOGGLE_BAR_CLS} { position: fixed; left: 0px; bottom: 0px; width: 100%; display: flex; }\r\n .${SHEET_LOCATE_BTN_X} { display: flex; algin-items: center; margin-right: 1px; }\r\n .${SHEET_LOCATE_BTN_CLS} { height: 30px; border: none; }\r\n .${SHEET_LOCATE_BTN_CLS}:active { background: #fff; }\r\n .${SHEET_TOGGLE_BTN_X} { position: relative; flex: 1; overflow: hidden; white-space: nowrap; }\r\n .${SHEET_TOGGLE_BTN_CLS} { height: 30px; padding: 0 15px; border: none; box-shadow: 1px 0 2px #ccc; }\r\n .${SHEET_TOGGLE_BTN_CLS}.active { border-bottom: 2px solid; background: #fff; }\r\n </style>`;\r\n}\r\n","import { Workbook } from \"exceljs\";\r\nimport { setMinimumNumberCols, setMinimumNumberRows } from \"./constants/base\";\r\nimport { sheetsInAll } from \"./htmls/genHtmlStructure\";\r\nimport genSheet from \"./htmls/genSheet\";\r\nimport { XlsxData, XlsxOptions } from \"./types\";\r\n\r\nexport async function xlsx2Html(data: XlsxData, options?: XlsxOptions) {\r\n if (options?.minimumRows) {\r\n setMinimumNumberRows(options.minimumRows);\r\n }\r\n if (options?.minimumCols) {\r\n setMinimumNumberCols(options.minimumCols);\r\n }\r\n let buffer: ArrayBuffer;\r\n if (data instanceof Blob) {\r\n buffer = await data.arrayBuffer();\r\n } else if (data instanceof ArrayBuffer) {\r\n buffer = data;\r\n } else {\r\n throw \"xlsx2Html(data, options): The parameter data can only be passed ArrayBuffer, Blob or File type\";\r\n }\r\n const workbook = new Workbook();\r\n await workbook.xlsx.load(buffer);\r\n const sheetsLen = workbook.worksheets.length;\r\n const sheets: string[] = [];\r\n for (let idx = 0; idx < sheetsLen; idx++) {\r\n const result = await genSheet(workbook.worksheets[idx]);\r\n sheets.push(result);\r\n }\r\n // Separate sheets.\r\n if (options?.separateSheets === true) {\r\n if (options.output === \"arrayBuffer\") {\r\n const all = sheets.map((sheet) => toBuffer(sheet));\r\n return all;\r\n }\r\n return sheets;\r\n }\r\n const result = sheetsInAll(sheets, workbook.worksheets);\r\n // Output ArrayBuffer\r\n if (options?.output === \"arrayBuffer\") {\r\n return toBuffer(result);\r\n }\r\n return result;\r\n}\r\n\r\nfunction toBuffer(data: string) {\r\n const blob = new Blob([data], { type: \"text/html\" });\r\n return blob.arrayBuffer();\r\n}\r\n\r\nexport default {\r\n xlsx2Html\r\n}"],"names":["root","factory","exports","module","require","define","amd","globalThis","__WEBPACK_EXTERNAL_MODULE__674__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","d","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","toAndJoinHex","range","result","v","to16","toString","length","UUID","view","crypto","getRandomValues","Uint8Array","front","slice","end","uuid","EXCEL_SHEETS_CLS","TABLE_CLS","TBODY_CLS","SHEET_CLS","SHEET_TOGGLE_BAR_CLS","SHEET_LOCATE_BTN_X","SHEET_LOCATE_BTN_CLS","SHEET_TOGGLE_BTN_X","SHEET_TOGGLE_BTN_CLS","MINIMUM_NUMBER_ROWS","MINIMUM_NUMBER_COLS","toggleBtnEventBind","calcOffset","setActiveByIndex","locateBtnEventBind","EMPTY_ROW_CACHE","genEmptyRow","columns","orderCell","cells","i","calcImgPosAndSize","positionMap","rows","cols","tl","br","offsetLeft","col","nativeCol","Math","ceil","offsetTop","row","nativeRow","baseLeft","k","baseTop","left","top","offsetRight","offsetBottom","baseRight","baseBottom","width","height","regulateImgPosAndSize","res","nativeColOff","leftOffset","genFont","font","styles","bold","italic","family","name","size","underline","color","argb","genColor","a","g","b","push","substr","map","parseInt","parseARGB","genCell","cell","colRowData","isMerged","master","fullAddress","nextCell","nextRow","worksheet","findCell","nextCol","cellSpan","computedCellSpan","text","type","ValueType","hyperlink","genHyperLink","richText","rich","genRichText","numFmt","toFixed","genForMulaValue","genDate","genCellTextByType","cellAttrs","curCellStyle","alignment","horizontal","vertical","indent","readingOrder","genAlignment","fill","fgColor","bgColor","genFill","genSheet","workSheet","eachRow","rowNumber","lastRow","number","maxRow","max","lastColumn","maxCol","resultRows","rowsSpan","index","rowHeight","cellsResult","j","curCell","rowAttrs","genRows","sheetWidth","orderCol","colStyles","colsSpan","curDefaultColWidth","properties","defaultColWidth","column","getColumn","letter","curCellWidth","genOrderCols","gridLineStyle","views","some","showGridLines","tableStyle","imgHtml","images","getImages","imageHtml","img","pos","imgData","workbook","getImage","imageId","extension","base64","buffer","URL","createObjectURL","Blob","genImageHtml","xlsx2Html","data","options","count","minimumRows","console","warn","minimumCols","setMinimumNumberCols","arrayBuffer","ArrayBuffer","Workbook","xlsx","load","sheetsLen","worksheets","sheets","idx","separateSheets","output","sheet","toBuffer","html","buttons","MIME_TYPE","url","active","sheetsInAll"],"sourceRoot":""}
|
package/package.json
CHANGED
package/src/CSSStyles/base.ts
CHANGED
|
@@ -32,7 +32,7 @@ export function genToggleSheetCSS(): string {
|
|
|
32
32
|
return `
|
|
33
33
|
<style>
|
|
34
34
|
body { margin-bottom: 0; }
|
|
35
|
-
.${EXCEL_SHEETS_CLS} { position: relative; }
|
|
35
|
+
.${EXCEL_SHEETS_CLS} { position: relative; height: 100%; }
|
|
36
36
|
.${SHEET_CLS} { display: none; width: 100%; height: calc(100% - 30px); }
|
|
37
37
|
.${SHEET_CLS}.active { display: block; }
|
|
38
38
|
.${SHEET_TOGGLE_BAR_CLS} { position: fixed; left: 0px; bottom: 0px; width: 100%; display: flex; }
|