@agile-team/mach-report 2.4.0 → 2.5.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.
@@ -48,6 +48,19 @@ showPdfWindow: {
48
48
  type: BooleanConstructor;
49
49
  default: undefined;
50
50
  };
51
+ showSettings: {
52
+ type: BooleanConstructor;
53
+ default: undefined;
54
+ };
55
+ toolbar: {
56
+ type: PropType<MachReportToolbarOptions>;
57
+ default: undefined;
58
+ };
59
+ /** 保留表头的零行业务结果;不改变计划和导出内容。 */
60
+ emptyState: {
61
+ type: PropType<boolean | ReportEmptyState>;
62
+ default: boolean;
63
+ };
51
64
  /** 页间距(px);不传走配置中心 */
52
65
  gapPx: {
53
66
  type: NumberConstructor;
@@ -111,6 +124,7 @@ loaded: (pageCount: number) => any;
111
124
  warning: (message: string) => any;
112
125
  "cell-edit": (edit: ReportCellEdit_2) => any;
113
126
  "template-import": (result: ExcelImportResult) => any;
127
+ "preferences-change": (preferences: Readonly<ReportPreviewPreferences>) => any;
114
128
  }, string, PublicProps, Readonly<ExtractPropTypes< {
115
129
  reportId: {
116
130
  type: PropType<string | string[] | null>;
@@ -141,6 +155,19 @@ showPdfWindow: {
141
155
  type: BooleanConstructor;
142
156
  default: undefined;
143
157
  };
158
+ showSettings: {
159
+ type: BooleanConstructor;
160
+ default: undefined;
161
+ };
162
+ toolbar: {
163
+ type: PropType<MachReportToolbarOptions>;
164
+ default: undefined;
165
+ };
166
+ /** 保留表头的零行业务结果;不改变计划和导出内容。 */
167
+ emptyState: {
168
+ type: PropType<boolean | ReportEmptyState>;
169
+ default: boolean;
170
+ };
144
171
  /** 页间距(px);不传走配置中心 */
145
172
  gapPx: {
146
173
  type: NumberConstructor;
@@ -192,6 +219,7 @@ onLoaded?: ((pageCount: number) => any) | undefined;
192
219
  onWarning?: ((message: string) => any) | undefined;
193
220
  "onCell-edit"?: ((edit: ReportCellEdit_2) => any) | undefined;
194
221
  "onTemplate-import"?: ((result: ExcelImportResult) => any) | undefined;
222
+ "onPreferences-change"?: ((preferences: Readonly<ReportPreviewPreferences>) => any) | undefined;
195
223
  }>, {
196
224
  editable: boolean | ReportEditingOptions;
197
225
  height: string;
@@ -202,10 +230,13 @@ debug: boolean;
202
230
  showExport: boolean;
203
231
  showPrint: boolean;
204
232
  showPdfWindow: boolean;
233
+ showSettings: boolean;
205
234
  showParams: boolean;
235
+ toolbar: MachReportToolbarOptions;
206
236
  messages: Partial<MachReportMessages>;
207
237
  excelImport: boolean | ExcelImportOptions;
208
238
  autoLoad: boolean;
239
+ emptyState: boolean | ReportEmptyState;
209
240
  preset: string;
210
241
  paramDefs: ReportParamDef[] | undefined;
211
242
  fetcher: PlanFetcher | null;
@@ -234,6 +265,12 @@ declare type __VLS_Props = {
234
265
  };
235
266
  thumbsVisible: boolean;
236
267
  showImport?: boolean;
268
+ showSearch?: boolean;
269
+ showThumbnails?: boolean;
270
+ showZoom?: boolean;
271
+ exportFormats?: readonly ReportExportFormat[];
272
+ showSettings?: boolean;
273
+ settingsOpen?: boolean;
237
274
  busy?: boolean;
238
275
  };
239
276
 
@@ -248,6 +285,7 @@ declare type __VLS_Props_2 = {
248
285
  declare function __VLS_template(): {
249
286
  attrs: Partial<{}>;
250
287
  slots: {
288
+ settings?(_: {}): any;
251
289
  default?(_: {}): any;
252
290
  };
253
291
  refs: {
@@ -944,6 +982,9 @@ export declare interface MachReportDefaults {
944
982
  showExport?: boolean;
945
983
  showPrint?: boolean;
946
984
  showPdfWindow?: boolean;
985
+ /** 设置入口默认显示;可在其中按需启用阅读及输出工具。 */
986
+ showSettings?: boolean;
987
+ toolbar?: MachReportToolbarOptions;
947
988
  /** 参数面板显隐(有参数定义且未显式关闭时显示;缺省 true) */
948
989
  showParams?: boolean;
949
990
  /** 页间距 px */
@@ -1054,6 +1095,20 @@ export declare interface MachReportMessages {
1054
1095
  editInvalidNumber?: string;
1055
1096
  editInvalidBoolean?: string;
1056
1097
  editConflict?: string;
1098
+ settings?: string;
1099
+ settingsDisplay?: string;
1100
+ settingsExport?: string;
1101
+ settingsData?: string;
1102
+ settingsUnavailable?: string;
1103
+ settingsReset?: string;
1104
+ settingsClose?: string;
1105
+ search?: string;
1106
+ zoom?: string;
1107
+ settingsLocal?: string;
1108
+ editingLocal?: string;
1109
+ editingSaved?: string;
1110
+ importLocal?: string;
1111
+ emptyDescription?: string;
1057
1112
  }
1058
1113
 
1059
1114
  /**
@@ -1121,6 +1176,18 @@ export declare const MachReportPreview: {
1121
1176
  type: BooleanConstructor;
1122
1177
  default: undefined;
1123
1178
  };
1179
+ showSettings: {
1180
+ type: BooleanConstructor;
1181
+ default: undefined;
1182
+ };
1183
+ toolbar: {
1184
+ type: PropType<MachReportToolbarOptions>;
1185
+ default: undefined;
1186
+ };
1187
+ emptyState: {
1188
+ type: PropType<boolean | ReportEmptyState>;
1189
+ default: boolean;
1190
+ };
1124
1191
  gapPx: {
1125
1192
  type: NumberConstructor;
1126
1193
  default: undefined;
@@ -1166,6 +1233,7 @@ export declare const MachReportPreview: {
1166
1233
  onWarning?: ((message: string) => any) | undefined;
1167
1234
  "onCell-edit"?: ((edit: ReportCellEdit_2) => any) | undefined;
1168
1235
  "onTemplate-import"?: ((result: ExcelImportResult_2) => any) | undefined;
1236
+ "onPreferences-change"?: ((preferences: Readonly<ReportPreviewPreferences>) => any) | undefined;
1169
1237
  }>, {
1170
1238
  reload: () => Promise<void>;
1171
1239
  print: () => Promise<void>;
@@ -1189,6 +1257,7 @@ export declare const MachReportPreview: {
1189
1257
  warning: (message: string) => any;
1190
1258
  "cell-edit": (edit: ReportCellEdit_2) => any;
1191
1259
  "template-import": (result: ExcelImportResult_2) => any;
1260
+ "preferences-change": (preferences: Readonly<ReportPreviewPreferences>) => any;
1192
1261
  }, PublicProps, {
1193
1262
  editable: boolean | ReportEditingOptions;
1194
1263
  height: string;
@@ -1199,10 +1268,13 @@ export declare const MachReportPreview: {
1199
1268
  showExport: boolean;
1200
1269
  showPrint: boolean;
1201
1270
  showPdfWindow: boolean;
1271
+ showSettings: boolean;
1202
1272
  showParams: boolean;
1273
+ toolbar: MachReportToolbarOptions;
1203
1274
  messages: Partial<MachReportMessages>;
1204
1275
  excelImport: boolean | ExcelImportOptions_2;
1205
1276
  autoLoad: boolean;
1277
+ emptyState: boolean | ReportEmptyState;
1206
1278
  preset: string;
1207
1279
  paramDefs: ReportParamDef[] | undefined;
1208
1280
  fetcher: PlanFetcher | null;
@@ -1247,6 +1319,18 @@ export declare const MachReportPreview: {
1247
1319
  type: BooleanConstructor;
1248
1320
  default: undefined;
1249
1321
  };
1322
+ showSettings: {
1323
+ type: BooleanConstructor;
1324
+ default: undefined;
1325
+ };
1326
+ toolbar: {
1327
+ type: PropType<MachReportToolbarOptions>;
1328
+ default: undefined;
1329
+ };
1330
+ emptyState: {
1331
+ type: PropType<boolean | ReportEmptyState>;
1332
+ default: boolean;
1333
+ };
1250
1334
  gapPx: {
1251
1335
  type: NumberConstructor;
1252
1336
  default: undefined;
@@ -1292,6 +1376,7 @@ export declare const MachReportPreview: {
1292
1376
  onWarning?: ((message: string) => any) | undefined;
1293
1377
  "onCell-edit"?: ((edit: ReportCellEdit_2) => any) | undefined;
1294
1378
  "onTemplate-import"?: ((result: ExcelImportResult_2) => any) | undefined;
1379
+ "onPreferences-change"?: ((preferences: Readonly<ReportPreviewPreferences>) => any) | undefined;
1295
1380
  }>, {
1296
1381
  reload: () => Promise<void>;
1297
1382
  print: () => Promise<void>;
@@ -1316,10 +1401,13 @@ export declare const MachReportPreview: {
1316
1401
  showExport: boolean;
1317
1402
  showPrint: boolean;
1318
1403
  showPdfWindow: boolean;
1404
+ showSettings: boolean;
1319
1405
  showParams: boolean;
1406
+ toolbar: MachReportToolbarOptions;
1320
1407
  messages: Partial<MachReportMessages>;
1321
1408
  excelImport: boolean | ExcelImportOptions_2;
1322
1409
  autoLoad: boolean;
1410
+ emptyState: boolean | ReportEmptyState;
1323
1411
  preset: string;
1324
1412
  paramDefs: ReportParamDef[] | undefined;
1325
1413
  fetcher: PlanFetcher | null;
@@ -1356,6 +1444,18 @@ showPdfWindow: {
1356
1444
  type: BooleanConstructor;
1357
1445
  default: undefined;
1358
1446
  };
1447
+ showSettings: {
1448
+ type: BooleanConstructor;
1449
+ default: undefined;
1450
+ };
1451
+ toolbar: {
1452
+ type: PropType<MachReportToolbarOptions>;
1453
+ default: undefined;
1454
+ };
1455
+ emptyState: {
1456
+ type: PropType<boolean | ReportEmptyState>;
1457
+ default: boolean;
1458
+ };
1359
1459
  gapPx: {
1360
1460
  type: NumberConstructor;
1361
1461
  default: undefined;
@@ -1401,6 +1501,7 @@ onLoaded?: ((pageCount: number) => any) | undefined;
1401
1501
  onWarning?: ((message: string) => any) | undefined;
1402
1502
  "onCell-edit"?: ((edit: ReportCellEdit_2) => any) | undefined;
1403
1503
  "onTemplate-import"?: ((result: ExcelImportResult_2) => any) | undefined;
1504
+ "onPreferences-change"?: ((preferences: Readonly<ReportPreviewPreferences>) => any) | undefined;
1404
1505
  }>, {
1405
1506
  reload: () => Promise<void>;
1406
1507
  print: () => Promise<void>;
@@ -1424,6 +1525,7 @@ loaded: (pageCount: number) => any;
1424
1525
  warning: (message: string) => any;
1425
1526
  "cell-edit": (edit: ReportCellEdit_2) => any;
1426
1527
  "template-import": (result: ExcelImportResult_2) => any;
1528
+ "preferences-change": (preferences: Readonly<ReportPreviewPreferences>) => any;
1427
1529
  }, string, {
1428
1530
  editable: boolean | ReportEditingOptions;
1429
1531
  height: string;
@@ -1434,15 +1536,19 @@ debug: boolean;
1434
1536
  showExport: boolean;
1435
1537
  showPrint: boolean;
1436
1538
  showPdfWindow: boolean;
1539
+ showSettings: boolean;
1437
1540
  showParams: boolean;
1541
+ toolbar: MachReportToolbarOptions;
1438
1542
  messages: Partial<MachReportMessages>;
1439
1543
  excelImport: boolean | ExcelImportOptions_2;
1440
1544
  autoLoad: boolean;
1545
+ emptyState: boolean | ReportEmptyState;
1441
1546
  preset: string;
1442
1547
  paramDefs: ReportParamDef[] | undefined;
1443
1548
  fetcher: PlanFetcher | null;
1444
1549
  }, {}, string, {}, { [K in keyof GlobalComponents]: GlobalComponents[K] }, { [K in keyof GlobalDirectives]: GlobalDirectives[K] }, string, ComponentProvideOptions> & VNodeProps & AllowedComponentProps & ComponentCustomProps & (new () => {
1445
1550
  $slots: {
1551
+ settings?(_: {}): any;
1446
1552
  default?(_: {}): any;
1447
1553
  };
1448
1554
  });
@@ -1494,6 +1600,18 @@ export declare interface MachReportTheme {
1494
1600
  btnActiveBg: string;
1495
1601
  }
1496
1602
 
1603
+ export declare interface MachReportToolbarOptions {
1604
+ search?: boolean;
1605
+ thumbnails?: boolean;
1606
+ zoom?: boolean;
1607
+ /** 编辑能力由 editable 授权;此项仅设置初始交互偏好,默认 true(兼容旧行为)。 */
1608
+ editing?: boolean;
1609
+ /** 导入能力由 excelImport 授权;此项仅设置初始交互偏好,默认 true。 */
1610
+ excelImport?: boolean;
1611
+ /** 未传时显示全部已有出口;空数组表示不提供导出工具。 */
1612
+ exportFormats?: ReportExportFormat[];
1613
+ }
1614
+
1497
1615
  export declare function normalizeReportIds(reportId: ReportIdInput): string[];
1498
1616
 
1499
1617
  declare function openPdfWindow(): void;
@@ -1712,6 +1830,10 @@ declare interface RenderPlan {
1712
1830
  pages: PlanPage[];
1713
1831
  }
1714
1832
 
1833
+ export declare const REPORT_EXPORT_FORMATS: readonly ReportExportFormat[];
1834
+
1835
+ export declare const REPORT_PREVIEW_TOOLS: readonly ["search", "thumbnails", "zoom", ...ReportExportFormat[], "print", "pdfWindow", "editing", "import"];
1836
+
1715
1837
  /** 预览中的物理坐标;合并单元格使用左上角坐标。 */
1716
1838
  declare interface ReportCellAddress {
1717
1839
  pageIndex: number;
@@ -1806,6 +1928,15 @@ export declare interface ReportEditOperation {
1806
1928
  signal: AbortSignal;
1807
1929
  }
1808
1930
 
1931
+ /** 报表含表头但业务行为空时,由接入方明确声明;组件不推测业务数据。 */
1932
+ export declare interface ReportEmptyState {
1933
+ title?: string;
1934
+ description?: string;
1935
+ }
1936
+
1937
+ /** 输出能力仍由宿主授权;工具偏好只决定当前预览实例的可见与启用状态。 */
1938
+ export declare type ReportExportFormat = "html" | "pdf" | "xlsx" | "png" | "word";
1939
+
1809
1940
  /** 保持 Promise<RenderPlan> 契约;元数据为可选,旧业务 fetcher 无需改造。 */
1810
1941
  declare interface ReportFetcher {
1811
1942
  (input: ReportFetchInput): Promise<RenderPlan>;
@@ -1889,6 +2020,10 @@ onQuery?: (() => any) | undefined;
1889
2020
 
1890
2021
  export declare const ReportPreview: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
1891
2022
 
2023
+ export declare type ReportPreviewPreferences = Record<ReportPreviewTool, boolean>;
2024
+
2025
+ export declare type ReportPreviewTool = typeof REPORT_PREVIEW_TOOLS[number];
2026
+
1892
2027
  declare type ReportRegistry = Record<string, ReportDefinition>;
1893
2028
 
1894
2029
  declare interface ReportTemplate {
@@ -1925,6 +2060,7 @@ goto: (page: number) => any;
1925
2060
  "search-toggle": () => any;
1926
2061
  "thumbs-toggle": () => any;
1927
2062
  "import-excel": () => any;
2063
+ "settings-toggle": () => any;
1928
2064
  }, string, PublicProps, Readonly<__VLS_Props> & Readonly<{
1929
2065
  onPrint?: (() => any) | undefined;
1930
2066
  onExport?: ((format: "html" | "png" | "pdf" | "xlsx" | "word") => any) | undefined;
@@ -1936,13 +2072,14 @@ onGoto?: ((page: number) => any) | undefined;
1936
2072
  "onSearch-toggle"?: (() => any) | undefined;
1937
2073
  "onThumbs-toggle"?: (() => any) | undefined;
1938
2074
  "onImport-excel"?: (() => any) | undefined;
2075
+ "onSettings-toggle"?: (() => any) | undefined;
1939
2076
  }>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {
1940
2077
  searchInputRef: HTMLInputElement;
1941
2078
  }, HTMLDivElement>;
1942
2079
 
1943
2080
  export declare function resolveConfig(config: MachReportConfig | null | undefined, presetName?: string): ResolvedConfig;
1944
2081
 
1945
- export declare type ResolvedConfig = Required<Pick<MachReportDefaults, "showExport" | "showPrint" | "showPdfWindow" | "showParams" | "gapPx">> & {
2082
+ export declare type ResolvedConfig = Required<Pick<MachReportDefaults, "showExport" | "showPrint" | "showPdfWindow" | "showSettings" | "showParams" | "gapPx">> & {
1946
2083
  pdfFontUrl: string;
1947
2084
  theme: MachReportTheme;
1948
2085
  messages: MachReportMessages;
@@ -1951,6 +2088,7 @@ export declare type ResolvedConfig = Required<Pick<MachReportDefaults, "showExpo
1951
2088
  xlsx: XlsxRenderOptions;
1952
2089
  editable: boolean | ReportEditingOptions;
1953
2090
  excelImport: boolean | ExcelImportOptions;
2091
+ toolbar: MachReportToolbarOptions;
1954
2092
  };
1955
2093
 
1956
2094
  declare interface RichParagraph {
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("./plugin-BkK2mm_p.cjs");function i(){return Promise.resolve().then(()=>require("./ReportPreview-DJvv3h8m.cjs")).then(e=>e.ReportPreview$1)}const t={install(e,o={}){r.machReportPlugin.install(e,o)}};exports.MachReportPreview=r.MachReportPreview;exports.default=t;exports.machReportAsyncPlugin=t;exports.preloadMachReport=i;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("./plugin-DMPLDpBY.cjs");function i(){return Promise.resolve().then(()=>require("./ReportPreview-ClM8h0pM.cjs")).then(e=>e.ReportPreview$1)}const t={install(e,o={}){r.machReportPlugin.install(e,o)}};exports.MachReportPreview=r.MachReportPreview;exports.default=t;exports.machReportAsyncPlugin=t;exports.preloadMachReport=i;
package/dist/vue-async.js CHANGED
@@ -1,7 +1,7 @@
1
- import { m as o } from "./plugin-DRnvIbdP.js";
2
- import { M as l } from "./plugin-DRnvIbdP.js";
1
+ import { m as o } from "./plugin-DDLcFWlk.js";
2
+ import { M as l } from "./plugin-DDLcFWlk.js";
3
3
  function a() {
4
- return import("./ReportPreview-CL9J9MEE.js").then((t) => t.s);
4
+ return import("./ReportPreview-CBKLI--k.js").then((t) => t.w);
5
5
  }
6
6
  const n = {
7
7
  install(t, r = {}) {
package/dist/vue.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("@agile-team/mach-report"),e=require("./ReportPreview-DJvv3h8m.cjs"),c=require("./plugin-BkK2mm_p.cjs"),u=require("vue");function p(o){const r=s.createReportSource(o),i=async n=>{if(n.reportIds.length===0)throw new e.PlanLoadError("缺少报表 ID");for(const t of n.reportIds)if(!Object.prototype.hasOwnProperty.call(o,t)||!o[t])throw new e.PlanLoadError(`本地模板 ${t} 不存在`);return r(n)};return i.getParamDefs=r.getParamDefs,i}const f=Object.freeze({loading:!1,hasPlan:!1,pageCount:0,currentPage:1,exporting:null,printing:!1,canExport:!1,canPrint:!1,error:null,pdfFont:Object.freeze({status:"unchecked",fontUrl:""})});function P(){const o=u.shallowRef(null),r=()=>o.value?.state??f,i=Object.freeze({get loading(){return r().loading},get hasPlan(){return r().hasPlan},get pageCount(){return r().pageCount},get currentPage(){return r().currentPage},get exporting(){return r().exporting},get printing(){return r().printing},get canExport(){return r().canExport},get canPrint(){return r().canPrint},get error(){return r().error},get pdfFont(){return r().pdfFont},get editing(){return r().editing??!1},get saving(){return r().saving??!1},get importing(){return r().importing??!1},get dirty(){return r().dirty??!1}});function n(){if(!o.value)throw new e.MachReportError("config","报表预览尚未挂载,请在 ready 后调用控制器");return o.value}return{ref(t){const a=t;o.value=a&&typeof a.reload=="function"&&typeof a.print=="function"&&typeof a.exportAs=="function"&&typeof a.openPdfWindow=="function"&&typeof a.gotoPage=="function"&&typeof a.setParams=="function"?a:null},ready:u.computed(()=>o.value!==null),state:i,async checkPdfFont(){const t=n();return t.checkPdfFont?t.checkPdfFont():{status:"unverified",fontUrl:"",message:"旧自定义控制器未提供字体检查,请由宿主确认字体配置"}},async reload(){await n().reload()},async print(){await n().print()},async exportAs(t){await n().exportAs(t)},openPdfWindow(){n().openPdfWindow()},gotoPage(t){n().gotoPage(t)},async setParams(t,a){await n().setParams(t,a)},async importExcel(t,a){const l=n();if(!l.importExcel)throw new e.MachReportError("config","旧自定义控制器未提供 Excel 导入");return l.importExcel(t,a)},getPlan(){return n().getPlan?.()??null},getChanges(){return n().getChanges?.()??[]}}}function g(){return u.inject(c.MACH_REPORT_CONTROLLER_KEY,null)}exports.DEFAULT_MESSAGES=e.DEFAULT_MESSAGES;exports.DEFAULT_THEME=e.DEFAULT_THEME;exports.MachReportError=e.MachReportError;exports.PlanLoadError=e.PlanLoadError;exports.ReportParamPanel=e.ReportParamPanel;exports.ReportPreview=e.ReportPreview;exports.ReportToolbar=e.ReportToolbar;exports.SILENT_LOGGER=e.SILENT_LOGGER;exports.buildPrintDocument=e.buildPrintDocument;exports.buildWordHtml=e.buildWordHtml;exports.createDefaultPdfExporter=e.createDefaultPdfExporter;exports.createFetchRequest=e.createFetchRequest;exports.defineMachReportConfig=e.defineMachReportConfig;exports.defineMachReportPreset=e.defineMachReportPreset;exports.joinReportIds=e.joinReportIds;exports.normalizeReportIds=e.normalizeReportIds;exports.printPlans=e.printPlans;exports.provideMachReportConfig=e.provideMachReportConfig;exports.resolveConfig=e.resolveConfig;exports.themeToCssVars=e.themeToCssVars;exports.toErrorDetail=e.toErrorDetail;exports.useMachReportConfig=e.useMachReportConfig;exports.usePageWindow=e.usePageWindow;exports.usePrintExport=e.usePrintExport;exports.useZoom=e.useZoom;exports.MACH_REPORT_CONFIG_KEY=c.MACH_REPORT_CONFIG_KEY;exports.MACH_REPORT_CONTROLLER_KEY=c.MACH_REPORT_CONTROLLER_KEY;exports.MACH_REPORT_FETCHER_KEY=c.MACH_REPORT_FETCHER_KEY;exports.MACH_REPORT_PDF_EXPORTER_KEY=c.MACH_REPORT_PDF_EXPORTER_KEY;exports.MachReportPreview=c.MachReportPreview;exports.machReportPlugin=c.machReportPlugin;exports.createLocalFetcher=p;exports.useMachReport=P;exports.useReportPreview=g;Object.keys(s).forEach(o=>{o!=="default"&&!Object.prototype.hasOwnProperty.call(exports,o)&&Object.defineProperty(exports,o,{enumerable:!0,get:()=>s[o]})});
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("@agile-team/mach-report"),e=require("./ReportPreview-ClM8h0pM.cjs"),c=require("./plugin-DMPLDpBY.cjs"),u=require("vue");function p(o){const r=s.createReportSource(o),i=async n=>{if(n.reportIds.length===0)throw new e.PlanLoadError("缺少报表 ID");for(const t of n.reportIds)if(!Object.prototype.hasOwnProperty.call(o,t)||!o[t])throw new e.PlanLoadError(`本地模板 ${t} 不存在`);return r(n)};return i.getParamDefs=r.getParamDefs,i}const R=Object.freeze({loading:!1,hasPlan:!1,pageCount:0,currentPage:1,exporting:null,printing:!1,canExport:!1,canPrint:!1,error:null,pdfFont:Object.freeze({status:"unchecked",fontUrl:""})});function P(){const o=u.shallowRef(null),r=()=>o.value?.state??R,i=Object.freeze({get loading(){return r().loading},get hasPlan(){return r().hasPlan},get pageCount(){return r().pageCount},get currentPage(){return r().currentPage},get exporting(){return r().exporting},get printing(){return r().printing},get canExport(){return r().canExport},get canPrint(){return r().canPrint},get error(){return r().error},get pdfFont(){return r().pdfFont},get editing(){return r().editing??!1},get saving(){return r().saving??!1},get importing(){return r().importing??!1},get dirty(){return r().dirty??!1}});function n(){if(!o.value)throw new e.MachReportError("config","报表预览尚未挂载,请在 ready 后调用控制器");return o.value}return{ref(t){const a=t;o.value=a&&typeof a.reload=="function"&&typeof a.print=="function"&&typeof a.exportAs=="function"&&typeof a.openPdfWindow=="function"&&typeof a.gotoPage=="function"&&typeof a.setParams=="function"?a:null},ready:u.computed(()=>o.value!==null),state:i,async checkPdfFont(){const t=n();return t.checkPdfFont?t.checkPdfFont():{status:"unverified",fontUrl:"",message:"旧自定义控制器未提供字体检查,请由宿主确认字体配置"}},async reload(){await n().reload()},async print(){await n().print()},async exportAs(t){await n().exportAs(t)},openPdfWindow(){n().openPdfWindow()},gotoPage(t){n().gotoPage(t)},async setParams(t,a){await n().setParams(t,a)},async importExcel(t,a){const l=n();if(!l.importExcel)throw new e.MachReportError("config","旧自定义控制器未提供 Excel 导入");return l.importExcel(t,a)},getPlan(){return n().getPlan?.()??null},getChanges(){return n().getChanges?.()??[]}}}function E(){return u.inject(c.MACH_REPORT_CONTROLLER_KEY,null)}exports.DEFAULT_MESSAGES=e.DEFAULT_MESSAGES;exports.DEFAULT_THEME=e.DEFAULT_THEME;exports.MachReportError=e.MachReportError;exports.PlanLoadError=e.PlanLoadError;exports.REPORT_EXPORT_FORMATS=e.REPORT_EXPORT_FORMATS;exports.REPORT_PREVIEW_TOOLS=e.REPORT_PREVIEW_TOOLS;exports.ReportParamPanel=e.ReportParamPanel;exports.ReportPreview=e.ReportPreview;exports.ReportToolbar=e.ReportToolbar;exports.SILENT_LOGGER=e.SILENT_LOGGER;exports.buildPrintDocument=e.buildPrintDocument;exports.buildWordHtml=e.buildWordHtml;exports.createDefaultPdfExporter=e.createDefaultPdfExporter;exports.createFetchRequest=e.createFetchRequest;exports.defineMachReportConfig=e.defineMachReportConfig;exports.defineMachReportPreset=e.defineMachReportPreset;exports.joinReportIds=e.joinReportIds;exports.normalizeReportIds=e.normalizeReportIds;exports.printPlans=e.printPlans;exports.provideMachReportConfig=e.provideMachReportConfig;exports.resolveConfig=e.resolveConfig;exports.themeToCssVars=e.themeToCssVars;exports.toErrorDetail=e.toErrorDetail;exports.useMachReportConfig=e.useMachReportConfig;exports.usePageWindow=e.usePageWindow;exports.usePrintExport=e.usePrintExport;exports.useZoom=e.useZoom;exports.MACH_REPORT_CONFIG_KEY=c.MACH_REPORT_CONFIG_KEY;exports.MACH_REPORT_CONTROLLER_KEY=c.MACH_REPORT_CONTROLLER_KEY;exports.MACH_REPORT_FETCHER_KEY=c.MACH_REPORT_FETCHER_KEY;exports.MACH_REPORT_PDF_EXPORTER_KEY=c.MACH_REPORT_PDF_EXPORTER_KEY;exports.MachReportPreview=c.MachReportPreview;exports.machReportPlugin=c.machReportPlugin;exports.createLocalFetcher=p;exports.useMachReport=P;exports.useReportPreview=E;Object.keys(s).forEach(o=>{o!=="default"&&!Object.prototype.hasOwnProperty.call(exports,o)&&Object.defineProperty(exports,o,{enumerable:!0,get:()=>s[o]})});
package/dist/vue.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import { createReportSource as u } from "@agile-team/mach-report";
2
2
  export * from "@agile-team/mach-report";
3
- import { P as i, M as c } from "./ReportPreview-CL9J9MEE.js";
4
- import { D as M, a as T, R as O, b as v, c as F, S as A, d as D, e as b, f as L, g as S, h as j, i as H, j as I, n as k, p as W, k as Y, r as z, t as G, l as K, u as U, m as N, o as q, q as V } from "./ReportPreview-CL9J9MEE.js";
5
- import { a as f } from "./plugin-DRnvIbdP.js";
6
- import { b as Z, c as $, d as B, M as J, m as Q } from "./plugin-DRnvIbdP.js";
3
+ import { P as i, M as c } from "./ReportPreview-CBKLI--k.js";
4
+ import { D as y, a as C, R as M, b as v, c as F, d as A, e as D, S, f as b, g as L, h as I, i as j, j as H, k as W, l as k, n as Y, p as z, m as G, r as K, t as U, o as N, u as q, q as V, s as X, v as Z } from "./ReportPreview-CBKLI--k.js";
5
+ import { a as f } from "./plugin-DDLcFWlk.js";
6
+ import { b as B, c as J, d as Q, M as ee, m as te } from "./plugin-DDLcFWlk.js";
7
7
  import { shallowRef as l, computed as p, inject as g } from "vue";
8
8
  function h(o) {
9
9
  const e = u(o), a = async (r) => {
@@ -119,42 +119,44 @@ function w() {
119
119
  }
120
120
  };
121
121
  }
122
- function x() {
122
+ function T() {
123
123
  return g(f, null);
124
124
  }
125
125
  export {
126
- M as DEFAULT_MESSAGES,
127
- T as DEFAULT_THEME,
128
- Z as MACH_REPORT_CONFIG_KEY,
126
+ y as DEFAULT_MESSAGES,
127
+ C as DEFAULT_THEME,
128
+ B as MACH_REPORT_CONFIG_KEY,
129
129
  f as MACH_REPORT_CONTROLLER_KEY,
130
- $ as MACH_REPORT_FETCHER_KEY,
131
- B as MACH_REPORT_PDF_EXPORTER_KEY,
130
+ J as MACH_REPORT_FETCHER_KEY,
131
+ Q as MACH_REPORT_PDF_EXPORTER_KEY,
132
132
  c as MachReportError,
133
- J as MachReportPreview,
133
+ ee as MachReportPreview,
134
134
  i as PlanLoadError,
135
- O as ReportParamPanel,
136
- v as ReportPreview,
137
- F as ReportToolbar,
138
- A as SILENT_LOGGER,
139
- D as buildPrintDocument,
140
- b as buildWordHtml,
141
- L as createDefaultPdfExporter,
142
- S as createFetchRequest,
135
+ M as REPORT_EXPORT_FORMATS,
136
+ v as REPORT_PREVIEW_TOOLS,
137
+ F as ReportParamPanel,
138
+ A as ReportPreview,
139
+ D as ReportToolbar,
140
+ S as SILENT_LOGGER,
141
+ b as buildPrintDocument,
142
+ L as buildWordHtml,
143
+ I as createDefaultPdfExporter,
144
+ j as createFetchRequest,
143
145
  h as createLocalFetcher,
144
- j as defineMachReportConfig,
145
- H as defineMachReportPreset,
146
- I as joinReportIds,
147
- Q as machReportPlugin,
148
- k as normalizeReportIds,
149
- W as printPlans,
150
- Y as provideMachReportConfig,
151
- z as resolveConfig,
152
- G as themeToCssVars,
153
- K as toErrorDetail,
146
+ H as defineMachReportConfig,
147
+ W as defineMachReportPreset,
148
+ k as joinReportIds,
149
+ te as machReportPlugin,
150
+ Y as normalizeReportIds,
151
+ z as printPlans,
152
+ G as provideMachReportConfig,
153
+ K as resolveConfig,
154
+ U as themeToCssVars,
155
+ N as toErrorDetail,
154
156
  w as useMachReport,
155
- U as useMachReportConfig,
156
- N as usePageWindow,
157
- q as usePrintExport,
158
- x as useReportPreview,
159
- V as useZoom
157
+ q as useMachReportConfig,
158
+ V as usePageWindow,
159
+ X as usePrintExport,
160
+ T as useReportPreview,
161
+ Z as useZoom
160
162
  };
package/dist/xlsx.cjs CHANGED
@@ -26,5 +26,5 @@ use chrome, FireFox or Internet Explorer 11`)}var r=s("safe-buffer"),t=s("random
26
26
  `)):z=m.stylize("[Circular]","special")),A(j)){if(R&&E.match(/^\d+$/))return z;(j=JSON.stringify(""+E)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(j=j.substr(1,j.length-2),j=m.stylize(j,"name")):(j=j.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),j=m.stylize(j,"string"))}return j+": "+z}function u(m){return Array.isArray(m)}function p(m){return typeof m=="boolean"}function d(m){return m===null}function w(m){return typeof m=="number"}function S(m){return typeof m=="string"}function A(m){return m===void 0}function N(m){return L(m)&&U(m)==="[object RegExp]"}function L(m){return typeof m=="object"&&m!==null}function I(m){return L(m)&&U(m)==="[object Date]"}function P(m){return L(m)&&(U(m)==="[object Error]"||m instanceof Error)}function D(m){return typeof m=="function"}function U(m){return Object.prototype.toString.call(m)}function B(m){return m<10?"0"+m.toString(10):m.toString(10)}_.debuglog=function(m){if(A(r)&&(r=h.env.NODE_DEBUG||""),m=m.toUpperCase(),!t[m])if(new RegExp("\\b"+m+"\\b","i").test(r)){var b=h.pid;t[m]=function(){var g=_.format.apply(_,arguments);console.error("%s %d: %s",m,b,g)}}else t[m]=function(){};return t[m]},_.inspect=e,e.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},e.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},_.isArray=u,_.isBoolean=p,_.isNull=d,_.isNullOrUndefined=function(m){return m==null},_.isNumber=w,_.isString=S,_.isSymbol=function(m){return typeof m=="symbol"},_.isUndefined=A,_.isRegExp=N,_.isObject=L,_.isDate=I,_.isError=P,_.isFunction=D,_.isPrimitive=function(m){return m===null||typeof m=="boolean"||typeof m=="number"||typeof m=="string"||typeof m=="symbol"||m===void 0},_.isBuffer=s("./support/isBuffer");var k=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function C(){var m=new Date,b=[B(m.getHours()),B(m.getMinutes()),B(m.getSeconds())].join(":");return[m.getDate(),k[m.getMonth()],b].join(" ")}function v(m,b){return Object.prototype.hasOwnProperty.call(m,b)}_.log=function(){console.log("%s - %s",C(),_.format.apply(_,arguments))},_.inherits=s("inherits"),_._extend=function(m,b){if(!b||!L(b))return m;for(var g=Object.keys(b),y=g.length;y--;)m[g[y]]=b[g[y]];return m}}).call(this)}).call(this,s("_process"),typeof Kt.commonjsGlobal<"u"?Kt.commonjsGlobal:typeof self<"u"?self:typeof window<"u"?window:{})},{"./support/isBuffer":526,_process:467,inherits:525}],528:[function(s,x,_){Object.defineProperty(_,"__esModule",{value:!0}),Object.defineProperty(_,"v1",{enumerable:!0,get:function(){return h.default}}),Object.defineProperty(_,"v3",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(_,"v4",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(_,"v5",{enumerable:!0,get:function(){return r.default}}),Object.defineProperty(_,"NIL",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(_,"version",{enumerable:!0,get:function(){return e.default}}),Object.defineProperty(_,"validate",{enumerable:!0,get:function(){return l.default}}),Object.defineProperty(_,"stringify",{enumerable:!0,get:function(){return n.default}}),Object.defineProperty(_,"parse",{enumerable:!0,get:function(){return i.default}});var h=f(s("./v1.js")),o=f(s("./v3.js")),a=f(s("./v4.js")),r=f(s("./v5.js")),t=f(s("./nil.js")),e=f(s("./version.js")),l=f(s("./validate.js")),n=f(s("./stringify.js")),i=f(s("./parse.js"));function f(c){return c&&c.__esModule?c:{default:c}}},{"./nil.js":530,"./parse.js":531,"./stringify.js":535,"./v1.js":536,"./v3.js":537,"./v4.js":539,"./v5.js":540,"./validate.js":541,"./version.js":542}],529:[function(s,x,_){function h(i){return 14+(i+64>>>9<<4)+1}function o(i,f){const c=(65535&i)+(65535&f);return(i>>16)+(f>>16)+(c>>16)<<16|65535&c}function a(i,f,c,u,p,d){return o((w=o(o(f,i),o(u,d)))<<(S=p)|w>>>32-S,c);var w,S}function r(i,f,c,u,p,d,w){return a(f&c|~f&u,i,f,p,d,w)}function t(i,f,c,u,p,d,w){return a(f&u|c&~u,i,f,p,d,w)}function e(i,f,c,u,p,d,w){return a(f^c^u,i,f,p,d,w)}function l(i,f,c,u,p,d,w){return a(c^(f|~u),i,f,p,d,w)}Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;var n=function(i){if(typeof i=="string"){const f=unescape(encodeURIComponent(i));i=new Uint8Array(f.length);for(let c=0;c<f.length;++c)i[c]=f.charCodeAt(c)}return(function(f){const c=[],u=32*f.length;for(let p=0;p<u;p+=8){const d=f[p>>5]>>>p%32&255,w=parseInt("0123456789abcdef".charAt(d>>>4&15)+"0123456789abcdef".charAt(15&d),16);c.push(w)}return c})((function(f,c){f[c>>5]|=128<<c%32,f[h(c)-1]=c;let u=1732584193,p=-271733879,d=-1732584194,w=271733878;for(let S=0;S<f.length;S+=16){const A=u,N=p,L=d,I=w;u=r(u,p,d,w,f[S],7,-680876936),w=r(w,u,p,d,f[S+1],12,-389564586),d=r(d,w,u,p,f[S+2],17,606105819),p=r(p,d,w,u,f[S+3],22,-1044525330),u=r(u,p,d,w,f[S+4],7,-176418897),w=r(w,u,p,d,f[S+5],12,1200080426),d=r(d,w,u,p,f[S+6],17,-1473231341),p=r(p,d,w,u,f[S+7],22,-45705983),u=r(u,p,d,w,f[S+8],7,1770035416),w=r(w,u,p,d,f[S+9],12,-1958414417),d=r(d,w,u,p,f[S+10],17,-42063),p=r(p,d,w,u,f[S+11],22,-1990404162),u=r(u,p,d,w,f[S+12],7,1804603682),w=r(w,u,p,d,f[S+13],12,-40341101),d=r(d,w,u,p,f[S+14],17,-1502002290),p=r(p,d,w,u,f[S+15],22,1236535329),u=t(u,p,d,w,f[S+1],5,-165796510),w=t(w,u,p,d,f[S+6],9,-1069501632),d=t(d,w,u,p,f[S+11],14,643717713),p=t(p,d,w,u,f[S],20,-373897302),u=t(u,p,d,w,f[S+5],5,-701558691),w=t(w,u,p,d,f[S+10],9,38016083),d=t(d,w,u,p,f[S+15],14,-660478335),p=t(p,d,w,u,f[S+4],20,-405537848),u=t(u,p,d,w,f[S+9],5,568446438),w=t(w,u,p,d,f[S+14],9,-1019803690),d=t(d,w,u,p,f[S+3],14,-187363961),p=t(p,d,w,u,f[S+8],20,1163531501),u=t(u,p,d,w,f[S+13],5,-1444681467),w=t(w,u,p,d,f[S+2],9,-51403784),d=t(d,w,u,p,f[S+7],14,1735328473),p=t(p,d,w,u,f[S+12],20,-1926607734),u=e(u,p,d,w,f[S+5],4,-378558),w=e(w,u,p,d,f[S+8],11,-2022574463),d=e(d,w,u,p,f[S+11],16,1839030562),p=e(p,d,w,u,f[S+14],23,-35309556),u=e(u,p,d,w,f[S+1],4,-1530992060),w=e(w,u,p,d,f[S+4],11,1272893353),d=e(d,w,u,p,f[S+7],16,-155497632),p=e(p,d,w,u,f[S+10],23,-1094730640),u=e(u,p,d,w,f[S+13],4,681279174),w=e(w,u,p,d,f[S],11,-358537222),d=e(d,w,u,p,f[S+3],16,-722521979),p=e(p,d,w,u,f[S+6],23,76029189),u=e(u,p,d,w,f[S+9],4,-640364487),w=e(w,u,p,d,f[S+12],11,-421815835),d=e(d,w,u,p,f[S+15],16,530742520),p=e(p,d,w,u,f[S+2],23,-995338651),u=l(u,p,d,w,f[S],6,-198630844),w=l(w,u,p,d,f[S+7],10,1126891415),d=l(d,w,u,p,f[S+14],15,-1416354905),p=l(p,d,w,u,f[S+5],21,-57434055),u=l(u,p,d,w,f[S+12],6,1700485571),w=l(w,u,p,d,f[S+3],10,-1894986606),d=l(d,w,u,p,f[S+10],15,-1051523),p=l(p,d,w,u,f[S+1],21,-2054922799),u=l(u,p,d,w,f[S+8],6,1873313359),w=l(w,u,p,d,f[S+15],10,-30611744),d=l(d,w,u,p,f[S+6],15,-1560198380),p=l(p,d,w,u,f[S+13],21,1309151649),u=l(u,p,d,w,f[S+4],6,-145523070),w=l(w,u,p,d,f[S+11],10,-1120210379),d=l(d,w,u,p,f[S+2],15,718787259),p=l(p,d,w,u,f[S+9],21,-343485551),u=o(u,A),p=o(p,N),d=o(d,L),w=o(w,I)}return[u,p,d,w]})((function(f){if(f.length===0)return[];const c=8*f.length,u=new Uint32Array(h(c));for(let p=0;p<c;p+=8)u[p>>5]|=(255&f[p/8])<<p%32;return u})(i),8*i.length))};_.default=n},{}],530:[function(s,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0,_.default="00000000-0000-0000-0000-000000000000"},{}],531:[function(s,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;var h,o=(h=s("./validate.js"))&&h.__esModule?h:{default:h},a=function(r){if(!(0,o.default)(r))throw TypeError("Invalid UUID");let t;const e=new Uint8Array(16);return e[0]=(t=parseInt(r.slice(0,8),16))>>>24,e[1]=t>>>16&255,e[2]=t>>>8&255,e[3]=255&t,e[4]=(t=parseInt(r.slice(9,13),16))>>>8,e[5]=255&t,e[6]=(t=parseInt(r.slice(14,18),16))>>>8,e[7]=255&t,e[8]=(t=parseInt(r.slice(19,23),16))>>>8,e[9]=255&t,e[10]=(t=parseInt(r.slice(24,36),16))/1099511627776&255,e[11]=t/4294967296&255,e[12]=t>>>24&255,e[13]=t>>>16&255,e[14]=t>>>8&255,e[15]=255&t,e};_.default=a},{"./validate.js":541}],532:[function(s,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0,_.default=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i},{}],533:[function(s,x,_){let h;Object.defineProperty(_,"__esModule",{value:!0}),_.default=function(){if(!h&&(h=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||typeof msCrypto<"u"&&typeof msCrypto.getRandomValues=="function"&&msCrypto.getRandomValues.bind(msCrypto),!h))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return h(o)};const o=new Uint8Array(16)},{}],534:[function(s,x,_){function h(r,t,e,l){switch(r){case 0:return t&e^~t&l;case 1:return t^e^l;case 2:return t&e^t&l^e&l;case 3:return t^e^l}}function o(r,t){return r<<t|r>>>32-t}Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;var a=function(r){const t=[1518500249,1859775393,2400959708,3395469782],e=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof r=="string"){const f=unescape(encodeURIComponent(r));r=[];for(let c=0;c<f.length;++c)r.push(f.charCodeAt(c))}else Array.isArray(r)||(r=Array.prototype.slice.call(r));r.push(128);const l=r.length/4+2,n=Math.ceil(l/16),i=new Array(n);for(let f=0;f<n;++f){const c=new Uint32Array(16);for(let u=0;u<16;++u)c[u]=r[64*f+4*u]<<24|r[64*f+4*u+1]<<16|r[64*f+4*u+2]<<8|r[64*f+4*u+3];i[f]=c}i[n-1][14]=8*(r.length-1)/Math.pow(2,32),i[n-1][14]=Math.floor(i[n-1][14]),i[n-1][15]=8*(r.length-1)&4294967295;for(let f=0;f<n;++f){const c=new Uint32Array(80);for(let A=0;A<16;++A)c[A]=i[f][A];for(let A=16;A<80;++A)c[A]=o(c[A-3]^c[A-8]^c[A-14]^c[A-16],1);let u=e[0],p=e[1],d=e[2],w=e[3],S=e[4];for(let A=0;A<80;++A){const N=Math.floor(A/20),L=o(u,5)+h(N,p,d,w)+S+t[N]+c[A]>>>0;S=w,w=d,d=o(p,30)>>>0,p=u,u=L}e[0]=e[0]+u>>>0,e[1]=e[1]+p>>>0,e[2]=e[2]+d>>>0,e[3]=e[3]+w>>>0,e[4]=e[4]+S>>>0}return[e[0]>>24&255,e[0]>>16&255,e[0]>>8&255,255&e[0],e[1]>>24&255,e[1]>>16&255,e[1]>>8&255,255&e[1],e[2]>>24&255,e[2]>>16&255,e[2]>>8&255,255&e[2],e[3]>>24&255,e[3]>>16&255,e[3]>>8&255,255&e[3],e[4]>>24&255,e[4]>>16&255,e[4]>>8&255,255&e[4]]};_.default=a},{}],535:[function(s,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;var h,o=(h=s("./validate.js"))&&h.__esModule?h:{default:h};const a=[];for(let t=0;t<256;++t)a.push((t+256).toString(16).substr(1));var r=function(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;const l=(a[t[e+0]]+a[t[e+1]]+a[t[e+2]]+a[t[e+3]]+"-"+a[t[e+4]]+a[t[e+5]]+"-"+a[t[e+6]]+a[t[e+7]]+"-"+a[t[e+8]]+a[t[e+9]]+"-"+a[t[e+10]]+a[t[e+11]]+a[t[e+12]]+a[t[e+13]]+a[t[e+14]]+a[t[e+15]]).toLowerCase();if(!(0,o.default)(l))throw TypeError("Stringified UUID is invalid");return l};_.default=r},{"./validate.js":541}],536:[function(s,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;var h=a(s("./rng.js")),o=a(s("./stringify.js"));function a(i){return i&&i.__esModule?i:{default:i}}let r,t,e=0,l=0;var n=function(i,f,c){let u=f&&c||0;const p=f||new Array(16);let d=(i=i||{}).node||r,w=i.clockseq!==void 0?i.clockseq:t;if(d==null||w==null){const P=i.random||(i.rng||h.default)();d==null&&(d=r=[1|P[0],P[1],P[2],P[3],P[4],P[5]]),w==null&&(w=t=16383&(P[6]<<8|P[7]))}let S=i.msecs!==void 0?i.msecs:Date.now(),A=i.nsecs!==void 0?i.nsecs:l+1;const N=S-e+(A-l)/1e4;if(N<0&&i.clockseq===void 0&&(w=w+1&16383),(N<0||S>e)&&i.nsecs===void 0&&(A=0),A>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");e=S,l=A,t=w,S+=122192928e5;const L=(1e4*(268435455&S)+A)%4294967296;p[u++]=L>>>24&255,p[u++]=L>>>16&255,p[u++]=L>>>8&255,p[u++]=255&L;const I=S/4294967296*1e4&268435455;p[u++]=I>>>8&255,p[u++]=255&I,p[u++]=I>>>24&15|16,p[u++]=I>>>16&255,p[u++]=w>>>8|128,p[u++]=255&w;for(let P=0;P<6;++P)p[u+P]=d[P];return f||(0,o.default)(p)};_.default=n},{"./rng.js":533,"./stringify.js":535}],537:[function(s,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;var h=a(s("./v35.js")),o=a(s("./md5.js"));function a(t){return t&&t.__esModule?t:{default:t}}var r=(0,h.default)("v3",48,o.default);_.default=r},{"./md5.js":529,"./v35.js":538}],538:[function(s,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=function(e,l,n){function i(f,c,u,p){if(typeof f=="string"&&(f=(function(w){w=unescape(encodeURIComponent(w));const S=[];for(let A=0;A<w.length;++A)S.push(w.charCodeAt(A));return S})(f)),typeof c=="string"&&(c=(0,o.default)(c)),c.length!==16)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");let d=new Uint8Array(16+f.length);if(d.set(c),d.set(f,c.length),d=n(d),d[6]=15&d[6]|l,d[8]=63&d[8]|128,u){p=p||0;for(let w=0;w<16;++w)u[p+w]=d[w];return u}return(0,h.default)(d)}try{i.name=e}catch{}return i.DNS=r,i.URL=t,i},_.URL=_.DNS=void 0;var h=a(s("./stringify.js")),o=a(s("./parse.js"));function a(e){return e&&e.__esModule?e:{default:e}}const r="6ba7b810-9dad-11d1-80b4-00c04fd430c8";_.DNS=r;const t="6ba7b811-9dad-11d1-80b4-00c04fd430c8";_.URL=t},{"./parse.js":531,"./stringify.js":535}],539:[function(s,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;var h=a(s("./rng.js")),o=a(s("./stringify.js"));function a(t){return t&&t.__esModule?t:{default:t}}var r=function(t,e,l){const n=(t=t||{}).random||(t.rng||h.default)();if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,e){l=l||0;for(let i=0;i<16;++i)e[l+i]=n[i];return e}return(0,o.default)(n)};_.default=r},{"./rng.js":533,"./stringify.js":535}],540:[function(s,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;var h=a(s("./v35.js")),o=a(s("./sha1.js"));function a(t){return t&&t.__esModule?t:{default:t}}var r=(0,h.default)("v5",80,o.default);_.default=r},{"./sha1.js":534,"./v35.js":538}],541:[function(s,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;var h,o=(h=s("./regex.js"))&&h.__esModule?h:{default:h},a=function(r){return typeof r=="string"&&o.default.test(r)};_.default=a},{"./regex.js":532}],542:[function(s,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;var h,o=(h=s("./validate.js"))&&h.__esModule?h:{default:h},a=function(r){if(!(0,o.default)(r))throw TypeError("Invalid UUID");return parseInt(r.substr(14,1),16)};_.default=a},{"./validate.js":541}],543:[function(s,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.CHAR=`
27
27
  \r -퟿-�𐀀-􏿿`,_.S=` \r
28
28
  `,_.NAME_START_CHAR=":A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿",_.NAME_CHAR="-"+_.NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",_.CHAR_RE=new RegExp("^["+_.CHAR+"]$","u"),_.S_RE=new RegExp("^["+_.S+"]+$","u"),_.NAME_START_CHAR_RE=new RegExp("^["+_.NAME_START_CHAR+"]$","u"),_.NAME_CHAR_RE=new RegExp("^["+_.NAME_CHAR+"]$","u"),_.NAME_RE=new RegExp("^["+_.NAME_START_CHAR+"]["+_.NAME_CHAR+"]*$","u"),_.NMTOKEN_RE=new RegExp("^["+_.NAME_CHAR+"]+$","u");function h(o){return o>=65&&o<=90||o>=97&&o<=122||o===58||o===95||o===8204||o===8205||o>=192&&o<=214||o>=216&&o<=246||o>=248&&o<=767||o>=880&&o<=893||o>=895&&o<=8191||o>=8304&&o<=8591||o>=11264&&o<=12271||o>=12289&&o<=55295||o>=63744&&o<=64975||o>=65008&&o<=65533||o>=65536&&o<=983039}_.S_LIST=[32,10,13,9],_.isChar=function(o){return o>=32&&o<=55295||o===10||o===13||o===9||o>=57344&&o<=65533||o>=65536&&o<=1114111},_.isS=function(o){return o===32||o===10||o===13||o===9},_.isNameStartChar=h,_.isNameChar=function(o){return h(o)||o>=48&&o<=57||o===45||o===46||o===183||o>=768&&o<=879||o>=8255&&o<=8256}},{}],544:[function(s,x,_){Object.defineProperty(_,"__esModule",{value:!0}),_.CHAR="-퟿-�𐀀-􏿿",_.RESTRICTED_CHAR="-\b\v\f--„†-Ÿ",_.S=` \r
29
- `,_.NAME_START_CHAR=":A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿",_.NAME_CHAR="-"+_.NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",_.CHAR_RE=new RegExp("^["+_.CHAR+"]$","u"),_.RESTRICTED_CHAR_RE=new RegExp("^["+_.RESTRICTED_CHAR+"]$","u"),_.S_RE=new RegExp("^["+_.S+"]+$","u"),_.NAME_START_CHAR_RE=new RegExp("^["+_.NAME_START_CHAR+"]$","u"),_.NAME_CHAR_RE=new RegExp("^["+_.NAME_CHAR+"]$","u"),_.NAME_RE=new RegExp("^["+_.NAME_START_CHAR+"]["+_.NAME_CHAR+"]*$","u"),_.NMTOKEN_RE=new RegExp("^["+_.NAME_CHAR+"]+$","u");function h(o){return o>=65&&o<=90||o>=97&&o<=122||o===58||o===95||o===8204||o===8205||o>=192&&o<=214||o>=216&&o<=246||o>=248&&o<=767||o>=880&&o<=893||o>=895&&o<=8191||o>=8304&&o<=8591||o>=11264&&o<=12271||o>=12289&&o<=55295||o>=63744&&o<=64975||o>=65008&&o<=65533||o>=65536&&o<=983039}_.S_LIST=[32,10,13,9],_.isChar=function(o){return o>=1&&o<=55295||o>=57344&&o<=65533||o>=65536&&o<=1114111},_.isRestrictedChar=function(o){return o>=1&&o<=8||o===11||o===12||o>=14&&o<=31||o>=127&&o<=132||o>=134&&o<=159},_.isCharAndNotRestricted=function(o){return o===9||o===10||o===13||o>31&&o<127||o===133||o>159&&o<=55295||o>=57344&&o<=65533||o>=65536&&o<=1114111},_.isS=function(o){return o===32||o===10||o===13||o===9},_.isNameStartChar=h,_.isNameChar=function(o){return h(o)||o>=48&&o<=57||o===45||o===46||o===183||o>=768&&o<=879||o>=8255&&o<=8256}},{}],545:[function(s,x,_){function h(o){return o>=65&&o<=90||o===95||o>=97&&o<=122||o>=192&&o<=214||o>=216&&o<=246||o>=248&&o<=767||o>=880&&o<=893||o>=895&&o<=8191||o>=8204&&o<=8205||o>=8304&&o<=8591||o>=11264&&o<=12271||o>=12289&&o<=55295||o>=63744&&o<=64975||o>=65008&&o<=65533||o>=65536&&o<=983039}Object.defineProperty(_,"__esModule",{value:!0}),_.NC_NAME_START_CHAR="A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿",_.NC_NAME_CHAR="-"+_.NC_NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",_.NC_NAME_START_CHAR_RE=new RegExp("^["+_.NC_NAME_START_CHAR+"]$","u"),_.NC_NAME_CHAR_RE=new RegExp("^["+_.NC_NAME_CHAR+"]$","u"),_.NC_NAME_RE=new RegExp("^["+_.NC_NAME_START_CHAR+"]["+_.NC_NAME_CHAR+"]*$","u"),_.isNCNameStartChar=h,_.isNCNameChar=function(o){return h(o)||o===45||o===46||o>=48&&o<=57||o===183||o>=768&&o<=879||o>=8255&&o<=8256}},{}]},{},[15])(15)}))})(Ze)),Ze.exports}var yr=gr();const fr=Kt.getDefaultExportFromCjs(yr),cr=25.4/96;function vr(Z){return(Z<1?Z*12:Z*7+5)*cr}function hr(Z){const K=Z/cr;return K<12?K/12:(K-5)/7}const dr=72/25.4,wr=32767,_r=253;function Ve(Z,K){if(typeof Z!="string")return;if(Z.length>wr)throw new Error(`Excel 单元格 ${K} 最多支持 32767 个字符,无法无损导出;内容未裁剪`);let s=0;for(let x=0;x<Z.length;x++)if(Z.charCodeAt(x)===10&&++s>_r)throw new Error(`Excel 单元格 ${K} 最多支持 253 个换行,无法无损导出;内容未改写`)}function Ie(Z){if(!Z)return;const K=Z.replace("#","");return/^[0-9a-fA-F]{6}$/.test(K)?`FF${K.toUpperCase()}`:void 0}function pr(Z,K={}){Z.font={name:K.fontFamily,bold:K.bold===!0,italic:K.italic===!0,underline:K.underline===!0,size:Je.resolveFontSize(K).fontSizePt,color:Ie(K.color)?{argb:Ie(K.color)}:void 0}}const We={a3:{width:297,height:420,code:8},a4:{width:210,height:297,code:9},a5:{width:148,height:210,code:11}};function xr(Z,K,s,x){if(K&&K!=="auto")return We[K].code;const _=Math.min(Z.pageWidthMm,Z.pageHeightMm),h=Math.max(Z.pageWidthMm,Z.pageHeightMm),o=Object.values(We).find(a=>Math.abs(_-a.width)<=1&&Math.abs(h-a.height)<=1);return o?o.code:(x.push(`page ${s+1}: 自定义纸张 ${Z.pageWidthMm}×${Z.pageHeightMm}mm 无对应 Excel 纸型,打印设置回退 A4;可显式配置 paperSize`),We.a4.code)}function Sr(Z,K,s,x){const _=typeof K.text=="string"?K.text:"";if(s!=="raw"||!Object.prototype.hasOwnProperty.call(K,"value")){Ve(_,Z.address),Z.value=_;return}const h=K.value;if(h===null||typeof h=="string"||typeof h=="boolean"||typeof h=="number"&&Number.isFinite(h)){Ve(h,Z.address),Z.value=h,typeof h=="number"&&K.numberFormat&&(Z.numFmt=K.numberFormat);return}Ve(_,Z.address),Z.value=_,x.push(`原始单元格值无效,已保留显示文本:${Z.address}`)}function kr(Z){const s=Z.components.filter(x=>x.table!==void 0)[0]?.table;if(!(!s||typeof s.id!="string"||!s.id.trim()||!Array.isArray(s.columnKeys)||!s.columnKeys.length)){for(const x of Z.components){if(x.table){if(!x.grid||x.table.id!==s.id)return;continue}if(x.grid||x.kind!=="text"||x.richParagraphs?.length&&!x.text&&!x.lines?.length)return}return{id:s.id,title:s.title,wide:s.layout==="wide"||Z.layout==="wide"}}}function Er(Z,K){const s=new Set;for(const[x,_]of Z.pages.entries())if(!K[x])for(const h of _.components)typeof h.table?.id=="string"&&s.add(h.table.id);return s}function Qe(Z){return Z.layout==="wide"||Z.components.some(K=>K.table?.layout==="wide")}function Mr(Z,K,s){const x=[],_=Z.pages.map(kr),h=Er(Z,_);for(const[o,a]of Z.pages.entries()){const r=_[o],t=r&&!h.has(r.id),e=K==="pages"||!t?void 0:r;if(K==="continuous"&&!e)throw new Error(`page ${o+1}: continuous Excel 需要完整、单一的逻辑表来源;自由布局请使用 sheetMode: 'pages'`);const l=e!==void 0&&(K==="continuous"||e.wide);!l&&K!=="pages"&&Qe(a)&&s.push(`page ${o+1}: 混合或缺少逻辑表来源,已保留独立 Sheet,未猜测合并内容`);const n=x[x.length-1];l&&n?.continuous&&n.tableId===e.id?n.pages.push({page:a,index:o}):x.push({pages:[{page:a,index:o}],continuous:l,...l?{tableId:e.id,title:e.title}:{}})}return x}function nr(Z,K,s){return!Z||Z.length===K.length&&Z.every((x,_)=>s(x,K[_]))}function Cr(Z,K,s,x){const _=Z.table,h=K.columns.map(r=>r.size),o=nr(x.keys,_.columnKeys,(r,t)=>r===t),a=nr(x.widths,h,(r,t)=>Math.abs(r-t)<=.001);if(_.columnKeys.length!==h.length||!o||!a)throw new Error(`page ${s+1}: 连续 Excel 逻辑表 ${_.id} 的列结构或列宽不一致`);if(x.keys??=_.columnKeys,x.widths??=h,_.role==="header"){if(_.rowIndex!==-1)throw new Error(`page ${s+1}: 连续 Excel 表头 rowIndex 必须为 -1`);x.headerSeen=!0}else{if(!["body","group-header","subtotal","grand-total"].includes(_.role)||_.rowIndex!==x.expectedRow)throw new Error(`page ${s+1}: 连续 Excel 逻辑行来源不连续或重复(期望 ${x.expectedRow})`);x.expectedRow+=K.rows.length}if(K.cells.some(r=>r.cell.children?.length))throw new Error(`page ${s+1}: 连续 Excel 暂不支持嵌套组件;请使用独立 Sheet 导出并检查告警`)}function Tr(Z,K){const s={expectedRow:0,headerSeen:!1};for(const{page:x,index:_}of Z.pages)for(const h of x.components){const o=K.get(h);h.table&&o&&Cr(h,o,_,s)}if(!s.headerSeen)throw new Error("连续 Excel 逻辑表缺少明确表头来源")}function Ar(Z,K,s){let x=(Z?.replace(/[\\/*?:[\]]/g," ").replace(/\s+/g," ").trim()||`Sheet${K+1}`).slice(0,31).replace(/^'+|'+$/g,"").trim()||`Sheet${K+1}`;x.toLowerCase()==="history"&&(x+=" 报表");let _=x,h=1;for(;s.has(_.toLowerCase());){const o=` (${++h})`;_=x.slice(0,31-o.length)+o}return s.add(_.toLowerCase()),_}function Rr(Z){const K=new Set;function s(x,_,h,o){return x<=_?x:(K.has(h)||(Z.push(o),K.add(h)),_)}return{column:x=>s(x,255,"column","Excel 单列宽度上限为 255 字符,超宽列已收敛至 255;单元格值完整保留,显示范围可能受限"),row:x=>s(x,409,"row","Excel 行高上限为 409pt,超高行已收敛至 409pt;单元格值完整保留,显示范围可能受限")}}function jr(Z){const K=Z.pages.flatMap(({page:h,index:o})=>h.components.map(a=>({comp:a,pageIndex:o}))),s=new Map;let x=1,_=0;for(const{comp:h}of K)if(h.grid){const o=Je.resolveGridLayout(h.grid,h.widthMm,h.heightMm);s.set(h,o),x=Math.max(x,o.columns.length)}else h.kind==="text"&&(_=Math.max(_,h.widthMm));if(x>16384)throw new Error("Excel 最多支持 16384 列,无法无损导出此报表");return{components:K,grids:s,columnCount:x,textWidthMm:_}}function Or(Z,K,s){const{page:x,index:_}=Z.pages[0],h=K!==void 0&&K!=="auto";return(Z.continuous||Qe(x))&&!h?{}:{pageSetup:{paperSize:xr(x,K,_,s),orientation:x.pageWidthMm>x.pageHeightMm?"landscape":"portrait",fitToPage:!0,...Z.continuous?{fitToWidth:1,fitToHeight:0}:{}}}}function Ir(Z){const K=Ie(Z.borderColor??Z.lineColor),s={style:"thin",...K?{color:{argb:K}}:{}};return{...Z.borderTop!==!1?{top:s}:{},...Z.borderLeft!==!1?{left:s}:{},...Z.borderBottom!==!1?{bottom:s}:{},...Z.borderRight!==!1?{right:s}:{}}}function Nr(Z,K){Z.alignment={horizontal:K.align??"left",vertical:K.verticalAlign??"middle",wrapText:!0};const s=Ie(K.backgroundColor);s&&(Z.fill={type:"pattern",pattern:"solid",fgColor:{argb:s}}),Z.border=Ir(K),pr(Z,K)}function Pr(Z,K,s){for(const[x,_]of K.columns.entries()){const h=Z.sheet.getColumn(x+1),o=Z.limits.column(hr(_.size));(h.width==null||h.width<o)&&(h.width=o)}for(const[x,_]of K.rows.entries()){const h=Z.sheet.getRow(s+x),o=Z.limits.row(_.size*dr);(h.height==null||h.height<o)&&(h.height=o)}}function Br(Z,K,s,x){const _=Math.max(1,Math.min(K.cell.colSpan??1,s.columns.length-K.ci)),h=Math.max(1,Math.min(K.cell.rowSpan??1,s.rows.length-K.ri));(_>1||h>1)&&Z.mergeCells(x+K.ri,K.ci+1,x+K.ri+h-1,K.ci+_)}function Dr(Z,K,s,x,_){if(x+s.rows.length-1>1048576)throw new Error("Excel 最多支持 1048576 行,无法无损导出此报表");Pr(Z,s,x);for(const h of s.cells){const o=Z.sheet.getCell(x+h.ri,h.ci+1);Sr(o,h.cell,Z.valueMode,Z.warnings),h.cell.children?.length&&Z.warnings.push(`page ${_+1} ${K.nid??K.kind} cell ${h.ri+1}:${h.ci+1}: 嵌套组件内容暂不支持 xlsx 导出,已跳过`),Nr(o,Je.mergeComponentStyles(K.style,h.cell.style)),Br(Z.sheet,h,s,x)}return x+s.rows.length}function Fr(Z,K,s,x,_){const h=Array.isArray(K.lines)&&K.lines.length>0?K.lines.join(`
29
+ `,_.NAME_START_CHAR=":A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿",_.NAME_CHAR="-"+_.NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",_.CHAR_RE=new RegExp("^["+_.CHAR+"]$","u"),_.RESTRICTED_CHAR_RE=new RegExp("^["+_.RESTRICTED_CHAR+"]$","u"),_.S_RE=new RegExp("^["+_.S+"]+$","u"),_.NAME_START_CHAR_RE=new RegExp("^["+_.NAME_START_CHAR+"]$","u"),_.NAME_CHAR_RE=new RegExp("^["+_.NAME_CHAR+"]$","u"),_.NAME_RE=new RegExp("^["+_.NAME_START_CHAR+"]["+_.NAME_CHAR+"]*$","u"),_.NMTOKEN_RE=new RegExp("^["+_.NAME_CHAR+"]+$","u");function h(o){return o>=65&&o<=90||o>=97&&o<=122||o===58||o===95||o===8204||o===8205||o>=192&&o<=214||o>=216&&o<=246||o>=248&&o<=767||o>=880&&o<=893||o>=895&&o<=8191||o>=8304&&o<=8591||o>=11264&&o<=12271||o>=12289&&o<=55295||o>=63744&&o<=64975||o>=65008&&o<=65533||o>=65536&&o<=983039}_.S_LIST=[32,10,13,9],_.isChar=function(o){return o>=1&&o<=55295||o>=57344&&o<=65533||o>=65536&&o<=1114111},_.isRestrictedChar=function(o){return o>=1&&o<=8||o===11||o===12||o>=14&&o<=31||o>=127&&o<=132||o>=134&&o<=159},_.isCharAndNotRestricted=function(o){return o===9||o===10||o===13||o>31&&o<127||o===133||o>159&&o<=55295||o>=57344&&o<=65533||o>=65536&&o<=1114111},_.isS=function(o){return o===32||o===10||o===13||o===9},_.isNameStartChar=h,_.isNameChar=function(o){return h(o)||o>=48&&o<=57||o===45||o===46||o===183||o>=768&&o<=879||o>=8255&&o<=8256}},{}],545:[function(s,x,_){function h(o){return o>=65&&o<=90||o===95||o>=97&&o<=122||o>=192&&o<=214||o>=216&&o<=246||o>=248&&o<=767||o>=880&&o<=893||o>=895&&o<=8191||o>=8204&&o<=8205||o>=8304&&o<=8591||o>=11264&&o<=12271||o>=12289&&o<=55295||o>=63744&&o<=64975||o>=65008&&o<=65533||o>=65536&&o<=983039}Object.defineProperty(_,"__esModule",{value:!0}),_.NC_NAME_START_CHAR="A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿",_.NC_NAME_CHAR="-"+_.NC_NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",_.NC_NAME_START_CHAR_RE=new RegExp("^["+_.NC_NAME_START_CHAR+"]$","u"),_.NC_NAME_CHAR_RE=new RegExp("^["+_.NC_NAME_CHAR+"]$","u"),_.NC_NAME_RE=new RegExp("^["+_.NC_NAME_START_CHAR+"]["+_.NC_NAME_CHAR+"]*$","u"),_.isNCNameStartChar=h,_.isNCNameChar=function(o){return h(o)||o===45||o===46||o>=48&&o<=57||o===183||o>=768&&o<=879||o>=8255&&o<=8256}},{}]},{},[15])(15)}))})(Ze)),Ze.exports}var yr=gr();const fr=Kt.getDefaultExportFromCjs(yr),cr=25.4/96;function vr(Z){return(Z<1?Z*12:Z*7+5)*cr}function hr(Z){const K=Z/cr;return K<12?K/12:(K-5)/7}const dr=72/25.4,wr=32767,_r=253;function Ve(Z,K){if(typeof Z!="string")return;if(Z.length>wr)throw new Error(`Excel 单元格 ${K} 最多支持 32767 个字符,无法无损导出;内容未裁剪`);let s=0;for(let x=0;x<Z.length;x++)if(Z.charCodeAt(x)===10&&++s>_r)throw new Error(`Excel 单元格 ${K} 最多支持 253 个换行,无法无损导出;内容未改写`)}function Ie(Z){if(!Z)return;const K=Z.replace("#","");return/^[0-9a-fA-F]{6}$/.test(K)?`FF${K.toUpperCase()}`:void 0}function pr(Z,K={}){Z.font={name:K.fontFamily,bold:K.bold===!0,italic:K.italic===!0,underline:K.underline===!0,size:Je.resolveFontSize(K).fontSizePt,color:Ie(K.color)?{argb:Ie(K.color)}:void 0}}const We={a3:{width:297,height:420,code:8},a4:{width:210,height:297,code:9},a5:{width:148,height:210,code:11}};function xr(Z,K,s,x){if(K&&K!=="auto")return We[K].code;const _=Math.min(Z.pageWidthMm,Z.pageHeightMm),h=Math.max(Z.pageWidthMm,Z.pageHeightMm),o=Object.values(We).find(a=>Math.abs(_-a.width)<=1&&Math.abs(h-a.height)<=1);return o?o.code:(x.push(`page ${s+1}: 自定义纸张 ${Z.pageWidthMm}×${Z.pageHeightMm}mm 无对应 Excel 纸型,打印设置回退 A4;可显式配置 paperSize`),We.a4.code)}function Sr(Z,K,s,x){const _=typeof K.text=="string"?K.text:"";if(s!=="raw"||!Object.prototype.hasOwnProperty.call(K,"value")){Ve(_,Z.address),Z.value=_;return}const h=K.value;if(h===null||typeof h=="string"||typeof h=="boolean"||typeof h=="number"&&Number.isFinite(h)){Ve(h,Z.address),Z.value=h,K.numberFormat&&(Z.numFmt=K.numberFormat);return}Ve(_,Z.address),Z.value=_,x.push(`原始单元格值无效,已保留显示文本:${Z.address}`)}function kr(Z){const s=Z.components.filter(x=>x.table!==void 0)[0]?.table;if(!(!s||typeof s.id!="string"||!s.id.trim()||!Array.isArray(s.columnKeys)||!s.columnKeys.length)){for(const x of Z.components){if(x.table){if(!x.grid||x.table.id!==s.id)return;continue}if(x.grid||x.kind!=="text"||x.richParagraphs?.length&&!x.text&&!x.lines?.length)return}return{id:s.id,title:s.title,wide:s.layout==="wide"||Z.layout==="wide"}}}function Er(Z,K){const s=new Set;for(const[x,_]of Z.pages.entries())if(!K[x])for(const h of _.components)typeof h.table?.id=="string"&&s.add(h.table.id);return s}function Qe(Z){return Z.layout==="wide"||Z.components.some(K=>K.table?.layout==="wide")}function Mr(Z,K,s){const x=[],_=Z.pages.map(kr),h=Er(Z,_);for(const[o,a]of Z.pages.entries()){const r=_[o],t=r&&!h.has(r.id),e=K==="pages"||!t?void 0:r;if(K==="continuous"&&!e)throw new Error(`page ${o+1}: continuous Excel 需要完整、单一的逻辑表来源;自由布局请使用 sheetMode: 'pages'`);const l=e!==void 0&&(K==="continuous"||e.wide);!l&&K!=="pages"&&Qe(a)&&s.push(`page ${o+1}: 混合或缺少逻辑表来源,已保留独立 Sheet,未猜测合并内容`);const n=x[x.length-1];l&&n?.continuous&&n.tableId===e.id?n.pages.push({page:a,index:o}):x.push({pages:[{page:a,index:o}],continuous:l,...l?{tableId:e.id,title:e.title}:{}})}return x}function nr(Z,K,s){return!Z||Z.length===K.length&&Z.every((x,_)=>s(x,K[_]))}function Cr(Z,K,s,x){const _=Z.table,h=K.columns.map(r=>r.size),o=nr(x.keys,_.columnKeys,(r,t)=>r===t),a=nr(x.widths,h,(r,t)=>Math.abs(r-t)<=.001);if(_.columnKeys.length!==h.length||!o||!a)throw new Error(`page ${s+1}: 连续 Excel 逻辑表 ${_.id} 的列结构或列宽不一致`);if(x.keys??=_.columnKeys,x.widths??=h,_.role==="header"){if(_.rowIndex!==-1)throw new Error(`page ${s+1}: 连续 Excel 表头 rowIndex 必须为 -1`);x.headerSeen=!0}else{if(!["body","group-header","subtotal","grand-total"].includes(_.role)||_.rowIndex!==x.expectedRow)throw new Error(`page ${s+1}: 连续 Excel 逻辑行来源不连续或重复(期望 ${x.expectedRow})`);x.expectedRow+=K.rows.length}if(K.cells.some(r=>r.cell.children?.length))throw new Error(`page ${s+1}: 连续 Excel 暂不支持嵌套组件;请使用独立 Sheet 导出并检查告警`)}function Tr(Z,K){const s={expectedRow:0,headerSeen:!1};for(const{page:x,index:_}of Z.pages)for(const h of x.components){const o=K.get(h);h.table&&o&&Cr(h,o,_,s)}if(!s.headerSeen)throw new Error("连续 Excel 逻辑表缺少明确表头来源")}function Ar(Z,K,s){let x=(Z?.replace(/[\\/*?:[\]]/g," ").replace(/\s+/g," ").trim()||`Sheet${K+1}`).slice(0,31).replace(/^'+|'+$/g,"").trim()||`Sheet${K+1}`;x.toLowerCase()==="history"&&(x+=" 报表");let _=x,h=1;for(;s.has(_.toLowerCase());){const o=` (${++h})`;_=x.slice(0,31-o.length)+o}return s.add(_.toLowerCase()),_}function Rr(Z){const K=new Set;function s(x,_,h,o){return x<=_?x:(K.has(h)||(Z.push(o),K.add(h)),_)}return{column:x=>s(x,255,"column","Excel 单列宽度上限为 255 字符,超宽列已收敛至 255;单元格值完整保留,显示范围可能受限"),row:x=>s(x,409,"row","Excel 行高上限为 409pt,超高行已收敛至 409pt;单元格值完整保留,显示范围可能受限")}}function jr(Z){const K=Z.pages.flatMap(({page:h,index:o})=>h.components.map(a=>({comp:a,pageIndex:o}))),s=new Map;let x=1,_=0;for(const{comp:h}of K)if(h.grid){const o=Je.resolveGridLayout(h.grid,h.widthMm,h.heightMm);s.set(h,o),x=Math.max(x,o.columns.length)}else h.kind==="text"&&(_=Math.max(_,h.widthMm));if(x>16384)throw new Error("Excel 最多支持 16384 列,无法无损导出此报表");return{components:K,grids:s,columnCount:x,textWidthMm:_}}function Or(Z,K,s){const{page:x,index:_}=Z.pages[0],h=K!==void 0&&K!=="auto";return(Z.continuous||Qe(x))&&!h?{}:{pageSetup:{paperSize:xr(x,K,_,s),orientation:x.pageWidthMm>x.pageHeightMm?"landscape":"portrait",fitToPage:!0,...Z.continuous?{fitToWidth:1,fitToHeight:0}:{}}}}function Ir(Z){const K=Ie(Z.borderColor??Z.lineColor),s={style:"thin",...K?{color:{argb:K}}:{}};return{...Z.borderTop!==!1?{top:s}:{},...Z.borderLeft!==!1?{left:s}:{},...Z.borderBottom!==!1?{bottom:s}:{},...Z.borderRight!==!1?{right:s}:{}}}function Nr(Z,K){Z.alignment={horizontal:K.align??"left",vertical:K.verticalAlign??"middle",wrapText:!0};const s=Ie(K.backgroundColor);s&&(Z.fill={type:"pattern",pattern:"solid",fgColor:{argb:s}}),Z.border=Ir(K),pr(Z,K)}function Pr(Z,K,s){for(const[x,_]of K.columns.entries()){const h=Z.sheet.getColumn(x+1),o=Z.limits.column(hr(_.size));(h.width==null||h.width<o)&&(h.width=o)}for(const[x,_]of K.rows.entries()){const h=Z.sheet.getRow(s+x),o=Z.limits.row(_.size*dr);(h.height==null||h.height<o)&&(h.height=o)}}function Br(Z,K,s,x){const _=Math.max(1,Math.min(K.cell.colSpan??1,s.columns.length-K.ci)),h=Math.max(1,Math.min(K.cell.rowSpan??1,s.rows.length-K.ri));(_>1||h>1)&&Z.mergeCells(x+K.ri,K.ci+1,x+K.ri+h-1,K.ci+_)}function Dr(Z,K,s,x,_){if(x+s.rows.length-1>1048576)throw new Error("Excel 最多支持 1048576 行,无法无损导出此报表");Pr(Z,s,x);for(const h of s.cells){const o=Z.sheet.getCell(x+h.ri,h.ci+1);Sr(o,h.cell,Z.valueMode,Z.warnings),h.cell.children?.length&&Z.warnings.push(`page ${_+1} ${K.nid??K.kind} cell ${h.ri+1}:${h.ci+1}: 嵌套组件内容暂不支持 xlsx 导出,已跳过`),Nr(o,Je.mergeComponentStyles(K.style,h.cell.style)),Br(Z.sheet,h,s,x)}return x+s.rows.length}function Fr(Z,K,s,x,_){const h=Array.isArray(K.lines)&&K.lines.length>0?K.lines.join(`
30
30
  `):K.text??"";if(K.richParagraphs?.length){const t=h.length===0?"富文本内容暂不支持 xlsx 导出,已跳过":"富文本按已有文本回退导出,内联样式未保留";Z.warnings.push(`page ${_+1} ${K.nid??K.kind}: ${t}`)}const o=Z.sheet.getRow(s),a=o.getCell(1);Ve(h,a.address),a.value=h,a.alignment={horizontal:K.style?.align??"left",vertical:K.style?.verticalAlign??"middle",wrapText:!0};const r=Ie(K.style?.backgroundColor);return r&&(a.fill={type:"pattern",pattern:"solid",fgColor:{argb:r}}),pr(a,K.style),x>1&&Z.sheet.mergeCells(s,1,s,x),o.height=Z.limits.row(K.heightMm*dr),s+1}function Lr(Z,K,s){const x=K+s-1;Z.views=[{state:"frozen",ySplit:x,xSplit:0}],Z.pageSetup.printTitlesRow=`1:${x}`}function zr(Z,K,s){!K.grids.size&&K.textWidthMm>0&&(Z.sheet.getColumn(1).width=Z.limits.column(hr(K.textWidthMm)));let x=1,_=!1;for(const{comp:h,pageIndex:o}of K.components){const a=s&&h.table?.role==="header";if(a&&_)continue;if(x>1048576)throw new Error("Excel 最多支持 1048576 行,无法无损导出此报表");const r=K.grids.get(h);r?(a&&(Lr(Z.sheet,x,r.rows.length),_=!0),x=Dr(Z,h,r,x,o)):h.kind==="text"?x=Fr(Z,h,x,K.columnCount,o):Z.warnings.push(`page ${o+1} ${h.nid??h.kind}: 组件类型 ${h.kind} 暂不支持 xlsx 导出,已跳过`)}}function Ur(Z){if(Z.valueMode!==void 0&&Z.valueMode!=="text"&&Z.valueMode!=="raw")throw new Error("xlsx valueMode 必须是 text 或 raw");if(Z.paperSize!==void 0&&Z.paperSize!=="auto"&&!Object.prototype.hasOwnProperty.call(We,Z.paperSize))throw new Error("xlsx paperSize 必须是 auto、a3、a4 或 a5");if(Z.sheetMode!==void 0&&!["auto","pages","continuous"].includes(Z.sheetMode))throw new Error("xlsx sheetMode 必须是 auto、pages 或 continuous")}async function $r(Z,K={}){Ur(K);const s=new fr.Workbook,x=[],_=Rr(x),h=Mr(Z,K.sheetMode,x),o=new Set;for(const[r,t]of h.entries()){const e=jr(t);t.continuous&&Tr(t,e.grids);const l=t.pages[0].page,n=K.sheetName?.(r)??Ar(t.title,r,o);o.add(n.toLowerCase());const i=s.addWorksheet(n,Or(t,K.paperSize,x)),f=K.valueMode??(Qe(l)||t.continuous?"raw":"text");zr({sheet:i,warnings:x,limits:_,valueMode:f},e,t.continuous)}const a=await s.xlsx.writeBuffer();return{workbook:s,buffer:a,warnings:x}}function Ge(Z){let K="";for(let s=Z;s>0;s=Math.floor((s-1)/26))K=String.fromCharCode(65+(s-1)%26)+K;return K}function qe(Z){return`${Ge(Z.left)}${Z.top}:${Ge(Z.right)}${Z.bottom}`}function ir(Z){let K=0;for(const s of Z.toUpperCase())K=K*26+s.charCodeAt(0)-64;return K}function Ne(Z){if(typeof Z!="string")throw new Error("Excel 范围应为 A1:B20 格式的字符串");const K=/^\$?([A-Z]{1,3})\$?([1-9]\d{0,6})(?::\$?([A-Z]{1,3})\$?([1-9]\d{0,6}))?$/i.exec(Z.trim());if(!K)throw new Error(`Excel 范围无效:${Z}`);const s={left:ir(K[1]),top:Number(K[2]),right:ir(K[3]??K[1]),bottom:Number(K[4]??K[2])};if(s.right<s.left||s.bottom<s.top||s.right>16384||s.bottom>1048576)throw new Error(`Excel 范围超出边界或顺序无效:${Z}`);return s}function Hr(Z,K){if(K!==void 0)return Ne(K);const s=Z.model.rows??[];if(!s.length)return{top:1,left:1,bottom:1,right:1};const x={top:1/0,left:1/0,bottom:1,right:1};for(const _ of s)x.top=Math.min(x.top,_.number),x.bottom=Math.max(x.bottom,_.number),x.left=Math.min(x.left,_.min||1),x.right=Math.max(x.right,_.max||1);return x}function Vr(Z,K,s){const x=Z.bottom-Z.top+1,_=Z.right-Z.left+1;if(x>K.limits.maxRows||_>K.limits.maxColumns||x*_>s)throw new Error(`Excel 范围 ${qe(Z)} 超过导入行、列或单元格上限;请用 sheets/range 缩小范围`);return x*_}function Wr(Z,K){return Z.top<=K.bottom&&Z.bottom>=K.top&&Z.left<=K.right&&Z.right>=K.left}function qr(Z,K){const s=[];for(const x of Z.model.merges){const _=Ne(x);if(Wr(K,_)){if(_.left<K.left||_.right>K.right||_.top<K.top||_.bottom>K.bottom)throw new Error(`${Z.name}: 范围 ${qe(K)} 截断合并单元格 ${x},请包含完整合并区域`);s.push(_)}}return s}function Xr(Z,K){const s=new Map;for(const _ of K)s.set(_.top,Math.max(s.get(_.top)??_.top,_.bottom));const x=[];for(let _=Z.top;_<=Z.bottom;){let h=s.get(_)??_;for(let o=_;o<=h;o++)h=Math.max(h,s.get(o)??o);x.push({top:_,bottom:h}),_=h+1}return x}function Zr(Z,K,s,x){const _=[];let h,o=0;for(const a of Z){const r=a.bottom-a.top+1;if(r>200)throw new Error("合并单元格跨越超过 200 行,无法安全分段;请先缩小或拆分该合并区域");let t=0;for(let l=a.top;l<=a.bottom;l++)t+=x(l);if(t>s&&Number.isFinite(s))throw new Error("合并区域或单行高度超过标准纸张可用高度;请使用 wide 或调整原模板行高");const e=h?a.bottom-h.top+1:r;h&&(e>K||o+t>s)&&(_.push(h),h=void 0,o=0),h?h.bottom=a.bottom:h={...a},o+=t}return h&&_.push(h),_}function Kr(Z){const K=new Map,s=new Set;for(const x of Z){K.set(`${x.top}:${x.left}`,x);for(let _=x.top;_<=x.bottom;_++)for(let h=x.left;h<=x.right;h++)(_!==x.top||h!==x.left)&&s.add(`${_}:${h}`)}return{masters:K,covered:s}}function He(Z,K){return new RegExp(`\\b${K}\\s*=\\s*["']([^"']*)["']`,"i").exec(Z)?.[1]}function sr(Z,K){const s=Ne(Z);if(s.bottom>K.limits.maxRows||s.right>K.limits.maxColumns)throw new Error(`Excel 源文件坐标 ${Z} 超过加载行列上限;请先裁剪工作簿或显式提高 limits`)}function Gr(Z,K,s){const x=/^<(?:\w+:)?(\w+)\b/.exec(Z)?.[1];if(x==="c"){const _=He(Z,"r");if(_&&sr(_,K),++s.cells>1e6)throw new Error("Excel 源文件超过 100 万个单元格的加载上限,请先裁剪工作簿")}else if(x==="row"){if(++s.rows>1e6)throw new Error("Excel 源文件超过 100 万行的加载上限,请先裁剪工作簿");const _=He(Z,"r");if(_&&(!/^\d+$/.test(_)||Number(_)<1||Number(_)>K.limits.maxRows))throw new Error("Excel 源文件行坐标超过加载上限,请先裁剪工作簿或提高 limits.maxRows")}else if(x==="mergeCell"){const _=He(Z,"ref");if(!_)throw new Error("Excel 合并单元格缺少范围");sr(_,K);const h=Ne(_),o=(h.bottom-h.top+1)*(h.right-h.left+1);if(s.mergedCells+=o,h.bottom-h.top+1>200||s.mergedCells>1e6)throw new Error("Excel 合并区域超过安全加载上限,请先拆分合并区域")}else if(x==="dimension"){const _=He(Z,"ref");_&&Ne(_)}}function Yr(Z,K,s,x,_){let h="";return(o,a=!1)=>{if(h+=o,/<!DOCTYPE|<!ENTITY/i.test(h))throw new Error("Excel XML 不允许外部实体或 DTD");const r=/<[^>]*>/g;let t,e=0;for(;t=r.exec(h);){if(s&&Gr(t[0],Z,K),x&&/^<(?:\w+:)?xf\b/.test(t[0])&&++K.styles>131072)throw new Error("Excel 样式数量超过安全加载上限");if(_&&/^<(?:\w+:)?si\b/.test(t[0])&&++K.strings>1e6)throw new Error("Excel 共享字符串数量超过安全加载上限");e=r.lastIndex}const l=h.lastIndexOf("<");if(h=l>=e?h.slice(l):"",h.length>65536)throw new Error("Excel XML 标签长度异常");if(a&&h)throw new Error("Excel XML 标签不完整")}}function Jr(Z,K){const s=Z.slice(K.start,K.start+K.compressed),x=new Blob([s.buffer]).stream();if(K.method===0)return x;try{return x.pipeThrough(new DecompressionStream("deflate-raw"))}catch{throw new Error("当前环境不支持安全 Excel 解压;请使用支持 DecompressionStream deflate-raw 的现代浏览器或 Node.js 22+")}}async function Qr(Z,K,s){let x=0;const _={cells:0,rows:0,mergedCells:0,styles:0,strings:0};if(K.filter(o=>/^xl\/worksheets\/[^/]+\.xml$/i.test(o.name)).length>s.limits.maxSheets)throw new Error("Excel 工作表数量超过导入上限");for(const o of K){const a=Jr(Z,o).getReader(),r=/^xl\/worksheets\/[^/]+\.xml$/i.test(o.name),t=/\.xml$/i.test(o.name)?Yr(s,_,r,o.name==="xl/styles.xml",o.name==="xl/sharedStrings.xml"):void 0,e=t?new TextDecoder("utf-8",{fatal:!0}):void 0;try{for(;;){const l=await a.read();if(l.done)break;if(x+=l.value.byteLength,x>s.limits.maxUncompressedBytes)throw new Error("Excel 实际解压内容超过导入大小上限");t&&e&&t(e.decode(l.value,{stream:!0}))}t&&e&&t(e.decode(),!0)}finally{await a.cancel().catch(()=>{}),a.releaseLock()}}}const tn=101010256,en=33639248,rn=67324752;async function nn(Z,K){if(Z instanceof Uint8Array){if(Z.byteLength>K)throw new Error("Excel 文件超过导入大小上限");return new Uint8Array(Z)}if(Z instanceof ArrayBuffer){if(Z.byteLength>K)throw new Error("Excel 文件超过导入大小上限");return new Uint8Array(Z.slice(0))}if(typeof Blob<"u"&&Z instanceof Blob){if(Z.size>K)throw new Error("Excel 文件超过导入大小上限");return new Uint8Array(await Z.arrayBuffer())}throw new Error("Excel 导入需要 ArrayBuffer、Uint8Array 或 Blob")}function sn(Z){const K=Math.max(0,Z.byteLength-65557);for(let s=Z.byteLength-22;s>=K;s--)if(Z.getUint32(s,!0)===tn&&s+22+Z.getUint16(s+20,!0)===Z.byteLength)return s;throw new Error("Excel 文件不是完整的 .xlsx ZIP 文件")}function on(Z,K){const s=Z.getUint16(K+10,!0),x=Z.getUint32(K+16,!0),_=Z.getUint32(K+12,!0);if(Z.getUint16(K+4,!0)+Z.getUint16(K+6,!0)||Z.getUint16(K+8,!0)!==s||s===65535||x===4294967295||_===4294967295)throw new Error("不支持分卷或 ZIP64 Excel 文件");if(s<1||s>2048||x+_!==K)throw new Error("Excel ZIP 目录无效或条目过多");return{start:x,size:_,entries:s}}function an(Z,K,s,x,_){if(s+46>x||K.getUint32(s,!0)!==en)throw new Error("Excel ZIP 条目无效");const h=K.getUint16(s+8,!0),o=K.getUint16(s+10,!0),a=K.getUint16(s+28,!0),r=s+46+a+K.getUint16(s+30,!0)+K.getUint16(s+32,!0),t=K.getUint32(s+42,!0),e=K.getUint32(s+20,!0),l=K.getUint32(s+24,!0);if(r>x||t+30>Z.length||h&1||![0,8].includes(o))throw new Error("Excel ZIP 包含无效、加密或不支持的条目");if(l===4294967295||e===4294967295||K.getUint32(t,!0)!==rn)throw new Error("Excel ZIP 本地条目无效");const n=t+30+K.getUint16(t+26,!0)+K.getUint16(t+28,!0);if(n+e>_||K.getUint16(t+8,!0)!==o||K.getUint16(t+6,!0)!==h)throw new Error("Excel ZIP 数据边界或压缩方式无效");const i=new TextDecoder().decode(Z.subarray(s+46,s+46+a));if(i.includes("\\")||i.split("/").includes("..")||i.startsWith("/"))throw new Error("Excel ZIP 包含不安全路径");return{name:i,next:r,size:l,start:n,compressed:e,method:o}}function ln(Z,K){/^xl\/(charts|media|drawings)\//.test(Z)&&K.add("Excel 中的图表、图片与绘图对象暂不导入,仅保留单元格版式"),/^xl\/pivot/.test(Z)&&K.add("Excel 透视表仅导入已保存的单元格结果,不提供交互或重算"),/^xl\/externalLinks\//.test(Z)&&K.add("Excel 外部链接不会访问或刷新,仅使用文件内已保存的结果"),/vbaProject|activeX|embeddings/i.test(Z)&&K.add("Excel 宏、控件与嵌入对象不会执行或导入")}async function un(Z,K,s){const x=await nn(Z,K.limits.maxFileBytes),_=new DataView(x.buffer,x.byteOffset,x.byteLength);if(x.length<22)throw new Error("Excel 文件为空或格式无效;仅支持 .xlsx");const h=on(_,sn(_));let o=h.start,a=0;const r=new Set,t=[];for(let e=0;e<h.entries;e++){const l=an(x,_,o,h.start+h.size,h.start);if(r.has(l.name))throw new Error("Excel ZIP 条目名称重复");if(r.add(l.name),a+=l.size,a>K.limits.maxUncompressedBytes)throw new Error("Excel 解压后内容超过导入大小上限");ln(l.name,s),t.push(l),o=l.next}if(o!==h.start+h.size||!r.has("xl/workbook.xml")||!r.has("[Content_Types].xml"))throw new Error("文件不是受支持的 .xlsx 工作簿");return await Qr(x,t,K),x}const fn=864e5;function je(Z,K=2){return String(Z).padStart(K,"0")}function cn(Z,K,s){const x=[],_=K.replace(/"([^"]*)"|\\(.)/g,(a,r,t)=>(x.push(r??t??""),`${x.length-1}`)).replace(/\[\$[^\]]*\]/g,"");if(/\[|ddd|mmm|AM\/PM/i.test(_))return s(),Z.toISOString().replace("T"," ").replace(/\.000Z$/,"");let h=!1;return _.replace(/yyyy|yy|mm|m|dd|d|hh|h|ss|s/gi,(a,r)=>{const t=a.toLowerCase();if(t.startsWith("y"))return t.length===2?je(Z.getUTCFullYear()%100):String(Z.getUTCFullYear());if(t.startsWith("d"))return je(Z.getUTCDate(),t.length);if(t.startsWith("h"))return h=!0,je(Z.getUTCHours(),t.length);if(t.startsWith("s"))return je(Z.getUTCSeconds(),t.length);const e=h||/^\s*:\s*s/i.test(_.slice(r+a.length));return je(e?Z.getUTCMinutes():Z.getUTCMonth()+1,t.length)}).replace(/\uE000(\d+)\uE000/g,(a,r)=>x[Number(r)]??"")}function hn(Z,K,s){if(Z==null)return{text:"",value:null};if(Z instanceof Date)return Number.isFinite(Z.getTime())?{text:cn(Z,K||"yyyy-mm-dd",s),value:Z.getTime()/fn+25569}:(s(),{text:"",value:null});if(typeof Z=="number")return Number.isFinite(Z)?{text:br.formatExcelNumber(Z,K,s),value:Z}:(s(),{text:String(Z),value:null});if(typeof Z=="boolean")return{text:Z?"TRUE":"FALSE",value:Z};if(typeof Z=="string")return{text:Z,value:Z};if("error"in Z)return{text:Z.error,value:Z.error};if("richText"in Z){const x=Z.richText.map(_=>_.text).join("");return{text:x,value:x}}return"text"in Z?{text:String(Z.text),value:String(Z.text)}:(s(),{text:"",value:null})}function dn(Z,K){const s=(K??"").replace(/"[^"]*"|\\.|\[[^\]]*\]/g,"");return typeof Z=="number"||Z===null&&/[0#?]/.test(s)?"number":typeof Z=="boolean"?"boolean":"text"}function pn(Z,K,s,x,_){let h;try{h=K.formula}catch{_.add(`${x}: 部分共享公式无法展开,仅保留缓存结果`)}Object.assign(Z,{editable:!1,...h?{formula:h}:{}}),_.add(`${x}: 公式使用 Excel 已保存的计算结果并保持只读;修改其他单元格不会自动重算公式`),s==null&&_.add(`${x}: 存在没有缓存结果的公式,显示为空;请先在 Excel 中计算并保存`)}function mn(Z,K,s,x){const _=Z.numFmt,h=()=>x.add(`${s}: 存在无法完整还原的自定义数字或日期格式,已保留原值和 numberFormat`),o=Z.value,a=o&&typeof o=="object"&&("formula"in o||"sharedFormula"in o),r=a?Z.result:o,t=hn(r,_,h),e={...t,editable:!0,..._?{numberFormat:_}:{}};return e.valueType=dn(t.value,_),r instanceof Date&&(Object.assign(e,{editable:!1}),x.add(`${s}: 日期单元格保留 Excel 日期序列与格式,目前在预览中保持只读`),K&&x.add(`${s}: 1904 日期系统已统一转换为 1900 日期系统,保留相同日历日期`)),a&&pn(e,Z,r,s,x),o&&typeof o=="object"&&"richText"in o&&x.add(`${s}: 单元格内混合字体已合并为纯文本,保留单元格级样式`),typeof e.text=="string"&&/\{\{[^}]+\}\}/.test(e.text)&&x.add(`${s}: {{字段}} 占位符按原文导入;动态业务数据需显式绑定,不会自动推断接口字段`),e}const or=["FFFFFF","000000","E7E6E6","44546A","4472C4","ED7D31","A5A5A5","FFC000","5B9BD5","70AD47","0563C1","954F72"],bn=["000000","FFFFFF","FF0000","00FF00","0000FF","FFFF00","FF00FF","00FFFF"],gn={hair:.25,dotted:.5,dashed:.5,thin:.5,medium:1,thick:1.5,double:1};function yn(Z){const K=Z.model,s=/<(?:\w+:)?clrScheme\b[^>]*>([\s\S]*?)<\/(?:\w+:)?clrScheme>/.exec(K.themes?.theme1??"");if(!s)return or;const x=[...s[1].matchAll(/<(?:\w+:)?(?:srgbClr|sysClr)\b[^>]*(?:val|lastClr)="([A-Fa-f0-9]{6})"[^>]*\/?\s*>/g)].map(_=>_[1].toUpperCase());return x.length<12?or:[x[1],x[0],x[3],x[2],...x.slice(4,12)]}function Ke(Z,K=0){return`#${[0,2,4].map(s=>{const x=Number.parseInt(Z.slice(s,s+2),16),_=K<0?x*(1+K):x*(1-K)+255*K;return Math.max(0,Math.min(255,Math.round(_))).toString(16).padStart(2,"0")}).join("").toUpperCase()}`}function Oe(Z,K){if(!Z)return;const s=Z.argb;if(s&&/^[A-Fa-f\d]{6,8}$/.test(s))return Ke(s.slice(-6),Z.tint);if(Z.theme!==void 0)return Ke(K[Z.theme]??"000000",Z.tint);if(Z.indexed!==void 0&&Z.indexed<16)return Ke(bn[Z.indexed%8],Z.tint)}function vn(Z,K,s,x){const _=[K.top,K.right,K.bottom,K.left],h=_.map(a=>!!a?.style);[Z.borderTop,Z.borderRight,Z.borderBottom,Z.borderLeft]=h;const o=_.filter(a=>a?.style);o.length&&(Z.borderColor=Oe(o[0]?.color,s)??"#000000",Z.lineWidthPt=gn[o[0].style]??.5,o.some(a=>a.style!=="thin"&&a.style!=="medium"&&a.style!=="thick")&&x(),o.some(a=>Oe(a.color,s)!==Oe(o[0].color,s)||a.style!==o[0].style)&&x(),K.diagonal?.style&&x())}function wn(Z,K,s){const x=K.horizontal;x&&["left","center","right","justify"].includes(x)?Z.align=x:x&&s(),K.vertical&&(Z.verticalAlign=K.vertical==="distributed"||K.vertical==="justify"?"middle":K.vertical),(K.textRotation||K.shrinkToFit||K.indent||K.readingOrder)&&s()}function _n(Z,K,s,x){const _=Z.style,h=_.font??{},o={align:"left",verticalAlign:"bottom",fontFamily:h.name||"Calibri",fontSize:h.size||11};h.bold!==void 0&&(o.bold=h.bold),h.italic!==void 0&&(o.italic=h.italic),h.underline!==void 0&&(o.underline=!!h.underline);const a=Oe(h.color,K);a&&(o.color=a);const r=_.fill;if(r?.type==="pattern"&&r.pattern==="solid"){const t=Oe(r.fgColor,K);t&&(o.backgroundColor=t)}else r&&!(r.type==="pattern"&&r.pattern==="none")&&x.add(`${s}: 渐变或图案填充暂不支持,保留单元格内容`);return _.border&&vn(o,_.border,K,()=>x.add(`${s}: 多种边线颜色、虚线、双线或对角线按单元格统一实线近似呈现`)),_.alignment&&wn(o,_.alignment,()=>x.add(`${s}: 部分旋转、缩进、收缩或分散对齐样式暂不支持`)),(h.strike||h.vertAlign)&&x.add(`${s}: 删除线、上标或下标暂不支持`),o}function xn(Z,K,s,x=1){const _=new WeakMap;return h=>{let o=_.get(h.style);if(!o){const t=_n(h,Z,K,s);t.fontSize=(t.fontSize??11)*x,o=h.alignment?.horizontal?{left:t,center:t,right:t}:{left:t,center:{...t,align:"center"},right:{...t,align:"right"}},_.set(h.style,o)}const a=h.value,r=a&&typeof a=="object"&&("formula"in a||"sharedFormula"in a)?h.result:a;return typeof r=="boolean"?o.center:typeof r=="number"||r instanceof Date?o.right:o.left}}const Ye={maxFileBytes:20*1024*1024,maxUncompressedBytes:64*1024*1024,maxCells:25e4,maxRows:1e5,maxColumns:2048,maxSheets:32},ar={...Ye,maxCells:1e6,maxRows:1048576,maxColumns:16384};function Sn(Z){const K=Z.layout??"wide";if(!["wide","a3","a4"].includes(K))throw new Error("Excel 导入 layout 仅支持 wide、a3、a4");if(Z.landscape!==void 0&&typeof Z.landscape!="boolean")throw new Error("landscape 应为布尔值");const s=Z.maxRowsPerPage??80;if(!Number.isInteger(s)||s<1||s>200)throw new Error("maxRowsPerPage 应为 1 到 200 的整数");const x={...Ye};for(const _ of Object.keys(Ye)){const h=Z.limits?.[_];if(h!==void 0){if(!Number.isInteger(h)||h<1||h>ar[_])throw new Error(`${_} 应为 1 到 ${ar[_]} 的整数`);x[_]=h}}return{layout:K,landscape:Z.landscape??!0,maxRowsPerPage:s,limits:x}}class kn{constructor(){this.messages=new Set,this.overflow=!1}add(K){this.messages.size<200?this.messages.add(K):this.messages.has(K)||(this.overflow=!0)}result(){return[...this.messages,...this.overflow?["其余导入告警已合并;请缩小范围进一步检查"]:[]]}}const En=25.4/72;function Mn(Z,K){if(K.sheets===void 0)return Z.worksheets.filter(x=>x.state==="visible");if(!Array.isArray(K.sheets)||K.sheets.length===0)throw new Error("sheets 应为非空的工作表名称或一基位置数组");const s=[];for(const x of K.sheets){const _=typeof x=="string"?Z.getWorksheet(x):Number.isInteger(x)&&x>0?Z.worksheets[x-1]:void 0;if(!_)throw new Error(`Excel 工作表不存在:${String(x)}`);if(s.includes(_))throw new Error(`Excel 工作表选择重复:${_.name}`);s.push(_)}return s}function Cn(Z,K){if(typeof Z.range=="string")return Z.range;if(Z.range!==void 0){if(Z.range===null||typeof Z.range!="object"||Array.isArray(Z.range))throw new Error("range 应为 A1 范围或以工作表名为键的范围对象");return Object.prototype.hasOwnProperty.call(Z.range,K)?Z.range[K]:void 0}}function lr(Z,K,s){if(!Number.isFinite(Z)||Z<0||Z>s)throw new Error(`${K} 无效或超过尺寸上限`);return Math.max(.01,Z)}function Tn(Z,K,s,x){const _=[];for(let f=K.left;f<=K.right;f++){const c=Z.getColumn(f);c.hidden&&x.add(`${Z.name}: 隐藏行列按隐藏尺寸保留;需要编辑时请先在 Excel 中取消隐藏`);const u=c.width??Z.properties.defaultColWidth??8.43;_.push(lr(c.hidden||u===0?.01:vr(u),"Excel 列宽",2e3))}const h=_.reduce((f,c)=>f+c,0),o=s.layout==="wide",a=s.layout==="a3"?[297,420]:[210,297],r=o?h:a[s.landscape?1:0],t=o?297:a[s.landscape?0:1],e=o?0:10,l=r-2*e,n=o?1:l/h;!o&&n<.5&&x.add(`${Z.name}: 标准纸张列宽压缩较大;完整宽表建议使用 layout: 'wide'`);const i=f=>{const c=Z.getRow(f);return c.hidden&&x.add(`${Z.name}: 隐藏行列按隐藏尺寸保留;需要编辑时请先在 Excel 中取消隐藏`),lr(c.hidden?.01:(c.height??Z.properties.defaultRowHeight??15)*En*n,"Excel 行高",1e3)};return{width:l,pageWidth:r,pageHeight:t,margin:e,scale:n,columns:_.map(f=>f*n),rowHeight:i}}function An(Z,K){const{sheet:s,range:x,merges:_,style:h,date1904:o,warnings:a}=Z,r=[];for(let t=K.top;t<=K.bottom;t++){const e=[];for(let l=x.left;l<=x.right;l++){const n=`${t}:${l}`;if(_.covered.has(n))continue;const i=s.getCell(t,l),f=mn(i,o,s.name,a);s.sheetProtection?.sheet===!0&&i.protection?.locked!==!1&&(f.editable=!1),f.style=h(i);const u=_.masters.get(n);u&&(f.colSpan=u.right-u.left+1,f.rowSpan=u.bottom-u.top+1),e.push(f)}r.push(e)}return r}function ur(Z,K,s,x){const{geometry:_,range:h,sheet:o,options:a}=Z,r=Array.from({length:K.bottom-K.top+1},(t,e)=>_.rowHeight(K.top+e));return{kind:"rect",leftMm:_.margin,topMm:s,widthMm:_.width,heightMm:r.reduce((t,e)=>t+e,0),nid:`xlsx:${Z.tableId}:${K.top}`,grid:{cells:An(Z,K),colWidthsMm:_.columns,rowHeightsMm:r,paddingMm:.25*_.scale},table:{id:Z.tableId,role:x?"header":"body",rowIndex:x?-1:K.top-Z.headerBottom-1,columnKeys:Array.from({length:h.right-h.left+1},(t,e)=>Ge(h.left+e)),title:o.name,layout:a.layout==="wide"?"wide":"page"},meta:{xlsxSheet:o.name,xlsxRange:qe({...h,top:K.top,bottom:K.bottom})}}}function Rn(Z,K){const{geometry:s,options:x,range:_,headerBottom:h}=Z,o=[];let a=s.margin;if(K.top===_.top){const t=ur(Z,{top:K.top,bottom:h},a,!0);o.push(t),a+=t.heightMm}const r=Math.max(K.top,h+1);return r<=K.bottom&&o.push(ur(Z,{top:r,bottom:K.bottom},a,!1)),{widthMm:s.pageWidth,heightMm:s.pageHeight,layout:x.layout==="wide"?"wide":"page",marginTopMm:s.margin,marginBottomMm:s.margin,marginLeftMm:s.margin,marginRightMm:s.margin,components:o}}function jn(Z,K){const s=Z;Z.state!=="visible"&&K.add(`${Z.name}: 已按显式选择导入隐藏工作表`),Z.sheetProtection?.sheet===!0&&K.add(`${Z.name}: 已保留启用的工作表保护,锁定单元格在预览中保持只读`),s.conditionalFormattings?.length&&K.add(`${Z.name}: 条件格式规则暂不执行,仅使用已保存的基础单元格样式`),Z.autoFilter&&K.add(`${Z.name}: Excel 筛选下拉与排序操作不导入,完整保留选区单元格`),Object.keys(s.dataValidations?.model??{}).length&&K.add(`${Z.name}: Excel 数据验证与下拉输入规则不导入;业务校验应由宿主配置`)}function On(Z,K,s,x,_,h){jn(Z,_);const o=qr(Z,K),a=Xr(K,o),r=Tn(Z,K,x,_),t=K.right-K.left+1,e=Math.max(1,Math.min(x.maxRowsPerPage,Math.floor(1e4/t)));if(a.some(i=>(i.bottom-i.top+1)*t>Math.max(1e4,t)))throw new Error(`${Z.name}: 跨行合并区域超过单段单元格预算,请缩小范围或拆分合并区域`);const l=Zr(a,e,x.layout==="wide"?1/0:r.pageHeight-r.margin*2,r.rowHeight),n={sheet:Z,range:K,geometry:r,options:x,warnings:_,merges:Kr(o),style:xn(yn(s),Z.name,_,r.scale),date1904:s.properties.date1904===!0,tableId:`xlsx:${h}:${Z.name}`,headerBottom:a[0].bottom};return l.map(i=>Rn(n,i))}async function In(Z,K={}){const s=Sn(K),x=new kn,_=await un(Z,s,x),h=new fr.Workbook;try{await h.xlsx.load(_)}catch{throw new Error("Excel 文件解析失败;请确认它是未加密且完整的 .xlsx 文件")}if(h.worksheets.length>s.limits.maxSheets)throw new Error("Excel 工作表数量超过导入上限");const o=Mn(h,K);if(!o.length)throw new Error("Excel 中没有可导入的可见工作表;可通过 sheets 显式选择隐藏工作表");const a={schemaVersion:mr.RENDER_PLAN_SCHEMA_VERSION,pages:[]},r=[];let t=s.limits.maxCells;for(const e of o){const l=Hr(e,Cn(K,e.name));t-=Vr(l,s,t);const n=h.worksheets.indexOf(e)+1,i=On(e,l,h,s,x,n);r.push({name:e.name,index:n,range:qe(l),rowCount:l.bottom-l.top+1,columnCount:l.right-l.left+1,pageStart:a.pages.length,pageCount:i.length}),a.pages.push(...i)}return{template:a,warnings:x.result(),sheets:r}}exports.importExcelTemplate=In;exports.renderPlanToXlsx=$r;
package/dist/xlsx.js CHANGED
@@ -22622,7 +22622,7 @@ function Mr(Z, K, s, x) {
22622
22622
  }
22623
22623
  const h = K.value;
22624
22624
  if (h === null || typeof h == "string" || typeof h == "boolean" || typeof h == "number" && Number.isFinite(h)) {
22625
- Ve(h, Z.address), Z.value = h, typeof h == "number" && K.numberFormat && (Z.numFmt = K.numberFormat);
22625
+ Ve(h, Z.address), Z.value = h, K.numberFormat && (Z.numFmt = K.numberFormat);
22626
22626
  return;
22627
22627
  }
22628
22628
  Ve(_, Z.address), Z.value = _, x.push(`原始单元格值无效,已保留显示文本:${Z.address}`);