@agile-team/mach-report 0.9.0 → 0.9.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 +1,6 @@
1
- "use strict";const e=require("vue"),U=require("@agile-team/mach-report"),T=require("./plugin-9eBK7khj.cjs");function me(t,r,l={}){const n=l.pxPerMm??3.7795275590551185,a=l.gapPx??18,o=e.ref(0),s=e.ref(800),i=e.computed(()=>(t.value?.pages??[]).map(c=>c.pageHeightMm*n)),m=e.computed(()=>{const c=t.value?.pages??[];let f=0,p=0;for(const b of c)f+=b.pageHeightMm*n+a,p=Math.max(p,b.pageWidthMm*n);return{w:p,h:f}}),h=e.computed(()=>U.computePageWindow({pageHeightsPx:i.value,viewportHeightPx:s.value/r.value,scrollTopPx:o.value/r.value,overscan:1,gapPx:a})),g=e.computed(()=>{const c=t.value;if(!c)return[];const{start:f,end:p}=h.value;return p<f?[]:c.pages.slice(f,p+1).map((b,E)=>({page:b,index:f+E}))});function u(c,f){let p=0;return b=>{p||(p=requestAnimationFrame(()=>{if(p=0,o.value=b.scrollTop,s.value=b.clientHeight||800,f.value<=0)return;const E=b.querySelectorAll(".mrp-page-holder");if(!E.length)return;const B=b.getBoundingClientRect().top+56;let $=1;E.forEach(w=>{w.getBoundingClientRect().top<=B&&($=Number(w.dataset.page??1))}),c.value=Math.max(1,Math.min(f.value,$))}))}}return{contentSize:m,windowRange:h,visiblePages:g,makeScrollHandler:u,refreshViewport(c){c&&(s.value=c.clientHeight||800)}}}function fe(t){const r=e.ref(1),l=e.ref("fit");function n(){requestAnimationFrame(()=>{const o=t();!o||!o.viewport||(r.value=Math.min(1,Math.max(.3,(o.viewport.clientWidth-48)/Math.max(1,o.pageWidthPx))))})}function a(o){o==="fit"?(l.value="fit",n()):(l.value="raw",r.value=o/100)}return{zoom:r,zoomMode:l,applyFitZoom:n,setZoom:a}}const X=8;function Q(){return new Promise(t=>setTimeout(t,0))}function Z(t){return`p${Math.round(t.pageWidthMm)}x${Math.round(t.pageHeightMm)}`}function j(t){const r=new Map;t.pages.forEach(s=>{r.has(Z(s))||r.set(Z(s),s)});const a=`<!doctype html><html><head><meta charset="utf-8"><style>${`.mr-page{margin:0 auto;page-break-after:always;}
1
+ "use strict";const e=require("vue"),U=require("@agile-team/mach-report"),T=require("./plugin-Dh1exwdD.cjs");function pe(t,r,l={}){const n=l.pxPerMm??3.7795275590551185,a=l.gapPx??18,o=e.ref(0),s=e.ref(800),i=e.computed(()=>(t.value?.pages??[]).map(c=>c.pageHeightMm*n)),m=e.computed(()=>{const c=t.value?.pages??[];let p=0,f=0;for(const b of c)p+=b.pageHeightMm*n+a,f=Math.max(f,b.pageWidthMm*n);return{w:f,h:p}}),h=e.computed(()=>U.computePageWindow({pageHeightsPx:i.value,viewportHeightPx:s.value/r.value,scrollTopPx:o.value/r.value,overscan:1,gapPx:a})),g=e.computed(()=>{const c=t.value;if(!c)return[];const{start:p,end:f}=h.value;return f<p?[]:c.pages.slice(p,f+1).map((b,E)=>({page:b,index:p+E}))});function u(c,p){let f=0;return b=>{f||(f=requestAnimationFrame(()=>{if(f=0,o.value=b.scrollTop,s.value=b.clientHeight||800,p.value<=0)return;const E=b.querySelectorAll(".mrp-page-holder");if(!E.length)return;const B=b.getBoundingClientRect().top+56;let $=1;E.forEach(w=>{w.getBoundingClientRect().top<=B&&($=Number(w.dataset.page??1))}),c.value=Math.max(1,Math.min(p.value,$))}))}}return{contentSize:m,windowRange:h,visiblePages:g,makeScrollHandler:u,refreshViewport(c){c&&(s.value=c.clientHeight||800)}}}function fe(t){const r=e.ref(1),l=e.ref("fit");function n(){requestAnimationFrame(()=>{const o=t();!o||!o.viewport||(r.value=Math.min(1,Math.max(.3,(o.viewport.clientWidth-48)/Math.max(1,o.pageWidthPx))))})}function a(o){o==="fit"?(l.value="fit",n()):(l.value="raw",r.value=o/100)}return{zoom:r,zoomMode:l,applyFitZoom:n,setZoom:a}}const X=8;function Q(){return new Promise(t=>setTimeout(t,0))}function Z(t){return`p${Math.round(t.pageWidthMm)}x${Math.round(t.pageHeightMm)}`}function j(t){const r=new Map;t.pages.forEach(s=>{r.has(Z(s))||r.set(Z(s),s)});const a=`<!doctype html><html><head><meta charset="utf-8"><style>${`.mr-page{margin:0 auto;page-break-after:always;}
2
2
  .mr-page tr{break-inside:avoid;page-break-inside:avoid;}
3
3
  .mr-comp{break-inside:avoid;page-break-inside:avoid;}
4
4
  ${[...r.values()].map(s=>`@page ${Z(s)}{size:${Math.round(s.pageWidthMm)}mm ${Math.round(s.pageHeightMm)}mm;margin:0;}`).join(`
5
5
  `)}
6
- body{margin:0;background:#fff;}`}</style></head><body>`,o=t.pages.map(s=>{const i=U.renderPage(s,96,{},document);return i.style.page=Z(s),i.outerHTML});return{head:a,pageChunks:o}}async function Ie(t,r={}){const l={pages:t.flatMap(i=>i.pages)};if(l.pages.length===0)return;const{head:n,pageChunks:a}=j(l),o=document.createElement("iframe");o.style.cssText="position:fixed;right:0;bottom:0;width:0;height:0;border:0;visibility:hidden;",document.body.appendChild(o);let s=!1;try{const i=o.contentDocument;i.open(),i.write(n);for(let m=0;m<a.length;m++)i.write(a[m]),m%X===X-1&&(r.onProgress?.(m+1,a.length),await Q());i.write("</body></html>"),i.close(),await Q(),r.onProgress?.(a.length,a.length),s=!0,o.contentWindow?.focus(),o.contentWindow?.print()}catch(i){r.onError?.(i instanceof Error?`批量打印失败: ${i.message}`:"批量打印失败")}finally{s?setTimeout(()=>o.remove(),6e4):o.remove()}}function pe(t,r){let l=null,n=!1,a=null;function o(){l?.remove(),l=null}function s(u,c){const f=URL.createObjectURL(u),p=document.createElement("a");p.href=f,p.download=c,p.click(),setTimeout(()=>URL.revokeObjectURL(f),1e4)}async function i(){if(n)return;const u=t.value;if(!u||u.pages.length===0)return;n=!0,o();const{head:c,pageChunks:f}=j(u);l=document.createElement("iframe"),l.style.cssText="position:fixed;right:0;bottom:0;width:0;height:0;border:0;visibility:hidden;",document.body.appendChild(l);const p=l;try{const b=p.contentDocument;b.open(),b.write(c);for(let E=0;E<f.length;E++)if(b.write(f[E]),E%X===X-1&&await Q(),p!==l)return;b.write("</body></html>"),b.close(),await Q(),p.contentWindow?.focus(),p.contentWindow?.print()}catch{r.onError("调用打印失败,请改用导出 PDF")}finally{n=!1}}async function m(){if(a)return a;const u=t.value;if(!(!u||u.pages.length===0))return a=(async()=>{try{const c=await r.getPdfExporter()(u);s(new Blob([c],{type:"application/pdf"}),"mach-report.pdf")}catch(c){r.onError(c instanceof Error?`PDF 导出失败: ${c.message}`:"PDF 导出失败")}finally{a=null}})(),a}function h(u){const c=t.value;if(!c||c.pages.length===0)return;if(u==="pdf"){m();return}const{head:f,pageChunks:p}=j(c),b=`${f}${p.join("")}</body></html>`;s(new Blob([b],{type:"text/html;charset=utf-8"}),`mach-report.${u==="html"?"html":u}`)}function g(){const u=t.value;if(!u||u.pages.length===0)return;const{head:c,pageChunks:f}=j(u),p=`${c}${f.join("")}</body></html>`,b=new Blob([p],{type:"text/html;charset=utf-8"}),E=URL.createObjectURL(b),B=window.open(E,"_blank");if(!B){r.onError("浏览器拦截了弹窗,请允许弹窗后重试"),URL.revokeObjectURL(E);return}setTimeout(()=>B.print(),400),setTimeout(()=>URL.revokeObjectURL(E),1e4)}return{print:i,exportAs:h,openPdfWindow:g,releasePrintFrame:o}}const ge="mrp-hit";function Ve(t){t.querySelectorAll(`mark.${ge}`).forEach(l=>{const n=l.parentNode;if(n){for(;l.firstChild;)n.insertBefore(l.firstChild,l);l.remove(),n.normalize()}})}function Le(t,r){const l=r.trim();if(!l)return 0;const n=l.toLowerCase(),a=document.createTreeWalker(t,NodeFilter.SHOW_TEXT,{acceptNode(i){const m=i.parentElement;return!m||m.closest("mark")||/^(SCRIPT|STYLE)$/.test(m.tagName)?NodeFilter.FILTER_REJECT:(i.nodeValue??"").toLowerCase().includes(n)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT}}),o=[];for(let i=a.nextNode();i;i=a.nextNode())o.push(i);let s=0;for(const i of o){const m=i.nodeValue??"",h=m.toLowerCase(),g=i.parentElement;if(!g)continue;const u=document.createDocumentFragment();let c=0,f=h.indexOf(n);for(;f>=0;){f>c&&u.appendChild(document.createTextNode(m.slice(c,f)));const p=document.createElement("mark");p.className=ge,p.textContent=m.slice(f,f+l.length),u.appendChild(p),s++,c=f+l.length,f=h.indexOf(n,c)}c<m.length&&u.appendChild(document.createTextNode(m.slice(c))),g.replaceChild(u,i)}return s}function ce(t,r){let l=0,n=t.toLowerCase().indexOf(r);for(;n>=0;)l++,n=t.toLowerCase().indexOf(r,n+r.length);return l}function Oe(t){const{plan:r,gotoPage:l,highlight:n,clearHighlights:a}=t,o=t.debounceMs??200,s=e.ref(!1),i=e.ref(""),m=e.ref(""),h=e.ref(0);let g=null;const u=e.computed(()=>{const w=i.value.trim().toLowerCase(),C=r.value;if(!w||!C)return[];const R=[];return C.pages.forEach((F,K)=>{for(const N of F.components)if(N.grid){for(const D of N.grid.cells??[])for(const O of D??[])if(typeof O?.text=="string")for(let G=0;G<ce(O.text,w);G++)R.push(K)}else if(N.kind==="text"&&typeof N.text=="string")for(let D=0;D<ce(N.text,w);D++)R.push(K)}),R}),c=e.computed(()=>u.value.length);function f(w){if(m.value=w,g&&clearTimeout(g),w.trim()===""){g=null,i.value="",h.value=0;return}g=setTimeout(()=>{g=null,i.value=m.value,h.value=0;const C=u.value[0];C!=null&&l(C+1)},o)}function p(w){const C=u.value.length;C!==0&&(h.value=(h.value+w+C)%C,l(u.value[h.value]+1))}function b(){s.value=!s.value}function E(w){const C=i.value.trim();C&&n(w,C)}function B(w){a(w)}function $(){m.value="",i.value="",h.value=0,g&&clearTimeout(g),g=null}return{visible:s,query:i,matchIndex:h,matchCount:c,toggle:b,onInput:f,onNav:p,apply:E,clear:B,reset:$}}function He(t,r){const l=e.computed(()=>{if(t.value)return!0;if(typeof location>"u")return!1;try{return new URLSearchParams(location.search).get("mrp-debug")==="1"}catch{return!1}}),n=e.computed(()=>!l.value||!r.plan.value?0:Math.round(JSON.stringify(r.plan.value).length/1024)),a=e.computed(()=>!l.value||!r.plan.value?null:{pages:r.pageCount.value,window:`${r.windowRange.value.start}-${r.windowRange.value.end}`,zoom:`${Math.round(r.zoom.value*100)}%`,loadMs:`${r.loadMs.value}ms`,planKB:n.value});return{enabled:l,debugStats:a}}function We(t,r){const{thumbsRoot:l,visible:n,renderThumbCanvas:a}=r;let o=null;function s(h,g){if(!t.value||h.childElementCount>0)return;const u=a(g);u&&(u.style.width="100%",u.style.height="100%",u.style.display="block",h.appendChild(u))}return{schedule:()=>{!n.value||!t.value||!l.value||typeof IntersectionObserver>"u"||(o?.disconnect(),o=new IntersectionObserver(h=>{for(const g of h){if(!g.isIntersecting)continue;const u=g.target;s(u,Number(u.dataset.thumb??1)-1),o?.unobserve(u)}},{root:l.value,rootMargin:"200px"}),l.value.querySelectorAll("[data-thumb]").forEach(h=>{o.observe(h)}))},destroy:()=>{o?.disconnect(),o=null}}}function Ae(){const t=e.shallowRef(0);return{loadMs:t,start(){return typeof performance<"u"?performance.now():0},end(r){t.value=r?Math.round(performance.now()-r):0}}}const Ue={class:"mrp-toolbar"},je={class:"mrp-title"},qe=["disabled"],Ke={class:"mrp-pageinfo"},Ge=["disabled"],Ye={key:1,class:"mrp-search"},Ze=["placeholder","value"],Je={key:0,class:"mrp-search-count"},Xe=["disabled"],Qe=["disabled"],_e=e.defineComponent({__name:"ReportToolbar",props:{pageCount:{},currentPage:{},zoomMode:{},zoom:{},showExport:{type:Boolean},showPrint:{type:Boolean},showPdfWindow:{type:Boolean},messages:{},search:{},thumbsVisible:{type:Boolean}},emits:["goto","zoom","export","print","pdf-window","search-input","search-nav","search-toggle","thumbs-toggle"],setup(t){const r=t,l=e.ref(null);e.watch(()=>r.search.visible,a=>{a&&e.nextTick(()=>l.value?.focus())});function n(a,o,s){return a.replace("{cur}",String(o)).replace("{total}",String(s))}return(a,o)=>(e.openBlock(),e.createElementBlock("div",Ue,[e.createElementVNode("span",je,e.toDisplayString(t.messages.title),1),t.pageCount>0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("button",{class:"mrp-nav",type:"button",disabled:t.currentPage<=1,onClick:o[0]||(o[0]=s=>a.$emit("goto",t.currentPage-1))},e.toDisplayString(t.messages.prevPage),9,qe),e.createElementVNode("span",Ke,e.toDisplayString(n(t.messages.pageInfo,t.currentPage,t.pageCount)),1),e.createElementVNode("button",{class:"mrp-nav",type:"button",disabled:t.currentPage>=t.pageCount,onClick:o[1]||(o[1]=s=>a.$emit("goto",t.currentPage+1))},e.toDisplayString(t.messages.nextPage),9,Ge)],64)):e.createCommentVNode("",!0),o[14]||(o[14]=e.createElementVNode("span",{class:"mrp-spacer"},null,-1)),t.search.visible?(e.openBlock(),e.createElementBlock("div",Ye,[e.createElementVNode("input",{ref_key:"searchInputRef",ref:l,class:"mrp-search-input",type:"text",placeholder:t.messages.searchPlaceholder,value:t.search.query,onInput:o[2]||(o[2]=s=>a.$emit("search-input",s.target.value))},null,40,Ze),t.search.query?(e.openBlock(),e.createElementBlock("span",Je,e.toDisplayString(n(t.messages.matchInfo,t.search.matchIndex+1,t.search.matchCount)),1)):e.createCommentVNode("",!0),e.createElementVNode("button",{class:"mrp-nav",type:"button",disabled:t.search.matchCount===0,onClick:o[3]||(o[3]=s=>a.$emit("search-nav",-1))},e.toDisplayString(t.messages.prevMatch),9,Xe),e.createElementVNode("button",{class:"mrp-nav",type:"button",disabled:t.search.matchCount===0,onClick:o[4]||(o[4]=s=>a.$emit("search-nav",1))},e.toDisplayString(t.messages.nextMatch),9,Qe)])):e.createCommentVNode("",!0),e.createElementVNode("button",{class:e.normalizeClass(["mrp-nav",{"mrp-active":t.search.visible}]),type:"button",title:"Ctrl+F",onClick:o[5]||(o[5]=s=>a.$emit("search-toggle"))}," 🔍 ",2),e.createElementVNode("button",{class:e.normalizeClass(["mrp-nav",{"mrp-active":t.thumbsVisible}]),type:"button",onClick:o[6]||(o[6]=s=>a.$emit("thumbs-toggle"))}," ▦ "+e.toDisplayString(t.messages.thumbnails),3),e.createElementVNode("button",{class:e.normalizeClass(["mrp-nav",{"mrp-active":t.zoomMode==="fit"}]),type:"button",onClick:o[7]||(o[7]=s=>a.$emit("zoom","fit"))},e.toDisplayString(t.messages.fitWidth),3),e.createElementVNode("button",{class:e.normalizeClass(["mrp-nav",{"mrp-active":t.zoomMode==="raw"&&Math.round(t.zoom*100)===100}]),type:"button",onClick:o[8]||(o[8]=s=>a.$emit("zoom",100))}," 100% ",2),e.createElementVNode("button",{class:e.normalizeClass(["mrp-nav",{"mrp-active":t.zoomMode==="raw"&&Math.round(t.zoom*100)===150}]),type:"button",onClick:o[9]||(o[9]=s=>a.$emit("zoom",150))}," 150% ",2),t.showExport?(e.openBlock(),e.createElementBlock("button",{key:2,class:"mrp-nav",type:"button",onClick:o[10]||(o[10]=s=>a.$emit("export","html"))},e.toDisplayString(t.messages.exportHtml),1)):e.createCommentVNode("",!0),t.showExport?(e.openBlock(),e.createElementBlock("button",{key:3,class:"mrp-nav",type:"button",onClick:o[11]||(o[11]=s=>a.$emit("export","pdf"))},e.toDisplayString(t.messages.exportPdf),1)):e.createCommentVNode("",!0),t.showPrint?(e.openBlock(),e.createElementBlock("button",{key:4,class:"mrp-nav",type:"button",onClick:o[12]||(o[12]=s=>a.$emit("print"))},e.toDisplayString(t.messages.print),1)):e.createCommentVNode("",!0),t.showPdfWindow?(e.openBlock(),e.createElementBlock("button",{key:5,class:"mrp-nav",type:"button",onClick:o[13]||(o[13]=s=>a.$emit("pdf-window"))},e.toDisplayString(t.messages.pdfWindow),1)):e.createCommentVNode("",!0)]))}}),he=(t,r)=>{const l=t.__vccOpts||t;for(const[n,a]of r)l[n]=a;return l},ve=he(_e,[["__scopeId","data-v-f50c26e8"]]),be={title:"报表预览",prevPage:"‹ 上一页",nextPage:"下一页 ›",pageInfo:"{cur} / {total}",fitWidth:"适宽",exportHtml:"导出 HTML",exportPdf:"导出 PDF",print:"打印",pdfWindow:"PDF 窗口",loading:"报表渲染中…",empty:"暂无预览数据",errorPrefix:"",retry:"重试",searchPlaceholder:"搜索报表内容",matchInfo:"{cur}/{total}",prevMatch:"‹",nextMatch:"›",thumbnails:"缩略图"},we={shellBg:"#525659",shellFg:"#e8e8e8",toolbarBg:"#323639",toolbarBorder:"#22252a",toolbarFg:"#e8e8e8",btnFg:"#cfcfcf",btnBorder:"#4a4d52",btnHoverBg:"#414549",btnHoverFg:"#ffffff",btnActiveBg:"#2d5fb8"};function et(t){return t}function tt(t){return t}const L={showExport:!0,showPrint:!0,showPdfWindow:!0,gapPx:18,pdfFontUrl:"/simhei.ttf",logger:console},ot={warn:()=>{},info:()=>{}};function ye(t,r){const l=r?t?.presets?.[r]:t?.defaultPreset?t?.presets?.[t.defaultPreset]:void 0,n={...t?.defaults,...l};return{showExport:n.showExport??L.showExport,showPrint:n.showPrint??L.showPrint,showPdfWindow:n.showPdfWindow??L.showPdfWindow,gapPx:n.gapPx??L.gapPx,pdfFontUrl:n.pdfFontUrl??L.pdfFontUrl,theme:{...we,...n.theme},messages:{...be,...n.messages},logger:n.logger??L.logger}}function Ee(t){const r={};return t.shellBg!=null&&(r["--mrp-shell-bg"]=t.shellBg),t.shellFg!=null&&(r["--mrp-shell-fg"]=t.shellFg),t.toolbarBg!=null&&(r["--mrp-toolbar-bg"]=t.toolbarBg),t.toolbarBorder!=null&&(r["--mrp-toolbar-border"]=t.toolbarBorder),t.toolbarFg!=null&&(r["--mrp-toolbar-fg"]=t.toolbarFg),t.btnFg!=null&&(r["--mrp-btn-fg"]=t.btnFg),t.btnBorder!=null&&(r["--mrp-btn-border"]=t.btnBorder),t.btnHoverBg!=null&&(r["--mrp-btn-hover-bg"]=t.btnHoverBg),t.btnHoverFg!=null&&(r["--mrp-btn-hover-fg"]=t.btnHoverFg),t.btnActiveBg!=null&&(r["--mrp-btn-active-bg"]=t.btnActiveBg),r}function nt(t){const r=e.inject(T.MACH_REPORT_CONFIG_KEY,null),l=e.computed(()=>{const n=r?.value??null,a="defaults"in t&&"presets"in t?t:{defaults:t,presets:{}};return n?{defaults:{...n.defaults,...a.defaults},presets:{...n.presets,...a.presets},defaultPreset:a.defaultPreset??n.defaultPreset}:a});e.provide(T.MACH_REPORT_CONFIG_KEY,l)}function Pe(){return e.inject(T.MACH_REPORT_CONFIG_KEY,e.computed(()=>null))}class q extends Error{constructor(r,l,n){super(l),this.name="MachReportError",this.code=r,this.cause=n}}function ke(t){return t instanceof q?{code:t.code,cause:t.cause}:{code:"render",cause:t}}const rt={class:"mrp-main"},at={key:0,class:"mrp-state"},lt={key:1,class:"mrp-state mrp-error"},st={key:2,class:"mrp-state"},it=["data-page"],ut=["onClick"],ct=["data-thumb"],dt={class:"mrp-thumb-no"},mt={class:"mrp-overlay"},ft={key:0,class:"mrp-debug","aria-hidden":"true"},J=96/25.4,de="mach-report:ui",pt=e.defineComponent({__name:"ReportPreview",props:{tempId:{type:[String,Array],default:null},furnitureTempId:{type:String,default:""},params:{type:Object,default:()=>({})},height:{type:String,default:"100vh"},autoLoad:{type:Boolean,default:!0},showExport:{type:Boolean,default:void 0},showPrint:{type:Boolean,default:void 0},showPdfWindow:{type:Boolean,default:void 0},gapPx:{type:Number,default:void 0},messages:{type:Object,default:void 0},preset:{type:String,default:void 0},debug:{type:Boolean,default:!1},fetcher:{type:Function,default:null}},emits:["loaded","error"],setup(t,{expose:r,emit:l}){e.useCssVars(d=>({v6094bc50:p.value+"px"}));const n=t,a=l,o=e.shallowRef(null),s=e.ref(!1),i=e.ref(""),m=e.ref(1),h=e.ref(null),g=e.ref(null),u=e.ref(null),c=e.ref(!1),f=Ae(),p=e.computed(()=>Math.max(0,O.value)),b=e.inject(T.MACH_REPORT_FETCHER_KEY,null),B=e.inject(T.MACH_REPORT_PDF_EXPORTER_KEY,null)??T.createDefaultPdfExporter({fontUrl:"/simhei.ttf"}),$=e.computed(()=>T.normalizeTempIds(n.tempId)),w=e.computed(()=>o.value?.pages.length??0),C=Pe(),R=e.computed(()=>ye(C.value,n.preset)),F=e.computed(()=>({...R.value.messages,...n.messages})),K=e.computed(()=>n.showExport??R.value.showExport),N=e.computed(()=>n.showPrint??R.value.showPrint),D=e.computed(()=>n.showPdfWindow??R.value.showPdfWindow),O=e.computed(()=>n.gapPx??R.value.gapPx),G=e.computed(()=>({height:n.height,...Ee(R.value.theme)})),{zoom:M,zoomMode:z,applyFitZoom:le,setZoom:_}=fe(()=>({viewport:g.value,pageWidthPx:(o.value?.pages[0]?.pageWidthMm??210)*J})),xe=me(o,M,{pxPerMm:J,gapPx:O.value}),{contentSize:ee,windowRange:H,visiblePages:Me,makeScrollHandler:Re,refreshViewport:se}=xe,Se=Re(m,w);function te(d){z.value="raw",M.value=Math.min(3,Math.max(.3,d))}function oe(){o.value=null,m.value=1,x.reset()}let Y=0;async function I(){const d=++Y,y=n.fetcher??b;if($.value.length===0){i.value="缺少报表模板 ID",oe(),a("error",i.value,{code:"param"});return}if(!y){i.value="未提供渲染数据源 fetcher",oe(),a("error",i.value,{code:"config"});return}s.value=!0,i.value="",oe();const P=f.start();try{const v=await y({tempIds:$.value,furnitureTempId:n.furnitureTempId||void 0,params:{...n.params}});if(d!==Y)return;const k=U.validateRenderPlan(v);if(!k.ok){const W=k.errors.slice(0,3).map(A=>`${A.path}: ${A.message}`).join("; ");throw new q("validate",`渲染计划校验失败(${k.errors.length} 处): ${W}`)}k.warnings.length>0&&R.value.logger.warn("[mach-report] 渲染计划告警:",k.warnings),o.value=v,m.value=1,f.end(P),g.value&&(g.value.scrollTop=0),z.value==="fit"&&le(),a("loaded",v.pages.length)}catch(v){if(d!==Y)return;const k=v instanceof q?v:new q("fetch",v instanceof Error?v.message:"预览加载失败",v);i.value=k.message,a("error",k.message,ke(k))}finally{d===Y&&(s.value=!1)}}function S(d){if(w.value<=0)return;const y=Math.max(1,Math.min(w.value,d));m.value=y;const P=g.value;if(!P)return;let v=0;for(let k=0;k<y-1;k++)v+=(o.value?.pages[k]?.pageHeightMm??0)*J+p.value;P.scrollTop=v*M.value}const{print:ne,exportAs:re,openPdfWindow:ae,releasePrintFrame:Be}=pe(o,{getPdfExporter:()=>B,onError:d=>a("error",d,{code:"print"})}),Te={reload:I,print:ne,exportAs:re,openPdfWindow:ae,gotoPage:S};e.provide(T.MACH_REPORT_CONTROLLER_KEY,Te);const x=Oe({plan:o,gotoPage:S,highlight:Le,clearHighlights:Ve});function $e(d){d.ctrlKey&&(d.preventDefault(),te(M.value*(d.deltaY<0?1.1:1/1.1)))}function Ne(d){if((d.ctrlKey||d.metaKey)&&d.key.toLowerCase()==="f"){d.preventDefault(),x.visible.value||x.toggle();return}switch(d.key){case"PageDown":d.preventDefault(),S(m.value+1);break;case"PageUp":d.preventDefault(),S(m.value-1);break;case"Home":d.preventDefault(),S(1);break;case"End":d.preventDefault(),S(w.value);break;case"+":case"=":d.preventDefault(),te(M.value*1.1);break;case"-":d.preventDefault(),te(M.value/1.1);break}}function Fe(){try{localStorage.setItem(de,JSON.stringify({zoomMode:z.value==="fit"?"fit":Math.round(M.value*100)}))}catch{}}e.watch([z,M],Fe),e.watchEffect(()=>{const d=o.value;if(!d)return;const y=h.value;if(!y)return;y.querySelectorAll(".mrp-page-holder").forEach(v=>{const k=Number(v.dataset.page??0)-1,W=d.pages[k];if(!W||v.childElementCount>0){v.firstElementChild&&x.apply(v.firstElementChild);return}v.style.width=`${W.pageWidthMm*J}px`;const A=U.renderPage(W,96,{},document);x.apply(A),v.appendChild(A)})},{flush:"post"}),e.watch(()=>x.query.value,d=>{d||h.value?.querySelectorAll(".mrp-page-holder").forEach(y=>{x.clear(y)})});const ie=We(o,{thumbsRoot:u,visible:c,renderThumbCanvas:d=>{try{const{canvases:y}=U.renderPlanToCanvas(o.value,{start:d,end:d,dpr:.2});return y[0]??null}catch{return null}}});e.watchEffect(()=>{ie.schedule()},{flush:"post"});const De=e.computed(()=>n.debug),{debugStats:V}=He(De,{plan:o,pageCount:w,windowRange:H,zoom:M,loadMs:f.loadMs});function ue(){se(g.value),z.value==="fit"&&le()}function ze(){try{const d=JSON.parse(localStorage.getItem(de)??"{}");d.zoomMode==="fit"?_("fit"):typeof d.zoomMode=="number"&&_(d.zoomMode)}catch{}}return e.onMounted(()=>{window.addEventListener("resize",ue),se(g.value),ze(),n.autoLoad&&I()}),e.onUnmounted(()=>{window.removeEventListener("resize",ue),ie.destroy(),Be()}),e.watch(()=>[n.tempId,n.furnitureTempId,JSON.stringify(n.params)],()=>{n.autoLoad&&I()}),e.watch(()=>n.fetcher??b,()=>{n.autoLoad&&I()}),r({reload:I,print:ne,exportAs:re,openPdfWindow:ae,gotoPage:S}),(d,y)=>(e.openBlock(),e.createElementBlock("div",{class:"mach-report-preview",style:e.normalizeStyle(G.value)},[e.createVNode(ve,{"page-count":w.value,"current-page":m.value,"zoom-mode":e.unref(z),zoom:e.unref(M),"show-export":K.value,"show-print":N.value,"show-pdf-window":D.value,messages:F.value,search:{visible:e.unref(x).visible.value,query:e.unref(x).query.value,matchIndex:e.unref(x).matchIndex.value,matchCount:e.unref(x).matchCount.value},"thumbs-visible":c.value,onGoto:S,onZoom:e.unref(_),onExport:y[0]||(y[0]=P=>e.unref(re)(P)),onPrint:e.unref(ne),onPdfWindow:e.unref(ae),onSearchInput:e.unref(x).onInput,onSearchNav:e.unref(x).onNav,onSearchToggle:e.unref(x).toggle,onThumbsToggle:y[1]||(y[1]=P=>c.value=!c.value)},null,8,["page-count","current-page","zoom-mode","zoom","show-export","show-print","show-pdf-window","messages","search","thumbs-visible","onZoom","onPrint","onPdfWindow","onSearchInput","onSearchNav","onSearchToggle"]),e.createElementVNode("div",rt,[e.createElementVNode("div",{ref_key:"viewportRef",ref:g,class:"mrp-body",tabindex:"0",onWheel:$e,onKeydown:Ne,onScrollPassive:y[2]||(y[2]=P=>e.unref(Se)(P.target))},[s.value?(e.openBlock(),e.createElementBlock("div",at,e.toDisplayString(F.value.loading),1)):i.value?(e.openBlock(),e.createElementBlock("div",lt,[e.createTextVNode(e.toDisplayString(i.value)+" ",1),e.createElementVNode("button",{class:"mrp-retry",type:"button",onClick:I},e.toDisplayString(F.value.retry),1)])):!o.value||w.value===0?(e.openBlock(),e.createElementBlock("div",st,e.toDisplayString(F.value.empty),1)):(e.openBlock(),e.createElementBlock("div",{key:3,class:"mrp-scale",style:e.normalizeStyle({width:`${e.unref(ee).w*e.unref(M)}px`,height:`${e.unref(ee).h*e.unref(M)}px`})},[e.createElementVNode("div",{ref_key:"containerRef",ref:h,class:"mrp-scale-inner",style:e.normalizeStyle({transform:`scale(${e.unref(M)})`,transformOrigin:"top left",width:`${e.unref(ee).w}px`})},[e.unref(H).padTopPx>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mrp-spacer-top",style:e.normalizeStyle({height:`${e.unref(H).padTopPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(Me),P=>(e.openBlock(),e.createElementBlock("div",{key:P.index,class:"mrp-page-holder","data-page":P.index+1},null,8,it))),128)),e.unref(H).padBottomPx>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:"mrp-spacer-bottom",style:e.normalizeStyle({height:`${e.unref(H).padBottomPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0)],4)],4))],544),c.value&&w.value>0?(e.openBlock(),e.createElementBlock("aside",{key:0,ref_key:"thumbsRef",ref:u,class:"mrp-thumbs"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value?.pages??[],(P,v)=>(e.openBlock(),e.createElementBlock("div",{key:v,class:e.normalizeClass(["mrp-thumb",{"mrp-thumb-active":v+1===m.value}]),onClick:k=>S(v+1)},[e.createElementVNode("div",{class:"mrp-thumb-box","data-thumb":v+1,style:e.normalizeStyle({height:`${Math.round(P.pageHeightMm/P.pageWidthMm*116)}px`})},null,12,ct),e.createElementVNode("span",dt,e.toDisplayString(v+1),1)],10,ut))),128))],512)):e.createCommentVNode("",!0)]),e.createElementVNode("div",mt,[e.renderSlot(d.$slots,"default",{},void 0,!0)]),e.unref(V)?(e.openBlock(),e.createElementBlock("div",ft,[y[3]||(y[3]=e.createElementVNode("div",null,"mach-report debug",-1)),e.createElementVNode("div",null,"pages: "+e.toDisplayString(e.unref(V).pages)+" | window: ["+e.toDisplayString(e.unref(V).window)+"]",1),e.createElementVNode("div",null,"zoom: "+e.toDisplayString(e.unref(V).zoom)+" | load: "+e.toDisplayString(e.unref(V).loadMs),1),e.createElementVNode("div",null,"plan: "+e.toDisplayString(e.unref(V).planKB)+"KB",1)])):e.createCommentVNode("",!0)],4))}}),Ce=he(pt,[["__scopeId","data-v-02570f40"]]),gt=Object.freeze(Object.defineProperty({__proto__:null,default:Ce},Symbol.toStringTag,{value:"Module"}));exports.DEFAULT_MESSAGES=be;exports.DEFAULT_THEME=we;exports.MachReportError=q;exports.ReportPreview=Ce;exports.ReportPreview$1=gt;exports.ReportToolbar=ve;exports.SILENT_LOGGER=ot;exports.buildPrintDocument=j;exports.defineMachReportConfig=et;exports.defineMachReportPreset=tt;exports.printPlans=Ie;exports.provideMachReportConfig=nt;exports.resolveConfig=ye;exports.themeToCssVars=Ee;exports.toErrorDetail=ke;exports.useMachReportConfig=Pe;exports.usePageWindow=me;exports.usePrintExport=pe;exports.useZoom=fe;
6
+ body{margin:0;background:#fff;}`}</style></head><body>`,o=t.pages.map(s=>{const i=U.renderPage(s,96,{},document);return i.style.page=Z(s),i.outerHTML});return{head:a,pageChunks:o}}async function Ve(t,r={}){const l={pages:t.flatMap(i=>i.pages)};if(l.pages.length===0)return;const{head:n,pageChunks:a}=j(l),o=document.createElement("iframe");o.style.cssText="position:fixed;right:0;bottom:0;width:0;height:0;border:0;visibility:hidden;",document.body.appendChild(o);let s=!1;try{const i=o.contentDocument;i.open(),i.write(n);for(let m=0;m<a.length;m++)i.write(a[m]),m%X===X-1&&(r.onProgress?.(m+1,a.length),await Q());i.write("</body></html>"),i.close(),await Q(),r.onProgress?.(a.length,a.length),s=!0,o.contentWindow?.focus(),o.contentWindow?.print()}catch(i){r.onError?.(i instanceof Error?`批量打印失败: ${i.message}`:"批量打印失败")}finally{s?setTimeout(()=>o.remove(),6e4):o.remove()}}function ge(t,r){let l=null,n=!1,a=null;function o(){l?.remove(),l=null}function s(u,c){const p=URL.createObjectURL(u),f=document.createElement("a");f.href=p,f.download=c,f.click(),setTimeout(()=>URL.revokeObjectURL(p),1e4)}async function i(){if(n)return;const u=t.value;if(!u||u.pages.length===0)return;n=!0,o();const{head:c,pageChunks:p}=j(u);l=document.createElement("iframe"),l.style.cssText="position:fixed;right:0;bottom:0;width:0;height:0;border:0;visibility:hidden;",document.body.appendChild(l);const f=l;try{const b=f.contentDocument;b.open(),b.write(c);for(let E=0;E<p.length;E++)if(b.write(p[E]),E%X===X-1&&await Q(),f!==l)return;b.write("</body></html>"),b.close(),await Q(),f.contentWindow?.focus(),f.contentWindow?.print()}catch{r.onError("调用打印失败,请改用导出 PDF")}finally{n=!1}}async function m(){if(a)return a;const u=t.value;if(!(!u||u.pages.length===0))return a=(async()=>{try{const c=await r.getPdfExporter()(u);s(new Blob([c],{type:"application/pdf"}),"mach-report.pdf")}catch(c){r.onError(c instanceof Error?`PDF 导出失败: ${c.message}`:"PDF 导出失败")}finally{a=null}})(),a}function h(u){const c=t.value;if(!c||c.pages.length===0)return;if(u==="pdf"){m();return}const{head:p,pageChunks:f}=j(c),b=`${p}${f.join("")}</body></html>`;s(new Blob([b],{type:"text/html;charset=utf-8"}),`mach-report.${u==="html"?"html":u}`)}function g(){const u=t.value;if(!u||u.pages.length===0)return;const{head:c,pageChunks:p}=j(u),f=`${c}${p.join("")}</body></html>`,b=new Blob([f],{type:"text/html;charset=utf-8"}),E=URL.createObjectURL(b),B=window.open(E,"_blank");if(!B){r.onError("浏览器拦截了弹窗,请允许弹窗后重试"),URL.revokeObjectURL(E);return}setTimeout(()=>B.print(),400),setTimeout(()=>URL.revokeObjectURL(E),1e4)}return{print:i,exportAs:h,openPdfWindow:g,releasePrintFrame:o}}const he="mrp-hit";function Le(t){t.querySelectorAll(`mark.${he}`).forEach(l=>{const n=l.parentNode;if(n){for(;l.firstChild;)n.insertBefore(l.firstChild,l);l.remove(),n.normalize()}})}function Oe(t,r){const l=r.trim();if(!l)return 0;const n=l.toLowerCase(),a=document.createTreeWalker(t,NodeFilter.SHOW_TEXT,{acceptNode(i){const m=i.parentElement;return!m||m.closest("mark")||/^(SCRIPT|STYLE)$/.test(m.tagName)?NodeFilter.FILTER_REJECT:(i.nodeValue??"").toLowerCase().includes(n)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT}}),o=[];for(let i=a.nextNode();i;i=a.nextNode())o.push(i);let s=0;for(const i of o){const m=i.nodeValue??"",h=m.toLowerCase(),g=i.parentElement;if(!g)continue;const u=document.createDocumentFragment();let c=0,p=h.indexOf(n);for(;p>=0;){p>c&&u.appendChild(document.createTextNode(m.slice(c,p)));const f=document.createElement("mark");f.className=he,f.textContent=m.slice(p,p+l.length),u.appendChild(f),s++,c=p+l.length,p=h.indexOf(n,c)}c<m.length&&u.appendChild(document.createTextNode(m.slice(c))),g.replaceChild(u,i)}return s}function de(t,r){let l=0,n=t.toLowerCase().indexOf(r);for(;n>=0;)l++,n=t.toLowerCase().indexOf(r,n+r.length);return l}function He(t){const{plan:r,gotoPage:l,highlight:n,clearHighlights:a}=t,o=t.debounceMs??200,s=e.ref(!1),i=e.ref(""),m=e.ref(""),h=e.ref(0);let g=null;const u=e.computed(()=>{const w=i.value.trim().toLowerCase(),x=r.value;if(!w||!x)return[];const R=[];return x.pages.forEach((F,K)=>{for(const N of F.components)if(N.grid){for(const D of N.grid.cells??[])for(const O of D??[])if(typeof O?.text=="string")for(let G=0;G<de(O.text,w);G++)R.push(K)}else if(N.kind==="text"&&typeof N.text=="string")for(let D=0;D<de(N.text,w);D++)R.push(K)}),R}),c=e.computed(()=>u.value.length);function p(w){if(m.value=w,g&&clearTimeout(g),w.trim()===""){g=null,i.value="",h.value=0;return}g=setTimeout(()=>{g=null,i.value=m.value,h.value=0;const x=u.value[0];x!=null&&l(x+1)},o)}function f(w){const x=u.value.length;x!==0&&(h.value=(h.value+w+x)%x,l(u.value[h.value]+1))}function b(){s.value=!s.value}function E(w){const x=i.value.trim();x&&n(w,x)}function B(w){a(w)}function $(){m.value="",i.value="",h.value=0,g&&clearTimeout(g),g=null}return{visible:s,query:i,matchIndex:h,matchCount:c,toggle:b,onInput:p,onNav:f,apply:E,clear:B,reset:$}}function We(t,r){const l=e.computed(()=>{if(t.value)return!0;if(typeof location>"u")return!1;try{return new URLSearchParams(location.search).get("mrp-debug")==="1"}catch{return!1}}),n=e.computed(()=>!l.value||!r.plan.value?0:Math.round(JSON.stringify(r.plan.value).length/1024)),a=e.computed(()=>!l.value||!r.plan.value?null:{pages:r.pageCount.value,window:`${r.windowRange.value.start}-${r.windowRange.value.end}`,zoom:`${Math.round(r.zoom.value*100)}%`,loadMs:`${r.loadMs.value}ms`,planKB:n.value});return{enabled:l,debugStats:a}}function Ae(t,r){const{thumbsRoot:l,visible:n,renderThumbCanvas:a}=r;let o=null;function s(h,g){if(!t.value||h.childElementCount>0)return;const u=a(g);u&&(u.style.width="100%",u.style.height="100%",u.style.display="block",h.appendChild(u))}return{schedule:()=>{!n.value||!t.value||!l.value||typeof IntersectionObserver>"u"||(o?.disconnect(),o=new IntersectionObserver(h=>{for(const g of h){if(!g.isIntersecting)continue;const u=g.target;s(u,Number(u.dataset.thumb??1)-1),o?.unobserve(u)}},{root:l.value,rootMargin:"200px"}),l.value.querySelectorAll("[data-thumb]").forEach(h=>{o.observe(h)}))},destroy:()=>{o?.disconnect(),o=null}}}function Ue(){const t=e.shallowRef(0);return{loadMs:t,start(){return typeof performance<"u"?performance.now():0},end(r){t.value=r?Math.round(performance.now()-r):0}}}const je={class:"mrp-toolbar"},qe={class:"mrp-title"},Ke=["disabled"],Ge={class:"mrp-pageinfo"},Ye=["disabled"],Ze={key:1,class:"mrp-search"},Je=["placeholder","value"],Xe={key:0,class:"mrp-search-count"},Qe=["disabled"],_e=["disabled"],et=e.defineComponent({__name:"ReportToolbar",props:{pageCount:{},currentPage:{},zoomMode:{},zoom:{},showExport:{type:Boolean},showPrint:{type:Boolean},showPdfWindow:{type:Boolean},messages:{},search:{},thumbsVisible:{type:Boolean}},emits:["goto","zoom","export","print","pdf-window","search-input","search-nav","search-toggle","thumbs-toggle"],setup(t){const r=t,l=e.ref(null);e.watch(()=>r.search.visible,a=>{a&&e.nextTick(()=>l.value?.focus())});function n(a,o,s){return a.replace("{cur}",String(o)).replace("{total}",String(s))}return(a,o)=>(e.openBlock(),e.createElementBlock("div",je,[e.createElementVNode("span",qe,e.toDisplayString(t.messages.title),1),t.pageCount>0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("button",{class:"mrp-nav",type:"button",disabled:t.currentPage<=1,onClick:o[0]||(o[0]=s=>a.$emit("goto",t.currentPage-1))},e.toDisplayString(t.messages.prevPage),9,Ke),e.createElementVNode("span",Ge,e.toDisplayString(n(t.messages.pageInfo,t.currentPage,t.pageCount)),1),e.createElementVNode("button",{class:"mrp-nav",type:"button",disabled:t.currentPage>=t.pageCount,onClick:o[1]||(o[1]=s=>a.$emit("goto",t.currentPage+1))},e.toDisplayString(t.messages.nextPage),9,Ye)],64)):e.createCommentVNode("",!0),o[14]||(o[14]=e.createElementVNode("span",{class:"mrp-spacer"},null,-1)),t.search.visible?(e.openBlock(),e.createElementBlock("div",Ze,[e.createElementVNode("input",{ref_key:"searchInputRef",ref:l,class:"mrp-search-input",type:"text",placeholder:t.messages.searchPlaceholder,value:t.search.query,onInput:o[2]||(o[2]=s=>a.$emit("search-input",s.target.value))},null,40,Je),t.search.query?(e.openBlock(),e.createElementBlock("span",Xe,e.toDisplayString(n(t.messages.matchInfo,t.search.matchIndex+1,t.search.matchCount)),1)):e.createCommentVNode("",!0),e.createElementVNode("button",{class:"mrp-nav",type:"button",disabled:t.search.matchCount===0,onClick:o[3]||(o[3]=s=>a.$emit("search-nav",-1))},e.toDisplayString(t.messages.prevMatch),9,Qe),e.createElementVNode("button",{class:"mrp-nav",type:"button",disabled:t.search.matchCount===0,onClick:o[4]||(o[4]=s=>a.$emit("search-nav",1))},e.toDisplayString(t.messages.nextMatch),9,_e)])):e.createCommentVNode("",!0),e.createElementVNode("button",{class:e.normalizeClass(["mrp-nav",{"mrp-active":t.search.visible}]),type:"button",title:"Ctrl+F",onClick:o[5]||(o[5]=s=>a.$emit("search-toggle"))}," 🔍 ",2),e.createElementVNode("button",{class:e.normalizeClass(["mrp-nav",{"mrp-active":t.thumbsVisible}]),type:"button",onClick:o[6]||(o[6]=s=>a.$emit("thumbs-toggle"))}," ▦ "+e.toDisplayString(t.messages.thumbnails),3),e.createElementVNode("button",{class:e.normalizeClass(["mrp-nav",{"mrp-active":t.zoomMode==="fit"}]),type:"button",onClick:o[7]||(o[7]=s=>a.$emit("zoom","fit"))},e.toDisplayString(t.messages.fitWidth),3),e.createElementVNode("button",{class:e.normalizeClass(["mrp-nav",{"mrp-active":t.zoomMode==="raw"&&Math.round(t.zoom*100)===100}]),type:"button",onClick:o[8]||(o[8]=s=>a.$emit("zoom",100))}," 100% ",2),e.createElementVNode("button",{class:e.normalizeClass(["mrp-nav",{"mrp-active":t.zoomMode==="raw"&&Math.round(t.zoom*100)===150}]),type:"button",onClick:o[9]||(o[9]=s=>a.$emit("zoom",150))}," 150% ",2),t.showExport?(e.openBlock(),e.createElementBlock("button",{key:2,class:"mrp-nav",type:"button",onClick:o[10]||(o[10]=s=>a.$emit("export","html"))},e.toDisplayString(t.messages.exportHtml),1)):e.createCommentVNode("",!0),t.showExport?(e.openBlock(),e.createElementBlock("button",{key:3,class:"mrp-nav",type:"button",onClick:o[11]||(o[11]=s=>a.$emit("export","pdf"))},e.toDisplayString(t.messages.exportPdf),1)):e.createCommentVNode("",!0),t.showPrint?(e.openBlock(),e.createElementBlock("button",{key:4,class:"mrp-nav",type:"button",onClick:o[12]||(o[12]=s=>a.$emit("print"))},e.toDisplayString(t.messages.print),1)):e.createCommentVNode("",!0),t.showPdfWindow?(e.openBlock(),e.createElementBlock("button",{key:5,class:"mrp-nav",type:"button",onClick:o[13]||(o[13]=s=>a.$emit("pdf-window"))},e.toDisplayString(t.messages.pdfWindow),1)):e.createCommentVNode("",!0)]))}}),ve=(t,r)=>{const l=t.__vccOpts||t;for(const[n,a]of r)l[n]=a;return l},be=ve(et,[["__scopeId","data-v-f50c26e8"]]),we={title:"报表预览",prevPage:"‹ 上一页",nextPage:"下一页 ›",pageInfo:"{cur} / {total}",fitWidth:"适宽",exportHtml:"导出 HTML",exportPdf:"导出 PDF",print:"打印",pdfWindow:"PDF 窗口",loading:"报表渲染中…",empty:"暂无预览数据",errorPrefix:"",retry:"重试",searchPlaceholder:"搜索报表内容",matchInfo:"{cur}/{total}",prevMatch:"‹",nextMatch:"›",thumbnails:"缩略图"},ye={shellBg:"#525659",shellFg:"#e8e8e8",toolbarBg:"#323639",toolbarBorder:"#22252a",toolbarFg:"#e8e8e8",btnFg:"#cfcfcf",btnBorder:"#4a4d52",btnHoverBg:"#414549",btnHoverFg:"#ffffff",btnActiveBg:"#2d5fb8"};function tt(t){return t}function ot(t){return t}const L={showExport:!0,showPrint:!0,showPdfWindow:!0,gapPx:18,pdfFontUrl:"/simhei.ttf",logger:console},nt={warn:()=>{},info:()=>{}};function Ee(t,r){const l=r?t?.presets?.[r]:t?.defaultPreset?t?.presets?.[t.defaultPreset]:void 0,n={...t?.defaults,...l};return{showExport:n.showExport??L.showExport,showPrint:n.showPrint??L.showPrint,showPdfWindow:n.showPdfWindow??L.showPdfWindow,gapPx:n.gapPx??L.gapPx,pdfFontUrl:n.pdfFontUrl??L.pdfFontUrl,theme:{...ye,...n.theme},messages:{...we,...n.messages},logger:n.logger??L.logger}}function Pe(t){const r={};return t.shellBg!=null&&(r["--mrp-shell-bg"]=t.shellBg),t.shellFg!=null&&(r["--mrp-shell-fg"]=t.shellFg),t.toolbarBg!=null&&(r["--mrp-toolbar-bg"]=t.toolbarBg),t.toolbarBorder!=null&&(r["--mrp-toolbar-border"]=t.toolbarBorder),t.toolbarFg!=null&&(r["--mrp-toolbar-fg"]=t.toolbarFg),t.btnFg!=null&&(r["--mrp-btn-fg"]=t.btnFg),t.btnBorder!=null&&(r["--mrp-btn-border"]=t.btnBorder),t.btnHoverBg!=null&&(r["--mrp-btn-hover-bg"]=t.btnHoverBg),t.btnHoverFg!=null&&(r["--mrp-btn-hover-fg"]=t.btnHoverFg),t.btnActiveBg!=null&&(r["--mrp-btn-active-bg"]=t.btnActiveBg),r}function rt(t){const r=e.inject(T.MACH_REPORT_CONFIG_KEY,null),l=e.computed(()=>{const n=r?.value??null,a="defaults"in t&&"presets"in t?t:{defaults:t,presets:{}};return n?{defaults:{...n.defaults,...a.defaults},presets:{...n.presets,...a.presets},defaultPreset:a.defaultPreset??n.defaultPreset}:a});e.provide(T.MACH_REPORT_CONFIG_KEY,l)}function ke(){return e.inject(T.MACH_REPORT_CONFIG_KEY,e.computed(()=>null))}class q extends Error{constructor(r,l,n){super(l),this.name="MachReportError",this.code=r,this.cause=n}}function Ce(t){return t instanceof q?{code:t.code,cause:t.cause}:{code:"render",cause:t}}const at={class:"mrp-main"},lt={key:0,class:"mrp-state"},st={key:1,class:"mrp-state mrp-error"},it={key:2,class:"mrp-state"},ut=["data-page"],ct=["onClick"],dt=["data-thumb"],mt={class:"mrp-thumb-no"},pt={class:"mrp-overlay"},ft={key:0,class:"mrp-debug","aria-hidden":"true"},J=96/25.4,me="mach-report:ui",gt=e.defineComponent({__name:"ReportPreview",props:{tempId:{type:[String,Array],default:null},furnitureTempId:{type:String,default:""},params:{type:Object,default:()=>({})},height:{type:String,default:"100vh"},autoLoad:{type:Boolean,default:!0},showExport:{type:Boolean,default:void 0},showPrint:{type:Boolean,default:void 0},showPdfWindow:{type:Boolean,default:void 0},gapPx:{type:Number,default:void 0},messages:{type:Object,default:void 0},preset:{type:String,default:void 0},debug:{type:Boolean,default:!1},fetcher:{type:Function,default:null}},emits:["loaded","error"],setup(t,{expose:r,emit:l}){e.useCssVars(d=>({v3c509574:f.value+"px"}));const n=t,a=l,o=e.shallowRef(null),s=e.ref(!1),i=e.ref(""),m=e.ref(1),h=e.ref(null),g=e.ref(null),u=e.ref(null),c=e.ref(!1),p=Ue(),f=e.computed(()=>Math.max(0,O.value)),b=e.inject(T.MACH_REPORT_FETCHER_KEY,null),B=e.inject(T.MACH_REPORT_PDF_EXPORTER_KEY,null)??T.createDefaultPdfExporter({fontUrl:"/simhei.ttf"}),$=e.computed(()=>T.normalizeTempIds(n.tempId)),w=e.computed(()=>o.value?.pages.length??0),x=ke(),R=e.computed(()=>Ee(x.value,n.preset)),F=e.computed(()=>({...R.value.messages,...n.messages})),K=e.computed(()=>n.showExport??R.value.showExport),N=e.computed(()=>n.showPrint??R.value.showPrint),D=e.computed(()=>n.showPdfWindow??R.value.showPdfWindow),O=e.computed(()=>n.gapPx??R.value.gapPx),G=e.computed(()=>({height:n.height,...Pe(R.value.theme)})),{zoom:M,zoomMode:z,applyFitZoom:le,setZoom:_}=fe(()=>({viewport:g.value,pageWidthPx:(o.value?.pages[0]?.pageWidthMm??210)*J})),Me=pe(o,M,{pxPerMm:J,gapPx:O.value}),{contentSize:ee,windowRange:H,visiblePages:Re,makeScrollHandler:Se,refreshViewport:se}=Me,Be=Se(m,w);function te(d){z.value="raw",M.value=Math.min(3,Math.max(.3,d))}function oe(){o.value=null,m.value=1,P.reset()}let Y=0;async function I(){const d=++Y,y=n.fetcher??b;if($.value.length===0){i.value="缺少报表模板 ID",oe(),a("error",i.value,{code:"param"});return}if(!y){i.value="未提供渲染数据源 fetcher",oe(),a("error",i.value,{code:"config"});return}s.value=!0,i.value="",oe();const k=p.start();try{const v=await y({tempIds:$.value,furnitureTempId:n.furnitureTempId||void 0,params:{...n.params}});if(d!==Y)return;const C=U.validateRenderPlan(v);if(!C.ok){const W=C.errors.slice(0,3).map(A=>`${A.path}: ${A.message}`).join("; ");throw new q("validate",`渲染计划校验失败(${C.errors.length} 处): ${W}`)}C.warnings.length>0&&R.value.logger.warn("[mach-report] 渲染计划告警:",C.warnings),o.value=v,m.value=1,p.end(k),g.value&&(g.value.scrollTop=0),z.value==="fit"&&le(),a("loaded",v.pages.length)}catch(v){if(d!==Y)return;const C=v instanceof q?v:new q("fetch",v instanceof Error?v.message:"预览加载失败",v);i.value=C.message,a("error",C.message,Ce(C))}finally{d===Y&&(s.value=!1)}}function S(d){if(w.value<=0)return;const y=Math.max(1,Math.min(w.value,d));m.value=y;const k=g.value;if(!k)return;let v=0;for(let C=0;C<y-1;C++)v+=(o.value?.pages[C]?.pageHeightMm??0)*J+f.value;k.scrollTop=v*M.value}const{print:ne,exportAs:re,openPdfWindow:ae,releasePrintFrame:Te}=ge(o,{getPdfExporter:()=>B,onError:d=>a("error",d,{code:"print"})}),$e={reload:I,print:ne,exportAs:re,openPdfWindow:ae,gotoPage:S};e.provide(T.MACH_REPORT_CONTROLLER_KEY,$e);const P=He({plan:o,gotoPage:S,highlight:Oe,clearHighlights:Le});function Ne(d){d.ctrlKey&&(d.preventDefault(),te(M.value*(d.deltaY<0?1.1:1/1.1)))}function Fe(d){if((d.ctrlKey||d.metaKey)&&d.key.toLowerCase()==="f"){d.preventDefault(),P.visible.value||P.toggle();return}switch(d.key){case"PageDown":d.preventDefault(),S(m.value+1);break;case"PageUp":d.preventDefault(),S(m.value-1);break;case"Home":d.preventDefault(),S(1);break;case"End":d.preventDefault(),S(w.value);break;case"+":case"=":d.preventDefault(),te(M.value*1.1);break;case"-":d.preventDefault(),te(M.value/1.1);break}}function De(){try{localStorage.setItem(me,JSON.stringify({zoomMode:z.value==="fit"?"fit":Math.round(M.value*100)}))}catch{}}e.watch([z,M],De),e.watchEffect(()=>{const d=o.value;if(!d)return;const y=h.value;if(!y)return;y.querySelectorAll(".mrp-page-holder").forEach(v=>{const C=Number(v.dataset.page??0)-1,W=d.pages[C];if(!W||v.childElementCount>0){if(v.firstElementChild){const ce=v.firstElementChild;P.clear(ce),P.apply(ce)}return}v.style.width=`${W.pageWidthMm*J}px`;const A=U.renderPage(W,96,{},document);P.apply(A),v.appendChild(A)})},{flush:"post"}),e.watch(()=>P.query.value,d=>{d||h.value?.querySelectorAll(".mrp-page-holder").forEach(y=>{P.clear(y)})});const ie=Ae(o,{thumbsRoot:u,visible:c,renderThumbCanvas:d=>{try{const{canvases:y}=U.renderPlanToCanvas(o.value,{start:d,end:d,dpr:.2});return y[0]??null}catch{return null}}});e.watchEffect(()=>{ie.schedule()},{flush:"post"});const ze=e.computed(()=>n.debug),{debugStats:V}=We(ze,{plan:o,pageCount:w,windowRange:H,zoom:M,loadMs:p.loadMs});function ue(){se(g.value),z.value==="fit"&&le()}function Ie(){try{const d=JSON.parse(localStorage.getItem(me)??"{}");d.zoomMode==="fit"?_("fit"):typeof d.zoomMode=="number"&&_(d.zoomMode)}catch{}}return e.onMounted(()=>{window.addEventListener("resize",ue),se(g.value),Ie(),n.autoLoad&&I()}),e.onUnmounted(()=>{window.removeEventListener("resize",ue),ie.destroy(),P.reset(),Te()}),e.watch(()=>[n.tempId,n.furnitureTempId,JSON.stringify(n.params)],()=>{n.autoLoad&&I()}),e.watch(()=>n.fetcher??b,()=>{n.autoLoad&&I()}),r({reload:I,print:ne,exportAs:re,openPdfWindow:ae,gotoPage:S}),(d,y)=>(e.openBlock(),e.createElementBlock("div",{class:"mach-report-preview",style:e.normalizeStyle(G.value)},[e.createVNode(be,{"page-count":w.value,"current-page":m.value,"zoom-mode":e.unref(z),zoom:e.unref(M),"show-export":K.value,"show-print":N.value,"show-pdf-window":D.value,messages:F.value,search:{visible:e.unref(P).visible.value,query:e.unref(P).query.value,matchIndex:e.unref(P).matchIndex.value,matchCount:e.unref(P).matchCount.value},"thumbs-visible":c.value,onGoto:S,onZoom:e.unref(_),onExport:y[0]||(y[0]=k=>e.unref(re)(k)),onPrint:e.unref(ne),onPdfWindow:e.unref(ae),onSearchInput:e.unref(P).onInput,onSearchNav:e.unref(P).onNav,onSearchToggle:e.unref(P).toggle,onThumbsToggle:y[1]||(y[1]=k=>c.value=!c.value)},null,8,["page-count","current-page","zoom-mode","zoom","show-export","show-print","show-pdf-window","messages","search","thumbs-visible","onZoom","onPrint","onPdfWindow","onSearchInput","onSearchNav","onSearchToggle"]),e.createElementVNode("div",at,[e.createElementVNode("div",{ref_key:"viewportRef",ref:g,class:"mrp-body",tabindex:"0",onWheel:Ne,onKeydown:Fe,onScrollPassive:y[2]||(y[2]=k=>e.unref(Be)(k.target))},[s.value?(e.openBlock(),e.createElementBlock("div",lt,e.toDisplayString(F.value.loading),1)):i.value?(e.openBlock(),e.createElementBlock("div",st,[e.createTextVNode(e.toDisplayString(i.value)+" ",1),e.createElementVNode("button",{class:"mrp-retry",type:"button",onClick:I},e.toDisplayString(F.value.retry),1)])):!o.value||w.value===0?(e.openBlock(),e.createElementBlock("div",it,e.toDisplayString(F.value.empty),1)):(e.openBlock(),e.createElementBlock("div",{key:3,class:"mrp-scale",style:e.normalizeStyle({width:`${e.unref(ee).w*e.unref(M)}px`,height:`${e.unref(ee).h*e.unref(M)}px`})},[e.createElementVNode("div",{ref_key:"containerRef",ref:h,class:"mrp-scale-inner",style:e.normalizeStyle({transform:`scale(${e.unref(M)})`,transformOrigin:"top left",width:`${e.unref(ee).w}px`})},[e.unref(H).padTopPx>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mrp-spacer-top",style:e.normalizeStyle({height:`${e.unref(H).padTopPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(Re),k=>(e.openBlock(),e.createElementBlock("div",{key:k.index,class:"mrp-page-holder","data-page":k.index+1},null,8,ut))),128)),e.unref(H).padBottomPx>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:"mrp-spacer-bottom",style:e.normalizeStyle({height:`${e.unref(H).padBottomPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0)],4)],4))],544),c.value&&w.value>0?(e.openBlock(),e.createElementBlock("aside",{key:0,ref_key:"thumbsRef",ref:u,class:"mrp-thumbs"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value?.pages??[],(k,v)=>(e.openBlock(),e.createElementBlock("div",{key:v,class:e.normalizeClass(["mrp-thumb",{"mrp-thumb-active":v+1===m.value}]),onClick:C=>S(v+1)},[e.createElementVNode("div",{class:"mrp-thumb-box","data-thumb":v+1,style:e.normalizeStyle({height:`${Math.round(k.pageHeightMm/k.pageWidthMm*116)}px`})},null,12,dt),e.createElementVNode("span",mt,e.toDisplayString(v+1),1)],10,ct))),128))],512)):e.createCommentVNode("",!0)]),e.createElementVNode("div",pt,[e.renderSlot(d.$slots,"default",{},void 0,!0)]),e.unref(V)?(e.openBlock(),e.createElementBlock("div",ft,[y[3]||(y[3]=e.createElementVNode("div",null,"mach-report debug",-1)),e.createElementVNode("div",null,"pages: "+e.toDisplayString(e.unref(V).pages)+" | window: ["+e.toDisplayString(e.unref(V).window)+"]",1),e.createElementVNode("div",null,"zoom: "+e.toDisplayString(e.unref(V).zoom)+" | load: "+e.toDisplayString(e.unref(V).loadMs),1),e.createElementVNode("div",null,"plan: "+e.toDisplayString(e.unref(V).planKB)+"KB",1)])):e.createCommentVNode("",!0)],4))}}),xe=ve(gt,[["__scopeId","data-v-2e98692a"]]),ht=Object.freeze(Object.defineProperty({__proto__:null,default:xe},Symbol.toStringTag,{value:"Module"}));exports.DEFAULT_MESSAGES=we;exports.DEFAULT_THEME=ye;exports.MachReportError=q;exports.ReportPreview=xe;exports.ReportPreview$1=ht;exports.ReportToolbar=be;exports.SILENT_LOGGER=nt;exports.buildPrintDocument=j;exports.defineMachReportConfig=tt;exports.defineMachReportPreset=ot;exports.printPlans=Ve;exports.provideMachReportConfig=rt;exports.resolveConfig=Ee;exports.themeToCssVars=Pe;exports.toErrorDetail=Ce;exports.useMachReportConfig=ke;exports.usePageWindow=pe;exports.usePrintExport=ge;exports.useZoom=fe;
@@ -1,8 +1,8 @@
1
- import { ref as T, computed as x, shallowRef as Ce, defineComponent as ke, watch as X, nextTick as Ae, openBlock as M, createElementBlock as C, createElementVNode as y, toDisplayString as P, Fragment as ge, createCommentVNode as L, normalizeClass as V, inject as ae, provide as $e, useCssVars as Ue, watchEffect as Pe, onMounted as je, onUnmounted as qe, normalizeStyle as q, createVNode as Ke, unref as m, createTextVNode as Ve, renderList as xe, renderSlot as Ge } from "vue";
2
- import { computePageWindow as Ye, renderPage as Re, validateRenderPlan as Ze, renderPlanToCanvas as Je } from "@agile-team/mach-report";
3
- import { a as he, b as Xe, c as Qe, n as _e, M as et, e as tt } from "./plugin-vi2GjP43.js";
4
- function nt(e, o, a = {}) {
5
- const n = a.pxPerMm ?? 3.7795275590551185, r = a.gapPx ?? 18, t = T(0), s = T(800), l = x(
1
+ import { ref as S, computed as x, shallowRef as ke, defineComponent as $e, watch as X, nextTick as Ue, openBlock as M, createElementBlock as C, createElementVNode as y, toDisplayString as P, Fragment as ge, createCommentVNode as L, normalizeClass as V, inject as ae, provide as Re, useCssVars as je, watchEffect as xe, onMounted as qe, onUnmounted as Ke, normalizeStyle as q, createVNode as Ve, unref as m, createTextVNode as Ge, renderList as Ee, renderSlot as Ye } from "vue";
2
+ import { computePageWindow as Ze, renderPage as Te, validateRenderPlan as Je, renderPlanToCanvas as Xe } from "@agile-team/mach-report";
3
+ import { a as he, b as Qe, c as _e, n as et, M as tt, e as nt } from "./plugin-Bo8QqzCz.js";
4
+ function ot(e, o, a = {}) {
5
+ const n = a.pxPerMm ?? 3.7795275590551185, r = a.gapPx ?? 18, t = S(0), s = S(800), l = x(
6
6
  () => (e.value?.pages ?? []).map((u) => u.pageHeightMm * n)
7
7
  ), d = x(() => {
8
8
  const u = e.value?.pages ?? [];
@@ -11,7 +11,7 @@ function nt(e, o, a = {}) {
11
11
  f += b.pageHeightMm * n + r, p = Math.max(p, b.pageWidthMm * n);
12
12
  return { w: p, h: f };
13
13
  }), h = x(
14
- () => Ye({
14
+ () => Ze({
15
15
  pageHeightsPx: l.value,
16
16
  viewportHeightPx: s.value / o.value,
17
17
  scrollTopPx: t.value / o.value,
@@ -49,8 +49,8 @@ function nt(e, o, a = {}) {
49
49
  }
50
50
  };
51
51
  }
52
- function ot(e) {
53
- const o = T(1), a = T("fit");
52
+ function rt(e) {
53
+ const o = S(1), a = S("fit");
54
54
  function n() {
55
55
  requestAnimationFrame(() => {
56
56
  const t = e();
@@ -85,12 +85,12 @@ ${[...o.values()].map(
85
85
  ).join(`
86
86
  `)}
87
87
  body{margin:0;background:#fff;}`}</style></head><body>`, t = e.pages.map((s) => {
88
- const l = Re(s, 96, {}, document);
88
+ const l = Te(s, 96, {}, document);
89
89
  return l.style.page = te(s), l.outerHTML;
90
90
  });
91
91
  return { head: r, pageChunks: t };
92
92
  }
93
- async function Kt(e, o = {}) {
93
+ async function Vt(e, o = {}) {
94
94
  const a = {
95
95
  pages: e.flatMap((l) => l.pages)
96
96
  };
@@ -110,7 +110,7 @@ async function Kt(e, o = {}) {
110
110
  s ? setTimeout(() => t.remove(), 6e4) : t.remove();
111
111
  }
112
112
  }
113
- function rt(e, o) {
113
+ function at(e, o) {
114
114
  let a = null, n = !1, r = null;
115
115
  function t() {
116
116
  a?.remove(), a = null;
@@ -184,9 +184,9 @@ function rt(e, o) {
184
184
  releasePrintFrame: t
185
185
  };
186
186
  }
187
- const Te = "mrp-hit";
188
- function at(e) {
189
- e.querySelectorAll(`mark.${Te}`).forEach((a) => {
187
+ const Se = "mrp-hit";
188
+ function st(e) {
189
+ e.querySelectorAll(`mark.${Se}`).forEach((a) => {
190
190
  const n = a.parentNode;
191
191
  if (n) {
192
192
  for (; a.firstChild; ) n.insertBefore(a.firstChild, a);
@@ -194,7 +194,7 @@ function at(e) {
194
194
  }
195
195
  });
196
196
  }
197
- function st(e, o) {
197
+ function lt(e, o) {
198
198
  const a = o.trim();
199
199
  if (!a) return 0;
200
200
  const n = a.toLowerCase(), r = document.createTreeWalker(e, NodeFilter.SHOW_TEXT, {
@@ -213,34 +213,34 @@ function st(e, o) {
213
213
  for (; f >= 0; ) {
214
214
  f > u && i.appendChild(document.createTextNode(d.slice(u, f)));
215
215
  const p = document.createElement("mark");
216
- p.className = Te, p.textContent = d.slice(f, f + a.length), i.appendChild(p), s++, u = f + a.length, f = h.indexOf(n, u);
216
+ p.className = Se, p.textContent = d.slice(f, f + a.length), i.appendChild(p), s++, u = f + a.length, f = h.indexOf(n, u);
217
217
  }
218
218
  u < d.length && i.appendChild(document.createTextNode(d.slice(u))), g.replaceChild(i, l);
219
219
  }
220
220
  return s;
221
221
  }
222
- function Ee(e, o) {
222
+ function Me(e, o) {
223
223
  let a = 0, n = e.toLowerCase().indexOf(o);
224
224
  for (; n >= 0; )
225
225
  a++, n = e.toLowerCase().indexOf(o, n + o.length);
226
226
  return a;
227
227
  }
228
- function lt(e) {
229
- const { plan: o, gotoPage: a, highlight: n, clearHighlights: r } = e, t = e.debounceMs ?? 200, s = T(!1), l = T(""), d = T(""), h = T(0);
228
+ function it(e) {
229
+ const { plan: o, gotoPage: a, highlight: n, clearHighlights: r } = e, t = e.debounceMs ?? 200, s = S(!1), l = S(""), d = S(""), h = S(0);
230
230
  let g = null;
231
231
  const i = x(() => {
232
- const w = l.value.trim().toLowerCase(), S = o.value;
233
- if (!w || !S) return [];
232
+ const w = l.value.trim().toLowerCase(), F = o.value;
233
+ if (!w || !F) return [];
234
234
  const B = [];
235
- return S.pages.forEach((N, Q) => {
235
+ return F.pages.forEach((N, Q) => {
236
236
  for (const O of N.components)
237
237
  if (O.grid) {
238
238
  for (const D of O.grid.cells ?? [])
239
239
  for (const G of D ?? [])
240
240
  if (typeof G?.text == "string")
241
- for (let _ = 0; _ < Ee(G.text, w); _++) B.push(Q);
241
+ for (let _ = 0; _ < Me(G.text, w); _++) B.push(Q);
242
242
  } else if (O.kind === "text" && typeof O.text == "string")
243
- for (let D = 0; D < Ee(O.text, w); D++) B.push(Q);
243
+ for (let D = 0; D < Me(O.text, w); D++) B.push(Q);
244
244
  }), B;
245
245
  }), u = x(() => i.value.length);
246
246
  function f(w) {
@@ -250,20 +250,20 @@ function lt(e) {
250
250
  }
251
251
  g = setTimeout(() => {
252
252
  g = null, l.value = d.value, h.value = 0;
253
- const S = i.value[0];
254
- S != null && a(S + 1);
253
+ const F = i.value[0];
254
+ F != null && a(F + 1);
255
255
  }, t);
256
256
  }
257
257
  function p(w) {
258
- const S = i.value.length;
259
- S !== 0 && (h.value = (h.value + w + S) % S, a(i.value[h.value] + 1));
258
+ const F = i.value.length;
259
+ F !== 0 && (h.value = (h.value + w + F) % F, a(i.value[h.value] + 1));
260
260
  }
261
261
  function b() {
262
262
  s.value = !s.value;
263
263
  }
264
264
  function k(w) {
265
- const S = l.value.trim();
266
- S && n(w, S);
265
+ const F = l.value.trim();
266
+ F && n(w, F);
267
267
  }
268
268
  function W(w) {
269
269
  r(w);
@@ -284,7 +284,7 @@ function lt(e) {
284
284
  reset: H
285
285
  };
286
286
  }
287
- function it(e, o) {
287
+ function ut(e, o) {
288
288
  const a = x(() => {
289
289
  if (e.value) return !0;
290
290
  if (typeof location > "u") return !1;
@@ -302,7 +302,7 @@ function it(e, o) {
302
302
  });
303
303
  return { enabled: a, debugStats: r };
304
304
  }
305
- function ut(e, o) {
305
+ function ct(e, o) {
306
306
  const { thumbsRoot: a, visible: n, renderThumbCanvas: r } = o;
307
307
  let t = null;
308
308
  function s(h, g) {
@@ -327,8 +327,8 @@ function ut(e, o) {
327
327
  t?.disconnect(), t = null;
328
328
  } };
329
329
  }
330
- function ct() {
331
- const e = Ce(0);
330
+ function dt() {
331
+ const e = ke(0);
332
332
  return {
333
333
  loadMs: e,
334
334
  start() {
@@ -339,13 +339,13 @@ function ct() {
339
339
  }
340
340
  };
341
341
  }
342
- const dt = { class: "mrp-toolbar" }, ft = { class: "mrp-title" }, pt = ["disabled"], mt = { class: "mrp-pageinfo" }, gt = ["disabled"], ht = {
342
+ const ft = { class: "mrp-toolbar" }, pt = { class: "mrp-title" }, mt = ["disabled"], gt = { class: "mrp-pageinfo" }, ht = ["disabled"], vt = {
343
343
  key: 1,
344
344
  class: "mrp-search"
345
- }, vt = ["placeholder", "value"], bt = {
345
+ }, bt = ["placeholder", "value"], wt = {
346
346
  key: 0,
347
347
  class: "mrp-search-count"
348
- }, wt = ["disabled"], yt = ["disabled"], Pt = /* @__PURE__ */ ke({
348
+ }, yt = ["disabled"], Pt = ["disabled"], xt = /* @__PURE__ */ $e({
349
349
  __name: "ReportToolbar",
350
350
  props: {
351
351
  pageCount: {},
@@ -361,35 +361,35 @@ const dt = { class: "mrp-toolbar" }, ft = { class: "mrp-title" }, pt = ["disable
361
361
  },
362
362
  emits: ["goto", "zoom", "export", "print", "pdf-window", "search-input", "search-nav", "search-toggle", "thumbs-toggle"],
363
363
  setup(e) {
364
- const o = e, a = T(null);
364
+ const o = e, a = S(null);
365
365
  X(
366
366
  () => o.search.visible,
367
367
  (r) => {
368
- r && Ae(() => a.value?.focus());
368
+ r && Ue(() => a.value?.focus());
369
369
  }
370
370
  );
371
371
  function n(r, t, s) {
372
372
  return r.replace("{cur}", String(t)).replace("{total}", String(s));
373
373
  }
374
- return (r, t) => (M(), C("div", dt, [
375
- y("span", ft, P(e.messages.title), 1),
374
+ return (r, t) => (M(), C("div", ft, [
375
+ y("span", pt, P(e.messages.title), 1),
376
376
  e.pageCount > 0 ? (M(), C(ge, { key: 0 }, [
377
377
  y("button", {
378
378
  class: "mrp-nav",
379
379
  type: "button",
380
380
  disabled: e.currentPage <= 1,
381
381
  onClick: t[0] || (t[0] = (s) => r.$emit("goto", e.currentPage - 1))
382
- }, P(e.messages.prevPage), 9, pt),
383
- y("span", mt, P(n(e.messages.pageInfo, e.currentPage, e.pageCount)), 1),
382
+ }, P(e.messages.prevPage), 9, mt),
383
+ y("span", gt, P(n(e.messages.pageInfo, e.currentPage, e.pageCount)), 1),
384
384
  y("button", {
385
385
  class: "mrp-nav",
386
386
  type: "button",
387
387
  disabled: e.currentPage >= e.pageCount,
388
388
  onClick: t[1] || (t[1] = (s) => r.$emit("goto", e.currentPage + 1))
389
- }, P(e.messages.nextPage), 9, gt)
389
+ }, P(e.messages.nextPage), 9, ht)
390
390
  ], 64)) : L("", !0),
391
391
  t[14] || (t[14] = y("span", { class: "mrp-spacer" }, null, -1)),
392
- e.search.visible ? (M(), C("div", ht, [
392
+ e.search.visible ? (M(), C("div", vt, [
393
393
  y("input", {
394
394
  ref_key: "searchInputRef",
395
395
  ref: a,
@@ -398,20 +398,20 @@ const dt = { class: "mrp-toolbar" }, ft = { class: "mrp-title" }, pt = ["disable
398
398
  placeholder: e.messages.searchPlaceholder,
399
399
  value: e.search.query,
400
400
  onInput: t[2] || (t[2] = (s) => r.$emit("search-input", s.target.value))
401
- }, null, 40, vt),
402
- e.search.query ? (M(), C("span", bt, P(n(e.messages.matchInfo, e.search.matchIndex + 1, e.search.matchCount)), 1)) : L("", !0),
401
+ }, null, 40, bt),
402
+ e.search.query ? (M(), C("span", wt, P(n(e.messages.matchInfo, e.search.matchIndex + 1, e.search.matchCount)), 1)) : L("", !0),
403
403
  y("button", {
404
404
  class: "mrp-nav",
405
405
  type: "button",
406
406
  disabled: e.search.matchCount === 0,
407
407
  onClick: t[3] || (t[3] = (s) => r.$emit("search-nav", -1))
408
- }, P(e.messages.prevMatch), 9, wt),
408
+ }, P(e.messages.prevMatch), 9, yt),
409
409
  y("button", {
410
410
  class: "mrp-nav",
411
411
  type: "button",
412
412
  disabled: e.search.matchCount === 0,
413
413
  onClick: t[4] || (t[4] = (s) => r.$emit("search-nav", 1))
414
- }, P(e.messages.nextMatch), 9, yt)
414
+ }, P(e.messages.nextMatch), 9, Pt)
415
415
  ])) : L("", !0),
416
416
  y("button", {
417
417
  class: V(["mrp-nav", { "mrp-active": e.search.visible }]),
@@ -465,12 +465,12 @@ const dt = { class: "mrp-toolbar" }, ft = { class: "mrp-title" }, pt = ["disable
465
465
  }, P(e.messages.pdfWindow), 1)) : L("", !0)
466
466
  ]));
467
467
  }
468
- }), Se = (e, o) => {
468
+ }), Fe = (e, o) => {
469
469
  const a = e.__vccOpts || e;
470
470
  for (const [n, r] of o)
471
471
  a[n] = r;
472
472
  return a;
473
- }, xt = /* @__PURE__ */ Se(Pt, [["__scopeId", "data-v-f50c26e8"]]), Et = {
473
+ }, Et = /* @__PURE__ */ Fe(xt, [["__scopeId", "data-v-f50c26e8"]]), Mt = {
474
474
  title: "报表预览",
475
475
  prevPage: "‹ 上一页",
476
476
  nextPage: "下一页 ›",
@@ -489,7 +489,7 @@ const dt = { class: "mrp-toolbar" }, ft = { class: "mrp-title" }, pt = ["disable
489
489
  prevMatch: "‹",
490
490
  nextMatch: "›",
491
491
  thumbnails: "缩略图"
492
- }, Mt = {
492
+ }, Ct = {
493
493
  shellBg: "#525659",
494
494
  shellFg: "#e8e8e8",
495
495
  toolbarBg: "#323639",
@@ -501,10 +501,10 @@ const dt = { class: "mrp-toolbar" }, ft = { class: "mrp-title" }, pt = ["disable
501
501
  btnHoverFg: "#ffffff",
502
502
  btnActiveBg: "#2d5fb8"
503
503
  };
504
- function Vt(e) {
504
+ function Gt(e) {
505
505
  return e;
506
506
  }
507
- function Gt(e) {
507
+ function Yt(e) {
508
508
  return e;
509
509
  }
510
510
  const K = {
@@ -514,10 +514,10 @@ const K = {
514
514
  gapPx: 18,
515
515
  pdfFontUrl: "/simhei.ttf",
516
516
  logger: console
517
- }, Yt = { warn: () => {
517
+ }, Zt = { warn: () => {
518
518
  }, info: () => {
519
519
  } };
520
- function Ct(e, o) {
520
+ function kt(e, o) {
521
521
  const a = o ? e?.presets?.[o] : e?.defaultPreset ? e?.presets?.[e.defaultPreset] : void 0, n = { ...e?.defaults, ...a };
522
522
  return {
523
523
  showExport: n.showExport ?? K.showExport,
@@ -525,16 +525,16 @@ function Ct(e, o) {
525
525
  showPdfWindow: n.showPdfWindow ?? K.showPdfWindow,
526
526
  gapPx: n.gapPx ?? K.gapPx,
527
527
  pdfFontUrl: n.pdfFontUrl ?? K.pdfFontUrl,
528
- theme: { ...Mt, ...n.theme },
529
- messages: { ...Et, ...n.messages },
528
+ theme: { ...Ct, ...n.theme },
529
+ messages: { ...Mt, ...n.messages },
530
530
  logger: n.logger ?? K.logger
531
531
  };
532
532
  }
533
- function kt(e) {
533
+ function $t(e) {
534
534
  const o = {};
535
535
  return e.shellBg != null && (o["--mrp-shell-bg"] = e.shellBg), e.shellFg != null && (o["--mrp-shell-fg"] = e.shellFg), e.toolbarBg != null && (o["--mrp-toolbar-bg"] = e.toolbarBg), e.toolbarBorder != null && (o["--mrp-toolbar-border"] = e.toolbarBorder), e.toolbarFg != null && (o["--mrp-toolbar-fg"] = e.toolbarFg), e.btnFg != null && (o["--mrp-btn-fg"] = e.btnFg), e.btnBorder != null && (o["--mrp-btn-border"] = e.btnBorder), e.btnHoverBg != null && (o["--mrp-btn-hover-bg"] = e.btnHoverBg), e.btnHoverFg != null && (o["--mrp-btn-hover-fg"] = e.btnHoverFg), e.btnActiveBg != null && (o["--mrp-btn-active-bg"] = e.btnActiveBg), o;
536
536
  }
537
- function Zt(e) {
537
+ function Jt(e) {
538
538
  const o = ae(he, null), a = x(() => {
539
539
  const n = o?.value ?? null, r = "defaults" in e && "presets" in e ? e : { defaults: e, presets: {} };
540
540
  return n ? {
@@ -543,9 +543,9 @@ function Zt(e) {
543
543
  defaultPreset: r.defaultPreset ?? n.defaultPreset
544
544
  } : r;
545
545
  });
546
- $e(he, a);
546
+ Re(he, a);
547
547
  }
548
- function $t() {
548
+ function Rt() {
549
549
  return ae(he, x(() => null));
550
550
  }
551
551
  class re extends Error {
@@ -553,23 +553,23 @@ class re extends Error {
553
553
  super(a), this.name = "MachReportError", this.code = o, this.cause = n;
554
554
  }
555
555
  }
556
- function Rt(e) {
556
+ function Tt(e) {
557
557
  return e instanceof re ? { code: e.code, cause: e.cause } : { code: "render", cause: e };
558
558
  }
559
- const Tt = { class: "mrp-main" }, St = {
559
+ const St = { class: "mrp-main" }, Ft = {
560
560
  key: 0,
561
561
  class: "mrp-state"
562
- }, Ft = {
562
+ }, It = {
563
563
  key: 1,
564
564
  class: "mrp-state mrp-error"
565
- }, It = {
565
+ }, Bt = {
566
566
  key: 2,
567
567
  class: "mrp-state"
568
- }, Bt = ["data-page"], Lt = ["onClick"], zt = ["data-thumb"], Wt = { class: "mrp-thumb-no" }, Ht = { class: "mrp-overlay" }, Ot = {
568
+ }, Lt = ["data-page"], zt = ["onClick"], Wt = ["data-thumb"], Ht = { class: "mrp-thumb-no" }, Ot = { class: "mrp-overlay" }, Nt = {
569
569
  key: 0,
570
570
  class: "mrp-debug",
571
571
  "aria-hidden": "true"
572
- }, ne = 96 / 25.4, Me = "mach-report:ui", Nt = /* @__PURE__ */ ke({
572
+ }, ne = 96 / 25.4, Ce = "mach-report:ui", Dt = /* @__PURE__ */ $e({
573
573
  __name: "ReportPreview",
574
574
  props: {
575
575
  tempId: {
@@ -602,27 +602,27 @@ const Tt = { class: "mrp-main" }, St = {
602
602
  },
603
603
  emits: ["loaded", "error"],
604
604
  setup(e, { expose: o, emit: a }) {
605
- Ue((c) => ({
606
- v6094bc50: p.value + "px"
605
+ je((c) => ({
606
+ v3c509574: p.value + "px"
607
607
  }));
608
- const n = e, r = a, t = Ce(null), s = T(!1), l = T(""), d = T(1), h = T(null), g = T(null), i = T(null), u = T(!1), f = ct(), p = x(() => Math.max(0, G.value)), b = ae(Xe, null), W = ae(Qe, null) ?? tt({ fontUrl: "/simhei.ttf" }), H = x(() => _e(n.tempId)), w = x(() => t.value?.pages.length ?? 0), S = $t(), B = x(() => Ct(S.value, n.preset)), N = x(() => ({
608
+ const n = e, r = a, t = ke(null), s = S(!1), l = S(""), d = S(1), h = S(null), g = S(null), i = S(null), u = S(!1), f = dt(), p = x(() => Math.max(0, G.value)), b = ae(Qe, null), W = ae(_e, null) ?? nt({ fontUrl: "/simhei.ttf" }), H = x(() => et(n.tempId)), w = x(() => t.value?.pages.length ?? 0), F = Rt(), B = x(() => kt(F.value, n.preset)), N = x(() => ({
609
609
  ...B.value.messages,
610
610
  ...n.messages
611
611
  })), Q = x(() => n.showExport ?? B.value.showExport), O = x(() => n.showPrint ?? B.value.showPrint), D = x(() => n.showPdfWindow ?? B.value.showPdfWindow), G = x(() => n.gapPx ?? B.value.gapPx), _ = x(() => ({
612
612
  height: n.height,
613
- ...kt(B.value.theme)
614
- })), { zoom: I, zoomMode: A, applyFitZoom: ve, setZoom: ie } = ot(() => ({
613
+ ...$t(B.value.theme)
614
+ })), { zoom: I, zoomMode: A, applyFitZoom: ve, setZoom: ie } = rt(() => ({
615
615
  viewport: g.value,
616
616
  pageWidthPx: (t.value?.pages[0]?.pageWidthMm ?? 210) * ne
617
- })), Fe = nt(t, I, {
617
+ })), Ie = ot(t, I, {
618
618
  pxPerMm: ne,
619
619
  gapPx: G.value
620
- }), { contentSize: ue, windowRange: Y, visiblePages: Ie, makeScrollHandler: Be, refreshViewport: be } = Fe, Le = Be(d, w);
620
+ }), { contentSize: ue, windowRange: Y, visiblePages: Be, makeScrollHandler: Le, refreshViewport: be } = Ie, ze = Le(d, w);
621
621
  function ce(c) {
622
622
  A.value = "raw", I.value = Math.min(3, Math.max(0.3, c));
623
623
  }
624
624
  function de() {
625
- t.value = null, d.value = 1, F.reset();
625
+ t.value = null, d.value = 1, $.reset();
626
626
  }
627
627
  let ee = 0;
628
628
  async function U() {
@@ -636,7 +636,7 @@ const Tt = { class: "mrp-main" }, St = {
636
636
  return;
637
637
  }
638
638
  s.value = !0, l.value = "", de();
639
- const $ = f.start();
639
+ const R = f.start();
640
640
  try {
641
641
  const v = await E({
642
642
  tempIds: H.value,
@@ -644,23 +644,23 @@ const Tt = { class: "mrp-main" }, St = {
644
644
  params: { ...n.params }
645
645
  });
646
646
  if (c !== ee) return;
647
- const R = Ze(v);
648
- if (!R.ok) {
649
- const Z = R.errors.slice(0, 3).map((J) => `${J.path}: ${J.message}`).join("; ");
647
+ const T = Je(v);
648
+ if (!T.ok) {
649
+ const Z = T.errors.slice(0, 3).map((J) => `${J.path}: ${J.message}`).join("; ");
650
650
  throw new re(
651
651
  "validate",
652
- `渲染计划校验失败(${R.errors.length} 处): ${Z}`
652
+ `渲染计划校验失败(${T.errors.length} 处): ${Z}`
653
653
  );
654
654
  }
655
- R.warnings.length > 0 && B.value.logger.warn("[mach-report] 渲染计划告警:", R.warnings), t.value = v, d.value = 1, f.end($), g.value && (g.value.scrollTop = 0), A.value === "fit" && ve(), r("loaded", v.pages.length);
655
+ T.warnings.length > 0 && B.value.logger.warn("[mach-report] 渲染计划告警:", T.warnings), t.value = v, d.value = 1, f.end(R), g.value && (g.value.scrollTop = 0), A.value === "fit" && ve(), r("loaded", v.pages.length);
656
656
  } catch (v) {
657
657
  if (c !== ee) return;
658
- const R = v instanceof re ? v : new re(
658
+ const T = v instanceof re ? v : new re(
659
659
  "fetch",
660
660
  v instanceof Error ? v.message : "预览加载失败",
661
661
  v
662
662
  );
663
- l.value = R.message, r("error", R.message, Rt(R));
663
+ l.value = T.message, r("error", T.message, Tt(T));
664
664
  } finally {
665
665
  c === ee && (s.value = !1);
666
666
  }
@@ -669,30 +669,30 @@ const Tt = { class: "mrp-main" }, St = {
669
669
  if (w.value <= 0) return;
670
670
  const E = Math.max(1, Math.min(w.value, c));
671
671
  d.value = E;
672
- const $ = g.value;
673
- if (!$) return;
672
+ const R = g.value;
673
+ if (!R) return;
674
674
  let v = 0;
675
- for (let R = 0; R < E - 1; R++)
676
- v += (t.value?.pages[R]?.pageHeightMm ?? 0) * ne + p.value;
677
- $.scrollTop = v * I.value;
675
+ for (let T = 0; T < E - 1; T++)
676
+ v += (t.value?.pages[T]?.pageHeightMm ?? 0) * ne + p.value;
677
+ R.scrollTop = v * I.value;
678
678
  }
679
- const { print: fe, exportAs: pe, openPdfWindow: me, releasePrintFrame: ze } = rt(t, {
679
+ const { print: fe, exportAs: pe, openPdfWindow: me, releasePrintFrame: We } = at(t, {
680
680
  getPdfExporter: () => W,
681
681
  onError: (c) => r("error", c, { code: "print" })
682
682
  });
683
- $e(et, { reload: U, print: fe, exportAs: pe, openPdfWindow: me, gotoPage: z });
684
- const F = lt({
683
+ Re(tt, { reload: U, print: fe, exportAs: pe, openPdfWindow: me, gotoPage: z });
684
+ const $ = it({
685
685
  plan: t,
686
686
  gotoPage: z,
687
- highlight: st,
688
- clearHighlights: at
687
+ highlight: lt,
688
+ clearHighlights: st
689
689
  });
690
- function We(c) {
690
+ function He(c) {
691
691
  c.ctrlKey && (c.preventDefault(), ce(I.value * (c.deltaY < 0 ? 1.1 : 1 / 1.1)));
692
692
  }
693
- function He(c) {
693
+ function Oe(c) {
694
694
  if ((c.ctrlKey || c.metaKey) && c.key.toLowerCase() === "f") {
695
- c.preventDefault(), F.visible.value || F.toggle();
695
+ c.preventDefault(), $.visible.value || $.toggle();
696
696
  return;
697
697
  }
698
698
  switch (c.key) {
@@ -717,51 +717,54 @@ const Tt = { class: "mrp-main" }, St = {
717
717
  break;
718
718
  }
719
719
  }
720
- function Oe() {
720
+ function Ne() {
721
721
  try {
722
722
  localStorage.setItem(
723
- Me,
723
+ Ce,
724
724
  JSON.stringify({ zoomMode: A.value === "fit" ? "fit" : Math.round(I.value * 100) })
725
725
  );
726
726
  } catch {
727
727
  }
728
728
  }
729
- X([A, I], Oe), Pe(() => {
729
+ X([A, I], Ne), xe(() => {
730
730
  const c = t.value;
731
731
  if (!c) return;
732
732
  const E = h.value;
733
733
  if (!E) return;
734
734
  E.querySelectorAll(".mrp-page-holder").forEach((v) => {
735
- const R = Number(v.dataset.page ?? 0) - 1, Z = c.pages[R];
735
+ const T = Number(v.dataset.page ?? 0) - 1, Z = c.pages[T];
736
736
  if (!Z || v.childElementCount > 0) {
737
- v.firstElementChild && F.apply(v.firstElementChild);
737
+ if (v.firstElementChild) {
738
+ const Pe = v.firstElementChild;
739
+ $.clear(Pe), $.apply(Pe);
740
+ }
738
741
  return;
739
742
  }
740
743
  v.style.width = `${Z.pageWidthMm * ne}px`;
741
- const J = Re(Z, 96, {}, document);
742
- F.apply(J), v.appendChild(J);
744
+ const J = Te(Z, 96, {}, document);
745
+ $.apply(J), v.appendChild(J);
743
746
  });
744
- }, { flush: "post" }), X(() => F.query.value, (c) => {
747
+ }, { flush: "post" }), X(() => $.query.value, (c) => {
745
748
  c || h.value?.querySelectorAll(".mrp-page-holder").forEach((E) => {
746
- F.clear(E);
749
+ $.clear(E);
747
750
  });
748
751
  });
749
- const we = ut(t, {
752
+ const we = ct(t, {
750
753
  thumbsRoot: i,
751
754
  visible: u,
752
755
  renderThumbCanvas: (c) => {
753
756
  try {
754
- const { canvases: E } = Je(t.value, { start: c, end: c, dpr: 0.2 });
757
+ const { canvases: E } = Xe(t.value, { start: c, end: c, dpr: 0.2 });
755
758
  return E[0] ?? null;
756
759
  } catch {
757
760
  return null;
758
761
  }
759
762
  }
760
763
  });
761
- Pe(() => {
764
+ xe(() => {
762
765
  we.schedule();
763
766
  }, { flush: "post" });
764
- const Ne = x(() => n.debug), { debugStats: j } = it(Ne, {
767
+ const De = x(() => n.debug), { debugStats: j } = ut(De, {
765
768
  plan: t,
766
769
  pageCount: w,
767
770
  windowRange: Y,
@@ -771,17 +774,17 @@ const Tt = { class: "mrp-main" }, St = {
771
774
  function ye() {
772
775
  be(g.value), A.value === "fit" && ve();
773
776
  }
774
- function De() {
777
+ function Ae() {
775
778
  try {
776
- const c = JSON.parse(localStorage.getItem(Me) ?? "{}");
779
+ const c = JSON.parse(localStorage.getItem(Ce) ?? "{}");
777
780
  c.zoomMode === "fit" ? ie("fit") : typeof c.zoomMode == "number" && ie(c.zoomMode);
778
781
  } catch {
779
782
  }
780
783
  }
781
- return je(() => {
782
- window.addEventListener("resize", ye), be(g.value), De(), n.autoLoad && U();
783
- }), qe(() => {
784
- window.removeEventListener("resize", ye), we.destroy(), ze();
784
+ return qe(() => {
785
+ window.addEventListener("resize", ye), be(g.value), Ae(), n.autoLoad && U();
786
+ }), Ke(() => {
787
+ window.removeEventListener("resize", ye), we.destroy(), $.reset(), We();
785
788
  }), X(
786
789
  () => [n.tempId, n.furnitureTempId, JSON.stringify(n.params)],
787
790
  () => {
@@ -796,7 +799,7 @@ const Tt = { class: "mrp-main" }, St = {
796
799
  class: "mach-report-preview",
797
800
  style: q(_.value)
798
801
  }, [
799
- Ke(xt, {
802
+ Ve(Et, {
800
803
  "page-count": w.value,
801
804
  "current-page": d.value,
802
805
  "zoom-mode": m(A),
@@ -805,36 +808,36 @@ const Tt = { class: "mrp-main" }, St = {
805
808
  "show-print": O.value,
806
809
  "show-pdf-window": D.value,
807
810
  messages: N.value,
808
- search: { visible: m(F).visible.value, query: m(F).query.value, matchIndex: m(F).matchIndex.value, matchCount: m(F).matchCount.value },
811
+ search: { visible: m($).visible.value, query: m($).query.value, matchIndex: m($).matchIndex.value, matchCount: m($).matchCount.value },
809
812
  "thumbs-visible": u.value,
810
813
  onGoto: z,
811
814
  onZoom: m(ie),
812
- onExport: E[0] || (E[0] = ($) => m(pe)($)),
815
+ onExport: E[0] || (E[0] = (R) => m(pe)(R)),
813
816
  onPrint: m(fe),
814
817
  onPdfWindow: m(me),
815
- onSearchInput: m(F).onInput,
816
- onSearchNav: m(F).onNav,
817
- onSearchToggle: m(F).toggle,
818
- onThumbsToggle: E[1] || (E[1] = ($) => u.value = !u.value)
818
+ onSearchInput: m($).onInput,
819
+ onSearchNav: m($).onNav,
820
+ onSearchToggle: m($).toggle,
821
+ onThumbsToggle: E[1] || (E[1] = (R) => u.value = !u.value)
819
822
  }, null, 8, ["page-count", "current-page", "zoom-mode", "zoom", "show-export", "show-print", "show-pdf-window", "messages", "search", "thumbs-visible", "onZoom", "onPrint", "onPdfWindow", "onSearchInput", "onSearchNav", "onSearchToggle"]),
820
- y("div", Tt, [
823
+ y("div", St, [
821
824
  y("div", {
822
825
  ref_key: "viewportRef",
823
826
  ref: g,
824
827
  class: "mrp-body",
825
828
  tabindex: "0",
826
- onWheel: We,
827
- onKeydown: He,
828
- onScrollPassive: E[2] || (E[2] = ($) => m(Le)($.target))
829
+ onWheel: He,
830
+ onKeydown: Oe,
831
+ onScrollPassive: E[2] || (E[2] = (R) => m(ze)(R.target))
829
832
  }, [
830
- s.value ? (M(), C("div", St, P(N.value.loading), 1)) : l.value ? (M(), C("div", Ft, [
831
- Ve(P(l.value) + " ", 1),
833
+ s.value ? (M(), C("div", Ft, P(N.value.loading), 1)) : l.value ? (M(), C("div", It, [
834
+ Ge(P(l.value) + " ", 1),
832
835
  y("button", {
833
836
  class: "mrp-retry",
834
837
  type: "button",
835
838
  onClick: U
836
839
  }, P(N.value.retry), 1)
837
- ])) : !t.value || w.value === 0 ? (M(), C("div", It, P(N.value.empty), 1)) : (M(), C("div", {
840
+ ])) : !t.value || w.value === 0 ? (M(), C("div", Bt, P(N.value.empty), 1)) : (M(), C("div", {
838
841
  key: 3,
839
842
  class: "mrp-scale",
840
843
  style: q({ width: `${m(ue).w * m(I)}px`, height: `${m(ue).h * m(I)}px` })
@@ -851,11 +854,11 @@ const Tt = { class: "mrp-main" }, St = {
851
854
  style: q({ height: `${m(Y).padTopPx}px` }),
852
855
  "aria-hidden": "true"
853
856
  }, null, 4)) : L("", !0),
854
- (M(!0), C(ge, null, xe(m(Ie), ($) => (M(), C("div", {
855
- key: $.index,
857
+ (M(!0), C(ge, null, Ee(m(Be), (R) => (M(), C("div", {
858
+ key: R.index,
856
859
  class: "mrp-page-holder",
857
- "data-page": $.index + 1
858
- }, null, 8, Bt))), 128)),
860
+ "data-page": R.index + 1
861
+ }, null, 8, Lt))), 128)),
859
862
  m(Y).padBottomPx > 0 ? (M(), C("div", {
860
863
  key: 1,
861
864
  class: "mrp-spacer-bottom",
@@ -871,24 +874,24 @@ const Tt = { class: "mrp-main" }, St = {
871
874
  ref: i,
872
875
  class: "mrp-thumbs"
873
876
  }, [
874
- (M(!0), C(ge, null, xe(t.value?.pages ?? [], ($, v) => (M(), C("div", {
877
+ (M(!0), C(ge, null, Ee(t.value?.pages ?? [], (R, v) => (M(), C("div", {
875
878
  key: v,
876
879
  class: V(["mrp-thumb", { "mrp-thumb-active": v + 1 === d.value }]),
877
- onClick: (R) => z(v + 1)
880
+ onClick: (T) => z(v + 1)
878
881
  }, [
879
882
  y("div", {
880
883
  class: "mrp-thumb-box",
881
884
  "data-thumb": v + 1,
882
- style: q({ height: `${Math.round($.pageHeightMm / $.pageWidthMm * 116)}px` })
883
- }, null, 12, zt),
884
- y("span", Wt, P(v + 1), 1)
885
- ], 10, Lt))), 128))
885
+ style: q({ height: `${Math.round(R.pageHeightMm / R.pageWidthMm * 116)}px` })
886
+ }, null, 12, Wt),
887
+ y("span", Ht, P(v + 1), 1)
888
+ ], 10, zt))), 128))
886
889
  ], 512)) : L("", !0)
887
890
  ]),
888
- y("div", Ht, [
889
- Ge(c.$slots, "default", {}, void 0, !0)
891
+ y("div", Ot, [
892
+ Ye(c.$slots, "default", {}, void 0, !0)
890
893
  ]),
891
- m(j) ? (M(), C("div", Ot, [
894
+ m(j) ? (M(), C("div", Nt, [
892
895
  E[3] || (E[3] = y("div", null, "mach-report debug", -1)),
893
896
  y("div", null, "pages: " + P(m(j).pages) + " | window: [" + P(m(j).window) + "]", 1),
894
897
  y("div", null, "zoom: " + P(m(j).zoom) + " | load: " + P(m(j).loadMs), 1),
@@ -896,28 +899,28 @@ const Tt = { class: "mrp-main" }, St = {
896
899
  ])) : L("", !0)
897
900
  ], 4));
898
901
  }
899
- }), Dt = /* @__PURE__ */ Se(Nt, [["__scopeId", "data-v-02570f40"]]), Jt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
902
+ }), At = /* @__PURE__ */ Fe(Dt, [["__scopeId", "data-v-2e98692a"]]), Xt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
900
903
  __proto__: null,
901
- default: Dt
904
+ default: At
902
905
  }, Symbol.toStringTag, { value: "Module" }));
903
906
  export {
904
- Et as D,
907
+ Mt as D,
905
908
  re as M,
906
- Dt as R,
907
- Yt as S,
908
- Mt as a,
909
- xt as b,
909
+ At as R,
910
+ Zt as S,
911
+ Ct as a,
912
+ Et as b,
910
913
  oe as c,
911
- Vt as d,
912
- Gt as e,
913
- Zt as f,
914
- Rt as g,
915
- nt as h,
916
- rt as i,
917
- ot as j,
918
- Jt as k,
919
- Kt as p,
920
- Ct as r,
921
- kt as t,
922
- $t as u
914
+ Gt as d,
915
+ Yt as e,
916
+ Jt as f,
917
+ Tt as g,
918
+ ot as h,
919
+ at as i,
920
+ rt as j,
921
+ Xt as k,
922
+ Vt as p,
923
+ kt as r,
924
+ $t as t,
925
+ Rt as u
923
926
  };
@@ -62,7 +62,7 @@ function w(r = { fontUrl: "/simhei.ttf" }) {
62
62
  return a;
63
63
  };
64
64
  }
65
- const R = "mach-report/fetcher", b = "mach-report/pdf-exporter", y = "mach-report/config", A = "mach-report/controller", U = d(() => import("./ReportPreview-BFTfls8h.js").then((r) => r.k)), C = {
65
+ const R = "mach-report/fetcher", b = "mach-report/pdf-exporter", y = "mach-report/config", A = "mach-report/controller", U = d(() => import("./ReportPreview-VCx59rSt.js").then((r) => r.k)), C = {
66
66
  install(r, e = {}) {
67
67
  const o = e.fetcher ?? P({
68
68
  request: e.request ?? E({ baseUrl: e.baseUrl }),
@@ -1 +1 @@
1
- "use strict";var O=Object.create;var E=Object.defineProperty;var A=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var y=Object.getPrototypeOf,F=Object.prototype.hasOwnProperty;var U=(r,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of b(e))!F.call(r,n)&&n!==t&&E(r,n,{get:()=>e[n],enumerable:!(o=A(e,n))||o.enumerable});return r};var M=(r,e,t)=>(t=r!=null?O(y(r)):{},U(e||!r||!r.__esModule?E(t,"default",{value:r,enumerable:!0}):t,r));const R=require("vue");function m(r){return r==null?[]:Array.isArray(r)?r.map(String).filter(e=>e!==""):String(r).split(",").map(e=>e.trim()).filter(e=>e!=="")}function j(r){return m(r).join(",")}class s extends Error{constructor(e){super(e),this.name="PlanLoadError"}}function P(r={}){const{baseUrl:e="",headers:t,credentials:o,timeoutMs:n=3e4}=r;return async({url:c,method:i,params:a})=>{const h=a&&Object.keys(a).length>0?`?${new URLSearchParams(a)}`:"",l=new AbortController,f=setTimeout(()=>l.abort(),n);let d;try{d=await fetch(`${e}${c}${h}`,{method:i.toUpperCase(),headers:{Accept:"application/json",...t},credentials:o,signal:l.signal})}catch(u){throw u instanceof DOMException&&u.name==="AbortError"?new s(`请求超时(${n}ms): ${c}`):new s(`请求失败(${c}): ${u instanceof Error?u.message:String(u)}`)}finally{clearTimeout(f)}if(!d.ok)throw new s(`HTTP ${d.status} ${c}`);return d.json()}}function p(r){const{request:e,baseUrl:t=""}=r;return async({tempIds:o,furnitureTempId:n,params:c})=>{if(o.length===0)throw new s("缺少报表模板 ID");const i={tempId:o.join(",")};n&&(i.furnitureTempId=n);for(const[l,f]of Object.entries(c||{}))l&&f!=null&&f!==""&&(i[l]=String(f));const a=await e({url:`${t}/report/codePrintReport/gridPlan`,method:"get",params:i});if(a&&a.code!=null&&a.code!==200)throw new s(String(a.message||"预览加载失败"));const h=a?.data?.pages;return{schemaVersion:"jh4j-compatible",pages:Array.isArray(h)?h:[]}}}function _(r={fontUrl:"/simhei.ttf"}){let e=null;return async t=>{e||(e=await import("@agile-team/mach-report/pdf"));const o=r.fontUrl?await e.loadFontWithCache(r.fontUrl):null,{bytes:n}=await e.renderPlanToPdf(t,o?{customFontBytes:o}:{});return n}}const T="mach-report/fetcher",g="mach-report/pdf-exporter",w="mach-report/config",$="mach-report/controller",C=R.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ReportPreview-D6VHDUvR.cjs")).then(r=>r.ReportPreview$1)),H={install(r,e={}){const t=e.fetcher??p({request:e.request??P({baseUrl:e.baseUrl}),baseUrl:e.baseUrl});r.provide(T,t);const o=e.pdfFontUrl??e.config?.defaults?.pdfFontUrl??"/simhei.ttf";r.provide(g,e.pdfExporter??_({fontUrl:o})),r.provide(w,R.computed(()=>e.config??null)),e.globalComponent!==!1&&r.component("MachReportPreview",C)}};exports.MACH_REPORT_CONFIG_KEY=w;exports.MACH_REPORT_CONTROLLER_KEY=$;exports.MACH_REPORT_FETCHER_KEY=T;exports.MACH_REPORT_PDF_EXPORTER_KEY=g;exports.MachReportPreview=C;exports.PlanLoadError=s;exports.createDefaultPdfExporter=_;exports.createFetchRequest=P;exports.createJh4jGridPlanFetcher=p;exports.joinTempIds=j;exports.machReportPlugin=H;exports.normalizeTempIds=m;
1
+ "use strict";var O=Object.create;var E=Object.defineProperty;var A=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var y=Object.getPrototypeOf,F=Object.prototype.hasOwnProperty;var U=(r,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of b(e))!F.call(r,n)&&n!==t&&E(r,n,{get:()=>e[n],enumerable:!(o=A(e,n))||o.enumerable});return r};var M=(r,e,t)=>(t=r!=null?O(y(r)):{},U(e||!r||!r.__esModule?E(t,"default",{value:r,enumerable:!0}):t,r));const R=require("vue");function m(r){return r==null?[]:Array.isArray(r)?r.map(String).filter(e=>e!==""):String(r).split(",").map(e=>e.trim()).filter(e=>e!=="")}function j(r){return m(r).join(",")}class s extends Error{constructor(e){super(e),this.name="PlanLoadError"}}function P(r={}){const{baseUrl:e="",headers:t,credentials:o,timeoutMs:n=3e4}=r;return async({url:c,method:i,params:a})=>{const h=a&&Object.keys(a).length>0?`?${new URLSearchParams(a)}`:"",l=new AbortController,f=setTimeout(()=>l.abort(),n);let d;try{d=await fetch(`${e}${c}${h}`,{method:i.toUpperCase(),headers:{Accept:"application/json",...t},credentials:o,signal:l.signal})}catch(u){throw u instanceof DOMException&&u.name==="AbortError"?new s(`请求超时(${n}ms): ${c}`):new s(`请求失败(${c}): ${u instanceof Error?u.message:String(u)}`)}finally{clearTimeout(f)}if(!d.ok)throw new s(`HTTP ${d.status} ${c}`);return d.json()}}function p(r){const{request:e,baseUrl:t=""}=r;return async({tempIds:o,furnitureTempId:n,params:c})=>{if(o.length===0)throw new s("缺少报表模板 ID");const i={tempId:o.join(",")};n&&(i.furnitureTempId=n);for(const[l,f]of Object.entries(c||{}))l&&f!=null&&f!==""&&(i[l]=String(f));const a=await e({url:`${t}/report/codePrintReport/gridPlan`,method:"get",params:i});if(a&&a.code!=null&&a.code!==200)throw new s(String(a.message||"预览加载失败"));const h=a?.data?.pages;return{schemaVersion:"jh4j-compatible",pages:Array.isArray(h)?h:[]}}}function _(r={fontUrl:"/simhei.ttf"}){let e=null;return async t=>{e||(e=await import("@agile-team/mach-report/pdf"));const o=r.fontUrl?await e.loadFontWithCache(r.fontUrl):null,{bytes:n}=await e.renderPlanToPdf(t,o?{customFontBytes:o}:{});return n}}const T="mach-report/fetcher",g="mach-report/pdf-exporter",w="mach-report/config",$="mach-report/controller",C=R.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ReportPreview-D-Us9mrX.cjs")).then(r=>r.ReportPreview$1)),H={install(r,e={}){const t=e.fetcher??p({request:e.request??P({baseUrl:e.baseUrl}),baseUrl:e.baseUrl});r.provide(T,t);const o=e.pdfFontUrl??e.config?.defaults?.pdfFontUrl??"/simhei.ttf";r.provide(g,e.pdfExporter??_({fontUrl:o})),r.provide(w,R.computed(()=>e.config??null)),e.globalComponent!==!1&&r.component("MachReportPreview",C)}};exports.MACH_REPORT_CONFIG_KEY=w;exports.MACH_REPORT_CONTROLLER_KEY=$;exports.MACH_REPORT_FETCHER_KEY=T;exports.MACH_REPORT_PDF_EXPORTER_KEY=g;exports.MachReportPreview=C;exports.PlanLoadError=s;exports.createDefaultPdfExporter=_;exports.createFetchRequest=P;exports.createJh4jGridPlanFetcher=p;exports.joinTempIds=j;exports.machReportPlugin=H;exports.normalizeTempIds=m;
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .mrp-toolbar[data-v-f50c26e8]{display:flex;align-items:center;gap:8px;padding:6px 12px;background:var(--mrp-toolbar-bg, #323639);border-bottom:1px solid var(--mrp-toolbar-border, #22252a);flex:none;flex-wrap:wrap}.mrp-title[data-v-f50c26e8]{font-size:13px;font-weight:600;margin-right:8px;color:var(--mrp-toolbar-fg, #e8e8e8)}.mrp-nav[data-v-f50c26e8]{background:transparent;color:var(--mrp-btn-fg, #cfcfcf);border:1px solid var(--mrp-btn-border, #4a4d52);border-radius:4px;padding:2px 8px;font-size:12px;cursor:pointer;white-space:nowrap}.mrp-nav[data-v-f50c26e8]:hover:not(:disabled){background:var(--mrp-btn-hover-bg, #414549);color:var(--mrp-btn-hover-fg, #fff)}.mrp-nav[data-v-f50c26e8]:disabled{opacity:.4;cursor:not-allowed}.mrp-active[data-v-f50c26e8]{background:var(--mrp-btn-active-bg, #2d5fb8);border-color:var(--mrp-btn-active-bg, #2d5fb8);color:#fff}.mrp-pageinfo[data-v-f50c26e8]{font-size:12px;min-width:56px;text-align:center;color:var(--mrp-toolbar-fg, #e8e8e8)}.mrp-spacer[data-v-f50c26e8]{flex:1}.mrp-search[data-v-f50c26e8]{display:flex;align-items:center;gap:4px}.mrp-search-input[data-v-f50c26e8]{background:#22252a;color:#e8e8e8;border:1px solid var(--mrp-btn-border, #4a4d52);border-radius:4px;padding:2px 8px;font-size:12px;width:150px;outline:none}.mrp-search-input[data-v-f50c26e8]:focus{border-color:var(--mrp-btn-active-bg, #2d5fb8)}.mrp-search-count[data-v-f50c26e8]{font-size:12px;color:var(--mrp-toolbar-fg, #e8e8e8);min-width:42px;text-align:center}.mach-report-preview[data-v-02570f40]{--mrp-shell-bg: #525659;--mrp-shell-fg: #e8e8e8;--mrp-toolbar-bg: #323639;--mrp-toolbar-border: #22252a;--mrp-toolbar-fg: #e8e8e8;--mrp-btn-fg: #cfcfcf;--mrp-btn-border: #4a4d52;--mrp-btn-hover-bg: #414549;--mrp-btn-hover-fg: #ffffff;--mrp-btn-active-bg: #2d5fb8;position:relative;display:flex;flex-direction:column;background:var(--mrp-shell-bg);color:var(--mrp-shell-fg);overflow:hidden}.mrp-main[data-v-02570f40]{display:flex;flex:1;min-height:0}.mrp-body[data-v-02570f40]{flex:1;overflow:auto;padding:24px;outline:none}.mrp-scale[data-v-02570f40]{margin:0 auto}.mrp-scale-inner[data-v-02570f40]{display:flex;flex-direction:column;align-items:center}.mrp-page-holder[data-v-02570f40]{background:#fff;box-shadow:0 2px 8px #00000059;margin-bottom:var(--v6094bc50);flex:none}.mrp-state[data-v-02570f40]{padding:40px;text-align:center;color:#bfbfbf;font-size:13px}.mrp-error[data-v-02570f40]{color:#ff9d9d}.mrp-retry[data-v-02570f40]{margin-left:12px;background:transparent;color:#8fb7ff;border:1px solid #5a7fbf;border-radius:4px;padding:1px 10px;cursor:pointer}.mrp-overlay[data-v-02570f40]{position:absolute;inset:0;pointer-events:none}.mrp-page-holder[data-v-02570f40] mark.mrp-hit{background:#ffe066;color:#7a5c00;border-radius:2px;padding:0 1px}.mrp-thumbs[data-v-02570f40]{width:140px;flex:none;overflow-y:auto;border-left:1px solid var(--mrp-toolbar-border);background:var(--mrp-toolbar-bg);padding:8px;display:flex;flex-direction:column;gap:8px}.mrp-thumb[data-v-02570f40]{cursor:pointer;text-align:center}.mrp-thumb-box[data-v-02570f40]{width:116px;background:#fff;box-shadow:0 1px 4px #0006;overflow:hidden;border:2px solid transparent}.mrp-thumb-active .mrp-thumb-box[data-v-02570f40]{border-color:var(--mrp-btn-active-bg)}.mrp-thumb-no[data-v-02570f40]{font-size:11px;color:var(--mrp-toolbar-fg)}.mrp-debug[data-v-02570f40]{position:absolute;right:8px;bottom:8px;background:#000000c7;color:#7ee787;font:11px/1.6 ui-monospace,monospace;padding:6px 10px;border-radius:6px;pointer-events:none;white-space:pre}
1
+ .mrp-toolbar[data-v-f50c26e8]{display:flex;align-items:center;gap:8px;padding:6px 12px;background:var(--mrp-toolbar-bg, #323639);border-bottom:1px solid var(--mrp-toolbar-border, #22252a);flex:none;flex-wrap:wrap}.mrp-title[data-v-f50c26e8]{font-size:13px;font-weight:600;margin-right:8px;color:var(--mrp-toolbar-fg, #e8e8e8)}.mrp-nav[data-v-f50c26e8]{background:transparent;color:var(--mrp-btn-fg, #cfcfcf);border:1px solid var(--mrp-btn-border, #4a4d52);border-radius:4px;padding:2px 8px;font-size:12px;cursor:pointer;white-space:nowrap}.mrp-nav[data-v-f50c26e8]:hover:not(:disabled){background:var(--mrp-btn-hover-bg, #414549);color:var(--mrp-btn-hover-fg, #fff)}.mrp-nav[data-v-f50c26e8]:disabled{opacity:.4;cursor:not-allowed}.mrp-active[data-v-f50c26e8]{background:var(--mrp-btn-active-bg, #2d5fb8);border-color:var(--mrp-btn-active-bg, #2d5fb8);color:#fff}.mrp-pageinfo[data-v-f50c26e8]{font-size:12px;min-width:56px;text-align:center;color:var(--mrp-toolbar-fg, #e8e8e8)}.mrp-spacer[data-v-f50c26e8]{flex:1}.mrp-search[data-v-f50c26e8]{display:flex;align-items:center;gap:4px}.mrp-search-input[data-v-f50c26e8]{background:#22252a;color:#e8e8e8;border:1px solid var(--mrp-btn-border, #4a4d52);border-radius:4px;padding:2px 8px;font-size:12px;width:150px;outline:none}.mrp-search-input[data-v-f50c26e8]:focus{border-color:var(--mrp-btn-active-bg, #2d5fb8)}.mrp-search-count[data-v-f50c26e8]{font-size:12px;color:var(--mrp-toolbar-fg, #e8e8e8);min-width:42px;text-align:center}.mach-report-preview[data-v-2e98692a]{--mrp-shell-bg: #525659;--mrp-shell-fg: #e8e8e8;--mrp-toolbar-bg: #323639;--mrp-toolbar-border: #22252a;--mrp-toolbar-fg: #e8e8e8;--mrp-btn-fg: #cfcfcf;--mrp-btn-border: #4a4d52;--mrp-btn-hover-bg: #414549;--mrp-btn-hover-fg: #ffffff;--mrp-btn-active-bg: #2d5fb8;position:relative;display:flex;flex-direction:column;background:var(--mrp-shell-bg);color:var(--mrp-shell-fg);overflow:hidden}.mrp-main[data-v-2e98692a]{display:flex;flex:1;min-height:0}.mrp-body[data-v-2e98692a]{flex:1;overflow:auto;padding:24px;outline:none}.mrp-scale[data-v-2e98692a]{margin:0 auto}.mrp-scale-inner[data-v-2e98692a]{display:flex;flex-direction:column;align-items:center}.mrp-page-holder[data-v-2e98692a]{background:#fff;box-shadow:0 2px 8px #00000059;margin-bottom:var(--v3c509574);flex:none}.mrp-state[data-v-2e98692a]{padding:40px;text-align:center;color:#bfbfbf;font-size:13px}.mrp-error[data-v-2e98692a]{color:#ff9d9d}.mrp-retry[data-v-2e98692a]{margin-left:12px;background:transparent;color:#8fb7ff;border:1px solid #5a7fbf;border-radius:4px;padding:1px 10px;cursor:pointer}.mrp-overlay[data-v-2e98692a]{position:absolute;inset:0;pointer-events:none}.mrp-page-holder[data-v-2e98692a] mark.mrp-hit{background:#ffe066;color:#7a5c00;border-radius:2px;padding:0 1px}.mrp-thumbs[data-v-2e98692a]{width:140px;flex:none;overflow-y:auto;border-left:1px solid var(--mrp-toolbar-border);background:var(--mrp-toolbar-bg);padding:8px;display:flex;flex-direction:column;gap:8px}.mrp-thumb[data-v-2e98692a]{cursor:pointer;text-align:center}.mrp-thumb-box[data-v-2e98692a]{width:116px;background:#fff;box-shadow:0 1px 4px #0006;overflow:hidden;border:2px solid transparent}.mrp-thumb-active .mrp-thumb-box[data-v-2e98692a]{border-color:var(--mrp-btn-active-bg)}.mrp-thumb-no[data-v-2e98692a]{font-size:11px;color:var(--mrp-toolbar-fg)}.mrp-debug[data-v-2e98692a]{position:absolute;right:8px;bottom:8px;background:#000000c7;color:#7ee787;font:11px/1.6 ui-monospace,monospace;padding:6px 10px;border-radius:6px;pointer-events:none;white-space:pre}
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("vue"),i=require("./plugin-9eBK7khj.cjs"),r=n.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ReportPreview-D6VHDUvR.cjs")).then(e=>e.ReportPreview$1));function c(){return Promise.resolve().then(()=>require("./ReportPreview-D6VHDUvR.cjs")).then(e=>e.ReportPreview$1)}const t={install(e,o={}){i.machReportPlugin.install(e,o),e.component("MachReportPreview",r)}};exports.MachReportPreview=r;exports.default=t;exports.machReportAsyncPlugin=t;exports.preloadMachReport=c;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("vue"),i=require("./plugin-Dh1exwdD.cjs"),r=n.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ReportPreview-D-Us9mrX.cjs")).then(e=>e.ReportPreview$1));function c(){return Promise.resolve().then(()=>require("./ReportPreview-D-Us9mrX.cjs")).then(e=>e.ReportPreview$1)}const t={install(e,o={}){i.machReportPlugin.install(e,o),e.component("MachReportPreview",r)}};exports.MachReportPreview=r;exports.default=t;exports.machReportAsyncPlugin=t;exports.preloadMachReport=c;
package/dist/vue-async.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { defineAsyncComponent as e } from "vue";
2
- import { m as n } from "./plugin-vi2GjP43.js";
3
- const r = e(() => import("./ReportPreview-BFTfls8h.js").then((t) => t.k));
2
+ import { m as n } from "./plugin-Bo8QqzCz.js";
3
+ const r = e(() => import("./ReportPreview-VCx59rSt.js").then((t) => t.k));
4
4
  function m() {
5
- return import("./ReportPreview-BFTfls8h.js").then((t) => t.k);
5
+ return import("./ReportPreview-VCx59rSt.js").then((t) => t.k);
6
6
  }
7
7
  const p = {
8
8
  install(t, o = {}) {
package/dist/vue.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./ReportPreview-D6VHDUvR.cjs"),r=require("./plugin-9eBK7khj.cjs"),c=require("@agile-team/mach-report"),s=require("vue");function p(E){return async({tempIds:t})=>{if(t.length===0)throw new r.PlanLoadError("缺少报表模板 ID");const a=[];for(const n of t){const o=E[n];if(!o)throw new r.PlanLoadError(`本地模板 ${n} 不存在`);const{plan:R,warnings:i}=c.paginateTemplate(o.template,o.datasets??{});i.length>0&&console.warn("[mach-report] 分页告警:",i),a.push(...R.pages)}return{schemaVersion:"mach-local",pages:a}}}function P(){return s.inject(r.MACH_REPORT_CONTROLLER_KEY,null)}exports.DEFAULT_MESSAGES=e.DEFAULT_MESSAGES;exports.DEFAULT_THEME=e.DEFAULT_THEME;exports.MachReportError=e.MachReportError;exports.ReportPreview=e.ReportPreview;exports.ReportToolbar=e.ReportToolbar;exports.SILENT_LOGGER=e.SILENT_LOGGER;exports.buildPrintDocument=e.buildPrintDocument;exports.defineMachReportConfig=e.defineMachReportConfig;exports.defineMachReportPreset=e.defineMachReportPreset;exports.printPlans=e.printPlans;exports.provideMachReportConfig=e.provideMachReportConfig;exports.resolveConfig=e.resolveConfig;exports.themeToCssVars=e.themeToCssVars;exports.toErrorDetail=e.toErrorDetail;exports.useMachReportConfig=e.useMachReportConfig;exports.usePageWindow=e.usePageWindow;exports.usePrintExport=e.usePrintExport;exports.useZoom=e.useZoom;exports.MACH_REPORT_CONFIG_KEY=r.MACH_REPORT_CONFIG_KEY;exports.MACH_REPORT_CONTROLLER_KEY=r.MACH_REPORT_CONTROLLER_KEY;exports.MACH_REPORT_FETCHER_KEY=r.MACH_REPORT_FETCHER_KEY;exports.MACH_REPORT_PDF_EXPORTER_KEY=r.MACH_REPORT_PDF_EXPORTER_KEY;exports.MachReportPreview=r.MachReportPreview;exports.PlanLoadError=r.PlanLoadError;exports.createDefaultPdfExporter=r.createDefaultPdfExporter;exports.createFetchRequest=r.createFetchRequest;exports.createJh4jGridPlanFetcher=r.createJh4jGridPlanFetcher;exports.joinTempIds=r.joinTempIds;exports.machReportPlugin=r.machReportPlugin;exports.normalizeTempIds=r.normalizeTempIds;exports.createLocalFetcher=p;exports.useReportPreview=P;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./ReportPreview-D-Us9mrX.cjs"),r=require("./plugin-Dh1exwdD.cjs"),c=require("@agile-team/mach-report"),s=require("vue");function p(E){return async({tempIds:t})=>{if(t.length===0)throw new r.PlanLoadError("缺少报表模板 ID");const a=[];for(const n of t){const o=E[n];if(!o)throw new r.PlanLoadError(`本地模板 ${n} 不存在`);const{plan:R,warnings:i}=c.paginateTemplate(o.template,o.datasets??{});i.length>0&&console.warn("[mach-report] 分页告警:",i),a.push(...R.pages)}return{schemaVersion:"mach-local",pages:a}}}function P(){return s.inject(r.MACH_REPORT_CONTROLLER_KEY,null)}exports.DEFAULT_MESSAGES=e.DEFAULT_MESSAGES;exports.DEFAULT_THEME=e.DEFAULT_THEME;exports.MachReportError=e.MachReportError;exports.ReportPreview=e.ReportPreview;exports.ReportToolbar=e.ReportToolbar;exports.SILENT_LOGGER=e.SILENT_LOGGER;exports.buildPrintDocument=e.buildPrintDocument;exports.defineMachReportConfig=e.defineMachReportConfig;exports.defineMachReportPreset=e.defineMachReportPreset;exports.printPlans=e.printPlans;exports.provideMachReportConfig=e.provideMachReportConfig;exports.resolveConfig=e.resolveConfig;exports.themeToCssVars=e.themeToCssVars;exports.toErrorDetail=e.toErrorDetail;exports.useMachReportConfig=e.useMachReportConfig;exports.usePageWindow=e.usePageWindow;exports.usePrintExport=e.usePrintExport;exports.useZoom=e.useZoom;exports.MACH_REPORT_CONFIG_KEY=r.MACH_REPORT_CONFIG_KEY;exports.MACH_REPORT_CONTROLLER_KEY=r.MACH_REPORT_CONTROLLER_KEY;exports.MACH_REPORT_FETCHER_KEY=r.MACH_REPORT_FETCHER_KEY;exports.MACH_REPORT_PDF_EXPORTER_KEY=r.MACH_REPORT_PDF_EXPORTER_KEY;exports.MachReportPreview=r.MachReportPreview;exports.PlanLoadError=r.PlanLoadError;exports.createDefaultPdfExporter=r.createDefaultPdfExporter;exports.createFetchRequest=r.createFetchRequest;exports.createJh4jGridPlanFetcher=r.createJh4jGridPlanFetcher;exports.joinTempIds=r.joinTempIds;exports.machReportPlugin=r.machReportPlugin;exports.normalizeTempIds=r.normalizeTempIds;exports.createLocalFetcher=p;exports.useReportPreview=P;
package/dist/vue.js CHANGED
@@ -1,6 +1,6 @@
1
- import { D as T, a as _, M as g, R as M, b as d, S as C, c as w, d as O, e as D, p as F, f as L, r as A, t as H, g as j, u as v, h as x, i as G, j as S } from "./ReportPreview-BFTfls8h.js";
2
- import { P as t, M as c } from "./plugin-vi2GjP43.js";
3
- import { a as I, b as K, c as Y, d as N, e as y, f as U, g as V, j as q, m as z, n as J } from "./plugin-vi2GjP43.js";
1
+ import { D as T, a as _, M as g, R as M, b as d, S as C, c as w, d as O, e as D, p as F, f as L, r as A, t as H, g as j, u as v, h as x, i as G, j as S } from "./ReportPreview-VCx59rSt.js";
2
+ import { P as t, M as c } from "./plugin-Bo8QqzCz.js";
3
+ import { a as I, b as K, c as Y, d as N, e as y, f as U, g as V, j as q, m as z, n as J } from "./plugin-Bo8QqzCz.js";
4
4
  import { paginateTemplate as p } from "@agile-team/mach-report";
5
5
  import { inject as E } from "vue";
6
6
  function h(n) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agile-team/mach-report",
3
- "version": "0.9.0",
3
+ "version": "0.9.1",
4
4
  "description": "MachReport 报表引擎单包:RenderPlan 模型 + 分页 + DOM/Canvas/PDF 渲染 + 动态 SQL + 管理端 API + Vue 3 契约组件(零运行时依赖;./vue 为框架子路径,vue 为可选 peer)",
5
5
  "type": "module",
6
6
  "sideEffects": [