@agile-team/mach-report 0.8.0 → 0.9.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/xlsx.js CHANGED
@@ -1,14 +1,14 @@
1
1
  import { c as Kt, g as Ke } from "./_commonjsHelpers-DaMA6jEr.js";
2
2
  import { r as Ye } from "./grid-geometry-Bs8QXz1X.js";
3
- function Fe(ge) {
4
- throw new Error('Could not dynamically require "' + ge + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');
3
+ function Fe(ye) {
4
+ throw new Error('Could not dynamically require "' + ye + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');
5
5
  }
6
6
  var ze = { exports: {} };
7
7
  var qe;
8
8
  function Ze() {
9
- return qe || (qe = 1, (function(ge, ve) {
9
+ return qe || (qe = 1, (function(ye, ve) {
10
10
  (function(s) {
11
- ge.exports = s();
11
+ ye.exports = s();
12
12
  })((function() {
13
13
  return (function s(T, S, m) {
14
14
  function o(t, e) {
@@ -17793,8 +17793,8 @@ function Ze() {
17793
17793
  return Z === at || (Z == null || at == null || !Ht(Z) && !fe(at) ? Z != Z && at != at : (function(pt, gt, Xt, $t, Vt, Nt) {
17794
17794
  var ee = It(pt), re = It(gt), ae = "[object Array]", ue = "[object Array]";
17795
17795
  ee || (ae = (ae = Yt(pt)) == o ? r : ae), re || (ue = (ue = Yt(gt)) == o ? r : ue);
17796
- var de = ae == r && !B(pt), pe = ue == r && !B(gt), ye = ae == ue;
17797
- if (ye && !de) return Nt || (Nt = new Ct()), ee || ce(pt) ? oe(pt, gt, Xt, $t, Vt, Nt) : (function(ne, Zt, _e, Me, Oe, be, we) {
17796
+ var de = ae == r && !B(pt), pe = ue == r && !B(gt), ge = ae == ue;
17797
+ if (ge && !de) return Nt || (Nt = new Ct()), ee || ce(pt) ? oe(pt, gt, Xt, $t, Vt, Nt) : (function(ne, Zt, _e, Me, Oe, be, we) {
17798
17798
  switch (_e) {
17799
17799
  case "[object DataView]":
17800
17800
  if (ne.byteLength != Zt.byteLength || ne.byteOffset != Zt.byteOffset) return !1;
@@ -17832,7 +17832,7 @@ function Ze() {
17832
17832
  return Nt || (Nt = new Ct()), Xt(Te, Ee, $t, Vt, Nt);
17833
17833
  }
17834
17834
  }
17835
- return ye ? (Nt || (Nt = new Ct()), (function(ne, Zt, _e, Me, Oe, be) {
17835
+ return ge ? (Nt || (Nt = new Ct()), (function(ne, Zt, _e, Me, Oe, be) {
17836
17836
  var we = 2 & Oe, xe = he(ne), Re = xe.length, je = he(Zt).length;
17837
17837
  if (Re != je && !we) return !1;
17838
17838
  for (var Ae = Re; Ae--; ) {
@@ -17906,8 +17906,8 @@ function Ze() {
17906
17906
  if (re[2]) {
17907
17907
  if (ue === void 0 && !(ae in gt)) return !1;
17908
17908
  } else {
17909
- var pe = new Ct(), ye;
17910
- if (!(ye === void 0 ? te(de, ue, Vt, 3, pe) : ye)) return !1;
17909
+ var pe = new Ct(), ge;
17910
+ if (!(ge === void 0 ? te(de, ue, Vt, 3, pe) : ge)) return !1;
17911
17911
  }
17912
17912
  }
17913
17913
  return !0;
@@ -17946,8 +17946,8 @@ function Ze() {
17946
17946
  break;
17947
17947
  }
17948
17948
  if (re) {
17949
- if (!U(at, (function(pe, ye) {
17950
- if (!re.has(ye) && (ae === pe || ft(ae, pe, ht, St, pt))) return re.add(ye);
17949
+ if (!U(at, (function(pe, ge) {
17950
+ if (!re.has(ge) && (ae === pe || ft(ae, pe, ht, St, pt))) return re.add(ge);
17951
17951
  }))) {
17952
17952
  ee = !1;
17953
17953
  break;
@@ -18244,8 +18244,8 @@ function Ze() {
18244
18244
  var pe = re[de];
18245
18245
  if (!(ee ? pe in gt : b.call(gt, pe))) return !1;
18246
18246
  }
18247
- var ye = Nt.get(pt);
18248
- if (ye && Nt.get(gt)) return ye == gt;
18247
+ var ge = Nt.get(pt);
18248
+ if (ge && Nt.get(gt)) return ge == gt;
18249
18249
  var Se = !0;
18250
18250
  Nt.set(pt, gt), Nt.set(gt, pt);
18251
18251
  for (var Ce = ee; ++de < ae; ) {
@@ -22570,21 +22570,21 @@ use chrome, FireFox or Internet Explorer 11`);
22570
22570
  }
22571
22571
  var Ge = Ze();
22572
22572
  const Je = /* @__PURE__ */ Ke(Ge), We = 72 / 25.4, Ue = 96 / 25.4 / 7;
22573
- function $e(ge) {
22574
- if (!ge) return;
22575
- const ve = ge.replace("#", "");
22573
+ function $e(ye) {
22574
+ if (!ye) return;
22575
+ const ve = ye.replace("#", "");
22576
22576
  return /^[0-9a-fA-F]{6}$/.test(ve) ? `FF${ve.toUpperCase()}` : void 0;
22577
22577
  }
22578
- function Xe(ge, ve, s = !1, T, S) {
22579
- ge.font = {
22578
+ function Xe(ye, ve, s = !1, T, S) {
22579
+ ye.font = {
22580
22580
  bold: s || ve.style?.bold === !0,
22581
22581
  size: T ?? ve.style?.fontSize ?? 10.5,
22582
22582
  color: $e(S ?? ve.style?.color) ? { argb: $e(S ?? ve.style?.color) } : void 0
22583
22583
  };
22584
22584
  }
22585
- async function rr(ge, ve = {}) {
22585
+ async function er(ye, ve = {}) {
22586
22586
  const s = new Je.Workbook(), T = [];
22587
- ge.pages.forEach((m, o) => {
22587
+ ye.pages.forEach((m, o) => {
22588
22588
  const a = s.addWorksheet(
22589
22589
  ve.sheetName?.(o) ?? `Sheet${o + 1}`,
22590
22590
  {
@@ -22599,7 +22599,7 @@ async function rr(ge, ve = {}) {
22599
22599
  let r = 1;
22600
22600
  for (const t of m.components) {
22601
22601
  if (t.grid) {
22602
- const e = Ye(Qe(t), t.widthMm, t.heightMm), l = Math.max(e.columns.length, 1), i = [];
22602
+ const e = Ye(t.grid, t.widthMm, t.heightMm), l = Math.max(e.columns.length, 1), i = [];
22603
22603
  for (let n = 0; n < l; n++)
22604
22604
  i.push(e.columns[n]?.size ?? t.widthMm / l);
22605
22605
  for (let n = 0; n < l; n++) {
@@ -22615,15 +22615,19 @@ async function rr(ge, ve = {}) {
22615
22615
  vertical: "middle"
22616
22616
  };
22617
22617
  const d = $e(n.cell.style?.backgroundColor);
22618
- if (d && (u.fill = { type: "pattern", pattern: "solid", fgColor: { argb: d } }), u.border = {
22618
+ d && (u.fill = { type: "pattern", pattern: "solid", fgColor: { argb: d } }), u.border = {
22619
22619
  top: { style: "thin" },
22620
22620
  left: { style: "thin" },
22621
22621
  bottom: { style: "thin" },
22622
22622
  right: { style: "thin" }
22623
- }, Xe(u, t, n.cell.style?.bold === !0, n.cell.style?.fontSize, n.cell.style?.color), n.widthMm > (e.columns[n.ci]?.size ?? 0) + 0.01 || n.heightMm > (e.rows[n.ri]?.size ?? 0) + 0.01) {
22624
- const h = n.ci + Math.max(1, n.cell.colSpan ?? 1), w = n.ri + Math.max(1, n.cell.rowSpan ?? 1);
22625
- (h > n.ci + 1 || w > n.ri + 1) && a.mergeCells(r + n.ri, n.ci + 1, r + w - 1, h);
22626
- }
22623
+ }, Xe(u, t, n.cell.style?.bold === !0, n.cell.style?.fontSize, n.cell.style?.color);
22624
+ const h = Math.max(1, n.cell.colSpan ?? 1), w = Math.max(1, n.cell.rowSpan ?? 1);
22625
+ (h > 1 || w > 1) && a.mergeCells(
22626
+ r + n.ri,
22627
+ n.ci + 1,
22628
+ r + n.ri + w - 1,
22629
+ n.ci + h
22630
+ );
22627
22631
  }
22628
22632
  r += e.rows.length;
22629
22633
  continue;
@@ -22639,9 +22643,6 @@ async function rr(ge, ve = {}) {
22639
22643
  const S = await s.xlsx.writeBuffer();
22640
22644
  return { workbook: s, buffer: S, warnings: T };
22641
22645
  }
22642
- function Qe(ge) {
22643
- return ge.grid;
22644
- }
22645
22646
  export {
22646
- rr as renderPlanToXlsx
22647
+ er as renderPlanToXlsx
22647
22648
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agile-team/mach-report",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "description": "MachReport 报表引擎单包:RenderPlan 模型 + 分页 + DOM/Canvas/PDF 渲染 + 动态 SQL + 管理端 API + Vue 3 契约组件(零运行时依赖;./vue 为框架子路径,vue 为可选 peer)",
5
5
  "type": "module",
6
6
  "sideEffects": [
@@ -112,6 +112,8 @@
112
112
  "vue": "^3.5.0",
113
113
  "vue-tsc": "^3.0.0"
114
114
  },
115
+ "license": "SEE LICENSE IN LICENSE",
116
+ "author": "ChenyCHENYU (Agile Team)",
115
117
  "scripts": {
116
118
  "build": "vite build && node scripts/copy-dcts.mjs",
117
119
  "clean": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\""
@@ -1,6 +0,0 @@
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;