@agile-team/mach-report 2.12.0 → 2.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -737,6 +737,10 @@ declare interface MachReportMessages extends Partial<ReportCalculationMessages>
737
737
  pageJumpInvalid?: string;
738
738
  pageJumpHint?: string;
739
739
  pagination?: string;
740
+ recordNavigation?: string;
741
+ recordInfo?: string;
742
+ prevRecord?: string;
743
+ nextRecord?: string;
740
744
  columnSearchHint?: string;
741
745
  columnSearchShortcut?: string;
742
746
  closeColumnDirectory?: string;
@@ -737,6 +737,10 @@ declare interface MachReportMessages extends Partial<ReportCalculationMessages>
737
737
  pageJumpInvalid?: string;
738
738
  pageJumpHint?: string;
739
739
  pagination?: string;
740
+ recordNavigation?: string;
741
+ recordInfo?: string;
742
+ prevRecord?: string;
743
+ nextRecord?: string;
740
744
  columnSearchHint?: string;
741
745
  columnSearchShortcut?: string;
742
746
  closeColumnDirectory?: string;
@@ -318,8 +318,8 @@ declare const __VLS_component_2: DefineComponent<__VLS_Props, {
318
318
  focusSearch: () => void;
319
319
  }, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
320
320
  export: (format: ReportExportFormat) => any;
321
- print: () => any;
322
321
  zoom: (mode: number | "fit") => any;
322
+ print: () => any;
323
323
  goto: (page: number) => any;
324
324
  "pdf-window": () => any;
325
325
  "search-input": (query: string) => any;
@@ -330,8 +330,8 @@ declare const __VLS_component_2: DefineComponent<__VLS_Props, {
330
330
  "settings-toggle": () => any;
331
331
  }, string, MachReportVuePublicProps, Readonly<__VLS_Props> & Readonly<{
332
332
  onExport?: ((format: ReportExportFormat) => any) | undefined;
333
- onPrint?: (() => any) | undefined;
334
333
  onZoom?: ((mode: number | "fit") => any) | undefined;
334
+ onPrint?: (() => any) | undefined;
335
335
  onGoto?: ((page: number) => any) | undefined;
336
336
  "onPdf-window"?: (() => any) | undefined;
337
337
  "onSearch-input"?: ((query: string) => any) | undefined;
@@ -1459,6 +1459,10 @@ export declare interface MachReportMessages extends Partial<ReportCalculationMes
1459
1459
  pageJumpInvalid?: string;
1460
1460
  pageJumpHint?: string;
1461
1461
  pagination?: string;
1462
+ recordNavigation?: string;
1463
+ recordInfo?: string;
1464
+ prevRecord?: string;
1465
+ nextRecord?: string;
1462
1466
  columnSearchHint?: string;
1463
1467
  columnSearchShortcut?: string;
1464
1468
  closeColumnDirectory?: string;
@@ -2916,6 +2920,7 @@ export declare function usePageWindow(plan: Ref<RenderPlan | null>, zoom: Ref<nu
2916
2920
  }[]>;
2917
2921
  makeScrollHandler: (currentPage: Ref<number>, pageCount: Ref<number>) => (vp: HTMLElement) => void;
2918
2922
  refreshViewport: (vp: HTMLElement | null) => void;
2923
+ scrollToPage: (vp: HTMLElement, index: number) => void;
2919
2924
  pageOffsetPx: (index: number) => number;
2920
2925
  destroy: () => void;
2921
2926
  };
@@ -318,8 +318,8 @@ declare const __VLS_component_2: DefineComponent<__VLS_Props, {
318
318
  focusSearch: () => void;
319
319
  }, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
320
320
  export: (format: ReportExportFormat) => any;
321
- print: () => any;
322
321
  zoom: (mode: number | "fit") => any;
322
+ print: () => any;
323
323
  goto: (page: number) => any;
324
324
  "pdf-window": () => any;
325
325
  "search-input": (query: string) => any;
@@ -330,8 +330,8 @@ declare const __VLS_component_2: DefineComponent<__VLS_Props, {
330
330
  "settings-toggle": () => any;
331
331
  }, string, MachReportVuePublicProps, Readonly<__VLS_Props> & Readonly<{
332
332
  onExport?: ((format: ReportExportFormat) => any) | undefined;
333
- onPrint?: (() => any) | undefined;
334
333
  onZoom?: ((mode: number | "fit") => any) | undefined;
334
+ onPrint?: (() => any) | undefined;
335
335
  onGoto?: ((page: number) => any) | undefined;
336
336
  "onPdf-window"?: (() => any) | undefined;
337
337
  "onSearch-input"?: ((query: string) => any) | undefined;
@@ -1459,6 +1459,10 @@ export declare interface MachReportMessages extends Partial<ReportCalculationMes
1459
1459
  pageJumpInvalid?: string;
1460
1460
  pageJumpHint?: string;
1461
1461
  pagination?: string;
1462
+ recordNavigation?: string;
1463
+ recordInfo?: string;
1464
+ prevRecord?: string;
1465
+ nextRecord?: string;
1462
1466
  columnSearchHint?: string;
1463
1467
  columnSearchShortcut?: string;
1464
1468
  closeColumnDirectory?: string;
@@ -2916,6 +2920,7 @@ export declare function usePageWindow(plan: Ref<RenderPlan | null>, zoom: Ref<nu
2916
2920
  }[]>;
2917
2921
  makeScrollHandler: (currentPage: Ref<number>, pageCount: Ref<number>) => (vp: HTMLElement) => void;
2918
2922
  refreshViewport: (vp: HTMLElement | null) => void;
2923
+ scrollToPage: (vp: HTMLElement, index: number) => void;
2919
2924
  pageOffsetPx: (index: number) => number;
2920
2925
  destroy: () => void;
2921
2926
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("./plugin-BDTU4D94.cjs");function i(){return Promise.resolve().then(()=>require("./ReportPreview-DWXROHBP.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-DzS6pxTA.cjs");function i(){return Promise.resolve().then(()=>require("./ReportPreview-BN6fk7Wz.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 r } from "./plugin-Cd5G2QQn.js";
2
- import { M as l } from "./plugin-Cd5G2QQn.js";
1
+ import { m as r } from "./plugin-D4wizDXB.js";
2
+ import { M as l } from "./plugin-D4wizDXB.js";
3
3
  function a() {
4
- return import("./ReportPreview-DiNXhQI0.js").then((t) => t.o);
4
+ return import("./ReportPreview-D2Jkyh1U.js").then((t) => t.o);
5
5
  }
6
6
  const n = {
7
7
  install(t, o = {}) {
package/dist/vue.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const E=require("@agile-team/mach-report"),i=require("./ReportPreview-DWXROHBP.cjs"),a=require("./config-BRoLo2oj.cjs"),f=require("./injection-keys-Db_DyLkm.cjs"),_=require("./plugin-BDTU4D94.cjs"),h=require("vue");function S(r){const e=E.createReportSource(r),n=async t=>{if(t.reportIds.length===0)throw new i.PlanLoadError("缺少报表 ID");for(const o of t.reportIds)if(!Object.prototype.hasOwnProperty.call(r,o)||!r[o])throw new i.PlanLoadError(`本地模板 ${o} 不存在`);return e(t)};return n.getParamDefs=e.getParamDefs,n}const v=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 A(){const r=h.shallowRef(null),e=()=>r.value?.state??v,n=Object.freeze({get loading(){return e().loading},get hasPlan(){return e().hasPlan},get pageCount(){return e().pageCount},get currentPage(){return e().currentPage},get exporting(){return e().exporting},get printing(){return e().printing},get canExport(){return e().canExport},get canPrint(){return e().canPrint},get error(){return e().error},get pdfFont(){return e().pdfFont},get editing(){return e().editing??!1},get saving(){return e().saving??!1},get importing(){return e().importing??!1},get dirty(){return e().dirty??!1},get pendingLocalChanges(){return e().pendingLocalChanges??!1},get task(){return e().task??null},get diagnostics(){return e().diagnostics??[]},get reportIds(){return e().reportIds??[]},get params(){return e().params??{}},get canUndo(){return e().canUndo??!1},get canRedo(){return e().canRedo??!1},get changeCount(){return e().changeCount??0},get selection(){return e().selection??null}});function t(){if(!r.value)throw new a.MachReportError("config","报表预览尚未挂载,请在 ready 后调用控制器");return r.value}return{ref(o){const s=o;r.value=s&&typeof s.reload=="function"&&typeof s.print=="function"&&typeof s.exportAs=="function"&&typeof s.openPdfWindow=="function"&&typeof s.gotoPage=="function"&&typeof s.setParams=="function"?s:null},ready:h.computed(()=>r.value!==null),state:n,async checkPdfFont(){const o=t();return o.checkPdfFont?o.checkPdfFont():{status:"unverified",fontUrl:"",message:"旧自定义控制器未提供字体检查,请由宿主确认字体配置"}},cancelTask(){t().cancelTask?.()},async confirmDiscard(o){return await t().confirmDiscard?.(o)??!0},getOutputDiagnostics(o){return t().getOutputDiagnostics?.(o)??[]},async reload(){await t().reload()},async print(){await t().print()},async exportAs(o){await t().exportAs(o)},openPdfWindow(){t().openPdfWindow()},gotoPage(o){t().gotoPage(o)},async setParams(o,s){await t().setParams(o,s)},async importExcel(o,s){const g=t();if(!g.importExcel)throw new a.MachReportError("config","旧自定义控制器未提供 Excel 导入");return g.importExcel(o,s)},getPlan(){return t().getPlan?.()??null},getChanges(){return t().getChanges?.()??[]},getDifferences:()=>t().getDifferences?.()??[],undo:async()=>await t().undo?.()??!1,redo:async()=>await t().redo?.()??!1,restoreChanges:async()=>await t().restoreChanges?.()??!1,getSelection:()=>t().getSelection?.()??null,focusCell:async(o,s)=>await t().focusCell?.(o,s)??!1,focusField:async o=>await t().focusField?.(o)??!1,copySelection:()=>t().copySelection?.()??"",pasteSelection:async o=>await t().pasteSelection?.(o)??!1}}function I(){return h.inject(f.MACH_REPORT_CONTROLLER_KEY,null)}function T(r){return!!r&&typeof r=="object"&&!Array.isArray(r)}function L(r){return Array.isArray(r)&&r.every(e=>T(e)&&typeof e.code=="string"&&typeof e.message=="string"&&["info","warning","error"].includes(e.severity)&&(e.path===void 0||typeof e.path=="string"))}function D(r,e){return Array.isArray(r)&&r.every(n=>T(n)&&Number.isSafeInteger(n.editIndex)&&n.editIndex>=0&&n.editIndex<e&&typeof n.code=="string"&&typeof n.message=="string")}function x(r,e){let n;if(!T(r)||typeof r.revision!="string"||!r.revision.trim()?n="非空 revision(请先在适配器解包业务响应)":r.sourceToken!==void 0&&typeof r.sourceToken!="string"?n="字符串 sourceToken":r.diagnostics!==void 0&&!L(r.diagnostics)?n="结构化 diagnostics":r.conflicts!==void 0&&!D(r.conflicts,e)&&(n="有效 editIndex/code/message conflicts"),n)throw new a.MachReportError("edit",`ReportProvider.save 必须返回${n};服务器可能已提交,请重新查询确认后再编辑`)}function w(r){return typeof r=="function"?r():r}function F(r,e){const n=new Set(r.flatMap(t=>t.source?.[e]===void 0?[]:[String(t.source[e])]));return n.size===1?[...n][0]:void 0}function O(r,e,n,t){return typeof r=="function"?r():F(e,n)??t??r}function b(r){return r.requestId??globalThis.crypto?.randomUUID?.()??`mr-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}function q(r,e){if(!r.save)throw new a.MachReportError("config","ReportProvider.save 未配置,无法启用业务保存");let n="",t,o,s=0;function g(c,u,p){c.conflicts?.length||u!==n||p!==s||(t=c.revision,o=c.sourceToken)}async function m(c,u){if(u.signal.aborted)throw u.signal.reason??new DOMException("Aborted","AbortError");const p=w(e.reportId),y={...w(e.params??{})},R=JSON.stringify([p,y]),C=++s;if(R!==n&&(n=R,t=void 0,o=void 0),e.requireSource!==!1&&c.edits.some(d=>!d.source))throw new E.ReportCellEditError("missing");const l=await r.save({reportId:p,params:y,signal:u.signal,requestId:c.requestId,action:u.action,edits:i.cloneReportSnapshot(c.edits),expectedRevision:O(e.expectedRevision,c.edits,"revision",t),sourceToken:O(e.sourceToken,c.edits,"sourceToken",o)});if(u.signal.aborted)throw u.signal.reason??new DOMException("Aborted","AbortError");x(l,c.edits.length),l.diagnostics?.forEach(d=>e.onDiagnostic?.(d));const P=l.diagnostics?.filter(d=>d.severity==="error");if(P?.length)throw new a.MachReportError("edit",P.map(d=>d.message).join(";"),{diagnostics:P});const M=l.conflicts?.map(d=>({source:c.edits[d.editIndex]?.source,address:c.edits[d.editIndex]?.address,message:d.message}));return g(l,R,C),{revision:l.revision,sourceToken:l.sourceToken,conflicts:M}}return{requireSource:e.requireSource??!0,canEdit:e.canEdit,validate:e.validate,saveBatch:m,save:(c,u)=>m({requestId:b(u),edits:[i.cloneReportSnapshot(c)]},u)}}exports.PlanLoadError=i.PlanLoadError;exports.REPORT_EXPORT_FORMATS=i.REPORT_EXPORT_FORMATS;exports.REPORT_PREVIEW_TOOLS=i.REPORT_PREVIEW_TOOLS;exports.ReportPagination=i.ReportPagination;exports.ReportPreview=i.ReportPreview;exports.ReportToolbar=i.ReportToolbar;exports.buildPrintDocument=i.buildPrintDocument;exports.buildWordHtml=i.buildWordHtml;exports.createDefaultPdfExporter=i.createDefaultPdfExporter;exports.createFetchRequest=i.createFetchRequest;exports.createReportStoragePreferences=i.createReportStoragePreferences;exports.joinReportIds=i.joinReportIds;exports.normalizeReportIds=i.normalizeReportIds;exports.printPlans=i.printPlans;exports.usePageWindow=i.usePageWindow;exports.usePrintExport=i.usePrintExport;exports.useZoom=i.useZoom;exports.DEFAULT_CALCULATION_MESSAGES=a.DEFAULT_CALCULATION_MESSAGES;exports.DEFAULT_MESSAGES=a.DEFAULT_MESSAGES;exports.DEFAULT_THEME=a.DEFAULT_THEME;exports.MachReportError=a.MachReportError;exports.ReportParamPanel=a.ReportParamPanel;exports.SILENT_LOGGER=a.SILENT_LOGGER;exports.defineMachReportConfig=a.defineMachReportConfig;exports.defineMachReportPreset=a.defineMachReportPreset;exports.normalizeReportLoadError=a.normalizeReportLoadError;exports.provideMachReportConfig=a.provideMachReportConfig;exports.resolveCalculationMessages=a.resolveCalculationMessages;exports.resolveConfig=a.resolveConfig;exports.themeToCssVars=a.themeToCssVars;exports.toErrorDetail=a.toErrorDetail;exports.useMachReportConfig=a.useMachReportConfig;exports.MACH_REPORT_CONFIG_KEY=f.MACH_REPORT_CONFIG_KEY;exports.MACH_REPORT_CONTROLLER_KEY=f.MACH_REPORT_CONTROLLER_KEY;exports.MACH_REPORT_FETCHER_KEY=f.MACH_REPORT_FETCHER_KEY;exports.MACH_REPORT_PDF_EXPORTER_KEY=f.MACH_REPORT_PDF_EXPORTER_KEY;exports.MachReportPreview=_.MachReportPreview;exports.machReportPlugin=_.machReportPlugin;exports.createLocalFetcher=S;exports.createProviderEditing=q;exports.useMachReport=A;exports.useReportPreview=I;Object.keys(E).forEach(r=>{r!=="default"&&!Object.prototype.hasOwnProperty.call(exports,r)&&Object.defineProperty(exports,r,{enumerable:!0,get:()=>E[r]})});
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const E=require("@agile-team/mach-report"),i=require("./ReportPreview-BN6fk7Wz.cjs"),a=require("./config-Bb7RiIO5.cjs"),f=require("./injection-keys-Db_DyLkm.cjs"),_=require("./plugin-DzS6pxTA.cjs"),h=require("vue");function S(r){const e=E.createReportSource(r),n=async t=>{if(t.reportIds.length===0)throw new i.PlanLoadError("缺少报表 ID");for(const o of t.reportIds)if(!Object.prototype.hasOwnProperty.call(r,o)||!r[o])throw new i.PlanLoadError(`本地模板 ${o} 不存在`);return e(t)};return n.getParamDefs=e.getParamDefs,n}const v=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 A(){const r=h.shallowRef(null),e=()=>r.value?.state??v,n=Object.freeze({get loading(){return e().loading},get hasPlan(){return e().hasPlan},get pageCount(){return e().pageCount},get currentPage(){return e().currentPage},get exporting(){return e().exporting},get printing(){return e().printing},get canExport(){return e().canExport},get canPrint(){return e().canPrint},get error(){return e().error},get pdfFont(){return e().pdfFont},get editing(){return e().editing??!1},get saving(){return e().saving??!1},get importing(){return e().importing??!1},get dirty(){return e().dirty??!1},get pendingLocalChanges(){return e().pendingLocalChanges??!1},get task(){return e().task??null},get diagnostics(){return e().diagnostics??[]},get reportIds(){return e().reportIds??[]},get params(){return e().params??{}},get canUndo(){return e().canUndo??!1},get canRedo(){return e().canRedo??!1},get changeCount(){return e().changeCount??0},get selection(){return e().selection??null}});function t(){if(!r.value)throw new a.MachReportError("config","报表预览尚未挂载,请在 ready 后调用控制器");return r.value}return{ref(o){const s=o;r.value=s&&typeof s.reload=="function"&&typeof s.print=="function"&&typeof s.exportAs=="function"&&typeof s.openPdfWindow=="function"&&typeof s.gotoPage=="function"&&typeof s.setParams=="function"?s:null},ready:h.computed(()=>r.value!==null),state:n,async checkPdfFont(){const o=t();return o.checkPdfFont?o.checkPdfFont():{status:"unverified",fontUrl:"",message:"旧自定义控制器未提供字体检查,请由宿主确认字体配置"}},cancelTask(){t().cancelTask?.()},async confirmDiscard(o){return await t().confirmDiscard?.(o)??!0},getOutputDiagnostics(o){return t().getOutputDiagnostics?.(o)??[]},async reload(){await t().reload()},async print(){await t().print()},async exportAs(o){await t().exportAs(o)},openPdfWindow(){t().openPdfWindow()},gotoPage(o){t().gotoPage(o)},async setParams(o,s){await t().setParams(o,s)},async importExcel(o,s){const g=t();if(!g.importExcel)throw new a.MachReportError("config","旧自定义控制器未提供 Excel 导入");return g.importExcel(o,s)},getPlan(){return t().getPlan?.()??null},getChanges(){return t().getChanges?.()??[]},getDifferences:()=>t().getDifferences?.()??[],undo:async()=>await t().undo?.()??!1,redo:async()=>await t().redo?.()??!1,restoreChanges:async()=>await t().restoreChanges?.()??!1,getSelection:()=>t().getSelection?.()??null,focusCell:async(o,s)=>await t().focusCell?.(o,s)??!1,focusField:async o=>await t().focusField?.(o)??!1,copySelection:()=>t().copySelection?.()??"",pasteSelection:async o=>await t().pasteSelection?.(o)??!1}}function I(){return h.inject(f.MACH_REPORT_CONTROLLER_KEY,null)}function T(r){return!!r&&typeof r=="object"&&!Array.isArray(r)}function L(r){return Array.isArray(r)&&r.every(e=>T(e)&&typeof e.code=="string"&&typeof e.message=="string"&&["info","warning","error"].includes(e.severity)&&(e.path===void 0||typeof e.path=="string"))}function D(r,e){return Array.isArray(r)&&r.every(n=>T(n)&&Number.isSafeInteger(n.editIndex)&&n.editIndex>=0&&n.editIndex<e&&typeof n.code=="string"&&typeof n.message=="string")}function x(r,e){let n;if(!T(r)||typeof r.revision!="string"||!r.revision.trim()?n="非空 revision(请先在适配器解包业务响应)":r.sourceToken!==void 0&&typeof r.sourceToken!="string"?n="字符串 sourceToken":r.diagnostics!==void 0&&!L(r.diagnostics)?n="结构化 diagnostics":r.conflicts!==void 0&&!D(r.conflicts,e)&&(n="有效 editIndex/code/message conflicts"),n)throw new a.MachReportError("edit",`ReportProvider.save 必须返回${n};服务器可能已提交,请重新查询确认后再编辑`)}function w(r){return typeof r=="function"?r():r}function F(r,e){const n=new Set(r.flatMap(t=>t.source?.[e]===void 0?[]:[String(t.source[e])]));return n.size===1?[...n][0]:void 0}function O(r,e,n,t){return typeof r=="function"?r():F(e,n)??t??r}function b(r){return r.requestId??globalThis.crypto?.randomUUID?.()??`mr-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}function q(r,e){if(!r.save)throw new a.MachReportError("config","ReportProvider.save 未配置,无法启用业务保存");let n="",t,o,s=0;function g(c,u,p){c.conflicts?.length||u!==n||p!==s||(t=c.revision,o=c.sourceToken)}async function m(c,u){if(u.signal.aborted)throw u.signal.reason??new DOMException("Aborted","AbortError");const p=w(e.reportId),y={...w(e.params??{})},R=JSON.stringify([p,y]),C=++s;if(R!==n&&(n=R,t=void 0,o=void 0),e.requireSource!==!1&&c.edits.some(d=>!d.source))throw new E.ReportCellEditError("missing");const l=await r.save({reportId:p,params:y,signal:u.signal,requestId:c.requestId,action:u.action,edits:i.cloneReportSnapshot(c.edits),expectedRevision:O(e.expectedRevision,c.edits,"revision",t),sourceToken:O(e.sourceToken,c.edits,"sourceToken",o)});if(u.signal.aborted)throw u.signal.reason??new DOMException("Aborted","AbortError");x(l,c.edits.length),l.diagnostics?.forEach(d=>e.onDiagnostic?.(d));const P=l.diagnostics?.filter(d=>d.severity==="error");if(P?.length)throw new a.MachReportError("edit",P.map(d=>d.message).join(";"),{diagnostics:P});const M=l.conflicts?.map(d=>({source:c.edits[d.editIndex]?.source,address:c.edits[d.editIndex]?.address,message:d.message}));return g(l,R,C),{revision:l.revision,sourceToken:l.sourceToken,conflicts:M}}return{requireSource:e.requireSource??!0,canEdit:e.canEdit,validate:e.validate,saveBatch:m,save:(c,u)=>m({requestId:b(u),edits:[i.cloneReportSnapshot(c)]},u)}}exports.PlanLoadError=i.PlanLoadError;exports.REPORT_EXPORT_FORMATS=i.REPORT_EXPORT_FORMATS;exports.REPORT_PREVIEW_TOOLS=i.REPORT_PREVIEW_TOOLS;exports.ReportPagination=i.ReportPagination;exports.ReportPreview=i.ReportPreview;exports.ReportToolbar=i.ReportToolbar;exports.buildPrintDocument=i.buildPrintDocument;exports.buildWordHtml=i.buildWordHtml;exports.createDefaultPdfExporter=i.createDefaultPdfExporter;exports.createFetchRequest=i.createFetchRequest;exports.createReportStoragePreferences=i.createReportStoragePreferences;exports.joinReportIds=i.joinReportIds;exports.normalizeReportIds=i.normalizeReportIds;exports.printPlans=i.printPlans;exports.usePageWindow=i.usePageWindow;exports.usePrintExport=i.usePrintExport;exports.useZoom=i.useZoom;exports.DEFAULT_CALCULATION_MESSAGES=a.DEFAULT_CALCULATION_MESSAGES;exports.DEFAULT_MESSAGES=a.DEFAULT_MESSAGES;exports.DEFAULT_THEME=a.DEFAULT_THEME;exports.MachReportError=a.MachReportError;exports.ReportParamPanel=a.ReportParamPanel;exports.SILENT_LOGGER=a.SILENT_LOGGER;exports.defineMachReportConfig=a.defineMachReportConfig;exports.defineMachReportPreset=a.defineMachReportPreset;exports.normalizeReportLoadError=a.normalizeReportLoadError;exports.provideMachReportConfig=a.provideMachReportConfig;exports.resolveCalculationMessages=a.resolveCalculationMessages;exports.resolveConfig=a.resolveConfig;exports.themeToCssVars=a.themeToCssVars;exports.toErrorDetail=a.toErrorDetail;exports.useMachReportConfig=a.useMachReportConfig;exports.MACH_REPORT_CONFIG_KEY=f.MACH_REPORT_CONFIG_KEY;exports.MACH_REPORT_CONTROLLER_KEY=f.MACH_REPORT_CONTROLLER_KEY;exports.MACH_REPORT_FETCHER_KEY=f.MACH_REPORT_FETCHER_KEY;exports.MACH_REPORT_PDF_EXPORTER_KEY=f.MACH_REPORT_PDF_EXPORTER_KEY;exports.MachReportPreview=_.MachReportPreview;exports.machReportPlugin=_.machReportPlugin;exports.createLocalFetcher=S;exports.createProviderEditing=q;exports.useMachReport=A;exports.useReportPreview=I;Object.keys(E).forEach(r=>{r!=="default"&&!Object.prototype.hasOwnProperty.call(exports,r)&&Object.defineProperty(exports,r,{enumerable:!0,get:()=>E[r]})});
package/dist/vue.js CHANGED
@@ -1,12 +1,12 @@
1
1
  import { createReportSource as S, ReportCellEditError as x } from "@agile-team/mach-report";
2
2
  export * from "@agile-team/mach-report";
3
- import { P as R, c as y } from "./ReportPreview-DiNXhQI0.js";
4
- import { R as V, a as X, b as B, d as J, e as Z, f as Q, g as ee, h as re, i as te, j as ne, k as oe, n as se, p as ae, u as ie, l as ce, m as fe } from "./ReportPreview-DiNXhQI0.js";
5
- import { M as u } from "./config-B612mw0x.js";
6
- import { D as de, a as ge, b as le, R as pe, S as me, d as Pe, c as Ee, n as Re, p as ye, r as he, e as we, t as Te, f as ve, u as Se } from "./config-B612mw0x.js";
3
+ import { P as R, c as y } from "./ReportPreview-D2Jkyh1U.js";
4
+ import { R as V, a as X, b as B, d as J, e as Z, f as Q, g as ee, h as re, i as te, j as ne, k as oe, n as se, p as ae, u as ie, l as ce, m as fe } from "./ReportPreview-D2Jkyh1U.js";
5
+ import { M as u } from "./config-XVwG87IA.js";
6
+ import { D as de, a as ge, b as le, R as pe, S as me, d as Pe, c as Ee, n as Re, p as ye, r as he, e as we, t as Te, f as ve, u as Se } from "./config-XVwG87IA.js";
7
7
  import { M as C } from "./injection-keys-e85udZCp.js";
8
8
  import { a as Ce, b as Ie, c as Ae } from "./injection-keys-e85udZCp.js";
9
- import { M as Me, m as _e } from "./plugin-Cd5G2QQn.js";
9
+ import { M as Me, m as _e } from "./plugin-D4wizDXB.js";
10
10
  import { shallowRef as I, computed as A, inject as O } from "vue";
11
11
  function z(r) {
12
12
  const e = S(r), o = async (t) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agile-team/mach-report",
3
- "version": "2.12.0",
3
+ "version": "2.13.0",
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 Xn=Object.create;var Qt=Object.defineProperty;var Qn=Object.getOwnPropertyDescriptor;var _n=Object.getOwnPropertyNames;var ea=Object.getPrototypeOf,ta=Object.prototype.hasOwnProperty;var na=(t,n,a,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of _n(n))!ta.call(t,o)&&o!==a&&Qt(t,o,{get:()=>n[o],enumerable:!(r=Qn(n,o))||r.enumerable});return t};var ht=(t,n,a)=>(a=t!=null?Xn(ea(t)):{},na(n||!t||!t.__esModule?Qt(a,"default",{value:t,enumerable:!0}):a,t));const e=require("vue"),L=require("@agile-team/mach-report"),rn=require("./page-window-index-DEjnM6IB.cjs"),se=require("./progress-BnLiS5eH.cjs"),ln=require("./render-plan-7xpGrCEl.cjs"),U=require("./_plugin-vue_export-helper-BLmdZLlg.cjs"),me=require("./config-BRoLo2oj.cjs"),It=require("./grid-geometry-CZ_cYB6O.cjs"),yt=require("./injection-keys-Db_DyLkm.cjs");function $t(t){return t==null?[]:Array.isArray(t)?t.map(String).filter(n=>n!==""):String(t).split(",").map(n=>n.trim()).filter(n=>n!=="")}function aa(t){return $t(t).join(",")}class Ge extends Error{constructor(n){super(n),this.name="PlanLoadError"}}function oa(t={}){const{baseUrl:n="",headers:a,credentials:r,timeoutMs:o=3e4}=t,l=n.replace(/\/+$/,"");return async({url:s,method:i,params:u,signal:m})=>{let h=`${l}${s}`;if(u&&Object.keys(u).length>0){const c=h.indexOf("#"),S=c>=0?h.slice(c):"",v=c>=0?h.slice(0,c):h,C=v.indexOf("?"),V=C>=0?v.slice(0,C):v,D=new URLSearchParams(C>=0?v.slice(C+1):"");for(const[T,j]of Object.entries(u))D.set(T,j);h=`${V}?${D}${S}`}const p=(c,S)=>{const v=new Ge(c);return Object.defineProperty(v,"cause",{value:S,configurable:!0,writable:!0}),v};if(m?.aborted)throw p(`请求已取消: ${s}`,m.reason);const f=new AbortController;let E;const y=()=>{f.signal.aborted||(E="external",f.abort(m?.reason))};m?.addEventListener("abort",y,{once:!0});const g=setTimeout(()=>{f.signal.aborted||(E="timeout",f.abort())},o);try{const c=await fetch(h,{method:i.toUpperCase(),headers:{Accept:"application/json",...a},credentials:r,signal:f.signal});if(!c.ok)throw new Ge(`HTTP ${c.status} ${s}`);return await c.json()}catch(c){throw E==="timeout"?p(`请求超时(${o}ms): ${s}`,c):E==="external"?p(`请求已取消: ${s}`,c):c instanceof Ge?c:p(`请求失败(${s}): ${c instanceof Error?c.message:String(c)}`,c)}finally{clearTimeout(g),m?.removeEventListener("abort",y)}}}function sn(t,n,a={}){const r=a.pxPerMm??3.7795275590551185,o=e.computed(()=>Math.max(0,e.unref(a.gapPx)??18)),l=e.ref(0),s=e.ref(800),i=e.computed(()=>{const c=t.value?.pages??[];return rn.createPageWindowIndex(c.map(S=>S.pageHeightMm*r),o.value)}),u=e.computed(()=>{let c=0;for(const S of t.value?.pages??[])c=Math.max(c,S.pageWidthMm*r);return{w:c,h:i.value.totalHeightPx}}),m=e.computed(()=>i.value.window(s.value/n.value,l.value/n.value,e.unref(a.overscan)??1)),h=e.computed(()=>{const c=t.value;if(!c)return[];const{start:S,end:v}=m.value;return c.pages.slice(S,v+1).map((C,V)=>({page:C,index:S+V}))});let p=0,f=!1;function E(c){c&&(l.value=c.scrollTop,s.value=c.clientHeight||800)}function y(c,S){return v=>{p||f||(p=requestAnimationFrame(()=>{if(p=0,f||(E(v),S.value<=0))return;const C=Math.max(0,v.scrollTop+32)/n.value;c.value=Math.min(S.value,i.value.pageAt(C)+1)}))}}function g(){f=!0,p&&cancelAnimationFrame(p),p=0}return e.onScopeDispose(g),{contentSize:u,windowRange:m,visiblePages:h,makeScrollHandler:y,refreshViewport:E,pageOffsetPx:c=>i.value.offsetAt(c),destroy:g}}const _t=96/25.4;function ra(t){const n=new WeakMap,a=e.ref(0);let r,o=0,l=0,s=!1;function i(){o++,l&&cancelAnimationFrame(l),l=0}function u(g,c,S,v){return!s&&c===o&&t.plan.value===S&&t.root.value===v&&v.contains(g.holder)&&Number(g.holder.dataset.page)===g.index+1}function m(g){const{holder:c,page:S}=g;n.delete(c),c.style.width=`${S.pageWidthMm*_t}px`,c.style.height=`${S.pageHeightMm*_t}px`,c.setAttribute("aria-busy","true");const v=c.ownerDocument.createElement("div");v.className="mrp-page-loading";const C=c.ownerDocument.createElement("span");C.textContent=t.loading(),C.style.transform=`scale(${1/Math.max(1e-4,t.zoom())})`,v.append(C),c.replaceChildren(v)}function h(g){const c=n.get(g.holder);return!c||c.page!==g.page||c.element.parentElement!==g.holder?!1:(c.query!==t.query()&&(t.clear(c.element),t.highlight(c.element),c.query=t.query()),!0)}function p(g,c,S,v){if(u(g,c,S,v))try{const C=L.renderPage(g.page,96,{},g.holder.ownerDocument);if(t.highlight(C),!u(g,c,S,v))return;g.holder.replaceChildren(C),g.holder.removeAttribute("aria-busy"),n.set(g.holder,{page:g.page,element:C,query:t.query()}),t.mounted(g.holder),t.ready()}catch(C){if(!u(g,c,S,v))return;g.holder.removeAttribute("aria-busy");const V=g.holder.ownerDocument.createElement("div");V.className="mrp-page-render-error",V.setAttribute("role","alert"),V.textContent=C instanceof Error?C.message:String(C),g.holder.replaceChildren(V),t.error(C)}}function f(g,c,S,v){g.length&&(l=requestAnimationFrame(()=>{if(c!==o||s)return;l=0;const C=g.shift();C&&p(C,c,S,v),c===o&&t.plan.value===S&&t.root.value===v&&f(g,c,S,v)}))}function E(){i();const g=t.plan.value,c=t.root.value;if(s||!g||!c){r=void 0;return}const S=o,v=r?.plan===g?r.index:t.priority();r=void 0;const C=[];c.querySelectorAll(".mrp-page-holder").forEach(T=>{const j=Number(T.dataset.page)-1,J=g.pages[j];if(!J)return;const W={holder:T,page:J,index:j};h(W)||(m(W),C.push(W))});const V=C.findIndex(T=>T.index===v),D=V<0?void 0:C.splice(V,1)[0];D&&p(D,S,g,c),t.ready(),f(C,S,g,c)}function y(g){s||!t.plan.value||(r={plan:t.plan.value,index:g},a.value++)}return e.watch([t.plan,t.root,t.pages,t.priority,t.focusToken,t.query,t.zoom,t.loading,a],E,{flush:"post",immediate:!0}),e.onScopeDispose(()=>{s=!0,r=void 0,i()}),{prioritize:y,cancel:i}}function cn(t){const n=e.ref(1),a=e.ref("fit");let r=0;function o(){r&&cancelAnimationFrame(r),r=0}function l(){o(),r=requestAnimationFrame(()=>{if(r=0,a.value!=="fit")return;const i=t();!i?.viewport||i.viewport.clientWidth<=48||!Number.isFinite(i.pageWidthPx)||(n.value=Math.min(1,(i.viewport.clientWidth-48)/Math.max(1,i.pageWidthPx)))})}function s(i){if(i==="fit")a.value="fit",l();else{if(!Number.isFinite(i))return;o(),a.value="raw",n.value=Math.min(3,Math.max(.3,i/100))}}return e.getCurrentScope()&&e.onScopeDispose(o),{zoom:n,zoomMode:a,applyFitZoom:l,setZoom:s}}let la=0;function en(t,n){const a=new AbortController;let r={taskId:`mr-output-${Date.now().toString(36)}-${++la}`,kind:t,stage:t==="print"?"print":"encode",status:"running",cancellable:!0};function o(){try{n?.(Object.freeze({...r}))}catch{}}return{controller:a,get task(){return r},start:o,update(l,s,i){a.signal.aborted||r.status!=="running"||(r={...r,stage:l,completed:s,total:i},o())},finish(l="completed"){r.status==="running"&&(r={...r,status:l,cancellable:!1},o(),l==="cancelled"&&a.abort())}}}const De=8;function qe(){return new Promise(t=>setTimeout(t,0))}function Je(t){return`p${t.pageWidthMm}x${t.pageHeightMm}`.replace(/[.+]/g,"_")}function Ye(t){const n=new Map;return t.pages.forEach(o=>{n.has(Je(o))||n.set(Je(o),o)}),`<!doctype html><html><head><meta charset="utf-8"><style>${`.mr-page{margin:0 auto;page-break-after:always;}
2
- .mr-page tr{break-inside:avoid;page-break-inside:avoid;}
3
- .mr-comp{break-inside:avoid;page-break-inside:avoid;}
4
- ${[...n.values()].map(o=>`@page ${Je(o)}{size:${o.pageWidthMm}mm ${o.pageHeightMm}mm;margin:0;}`).join(`
5
- `)}
6
- body{margin:0;background:#fff;}`}</style></head><body>`}function Xe(t){const n=L.renderPage(t,96,{},document);return n.style.page=Je(t),n.outerHTML}function un(t){return{head:Ye(t),pageChunks:t.pages.map(Xe)}}async function sa(t,n={}){const a={schemaVersion:"mach-report-batch-print",pages:t.flatMap(s=>s.pages)};if(a.pages.length===0)return;const r=Ye(a),o=document.createElement("iframe");o.style.cssText="position:fixed;right:0;bottom:0;width:0;height:0;border:0;visibility:hidden;",document.body.appendChild(o);let l=!1;try{const s=o.contentDocument;s.open(),s.write(r);for(let i=0;i<a.pages.length;i++)se.assertOutputActive(n.signal),s.write(Xe(a.pages[i])),i%De===De-1&&(se.notifyOutputProgress(n,i+1,a.pages.length),await qe());s.write("</body></html>"),s.close(),await qe(),se.notifyOutputProgress(n,a.pages.length,a.pages.length),l=!0,o.contentWindow?.focus(),o.contentWindow?.print()}catch(s){if(n.signal?.aborted)throw s;n.onError?.(s instanceof Error?`批量打印失败: ${s.message}`:"批量打印失败")}finally{l?setTimeout(()=>o.remove(),6e4):o.remove()}}function dn(t){return`<!doctype html><html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40"><head><meta charset="utf-8"><!--[if gte mso 9]><xml><w:WordDocument><w:View>Print</w:View><w:Zoom>100</w:Zoom></w:WordDocument></xml><![endif]-->${t.replace(/^<!doctype html><html><head>/,"")}`}function ia(t){const{head:n,pageChunks:a}=un(t);return{html:`${dn(n)}${a.join("")}</body></html>`,filename:"mach-report.doc"}}function fn(t,n){let a=null,r=!1,o=!1,l=0,s=0;const i=new Set,u=new Map;let m=null;const h=new Map;let p=null,f=null,E=null,y=null,g=null;function c(x,B){return!o&&t.value===x&&l===B}function S(){if(o)return;const x=[...u.values()].reverse().find(B=>c(B.plan,B.epoch))?.format??null;x!==p&&(p=x,n.onBusy?.(x))}function v(x,B,z){const O={};return u.set(O,{plan:x,epoch:B,format:z,run:en("export",n.onTask)}),u.get(O).run.start(),S(),O}function C(x){u.get(x)?.run.finish(),u.delete(x),S()}function V(){for(const[x,B]of h)c(B.plan,B.epoch)||(x.close(),h.delete(x))}function D(x=!0){if(x){s++;for(const B of i)B.close();i.clear()}for(const B of u.values())B.run.finish("cancelled");m?.finish("cancelled"),l++,j(),S(),V()}const T=e.watch(t,()=>D(!1),{flush:"sync"});function j(){a?.remove(),a=null}function J(){D(),o=!0,l++,T(),j(),V(),u.clear(),n.onPrinting?.(!1)}function W(x,B){const z=URL.createObjectURL(x);setTimeout(()=>URL.revokeObjectURL(z),1e4);const O=document.createElement("a");O.href=z,O.download=B,O.click()}function Z(x,B,z,O,G){z.update("download"),c(x,B)&&!z.controller.signal.aborted&&W(O,G)}async function ee(x,B,z,O){const G=x.contentDocument;G.open(),G.write(Ye(B));for(let H=0;H<B.pages.length;H++)if(O.controller.signal.aborted||(G.write(Xe(B.pages[H])),O.update("print",H+1,B.pages.length),H%De===De-1&&await qe(),x!==a))return!1;return G.write("</body></html>"),G.close(),await qe(),!(!c(B,z)||x!==a)}function ie(){const x=s,B=O=>O&&!o&&x===s,z=O=>(!o&&x===s&&n.onError(O instanceof Error?O.message:"报表修改尚未完成","export"),!1);try{const O=n.beforeOutput?.()??!0;return typeof O=="boolean"?B(O):O.then(B,z)}catch(O){return z(O)}}function te(x){const B=ie();return typeof B=="boolean"?B?x():Promise.resolve():B.then(z=>z?x():void 0)}async function w(){if(r)return;const x=t.value;if(o||!x||x.pages.length===0)return;const B=l;r=!0;const z=en("print",n.onTask);m=z,z.start(),n.onPrinting?.(!0),j(),a=document.createElement("iframe"),a.style.cssText="position:fixed;right:0;bottom:0;width:0;height:0;border:0;visibility:hidden;",document.body.appendChild(a);const O=a;try{if(!c(x,B)||z.controller.signal.aborted){j();return}if(!await ee(O,x,B,z))return;O.contentWindow?.focus(),O.contentWindow?.print()}catch{z.finish("failed"),O===a&&j(),c(x,B)&&n.onError("调用打印失败,请改用导出 PDF","print")}finally{z.finish(),m===z&&(m=null),r=!1,o||n.onPrinting?.(!1)}}function $(x,B,z){return{signal:z.controller.signal,onDiagnostic:O=>{c(x,B)&&!z.controller.signal.aborted&&n.onDiagnostic?.(O)},onProgress:(O,G)=>z.update("encode",O,G)}}function b(x,B,z){if(f?.plan===x&&f.epoch===B)return f.promise;const O=Promise.resolve().then(()=>{if(!c(x,B))throw new Error("报表已切换或卸载");return se.waitForOutput(n.getPdfExporter()(x,G=>{c(x,B)&&n.onWarning?.(G)},z?$(x,B,z):void 0),z?.controller.signal)}).finally(()=>{f?.promise===O&&(f=null)});return f={plan:x,epoch:B,promise:O},O}async function N(){const x=t.value;if(o||!x||x.pages.length===0)return;const B=l;if(E?.plan===x&&E.epoch===B)return E.promise;const z=v(x,B,"PDF"),O=(async()=>{try{const G=u.get(z).run,H=await b(x,B,G);if(!c(x,B))return;Z(x,B,G,new Blob([H],{type:"application/pdf"}),"mach-report.pdf")}catch(G){u.get(z)?.run.finish("failed"),c(x,B)&&n.onError(G instanceof Error?`PDF 导出失败: ${G.message}`:"PDF 导出失败","pdf")}finally{C(z),E?.token===z&&(E=null)}})();return E={plan:x,epoch:B,promise:O,token:z},O}async function P(){const x=t.value;if(o||!x||x.pages.length===0)return;const B=l;if(y?.plan===x&&y.epoch===B)return y.promise;const z={...n.getXlsxOptions?.()},O=v(x,B,"Excel"),G=(async()=>{try{const{renderPlanToXlsx:H}=await import("@agile-team/mach-report/xlsx");if(!c(x,B))return;const ce=u.get(O).run,{buffer:ue,warnings:he}=await se.waitForOutput(H(x,{...z,...$(x,B,ce)}),ce.controller.signal);if(!c(x,B)||(he.length>0&&n.onWarning?.(`Excel 导出有 ${he.length} 条提示:${he.slice(0,2).join(";")}`),!c(x,B)))return;Z(x,B,ce,new Blob([ue],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}),"mach-report.xlsx")}catch(H){u.get(O)?.run.finish("failed"),c(x,B)&&n.onError(H instanceof Error?`Excel 导出失败: ${H.message}`:"Excel 导出失败","export")}finally{C(O),y?.token===O&&(y=null)}})();return y={plan:x,epoch:B,promise:G,token:O},G}async function I(){const x=t.value;if(o||!x||x.pages.length===0)return;const B=l;if(g?.plan===x&&g.epoch===B)return g.promise;const z=v(x,B,"图片"),O=(async()=>{try{const G=u.get(z).run,{blobs:H}=await se.waitForOutput(L.renderPlanToImages(x,{...$(x,B,G),dpr:Math.min(2,typeof devicePixelRatio=="number"?devicePixelRatio:1)}),G.controller.signal);if(!c(x,B))return;H.forEach((ce,ue)=>{Z(x,B,G,ce,H.length>1?`mach-report-page-${ue+1}.png`:"mach-report.png")})}catch(G){u.get(z)?.run.finish("failed"),c(x,B)&&n.onError(G instanceof Error?`图片导出失败: ${G.message}`:"图片导出失败","export")}finally{C(z),g?.token===z&&(g=null)}})();return g={plan:x,epoch:B,promise:O,token:z},O}async function F(x){const B=t.value;if(o||!B||!B.pages.length)return;const z=l,O=v(B,z,x==="word"?"Word":"HTML"),G=u.get(O).run;try{const H=[];for(const[he,Ke]of B.pages.entries()){if(!c(B,z))return;H.push(Xe(Ke)),G.update("encode",he+1,B.pages.length),he%De===De-1&&await qe()}if(!c(B,z))return;const ce=Ye(B),ue=`${x==="word"?dn(ce):ce}${H.join("")}</body></html>`;Z(B,z,G,new Blob([ue],{type:x==="word"?"application/msword;charset=utf-8":"text/html;charset=utf-8"}),x==="word"?"mach-report.doc":"mach-report.html")}catch(H){G.finish("failed"),c(B,z)&&n.onError(H instanceof Error?`导出失败: ${H.message}`:"导出失败","export")}finally{C(O)}}async function q(){await F("word")}function K(){return te(w)}function R(){return te(I)}function ne(){return te(q)}async function X(x){const B=t.value;if(!(o||!B||B.pages.length===0)){if(x==="pdf"){await N();return}if(x==="xlsx"||x==="excel"){await P();return}if(x==="png"||x==="image"){await I();return}if(x==="word"||x==="doc"){await q();return}if(x!=="html"){n.onError(`不支持的导出格式:${x}`,"export");return}await F("html")}}function oe(x){return te(()=>X(x))}function Ce(x){const B=t.value;if(o||!B||!B.pages.length){x.close();return}const z=l;h.set(x,{plan:B,epoch:z});const O=v(B,z,"PDF");b(B,z,u.get(O).run).then(G=>{if(!c(B,z)||x.closed){h.delete(x)&&x.close();return}const H=URL.createObjectURL(new Blob([G],{type:"application/pdf"}));setTimeout(()=>URL.revokeObjectURL(H),6e4);const ce=x.document;ce.title="PDF 预览",ce.documentElement.style.height="100%",ce.body.style.cssText="margin:0;height:100%;";const ue=ce.createElement("iframe");ue.title="PDF 预览",ue.style.cssText="display:block;width:100%;height:100%;border:0;",ue.src=H,ce.body.replaceChildren(ue),h.delete(x)}).catch(G=>{u.get(O)?.run.finish("failed"),x.close(),h.delete(x),c(B,z)&&n.onError(G instanceof Error?`PDF 预览失败: ${G.message}`:"PDF 预览失败","pdf")}).finally(()=>C(O))}function ve(){if(o||!t.value?.pages.length)return;const x=globalThis.window.open("","_blank");if(!x){n.onError("浏览器拦截了弹窗,请允许弹窗后重试","pdf");return}const B=ie();if(typeof B=="boolean"){B?Ce(x):x.close();return}i.add(x),B.then(z=>{const O=i.delete(x);if(!z||!O||x.closed){x.close();return}Ce(x)})}return{print:K,exportAs:oe,exportImages:R,exportWord:ne,openPdfWindow:ve,invalidatePending:D,cancel:D,releasePrintFrame:j,dispose:J}}const mn="mrp-hit";function ca(t){t.querySelectorAll(`mark.${mn}`).forEach(a=>{const r=a.parentNode;if(r){for(;a.firstChild;)r.insertBefore(a.firstChild,a);a.remove(),r.normalize()}})}function ua(t,n){const a=n.trim();if(!a)return 0;const r=a.toLowerCase(),o=document.createTreeWalker(t,NodeFilter.SHOW_TEXT,{acceptNode(i){const u=i.parentElement;return!u||u.closest("mark")||/^(SCRIPT|STYLE)$/.test(u.tagName)?NodeFilter.FILTER_REJECT:(i.nodeValue??"").toLowerCase().includes(r)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT}}),l=[];for(let i=o.nextNode();i;i=o.nextNode())l.push(i);let s=0;for(const i of l){const u=i.nodeValue??"",m=u.toLowerCase(),h=i.parentElement;if(!h)continue;const p=document.createDocumentFragment();let f=0,E=m.indexOf(r);for(;E>=0;){E>f&&p.appendChild(document.createTextNode(u.slice(f,E)));const y=document.createElement("mark");y.className=mn,y.textContent=u.slice(E,E+a.length),p.appendChild(y),s++,f=E+a.length,E=m.indexOf(r,f)}f<u.length&&p.appendChild(document.createTextNode(u.slice(f))),h.replaceChild(p,i)}return s}const da=new Set(["line","rect","ellipse","chart"]);function*fa(t){for(const n of t.cells??[])for(const a of n??[])yield a?.text??"",yield*a?.children??[]}function*ma(t){if(ln.isRichText(t))for(const n of t.richParagraphs)for(const a of n.segments??[])yield(a.kind==="field"?a.field:a.text)??"";else t.lines?.length?yield*t.lines:yield t.text??""}function*pa(t){const n=[t.values()];for(;n.length>0;){const a=n[n.length-1].next();if(a.done){n.pop();continue}const r=a.value;if(typeof r=="string"){yield r;continue}yield"",!ln.isImageBackedComponent(r)&&(r.kind==="text"?n.push(ma(r)):r.grid?n.push(fa(r.grid)):da.has(r.kind)||(yield r.fallbackText??""))}}function*ga(t){for(let n=0;n<t.pages.length;n++){for(const a of pa(t.pages[n].components))yield{text:a,pageIndex:n};yield{text:"",pageIndex:n}}}function va(t,n){const a=t.toLowerCase();let r=0;for(let o=a.indexOf(n);o>=0;o=a.indexOf(n,o+n.length))r++;return r}function ha(t){const{plan:n,gotoPage:a,highlight:r,clearHighlights:o}=t,l=e.ref(!1),s=e.ref(""),i=e.ref(0),u=e.ref(0),m=e.ref(!1);let h=[];const p=e.computed(()=>{if(u.value===0)return null;const V=i.value;let D=0,T=h.length-1;for(;D<T;){const J=D+T>>>1;h[J].cumulative<=V?D=J+1:T=J}const j=h[D];return j?{pageIndex:j.pageIndex,occurrence:V-(h[D-1]?.cumulative??0)}:null});let f=null,E=null,y=0;function g(){y++,f&&clearTimeout(f),E&&clearTimeout(E),f=E=null,m.value=!1}function c(V){s.value=V,i.value=0,u.value=0,h=[],m.value=!1;const D=V.trim().toLowerCase(),T=n.value;if(!D||!T)return;m.value=!0;const j=y,J=ga(T),W=[];let Z=0;function ee(){if(E=null,j!==y||T!==n.value)return;const ie=performance.now();let te=0;for(;te<5e3&&performance.now()-ie<4;){const w=J.next();if(w.done){h=W,u.value=Z,m.value=!1,h[0]&&a(h[0].pageIndex+1);return}const $=va(w.value.text,D);if($>0){Z+=$;const b=W[W.length-1];b?.pageIndex===w.value.pageIndex?b.cumulative=Z:W.push({pageIndex:w.value.pageIndex,cumulative:Z})}te++}E=setTimeout(ee,0)}ee()}function S(V){if(g(),s.value=V,i.value=u.value=0,h=[],!V.trim()){c("");return}m.value=!0,f=setTimeout(()=>{f=null,c(V)},Math.max(0,e.unref(t.debounceMs)??200))}function v(V){const D=u.value;if(D===0||m.value)return;i.value=(i.value+V+D)%D;const T=p.value;T&&a(T.pageIndex+1)}function C(){g(),s.value="",i.value=u.value=0,h=[]}return e.watch(n,C,{flush:"sync"}),e.onScopeDispose(C),{visible:l,query:s,matchIndex:i,matchCount:u,activeMatch:p,searching:m,toggle:()=>{l.value=!l.value},onInput:S,onNav:v,apply:V=>{s.value.trim()&&r(V,s.value.trim())},clear:V=>{o(V)},reset:C}}function ya(t,n){const a=e.computed(()=>{if(t.value)return!0;if(typeof location>"u")return!1;try{return new URLSearchParams(location.search).get("mrp-debug")==="1"}catch{return!1}}),r=e.computed(()=>!a.value||!n.plan.value?0:Math.round(JSON.stringify(n.plan.value).length/1024)),o=e.computed(()=>!a.value||!n.plan.value?null:{pages:n.pageCount.value,window:`${n.windowRange.value.start}-${n.windowRange.value.end}`,zoom:`${Math.round(n.zoom.value*100)}%`,loadMs:`${n.loadMs.value}ms`,planKB:r.value});return{enabled:a,debugStats:o}}function ba(t,n){const{thumbsRoot:a,visible:r,renderThumbCanvas:o}=n,l=e.ref(0),s=e.ref(800),i=e.computed(()=>(t.value?.pages??[]).map(v=>Math.round(v.pageHeightMm/v.pageWidthMm*116))),u=e.computed(()=>rn.createPageWindowIndex(i.value.map(v=>v+20),8)),m=e.computed(()=>u.value.window(s.value,l.value,1)),h=e.computed(()=>{if(!r.value)return[];const{start:v,end:C}=m.value;return i.value.slice(v,C+1).map((V,D)=>({index:v+D,height:V}))});let p=0,f=0,E=!1;function y(){const v=a.value;v&&(l.value=v.scrollTop,s.value=v.clientHeight||800)}function g(){E||f||(f=requestAnimationFrame(()=>{f=0,y()}))}function c(){if(h.value,p&&cancelAnimationFrame(p),p=0,E||!r.value||!t.value||!a.value)return;y();const v=h.value,C=t.value,V=a.value;let D=0;function T(){if(p=0,!(E||!r.value||t.value!==C||a.value!==V)){for(let j=0;D<v.length&&j<2;j++,D++){const J=v[D].index,W=V.querySelector(`[data-thumb="${J+1}"]`);if(!W||W.childElementCount>0)continue;const Z=o(J);Z&&(Z.style.width="100%",Z.style.height="100%",Z.style.display="block",W.appendChild(Z))}D<v.length&&(p=requestAnimationFrame(T))}}p=requestAnimationFrame(T)}function S(){E=!0,p&&cancelAnimationFrame(p),f&&cancelAnimationFrame(f),p=f=0}return e.onScopeDispose(S),{schedule:c,destroy:S,onScroll:g,windowRange:m,visibleThumbs:h}}function wa(){const t=e.shallowRef(0);return{loadMs:t,start(){return typeof performance<"u"?performance.now():0},end(n){t.value=n?Math.round(performance.now()-n):0}}}function xa(t){const n=e.ref(null),a=e.ref(null);function r(){n.value?.focus(),n.value?.select()}e.watch(t.visible,s=>{s&&e.nextTick(r)});function o(){t.close(),e.nextTick(()=>a.value?.focus())}function l(s){s.isComposing||s.keyCode===229||s.key!=="Enter"&&s.key!=="Escape"||(s.preventDefault(),s.stopPropagation(),s.key==="Escape"?o():t.navigate(s.shiftKey?-1:1))}return{input:n,toggle:a,focus:r,close:o,onKeydown:l}}function pn(){const t=e.ref(!1),n=e.ref(null),a=e.ref(null),r=e.ref(null);function o(i=!1){t.value=!1,i&&e.nextTick(()=>a.value?.focus())}function l(i){i.target instanceof Node&&!n.value?.contains(i.target)&&o()}function s(i){i.key!=="Escape"||!t.value||i.isComposing||(i.preventDefault(),i.stopPropagation(),o(!0))}return e.watch(t,i=>{i&&e.nextTick(()=>(r.value?.querySelector("input")??r.value?.querySelector("button:not(:disabled)"))?.focus())}),e.onMounted(()=>{document.addEventListener("pointerdown",l),document.addEventListener("focusin",l)}),e.onBeforeUnmount(()=>{document.removeEventListener("pointerdown",l),document.removeEventListener("focusin",l)}),{opened:t,root:n,trigger:a,panel:r,close:o,onKeydown:s}}const ka=["disabled","aria-expanded"],Ea=["aria-label"],Ca=["aria-label","disabled","onClick"],Sa={"aria-hidden":"true"},Na=e.defineComponent({__name:"ReportExportMenu",props:{messages:{},formats:{},busy:{type:Boolean}},emits:["export"],setup(t,{emit:n}){const a=t,r=n,{opened:o,root:l,trigger:s,panel:i,close:u,onKeydown:m}=pn(),h=e.computed(()=>[{format:"xlsx",label:a.messages.exportExcel,extension:".xlsx"},{format:"pdf",label:a.messages.exportPdf,extension:".pdf"},{format:"png",label:a.messages.exportImage,extension:".png"},{format:"word",label:a.messages.exportWord,extension:".doc"},{format:"html",label:a.messages.exportHtml,extension:".html"}].filter(y=>!a.formats||a.formats.includes(y.format)));e.watch(()=>a.busy,y=>{y&&u()});function p(y){a.busy||(r("export",y),u(!0))}function f(y){y.key!=="ArrowDown"&&y.key!=="ArrowUp"||(y.preventDefault(),o.value=!0,y.key==="ArrowUp"&&e.nextTick(()=>i.value?.querySelector("button:last-child")?.focus()))}function E(y){if(y.key==="Tab"){u();return}if(!["ArrowDown","ArrowUp","Home","End"].includes(y.key))return;y.preventDefault(),y.stopPropagation();const c=[...i.value?.querySelectorAll("button:not(:disabled)")??[]],S=c.indexOf(document.activeElement),v=y.key==="Home"?0:y.key==="End"?c.length-1:(S+(y.key==="ArrowDown"?1:-1)+c.length)%c.length;c[v]?.focus()}return(y,g)=>h.value.length?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"root",ref:l,class:"mrp-export-menu",onKeydown:g[1]||(g[1]=(...c)=>e.unref(m)&&e.unref(m)(...c))},[e.createElementVNode("button",{ref_key:"trigger",ref:s,type:"button",class:"mrp-nav mrp-export-trigger",disabled:t.busy,"aria-haspopup":"menu","aria-expanded":e.unref(o),onClick:g[0]||(g[0]=c=>o.value=!e.unref(o)),onKeydown:f},[e.createVNode(U._sfc_main,{name:"download"}),e.createTextVNode(e.toDisplayString(t.messages.exportMenu??"导出"),1),e.createVNode(U._sfc_main,{name:"chevron-down",size:12})],40,ka),e.unref(o)?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"panel",ref:i,class:"mrp-export-panel",role:"menu","aria-label":t.messages.exportMenu??"导出",onKeydown:E},[e.createElementVNode("p",null,e.toDisplayString(t.messages.exportMenuDescription??"选择文件格式"),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,c=>(e.openBlock(),e.createElementBlock("button",{key:c.format,type:"button",role:"menuitem",tabindex:"-1","aria-label":c.label,disabled:t.busy,onClick:S=>p(c.format)},[e.createVNode(U._sfc_main,{name:"file"}),e.createElementVNode("span",null,e.toDisplayString(c.label),1),e.createElementVNode("small",Sa,e.toDisplayString(c.extension),1)],8,Ca))),128))],40,Ea)):e.createCommentVNode("",!0)],544)):e.createCommentVNode("",!0)}}),Ba=U._export_sfc(Na,[["__scopeId","data-v-83a57a3c"]]),Ia=["aria-label"],$a={class:"mrp-pageinfo","aria-live":"polite"},Va={class:"mrp-page-buttons"},Pa=["aria-label","title","disabled"],Ra=["aria-label","title","disabled"],Da=["aria-label","title","aria-invalid","disabled"],Ma=["aria-label","disabled"],Ta={key:1,class:"mrp-page-error",role:"alert"},za=e.defineComponent({__name:"ReportPagination",props:{pageCount:{},currentPage:{},messages:{},busy:{type:Boolean}},emits:["goto"],setup(t,{emit:n}){const a=t,r=n,o=e.ref(String(a.currentPage)),l=e.ref(!1),s=e.computed(()=>a.messages.pageInfo.replace("{cur}",String(a.currentPage)).replace("{total}",String(a.pageCount)));e.watch(()=>[a.currentPage,a.pageCount],()=>{o.value=String(a.currentPage),l.value=!1});function i(){if(a.busy)return;const u=o.value.trim(),m=Number(u);l.value=!/^\d+$/.test(u)||!Number.isSafeInteger(m)||m<1||m>a.pageCount,!l.value&&m!==a.currentPage&&r("goto",m)}return(u,m)=>t.pageCount>0?(e.openBlock(),e.createElementBlock("nav",{key:0,class:"mrp-pagination",role:"navigation","aria-label":t.messages.pagination??"报表分页"},[e.createElementVNode("span",$a,e.toDisplayString(s.value),1),e.createElementVNode("div",Va,[e.createElementVNode("button",{class:"mrp-nav",type:"button","aria-label":t.messages.prevPage,title:t.messages.prevPage,disabled:t.busy||t.currentPage<=1,onClick:m[0]||(m[0]=h=>r("goto",t.currentPage-1))},[e.createVNode(U._sfc_main,{name:"chevron-left"})],8,Pa),e.createElementVNode("button",{class:"mrp-nav",type:"button","aria-label":t.messages.nextPage,title:t.messages.nextPage,disabled:t.busy||t.currentPage>=t.pageCount,onClick:m[1]||(m[1]=h=>r("goto",t.currentPage+1))},[e.createVNode(U._sfc_main,{name:"chevron-right"})],8,Ra)]),t.pageCount>1?(e.openBlock(),e.createElementBlock("form",{key:0,class:"mrp-page-jump",onSubmit:e.withModifiers(i,["prevent"])},[e.createElementVNode("label",null,[e.createElementVNode("span",null,e.toDisplayString(t.messages.pageJump??"跳至页"),1),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":m[2]||(m[2]=h=>o.value=h),type:"text",inputmode:"numeric",autocomplete:"off","aria-label":t.messages.pageJump??"跳至页",title:t.messages.pageJumpHint??"Enter 跳转","aria-invalid":l.value,disabled:t.busy,onInput:m[3]||(m[3]=h=>l.value=!1),onKeydown:m[4]||(m[4]=e.withKeys(h=>{o.value=String(t.currentPage),l.value=!1},["esc"]))},null,40,Da),[[e.vModelText,o.value]])]),e.createElementVNode("button",{class:"mrp-nav",type:"submit","aria-label":t.messages.pageJump??"跳至页",disabled:t.busy},[e.createVNode(U._sfc_main,{name:"arrow-right",size:14})],8,Ma)],32)):e.createCommentVNode("",!0),l.value?(e.openBlock(),e.createElementBlock("span",Ta,e.toDisplayString(t.messages.pageJumpInvalid??"请输入有效页码"),1)):e.createCommentVNode("",!0)],8,Ia)):e.createCommentVNode("",!0)}}),Vt=U._export_sfc(za,[["__scopeId","data-v-0db4fbd3"]]),Oa=["aria-label"],Fa={class:"mrp-title"},Aa=["aria-label"],La=["aria-label","aria-pressed"],qa=["aria-pressed"],Ka=["aria-pressed"],ja=["aria-label"],Wa=["aria-pressed"],Ha=["aria-pressed","onClick"],Ua=["aria-label"],Ga=["disabled"],Ja=["disabled"],Za=["disabled"],Ya=["aria-label","aria-expanded"],Xa=["aria-label"],Qa=["placeholder","aria-label","value"],_a=["aria-label"],eo={key:1,class:"mrp-search-count",role:"status","aria-live":"polite"},to=["disabled","aria-label"],no=["disabled","aria-label"],ao=["aria-label"],oo={class:"mrp-search-hint",role:"status"},ro=e.defineComponent({__name:"ReportToolbar",props:{pageCount:{},currentPage:{},zoomMode:{},zoom:{},showExport:{type:Boolean},showPrint:{type:Boolean},showPdfWindow:{type:Boolean},messages:{},search:{},thumbsVisible:{type:Boolean},showImport:{type:Boolean},showSearch:{type:Boolean,default:!0},showThumbnails:{type:Boolean,default:!0},showZoom:{type:Boolean,default:!0},exportFormats:{default:void 0},showSettings:{type:Boolean},settingsOpen:{type:Boolean},busy:{type:Boolean},showPagination:{type:Boolean}},emits:["goto","zoom","export","print","pdf-window","search-input","search-nav","search-toggle","thumbs-toggle","import-excel","settings-toggle"],setup(t,{expose:n,emit:a}){const r=t,o=a,l=xa({visible:()=>r.search.visible,navigate:h=>{!r.search.searching&&r.search.matchCount>0&&o("search-nav",h)},close:()=>{r.search.visible&&o("search-toggle")}}),{input:s,toggle:i}=l;n({focusSearch:l.focus});function u(){const h=r.search.matchCount>0?r.search.matchIndex+1:0;return r.messages.matchInfo.replace("{cur}",String(h)).replace("{total}",String(r.search.matchCount))}function m(){o("search-input",""),l.focus()}return(h,p)=>(e.openBlock(),e.createElementBlock("div",{class:"mrp-toolbar",role:"toolbar","aria-label":t.messages.title},[e.createElementVNode("span",Fa,[e.createVNode(U._sfc_main,{name:"file"}),e.createTextVNode(e.toDisplayString(t.messages.title),1)]),t.showPagination?(e.openBlock(),e.createBlock(Vt,{key:0,"page-count":t.pageCount,"current-page":t.currentPage,messages:t.messages,busy:t.busy,onGoto:p[0]||(p[0]=f=>o("goto",f))},null,8,["page-count","current-page","messages","busy"])):e.createCommentVNode("",!0),p[15]||(p[15]=e.createElementVNode("span",{class:"mrp-spacer"},null,-1)),t.showSearch!==!1?(e.openBlock(),e.createElementBlock("div",{key:1,class:"mrp-read-tools",role:"group","aria-label":t.messages.search??"内容搜索"},[e.createElementVNode("button",{ref_key:"searchToggleRef",ref:i,class:e.normalizeClass(["mrp-nav mrp-search-toggle mrp-icon-button",{"mrp-active":t.search.visible}]),type:"button",title:"Ctrl+F","aria-label":t.messages.search??t.messages.searchPlaceholder,"aria-pressed":t.search.visible,onClick:p[1]||(p[1]=f=>o("search-toggle"))},[e.createVNode(U._sfc_main,{name:"search"})],10,La),t.showThumbnails!==!1?(e.openBlock(),e.createElementBlock("button",{key:0,class:e.normalizeClass(["mrp-nav",{"mrp-active":t.thumbsVisible}]),type:"button","aria-pressed":t.thumbsVisible,onClick:p[2]||(p[2]=f=>o("thumbs-toggle"))},[e.createVNode(U._sfc_main,{name:"grid"}),e.createTextVNode(e.toDisplayString(t.messages.thumbnails),1)],10,qa)):e.createCommentVNode("",!0)],8,Aa)):t.showThumbnails!==!1?(e.openBlock(),e.createElementBlock("button",{key:2,class:e.normalizeClass(["mrp-nav",{"mrp-active":t.thumbsVisible}]),type:"button","aria-pressed":t.thumbsVisible,onClick:p[3]||(p[3]=f=>o("thumbs-toggle"))},[e.createVNode(U._sfc_main,{name:"grid"}),e.createTextVNode(e.toDisplayString(t.messages.thumbnails),1)],10,Ka)):e.createCommentVNode("",!0),e.renderSlot(h.$slots,"navigation",{},void 0,!0),t.showZoom!==!1?(e.openBlock(),e.createElementBlock("div",{key:3,class:"mrp-zoom-tools",role:"group","aria-label":t.messages.zoom??"缩放工具"},[e.createElementVNode("button",{class:e.normalizeClass(["mrp-nav",{"mrp-active":t.zoomMode==="fit"}]),"aria-pressed":t.zoomMode==="fit",type:"button",onClick:p[4]||(p[4]=f=>o("zoom","fit"))},[e.createVNode(U._sfc_main,{name:"fit"}),e.createTextVNode(e.toDisplayString(t.messages.fitWidth),1)],10,Wa),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList([100,150],f=>e.createElementVNode("button",{key:f,class:e.normalizeClass(["mrp-nav",{"mrp-active":t.zoomMode==="raw"&&Math.round(t.zoom*100)===f}]),"aria-pressed":t.zoomMode==="raw"&&Math.round(t.zoom*100)===f,type:"button",onClick:E=>o("zoom",f)},e.toDisplayString(f)+"%",11,Ha)),64))],8,ja)):e.createCommentVNode("",!0),t.showImport||t.showExport||t.showPrint||t.showPdfWindow?(e.openBlock(),e.createElementBlock("div",{key:4,class:"mrp-output-tools",role:"group","aria-label":t.messages.settingsExport??"导出与打印"},[t.showImport?(e.openBlock(),e.createElementBlock("button",{key:0,class:"mrp-nav mrp-import-excel",type:"button",disabled:t.busy,onClick:p[5]||(p[5]=f=>o("import-excel"))},[e.createVNode(U._sfc_main,{name:"upload"}),e.createTextVNode(e.toDisplayString(t.messages.importExcel??"导入 Excel 模板"),1)],8,Ga)):e.createCommentVNode("",!0),t.showExport?(e.openBlock(),e.createBlock(Ba,{key:1,messages:t.messages,formats:t.exportFormats,busy:t.busy,onExport:p[6]||(p[6]=f=>o("export",f))},null,8,["messages","formats","busy"])):e.createCommentVNode("",!0),t.showPrint?(e.openBlock(),e.createElementBlock("button",{key:2,class:"mrp-nav",type:"button",disabled:t.busy,onClick:p[7]||(p[7]=f=>o("print"))},[e.createVNode(U._sfc_main,{name:"print"}),e.createTextVNode(e.toDisplayString(t.messages.print),1)],8,Ja)):e.createCommentVNode("",!0),t.showPdfWindow?(e.openBlock(),e.createElementBlock("button",{key:3,class:"mrp-nav",type:"button",disabled:t.busy,onClick:p[8]||(p[8]=f=>o("pdf-window"))},[e.createVNode(U._sfc_main,{name:"external"}),e.createTextVNode(e.toDisplayString(t.messages.pdfWindow),1)],8,Za)):e.createCommentVNode("",!0)],8,Ua)):e.createCommentVNode("",!0),t.showSettings?(e.openBlock(),e.createElementBlock("button",{key:5,class:e.normalizeClass(["mrp-nav mrp-settings-toggle",{"mrp-active":t.settingsOpen}]),type:"button","aria-label":t.messages.settings??"设置","aria-haspopup":"dialog","aria-expanded":!!t.settingsOpen,onClick:p[9]||(p[9]=f=>o("settings-toggle"))},[e.createVNode(U._sfc_main,{name:"settings"}),e.createTextVNode(e.toDisplayString(t.messages.settings??"设置"),1)],10,Ya)):e.createCommentVNode("",!0),t.showSearch!==!1&&t.search.visible?(e.openBlock(),e.createElementBlock("div",{key:6,class:"mrp-search-panel",role:"search","aria-label":t.messages.search??"内容搜索"},[e.createElementVNode("div",{class:e.normalizeClass(["mrp-search",{"mrp-search-no-results":t.search.query&&!t.search.searching&&!t.search.matchCount}])},[e.createVNode(U._sfc_main,{name:"search"}),e.createElementVNode("input",{ref_key:"searchInputRef",ref:s,class:"mrp-search-input",type:"text",autocomplete:"off",spellcheck:"false",placeholder:t.messages.searchPlaceholder,"aria-label":t.messages.search??t.messages.searchPlaceholder,value:t.search.query,onInput:p[10]||(p[10]=f=>o("search-input",f.target.value)),onKeydown:p[11]||(p[11]=(...f)=>e.unref(l).onKeydown&&e.unref(l).onKeydown(...f))},null,40,Qa),t.search.query?(e.openBlock(),e.createElementBlock("button",{key:0,class:"mrp-nav mrp-search-clear mrp-icon-button",type:"button","aria-label":t.messages.clearSearch??"清除搜索",onClick:m},[e.createVNode(U._sfc_main,{name:"close",size:13})],8,_a)):e.createCommentVNode("",!0),t.search.query?(e.openBlock(),e.createElementBlock("span",eo,e.toDisplayString(t.search.searching?t.messages.searching??"搜索中…":u()),1)):e.createCommentVNode("",!0),e.createElementVNode("button",{class:"mrp-nav mrp-icon-button",type:"button",disabled:t.search.matchCount===0||t.search.searching,"aria-label":t.messages.prevSearchMatch??"上一个匹配",onClick:p[12]||(p[12]=f=>o("search-nav",-1))},[e.createVNode(U._sfc_main,{name:"chevron-up",size:14})],8,to),e.createElementVNode("button",{class:"mrp-nav mrp-icon-button",type:"button",disabled:t.search.matchCount===0||t.search.searching,"aria-label":t.messages.nextSearchMatch??"下一个匹配",onClick:p[13]||(p[13]=f=>o("search-nav",1))},[e.createVNode(U._sfc_main,{name:"chevron-down",size:14})],8,no),e.createElementVNode("button",{class:"mrp-nav mrp-search-close mrp-icon-button",type:"button","aria-label":t.messages.closeSearch??"关闭搜索",onClick:p[14]||(p[14]=(...f)=>e.unref(l).close&&e.unref(l).close(...f))},[e.createVNode(U._sfc_main,{name:"close",size:14})],8,ao)],2),e.createElementVNode("span",oo,e.toDisplayString(t.search.query&&!t.search.searching&&!t.search.matchCount?t.messages.searchNoMatches??"没有匹配内容":t.messages.searchHint??"Enter 下一个 · Shift+Enter 上一个"),1)],8,Xa)):e.createCommentVNode("",!0)],8,Oa))}}),gn=U._export_sfc(ro,[["__scopeId","data-v-5f4b04d8"]]),lo=["aria-label","aria-busy"],so={class:"mrp-calculation-heading"},io={class:"mrp-calculation-controls"},co=["aria-label","value","disabled"],uo=["value"],fo={class:"mrp-calculation-precision"},mo=["aria-label","value","disabled"],po={key:0,class:"mrp-calculation-expression"},go=["aria-label","value","disabled"],vo={class:"mrp-calculation-actions"},ho={key:1,class:"mrp-calculation-diagnostic",role:"alert"},yo={key:2,class:"mrp-calculation-result",role:"status","aria-live":"polite"},bo={key:0},wo={key:3,class:"mrp-calculation-empty"},xo={class:"mrp-calculation-local"},ko=e.defineComponent({__name:"ReportCalculationPanel",props:{state:{},messages:{}},setup(t){const n=t,a=`mrp-calculation-expression-hint-${e.getCurrentInstance()?.uid??0}`,r=e.computed(()=>[["sum",n.messages.calculationSum],["average",n.messages.calculationAverage],["min",n.messages.calculationMin],["max",n.messages.calculationMax],["count",n.messages.calculationCount],["median",n.messages.calculationMedian],["expression",n.messages.calculationCustom]]),o=e.computed(()=>{const l=n.state.error.value;if(!l)return"";const s=n.messages;return{selection:s.calculationErrorSelection,limit:s.calculationErrorLimit,expression:s.calculationErrorExpression,division:s.calculationErrorDivision,overflow:s.calculationErrorOverflow,precision:s.calculationErrorPrecision}[l]});return(l,s)=>(e.openBlock(),e.createElementBlock("section",{class:"mrp-calculation","aria-label":t.messages.calculationTitle,"aria-busy":t.state.busy.value},[e.createElementVNode("header",so,[s[5]||(s[5]=e.createElementVNode("span",{class:"mrp-calculation-symbol","aria-hidden":"true"},"∑",-1)),e.createElementVNode("div",null,[e.createElementVNode("strong",null,e.toDisplayString(t.messages.calculationTitle),1),e.createElementVNode("p",null,e.toDisplayString(t.messages.calculationHint),1)])]),e.createElementVNode("div",io,[e.createElementVNode("label",null,[e.createElementVNode("span",null,e.toDisplayString(t.messages.calculationFormula),1),e.createElementVNode("select",{"aria-label":t.messages.calculationFormula,value:t.state.operation.value,onChange:s[0]||(s[0]=i=>t.state.setOperation(i.target.value)),disabled:t.state.busy.value},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,([i,u])=>(e.openBlock(),e.createElementBlock("option",{key:i,value:i},e.toDisplayString(u),9,uo))),128))],40,co)]),e.createElementVNode("label",fo,[e.createElementVNode("span",null,e.toDisplayString(t.messages.calculationPrecision),1),e.createElementVNode("input",{"aria-label":t.messages.calculationPrecision,value:t.state.precision.value,onChange:s[1]||(s[1]=i=>t.state.setPrecision(Number(i.target.value))),type:"number",min:"0",max:"12",step:"1",disabled:t.state.busy.value},null,40,mo)])]),t.state.operation.value==="expression"?(e.openBlock(),e.createElementBlock("label",po,[e.createElementVNode("span",null,e.toDisplayString(t.messages.calculationExpression),1),e.createElementVNode("input",{"aria-label":t.messages.calculationExpression,"aria-describedby":a,value:t.state.expression.value,onInput:s[2]||(s[2]=i=>t.state.setExpression(i.target.value)),type:"text",maxlength:"256",spellcheck:"false",disabled:t.state.busy.value,placeholder:"SUM / COUNT"},null,40,go),e.createElementVNode("small",{id:a},e.toDisplayString(t.messages.calculationExpressionHint),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",vo,[t.state.busy.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",onClick:s[3]||(s[3]=i=>t.state.cancel())},e.toDisplayString(t.messages.calculationCancel),1)):(e.openBlock(),e.createElementBlock("button",{key:1,class:"mrp-calculation-run",type:"button",onClick:s[4]||(s[4]=i=>t.state.run())},e.toDisplayString(t.messages.calculationRun),1))]),o.value?(e.openBlock(),e.createElementBlock("p",ho,e.toDisplayString(o.value),1)):t.state.result.value?(e.openBlock(),e.createElementBlock("div",yo,[e.createElementVNode("span",null,e.toDisplayString(t.messages.calculationResult),1),e.createElementVNode("output",null,e.toDisplayString(t.state.result.value.formatted),1),e.createElementVNode("small",null,[e.createElementVNode("span",null,e.toDisplayString(t.messages.calculationIncluded)+" "+e.toDisplayString(t.state.result.value.numericCells),1),e.createElementVNode("span",null,e.toDisplayString(t.messages.calculationExcluded)+" "+e.toDisplayString(t.state.result.value.excludedCells),1)]),t.state.result.value.numericCells===0?(e.openBlock(),e.createElementBlock("p",bo,e.toDisplayString(t.messages.calculationEmpty),1)):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("p",wo,e.toDisplayString(t.messages.calculationNoSelection),1)),e.createElementVNode("p",xo,e.toDisplayString(t.messages.calculationLocal),1)],8,lo))}}),Eo=U._export_sfc(ko,[["__scopeId","data-v-ee359251"]]);function Co(t){const n=e.ref("sum"),a=e.ref("SUM / COUNT"),r=e.ref(2),o=e.ref(!1),l=e.shallowRef(null),s=e.ref(null);let i=null,u=0;function m(){u++,i?.abort(),i=null,o.value=!1}function h(){m(),l.value=null,s.value=null}async function p(){if(h(),!t.enabled())return;const g=t.plan.value,c=t.selection.value;if(!g||!c){s.value="selection";return}const S=++u,v=new AbortController;i=v,o.value=!0;try{const C=await L.calculateReportSelection(g,c,{operation:n.value,expression:a.value,precision:r.value,signal:v.signal});S===u&&t.plan.value===g&&t.selection.value===c&&t.enabled()&&(l.value=C)}catch(C){S===u&&!v.signal.aborted&&(s.value=C instanceof L.ReportCalculationError?C.code:"expression")}finally{S===u&&(o.value=!1,i=null)}}e.watch([t.plan,t.selection,()=>t.enabled(),n,a,r],h,{flush:"sync"}),e.onScopeDispose(h);function f(g){n.value=g}function E(g){a.value=g}function y(g){r.value=g}return{operation:n,expression:a,precision:r,busy:o,result:l,error:s,run:p,cancel:m,clear:h,setOperation:f,setExpression:E,setPrecision:y}}const So=["aria-label"],No={class:"mrp-settings-header"},Bo=["aria-label"],Io=["aria-label"],$o=["id","aria-selected","aria-controls","tabindex","onClick","onKeydown"],Vo={class:"mrp-settings-content"},Po=["id","aria-labelledby","hidden"],Ro={key:0},Do={class:"mrp-settings-option"},Mo=["checked","disabled"],To={class:"mrp-settings-option"},zo=["value","disabled"],Oo=["id","aria-labelledby","hidden"],Fo={key:0},Ao=["checked","disabled","onChange"],Lo={key:0,class:"mrp-settings-note"},qo={key:1,class:"mrp-settings-note"},Ko=["id","aria-labelledby","hidden"],jo={class:"mrp-settings-intro"},Wo={class:"mrp-settings-option mrp-settings-feature"},Ho=["id"],Uo=["aria-label","aria-describedby","checked","disabled"],Go=["disabled"],Jo=e.defineComponent({__name:"ReportSettings",props:{available:{},enabled:{},messages:{},persistedEditing:{type:Boolean},busy:{type:Boolean},interaction:{},section:{}},emits:["change","reset","close","interaction","section"],setup(t,{emit:n}){const a=t,r=n,o=e.ref(null),l=e.computed(()=>a.section??"general"),s="mrp-settings-"+e.getCurrentInstance()?.uid,i=e.computed(()=>[{key:"general",label:a.messages.settingsGeneral??"常规"},{key:"tools",label:a.messages.settingsTools??"工具"},{key:"advanced",label:a.messages.settingsAdvanced??"高级"}]);function u(g,c){const v={ArrowRight:(c+1)%3,ArrowLeft:(c+2)%3,Home:0,End:2}[g.key];v!==void 0&&(g.preventDefault(),r("section",i.value[v].key),o.value?.querySelector("#"+s+"-tab-"+i.value[v].key)?.focus())}const m=e.ref(null);let h=null;const p=e.computed(()=>[{label:a.messages.settingsDisplay,tools:[["search",a.messages.search],["thumbnails",a.messages.thumbnails],["zoom",a.messages.zoom]]},{label:a.messages.settingsExport,tools:[["html",a.messages.exportHtml],["pdf",a.messages.exportPdf],["xlsx",a.messages.exportExcel],["png",a.messages.exportImage],["word",a.messages.exportWord],["print",a.messages.print],["pdfWindow",a.messages.pdfWindow]]},{label:a.messages.settingsData,tools:[["editing",a.messages.editCell],["import",a.messages.importExcel]]}].map(g=>({...g,tools:g.tools.map(([c,S])=>({key:c,label:S}))})));function f(g,c){const S=g.target,v=S.checked;S.checked=a.enabled[c],r("change",c,v)}function E(g){return!o.value||g.defaultPrevented?!1:g.target instanceof Node&&o.value.contains(g.target)?!0:g.target instanceof Element&&g.target.closest('[role="dialog"],dialog[open]')?!1:!Array.from(document.querySelectorAll('[aria-modal="true"],dialog[open]')).some(c=>c!==o.value&&!o.value.contains(c))}function y(g){if(!E(g))return;if(g.key==="Escape"){g.preventDefault(),g.stopPropagation(),r("close");return}if(g.key!=="Tab")return;const c=Array.from(o.value?.querySelectorAll("a[href],button:not(:disabled),input:not(:disabled),textarea:not(:disabled),select:not(:disabled),[tabindex='0']")??[]).filter(V=>!V.closest("[hidden]")&&V.tabIndex!==-1),S=c?.[0],v=c?.[c.length-1];(!o.value?.contains(document.activeElement)||g.shiftKey&&document.activeElement===S||!g.shiftKey&&document.activeElement===v)&&(g.preventDefault(),g.stopPropagation(),(g.shiftKey?v:S)?.focus())}return e.onMounted(()=>{const g=o.value?.closest(".mach-report-preview")?.querySelector(".mrp-settings-toggle"),c=document.activeElement;h=c instanceof HTMLElement&&c!==document.body&&!o.value?.contains(c)?c:g??null,m.value?.focus(),document.addEventListener("keydown",y)}),e.onUnmounted(()=>{document.removeEventListener("keydown",y),h?.isConnected&&h.focus()}),(g,c)=>(e.openBlock(),e.createElementBlock("div",{class:"mrp-settings-backdrop",onClick:c[5]||(c[5]=e.withModifiers(S=>g.$emit("close"),["self"]))},[e.createElementVNode("section",{ref_key:"panel",ref:o,class:"mrp-settings-panel",role:"dialog","aria-modal":"true","aria-label":t.messages.settings},[e.createElementVNode("header",No,[e.createElementVNode("div",null,[c[6]||(c[6]=e.createElementVNode("span",{class:"mrp-settings-eyebrow"},"MACH REPORT",-1)),e.createElementVNode("strong",null,e.toDisplayString(t.messages.settings),1),e.createElementVNode("p",null,e.toDisplayString(t.messages.settingsLocal),1)]),e.createElementVNode("button",{ref_key:"closeButton",ref:m,class:"mrp-settings-close",type:"button","aria-label":t.messages.settingsClose,onClick:c[0]||(c[0]=S=>g.$emit("close"))},[...c[7]||(c[7]=[e.createElementVNode("svg",{width:"16",height:"16",viewBox:"0 0 20 20",fill:"none","aria-hidden":"true"},[e.createElementVNode("path",{d:"m5 5 10 10M15 5 5 15",stroke:"currentColor","stroke-width":"1.6","stroke-linecap":"round"})],-1)])],8,Bo)]),e.createElementVNode("div",{class:"mrp-settings-tabs",role:"tablist","aria-label":t.messages.settings},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,(S,v)=>(e.openBlock(),e.createElementBlock("button",{id:s+"-tab-"+S.key,key:S.key,type:"button",role:"tab","aria-selected":l.value===S.key,"aria-controls":s+"-panel-"+S.key,tabindex:l.value===S.key?0:-1,onClick:C=>g.$emit("section",S.key),onKeydown:C=>u(C,v)},e.toDisplayString(S.label),41,$o))),128))],8,Io),e.createElementVNode("div",Vo,[e.createElementVNode("section",{id:s+"-panel-general",role:"tabpanel","aria-labelledby":s+"-tab-general",hidden:l.value!=="general"},[e.renderSlot(g.$slots,"default",{},void 0,!0),t.interaction?(e.openBlock(),e.createElementBlock("fieldset",Ro,[e.createElementVNode("legend",null,e.toDisplayString(t.messages.settingsPanes),1),e.createElementVNode("label",Do,[e.createElementVNode("span",null,e.toDisplayString(t.messages.freezeHeaders),1),e.createElementVNode("input",{type:"checkbox",checked:t.interaction.freezeHeaders,disabled:t.busy,onChange:c[1]||(c[1]=S=>g.$emit("interaction",{freezeHeaders:S.target.checked}))},null,40,Mo)]),e.createElementVNode("label",To,[e.createElementVNode("span",null,e.toDisplayString(t.messages.frozenColumns),1),e.createElementVNode("input",{class:"mrp-frozen-count",type:"number",min:"0",max:"20",value:t.interaction.frozenColumns??0,disabled:t.busy,onChange:c[2]||(c[2]=S=>g.$emit("interaction",{frozenColumns:Math.max(0,Math.min(20,Number(S.target.value)||0))}))},null,40,zo)])])):e.createCommentVNode("",!0)],8,Po),e.createElementVNode("section",{id:s+"-panel-tools",role:"tabpanel","aria-labelledby":s+"-tab-tools",hidden:l.value!=="tools"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,S=>(e.openBlock(),e.createElementBlock("fieldset",{key:S.label},[e.createElementVNode("legend",null,e.toDisplayString(S.label),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(S.tools,v=>(e.openBlock(),e.createElementBlock("label",{key:v.key,class:e.normalizeClass(["mrp-settings-option",{"mrp-settings-unavailable":!t.available[v.key]}])},[e.createElementVNode("span",null,[e.createTextVNode(e.toDisplayString(v.label),1),t.available[v.key]?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("small",Fo,e.toDisplayString(t.messages.settingsUnavailable),1))]),e.createElementVNode("input",{type:"checkbox",checked:t.enabled[v.key],disabled:t.busy||!t.available[v.key],onChange:C=>f(C,v.key)},null,40,Ao)],2))),128))]))),128)),t.available.editing?(e.openBlock(),e.createElementBlock("p",Lo,e.toDisplayString(t.persistedEditing?t.messages.editingSaved:t.messages.editingLocal),1)):e.createCommentVNode("",!0),t.available.import?(e.openBlock(),e.createElementBlock("p",qo,e.toDisplayString(t.messages.importLocal),1)):e.createCommentVNode("",!0)],8,Oo),e.createElementVNode("section",{id:s+"-panel-advanced",role:"tabpanel","aria-labelledby":s+"-tab-advanced",hidden:l.value!=="advanced"},[e.createElementVNode("p",jo,e.toDisplayString(t.messages.settingsAdvancedDescription),1),e.createElementVNode("label",Wo,[e.createElementVNode("span",null,[e.createTextVNode(e.toDisplayString(t.messages.settingsCalculations),1),e.createElementVNode("small",{id:s+"-calculation-description"},e.toDisplayString(t.messages.settingsCalculationsDescription),9,Ho)]),e.createElementVNode("input",{type:"checkbox","aria-label":t.messages.settingsCalculations,"aria-describedby":s+"-calculation-description",checked:t.interaction?.calculations===!0,disabled:t.busy,onChange:c[3]||(c[3]=S=>g.$emit("interaction",{calculations:S.target.checked}))},null,40,Uo)]),t.interaction?.calculations?e.renderSlot(g.$slots,"advanced",{},void 0,!0,0):e.createCommentVNode("",!0)],8,Ko)]),e.createElementVNode("footer",null,[e.createElementVNode("button",{type:"button",disabled:t.busy,onClick:c[4]||(c[4]=S=>g.$emit("reset"))},e.toDisplayString(t.messages.settingsReset),9,Go),e.createElementVNode("span",null,e.toDisplayString(t.messages.settingsLocal),1)])],8,So)]))}}),Zo=U._export_sfc(Jo,[["__scopeId","data-v-36723612"]]),Yo={class:"mrp-empty",role:"status"},Xo={key:0},Qo=e.defineComponent({__name:"ReportEmpty",props:{title:{},description:{}},setup(t){return(n,a)=>(e.openBlock(),e.createElementBlock("div",Yo,[a[0]||(a[0]=e.createStaticVNode('<svg class="mrp-empty-art" viewBox="0 0 160 112" fill="none" aria-hidden="true" data-v-3e16b87e><ellipse cx="80" cy="100" rx="54" ry="7" fill="currentColor" opacity=".05" data-v-3e16b87e></ellipse><rect x="34" y="15" width="92" height="78" rx="9" fill="currentColor" opacity=".10" data-v-3e16b87e></rect><rect x="42" y="9" width="76" height="78" rx="7" fill="var(--mrp-toolbar-bg, #fff)" stroke="currentColor" stroke-opacity=".2" stroke-width="1.5" data-v-3e16b87e></rect><path d="M55 27H105M55 42H105M55 57H85M55 72H76M71 27V72M89 27V57" stroke="currentColor" stroke-opacity=".4" stroke-width="1.5" stroke-linecap="round" data-v-3e16b87e></path><circle cx="112" cy="76" r="16" fill="var(--mrp-toolbar-bg, #fff)" stroke="currentColor" stroke-opacity=".35" stroke-width="2" data-v-3e16b87e></circle><path d="M124 88L137 101M106 76H118" stroke="currentColor" stroke-opacity=".45" stroke-width="3" stroke-linecap="round" data-v-3e16b87e></path><circle cx="27" cy="38" r="3" fill="currentColor" opacity=".12" data-v-3e16b87e></circle><circle cx="132" cy="24" r="2" fill="currentColor" opacity=".2" data-v-3e16b87e></circle></svg>',1)),e.createElementVNode("strong",null,e.toDisplayString(t.title),1),t.description?(e.openBlock(),e.createElementBlock("p",Xo,e.toDisplayString(t.description),1)):e.createCommentVNode("",!0)]))}}),tn=U._export_sfc(Qo,[["__scopeId","data-v-3e16b87e"]]),_o=["aria-label"],er=e.defineComponent({__name:"ReportDiscardDialog",props:{messages:{}},emits:["answer"],setup(t,{emit:n}){const a=n,r=e.ref(null),o=e.ref(null);let l=null;function s(i){i.key==="Escape"&&(i.preventDefault(),a("answer",!1)),i.key==="Tab"&&(i.preventDefault(),document.activeElement===r.value?o.value?.focus():r.value?.focus())}return e.onMounted(()=>{l=document.activeElement instanceof HTMLElement?document.activeElement:null,r.value?.focus()}),e.onUnmounted(()=>{l?.isConnected&&l.focus()}),(i,u)=>(e.openBlock(),e.createElementBlock("div",{class:"mrp-discard-backdrop",onKeydown:s,onClick:u[2]||(u[2]=e.withModifiers(m=>a("answer",!1),["self"]))},[e.createElementVNode("section",{class:"mrp-discard-dialog",role:"alertdialog","aria-modal":"true","aria-label":t.messages.discardTitle},[e.createElementVNode("strong",null,e.toDisplayString(t.messages.discardTitle),1),e.createElementVNode("p",null,e.toDisplayString(t.messages.discardDescription),1),e.createElementVNode("footer",null,[e.createElementVNode("button",{ref_key:"keep",ref:r,type:"button",onClick:u[0]||(u[0]=m=>a("answer",!1))},e.toDisplayString(t.messages.discardKeep),513),e.createElementVNode("button",{ref_key:"discard",ref:o,type:"button",onClick:u[1]||(u[1]=m=>a("answer",!0))},e.toDisplayString(t.messages.discardProceed),513)])],8,_o)],32))}}),tr=U._export_sfc(er,[["__scopeId","data-v-f7590294"]]),nr={key:0,class:"mrp-task-status",role:"status","aria-live":"polite"},ar={key:0},or=["value","max","aria-label"],rr=e.defineComponent({__name:"ReportTaskStatus",props:{task:{},messages:{}},emits:["cancel"],setup(t){const n=t,a=e.computed(()=>({query:n.messages.taskQuery,validate:n.messages.taskValidate,layout:n.messages.taskLayout,assets:n.messages.taskAssets,import:n.messages.importing,encode:n.messages.taskEncode,download:n.messages.taskDownload,print:n.messages.taskPrint})),r=e.computed(()=>n.task?.total===void 0?"":`${n.task.completed??0} / ${n.task.total}`);return(o,l)=>t.task&&(t.task.status==="running"||t.task.status==="cancelled")?(e.openBlock(),e.createElementBlock("div",nr,[e.createElementVNode("span",null,[e.createTextVNode(e.toDisplayString(t.task.status==="cancelled"?t.messages.taskCancelled:a.value[t.task.stage])+" ",1),t.task.status==="running"?(e.openBlock(),e.createElementBlock("small",ar,e.toDisplayString(r.value),1)):e.createCommentVNode("",!0)]),t.task.status==="running"&&t.task.total!==void 0?(e.openBlock(),e.createElementBlock("progress",{key:0,value:t.task.completed??0,max:t.task.total,"aria-label":a.value[t.task.stage]},null,8,or)):e.createCommentVNode("",!0),t.task.status==="running"&&t.task.cancellable?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",onClick:l[0]||(l[0]=s=>o.$emit("cancel"))},e.toDisplayString(t.messages.taskCancel),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)}}),lr=U._export_sfc(rr,[["__scopeId","data-v-657ac599"]]),sr={key:0,class:"mrp-diagnostics"},ir=["aria-label","placeholder"],cr={key:0},ur=["onClick"],dr={key:0},fr=e.defineComponent({__name:"ReportDiagnostics",props:{entries:{},messages:{}},emits:["locate"],setup(t){const n=t,a=e.ref(""),r=e.computed(()=>({"unsupported-style":n.messages.diagnosticUnsupportedStyle,"missing-image":n.messages.diagnosticMissingImage,"unsupported-component":n.messages.diagnosticUnsupported,"unsupported-image-format":n.messages.diagnosticImageFormat,"rich-text-flattened":n.messages.diagnosticRichText,"nested-components-omitted":n.messages.diagnosticNested,"async-image-required":n.messages.diagnosticImageAsync,"image-decode-failed":n.messages.diagnosticImageDecode,"asset-render-failed":n.messages.diagnosticAssetFailed,"asset-budget-exceeded":n.messages.diagnosticAssetBudget})),o=e.computed(()=>{const i=a.value.trim().toLocaleLowerCase();return i?n.entries.filter(u=>`${u.code} ${u.message} ${r.value[u.code]??""} ${u.path??""} ${s(u)} ${u.format??""}`.toLocaleLowerCase().includes(i)):n.entries}),l=e.computed(()=>o.value.slice(0,100));function s(i){return i.pageIndex===void 0?i.path??"":(n.messages.diagnosticsLocation??"").replace("{page}",String(i.pageIndex+1)).replace("{component}",String((i.componentIndex??0)+1))}return(i,u)=>t.entries.length?(e.openBlock(),e.createElementBlock("details",sr,[e.createElementVNode("summary",null,[e.createTextVNode(e.toDisplayString(t.messages.diagnosticsTitle)+" ",1),e.createElementVNode("span",null,e.toDisplayString(t.entries.length),1)]),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":u[0]||(u[0]=m=>a.value=m),type:"search","aria-label":t.messages.diagnosticsSearch,placeholder:t.messages.diagnosticsSearch},null,8,ir),[[e.vModelText,a.value]]),e.createElementVNode("ol",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(m,h)=>(e.openBlock(),e.createElementBlock("li",{key:h},[e.createElementVNode("div",null,[e.createElementVNode("b",null,e.toDisplayString(m.format?.toUpperCase()??m.severity)+" · "+e.toDisplayString(m.code),1),e.createElementVNode("p",null,e.toDisplayString(r.value[m.code]??m.message),1),r.value[m.code]?(e.openBlock(),e.createElementBlock("details",cr,[e.createElementVNode("summary",null,e.toDisplayString(t.messages.diagnosticsDetails),1),e.createTextVNode(e.toDisplayString(m.message),1)])):e.createCommentVNode("",!0),e.createElementVNode("small",null,e.toDisplayString(s(m)),1)]),m.pageIndex!==void 0?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",onClick:p=>i.$emit("locate",m)},e.toDisplayString(t.messages.diagnosticsLocate),9,ur)):e.createCommentVNode("",!0)]))),128))]),o.value.length>l.value.length?(e.openBlock(),e.createElementBlock("small",dr,e.toDisplayString((t.messages.diagnosticsMore??"").replace("{count}",String(o.value.length))),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)}}),mr=U._export_sfc(fr,[["__scopeId","data-v-3b7804ce"]]),nn=new Map,Re=new Map,pr=15e3;function Ct(t,n){return Object.assign(new Error(t),{cause:n})}function Le(t,n){return`PDF 字体 ${JSON.stringify(t)}:${n}。请部署支持报表文字的字体文件,并将 pdfFontUrl 配置为可访问的字体 URL;西文报表可设为空串`}function Qe(t){if(t?.reason instanceof Error&&t.reason.name==="AbortError")return t.reason;const n=Ct("PDF 字体检查已取消",t?.reason);return n.name="AbortError",n}async function gr(t,n){let a=!1;const r=setTimeout(()=>{a=!0,n.abort()},pr);try{const o=await fetch(t,{method:"HEAD",signal:n.signal});if(n.signal.aborted)throw Qe(n.signal);if(o.status===405||o.status===501||o.type==="opaque")return{status:"unverified",fontUrl:t,message:`PDF 字体 ${JSON.stringify(t)} 无法通过 HEAD 检查验证;仍可尝试导出,届时会加载并校验字体`};if(!o.ok){const s=new Error(`字体请求返回 HTTP ${o.status}`);return{status:"error",fontUrl:t,message:Le(t,s.message),cause:s}}const l=o.headers.get("content-type")??"";if(/text\/html|application\/xhtml\+xml/i.test(l)){const s=new Error("字体 URL 返回 HTML 页面(可能是 SPA 路由回退),不是字体文件");return{status:"error",fontUrl:t,message:Le(t,s.message),cause:s}}if(/^text\//i.test(l)||/(?:\/|\+)json(?:\s*;|$)/i.test(l)){const s=new Error(`字体 URL 返回 ${l} 文本响应,不是字体文件`);return{status:"error",fontUrl:t,message:Le(t,s.message),cause:s}}return{status:"available",fontUrl:t,message:"PDF 字体资源可达;文字覆盖范围将在实际导出时校验"}}catch(o){if(n.signal.aborted&&!a)throw Qe(n.signal);return{status:"error",fontUrl:t,message:Le(t,a?"字体检查超时,请检查网络或字体服务":"字体检查失败,请检查网络、字体服务或跨域访问配置"),cause:o}}finally{clearTimeout(r)}}function vr(t,n){if(n?.aborted)return Promise.reject(Qe(n));if(!t)return Promise.resolve({status:"disabled",fontUrl:t,message:"已停用自定义 PDF 字体;内置字体用于西文,其他文字会在导出时校验"});const a=nn.get(t);if(a)return Promise.resolve(a);let r=Re.get(t);if(!r){const l=new AbortController;r={controller:l,promise:gr(t,l),subscribers:0};const s=r;Re.set(t,s),s.promise=s.promise.then(i=>(!l.signal.aborted&&i.status==="available"&&nn.set(t,i),i)).finally(()=>{Re.get(t)===s&&Re.delete(t)})}const o=r;return o.subscribers++,new Promise((l,s)=>{let i=!1;const u=()=>i?!1:(i=!0,o.subscribers--,n?.removeEventListener("abort",m),!0),m=()=>{u()&&(o.subscribers===0&&(Re.get(t)===o&&Re.delete(t),o.controller.abort()),s(Qe(n)))};n?.addEventListener("abort",m,{once:!0}),o.promise.then(h=>{u()&&l(h)},h=>{u()&&s(h)}),n?.aborted&&m()})}function vn(t={fontUrl:"/simhei.ttf"}){let n=null;const a=async(r,o,l={})=>{se.assertOutputActive(l.signal),n||(n=await import("@agile-team/mach-report/pdf")),se.assertOutputActive(l.signal);let s=null;if(t.fontUrl)try{if(s=await se.waitForOutput(n.loadFontWithCache(t.fontUrl,{strict:!0,signal:l.signal}),l.signal),!s?.byteLength)throw new Error("字体文件为空或加载失败")}catch(f){const E=f instanceof Error?f.message:String(f);throw Ct(Le(t.fontUrl,E),f)}let i;try{se.assertOutputActive(l.signal),i=await n.renderPlanToPdf(r,{...l,...s?{customFontBytes:s}:{}})}catch(f){if(!s)throw f;const E=f instanceof Error?f.message:String(f);throw Ct(`PDF 生成失败:${E}。当前字体 URL 为 ${JSON.stringify(t.fontUrl)};请确认该文件是有效字体,或重新配置 pdfFontUrl`,f)}se.assertOutputActive(l.signal),i.diagnostics?.forEach(f=>{try{l.onDiagnostic?.(f)}catch{}});const{bytes:u,unsupportedTextCount:m,pageErrors:h,fidelityWarnings:p}=i;if(m>0)throw new Error(`PDF 中有 ${m} 行文字无法编码;请部署支持所用文字的字体并配置 pdfFontUrl`);if(h.length>0)throw new Error(`PDF 有 ${h.length} 页渲染失败:${h[0]}`);return p.length>0&&o?.(`PDF 有 ${p.length} 处版式降级:${p.slice(0,2).join(";")}`),u};return a.checkFont=r=>vr(t.fontUrl,r),a}function hr(t){const n=e.shallowRef(Object.freeze({status:"unchecked",fontUrl:""}));let a=null,r=null,o=0,l=null;function s(){if(t.injectedExporter)return t.injectedExporter;const h=t.fontUrl();return(!r||a!==h)&&(a=h,r=vn({fontUrl:h})),r}function i(){o++,l?.abort(),l=null}async function u(){if(t.destroyed())throw new me.MachReportError("config","报表预览已卸载");i();const h=o,p=new AbortController;l=p;const f=t.fontUrl();n.value=Object.freeze({status:"checking",fontUrl:f});try{const E=s(),y=E.checkFont?await E.checkFont(p.signal):{status:"unverified",fontUrl:"",message:"自定义 PDF 导出器未提供字体预检查;字体由宿主确认"};return!t.destroyed()&&h===o&&!p.signal.aborted&&(n.value=Object.freeze({...y})),y}catch(E){if(p.signal.aborted)throw E;const y={status:"error",fontUrl:f,message:E instanceof Error?E.message:"PDF 字体检查失败",cause:E};return!t.destroyed()&&h===o&&(n.value=Object.freeze(y)),y}finally{l===p&&(l=null)}}function m(){u().catch(()=>{})}return e.watch([t.plan,e.computed(t.fontUrl),e.computed(t.enabled)],()=>{const h=n.value.fontUrl===t.fontUrl();h&&n.value.status==="available"||(i(),(!h||n.value.status==="checking")&&(n.value=Object.freeze({status:"unchecked",fontUrl:t.fontUrl()})),!t.destroyed()&&t.plan.value?.pages.length&&t.enabled()&&m())},{immediate:!0}),{pdfFont:n,getPdfExporter:s,checkPdfFont:u,retryPdfFont:m,cancelFontCheck:i}}function yr(t){const n=e.shallowRef(null),a=e.shallowRef(!1);let r=0,o=null;function l(u){const m=o;o=null,n.value=null,a.value=!1,m?.(u)}function s(){r++,l(!1)}async function i(u){if(s(),!t.enabled()||!t.pending())return!0;const m=r,h=[...t.snapshot?.()??[]];a.value=!0;const p=Object.freeze({reason:u,reportIds:Object.freeze([...t.reportIds()]),pendingLocalChanges:!0});try{const f=t.hook(),E=await new Promise(g=>{if(o=g,!f){n.value=p;return}Promise.resolve().then(()=>f(p)).then(c=>{m===r&&l(c===!0)},c=>{if(m===r){try{t.error(c)}catch{}l(!1)}})}),y=t.snapshot?.()??[];return m===r&&E===!0&&y.length===h.length&&h.every((g,c)=>Object.is(g,y[c]))}catch(f){if(m===r){try{t.error(f)}catch{}l(!1)}return!1}}return{request:n,pending:a,check:i,settle:l,cancel:s}}let br=0;function wr(t){const n=e.shallowRef(null),a=new Set;let r=null;function o(u){n.value=Object.freeze(u);try{t(n.value)}catch{}}function l(u,m,h){const p=`mr-task-${Date.now().toString(36)}-${++br}`;a.add(p),r=h,o({taskId:p,kind:u,stage:m,status:"running",cancellable:!0});function f(y,g,c){n.value?.taskId!==p||n.value.status!=="running"||o({...n.value,stage:y,completed:g,total:c})}function E(y="completed"){n.value?.taskId!==p||n.value.status!=="running"||(r=null,o({...n.value,status:y,cancellable:!1}))}return{taskId:p,update:f,finish:E}}function s(){if(n.value?.status!=="running")return;const u=r;r=null,o({...n.value,status:"cancelled",cancellable:!1}),u?.()}function i(u,m){n.value?.taskId!==u.taskId&&(u.status!=="running"||a.has(u.taskId))||(a.add(u.taskId),a.size>100&&a.delete(a.values().next().value),r=u.status==="running"?m:null,o({...u}))}return{state:n,start:l,cancel:s,receive:i}}function xr(t){const n=e.shallowRef(Object.freeze([])),a=new Set;let r=0;function o(){r++,n.value=Object.freeze([]),a.clear()}function l(u){const m=r,h=[];for(const p of u){const f=JSON.stringify([p.code,p.format,p.pageIndex,p.componentIndex,p.componentPath,p.path,p.message]);if(a.has(f))continue;a.add(f);const E=Object.freeze({...p,...p.componentPath?{componentPath:Object.freeze([...p.componentPath])}:{}});h.push(E)}h.length&&(n.value=Object.freeze([...n.value,...h]));for(const p of h){if(m!==r)break;try{t(p)}catch{}}}function s(u){l([u])}function i(u,m){const h=L.inspectOutputCapabilities(u,m);return l(h),h}return{entries:n,reset:o,add:s,addMany:l,inspect:i}}const kr={class:"mrp-edit-bar"},Er=["disabled"],Cr=["disabled"],Sr={class:"mrp-changes"},Nr=["aria-label"],Br={key:0},Ir={key:1},$r=["onClick"],Vr=["title"],Pr=["title"],Rr=["disabled"],Dr={key:0,role:"status"},Mr={key:1,role:"status"},Tr={key:2,class:"mrp-conflicts",open:""},zr=e.defineComponent({__name:"ReportEditBar",props:{differences:{},conflicts:{},messages:{},saving:{type:Boolean},canUndo:{type:Boolean},canRedo:{type:Boolean},busy:{type:Boolean},persisted:{type:Boolean}},emits:["undo","redo","restore","locate"],setup(t){function n(a){return a.source?`${a.source.rowKey} · ${a.source.field}`:`${a.address.pageIndex+1} / ${a.address.rowIndex+1}:${a.address.columnIndex+1}`}return(a,r)=>(e.openBlock(),e.createElementBlock("div",kr,[e.createElementVNode("button",{type:"button",disabled:t.busy||t.saving||!t.canUndo,onClick:r[0]||(r[0]=o=>a.$emit("undo"))},e.toDisplayString(t.messages.undo),9,Er),e.createElementVNode("button",{type:"button",disabled:t.busy||t.saving||!t.canRedo,onClick:r[1]||(r[1]=o=>a.$emit("redo"))},e.toDisplayString(t.messages.redo),9,Cr),e.createElementVNode("details",Sr,[e.createElementVNode("summary",null,e.toDisplayString(t.messages.changes)+" · "+e.toDisplayString(t.messages.changesCount?.replace("{count}",String(t.differences.length))),1),e.createElementVNode("section",{"aria-label":t.messages.changes},[t.differences.length?(e.openBlock(),e.createElementBlock("ol",Ir,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.differences,(o,l)=>(e.openBlock(),e.createElementBlock("li",{key:l},[e.createElementVNode("button",{type:"button",onClick:s=>a.$emit("locate",o)},e.toDisplayString(n(o)),9,$r),e.createElementVNode("span",null,[e.createElementVNode("s",{title:t.messages.changesBefore},e.toDisplayString(o.previousText||"∅"),9,Vr),r[3]||(r[3]=e.createTextVNode(" → ",-1)),e.createElementVNode("strong",{title:t.messages.changesAfter},e.toDisplayString(o.text||"∅"),9,Pr)])]))),128))])):(e.openBlock(),e.createElementBlock("p",Br,e.toDisplayString(t.messages.changesEmpty),1))],8,Nr)]),e.createElementVNode("button",{type:"button",disabled:t.busy||t.saving||!t.differences.length,onClick:r[2]||(r[2]=o=>a.$emit("restore"))},e.toDisplayString(t.messages.restoreChanges),9,Rr),t.saving?(e.openBlock(),e.createElementBlock("span",Dr,e.toDisplayString(t.messages.saving),1)):t.differences.length&&!t.conflicts.length?(e.openBlock(),e.createElementBlock("span",Mr,e.toDisplayString(t.persisted?t.messages.editSaved:t.messages.editingLocal),1)):e.createCommentVNode("",!0),t.conflicts.length?(e.openBlock(),e.createElementBlock("details",Tr,[e.createElementVNode("summary",null,e.toDisplayString(t.messages.conflicts)+" · "+e.toDisplayString(t.conflicts.length),1),e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.conflicts,(o,l)=>(e.openBlock(),e.createElementBlock("li",{key:l},e.toDisplayString(o.message),1))),128))])])):e.createCommentVNode("",!0)]))}}),Or=U._export_sfc(zr,[["__scopeId","data-v-df1c7b86"]]);function Fr(t){const n=t.table?.columnKeys??[],a=n.map(()=>[]);if(!t.grid)return n;for(const{ci:r,cell:o}of It.resolveGridLayout(t.grid,t.widthMm,t.heightMm).cells){const l=(o.text??o.rawText??"").trim();if(l)for(let s=r;s<Math.min(n.length,r+(o.colSpan??1));s++)a[s].includes(l)||a[s].push(l)}return n.map((r,o)=>a[o].join(" / ")||r)}function Ar(t,n=[]){const a=new Set,r=[];for(const[o,l]of(t?.pages??[]).entries())for(const s of l.components){const i=s.table;if(!i||i.role!=="header"||a.has(i.id))continue;a.add(i.id);const u=Fr(s),m=n.filter(E=>E.pageIndex<=o),h=m[m.length-1]?.label,p=i.source?.datasetId,f=[...new Set([h,i.title,p].filter(Boolean))].join(" · ")||i.id;i.columnKeys.forEach((E,y)=>{E&&r.push({key:JSON.stringify([i.id,y]),field:E,label:u[y],group:f,pageIndex:o,tableId:i.id,...p?{datasetId:p}:{}})})}return r}function Lr(t,n){const a=n.trim().toLocaleLowerCase().split(/\s+/).filter(Boolean);return t.filter(r=>{const o=`${r.label} ${r.field} ${r.group}`.toLocaleLowerCase();return a.every(l=>o.includes(l))})}function qr(t){const n=pn(),a=e.ref(""),r=e.ref(0),o=`mrp-column-list-${e.getCurrentInstance()?.uid??0}`,l=e.computed(()=>Ar(t.plan(),t.sections())),s=e.computed(()=>Lr(l.value,a.value)),i=e.computed(()=>s.value.slice(0,100)),u=e.computed(()=>[...new Set(i.value.map(y=>y.group))].map(y=>({label:y,items:i.value.filter(g=>g.group===y)})));e.watch(a,()=>{r.value=0}),e.watch(t.busy,y=>{y&&n.close()}),e.watch(l,()=>{r.value=0});function m(y){t.busy()||(t.locate(y),n.close(!0))}function h(){if(t.busy())return;const y=i.value[r.value];y?m(y):a.value.trim()&&(t.locateField(a.value.trim()),n.close(!0))}function p(){a.value="",n.panel.value?.querySelector("input")?.focus()}function f(y){if(!(y.isComposing||y.keyCode===229||!["ArrowDown","ArrowUp","Enter"].includes(y.key))){if(y.preventDefault(),y.stopPropagation(),y.key==="Enter"){h();return}i.value.length&&(r.value=(r.value+(y.key==="ArrowDown"?1:-1)+i.value.length)%i.value.length,e.nextTick(()=>n.panel.value?.querySelector(`[id="${o}-${r.value}"]`)?.scrollIntoView?.({block:"nearest"})))}}function E(y){return i.value.findIndex(g=>g.key===y)}return{...n,field:a,active:r,listId:o,directory:l,matches:s,candidates:i,groups:u,choose:m,submit:h,clear:p,onSearchKeydown:f,candidateIndex:E}}const Kr=["aria-label"],jr={key:0,class:"mrp-section-tabs"},Wr=["aria-current","disabled","onClick"],Hr=["aria-expanded","disabled"],Ur={key:0,class:"mrp-column-count"},Gr=["aria-label"],Jr={class:"mrp-column-heading"},Zr=["aria-label"],Yr=["aria-label","placeholder","aria-controls","aria-activedescendant","disabled"],Xr=["aria-label"],Qr=["id","aria-label"],_r={key:0,class:"mrp-column-empty",role:"status"},el=["aria-label"],tl=["id","aria-selected","disabled","onPointermove","onClick"],nl=["title"],al={class:"mrp-column-help",role:"status"},ol=e.defineComponent({__name:"ReportNavigation",props:{sections:{},currentPage:{},messages:{},busy:{type:Boolean},plan:{},compact:{type:Boolean}},emits:["goto","locate","locate-target"],setup(t,{emit:n}){const a=t,r=n,o=qr({plan:()=>a.plan,sections:()=>a.sections,busy:()=>a.busy,locate:C=>r("locate-target",C),locateField:C=>r("locate",C)}),{root:l,trigger:s,panel:i,opened:u,field:m,active:h,directory:p,matches:f,candidates:E,groups:y,listId:g}=o,c=e.computed(()=>({columnDirectory:"字段目录",columnSearch:"搜索列名或字段",columnNoMatches:"未找到匹配字段",columnResults:"匹配字段",...a.messages})),S=e.computed(()=>(a.messages.columnResultsMore??"{count} 个匹配字段,显示前 {limit} 个;继续输入可缩小范围").replace("{count}",String(f.value.length)).replace("{limit}",String(E.value.length)));function v(C){const V=a.sections[C];return!!V&&a.currentPage>=V.pageIndex+1&&(!a.sections[C+1]||a.currentPage<=a.sections[C+1].pageIndex)}return(C,V)=>(e.openBlock(),e.createElementBlock("nav",{class:e.normalizeClass(["mrp-section-nav",{"mrp-compact":t.compact}]),"aria-label":t.messages.sections??"工作表与章节"},[t.sections.length>1?(e.openBlock(),e.createElementBlock("div",jr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.sections,(D,T)=>(e.openBlock(),e.createElementBlock("button",{key:T,type:"button",class:e.normalizeClass({active:v(T)}),"aria-current":v(T)?"page":void 0,disabled:t.busy,onClick:j=>r("goto",D.pageIndex+1)},e.toDisplayString(D.label),11,Wr))),128))])):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"root",ref:l,class:"mrp-column-locator",onKeydown:V[7]||(V[7]=(...D)=>e.unref(o).onKeydown&&e.unref(o).onKeydown(...D))},[e.createElementVNode("button",{ref_key:"trigger",ref:s,type:"button",class:e.normalizeClass(["mrp-directory-trigger",{active:e.unref(u)}]),"aria-expanded":e.unref(u),"aria-haspopup":"dialog",disabled:t.busy,onClick:V[0]||(V[0]=D=>u.value=!e.unref(u))},[e.createVNode(U._sfc_main,{name:"columns"}),e.createElementVNode("span",null,e.toDisplayString(c.value.columnDirectory),1),e.unref(p).length?(e.openBlock(),e.createElementBlock("span",Ur,e.toDisplayString(e.unref(p).length),1)):e.createCommentVNode("",!0),e.createVNode(U._sfc_main,{name:"chevron-down",size:12})],10,Hr),e.unref(u)?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"panel",ref:i,class:"mrp-column-directory",role:"dialog","aria-label":c.value.columnDirectory},[e.createElementVNode("div",Jr,[e.createElementVNode("span",null,[e.createVNode(U._sfc_main,{name:"columns"}),e.createTextVNode(e.toDisplayString(c.value.columnDirectory),1)]),e.createElementVNode("button",{type:"button",class:"mrp-column-close","aria-label":t.messages.closeColumnDirectory??"关闭字段目录",onClick:V[1]||(V[1]=D=>e.unref(o).close(!0))},[e.createVNode(U._sfc_main,{name:"close",size:15})],8,Zr)]),e.createElementVNode("form",{class:"mrp-column-search",onSubmit:V[5]||(V[5]=e.withModifiers((...D)=>e.unref(o).submit&&e.unref(o).submit(...D),["prevent"]))},[e.createVNode(U._sfc_main,{name:"search"}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":V[2]||(V[2]=D=>e.isRef(m)?m.value=D:null),type:"search",autocomplete:"off",spellcheck:"false",role:"combobox","aria-label":c.value.columnSearch,placeholder:c.value.columnSearch,"aria-autocomplete":"list","aria-expanded":"true","aria-controls":e.unref(g),"aria-activedescendant":e.unref(E).length?`${e.unref(g)}-${e.unref(h)}`:void 0,disabled:t.busy,onKeydown:V[3]||(V[3]=(...D)=>e.unref(o).onSearchKeydown&&e.unref(o).onSearchKeydown(...D))},null,40,Yr),[[e.vModelText,e.unref(m)]]),e.unref(m)?(e.openBlock(),e.createElementBlock("button",{key:0,class:"mrp-column-clear",type:"button","aria-label":t.messages.clearSearch??"清除搜索",onClick:V[4]||(V[4]=(...D)=>e.unref(o).clear&&e.unref(o).clear(...D))},[e.createVNode(U._sfc_main,{name:"close",size:13})],8,Xr)):e.createCommentVNode("",!0)],32),e.createElementVNode("div",{id:e.unref(g),class:"mrp-column-results",role:"listbox","aria-label":c.value.columnResults},[e.unref(E).length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("p",_r,[e.createVNode(U._sfc_main,{name:"search",size:22}),e.createTextVNode(e.toDisplayString(c.value.columnNoMatches),1)])),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(y),D=>(e.openBlock(),e.createElementBlock("section",{key:D.label,role:"group","aria-label":D.label},[e.createElementVNode("strong",null,e.toDisplayString(D.label),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(D.items,T=>(e.openBlock(),e.createElementBlock("button",{id:`${e.unref(g)}-${e.unref(o).candidateIndex(T.key)}`,key:T.key,type:"button",role:"option",tabindex:"-1",class:e.normalizeClass({"mrp-column-active":e.unref(o).candidateIndex(T.key)===e.unref(h)}),"aria-selected":e.unref(o).candidateIndex(T.key)===e.unref(h),disabled:t.busy,onPointermove:j=>h.value=e.unref(o).candidateIndex(T.key),onMousedown:V[6]||(V[6]=e.withModifiers(()=>{},["prevent"])),onClick:j=>e.unref(o).choose(T)},[e.createElementVNode("span",null,[e.createTextVNode(e.toDisplayString(T.label),1),e.createElementVNode("code",{title:T.field},e.toDisplayString(T.field),9,nl)]),e.createVNode(U._sfc_main,{name:"arrow-right",size:14})],42,tl))),128))],8,el))),128))],8,Qr),e.createElementVNode("p",al,e.toDisplayString(e.unref(f).length>e.unref(E).length?S.value:t.messages.columnSearchShortcut??"↑ ↓ 选择 · Enter 定位"),1)],8,Gr)):e.createCommentVNode("",!0)],544)],10,Kr))}}),an=U._export_sfc(ol,[["__scopeId","data-v-b47639d9"]]),rl={class:"mrp-import-summary"},ll={key:0},sl={key:0},il=e.defineComponent({__name:"ReportImportSummary",props:{result:{},messages:{}},setup(t){return(n,a)=>(e.openBlock(),e.createElementBlock("details",rl,[e.createElementVNode("summary",null,[e.createTextVNode(e.toDisplayString(t.messages.importSummary)+" · "+e.toDisplayString(t.messages.importPreserved?.replace("{sheets}",String(t.result.sheets.length)))+" ",1),t.result.warnings.length?(e.openBlock(),e.createElementBlock("span",ll," · "+e.toDisplayString(t.result.warnings.length)+" "+e.toDisplayString(t.messages.importWarnings),1)):e.createCommentVNode("",!0)]),e.createElementVNode("p",null,e.toDisplayString(t.messages.importReadOnly),1),e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.result.sheets,r=>(e.openBlock(),e.createElementBlock("li",{key:r.index},e.toDisplayString(r.name)+" · "+e.toDisplayString(r.range)+" · "+e.toDisplayString(r.rowCount)+" × "+e.toDisplayString(r.columnCount),1))),128))]),t.result.warnings.length?(e.openBlock(),e.createElementBlock("ul",sl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.result.warnings,(r,o)=>(e.openBlock(),e.createElementBlock("li",{key:o},e.toDisplayString(r),1))),128))])):e.createCommentVNode("",!0)]))}}),cl=U._export_sfc(il,[["__scopeId","data-v-54f275e8"]]);function ge(t){return JSON.parse(JSON.stringify(t))}function hn(t,n){const a=n.fields;if(typeof a=="function")return a(t);const r=t.source?.field??t.table?.columnKey;return r===void 0||!a||!Object.prototype.hasOwnProperty.call(a,r)?void 0:a[r]}function et(t,n){if(t.requiresRecalculation&&(!n||!L.getReportEditSession(t)))throw new L.ReportCellEditError("recalculation")}async function ul(t,n,a,r){const o=n.edits.every(i=>!!i.source);et(t,o);const l=L.getReportEditSession(t);if(l&&o)return l.prepareHistory(t,n.edits,n.value,a,{signal:r});const s=Me(t);return n.edits.map(i=>{const u=s(i);if(!u)throw new L.ReportCellEditError("missing");return{address:u,value:i[n.value]}})}function dl(t,n,a){const r=n.edits.every(o=>!!o.source);return et(t,r),r?L.getReportEditSession(t)?.prepare(t,n,{signal:a}):void 0}function fl(t,n){const a=new Map;return t.pages.forEach((r,o)=>r.components.forEach((l,s)=>{if(l.grid)for(const i of It.resolveGridLayout(l.grid,l.widthMm,l.heightMm).cells){const u=n({pageIndex:o,componentIndex:s,rowIndex:i.ri,columnIndex:i.ci});if(!u?.source)continue;const m=L.reportCellEditKey(u),h=a.get(m)??[];h.push(u),a.set(m,h)}})),a}function Me(t){const n=L.createReportCellResolver(t),a=fl(t,n);function r(l){if(l.source)return a.get(L.reportCellEditKey(l))??[];const s=n(l.address);return s?!l.table||L.reportCellEditKey(s)===L.reportCellEditKey(l)?[s]:[]:[]}const o=l=>{const s=r(l),i=s.find(u=>u.table?.id===l.table?.id)??s[0];return i?{...i.address}:null};return o.all=l=>r(l).map(s=>({...s.address})),o}class ml extends Error{constructor(n){super(n.map(a=>a.message).join(";")),this.conflicts=n,this.name="ReportEditConflictError"}}function pl(){return globalThis.crypto?.randomUUID?.()??`mr-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}function gl(t,n,a,r){return Array.isArray(n)?{batch:L.createReportCellEditBatch(t,n,a)}:ul(t,n,a,r).then(o=>Array.isArray(o)?{batch:L.createReportCellEditBatch(t,o,a)}:o)}function vl(t){const n=e.shallowRef([]),a=e.shallowRef([]),r=e.shallowRef([]),o=e.shallowRef([]),l=e.shallowRef(!1),s=e.shallowRef(null),i=e.shallowRef([]),u=e.computed(()=>i.value.length>0),m=e.computed(()=>{const b=L.summarizeReportCellEdits(n.value),N=t.plan.value;if(!N||!b.length)return b;const P=Me(N);return b.map(I=>{const F=P(I);return F?{...I,address:F}:I})}),h=e.computed(()=>!!t.options.value&&!l.value&&!t.blocked()&&a.value.length>0),p=e.computed(()=>!!t.options.value&&!l.value&&!t.blocked()&&r.value.length>0);let f=null,E=null,y=0,g=null;function c(){f?.abort(),f=null,l.value=!1,E=null}function S(){y++,c(),g=null,n.value=[],a.value=[],r.value=[],o.value=[],i.value=[],s.value=null}function v(){const b=t.options.value;return b?typeof b=="object"?b:{}:null}function C(b,N,P,I){if(!t.options.value||t.blocked())throw new L.ReportCellEditError("readonly");et(b,N.edits.every(K=>!!K.source));const F=L.createReportCellResolver(b),q=new Map(I?.map(K=>[L.reportCellEditKey(K),K]));for(const K of N.edits){const R=I?q.get(L.reportCellEditKey(K)):F(K.address);if(!R?.editable||P.canEdit?.(R)===!1)throw new L.ReportCellEditError("readonly");if(P.requireSource&&!R.source)throw new L.ReportCellEditError("missing");const ne=hn(R,P);ne&&L.parseReportCellFieldInput(R,K.value,ne)}}async function V(b,N,P){if(N.saveBatch)return N.saveBatch(ge(b),P);if(N.save&&b.edits.length>1)throw new L.ReportCellEditError("atomic");if(b.edits[0])return N.save?.(ge(b.edits[0]),P)}async function D(b,N,P){for(const I of b.edits){const F=await N.validate?.(ge(I),P);if(F)throw new Error(F);if(P.signal.aborted)return}}function T(b,N,P,I,F,q){if(t.plan.value=q?q.commit(P):L.applyReportEditResult(L.applyReportCellEditBatch(b,N),N,P),n.value=[...n.value,...N.edits],F){const R=new Set(N.edits.map(L.reportCellEditKey));i.value=i.value.filter(ne=>!R.has(L.reportCellEditKey(ne)))}else i.value=L.summarizeReportCellEdits([...i.value,...N.edits]);I==="edit"&&(a.value=[...a.value,N.edits],r.value=[]),o.value=[],g=null;const K=y;for(const R of N.edits){if(y!==K)break;t.onChange(ge(R))}}function j(b,N,P){const I=JSON.stringify([P,N.edits]);g?.plan===b&&g.signature===I?N.requestId=g.requestId:g={plan:b,signature:I,requestId:N.requestId}}function J(b){s.value=t.errorMessage?.(b)??(b instanceof Error?b.message:"Cell edit failed"),t.onError(s.value,b)}async function W(b,N){const P=t.plan.value,I=v();if(!P||!I||t.blocked())return!1;const F=new AbortController,q=y;f=F,l.value=!0,s.value=null;const K=()=>f===F&&!F.signal.aborted&&t.plan.value===P&&t.options.value!==!1;try{const R=gl(P,b,pl(),F.signal),ne=R instanceof Promise?await R:R;if(!K())return!1;const{batch:X,contexts:oe}=ne;if(C(P,X,I,oe),X.edits=X.edits.filter(B=>!Object.is(B.previousValue,B.value)),!X.edits.length)return!0;j(P,X,N),C(P,X,I,oe);const Ce={signal:F.signal,requestId:X.requestId,action:N};if(await D(X,I,Ce),!K())return!1;C(P,X,I,oe);const ve=ne.prepared?void 0:dl(P,X,F.signal);if(ve&&(ne.prepared=await ve),!K())return!1;C(P,X,I,oe);const x=await V(X,I,Ce);if(!K())return!1;if(x?.conflicts?.length)throw o.value=ge(x.conflicts),new ml(x.conflicts);return C(P,X,I,oe),T(P,X,x,N,!!(I.save||I.saveBatch),ne.prepared),q===y}catch(R){return K()&&J(R),!1}finally{f===F&&(f=null,l.value=!1)}}async function Z(b,N="edit"){if(E)return E;const P=W(b,N);E=P;const I=await P;return E===P&&(E=null),I}async function ee(){const b=y,N=a.value[a.value.length-1];return!N||l.value||!await Z({edits:N,value:"previousValue"},"undo")||b!==y?!1:(a.value=a.value.slice(0,-1),r.value=[...r.value,N],!0)}async function ie(){const b=y,N=r.value[r.value.length-1];return!N||l.value||!await Z({edits:N,value:"value"},"redo")||b!==y?!1:(r.value=r.value.slice(0,-1),a.value=[...a.value,N],!0)}async function te(){const b=y;return!m.value.length||l.value||!await Z({edits:m.value,value:"previousValue"},"restore")||b!==y?!1:(a.value=[],r.value=[],!0)}function w(){if(!E)return!l.value;const b=y;return E.then(N=>N&&b===y&&!l.value)}function $(b){return t.plan.value?Me(t.plan.value)(b):null}return{settle:w,resolveAddress:$,changes:n,differences:m,localDifferences:i,hasLocalDrafts:u,lastError:s,conflicts:o,saving:l,canUndo:h,canRedo:p,apply:Z,undo:ee,redo:ie,restore:te,cancel:c,reset:S}}let hl=0;const yl="position:absolute;inset:0;width:100%;height:100%;min-height:20px;box-sizing:border-box;z-index:10;resize:none;margin:0;padding:2px 4px;border:2px solid var(--mrp-btn-active-bg,#2563eb);outline:none;background:var(--mrp-toolbar-bg,#fff);color:var(--mrp-toolbar-fg,#111);font:inherit;line-height:1.25;white-space:pre-wrap;";function bl(t){return t.type==="boolean"?[{value:!0,label:t.trueLabel??"是"},{value:!1,label:t.falseLabel??"否"}]:t.type==="enum"?t.options.map(n=>({value:n.value,label:n.label??String(n.value)})):[]}function wl(t,n,a){const r=t.createElement("select"),o=[{value:null,label:"—"},...bl(n)];if(o.forEach((l,s)=>{const i=t.createElement("option");i.value=String(s),i.textContent=l.label,(Object.is(a.value,l.value)||a.value===""&&l.value===null)&&(i.selected=!0),r.append(i)}),!o.some(l=>Object.is(a.value,l.value)||a.value===""&&l.value===null)){const l=t.createElement("option");l.value="unknown",l.textContent=a.cell.text??String(a.value),l.selected=!0,r.append(l)}return{input:r,value:()=>r.value==="unknown"?a.value:o[Number(r.value)]?.value??null}}function xl(t,n,a){const r=n?.type==="number"||n?.type==="date"?t.createElement("input"):t.createElement("textarea");return r.value=a.value==null?"":String(a.value),r instanceof HTMLInputElement&&(r.type=n?.type==="date"?"date":"text",n?.type==="number"&&(r.inputMode="decimal"),n?.type==="date"&&(n.min&&(r.min=n.min),n.max&&(r.max=n.max))),{input:r,value:()=>n?.type==="date"&&r instanceof HTMLInputElement&&r.validity.badInput?"invalid-date":r.value}}function kl(t){if(!t)return"";const n=[t.hint,t.unit];return(t.type==="number"||t.type==="date")&&(t.min!==void 0&&n.push(`≥ ${t.min}`),t.max!==void 0&&n.push(`≤ ${t.max}`)),t.type==="number"&&t.precision!==void 0&&n.push(`最多 ${t.precision} 位小数`),t.type==="text"&&t.maxLength!==void 0&&n.push(`最多 ${t.maxLength} 字符`),n.filter(Boolean).join(" · ")}function El(t,n,a,r){const o=t.ownerDocument,l=r?.type==="boolean"||r?.type==="enum"?wl(o,r,a):xl(o,r,a),s=l.input,i=o.createElement("span");i.className="mrp-cell-editor-host",i.style.cssText="position:absolute;inset:0;z-index:10;",s.className="mrp-cell-editor",s.style.cssText=yl,s.setAttribute("aria-label",r?.label??n),r?.required&&s.setAttribute("aria-required","true");const u=o.createElement("span");u.id=`mrp-cell-hint-${++hl}`,u.className="mrp-cell-editor-hint",u.style.cssText="position:absolute;top:100%;left:0;min-width:100%;width:max-content;max-width:320px;box-sizing:border-box;padding:4px 8px;white-space:normal;border:1px solid var(--mrp-toolbar-border,#ddd);background:var(--mrp-toolbar-bg,#fff);color:var(--mrp-toolbar-fg,#111);font-size:12px;line-height:1.4;box-shadow:0 3px 10px #0002;z-index:11;";const m=kl(r);return u.textContent=m,u.hidden=!m,s.setAttribute("aria-describedby",u.id),i.append(s,u),t.append(i),{input:s,root:i,initialInput:s.value,value:l.value,focus:()=>{s.focus(),(s instanceof HTMLTextAreaElement||s instanceof HTMLInputElement&&s.type!=="date")&&s.select()},feedback:h=>{u.textContent=h??m,u.hidden=!u.textContent,s.setAttribute("aria-invalid",h?"true":"false")}}}function St(t){const n=t.closest(".mrp-page-holder"),a=t.closest("[data-mr-component-index]");if(!n||!a)return null;const r={pageIndex:Number(n.dataset.page)-1,componentIndex:Number(a.dataset.mrComponentIndex),rowIndex:Number(t.dataset.mrRowIndex),columnIndex:Number(t.dataset.mrColumnIndex)};return Object.values(r).every(o=>Number.isInteger(o)&&o>=0)?r:null}function Cl(t){const n=e.shallowRef(null),a=vl(t),{saving:r,changes:o}=a,l=e.shallowRef(!1),s=e.computed(()=>l.value||a.hasLocalDrafts.value);let i=null;function u(){const v=n.value;n.value=null,l.value=!1,a.cancel(),i=null,v?.editor.root.remove()}function m(){u(),a.reset()}function h(v){return n.value===v&&t.plan.value===v.plan}async function p(v){return await a.apply([{address:v.address,value:v.editor.value()}])?(n.value=null,l.value=!1,v.editor.root.remove(),!0):(n.value===v&&(v.editor.input.disabled=!1,v.editor.feedback(a.lastError.value??void 0),v.editor.input.focus()),!1)}async function f(){if(i)return i;const v=n.value;if(!v)return a.settle();if(!h(v))return u(),!1;l.value=v.editor.input.value!==v.editor.initialInput,v.editor.input.disabled=!0;const C=p(v);i=C;const V=await C;return i===C&&(i=null),V}function E(){return n.value||i?f():a.settle()}function y(v){if(v.stopPropagation(),!v.isComposing&&(v.key==="Escape"&&(v.preventDefault(),u()),v.key==="Enter"&&!v.shiftKey||v.key==="Tab")){v.preventDefault();const C=n.value,V=C&&L.getReportCellContext(C.plan,C.address),D=C&&V?L.createReportCellEditBatch(C.plan,[{address:C.address,value:V.value}],"navigation").edits[0]:void 0;f().then(T=>{if(!T||!C||!t.plan.value)return;const j=t.plan.value===C.plan?C.address:D&&Me(t.plan.value)(D);j&&t.onNavigate?.(j,v.key,v.shiftKey)})}}function g(v){t.onError(t.errorMessage?.(v)??(v instanceof Error?v.message:"无法编辑单元格"),v)}async function c(v){if(!t.options.value||t.blocked()||!await f()||!v.isConnected)return;const C=t.plan.value,V=St(v);if(!C||!V||!t.options.value||t.blocked())return;const D=typeof t.options.value=="object"?t.options.value:{};try{const T=L.getReportCellContext(C,V);if(!T?.editable||D.canEdit?.(T)===!1)return;if(et(C,!!T.source),D.requireSource&&!T.source)throw new L.ReportCellEditError("missing");const j=hn(T,D);j&&L.validateReportCellFieldDefinition(T,j);const J=El(v,t.label(),T,j),W=J.input;n.value={plan:C,address:V,editor:J},l.value=!1,W.addEventListener("keydown",Z=>y(Z)),W.addEventListener("input",()=>{l.value=W.value!==J.initialInput,J.feedback()}),W.addEventListener("change",()=>{l.value=W.value!==J.initialInput}),W.addEventListener("blur",()=>{!r.value&&!t.suspendBlur?.()&&f()}),J.focus()}catch(T){g(T)}}async function S(v){const C=v.target;if(!(C instanceof Element)||C.closest(".mrp-cell-editor"))return;const V=C.closest("td[data-mr-row-index]");V&&await c(V)}return e.watch(t.options,(v,C)=>{(!v||v!==C)&&u()},{flush:"sync"}),e.watch(t.plan,()=>{n.value&&t.plan.value!==n.value.plan&&(n.value.editor.root.remove(),n.value=null,l.value=!1)},{flush:"sync"}),e.onScopeDispose(m),{...a,active:n,saving:r,changes:o,pendingLocalChanges:s,cancel:u,reset:m,commit:f,settle:E,onDoubleClick:S,editCell:c,getChanges:()=>ge(o.value)}}const _e=["html","pdf","xlsx","png","word"],Nt=["search","thumbnails","zoom",..._e,"print","pdfWindow","editing","import"];function Sl(t){return{load:n=>JSON.parse(t.getItem(n)??"null"),save:(n,a)=>t.setItem(n,JSON.stringify(a)),remove:n=>t.removeItem(n)}}function Nl(t,n,a,r){const o=e.ref({});let l=0,s=0,i=Promise.resolve();const u=e.computed(()=>Object.fromEntries(Nt.map(f=>[f,t.value[f]&&(o.value[f]??n.value[f]??!0)])));function m(f,E){t.value[f]&&(s++,o.value={...o.value,[f]:E},h())}function h(){const f=a?.value;if(!f)return;const E={...o.value};i=i.then(()=>f.adapter.save(f.key,E)).catch(y=>{r?.(y)})}function p(){s++,o.value={},h()}return a&&e.watch(a,async f=>{const E=++l,y=s;if(o.value={},!!f)try{const g=await f.adapter.load(f.key);if(E!==l||y!==s||!g||typeof g!="object")return;o.value=Object.fromEntries(Nt.flatMap(c=>typeof g[c]=="boolean"?[[c,g[c]]]:[]))}catch(g){E===l&&r?.(g)}},{immediate:!0}),e.onScopeDispose(()=>{l++}),{enabled:u,setEnabled:m,reset:p}}function Bl(t,n,a){const r=e.ref({}),o=me.useMachReportConfig(),l=e.computed(()=>me.resolveConfig(o.value,t.preset)),s=e.computed(()=>({...l.value.messages,...t.messages})),i=e.computed(()=>t.showExport??l.value.showExport),u=e.computed(()=>t.showPrint??l.value.showPrint),m=e.computed(()=>t.showPdfWindow??l.value.showPdfWindow),h=e.computed(()=>t.showSettings??l.value.showSettings),p=e.computed(()=>t.guardChanges??l.value.guardChanges),f=e.computed(()=>({...l.value.output,...t.output})),E=e.computed(()=>({...l.value.toolbar,...t.toolbar})),y=e.computed(()=>({...l.value.interaction,...t.interaction,...r.value})),g=e.computed(()=>t.preferences??l.value.preferences),c=e.computed(()=>t.assets??l.value.assets),S=e.computed(()=>t.gapPx??(n.value?0:l.value.gapPx)),v=e.computed(()=>t.showParams??l.value.showParams),C=e.computed(()=>t.editable??l.value.editable),V=e.computed(()=>t.excelImport??l.value.excelImport),D=e.computed(()=>({search:E.value.search!==!1,thumbnails:E.value.thumbnails!==!1,zoom:E.value.zoom!==!1,...Object.fromEntries(_e.map(te=>[te,i.value&&(E.value.exportFormats?.includes(te)??!0)])),print:u.value,pdfWindow:m.value,editing:!!C.value,import:!!V.value})),T=Nl(D,e.computed(()=>({editing:E.value.editing,import:E.value.excelImport})),g,()=>a(s.value.preferencesError??"Preferences storage unavailable")),j=T.enabled,J=e.computed(()=>_e.filter(te=>j.value[te])),W=e.computed(()=>j.value.editing?C.value:!1),Z=e.computed(()=>j.value.import?V.value:!1),ee=e.computed(()=>typeof C.value=="object"&&(typeof C.value.save=="function"||typeof C.value.saveBatch=="function")),ie=e.computed(()=>typeof t.emptyState=="object"?t.emptyState:{});return{resolved:l,resolvedMessages:s,effectiveShowExport:i,effectiveShowPrint:u,effectiveShowPdfWindow:m,effectiveShowSettings:h,effectiveGuardChanges:p,effectiveOutput:f,effectiveInteraction:y,effectiveAssets:c,effectiveGapPx:S,effectiveShowParams:v,availableTools:D,tools:T,toolState:j,visibleExportFormats:J,effectiveEditable:W,effectiveExcelImport:Z,persistedEditing:ee,emptyStateContent:ie,sessionInteraction:r}}function yn(t){return t.table.role==="header"?-Math.max(1,t.grid?.cells.length??1):t.table.rowIndex}function ke(t,n,a=n){const r=t.pages[n.pageIndex]?.components[n.componentIndex],o=r?.table,l=t.pages[a.pageIndex]?.components[a.componentIndex]?.table;return o&&l&&o.id===l.id?{grid:o.id,row:yn(r)+n.rowIndex,column:l.columnKeys.indexOf(o.columnKeys[n.columnIndex]??"")}:{grid:`${n.pageIndex}:${n.componentIndex}`,row:n.rowIndex,column:n.columnIndex}}function on(t,n){const a=t.pages[n.pageIndex]?.components[n.componentIndex]?.table;if(!a)return(o,l)=>({...n,rowIndex:o,columnIndex:l});const r=new Map;return t.pages.forEach((o,l)=>o.components.forEach((s,i)=>{s.table?.id!==a.id||!s.grid||s.grid.cells.forEach((u,m)=>{const h=yn(s)+m;r.set(h,[...r.get(h)??[],{address:{pageIndex:l,componentIndex:i,rowIndex:m,columnIndex:0},keys:s.table.columnKeys}])})})),(o,l)=>{const s=a.columnKeys[l];if(s===void 0)return null;const i=r.get(o)?.find(u=>u.keys.includes(s));return i?{...i.address,columnIndex:i.keys.indexOf(s)}:null}}function Il(t,n){const a=[...t.ownerDocument.querySelectorAll("a[href],button,input,textarea,select,[tabindex]:not([tabindex='-1'])")].filter(l=>l.tabIndex>=0&&!l.matches(":disabled,[hidden],input[type='hidden']")&&!l.closest("[inert],[aria-hidden='true']")&&l.getClientRects().length>0).map((l,s)=>({element:l,order:s})).sort((l,s)=>(l.element.tabIndex||1/0)-(s.element.tabIndex||1/0)||l.order-s.order),r=a.findIndex(({element:l})=>l===t);if(r<0)return!1;const o=a[r+(n?-1:1)]?.element;return o?(o.focus(),t.ownerDocument.activeElement===o):!1}function $l(t,n){const a=t?.source;return!Vl(t,n.field)||n.tableId!==void 0&&t?.table?.id!==n.tableId||n.datasetId!==void 0&&(a?.datasetId??t?.component.table?.source?.datasetId)!==n.datasetId?!1:n.rowKey===void 0||a?.rowKey===n.rowKey}function Vl(t,n){if((t?.source?.field??t?.table?.columnKey)===n)return!0;if(!t||t.table?.role!=="header")return!1;const a=t.address.columnIndex;return t.component.table?.columnKeys.slice(a,a+(t.cell.colSpan??1)).includes(n)??!1}function Pl(t,n){return t.pageIndex===n.pageIndex&&t.componentIndex===n.componentIndex}function Rl(t,n){return Pl(t,n)&&t.rowIndex===n.rowIndex&&t.columnIndex===n.columnIndex}function bt(t){return`[data-page="${t.pageIndex+1}"] [data-mr-component-index="${t.componentIndex}"] td[data-mr-row-index="${t.rowIndex}"][data-mr-column-index="${t.columnIndex}"]`}function Bt(t){return`${t.pageIndex}:${t.componentIndex}:${t.rowIndex}:${t.columnIndex}`}function Dl(t,n){const a=ke(t,n.anchor),r=ke(t,n.focus,n.anchor);return{grid:a.grid,minRow:Math.min(a.row,r.row),maxRow:Math.max(a.row,r.row),minColumn:Math.min(a.column,r.column),maxColumn:Math.max(a.column,r.column),focusKey:Bt(n.focus),origin:t.pages[n.anchor.pageIndex]?.components[n.anchor.componentIndex]?.table}}function Ml(t,n,a){const r=n?.table;if(!r||!a.origin||r.id!==a.origin.id)return{grid:`${t.pageIndex}:${t.componentIndex}`,rowOffset:0,missingColumn:-1};const o=new Map;return a.origin.columnKeys.forEach((l,s)=>{o.has(l)||o.set(l,s)}),{grid:r.id,rowOffset:r.role==="header"?-Math.max(1,n.grid?.cells.length??1):r.rowIndex,columns:r.columnKeys.map(l=>o.get(l)??-1),missingColumn:o.get("")??-1}}function Tl(t,n,a){if(!a||!n||n.grid!==a.grid)return!1;const r=n.rowOffset+t.row,o=n.columns?n.columns[t.column]??n.missingColumn:t.column;return r>=a.minRow&&r<=a.maxRow&&o>=a.minColumn&&o<=a.maxColumn}function Ze(t,n,a){t.getAttribute(n)!==a&&t.setAttribute(n,a)}function wt(t,n,a){t.classList.contains(n)!==a&&t.classList.toggle(n,a)}function zl(t,n,a,r,o,l){n.role!==a&&(Ze(t,"role",a),n.role=a),n.selected!==r&&(wt(t,"mrp-cell-selected",r),Ze(t,"aria-selected",String(r)),n.selected=r),n.focused!==o&&(wt(t,"mrp-cell-focus",o),Ze(t,"tabindex",o?"0":"-1"),n.focused=o),n.modified!==l&&(wt(t,"mrp-cell-modified",l),n.modified=l)}function Ol(t){const n=()=>t.editable?.()??t.enabled(),a=e.shallowRef(null),r=new WeakMap,o=new WeakMap;let l=null,s=null,i=new Set;function u(w,$){const b=L.getReportCellContext(w,$);return!b||w.requiresRecalculation&&!b.source?null:{address:b.address,source:b.source,table:b.table,value:b.value,previousValue:b.value,text:b.cell.text??"",previousText:b.cell.text??""}}e.watch(t.plan,(w,$)=>{const b=a.value;if(!b)return;if(!w||!$){a.value=null;return}const N=u($,b.anchor),P=u($,b.focus),I=Me(w),F=N&&I(N),q=P&&I(P);a.value=F&&q?{anchor:F,focus:q}:null},{flush:"sync"});function m(w=t.root.value??void 0){if(!w)return;const $=a.value,b=t.plan.value,N=t.differences();if(N!==l||b!==s){l=N,s=b;const I=b&&N.length?Me(b):null;i=new Set(N.flatMap(F=>I?I.all(F).map(Bt):[]))}const P=$&&b?Dl(b,$):null;w instanceof HTMLTableElement&&f(w,b,P);for(const I of w.querySelectorAll("table"))f(I,b,P)}function h(w){const $=r.get(w);if($)return $;const b=w.closest("[data-mr-component-index]"),N=b?.closest(".mrp-page-holder"),P={pageIndex:Number(N?.dataset.page)-1,componentIndex:Number(b?.dataset.mrComponentIndex)};return Object.values(P).every(I=>Number.isInteger(I)&&I>=0)?(r.set(w,P),P):null}function p(w,$){const b=o.get(w);if(b)return b;const N=Number(w.dataset.mrRowIndex),P=Number(w.dataset.mrColumnIndex);if(![N,P].every(F=>Number.isInteger(F)&&F>=0))return null;const I={row:N,column:P,key:Bt({...$,rowIndex:N,columnIndex:P})};return o.set(w,I),I}function f(w,$,b){const N=h(w);if(!N)return;const P=$?.pages[N.pageIndex]?.components[N.componentIndex],I=P?.table?.role==="header"?"columnheader":"gridcell",F=b?Ml(N,P,b):null;Ze(w,"role","grid");for(const q of w.rows)for(const K of q.cells){const R=p(K,N);R&&zl(K,R,I,Tl(R,F,b),b?.focusKey===R.key,i.size>0&&i.has(R.key))}}async function E(w,$=!1){if(!t.plan.value||!L.getReportCellContext(t.plan.value,w))return!1;const b=a.value,N=$&&b&&ke(t.plan.value,b.anchor).grid===ke(t.plan.value,w,b.anchor).grid;a.value={anchor:N?b.anchor:{...w},focus:{...w}},t.root.value?.querySelector(bt(w))||t.gotoPage(w.pageIndex+1),await e.nextTick(),m();const P=t.root.value?.querySelector(bt(w));return P?.focus({preventScroll:!0}),P?.scrollIntoView?.({block:"nearest",inline:"nearest"}),!!P}function y(w){const $=w.target;if(!($ instanceof Element)||$.closest("textarea,input,button,select"))return;const b=$.closest("td[data-mr-row-index]"),N=b&&St(b);if(!N||t.busy()||!t.plan.value||!L.getReportCellContext(t.plan.value,N))return;const P=a.value,I=w.shiftKey&&P&&ke(t.plan.value,P.anchor).grid===ke(t.plan.value,N,P.anchor).grid;a.value={anchor:I?P.anchor:{...N},focus:{...N}},m(),b.focus({preventScroll:!0})}function g(w){const $=t.plan.value?.pages[w.pageIndex]?.components[w.componentIndex];return $?.grid?It.resolveGridLayout($.grid,$.widthMm,$.heightMm).cells.map(b=>({...w,rowIndex:b.ri,columnIndex:b.ci})):[]}function c(w,$,b){const N=g(w),P=b?-1:1;if($==="Tab")return N[N.findIndex(q=>Rl(q,w))+P];const I=$==="ArrowUp"||$==="ArrowDown"||$==="Enter",F=$==="ArrowUp"||$==="ArrowLeft"?-1:P;return N.filter(q=>I?q.columnIndex===w.columnIndex&&(q.rowIndex-w.rowIndex)*F>0:q.rowIndex===w.rowIndex&&(q.columnIndex-w.columnIndex)*F>0).sort((q,K)=>I?(q.rowIndex-K.rowIndex)*F:(q.columnIndex-K.columnIndex)*F)[0]}function S(w,$,b){if($==="ArrowLeft"||$==="ArrowRight")return;const N=t.plan.value;if(!N.pages[w.pageIndex]?.components[w.componentIndex]?.table)return;const I=$==="ArrowUp"||b?-1:1;for(let F=w.pageIndex;F>=0&&F<N.pages.length;F+=I){const q=N.pages[F].components,K=F===w.pageIndex?w.componentIndex+I:I===1?0:q.length-1;for(let R=K;R>=0&&R<q.length;R+=I){const ne=v(w,{...w,pageIndex:F,componentIndex:R},$,I);if(ne)return ne}}}function v(w,$,b,N){const P=t.plan.value,I=P.pages[w.pageIndex].components[w.componentIndex].table,F=P.pages[$.pageIndex].components[$.componentIndex]?.table;if(F?.id!==I.id||F.role==="header"&&I.role!=="header"&&(N>0||I.rowIndex+w.rowIndex>0))return;const q=g($),K=b==="Tab"?q:q.filter(R=>R.columnIndex===w.columnIndex);return N===1?K[0]:K[K.length-1]}function C(w,$,b=!1,N=!1,P=!1){const I=c(w,$,b)??S(w,$,b);return I?(E(I,N),!0):(($!=="Tab"||!P)&&E(w),!1)}function V(w){const $=a.value;if(t.busy()||w.target instanceof Element&&w.target.closest("textarea,input,select,button,a[href],[contenteditable]"))return!1;if(!$)return j(w);const b=w.key;if(D(w)||T(w,$.focus))return!0;if(!["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Tab","Enter"].includes(b))return!1;const N=C($.focus,b,b==="Tab"&&w.shiftKey,w.shiftKey&&b!=="Tab",!0);if(b==="Tab"&&!N){const P=t.root.value?.ownerDocument.activeElement;if(!(P instanceof HTMLElement)||!Il(P,w.shiftKey))return!1}return w.preventDefault(),!0}function D(w){if(!n()||!(w.ctrlKey||w.metaKey))return!1;const $=w.key.toLowerCase();return $!=="z"&&$!=="y"?!1:(w.preventDefault(),$==="y"||w.shiftKey?t.redo():t.undo(),!0)}function T(w,$){if(!n()||!t.plan.value||w.key!=="F2"&&!(w.key==="Enter"&&L.getReportCellContext(t.plan.value,$)?.editable))return!1;const b=t.root.value?.querySelector(bt($));return b&&(w.preventDefault(),t.edit(b)),!0}function j(w){if(!["ArrowDown","ArrowRight","ArrowUp","ArrowLeft","Enter"].includes(w.key))return!1;const $=t.root.value?.querySelector("td[data-mr-row-index]"),b=$&&St($);return b?(w.preventDefault(),E(b),!0):!1}function J(){const w=a.value,$=t.plan.value;if(!w||!$)return"";const b=[],N=ke($,w.anchor),P=ke($,w.focus,w.anchor),I=on($,w.anchor),F=L.createReportCellResolver($),q=Math.min(N.column,P.column),K=Math.max(N.column,P.column);if((Math.abs(N.row-P.row)+1)*(K-q+1)>1e4)return t.error(new L.ReportCellEditError("limit")),"";for(let R=Math.min(N.row,P.row);R<=Math.max(N.row,P.row);R++){const ne=[];for(let X=q;X<=K;X++){const oe=I(R,X);ne.push(oe?F(oe)?.cell.text??"":"")}b.push(ne)}return L.formatReportClipboard(b)}function W(w){!a.value||w.target instanceof Element&&w.target.closest("textarea,input,select")||(w.clipboardData?.setData("text/plain",J()),w.preventDefault())}async function Z(w){const $=a.value;if(!$||!n()||t.busy())return!1;try{let b;try{b=L.parseReportClipboard(w)}catch(K){throw new L.ReportCellEditError(K instanceof Error&&K.message.includes("limit")?"limit":"clipboard")}const N=t.plan.value,P=ke(N,$.anchor),I=ke(N,$.focus,$.anchor),F=on(N,$.anchor),q=b.flatMap((K,R)=>K.map((ne,X)=>{const oe=F(Math.min(P.row,I.row)+R,Math.min(P.column,I.column)+X);if(!oe)throw new L.ReportCellEditError("missing");return{address:oe,value:ne}}));return await t.apply(q)}catch(b){return t.error(b),!1}}function ee(w){if(!a.value||!n()||w.target instanceof Element&&w.target.closest("textarea,input,select,button,a[href],[contenteditable]")||!w.clipboardData?.types.includes("text/plain"))return;const $=w.clipboardData?.getData("text/plain");$&&(w.preventDefault(),Z($))}async function ie(w){const $=t.plan.value;if(!$)return!1;const b=L.createReportCellResolver($);for(let N=0;N<$.pages.length;N++){const P=$.pages[N];for(let I=0;I<P.components.length;I++)for(const F of g({pageIndex:N,componentIndex:I,rowIndex:0,columnIndex:0})){const q=b(F);if($l(q,w))return E(F)}}return!1}function te(){a.value=null,m()}return{selection:a,refresh:m,reset:te,focusCell:E,focusField:ie,navigate:C,onClick:y,onKeydown:V,onCopy:W,onPaste:ee,copySelection:J,pasteSelection:Z}}function Fl(t){let n=0,a=!1;function r(){const l=t.viewport.value,s=t.root.value,i=t.plan.value;if(!l||!s||!i)return;const u=t.options(),m=Math.max(0,Math.min(20,Math.floor(u.frozenColumns??0)));if(!u.freezeHeaders&&m===0&&!a)return;const h=t.zoom.value||1,p=l.getBoundingClientRect();s.querySelectorAll("[data-mr-component-index]").forEach(f=>{const E=f.closest("[data-page]"),y=Number(E?.dataset.page)-1,g=i.pages[y]?.components[Number(f.dataset.mrComponentIndex)];if(!g?.grid||!E)return;f.style.transform="",f.style.zIndex="";const c=f.getBoundingClientRect(),S=E.getBoundingClientRect().bottom,v=Math.max(0,(p.left-c.left)/h),C=u.freezeHeaders?Math.max(0,Math.min((p.top-c.top)/h,(S-c.bottom)/h)):0;v>0&&m>0&&(f.style.zIndex="1"),g.table?.role==="header"&&C>0&&(f.style.transform=`translateY(${C}px)`,f.style.zIndex="5"),f.querySelectorAll(".mrp-cell-frozen").forEach(D=>{D.style.transform="",D.style.zIndex="",D.classList.remove("mrp-cell-frozen")});const V=Array.from({length:m},(D,T)=>`td[data-mr-column-index="${T}"]`);!g.table&&u.freezeHeaders&&V.push('td[data-mr-row-index="0"]'),V.length&&f.querySelectorAll(V.join(",")).forEach(D=>{const T=Number(D.dataset.mrColumnIndex)<m,j=!g.table&&Number(D.dataset.mrRowIndex)===0&&!!u.freezeHeaders,J=T?v:0,W=j?C:0;D.style.transform=J||W?`translate(${J}px, ${W}px)`:"",D.classList.toggle("mrp-cell-frozen",!!(J||W)),D.style.zIndex=J||W?j?"7":"6":""})}),a=!!u.freezeHeaders||m>0}function o(){n||(n=requestAnimationFrame(()=>{n=0,r()}))}return e.onScopeDispose(()=>{n&&cancelAnimationFrame(n)}),{refresh:r,schedule:o}}async function bn(t,n,a,r){if(!n?.assetRenderers||!Object.keys(n.assetRenderers).length)return t;try{return(await L.resolvePlanAssets(t,{...n,signal:a,format:"dom",onDiagnostic:l=>{a.aborted||(n.onDiagnostic?.(l),r(l.message))}})).plan}catch(o){throw a.aborted?o:new me.MachReportError("render",o instanceof Error?o.message:"Report asset preparation failed",o)}}function wn(t,n){const a=L.validateRenderPlan(t);if(!a.ok)throw new me.MachReportError("validate",`渲染计划校验失败(${a.errors.length} 处): ${a.errors.slice(0,3).map(r=>`${r.path}: ${r.message}`).join("; ")}`);a.warnings.forEach(r=>n(`${r.path}: ${r.message}`))}async function Al(t,n,a,r){const o=await se.waitForOutput(t(n),n.signal);return se.assertOutputActive(n.signal),r("validate"),wn(o,n.onWarning??(()=>{})),se.assertOutputActive(n.signal),r("assets"),bn(o,a,n.signal,n.onWarning??(()=>{}))}async function Ll(t,n,a,r,o,l){const{importExcelTemplate:s}=await import("@agile-team/mach-report/xlsx");se.assertOutputActive(r);const i=await se.waitForOutput(s(t,{...n,signal:r}),r);l("layout");const u=L.paginateTemplate(ge(i.template),{}).plan;wn(u,o),se.assertOutputActive(r),l("assets");const m=await bn(u,a,r,o);return{result:i,plan:m}}const ql={key:7,class:"mrp-edit-hint",role:"status"},Kl={key:9,class:"mrp-export-notice mrp-export-warning",role:"status"},jl={class:"mrp-main"},Wl={key:0,class:"mrp-state"},Hl={key:1,class:"mrp-state mrp-error"},Ul=["data-page"],Gl=["aria-label","aria-current","onClick"],Jl=["data-thumb"],Zl={class:"mrp-thumb-no"},Yl={key:10,class:"mrp-footer"},Xl={class:"mrp-footer-context"},Ql=["aria-label"],_l={key:0},es={class:"mrp-overlay"},ts={key:11,class:"mrp-debug","aria-hidden":"true"},xt=96/25.4,kt="mach-report:ui",Et="mach-report:ui:wide",ns=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},showSettings:{type:Boolean,default:void 0},toolbar:{type:Object,default:void 0},interaction:{type:Object,default:void 0},preferences:{type:Object,default:void 0},guardChanges:{type:Boolean,default:void 0},beforeDiscard:{type:Function,default:void 0},output:{type:Object,default:void 0},assets:{type:Object,default:void 0},emptyState:{type:[Boolean,Object],default:!1},gapPx:{type:Number,default:void 0},messages:{type:Object,default:void 0},preset:{type:String,default:void 0},debug:{type:Boolean,default:!1},paramDefs:{type:Array,default:void 0},showParams:{type:Boolean,default:void 0},editable:{type:[Boolean,Object],default:void 0},excelImport:{type:[Boolean,Object],default:void 0},fetcher:{type:Function,default:null}},emits:["loaded","task","diagnostic","error","warning","cell-edit","template-import","preferences-change"],setup(t,{expose:n,emit:a}){const r=t,o=a,l=e.shallowRef(null),s=e.ref(!1),i=e.ref(""),u=e.shallowRef(null),m=e.ref(null),h=e.ref(!1),p=e.ref(null),f=e.ref(1),E=e.ref(null),y=e.ref(null),g=e.ref(null),c=e.ref(!1),S=e.ref(!1),v=e.ref(!1),C=e.ref("general"),V=e.shallowRef(null),D=e.ref(null),T=e.ref(null),j=wa();let J=null,W=!1;const Z=wr(d=>o("task",d)),ee=xr(d=>o("diagnostic",d)),ie=e.shallowRef(null),te=e.computed(()=>!!l.value?.pages.length&&l.value.pages.every(d=>d.layout==="wide"));let w=kt;const $=e.inject(yt.MACH_REPORT_FETCHER_KEY,null),b=e.inject(yt.MACH_REPORT_PDF_EXPORTER_KEY,null),N=e.computed(()=>$t(r.reportId)),P=e.computed(()=>r.fetcher??$),I=e.computed(()=>l.value?.pages.length??0),F=e.computed(()=>Object.freeze({loading:s.value,hasPlan:I.value>0,pageCount:I.value,currentPage:f.value,exporting:m.value,printing:h.value,canExport:!s.value&&!S.value&&!A.saving.value&&I.value>0&&m.value===null,canPrint:!s.value&&!S.value&&!A.saving.value&&I.value>0&&!h.value,error:u.value,pdfFont:Rt.value,editing:A.active.value!==null,saving:A.saving.value,importing:S.value,dirty:A.differences.value.length>0,pendingLocalChanges:A.pendingLocalChanges.value,task:Z.state.value,diagnostics:ee.entries.value,reportIds:ie.value?.reportIds??[],params:ie.value?.params??{},canUndo:A.canUndo.value,canRedo:A.canRedo.value,changeCount:A.differences.value.length,selection:Q.selection.value?ge(Q.selection.value):null}));function q(d,k,M){u.value=Object.freeze({message:d,code:k,cause:M}),o("error",d,{code:k,cause:M})}const{resolved:K,resolvedMessages:R,effectiveShowExport:ne,effectiveShowSettings:X,effectiveGuardChanges:oe,effectiveOutput:Ce,effectiveInteraction:ve,effectiveAssets:x,effectiveGapPx:B,effectiveShowParams:z,availableTools:O,tools:G,toolState:H,visibleExportFormats:ce,effectiveEditable:ue,effectiveExcelImport:he,persistedEditing:Ke,emptyStateContent:tt,sessionInteraction:nt}=Bl(r,te,d=>o("warning",d)),Pt=e.computed(()=>H.value.pdf||H.value.pdfWindow),at=e.computed(()=>ve.value.calculations===!0),ot=e.computed(()=>me.resolveCalculationMessages(R.value)),{pdfFont:Rt,getPdfExporter:kn,checkPdfFont:En,retryPdfFont:Dt,cancelFontCheck:Cn}=hr({plan:l,fontUrl:()=>K.value.pdfFontUrl,enabled:()=>Pt.value,injectedExporter:b,destroyed:()=>W});async function Sn(d,k){d==="editing"&&!k&&!await A.settle()||(G.setEnabled(d,k),o("preferences-change",Object.freeze({...H.value})))}async function Nn(){await A.settle()&&(G.reset(),nt.value={},o("preferences-change",Object.freeze({...H.value})))}async function Mt(d="general"){if(v.value){v.value=!1;return}const k=A.settle();!(typeof k=="boolean"?k:await k)||W||!X.value||(C.value=d,v.value=!0)}function Tt(d){return d instanceof L.ReportCellEditError?{number:R.value.editInvalidNumber,boolean:R.value.editInvalidBoolean,conflict:R.value.editConflict,atomic:R.value.editAtomicRequired,limit:R.value.clipboardLimit,readonly:R.value.editReadOnly,missing:R.value.editMissing,recalculation:R.value.editRecalculationUnavailable,duplicate:R.value.editDuplicate,clipboard:R.value.clipboardInvalid}[d.code]??d.message:d instanceof Error?d.message:"单元格保存失败"}const A=Cl({plan:l,options:ue,blocked:()=>s.value||S.value||m.value!==null||h.value||be.pending.value,label:()=>R.value.editCell??"编辑单元格",errorMessage:Tt,suspendBlur:()=>be.request.value!==null,onChange:d=>{u.value=null,p.value=null,o("cell-edit",d)},onError:(d,k)=>{p.value={kind:"error",message:d},q(d,"edit",k)},onNavigate:(d,k,M)=>Q.navigate(d,k,M)}),Q=Ol({plan:l,root:E,enabled:()=>!!ue.value||at.value,editable:()=>!!ue.value,busy:()=>s.value||S.value||A.saving.value||!!m.value||h.value||be.pending.value,differences:()=>A.differences.value,gotoPage:pe,edit:A.editCell,apply:A.apply,undo:A.undo,redo:A.redo,error:d=>{const k=Tt(d);p.value={kind:"error",message:k},q(k,"edit",d)}}),rt=Co({plan:l,selection:Q.selection,enabled:()=>at.value});function Bn(){Mt("advanced")}const be=yr({pending:()=>A.pendingLocalChanges.value,reportIds:()=>ie.value?.reportIds??N.value,hook:()=>r.beforeDiscard??K.value.beforeDiscard,enabled:()=>oe.value,snapshot:()=>[l.value,A.active.value?.editor.input.value],error:d=>q(d instanceof Error?d.message:"修改保护回调失败","config",d)});async function In(d="leave"){return be.check(d)}function zt(d){!oe.value||!A.pendingLocalChanges.value||(d.preventDefault(),d.returnValue="")}function Ot(){Z.cancel()}function $n(d){const k=A.resolveAddress(d);k&&Q.focusCell(k)}async function Ft(d){await Q.focusField(d)||(p.value={kind:"warning",message:R.value.locateFieldMissing??"Field not found"})}function Vn(d){if(d.pageIndex===void 0)return;pe(d.pageIndex+1);const k=d.componentPath;d.componentIndex!==void 0&&k&&k.length===2&&Q.focusCell({pageIndex:d.pageIndex,componentIndex:d.componentIndex,rowIndex:k[0],columnIndex:k[1]})}function lt(d){const k=l.value;if(!k)return!1;const M={excel:"xlsx",image:"png",doc:"word"}[d]??d,ae=M==="pdf"?"pdf":M==="xlsx"?"xlsx":M==="png"?"canvas":"dom",Y=ee.inspect(k,ae);return l.value!==k?!1:Y.length&&Ce.value.fidelity==="strict"?(p.value={kind:"error",message:R.value.diagnosticsStrict??"输出存在已知降级"},q(p.value.message,"export",{diagnostics:Y}),!1):!0}function Pn(d){return l.value?ee.inspect(l.value,d):[]}const je=e.computed(()=>{if(V.value)return V.value.sheets.map(k=>({label:k.name,pageIndex:k.pageStart}));const d=new Set;return l.value?.pages.flatMap((k,M)=>k.components.flatMap(ae=>{const Y=ae.table;return!Y?.title||d.has(Y.id)?[]:(d.add(Y.id),[{label:Y.title,pageIndex:M}])}))??[]});async function At(d){d&&!await Q.focusField({field:d})&&(p.value={kind:"warning",message:R.value.locateFieldMissing??"Field not found"})}const st=e.computed(()=>{try{return{defs:r.paramDefs??P.value?.getParamDefs?.(N.value)??[],error:null}}catch(d){return{defs:[],error:new me.MachReportError("config",d instanceof Error?d.message:"查询参数配置无效",d)}}}),it=e.computed(()=>st.value.defs),Te=me.useReportParams({defs:it,reportIds:N,params:()=>r.params,messages:()=>R.value}),{values:ze,attempted:We,pendingRequired:Lt}=Te,qt=e.ref(null);function Rn(){We.value=!0,Te.validation.value.ok||e.nextTick(()=>qt.value?.focusInvalid()),Be()}function Dn(){Te.reset(),i.value="",u.value=null}const Mn=e.computed(()=>({height:r.height,"--mrp-page-gap":`${Math.max(0,B.value)}px`,...me.themeToCssVars(K.value.theme)})),{zoom:de,zoomMode:Oe,applyFitZoom:Kt,setZoom:Fe}=cn(()=>({viewport:y.value,pageWidthPx:ct.contentSize.value.w||210*xt})),ct=sn(l,de,{pxPerMm:xt,gapPx:B,overscan:e.computed(()=>K.value.preview.overscanPages)}),{contentSize:ut,windowRange:Ae,visiblePages:jt,makeScrollHandler:Tn,refreshViewport:dt}=ct,zn=Tn(f,I),ft=Fl({root:E,viewport:y,plan:l,zoom:de,options:()=>ve.value});e.watch([ve,de],()=>ft.schedule(),{flush:"post"});function mt(d){Fe(d*100)}function Ne(){S.value=!1,A.reset(),Q.reset(),V.value=null,Ht(),l.value=null,ie.value=null,ee.reset(),f.value=1,_.reset()}let re=0,le=null;function He(d,k){return d===re&&!k.signal.aborted&&!W}function Wt(){y.value&&(y.value.scrollTop=0,y.value.scrollLeft=0)}function On(d,k){for(const M of d){if(k!==re)return!1;o("warning",M)}return k===re}function Fn(){if(st.value.error){const k=st.value.error;return Ne(),i.value=k.message,q(k.message,k.code,k.cause),null}const d=Te.query();return d.params?d.params:(Ne(),i.value=d.quiet?"":d.error.message,d.quiet||(We.value=!0,q(d.error.message,d.error.code,d.error.cause)),null)}async function Be(){if(W||oe.value&&A.pendingLocalChanges.value&&!await be.check("reload")||W)return;const d=++re;S.value=!1,le?.abort(),le=null;const k=P.value;if(s.value=!1,u.value=null,N.value.length===0){i.value="缺少报表 ID",Ne(),q(i.value,"param");return}if(!k){i.value="未提供渲染数据源 fetcher",Ne(),q(i.value,"config");return}const M=Fn();if(!M)return;s.value=!0,i.value="",p.value=null,Ne();const ae=j.start(),Y=new AbortController;le=Y;const xe=Z.start("query","query",()=>{le===Y&&(Y.abort(),re++,le=null,s.value=!1)}),Ue=[...N.value],ye=Object.freeze({...M}),Ee=new Set;function Ve(fe){d!==re||Y.signal.aborted||Ee.has(fe)||(Ee.add(fe),K.value.logger.warn("[mach-report] 报表告警:",fe),ee.add({code:"layout",severity:"warning",message:fe}),o("warning",fe))}try{const fe=await Al(k,{reportIds:Ue,params:M,taskId:xe.taskId,onEvent:Se=>{d===re&&!Y.signal.aborted&&xe.update(Se.stage,Se.completed,Se.total)},onQueryResult:(Se,Yn)=>{d===re&&!Y.signal.aborted&&ee.addMany(Yn.diagnostics??[])},signal:Y.signal,onWarning:Ve},x.value,xe.update);if(!He(d,Y)||(l.value=fe,ie.value=Object.freeze({reportIds:Object.freeze(Ue),params:ye}),ee.inspect(fe,"dom"),!He(d,Y)))return;xe.finish(),f.value=1,j.end(ae),Wt();const Pe=te.value?Et:kt;Pe!==w&&(w=Pe,vt()),Oe.value==="fit"&&Kt(),o("loaded",fe.pages.length)}catch(fe){if(d!==re)return;if(Y.signal.aborted){xe.finish("cancelled");return}xe.finish("failed");const Pe=me.normalizeReportLoadError(fe);i.value=Pe.message;const Se=me.toErrorDetail(Pe);q(Pe.message,Se.code,Se.cause)}finally{d===re&&(s.value=!1),le===Y&&(le=null)}}function pe(d){if(W||I.value<=0)return;const k=Math.max(1,Math.min(I.value,d));f.value=k;const M=y.value;M&&(M.scrollTop=ct.pageOffsetPx(k-1)*de.value,dt(M),Jn.prioritize(k-1))}const Ie=fn(l,{getPdfExporter:kn,beforeOutput:()=>A.settle(),onTask:d=>Z.receive(d,()=>Ie.cancel()),onDiagnostic:ee.add,getXlsxOptions:()=>K.value.xlsx,onError:(d,k)=>{p.value={kind:"error",message:d},q(d,k??"print")},onWarning:d=>{p.value={kind:"warning",message:d},ee.add({code:"output",severity:"warning",message:d}),o("warning",d)},onBusy:d=>{m.value=d,d?p.value={kind:"progress",message:R.value.exporting.replace("{format}",d)}:p.value?.kind==="progress"&&(p.value=null)},onPrinting:d=>{h.value=d}}),{releasePrintFrame:Ht,dispose:An}=Ie;async function Ut(){if(s.value||S.value)return;const d=A.settle();(typeof d=="boolean"?d:await d)&&(u.value=null,lt("html")&&await Ie.print())}async function Gt(d){if(s.value||S.value)return;const k=A.settle();(typeof k=="boolean"?k:await k)&&(u.value=null,lt(d)&&await Ie.exportAs(d))}function Jt(){if(s.value||S.value||A.active.value||A.saving.value){p.value={kind:"warning",message:R.value.editingHint??"请先确认单元格修改"};return}u.value=null,lt("pdf")&&Ie.openPdfWindow()}async function Ln(d,k={}){W||(ze.value={...ze.value,...d},k.reload!==!1&&(We.value=!0,await Be()))}const Zt={reload:Be,print:Ut,exportAs:Gt,openPdfWindow:Jt,gotoPage:pe,setParams:Ln,checkPdfFont:En,importExcel:Yt,getPlan:qn,cancelTask:Ot,confirmDiscard:In,getOutputDiagnostics:Pn,getChanges:A.getChanges,undo:A.undo,redo:A.redo,restoreChanges:A.restore,getDifferences:()=>ge(A.differences.value),getSelection:()=>Q.selection.value?ge(Q.selection.value):null,focusCell:Q.focusCell,focusField:Q.focusField,copySelection:Q.copySelection,pasteSelection:Q.pasteSelection,get state(){return F.value}};e.provide(yt.MACH_REPORT_CONTROLLER_KEY,Zt);function qn(){return l.value?ge(l.value):null}function Kn(d){const k=typeof he.value=="object"?he.value:{};return{...k,...d,limits:{...k.limits,...d?.limits}}}function jn(d,k){A.reset(),Q.reset(),Ht(),_.reset(),l.value=d,ie.value=null,ee.reset(),V.value={sheets:ge(k.sheets),warnings:[...k.warnings]},f.value=1,i.value="",p.value=k.warnings.length?{kind:"warning",message:k.warnings.join(";")}:null,Wt(),w=te.value?Et:kt,vt(),ee.addMany(k.warnings.map(M=>({code:"excel-import",severity:"warning",message:M}))),l.value===d&&ee.inspect(d,"dom")}async function Yt(d,k){if(W)throw new me.MachReportError("config","报表预览已卸载");if(oe.value&&A.pendingLocalChanges.value&&!await be.check("import")||W)return null;const M=++re;le?.abort(),le=null,s.value=!1,A.cancel(),Ie.invalidatePending(),S.value=!0;const ae=new AbortController;le=ae,u.value=null,p.value={kind:"progress",message:R.value.importing??"正在导入 Excel…"};const Y=Z.start("import","import",()=>{le===ae&&(ae.abort(),re++,le=null,S.value=!1,p.value=null)}),xe=Kn(k),Ue=se.forwardOutputAbort(xe.signal,ae);try{const{result:ye,plan:Ee}=await Ll(d,{...xe,onProgress:(Ve,fe)=>{Y.update("import",Ve,fe),xe.onProgress?.(Ve,fe)}},x.value,ae.signal,Ve=>{M===re&&o("warning",Ve)},Y.update);return!He(M,ae)||!On(ye.warnings,M)||(jn(Ee,ye),!He(M,ae))?null:(Y.finish(),o("template-import",ye),M===re&&o("loaded",Ee.pages.length),ye)}catch(ye){if(M!==re)return null;if(ae.signal.aborted)return Y.finish("cancelled"),null;Y.finish("failed");const Ee=new me.MachReportError("import",ye instanceof Error?ye.message:"Excel 模板导入失败",ye);throw p.value={kind:"error",message:Ee.message},q(Ee.message,"import",ye),Ee}finally{Ue(),M===re&&(S.value=!1),le===ae&&(le=null)}}function Wn(d){const k=d.target,M=k.files?.[0];k.value="",M&&Yt(M).catch(()=>{})}const _=ha({plan:l,gotoPage:pe,debounceMs:e.computed(()=>K.value.preview.searchDebounceMs),highlight:ua,clearHighlights:ca});e.watch(()=>H.value.search,d=>{d||(_.reset(),_.visible.value=!1)});function Hn(d){!d.ctrlKey||!H.value.zoom||(d.preventDefault(),mt(de.value*(d.deltaY<0?1.1:1/1.1)))}function Un(d){if(!Q.onKeydown(d)&&!(d.target instanceof Element&&d.target.closest("input,textarea,select,[contenteditable='true']"))){if(H.value.search&&(d.ctrlKey||d.metaKey)&&d.key.toLowerCase()==="f"){d.preventDefault(),_.visible.value||_.toggle(),e.nextTick(()=>T.value?.focusSearch());return}switch(d.key){case"PageDown":d.preventDefault(),pe(f.value+1);break;case"PageUp":d.preventDefault(),pe(f.value-1);break;case"Home":d.preventDefault(),pe(1);break;case"End":d.preventDefault(),pe(I.value);break;case"+":case"=":d.preventDefault(),H.value.zoom&&mt(de.value*1.1);break;case"-":d.preventDefault(),H.value.zoom&&mt(de.value/1.1);break}}}function Gn(){try{localStorage.setItem(w,JSON.stringify({zoomMode:Oe.value==="fit"?"fit":Math.round(de.value*100)}))}catch{}}e.watch([Oe,de],Gn);let pt="";function Xt(d=!1){const k=_.activeMatch.value;if(!te.value||!k)return;const M=`${_.query.value}:${_.matchIndex.value}:${k.pageIndex}`;if(!d&&M===pt)return;const Y=E.value?.querySelector(`[data-page="${k.pageIndex+1}"]`)?.querySelectorAll("mark.mrp-hit")[k.occurrence];Y&&(Y.scrollIntoView?.({block:"nearest",inline:"nearest"}),pt=M)}const Jn=ra({plan:l,root:E,pages:()=>jt.value,priority:()=>_.activeMatch.value?.pageIndex??f.value-1,focusToken:()=>_.activeMatch.value,query:()=>_.query.value,zoom:()=>de.value,loading:()=>R.value.loading,clear:_.clear,highlight:_.apply,mounted:d=>{Q.refresh(d),ft.schedule()},ready:()=>{_.activeMatch.value||(pt=""),Xt()},error:d=>{i.value=d instanceof Error?d.message:String(d),q(i.value,"render",d)}});e.watch(()=>Q.selection.value,()=>{Q.refresh()},{flush:"post"}),e.watch(()=>_.query.value,d=>{d||E.value?.querySelectorAll(".mrp-page-holder").forEach(k=>{_.clear(k)})});const we=ba(l,{thumbsRoot:g,visible:c,renderThumbCanvas:d=>{try{const k=l.value.pages[d],M=Math.min(.2,116/Math.max(1,k.pageWidthMm*xt)),{canvases:ae}=L.renderPlanToCanvas(l.value,{start:d,end:d,dpr:M});return ae[0]??null}catch{return null}}});e.watchEffect(()=>{we.schedule()},{flush:"post"});const Zn=e.computed(()=>r.debug),{debugStats:$e}=ya(Zn,{plan:l,pageCount:I,windowRange:Ae,zoom:de,loadMs:j.loadMs});function gt(){dt(y.value),we.schedule(),Oe.value==="fit"&&Kt(),Xt(!0)}function vt(){Fe(w===Et?100:"fit");try{const d=JSON.parse(localStorage.getItem(w)??"{}");d.zoomMode==="fit"?Fe("fit"):typeof d.zoomMode=="number"&&Fe(d.zoomMode)}catch{}}return e.onMounted(()=>{window.addEventListener("resize",gt),window.addEventListener("beforeunload",zt),typeof ResizeObserver<"u"&&y.value&&(J=new ResizeObserver(gt),J.observe(y.value)),dt(y.value),vt(),r.autoLoad&&Be()}),e.onUnmounted(()=>{W=!0,be.cancel(),Z.cancel(),A.reset(),S.value=!1,Cn(),re++,le?.abort(),le=null,window.removeEventListener("resize",gt),window.removeEventListener("beforeunload",zt),J?.disconnect(),J=null,we.destroy(),_.reset(),An()}),e.watch(()=>[JSON.stringify(N.value),JSON.stringify(r.params),P.value],async()=>{if(r.autoLoad){Be();return}!await be.check("replace")||W||(re++,le?.abort(),le=null,s.value=!1,i.value="",u.value=null,p.value=null,Ne())}),n({...Zt,state:F}),(d,k)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["mach-report-preview",{"mrp-wide-report":te.value}]),style:e.normalizeStyle(Mn.value)},[e.unref(z)&&it.value.length>0?(e.openBlock(),e.createBlock(me.ReportParamPanel,{key:0,ref_key:"paramPanelRef",ref:qt,defs:it.value,modelValue:e.unref(ze),"onUpdate:modelValue":k[0]||(k[0]=M=>e.isRef(ze)?ze.value=M:null),messages:e.unref(R),attempted:e.unref(We),issues:e.unref(Te).validation.value.issues,onQuery:Rn,onReset:Dn},null,8,["defs","modelValue","messages","attempted","issues"])):e.createCommentVNode("",!0),e.createVNode(gn,{ref_key:"toolbarRef",ref:T,"page-count":I.value,"current-page":f.value,"zoom-mode":e.unref(Oe),zoom:e.unref(de),"show-export":e.unref(ne),"show-print":e.unref(H).print,"show-pdf-window":e.unref(H).pdfWindow,"show-search":e.unref(H).search,"show-thumbnails":e.unref(H).thumbnails,"show-zoom":e.unref(H).zoom,"export-formats":e.unref(ce),"show-settings":e.unref(X),"settings-open":v.value,messages:e.unref(R),search:{visible:e.unref(_).visible.value,query:e.unref(_).query.value,matchIndex:e.unref(_).matchIndex.value,matchCount:e.unref(_).matchCount.value,searching:e.unref(_).searching.value},"thumbs-visible":c.value,"show-import":!!e.unref(he),busy:s.value||S.value||e.unref(A).saving.value,onGoto:pe,onZoom:e.unref(Fe),onExport:k[1]||(k[1]=M=>Gt(M)),onPrint:Ut,onPdfWindow:Jt,onSearchInput:e.unref(_).onInput,onSearchNav:e.unref(_).onNav,onSearchToggle:e.unref(_).toggle,onThumbsToggle:k[2]||(k[2]=M=>c.value=!c.value),onImportExcel:k[3]||(k[3]=M=>D.value?.click()),onSettingsToggle:Mt},e.createSlots({_:2},[je.value.length<=1?{name:"navigation",fn:e.withCtx(()=>[I.value>0&&e.unref(ve).navigation!==!1?(e.openBlock(),e.createBlock(an,{key:0,plan:l.value,compact:"",sections:je.value,"current-page":f.value,messages:e.unref(R),busy:s.value||S.value||e.unref(A).saving.value,onLocateTarget:Ft,onGoto:pe,onLocate:At},null,8,["plan","sections","current-page","messages","busy"])):e.createCommentVNode("",!0)]),key:"0"}:void 0]),1032,["page-count","current-page","zoom-mode","zoom","show-export","show-print","show-pdf-window","show-search","show-thumbnails","show-zoom","export-formats","show-settings","settings-open","messages","search","thumbs-visible","show-import","busy","onZoom","onSearchInput","onSearchNav","onSearchToggle"]),e.unref(be).request.value?(e.openBlock(),e.createBlock(tr,{key:1,messages:e.unref(R),onAnswer:e.unref(be).settle},null,8,["messages","onAnswer"])):e.createCommentVNode("",!0),e.createVNode(lr,{task:e.unref(Z).state.value,messages:e.unref(R),onCancel:Ot},null,8,["task","messages"]),e.createVNode(mr,{entries:e.unref(ee).entries.value,messages:e.unref(R),onLocate:Vn},null,8,["entries","messages"]),v.value&&e.unref(X)?(e.openBlock(),e.createBlock(Zo,{key:2,available:e.unref(O),enabled:e.unref(H),messages:e.unref(R),"persisted-editing":e.unref(Ke),interaction:e.unref(ve),section:C.value,busy:s.value||S.value||e.unref(A).saving.value||!!m.value||h.value,onSection:k[4]||(k[4]=M=>C.value=M),onInteraction:k[5]||(k[5]=M=>nt.value={...e.unref(nt),...M}),onChange:Sn,onReset:Nn,onClose:k[6]||(k[6]=M=>v.value=!1)},{advanced:e.withCtx(()=>[e.createVNode(Eo,{state:e.unref(rt),messages:ot.value},null,8,["state","messages"])]),default:e.withCtx(()=>[e.renderSlot(d.$slots,"settings",{},void 0,!0)]),_:3},8,["available","enabled","messages","persisted-editing","interaction","section","busy"])):e.createCommentVNode("",!0),je.value.length>1&&I.value>0&&e.unref(ve).navigation!==!1?(e.openBlock(),e.createBlock(an,{key:3,plan:l.value,onLocateTarget:Ft,sections:je.value,"current-page":f.value,messages:e.unref(R),busy:s.value||S.value||e.unref(A).saving.value,onGoto:pe,onLocate:At},null,8,["plan","sections","current-page","messages","busy"])):e.createCommentVNode("",!0),V.value?(e.openBlock(),e.createBlock(cl,{key:4,result:V.value,messages:e.unref(R)},null,8,["result","messages"])):e.createCommentVNode("",!0),e.unref(ue)&&I.value>0?(e.openBlock(),e.createBlock(Or,{key:5,differences:e.unref(A).differences.value,conflicts:e.unref(A).conflicts.value,messages:e.unref(R),saving:e.unref(A).saving.value,"can-undo":e.unref(A).canUndo.value,"can-redo":e.unref(A).canRedo.value,persisted:e.unref(Ke),busy:!!m.value||h.value,onUndo:e.unref(A).undo,onRedo:e.unref(A).redo,onRestore:e.unref(A).restore,onLocate:$n},null,8,["differences","conflicts","messages","saving","can-undo","can-redo","persisted","busy","onUndo","onRedo","onRestore"])):e.createCommentVNode("",!0),e.unref(he)?(e.openBlock(),e.createElementBlock("input",{key:6,ref_key:"importInputRef",ref:D,class:"mrp-import-input",type:"file",accept:".xlsx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",hidden:"",onChange:Wn},null,544)):e.createCommentVNode("",!0),e.unref(ue)&&I.value>0?(e.openBlock(),e.createElementBlock("div",ql,e.toDisplayString(e.unref(A).saving.value?e.unref(R).saving:e.unref(R).editingHint),1)):e.createCommentVNode("",!0),p.value?(e.openBlock(),e.createElementBlock("div",{key:8,class:e.normalizeClass(["mrp-export-notice",`mrp-export-${p.value.kind}`]),role:"alert"},e.toDisplayString(p.value.message),3)):e.createCommentVNode("",!0),e.unref(Rt).status==="error"&&Pt.value?(e.openBlock(),e.createElementBlock("div",Kl,[e.createTextVNode(e.toDisplayString(e.unref(R).pdfFontUnavailable)+" ",1),e.createElementVNode("button",{type:"button",onClick:k[7]||(k[7]=(...M)=>e.unref(Dt)&&e.unref(Dt)(...M))},e.toDisplayString(e.unref(R).retry),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",jl,[e.createElementVNode("div",{ref_key:"viewportRef",ref:y,class:"mrp-body",tabindex:"0",onWheel:Hn,onKeydown:Un,onDblclick:k[8]||(k[8]=(...M)=>e.unref(A).onDoubleClick&&e.unref(A).onDoubleClick(...M)),onClick:k[9]||(k[9]=(...M)=>e.unref(Q).onClick&&e.unref(Q).onClick(...M)),onCopy:k[10]||(k[10]=(...M)=>e.unref(Q).onCopy&&e.unref(Q).onCopy(...M)),onPaste:k[11]||(k[11]=(...M)=>e.unref(Q).onPaste&&e.unref(Q).onPaste(...M)),onScrollPassive:k[12]||(k[12]=M=>{e.unref(zn)(M.target),e.unref(ft).schedule()})},[s.value?(e.openBlock(),e.createElementBlock("div",Wl,e.toDisplayString(e.unref(R).loading),1)):i.value?(e.openBlock(),e.createElementBlock("div",Hl,[e.createTextVNode(e.toDisplayString(i.value)+" ",1),e.createElementVNode("button",{class:"mrp-retry",type:"button",onClick:Be},e.toDisplayString(e.unref(R).retry),1)])):!l.value||I.value===0?(e.openBlock(),e.createBlock(tn,{key:2,title:e.unref(Lt)?e.unref(R).paramPrompt??e.unref(R).paramsTitle:e.unref(R).empty,description:e.unref(Lt)?e.unref(R).paramPromptDescription:e.unref(tt).description??e.unref(R).emptyDescription},null,8,["title","description"])):(e.openBlock(),e.createElementBlock("div",{key:3,class:"mrp-scale",style:e.normalizeStyle({width:`${e.unref(ut).w*e.unref(de)}px`,height:`${e.unref(ut).h*e.unref(de)}px`})},[e.createElementVNode("div",{ref_key:"containerRef",ref:E,class:"mrp-scale-inner",style:e.normalizeStyle({transform:`scale(${e.unref(de)})`,transformOrigin:"top left",width:`${e.unref(ut).w}px`})},[e.unref(Ae).padTopPx>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mrp-spacer-top",style:e.normalizeStyle({height:`${e.unref(Ae).padTopPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(jt),M=>(e.openBlock(),e.createElementBlock("div",{key:M.index,class:"mrp-page-holder","data-page":M.index+1},null,8,Ul))),128)),e.unref(Ae).padBottomPx>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:"mrp-spacer-bottom",style:e.normalizeStyle({height:`${e.unref(Ae).padBottomPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0)],4)],4)),!s.value&&!i.value&&l.value&&I.value>0&&t.emptyState?(e.openBlock(),e.createBlock(tn,{key:4,title:e.unref(tt).title??e.unref(R).empty,description:e.unref(tt).description??e.unref(R).emptyDescription},null,8,["title","description"])):e.createCommentVNode("",!0)],544),e.unref(H).thumbnails&&c.value&&I.value>0?(e.openBlock(),e.createElementBlock("aside",{key:0,ref_key:"thumbsRef",ref:g,class:"mrp-thumbs",onScrollPassive:k[13]||(k[13]=(...M)=>e.unref(we).onScroll&&e.unref(we).onScroll(...M))},[e.unref(we).windowRange.value.padTopPx>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mrp-thumb-spacer",style:e.normalizeStyle({height:`${e.unref(we).windowRange.value.padTopPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(we).visibleThumbs.value,M=>(e.openBlock(),e.createElementBlock("button",{key:M.index,class:e.normalizeClass(["mrp-thumb",{"mrp-thumb-active":M.index+1===f.value}]),type:"button","aria-label":`${e.unref(R).thumbnails} · ${e.unref(R).pageInfo.replace("{cur}",String(M.index+1)).replace("{total}",String(I.value))}`,"aria-current":M.index+1===f.value?"page":void 0,style:e.normalizeStyle({height:`${M.height+20}px`}),onClick:ae=>pe(M.index+1)},[e.createElementVNode("span",{class:"mrp-thumb-box","data-thumb":M.index+1,style:e.normalizeStyle({height:`${M.height}px`})},null,12,Jl),e.createElementVNode("span",Zl,e.toDisplayString(M.index+1),1)],14,Gl))),128)),e.unref(we).windowRange.value.padBottomPx>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:"mrp-thumb-spacer",style:e.normalizeStyle({height:`${e.unref(we).windowRange.value.padBottomPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0)],544)):e.createCommentVNode("",!0)]),I.value>0?(e.openBlock(),e.createElementBlock("footer",Yl,[e.createElementVNode("div",Xl,[at.value&&e.unref(X)?(e.openBlock(),e.createElementBlock("button",{key:0,class:"mrp-calculation-toggle",type:"button","aria-label":ot.value.calculationTitle,onClick:Bn},[k[14]||(k[14]=e.createElementVNode("span",{"aria-hidden":"true"},"∑",-1)),e.createTextVNode(e.toDisplayString(ot.value.calculationTitle),1),e.unref(rt).result.value?(e.openBlock(),e.createElementBlock("strong",_l,e.toDisplayString(e.unref(rt).result.value.formatted),1)):e.createCommentVNode("",!0)],8,Ql)):e.createCommentVNode("",!0)]),e.createVNode(Vt,{"page-count":I.value,"current-page":f.value,messages:e.unref(R),busy:s.value||S.value||e.unref(A).saving.value,onGoto:pe},null,8,["page-count","current-page","messages","busy"])])):e.createCommentVNode("",!0),e.createElementVNode("div",es,[e.renderSlot(d.$slots,"default",{},void 0,!0)]),e.unref($e)?(e.openBlock(),e.createElementBlock("div",ts,[k[15]||(k[15]=e.createElementVNode("div",null,"mach-report debug",-1)),e.createElementVNode("div",null,"pages: "+e.toDisplayString(e.unref($e).pages)+" | window: ["+e.toDisplayString(e.unref($e).window)+"]",1),e.createElementVNode("div",null,"zoom: "+e.toDisplayString(e.unref($e).zoom)+" | load: "+e.toDisplayString(e.unref($e).loadMs),1),e.createElementVNode("div",null,"plan: "+e.toDisplayString(e.unref($e).planKB)+"KB",1)])):e.createCommentVNode("",!0)],6))}}),xn=U._export_sfc(ns,[["__scopeId","data-v-8490b9dc"]]),as=Object.freeze(Object.defineProperty({__proto__:null,default:xn},Symbol.toStringTag,{value:"Module"}));exports.PlanLoadError=Ge;exports.REPORT_EXPORT_FORMATS=_e;exports.REPORT_PREVIEW_TOOLS=Nt;exports.ReportPagination=Vt;exports.ReportPreview=xn;exports.ReportPreview$1=as;exports.ReportToolbar=gn;exports.buildPrintDocument=un;exports.buildWordHtml=ia;exports.cloneReportSnapshot=ge;exports.createDefaultPdfExporter=vn;exports.createFetchRequest=oa;exports.createReportStoragePreferences=Sl;exports.joinReportIds=aa;exports.normalizeReportIds=$t;exports.printPlans=sa;exports.usePageWindow=sn;exports.usePrintExport=fn;exports.useZoom=cn;