@agile-team/mach-report 2.1.0 → 2.2.0

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.
Files changed (43) hide show
  1. package/README.md +97 -12
  2. package/dist/ReportPreview-BWrQCj9M.js +1643 -0
  3. package/dist/ReportPreview-DY0PGGqF.cjs +6 -0
  4. package/dist/grid-geometry-DBH9ExuY.cjs +1 -0
  5. package/dist/grid-geometry-DONcjshk.js +130 -0
  6. package/dist/index.cjs +5 -5
  7. package/dist/index.d.cts +79 -11
  8. package/dist/index.d.ts +79 -11
  9. package/dist/index.js +1039 -712
  10. package/dist/page-window-index-CIuT4BAv.js +43 -0
  11. package/dist/page-window-index-DEjnM6IB.cjs +1 -0
  12. package/dist/pdf.cjs +46 -46
  13. package/dist/pdf.d.cts +4 -0
  14. package/dist/pdf.d.ts +4 -0
  15. package/dist/pdf.js +6 -6
  16. package/dist/{plugin-Bl00j_CP.cjs → plugin-BMoMUxrw.cjs} +1 -1
  17. package/dist/{plugin-DVScnZ4C.js → plugin-CAcNe0FT.js} +2 -2
  18. package/dist/report-params-B3Fia6JO.js +10 -0
  19. package/dist/report-params-D1gZ1DME.cjs +1 -0
  20. package/dist/style.css +1 -1
  21. package/dist/textwrap-DdaewxAd.js +117 -0
  22. package/dist/textwrap-DqiFwAV3.cjs +3 -0
  23. package/dist/vue/async.d.cts +53 -2
  24. package/dist/vue/async.d.ts +53 -2
  25. package/dist/vue/index.d.cts +65 -12
  26. package/dist/vue/index.d.ts +65 -12
  27. package/dist/vue-async.cjs +1 -1
  28. package/dist/vue-async.js +3 -3
  29. package/dist/vue.cjs +1 -1
  30. package/dist/vue.js +4 -4
  31. package/dist/xlsx.cjs +14 -14
  32. package/dist/xlsx.d.cts +8 -0
  33. package/dist/xlsx.d.ts +8 -0
  34. package/dist/xlsx.js +1087 -1053
  35. package/package.json +3 -2
  36. package/dist/ReportPreview-Dwdsyk9b.js +0 -1558
  37. package/dist/ReportPreview-VHAIfsz1.cjs +0 -6
  38. package/dist/grid-geometry-BXpOxznT.cjs +0 -1
  39. package/dist/grid-geometry-Bs8QXz1X.js +0 -65
  40. package/dist/report-params-BB85g7mg.js +0 -10
  41. package/dist/report-params-D1NeY-eR.cjs +0 -1
  42. package/dist/style-CFZ-HE2s.cjs +0 -3
  43. package/dist/style-DnmtG7Gl.js +0 -180
@@ -1,6 +0,0 @@
1
- "use strict";var Mt=Object.create;var Ue=Object.defineProperty;var Ft=Object.getOwnPropertyDescriptor;var Tt=Object.getOwnPropertyNames;var Dt=Object.getPrototypeOf,Nt=Object.prototype.hasOwnProperty;var Vt=(t,n,s,a)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of Tt(n))!Nt.call(t,r)&&r!==s&&Ue(t,r,{get:()=>n[r],enumerable:!(a=Ft(n,r))||a.enumerable});return t};var Ke=(t,n,s)=>(s=t!=null?Mt(Dt(t)):{},Vt(n||!t||!t.__esModule?Ue(s,"default",{value:t,enumerable:!0}):s,t));const e=require("vue"),oe=require("@agile-team/mach-report"),ie=require("./plugin-Bl00j_CP.cjs");function Ne(t){return t==null?[]:Array.isArray(t)?t.map(String).filter(n=>n!==""):String(t).split(",").map(n=>n.trim()).filter(n=>n!=="")}function Lt(t){return Ne(t).join(",")}class be extends Error{constructor(n){super(n),this.name="PlanLoadError"}}function Ot(t={}){const{baseUrl:n="",headers:s,credentials:a,timeoutMs:r=3e4}=t,o=n.replace(/\/+$/,"");return async({url:l,method:p,params:g,signal:f})=>{let c=`${o}${l}`;if(g&&Object.keys(g).length>0){const w=c.indexOf("#"),T=w>=0?c.slice(w):"",M=w>=0?c.slice(0,w):c,C=M.indexOf("?"),F=C>=0?M.slice(0,C):M,N=new URLSearchParams(C>=0?M.slice(C+1):"");for(const[I,H]of Object.entries(g))N.set(I,H);c=`${F}?${N}${T}`}const d=(w,T)=>{const M=new be(w);return Object.defineProperty(M,"cause",{value:T,configurable:!0,writable:!0}),M};if(f?.aborted)throw d(`请求已取消: ${l}`,f.reason);const v=new AbortController;let h;const $=()=>{v.signal.aborted||(h="external",v.abort(f?.reason))};f?.addEventListener("abort",$,{once:!0});const B=setTimeout(()=>{v.signal.aborted||(h="timeout",v.abort())},r);try{const w=await fetch(c,{method:p.toUpperCase(),headers:{Accept:"application/json",...s},credentials:a,signal:v.signal});if(!w.ok)throw new be(`HTTP ${w.status} ${l}`);return await w.json()}catch(w){throw h==="timeout"?d(`请求超时(${r}ms): ${l}`,w):h==="external"?d(`请求已取消: ${l}`,w):w instanceof be?w:d(`请求失败(${l}): ${w instanceof Error?w.message:String(w)}`,w)}finally{clearTimeout(B),f?.removeEventListener("abort",$)}}}function Je(t,n,s={}){const a=s.pxPerMm??3.7795275590551185,r=e.computed(()=>Math.max(0,e.unref(s.gapPx)??18)),o=e.ref(0),l=e.ref(800),p=e.computed(()=>(t.value?.pages??[]).map(v=>v.pageHeightMm*a)),g=e.computed(()=>{const v=t.value?.pages??[];let h=0,$=0;for(const B of v)h+=B.pageHeightMm*a+r.value,$=Math.max($,B.pageWidthMm*a);return{w:$,h}}),f=e.computed(()=>oe.computePageWindow({pageHeightsPx:p.value,viewportHeightPx:l.value/n.value,scrollTopPx:o.value/n.value,overscan:1,gapPx:r.value})),c=e.computed(()=>{const v=t.value;if(!v)return[];const{start:h,end:$}=f.value;return $<h?[]:v.pages.slice(h,$+1).map((B,w)=>({page:B,index:h+w}))});function d(v,h){let $=0;return B=>{$||($=requestAnimationFrame(()=>{if($=0,o.value=B.scrollTop,l.value=B.clientHeight||800,h.value<=0)return;const w=B.querySelectorAll(".mrp-page-holder");if(!w.length)return;const T=B.getBoundingClientRect().top+56;let M=1;w.forEach(C=>{C.getBoundingClientRect().top<=T&&(M=Number(C.dataset.page??1))}),v.value=Math.max(1,Math.min(h.value,M))}))}}return{contentSize:g,windowRange:f,visiblePages:c,makeScrollHandler:d,refreshViewport(v){v&&(l.value=v.clientHeight||800)}}}function Xe(t){const n=e.ref(1),s=e.ref("fit");function a(){requestAnimationFrame(()=>{const o=t();!o||!o.viewport||(n.value=Math.min(1,Math.max(.3,(o.viewport.clientWidth-48)/Math.max(1,o.pageWidthPx))))})}function r(o){o==="fit"?(s.value="fit",a()):(s.value="raw",n.value=o/100)}return{zoom:n,zoomMode:s,applyFitZoom:a,setZoom:r}}const Pe=8;function xe(){return new Promise(t=>setTimeout(t,0))}function we(t){return`p${Math.round(t.pageWidthMm)}x${Math.round(t.pageHeightMm)}`}function Ve(t){const n=new Map;return t.pages.forEach(r=>{n.has(we(r))||n.set(we(r),r)}),`<!doctype html><html><head><meta charset="utf-8"><style>${`.mr-page{margin:0 auto;page-break-after:always;}
2
- .mr-page tr{break-inside:avoid;page-break-inside:avoid;}
3
- .mr-comp{break-inside:avoid;page-break-inside:avoid;}
4
- ${[...n.values()].map(r=>`@page ${we(r)}{size:${Math.round(r.pageWidthMm)}mm ${Math.round(r.pageHeightMm)}mm;margin:0;}`).join(`
5
- `)}
6
- body{margin:0;background:#fff;}`}</style></head><body>`}function Le(t){const n=oe.renderPage(t,96,{},document);return n.style.page=we(t),n.outerHTML}function Oe(t){return{head:Ve(t),pageChunks:t.pages.map(Le)}}async function zt(t,n={}){const s={schemaVersion:"mach-report-batch-print",pages:t.flatMap(l=>l.pages)};if(s.pages.length===0)return;const a=Ve(s),r=document.createElement("iframe");r.style.cssText="position:fixed;right:0;bottom:0;width:0;height:0;border:0;visibility:hidden;",document.body.appendChild(r);let o=!1;try{const l=r.contentDocument;l.open(),l.write(a);for(let p=0;p<s.pages.length;p++)l.write(Le(s.pages[p])),p%Pe===Pe-1&&(n.onProgress?.(p+1,s.pages.length),await xe());l.write("</body></html>"),l.close(),await xe(),n.onProgress?.(s.pages.length,s.pages.length),o=!0,r.contentWindow?.focus(),r.contentWindow?.print()}catch(l){n.onError?.(l instanceof Error?`批量打印失败: ${l.message}`:"批量打印失败")}finally{o?setTimeout(()=>r.remove(),6e4):r.remove()}}function Qe(t){const{head:n,pageChunks:s}=Oe(t);return{html:`${`<!doctype html><html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40"><head><meta charset="utf-8"><!--[if gte mso 9]><xml><w:WordDocument><w:View>Print</w:View><w:Zoom>100</w:Zoom></w:WordDocument></xml><![endif]-->${n.replace(/^<!doctype html><html><head>/,"")}`}${s.join("")}</body></html>`,filename:"mach-report.doc"}}function _e(t,n){let s=null,a=!1,r=!1,o=0;const l=new Map,p=new Map;let g=null,f=null,c=null,d=null,v=null;function h(i,m){return!r&&t.value===i&&o===m}function $(){if(r)return;const i=[...l.values()].reverse().find(m=>h(m.plan,m.epoch))?.format??null;i!==g&&(g=i,n.onBusy?.(i))}function B(i,m,y){const P={};return l.set(P,{plan:i,epoch:m,format:y}),$(),P}function w(i){l.delete(i),$()}function T(){for(const[i,m]of p)h(m.plan,m.epoch)||(i.close(),p.delete(i))}const M=e.watch(t,()=>{o++,$(),T()},{flush:"sync"});function C(){s?.remove(),s=null}function F(){r=!0,o++,M(),C(),T(),l.clear(),n.onPrinting?.(!1)}function N(i,m){const y=URL.createObjectURL(i);setTimeout(()=>URL.revokeObjectURL(y),1e4);const P=document.createElement("a");P.href=y,P.download=m,P.click()}async function I(){if(a)return;const i=t.value;if(r||!i||i.pages.length===0)return;const m=o;a=!0,n.onPrinting?.(!0),C();const y=Ve(i);s=document.createElement("iframe"),s.style.cssText="position:fixed;right:0;bottom:0;width:0;height:0;border:0;visibility:hidden;",document.body.appendChild(s);const P=s;try{const x=P.contentDocument;x.open(),x.write(y);for(let z=0;z<i.pages.length;z++)if(x.write(Le(i.pages[z])),z%Pe===Pe-1&&await xe(),P!==s)return;if(x.write("</body></html>"),x.close(),await xe(),!h(i,m)||P!==s)return;P.contentWindow?.focus(),P.contentWindow?.print()}catch{P===s&&C(),h(i,m)&&n.onError("调用打印失败,请改用导出 PDF","print")}finally{a=!1,r||n.onPrinting?.(!1)}}function H(i,m){if(f?.plan===i&&f.epoch===m)return f.promise;const y=Promise.resolve().then(()=>{if(!h(i,m))throw new Error("报表已切换或卸载");return n.getPdfExporter()(i,P=>{h(i,m)&&n.onWarning?.(P)})}).finally(()=>{f?.promise===y&&(f=null)});return f={plan:i,epoch:m,promise:y},y}async function S(){const i=t.value;if(r||!i||i.pages.length===0)return;const m=o;if(c?.plan===i&&c.epoch===m)return c.promise;const y=B(i,m,"PDF"),P=(async()=>{try{const x=await H(i,m);if(!h(i,m))return;N(new Blob([x],{type:"application/pdf"}),"mach-report.pdf")}catch(x){h(i,m)&&n.onError(x instanceof Error?`PDF 导出失败: ${x.message}`:"PDF 导出失败","pdf")}finally{w(y),c?.token===y&&(c=null)}})();return c={plan:i,epoch:m,promise:P,token:y},P}async function U(){const i=t.value;if(r||!i||i.pages.length===0)return;const m=o;if(d?.plan===i&&d.epoch===m)return d.promise;const y=B(i,m,"Excel"),P=(async()=>{try{const{renderPlanToXlsx:x}=await import("@agile-team/mach-report/xlsx");if(!h(i,m))return;const{buffer:z,warnings:L}=await x(i);if(!h(i,m)||(L.length>0&&n.onWarning?.(`Excel 有 ${L.length} 处内容未导出:${L.slice(0,2).join(";")}`),!h(i,m)))return;N(new Blob([z],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}),"mach-report.xlsx")}catch(x){h(i,m)&&n.onError(x instanceof Error?`Excel 导出失败: ${x.message}`:"Excel 导出失败","export")}finally{w(y),d?.token===y&&(d=null)}})();return d={plan:i,epoch:m,promise:P,token:y},P}async function A(){const i=t.value;if(r||!i||i.pages.length===0)return;const m=o;if(v?.plan===i&&v.epoch===m)return v.promise;const y=B(i,m,"图片"),P=(async()=>{try{const{blobs:x}=await oe.renderPlanToImages(i,{dpr:Math.min(2,typeof devicePixelRatio=="number"?devicePixelRatio:1)});if(!h(i,m))return;x.forEach((z,L)=>{N(z,x.length>1?`mach-report-page-${L+1}.png`:"mach-report.png")})}catch(x){h(i,m)&&n.onError(x instanceof Error?`图片导出失败: ${x.message}`:"图片导出失败","export")}finally{w(y),v?.token===y&&(v=null)}})();return v={plan:i,epoch:m,promise:P,token:y},P}function J(){const i=t.value;if(!(r||!i||i.pages.length===0))try{const{html:m,filename:y}=Qe(i);N(new Blob([m],{type:"application/msword;charset=utf-8"}),y)}catch(m){n.onError(m instanceof Error?`Word 导出失败: ${m.message}`:"Word 导出失败","export")}}async function V(i){const m=t.value;if(!(r||!m||m.pages.length===0)){if(i==="pdf"){await S();return}if(i==="xlsx"||i==="excel"){await U();return}if(i==="png"||i==="image"){await A();return}if(i==="word"||i==="doc"){J();return}if(i!=="html"){n.onError(`不支持的导出格式:${i}`,"export");return}try{const{head:y,pageChunks:P}=Oe(m),x=`${y}${P.join("")}</body></html>`;N(new Blob([x],{type:"text/html;charset=utf-8"}),"mach-report.html")}catch(y){n.onError(y instanceof Error?`HTML 导出失败: ${y.message}`:"HTML 导出失败","export")}}}function q(){const i=t.value;if(r||!i||i.pages.length===0)return;const m=o,y=window.open("","_blank");if(!y){n.onError("浏览器拦截了弹窗,请允许弹窗后重试","pdf");return}p.set(y,{plan:i,epoch:m});const P=B(i,m,"PDF");H(i,m).then(x=>{if(!h(i,m)||y.closed){p.delete(y)&&y.close();return}const z=URL.createObjectURL(new Blob([x],{type:"application/pdf"}));setTimeout(()=>URL.revokeObjectURL(z),6e4);const L=y.document;L.title="PDF 预览",L.documentElement.style.height="100%",L.body.style.cssText="margin:0;height:100%;";const X=L.createElement("iframe");X.title="PDF 预览",X.style.cssText="display:block;width:100%;height:100%;border:0;",X.src=z,L.body.replaceChildren(X),p.delete(y)}).catch(x=>{y.close(),p.delete(y),h(i,m)&&n.onError(x instanceof Error?`PDF 预览失败: ${x.message}`:"PDF 预览失败","pdf")}).finally(()=>w(P))}return{print:I,exportAs:V,exportImages:A,exportWord:J,openPdfWindow:q,releasePrintFrame:C,dispose:F}}const et="mrp-hit";function Wt(t){t.querySelectorAll(`mark.${et}`).forEach(s=>{const a=s.parentNode;if(a){for(;s.firstChild;)a.insertBefore(s.firstChild,s);s.remove(),a.normalize()}})}function It(t,n){const s=n.trim();if(!s)return 0;const a=s.toLowerCase(),r=document.createTreeWalker(t,NodeFilter.SHOW_TEXT,{acceptNode(p){const g=p.parentElement;return!g||g.closest("mark")||/^(SCRIPT|STYLE)$/.test(g.tagName)?NodeFilter.FILTER_REJECT:(p.nodeValue??"").toLowerCase().includes(a)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT}}),o=[];for(let p=r.nextNode();p;p=r.nextNode())o.push(p);let l=0;for(const p of o){const g=p.nodeValue??"",f=g.toLowerCase(),c=p.parentElement;if(!c)continue;const d=document.createDocumentFragment();let v=0,h=f.indexOf(a);for(;h>=0;){h>v&&d.appendChild(document.createTextNode(g.slice(v,h)));const $=document.createElement("mark");$.className=et,$.textContent=g.slice(h,h+s.length),d.appendChild($),l++,v=h+s.length,h=f.indexOf(a,v)}v<g.length&&d.appendChild(document.createTextNode(g.slice(v))),c.replaceChild(d,p)}return l}function Ge(t,n){let s=0,a=t.toLowerCase().indexOf(n);for(;a>=0;)s++,a=t.toLowerCase().indexOf(n,a+n.length);return s}function Ht(t){const{plan:n,gotoPage:s,highlight:a,clearHighlights:r}=t,o=t.debounceMs??200,l=e.ref(!1),p=e.ref(""),g=e.ref(""),f=e.ref(0);let c=null;const d=e.computed(()=>{const C=p.value.trim().toLowerCase(),F=n.value;if(!C||!F)return[];const N=[];return F.pages.forEach((I,H)=>{for(const S of I.components)if(S.grid){for(const U of S.grid.cells??[])for(const A of U??[])if(typeof A?.text=="string")for(let J=0;J<Ge(A.text,C);J++)N.push(H)}else if(S.kind==="text"&&typeof S.text=="string")for(let U=0;U<Ge(S.text,C);U++)N.push(H)}),N}),v=e.computed(()=>d.value.length);function h(C){if(g.value=C,c&&clearTimeout(c),C.trim()===""){c=null,p.value="",f.value=0;return}c=setTimeout(()=>{c=null,p.value=g.value,f.value=0;const F=d.value[0];F!=null&&s(F+1)},o)}function $(C){const F=d.value.length;F!==0&&(f.value=(f.value+C+F)%F,s(d.value[f.value]+1))}function B(){l.value=!l.value}function w(C){const F=p.value.trim();F&&a(C,F)}function T(C){r(C)}function M(){g.value="",p.value="",f.value=0,c&&clearTimeout(c),c=null}return{visible:l,query:p,matchIndex:f,matchCount:v,toggle:B,onInput:h,onNav:$,apply:w,clear:T,reset:M}}function At(t,n){const s=e.computed(()=>{if(t.value)return!0;if(typeof location>"u")return!1;try{return new URLSearchParams(location.search).get("mrp-debug")==="1"}catch{return!1}}),a=e.computed(()=>!s.value||!n.plan.value?0:Math.round(JSON.stringify(n.plan.value).length/1024)),r=e.computed(()=>!s.value||!n.plan.value?null:{pages:n.pageCount.value,window:`${n.windowRange.value.start}-${n.windowRange.value.end}`,zoom:`${Math.round(n.zoom.value*100)}%`,loadMs:`${n.loadMs.value}ms`,planKB:a.value});return{enabled:s,debugStats:r}}function qt(t,n){const{thumbsRoot:s,visible:a,renderThumbCanvas:r}=n;let o=null;function l(f,c){if(!t.value||f.childElementCount>0)return;const d=r(c);d&&(d.style.width="100%",d.style.height="100%",d.style.display="block",f.appendChild(d))}return{schedule:()=>{!a.value||!t.value||!s.value||typeof IntersectionObserver>"u"||(o?.disconnect(),o=new IntersectionObserver(f=>{for(const c of f){if(!c.isIntersecting)continue;const d=c.target;l(d,Number(d.dataset.thumb??1)-1),o?.unobserve(d)}},{root:s.value,rootMargin:"200px"}),s.value.querySelectorAll("[data-thumb]").forEach(f=>{o.observe(f)}))},destroy:()=>{o?.disconnect(),o=null}}}function jt(){const t=e.shallowRef(0);return{loadMs:t,start(){return typeof performance<"u"?performance.now():0},end(n){t.value=n?Math.round(performance.now()-n):0}}}const Ut={class:"mrp-toolbar"},Kt={class:"mrp-title"},Gt=["disabled"],Zt={class:"mrp-pageinfo"},Yt=["disabled"],Jt={key:1,class:"mrp-search"},Xt=["placeholder","value"],Qt={key:0,class:"mrp-search-count"},_t=["disabled"],en=["disabled"],tn=e.defineComponent({__name:"ReportToolbar",props:{pageCount:{},currentPage:{},zoomMode:{},zoom:{},showExport:{type:Boolean},showPrint:{type:Boolean},showPdfWindow:{type:Boolean},messages:{},search:{},thumbsVisible:{type:Boolean}},emits:["goto","zoom","export","print","pdf-window","search-input","search-nav","search-toggle","thumbs-toggle"],setup(t){const n=t,s=e.ref(null);e.watch(()=>n.search.visible,r=>{r&&e.nextTick(()=>s.value?.focus())});function a(r,o,l){return r.replace("{cur}",String(o)).replace("{total}",String(l))}return(r,o)=>(e.openBlock(),e.createElementBlock("div",Ut,[e.createElementVNode("span",Kt,e.toDisplayString(t.messages.title),1),t.pageCount>0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("button",{class:"mrp-nav",type:"button",disabled:t.currentPage<=1,onClick:o[0]||(o[0]=l=>r.$emit("goto",t.currentPage-1))},e.toDisplayString(t.messages.prevPage),9,Gt),e.createElementVNode("span",Zt,e.toDisplayString(a(t.messages.pageInfo,t.currentPage,t.pageCount)),1),e.createElementVNode("button",{class:"mrp-nav",type:"button",disabled:t.currentPage>=t.pageCount,onClick:o[1]||(o[1]=l=>r.$emit("goto",t.currentPage+1))},e.toDisplayString(t.messages.nextPage),9,Yt)],64)):e.createCommentVNode("",!0),o[17]||(o[17]=e.createElementVNode("span",{class:"mrp-spacer"},null,-1)),t.search.visible?(e.openBlock(),e.createElementBlock("div",Jt,[e.createElementVNode("input",{ref_key:"searchInputRef",ref:s,class:"mrp-search-input",type:"text",placeholder:t.messages.searchPlaceholder,value:t.search.query,onInput:o[2]||(o[2]=l=>r.$emit("search-input",l.target.value))},null,40,Xt),t.search.query?(e.openBlock(),e.createElementBlock("span",Qt,e.toDisplayString(a(t.messages.matchInfo,t.search.matchIndex+1,t.search.matchCount)),1)):e.createCommentVNode("",!0),e.createElementVNode("button",{class:"mrp-nav",type:"button",disabled:t.search.matchCount===0,onClick:o[3]||(o[3]=l=>r.$emit("search-nav",-1))},e.toDisplayString(t.messages.prevMatch),9,_t),e.createElementVNode("button",{class:"mrp-nav",type:"button",disabled:t.search.matchCount===0,onClick:o[4]||(o[4]=l=>r.$emit("search-nav",1))},e.toDisplayString(t.messages.nextMatch),9,en)])):e.createCommentVNode("",!0),e.createElementVNode("button",{class:e.normalizeClass(["mrp-nav",{"mrp-active":t.search.visible}]),type:"button",title:"Ctrl+F",onClick:o[5]||(o[5]=l=>r.$emit("search-toggle"))}," 🔍 ",2),e.createElementVNode("button",{class:e.normalizeClass(["mrp-nav",{"mrp-active":t.thumbsVisible}]),type:"button",onClick:o[6]||(o[6]=l=>r.$emit("thumbs-toggle"))}," ▦ "+e.toDisplayString(t.messages.thumbnails),3),e.createElementVNode("button",{class:e.normalizeClass(["mrp-nav",{"mrp-active":t.zoomMode==="fit"}]),type:"button",onClick:o[7]||(o[7]=l=>r.$emit("zoom","fit"))},e.toDisplayString(t.messages.fitWidth),3),e.createElementVNode("button",{class:e.normalizeClass(["mrp-nav",{"mrp-active":t.zoomMode==="raw"&&Math.round(t.zoom*100)===100}]),type:"button",onClick:o[8]||(o[8]=l=>r.$emit("zoom",100))}," 100% ",2),e.createElementVNode("button",{class:e.normalizeClass(["mrp-nav",{"mrp-active":t.zoomMode==="raw"&&Math.round(t.zoom*100)===150}]),type:"button",onClick:o[9]||(o[9]=l=>r.$emit("zoom",150))}," 150% ",2),t.showExport?(e.openBlock(),e.createElementBlock("button",{key:2,class:"mrp-nav",type:"button",onClick:o[10]||(o[10]=l=>r.$emit("export","html"))},e.toDisplayString(t.messages.exportHtml),1)):e.createCommentVNode("",!0),t.showExport?(e.openBlock(),e.createElementBlock("button",{key:3,class:"mrp-nav",type:"button",onClick:o[11]||(o[11]=l=>r.$emit("export","pdf"))},e.toDisplayString(t.messages.exportPdf),1)):e.createCommentVNode("",!0),t.showExport?(e.openBlock(),e.createElementBlock("button",{key:4,class:"mrp-nav",type:"button",onClick:o[12]||(o[12]=l=>r.$emit("export","xlsx"))},e.toDisplayString(t.messages.exportExcel),1)):e.createCommentVNode("",!0),t.showExport?(e.openBlock(),e.createElementBlock("button",{key:5,class:"mrp-nav",type:"button",onClick:o[13]||(o[13]=l=>r.$emit("export","png"))},e.toDisplayString(t.messages.exportImage),1)):e.createCommentVNode("",!0),t.showExport?(e.openBlock(),e.createElementBlock("button",{key:6,class:"mrp-nav",type:"button",onClick:o[14]||(o[14]=l=>r.$emit("export","word"))},e.toDisplayString(t.messages.exportWord),1)):e.createCommentVNode("",!0),t.showPrint?(e.openBlock(),e.createElementBlock("button",{key:7,class:"mrp-nav",type:"button",onClick:o[15]||(o[15]=l=>r.$emit("print"))},e.toDisplayString(t.messages.print),1)):e.createCommentVNode("",!0),t.showPdfWindow?(e.openBlock(),e.createElementBlock("button",{key:8,class:"mrp-nav",type:"button",onClick:o[16]||(o[16]=l=>r.$emit("pdf-window"))},e.toDisplayString(t.messages.pdfWindow),1)):e.createCommentVNode("",!0)]))}}),ze=(t,n)=>{const s=t.__vccOpts||t;for(const[a,r]of n)s[a]=r;return s},tt=ze(tn,[["__scopeId","data-v-48cc0980"]]),nn={class:"mrp-params"},on={class:"mrp-params-title"},rn={class:"mrp-params-grid"},an={class:"mrp-param-label"},ln={key:0,class:"mrp-param-star"},sn=["value","onChange"],un={value:"",disabled:"",hidden:""},cn=["value"],dn=["type","placeholder","value","onInput"],fn={class:"mrp-params-actions"},pn=e.defineComponent({__name:"ReportParamPanel",props:{defs:{},modelValue:{},messages:{},attempted:{type:Boolean}},emits:["update:modelValue","query","reset"],setup(t,{emit:n}){const s=t,a=n,r=e.ref({...s.modelValue});e.watch(()=>s.modelValue,g=>{r.value={...g}});const o=e.computed(()=>s.defs.map(g=>({def:g,label:g.label??g.field,value:r.value[g.field]??""})));function l(g,f){r.value={...r.value,[g]:f},a("update:modelValue",{...r.value})}function p(g){const f=s.defs.find(c=>c.field===g);return s.attempted&&f?.required===!0&&!(r.value[g]??"").trim()}return(g,f)=>(e.openBlock(),e.createElementBlock("div",nn,[e.createElementVNode("span",on,e.toDisplayString(t.messages.paramsTitle),1),e.createElementVNode("div",rn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,c=>(e.openBlock(),e.createElementBlock("label",{key:c.def.field,class:e.normalizeClass(["mrp-param",{"mrp-param-missing":p(c.def.field)}])},[e.createElementVNode("span",an,[e.createTextVNode(e.toDisplayString(c.label),1),c.def.required?(e.openBlock(),e.createElementBlock("i",ln,"*")):e.createCommentVNode("",!0)]),(c.def.type??"text")==="select"?(e.openBlock(),e.createElementBlock("select",{key:0,class:"mrp-param-input",value:c.value,onChange:d=>l(c.def.field,d.target.value),onKeydown:f[0]||(f[0]=e.withKeys(d=>g.$emit("query"),["enter"]))},[e.createElementVNode("option",un,e.toDisplayString(c.def.placeholder??`请选择${c.label}`),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.def.options??[],d=>(e.openBlock(),e.createElementBlock("option",{key:d.value,value:d.value},e.toDisplayString(d.label),9,cn))),128))],40,sn)):(e.openBlock(),e.createElementBlock("input",{key:1,class:"mrp-param-input",type:c.def.type==="number"?"number":c.def.type==="date"?"date":"text",placeholder:c.def.placeholder??`请输入${c.label}`,value:c.value,onInput:d=>l(c.def.field,d.target.value),onKeydown:f[1]||(f[1]=e.withKeys(d=>g.$emit("query"),["enter"]))},null,40,dn))],2))),128))]),e.createElementVNode("div",fn,[e.createElementVNode("button",{class:"mrp-nav mrp-param-query",type:"button",onClick:f[2]||(f[2]=c=>g.$emit("query"))},e.toDisplayString(t.messages.query),1),e.createElementVNode("button",{class:"mrp-nav",type:"button",onClick:f[3]||(f[3]=c=>g.$emit("reset"))},e.toDisplayString(t.messages.reset),1)])]))}}),nt=ze(pn,[["__scopeId","data-v-aafce92d"]]),ot={title:"报表预览",prevPage:"‹ 上一页",nextPage:"下一页 ›",pageInfo:"{cur} / {total}",fitWidth:"适宽",exportHtml:"导出 HTML",exportPdf:"导出 PDF",exportExcel:"导出 Excel",exportImage:"导出图片",exportWord:"导出 Word",exporting:"正在生成 {format}…",print:"打印",pdfWindow:"PDF 窗口",loading:"报表渲染中…",empty:"暂无预览数据",errorPrefix:"",retry:"重试",pdfFontUnavailable:"PDF 字体尚未就绪,请联系管理员检查字体配置;预览及其它导出仍可使用。",searchPlaceholder:"搜索报表内容",matchInfo:"{cur}/{total}",prevMatch:"‹",nextMatch:"›",thumbnails:"缩略图",paramsTitle:"查询条件",query:"查 询",reset:"重 置",paramRequired:"请填写{label}"},rt={shellBg:"#525659",shellFg:"#e8e8e8",toolbarBg:"#323639",toolbarBorder:"#22252a",toolbarFg:"#e8e8e8",btnFg:"#cfcfcf",btnBorder:"#4a4d52",btnHoverBg:"#414549",btnHoverFg:"#ffffff",btnActiveBg:"#2d5fb8"};function at(t={}){return{...t,defaults:t.defaults??{},presets:t.presets??{}}}function mn(t){return t}const te={showExport:!0,showPrint:!0,showPdfWindow:!0,showParams:!0,gapPx:18,pdfFontUrl:"/simhei.ttf",logger:console},gn={warn:()=>{},info:()=>{}};function Ee(t,n){return{...t,...n,theme:{...t?.theme,...n?.theme},messages:{...t?.messages,...n?.messages}}}function lt(t,n){const s=n?t?.presets?.[n]:t?.defaultPreset?t?.presets?.[t.defaultPreset]:void 0,a=Ee(t?.defaults,s);return{showExport:a.showExport??te.showExport,showPrint:a.showPrint??te.showPrint,showPdfWindow:a.showPdfWindow??te.showPdfWindow,showParams:a.showParams??te.showParams,gapPx:a.gapPx??te.gapPx,pdfFontUrl:a.pdfFontUrl??te.pdfFontUrl,theme:{...rt,...a.theme},messages:{...ot,...a.messages},logger:a.logger??te.logger}}function st(t){const n={};return t.shellBg!=null&&(n["--mrp-shell-bg"]=t.shellBg),t.shellFg!=null&&(n["--mrp-shell-fg"]=t.shellFg),t.toolbarBg!=null&&(n["--mrp-toolbar-bg"]=t.toolbarBg),t.toolbarBorder!=null&&(n["--mrp-toolbar-border"]=t.toolbarBorder),t.toolbarFg!=null&&(n["--mrp-toolbar-fg"]=t.toolbarFg),t.btnFg!=null&&(n["--mrp-btn-fg"]=t.btnFg),t.btnBorder!=null&&(n["--mrp-btn-border"]=t.btnBorder),t.btnHoverBg!=null&&(n["--mrp-btn-hover-bg"]=t.btnHoverBg),t.btnHoverFg!=null&&(n["--mrp-btn-hover-fg"]=t.btnHoverFg),t.btnActiveBg!=null&&(n["--mrp-btn-active-bg"]=t.btnActiveBg),n}function hn(t){const n=e.inject(ie.MACH_REPORT_CONFIG_KEY,null),s=e.computed(()=>{const a=n?.value??null,r="defaults"in t||"presets"in t||"defaultPreset"in t?at(t):{defaults:t,presets:{}};if(!a)return r;const o={...a.presets,...r.presets};for(const l of Object.keys(o))o[l]=Ee(Ee(a.presets[l],r.defaults),r.presets[l]);return{defaults:Ee(a.defaults,r.defaults),presets:o,defaultPreset:r.defaultPreset??a.defaultPreset}});e.provide(ie.MACH_REPORT_CONFIG_KEY,s)}function it(){return e.inject(ie.MACH_REPORT_CONFIG_KEY,e.computed(()=>null))}const Ze=new Map,se=new Map,vn=15e3;function De(t,n){return Object.assign(new Error(t),{cause:n})}function pe(t,n){return`PDF 字体 ${JSON.stringify(t)}:${n}。请部署支持报表文字的字体文件,并将 pdfFontUrl 配置为可访问的字体 URL;西文报表可设为空串`}function ke(t){if(t?.reason instanceof Error&&t.reason.name==="AbortError")return t.reason;const n=De("PDF 字体检查已取消",t?.reason);return n.name="AbortError",n}async function yn(t,n){let s=!1;const a=setTimeout(()=>{s=!0,n.abort()},vn);try{const r=await fetch(t,{method:"HEAD",signal:n.signal});if(n.signal.aborted)throw ke(n.signal);if(r.status===405||r.status===501||r.type==="opaque")return{status:"unverified",fontUrl:t,message:`PDF 字体 ${JSON.stringify(t)} 无法通过 HEAD 检查验证;仍可尝试导出,届时会加载并校验字体`};if(!r.ok){const l=new Error(`字体请求返回 HTTP ${r.status}`);return{status:"error",fontUrl:t,message:pe(t,l.message),cause:l}}const o=r.headers.get("content-type")??"";if(/text\/html|application\/xhtml\+xml/i.test(o)){const l=new Error("字体 URL 返回 HTML 页面(可能是 SPA 路由回退),不是字体文件");return{status:"error",fontUrl:t,message:pe(t,l.message),cause:l}}if(/^text\//i.test(o)||/(?:\/|\+)json(?:\s*;|$)/i.test(o)){const l=new Error(`字体 URL 返回 ${o} 文本响应,不是字体文件`);return{status:"error",fontUrl:t,message:pe(t,l.message),cause:l}}return{status:"available",fontUrl:t,message:"PDF 字体资源可达;文字覆盖范围将在实际导出时校验"}}catch(r){if(n.signal.aborted&&!s)throw ke(n.signal);return{status:"error",fontUrl:t,message:pe(t,s?"字体检查超时,请检查网络或字体服务":"字体检查失败,请检查网络、字体服务或跨域访问配置"),cause:r}}finally{clearTimeout(a)}}function bn(t,n){if(n?.aborted)return Promise.reject(ke(n));if(!t)return Promise.resolve({status:"disabled",fontUrl:t,message:"已停用自定义 PDF 字体;内置字体用于西文,其他文字会在导出时校验"});const s=Ze.get(t);if(s)return Promise.resolve(s);let a=se.get(t);if(!a){const o=new AbortController;a={controller:o,promise:yn(t,o),subscribers:0};const l=a;se.set(t,l),l.promise=l.promise.then(p=>(!o.signal.aborted&&p.status==="available"&&Ze.set(t,p),p)).finally(()=>{se.get(t)===l&&se.delete(t)})}const r=a;return r.subscribers++,new Promise((o,l)=>{let p=!1;const g=()=>p?!1:(p=!0,r.subscribers--,n?.removeEventListener("abort",f),!0),f=()=>{g()&&(r.subscribers===0&&(se.get(t)===r&&se.delete(t),r.controller.abort()),l(ke(n)))};n?.addEventListener("abort",f,{once:!0}),r.promise.then(c=>{g()&&o(c)},c=>{g()&&l(c)}),n?.aborted&&f()})}function ut(t={fontUrl:"/simhei.ttf"}){let n=null;const s=async(a,r)=>{n||(n=await import("@agile-team/mach-report/pdf"));let o=null;if(t.fontUrl)try{if(o=await n.loadFontWithCache(t.fontUrl,{strict:!0}),!o?.byteLength)throw new Error("字体文件为空或加载失败")}catch(d){const v=d instanceof Error?d.message:String(d);throw De(pe(t.fontUrl,v),d)}let l;try{l=await n.renderPlanToPdf(a,o?{customFontBytes:o}:{})}catch(d){if(!o)throw d;const v=d instanceof Error?d.message:String(d);throw De(`PDF 生成失败:${v}。当前字体 URL 为 ${JSON.stringify(t.fontUrl)};请确认该文件是有效字体,或重新配置 pdfFontUrl`,d)}const{bytes:p,unsupportedTextCount:g,pageErrors:f,fidelityWarnings:c}=l;if(g>0)throw new Error(`PDF 中有 ${g} 行文字无法编码;请部署支持所用文字的字体并配置 pdfFontUrl`);if(f.length>0)throw new Error(`PDF 有 ${f.length} 页渲染失败:${f[0]}`);return c.length>0&&r?.(`PDF 有 ${c.length} 处版式降级:${c.slice(0,2).join(";")}`),p};return s.checkFont=a=>bn(t.fontUrl,a),s}class ne extends Error{constructor(n,s,a){super(s),this.name="MachReportError",this.code=n,this.cause=a}}function ct(t){return t instanceof ne?{code:t.code,cause:t.cause}:{code:"render",cause:t}}const wn={key:2,class:"mrp-export-notice mrp-export-warning",role:"status"},En={class:"mrp-main"},Pn={key:0,class:"mrp-state"},xn={key:1,class:"mrp-state mrp-error"},kn={key:2,class:"mrp-state"},Cn=["data-page"],$n=["onClick"],Bn=["data-thumb"],Sn={class:"mrp-thumb-no"},Rn={class:"mrp-overlay"},Mn={key:3,class:"mrp-debug","aria-hidden":"true"},ye=96/25.4,Ye="mach-report:ui",Fn=e.defineComponent({__name:"ReportPreview",props:{reportId:{type:[String,Array],default:null},params:{type:Object,default:()=>({})},height:{type:String,default:"100vh"},autoLoad:{type:Boolean,default:!0},showExport:{type:Boolean,default:void 0},showPrint:{type:Boolean,default:void 0},showPdfWindow:{type:Boolean,default:void 0},gapPx:{type:Number,default:void 0},messages:{type:Object,default:void 0},preset:{type:String,default:void 0},debug:{type:Boolean,default:!1},paramDefs:{type:Array,default:void 0},showParams:{type:Boolean,default:void 0},fetcher:{type:Function,default:null}},emits:["loaded","error","warning"],setup(t,{expose:n,emit:s}){e.useCssVars(u=>({v45530c0c:C.value+"px"}));const a=t,r=s,o=e.shallowRef(null),l=e.ref(!1),p=e.ref(""),g=e.shallowRef(null),f=e.ref(null),c=e.ref(!1),d=e.shallowRef(Object.freeze({status:"unchecked",fontUrl:""})),v=e.ref(null),h=e.ref(1),$=e.ref(null),B=e.ref(null),w=e.ref(null),T=e.ref(!1),M=jt(),C=e.computed(()=>Math.max(0,P.value)),F=e.inject(ie.MACH_REPORT_FETCHER_KEY,null),N=e.inject(ie.MACH_REPORT_PDF_EXPORTER_KEY,null),I=e.computed(()=>Ne(a.reportId)),H=e.computed(()=>a.fetcher??F),S=e.computed(()=>o.value?.pages.length??0),U=e.computed(()=>Object.freeze({loading:l.value,hasPlan:S.value>0,pageCount:S.value,currentPage:h.value,exporting:f.value,printing:c.value,canExport:!l.value&&S.value>0&&f.value===null,canPrint:!l.value&&S.value>0&&!c.value,error:g.value,pdfFont:d.value}));function A(u,b,E){g.value=Object.freeze({message:u,code:b,cause:E}),r("error",u,{code:b,cause:E})}const J=it(),V=e.computed(()=>lt(J.value,a.preset)),q=e.computed(()=>({...V.value.messages,...a.messages})),i=e.computed(()=>a.showExport??V.value.showExport),m=e.computed(()=>a.showPrint??V.value.showPrint),y=e.computed(()=>a.showPdfWindow??V.value.showPdfWindow),P=e.computed(()=>a.gapPx??V.value.gapPx),x=e.computed(()=>a.showParams??V.value.showParams);let z=null,L=null;function X(){if(N)return N;const u=V.value.pdfFontUrl;return(!L||z!==u)&&(z=u,L=ut({fontUrl:u})),L}let me=0,ue=null,ce=!1;function Ce(){me++,ue?.abort(),ue=null}async function ge(){if(ce)throw new ne("config","报表预览已卸载");Ce();const u=me,b=new AbortController;ue=b;const E=V.value.pdfFontUrl;d.value=Object.freeze({status:"checking",fontUrl:E});try{const k=X(),O=k.checkFont?await k.checkFont(b.signal):{status:"unverified",fontUrl:"",message:"自定义 PDF 导出器未提供字体预检查;字体由宿主确认"};return!ce&&u===me&&!b.signal.aborted&&(d.value=Object.freeze({...O})),O}catch(k){if(b.signal.aborted)throw k;const O={status:"error",fontUrl:E,message:k instanceof Error?k.message:"PDF 字体检查失败",cause:k};return!ce&&u===me&&(d.value=Object.freeze(O)),O}finally{ue===b&&(ue=null)}}function ft(){ge().catch(()=>{})}e.watch([o,()=>V.value.pdfFontUrl,i,y],()=>{const u=d.value.fontUrl===V.value.pdfFontUrl;Ce(),(!u||d.value.status==="checking")&&(d.value=Object.freeze({status:"unchecked",fontUrl:V.value.pdfFontUrl})),!ce&&S.value>0&&(i.value||y.value)&&ge().catch(()=>{})},{immediate:!0});const Z=e.computed(()=>a.paramDefs??H.value?.getParamDefs?.(I.value)??[]),Q=e.ref({}),$e=e.ref(!1);function de(u){const b={};for(const E of u)b[E.field]=a.params[E.field]??E.defaultValue??"";Q.value=b,$e.value=!1}de(Z.value),e.watch(Z,u=>de(u)),e.watch(I,()=>de(Z.value)),e.watch(()=>JSON.stringify(a.params),()=>de(Z.value));const pt=e.computed(()=>{const u={...a.params};for(const[b,E]of Object.entries(Q.value))E===""?delete u[b]:u[b]=E;return u});function mt(){return Z.value.filter(u=>u.required===!0&&!(Q.value[u.field]??"").trim())}function gt(){$e.value=!0;const u=mt();if(u.length>0){const b=u[0].label??u[0].field,E=q.value.paramRequired.replace("{label}",b);p.value=E,A(E,"param");return}_()}function ht(){de(Z.value)}const vt=e.computed(()=>({height:a.height,...st(V.value.theme)})),{zoom:W,zoomMode:re,applyFitZoom:We,setZoom:Be}=Xe(()=>({viewport:B.value,pageWidthPx:(o.value?.pages[0]?.pageWidthMm??210)*ye})),yt=Je(o,W,{pxPerMm:ye,gapPx:P}),{contentSize:Se,windowRange:fe,visiblePages:bt,makeScrollHandler:wt,refreshViewport:Ie}=yt,Et=wt(h,S);function Re(u){re.value="raw",W.value=Math.min(3,Math.max(.3,u))}function he(){Pt(),o.value=null,h.value=1,D.reset()}let Y=0,K=null;async function _(){const u=++Y;K?.abort(),K=null;const b=H.value;if(l.value=!1,g.value=null,I.value.length===0){p.value="缺少报表 ID",he(),A(p.value,"param");return}if(!b){p.value="未提供渲染数据源 fetcher",he(),A(p.value,"config");return}l.value=!0,p.value="",v.value=null,he();const E=M.start(),k=new AbortController;K=k;const O=new Set;function le(R){u!==Y||k.signal.aborted||O.has(R)||(O.add(R),V.value.logger.warn("[mach-report] 报表告警:",R),r("warning",R))}try{const R=await b({reportIds:I.value,params:{...pt.value},signal:k.signal,onWarning:le});if(u!==Y)return;const j=oe.validateRenderPlan(R);if(!j.ok){const ee=j.errors.slice(0,3).map(je=>`${je.path}: ${je.message}`).join("; ");throw new ne("validate",`渲染计划校验失败(${j.errors.length} 处): ${ee}`)}if(j.warnings.forEach(ee=>le(`${ee.path}: ${ee.message}`)),u!==Y||k.signal.aborted)return;o.value=R,h.value=1,M.end(E),B.value&&(B.value.scrollTop=0),re.value==="fit"&&We(),r("loaded",R.pages.length)}catch(R){if(u!==Y)return;const j=R instanceof ne?R:R instanceof oe.ReportSourceError?new ne(R.code,R.message,R.cause):new ne("fetch",R instanceof Error?R.message:"预览加载失败",R);p.value=j.message;const ee=ct(j);A(j.message,ee.code,ee.cause)}finally{u===Y&&(l.value=!1),K===k&&(K=null)}}function G(u){if(S.value<=0)return;const b=Math.max(1,Math.min(S.value,u));h.value=b;const E=B.value;if(!E)return;let k=0;for(let O=0;O<b-1;O++)k+=(o.value?.pages[O]?.pageHeightMm??0)*ye+C.value;E.scrollTop=k*W.value}const ve=_e(o,{getPdfExporter:X,onError:(u,b)=>{v.value={kind:"error",message:u},A(u,b??"print")},onWarning:u=>{v.value={kind:"warning",message:u},r("warning",u)},onBusy:u=>{f.value=u,u?v.value={kind:"progress",message:q.value.exporting.replace("{format}",u)}:v.value?.kind==="progress"&&(v.value=null)},onPrinting:u=>{c.value=u}}),{releasePrintFrame:Pt,dispose:xt}=ve;async function Me(){g.value=null,await ve.print()}async function Fe(u){g.value=null,await ve.exportAs(u)}function Te(){g.value=null,ve.openPdfWindow()}async function He(u,b={}){Q.value={...Q.value,...u},b.reload!==!1&&await _()}const kt={reload:_,print:Me,exportAs:Fe,openPdfWindow:Te,gotoPage:G,setParams:He,checkPdfFont:ge,get state(){return U.value}};e.provide(ie.MACH_REPORT_CONTROLLER_KEY,kt);const D=Ht({plan:o,gotoPage:G,highlight:It,clearHighlights:Wt});function Ct(u){u.ctrlKey&&(u.preventDefault(),Re(W.value*(u.deltaY<0?1.1:1/1.1)))}function $t(u){if((u.ctrlKey||u.metaKey)&&u.key.toLowerCase()==="f"){u.preventDefault(),D.visible.value||D.toggle();return}switch(u.key){case"PageDown":u.preventDefault(),G(h.value+1);break;case"PageUp":u.preventDefault(),G(h.value-1);break;case"Home":u.preventDefault(),G(1);break;case"End":u.preventDefault(),G(S.value);break;case"+":case"=":u.preventDefault(),Re(W.value*1.1);break;case"-":u.preventDefault(),Re(W.value/1.1);break}}function Bt(){try{localStorage.setItem(Ye,JSON.stringify({zoomMode:re.value==="fit"?"fit":Math.round(W.value*100)}))}catch{}}e.watch([re,W],Bt),e.watchEffect(()=>{const u=o.value;if(!u)return;const b=$.value;if(!b)return;b.querySelectorAll(".mrp-page-holder").forEach(k=>{const O=Number(k.dataset.page??0)-1,le=u.pages[O];if(!le||k.childElementCount>0){if(k.firstElementChild){const j=k.firstElementChild;D.clear(j),D.apply(j)}return}k.style.width=`${le.pageWidthMm*ye}px`;const R=oe.renderPage(le,96,{},document);D.apply(R),k.appendChild(R)})},{flush:"post"}),e.watch(()=>D.query.value,u=>{u||$.value?.querySelectorAll(".mrp-page-holder").forEach(b=>{D.clear(b)})});const Ae=qt(o,{thumbsRoot:w,visible:T,renderThumbCanvas:u=>{try{const{canvases:b}=oe.renderPlanToCanvas(o.value,{start:u,end:u,dpr:.2});return b[0]??null}catch{return null}}});e.watchEffect(()=>{Ae.schedule()},{flush:"post"});const St=e.computed(()=>a.debug),{debugStats:ae}=At(St,{plan:o,pageCount:S,windowRange:fe,zoom:W,loadMs:M.loadMs});function qe(){Ie(B.value),re.value==="fit"&&We()}function Rt(){try{const u=JSON.parse(localStorage.getItem(Ye)??"{}");u.zoomMode==="fit"?Be("fit"):typeof u.zoomMode=="number"&&Be(u.zoomMode)}catch{}}return e.onMounted(()=>{window.addEventListener("resize",qe),Ie(B.value),Rt(),a.autoLoad&&_()}),e.onUnmounted(()=>{ce=!0,Ce(),Y++,K?.abort(),K=null,window.removeEventListener("resize",qe),Ae.destroy(),D.reset(),xt()}),e.watch(()=>[JSON.stringify(I.value),JSON.stringify(a.params),H.value],()=>{if(a.autoLoad){_();return}Y++,K?.abort(),K=null,l.value=!1,p.value="",g.value=null,v.value=null,he()}),n({reload:_,print:Me,exportAs:Fe,openPdfWindow:Te,gotoPage:G,setParams:He,checkPdfFont:ge,state:U}),(u,b)=>(e.openBlock(),e.createElementBlock("div",{class:"mach-report-preview",style:e.normalizeStyle(vt.value)},[x.value&&Z.value.length>0?(e.openBlock(),e.createBlock(nt,{key:0,defs:Z.value,modelValue:Q.value,"onUpdate:modelValue":b[0]||(b[0]=E=>Q.value=E),messages:q.value,attempted:$e.value,onQuery:gt,onReset:ht},null,8,["defs","modelValue","messages","attempted"])):e.createCommentVNode("",!0),e.createVNode(tt,{"page-count":S.value,"current-page":h.value,"zoom-mode":e.unref(re),zoom:e.unref(W),"show-export":i.value,"show-print":m.value,"show-pdf-window":y.value,messages:q.value,search:{visible:e.unref(D).visible.value,query:e.unref(D).query.value,matchIndex:e.unref(D).matchIndex.value,matchCount:e.unref(D).matchCount.value},"thumbs-visible":T.value,onGoto:G,onZoom:e.unref(Be),onExport:b[1]||(b[1]=E=>Fe(E)),onPrint:Me,onPdfWindow:Te,onSearchInput:e.unref(D).onInput,onSearchNav:e.unref(D).onNav,onSearchToggle:e.unref(D).toggle,onThumbsToggle:b[2]||(b[2]=E=>T.value=!T.value)},null,8,["page-count","current-page","zoom-mode","zoom","show-export","show-print","show-pdf-window","messages","search","thumbs-visible","onZoom","onSearchInput","onSearchNav","onSearchToggle"]),v.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["mrp-export-notice",`mrp-export-${v.value.kind}`]),role:"alert"},e.toDisplayString(v.value.message),3)):e.createCommentVNode("",!0),d.value.status==="error"&&(i.value||y.value)?(e.openBlock(),e.createElementBlock("div",wn,[e.createTextVNode(e.toDisplayString(q.value.pdfFontUnavailable)+" ",1),e.createElementVNode("button",{type:"button",onClick:ft},e.toDisplayString(q.value.retry),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",En,[e.createElementVNode("div",{ref_key:"viewportRef",ref:B,class:"mrp-body",tabindex:"0",onWheel:Ct,onKeydown:$t,onScrollPassive:b[3]||(b[3]=E=>e.unref(Et)(E.target))},[l.value?(e.openBlock(),e.createElementBlock("div",Pn,e.toDisplayString(q.value.loading),1)):p.value?(e.openBlock(),e.createElementBlock("div",xn,[e.createTextVNode(e.toDisplayString(p.value)+" ",1),e.createElementVNode("button",{class:"mrp-retry",type:"button",onClick:_},e.toDisplayString(q.value.retry),1)])):!o.value||S.value===0?(e.openBlock(),e.createElementBlock("div",kn,e.toDisplayString(q.value.empty),1)):(e.openBlock(),e.createElementBlock("div",{key:3,class:"mrp-scale",style:e.normalizeStyle({width:`${e.unref(Se).w*e.unref(W)}px`,height:`${e.unref(Se).h*e.unref(W)}px`})},[e.createElementVNode("div",{ref_key:"containerRef",ref:$,class:"mrp-scale-inner",style:e.normalizeStyle({transform:`scale(${e.unref(W)})`,transformOrigin:"top left",width:`${e.unref(Se).w}px`})},[e.unref(fe).padTopPx>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mrp-spacer-top",style:e.normalizeStyle({height:`${e.unref(fe).padTopPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(bt),E=>(e.openBlock(),e.createElementBlock("div",{key:E.index,class:"mrp-page-holder","data-page":E.index+1},null,8,Cn))),128)),e.unref(fe).padBottomPx>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:"mrp-spacer-bottom",style:e.normalizeStyle({height:`${e.unref(fe).padBottomPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0)],4)],4))],544),T.value&&S.value>0?(e.openBlock(),e.createElementBlock("aside",{key:0,ref_key:"thumbsRef",ref:w,class:"mrp-thumbs"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value?.pages??[],(E,k)=>(e.openBlock(),e.createElementBlock("div",{key:k,class:e.normalizeClass(["mrp-thumb",{"mrp-thumb-active":k+1===h.value}]),onClick:O=>G(k+1)},[e.createElementVNode("div",{class:"mrp-thumb-box","data-thumb":k+1,style:e.normalizeStyle({height:`${Math.round(E.pageHeightMm/E.pageWidthMm*116)}px`})},null,12,Bn),e.createElementVNode("span",Sn,e.toDisplayString(k+1),1)],10,$n))),128))],512)):e.createCommentVNode("",!0)]),e.createElementVNode("div",Rn,[e.renderSlot(u.$slots,"default",{},void 0,!0)]),e.unref(ae)?(e.openBlock(),e.createElementBlock("div",Mn,[b[4]||(b[4]=e.createElementVNode("div",null,"mach-report debug",-1)),e.createElementVNode("div",null,"pages: "+e.toDisplayString(e.unref(ae).pages)+" | window: ["+e.toDisplayString(e.unref(ae).window)+"]",1),e.createElementVNode("div",null,"zoom: "+e.toDisplayString(e.unref(ae).zoom)+" | load: "+e.toDisplayString(e.unref(ae).loadMs),1),e.createElementVNode("div",null,"plan: "+e.toDisplayString(e.unref(ae).planKB)+"KB",1)])):e.createCommentVNode("",!0)],4))}}),dt=ze(Fn,[["__scopeId","data-v-28af6d98"]]),Tn=Object.freeze(Object.defineProperty({__proto__:null,default:dt},Symbol.toStringTag,{value:"Module"}));exports.DEFAULT_MESSAGES=ot;exports.DEFAULT_THEME=rt;exports.MachReportError=ne;exports.PlanLoadError=be;exports.ReportParamPanel=nt;exports.ReportPreview=dt;exports.ReportPreview$1=Tn;exports.ReportToolbar=tt;exports.SILENT_LOGGER=gn;exports.buildPrintDocument=Oe;exports.buildWordHtml=Qe;exports.createDefaultPdfExporter=ut;exports.createFetchRequest=Ot;exports.defineMachReportConfig=at;exports.defineMachReportPreset=mn;exports.joinReportIds=Lt;exports.normalizeReportIds=Ne;exports.printPlans=zt;exports.provideMachReportConfig=hn;exports.resolveConfig=lt;exports.themeToCssVars=st;exports.toErrorDetail=ct;exports.useMachReportConfig=it;exports.usePageWindow=Je;exports.usePrintExport=_e;exports.useZoom=Xe;
@@ -1 +0,0 @@
1
- "use strict";function B(h,i){const d=h.length;if(d===0)return[];const p=h.reduce((e,c)=>e+c,0),a=p>0&&i>0?i/p:1,s=[];let f=0;for(let e=0;e<d;e++){const c=Math.max(0,h[e]*a);s.push({pos:f,size:c}),f+=c}return s}function K(h,i,d){const p=h.cells??[],a=Math.max(p.length,1),s=h.colWidthsMm?.length??Math.max(1,...p.map(t=>Array.isArray(t)?t.length:0)),f=h.colWidthsMm?.length?B(h.colWidthsMm,i):Array.from({length:s},(t,o)=>({pos:i*o/s,size:i/s})),e=t=>t<=0?0:t>=s?f[f.length-1].pos+f[f.length-1].size:f[t].pos,c=h.rowHeightsMm?.length?B(h.rowHeightsMm,d):Array.from({length:a},(t,o)=>({pos:d*o/a,size:d/a})),w=t=>t<=0?0:t>=a?c[c.length-1].pos+c[c.length-1].size:c[t].pos,M=new Set,S=(t,o)=>`${t}:${o}`,v=[],x=new Set,A=new Set,$=(t,o)=>`v${t}:${o}`,k=(t,o)=>`h${t}:${o}`;p.forEach((t,o)=>{if(!Array.isArray(t))return;let n=0;for(const u of t){for(;n<s&&M.has(S(o,n));)n++;if(n>=s)break;const C=Math.max(1,Math.min(u?.colSpan??1,s-n)),G=Math.max(1,u?.rowSpan??1),g=Math.min(a,o+G),m=Math.min(s,n+C);for(let r=o;r<g;r++)for(let l=n;l<m;l++)M.add(S(r,l));for(let r=n+1;r<m;r++)for(let l=o;l<g;l++)x.add($(r,l));for(let r=o+1;r<g;r++)for(let l=n;l<m;l++)A.add(k(r,l));const z=e(n),E=w(o);v.push({ri:o,ci:n,cell:u??{},xMm:z,yMm:E,widthMm:e(m)-z,heightMm:w(g)-E}),n=m}});const y=[];for(let t=1;t<s;t++){let o=-1;for(let n=0;n<=a;n++){const u=n<a&&!x.has($(t,n));u&&o<0&&(o=n),!u&&o>=0&&(y.push({kind:"v",pos:e(t),from:w(o),to:w(n)}),o=-1)}}for(let t=1;t<a;t++){let o=-1;for(let n=0;n<=s;n++){const u=n<s&&!A.has(k(t,n));u&&o<0&&(o=n),!u&&o>=0&&(y.push({kind:"h",pos:w(t),from:e(o),to:e(n)}),o=-1)}}return{columns:f,rows:c,cells:v,edges:y}}exports.resolveGridLayout=K;
@@ -1,65 +0,0 @@
1
- function B(h, p) {
2
- const d = h.length;
3
- if (d === 0) return [];
4
- const i = h.reduce((e, c) => e + c, 0), a = i > 0 && p > 0 ? p / i : 1, s = [];
5
- let f = 0;
6
- for (let e = 0; e < d; e++) {
7
- const c = Math.max(0, h[e] * a);
8
- s.push({ pos: f, size: c }), f += c;
9
- }
10
- return s;
11
- }
12
- function P(h, p, d) {
13
- const i = h.cells ?? [], a = Math.max(i.length, 1), s = h.colWidthsMm?.length ?? Math.max(1, ...i.map((t) => Array.isArray(t) ? t.length : 0)), f = h.colWidthsMm?.length ? B(h.colWidthsMm, p) : Array.from({ length: s }, (t, o) => ({
14
- pos: p * o / s,
15
- size: p / s
16
- })), e = (t) => t <= 0 ? 0 : t >= s ? f[f.length - 1].pos + f[f.length - 1].size : f[t].pos, c = h.rowHeightsMm?.length ? B(h.rowHeightsMm, d) : Array.from({ length: a }, (t, o) => ({
17
- pos: d * o / a,
18
- size: d / a
19
- })), w = (t) => t <= 0 ? 0 : t >= a ? c[c.length - 1].pos + c[c.length - 1].size : c[t].pos, M = /* @__PURE__ */ new Set(), S = (t, o) => `${t}:${o}`, x = [], A = /* @__PURE__ */ new Set(), $ = /* @__PURE__ */ new Set(), v = (t, o) => `v${t}:${o}`, k = (t, o) => `h${t}:${o}`;
20
- i.forEach((t, o) => {
21
- if (!Array.isArray(t)) return;
22
- let n = 0;
23
- for (const u of t) {
24
- for (; n < s && M.has(S(o, n)); ) n++;
25
- if (n >= s) break;
26
- const C = Math.max(1, Math.min(u?.colSpan ?? 1, s - n)), K = Math.max(1, u?.rowSpan ?? 1), g = Math.min(a, o + K), m = Math.min(s, n + C);
27
- for (let r = o; r < g; r++)
28
- for (let l = n; l < m; l++)
29
- M.add(S(r, l));
30
- for (let r = n + 1; r < m; r++)
31
- for (let l = o; l < g; l++) A.add(v(r, l));
32
- for (let r = o + 1; r < g; r++)
33
- for (let l = n; l < m; l++) $.add(k(r, l));
34
- const z = e(n), E = w(o);
35
- x.push({
36
- ri: o,
37
- ci: n,
38
- cell: u ?? {},
39
- xMm: z,
40
- yMm: E,
41
- widthMm: e(m) - z,
42
- heightMm: w(g) - E
43
- }), n = m;
44
- }
45
- });
46
- const y = [];
47
- for (let t = 1; t < s; t++) {
48
- let o = -1;
49
- for (let n = 0; n <= a; n++) {
50
- const u = n < a && !A.has(v(t, n));
51
- u && o < 0 && (o = n), !u && o >= 0 && (y.push({ kind: "v", pos: e(t), from: w(o), to: w(n) }), o = -1);
52
- }
53
- }
54
- for (let t = 1; t < a; t++) {
55
- let o = -1;
56
- for (let n = 0; n <= s; n++) {
57
- const u = n < s && !$.has(k(t, n));
58
- u && o < 0 && (o = n), !u && o >= 0 && (y.push({ kind: "h", pos: w(t), from: e(o), to: e(n) }), o = -1);
59
- }
60
- }
61
- return { columns: f, rows: c, cells: x, edges: y };
62
- }
63
- export {
64
- P as r
65
- };
@@ -1,10 +0,0 @@
1
- function i(e, f) {
2
- const t = /* @__PURE__ */ new Set();
3
- return f.flatMap((r) => {
4
- const a = Object.prototype.hasOwnProperty.call(e, r) ? e[r] : void 0;
5
- return (a?.params ?? a?.template.params ?? []).filter((n) => t.has(n.field) ? !1 : (t.add(n.field), !0));
6
- });
7
- }
8
- export {
9
- i as g
10
- };
@@ -1 +0,0 @@
1
- "use strict";function s(e,f){const t=new Set;return f.flatMap(r=>{const a=Object.prototype.hasOwnProperty.call(e,r)?e[r]:void 0;return(a?.params??a?.template.params??[]).filter(n=>t.has(n.field)?!1:(t.add(n.field),!0))})}exports.getReportParamDefs=s;
@@ -1,3 +0,0 @@
1
- "use strict";const m="#333333",M="#000000",E="1.0.0-mach";function h(t=96){return t/25.4}function l(t,e=96){return(t||0)*h(e)}function C(t,e=96){return t/h(e)}function d(t,e=96){return t*e/72}function A(t,e){const r=10**e;return Math.round(t*r)/r}const R={a3:{widthMm:297,heightMm:420},a4:{widthMm:210,heightMm:297},a5:{widthMm:148,heightMm:210},b4:{widthMm:250,heightMm:353},b5:{widthMm:176,heightMm:250}},x=E;function I(t){return(t.kind==="image"||t.kind==="barcode"||t.kind==="qrcode"||t.kind==="chart")&&!!t.imageData}function L(t){return t.kind==="text"&&Array.isArray(t.richParagraphs)&&t.richParagraphs.length>0}const P=/[\u3000-\u9fff\uff00-\uffef]/,f=new Uint8Array(128);{for(const t of"iljtf.,:;'`|!()[]")f[t.charCodeAt(0)]=1;for(const t of"mwMW@")f[t.charCodeAt(0)]=2;for(let t=48;t<=57;t++)f[t]=3;for(let t=65;t<=90;t++)f[t]=4;f[32]=5}const D=[.54,.26,.95,.59,.67,.3];function S(t){const e=t.charCodeAt(0);return e<128?D[f[e]]:P.test(t)?1:/[A-Z]/.test(t)?.67:.54}const a={measureMm(t,e){const{fontSizePt:r,bold:n=!1,letterSpacingPt:u=0}=e,c=25.4/72;let i=0;for(const o of t)i+=S(o);return n&&(i*=1.04),(i*r+u*t.length)*c}};function H(){return a}function g(t,e){return a.measureMm(t,e)}function w(t){let e;return{measureMm(r,n){if(e===void 0&&(e=t()),!e)return a.measureMm(r,n);const u=n.fontSizePt*96/72;return e.font=`${n.bold?"bold ":""}${u}px sans-serif`,e.measureText(r).width*25.4/96}}}function N(t,e,r){const n=[];let u="",c=0;const i=()=>{u&&(n.push({text:u,widthMm:c,cjk:!1}),u="",c=0)};for(const o of t){if(o===`
2
- `){i(),n.push({text:`
3
- `,widthMm:0,cjk:!1,br:!0});continue}if(o===" "){i(),n.push({text:o,widthMm:r.measureMm(o,e),cjk:!1,space:!0});continue}if(P.test(o)){i(),n.push({text:o,widthMm:r.measureMm(o,e),cjk:!0});continue}u+=o,c+=r.measureMm(o,e)}return i(),n}function O(t,e,r,n=a){if(!t)return[""];const u=[];let c="",i=0;const o=()=>{u.push(c),c="",i=0};for(const s of N(t,r,n)){if(s.br){o();continue}if(i+s.widthMm<=e){c+=s.text,i+=s.widthMm;continue}if(s.space){o();continue}if(s.cjk){c.length>0&&o(),c=s.text,i=s.widthMm;continue}if(c.length>0&&o(),s.widthMm<=e){c=s.text,i=s.widthMm;continue}for(const _ of s.text){const T=n.measureMm(_,r);i+T>e&&c.length>0&&o(),c+=_,i+=T}}return o(),u}function F(t,e=96,r=10.5){if(t?.fontSizePx!=null)return{fontSizePt:t.fontSizePx*72/e,fontSizePx:t.fontSizePx};const n=t?.fontSize??r;return{fontSizePt:n,fontSizePx:d(n,e)}}function k(t,e=m){return{color:t?.borderColor??t?.lineColor??e,widthPt:t?.lineWidthPt??.75}}function b(t,e=M){return t?.color??e}function p(t){return t?.lineHeight??1.35}function v(t){const e=t?.borderTop!==!1,r=t?.borderRight!==!1,n=t?.borderBottom!==!1,u=t?.borderLeft!==!1;return{top:e,right:r,bottom:n,left:u,inner:e||r||n||u}}exports.CSS_DPI=96;exports.DEFAULT_BORDER_PT=.75;exports.DEFAULT_FONT_PT=10.5;exports.DEFAULT_STROKE_COLOR=m;exports.DEFAULT_TEXT_COLOR=M;exports.LINE_HEIGHT=1.35;exports.MM_PER_INCH=25.4;exports.PAPER_SIZES=R;exports.RENDER_PLAN_SCHEMA_VERSION=x;exports.SCHEMA_VERSION_MACH=E;exports.charWidthEm=S;exports.createCanvasMeasurer=w;exports.createHeuristicMeasurer=H;exports.heuristicMeasurer=a;exports.isImageBackedComponent=I;exports.isRichText=L;exports.measureTextMm=g;exports.mmToPx=l;exports.mmToPxFactor=h;exports.ptToPx=d;exports.pxToMm=C;exports.resolveBoxBorders=v;exports.resolveFontSize=F;exports.resolveLineHeight=p;exports.resolveStroke=k;exports.resolveTextColor=b;exports.round=A;exports.wrapText=O;
@@ -1,180 +0,0 @@
1
- const C = 1.35, w = 10.5, g = 0.75, l = "#333333", S = "#000000", P = "1.0.0-mach", A = 25.4, I = 96;
2
- function m(t = 96) {
3
- return t / 25.4;
4
- }
5
- function L(t, e = 96) {
6
- return (t || 0) * m(e);
7
- }
8
- function R(t, e = 96) {
9
- return t / m(e);
10
- }
11
- function _(t, e = 96) {
12
- return t * e / 72;
13
- }
14
- function D(t, e) {
15
- const r = 10 ** e;
16
- return Math.round(t * r) / r;
17
- }
18
- const b = {
19
- a3: { widthMm: 297, heightMm: 420 },
20
- a4: { widthMm: 210, heightMm: 297 },
21
- a5: { widthMm: 148, heightMm: 210 },
22
- b4: { widthMm: 250, heightMm: 353 },
23
- b5: { widthMm: 176, heightMm: 250 }
24
- }, k = P;
25
- function H(t) {
26
- return (t.kind === "image" || t.kind === "barcode" || t.kind === "qrcode" || t.kind === "chart") && !!t.imageData;
27
- }
28
- function z(t) {
29
- return t.kind === "text" && Array.isArray(t.richParagraphs) && t.richParagraphs.length > 0;
30
- }
31
- const M = /[\u3000-\u9fff\uff00-\uffef]/, u = new Uint8Array(128);
32
- {
33
- for (const t of "iljtf.,:;'`|!()[]") u[t.charCodeAt(0)] = 1;
34
- for (const t of "mwMW@") u[t.charCodeAt(0)] = 2;
35
- for (let t = 48; t <= 57; t++) u[t] = 3;
36
- for (let t = 65; t <= 90; t++) u[t] = 4;
37
- u[32] = 5;
38
- }
39
- const T = [0.54, 0.26, 0.95, 0.59, 0.67, 0.3];
40
- function E(t) {
41
- const e = t.charCodeAt(0);
42
- return e < 128 ? T[u[e]] : M.test(t) ? 1 : /[A-Z]/.test(t) ? 0.67 : 0.54;
43
- }
44
- const a = {
45
- measureMm(t, e) {
46
- const { fontSizePt: r, bold: n = !1, letterSpacingPt: c = 0 } = e, s = 25.4 / 72;
47
- let i = 0;
48
- for (const o of t)
49
- i += E(o);
50
- return n && (i *= 1.04), (i * r + c * t.length) * s;
51
- }
52
- };
53
- function N() {
54
- return a;
55
- }
56
- function p(t, e) {
57
- return a.measureMm(t, e);
58
- }
59
- function O(t) {
60
- let e;
61
- return {
62
- measureMm(r, n) {
63
- if (e === void 0 && (e = t()), !e) return a.measureMm(r, n);
64
- const c = n.fontSizePt * 96 / 72;
65
- return e.font = `${n.bold ? "bold " : ""}${c}px sans-serif`, e.measureText(r).width * 25.4 / 96;
66
- }
67
- };
68
- }
69
- function x(t, e, r) {
70
- const n = [];
71
- let c = "", s = 0;
72
- const i = () => {
73
- c && (n.push({ text: c, widthMm: s, cjk: !1 }), c = "", s = 0);
74
- };
75
- for (const o of t) {
76
- if (o === `
77
- `) {
78
- i(), n.push({ text: `
79
- `, widthMm: 0, cjk: !1, br: !0 });
80
- continue;
81
- }
82
- if (o === " ") {
83
- i(), n.push({ text: o, widthMm: r.measureMm(o, e), cjk: !1, space: !0 });
84
- continue;
85
- }
86
- if (M.test(o)) {
87
- i(), n.push({ text: o, widthMm: r.measureMm(o, e), cjk: !0 });
88
- continue;
89
- }
90
- c += o, s += r.measureMm(o, e);
91
- }
92
- return i(), n;
93
- }
94
- function F(t, e, r, n = a) {
95
- if (!t) return [""];
96
- const c = [];
97
- let s = "", i = 0;
98
- const o = () => {
99
- c.push(s), s = "", i = 0;
100
- };
101
- for (const f of x(t, r, n)) {
102
- if (f.br) {
103
- o();
104
- continue;
105
- }
106
- if (i + f.widthMm <= e) {
107
- s += f.text, i += f.widthMm;
108
- continue;
109
- }
110
- if (f.space) {
111
- o();
112
- continue;
113
- }
114
- if (f.cjk) {
115
- s.length > 0 && o(), s = f.text, i = f.widthMm;
116
- continue;
117
- }
118
- if (s.length > 0 && o(), f.widthMm <= e) {
119
- s = f.text, i = f.widthMm;
120
- continue;
121
- }
122
- for (const h of f.text) {
123
- const d = n.measureMm(h, r);
124
- i + d > e && s.length > 0 && o(), s += h, i += d;
125
- }
126
- }
127
- return o(), c;
128
- }
129
- function j(t, e = 96, r = 10.5) {
130
- if (t?.fontSizePx != null)
131
- return { fontSizePt: t.fontSizePx * 72 / e, fontSizePx: t.fontSizePx };
132
- const n = t?.fontSize ?? r;
133
- return { fontSizePt: n, fontSizePx: _(n, e) };
134
- }
135
- function v(t, e = l) {
136
- return {
137
- color: t?.borderColor ?? t?.lineColor ?? e,
138
- widthPt: t?.lineWidthPt ?? 0.75
139
- };
140
- }
141
- function U(t, e = S) {
142
- return t?.color ?? e;
143
- }
144
- function B(t) {
145
- return t?.lineHeight ?? 1.35;
146
- }
147
- function W(t) {
148
- const e = t?.borderTop !== !1, r = t?.borderRight !== !1, n = t?.borderBottom !== !1, c = t?.borderLeft !== !1;
149
- return { top: e, right: r, bottom: n, left: c, inner: e || r || n || c };
150
- }
151
- export {
152
- I as C,
153
- w as D,
154
- C as L,
155
- A as M,
156
- b as P,
157
- k as R,
158
- P as S,
159
- j as a,
160
- z as b,
161
- v as c,
162
- W as d,
163
- B as e,
164
- U as f,
165
- S as g,
166
- a as h,
167
- H as i,
168
- g as j,
169
- l as k,
170
- E as l,
171
- L as m,
172
- O as n,
173
- N as o,
174
- _ as p,
175
- p as q,
176
- D as r,
177
- m as s,
178
- R as t,
179
- F as w
180
- };