UNPKG

vxe-pc-ui

Version:
1 lines 9.29 kB
Object.defineProperty(exports,"__esModule",{value:!0}),exports.assemblePageBreak=assemblePageBreak,exports.createPrintFrame=createPrintFrame,exports.destroyPageBreak=destroyPageBreak,exports.printHtml=void 0,exports.trimHtml=trimHtml;var _xeUtils=_interopRequireDefault(require("xe-utils")),_dom=require("../../ui/src/dom"),_log=require("../../ui/src/log");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let browseObj=_xeUtils.default.browse(),printFrame,defaultHtmlStyle='body{padding:0;font-family:"Microsoft YaHei",微软雅黑,"MicrosoftJhengHei",华文细黑,STHeiti,MingLiu}body *{-webkit-box-sizing:border-box;box-sizing:border-box}.vxe-table{border-collapse:collapse;text-align:left;border-spacing:0}.vxe-table:not(.is--print){table-layout:fixed}.vxe-table,.vxe-table th,.vxe-table td,.vxe-table td{border-color:#D0D0D0;border-style:solid;border-width:0}.vxe-table.is--print{width:100%}.border--default,.border--full,.border--outer{border-top-width:1px}.border--default,.border--full,.border--outer{border-left-width:1px}.border--outer,.border--default th,.border--default td,.border--full th,.border--full td,.border--outer th,.border--inner th,.border--inner td{border-bottom-width:1px}.border--default,.border--outer,.border--full th,.border--full td{border-right-width:1px}.border--default th,.border--full th,.border--outer th{background-color:#f8f8f9}.vxe-table td>div,.vxe-table th>div{padding:.5em .4em}.col--center{text-align:center}.col--right{text-align:right}.vxe-table:not(.is--print) .col--ellipsis>div{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-break:break-all}.vxe-table--tree-node{text-align:left}.vxe-table--tree-node-wrapper{position:relative}.vxe-table--tree-icon-wrapper{position:absolute;top:50%;width:1em;height:1em;text-align:center;-webkit-transform:translateY(-50%);transform:translateY(-50%);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer}.vxe-table--tree-unfold-icon,.vxe-table--tree-fold-icon{position:absolute;width:0;height:0;border-style:solid;border-width:.5em;border-right-color:transparent;border-bottom-color:transparent}.vxe-table--tree-unfold-icon{left:.3em;top:0;border-left-color:#939599;border-top-color:transparent}.vxe-table--tree-fold-icon{left:0;top:.3em;border-left-color:transparent;border-top-color:#939599}.vxe-table--tree-cell{display:block;padding-left:1.5em}.vxe-table input[type="checkbox"]{margin:0}.vxe-table input[type="checkbox"],.vxe-table input[type="radio"],.vxe-table input[type="checkbox"]+span,.vxe-table input[type="radio"]+span{vertical-align:middle;padding-left:0.4em}';function trimHtml(e){return(""+e).replace(/(<!---->)/,"")}function createPrintFrame(){var e=document.createElement("iframe");return e.className="vxe-table--print-frame",e}function appendPrintFrame(){printFrame.parentNode||document.body.appendChild(printFrame)}function afterPrintEvent(){requestAnimationFrame(removeFrame)}function removeFrame(){if(printFrame){if(printFrame.parentNode){try{printFrame.contentDocument.write("")}catch(e){}printFrame.parentNode.removeChild(printFrame)}printFrame=null}}function getExportBlobByString(e,t){return new Blob([e],{type:`text/${t};charset=utf-8;`})}let defaultPrintMargin=50,defaultFontColor="#000000";function parsePageStyle(e){var t,e=Object.assign({},e),r=Object.assign({},e.header),i=Object.assign({},e.title),a=Object.assign({},e.footer),n=Object.assign({},e.pageNumber);defaultPrintMargin;let o=defaultPrintMargin,l=defaultPrintMargin,s=defaultPrintMargin,d=defaultPrintMargin;return(_xeUtils.default.isNumber(e.margin)||_xeUtils.default.isString(e.margin))&&(t=e.margin,o=t,l=t,s=t,d=t),{marginTop:(0,_dom.toCssUnit)(e.marginTop||o),marginBottom:(0,_dom.toCssUnit)(e.marginBottom||l),marginLeft:(0,_dom.toCssUnit)(e.marginLeft||s),marginRight:(0,_dom.toCssUnit)(e.marginRight||d),fontSize:(0,_dom.toCssUnit)(e.fontSize),color:e.color,textAlign:e.textAlign,header:{height:(0,_dom.toCssUnit)(r.height),textAlign:r.textAlign},title:{color:i.color,fontSize:(0,_dom.toCssUnit)(i.fontSize),textAlign:i.textAlign},footer:{height:(0,_dom.toCssUnit)(a.height),textAlign:a.textAlign},pageNumber:{color:n.color,fontSize:(0,_dom.toCssUnit)(n.fontSize),textAlign:n.textAlign}}}function createCssLink(e){return e?e.map(e=>`<link rel="stylesheet" href="${e}">`).join("\n"):""}function createHtmlPage(e,t){var{pageStyle:r,customStyle:i,styleUrls:a}=e,r=parsePageStyle(r),n=r.header,o=r.title,l=r.header,s=r.pageNumber,d=e._pageBreaks||e.pageBreaks&&e.pageBreaks.length;return["<!DOCTYPE html><html>","<head>",'<meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no,minimal-ui">',`<title>${e.title||""}</title>`,createCssLink(a),`<style media="print">@page{size:auto;${d?"margin: 0mm;":""}}</style>`,`<style>body{font-size:${r.fontSize||"14px"};color:${r.color||defaultFontColor};text-align:${r.textAlign||"left"};}</style>`,"<style>",".vxe-print-slots{display:none;}",".vxe-print-page-break.align--center{text-align:center;}",".vxe-print-page-break.align--left{text-align:left;}",".vxe-print-page-break.align--right{text-align:right;}",".vxe-print-page-break{break-before:always;page-break-before:always;display:flex;flex-direction:column;height:100vh;overflow:hidden;}",".vxe-print-page-break--body{display:flex;flex-direction:row;flex-grow:1;overflow:hidden;}",".vxe-print-page-break--left,.vxe-print-page-break--right{flex-shrink:0;height:100%;}",`.vxe-print-page-break--left{width:${r.marginLeft};}`,`.vxe-print-page-break--right{width:${r.marginRight};}`,".vxe-print-page-break--header,.vxe-print-page-break--footer{display:flex;justify-content:center;flex-direction:column;flex-shrink:0;width:100%;}",`.vxe-print-page-break--header{height:${n.height||r.marginTop};padding:0 ${r.marginLeft} 0 ${r.marginRight};text-align:${n.textAlign||"left"};}`,`.vxe-print-page-break--header-title{font-size:${o.fontSize||"1.6em"};color:${o.color||defaultFontColor};text-align:${e.headerAlign||s.textAlign||"center"};}`,`.vxe-print-page-break--footer{height:${l.height||r.marginBottom};padding:0 ${r.marginLeft} 0 ${r.marginRight};text-align:${l.textAlign||"left"};}`,".vxe-print-page-break--content{flex-grow:1;overflow:hidden;}",`.vxe-print-page-break--footer-page-number{font-size:${s.fontSize||"1.2em"};color:${s.color||defaultFontColor};text-align:${e.footerAlign||s.textAlign||"center"};}`,"</style>","<style>.vxe-table{white-space:pre;}</style>",`<style>${defaultHtmlStyle}</style>`,d?"<style>body{margin:0;}</style>":"",i?`<style>${i}</style>`:"","</head>","<body>",""+t,"</body>","</html>"].join("")}function handlePrint(e,t=""){var{beforeMethod:r,styleUrls:i}=e;i&&i.length&&i.forEach(e=>{/.css$/.test(e)||(0,_log.warnLog)("vxe.error.errProp",[e,e+".css"])});let a=getExportBlobByString(t=createHtmlPage(e,t=r?r({content:t,html:t,options:e})||"":t),"html");return new Promise(r=>{var e;browseObj.msie?(removeFrame(),printFrame=createPrintFrame(),appendPrintFrame(),(e=printFrame.contentDocument)&&(e.write(t),e.execCommand("print")),setTimeout(()=>{r({status:!0})},300)):(printFrame||((printFrame=createPrintFrame()).onload=e=>{e=e.target;if(e.src)try{var t=e.contentWindow;t&&(t.onafterprint=afterPrintEvent,t.print())}catch(e){}r({status:!0})},printFrame.onerror=()=>{r({status:!1})}),appendPrintFrame(),printFrame.src=URL.createObjectURL(a))})}function createPageBreak(s){let{title:d,showPageNumber:g,align:p,headerAlign:m,footerAlign:c,showAllPageTitle:b}=s;var e=s.pageBreaks||[];let f=e.length;return e.map((e,t)=>{var r=e.bodyHtml,i=e.headerHtml||s.headerHtml,a=e.footerHtml||s.footerHtml,n=e.leftHtml||s.leftHtml,e=e.rightHtml||s.rightHtml,o=t+1,l={currentPage:o,pageCount:f};return[`<div class="${["vxe-print-page-break",p?"align--"+p:""].join(" ")}">`,`<div class="${["vxe-print-page-break--header",m?"align--"+m:""].join(" ")}">`,i?""+(_xeUtils.default.isFunction(i)?i(l):i||""):!d||!b&&t?"":`<div class="vxe-print-page-break--header-title">${d||""}</div>`,"</div>",'<div class="vxe-print-page-break--body">',`<div class="vxe-print-page-break--left">${_xeUtils.default.isFunction(n)?n(l):n||""}</div>`,`<div class="vxe-print-page-break--content">${_xeUtils.default.isFunction(r)?r(l):r||""}</div>`,`<div class="vxe-print-page-break--right">${_xeUtils.default.isFunction(e)?e(l):e||""}</div>`,"</div>",`<div class="${["vxe-print-page-break--footer",c?"align--"+c:""].join(" ")}">`,a?""+(_xeUtils.default.isFunction(a)?a(l):a||""):g?`<div class="vxe-print-page-break--footer-page-number">${o}/${f}</div>`:"","</div>","</div>"].join("")}).join("")}let printHtml=e=>{e=Object.assign({_pageBreaks:!1,customLayout:!0},e);return e.sheetName&&(e.title=e.title||e.sheetName),e.style&&(e.customStyle=e.customStyle||e.style),e.beforePrintMethod&&(e.beforeMethod=e.beforeMethod||e.beforePrintMethod),e.pageBreaks&&e.pageBreaks.length?handlePrint(e,createPageBreak(e)):handlePrint(e,e.html||e.content)};function assemblePageBreak(e,t,r){var i=e.reactData.staticPageBreaks,a=t.parentNode;a&&i&&(i.splice(_xeUtils.default.arrayIndexOf(a.children,t),0,r),e.reactData.staticPageBreaks=i.slice(0))}function destroyPageBreak(e,t){e.reactData.staticPageBreaks=e.reactData.staticPageBreaks.filter(e=>e.id!==t.id)}exports.printHtml=printHtml;