@agile-team/mach-report 2.4.0 → 2.4.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
1
  import { defineAsyncComponent as a, computed as s } from "vue";
2
2
  import { g as m } from "./report-params-B3Fia6JO.js";
3
- const p = "mach-report/fetcher", l = "mach-report/pdf-exporter", R = "mach-report/config", h = "mach-report/controller", d = a(() => import("./ReportPreview-CL9J9MEE.js").then((r) => r.s)), _ = {
3
+ const p = "mach-report/fetcher", l = "mach-report/pdf-exporter", R = "mach-report/config", h = "mach-report/controller", d = a(() => import("./ReportPreview-XF8iSUG1.js").then((r) => r.s)), _ = {
4
4
  install(r, e = {}) {
5
5
  let t = e.fetcher;
6
6
  if (!t && e.reports) {
@@ -1 +1 @@
1
- "use strict";var l=Object.create;var n=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,h=Object.prototype.hasOwnProperty;var m=(r,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let c of p(e))!h.call(r,c)&&c!==t&&n(r,c,{get:()=>e[c],enumerable:!(o=s(e,c))||o.enumerable});return r};var C=(r,e,t)=>(t=r!=null?l(d(r)):{},m(e||!r||!r.__esModule?n(t,"default",{value:r,enumerable:!0}):t,r));const E=require("vue"),O=require("./report-params-D1gZ1DME.cjs"),_="mach-report/fetcher",f="mach-report/pdf-exporter",P="mach-report/config",u="mach-report/controller",a=E.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ReportPreview-DJvv3h8m.cjs")).then(r=>r.ReportPreview$1)),T={install(r,e={}){let t=e.fetcher;if(!t&&e.reports){const o=e.reports;let c;t=async R=>(c??=import("@agile-team/mach-report").then(({createReportSource:i})=>i(o)),(await c)(R)),t.getParamDefs=R=>O.getReportParamDefs(o,R)}t&&r.provide(_,t),e.pdfExporter&&r.provide(f,e.pdfExporter),r.provide(P,E.computed(()=>{if(e.pdfFontUrl===void 0)return e.config??null;const o=e.config??{defaults:{},presets:{}};return{...o,defaults:{...o.defaults,pdfFontUrl:e.pdfFontUrl}}})),e.globalComponent!==!1&&!r.component("MachReportPreview")&&r.component("MachReportPreview",a)}};exports.MACH_REPORT_CONFIG_KEY=P;exports.MACH_REPORT_CONTROLLER_KEY=u;exports.MACH_REPORT_FETCHER_KEY=_;exports.MACH_REPORT_PDF_EXPORTER_KEY=f;exports.MachReportPreview=a;exports.machReportPlugin=T;
1
+ "use strict";var l=Object.create;var n=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,h=Object.prototype.hasOwnProperty;var m=(r,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let c of p(e))!h.call(r,c)&&c!==t&&n(r,c,{get:()=>e[c],enumerable:!(o=s(e,c))||o.enumerable});return r};var C=(r,e,t)=>(t=r!=null?l(d(r)):{},m(e||!r||!r.__esModule?n(t,"default",{value:r,enumerable:!0}):t,r));const E=require("vue"),O=require("./report-params-D1gZ1DME.cjs"),_="mach-report/fetcher",f="mach-report/pdf-exporter",P="mach-report/config",u="mach-report/controller",a=E.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ReportPreview-BVTpw9Tb.cjs")).then(r=>r.ReportPreview$1)),T={install(r,e={}){let t=e.fetcher;if(!t&&e.reports){const o=e.reports;let c;t=async R=>(c??=import("@agile-team/mach-report").then(({createReportSource:i})=>i(o)),(await c)(R)),t.getParamDefs=R=>O.getReportParamDefs(o,R)}t&&r.provide(_,t),e.pdfExporter&&r.provide(f,e.pdfExporter),r.provide(P,E.computed(()=>{if(e.pdfFontUrl===void 0)return e.config??null;const o=e.config??{defaults:{},presets:{}};return{...o,defaults:{...o.defaults,pdfFontUrl:e.pdfFontUrl}}})),e.globalComponent!==!1&&!r.component("MachReportPreview")&&r.component("MachReportPreview",a)}};exports.MACH_REPORT_CONFIG_KEY=P;exports.MACH_REPORT_CONTROLLER_KEY=u;exports.MACH_REPORT_FETCHER_KEY=_;exports.MACH_REPORT_PDF_EXPORTER_KEY=f;exports.MachReportPreview=a;exports.machReportPlugin=T;
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .mrp-toolbar[data-v-1c2568a7]{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-1c2568a7]{font-size:13px;font-weight:600;margin-right:8px;color:var(--mrp-toolbar-fg, #e8e8e8)}.mrp-nav[data-v-1c2568a7]{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-1c2568a7]:hover:not(:disabled){background:var(--mrp-btn-hover-bg, #414549);color:var(--mrp-btn-hover-fg, #fff)}.mrp-nav[data-v-1c2568a7]:disabled{opacity:.4;cursor:not-allowed}.mrp-active[data-v-1c2568a7]{background:var(--mrp-btn-active-bg, #2d5fb8);border-color:var(--mrp-btn-active-bg, #2d5fb8);color:#fff}.mrp-pageinfo[data-v-1c2568a7]{font-size:12px;min-width:56px;text-align:center;color:var(--mrp-toolbar-fg, #e8e8e8)}.mrp-spacer[data-v-1c2568a7]{flex:1}.mrp-search[data-v-1c2568a7]{display:flex;align-items:center;gap:4px}.mrp-search-input[data-v-1c2568a7]{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-1c2568a7]:focus{border-color:var(--mrp-btn-active-bg, #2d5fb8)}.mrp-search-count[data-v-1c2568a7]{font-size:12px;color:var(--mrp-toolbar-fg, #e8e8e8);min-width:42px;text-align:center}.mrp-params[data-v-aafce92d]{display:flex;align-items:flex-end;gap:12px;padding:6px 12px;background:var(--mrp-toolbar-bg, #323639);border-bottom:1px solid var(--mrp-toolbar-border, #22252a);flex:none;flex-wrap:wrap}.mrp-params-title[data-v-aafce92d]{font-size:12px;font-weight:600;color:var(--mrp-toolbar-fg, #e8e8e8);padding-bottom:5px;white-space:nowrap}.mrp-params-grid[data-v-aafce92d]{display:flex;flex-wrap:wrap;gap:8px 12px;flex:1}.mrp-param[data-v-aafce92d]{display:flex;flex-direction:column;gap:2px}.mrp-param-label[data-v-aafce92d]{font-size:11px;color:var(--mrp-toolbar-fg, #e8e8e8);opacity:.85}.mrp-param-star[data-v-aafce92d]{color:#ff7b72;font-style:normal;margin-left:2px}.mrp-param-input[data-v-aafce92d]{background:#22252a;color:#e8e8e8;border:1px solid var(--mrp-btn-border, #4a4d52);border-radius:4px;padding:3px 8px;font-size:12px;min-width:130px;outline:none}.mrp-param-input[data-v-aafce92d]:focus{border-color:var(--mrp-btn-active-bg, #2d5fb8)}.mrp-param-missing .mrp-param-input[data-v-aafce92d]{border-color:#ff7b72}select.mrp-param-input option[data-v-aafce92d]{background:#22252a}.mrp-params-actions[data-v-aafce92d]{display:flex;gap:6px;padding-bottom:1px}.mrp-nav[data-v-aafce92d]{background:transparent;color:var(--mrp-btn-fg, #cfcfcf);border:1px solid var(--mrp-btn-border, #4a4d52);border-radius:4px;padding:4px 14px;font-size:12px;cursor:pointer;white-space:nowrap}.mrp-nav[data-v-aafce92d]:hover{background:var(--mrp-btn-hover-bg, #414549);color:var(--mrp-btn-hover-fg, #fff)}.mrp-param-query[data-v-aafce92d]{background:var(--mrp-btn-active-bg, #2d5fb8);border-color:var(--mrp-btn-active-bg, #2d5fb8);color:#fff}.mach-report-preview[data-v-8dab9187]{--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-8dab9187]{display:flex;flex:1;min-height:0}.mrp-body[data-v-8dab9187]{flex:1;min-width:0;overflow:auto;padding:24px;outline:none}.mrp-scale[data-v-8dab9187]{position:relative;margin:0 auto}.mrp-scale-inner[data-v-8dab9187]{position:absolute;left:0;top:0;display:flex;flex-direction:column;align-items:center}.mrp-page-holder[data-v-8dab9187]{background:#fff;box-shadow:0 2px 8px #00000059;margin-bottom:var(--v587d5a34);flex:none}.mrp-wide-report .mrp-page-holder[data-v-8dab9187]{box-shadow:none}.mrp-state[data-v-8dab9187]{padding:40px;text-align:center;color:#bfbfbf;font-size:13px}.mrp-error[data-v-8dab9187]{color:#ff9d9d}.mrp-edit-hint[data-v-8dab9187]{padding:5px 12px;font-size:12px;color:var(--mrp-shell-fg)}.mrp-export-notice[data-v-8dab9187]{padding:7px 12px;font-size:12px;background:#fff0c2;color:#613c00}.mrp-export-error[data-v-8dab9187]{background:#ffe0df;color:#8e1f1f}.mrp-export-progress[data-v-8dab9187]{background:#e7f0ff;color:#1a4d86}.mrp-retry[data-v-8dab9187]{margin-left:12px;background:transparent;color:#8fb7ff;border:1px solid #5a7fbf;border-radius:4px;padding:1px 10px;cursor:pointer}.mrp-overlay[data-v-8dab9187]{position:absolute;inset:0;pointer-events:none}.mrp-page-holder[data-v-8dab9187] mark.mrp-hit{background:#ffe066;color:#7a5c00;border-radius:2px;padding:0 1px;scroll-margin:8px}.mrp-thumbs[data-v-8dab9187]{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}.mrp-thumb[data-v-8dab9187]{cursor:pointer;text-align:center;flex:none;margin-bottom:8px}.mrp-thumb-spacer[data-v-8dab9187]{flex:none}.mrp-thumb-box[data-v-8dab9187]{box-sizing:border-box;width:116px;background:#fff;box-shadow:0 1px 4px #0006;overflow:hidden;border:2px solid transparent}.mrp-thumb-active .mrp-thumb-box[data-v-8dab9187]{border-color:var(--mrp-btn-active-bg)}.mrp-thumb-no[data-v-8dab9187]{display:block;margin-top:4px;line-height:16px;font-size:11px;color:var(--mrp-toolbar-fg)}.mrp-debug[data-v-8dab9187]{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-1c2568a7]{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-1c2568a7]{font-size:13px;font-weight:600;margin-right:8px;color:var(--mrp-toolbar-fg, #e8e8e8)}.mrp-nav[data-v-1c2568a7]{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-1c2568a7]:hover:not(:disabled){background:var(--mrp-btn-hover-bg, #414549);color:var(--mrp-btn-hover-fg, #fff)}.mrp-nav[data-v-1c2568a7]:disabled{opacity:.4;cursor:not-allowed}.mrp-active[data-v-1c2568a7]{background:var(--mrp-btn-active-bg, #2d5fb8);border-color:var(--mrp-btn-active-bg, #2d5fb8);color:#fff}.mrp-pageinfo[data-v-1c2568a7]{font-size:12px;min-width:56px;text-align:center;color:var(--mrp-toolbar-fg, #e8e8e8)}.mrp-spacer[data-v-1c2568a7]{flex:1}.mrp-search[data-v-1c2568a7]{display:flex;align-items:center;gap:4px}.mrp-search-input[data-v-1c2568a7]{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-1c2568a7]:focus{border-color:var(--mrp-btn-active-bg, #2d5fb8)}.mrp-search-count[data-v-1c2568a7]{font-size:12px;color:var(--mrp-toolbar-fg, #e8e8e8);min-width:42px;text-align:center}.mrp-params[data-v-aafce92d]{display:flex;align-items:flex-end;gap:12px;padding:6px 12px;background:var(--mrp-toolbar-bg, #323639);border-bottom:1px solid var(--mrp-toolbar-border, #22252a);flex:none;flex-wrap:wrap}.mrp-params-title[data-v-aafce92d]{font-size:12px;font-weight:600;color:var(--mrp-toolbar-fg, #e8e8e8);padding-bottom:5px;white-space:nowrap}.mrp-params-grid[data-v-aafce92d]{display:flex;flex-wrap:wrap;gap:8px 12px;flex:1}.mrp-param[data-v-aafce92d]{display:flex;flex-direction:column;gap:2px}.mrp-param-label[data-v-aafce92d]{font-size:11px;color:var(--mrp-toolbar-fg, #e8e8e8);opacity:.85}.mrp-param-star[data-v-aafce92d]{color:#ff7b72;font-style:normal;margin-left:2px}.mrp-param-input[data-v-aafce92d]{background:#22252a;color:#e8e8e8;border:1px solid var(--mrp-btn-border, #4a4d52);border-radius:4px;padding:3px 8px;font-size:12px;min-width:130px;outline:none}.mrp-param-input[data-v-aafce92d]:focus{border-color:var(--mrp-btn-active-bg, #2d5fb8)}.mrp-param-missing .mrp-param-input[data-v-aafce92d]{border-color:#ff7b72}select.mrp-param-input option[data-v-aafce92d]{background:#22252a}.mrp-params-actions[data-v-aafce92d]{display:flex;gap:6px;padding-bottom:1px}.mrp-nav[data-v-aafce92d]{background:transparent;color:var(--mrp-btn-fg, #cfcfcf);border:1px solid var(--mrp-btn-border, #4a4d52);border-radius:4px;padding:4px 14px;font-size:12px;cursor:pointer;white-space:nowrap}.mrp-nav[data-v-aafce92d]:hover{background:var(--mrp-btn-hover-bg, #414549);color:var(--mrp-btn-hover-fg, #fff)}.mrp-param-query[data-v-aafce92d]{background:var(--mrp-btn-active-bg, #2d5fb8);border-color:var(--mrp-btn-active-bg, #2d5fb8);color:#fff}.mach-report-preview[data-v-fa6fd3bb]{--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-fa6fd3bb]{display:flex;flex:1;min-height:0}.mrp-body[data-v-fa6fd3bb]{flex:1;min-width:0;overflow:auto;padding:24px;outline:none}.mrp-scale[data-v-fa6fd3bb]{position:relative;margin:0 auto}.mrp-scale-inner[data-v-fa6fd3bb]{position:absolute;left:0;top:0;display:flex;flex-direction:column;align-items:center}.mrp-page-holder[data-v-fa6fd3bb]{background:#fff;box-shadow:0 2px 8px #00000059;margin-bottom:var(--a2d6c888);flex:none}.mrp-wide-report .mrp-page-holder[data-v-fa6fd3bb]{box-shadow:none}.mrp-state[data-v-fa6fd3bb]{padding:40px;text-align:center;color:#bfbfbf;font-size:13px}.mrp-error[data-v-fa6fd3bb]{color:#ff9d9d}.mrp-edit-hint[data-v-fa6fd3bb]{padding:5px 12px;font-size:12px;color:var(--mrp-shell-fg)}.mrp-export-notice[data-v-fa6fd3bb]{padding:7px 12px;font-size:12px;background:#fff0c2;color:#613c00}.mrp-export-error[data-v-fa6fd3bb]{background:#ffe0df;color:#8e1f1f}.mrp-export-progress[data-v-fa6fd3bb]{background:#e7f0ff;color:#1a4d86}.mrp-retry[data-v-fa6fd3bb]{margin-left:12px;background:transparent;color:#8fb7ff;border:1px solid #5a7fbf;border-radius:4px;padding:1px 10px;cursor:pointer}.mrp-overlay[data-v-fa6fd3bb]{position:absolute;inset:0;pointer-events:none}.mrp-page-holder[data-v-fa6fd3bb] mark.mrp-hit{background:#ffe066;color:#7a5c00;border-radius:2px;padding:0 1px;scroll-margin:8px}.mrp-thumbs[data-v-fa6fd3bb]{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}.mrp-thumb[data-v-fa6fd3bb]{cursor:pointer;text-align:center;flex:none;margin-bottom:8px}.mrp-thumb-spacer[data-v-fa6fd3bb]{flex:none}.mrp-thumb-box[data-v-fa6fd3bb]{box-sizing:border-box;width:116px;background:#fff;box-shadow:0 1px 4px #0006;overflow:hidden;border:2px solid transparent}.mrp-thumb-active .mrp-thumb-box[data-v-fa6fd3bb]{border-color:var(--mrp-btn-active-bg)}.mrp-thumb-no[data-v-fa6fd3bb]{display:block;margin-top:4px;line-height:16px;font-size:11px;color:var(--mrp-toolbar-fg)}.mrp-debug[data-v-fa6fd3bb]{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 r=require("./plugin-BkK2mm_p.cjs");function i(){return Promise.resolve().then(()=>require("./ReportPreview-DJvv3h8m.cjs")).then(e=>e.ReportPreview$1)}const t={install(e,o={}){r.machReportPlugin.install(e,o)}};exports.MachReportPreview=r.MachReportPreview;exports.default=t;exports.machReportAsyncPlugin=t;exports.preloadMachReport=i;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("./plugin-DwKr8oF6.cjs");function i(){return Promise.resolve().then(()=>require("./ReportPreview-BVTpw9Tb.cjs")).then(e=>e.ReportPreview$1)}const t={install(e,o={}){r.machReportPlugin.install(e,o)}};exports.MachReportPreview=r.MachReportPreview;exports.default=t;exports.machReportAsyncPlugin=t;exports.preloadMachReport=i;
package/dist/vue-async.js CHANGED
@@ -1,7 +1,7 @@
1
- import { m as o } from "./plugin-DRnvIbdP.js";
2
- import { M as l } from "./plugin-DRnvIbdP.js";
1
+ import { m as o } from "./plugin-CKnSVuVe.js";
2
+ import { M as l } from "./plugin-CKnSVuVe.js";
3
3
  function a() {
4
- return import("./ReportPreview-CL9J9MEE.js").then((t) => t.s);
4
+ return import("./ReportPreview-XF8iSUG1.js").then((t) => t.s);
5
5
  }
6
6
  const n = {
7
7
  install(t, r = {}) {
package/dist/vue.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("@agile-team/mach-report"),e=require("./ReportPreview-DJvv3h8m.cjs"),c=require("./plugin-BkK2mm_p.cjs"),u=require("vue");function p(o){const r=s.createReportSource(o),i=async n=>{if(n.reportIds.length===0)throw new e.PlanLoadError("缺少报表 ID");for(const t of n.reportIds)if(!Object.prototype.hasOwnProperty.call(o,t)||!o[t])throw new e.PlanLoadError(`本地模板 ${t} 不存在`);return r(n)};return i.getParamDefs=r.getParamDefs,i}const f=Object.freeze({loading:!1,hasPlan:!1,pageCount:0,currentPage:1,exporting:null,printing:!1,canExport:!1,canPrint:!1,error:null,pdfFont:Object.freeze({status:"unchecked",fontUrl:""})});function P(){const o=u.shallowRef(null),r=()=>o.value?.state??f,i=Object.freeze({get loading(){return r().loading},get hasPlan(){return r().hasPlan},get pageCount(){return r().pageCount},get currentPage(){return r().currentPage},get exporting(){return r().exporting},get printing(){return r().printing},get canExport(){return r().canExport},get canPrint(){return r().canPrint},get error(){return r().error},get pdfFont(){return r().pdfFont},get editing(){return r().editing??!1},get saving(){return r().saving??!1},get importing(){return r().importing??!1},get dirty(){return r().dirty??!1}});function n(){if(!o.value)throw new e.MachReportError("config","报表预览尚未挂载,请在 ready 后调用控制器");return o.value}return{ref(t){const a=t;o.value=a&&typeof a.reload=="function"&&typeof a.print=="function"&&typeof a.exportAs=="function"&&typeof a.openPdfWindow=="function"&&typeof a.gotoPage=="function"&&typeof a.setParams=="function"?a:null},ready:u.computed(()=>o.value!==null),state:i,async checkPdfFont(){const t=n();return t.checkPdfFont?t.checkPdfFont():{status:"unverified",fontUrl:"",message:"旧自定义控制器未提供字体检查,请由宿主确认字体配置"}},async reload(){await n().reload()},async print(){await n().print()},async exportAs(t){await n().exportAs(t)},openPdfWindow(){n().openPdfWindow()},gotoPage(t){n().gotoPage(t)},async setParams(t,a){await n().setParams(t,a)},async importExcel(t,a){const l=n();if(!l.importExcel)throw new e.MachReportError("config","旧自定义控制器未提供 Excel 导入");return l.importExcel(t,a)},getPlan(){return n().getPlan?.()??null},getChanges(){return n().getChanges?.()??[]}}}function g(){return u.inject(c.MACH_REPORT_CONTROLLER_KEY,null)}exports.DEFAULT_MESSAGES=e.DEFAULT_MESSAGES;exports.DEFAULT_THEME=e.DEFAULT_THEME;exports.MachReportError=e.MachReportError;exports.PlanLoadError=e.PlanLoadError;exports.ReportParamPanel=e.ReportParamPanel;exports.ReportPreview=e.ReportPreview;exports.ReportToolbar=e.ReportToolbar;exports.SILENT_LOGGER=e.SILENT_LOGGER;exports.buildPrintDocument=e.buildPrintDocument;exports.buildWordHtml=e.buildWordHtml;exports.createDefaultPdfExporter=e.createDefaultPdfExporter;exports.createFetchRequest=e.createFetchRequest;exports.defineMachReportConfig=e.defineMachReportConfig;exports.defineMachReportPreset=e.defineMachReportPreset;exports.joinReportIds=e.joinReportIds;exports.normalizeReportIds=e.normalizeReportIds;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=c.MACH_REPORT_CONFIG_KEY;exports.MACH_REPORT_CONTROLLER_KEY=c.MACH_REPORT_CONTROLLER_KEY;exports.MACH_REPORT_FETCHER_KEY=c.MACH_REPORT_FETCHER_KEY;exports.MACH_REPORT_PDF_EXPORTER_KEY=c.MACH_REPORT_PDF_EXPORTER_KEY;exports.MachReportPreview=c.MachReportPreview;exports.machReportPlugin=c.machReportPlugin;exports.createLocalFetcher=p;exports.useMachReport=P;exports.useReportPreview=g;Object.keys(s).forEach(o=>{o!=="default"&&!Object.prototype.hasOwnProperty.call(exports,o)&&Object.defineProperty(exports,o,{enumerable:!0,get:()=>s[o]})});
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("@agile-team/mach-report"),e=require("./ReportPreview-BVTpw9Tb.cjs"),c=require("./plugin-DwKr8oF6.cjs"),u=require("vue");function p(o){const r=s.createReportSource(o),i=async n=>{if(n.reportIds.length===0)throw new e.PlanLoadError("缺少报表 ID");for(const t of n.reportIds)if(!Object.prototype.hasOwnProperty.call(o,t)||!o[t])throw new e.PlanLoadError(`本地模板 ${t} 不存在`);return r(n)};return i.getParamDefs=r.getParamDefs,i}const f=Object.freeze({loading:!1,hasPlan:!1,pageCount:0,currentPage:1,exporting:null,printing:!1,canExport:!1,canPrint:!1,error:null,pdfFont:Object.freeze({status:"unchecked",fontUrl:""})});function P(){const o=u.shallowRef(null),r=()=>o.value?.state??f,i=Object.freeze({get loading(){return r().loading},get hasPlan(){return r().hasPlan},get pageCount(){return r().pageCount},get currentPage(){return r().currentPage},get exporting(){return r().exporting},get printing(){return r().printing},get canExport(){return r().canExport},get canPrint(){return r().canPrint},get error(){return r().error},get pdfFont(){return r().pdfFont},get editing(){return r().editing??!1},get saving(){return r().saving??!1},get importing(){return r().importing??!1},get dirty(){return r().dirty??!1}});function n(){if(!o.value)throw new e.MachReportError("config","报表预览尚未挂载,请在 ready 后调用控制器");return o.value}return{ref(t){const a=t;o.value=a&&typeof a.reload=="function"&&typeof a.print=="function"&&typeof a.exportAs=="function"&&typeof a.openPdfWindow=="function"&&typeof a.gotoPage=="function"&&typeof a.setParams=="function"?a:null},ready:u.computed(()=>o.value!==null),state:i,async checkPdfFont(){const t=n();return t.checkPdfFont?t.checkPdfFont():{status:"unverified",fontUrl:"",message:"旧自定义控制器未提供字体检查,请由宿主确认字体配置"}},async reload(){await n().reload()},async print(){await n().print()},async exportAs(t){await n().exportAs(t)},openPdfWindow(){n().openPdfWindow()},gotoPage(t){n().gotoPage(t)},async setParams(t,a){await n().setParams(t,a)},async importExcel(t,a){const l=n();if(!l.importExcel)throw new e.MachReportError("config","旧自定义控制器未提供 Excel 导入");return l.importExcel(t,a)},getPlan(){return n().getPlan?.()??null},getChanges(){return n().getChanges?.()??[]}}}function g(){return u.inject(c.MACH_REPORT_CONTROLLER_KEY,null)}exports.DEFAULT_MESSAGES=e.DEFAULT_MESSAGES;exports.DEFAULT_THEME=e.DEFAULT_THEME;exports.MachReportError=e.MachReportError;exports.PlanLoadError=e.PlanLoadError;exports.ReportParamPanel=e.ReportParamPanel;exports.ReportPreview=e.ReportPreview;exports.ReportToolbar=e.ReportToolbar;exports.SILENT_LOGGER=e.SILENT_LOGGER;exports.buildPrintDocument=e.buildPrintDocument;exports.buildWordHtml=e.buildWordHtml;exports.createDefaultPdfExporter=e.createDefaultPdfExporter;exports.createFetchRequest=e.createFetchRequest;exports.defineMachReportConfig=e.defineMachReportConfig;exports.defineMachReportPreset=e.defineMachReportPreset;exports.joinReportIds=e.joinReportIds;exports.normalizeReportIds=e.normalizeReportIds;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=c.MACH_REPORT_CONFIG_KEY;exports.MACH_REPORT_CONTROLLER_KEY=c.MACH_REPORT_CONTROLLER_KEY;exports.MACH_REPORT_FETCHER_KEY=c.MACH_REPORT_FETCHER_KEY;exports.MACH_REPORT_PDF_EXPORTER_KEY=c.MACH_REPORT_PDF_EXPORTER_KEY;exports.MachReportPreview=c.MachReportPreview;exports.machReportPlugin=c.machReportPlugin;exports.createLocalFetcher=p;exports.useMachReport=P;exports.useReportPreview=g;Object.keys(s).forEach(o=>{o!=="default"&&!Object.prototype.hasOwnProperty.call(exports,o)&&Object.defineProperty(exports,o,{enumerable:!0,get:()=>s[o]})});
package/dist/vue.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import { createReportSource as u } from "@agile-team/mach-report";
2
2
  export * from "@agile-team/mach-report";
3
- import { P as i, M as c } from "./ReportPreview-CL9J9MEE.js";
4
- import { D as M, a as T, R as O, b as v, c as F, S as A, d as D, e as b, f as L, g as S, h as j, i as H, j as I, n as k, p as W, k as Y, r as z, t as G, l as K, u as U, m as N, o as q, q as V } from "./ReportPreview-CL9J9MEE.js";
5
- import { a as f } from "./plugin-DRnvIbdP.js";
6
- import { b as Z, c as $, d as B, M as J, m as Q } from "./plugin-DRnvIbdP.js";
3
+ import { P as i, M as c } from "./ReportPreview-XF8iSUG1.js";
4
+ import { D as M, a as T, R as O, b as v, c as F, S as A, d as D, e as b, f as L, g as S, h as j, i as H, j as I, n as k, p as W, k as Y, r as z, t as G, l as K, u as U, m as N, o as q, q as V } from "./ReportPreview-XF8iSUG1.js";
5
+ import { a as f } from "./plugin-CKnSVuVe.js";
6
+ import { b as Z, c as $, d as B, M as J, m as Q } from "./plugin-CKnSVuVe.js";
7
7
  import { shallowRef as l, computed as p, inject as g } from "vue";
8
8
  function h(o) {
9
9
  const e = u(o), a = async (r) => {
package/dist/xlsx.cjs CHANGED
@@ -26,5 +26,5 @@ use chrome, FireFox or Internet Explorer 11`)}var r=s("safe-buffer"),t=s("random
26
26
  `)):z=m.stylize("[Circular]","special")),A(j)){if(R&&E.match(/^\d+$/))return z;(j=JSON.stringify(""+E)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(j=j.substr(1,j.length-2),j=m.stylize(j,"name")):(j=j.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),j=m.stylize(j,"string"))}return j+": "+z}function u(m){return Array.isArray(m)}function p(m){return typeof m=="boolean"}function d(m){return m===null}function w(m){return typeof m=="number"}function S(m){return typeof m=="string"}function A(m){return m===void 0}function N(m){return L(m)&&U(m)==="[object RegExp]"}function L(m){return typeof m=="object"&&m!==null}function I(m){return L(m)&&U(m)==="[object Date]"}function P(m){return L(m)&&(U(m)==="[object Error]"||m instanceof Error)}function D(m){return typeof m=="function"}function U(m){return Object.prototype.toString.call(m)}function B(m){return m<10?"0"+m.toString(10):m.toString(10)}_.debuglog=function(m){if(A(r)&&(r=h.env.NODE_DEBUG||""),m=m.toUpperCase(),!t[m])if(new RegExp("\\b"+m+"\\b","i").test(r)){var b=h.pid;t[m]=function(){var g=_.format.apply(_,arguments);console.error("%s %d: %s",m,b,g)}}else t[m]=function(){};return t[m]},_.inspect=e,e.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},e.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},_.isArray=u,_.isBoolean=p,_.isNull=d,_.isNullOrUndefined=function(m){return m==null},_.isNumber=w,_.isString=S,_.isSymbol=function(m){return typeof m=="symbol"},_.isUndefined=A,_.isRegExp=N,_.isObject=L,_.isDate=I,_.isError=P,_.isFunction=D,_.isPrimitive=function(m){return m===null||typeof m=="boolean"||typeof m=="number"||typeof m=="string"||typeof m=="symbol"||m===void 0},_.isBuffer=s("./support/isBuffer");var k=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function C(){var m=new Date,b=[B(m.getHours()),B(m.getMinutes()),B(m.getSeconds())].join(":");return[m.getDate(),k[m.getMonth()],b].join(" ")}function v(m,b){return Object.prototype.hasOwnProperty.call(m,b)}_.log=function(){console.log("%s - %s",C(),_.format.apply(_,arguments))},_.inherits=s("inherits"),_._extend=function(m,b){if(!b||!L(b))return m;for(var g=Object.keys(b),y=g.length;y--;)m[g[y]]=b[g[y]];return m}}).call(this)}).call(this,s("_process"),typeof Kt.commonjsGlobal<"u"?Kt.commonjsGlobal:typeof self<"u"?self:typeof window<"u"?window:{})},{"./support/isBuffer":526,_process:467,inherits:525}],528:[function(s,x,_){Object.defineProperty(_,"__esModule",{value:!0}),Object.defineProperty(_,"v1",{enumerable:!0,get:function(){return h.default}}),Object.defineProperty(_,"v3",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(_,"v4",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(_,"v5",{enumerable:!0,get:function(){return r.default}}),Object.defineProperty(_,"NIL",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(_,"version",{enumerable:!0,get:function(){return e.default}}),Object.defineProperty(_,"validate",{enumerable:!0,get:function(){return l.default}}),Object.defineProperty(_,"stringify",{enumerable:!0,get:function(){return n.default}}),Object.defineProperty(_,"parse",{enumerable:!0,get:function(){return i.default}});var h=f(s("./v1.js")),o=f(s("./v3.js")),a=f(s("./v4.js")),r=f(s("./v5.js")),t=f(s("./nil.js")),e=f(s("./version.js")),l=f(s("./validate.js")),n=f(s("./stringify.js")),i=f(s("./parse.js"));function f(c){return c&&c.__esModule?c:{default:c}}},{"./nil.js":530,"./parse.js":531,"./stringify.js":535,"./v1.js":536,"./v3.js":537,"./v4.js":539,"./v5.js":540,"./validate.js":541,"./version.js":542}],529:[function(s,x,_){function h(i){return 14+(i+64>>>9<<4)+1}function o(i,f){const c=(65535&i)+(65535&f);return(i>>16)+(f>>16)+(c>>16)<<16|65535&c}function a(i,f,c,u,p,d){return o((w=o(o(f,i),o(u,d)))<<(S=p)|w>>>32-S,c);var w,S}function r(i,f,c,u,p,d,w){return a(f&c|~f&u,i,f,p,d,w)}function t(i,f,c,u,p,d,w){return a(f&u|c&~u,i,f,p,d,w)}function e(i,f,c,u,p,d,w){return a(f^c^u,i,f,p,d,w)}function l(i,f,c,u,p,d,w){return a(c^(f|~u),i,f,p,d,w)}Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;var n=function(i){if(typeof i=="string"){const f=unescape(encodeURIComponent(i));i=new Uint8Array(f.length);for(let c=0;c<f.length;++c)i[c]=f.charCodeAt(c)}return(function(f){const c=[],u=32*f.length;for(let p=0;p<u;p+=8){const d=f[p>>5]>>>p%32&255,w=parseInt("0123456789abcdef".charAt(d>>>4&15)+"0123456789abcdef".charAt(15&d),16);c.push(w)}return c})((function(f,c){f[c>>5]|=128<<c%32,f[h(c)-1]=c;let u=1732584193,p=-271733879,d=-1732584194,w=271733878;for(let S=0;S<f.length;S+=16){const A=u,N=p,L=d,I=w;u=r(u,p,d,w,f[S],7,-680876936),w=r(w,u,p,d,f[S+1],12,-389564586),d=r(d,w,u,p,f[S+2],17,606105819),p=r(p,d,w,u,f[S+3],22,-1044525330),u=r(u,p,d,w,f[S+4],7,-176418897),w=r(w,u,p,d,f[S+5],12,1200080426),d=r(d,w,u,p,f[S+6],17,-1473231341),p=r(p,d,w,u,f[S+7],22,-45705983),u=r(u,p,d,w,f[S+8],7,1770035416),w=r(w,u,p,d,f[S+9],12,-1958414417),d=r(d,w,u,p,f[S+10],17,-42063),p=r(p,d,w,u,f[S+11],22,-1990404162),u=r(u,p,d,w,f[S+12],7,1804603682),w=r(w,u,p,d,f[S+13],12,-40341101),d=r(d,w,u,p,f[S+14],17,-1502002290),p=r(p,d,w,u,f[S+15],22,1236535329),u=t(u,p,d,w,f[S+1],5,-165796510),w=t(w,u,p,d,f[S+6],9,-1069501632),d=t(d,w,u,p,f[S+11],14,643717713),p=t(p,d,w,u,f[S],20,-373897302),u=t(u,p,d,w,f[S+5],5,-701558691),w=t(w,u,p,d,f[S+10],9,38016083),d=t(d,w,u,p,f[S+15],14,-660478335),p=t(p,d,w,u,f[S+4],20,-405537848),u=t(u,p,d,w,f[S+9],5,568446438),w=t(w,u,p,d,f[S+14],9,-1019803690),d=t(d,w,u,p,f[S+3],14,-187363961),p=t(p,d,w,u,f[S+8],20,1163531501),u=t(u,p,d,w,f[S+13],5,-1444681467),w=t(w,u,p,d,f[S+2],9,-51403784),d=t(d,w,u,p,f[S+7],14,1735328473),p=t(p,d,w,u,f[S+12],20,-1926607734),u=e(u,p,d,w,f[S+5],4,-378558),w=e(w,u,p,d,f[S+8],11,-2022574463),d=e(d,w,u,p,f[S+11],16,1839030562),p=e(p,d,w,u,f[S+14],23,-35309556),u=e(u,p,d,w,f[S+1],4,-1530992060),w=e(w,u,p,d,f[S+4],11,1272893353),d=e(d,w,u,p,f[S+7],16,-155497632),p=e(p,d,w,u,f[S+10],23,-1094730640),u=e(u,p,d,w,f[S+13],4,681279174),w=e(w,u,p,d,f[S],11,-358537222),d=e(d,w,u,p,f[S+3],16,-722521979),p=e(p,d,w,u,f[S+6],23,76029189),u=e(u,p,d,w,f[S+9],4,-640364487),w=e(w,u,p,d,f[S+12],11,-421815835),d=e(d,w,u,p,f[S+15],16,530742520),p=e(p,d,w,u,f[S+2],23,-995338651),u=l(u,p,d,w,f[S],6,-198630844),w=l(w,u,p,d,f[S+7],10,1126891415),d=l(d,w,u,p,f[S+14],15,-1416354905),p=l(p,d,w,u,f[S+5],21,-57434055),u=l(u,p,d,w,f[S+12],6,1700485571),w=l(w,u,p,d,f[S+3],10,-1894986606),d=l(d,w,u,p,f[S+10],15,-1051523),p=l(p,d,w,u,f[S+1],21,-2054922799),u=l(u,p,d,w,f[S+8],6,1873313359),w=l(w,u,p,d,f[S+15],10,-30611744),d=l(d,w,u,p,f[S+6],15,-1560198380),p=l(p,d,w,u,f[S+13],21,1309151649),u=l(u,p,d,w,f[S+4],6,-145523070),w=l(w,u,p,d,f[S+11],10,-1120210379),d=l(d,w,u,p,f[S+2],15,718787259),p=l(p,d,w,u,f[S+9],21,-343485551),u=o(u,A),p=o(p,N),d=o(d,L),w=o(w,I)}return[u,p,d,w]})((function(f){if(f.length===0)return[];const c=8*f.length,u=new Uint32Array(h(c));for(let p=0;p<c;p+=8)u[p>>5]|=(255&f[p/8])<<p%32;return u})(i),8*i.length))};_.default=n},{}],530:[function(s,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0,_.default="00000000-0000-0000-0000-000000000000"},{}],531:[function(s,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;var h,o=(h=s("./validate.js"))&&h.__esModule?h:{default:h},a=function(r){if(!(0,o.default)(r))throw TypeError("Invalid UUID");let t;const e=new Uint8Array(16);return e[0]=(t=parseInt(r.slice(0,8),16))>>>24,e[1]=t>>>16&255,e[2]=t>>>8&255,e[3]=255&t,e[4]=(t=parseInt(r.slice(9,13),16))>>>8,e[5]=255&t,e[6]=(t=parseInt(r.slice(14,18),16))>>>8,e[7]=255&t,e[8]=(t=parseInt(r.slice(19,23),16))>>>8,e[9]=255&t,e[10]=(t=parseInt(r.slice(24,36),16))/1099511627776&255,e[11]=t/4294967296&255,e[12]=t>>>24&255,e[13]=t>>>16&255,e[14]=t>>>8&255,e[15]=255&t,e};_.default=a},{"./validate.js":541}],532:[function(s,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0,_.default=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i},{}],533:[function(s,x,_){let h;Object.defineProperty(_,"__esModule",{value:!0}),_.default=function(){if(!h&&(h=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||typeof msCrypto<"u"&&typeof msCrypto.getRandomValues=="function"&&msCrypto.getRandomValues.bind(msCrypto),!h))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return h(o)};const o=new Uint8Array(16)},{}],534:[function(s,x,_){function h(r,t,e,l){switch(r){case 0:return t&e^~t&l;case 1:return t^e^l;case 2:return t&e^t&l^e&l;case 3:return t^e^l}}function o(r,t){return r<<t|r>>>32-t}Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;var a=function(r){const t=[1518500249,1859775393,2400959708,3395469782],e=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof r=="string"){const f=unescape(encodeURIComponent(r));r=[];for(let c=0;c<f.length;++c)r.push(f.charCodeAt(c))}else Array.isArray(r)||(r=Array.prototype.slice.call(r));r.push(128);const l=r.length/4+2,n=Math.ceil(l/16),i=new Array(n);for(let f=0;f<n;++f){const c=new Uint32Array(16);for(let u=0;u<16;++u)c[u]=r[64*f+4*u]<<24|r[64*f+4*u+1]<<16|r[64*f+4*u+2]<<8|r[64*f+4*u+3];i[f]=c}i[n-1][14]=8*(r.length-1)/Math.pow(2,32),i[n-1][14]=Math.floor(i[n-1][14]),i[n-1][15]=8*(r.length-1)&4294967295;for(let f=0;f<n;++f){const c=new Uint32Array(80);for(let A=0;A<16;++A)c[A]=i[f][A];for(let A=16;A<80;++A)c[A]=o(c[A-3]^c[A-8]^c[A-14]^c[A-16],1);let u=e[0],p=e[1],d=e[2],w=e[3],S=e[4];for(let A=0;A<80;++A){const N=Math.floor(A/20),L=o(u,5)+h(N,p,d,w)+S+t[N]+c[A]>>>0;S=w,w=d,d=o(p,30)>>>0,p=u,u=L}e[0]=e[0]+u>>>0,e[1]=e[1]+p>>>0,e[2]=e[2]+d>>>0,e[3]=e[3]+w>>>0,e[4]=e[4]+S>>>0}return[e[0]>>24&255,e[0]>>16&255,e[0]>>8&255,255&e[0],e[1]>>24&255,e[1]>>16&255,e[1]>>8&255,255&e[1],e[2]>>24&255,e[2]>>16&255,e[2]>>8&255,255&e[2],e[3]>>24&255,e[3]>>16&255,e[3]>>8&255,255&e[3],e[4]>>24&255,e[4]>>16&255,e[4]>>8&255,255&e[4]]};_.default=a},{}],535:[function(s,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;var h,o=(h=s("./validate.js"))&&h.__esModule?h:{default:h};const a=[];for(let t=0;t<256;++t)a.push((t+256).toString(16).substr(1));var r=function(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;const l=(a[t[e+0]]+a[t[e+1]]+a[t[e+2]]+a[t[e+3]]+"-"+a[t[e+4]]+a[t[e+5]]+"-"+a[t[e+6]]+a[t[e+7]]+"-"+a[t[e+8]]+a[t[e+9]]+"-"+a[t[e+10]]+a[t[e+11]]+a[t[e+12]]+a[t[e+13]]+a[t[e+14]]+a[t[e+15]]).toLowerCase();if(!(0,o.default)(l))throw TypeError("Stringified UUID is invalid");return l};_.default=r},{"./validate.js":541}],536:[function(s,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;var h=a(s("./rng.js")),o=a(s("./stringify.js"));function a(i){return i&&i.__esModule?i:{default:i}}let r,t,e=0,l=0;var n=function(i,f,c){let u=f&&c||0;const p=f||new Array(16);let d=(i=i||{}).node||r,w=i.clockseq!==void 0?i.clockseq:t;if(d==null||w==null){const P=i.random||(i.rng||h.default)();d==null&&(d=r=[1|P[0],P[1],P[2],P[3],P[4],P[5]]),w==null&&(w=t=16383&(P[6]<<8|P[7]))}let S=i.msecs!==void 0?i.msecs:Date.now(),A=i.nsecs!==void 0?i.nsecs:l+1;const N=S-e+(A-l)/1e4;if(N<0&&i.clockseq===void 0&&(w=w+1&16383),(N<0||S>e)&&i.nsecs===void 0&&(A=0),A>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");e=S,l=A,t=w,S+=122192928e5;const L=(1e4*(268435455&S)+A)%4294967296;p[u++]=L>>>24&255,p[u++]=L>>>16&255,p[u++]=L>>>8&255,p[u++]=255&L;const I=S/4294967296*1e4&268435455;p[u++]=I>>>8&255,p[u++]=255&I,p[u++]=I>>>24&15|16,p[u++]=I>>>16&255,p[u++]=w>>>8|128,p[u++]=255&w;for(let P=0;P<6;++P)p[u+P]=d[P];return f||(0,o.default)(p)};_.default=n},{"./rng.js":533,"./stringify.js":535}],537:[function(s,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;var h=a(s("./v35.js")),o=a(s("./md5.js"));function a(t){return t&&t.__esModule?t:{default:t}}var r=(0,h.default)("v3",48,o.default);_.default=r},{"./md5.js":529,"./v35.js":538}],538:[function(s,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=function(e,l,n){function i(f,c,u,p){if(typeof f=="string"&&(f=(function(w){w=unescape(encodeURIComponent(w));const S=[];for(let A=0;A<w.length;++A)S.push(w.charCodeAt(A));return S})(f)),typeof c=="string"&&(c=(0,o.default)(c)),c.length!==16)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");let d=new Uint8Array(16+f.length);if(d.set(c),d.set(f,c.length),d=n(d),d[6]=15&d[6]|l,d[8]=63&d[8]|128,u){p=p||0;for(let w=0;w<16;++w)u[p+w]=d[w];return u}return(0,h.default)(d)}try{i.name=e}catch{}return i.DNS=r,i.URL=t,i},_.URL=_.DNS=void 0;var h=a(s("./stringify.js")),o=a(s("./parse.js"));function a(e){return e&&e.__esModule?e:{default:e}}const r="6ba7b810-9dad-11d1-80b4-00c04fd430c8";_.DNS=r;const t="6ba7b811-9dad-11d1-80b4-00c04fd430c8";_.URL=t},{"./parse.js":531,"./stringify.js":535}],539:[function(s,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;var h=a(s("./rng.js")),o=a(s("./stringify.js"));function a(t){return t&&t.__esModule?t:{default:t}}var r=function(t,e,l){const n=(t=t||{}).random||(t.rng||h.default)();if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,e){l=l||0;for(let i=0;i<16;++i)e[l+i]=n[i];return e}return(0,o.default)(n)};_.default=r},{"./rng.js":533,"./stringify.js":535}],540:[function(s,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;var h=a(s("./v35.js")),o=a(s("./sha1.js"));function a(t){return t&&t.__esModule?t:{default:t}}var r=(0,h.default)("v5",80,o.default);_.default=r},{"./sha1.js":534,"./v35.js":538}],541:[function(s,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;var h,o=(h=s("./regex.js"))&&h.__esModule?h:{default:h},a=function(r){return typeof r=="string"&&o.default.test(r)};_.default=a},{"./regex.js":532}],542:[function(s,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;var h,o=(h=s("./validate.js"))&&h.__esModule?h:{default:h},a=function(r){if(!(0,o.default)(r))throw TypeError("Invalid UUID");return parseInt(r.substr(14,1),16)};_.default=a},{"./validate.js":541}],543:[function(s,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.CHAR=`
27
27
  \r -퟿-�𐀀-􏿿`,_.S=` \r
28
28
  `,_.NAME_START_CHAR=":A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿",_.NAME_CHAR="-"+_.NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",_.CHAR_RE=new RegExp("^["+_.CHAR+"]$","u"),_.S_RE=new RegExp("^["+_.S+"]+$","u"),_.NAME_START_CHAR_RE=new RegExp("^["+_.NAME_START_CHAR+"]$","u"),_.NAME_CHAR_RE=new RegExp("^["+_.NAME_CHAR+"]$","u"),_.NAME_RE=new RegExp("^["+_.NAME_START_CHAR+"]["+_.NAME_CHAR+"]*$","u"),_.NMTOKEN_RE=new RegExp("^["+_.NAME_CHAR+"]+$","u");function h(o){return o>=65&&o<=90||o>=97&&o<=122||o===58||o===95||o===8204||o===8205||o>=192&&o<=214||o>=216&&o<=246||o>=248&&o<=767||o>=880&&o<=893||o>=895&&o<=8191||o>=8304&&o<=8591||o>=11264&&o<=12271||o>=12289&&o<=55295||o>=63744&&o<=64975||o>=65008&&o<=65533||o>=65536&&o<=983039}_.S_LIST=[32,10,13,9],_.isChar=function(o){return o>=32&&o<=55295||o===10||o===13||o===9||o>=57344&&o<=65533||o>=65536&&o<=1114111},_.isS=function(o){return o===32||o===10||o===13||o===9},_.isNameStartChar=h,_.isNameChar=function(o){return h(o)||o>=48&&o<=57||o===45||o===46||o===183||o>=768&&o<=879||o>=8255&&o<=8256}},{}],544:[function(s,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.CHAR="-퟿-�𐀀-􏿿",_.RESTRICTED_CHAR="-\b\v\f--„†-Ÿ",_.S=` \r
29
- `,_.NAME_START_CHAR=":A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿",_.NAME_CHAR="-"+_.NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",_.CHAR_RE=new RegExp("^["+_.CHAR+"]$","u"),_.RESTRICTED_CHAR_RE=new RegExp("^["+_.RESTRICTED_CHAR+"]$","u"),_.S_RE=new RegExp("^["+_.S+"]+$","u"),_.NAME_START_CHAR_RE=new RegExp("^["+_.NAME_START_CHAR+"]$","u"),_.NAME_CHAR_RE=new RegExp("^["+_.NAME_CHAR+"]$","u"),_.NAME_RE=new RegExp("^["+_.NAME_START_CHAR+"]["+_.NAME_CHAR+"]*$","u"),_.NMTOKEN_RE=new RegExp("^["+_.NAME_CHAR+"]+$","u");function h(o){return o>=65&&o<=90||o>=97&&o<=122||o===58||o===95||o===8204||o===8205||o>=192&&o<=214||o>=216&&o<=246||o>=248&&o<=767||o>=880&&o<=893||o>=895&&o<=8191||o>=8304&&o<=8591||o>=11264&&o<=12271||o>=12289&&o<=55295||o>=63744&&o<=64975||o>=65008&&o<=65533||o>=65536&&o<=983039}_.S_LIST=[32,10,13,9],_.isChar=function(o){return o>=1&&o<=55295||o>=57344&&o<=65533||o>=65536&&o<=1114111},_.isRestrictedChar=function(o){return o>=1&&o<=8||o===11||o===12||o>=14&&o<=31||o>=127&&o<=132||o>=134&&o<=159},_.isCharAndNotRestricted=function(o){return o===9||o===10||o===13||o>31&&o<127||o===133||o>159&&o<=55295||o>=57344&&o<=65533||o>=65536&&o<=1114111},_.isS=function(o){return o===32||o===10||o===13||o===9},_.isNameStartChar=h,_.isNameChar=function(o){return h(o)||o>=48&&o<=57||o===45||o===46||o===183||o>=768&&o<=879||o>=8255&&o<=8256}},{}],545:[function(s,x,_){function h(o){return o>=65&&o<=90||o===95||o>=97&&o<=122||o>=192&&o<=214||o>=216&&o<=246||o>=248&&o<=767||o>=880&&o<=893||o>=895&&o<=8191||o>=8204&&o<=8205||o>=8304&&o<=8591||o>=11264&&o<=12271||o>=12289&&o<=55295||o>=63744&&o<=64975||o>=65008&&o<=65533||o>=65536&&o<=983039}Object.defineProperty(_,"__esModule",{value:!0}),_.NC_NAME_START_CHAR="A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿",_.NC_NAME_CHAR="-"+_.NC_NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",_.NC_NAME_START_CHAR_RE=new RegExp("^["+_.NC_NAME_START_CHAR+"]$","u"),_.NC_NAME_CHAR_RE=new RegExp("^["+_.NC_NAME_CHAR+"]$","u"),_.NC_NAME_RE=new RegExp("^["+_.NC_NAME_START_CHAR+"]["+_.NC_NAME_CHAR+"]*$","u"),_.isNCNameStartChar=h,_.isNCNameChar=function(o){return h(o)||o===45||o===46||o>=48&&o<=57||o===183||o>=768&&o<=879||o>=8255&&o<=8256}},{}]},{},[15])(15)}))})(Ze)),Ze.exports}var yr=gr();const fr=Kt.getDefaultExportFromCjs(yr),cr=25.4/96;function vr(Z){return(Z<1?Z*12:Z*7+5)*cr}function hr(Z){const K=Z/cr;return K<12?K/12:(K-5)/7}const dr=72/25.4,wr=32767,_r=253;function Ve(Z,K){if(typeof Z!="string")return;if(Z.length>wr)throw new Error(`Excel 单元格 ${K} 最多支持 32767 个字符,无法无损导出;内容未裁剪`);let s=0;for(let x=0;x<Z.length;x++)if(Z.charCodeAt(x)===10&&++s>_r)throw new Error(`Excel 单元格 ${K} 最多支持 253 个换行,无法无损导出;内容未改写`)}function Ie(Z){if(!Z)return;const K=Z.replace("#","");return/^[0-9a-fA-F]{6}$/.test(K)?`FF${K.toUpperCase()}`:void 0}function pr(Z,K={}){Z.font={name:K.fontFamily,bold:K.bold===!0,italic:K.italic===!0,underline:K.underline===!0,size:Je.resolveFontSize(K).fontSizePt,color:Ie(K.color)?{argb:Ie(K.color)}:void 0}}const We={a3:{width:297,height:420,code:8},a4:{width:210,height:297,code:9},a5:{width:148,height:210,code:11}};function xr(Z,K,s,x){if(K&&K!=="auto")return We[K].code;const _=Math.min(Z.pageWidthMm,Z.pageHeightMm),h=Math.max(Z.pageWidthMm,Z.pageHeightMm),o=Object.values(We).find(a=>Math.abs(_-a.width)<=1&&Math.abs(h-a.height)<=1);return o?o.code:(x.push(`page ${s+1}: 自定义纸张 ${Z.pageWidthMm}×${Z.pageHeightMm}mm 无对应 Excel 纸型,打印设置回退 A4;可显式配置 paperSize`),We.a4.code)}function Sr(Z,K,s,x){const _=typeof K.text=="string"?K.text:"";if(s!=="raw"||!Object.prototype.hasOwnProperty.call(K,"value")){Ve(_,Z.address),Z.value=_;return}const h=K.value;if(h===null||typeof h=="string"||typeof h=="boolean"||typeof h=="number"&&Number.isFinite(h)){Ve(h,Z.address),Z.value=h,typeof h=="number"&&K.numberFormat&&(Z.numFmt=K.numberFormat);return}Ve(_,Z.address),Z.value=_,x.push(`原始单元格值无效,已保留显示文本:${Z.address}`)}function kr(Z){const s=Z.components.filter(x=>x.table!==void 0)[0]?.table;if(!(!s||typeof s.id!="string"||!s.id.trim()||!Array.isArray(s.columnKeys)||!s.columnKeys.length)){for(const x of Z.components){if(x.table){if(!x.grid||x.table.id!==s.id)return;continue}if(x.grid||x.kind!=="text"||x.richParagraphs?.length&&!x.text&&!x.lines?.length)return}return{id:s.id,title:s.title,wide:s.layout==="wide"||Z.layout==="wide"}}}function Er(Z,K){const s=new Set;for(const[x,_]of Z.pages.entries())if(!K[x])for(const h of _.components)typeof h.table?.id=="string"&&s.add(h.table.id);return s}function Qe(Z){return Z.layout==="wide"||Z.components.some(K=>K.table?.layout==="wide")}function Mr(Z,K,s){const x=[],_=Z.pages.map(kr),h=Er(Z,_);for(const[o,a]of Z.pages.entries()){const r=_[o],t=r&&!h.has(r.id),e=K==="pages"||!t?void 0:r;if(K==="continuous"&&!e)throw new Error(`page ${o+1}: continuous Excel 需要完整、单一的逻辑表来源;自由布局请使用 sheetMode: 'pages'`);const l=e!==void 0&&(K==="continuous"||e.wide);!l&&K!=="pages"&&Qe(a)&&s.push(`page ${o+1}: 混合或缺少逻辑表来源,已保留独立 Sheet,未猜测合并内容`);const n=x[x.length-1];l&&n?.continuous&&n.tableId===e.id?n.pages.push({page:a,index:o}):x.push({pages:[{page:a,index:o}],continuous:l,...l?{tableId:e.id,title:e.title}:{}})}return x}function nr(Z,K,s){return!Z||Z.length===K.length&&Z.every((x,_)=>s(x,K[_]))}function Cr(Z,K,s,x){const _=Z.table,h=K.columns.map(r=>r.size),o=nr(x.keys,_.columnKeys,(r,t)=>r===t),a=nr(x.widths,h,(r,t)=>Math.abs(r-t)<=.001);if(_.columnKeys.length!==h.length||!o||!a)throw new Error(`page ${s+1}: 连续 Excel 逻辑表 ${_.id} 的列结构或列宽不一致`);if(x.keys??=_.columnKeys,x.widths??=h,_.role==="header"){if(_.rowIndex!==-1)throw new Error(`page ${s+1}: 连续 Excel 表头 rowIndex 必须为 -1`);x.headerSeen=!0}else{if(!["body","group-header","subtotal","grand-total"].includes(_.role)||_.rowIndex!==x.expectedRow)throw new Error(`page ${s+1}: 连续 Excel 逻辑行来源不连续或重复(期望 ${x.expectedRow})`);x.expectedRow+=K.rows.length}if(K.cells.some(r=>r.cell.children?.length))throw new Error(`page ${s+1}: 连续 Excel 暂不支持嵌套组件;请使用独立 Sheet 导出并检查告警`)}function Tr(Z,K){const s={expectedRow:0,headerSeen:!1};for(const{page:x,index:_}of Z.pages)for(const h of x.components){const o=K.get(h);h.table&&o&&Cr(h,o,_,s)}if(!s.headerSeen)throw new Error("连续 Excel 逻辑表缺少明确表头来源")}function Ar(Z,K,s){let x=(Z?.replace(/[\\/*?:[\]]/g," ").replace(/\s+/g," ").trim()||`Sheet${K+1}`).slice(0,31).replace(/^'+|'+$/g,"").trim()||`Sheet${K+1}`;x.toLowerCase()==="history"&&(x+=" 报表");let _=x,h=1;for(;s.has(_.toLowerCase());){const o=` (${++h})`;_=x.slice(0,31-o.length)+o}return s.add(_.toLowerCase()),_}function Rr(Z){const K=new Set;function s(x,_,h,o){return x<=_?x:(K.has(h)||(Z.push(o),K.add(h)),_)}return{column:x=>s(x,255,"column","Excel 单列宽度上限为 255 字符,超宽列已收敛至 255;单元格值完整保留,显示范围可能受限"),row:x=>s(x,409,"row","Excel 行高上限为 409pt,超高行已收敛至 409pt;单元格值完整保留,显示范围可能受限")}}function jr(Z){const K=Z.pages.flatMap(({page:h,index:o})=>h.components.map(a=>({comp:a,pageIndex:o}))),s=new Map;let x=1,_=0;for(const{comp:h}of K)if(h.grid){const o=Je.resolveGridLayout(h.grid,h.widthMm,h.heightMm);s.set(h,o),x=Math.max(x,o.columns.length)}else h.kind==="text"&&(_=Math.max(_,h.widthMm));if(x>16384)throw new Error("Excel 最多支持 16384 列,无法无损导出此报表");return{components:K,grids:s,columnCount:x,textWidthMm:_}}function Or(Z,K,s){const{page:x,index:_}=Z.pages[0],h=K!==void 0&&K!=="auto";return(Z.continuous||Qe(x))&&!h?{}:{pageSetup:{paperSize:xr(x,K,_,s),orientation:x.pageWidthMm>x.pageHeightMm?"landscape":"portrait",fitToPage:!0,...Z.continuous?{fitToWidth:1,fitToHeight:0}:{}}}}function Ir(Z){const K=Ie(Z.borderColor??Z.lineColor),s={style:"thin",...K?{color:{argb:K}}:{}};return{...Z.borderTop!==!1?{top:s}:{},...Z.borderLeft!==!1?{left:s}:{},...Z.borderBottom!==!1?{bottom:s}:{},...Z.borderRight!==!1?{right:s}:{}}}function Nr(Z,K){Z.alignment={horizontal:K.align??"left",vertical:K.verticalAlign??"middle",wrapText:!0};const s=Ie(K.backgroundColor);s&&(Z.fill={type:"pattern",pattern:"solid",fgColor:{argb:s}}),Z.border=Ir(K),pr(Z,K)}function Pr(Z,K,s){for(const[x,_]of K.columns.entries()){const h=Z.sheet.getColumn(x+1),o=Z.limits.column(hr(_.size));(h.width==null||h.width<o)&&(h.width=o)}for(const[x,_]of K.rows.entries()){const h=Z.sheet.getRow(s+x),o=Z.limits.row(_.size*dr);(h.height==null||h.height<o)&&(h.height=o)}}function Br(Z,K,s,x){const _=Math.max(1,Math.min(K.cell.colSpan??1,s.columns.length-K.ci)),h=Math.max(1,Math.min(K.cell.rowSpan??1,s.rows.length-K.ri));(_>1||h>1)&&Z.mergeCells(x+K.ri,K.ci+1,x+K.ri+h-1,K.ci+_)}function Dr(Z,K,s,x,_){if(x+s.rows.length-1>1048576)throw new Error("Excel 最多支持 1048576 行,无法无损导出此报表");Pr(Z,s,x);for(const h of s.cells){const o=Z.sheet.getCell(x+h.ri,h.ci+1);Sr(o,h.cell,Z.valueMode,Z.warnings),h.cell.children?.length&&Z.warnings.push(`page ${_+1} ${K.nid??K.kind} cell ${h.ri+1}:${h.ci+1}: 嵌套组件内容暂不支持 xlsx 导出,已跳过`),Nr(o,Je.mergeComponentStyles(K.style,h.cell.style)),Br(Z.sheet,h,s,x)}return x+s.rows.length}function Fr(Z,K,s,x,_){const h=Array.isArray(K.lines)&&K.lines.length>0?K.lines.join(`
29
+ `,_.NAME_START_CHAR=":A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿",_.NAME_CHAR="-"+_.NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",_.CHAR_RE=new RegExp("^["+_.CHAR+"]$","u"),_.RESTRICTED_CHAR_RE=new RegExp("^["+_.RESTRICTED_CHAR+"]$","u"),_.S_RE=new RegExp("^["+_.S+"]+$","u"),_.NAME_START_CHAR_RE=new RegExp("^["+_.NAME_START_CHAR+"]$","u"),_.NAME_CHAR_RE=new RegExp("^["+_.NAME_CHAR+"]$","u"),_.NAME_RE=new RegExp("^["+_.NAME_START_CHAR+"]["+_.NAME_CHAR+"]*$","u"),_.NMTOKEN_RE=new RegExp("^["+_.NAME_CHAR+"]+$","u");function h(o){return o>=65&&o<=90||o>=97&&o<=122||o===58||o===95||o===8204||o===8205||o>=192&&o<=214||o>=216&&o<=246||o>=248&&o<=767||o>=880&&o<=893||o>=895&&o<=8191||o>=8304&&o<=8591||o>=11264&&o<=12271||o>=12289&&o<=55295||o>=63744&&o<=64975||o>=65008&&o<=65533||o>=65536&&o<=983039}_.S_LIST=[32,10,13,9],_.isChar=function(o){return o>=1&&o<=55295||o>=57344&&o<=65533||o>=65536&&o<=1114111},_.isRestrictedChar=function(o){return o>=1&&o<=8||o===11||o===12||o>=14&&o<=31||o>=127&&o<=132||o>=134&&o<=159},_.isCharAndNotRestricted=function(o){return o===9||o===10||o===13||o>31&&o<127||o===133||o>159&&o<=55295||o>=57344&&o<=65533||o>=65536&&o<=1114111},_.isS=function(o){return o===32||o===10||o===13||o===9},_.isNameStartChar=h,_.isNameChar=function(o){return h(o)||o>=48&&o<=57||o===45||o===46||o===183||o>=768&&o<=879||o>=8255&&o<=8256}},{}],545:[function(s,x,_){function h(o){return o>=65&&o<=90||o===95||o>=97&&o<=122||o>=192&&o<=214||o>=216&&o<=246||o>=248&&o<=767||o>=880&&o<=893||o>=895&&o<=8191||o>=8204&&o<=8205||o>=8304&&o<=8591||o>=11264&&o<=12271||o>=12289&&o<=55295||o>=63744&&o<=64975||o>=65008&&o<=65533||o>=65536&&o<=983039}Object.defineProperty(_,"__esModule",{value:!0}),_.NC_NAME_START_CHAR="A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿",_.NC_NAME_CHAR="-"+_.NC_NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",_.NC_NAME_START_CHAR_RE=new RegExp("^["+_.NC_NAME_START_CHAR+"]$","u"),_.NC_NAME_CHAR_RE=new RegExp("^["+_.NC_NAME_CHAR+"]$","u"),_.NC_NAME_RE=new RegExp("^["+_.NC_NAME_START_CHAR+"]["+_.NC_NAME_CHAR+"]*$","u"),_.isNCNameStartChar=h,_.isNCNameChar=function(o){return h(o)||o===45||o===46||o>=48&&o<=57||o===183||o>=768&&o<=879||o>=8255&&o<=8256}},{}]},{},[15])(15)}))})(Ze)),Ze.exports}var yr=gr();const fr=Kt.getDefaultExportFromCjs(yr),cr=25.4/96;function vr(Z){return(Z<1?Z*12:Z*7+5)*cr}function hr(Z){const K=Z/cr;return K<12?K/12:(K-5)/7}const dr=72/25.4,wr=32767,_r=253;function Ve(Z,K){if(typeof Z!="string")return;if(Z.length>wr)throw new Error(`Excel 单元格 ${K} 最多支持 32767 个字符,无法无损导出;内容未裁剪`);let s=0;for(let x=0;x<Z.length;x++)if(Z.charCodeAt(x)===10&&++s>_r)throw new Error(`Excel 单元格 ${K} 最多支持 253 个换行,无法无损导出;内容未改写`)}function Ie(Z){if(!Z)return;const K=Z.replace("#","");return/^[0-9a-fA-F]{6}$/.test(K)?`FF${K.toUpperCase()}`:void 0}function pr(Z,K={}){Z.font={name:K.fontFamily,bold:K.bold===!0,italic:K.italic===!0,underline:K.underline===!0,size:Je.resolveFontSize(K).fontSizePt,color:Ie(K.color)?{argb:Ie(K.color)}:void 0}}const We={a3:{width:297,height:420,code:8},a4:{width:210,height:297,code:9},a5:{width:148,height:210,code:11}};function xr(Z,K,s,x){if(K&&K!=="auto")return We[K].code;const _=Math.min(Z.pageWidthMm,Z.pageHeightMm),h=Math.max(Z.pageWidthMm,Z.pageHeightMm),o=Object.values(We).find(a=>Math.abs(_-a.width)<=1&&Math.abs(h-a.height)<=1);return o?o.code:(x.push(`page ${s+1}: 自定义纸张 ${Z.pageWidthMm}×${Z.pageHeightMm}mm 无对应 Excel 纸型,打印设置回退 A4;可显式配置 paperSize`),We.a4.code)}function Sr(Z,K,s,x){const _=typeof K.text=="string"?K.text:"";if(s!=="raw"||!Object.prototype.hasOwnProperty.call(K,"value")){Ve(_,Z.address),Z.value=_;return}const h=K.value;if(h===null||typeof h=="string"||typeof h=="boolean"||typeof h=="number"&&Number.isFinite(h)){Ve(h,Z.address),Z.value=h,K.numberFormat&&(Z.numFmt=K.numberFormat);return}Ve(_,Z.address),Z.value=_,x.push(`原始单元格值无效,已保留显示文本:${Z.address}`)}function kr(Z){const s=Z.components.filter(x=>x.table!==void 0)[0]?.table;if(!(!s||typeof s.id!="string"||!s.id.trim()||!Array.isArray(s.columnKeys)||!s.columnKeys.length)){for(const x of Z.components){if(x.table){if(!x.grid||x.table.id!==s.id)return;continue}if(x.grid||x.kind!=="text"||x.richParagraphs?.length&&!x.text&&!x.lines?.length)return}return{id:s.id,title:s.title,wide:s.layout==="wide"||Z.layout==="wide"}}}function Er(Z,K){const s=new Set;for(const[x,_]of Z.pages.entries())if(!K[x])for(const h of _.components)typeof h.table?.id=="string"&&s.add(h.table.id);return s}function Qe(Z){return Z.layout==="wide"||Z.components.some(K=>K.table?.layout==="wide")}function Mr(Z,K,s){const x=[],_=Z.pages.map(kr),h=Er(Z,_);for(const[o,a]of Z.pages.entries()){const r=_[o],t=r&&!h.has(r.id),e=K==="pages"||!t?void 0:r;if(K==="continuous"&&!e)throw new Error(`page ${o+1}: continuous Excel 需要完整、单一的逻辑表来源;自由布局请使用 sheetMode: 'pages'`);const l=e!==void 0&&(K==="continuous"||e.wide);!l&&K!=="pages"&&Qe(a)&&s.push(`page ${o+1}: 混合或缺少逻辑表来源,已保留独立 Sheet,未猜测合并内容`);const n=x[x.length-1];l&&n?.continuous&&n.tableId===e.id?n.pages.push({page:a,index:o}):x.push({pages:[{page:a,index:o}],continuous:l,...l?{tableId:e.id,title:e.title}:{}})}return x}function nr(Z,K,s){return!Z||Z.length===K.length&&Z.every((x,_)=>s(x,K[_]))}function Cr(Z,K,s,x){const _=Z.table,h=K.columns.map(r=>r.size),o=nr(x.keys,_.columnKeys,(r,t)=>r===t),a=nr(x.widths,h,(r,t)=>Math.abs(r-t)<=.001);if(_.columnKeys.length!==h.length||!o||!a)throw new Error(`page ${s+1}: 连续 Excel 逻辑表 ${_.id} 的列结构或列宽不一致`);if(x.keys??=_.columnKeys,x.widths??=h,_.role==="header"){if(_.rowIndex!==-1)throw new Error(`page ${s+1}: 连续 Excel 表头 rowIndex 必须为 -1`);x.headerSeen=!0}else{if(!["body","group-header","subtotal","grand-total"].includes(_.role)||_.rowIndex!==x.expectedRow)throw new Error(`page ${s+1}: 连续 Excel 逻辑行来源不连续或重复(期望 ${x.expectedRow})`);x.expectedRow+=K.rows.length}if(K.cells.some(r=>r.cell.children?.length))throw new Error(`page ${s+1}: 连续 Excel 暂不支持嵌套组件;请使用独立 Sheet 导出并检查告警`)}function Tr(Z,K){const s={expectedRow:0,headerSeen:!1};for(const{page:x,index:_}of Z.pages)for(const h of x.components){const o=K.get(h);h.table&&o&&Cr(h,o,_,s)}if(!s.headerSeen)throw new Error("连续 Excel 逻辑表缺少明确表头来源")}function Ar(Z,K,s){let x=(Z?.replace(/[\\/*?:[\]]/g," ").replace(/\s+/g," ").trim()||`Sheet${K+1}`).slice(0,31).replace(/^'+|'+$/g,"").trim()||`Sheet${K+1}`;x.toLowerCase()==="history"&&(x+=" 报表");let _=x,h=1;for(;s.has(_.toLowerCase());){const o=` (${++h})`;_=x.slice(0,31-o.length)+o}return s.add(_.toLowerCase()),_}function Rr(Z){const K=new Set;function s(x,_,h,o){return x<=_?x:(K.has(h)||(Z.push(o),K.add(h)),_)}return{column:x=>s(x,255,"column","Excel 单列宽度上限为 255 字符,超宽列已收敛至 255;单元格值完整保留,显示范围可能受限"),row:x=>s(x,409,"row","Excel 行高上限为 409pt,超高行已收敛至 409pt;单元格值完整保留,显示范围可能受限")}}function jr(Z){const K=Z.pages.flatMap(({page:h,index:o})=>h.components.map(a=>({comp:a,pageIndex:o}))),s=new Map;let x=1,_=0;for(const{comp:h}of K)if(h.grid){const o=Je.resolveGridLayout(h.grid,h.widthMm,h.heightMm);s.set(h,o),x=Math.max(x,o.columns.length)}else h.kind==="text"&&(_=Math.max(_,h.widthMm));if(x>16384)throw new Error("Excel 最多支持 16384 列,无法无损导出此报表");return{components:K,grids:s,columnCount:x,textWidthMm:_}}function Or(Z,K,s){const{page:x,index:_}=Z.pages[0],h=K!==void 0&&K!=="auto";return(Z.continuous||Qe(x))&&!h?{}:{pageSetup:{paperSize:xr(x,K,_,s),orientation:x.pageWidthMm>x.pageHeightMm?"landscape":"portrait",fitToPage:!0,...Z.continuous?{fitToWidth:1,fitToHeight:0}:{}}}}function Ir(Z){const K=Ie(Z.borderColor??Z.lineColor),s={style:"thin",...K?{color:{argb:K}}:{}};return{...Z.borderTop!==!1?{top:s}:{},...Z.borderLeft!==!1?{left:s}:{},...Z.borderBottom!==!1?{bottom:s}:{},...Z.borderRight!==!1?{right:s}:{}}}function Nr(Z,K){Z.alignment={horizontal:K.align??"left",vertical:K.verticalAlign??"middle",wrapText:!0};const s=Ie(K.backgroundColor);s&&(Z.fill={type:"pattern",pattern:"solid",fgColor:{argb:s}}),Z.border=Ir(K),pr(Z,K)}function Pr(Z,K,s){for(const[x,_]of K.columns.entries()){const h=Z.sheet.getColumn(x+1),o=Z.limits.column(hr(_.size));(h.width==null||h.width<o)&&(h.width=o)}for(const[x,_]of K.rows.entries()){const h=Z.sheet.getRow(s+x),o=Z.limits.row(_.size*dr);(h.height==null||h.height<o)&&(h.height=o)}}function Br(Z,K,s,x){const _=Math.max(1,Math.min(K.cell.colSpan??1,s.columns.length-K.ci)),h=Math.max(1,Math.min(K.cell.rowSpan??1,s.rows.length-K.ri));(_>1||h>1)&&Z.mergeCells(x+K.ri,K.ci+1,x+K.ri+h-1,K.ci+_)}function Dr(Z,K,s,x,_){if(x+s.rows.length-1>1048576)throw new Error("Excel 最多支持 1048576 行,无法无损导出此报表");Pr(Z,s,x);for(const h of s.cells){const o=Z.sheet.getCell(x+h.ri,h.ci+1);Sr(o,h.cell,Z.valueMode,Z.warnings),h.cell.children?.length&&Z.warnings.push(`page ${_+1} ${K.nid??K.kind} cell ${h.ri+1}:${h.ci+1}: 嵌套组件内容暂不支持 xlsx 导出,已跳过`),Nr(o,Je.mergeComponentStyles(K.style,h.cell.style)),Br(Z.sheet,h,s,x)}return x+s.rows.length}function Fr(Z,K,s,x,_){const h=Array.isArray(K.lines)&&K.lines.length>0?K.lines.join(`
30
30
  `):K.text??"";if(K.richParagraphs?.length){const t=h.length===0?"富文本内容暂不支持 xlsx 导出,已跳过":"富文本按已有文本回退导出,内联样式未保留";Z.warnings.push(`page ${_+1} ${K.nid??K.kind}: ${t}`)}const o=Z.sheet.getRow(s),a=o.getCell(1);Ve(h,a.address),a.value=h,a.alignment={horizontal:K.style?.align??"left",vertical:K.style?.verticalAlign??"middle",wrapText:!0};const r=Ie(K.style?.backgroundColor);return r&&(a.fill={type:"pattern",pattern:"solid",fgColor:{argb:r}}),pr(a,K.style),x>1&&Z.sheet.mergeCells(s,1,s,x),o.height=Z.limits.row(K.heightMm*dr),s+1}function Lr(Z,K,s){const x=K+s-1;Z.views=[{state:"frozen",ySplit:x,xSplit:0}],Z.pageSetup.printTitlesRow=`1:${x}`}function zr(Z,K,s){!K.grids.size&&K.textWidthMm>0&&(Z.sheet.getColumn(1).width=Z.limits.column(hr(K.textWidthMm)));let x=1,_=!1;for(const{comp:h,pageIndex:o}of K.components){const a=s&&h.table?.role==="header";if(a&&_)continue;if(x>1048576)throw new Error("Excel 最多支持 1048576 行,无法无损导出此报表");const r=K.grids.get(h);r?(a&&(Lr(Z.sheet,x,r.rows.length),_=!0),x=Dr(Z,h,r,x,o)):h.kind==="text"?x=Fr(Z,h,x,K.columnCount,o):Z.warnings.push(`page ${o+1} ${h.nid??h.kind}: 组件类型 ${h.kind} 暂不支持 xlsx 导出,已跳过`)}}function Ur(Z){if(Z.valueMode!==void 0&&Z.valueMode!=="text"&&Z.valueMode!=="raw")throw new Error("xlsx valueMode 必须是 text 或 raw");if(Z.paperSize!==void 0&&Z.paperSize!=="auto"&&!Object.prototype.hasOwnProperty.call(We,Z.paperSize))throw new Error("xlsx paperSize 必须是 auto、a3、a4 或 a5");if(Z.sheetMode!==void 0&&!["auto","pages","continuous"].includes(Z.sheetMode))throw new Error("xlsx sheetMode 必须是 auto、pages 或 continuous")}async function $r(Z,K={}){Ur(K);const s=new fr.Workbook,x=[],_=Rr(x),h=Mr(Z,K.sheetMode,x),o=new Set;for(const[r,t]of h.entries()){const e=jr(t);t.continuous&&Tr(t,e.grids);const l=t.pages[0].page,n=K.sheetName?.(r)??Ar(t.title,r,o);o.add(n.toLowerCase());const i=s.addWorksheet(n,Or(t,K.paperSize,x)),f=K.valueMode??(Qe(l)||t.continuous?"raw":"text");zr({sheet:i,warnings:x,limits:_,valueMode:f},e,t.continuous)}const a=await s.xlsx.writeBuffer();return{workbook:s,buffer:a,warnings:x}}function Ge(Z){let K="";for(let s=Z;s>0;s=Math.floor((s-1)/26))K=String.fromCharCode(65+(s-1)%26)+K;return K}function qe(Z){return`${Ge(Z.left)}${Z.top}:${Ge(Z.right)}${Z.bottom}`}function ir(Z){let K=0;for(const s of Z.toUpperCase())K=K*26+s.charCodeAt(0)-64;return K}function Ne(Z){if(typeof Z!="string")throw new Error("Excel 范围应为 A1:B20 格式的字符串");const K=/^\$?([A-Z]{1,3})\$?([1-9]\d{0,6})(?::\$?([A-Z]{1,3})\$?([1-9]\d{0,6}))?$/i.exec(Z.trim());if(!K)throw new Error(`Excel 范围无效:${Z}`);const s={left:ir(K[1]),top:Number(K[2]),right:ir(K[3]??K[1]),bottom:Number(K[4]??K[2])};if(s.right<s.left||s.bottom<s.top||s.right>16384||s.bottom>1048576)throw new Error(`Excel 范围超出边界或顺序无效:${Z}`);return s}function Hr(Z,K){if(K!==void 0)return Ne(K);const s=Z.model.rows??[];if(!s.length)return{top:1,left:1,bottom:1,right:1};const x={top:1/0,left:1/0,bottom:1,right:1};for(const _ of s)x.top=Math.min(x.top,_.number),x.bottom=Math.max(x.bottom,_.number),x.left=Math.min(x.left,_.min||1),x.right=Math.max(x.right,_.max||1);return x}function Vr(Z,K,s){const x=Z.bottom-Z.top+1,_=Z.right-Z.left+1;if(x>K.limits.maxRows||_>K.limits.maxColumns||x*_>s)throw new Error(`Excel 范围 ${qe(Z)} 超过导入行、列或单元格上限;请用 sheets/range 缩小范围`);return x*_}function Wr(Z,K){return Z.top<=K.bottom&&Z.bottom>=K.top&&Z.left<=K.right&&Z.right>=K.left}function qr(Z,K){const s=[];for(const x of Z.model.merges){const _=Ne(x);if(Wr(K,_)){if(_.left<K.left||_.right>K.right||_.top<K.top||_.bottom>K.bottom)throw new Error(`${Z.name}: 范围 ${qe(K)} 截断合并单元格 ${x},请包含完整合并区域`);s.push(_)}}return s}function Xr(Z,K){const s=new Map;for(const _ of K)s.set(_.top,Math.max(s.get(_.top)??_.top,_.bottom));const x=[];for(let _=Z.top;_<=Z.bottom;){let h=s.get(_)??_;for(let o=_;o<=h;o++)h=Math.max(h,s.get(o)??o);x.push({top:_,bottom:h}),_=h+1}return x}function Zr(Z,K,s,x){const _=[];let h,o=0;for(const a of Z){const r=a.bottom-a.top+1;if(r>200)throw new Error("合并单元格跨越超过 200 行,无法安全分段;请先缩小或拆分该合并区域");let t=0;for(let l=a.top;l<=a.bottom;l++)t+=x(l);if(t>s&&Number.isFinite(s))throw new Error("合并区域或单行高度超过标准纸张可用高度;请使用 wide 或调整原模板行高");const e=h?a.bottom-h.top+1:r;h&&(e>K||o+t>s)&&(_.push(h),h=void 0,o=0),h?h.bottom=a.bottom:h={...a},o+=t}return h&&_.push(h),_}function Kr(Z){const K=new Map,s=new Set;for(const x of Z){K.set(`${x.top}:${x.left}`,x);for(let _=x.top;_<=x.bottom;_++)for(let h=x.left;h<=x.right;h++)(_!==x.top||h!==x.left)&&s.add(`${_}:${h}`)}return{masters:K,covered:s}}function He(Z,K){return new RegExp(`\\b${K}\\s*=\\s*["']([^"']*)["']`,"i").exec(Z)?.[1]}function sr(Z,K){const s=Ne(Z);if(s.bottom>K.limits.maxRows||s.right>K.limits.maxColumns)throw new Error(`Excel 源文件坐标 ${Z} 超过加载行列上限;请先裁剪工作簿或显式提高 limits`)}function Gr(Z,K,s){const x=/^<(?:\w+:)?(\w+)\b/.exec(Z)?.[1];if(x==="c"){const _=He(Z,"r");if(_&&sr(_,K),++s.cells>1e6)throw new Error("Excel 源文件超过 100 万个单元格的加载上限,请先裁剪工作簿")}else if(x==="row"){if(++s.rows>1e6)throw new Error("Excel 源文件超过 100 万行的加载上限,请先裁剪工作簿");const _=He(Z,"r");if(_&&(!/^\d+$/.test(_)||Number(_)<1||Number(_)>K.limits.maxRows))throw new Error("Excel 源文件行坐标超过加载上限,请先裁剪工作簿或提高 limits.maxRows")}else if(x==="mergeCell"){const _=He(Z,"ref");if(!_)throw new Error("Excel 合并单元格缺少范围");sr(_,K);const h=Ne(_),o=(h.bottom-h.top+1)*(h.right-h.left+1);if(s.mergedCells+=o,h.bottom-h.top+1>200||s.mergedCells>1e6)throw new Error("Excel 合并区域超过安全加载上限,请先拆分合并区域")}else if(x==="dimension"){const _=He(Z,"ref");_&&Ne(_)}}function Yr(Z,K,s,x,_){let h="";return(o,a=!1)=>{if(h+=o,/<!DOCTYPE|<!ENTITY/i.test(h))throw new Error("Excel XML 不允许外部实体或 DTD");const r=/<[^>]*>/g;let t,e=0;for(;t=r.exec(h);){if(s&&Gr(t[0],Z,K),x&&/^<(?:\w+:)?xf\b/.test(t[0])&&++K.styles>131072)throw new Error("Excel 样式数量超过安全加载上限");if(_&&/^<(?:\w+:)?si\b/.test(t[0])&&++K.strings>1e6)throw new Error("Excel 共享字符串数量超过安全加载上限");e=r.lastIndex}const l=h.lastIndexOf("<");if(h=l>=e?h.slice(l):"",h.length>65536)throw new Error("Excel XML 标签长度异常");if(a&&h)throw new Error("Excel XML 标签不完整")}}function Jr(Z,K){const s=Z.slice(K.start,K.start+K.compressed),x=new Blob([s.buffer]).stream();if(K.method===0)return x;try{return x.pipeThrough(new DecompressionStream("deflate-raw"))}catch{throw new Error("当前环境不支持安全 Excel 解压;请使用支持 DecompressionStream deflate-raw 的现代浏览器或 Node.js 22+")}}async function Qr(Z,K,s){let x=0;const _={cells:0,rows:0,mergedCells:0,styles:0,strings:0};if(K.filter(o=>/^xl\/worksheets\/[^/]+\.xml$/i.test(o.name)).length>s.limits.maxSheets)throw new Error("Excel 工作表数量超过导入上限");for(const o of K){const a=Jr(Z,o).getReader(),r=/^xl\/worksheets\/[^/]+\.xml$/i.test(o.name),t=/\.xml$/i.test(o.name)?Yr(s,_,r,o.name==="xl/styles.xml",o.name==="xl/sharedStrings.xml"):void 0,e=t?new TextDecoder("utf-8",{fatal:!0}):void 0;try{for(;;){const l=await a.read();if(l.done)break;if(x+=l.value.byteLength,x>s.limits.maxUncompressedBytes)throw new Error("Excel 实际解压内容超过导入大小上限");t&&e&&t(e.decode(l.value,{stream:!0}))}t&&e&&t(e.decode(),!0)}finally{await a.cancel().catch(()=>{}),a.releaseLock()}}}const tn=101010256,en=33639248,rn=67324752;async function nn(Z,K){if(Z instanceof Uint8Array){if(Z.byteLength>K)throw new Error("Excel 文件超过导入大小上限");return new Uint8Array(Z)}if(Z instanceof ArrayBuffer){if(Z.byteLength>K)throw new Error("Excel 文件超过导入大小上限");return new Uint8Array(Z.slice(0))}if(typeof Blob<"u"&&Z instanceof Blob){if(Z.size>K)throw new Error("Excel 文件超过导入大小上限");return new Uint8Array(await Z.arrayBuffer())}throw new Error("Excel 导入需要 ArrayBuffer、Uint8Array 或 Blob")}function sn(Z){const K=Math.max(0,Z.byteLength-65557);for(let s=Z.byteLength-22;s>=K;s--)if(Z.getUint32(s,!0)===tn&&s+22+Z.getUint16(s+20,!0)===Z.byteLength)return s;throw new Error("Excel 文件不是完整的 .xlsx ZIP 文件")}function on(Z,K){const s=Z.getUint16(K+10,!0),x=Z.getUint32(K+16,!0),_=Z.getUint32(K+12,!0);if(Z.getUint16(K+4,!0)+Z.getUint16(K+6,!0)||Z.getUint16(K+8,!0)!==s||s===65535||x===4294967295||_===4294967295)throw new Error("不支持分卷或 ZIP64 Excel 文件");if(s<1||s>2048||x+_!==K)throw new Error("Excel ZIP 目录无效或条目过多");return{start:x,size:_,entries:s}}function an(Z,K,s,x,_){if(s+46>x||K.getUint32(s,!0)!==en)throw new Error("Excel ZIP 条目无效");const h=K.getUint16(s+8,!0),o=K.getUint16(s+10,!0),a=K.getUint16(s+28,!0),r=s+46+a+K.getUint16(s+30,!0)+K.getUint16(s+32,!0),t=K.getUint32(s+42,!0),e=K.getUint32(s+20,!0),l=K.getUint32(s+24,!0);if(r>x||t+30>Z.length||h&1||![0,8].includes(o))throw new Error("Excel ZIP 包含无效、加密或不支持的条目");if(l===4294967295||e===4294967295||K.getUint32(t,!0)!==rn)throw new Error("Excel ZIP 本地条目无效");const n=t+30+K.getUint16(t+26,!0)+K.getUint16(t+28,!0);if(n+e>_||K.getUint16(t+8,!0)!==o||K.getUint16(t+6,!0)!==h)throw new Error("Excel ZIP 数据边界或压缩方式无效");const i=new TextDecoder().decode(Z.subarray(s+46,s+46+a));if(i.includes("\\")||i.split("/").includes("..")||i.startsWith("/"))throw new Error("Excel ZIP 包含不安全路径");return{name:i,next:r,size:l,start:n,compressed:e,method:o}}function ln(Z,K){/^xl\/(charts|media|drawings)\//.test(Z)&&K.add("Excel 中的图表、图片与绘图对象暂不导入,仅保留单元格版式"),/^xl\/pivot/.test(Z)&&K.add("Excel 透视表仅导入已保存的单元格结果,不提供交互或重算"),/^xl\/externalLinks\//.test(Z)&&K.add("Excel 外部链接不会访问或刷新,仅使用文件内已保存的结果"),/vbaProject|activeX|embeddings/i.test(Z)&&K.add("Excel 宏、控件与嵌入对象不会执行或导入")}async function un(Z,K,s){const x=await nn(Z,K.limits.maxFileBytes),_=new DataView(x.buffer,x.byteOffset,x.byteLength);if(x.length<22)throw new Error("Excel 文件为空或格式无效;仅支持 .xlsx");const h=on(_,sn(_));let o=h.start,a=0;const r=new Set,t=[];for(let e=0;e<h.entries;e++){const l=an(x,_,o,h.start+h.size,h.start);if(r.has(l.name))throw new Error("Excel ZIP 条目名称重复");if(r.add(l.name),a+=l.size,a>K.limits.maxUncompressedBytes)throw new Error("Excel 解压后内容超过导入大小上限");ln(l.name,s),t.push(l),o=l.next}if(o!==h.start+h.size||!r.has("xl/workbook.xml")||!r.has("[Content_Types].xml"))throw new Error("文件不是受支持的 .xlsx 工作簿");return await Qr(x,t,K),x}const fn=864e5;function je(Z,K=2){return String(Z).padStart(K,"0")}function cn(Z,K,s){const x=[],_=K.replace(/"([^"]*)"|\\(.)/g,(a,r,t)=>(x.push(r??t??""),`${x.length-1}`)).replace(/\[\$[^\]]*\]/g,"");if(/\[|ddd|mmm|AM\/PM/i.test(_))return s(),Z.toISOString().replace("T"," ").replace(/\.000Z$/,"");let h=!1;return _.replace(/yyyy|yy|mm|m|dd|d|hh|h|ss|s/gi,(a,r)=>{const t=a.toLowerCase();if(t.startsWith("y"))return t.length===2?je(Z.getUTCFullYear()%100):String(Z.getUTCFullYear());if(t.startsWith("d"))return je(Z.getUTCDate(),t.length);if(t.startsWith("h"))return h=!0,je(Z.getUTCHours(),t.length);if(t.startsWith("s"))return je(Z.getUTCSeconds(),t.length);const e=h||/^\s*:\s*s/i.test(_.slice(r+a.length));return je(e?Z.getUTCMinutes():Z.getUTCMonth()+1,t.length)}).replace(/\uE000(\d+)\uE000/g,(a,r)=>x[Number(r)]??"")}function hn(Z,K,s){if(Z==null)return{text:"",value:null};if(Z instanceof Date)return Number.isFinite(Z.getTime())?{text:cn(Z,K||"yyyy-mm-dd",s),value:Z.getTime()/fn+25569}:(s(),{text:"",value:null});if(typeof Z=="number")return Number.isFinite(Z)?{text:br.formatExcelNumber(Z,K,s),value:Z}:(s(),{text:String(Z),value:null});if(typeof Z=="boolean")return{text:Z?"TRUE":"FALSE",value:Z};if(typeof Z=="string")return{text:Z,value:Z};if("error"in Z)return{text:Z.error,value:Z.error};if("richText"in Z){const x=Z.richText.map(_=>_.text).join("");return{text:x,value:x}}return"text"in Z?{text:String(Z.text),value:String(Z.text)}:(s(),{text:"",value:null})}function dn(Z,K){const s=(K??"").replace(/"[^"]*"|\\.|\[[^\]]*\]/g,"");return typeof Z=="number"||Z===null&&/[0#?]/.test(s)?"number":typeof Z=="boolean"?"boolean":"text"}function pn(Z,K,s,x,_){let h;try{h=K.formula}catch{_.add(`${x}: 部分共享公式无法展开,仅保留缓存结果`)}Object.assign(Z,{editable:!1,...h?{formula:h}:{}}),_.add(`${x}: 公式使用 Excel 已保存的计算结果并保持只读;修改其他单元格不会自动重算公式`),s==null&&_.add(`${x}: 存在没有缓存结果的公式,显示为空;请先在 Excel 中计算并保存`)}function mn(Z,K,s,x){const _=Z.numFmt,h=()=>x.add(`${s}: 存在无法完整还原的自定义数字或日期格式,已保留原值和 numberFormat`),o=Z.value,a=o&&typeof o=="object"&&("formula"in o||"sharedFormula"in o),r=a?Z.result:o,t=hn(r,_,h),e={...t,editable:!0,..._?{numberFormat:_}:{}};return e.valueType=dn(t.value,_),r instanceof Date&&(Object.assign(e,{editable:!1}),x.add(`${s}: 日期单元格保留 Excel 日期序列与格式,目前在预览中保持只读`),K&&x.add(`${s}: 1904 日期系统已统一转换为 1900 日期系统,保留相同日历日期`)),a&&pn(e,Z,r,s,x),o&&typeof o=="object"&&"richText"in o&&x.add(`${s}: 单元格内混合字体已合并为纯文本,保留单元格级样式`),typeof e.text=="string"&&/\{\{[^}]+\}\}/.test(e.text)&&x.add(`${s}: {{字段}} 占位符按原文导入;动态业务数据需显式绑定,不会自动推断接口字段`),e}const or=["FFFFFF","000000","E7E6E6","44546A","4472C4","ED7D31","A5A5A5","FFC000","5B9BD5","70AD47","0563C1","954F72"],bn=["000000","FFFFFF","FF0000","00FF00","0000FF","FFFF00","FF00FF","00FFFF"],gn={hair:.25,dotted:.5,dashed:.5,thin:.5,medium:1,thick:1.5,double:1};function yn(Z){const K=Z.model,s=/<(?:\w+:)?clrScheme\b[^>]*>([\s\S]*?)<\/(?:\w+:)?clrScheme>/.exec(K.themes?.theme1??"");if(!s)return or;const x=[...s[1].matchAll(/<(?:\w+:)?(?:srgbClr|sysClr)\b[^>]*(?:val|lastClr)="([A-Fa-f0-9]{6})"[^>]*\/?\s*>/g)].map(_=>_[1].toUpperCase());return x.length<12?or:[x[1],x[0],x[3],x[2],...x.slice(4,12)]}function Ke(Z,K=0){return`#${[0,2,4].map(s=>{const x=Number.parseInt(Z.slice(s,s+2),16),_=K<0?x*(1+K):x*(1-K)+255*K;return Math.max(0,Math.min(255,Math.round(_))).toString(16).padStart(2,"0")}).join("").toUpperCase()}`}function Oe(Z,K){if(!Z)return;const s=Z.argb;if(s&&/^[A-Fa-f\d]{6,8}$/.test(s))return Ke(s.slice(-6),Z.tint);if(Z.theme!==void 0)return Ke(K[Z.theme]??"000000",Z.tint);if(Z.indexed!==void 0&&Z.indexed<16)return Ke(bn[Z.indexed%8],Z.tint)}function vn(Z,K,s,x){const _=[K.top,K.right,K.bottom,K.left],h=_.map(a=>!!a?.style);[Z.borderTop,Z.borderRight,Z.borderBottom,Z.borderLeft]=h;const o=_.filter(a=>a?.style);o.length&&(Z.borderColor=Oe(o[0]?.color,s)??"#000000",Z.lineWidthPt=gn[o[0].style]??.5,o.some(a=>a.style!=="thin"&&a.style!=="medium"&&a.style!=="thick")&&x(),o.some(a=>Oe(a.color,s)!==Oe(o[0].color,s)||a.style!==o[0].style)&&x(),K.diagonal?.style&&x())}function wn(Z,K,s){const x=K.horizontal;x&&["left","center","right","justify"].includes(x)?Z.align=x:x&&s(),K.vertical&&(Z.verticalAlign=K.vertical==="distributed"||K.vertical==="justify"?"middle":K.vertical),(K.textRotation||K.shrinkToFit||K.indent||K.readingOrder)&&s()}function _n(Z,K,s,x){const _=Z.style,h=_.font??{},o={align:"left",verticalAlign:"bottom",fontFamily:h.name||"Calibri",fontSize:h.size||11};h.bold!==void 0&&(o.bold=h.bold),h.italic!==void 0&&(o.italic=h.italic),h.underline!==void 0&&(o.underline=!!h.underline);const a=Oe(h.color,K);a&&(o.color=a);const r=_.fill;if(r?.type==="pattern"&&r.pattern==="solid"){const t=Oe(r.fgColor,K);t&&(o.backgroundColor=t)}else r&&!(r.type==="pattern"&&r.pattern==="none")&&x.add(`${s}: 渐变或图案填充暂不支持,保留单元格内容`);return _.border&&vn(o,_.border,K,()=>x.add(`${s}: 多种边线颜色、虚线、双线或对角线按单元格统一实线近似呈现`)),_.alignment&&wn(o,_.alignment,()=>x.add(`${s}: 部分旋转、缩进、收缩或分散对齐样式暂不支持`)),(h.strike||h.vertAlign)&&x.add(`${s}: 删除线、上标或下标暂不支持`),o}function xn(Z,K,s,x=1){const _=new WeakMap;return h=>{let o=_.get(h.style);if(!o){const t=_n(h,Z,K,s);t.fontSize=(t.fontSize??11)*x,o=h.alignment?.horizontal?{left:t,center:t,right:t}:{left:t,center:{...t,align:"center"},right:{...t,align:"right"}},_.set(h.style,o)}const a=h.value,r=a&&typeof a=="object"&&("formula"in a||"sharedFormula"in a)?h.result:a;return typeof r=="boolean"?o.center:typeof r=="number"||r instanceof Date?o.right:o.left}}const Ye={maxFileBytes:20*1024*1024,maxUncompressedBytes:64*1024*1024,maxCells:25e4,maxRows:1e5,maxColumns:2048,maxSheets:32},ar={...Ye,maxCells:1e6,maxRows:1048576,maxColumns:16384};function Sn(Z){const K=Z.layout??"wide";if(!["wide","a3","a4"].includes(K))throw new Error("Excel 导入 layout 仅支持 wide、a3、a4");if(Z.landscape!==void 0&&typeof Z.landscape!="boolean")throw new Error("landscape 应为布尔值");const s=Z.maxRowsPerPage??80;if(!Number.isInteger(s)||s<1||s>200)throw new Error("maxRowsPerPage 应为 1 到 200 的整数");const x={...Ye};for(const _ of Object.keys(Ye)){const h=Z.limits?.[_];if(h!==void 0){if(!Number.isInteger(h)||h<1||h>ar[_])throw new Error(`${_} 应为 1 到 ${ar[_]} 的整数`);x[_]=h}}return{layout:K,landscape:Z.landscape??!0,maxRowsPerPage:s,limits:x}}class kn{constructor(){this.messages=new Set,this.overflow=!1}add(K){this.messages.size<200?this.messages.add(K):this.messages.has(K)||(this.overflow=!0)}result(){return[...this.messages,...this.overflow?["其余导入告警已合并;请缩小范围进一步检查"]:[]]}}const En=25.4/72;function Mn(Z,K){if(K.sheets===void 0)return Z.worksheets.filter(x=>x.state==="visible");if(!Array.isArray(K.sheets)||K.sheets.length===0)throw new Error("sheets 应为非空的工作表名称或一基位置数组");const s=[];for(const x of K.sheets){const _=typeof x=="string"?Z.getWorksheet(x):Number.isInteger(x)&&x>0?Z.worksheets[x-1]:void 0;if(!_)throw new Error(`Excel 工作表不存在:${String(x)}`);if(s.includes(_))throw new Error(`Excel 工作表选择重复:${_.name}`);s.push(_)}return s}function Cn(Z,K){if(typeof Z.range=="string")return Z.range;if(Z.range!==void 0){if(Z.range===null||typeof Z.range!="object"||Array.isArray(Z.range))throw new Error("range 应为 A1 范围或以工作表名为键的范围对象");return Object.prototype.hasOwnProperty.call(Z.range,K)?Z.range[K]:void 0}}function lr(Z,K,s){if(!Number.isFinite(Z)||Z<0||Z>s)throw new Error(`${K} 无效或超过尺寸上限`);return Math.max(.01,Z)}function Tn(Z,K,s,x){const _=[];for(let f=K.left;f<=K.right;f++){const c=Z.getColumn(f);c.hidden&&x.add(`${Z.name}: 隐藏行列按隐藏尺寸保留;需要编辑时请先在 Excel 中取消隐藏`);const u=c.width??Z.properties.defaultColWidth??8.43;_.push(lr(c.hidden||u===0?.01:vr(u),"Excel 列宽",2e3))}const h=_.reduce((f,c)=>f+c,0),o=s.layout==="wide",a=s.layout==="a3"?[297,420]:[210,297],r=o?h:a[s.landscape?1:0],t=o?297:a[s.landscape?0:1],e=o?0:10,l=r-2*e,n=o?1:l/h;!o&&n<.5&&x.add(`${Z.name}: 标准纸张列宽压缩较大;完整宽表建议使用 layout: 'wide'`);const i=f=>{const c=Z.getRow(f);return c.hidden&&x.add(`${Z.name}: 隐藏行列按隐藏尺寸保留;需要编辑时请先在 Excel 中取消隐藏`),lr(c.hidden?.01:(c.height??Z.properties.defaultRowHeight??15)*En*n,"Excel 行高",1e3)};return{width:l,pageWidth:r,pageHeight:t,margin:e,scale:n,columns:_.map(f=>f*n),rowHeight:i}}function An(Z,K){const{sheet:s,range:x,merges:_,style:h,date1904:o,warnings:a}=Z,r=[];for(let t=K.top;t<=K.bottom;t++){const e=[];for(let l=x.left;l<=x.right;l++){const n=`${t}:${l}`;if(_.covered.has(n))continue;const i=s.getCell(t,l),f=mn(i,o,s.name,a);s.sheetProtection?.sheet===!0&&i.protection?.locked!==!1&&(f.editable=!1),f.style=h(i);const u=_.masters.get(n);u&&(f.colSpan=u.right-u.left+1,f.rowSpan=u.bottom-u.top+1),e.push(f)}r.push(e)}return r}function ur(Z,K,s,x){const{geometry:_,range:h,sheet:o,options:a}=Z,r=Array.from({length:K.bottom-K.top+1},(t,e)=>_.rowHeight(K.top+e));return{kind:"rect",leftMm:_.margin,topMm:s,widthMm:_.width,heightMm:r.reduce((t,e)=>t+e,0),nid:`xlsx:${Z.tableId}:${K.top}`,grid:{cells:An(Z,K),colWidthsMm:_.columns,rowHeightsMm:r,paddingMm:.25*_.scale},table:{id:Z.tableId,role:x?"header":"body",rowIndex:x?-1:K.top-Z.headerBottom-1,columnKeys:Array.from({length:h.right-h.left+1},(t,e)=>Ge(h.left+e)),title:o.name,layout:a.layout==="wide"?"wide":"page"},meta:{xlsxSheet:o.name,xlsxRange:qe({...h,top:K.top,bottom:K.bottom})}}}function Rn(Z,K){const{geometry:s,options:x,range:_,headerBottom:h}=Z,o=[];let a=s.margin;if(K.top===_.top){const t=ur(Z,{top:K.top,bottom:h},a,!0);o.push(t),a+=t.heightMm}const r=Math.max(K.top,h+1);return r<=K.bottom&&o.push(ur(Z,{top:r,bottom:K.bottom},a,!1)),{widthMm:s.pageWidth,heightMm:s.pageHeight,layout:x.layout==="wide"?"wide":"page",marginTopMm:s.margin,marginBottomMm:s.margin,marginLeftMm:s.margin,marginRightMm:s.margin,components:o}}function jn(Z,K){const s=Z;Z.state!=="visible"&&K.add(`${Z.name}: 已按显式选择导入隐藏工作表`),Z.sheetProtection?.sheet===!0&&K.add(`${Z.name}: 已保留启用的工作表保护,锁定单元格在预览中保持只读`),s.conditionalFormattings?.length&&K.add(`${Z.name}: 条件格式规则暂不执行,仅使用已保存的基础单元格样式`),Z.autoFilter&&K.add(`${Z.name}: Excel 筛选下拉与排序操作不导入,完整保留选区单元格`),Object.keys(s.dataValidations?.model??{}).length&&K.add(`${Z.name}: Excel 数据验证与下拉输入规则不导入;业务校验应由宿主配置`)}function On(Z,K,s,x,_,h){jn(Z,_);const o=qr(Z,K),a=Xr(K,o),r=Tn(Z,K,x,_),t=K.right-K.left+1,e=Math.max(1,Math.min(x.maxRowsPerPage,Math.floor(1e4/t)));if(a.some(i=>(i.bottom-i.top+1)*t>Math.max(1e4,t)))throw new Error(`${Z.name}: 跨行合并区域超过单段单元格预算,请缩小范围或拆分合并区域`);const l=Zr(a,e,x.layout==="wide"?1/0:r.pageHeight-r.margin*2,r.rowHeight),n={sheet:Z,range:K,geometry:r,options:x,warnings:_,merges:Kr(o),style:xn(yn(s),Z.name,_,r.scale),date1904:s.properties.date1904===!0,tableId:`xlsx:${h}:${Z.name}`,headerBottom:a[0].bottom};return l.map(i=>Rn(n,i))}async function In(Z,K={}){const s=Sn(K),x=new kn,_=await un(Z,s,x),h=new fr.Workbook;try{await h.xlsx.load(_)}catch{throw new Error("Excel 文件解析失败;请确认它是未加密且完整的 .xlsx 文件")}if(h.worksheets.length>s.limits.maxSheets)throw new Error("Excel 工作表数量超过导入上限");const o=Mn(h,K);if(!o.length)throw new Error("Excel 中没有可导入的可见工作表;可通过 sheets 显式选择隐藏工作表");const a={schemaVersion:mr.RENDER_PLAN_SCHEMA_VERSION,pages:[]},r=[];let t=s.limits.maxCells;for(const e of o){const l=Hr(e,Cn(K,e.name));t-=Vr(l,s,t);const n=h.worksheets.indexOf(e)+1,i=On(e,l,h,s,x,n);r.push({name:e.name,index:n,range:qe(l),rowCount:l.bottom-l.top+1,columnCount:l.right-l.left+1,pageStart:a.pages.length,pageCount:i.length}),a.pages.push(...i)}return{template:a,warnings:x.result(),sheets:r}}exports.importExcelTemplate=In;exports.renderPlanToXlsx=$r;
package/dist/xlsx.js CHANGED
@@ -22622,7 +22622,7 @@ function Mr(Z, K, s, x) {
22622
22622
  }
22623
22623
  const h = K.value;
22624
22624
  if (h === null || typeof h == "string" || typeof h == "boolean" || typeof h == "number" && Number.isFinite(h)) {
22625
- Ve(h, Z.address), Z.value = h, typeof h == "number" && K.numberFormat && (Z.numFmt = K.numberFormat);
22625
+ Ve(h, Z.address), Z.value = h, K.numberFormat && (Z.numFmt = K.numberFormat);
22626
22626
  return;
22627
22627
  }
22628
22628
  Ve(_, Z.address), Z.value = _, x.push(`原始单元格值无效,已保留显示文本:${Z.address}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agile-team/mach-report",
3
- "version": "2.4.0",
3
+ "version": "2.4.1",
4
4
  "description": "独立的 TypeScript 报表引擎:模板分页、DOM/Canvas/PDF/Excel 输出与 Vue 3 预览组件",
5
5
  "type": "module",
6
6
  "sideEffects": [
@@ -1,6 +0,0 @@
1
- "use strict";var Zt=Object.create;var ft=Object.defineProperty;var Jt=Object.getOwnPropertyDescriptor;var Xt=Object.getOwnPropertyNames;var Qt=Object.getPrototypeOf,_t=Object.prototype.hasOwnProperty;var en=(t,n,l,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of Xt(n))!_t.call(t,r)&&r!==l&&ft(t,r,{get:()=>n[r],enumerable:!(o=Jt(n,r))||o.enumerable});return t};var Ke=(t,n,l)=>(l=t!=null?Zt(Qt(t)):{},en(n||!t||!t.__esModule?ft(l,"default",{value:t,enumerable:!0}):l,t));const e=require("vue"),j=require("@agile-team/mach-report"),vt=require("./page-window-index-DEjnM6IB.cjs"),gt=require("./render-plan-CCTL4F9v.cjs"),de=require("./plugin-BkK2mm_p.cjs");function Je(t){return t==null?[]:Array.isArray(t)?t.map(String).filter(n=>n!==""):String(t).split(",").map(n=>n.trim()).filter(n=>n!=="")}function tn(t){return Je(t).join(",")}class $e extends Error{constructor(n){super(n),this.name="PlanLoadError"}}function nn(t={}){const{baseUrl:n="",headers:l,credentials:o,timeoutMs:r=3e4}=t,a=n.replace(/\/+$/,"");return async({url:s,method:d,params:v,signal:y})=>{let p=`${a}${s}`;if(v&&Object.keys(v).length>0){const w=p.indexOf("#"),B=w>=0?p.slice(w):"",P=w>=0?p.slice(0,w):p,R=P.indexOf("?"),C=R>=0?P.slice(0,R):P,S=new URLSearchParams(R>=0?P.slice(R+1):"");for(const[N,L]of Object.entries(v))S.set(N,L);p=`${C}?${S}${B}`}const m=(w,B)=>{const P=new $e(w);return Object.defineProperty(P,"cause",{value:B,configurable:!0,writable:!0}),P};if(y?.aborted)throw m(`请求已取消: ${s}`,y.reason);const b=new AbortController;let u;const E=()=>{b.signal.aborted||(u="external",b.abort(y?.reason))};y?.addEventListener("abort",E,{once:!0});const k=setTimeout(()=>{b.signal.aborted||(u="timeout",b.abort())},r);try{const w=await fetch(p,{method:d.toUpperCase(),headers:{Accept:"application/json",...l},credentials:o,signal:b.signal});if(!w.ok)throw new $e(`HTTP ${w.status} ${s}`);return await w.json()}catch(w){throw u==="timeout"?m(`请求超时(${r}ms): ${s}`,w):u==="external"?m(`请求已取消: ${s}`,w):w instanceof $e?w:m(`请求失败(${s}): ${w instanceof Error?w.message:String(w)}`,w)}finally{clearTimeout(k),y?.removeEventListener("abort",E)}}}function ht(t,n,l={}){const o=l.pxPerMm??3.7795275590551185,r=e.computed(()=>Math.max(0,e.unref(l.gapPx)??18)),a=e.ref(0),s=e.ref(800),d=e.computed(()=>{const w=t.value?.pages??[];return vt.createPageWindowIndex(w.map(B=>B.pageHeightMm*o),r.value)}),v=e.computed(()=>{let w=0;for(const B of t.value?.pages??[])w=Math.max(w,B.pageWidthMm*o);return{w,h:d.value.totalHeightPx}}),y=e.computed(()=>d.value.window(s.value/n.value,a.value/n.value,e.unref(l.overscan)??1)),p=e.computed(()=>{const w=t.value;if(!w)return[];const{start:B,end:P}=y.value;return w.pages.slice(B,P+1).map((R,C)=>({page:R,index:B+C}))});let m=0,b=!1;function u(w){w&&(a.value=w.scrollTop,s.value=w.clientHeight||800)}function E(w,B){return P=>{m||b||(m=requestAnimationFrame(()=>{if(m=0,b||(u(P),B.value<=0))return;const R=Math.max(0,P.scrollTop+32)/n.value;w.value=Math.min(B.value,d.value.pageAt(R)+1)}))}}function k(){b=!0,m&&cancelAnimationFrame(m),m=0}return e.onScopeDispose(k),{contentSize:v,windowRange:y,visiblePages:p,makeScrollHandler:E,refreshViewport:u,pageOffsetPx:w=>d.value.offsetAt(w),destroy:k}}function bt(t){const n=e.ref(1),l=e.ref("fit");let o=0;function r(){o&&cancelAnimationFrame(o),o=0}function a(){r(),o=requestAnimationFrame(()=>{if(o=0,l.value!=="fit")return;const d=t();!d?.viewport||d.viewport.clientWidth<=48||!Number.isFinite(d.pageWidthPx)||(n.value=Math.min(1,(d.viewport.clientWidth-48)/Math.max(1,d.pageWidthPx)))})}function s(d){if(d==="fit")l.value="fit",a();else{if(!Number.isFinite(d))return;r(),l.value="raw",n.value=Math.min(3,Math.max(.3,d/100))}}return e.getCurrentScope()&&e.onScopeDispose(r),{zoom:n,zoomMode:l,applyFitZoom:a,setZoom:s}}const Re=8;function Me(){return new Promise(t=>setTimeout(t,0))}function Be(t){return`p${t.pageWidthMm}x${t.pageHeightMm}`.replace(/[.+]/g,"_")}function Xe(t){const n=new Map;return t.pages.forEach(r=>{n.has(Be(r))||n.set(Be(r),r)}),`<!doctype html><html><head><meta charset="utf-8"><style>${`.mr-page{margin:0 auto;page-break-after:always;}
2
- .mr-page tr{break-inside:avoid;page-break-inside:avoid;}
3
- .mr-comp{break-inside:avoid;page-break-inside:avoid;}
4
- ${[...n.values()].map(r=>`@page ${Be(r)}{size:${r.pageWidthMm}mm ${r.pageHeightMm}mm;margin:0;}`).join(`
5
- `)}
6
- body{margin:0;background:#fff;}`}</style></head><body>`}function Qe(t){const n=j.renderPage(t,96,{},document);return n.style.page=Be(t),n.outerHTML}function _e(t){return{head:Xe(t),pageChunks:t.pages.map(Qe)}}async function rn(t,n={}){const l={schemaVersion:"mach-report-batch-print",pages:t.flatMap(s=>s.pages)};if(l.pages.length===0)return;const o=Xe(l),r=document.createElement("iframe");r.style.cssText="position:fixed;right:0;bottom:0;width:0;height:0;border:0;visibility:hidden;",document.body.appendChild(r);let a=!1;try{const s=r.contentDocument;s.open(),s.write(o);for(let d=0;d<l.pages.length;d++)s.write(Qe(l.pages[d])),d%Re===Re-1&&(n.onProgress?.(d+1,l.pages.length),await Me());s.write("</body></html>"),s.close(),await Me(),n.onProgress?.(l.pages.length,l.pages.length),a=!0,r.contentWindow?.focus(),r.contentWindow?.print()}catch(s){n.onError?.(s instanceof Error?`批量打印失败: ${s.message}`:"批量打印失败")}finally{a?setTimeout(()=>r.remove(),6e4):r.remove()}}function yt(t){const{head:n,pageChunks:l}=_e(t);return{html:`${`<!doctype html><html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40"><head><meta charset="utf-8"><!--[if gte mso 9]><xml><w:WordDocument><w:View>Print</w:View><w:Zoom>100</w:Zoom></w:WordDocument></xml><![endif]-->${n.replace(/^<!doctype html><html><head>/,"")}`}${l.join("")}</body></html>`,filename:"mach-report.doc"}}function wt(t,n){let l=null,o=!1,r=!1,a=0;const s=new Map,d=new Map;let v=null,y=null,p=null,m=null,b=null;function u(c,f){return!r&&t.value===c&&a===f}function E(){if(r)return;const c=[...s.values()].reverse().find(f=>u(f.plan,f.epoch))?.format??null;c!==v&&(v=c,n.onBusy?.(c))}function k(c,f,x){const $={};return s.set($,{plan:c,epoch:f,format:x}),E(),$}function w(c){s.delete(c),E()}function B(){for(const[c,f]of d)u(f.plan,f.epoch)||(c.close(),d.delete(c))}function P(){a++,C(),E(),B()}const R=e.watch(t,P,{flush:"sync"});function C(){l?.remove(),l=null}function S(){r=!0,a++,R(),C(),B(),s.clear(),n.onPrinting?.(!1)}function N(c,f){const x=URL.createObjectURL(c);setTimeout(()=>URL.revokeObjectURL(x),1e4);const $=document.createElement("a");$.href=x,$.download=f,$.click()}async function L(){if(o)return;const c=t.value;if(r||!c||c.pages.length===0)return;const f=a;o=!0,n.onPrinting?.(!0),C();const x=Xe(c);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 $=l;try{const M=$.contentDocument;M.open(),M.write(x);for(let z=0;z<c.pages.length;z++)if(M.write(Qe(c.pages[z])),z%Re===Re-1&&await Me(),$!==l)return;if(M.write("</body></html>"),M.close(),await Me(),!u(c,f)||$!==l)return;$.contentWindow?.focus(),$.contentWindow?.print()}catch{$===l&&C(),u(c,f)&&n.onError("调用打印失败,请改用导出 PDF","print")}finally{o=!1,r||n.onPrinting?.(!1)}}function U(c,f){if(y?.plan===c&&y.epoch===f)return y.promise;const x=Promise.resolve().then(()=>{if(!u(c,f))throw new Error("报表已切换或卸载");return n.getPdfExporter()(c,$=>{u(c,f)&&n.onWarning?.($)})}).finally(()=>{y?.promise===x&&(y=null)});return y={plan:c,epoch:f,promise:x},x}async function K(){const c=t.value;if(r||!c||c.pages.length===0)return;const f=a;if(p?.plan===c&&p.epoch===f)return p.promise;const x=k(c,f,"PDF"),$=(async()=>{try{const M=await U(c,f);if(!u(c,f))return;N(new Blob([M],{type:"application/pdf"}),"mach-report.pdf")}catch(M){u(c,f)&&n.onError(M instanceof Error?`PDF 导出失败: ${M.message}`:"PDF 导出失败","pdf")}finally{w(x),p?.token===x&&(p=null)}})();return p={plan:c,epoch:f,promise:$,token:x},$}async function W(){const c=t.value;if(r||!c||c.pages.length===0)return;const f=a;if(m?.plan===c&&m.epoch===f)return m.promise;const x={...n.getXlsxOptions?.()},$=k(c,f,"Excel"),M=(async()=>{try{const{renderPlanToXlsx:z}=await import("@agile-team/mach-report/xlsx");if(!u(c,f))return;const{buffer:G,warnings:Q}=await z(c,x);if(!u(c,f)||(Q.length>0&&n.onWarning?.(`Excel 导出有 ${Q.length} 条提示:${Q.slice(0,2).join(";")}`),!u(c,f)))return;N(new Blob([G],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}),"mach-report.xlsx")}catch(z){u(c,f)&&n.onError(z instanceof Error?`Excel 导出失败: ${z.message}`:"Excel 导出失败","export")}finally{w($),m?.token===$&&(m=null)}})();return m={plan:c,epoch:f,promise:M,token:$},M}async function ee(){const c=t.value;if(r||!c||c.pages.length===0)return;const f=a;if(b?.plan===c&&b.epoch===f)return b.promise;const x=k(c,f,"图片"),$=(async()=>{try{const{blobs:M}=await j.renderPlanToImages(c,{dpr:Math.min(2,typeof devicePixelRatio=="number"?devicePixelRatio:1)});if(!u(c,f))return;M.forEach((z,G)=>{N(z,M.length>1?`mach-report-page-${G+1}.png`:"mach-report.png")})}catch(M){u(c,f)&&n.onError(M instanceof Error?`图片导出失败: ${M.message}`:"图片导出失败","export")}finally{w(x),b?.token===x&&(b=null)}})();return b={plan:c,epoch:f,promise:$,token:x},$}function O(){const c=t.value;if(!(r||!c||c.pages.length===0))try{const{html:f,filename:x}=yt(c);N(new Blob([f],{type:"application/msword;charset=utf-8"}),x)}catch(f){n.onError(f instanceof Error?`Word 导出失败: ${f.message}`:"Word 导出失败","export")}}async function ae(c){const f=t.value;if(!(r||!f||f.pages.length===0)){if(c==="pdf"){await K();return}if(c==="xlsx"||c==="excel"){await W();return}if(c==="png"||c==="image"){await ee();return}if(c==="word"||c==="doc"){O();return}if(c!=="html"){n.onError(`不支持的导出格式:${c}`,"export");return}try{const{head:x,pageChunks:$}=_e(f),M=`${x}${$.join("")}</body></html>`;N(new Blob([M],{type:"text/html;charset=utf-8"}),"mach-report.html")}catch(x){n.onError(x instanceof Error?`HTML 导出失败: ${x.message}`:"HTML 导出失败","export")}}}function H(){const c=t.value;if(r||!c||c.pages.length===0)return;const f=a,x=window.open("","_blank");if(!x){n.onError("浏览器拦截了弹窗,请允许弹窗后重试","pdf");return}d.set(x,{plan:c,epoch:f});const $=k(c,f,"PDF");U(c,f).then(M=>{if(!u(c,f)||x.closed){d.delete(x)&&x.close();return}const z=URL.createObjectURL(new Blob([M],{type:"application/pdf"}));setTimeout(()=>URL.revokeObjectURL(z),6e4);const G=x.document;G.title="PDF 预览",G.documentElement.style.height="100%",G.body.style.cssText="margin:0;height:100%;";const Q=G.createElement("iframe");Q.title="PDF 预览",Q.style.cssText="display:block;width:100%;height:100%;border:0;",Q.src=z,G.body.replaceChildren(Q),d.delete(x)}).catch(M=>{x.close(),d.delete(x),u(c,f)&&n.onError(M instanceof Error?`PDF 预览失败: ${M.message}`:"PDF 预览失败","pdf")}).finally(()=>w($))}return{print:L,exportAs:ae,exportImages:ee,exportWord:O,openPdfWindow:H,invalidatePending:P,releasePrintFrame:C,dispose:S}}const xt="mrp-hit";function on(t){t.querySelectorAll(`mark.${xt}`).forEach(l=>{const o=l.parentNode;if(o){for(;l.firstChild;)o.insertBefore(l.firstChild,l);l.remove(),o.normalize()}})}function an(t,n){const l=n.trim();if(!l)return 0;const o=l.toLowerCase(),r=document.createTreeWalker(t,NodeFilter.SHOW_TEXT,{acceptNode(d){const v=d.parentElement;return!v||v.closest("mark")||/^(SCRIPT|STYLE)$/.test(v.tagName)?NodeFilter.FILTER_REJECT:(d.nodeValue??"").toLowerCase().includes(o)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT}}),a=[];for(let d=r.nextNode();d;d=r.nextNode())a.push(d);let s=0;for(const d of a){const v=d.nodeValue??"",y=v.toLowerCase(),p=d.parentElement;if(!p)continue;const m=document.createDocumentFragment();let b=0,u=y.indexOf(o);for(;u>=0;){u>b&&m.appendChild(document.createTextNode(v.slice(b,u)));const E=document.createElement("mark");E.className=xt,E.textContent=v.slice(u,u+l.length),m.appendChild(E),s++,b=u+l.length,u=y.indexOf(o,b)}b<v.length&&m.appendChild(document.createTextNode(v.slice(b))),p.replaceChild(m,d)}return s}const ln=new Set(["line","rect","ellipse","chart"]);function*sn(t){for(const n of t.cells??[])for(const l of n??[])yield l?.text??"",yield*l?.children??[]}function*un(t){if(gt.isRichText(t))for(const n of t.richParagraphs)for(const l of n.segments??[])yield(l.kind==="field"?l.field:l.text)??"";else t.lines?.length?yield*t.lines:yield t.text??""}function*cn(t){const n=[t.values()];for(;n.length>0;){const l=n[n.length-1].next();if(l.done){n.pop();continue}const o=l.value;if(typeof o=="string"){yield o;continue}yield"",!gt.isImageBackedComponent(o)&&(o.kind==="text"?n.push(un(o)):o.grid?n.push(sn(o.grid)):ln.has(o.kind)||(yield o.fallbackText??""))}}function*dn(t){for(let n=0;n<t.pages.length;n++){for(const l of cn(t.pages[n].components))yield{text:l,pageIndex:n};yield{text:"",pageIndex:n}}}function fn(t,n){const l=t.toLowerCase();let o=0;for(let r=l.indexOf(n);r>=0;r=l.indexOf(n,r+n.length))o++;return o}function pn(t){const{plan:n,gotoPage:l,highlight:o,clearHighlights:r}=t,a=e.ref(!1),s=e.ref(""),d=e.ref(0),v=e.ref(0),y=e.ref(!1);let p=[];const m=e.computed(()=>{if(v.value===0)return null;const C=d.value;let S=0,N=p.length-1;for(;S<N;){const U=S+N>>>1;p[U].cumulative<=C?S=U+1:N=U}const L=p[S];return L?{pageIndex:L.pageIndex,occurrence:C-(p[S-1]?.cumulative??0)}:null});let b=null,u=null,E=0;function k(){E++,b&&clearTimeout(b),u&&clearTimeout(u),b=u=null,y.value=!1}function w(C){s.value=C,d.value=0,v.value=0,p=[],y.value=!1;const S=C.trim().toLowerCase(),N=n.value;if(!S||!N)return;y.value=!0;const L=E,U=dn(N),K=[];let W=0;function ee(){if(u=null,L!==E||N!==n.value)return;const O=performance.now();let ae=0;for(;ae<5e3&&performance.now()-O<4;){const H=U.next();if(H.done){p=K,v.value=W,y.value=!1,p[0]&&l(p[0].pageIndex+1);return}const c=fn(H.value.text,S);if(c>0){W+=c;const f=K[K.length-1];f?.pageIndex===H.value.pageIndex?f.cumulative=W:K.push({pageIndex:H.value.pageIndex,cumulative:W})}ae++}u=setTimeout(ee,0)}ee()}function B(C){if(k(),s.value=C,d.value=v.value=0,p=[],!C.trim()){w("");return}y.value=!0,b=setTimeout(()=>{b=null,w(C)},Math.max(0,e.unref(t.debounceMs)??200))}function P(C){const S=v.value;if(S===0||y.value)return;d.value=(d.value+C+S)%S;const N=m.value;N&&l(N.pageIndex+1)}function R(){k(),s.value="",d.value=v.value=0,p=[]}return e.watch(n,R,{flush:"sync"}),e.onScopeDispose(R),{visible:a,query:s,matchIndex:d,matchCount:v,activeMatch:m,searching:y,toggle:()=>{a.value=!a.value},onInput:B,onNav:P,apply:C=>{s.value.trim()&&o(C,s.value.trim())},clear:C=>{r(C)},reset:R}}function mn(t,n){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}}),o=e.computed(()=>!l.value||!n.plan.value?0:Math.round(JSON.stringify(n.plan.value).length/1024)),r=e.computed(()=>!l.value||!n.plan.value?null:{pages:n.pageCount.value,window:`${n.windowRange.value.start}-${n.windowRange.value.end}`,zoom:`${Math.round(n.zoom.value*100)}%`,loadMs:`${n.loadMs.value}ms`,planKB:o.value});return{enabled:l,debugStats:r}}function vn(t,n){const{thumbsRoot:l,visible:o,renderThumbCanvas:r}=n,a=e.ref(0),s=e.ref(800),d=e.computed(()=>(t.value?.pages??[]).map(P=>Math.round(P.pageHeightMm/P.pageWidthMm*116))),v=e.computed(()=>vt.createPageWindowIndex(d.value.map(P=>P+20),8)),y=e.computed(()=>v.value.window(s.value,a.value,1)),p=e.computed(()=>{if(!o.value)return[];const{start:P,end:R}=y.value;return d.value.slice(P,R+1).map((C,S)=>({index:P+S,height:C}))});let m=0,b=0,u=!1;function E(){const P=l.value;P&&(a.value=P.scrollTop,s.value=P.clientHeight||800)}function k(){u||b||(b=requestAnimationFrame(()=>{b=0,E()}))}function w(){if(p.value,m&&cancelAnimationFrame(m),m=0,u||!o.value||!t.value||!l.value)return;E();const P=p.value,R=t.value,C=l.value;let S=0;function N(){if(m=0,!(u||!o.value||t.value!==R||l.value!==C)){for(let L=0;S<P.length&&L<2;L++,S++){const U=P[S].index,K=C.querySelector(`[data-thumb="${U+1}"]`);if(!K||K.childElementCount>0)continue;const W=r(U);W&&(W.style.width="100%",W.style.height="100%",W.style.display="block",K.appendChild(W))}S<P.length&&(m=requestAnimationFrame(N))}}m=requestAnimationFrame(N)}function B(){u=!0,m&&cancelAnimationFrame(m),b&&cancelAnimationFrame(b),m=b=0}return e.onScopeDispose(B),{schedule:w,destroy:B,onScroll:k,windowRange:y,visibleThumbs:p}}function gn(){const t=e.shallowRef(0);return{loadMs:t,start(){return typeof performance<"u"?performance.now():0},end(n){t.value=n?Math.round(performance.now()-n):0}}}const hn={class:"mrp-toolbar"},bn={class:"mrp-title"},yn=["disabled"],wn={class:"mrp-pageinfo"},xn=["disabled"],En=["disabled"],Pn={key:2,class:"mrp-search"},kn=["placeholder","value"],Cn={key:0,class:"mrp-search-count",role:"status"},$n=["disabled"],Bn=["disabled"],Sn=["disabled"],Rn=["disabled"],Mn=["disabled"],Fn=["disabled"],Dn=["disabled"],Tn=["disabled"],Nn=["disabled"],In=e.defineComponent({__name:"ReportToolbar",props:{pageCount:{},currentPage:{},zoomMode:{},zoom:{},showExport:{type:Boolean},showPrint:{type:Boolean},showPdfWindow:{type:Boolean},messages:{},search:{},thumbsVisible:{type:Boolean},showImport:{type:Boolean},busy:{type:Boolean}},emits:["goto","zoom","export","print","pdf-window","search-input","search-nav","search-toggle","thumbs-toggle","import-excel"],setup(t){const n=t,l=e.ref(null);e.watch(()=>n.search.visible,r=>{r&&e.nextTick(()=>l.value?.focus())});function o(r,a,s){return r.replace("{cur}",String(a)).replace("{total}",String(s))}return(r,a)=>(e.openBlock(),e.createElementBlock("div",hn,[e.createElementVNode("span",bn,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:a[0]||(a[0]=s=>r.$emit("goto",t.currentPage-1))},e.toDisplayString(t.messages.prevPage),9,yn),e.createElementVNode("span",wn,e.toDisplayString(o(t.messages.pageInfo,t.currentPage,t.pageCount)),1),e.createElementVNode("button",{class:"mrp-nav",type:"button",disabled:t.currentPage>=t.pageCount,onClick:a[1]||(a[1]=s=>r.$emit("goto",t.currentPage+1))},e.toDisplayString(t.messages.nextPage),9,xn)],64)):e.createCommentVNode("",!0),a[18]||(a[18]=e.createElementVNode("span",{class:"mrp-spacer"},null,-1)),t.showImport?(e.openBlock(),e.createElementBlock("button",{key:1,class:"mrp-nav mrp-import-excel",type:"button",disabled:t.busy,onClick:a[2]||(a[2]=s=>r.$emit("import-excel"))},e.toDisplayString(t.messages.importExcel??"导入 Excel 模板"),9,En)):e.createCommentVNode("",!0),t.search.visible?(e.openBlock(),e.createElementBlock("div",Pn,[e.createElementVNode("input",{ref_key:"searchInputRef",ref:l,class:"mrp-search-input",type:"text",placeholder:t.messages.searchPlaceholder,value:t.search.query,onInput:a[3]||(a[3]=s=>r.$emit("search-input",s.target.value))},null,40,kn),t.search.query?(e.openBlock(),e.createElementBlock("span",Cn,e.toDisplayString(t.search.searching?t.messages.searching??"搜索中…":o(t.messages.matchInfo,t.search.matchCount>0?t.search.matchIndex+1:0,t.search.matchCount)),1)):e.createCommentVNode("",!0),e.createElementVNode("button",{class:"mrp-nav",type:"button",disabled:t.search.matchCount===0,onClick:a[4]||(a[4]=s=>r.$emit("search-nav",-1))},e.toDisplayString(t.messages.prevMatch),9,$n),e.createElementVNode("button",{class:"mrp-nav",type:"button",disabled:t.search.matchCount===0,onClick:a[5]||(a[5]=s=>r.$emit("search-nav",1))},e.toDisplayString(t.messages.nextMatch),9,Bn)])):e.createCommentVNode("",!0),e.createElementVNode("button",{class:e.normalizeClass(["mrp-nav",{"mrp-active":t.search.visible}]),type:"button",title:"Ctrl+F",onClick:a[6]||(a[6]=s=>r.$emit("search-toggle"))}," 🔍 ",2),e.createElementVNode("button",{class:e.normalizeClass(["mrp-nav",{"mrp-active":t.thumbsVisible}]),type:"button",onClick:a[7]||(a[7]=s=>r.$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:a[8]||(a[8]=s=>r.$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:a[9]||(a[9]=s=>r.$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:a[10]||(a[10]=s=>r.$emit("zoom",150))}," 150% ",2),t.showExport?(e.openBlock(),e.createElementBlock("button",{key:3,class:"mrp-nav",type:"button",disabled:t.busy,onClick:a[11]||(a[11]=s=>r.$emit("export","html"))},e.toDisplayString(t.messages.exportHtml),9,Sn)):e.createCommentVNode("",!0),t.showExport?(e.openBlock(),e.createElementBlock("button",{key:4,class:"mrp-nav",type:"button",disabled:t.busy,onClick:a[12]||(a[12]=s=>r.$emit("export","pdf"))},e.toDisplayString(t.messages.exportPdf),9,Rn)):e.createCommentVNode("",!0),t.showExport?(e.openBlock(),e.createElementBlock("button",{key:5,class:"mrp-nav",type:"button",disabled:t.busy,onClick:a[13]||(a[13]=s=>r.$emit("export","xlsx"))},e.toDisplayString(t.messages.exportExcel),9,Mn)):e.createCommentVNode("",!0),t.showExport?(e.openBlock(),e.createElementBlock("button",{key:6,class:"mrp-nav",type:"button",disabled:t.busy,onClick:a[14]||(a[14]=s=>r.$emit("export","png"))},e.toDisplayString(t.messages.exportImage),9,Fn)):e.createCommentVNode("",!0),t.showExport?(e.openBlock(),e.createElementBlock("button",{key:7,class:"mrp-nav",type:"button",disabled:t.busy,onClick:a[15]||(a[15]=s=>r.$emit("export","word"))},e.toDisplayString(t.messages.exportWord),9,Dn)):e.createCommentVNode("",!0),t.showPrint?(e.openBlock(),e.createElementBlock("button",{key:8,class:"mrp-nav",type:"button",disabled:t.busy,onClick:a[16]||(a[16]=s=>r.$emit("print"))},e.toDisplayString(t.messages.print),9,Tn)):e.createCommentVNode("",!0),t.showPdfWindow?(e.openBlock(),e.createElementBlock("button",{key:9,class:"mrp-nav",type:"button",disabled:t.busy,onClick:a[17]||(a[17]=s=>r.$emit("pdf-window"))},e.toDisplayString(t.messages.pdfWindow),9,Nn)):e.createCommentVNode("",!0)]))}}),et=(t,n)=>{const l=t.__vccOpts||t;for(const[o,r]of n)l[o]=r;return l},Et=et(In,[["__scopeId","data-v-1c2568a7"]]),Vn={class:"mrp-params"},On={class:"mrp-params-title"},zn={class:"mrp-params-grid"},Ln={class:"mrp-param-label"},Wn={key:0,class:"mrp-param-star"},An=["value","onChange"],Hn={value:"",disabled:"",hidden:""},qn=["value"],jn=["type","placeholder","value","onInput"],Un={class:"mrp-params-actions"},Kn=e.defineComponent({__name:"ReportParamPanel",props:{defs:{},modelValue:{},messages:{},attempted:{type:Boolean}},emits:["update:modelValue","query","reset"],setup(t,{emit:n}){const l=t,o=n,r=e.ref({...l.modelValue});e.watch(()=>l.modelValue,v=>{r.value={...v}});const a=e.computed(()=>l.defs.map(v=>({def:v,label:v.label??v.field,value:r.value[v.field]??""})));function s(v,y){r.value={...r.value,[v]:y},o("update:modelValue",{...r.value})}function d(v){const y=l.defs.find(p=>p.field===v);return l.attempted&&y?.required===!0&&!(r.value[v]??"").trim()}return(v,y)=>(e.openBlock(),e.createElementBlock("div",Vn,[e.createElementVNode("span",On,e.toDisplayString(t.messages.paramsTitle),1),e.createElementVNode("div",zn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,p=>(e.openBlock(),e.createElementBlock("label",{key:p.def.field,class:e.normalizeClass(["mrp-param",{"mrp-param-missing":d(p.def.field)}])},[e.createElementVNode("span",Ln,[e.createTextVNode(e.toDisplayString(p.label),1),p.def.required?(e.openBlock(),e.createElementBlock("i",Wn,"*")):e.createCommentVNode("",!0)]),(p.def.type??"text")==="select"?(e.openBlock(),e.createElementBlock("select",{key:0,class:"mrp-param-input",value:p.value,onChange:m=>s(p.def.field,m.target.value),onKeydown:y[0]||(y[0]=e.withKeys(m=>v.$emit("query"),["enter"]))},[e.createElementVNode("option",Hn,e.toDisplayString(p.def.placeholder??`请选择${p.label}`),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.def.options??[],m=>(e.openBlock(),e.createElementBlock("option",{key:m.value,value:m.value},e.toDisplayString(m.label),9,qn))),128))],40,An)):(e.openBlock(),e.createElementBlock("input",{key:1,class:"mrp-param-input",type:p.def.type==="number"?"number":p.def.type==="date"?"date":"text",placeholder:p.def.placeholder??`请输入${p.label}`,value:p.value,onInput:m=>s(p.def.field,m.target.value),onKeydown:y[1]||(y[1]=e.withKeys(m=>v.$emit("query"),["enter"]))},null,40,jn))],2))),128))]),e.createElementVNode("div",Un,[e.createElementVNode("button",{class:"mrp-nav mrp-param-query",type:"button",onClick:y[2]||(y[2]=p=>v.$emit("query"))},e.toDisplayString(t.messages.query),1),e.createElementVNode("button",{class:"mrp-nav",type:"button",onClick:y[3]||(y[3]=p=>v.$emit("reset"))},e.toDisplayString(t.messages.reset),1)])]))}}),Pt=et(Kn,[["__scopeId","data-v-aafce92d"]]),kt={title:"报表预览",prevPage:"‹ 上一页",nextPage:"下一页 ›",pageInfo:"{cur} / {total}",fitWidth:"适宽",exportHtml:"导出 HTML",exportPdf:"导出 PDF",exportExcel:"导出 Excel",exportImage:"导出图片",exportWord:"导出 Word",exporting:"正在生成 {format}…",print:"打印",pdfWindow:"PDF 窗口",loading:"报表渲染中…",empty:"暂无预览数据",errorPrefix:"",retry:"重试",pdfFontUnavailable:"PDF 字体尚未就绪,请联系管理员检查字体配置;预览及其它导出仍可使用。",searchPlaceholder:"搜索报表内容",matchInfo:"{cur}/{total}",prevMatch:"‹",nextMatch:"›",thumbnails:"缩略图",paramsTitle:"查询条件",query:"查 询",reset:"重 置",paramRequired:"请填写{label}",searching:"搜索中…",importExcel:"导入 Excel 模板",importing:"正在导入 Excel…",editCell:"编辑单元格",editingHint:"双击单元格编辑 · Enter 确认 · Esc 取消",saving:"正在保存修改…",editInvalidNumber:"请输入有效数字;清空表示无值",editInvalidBoolean:"请输入 true / false、是 / 否或 1 / 0",editConflict:"该单元格已变化,请重新打开编辑"},Ct={shellBg:"#525659",shellFg:"#e8e8e8",toolbarBg:"#323639",toolbarBorder:"#22252a",toolbarFg:"#e8e8e8",btnFg:"#cfcfcf",btnBorder:"#4a4d52",btnHoverBg:"#414549",btnHoverFg:"#ffffff",btnActiveBg:"#2d5fb8"};function $t(t={}){return{...t,defaults:t.defaults??{},presets:t.presets??{}}}function Gn(t){return t}const ie={showExport:!0,showPrint:!0,showPdfWindow:!0,showParams:!0,gapPx:18,pdfFontUrl:"/simhei.ttf",logger:console},Yn={warn:()=>{},info:()=>{}};function Se(t,n){return{...t,...n,theme:{...t?.theme,...n?.theme},messages:{...t?.messages,...n?.messages},preview:{...t?.preview,...n?.preview},xlsx:{...t?.xlsx,...n?.xlsx}}}function Bt(t,n){const l=n?t?.presets?.[n]:t?.defaultPreset?t?.presets?.[t.defaultPreset]:void 0,o=Se(t?.defaults,l);return{showExport:o.showExport??ie.showExport,showPrint:o.showPrint??ie.showPrint,showPdfWindow:o.showPdfWindow??ie.showPdfWindow,showParams:o.showParams??ie.showParams,gapPx:o.gapPx??ie.gapPx,pdfFontUrl:o.pdfFontUrl??ie.pdfFontUrl,theme:{...Ct,...o.theme},messages:{...kt,...o.messages},logger:o.logger??ie.logger,preview:{overscanPages:pt(o.preview?.overscanPages,1,10,!0),searchDebounceMs:pt(o.preview?.searchDebounceMs,200,2e3)},xlsx:{...o.xlsx},editable:o.editable??!1,excelImport:o.excelImport??!1}}function pt(t,n,l,o=!1){if(t==null||!Number.isFinite(t))return n;const r=Math.max(0,Math.min(l,t));return o?Math.floor(r):r}function St(t){const n={};return t.shellBg!=null&&(n["--mrp-shell-bg"]=t.shellBg),t.shellFg!=null&&(n["--mrp-shell-fg"]=t.shellFg),t.toolbarBg!=null&&(n["--mrp-toolbar-bg"]=t.toolbarBg),t.toolbarBorder!=null&&(n["--mrp-toolbar-border"]=t.toolbarBorder),t.toolbarFg!=null&&(n["--mrp-toolbar-fg"]=t.toolbarFg),t.btnFg!=null&&(n["--mrp-btn-fg"]=t.btnFg),t.btnBorder!=null&&(n["--mrp-btn-border"]=t.btnBorder),t.btnHoverBg!=null&&(n["--mrp-btn-hover-bg"]=t.btnHoverBg),t.btnHoverFg!=null&&(n["--mrp-btn-hover-fg"]=t.btnHoverFg),t.btnActiveBg!=null&&(n["--mrp-btn-active-bg"]=t.btnActiveBg),n}function Zn(t){const n=e.inject(de.MACH_REPORT_CONFIG_KEY,null),l=e.computed(()=>{const o=n?.value??null,r="defaults"in t||"presets"in t||"defaultPreset"in t?$t(t):{defaults:t,presets:{}};if(!o)return r;const a={...o.presets,...r.presets};for(const s of Object.keys(a))a[s]=Se(Se(o.presets[s],r.defaults),r.presets[s]);return{defaults:Se(o.defaults,r.defaults),presets:a,defaultPreset:r.defaultPreset??o.defaultPreset}});e.provide(de.MACH_REPORT_CONFIG_KEY,l)}function Rt(){return e.inject(de.MACH_REPORT_CONFIG_KEY,e.computed(()=>null))}const mt=new Map,ce=new Map,Jn=15e3;function Ze(t,n){return Object.assign(new Error(t),{cause:n})}function be(t,n){return`PDF 字体 ${JSON.stringify(t)}:${n}。请部署支持报表文字的字体文件,并将 pdfFontUrl 配置为可访问的字体 URL;西文报表可设为空串`}function Fe(t){if(t?.reason instanceof Error&&t.reason.name==="AbortError")return t.reason;const n=Ze("PDF 字体检查已取消",t?.reason);return n.name="AbortError",n}async function Xn(t,n){let l=!1;const o=setTimeout(()=>{l=!0,n.abort()},Jn);try{const r=await fetch(t,{method:"HEAD",signal:n.signal});if(n.signal.aborted)throw Fe(n.signal);if(r.status===405||r.status===501||r.type==="opaque")return{status:"unverified",fontUrl:t,message:`PDF 字体 ${JSON.stringify(t)} 无法通过 HEAD 检查验证;仍可尝试导出,届时会加载并校验字体`};if(!r.ok){const s=new Error(`字体请求返回 HTTP ${r.status}`);return{status:"error",fontUrl:t,message:be(t,s.message),cause:s}}const a=r.headers.get("content-type")??"";if(/text\/html|application\/xhtml\+xml/i.test(a)){const s=new Error("字体 URL 返回 HTML 页面(可能是 SPA 路由回退),不是字体文件");return{status:"error",fontUrl:t,message:be(t,s.message),cause:s}}if(/^text\//i.test(a)||/(?:\/|\+)json(?:\s*;|$)/i.test(a)){const s=new Error(`字体 URL 返回 ${a} 文本响应,不是字体文件`);return{status:"error",fontUrl:t,message:be(t,s.message),cause:s}}return{status:"available",fontUrl:t,message:"PDF 字体资源可达;文字覆盖范围将在实际导出时校验"}}catch(r){if(n.signal.aborted&&!l)throw Fe(n.signal);return{status:"error",fontUrl:t,message:be(t,l?"字体检查超时,请检查网络或字体服务":"字体检查失败,请检查网络、字体服务或跨域访问配置"),cause:r}}finally{clearTimeout(o)}}function Qn(t,n){if(n?.aborted)return Promise.reject(Fe(n));if(!t)return Promise.resolve({status:"disabled",fontUrl:t,message:"已停用自定义 PDF 字体;内置字体用于西文,其他文字会在导出时校验"});const l=mt.get(t);if(l)return Promise.resolve(l);let o=ce.get(t);if(!o){const a=new AbortController;o={controller:a,promise:Xn(t,a),subscribers:0};const s=o;ce.set(t,s),s.promise=s.promise.then(d=>(!a.signal.aborted&&d.status==="available"&&mt.set(t,d),d)).finally(()=>{ce.get(t)===s&&ce.delete(t)})}const r=o;return r.subscribers++,new Promise((a,s)=>{let d=!1;const v=()=>d?!1:(d=!0,r.subscribers--,n?.removeEventListener("abort",y),!0),y=()=>{v()&&(r.subscribers===0&&(ce.get(t)===r&&ce.delete(t),r.controller.abort()),s(Fe(n)))};n?.addEventListener("abort",y,{once:!0}),r.promise.then(p=>{v()&&a(p)},p=>{v()&&s(p)}),n?.aborted&&y()})}function Mt(t={fontUrl:"/simhei.ttf"}){let n=null;const l=async(o,r)=>{n||(n=await import("@agile-team/mach-report/pdf"));let a=null;if(t.fontUrl)try{if(a=await n.loadFontWithCache(t.fontUrl,{strict:!0}),!a?.byteLength)throw new Error("字体文件为空或加载失败")}catch(m){const b=m instanceof Error?m.message:String(m);throw Ze(be(t.fontUrl,b),m)}let s;try{s=await n.renderPlanToPdf(o,a?{customFontBytes:a}:{})}catch(m){if(!a)throw m;const b=m instanceof Error?m.message:String(m);throw Ze(`PDF 生成失败:${b}。当前字体 URL 为 ${JSON.stringify(t.fontUrl)};请确认该文件是有效字体,或重新配置 pdfFontUrl`,m)}const{bytes:d,unsupportedTextCount:v,pageErrors:y,fidelityWarnings:p}=s;if(v>0)throw new Error(`PDF 中有 ${v} 行文字无法编码;请部署支持所用文字的字体并配置 pdfFontUrl`);if(y.length>0)throw new Error(`PDF 有 ${y.length} 页渲染失败:${y[0]}`);return p.length>0&&r?.(`PDF 有 ${p.length} 处版式降级:${p.slice(0,2).join(";")}`),d};return l.checkFont=o=>Qn(t.fontUrl,o),l}class re extends Error{constructor(n,l,o){super(l),this.name="MachReportError",this.code=n,this.cause=o}}function Ft(t){return t instanceof re?{code:t.code,cause:t.cause}:{code:"render",cause:t}}function _n(t){const n=t.closest(".mrp-page-holder"),l=t.closest("[data-mr-component-index]");if(!n||!l)return null;const o={pageIndex:Number(n.dataset.page)-1,componentIndex:Number(l.dataset.mrComponentIndex),rowIndex:Number(t.dataset.mrRowIndex),columnIndex:Number(t.dataset.mrColumnIndex)};return Object.values(o).every(r=>Number.isInteger(r)&&r>=0)?o:null}function er(t,n,l){const o=t.ownerDocument.createElement("textarea");return o.className="mrp-cell-editor",o.setAttribute("aria-label",n),o.value=l==null?"":String(l),o.style.cssText="position:absolute;inset:0;width:100%;height:100%;min-height:20px;box-sizing:border-box;z-index:10;resize:none;margin:0;padding:2px 4px;border:2px solid #2563eb;outline:none;background:#fff;color:#111;font:inherit;line-height:1.25;white-space:pre-wrap;",t.appendChild(o),o}function tr(t){const n=e.shallowRef(null),l=e.ref(!1),o=e.shallowRef([]);let r=null;function a(){const u=n.value;n.value=null,l.value=!1,r=null,u?.controller.abort(),u?.input.remove()}function s(){a(),o.value=[]}function d(u){return n.value===u&&!u.controller.signal.aborted&&t.plan.value===u.plan}function v(u){const E=t.options.value,k=j.getReportCellContext(u.plan,u.address);if(!(typeof E=="object"?E===u.options:E===!0)||!k?.editable||u.options.canEdit?.(k)===!1)throw new j.ReportCellEditError("readonly")}async function y(u){try{v(u);const E=j.createReportCellEdit(u.plan,u.address,u.input.value);if(Object.is(E.value,E.previousValue))return a(),!0;const k={signal:u.controller.signal},w=await u.options.validate?.(structuredClone(E),k);if(!d(u))return!1;if(w)throw new Error(w);if(v(u),await u.options.save?.(structuredClone(E),k),!d(u))return!1;v(u);const B=j.applyReportCellEdit(u.plan,E);return a(),o.value=[...o.value,E],t.plan.value=B,t.onChange(structuredClone(E)),!0}catch(E){return d(u)&&(t.onError(t.errorMessage?.(E)??(E instanceof Error?E.message:"单元格保存失败"),E),u.input.disabled=!1,u.input.setAttribute("aria-invalid","true"),u.input.focus()),!1}finally{n.value===u&&(l.value=!1)}}async function p(){if(r)return r;const u=n.value;if(!u)return!0;if(!d(u))return a(),!1;l.value=!0,u.input.disabled=!0;const E=y(u);r=E;const k=await E;return r===E&&(r=null),k}function m(u){u.stopPropagation(),!u.isComposing&&(u.key==="Escape"&&(u.preventDefault(),a()),u.key==="Enter"&&!u.shiftKey&&(u.preventDefault(),p()))}async function b(u){if(!t.options.value||t.blocked())return;const E=u.target;if(!(E instanceof Element)||E.closest(".mrp-cell-editor"))return;const k=E.closest("td[data-mr-row-index]");if(!k||!await p()||!k.isConnected)return;const w=t.plan.value,B=_n(k);if(!w||!B||!t.options.value||t.blocked())return;const P=typeof t.options.value=="object"?t.options.value:{};try{const R=j.getReportCellContext(w,B);if(!R?.editable||P.canEdit?.(R)===!1)return;const C=er(k,t.label(),R.value);n.value={plan:w,address:B,input:C,controller:new AbortController,options:P},C.addEventListener("keydown",m),C.addEventListener("blur",()=>{l.value||p()}),C.focus(),C.select()}catch(R){t.onError(R instanceof Error?R.message:"无法编辑单元格",R)}}return e.watch(t.options,(u,E)=>{(!u||u!==E)&&a()},{flush:"sync"}),e.watch(t.plan,()=>{n.value&&t.plan.value!==n.value.plan&&a()},{flush:"sync"}),e.onScopeDispose(s),{active:n,saving:l,changes:o,cancel:a,reset:s,commit:p,onDoubleClick:b,getChanges:()=>structuredClone(o.value)}}const nr={key:2,class:"mrp-edit-hint",role:"status"},rr={key:4,class:"mrp-export-notice mrp-export-warning",role:"status"},or={class:"mrp-main"},ar={key:0,class:"mrp-state"},lr={key:1,class:"mrp-state mrp-error"},sr={key:2,class:"mrp-state"},ir=["data-page"],ur=["onClick"],cr=["data-thumb"],dr={class:"mrp-thumb-no"},fr={class:"mrp-overlay"},pr={key:5,class:"mrp-debug","aria-hidden":"true"},Ce=96/25.4,Ge="mach-report:ui",Ye="mach-report:ui:wide",mr=e.defineComponent({__name:"ReportPreview",props:{reportId:{type:[String,Array],default:null},params:{type:Object,default:()=>({})},height:{type:String,default:"100vh"},autoLoad:{type:Boolean,default:!0},showExport:{type:Boolean,default:void 0},showPrint:{type:Boolean,default:void 0},showPdfWindow:{type:Boolean,default:void 0},gapPx:{type:Number,default:void 0},messages:{type:Object,default:void 0},preset:{type:String,default:void 0},debug:{type:Boolean,default:!1},paramDefs:{type:Array,default:void 0},showParams:{type:Boolean,default:void 0},editable:{type:[Boolean,Object],default:void 0},excelImport:{type:[Boolean,Object],default:void 0},fetcher:{type:Function,default:null}},emits:["loaded","error","warning","cell-edit","template-import"],setup(t,{expose:n,emit:l}){e.useCssVars(i=>({v587d5a34:N.value+"px"}));const o=t,r=l,a=e.shallowRef(null),s=e.ref(!1),d=e.ref(""),v=e.shallowRef(null),y=e.ref(null),p=e.ref(!1),m=e.shallowRef(Object.freeze({status:"unchecked",fontUrl:""})),b=e.ref(null),u=e.ref(1),E=e.ref(null),k=e.ref(null),w=e.ref(null),B=e.ref(!1),P=e.ref(!1),R=e.ref(null),C=gn(),S=e.computed(()=>!!a.value?.pages.length&&a.value.pages.every(i=>i.layout==="wide")),N=e.computed(()=>Math.max(0,G.value));let L=Ge;const U=e.inject(de.MACH_REPORT_FETCHER_KEY,null),K=e.inject(de.MACH_REPORT_PDF_EXPORTER_KEY,null),W=e.computed(()=>Je(o.reportId)),ee=e.computed(()=>o.fetcher??U),O=e.computed(()=>a.value?.pages.length??0),ae=e.computed(()=>Object.freeze({loading:s.value,hasPlan:O.value>0,pageCount:O.value,currentPage:u.value,exporting:y.value,printing:p.value,canExport:!s.value&&!P.value&&!V.saving.value&&O.value>0&&y.value===null,canPrint:!s.value&&!P.value&&!V.saving.value&&O.value>0&&!p.value,error:v.value,pdfFont:m.value,editing:V.active.value!==null,saving:V.saving.value,importing:P.value,dirty:V.changes.value.length>0}));function H(i,g,h){v.value=Object.freeze({message:i,code:g,cause:h}),r("error",i,{code:g,cause:h})}const c=Rt(),f=e.computed(()=>Bt(c.value,o.preset)),x=e.computed(()=>({...f.value.messages,...o.messages})),$=e.computed(()=>o.showExport??f.value.showExport),M=e.computed(()=>o.showPrint??f.value.showPrint),z=e.computed(()=>o.showPdfWindow??f.value.showPdfWindow),G=e.computed(()=>o.gapPx??(S.value?0:f.value.gapPx)),Q=e.computed(()=>o.showParams??f.value.showParams),tt=e.computed(()=>o.editable??f.value.editable),ye=e.computed(()=>o.excelImport??f.value.excelImport);function Tt(i){return i instanceof j.ReportCellEditError?{number:x.value.editInvalidNumber,boolean:x.value.editInvalidBoolean,conflict:x.value.editConflict}[i.code]??i.message:i instanceof Error?i.message:"单元格保存失败"}const V=tr({plan:a,options:tt,blocked:()=>s.value||P.value||y.value!==null||p.value,label:()=>x.value.editCell??"编辑单元格",errorMessage:Tt,onChange:i=>{v.value=null,b.value=null,r("cell-edit",i)},onError:(i,g)=>{b.value={kind:"error",message:i},H(i,"edit",g)}});let nt=null,De=null;function rt(){if(K)return K;const i=f.value.pdfFontUrl;return(!De||nt!==i)&&(nt=i,De=Mt({fontUrl:i})),De}let we=0,fe=null,xe=null,te=!1;function Te(){we++,fe?.abort(),fe=null}async function Ee(){if(te)throw new re("config","报表预览已卸载");Te();const i=we,g=new AbortController;fe=g;const h=f.value.pdfFontUrl;m.value=Object.freeze({status:"checking",fontUrl:h});try{const T=rt(),D=T.checkFont?await T.checkFont(g.signal):{status:"unverified",fontUrl:"",message:"自定义 PDF 导出器未提供字体预检查;字体由宿主确认"};return!te&&i===we&&!g.signal.aborted&&(m.value=Object.freeze({...D})),D}catch(T){if(g.signal.aborted)throw T;const D={status:"error",fontUrl:h,message:T instanceof Error?T.message:"PDF 字体检查失败",cause:T};return!te&&i===we&&(m.value=Object.freeze(D)),D}finally{fe===g&&(fe=null)}}function Nt(){Ee().catch(()=>{})}e.watch([a,()=>f.value.pdfFontUrl,$,z],()=>{const i=m.value.fontUrl===f.value.pdfFontUrl;i&&m.value.status==="available"||(Te(),(!i||m.value.status==="checking")&&(m.value=Object.freeze({status:"unchecked",fontUrl:f.value.pdfFontUrl})),!te&&O.value>0&&($.value||z.value)&&Ee().catch(()=>{}))},{immediate:!0});const oe=e.computed(()=>o.paramDefs??ee.value?.getParamDefs?.(W.value)??[]),le=e.ref({}),Ne=e.ref(!1);function pe(i){const g={};for(const h of i)g[h.field]=o.params[h.field]??h.defaultValue??"";le.value=g,Ne.value=!1}pe(oe.value),e.watch(oe,i=>pe(i)),e.watch(W,()=>pe(oe.value)),e.watch(()=>JSON.stringify(o.params),()=>pe(oe.value));const It=e.computed(()=>{const i={...o.params};for(const[g,h]of Object.entries(le.value))h===""?delete i[g]:i[g]=h;return i});function Vt(){return oe.value.filter(i=>i.required===!0&&!(le.value[i.field]??"").trim())}function Ot(){Ne.value=!0;const i=Vt();if(i.length>0){const g=i[0].label??i[0].field,h=x.value.paramRequired.replace("{label}",g);d.value=h,H(h,"param");return}se()}function zt(){pe(oe.value)}const Lt=e.computed(()=>({height:o.height,...St(f.value.theme)})),{zoom:Y,zoomMode:me,applyFitZoom:ot,setZoom:ve}=bt(()=>({viewport:k.value,pageWidthPx:Ie.contentSize.value.w||210*Ce})),Ie=ht(a,Y,{pxPerMm:Ce,gapPx:G,overscan:e.computed(()=>f.value.preview.overscanPages)}),{contentSize:Ve,windowRange:ge,visiblePages:at,makeScrollHandler:Wt,refreshViewport:Oe}=Ie,At=Wt(u,O);function ze(i){ve(i*100)}function Pe(){P.value=!1,V.reset(),lt(),a.value=null,u.value=1,I.reset()}let A=0,J=null;async function se(){if(te)return;const i=++A;P.value=!1,J?.abort(),J=null;const g=ee.value;if(s.value=!1,v.value=null,W.value.length===0){d.value="缺少报表 ID",Pe(),H(d.value,"param");return}if(!g){d.value="未提供渲染数据源 fetcher",Pe(),H(d.value,"config");return}s.value=!0,d.value="",b.value=null,Pe();const h=C.start(),T=new AbortController;J=T;const D=new Set;function X(F){i!==A||T.signal.aborted||D.has(F)||(D.add(F),f.value.logger.warn("[mach-report] 报表告警:",F),r("warning",F))}try{const F=await g({reportIds:W.value,params:{...It.value},signal:T.signal,onWarning:X});if(i!==A)return;const q=j.validateRenderPlan(F);if(!q.ok){const ke=q.errors.slice(0,3).map(dt=>`${dt.path}: ${dt.message}`).join("; ");throw new re("validate",`渲染计划校验失败(${q.errors.length} 处): ${ke}`)}if(q.warnings.forEach(ke=>X(`${ke.path}: ${ke.message}`)),i!==A||T.signal.aborted)return;a.value=F,u.value=1,C.end(h),k.value&&(k.value.scrollTop=0,k.value.scrollLeft=0);const Z=S.value?Ye:Ge;Z!==L&&(L=Z,Ue()),me.value==="fit"&&ot(),r("loaded",F.pages.length)}catch(F){if(i!==A)return;const q=F instanceof re?F:F instanceof j.ReportSourceError?new re(F.code,F.message,F.cause):new re("fetch",F instanceof Error?F.message:"预览加载失败",F);d.value=q.message;const Z=Ft(q);H(q.message,Z.code,Z.cause)}finally{i===A&&(s.value=!1),J===T&&(J=null)}}function ne(i){if(te||O.value<=0)return;const g=Math.max(1,Math.min(O.value,i));u.value=g;const h=k.value;h&&(h.scrollTop=Ie.pageOffsetPx(g-1)*Y.value,Oe(h))}const he=wt(a,{getPdfExporter:rt,getXlsxOptions:()=>f.value.xlsx,onError:(i,g)=>{b.value={kind:"error",message:i},H(i,g??"print")},onWarning:i=>{b.value={kind:"warning",message:i},r("warning",i)},onBusy:i=>{y.value=i,i?b.value={kind:"progress",message:x.value.exporting.replace("{format}",i)}:b.value?.kind==="progress"&&(b.value=null)},onPrinting:i=>{p.value=i}}),{releasePrintFrame:lt,dispose:Ht}=he;async function Le(){s.value||P.value||V.active.value&&!await V.commit()||(v.value=null,await he.print())}async function We(i){s.value||P.value||V.active.value&&!await V.commit()||(v.value=null,await he.exportAs(i))}function Ae(){if(s.value||P.value||V.active.value){b.value={kind:"warning",message:x.value.editingHint??"请先确认单元格修改"};return}v.value=null,he.openPdfWindow()}async function st(i,g={}){te||(le.value={...le.value,...i},g.reload!==!1&&await se())}const qt={reload:se,print:Le,exportAs:We,openPdfWindow:Ae,gotoPage:ne,setParams:st,checkPdfFont:Ee,importExcel:He,getPlan:it,getChanges:V.getChanges,get state(){return ae.value}};e.provide(de.MACH_REPORT_CONTROLLER_KEY,qt);function it(){return a.value?structuredClone(a.value):null}async function He(i,g){if(te)throw new re("config","报表预览已卸载");const h=++A;J?.abort(),J=null,s.value=!1,V.cancel(),he.invalidatePending(),P.value=!0,v.value=null,b.value={kind:"progress",message:x.value.importing??"正在导入 Excel…"};try{const{importExcelTemplate:T}=await import("@agile-team/mach-report/xlsx");if(h!==A)return null;const D=typeof ye.value=="object"?ye.value:{},X=await T(i,{...D,...g,limits:{...D.limits,...g?.limits}});if(h!==A)return null;const F=j.paginateTemplate(structuredClone(X.template),{}).plan,q=j.validateRenderPlan(F);if(!q.ok)throw new Error(q.errors.map(Z=>Z.message).slice(0,3).join("; "));for(const Z of X.warnings){if(h!==A)return null;r("warning",Z)}return h!==A?null:(V.reset(),lt(),I.reset(),a.value=F,u.value=1,d.value="",b.value=X.warnings.length?{kind:"warning",message:X.warnings.join(";")}:null,k.value&&(k.value.scrollTop=0,k.value.scrollLeft=0),L=S.value?Ye:Ge,Ue(),r("template-import",X),h===A&&r("loaded",F.pages.length),X)}catch(T){if(h!==A)return null;const D=new re("import",T instanceof Error?T.message:"Excel 模板导入失败",T);throw b.value={kind:"error",message:D.message},H(D.message,"import",T),D}finally{h===A&&(P.value=!1)}}function jt(i){const g=i.target,h=g.files?.[0];g.value="",h&&He(h).catch(()=>{})}const I=pn({plan:a,gotoPage:ne,debounceMs:e.computed(()=>f.value.preview.searchDebounceMs),highlight:an,clearHighlights:on});function Ut(i){i.ctrlKey&&(i.preventDefault(),ze(Y.value*(i.deltaY<0?1.1:1/1.1)))}function Kt(i){if(!(i.target instanceof Element&&i.target.closest("input,textarea,select,[contenteditable='true']"))){if((i.ctrlKey||i.metaKey)&&i.key.toLowerCase()==="f"){i.preventDefault(),I.visible.value||I.toggle();return}switch(i.key){case"PageDown":i.preventDefault(),ne(u.value+1);break;case"PageUp":i.preventDefault(),ne(u.value-1);break;case"Home":i.preventDefault(),ne(1);break;case"End":i.preventDefault(),ne(O.value);break;case"+":case"=":i.preventDefault(),ze(Y.value*1.1);break;case"-":i.preventDefault(),ze(Y.value/1.1);break}}}function Gt(){try{localStorage.setItem(L,JSON.stringify({zoomMode:me.value==="fit"?"fit":Math.round(Y.value*100)}))}catch{}}e.watch([me,Y],Gt);let qe="";const ut=new WeakMap;function ct(i=!1){const g=I.activeMatch.value;if(!S.value||!g)return;const h=`${I.query.value}:${I.matchIndex.value}:${g.pageIndex}`;if(!i&&h===qe)return;const D=E.value?.querySelector(`[data-page="${g.pageIndex+1}"]`)?.querySelectorAll("mark.mrp-hit")[g.occurrence];D&&(D.scrollIntoView?.({block:"nearest",inline:"nearest"}),qe=h)}e.watchEffect(()=>{const i=a.value;if(!i)return;const g=I.activeMatch.value;I.matchIndex.value,g||(qe=""),at.value;const h=E.value;if(!h)return;h.querySelectorAll(".mrp-page-holder").forEach(D=>{const X=Number(D.dataset.page??0)-1,F=i.pages[X];if(!F||D.childElementCount>0&&ut.get(D)===F){if(D.firstElementChild){const Z=D.firstElementChild;I.clear(Z),I.apply(Z)}return}D.style.width=`${F.pageWidthMm*Ce}px`;const q=j.renderPage(F,96,{},document);I.apply(q),D.replaceChildren(q),ut.set(D,F)}),ct()},{flush:"post"}),e.watch(()=>I.query.value,i=>{i||E.value?.querySelectorAll(".mrp-page-holder").forEach(g=>{I.clear(g)})});const _=vn(a,{thumbsRoot:w,visible:B,renderThumbCanvas:i=>{try{const g=a.value.pages[i],h=Math.min(.2,116/Math.max(1,g.pageWidthMm*Ce)),{canvases:T}=j.renderPlanToCanvas(a.value,{start:i,end:i,dpr:h});return T[0]??null}catch{return null}}});e.watchEffect(()=>{_.schedule()},{flush:"post"});const Yt=e.computed(()=>o.debug),{debugStats:ue}=mn(Yt,{plan:a,pageCount:O,windowRange:ge,zoom:Y,loadMs:C.loadMs});function je(){Oe(k.value),_.schedule(),me.value==="fit"&&ot(),ct(!0)}function Ue(){ve(L===Ye?100:"fit");try{const i=JSON.parse(localStorage.getItem(L)??"{}");i.zoomMode==="fit"?ve("fit"):typeof i.zoomMode=="number"&&ve(i.zoomMode)}catch{}}return e.onMounted(()=>{window.addEventListener("resize",je),typeof ResizeObserver<"u"&&k.value&&(xe=new ResizeObserver(je),xe.observe(k.value)),Oe(k.value),Ue(),o.autoLoad&&se()}),e.onUnmounted(()=>{te=!0,V.reset(),P.value=!1,Te(),A++,J?.abort(),J=null,window.removeEventListener("resize",je),xe?.disconnect(),xe=null,_.destroy(),I.reset(),Ht()}),e.watch(()=>[JSON.stringify(W.value),JSON.stringify(o.params),ee.value],()=>{if(o.autoLoad){se();return}A++,J?.abort(),J=null,s.value=!1,d.value="",v.value=null,b.value=null,Pe()}),n({reload:se,print:Le,exportAs:We,openPdfWindow:Ae,gotoPage:ne,setParams:st,checkPdfFont:Ee,importExcel:He,getPlan:it,getChanges:V.getChanges,state:ae}),(i,g)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["mach-report-preview",{"mrp-wide-report":S.value}]),style:e.normalizeStyle(Lt.value)},[Q.value&&oe.value.length>0?(e.openBlock(),e.createBlock(Pt,{key:0,defs:oe.value,modelValue:le.value,"onUpdate:modelValue":g[0]||(g[0]=h=>le.value=h),messages:x.value,attempted:Ne.value,onQuery:Ot,onReset:zt},null,8,["defs","modelValue","messages","attempted"])):e.createCommentVNode("",!0),e.createVNode(Et,{"page-count":O.value,"current-page":u.value,"zoom-mode":e.unref(me),zoom:e.unref(Y),"show-export":$.value,"show-print":M.value,"show-pdf-window":z.value,messages:x.value,search:{visible:e.unref(I).visible.value,query:e.unref(I).query.value,matchIndex:e.unref(I).matchIndex.value,matchCount:e.unref(I).matchCount.value,searching:e.unref(I).searching.value},"thumbs-visible":B.value,"show-import":!!ye.value,busy:s.value||P.value||e.unref(V).saving.value,onGoto:ne,onZoom:e.unref(ve),onExport:g[1]||(g[1]=h=>We(h)),onPrint:Le,onPdfWindow:Ae,onSearchInput:e.unref(I).onInput,onSearchNav:e.unref(I).onNav,onSearchToggle:e.unref(I).toggle,onThumbsToggle:g[2]||(g[2]=h=>B.value=!B.value),onImportExcel:g[3]||(g[3]=h=>R.value?.click())},null,8,["page-count","current-page","zoom-mode","zoom","show-export","show-print","show-pdf-window","messages","search","thumbs-visible","show-import","busy","onZoom","onSearchInput","onSearchNav","onSearchToggle"]),ye.value?(e.openBlock(),e.createElementBlock("input",{key:1,ref_key:"importInputRef",ref:R,class:"mrp-import-input",type:"file",accept:".xlsx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",hidden:"",onChange:jt},null,544)):e.createCommentVNode("",!0),tt.value&&O.value>0?(e.openBlock(),e.createElementBlock("div",nr,e.toDisplayString(e.unref(V).saving.value?x.value.saving:x.value.editingHint),1)):e.createCommentVNode("",!0),b.value?(e.openBlock(),e.createElementBlock("div",{key:3,class:e.normalizeClass(["mrp-export-notice",`mrp-export-${b.value.kind}`]),role:"alert"},e.toDisplayString(b.value.message),3)):e.createCommentVNode("",!0),m.value.status==="error"&&($.value||z.value)?(e.openBlock(),e.createElementBlock("div",rr,[e.createTextVNode(e.toDisplayString(x.value.pdfFontUnavailable)+" ",1),e.createElementVNode("button",{type:"button",onClick:Nt},e.toDisplayString(x.value.retry),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",or,[e.createElementVNode("div",{ref_key:"viewportRef",ref:k,class:"mrp-body",tabindex:"0",onWheel:Ut,onKeydown:Kt,onDblclick:g[4]||(g[4]=(...h)=>e.unref(V).onDoubleClick&&e.unref(V).onDoubleClick(...h)),onScrollPassive:g[5]||(g[5]=h=>e.unref(At)(h.target))},[s.value?(e.openBlock(),e.createElementBlock("div",ar,e.toDisplayString(x.value.loading),1)):d.value?(e.openBlock(),e.createElementBlock("div",lr,[e.createTextVNode(e.toDisplayString(d.value)+" ",1),e.createElementVNode("button",{class:"mrp-retry",type:"button",onClick:se},e.toDisplayString(x.value.retry),1)])):!a.value||O.value===0?(e.openBlock(),e.createElementBlock("div",sr,e.toDisplayString(x.value.empty),1)):(e.openBlock(),e.createElementBlock("div",{key:3,class:"mrp-scale",style:e.normalizeStyle({width:`${e.unref(Ve).w*e.unref(Y)}px`,height:`${e.unref(Ve).h*e.unref(Y)}px`})},[e.createElementVNode("div",{ref_key:"containerRef",ref:E,class:"mrp-scale-inner",style:e.normalizeStyle({transform:`scale(${e.unref(Y)})`,transformOrigin:"top left",width:`${e.unref(Ve).w}px`})},[e.unref(ge).padTopPx>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mrp-spacer-top",style:e.normalizeStyle({height:`${e.unref(ge).padTopPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(at),h=>(e.openBlock(),e.createElementBlock("div",{key:h.index,class:"mrp-page-holder","data-page":h.index+1},null,8,ir))),128)),e.unref(ge).padBottomPx>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:"mrp-spacer-bottom",style:e.normalizeStyle({height:`${e.unref(ge).padBottomPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0)],4)],4))],544),B.value&&O.value>0?(e.openBlock(),e.createElementBlock("aside",{key:0,ref_key:"thumbsRef",ref:w,class:"mrp-thumbs",onScrollPassive:g[6]||(g[6]=(...h)=>e.unref(_).onScroll&&e.unref(_).onScroll(...h))},[e.unref(_).windowRange.value.padTopPx>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mrp-thumb-spacer",style:e.normalizeStyle({height:`${e.unref(_).windowRange.value.padTopPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(_).visibleThumbs.value,h=>(e.openBlock(),e.createElementBlock("div",{key:h.index,class:e.normalizeClass(["mrp-thumb",{"mrp-thumb-active":h.index+1===u.value}]),style:e.normalizeStyle({height:`${h.height+20}px`}),onClick:T=>ne(h.index+1)},[e.createElementVNode("div",{class:"mrp-thumb-box","data-thumb":h.index+1,style:e.normalizeStyle({height:`${h.height}px`})},null,12,cr),e.createElementVNode("span",dr,e.toDisplayString(h.index+1),1)],14,ur))),128)),e.unref(_).windowRange.value.padBottomPx>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:"mrp-thumb-spacer",style:e.normalizeStyle({height:`${e.unref(_).windowRange.value.padBottomPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0)],544)):e.createCommentVNode("",!0)]),e.createElementVNode("div",fr,[e.renderSlot(i.$slots,"default",{},void 0,!0)]),e.unref(ue)?(e.openBlock(),e.createElementBlock("div",pr,[g[7]||(g[7]=e.createElementVNode("div",null,"mach-report debug",-1)),e.createElementVNode("div",null,"pages: "+e.toDisplayString(e.unref(ue).pages)+" | window: ["+e.toDisplayString(e.unref(ue).window)+"]",1),e.createElementVNode("div",null,"zoom: "+e.toDisplayString(e.unref(ue).zoom)+" | load: "+e.toDisplayString(e.unref(ue).loadMs),1),e.createElementVNode("div",null,"plan: "+e.toDisplayString(e.unref(ue).planKB)+"KB",1)])):e.createCommentVNode("",!0)],6))}}),Dt=et(mr,[["__scopeId","data-v-8dab9187"]]),vr=Object.freeze(Object.defineProperty({__proto__:null,default:Dt},Symbol.toStringTag,{value:"Module"}));exports.DEFAULT_MESSAGES=kt;exports.DEFAULT_THEME=Ct;exports.MachReportError=re;exports.PlanLoadError=$e;exports.ReportParamPanel=Pt;exports.ReportPreview=Dt;exports.ReportPreview$1=vr;exports.ReportToolbar=Et;exports.SILENT_LOGGER=Yn;exports.buildPrintDocument=_e;exports.buildWordHtml=yt;exports.createDefaultPdfExporter=Mt;exports.createFetchRequest=nn;exports.defineMachReportConfig=$t;exports.defineMachReportPreset=Gn;exports.joinReportIds=tn;exports.normalizeReportIds=Je;exports.printPlans=rn;exports.provideMachReportConfig=Zn;exports.resolveConfig=Bt;exports.themeToCssVars=St;exports.toErrorDetail=Ft;exports.useMachReportConfig=Rt;exports.usePageWindow=ht;exports.usePrintExport=wt;exports.useZoom=bt;