@agile-team/mach-report 2.7.0 → 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +0,0 @@
1
- "use strict";var Qn=Object.create;var At=Object.defineProperty;var _n=Object.getOwnPropertyDescriptor;var ea=Object.getOwnPropertyNames;var ta=Object.getPrototypeOf,na=Object.prototype.hasOwnProperty;var aa=(t,n,o,a)=>{if(n&&typeof n=="object"||typeof n=="function")for(let l of ea(n))!na.call(t,l)&&l!==o&&At(t,l,{get:()=>n[l],enumerable:!(a=_n(n,l))||a.enumerable});return t};var it=(t,n,o)=>(o=t!=null?Qn(ta(t)):{},aa(n||!t||!t.__esModule?At(o,"default",{value:t,enumerable:!0}):o,t));const e=require("vue"),K=require("@agile-team/mach-report"),Ut=require("./page-window-index-DEjnM6IB.cjs"),X=require("./progress-KvhwXZ1Q.cjs"),Gt=require("./render-plan-CckPEQyf.cjs"),ue=require("./_plugin-vue_export-helper-BHFhmbuH.cjs"),Pe=require("./plugin-9t_ZFwhz.cjs");function bt(t){return t==null?[]:Array.isArray(t)?t.map(String).filter(n=>n!==""):String(t).split(",").map(n=>n.trim()).filter(n=>n!=="")}function oa(t){return bt(t).join(",")}class qe extends Error{constructor(n){super(n),this.name="PlanLoadError"}}function ra(t={}){const{baseUrl:n="",headers:o,credentials:a,timeoutMs:l=3e4}=t,r=n.replace(/\/+$/,"");return async({url:s,method:i,params:m,signal:g})=>{let u=`${r}${s}`;if(m&&Object.keys(m).length>0){const d=u.indexOf("#"),P=d>=0?u.slice(d):"",$=d>=0?u.slice(0,d):u,D=$.indexOf("?"),M=D>=0?$.slice(0,D):$,V=new URLSearchParams(D>=0?$.slice(D+1):"");for(const[A,H]of Object.entries(m))V.set(A,H);u=`${M}?${V}${P}`}const c=(d,P)=>{const $=new qe(d);return Object.defineProperty($,"cause",{value:P,configurable:!0,writable:!0}),$};if(g?.aborted)throw c(`请求已取消: ${s}`,g.reason);const p=new AbortController;let v;const y=()=>{p.signal.aborted||(v="external",p.abort(g?.reason))};g?.addEventListener("abort",y,{once:!0});const h=setTimeout(()=>{p.signal.aborted||(v="timeout",p.abort())},l);try{const d=await fetch(u,{method:i.toUpperCase(),headers:{Accept:"application/json",...o},credentials:a,signal:p.signal});if(!d.ok)throw new qe(`HTTP ${d.status} ${s}`);return await d.json()}catch(d){throw v==="timeout"?c(`请求超时(${l}ms): ${s}`,d):v==="external"?c(`请求已取消: ${s}`,d):d instanceof qe?d:c(`请求失败(${s}): ${d instanceof Error?d.message:String(d)}`,d)}finally{clearTimeout(h),g?.removeEventListener("abort",y)}}}function Jt(t,n,o={}){const a=o.pxPerMm??3.7795275590551185,l=e.computed(()=>Math.max(0,e.unref(o.gapPx)??18)),r=e.ref(0),s=e.ref(800),i=e.computed(()=>{const d=t.value?.pages??[];return Ut.createPageWindowIndex(d.map(P=>P.pageHeightMm*a),l.value)}),m=e.computed(()=>{let d=0;for(const P of t.value?.pages??[])d=Math.max(d,P.pageWidthMm*a);return{w:d,h:i.value.totalHeightPx}}),g=e.computed(()=>i.value.window(s.value/n.value,r.value/n.value,e.unref(o.overscan)??1)),u=e.computed(()=>{const d=t.value;if(!d)return[];const{start:P,end:$}=g.value;return d.pages.slice(P,$+1).map((D,M)=>({page:D,index:P+M}))});let c=0,p=!1;function v(d){d&&(r.value=d.scrollTop,s.value=d.clientHeight||800)}function y(d,P){return $=>{c||p||(c=requestAnimationFrame(()=>{if(c=0,p||(v($),P.value<=0))return;const D=Math.max(0,$.scrollTop+32)/n.value;d.value=Math.min(P.value,i.value.pageAt(D)+1)}))}}function h(){p=!0,c&&cancelAnimationFrame(c),c=0}return e.onScopeDispose(h),{contentSize:m,windowRange:g,visiblePages:u,makeScrollHandler:y,refreshViewport:v,pageOffsetPx:d=>i.value.offsetAt(d),destroy:h}}const zt=96/25.4;function la(t){const n=new WeakMap,o=e.ref(0);let a,l=0,r=0,s=!1;function i(){l++,r&&cancelAnimationFrame(r),r=0}function m(h,d,P,$){return!s&&d===l&&t.plan.value===P&&t.root.value===$&&$.contains(h.holder)&&Number(h.holder.dataset.page)===h.index+1}function g(h){const{holder:d,page:P}=h;n.delete(d),d.style.width=`${P.pageWidthMm*zt}px`,d.style.height=`${P.pageHeightMm*zt}px`,d.setAttribute("aria-busy","true");const $=d.ownerDocument.createElement("div");$.className="mrp-page-loading";const D=d.ownerDocument.createElement("span");D.textContent=t.loading(),D.style.transform=`scale(${1/Math.max(1e-4,t.zoom())})`,$.append(D),d.replaceChildren($)}function u(h){const d=n.get(h.holder);return!d||d.page!==h.page||d.element.parentElement!==h.holder?!1:(d.query!==t.query()&&(t.clear(d.element),t.highlight(d.element),d.query=t.query()),!0)}function c(h,d,P,$){if(m(h,d,P,$))try{const D=K.renderPage(h.page,96,{},h.holder.ownerDocument);if(t.highlight(D),!m(h,d,P,$))return;h.holder.replaceChildren(D),h.holder.removeAttribute("aria-busy"),n.set(h.holder,{page:h.page,element:D,query:t.query()}),t.mounted(h.holder),t.ready()}catch(D){if(!m(h,d,P,$))return;h.holder.removeAttribute("aria-busy");const M=h.holder.ownerDocument.createElement("div");M.className="mrp-page-render-error",M.setAttribute("role","alert"),M.textContent=D instanceof Error?D.message:String(D),h.holder.replaceChildren(M),t.error(D)}}function p(h,d,P,$){h.length&&(r=requestAnimationFrame(()=>{if(d!==l||s)return;r=0;const D=h.shift();D&&c(D,d,P,$),d===l&&t.plan.value===P&&t.root.value===$&&p(h,d,P,$)}))}function v(){i();const h=t.plan.value,d=t.root.value;if(s||!h||!d){a=void 0;return}const P=l,$=a?.plan===h?a.index:t.priority();a=void 0;const D=[];d.querySelectorAll(".mrp-page-holder").forEach(A=>{const H=Number(A.dataset.page)-1,q=h.pages[H];if(!q)return;const U={holder:A,page:q,index:H};u(U)||(g(U),D.push(U))});const M=D.findIndex(A=>A.index===$),V=M<0?void 0:D.splice(M,1)[0];V&&c(V,P,h,d),t.ready(),p(D,P,h,d)}function y(h){s||!t.plan.value||(a={plan:t.plan.value,index:h},o.value++)}return e.watch([t.plan,t.root,t.pages,t.priority,t.focusToken,t.query,t.zoom,t.loading,o],v,{flush:"post",immediate:!0}),e.onScopeDispose(()=>{s=!0,a=void 0,i()}),{prioritize:y,cancel:i}}function Zt(t){const n=e.ref(1),o=e.ref("fit");let a=0;function l(){a&&cancelAnimationFrame(a),a=0}function r(){l(),a=requestAnimationFrame(()=>{if(a=0,o.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")o.value="fit",r();else{if(!Number.isFinite(i))return;l(),o.value="raw",n.value=Math.min(3,Math.max(.3,i/100))}}return e.getCurrentScope()&&e.onScopeDispose(l),{zoom:n,zoomMode:o,applyFitZoom:r,setZoom:s}}let sa=0;function qt(t,n){const o=new AbortController;let a={taskId:`mr-output-${Date.now().toString(36)}-${++sa}`,kind:t,stage:t==="print"?"print":"encode",status:"running",cancellable:!0};function l(){try{n?.(Object.freeze({...a}))}catch{}}return{controller:o,get task(){return a},start:l,update(r,s,i){o.signal.aborted||a.status!=="running"||(a={...a,stage:r,completed:s,total:i},l())},finish(r="completed"){a.status==="running"&&(a={...a,status:r,cancellable:!1},l(),r==="cancelled"&&o.abort())}}}const Ie=8;function Ve(){return new Promise(t=>setTimeout(t,0))}function je(t){return`p${t.pageWidthMm}x${t.pageHeightMm}`.replace(/[.+]/g,"_")}function Ke(t){const n=new Map;return t.pages.forEach(l=>{n.has(je(l))||n.set(je(l),l)}),`<!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(l=>`@page ${je(l)}{size:${l.pageWidthMm}mm ${l.pageHeightMm}mm;margin:0;}`).join(`
5
- `)}
6
- body{margin:0;background:#fff;}`}</style></head><body>`}function Ue(t){const n=K.renderPage(t,96,{},document);return n.style.page=je(t),n.outerHTML}function Yt(t){return{head:Ke(t),pageChunks:t.pages.map(Ue)}}async function ia(t,n={}){const o={schemaVersion:"mach-report-batch-print",pages:t.flatMap(s=>s.pages)};if(o.pages.length===0)return;const a=Ke(o),l=document.createElement("iframe");l.style.cssText="position:fixed;right:0;bottom:0;width:0;height:0;border:0;visibility:hidden;",document.body.appendChild(l);let r=!1;try{const s=l.contentDocument;s.open(),s.write(a);for(let i=0;i<o.pages.length;i++)X.assertOutputActive(n.signal),s.write(Ue(o.pages[i])),i%Ie===Ie-1&&(X.notifyOutputProgress(n,i+1,o.pages.length),await Ve());s.write("</body></html>"),s.close(),await Ve(),X.notifyOutputProgress(n,o.pages.length,o.pages.length),r=!0,l.contentWindow?.focus(),l.contentWindow?.print()}catch(s){if(n.signal?.aborted)throw s;n.onError?.(s instanceof Error?`批量打印失败: ${s.message}`:"批量打印失败")}finally{r?setTimeout(()=>l.remove(),6e4):l.remove()}}function Xt(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 ca(t){const{head:n,pageChunks:o}=Yt(t);return{html:`${Xt(n)}${o.join("")}</body></html>`,filename:"mach-report.doc"}}function Qt(t,n){let o=null,a=!1,l=!1,r=0;const s=new Map;let i=null;const m=new Map;let g=null,u=null,c=null,p=null,v=null;function y(w,S){return!l&&t.value===w&&r===S}function h(){if(l)return;const w=[...s.values()].reverse().find(S=>y(S.plan,S.epoch))?.format??null;w!==g&&(g=w,n.onBusy?.(w))}function d(w,S,x){const L={};return s.set(L,{plan:w,epoch:S,format:x,run:qt("export",n.onTask)}),s.get(L).run.start(),h(),L}function P(w){s.get(w)?.run.finish(),s.delete(w),h()}function $(){for(const[w,S]of m)y(S.plan,S.epoch)||(w.close(),m.delete(w))}function D(){for(const w of s.values())w.run.finish("cancelled");i?.finish("cancelled"),r++,V(),h(),$()}const M=e.watch(t,D,{flush:"sync"});function V(){o?.remove(),o=null}function A(){D(),l=!0,r++,M(),V(),$(),s.clear(),n.onPrinting?.(!1)}function H(w,S){const x=URL.createObjectURL(w);setTimeout(()=>URL.revokeObjectURL(x),1e4);const L=document.createElement("a");L.href=x,L.download=S,L.click()}function q(w,S,x,L,W){x.update("download"),y(w,S)&&!x.controller.signal.aborted&&H(L,W)}async function U(w,S,x,L){const W=w.contentDocument;W.open(),W.write(Ke(S));for(let G=0;G<S.pages.length;G++)if(L.controller.signal.aborted||(W.write(Ue(S.pages[G])),L.update("print",G+1,S.pages.length),G%Ie===Ie-1&&await Ve(),w!==o))return!1;return W.write("</body></html>"),W.close(),await Ve(),!(!y(S,x)||w!==o)}async function b(){if(a)return;const w=t.value;if(l||!w||w.pages.length===0)return;const S=r;a=!0;const x=qt("print",n.onTask);i=x,x.start(),n.onPrinting?.(!0),V(),o=document.createElement("iframe"),o.style.cssText="position:fixed;right:0;bottom:0;width:0;height:0;border:0;visibility:hidden;",document.body.appendChild(o);const L=o;try{if(!y(w,S)||x.controller.signal.aborted){V();return}if(!await U(L,w,S,x))return;L.contentWindow?.focus(),L.contentWindow?.print()}catch{x.finish("failed"),L===o&&V(),y(w,S)&&n.onError("调用打印失败,请改用导出 PDF","print")}finally{x.finish(),i===x&&(i=null),a=!1,l||n.onPrinting?.(!1)}}function I(w,S,x){return{signal:x.controller.signal,onDiagnostic:L=>{y(w,S)&&!x.controller.signal.aborted&&n.onDiagnostic?.(L)},onProgress:(L,W)=>x.update("encode",L,W)}}function C(w,S,x){if(u?.plan===w&&u.epoch===S)return u.promise;const L=Promise.resolve().then(()=>{if(!y(w,S))throw new Error("报表已切换或卸载");return X.waitForOutput(n.getPdfExporter()(w,W=>{y(w,S)&&n.onWarning?.(W)},x?I(w,S,x):void 0),x?.controller.signal)}).finally(()=>{u?.promise===L&&(u=null)});return u={plan:w,epoch:S,promise:L},L}async function k(){const w=t.value;if(l||!w||w.pages.length===0)return;const S=r;if(c?.plan===w&&c.epoch===S)return c.promise;const x=d(w,S,"PDF"),L=(async()=>{try{const W=s.get(x).run,G=await C(w,S,W);if(!y(w,S))return;q(w,S,W,new Blob([G],{type:"application/pdf"}),"mach-report.pdf")}catch(W){s.get(x)?.run.finish("failed"),y(w,S)&&n.onError(W instanceof Error?`PDF 导出失败: ${W.message}`:"PDF 导出失败","pdf")}finally{P(x),c?.token===x&&(c=null)}})();return c={plan:w,epoch:S,promise:L,token:x},L}async function B(){const w=t.value;if(l||!w||w.pages.length===0)return;const S=r;if(p?.plan===w&&p.epoch===S)return p.promise;const x={...n.getXlsxOptions?.()},L=d(w,S,"Excel"),W=(async()=>{try{const{renderPlanToXlsx:G}=await import("@agile-team/mach-report/xlsx");if(!y(w,S))return;const te=s.get(L).run,{buffer:ae,warnings:ge}=await X.waitForOutput(G(w,{...x,...I(w,S,te)}),te.controller.signal);if(!y(w,S)||(ge.length>0&&n.onWarning?.(`Excel 导出有 ${ge.length} 条提示:${ge.slice(0,2).join(";")}`),!y(w,S)))return;q(w,S,te,new Blob([ae],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}),"mach-report.xlsx")}catch(G){s.get(L)?.run.finish("failed"),y(w,S)&&n.onError(G instanceof Error?`Excel 导出失败: ${G.message}`:"Excel 导出失败","export")}finally{P(L),p?.token===L&&(p=null)}})();return p={plan:w,epoch:S,promise:W,token:L},W}async function N(){const w=t.value;if(l||!w||w.pages.length===0)return;const S=r;if(v?.plan===w&&v.epoch===S)return v.promise;const x=d(w,S,"图片"),L=(async()=>{try{const W=s.get(x).run,{blobs:G}=await X.waitForOutput(K.renderPlanToImages(w,{...I(w,S,W),dpr:Math.min(2,typeof devicePixelRatio=="number"?devicePixelRatio:1)}),W.controller.signal);if(!y(w,S))return;G.forEach((te,ae)=>{q(w,S,W,te,G.length>1?`mach-report-page-${ae+1}.png`:"mach-report.png")})}catch(W){s.get(x)?.run.finish("failed"),y(w,S)&&n.onError(W instanceof Error?`图片导出失败: ${W.message}`:"图片导出失败","export")}finally{P(x),v?.token===x&&(v=null)}})();return v={plan:w,epoch:S,promise:L,token:x},L}async function T(w){const S=t.value;if(l||!S||!S.pages.length)return;const x=r,L=d(S,x,w==="word"?"Word":"HTML"),W=s.get(L).run;try{const G=[];for(const[ge,Te]of S.pages.entries()){if(!y(S,x))return;G.push(Ue(Te)),W.update("encode",ge+1,S.pages.length),ge%Ie===Ie-1&&await Ve()}if(!y(S,x))return;const te=Ke(S),ae=`${w==="word"?Xt(te):te}${G.join("")}</body></html>`;q(S,x,W,new Blob([ae],{type:w==="word"?"application/msword;charset=utf-8":"text/html;charset=utf-8"}),w==="word"?"mach-report.doc":"mach-report.html")}catch(G){W.finish("failed"),y(S,x)&&n.onError(G instanceof Error?`导出失败: ${G.message}`:"导出失败","export")}finally{P(L)}}async function j(){await T("word")}async function O(w){const S=t.value;if(!(l||!S||S.pages.length===0)){if(w==="pdf"){await k();return}if(w==="xlsx"||w==="excel"){await B();return}if(w==="png"||w==="image"){await N();return}if(w==="word"||w==="doc"){await j();return}if(w!=="html"){n.onError(`不支持的导出格式:${w}`,"export");return}await T("html")}}function z(){const w=t.value;if(l||!w||w.pages.length===0)return;const S=r,x=window.open("","_blank");if(!x){n.onError("浏览器拦截了弹窗,请允许弹窗后重试","pdf");return}m.set(x,{plan:w,epoch:S});const L=d(w,S,"PDF");C(w,S,s.get(L).run).then(W=>{if(!y(w,S)||x.closed){m.delete(x)&&x.close();return}const G=URL.createObjectURL(new Blob([W],{type:"application/pdf"}));setTimeout(()=>URL.revokeObjectURL(G),6e4);const te=x.document;te.title="PDF 预览",te.documentElement.style.height="100%",te.body.style.cssText="margin:0;height:100%;";const ae=te.createElement("iframe");ae.title="PDF 预览",ae.style.cssText="display:block;width:100%;height:100%;border:0;",ae.src=G,te.body.replaceChildren(ae),m.delete(x)}).catch(W=>{s.get(L)?.run.finish("failed"),x.close(),m.delete(x),y(w,S)&&n.onError(W instanceof Error?`PDF 预览失败: ${W.message}`:"PDF 预览失败","pdf")}).finally(()=>P(L))}return{print:b,exportAs:O,exportImages:N,exportWord:j,openPdfWindow:z,invalidatePending:D,cancel:D,releasePrintFrame:V,dispose:A}}const _t="mrp-hit";function ua(t){t.querySelectorAll(`mark.${_t}`).forEach(o=>{const a=o.parentNode;if(a){for(;o.firstChild;)a.insertBefore(o.firstChild,o);o.remove(),a.normalize()}})}function da(t,n){const o=n.trim();if(!o)return 0;const a=o.toLowerCase(),l=document.createTreeWalker(t,NodeFilter.SHOW_TEXT,{acceptNode(i){const m=i.parentElement;return!m||m.closest("mark")||/^(SCRIPT|STYLE)$/.test(m.tagName)?NodeFilter.FILTER_REJECT:(i.nodeValue??"").toLowerCase().includes(a)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT}}),r=[];for(let i=l.nextNode();i;i=l.nextNode())r.push(i);let s=0;for(const i of r){const m=i.nodeValue??"",g=m.toLowerCase(),u=i.parentElement;if(!u)continue;const c=document.createDocumentFragment();let p=0,v=g.indexOf(a);for(;v>=0;){v>p&&c.appendChild(document.createTextNode(m.slice(p,v)));const y=document.createElement("mark");y.className=_t,y.textContent=m.slice(v,v+o.length),c.appendChild(y),s++,p=v+o.length,v=g.indexOf(a,p)}p<m.length&&c.appendChild(document.createTextNode(m.slice(p))),u.replaceChild(c,i)}return s}const fa=new Set(["line","rect","ellipse","chart"]);function*ma(t){for(const n of t.cells??[])for(const o of n??[])yield o?.text??"",yield*o?.children??[]}function*pa(t){if(Gt.isRichText(t))for(const n of t.richParagraphs)for(const o of n.segments??[])yield(o.kind==="field"?o.field:o.text)??"";else t.lines?.length?yield*t.lines:yield t.text??""}function*ga(t){const n=[t.values()];for(;n.length>0;){const o=n[n.length-1].next();if(o.done){n.pop();continue}const a=o.value;if(typeof a=="string"){yield a;continue}yield"",!Gt.isImageBackedComponent(a)&&(a.kind==="text"?n.push(pa(a)):a.grid?n.push(ma(a.grid)):fa.has(a.kind)||(yield a.fallbackText??""))}}function*va(t){for(let n=0;n<t.pages.length;n++){for(const o of ga(t.pages[n].components))yield{text:o,pageIndex:n};yield{text:"",pageIndex:n}}}function ha(t,n){const o=t.toLowerCase();let a=0;for(let l=o.indexOf(n);l>=0;l=o.indexOf(n,l+n.length))a++;return a}function ba(t){const{plan:n,gotoPage:o,highlight:a,clearHighlights:l}=t,r=e.ref(!1),s=e.ref(""),i=e.ref(0),m=e.ref(0),g=e.ref(!1);let u=[];const c=e.computed(()=>{if(m.value===0)return null;const M=i.value;let V=0,A=u.length-1;for(;V<A;){const q=V+A>>>1;u[q].cumulative<=M?V=q+1:A=q}const H=u[V];return H?{pageIndex:H.pageIndex,occurrence:M-(u[V-1]?.cumulative??0)}:null});let p=null,v=null,y=0;function h(){y++,p&&clearTimeout(p),v&&clearTimeout(v),p=v=null,g.value=!1}function d(M){s.value=M,i.value=0,m.value=0,u=[],g.value=!1;const V=M.trim().toLowerCase(),A=n.value;if(!V||!A)return;g.value=!0;const H=y,q=va(A),U=[];let b=0;function I(){if(v=null,H!==y||A!==n.value)return;const C=performance.now();let k=0;for(;k<5e3&&performance.now()-C<4;){const B=q.next();if(B.done){u=U,m.value=b,g.value=!1,u[0]&&o(u[0].pageIndex+1);return}const N=ha(B.value.text,V);if(N>0){b+=N;const T=U[U.length-1];T?.pageIndex===B.value.pageIndex?T.cumulative=b:U.push({pageIndex:B.value.pageIndex,cumulative:b})}k++}v=setTimeout(I,0)}I()}function P(M){if(h(),s.value=M,i.value=m.value=0,u=[],!M.trim()){d("");return}g.value=!0,p=setTimeout(()=>{p=null,d(M)},Math.max(0,e.unref(t.debounceMs)??200))}function $(M){const V=m.value;if(V===0||g.value)return;i.value=(i.value+M+V)%V;const A=c.value;A&&o(A.pageIndex+1)}function D(){h(),s.value="",i.value=m.value=0,u=[]}return e.watch(n,D,{flush:"sync"}),e.onScopeDispose(D),{visible:r,query:s,matchIndex:i,matchCount:m,activeMatch:c,searching:g,toggle:()=>{r.value=!r.value},onInput:P,onNav:$,apply:M=>{s.value.trim()&&a(M,s.value.trim())},clear:M=>{l(M)},reset:D}}function ya(t,n){const o=e.computed(()=>{if(t.value)return!0;if(typeof location>"u")return!1;try{return new URLSearchParams(location.search).get("mrp-debug")==="1"}catch{return!1}}),a=e.computed(()=>!o.value||!n.plan.value?0:Math.round(JSON.stringify(n.plan.value).length/1024)),l=e.computed(()=>!o.value||!n.plan.value?null:{pages:n.pageCount.value,window:`${n.windowRange.value.start}-${n.windowRange.value.end}`,zoom:`${Math.round(n.zoom.value*100)}%`,loadMs:`${n.loadMs.value}ms`,planKB:a.value});return{enabled:o,debugStats:l}}function wa(t,n){const{thumbsRoot:o,visible:a,renderThumbCanvas:l}=n,r=e.ref(0),s=e.ref(800),i=e.computed(()=>(t.value?.pages??[]).map($=>Math.round($.pageHeightMm/$.pageWidthMm*116))),m=e.computed(()=>Ut.createPageWindowIndex(i.value.map($=>$+20),8)),g=e.computed(()=>m.value.window(s.value,r.value,1)),u=e.computed(()=>{if(!a.value)return[];const{start:$,end:D}=g.value;return i.value.slice($,D+1).map((M,V)=>({index:$+V,height:M}))});let c=0,p=0,v=!1;function y(){const $=o.value;$&&(r.value=$.scrollTop,s.value=$.clientHeight||800)}function h(){v||p||(p=requestAnimationFrame(()=>{p=0,y()}))}function d(){if(u.value,c&&cancelAnimationFrame(c),c=0,v||!a.value||!t.value||!o.value)return;y();const $=u.value,D=t.value,M=o.value;let V=0;function A(){if(c=0,!(v||!a.value||t.value!==D||o.value!==M)){for(let H=0;V<$.length&&H<2;H++,V++){const q=$[V].index,U=M.querySelector(`[data-thumb="${q+1}"]`);if(!U||U.childElementCount>0)continue;const b=l(q);b&&(b.style.width="100%",b.style.height="100%",b.style.display="block",U.appendChild(b))}V<$.length&&(c=requestAnimationFrame(A))}}c=requestAnimationFrame(A)}function P(){v=!0,c&&cancelAnimationFrame(c),p&&cancelAnimationFrame(p),c=p=0}return e.onScopeDispose(P),{schedule:d,destroy:P,onScroll:h,windowRange:g,visibleThumbs:u}}function xa(){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 ka(t){const n=e.ref(null),o=e.ref(null);function a(){n.value?.focus(),n.value?.select()}e.watch(t.visible,s=>{s&&e.nextTick(a)});function l(){t.close(),e.nextTick(()=>o.value?.focus())}function r(s){s.isComposing||s.keyCode===229||s.key!=="Enter"&&s.key!=="Escape"||(s.preventDefault(),s.stopPropagation(),s.key==="Escape"?l():t.navigate(s.shiftKey?-1:1))}return{input:n,toggle:o,focus:a,close:l,onKeydown:r}}const Ea=["aria-label"],Ca={class:"mrp-title"},Sa=["disabled"],Ia={class:"mrp-pageinfo"},Pa=["disabled"],Ba=["disabled"],$a={key:2,class:"mrp-search"},Ra=["placeholder","aria-label","value"],Da={key:0,class:"mrp-search-count",role:"status"},Na=["disabled","aria-label"],Ma=["disabled","aria-label"],Va=["aria-label"],Ta=["aria-label","aria-pressed"],Fa=["aria-pressed"],Oa=["disabled"],La=["disabled"],Aa=["disabled"],za=["disabled"],qa=["disabled"],ja=["disabled"],Wa=["disabled"],Ha=["aria-label","aria-expanded"],Ka=e.defineComponent({__name:"ReportToolbar",props:{pageCount:{},currentPage:{},zoomMode:{},zoom:{},showExport:{type:Boolean},showPrint:{type:Boolean},showPdfWindow:{type:Boolean},messages:{},search:{},thumbsVisible:{type:Boolean},showImport:{type:Boolean},showSearch:{type:Boolean},showThumbnails:{type:Boolean},showZoom:{type:Boolean},exportFormats:{},showSettings:{type:Boolean},settingsOpen:{type:Boolean},busy:{type:Boolean}},emits:["goto","zoom","export","print","pdf-window","search-input","search-nav","search-toggle","thumbs-toggle","import-excel","settings-toggle"],setup(t,{expose:n,emit:o}){const a=t,l=o,r=ka({visible:()=>a.search.visible,navigate:g=>l("search-nav",g),close:()=>{a.search.visible&&l("search-toggle")}}),{input:s,toggle:i}=r;n({focusSearch:r.focus});function m(g,u,c){return g.replace("{cur}",String(u)).replace("{total}",String(c))}return(g,u)=>(e.openBlock(),e.createElementBlock("div",{class:"mrp-toolbar",role:"toolbar","aria-label":t.messages.title},[e.createElementVNode("span",Ca,e.toDisplayString(t.messages.title),1),t.pageCount>0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("button",{class:"mrp-nav",type:"button",disabled:t.currentPage<=1,onClick:u[0]||(u[0]=c=>g.$emit("goto",t.currentPage-1))},e.toDisplayString(t.messages.prevPage),9,Sa),e.createElementVNode("span",Ia,e.toDisplayString(m(t.messages.pageInfo,t.currentPage,t.pageCount)),1),e.createElementVNode("button",{class:"mrp-nav",type:"button",disabled:t.currentPage>=t.pageCount,onClick:u[1]||(u[1]=c=>g.$emit("goto",t.currentPage+1))},e.toDisplayString(t.messages.nextPage),9,Pa)],64)):e.createCommentVNode("",!0),u[23]||(u[23]=e.createElementVNode("span",{class:"mrp-spacer"},null,-1)),t.showImport?(e.openBlock(),e.createElementBlock("button",{key:1,class:"mrp-nav mrp-import-excel",type:"button",disabled:t.busy,onClick:u[2]||(u[2]=c=>g.$emit("import-excel"))},e.toDisplayString(t.messages.importExcel??"导入 Excel 模板"),9,Ba)):e.createCommentVNode("",!0),t.showSearch!==!1&&t.search.visible?(e.openBlock(),e.createElementBlock("div",$a,[e.createElementVNode("input",{ref_key:"searchInputRef",ref:s,class:"mrp-search-input",type:"text",placeholder:t.messages.searchPlaceholder,"aria-label":t.messages.search??t.messages.searchPlaceholder,value:t.search.query,onInput:u[3]||(u[3]=c=>g.$emit("search-input",c.target.value)),onKeydown:u[4]||(u[4]=(...c)=>e.unref(r).onKeydown&&e.unref(r).onKeydown(...c))},null,40,Ra),t.search.query?(e.openBlock(),e.createElementBlock("span",Da,e.toDisplayString(t.search.searching?t.messages.searching??"搜索中…":m(t.messages.matchInfo,t.search.matchCount>0?t.search.matchIndex+1:0,t.search.matchCount)),1)):e.createCommentVNode("",!0),e.createElementVNode("button",{class:"mrp-nav",type:"button",disabled:t.search.matchCount===0,"aria-label":t.messages.prevSearchMatch,onClick:u[5]||(u[5]=c=>g.$emit("search-nav",-1))},e.toDisplayString(t.messages.prevMatch),9,Na),e.createElementVNode("button",{class:"mrp-nav",type:"button",disabled:t.search.matchCount===0,"aria-label":t.messages.nextSearchMatch,onClick:u[6]||(u[6]=c=>g.$emit("search-nav",1))},e.toDisplayString(t.messages.nextMatch),9,Ma),e.createElementVNode("button",{class:"mrp-nav mrp-search-close",type:"button","aria-label":t.messages.closeSearch,onClick:u[7]||(u[7]=(...c)=>e.unref(r).close&&e.unref(r).close(...c))},"×",8,Va)])):e.createCommentVNode("",!0),t.showSearch!==!1?(e.openBlock(),e.createElementBlock("button",{key:3,ref_key:"searchToggleRef",ref:i,class:e.normalizeClass(["mrp-nav",{"mrp-active":t.search.visible}]),type:"button",title:"Ctrl+F","aria-label":t.messages.search??t.messages.searchPlaceholder,"aria-pressed":t.search.visible,onClick:u[8]||(u[8]=c=>g.$emit("search-toggle"))},[...u[21]||(u[21]=[e.createElementVNode("svg",{width:"13",height:"13",viewBox:"0 0 20 20",fill:"none","aria-hidden":"true"},[e.createElementVNode("circle",{cx:"8.5",cy:"8.5",r:"5.5",stroke:"currentColor","stroke-width":"1.6"}),e.createElementVNode("path",{d:"m13 13 4 4",stroke:"currentColor","stroke-width":"1.6","stroke-linecap":"round"})],-1)])],10,Ta)):e.createCommentVNode("",!0),t.showThumbnails!==!1?(e.openBlock(),e.createElementBlock("button",{key:4,class:e.normalizeClass(["mrp-nav",{"mrp-active":t.thumbsVisible}]),type:"button","aria-pressed":t.thumbsVisible,onClick:u[9]||(u[9]=c=>g.$emit("thumbs-toggle"))}," ▦ "+e.toDisplayString(t.messages.thumbnails),11,Fa)):e.createCommentVNode("",!0),t.showZoom!==!1?(e.openBlock(),e.createElementBlock("button",{key:5,class:e.normalizeClass(["mrp-nav",{"mrp-active":t.zoomMode==="fit"}]),type:"button",onClick:u[10]||(u[10]=c=>g.$emit("zoom","fit"))},e.toDisplayString(t.messages.fitWidth),3)):e.createCommentVNode("",!0),t.showZoom!==!1?(e.openBlock(),e.createElementBlock("button",{key:6,class:e.normalizeClass(["mrp-nav",{"mrp-active":t.zoomMode==="raw"&&Math.round(t.zoom*100)===100}]),type:"button",onClick:u[11]||(u[11]=c=>g.$emit("zoom",100))}," 100% ",2)):e.createCommentVNode("",!0),t.showZoom!==!1?(e.openBlock(),e.createElementBlock("button",{key:7,class:e.normalizeClass(["mrp-nav",{"mrp-active":t.zoomMode==="raw"&&Math.round(t.zoom*100)===150}]),type:"button",onClick:u[12]||(u[12]=c=>g.$emit("zoom",150))}," 150% ",2)):e.createCommentVNode("",!0),t.showExport&&(!t.exportFormats||t.exportFormats.includes("html"))?(e.openBlock(),e.createElementBlock("button",{key:8,class:"mrp-nav",type:"button",disabled:t.busy,onClick:u[13]||(u[13]=c=>g.$emit("export","html"))},e.toDisplayString(t.messages.exportHtml),9,Oa)):e.createCommentVNode("",!0),t.showExport&&(!t.exportFormats||t.exportFormats.includes("pdf"))?(e.openBlock(),e.createElementBlock("button",{key:9,class:"mrp-nav",type:"button",disabled:t.busy,onClick:u[14]||(u[14]=c=>g.$emit("export","pdf"))},e.toDisplayString(t.messages.exportPdf),9,La)):e.createCommentVNode("",!0),t.showExport&&(!t.exportFormats||t.exportFormats.includes("xlsx"))?(e.openBlock(),e.createElementBlock("button",{key:10,class:"mrp-nav",type:"button",disabled:t.busy,onClick:u[15]||(u[15]=c=>g.$emit("export","xlsx"))},e.toDisplayString(t.messages.exportExcel),9,Aa)):e.createCommentVNode("",!0),t.showExport&&(!t.exportFormats||t.exportFormats.includes("png"))?(e.openBlock(),e.createElementBlock("button",{key:11,class:"mrp-nav",type:"button",disabled:t.busy,onClick:u[16]||(u[16]=c=>g.$emit("export","png"))},e.toDisplayString(t.messages.exportImage),9,za)):e.createCommentVNode("",!0),t.showExport&&(!t.exportFormats||t.exportFormats.includes("word"))?(e.openBlock(),e.createElementBlock("button",{key:12,class:"mrp-nav",type:"button",disabled:t.busy,onClick:u[17]||(u[17]=c=>g.$emit("export","word"))},e.toDisplayString(t.messages.exportWord),9,qa)):e.createCommentVNode("",!0),t.showPrint?(e.openBlock(),e.createElementBlock("button",{key:13,class:"mrp-nav",type:"button",disabled:t.busy,onClick:u[18]||(u[18]=c=>g.$emit("print"))},e.toDisplayString(t.messages.print),9,ja)):e.createCommentVNode("",!0),t.showPdfWindow?(e.openBlock(),e.createElementBlock("button",{key:14,class:"mrp-nav",type:"button",disabled:t.busy,onClick:u[19]||(u[19]=c=>g.$emit("pdf-window"))},e.toDisplayString(t.messages.pdfWindow),9,Wa)):e.createCommentVNode("",!0),t.showSettings?(e.openBlock(),e.createElementBlock("button",{key:15,class:"mrp-nav mrp-settings-toggle",type:"button","aria-label":t.messages.settings,"aria-haspopup":"dialog","aria-expanded":!!t.settingsOpen,onClick:u[20]||(u[20]=c=>g.$emit("settings-toggle"))},[u[22]||(u[22]=e.createStaticVNode('<svg width="14" height="14" viewBox="0 0 20 20" fill="none" aria-hidden="true" data-v-249cf7b0><path d="M3 5h14M3 10h14M3 15h14" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" data-v-249cf7b0></path><circle cx="7" cy="5" r="2" fill="var(--mrp-toolbar-bg)" stroke="currentColor" stroke-width="1.5" data-v-249cf7b0></circle><circle cx="13" cy="10" r="2" fill="var(--mrp-toolbar-bg)" stroke="currentColor" stroke-width="1.5" data-v-249cf7b0></circle><circle cx="8" cy="15" r="2" fill="var(--mrp-toolbar-bg)" stroke="currentColor" stroke-width="1.5" data-v-249cf7b0></circle></svg>',1)),e.createTextVNode(" "+e.toDisplayString(t.messages.settings),1)],8,Ha)):e.createCommentVNode("",!0)],8,Ea))}}),en=ue._export_sfc(Ka,[["__scopeId","data-v-249cf7b0"]]),Ua=["aria-label"],Ga={class:"mrp-settings-header"},Ja=["aria-label"],Za={class:"mrp-settings-content"},Ya={key:0},Xa={class:"mrp-settings-option"},Qa=["checked","disabled"],_a={class:"mrp-settings-option"},eo=["value","disabled"],to={key:0},no=["checked","disabled","onChange"],ao={key:1,class:"mrp-settings-note"},oo={key:2,class:"mrp-settings-note"},ro=["disabled"],lo=e.defineComponent({__name:"ReportSettings",props:{available:{},enabled:{},messages:{},persistedEditing:{type:Boolean},busy:{type:Boolean},interaction:{}},emits:["change","reset","close","interaction"],setup(t,{emit:n}){const o=t,a=n,l=e.ref(null),r=e.ref(null);let s=null;const i=e.computed(()=>[{label:o.messages.settingsDisplay,tools:[["search",o.messages.search],["thumbnails",o.messages.thumbnails],["zoom",o.messages.zoom]]},{label:o.messages.settingsExport,tools:[["html",o.messages.exportHtml],["pdf",o.messages.exportPdf],["xlsx",o.messages.exportExcel],["png",o.messages.exportImage],["word",o.messages.exportWord],["print",o.messages.print],["pdfWindow",o.messages.pdfWindow]]},{label:o.messages.settingsData,tools:[["editing",o.messages.editCell],["import",o.messages.importExcel]]}].map(c=>({...c,tools:c.tools.map(([p,v])=>({key:p,label:v}))})));function m(c,p){const v=c.target,y=v.checked;v.checked=o.enabled[p],a("change",p,y)}function g(c){return!l.value||c.defaultPrevented?!1:c.target instanceof Node&&l.value.contains(c.target)?!0:c.target instanceof Element&&c.target.closest('[role="dialog"],dialog[open]')?!1:!Array.from(document.querySelectorAll('[aria-modal="true"],dialog[open]')).some(p=>p!==l.value&&!l.value.contains(p))}function u(c){if(!g(c))return;if(c.key==="Escape"){c.preventDefault(),c.stopPropagation(),a("close");return}if(c.key!=="Tab")return;const p=l.value?.querySelectorAll("a[href],button:not(:disabled),input:not(:disabled),textarea:not(:disabled),select:not(:disabled),[tabindex='0']"),v=p?.[0],y=p?.[p.length-1];(!l.value?.contains(document.activeElement)||c.shiftKey&&document.activeElement===v||!c.shiftKey&&document.activeElement===y)&&(c.preventDefault(),c.stopPropagation(),(c.shiftKey?y:v)?.focus())}return e.onMounted(()=>{s=l.value?.closest(".mach-report-preview")?.querySelector(".mrp-settings-toggle")??(document.activeElement instanceof HTMLElement?document.activeElement:null),r.value?.focus(),document.addEventListener("keydown",u)}),e.onUnmounted(()=>{document.removeEventListener("keydown",u),s?.isConnected&&s.focus()}),(c,p)=>(e.openBlock(),e.createElementBlock("div",{class:"mrp-settings-backdrop",onClick:p[4]||(p[4]=e.withModifiers(v=>c.$emit("close"),["self"]))},[e.createElementVNode("section",{ref_key:"panel",ref:l,class:"mrp-settings-panel",role:"dialog","aria-modal":"true","aria-label":t.messages.settings},[e.createElementVNode("header",Ga,[e.createElementVNode("div",null,[e.createElementVNode("strong",null,e.toDisplayString(t.messages.settings),1),e.createElementVNode("p",null,e.toDisplayString(t.messages.settingsLocal),1)]),e.createElementVNode("button",{ref_key:"closeButton",ref:r,class:"mrp-settings-close",type:"button","aria-label":t.messages.settingsClose,onClick:p[0]||(p[0]=v=>c.$emit("close"))},"×",8,Ja)]),e.createElementVNode("div",Za,[e.renderSlot(c.$slots,"default",{},void 0,!0),t.interaction?(e.openBlock(),e.createElementBlock("fieldset",Ya,[e.createElementVNode("legend",null,e.toDisplayString(t.messages.settingsPanes),1),e.createElementVNode("label",Xa,[e.createElementVNode("span",null,e.toDisplayString(t.messages.freezeHeaders),1),e.createElementVNode("input",{type:"checkbox",checked:t.interaction.freezeHeaders,disabled:t.busy,onChange:p[1]||(p[1]=v=>c.$emit("interaction",{freezeHeaders:v.target.checked}))},null,40,Qa)]),e.createElementVNode("label",_a,[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:p[2]||(p[2]=v=>c.$emit("interaction",{frozenColumns:Math.max(0,Math.min(20,Number(v.target.value)||0))}))},null,40,eo)])])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,v=>(e.openBlock(),e.createElementBlock("fieldset",{key:v.label},[e.createElementVNode("legend",null,e.toDisplayString(v.label),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.tools,y=>(e.openBlock(),e.createElementBlock("label",{key:y.key,class:e.normalizeClass(["mrp-settings-option",{"mrp-settings-unavailable":!t.available[y.key]}])},[e.createElementVNode("span",null,[e.createTextVNode(e.toDisplayString(y.label),1),t.available[y.key]?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("small",to,e.toDisplayString(t.messages.settingsUnavailable),1))]),e.createElementVNode("input",{type:"checkbox",checked:t.enabled[y.key],disabled:t.busy||!t.available[y.key],onChange:h=>m(h,y.key)},null,40,no)],2))),128))]))),128)),t.available.editing?(e.openBlock(),e.createElementBlock("p",ao,e.toDisplayString(t.persistedEditing?t.messages.editingSaved:t.messages.editingLocal),1)):e.createCommentVNode("",!0),t.available.import?(e.openBlock(),e.createElementBlock("p",oo,e.toDisplayString(t.messages.importLocal),1)):e.createCommentVNode("",!0)]),e.createElementVNode("footer",null,[e.createElementVNode("button",{type:"button",disabled:t.busy,onClick:p[3]||(p[3]=v=>c.$emit("reset"))},e.toDisplayString(t.messages.settingsReset),9,ro)])],8,Ua)]))}}),so=ue._export_sfc(lo,[["__scopeId","data-v-f92f2c66"]]),io={class:"mrp-empty",role:"status"},co={key:0},uo=e.defineComponent({__name:"ReportEmpty",props:{title:{},description:{}},setup(t){return(n,o)=>(e.openBlock(),e.createElementBlock("div",io,[o[0]||(o[0]=e.createStaticVNode('<svg class="mrp-empty-art" viewBox="0 0 160 112" fill="none" aria-hidden="true" data-v-07e9cb82><ellipse cx="80" cy="100" rx="54" ry="7" fill="currentColor" opacity=".05" data-v-07e9cb82></ellipse><rect x="34" y="15" width="92" height="78" rx="9" fill="currentColor" opacity=".04" data-v-07e9cb82></rect><rect x="42" y="9" width="76" height="78" rx="7" fill="var(--mrp-toolbar-bg, #fff)" stroke="currentColor" stroke-opacity=".2" stroke-width="1.5" data-v-07e9cb82></rect><path d="M55 27H105M55 42H105M55 57H85M55 72H76M71 27V72M89 27V57" stroke="currentColor" stroke-opacity=".15" stroke-width="1.5" stroke-linecap="round" data-v-07e9cb82></path><circle cx="112" cy="76" r="16" fill="var(--mrp-toolbar-bg, #fff)" stroke="currentColor" stroke-opacity=".35" stroke-width="2" data-v-07e9cb82></circle><path d="M124 88L137 101M106 76H118" stroke="currentColor" stroke-opacity=".45" stroke-width="3" stroke-linecap="round" data-v-07e9cb82></path><circle cx="27" cy="38" r="3" fill="currentColor" opacity=".12" data-v-07e9cb82></circle><circle cx="132" cy="24" r="2" fill="currentColor" opacity=".2" data-v-07e9cb82></circle></svg>',1)),e.createElementVNode("strong",null,e.toDisplayString(t.title),1),t.description?(e.openBlock(),e.createElementBlock("p",co,e.toDisplayString(t.description),1)):e.createCommentVNode("",!0)]))}}),jt=ue._export_sfc(uo,[["__scopeId","data-v-07e9cb82"]]),fo=["aria-label"],mo=e.defineComponent({__name:"ReportDiscardDialog",props:{messages:{}},emits:["answer"],setup(t,{emit:n}){const o=n,a=e.ref(null),l=e.ref(null);let r=null;function s(i){i.key==="Escape"&&(i.preventDefault(),o("answer",!1)),i.key==="Tab"&&(i.preventDefault(),document.activeElement===a.value?l.value?.focus():a.value?.focus())}return e.onMounted(()=>{r=document.activeElement instanceof HTMLElement?document.activeElement:null,a.value?.focus()}),e.onUnmounted(()=>{r?.isConnected&&r.focus()}),(i,m)=>(e.openBlock(),e.createElementBlock("div",{class:"mrp-discard-backdrop",onKeydown:s,onClick:m[2]||(m[2]=e.withModifiers(g=>o("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:a,type:"button",onClick:m[0]||(m[0]=g=>o("answer",!1))},e.toDisplayString(t.messages.discardKeep),513),e.createElementVNode("button",{ref_key:"discard",ref:l,type:"button",onClick:m[1]||(m[1]=g=>o("answer",!0))},e.toDisplayString(t.messages.discardProceed),513)])],8,fo)],32))}}),po=ue._export_sfc(mo,[["__scopeId","data-v-f7590294"]]),go={key:0,class:"mrp-task-status",role:"status","aria-live":"polite"},vo={key:0},ho=["value","max","aria-label"],bo=e.defineComponent({__name:"ReportTaskStatus",props:{task:{},messages:{}},emits:["cancel"],setup(t){const n=t,o=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})),a=e.computed(()=>n.task?.total===void 0?"":`${n.task.completed??0} / ${n.task.total}`);return(l,r)=>t.task&&(t.task.status==="running"||t.task.status==="cancelled")?(e.openBlock(),e.createElementBlock("div",go,[e.createElementVNode("span",null,[e.createTextVNode(e.toDisplayString(t.task.status==="cancelled"?t.messages.taskCancelled:o.value[t.task.stage])+" ",1),t.task.status==="running"?(e.openBlock(),e.createElementBlock("small",vo,e.toDisplayString(a.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":o.value[t.task.stage]},null,8,ho)):e.createCommentVNode("",!0),t.task.status==="running"&&t.task.cancellable?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",onClick:r[0]||(r[0]=s=>l.$emit("cancel"))},e.toDisplayString(t.messages.taskCancel),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)}}),yo=ue._export_sfc(bo,[["__scopeId","data-v-657ac599"]]),wo={key:0,class:"mrp-diagnostics"},xo=["aria-label","placeholder"],ko={key:0},Eo=["onClick"],Co={key:0},So=e.defineComponent({__name:"ReportDiagnostics",props:{entries:{},messages:{}},emits:["locate"],setup(t){const n=t,o=e.ref(""),a=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})),l=e.computed(()=>{const i=o.value.trim().toLocaleLowerCase();return i?n.entries.filter(m=>`${m.code} ${m.message} ${a.value[m.code]??""} ${m.path??""} ${s(m)} ${m.format??""}`.toLocaleLowerCase().includes(i)):n.entries}),r=e.computed(()=>l.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,m)=>t.entries.length?(e.openBlock(),e.createElementBlock("details",wo,[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":m[0]||(m[0]=g=>o.value=g),type:"search","aria-label":t.messages.diagnosticsSearch,placeholder:t.messages.diagnosticsSearch},null,8,xo),[[e.vModelText,o.value]]),e.createElementVNode("ol",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(g,u)=>(e.openBlock(),e.createElementBlock("li",{key:u},[e.createElementVNode("div",null,[e.createElementVNode("b",null,e.toDisplayString(g.format?.toUpperCase()??g.severity)+" · "+e.toDisplayString(g.code),1),e.createElementVNode("p",null,e.toDisplayString(a.value[g.code]??g.message),1),a.value[g.code]?(e.openBlock(),e.createElementBlock("details",ko,[e.createElementVNode("summary",null,e.toDisplayString(t.messages.diagnosticsDetails),1),e.createTextVNode(e.toDisplayString(g.message),1)])):e.createCommentVNode("",!0),e.createElementVNode("small",null,e.toDisplayString(s(g)),1)]),g.pageIndex!==void 0?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",onClick:c=>i.$emit("locate",g)},e.toDisplayString(t.messages.diagnosticsLocate),9,Eo)):e.createCommentVNode("",!0)]))),128))]),l.value.length>r.value.length?(e.openBlock(),e.createElementBlock("small",Co,e.toDisplayString((t.messages.diagnosticsMore??"").replace("{count}",String(l.value.length))),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)}}),Io=ue._export_sfc(So,[["__scopeId","data-v-3b7804ce"]]);class le extends Error{constructor(n,o,a){super(o),this.name="MachReportError",this.code=n,this.cause=a}}function tn(t){return t instanceof le?{code:t.code,cause:t.cause}:{code:"render",cause:t}}function nn(t){if(t instanceof le)return t;if(t instanceof K.ReportParamValidationError)return new le("param",t.message,t);if(t instanceof K.ReportSourceError)return new le(t.code,t.message,t.cause);if(t instanceof Error){const n={params:"param",config:"config",validate:"validate",fetch:"fetch"},o=t.code;if(typeof o=="string"&&Object.prototype.hasOwnProperty.call(n,o))return new le(n[o],t.message,t)}return new le("fetch",t instanceof Error?t.message:"预览加载失败",t)}const Wt=new Map,Se=new Map,Po=15e3;function pt(t,n){return Object.assign(new Error(t),{cause:n})}function Me(t,n){return`PDF 字体 ${JSON.stringify(t)}:${n}。请部署支持报表文字的字体文件,并将 pdfFontUrl 配置为可访问的字体 URL;西文报表可设为空串`}function Ge(t){if(t?.reason instanceof Error&&t.reason.name==="AbortError")return t.reason;const n=pt("PDF 字体检查已取消",t?.reason);return n.name="AbortError",n}async function Bo(t,n){let o=!1;const a=setTimeout(()=>{o=!0,n.abort()},Po);try{const l=await fetch(t,{method:"HEAD",signal:n.signal});if(n.signal.aborted)throw Ge(n.signal);if(l.status===405||l.status===501||l.type==="opaque")return{status:"unverified",fontUrl:t,message:`PDF 字体 ${JSON.stringify(t)} 无法通过 HEAD 检查验证;仍可尝试导出,届时会加载并校验字体`};if(!l.ok){const s=new Error(`字体请求返回 HTTP ${l.status}`);return{status:"error",fontUrl:t,message:Me(t,s.message),cause:s}}const r=l.headers.get("content-type")??"";if(/text\/html|application\/xhtml\+xml/i.test(r)){const s=new Error("字体 URL 返回 HTML 页面(可能是 SPA 路由回退),不是字体文件");return{status:"error",fontUrl:t,message:Me(t,s.message),cause:s}}if(/^text\//i.test(r)||/(?:\/|\+)json(?:\s*;|$)/i.test(r)){const s=new Error(`字体 URL 返回 ${r} 文本响应,不是字体文件`);return{status:"error",fontUrl:t,message:Me(t,s.message),cause:s}}return{status:"available",fontUrl:t,message:"PDF 字体资源可达;文字覆盖范围将在实际导出时校验"}}catch(l){if(n.signal.aborted&&!o)throw Ge(n.signal);return{status:"error",fontUrl:t,message:Me(t,o?"字体检查超时,请检查网络或字体服务":"字体检查失败,请检查网络、字体服务或跨域访问配置"),cause:l}}finally{clearTimeout(a)}}function $o(t,n){if(n?.aborted)return Promise.reject(Ge(n));if(!t)return Promise.resolve({status:"disabled",fontUrl:t,message:"已停用自定义 PDF 字体;内置字体用于西文,其他文字会在导出时校验"});const o=Wt.get(t);if(o)return Promise.resolve(o);let a=Se.get(t);if(!a){const r=new AbortController;a={controller:r,promise:Bo(t,r),subscribers:0};const s=a;Se.set(t,s),s.promise=s.promise.then(i=>(!r.signal.aborted&&i.status==="available"&&Wt.set(t,i),i)).finally(()=>{Se.get(t)===s&&Se.delete(t)})}const l=a;return l.subscribers++,new Promise((r,s)=>{let i=!1;const m=()=>i?!1:(i=!0,l.subscribers--,n?.removeEventListener("abort",g),!0),g=()=>{m()&&(l.subscribers===0&&(Se.get(t)===l&&Se.delete(t),l.controller.abort()),s(Ge(n)))};n?.addEventListener("abort",g,{once:!0}),l.promise.then(u=>{m()&&r(u)},u=>{m()&&s(u)}),n?.aborted&&g()})}function an(t={fontUrl:"/simhei.ttf"}){let n=null;const o=async(a,l,r={})=>{X.assertOutputActive(r.signal),n||(n=await import("@agile-team/mach-report/pdf")),X.assertOutputActive(r.signal);let s=null;if(t.fontUrl)try{if(s=await X.waitForOutput(n.loadFontWithCache(t.fontUrl,{strict:!0}),r.signal),!s?.byteLength)throw new Error("字体文件为空或加载失败")}catch(p){const v=p instanceof Error?p.message:String(p);throw pt(Me(t.fontUrl,v),p)}let i;try{X.assertOutputActive(r.signal),i=await n.renderPlanToPdf(a,{...r,...s?{customFontBytes:s}:{}})}catch(p){if(!s)throw p;const v=p instanceof Error?p.message:String(p);throw pt(`PDF 生成失败:${v}。当前字体 URL 为 ${JSON.stringify(t.fontUrl)};请确认该文件是有效字体,或重新配置 pdfFontUrl`,p)}X.assertOutputActive(r.signal),i.diagnostics?.forEach(p=>{try{r.onDiagnostic?.(p)}catch{}});const{bytes:m,unsupportedTextCount:g,pageErrors:u,fidelityWarnings:c}=i;if(g>0)throw new Error(`PDF 中有 ${g} 行文字无法编码;请部署支持所用文字的字体并配置 pdfFontUrl`);if(u.length>0)throw new Error(`PDF 有 ${u.length} 页渲染失败:${u[0]}`);return c.length>0&&l?.(`PDF 有 ${c.length} 处版式降级:${c.slice(0,2).join(";")}`),m};return o.checkFont=a=>$o(t.fontUrl,a),o}function Ro(t){const n=e.shallowRef(Object.freeze({status:"unchecked",fontUrl:""}));let o=null,a=null,l=0,r=null;function s(){if(t.injectedExporter)return t.injectedExporter;const u=t.fontUrl();return(!a||o!==u)&&(o=u,a=an({fontUrl:u})),a}function i(){l++,r?.abort(),r=null}async function m(){if(t.destroyed())throw new le("config","报表预览已卸载");i();const u=l,c=new AbortController;r=c;const p=t.fontUrl();n.value=Object.freeze({status:"checking",fontUrl:p});try{const v=s(),y=v.checkFont?await v.checkFont(c.signal):{status:"unverified",fontUrl:"",message:"自定义 PDF 导出器未提供字体预检查;字体由宿主确认"};return!t.destroyed()&&u===l&&!c.signal.aborted&&(n.value=Object.freeze({...y})),y}catch(v){if(c.signal.aborted)throw v;const y={status:"error",fontUrl:p,message:v instanceof Error?v.message:"PDF 字体检查失败",cause:v};return!t.destroyed()&&u===l&&(n.value=Object.freeze(y)),y}finally{r===c&&(r=null)}}function g(){m().catch(()=>{})}return e.watch([t.plan,e.computed(t.fontUrl),e.computed(t.enabled)],()=>{const u=n.value.fontUrl===t.fontUrl();u&&n.value.status==="available"||(i(),(!u||n.value.status==="checking")&&(n.value=Object.freeze({status:"unchecked",fontUrl:t.fontUrl()})),!t.destroyed()&&t.plan.value?.pages.length&&t.enabled()&&g())},{immediate:!0}),{pdfFont:n,getPdfExporter:s,checkPdfFont:m,retryPdfFont:g,cancelFontCheck:i}}function Do(t){const n=e.shallowRef(null),o=e.shallowRef(!1);let a=0,l=null;function r(m){const g=l;l=null,n.value=null,o.value=!1,g?.(m)}function s(){a++,r(!1)}async function i(m){if(s(),!t.enabled()||!t.pending())return!0;const g=a,u=[...t.snapshot?.()??[]];o.value=!0;const c=Object.freeze({reason:m,reportIds:Object.freeze([...t.reportIds()]),pendingLocalChanges:!0});try{const p=t.hook(),v=await new Promise(h=>{if(l=h,!p){n.value=c;return}Promise.resolve().then(()=>p(c)).then(d=>{g===a&&r(d===!0)},d=>{if(g===a){try{t.error(d)}catch{}r(!1)}})}),y=t.snapshot?.()??[];return g===a&&v===!0&&y.length===u.length&&u.every((h,d)=>Object.is(h,y[d]))}catch(p){if(g===a){try{t.error(p)}catch{}r(!1)}return!1}}return{request:n,pending:o,check:i,settle:r,cancel:s}}let No=0;function Mo(t){const n=e.shallowRef(null),o=new Set;let a=null;function l(m){n.value=Object.freeze(m);try{t(n.value)}catch{}}function r(m,g,u){const c=`mr-task-${Date.now().toString(36)}-${++No}`;o.add(c),a=u,l({taskId:c,kind:m,stage:g,status:"running",cancellable:!0});function p(y,h,d){n.value?.taskId!==c||n.value.status!=="running"||l({...n.value,stage:y,completed:h,total:d})}function v(y="completed"){n.value?.taskId!==c||n.value.status!=="running"||(a=null,l({...n.value,status:y,cancellable:!1}))}return{taskId:c,update:p,finish:v}}function s(){if(n.value?.status!=="running")return;const m=a;a=null,l({...n.value,status:"cancelled",cancellable:!1}),m?.()}function i(m,g){n.value?.taskId!==m.taskId&&(m.status!=="running"||o.has(m.taskId))||(o.add(m.taskId),o.size>100&&o.delete(o.values().next().value),a=m.status==="running"?g:null,l({...m}))}return{state:n,start:r,cancel:s,receive:i}}function Vo(t){const n=e.shallowRef(Object.freeze([])),o=new Set;let a=0;function l(){a++,n.value=Object.freeze([]),o.clear()}function r(m){const g=a,u=[];for(const c of m){const p=JSON.stringify([c.code,c.format,c.pageIndex,c.componentIndex,c.componentPath,c.path,c.message]);if(o.has(p))continue;o.add(p);const v=Object.freeze({...c,...c.componentPath?{componentPath:Object.freeze([...c.componentPath])}:{}});u.push(v)}u.length&&(n.value=Object.freeze([...n.value,...u]));for(const c of u){if(g!==a)break;try{t(c)}catch{}}}function s(m){r([m])}function i(m,g){const u=K.inspectOutputCapabilities(m,g);return r(u),u}return{entries:n,reset:l,add:s,addMany:r,inspect:i}}let To=0;function Fo(){return`mrp-params-${++To}`}function on(t,n,o){const a=(Array.isArray(n)?n.find(l=>l?.field===t.field)?.label:void 0)??t.field;return t.code==="required"?o.paramRequired.replace("{label}",a):(o.paramInvalid??"{label}:{message}").replace("{label}",a).replace("{message}",t.message)}function Oo(t){const n=e.ref({}),o=e.ref(!1);function a(){const i={};for(const m of Array.isArray(t.defs.value)?t.defs.value:[])typeof m?.field=="string"&&Object.defineProperty(i,m.field,{value:t.params()[m.field]??m.defaultValue??"",writable:!0,enumerable:!0,configurable:!0});n.value=i,o.value=!1}a(),e.watch(t.defs,a),e.watch(t.reportIds,a),e.watch(()=>JSON.stringify(t.params()),a);const l=e.computed(()=>K.validateReportParams(t.defs.value,{...t.params(),...n.value})),r=e.computed(()=>!o.value&&l.value.issues.length>0&&l.value.issues.every(i=>i.code==="required"));function s(){const i=l.value;if(!i.ok){const u=i.issues[0];return{quiet:r.value,error:new le(u.code==="definition"?"config":"param",on(u,t.defs.value,t.messages()),{issues:i.issues})}}const m={...i.values},g=new Set(t.defs.value.filter(u=>u.defaultValue!==void 0).map(u=>u.field));for(const[u,c]of Object.entries(m))c===""&&!g.has(u)&&delete m[u];return{params:m,quiet:!1}}return{values:n,attempted:o,validation:l,pendingRequired:r,reset:a,query:s}}const Lo={class:"mrp-params-title"},Ao={class:"mrp-params-grid"},zo=["id"],qo={key:0,class:"mrp-param-star"},jo=["value","aria-labelledby","aria-invalid","aria-describedby","aria-required","onChange"],Wo=["disabled","hidden"],Ho=["value"],Ko=["type","placeholder","value","min","max","step","aria-labelledby","aria-invalid","aria-describedby","aria-required","onInput"],Uo=["id"],Go={class:"mrp-params-actions"},Jo=e.defineComponent({__name:"ReportParamPanel",props:{defs:{},modelValue:{},messages:{},attempted:{type:Boolean},issues:{}},emits:["update:modelValue","query","reset"],setup(t,{expose:n,emit:o}){const a=t,l=o,r=e.ref({...a.modelValue}),s=e.ref(null),i=Fo();e.watch(()=>a.modelValue,v=>{r.value={...v}});const m=e.computed(()=>a.issues??K.validateReportParams(a.defs,r.value).issues),g=e.computed(()=>(Array.isArray(a.defs)?a.defs:[]).filter(v=>v&&typeof v.field=="string").map((v,y)=>({def:v,id:`${i}-${y}`,label:v.label??v.field,value:r.value[v.field]??"",error:a.attempted?m.value.find(h=>h.field===v.field):void 0})));function u(v,y){r.value={...r.value,[v]:y},l("update:modelValue",{...r.value})}function c(v){v.isComposing||l("query")}function p(){s.value?.querySelector('[aria-invalid="true"]')?.focus()}return n({focusInvalid:p}),(v,y)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"root",ref:s,class:"mrp-params"},[e.createElementVNode("span",Lo,e.toDisplayString(t.messages.paramsTitle),1),e.createElementVNode("div",Ao,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.value,h=>(e.openBlock(),e.createElementBlock("label",{key:h.id,class:e.normalizeClass(["mrp-param",{"mrp-param-missing":!!h.error}])},[e.createElementVNode("span",{id:`${h.id}-label`,class:"mrp-param-label"},[e.createTextVNode(e.toDisplayString(h.label),1),h.def.required?(e.openBlock(),e.createElementBlock("i",qo,"*")):e.createCommentVNode("",!0)],8,zo),(h.def.type??"text")==="select"?(e.openBlock(),e.createElementBlock("select",{key:0,class:"mrp-param-input",value:h.value,"aria-labelledby":`${h.id}-label`,"aria-invalid":h.error?!0:void 0,"aria-describedby":h.error?`${h.id}-error`:void 0,"aria-required":h.def.required||void 0,onChange:d=>u(h.def.field,d.target.value),onKeydown:e.withKeys(c,["enter"])},[e.createElementVNode("option",{value:"",disabled:h.def.required,hidden:h.def.required},e.toDisplayString(h.def.placeholder??(t.messages.paramSelectPlaceholder??"请选择{label}").replace("{label}",h.label)),9,Wo),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.def.options??[],d=>(e.openBlock(),e.createElementBlock("option",{key:d.value,value:d.value},e.toDisplayString(d.label),9,Ho))),128))],40,jo)):(e.openBlock(),e.createElementBlock("input",{key:1,class:"mrp-param-input",type:h.def.type==="number"?"number":h.def.type==="date"?"date":"text",placeholder:h.def.placeholder??(t.messages.paramTextPlaceholder??"请输入{label}").replace("{label}",h.label),value:h.value,min:h.def.min,max:h.def.max,step:h.def.type==="number"?"any":void 0,"aria-labelledby":`${h.id}-label`,"aria-invalid":h.error?!0:void 0,"aria-describedby":h.error?`${h.id}-error`:void 0,"aria-required":h.def.required||void 0,onInput:d=>u(h.def.field,d.target.value),onKeydown:e.withKeys(c,["enter"])},null,40,Ko)),h.error?(e.openBlock(),e.createElementBlock("small",{key:2,id:`${h.id}-error`,class:"mrp-param-error",role:"status"},e.toDisplayString(e.unref(on)(h.error,t.defs,t.messages)),9,Uo)):e.createCommentVNode("",!0)],2))),128))]),e.createElementVNode("div",Go,[e.createElementVNode("button",{class:"mrp-nav mrp-param-query",type:"button",onClick:y[0]||(y[0]=h=>v.$emit("query"))},e.toDisplayString(t.messages.query),1),e.createElementVNode("button",{class:"mrp-nav",type:"button",onClick:y[1]||(y[1]=h=>v.$emit("reset"))},e.toDisplayString(t.messages.reset),1)])],512))}}),rn=ue._export_sfc(Jo,[["__scopeId","data-v-156737bc"]]),Zo={class:"mrp-edit-bar"},Yo=["disabled"],Xo=["disabled"],Qo={class:"mrp-changes"},_o=["aria-label"],er={key:0},tr={key:1},nr=["onClick"],ar=["title"],or=["title"],rr=["disabled"],lr={key:0,role:"status"},sr={key:1,role:"status"},ir={key:2,class:"mrp-conflicts",open:""},cr=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(o){return o.source?`${o.source.rowKey} · ${o.source.field}`:`${o.address.pageIndex+1} / ${o.address.rowIndex+1}:${o.address.columnIndex+1}`}return(o,a)=>(e.openBlock(),e.createElementBlock("div",Zo,[e.createElementVNode("button",{type:"button",disabled:t.busy||t.saving||!t.canUndo,onClick:a[0]||(a[0]=l=>o.$emit("undo"))},e.toDisplayString(t.messages.undo),9,Yo),e.createElementVNode("button",{type:"button",disabled:t.busy||t.saving||!t.canRedo,onClick:a[1]||(a[1]=l=>o.$emit("redo"))},e.toDisplayString(t.messages.redo),9,Xo),e.createElementVNode("details",Qo,[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",tr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.differences,(l,r)=>(e.openBlock(),e.createElementBlock("li",{key:r},[e.createElementVNode("button",{type:"button",onClick:s=>o.$emit("locate",l)},e.toDisplayString(n(l)),9,nr),e.createElementVNode("span",null,[e.createElementVNode("s",{title:t.messages.changesBefore},e.toDisplayString(l.previousText||"∅"),9,ar),a[3]||(a[3]=e.createTextVNode(" → ",-1)),e.createElementVNode("strong",{title:t.messages.changesAfter},e.toDisplayString(l.text||"∅"),9,or)])]))),128))])):(e.openBlock(),e.createElementBlock("p",er,e.toDisplayString(t.messages.changesEmpty),1))],8,_o)]),e.createElementVNode("button",{type:"button",disabled:t.busy||t.saving||!t.differences.length,onClick:a[2]||(a[2]=l=>o.$emit("restore"))},e.toDisplayString(t.messages.restoreChanges),9,rr),t.saving?(e.openBlock(),e.createElementBlock("span",lr,e.toDisplayString(t.messages.saving),1)):t.differences.length&&!t.conflicts.length?(e.openBlock(),e.createElementBlock("span",sr,e.toDisplayString(t.persisted?t.messages.editSaved:t.messages.editingLocal),1)):e.createCommentVNode("",!0),t.conflicts.length?(e.openBlock(),e.createElementBlock("details",ir,[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,(l,r)=>(e.openBlock(),e.createElementBlock("li",{key:r},e.toDisplayString(l.message),1))),128))])])):e.createCommentVNode("",!0)]))}}),ur=ue._export_sfc(cr,[["__scopeId","data-v-df1c7b86"]]);function dr(t){const n=t.table?.columnKeys??[],o=n.map(()=>[]);if(!t.grid)return n;for(const{ci:a,cell:l}of X.resolveGridLayout(t.grid,t.widthMm,t.heightMm).cells){const r=(l.text??l.rawText??"").trim();if(r)for(let s=a;s<Math.min(n.length,a+(l.colSpan??1));s++)o[s].includes(r)||o[s].push(r)}return n.map((a,l)=>o[l].join(" / ")||a)}function fr(t,n=[]){const o=new Set,a=[];for(const[l,r]of(t?.pages??[]).entries())for(const s of r.components){const i=s.table;if(!i||i.role!=="header"||o.has(i.id))continue;o.add(i.id);const m=dr(s),g=n.filter(v=>v.pageIndex<=l),u=g[g.length-1]?.label,c=i.source?.datasetId,p=[...new Set([u,i.title,c].filter(Boolean))].join(" · ")||i.id;i.columnKeys.forEach((v,y)=>{v&&a.push({key:JSON.stringify([i.id,y]),field:v,label:m[y],group:p,pageIndex:l,tableId:i.id,...c?{datasetId:c}:{}})})}return a}function mr(t,n){const o=n.trim().toLocaleLowerCase().split(/\s+/).filter(Boolean);return t.filter(a=>{const l=`${a.label} ${a.field} ${a.group}`.toLocaleLowerCase();return o.every(r=>l.includes(r))})}const pr=["aria-label"],gr={key:0,class:"mrp-section-tabs"},vr=["disabled","onClick"],hr=["aria-expanded","disabled"],br=["aria-label","placeholder","disabled"],yr=["disabled"],wr=["aria-label"],xr={key:0,role:"status"},kr=["aria-label"],Er=["disabled","onClick"],Cr=e.defineComponent({__name:"ReportNavigation",props:{sections:{},currentPage:{},messages:{},busy:{type:Boolean},plan:{}},emits:["goto","locate","locate-target"],setup(t,{emit:n}){const o=t,a=n,l=e.ref(""),r=e.ref(!1),s=e.computed(()=>({columnDirectory:"字段目录",columnSearch:"搜索列名或字段",columnNoMatches:"未找到匹配字段",columnResults:"匹配字段",...o.messages})),i=e.computed(()=>fr(o.plan,o.sections)),m=e.computed(()=>mr(i.value,l.value)),g=e.computed(()=>[...new Set(m.value.map(v=>v.group))]);function u(v){a("locate-target",v),r.value=!1}function c(){m.value.length===1?u(m.value[0]):a("locate",l.value.trim())}function p(v){(!(v.relatedTarget instanceof Node)||!v.currentTarget.contains(v.relatedTarget))&&(r.value=!1)}return(v,y)=>(e.openBlock(),e.createElementBlock("nav",{class:"mrp-section-nav","aria-label":t.messages.sections},[t.sections.length>1?(e.openBlock(),e.createElementBlock("div",gr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.sections,(h,d)=>(e.openBlock(),e.createElementBlock("button",{key:d,type:"button",class:e.normalizeClass({active:t.currentPage>=h.pageIndex+1&&(!t.sections[d+1]||t.currentPage<=t.sections[d+1].pageIndex)}),disabled:t.busy,onClick:P=>a("goto",h.pageIndex+1)},e.toDisplayString(h.label),11,vr))),128))])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"mrp-column-locator",onKeydown:y[4]||(y[4]=e.withKeys(h=>r.value=!1,["esc"])),onFocusout:p},[e.createElementVNode("form",{onSubmit:e.withModifiers(c,["prevent"])},[i.value.length?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button","aria-expanded":r.value,disabled:t.busy,onClick:y[0]||(y[0]=h=>r.value=!r.value)},[e.createTextVNode(e.toDisplayString(s.value.columnDirectory)+" ",1),e.createElementVNode("span",null,e.toDisplayString(i.value.length),1)],8,hr)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[1]||(y[1]=h=>l.value=h),type:"search","aria-label":t.messages.locateField,placeholder:i.value.length?s.value.columnSearch:t.messages.locateFieldPlaceholder,disabled:t.busy,onInput:y[2]||(y[2]=h=>r.value=i.value.length>0)},null,40,br),[[e.vModelText,l.value]]),e.createElementVNode("button",{type:"submit",disabled:t.busy||!l.value.trim()},e.toDisplayString(t.messages.locateField),9,yr)],32),r.value&&i.value.length?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mrp-column-directory","aria-label":s.value.columnResults},[m.value.length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("p",xr,e.toDisplayString(s.value.columnNoMatches),1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.value,h=>(e.openBlock(),e.createElementBlock("section",{key:h,"aria-label":h},[e.createElementVNode("strong",null,e.toDisplayString(h),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.value.filter(d=>d.group===h),d=>(e.openBlock(),e.createElementBlock("button",{key:d.key,type:"button",disabled:t.busy,onMousedown:y[3]||(y[3]=e.withModifiers(()=>{},["prevent"])),onClick:P=>u(d)},[e.createElementVNode("span",null,e.toDisplayString(d.label),1),e.createElementVNode("code",null,e.toDisplayString(d.field),1)],40,Er))),128))],8,kr))),128))],8,wr)):e.createCommentVNode("",!0)],32)],8,pr))}}),Sr=ue._export_sfc(Cr,[["__scopeId","data-v-3a2eb8c8"]]),Ir={class:"mrp-import-summary"},Pr={key:0},Br={key:0},$r=e.defineComponent({__name:"ReportImportSummary",props:{result:{},messages:{}},setup(t){return(n,o)=>(e.openBlock(),e.createElementBlock("details",Ir,[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",Pr," · "+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,a=>(e.openBlock(),e.createElementBlock("li",{key:a.index},e.toDisplayString(a.name)+" · "+e.toDisplayString(a.range)+" · "+e.toDisplayString(a.rowCount)+" × "+e.toDisplayString(a.columnCount),1))),128))]),t.result.warnings.length?(e.openBlock(),e.createElementBlock("ul",Br,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.result.warnings,(a,l)=>(e.openBlock(),e.createElementBlock("li",{key:l},e.toDisplayString(a),1))),128))])):e.createCommentVNode("",!0)]))}}),Rr=ue._export_sfc($r,[["__scopeId","data-v-54f275e8"]]),ln={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:"图片资源超出处理范围,请减少资源或缩小报表范围。"},sn={shellBg:"#525659",shellFg:"#e8e8e8",toolbarBg:"#323639",toolbarBorder:"#22252a",toolbarFg:"#e8e8e8",btnFg:"#cfcfcf",btnBorder:"#4a4d52",btnHoverBg:"#414549",btnHoverFg:"#ffffff",btnActiveBg:"#2d5fb8"};function cn(t={}){return{...t,defaults:t.defaults??{},presets:t.presets??{}}}function Dr(t){return t}const he={showExport:!0,showPrint:!0,showPdfWindow:!0,showSettings:!0,showParams:!0,gapPx:18,pdfFontUrl:"/simhei.ttf",logger:console},Nr={warn:()=>{},info:()=>{}};function We(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 Mr(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 un(t,n){const o=n?t?.presets?.[n]:t?.defaultPreset?t?.presets?.[t.defaultPreset]:void 0,a=We(t?.defaults,o);return{...Mr(a),pdfFontUrl:a.pdfFontUrl??he.pdfFontUrl,theme:{...sn,...a.theme},messages:{...ln,...a.messages},logger:a.logger??he.logger,preview:{overscanPages:Ht(a.preview?.overscanPages,1,10,!0),searchDebounceMs:Ht(a.preview?.searchDebounceMs,200,2e3)},xlsx:{...a.xlsx},editable:a.editable??!1,excelImport:a.excelImport??!1,toolbar:{...a.toolbar},interaction:{...a.interaction},preferences:a.preferences,assets:a.assets,guardChanges:a.guardChanges??!0,beforeDiscard:a.beforeDiscard,output:{...a.output}}}function Ht(t,n,o,a=!1){if(t==null||!Number.isFinite(t))return n;const l=Math.max(0,Math.min(o,t));return a?Math.floor(l):l}function dn(t){const n={};return t.shellBg!=null&&(n["--mrp-shell-bg"]=t.shellBg),t.shellFg!=null&&(n["--mrp-shell-fg"]=t.shellFg),t.toolbarBg!=null&&(n["--mrp-toolbar-bg"]=t.toolbarBg),t.toolbarBorder!=null&&(n["--mrp-toolbar-border"]=t.toolbarBorder),t.toolbarFg!=null&&(n["--mrp-toolbar-fg"]=t.toolbarFg),t.btnFg!=null&&(n["--mrp-btn-fg"]=t.btnFg),t.btnBorder!=null&&(n["--mrp-btn-border"]=t.btnBorder),t.btnHoverBg!=null&&(n["--mrp-btn-hover-bg"]=t.btnHoverBg),t.btnHoverFg!=null&&(n["--mrp-btn-hover-fg"]=t.btnHoverFg),t.btnActiveBg!=null&&(n["--mrp-btn-active-bg"]=t.btnActiveBg),n}function Vr(t){const n=e.inject(Pe.MACH_REPORT_CONFIG_KEY,null),o=e.computed(()=>{const a=n?.value??null,l="defaults"in t||"presets"in t||"defaultPreset"in t?cn(t):{defaults:t,presets:{}};if(!a)return l;const r={...a.presets,...l.presets};for(const s of Object.keys(r))r[s]=We(We(a.presets[s],l.defaults),l.presets[s]);return{defaults:We(a.defaults,l.defaults),presets:r,defaultPreset:l.defaultPreset??a.defaultPreset}});e.provide(Pe.MACH_REPORT_CONFIG_KEY,o)}function fn(){return e.inject(Pe.MACH_REPORT_CONFIG_KEY,e.computed(()=>null))}function se(t){return JSON.parse(JSON.stringify(t))}function mn(t,n){const o=n.fields;if(typeof o=="function")return o(t);const a=t.source?.field??t.table?.columnKey;return a===void 0||!o||!Object.prototype.hasOwnProperty.call(o,a)?void 0:o[a]}class Tr extends Error{constructor(n){super(n.map(o=>o.message).join(";")),this.conflicts=n,this.name="ReportEditConflictError"}}function Fr(){return globalThis.crypto?.randomUUID?.()??`mr-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}function Or(t){const n=e.shallowRef([]),o=e.shallowRef([]),a=e.shallowRef([]),l=e.shallowRef([]),r=e.shallowRef(!1),s=e.shallowRef(null),i=e.shallowRef([]),m=e.computed(()=>i.value.length>0),g=e.computed(()=>K.summarizeReportCellEdits(n.value)),u=e.computed(()=>!!t.options.value&&!r.value&&!t.blocked()&&o.value.length>0),c=e.computed(()=>!!t.options.value&&!r.value&&!t.blocked()&&a.value.length>0);let p=null,v=null,y=0,h=null;function d(){p?.abort(),p=null,r.value=!1,v=null}function P(){y++,d(),h=null,n.value=[],o.value=[],a.value=[],l.value=[],i.value=[],s.value=null}function $(){const C=t.options.value;return C?typeof C=="object"?C:{}:null}function D(C,k,B){if(!t.options.value||t.blocked())throw new K.ReportCellEditError("readonly");const N=K.createReportCellResolver(C);for(const T of k.edits){const j=N(T.address);if(!j?.editable||B.canEdit?.(j)===!1)throw new K.ReportCellEditError("readonly");if(B.requireSource&&!j.source)throw new K.ReportCellEditError("missing");const O=mn(j,B);O&&K.parseReportCellFieldInput(j,T.value,O)}}async function M(C,k,B){if(k.saveBatch)return k.saveBatch(se(C),B);if(k.save&&C.edits.length>1)throw new K.ReportCellEditError("atomic");if(C.edits[0])return k.save?.(se(C.edits[0]),B)}async function V(C,k,B){for(const N of C.edits){const T=await k.validate?.(se(N),B);if(T)throw new Error(T);if(B.signal.aborted)return}}function A(C,k,B,N,T){if(t.plan.value=K.applyReportEditResult(K.applyReportCellEditBatch(C,k),k,B),n.value=[...n.value,...k.edits],T){const O=new Set(k.edits.map(K.reportCellEditKey));i.value=i.value.filter(z=>!O.has(K.reportCellEditKey(z)))}else i.value=K.summarizeReportCellEdits([...i.value,...k.edits]);N==="edit"&&(o.value=[...o.value,k.edits],a.value=[]),l.value=[],h=null;const j=y;for(const O of k.edits){if(y!==j)break;t.onChange(se(O))}}async function H(C,k){const B=t.plan.value,N=$();if(!B||!N||t.blocked())return!1;const T=new AbortController,j=y;p=T,r.value=!0,s.value=null;const O=()=>p===T&&!T.signal.aborted&&t.plan.value===B&&t.options.value!==!1;try{const z=K.createReportCellEditBatch(B,C,Fr());if(D(B,z,N),z.edits=z.edits.filter(L=>!Object.is(L.previousValue,L.value)),!z.edits.length)return!0;const w=JSON.stringify([k,z.edits]);h?.plan===B&&h.signature===w?z.requestId=h.requestId:h={plan:B,signature:w,requestId:z.requestId},D(B,z,N);const S={signal:T.signal,requestId:z.requestId,action:k};if(await V(z,N,S),!O())return!1;D(B,z,N);const x=await M(z,N,S);if(!O())return!1;if(x?.conflicts?.length)throw l.value=se(x.conflicts),new Tr(x.conflicts);return D(B,z,N),A(B,z,x,k,!!(N.save||N.saveBatch)),j===y}catch(z){return O()&&(s.value=t.errorMessage?.(z)??(z instanceof Error?z.message:"Cell edit failed"),t.onError(s.value,z)),!1}finally{p===T&&(p=null,r.value=!1)}}async function q(C,k="edit"){if(v)return v;const B=H(C,k);v=B;const N=await B;return v===B&&(v=null),N}async function U(){const C=y,k=o.value[o.value.length-1];return!k||r.value||!await q(k.map(B=>({address:B.address,value:B.previousValue})),"undo")||C!==y?!1:(o.value=o.value.slice(0,-1),a.value=[...a.value,k],!0)}async function b(){const C=y,k=a.value[a.value.length-1];return!k||r.value||!await q(k.map(B=>({address:B.address,value:B.value})),"redo")||C!==y?!1:(a.value=a.value.slice(0,-1),o.value=[...o.value,k],!0)}async function I(){const C=y;return!g.value.length||r.value||!await q(g.value.map(k=>({address:k.address,value:k.previousValue})),"restore")||C!==y?!1:(o.value=[],a.value=[],!0)}return{changes:n,differences:g,localDifferences:i,hasLocalDrafts:m,lastError:s,conflicts:l,saving:r,canUndo:u,canRedo:c,apply:q,undo:U,redo:b,restore:I,cancel:d,reset:P}}let Lr=0;const Ar="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 zr(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 qr(t,n,o){const a=t.createElement("select"),l=[{value:null,label:"—"},...zr(n)];if(l.forEach((r,s)=>{const i=t.createElement("option");i.value=String(s),i.textContent=r.label,(Object.is(o.value,r.value)||o.value===""&&r.value===null)&&(i.selected=!0),a.append(i)}),!l.some(r=>Object.is(o.value,r.value)||o.value===""&&r.value===null)){const r=t.createElement("option");r.value="unknown",r.textContent=o.cell.text??String(o.value),r.selected=!0,a.append(r)}return{input:a,value:()=>a.value==="unknown"?o.value:l[Number(a.value)]?.value??null}}function jr(t,n,o){const a=n?.type==="number"||n?.type==="date"?t.createElement("input"):t.createElement("textarea");return a.value=o.value==null?"":String(o.value),a instanceof HTMLInputElement&&(a.type=n?.type==="date"?"date":"text",n?.type==="number"&&(a.inputMode="decimal"),n?.type==="date"&&(n.min&&(a.min=n.min),n.max&&(a.max=n.max))),{input:a,value:()=>n?.type==="date"&&a instanceof HTMLInputElement&&a.validity.badInput?"invalid-date":a.value}}function Wr(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 Hr(t,n,o,a){const l=t.ownerDocument,r=a?.type==="boolean"||a?.type==="enum"?qr(l,a,o):jr(l,a,o),s=r.input,i=l.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=Ar,s.setAttribute("aria-label",a?.label??n),a?.required&&s.setAttribute("aria-required","true");const m=l.createElement("span");m.id=`mrp-cell-hint-${++Lr}`,m.className="mrp-cell-editor-hint",m.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 g=Wr(a);return m.textContent=g,m.hidden=!g,s.setAttribute("aria-describedby",m.id),i.append(s,m),t.append(i),{input:s,root:i,initialInput:s.value,value:r.value,focus:()=>{s.focus(),(s instanceof HTMLTextAreaElement||s instanceof HTMLInputElement&&s.type!=="date")&&s.select()},feedback:u=>{m.textContent=u??g,m.hidden=!m.textContent,s.setAttribute("aria-invalid",u?"true":"false")}}}function gt(t){const n=t.closest(".mrp-page-holder"),o=t.closest("[data-mr-component-index]");if(!n||!o)return null;const a={pageIndex:Number(n.dataset.page)-1,componentIndex:Number(o.dataset.mrComponentIndex),rowIndex:Number(t.dataset.mrRowIndex),columnIndex:Number(t.dataset.mrColumnIndex)};return Object.values(a).every(l=>Number.isInteger(l)&&l>=0)?a:null}function Kr(t){const n=e.shallowRef(null),o=Or(t),{saving:a,changes:l}=o,r=e.shallowRef(!1),s=e.computed(()=>r.value||o.hasLocalDrafts.value);let i=null;function m(){const d=n.value;n.value=null,r.value=!1,o.cancel(),i=null,d?.editor.root.remove()}function g(){m(),o.reset()}function u(d){return n.value===d&&t.plan.value===d.plan}async function c(d){return await o.apply([{address:d.address,value:d.editor.value()}])?(n.value=null,r.value=!1,d.editor.root.remove(),!0):(n.value===d&&(d.editor.input.disabled=!1,d.editor.feedback(o.lastError.value??void 0),d.editor.input.focus()),!1)}async function p(){if(i)return i;const d=n.value;if(!d)return!0;if(!u(d))return m(),!1;r.value=d.editor.input.value!==d.editor.initialInput,d.editor.input.disabled=!0;const P=c(d);i=P;const $=await P;return i===P&&(i=null),$}function v(d){if(d.stopPropagation(),!d.isComposing&&(d.key==="Escape"&&(d.preventDefault(),m()),d.key==="Enter"&&!d.shiftKey||d.key==="Tab")){d.preventDefault();const P=n.value?.address;p().then($=>{$&&P&&t.onNavigate?.(P,d.key,d.shiftKey)})}}async function y(d){if(!t.options.value||t.blocked()||!await p()||!d.isConnected)return;const P=t.plan.value,$=gt(d);if(!P||!$||!t.options.value||t.blocked())return;const D=typeof t.options.value=="object"?t.options.value:{};try{const M=K.getReportCellContext(P,$);if(!M?.editable||D.canEdit?.(M)===!1)return;const V=mn(M,D);V&&K.validateReportCellFieldDefinition(M,V);const A=Hr(d,t.label(),M,V),H=A.input;n.value={plan:P,address:$,editor:A},r.value=!1,H.addEventListener("keydown",q=>v(q)),H.addEventListener("input",()=>{r.value=H.value!==A.initialInput,A.feedback()}),H.addEventListener("change",()=>{r.value=H.value!==A.initialInput}),H.addEventListener("blur",()=>{!a.value&&!t.suspendBlur?.()&&p()}),A.focus()}catch(M){t.onError(M instanceof Error?M.message:"无法编辑单元格",M)}}async function h(d){const P=d.target;if(!(P instanceof Element)||P.closest(".mrp-cell-editor"))return;const $=P.closest("td[data-mr-row-index]");$&&await y($)}return e.watch(t.options,(d,P)=>{(!d||d!==P)&&m()},{flush:"sync"}),e.watch(t.plan,()=>{n.value&&t.plan.value!==n.value.plan&&(n.value.editor.root.remove(),n.value=null,r.value=!1)},{flush:"sync"}),e.onScopeDispose(g),{...o,active:n,saving:a,changes:l,pendingLocalChanges:s,cancel:m,reset:g,commit:p,onDoubleClick:h,editCell:y,getChanges:()=>se(l.value)}}const Je=["html","pdf","xlsx","png","word"],vt=["search","thumbnails","zoom",...Je,"print","pdfWindow","editing","import"];function Ur(t){return{load:n=>JSON.parse(t.getItem(n)??"null"),save:(n,o)=>t.setItem(n,JSON.stringify(o)),remove:n=>t.removeItem(n)}}function Gr(t,n,o,a){const l=e.ref({});let r=0,s=0,i=Promise.resolve();const m=e.computed(()=>Object.fromEntries(vt.map(p=>[p,t.value[p]&&(l.value[p]??n.value[p]??!0)])));function g(p,v){t.value[p]&&(s++,l.value={...l.value,[p]:v},u())}function u(){const p=o?.value;if(!p)return;const v={...l.value};i=i.then(()=>p.adapter.save(p.key,v)).catch(y=>{a?.(y)})}function c(){s++,l.value={},u()}return o&&e.watch(o,async p=>{const v=++r,y=s;if(l.value={},!!p)try{const h=await p.adapter.load(p.key);if(v!==r||y!==s||!h||typeof h!="object")return;l.value=Object.fromEntries(vt.flatMap(d=>typeof h[d]=="boolean"?[[d,h[d]]]:[]))}catch(h){v===r&&a?.(h)}},{immediate:!0}),e.onScopeDispose(()=>{r++}),{enabled:m,setEnabled:g,reset:c}}function Jr(t,n,o){const a=e.ref({}),l=fn(),r=e.computed(()=>un(l.value,t.preset)),s=e.computed(()=>({...r.value.messages,...t.messages})),i=e.computed(()=>t.showExport??r.value.showExport),m=e.computed(()=>t.showPrint??r.value.showPrint),g=e.computed(()=>t.showPdfWindow??r.value.showPdfWindow),u=e.computed(()=>t.showSettings??r.value.showSettings),c=e.computed(()=>t.guardChanges??r.value.guardChanges),p=e.computed(()=>({...r.value.output,...t.output})),v=e.computed(()=>({...r.value.toolbar,...t.toolbar})),y=e.computed(()=>({...r.value.interaction,...t.interaction,...a.value})),h=e.computed(()=>t.preferences??r.value.preferences),d=e.computed(()=>t.assets??r.value.assets),P=e.computed(()=>t.gapPx??(n.value?0:r.value.gapPx)),$=e.computed(()=>t.showParams??r.value.showParams),D=e.computed(()=>t.editable??r.value.editable),M=e.computed(()=>t.excelImport??r.value.excelImport),V=e.computed(()=>({search:v.value.search!==!1,thumbnails:v.value.thumbnails!==!1,zoom:v.value.zoom!==!1,...Object.fromEntries(Je.map(k=>[k,i.value&&(v.value.exportFormats?.includes(k)??!0)])),print:m.value,pdfWindow:g.value,editing:!!D.value,import:!!M.value})),A=Gr(V,e.computed(()=>({editing:v.value.editing,import:v.value.excelImport})),h,()=>o(s.value.preferencesError??"Preferences storage unavailable")),H=A.enabled,q=e.computed(()=>Je.filter(k=>H.value[k])),U=e.computed(()=>H.value.editing?D.value:!1),b=e.computed(()=>H.value.import?M.value:!1),I=e.computed(()=>typeof D.value=="object"&&(typeof D.value.save=="function"||typeof D.value.saveBatch=="function")),C=e.computed(()=>typeof t.emptyState=="object"?t.emptyState:{});return{resolved:r,resolvedMessages:s,effectiveShowExport:i,effectiveShowPrint:m,effectiveShowPdfWindow:g,effectiveShowSettings:u,effectiveGuardChanges:c,effectiveOutput:p,effectiveInteraction:y,effectiveAssets:d,effectiveGapPx:P,effectiveShowParams:$,availableTools:V,tools:A,toolState:H,visibleExportFormats:q,effectiveEditable:U,effectiveExcelImport:b,persistedEditing:I,emptyStateContent:C,sessionInteraction:a}}function pn(t){return t.table.role==="header"?-Math.max(1,t.grid?.cells.length??1):t.table.rowIndex}function pe(t,n,o=n){const a=t.pages[n.pageIndex]?.components[n.componentIndex],l=a?.table,r=t.pages[o.pageIndex]?.components[o.componentIndex]?.table;return l&&r&&l.id===r.id?{grid:l.id,row:pn(a)+n.rowIndex,column:r.columnKeys.indexOf(l.columnKeys[n.columnIndex]??"")}:{grid:`${n.pageIndex}:${n.componentIndex}`,row:n.rowIndex,column:n.columnIndex}}function Kt(t,n){const o=t.pages[n.pageIndex]?.components[n.componentIndex]?.table;if(!o)return(l,r)=>({...n,rowIndex:l,columnIndex:r});const a=new Map;return t.pages.forEach((l,r)=>l.components.forEach((s,i)=>{s.table?.id!==o.id||!s.grid||s.grid.cells.forEach((m,g)=>{const u=pn(s)+g;a.set(u,[...a.get(u)??[],{address:{pageIndex:r,componentIndex:i,rowIndex:g,columnIndex:0},keys:s.table.columnKeys}])})})),(l,r)=>{const s=o.columnKeys[r];if(s===void 0)return null;const i=a.get(l)?.find(m=>m.keys.includes(s));return i?{...i.address,columnIndex:i.keys.indexOf(s)}:null}}function Zr(t,n){const o=[...t.ownerDocument.querySelectorAll("a[href],button,input,textarea,select,[tabindex]:not([tabindex='-1'])")].filter(r=>r.tabIndex>=0&&!r.matches(":disabled,[hidden],input[type='hidden']")&&!r.closest("[inert],[aria-hidden='true']")&&r.getClientRects().length>0).map((r,s)=>({element:r,order:s})).sort((r,s)=>(r.element.tabIndex||1/0)-(s.element.tabIndex||1/0)||r.order-s.order),a=o.findIndex(({element:r})=>r===t);if(a<0)return!1;const l=o[a+(n?-1:1)]?.element;return l?(l.focus(),t.ownerDocument.activeElement===l):!1}function Yr(t,n){const o=t?.source;return!Xr(t,n.field)||n.tableId!==void 0&&t?.table?.id!==n.tableId||n.datasetId!==void 0&&(o?.datasetId??t?.component.table?.source?.datasetId)!==n.datasetId?!1:n.rowKey===void 0||o?.rowKey===n.rowKey}function Xr(t,n){if((t?.source?.field??t?.table?.columnKey)===n)return!0;if(!t||t.table?.role!=="header")return!1;const o=t.address.columnIndex;return t.component.table?.columnKeys.slice(o,o+(t.cell.colSpan??1)).includes(n)??!1}function Qr(t,n){return t.pageIndex===n.pageIndex&&t.componentIndex===n.componentIndex}function _r(t,n){return Qr(t,n)&&t.rowIndex===n.rowIndex&&t.columnIndex===n.columnIndex}function ct(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 ht(t){return`${t.pageIndex}:${t.componentIndex}:${t.rowIndex}:${t.columnIndex}`}function el(t,n){const o=pe(t,n.anchor),a=pe(t,n.focus,n.anchor);return{grid:o.grid,minRow:Math.min(o.row,a.row),maxRow:Math.max(o.row,a.row),minColumn:Math.min(o.column,a.column),maxColumn:Math.max(o.column,a.column),focusKey:ht(n.focus),origin:t.pages[n.anchor.pageIndex]?.components[n.anchor.componentIndex]?.table}}function tl(t,n,o){const a=n?.table;if(!a||!o.origin||a.id!==o.origin.id)return{grid:`${t.pageIndex}:${t.componentIndex}`,rowOffset:0,missingColumn:-1};const l=new Map;return o.origin.columnKeys.forEach((r,s)=>{l.has(r)||l.set(r,s)}),{grid:a.id,rowOffset:a.role==="header"?-Math.max(1,n.grid?.cells.length??1):a.rowIndex,columns:a.columnKeys.map(r=>l.get(r)??-1),missingColumn:l.get("")??-1}}function nl(t,n,o){if(!o||!n||n.grid!==o.grid)return!1;const a=n.rowOffset+t.row,l=n.columns?n.columns[t.column]??n.missingColumn:t.column;return a>=o.minRow&&a<=o.maxRow&&l>=o.minColumn&&l<=o.maxColumn}function He(t,n,o){t.getAttribute(n)!==o&&t.setAttribute(n,o)}function ut(t,n,o){t.classList.contains(n)!==o&&t.classList.toggle(n,o)}function al(t,n,o,a,l,r){n.role!==o&&(He(t,"role",o),n.role=o),n.selected!==a&&(ut(t,"mrp-cell-selected",a),He(t,"aria-selected",String(a)),n.selected=a),n.focused!==l&&(ut(t,"mrp-cell-focus",l),He(t,"tabindex",l?"0":"-1"),n.focused=l),n.modified!==r&&(ut(t,"mrp-cell-modified",r),n.modified=r)}function ol(t){const n=e.shallowRef(null),o=new WeakMap,a=new WeakMap;let l=null,r=new Set;function s(b=t.root.value??void 0){if(!b)return;const I=n.value,C=t.plan.value,k=t.differences();k!==l&&(l=k,r=new Set(k.map(N=>ht(N.address))));const B=I&&C?el(C,I):null;b instanceof HTMLTableElement&&g(b,C,B);for(const N of b.querySelectorAll("table"))g(N,C,B)}function i(b){const I=o.get(b);if(I)return I;const C=b.closest("[data-mr-component-index]"),k=C?.closest(".mrp-page-holder"),B={pageIndex:Number(k?.dataset.page)-1,componentIndex:Number(C?.dataset.mrComponentIndex)};return Object.values(B).every(N=>Number.isInteger(N)&&N>=0)?(o.set(b,B),B):null}function m(b,I){const C=a.get(b);if(C)return C;const k=Number(b.dataset.mrRowIndex),B=Number(b.dataset.mrColumnIndex);if(![k,B].every(T=>Number.isInteger(T)&&T>=0))return null;const N={row:k,column:B,key:ht({...I,rowIndex:k,columnIndex:B})};return a.set(b,N),N}function g(b,I,C){const k=i(b);if(!k)return;const B=I?.pages[k.pageIndex]?.components[k.componentIndex],N=B?.table?.role==="header"?"columnheader":"gridcell",T=C?tl(k,B,C):null;He(b,"role","grid");for(const j of b.rows)for(const O of j.cells){const z=m(O,k);z&&al(O,z,N,nl(z,T,C),C?.focusKey===z.key,r.size>0&&r.has(z.key))}}async function u(b,I=!1){if(!t.plan.value||!K.getReportCellContext(t.plan.value,b))return!1;const C=n.value,k=I&&C&&pe(t.plan.value,C.anchor).grid===pe(t.plan.value,b,C.anchor).grid;n.value={anchor:k?C.anchor:{...b},focus:{...b}},t.root.value?.querySelector(ct(b))||t.gotoPage(b.pageIndex+1),await e.nextTick(),s();const B=t.root.value?.querySelector(ct(b));return B?.focus({preventScroll:!0}),B?.scrollIntoView?.({block:"nearest",inline:"nearest"}),!!B}function c(b){const I=b.target;if(!(I instanceof Element)||I.closest("textarea,input,button,select"))return;const C=I.closest("td[data-mr-row-index]"),k=C&&gt(C);if(!k||t.busy()||!t.plan.value||!K.getReportCellContext(t.plan.value,k))return;const B=n.value,N=b.shiftKey&&B&&pe(t.plan.value,B.anchor).grid===pe(t.plan.value,k,B.anchor).grid;n.value={anchor:N?B.anchor:{...k},focus:{...k}},s(),C.focus({preventScroll:!0})}function p(b){const I=t.plan.value?.pages[b.pageIndex]?.components[b.componentIndex];return I?.grid?X.resolveGridLayout(I.grid,I.widthMm,I.heightMm).cells.map(C=>({...b,rowIndex:C.ri,columnIndex:C.ci})):[]}function v(b,I,C){const k=p(b),B=C?-1:1;if(I==="Tab")return k[k.findIndex(j=>_r(j,b))+B];const N=I==="ArrowUp"||I==="ArrowDown"||I==="Enter",T=I==="ArrowUp"||I==="ArrowLeft"?-1:B;return k.filter(j=>N?j.columnIndex===b.columnIndex&&(j.rowIndex-b.rowIndex)*T>0:j.rowIndex===b.rowIndex&&(j.columnIndex-b.columnIndex)*T>0).sort((j,O)=>N?(j.rowIndex-O.rowIndex)*T:(j.columnIndex-O.columnIndex)*T)[0]}function y(b,I,C){if(I==="ArrowLeft"||I==="ArrowRight")return;const k=t.plan.value;if(!k.pages[b.pageIndex]?.components[b.componentIndex]?.table)return;const N=I==="ArrowUp"||C?-1:1;for(let T=b.pageIndex;T>=0&&T<k.pages.length;T+=N){const j=k.pages[T].components,O=T===b.pageIndex?b.componentIndex+N:N===1?0:j.length-1;for(let z=O;z>=0&&z<j.length;z+=N){const w=h(b,{...b,pageIndex:T,componentIndex:z},I,N);if(w)return w}}}function h(b,I,C,k){const B=t.plan.value,N=B.pages[b.pageIndex].components[b.componentIndex].table,T=B.pages[I.pageIndex].components[I.componentIndex]?.table;if(T?.id!==N.id||T.role==="header"&&N.role!=="header"&&(k>0||N.rowIndex+b.rowIndex>0))return;const j=p(I),O=C==="Tab"?j:j.filter(z=>z.columnIndex===b.columnIndex);return k===1?O[0]:O[O.length-1]}function d(b,I,C=!1,k=!1,B=!1){const N=v(b,I,C)??y(b,I,C);return N?(u(N,k),!0):((I!=="Tab"||!B)&&u(b),!1)}function P(b){const I=n.value;if(t.busy()||b.target instanceof Element&&b.target.closest("textarea,input,select"))return!1;if(!I)return D(b);const C=b.key,k=b.ctrlKey||b.metaKey;if(k&&C.toLowerCase()==="z")return b.preventDefault(),b.shiftKey?t.redo():t.undo(),!0;if(k&&C.toLowerCase()==="y")return b.preventDefault(),t.redo(),!0;if($(b,I.focus))return!0;if(!["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Tab","Enter"].includes(C))return!1;const B=d(I.focus,C,C==="Tab"&&b.shiftKey,b.shiftKey&&C!=="Tab",!0);if(C==="Tab"&&!B){const N=t.root.value?.ownerDocument.activeElement;if(!(N instanceof HTMLElement)||!Zr(N,b.shiftKey))return!1}return b.preventDefault(),!0}function $(b,I){if(!t.enabled()||!t.plan.value||b.key!=="F2"&&!(b.key==="Enter"&&K.getReportCellContext(t.plan.value,I)?.editable))return!1;const C=t.root.value?.querySelector(ct(I));return C&&(b.preventDefault(),t.edit(C)),!0}function D(b){if(!["ArrowDown","ArrowRight","ArrowUp","ArrowLeft","Enter"].includes(b.key))return!1;const I=t.root.value?.querySelector("td[data-mr-row-index]"),C=I&&gt(I);return C?(b.preventDefault(),u(C),!0):!1}function M(){const b=n.value,I=t.plan.value;if(!b||!I)return"";const C=[],k=pe(I,b.anchor),B=pe(I,b.focus,b.anchor),N=Kt(I,b.anchor),T=K.createReportCellResolver(I),j=Math.min(k.column,B.column),O=Math.max(k.column,B.column);if((Math.abs(k.row-B.row)+1)*(O-j+1)>1e4)return t.error(new K.ReportCellEditError("limit")),"";for(let z=Math.min(k.row,B.row);z<=Math.max(k.row,B.row);z++){const w=[];for(let S=j;S<=O;S++){const x=N(z,S);w.push(x?T(x)?.cell.text??"":"")}C.push(w)}return K.formatReportClipboard(C)}function V(b){!n.value||b.target instanceof Element&&b.target.closest("textarea,input,select")||(b.clipboardData?.setData("text/plain",M()),b.preventDefault())}async function A(b){const I=n.value;if(!I||!t.enabled()||t.busy())return!1;try{let C;try{C=K.parseReportClipboard(b)}catch(O){throw new K.ReportCellEditError(O instanceof Error&&O.message.includes("limit")?"limit":"clipboard")}const k=t.plan.value,B=pe(k,I.anchor),N=pe(k,I.focus,I.anchor),T=Kt(k,I.anchor),j=C.flatMap((O,z)=>O.map((w,S)=>{const x=T(Math.min(B.row,N.row)+z,Math.min(B.column,N.column)+S);if(!x)throw new K.ReportCellEditError("missing");return{address:x,value:w}}));return await t.apply(j)}catch(C){return t.error(C),!1}}function H(b){if(!n.value||!t.enabled()||b.target instanceof Element&&b.target.closest("textarea,input,select")||!b.clipboardData?.types.includes("text/plain"))return;const I=b.clipboardData?.getData("text/plain");I&&(b.preventDefault(),A(I))}async function q(b){const I=t.plan.value;if(!I)return!1;const C=K.createReportCellResolver(I);for(let k=0;k<I.pages.length;k++){const B=I.pages[k];for(let N=0;N<B.components.length;N++)for(const T of p({pageIndex:k,componentIndex:N,rowIndex:0,columnIndex:0})){const j=C(T);if(Yr(j,b))return u(T)}}return!1}function U(){n.value=null,s()}return{selection:n,refresh:s,reset:U,focusCell:u,focusField:q,navigate:d,onClick:c,onKeydown:P,onCopy:V,onPaste:H,copySelection:M,pasteSelection:A}}function rl(t){let n=0,o=!1;function a(){const r=t.viewport.value,s=t.root.value,i=t.plan.value;if(!r||!s||!i)return;const m=t.options(),g=Math.max(0,Math.min(20,Math.floor(m.frozenColumns??0)));if(!m.freezeHeaders&&g===0&&!o)return;const u=t.zoom.value||1,c=r.getBoundingClientRect();s.querySelectorAll("[data-mr-component-index]").forEach(p=>{const v=p.closest("[data-page]"),y=Number(v?.dataset.page)-1,h=i.pages[y]?.components[Number(p.dataset.mrComponentIndex)];if(!h?.grid||!v)return;p.style.transform="",p.style.zIndex="";const d=p.getBoundingClientRect(),P=v.getBoundingClientRect().bottom,$=Math.max(0,(c.left-d.left)/u),D=m.freezeHeaders?Math.max(0,Math.min((c.top-d.top)/u,(P-d.bottom)/u)):0;$>0&&g>0&&(p.style.zIndex="1"),h.table?.role==="header"&&D>0&&(p.style.transform=`translateY(${D}px)`,p.style.zIndex="5"),p.querySelectorAll(".mrp-cell-frozen").forEach(V=>{V.style.transform="",V.style.zIndex="",V.classList.remove("mrp-cell-frozen")});const M=Array.from({length:g},(V,A)=>`td[data-mr-column-index="${A}"]`);!h.table&&m.freezeHeaders&&M.push('td[data-mr-row-index="0"]'),M.length&&p.querySelectorAll(M.join(",")).forEach(V=>{const A=Number(V.dataset.mrColumnIndex)<g,H=!h.table&&Number(V.dataset.mrRowIndex)===0&&!!m.freezeHeaders,q=A?$:0,U=H?D:0;V.style.transform=q||U?`translate(${q}px, ${U}px)`:"",V.classList.toggle("mrp-cell-frozen",!!(q||U)),V.style.zIndex=q||U?H?"7":"6":""})}),o=!!m.freezeHeaders||g>0}function l(){n||(n=requestAnimationFrame(()=>{n=0,a()}))}return e.onScopeDispose(()=>{n&&cancelAnimationFrame(n)}),{refresh:a,schedule:l}}async function gn(t,n,o,a){if(!n?.assetRenderers||!Object.keys(n.assetRenderers).length)return t;try{return(await K.resolvePlanAssets(t,{...n,signal:o,format:"dom",onDiagnostic:r=>{o.aborted||(n.onDiagnostic?.(r),a(r.message))}})).plan}catch(l){throw o.aborted?l:new le("render",l instanceof Error?l.message:"Report asset preparation failed",l)}}function vn(t,n){const o=K.validateRenderPlan(t);if(!o.ok)throw new le("validate",`渲染计划校验失败(${o.errors.length} 处): ${o.errors.slice(0,3).map(a=>`${a.path}: ${a.message}`).join("; ")}`);o.warnings.forEach(a=>n(`${a.path}: ${a.message}`))}async function ll(t,n,o,a){const l=await X.waitForOutput(t(n),n.signal);return X.assertOutputActive(n.signal),a("validate"),vn(l,n.onWarning??(()=>{})),X.assertOutputActive(n.signal),a("assets"),gn(l,o,n.signal,n.onWarning??(()=>{}))}async function sl(t,n,o,a,l,r){const{importExcelTemplate:s}=await import("@agile-team/mach-report/xlsx");X.assertOutputActive(a);const i=await X.waitForOutput(s(t,{...n,signal:a}),a);r("layout");const m=K.paginateTemplate(se(i.template),{}).plan;vn(m,l),X.assertOutputActive(a),r("assets");const g=await gn(m,o,a,l);return{result:i,plan:g}}const il={key:7,class:"mrp-edit-hint",role:"status"},cl={key:9,class:"mrp-export-notice mrp-export-warning",role:"status"},ul={class:"mrp-main"},dl={key:0,class:"mrp-state"},fl={key:1,class:"mrp-state mrp-error"},ml=["data-page"],pl=["aria-label","aria-current","onClick"],gl=["data-thumb"],vl={class:"mrp-thumb-no"},hl={class:"mrp-overlay"},bl={key:10,class:"mrp-debug","aria-hidden":"true"},dt=96/25.4,ft="mach-report:ui",mt="mach-report:ui:wide",yl=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:o}){const a=t,l=o,r=e.shallowRef(null),s=e.ref(!1),i=e.ref(""),m=e.shallowRef(null),g=e.ref(null),u=e.ref(!1),c=e.ref(null),p=e.ref(1),v=e.ref(null),y=e.ref(null),h=e.ref(null),d=e.ref(!1),P=e.ref(!1),$=e.ref(!1),D=e.shallowRef(null),M=e.ref(null),V=e.ref(null),A=xa();let H=null,q=!1;const U=Mo(f=>l("task",f)),b=Vo(f=>l("diagnostic",f)),I=e.shallowRef(null),C=e.computed(()=>!!r.value?.pages.length&&r.value.pages.every(f=>f.layout==="wide"));let k=ft;const B=e.inject(Pe.MACH_REPORT_FETCHER_KEY,null),N=e.inject(Pe.MACH_REPORT_PDF_EXPORTER_KEY,null),T=e.computed(()=>bt(a.reportId)),j=e.computed(()=>a.fetcher??B),O=e.computed(()=>r.value?.pages.length??0),z=e.computed(()=>Object.freeze({loading:s.value,hasPlan:O.value>0,pageCount:O.value,currentPage:p.value,exporting:g.value,printing:u.value,canExport:!s.value&&!P.value&&!F.saving.value&&O.value>0&&g.value===null,canPrint:!s.value&&!P.value&&!F.saving.value&&O.value>0&&!u.value,error:m.value,pdfFont:kt.value,editing:F.active.value!==null,saving:F.saving.value,importing:P.value,dirty:F.differences.value.length>0,pendingLocalChanges:F.pendingLocalChanges.value,task:U.state.value,diagnostics:b.entries.value,reportIds:I.value?.reportIds??[],params:I.value?.params??{},canUndo:F.canUndo.value,canRedo:F.canRedo.value,changeCount:F.differences.value.length,selection:Y.selection.value?se(Y.selection.value):null}));function w(f,E,R){m.value=Object.freeze({message:f,code:E,cause:R}),l("error",f,{code:E,cause:R})}const{resolved:S,resolvedMessages:x,effectiveShowExport:L,effectiveShowSettings:W,effectiveGuardChanges:G,effectiveOutput:te,effectiveInteraction:ae,effectiveAssets:ge,effectiveGapPx:Te,effectiveShowParams:bn,availableTools:yn,tools:yt,toolState:ne,visibleExportFormats:wn,effectiveEditable:Fe,effectiveExcelImport:Oe,persistedEditing:wt,emptyStateContent:Ze,sessionInteraction:Ye}=Jr(a,C,f=>l("warning",f)),xt=e.computed(()=>ne.value.pdf||ne.value.pdfWindow),{pdfFont:kt,getPdfExporter:xn,checkPdfFont:kn,retryPdfFont:Et,cancelFontCheck:En}=Ro({plan:r,fontUrl:()=>S.value.pdfFontUrl,enabled:()=>xt.value,injectedExporter:N,destroyed:()=>q});async function Cn(f,E){f==="editing"&&!E&&!await F.commit()||(yt.setEnabled(f,E),l("preferences-change",Object.freeze({...ne.value})))}async function Sn(){await F.commit()&&(yt.reset(),Ye.value={},l("preferences-change",Object.freeze({...ne.value})))}async function In(){if($.value){$.value=!1;return}!await F.commit()||q||!W.value||($.value=!0)}function Ct(f){return f instanceof K.ReportCellEditError?{number:x.value.editInvalidNumber,boolean:x.value.editInvalidBoolean,conflict:x.value.editConflict,atomic:x.value.editAtomicRequired,limit:x.value.clipboardLimit,readonly:x.value.editReadOnly,missing:x.value.editMissing,duplicate:x.value.editDuplicate,clipboard:x.value.clipboardInvalid}[f.code]??f.message:f instanceof Error?f.message:"单元格保存失败"}const F=Kr({plan:r,options:Fe,blocked:()=>s.value||P.value||g.value!==null||u.value||de.pending.value,label:()=>x.value.editCell??"编辑单元格",errorMessage:Ct,suspendBlur:()=>de.request.value!==null,onChange:f=>{m.value=null,c.value=null,l("cell-edit",f)},onError:(f,E)=>{c.value={kind:"error",message:f},w(f,"edit",E)},onNavigate:(f,E,R)=>Y.navigate(f,E,R)}),Y=ol({plan:r,root:v,enabled:()=>!!Fe.value,busy:()=>s.value||P.value||F.saving.value||!!g.value||u.value||de.pending.value,differences:()=>F.differences.value,gotoPage:ie,edit:F.editCell,apply:F.apply,undo:F.undo,redo:F.redo,error:f=>{const E=Ct(f);c.value={kind:"error",message:E},w(E,"edit",f)}}),de=Do({pending:()=>F.pendingLocalChanges.value,reportIds:()=>I.value?.reportIds??T.value,hook:()=>a.beforeDiscard??S.value.beforeDiscard,enabled:()=>G.value,snapshot:()=>[r.value,F.active.value?.editor.input.value],error:f=>w(f instanceof Error?f.message:"修改保护回调失败","config",f)});async function Pn(f="leave"){return de.check(f)}function St(f){!G.value||!F.pendingLocalChanges.value||(f.preventDefault(),f.returnValue="")}function It(){U.cancel()}async function Bn(f){await Y.focusField(f)||(c.value={kind:"warning",message:x.value.locateFieldMissing??"Field not found"})}function $n(f){if(f.pageIndex===void 0)return;ie(f.pageIndex+1);const E=f.componentPath;f.componentIndex!==void 0&&E&&E.length===2&&Y.focusCell({pageIndex:f.pageIndex,componentIndex:f.componentIndex,rowIndex:E[0],columnIndex:E[1]})}function Xe(f){const E=r.value;if(!E)return!1;const R={excel:"xlsx",image:"png",doc:"word"}[f]??f,Q=R==="pdf"?"pdf":R==="xlsx"?"xlsx":R==="png"?"canvas":"dom",J=b.inspect(E,Q);return r.value!==E?!1:J.length&&te.value.fidelity==="strict"?(c.value={kind:"error",message:x.value.diagnosticsStrict??"输出存在已知降级"},w(c.value.message,"export",{diagnostics:J}),!1):!0}function Rn(f){return r.value?b.inspect(r.value,f):[]}const Dn=e.computed(()=>{if(D.value)return D.value.sheets.map(E=>({label:E.name,pageIndex:E.pageStart}));const f=new Set;return r.value?.pages.flatMap((E,R)=>E.components.flatMap(Q=>{const J=Q.table;return!J?.title||f.has(J.id)?[]:(f.add(J.id),[{label:J.title,pageIndex:R}])}))??[]});async function Nn(f){f&&!await Y.focusField({field:f})&&(c.value={kind:"warning",message:x.value.locateFieldMissing??"Field not found"})}const Qe=e.computed(()=>{try{return{defs:a.paramDefs??j.value?.getParamDefs?.(T.value)??[],error:null}}catch(f){return{defs:[],error:new le("config",f instanceof Error?f.message:"查询参数配置无效",f)}}}),_e=e.computed(()=>Qe.value.defs),Be=Oo({defs:_e,reportIds:T,params:()=>a.params,messages:()=>x.value}),{values:$e,attempted:Le,pendingRequired:Pt}=Be,Bt=e.ref(null);function Mn(){Le.value=!0,Be.validation.value.ok||e.nextTick(()=>Bt.value?.focusInvalid()),we()}function Vn(){Be.reset(),i.value="",m.value=null}const Tn=e.computed(()=>({height:a.height,"--mrp-page-gap":`${Math.max(0,Te.value)}px`,...dn(S.value.theme)})),{zoom:oe,zoomMode:Re,applyFitZoom:$t,setZoom:De}=Zt(()=>({viewport:y.value,pageWidthPx:et.contentSize.value.w||210*dt})),et=Jt(r,oe,{pxPerMm:dt,gapPx:Te,overscan:e.computed(()=>S.value.preview.overscanPages)}),{contentSize:tt,windowRange:Ne,visiblePages:Rt,makeScrollHandler:Fn,refreshViewport:nt}=et,On=Fn(p,O),at=rl({root:v,viewport:y,plan:r,zoom:oe,options:()=>ae.value});e.watch([ae,oe],()=>at.schedule(),{flush:"post"});function ot(f){De(f*100)}function ye(){P.value=!1,F.reset(),Y.reset(),D.value=null,Nt(),r.value=null,I.value=null,b.reset(),p.value=1,Z.reset()}let _=0,ee=null;function Ae(f,E){return f===_&&!E.signal.aborted&&!q}function Dt(){y.value&&(y.value.scrollTop=0,y.value.scrollLeft=0)}function Ln(f,E){for(const R of f){if(E!==_)return!1;l("warning",R)}return E===_}function An(){if(Qe.value.error){const E=Qe.value.error;return ye(),i.value=E.message,w(E.message,E.code,E.cause),null}const f=Be.query();return f.params?f.params:(ye(),i.value=f.quiet?"":f.error.message,f.quiet||(Le.value=!0,w(f.error.message,f.error.code,f.error.cause)),null)}async function we(){if(q||G.value&&F.pendingLocalChanges.value&&!await de.check("reload")||q)return;const f=++_;P.value=!1,ee?.abort(),ee=null;const E=j.value;if(s.value=!1,m.value=null,T.value.length===0){i.value="缺少报表 ID",ye(),w(i.value,"param");return}if(!E){i.value="未提供渲染数据源 fetcher",ye(),w(i.value,"config");return}const R=An();if(!R)return;s.value=!0,i.value="",c.value=null,ye();const Q=A.start(),J=new AbortController;ee=J;const me=U.start("query","query",()=>{ee===J&&(J.abort(),_++,ee=null,s.value=!1)}),ze=[...T.value],ce=Object.freeze({...R}),ve=new Set;function Ee(re){f!==_||J.signal.aborted||ve.has(re)||(ve.add(re),S.value.logger.warn("[mach-report] 报表告警:",re),b.add({code:"layout",severity:"warning",message:re}),l("warning",re))}try{const re=await ll(E,{reportIds:ze,params:R,taskId:me.taskId,onEvent:be=>{f===_&&!J.signal.aborted&&me.update(be.stage,be.completed,be.total)},onQueryResult:(be,Xn)=>{f===_&&!J.signal.aborted&&b.addMany(Xn.diagnostics??[])},signal:J.signal,onWarning:Ee},ge.value,me.update);if(!Ae(f,J)||(r.value=re,I.value=Object.freeze({reportIds:Object.freeze(ze),params:ce}),b.inspect(re,"dom"),!Ae(f,J)))return;me.finish(),p.value=1,A.end(Q),Dt();const Ce=C.value?mt:ft;Ce!==k&&(k=Ce,st()),Re.value==="fit"&&$t(),l("loaded",re.pages.length)}catch(re){if(f!==_)return;if(J.signal.aborted){me.finish("cancelled");return}me.finish("failed");const Ce=nn(re);i.value=Ce.message;const be=tn(Ce);w(Ce.message,be.code,be.cause)}finally{f===_&&(s.value=!1),ee===J&&(ee=null)}}function ie(f){if(q||O.value<=0)return;const E=Math.max(1,Math.min(O.value,f));p.value=E;const R=y.value;R&&(R.scrollTop=et.pageOffsetPx(E-1)*oe.value,nt(R),Zn.prioritize(E-1))}const xe=Qt(r,{getPdfExporter:xn,onTask:f=>U.receive(f,()=>xe.cancel()),onDiagnostic:b.add,getXlsxOptions:()=>S.value.xlsx,onError:(f,E)=>{c.value={kind:"error",message:f},w(f,E??"print")},onWarning:f=>{c.value={kind:"warning",message:f},b.add({code:"output",severity:"warning",message:f}),l("warning",f)},onBusy:f=>{g.value=f,f?c.value={kind:"progress",message:x.value.exporting.replace("{format}",f)}:c.value?.kind==="progress"&&(c.value=null)},onPrinting:f=>{u.value=f}}),{releasePrintFrame:Nt,dispose:zn}=xe;async function Mt(){s.value||P.value||F.active.value&&!await F.commit()||(m.value=null,Xe("html")&&await xe.print())}async function Vt(f){s.value||P.value||F.active.value&&!await F.commit()||(m.value=null,Xe(f)&&await xe.exportAs(f))}function Tt(){if(s.value||P.value||F.active.value){c.value={kind:"warning",message:x.value.editingHint??"请先确认单元格修改"};return}m.value=null,Xe("pdf")&&xe.openPdfWindow()}async function qn(f,E={}){q||($e.value={...$e.value,...f},E.reload!==!1&&(Le.value=!0,await we()))}const Ft={reload:we,print:Mt,exportAs:Vt,openPdfWindow:Tt,gotoPage:ie,setParams:qn,checkPdfFont:kn,importExcel:Ot,getPlan:jn,cancelTask:It,confirmDiscard:Pn,getOutputDiagnostics:Rn,getChanges:F.getChanges,undo:F.undo,redo:F.redo,restoreChanges:F.restore,getDifferences:()=>se(F.differences.value),getSelection:()=>Y.selection.value?se(Y.selection.value):null,focusCell:Y.focusCell,focusField:Y.focusField,copySelection:Y.copySelection,pasteSelection:Y.pasteSelection,get state(){return z.value}};e.provide(Pe.MACH_REPORT_CONTROLLER_KEY,Ft);function jn(){return r.value?se(r.value):null}function Wn(f){const E=typeof Oe.value=="object"?Oe.value:{};return{...E,...f,limits:{...E.limits,...f?.limits}}}function Hn(f,E){F.reset(),Y.reset(),Nt(),Z.reset(),r.value=f,I.value=null,b.reset(),D.value={sheets:se(E.sheets),warnings:[...E.warnings]},p.value=1,i.value="",c.value=E.warnings.length?{kind:"warning",message:E.warnings.join(";")}:null,Dt(),k=C.value?mt:ft,st(),b.addMany(E.warnings.map(R=>({code:"excel-import",severity:"warning",message:R}))),r.value===f&&b.inspect(f,"dom")}async function Ot(f,E){if(q)throw new le("config","报表预览已卸载");if(G.value&&F.pendingLocalChanges.value&&!await de.check("import")||q)return null;const R=++_;ee?.abort(),ee=null,s.value=!1,F.cancel(),xe.invalidatePending(),P.value=!0;const Q=new AbortController;ee=Q,m.value=null,c.value={kind:"progress",message:x.value.importing??"正在导入 Excel…"};const J=U.start("import","import",()=>{ee===Q&&(Q.abort(),_++,ee=null,P.value=!1,c.value=null)}),me=Wn(E),ze=X.forwardOutputAbort(me.signal,Q);try{const{result:ce,plan:ve}=await sl(f,{...me,onProgress:(Ee,re)=>{J.update("import",Ee,re),me.onProgress?.(Ee,re)}},ge.value,Q.signal,Ee=>{R===_&&l("warning",Ee)},J.update);return!Ae(R,Q)||!Ln(ce.warnings,R)||(Hn(ve,ce),!Ae(R,Q))?null:(J.finish(),l("template-import",ce),R===_&&l("loaded",ve.pages.length),ce)}catch(ce){if(R!==_)return null;if(Q.signal.aborted)return J.finish("cancelled"),null;J.finish("failed");const ve=new le("import",ce instanceof Error?ce.message:"Excel 模板导入失败",ce);throw c.value={kind:"error",message:ve.message},w(ve.message,"import",ce),ve}finally{ze(),R===_&&(P.value=!1),ee===Q&&(ee=null)}}function Kn(f){const E=f.target,R=E.files?.[0];E.value="",R&&Ot(R).catch(()=>{})}const Z=ba({plan:r,gotoPage:ie,debounceMs:e.computed(()=>S.value.preview.searchDebounceMs),highlight:da,clearHighlights:ua});e.watch(()=>ne.value.search,f=>{f||(Z.reset(),Z.visible.value=!1)});function Un(f){!f.ctrlKey||!ne.value.zoom||(f.preventDefault(),ot(oe.value*(f.deltaY<0?1.1:1/1.1)))}function Gn(f){if(!Y.onKeydown(f)&&!(f.target instanceof Element&&f.target.closest("input,textarea,select,[contenteditable='true']"))){if(ne.value.search&&(f.ctrlKey||f.metaKey)&&f.key.toLowerCase()==="f"){f.preventDefault(),Z.visible.value||Z.toggle(),e.nextTick(()=>V.value?.focusSearch());return}switch(f.key){case"PageDown":f.preventDefault(),ie(p.value+1);break;case"PageUp":f.preventDefault(),ie(p.value-1);break;case"Home":f.preventDefault(),ie(1);break;case"End":f.preventDefault(),ie(O.value);break;case"+":case"=":f.preventDefault(),ne.value.zoom&&ot(oe.value*1.1);break;case"-":f.preventDefault(),ne.value.zoom&&ot(oe.value/1.1);break}}}function Jn(){try{localStorage.setItem(k,JSON.stringify({zoomMode:Re.value==="fit"?"fit":Math.round(oe.value*100)}))}catch{}}e.watch([Re,oe],Jn);let rt="";function Lt(f=!1){const E=Z.activeMatch.value;if(!C.value||!E)return;const R=`${Z.query.value}:${Z.matchIndex.value}:${E.pageIndex}`;if(!f&&R===rt)return;const J=v.value?.querySelector(`[data-page="${E.pageIndex+1}"]`)?.querySelectorAll("mark.mrp-hit")[E.occurrence];J&&(J.scrollIntoView?.({block:"nearest",inline:"nearest"}),rt=R)}const Zn=la({plan:r,root:v,pages:()=>Rt.value,priority:()=>Z.activeMatch.value?.pageIndex??p.value-1,focusToken:()=>Z.activeMatch.value,query:()=>Z.query.value,zoom:()=>oe.value,loading:()=>x.value.loading,clear:Z.clear,highlight:Z.apply,mounted:f=>{Y.refresh(f),at.schedule()},ready:()=>{Z.activeMatch.value||(rt=""),Lt()},error:f=>{i.value=f instanceof Error?f.message:String(f),w(i.value,"render",f)}});e.watch(()=>Y.selection.value,()=>{Y.refresh()},{flush:"post"}),e.watch(()=>Z.query.value,f=>{f||v.value?.querySelectorAll(".mrp-page-holder").forEach(E=>{Z.clear(E)})});const fe=wa(r,{thumbsRoot:h,visible:d,renderThumbCanvas:f=>{try{const E=r.value.pages[f],R=Math.min(.2,116/Math.max(1,E.pageWidthMm*dt)),{canvases:Q}=K.renderPlanToCanvas(r.value,{start:f,end:f,dpr:R});return Q[0]??null}catch{return null}}});e.watchEffect(()=>{fe.schedule()},{flush:"post"});const Yn=e.computed(()=>a.debug),{debugStats:ke}=ya(Yn,{plan:r,pageCount:O,windowRange:Ne,zoom:oe,loadMs:A.loadMs});function lt(){nt(y.value),fe.schedule(),Re.value==="fit"&&$t(),Lt(!0)}function st(){De(k===mt?100:"fit");try{const f=JSON.parse(localStorage.getItem(k)??"{}");f.zoomMode==="fit"?De("fit"):typeof f.zoomMode=="number"&&De(f.zoomMode)}catch{}}return e.onMounted(()=>{window.addEventListener("resize",lt),window.addEventListener("beforeunload",St),typeof ResizeObserver<"u"&&y.value&&(H=new ResizeObserver(lt),H.observe(y.value)),nt(y.value),st(),a.autoLoad&&we()}),e.onUnmounted(()=>{q=!0,de.cancel(),U.cancel(),F.reset(),P.value=!1,En(),_++,ee?.abort(),ee=null,window.removeEventListener("resize",lt),window.removeEventListener("beforeunload",St),H?.disconnect(),H=null,fe.destroy(),Z.reset(),zn()}),e.watch(()=>[JSON.stringify(T.value),JSON.stringify(a.params),j.value],async()=>{if(a.autoLoad){we();return}!await de.check("replace")||q||(_++,ee?.abort(),ee=null,s.value=!1,i.value="",m.value=null,c.value=null,ye())}),n({...Ft,state:z}),(f,E)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["mach-report-preview",{"mrp-wide-report":C.value}]),style:e.normalizeStyle(Tn.value)},[e.unref(bn)&&_e.value.length>0?(e.openBlock(),e.createBlock(rn,{key:0,ref_key:"paramPanelRef",ref:Bt,defs:_e.value,modelValue:e.unref($e),"onUpdate:modelValue":E[0]||(E[0]=R=>e.isRef($e)?$e.value=R:null),messages:e.unref(x),attempted:e.unref(Le),issues:e.unref(Be).validation.value.issues,onQuery:Mn,onReset:Vn},null,8,["defs","modelValue","messages","attempted","issues"])):e.createCommentVNode("",!0),e.createVNode(en,{ref_key:"toolbarRef",ref:V,"page-count":O.value,"current-page":p.value,"zoom-mode":e.unref(Re),zoom:e.unref(oe),"show-export":e.unref(L),"show-print":e.unref(ne).print,"show-pdf-window":e.unref(ne).pdfWindow,"show-search":e.unref(ne).search,"show-thumbnails":e.unref(ne).thumbnails,"show-zoom":e.unref(ne).zoom,"export-formats":e.unref(wn),"show-settings":e.unref(W),"settings-open":$.value,messages:e.unref(x),search:{visible:e.unref(Z).visible.value,query:e.unref(Z).query.value,matchIndex:e.unref(Z).matchIndex.value,matchCount:e.unref(Z).matchCount.value,searching:e.unref(Z).searching.value},"thumbs-visible":d.value,"show-import":!!e.unref(Oe),busy:s.value||P.value||e.unref(F).saving.value,onGoto:ie,onZoom:e.unref(De),onExport:E[1]||(E[1]=R=>Vt(R)),onPrint:Mt,onPdfWindow:Tt,onSearchInput:e.unref(Z).onInput,onSearchNav:e.unref(Z).onNav,onSearchToggle:e.unref(Z).toggle,onThumbsToggle:E[2]||(E[2]=R=>d.value=!d.value),onImportExcel:E[3]||(E[3]=R=>M.value?.click()),onSettingsToggle:In},null,8,["page-count","current-page","zoom-mode","zoom","show-export","show-print","show-pdf-window","show-search","show-thumbnails","show-zoom","export-formats","show-settings","settings-open","messages","search","thumbs-visible","show-import","busy","onZoom","onSearchInput","onSearchNav","onSearchToggle"]),e.unref(de).request.value?(e.openBlock(),e.createBlock(po,{key:1,messages:e.unref(x),onAnswer:e.unref(de).settle},null,8,["messages","onAnswer"])):e.createCommentVNode("",!0),e.createVNode(yo,{task:e.unref(U).state.value,messages:e.unref(x),onCancel:It},null,8,["task","messages"]),e.createVNode(Io,{entries:e.unref(b).entries.value,messages:e.unref(x),onLocate:$n},null,8,["entries","messages"]),$.value&&e.unref(W)?(e.openBlock(),e.createBlock(so,{key:2,available:e.unref(yn),enabled:e.unref(ne),messages:e.unref(x),"persisted-editing":e.unref(wt),interaction:e.unref(ae),busy:s.value||P.value||e.unref(F).saving.value||!!g.value||u.value,onInteraction:E[4]||(E[4]=R=>Ye.value={...e.unref(Ye),...R}),onChange:Cn,onReset:Sn,onClose:E[5]||(E[5]=R=>$.value=!1)},{default:e.withCtx(()=>[e.renderSlot(f.$slots,"settings",{},void 0,!0)]),_:3},8,["available","enabled","messages","persisted-editing","interaction","busy"])):e.createCommentVNode("",!0),O.value>0&&e.unref(ae).navigation!==!1?(e.openBlock(),e.createBlock(Sr,{key:3,plan:r.value,onLocateTarget:Bn,sections:Dn.value,"current-page":p.value,messages:e.unref(x),busy:s.value||P.value||e.unref(F).saving.value,onGoto:ie,onLocate:Nn},null,8,["plan","sections","current-page","messages","busy"])):e.createCommentVNode("",!0),D.value?(e.openBlock(),e.createBlock(Rr,{key:4,result:D.value,messages:e.unref(x)},null,8,["result","messages"])):e.createCommentVNode("",!0),e.unref(Fe)&&O.value>0?(e.openBlock(),e.createBlock(ur,{key:5,differences:e.unref(F).differences.value,conflicts:e.unref(F).conflicts.value,messages:e.unref(x),saving:e.unref(F).saving.value,"can-undo":e.unref(F).canUndo.value,"can-redo":e.unref(F).canRedo.value,persisted:e.unref(wt),busy:!!g.value||u.value,onUndo:e.unref(F).undo,onRedo:e.unref(F).redo,onRestore:e.unref(F).restore,onLocate:E[6]||(E[6]=R=>e.unref(Y).focusCell(R.address))},null,8,["differences","conflicts","messages","saving","can-undo","can-redo","persisted","busy","onUndo","onRedo","onRestore"])):e.createCommentVNode("",!0),e.unref(Oe)?(e.openBlock(),e.createElementBlock("input",{key:6,ref_key:"importInputRef",ref:M,class:"mrp-import-input",type:"file",accept:".xlsx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",hidden:"",onChange:Kn},null,544)):e.createCommentVNode("",!0),e.unref(Fe)&&O.value>0?(e.openBlock(),e.createElementBlock("div",il,e.toDisplayString(e.unref(F).saving.value?e.unref(x).saving:e.unref(x).editingHint),1)):e.createCommentVNode("",!0),c.value?(e.openBlock(),e.createElementBlock("div",{key:8,class:e.normalizeClass(["mrp-export-notice",`mrp-export-${c.value.kind}`]),role:"alert"},e.toDisplayString(c.value.message),3)):e.createCommentVNode("",!0),e.unref(kt).status==="error"&&xt.value?(e.openBlock(),e.createElementBlock("div",cl,[e.createTextVNode(e.toDisplayString(e.unref(x).pdfFontUnavailable)+" ",1),e.createElementVNode("button",{type:"button",onClick:E[7]||(E[7]=(...R)=>e.unref(Et)&&e.unref(Et)(...R))},e.toDisplayString(e.unref(x).retry),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",ul,[e.createElementVNode("div",{ref_key:"viewportRef",ref:y,class:"mrp-body",tabindex:"0",onWheel:Un,onKeydown:Gn,onDblclick:E[8]||(E[8]=(...R)=>e.unref(F).onDoubleClick&&e.unref(F).onDoubleClick(...R)),onClick:E[9]||(E[9]=(...R)=>e.unref(Y).onClick&&e.unref(Y).onClick(...R)),onCopy:E[10]||(E[10]=(...R)=>e.unref(Y).onCopy&&e.unref(Y).onCopy(...R)),onPaste:E[11]||(E[11]=(...R)=>e.unref(Y).onPaste&&e.unref(Y).onPaste(...R)),onScrollPassive:E[12]||(E[12]=R=>{e.unref(On)(R.target),e.unref(at).schedule()})},[s.value?(e.openBlock(),e.createElementBlock("div",dl,e.toDisplayString(e.unref(x).loading),1)):i.value?(e.openBlock(),e.createElementBlock("div",fl,[e.createTextVNode(e.toDisplayString(i.value)+" ",1),e.createElementVNode("button",{class:"mrp-retry",type:"button",onClick:we},e.toDisplayString(e.unref(x).retry),1)])):!r.value||O.value===0?(e.openBlock(),e.createBlock(jt,{key:2,title:e.unref(Pt)?e.unref(x).paramPrompt??e.unref(x).paramsTitle:e.unref(x).empty,description:e.unref(Pt)?e.unref(x).paramPromptDescription:e.unref(Ze).description??e.unref(x).emptyDescription},null,8,["title","description"])):(e.openBlock(),e.createElementBlock("div",{key:3,class:"mrp-scale",style:e.normalizeStyle({width:`${e.unref(tt).w*e.unref(oe)}px`,height:`${e.unref(tt).h*e.unref(oe)}px`})},[e.createElementVNode("div",{ref_key:"containerRef",ref:v,class:"mrp-scale-inner",style:e.normalizeStyle({transform:`scale(${e.unref(oe)})`,transformOrigin:"top left",width:`${e.unref(tt).w}px`})},[e.unref(Ne).padTopPx>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mrp-spacer-top",style:e.normalizeStyle({height:`${e.unref(Ne).padTopPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(Rt),R=>(e.openBlock(),e.createElementBlock("div",{key:R.index,class:"mrp-page-holder","data-page":R.index+1},null,8,ml))),128)),e.unref(Ne).padBottomPx>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:"mrp-spacer-bottom",style:e.normalizeStyle({height:`${e.unref(Ne).padBottomPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0)],4)],4)),!s.value&&!i.value&&r.value&&O.value>0&&t.emptyState?(e.openBlock(),e.createBlock(jt,{key:4,title:e.unref(Ze).title??e.unref(x).empty,description:e.unref(Ze).description??e.unref(x).emptyDescription},null,8,["title","description"])):e.createCommentVNode("",!0)],544),e.unref(ne).thumbnails&&d.value&&O.value>0?(e.openBlock(),e.createElementBlock("aside",{key:0,ref_key:"thumbsRef",ref:h,class:"mrp-thumbs",onScrollPassive:E[13]||(E[13]=(...R)=>e.unref(fe).onScroll&&e.unref(fe).onScroll(...R))},[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,R=>(e.openBlock(),e.createElementBlock("button",{key:R.index,class:e.normalizeClass(["mrp-thumb",{"mrp-thumb-active":R.index+1===p.value}]),type:"button","aria-label":`${e.unref(x).thumbnails} · ${e.unref(x).pageInfo.replace("{cur}",String(R.index+1)).replace("{total}",String(O.value))}`,"aria-current":R.index+1===p.value?"page":void 0,style:e.normalizeStyle({height:`${R.height+20}px`}),onClick:Q=>ie(R.index+1)},[e.createElementVNode("span",{class:"mrp-thumb-box","data-thumb":R.index+1,style:e.normalizeStyle({height:`${R.height}px`})},null,12,gl),e.createElementVNode("span",vl,e.toDisplayString(R.index+1),1)],14,pl))),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)]),e.createElementVNode("div",hl,[e.renderSlot(f.$slots,"default",{},void 0,!0)]),e.unref(ke)?(e.openBlock(),e.createElementBlock("div",bl,[E[14]||(E[14]=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))}}),hn=ue._export_sfc(yl,[["__scopeId","data-v-f0801c0a"]]),wl=Object.freeze(Object.defineProperty({__proto__:null,default:hn},Symbol.toStringTag,{value:"Module"}));exports.DEFAULT_MESSAGES=ln;exports.DEFAULT_THEME=sn;exports.MachReportError=le;exports.PlanLoadError=qe;exports.REPORT_EXPORT_FORMATS=Je;exports.REPORT_PREVIEW_TOOLS=vt;exports.ReportParamPanel=rn;exports.ReportPreview=hn;exports.ReportPreview$1=wl;exports.ReportToolbar=en;exports.SILENT_LOGGER=Nr;exports.buildPrintDocument=Yt;exports.buildWordHtml=ca;exports.cloneReportSnapshot=se;exports.createDefaultPdfExporter=an;exports.createFetchRequest=ra;exports.createReportStoragePreferences=Ur;exports.defineMachReportConfig=cn;exports.defineMachReportPreset=Dr;exports.joinReportIds=oa;exports.normalizeReportIds=bt;exports.normalizeReportLoadError=nn;exports.printPlans=ia;exports.provideMachReportConfig=Vr;exports.resolveConfig=un;exports.themeToCssVars=dn;exports.toErrorDetail=tn;exports.useMachReportConfig=fn;exports.usePageWindow=Jt;exports.usePrintExport=Qt;exports.useZoom=Zt;