@agile-team/mach-report 2.8.1 → 2.8.3
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 +3 -3
- package/dist/{ReportPreview-vdZ5XYYb.js → ReportPreview-DRBAUkxj.js} +610 -653
- package/dist/ReportPreview-DjGeWHY-.cjs +6 -0
- package/dist/_plugin-vue_export-helper-BLmdZLlg.cjs +1 -0
- package/dist/_plugin-vue_export-helper-DPbiz14D.js +53 -0
- package/dist/designer.cjs +1 -1
- package/dist/designer.d.cts +38 -0
- package/dist/designer.d.ts +38 -0
- package/dist/designer.js +758 -444
- package/dist/{plugin-zROi2Bgp.js → plugin-BurDDMcd.js} +1 -1
- package/dist/{plugin-BAD7Ry8V.cjs → plugin-DSFu51Ua.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/package.json +1 -1
- package/dist/ReportPreview-fKUPcCTN.cjs +0 -6
- package/dist/_plugin-vue_export-helper-BHFhmbuH.cjs +0 -1
- package/dist/_plugin-vue_export-helper-CHgC5LLL.js +0 -9
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";var ia=Object.create;var Yt=Object.defineProperty;var ca=Object.getOwnPropertyDescriptor;var ua=Object.getOwnPropertyNames;var da=Object.getPrototypeOf,ma=Object.prototype.hasOwnProperty;var fa=(t,n,a,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of ua(n))!ma.call(t,r)&&r!==a&&Yt(t,r,{get:()=>n[r],enumerable:!(o=ca(n,r))||o.enumerable});return t};var mt=(t,n,a)=>(a=t!=null?ia(da(t)):{},fa(n||!t||!t.__esModule?Yt(a,"default",{value:t,enumerable:!0}):a,t));const e=require("vue"),H=require("@agile-team/mach-report"),an=require("./page-window-index-DEjnM6IB.cjs"),Q=require("./progress-KvhwXZ1Q.cjs"),on=require("./render-plan-CckPEQyf.cjs"),q=require("./_plugin-vue_export-helper-BLmdZLlg.cjs"),Be=require("./plugin-DSFu51Ua.cjs");function kt(t){return t==null?[]:Array.isArray(t)?t.map(String).filter(n=>n!==""):String(t).split(",").map(n=>n.trim()).filter(n=>n!=="")}function pa(t){return kt(t).join(",")}class je extends Error{constructor(n){super(n),this.name="PlanLoadError"}}function ga(t={}){const{baseUrl:n="",headers:a,credentials:o,timeoutMs:r=3e4}=t,l=n.replace(/\/+$/,"");return async({url:s,method:i,params:d,signal:v})=>{let h=`${l}${s}`;if(d&&Object.keys(d).length>0){const c=h.indexOf("#"),w=c>=0?h.slice(c):"",S=c>=0?h.slice(0,c):h,I=S.indexOf("?"),P=I>=0?S.slice(0,I):S,V=new URLSearchParams(I>=0?S.slice(I+1):"");for(const[A,j]of Object.entries(d))V.set(A,j);h=`${P}?${V}${w}`}const m=(c,w)=>{const S=new je(c);return Object.defineProperty(S,"cause",{value:w,configurable:!0,writable:!0}),S};if(v?.aborted)throw m(`请求已取消: ${s}`,v.reason);const f=new AbortController;let y;const g=()=>{f.signal.aborted||(y="external",f.abort(v?.reason))};v?.addEventListener("abort",g,{once:!0});const u=setTimeout(()=>{f.signal.aborted||(y="timeout",f.abort())},r);try{const c=await fetch(h,{method:i.toUpperCase(),headers:{Accept:"application/json",...a},credentials:o,signal:f.signal});if(!c.ok)throw new je(`HTTP ${c.status} ${s}`);return await c.json()}catch(c){throw y==="timeout"?m(`请求超时(${r}ms): ${s}`,c):y==="external"?m(`请求已取消: ${s}`,c):c instanceof je?c:m(`请求失败(${s}): ${c instanceof Error?c.message:String(c)}`,c)}finally{clearTimeout(u),v?.removeEventListener("abort",g)}}}function rn(t,n,a={}){const o=a.pxPerMm??3.7795275590551185,r=e.computed(()=>Math.max(0,e.unref(a.gapPx)??18)),l=e.ref(0),s=e.ref(800),i=e.computed(()=>{const c=t.value?.pages??[];return an.createPageWindowIndex(c.map(w=>w.pageHeightMm*o),r.value)}),d=e.computed(()=>{let c=0;for(const w of t.value?.pages??[])c=Math.max(c,w.pageWidthMm*o);return{w:c,h:i.value.totalHeightPx}}),v=e.computed(()=>i.value.window(s.value/n.value,l.value/n.value,e.unref(a.overscan)??1)),h=e.computed(()=>{const c=t.value;if(!c)return[];const{start:w,end:S}=v.value;return c.pages.slice(w,S+1).map((I,P)=>({page:I,index:w+P}))});let m=0,f=!1;function y(c){c&&(l.value=c.scrollTop,s.value=c.clientHeight||800)}function g(c,w){return S=>{m||f||(m=requestAnimationFrame(()=>{if(m=0,f||(y(S),w.value<=0))return;const I=Math.max(0,S.scrollTop+32)/n.value;c.value=Math.min(w.value,i.value.pageAt(I)+1)}))}}function u(){f=!0,m&&cancelAnimationFrame(m),m=0}return e.onScopeDispose(u),{contentSize:d,windowRange:v,visiblePages:h,makeScrollHandler:g,refreshViewport:y,pageOffsetPx:c=>i.value.offsetAt(c),destroy:u}}const Zt=96/25.4;function va(t){const n=new WeakMap,a=e.ref(0);let o,r=0,l=0,s=!1;function i(){r++,l&&cancelAnimationFrame(l),l=0}function d(u,c,w,S){return!s&&c===r&&t.plan.value===w&&t.root.value===S&&S.contains(u.holder)&&Number(u.holder.dataset.page)===u.index+1}function v(u){const{holder:c,page:w}=u;n.delete(c),c.style.width=`${w.pageWidthMm*Zt}px`,c.style.height=`${w.pageHeightMm*Zt}px`,c.setAttribute("aria-busy","true");const S=c.ownerDocument.createElement("div");S.className="mrp-page-loading";const I=c.ownerDocument.createElement("span");I.textContent=t.loading(),I.style.transform=`scale(${1/Math.max(1e-4,t.zoom())})`,S.append(I),c.replaceChildren(S)}function h(u){const c=n.get(u.holder);return!c||c.page!==u.page||c.element.parentElement!==u.holder?!1:(c.query!==t.query()&&(t.clear(c.element),t.highlight(c.element),c.query=t.query()),!0)}function m(u,c,w,S){if(d(u,c,w,S))try{const I=H.renderPage(u.page,96,{},u.holder.ownerDocument);if(t.highlight(I),!d(u,c,w,S))return;u.holder.replaceChildren(I),u.holder.removeAttribute("aria-busy"),n.set(u.holder,{page:u.page,element:I,query:t.query()}),t.mounted(u.holder),t.ready()}catch(I){if(!d(u,c,w,S))return;u.holder.removeAttribute("aria-busy");const P=u.holder.ownerDocument.createElement("div");P.className="mrp-page-render-error",P.setAttribute("role","alert"),P.textContent=I instanceof Error?I.message:String(I),u.holder.replaceChildren(P),t.error(I)}}function f(u,c,w,S){u.length&&(l=requestAnimationFrame(()=>{if(c!==r||s)return;l=0;const I=u.shift();I&&m(I,c,w,S),c===r&&t.plan.value===w&&t.root.value===S&&f(u,c,w,S)}))}function y(){i();const u=t.plan.value,c=t.root.value;if(s||!u||!c){o=void 0;return}const w=r,S=o?.plan===u?o.index:t.priority();o=void 0;const I=[];c.querySelectorAll(".mrp-page-holder").forEach(A=>{const j=Number(A.dataset.page)-1,K=u.pages[j];if(!K)return;const W={holder:A,page:K,index:j};h(W)||(v(W),I.push(W))});const P=I.findIndex(A=>A.index===S),V=P<0?void 0:I.splice(P,1)[0];V&&m(V,w,u,c),t.ready(),f(I,w,u,c)}function g(u){s||!t.plan.value||(o={plan:t.plan.value,index:u},a.value++)}return e.watch([t.plan,t.root,t.pages,t.priority,t.focusToken,t.query,t.zoom,t.loading,a],y,{flush:"post",immediate:!0}),e.onScopeDispose(()=>{s=!0,o=void 0,i()}),{prioritize:g,cancel:i}}function ln(t){const n=e.ref(1),a=e.ref("fit");let o=0;function r(){o&&cancelAnimationFrame(o),o=0}function l(){r(),o=requestAnimationFrame(()=>{if(o=0,a.value!=="fit")return;const i=t();!i?.viewport||i.viewport.clientWidth<=48||!Number.isFinite(i.pageWidthPx)||(n.value=Math.min(1,(i.viewport.clientWidth-48)/Math.max(1,i.pageWidthPx)))})}function s(i){if(i==="fit")a.value="fit",l();else{if(!Number.isFinite(i))return;r(),a.value="raw",n.value=Math.min(3,Math.max(.3,i/100))}}return e.getCurrentScope()&&e.onScopeDispose(r),{zoom:n,zoomMode:a,applyFitZoom:l,setZoom:s}}let ha=0;function Xt(t,n){const a=new AbortController;let o={taskId:`mr-output-${Date.now().toString(36)}-${++ha}`,kind:t,stage:t==="print"?"print":"encode",status:"running",cancellable:!0};function r(){try{n?.(Object.freeze({...o}))}catch{}}return{controller:a,get task(){return o},start:r,update(l,s,i){a.signal.aborted||o.status!=="running"||(o={...o,stage:l,completed:s,total:i},r())},finish(l="completed"){o.status==="running"&&(o={...o,status:l,cancellable:!1},r(),l==="cancelled"&&a.abort())}}}const Ne=8;function Te(){return new Promise(t=>setTimeout(t,0))}function He(t){return`p${t.pageWidthMm}x${t.pageHeightMm}`.replace(/[.+]/g,"_")}function Ue(t){const n=new Map;return t.pages.forEach(r=>{n.has(He(r))||n.set(He(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 ${He(r)}{size:${r.pageWidthMm}mm ${r.pageHeightMm}mm;margin:0;}`).join(`
|
|
5
|
+
`)}
|
|
6
|
+
body{margin:0;background:#fff;}`}</style></head><body>`}function Ge(t){const n=H.renderPage(t,96,{},document);return n.style.page=He(t),n.outerHTML}function sn(t){return{head:Ue(t),pageChunks:t.pages.map(Ge)}}async function ba(t,n={}){const a={schemaVersion:"mach-report-batch-print",pages:t.flatMap(s=>s.pages)};if(a.pages.length===0)return;const o=Ue(a),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(o);for(let i=0;i<a.pages.length;i++)Q.assertOutputActive(n.signal),s.write(Ge(a.pages[i])),i%Ne===Ne-1&&(Q.notifyOutputProgress(n,i+1,a.pages.length),await Te());s.write("</body></html>"),s.close(),await Te(),Q.notifyOutputProgress(n,a.pages.length,a.pages.length),l=!0,r.contentWindow?.focus(),r.contentWindow?.print()}catch(s){if(n.signal?.aborted)throw s;n.onError?.(s instanceof Error?`批量打印失败: ${s.message}`:"批量打印失败")}finally{l?setTimeout(()=>r.remove(),6e4):r.remove()}}function cn(t){return`<!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]-->${t.replace(/^<!doctype html><html><head>/,"")}`}function ya(t){const{head:n,pageChunks:a}=sn(t);return{html:`${cn(n)}${a.join("")}</body></html>`,filename:"mach-report.doc"}}function un(t,n){let a=null,o=!1,r=!1,l=0;const s=new Map;let i=null;const d=new Map;let v=null,h=null,m=null,f=null,y=null;function g(k,E){return!r&&t.value===k&&l===E}function u(){if(r)return;const k=[...s.values()].reverse().find(E=>g(E.plan,E.epoch))?.format??null;k!==v&&(v=k,n.onBusy?.(k))}function c(k,E,R){const B={};return s.set(B,{plan:k,epoch:E,format:R,run:Xt("export",n.onTask)}),s.get(B).run.start(),u(),B}function w(k){s.get(k)?.run.finish(),s.delete(k),u()}function S(){for(const[k,E]of d)g(E.plan,E.epoch)||(k.close(),d.delete(k))}function I(){for(const k of s.values())k.run.finish("cancelled");i?.finish("cancelled"),l++,V(),u(),S()}const P=e.watch(t,I,{flush:"sync"});function V(){a?.remove(),a=null}function A(){I(),r=!0,l++,P(),V(),S(),s.clear(),n.onPrinting?.(!1)}function j(k,E){const R=URL.createObjectURL(k);setTimeout(()=>URL.revokeObjectURL(R),1e4);const B=document.createElement("a");B.href=R,B.download=E,B.click()}function K(k,E,R,B,L){R.update("download"),g(k,E)&&!R.controller.signal.aborted&&j(B,L)}async function W(k,E,R,B){const L=k.contentDocument;L.open(),L.write(Ue(E));for(let U=0;U<E.pages.length;U++)if(B.controller.signal.aborted||(L.write(Ge(E.pages[U])),B.update("print",U+1,E.pages.length),U%Ne===Ne-1&&await Te(),k!==a))return!1;return L.write("</body></html>"),L.close(),await Te(),!(!g(E,R)||k!==a)}async function J(){if(o)return;const k=t.value;if(r||!k||k.pages.length===0)return;const E=l;o=!0;const R=Xt("print",n.onTask);i=R,R.start(),n.onPrinting?.(!0),V(),a=document.createElement("iframe"),a.style.cssText="position:fixed;right:0;bottom:0;width:0;height:0;border:0;visibility:hidden;",document.body.appendChild(a);const B=a;try{if(!g(k,E)||R.controller.signal.aborted){V();return}if(!await W(B,k,E,R))return;B.contentWindow?.focus(),B.contentWindow?.print()}catch{R.finish("failed"),B===a&&V(),g(k,E)&&n.onError("调用打印失败,请改用导出 PDF","print")}finally{R.finish(),i===R&&(i=null),o=!1,r||n.onPrinting?.(!1)}}function Y(k,E,R){return{signal:R.controller.signal,onDiagnostic:B=>{g(k,E)&&!R.controller.signal.aborted&&n.onDiagnostic?.(B)},onProgress:(B,L)=>R.update("encode",B,L)}}function b(k,E,R){if(h?.plan===k&&h.epoch===E)return h.promise;const B=Promise.resolve().then(()=>{if(!g(k,E))throw new Error("报表已切换或卸载");return Q.waitForOutput(n.getPdfExporter()(k,L=>{g(k,E)&&n.onWarning?.(L)},R?Y(k,E,R):void 0),R?.controller.signal)}).finally(()=>{h?.promise===B&&(h=null)});return h={plan:k,epoch:E,promise:B},B}async function x(){const k=t.value;if(r||!k||k.pages.length===0)return;const E=l;if(m?.plan===k&&m.epoch===E)return m.promise;const R=c(k,E,"PDF"),B=(async()=>{try{const L=s.get(R).run,U=await b(k,E,L);if(!g(k,E))return;K(k,E,L,new Blob([U],{type:"application/pdf"}),"mach-report.pdf")}catch(L){s.get(R)?.run.finish("failed"),g(k,E)&&n.onError(L instanceof Error?`PDF 导出失败: ${L.message}`:"PDF 导出失败","pdf")}finally{w(R),m?.token===R&&(m=null)}})();return m={plan:k,epoch:E,promise:B,token:R},B}async function N(){const k=t.value;if(r||!k||k.pages.length===0)return;const E=l;if(f?.plan===k&&f.epoch===E)return f.promise;const R={...n.getXlsxOptions?.()},B=c(k,E,"Excel"),L=(async()=>{try{const{renderPlanToXlsx:U}=await import("@agile-team/mach-report/xlsx");if(!g(k,E))return;const _=s.get(B).run,{buffer:ue,warnings:se}=await Q.waitForOutput(U(k,{...R,...Y(k,E,_)}),_.controller.signal);if(!g(k,E)||(se.length>0&&n.onWarning?.(`Excel 导出有 ${se.length} 条提示:${se.slice(0,2).join(";")}`),!g(k,E)))return;K(k,E,_,new Blob([ue],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}),"mach-report.xlsx")}catch(U){s.get(B)?.run.finish("failed"),g(k,E)&&n.onError(U instanceof Error?`Excel 导出失败: ${U.message}`:"Excel 导出失败","export")}finally{w(B),f?.token===B&&(f=null)}})();return f={plan:k,epoch:E,promise:L,token:B},L}async function $(){const k=t.value;if(r||!k||k.pages.length===0)return;const E=l;if(y?.plan===k&&y.epoch===E)return y.promise;const R=c(k,E,"图片"),B=(async()=>{try{const L=s.get(R).run,{blobs:U}=await Q.waitForOutput(H.renderPlanToImages(k,{...Y(k,E,L),dpr:Math.min(2,typeof devicePixelRatio=="number"?devicePixelRatio:1)}),L.controller.signal);if(!g(k,E))return;U.forEach((_,ue)=>{K(k,E,L,_,U.length>1?`mach-report-page-${ue+1}.png`:"mach-report.png")})}catch(L){s.get(R)?.run.finish("failed"),g(k,E)&&n.onError(L instanceof Error?`图片导出失败: ${L.message}`:"图片导出失败","export")}finally{w(R),y?.token===R&&(y=null)}})();return y={plan:k,epoch:E,promise:B,token:R},B}async function T(k){const E=t.value;if(r||!E||!E.pages.length)return;const R=l,B=c(E,R,k==="word"?"Word":"HTML"),L=s.get(B).run;try{const U=[];for(const[se,Ae]of E.pages.entries()){if(!g(E,R))return;U.push(Ge(Ae)),L.update("encode",se+1,E.pages.length),se%Ne===Ne-1&&await Te()}if(!g(E,R))return;const _=Ue(E),ue=`${k==="word"?cn(_):_}${U.join("")}</body></html>`;K(E,R,L,new Blob([ue],{type:k==="word"?"application/msword;charset=utf-8":"text/html;charset=utf-8"}),k==="word"?"mach-report.doc":"mach-report.html")}catch(U){L.finish("failed"),g(E,R)&&n.onError(U instanceof Error?`导出失败: ${U.message}`:"导出失败","export")}finally{w(B)}}async function F(){await T("word")}async function z(k){const E=t.value;if(!(r||!E||E.pages.length===0)){if(k==="pdf"){await x();return}if(k==="xlsx"||k==="excel"){await N();return}if(k==="png"||k==="image"){await $();return}if(k==="word"||k==="doc"){await F();return}if(k!=="html"){n.onError(`不支持的导出格式:${k}`,"export");return}await T("html")}}function M(){const k=t.value;if(r||!k||k.pages.length===0)return;const E=l,R=window.open("","_blank");if(!R){n.onError("浏览器拦截了弹窗,请允许弹窗后重试","pdf");return}d.set(R,{plan:k,epoch:E});const B=c(k,E,"PDF");b(k,E,s.get(B).run).then(L=>{if(!g(k,E)||R.closed){d.delete(R)&&R.close();return}const U=URL.createObjectURL(new Blob([L],{type:"application/pdf"}));setTimeout(()=>URL.revokeObjectURL(U),6e4);const _=R.document;_.title="PDF 预览",_.documentElement.style.height="100%",_.body.style.cssText="margin:0;height:100%;";const ue=_.createElement("iframe");ue.title="PDF 预览",ue.style.cssText="display:block;width:100%;height:100%;border:0;",ue.src=U,_.body.replaceChildren(ue),d.delete(R)}).catch(L=>{s.get(B)?.run.finish("failed"),R.close(),d.delete(R),g(k,E)&&n.onError(L instanceof Error?`PDF 预览失败: ${L.message}`:"PDF 预览失败","pdf")}).finally(()=>w(B))}return{print:J,exportAs:z,exportImages:$,exportWord:F,openPdfWindow:M,invalidatePending:I,cancel:I,releasePrintFrame:V,dispose:A}}const dn="mrp-hit";function wa(t){t.querySelectorAll(`mark.${dn}`).forEach(a=>{const o=a.parentNode;if(o){for(;a.firstChild;)o.insertBefore(a.firstChild,a);a.remove(),o.normalize()}})}function xa(t,n){const a=n.trim();if(!a)return 0;const o=a.toLowerCase(),r=document.createTreeWalker(t,NodeFilter.SHOW_TEXT,{acceptNode(i){const d=i.parentElement;return!d||d.closest("mark")||/^(SCRIPT|STYLE)$/.test(d.tagName)?NodeFilter.FILTER_REJECT:(i.nodeValue??"").toLowerCase().includes(o)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT}}),l=[];for(let i=r.nextNode();i;i=r.nextNode())l.push(i);let s=0;for(const i of l){const d=i.nodeValue??"",v=d.toLowerCase(),h=i.parentElement;if(!h)continue;const m=document.createDocumentFragment();let f=0,y=v.indexOf(o);for(;y>=0;){y>f&&m.appendChild(document.createTextNode(d.slice(f,y)));const g=document.createElement("mark");g.className=dn,g.textContent=d.slice(y,y+a.length),m.appendChild(g),s++,f=y+a.length,y=v.indexOf(o,f)}f<d.length&&m.appendChild(document.createTextNode(d.slice(f))),h.replaceChild(m,i)}return s}const ka=new Set(["line","rect","ellipse","chart"]);function*Ea(t){for(const n of t.cells??[])for(const a of n??[])yield a?.text??"",yield*a?.children??[]}function*Ca(t){if(on.isRichText(t))for(const n of t.richParagraphs)for(const a of n.segments??[])yield(a.kind==="field"?a.field:a.text)??"";else t.lines?.length?yield*t.lines:yield t.text??""}function*Sa(t){const n=[t.values()];for(;n.length>0;){const a=n[n.length-1].next();if(a.done){n.pop();continue}const o=a.value;if(typeof o=="string"){yield o;continue}yield"",!on.isImageBackedComponent(o)&&(o.kind==="text"?n.push(Ca(o)):o.grid?n.push(Ea(o.grid)):ka.has(o.kind)||(yield o.fallbackText??""))}}function*Na(t){for(let n=0;n<t.pages.length;n++){for(const a of Sa(t.pages[n].components))yield{text:a,pageIndex:n};yield{text:"",pageIndex:n}}}function Ba(t,n){const a=t.toLowerCase();let o=0;for(let r=a.indexOf(n);r>=0;r=a.indexOf(n,r+n.length))o++;return o}function Ia(t){const{plan:n,gotoPage:a,highlight:o,clearHighlights:r}=t,l=e.ref(!1),s=e.ref(""),i=e.ref(0),d=e.ref(0),v=e.ref(!1);let h=[];const m=e.computed(()=>{if(d.value===0)return null;const P=i.value;let V=0,A=h.length-1;for(;V<A;){const K=V+A>>>1;h[K].cumulative<=P?V=K+1:A=K}const j=h[V];return j?{pageIndex:j.pageIndex,occurrence:P-(h[V-1]?.cumulative??0)}:null});let f=null,y=null,g=0;function u(){g++,f&&clearTimeout(f),y&&clearTimeout(y),f=y=null,v.value=!1}function c(P){s.value=P,i.value=0,d.value=0,h=[],v.value=!1;const V=P.trim().toLowerCase(),A=n.value;if(!V||!A)return;v.value=!0;const j=g,K=Na(A),W=[];let J=0;function Y(){if(y=null,j!==g||A!==n.value)return;const b=performance.now();let x=0;for(;x<5e3&&performance.now()-b<4;){const N=K.next();if(N.done){h=W,d.value=J,v.value=!1,h[0]&&a(h[0].pageIndex+1);return}const $=Ba(N.value.text,V);if($>0){J+=$;const T=W[W.length-1];T?.pageIndex===N.value.pageIndex?T.cumulative=J:W.push({pageIndex:N.value.pageIndex,cumulative:J})}x++}y=setTimeout(Y,0)}Y()}function w(P){if(u(),s.value=P,i.value=d.value=0,h=[],!P.trim()){c("");return}v.value=!0,f=setTimeout(()=>{f=null,c(P)},Math.max(0,e.unref(t.debounceMs)??200))}function S(P){const V=d.value;if(V===0||v.value)return;i.value=(i.value+P+V)%V;const A=m.value;A&&a(A.pageIndex+1)}function I(){u(),s.value="",i.value=d.value=0,h=[]}return e.watch(n,I,{flush:"sync"}),e.onScopeDispose(I),{visible:l,query:s,matchIndex:i,matchCount:d,activeMatch:m,searching:v,toggle:()=>{l.value=!l.value},onInput:w,onNav:S,apply:P=>{s.value.trim()&&o(P,s.value.trim())},clear:P=>{r(P)},reset:I}}function Pa(t,n){const a=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(()=>!a.value||!n.plan.value?0:Math.round(JSON.stringify(n.plan.value).length/1024)),r=e.computed(()=>!a.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:a,debugStats:r}}function $a(t,n){const{thumbsRoot:a,visible:o,renderThumbCanvas:r}=n,l=e.ref(0),s=e.ref(800),i=e.computed(()=>(t.value?.pages??[]).map(S=>Math.round(S.pageHeightMm/S.pageWidthMm*116))),d=e.computed(()=>an.createPageWindowIndex(i.value.map(S=>S+20),8)),v=e.computed(()=>d.value.window(s.value,l.value,1)),h=e.computed(()=>{if(!o.value)return[];const{start:S,end:I}=v.value;return i.value.slice(S,I+1).map((P,V)=>({index:S+V,height:P}))});let m=0,f=0,y=!1;function g(){const S=a.value;S&&(l.value=S.scrollTop,s.value=S.clientHeight||800)}function u(){y||f||(f=requestAnimationFrame(()=>{f=0,g()}))}function c(){if(h.value,m&&cancelAnimationFrame(m),m=0,y||!o.value||!t.value||!a.value)return;g();const S=h.value,I=t.value,P=a.value;let V=0;function A(){if(m=0,!(y||!o.value||t.value!==I||a.value!==P)){for(let j=0;V<S.length&&j<2;j++,V++){const K=S[V].index,W=P.querySelector(`[data-thumb="${K+1}"]`);if(!W||W.childElementCount>0)continue;const J=r(K);J&&(J.style.width="100%",J.style.height="100%",J.style.display="block",W.appendChild(J))}V<S.length&&(m=requestAnimationFrame(A))}}m=requestAnimationFrame(A)}function w(){y=!0,m&&cancelAnimationFrame(m),f&&cancelAnimationFrame(f),m=f=0}return e.onScopeDispose(w),{schedule:c,destroy:w,onScroll:u,windowRange:v,visibleThumbs:h}}function Da(){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}}}function Va(t){const n=e.ref(null),a=e.ref(null);function o(){n.value?.focus(),n.value?.select()}e.watch(t.visible,s=>{s&&e.nextTick(o)});function r(){t.close(),e.nextTick(()=>a.value?.focus())}function l(s){s.isComposing||s.keyCode===229||s.key!=="Enter"&&s.key!=="Escape"||(s.preventDefault(),s.stopPropagation(),s.key==="Escape"?r():t.navigate(s.shiftKey?-1:1))}return{input:n,toggle:a,focus:o,close:r,onKeydown:l}}function mn(){const t=e.ref(!1),n=e.ref(null),a=e.ref(null),o=e.ref(null);function r(i=!1){t.value=!1,i&&e.nextTick(()=>a.value?.focus())}function l(i){i.target instanceof Node&&!n.value?.contains(i.target)&&r()}function s(i){i.key!=="Escape"||!t.value||i.isComposing||(i.preventDefault(),i.stopPropagation(),r(!0))}return e.watch(t,i=>{i&&e.nextTick(()=>(o.value?.querySelector("input")??o.value?.querySelector("button:not(:disabled)"))?.focus())}),e.onMounted(()=>{document.addEventListener("pointerdown",l),document.addEventListener("focusin",l)}),e.onBeforeUnmount(()=>{document.removeEventListener("pointerdown",l),document.removeEventListener("focusin",l)}),{opened:t,root:n,trigger:a,panel:o,close:r,onKeydown:s}}const Ra=["disabled","aria-expanded"],Ma=["aria-label"],Ta=["aria-label","disabled","onClick"],Aa={"aria-hidden":"true"},Fa=e.defineComponent({__name:"ReportExportMenu",props:{messages:{},formats:{},busy:{type:Boolean}},emits:["export"],setup(t,{emit:n}){const a=t,o=n,{opened:r,root:l,trigger:s,panel:i,close:d,onKeydown:v}=mn(),h=e.computed(()=>[{format:"xlsx",label:a.messages.exportExcel,extension:".xlsx"},{format:"pdf",label:a.messages.exportPdf,extension:".pdf"},{format:"png",label:a.messages.exportImage,extension:".png"},{format:"word",label:a.messages.exportWord,extension:".doc"},{format:"html",label:a.messages.exportHtml,extension:".html"}].filter(g=>!a.formats||a.formats.includes(g.format)));e.watch(()=>a.busy,g=>{g&&d()});function m(g){a.busy||(o("export",g),d(!0))}function f(g){g.key!=="ArrowDown"&&g.key!=="ArrowUp"||(g.preventDefault(),r.value=!0,g.key==="ArrowUp"&&e.nextTick(()=>i.value?.querySelector("button:last-child")?.focus()))}function y(g){if(g.key==="Tab"){d();return}if(!["ArrowDown","ArrowUp","Home","End"].includes(g.key))return;g.preventDefault(),g.stopPropagation();const c=[...i.value?.querySelectorAll("button:not(:disabled)")??[]],w=c.indexOf(document.activeElement),S=g.key==="Home"?0:g.key==="End"?c.length-1:(w+(g.key==="ArrowDown"?1:-1)+c.length)%c.length;c[S]?.focus()}return(g,u)=>h.value.length?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"root",ref:l,class:"mrp-export-menu",onKeydown:u[1]||(u[1]=(...c)=>e.unref(v)&&e.unref(v)(...c))},[e.createElementVNode("button",{ref_key:"trigger",ref:s,type:"button",class:"mrp-nav mrp-export-trigger",disabled:t.busy,"aria-haspopup":"menu","aria-expanded":e.unref(r),onClick:u[0]||(u[0]=c=>r.value=!e.unref(r)),onKeydown:f},[e.createVNode(q._sfc_main,{name:"download"}),e.createTextVNode(e.toDisplayString(t.messages.exportMenu??"导出"),1),e.createVNode(q._sfc_main,{name:"chevron-down",size:12})],40,Ra),e.unref(r)?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"panel",ref:i,class:"mrp-export-panel",role:"menu","aria-label":t.messages.exportMenu??"导出",onKeydown:y},[e.createElementVNode("p",null,e.toDisplayString(t.messages.exportMenuDescription??"选择文件格式"),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,c=>(e.openBlock(),e.createElementBlock("button",{key:c.format,type:"button",role:"menuitem",tabindex:"-1","aria-label":c.label,disabled:t.busy,onClick:w=>m(c.format)},[e.createVNode(q._sfc_main,{name:"file"}),e.createElementVNode("span",null,e.toDisplayString(c.label),1),e.createElementVNode("small",Aa,e.toDisplayString(c.extension),1)],8,Ta))),128))],40,Ma)):e.createCommentVNode("",!0)],544)):e.createCommentVNode("",!0)}}),Oa=q._export_sfc(Fa,[["__scopeId","data-v-83a57a3c"]]),La=["aria-label"],za={class:"mrp-pageinfo","aria-live":"polite"},qa={class:"mrp-page-buttons"},ja=["aria-label","title","disabled"],Ha=["aria-label","title","disabled"],Ka=["aria-label","title","aria-invalid","disabled"],Wa=["aria-label","disabled"],Ua={key:1,class:"mrp-page-error",role:"alert"},Ga=e.defineComponent({__name:"ReportPagination",props:{pageCount:{},currentPage:{},messages:{},busy:{type:Boolean}},emits:["goto"],setup(t,{emit:n}){const a=t,o=n,r=e.ref(String(a.currentPage)),l=e.ref(!1),s=e.computed(()=>a.messages.pageInfo.replace("{cur}",String(a.currentPage)).replace("{total}",String(a.pageCount)));e.watch(()=>[a.currentPage,a.pageCount],()=>{r.value=String(a.currentPage),l.value=!1});function i(){if(a.busy)return;const d=r.value.trim(),v=Number(d);l.value=!/^\d+$/.test(d)||!Number.isSafeInteger(v)||v<1||v>a.pageCount,!l.value&&v!==a.currentPage&&o("goto",v)}return(d,v)=>t.pageCount>0?(e.openBlock(),e.createElementBlock("nav",{key:0,class:"mrp-pagination",role:"navigation","aria-label":t.messages.pagination??"报表分页"},[e.createElementVNode("span",za,e.toDisplayString(s.value),1),e.createElementVNode("div",qa,[e.createElementVNode("button",{class:"mrp-nav",type:"button","aria-label":t.messages.prevPage,title:t.messages.prevPage,disabled:t.busy||t.currentPage<=1,onClick:v[0]||(v[0]=h=>o("goto",t.currentPage-1))},[e.createVNode(q._sfc_main,{name:"chevron-left"})],8,ja),e.createElementVNode("button",{class:"mrp-nav",type:"button","aria-label":t.messages.nextPage,title:t.messages.nextPage,disabled:t.busy||t.currentPage>=t.pageCount,onClick:v[1]||(v[1]=h=>o("goto",t.currentPage+1))},[e.createVNode(q._sfc_main,{name:"chevron-right"})],8,Ha)]),t.pageCount>1?(e.openBlock(),e.createElementBlock("form",{key:0,class:"mrp-page-jump",onSubmit:e.withModifiers(i,["prevent"])},[e.createElementVNode("label",null,[e.createElementVNode("span",null,e.toDisplayString(t.messages.pageJump??"跳至页"),1),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":v[2]||(v[2]=h=>r.value=h),type:"text",inputmode:"numeric",autocomplete:"off","aria-label":t.messages.pageJump??"跳至页",title:t.messages.pageJumpHint??"Enter 跳转","aria-invalid":l.value,disabled:t.busy,onInput:v[3]||(v[3]=h=>l.value=!1),onKeydown:v[4]||(v[4]=e.withKeys(h=>{r.value=String(t.currentPage),l.value=!1},["esc"]))},null,40,Ka),[[e.vModelText,r.value]])]),e.createElementVNode("button",{class:"mrp-nav",type:"submit","aria-label":t.messages.pageJump??"跳至页",disabled:t.busy},[e.createVNode(q._sfc_main,{name:"arrow-right",size:14})],8,Wa)],32)):e.createCommentVNode("",!0),l.value?(e.openBlock(),e.createElementBlock("span",Ua,e.toDisplayString(t.messages.pageJumpInvalid??"请输入有效页码"),1)):e.createCommentVNode("",!0)],8,La)):e.createCommentVNode("",!0)}}),Et=q._export_sfc(Ga,[["__scopeId","data-v-0db4fbd3"]]),Ja=["aria-label"],Ya={class:"mrp-title"},Za=["aria-label"],Xa=["aria-label","aria-pressed"],Qa=["aria-pressed"],_a=["aria-pressed"],eo=["aria-label"],to=["aria-pressed"],no=["aria-pressed","onClick"],ao=["aria-label"],oo=["disabled"],ro=["disabled"],lo=["disabled"],so=["aria-label","aria-expanded"],io=["aria-label"],co=["placeholder","aria-label","value"],uo=["aria-label"],mo={key:1,class:"mrp-search-count",role:"status","aria-live":"polite"},fo=["disabled","aria-label"],po=["disabled","aria-label"],go=["aria-label"],vo={class:"mrp-search-hint",role:"status"},ho=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,default:!0},showThumbnails:{type:Boolean,default:!0},showZoom:{type:Boolean,default:!0},exportFormats:{default:void 0},showSettings:{type:Boolean},settingsOpen:{type:Boolean},busy:{type:Boolean},showPagination:{type:Boolean}},emits:["goto","zoom","export","print","pdf-window","search-input","search-nav","search-toggle","thumbs-toggle","import-excel","settings-toggle"],setup(t,{expose:n,emit:a}){const o=t,r=a,l=Va({visible:()=>o.search.visible,navigate:h=>{!o.search.searching&&o.search.matchCount>0&&r("search-nav",h)},close:()=>{o.search.visible&&r("search-toggle")}}),{input:s,toggle:i}=l;n({focusSearch:l.focus});function d(){const h=o.search.matchCount>0?o.search.matchIndex+1:0;return o.messages.matchInfo.replace("{cur}",String(h)).replace("{total}",String(o.search.matchCount))}function v(){r("search-input",""),l.focus()}return(h,m)=>(e.openBlock(),e.createElementBlock("div",{class:"mrp-toolbar",role:"toolbar","aria-label":t.messages.title},[e.createElementVNode("span",Ya,[e.createVNode(q._sfc_main,{name:"file"}),e.createTextVNode(e.toDisplayString(t.messages.title),1)]),t.showPagination?(e.openBlock(),e.createBlock(Et,{key:0,"page-count":t.pageCount,"current-page":t.currentPage,messages:t.messages,busy:t.busy,onGoto:m[0]||(m[0]=f=>r("goto",f))},null,8,["page-count","current-page","messages","busy"])):e.createCommentVNode("",!0),m[15]||(m[15]=e.createElementVNode("span",{class:"mrp-spacer"},null,-1)),t.showSearch!==!1?(e.openBlock(),e.createElementBlock("div",{key:1,class:"mrp-read-tools",role:"group","aria-label":t.messages.search??"内容搜索"},[e.createElementVNode("button",{ref_key:"searchToggleRef",ref:i,class:e.normalizeClass(["mrp-nav mrp-search-toggle mrp-icon-button",{"mrp-active":t.search.visible}]),type:"button",title:"Ctrl+F","aria-label":t.messages.search??t.messages.searchPlaceholder,"aria-pressed":t.search.visible,onClick:m[1]||(m[1]=f=>r("search-toggle"))},[e.createVNode(q._sfc_main,{name:"search"})],10,Xa),t.showThumbnails!==!1?(e.openBlock(),e.createElementBlock("button",{key:0,class:e.normalizeClass(["mrp-nav",{"mrp-active":t.thumbsVisible}]),type:"button","aria-pressed":t.thumbsVisible,onClick:m[2]||(m[2]=f=>r("thumbs-toggle"))},[e.createVNode(q._sfc_main,{name:"grid"}),e.createTextVNode(e.toDisplayString(t.messages.thumbnails),1)],10,Qa)):e.createCommentVNode("",!0)],8,Za)):t.showThumbnails!==!1?(e.openBlock(),e.createElementBlock("button",{key:2,class:e.normalizeClass(["mrp-nav",{"mrp-active":t.thumbsVisible}]),type:"button","aria-pressed":t.thumbsVisible,onClick:m[3]||(m[3]=f=>r("thumbs-toggle"))},[e.createVNode(q._sfc_main,{name:"grid"}),e.createTextVNode(e.toDisplayString(t.messages.thumbnails),1)],10,_a)):e.createCommentVNode("",!0),e.renderSlot(h.$slots,"navigation",{},void 0,!0),t.showZoom!==!1?(e.openBlock(),e.createElementBlock("div",{key:3,class:"mrp-zoom-tools",role:"group","aria-label":t.messages.zoom??"缩放工具"},[e.createElementVNode("button",{class:e.normalizeClass(["mrp-nav",{"mrp-active":t.zoomMode==="fit"}]),"aria-pressed":t.zoomMode==="fit",type:"button",onClick:m[4]||(m[4]=f=>r("zoom","fit"))},[e.createVNode(q._sfc_main,{name:"fit"}),e.createTextVNode(e.toDisplayString(t.messages.fitWidth),1)],10,to),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList([100,150],f=>e.createElementVNode("button",{key:f,class:e.normalizeClass(["mrp-nav",{"mrp-active":t.zoomMode==="raw"&&Math.round(t.zoom*100)===f}]),"aria-pressed":t.zoomMode==="raw"&&Math.round(t.zoom*100)===f,type:"button",onClick:y=>r("zoom",f)},e.toDisplayString(f)+"%",11,no)),64))],8,eo)):e.createCommentVNode("",!0),t.showImport||t.showExport||t.showPrint||t.showPdfWindow?(e.openBlock(),e.createElementBlock("div",{key:4,class:"mrp-output-tools",role:"group","aria-label":t.messages.settingsExport??"导出与打印"},[t.showImport?(e.openBlock(),e.createElementBlock("button",{key:0,class:"mrp-nav mrp-import-excel",type:"button",disabled:t.busy,onClick:m[5]||(m[5]=f=>r("import-excel"))},[e.createVNode(q._sfc_main,{name:"upload"}),e.createTextVNode(e.toDisplayString(t.messages.importExcel??"导入 Excel 模板"),1)],8,oo)):e.createCommentVNode("",!0),t.showExport?(e.openBlock(),e.createBlock(Oa,{key:1,messages:t.messages,formats:t.exportFormats,busy:t.busy,onExport:m[6]||(m[6]=f=>r("export",f))},null,8,["messages","formats","busy"])):e.createCommentVNode("",!0),t.showPrint?(e.openBlock(),e.createElementBlock("button",{key:2,class:"mrp-nav",type:"button",disabled:t.busy,onClick:m[7]||(m[7]=f=>r("print"))},[e.createVNode(q._sfc_main,{name:"print"}),e.createTextVNode(e.toDisplayString(t.messages.print),1)],8,ro)):e.createCommentVNode("",!0),t.showPdfWindow?(e.openBlock(),e.createElementBlock("button",{key:3,class:"mrp-nav",type:"button",disabled:t.busy,onClick:m[8]||(m[8]=f=>r("pdf-window"))},[e.createVNode(q._sfc_main,{name:"external"}),e.createTextVNode(e.toDisplayString(t.messages.pdfWindow),1)],8,lo)):e.createCommentVNode("",!0)],8,ao)):e.createCommentVNode("",!0),t.showSettings?(e.openBlock(),e.createElementBlock("button",{key:5,class:e.normalizeClass(["mrp-nav mrp-settings-toggle",{"mrp-active":t.settingsOpen}]),type:"button","aria-label":t.messages.settings??"设置","aria-haspopup":"dialog","aria-expanded":!!t.settingsOpen,onClick:m[9]||(m[9]=f=>r("settings-toggle"))},[e.createVNode(q._sfc_main,{name:"settings"}),e.createTextVNode(e.toDisplayString(t.messages.settings??"设置"),1)],10,so)):e.createCommentVNode("",!0),t.showSearch!==!1&&t.search.visible?(e.openBlock(),e.createElementBlock("div",{key:6,class:"mrp-search-panel",role:"search","aria-label":t.messages.search??"内容搜索"},[e.createElementVNode("div",{class:e.normalizeClass(["mrp-search",{"mrp-search-no-results":t.search.query&&!t.search.searching&&!t.search.matchCount}])},[e.createVNode(q._sfc_main,{name:"search"}),e.createElementVNode("input",{ref_key:"searchInputRef",ref:s,class:"mrp-search-input",type:"text",autocomplete:"off",spellcheck:"false",placeholder:t.messages.searchPlaceholder,"aria-label":t.messages.search??t.messages.searchPlaceholder,value:t.search.query,onInput:m[10]||(m[10]=f=>r("search-input",f.target.value)),onKeydown:m[11]||(m[11]=(...f)=>e.unref(l).onKeydown&&e.unref(l).onKeydown(...f))},null,40,co),t.search.query?(e.openBlock(),e.createElementBlock("button",{key:0,class:"mrp-nav mrp-search-clear mrp-icon-button",type:"button","aria-label":t.messages.clearSearch??"清除搜索",onClick:v},[e.createVNode(q._sfc_main,{name:"close",size:13})],8,uo)):e.createCommentVNode("",!0),t.search.query?(e.openBlock(),e.createElementBlock("span",mo,e.toDisplayString(t.search.searching?t.messages.searching??"搜索中…":d()),1)):e.createCommentVNode("",!0),e.createElementVNode("button",{class:"mrp-nav mrp-icon-button",type:"button",disabled:t.search.matchCount===0||t.search.searching,"aria-label":t.messages.prevSearchMatch??"上一个匹配",onClick:m[12]||(m[12]=f=>r("search-nav",-1))},[e.createVNode(q._sfc_main,{name:"chevron-up",size:14})],8,fo),e.createElementVNode("button",{class:"mrp-nav mrp-icon-button",type:"button",disabled:t.search.matchCount===0||t.search.searching,"aria-label":t.messages.nextSearchMatch??"下一个匹配",onClick:m[13]||(m[13]=f=>r("search-nav",1))},[e.createVNode(q._sfc_main,{name:"chevron-down",size:14})],8,po),e.createElementVNode("button",{class:"mrp-nav mrp-search-close mrp-icon-button",type:"button","aria-label":t.messages.closeSearch??"关闭搜索",onClick:m[14]||(m[14]=(...f)=>e.unref(l).close&&e.unref(l).close(...f))},[e.createVNode(q._sfc_main,{name:"close",size:14})],8,go)],2),e.createElementVNode("span",vo,e.toDisplayString(t.search.query&&!t.search.searching&&!t.search.matchCount?t.messages.searchNoMatches??"没有匹配内容":t.messages.searchHint??"Enter 下一个 · Shift+Enter 上一个"),1)],8,io)):e.createCommentVNode("",!0)],8,Ja))}}),fn=q._export_sfc(ho,[["__scopeId","data-v-5f4b04d8"]]),bo=["aria-label","aria-busy"],yo={class:"mrp-calculation-heading"},wo={class:"mrp-calculation-controls"},xo=["aria-label","value","disabled"],ko=["value"],Eo={class:"mrp-calculation-precision"},Co=["aria-label","value","disabled"],So={key:0,class:"mrp-calculation-expression"},No=["aria-label","value","disabled"],Bo={class:"mrp-calculation-actions"},Io={key:1,class:"mrp-calculation-diagnostic",role:"alert"},Po={key:2,class:"mrp-calculation-result",role:"status","aria-live":"polite"},$o={key:0},Do={key:3,class:"mrp-calculation-empty"},Vo={class:"mrp-calculation-local"},Ro=e.defineComponent({__name:"ReportCalculationPanel",props:{state:{},messages:{}},setup(t){const n=t,a=`mrp-calculation-expression-hint-${e.getCurrentInstance()?.uid??0}`,o=e.computed(()=>[["sum",n.messages.calculationSum],["average",n.messages.calculationAverage],["min",n.messages.calculationMin],["max",n.messages.calculationMax],["count",n.messages.calculationCount],["median",n.messages.calculationMedian],["expression",n.messages.calculationCustom]]),r=e.computed(()=>{const l=n.state.error.value;if(!l)return"";const s=n.messages;return{selection:s.calculationErrorSelection,limit:s.calculationErrorLimit,expression:s.calculationErrorExpression,division:s.calculationErrorDivision,overflow:s.calculationErrorOverflow,precision:s.calculationErrorPrecision}[l]});return(l,s)=>(e.openBlock(),e.createElementBlock("section",{class:"mrp-calculation","aria-label":t.messages.calculationTitle,"aria-busy":t.state.busy.value},[e.createElementVNode("header",yo,[s[5]||(s[5]=e.createElementVNode("span",{class:"mrp-calculation-symbol","aria-hidden":"true"},"∑",-1)),e.createElementVNode("div",null,[e.createElementVNode("strong",null,e.toDisplayString(t.messages.calculationTitle),1),e.createElementVNode("p",null,e.toDisplayString(t.messages.calculationHint),1)])]),e.createElementVNode("div",wo,[e.createElementVNode("label",null,[e.createElementVNode("span",null,e.toDisplayString(t.messages.calculationFormula),1),e.createElementVNode("select",{"aria-label":t.messages.calculationFormula,value:t.state.operation.value,onChange:s[0]||(s[0]=i=>t.state.setOperation(i.target.value)),disabled:t.state.busy.value},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,([i,d])=>(e.openBlock(),e.createElementBlock("option",{key:i,value:i},e.toDisplayString(d),9,ko))),128))],40,xo)]),e.createElementVNode("label",Eo,[e.createElementVNode("span",null,e.toDisplayString(t.messages.calculationPrecision),1),e.createElementVNode("input",{"aria-label":t.messages.calculationPrecision,value:t.state.precision.value,onChange:s[1]||(s[1]=i=>t.state.setPrecision(Number(i.target.value))),type:"number",min:"0",max:"12",step:"1",disabled:t.state.busy.value},null,40,Co)])]),t.state.operation.value==="expression"?(e.openBlock(),e.createElementBlock("label",So,[e.createElementVNode("span",null,e.toDisplayString(t.messages.calculationExpression),1),e.createElementVNode("input",{"aria-label":t.messages.calculationExpression,"aria-describedby":a,value:t.state.expression.value,onInput:s[2]||(s[2]=i=>t.state.setExpression(i.target.value)),type:"text",maxlength:"256",spellcheck:"false",disabled:t.state.busy.value,placeholder:"SUM / COUNT"},null,40,No),e.createElementVNode("small",{id:a},e.toDisplayString(t.messages.calculationExpressionHint),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",Bo,[t.state.busy.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",onClick:s[3]||(s[3]=i=>t.state.cancel())},e.toDisplayString(t.messages.calculationCancel),1)):(e.openBlock(),e.createElementBlock("button",{key:1,class:"mrp-calculation-run",type:"button",onClick:s[4]||(s[4]=i=>t.state.run())},e.toDisplayString(t.messages.calculationRun),1))]),r.value?(e.openBlock(),e.createElementBlock("p",Io,e.toDisplayString(r.value),1)):t.state.result.value?(e.openBlock(),e.createElementBlock("div",Po,[e.createElementVNode("span",null,e.toDisplayString(t.messages.calculationResult),1),e.createElementVNode("output",null,e.toDisplayString(t.state.result.value.formatted),1),e.createElementVNode("small",null,[e.createElementVNode("span",null,e.toDisplayString(t.messages.calculationIncluded)+" "+e.toDisplayString(t.state.result.value.numericCells),1),e.createElementVNode("span",null,e.toDisplayString(t.messages.calculationExcluded)+" "+e.toDisplayString(t.state.result.value.excludedCells),1)]),t.state.result.value.numericCells===0?(e.openBlock(),e.createElementBlock("p",$o,e.toDisplayString(t.messages.calculationEmpty),1)):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("p",Do,e.toDisplayString(t.messages.calculationNoSelection),1)),e.createElementVNode("p",Vo,e.toDisplayString(t.messages.calculationLocal),1)],8,bo))}}),Mo=q._export_sfc(Ro,[["__scopeId","data-v-ee359251"]]);function To(t){const n=e.ref("sum"),a=e.ref("SUM / COUNT"),o=e.ref(2),r=e.ref(!1),l=e.shallowRef(null),s=e.ref(null);let i=null,d=0;function v(){d++,i?.abort(),i=null,r.value=!1}function h(){v(),l.value=null,s.value=null}async function m(){if(h(),!t.enabled())return;const u=t.plan.value,c=t.selection.value;if(!u||!c){s.value="selection";return}const w=++d,S=new AbortController;i=S,r.value=!0;try{const I=await H.calculateReportSelection(u,c,{operation:n.value,expression:a.value,precision:o.value,signal:S.signal});w===d&&t.plan.value===u&&t.selection.value===c&&t.enabled()&&(l.value=I)}catch(I){w===d&&!S.signal.aborted&&(s.value=I instanceof H.ReportCalculationError?I.code:"expression")}finally{w===d&&(r.value=!1,i=null)}}e.watch([t.plan,t.selection,()=>t.enabled(),n,a,o],h,{flush:"sync"}),e.onScopeDispose(h);function f(u){n.value=u}function y(u){a.value=u}function g(u){o.value=u}return{operation:n,expression:a,precision:o,busy:r,result:l,error:s,run:m,cancel:v,clear:h,setOperation:f,setExpression:y,setPrecision:g}}const Ao=["aria-label"],Fo={class:"mrp-settings-header"},Oo=["aria-label"],Lo=["aria-label"],zo=["id","aria-selected","aria-controls","tabindex","onClick","onKeydown"],qo={class:"mrp-settings-content"},jo=["id","aria-labelledby","hidden"],Ho={key:0},Ko={class:"mrp-settings-option"},Wo=["checked","disabled"],Uo={class:"mrp-settings-option"},Go=["value","disabled"],Jo=["id","aria-labelledby","hidden"],Yo={key:0},Zo=["checked","disabled","onChange"],Xo={key:0,class:"mrp-settings-note"},Qo={key:1,class:"mrp-settings-note"},_o=["id","aria-labelledby","hidden"],er={class:"mrp-settings-intro"},tr={class:"mrp-settings-option mrp-settings-feature"},nr=["id"],ar=["aria-label","aria-describedby","checked","disabled"],or=["disabled"],rr=e.defineComponent({__name:"ReportSettings",props:{available:{},enabled:{},messages:{},persistedEditing:{type:Boolean},busy:{type:Boolean},interaction:{},section:{}},emits:["change","reset","close","interaction","section"],setup(t,{emit:n}){const a=t,o=n,r=e.ref(null),l=e.computed(()=>a.section??"general"),s="mrp-settings-"+e.getCurrentInstance()?.uid,i=e.computed(()=>[{key:"general",label:a.messages.settingsGeneral??"常规"},{key:"tools",label:a.messages.settingsTools??"工具"},{key:"advanced",label:a.messages.settingsAdvanced??"高级"}]);function d(u,c){const S={ArrowRight:(c+1)%3,ArrowLeft:(c+2)%3,Home:0,End:2}[u.key];S!==void 0&&(u.preventDefault(),o("section",i.value[S].key),r.value?.querySelector("#"+s+"-tab-"+i.value[S].key)?.focus())}const v=e.ref(null);let h=null;const m=e.computed(()=>[{label:a.messages.settingsDisplay,tools:[["search",a.messages.search],["thumbnails",a.messages.thumbnails],["zoom",a.messages.zoom]]},{label:a.messages.settingsExport,tools:[["html",a.messages.exportHtml],["pdf",a.messages.exportPdf],["xlsx",a.messages.exportExcel],["png",a.messages.exportImage],["word",a.messages.exportWord],["print",a.messages.print],["pdfWindow",a.messages.pdfWindow]]},{label:a.messages.settingsData,tools:[["editing",a.messages.editCell],["import",a.messages.importExcel]]}].map(u=>({...u,tools:u.tools.map(([c,w])=>({key:c,label:w}))})));function f(u,c){const w=u.target,S=w.checked;w.checked=a.enabled[c],o("change",c,S)}function y(u){return!r.value||u.defaultPrevented?!1:u.target instanceof Node&&r.value.contains(u.target)?!0:u.target instanceof Element&&u.target.closest('[role="dialog"],dialog[open]')?!1:!Array.from(document.querySelectorAll('[aria-modal="true"],dialog[open]')).some(c=>c!==r.value&&!r.value.contains(c))}function g(u){if(!y(u))return;if(u.key==="Escape"){u.preventDefault(),u.stopPropagation(),o("close");return}if(u.key!=="Tab")return;const c=Array.from(r.value?.querySelectorAll("a[href],button:not(:disabled),input:not(:disabled),textarea:not(:disabled),select:not(:disabled),[tabindex='0']")??[]).filter(P=>!P.closest("[hidden]")&&P.tabIndex!==-1),w=c?.[0],S=c?.[c.length-1];(!r.value?.contains(document.activeElement)||u.shiftKey&&document.activeElement===w||!u.shiftKey&&document.activeElement===S)&&(u.preventDefault(),u.stopPropagation(),(u.shiftKey?S:w)?.focus())}return e.onMounted(()=>{const u=r.value?.closest(".mach-report-preview")?.querySelector(".mrp-settings-toggle"),c=document.activeElement;h=c instanceof HTMLElement&&c!==document.body&&!r.value?.contains(c)?c:u??null,v.value?.focus(),document.addEventListener("keydown",g)}),e.onUnmounted(()=>{document.removeEventListener("keydown",g),h?.isConnected&&h.focus()}),(u,c)=>(e.openBlock(),e.createElementBlock("div",{class:"mrp-settings-backdrop",onClick:c[5]||(c[5]=e.withModifiers(w=>u.$emit("close"),["self"]))},[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",Fo,[e.createElementVNode("div",null,[c[6]||(c[6]=e.createElementVNode("span",{class:"mrp-settings-eyebrow"},"MACH REPORT",-1)),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:v,class:"mrp-settings-close",type:"button","aria-label":t.messages.settingsClose,onClick:c[0]||(c[0]=w=>u.$emit("close"))},[...c[7]||(c[7]=[e.createElementVNode("svg",{width:"16",height:"16",viewBox:"0 0 20 20",fill:"none","aria-hidden":"true"},[e.createElementVNode("path",{d:"m5 5 10 10M15 5 5 15",stroke:"currentColor","stroke-width":"1.6","stroke-linecap":"round"})],-1)])],8,Oo)]),e.createElementVNode("div",{class:"mrp-settings-tabs",role:"tablist","aria-label":t.messages.settings},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,(w,S)=>(e.openBlock(),e.createElementBlock("button",{id:s+"-tab-"+w.key,key:w.key,type:"button",role:"tab","aria-selected":l.value===w.key,"aria-controls":s+"-panel-"+w.key,tabindex:l.value===w.key?0:-1,onClick:I=>u.$emit("section",w.key),onKeydown:I=>d(I,S)},e.toDisplayString(w.label),41,zo))),128))],8,Lo),e.createElementVNode("div",qo,[e.createElementVNode("section",{id:s+"-panel-general",role:"tabpanel","aria-labelledby":s+"-tab-general",hidden:l.value!=="general"},[e.renderSlot(u.$slots,"default",{},void 0,!0),t.interaction?(e.openBlock(),e.createElementBlock("fieldset",Ho,[e.createElementVNode("legend",null,e.toDisplayString(t.messages.settingsPanes),1),e.createElementVNode("label",Ko,[e.createElementVNode("span",null,e.toDisplayString(t.messages.freezeHeaders),1),e.createElementVNode("input",{type:"checkbox",checked:t.interaction.freezeHeaders,disabled:t.busy,onChange:c[1]||(c[1]=w=>u.$emit("interaction",{freezeHeaders:w.target.checked}))},null,40,Wo)]),e.createElementVNode("label",Uo,[e.createElementVNode("span",null,e.toDisplayString(t.messages.frozenColumns),1),e.createElementVNode("input",{class:"mrp-frozen-count",type:"number",min:"0",max:"20",value:t.interaction.frozenColumns??0,disabled:t.busy,onChange:c[2]||(c[2]=w=>u.$emit("interaction",{frozenColumns:Math.max(0,Math.min(20,Number(w.target.value)||0))}))},null,40,Go)])])):e.createCommentVNode("",!0)],8,jo),e.createElementVNode("section",{id:s+"-panel-tools",role:"tabpanel","aria-labelledby":s+"-tab-tools",hidden:l.value!=="tools"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.value,w=>(e.openBlock(),e.createElementBlock("fieldset",{key:w.label},[e.createElementVNode("legend",null,e.toDisplayString(w.label),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(w.tools,S=>(e.openBlock(),e.createElementBlock("label",{key:S.key,class:e.normalizeClass(["mrp-settings-option",{"mrp-settings-unavailable":!t.available[S.key]}])},[e.createElementVNode("span",null,[e.createTextVNode(e.toDisplayString(S.label),1),t.available[S.key]?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("small",Yo,e.toDisplayString(t.messages.settingsUnavailable),1))]),e.createElementVNode("input",{type:"checkbox",checked:t.enabled[S.key],disabled:t.busy||!t.available[S.key],onChange:I=>f(I,S.key)},null,40,Zo)],2))),128))]))),128)),t.available.editing?(e.openBlock(),e.createElementBlock("p",Xo,e.toDisplayString(t.persistedEditing?t.messages.editingSaved:t.messages.editingLocal),1)):e.createCommentVNode("",!0),t.available.import?(e.openBlock(),e.createElementBlock("p",Qo,e.toDisplayString(t.messages.importLocal),1)):e.createCommentVNode("",!0)],8,Jo),e.createElementVNode("section",{id:s+"-panel-advanced",role:"tabpanel","aria-labelledby":s+"-tab-advanced",hidden:l.value!=="advanced"},[e.createElementVNode("p",er,e.toDisplayString(t.messages.settingsAdvancedDescription),1),e.createElementVNode("label",tr,[e.createElementVNode("span",null,[e.createTextVNode(e.toDisplayString(t.messages.settingsCalculations),1),e.createElementVNode("small",{id:s+"-calculation-description"},e.toDisplayString(t.messages.settingsCalculationsDescription),9,nr)]),e.createElementVNode("input",{type:"checkbox","aria-label":t.messages.settingsCalculations,"aria-describedby":s+"-calculation-description",checked:t.interaction?.calculations===!0,disabled:t.busy,onChange:c[3]||(c[3]=w=>u.$emit("interaction",{calculations:w.target.checked}))},null,40,ar)]),t.interaction?.calculations?e.renderSlot(u.$slots,"advanced",{},void 0,!0,0):e.createCommentVNode("",!0)],8,_o)]),e.createElementVNode("footer",null,[e.createElementVNode("button",{type:"button",disabled:t.busy,onClick:c[4]||(c[4]=w=>u.$emit("reset"))},e.toDisplayString(t.messages.settingsReset),9,or),e.createElementVNode("span",null,e.toDisplayString(t.messages.settingsLocal),1)])],8,Ao)]))}}),lr=q._export_sfc(rr,[["__scopeId","data-v-36723612"]]),sr={class:"mrp-empty",role:"status"},ir={key:0},cr=e.defineComponent({__name:"ReportEmpty",props:{title:{},description:{}},setup(t){return(n,a)=>(e.openBlock(),e.createElementBlock("div",sr,[a[0]||(a[0]=e.createStaticVNode('<svg class="mrp-empty-art" viewBox="0 0 160 112" fill="none" aria-hidden="true" data-v-3e16b87e><ellipse cx="80" cy="100" rx="54" ry="7" fill="currentColor" opacity=".05" data-v-3e16b87e></ellipse><rect x="34" y="15" width="92" height="78" rx="9" fill="currentColor" opacity=".10" data-v-3e16b87e></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-3e16b87e></rect><path d="M55 27H105M55 42H105M55 57H85M55 72H76M71 27V72M89 27V57" stroke="currentColor" stroke-opacity=".4" stroke-width="1.5" stroke-linecap="round" data-v-3e16b87e></path><circle cx="112" cy="76" r="16" fill="var(--mrp-toolbar-bg, #fff)" stroke="currentColor" stroke-opacity=".35" stroke-width="2" data-v-3e16b87e></circle><path d="M124 88L137 101M106 76H118" stroke="currentColor" stroke-opacity=".45" stroke-width="3" stroke-linecap="round" data-v-3e16b87e></path><circle cx="27" cy="38" r="3" fill="currentColor" opacity=".12" data-v-3e16b87e></circle><circle cx="132" cy="24" r="2" fill="currentColor" opacity=".2" data-v-3e16b87e></circle></svg>',1)),e.createElementVNode("strong",null,e.toDisplayString(t.title),1),t.description?(e.openBlock(),e.createElementBlock("p",ir,e.toDisplayString(t.description),1)):e.createCommentVNode("",!0)]))}}),Qt=q._export_sfc(cr,[["__scopeId","data-v-3e16b87e"]]),ur=["aria-label"],dr=e.defineComponent({__name:"ReportDiscardDialog",props:{messages:{}},emits:["answer"],setup(t,{emit:n}){const a=n,o=e.ref(null),r=e.ref(null);let l=null;function s(i){i.key==="Escape"&&(i.preventDefault(),a("answer",!1)),i.key==="Tab"&&(i.preventDefault(),document.activeElement===o.value?r.value?.focus():o.value?.focus())}return e.onMounted(()=>{l=document.activeElement instanceof HTMLElement?document.activeElement:null,o.value?.focus()}),e.onUnmounted(()=>{l?.isConnected&&l.focus()}),(i,d)=>(e.openBlock(),e.createElementBlock("div",{class:"mrp-discard-backdrop",onKeydown:s,onClick:d[2]||(d[2]=e.withModifiers(v=>a("answer",!1),["self"]))},[e.createElementVNode("section",{class:"mrp-discard-dialog",role:"alertdialog","aria-modal":"true","aria-label":t.messages.discardTitle},[e.createElementVNode("strong",null,e.toDisplayString(t.messages.discardTitle),1),e.createElementVNode("p",null,e.toDisplayString(t.messages.discardDescription),1),e.createElementVNode("footer",null,[e.createElementVNode("button",{ref_key:"keep",ref:o,type:"button",onClick:d[0]||(d[0]=v=>a("answer",!1))},e.toDisplayString(t.messages.discardKeep),513),e.createElementVNode("button",{ref_key:"discard",ref:r,type:"button",onClick:d[1]||(d[1]=v=>a("answer",!0))},e.toDisplayString(t.messages.discardProceed),513)])],8,ur)],32))}}),mr=q._export_sfc(dr,[["__scopeId","data-v-f7590294"]]),fr={key:0,class:"mrp-task-status",role:"status","aria-live":"polite"},pr={key:0},gr=["value","max","aria-label"],vr=e.defineComponent({__name:"ReportTaskStatus",props:{task:{},messages:{}},emits:["cancel"],setup(t){const n=t,a=e.computed(()=>({query:n.messages.taskQuery,validate:n.messages.taskValidate,layout:n.messages.taskLayout,assets:n.messages.taskAssets,import:n.messages.importing,encode:n.messages.taskEncode,download:n.messages.taskDownload,print:n.messages.taskPrint})),o=e.computed(()=>n.task?.total===void 0?"":`${n.task.completed??0} / ${n.task.total}`);return(r,l)=>t.task&&(t.task.status==="running"||t.task.status==="cancelled")?(e.openBlock(),e.createElementBlock("div",fr,[e.createElementVNode("span",null,[e.createTextVNode(e.toDisplayString(t.task.status==="cancelled"?t.messages.taskCancelled:a.value[t.task.stage])+" ",1),t.task.status==="running"?(e.openBlock(),e.createElementBlock("small",pr,e.toDisplayString(o.value),1)):e.createCommentVNode("",!0)]),t.task.status==="running"&&t.task.total!==void 0?(e.openBlock(),e.createElementBlock("progress",{key:0,value:t.task.completed??0,max:t.task.total,"aria-label":a.value[t.task.stage]},null,8,gr)):e.createCommentVNode("",!0),t.task.status==="running"&&t.task.cancellable?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",onClick:l[0]||(l[0]=s=>r.$emit("cancel"))},e.toDisplayString(t.messages.taskCancel),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)}}),hr=q._export_sfc(vr,[["__scopeId","data-v-657ac599"]]),br={key:0,class:"mrp-diagnostics"},yr=["aria-label","placeholder"],wr={key:0},xr=["onClick"],kr={key:0},Er=e.defineComponent({__name:"ReportDiagnostics",props:{entries:{},messages:{}},emits:["locate"],setup(t){const n=t,a=e.ref(""),o=e.computed(()=>({"unsupported-style":n.messages.diagnosticUnsupportedStyle,"missing-image":n.messages.diagnosticMissingImage,"unsupported-component":n.messages.diagnosticUnsupported,"unsupported-image-format":n.messages.diagnosticImageFormat,"rich-text-flattened":n.messages.diagnosticRichText,"nested-components-omitted":n.messages.diagnosticNested,"async-image-required":n.messages.diagnosticImageAsync,"image-decode-failed":n.messages.diagnosticImageDecode,"asset-render-failed":n.messages.diagnosticAssetFailed,"asset-budget-exceeded":n.messages.diagnosticAssetBudget})),r=e.computed(()=>{const i=a.value.trim().toLocaleLowerCase();return i?n.entries.filter(d=>`${d.code} ${d.message} ${o.value[d.code]??""} ${d.path??""} ${s(d)} ${d.format??""}`.toLocaleLowerCase().includes(i)):n.entries}),l=e.computed(()=>r.value.slice(0,100));function s(i){return i.pageIndex===void 0?i.path??"":(n.messages.diagnosticsLocation??"").replace("{page}",String(i.pageIndex+1)).replace("{component}",String((i.componentIndex??0)+1))}return(i,d)=>t.entries.length?(e.openBlock(),e.createElementBlock("details",br,[e.createElementVNode("summary",null,[e.createTextVNode(e.toDisplayString(t.messages.diagnosticsTitle)+" ",1),e.createElementVNode("span",null,e.toDisplayString(t.entries.length),1)]),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":d[0]||(d[0]=v=>a.value=v),type:"search","aria-label":t.messages.diagnosticsSearch,placeholder:t.messages.diagnosticsSearch},null,8,yr),[[e.vModelText,a.value]]),e.createElementVNode("ol",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(v,h)=>(e.openBlock(),e.createElementBlock("li",{key:h},[e.createElementVNode("div",null,[e.createElementVNode("b",null,e.toDisplayString(v.format?.toUpperCase()??v.severity)+" · "+e.toDisplayString(v.code),1),e.createElementVNode("p",null,e.toDisplayString(o.value[v.code]??v.message),1),o.value[v.code]?(e.openBlock(),e.createElementBlock("details",wr,[e.createElementVNode("summary",null,e.toDisplayString(t.messages.diagnosticsDetails),1),e.createTextVNode(e.toDisplayString(v.message),1)])):e.createCommentVNode("",!0),e.createElementVNode("small",null,e.toDisplayString(s(v)),1)]),v.pageIndex!==void 0?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",onClick:m=>i.$emit("locate",v)},e.toDisplayString(t.messages.diagnosticsLocate),9,xr)):e.createCommentVNode("",!0)]))),128))]),r.value.length>l.value.length?(e.openBlock(),e.createElementBlock("small",kr,e.toDisplayString((t.messages.diagnosticsMore??"").replace("{count}",String(r.value.length))),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)}}),Cr=q._export_sfc(Er,[["__scopeId","data-v-3b7804ce"]]);class le extends Error{constructor(n,a,o){super(a),this.name="MachReportError",this.code=n,this.cause=o}}function pn(t){return t instanceof le?{code:t.code,cause:t.cause}:{code:"render",cause:t}}function gn(t){if(t instanceof le)return t;if(t instanceof H.ReportParamValidationError)return new le("param",t.message,t);if(t instanceof H.ReportSourceError)return new le(t.code,t.message,t.cause);if(t instanceof Error){const n={params:"param",config:"config",validate:"validate",fetch:"fetch"},a=t.code;if(typeof a=="string"&&Object.prototype.hasOwnProperty.call(n,a))return new le(n[a],t.message,t)}return new le("fetch",t instanceof Error?t.message:"预览加载失败",t)}const _t=new Map,Se=new Map,Sr=15e3;function bt(t,n){return Object.assign(new Error(t),{cause:n})}function Me(t,n){return`PDF 字体 ${JSON.stringify(t)}:${n}。请部署支持报表文字的字体文件,并将 pdfFontUrl 配置为可访问的字体 URL;西文报表可设为空串`}function Je(t){if(t?.reason instanceof Error&&t.reason.name==="AbortError")return t.reason;const n=bt("PDF 字体检查已取消",t?.reason);return n.name="AbortError",n}async function Nr(t,n){let a=!1;const o=setTimeout(()=>{a=!0,n.abort()},Sr);try{const r=await fetch(t,{method:"HEAD",signal:n.signal});if(n.signal.aborted)throw Je(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:Me(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:Me(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:Me(t,s.message),cause:s}}return{status:"available",fontUrl:t,message:"PDF 字体资源可达;文字覆盖范围将在实际导出时校验"}}catch(r){if(n.signal.aborted&&!a)throw Je(n.signal);return{status:"error",fontUrl:t,message:Me(t,a?"字体检查超时,请检查网络或字体服务":"字体检查失败,请检查网络、字体服务或跨域访问配置"),cause:r}}finally{clearTimeout(o)}}function Br(t,n){if(n?.aborted)return Promise.reject(Je(n));if(!t)return Promise.resolve({status:"disabled",fontUrl:t,message:"已停用自定义 PDF 字体;内置字体用于西文,其他文字会在导出时校验"});const a=_t.get(t);if(a)return Promise.resolve(a);let o=Se.get(t);if(!o){const l=new AbortController;o={controller:l,promise:Nr(t,l),subscribers:0};const s=o;Se.set(t,s),s.promise=s.promise.then(i=>(!l.signal.aborted&&i.status==="available"&&_t.set(t,i),i)).finally(()=>{Se.get(t)===s&&Se.delete(t)})}const r=o;return r.subscribers++,new Promise((l,s)=>{let i=!1;const d=()=>i?!1:(i=!0,r.subscribers--,n?.removeEventListener("abort",v),!0),v=()=>{d()&&(r.subscribers===0&&(Se.get(t)===r&&Se.delete(t),r.controller.abort()),s(Je(n)))};n?.addEventListener("abort",v,{once:!0}),r.promise.then(h=>{d()&&l(h)},h=>{d()&&s(h)}),n?.aborted&&v()})}function vn(t={fontUrl:"/simhei.ttf"}){let n=null;const a=async(o,r,l={})=>{Q.assertOutputActive(l.signal),n||(n=await import("@agile-team/mach-report/pdf")),Q.assertOutputActive(l.signal);let s=null;if(t.fontUrl)try{if(s=await Q.waitForOutput(n.loadFontWithCache(t.fontUrl,{strict:!0}),l.signal),!s?.byteLength)throw new Error("字体文件为空或加载失败")}catch(f){const y=f instanceof Error?f.message:String(f);throw bt(Me(t.fontUrl,y),f)}let i;try{Q.assertOutputActive(l.signal),i=await n.renderPlanToPdf(o,{...l,...s?{customFontBytes:s}:{}})}catch(f){if(!s)throw f;const y=f instanceof Error?f.message:String(f);throw bt(`PDF 生成失败:${y}。当前字体 URL 为 ${JSON.stringify(t.fontUrl)};请确认该文件是有效字体,或重新配置 pdfFontUrl`,f)}Q.assertOutputActive(l.signal),i.diagnostics?.forEach(f=>{try{l.onDiagnostic?.(f)}catch{}});const{bytes:d,unsupportedTextCount:v,pageErrors:h,fidelityWarnings:m}=i;if(v>0)throw new Error(`PDF 中有 ${v} 行文字无法编码;请部署支持所用文字的字体并配置 pdfFontUrl`);if(h.length>0)throw new Error(`PDF 有 ${h.length} 页渲染失败:${h[0]}`);return m.length>0&&r?.(`PDF 有 ${m.length} 处版式降级:${m.slice(0,2).join(";")}`),d};return a.checkFont=o=>Br(t.fontUrl,o),a}function Ir(t){const n=e.shallowRef(Object.freeze({status:"unchecked",fontUrl:""}));let a=null,o=null,r=0,l=null;function s(){if(t.injectedExporter)return t.injectedExporter;const h=t.fontUrl();return(!o||a!==h)&&(a=h,o=vn({fontUrl:h})),o}function i(){r++,l?.abort(),l=null}async function d(){if(t.destroyed())throw new le("config","报表预览已卸载");i();const h=r,m=new AbortController;l=m;const f=t.fontUrl();n.value=Object.freeze({status:"checking",fontUrl:f});try{const y=s(),g=y.checkFont?await y.checkFont(m.signal):{status:"unverified",fontUrl:"",message:"自定义 PDF 导出器未提供字体预检查;字体由宿主确认"};return!t.destroyed()&&h===r&&!m.signal.aborted&&(n.value=Object.freeze({...g})),g}catch(y){if(m.signal.aborted)throw y;const g={status:"error",fontUrl:f,message:y instanceof Error?y.message:"PDF 字体检查失败",cause:y};return!t.destroyed()&&h===r&&(n.value=Object.freeze(g)),g}finally{l===m&&(l=null)}}function v(){d().catch(()=>{})}return e.watch([t.plan,e.computed(t.fontUrl),e.computed(t.enabled)],()=>{const h=n.value.fontUrl===t.fontUrl();h&&n.value.status==="available"||(i(),(!h||n.value.status==="checking")&&(n.value=Object.freeze({status:"unchecked",fontUrl:t.fontUrl()})),!t.destroyed()&&t.plan.value?.pages.length&&t.enabled()&&v())},{immediate:!0}),{pdfFont:n,getPdfExporter:s,checkPdfFont:d,retryPdfFont:v,cancelFontCheck:i}}function Pr(t){const n=e.shallowRef(null),a=e.shallowRef(!1);let o=0,r=null;function l(d){const v=r;r=null,n.value=null,a.value=!1,v?.(d)}function s(){o++,l(!1)}async function i(d){if(s(),!t.enabled()||!t.pending())return!0;const v=o,h=[...t.snapshot?.()??[]];a.value=!0;const m=Object.freeze({reason:d,reportIds:Object.freeze([...t.reportIds()]),pendingLocalChanges:!0});try{const f=t.hook(),y=await new Promise(u=>{if(r=u,!f){n.value=m;return}Promise.resolve().then(()=>f(m)).then(c=>{v===o&&l(c===!0)},c=>{if(v===o){try{t.error(c)}catch{}l(!1)}})}),g=t.snapshot?.()??[];return v===o&&y===!0&&g.length===h.length&&h.every((u,c)=>Object.is(u,g[c]))}catch(f){if(v===o){try{t.error(f)}catch{}l(!1)}return!1}}return{request:n,pending:a,check:i,settle:l,cancel:s}}let $r=0;function Dr(t){const n=e.shallowRef(null),a=new Set;let o=null;function r(d){n.value=Object.freeze(d);try{t(n.value)}catch{}}function l(d,v,h){const m=`mr-task-${Date.now().toString(36)}-${++$r}`;a.add(m),o=h,r({taskId:m,kind:d,stage:v,status:"running",cancellable:!0});function f(g,u,c){n.value?.taskId!==m||n.value.status!=="running"||r({...n.value,stage:g,completed:u,total:c})}function y(g="completed"){n.value?.taskId!==m||n.value.status!=="running"||(o=null,r({...n.value,status:g,cancellable:!1}))}return{taskId:m,update:f,finish:y}}function s(){if(n.value?.status!=="running")return;const d=o;o=null,r({...n.value,status:"cancelled",cancellable:!1}),d?.()}function i(d,v){n.value?.taskId!==d.taskId&&(d.status!=="running"||a.has(d.taskId))||(a.add(d.taskId),a.size>100&&a.delete(a.values().next().value),o=d.status==="running"?v:null,r({...d}))}return{state:n,start:l,cancel:s,receive:i}}function Vr(t){const n=e.shallowRef(Object.freeze([])),a=new Set;let o=0;function r(){o++,n.value=Object.freeze([]),a.clear()}function l(d){const v=o,h=[];for(const m of d){const f=JSON.stringify([m.code,m.format,m.pageIndex,m.componentIndex,m.componentPath,m.path,m.message]);if(a.has(f))continue;a.add(f);const y=Object.freeze({...m,...m.componentPath?{componentPath:Object.freeze([...m.componentPath])}:{}});h.push(y)}h.length&&(n.value=Object.freeze([...n.value,...h]));for(const m of h){if(v!==o)break;try{t(m)}catch{}}}function s(d){l([d])}function i(d,v){const h=H.inspectOutputCapabilities(d,v);return l(h),h}return{entries:n,reset:r,add:s,addMany:l,inspect:i}}let Rr=0;function Mr(){return`mrp-params-${++Rr}`}function hn(t,n,a){const o=(Array.isArray(n)?n.find(r=>r?.field===t.field)?.label:void 0)??t.field;return t.code==="required"?a.paramRequired.replace("{label}",o):(a.paramInvalid??"{label}:{message}").replace("{label}",o).replace("{message}",t.message)}function Tr(t){const n=e.ref({}),a=e.ref(!1);function o(){const i={};for(const d of Array.isArray(t.defs.value)?t.defs.value:[])typeof d?.field=="string"&&Object.defineProperty(i,d.field,{value:t.params()[d.field]??d.defaultValue??"",writable:!0,enumerable:!0,configurable:!0});n.value=i,a.value=!1}o(),e.watch(t.defs,o),e.watch(t.reportIds,o),e.watch(()=>JSON.stringify(t.params()),o);const r=e.computed(()=>H.validateReportParams(t.defs.value,{...t.params(),...n.value})),l=e.computed(()=>!a.value&&r.value.issues.length>0&&r.value.issues.every(i=>i.code==="required"));function s(){const i=r.value;if(!i.ok){const h=i.issues[0];return{quiet:l.value,error:new le(h.code==="definition"?"config":"param",hn(h,t.defs.value,t.messages()),{issues:i.issues})}}const d={...i.values},v=new Set(t.defs.value.filter(h=>h.defaultValue!==void 0).map(h=>h.field));for(const[h,m]of Object.entries(d))m===""&&!v.has(h)&&delete d[h];return{params:d,quiet:!1}}return{values:n,attempted:a,validation:r,pendingRequired:l,reset:o,query:s}}const Ar={class:"mrp-params-title"},Fr={class:"mrp-params-grid"},Or=["id"],Lr={key:0,class:"mrp-param-star"},zr=["value","aria-labelledby","aria-invalid","aria-describedby","aria-required","onChange"],qr=["disabled","hidden"],jr=["value"],Hr=["type","placeholder","value","min","max","step","aria-labelledby","aria-invalid","aria-describedby","aria-required","onInput"],Kr=["id"],Wr={class:"mrp-params-actions"},Ur=e.defineComponent({__name:"ReportParamPanel",props:{defs:{},modelValue:{},messages:{},attempted:{type:Boolean},issues:{}},emits:["update:modelValue","query","reset"],setup(t,{expose:n,emit:a}){const o=t,r=a,l=e.ref({...o.modelValue}),s=e.ref(null),i=Mr();e.watch(()=>o.modelValue,y=>{l.value={...y}});const d=e.computed(()=>o.issues??H.validateReportParams(o.defs,l.value).issues),v=e.computed(()=>(Array.isArray(o.defs)?o.defs:[]).filter(y=>y&&typeof y.field=="string").map((y,g)=>({def:y,id:`${i}-${g}`,label:y.label??y.field,value:l.value[y.field]??"",error:o.attempted?d.value.find(u=>u.field===y.field):void 0})));function h(y,g){l.value={...l.value,[y]:g},r("update:modelValue",{...l.value})}function m(y){y.isComposing||r("query")}function f(){s.value?.querySelector('[aria-invalid="true"]')?.focus()}return n({focusInvalid:f}),(y,g)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"root",ref:s,class:"mrp-params"},[e.createElementVNode("span",Ar,e.toDisplayString(t.messages.paramsTitle),1),e.createElementVNode("div",Fr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.value,u=>(e.openBlock(),e.createElementBlock("label",{key:u.id,class:e.normalizeClass(["mrp-param",{"mrp-param-missing":!!u.error}])},[e.createElementVNode("span",{id:`${u.id}-label`,class:"mrp-param-label"},[e.createTextVNode(e.toDisplayString(u.label),1),u.def.required?(e.openBlock(),e.createElementBlock("i",Lr,"*")):e.createCommentVNode("",!0)],8,Or),(u.def.type??"text")==="select"?(e.openBlock(),e.createElementBlock("select",{key:0,class:"mrp-param-input",value:u.value,"aria-labelledby":`${u.id}-label`,"aria-invalid":u.error?!0:void 0,"aria-describedby":u.error?`${u.id}-error`:void 0,"aria-required":u.def.required||void 0,onChange:c=>h(u.def.field,c.target.value),onKeydown:e.withKeys(m,["enter"])},[e.createElementVNode("option",{value:"",disabled:u.def.required,hidden:u.def.required},e.toDisplayString(u.def.placeholder??(t.messages.paramSelectPlaceholder??"请选择{label}").replace("{label}",u.label)),9,qr),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.def.options??[],c=>(e.openBlock(),e.createElementBlock("option",{key:c.value,value:c.value},e.toDisplayString(c.label),9,jr))),128))],40,zr)):(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??(t.messages.paramTextPlaceholder??"请输入{label}").replace("{label}",u.label),value:u.value,min:u.def.min,max:u.def.max,step:u.def.type==="number"?"any":void 0,"aria-labelledby":`${u.id}-label`,"aria-invalid":u.error?!0:void 0,"aria-describedby":u.error?`${u.id}-error`:void 0,"aria-required":u.def.required||void 0,onInput:c=>h(u.def.field,c.target.value),onKeydown:e.withKeys(m,["enter"])},null,40,Hr)),u.error?(e.openBlock(),e.createElementBlock("small",{key:2,id:`${u.id}-error`,class:"mrp-param-error",role:"status"},e.toDisplayString(e.unref(hn)(u.error,t.defs,t.messages)),9,Kr)):e.createCommentVNode("",!0)],2))),128))]),e.createElementVNode("div",Wr,[e.createElementVNode("button",{class:"mrp-nav mrp-param-query",type:"button",onClick:g[0]||(g[0]=u=>y.$emit("query"))},e.toDisplayString(t.messages.query),1),e.createElementVNode("button",{class:"mrp-nav",type:"button",onClick:g[1]||(g[1]=u=>y.$emit("reset"))},e.toDisplayString(t.messages.reset),1)])],512))}}),bn=q._export_sfc(Ur,[["__scopeId","data-v-156737bc"]]),Gr={class:"mrp-edit-bar"},Jr=["disabled"],Yr=["disabled"],Zr={class:"mrp-changes"},Xr=["aria-label"],Qr={key:0},_r={key:1},el=["onClick"],tl=["title"],nl=["title"],al=["disabled"],ol={key:0,role:"status"},rl={key:1,role:"status"},ll={key:2,class:"mrp-conflicts",open:""},sl=e.defineComponent({__name:"ReportEditBar",props:{differences:{},conflicts:{},messages:{},saving:{type:Boolean},canUndo:{type:Boolean},canRedo:{type:Boolean},busy:{type:Boolean},persisted:{type:Boolean}},emits:["undo","redo","restore","locate"],setup(t){function n(a){return a.source?`${a.source.rowKey} · ${a.source.field}`:`${a.address.pageIndex+1} / ${a.address.rowIndex+1}:${a.address.columnIndex+1}`}return(a,o)=>(e.openBlock(),e.createElementBlock("div",Gr,[e.createElementVNode("button",{type:"button",disabled:t.busy||t.saving||!t.canUndo,onClick:o[0]||(o[0]=r=>a.$emit("undo"))},e.toDisplayString(t.messages.undo),9,Jr),e.createElementVNode("button",{type:"button",disabled:t.busy||t.saving||!t.canRedo,onClick:o[1]||(o[1]=r=>a.$emit("redo"))},e.toDisplayString(t.messages.redo),9,Yr),e.createElementVNode("details",Zr,[e.createElementVNode("summary",null,e.toDisplayString(t.messages.changes)+" · "+e.toDisplayString(t.messages.changesCount?.replace("{count}",String(t.differences.length))),1),e.createElementVNode("section",{"aria-label":t.messages.changes},[t.differences.length?(e.openBlock(),e.createElementBlock("ol",_r,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.differences,(r,l)=>(e.openBlock(),e.createElementBlock("li",{key:l},[e.createElementVNode("button",{type:"button",onClick:s=>a.$emit("locate",r)},e.toDisplayString(n(r)),9,el),e.createElementVNode("span",null,[e.createElementVNode("s",{title:t.messages.changesBefore},e.toDisplayString(r.previousText||"∅"),9,tl),o[3]||(o[3]=e.createTextVNode(" → ",-1)),e.createElementVNode("strong",{title:t.messages.changesAfter},e.toDisplayString(r.text||"∅"),9,nl)])]))),128))])):(e.openBlock(),e.createElementBlock("p",Qr,e.toDisplayString(t.messages.changesEmpty),1))],8,Xr)]),e.createElementVNode("button",{type:"button",disabled:t.busy||t.saving||!t.differences.length,onClick:o[2]||(o[2]=r=>a.$emit("restore"))},e.toDisplayString(t.messages.restoreChanges),9,al),t.saving?(e.openBlock(),e.createElementBlock("span",ol,e.toDisplayString(t.messages.saving),1)):t.differences.length&&!t.conflicts.length?(e.openBlock(),e.createElementBlock("span",rl,e.toDisplayString(t.persisted?t.messages.editSaved:t.messages.editingLocal),1)):e.createCommentVNode("",!0),t.conflicts.length?(e.openBlock(),e.createElementBlock("details",ll,[e.createElementVNode("summary",null,e.toDisplayString(t.messages.conflicts)+" · "+e.toDisplayString(t.conflicts.length),1),e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.conflicts,(r,l)=>(e.openBlock(),e.createElementBlock("li",{key:l},e.toDisplayString(r.message),1))),128))])])):e.createCommentVNode("",!0)]))}}),il=q._export_sfc(sl,[["__scopeId","data-v-df1c7b86"]]);function cl(t){const n=t.table?.columnKeys??[],a=n.map(()=>[]);if(!t.grid)return n;for(const{ci:o,cell:r}of Q.resolveGridLayout(t.grid,t.widthMm,t.heightMm).cells){const l=(r.text??r.rawText??"").trim();if(l)for(let s=o;s<Math.min(n.length,o+(r.colSpan??1));s++)a[s].includes(l)||a[s].push(l)}return n.map((o,r)=>a[r].join(" / ")||o)}function ul(t,n=[]){const a=new Set,o=[];for(const[r,l]of(t?.pages??[]).entries())for(const s of l.components){const i=s.table;if(!i||i.role!=="header"||a.has(i.id))continue;a.add(i.id);const d=cl(s),v=n.filter(y=>y.pageIndex<=r),h=v[v.length-1]?.label,m=i.source?.datasetId,f=[...new Set([h,i.title,m].filter(Boolean))].join(" · ")||i.id;i.columnKeys.forEach((y,g)=>{y&&o.push({key:JSON.stringify([i.id,g]),field:y,label:d[g],group:f,pageIndex:r,tableId:i.id,...m?{datasetId:m}:{}})})}return o}function dl(t,n){const a=n.trim().toLocaleLowerCase().split(/\s+/).filter(Boolean);return t.filter(o=>{const r=`${o.label} ${o.field} ${o.group}`.toLocaleLowerCase();return a.every(l=>r.includes(l))})}function ml(t){const n=mn(),a=e.ref(""),o=e.ref(0),r=`mrp-column-list-${e.getCurrentInstance()?.uid??0}`,l=e.computed(()=>ul(t.plan(),t.sections())),s=e.computed(()=>dl(l.value,a.value)),i=e.computed(()=>s.value.slice(0,100)),d=e.computed(()=>[...new Set(i.value.map(g=>g.group))].map(g=>({label:g,items:i.value.filter(u=>u.group===g)})));e.watch(a,()=>{o.value=0}),e.watch(t.busy,g=>{g&&n.close()}),e.watch(l,()=>{o.value=0});function v(g){t.busy()||(t.locate(g),n.close(!0))}function h(){if(t.busy())return;const g=i.value[o.value];g?v(g):a.value.trim()&&(t.locateField(a.value.trim()),n.close(!0))}function m(){a.value="",n.panel.value?.querySelector("input")?.focus()}function f(g){if(!(g.isComposing||g.keyCode===229||!["ArrowDown","ArrowUp","Enter"].includes(g.key))){if(g.preventDefault(),g.stopPropagation(),g.key==="Enter"){h();return}i.value.length&&(o.value=(o.value+(g.key==="ArrowDown"?1:-1)+i.value.length)%i.value.length,e.nextTick(()=>n.panel.value?.querySelector(`[id="${r}-${o.value}"]`)?.scrollIntoView?.({block:"nearest"})))}}function y(g){return i.value.findIndex(u=>u.key===g)}return{...n,field:a,active:o,listId:r,directory:l,matches:s,candidates:i,groups:d,choose:v,submit:h,clear:m,onSearchKeydown:f,candidateIndex:y}}const fl=["aria-label"],pl={key:0,class:"mrp-section-tabs"},gl=["aria-current","disabled","onClick"],vl=["aria-expanded","disabled"],hl={key:0,class:"mrp-column-count"},bl=["aria-label"],yl={class:"mrp-column-heading"},wl=["aria-label"],xl=["aria-label","placeholder","aria-controls","aria-activedescendant","disabled"],kl=["aria-label"],El=["id","aria-label"],Cl={key:0,class:"mrp-column-empty",role:"status"},Sl=["aria-label"],Nl=["id","aria-selected","disabled","onPointermove","onClick"],Bl=["title"],Il={class:"mrp-column-help",role:"status"},Pl=e.defineComponent({__name:"ReportNavigation",props:{sections:{},currentPage:{},messages:{},busy:{type:Boolean},plan:{},compact:{type:Boolean}},emits:["goto","locate","locate-target"],setup(t,{emit:n}){const a=t,o=n,r=ml({plan:()=>a.plan,sections:()=>a.sections,busy:()=>a.busy,locate:I=>o("locate-target",I),locateField:I=>o("locate",I)}),{root:l,trigger:s,panel:i,opened:d,field:v,active:h,directory:m,matches:f,candidates:y,groups:g,listId:u}=r,c=e.computed(()=>({columnDirectory:"字段目录",columnSearch:"搜索列名或字段",columnNoMatches:"未找到匹配字段",columnResults:"匹配字段",...a.messages})),w=e.computed(()=>(a.messages.columnResultsMore??"{count} 个匹配字段,显示前 {limit} 个;继续输入可缩小范围").replace("{count}",String(f.value.length)).replace("{limit}",String(y.value.length)));function S(I){const P=a.sections[I];return!!P&&a.currentPage>=P.pageIndex+1&&(!a.sections[I+1]||a.currentPage<=a.sections[I+1].pageIndex)}return(I,P)=>(e.openBlock(),e.createElementBlock("nav",{class:e.normalizeClass(["mrp-section-nav",{"mrp-compact":t.compact}]),"aria-label":t.messages.sections??"工作表与章节"},[t.sections.length>1?(e.openBlock(),e.createElementBlock("div",pl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.sections,(V,A)=>(e.openBlock(),e.createElementBlock("button",{key:A,type:"button",class:e.normalizeClass({active:S(A)}),"aria-current":S(A)?"page":void 0,disabled:t.busy,onClick:j=>o("goto",V.pageIndex+1)},e.toDisplayString(V.label),11,gl))),128))])):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"root",ref:l,class:"mrp-column-locator",onKeydown:P[7]||(P[7]=(...V)=>e.unref(r).onKeydown&&e.unref(r).onKeydown(...V))},[e.createElementVNode("button",{ref_key:"trigger",ref:s,type:"button",class:e.normalizeClass(["mrp-directory-trigger",{active:e.unref(d)}]),"aria-expanded":e.unref(d),"aria-haspopup":"dialog",disabled:t.busy,onClick:P[0]||(P[0]=V=>d.value=!e.unref(d))},[e.createVNode(q._sfc_main,{name:"columns"}),e.createElementVNode("span",null,e.toDisplayString(c.value.columnDirectory),1),e.unref(m).length?(e.openBlock(),e.createElementBlock("span",hl,e.toDisplayString(e.unref(m).length),1)):e.createCommentVNode("",!0),e.createVNode(q._sfc_main,{name:"chevron-down",size:12})],10,vl),e.unref(d)?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"panel",ref:i,class:"mrp-column-directory",role:"dialog","aria-label":c.value.columnDirectory},[e.createElementVNode("div",yl,[e.createElementVNode("span",null,[e.createVNode(q._sfc_main,{name:"columns"}),e.createTextVNode(e.toDisplayString(c.value.columnDirectory),1)]),e.createElementVNode("button",{type:"button",class:"mrp-column-close","aria-label":t.messages.closeColumnDirectory??"关闭字段目录",onClick:P[1]||(P[1]=V=>e.unref(r).close(!0))},[e.createVNode(q._sfc_main,{name:"close",size:15})],8,wl)]),e.createElementVNode("form",{class:"mrp-column-search",onSubmit:P[5]||(P[5]=e.withModifiers((...V)=>e.unref(r).submit&&e.unref(r).submit(...V),["prevent"]))},[e.createVNode(q._sfc_main,{name:"search"}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":P[2]||(P[2]=V=>e.isRef(v)?v.value=V:null),type:"search",autocomplete:"off",spellcheck:"false",role:"combobox","aria-label":c.value.columnSearch,placeholder:c.value.columnSearch,"aria-autocomplete":"list","aria-expanded":"true","aria-controls":e.unref(u),"aria-activedescendant":e.unref(y).length?`${e.unref(u)}-${e.unref(h)}`:void 0,disabled:t.busy,onKeydown:P[3]||(P[3]=(...V)=>e.unref(r).onSearchKeydown&&e.unref(r).onSearchKeydown(...V))},null,40,xl),[[e.vModelText,e.unref(v)]]),e.unref(v)?(e.openBlock(),e.createElementBlock("button",{key:0,class:"mrp-column-clear",type:"button","aria-label":t.messages.clearSearch??"清除搜索",onClick:P[4]||(P[4]=(...V)=>e.unref(r).clear&&e.unref(r).clear(...V))},[e.createVNode(q._sfc_main,{name:"close",size:13})],8,kl)):e.createCommentVNode("",!0)],32),e.createElementVNode("div",{id:e.unref(u),class:"mrp-column-results",role:"listbox","aria-label":c.value.columnResults},[e.unref(y).length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("p",Cl,[e.createVNode(q._sfc_main,{name:"search",size:22}),e.createTextVNode(e.toDisplayString(c.value.columnNoMatches),1)])),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(g),V=>(e.openBlock(),e.createElementBlock("section",{key:V.label,role:"group","aria-label":V.label},[e.createElementVNode("strong",null,e.toDisplayString(V.label),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(V.items,A=>(e.openBlock(),e.createElementBlock("button",{id:`${e.unref(u)}-${e.unref(r).candidateIndex(A.key)}`,key:A.key,type:"button",role:"option",tabindex:"-1",class:e.normalizeClass({"mrp-column-active":e.unref(r).candidateIndex(A.key)===e.unref(h)}),"aria-selected":e.unref(r).candidateIndex(A.key)===e.unref(h),disabled:t.busy,onPointermove:j=>h.value=e.unref(r).candidateIndex(A.key),onMousedown:P[6]||(P[6]=e.withModifiers(()=>{},["prevent"])),onClick:j=>e.unref(r).choose(A)},[e.createElementVNode("span",null,[e.createTextVNode(e.toDisplayString(A.label),1),e.createElementVNode("code",{title:A.field},e.toDisplayString(A.field),9,Bl)]),e.createVNode(q._sfc_main,{name:"arrow-right",size:14})],42,Nl))),128))],8,Sl))),128))],8,El),e.createElementVNode("p",Il,e.toDisplayString(e.unref(f).length>e.unref(y).length?w.value:t.messages.columnSearchShortcut??"↑ ↓ 选择 · Enter 定位"),1)],8,bl)):e.createCommentVNode("",!0)],544)],10,fl))}}),en=q._export_sfc(Pl,[["__scopeId","data-v-b47639d9"]]),$l={class:"mrp-import-summary"},Dl={key:0},Vl={key:0},Rl=e.defineComponent({__name:"ReportImportSummary",props:{result:{},messages:{}},setup(t){return(n,a)=>(e.openBlock(),e.createElementBlock("details",$l,[e.createElementVNode("summary",null,[e.createTextVNode(e.toDisplayString(t.messages.importSummary)+" · "+e.toDisplayString(t.messages.importPreserved?.replace("{sheets}",String(t.result.sheets.length)))+" ",1),t.result.warnings.length?(e.openBlock(),e.createElementBlock("span",Dl," · "+e.toDisplayString(t.result.warnings.length)+" "+e.toDisplayString(t.messages.importWarnings),1)):e.createCommentVNode("",!0)]),e.createElementVNode("p",null,e.toDisplayString(t.messages.importReadOnly),1),e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.result.sheets,o=>(e.openBlock(),e.createElementBlock("li",{key:o.index},e.toDisplayString(o.name)+" · "+e.toDisplayString(o.range)+" · "+e.toDisplayString(o.rowCount)+" × "+e.toDisplayString(o.columnCount),1))),128))]),t.result.warnings.length?(e.openBlock(),e.createElementBlock("ul",Vl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.result.warnings,(o,r)=>(e.openBlock(),e.createElementBlock("li",{key:r},e.toDisplayString(o),1))),128))])):e.createCommentVNode("",!0)]))}}),Ml=q._export_sfc(Rl,[["__scopeId","data-v-54f275e8"]]),Ct={calculationTitle:"选区计算",calculationLocal:"仅本地分析,不写回实绩、不重算原公式。请选取同一单位与量纲的数值。",calculationHint:"点击起点,Shift + 点击终点或方向键扩选。",calculationFormula:"计算方式",calculationExpression:"组合公式",calculationExpressionHint:"支持 SUM、AVERAGE/AVG、MIN、MAX、COUNT、MEDIAN 及 + - * / 和括号,不执行 Excel 公式;采用浮点数,精度仅用于展示。",calculationPrecision:"展示小数位",calculationRun:"计算选区",calculationCancel:"取消计算",calculationResult:"计算结果",calculationIncluded:"参与数值",calculationExcluded:"排除单元格",calculationEmpty:"选区没有可计算数值,计数为 0,其余结果为空。",calculationNoSelection:"先关闭设置并选择数据,再从底部工具栏打开选区计算。",calculationSum:"求和 SUM",calculationAverage:"平均值 AVERAGE",calculationMin:"最小值 MIN",calculationMax:"最大值 MAX",calculationCount:"数值计数 COUNT",calculationMedian:"中位数 MEDIAN",calculationCustom:"组合公式",calculationErrorSelection:"请选择同一明细区域中的数据。",calculationErrorLimit:"选区超过计算预算,请缩小范围后重试。",calculationErrorExpression:"公式无效,请使用支持的摘要名称、运算符与括号。",calculationErrorDivision:"除数不能为 0。",calculationErrorOverflow:"结果超出有效数值范围。",calculationErrorPrecision:"数值超出安全精度,或展示小数位不是 0 至 12 的整数。"};function yn(t){const n={...Ct};for(const a of Object.keys(n)){const o=t[a];typeof o=="string"&&(n[a]=o)}return n}const wn={...Ct,exportMenu:"导出",exportMenuDescription:"选择文件格式",clearSearch:"清除搜索",searchHint:"Enter 下一个 · Shift+Enter 上一个",searchNoMatches:"没有匹配内容",pageJump:"跳至页",pageJumpInvalid:"请输入有效页码",pageJumpHint:"Enter 跳转",pagination:"报表分页",columnSearchHint:"输入列名或字段标识",columnSearchShortcut:"↑ ↓ 选择 · Enter 定位",closeColumnDirectory:"关闭字段目录",columnResultsMore:"{count} 个匹配字段,显示前 {limit} 个;继续输入可缩小范围",columnCount:"{count} 个字段",settingsGeneral:"常规",settingsTools:"工具",settingsAdvanced:"高级",settingsAdvancedDescription:"按需开启分析能力,保持日常阅读简洁。",settingsCalculations:"启用选区计算",settingsCalculationsDescription:"选取数值后计算求和、平均值或组合公式,仅用于本地分析。",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}",paramInvalid:"{label}:{message}",paramPrompt:"请先完善查询条件",paramPromptDescription:"填写必填条件后点击查询,即可生成报表。",paramSelectPlaceholder:"请选择{label}",paramTextPlaceholder:"请输入{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:"内容搜索",closeSearch:"关闭搜索",prevSearchMatch:"上一个匹配",nextSearchMatch:"下一个匹配",zoom:"缩放工具",settingsLocal:"按需启用工具,仅作用于当前预览。",editingLocal:"修改为本地草稿;不会自动写入业务数据库。",editingSaved:"修改将通过接入方配置的保存回调提交。",importLocal:"导入仅生成本地预览,不自动替换业务数据。",emptyDescription:"当前查询没有明细,请调整查询条件后重试。",undo:"撤销",redo:"重做",restoreChanges:"恢复来源值",changes:"修改明细",changesCount:"{count} 处修改",changesEmpty:"尚无修改",changesBefore:"来源值",changesAfter:"当前值",editAtomicRequired:"批量保存需要接入方提供原子 saveBatch 回调;本次未写入任何单元格。",clipboardLimit:"单次最多粘贴 10000 个单元格,请分批处理。",preferencesError:"偏好存储不可用,设置仍在当前预览中生效。",freezeHeaders:"冻结表头",frozenColumns:"冻结前列",sections:"工作表与章节",locateField:"定位字段",locateFieldPlaceholder:"输入字段标识,Enter 定位",locateFieldMissing:"未找到该字段,请核对字段标识。",importSummary:"Excel 导入摘要",importPreserved:"已导入 {sheets} 个工作表,保留内容、合并和样式。",importWarnings:"兼容性提示",importReadOnly:"公式、日期及受保护单元格保持只读;公式不重算。",conflicts:"保存冲突",editReadOnly:"选区包含只读或无权限单元格,本次修改未应用。",editMissing:"选区超出报表范围或缺少业务来源,请重新选择。",editDuplicate:"选区包含同一业务字段的重复单元格,请缩小选区。",clipboardInvalid:"剪贴板内容无法识别,请使用矩形表格文本重新粘贴。",editSaved:"修改已通过保存回调确认",settingsPanes:"冻结窗格",columnDirectory:"字段目录",columnSearch:"搜索列名或字段",columnNoMatches:"未找到匹配字段",columnResults:"匹配字段",columnGroup:"明细区域",discardTitle:"保留当前修改?",discardDescription:"当前报表有尚未保存的输入或本地草稿,继续操作将替换这些内容。",discardKeep:"继续编辑",discardProceed:"放弃修改并继续",taskQuery:"正在获取数据…",taskValidate:"正在校验数据…",taskLayout:"正在生成版式…",taskAssets:"正在准备图片和字体…",taskEncode:"正在生成文件…",taskDownload:"正在准备下载…",taskPrint:"正在准备打印…",taskCancel:"取消任务",taskCancelled:"任务已取消,可重新操作。",diagnosticsSearch:"搜索提示、错误码或位置",diagnosticsMore:"共 {count} 条匹配,当前展示前 100 条;请搜索缩小范围。",diagnosticsTitle:"输出兼容性提示",diagnosticsLocate:"定位",diagnosticsLocation:"第 {page} 页 · 组件 {component}",diagnosticsStrict:"当前格式存在已知内容降级,请查看兼容性提示或选择其他输出格式。",diagnosticsDetails:"查看技术详情",diagnosticMissingImage:"图片或图表资源尚未准备完成,请重试或联系管理员。",diagnosticUnsupported:"当前输出格式会省略此内容,建议选择 PDF 或图片格式。",diagnosticUnsupportedStyle:"当前格式无法保留部分样式,请查看位置并选择适合的输出格式。",diagnosticImageFormat:"当前图片格式无法直接导出,请转换资源后重试。",diagnosticRichText:"文字内容会保留,部分字体与段落样式将简化。",diagnosticNested:"单元格中的嵌套内容会省略,单元格文字会保留。",diagnosticImageAsync:"图片需要完成加载后才能输出。",diagnosticImageDecode:"图片加载失败,请检查资源后重试。",diagnosticAssetFailed:"图表或图片生成失败,请重试或联系管理员。",diagnosticAssetBudget:"图片资源超出处理范围,请减少资源或缩小报表范围。"},xn={emptyAccent:"#79a7e8",shellBg:"#f4f7fc",shellFg:"#334155",toolbarBg:"#ffffff",toolbarBorder:"#e4eaf3",toolbarFg:"#334155",btnFg:"#526078",btnBorder:"#dbe3ef",btnHoverBg:"#edf3ff",btnHoverFg:"#315fba",btnActiveBg:"#3569d4"};function kn(t={}){return{...t,defaults:t.defaults??{},presets:t.presets??{}}}function Tl(t){return t}const he={showExport:!0,showPrint:!0,showPdfWindow:!0,showSettings:!0,showParams:!0,gapPx:18,pdfFontUrl:"/simhei.ttf",logger:console},Al={warn:()=>{},info:()=>{}};function Ke(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},interaction:{...t?.interaction,...n?.interaction},output:{...t?.output,...n?.output}}}function Fl(t){return{showExport:t.showExport??he.showExport,showPrint:t.showPrint??he.showPrint,showPdfWindow:t.showPdfWindow??he.showPdfWindow,showSettings:t.showSettings??he.showSettings,showParams:t.showParams??he.showParams,gapPx:t.gapPx??he.gapPx}}function En(t,n){const a=n?t?.presets?.[n]:t?.defaultPreset?t?.presets?.[t.defaultPreset]:void 0,o=Ke(t?.defaults,a);return{...Fl(o),pdfFontUrl:o.pdfFontUrl??he.pdfFontUrl,theme:{...xn,...o.theme},messages:{...wn,...o.messages},logger:o.logger??he.logger,preview:{overscanPages:tn(o.preview?.overscanPages,1,10,!0),searchDebounceMs:tn(o.preview?.searchDebounceMs,200,2e3)},xlsx:{...o.xlsx},editable:o.editable??!1,excelImport:o.excelImport??!1,toolbar:{...o.toolbar},interaction:{...o.interaction},preferences:o.preferences,assets:o.assets,guardChanges:o.guardChanges??!0,beforeDiscard:o.beforeDiscard,output:{...o.output}}}function tn(t,n,a,o=!1){if(t==null||!Number.isFinite(t))return n;const r=Math.max(0,Math.min(a,t));return o?Math.floor(r):r}function Cn(t){const n={};return t.emptyAccent!=null&&(n["--mrp-empty-accent"]=t.emptyAccent),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 Ol(t){const n=e.inject(Be.MACH_REPORT_CONFIG_KEY,null),a=e.computed(()=>{const o=n?.value??null,r="defaults"in t||"presets"in t||"defaultPreset"in t?kn(t):{defaults:t,presets:{}};if(!o)return r;const l={...o.presets,...r.presets};for(const s of Object.keys(l))l[s]=Ke(Ke(o.presets[s],r.defaults),r.presets[s]);return{defaults:Ke(o.defaults,r.defaults),presets:l,defaultPreset:r.defaultPreset??o.defaultPreset}});e.provide(Be.MACH_REPORT_CONFIG_KEY,a)}function Sn(){return e.inject(Be.MACH_REPORT_CONFIG_KEY,e.computed(()=>null))}function ce(t){return JSON.parse(JSON.stringify(t))}function Nn(t,n){const a=n.fields;if(typeof a=="function")return a(t);const o=t.source?.field??t.table?.columnKey;return o===void 0||!a||!Object.prototype.hasOwnProperty.call(a,o)?void 0:a[o]}class Ll extends Error{constructor(n){super(n.map(a=>a.message).join(";")),this.conflicts=n,this.name="ReportEditConflictError"}}function zl(){return globalThis.crypto?.randomUUID?.()??`mr-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}function ql(t){const n=e.shallowRef([]),a=e.shallowRef([]),o=e.shallowRef([]),r=e.shallowRef([]),l=e.shallowRef(!1),s=e.shallowRef(null),i=e.shallowRef([]),d=e.computed(()=>i.value.length>0),v=e.computed(()=>H.summarizeReportCellEdits(n.value)),h=e.computed(()=>!!t.options.value&&!l.value&&!t.blocked()&&a.value.length>0),m=e.computed(()=>!!t.options.value&&!l.value&&!t.blocked()&&o.value.length>0);let f=null,y=null,g=0,u=null;function c(){f?.abort(),f=null,l.value=!1,y=null}function w(){g++,c(),u=null,n.value=[],a.value=[],o.value=[],r.value=[],i.value=[],s.value=null}function S(){const b=t.options.value;return b?typeof b=="object"?b:{}:null}function I(b,x,N){if(!t.options.value||t.blocked())throw new H.ReportCellEditError("readonly");const $=H.createReportCellResolver(b);for(const T of x.edits){const F=$(T.address);if(!F?.editable||N.canEdit?.(F)===!1)throw new H.ReportCellEditError("readonly");if(N.requireSource&&!F.source)throw new H.ReportCellEditError("missing");const z=Nn(F,N);z&&H.parseReportCellFieldInput(F,T.value,z)}}async function P(b,x,N){if(x.saveBatch)return x.saveBatch(ce(b),N);if(x.save&&b.edits.length>1)throw new H.ReportCellEditError("atomic");if(b.edits[0])return x.save?.(ce(b.edits[0]),N)}async function V(b,x,N){for(const $ of b.edits){const T=await x.validate?.(ce($),N);if(T)throw new Error(T);if(N.signal.aborted)return}}function A(b,x,N,$,T){if(t.plan.value=H.applyReportEditResult(H.applyReportCellEditBatch(b,x),x,N),n.value=[...n.value,...x.edits],T){const z=new Set(x.edits.map(H.reportCellEditKey));i.value=i.value.filter(M=>!z.has(H.reportCellEditKey(M)))}else i.value=H.summarizeReportCellEdits([...i.value,...x.edits]);$==="edit"&&(a.value=[...a.value,x.edits],o.value=[]),r.value=[],u=null;const F=g;for(const z of x.edits){if(g!==F)break;t.onChange(ce(z))}}async function j(b,x){const N=t.plan.value,$=S();if(!N||!$||t.blocked())return!1;const T=new AbortController,F=g;f=T,l.value=!0,s.value=null;const z=()=>f===T&&!T.signal.aborted&&t.plan.value===N&&t.options.value!==!1;try{const M=H.createReportCellEditBatch(N,b,zl());if(I(N,M,$),M.edits=M.edits.filter(B=>!Object.is(B.previousValue,B.value)),!M.edits.length)return!0;const k=JSON.stringify([x,M.edits]);u?.plan===N&&u.signature===k?M.requestId=u.requestId:u={plan:N,signature:k,requestId:M.requestId},I(N,M,$);const E={signal:T.signal,requestId:M.requestId,action:x};if(await V(M,$,E),!z())return!1;I(N,M,$);const R=await P(M,$,E);if(!z())return!1;if(R?.conflicts?.length)throw r.value=ce(R.conflicts),new Ll(R.conflicts);return I(N,M,$),A(N,M,R,x,!!($.save||$.saveBatch)),F===g}catch(M){return z()&&(s.value=t.errorMessage?.(M)??(M instanceof Error?M.message:"Cell edit failed"),t.onError(s.value,M)),!1}finally{f===T&&(f=null,l.value=!1)}}async function K(b,x="edit"){if(y)return y;const N=j(b,x);y=N;const $=await N;return y===N&&(y=null),$}async function W(){const b=g,x=a.value[a.value.length-1];return!x||l.value||!await K(x.map(N=>({address:N.address,value:N.previousValue})),"undo")||b!==g?!1:(a.value=a.value.slice(0,-1),o.value=[...o.value,x],!0)}async function J(){const b=g,x=o.value[o.value.length-1];return!x||l.value||!await K(x.map(N=>({address:N.address,value:N.value})),"redo")||b!==g?!1:(o.value=o.value.slice(0,-1),a.value=[...a.value,x],!0)}async function Y(){const b=g;return!v.value.length||l.value||!await K(v.value.map(x=>({address:x.address,value:x.previousValue})),"restore")||b!==g?!1:(a.value=[],o.value=[],!0)}return{changes:n,differences:v,localDifferences:i,hasLocalDrafts:d,lastError:s,conflicts:r,saving:l,canUndo:h,canRedo:m,apply:K,undo:W,redo:J,restore:Y,cancel:c,reset:w}}let jl=0;const Hl="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 var(--mrp-btn-active-bg,#2563eb);outline:none;background:var(--mrp-toolbar-bg,#fff);color:var(--mrp-toolbar-fg,#111);font:inherit;line-height:1.25;white-space:pre-wrap;";function Kl(t){return t.type==="boolean"?[{value:!0,label:t.trueLabel??"是"},{value:!1,label:t.falseLabel??"否"}]:t.type==="enum"?t.options.map(n=>({value:n.value,label:n.label??String(n.value)})):[]}function Wl(t,n,a){const o=t.createElement("select"),r=[{value:null,label:"—"},...Kl(n)];if(r.forEach((l,s)=>{const i=t.createElement("option");i.value=String(s),i.textContent=l.label,(Object.is(a.value,l.value)||a.value===""&&l.value===null)&&(i.selected=!0),o.append(i)}),!r.some(l=>Object.is(a.value,l.value)||a.value===""&&l.value===null)){const l=t.createElement("option");l.value="unknown",l.textContent=a.cell.text??String(a.value),l.selected=!0,o.append(l)}return{input:o,value:()=>o.value==="unknown"?a.value:r[Number(o.value)]?.value??null}}function Ul(t,n,a){const o=n?.type==="number"||n?.type==="date"?t.createElement("input"):t.createElement("textarea");return o.value=a.value==null?"":String(a.value),o instanceof HTMLInputElement&&(o.type=n?.type==="date"?"date":"text",n?.type==="number"&&(o.inputMode="decimal"),n?.type==="date"&&(n.min&&(o.min=n.min),n.max&&(o.max=n.max))),{input:o,value:()=>n?.type==="date"&&o instanceof HTMLInputElement&&o.validity.badInput?"invalid-date":o.value}}function Gl(t){if(!t)return"";const n=[t.hint,t.unit];return(t.type==="number"||t.type==="date")&&(t.min!==void 0&&n.push(`≥ ${t.min}`),t.max!==void 0&&n.push(`≤ ${t.max}`)),t.type==="number"&&t.precision!==void 0&&n.push(`最多 ${t.precision} 位小数`),t.type==="text"&&t.maxLength!==void 0&&n.push(`最多 ${t.maxLength} 字符`),n.filter(Boolean).join(" · ")}function Jl(t,n,a,o){const r=t.ownerDocument,l=o?.type==="boolean"||o?.type==="enum"?Wl(r,o,a):Ul(r,o,a),s=l.input,i=r.createElement("span");i.className="mrp-cell-editor-host",i.style.cssText="position:absolute;inset:0;z-index:10;",s.className="mrp-cell-editor",s.style.cssText=Hl,s.setAttribute("aria-label",o?.label??n),o?.required&&s.setAttribute("aria-required","true");const d=r.createElement("span");d.id=`mrp-cell-hint-${++jl}`,d.className="mrp-cell-editor-hint",d.style.cssText="position:absolute;top:100%;left:0;min-width:100%;width:max-content;max-width:320px;box-sizing:border-box;padding:4px 8px;white-space:normal;border:1px solid var(--mrp-toolbar-border,#ddd);background:var(--mrp-toolbar-bg,#fff);color:var(--mrp-toolbar-fg,#111);font-size:12px;line-height:1.4;box-shadow:0 3px 10px #0002;z-index:11;";const v=Gl(o);return d.textContent=v,d.hidden=!v,s.setAttribute("aria-describedby",d.id),i.append(s,d),t.append(i),{input:s,root:i,initialInput:s.value,value:l.value,focus:()=>{s.focus(),(s instanceof HTMLTextAreaElement||s instanceof HTMLInputElement&&s.type!=="date")&&s.select()},feedback:h=>{d.textContent=h??v,d.hidden=!d.textContent,s.setAttribute("aria-invalid",h?"true":"false")}}}function yt(t){const n=t.closest(".mrp-page-holder"),a=t.closest("[data-mr-component-index]");if(!n||!a)return null;const o={pageIndex:Number(n.dataset.page)-1,componentIndex:Number(a.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 Yl(t){const n=e.shallowRef(null),a=ql(t),{saving:o,changes:r}=a,l=e.shallowRef(!1),s=e.computed(()=>l.value||a.hasLocalDrafts.value);let i=null;function d(){const c=n.value;n.value=null,l.value=!1,a.cancel(),i=null,c?.editor.root.remove()}function v(){d(),a.reset()}function h(c){return n.value===c&&t.plan.value===c.plan}async function m(c){return await a.apply([{address:c.address,value:c.editor.value()}])?(n.value=null,l.value=!1,c.editor.root.remove(),!0):(n.value===c&&(c.editor.input.disabled=!1,c.editor.feedback(a.lastError.value??void 0),c.editor.input.focus()),!1)}async function f(){if(i)return i;const c=n.value;if(!c)return!0;if(!h(c))return d(),!1;l.value=c.editor.input.value!==c.editor.initialInput,c.editor.input.disabled=!0;const w=m(c);i=w;const S=await w;return i===w&&(i=null),S}function y(c){if(c.stopPropagation(),!c.isComposing&&(c.key==="Escape"&&(c.preventDefault(),d()),c.key==="Enter"&&!c.shiftKey||c.key==="Tab")){c.preventDefault();const w=n.value?.address;f().then(S=>{S&&w&&t.onNavigate?.(w,c.key,c.shiftKey)})}}async function g(c){if(!t.options.value||t.blocked()||!await f()||!c.isConnected)return;const w=t.plan.value,S=yt(c);if(!w||!S||!t.options.value||t.blocked())return;const I=typeof t.options.value=="object"?t.options.value:{};try{const P=H.getReportCellContext(w,S);if(!P?.editable||I.canEdit?.(P)===!1)return;const V=Nn(P,I);V&&H.validateReportCellFieldDefinition(P,V);const A=Jl(c,t.label(),P,V),j=A.input;n.value={plan:w,address:S,editor:A},l.value=!1,j.addEventListener("keydown",K=>y(K)),j.addEventListener("input",()=>{l.value=j.value!==A.initialInput,A.feedback()}),j.addEventListener("change",()=>{l.value=j.value!==A.initialInput}),j.addEventListener("blur",()=>{!o.value&&!t.suspendBlur?.()&&f()}),A.focus()}catch(P){t.onError(P instanceof Error?P.message:"无法编辑单元格",P)}}async function u(c){const w=c.target;if(!(w instanceof Element)||w.closest(".mrp-cell-editor"))return;const S=w.closest("td[data-mr-row-index]");S&&await g(S)}return e.watch(t.options,(c,w)=>{(!c||c!==w)&&d()},{flush:"sync"}),e.watch(t.plan,()=>{n.value&&t.plan.value!==n.value.plan&&(n.value.editor.root.remove(),n.value=null,l.value=!1)},{flush:"sync"}),e.onScopeDispose(v),{...a,active:n,saving:o,changes:r,pendingLocalChanges:s,cancel:d,reset:v,commit:f,onDoubleClick:u,editCell:g,getChanges:()=>ce(r.value)}}const Ye=["html","pdf","xlsx","png","word"],wt=["search","thumbnails","zoom",...Ye,"print","pdfWindow","editing","import"];function Zl(t){return{load:n=>JSON.parse(t.getItem(n)??"null"),save:(n,a)=>t.setItem(n,JSON.stringify(a)),remove:n=>t.removeItem(n)}}function Xl(t,n,a,o){const r=e.ref({});let l=0,s=0,i=Promise.resolve();const d=e.computed(()=>Object.fromEntries(wt.map(f=>[f,t.value[f]&&(r.value[f]??n.value[f]??!0)])));function v(f,y){t.value[f]&&(s++,r.value={...r.value,[f]:y},h())}function h(){const f=a?.value;if(!f)return;const y={...r.value};i=i.then(()=>f.adapter.save(f.key,y)).catch(g=>{o?.(g)})}function m(){s++,r.value={},h()}return a&&e.watch(a,async f=>{const y=++l,g=s;if(r.value={},!!f)try{const u=await f.adapter.load(f.key);if(y!==l||g!==s||!u||typeof u!="object")return;r.value=Object.fromEntries(wt.flatMap(c=>typeof u[c]=="boolean"?[[c,u[c]]]:[]))}catch(u){y===l&&o?.(u)}},{immediate:!0}),e.onScopeDispose(()=>{l++}),{enabled:d,setEnabled:v,reset:m}}function Ql(t,n,a){const o=e.ref({}),r=Sn(),l=e.computed(()=>En(r.value,t.preset)),s=e.computed(()=>({...l.value.messages,...t.messages})),i=e.computed(()=>t.showExport??l.value.showExport),d=e.computed(()=>t.showPrint??l.value.showPrint),v=e.computed(()=>t.showPdfWindow??l.value.showPdfWindow),h=e.computed(()=>t.showSettings??l.value.showSettings),m=e.computed(()=>t.guardChanges??l.value.guardChanges),f=e.computed(()=>({...l.value.output,...t.output})),y=e.computed(()=>({...l.value.toolbar,...t.toolbar})),g=e.computed(()=>({...l.value.interaction,...t.interaction,...o.value})),u=e.computed(()=>t.preferences??l.value.preferences),c=e.computed(()=>t.assets??l.value.assets),w=e.computed(()=>t.gapPx??(n.value?0:l.value.gapPx)),S=e.computed(()=>t.showParams??l.value.showParams),I=e.computed(()=>t.editable??l.value.editable),P=e.computed(()=>t.excelImport??l.value.excelImport),V=e.computed(()=>({search:y.value.search!==!1,thumbnails:y.value.thumbnails!==!1,zoom:y.value.zoom!==!1,...Object.fromEntries(Ye.map(x=>[x,i.value&&(y.value.exportFormats?.includes(x)??!0)])),print:d.value,pdfWindow:v.value,editing:!!I.value,import:!!P.value})),A=Xl(V,e.computed(()=>({editing:y.value.editing,import:y.value.excelImport})),u,()=>a(s.value.preferencesError??"Preferences storage unavailable")),j=A.enabled,K=e.computed(()=>Ye.filter(x=>j.value[x])),W=e.computed(()=>j.value.editing?I.value:!1),J=e.computed(()=>j.value.import?P.value:!1),Y=e.computed(()=>typeof I.value=="object"&&(typeof I.value.save=="function"||typeof I.value.saveBatch=="function")),b=e.computed(()=>typeof t.emptyState=="object"?t.emptyState:{});return{resolved:l,resolvedMessages:s,effectiveShowExport:i,effectiveShowPrint:d,effectiveShowPdfWindow:v,effectiveShowSettings:h,effectiveGuardChanges:m,effectiveOutput:f,effectiveInteraction:g,effectiveAssets:c,effectiveGapPx:w,effectiveShowParams:S,availableTools:V,tools:A,toolState:j,visibleExportFormats:K,effectiveEditable:W,effectiveExcelImport:J,persistedEditing:Y,emptyStateContent:b,sessionInteraction:o}}function Bn(t){return t.table.role==="header"?-Math.max(1,t.grid?.cells.length??1):t.table.rowIndex}function ge(t,n,a=n){const o=t.pages[n.pageIndex]?.components[n.componentIndex],r=o?.table,l=t.pages[a.pageIndex]?.components[a.componentIndex]?.table;return r&&l&&r.id===l.id?{grid:r.id,row:Bn(o)+n.rowIndex,column:l.columnKeys.indexOf(r.columnKeys[n.columnIndex]??"")}:{grid:`${n.pageIndex}:${n.componentIndex}`,row:n.rowIndex,column:n.columnIndex}}function nn(t,n){const a=t.pages[n.pageIndex]?.components[n.componentIndex]?.table;if(!a)return(r,l)=>({...n,rowIndex:r,columnIndex:l});const o=new Map;return t.pages.forEach((r,l)=>r.components.forEach((s,i)=>{s.table?.id!==a.id||!s.grid||s.grid.cells.forEach((d,v)=>{const h=Bn(s)+v;o.set(h,[...o.get(h)??[],{address:{pageIndex:l,componentIndex:i,rowIndex:v,columnIndex:0},keys:s.table.columnKeys}])})})),(r,l)=>{const s=a.columnKeys[l];if(s===void 0)return null;const i=o.get(r)?.find(d=>d.keys.includes(s));return i?{...i.address,columnIndex:i.keys.indexOf(s)}:null}}function _l(t,n){const a=[...t.ownerDocument.querySelectorAll("a[href],button,input,textarea,select,[tabindex]:not([tabindex='-1'])")].filter(l=>l.tabIndex>=0&&!l.matches(":disabled,[hidden],input[type='hidden']")&&!l.closest("[inert],[aria-hidden='true']")&&l.getClientRects().length>0).map((l,s)=>({element:l,order:s})).sort((l,s)=>(l.element.tabIndex||1/0)-(s.element.tabIndex||1/0)||l.order-s.order),o=a.findIndex(({element:l})=>l===t);if(o<0)return!1;const r=a[o+(n?-1:1)]?.element;return r?(r.focus(),t.ownerDocument.activeElement===r):!1}function es(t,n){const a=t?.source;return!ts(t,n.field)||n.tableId!==void 0&&t?.table?.id!==n.tableId||n.datasetId!==void 0&&(a?.datasetId??t?.component.table?.source?.datasetId)!==n.datasetId?!1:n.rowKey===void 0||a?.rowKey===n.rowKey}function ts(t,n){if((t?.source?.field??t?.table?.columnKey)===n)return!0;if(!t||t.table?.role!=="header")return!1;const a=t.address.columnIndex;return t.component.table?.columnKeys.slice(a,a+(t.cell.colSpan??1)).includes(n)??!1}function ns(t,n){return t.pageIndex===n.pageIndex&&t.componentIndex===n.componentIndex}function as(t,n){return ns(t,n)&&t.rowIndex===n.rowIndex&&t.columnIndex===n.columnIndex}function ft(t){return`[data-page="${t.pageIndex+1}"] [data-mr-component-index="${t.componentIndex}"] td[data-mr-row-index="${t.rowIndex}"][data-mr-column-index="${t.columnIndex}"]`}function xt(t){return`${t.pageIndex}:${t.componentIndex}:${t.rowIndex}:${t.columnIndex}`}function os(t,n){const a=ge(t,n.anchor),o=ge(t,n.focus,n.anchor);return{grid:a.grid,minRow:Math.min(a.row,o.row),maxRow:Math.max(a.row,o.row),minColumn:Math.min(a.column,o.column),maxColumn:Math.max(a.column,o.column),focusKey:xt(n.focus),origin:t.pages[n.anchor.pageIndex]?.components[n.anchor.componentIndex]?.table}}function rs(t,n,a){const o=n?.table;if(!o||!a.origin||o.id!==a.origin.id)return{grid:`${t.pageIndex}:${t.componentIndex}`,rowOffset:0,missingColumn:-1};const r=new Map;return a.origin.columnKeys.forEach((l,s)=>{r.has(l)||r.set(l,s)}),{grid:o.id,rowOffset:o.role==="header"?-Math.max(1,n.grid?.cells.length??1):o.rowIndex,columns:o.columnKeys.map(l=>r.get(l)??-1),missingColumn:r.get("")??-1}}function ls(t,n,a){if(!a||!n||n.grid!==a.grid)return!1;const o=n.rowOffset+t.row,r=n.columns?n.columns[t.column]??n.missingColumn:t.column;return o>=a.minRow&&o<=a.maxRow&&r>=a.minColumn&&r<=a.maxColumn}function We(t,n,a){t.getAttribute(n)!==a&&t.setAttribute(n,a)}function pt(t,n,a){t.classList.contains(n)!==a&&t.classList.toggle(n,a)}function ss(t,n,a,o,r,l){n.role!==a&&(We(t,"role",a),n.role=a),n.selected!==o&&(pt(t,"mrp-cell-selected",o),We(t,"aria-selected",String(o)),n.selected=o),n.focused!==r&&(pt(t,"mrp-cell-focus",r),We(t,"tabindex",r?"0":"-1"),n.focused=r),n.modified!==l&&(pt(t,"mrp-cell-modified",l),n.modified=l)}function is(t){const n=()=>t.editable?.()??t.enabled(),a=e.shallowRef(null),o=new WeakMap,r=new WeakMap;let l=null,s=new Set;function i(b=t.root.value??void 0){if(!b)return;const x=a.value,N=t.plan.value,$=t.differences();$!==l&&(l=$,s=new Set($.map(F=>xt(F.address))));const T=x&&N?os(N,x):null;b instanceof HTMLTableElement&&h(b,N,T);for(const F of b.querySelectorAll("table"))h(F,N,T)}function d(b){const x=o.get(b);if(x)return x;const N=b.closest("[data-mr-component-index]"),$=N?.closest(".mrp-page-holder"),T={pageIndex:Number($?.dataset.page)-1,componentIndex:Number(N?.dataset.mrComponentIndex)};return Object.values(T).every(F=>Number.isInteger(F)&&F>=0)?(o.set(b,T),T):null}function v(b,x){const N=r.get(b);if(N)return N;const $=Number(b.dataset.mrRowIndex),T=Number(b.dataset.mrColumnIndex);if(![$,T].every(z=>Number.isInteger(z)&&z>=0))return null;const F={row:$,column:T,key:xt({...x,rowIndex:$,columnIndex:T})};return r.set(b,F),F}function h(b,x,N){const $=d(b);if(!$)return;const T=x?.pages[$.pageIndex]?.components[$.componentIndex],F=T?.table?.role==="header"?"columnheader":"gridcell",z=N?rs($,T,N):null;We(b,"role","grid");for(const M of b.rows)for(const k of M.cells){const E=v(k,$);E&&ss(k,E,F,ls(E,z,N),N?.focusKey===E.key,s.size>0&&s.has(E.key))}}async function m(b,x=!1){if(!t.plan.value||!H.getReportCellContext(t.plan.value,b))return!1;const N=a.value,$=x&&N&&ge(t.plan.value,N.anchor).grid===ge(t.plan.value,b,N.anchor).grid;a.value={anchor:$?N.anchor:{...b},focus:{...b}},t.root.value?.querySelector(ft(b))||t.gotoPage(b.pageIndex+1),await e.nextTick(),i();const T=t.root.value?.querySelector(ft(b));return T?.focus({preventScroll:!0}),T?.scrollIntoView?.({block:"nearest",inline:"nearest"}),!!T}function f(b){const x=b.target;if(!(x instanceof Element)||x.closest("textarea,input,button,select"))return;const N=x.closest("td[data-mr-row-index]"),$=N&&yt(N);if(!$||t.busy()||!t.plan.value||!H.getReportCellContext(t.plan.value,$))return;const T=a.value,F=b.shiftKey&&T&&ge(t.plan.value,T.anchor).grid===ge(t.plan.value,$,T.anchor).grid;a.value={anchor:F?T.anchor:{...$},focus:{...$}},i(),N.focus({preventScroll:!0})}function y(b){const x=t.plan.value?.pages[b.pageIndex]?.components[b.componentIndex];return x?.grid?Q.resolveGridLayout(x.grid,x.widthMm,x.heightMm).cells.map(N=>({...b,rowIndex:N.ri,columnIndex:N.ci})):[]}function g(b,x,N){const $=y(b),T=N?-1:1;if(x==="Tab")return $[$.findIndex(M=>as(M,b))+T];const F=x==="ArrowUp"||x==="ArrowDown"||x==="Enter",z=x==="ArrowUp"||x==="ArrowLeft"?-1:T;return $.filter(M=>F?M.columnIndex===b.columnIndex&&(M.rowIndex-b.rowIndex)*z>0:M.rowIndex===b.rowIndex&&(M.columnIndex-b.columnIndex)*z>0).sort((M,k)=>F?(M.rowIndex-k.rowIndex)*z:(M.columnIndex-k.columnIndex)*z)[0]}function u(b,x,N){if(x==="ArrowLeft"||x==="ArrowRight")return;const $=t.plan.value;if(!$.pages[b.pageIndex]?.components[b.componentIndex]?.table)return;const F=x==="ArrowUp"||N?-1:1;for(let z=b.pageIndex;z>=0&&z<$.pages.length;z+=F){const M=$.pages[z].components,k=z===b.pageIndex?b.componentIndex+F:F===1?0:M.length-1;for(let E=k;E>=0&&E<M.length;E+=F){const R=c(b,{...b,pageIndex:z,componentIndex:E},x,F);if(R)return R}}}function c(b,x,N,$){const T=t.plan.value,F=T.pages[b.pageIndex].components[b.componentIndex].table,z=T.pages[x.pageIndex].components[x.componentIndex]?.table;if(z?.id!==F.id||z.role==="header"&&F.role!=="header"&&($>0||F.rowIndex+b.rowIndex>0))return;const M=y(x),k=N==="Tab"?M:M.filter(E=>E.columnIndex===b.columnIndex);return $===1?k[0]:k[k.length-1]}function w(b,x,N=!1,$=!1,T=!1){const F=g(b,x,N)??u(b,x,N);return F?(m(F,$),!0):((x!=="Tab"||!T)&&m(b),!1)}function S(b){const x=a.value;if(t.busy()||b.target instanceof Element&&b.target.closest("textarea,input,select,button,a[href],[contenteditable]"))return!1;if(!x)return V(b);const N=b.key;if(I(b)||P(b,x.focus))return!0;if(!["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Tab","Enter"].includes(N))return!1;const $=w(x.focus,N,N==="Tab"&&b.shiftKey,b.shiftKey&&N!=="Tab",!0);if(N==="Tab"&&!$){const T=t.root.value?.ownerDocument.activeElement;if(!(T instanceof HTMLElement)||!_l(T,b.shiftKey))return!1}return b.preventDefault(),!0}function I(b){if(!n()||!(b.ctrlKey||b.metaKey))return!1;const x=b.key.toLowerCase();return x!=="z"&&x!=="y"?!1:(b.preventDefault(),x==="y"||b.shiftKey?t.redo():t.undo(),!0)}function P(b,x){if(!n()||!t.plan.value||b.key!=="F2"&&!(b.key==="Enter"&&H.getReportCellContext(t.plan.value,x)?.editable))return!1;const N=t.root.value?.querySelector(ft(x));return N&&(b.preventDefault(),t.edit(N)),!0}function V(b){if(!["ArrowDown","ArrowRight","ArrowUp","ArrowLeft","Enter"].includes(b.key))return!1;const x=t.root.value?.querySelector("td[data-mr-row-index]"),N=x&&yt(x);return N?(b.preventDefault(),m(N),!0):!1}function A(){const b=a.value,x=t.plan.value;if(!b||!x)return"";const N=[],$=ge(x,b.anchor),T=ge(x,b.focus,b.anchor),F=nn(x,b.anchor),z=H.createReportCellResolver(x),M=Math.min($.column,T.column),k=Math.max($.column,T.column);if((Math.abs($.row-T.row)+1)*(k-M+1)>1e4)return t.error(new H.ReportCellEditError("limit")),"";for(let E=Math.min($.row,T.row);E<=Math.max($.row,T.row);E++){const R=[];for(let B=M;B<=k;B++){const L=F(E,B);R.push(L?z(L)?.cell.text??"":"")}N.push(R)}return H.formatReportClipboard(N)}function j(b){!a.value||b.target instanceof Element&&b.target.closest("textarea,input,select")||(b.clipboardData?.setData("text/plain",A()),b.preventDefault())}async function K(b){const x=a.value;if(!x||!n()||t.busy())return!1;try{let N;try{N=H.parseReportClipboard(b)}catch(k){throw new H.ReportCellEditError(k instanceof Error&&k.message.includes("limit")?"limit":"clipboard")}const $=t.plan.value,T=ge($,x.anchor),F=ge($,x.focus,x.anchor),z=nn($,x.anchor),M=N.flatMap((k,E)=>k.map((R,B)=>{const L=z(Math.min(T.row,F.row)+E,Math.min(T.column,F.column)+B);if(!L)throw new H.ReportCellEditError("missing");return{address:L,value:R}}));return await t.apply(M)}catch(N){return t.error(N),!1}}function W(b){if(!a.value||!n()||b.target instanceof Element&&b.target.closest("textarea,input,select,button,a[href],[contenteditable]")||!b.clipboardData?.types.includes("text/plain"))return;const x=b.clipboardData?.getData("text/plain");x&&(b.preventDefault(),K(x))}async function J(b){const x=t.plan.value;if(!x)return!1;const N=H.createReportCellResolver(x);for(let $=0;$<x.pages.length;$++){const T=x.pages[$];for(let F=0;F<T.components.length;F++)for(const z of y({pageIndex:$,componentIndex:F,rowIndex:0,columnIndex:0})){const M=N(z);if(es(M,b))return m(z)}}return!1}function Y(){a.value=null,i()}return{selection:a,refresh:i,reset:Y,focusCell:m,focusField:J,navigate:w,onClick:f,onKeydown:S,onCopy:j,onPaste:W,copySelection:A,pasteSelection:K}}function cs(t){let n=0,a=!1;function o(){const l=t.viewport.value,s=t.root.value,i=t.plan.value;if(!l||!s||!i)return;const d=t.options(),v=Math.max(0,Math.min(20,Math.floor(d.frozenColumns??0)));if(!d.freezeHeaders&&v===0&&!a)return;const h=t.zoom.value||1,m=l.getBoundingClientRect();s.querySelectorAll("[data-mr-component-index]").forEach(f=>{const y=f.closest("[data-page]"),g=Number(y?.dataset.page)-1,u=i.pages[g]?.components[Number(f.dataset.mrComponentIndex)];if(!u?.grid||!y)return;f.style.transform="",f.style.zIndex="";const c=f.getBoundingClientRect(),w=y.getBoundingClientRect().bottom,S=Math.max(0,(m.left-c.left)/h),I=d.freezeHeaders?Math.max(0,Math.min((m.top-c.top)/h,(w-c.bottom)/h)):0;S>0&&v>0&&(f.style.zIndex="1"),u.table?.role==="header"&&I>0&&(f.style.transform=`translateY(${I}px)`,f.style.zIndex="5"),f.querySelectorAll(".mrp-cell-frozen").forEach(V=>{V.style.transform="",V.style.zIndex="",V.classList.remove("mrp-cell-frozen")});const P=Array.from({length:v},(V,A)=>`td[data-mr-column-index="${A}"]`);!u.table&&d.freezeHeaders&&P.push('td[data-mr-row-index="0"]'),P.length&&f.querySelectorAll(P.join(",")).forEach(V=>{const A=Number(V.dataset.mrColumnIndex)<v,j=!u.table&&Number(V.dataset.mrRowIndex)===0&&!!d.freezeHeaders,K=A?S:0,W=j?I:0;V.style.transform=K||W?`translate(${K}px, ${W}px)`:"",V.classList.toggle("mrp-cell-frozen",!!(K||W)),V.style.zIndex=K||W?j?"7":"6":""})}),a=!!d.freezeHeaders||v>0}function r(){n||(n=requestAnimationFrame(()=>{n=0,o()}))}return e.onScopeDispose(()=>{n&&cancelAnimationFrame(n)}),{refresh:o,schedule:r}}async function In(t,n,a,o){if(!n?.assetRenderers||!Object.keys(n.assetRenderers).length)return t;try{return(await H.resolvePlanAssets(t,{...n,signal:a,format:"dom",onDiagnostic:l=>{a.aborted||(n.onDiagnostic?.(l),o(l.message))}})).plan}catch(r){throw a.aborted?r:new le("render",r instanceof Error?r.message:"Report asset preparation failed",r)}}function Pn(t,n){const a=H.validateRenderPlan(t);if(!a.ok)throw new le("validate",`渲染计划校验失败(${a.errors.length} 处): ${a.errors.slice(0,3).map(o=>`${o.path}: ${o.message}`).join("; ")}`);a.warnings.forEach(o=>n(`${o.path}: ${o.message}`))}async function us(t,n,a,o){const r=await Q.waitForOutput(t(n),n.signal);return Q.assertOutputActive(n.signal),o("validate"),Pn(r,n.onWarning??(()=>{})),Q.assertOutputActive(n.signal),o("assets"),In(r,a,n.signal,n.onWarning??(()=>{}))}async function ds(t,n,a,o,r,l){const{importExcelTemplate:s}=await import("@agile-team/mach-report/xlsx");Q.assertOutputActive(o);const i=await Q.waitForOutput(s(t,{...n,signal:o}),o);l("layout");const d=H.paginateTemplate(ce(i.template),{}).plan;Pn(d,r),Q.assertOutputActive(o),l("assets");const v=await In(d,a,o,r);return{result:i,plan:v}}const ms={key:7,class:"mrp-edit-hint",role:"status"},fs={key:9,class:"mrp-export-notice mrp-export-warning",role:"status"},ps={class:"mrp-main"},gs={key:0,class:"mrp-state"},vs={key:1,class:"mrp-state mrp-error"},hs=["data-page"],bs=["aria-label","aria-current","onClick"],ys=["data-thumb"],ws={class:"mrp-thumb-no"},xs={key:10,class:"mrp-footer"},ks={class:"mrp-footer-context"},Es=["aria-label"],Cs={key:0},Ss={class:"mrp-overlay"},Ns={key:11,class:"mrp-debug","aria-hidden":"true"},gt=96/25.4,vt="mach-report:ui",ht="mach-report:ui:wide",Bs=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},interaction:{type:Object,default:void 0},preferences:{type:Object,default:void 0},guardChanges:{type:Boolean,default:void 0},beforeDiscard:{type:Function,default:void 0},output:{type:Object,default:void 0},assets:{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","task","diagnostic","error","warning","cell-edit","template-import","preferences-change"],setup(t,{expose:n,emit:a}){const o=t,r=a,l=e.shallowRef(null),s=e.ref(!1),i=e.ref(""),d=e.shallowRef(null),v=e.ref(null),h=e.ref(!1),m=e.ref(null),f=e.ref(1),y=e.ref(null),g=e.ref(null),u=e.ref(null),c=e.ref(!1),w=e.ref(!1),S=e.ref(!1),I=e.ref("general"),P=e.shallowRef(null),V=e.ref(null),A=e.ref(null),j=Da();let K=null,W=!1;const J=Dr(p=>r("task",p)),Y=Vr(p=>r("diagnostic",p)),b=e.shallowRef(null),x=e.computed(()=>!!l.value?.pages.length&&l.value.pages.every(p=>p.layout==="wide"));let N=vt;const $=e.inject(Be.MACH_REPORT_FETCHER_KEY,null),T=e.inject(Be.MACH_REPORT_PDF_EXPORTER_KEY,null),F=e.computed(()=>kt(o.reportId)),z=e.computed(()=>o.fetcher??$),M=e.computed(()=>l.value?.pages.length??0),k=e.computed(()=>Object.freeze({loading:s.value,hasPlan:M.value>0,pageCount:M.value,currentPage:f.value,exporting:v.value,printing:h.value,canExport:!s.value&&!w.value&&!O.saving.value&&M.value>0&&v.value===null,canPrint:!s.value&&!w.value&&!O.saving.value&&M.value>0&&!h.value,error:d.value,pdfFont:Pt.value,editing:O.active.value!==null,saving:O.saving.value,importing:w.value,dirty:O.differences.value.length>0,pendingLocalChanges:O.pendingLocalChanges.value,task:J.state.value,diagnostics:Y.entries.value,reportIds:b.value?.reportIds??[],params:b.value?.params??{},canUndo:O.canUndo.value,canRedo:O.canRedo.value,changeCount:O.differences.value.length,selection:Z.selection.value?ce(Z.selection.value):null}));function E(p,C,D){d.value=Object.freeze({message:p,code:C,cause:D}),r("error",p,{code:C,cause:D})}const{resolved:R,resolvedMessages:B,effectiveShowExport:L,effectiveShowSettings:U,effectiveGuardChanges:_,effectiveOutput:ue,effectiveInteraction:se,effectiveAssets:Ae,effectiveGapPx:St,effectiveShowParams:Dn,availableTools:Vn,tools:Nt,toolState:ae,visibleExportFormats:Rn,effectiveEditable:Ie,effectiveExcelImport:Fe,persistedEditing:Bt,emptyStateContent:Ze,sessionInteraction:Xe}=Ql(o,x,p=>r("warning",p)),It=e.computed(()=>ae.value.pdf||ae.value.pdfWindow),Qe=e.computed(()=>se.value.calculations===!0),_e=e.computed(()=>yn(B.value)),{pdfFont:Pt,getPdfExporter:Mn,checkPdfFont:Tn,retryPdfFont:$t,cancelFontCheck:An}=Ir({plan:l,fontUrl:()=>R.value.pdfFontUrl,enabled:()=>It.value,injectedExporter:T,destroyed:()=>W});async function Fn(p,C){p==="editing"&&!C&&!await O.commit()||(Nt.setEnabled(p,C),r("preferences-change",Object.freeze({...ae.value})))}async function On(){await O.commit()&&(Nt.reset(),Xe.value={},r("preferences-change",Object.freeze({...ae.value})))}async function Dt(p="general"){if(S.value){S.value=!1;return}!await O.commit()||W||!U.value||(I.value=p,S.value=!0)}function Vt(p){return p instanceof H.ReportCellEditError?{number:B.value.editInvalidNumber,boolean:B.value.editInvalidBoolean,conflict:B.value.editConflict,atomic:B.value.editAtomicRequired,limit:B.value.clipboardLimit,readonly:B.value.editReadOnly,missing:B.value.editMissing,duplicate:B.value.editDuplicate,clipboard:B.value.clipboardInvalid}[p.code]??p.message:p instanceof Error?p.message:"单元格保存失败"}const O=Yl({plan:l,options:Ie,blocked:()=>s.value||w.value||v.value!==null||h.value||me.pending.value,label:()=>B.value.editCell??"编辑单元格",errorMessage:Vt,suspendBlur:()=>me.request.value!==null,onChange:p=>{d.value=null,m.value=null,r("cell-edit",p)},onError:(p,C)=>{m.value={kind:"error",message:p},E(p,"edit",C)},onNavigate:(p,C,D)=>Z.navigate(p,C,D)}),Z=is({plan:l,root:y,enabled:()=>!!Ie.value||Qe.value,editable:()=>!!Ie.value,busy:()=>s.value||w.value||O.saving.value||!!v.value||h.value||me.pending.value,differences:()=>O.differences.value,gotoPage:ie,edit:O.editCell,apply:O.apply,undo:O.undo,redo:O.redo,error:p=>{const C=Vt(p);m.value={kind:"error",message:C},E(C,"edit",p)}}),et=To({plan:l,selection:Z.selection,enabled:()=>Qe.value});function Ln(){Dt("advanced")}const me=Pr({pending:()=>O.pendingLocalChanges.value,reportIds:()=>b.value?.reportIds??F.value,hook:()=>o.beforeDiscard??R.value.beforeDiscard,enabled:()=>_.value,snapshot:()=>[l.value,O.active.value?.editor.input.value],error:p=>E(p instanceof Error?p.message:"修改保护回调失败","config",p)});async function zn(p="leave"){return me.check(p)}function Rt(p){!_.value||!O.pendingLocalChanges.value||(p.preventDefault(),p.returnValue="")}function Mt(){J.cancel()}async function Tt(p){await Z.focusField(p)||(m.value={kind:"warning",message:B.value.locateFieldMissing??"Field not found"})}function qn(p){if(p.pageIndex===void 0)return;ie(p.pageIndex+1);const C=p.componentPath;p.componentIndex!==void 0&&C&&C.length===2&&Z.focusCell({pageIndex:p.pageIndex,componentIndex:p.componentIndex,rowIndex:C[0],columnIndex:C[1]})}function tt(p){const C=l.value;if(!C)return!1;const D={excel:"xlsx",image:"png",doc:"word"}[p]??p,ee=D==="pdf"?"pdf":D==="xlsx"?"xlsx":D==="png"?"canvas":"dom",G=Y.inspect(C,ee);return l.value!==C?!1:G.length&&ue.value.fidelity==="strict"?(m.value={kind:"error",message:B.value.diagnosticsStrict??"输出存在已知降级"},E(m.value.message,"export",{diagnostics:G}),!1):!0}function jn(p){return l.value?Y.inspect(l.value,p):[]}const Oe=e.computed(()=>{if(P.value)return P.value.sheets.map(C=>({label:C.name,pageIndex:C.pageStart}));const p=new Set;return l.value?.pages.flatMap((C,D)=>C.components.flatMap(ee=>{const G=ee.table;return!G?.title||p.has(G.id)?[]:(p.add(G.id),[{label:G.title,pageIndex:D}])}))??[]});async function At(p){p&&!await Z.focusField({field:p})&&(m.value={kind:"warning",message:B.value.locateFieldMissing??"Field not found"})}const nt=e.computed(()=>{try{return{defs:o.paramDefs??z.value?.getParamDefs?.(F.value)??[],error:null}}catch(p){return{defs:[],error:new le("config",p instanceof Error?p.message:"查询参数配置无效",p)}}}),at=e.computed(()=>nt.value.defs),Pe=Tr({defs:at,reportIds:F,params:()=>o.params,messages:()=>B.value}),{values:$e,attempted:Le,pendingRequired:Ft}=Pe,Ot=e.ref(null);function Hn(){Le.value=!0,Pe.validation.value.ok||e.nextTick(()=>Ot.value?.focusInvalid()),we()}function Kn(){Pe.reset(),i.value="",d.value=null}const Wn=e.computed(()=>({height:o.height,"--mrp-page-gap":`${Math.max(0,St.value)}px`,...Cn(R.value.theme)})),{zoom:oe,zoomMode:De,applyFitZoom:Lt,setZoom:Ve}=ln(()=>({viewport:g.value,pageWidthPx:ot.contentSize.value.w||210*gt})),ot=rn(l,oe,{pxPerMm:gt,gapPx:St,overscan:e.computed(()=>R.value.preview.overscanPages)}),{contentSize:rt,windowRange:Re,visiblePages:zt,makeScrollHandler:Un,refreshViewport:lt}=ot,Gn=Un(f,M),st=cs({root:y,viewport:g,plan:l,zoom:oe,options:()=>se.value});e.watch([se,oe],()=>st.schedule(),{flush:"post"});function it(p){Ve(p*100)}function ye(){w.value=!1,O.reset(),Z.reset(),P.value=null,jt(),l.value=null,b.value=null,Y.reset(),f.value=1,X.reset()}let te=0,ne=null;function ze(p,C){return p===te&&!C.signal.aborted&&!W}function qt(){g.value&&(g.value.scrollTop=0,g.value.scrollLeft=0)}function Jn(p,C){for(const D of p){if(C!==te)return!1;r("warning",D)}return C===te}function Yn(){if(nt.value.error){const C=nt.value.error;return ye(),i.value=C.message,E(C.message,C.code,C.cause),null}const p=Pe.query();return p.params?p.params:(ye(),i.value=p.quiet?"":p.error.message,p.quiet||(Le.value=!0,E(p.error.message,p.error.code,p.error.cause)),null)}async function we(){if(W||_.value&&O.pendingLocalChanges.value&&!await me.check("reload")||W)return;const p=++te;w.value=!1,ne?.abort(),ne=null;const C=z.value;if(s.value=!1,d.value=null,F.value.length===0){i.value="缺少报表 ID",ye(),E(i.value,"param");return}if(!C){i.value="未提供渲染数据源 fetcher",ye(),E(i.value,"config");return}const D=Yn();if(!D)return;s.value=!0,i.value="",m.value=null,ye();const ee=j.start(),G=new AbortController;ne=G;const pe=J.start("query","query",()=>{ne===G&&(G.abort(),te++,ne=null,s.value=!1)}),qe=[...F.value],de=Object.freeze({...D}),ve=new Set;function Ee(re){p!==te||G.signal.aborted||ve.has(re)||(ve.add(re),R.value.logger.warn("[mach-report] 报表告警:",re),Y.add({code:"layout",severity:"warning",message:re}),r("warning",re))}try{const re=await us(C,{reportIds:qe,params:D,taskId:pe.taskId,onEvent:be=>{p===te&&!G.signal.aborted&&pe.update(be.stage,be.completed,be.total)},onQueryResult:(be,sa)=>{p===te&&!G.signal.aborted&&Y.addMany(sa.diagnostics??[])},signal:G.signal,onWarning:Ee},Ae.value,pe.update);if(!ze(p,G)||(l.value=re,b.value=Object.freeze({reportIds:Object.freeze(qe),params:de}),Y.inspect(re,"dom"),!ze(p,G)))return;pe.finish(),f.value=1,j.end(ee),qt();const Ce=x.value?ht:vt;Ce!==N&&(N=Ce,dt()),De.value==="fit"&&Lt(),r("loaded",re.pages.length)}catch(re){if(p!==te)return;if(G.signal.aborted){pe.finish("cancelled");return}pe.finish("failed");const Ce=gn(re);i.value=Ce.message;const be=pn(Ce);E(Ce.message,be.code,be.cause)}finally{p===te&&(s.value=!1),ne===G&&(ne=null)}}function ie(p){if(W||M.value<=0)return;const C=Math.max(1,Math.min(M.value,p));f.value=C;const D=g.value;D&&(D.scrollTop=ot.pageOffsetPx(C-1)*oe.value,lt(D),ra.prioritize(C-1))}const xe=un(l,{getPdfExporter:Mn,onTask:p=>J.receive(p,()=>xe.cancel()),onDiagnostic:Y.add,getXlsxOptions:()=>R.value.xlsx,onError:(p,C)=>{m.value={kind:"error",message:p},E(p,C??"print")},onWarning:p=>{m.value={kind:"warning",message:p},Y.add({code:"output",severity:"warning",message:p}),r("warning",p)},onBusy:p=>{v.value=p,p?m.value={kind:"progress",message:B.value.exporting.replace("{format}",p)}:m.value?.kind==="progress"&&(m.value=null)},onPrinting:p=>{h.value=p}}),{releasePrintFrame:jt,dispose:Zn}=xe;async function Ht(){s.value||w.value||O.active.value&&!await O.commit()||(d.value=null,tt("html")&&await xe.print())}async function Kt(p){s.value||w.value||O.active.value&&!await O.commit()||(d.value=null,tt(p)&&await xe.exportAs(p))}function Wt(){if(s.value||w.value||O.active.value){m.value={kind:"warning",message:B.value.editingHint??"请先确认单元格修改"};return}d.value=null,tt("pdf")&&xe.openPdfWindow()}async function Xn(p,C={}){W||($e.value={...$e.value,...p},C.reload!==!1&&(Le.value=!0,await we()))}const Ut={reload:we,print:Ht,exportAs:Kt,openPdfWindow:Wt,gotoPage:ie,setParams:Xn,checkPdfFont:Tn,importExcel:Gt,getPlan:Qn,cancelTask:Mt,confirmDiscard:zn,getOutputDiagnostics:jn,getChanges:O.getChanges,undo:O.undo,redo:O.redo,restoreChanges:O.restore,getDifferences:()=>ce(O.differences.value),getSelection:()=>Z.selection.value?ce(Z.selection.value):null,focusCell:Z.focusCell,focusField:Z.focusField,copySelection:Z.copySelection,pasteSelection:Z.pasteSelection,get state(){return k.value}};e.provide(Be.MACH_REPORT_CONTROLLER_KEY,Ut);function Qn(){return l.value?ce(l.value):null}function _n(p){const C=typeof Fe.value=="object"?Fe.value:{};return{...C,...p,limits:{...C.limits,...p?.limits}}}function ea(p,C){O.reset(),Z.reset(),jt(),X.reset(),l.value=p,b.value=null,Y.reset(),P.value={sheets:ce(C.sheets),warnings:[...C.warnings]},f.value=1,i.value="",m.value=C.warnings.length?{kind:"warning",message:C.warnings.join(";")}:null,qt(),N=x.value?ht:vt,dt(),Y.addMany(C.warnings.map(D=>({code:"excel-import",severity:"warning",message:D}))),l.value===p&&Y.inspect(p,"dom")}async function Gt(p,C){if(W)throw new le("config","报表预览已卸载");if(_.value&&O.pendingLocalChanges.value&&!await me.check("import")||W)return null;const D=++te;ne?.abort(),ne=null,s.value=!1,O.cancel(),xe.invalidatePending(),w.value=!0;const ee=new AbortController;ne=ee,d.value=null,m.value={kind:"progress",message:B.value.importing??"正在导入 Excel…"};const G=J.start("import","import",()=>{ne===ee&&(ee.abort(),te++,ne=null,w.value=!1,m.value=null)}),pe=_n(C),qe=Q.forwardOutputAbort(pe.signal,ee);try{const{result:de,plan:ve}=await ds(p,{...pe,onProgress:(Ee,re)=>{G.update("import",Ee,re),pe.onProgress?.(Ee,re)}},Ae.value,ee.signal,Ee=>{D===te&&r("warning",Ee)},G.update);return!ze(D,ee)||!Jn(de.warnings,D)||(ea(ve,de),!ze(D,ee))?null:(G.finish(),r("template-import",de),D===te&&r("loaded",ve.pages.length),de)}catch(de){if(D!==te)return null;if(ee.signal.aborted)return G.finish("cancelled"),null;G.finish("failed");const ve=new le("import",de instanceof Error?de.message:"Excel 模板导入失败",de);throw m.value={kind:"error",message:ve.message},E(ve.message,"import",de),ve}finally{qe(),D===te&&(w.value=!1),ne===ee&&(ne=null)}}function ta(p){const C=p.target,D=C.files?.[0];C.value="",D&&Gt(D).catch(()=>{})}const X=Ia({plan:l,gotoPage:ie,debounceMs:e.computed(()=>R.value.preview.searchDebounceMs),highlight:xa,clearHighlights:wa});e.watch(()=>ae.value.search,p=>{p||(X.reset(),X.visible.value=!1)});function na(p){!p.ctrlKey||!ae.value.zoom||(p.preventDefault(),it(oe.value*(p.deltaY<0?1.1:1/1.1)))}function aa(p){if(!Z.onKeydown(p)&&!(p.target instanceof Element&&p.target.closest("input,textarea,select,[contenteditable='true']"))){if(ae.value.search&&(p.ctrlKey||p.metaKey)&&p.key.toLowerCase()==="f"){p.preventDefault(),X.visible.value||X.toggle(),e.nextTick(()=>A.value?.focusSearch());return}switch(p.key){case"PageDown":p.preventDefault(),ie(f.value+1);break;case"PageUp":p.preventDefault(),ie(f.value-1);break;case"Home":p.preventDefault(),ie(1);break;case"End":p.preventDefault(),ie(M.value);break;case"+":case"=":p.preventDefault(),ae.value.zoom&&it(oe.value*1.1);break;case"-":p.preventDefault(),ae.value.zoom&&it(oe.value/1.1);break}}}function oa(){try{localStorage.setItem(N,JSON.stringify({zoomMode:De.value==="fit"?"fit":Math.round(oe.value*100)}))}catch{}}e.watch([De,oe],oa);let ct="";function Jt(p=!1){const C=X.activeMatch.value;if(!x.value||!C)return;const D=`${X.query.value}:${X.matchIndex.value}:${C.pageIndex}`;if(!p&&D===ct)return;const G=y.value?.querySelector(`[data-page="${C.pageIndex+1}"]`)?.querySelectorAll("mark.mrp-hit")[C.occurrence];G&&(G.scrollIntoView?.({block:"nearest",inline:"nearest"}),ct=D)}const ra=va({plan:l,root:y,pages:()=>zt.value,priority:()=>X.activeMatch.value?.pageIndex??f.value-1,focusToken:()=>X.activeMatch.value,query:()=>X.query.value,zoom:()=>oe.value,loading:()=>B.value.loading,clear:X.clear,highlight:X.apply,mounted:p=>{Z.refresh(p),st.schedule()},ready:()=>{X.activeMatch.value||(ct=""),Jt()},error:p=>{i.value=p instanceof Error?p.message:String(p),E(i.value,"render",p)}});e.watch(()=>Z.selection.value,()=>{Z.refresh()},{flush:"post"}),e.watch(()=>X.query.value,p=>{p||y.value?.querySelectorAll(".mrp-page-holder").forEach(C=>{X.clear(C)})});const fe=$a(l,{thumbsRoot:u,visible:c,renderThumbCanvas:p=>{try{const C=l.value.pages[p],D=Math.min(.2,116/Math.max(1,C.pageWidthMm*gt)),{canvases:ee}=H.renderPlanToCanvas(l.value,{start:p,end:p,dpr:D});return ee[0]??null}catch{return null}}});e.watchEffect(()=>{fe.schedule()},{flush:"post"});const la=e.computed(()=>o.debug),{debugStats:ke}=Pa(la,{plan:l,pageCount:M,windowRange:Re,zoom:oe,loadMs:j.loadMs});function ut(){lt(g.value),fe.schedule(),De.value==="fit"&&Lt(),Jt(!0)}function dt(){Ve(N===ht?100:"fit");try{const p=JSON.parse(localStorage.getItem(N)??"{}");p.zoomMode==="fit"?Ve("fit"):typeof p.zoomMode=="number"&&Ve(p.zoomMode)}catch{}}return e.onMounted(()=>{window.addEventListener("resize",ut),window.addEventListener("beforeunload",Rt),typeof ResizeObserver<"u"&&g.value&&(K=new ResizeObserver(ut),K.observe(g.value)),lt(g.value),dt(),o.autoLoad&&we()}),e.onUnmounted(()=>{W=!0,me.cancel(),J.cancel(),O.reset(),w.value=!1,An(),te++,ne?.abort(),ne=null,window.removeEventListener("resize",ut),window.removeEventListener("beforeunload",Rt),K?.disconnect(),K=null,fe.destroy(),X.reset(),Zn()}),e.watch(()=>[JSON.stringify(F.value),JSON.stringify(o.params),z.value],async()=>{if(o.autoLoad){we();return}!await me.check("replace")||W||(te++,ne?.abort(),ne=null,s.value=!1,i.value="",d.value=null,m.value=null,ye())}),n({...Ut,state:k}),(p,C)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["mach-report-preview",{"mrp-wide-report":x.value}]),style:e.normalizeStyle(Wn.value)},[e.unref(Dn)&&at.value.length>0?(e.openBlock(),e.createBlock(bn,{key:0,ref_key:"paramPanelRef",ref:Ot,defs:at.value,modelValue:e.unref($e),"onUpdate:modelValue":C[0]||(C[0]=D=>e.isRef($e)?$e.value=D:null),messages:e.unref(B),attempted:e.unref(Le),issues:e.unref(Pe).validation.value.issues,onQuery:Hn,onReset:Kn},null,8,["defs","modelValue","messages","attempted","issues"])):e.createCommentVNode("",!0),e.createVNode(fn,{ref_key:"toolbarRef",ref:A,"page-count":M.value,"current-page":f.value,"zoom-mode":e.unref(De),zoom:e.unref(oe),"show-export":e.unref(L),"show-print":e.unref(ae).print,"show-pdf-window":e.unref(ae).pdfWindow,"show-search":e.unref(ae).search,"show-thumbnails":e.unref(ae).thumbnails,"show-zoom":e.unref(ae).zoom,"export-formats":e.unref(Rn),"show-settings":e.unref(U),"settings-open":S.value,messages:e.unref(B),search:{visible:e.unref(X).visible.value,query:e.unref(X).query.value,matchIndex:e.unref(X).matchIndex.value,matchCount:e.unref(X).matchCount.value,searching:e.unref(X).searching.value},"thumbs-visible":c.value,"show-import":!!e.unref(Fe),busy:s.value||w.value||e.unref(O).saving.value,onGoto:ie,onZoom:e.unref(Ve),onExport:C[1]||(C[1]=D=>Kt(D)),onPrint:Ht,onPdfWindow:Wt,onSearchInput:e.unref(X).onInput,onSearchNav:e.unref(X).onNav,onSearchToggle:e.unref(X).toggle,onThumbsToggle:C[2]||(C[2]=D=>c.value=!c.value),onImportExcel:C[3]||(C[3]=D=>V.value?.click()),onSettingsToggle:Dt},e.createSlots({_:2},[Oe.value.length<=1?{name:"navigation",fn:e.withCtx(()=>[M.value>0&&e.unref(se).navigation!==!1?(e.openBlock(),e.createBlock(en,{key:0,plan:l.value,compact:"",sections:Oe.value,"current-page":f.value,messages:e.unref(B),busy:s.value||w.value||e.unref(O).saving.value,onLocateTarget:Tt,onGoto:ie,onLocate:At},null,8,["plan","sections","current-page","messages","busy"])):e.createCommentVNode("",!0)]),key:"0"}:void 0]),1032,["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"]),e.unref(me).request.value?(e.openBlock(),e.createBlock(mr,{key:1,messages:e.unref(B),onAnswer:e.unref(me).settle},null,8,["messages","onAnswer"])):e.createCommentVNode("",!0),e.createVNode(hr,{task:e.unref(J).state.value,messages:e.unref(B),onCancel:Mt},null,8,["task","messages"]),e.createVNode(Cr,{entries:e.unref(Y).entries.value,messages:e.unref(B),onLocate:qn},null,8,["entries","messages"]),S.value&&e.unref(U)?(e.openBlock(),e.createBlock(lr,{key:2,available:e.unref(Vn),enabled:e.unref(ae),messages:e.unref(B),"persisted-editing":e.unref(Bt),interaction:e.unref(se),section:I.value,busy:s.value||w.value||e.unref(O).saving.value||!!v.value||h.value,onSection:C[4]||(C[4]=D=>I.value=D),onInteraction:C[5]||(C[5]=D=>Xe.value={...e.unref(Xe),...D}),onChange:Fn,onReset:On,onClose:C[6]||(C[6]=D=>S.value=!1)},{advanced:e.withCtx(()=>[e.createVNode(Mo,{state:e.unref(et),messages:_e.value},null,8,["state","messages"])]),default:e.withCtx(()=>[e.renderSlot(p.$slots,"settings",{},void 0,!0)]),_:3},8,["available","enabled","messages","persisted-editing","interaction","section","busy"])):e.createCommentVNode("",!0),Oe.value.length>1&&M.value>0&&e.unref(se).navigation!==!1?(e.openBlock(),e.createBlock(en,{key:3,plan:l.value,onLocateTarget:Tt,sections:Oe.value,"current-page":f.value,messages:e.unref(B),busy:s.value||w.value||e.unref(O).saving.value,onGoto:ie,onLocate:At},null,8,["plan","sections","current-page","messages","busy"])):e.createCommentVNode("",!0),P.value?(e.openBlock(),e.createBlock(Ml,{key:4,result:P.value,messages:e.unref(B)},null,8,["result","messages"])):e.createCommentVNode("",!0),e.unref(Ie)&&M.value>0?(e.openBlock(),e.createBlock(il,{key:5,differences:e.unref(O).differences.value,conflicts:e.unref(O).conflicts.value,messages:e.unref(B),saving:e.unref(O).saving.value,"can-undo":e.unref(O).canUndo.value,"can-redo":e.unref(O).canRedo.value,persisted:e.unref(Bt),busy:!!v.value||h.value,onUndo:e.unref(O).undo,onRedo:e.unref(O).redo,onRestore:e.unref(O).restore,onLocate:C[7]||(C[7]=D=>e.unref(Z).focusCell(D.address))},null,8,["differences","conflicts","messages","saving","can-undo","can-redo","persisted","busy","onUndo","onRedo","onRestore"])):e.createCommentVNode("",!0),e.unref(Fe)?(e.openBlock(),e.createElementBlock("input",{key:6,ref_key:"importInputRef",ref:V,class:"mrp-import-input",type:"file",accept:".xlsx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",hidden:"",onChange:ta},null,544)):e.createCommentVNode("",!0),e.unref(Ie)&&M.value>0?(e.openBlock(),e.createElementBlock("div",ms,e.toDisplayString(e.unref(O).saving.value?e.unref(B).saving:e.unref(B).editingHint),1)):e.createCommentVNode("",!0),m.value?(e.openBlock(),e.createElementBlock("div",{key:8,class:e.normalizeClass(["mrp-export-notice",`mrp-export-${m.value.kind}`]),role:"alert"},e.toDisplayString(m.value.message),3)):e.createCommentVNode("",!0),e.unref(Pt).status==="error"&&It.value?(e.openBlock(),e.createElementBlock("div",fs,[e.createTextVNode(e.toDisplayString(e.unref(B).pdfFontUnavailable)+" ",1),e.createElementVNode("button",{type:"button",onClick:C[8]||(C[8]=(...D)=>e.unref($t)&&e.unref($t)(...D))},e.toDisplayString(e.unref(B).retry),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",ps,[e.createElementVNode("div",{ref_key:"viewportRef",ref:g,class:"mrp-body",tabindex:"0",onWheel:na,onKeydown:aa,onDblclick:C[9]||(C[9]=(...D)=>e.unref(O).onDoubleClick&&e.unref(O).onDoubleClick(...D)),onClick:C[10]||(C[10]=(...D)=>e.unref(Z).onClick&&e.unref(Z).onClick(...D)),onCopy:C[11]||(C[11]=(...D)=>e.unref(Z).onCopy&&e.unref(Z).onCopy(...D)),onPaste:C[12]||(C[12]=(...D)=>e.unref(Z).onPaste&&e.unref(Z).onPaste(...D)),onScrollPassive:C[13]||(C[13]=D=>{e.unref(Gn)(D.target),e.unref(st).schedule()})},[s.value?(e.openBlock(),e.createElementBlock("div",gs,e.toDisplayString(e.unref(B).loading),1)):i.value?(e.openBlock(),e.createElementBlock("div",vs,[e.createTextVNode(e.toDisplayString(i.value)+" ",1),e.createElementVNode("button",{class:"mrp-retry",type:"button",onClick:we},e.toDisplayString(e.unref(B).retry),1)])):!l.value||M.value===0?(e.openBlock(),e.createBlock(Qt,{key:2,title:e.unref(Ft)?e.unref(B).paramPrompt??e.unref(B).paramsTitle:e.unref(B).empty,description:e.unref(Ft)?e.unref(B).paramPromptDescription:e.unref(Ze).description??e.unref(B).emptyDescription},null,8,["title","description"])):(e.openBlock(),e.createElementBlock("div",{key:3,class:"mrp-scale",style:e.normalizeStyle({width:`${e.unref(rt).w*e.unref(oe)}px`,height:`${e.unref(rt).h*e.unref(oe)}px`})},[e.createElementVNode("div",{ref_key:"containerRef",ref:y,class:"mrp-scale-inner",style:e.normalizeStyle({transform:`scale(${e.unref(oe)})`,transformOrigin:"top left",width:`${e.unref(rt).w}px`})},[e.unref(Re).padTopPx>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mrp-spacer-top",style:e.normalizeStyle({height:`${e.unref(Re).padTopPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(zt),D=>(e.openBlock(),e.createElementBlock("div",{key:D.index,class:"mrp-page-holder","data-page":D.index+1},null,8,hs))),128)),e.unref(Re).padBottomPx>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:"mrp-spacer-bottom",style:e.normalizeStyle({height:`${e.unref(Re).padBottomPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0)],4)],4)),!s.value&&!i.value&&l.value&&M.value>0&&t.emptyState?(e.openBlock(),e.createBlock(Qt,{key:4,title:e.unref(Ze).title??e.unref(B).empty,description:e.unref(Ze).description??e.unref(B).emptyDescription},null,8,["title","description"])):e.createCommentVNode("",!0)],544),e.unref(ae).thumbnails&&c.value&&M.value>0?(e.openBlock(),e.createElementBlock("aside",{key:0,ref_key:"thumbsRef",ref:u,class:"mrp-thumbs",onScrollPassive:C[14]||(C[14]=(...D)=>e.unref(fe).onScroll&&e.unref(fe).onScroll(...D))},[e.unref(fe).windowRange.value.padTopPx>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mrp-thumb-spacer",style:e.normalizeStyle({height:`${e.unref(fe).windowRange.value.padTopPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(fe).visibleThumbs.value,D=>(e.openBlock(),e.createElementBlock("button",{key:D.index,class:e.normalizeClass(["mrp-thumb",{"mrp-thumb-active":D.index+1===f.value}]),type:"button","aria-label":`${e.unref(B).thumbnails} · ${e.unref(B).pageInfo.replace("{cur}",String(D.index+1)).replace("{total}",String(M.value))}`,"aria-current":D.index+1===f.value?"page":void 0,style:e.normalizeStyle({height:`${D.height+20}px`}),onClick:ee=>ie(D.index+1)},[e.createElementVNode("span",{class:"mrp-thumb-box","data-thumb":D.index+1,style:e.normalizeStyle({height:`${D.height}px`})},null,12,ys),e.createElementVNode("span",ws,e.toDisplayString(D.index+1),1)],14,bs))),128)),e.unref(fe).windowRange.value.padBottomPx>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:"mrp-thumb-spacer",style:e.normalizeStyle({height:`${e.unref(fe).windowRange.value.padBottomPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0)],544)):e.createCommentVNode("",!0)]),M.value>0?(e.openBlock(),e.createElementBlock("footer",xs,[e.createElementVNode("div",ks,[Qe.value&&e.unref(U)?(e.openBlock(),e.createElementBlock("button",{key:0,class:"mrp-calculation-toggle",type:"button","aria-label":_e.value.calculationTitle,onClick:Ln},[C[15]||(C[15]=e.createElementVNode("span",{"aria-hidden":"true"},"∑",-1)),e.createTextVNode(e.toDisplayString(_e.value.calculationTitle),1),e.unref(et).result.value?(e.openBlock(),e.createElementBlock("strong",Cs,e.toDisplayString(e.unref(et).result.value.formatted),1)):e.createCommentVNode("",!0)],8,Es)):e.createCommentVNode("",!0)]),e.createVNode(Et,{"page-count":M.value,"current-page":f.value,messages:e.unref(B),busy:s.value||w.value||e.unref(O).saving.value,onGoto:ie},null,8,["page-count","current-page","messages","busy"])])):e.createCommentVNode("",!0),e.createElementVNode("div",Ss,[e.renderSlot(p.$slots,"default",{},void 0,!0)]),e.unref(ke)?(e.openBlock(),e.createElementBlock("div",Ns,[C[16]||(C[16]=e.createElementVNode("div",null,"mach-report debug",-1)),e.createElementVNode("div",null,"pages: "+e.toDisplayString(e.unref(ke).pages)+" | window: ["+e.toDisplayString(e.unref(ke).window)+"]",1),e.createElementVNode("div",null,"zoom: "+e.toDisplayString(e.unref(ke).zoom)+" | load: "+e.toDisplayString(e.unref(ke).loadMs),1),e.createElementVNode("div",null,"plan: "+e.toDisplayString(e.unref(ke).planKB)+"KB",1)])):e.createCommentVNode("",!0)],6))}}),$n=q._export_sfc(Bs,[["__scopeId","data-v-7b74ffd9"]]),Is=Object.freeze(Object.defineProperty({__proto__:null,default:$n},Symbol.toStringTag,{value:"Module"}));exports.DEFAULT_CALCULATION_MESSAGES=Ct;exports.DEFAULT_MESSAGES=wn;exports.DEFAULT_THEME=xn;exports.MachReportError=le;exports.PlanLoadError=je;exports.REPORT_EXPORT_FORMATS=Ye;exports.REPORT_PREVIEW_TOOLS=wt;exports.ReportPagination=Et;exports.ReportParamPanel=bn;exports.ReportPreview=$n;exports.ReportPreview$1=Is;exports.ReportToolbar=fn;exports.SILENT_LOGGER=Al;exports.buildPrintDocument=sn;exports.buildWordHtml=ya;exports.cloneReportSnapshot=ce;exports.createDefaultPdfExporter=vn;exports.createFetchRequest=ga;exports.createReportStoragePreferences=Zl;exports.defineMachReportConfig=kn;exports.defineMachReportPreset=Tl;exports.joinReportIds=pa;exports.normalizeReportIds=kt;exports.normalizeReportLoadError=gn;exports.printPlans=ba;exports.provideMachReportConfig=Ol;exports.resolveCalculationMessages=yn;exports.resolveConfig=En;exports.themeToCssVars=Cn;exports.toErrorDetail=pn;exports.useMachReportConfig=Sn;exports.usePageWindow=rn;exports.usePrintExport=un;exports.useZoom=ln;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const t=require("vue"),v=["width","height"],c=["d"],s=t.defineComponent({__name:"ReportIcon",props:{name:{},size:{}},setup(e){const h={search:"m15.5 15.5 4.5 4.5M18 10.5a7.5 7.5 0 1 1-15 0 7.5 7.5 0 0 1 15 0Z",close:"m6 6 12 12M6 18 18 6","chevron-down":"m6 9 6 6 6-6","chevron-up":"m6 15 6-6 6 6","chevron-left":"m15 6-6 6 6 6","chevron-right":"m9 6 6 6-6 6",download:"M12 3v12m-5-5 5 5 5-5M4 16v4h16v-4",upload:"M12 16V4m-5 5 5-5 5 5M4 16v4h16v-4",print:"M7 8V3h10v5M7 17H4V9h16v8h-3M7 14h10v7H7v-7m10-2h.01",external:"M14 3h7v7m0-7L10 14M11 3H3v18h18v-8",settings:"M3 6h18M3 12h18M3 18h18M8 3v6m8 0v6M9 15v6",grid:"M3 3h18v18H3V3m6 0v18m6-18v18M3 9h18M3 15h18",fit:"M8 5H3v14h5m8-14h5v14h-5M7 12h10m-7-3-3 3 3 3m4-6 3 3-3 3",columns:"M3 4h18v16H3V4m6 0v16m6-16v16M3 9h18","arrow-right":"M4 12h16m-6-6 6 6-6 6",file:"M14 3H5v18h14V8l-5-5Zm0 0v5h5M8 12h8m-8 4h6"};return(o,n)=>(t.openBlock(),t.createElementBlock("svg",{width:e.size??16,height:e.size??16,viewBox:"0 0 24 24",fill:"none","aria-hidden":"true",focusable:"false"},[t.createElementVNode("path",{d:h[e.name],stroke:"currentColor","stroke-width":"1.65","stroke-linecap":"round","stroke-linejoin":"round"},null,8,c)],8,v))}}),m=(e,h)=>{const o=e.__vccOpts||e;for(const[n,r]of h)o[n]=r;return o};exports._export_sfc=m;exports._sfc_main=s;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { defineComponent as r, openBlock as v, createElementBlock as m, createElementVNode as s } from "vue";
|
|
2
|
+
const c = ["width", "height"], i = ["d"], a = /* @__PURE__ */ r({
|
|
3
|
+
__name: "ReportIcon",
|
|
4
|
+
props: {
|
|
5
|
+
name: {},
|
|
6
|
+
size: {}
|
|
7
|
+
},
|
|
8
|
+
setup(e) {
|
|
9
|
+
const t = {
|
|
10
|
+
search: "m15.5 15.5 4.5 4.5M18 10.5a7.5 7.5 0 1 1-15 0 7.5 7.5 0 0 1 15 0Z",
|
|
11
|
+
close: "m6 6 12 12M6 18 18 6",
|
|
12
|
+
"chevron-down": "m6 9 6 6 6-6",
|
|
13
|
+
"chevron-up": "m6 15 6-6 6 6",
|
|
14
|
+
"chevron-left": "m15 6-6 6 6 6",
|
|
15
|
+
"chevron-right": "m9 6 6 6-6 6",
|
|
16
|
+
download: "M12 3v12m-5-5 5 5 5-5M4 16v4h16v-4",
|
|
17
|
+
upload: "M12 16V4m-5 5 5-5 5 5M4 16v4h16v-4",
|
|
18
|
+
print: "M7 8V3h10v5M7 17H4V9h16v8h-3M7 14h10v7H7v-7m10-2h.01",
|
|
19
|
+
external: "M14 3h7v7m0-7L10 14M11 3H3v18h18v-8",
|
|
20
|
+
settings: "M3 6h18M3 12h18M3 18h18M8 3v6m8 0v6M9 15v6",
|
|
21
|
+
grid: "M3 3h18v18H3V3m6 0v18m6-18v18M3 9h18M3 15h18",
|
|
22
|
+
fit: "M8 5H3v14h5m8-14h5v14h-5M7 12h10m-7-3-3 3 3 3m4-6 3 3-3 3",
|
|
23
|
+
columns: "M3 4h18v16H3V4m6 0v16m6-16v16M3 9h18",
|
|
24
|
+
"arrow-right": "M4 12h16m-6-6 6 6-6 6",
|
|
25
|
+
file: "M14 3H5v18h14V8l-5-5Zm0 0v5h5M8 12h8m-8 4h6"
|
|
26
|
+
};
|
|
27
|
+
return (h, o) => (v(), m("svg", {
|
|
28
|
+
width: e.size ?? 16,
|
|
29
|
+
height: e.size ?? 16,
|
|
30
|
+
viewBox: "0 0 24 24",
|
|
31
|
+
fill: "none",
|
|
32
|
+
"aria-hidden": "true",
|
|
33
|
+
focusable: "false"
|
|
34
|
+
}, [
|
|
35
|
+
s("path", {
|
|
36
|
+
d: t[e.name],
|
|
37
|
+
stroke: "currentColor",
|
|
38
|
+
"stroke-width": "1.65",
|
|
39
|
+
"stroke-linecap": "round",
|
|
40
|
+
"stroke-linejoin": "round"
|
|
41
|
+
}, null, 8, i)
|
|
42
|
+
], 8, c));
|
|
43
|
+
}
|
|
44
|
+
}), l = (e, t) => {
|
|
45
|
+
const h = e.__vccOpts || e;
|
|
46
|
+
for (const [o, n] of t)
|
|
47
|
+
h[o] = n;
|
|
48
|
+
return h;
|
|
49
|
+
};
|
|
50
|
+
export {
|
|
51
|
+
a as _,
|
|
52
|
+
l as a
|
|
53
|
+
};
|