@agile-team/mach-report 2.19.0 → 2.19.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +0,0 @@
1
- "use strict";var aa=Object.create;var Zt=Object.defineProperty;var oa=Object.getOwnPropertyDescriptor;var ra=Object.getOwnPropertyNames;var la=Object.getPrototypeOf,sa=Object.prototype.hasOwnProperty;var ia=(t,n,a,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of ra(n))!sa.call(t,o)&&o!==a&&Zt(t,o,{get:()=>n[o],enumerable:!(r=oa(n,o))||r.enumerable});return t};var He=(t,n,a)=>(a=t!=null?aa(la(t)):{},ia(n||!t||!t.__esModule?Zt(a,"default",{value:t,enumerable:!0}):a,t));const e=require("vue"),U=require("@agile-team/mach-report"),ce=require("./prefill-D7EswyTI.cjs"),X=require("./progress-B0ctFpKf.cjs"),ie=require("./ReportParamPanel-sOANVRz-.cjs"),pt=require("./prepared-CGVphji3.cjs"),Yt=require("./sha256-DgZAKXqI.cjs"),sn=require("./component-tree-6TV7W6Yj.cjs"),W=require("./_plugin-vue_export-helper-BLmdZLlg.cjs"),ca=require("./computed-4TnxzgIh.cjs"),Et=require("./json-snapshot-jiXff4lc.cjs"),Ct=require("./grid-geometry-CZ_cYB6O.cjs"),gt=require("./injection-keys-Db_DyLkm.cjs");function St(t){return t==null?[]:Array.isArray(t)?t.map(String).filter(n=>n!==""):String(t).split(",").map(n=>n.trim()).filter(n=>n!=="")}function ua(t){return St(t).join(",")}class Je extends Error{constructor(n){super(n),this.name="PlanLoadError"}}function da(t={}){const{baseUrl:n="",headers:a,credentials:r,timeoutMs:o=3e4}=t,l=n.replace(/\/+$/,"");return async({url:s,method:i,params:c,signal:u})=>{let m=`${l}${s}`;if(c&&Object.keys(c).length>0){const y=m.indexOf("#"),D=y>=0?m.slice(y):"",v=y>=0?m.slice(0,y):m,k=v.indexOf("?"),$=k>=0?v.slice(0,k):v,w=new URLSearchParams(k>=0?v.slice(k+1):"");for(const[N,M]of Object.entries(c))w.set(N,M);m=`${$}?${w}${D}`}const d=(y,D)=>{const v=new Je(y);return Object.defineProperty(v,"cause",{value:D,configurable:!0,writable:!0}),v};if(u?.aborted)throw d(`请求已取消: ${s}`,u.reason);const f=new AbortController;let b;const p=()=>{f.signal.aborted||(b="external",f.abort(u?.reason))};u?.addEventListener("abort",p,{once:!0});const g=setTimeout(()=>{f.signal.aborted||(b="timeout",f.abort())},o);try{const y=await fetch(m,{method:i.toUpperCase(),headers:{Accept:"application/json",...a},credentials:r,signal:f.signal});if(!y.ok)throw new Je(`HTTP ${y.status} ${s}`);return await y.json()}catch(y){throw b==="timeout"?d(`请求超时(${o}ms): ${s}`,y):b==="external"?d(`请求已取消: ${s}`,y):y instanceof Je?y:d(`请求失败(${s}): ${y instanceof Error?y.message:String(y)}`,y)}finally{clearTimeout(g),u?.removeEventListener("abort",p)}}}function cn(t,n,a={}){const r=a.pxPerMm??3.7795275590551185,o=e.computed(()=>Math.max(0,e.unref(a.gapPx)??18)),l=e.ref(0),s=e.ref(800),i=e.computed(()=>{const v=t.value?.pages??[];return ce.createPageWindowIndex(v.map(k=>k.pageHeightMm*r),o.value)}),c=e.computed(()=>{let v=0;for(const k of t.value?.pages??[])v=Math.max(v,k.pageWidthMm*r);return{w:v,h:i.value.totalHeightPx}}),u=e.computed(()=>i.value.window(s.value/n.value,l.value/n.value,e.unref(a.overscan)??1)),m=e.computed(()=>{const v=t.value;if(!v)return[];const{start:k,end:$}=u.value;return v.pages.slice(k,$+1).map((w,N)=>({page:w,index:k+N}))});let d=0,f=!1,b;function p(v){v&&(l.value=v.scrollTop,s.value=v.clientHeight||800)}function g(v,k){v.scrollTop=i.value.offsetAt(k)*n.value,b={top:v.scrollTop,index:k,zoom:n.value,geometry:i.value},p(v)}function y(v,k){return $=>{d||f||(d=requestAnimationFrame(()=>{if(d=0,f||(p($),k.value<=0))return;if(b&&b.top===$.scrollTop&&b.zoom===n.value&&b.geometry===i.value){v.value=Math.min(k.value,b.index+1);return}b=void 0;const w=Math.max(0,$.scrollTop+32)/n.value;v.value=Math.min(k.value,i.value.pageAt(w)+1)}))}}function D(){f=!0,d&&cancelAnimationFrame(d),d=0}return e.onScopeDispose(D),{contentSize:c,windowRange:u,visiblePages:m,makeScrollHandler:y,refreshViewport:p,scrollToPage:g,pageOffsetPx:v=>i.value.offsetAt(v),destroy:D}}const Ue=96/25.4;function ma(t){const n=new WeakMap,a=e.ref(0);let r,o=0,l=0,s=!1,i=0;function c(){o++,l&&cancelAnimationFrame(l),l=0}function u(w,N,M,x){return!s&&N===o&&t.plan.value===M&&t.root.value===x&&x.contains(w.holder)&&Number(w.holder.dataset.page)===w.index+1}function m(w){const{holder:N,page:M}=w;n.delete(N),N.style.width=`${M.pageWidthMm*Ue}px`,N.style.height=`${M.pageHeightMm*Ue}px`,N.setAttribute("aria-busy","true");const x=N.ownerDocument.createElement("div");x.className="mrp-page-loading";const I=N.ownerDocument.createElement("span");I.textContent=t.loading(),I.style.transform=`scale(${1/Math.max(1e-4,t.zoom())})`,x.append(I),N.replaceChildren(x)}function d(w){const N=n.get(w.holder);if(!N||N.page!==w.page||N.element.parentElement!==w.holder)return!1;const M=!!N.element.querySelector(".mrp-cell-editor-host");return N.windowed!==y(w.page)&&!M?!1:(D(w.holder,N),N.query!==t.query()&&!M&&(t.clear(N.element),t.highlight(N.element),N.query=t.query()),!0)}function f(w,N,M,x){if(u(w,N,M,x))try{const I=y(w.page),z=I?U.createPageViewportRenderer(w.page,96,{},w.holder.ownerDocument):void 0,_=z?.element??U.renderPage(w.page,96,{},w.holder.ownerDocument);if(t.highlight(_),!u(w,N,M,x))return;w.holder.replaceChildren(_),w.holder.removeAttribute("aria-busy");const ee={page:w.page,element:_,query:t.query(),viewport:z,windowed:I};n.set(w.holder,ee),D(w.holder,ee),t.mounted(w.holder),t.ready()}catch(I){if(!u(w,N,M,x))return;w.holder.removeAttribute("aria-busy");const z=w.holder.ownerDocument.createElement("div");z.className="mrp-page-render-error",z.setAttribute("role","alert"),z.textContent=I instanceof Error?I.message:String(I),w.holder.replaceChildren(z),t.error(I)}}function b(w,N,M,x){w.length&&(l=requestAnimationFrame(()=>{if(N!==o||s)return;l=0;const I=w.shift();I&&f(I,N,M,x),N===o&&t.plan.value===M&&t.root.value===x&&b(w,N,M,x)}))}function p(){c();const w=t.plan.value,N=t.root.value;if(s||!w||!N){r=void 0;return}const M=o,x=r?.plan===w?r.index:t.priority();r=void 0;const I=[];N.querySelectorAll(".mrp-page-holder").forEach(ee=>{const ae=Number(ee.dataset.page)-1,h=w.pages[ae];if(!h)return;const S={holder:ee,page:h,index:ae};d(S)||(m(S),I.push(S))});const z=I.findIndex(ee=>ee.index===x),_=z<0?void 0:I.splice(z,1)[0];_&&f(_,M,w,N),t.ready(),b(I,M,w,N)}function g(w){s||!t.plan.value||(r={plan:t.plan.value,index:w},a.value++)}e.watch([t.plan,t.root,t.pages,t.priority,t.focusToken,()=>t.editorToken?.(),t.query,t.zoom,t.loading,()=>t.windowing?.(),a],p,{flush:"post",immediate:!0});function y(w){return!t.viewport?.value?.clientWidth||t.windowing?.()===!1||t.query().trim()||w.layout!=="wide"?!1:w.components.reduce((N,M)=>N+(M.grid?.cells.reduce((x,I)=>x+I.length,0)??0),0)>1e3}function D(w,N){const M=t.viewport?.value;if(!M||!N.viewport)return;const x=M.getBoundingClientRect(),I=w.getBoundingClientRect(),z=Ue*t.zoom(),_=w.querySelector(".mrp-cell-editor-host")?.closest("td[data-mr-row-index]")??w.ownerDocument.activeElement?.closest("td[data-mr-row-index]"),ee=_?.closest("[data-mr-component-index]"),ae=_&&ee&&w.contains(_)?{componentIndex:Number(ee.dataset.mrComponentIndex),rowIndex:Number(_.dataset.mrRowIndex),columnIndex:Number(_.dataset.mrColumnIndex)}:void 0;N.viewport.update({leftMm:(x.left-I.left)/z,topMm:(x.top-I.top)/z,widthMm:M.clientWidth/z,heightMm:M.clientHeight/z},ae)&&t.mounted(w)}function v(){s||i||(i=requestAnimationFrame(()=>{i=0,!s&&t.root.value?.querySelectorAll(".mrp-page-holder").forEach(w=>{const N=n.get(w);N&&D(w,N)})}))}function k(w){const N=t.viewport?.value,M=t.plan.value?.pages[w.pageIndex],x=t.root.value?.querySelector(`[data-page="${w.pageIndex+1}"]`),I=M?.components[w.componentIndex];if(!N||!x||!I?.grid)return;const z=n.get(x);if(!z?.viewport)return;const _=U.resolveGridLayout(I.grid,I.widthMm,I.heightMm).cells.find(A=>A.ri===w.rowIndex&&A.ci===w.columnIndex);if(!_)return;const ee=N.getBoundingClientRect(),ae=x.getBoundingClientRect(),h=Ue*t.zoom(),S=ae.left+(I.leftMm+_.xMm)*h,P=ae.top+(I.topMm+_.yMm)*h;N.scrollLeft+=$(S,S+_.widthMm*h,ee.left,ee.left+N.clientWidth),N.scrollTop+=$(P,P+_.heightMm*h,ee.top,ee.top+N.clientHeight),D(x,z)}function $(w,N,M,x){return w<M+8?w-M-8:N>x-8?Math.min(w-M-8,N-x+8):0}return e.onScopeDispose(()=>{s=!0,r=void 0,c(),i&&cancelAnimationFrame(i)}),{prioritize:g,cancel:c,refreshViewport:v,reveal:k}}function un(t){const n=e.ref(1),a=e.ref("fit");let r=0;function o(){r&&cancelAnimationFrame(r),r=0}function l(){o(),r=requestAnimationFrame(()=>{if(r=0,a.value!=="fit")return;const i=t();!i?.viewport||i.viewport.clientWidth<=48||!Number.isFinite(i.pageWidthPx)||(n.value=Math.min(1,(i.viewport.clientWidth-48)/Math.max(1,i.pageWidthPx)))})}function s(i){if(i==="fit")a.value="fit",l();else{if(!Number.isFinite(i))return;o(),a.value="raw",n.value=Math.min(3,Math.max(.3,i/100))}}return e.getCurrentScope()&&e.onScopeDispose(o),{zoom:n,zoomMode:a,applyFitZoom:l,setZoom:s}}function dn(t,n){if(![t,n].every(s=>Number.isFinite(s)&&s>=25&&s<=600))throw new RangeError("Calibration paper must be between 25 and 600 mm");const a=[],r=Math.min(10,t/5),o=Math.min(10,n/5),l=Math.min(50,t-r*2,n-o*2);a.push({kind:"rect",leftMm:r,topMm:o,widthMm:l,heightMm:l,style:{borderColor:"#255c8c",lineWidthPt:.5}});for(let s=0;s<=l;s+=5)a.push({kind:"line",leftMm:r+s,topMm:o,widthMm:0,heightMm:s%10?2:3,style:{lineColor:"#255c8c",lineWidthPt:.5}}),a.push({kind:"line",leftMm:r,topMm:o+s,widthMm:s%10?2:3,heightMm:0,style:{lineColor:"#255c8c",lineWidthPt:.5}});return a.push({kind:"text",text:`${l} x ${l} mm`,leftMm:r+4,topMm:o+l/2-2,widthMm:l-8,heightMm:4,style:{fontSize:7,align:"center",color:"#255c8c"}}),{schemaVersion:"print-calibration",pages:[{pageWidthMm:t,pageHeightMm:n,components:a}]}}let fa=0;function Qt(t,n){const a=new AbortController;let r={taskId:`mr-output-${Date.now().toString(36)}-${++fa}`,kind:t,stage:t==="print"?"print":"encode",status:"running",cancellable:!0};function o(){try{n?.(Object.freeze({...r}))}catch{}}return{controller:a,get task(){return r},start:o,update(l,s,i){a.signal.aborted||r.status!=="running"||(r={...r,stage:l,completed:s,total:i},o())},finish(l="completed"){r.status==="running"&&(r={...r,status:l,cancellable:!1},o(),l==="cancelled"&&a.abort())}}}class pe extends Error{constructor(n,a=""){super(`Print preparation failed: ${n} ${a}`),this.kind=n,this.resource=a,this.code="print-resource",this.name="ReportPrintResourceError"}}function mn(t,n){const a={...ie.DEFAULT_PRINT_MESSAGES,...n};return t instanceof pe?t.kind==="timeout"?a.printPrepareTimeout:t.kind==="image"?a.printImageFailed.replace("{index}",String(t.resource)):t.kind==="font"?a.printFontFailed.replace("{family}",String(t.resource)):a.printPrepareFailed:a.printPrepareFailed}function pa(t,n){let a;try{a=new URL(t,n)}catch{throw new pe("config")}if(!["http:","https:"].includes(a.protocol)||t.length>16384)throw new pe("config");return a.href}async function ga(t,n,a,r){const o=n.fonts??[];if(o.length>8)throw new pe("config");for(const l of o){if(X.assertOutputActive(a),typeof l.family!="string"||!l.family.trim()||l.family.length>256||typeof l.source!="string")throw new pe("config");const s=t.defaultView?.FontFace;if(!s||!t.fonts)throw new pe("font",l.family);try{const{loadFontWithCache:i}=await Promise.resolve().then(()=>require("./font-loader-DBBJ5KE9.cjs")),c=await i(pa(l.source,r),{signal:a});if(!c)throw new pe("font",l.family);const u=new s(l.family,c,{weight:l.weight,style:l.style});await X.waitForOutput(u.load(),a),t.fonts.add(u)}catch(i){throw X.assertOutputActive(a),i instanceof pe?i:new pe("font",l.family)}}t.documentElement.getBoundingClientRect(),t.fonts&&await X.waitForOutput(t.fonts.ready,a)}async function va(t,n,a){X.assertOutputActive(a);try{if(typeof t.decode=="function"?await X.waitForOutput(t.decode(),a):t.complete||await new Promise((r,o)=>{const l=()=>{t.removeEventListener("load",s),t.removeEventListener("error",i),a.removeEventListener("abort",c)},s=()=>{l(),r()},i=()=>{l(),o(new pe("image",n))},c=()=>{l(),o(a.reason)};t.addEventListener("load",s,{once:!0}),t.addEventListener("error",i,{once:!0}),a.addEventListener("abort",c,{once:!0}),a.aborted?c():t.complete&&s()}),X.assertOutputActive(a),t.naturalWidth<=0||t.naturalHeight<=0)throw new pe("image",n)}catch{throw X.assertOutputActive(a),new pe("image",n)}}async function Nt(t,n={},a,r=document.baseURI){const o=n.resourceTimeoutMs??15e3;if(!Number.isSafeInteger(o)||o<1||o>12e4)throw new pe("config");const l=new AbortController,s=X.forwardOutputAbort(a,l),i=setTimeout(()=>l.abort(new pe("timeout")),o);try{X.assertOutputActive(l.signal),await ga(t,n,l.signal,r);const c=t.querySelectorAll("img");let u=0;const m=async()=>{for(;u<c.length;){const d=u++;await va(c[d],d+1,l.signal)}};await Promise.all(Array.from({length:Math.min(c.length,4)},m)),X.assertOutputActive(l.signal)}finally{clearTimeout(i),s(),l.abort()}}const Ve=8;function Fe(){return new Promise(t=>setTimeout(t,0))}function Xe(t){return`p${t.pageWidthMm}x${t.pageHeightMm}`.replace(/[.+]/g,"_")}function Ye(t){const n=new Map;return t.pages.forEach(o=>{n.has(Xe(o))||n.set(Xe(o),o)}),`<!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(o=>`@page ${Xe(o)}{size:${o.pageWidthMm}mm ${o.pageHeightMm}mm;margin:0;}`).join(`
5
- `)}
6
- body{margin:0;background:#fff;}`}</style></head><body>`}function Qe(t,n){const a=U.renderPage(t,96,{},document);a.style.page=Xe(t);const r=ie.printCalibration(n);if(r.x||r.y){const o=document.createElement("div");for(o.style.cssText=`position:absolute;inset:0;transform:translate(${r.x}mm,${r.y}mm);transform-origin:top left`;a.firstChild;)o.appendChild(a.firstChild);a.appendChild(o)}return a.outerHTML}function fn(t,n){return{head:Ye(t),pageChunks:t.pages.map(a=>Qe(a,n))}}async function pn(t,n={}){const a={schemaVersion:"mach-report-batch-print",pages:t.flatMap(i=>i.pages)};if(a.pages.length===0)return;const r=ie.snapshotPrintOptions(n.printOptions),o=Ye(a),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 s=!1;try{const i=l.contentDocument;i.open(),i.write(o);for(let c=0;c<a.pages.length;c++)X.assertOutputActive(n.signal),i.write(Qe(a.pages[c],r)),c%Ve===Ve-1&&(X.notifyOutputProgress(n,c+1,a.pages.length),await Fe());i.write("</body></html>"),i.close(),await Fe(),await Nt(i,r,n.signal),X.notifyOutputProgress(n,a.pages.length,a.pages.length),l.contentWindow?.focus(),l.contentWindow?.print(),s=!0}catch(i){throw n.signal?.aborted||X.observeOutput(()=>n.onError?.(mn(i,n.messages))),i}finally{s?setTimeout(()=>l.remove(),6e4):l.remove()}}function gn(t){return`<!doctype html><html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40"><head><meta charset="utf-8"><!--[if gte mso 9]><xml><w:WordDocument><w:View>Print</w:View><w:Zoom>100</w:Zoom></w:WordDocument></xml><![endif]-->${t.replace(/^<!doctype html><html><head>/,"")}`}function ya(t){const{head:n,pageChunks:a}=fn(t);return{html:`${gn(n)}${a.join("")}</body></html>`,filename:"mach-report.doc"}}function vn(t,n){let a=null,r=!1,o=!1,l=0,s=0;const i=new Set,c=new Map;let u=null;const m=new Map;let d=null,f=null,b=null,p=null,g=null;function y(E,V){return!o&&t.value===E&&l===V}function D(){if(o)return;const E=[...c.values()].reverse().find(V=>y(V.plan,V.epoch))?.format??null;E!==d&&(d=E,n.onBusy?.(E))}function v(E,V,K){const j={};return c.set(j,{plan:E,epoch:V,format:K,run:Qt("export",n.onTask)}),c.get(j).run.start(),D(),j}function k(E){c.get(E)?.run.finish(),c.delete(E),D()}function $(){for(const[E,V]of m)y(V.plan,V.epoch)||(E.close(),m.delete(E))}function w(E=!0){if(E){s++;for(const V of i)V.close();i.clear()}for(const V of c.values())V.run.finish("cancelled");u?.finish("cancelled"),l++,M(),D(),$()}const N=e.watch(t,()=>w(!1),{flush:"sync"});function M(){a?.remove(),a=null}function x(){w(),o=!0,l++,N(),M(),$(),c.clear(),n.onPrinting?.(!1)}function I(E,V){const K=URL.createObjectURL(E);setTimeout(()=>URL.revokeObjectURL(K),1e4);const j=document.createElement("a");j.href=K,j.download=V,j.click()}function z(E,V,K,j,Y){K.update("download"),y(E,V)&&!K.controller.signal.aborted&&I(j,Y)}async function _(E,V,K,j,Y){const te=E.contentDocument;te.open(),te.write(Ye(V));for(let re=0;re<V.pages.length;re++)if(j.controller.signal.aborted||(te.write(Qe(V.pages[re],Y)),j.update("print",re+1,V.pages.length),re%Ve===Ve-1&&await Fe(),E!==a))return!1;return te.write("</body></html>"),te.close(),await Fe(),await Nt(te,Y,j.controller.signal),!(!y(V,K)||E!==a)}function ee(){const E=s,V=j=>j&&!o&&E===s,K=j=>(!o&&E===s&&n.onError(j instanceof Error?j.message:"报表修改尚未完成","export"),!1);try{const j=n.beforeOutput?.()??!0;return typeof j=="boolean"?V(j):j.then(V,K)}catch(j){return K(j)}}function ae(E){const V=ee();return typeof V=="boolean"?V?E():Promise.resolve():V.then(K=>K?E():void 0)}function h(E,V,K,j,Y){j.finish(j.controller.signal.aborted?"cancelled":"failed"),Y===a&&M(),y(V,K)&&!j.controller.signal.aborted&&n.onError(mn(E,n.getPrintMessages?.()),"print")}async function S(){if(r)return;const E=t.value;if(o||!E||E.pages.length===0)return;const V=l;r=!0;const K=Qt("print",n.onTask);u=K,K.start(),n.onPrinting?.(!0),M(),a=document.createElement("iframe"),a.style.cssText="position:fixed;right:0;bottom:0;width:0;height:0;border:0;visibility:hidden;",document.body.appendChild(a);const j=a;try{if(!y(E,V)||K.controller.signal.aborted){M();return}const Y=ie.snapshotPrintOptions(n.getPrintOptions?.());if(!await _(j,E,V,K,Y))return;j.contentWindow?.focus(),j.contentWindow?.print()}catch(Y){h(Y,E,V,K,j)}finally{K.finish(),u===K&&(u=null),r=!1,o||n.onPrinting?.(!1)}}function P(E,V,K){return{signal:K.controller.signal,onDiagnostic:j=>{y(E,V)&&!K.controller.signal.aborted&&n.onDiagnostic?.(j)},onProgress:(j,Y)=>K.update("encode",j,Y)}}function A(E,V,K){if(f?.plan===E&&f.epoch===V)return f.promise;const j=Promise.resolve().then(()=>{if(!y(E,V))throw new Error("报表已切换或卸载");const Y=ne=>{y(E,V)&&n.onWarning?.(ne)},te=n.getPdfExporter(),re=K?P(E,V,K):void 0;return X.waitForOutput(n.encoding?n.encoding.pdf(E,te,Y,re):te(E,Y,re),K?.controller.signal)}).finally(()=>{f?.promise===j&&(f=null)});return f={plan:E,epoch:V,promise:j},j}async function B(){const E=t.value;if(o||!E||E.pages.length===0)return;const V=l;if(b?.plan===E&&b.epoch===V)return b.promise;const K=v(E,V,"PDF"),j=(async()=>{try{const Y=c.get(K).run,te=await A(E,V,Y);if(!y(E,V))return;z(E,V,Y,new Blob([te],{type:"application/pdf"}),"mach-report.pdf")}catch(Y){c.get(K)?.run.finish("failed"),y(E,V)&&n.onError(Y instanceof Error?`PDF 导出失败: ${Y.message}`:"PDF 导出失败","pdf")}finally{k(K),b?.token===K&&(b=null)}})();return b={plan:E,epoch:V,promise:j,token:K},j}async function R(){const E=t.value;if(o||!E||E.pages.length===0)return;const V=l;if(p?.plan===E&&p.epoch===V)return p.promise;const K={...n.getXlsxOptions?.()},j=v(E,V,"Excel"),Y=(async()=>{try{if(!y(E,V))return;const te=c.get(j).run,re=P(E,V,te),ne=n.encoding?n.encoding.xlsx(E,K,re):import("@agile-team/mach-report/xlsx").then(async({renderPlanToXlsx:Se})=>{X.assertOutputActive(te.controller.signal);const xe=await Se(E,{...K,...re});return{buffer:new Uint8Array(xe.buffer),warnings:xe.warnings,notes:xe.notes}}),{buffer:Ce,warnings:ve,notes:De}=await X.waitForOutput(ne,te.controller.signal);if(!y(E,V))return;for(const Se of De??[])y(E,V)&&n.onNote?.(Se);if(ve.length>0&&n.onWarning?.(`Excel 导出有 ${ve.length} 条提示:${ve.slice(0,2).join(";")}`),!y(E,V))return;z(E,V,te,new Blob([Ce],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}),"mach-report.xlsx")}catch(te){c.get(j)?.run.finish("failed"),y(E,V)&&n.onError(te instanceof Error?`Excel 导出失败: ${te.message}`:"Excel 导出失败","export")}finally{k(j),p?.token===j&&(p=null)}})();return p={plan:E,epoch:V,promise:Y,token:j},Y}async function T(){const E=t.value;if(o||!E||E.pages.length===0)return;const V=l;if(g?.plan===E&&g.epoch===V)return g.promise;const K=v(E,V,"图片"),j=(async()=>{try{const Y=c.get(K).run,{blobs:te}=await X.waitForOutput(U.renderPlanToImages(E,{...P(E,V,Y),dpr:Math.min(2,typeof devicePixelRatio=="number"?devicePixelRatio:1)}),Y.controller.signal);if(!y(E,V))return;te.forEach((re,ne)=>{z(E,V,Y,re,te.length>1?`mach-report-page-${ne+1}.png`:"mach-report.png")})}catch(Y){c.get(K)?.run.finish("failed"),y(E,V)&&n.onError(Y instanceof Error?`图片导出失败: ${Y.message}`:"图片导出失败","export")}finally{k(K),g?.token===K&&(g=null)}})();return g={plan:E,epoch:V,promise:j,token:K},j}async function L(E){const V=t.value;if(o||!V||!V.pages.length)return;const K=l,j=v(V,K,E==="word"?"Word":"HTML"),Y=c.get(j).run;try{const te=[];for(const[Ce,ve]of V.pages.entries()){if(!y(V,K))return;te.push(Qe(ve)),Y.update("encode",Ce+1,V.pages.length),Ce%Ve===Ve-1&&await Fe()}if(!y(V,K))return;const re=Ye(V),ne=`${E==="word"?gn(re):re}${te.join("")}</body></html>`;z(V,K,Y,new Blob([ne],{type:E==="word"?"application/msword;charset=utf-8":"text/html;charset=utf-8"}),E==="word"?"mach-report.doc":"mach-report.html")}catch(te){Y.finish("failed"),y(V,K)&&n.onError(te instanceof Error?`导出失败: ${te.message}`:"导出失败","export")}finally{k(j)}}async function F(){await L("word")}function Z(){return ae(S)}function Q(){return ae(T)}function G(){return ae(F)}async function q(E){const V=t.value;if(!(o||!V||V.pages.length===0)){if(E==="pdf"){await B();return}if(E==="xlsx"||E==="excel"){await R();return}if(E==="png"||E==="image"){await T();return}if(E==="word"||E==="doc"){await F();return}if(E!=="html"){n.onError(`不支持的导出格式:${E}`,"export");return}await L("html")}}function se(E){return ae(()=>q(E))}function me(E){const V=t.value;if(o||!V||!V.pages.length){E.close();return}const K=l;m.set(E,{plan:V,epoch:K});const j=v(V,K,"PDF");A(V,K,c.get(j).run).then(Y=>{if(!y(V,K)||E.closed){m.delete(E)&&E.close();return}const te=URL.createObjectURL(new Blob([Y],{type:"application/pdf"}));setTimeout(()=>URL.revokeObjectURL(te),6e4);const re=E.document;re.title="PDF 预览",re.documentElement.style.height="100%",re.body.style.cssText="margin:0;height:100%;";const ne=re.createElement("iframe");ne.title="PDF 预览",ne.style.cssText="display:block;width:100%;height:100%;border:0;",ne.src=te,re.body.replaceChildren(ne),m.delete(E)}).catch(Y=>{c.get(j)?.run.finish("failed"),E.close(),m.delete(E),y(V,K)&&n.onError(Y instanceof Error?`PDF 预览失败: ${Y.message}`:"PDF 预览失败","pdf")}).finally(()=>k(j))}function we(){if(o||!t.value?.pages.length)return;const E=globalThis.window.open("","_blank");if(!E){n.onError("浏览器拦截了弹窗,请允许弹窗后重试","pdf");return}const V=ee();if(typeof V=="boolean"){V?me(E):E.close();return}i.add(E),V.then(K=>{const j=i.delete(E);if(!K||!j||E.closed){E.close();return}me(E)})}return{print:Z,exportAs:se,exportImages:Q,exportWord:G,openPdfWindow:we,invalidatePending:w,cancel:w,releasePrintFrame:M,dispose:x}}let vt;function ba(t,n){return{...t,prepared:pt.capturePreparedHandoff(t.prepared,n?.budget?.maxPreparedBytes??64e6,t.signal).forward(),pdf:pt.snapshotPdfFonts(t.pdf),xlsx:pt.snapshotXlsxOptions(t.xlsx)}}function ha(t){const n=e.shallowRef(),a=new Set;let r=!1,o=0;const l=()=>{o++;for(const i of a)i.abort.abort(),i.exporter?.cancel()},s=()=>{r=!0,l();for(const i of a)i.exporter?.dispose()};return e.onScopeDispose(s),{decision:n,async exportPrepared(i,c){if(r)throw new Error("报表预览已卸载");Yt.throwIfAborted(i.signal);const u=++o,m=t(),d={...m,thresholds:{...m?.thresholds},budget:{...m?.budget}},f={abort:new AbortController},b=X.forwardOutputAbort(i.signal,f.abort);a.add(f);try{const p={...vt?i:ba(i,d),signal:f.abort.signal},g=vt??await X.waitForOutput(Promise.resolve().then(()=>require("./auto-B0EZFIK1.cjs")).then(y=>y.auto).then(y=>{const D=y.createAutoReportExporter;return vt=D,D}),f.abort.signal);return Yt.throwIfAborted(f.abort.signal),f.exporter=g({...d,onDecision:y=>{u!==o||r||(n.value=y,X.observeOutput(()=>m?.onDecision?.(y)))}}),await f.exporter.exportPrepared(p,c)}finally{b(),f.exporter?.dispose(),a.delete(f)}},cancel:l,dispose:s}}function wa(t){return{plan:t,diagnostics:[],revisions:{},stats:{rows:0,pages:t.pages.length,cells:0,durationMs:0},layout:{textMetrics:"provided"}}}function _t(t,n,a,r){return{prepared:wa(t),format:n,layoutPolicy:"preserve",fidelity:r,signal:a.signal,onEvent:o=>{o.stage==="encode"&&o.completed!==void 0&&o.total!==void 0&&a.onProgress?.(o.completed,o.total)}}}function ka(t){const n=ha(t.execution);function a(s,i){X.assertOutputActive(i.signal);for(const c of s.diagnostics)X.assertOutputActive(i.signal),X.observeOutput(()=>t.diagnostic(c));X.assertOutputActive(i.signal)}async function r(s,i,c,u={}){if(!i.prepare)return i(s,c,u);const m=t.fidelity(),d=await i.prepare(u.signal);X.assertOutputActive(u.signal);const f=await n.exportPrepared({..._t(s,"pdf",u,m),pdf:d});a(f,u);const b=f.diagnostics.find(g=>g.code==="pdf-font"||g.code==="pdf-page");if(b)throw new Error(b.message);const p=f.diagnostics.filter(g=>g.severity==="warning");return p.length&&c(`PDF 有 ${p.length} 处版式降级:${p.slice(0,2).map(g=>g.message).join(";")}`),f.bytes}async function o(s,i,c){const{renderPlanToXlsx:u}=await import("@agile-team/mach-report/xlsx");X.assertOutputActive(s.signal);const m=await u(s.prepared.plan,{...i,...s.xlsx,fidelity:s.fidelity,signal:s.signal,onProgress:(d,f)=>{X.observeOutput(()=>i.onProgress?.(d,f)),c.onProgress?.(d,f)},onDiagnostic:d=>{X.observeOutput(()=>i.onDiagnostic?.(d)),c.onDiagnostic?.(d)}});return X.assertOutputActive(s.signal),{...s.prepared,bytes:new Uint8Array(m.buffer),format:"xlsx",contentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",diagnostics:[...m.diagnostics??[],...m.warnings.map(d=>({code:"xlsx-fidelity",severity:"warning",message:d})),...(m.notes??[]).map(d=>({code:"xlsx-snapshot",severity:"info",message:d}))]}}async function l(s,i,c){const{signal:u,fidelity:m,...d}=i,f=t.fidelity()==="strict"||m==="strict",b=Object.values(d).some(g=>typeof g=="function"),p=await n.exportPrepared({..._t(s,"xlsx",c,f?"strict":"warn"),xlsx:d},b?g=>o(g,d,c):void 0);return a(p,c),{buffer:p.bytes,warnings:p.diagnostics.filter(g=>g.severity==="warning").map(g=>g.message)}}return{pdf:r,xlsx:l}}function xa(t){const{plan:n,editing:a,diagnostics:r,task:o}=t,{lastError:l,notice:s,reportError:i}=t.feedback,c=e.ref(null),u=e.ref(!1),m=e.ref(),d=e.computed(()=>({...t.defaultsPrint(),...t.printOverrides(),calibration:m.value??{...t.defaultsPrint()?.calibration,...t.printOverrides()?.calibration}}));e.watch([()=>t.printOverrides(),()=>t.defaultsPrint()],()=>{m.value=void 0});let f;function b(x){const I=n.value;if(!I)return!1;const z={excel:"xlsx",image:"png",doc:"word"}[x]??x,_=z==="pdf"?"pdf":z==="xlsx"?"xlsx":z==="png"?"canvas":"dom",ee=r.inspect(I,_);return n.value!==I?!1:ee.length&&t.fidelity()==="strict"?(s.value={kind:"error",message:t.messages().diagnosticsStrict??"输出存在已知降级"},i(s.value.message,"export",{diagnostics:ee}),!1):!0}function p(x){return n.value?r.inspect(n.value,x):[]}const g=vn(n,{encoding:ka({execution:t.execution,fidelity:t.fidelity,diagnostic:r.add}),getPdfExporter:t.getPdfExporter,beforeOutput:()=>a.settle(),onTask:x=>o.receive(x,()=>g.cancel()),onDiagnostic:r.add,onNote:x=>r.add({code:"xlsx-snapshot",message:x,severity:"info"}),getXlsxOptions:()=>t.getXlsxOptions(),getPrintOptions:()=>d.value,getPrintMessages:()=>t.messages(),onError:(x,I)=>{s.value={kind:"error",message:x},i(x,I??"print")},onWarning:x=>{s.value={kind:"warning",message:x},r.add({code:"output",severity:"warning",message:x}),t.feedback.warning(x)},onBusy:x=>{c.value=x,x?s.value={kind:"progress",message:t.messages().exporting.replace("{format}",x)}:s.value?.kind==="progress"&&(s.value=null)},onPrinting:x=>{u.value=x}}),{releasePrintFrame:y,dispose:D}=g,v=e.computed(()=>{const x=n.value?.pages[0];return!!x&&!t.wide()&&[x.pageWidthMm,x.pageHeightMm].every(I=>I>=25&&I<=600)});async function k(){if(!v.value||u.value||t.busy())return;const x=n.value.pages[0];u.value=!0;const I=new AbortController;f=I;try{await pn([dn(x.pageWidthMm,x.pageHeightMm)],{printOptions:d.value,signal:I.signal,messages:t.messages(),onError:z=>{s.value={kind:"error",message:z}}})}catch{}finally{f===I&&(u.value=!1,f=void 0)}}async function $(){if(t.busy())return;const x=a.settle();(typeof x=="boolean"?x:await x)&&(l.value=null,b("html")&&await g.print())}async function w(x){if(t.busy())return;const I=a.settle();(typeof I=="boolean"?I:await I)&&(l.value=null,b(x)&&await g.exportAs(x))}function N(){if(t.busy()||a.active.value||a.saving.value){s.value={kind:"warning",message:t.messages().editingHint??"请先确认单元格修改"};return}l.value=null,b("pdf")&&g.openPdfWindow()}function M(){f?.abort(),y()}return e.onScopeDispose(()=>{f?.abort(),D()}),{exporting:c,printing:u,localPrintCalibration:m,effectivePrintOptions:d,canCalibratePrint:v,testPrintCalibration:k,print:$,exportAs:w,openPdfWindow:N,getOutputDiagnostics:p,invalidate:M,invalidatePending:g.invalidatePending,cancel:g.cancel}}const yn="mrp-hit";function Ea(t){t.querySelectorAll(`mark.${yn}`).forEach(a=>{const r=a.parentNode;if(r){for(;a.firstChild;)r.insertBefore(a.firstChild,a);a.remove(),r.normalize()}})}function Ca(t,n){const a=n.trim();if(!a)return 0;const r=a.toLowerCase(),o=document.createTreeWalker(t,NodeFilter.SHOW_TEXT,{acceptNode(i){const c=i.parentElement;return!c||c.closest("mark")||/^(SCRIPT|STYLE)$/.test(c.tagName)?NodeFilter.FILTER_REJECT:(i.nodeValue??"").toLowerCase().includes(r)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT}}),l=[];for(let i=o.nextNode();i;i=o.nextNode())l.push(i);let s=0;for(const i of l){const c=i.nodeValue??"",u=c.toLowerCase(),m=i.parentElement;if(!m)continue;const d=document.createDocumentFragment();let f=0,b=u.indexOf(r);for(;b>=0;){b>f&&d.appendChild(document.createTextNode(c.slice(f,b)));const p=document.createElement("mark");p.className=yn,p.textContent=c.slice(b,b+a.length),d.appendChild(p),s++,f=b+a.length,b=u.indexOf(r,f)}f<c.length&&d.appendChild(document.createTextNode(c.slice(f))),m.replaceChild(d,i)}return s}const Sa=new Set(["line","rect","ellipse","chart"]);function*Na(t){for(const n of t.cells??[])for(const a of n??[])yield a?.text??"",yield*a?.children??[]}function*Ba(t){if(sn.isRichText(t))for(const n of t.richParagraphs)for(const a of n.segments??[])yield(a.kind==="field"?a.field:a.text)??"";else t.lines?.length?yield*t.lines:yield t.text??""}function*Va(t){const n=[t.values()];for(;n.length>0;){const a=n[n.length-1].next();if(a.done){n.pop();continue}const r=a.value;if(typeof r=="string"){yield r;continue}yield"",!sn.isImageBackedComponent(r)&&(r.kind==="text"?n.push(Ba(r)):r.grid?n.push(Na(r.grid)):Sa.has(r.kind)||(yield r.fallbackText??""))}}function*$a(t){for(let n=0;n<t.pages.length;n++){for(const a of Va(t.pages[n].components))yield{text:a,pageIndex:n};yield{text:"",pageIndex:n}}}function Da(t,n){const a=t.toLowerCase();let r=0;for(let o=a.indexOf(n);o>=0;o=a.indexOf(n,o+n.length))r++;return r}function Pa(t){const{plan:n,gotoPage:a,highlight:r,clearHighlights:o}=t,l=e.ref(!1),s=e.ref(""),i=e.ref(0),c=e.ref(0),u=e.ref(!1);let m=[];const d=e.computed(()=>{if(c.value===0)return null;const $=i.value;let w=0,N=m.length-1;for(;w<N;){const x=w+N>>>1;m[x].cumulative<=$?w=x+1:N=x}const M=m[w];return M?{pageIndex:M.pageIndex,occurrence:$-(m[w-1]?.cumulative??0)}:null});let f=null,b=null,p=0;function g(){p++,f&&clearTimeout(f),b&&clearTimeout(b),f=b=null,u.value=!1}function y($){s.value=$,i.value=0,c.value=0,m=[],u.value=!1;const w=$.trim().toLowerCase(),N=n.value;if(!w||!N)return;u.value=!0;const M=p,x=$a(N),I=[];let z=0;function _(){if(b=null,M!==p||N!==n.value)return;const ee=performance.now();let ae=0;for(;ae<5e3&&performance.now()-ee<4;){const h=x.next();if(h.done){m=I,c.value=z,u.value=!1,m[0]&&a(m[0].pageIndex+1);return}const S=Da(h.value.text,w);if(S>0){z+=S;const P=I[I.length-1];P?.pageIndex===h.value.pageIndex?P.cumulative=z:I.push({pageIndex:h.value.pageIndex,cumulative:z})}ae++}b=setTimeout(_,0)}_()}function D($){if(g(),s.value=$,i.value=c.value=0,m=[],!$.trim()){y("");return}u.value=!0,f=setTimeout(()=>{f=null,y($)},Math.max(0,e.unref(t.debounceMs)??200))}function v($){const w=c.value;if(w===0||u.value)return;i.value=(i.value+$+w)%w;const N=d.value;N&&a(N.pageIndex+1)}function k(){g(),s.value="",i.value=c.value=0,m=[]}return e.watch(n,k,{flush:"sync"}),e.onScopeDispose(k),{visible:l,query:s,matchIndex:i,matchCount:c,activeMatch:d,searching:u,toggle:()=>{l.value=!l.value},onInput:D,onNav:v,apply:$=>{s.value.trim()&&r($,s.value.trim())},clear:$=>{o($)},reset:k}}function Ra(t,n){const a=e.computed(()=>{if(t.value)return!0;if(typeof location>"u")return!1;try{return new URLSearchParams(location.search).get("mrp-debug")==="1"}catch{return!1}}),r=e.computed(()=>!a.value||!n.plan.value?0:Math.round(JSON.stringify(n.plan.value).length/1024)),o=e.computed(()=>!a.value||!n.plan.value?null:{pages:n.pageCount.value,window:`${n.windowRange.value.start}-${n.windowRange.value.end}`,zoom:`${Math.round(n.zoom.value*100)}%`,loadMs:`${n.loadMs.value}ms`,planKB:r.value});return{enabled:a,debugStats:o}}function Ia(t,n){const{thumbsRoot:a,visible:r,renderThumbCanvas:o}=n,l=e.ref(0),s=e.ref(800),i=e.computed(()=>(t.value?.pages??[]).map(v=>Math.round(v.pageHeightMm/v.pageWidthMm*116))),c=e.computed(()=>ce.createPageWindowIndex(i.value.map(v=>v+20),8)),u=e.computed(()=>c.value.window(s.value,l.value,1)),m=e.computed(()=>{if(!r.value)return[];const{start:v,end:k}=u.value;return i.value.slice(v,k+1).map(($,w)=>({index:v+w,height:$}))});let d=0,f=0,b=!1;function p(){const v=a.value;v&&(l.value=v.scrollTop,s.value=v.clientHeight||800)}function g(){b||f||(f=requestAnimationFrame(()=>{f=0,p()}))}function y(){if(m.value,d&&cancelAnimationFrame(d),d=0,b||!r.value||!t.value||!a.value)return;p();const v=m.value,k=t.value,$=a.value;let w=0;function N(){if(d=0,!(b||!r.value||t.value!==k||a.value!==$)){for(let M=0;w<v.length&&M<2;M++,w++){const x=v[w].index,I=$.querySelector(`[data-thumb="${x+1}"]`);if(!I||I.childElementCount>0)continue;const z=o(x);z&&(z.style.width="100%",z.style.height="100%",z.style.display="block",I.appendChild(z))}w<v.length&&(d=requestAnimationFrame(N))}}d=requestAnimationFrame(N)}function D(){b=!0,d&&cancelAnimationFrame(d),f&&cancelAnimationFrame(f),d=f=0}return e.onScopeDispose(D),{schedule:y,destroy:D,onScroll:g,windowRange:u,visibleThumbs:m}}function Ma(){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 Ta(t){const n=e.ref(null),a=e.ref(null);function r(){n.value?.focus(),n.value?.select()}e.watch(t.visible,s=>{s&&e.nextTick(r)});function o(){t.close(),e.nextTick(()=>a.value?.focus())}function l(s){s.isComposing||s.keyCode===229||s.key!=="Enter"&&s.key!=="Escape"||(s.preventDefault(),s.stopPropagation(),s.key==="Escape"?o():t.navigate(s.shiftKey?-1:1))}return{input:n,toggle:a,focus:r,close:o,onKeydown:l}}const Oa=["disabled","aria-expanded"],Aa=["aria-label"],Fa=["aria-label","disabled","onClick"],za={"aria-hidden":"true"},La=e.defineComponent({__name:"ReportExportMenu",props:{messages:{},formats:{},busy:{type:Boolean}},emits:["export"],setup(t,{emit:n}){const a=t,r=n,{opened:o,root:l,trigger:s,panel:i,close:c,onKeydown:u}=ie.usePopover(),m=e.computed(()=>[{format:"xlsx",label:a.messages.exportExcel,extension:".xlsx"},{format:"pdf",label:a.messages.exportPdf,extension:".pdf"},{format:"png",label:a.messages.exportImage,extension:".png"},{format:"word",label:a.messages.exportWord,extension:".doc"},{format:"html",label:a.messages.exportHtml,extension:".html"}].filter(p=>!a.formats||a.formats.includes(p.format)));e.watch(()=>a.busy,p=>{p&&c()});function d(p){a.busy||(r("export",p),c(!0))}function f(p){p.key!=="ArrowDown"&&p.key!=="ArrowUp"||(p.preventDefault(),o.value=!0,p.key==="ArrowUp"&&e.nextTick(()=>i.value?.querySelector("button:last-child")?.focus()))}function b(p){if(p.key==="Tab"){c();return}if(!["ArrowDown","ArrowUp","Home","End"].includes(p.key))return;p.preventDefault(),p.stopPropagation();const y=[...i.value?.querySelectorAll("button:not(:disabled)")??[]],D=y.indexOf(document.activeElement),v=p.key==="Home"?0:p.key==="End"?y.length-1:(D+(p.key==="ArrowDown"?1:-1)+y.length)%y.length;y[v]?.focus()}return(p,g)=>m.value.length?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"root",ref:l,class:"mrp-export-menu",onKeydown:g[1]||(g[1]=(...y)=>e.unref(u)&&e.unref(u)(...y))},[e.createElementVNode("button",{ref_key:"trigger",ref:s,type:"button",class:"mrp-nav mrp-export-trigger",disabled:t.busy,"aria-haspopup":"menu","aria-expanded":e.unref(o),onClick:g[0]||(g[0]=y=>o.value=!e.unref(o)),onKeydown:f},[e.createVNode(W._sfc_main,{name:"download"}),e.createTextVNode(e.toDisplayString(t.messages.exportMenu??"导出"),1),e.createVNode(W._sfc_main,{name:"chevron-down",size:12})],40,Oa),e.unref(o)?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"panel",ref:i,class:"mrp-export-panel",role:"menu","aria-label":t.messages.exportMenu??"导出",onKeydown:b},[e.createElementVNode("p",null,e.toDisplayString(t.messages.exportMenuDescription??"选择文件格式"),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.value,y=>(e.openBlock(),e.createElementBlock("button",{key:y.format,type:"button",role:"menuitem",tabindex:"-1","aria-label":y.label,disabled:t.busy,onClick:D=>d(y.format)},[e.createVNode(W._sfc_main,{name:"file"}),e.createElementVNode("span",null,e.toDisplayString(y.label),1),e.createElementVNode("small",za,e.toDisplayString(y.extension),1)],8,Fa))),128))],40,Aa)):e.createCommentVNode("",!0)],544)):e.createCommentVNode("",!0)}}),qa=W._export_sfc(La,[["__scopeId","data-v-83a57a3c"]]),Ka=["aria-label"],ja={class:"mrp-pageinfo","aria-live":"polite"},Wa={class:"mrp-page-buttons"},Ha=["aria-label","title","disabled"],Ua=["aria-label","title","disabled"],Ga=["aria-label","title","aria-invalid","disabled"],Ja=["aria-label","disabled"],Xa={key:1,class:"mrp-page-error",role:"alert"},Za=e.defineComponent({__name:"ReportPagination",props:{pageCount:{},currentPage:{},messages:{},busy:{type:Boolean}},emits:["goto"],setup(t,{emit:n}){const a=t,r=n,o=e.ref(String(a.currentPage)),l=e.ref(!1),s=e.computed(()=>a.messages.pageInfo.replace("{cur}",String(a.currentPage)).replace("{total}",String(a.pageCount)));e.watch(()=>[a.currentPage,a.pageCount],()=>{o.value=String(a.currentPage),l.value=!1});function i(){if(a.busy)return;const c=o.value.trim(),u=Number(c);l.value=!/^\d+$/.test(c)||!Number.isSafeInteger(u)||u<1||u>a.pageCount,!l.value&&u!==a.currentPage&&r("goto",u)}return(c,u)=>t.pageCount>0?(e.openBlock(),e.createElementBlock("nav",{key:0,class:"mrp-pagination",role:"navigation","aria-label":t.messages.pagination??"报表分页"},[e.createElementVNode("span",ja,e.toDisplayString(s.value),1),e.createElementVNode("div",Wa,[e.createElementVNode("button",{class:"mrp-nav",type:"button","aria-label":t.messages.prevPage,title:t.messages.prevPage,disabled:t.busy||t.currentPage<=1,onClick:u[0]||(u[0]=m=>r("goto",t.currentPage-1))},[e.createVNode(W._sfc_main,{name:"chevron-left"})],8,Ha),e.createElementVNode("button",{class:"mrp-nav",type:"button","aria-label":t.messages.nextPage,title:t.messages.nextPage,disabled:t.busy||t.currentPage>=t.pageCount,onClick:u[1]||(u[1]=m=>r("goto",t.currentPage+1))},[e.createVNode(W._sfc_main,{name:"chevron-right"})],8,Ua)]),t.pageCount>1?(e.openBlock(),e.createElementBlock("form",{key:0,class:"mrp-page-jump",onSubmit:e.withModifiers(i,["prevent"])},[e.createElementVNode("label",null,[e.createElementVNode("span",null,e.toDisplayString(t.messages.pageJump??"跳至页"),1),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":u[2]||(u[2]=m=>o.value=m),type:"text",inputmode:"numeric",autocomplete:"off","aria-label":t.messages.pageJump??"跳至页",title:t.messages.pageJumpHint??"Enter 跳转","aria-invalid":l.value,disabled:t.busy,onInput:u[3]||(u[3]=m=>l.value=!1),onKeydown:u[4]||(u[4]=e.withKeys(m=>{o.value=String(t.currentPage),l.value=!1},["esc"]))},null,40,Ga),[[e.vModelText,o.value]])]),e.createElementVNode("button",{class:"mrp-nav",type:"submit","aria-label":t.messages.pageJump??"跳至页",disabled:t.busy},[e.createVNode(W._sfc_main,{name:"arrow-right",size:14})],8,Ja)],32)):e.createCommentVNode("",!0),l.value?(e.openBlock(),e.createElementBlock("span",Xa,e.toDisplayString(t.messages.pageJumpInvalid??"请输入有效页码"),1)):e.createCommentVNode("",!0)],8,Ka)):e.createCommentVNode("",!0)}}),Bt=W._export_sfc(Za,[["__scopeId","data-v-0db4fbd3"]]),Ya=["aria-label"],Qa={class:"mrp-title"},_a=["aria-label"],eo=["aria-label","aria-pressed"],to=["aria-pressed"],no=["aria-pressed"],ao=["aria-label"],oo=["aria-pressed"],ro=["aria-pressed","onClick"],lo=["aria-label"],so=["disabled"],io=["disabled"],co=["disabled"],uo=["aria-label","aria-expanded"],mo=["aria-label"],fo=["placeholder","aria-label","value"],po=["aria-label"],go={key:1,class:"mrp-search-count",role:"status","aria-live":"polite"},vo=["disabled","aria-label"],yo=["disabled","aria-label"],bo=["aria-label"],ho={class:"mrp-search-hint",role:"status"},wo=e.defineComponent({__name:"ReportToolbar",props:{pageCount:{},currentPage:{},zoomMode:{},zoom:{},showExport:{type:Boolean},showPrint:{type:Boolean},showPdfWindow:{type:Boolean},messages:{},search:{},thumbsVisible:{type:Boolean},showImport:{type:Boolean},showSearch:{type:Boolean,default:!0},showThumbnails:{type:Boolean,default:!0},showZoom:{type:Boolean,default:!0},exportFormats:{default:void 0},showSettings:{type:Boolean},settingsOpen:{type:Boolean},busy:{type:Boolean},showPagination:{type:Boolean}},emits:["goto","zoom","export","print","pdf-window","search-input","search-nav","search-toggle","thumbs-toggle","import-excel","settings-toggle"],setup(t,{expose:n,emit:a}){const r=t,o=a,l=Ta({visible:()=>r.search.visible,navigate:m=>{!r.search.searching&&r.search.matchCount>0&&o("search-nav",m)},close:()=>{r.search.visible&&o("search-toggle")}}),{input:s,toggle:i}=l;n({focusSearch:l.focus});function c(){const m=r.search.matchCount>0?r.search.matchIndex+1:0;return r.messages.matchInfo.replace("{cur}",String(m)).replace("{total}",String(r.search.matchCount))}function u(){o("search-input",""),l.focus()}return(m,d)=>(e.openBlock(),e.createElementBlock("div",{class:"mrp-toolbar",role:"toolbar","aria-label":t.messages.title},[e.createElementVNode("span",Qa,[e.createVNode(W._sfc_main,{name:"file"}),e.createTextVNode(e.toDisplayString(t.messages.title),1)]),t.showPagination?(e.openBlock(),e.createBlock(Bt,{key:0,"page-count":t.pageCount,"current-page":t.currentPage,messages:t.messages,busy:t.busy,onGoto:d[0]||(d[0]=f=>o("goto",f))},null,8,["page-count","current-page","messages","busy"])):e.createCommentVNode("",!0),d[15]||(d[15]=e.createElementVNode("span",{class:"mrp-spacer"},null,-1)),t.showSearch!==!1?(e.openBlock(),e.createElementBlock("div",{key:1,class:"mrp-read-tools",role:"group","aria-label":t.messages.search??"内容搜索"},[e.createElementVNode("button",{ref_key:"searchToggleRef",ref:i,class:e.normalizeClass(["mrp-nav mrp-search-toggle mrp-icon-button",{"mrp-active":t.search.visible}]),type:"button",title:"Ctrl+F","aria-label":t.messages.search??t.messages.searchPlaceholder,"aria-pressed":t.search.visible,onClick:d[1]||(d[1]=f=>o("search-toggle"))},[e.createVNode(W._sfc_main,{name:"search"})],10,eo),t.showThumbnails!==!1?(e.openBlock(),e.createElementBlock("button",{key:0,class:e.normalizeClass(["mrp-nav",{"mrp-active":t.thumbsVisible}]),type:"button","aria-pressed":t.thumbsVisible,onClick:d[2]||(d[2]=f=>o("thumbs-toggle"))},[e.createVNode(W._sfc_main,{name:"grid"}),e.createTextVNode(e.toDisplayString(t.messages.thumbnails),1)],10,to)):e.createCommentVNode("",!0)],8,_a)):t.showThumbnails!==!1?(e.openBlock(),e.createElementBlock("button",{key:2,class:e.normalizeClass(["mrp-nav",{"mrp-active":t.thumbsVisible}]),type:"button","aria-pressed":t.thumbsVisible,onClick:d[3]||(d[3]=f=>o("thumbs-toggle"))},[e.createVNode(W._sfc_main,{name:"grid"}),e.createTextVNode(e.toDisplayString(t.messages.thumbnails),1)],10,no)):e.createCommentVNode("",!0),e.renderSlot(m.$slots,"navigation",{},void 0,!0),e.renderSlot(m.$slots,"data-tools",{},void 0,!0),t.showZoom!==!1?(e.openBlock(),e.createElementBlock("div",{key:3,class:"mrp-zoom-tools",role:"group","aria-label":t.messages.zoom??"缩放工具"},[e.createElementVNode("button",{class:e.normalizeClass(["mrp-nav",{"mrp-active":t.zoomMode==="fit"}]),"aria-pressed":t.zoomMode==="fit",type:"button",onClick:d[4]||(d[4]=f=>o("zoom","fit"))},[e.createVNode(W._sfc_main,{name:"fit"}),e.createTextVNode(e.toDisplayString(t.messages.fitWidth),1)],10,oo),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList([100,150],f=>e.createElementVNode("button",{key:f,class:e.normalizeClass(["mrp-nav",{"mrp-active":t.zoomMode==="raw"&&Math.round(t.zoom*100)===f}]),"aria-pressed":t.zoomMode==="raw"&&Math.round(t.zoom*100)===f,type:"button",onClick:b=>o("zoom",f)},e.toDisplayString(f)+"%",11,ro)),64))],8,ao)):e.createCommentVNode("",!0),t.showImport||t.showExport||t.showPrint||t.showPdfWindow?(e.openBlock(),e.createElementBlock("div",{key:4,class:"mrp-output-tools",role:"group","aria-label":t.messages.settingsExport??"导出与打印"},[t.showImport?(e.openBlock(),e.createElementBlock("button",{key:0,class:"mrp-nav mrp-import-excel",type:"button",disabled:t.busy,onClick:d[5]||(d[5]=f=>o("import-excel"))},[e.createVNode(W._sfc_main,{name:"upload"}),e.createTextVNode(e.toDisplayString(t.messages.importExcel??"导入 Excel 模板"),1)],8,so)):e.createCommentVNode("",!0),t.showExport?(e.openBlock(),e.createBlock(qa,{key:1,messages:t.messages,formats:t.exportFormats,busy:t.busy,onExport:d[6]||(d[6]=f=>o("export",f))},null,8,["messages","formats","busy"])):e.createCommentVNode("",!0),t.showPrint?(e.openBlock(),e.createElementBlock("button",{key:2,class:"mrp-nav",type:"button",disabled:t.busy,onClick:d[7]||(d[7]=f=>o("print"))},[e.createVNode(W._sfc_main,{name:"print"}),e.createTextVNode(e.toDisplayString(t.messages.print),1)],8,io)):e.createCommentVNode("",!0),t.showPdfWindow?(e.openBlock(),e.createElementBlock("button",{key:3,class:"mrp-nav",type:"button",disabled:t.busy,onClick:d[8]||(d[8]=f=>o("pdf-window"))},[e.createVNode(W._sfc_main,{name:"external"}),e.createTextVNode(e.toDisplayString(t.messages.pdfWindow),1)],8,co)):e.createCommentVNode("",!0)],8,lo)):e.createCommentVNode("",!0),t.showSettings?(e.openBlock(),e.createElementBlock("button",{key:5,class:e.normalizeClass(["mrp-nav mrp-settings-toggle",{"mrp-active":t.settingsOpen}]),type:"button","aria-label":t.messages.settings??"设置","aria-haspopup":"dialog","aria-expanded":!!t.settingsOpen,onClick:d[9]||(d[9]=f=>o("settings-toggle"))},[e.createVNode(W._sfc_main,{name:"settings"}),e.createTextVNode(e.toDisplayString(t.messages.settings??"设置"),1)],10,uo)):e.createCommentVNode("",!0),t.showSearch!==!1&&t.search.visible?(e.openBlock(),e.createElementBlock("div",{key:6,class:"mrp-search-panel",role:"search","aria-label":t.messages.search??"内容搜索"},[e.createElementVNode("div",{class:e.normalizeClass(["mrp-search",{"mrp-search-no-results":t.search.query&&!t.search.searching&&!t.search.matchCount}])},[e.createVNode(W._sfc_main,{name:"search"}),e.createElementVNode("input",{ref_key:"searchInputRef",ref:s,class:"mrp-search-input",type:"text",autocomplete:"off",spellcheck:"false",placeholder:t.messages.searchPlaceholder,"aria-label":t.messages.search??t.messages.searchPlaceholder,value:t.search.query,onInput:d[10]||(d[10]=f=>o("search-input",f.target.value)),onKeydown:d[11]||(d[11]=(...f)=>e.unref(l).onKeydown&&e.unref(l).onKeydown(...f))},null,40,fo),t.search.query?(e.openBlock(),e.createElementBlock("button",{key:0,class:"mrp-nav mrp-search-clear mrp-icon-button",type:"button","aria-label":t.messages.clearSearch??"清除搜索",onClick:u},[e.createVNode(W._sfc_main,{name:"close",size:13})],8,po)):e.createCommentVNode("",!0),t.search.query?(e.openBlock(),e.createElementBlock("span",go,e.toDisplayString(t.search.searching?t.messages.searching??"搜索中…":c()),1)):e.createCommentVNode("",!0),e.createElementVNode("button",{class:"mrp-nav mrp-icon-button",type:"button",disabled:t.search.matchCount===0||t.search.searching,"aria-label":t.messages.prevSearchMatch??"上一个匹配",onClick:d[12]||(d[12]=f=>o("search-nav",-1))},[e.createVNode(W._sfc_main,{name:"chevron-up",size:14})],8,vo),e.createElementVNode("button",{class:"mrp-nav mrp-icon-button",type:"button",disabled:t.search.matchCount===0||t.search.searching,"aria-label":t.messages.nextSearchMatch??"下一个匹配",onClick:d[13]||(d[13]=f=>o("search-nav",1))},[e.createVNode(W._sfc_main,{name:"chevron-down",size:14})],8,yo),e.createElementVNode("button",{class:"mrp-nav mrp-search-close mrp-icon-button",type:"button","aria-label":t.messages.closeSearch??"关闭搜索",onClick:d[14]||(d[14]=(...f)=>e.unref(l).close&&e.unref(l).close(...f))},[e.createVNode(W._sfc_main,{name:"close",size:14})],8,bo)],2),e.createElementVNode("span",ho,e.toDisplayString(t.search.query&&!t.search.searching&&!t.search.matchCount?t.messages.searchNoMatches??"没有匹配内容":t.messages.searchHint??"Enter 下一个 · Shift+Enter 上一个"),1)],8,mo)):e.createCommentVNode("",!0)],8,Ya))}}),bn=W._export_sfc(wo,[["__scopeId","data-v-23cb4003"]]),ko=["disabled","aria-label","aria-expanded"],xo={key:0},Eo=["aria-label"],Co=["data-review-tool","onClick"],So=e.defineComponent({__name:"ReportDataTools",props:{prefill:{type:Boolean},comparison:{type:Boolean},issueCount:{},busy:{type:Boolean},messages:{}},emits:["open"],setup(t,{emit:n}){const a=t,r=n,{opened:o,root:l,trigger:s,panel:i,close:c,onKeydown:u}=ie.usePopover(),m=e.computed(()=>[{key:"prefill",label:a.messages.prefillTitle,visible:a.prefill},{key:"comparison",label:a.messages.comparisonTitle,visible:a.comparison},{key:"validation",label:`${a.messages.validationTitle} · ${a.issueCount}`,visible:a.issueCount>0}].filter(p=>p.visible));e.watch(()=>a.busy,p=>{p&&c()});function d(p){a.busy||(s.value?.focus(),c(),r("open",p))}function f(p){p.key!=="ArrowDown"&&p.key!=="ArrowUp"||(p.preventDefault(),o.value=!0,p.key==="ArrowUp"&&e.nextTick(()=>i.value?.querySelector("button:last-child")?.focus()))}function b(p){if(p.key==="Tab"){c();return}if(!["ArrowDown","ArrowUp","Home","End"].includes(p.key))return;p.preventDefault(),p.stopPropagation();const g=[...i.value?.querySelectorAll("button:not(:disabled)")??[]],y=g.indexOf(document.activeElement),D=p.key==="Home"?0:p.key==="End"?g.length-1:(y+(p.key==="ArrowDown"?1:-1)+g.length)%g.length;g[D]?.focus()}return(p,g)=>m.value.length?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"root",ref:l,class:"mrp-data-tools",onKeydown:g[1]||(g[1]=(...y)=>e.unref(u)&&e.unref(u)(...y))},[e.createElementVNode("button",{ref_key:"trigger",ref:s,class:"mrp-data-tools-trigger",type:"button",disabled:t.busy,"aria-label":t.messages.reviewTools,"aria-haspopup":"menu","aria-expanded":e.unref(o),onClick:g[0]||(g[0]=y=>o.value=!e.unref(o)),onKeydown:f},[e.createVNode(W._sfc_main,{name:"columns"}),e.createTextVNode(e.toDisplayString(t.messages.reviewTools),1),t.issueCount?(e.openBlock(),e.createElementBlock("b",xo,e.toDisplayString(t.issueCount),1)):e.createCommentVNode("",!0),e.createVNode(W._sfc_main,{name:"chevron-down",size:12})],40,ko),e.unref(o)?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"panel",ref:i,class:"mrp-data-tools-panel",role:"menu","aria-label":t.messages.reviewTools,onKeydown:b},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.value,y=>(e.openBlock(),e.createElementBlock("button",{key:y.key,type:"button",role:"menuitem",tabindex:"-1","data-review-tool":y.key,onClick:D=>d(y.key)},[e.createTextVNode(e.toDisplayString(y.label),1),e.createVNode(W._sfc_main,{name:"arrow-right",size:14})],8,Co))),128))],40,Eo)):e.createCommentVNode("",!0)],544)):e.createCommentVNode("",!0)}}),No=W._export_sfc(So,[["__scopeId","data-v-4786c94b"]]),Bo=["aria-label"],Vo=["aria-label"],$o={class:"mrp-review-dialog-body"},Do=e.defineComponent({__name:"ReportDataReviewDialog",props:{title:{},closeLabel:{}},emits:["close"],setup(t,{emit:n}){const a=n,r=e.ref(null),o=e.ref(null);let l=null;function s(i){if(i.defaultPrevented||i.isComposing)return;if(i.key==="Escape"){i.preventDefault(),i.stopPropagation(),a("close");return}if(i.key!=="Tab")return;const c=[...r.value?.querySelectorAll("button:not(:disabled),input:not(:disabled),select:not(:disabled),[tabindex='0']")??[]],u=c[0],m=c[c.length-1];(!r.value?.contains(document.activeElement)||i.shiftKey&&document.activeElement===u||!i.shiftKey&&document.activeElement===m)&&(i.preventDefault(),(i.shiftKey?m:u)?.focus())}return e.onMounted(()=>{l=document.activeElement instanceof HTMLElement?document.activeElement:null,o.value?.focus(),document.addEventListener("keydown",s)}),e.onUnmounted(()=>{document.removeEventListener("keydown",s),l?.isConnected&&l.focus()}),(i,c)=>(e.openBlock(),e.createElementBlock("div",{class:"mrp-review-backdrop",onClick:c[1]||(c[1]=e.withModifiers(u=>a("close"),["self"]))},[e.createElementVNode("section",{ref_key:"panel",ref:r,class:"mrp-review-dialog",role:"dialog","aria-modal":"true","aria-label":t.title},[e.createElementVNode("header",null,[e.createElementVNode("div",null,[c[2]||(c[2]=e.createElementVNode("span",null,"MACH REPORT",-1)),e.createElementVNode("strong",null,e.toDisplayString(t.title),1)]),e.createElementVNode("button",{ref_key:"closeButton",ref:o,type:"button","aria-label":t.closeLabel,onClick:c[0]||(c[0]=u=>a("close"))},[e.createVNode(W._sfc_main,{name:"close"})],8,Vo)]),e.createElementVNode("div",$o,[e.renderSlot(i.$slots,"default",{},void 0,!0)])],8,Bo)]))}}),Po=W._export_sfc(Do,[["__scopeId","data-v-e1a7542d"]]),Ro={key:0,class:"mrp-review-results"},Io={class:"mrp-review-scroll"},Mo={key:0},To={key:1},Oo={class:"mrp-review-sr"},Ao={scope:"row"},Fo={class:"mrp-review-value"},zo={class:"mrp-review-value"},Lo={key:0,class:"mrp-review-value"},qo={key:1,class:"mrp-review-value"},Ko={class:"mrp-review-status"},jo=["aria-label","onClick"],Wo=["data-tone"],Ho=["aria-label"],Uo=["disabled","aria-label"],Go=["disabled","aria-label"],Jo={key:1,class:"mrp-review-empty",role:"status"},hn=e.defineComponent({__name:"ReportDataReviewTable",props:{count:{},row:{type:Function},messages:{},delta:{type:Boolean}},emits:["locate"],setup(t,{emit:n}){const a=t,r=n,o=e.ref(0),l=50,s=e.computed(()=>Math.max(1,Math.ceil(a.count/l))),i=e.computed(()=>Array.from({length:Math.min(l,Math.max(0,a.count-o.value*l))},(u,m)=>{const d=o.value*l+m;return{index:d,...a.row(d)}}));function c(u){return u==null||u===""?"—":String(u)}return e.watch(()=>a.count,()=>{o.value=Math.min(o.value,s.value-1)}),(u,m)=>t.count?(e.openBlock(),e.createElementBlock("div",Ro,[e.createElementVNode("div",Io,[e.createElementVNode("table",null,[e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[e.createElementVNode("th",null,e.toDisplayString(t.messages.reviewKey),1),e.createElementVNode("th",null,e.toDisplayString(t.messages.reviewField),1),e.createElementVNode("th",null,e.toDisplayString(t.messages.reviewBefore),1),e.createElementVNode("th",null,e.toDisplayString(t.messages.reviewAfter),1),t.delta?(e.openBlock(),e.createElementBlock("th",Mo,e.toDisplayString(t.messages.reviewDelta),1)):e.createCommentVNode("",!0),t.delta?(e.openBlock(),e.createElementBlock("th",To,e.toDisplayString(t.messages.reviewRatio),1)):e.createCommentVNode("",!0),e.createElementVNode("th",null,[e.createElementVNode("span",Oo,e.toDisplayString(t.messages.reviewLocate),1)])])]),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,d=>(e.openBlock(),e.createElementBlock("tr",{key:d.index},[e.createElementVNode("th",Ao,e.toDisplayString(d.rowKey),1),e.createElementVNode("td",null,e.toDisplayString(d.label),1),e.createElementVNode("td",Fo,e.toDisplayString(c(d.before)),1),e.createElementVNode("td",zo,e.toDisplayString(c(d.after)),1),t.delta?(e.openBlock(),e.createElementBlock("td",Lo,e.toDisplayString(d.delta??"—"),1)):e.createCommentVNode("",!0),t.delta?(e.openBlock(),e.createElementBlock("td",qo,e.toDisplayString(d.ratio??"—"),1)):e.createCommentVNode("",!0),e.createElementVNode("td",Ko,[d.locatable?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button","aria-label":`${t.messages.reviewLocate}: ${d.rowKey} · ${d.label}`,onClick:f=>r("locate",d.index)},e.toDisplayString(t.messages.reviewLocate),9,jo)):(e.openBlock(),e.createElementBlock("span",{key:1,"data-tone":d.tone},e.toDisplayString(d.status),9,Wo))])]))),128))])])]),s.value>1?(e.openBlock(),e.createElementBlock("nav",{key:0,class:"mrp-review-pagination","aria-label":t.messages.reviewPage},[e.createElementVNode("button",{type:"button",disabled:o.value===0,"aria-label":t.messages.reviewPrevious,onClick:m[0]||(m[0]=d=>o.value--)},"‹",8,Uo),e.createElementVNode("span",null,e.toDisplayString(o.value+1)+" / "+e.toDisplayString(s.value),1),e.createElementVNode("button",{type:"button",disabled:o.value+1>=s.value,"aria-label":t.messages.reviewNext,onClick:m[1]||(m[1]=d=>o.value++)},"›",8,Go)],8,Ho)):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("p",Jo,e.toDisplayString(t.messages.reviewEmpty),1))}}),Xo=["aria-label","aria-busy"],Zo={class:"mrp-review-heading"},Yo=["disabled"],Qo={key:0,class:"mrp-review-error",role:"alert"},_o={class:"mrp-review-summary",role:"status"},er={"data-tone":"changed"},tr=["data-tone"],nr={key:0,class:"mrp-review-blocked",role:"status"},ar={class:"mrp-review-footer"},or=["disabled"],rr={key:0},wn=e.defineComponent({__name:"ReportPrefillPanel",props:{state:{},messages:{}},setup(t){const n=t,a=e.computed(()=>({...n.messages,reviewBefore:n.messages.prefillCurrent,reviewAfter:n.messages.prefillReference}));function r(l){const s=n.messages;return l.reason?{unchanged:s.prefillUnchanged,readonly:s.prefillReadonly,occupied:s.prefillOccupied,"missing-source":s.prefillMissingSource,"missing-target":s.prefillMissingTarget,ambiguous:s.prefillAmbiguous,invalid:s.prefillInvalid}[l.reason]:s.prefillChanged}function o(l){const s=n.state.result.value.items[l];return{rowKey:s.source.rowKey,label:s.label,before:s.before,after:s.after,status:r(s),tone:s.status}}return(l,s)=>(e.openBlock(),e.createElementBlock("section",{class:"mrp-data-review","aria-label":t.messages.prefillTitle,"aria-busy":t.state.busy.value||t.state.applying.value},[e.createElementVNode("header",Zo,[s[3]||(s[3]=e.createElementVNode("span",{class:"mrp-review-symbol","aria-hidden":"true"},"↳",-1)),e.createElementVNode("div",null,[e.createElementVNode("strong",null,e.toDisplayString(t.messages.prefillTitle),1),e.createElementVNode("p",null,e.toDisplayString(t.messages.prefillHint),1)]),t.state.busy.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",onClick:s[0]||(s[0]=i=>t.state.cancel())},e.toDisplayString(t.messages.reviewCancel),1)):(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",disabled:t.state.applying.value,onClick:s[1]||(s[1]=i=>t.state.run())},e.toDisplayString(t.messages.prefillLoad),9,Yo))]),t.state.error.value?(e.openBlock(),e.createElementBlock("p",Qo,e.toDisplayString(t.state.error.value),1)):e.createCommentVNode("",!0),t.state.result.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",_o,[e.createElementVNode("span",er,[e.createTextVNode(e.toDisplayString(t.messages.prefillChanged)+" ",1),e.createElementVNode("b",null,e.toDisplayString(t.state.result.value.counts.changed),1)]),e.createElementVNode("span",null,[e.createTextVNode(e.toDisplayString(t.messages.prefillMatched)+" ",1),e.createElementVNode("b",null,e.toDisplayString(t.state.result.value.counts.matched),1)]),e.createElementVNode("span",null,[e.createTextVNode(e.toDisplayString(t.messages.prefillSkipped)+" ",1),e.createElementVNode("b",null,e.toDisplayString(t.state.result.value.counts.skipped),1)]),e.createElementVNode("span",{"data-tone":t.state.result.value.counts.conflict?"conflict":void 0},[e.createTextVNode(e.toDisplayString(t.messages.prefillConflict)+" ",1),e.createElementVNode("b",null,e.toDisplayString(t.state.result.value.counts.conflict),1)],8,tr)]),e.createVNode(hn,{count:t.state.result.value.items.length,row:o,messages:a.value},null,8,["count","messages"]),t.state.blockedReason.value?(e.openBlock(),e.createElementBlock("p",nr,e.toDisplayString(t.state.blockedReason.value),1)):e.createCommentVNode("",!0),e.createElementVNode("footer",ar,[e.createElementVNode("button",{class:"mrp-review-primary",type:"button",disabled:!t.state.canApply.value,onClick:s[2]||(s[2]=i=>t.state.apply())},[e.createTextVNode(e.toDisplayString(t.messages.prefillApply)+" ",1),t.state.result.value.counts.changed?(e.openBlock(),e.createElementBlock("span",rr,"· "+e.toDisplayString(t.state.result.value.counts.changed),1)):e.createCommentVNode("",!0)],8,or)])],64)):e.createCommentVNode("",!0)],8,Xo))}}),lr=["aria-label","aria-busy"],sr={class:"mrp-review-heading"},ir={key:0,class:"mrp-review-error",role:"alert"},cr={class:"mrp-review-summary",role:"status"},ur={"data-tone":"added"},dr={"data-tone":"removed"},mr={"data-tone":"changed"},kn=e.defineComponent({__name:"ReportDataComparison",props:{state:{},messages:{}},setup(t){const n=t;function a(o){const l=n.state.result.value.differences[o],s=n.messages;return{rowKey:l.rowKey,label:l.label,before:l.before,after:l.after,delta:l.delta,ratio:l.changeRatio===void 0?void 0:ca.formatDecimal(l.changeRatio,void 0,!1,!0),status:{added:s.comparisonAdded,removed:s.comparisonRemoved,changed:s.comparisonChanged}[l.kind],tone:l.kind,locatable:l.kind!=="removed"}}function r(o){const l=n.state.result.value?.differences[o];l&&n.state.locate(l)}return(o,l)=>(e.openBlock(),e.createElementBlock("section",{class:"mrp-data-review","aria-label":t.messages.comparisonTitle,"aria-busy":t.state.busy.value},[e.createElementVNode("header",sr,[l[2]||(l[2]=e.createElementVNode("span",{class:"mrp-review-symbol","aria-hidden":"true"},"⇄",-1)),e.createElementVNode("div",null,[e.createElementVNode("strong",null,e.toDisplayString(t.messages.comparisonTitle),1),e.createElementVNode("p",null,e.toDisplayString(t.messages.comparisonHint),1)]),t.state.busy.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",onClick:l[0]||(l[0]=s=>t.state.cancel())},e.toDisplayString(t.messages.reviewCancel),1)):(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",onClick:l[1]||(l[1]=s=>t.state.run())},e.toDisplayString(t.messages.comparisonLoad),1))]),t.state.error.value?(e.openBlock(),e.createElementBlock("p",ir,e.toDisplayString(t.state.error.value),1)):e.createCommentVNode("",!0),t.state.result.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",cr,[e.createElementVNode("span",ur,[e.createTextVNode(e.toDisplayString(t.messages.comparisonAdded)+" ",1),e.createElementVNode("b",null,e.toDisplayString(t.state.result.value.counts.added),1)]),e.createElementVNode("span",dr,[e.createTextVNode(e.toDisplayString(t.messages.comparisonRemoved)+" ",1),e.createElementVNode("b",null,e.toDisplayString(t.state.result.value.counts.removed),1)]),e.createElementVNode("span",mr,[e.createTextVNode(e.toDisplayString(t.messages.comparisonChanged)+" ",1),e.createElementVNode("b",null,e.toDisplayString(t.state.result.value.counts.changed),1)]),e.createElementVNode("span",null,[e.createTextVNode(e.toDisplayString(t.messages.comparisonUnchanged)+" ",1),e.createElementVNode("b",null,e.toDisplayString(t.state.result.value.counts.unchanged),1)])]),e.createVNode(hn,{count:t.state.result.value.differences.length,row:a,messages:t.messages,delta:"",onLocate:r},null,8,["count","messages"])],64)):e.createCommentVNode("",!0)],8,lr))}}),fr=["aria-label"],pr={open:""},gr={class:"mr-validation__badge"},vr=["onClick"],yr={key:0},br=e.defineComponent({__name:"ReportValidationPanel",props:{issues:{},messages:{}},emits:["locate"],setup(t,{emit:n}){const a=t,r=n,o=e.computed(()=>({title:"数据校验",error:"错误",warning:"提示",locate:"定位",dataset:"全表",row:"行",more:"请缩小范围查看更多问题",...a.messages})),l=e.computed(()=>a.issues.filter(i=>i.severity==="error").length),s=e.computed(()=>a.issues.slice(0,100));return(i,c)=>t.issues.length?(e.openBlock(),e.createElementBlock("section",{key:0,class:"mr-validation","aria-label":o.value.title,"aria-live":"polite"},[e.createElementVNode("details",pr,[e.createElementVNode("summary",null,[e.createElementVNode("strong",null,e.toDisplayString(o.value.title),1),e.createElementVNode("span",{class:e.normalizeClass(["mr-validation__count",{"is-error":l.value}])},e.toDisplayString(l.value)+" "+e.toDisplayString(o.value.error)+" · "+e.toDisplayString(t.issues.length-l.value)+" "+e.toDisplayString(o.value.warning),3)]),e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,(u,m)=>(e.openBlock(),e.createElementBlock("li",{key:`${u.ruleId}:${u.dataset}:${u.rowKey}:${m}`,class:e.normalizeClass({"is-error":u.severity==="error"})},[e.createElementVNode("span",gr,e.toDisplayString(u.severity==="error"?o.value.error:o.value.warning),1),e.createElementVNode("div",null,[e.createElementVNode("strong",null,e.toDisplayString(u.message),1),e.createElementVNode("small",null,e.toDisplayString([u.dataset,u.rowKey??(u.rowIndex===void 0?o.value.dataset:`${o.value.row} ${u.rowIndex+1}`),u.field].filter(d=>d!==void 0&&d!=="").join(" · ")),1)]),u.rowKey!==void 0&&u.field!==void 0&&u.dataset!==void 0?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",onClick:d=>r("locate",u)},e.toDisplayString(o.value.locate)+" ↗",9,vr)):e.createCommentVNode("",!0)],2))),128))]),t.issues.length>s.value.length?(e.openBlock(),e.createElementBlock("p",yr,e.toDisplayString(s.value.length)+" / "+e.toDisplayString(t.issues.length)+" · "+e.toDisplayString(o.value.more),1)):e.createCommentVNode("",!0)])],8,fr)):e.createCommentVNode("",!0)}}),xn=W._export_sfc(br,[["__scopeId","data-v-5a34fcee"]]);function En(t,n){const a=new Set,r=t.pages.flatMap(u=>u.components),o=ce.dataLimit(n.maxCells,1e6,2e6);let l=0;function s(u){u?.datasetId===n.datasetId&&a.add(u.sourceScope)}for(;r.length;){const u=r.pop();if(++l>o)throw new ce.ReportDataError("limit","Report source scan exceeds its budget");s(u.table?.source);for(const m of u.grid?.cells??[])for(const d of m){if(++l>o)throw new ce.ReportDataError("limit","Report source scan exceeds its budget");d&&(s(d.source),d.children&&r.push(...d.children))}}if(!a.size)throw new ce.ReportDataError("identity","Current report has no business source for this dataset; reload a matching query before reviewing data");if(n.sourceScope===void 0){if(a.size===1)return a.values().next().value;throw new ce.ReportDataError("identity","Data review requires an explicit sourceScope for multiple business sources")}const c=[...new Set([n.sourceScope,Et.reportSourceScope(0,"",n.sourceScope)])].filter(u=>a.has(u));if(c.length===1)return c[0];throw new ce.ReportDataError("identity","Data review sourceScope does not identify one business source")}function hr(){const t=new Error("Report data loading cancelled");return t.name="AbortError",t}async function wr(t,n){const a=t.timeoutMs??15e3;if(!Number.isSafeInteger(a)||a<1||a>12e4)throw new Error("Report data loading timeout must be 1–120000 ms");let r;const o=()=>r?.(hr()),l=new Promise((i,c)=>{r=c,n.signal.addEventListener("abort",o,{once:!0})}),s=setTimeout(()=>{r?.(new Error("Report data loading timed out")),n.abort()},a);try{return await Promise.race([Promise.resolve(t.load({signal:n.signal})),l])}finally{clearTimeout(s),n.signal.removeEventListener("abort",o)}}function Cn(t,n){const a=e.ref(!1),r=e.shallowRef(null),o=e.ref(null);let l,s=0;function i(){s++,l?.abort(),l=void 0,a.value=!1}function c(){i(),r.value=null,o.value=null}async function u(){c();const m=t.plan.value,d=t.options.value;if(!m||!d||t.blocked())return;const f=++s,b=new AbortController;l=b,a.value=!0;const p=()=>f===s&&t.plan.value===m&&t.options.value===d;try{const g=await wr(d,b);if(!p()||b.signal.aborted||t.blocked())return;r.value=n(m,d,g)}catch(g){if(!p()||g instanceof Error&&g.name==="AbortError")return;o.value=g instanceof Error?g.message:"Report data review failed",t.onError?.(o.value,g)}finally{f===s&&(l=void 0,a.value=!1)}}return e.watch(t.plan,c,{flush:"sync"}),e.watch(t.options,c,{deep:!0,flush:"sync"}),e.onScopeDispose(c),{busy:a,result:r,error:o,run:u,cancel:i,clear:c}}function kr(t){const n=Cn(t,(d,f,b)=>ce.createReportPrefill(d,{...f,sourceScope:En(d,f),rows:b,canEdit:t.canEdit})),a=e.ref(!1);let r=0;function o(){r++,a.value=!1}function l(){o(),n.cancel()}function s(){o(),n.clear()}function i(){return o(),n.run()}e.watch(t.plan,o,{flush:"sync"}),e.watch(t.options,o,{deep:!0,flush:"sync"}),e.watch(n.result,o,{flush:"sync"}),e.onScopeDispose(o);const c=e.computed(()=>t.applyBlocked?.()),u=e.computed(()=>!c.value&&!!t.options.value&&!t.blocked()&&!n.busy.value&&!a.value&&!!n.result.value?.edits.length&&n.result.value.counts.conflict===0);async function m(){const d=t.plan.value,f=n.result.value;if(!d||!f||!u.value)return!1;const b=++r;a.value=!0;const p=()=>r===b;try{const g=await t.apply(ce.reportPrefillInputs(d,f,t.canEdit));return p()&&(g?s():n.error.value=t.failure?.()??"Report prefill was not applied"),g}catch(g){return p()&&(n.error.value=g instanceof Error?g.message:"Report prefill failed",t.onError?.(n.error.value,g)),!1}finally{p()&&(a.value=!1)}}return{...n,run:i,cancel:l,clear:s,applying:a,blockedReason:c,canApply:u,apply:m}}function xr(t){const n=Cn(t,(r,o,l)=>{const s=En(r,o),i=ce.reportDataSnapshotFromPlan(r,{...o,sourceScope:s,fields:o.fields.map(u=>u.field)}),c=new Set;for(const u of i.rows)for(const m of Object.keys(u.values))c.add(m);if(!o.fields.every(({field:u})=>c.has(u)))throw new ce.ReportDataError("identity","Comparison fields are not present in the current report; check visible field mappings");return ce.compareReportData({sourceScope:s,datasetId:o.datasetId,rows:l},i,o)});function a(r){const o=t.plan.value,l=t.options.value;if(!o||!l||!t.locate||r.kind==="removed")return!1;const s=n.result.value?.sourceScope,i={sourceScope:s,datasetId:l.datasetId,rowKey:r.rowKey,field:r.field},u=ce.indexReportDataCells(o,{...l,sourceScope:s,fields:[r.field]}).get(Et.reportCellEditKey({source:i,address:{pageIndex:0,componentIndex:0,rowIndex:0,columnIndex:0}}));return!u||u.ambiguous?!1:(t.locate({...u.context.address}),!0)}return{...n,locate:a}}function Er(t){const n=e.ref(null),a=e.computed(()=>({...t.messages.value,...ie.resolveDataReviewMessages(t.messages.value)})),r=e.computed(()=>!!t.prefill.value&&typeof t.prefill.value.load=="function"),o=e.computed(()=>!!t.comparison.value&&typeof t.comparison.value.load=="function");function l(p){const g=t.editingOptions.value;return!!g&&(typeof g!="object"||g.canEdit?.(p)!==!1)}const s=kr({plan:t.plan,options:t.prefill,blocked:t.busy,canEdit:l,apply:async p=>{const g=await t.apply(p);return!g&&t.issues.value.length&&(n.value="validation"),g},failure:t.editError,onError:t.error,applyBlocked:()=>{const p=t.editingOptions.value;if(!p)return t.messages.value.editReadOnly;if(typeof p=="object"&&p.save&&!p.saveBatch&&(s.result.value?.edits.length??0)>1)return t.messages.value.editAtomicRequired}}),i=xr({plan:t.plan,options:t.comparison,blocked:t.busy,onError:t.error,locate:p=>{c(),t.locate(p)}});function c(){n.value=null,s.cancel(),i.cancel()}async function u(p){t.busy()||p==="prefill"&&!r.value||p==="comparison"&&!o.value||p==="validation"&&!t.issues.value.length||!await t.settle()||t.busy()||(n.value=p)}const m=e.computed(()=>n.value==="prefill"?a.value.prefillTitle:n.value==="comparison"?a.value.comparisonTitle:t.messages.value.validationTitle??"数据校验"),d=e.computed(()=>({title:t.messages.value.validationTitle,error:t.messages.value.validationError,warning:t.messages.value.validationWarning,locate:a.value.reviewLocate,dataset:t.messages.value.validationDataset,row:t.messages.value.validationRow,more:t.messages.value.validationMore}));function f(p){const g=t.plan.value;if(!g||p.rowKey===void 0||!p.dataset||!p.field){t.missing();return}const y=ce.indexReportDataCells(g,{datasetId:p.dataset,sourceScope:p.sourceScope,fields:[p.field]}),D=Et.reportCellEditKey({source:{sourceScope:p.sourceScope,datasetId:p.dataset,rowKey:p.rowKey,field:p.field},address:{pageIndex:0,componentIndex:0,rowIndex:0,columnIndex:0}}),v=y.get(D);if(!v||v.ambiguous){t.missing();return}c(),t.locate({...v.context.address})}const b=()=>{c(),s.clear(),i.clear()};return e.watch(t.plan,b,{flush:"sync"}),e.watch([()=>t.replacing(),t.prefill,t.comparison],b,{deep:!0,flush:"sync"}),e.watch(t.issues,p=>{n.value==="validation"&&!p.length&&c()}),{opened:n,messages:a,availablePrefill:r,availableComparison:o,prefill:s,comparison:i,title:m,validationMessages:d,open:u,close:c,locateIssue:f}}function Cr(t){const n=t.meta?.record;if(!(!n||typeof n!="object"||typeof n.dataset!="string")&&[n.rowIndex,n.copyIndex,n.templatePageIndex].every(a=>Number.isSafeInteger(a)&&Number(a)>=0)&&!(n.rowKey!==void 0&&typeof n.rowKey!="string"&&typeof n.rowKey!="number"))return n}function Sr(t){const n=[],a=[];let r;for(const[o,l]of(t?.pages??[]).entries()){const s=Cr(l);if(!s){a.push(-1),r=void 0;continue}(!r||s.dataset!==r.dataset||s.rowIndex!==r.rowIndex||s.rowKey!==r.rowKey||s.copyIndex===0&&s.templatePageIndex===0)&&n.push({page:o+1,...s.rowKey===void 0?{}:{rowKey:s.rowKey}}),a.push(n.length-1),r=s}return{entries:n,pageRecords:a}}const Nr=["aria-label"],Br={key:0,class:"mrp-record-arrows"},Vr=["aria-label","title","disabled"],$r=["aria-label","title","disabled"],Dr={class:"mrp-record-info","aria-live":"polite"},Pr=["title"],Rr=["title"],Ir=e.defineComponent({__name:"ReportRecordNavigation",props:{plan:{},currentPage:{},messages:{},busy:{type:Boolean}},emits:["goto"],setup(t,{emit:n}){const a=t,r=n,o=e.computed(()=>Sr(a.plan)),l=e.computed(()=>o.value.pageRecords[a.currentPage-1]??-1),s=e.computed(()=>l.value>=0?o.value.entries[l.value]:void 0),i=e.computed(()=>(a.messages.recordInfo??"记录 {cur} / {total}").replace("{cur}",String(l.value+1)).replace("{total}",String(o.value.entries.length))),c=e.computed(()=>{const m=a.plan?.pages[a.currentPage-1]?.meta?.title;return typeof m=="string"?m:""});function u(m){const d=o.value.entries[l.value+m];!a.busy&&l.value>=0&&d&&r("goto",d.page)}return(m,d)=>s.value?(e.openBlock(),e.createElementBlock("nav",{key:0,class:"mrp-record-navigation","aria-label":t.messages.recordNavigation??"标签记录"},[o.value.entries.length>1?(e.openBlock(),e.createElementBlock("div",Br,[e.createElementVNode("button",{type:"button","aria-label":t.messages.prevRecord??"上一条记录",title:t.messages.prevRecord??"上一条记录",disabled:t.busy||l.value<=0,onClick:d[0]||(d[0]=f=>u(-1))},[e.createVNode(W._sfc_main,{name:"chevron-left",size:13})],8,Vr),e.createElementVNode("button",{type:"button","aria-label":t.messages.nextRecord??"下一条记录",title:t.messages.nextRecord??"下一条记录",disabled:t.busy||l.value>=o.value.entries.length-1,onClick:d[1]||(d[1]=f=>u(1))},[e.createVNode(W._sfc_main,{name:"chevron-right",size:13})],8,$r)])):e.createCommentVNode("",!0),e.createElementVNode("span",Dr,e.toDisplayString(i.value),1),s.value.rowKey!==void 0?(e.openBlock(),e.createElementBlock("code",{key:1,title:String(s.value.rowKey)},e.toDisplayString(s.value.rowKey),9,Pr)):e.createCommentVNode("",!0),c.value?(e.openBlock(),e.createElementBlock("span",{key:2,class:"mrp-record-face",title:c.value},e.toDisplayString(c.value),9,Rr)):e.createCommentVNode("",!0)],8,Nr)):e.createCommentVNode("",!0)}}),Mr=W._export_sfc(Ir,[["__scopeId","data-v-aa94fa14"]]),Tr=["aria-label","aria-busy"],Or={class:"mrp-calculation-heading"},Ar={class:"mrp-calculation-controls"},Fr=["aria-label","value","disabled"],zr=["value"],Lr={class:"mrp-calculation-precision"},qr=["aria-label","value","disabled"],Kr={key:0,class:"mrp-calculation-expression"},jr=["aria-label","value","disabled"],Wr={class:"mrp-calculation-actions"},Hr={key:1,class:"mrp-calculation-diagnostic",role:"alert"},Ur={key:2,class:"mrp-calculation-result",role:"status","aria-live":"polite"},Gr={key:0},Jr={key:3,class:"mrp-calculation-empty"},Xr={class:"mrp-calculation-local"},Zr=e.defineComponent({__name:"ReportCalculationPanel",props:{state:{},messages:{}},setup(t){const n=t,a=`mrp-calculation-expression-hint-${e.getCurrentInstance()?.uid??0}`,r=e.computed(()=>[["sum",n.messages.calculationSum],["average",n.messages.calculationAverage],["min",n.messages.calculationMin],["max",n.messages.calculationMax],["count",n.messages.calculationCount],["median",n.messages.calculationMedian],["expression",n.messages.calculationCustom]]),o=e.computed(()=>{const l=n.state.error.value;if(!l)return"";const s=n.messages;return{selection:s.calculationErrorSelection,limit:s.calculationErrorLimit,expression:s.calculationErrorExpression,division:s.calculationErrorDivision,overflow:s.calculationErrorOverflow,precision:s.calculationErrorPrecision}[l]});return(l,s)=>(e.openBlock(),e.createElementBlock("section",{class:"mrp-calculation","aria-label":t.messages.calculationTitle,"aria-busy":t.state.busy.value},[e.createElementVNode("header",Or,[s[5]||(s[5]=e.createElementVNode("span",{class:"mrp-calculation-symbol","aria-hidden":"true"},"∑",-1)),e.createElementVNode("div",null,[e.createElementVNode("strong",null,e.toDisplayString(t.messages.calculationTitle),1),e.createElementVNode("p",null,e.toDisplayString(t.messages.calculationHint),1)])]),e.createElementVNode("div",Ar,[e.createElementVNode("label",null,[e.createElementVNode("span",null,e.toDisplayString(t.messages.calculationFormula),1),e.createElementVNode("select",{"aria-label":t.messages.calculationFormula,value:t.state.operation.value,onChange:s[0]||(s[0]=i=>t.state.setOperation(i.target.value)),disabled:t.state.busy.value},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,([i,c])=>(e.openBlock(),e.createElementBlock("option",{key:i,value:i},e.toDisplayString(c),9,zr))),128))],40,Fr)]),e.createElementVNode("label",Lr,[e.createElementVNode("span",null,e.toDisplayString(t.messages.calculationPrecision),1),e.createElementVNode("input",{"aria-label":t.messages.calculationPrecision,value:t.state.precision.value,onChange:s[1]||(s[1]=i=>t.state.setPrecision(Number(i.target.value))),type:"number",min:"0",max:"12",step:"1",disabled:t.state.busy.value},null,40,qr)])]),t.state.operation.value==="expression"?(e.openBlock(),e.createElementBlock("label",Kr,[e.createElementVNode("span",null,e.toDisplayString(t.messages.calculationExpression),1),e.createElementVNode("input",{"aria-label":t.messages.calculationExpression,"aria-describedby":a,value:t.state.expression.value,onInput:s[2]||(s[2]=i=>t.state.setExpression(i.target.value)),type:"text",maxlength:"256",spellcheck:"false",disabled:t.state.busy.value,placeholder:"SUM / COUNT"},null,40,jr),e.createElementVNode("small",{id:a},e.toDisplayString(t.messages.calculationExpressionHint),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",Wr,[t.state.busy.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",onClick:s[3]||(s[3]=i=>t.state.cancel())},e.toDisplayString(t.messages.calculationCancel),1)):(e.openBlock(),e.createElementBlock("button",{key:1,class:"mrp-calculation-run",type:"button",onClick:s[4]||(s[4]=i=>t.state.run())},e.toDisplayString(t.messages.calculationRun),1))]),o.value?(e.openBlock(),e.createElementBlock("p",Hr,e.toDisplayString(o.value),1)):t.state.result.value?(e.openBlock(),e.createElementBlock("div",Ur,[e.createElementVNode("span",null,e.toDisplayString(t.messages.calculationResult),1),e.createElementVNode("output",null,e.toDisplayString(t.state.result.value.formatted),1),e.createElementVNode("small",null,[e.createElementVNode("span",null,e.toDisplayString(t.messages.calculationIncluded)+" "+e.toDisplayString(t.state.result.value.numericCells),1),e.createElementVNode("span",null,e.toDisplayString(t.messages.calculationExcluded)+" "+e.toDisplayString(t.state.result.value.excludedCells),1)]),t.state.result.value.numericCells===0?(e.openBlock(),e.createElementBlock("p",Gr,e.toDisplayString(t.messages.calculationEmpty),1)):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("p",Jr,e.toDisplayString(t.messages.calculationNoSelection),1)),e.createElementVNode("p",Xr,e.toDisplayString(t.messages.calculationLocal),1)],8,Tr))}}),Yr=W._export_sfc(Zr,[["__scopeId","data-v-ee359251"]]);function Qr(t){const n=e.ref("sum"),a=e.ref("SUM / COUNT"),r=e.ref(2),o=e.ref(!1),l=e.shallowRef(null),s=e.ref(null);let i=null,c=0;function u(){c++,i?.abort(),i=null,o.value=!1}function m(){u(),l.value=null,s.value=null}async function d(){if(m(),!t.enabled())return;const g=t.plan.value,y=t.selection.value;if(!g||!y){s.value="selection";return}const D=++c,v=new AbortController;i=v,o.value=!0;try{const k=await U.calculateReportSelection(g,y,{operation:n.value,expression:a.value,precision:r.value,signal:v.signal});D===c&&t.plan.value===g&&t.selection.value===y&&t.enabled()&&(l.value=k)}catch(k){D===c&&!v.signal.aborted&&(s.value=k instanceof U.ReportCalculationError?k.code:"expression")}finally{D===c&&(o.value=!1,i=null)}}e.watch([t.plan,t.selection,()=>t.enabled(),n,a,r],m,{flush:"sync"}),e.onScopeDispose(m);function f(g){n.value=g}function b(g){a.value=g}function p(g){r.value=g}return{operation:n,expression:a,precision:r,busy:o,result:l,error:s,run:d,cancel:u,clear:m,setOperation:f,setExpression:b,setPrecision:p}}const _r=["aria-label"],el={class:"mrp-settings-header"},tl=["aria-label"],nl=["aria-label"],al=["id","aria-selected","aria-controls","tabindex","onClick","onKeydown"],ol={class:"mrp-settings-content"},rl=["id","aria-labelledby","hidden"],ll={key:0},sl={class:"mrp-settings-option"},il=["checked","disabled"],cl={class:"mrp-settings-option"},ul=["value","disabled"],dl=["id","aria-labelledby","hidden"],ml={key:0},fl=["checked","disabled","onChange"],pl={key:0,class:"mrp-settings-note"},gl={key:1,class:"mrp-settings-note"},vl=["id","aria-labelledby","hidden"],yl={class:"mrp-settings-intro"},bl={class:"mrp-settings-option mrp-settings-feature"},hl=["id"],wl=["aria-label","aria-describedby","checked","disabled"],kl=["disabled"],xl=e.defineComponent({__name:"ReportSettings",props:{available:{},enabled:{},messages:{},persistedEditing:{type:Boolean},busy:{type:Boolean},interaction:{},section:{}},emits:["change","reset","close","interaction","section"],setup(t,{emit:n}){const a=t,r=n,o=e.ref(null),l=e.computed(()=>a.section??"general"),s="mrp-settings-"+e.getCurrentInstance()?.uid,i=e.computed(()=>[{key:"general",label:a.messages.settingsGeneral??"常规"},{key:"tools",label:a.messages.settingsTools??"工具"},{key:"advanced",label:a.messages.settingsAdvanced??"高级"}]);function c(g,y){const v={ArrowRight:(y+1)%3,ArrowLeft:(y+2)%3,Home:0,End:2}[g.key];v!==void 0&&(g.preventDefault(),r("section",i.value[v].key),o.value?.querySelector("#"+s+"-tab-"+i.value[v].key)?.focus())}const u=e.ref(null);let m=null;const d=e.computed(()=>[{label:a.messages.settingsDisplay,tools:[["search",a.messages.search],["thumbnails",a.messages.thumbnails],["zoom",a.messages.zoom]]},{label:a.messages.settingsExport,tools:[["html",a.messages.exportHtml],["pdf",a.messages.exportPdf],["xlsx",a.messages.exportExcel],["png",a.messages.exportImage],["word",a.messages.exportWord],["print",a.messages.print],["pdfWindow",a.messages.pdfWindow]]},{label:a.messages.settingsData,tools:[["editing",a.messages.editCell],["import",a.messages.importExcel]]}].map(g=>({...g,tools:g.tools.map(([y,D])=>({key:y,label:D}))})));function f(g,y){const D=g.target,v=D.checked;D.checked=a.enabled[y],r("change",y,v)}function b(g){return!o.value||g.defaultPrevented?!1:g.target instanceof Node&&o.value.contains(g.target)?!0:g.target instanceof Element&&g.target.closest('[role="dialog"],dialog[open]')?!1:!Array.from(document.querySelectorAll('[aria-modal="true"],dialog[open]')).some(y=>y!==o.value&&!o.value.contains(y))}function p(g){if(!b(g))return;if(g.key==="Escape"){g.preventDefault(),g.stopPropagation(),r("close");return}if(g.key!=="Tab")return;const y=Array.from(o.value?.querySelectorAll("a[href],button:not(:disabled),input:not(:disabled),textarea:not(:disabled),select:not(:disabled),[tabindex='0']")??[]).filter($=>!$.closest("[hidden]")&&$.tabIndex!==-1),D=y?.[0],v=y?.[y.length-1];(!o.value?.contains(document.activeElement)||g.shiftKey&&document.activeElement===D||!g.shiftKey&&document.activeElement===v)&&(g.preventDefault(),g.stopPropagation(),(g.shiftKey?v:D)?.focus())}return e.onMounted(()=>{const g=o.value?.closest(".mach-report-preview")?.querySelector(".mrp-settings-toggle"),y=document.activeElement;m=y instanceof HTMLElement&&y!==document.body&&!o.value?.contains(y)?y:g??null,u.value?.focus(),document.addEventListener("keydown",p)}),e.onUnmounted(()=>{document.removeEventListener("keydown",p),m?.isConnected&&m.focus()}),(g,y)=>(e.openBlock(),e.createElementBlock("div",{class:"mrp-settings-backdrop",onClick:y[5]||(y[5]=e.withModifiers(D=>g.$emit("close"),["self"]))},[e.createElementVNode("section",{ref_key:"panel",ref:o,class:"mrp-settings-panel",role:"dialog","aria-modal":"true","aria-label":t.messages.settings},[e.createElementVNode("header",el,[e.createElementVNode("div",null,[y[6]||(y[6]=e.createElementVNode("span",{class:"mrp-settings-eyebrow"},"MACH REPORT",-1)),e.createElementVNode("strong",null,e.toDisplayString(t.messages.settings),1),e.createElementVNode("p",null,e.toDisplayString(t.messages.settingsLocal),1)]),e.createElementVNode("button",{ref_key:"closeButton",ref:u,class:"mrp-settings-close",type:"button","aria-label":t.messages.settingsClose,onClick:y[0]||(y[0]=D=>g.$emit("close"))},[...y[7]||(y[7]=[e.createElementVNode("svg",{width:"16",height:"16",viewBox:"0 0 20 20",fill:"none","aria-hidden":"true"},[e.createElementVNode("path",{d:"m5 5 10 10M15 5 5 15",stroke:"currentColor","stroke-width":"1.6","stroke-linecap":"round"})],-1)])],8,tl)]),e.createElementVNode("div",{class:"mrp-settings-tabs",role:"tablist","aria-label":t.messages.settings},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,(D,v)=>(e.openBlock(),e.createElementBlock("button",{id:s+"-tab-"+D.key,key:D.key,type:"button",role:"tab","aria-selected":l.value===D.key,"aria-controls":s+"-panel-"+D.key,tabindex:l.value===D.key?0:-1,onClick:k=>g.$emit("section",D.key),onKeydown:k=>c(k,v)},e.toDisplayString(D.label),41,al))),128))],8,nl),e.createElementVNode("div",ol,[e.createElementVNode("section",{id:s+"-panel-general",role:"tabpanel","aria-labelledby":s+"-tab-general",hidden:l.value!=="general"},[e.renderSlot(g.$slots,"default",{},void 0,!0),t.interaction?(e.openBlock(),e.createElementBlock("fieldset",ll,[e.createElementVNode("legend",null,e.toDisplayString(t.messages.settingsPanes),1),e.createElementVNode("label",sl,[e.createElementVNode("span",null,e.toDisplayString(t.messages.freezeHeaders),1),e.createElementVNode("input",{type:"checkbox",checked:t.interaction.freezeHeaders,disabled:t.busy,onChange:y[1]||(y[1]=D=>g.$emit("interaction",{freezeHeaders:D.target.checked}))},null,40,il)]),e.createElementVNode("label",cl,[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:y[2]||(y[2]=D=>g.$emit("interaction",{frozenColumns:Math.max(0,Math.min(20,Number(D.target.value)||0))}))},null,40,ul)])])):e.createCommentVNode("",!0)],8,rl),e.createElementVNode("section",{id:s+"-panel-tools",role:"tabpanel","aria-labelledby":s+"-tab-tools",hidden:l.value!=="tools"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,D=>(e.openBlock(),e.createElementBlock("fieldset",{key:D.label},[e.createElementVNode("legend",null,e.toDisplayString(D.label),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(D.tools,v=>(e.openBlock(),e.createElementBlock("label",{key:v.key,class:e.normalizeClass(["mrp-settings-option",{"mrp-settings-unavailable":!t.available[v.key]}])},[e.createElementVNode("span",null,[e.createTextVNode(e.toDisplayString(v.label),1),t.available[v.key]?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("small",ml,e.toDisplayString(t.messages.settingsUnavailable),1))]),e.createElementVNode("input",{type:"checkbox",checked:t.enabled[v.key],disabled:t.busy||!t.available[v.key],onChange:k=>f(k,v.key)},null,40,fl)],2))),128))]))),128)),t.available.editing?(e.openBlock(),e.createElementBlock("p",pl,e.toDisplayString(t.persistedEditing?t.messages.editingSaved:t.messages.editingLocal),1)):e.createCommentVNode("",!0),t.available.import?(e.openBlock(),e.createElementBlock("p",gl,e.toDisplayString(t.messages.importLocal),1)):e.createCommentVNode("",!0)],8,dl),e.createElementVNode("section",{id:s+"-panel-advanced",role:"tabpanel","aria-labelledby":s+"-tab-advanced",hidden:l.value!=="advanced"},[e.createElementVNode("p",yl,e.toDisplayString(t.messages.settingsAdvancedDescription),1),e.createElementVNode("label",bl,[e.createElementVNode("span",null,[e.createTextVNode(e.toDisplayString(t.messages.settingsCalculations),1),e.createElementVNode("small",{id:s+"-calculation-description"},e.toDisplayString(t.messages.settingsCalculationsDescription),9,hl)]),e.createElementVNode("input",{type:"checkbox","aria-label":t.messages.settingsCalculations,"aria-describedby":s+"-calculation-description",checked:t.interaction?.calculations===!0,disabled:t.busy,onChange:y[3]||(y[3]=D=>g.$emit("interaction",{calculations:D.target.checked}))},null,40,wl)]),t.interaction?.calculations?e.renderSlot(g.$slots,"advanced",{},void 0,!0,0):e.createCommentVNode("",!0)],8,vl)]),e.createElementVNode("footer",null,[e.createElementVNode("button",{type:"button",disabled:t.busy,onClick:y[4]||(y[4]=D=>g.$emit("reset"))},e.toDisplayString(t.messages.settingsReset),9,kl),e.createElementVNode("span",null,e.toDisplayString(t.messages.settingsLocal),1)])],8,_r)]))}}),El=W._export_sfc(xl,[["__scopeId","data-v-36723612"]]),Cl={class:"mrp-empty",role:"status"},Sl={key:0},Nl=e.defineComponent({__name:"ReportEmpty",props:{title:{},description:{}},setup(t){return(n,a)=>(e.openBlock(),e.createElementBlock("div",Cl,[a[0]||(a[0]=e.createStaticVNode('<svg class="mrp-empty-art" viewBox="0 0 160 112" fill="none" aria-hidden="true" data-v-3e16b87e><ellipse cx="80" cy="100" rx="54" ry="7" fill="currentColor" opacity=".05" data-v-3e16b87e></ellipse><rect x="34" y="15" width="92" height="78" rx="9" fill="currentColor" opacity=".10" data-v-3e16b87e></rect><rect x="42" y="9" width="76" height="78" rx="7" fill="var(--mrp-toolbar-bg, #fff)" stroke="currentColor" stroke-opacity=".2" stroke-width="1.5" data-v-3e16b87e></rect><path d="M55 27H105M55 42H105M55 57H85M55 72H76M71 27V72M89 27V57" stroke="currentColor" stroke-opacity=".4" stroke-width="1.5" stroke-linecap="round" data-v-3e16b87e></path><circle cx="112" cy="76" r="16" fill="var(--mrp-toolbar-bg, #fff)" stroke="currentColor" stroke-opacity=".35" stroke-width="2" data-v-3e16b87e></circle><path d="M124 88L137 101M106 76H118" stroke="currentColor" stroke-opacity=".45" stroke-width="3" stroke-linecap="round" data-v-3e16b87e></path><circle cx="27" cy="38" r="3" fill="currentColor" opacity=".12" data-v-3e16b87e></circle><circle cx="132" cy="24" r="2" fill="currentColor" opacity=".2" data-v-3e16b87e></circle></svg>',1)),e.createElementVNode("strong",null,e.toDisplayString(t.title),1),t.description?(e.openBlock(),e.createElementBlock("p",Sl,e.toDisplayString(t.description),1)):e.createCommentVNode("",!0)]))}}),en=W._export_sfc(Nl,[["__scopeId","data-v-3e16b87e"]]),Bl=["aria-label"],Vl=e.defineComponent({__name:"ReportDiscardDialog",props:{messages:{}},emits:["answer"],setup(t,{emit:n}){const a=n,r=e.ref(null),o=e.ref(null);let l=null;function s(i){i.key==="Escape"&&(i.preventDefault(),a("answer",!1)),i.key==="Tab"&&(i.preventDefault(),document.activeElement===r.value?o.value?.focus():r.value?.focus())}return e.onMounted(()=>{l=document.activeElement instanceof HTMLElement?document.activeElement:null,r.value?.focus()}),e.onUnmounted(()=>{l?.isConnected&&l.focus()}),(i,c)=>(e.openBlock(),e.createElementBlock("div",{class:"mrp-discard-backdrop",onKeydown:s,onClick:c[2]||(c[2]=e.withModifiers(u=>a("answer",!1),["self"]))},[e.createElementVNode("section",{class:"mrp-discard-dialog",role:"alertdialog","aria-modal":"true","aria-label":t.messages.discardTitle},[e.createElementVNode("strong",null,e.toDisplayString(t.messages.discardTitle),1),e.createElementVNode("p",null,e.toDisplayString(t.messages.discardDescription),1),e.createElementVNode("footer",null,[e.createElementVNode("button",{ref_key:"keep",ref:r,type:"button",onClick:c[0]||(c[0]=u=>a("answer",!1))},e.toDisplayString(t.messages.discardKeep),513),e.createElementVNode("button",{ref_key:"discard",ref:o,type:"button",onClick:c[1]||(c[1]=u=>a("answer",!0))},e.toDisplayString(t.messages.discardProceed),513)])],8,Bl)],32))}}),$l=W._export_sfc(Vl,[["__scopeId","data-v-f7590294"]]),Dl={key:0,class:"mrp-task-status",role:"status","aria-live":"polite"},Pl={key:0},Rl=["value","max","aria-label"],Il=e.defineComponent({__name:"ReportTaskStatus",props:{task:{},messages:{}},emits:["cancel"],setup(t){const n=t,a=e.computed(()=>({query:n.messages.taskQuery,validate:n.messages.taskValidate,layout:n.messages.taskLayout,assets:n.messages.taskAssets,import:n.messages.importing,encode:n.messages.taskEncode,download:n.messages.taskDownload,print:n.messages.taskPrint})),r=e.computed(()=>n.task?.total===void 0?"":`${n.task.completed??0} / ${n.task.total}`);return(o,l)=>t.task&&(t.task.status==="running"||t.task.status==="cancelled")?(e.openBlock(),e.createElementBlock("div",Dl,[e.createElementVNode("span",null,[e.createTextVNode(e.toDisplayString(t.task.status==="cancelled"?t.messages.taskCancelled:a.value[t.task.stage])+" ",1),t.task.status==="running"?(e.openBlock(),e.createElementBlock("small",Pl,e.toDisplayString(r.value),1)):e.createCommentVNode("",!0)]),t.task.status==="running"&&t.task.total!==void 0?(e.openBlock(),e.createElementBlock("progress",{key:0,value:t.task.completed??0,max:t.task.total,"aria-label":a.value[t.task.stage]},null,8,Rl)):e.createCommentVNode("",!0),t.task.status==="running"&&t.task.cancellable?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",onClick:l[0]||(l[0]=s=>o.$emit("cancel"))},e.toDisplayString(t.messages.taskCancel),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)}}),Ml=W._export_sfc(Il,[["__scopeId","data-v-657ac599"]]),Tl={key:0,class:"mrp-diagnostics"},Ol=["aria-label","placeholder"],Al={key:0},Fl=["onClick"],zl={key:0},Ll=e.defineComponent({__name:"ReportDiagnostics",props:{entries:{},messages:{}},emits:["locate"],setup(t){const n=t,a=e.ref(""),r=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})),o=e.computed(()=>{const i=a.value.trim().toLocaleLowerCase();return i?n.entries.filter(c=>`${c.code} ${c.message} ${r.value[c.code]??""} ${c.path??""} ${s(c)} ${c.format??""}`.toLocaleLowerCase().includes(i)):n.entries}),l=e.computed(()=>o.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,c)=>t.entries.length?(e.openBlock(),e.createElementBlock("details",Tl,[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":c[0]||(c[0]=u=>a.value=u),type:"search","aria-label":t.messages.diagnosticsSearch,placeholder:t.messages.diagnosticsSearch},null,8,Ol),[[e.vModelText,a.value]]),e.createElementVNode("ol",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(u,m)=>(e.openBlock(),e.createElementBlock("li",{key:m},[e.createElementVNode("div",null,[e.createElementVNode("b",null,e.toDisplayString(u.format?.toUpperCase()??u.severity)+" · "+e.toDisplayString(u.code),1),e.createElementVNode("p",null,e.toDisplayString(r.value[u.code]??u.message),1),r.value[u.code]?(e.openBlock(),e.createElementBlock("details",Al,[e.createElementVNode("summary",null,e.toDisplayString(t.messages.diagnosticsDetails),1),e.createTextVNode(e.toDisplayString(u.message),1)])):e.createCommentVNode("",!0),e.createElementVNode("small",null,e.toDisplayString(s(u)),1)]),u.pageIndex!==void 0?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",onClick:d=>i.$emit("locate",u)},e.toDisplayString(t.messages.diagnosticsLocate),9,Fl)):e.createCommentVNode("",!0)]))),128))]),o.value.length>l.value.length?(e.openBlock(),e.createElementBlock("small",zl,e.toDisplayString((t.messages.diagnosticsMore??"").replace("{count}",String(o.value.length))),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)}}),ql=W._export_sfc(Ll,[["__scopeId","data-v-3b7804ce"]]),Kl={key:0,class:"mrp-data-explanation"},jl={class:"mrp-data-content"},Wl=["aria-label","placeholder"],Hl={class:"mrp-data-state"},Ul=["disabled","onClick"],Gl={key:0,role:"status"},Jl={key:1},Xl=e.defineComponent({__name:"ReportDataExplanation",props:{entries:{},messages:{},busy:{type:Boolean}},emits:["locate"],setup(t,{emit:n}){const a=t,r=n,o=e.ref(""),l=e.computed(()=>({"missing-source":a.messages.dataMissingSource,"not-applicable":a.messages.dataNotApplicable,"not-calculable":a.messages.dataNotCalculable})),s=e.computed(()=>{const c=o.value.toLocaleLowerCase().trim().split(/\s+/).filter(Boolean);return a.entries.filter(u=>c.every(m=>`${u.message} ${u.target?.datasetId} ${u.target?.rowKey??""} ${u.target?.field} ${l.value[u.valueState]??""}`.toLocaleLowerCase().includes(m)))}),i=e.computed(()=>s.value.slice(0,100));return(c,u)=>t.entries.length?(e.openBlock(),e.createElementBlock("details",Kl,[e.createElementVNode("summary",null,[e.createVNode(W._sfc_main,{name:"file",size:14}),e.createElementVNode("span",null,e.toDisplayString(t.messages.dataExplanation),1),e.createElementVNode("b",null,e.toDisplayString(t.entries.length),1),e.createElementVNode("small",null,e.toDisplayString(t.messages.dataExplanationHint),1),e.createVNode(W._sfc_main,{name:"chevron-down",size:12})]),e.createElementVNode("div",jl,[e.createElementVNode("label",null,[e.createVNode(W._sfc_main,{name:"search",size:15}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":u[0]||(u[0]=m=>o.value=m),type:"search","aria-label":t.messages.dataExplanationSearch,placeholder:t.messages.dataExplanationSearch},null,8,Wl),[[e.vModelText,o.value]])]),e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,(m,d)=>(e.openBlock(),e.createElementBlock("li",{key:d},[e.createElementVNode("div",null,[e.createElementVNode("span",Hl,e.toDisplayString(l.value[m.valueState]),1),e.createElementVNode("code",null,[e.createTextVNode(e.toDisplayString(m.target?.datasetId)+" · "+e.toDisplayString(m.target?.field)+" ",1),m.target?.rowKey!==void 0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(" · "+e.toDisplayString(m.target.rowKey),1)],64)):e.createCommentVNode("",!0)]),e.createElementVNode("p",null,e.toDisplayString(m.message),1)]),m.target?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",disabled:t.busy,onClick:f=>r("locate",m.target)},[e.createTextVNode(e.toDisplayString(t.messages.diagnosticsLocate),1),e.createVNode(W._sfc_main,{name:"arrow-right",size:13})],8,Ul)):e.createCommentVNode("",!0)]))),128))]),s.value.length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("p",Gl,e.toDisplayString(t.messages.dataExplanationEmpty),1)),s.value.length>i.value.length?(e.openBlock(),e.createElementBlock("small",Jl,e.toDisplayString((t.messages.diagnosticsMore??"").replace("{count}",String(s.value.length))),1)):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0)}}),Zl=W._export_sfc(Xl,[["__scopeId","data-v-cb0adb4c"]]),Yl=["aria-label"],Ql=["disabled","title","onClick"],_l={key:0,role:"status"},es={key:1,role:"alert"},ts={key:2,role:"status"},ns=e.defineComponent({__name:"ReportDrillActions",props:{entries:{},pending:{type:Boolean},busy:{type:Boolean},error:{},messages:{}},emits:["open"],setup(t,{emit:n}){const a=n;return(r,o)=>t.entries.length?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mrp-drill-actions",role:"group","aria-label":t.messages.drillActions},[e.createElementVNode("span",null,e.toDisplayString(t.messages.drillActions),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.entries,l=>(e.openBlock(),e.createElementBlock("button",{key:l.action.id,type:"button",disabled:t.busy||t.pending||!!l.reason,title:l.reason,onClick:s=>a("open",l.action.id)},[e.createTextVNode(e.toDisplayString(l.action.label),1),e.createVNode(W._sfc_main,{name:"arrow-right",size:13})],8,Ql))),128)),t.pending?(e.openBlock(),e.createElementBlock("small",_l,e.toDisplayString(t.messages.drillOpening),1)):t.error?(e.openBlock(),e.createElementBlock("small",es,e.toDisplayString(t.error),1)):t.entries.every(l=>l.reason)?(e.openBlock(),e.createElementBlock("small",ts,e.toDisplayString(t.messages.drillMissingValue),1)):e.createCommentVNode("",!0)],8,Yl)):e.createCommentVNode("",!0)}}),as=W._export_sfc(ns,[["__scopeId","data-v-f9ff8c13"]]);function os(t){const n=e.ref(!1),a=e.ref("");let r;const o=e.computed(()=>{const i=t.plan.value,c=t.selection.value?.focus,u=t.options();if(!i||!c||!u)return[];try{return ce.matchReportDrillActions(i,c,u.actions).map(m=>{try{return ce.createReportDrillRequest(i,c,m,t.params()),{action:m}}catch{return{action:m,reason:t.messages().drillMissingValue}}})}catch{return[]}});function l(){r?.abort(),r=void 0,n.value=!1,a.value=""}e.watch([t.plan,()=>t.options()],l),e.onScopeDispose(l);async function s(i){if(n.value||t.busy())return;const c=t.plan.value,u=t.selection.value?.focus,m=t.options(),d=m?.actions.find(b=>b.id===i);if(!c||!u||!m||!d)return;const f=new AbortController;r=f,n.value=!0,a.value="";try{const b=ce.createReportDrillRequest(c,u,d,t.params()),p=Object.freeze(t.view());if(!await t.beforeOpen()||f.signal.aborted||t.plan.value!==c)return;await X.waitForOutput(m.open({...b,signal:f.signal,view:p}),f.signal)}catch(b){f.signal.aborted||(a.value=b instanceof ce.ReportDrillError?t.messages().drillMissingValue??"":t.messages().drillFailed??"")}finally{r===f&&(n.value=!1,r=void 0)}}return{entries:o,pending:n,error:a,open:s}}const rs={class:"mrp-print-settings"},ls=["value","disabled"],ss=["value","disabled"],is=["disabled"],cs=e.defineComponent({__name:"ReportPrintSettings",props:{value:{},messages:{},busy:{type:Boolean},canTest:{type:Boolean}},emits:["change","test"],setup(t,{emit:n}){const a=t,r=n;function o(l,s){const i=s.target,c=Number(i.value);if(!i.value.trim()||!Number.isFinite(c)||Math.abs(c)>20){i.value=String(a.value[l]??0);return}r("change",{...a.value,[l]:c})}return(l,s)=>(e.openBlock(),e.createElementBlock("details",rs,[e.createElementVNode("summary",null,e.toDisplayString(t.messages.printCalibration),1),e.createElementVNode("p",null,e.toDisplayString(t.messages.printCalibrationHint),1),e.createElementVNode("div",null,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(t.messages.printOffsetX)+" ",1),e.createElementVNode("input",{type:"number",min:"-20",max:"20",step:".1",value:t.value.offsetXmm??0,disabled:t.busy,onChange:s[0]||(s[0]=i=>o("offsetXmm",i))},null,40,ls)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(t.messages.printOffsetY)+" ",1),e.createElementVNode("input",{type:"number",min:"-20",max:"20",step:".1",value:t.value.offsetYmm??0,disabled:t.busy,onChange:s[1]||(s[1]=i=>o("offsetYmm",i))},null,40,ss)])]),e.createElementVNode("button",{type:"button",disabled:t.busy||!t.canTest,onClick:s[2]||(s[2]=i=>r("test"))},e.toDisplayString(t.messages.printCalibrationTest),9,is)]))}}),us=W._export_sfc(cs,[["__scopeId","data-v-35a0f5ec"]]),tn=new Map,Be=new Map,ds=15e3;function Vt(t,n){return Object.assign(new Error(t),{cause:n})}function Ae(t,n){return`PDF 字体 ${JSON.stringify(t)}:${n}。请部署支持报表文字的字体文件,并将 pdfFontUrl 配置为可访问的字体 URL;西文报表可设为空串`}async function nn(t,n,a){if(X.assertOutputActive(a),!t)return null;try{const r=await X.waitForOutput(n(t,{strict:!0,signal:a}),a);if(!r?.byteLength)throw new Error("字体文件为空或加载失败");return r}catch(r){throw X.assertOutputActive(a),Vt(Ae(t,r instanceof Error?r.message:String(r)),r)}}function _e(t){if(t?.reason instanceof Error&&t.reason.name==="AbortError")return t.reason;const n=Vt("PDF 字体检查已取消",t?.reason);return n.name="AbortError",n}async function ms(t,n){let a=!1;const r=setTimeout(()=>{a=!0,n.abort()},ds);try{const o=await fetch(t,{method:"HEAD",signal:n.signal});if(n.signal.aborted)throw _e(n.signal);if(o.status===405||o.status===501||o.type==="opaque")return{status:"unverified",fontUrl:t,message:`PDF 字体 ${JSON.stringify(t)} 无法通过 HEAD 检查验证;仍可尝试导出,届时会加载并校验字体`};if(!o.ok){const s=new Error(`字体请求返回 HTTP ${o.status}`);return{status:"error",fontUrl:t,message:Ae(t,s.message),cause:s}}const l=o.headers.get("content-type")??"";if(/text\/html|application\/xhtml\+xml/i.test(l)){const s=new Error("字体 URL 返回 HTML 页面(可能是 SPA 路由回退),不是字体文件");return{status:"error",fontUrl:t,message:Ae(t,s.message),cause:s}}if(/^text\//i.test(l)||/(?:\/|\+)json(?:\s*;|$)/i.test(l)){const s=new Error(`字体 URL 返回 ${l} 文本响应,不是字体文件`);return{status:"error",fontUrl:t,message:Ae(t,s.message),cause:s}}return{status:"available",fontUrl:t,message:"PDF 字体资源可达;文字覆盖范围将在实际导出时校验"}}catch(o){if(n.signal.aborted&&!a)throw _e(n.signal);return{status:"error",fontUrl:t,message:Ae(t,a?"字体检查超时,请检查网络或字体服务":"字体检查失败,请检查网络、字体服务或跨域访问配置"),cause:o}}finally{clearTimeout(r)}}function fs(t,n){if(n?.aborted)return Promise.reject(_e(n));if(!t)return Promise.resolve({status:"disabled",fontUrl:t,message:"已停用自定义 PDF 字体;内置字体用于西文,其他文字会在导出时校验"});const a=tn.get(t);if(a)return Promise.resolve(a);let r=Be.get(t);if(!r){const l=new AbortController;r={controller:l,promise:ms(t,l),subscribers:0};const s=r;Be.set(t,s),s.promise=s.promise.then(i=>(!l.signal.aborted&&i.status==="available"&&tn.set(t,i),i)).finally(()=>{Be.get(t)===s&&Be.delete(t)})}const o=r;return o.subscribers++,new Promise((l,s)=>{let i=!1;const c=()=>i?!1:(i=!0,o.subscribers--,n?.removeEventListener("abort",u),!0),u=()=>{c()&&(o.subscribers===0&&(Be.get(t)===o&&Be.delete(t),o.controller.abort()),s(_e(n)))};n?.addEventListener("abort",u,{once:!0}),o.promise.then(m=>{c()&&l(m)},m=>{c()&&s(m)}),n?.aborted&&u()})}function Sn(t={fontUrl:"/simhei.ttf"}){let n=null;const a=async(r,o,l={})=>{X.assertOutputActive(l.signal),n||(n=await import("@agile-team/mach-report/pdf")),X.assertOutputActive(l.signal);const s=await nn(t.fontUrl,n.loadFontWithCache,l.signal);let i;try{X.assertOutputActive(l.signal),i=await n.renderPlanToPdf(r,{...l,...s?{customFontBytes:s}:{}})}catch(f){if(!s)throw f;const b=f instanceof Error?f.message:String(f);throw Vt(`PDF 生成失败:${b}。当前字体 URL 为 ${JSON.stringify(t.fontUrl)};请确认该文件是有效字体,或重新配置 pdfFontUrl`,f)}X.assertOutputActive(l.signal),i.diagnostics?.forEach(f=>{try{l.onDiagnostic?.(f)}catch{}});const{bytes:c,unsupportedTextCount:u,pageErrors:m,fidelityWarnings:d}=i;if(u>0)throw new Error(`PDF 中有 ${u} 行文字无法编码;请部署支持所用文字的字体并配置 pdfFontUrl`);if(m.length>0)throw new Error(`PDF 有 ${m.length} 页渲染失败:${m[0]}`);return d.length>0&&o?.(`PDF 有 ${d.length} 处版式降级:${d.slice(0,2).join(";")}`),c};return a.checkFont=r=>fs(t.fontUrl,r),a.prepare=async r=>{if(X.assertOutputActive(r),!t.fontUrl)return{};const{loadFontWithCache:o}=await Promise.resolve().then(()=>require("./font-loader-DBBJ5KE9.cjs")),l=await nn(t.fontUrl,o,r);return l?{customFontBytes:l}:{}},a}function ps(t){const n=e.shallowRef(Object.freeze({status:"unchecked",fontUrl:""}));let a=null,r=null,o=0,l=null;function s(){if(t.injectedExporter)return t.injectedExporter;const m=t.fontUrl();return(!r||a!==m)&&(a=m,r=Sn({fontUrl:m})),r}function i(){o++,l?.abort(),l=null}async function c(){if(t.destroyed())throw new ie.MachReportError("config","报表预览已卸载");i();const m=o,d=new AbortController;l=d;const f=t.fontUrl();n.value=Object.freeze({status:"checking",fontUrl:f});try{const b=s(),p=b.checkFont?await b.checkFont(d.signal):{status:"unverified",fontUrl:"",message:"自定义 PDF 导出器未提供字体预检查;字体由宿主确认"};return!t.destroyed()&&m===o&&!d.signal.aborted&&(n.value=Object.freeze({...p})),p}catch(b){if(d.signal.aborted)throw b;const p={status:"error",fontUrl:f,message:b instanceof Error?b.message:"PDF 字体检查失败",cause:b};return!t.destroyed()&&m===o&&(n.value=Object.freeze(p)),p}finally{l===d&&(l=null)}}function u(){c().catch(()=>{})}return e.watch([t.plan,e.computed(t.fontUrl),e.computed(t.enabled)],()=>{const m=n.value.fontUrl===t.fontUrl();m&&n.value.status==="available"||(i(),(!m||n.value.status==="checking")&&(n.value=Object.freeze({status:"unchecked",fontUrl:t.fontUrl()})),!t.destroyed()&&t.plan.value?.pages.length&&t.enabled()&&u())},{immediate:!0}),{pdfFont:n,getPdfExporter:s,checkPdfFont:c,retryPdfFont:u,cancelFontCheck:i}}function de(t){return JSON.parse(JSON.stringify(t))}function Nn(t,n){const a=n.fields;if(typeof a=="function")return a(t);const r=t.source?.field??t.table?.columnKey;return r===void 0||!a||!Object.prototype.hasOwnProperty.call(a,r)?void 0:a[r]}function tt(t,n){if(t.requiresRecalculation&&(!n||!U.getReportEditSession(t)))throw new U.ReportCellEditError("recalculation")}async function gs(t,n,a,r){const o=n.edits.every(i=>!!i.source);tt(t,o);const l=U.getReportEditSession(t);if(l&&o)return l.prepareHistory(t,n.edits,n.value,a,{signal:r});const s=$e(t);return n.edits.map(i=>{const c=s(i);if(!c)throw new U.ReportCellEditError("missing");return{address:c,value:i[n.value]}})}function vs(t,n,a){const r=n.edits.every(o=>!!o.source);return tt(t,r),r?U.getReportEditSession(t)?.prepare(t,n,{signal:a}):void 0}function ys(t,n){const a=new Map;return t.pages.forEach((r,o)=>r.components.forEach((l,s)=>{if(l.grid)for(const i of Ct.resolveGridLayout(l.grid,l.widthMm,l.heightMm).cells){const c=n({pageIndex:o,componentIndex:s,rowIndex:i.ri,columnIndex:i.ci});if(!c?.source)continue;const u=U.reportCellEditKey(c),m=a.get(u)??[];m.push(c),a.set(u,m)}})),a}function $e(t){const n=U.createReportCellResolver(t),a=ys(t,n);function r(l){if(l.source)return a.get(U.reportCellEditKey(l))??[];const s=n(l.address);return s?!l.table||U.reportCellEditKey(s)===U.reportCellEditKey(l)?[s]:[]:[]}const o=l=>{const s=r(l),i=s.find(c=>c.table?.id===l.table?.id)??s[0];return i?{...i.address}:null};return o.all=l=>r(l).map(s=>({...s.address})),o}class bs extends Error{constructor(n){super(n.map(a=>a.message).join(";")),this.conflicts=n,this.name="ReportEditConflictError"}}function hs(){return globalThis.crypto?.randomUUID?.()??`mr-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}function ws(t,n,a,r){return Array.isArray(n)?{batch:U.createReportCellEditBatch(t,n,a)}:gs(t,n,a,r).then(o=>Array.isArray(o)?{batch:U.createReportCellEditBatch(t,o,a)}:o)}function ks(t){const n=e.shallowRef([]),a=e.shallowRef([]),r=e.shallowRef([]),o=e.shallowRef([]),l=e.shallowRef(!1),s=e.shallowRef([]),i=e.shallowRef(null),c=e.shallowRef([]),u=e.computed(()=>c.value.length>0),m=e.computed(()=>{const B=U.summarizeReportCellEdits(n.value),R=t.plan.value;if(!R||!B.length)return B;const T=$e(R);return B.map(L=>{const F=T(L);return F?{...L,address:F}:L})}),d=e.computed(()=>!!t.options.value&&!l.value&&!t.blocked()&&a.value.length>0),f=e.computed(()=>!!t.options.value&&!l.value&&!t.blocked()&&r.value.length>0);let b=null,p=null,g=0,y=null;function D(){b?.abort(),b=null,l.value=!1,p=null}function v(){g++,D(),y=null,n.value=[],a.value=[],r.value=[],o.value=[],s.value=[],c.value=[],i.value=null}function k(){const B=t.options.value;return B?typeof B=="object"?B:{}:null}function $(B,R,T,L){if(!t.options.value||t.blocked())throw new U.ReportCellEditError("readonly");tt(B,R.edits.every(Q=>!!Q.source));const F=U.createReportCellResolver(B),Z=new Map(L?.map(Q=>[U.reportCellEditKey(Q),Q]));for(const Q of R.edits){const G=L?Z.get(U.reportCellEditKey(Q)):F(Q.address);if(!G?.editable||T.canEdit?.(G)===!1)throw new U.ReportCellEditError("readonly");if(T.requireSource&&!G.source)throw new U.ReportCellEditError("missing");const q=Nn(G,T);q&&U.parseReportCellFieldInput(G,Q.value,q)}}async function w(B,R,T){if(R.saveBatch)return R.saveBatch(de(B),T);if(R.save&&B.edits.length>1)throw new U.ReportCellEditError("atomic");if(B.edits[0])return R.save?.(de(B.edits[0]),T)}async function N(B,R,T){for(const L of B.edits){const F=await R.validate?.(de(L),T);if(F)throw new Error(F);if(T.signal.aborted)return}}function M(B,R,T,L,F,Z){if(t.plan.value=Z?Z.commit(T):U.applyReportEditResult(U.applyReportCellEditBatch(B,R),R,T),n.value=[...n.value,...R.edits],F){const G=new Set(R.edits.map(U.reportCellEditKey));c.value=c.value.filter(q=>!G.has(U.reportCellEditKey(q)))}else c.value=U.summarizeReportCellEdits([...c.value,...R.edits]);L==="edit"&&(a.value=[...a.value,R.edits],r.value=[]),o.value=[],y=null;const Q=g;for(const G of R.edits){if(g!==Q)break;t.onChange(de(G))}}function x(B,R,T){const L=JSON.stringify([T,R.edits]);y?.plan===B&&y.signature===L?R.requestId=y.requestId:y={plan:B,signature:L,requestId:R.requestId}}function I(B){i.value=t.errorMessage?.(B)??(B instanceof Error?B.message:"Cell edit failed"),t.onError(i.value,B)}async function z(B,R,T,L){if(T.validation){if(!B.prepared)throw new Error("整批规则校验需要来源数据会话;请使用 createReportSource 或 createReportEditSession");s.value=[...B.prepared.validate(T.validation)]}if(T.validateBatch){const F=B.prepared?.plan??U.applyReportCellEditBatch(R,B.batch),Z=await T.validateBatch(de(B.batch),de(F),L);Z&&!L.signal.aborted&&(s.value=[...s.value,...de(Z)])}L.signal.aborted||U.assertReportValidation(s.value,T.validation?.warningPolicy)}async function _(B,R){const T=t.plan.value,L=k();if(!T||!L||t.blocked())return!1;const F=new AbortController,Z=g;b=F,l.value=!0,i.value=null,s.value=[];const Q=()=>b===F&&!F.signal.aborted&&t.plan.value===T&&t.options.value!==!1;try{const G=ws(T,B,hs(),F.signal),q=G instanceof Promise?await G:G;if(!Q())return!1;const{batch:se,contexts:me}=q;if($(T,se,L,me),se.edits=se.edits.filter(K=>!Object.is(K.previousValue,K.value)),!se.edits.length)return!0;x(T,se,R),$(T,se,L,me);const we={signal:F.signal,requestId:se.requestId,action:R};if(await N(se,L,we),!Q())return!1;$(T,se,L,me);const E=q.prepared?void 0:vs(T,se,F.signal);if(E&&(q.prepared=await E),!Q()||($(T,se,L,me),await z(q,T,L,we),!Q()))return!1;const V=await w(se,L,we);if(!Q())return!1;if(V?.conflicts?.length)throw o.value=de(V.conflicts),new bs(V.conflicts);return $(T,se,L,me),M(T,se,V,R,!!(L.save||L.saveBatch),q.prepared),Z===g}catch(G){return Q()&&I(G),!1}finally{b===F&&(b=null,l.value=!1)}}async function ee(B,R="edit"){if(p)return p;const T=_(B,R);p=T;const L=await T;return p===T&&(p=null),L}async function ae(){const B=g,R=a.value[a.value.length-1];return!R||l.value||!await ee({edits:R,value:"previousValue"},"undo")||B!==g?!1:(a.value=a.value.slice(0,-1),r.value=[...r.value,R],!0)}async function h(){const B=g,R=r.value[r.value.length-1];return!R||l.value||!await ee({edits:R,value:"value"},"redo")||B!==g?!1:(r.value=r.value.slice(0,-1),a.value=[...a.value,R],!0)}async function S(){const B=g;return!m.value.length||l.value||!await ee({edits:m.value,value:"previousValue"},"restore")||B!==g?!1:(a.value=[],r.value=[],!0)}function P(){if(!p)return!l.value;const B=g;return p.then(R=>R&&B===g&&!l.value)}function A(B){return t.plan.value?$e(t.plan.value)(B):null}return{settle:P,resolveAddress:A,validationIssues:s,changes:n,differences:m,localDifferences:c,hasLocalDrafts:u,lastError:i,conflicts:o,saving:l,canUndo:d,canRedo:f,apply:ee,undo:ae,redo:h,restore:S,cancel:D,reset:v}}let xs=0;const Es="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 Cs(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 Ss(t,n,a){const r=t.createElement("select"),o=[{value:null,label:"—"},...Cs(n)];if(o.forEach((l,s)=>{const i=t.createElement("option");i.value=String(s),i.textContent=l.label,(Object.is(a.value,l.value)||a.value===""&&l.value===null)&&(i.selected=!0),r.append(i)}),!o.some(l=>Object.is(a.value,l.value)||a.value===""&&l.value===null)){const l=t.createElement("option");l.value="unknown",l.textContent=a.cell.text??String(a.value),l.selected=!0,r.append(l)}return{input:r,value:()=>r.value==="unknown"?a.value:o[Number(r.value)]?.value??null}}function Ns(t,n,a){const r=n?.type==="number"||n?.type==="date"?t.createElement("input"):t.createElement("textarea");return r.value=a.value==null?"":String(a.value),r instanceof HTMLInputElement&&(r.type=n?.type==="date"?"date":"text",n?.type==="number"&&(r.inputMode="decimal"),n?.type==="date"&&(n.min&&(r.min=n.min),n.max&&(r.max=n.max))),{input:r,value:()=>n?.type==="date"&&r instanceof HTMLInputElement&&r.validity.badInput?"invalid-date":r.value}}function Bs(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 Vs(t,n,a,r){const o=t.ownerDocument,l=r?.type==="boolean"||r?.type==="enum"?Ss(o,r,a):Ns(o,r,a),s=l.input,i=o.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=Es,s.setAttribute("aria-label",r?.label??n),r?.required&&s.setAttribute("aria-required","true");const c=o.createElement("span");c.id=`mrp-cell-hint-${++xs}`,c.className="mrp-cell-editor-hint",c.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 u=Bs(r);return c.textContent=u,c.hidden=!u,s.setAttribute("aria-describedby",c.id),i.append(s,c),t.append(i),{input:s,root:i,initialInput:s.value,value:l.value,focus:()=>{s.focus(),(s instanceof HTMLTextAreaElement||s instanceof HTMLInputElement&&s.type!=="date")&&s.select()},feedback:m=>{c.textContent=m??u,c.hidden=!c.textContent,s.setAttribute("aria-invalid",m?"true":"false")}}}function wt(t){const n=t.closest(".mrp-page-holder"),a=t.closest("[data-mr-component-index]");if(!n||!a)return null;const r={pageIndex:Number(n.dataset.page)-1,componentIndex:Number(a.dataset.mrComponentIndex),rowIndex:Number(t.dataset.mrRowIndex),columnIndex:Number(t.dataset.mrColumnIndex)};return Object.values(r).every(o=>Number.isInteger(o)&&o>=0)?r:null}function $s(t){const n=e.shallowRef(null),a=ks(t),{saving:r,changes:o}=a,l=e.shallowRef(!1),s=e.computed(()=>l.value||a.hasLocalDrafts.value);let i=null;function c(){const v=n.value;n.value=null,l.value=!1,a.cancel(),i=null,v?.editor.root.remove()}function u(){c(),a.reset()}function m(v){return n.value===v&&t.plan.value===v.plan}async function d(v){return await a.apply([{address:v.address,value:v.editor.value()}])?(n.value=null,l.value=!1,v.editor.root.remove(),!0):(n.value===v&&(v.editor.input.disabled=!1,v.editor.feedback(a.lastError.value??void 0),v.editor.input.focus()),!1)}async function f(){if(i)return i;const v=n.value;if(!v)return a.settle();if(!m(v))return c(),!1;l.value=v.editor.input.value!==v.editor.initialInput,v.editor.input.disabled=!0;const k=d(v);i=k;const $=await k;return i===k&&(i=null),$}function b(){return n.value||i?f():a.settle()}function p(v){if(v.stopPropagation(),!v.isComposing&&(v.key==="Escape"&&(v.preventDefault(),c()),v.key==="Enter"&&!v.shiftKey||v.key==="Tab")){v.preventDefault();const k=n.value,$=k&&U.getReportCellContext(k.plan,k.address),w=k&&$?U.createReportCellEditBatch(k.plan,[{address:k.address,value:$.value}],"navigation").edits[0]:void 0;f().then(N=>{if(!N||!k||!t.plan.value)return;const M=t.plan.value===k.plan?k.address:w&&$e(t.plan.value)(w);M&&t.onNavigate?.(M,v.key,v.shiftKey)})}}function g(v){t.onError(t.errorMessage?.(v)??(v instanceof Error?v.message:"无法编辑单元格"),v)}async function y(v){if(!t.options.value||t.blocked()||!await f()||!v.isConnected)return;const k=t.plan.value,$=wt(v);if(!k||!$||!t.options.value||t.blocked())return;const w=typeof t.options.value=="object"?t.options.value:{};try{const N=U.getReportCellContext(k,$);if(!N?.editable||w.canEdit?.(N)===!1)return;if(tt(k,!!N.source),w.requireSource&&!N.source)throw new U.ReportCellEditError("missing");const M=Nn(N,w);M&&U.validateReportCellFieldDefinition(N,M);const x=Vs(v,t.label(),N,M),I=x.input;n.value={plan:k,address:$,editor:x},l.value=!1,I.addEventListener("keydown",z=>p(z)),I.addEventListener("input",()=>{l.value=I.value!==x.initialInput,x.feedback()}),I.addEventListener("change",()=>{l.value=I.value!==x.initialInput}),I.addEventListener("blur",()=>{!r.value&&!t.suspendBlur?.()&&f()}),x.focus()}catch(N){g(N)}}async function D(v){const k=v.target;if(!(k instanceof Element)||k.closest(".mrp-cell-editor"))return;const $=k.closest("td[data-mr-row-index]");$&&await y($)}return e.watch(t.options,(v,k)=>{(!v||v!==k)&&c()},{flush:"sync"}),e.watch(t.plan,()=>{n.value&&t.plan.value!==n.value.plan&&(n.value.editor.root.remove(),n.value=null,l.value=!1)},{flush:"sync"}),e.onScopeDispose(u),{...a,active:n,saving:r,changes:o,pendingLocalChanges:s,cancel:c,reset:u,commit:f,settle:b,onDoubleClick:D,editCell:y,getChanges:()=>de(o.value)}}function Bn(t){return t.table.role==="header"?-Math.max(1,t.grid?.cells.length??1):t.table.rowIndex}function be(t,n,a=n){const r=t.pages[n.pageIndex]?.components[n.componentIndex],o=r?.table,l=t.pages[a.pageIndex]?.components[a.componentIndex]?.table;return o&&l&&o.id===l.id?{grid:o.id,row:Bn(r)+n.rowIndex,column:l.columnKeys.indexOf(o.columnKeys[n.columnIndex]??"")}:{grid:`${n.pageIndex}:${n.componentIndex}`,row:n.rowIndex,column:n.columnIndex}}function an(t,n){const a=t.pages[n.pageIndex]?.components[n.componentIndex]?.table;if(!a)return(o,l)=>({...n,rowIndex:o,columnIndex:l});const r=new Map;return t.pages.forEach((o,l)=>o.components.forEach((s,i)=>{s.table?.id!==a.id||!s.grid||s.grid.cells.forEach((c,u)=>{const m=Bn(s)+u;r.set(m,[...r.get(m)??[],{address:{pageIndex:l,componentIndex:i,rowIndex:u,columnIndex:0},keys:s.table.columnKeys}])})})),(o,l)=>{const s=a.columnKeys[l];if(s===void 0)return null;const i=r.get(o)?.find(c=>c.keys.includes(s));return i?{...i.address,columnIndex:i.keys.indexOf(s)}:null}}function Ds(t,n){const a=[...t.ownerDocument.querySelectorAll("a[href],button,input,textarea,select,[tabindex]:not([tabindex='-1'])")].filter(l=>l.tabIndex>=0&&!l.matches(":disabled,[hidden],input[type='hidden']")&&!l.closest("[inert],[aria-hidden='true']")&&l.getClientRects().length>0).map((l,s)=>({element:l,order:s})).sort((l,s)=>(l.element.tabIndex||1/0)-(s.element.tabIndex||1/0)||l.order-s.order),r=a.findIndex(({element:l})=>l===t);if(r<0)return!1;const o=a[r+(n?-1:1)]?.element;return o?(o.focus(),t.ownerDocument.activeElement===o):!1}function Ps(t,n){const a=t?.source;return!Rs(t,n.field)||n.tableId!==void 0&&t?.table?.id!==n.tableId||n.datasetId!==void 0&&(a?.datasetId??t?.component.table?.source?.datasetId)!==n.datasetId?!1:n.rowKey===void 0||a?.rowKey===n.rowKey}function Rs(t,n){if((t?.source?.field??t?.table?.columnKey)===n)return!0;if(!t||t.table?.role!=="header")return!1;const a=t.address.columnIndex;return t.component.table?.columnKeys.slice(a,a+(t.cell.colSpan??1)).includes(n)??!1}function Is(t,n){return t.pageIndex===n.pageIndex&&t.componentIndex===n.componentIndex}function Ms(t,n){return Is(t,n)&&t.rowIndex===n.rowIndex&&t.columnIndex===n.columnIndex}function yt(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 kt(t){return`${t.pageIndex}:${t.componentIndex}:${t.rowIndex}:${t.columnIndex}`}function Ts(t,n){const a=be(t,n.anchor),r=be(t,n.focus,n.anchor);return{grid:a.grid,minRow:Math.min(a.row,r.row),maxRow:Math.max(a.row,r.row),minColumn:Math.min(a.column,r.column),maxColumn:Math.max(a.column,r.column),focusKey:kt(n.focus),origin:t.pages[n.anchor.pageIndex]?.components[n.anchor.componentIndex]?.table}}function Os(t,n,a){const r=n?.table;if(!r||!a.origin||r.id!==a.origin.id)return{grid:`${t.pageIndex}:${t.componentIndex}`,rowOffset:0,missingColumn:-1};const o=new Map;return a.origin.columnKeys.forEach((l,s)=>{o.has(l)||o.set(l,s)}),{grid:r.id,rowOffset:r.role==="header"?-Math.max(1,n.grid?.cells.length??1):r.rowIndex,columns:r.columnKeys.map(l=>o.get(l)??-1),missingColumn:o.get("")??-1}}function As(t,n,a){if(!a||!n||n.grid!==a.grid)return!1;const r=n.rowOffset+t.row,o=n.columns?n.columns[t.column]??n.missingColumn:t.column;return r>=a.minRow&&r<=a.maxRow&&o>=a.minColumn&&o<=a.maxColumn}function Ze(t,n,a){t.getAttribute(n)!==a&&t.setAttribute(n,a)}function bt(t,n,a){t.classList.contains(n)!==a&&t.classList.toggle(n,a)}function Fs(t,n,a,r,o,l){n.role!==a&&(Ze(t,"role",a),n.role=a),n.selected!==r&&(bt(t,"mrp-cell-selected",r),Ze(t,"aria-selected",String(r)),n.selected=r),n.focused!==o&&(bt(t,"mrp-cell-focus",o),Ze(t,"tabindex",o?"0":"-1"),n.focused=o),n.modified!==l&&(bt(t,"mrp-cell-modified",l),n.modified=l)}function zs(t){const n=()=>t.editable?.()??t.enabled(),a=e.shallowRef(null),r=new WeakMap,o=new WeakMap;let l=null,s=null,i=new Set;function c(h,S){const P=U.getReportCellContext(h,S);return!P||h.requiresRecalculation&&!P.source?null:{address:P.address,source:P.source,table:P.table,value:P.value,previousValue:P.value,text:P.cell.text??"",previousText:P.cell.text??""}}e.watch(t.plan,(h,S)=>{const P=a.value;if(!P)return;if(!h||!S){a.value=null;return}const A=c(S,P.anchor),B=c(S,P.focus),R=$e(h),T=A&&R(A),L=B&&R(B);a.value=T&&L?{anchor:T,focus:L}:null},{flush:"sync"});function u(h=t.root.value??void 0){if(!h)return;const S=a.value,P=t.plan.value,A=t.differences();if(A!==l||P!==s){l=A,s=P;const R=P&&A.length?$e(P):null;i=new Set(A.flatMap(T=>R?R.all(T).map(kt):[]))}const B=S&&P?Ts(P,S):null;h instanceof HTMLTableElement&&f(h,P,B);for(const R of h.querySelectorAll("table"))f(R,P,B)}function m(h){const S=r.get(h);if(S)return S;const P=h.closest("[data-mr-component-index]"),A=P?.closest(".mrp-page-holder"),B={pageIndex:Number(A?.dataset.page)-1,componentIndex:Number(P?.dataset.mrComponentIndex)};return Object.values(B).every(R=>Number.isInteger(R)&&R>=0)?(r.set(h,B),B):null}function d(h,S){const P=o.get(h);if(P)return P;const A=Number(h.dataset.mrRowIndex),B=Number(h.dataset.mrColumnIndex);if(![A,B].every(T=>Number.isInteger(T)&&T>=0))return null;const R={row:A,column:B,key:kt({...S,rowIndex:A,columnIndex:B})};return o.set(h,R),R}function f(h,S,P){const A=m(h);if(!A)return;const B=S?.pages[A.pageIndex]?.components[A.componentIndex],R=B?.table?.role==="header"?"columnheader":"gridcell",T=P?Os(A,B,P):null;Ze(h,"role","grid");for(const L of h.rows)for(const F of L.cells){const Z=d(F,A);Z&&Fs(F,Z,R,As(Z,T,P),P?.focusKey===Z.key,i.size>0&&i.has(Z.key))}}async function b(h,S=!1){if(!t.plan.value||!U.getReportCellContext(t.plan.value,h))return!1;const P=a.value,A=S&&P&&be(t.plan.value,P.anchor).grid===be(t.plan.value,h,P.anchor).grid;a.value={anchor:A?P.anchor:{...h},focus:{...h}},t.root.value?.querySelector(yt(h))||t.gotoPage(h.pageIndex+1),await e.nextTick(),t.ensureVisible?.(h),u();const B=t.root.value?.querySelector(yt(h));return B?.focus({preventScroll:!0}),B?.scrollIntoView?.({block:"nearest",inline:"nearest"}),!!B}function p(h){const S=h.target;if(!(S instanceof Element)||S.closest("textarea,input,button,select"))return;const P=S.closest("td[data-mr-row-index]"),A=P&&wt(P);if(!A||t.busy()||!t.plan.value||!U.getReportCellContext(t.plan.value,A))return;const B=a.value,R=h.shiftKey&&B&&be(t.plan.value,B.anchor).grid===be(t.plan.value,A,B.anchor).grid;a.value={anchor:R?B.anchor:{...A},focus:{...A}},u(),P.focus({preventScroll:!0})}function g(h){const S=t.plan.value?.pages[h.pageIndex]?.components[h.componentIndex];return S?.grid?Ct.resolveGridLayout(S.grid,S.widthMm,S.heightMm).cells.map(P=>({...h,rowIndex:P.ri,columnIndex:P.ci})):[]}function y(h,S,P){const A=g(h),B=P?-1:1;if(S==="Tab")return A[A.findIndex(L=>Ms(L,h))+B];const R=S==="ArrowUp"||S==="ArrowDown"||S==="Enter",T=S==="ArrowUp"||S==="ArrowLeft"?-1:B;return A.filter(L=>R?L.columnIndex===h.columnIndex&&(L.rowIndex-h.rowIndex)*T>0:L.rowIndex===h.rowIndex&&(L.columnIndex-h.columnIndex)*T>0).sort((L,F)=>R?(L.rowIndex-F.rowIndex)*T:(L.columnIndex-F.columnIndex)*T)[0]}function D(h,S,P){if(S==="ArrowLeft"||S==="ArrowRight")return;const A=t.plan.value;if(!A.pages[h.pageIndex]?.components[h.componentIndex]?.table)return;const R=S==="ArrowUp"||P?-1:1;for(let T=h.pageIndex;T>=0&&T<A.pages.length;T+=R){const L=A.pages[T].components,F=T===h.pageIndex?h.componentIndex+R:R===1?0:L.length-1;for(let Z=F;Z>=0&&Z<L.length;Z+=R){const Q=v(h,{...h,pageIndex:T,componentIndex:Z},S,R);if(Q)return Q}}}function v(h,S,P,A){const B=t.plan.value,R=B.pages[h.pageIndex].components[h.componentIndex].table,T=B.pages[S.pageIndex].components[S.componentIndex]?.table;if(T?.id!==R.id||T.role==="header"&&R.role!=="header"&&(A>0||R.rowIndex+h.rowIndex>0))return;const L=g(S),F=P==="Tab"?L:L.filter(Z=>Z.columnIndex===h.columnIndex);return A===1?F[0]:F[F.length-1]}function k(h,S,P=!1,A=!1,B=!1){const R=y(h,S,P)??D(h,S,P);return R?(b(R,A),!0):((S!=="Tab"||!B)&&b(h),!1)}function $(h){const S=a.value;if(t.busy()||h.target instanceof Element&&h.target.closest("textarea,input,select,button,a[href],[contenteditable]"))return!1;if(!S)return M(h);const P=h.key;if(w(h)||N(h,S.focus))return!0;if(!["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Tab","Enter"].includes(P))return!1;const A=k(S.focus,P,P==="Tab"&&h.shiftKey,h.shiftKey&&P!=="Tab",!0);if(P==="Tab"&&!A){const B=t.root.value?.ownerDocument.activeElement;if(!(B instanceof HTMLElement)||!Ds(B,h.shiftKey))return!1}return h.preventDefault(),!0}function w(h){if(!n()||!(h.ctrlKey||h.metaKey))return!1;const S=h.key.toLowerCase();return S!=="z"&&S!=="y"?!1:(h.preventDefault(),S==="y"||h.shiftKey?t.redo():t.undo(),!0)}function N(h,S){if(!n()||!t.plan.value||h.key!=="F2"&&!(h.key==="Enter"&&U.getReportCellContext(t.plan.value,S)?.editable))return!1;const P=t.root.value?.querySelector(yt(S));return P&&(h.preventDefault(),t.edit(P)),!0}function M(h){if(!["ArrowDown","ArrowRight","ArrowUp","ArrowLeft","Enter"].includes(h.key))return!1;const S=t.root.value?.querySelector("td[data-mr-row-index]"),P=S&&wt(S);return P?(h.preventDefault(),b(P),!0):!1}function x(){const h=a.value,S=t.plan.value;if(!h||!S)return"";const P=[],A=be(S,h.anchor),B=be(S,h.focus,h.anchor),R=an(S,h.anchor),T=U.createReportCellResolver(S),L=Math.min(A.column,B.column),F=Math.max(A.column,B.column);if((Math.abs(A.row-B.row)+1)*(F-L+1)>1e4)return t.error(new U.ReportCellEditError("limit")),"";for(let Z=Math.min(A.row,B.row);Z<=Math.max(A.row,B.row);Z++){const Q=[];for(let G=L;G<=F;G++){const q=R(Z,G);Q.push(q?T(q)?.cell.text??"":"")}P.push(Q)}return U.formatReportClipboard(P)}function I(h){!a.value||h.target instanceof Element&&h.target.closest("textarea,input,select")||(h.clipboardData?.setData("text/plain",x()),h.preventDefault())}async function z(h){const S=a.value;if(!S||!n()||t.busy())return!1;try{let P;try{P=U.parseReportClipboard(h)}catch(F){throw new U.ReportCellEditError(F instanceof Error&&F.message.includes("limit")?"limit":"clipboard")}const A=t.plan.value,B=be(A,S.anchor),R=be(A,S.focus,S.anchor),T=an(A,S.anchor),L=P.flatMap((F,Z)=>F.map((Q,G)=>{const q=T(Math.min(B.row,R.row)+Z,Math.min(B.column,R.column)+G);if(!q)throw new U.ReportCellEditError("missing");return{address:q,value:Q}}));return await t.apply(L)}catch(P){return t.error(P),!1}}function _(h){if(!a.value||!n()||h.target instanceof Element&&h.target.closest("textarea,input,select,button,a[href],[contenteditable]")||!h.clipboardData?.types.includes("text/plain"))return;const S=h.clipboardData?.getData("text/plain");S&&(h.preventDefault(),z(S))}async function ee(h){const S=t.plan.value;if(!S)return!1;const P=U.createReportCellResolver(S);for(let A=0;A<S.pages.length;A++){const B=S.pages[A];if(!(h.reportScope!==void 0&&B.meta?.reportScope!==h.reportScope))for(let R=0;R<B.components.length;R++)for(const T of g({pageIndex:A,componentIndex:R,rowIndex:0,columnIndex:0})){const L=P(T);if(Ps(L,h))return b(T)}}return!1}function ae(){a.value=null,u()}return{selection:a,refresh:u,reset:ae,focusCell:b,focusField:ee,navigate:k,onClick:p,onKeydown:$,onCopy:I,onPaste:_,copySelection:x,pasteSelection:z}}function Ls(t){const n=e.shallowRef(null),a=e.shallowRef(!1);let r=0,o=null;function l(c){const u=o;o=null,n.value=null,a.value=!1,u?.(c)}function s(){r++,l(!1)}async function i(c){if(s(),!t.enabled()||!t.pending())return!0;const u=r,m=[...t.snapshot?.()??[]];a.value=!0;const d=Object.freeze({reason:c,reportIds:Object.freeze([...t.reportIds()]),pendingLocalChanges:!0});try{const f=t.hook(),b=await new Promise(g=>{if(o=g,!f){n.value=d;return}Promise.resolve().then(()=>f(d)).then(y=>{u===r&&l(y===!0)},y=>{if(u===r){try{t.error(y)}catch{}l(!1)}})}),p=t.snapshot?.()??[];return u===r&&b===!0&&p.length===m.length&&m.every((g,y)=>Object.is(g,p[y]))}catch(f){if(u===r){try{t.error(f)}catch{}l(!1)}return!1}}return{request:n,pending:a,check:i,settle:l,cancel:s}}function qs(t){function n(i){if(!(i instanceof U.ReportCellEditError))return i instanceof Error?i.message:"单元格保存失败";const c=t.messages();return{number:c.editInvalidNumber,boolean:c.editInvalidBoolean,conflict:c.editConflict,atomic:c.editAtomicRequired,limit:c.clipboardLimit,readonly:c.editReadOnly,missing:c.editMissing,recalculation:c.editRecalculationUnavailable,duplicate:c.editDuplicate,clipboard:c.clipboardInvalid}[i.code]??i.message}const a=$s({plan:t.plan,options:t.options,blocked:()=>t.busy()||o.pending.value,label:()=>t.messages().editCell??"编辑单元格",errorMessage:n,suspendBlur:()=>o.request.value!==null,onChange:t.changed,onError:t.failed,onNavigate:(i,c,u)=>r.navigate(i,c,u)}),r=zs({plan:t.plan,root:t.root,enabled:t.selectionEnabled,editable:()=>!!t.options.value,busy:()=>t.busy()||a.saving.value||o.pending.value,differences:()=>a.differences.value,gotoPage:t.gotoPage,ensureVisible:t.ensureVisible,edit:a.editCell,apply:a.apply,undo:a.undo,redo:a.redo,error:i=>t.failed(n(i),i)}),o=Ls({...t.guard,pending:()=>a.pendingLocalChanges.value,snapshot:()=>[t.plan.value,a.active.value?.editor.input.value]});function l(i="leave"){return o.check(i)}function s(i){!t.guard.enabled()||!a.pendingLocalChanges.value||(i.preventDefault(),i.returnValue="")}return e.onMounted(()=>window.addEventListener("beforeunload",s)),e.onUnmounted(()=>{window.removeEventListener("beforeunload",s),o.cancel(),a.reset()}),{editing:a,cells:r,discard:o,confirmDiscard:l}}let Ks=0;function js(t){const n=e.shallowRef(null),a=new Set;let r=null;function o(c){n.value=Object.freeze(c);try{t(n.value)}catch{}}function l(c,u,m){const d=`mr-task-${Date.now().toString(36)}-${++Ks}`;a.add(d),r=m,o({taskId:d,kind:c,stage:u,status:"running",cancellable:!0});function f(p,g,y){n.value?.taskId!==d||n.value.status!=="running"||o({...n.value,stage:p,completed:g,total:y})}function b(p="completed"){n.value?.taskId!==d||n.value.status!=="running"||(r=null,o({...n.value,status:p,cancellable:!1}))}return{taskId:d,update:f,finish:b}}function s(){if(n.value?.status!=="running")return;const c=r;r=null,o({...n.value,status:"cancelled",cancellable:!1}),c?.()}function i(c,u){n.value?.taskId!==c.taskId&&(c.status!=="running"||a.has(c.taskId))||(a.add(c.taskId),a.size>100&&a.delete(a.values().next().value),r=c.status==="running"?u:null,o({...c}))}return{state:n,start:l,cancel:s,receive:i}}function Ws(t){const n=e.shallowRef(Object.freeze([])),a=new Set;let r=0;function o(){r++,n.value=Object.freeze([]),a.clear()}function l(c){const u=r,m=[];for(const d of c){const f=JSON.stringify([d.code,d.format,d.pageIndex,d.componentIndex,d.componentPath,d.path,d.message,d.valueState,d.target]);if(a.has(f))continue;a.add(f);const b=Object.freeze({...d,...d.target?{target:Object.freeze({...d.target})}:{},...d.componentPath?{componentPath:Object.freeze([...d.componentPath])}:{}});m.push(b)}m.length&&(n.value=Object.freeze([...n.value,...m]));for(const d of m){if(u!==r)break;try{t(d)}catch{}}}function s(c){l([c])}function i(c,u){const m=U.inspectOutputCapabilities(c,u);return l(m),m}return{entries:n,reset:o,add:s,addMany:l,inspect:i}}const Hs={class:"mrp-edit-bar"},Us=["disabled"],Gs=["disabled"],Js={class:"mrp-changes"},Xs=["aria-label"],Zs={key:0},Ys={key:1},Qs=["onClick"],_s=["title"],ei=["title"],ti=["disabled"],ni={key:0,role:"status"},ai={key:1,role:"status"},oi={key:2,class:"mrp-conflicts",open:""},ri=e.defineComponent({__name:"ReportEditBar",props:{differences:{},conflicts:{},messages:{},saving:{type:Boolean},canUndo:{type:Boolean},canRedo:{type:Boolean},busy:{type:Boolean},persisted:{type:Boolean}},emits:["undo","redo","restore","locate"],setup(t){function n(a){return a.source?`${a.source.rowKey} · ${a.source.field}`:`${a.address.pageIndex+1} / ${a.address.rowIndex+1}:${a.address.columnIndex+1}`}return(a,r)=>(e.openBlock(),e.createElementBlock("div",Hs,[e.createElementVNode("button",{type:"button",disabled:t.busy||t.saving||!t.canUndo,onClick:r[0]||(r[0]=o=>a.$emit("undo"))},e.toDisplayString(t.messages.undo),9,Us),e.createElementVNode("button",{type:"button",disabled:t.busy||t.saving||!t.canRedo,onClick:r[1]||(r[1]=o=>a.$emit("redo"))},e.toDisplayString(t.messages.redo),9,Gs),e.createElementVNode("details",Js,[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",Ys,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.differences,(o,l)=>(e.openBlock(),e.createElementBlock("li",{key:l},[e.createElementVNode("button",{type:"button",onClick:s=>a.$emit("locate",o)},e.toDisplayString(n(o)),9,Qs),e.createElementVNode("span",null,[e.createElementVNode("s",{title:t.messages.changesBefore},e.toDisplayString(o.previousText||"∅"),9,_s),r[3]||(r[3]=e.createTextVNode(" → ",-1)),e.createElementVNode("strong",{title:t.messages.changesAfter},e.toDisplayString(o.text||"∅"),9,ei)])]))),128))])):(e.openBlock(),e.createElementBlock("p",Zs,e.toDisplayString(t.messages.changesEmpty),1))],8,Xs)]),e.createElementVNode("button",{type:"button",disabled:t.busy||t.saving||!t.differences.length,onClick:r[2]||(r[2]=o=>a.$emit("restore"))},e.toDisplayString(t.messages.restoreChanges),9,ti),t.saving?(e.openBlock(),e.createElementBlock("span",ni,e.toDisplayString(t.messages.saving),1)):t.differences.length&&!t.conflicts.length?(e.openBlock(),e.createElementBlock("span",ai,e.toDisplayString(t.persisted?t.messages.editSaved:t.messages.editingLocal),1)):e.createCommentVNode("",!0),t.conflicts.length?(e.openBlock(),e.createElementBlock("details",oi,[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,(o,l)=>(e.openBlock(),e.createElementBlock("li",{key:l},e.toDisplayString(o.message),1))),128))])])):e.createCommentVNode("",!0)]))}}),li=W._export_sfc(ri,[["__scopeId","data-v-df1c7b86"]]);function si(t){const n=t.table?.columnKeys??[],a=n.map(()=>[]);if(!t.grid)return n;for(const{ci:r,cell:o}of Ct.resolveGridLayout(t.grid,t.widthMm,t.heightMm).cells){const l=(o.text??o.rawText??"").trim();if(l)for(let s=r;s<Math.min(n.length,r+(o.colSpan??1));s++)a[s].includes(l)||a[s].push(l)}return n.map((r,o)=>a[o].join(" / ")||r)}function ii(t,n=[]){const a=new Set,r=[];for(const[o,l]of(t?.pages??[]).entries())for(const s of l.components){const i=s.table;if(!i||i.role!=="header"||a.has(i.id))continue;a.add(i.id);const c=si(s),u=n.filter(b=>b.pageIndex<=o),m=u[u.length-1]?.label,d=i.source?.datasetId,f=[...new Set([m,i.title,d].filter(Boolean))].join(" · ")||i.id;i.columnKeys.forEach((b,p)=>{b&&r.push({key:JSON.stringify([i.id,p]),field:b,label:c[p],group:f,pageIndex:o,tableId:i.id,...d?{datasetId:d}:{}})})}return r}function ci(t,n){const a=n.trim().toLocaleLowerCase().split(/\s+/).filter(Boolean);return t.filter(r=>{const o=`${r.label} ${r.field} ${r.group}`.toLocaleLowerCase();return a.every(l=>o.includes(l))})}function ui(t){const n=ie.usePopover(),a=e.ref(""),r=e.ref(0),o=`mrp-column-list-${e.getCurrentInstance()?.uid??0}`,l=e.computed(()=>ii(t.plan(),t.sections())),s=e.computed(()=>ci(l.value,a.value)),i=e.computed(()=>s.value.slice(0,100)),c=e.computed(()=>[...new Set(i.value.map(p=>p.group))].map(p=>({label:p,items:i.value.filter(g=>g.group===p)})));e.watch(a,()=>{r.value=0}),e.watch(t.busy,p=>{p&&n.close()}),e.watch(l,()=>{r.value=0});function u(p){t.busy()||(t.locate(p),n.close(!0))}function m(){if(t.busy())return;const p=i.value[r.value];p?u(p):a.value.trim()&&(t.locateField(a.value.trim()),n.close(!0))}function d(){a.value="",n.panel.value?.querySelector("input")?.focus()}function f(p){if(!(p.isComposing||p.keyCode===229||!["ArrowDown","ArrowUp","Enter"].includes(p.key))){if(p.preventDefault(),p.stopPropagation(),p.key==="Enter"){m();return}i.value.length&&(r.value=(r.value+(p.key==="ArrowDown"?1:-1)+i.value.length)%i.value.length,e.nextTick(()=>n.panel.value?.querySelector(`[id="${o}-${r.value}"]`)?.scrollIntoView?.({block:"nearest"})))}}function b(p){return i.value.findIndex(g=>g.key===p)}return{...n,field:a,active:r,listId:o,directory:l,matches:s,candidates:i,groups:c,choose:u,submit:m,clear:d,onSearchKeydown:f,candidateIndex:b}}const di=["aria-label"],mi={key:0,class:"mrp-section-tabs"},fi=["aria-current","disabled","onClick"],pi=["aria-expanded","disabled"],gi={key:0,class:"mrp-column-count"},vi=["aria-label"],yi={class:"mrp-column-heading"},bi=["aria-label"],hi=["aria-label","placeholder","aria-controls","aria-activedescendant","disabled"],wi=["aria-label"],ki=["id","aria-label"],xi={key:0,class:"mrp-column-empty",role:"status"},Ei=["aria-label"],Ci=["id","aria-selected","disabled","onPointermove","onClick"],Si=["title"],Ni={class:"mrp-column-help",role:"status"},Bi=e.defineComponent({__name:"ReportNavigation",props:{sections:{},currentPage:{},messages:{},busy:{type:Boolean},plan:{},compact:{type:Boolean}},emits:["goto","locate","locate-target"],setup(t,{emit:n}){const a=t,r=n,o=ui({plan:()=>a.plan,sections:()=>a.sections,busy:()=>a.busy,locate:$=>r("locate-target",$),locateField:$=>r("locate",$)}),{root:l,trigger:s,panel:i,opened:c,field:u,active:m,directory:d,matches:f,candidates:b,groups:p,listId:g}=o,y=e.computed(()=>d.value.length>0||!a.plan||a.plan.pages.some($=>$.components.some(w=>w.table?.columnKeys.length))),D=e.computed(()=>({columnDirectory:"字段目录",columnSearch:"搜索列名或字段",columnNoMatches:"未找到匹配字段",columnResults:"匹配字段",...a.messages})),v=e.computed(()=>(a.messages.columnResultsMore??"{count} 个匹配字段,显示前 {limit} 个;继续输入可缩小范围").replace("{count}",String(f.value.length)).replace("{limit}",String(b.value.length)));function k($){const w=a.sections[$];return!!w&&a.currentPage>=w.pageIndex+1&&(!a.sections[$+1]||a.currentPage<=a.sections[$+1].pageIndex)}return($,w)=>t.sections.length>1||y.value?(e.openBlock(),e.createElementBlock("nav",{key:0,class:e.normalizeClass(["mrp-section-nav",{"mrp-compact":t.compact}]),"aria-label":t.messages.sections??"工作表与章节"},[t.sections.length>1?(e.openBlock(),e.createElementBlock("div",mi,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.sections,(N,M)=>(e.openBlock(),e.createElementBlock("button",{key:M,type:"button",class:e.normalizeClass({active:k(M)}),"aria-current":k(M)?"page":void 0,disabled:t.busy,onClick:x=>r("goto",N.pageIndex+1)},e.toDisplayString(N.label),11,fi))),128))])):e.createCommentVNode("",!0),y.value?(e.openBlock(),e.createElementBlock("div",{key:1,ref_key:"root",ref:l,class:"mrp-column-locator",onKeydown:w[7]||(w[7]=(...N)=>e.unref(o).onKeydown&&e.unref(o).onKeydown(...N))},[e.createElementVNode("button",{ref_key:"trigger",ref:s,type:"button",class:e.normalizeClass(["mrp-directory-trigger",{active:e.unref(c)}]),"aria-expanded":e.unref(c),"aria-haspopup":"dialog",disabled:t.busy,onClick:w[0]||(w[0]=N=>c.value=!e.unref(c))},[e.createVNode(W._sfc_main,{name:"columns"}),e.createElementVNode("span",null,e.toDisplayString(D.value.columnDirectory),1),e.unref(d).length?(e.openBlock(),e.createElementBlock("span",gi,e.toDisplayString(e.unref(d).length),1)):e.createCommentVNode("",!0),e.createVNode(W._sfc_main,{name:"chevron-down",size:12})],10,pi),e.unref(c)?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"panel",ref:i,class:"mrp-column-directory",role:"dialog","aria-label":D.value.columnDirectory},[e.createElementVNode("div",yi,[e.createElementVNode("span",null,[e.createVNode(W._sfc_main,{name:"columns"}),e.createTextVNode(e.toDisplayString(D.value.columnDirectory),1)]),e.createElementVNode("button",{type:"button",class:"mrp-column-close","aria-label":t.messages.closeColumnDirectory??"关闭字段目录",onClick:w[1]||(w[1]=N=>e.unref(o).close(!0))},[e.createVNode(W._sfc_main,{name:"close",size:15})],8,bi)]),e.createElementVNode("form",{class:"mrp-column-search",onSubmit:w[5]||(w[5]=e.withModifiers((...N)=>e.unref(o).submit&&e.unref(o).submit(...N),["prevent"]))},[e.createVNode(W._sfc_main,{name:"search"}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":w[2]||(w[2]=N=>e.isRef(u)?u.value=N:null),type:"search",autocomplete:"off",spellcheck:"false",role:"combobox","aria-label":D.value.columnSearch,placeholder:D.value.columnSearch,"aria-autocomplete":"list","aria-expanded":"true","aria-controls":e.unref(g),"aria-activedescendant":e.unref(b).length?`${e.unref(g)}-${e.unref(m)}`:void 0,disabled:t.busy,onKeydown:w[3]||(w[3]=(...N)=>e.unref(o).onSearchKeydown&&e.unref(o).onSearchKeydown(...N))},null,40,hi),[[e.vModelText,e.unref(u)]]),e.unref(u)?(e.openBlock(),e.createElementBlock("button",{key:0,class:"mrp-column-clear",type:"button","aria-label":t.messages.clearSearch??"清除搜索",onClick:w[4]||(w[4]=(...N)=>e.unref(o).clear&&e.unref(o).clear(...N))},[e.createVNode(W._sfc_main,{name:"close",size:13})],8,wi)):e.createCommentVNode("",!0)],32),e.createElementVNode("div",{id:e.unref(g),class:"mrp-column-results",role:"listbox","aria-label":D.value.columnResults},[e.unref(b).length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("p",xi,[e.createVNode(W._sfc_main,{name:"search",size:22}),e.createTextVNode(e.toDisplayString(D.value.columnNoMatches),1)])),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(p),N=>(e.openBlock(),e.createElementBlock("section",{key:N.label,role:"group","aria-label":N.label},[e.createElementVNode("strong",null,e.toDisplayString(N.label),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(N.items,M=>(e.openBlock(),e.createElementBlock("button",{id:`${e.unref(g)}-${e.unref(o).candidateIndex(M.key)}`,key:M.key,type:"button",role:"option",tabindex:"-1",class:e.normalizeClass({"mrp-column-active":e.unref(o).candidateIndex(M.key)===e.unref(m)}),"aria-selected":e.unref(o).candidateIndex(M.key)===e.unref(m),disabled:t.busy,onPointermove:x=>m.value=e.unref(o).candidateIndex(M.key),onMousedown:w[6]||(w[6]=e.withModifiers(()=>{},["prevent"])),onClick:x=>e.unref(o).choose(M)},[e.createElementVNode("span",null,[e.createTextVNode(e.toDisplayString(M.label),1),e.createElementVNode("code",{title:M.field},e.toDisplayString(M.field),9,Si)]),e.createVNode(W._sfc_main,{name:"arrow-right",size:14})],42,Ci))),128))],8,Ei))),128))],8,ki),e.createElementVNode("p",Ni,e.toDisplayString(e.unref(f).length>e.unref(b).length?v.value:t.messages.columnSearchShortcut??"↑ ↓ 选择 · Enter 定位"),1)],8,vi)):e.createCommentVNode("",!0)],544)):e.createCommentVNode("",!0)],10,di)):e.createCommentVNode("",!0)}}),on=W._export_sfc(Bi,[["__scopeId","data-v-15a41f0e"]]),Vi={class:"mrp-import-summary"},$i={key:0},Di={key:0},Pi=e.defineComponent({__name:"ReportImportSummary",props:{result:{},messages:{}},setup(t){return(n,a)=>(e.openBlock(),e.createElementBlock("details",Vi,[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",$i," · "+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,r=>(e.openBlock(),e.createElementBlock("li",{key:r.index},e.toDisplayString(r.name)+" · "+e.toDisplayString(r.range)+" · "+e.toDisplayString(r.rowCount)+" × "+e.toDisplayString(r.columnCount),1))),128))]),t.result.warnings.length?(e.openBlock(),e.createElementBlock("ul",Di,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.result.warnings,(r,o)=>(e.openBlock(),e.createElementBlock("li",{key:o},e.toDisplayString(r),1))),128))])):e.createCommentVNode("",!0)]))}}),Ri=W._export_sfc(Pi,[["__scopeId","data-v-54f275e8"]]),et=["html","pdf","xlsx","png","word"],xt=["search","thumbnails","zoom",...et,"print","pdfWindow","editing","import"];function Ii(t){return{load:n=>JSON.parse(t.getItem(n)??"null"),save:(n,a)=>t.setItem(n,JSON.stringify(a)),remove:n=>t.removeItem(n)}}function Mi(t,n,a,r){const o=e.ref({});let l=0,s=0,i=Promise.resolve();const c=e.computed(()=>Object.fromEntries(xt.map(f=>[f,t.value[f]&&(o.value[f]??n.value[f]??!0)])));function u(f,b){t.value[f]&&(s++,o.value={...o.value,[f]:b},m())}function m(){const f=a?.value;if(!f)return;const b={...o.value};i=i.then(()=>f.adapter.save(f.key,b)).catch(p=>{r?.(p)})}function d(){s++,o.value={},m()}return a&&e.watch(a,async f=>{const b=++l,p=s;if(o.value={},!!f)try{const g=await f.adapter.load(f.key);if(b!==l||p!==s||!g||typeof g!="object")return;o.value=Object.fromEntries(xt.flatMap(y=>typeof g[y]=="boolean"?[[y,g[y]]]:[]))}catch(g){b===l&&r?.(g)}},{immediate:!0}),e.onScopeDispose(()=>{l++}),{enabled:c,setEnabled:u,reset:d}}function Ti(t,n,a){const r=e.ref({}),o=ie.useMachReportConfig(),l=e.computed(()=>ie.resolveConfig(o.value,t.preset)),s=e.computed(()=>({...l.value.messages,...t.messages})),i=e.computed(()=>t.showExport??l.value.showExport),c=e.computed(()=>t.showPrint??l.value.showPrint),u=e.computed(()=>t.showPdfWindow??l.value.showPdfWindow),m=e.computed(()=>t.showSettings??l.value.showSettings),d=e.computed(()=>t.guardChanges??l.value.guardChanges),f=e.computed(()=>({...l.value.output,...t.output})),b=e.computed(()=>({...l.value.toolbar,...t.toolbar})),p=e.computed(()=>({...l.value.interaction,...t.interaction,...r.value})),g=e.computed(()=>t.preferences??l.value.preferences),y=e.computed(()=>t.assets??l.value.assets),D=e.computed(()=>t.gapPx??(n.value?0:l.value.gapPx)),v=e.computed(()=>t.showParams??l.value.showParams),k=e.computed(()=>t.editable??l.value.editable),$=e.computed(()=>t.excelImport??l.value.excelImport),w=e.computed(()=>({search:b.value.search!==!1,thumbnails:b.value.thumbnails!==!1,zoom:b.value.zoom!==!1,...Object.fromEntries(et.map(ae=>[ae,i.value&&(b.value.exportFormats?.includes(ae)??!0)])),print:c.value,pdfWindow:u.value,editing:!!k.value,import:!!$.value})),N=Mi(w,e.computed(()=>({editing:b.value.editing,import:b.value.excelImport})),g,()=>a(s.value.preferencesError??"Preferences storage unavailable")),M=N.enabled,x=e.computed(()=>et.filter(ae=>M.value[ae])),I=e.computed(()=>M.value.editing?k.value:!1),z=e.computed(()=>M.value.import?$.value:!1),_=e.computed(()=>typeof k.value=="object"&&(typeof k.value.save=="function"||typeof k.value.saveBatch=="function")),ee=e.computed(()=>typeof t.emptyState=="object"?t.emptyState:{});return{resolved:l,resolvedMessages:s,effectiveShowExport:i,effectiveShowPrint:c,effectiveShowPdfWindow:u,effectiveShowSettings:m,effectiveGuardChanges:d,effectiveOutput:f,effectiveInteraction:p,effectiveAssets:y,effectiveGapPx:D,effectiveShowParams:v,availableTools:w,tools:N,toolState:M,visibleExportFormats:x,effectiveEditable:I,effectiveExcelImport:z,persistedEditing:_,emptyStateContent:ee,sessionInteraction:r}}const Ge=96/25.4;function Oi(t){let n=0,a=null,r=null,o="",l=[];function s(f){f.holder.style.removeProperty("--mrp-freeze-page-x");for(const b of f.components){b.element.style.transform=b.transform,b.element.style.zIndex=b.zIndex,b.element.style.removeProperty("--mrp-freeze-y");for(const p of b.cells)p.cell.style.transform=p.transform,p.cell.style.zIndex=p.zIndex,p.cell.style.removeProperty("--mrp-frozen-fill"),p.fill&&p.cell.style.setProperty("--mrp-frozen-fill",p.fill),p.cell.classList.remove("mrp-cell-frozen")}}function i(f,b,p,g){const y={element:f,component:b,transform:f.style.transform,zIndex:f.style.zIndex,cells:[]},D=g&&b.table?.role==="header";return D?(f.style.transform="translate3d(0,var(--mrp-freeze-y,0px),0)",f.style.zIndex="5"):p&&(f.style.zIndex="1"),f.querySelectorAll("td[data-mr-column-index]").forEach(v=>{const k=Number(v.dataset.mrColumnIndex)<p,$=g&&!b.table&&Number(v.dataset.mrRowIndex)===0;if(!k&&!$)return;y.cells.push({cell:v,transform:v.style.transform,zIndex:v.style.zIndex,fill:v.style.getPropertyValue("--mrp-frozen-fill")});const w=k?`max(0px,calc(var(--mrp-freeze-page-x,0px) - ${b.leftMm*Ge}px))`:"0px";v.style.transform=`translate3d(${w},${$?"var(--mrp-freeze-y,0px)":"0px"},0)`,v.style.zIndex=$||D?"7":"6",v.style.setProperty("--mrp-frozen-fill",v.style.backgroundColor||"transparent"),v.classList.add("mrp-cell-frozen")}),y}function c(f,b,p,g){const y=Number(f.dataset.page)-1,D=b.pages[y],v=f.firstElementChild;if(!D||!v)return;const k=[];return f.querySelectorAll("[data-mr-component-index]").forEach($=>{const w=D.components[Number($.dataset.mrComponentIndex)];w?.grid&&!w.style?.rotateDeg&&k.push(i($,w,p,g))}),{holder:f,content:v,index:y,components:k}}function u(f,b,p,g){const y=`${p}:${g}`;if((a!==f||r!==b||o!==y)&&(l.forEach(s),l=[],a=f,r=b,o=y),!g&&!p)return;const D=new Map(l.map(v=>[v.holder,v]));l=[],f.querySelectorAll(".mrp-page-holder").forEach(v=>{let k=D.get(v);D.delete(v),k&&k.content!==v.firstElementChild&&(s(k),k=void 0),k??=c(v,b,p,g),k&&l.push(k)}),D.forEach(s)}function m(){const f=t.viewport.value,b=t.root.value,p=t.plan.value;if(!f||!b||!p){l.forEach(s),l=[];return}const g=t.options(),y=Math.max(0,Math.min(20,Math.floor(g.frozenColumns??0)))||0;if(u(b,p,y,!!g.freezeHeaders),!y&&!g.freezeHeaders)return;const D=t.zoom.value||1,v=f.getBoundingClientRect(),k=l.map($=>({page:$,bounds:$.holder.getBoundingClientRect()}));for(const $ of k){const{page:w,bounds:N}=$;if(w.holder.style.setProperty("--mrp-freeze-page-x",`${Math.max(0,(v.left-N.left)/D)}px`),!!g.freezeHeaders)for(const M of w.components){if(M.component.table&&M.component.table.role!=="header")continue;const x=M.component.topMm*Ge,I=M.component.heightMm*Ge,z=p.pages[w.index].pageHeightMm*Ge-x-I,_=Math.max(0,Math.min((v.top-N.top)/D-x,z));M.element.style.setProperty("--mrp-freeze-y",`${_}px`)}}}function d(){n||(n=requestAnimationFrame(()=>{n=0,m()}))}return e.onScopeDispose(()=>{n&&cancelAnimationFrame(n),l.forEach(s),l=[]}),{refresh:m,schedule:d}}function Ai(t,n,a,r){const o=r??(t.indexOf(n)===t.lastIndexOf(n)?t.indexOf(n):-1),l=o>=0&&t[o]===n?o:-1,s=JSON.stringify([l,n]);return a.map(i=>i.target?.reportScope?{...i,target:{...i.target}}:{...i,...i.target?{target:{...i.target,reportScope:s,...i.target.tableId?{tableId:JSON.stringify([l,n,i.target.tableId])}:{}}}:{}})}async function Vn(t,n,a,r){if(!n?.assetRegistry&&(!n?.assetRenderers||!Object.keys(n.assetRenderers).length))return t;try{return(await U.resolvePlanAssets(t,{...n,signal:a,format:"dom",onDiagnostic:l=>{a.aborted||(n.onDiagnostic?.(l),r(l.message))}})).plan}catch(o){throw a.aborted?o:new ie.MachReportError("render",o instanceof Error?o.message:"Report asset preparation failed",o)}}function $n(t,n){const a=U.validateRenderPlan(t);if(!a.ok)throw new ie.MachReportError("validate",`渲染计划校验失败(${a.errors.length} 处): ${a.errors.slice(0,3).map(r=>`${r.path}: ${r.message}`).join("; ")}`);a.warnings.forEach(r=>n(`${r.path}: ${r.message}`))}async function Fi(t,n,a,r){const o=await X.waitForOutput(t(n),n.signal);return X.assertOutputActive(n.signal),r("validate"),$n(o,n.onWarning??(()=>{})),X.assertOutputActive(n.signal),r("assets"),Vn(o,a,n.signal,n.onWarning??(()=>{}))}async function zi(t,n,a,r,o,l){const{importExcelTemplate:s}=await import("@agile-team/mach-report/xlsx");X.assertOutputActive(r);const i=await X.waitForOutput(s(t,{...n,signal:r}),r);l("layout");const c=U.paginateTemplate(de(i.template),{}).plan;$n(c,o),X.assertOutputActive(r),l("assets");const u=await Vn(c,a,r,o);return{result:i,plan:u}}function Li({source:t,policy:n,feedback:a,view:r,events:o,task:l,diagnostics:s}){const i=e.shallowRef(null),c=e.ref(!1),u=e.ref(!1),m=e.shallowRef(null),d=e.shallowRef(null),{errorMessage:f,lastError:b,notice:p,reportError:g}=a,y=Ma();let D=!1;function v(){r.invalidate(),u.value=!1,d.value=null,i.value=null,m.value=null,s.reset()}let k=0,$=null;function w(h,S){return h===k&&!S.signal.aborted&&!D}function N(h,S){for(const P of h){if(S!==k)return!1;o.warning(P)}return S===k}function M(){const h=t.readParams();return h.params?h.params:(v(),f.value=h.quiet?"":h.error.message,h.quiet||(t.invalidParams(),g(h.error.message,h.error.code,h.error.cause)),null)}async function x(){if(D)return;const h=n.guard("reload");if(!(typeof h=="boolean"?h:await h)||D)return;const S=++k;u.value=!1,$?.abort(),$=null;const P=t.fetcher();if(c.value=!1,b.value=null,t.ids().length===0){f.value="缺少报表 ID",v(),g(f.value,"param");return}if(!P){f.value="未提供渲染数据源 fetcher",v(),g(f.value,"config");return}const A=M();if(!A)return;c.value=!0,f.value="",p.value=null,v();const B=y.start(),R=new AbortController;$=R;const T=l.start("query","query",()=>{$===R&&(R.abort(),k++,$=null,c.value=!1)}),L=[...t.ids()],F=Object.freeze({...A}),Z=new Set;function Q(G){S!==k||R.signal.aborted||Z.has(G)||(Z.add(G),o.logWarning(G),s.add({code:"layout",severity:"warning",message:G}),o.warning(G))}try{const G=await Fi(P,{reportIds:L,params:A,taskId:T.taskId,onEvent:q=>{S===k&&!R.signal.aborted&&T.update(q.stage,q.completed,q.total)},onQueryResult:(q,se,me)=>{S===k&&!R.signal.aborted&&s.addMany(Ai(L,q,se.diagnostics??[],me))},signal:R.signal,onWarning:Q},n.assets(),T.update);if(!w(S,R)||(i.value=G,m.value=Object.freeze({reportIds:Object.freeze(L),params:F}),s.inspect(G,"dom"),!w(S,R)))return;T.finish(),y.end(B),r.accepted("query"),o.loaded(G.pages.length)}catch(G){if(S!==k)return;if(R.signal.aborted){T.finish("cancelled");return}T.finish("failed");const q=ie.normalizeReportLoadError(G);f.value=q.message;const se=ie.toErrorDetail(q);g(q.message,se.code,se.cause)}finally{S===k&&(c.value=!1),$===R&&($=null)}}function I(h){const S=n.importOptions(),P=typeof S=="object"?S:{};return{...P,...h,limits:{...P.limits,...h?.limits}}}function z(h,S){r.invalidate(),i.value=h,m.value=null,s.reset(),d.value={sheets:de(S.sheets),warnings:[...S.warnings]},f.value="",p.value=S.warnings.length?{kind:"warning",message:S.warnings.join(";")}:null,r.accepted("import"),s.addMany(S.warnings.map(P=>({code:"excel-import",severity:"warning",message:P}))),i.value===h&&s.inspect(h,"dom")}async function _(h,S){if(D)throw new ie.MachReportError("config","报表预览已卸载");const P=n.guard("import");if(!(typeof P=="boolean"?P:await P)||D)return null;const A=++k;$?.abort(),$=null,c.value=!1,r.beforeImport(),u.value=!0;const B=new AbortController;$=B,b.value=null,p.value={kind:"progress",message:n.importingMessage()??"正在导入 Excel…"};const R=l.start("import","import",()=>{$===B&&(B.abort(),k++,$=null,u.value=!1,p.value=null)}),T=I(S),L=X.forwardOutputAbort(T.signal,B);try{const{result:F,plan:Z}=await zi(h,{...T,onProgress:(Q,G)=>{R.update("import",Q,G),T.onProgress?.(Q,G)}},n.assets(),B.signal,Q=>{A===k&&o.warning(Q)},R.update);return!w(A,B)||!N(F.warnings,A)||(z(Z,F),!w(A,B))?null:(R.finish(),o.imported(F),A===k&&o.loaded(Z.pages.length),F)}catch(F){if(A!==k)return null;if(B.signal.aborted)return R.finish("cancelled"),null;R.finish("failed");const Z=new ie.MachReportError("import",F instanceof Error?F.message:"Excel 模板导入失败",F);throw p.value={kind:"error",message:Z.message},g(Z.message,"import",F),Z}finally{L(),A===k&&(u.value=!1),$===B&&($=null)}}function ee(){k++,$?.abort(),$=null,c.value=!1,f.value="",b.value=null,p.value=null,v()}function ae(){D=!0,k++,$?.abort(),$=null,c.value=!1,u.value=!1}return e.onScopeDispose(ae),{plan:i,loading:c,importing:u,loadedContext:m,importedResult:d,timing:y,reload:x,importExcel:_,invalidate:v,clear:ee}}const qi={key:8,class:"mrp-edit-hint",role:"status"},Ki={key:10,class:"mrp-export-notice mrp-export-warning",role:"status"},ji={class:"mrp-main"},Wi={key:0,class:"mrp-state"},Hi={key:1,class:"mrp-state mrp-error"},Ui=["data-page"],Gi=["aria-label","aria-current","onClick"],Ji=["data-thumb"],Xi={class:"mrp-thumb-no"},Zi={key:11,class:"mrp-footer"},Yi={class:"mrp-footer-context"},Qi=["aria-label"],_i={key:0},ec={class:"mrp-overlay"},tc={key:12,class:"mrp-debug","aria-hidden":"true"},ht=96/25.4,rn="mach-report:ui",ln="mach-report:ui:wide",nc=e.defineComponent({__name:"ReportPreview",props:{prefill:{type:[Boolean,Object],default:void 0},dataComparison:{type:[Boolean,Object],default:void 0},drill:{type:Object,default:void 0},loadParamOptions:{type:Function,default:void 0},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},exportExecution:{type:Object,default:void 0},assets:{type:Object,default:void 0},printOptions:{type:Object,default:void 0},emptyState:{type:[Boolean,Object],default:!1},gapPx:{type:Number,default:void 0},messages:{type:Object,default:void 0},preset:{type:String,default:void 0},debug:{type:Boolean,default:!1},paramDefs:{type:Array,default:void 0},showParams:{type:Boolean,default:void 0},editable:{type:[Boolean,Object],default:void 0},excelImport:{type:[Boolean,Object],default:void 0},fetcher:{type:Function,default:null}},emits:["loaded","task","diagnostic","error","warning","cell-edit","template-import","preferences-change"],setup(t,{expose:n,emit:a}){const r=t,o=a,l=e.ref(""),s=e.shallowRef(null),i=e.ref(null),c=e.ref(1),u=e.ref(null),m=e.ref(null),d=e.ref(null),f=e.ref(!1),b=e.ref(!1),p=e.ref("general"),g=e.ref(null),y=e.ref(null);let D=null,v=!1;const k=js(C=>o("task",C)),$=Ws(C=>o("diagnostic",C)),w=e.computed(()=>$.entries.value.filter(C=>C.valueState&&C.target)),N=e.computed(()=>$.entries.value.filter(C=>!C.valueState)),M=Li({source:{ids:()=>T.value,fetcher:()=>L.value,readParams:()=>Ke.value.error?{error:Ke.value.error,quiet:!1}:Pe.query(),invalidParams:()=>{Ke.value.error||(je.value=!0)}},policy:{guard:C=>we.value&&J.pendingLocalChanges.value?ze.check(C):!0,assets:()=>K.value,importOptions:()=>De.value,importingMessage:()=>q.value.importing},feedback:{errorMessage:l,lastError:s,notice:i,reportError:Q},task:k,diagnostics:$,view:{invalidate:()=>{J.reset(),oe.reset(),rt.invalidate(),c.value=1,le.reset()},beforeImport:()=>{J.cancel(),rt.invalidatePending()},accepted:C=>{c.value=1,m.value&&(m.value.scrollTop=0,m.value.scrollLeft=0);const O=P.value?ln:rn;(C==="import"||O!==A)&&(A=O,Xt()),C==="query"&&Ie.value==="fit"&&Wt()}},events:{warning:C=>o("warning",C),logWarning:C=>G.value.logger.warn("[mach-report] 报表告警:",C),loaded:C=>o("loaded",C),imported:C=>o("template-import",C)}}),{plan:x,loading:I,importing:z,importedResult:_,loadedContext:ee,timing:ae,reload:h,importExcel:S}=M,P=e.computed(()=>!!x.value?.pages.length&&x.value.pages.every(C=>C.layout==="wide"));let A=rn;const B=e.inject(gt.MACH_REPORT_FETCHER_KEY,null),R=e.inject(gt.MACH_REPORT_PDF_EXPORTER_KEY,null),T=e.computed(()=>St(r.reportId)),L=e.computed(()=>r.fetcher??B),F=e.computed(()=>x.value?.pages.length??0),Z=e.computed(()=>Object.freeze({loading:I.value,hasPlan:F.value>0,pageCount:F.value,currentPage:c.value,exporting:ke.value,printing:he.value,canExport:!I.value&&!z.value&&!J.saving.value&&F.value>0&&ke.value===null,canPrint:!I.value&&!z.value&&!J.saving.value&&F.value>0&&!he.value,error:s.value,pdfFont:Pt.value,editing:J.active.value!==null,saving:J.saving.value,importing:z.value,dirty:J.differences.value.length>0,pendingLocalChanges:J.pendingLocalChanges.value,task:k.state.value,diagnostics:$.entries.value,reportIds:ee.value?.reportIds??[],params:ee.value?.params??{},canUndo:J.canUndo.value,canRedo:J.canRedo.value,changeCount:J.differences.value.length,selection:oe.selection.value?de(oe.selection.value):null}));function Q(C,O,H){s.value=Object.freeze({message:C,code:O,cause:H}),o("error",C,{code:O,cause:H})}const{resolved:G,resolvedMessages:q,effectiveShowExport:se,effectiveShowSettings:me,effectiveGuardChanges:we,effectiveOutput:E,effectiveInteraction:V,effectiveAssets:K,effectiveGapPx:j,effectiveShowParams:Y,availableTools:te,tools:re,toolState:ne,visibleExportFormats:Ce,effectiveEditable:ve,effectiveExcelImport:De,persistedEditing:Se,emptyStateContent:xe,sessionInteraction:nt}=Ti(r,P,C=>o("warning",C)),$t=e.computed(()=>ne.value.pdf||ne.value.pdfWindow),Pn=e.computed(()=>r.prefill??G.value.prefill),Dt=e.computed(()=>r.dataComparison??G.value.dataComparison),at=e.computed(()=>V.value.calculations===!0),ot=e.computed(()=>ie.resolveCalculationMessages(q.value)),{pdfFont:Pt,getPdfExporter:Rn,checkPdfFont:In,retryPdfFont:Rt,cancelFontCheck:Mn}=ps({plan:x,fontUrl:()=>G.value.pdfFontUrl,enabled:()=>$t.value,injectedExporter:R,destroyed:()=>v});async function Tn(C,O){C==="editing"&&!O&&!await J.settle()||(re.setEnabled(C,O),o("preferences-change",Object.freeze({...ne.value})))}async function On(){await J.settle()&&(re.reset(),nt.value={},Tt.value=void 0,o("preferences-change",Object.freeze({...ne.value})))}async function It(C="general"){if(b.value){b.value=!1;return}const O=J.settle();!(typeof O=="boolean"?O:await O)||v||!me.value||(p.value=C,b.value=!0)}const{editing:J,cells:oe,discard:ze,confirmDiscard:Mt}=qs({plan:x,root:u,options:ve,selectionEnabled:()=>!!ve.value||at.value||!!Dt.value||!!(r.drill??G.value.drill),busy:()=>I.value||z.value||ke.value!==null||he.value,messages:()=>q.value,gotoPage:ge,ensureVisible:C=>We.reveal(C),guard:{reportIds:()=>ee.value?.reportIds??T.value,hook:()=>r.beforeDiscard??G.value.beforeDiscard,enabled:()=>we.value,error:C=>Q(C instanceof Error?C.message:"修改保护回调失败","config",C)},changed:C=>{s.value=null,i.value=null,o("cell-edit",C)},failed:(C,O)=>{i.value={kind:"error",message:C},Q(C,"edit",O)}}),rt=xa({plan:x,editing:J,diagnostics:$,task:k,busy:()=>I.value||z.value,wide:()=>P.value,defaultsPrint:()=>G.value.printOptions,printOverrides:()=>r.printOptions,messages:()=>q.value,fidelity:()=>E.value.fidelity,execution:()=>r.exportExecution??G.value.exportExecution,getPdfExporter:Rn,getXlsxOptions:()=>G.value.xlsx,feedback:{lastError:s,notice:i,reportError:Q,warning:C=>o("warning",C)}}),{exporting:ke,printing:he,localPrintCalibration:Tt,effectivePrintOptions:An,canCalibratePrint:Fn,testPrintCalibration:zn,print:Ot,exportAs:At,openPdfWindow:Ft,getOutputDiagnostics:Ln}=rt,ue=Er({plan:x,prefill:Pn,comparison:Dt,editingOptions:ve,issues:J.validationIssues,messages:q,busy:()=>I.value||z.value||J.saving.value||!!ke.value||he.value,replacing:()=>I.value||z.value,settle:J.settle,apply:J.apply,editError:()=>J.lastError.value,locate:C=>{oe.focusCell(C)},missing:()=>{i.value={kind:"warning",message:q.value.locateFieldMissing??"Field not found"}},error:(C,O)=>Q(C,"edit",O)}),lt=Qr({plan:x,selection:oe.selection,enabled:()=>at.value});function qn(){It("advanced")}const Le=os({plan:x,selection:oe.selection,options:()=>r.drill??G.value.drill,params:()=>({...ee.value?.params}),view:()=>({zoom:fe.value,scrollTop:u.value?.scrollTop??0,scrollLeft:u.value?.scrollLeft??0}),messages:()=>q.value,busy:()=>I.value||z.value||J.saving.value||!!ke.value||he.value,beforeOpen:()=>Mt("leave")});function zt(){k.cancel()}function Kn(C){const O=J.resolveAddress(C);O&&oe.focusCell(O)}async function Lt(C){await oe.focusField(C)||(i.value={kind:"warning",message:q.value.locateFieldMissing??"Field not found"})}function jn(C){if(C.pageIndex===void 0)return;ge(C.pageIndex+1);const O=C.componentPath;C.componentIndex!==void 0&&O&&O.length===2&&oe.focusCell({pageIndex:C.pageIndex,componentIndex:C.componentIndex,rowIndex:O[0],columnIndex:O[1]})}const qe=e.computed(()=>{if(_.value)return _.value.sheets.map(O=>({label:O.name,pageIndex:O.pageStart}));const C=new Set;return x.value?.pages.flatMap((O,H)=>O.components.flatMap(Oe=>{const Ee=Oe.table;return!Ee?.title||C.has(Ee.id)?[]:(C.add(Ee.id),[{label:Ee.title,pageIndex:H}])}))??[]});async function qt(C){C&&!await oe.focusField({field:C})&&(i.value={kind:"warning",message:q.value.locateFieldMissing??"Field not found"})}async function Wn(C){await oe.focusField(C)||(i.value={kind:"warning",message:q.value.locateFieldMissing??"Field not found"})}const Ke=e.computed(()=>{try{return{defs:r.paramDefs??L.value?.getParamDefs?.(T.value)??[],error:null}}catch(C){return{defs:[],error:new ie.MachReportError("config",C instanceof Error?C.message:"查询参数配置无效",C)}}}),st=e.computed(()=>Ke.value.defs),Pe=ie.useReportParams({defs:st,reportIds:T,params:()=>r.params,messages:()=>q.value}),{values:Re,attempted:je,pendingRequired:Kt}=Pe,jt=e.ref(null);function Hn(){je.value=!0,Pe.validation.value.ok||e.nextTick(()=>jt.value?.focusInvalid()),h()}function Un(){Pe.reset(),l.value="",s.value=null}const Gn=e.computed(()=>({height:r.height,"--mrp-page-gap":`${Math.max(0,j.value)}px`,...ie.themeToCssVars(G.value.theme)})),{zoom:fe,zoomMode:Ie,applyFitZoom:Wt,setZoom:Me}=un(()=>({viewport:m.value,pageWidthPx:it.contentSize.value.w||210*ht})),it=cn(x,fe,{pxPerMm:ht,gapPx:j,overscan:e.computed(()=>G.value.preview.overscanPages)}),{contentSize:ct,windowRange:Te,visiblePages:Ht,makeScrollHandler:Jn,refreshViewport:Ut}=it,Xn=Jn(c,F),ut=Oi({root:u,viewport:m,plan:x,zoom:fe,options:()=>V.value});e.watch([V,fe],()=>ut.schedule(),{flush:"post"});function dt(C){Me(C*100)}function ge(C){if(v||F.value<=0)return;const O=Math.max(1,Math.min(F.value,C));c.value=O;const H=m.value;H&&(it.scrollToPage(H,O-1),We.prioritize(O-1))}async function Zn(C,O={}){v||(Re.value={...Re.value,...C},O.reload!==!1&&(je.value=!0,await h()))}const Gt={reload:h,print:Ot,exportAs:At,openPdfWindow:Ft,gotoPage:ge,setParams:Zn,checkPdfFont:In,importExcel:S,getPlan:Yn,cancelTask:zt,confirmDiscard:Mt,getOutputDiagnostics:Ln,getChanges:J.getChanges,undo:J.undo,redo:J.redo,restoreChanges:J.restore,getDifferences:()=>de(J.differences.value),getSelection:()=>oe.selection.value?de(oe.selection.value):null,focusCell:oe.focusCell,focusField:oe.focusField,copySelection:oe.copySelection,pasteSelection:oe.pasteSelection,get state(){return Z.value}};e.provide(gt.MACH_REPORT_CONTROLLER_KEY,Gt);function Yn(){return x.value?de(x.value):null}function Qn(C){const O=C.target,H=O.files?.[0];O.value="",H&&S(H).catch(()=>{})}const le=Pa({plan:x,gotoPage:ge,debounceMs:e.computed(()=>G.value.preview.searchDebounceMs),highlight:Ca,clearHighlights:Ea});e.watch(()=>ne.value.search,C=>{C||(le.reset(),le.visible.value=!1)});function _n(C){!C.ctrlKey||!ne.value.zoom||(C.preventDefault(),dt(fe.value*(C.deltaY<0?1.1:1/1.1)))}function ea(C){if(!oe.onKeydown(C)&&!(C.target instanceof Element&&C.target.closest("input,textarea,select,[contenteditable='true']"))){if(ne.value.search&&(C.ctrlKey||C.metaKey)&&C.key.toLowerCase()==="f"){C.preventDefault(),le.visible.value||le.toggle(),e.nextTick(()=>y.value?.focusSearch());return}switch(C.key){case"PageDown":C.preventDefault(),ge(c.value+1);break;case"PageUp":C.preventDefault(),ge(c.value-1);break;case"Home":C.preventDefault(),ge(1);break;case"End":C.preventDefault(),ge(F.value);break;case"+":case"=":C.preventDefault(),ne.value.zoom&&dt(fe.value*1.1);break;case"-":C.preventDefault(),ne.value.zoom&&dt(fe.value/1.1);break}}}function ta(){try{localStorage.setItem(A,JSON.stringify({zoomMode:Ie.value==="fit"?"fit":Math.round(fe.value*100)}))}catch{}}e.watch([Ie,fe],ta);let mt="";function Jt(C=!1){const O=le.activeMatch.value;if(!P.value||!O)return;const H=`${le.query.value}:${le.matchIndex.value}:${O.pageIndex}`;if(!C&&H===mt)return;const Ee=u.value?.querySelector(`[data-page="${O.pageIndex+1}"]`)?.querySelectorAll("mark.mrp-hit")[O.occurrence];Ee&&(Ee.scrollIntoView?.({block:"nearest",inline:"nearest"}),mt=H)}const We=ma({plan:x,root:u,viewport:m,pages:()=>Ht.value,windowing:()=>!V.value.freezeHeaders&&!(V.value.frozenColumns??0),priority:()=>le.activeMatch.value?.pageIndex??c.value-1,focusToken:()=>le.activeMatch.value,editorToken:()=>J.active.value,query:()=>le.query.value,zoom:()=>fe.value,loading:()=>q.value.loading,clear:le.clear,highlight:le.apply,mounted:C=>{oe.refresh(C),ut.schedule()},ready:()=>{le.activeMatch.value||(mt=""),Jt()},error:C=>{l.value=C instanceof Error?C.message:String(C),Q(l.value,"render",C)}});e.watch(()=>oe.selection.value,()=>{oe.refresh()},{flush:"post"}),e.watch(()=>le.query.value,C=>{C||u.value?.querySelectorAll(".mrp-page-holder").forEach(O=>{le.clear(O)})});const ye=Ia(x,{thumbsRoot:d,visible:f,renderThumbCanvas:C=>{try{const O=x.value.pages[C],H=Math.min(.2,116/Math.max(1,O.pageWidthMm*ht)),{canvases:Oe}=U.renderPlanToCanvas(x.value,{start:C,end:C,dpr:H});return Oe[0]??null}catch{return null}}});e.watchEffect(()=>{ye.schedule()},{flush:"post"});const na=e.computed(()=>r.debug),{debugStats:Ne}=Ra(na,{plan:x,pageCount:F,windowRange:Te,zoom:fe,loadMs:ae.loadMs});function ft(){Ut(m.value),We.refreshViewport(),ye.schedule(),Ie.value==="fit"&&Wt(),Jt(!0)}function Xt(){Me(A===ln?100:"fit");try{const C=JSON.parse(localStorage.getItem(A)??"{}");C.zoomMode==="fit"?Me("fit"):typeof C.zoomMode=="number"&&Me(C.zoomMode)}catch{}}return e.onMounted(()=>{window.addEventListener("resize",ft),typeof ResizeObserver<"u"&&m.value&&(D=new ResizeObserver(ft),D.observe(m.value)),Ut(m.value),Xt(),r.autoLoad&&h()}),e.onUnmounted(()=>{v=!0,k.cancel(),z.value=!1,Mn(),window.removeEventListener("resize",ft),D?.disconnect(),D=null,ye.destroy(),le.reset()}),e.watch(()=>[JSON.stringify(T.value),JSON.stringify(r.params),L.value],async()=>{if(r.autoLoad){h();return}!await ze.check("replace")||v||M.clear()}),n({...Gt,state:Z}),(C,O)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["mach-report-preview",{"mrp-wide-report":P.value}]),style:e.normalizeStyle(Gn.value)},[e.unref(Y)&&st.value.length>0?(e.openBlock(),e.createBlock(ie.ReportParamPanel,{key:0,ref_key:"paramPanelRef",ref:jt,defs:st.value,"load-options":r.loadParamOptions??e.unref(G).loadParamOptions,modelValue:e.unref(Re),"onUpdate:modelValue":O[0]||(O[0]=H=>e.isRef(Re)?Re.value=H:null),messages:e.unref(q),attempted:e.unref(je),issues:e.unref(Pe).validation.value.issues,onQuery:Hn,onReset:Un},null,8,["defs","load-options","modelValue","messages","attempted","issues"])):e.createCommentVNode("",!0),e.createVNode(bn,{ref_key:"toolbarRef",ref:y,"page-count":F.value,"current-page":c.value,"zoom-mode":e.unref(Ie),zoom:e.unref(fe),"show-export":e.unref(se),"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(Ce),"show-settings":e.unref(me),"settings-open":b.value,messages:e.unref(q),search:{visible:e.unref(le).visible.value,query:e.unref(le).query.value,matchIndex:e.unref(le).matchIndex.value,matchCount:e.unref(le).matchCount.value,searching:e.unref(le).searching.value},"thumbs-visible":f.value,"show-import":!!e.unref(De),busy:e.unref(I)||e.unref(z)||e.unref(J).saving.value,onGoto:ge,onZoom:e.unref(Me),onExport:O[1]||(O[1]=H=>e.unref(At)(H)),onPrint:e.unref(Ot),onPdfWindow:e.unref(Ft),onSearchInput:e.unref(le).onInput,onSearchNav:e.unref(le).onNav,onSearchToggle:e.unref(le).toggle,onThumbsToggle:O[2]||(O[2]=H=>f.value=!f.value),onImportExcel:O[3]||(O[3]=H=>g.value?.click()),onSettingsToggle:It},e.createSlots({"data-tools":e.withCtx(()=>[e.createVNode(No,{prefill:e.unref(ue).availablePrefill.value,comparison:e.unref(ue).availableComparison.value,"issue-count":e.unref(J).validationIssues.value.length,messages:e.unref(ue).messages.value,busy:e.unref(I)||e.unref(z)||e.unref(J).saving.value||!!e.unref(ke)||e.unref(he),onOpen:e.unref(ue).open},null,8,["prefill","comparison","issue-count","messages","busy","onOpen"])]),_:2},[qe.value.length<=1?{name:"navigation",fn:e.withCtx(()=>[F.value>0&&e.unref(V).navigation!==!1?(e.openBlock(),e.createBlock(on,{key:0,plan:e.unref(x),compact:"",sections:qe.value,"current-page":c.value,messages:e.unref(q),busy:e.unref(I)||e.unref(z)||e.unref(J).saving.value,onLocateTarget:Lt,onGoto:ge,onLocate:qt},null,8,["plan","sections","current-page","messages","busy"])):e.createCommentVNode("",!0)]),key:"0"}:void 0]),1032,["page-count","current-page","zoom-mode","zoom","show-export","show-print","show-pdf-window","show-search","show-thumbnails","show-zoom","export-formats","show-settings","settings-open","messages","search","thumbs-visible","show-import","busy","onZoom","onPrint","onPdfWindow","onSearchInput","onSearchNav","onSearchToggle"]),e.unref(ue).opened.value?(e.openBlock(),e.createBlock(Po,{key:1,title:e.unref(ue).title.value,"close-label":e.unref(ue).messages.value.reviewClose,onClose:e.unref(ue).close},{default:e.withCtx(()=>[e.unref(ue).opened.value==="prefill"?(e.openBlock(),e.createBlock(wn,{key:0,state:e.unref(ue).prefill,messages:e.unref(ue).messages.value},null,8,["state","messages"])):e.unref(ue).opened.value==="comparison"?(e.openBlock(),e.createBlock(kn,{key:1,state:e.unref(ue).comparison,messages:e.unref(ue).messages.value},null,8,["state","messages"])):(e.openBlock(),e.createBlock(xn,{key:2,issues:e.unref(J).validationIssues.value,messages:e.unref(ue).validationMessages.value,onLocate:e.unref(ue).locateIssue},null,8,["issues","messages","onLocate"]))]),_:1},8,["title","close-label","onClose"])):e.createCommentVNode("",!0),e.unref(ze).request.value?(e.openBlock(),e.createBlock($l,{key:2,messages:e.unref(q),onAnswer:e.unref(ze).settle},null,8,["messages","onAnswer"])):e.createCommentVNode("",!0),e.createVNode(Ml,{task:e.unref(k).state.value,messages:e.unref(q),onCancel:zt},null,8,["task","messages"]),e.createVNode(ql,{entries:N.value,messages:e.unref(q),onLocate:jn},null,8,["entries","messages"]),e.createVNode(Zl,{entries:w.value,messages:e.unref(q),busy:e.unref(I)||e.unref(z)||e.unref(J).saving.value,onLocate:Wn},null,8,["entries","messages","busy"]),e.createVNode(as,{entries:e.unref(Le).entries.value,pending:e.unref(Le).pending.value,error:e.unref(Le).error.value,busy:e.unref(I)||e.unref(z)||e.unref(J).saving.value,messages:e.unref(q),onOpen:e.unref(Le).open},null,8,["entries","pending","error","busy","messages","onOpen"]),b.value&&e.unref(me)?(e.openBlock(),e.createBlock(El,{key:3,available:e.unref(te),enabled:e.unref(ne),messages:e.unref(q),"persisted-editing":e.unref(Se),interaction:e.unref(V),section:p.value,busy:e.unref(I)||e.unref(z)||e.unref(J).saving.value||!!e.unref(ke)||e.unref(he),onSection:O[5]||(O[5]=H=>p.value=H),onInteraction:O[6]||(O[6]=H=>nt.value={...e.unref(nt),...H}),onChange:Tn,onReset:On,onClose:O[7]||(O[7]=H=>b.value=!1)},{advanced:e.withCtx(()=>[e.createVNode(Yr,{state:e.unref(lt),messages:ot.value},null,8,["state","messages"])]),default:e.withCtx(()=>[e.renderSlot(C.$slots,"settings",{},void 0,!0),e.unref(ne).print?(e.openBlock(),e.createBlock(us,{key:0,value:e.unref(An).calibration??{},messages:e.unref(q),busy:e.unref(he)||e.unref(I)||e.unref(z)||e.unref(J).saving.value,"can-test":e.unref(Fn),onChange:O[4]||(O[4]=H=>Tt.value=H),onTest:e.unref(zn)},null,8,["value","messages","busy","can-test","onTest"])):e.createCommentVNode("",!0)]),_:3},8,["available","enabled","messages","persisted-editing","interaction","section","busy"])):e.createCommentVNode("",!0),qe.value.length>1&&F.value>0&&e.unref(V).navigation!==!1?(e.openBlock(),e.createBlock(on,{key:4,plan:e.unref(x),onLocateTarget:Lt,sections:qe.value,"current-page":c.value,messages:e.unref(q),busy:e.unref(I)||e.unref(z)||e.unref(J).saving.value,onGoto:ge,onLocate:qt},null,8,["plan","sections","current-page","messages","busy"])):e.createCommentVNode("",!0),e.unref(_)?(e.openBlock(),e.createBlock(Ri,{key:5,result:e.unref(_),messages:e.unref(q)},null,8,["result","messages"])):e.createCommentVNode("",!0),e.unref(ve)&&F.value>0?(e.openBlock(),e.createBlock(li,{key:6,differences:e.unref(J).differences.value,conflicts:e.unref(J).conflicts.value,messages:e.unref(q),saving:e.unref(J).saving.value,"can-undo":e.unref(J).canUndo.value,"can-redo":e.unref(J).canRedo.value,persisted:e.unref(Se),busy:!!e.unref(ke)||e.unref(he),onUndo:e.unref(J).undo,onRedo:e.unref(J).redo,onRestore:e.unref(J).restore,onLocate:Kn},null,8,["differences","conflicts","messages","saving","can-undo","can-redo","persisted","busy","onUndo","onRedo","onRestore"])):e.createCommentVNode("",!0),e.unref(De)?(e.openBlock(),e.createElementBlock("input",{key:7,ref_key:"importInputRef",ref:g,class:"mrp-import-input",type:"file",accept:".xlsx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",hidden:"",onChange:Qn},null,544)):e.createCommentVNode("",!0),e.unref(ve)&&F.value>0?(e.openBlock(),e.createElementBlock("div",qi,e.toDisplayString(e.unref(J).saving.value?e.unref(q).saving:e.unref(q).editingHint),1)):e.createCommentVNode("",!0),i.value?(e.openBlock(),e.createElementBlock("div",{key:9,class:e.normalizeClass(["mrp-export-notice",`mrp-export-${i.value.kind}`]),role:"alert"},e.toDisplayString(i.value.message),3)):e.createCommentVNode("",!0),e.unref(Pt).status==="error"&&$t.value?(e.openBlock(),e.createElementBlock("div",Ki,[e.createTextVNode(e.toDisplayString(e.unref(q).pdfFontUnavailable)+" ",1),e.createElementVNode("button",{type:"button",onClick:O[8]||(O[8]=(...H)=>e.unref(Rt)&&e.unref(Rt)(...H))},e.toDisplayString(e.unref(q).retry),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",ji,[e.createElementVNode("div",{ref_key:"viewportRef",ref:m,class:"mrp-body",tabindex:"0",onWheel:_n,onKeydown:ea,onDblclick:O[10]||(O[10]=(...H)=>e.unref(J).onDoubleClick&&e.unref(J).onDoubleClick(...H)),onClick:O[11]||(O[11]=(...H)=>e.unref(oe).onClick&&e.unref(oe).onClick(...H)),onCopy:O[12]||(O[12]=(...H)=>e.unref(oe).onCopy&&e.unref(oe).onCopy(...H)),onPaste:O[13]||(O[13]=(...H)=>e.unref(oe).onPaste&&e.unref(oe).onPaste(...H)),onScrollPassive:O[14]||(O[14]=H=>{e.unref(Xn)(H.target),e.unref(We).refreshViewport(),e.unref(ut).refresh()})},[e.unref(I)?(e.openBlock(),e.createElementBlock("div",Wi,e.toDisplayString(e.unref(q).loading),1)):l.value?(e.openBlock(),e.createElementBlock("div",Hi,[e.createTextVNode(e.toDisplayString(l.value)+" ",1),e.createElementVNode("button",{class:"mrp-retry",type:"button",onClick:O[9]||(O[9]=(...H)=>e.unref(h)&&e.unref(h)(...H))},e.toDisplayString(e.unref(q).retry),1)])):!e.unref(x)||F.value===0?(e.openBlock(),e.createBlock(en,{key:2,title:e.unref(Kt)?e.unref(q).paramPrompt??e.unref(q).paramsTitle:e.unref(q).empty,description:e.unref(Kt)?e.unref(q).paramPromptDescription:e.unref(xe).description??e.unref(q).emptyDescription},null,8,["title","description"])):(e.openBlock(),e.createElementBlock("div",{key:3,class:"mrp-scale",style:e.normalizeStyle({width:`${e.unref(ct).w*e.unref(fe)}px`,height:`${e.unref(ct).h*e.unref(fe)}px`})},[e.createElementVNode("div",{ref_key:"containerRef",ref:u,class:"mrp-scale-inner",style:e.normalizeStyle({transform:`scale(${e.unref(fe)})`,transformOrigin:"top left",width:`${e.unref(ct).w}px`})},[e.unref(Te).padTopPx>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mrp-spacer-top",style:e.normalizeStyle({height:`${e.unref(Te).padTopPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(Ht),H=>(e.openBlock(),e.createElementBlock("div",{key:H.index,class:"mrp-page-holder","data-page":H.index+1},null,8,Ui))),128)),e.unref(Te).padBottomPx>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:"mrp-spacer-bottom",style:e.normalizeStyle({height:`${e.unref(Te).padBottomPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0)],4)],4)),!e.unref(I)&&!l.value&&e.unref(x)&&F.value>0&&t.emptyState?(e.openBlock(),e.createBlock(en,{key:4,title:e.unref(xe).title??e.unref(q).empty,description:e.unref(xe).description??e.unref(q).emptyDescription},null,8,["title","description"])):e.createCommentVNode("",!0)],544),e.unref(ne).thumbnails&&f.value&&F.value>0?(e.openBlock(),e.createElementBlock("aside",{key:0,ref_key:"thumbsRef",ref:d,class:"mrp-thumbs",onScrollPassive:O[15]||(O[15]=(...H)=>e.unref(ye).onScroll&&e.unref(ye).onScroll(...H))},[e.unref(ye).windowRange.value.padTopPx>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mrp-thumb-spacer",style:e.normalizeStyle({height:`${e.unref(ye).windowRange.value.padTopPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(ye).visibleThumbs.value,H=>(e.openBlock(),e.createElementBlock("button",{key:H.index,class:e.normalizeClass(["mrp-thumb",{"mrp-thumb-active":H.index+1===c.value}]),type:"button","aria-label":`${e.unref(q).thumbnails} · ${e.unref(q).pageInfo.replace("{cur}",String(H.index+1)).replace("{total}",String(F.value))}`,"aria-current":H.index+1===c.value?"page":void 0,style:e.normalizeStyle({height:`${H.height+20}px`}),onClick:Oe=>ge(H.index+1)},[e.createElementVNode("span",{class:"mrp-thumb-box","data-thumb":H.index+1,style:e.normalizeStyle({height:`${H.height}px`})},null,12,Ji),e.createElementVNode("span",Xi,e.toDisplayString(H.index+1),1)],14,Gi))),128)),e.unref(ye).windowRange.value.padBottomPx>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:"mrp-thumb-spacer",style:e.normalizeStyle({height:`${e.unref(ye).windowRange.value.padBottomPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0)],544)):e.createCommentVNode("",!0)]),F.value>0?(e.openBlock(),e.createElementBlock("footer",Zi,[e.createElementVNode("div",Yi,[e.unref(V).navigation!==!1?(e.openBlock(),e.createBlock(Mr,{key:0,plan:e.unref(x),"current-page":c.value,messages:e.unref(q),busy:e.unref(I)||e.unref(z)||e.unref(J).saving.value,onGoto:ge},null,8,["plan","current-page","messages","busy"])):e.createCommentVNode("",!0),at.value&&e.unref(me)?(e.openBlock(),e.createElementBlock("button",{key:1,class:"mrp-calculation-toggle",type:"button","aria-label":ot.value.calculationTitle,onClick:qn},[O[16]||(O[16]=e.createElementVNode("span",{"aria-hidden":"true"},"∑",-1)),e.createTextVNode(e.toDisplayString(ot.value.calculationTitle),1),e.unref(lt).result.value?(e.openBlock(),e.createElementBlock("strong",_i,e.toDisplayString(e.unref(lt).result.value.formatted),1)):e.createCommentVNode("",!0)],8,Qi)):e.createCommentVNode("",!0)]),e.createVNode(Bt,{"page-count":F.value,"current-page":c.value,messages:e.unref(q),busy:e.unref(I)||e.unref(z)||e.unref(J).saving.value,onGoto:ge},null,8,["page-count","current-page","messages","busy"])])):e.createCommentVNode("",!0),e.createElementVNode("div",ec,[e.renderSlot(C.$slots,"default",{},void 0,!0)]),e.unref(Ne)?(e.openBlock(),e.createElementBlock("div",tc,[O[17]||(O[17]=e.createElementVNode("div",null,"mach-report debug",-1)),e.createElementVNode("div",null,"pages: "+e.toDisplayString(e.unref(Ne).pages)+" | window: ["+e.toDisplayString(e.unref(Ne).window)+"]",1),e.createElementVNode("div",null,"zoom: "+e.toDisplayString(e.unref(Ne).zoom)+" | load: "+e.toDisplayString(e.unref(Ne).loadMs),1),e.createElementVNode("div",null,"plan: "+e.toDisplayString(e.unref(Ne).planKB)+"KB",1)])):e.createCommentVNode("",!0)],6))}}),Dn=W._export_sfc(nc,[["__scopeId","data-v-343c63aa"]]),ac=Object.freeze(Object.defineProperty({__proto__:null,default:Dn},Symbol.toStringTag,{value:"Module"}));exports.PlanLoadError=Je;exports.REPORT_EXPORT_FORMATS=et;exports.REPORT_PREVIEW_TOOLS=xt;exports.ReportPagination=Bt;exports.ReportPreview=Dn;exports.ReportPreview$1=ac;exports.ReportPrintResourceError=pe;exports.ReportToolbar=bn;exports.ReportValidationPanel=xn;exports._sfc_main=kn;exports._sfc_main$1=wn;exports.buildPrintDocument=fn;exports.buildWordHtml=ya;exports.cloneReportSnapshot=de;exports.createDefaultPdfExporter=Sn;exports.createFetchRequest=da;exports.createPrintCalibrationPlan=dn;exports.createReportStoragePreferences=Ii;exports.joinReportIds=ua;exports.normalizeReportIds=St;exports.preparePrintResources=Nt;exports.printPlans=pn;exports.usePageWindow=cn;exports.usePrintExport=vn;exports.useZoom=un;