@agile-team/mach-report 2.4.0 → 2.4.1
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 +2 -2
- package/dist/ReportPreview-BVTpw9Tb.cjs +6 -0
- package/dist/{ReportPreview-CL9J9MEE.js → ReportPreview-XF8iSUG1.js} +479 -476
- package/dist/{plugin-DRnvIbdP.js → plugin-CKnSVuVe.js} +1 -1
- package/dist/{plugin-BkK2mm_p.cjs → plugin-DwKr8oF6.cjs} +1 -1
- package/dist/style.css +1 -1
- package/dist/vue-async.cjs +1 -1
- package/dist/vue-async.js +3 -3
- package/dist/vue.cjs +1 -1
- package/dist/vue.js +4 -4
- package/dist/xlsx.cjs +1 -1
- package/dist/xlsx.js +1 -1
- package/package.json +1 -1
- package/dist/ReportPreview-DJvv3h8m.cjs +0 -6
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
</p>
|
|
9
9
|
|
|
10
10
|
<p align="center">
|
|
11
|
-
<img src="https://img.shields.io/badge/source-2.4.
|
|
11
|
+
<img src="https://img.shields.io/badge/source-2.4.1-2563eb" alt="Source version 2.4.1" />
|
|
12
12
|
<a href="https://www.npmjs.com/package/@agile-team/mach-report"><img src="https://img.shields.io/npm/v/@agile-team/mach-report?label=npm&color=3178c6" alt="npm version" /></a>
|
|
13
13
|
<a href="https://github.com/ChenyCHENYU/MachReport/actions/workflows/ci.yml"><img src="https://github.com/ChenyCHENYU/MachReport/actions/workflows/ci.yml/badge.svg" alt="CI" /></a>
|
|
14
14
|
<a href="https://github.com/ChenyCHENYU/MachReport/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-authorization%20required-dc2626" alt="Authorization required" /></a>
|
|
@@ -448,7 +448,7 @@ CI 使用同一套校验命令,并在构建后检查实际发布产物。协
|
|
|
448
448
|
|
|
449
449
|
## 版本与授权
|
|
450
450
|
|
|
451
|
-
当前源码版本为 `2.4.
|
|
451
|
+
当前源码版本为 `2.4.1`,以 [`packages/mach-report/package.json`](https://github.com/ChenyCHENYU/MachReport/blob/main/packages/mach-report/package.json) 为准;npm 已发布版本由顶部 npm 标识展示。
|
|
452
452
|
|
|
453
453
|
Copyright © 2026 ChenyCHENYU (Agile Team). All rights reserved.
|
|
454
454
|
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";var Zt=Object.create;var pt=Object.defineProperty;var Xt=Object.getOwnPropertyDescriptor;var Qt=Object.getOwnPropertyNames;var _t=Object.getPrototypeOf,en=Object.prototype.hasOwnProperty;var tn=(t,n,l,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of Qt(n))!en.call(t,r)&&r!==l&&pt(t,r,{get:()=>n[r],enumerable:!(o=Xt(n,r))||o.enumerable});return t};var Ge=(t,n,l)=>(l=t!=null?Zt(_t(t)):{},tn(n||!t||!t.__esModule?pt(l,"default",{value:t,enumerable:!0}):l,t));const e=require("vue"),j=require("@agile-team/mach-report"),gt=require("./page-window-index-DEjnM6IB.cjs"),ht=require("./render-plan-CCTL4F9v.cjs"),fe=require("./plugin-DwKr8oF6.cjs");function Xe(t){return t==null?[]:Array.isArray(t)?t.map(String).filter(n=>n!==""):String(t).split(",").map(n=>n.trim()).filter(n=>n!=="")}function nn(t){return Xe(t).join(",")}class Be extends Error{constructor(n){super(n),this.name="PlanLoadError"}}function rn(t={}){const{baseUrl:n="",headers:l,credentials:o,timeoutMs:r=3e4}=t,a=n.replace(/\/+$/,"");return async({url:s,method:d,params:v,signal:y})=>{let p=`${a}${s}`;if(v&&Object.keys(v).length>0){const w=p.indexOf("#"),B=w>=0?p.slice(w):"",P=w>=0?p.slice(0,w):p,R=P.indexOf("?"),C=R>=0?P.slice(0,R):P,S=new URLSearchParams(R>=0?P.slice(R+1):"");for(const[N,L]of Object.entries(v))S.set(N,L);p=`${C}?${S}${B}`}const m=(w,B)=>{const P=new Be(w);return Object.defineProperty(P,"cause",{value:B,configurable:!0,writable:!0}),P};if(y?.aborted)throw m(`请求已取消: ${s}`,y.reason);const b=new AbortController;let u;const E=()=>{b.signal.aborted||(u="external",b.abort(y?.reason))};y?.addEventListener("abort",E,{once:!0});const k=setTimeout(()=>{b.signal.aborted||(u="timeout",b.abort())},r);try{const w=await fetch(p,{method:d.toUpperCase(),headers:{Accept:"application/json",...l},credentials:o,signal:b.signal});if(!w.ok)throw new Be(`HTTP ${w.status} ${s}`);return await w.json()}catch(w){throw u==="timeout"?m(`请求超时(${r}ms): ${s}`,w):u==="external"?m(`请求已取消: ${s}`,w):w instanceof Be?w:m(`请求失败(${s}): ${w instanceof Error?w.message:String(w)}`,w)}finally{clearTimeout(k),y?.removeEventListener("abort",E)}}}function bt(t,n,l={}){const o=l.pxPerMm??3.7795275590551185,r=e.computed(()=>Math.max(0,e.unref(l.gapPx)??18)),a=e.ref(0),s=e.ref(800),d=e.computed(()=>{const w=t.value?.pages??[];return gt.createPageWindowIndex(w.map(B=>B.pageHeightMm*o),r.value)}),v=e.computed(()=>{let w=0;for(const B of t.value?.pages??[])w=Math.max(w,B.pageWidthMm*o);return{w,h:d.value.totalHeightPx}}),y=e.computed(()=>d.value.window(s.value/n.value,a.value/n.value,e.unref(l.overscan)??1)),p=e.computed(()=>{const w=t.value;if(!w)return[];const{start:B,end:P}=y.value;return w.pages.slice(B,P+1).map((R,C)=>({page:R,index:B+C}))});let m=0,b=!1;function u(w){w&&(a.value=w.scrollTop,s.value=w.clientHeight||800)}function E(w,B){return P=>{m||b||(m=requestAnimationFrame(()=>{if(m=0,b||(u(P),B.value<=0))return;const R=Math.max(0,P.scrollTop+32)/n.value;w.value=Math.min(B.value,d.value.pageAt(R)+1)}))}}function k(){b=!0,m&&cancelAnimationFrame(m),m=0}return e.onScopeDispose(k),{contentSize:v,windowRange:y,visiblePages:p,makeScrollHandler:E,refreshViewport:u,pageOffsetPx:w=>d.value.offsetAt(w),destroy:k}}function yt(t){const n=e.ref(1),l=e.ref("fit");let o=0;function r(){o&&cancelAnimationFrame(o),o=0}function a(){r(),o=requestAnimationFrame(()=>{if(o=0,l.value!=="fit")return;const d=t();!d?.viewport||d.viewport.clientWidth<=48||!Number.isFinite(d.pageWidthPx)||(n.value=Math.min(1,(d.viewport.clientWidth-48)/Math.max(1,d.pageWidthPx)))})}function s(d){if(d==="fit")l.value="fit",a();else{if(!Number.isFinite(d))return;r(),l.value="raw",n.value=Math.min(3,Math.max(.3,d/100))}}return e.getCurrentScope()&&e.onScopeDispose(r),{zoom:n,zoomMode:l,applyFitZoom:a,setZoom:s}}const Me=8;function Fe(){return new Promise(t=>setTimeout(t,0))}function Se(t){return`p${t.pageWidthMm}x${t.pageHeightMm}`.replace(/[.+]/g,"_")}function Qe(t){const n=new Map;return t.pages.forEach(r=>{n.has(Se(r))||n.set(Se(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 ${Se(r)}{size:${r.pageWidthMm}mm ${r.pageHeightMm}mm;margin:0;}`).join(`
|
|
5
|
+
`)}
|
|
6
|
+
body{margin:0;background:#fff;}`}</style></head><body>`}function _e(t){const n=j.renderPage(t,96,{},document);return n.style.page=Se(t),n.outerHTML}function et(t){return{head:Qe(t),pageChunks:t.pages.map(_e)}}async function on(t,n={}){const l={schemaVersion:"mach-report-batch-print",pages:t.flatMap(s=>s.pages)};if(l.pages.length===0)return;const o=Qe(l),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 a=!1;try{const s=r.contentDocument;s.open(),s.write(o);for(let d=0;d<l.pages.length;d++)s.write(_e(l.pages[d])),d%Me===Me-1&&(n.onProgress?.(d+1,l.pages.length),await Fe());s.write("</body></html>"),s.close(),await Fe(),n.onProgress?.(l.pages.length,l.pages.length),a=!0,r.contentWindow?.focus(),r.contentWindow?.print()}catch(s){n.onError?.(s instanceof Error?`批量打印失败: ${s.message}`:"批量打印失败")}finally{a?setTimeout(()=>r.remove(),6e4):r.remove()}}function wt(t){const{head:n,pageChunks:l}=et(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>/,"")}`}${l.join("")}</body></html>`,filename:"mach-report.doc"}}function xt(t,n){let l=null,o=!1,r=!1,a=0;const s=new Map,d=new Map;let v=null,y=null,p=null,m=null,b=null;function u(c,f){return!r&&t.value===c&&a===f}function E(){if(r)return;const c=[...s.values()].reverse().find(f=>u(f.plan,f.epoch))?.format??null;c!==v&&(v=c,n.onBusy?.(c))}function k(c,f,x){const $={};return s.set($,{plan:c,epoch:f,format:x}),E(),$}function w(c){s.delete(c),E()}function B(){for(const[c,f]of d)u(f.plan,f.epoch)||(c.close(),d.delete(c))}function P(){a++,C(),E(),B()}const R=e.watch(t,P,{flush:"sync"});function C(){l?.remove(),l=null}function S(){r=!0,a++,R(),C(),B(),s.clear(),n.onPrinting?.(!1)}function N(c,f){const x=URL.createObjectURL(c);setTimeout(()=>URL.revokeObjectURL(x),1e4);const $=document.createElement("a");$.href=x,$.download=f,$.click()}async function L(){if(o)return;const c=t.value;if(r||!c||c.pages.length===0)return;const f=a;o=!0,n.onPrinting?.(!0),C();const x=Qe(c);l=document.createElement("iframe"),l.style.cssText="position:fixed;right:0;bottom:0;width:0;height:0;border:0;visibility:hidden;",document.body.appendChild(l);const $=l;try{const M=$.contentDocument;M.open(),M.write(x);for(let z=0;z<c.pages.length;z++)if(M.write(_e(c.pages[z])),z%Me===Me-1&&await Fe(),$!==l)return;if(M.write("</body></html>"),M.close(),await Fe(),!u(c,f)||$!==l)return;$.contentWindow?.focus(),$.contentWindow?.print()}catch{$===l&&C(),u(c,f)&&n.onError("调用打印失败,请改用导出 PDF","print")}finally{o=!1,r||n.onPrinting?.(!1)}}function U(c,f){if(y?.plan===c&&y.epoch===f)return y.promise;const x=Promise.resolve().then(()=>{if(!u(c,f))throw new Error("报表已切换或卸载");return n.getPdfExporter()(c,$=>{u(c,f)&&n.onWarning?.($)})}).finally(()=>{y?.promise===x&&(y=null)});return y={plan:c,epoch:f,promise:x},x}async function K(){const c=t.value;if(r||!c||c.pages.length===0)return;const f=a;if(p?.plan===c&&p.epoch===f)return p.promise;const x=k(c,f,"PDF"),$=(async()=>{try{const M=await U(c,f);if(!u(c,f))return;N(new Blob([M],{type:"application/pdf"}),"mach-report.pdf")}catch(M){u(c,f)&&n.onError(M instanceof Error?`PDF 导出失败: ${M.message}`:"PDF 导出失败","pdf")}finally{w(x),p?.token===x&&(p=null)}})();return p={plan:c,epoch:f,promise:$,token:x},$}async function W(){const c=t.value;if(r||!c||c.pages.length===0)return;const f=a;if(m?.plan===c&&m.epoch===f)return m.promise;const x={...n.getXlsxOptions?.()},$=k(c,f,"Excel"),M=(async()=>{try{const{renderPlanToXlsx:z}=await import("@agile-team/mach-report/xlsx");if(!u(c,f))return;const{buffer:G,warnings:Q}=await z(c,x);if(!u(c,f)||(Q.length>0&&n.onWarning?.(`Excel 导出有 ${Q.length} 条提示:${Q.slice(0,2).join(";")}`),!u(c,f)))return;N(new Blob([G],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}),"mach-report.xlsx")}catch(z){u(c,f)&&n.onError(z instanceof Error?`Excel 导出失败: ${z.message}`:"Excel 导出失败","export")}finally{w($),m?.token===$&&(m=null)}})();return m={plan:c,epoch:f,promise:M,token:$},M}async function ee(){const c=t.value;if(r||!c||c.pages.length===0)return;const f=a;if(b?.plan===c&&b.epoch===f)return b.promise;const x=k(c,f,"图片"),$=(async()=>{try{const{blobs:M}=await j.renderPlanToImages(c,{dpr:Math.min(2,typeof devicePixelRatio=="number"?devicePixelRatio:1)});if(!u(c,f))return;M.forEach((z,G)=>{N(z,M.length>1?`mach-report-page-${G+1}.png`:"mach-report.png")})}catch(M){u(c,f)&&n.onError(M instanceof Error?`图片导出失败: ${M.message}`:"图片导出失败","export")}finally{w(x),b?.token===x&&(b=null)}})();return b={plan:c,epoch:f,promise:$,token:x},$}function O(){const c=t.value;if(!(r||!c||c.pages.length===0))try{const{html:f,filename:x}=wt(c);N(new Blob([f],{type:"application/msword;charset=utf-8"}),x)}catch(f){n.onError(f instanceof Error?`Word 导出失败: ${f.message}`:"Word 导出失败","export")}}async function ae(c){const f=t.value;if(!(r||!f||f.pages.length===0)){if(c==="pdf"){await K();return}if(c==="xlsx"||c==="excel"){await W();return}if(c==="png"||c==="image"){await ee();return}if(c==="word"||c==="doc"){O();return}if(c!=="html"){n.onError(`不支持的导出格式:${c}`,"export");return}try{const{head:x,pageChunks:$}=et(f),M=`${x}${$.join("")}</body></html>`;N(new Blob([M],{type:"text/html;charset=utf-8"}),"mach-report.html")}catch(x){n.onError(x instanceof Error?`HTML 导出失败: ${x.message}`:"HTML 导出失败","export")}}}function H(){const c=t.value;if(r||!c||c.pages.length===0)return;const f=a,x=window.open("","_blank");if(!x){n.onError("浏览器拦截了弹窗,请允许弹窗后重试","pdf");return}d.set(x,{plan:c,epoch:f});const $=k(c,f,"PDF");U(c,f).then(M=>{if(!u(c,f)||x.closed){d.delete(x)&&x.close();return}const z=URL.createObjectURL(new Blob([M],{type:"application/pdf"}));setTimeout(()=>URL.revokeObjectURL(z),6e4);const G=x.document;G.title="PDF 预览",G.documentElement.style.height="100%",G.body.style.cssText="margin:0;height:100%;";const Q=G.createElement("iframe");Q.title="PDF 预览",Q.style.cssText="display:block;width:100%;height:100%;border:0;",Q.src=z,G.body.replaceChildren(Q),d.delete(x)}).catch(M=>{x.close(),d.delete(x),u(c,f)&&n.onError(M instanceof Error?`PDF 预览失败: ${M.message}`:"PDF 预览失败","pdf")}).finally(()=>w($))}return{print:L,exportAs:ae,exportImages:ee,exportWord:O,openPdfWindow:H,invalidatePending:P,releasePrintFrame:C,dispose:S}}const Et="mrp-hit";function an(t){t.querySelectorAll(`mark.${Et}`).forEach(l=>{const o=l.parentNode;if(o){for(;l.firstChild;)o.insertBefore(l.firstChild,l);l.remove(),o.normalize()}})}function ln(t,n){const l=n.trim();if(!l)return 0;const o=l.toLowerCase(),r=document.createTreeWalker(t,NodeFilter.SHOW_TEXT,{acceptNode(d){const v=d.parentElement;return!v||v.closest("mark")||/^(SCRIPT|STYLE)$/.test(v.tagName)?NodeFilter.FILTER_REJECT:(d.nodeValue??"").toLowerCase().includes(o)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT}}),a=[];for(let d=r.nextNode();d;d=r.nextNode())a.push(d);let s=0;for(const d of a){const v=d.nodeValue??"",y=v.toLowerCase(),p=d.parentElement;if(!p)continue;const m=document.createDocumentFragment();let b=0,u=y.indexOf(o);for(;u>=0;){u>b&&m.appendChild(document.createTextNode(v.slice(b,u)));const E=document.createElement("mark");E.className=Et,E.textContent=v.slice(u,u+l.length),m.appendChild(E),s++,b=u+l.length,u=y.indexOf(o,b)}b<v.length&&m.appendChild(document.createTextNode(v.slice(b))),p.replaceChild(m,d)}return s}const sn=new Set(["line","rect","ellipse","chart"]);function*un(t){for(const n of t.cells??[])for(const l of n??[])yield l?.text??"",yield*l?.children??[]}function*cn(t){if(ht.isRichText(t))for(const n of t.richParagraphs)for(const l of n.segments??[])yield(l.kind==="field"?l.field:l.text)??"";else t.lines?.length?yield*t.lines:yield t.text??""}function*dn(t){const n=[t.values()];for(;n.length>0;){const l=n[n.length-1].next();if(l.done){n.pop();continue}const o=l.value;if(typeof o=="string"){yield o;continue}yield"",!ht.isImageBackedComponent(o)&&(o.kind==="text"?n.push(cn(o)):o.grid?n.push(un(o.grid)):sn.has(o.kind)||(yield o.fallbackText??""))}}function*fn(t){for(let n=0;n<t.pages.length;n++){for(const l of dn(t.pages[n].components))yield{text:l,pageIndex:n};yield{text:"",pageIndex:n}}}function pn(t,n){const l=t.toLowerCase();let o=0;for(let r=l.indexOf(n);r>=0;r=l.indexOf(n,r+n.length))o++;return o}function mn(t){const{plan:n,gotoPage:l,highlight:o,clearHighlights:r}=t,a=e.ref(!1),s=e.ref(""),d=e.ref(0),v=e.ref(0),y=e.ref(!1);let p=[];const m=e.computed(()=>{if(v.value===0)return null;const C=d.value;let S=0,N=p.length-1;for(;S<N;){const U=S+N>>>1;p[U].cumulative<=C?S=U+1:N=U}const L=p[S];return L?{pageIndex:L.pageIndex,occurrence:C-(p[S-1]?.cumulative??0)}:null});let b=null,u=null,E=0;function k(){E++,b&&clearTimeout(b),u&&clearTimeout(u),b=u=null,y.value=!1}function w(C){s.value=C,d.value=0,v.value=0,p=[],y.value=!1;const S=C.trim().toLowerCase(),N=n.value;if(!S||!N)return;y.value=!0;const L=E,U=fn(N),K=[];let W=0;function ee(){if(u=null,L!==E||N!==n.value)return;const O=performance.now();let ae=0;for(;ae<5e3&&performance.now()-O<4;){const H=U.next();if(H.done){p=K,v.value=W,y.value=!1,p[0]&&l(p[0].pageIndex+1);return}const c=pn(H.value.text,S);if(c>0){W+=c;const f=K[K.length-1];f?.pageIndex===H.value.pageIndex?f.cumulative=W:K.push({pageIndex:H.value.pageIndex,cumulative:W})}ae++}u=setTimeout(ee,0)}ee()}function B(C){if(k(),s.value=C,d.value=v.value=0,p=[],!C.trim()){w("");return}y.value=!0,b=setTimeout(()=>{b=null,w(C)},Math.max(0,e.unref(t.debounceMs)??200))}function P(C){const S=v.value;if(S===0||y.value)return;d.value=(d.value+C+S)%S;const N=m.value;N&&l(N.pageIndex+1)}function R(){k(),s.value="",d.value=v.value=0,p=[]}return e.watch(n,R,{flush:"sync"}),e.onScopeDispose(R),{visible:a,query:s,matchIndex:d,matchCount:v,activeMatch:m,searching:y,toggle:()=>{a.value=!a.value},onInput:B,onNav:P,apply:C=>{s.value.trim()&&o(C,s.value.trim())},clear:C=>{r(C)},reset:R}}function vn(t,n){const l=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}}),o=e.computed(()=>!l.value||!n.plan.value?0:Math.round(JSON.stringify(n.plan.value).length/1024)),r=e.computed(()=>!l.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:o.value});return{enabled:l,debugStats:r}}function gn(t,n){const{thumbsRoot:l,visible:o,renderThumbCanvas:r}=n,a=e.ref(0),s=e.ref(800),d=e.computed(()=>(t.value?.pages??[]).map(P=>Math.round(P.pageHeightMm/P.pageWidthMm*116))),v=e.computed(()=>gt.createPageWindowIndex(d.value.map(P=>P+20),8)),y=e.computed(()=>v.value.window(s.value,a.value,1)),p=e.computed(()=>{if(!o.value)return[];const{start:P,end:R}=y.value;return d.value.slice(P,R+1).map((C,S)=>({index:P+S,height:C}))});let m=0,b=0,u=!1;function E(){const P=l.value;P&&(a.value=P.scrollTop,s.value=P.clientHeight||800)}function k(){u||b||(b=requestAnimationFrame(()=>{b=0,E()}))}function w(){if(p.value,m&&cancelAnimationFrame(m),m=0,u||!o.value||!t.value||!l.value)return;E();const P=p.value,R=t.value,C=l.value;let S=0;function N(){if(m=0,!(u||!o.value||t.value!==R||l.value!==C)){for(let L=0;S<P.length&&L<2;L++,S++){const U=P[S].index,K=C.querySelector(`[data-thumb="${U+1}"]`);if(!K||K.childElementCount>0)continue;const W=r(U);W&&(W.style.width="100%",W.style.height="100%",W.style.display="block",K.appendChild(W))}S<P.length&&(m=requestAnimationFrame(N))}}m=requestAnimationFrame(N)}function B(){u=!0,m&&cancelAnimationFrame(m),b&&cancelAnimationFrame(b),m=b=0}return e.onScopeDispose(B),{schedule:w,destroy:B,onScroll:k,windowRange:y,visibleThumbs:p}}function hn(){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 bn={class:"mrp-toolbar"},yn={class:"mrp-title"},wn=["disabled"],xn={class:"mrp-pageinfo"},En=["disabled"],Pn=["disabled"],kn={key:2,class:"mrp-search"},Cn=["placeholder","value"],$n={key:0,class:"mrp-search-count",role:"status"},Bn=["disabled"],Sn=["disabled"],Rn=["disabled"],Mn=["disabled"],Fn=["disabled"],Dn=["disabled"],Tn=["disabled"],Nn=["disabled"],In=["disabled"],Vn=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},busy:{type:Boolean}},emits:["goto","zoom","export","print","pdf-window","search-input","search-nav","search-toggle","thumbs-toggle","import-excel"],setup(t){const n=t,l=e.ref(null);e.watch(()=>n.search.visible,r=>{r&&e.nextTick(()=>l.value?.focus())});function o(r,a,s){return r.replace("{cur}",String(a)).replace("{total}",String(s))}return(r,a)=>(e.openBlock(),e.createElementBlock("div",bn,[e.createElementVNode("span",yn,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:a[0]||(a[0]=s=>r.$emit("goto",t.currentPage-1))},e.toDisplayString(t.messages.prevPage),9,wn),e.createElementVNode("span",xn,e.toDisplayString(o(t.messages.pageInfo,t.currentPage,t.pageCount)),1),e.createElementVNode("button",{class:"mrp-nav",type:"button",disabled:t.currentPage>=t.pageCount,onClick:a[1]||(a[1]=s=>r.$emit("goto",t.currentPage+1))},e.toDisplayString(t.messages.nextPage),9,En)],64)):e.createCommentVNode("",!0),a[18]||(a[18]=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:a[2]||(a[2]=s=>r.$emit("import-excel"))},e.toDisplayString(t.messages.importExcel??"导入 Excel 模板"),9,Pn)):e.createCommentVNode("",!0),t.search.visible?(e.openBlock(),e.createElementBlock("div",kn,[e.createElementVNode("input",{ref_key:"searchInputRef",ref:l,class:"mrp-search-input",type:"text",placeholder:t.messages.searchPlaceholder,value:t.search.query,onInput:a[3]||(a[3]=s=>r.$emit("search-input",s.target.value))},null,40,Cn),t.search.query?(e.openBlock(),e.createElementBlock("span",$n,e.toDisplayString(t.search.searching?t.messages.searching??"搜索中…":o(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:a[4]||(a[4]=s=>r.$emit("search-nav",-1))},e.toDisplayString(t.messages.prevMatch),9,Bn),e.createElementVNode("button",{class:"mrp-nav",type:"button",disabled:t.search.matchCount===0,onClick:a[5]||(a[5]=s=>r.$emit("search-nav",1))},e.toDisplayString(t.messages.nextMatch),9,Sn)])):e.createCommentVNode("",!0),e.createElementVNode("button",{class:e.normalizeClass(["mrp-nav",{"mrp-active":t.search.visible}]),type:"button",title:"Ctrl+F",onClick:a[6]||(a[6]=s=>r.$emit("search-toggle"))}," 🔍 ",2),e.createElementVNode("button",{class:e.normalizeClass(["mrp-nav",{"mrp-active":t.thumbsVisible}]),type:"button",onClick:a[7]||(a[7]=s=>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:a[8]||(a[8]=s=>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:a[9]||(a[9]=s=>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:a[10]||(a[10]=s=>r.$emit("zoom",150))}," 150% ",2),t.showExport?(e.openBlock(),e.createElementBlock("button",{key:3,class:"mrp-nav",type:"button",disabled:t.busy,onClick:a[11]||(a[11]=s=>r.$emit("export","html"))},e.toDisplayString(t.messages.exportHtml),9,Rn)):e.createCommentVNode("",!0),t.showExport?(e.openBlock(),e.createElementBlock("button",{key:4,class:"mrp-nav",type:"button",disabled:t.busy,onClick:a[12]||(a[12]=s=>r.$emit("export","pdf"))},e.toDisplayString(t.messages.exportPdf),9,Mn)):e.createCommentVNode("",!0),t.showExport?(e.openBlock(),e.createElementBlock("button",{key:5,class:"mrp-nav",type:"button",disabled:t.busy,onClick:a[13]||(a[13]=s=>r.$emit("export","xlsx"))},e.toDisplayString(t.messages.exportExcel),9,Fn)):e.createCommentVNode("",!0),t.showExport?(e.openBlock(),e.createElementBlock("button",{key:6,class:"mrp-nav",type:"button",disabled:t.busy,onClick:a[14]||(a[14]=s=>r.$emit("export","png"))},e.toDisplayString(t.messages.exportImage),9,Dn)):e.createCommentVNode("",!0),t.showExport?(e.openBlock(),e.createElementBlock("button",{key:7,class:"mrp-nav",type:"button",disabled:t.busy,onClick:a[15]||(a[15]=s=>r.$emit("export","word"))},e.toDisplayString(t.messages.exportWord),9,Tn)):e.createCommentVNode("",!0),t.showPrint?(e.openBlock(),e.createElementBlock("button",{key:8,class:"mrp-nav",type:"button",disabled:t.busy,onClick:a[16]||(a[16]=s=>r.$emit("print"))},e.toDisplayString(t.messages.print),9,Nn)):e.createCommentVNode("",!0),t.showPdfWindow?(e.openBlock(),e.createElementBlock("button",{key:9,class:"mrp-nav",type:"button",disabled:t.busy,onClick:a[17]||(a[17]=s=>r.$emit("pdf-window"))},e.toDisplayString(t.messages.pdfWindow),9,In)):e.createCommentVNode("",!0)]))}}),tt=(t,n)=>{const l=t.__vccOpts||t;for(const[o,r]of n)l[o]=r;return l},Pt=tt(Vn,[["__scopeId","data-v-1c2568a7"]]),On={class:"mrp-params"},zn={class:"mrp-params-title"},Ln={class:"mrp-params-grid"},Wn={class:"mrp-param-label"},An={key:0,class:"mrp-param-star"},Hn=["value","onChange"],qn={value:"",disabled:"",hidden:""},jn=["value"],Un=["type","placeholder","value","onInput"],Kn={class:"mrp-params-actions"},Gn=e.defineComponent({__name:"ReportParamPanel",props:{defs:{},modelValue:{},messages:{},attempted:{type:Boolean}},emits:["update:modelValue","query","reset"],setup(t,{emit:n}){const l=t,o=n,r=e.ref({...l.modelValue});e.watch(()=>l.modelValue,v=>{r.value={...v}});const a=e.computed(()=>l.defs.map(v=>({def:v,label:v.label??v.field,value:r.value[v.field]??""})));function s(v,y){r.value={...r.value,[v]:y},o("update:modelValue",{...r.value})}function d(v){const y=l.defs.find(p=>p.field===v);return l.attempted&&y?.required===!0&&!(r.value[v]??"").trim()}return(v,y)=>(e.openBlock(),e.createElementBlock("div",On,[e.createElementVNode("span",zn,e.toDisplayString(t.messages.paramsTitle),1),e.createElementVNode("div",Ln,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,p=>(e.openBlock(),e.createElementBlock("label",{key:p.def.field,class:e.normalizeClass(["mrp-param",{"mrp-param-missing":d(p.def.field)}])},[e.createElementVNode("span",Wn,[e.createTextVNode(e.toDisplayString(p.label),1),p.def.required?(e.openBlock(),e.createElementBlock("i",An,"*")):e.createCommentVNode("",!0)]),(p.def.type??"text")==="select"?(e.openBlock(),e.createElementBlock("select",{key:0,class:"mrp-param-input",value:p.value,onChange:m=>s(p.def.field,m.target.value),onKeydown:y[0]||(y[0]=e.withKeys(m=>v.$emit("query"),["enter"]))},[e.createElementVNode("option",qn,e.toDisplayString(p.def.placeholder??`请选择${p.label}`),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.def.options??[],m=>(e.openBlock(),e.createElementBlock("option",{key:m.value,value:m.value},e.toDisplayString(m.label),9,jn))),128))],40,Hn)):(e.openBlock(),e.createElementBlock("input",{key:1,class:"mrp-param-input",type:p.def.type==="number"?"number":p.def.type==="date"?"date":"text",placeholder:p.def.placeholder??`请输入${p.label}`,value:p.value,onInput:m=>s(p.def.field,m.target.value),onKeydown:y[1]||(y[1]=e.withKeys(m=>v.$emit("query"),["enter"]))},null,40,Un))],2))),128))]),e.createElementVNode("div",Kn,[e.createElementVNode("button",{class:"mrp-nav mrp-param-query",type:"button",onClick:y[2]||(y[2]=p=>v.$emit("query"))},e.toDisplayString(t.messages.query),1),e.createElementVNode("button",{class:"mrp-nav",type:"button",onClick:y[3]||(y[3]=p=>v.$emit("reset"))},e.toDisplayString(t.messages.reset),1)])]))}}),kt=tt(Gn,[["__scopeId","data-v-aafce92d"]]),Ct={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:"该单元格已变化,请重新打开编辑"},$t={shellBg:"#525659",shellFg:"#e8e8e8",toolbarBg:"#323639",toolbarBorder:"#22252a",toolbarFg:"#e8e8e8",btnFg:"#cfcfcf",btnBorder:"#4a4d52",btnHoverBg:"#414549",btnHoverFg:"#ffffff",btnActiveBg:"#2d5fb8"};function Bt(t={}){return{...t,defaults:t.defaults??{},presets:t.presets??{}}}function Yn(t){return t}const ie={showExport:!0,showPrint:!0,showPdfWindow:!0,showParams:!0,gapPx:18,pdfFontUrl:"/simhei.ttf",logger:console},Jn={warn:()=>{},info:()=>{}};function Re(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}}}function St(t,n){const l=n?t?.presets?.[n]:t?.defaultPreset?t?.presets?.[t.defaultPreset]:void 0,o=Re(t?.defaults,l);return{showExport:o.showExport??ie.showExport,showPrint:o.showPrint??ie.showPrint,showPdfWindow:o.showPdfWindow??ie.showPdfWindow,showParams:o.showParams??ie.showParams,gapPx:o.gapPx??ie.gapPx,pdfFontUrl:o.pdfFontUrl??ie.pdfFontUrl,theme:{...$t,...o.theme},messages:{...Ct,...o.messages},logger:o.logger??ie.logger,preview:{overscanPages:mt(o.preview?.overscanPages,1,10,!0),searchDebounceMs:mt(o.preview?.searchDebounceMs,200,2e3)},xlsx:{...o.xlsx},editable:o.editable??!1,excelImport:o.excelImport??!1}}function mt(t,n,l,o=!1){if(t==null||!Number.isFinite(t))return n;const r=Math.max(0,Math.min(l,t));return o?Math.floor(r):r}function Rt(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 Zn(t){const n=e.inject(fe.MACH_REPORT_CONFIG_KEY,null),l=e.computed(()=>{const o=n?.value??null,r="defaults"in t||"presets"in t||"defaultPreset"in t?Bt(t):{defaults:t,presets:{}};if(!o)return r;const a={...o.presets,...r.presets};for(const s of Object.keys(a))a[s]=Re(Re(o.presets[s],r.defaults),r.presets[s]);return{defaults:Re(o.defaults,r.defaults),presets:a,defaultPreset:r.defaultPreset??o.defaultPreset}});e.provide(fe.MACH_REPORT_CONFIG_KEY,l)}function Mt(){return e.inject(fe.MACH_REPORT_CONFIG_KEY,e.computed(()=>null))}const vt=new Map,ce=new Map,Xn=15e3;function Ze(t,n){return Object.assign(new Error(t),{cause:n})}function ye(t,n){return`PDF 字体 ${JSON.stringify(t)}:${n}。请部署支持报表文字的字体文件,并将 pdfFontUrl 配置为可访问的字体 URL;西文报表可设为空串`}function De(t){if(t?.reason instanceof Error&&t.reason.name==="AbortError")return t.reason;const n=Ze("PDF 字体检查已取消",t?.reason);return n.name="AbortError",n}async function Qn(t,n){let l=!1;const o=setTimeout(()=>{l=!0,n.abort()},Xn);try{const r=await fetch(t,{method:"HEAD",signal:n.signal});if(n.signal.aborted)throw De(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:ye(t,s.message),cause:s}}const a=r.headers.get("content-type")??"";if(/text\/html|application\/xhtml\+xml/i.test(a)){const s=new Error("字体 URL 返回 HTML 页面(可能是 SPA 路由回退),不是字体文件");return{status:"error",fontUrl:t,message:ye(t,s.message),cause:s}}if(/^text\//i.test(a)||/(?:\/|\+)json(?:\s*;|$)/i.test(a)){const s=new Error(`字体 URL 返回 ${a} 文本响应,不是字体文件`);return{status:"error",fontUrl:t,message:ye(t,s.message),cause:s}}return{status:"available",fontUrl:t,message:"PDF 字体资源可达;文字覆盖范围将在实际导出时校验"}}catch(r){if(n.signal.aborted&&!l)throw De(n.signal);return{status:"error",fontUrl:t,message:ye(t,l?"字体检查超时,请检查网络或字体服务":"字体检查失败,请检查网络、字体服务或跨域访问配置"),cause:r}}finally{clearTimeout(o)}}function _n(t,n){if(n?.aborted)return Promise.reject(De(n));if(!t)return Promise.resolve({status:"disabled",fontUrl:t,message:"已停用自定义 PDF 字体;内置字体用于西文,其他文字会在导出时校验"});const l=vt.get(t);if(l)return Promise.resolve(l);let o=ce.get(t);if(!o){const a=new AbortController;o={controller:a,promise:Qn(t,a),subscribers:0};const s=o;ce.set(t,s),s.promise=s.promise.then(d=>(!a.signal.aborted&&d.status==="available"&&vt.set(t,d),d)).finally(()=>{ce.get(t)===s&&ce.delete(t)})}const r=o;return r.subscribers++,new Promise((a,s)=>{let d=!1;const v=()=>d?!1:(d=!0,r.subscribers--,n?.removeEventListener("abort",y),!0),y=()=>{v()&&(r.subscribers===0&&(ce.get(t)===r&&ce.delete(t),r.controller.abort()),s(De(n)))};n?.addEventListener("abort",y,{once:!0}),r.promise.then(p=>{v()&&a(p)},p=>{v()&&s(p)}),n?.aborted&&y()})}function Ft(t={fontUrl:"/simhei.ttf"}){let n=null;const l=async(o,r)=>{n||(n=await import("@agile-team/mach-report/pdf"));let a=null;if(t.fontUrl)try{if(a=await n.loadFontWithCache(t.fontUrl,{strict:!0}),!a?.byteLength)throw new Error("字体文件为空或加载失败")}catch(m){const b=m instanceof Error?m.message:String(m);throw Ze(ye(t.fontUrl,b),m)}let s;try{s=await n.renderPlanToPdf(o,a?{customFontBytes:a}:{})}catch(m){if(!a)throw m;const b=m instanceof Error?m.message:String(m);throw Ze(`PDF 生成失败:${b}。当前字体 URL 为 ${JSON.stringify(t.fontUrl)};请确认该文件是有效字体,或重新配置 pdfFontUrl`,m)}const{bytes:d,unsupportedTextCount:v,pageErrors:y,fidelityWarnings:p}=s;if(v>0)throw new Error(`PDF 中有 ${v} 行文字无法编码;请部署支持所用文字的字体并配置 pdfFontUrl`);if(y.length>0)throw new Error(`PDF 有 ${y.length} 页渲染失败:${y[0]}`);return p.length>0&&r?.(`PDF 有 ${p.length} 处版式降级:${p.slice(0,2).join(";")}`),d};return l.checkFont=o=>_n(t.fontUrl,o),l}class re extends Error{constructor(n,l,o){super(l),this.name="MachReportError",this.code=n,this.cause=o}}function Dt(t){return t instanceof re?{code:t.code,cause:t.cause}:{code:"render",cause:t}}function de(t){return JSON.parse(JSON.stringify(t))}function er(t){const n=t.closest(".mrp-page-holder"),l=t.closest("[data-mr-component-index]");if(!n||!l)return null;const o={pageIndex:Number(n.dataset.page)-1,componentIndex:Number(l.dataset.mrComponentIndex),rowIndex:Number(t.dataset.mrRowIndex),columnIndex:Number(t.dataset.mrColumnIndex)};return Object.values(o).every(r=>Number.isInteger(r)&&r>=0)?o:null}function tr(t,n,l){const o=t.ownerDocument.createElement("textarea");return o.className="mrp-cell-editor",o.setAttribute("aria-label",n),o.value=l==null?"":String(l),o.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(o),o}function nr(t){const n=e.shallowRef(null),l=e.ref(!1),o=e.shallowRef([]);let r=null;function a(){const u=n.value;n.value=null,l.value=!1,r=null,u?.controller.abort(),u?.input.remove()}function s(){a(),o.value=[]}function d(u){return n.value===u&&!u.controller.signal.aborted&&t.plan.value===u.plan}function v(u){const E=t.options.value,k=j.getReportCellContext(u.plan,u.address);if(!(typeof E=="object"?E===u.options:E===!0)||!k?.editable||u.options.canEdit?.(k)===!1)throw new j.ReportCellEditError("readonly")}async function y(u){try{v(u);const E=j.createReportCellEdit(u.plan,u.address,u.input.value);if(Object.is(E.value,E.previousValue))return a(),!0;const k={signal:u.controller.signal},w=await u.options.validate?.(de(E),k);if(!d(u))return!1;if(w)throw new Error(w);if(v(u),await u.options.save?.(de(E),k),!d(u))return!1;v(u);const B=j.applyReportCellEdit(u.plan,E);return a(),o.value=[...o.value,E],t.plan.value=B,t.onChange(de(E)),!0}catch(E){return d(u)&&(t.onError(t.errorMessage?.(E)??(E instanceof Error?E.message:"单元格保存失败"),E),u.input.disabled=!1,u.input.setAttribute("aria-invalid","true"),u.input.focus()),!1}finally{n.value===u&&(l.value=!1)}}async function p(){if(r)return r;const u=n.value;if(!u)return!0;if(!d(u))return a(),!1;l.value=!0,u.input.disabled=!0;const E=y(u);r=E;const k=await E;return r===E&&(r=null),k}function m(u){u.stopPropagation(),!u.isComposing&&(u.key==="Escape"&&(u.preventDefault(),a()),u.key==="Enter"&&!u.shiftKey&&(u.preventDefault(),p()))}async function b(u){if(!t.options.value||t.blocked())return;const E=u.target;if(!(E instanceof Element)||E.closest(".mrp-cell-editor"))return;const k=E.closest("td[data-mr-row-index]");if(!k||!await p()||!k.isConnected)return;const w=t.plan.value,B=er(k);if(!w||!B||!t.options.value||t.blocked())return;const P=typeof t.options.value=="object"?t.options.value:{};try{const R=j.getReportCellContext(w,B);if(!R?.editable||P.canEdit?.(R)===!1)return;const C=tr(k,t.label(),R.value);n.value={plan:w,address:B,input:C,controller:new AbortController,options:P},C.addEventListener("keydown",m),C.addEventListener("blur",()=>{l.value||p()}),C.focus(),C.select()}catch(R){t.onError(R instanceof Error?R.message:"无法编辑单元格",R)}}return e.watch(t.options,(u,E)=>{(!u||u!==E)&&a()},{flush:"sync"}),e.watch(t.plan,()=>{n.value&&t.plan.value!==n.value.plan&&a()},{flush:"sync"}),e.onScopeDispose(s),{active:n,saving:l,changes:o,cancel:a,reset:s,commit:p,onDoubleClick:b,getChanges:()=>de(o.value)}}const rr={key:2,class:"mrp-edit-hint",role:"status"},or={key:4,class:"mrp-export-notice mrp-export-warning",role:"status"},ar={class:"mrp-main"},lr={key:0,class:"mrp-state"},sr={key:1,class:"mrp-state mrp-error"},ir={key:2,class:"mrp-state"},ur=["data-page"],cr=["onClick"],dr=["data-thumb"],fr={class:"mrp-thumb-no"},pr={class:"mrp-overlay"},mr={key:5,class:"mrp-debug","aria-hidden":"true"},$e=96/25.4,Ye="mach-report:ui",Je="mach-report:ui:wide",vr=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},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"],setup(t,{expose:n,emit:l}){e.useCssVars(i=>({a2d6c888:N.value+"px"}));const o=t,r=l,a=e.shallowRef(null),s=e.ref(!1),d=e.ref(""),v=e.shallowRef(null),y=e.ref(null),p=e.ref(!1),m=e.shallowRef(Object.freeze({status:"unchecked",fontUrl:""})),b=e.ref(null),u=e.ref(1),E=e.ref(null),k=e.ref(null),w=e.ref(null),B=e.ref(!1),P=e.ref(!1),R=e.ref(null),C=hn(),S=e.computed(()=>!!a.value?.pages.length&&a.value.pages.every(i=>i.layout==="wide")),N=e.computed(()=>Math.max(0,G.value));let L=Ye;const U=e.inject(fe.MACH_REPORT_FETCHER_KEY,null),K=e.inject(fe.MACH_REPORT_PDF_EXPORTER_KEY,null),W=e.computed(()=>Xe(o.reportId)),ee=e.computed(()=>o.fetcher??U),O=e.computed(()=>a.value?.pages.length??0),ae=e.computed(()=>Object.freeze({loading:s.value,hasPlan:O.value>0,pageCount:O.value,currentPage:u.value,exporting:y.value,printing:p.value,canExport:!s.value&&!P.value&&!V.saving.value&&O.value>0&&y.value===null,canPrint:!s.value&&!P.value&&!V.saving.value&&O.value>0&&!p.value,error:v.value,pdfFont:m.value,editing:V.active.value!==null,saving:V.saving.value,importing:P.value,dirty:V.changes.value.length>0}));function H(i,g,h){v.value=Object.freeze({message:i,code:g,cause:h}),r("error",i,{code:g,cause:h})}const c=Mt(),f=e.computed(()=>St(c.value,o.preset)),x=e.computed(()=>({...f.value.messages,...o.messages})),$=e.computed(()=>o.showExport??f.value.showExport),M=e.computed(()=>o.showPrint??f.value.showPrint),z=e.computed(()=>o.showPdfWindow??f.value.showPdfWindow),G=e.computed(()=>o.gapPx??(S.value?0:f.value.gapPx)),Q=e.computed(()=>o.showParams??f.value.showParams),nt=e.computed(()=>o.editable??f.value.editable),we=e.computed(()=>o.excelImport??f.value.excelImport);function Nt(i){return i instanceof j.ReportCellEditError?{number:x.value.editInvalidNumber,boolean:x.value.editInvalidBoolean,conflict:x.value.editConflict}[i.code]??i.message:i instanceof Error?i.message:"单元格保存失败"}const V=nr({plan:a,options:nt,blocked:()=>s.value||P.value||y.value!==null||p.value,label:()=>x.value.editCell??"编辑单元格",errorMessage:Nt,onChange:i=>{v.value=null,b.value=null,r("cell-edit",i)},onError:(i,g)=>{b.value={kind:"error",message:i},H(i,"edit",g)}});let rt=null,Te=null;function ot(){if(K)return K;const i=f.value.pdfFontUrl;return(!Te||rt!==i)&&(rt=i,Te=Ft({fontUrl:i})),Te}let xe=0,pe=null,Ee=null,te=!1;function Ne(){xe++,pe?.abort(),pe=null}async function Pe(){if(te)throw new re("config","报表预览已卸载");Ne();const i=xe,g=new AbortController;pe=g;const h=f.value.pdfFontUrl;m.value=Object.freeze({status:"checking",fontUrl:h});try{const T=ot(),D=T.checkFont?await T.checkFont(g.signal):{status:"unverified",fontUrl:"",message:"自定义 PDF 导出器未提供字体预检查;字体由宿主确认"};return!te&&i===xe&&!g.signal.aborted&&(m.value=Object.freeze({...D})),D}catch(T){if(g.signal.aborted)throw T;const D={status:"error",fontUrl:h,message:T instanceof Error?T.message:"PDF 字体检查失败",cause:T};return!te&&i===xe&&(m.value=Object.freeze(D)),D}finally{pe===g&&(pe=null)}}function It(){Pe().catch(()=>{})}e.watch([a,()=>f.value.pdfFontUrl,$,z],()=>{const i=m.value.fontUrl===f.value.pdfFontUrl;i&&m.value.status==="available"||(Ne(),(!i||m.value.status==="checking")&&(m.value=Object.freeze({status:"unchecked",fontUrl:f.value.pdfFontUrl})),!te&&O.value>0&&($.value||z.value)&&Pe().catch(()=>{}))},{immediate:!0});const oe=e.computed(()=>o.paramDefs??ee.value?.getParamDefs?.(W.value)??[]),le=e.ref({}),Ie=e.ref(!1);function me(i){const g={};for(const h of i)g[h.field]=o.params[h.field]??h.defaultValue??"";le.value=g,Ie.value=!1}me(oe.value),e.watch(oe,i=>me(i)),e.watch(W,()=>me(oe.value)),e.watch(()=>JSON.stringify(o.params),()=>me(oe.value));const Vt=e.computed(()=>{const i={...o.params};for(const[g,h]of Object.entries(le.value))h===""?delete i[g]:i[g]=h;return i});function Ot(){return oe.value.filter(i=>i.required===!0&&!(le.value[i.field]??"").trim())}function zt(){Ie.value=!0;const i=Ot();if(i.length>0){const g=i[0].label??i[0].field,h=x.value.paramRequired.replace("{label}",g);d.value=h,H(h,"param");return}se()}function Lt(){me(oe.value)}const Wt=e.computed(()=>({height:o.height,...Rt(f.value.theme)})),{zoom:Y,zoomMode:ve,applyFitZoom:at,setZoom:ge}=yt(()=>({viewport:k.value,pageWidthPx:Ve.contentSize.value.w||210*$e})),Ve=bt(a,Y,{pxPerMm:$e,gapPx:G,overscan:e.computed(()=>f.value.preview.overscanPages)}),{contentSize:Oe,windowRange:he,visiblePages:lt,makeScrollHandler:At,refreshViewport:ze}=Ve,Ht=At(u,O);function Le(i){ge(i*100)}function ke(){P.value=!1,V.reset(),st(),a.value=null,u.value=1,I.reset()}let A=0,Z=null;async function se(){if(te)return;const i=++A;P.value=!1,Z?.abort(),Z=null;const g=ee.value;if(s.value=!1,v.value=null,W.value.length===0){d.value="缺少报表 ID",ke(),H(d.value,"param");return}if(!g){d.value="未提供渲染数据源 fetcher",ke(),H(d.value,"config");return}s.value=!0,d.value="",b.value=null,ke();const h=C.start(),T=new AbortController;Z=T;const D=new Set;function X(F){i!==A||T.signal.aborted||D.has(F)||(D.add(F),f.value.logger.warn("[mach-report] 报表告警:",F),r("warning",F))}try{const F=await g({reportIds:W.value,params:{...Vt.value},signal:T.signal,onWarning:X});if(i!==A)return;const q=j.validateRenderPlan(F);if(!q.ok){const Ce=q.errors.slice(0,3).map(ft=>`${ft.path}: ${ft.message}`).join("; ");throw new re("validate",`渲染计划校验失败(${q.errors.length} 处): ${Ce}`)}if(q.warnings.forEach(Ce=>X(`${Ce.path}: ${Ce.message}`)),i!==A||T.signal.aborted)return;a.value=F,u.value=1,C.end(h),k.value&&(k.value.scrollTop=0,k.value.scrollLeft=0);const J=S.value?Je:Ye;J!==L&&(L=J,Ke()),ve.value==="fit"&&at(),r("loaded",F.pages.length)}catch(F){if(i!==A)return;const q=F instanceof re?F:F instanceof j.ReportSourceError?new re(F.code,F.message,F.cause):new re("fetch",F instanceof Error?F.message:"预览加载失败",F);d.value=q.message;const J=Dt(q);H(q.message,J.code,J.cause)}finally{i===A&&(s.value=!1),Z===T&&(Z=null)}}function ne(i){if(te||O.value<=0)return;const g=Math.max(1,Math.min(O.value,i));u.value=g;const h=k.value;h&&(h.scrollTop=Ve.pageOffsetPx(g-1)*Y.value,ze(h))}const be=xt(a,{getPdfExporter:ot,getXlsxOptions:()=>f.value.xlsx,onError:(i,g)=>{b.value={kind:"error",message:i},H(i,g??"print")},onWarning:i=>{b.value={kind:"warning",message:i},r("warning",i)},onBusy:i=>{y.value=i,i?b.value={kind:"progress",message:x.value.exporting.replace("{format}",i)}:b.value?.kind==="progress"&&(b.value=null)},onPrinting:i=>{p.value=i}}),{releasePrintFrame:st,dispose:qt}=be;async function We(){s.value||P.value||V.active.value&&!await V.commit()||(v.value=null,await be.print())}async function Ae(i){s.value||P.value||V.active.value&&!await V.commit()||(v.value=null,await be.exportAs(i))}function He(){if(s.value||P.value||V.active.value){b.value={kind:"warning",message:x.value.editingHint??"请先确认单元格修改"};return}v.value=null,be.openPdfWindow()}async function it(i,g={}){te||(le.value={...le.value,...i},g.reload!==!1&&await se())}const jt={reload:se,print:We,exportAs:Ae,openPdfWindow:He,gotoPage:ne,setParams:it,checkPdfFont:Pe,importExcel:qe,getPlan:ut,getChanges:V.getChanges,get state(){return ae.value}};e.provide(fe.MACH_REPORT_CONTROLLER_KEY,jt);function ut(){return a.value?de(a.value):null}async function qe(i,g){if(te)throw new re("config","报表预览已卸载");const h=++A;Z?.abort(),Z=null,s.value=!1,V.cancel(),be.invalidatePending(),P.value=!0,v.value=null,b.value={kind:"progress",message:x.value.importing??"正在导入 Excel…"};try{const{importExcelTemplate:T}=await import("@agile-team/mach-report/xlsx");if(h!==A)return null;const D=typeof we.value=="object"?we.value:{},X=await T(i,{...D,...g,limits:{...D.limits,...g?.limits}});if(h!==A)return null;const F=j.paginateTemplate(de(X.template),{}).plan,q=j.validateRenderPlan(F);if(!q.ok)throw new Error(q.errors.map(J=>J.message).slice(0,3).join("; "));for(const J of X.warnings){if(h!==A)return null;r("warning",J)}return h!==A?null:(V.reset(),st(),I.reset(),a.value=F,u.value=1,d.value="",b.value=X.warnings.length?{kind:"warning",message:X.warnings.join(";")}:null,k.value&&(k.value.scrollTop=0,k.value.scrollLeft=0),L=S.value?Je:Ye,Ke(),r("template-import",X),h===A&&r("loaded",F.pages.length),X)}catch(T){if(h!==A)return null;const D=new re("import",T instanceof Error?T.message:"Excel 模板导入失败",T);throw b.value={kind:"error",message:D.message},H(D.message,"import",T),D}finally{h===A&&(P.value=!1)}}function Ut(i){const g=i.target,h=g.files?.[0];g.value="",h&&qe(h).catch(()=>{})}const I=mn({plan:a,gotoPage:ne,debounceMs:e.computed(()=>f.value.preview.searchDebounceMs),highlight:ln,clearHighlights:an});function Kt(i){i.ctrlKey&&(i.preventDefault(),Le(Y.value*(i.deltaY<0?1.1:1/1.1)))}function Gt(i){if(!(i.target instanceof Element&&i.target.closest("input,textarea,select,[contenteditable='true']"))){if((i.ctrlKey||i.metaKey)&&i.key.toLowerCase()==="f"){i.preventDefault(),I.visible.value||I.toggle();return}switch(i.key){case"PageDown":i.preventDefault(),ne(u.value+1);break;case"PageUp":i.preventDefault(),ne(u.value-1);break;case"Home":i.preventDefault(),ne(1);break;case"End":i.preventDefault(),ne(O.value);break;case"+":case"=":i.preventDefault(),Le(Y.value*1.1);break;case"-":i.preventDefault(),Le(Y.value/1.1);break}}}function Yt(){try{localStorage.setItem(L,JSON.stringify({zoomMode:ve.value==="fit"?"fit":Math.round(Y.value*100)}))}catch{}}e.watch([ve,Y],Yt);let je="";const ct=new WeakMap;function dt(i=!1){const g=I.activeMatch.value;if(!S.value||!g)return;const h=`${I.query.value}:${I.matchIndex.value}:${g.pageIndex}`;if(!i&&h===je)return;const D=E.value?.querySelector(`[data-page="${g.pageIndex+1}"]`)?.querySelectorAll("mark.mrp-hit")[g.occurrence];D&&(D.scrollIntoView?.({block:"nearest",inline:"nearest"}),je=h)}e.watchEffect(()=>{const i=a.value;if(!i)return;const g=I.activeMatch.value;I.matchIndex.value,g||(je=""),lt.value;const h=E.value;if(!h)return;h.querySelectorAll(".mrp-page-holder").forEach(D=>{const X=Number(D.dataset.page??0)-1,F=i.pages[X];if(!F||D.childElementCount>0&&ct.get(D)===F){if(D.firstElementChild){const J=D.firstElementChild;I.clear(J),I.apply(J)}return}D.style.width=`${F.pageWidthMm*$e}px`;const q=j.renderPage(F,96,{},document);I.apply(q),D.replaceChildren(q),ct.set(D,F)}),dt()},{flush:"post"}),e.watch(()=>I.query.value,i=>{i||E.value?.querySelectorAll(".mrp-page-holder").forEach(g=>{I.clear(g)})});const _=gn(a,{thumbsRoot:w,visible:B,renderThumbCanvas:i=>{try{const g=a.value.pages[i],h=Math.min(.2,116/Math.max(1,g.pageWidthMm*$e)),{canvases:T}=j.renderPlanToCanvas(a.value,{start:i,end:i,dpr:h});return T[0]??null}catch{return null}}});e.watchEffect(()=>{_.schedule()},{flush:"post"});const Jt=e.computed(()=>o.debug),{debugStats:ue}=vn(Jt,{plan:a,pageCount:O,windowRange:he,zoom:Y,loadMs:C.loadMs});function Ue(){ze(k.value),_.schedule(),ve.value==="fit"&&at(),dt(!0)}function Ke(){ge(L===Je?100:"fit");try{const i=JSON.parse(localStorage.getItem(L)??"{}");i.zoomMode==="fit"?ge("fit"):typeof i.zoomMode=="number"&&ge(i.zoomMode)}catch{}}return e.onMounted(()=>{window.addEventListener("resize",Ue),typeof ResizeObserver<"u"&&k.value&&(Ee=new ResizeObserver(Ue),Ee.observe(k.value)),ze(k.value),Ke(),o.autoLoad&&se()}),e.onUnmounted(()=>{te=!0,V.reset(),P.value=!1,Ne(),A++,Z?.abort(),Z=null,window.removeEventListener("resize",Ue),Ee?.disconnect(),Ee=null,_.destroy(),I.reset(),qt()}),e.watch(()=>[JSON.stringify(W.value),JSON.stringify(o.params),ee.value],()=>{if(o.autoLoad){se();return}A++,Z?.abort(),Z=null,s.value=!1,d.value="",v.value=null,b.value=null,ke()}),n({reload:se,print:We,exportAs:Ae,openPdfWindow:He,gotoPage:ne,setParams:it,checkPdfFont:Pe,importExcel:qe,getPlan:ut,getChanges:V.getChanges,state:ae}),(i,g)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["mach-report-preview",{"mrp-wide-report":S.value}]),style:e.normalizeStyle(Wt.value)},[Q.value&&oe.value.length>0?(e.openBlock(),e.createBlock(kt,{key:0,defs:oe.value,modelValue:le.value,"onUpdate:modelValue":g[0]||(g[0]=h=>le.value=h),messages:x.value,attempted:Ie.value,onQuery:zt,onReset:Lt},null,8,["defs","modelValue","messages","attempted"])):e.createCommentVNode("",!0),e.createVNode(Pt,{"page-count":O.value,"current-page":u.value,"zoom-mode":e.unref(ve),zoom:e.unref(Y),"show-export":$.value,"show-print":M.value,"show-pdf-window":z.value,messages:x.value,search:{visible:e.unref(I).visible.value,query:e.unref(I).query.value,matchIndex:e.unref(I).matchIndex.value,matchCount:e.unref(I).matchCount.value,searching:e.unref(I).searching.value},"thumbs-visible":B.value,"show-import":!!we.value,busy:s.value||P.value||e.unref(V).saving.value,onGoto:ne,onZoom:e.unref(ge),onExport:g[1]||(g[1]=h=>Ae(h)),onPrint:We,onPdfWindow:He,onSearchInput:e.unref(I).onInput,onSearchNav:e.unref(I).onNav,onSearchToggle:e.unref(I).toggle,onThumbsToggle:g[2]||(g[2]=h=>B.value=!B.value),onImportExcel:g[3]||(g[3]=h=>R.value?.click())},null,8,["page-count","current-page","zoom-mode","zoom","show-export","show-print","show-pdf-window","messages","search","thumbs-visible","show-import","busy","onZoom","onSearchInput","onSearchNav","onSearchToggle"]),we.value?(e.openBlock(),e.createElementBlock("input",{key:1,ref_key:"importInputRef",ref:R,class:"mrp-import-input",type:"file",accept:".xlsx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",hidden:"",onChange:Ut},null,544)):e.createCommentVNode("",!0),nt.value&&O.value>0?(e.openBlock(),e.createElementBlock("div",rr,e.toDisplayString(e.unref(V).saving.value?x.value.saving:x.value.editingHint),1)):e.createCommentVNode("",!0),b.value?(e.openBlock(),e.createElementBlock("div",{key:3,class:e.normalizeClass(["mrp-export-notice",`mrp-export-${b.value.kind}`]),role:"alert"},e.toDisplayString(b.value.message),3)):e.createCommentVNode("",!0),m.value.status==="error"&&($.value||z.value)?(e.openBlock(),e.createElementBlock("div",or,[e.createTextVNode(e.toDisplayString(x.value.pdfFontUnavailable)+" ",1),e.createElementVNode("button",{type:"button",onClick:It},e.toDisplayString(x.value.retry),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",ar,[e.createElementVNode("div",{ref_key:"viewportRef",ref:k,class:"mrp-body",tabindex:"0",onWheel:Kt,onKeydown:Gt,onDblclick:g[4]||(g[4]=(...h)=>e.unref(V).onDoubleClick&&e.unref(V).onDoubleClick(...h)),onScrollPassive:g[5]||(g[5]=h=>e.unref(Ht)(h.target))},[s.value?(e.openBlock(),e.createElementBlock("div",lr,e.toDisplayString(x.value.loading),1)):d.value?(e.openBlock(),e.createElementBlock("div",sr,[e.createTextVNode(e.toDisplayString(d.value)+" ",1),e.createElementVNode("button",{class:"mrp-retry",type:"button",onClick:se},e.toDisplayString(x.value.retry),1)])):!a.value||O.value===0?(e.openBlock(),e.createElementBlock("div",ir,e.toDisplayString(x.value.empty),1)):(e.openBlock(),e.createElementBlock("div",{key:3,class:"mrp-scale",style:e.normalizeStyle({width:`${e.unref(Oe).w*e.unref(Y)}px`,height:`${e.unref(Oe).h*e.unref(Y)}px`})},[e.createElementVNode("div",{ref_key:"containerRef",ref:E,class:"mrp-scale-inner",style:e.normalizeStyle({transform:`scale(${e.unref(Y)})`,transformOrigin:"top left",width:`${e.unref(Oe).w}px`})},[e.unref(he).padTopPx>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mrp-spacer-top",style:e.normalizeStyle({height:`${e.unref(he).padTopPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(lt),h=>(e.openBlock(),e.createElementBlock("div",{key:h.index,class:"mrp-page-holder","data-page":h.index+1},null,8,ur))),128)),e.unref(he).padBottomPx>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:"mrp-spacer-bottom",style:e.normalizeStyle({height:`${e.unref(he).padBottomPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0)],4)],4))],544),B.value&&O.value>0?(e.openBlock(),e.createElementBlock("aside",{key:0,ref_key:"thumbsRef",ref:w,class:"mrp-thumbs",onScrollPassive:g[6]||(g[6]=(...h)=>e.unref(_).onScroll&&e.unref(_).onScroll(...h))},[e.unref(_).windowRange.value.padTopPx>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mrp-thumb-spacer",style:e.normalizeStyle({height:`${e.unref(_).windowRange.value.padTopPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(_).visibleThumbs.value,h=>(e.openBlock(),e.createElementBlock("div",{key:h.index,class:e.normalizeClass(["mrp-thumb",{"mrp-thumb-active":h.index+1===u.value}]),style:e.normalizeStyle({height:`${h.height+20}px`}),onClick:T=>ne(h.index+1)},[e.createElementVNode("div",{class:"mrp-thumb-box","data-thumb":h.index+1,style:e.normalizeStyle({height:`${h.height}px`})},null,12,dr),e.createElementVNode("span",fr,e.toDisplayString(h.index+1),1)],14,cr))),128)),e.unref(_).windowRange.value.padBottomPx>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:"mrp-thumb-spacer",style:e.normalizeStyle({height:`${e.unref(_).windowRange.value.padBottomPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0)],544)):e.createCommentVNode("",!0)]),e.createElementVNode("div",pr,[e.renderSlot(i.$slots,"default",{},void 0,!0)]),e.unref(ue)?(e.openBlock(),e.createElementBlock("div",mr,[g[7]||(g[7]=e.createElementVNode("div",null,"mach-report debug",-1)),e.createElementVNode("div",null,"pages: "+e.toDisplayString(e.unref(ue).pages)+" | window: ["+e.toDisplayString(e.unref(ue).window)+"]",1),e.createElementVNode("div",null,"zoom: "+e.toDisplayString(e.unref(ue).zoom)+" | load: "+e.toDisplayString(e.unref(ue).loadMs),1),e.createElementVNode("div",null,"plan: "+e.toDisplayString(e.unref(ue).planKB)+"KB",1)])):e.createCommentVNode("",!0)],6))}}),Tt=tt(vr,[["__scopeId","data-v-fa6fd3bb"]]),gr=Object.freeze(Object.defineProperty({__proto__:null,default:Tt},Symbol.toStringTag,{value:"Module"}));exports.DEFAULT_MESSAGES=Ct;exports.DEFAULT_THEME=$t;exports.MachReportError=re;exports.PlanLoadError=Be;exports.ReportParamPanel=kt;exports.ReportPreview=Tt;exports.ReportPreview$1=gr;exports.ReportToolbar=Pt;exports.SILENT_LOGGER=Jn;exports.buildPrintDocument=et;exports.buildWordHtml=wt;exports.createDefaultPdfExporter=Ft;exports.createFetchRequest=rn;exports.defineMachReportConfig=Bt;exports.defineMachReportPreset=Yn;exports.joinReportIds=nn;exports.normalizeReportIds=Xe;exports.printPlans=on;exports.provideMachReportConfig=Zn;exports.resolveConfig=St;exports.themeToCssVars=Rt;exports.toErrorDetail=Dt;exports.useMachReportConfig=Mt;exports.usePageWindow=bt;exports.usePrintExport=xt;exports.useZoom=yt;
|