@agile-team/mach-report 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ReportPreview-BQE0C_37.cjs +6 -0
- package/dist/ReportPreview-D8X75aLV.js +825 -0
- package/dist/format.d.ts +35 -0
- package/dist/grid-geometry-BXpOxznT.cjs +1 -0
- package/dist/grid-geometry-Bs8QXz1X.js +65 -0
- package/dist/index.cjs +6 -6
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +811 -606
- package/dist/layout/paginate.d.ts +29 -0
- package/dist/pdf.cjs +46 -46
- package/dist/pdf.js +12 -11
- package/dist/plugin-7W2Zy3Xc.cjs +1 -0
- package/dist/plugin-Bc6Px9Lq.js +92 -0
- package/dist/style-6ihHKVCM.js +192 -0
- package/dist/style-Xq08-IsV.cjs +3 -0
- package/dist/style.css +1 -1
- package/dist/vue/ReportPreview.d.ts +40 -3
- package/dist/vue/ReportToolbar.d.ts +15 -0
- package/dist/vue/adapters.d.ts +3 -0
- package/dist/vue/async.d.cts +209 -64
- package/dist/vue/async.d.ts +209 -64
- package/dist/vue/composables/useHighlight.d.ts +8 -0
- package/dist/vue/composables/usePrintExport.d.ts +7 -0
- package/dist/vue/config.d.ts +9 -0
- package/dist/vue/controller.d.ts +24 -0
- package/dist/vue/errors.d.ts +16 -0
- package/dist/vue/index.d.cts +2 -0
- package/dist/vue/index.d.ts +2 -0
- package/dist/vue/injection-keys.d.ts +2 -0
- package/dist/vue/plugin.d.ts +278 -2
- package/dist/vue-async.cjs +1 -1
- package/dist/vue-async.js +3 -3
- package/dist/vue.cjs +1 -1
- package/dist/vue.js +39 -29
- package/dist/xlsx/render-xlsx.d.ts +20 -0
- package/dist/xlsx.cjs +30 -0
- package/dist/xlsx.d.cts +5 -0
- package/dist/xlsx.d.ts +5 -0
- package/dist/xlsx.js +22647 -0
- package/package.json +13 -2
- package/dist/ReportPreview-DWLjYi_p.js +0 -527
- package/dist/ReportPreview-rBtmbu3W.cjs +0 -6
- package/dist/plugin-BIJxGHZX.cjs +0 -1
- package/dist/plugin-DrV67_VW.js +0 -89
- package/dist/style-B3vxGDZd.cjs +0 -3
- package/dist/style-B7Xfo5I-.js +0 -255
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";const e=require("vue"),I=require("@agile-team/mach-report"),S=require("./plugin-7W2Zy3Xc.cjs");function fe(t,l,n={}){const o=n.pxPerMm??3.7795275590551185,a=n.gapPx??18,s=e.ref(0),d=e.ref(800),m=e.computed(()=>(t.value?.pages??[]).map(c=>c.pageHeightMm*o)),b=e.computed(()=>{const c=t.value?.pages??[];let p=0,f=0;for(const w of c)p+=w.pageHeightMm*o+a,f=Math.max(f,w.pageWidthMm*o);return{w:f,h:p}}),k=e.computed(()=>I.computePageWindow({pageHeightsPx:m.value,viewportHeightPx:d.value/l.value,scrollTopPx:s.value/l.value,overscan:1,gapPx:a})),E=e.computed(()=>{const c=t.value;if(!c)return[];const{start:p,end:f}=k.value;return f<p?[]:c.pages.slice(p,f+1).map((w,y)=>({page:w,index:p+y}))});function g(c,p){let f=0;return w=>{f||(f=requestAnimationFrame(()=>{if(f=0,s.value=w.scrollTop,d.value=w.clientHeight||800,p.value<=0)return;const y=w.querySelectorAll(".mrp-page-holder");if(!y.length)return;const R=w.getBoundingClientRect().top+56;let C=1;y.forEach(j=>{j.getBoundingClientRect().top<=R&&(C=Number(j.dataset.page??1))}),c.value=Math.max(1,Math.min(p.value,C))}))}}return{pageHeightsPx:m,contentSize:b,windowRange:k,visiblePages:E,scrollTop:s,viewportHeight:d,makeScrollHandler:g,refreshViewport(c){c&&(d.value=c.clientHeight||800)}}}function ge(t){const l=e.ref(1),n=e.ref("fit");function o(){requestAnimationFrame(()=>{const s=t();!s||!s.viewport||(l.value=Math.min(1,Math.max(.3,(s.viewport.clientWidth-48)/Math.max(1,s.pageWidthPx))))})}function a(s){s==="fit"?(n.value="fit",o()):(n.value="raw",l.value=s/100)}return{zoom:l,zoomMode:n,applyFitZoom:o,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 A(t){const l=new Map;t.pages.forEach(d=>{l.has(Z(d))||l.set(Z(d),d)});const a=`<!doctype html><html><head><meta charset="utf-8"><style>${`.mr-page{margin:0 auto;page-break-after:always;}
|
|
2
|
+
.mr-page tr{break-inside:avoid;page-break-inside:avoid;}
|
|
3
|
+
.mr-comp{break-inside:avoid;page-break-inside:avoid;}
|
|
4
|
+
${[...l.values()].map(d=>`@page ${Z(d)}{size:${Math.round(d.pageWidthMm)}mm ${Math.round(d.pageHeightMm)}mm;margin:0;}`).join(`
|
|
5
|
+
`)}
|
|
6
|
+
body{margin:0;background:#fff;}`}</style></head><body>`,s=t.pages.map(d=>{const m=I.renderPage(d,96,{},document);return m.style.page=Z(d),m.outerHTML});return{head:a,pageChunks:s}}async function Ke(t,l={}){const n={pages:t.flatMap(d=>d.pages)};if(n.pages.length===0)return;const{head:o,pageChunks:a}=A(n),s=document.createElement("iframe");s.style.cssText="position:fixed;right:0;bottom:0;width:0;height:0;border:0;visibility:hidden;",document.body.appendChild(s);try{const d=s.contentDocument;d.open(),d.write(o);for(let m=0;m<a.length;m++)d.write(a[m]),m%X===X-1&&(l.onProgress?.(m+1,a.length),await Q());d.write("</body></html>"),d.close(),await Q(),l.onProgress?.(a.length,a.length),s.contentWindow?.focus(),s.contentWindow?.print()}finally{setTimeout(()=>s.remove(),6e4)}}function he(t,l){let n=null,o=!1,a=null;function s(){n?.remove(),n=null}function d(g,c){const p=URL.createObjectURL(g),f=document.createElement("a");f.href=p,f.download=c,f.click(),setTimeout(()=>URL.revokeObjectURL(p),1e4)}async function m(){if(o)return;const g=t.value;if(!g||g.pages.length===0)return;o=!0,s();const{head:c,pageChunks:p}=A(g);n=document.createElement("iframe"),n.style.cssText="position:fixed;right:0;bottom:0;width:0;height:0;border:0;visibility:hidden;",document.body.appendChild(n);const f=n;try{const w=f.contentDocument;w.open(),w.write(c);for(let y=0;y<p.length;y++)if(w.write(p[y]),y%X===X-1&&await Q(),f!==n)return;w.write("</body></html>"),w.close(),await Q(),f.contentWindow?.focus(),f.contentWindow?.print()}catch{l.onError("调用打印失败,请改用导出 PDF")}finally{o=!1}}async function b(){if(a)return a;const g=t.value;if(!(!g||g.pages.length===0))return a=(async()=>{try{const c=await l.getPdfExporter()(g);d(new Blob([c],{type:"application/pdf"}),"mach-report.pdf")}catch(c){l.onError(c instanceof Error?`PDF 导出失败: ${c.message}`:"PDF 导出失败")}finally{a=null}})(),a}function k(g){const c=t.value;if(!c||c.pages.length===0)return;if(g==="pdf"){b();return}const{head:p,pageChunks:f}=A(c),w=`${p}${f.join("")}</body></html>`;d(new Blob([w],{type:"text/html;charset=utf-8"}),`mach-report.${g==="html"?"html":g}`)}function E(){const g=t.value;if(!g||g.pages.length===0)return;const{head:c,pageChunks:p}=A(g),f=`${c}${p.join("")}</body></html>`,w=new Blob([f],{type:"text/html;charset=utf-8"}),y=URL.createObjectURL(w),R=window.open(y,"_blank");if(!R){l.onError("浏览器拦截了弹窗,请允许弹窗后重试"),URL.revokeObjectURL(y);return}setTimeout(()=>R.print(),400),setTimeout(()=>URL.revokeObjectURL(y),1e4)}return{print:m,exportAs:k,openPdfWindow:E,releasePrintFrame:s}}const ve="mrp-hit";function qe(t){t.querySelectorAll(`mark.${ve}`).forEach(n=>{const o=n.parentNode;if(o){for(;n.firstChild;)o.insertBefore(n.firstChild,n);n.remove(),o.normalize()}})}function me(t,l){const n=l.trim();if(!n)return 0;const o=n.toLowerCase(),a=document.createTreeWalker(t,NodeFilter.SHOW_TEXT,{acceptNode(m){const b=m.parentElement;return!b||b.closest("mark")||/^(SCRIPT|STYLE)$/.test(b.tagName)?NodeFilter.FILTER_REJECT:(m.nodeValue??"").toLowerCase().includes(o)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT}}),s=[];for(let m=a.nextNode();m;m=a.nextNode())s.push(m);let d=0;for(const m of s){const b=m.nodeValue??"",k=b.toLowerCase(),E=m.parentElement;if(!E)continue;const g=document.createDocumentFragment();let c=0,p=k.indexOf(o);for(;p>=0;){p>c&&g.appendChild(document.createTextNode(b.slice(c,p)));const f=document.createElement("mark");f.className=ve,f.textContent=b.slice(p,p+n.length),g.appendChild(f),d++,c=p+n.length,p=k.indexOf(o,c)}c<b.length&&g.appendChild(document.createTextNode(b.slice(c))),E.replaceChild(g,m)}return d}const Ye={class:"mrp-toolbar"},Ge={class:"mrp-title"},Ze=["disabled"],Je={class:"mrp-pageinfo"},Xe=["disabled"],Qe={key:1,class:"mrp-search"},_e=["placeholder","value"],et={key:0,class:"mrp-search-count"},tt=["disabled"],ot=["disabled"],nt=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){function l(n,o,a){return n.replace("{cur}",String(o)).replace("{total}",String(a))}return(n,o)=>(e.openBlock(),e.createElementBlock("div",Ye,[e.createElementVNode("span",Ge,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]=a=>n.$emit("goto",t.currentPage-1))},e.toDisplayString(t.messages.prevPage),9,Ze),e.createElementVNode("span",Je,e.toDisplayString(l(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]=a=>n.$emit("goto",t.currentPage+1))},e.toDisplayString(t.messages.nextPage),9,Xe)],64)):e.createCommentVNode("",!0),o[14]||(o[14]=e.createElementVNode("span",{class:"mrp-spacer"},null,-1)),t.search.visible?(e.openBlock(),e.createElementBlock("div",Qe,[e.createElementVNode("input",{class:"mrp-search-input",type:"text",placeholder:t.messages.searchPlaceholder,value:t.search.query,onInput:o[2]||(o[2]=a=>n.$emit("search-input",a.target.value))},null,40,_e),t.search.query?(e.openBlock(),e.createElementBlock("span",et,e.toDisplayString(l(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]=a=>n.$emit("search-nav",-1))},e.toDisplayString(t.messages.prevMatch),9,tt),e.createElementVNode("button",{class:"mrp-nav",type:"button",disabled:t.search.matchCount===0,onClick:o[4]||(o[4]=a=>n.$emit("search-nav",1))},e.toDisplayString(t.messages.nextMatch),9,ot)])):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]=a=>n.$emit("search-toggle"))}," 🔍 ",2),e.createElementVNode("button",{class:e.normalizeClass(["mrp-nav",{"mrp-active":t.thumbsVisible}]),type:"button",onClick:o[6]||(o[6]=a=>n.$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]=a=>n.$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]=a=>n.$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]=a=>n.$emit("zoom",150))}," 150% ",2),t.showExport?(e.openBlock(),e.createElementBlock("button",{key:2,class:"mrp-nav",type:"button",onClick:o[10]||(o[10]=a=>n.$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]=a=>n.$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]=a=>n.$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]=a=>n.$emit("pdf-window"))},e.toDisplayString(t.messages.pdfWindow),1)):e.createCommentVNode("",!0)]))}}),be=(t,l)=>{const n=t.__vccOpts||t;for(const[o,a]of l)n[o]=a;return n},we=be(nt,[["__scopeId","data-v-ad937777"]]),ye={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:"缩略图"},Ee={shellBg:"#525659",shellFg:"#e8e8e8",toolbarBg:"#323639",toolbarBorder:"#22252a",toolbarFg:"#e8e8e8",btnFg:"#cfcfcf",btnBorder:"#4a4d52",btnHoverBg:"#414549",btnHoverFg:"#ffffff",btnActiveBg:"#2d5fb8"};function rt(t){return t}function at(t){return t}const H={showExport:!0,showPrint:!0,showPdfWindow:!0,gapPx:18,pdfFontUrl:"/simhei.ttf"};function Pe(t,l){const n=l?t?.presets?.[l]:t?.defaultPreset?t?.presets?.[t.defaultPreset]:void 0,o={...t?.defaults,...n};return{showExport:o.showExport??H.showExport,showPrint:o.showPrint??H.showPrint,showPdfWindow:o.showPdfWindow??H.showPdfWindow,gapPx:o.gapPx??H.gapPx,pdfFontUrl:o.pdfFontUrl??H.pdfFontUrl,theme:{...Ee,...o.theme},messages:{...ye,...o.messages}}}function ke(t){const l={};return t.shellBg!=null&&(l["--mrp-shell-bg"]=t.shellBg),t.shellFg!=null&&(l["--mrp-shell-fg"]=t.shellFg),t.toolbarBg!=null&&(l["--mrp-toolbar-bg"]=t.toolbarBg),t.toolbarBorder!=null&&(l["--mrp-toolbar-border"]=t.toolbarBorder),t.toolbarFg!=null&&(l["--mrp-toolbar-fg"]=t.toolbarFg),t.btnFg!=null&&(l["--mrp-btn-fg"]=t.btnFg),t.btnBorder!=null&&(l["--mrp-btn-border"]=t.btnBorder),t.btnHoverBg!=null&&(l["--mrp-btn-hover-bg"]=t.btnHoverBg),t.btnHoverFg!=null&&(l["--mrp-btn-hover-fg"]=t.btnHoverFg),t.btnActiveBg!=null&&(l["--mrp-btn-active-bg"]=t.btnActiveBg),l}function lt(t){const l=e.inject(S.MACH_REPORT_CONFIG_KEY,null),n=e.computed(()=>{const o=l?.value??null,a="defaults"in t&&"presets"in t?t:{defaults:t,presets:{}};return o?{defaults:{...o.defaults,...a.defaults},presets:{...o.presets,...a.presets},defaultPreset:a.defaultPreset??o.defaultPreset}:a});e.provide(S.MACH_REPORT_CONFIG_KEY,n)}function Ce(){return e.inject(S.MACH_REPORT_CONFIG_KEY,e.computed(()=>null))}class U extends Error{constructor(l,n,o){super(n),this.name="MachReportError",this.code=l,this.cause=o}}function xe(t){return t instanceof U?{code:t.code,cause:t.cause}:{code:"render",cause:t}}const st={class:"mrp-main"},it={key:0,class:"mrp-state"},ct={key:1,class:"mrp-state mrp-error"},ut={key:2,class:"mrp-state"},dt=["data-page"],mt=["onClick"],pt=["data-thumb"],ft={class:"mrp-thumb-no"},gt={class:"mrp-overlay"},ht={key:0,class:"mrp-debug","aria-hidden":"true"},J=96/25.4,pe="mach-report:ui",vt=116,bt=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:l,emit:n}){e.useCssVars(r=>({v30a2b5ba:p.value+"px"}));const o=t,a=n,s=e.shallowRef(null),d=e.ref(!1),m=e.ref(""),b=e.ref(1),k=e.ref(null),E=e.ref(null),g=e.ref(null),c=e.ref(0),p=e.computed(()=>Math.max(0,le.value)),f=e.inject(S.MACH_REPORT_FETCHER_KEY,null),y=e.inject(S.MACH_REPORT_PDF_EXPORTER_KEY,null)??S.createDefaultPdfExporter({fontUrl:"/simhei.ttf"}),R=e.computed(()=>S.normalizeTempIds(o.tempId)),C=e.computed(()=>s.value?.pages.length??0),j=Ce(),$=e.computed(()=>Pe(j.value,o.preset)),K=e.computed(()=>({...$.value.messages,...o.messages})),Be=e.computed(()=>o.showExport??$.value.showExport),Se=e.computed(()=>o.showPrint??$.value.showPrint),Re=e.computed(()=>o.showPdfWindow??$.value.showPdfWindow),le=e.computed(()=>o.gapPx??$.value.gapPx),$e=e.computed(()=>({height:o.height,...ke($.value.theme)})),{zoom:P,zoomMode:T,applyFitZoom:se,setZoom:_}=ge(()=>({viewport:E.value,pageWidthPx:(s.value?.pages[0]?.pageWidthMm??210)*J})),Te=fe(s,P,{pxPerMm:J,gapPx:le.value}),{contentSize:ee,windowRange:N,visiblePages:Ne,makeScrollHandler:Fe,refreshViewport:ie}=Te,De=Fe(b,C);function te(r){T.value="raw",P.value=Math.min(3,Math.max(.3,r))}function oe(){s.value=null,b.value=1,D.value="",z.value=0}let q=0;async function F(){const r=++q,i=o.fetcher??f;if(R.value.length===0){m.value="缺少报表模板 ID",oe(),a("error",m.value,{code:"param"});return}if(!i){m.value="未提供渲染数据源 fetcher",oe(),a("error",m.value,{code:"config"});return}d.value=!0,m.value="",oe();const u=typeof performance<"u"?performance.now():0;try{const v=await i({tempIds:R.value,furnitureTempId:o.furnitureTempId||void 0,params:{...o.params}});if(r!==q)return;const h=I.validateRenderPlan(v);if(!h.ok){const B=h.errors.slice(0,3).map(x=>`${x.path}: ${x.message}`).join("; ");throw new U("validate",`渲染计划校验失败(${h.errors.length} 处): ${B}`)}h.warnings.length>0&&console.warn("[mach-report] 渲染计划告警:",h.warnings),s.value=v,b.value=1,c.value=u?Math.round(performance.now()-u):0,E.value&&(E.value.scrollTop=0),T.value==="fit"&&se(),a("loaded",v.pages.length)}catch(v){if(r!==q)return;const h=v instanceof U?v:new U("fetch",v instanceof Error?v.message:"预览加载失败",v);m.value=h.message,a("error",h.message,xe(h))}finally{r===q&&(d.value=!1)}}function M(r){if(C.value<=0)return;const i=Math.max(1,Math.min(C.value,r));b.value=i;const u=E.value;if(!u)return;let v=0;for(let h=0;h<i-1;h++)v+=(s.value?.pages[h]?.pageHeightMm??0)*J+p.value;u.scrollTop=v*P.value}const{print:ne,exportAs:re,openPdfWindow:ae,releasePrintFrame:ze}=he(s,{getPdfExporter:()=>y,onError:r=>a("error",r,{code:"print"})}),Ve={reload:F,print:ne,exportAs:re,openPdfWindow:ae,gotoPage:M};e.provide(S.MACH_REPORT_CONTROLLER_KEY,Ve);function Le(r){r.ctrlKey&&(r.preventDefault(),te(P.value*(r.deltaY<0?1.1:1/1.1)))}function Oe(r){if((r.ctrlKey||r.metaKey)&&r.key.toLowerCase()==="f"){r.preventDefault(),Y.value=!0;return}switch(r.key){case"PageDown":r.preventDefault(),M(b.value+1);break;case"PageUp":r.preventDefault(),M(b.value-1);break;case"Home":r.preventDefault(),M(1);break;case"End":r.preventDefault(),M(C.value);break;case"+":case"=":r.preventDefault(),te(P.value*1.1);break;case"-":r.preventDefault(),te(P.value/1.1);break}}function We(){try{localStorage.setItem(pe,JSON.stringify({zoomMode:T.value==="fit"?"fit":Math.round(P.value*100)}))}catch{}}e.watch([T,P],We);const Y=e.ref(!1),D=e.ref(""),z=e.ref(0);function ce(r,i){let u=0,v=r.toLowerCase().indexOf(i);for(;v>=0;)u++,v=r.toLowerCase().indexOf(i,v+i.length);return u}const G=e.computed(()=>{const r=D.value.trim().toLowerCase(),i=s.value;if(!r||!i)return[];const u=[];return i.pages.forEach((v,h)=>{for(const B of v.components)if(B.grid){for(const x of B.grid.cells??[])for(const W of x??[])if(typeof W?.text=="string")for(let de=0;de<ce(W.text,r);de++)u.push(h)}else if(B.kind==="text"&&typeof B.text=="string")for(let x=0;x<ce(B.text,r);x++)u.push(h)}),u});function He(r){D.value=r,z.value=0;const i=G.value[0];i!=null&&i+1!==b.value&&M(i+1)}function Ie(r){const i=G.value.length;i!==0&&(z.value=(z.value+r+i)%i,M(G.value[z.value]+1))}e.watchEffect(()=>{const r=s.value;if(!r)return;const i=k.value;if(!i)return;const u=D.value.trim();i.querySelectorAll(".mrp-page-holder").forEach(h=>{const B=Number(h.dataset.page??0)-1,x=r.pages[B];if(!x||h.childElementCount>0){u&&h.firstElementChild&&me(h.firstElementChild,u);return}h.style.width=`${x.pageWidthMm*J}px`;const W=I.renderPage(x,96,{},document);u&&me(W,u),h.appendChild(W)})},{flush:"post"}),e.watch(D,r=>{r||k.value?.querySelectorAll(".mrp-page-holder").forEach(i=>{qe(i)})});const O=e.ref(!1);let V=null;function Ae(r,i){const u=s.value;if(!(!u||r.childElementCount>0))try{const{canvases:v}=I.renderPlanToCanvas(u,{start:i,end:i,dpr:.2}),h=v[0];h.style.width="100%",h.style.height="100%",h.style.display="block",r.appendChild(h)}catch{}}e.watchEffect(()=>{!O.value||!s.value||!g.value||typeof IntersectionObserver>"u"||(V?.disconnect(),V=new IntersectionObserver(r=>{for(const i of r){if(!i.isIntersecting)continue;const u=i.target;Ae(u,Number(u.dataset.thumb??1)-1),V?.unobserve(u)}},{root:g.value,rootMargin:"200px"}),g.value.querySelectorAll("[data-thumb]").forEach(r=>{V.observe(r)}))},{flush:"post"});const Ue=e.computed(()=>o.debug||typeof location<"u"&&new URLSearchParams(location.search).get("mrp-debug")==="1"),L=e.computed(()=>!Ue.value||!s.value?null:{pages:C.value,window:`${N.value.start}-${N.value.end}`,zoom:`${Math.round(P.value*100)}%`,loadMs:`${c.value}ms`,planKB:Math.round(JSON.stringify(s.value).length/1024)});function ue(){ie(E.value),T.value==="fit"&&se()}function je(){try{const r=JSON.parse(localStorage.getItem(pe)??"{}");r.zoomMode==="fit"?_("fit"):typeof r.zoomMode=="number"&&_(r.zoomMode)}catch{}}return e.onMounted(()=>{window.addEventListener("resize",ue),ie(E.value),je(),o.autoLoad&&F()}),e.onUnmounted(()=>{window.removeEventListener("resize",ue),V?.disconnect(),V=null,ze()}),e.watch(()=>[o.tempId,o.furnitureTempId,JSON.stringify(o.params)],()=>{o.autoLoad&&F()}),e.watch(()=>o.fetcher??f,()=>{o.autoLoad&&F()}),l({reload:F,print:ne,exportAs:re,openPdfWindow:ae,gotoPage:M}),(r,i)=>(e.openBlock(),e.createElementBlock("div",{class:"mach-report-preview",style:e.normalizeStyle($e.value)},[e.createVNode(we,{"page-count":C.value,"current-page":b.value,"zoom-mode":e.unref(T),zoom:e.unref(P),"show-export":Be.value,"show-print":Se.value,"show-pdf-window":Re.value,messages:K.value,search:{visible:Y.value,query:D.value,matchIndex:z.value,matchCount:G.value.length},"thumbs-visible":O.value,onGoto:M,onZoom:e.unref(_),onExport:i[0]||(i[0]=u=>e.unref(re)(u)),onPrint:e.unref(ne),onPdfWindow:e.unref(ae),onSearchInput:He,onSearchNav:Ie,onSearchToggle:i[1]||(i[1]=u=>Y.value=!Y.value),onThumbsToggle:i[2]||(i[2]=u=>O.value=!O.value)},null,8,["page-count","current-page","zoom-mode","zoom","show-export","show-print","show-pdf-window","messages","search","thumbs-visible","onZoom","onPrint","onPdfWindow"]),e.createElementVNode("div",st,[e.createElementVNode("div",{ref_key:"viewportRef",ref:E,class:"mrp-body",tabindex:"0",onWheel:Le,onKeydown:Oe,onScrollPassive:i[3]||(i[3]=u=>e.unref(De)(u.target))},[d.value?(e.openBlock(),e.createElementBlock("div",it,e.toDisplayString(K.value.loading),1)):m.value?(e.openBlock(),e.createElementBlock("div",ct,[e.createTextVNode(e.toDisplayString(m.value)+" ",1),e.createElementVNode("button",{class:"mrp-retry",type:"button",onClick:F},e.toDisplayString(K.value.retry),1)])):!s.value||C.value===0?(e.openBlock(),e.createElementBlock("div",ut,e.toDisplayString(K.value.empty),1)):(e.openBlock(),e.createElementBlock("div",{key:3,class:"mrp-scale",style:e.normalizeStyle({width:`${e.unref(ee).w*e.unref(P)}px`,height:`${e.unref(ee).h*e.unref(P)}px`})},[e.createElementVNode("div",{ref_key:"containerRef",ref:k,class:"mrp-scale-inner",style:e.normalizeStyle({transform:`scale(${e.unref(P)})`,transformOrigin:"top left",width:`${e.unref(ee).w}px`})},[e.unref(N).padTopPx>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mrp-spacer-top",style:e.normalizeStyle({height:`${e.unref(N).padTopPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(Ne),u=>(e.openBlock(),e.createElementBlock("div",{key:u.index,class:"mrp-page-holder","data-page":u.index+1},null,8,dt))),128)),e.unref(N).padBottomPx>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:"mrp-spacer-bottom",style:e.normalizeStyle({height:`${e.unref(N).padBottomPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0)],4)],4))],544),O.value&&C.value>0?(e.openBlock(),e.createElementBlock("aside",{key:0,ref_key:"thumbsRef",ref:g,class:"mrp-thumbs"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value?.pages??[],(u,v)=>(e.openBlock(),e.createElementBlock("div",{key:v,class:e.normalizeClass(["mrp-thumb",{"mrp-thumb-active":v+1===b.value}]),onClick:h=>M(v+1)},[e.createElementVNode("div",{class:"mrp-thumb-box","data-thumb":v+1,style:e.normalizeStyle({height:`${Math.round(u.pageHeightMm/u.pageWidthMm*vt)}px`})},null,12,pt),e.createElementVNode("span",ft,e.toDisplayString(v+1),1)],10,mt))),128))],512)):e.createCommentVNode("",!0)]),e.createElementVNode("div",gt,[e.renderSlot(r.$slots,"default",{},void 0,!0)]),L.value?(e.openBlock(),e.createElementBlock("div",ht,[i[4]||(i[4]=e.createElementVNode("div",null,"mach-report debug",-1)),e.createElementVNode("div",null,"pages: "+e.toDisplayString(L.value.pages)+" | window: ["+e.toDisplayString(L.value.window)+"]",1),e.createElementVNode("div",null,"zoom: "+e.toDisplayString(L.value.zoom)+" | load: "+e.toDisplayString(L.value.loadMs),1),e.createElementVNode("div",null,"plan: "+e.toDisplayString(L.value.planKB)+"KB",1)])):e.createCommentVNode("",!0)],4))}}),Me=be(bt,[["__scopeId","data-v-ee759bc4"]]),wt=Object.freeze(Object.defineProperty({__proto__:null,default:Me},Symbol.toStringTag,{value:"Module"}));exports.DEFAULT_MESSAGES=ye;exports.DEFAULT_THEME=Ee;exports.MachReportError=U;exports.ReportPreview=Me;exports.ReportPreview$1=wt;exports.ReportToolbar=we;exports.buildPrintDocument=A;exports.defineMachReportConfig=rt;exports.defineMachReportPreset=at;exports.printPlans=Ke;exports.provideMachReportConfig=lt;exports.resolveConfig=Pe;exports.themeToCssVars=ke;exports.toErrorDetail=xe;exports.useMachReportConfig=Ce;exports.usePageWindow=fe;exports.usePrintExport=he;exports.useZoom=ge;
|