@agile-team/mach-report 2.5.0 → 2.7.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.
- package/README.md +126 -16
- package/dist/ReportPreview-BdvoqdOd.cjs +6 -0
- package/dist/ReportPreview-COFkbeEM.js +3719 -0
- package/dist/_plugin-vue_export-helper-BHFhmbuH.cjs +1 -0
- package/dist/_plugin-vue_export-helper-CHgC5LLL.js +9 -0
- package/dist/analytics.cjs +1 -0
- package/dist/analytics.d.cts +276 -0
- package/dist/analytics.d.ts +276 -0
- package/dist/analytics.js +223 -0
- package/dist/assets-B9qJku3V.js +160 -0
- package/dist/assets-RZan7EyL.cjs +1 -0
- package/dist/capabilities-joSutDF8.js +63 -0
- package/dist/capabilities-xGTpnPjJ.cjs +1 -0
- package/dist/designer.cjs +1 -0
- package/dist/designer.d.cts +869 -0
- package/dist/designer.d.ts +869 -0
- package/dist/designer.js +628 -0
- package/dist/index.cjs +8 -5
- package/dist/index.d.cts +497 -9
- package/dist/index.d.ts +497 -9
- package/dist/index.js +1088 -1499
- package/dist/param-validation-BWNjLcN0.js +116 -0
- package/dist/param-validation-CiTxFeZ8.cjs +1 -0
- package/dist/pdf.cjs +48 -48
- package/dist/pdf.d.cts +119 -1
- package/dist/pdf.d.ts +119 -1
- package/dist/pdf.js +3932 -3868
- package/dist/{plugin-DMPLDpBY.cjs → plugin-9t_ZFwhz.cjs} +1 -1
- package/dist/{plugin-DDLcFWlk.js → plugin-s8Ay8kKk.js} +2 -2
- package/dist/progress-DD964VAB.js +102 -0
- package/dist/progress-KvhwXZ1Q.cjs +1 -0
- package/dist/render-plan-CckPEQyf.cjs +1 -0
- package/dist/{render-plan-CXBWRog4.js → render-plan-uzZYYSy1.js} +11 -10
- package/dist/report-params-B_VCihAh.js +12 -0
- package/dist/report-params-CjWrjPl6.cjs +1 -0
- package/dist/report-source-BXHNy_AD.js +755 -0
- package/dist/report-source-CCAvFE3t.cjs +1 -0
- package/dist/server/node.d.cts +320 -0
- package/dist/server/node.d.ts +320 -0
- package/dist/server-node.cjs +1 -0
- package/dist/server-node.js +303 -0
- package/dist/server.cjs +1 -0
- package/dist/server.d.cts +668 -0
- package/dist/server.d.ts +668 -0
- package/dist/server.js +245 -0
- package/dist/style-CpwiOPyB.cjs +1 -0
- package/dist/style-Dv5o_x6b.js +67 -0
- package/dist/style.css +1 -1
- package/dist/task-events-DQ276fn2.cjs +1 -0
- package/dist/task-events-Dpsvf_t2.js +47 -0
- package/dist/template-registry-DWExx0gU.cjs +1 -0
- package/dist/template-registry-NpOakidD.js +354 -0
- package/dist/textwrap-CnGsEum6.cjs +4 -0
- package/dist/textwrap-DOl04hCQ.js +110 -0
- package/dist/validate-DfHPD8wX.cjs +1 -0
- package/dist/validate-S6CgIm5d.js +148 -0
- package/dist/vue/async.d.cts +1507 -1538
- package/dist/vue/async.d.ts +1507 -1538
- package/dist/vue/index.d.cts +2376 -2347
- package/dist/vue/index.d.ts +2376 -2347
- package/dist/vue-async.cjs +1 -1
- package/dist/vue-async.js +3 -3
- package/dist/vue.cjs +1 -1
- package/dist/vue.js +184 -75
- package/dist/worker.cjs +1 -0
- package/dist/worker.d.cts +325 -0
- package/dist/worker.d.ts +325 -0
- package/dist/worker.js +158 -0
- package/dist/xlsx/node.d.cts +47 -0
- package/dist/xlsx/node.d.ts +47 -0
- package/dist/xlsx-node.cjs +221 -0
- package/dist/xlsx-node.js +36409 -0
- package/dist/xlsx.cjs +20 -20
- package/dist/xlsx.d.cts +87 -2
- package/dist/xlsx.d.ts +87 -2
- package/dist/xlsx.js +5987 -5840
- package/package.json +63 -3
- package/dist/ReportPreview-CBKLI--k.js +0 -2188
- package/dist/ReportPreview-ClM8h0pM.cjs +0 -6
- package/dist/grid-geometry-BNIvw52m.cjs +0 -1
- package/dist/grid-geometry-C8hGoe9o.js +0 -130
- package/dist/render-plan-CCTL4F9v.cjs +0 -1
- package/dist/report-params-B3Fia6JO.js +0 -10
- package/dist/report-params-D1gZ1DME.cjs +0 -1
- package/dist/textwrap-nH0UYU6D.js +0 -108
- package/dist/textwrap-oD-t4b4B.cjs +0 -4
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
"use strict";var fn=Object.create;var Et=Object.defineProperty;var pn=Object.getOwnPropertyDescriptor;var vn=Object.getOwnPropertyNames;var gn=Object.getPrototypeOf,hn=Object.prototype.hasOwnProperty;var bn=(t,n,o,a)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of vn(n))!hn.call(t,r)&&r!==o&&Et(t,r,{get:()=>n[r],enumerable:!(a=pn(n,r))||a.enumerable});return t};var et=(t,n,o)=>(o=t!=null?fn(gn(t)):{},bn(n||!t||!t.__esModule?Et(o,"default",{value:t,enumerable:!0}):o,t));const e=require("vue"),U=require("@agile-team/mach-report"),Bt=require("./page-window-index-DEjnM6IB.cjs"),St=require("./render-plan-CCTL4F9v.cjs"),pe=require("./plugin-DMPLDpBY.cjs");function rt(t){return t==null?[]:Array.isArray(t)?t.map(String).filter(n=>n!==""):String(t).split(",").map(n=>n.trim()).filter(n=>n!=="")}function yn(t){return rt(t).join(",")}class Fe extends Error{constructor(n){super(n),this.name="PlanLoadError"}}function wn(t={}){const{baseUrl:n="",headers:o,credentials:a,timeoutMs:r=3e4}=t,l=n.replace(/\/+$/,"");return async({url:s,method:f,params:g,signal:b})=>{let u=`${l}${s}`;if(g&&Object.keys(g).length>0){const x=u.indexOf("#"),S=x>=0?u.slice(x):"",k=x>=0?u.slice(0,x):u,$=k.indexOf("?"),B=$>=0?k.slice(0,$):k,M=new URLSearchParams($>=0?k.slice($+1):"");for(const[N,K]of Object.entries(g))M.set(N,K);u=`${B}?${M}${S}`}const m=(x,S)=>{const k=new Fe(x);return Object.defineProperty(k,"cause",{value:S,configurable:!0,writable:!0}),k};if(b?.aborted)throw m(`请求已取消: ${s}`,b.reason);const p=new AbortController;let c;const E=()=>{p.signal.aborted||(c="external",p.abort(b?.reason))};b?.addEventListener("abort",E,{once:!0});const C=setTimeout(()=>{p.signal.aborted||(c="timeout",p.abort())},r);try{const x=await fetch(u,{method:f.toUpperCase(),headers:{Accept:"application/json",...o},credentials:a,signal:p.signal});if(!x.ok)throw new Fe(`HTTP ${x.status} ${s}`);return await x.json()}catch(x){throw c==="timeout"?m(`请求超时(${r}ms): ${s}`,x):c==="external"?m(`请求已取消: ${s}`,x):x instanceof Fe?x:m(`请求失败(${s}): ${x instanceof Error?x.message:String(x)}`,x)}finally{clearTimeout(C),b?.removeEventListener("abort",E)}}}function $t(t,n,o={}){const a=o.pxPerMm??3.7795275590551185,r=e.computed(()=>Math.max(0,e.unref(o.gapPx)??18)),l=e.ref(0),s=e.ref(800),f=e.computed(()=>{const x=t.value?.pages??[];return Bt.createPageWindowIndex(x.map(S=>S.pageHeightMm*a),r.value)}),g=e.computed(()=>{let x=0;for(const S of t.value?.pages??[])x=Math.max(x,S.pageWidthMm*a);return{w:x,h:f.value.totalHeightPx}}),b=e.computed(()=>f.value.window(s.value/n.value,l.value/n.value,e.unref(o.overscan)??1)),u=e.computed(()=>{const x=t.value;if(!x)return[];const{start:S,end:k}=b.value;return x.pages.slice(S,k+1).map(($,B)=>({page:$,index:S+B}))});let m=0,p=!1;function c(x){x&&(l.value=x.scrollTop,s.value=x.clientHeight||800)}function E(x,S){return k=>{m||p||(m=requestAnimationFrame(()=>{if(m=0,p||(c(k),S.value<=0))return;const $=Math.max(0,k.scrollTop+32)/n.value;x.value=Math.min(S.value,f.value.pageAt($)+1)}))}}function C(){p=!0,m&&cancelAnimationFrame(m),m=0}return e.onScopeDispose(C),{contentSize:g,windowRange:b,visiblePages:u,makeScrollHandler:E,refreshViewport:c,pageOffsetPx:x=>f.value.offsetAt(x),destroy:C}}function Rt(t){const n=e.ref(1),o=e.ref("fit");let a=0;function r(){a&&cancelAnimationFrame(a),a=0}function l(){r(),a=requestAnimationFrame(()=>{if(a=0,o.value!=="fit")return;const f=t();!f?.viewport||f.viewport.clientWidth<=48||!Number.isFinite(f.pageWidthPx)||(n.value=Math.min(1,(f.viewport.clientWidth-48)/Math.max(1,f.pageWidthPx)))})}function s(f){if(f==="fit")o.value="fit",l();else{if(!Number.isFinite(f))return;r(),o.value="raw",n.value=Math.min(3,Math.max(.3,f/100))}}return e.getCurrentScope()&&e.onScopeDispose(r),{zoom:n,zoomMode:o,applyFitZoom:l,setZoom:s}}const Te=8;function Ve(){return new Promise(t=>setTimeout(t,0))}function Ne(t){return`p${t.pageWidthMm}x${t.pageHeightMm}`.replace(/[.+]/g,"_")}function at(t){const n=new Map;return t.pages.forEach(r=>{n.has(Ne(r))||n.set(Ne(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 ${Ne(r)}{size:${r.pageWidthMm}mm ${r.pageHeightMm}mm;margin:0;}`).join(`
|
|
5
|
-
`)}
|
|
6
|
-
body{margin:0;background:#fff;}`}</style></head><body>`}function lt(t){const n=U.renderPage(t,96,{},document);return n.style.page=Ne(t),n.outerHTML}function st(t){return{head:at(t),pageChunks:t.pages.map(lt)}}async function xn(t,n={}){const o={schemaVersion:"mach-report-batch-print",pages:t.flatMap(s=>s.pages)};if(o.pages.length===0)return;const a=at(o),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 l=!1;try{const s=r.contentDocument;s.open(),s.write(a);for(let f=0;f<o.pages.length;f++)s.write(lt(o.pages[f])),f%Te===Te-1&&(n.onProgress?.(f+1,o.pages.length),await Ve());s.write("</body></html>"),s.close(),await Ve(),n.onProgress?.(o.pages.length,o.pages.length),l=!0,r.contentWindow?.focus(),r.contentWindow?.print()}catch(s){n.onError?.(s instanceof Error?`批量打印失败: ${s.message}`:"批量打印失败")}finally{l?setTimeout(()=>r.remove(),6e4):r.remove()}}function Mt(t){const{head:n,pageChunks:o}=st(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>/,"")}`}${o.join("")}</body></html>`,filename:"mach-report.doc"}}function Ft(t,n){let o=null,a=!1,r=!1,l=0;const s=new Map,f=new Map;let g=null,b=null,u=null,m=null,p=null;function c(d,y){return!r&&t.value===d&&l===y}function E(){if(r)return;const d=[...s.values()].reverse().find(y=>c(y.plan,y.epoch))?.format??null;d!==g&&(g=d,n.onBusy?.(d))}function C(d,y,w){const P={};return s.set(P,{plan:d,epoch:y,format:w}),E(),P}function x(d){s.delete(d),E()}function S(){for(const[d,y]of f)c(y.plan,y.epoch)||(d.close(),f.delete(d))}function k(){l++,B(),E(),S()}const $=e.watch(t,k,{flush:"sync"});function B(){o?.remove(),o=null}function M(){r=!0,l++,$(),B(),S(),s.clear(),n.onPrinting?.(!1)}function N(d,y){const w=URL.createObjectURL(d);setTimeout(()=>URL.revokeObjectURL(w),1e4);const P=document.createElement("a");P.href=w,P.download=y,P.click()}async function K(){if(a)return;const d=t.value;if(r||!d||d.pages.length===0)return;const y=l;a=!0,n.onPrinting?.(!0),B();const w=at(d);o=document.createElement("iframe"),o.style.cssText="position:fixed;right:0;bottom:0;width:0;height:0;border:0;visibility:hidden;",document.body.appendChild(o);const P=o;try{const R=P.contentDocument;R.open(),R.write(w);for(let W=0;W<d.pages.length;W++)if(R.write(lt(d.pages[W])),W%Te===Te-1&&await Ve(),P!==o)return;if(R.write("</body></html>"),R.close(),await Ve(),!c(d,y)||P!==o)return;P.contentWindow?.focus(),P.contentWindow?.print()}catch{P===o&&B(),c(d,y)&&n.onError("调用打印失败,请改用导出 PDF","print")}finally{a=!1,r||n.onPrinting?.(!1)}}function z(d,y){if(b?.plan===d&&b.epoch===y)return b.promise;const w=Promise.resolve().then(()=>{if(!c(d,y))throw new Error("报表已切换或卸载");return n.getPdfExporter()(d,P=>{c(d,y)&&n.onWarning?.(P)})}).finally(()=>{b?.promise===w&&(b=null)});return b={plan:d,epoch:y,promise:w},w}async function Z(){const d=t.value;if(r||!d||d.pages.length===0)return;const y=l;if(u?.plan===d&&u.epoch===y)return u.promise;const w=C(d,y,"PDF"),P=(async()=>{try{const R=await z(d,y);if(!c(d,y))return;N(new Blob([R],{type:"application/pdf"}),"mach-report.pdf")}catch(R){c(d,y)&&n.onError(R instanceof Error?`PDF 导出失败: ${R.message}`:"PDF 导出失败","pdf")}finally{x(w),u?.token===w&&(u=null)}})();return u={plan:d,epoch:y,promise:P,token:w},P}async function H(){const d=t.value;if(r||!d||d.pages.length===0)return;const y=l;if(m?.plan===d&&m.epoch===y)return m.promise;const w={...n.getXlsxOptions?.()},P=C(d,y,"Excel"),R=(async()=>{try{const{renderPlanToXlsx:W}=await import("@agile-team/mach-report/xlsx");if(!c(d,y))return;const{buffer:j,warnings:X}=await W(d,w);if(!c(d,y)||(X.length>0&&n.onWarning?.(`Excel 导出有 ${X.length} 条提示:${X.slice(0,2).join(";")}`),!c(d,y)))return;N(new Blob([j],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}),"mach-report.xlsx")}catch(W){c(d,y)&&n.onError(W instanceof Error?`Excel 导出失败: ${W.message}`:"Excel 导出失败","export")}finally{x(P),m?.token===P&&(m=null)}})();return m={plan:d,epoch:y,promise:R,token:P},R}async function J(){const d=t.value;if(r||!d||d.pages.length===0)return;const y=l;if(p?.plan===d&&p.epoch===y)return p.promise;const w=C(d,y,"图片"),P=(async()=>{try{const{blobs:R}=await U.renderPlanToImages(d,{dpr:Math.min(2,typeof devicePixelRatio=="number"?devicePixelRatio:1)});if(!c(d,y))return;R.forEach((W,j)=>{N(W,R.length>1?`mach-report-page-${j+1}.png`:"mach-report.png")})}catch(R){c(d,y)&&n.onError(R instanceof Error?`图片导出失败: ${R.message}`:"图片导出失败","export")}finally{x(w),p?.token===w&&(p=null)}})();return p={plan:d,epoch:y,promise:P,token:w},P}function ae(){const d=t.value;if(!(r||!d||d.pages.length===0))try{const{html:y,filename:w}=Mt(d);N(new Blob([y],{type:"application/msword;charset=utf-8"}),w)}catch(y){n.onError(y instanceof Error?`Word 导出失败: ${y.message}`:"Word 导出失败","export")}}async function O(d){const y=t.value;if(!(r||!y||y.pages.length===0)){if(d==="pdf"){await Z();return}if(d==="xlsx"||d==="excel"){await H();return}if(d==="png"||d==="image"){await J();return}if(d==="word"||d==="doc"){ae();return}if(d!=="html"){n.onError(`不支持的导出格式:${d}`,"export");return}try{const{head:w,pageChunks:P}=st(y),R=`${w}${P.join("")}</body></html>`;N(new Blob([R],{type:"text/html;charset=utf-8"}),"mach-report.html")}catch(w){n.onError(w instanceof Error?`HTML 导出失败: ${w.message}`:"HTML 导出失败","export")}}}function te(){const d=t.value;if(r||!d||d.pages.length===0)return;const y=l,w=window.open("","_blank");if(!w){n.onError("浏览器拦截了弹窗,请允许弹窗后重试","pdf");return}f.set(w,{plan:d,epoch:y});const P=C(d,y,"PDF");z(d,y).then(R=>{if(!c(d,y)||w.closed){f.delete(w)&&w.close();return}const W=URL.createObjectURL(new Blob([R],{type:"application/pdf"}));setTimeout(()=>URL.revokeObjectURL(W),6e4);const j=w.document;j.title="PDF 预览",j.documentElement.style.height="100%",j.body.style.cssText="margin:0;height:100%;";const X=j.createElement("iframe");X.title="PDF 预览",X.style.cssText="display:block;width:100%;height:100%;border:0;",X.src=W,j.body.replaceChildren(X),f.delete(w)}).catch(R=>{w.close(),f.delete(w),c(d,y)&&n.onError(R instanceof Error?`PDF 预览失败: ${R.message}`:"PDF 预览失败","pdf")}).finally(()=>x(P))}return{print:K,exportAs:O,exportImages:J,exportWord:ae,openPdfWindow:te,invalidatePending:k,releasePrintFrame:B,dispose:M}}const Nt="mrp-hit";function En(t){t.querySelectorAll(`mark.${Nt}`).forEach(o=>{const a=o.parentNode;if(a){for(;o.firstChild;)a.insertBefore(o.firstChild,o);o.remove(),a.normalize()}})}function kn(t,n){const o=n.trim();if(!o)return 0;const a=o.toLowerCase(),r=document.createTreeWalker(t,NodeFilter.SHOW_TEXT,{acceptNode(f){const g=f.parentElement;return!g||g.closest("mark")||/^(SCRIPT|STYLE)$/.test(g.tagName)?NodeFilter.FILTER_REJECT:(f.nodeValue??"").toLowerCase().includes(a)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT}}),l=[];for(let f=r.nextNode();f;f=r.nextNode())l.push(f);let s=0;for(const f of l){const g=f.nodeValue??"",b=g.toLowerCase(),u=f.parentElement;if(!u)continue;const m=document.createDocumentFragment();let p=0,c=b.indexOf(a);for(;c>=0;){c>p&&m.appendChild(document.createTextNode(g.slice(p,c)));const E=document.createElement("mark");E.className=Nt,E.textContent=g.slice(c,c+o.length),m.appendChild(E),s++,p=c+o.length,c=b.indexOf(a,p)}p<g.length&&m.appendChild(document.createTextNode(g.slice(p))),u.replaceChild(m,f)}return s}const Pn=new Set(["line","rect","ellipse","chart"]);function*Cn(t){for(const n of t.cells??[])for(const o of n??[])yield o?.text??"",yield*o?.children??[]}function*Bn(t){if(St.isRichText(t))for(const n of t.richParagraphs)for(const o of n.segments??[])yield(o.kind==="field"?o.field:o.text)??"";else t.lines?.length?yield*t.lines:yield t.text??""}function*Sn(t){const n=[t.values()];for(;n.length>0;){const o=n[n.length-1].next();if(o.done){n.pop();continue}const a=o.value;if(typeof a=="string"){yield a;continue}yield"",!St.isImageBackedComponent(a)&&(a.kind==="text"?n.push(Bn(a)):a.grid?n.push(Cn(a.grid)):Pn.has(a.kind)||(yield a.fallbackText??""))}}function*$n(t){for(let n=0;n<t.pages.length;n++){for(const o of Sn(t.pages[n].components))yield{text:o,pageIndex:n};yield{text:"",pageIndex:n}}}function Rn(t,n){const o=t.toLowerCase();let a=0;for(let r=o.indexOf(n);r>=0;r=o.indexOf(n,r+n.length))a++;return a}function Mn(t){const{plan:n,gotoPage:o,highlight:a,clearHighlights:r}=t,l=e.ref(!1),s=e.ref(""),f=e.ref(0),g=e.ref(0),b=e.ref(!1);let u=[];const m=e.computed(()=>{if(g.value===0)return null;const B=f.value;let M=0,N=u.length-1;for(;M<N;){const z=M+N>>>1;u[z].cumulative<=B?M=z+1:N=z}const K=u[M];return K?{pageIndex:K.pageIndex,occurrence:B-(u[M-1]?.cumulative??0)}:null});let p=null,c=null,E=0;function C(){E++,p&&clearTimeout(p),c&&clearTimeout(c),p=c=null,b.value=!1}function x(B){s.value=B,f.value=0,g.value=0,u=[],b.value=!1;const M=B.trim().toLowerCase(),N=n.value;if(!M||!N)return;b.value=!0;const K=E,z=$n(N),Z=[];let H=0;function J(){if(c=null,K!==E||N!==n.value)return;const ae=performance.now();let O=0;for(;O<5e3&&performance.now()-ae<4;){const te=z.next();if(te.done){u=Z,g.value=H,b.value=!1,u[0]&&o(u[0].pageIndex+1);return}const d=Rn(te.value.text,M);if(d>0){H+=d;const y=Z[Z.length-1];y?.pageIndex===te.value.pageIndex?y.cumulative=H:Z.push({pageIndex:te.value.pageIndex,cumulative:H})}O++}c=setTimeout(J,0)}J()}function S(B){if(C(),s.value=B,f.value=g.value=0,u=[],!B.trim()){x("");return}b.value=!0,p=setTimeout(()=>{p=null,x(B)},Math.max(0,e.unref(t.debounceMs)??200))}function k(B){const M=g.value;if(M===0||b.value)return;f.value=(f.value+B+M)%M;const N=m.value;N&&o(N.pageIndex+1)}function $(){C(),s.value="",f.value=g.value=0,u=[]}return e.watch(n,$,{flush:"sync"}),e.onScopeDispose($),{visible:l,query:s,matchIndex:f,matchCount:g,activeMatch:m,searching:b,toggle:()=>{l.value=!l.value},onInput:S,onNav:k,apply:B=>{s.value.trim()&&a(B,s.value.trim())},clear:B=>{r(B)},reset:$}}function Fn(t,n){const o=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(()=>!o.value||!n.plan.value?0:Math.round(JSON.stringify(n.plan.value).length/1024)),r=e.computed(()=>!o.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:o,debugStats:r}}function Nn(t,n){const{thumbsRoot:o,visible:a,renderThumbCanvas:r}=n,l=e.ref(0),s=e.ref(800),f=e.computed(()=>(t.value?.pages??[]).map(k=>Math.round(k.pageHeightMm/k.pageWidthMm*116))),g=e.computed(()=>Bt.createPageWindowIndex(f.value.map(k=>k+20),8)),b=e.computed(()=>g.value.window(s.value,l.value,1)),u=e.computed(()=>{if(!a.value)return[];const{start:k,end:$}=b.value;return f.value.slice(k,$+1).map((B,M)=>({index:k+M,height:B}))});let m=0,p=0,c=!1;function E(){const k=o.value;k&&(l.value=k.scrollTop,s.value=k.clientHeight||800)}function C(){c||p||(p=requestAnimationFrame(()=>{p=0,E()}))}function x(){if(u.value,m&&cancelAnimationFrame(m),m=0,c||!a.value||!t.value||!o.value)return;E();const k=u.value,$=t.value,B=o.value;let M=0;function N(){if(m=0,!(c||!a.value||t.value!==$||o.value!==B)){for(let K=0;M<k.length&&K<2;K++,M++){const z=k[M].index,Z=B.querySelector(`[data-thumb="${z+1}"]`);if(!Z||Z.childElementCount>0)continue;const H=r(z);H&&(H.style.width="100%",H.style.height="100%",H.style.display="block",Z.appendChild(H))}M<k.length&&(m=requestAnimationFrame(N))}}m=requestAnimationFrame(N)}function S(){c=!0,m&&cancelAnimationFrame(m),p&&cancelAnimationFrame(p),m=p=0}return e.onScopeDispose(S),{schedule:x,destroy:S,onScroll:C,windowRange:b,visibleThumbs:u}}function Dn(){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 Tn=["aria-label"],Vn={class:"mrp-title"},In=["disabled"],On={class:"mrp-pageinfo"},zn=["disabled"],Ln=["disabled"],Wn={key:2,class:"mrp-search"},An=["placeholder","value"],Hn={key:0,class:"mrp-search-count",role:"status"},jn=["disabled"],qn=["disabled"],Un=["aria-label"],Kn=["disabled"],Zn=["disabled"],Gn=["disabled"],Yn=["disabled"],Jn=["disabled"],Xn=["disabled"],Qn=["disabled"],_n=["aria-label","aria-expanded"],eo=e.defineComponent({__name:"ReportToolbar",props:{pageCount:{},currentPage:{},zoomMode:{},zoom:{},showExport:{type:Boolean},showPrint:{type:Boolean},showPdfWindow:{type:Boolean},messages:{},search:{},thumbsVisible:{type:Boolean},showImport:{type:Boolean},showSearch:{type:Boolean},showThumbnails:{type:Boolean},showZoom:{type:Boolean},exportFormats:{},showSettings:{type:Boolean},settingsOpen:{type:Boolean},busy:{type:Boolean}},emits:["goto","zoom","export","print","pdf-window","search-input","search-nav","search-toggle","thumbs-toggle","import-excel","settings-toggle"],setup(t){const n=t,o=e.ref(null);e.watch(()=>n.search.visible,r=>{r&&e.nextTick(()=>o.value?.focus())});function a(r,l,s){return r.replace("{cur}",String(l)).replace("{total}",String(s))}return(r,l)=>(e.openBlock(),e.createElementBlock("div",{class:"mrp-toolbar",role:"toolbar","aria-label":t.messages.title},[e.createElementVNode("span",Vn,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:l[0]||(l[0]=s=>r.$emit("goto",t.currentPage-1))},e.toDisplayString(t.messages.prevPage),9,In),e.createElementVNode("span",On,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:l[1]||(l[1]=s=>r.$emit("goto",t.currentPage+1))},e.toDisplayString(t.messages.nextPage),9,zn)],64)):e.createCommentVNode("",!0),l[21]||(l[21]=e.createElementVNode("span",{class:"mrp-spacer"},null,-1)),t.showImport?(e.openBlock(),e.createElementBlock("button",{key:1,class:"mrp-nav mrp-import-excel",type:"button",disabled:t.busy,onClick:l[2]||(l[2]=s=>r.$emit("import-excel"))},e.toDisplayString(t.messages.importExcel??"导入 Excel 模板"),9,Ln)):e.createCommentVNode("",!0),t.showSearch!==!1&&t.search.visible?(e.openBlock(),e.createElementBlock("div",Wn,[e.createElementVNode("input",{ref_key:"searchInputRef",ref:o,class:"mrp-search-input",type:"text",placeholder:t.messages.searchPlaceholder,value:t.search.query,onInput:l[3]||(l[3]=s=>r.$emit("search-input",s.target.value))},null,40,An),t.search.query?(e.openBlock(),e.createElementBlock("span",Hn,e.toDisplayString(t.search.searching?t.messages.searching??"搜索中…":a(t.messages.matchInfo,t.search.matchCount>0?t.search.matchIndex+1:0,t.search.matchCount)),1)):e.createCommentVNode("",!0),e.createElementVNode("button",{class:"mrp-nav",type:"button",disabled:t.search.matchCount===0,onClick:l[4]||(l[4]=s=>r.$emit("search-nav",-1))},e.toDisplayString(t.messages.prevMatch),9,jn),e.createElementVNode("button",{class:"mrp-nav",type:"button",disabled:t.search.matchCount===0,onClick:l[5]||(l[5]=s=>r.$emit("search-nav",1))},e.toDisplayString(t.messages.nextMatch),9,qn)])):e.createCommentVNode("",!0),t.showSearch!==!1?(e.openBlock(),e.createElementBlock("button",{key:3,class:e.normalizeClass(["mrp-nav",{"mrp-active":t.search.visible}]),type:"button",title:"Ctrl+F","aria-label":t.messages.search??t.messages.searchPlaceholder,onClick:l[6]||(l[6]=s=>r.$emit("search-toggle"))},[...l[19]||(l[19]=[e.createElementVNode("svg",{width:"13",height:"13",viewBox:"0 0 20 20",fill:"none","aria-hidden":"true"},[e.createElementVNode("circle",{cx:"8.5",cy:"8.5",r:"5.5",stroke:"currentColor","stroke-width":"1.6"}),e.createElementVNode("path",{d:"m13 13 4 4",stroke:"currentColor","stroke-width":"1.6","stroke-linecap":"round"})],-1)])],10,Un)):e.createCommentVNode("",!0),t.showThumbnails!==!1?(e.openBlock(),e.createElementBlock("button",{key:4,class:e.normalizeClass(["mrp-nav",{"mrp-active":t.thumbsVisible}]),type:"button",onClick:l[7]||(l[7]=s=>r.$emit("thumbs-toggle"))}," ▦ "+e.toDisplayString(t.messages.thumbnails),3)):e.createCommentVNode("",!0),t.showZoom!==!1?(e.openBlock(),e.createElementBlock("button",{key:5,class:e.normalizeClass(["mrp-nav",{"mrp-active":t.zoomMode==="fit"}]),type:"button",onClick:l[8]||(l[8]=s=>r.$emit("zoom","fit"))},e.toDisplayString(t.messages.fitWidth),3)):e.createCommentVNode("",!0),t.showZoom!==!1?(e.openBlock(),e.createElementBlock("button",{key:6,class:e.normalizeClass(["mrp-nav",{"mrp-active":t.zoomMode==="raw"&&Math.round(t.zoom*100)===100}]),type:"button",onClick:l[9]||(l[9]=s=>r.$emit("zoom",100))}," 100% ",2)):e.createCommentVNode("",!0),t.showZoom!==!1?(e.openBlock(),e.createElementBlock("button",{key:7,class:e.normalizeClass(["mrp-nav",{"mrp-active":t.zoomMode==="raw"&&Math.round(t.zoom*100)===150}]),type:"button",onClick:l[10]||(l[10]=s=>r.$emit("zoom",150))}," 150% ",2)):e.createCommentVNode("",!0),t.showExport&&(!t.exportFormats||t.exportFormats.includes("html"))?(e.openBlock(),e.createElementBlock("button",{key:8,class:"mrp-nav",type:"button",disabled:t.busy,onClick:l[11]||(l[11]=s=>r.$emit("export","html"))},e.toDisplayString(t.messages.exportHtml),9,Kn)):e.createCommentVNode("",!0),t.showExport&&(!t.exportFormats||t.exportFormats.includes("pdf"))?(e.openBlock(),e.createElementBlock("button",{key:9,class:"mrp-nav",type:"button",disabled:t.busy,onClick:l[12]||(l[12]=s=>r.$emit("export","pdf"))},e.toDisplayString(t.messages.exportPdf),9,Zn)):e.createCommentVNode("",!0),t.showExport&&(!t.exportFormats||t.exportFormats.includes("xlsx"))?(e.openBlock(),e.createElementBlock("button",{key:10,class:"mrp-nav",type:"button",disabled:t.busy,onClick:l[13]||(l[13]=s=>r.$emit("export","xlsx"))},e.toDisplayString(t.messages.exportExcel),9,Gn)):e.createCommentVNode("",!0),t.showExport&&(!t.exportFormats||t.exportFormats.includes("png"))?(e.openBlock(),e.createElementBlock("button",{key:11,class:"mrp-nav",type:"button",disabled:t.busy,onClick:l[14]||(l[14]=s=>r.$emit("export","png"))},e.toDisplayString(t.messages.exportImage),9,Yn)):e.createCommentVNode("",!0),t.showExport&&(!t.exportFormats||t.exportFormats.includes("word"))?(e.openBlock(),e.createElementBlock("button",{key:12,class:"mrp-nav",type:"button",disabled:t.busy,onClick:l[15]||(l[15]=s=>r.$emit("export","word"))},e.toDisplayString(t.messages.exportWord),9,Jn)):e.createCommentVNode("",!0),t.showPrint?(e.openBlock(),e.createElementBlock("button",{key:13,class:"mrp-nav",type:"button",disabled:t.busy,onClick:l[16]||(l[16]=s=>r.$emit("print"))},e.toDisplayString(t.messages.print),9,Xn)):e.createCommentVNode("",!0),t.showPdfWindow?(e.openBlock(),e.createElementBlock("button",{key:14,class:"mrp-nav",type:"button",disabled:t.busy,onClick:l[17]||(l[17]=s=>r.$emit("pdf-window"))},e.toDisplayString(t.messages.pdfWindow),9,Qn)):e.createCommentVNode("",!0),t.showSettings?(e.openBlock(),e.createElementBlock("button",{key:15,class:"mrp-nav mrp-settings-toggle",type:"button","aria-label":t.messages.settings,"aria-haspopup":"dialog","aria-expanded":!!t.settingsOpen,onClick:l[18]||(l[18]=s=>r.$emit("settings-toggle"))},[l[20]||(l[20]=e.createStaticVNode('<svg width="14" height="14" viewBox="0 0 20 20" fill="none" aria-hidden="true" data-v-4223ad9f><path d="M3 5h14M3 10h14M3 15h14" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" data-v-4223ad9f></path><circle cx="7" cy="5" r="2" fill="var(--mrp-toolbar-bg)" stroke="currentColor" stroke-width="1.5" data-v-4223ad9f></circle><circle cx="13" cy="10" r="2" fill="var(--mrp-toolbar-bg)" stroke="currentColor" stroke-width="1.5" data-v-4223ad9f></circle><circle cx="8" cy="15" r="2" fill="var(--mrp-toolbar-bg)" stroke="currentColor" stroke-width="1.5" data-v-4223ad9f></circle></svg>',1)),e.createTextVNode(" "+e.toDisplayString(t.messages.settings),1)],8,_n)):e.createCommentVNode("",!0)],8,Tn))}}),Ee=(t,n)=>{const o=t.__vccOpts||t;for(const[a,r]of n)o[a]=r;return o},Dt=Ee(eo,[["__scopeId","data-v-4223ad9f"]]),to=["aria-label"],no={class:"mrp-settings-header"},oo=["aria-label"],ro={class:"mrp-settings-content"},ao={key:0},lo=["checked","disabled","onChange"],so={key:0,class:"mrp-settings-note"},io={key:1,class:"mrp-settings-note"},co=["disabled"],uo=e.defineComponent({__name:"ReportSettings",props:{available:{},enabled:{},messages:{},persistedEditing:{type:Boolean},busy:{type:Boolean}},emits:["change","reset","close"],setup(t,{emit:n}){const o=t,a=n,r=e.ref(null),l=e.ref(null);let s=null;const f=e.computed(()=>[{label:o.messages.settingsDisplay,tools:[["search",o.messages.search],["thumbnails",o.messages.thumbnails],["zoom",o.messages.zoom]]},{label:o.messages.settingsExport,tools:[["html",o.messages.exportHtml],["pdf",o.messages.exportPdf],["xlsx",o.messages.exportExcel],["png",o.messages.exportImage],["word",o.messages.exportWord],["print",o.messages.print],["pdfWindow",o.messages.pdfWindow]]},{label:o.messages.settingsData,tools:[["editing",o.messages.editCell],["import",o.messages.importExcel]]}].map(u=>({...u,tools:u.tools.map(([m,p])=>({key:m,label:p}))})));function g(u,m){const p=u.target,c=p.checked;p.checked=o.enabled[m],a("change",m,c)}function b(u){if(u.key==="Escape"){u.preventDefault(),a("close");return}if(u.key!=="Tab")return;const m=r.value?.querySelectorAll("a[href],button:not(:disabled),input:not(:disabled),textarea:not(:disabled),select:not(:disabled),[tabindex='0']"),p=m?.[0],c=m?.[m.length-1];u.shiftKey&&document.activeElement===p&&(u.preventDefault(),c?.focus()),!u.shiftKey&&document.activeElement===c&&(u.preventDefault(),p?.focus())}return e.onMounted(()=>{s=document.activeElement instanceof HTMLElement?document.activeElement:null,l.value?.focus()}),e.onUnmounted(()=>s?.focus()),(u,m)=>(e.openBlock(),e.createElementBlock("div",{class:"mrp-settings-backdrop",onClick:m[2]||(m[2]=e.withModifiers(p=>u.$emit("close"),["self"])),onKeydown:b},[e.createElementVNode("section",{ref_key:"panel",ref:r,class:"mrp-settings-panel",role:"dialog","aria-modal":"true","aria-label":t.messages.settings},[e.createElementVNode("header",no,[e.createElementVNode("div",null,[e.createElementVNode("strong",null,e.toDisplayString(t.messages.settings),1),e.createElementVNode("p",null,e.toDisplayString(t.messages.settingsLocal),1)]),e.createElementVNode("button",{ref_key:"closeButton",ref:l,class:"mrp-settings-close",type:"button","aria-label":t.messages.settingsClose,onClick:m[0]||(m[0]=p=>u.$emit("close"))},"×",8,oo)]),e.createElementVNode("div",ro,[e.renderSlot(u.$slots,"default",{},void 0,!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,p=>(e.openBlock(),e.createElementBlock("fieldset",{key:p.label},[e.createElementVNode("legend",null,e.toDisplayString(p.label),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.tools,c=>(e.openBlock(),e.createElementBlock("label",{key:c.key,class:e.normalizeClass(["mrp-settings-option",{"mrp-settings-unavailable":!t.available[c.key]}])},[e.createElementVNode("span",null,[e.createTextVNode(e.toDisplayString(c.label),1),t.available[c.key]?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("small",ao,e.toDisplayString(t.messages.settingsUnavailable),1))]),e.createElementVNode("input",{type:"checkbox",checked:t.enabled[c.key],disabled:t.busy||!t.available[c.key],onChange:E=>g(E,c.key)},null,40,lo)],2))),128))]))),128)),t.available.editing?(e.openBlock(),e.createElementBlock("p",so,e.toDisplayString(t.persistedEditing?t.messages.editingSaved:t.messages.editingLocal),1)):e.createCommentVNode("",!0),t.available.import?(e.openBlock(),e.createElementBlock("p",io,e.toDisplayString(t.messages.importLocal),1)):e.createCommentVNode("",!0)]),e.createElementVNode("footer",null,[e.createElementVNode("button",{type:"button",disabled:t.busy,onClick:m[1]||(m[1]=p=>u.$emit("reset"))},e.toDisplayString(t.messages.settingsReset),9,co)])],8,to)],32))}}),mo=Ee(uo,[["__scopeId","data-v-fe89b48b"]]),fo={class:"mrp-empty",role:"status"},po={key:0},vo=e.defineComponent({__name:"ReportEmpty",props:{title:{},description:{}},setup(t){return(n,o)=>(e.openBlock(),e.createElementBlock("div",fo,[o[0]||(o[0]=e.createStaticVNode('<svg class="mrp-empty-art" viewBox="0 0 160 112" fill="none" aria-hidden="true" data-v-07e9cb82><ellipse cx="80" cy="100" rx="54" ry="7" fill="currentColor" opacity=".05" data-v-07e9cb82></ellipse><rect x="34" y="15" width="92" height="78" rx="9" fill="currentColor" opacity=".04" data-v-07e9cb82></rect><rect x="42" y="9" width="76" height="78" rx="7" fill="var(--mrp-toolbar-bg, #fff)" stroke="currentColor" stroke-opacity=".2" stroke-width="1.5" data-v-07e9cb82></rect><path d="M55 27H105M55 42H105M55 57H85M55 72H76M71 27V72M89 27V57" stroke="currentColor" stroke-opacity=".15" stroke-width="1.5" stroke-linecap="round" data-v-07e9cb82></path><circle cx="112" cy="76" r="16" fill="var(--mrp-toolbar-bg, #fff)" stroke="currentColor" stroke-opacity=".35" stroke-width="2" data-v-07e9cb82></circle><path d="M124 88L137 101M106 76H118" stroke="currentColor" stroke-opacity=".45" stroke-width="3" stroke-linecap="round" data-v-07e9cb82></path><circle cx="27" cy="38" r="3" fill="currentColor" opacity=".12" data-v-07e9cb82></circle><circle cx="132" cy="24" r="2" fill="currentColor" opacity=".2" data-v-07e9cb82></circle></svg>',1)),e.createElementVNode("strong",null,e.toDisplayString(t.title),1),t.description?(e.openBlock(),e.createElementBlock("p",po,e.toDisplayString(t.description),1)):e.createCommentVNode("",!0)]))}}),kt=Ee(vo,[["__scopeId","data-v-07e9cb82"]]),go={class:"mrp-params"},ho={class:"mrp-params-title"},bo={class:"mrp-params-grid"},yo={class:"mrp-param-label"},wo={key:0,class:"mrp-param-star"},xo=["value","onChange"],Eo={value:"",disabled:"",hidden:""},ko=["value"],Po=["type","placeholder","value","onInput"],Co={class:"mrp-params-actions"},Bo=e.defineComponent({__name:"ReportParamPanel",props:{defs:{},modelValue:{},messages:{},attempted:{type:Boolean}},emits:["update:modelValue","query","reset"],setup(t,{emit:n}){const o=t,a=n,r=e.ref({...o.modelValue});e.watch(()=>o.modelValue,g=>{r.value={...g}});const l=e.computed(()=>o.defs.map(g=>({def:g,label:g.label??g.field,value:r.value[g.field]??""})));function s(g,b){r.value={...r.value,[g]:b},a("update:modelValue",{...r.value})}function f(g){const b=o.defs.find(u=>u.field===g);return o.attempted&&b?.required===!0&&!(r.value[g]??"").trim()}return(g,b)=>(e.openBlock(),e.createElementBlock("div",go,[e.createElementVNode("span",ho,e.toDisplayString(t.messages.paramsTitle),1),e.createElementVNode("div",bo,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,u=>(e.openBlock(),e.createElementBlock("label",{key:u.def.field,class:e.normalizeClass(["mrp-param",{"mrp-param-missing":f(u.def.field)}])},[e.createElementVNode("span",yo,[e.createTextVNode(e.toDisplayString(u.label),1),u.def.required?(e.openBlock(),e.createElementBlock("i",wo,"*")):e.createCommentVNode("",!0)]),(u.def.type??"text")==="select"?(e.openBlock(),e.createElementBlock("select",{key:0,class:"mrp-param-input",value:u.value,onChange:m=>s(u.def.field,m.target.value),onKeydown:b[0]||(b[0]=e.withKeys(m=>g.$emit("query"),["enter"]))},[e.createElementVNode("option",Eo,e.toDisplayString(u.def.placeholder??`请选择${u.label}`),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.def.options??[],m=>(e.openBlock(),e.createElementBlock("option",{key:m.value,value:m.value},e.toDisplayString(m.label),9,ko))),128))],40,xo)):(e.openBlock(),e.createElementBlock("input",{key:1,class:"mrp-param-input",type:u.def.type==="number"?"number":u.def.type==="date"?"date":"text",placeholder:u.def.placeholder??`请输入${u.label}`,value:u.value,onInput:m=>s(u.def.field,m.target.value),onKeydown:b[1]||(b[1]=e.withKeys(m=>g.$emit("query"),["enter"]))},null,40,Po))],2))),128))]),e.createElementVNode("div",Co,[e.createElementVNode("button",{class:"mrp-nav mrp-param-query",type:"button",onClick:b[2]||(b[2]=u=>g.$emit("query"))},e.toDisplayString(t.messages.query),1),e.createElementVNode("button",{class:"mrp-nav",type:"button",onClick:b[3]||(b[3]=u=>g.$emit("reset"))},e.toDisplayString(t.messages.reset),1)])]))}}),Tt=Ee(Bo,[["__scopeId","data-v-aafce92d"]]),Vt={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}",searching:"搜索中…",importExcel:"导入 Excel 模板",importing:"正在导入 Excel…",editCell:"编辑单元格",editingHint:"双击单元格编辑 · Enter 确认 · Esc 取消",saving:"正在保存修改…",editInvalidNumber:"请输入有效数字;清空表示无值",editInvalidBoolean:"请输入 true / false、是 / 否或 1 / 0",editConflict:"该单元格已变化,请重新打开编辑",settings:"设置",settingsDisplay:"阅读工具",settingsExport:"导出与打印",settingsData:"数据操作",settingsUnavailable:"需由接入方配置启用",settingsReset:"恢复默认",settingsClose:"关闭设置",search:"内容搜索",zoom:"缩放工具",settingsLocal:"按需启用工具,仅作用于当前预览。",editingLocal:"修改为本地草稿;不会自动写入业务数据库。",editingSaved:"修改将通过接入方配置的保存回调提交。",importLocal:"导入仅生成本地预览,不自动替换业务数据。",emptyDescription:"当前查询没有明细,请调整查询条件后重试。"},It={shellBg:"#525659",shellFg:"#e8e8e8",toolbarBg:"#323639",toolbarBorder:"#22252a",toolbarFg:"#e8e8e8",btnFg:"#cfcfcf",btnBorder:"#4a4d52",btnHoverBg:"#414549",btnHoverFg:"#ffffff",btnActiveBg:"#2d5fb8"};function Ot(t={}){return{...t,defaults:t.defaults??{},presets:t.presets??{}}}function So(t){return t}const se={showExport:!0,showPrint:!0,showPdfWindow:!0,showSettings:!0,showParams:!0,gapPx:18,pdfFontUrl:"/simhei.ttf",logger:console},$o={warn:()=>{},info:()=>{}};function De(t,n){return{...t,...n,theme:{...t?.theme,...n?.theme},messages:{...t?.messages,...n?.messages},preview:{...t?.preview,...n?.preview},xlsx:{...t?.xlsx,...n?.xlsx},toolbar:{...t?.toolbar,...n?.toolbar}}}function Ro(t){return{showExport:t.showExport??se.showExport,showPrint:t.showPrint??se.showPrint,showPdfWindow:t.showPdfWindow??se.showPdfWindow,showSettings:t.showSettings??se.showSettings,showParams:t.showParams??se.showParams,gapPx:t.gapPx??se.gapPx}}function zt(t,n){const o=n?t?.presets?.[n]:t?.defaultPreset?t?.presets?.[t.defaultPreset]:void 0,a=De(t?.defaults,o);return{...Ro(a),pdfFontUrl:a.pdfFontUrl??se.pdfFontUrl,theme:{...It,...a.theme},messages:{...Vt,...a.messages},logger:a.logger??se.logger,preview:{overscanPages:Pt(a.preview?.overscanPages,1,10,!0),searchDebounceMs:Pt(a.preview?.searchDebounceMs,200,2e3)},xlsx:{...a.xlsx},editable:a.editable??!1,excelImport:a.excelImport??!1,toolbar:{...a.toolbar}}}function Pt(t,n,o,a=!1){if(t==null||!Number.isFinite(t))return n;const r=Math.max(0,Math.min(o,t));return a?Math.floor(r):r}function Lt(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 Mo(t){const n=e.inject(pe.MACH_REPORT_CONFIG_KEY,null),o=e.computed(()=>{const a=n?.value??null,r="defaults"in t||"presets"in t||"defaultPreset"in t?Ot(t):{defaults:t,presets:{}};if(!a)return r;const l={...a.presets,...r.presets};for(const s of Object.keys(l))l[s]=De(De(a.presets[s],r.defaults),r.presets[s]);return{defaults:De(a.defaults,r.defaults),presets:l,defaultPreset:r.defaultPreset??a.defaultPreset}});e.provide(pe.MACH_REPORT_CONFIG_KEY,o)}function Wt(){return e.inject(pe.MACH_REPORT_CONFIG_KEY,e.computed(()=>null))}const Ct=new Map,me=new Map,Fo=15e3;function ot(t,n){return Object.assign(new Error(t),{cause:n})}function xe(t,n){return`PDF 字体 ${JSON.stringify(t)}:${n}。请部署支持报表文字的字体文件,并将 pdfFontUrl 配置为可访问的字体 URL;西文报表可设为空串`}function Ie(t){if(t?.reason instanceof Error&&t.reason.name==="AbortError")return t.reason;const n=ot("PDF 字体检查已取消",t?.reason);return n.name="AbortError",n}async function No(t,n){let o=!1;const a=setTimeout(()=>{o=!0,n.abort()},Fo);try{const r=await fetch(t,{method:"HEAD",signal:n.signal});if(n.signal.aborted)throw Ie(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 s=new Error(`字体请求返回 HTTP ${r.status}`);return{status:"error",fontUrl:t,message:xe(t,s.message),cause:s}}const l=r.headers.get("content-type")??"";if(/text\/html|application\/xhtml\+xml/i.test(l)){const s=new Error("字体 URL 返回 HTML 页面(可能是 SPA 路由回退),不是字体文件");return{status:"error",fontUrl:t,message:xe(t,s.message),cause:s}}if(/^text\//i.test(l)||/(?:\/|\+)json(?:\s*;|$)/i.test(l)){const s=new Error(`字体 URL 返回 ${l} 文本响应,不是字体文件`);return{status:"error",fontUrl:t,message:xe(t,s.message),cause:s}}return{status:"available",fontUrl:t,message:"PDF 字体资源可达;文字覆盖范围将在实际导出时校验"}}catch(r){if(n.signal.aborted&&!o)throw Ie(n.signal);return{status:"error",fontUrl:t,message:xe(t,o?"字体检查超时,请检查网络或字体服务":"字体检查失败,请检查网络、字体服务或跨域访问配置"),cause:r}}finally{clearTimeout(a)}}function Do(t,n){if(n?.aborted)return Promise.reject(Ie(n));if(!t)return Promise.resolve({status:"disabled",fontUrl:t,message:"已停用自定义 PDF 字体;内置字体用于西文,其他文字会在导出时校验"});const o=Ct.get(t);if(o)return Promise.resolve(o);let a=me.get(t);if(!a){const l=new AbortController;a={controller:l,promise:No(t,l),subscribers:0};const s=a;me.set(t,s),s.promise=s.promise.then(f=>(!l.signal.aborted&&f.status==="available"&&Ct.set(t,f),f)).finally(()=>{me.get(t)===s&&me.delete(t)})}const r=a;return r.subscribers++,new Promise((l,s)=>{let f=!1;const g=()=>f?!1:(f=!0,r.subscribers--,n?.removeEventListener("abort",b),!0),b=()=>{g()&&(r.subscribers===0&&(me.get(t)===r&&me.delete(t),r.controller.abort()),s(Ie(n)))};n?.addEventListener("abort",b,{once:!0}),r.promise.then(u=>{g()&&l(u)},u=>{g()&&s(u)}),n?.aborted&&b()})}function At(t={fontUrl:"/simhei.ttf"}){let n=null;const o=async(a,r)=>{n||(n=await import("@agile-team/mach-report/pdf"));let l=null;if(t.fontUrl)try{if(l=await n.loadFontWithCache(t.fontUrl,{strict:!0}),!l?.byteLength)throw new Error("字体文件为空或加载失败")}catch(m){const p=m instanceof Error?m.message:String(m);throw ot(xe(t.fontUrl,p),m)}let s;try{s=await n.renderPlanToPdf(a,l?{customFontBytes:l}:{})}catch(m){if(!l)throw m;const p=m instanceof Error?m.message:String(m);throw ot(`PDF 生成失败:${p}。当前字体 URL 为 ${JSON.stringify(t.fontUrl)};请确认该文件是有效字体,或重新配置 pdfFontUrl`,m)}const{bytes:f,unsupportedTextCount:g,pageErrors:b,fidelityWarnings:u}=s;if(g>0)throw new Error(`PDF 中有 ${g} 行文字无法编码;请部署支持所用文字的字体并配置 pdfFontUrl`);if(b.length>0)throw new Error(`PDF 有 ${b.length} 页渲染失败:${b[0]}`);return u.length>0&&r?.(`PDF 有 ${u.length} 处版式降级:${u.slice(0,2).join(";")}`),f};return o.checkFont=a=>Do(t.fontUrl,a),o}class re extends Error{constructor(n,o,a){super(o),this.name="MachReportError",this.code=n,this.cause=a}}function Ht(t){return t instanceof re?{code:t.code,cause:t.cause}:{code:"render",cause:t}}function fe(t){return JSON.parse(JSON.stringify(t))}function To(t){const n=t.closest(".mrp-page-holder"),o=t.closest("[data-mr-component-index]");if(!n||!o)return null;const a={pageIndex:Number(n.dataset.page)-1,componentIndex:Number(o.dataset.mrComponentIndex),rowIndex:Number(t.dataset.mrRowIndex),columnIndex:Number(t.dataset.mrColumnIndex)};return Object.values(a).every(r=>Number.isInteger(r)&&r>=0)?a:null}function Vo(t,n,o){const a=t.ownerDocument.createElement("textarea");return a.className="mrp-cell-editor",a.setAttribute("aria-label",n),a.value=o==null?"":String(o),a.style.cssText="position:absolute;inset:0;width:100%;height:100%;min-height:20px;box-sizing:border-box;z-index:10;resize:none;margin:0;padding:2px 4px;border:2px solid #2563eb;outline:none;background:#fff;color:#111;font:inherit;line-height:1.25;white-space:pre-wrap;",t.appendChild(a),a}function Io(t){const n=e.shallowRef(null),o=e.ref(!1),a=e.shallowRef([]);let r=null;function l(){const c=n.value;n.value=null,o.value=!1,r=null,c?.controller.abort(),c?.input.remove()}function s(){l(),a.value=[]}function f(c){return n.value===c&&!c.controller.signal.aborted&&t.plan.value===c.plan}function g(c){const E=t.options.value,C=U.getReportCellContext(c.plan,c.address);if(!(typeof E=="object"?E===c.options:E===!0)||!C?.editable||c.options.canEdit?.(C)===!1)throw new U.ReportCellEditError("readonly")}async function b(c){try{g(c);const E=U.createReportCellEdit(c.plan,c.address,c.input.value);if(Object.is(E.value,E.previousValue))return l(),!0;const C={signal:c.controller.signal},x=await c.options.validate?.(fe(E),C);if(!f(c))return!1;if(x)throw new Error(x);if(g(c),await c.options.save?.(fe(E),C),!f(c))return!1;g(c);const S=U.applyReportCellEdit(c.plan,E);return l(),a.value=[...a.value,E],t.plan.value=S,t.onChange(fe(E)),!0}catch(E){return f(c)&&(t.onError(t.errorMessage?.(E)??(E instanceof Error?E.message:"单元格保存失败"),E),c.input.disabled=!1,c.input.setAttribute("aria-invalid","true"),c.input.focus()),!1}finally{n.value===c&&(o.value=!1)}}async function u(){if(r)return r;const c=n.value;if(!c)return!0;if(!f(c))return l(),!1;o.value=!0,c.input.disabled=!0;const E=b(c);r=E;const C=await E;return r===E&&(r=null),C}function m(c){c.stopPropagation(),!c.isComposing&&(c.key==="Escape"&&(c.preventDefault(),l()),c.key==="Enter"&&!c.shiftKey&&(c.preventDefault(),u()))}async function p(c){if(!t.options.value||t.blocked())return;const E=c.target;if(!(E instanceof Element)||E.closest(".mrp-cell-editor"))return;const C=E.closest("td[data-mr-row-index]");if(!C||!await u()||!C.isConnected)return;const x=t.plan.value,S=To(C);if(!x||!S||!t.options.value||t.blocked())return;const k=typeof t.options.value=="object"?t.options.value:{};try{const $=U.getReportCellContext(x,S);if(!$?.editable||k.canEdit?.($)===!1)return;const B=Vo(C,t.label(),$.value);n.value={plan:x,address:S,input:B,controller:new AbortController,options:k},B.addEventListener("keydown",m),B.addEventListener("blur",()=>{o.value||u()}),B.focus(),B.select()}catch($){t.onError($ instanceof Error?$.message:"无法编辑单元格",$)}}return e.watch(t.options,(c,E)=>{(!c||c!==E)&&l()},{flush:"sync"}),e.watch(t.plan,()=>{n.value&&t.plan.value!==n.value.plan&&l()},{flush:"sync"}),e.onScopeDispose(s),{active:n,saving:o,changes:a,cancel:l,reset:s,commit:u,onDoubleClick:p,getChanges:()=>fe(a.value)}}const Oe=["html","pdf","xlsx","png","word"],jt=["search","thumbnails","zoom",...Oe,"print","pdfWindow","editing","import"];function Oo(t,n){const o=e.ref({}),a=e.computed(()=>Object.fromEntries(jt.map(s=>[s,t.value[s]&&(o.value[s]??n.value[s]??!0)])));function r(s,f){t.value[s]&&(o.value={...o.value,[s]:f})}function l(){o.value={}}return{enabled:a,setEnabled:r,reset:l}}const zo={key:3,class:"mrp-edit-hint",role:"status"},Lo={key:5,class:"mrp-export-notice mrp-export-warning",role:"status"},Wo={class:"mrp-main"},Ao={key:0,class:"mrp-state"},Ho={key:1,class:"mrp-state mrp-error"},jo=["data-page"],qo=["onClick"],Uo=["data-thumb"],Ko={class:"mrp-thumb-no"},Zo={class:"mrp-overlay"},Go={key:6,class:"mrp-debug","aria-hidden":"true"},Me=96/25.4,tt="mach-report:ui",nt="mach-report:ui:wide",Yo=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},showSettings:{type:Boolean,default:void 0},toolbar:{type:Object,default:void 0},emptyState:{type:[Boolean,Object],default:!1},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},editable:{type:[Boolean,Object],default:void 0},excelImport:{type:[Boolean,Object],default:void 0},fetcher:{type:Function,default:null}},emits:["loaded","error","warning","cell-edit","template-import","preferences-change"],setup(t,{expose:n,emit:o}){e.useCssVars(i=>({v54e94a63:K.value+"px"}));const a=t,r=o,l=e.shallowRef(null),s=e.ref(!1),f=e.ref(""),g=e.shallowRef(null),b=e.ref(null),u=e.ref(!1),m=e.shallowRef(Object.freeze({status:"unchecked",fontUrl:""})),p=e.ref(null),c=e.ref(1),E=e.ref(null),C=e.ref(null),x=e.ref(null),S=e.ref(!1),k=e.ref(!1),$=e.ref(!1),B=e.ref(null),M=Dn(),N=e.computed(()=>!!l.value?.pages.length&&l.value.pages.every(i=>i.layout==="wide")),K=e.computed(()=>Math.max(0,it.value));let z=tt;const Z=e.inject(pe.MACH_REPORT_FETCHER_KEY,null),H=e.inject(pe.MACH_REPORT_PDF_EXPORTER_KEY,null),J=e.computed(()=>rt(a.reportId)),ae=e.computed(()=>a.fetcher??Z),O=e.computed(()=>l.value?.pages.length??0),te=e.computed(()=>Object.freeze({loading:s.value,hasPlan:O.value>0,pageCount:O.value,currentPage:c.value,exporting:b.value,printing:u.value,canExport:!s.value&&!k.value&&!I.saving.value&&O.value>0&&b.value===null,canPrint:!s.value&&!k.value&&!I.saving.value&&O.value>0&&!u.value,error:g.value,pdfFont:m.value,editing:I.active.value!==null,saving:I.saving.value,importing:k.value,dirty:I.changes.value.length>0}));function d(i,v,h){g.value=Object.freeze({message:i,code:v,cause:h}),r("error",i,{code:v,cause:h})}const y=Wt(),w=e.computed(()=>zt(y.value,a.preset)),P=e.computed(()=>({...w.value.messages,...a.messages})),R=e.computed(()=>a.showExport??w.value.showExport),W=e.computed(()=>a.showPrint??w.value.showPrint),j=e.computed(()=>a.showPdfWindow??w.value.showPdfWindow),X=e.computed(()=>a.showSettings??w.value.showSettings),ue=e.computed(()=>({...w.value.toolbar,...a.toolbar})),it=e.computed(()=>a.gapPx??(N.value?0:w.value.gapPx)),Ut=e.computed(()=>a.showParams??w.value.showParams),ke=e.computed(()=>a.editable??w.value.editable),ct=e.computed(()=>a.excelImport??w.value.excelImport),ut=e.computed(()=>({search:ue.value.search!==!1,thumbnails:ue.value.thumbnails!==!1,zoom:ue.value.zoom!==!1,...Object.fromEntries(Oe.map(i=>[i,R.value&&(ue.value.exportFormats?.includes(i)??!0)])),print:W.value,pdfWindow:j.value,editing:!!ke.value,import:!!ct.value})),ze=Oo(ut,e.computed(()=>({editing:ue.value.editing,import:ue.value.excelImport}))),L=ze.enabled,Kt=e.computed(()=>Oe.filter(i=>L.value[i])),dt=e.computed(()=>L.value.editing?ke.value:!1),Pe=e.computed(()=>L.value.import?ct.value:!1),Zt=e.computed(()=>typeof ke.value=="object"&&typeof ke.value.save=="function"),Le=e.computed(()=>typeof a.emptyState=="object"?a.emptyState:{});async function Gt(i,v){i==="editing"&&!v&&!await I.commit()||(ze.setEnabled(i,v),r("preferences-change",Object.freeze({...L.value})))}async function Yt(){await I.commit()&&(ze.reset(),r("preferences-change",Object.freeze({...L.value})))}function Jt(i){return i instanceof U.ReportCellEditError?{number:P.value.editInvalidNumber,boolean:P.value.editInvalidBoolean,conflict:P.value.editConflict}[i.code]??i.message:i instanceof Error?i.message:"单元格保存失败"}const I=Io({plan:l,options:dt,blocked:()=>s.value||k.value||b.value!==null||u.value,label:()=>P.value.editCell??"编辑单元格",errorMessage:Jt,onChange:i=>{g.value=null,p.value=null,r("cell-edit",i)},onError:(i,v)=>{p.value={kind:"error",message:i},d(i,"edit",v)}});let mt=null,We=null;function ft(){if(H)return H;const i=w.value.pdfFontUrl;return(!We||mt!==i)&&(mt=i,We=At({fontUrl:i})),We}let Ce=0,ve=null,Be=null,ne=!1;function Ae(){Ce++,ve?.abort(),ve=null}async function Se(){if(ne)throw new re("config","报表预览已卸载");Ae();const i=Ce,v=new AbortController;ve=v;const h=w.value.pdfFontUrl;m.value=Object.freeze({status:"checking",fontUrl:h});try{const V=ft(),D=V.checkFont?await V.checkFont(v.signal):{status:"unverified",fontUrl:"",message:"自定义 PDF 导出器未提供字体预检查;字体由宿主确认"};return!ne&&i===Ce&&!v.signal.aborted&&(m.value=Object.freeze({...D})),D}catch(V){if(v.signal.aborted)throw V;const D={status:"error",fontUrl:h,message:V instanceof Error?V.message:"PDF 字体检查失败",cause:V};return!ne&&i===Ce&&(m.value=Object.freeze(D)),D}finally{ve===v&&(ve=null)}}function Xt(){Se().catch(()=>{})}e.watch([l,()=>w.value.pdfFontUrl,R,j],()=>{const i=m.value.fontUrl===w.value.pdfFontUrl;i&&m.value.status==="available"||(Ae(),(!i||m.value.status==="checking")&&(m.value=Object.freeze({status:"unchecked",fontUrl:w.value.pdfFontUrl})),!ne&&O.value>0&&(R.value||j.value)&&Se().catch(()=>{}))},{immediate:!0});const le=e.computed(()=>a.paramDefs??ae.value?.getParamDefs?.(J.value)??[]),ie=e.ref({}),He=e.ref(!1);function ge(i){const v={};for(const h of i)v[h.field]=a.params[h.field]??h.defaultValue??"";ie.value=v,He.value=!1}ge(le.value),e.watch(le,i=>ge(i)),e.watch(J,()=>ge(le.value)),e.watch(()=>JSON.stringify(a.params),()=>ge(le.value));const Qt=e.computed(()=>{const i={...a.params};for(const[v,h]of Object.entries(ie.value))h===""?delete i[v]:i[v]=h;return i});function _t(){return le.value.filter(i=>i.required===!0&&!(ie.value[i.field]??"").trim())}function en(){He.value=!0;const i=_t();if(i.length>0){const v=i[0].label??i[0].field,h=P.value.paramRequired.replace("{label}",v);f.value=h,d(h,"param");return}ce()}function tn(){ge(le.value)}const nn=e.computed(()=>({height:a.height,...Lt(w.value.theme)})),{zoom:G,zoomMode:he,applyFitZoom:pt,setZoom:be}=Rt(()=>({viewport:C.value,pageWidthPx:je.contentSize.value.w||210*Me})),je=$t(l,G,{pxPerMm:Me,gapPx:it,overscan:e.computed(()=>w.value.preview.overscanPages)}),{contentSize:qe,windowRange:ye,visiblePages:vt,makeScrollHandler:on,refreshViewport:Ue}=je,rn=on(c,O);function Ke(i){be(i*100)}function $e(){k.value=!1,I.reset(),gt(),l.value=null,c.value=1,T.reset()}let A=0,Q=null;async function ce(){if(ne)return;const i=++A;k.value=!1,Q?.abort(),Q=null;const v=ae.value;if(s.value=!1,g.value=null,J.value.length===0){f.value="缺少报表 ID",$e(),d(f.value,"param");return}if(!v){f.value="未提供渲染数据源 fetcher",$e(),d(f.value,"config");return}s.value=!0,f.value="",p.value=null,$e();const h=M.start(),V=new AbortController;Q=V;const D=new Set;function _(F){i!==A||V.signal.aborted||D.has(F)||(D.add(F),w.value.logger.warn("[mach-report] 报表告警:",F),r("warning",F))}try{const F=await v({reportIds:J.value,params:{...Qt.value},signal:V.signal,onWarning:_});if(i!==A)return;const q=U.validateRenderPlan(F);if(!q.ok){const Re=q.errors.slice(0,3).map(xt=>`${xt.path}: ${xt.message}`).join("; ");throw new re("validate",`渲染计划校验失败(${q.errors.length} 处): ${Re}`)}if(q.warnings.forEach(Re=>_(`${Re.path}: ${Re.message}`)),i!==A||V.signal.aborted)return;l.value=F,c.value=1,M.end(h),C.value&&(C.value.scrollTop=0,C.value.scrollLeft=0);const Y=N.value?nt:tt;Y!==z&&(z=Y,_e()),he.value==="fit"&&pt(),r("loaded",F.pages.length)}catch(F){if(i!==A)return;const q=F instanceof re?F:F instanceof U.ReportSourceError?new re(F.code,F.message,F.cause):new re("fetch",F instanceof Error?F.message:"预览加载失败",F);f.value=q.message;const Y=Ht(q);d(q.message,Y.code,Y.cause)}finally{i===A&&(s.value=!1),Q===V&&(Q=null)}}function oe(i){if(ne||O.value<=0)return;const v=Math.max(1,Math.min(O.value,i));c.value=v;const h=C.value;h&&(h.scrollTop=je.pageOffsetPx(v-1)*G.value,Ue(h))}const we=Ft(l,{getPdfExporter:ft,getXlsxOptions:()=>w.value.xlsx,onError:(i,v)=>{p.value={kind:"error",message:i},d(i,v??"print")},onWarning:i=>{p.value={kind:"warning",message:i},r("warning",i)},onBusy:i=>{b.value=i,i?p.value={kind:"progress",message:P.value.exporting.replace("{format}",i)}:p.value?.kind==="progress"&&(p.value=null)},onPrinting:i=>{u.value=i}}),{releasePrintFrame:gt,dispose:an}=we;async function Ze(){s.value||k.value||I.active.value&&!await I.commit()||(g.value=null,await we.print())}async function Ge(i){s.value||k.value||I.active.value&&!await I.commit()||(g.value=null,await we.exportAs(i))}function Ye(){if(s.value||k.value||I.active.value){p.value={kind:"warning",message:P.value.editingHint??"请先确认单元格修改"};return}g.value=null,we.openPdfWindow()}async function ht(i,v={}){ne||(ie.value={...ie.value,...i},v.reload!==!1&&await ce())}const ln={reload:ce,print:Ze,exportAs:Ge,openPdfWindow:Ye,gotoPage:oe,setParams:ht,checkPdfFont:Se,importExcel:Je,getPlan:bt,getChanges:I.getChanges,get state(){return te.value}};e.provide(pe.MACH_REPORT_CONTROLLER_KEY,ln);function bt(){return l.value?fe(l.value):null}async function Je(i,v){if(ne)throw new re("config","报表预览已卸载");const h=++A;Q?.abort(),Q=null,s.value=!1,I.cancel(),we.invalidatePending(),k.value=!0,g.value=null,p.value={kind:"progress",message:P.value.importing??"正在导入 Excel…"};try{const{importExcelTemplate:V}=await import("@agile-team/mach-report/xlsx");if(h!==A)return null;const D=typeof Pe.value=="object"?Pe.value:{},_=await V(i,{...D,...v,limits:{...D.limits,...v?.limits}});if(h!==A)return null;const F=U.paginateTemplate(fe(_.template),{}).plan,q=U.validateRenderPlan(F);if(!q.ok)throw new Error(q.errors.map(Y=>Y.message).slice(0,3).join("; "));for(const Y of _.warnings){if(h!==A)return null;r("warning",Y)}return h!==A?null:(I.reset(),gt(),T.reset(),l.value=F,c.value=1,f.value="",p.value=_.warnings.length?{kind:"warning",message:_.warnings.join(";")}:null,C.value&&(C.value.scrollTop=0,C.value.scrollLeft=0),z=N.value?nt:tt,_e(),r("template-import",_),h===A&&r("loaded",F.pages.length),_)}catch(V){if(h!==A)return null;const D=new re("import",V instanceof Error?V.message:"Excel 模板导入失败",V);throw p.value={kind:"error",message:D.message},d(D.message,"import",V),D}finally{h===A&&(k.value=!1)}}function sn(i){const v=i.target,h=v.files?.[0];v.value="",h&&Je(h).catch(()=>{})}const T=Mn({plan:l,gotoPage:oe,debounceMs:e.computed(()=>w.value.preview.searchDebounceMs),highlight:kn,clearHighlights:En});e.watch(()=>L.value.search,i=>{i||(T.reset(),T.visible.value=!1)});function cn(i){!i.ctrlKey||!L.value.zoom||(i.preventDefault(),Ke(G.value*(i.deltaY<0?1.1:1/1.1)))}function un(i){if(!(i.target instanceof Element&&i.target.closest("input,textarea,select,[contenteditable='true']"))){if(L.value.search&&(i.ctrlKey||i.metaKey)&&i.key.toLowerCase()==="f"){i.preventDefault(),T.visible.value||T.toggle();return}switch(i.key){case"PageDown":i.preventDefault(),oe(c.value+1);break;case"PageUp":i.preventDefault(),oe(c.value-1);break;case"Home":i.preventDefault(),oe(1);break;case"End":i.preventDefault(),oe(O.value);break;case"+":case"=":i.preventDefault(),L.value.zoom&&Ke(G.value*1.1);break;case"-":i.preventDefault(),L.value.zoom&&Ke(G.value/1.1);break}}}function dn(){try{localStorage.setItem(z,JSON.stringify({zoomMode:he.value==="fit"?"fit":Math.round(G.value*100)}))}catch{}}e.watch([he,G],dn);let Xe="";const yt=new WeakMap;function wt(i=!1){const v=T.activeMatch.value;if(!N.value||!v)return;const h=`${T.query.value}:${T.matchIndex.value}:${v.pageIndex}`;if(!i&&h===Xe)return;const D=E.value?.querySelector(`[data-page="${v.pageIndex+1}"]`)?.querySelectorAll("mark.mrp-hit")[v.occurrence];D&&(D.scrollIntoView?.({block:"nearest",inline:"nearest"}),Xe=h)}e.watchEffect(()=>{const i=l.value;if(!i)return;const v=T.activeMatch.value;T.matchIndex.value,v||(Xe=""),vt.value;const h=E.value;if(!h)return;h.querySelectorAll(".mrp-page-holder").forEach(D=>{const _=Number(D.dataset.page??0)-1,F=i.pages[_];if(!F||D.childElementCount>0&&yt.get(D)===F){if(D.firstElementChild){const Y=D.firstElementChild;T.clear(Y),T.apply(Y)}return}D.style.width=`${F.pageWidthMm*Me}px`;const q=U.renderPage(F,96,{},document);T.apply(q),D.replaceChildren(q),yt.set(D,F)}),wt()},{flush:"post"}),e.watch(()=>T.query.value,i=>{i||E.value?.querySelectorAll(".mrp-page-holder").forEach(v=>{T.clear(v)})});const ee=Nn(l,{thumbsRoot:x,visible:S,renderThumbCanvas:i=>{try{const v=l.value.pages[i],h=Math.min(.2,116/Math.max(1,v.pageWidthMm*Me)),{canvases:V}=U.renderPlanToCanvas(l.value,{start:i,end:i,dpr:h});return V[0]??null}catch{return null}}});e.watchEffect(()=>{ee.schedule()},{flush:"post"});const mn=e.computed(()=>a.debug),{debugStats:de}=Fn(mn,{plan:l,pageCount:O,windowRange:ye,zoom:G,loadMs:M.loadMs});function Qe(){Ue(C.value),ee.schedule(),he.value==="fit"&&pt(),wt(!0)}function _e(){be(z===nt?100:"fit");try{const i=JSON.parse(localStorage.getItem(z)??"{}");i.zoomMode==="fit"?be("fit"):typeof i.zoomMode=="number"&&be(i.zoomMode)}catch{}}return e.onMounted(()=>{window.addEventListener("resize",Qe),typeof ResizeObserver<"u"&&C.value&&(Be=new ResizeObserver(Qe),Be.observe(C.value)),Ue(C.value),_e(),a.autoLoad&&ce()}),e.onUnmounted(()=>{ne=!0,I.reset(),k.value=!1,Ae(),A++,Q?.abort(),Q=null,window.removeEventListener("resize",Qe),Be?.disconnect(),Be=null,ee.destroy(),T.reset(),an()}),e.watch(()=>[JSON.stringify(J.value),JSON.stringify(a.params),ae.value],()=>{if(a.autoLoad){ce();return}A++,Q?.abort(),Q=null,s.value=!1,f.value="",g.value=null,p.value=null,$e()}),n({reload:ce,print:Ze,exportAs:Ge,openPdfWindow:Ye,gotoPage:oe,setParams:ht,checkPdfFont:Se,importExcel:Je,getPlan:bt,getChanges:I.getChanges,state:te}),(i,v)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["mach-report-preview",{"mrp-wide-report":N.value}]),style:e.normalizeStyle(nn.value)},[Ut.value&&le.value.length>0?(e.openBlock(),e.createBlock(Tt,{key:0,defs:le.value,modelValue:ie.value,"onUpdate:modelValue":v[0]||(v[0]=h=>ie.value=h),messages:P.value,attempted:He.value,onQuery:en,onReset:tn},null,8,["defs","modelValue","messages","attempted"])):e.createCommentVNode("",!0),e.createVNode(Dt,{"page-count":O.value,"current-page":c.value,"zoom-mode":e.unref(he),zoom:e.unref(G),"show-export":R.value,"show-print":e.unref(L).print,"show-pdf-window":e.unref(L).pdfWindow,"show-search":e.unref(L).search,"show-thumbnails":e.unref(L).thumbnails,"show-zoom":e.unref(L).zoom,"export-formats":Kt.value,"show-settings":X.value,"settings-open":$.value,messages:P.value,search:{visible:e.unref(T).visible.value,query:e.unref(T).query.value,matchIndex:e.unref(T).matchIndex.value,matchCount:e.unref(T).matchCount.value,searching:e.unref(T).searching.value},"thumbs-visible":S.value,"show-import":!!Pe.value,busy:s.value||k.value||e.unref(I).saving.value,onGoto:oe,onZoom:e.unref(be),onExport:v[1]||(v[1]=h=>Ge(h)),onPrint:Ze,onPdfWindow:Ye,onSearchInput:e.unref(T).onInput,onSearchNav:e.unref(T).onNav,onSearchToggle:e.unref(T).toggle,onThumbsToggle:v[2]||(v[2]=h=>S.value=!S.value),onImportExcel:v[3]||(v[3]=h=>B.value?.click()),onSettingsToggle:v[4]||(v[4]=h=>$.value=!$.value)},null,8,["page-count","current-page","zoom-mode","zoom","show-export","show-print","show-pdf-window","show-search","show-thumbnails","show-zoom","export-formats","show-settings","settings-open","messages","search","thumbs-visible","show-import","busy","onZoom","onSearchInput","onSearchNav","onSearchToggle"]),$.value&&X.value?(e.openBlock(),e.createBlock(mo,{key:1,available:ut.value,enabled:e.unref(L),messages:P.value,"persisted-editing":Zt.value,busy:s.value||k.value||e.unref(I).saving.value||!!b.value||u.value,onChange:Gt,onReset:Yt,onClose:v[5]||(v[5]=h=>$.value=!1)},{default:e.withCtx(()=>[e.renderSlot(i.$slots,"settings",{},void 0,!0)]),_:3},8,["available","enabled","messages","persisted-editing","busy"])):e.createCommentVNode("",!0),Pe.value?(e.openBlock(),e.createElementBlock("input",{key:2,ref_key:"importInputRef",ref:B,class:"mrp-import-input",type:"file",accept:".xlsx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",hidden:"",onChange:sn},null,544)):e.createCommentVNode("",!0),dt.value&&O.value>0?(e.openBlock(),e.createElementBlock("div",zo,e.toDisplayString(e.unref(I).saving.value?P.value.saving:P.value.editingHint),1)):e.createCommentVNode("",!0),p.value?(e.openBlock(),e.createElementBlock("div",{key:4,class:e.normalizeClass(["mrp-export-notice",`mrp-export-${p.value.kind}`]),role:"alert"},e.toDisplayString(p.value.message),3)):e.createCommentVNode("",!0),m.value.status==="error"&&(R.value||j.value)?(e.openBlock(),e.createElementBlock("div",Lo,[e.createTextVNode(e.toDisplayString(P.value.pdfFontUnavailable)+" ",1),e.createElementVNode("button",{type:"button",onClick:Xt},e.toDisplayString(P.value.retry),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",Wo,[e.createElementVNode("div",{ref_key:"viewportRef",ref:C,class:"mrp-body",tabindex:"0",onWheel:cn,onKeydown:un,onDblclick:v[6]||(v[6]=(...h)=>e.unref(I).onDoubleClick&&e.unref(I).onDoubleClick(...h)),onScrollPassive:v[7]||(v[7]=h=>e.unref(rn)(h.target))},[s.value?(e.openBlock(),e.createElementBlock("div",Ao,e.toDisplayString(P.value.loading),1)):f.value?(e.openBlock(),e.createElementBlock("div",Ho,[e.createTextVNode(e.toDisplayString(f.value)+" ",1),e.createElementVNode("button",{class:"mrp-retry",type:"button",onClick:ce},e.toDisplayString(P.value.retry),1)])):!l.value||O.value===0?(e.openBlock(),e.createBlock(kt,{key:2,title:P.value.empty,description:Le.value.description??P.value.emptyDescription},null,8,["title","description"])):(e.openBlock(),e.createElementBlock("div",{key:3,class:"mrp-scale",style:e.normalizeStyle({width:`${e.unref(qe).w*e.unref(G)}px`,height:`${e.unref(qe).h*e.unref(G)}px`})},[e.createElementVNode("div",{ref_key:"containerRef",ref:E,class:"mrp-scale-inner",style:e.normalizeStyle({transform:`scale(${e.unref(G)})`,transformOrigin:"top left",width:`${e.unref(qe).w}px`})},[e.unref(ye).padTopPx>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mrp-spacer-top",style:e.normalizeStyle({height:`${e.unref(ye).padTopPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(vt),h=>(e.openBlock(),e.createElementBlock("div",{key:h.index,class:"mrp-page-holder","data-page":h.index+1},null,8,jo))),128)),e.unref(ye).padBottomPx>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:"mrp-spacer-bottom",style:e.normalizeStyle({height:`${e.unref(ye).padBottomPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0)],4)],4)),!s.value&&!f.value&&l.value&&O.value>0&&t.emptyState?(e.openBlock(),e.createBlock(kt,{key:4,title:Le.value.title??P.value.empty,description:Le.value.description??P.value.emptyDescription},null,8,["title","description"])):e.createCommentVNode("",!0)],544),e.unref(L).thumbnails&&S.value&&O.value>0?(e.openBlock(),e.createElementBlock("aside",{key:0,ref_key:"thumbsRef",ref:x,class:"mrp-thumbs",onScrollPassive:v[8]||(v[8]=(...h)=>e.unref(ee).onScroll&&e.unref(ee).onScroll(...h))},[e.unref(ee).windowRange.value.padTopPx>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mrp-thumb-spacer",style:e.normalizeStyle({height:`${e.unref(ee).windowRange.value.padTopPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(ee).visibleThumbs.value,h=>(e.openBlock(),e.createElementBlock("div",{key:h.index,class:e.normalizeClass(["mrp-thumb",{"mrp-thumb-active":h.index+1===c.value}]),style:e.normalizeStyle({height:`${h.height+20}px`}),onClick:V=>oe(h.index+1)},[e.createElementVNode("div",{class:"mrp-thumb-box","data-thumb":h.index+1,style:e.normalizeStyle({height:`${h.height}px`})},null,12,Uo),e.createElementVNode("span",Ko,e.toDisplayString(h.index+1),1)],14,qo))),128)),e.unref(ee).windowRange.value.padBottomPx>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:"mrp-thumb-spacer",style:e.normalizeStyle({height:`${e.unref(ee).windowRange.value.padBottomPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0)],544)):e.createCommentVNode("",!0)]),e.createElementVNode("div",Zo,[e.renderSlot(i.$slots,"default",{},void 0,!0)]),e.unref(de)?(e.openBlock(),e.createElementBlock("div",Go,[v[9]||(v[9]=e.createElementVNode("div",null,"mach-report debug",-1)),e.createElementVNode("div",null,"pages: "+e.toDisplayString(e.unref(de).pages)+" | window: ["+e.toDisplayString(e.unref(de).window)+"]",1),e.createElementVNode("div",null,"zoom: "+e.toDisplayString(e.unref(de).zoom)+" | load: "+e.toDisplayString(e.unref(de).loadMs),1),e.createElementVNode("div",null,"plan: "+e.toDisplayString(e.unref(de).planKB)+"KB",1)])):e.createCommentVNode("",!0)],6))}}),qt=Ee(Yo,[["__scopeId","data-v-a8ee1f0e"]]),Jo=Object.freeze(Object.defineProperty({__proto__:null,default:qt},Symbol.toStringTag,{value:"Module"}));exports.DEFAULT_MESSAGES=Vt;exports.DEFAULT_THEME=It;exports.MachReportError=re;exports.PlanLoadError=Fe;exports.REPORT_EXPORT_FORMATS=Oe;exports.REPORT_PREVIEW_TOOLS=jt;exports.ReportParamPanel=Tt;exports.ReportPreview=qt;exports.ReportPreview$1=Jo;exports.ReportToolbar=Dt;exports.SILENT_LOGGER=$o;exports.buildPrintDocument=st;exports.buildWordHtml=Mt;exports.createDefaultPdfExporter=At;exports.createFetchRequest=wn;exports.defineMachReportConfig=Ot;exports.defineMachReportPreset=So;exports.joinReportIds=yn;exports.normalizeReportIds=rt;exports.printPlans=xn;exports.provideMachReportConfig=Mo;exports.resolveConfig=zt;exports.themeToCssVars=Lt;exports.toErrorDetail=Ht;exports.useMachReportConfig=Wt;exports.usePageWindow=$t;exports.usePrintExport=Ft;exports.useZoom=Rt;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";const p=require("./render-plan-CCTL4F9v.cjs"),F=25.4,x=96;function T(o=x){return o/F}function D(o,t=x){return(o||0)*T(t)}function O(o,t=x){return o/T(t)}function B(o,t=x){return o*t/72}function k(o,t){const s=10**t;return Math.round(o*s)/s}const $={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}};function y(o,t=96,s=p.DEFAULT_FONT_PT){if(o?.fontSizePx!=null)return{fontSizePt:o.fontSizePx*72/t,fontSizePx:o.fontSizePx};const c=o?.fontSize??s;return{fontSizePt:c,fontSizePx:B(c,t)}}function N(o,t=p.DEFAULT_STROKE_COLOR){return{color:o?.borderColor??o?.lineColor??t,widthPt:o?.lineWidthPt??p.DEFAULT_BORDER_PT}}function U(o,t=p.DEFAULT_TEXT_COLOR){return o?.color??t}function G(o){return o?.lineHeight??p.LINE_HEIGHT}function K(o){const t=o?.borderTop!==!1,s=o?.borderRight!==!1,c=o?.borderBottom!==!1,l=o?.borderLeft!==!1;return{top:t,right:s,bottom:c,left:l,inner:t||s||c||l}}function W(o,t){const s={...o,...t};return t?.fontSize!=null&&t.fontSizePx==null&&delete s.fontSizePx,t?.fontSizePx!=null&&t.fontSize==null&&delete s.fontSize,s}function Z(o,t){const s=o.length;if(s===0)return[];const c=o.reduce((h,f)=>h+f,0),l=c>0&&t>0?t/c:1,i=[];let m=0;for(let h=0;h<s;h++){const f=Math.max(0,o[h]*l);i.push({pos:m,size:f}),m+=f}return i}function b(o,t,s){return o?.length?Z(o,t):Array.from({length:s},(c,l)=>({pos:t*l/s,size:t/s}))}function q(o,t,s){const c=o.cells??[],l=Math.max(c.length,1),i=o.colWidthsMm?.length??Math.max(1,...c.map(n=>Array.isArray(n)?n.length:0)),m=b(o.colWidthsMm,t,i),h=n=>n<=0?0:n>=i?m[m.length-1].pos+m[m.length-1].size:m[n].pos,f=b(o.rowHeightsMm,s,l),d=n=>n<=0?0:n>=l?f[f.length-1].pos+f[f.length-1].size:f[n].pos,w=new Set,E=(n,r)=>`${n}:${r}`,_=[],z=new Set,C=new Set,v=(n,r)=>`v${n}:${r}`,A=(n,r)=>`h${n}:${r}`;c.forEach((n,r)=>{if(!Array.isArray(n))return;let e=0;for(const S of n){for(;e<i&&w.has(E(r,e));)e++;if(e>=i)break;const H=Math.max(1,Math.min(S?.colSpan??1,i-e)),I=Math.max(1,S?.rowSpan??1),g=Math.min(l,r+I),P=Math.min(i,e+H);for(let u=r;u<g;u++)for(let a=e;a<P;a++)w.add(E(u,a));for(let u=e+1;u<P;u++)for(let a=r;a<g;a++)z.add(v(u,a));for(let u=r+1;u<g;u++)for(let a=e;a<P;a++)C.add(A(u,a));const L=h(e),R=d(r);_.push({ri:r,ci:e,cell:S??{},xMm:L,yMm:R,widthMm:h(P)-L,heightMm:d(g)-R}),e=P}});const M=[];for(let n=1;n<i;n++){let r=-1;for(let e=0;e<=l;e++){const S=e<l&&!z.has(v(n,e));S&&r<0&&(r=e),!S&&r>=0&&(M.push({kind:"v",pos:h(n),from:d(r),to:d(e)}),r=-1)}}for(let n=1;n<l;n++){let r=-1;for(let e=0;e<=i;e++){const S=e<i&&!C.has(A(n,e));S&&r<0&&(r=e),!S&&r>=0&&(M.push({kind:"h",pos:d(n),from:h(r),to:h(e)}),r=-1)}}return{columns:m,rows:f,cells:_,edges:M}}exports.CSS_DPI=x;exports.MM_PER_INCH=F;exports.PAPER_SIZES=$;exports.mergeComponentStyles=W;exports.mmToPx=D;exports.mmToPxFactor=T;exports.ptToPx=B;exports.pxToMm=O;exports.resolveBoxBorders=K;exports.resolveFontSize=y;exports.resolveGridLayout=q;exports.resolveLineHeight=G;exports.resolveStroke=N;exports.resolveTextColor=U;exports.round=k;
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import { D as F, d as O, a as B, L as H, c as $ } from "./render-plan-CXBWRog4.js";
|
|
2
|
-
const k = 25.4, M = 96;
|
|
3
|
-
function R(t = M) {
|
|
4
|
-
return t / k;
|
|
5
|
-
}
|
|
6
|
-
function K(t, o = M) {
|
|
7
|
-
return (t || 0) * R(o);
|
|
8
|
-
}
|
|
9
|
-
function N(t, o = M) {
|
|
10
|
-
return t / R(o);
|
|
11
|
-
}
|
|
12
|
-
function I(t, o = M) {
|
|
13
|
-
return t * o / 72;
|
|
14
|
-
}
|
|
15
|
-
function W(t, o) {
|
|
16
|
-
const s = 10 ** o;
|
|
17
|
-
return Math.round(t * s) / s;
|
|
18
|
-
}
|
|
19
|
-
const G = {
|
|
20
|
-
a3: { widthMm: 297, heightMm: 420 },
|
|
21
|
-
a4: { widthMm: 210, heightMm: 297 },
|
|
22
|
-
a5: { widthMm: 148, heightMm: 210 },
|
|
23
|
-
b4: { widthMm: 250, heightMm: 353 },
|
|
24
|
-
b5: { widthMm: 176, heightMm: 250 }
|
|
25
|
-
};
|
|
26
|
-
function X(t, o = 96, s = F) {
|
|
27
|
-
if (t?.fontSizePx != null)
|
|
28
|
-
return { fontSizePt: t.fontSizePx * 72 / o, fontSizePx: t.fontSizePx };
|
|
29
|
-
const c = t?.fontSize ?? s;
|
|
30
|
-
return { fontSizePt: c, fontSizePx: I(c, o) };
|
|
31
|
-
}
|
|
32
|
-
function Z(t, o = O) {
|
|
33
|
-
return {
|
|
34
|
-
color: t?.borderColor ?? t?.lineColor ?? o,
|
|
35
|
-
widthPt: t?.lineWidthPt ?? $
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
function j(t, o = B) {
|
|
39
|
-
return t?.color ?? o;
|
|
40
|
-
}
|
|
41
|
-
function q(t) {
|
|
42
|
-
return t?.lineHeight ?? H;
|
|
43
|
-
}
|
|
44
|
-
function J(t) {
|
|
45
|
-
const o = t?.borderTop !== !1, s = t?.borderRight !== !1, c = t?.borderBottom !== !1, i = t?.borderLeft !== !1;
|
|
46
|
-
return { top: o, right: s, bottom: c, left: i, inner: o || s || c || i };
|
|
47
|
-
}
|
|
48
|
-
function Q(t, o) {
|
|
49
|
-
const s = { ...t, ...o };
|
|
50
|
-
return o?.fontSize != null && o.fontSizePx == null && delete s.fontSizePx, o?.fontSizePx != null && o.fontSize == null && delete s.fontSize, s;
|
|
51
|
-
}
|
|
52
|
-
function U(t, o) {
|
|
53
|
-
const s = t.length;
|
|
54
|
-
if (s === 0) return [];
|
|
55
|
-
const c = t.reduce((l, f) => l + f, 0), i = c > 0 && o > 0 ? o / c : 1, a = [];
|
|
56
|
-
let m = 0;
|
|
57
|
-
for (let l = 0; l < s; l++) {
|
|
58
|
-
const f = Math.max(0, t[l] * i);
|
|
59
|
-
a.push({ pos: m, size: f }), m += f;
|
|
60
|
-
}
|
|
61
|
-
return a;
|
|
62
|
-
}
|
|
63
|
-
function b(t, o, s) {
|
|
64
|
-
return t?.length ? U(t, o) : Array.from({ length: s }, (c, i) => ({
|
|
65
|
-
pos: o * i / s,
|
|
66
|
-
size: o / s
|
|
67
|
-
}));
|
|
68
|
-
}
|
|
69
|
-
function V(t, o, s) {
|
|
70
|
-
const c = t.cells ?? [], i = Math.max(c.length, 1), a = t.colWidthsMm?.length ?? Math.max(1, ...c.map((n) => Array.isArray(n) ? n.length : 0)), m = b(t.colWidthsMm, o, a), l = (n) => n <= 0 ? 0 : n >= a ? m[m.length - 1].pos + m[m.length - 1].size : m[n].pos, f = b(t.rowHeightsMm, s, i), S = (n) => n <= 0 ? 0 : n >= i ? f[f.length - 1].pos + f[f.length - 1].size : f[n].pos, x = /* @__PURE__ */ new Set(), w = (n, r) => `${n}:${r}`, T = [], z = /* @__PURE__ */ new Set(), E = /* @__PURE__ */ new Set(), _ = (n, r) => `v${n}:${r}`, A = (n, r) => `h${n}:${r}`;
|
|
71
|
-
c.forEach((n, r) => {
|
|
72
|
-
if (!Array.isArray(n)) return;
|
|
73
|
-
let e = 0;
|
|
74
|
-
for (const d of n) {
|
|
75
|
-
for (; e < a && x.has(w(r, e)); ) e++;
|
|
76
|
-
if (e >= a) break;
|
|
77
|
-
const v = Math.max(1, Math.min(d?.colSpan ?? 1, a - e)), D = Math.max(1, d?.rowSpan ?? 1), g = Math.min(i, r + D), p = Math.min(a, e + v);
|
|
78
|
-
for (let h = r; h < g; h++)
|
|
79
|
-
for (let u = e; u < p; u++)
|
|
80
|
-
x.add(w(h, u));
|
|
81
|
-
for (let h = e + 1; h < p; h++)
|
|
82
|
-
for (let u = r; u < g; u++) z.add(_(h, u));
|
|
83
|
-
for (let h = r + 1; h < g; h++)
|
|
84
|
-
for (let u = e; u < p; u++) E.add(A(h, u));
|
|
85
|
-
const C = l(e), L = S(r);
|
|
86
|
-
T.push({
|
|
87
|
-
ri: r,
|
|
88
|
-
ci: e,
|
|
89
|
-
cell: d ?? {},
|
|
90
|
-
xMm: C,
|
|
91
|
-
yMm: L,
|
|
92
|
-
widthMm: l(p) - C,
|
|
93
|
-
heightMm: S(g) - L
|
|
94
|
-
}), e = p;
|
|
95
|
-
}
|
|
96
|
-
});
|
|
97
|
-
const P = [];
|
|
98
|
-
for (let n = 1; n < a; n++) {
|
|
99
|
-
let r = -1;
|
|
100
|
-
for (let e = 0; e <= i; e++) {
|
|
101
|
-
const d = e < i && !z.has(_(n, e));
|
|
102
|
-
d && r < 0 && (r = e), !d && r >= 0 && (P.push({ kind: "v", pos: l(n), from: S(r), to: S(e) }), r = -1);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
for (let n = 1; n < i; n++) {
|
|
106
|
-
let r = -1;
|
|
107
|
-
for (let e = 0; e <= a; e++) {
|
|
108
|
-
const d = e < a && !E.has(A(n, e));
|
|
109
|
-
d && r < 0 && (r = e), !d && r >= 0 && (P.push({ kind: "h", pos: S(n), from: l(r), to: l(e) }), r = -1);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
return { columns: m, rows: f, cells: T, edges: P };
|
|
113
|
-
}
|
|
114
|
-
export {
|
|
115
|
-
M as C,
|
|
116
|
-
k as M,
|
|
117
|
-
G as P,
|
|
118
|
-
W as a,
|
|
119
|
-
q as b,
|
|
120
|
-
Z as c,
|
|
121
|
-
J as d,
|
|
122
|
-
V as e,
|
|
123
|
-
K as f,
|
|
124
|
-
j as g,
|
|
125
|
-
R as h,
|
|
126
|
-
N as i,
|
|
127
|
-
Q as m,
|
|
128
|
-
I as p,
|
|
129
|
-
X as r
|
|
130
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";const T="#333333",n="#000000",_="1.0.0-mach",t=_;function R(E){return(E.kind==="image"||E.kind==="barcode"||E.kind==="qrcode"||E.kind==="chart")&&!!E.imageData}function A(E){return E.kind==="text"&&Array.isArray(E.richParagraphs)&&E.richParagraphs.length>0}exports.DEFAULT_BORDER_PT=.75;exports.DEFAULT_FONT_PT=10.5;exports.DEFAULT_STROKE_COLOR=T;exports.DEFAULT_TEXT_COLOR=n;exports.LINE_HEIGHT=1.35;exports.RENDER_PLAN_SCHEMA_VERSION=t;exports.SCHEMA_VERSION_MACH=_;exports.isImageBackedComponent=R;exports.isRichText=A;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
function s(e, f) {
|
|
2
|
-
const a = /* @__PURE__ */ new Set();
|
|
3
|
-
return f.flatMap((r) => {
|
|
4
|
-
const t = Object.prototype.hasOwnProperty.call(e, r) ? e[r] : void 0;
|
|
5
|
-
return (t?.params ?? (typeof t?.template == "function" ? [] : t?.template.params) ?? []).filter((n) => a.has(n.field) ? !1 : (a.add(n.field), !0));
|
|
6
|
-
});
|
|
7
|
-
}
|
|
8
|
-
export {
|
|
9
|
-
s as g
|
|
10
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";function f(e,s){const a=new Set;return s.flatMap(r=>{const t=Object.prototype.hasOwnProperty.call(e,r)?e[r]:void 0;return(t?.params??(typeof t?.template=="function"?[]:t?.template.params)??[]).filter(n=>a.has(n.field)?!1:(a.add(n.field),!0))})}exports.getReportParamDefs=f;
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
const l = /[\u3000-\u9fff\uff00-\uffef]/, s = new Uint8Array(128);
|
|
2
|
-
{
|
|
3
|
-
for (const t of "iljtf.,:;'`|!()[]") s[t.charCodeAt(0)] = 1;
|
|
4
|
-
for (const t of "mwMW@") s[t.charCodeAt(0)] = 2;
|
|
5
|
-
for (let t = 48; t <= 57; t++) s[t] = 3;
|
|
6
|
-
for (let t = 65; t <= 90; t++) s[t] = 4;
|
|
7
|
-
s[32] = 5;
|
|
8
|
-
}
|
|
9
|
-
const d = [0.54, 0.26, 0.95, 0.59, 0.67, 0.3];
|
|
10
|
-
function M(t) {
|
|
11
|
-
const e = t.charCodeAt(0);
|
|
12
|
-
return e < 128 ? d[s[e]] : l.test(t) ? 1 : /[A-Z]/.test(t) ? 0.67 : 0.54;
|
|
13
|
-
}
|
|
14
|
-
const a = {
|
|
15
|
-
measureMm(t, e) {
|
|
16
|
-
const { fontSizePt: i, bold: f = !1, letterSpacingPt: o = 0 } = e, c = 25.4 / 72;
|
|
17
|
-
let r = 0;
|
|
18
|
-
for (const n of t)
|
|
19
|
-
r += M(n);
|
|
20
|
-
return f && (r *= 1.04), (r * i + o * t.length) * c;
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
function p() {
|
|
24
|
-
return a;
|
|
25
|
-
}
|
|
26
|
-
function x(t, e) {
|
|
27
|
-
return a.measureMm(t, e);
|
|
28
|
-
}
|
|
29
|
-
function A(t) {
|
|
30
|
-
let e;
|
|
31
|
-
return {
|
|
32
|
-
measureMm(i, f) {
|
|
33
|
-
if (e === void 0 && (e = t()), !e) return a.measureMm(i, f);
|
|
34
|
-
const o = f.fontSizePt * 96 / 72;
|
|
35
|
-
return e.font = `${f.bold ? "bold " : ""}${o}px sans-serif`, e.measureText(i).width * 25.4 / 96;
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
function w(t, e, i) {
|
|
40
|
-
const f = [];
|
|
41
|
-
let o = "", c = 0;
|
|
42
|
-
const r = () => {
|
|
43
|
-
o && (f.push({ text: o, widthMm: c, cjk: !1 }), o = "", c = 0);
|
|
44
|
-
};
|
|
45
|
-
for (const n of t) {
|
|
46
|
-
if (n === `
|
|
47
|
-
`) {
|
|
48
|
-
r(), f.push({ text: `
|
|
49
|
-
`, widthMm: 0, cjk: !1, br: !0 });
|
|
50
|
-
continue;
|
|
51
|
-
}
|
|
52
|
-
if (n === " ") {
|
|
53
|
-
r(), f.push({ text: n, widthMm: i.measureMm(n, e), cjk: !1, space: !0 });
|
|
54
|
-
continue;
|
|
55
|
-
}
|
|
56
|
-
if (l.test(n)) {
|
|
57
|
-
r(), f.push({ text: n, widthMm: i.measureMm(n, e), cjk: !0 });
|
|
58
|
-
continue;
|
|
59
|
-
}
|
|
60
|
-
o += n, c += i.measureMm(n, e);
|
|
61
|
-
}
|
|
62
|
-
return r(), f;
|
|
63
|
-
}
|
|
64
|
-
function T(t, e, i, f = a) {
|
|
65
|
-
if (!t) return [""];
|
|
66
|
-
t = t.replace(/\r\n?/g, `
|
|
67
|
-
`);
|
|
68
|
-
const o = [];
|
|
69
|
-
let c = "", r = 0;
|
|
70
|
-
const n = () => {
|
|
71
|
-
o.push(c), c = "", r = 0;
|
|
72
|
-
};
|
|
73
|
-
for (const u of w(t, i, f)) {
|
|
74
|
-
if (u.br) {
|
|
75
|
-
n();
|
|
76
|
-
continue;
|
|
77
|
-
}
|
|
78
|
-
if (r + u.widthMm <= e) {
|
|
79
|
-
c += u.text, r += u.widthMm;
|
|
80
|
-
continue;
|
|
81
|
-
}
|
|
82
|
-
if (u.space) {
|
|
83
|
-
n();
|
|
84
|
-
continue;
|
|
85
|
-
}
|
|
86
|
-
if (u.cjk) {
|
|
87
|
-
c.length > 0 && n(), c = u.text, r = u.widthMm;
|
|
88
|
-
continue;
|
|
89
|
-
}
|
|
90
|
-
if (c.length > 0 && n(), u.widthMm <= e) {
|
|
91
|
-
c = u.text, r = u.widthMm;
|
|
92
|
-
continue;
|
|
93
|
-
}
|
|
94
|
-
for (const h of u.text) {
|
|
95
|
-
const m = f.measureMm(h, i);
|
|
96
|
-
r + m > e && c.length > 0 && n(), c += h, r += m;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
return n(), o;
|
|
100
|
-
}
|
|
101
|
-
export {
|
|
102
|
-
A as a,
|
|
103
|
-
p as b,
|
|
104
|
-
M as c,
|
|
105
|
-
a as h,
|
|
106
|
-
x as m,
|
|
107
|
-
T as w
|
|
108
|
-
};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
"use strict";const M=/[\u3000-\u9fff\uff00-\uffef]/,o=new Uint8Array(128);{for(const t of"iljtf.,:;'`|!()[]")o[t.charCodeAt(0)]=1;for(const t of"mwMW@")o[t.charCodeAt(0)]=2;for(let t=48;t<=57;t++)o[t]=3;for(let t=65;t<=90;t++)o[t]=4;o[32]=5}const d=[.54,.26,.95,.59,.67,.3];function l(t){const e=t.charCodeAt(0);return e<128?d[o[e]]:M.test(t)?1:/[A-Z]/.test(t)?.67:.54}const a={measureMm(t,e){const{fontSizePt:s,bold:u=!1,letterSpacingPt:f=0}=e,c=25.4/72;let n=0;for(const r of t)n+=l(r);return u&&(n*=1.04),(n*s+f*t.length)*c}};function w(){return a}function p(t,e){return a.measureMm(t,e)}function x(t){let e;return{measureMm(s,u){if(e===void 0&&(e=t()),!e)return a.measureMm(s,u);const f=u.fontSizePt*96/72;return e.font=`${u.bold?"bold ":""}${f}px sans-serif`,e.measureText(s).width*25.4/96}}}function T(t,e,s){const u=[];let f="",c=0;const n=()=>{f&&(u.push({text:f,widthMm:c,cjk:!1}),f="",c=0)};for(const r of t){if(r===`
|
|
2
|
-
`){n(),u.push({text:`
|
|
3
|
-
`,widthMm:0,cjk:!1,br:!0});continue}if(r===" "){n(),u.push({text:r,widthMm:s.measureMm(r,e),cjk:!1,space:!0});continue}if(M.test(r)){n(),u.push({text:r,widthMm:s.measureMm(r,e),cjk:!0});continue}f+=r,c+=s.measureMm(r,e)}return n(),u}function A(t,e,s,u=a){if(!t)return[""];t=t.replace(/\r\n?/g,`
|
|
4
|
-
`);const f=[];let c="",n=0;const r=()=>{f.push(c),c="",n=0};for(const i of T(t,s,u)){if(i.br){r();continue}if(n+i.widthMm<=e){c+=i.text,n+=i.widthMm;continue}if(i.space){r();continue}if(i.cjk){c.length>0&&r(),c=i.text,n=i.widthMm;continue}if(c.length>0&&r(),i.widthMm<=e){c=i.text,n=i.widthMm;continue}for(const h of i.text){const m=u.measureMm(h,s);n+m>e&&c.length>0&&r(),c+=h,n+=m}}return r(),f}exports.charWidthEm=l;exports.createCanvasMeasurer=x;exports.createHeuristicMeasurer=w;exports.heuristicMeasurer=a;exports.measureTextMm=p;exports.wrapText=A;
|