@agile-team/mach-report 2.15.0 → 2.17.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.
Files changed (171) hide show
  1. package/README.md +21 -12
  2. package/dist/{ExcelBindingWizard-Bs43BGNp.cjs → ExcelBindingWizard-Bq6FYME6.cjs} +1 -1
  3. package/dist/{ExcelBindingWizard-BKH1nGNS.js → ExcelBindingWizard-Co1svTsw.js} +3 -3
  4. package/dist/{ParamEditor-Da4akw6V.cjs → ParamEditor-B5UZRgxv.cjs} +1 -1
  5. package/dist/{ParamEditor-DoAhzJsm.js → ParamEditor-DNNARyeB.js} +1 -1
  6. package/dist/{ReportBatchPanel-wP9m9Pj1.cjs → ReportBatchPanel-Ctvs2t_9.cjs} +1 -1
  7. package/dist/{ReportBatchPanel-BMf6boMA.js → ReportBatchPanel-uQh06usx.js} +3 -3
  8. package/dist/ReportPreview-BdQawRh0.js +4879 -0
  9. package/dist/ReportPreview-CJC_-j2I.cjs +6 -0
  10. package/dist/{ReportTemplateLibrary-Sxr3eD0J.cjs → ReportTemplateLibrary-CnP7_1pH.cjs} +1 -1
  11. package/dist/{ReportTemplateLibrary-C9wutIiT.js → ReportTemplateLibrary-TIL_Oj2l.js} +1 -1
  12. package/dist/RuleEditor-DkRjOLlr.js +2141 -0
  13. package/dist/RuleEditor-h5anGsDB.cjs +1 -0
  14. package/dist/{TemplateOutlinePanel-JTSR53vJ.cjs → TemplateOutlinePanel-BlLxRrfu.cjs} +1 -1
  15. package/dist/{TemplateOutlinePanel-D6Bkny59.js → TemplateOutlinePanel-BouxsuqQ.js} +1 -1
  16. package/dist/{TemplateReusePanel-rVuK1kTz.js → TemplateReusePanel-BEACLPaN.js} +2 -2
  17. package/dist/{TemplateReusePanel-Kx35S0Ql.cjs → TemplateReusePanel-yxsHSO40.cjs} +1 -1
  18. package/dist/{TemplateReviewPanel-B0ar9_zf.js → TemplateReviewPanel-B1OGRY2i.js} +1 -1
  19. package/dist/{TemplateReviewPanel-Dn6X9UmY.cjs → TemplateReviewPanel-D9Cx0m2N.cjs} +1 -1
  20. package/dist/analytics.cjs +1 -1
  21. package/dist/analytics.d.cts +65 -1
  22. package/dist/analytics.d.ts +65 -1
  23. package/dist/analytics.js +4 -4
  24. package/dist/artifact-integrity.json +105 -101
  25. package/dist/assets-BIMVwjQe.js +231 -0
  26. package/dist/assets-Dfs2ElxI.cjs +1 -0
  27. package/dist/auto-BIOmtVhk.js +240 -0
  28. package/dist/auto-DDHflI9v.cjs +1 -0
  29. package/dist/{batch-BfZHN1do.js → batch-WzDIXJAt.js} +1 -1
  30. package/dist/{batch-CLpELXBl.cjs → batch-z6Aw5GEY.cjs} +1 -1
  31. package/dist/codes.d.cts +2 -0
  32. package/dist/codes.d.ts +2 -0
  33. package/dist/component-tree-Ca6YYfHq.js +61 -0
  34. package/dist/component-tree-DkGLEfZC.cjs +1 -0
  35. package/dist/computed-BW5a8QFk.js +612 -0
  36. package/dist/computed-C2GD3XcE.cjs +1 -0
  37. package/dist/config-Dg_o8e7m.cjs +1 -0
  38. package/dist/{config-BVsJXSqS.js → config-XQ4qrQ7Q.js} +66 -64
  39. package/dist/dataset-DL83majE.js +161 -0
  40. package/dist/dataset-IrlXbUvh.cjs +1 -0
  41. package/dist/designer-D9XAxqSc.js +5178 -0
  42. package/dist/designer-uCDo5XSK.cjs +2 -0
  43. package/dist/designer.cjs +1 -1
  44. package/dist/designer.d.cts +178 -3
  45. package/dist/designer.d.ts +178 -3
  46. package/dist/designer.js +1 -1
  47. package/dist/drill-ByN8COs_.cjs +1 -0
  48. package/dist/{drill-ByJviLXS.js → drill-CKW3Xtfa.js} +5 -5
  49. package/dist/encoding-BFMFIc4r.cjs +1 -0
  50. package/dist/encoding-DP_Eaf0A.js +21 -0
  51. package/dist/{font-loader-B_UkxpzC.cjs → font-loader-7FWVlykp.cjs} +1 -1
  52. package/dist/{font-loader-Q3bQjmrI.js → font-loader-CQZowp0I.js} +1 -1
  53. package/dist/index.cjs +8 -9
  54. package/dist/index.d.cts +175 -1
  55. package/dist/index.d.ts +175 -1
  56. package/dist/index.js +1343 -915
  57. package/dist/json-snapshot-D7PE1NsU.cjs +2 -0
  58. package/dist/json-snapshot-DYmEe3sO.js +1779 -0
  59. package/dist/matrix-JLAXlux-.js +302 -0
  60. package/dist/matrix-gTHpDTGm.cjs +1 -0
  61. package/dist/{pdf-CvvrjPQg.cjs → pdf-B8JouyYv.cjs} +48 -50
  62. package/dist/{pdf-BwNyeGpt.js → pdf-l3ea86di.js} +2734 -2748
  63. package/dist/pdf.cjs +1 -1
  64. package/dist/pdf.d.cts +14 -0
  65. package/dist/pdf.d.ts +14 -0
  66. package/dist/pdf.js +2 -2
  67. package/dist/{plugin-Ca_XZG3l.js → plugin-BBp74CQZ.js} +1 -1
  68. package/dist/{plugin-DHO7X8z2.cjs → plugin-CtFX9PFG.cjs} +1 -1
  69. package/dist/prepared-CARicKYh.js +87 -0
  70. package/dist/prepared-Ch1x_Gog.cjs +1 -0
  71. package/dist/progress-BXzlVbIp.js +29 -0
  72. package/dist/progress-DJBd9Rb9.cjs +1 -0
  73. package/dist/{progress-D-OTpEav.js → progress-Hc2vxoCs.js} +2 -2
  74. package/dist/protocol-B5A2uom4.cjs +1 -0
  75. package/dist/protocol-BaiWjq5w.js +90 -0
  76. package/dist/record-bindings-B86Sur_y.cjs +1 -0
  77. package/dist/{record-bindings-Do_b3h4V.js → record-bindings-D4TuMzHs.js} +10 -11
  78. package/dist/{region-binding-workflow-BMhK_TjP.js → region-binding-workflow-BNasF5kz.js} +2 -2
  79. package/dist/{region-binding-workflow-DIYJdCUr.cjs → region-binding-workflow-O2Cni3mF.cjs} +1 -1
  80. package/dist/report-encoding-worker.cjs +1 -0
  81. package/dist/report-encoding-worker.d.ts +1 -0
  82. package/dist/report-encoding-worker.js +2 -0
  83. package/dist/rich-text-layout-ALlMoYOG.cjs +3 -0
  84. package/dist/rich-text-layout-Ct5WrY1g.js +102 -0
  85. package/dist/runtime-DakRXui3.js +170 -0
  86. package/dist/runtime-dL5ygIfa.cjs +1 -0
  87. package/dist/sbom.cdx.json +2 -2
  88. package/dist/server/node.d.cts +132 -1
  89. package/dist/server/node.d.ts +132 -1
  90. package/dist/server-node.cjs +5 -1
  91. package/dist/server-node.js +5177 -463
  92. package/dist/server.cjs +1 -1
  93. package/dist/server.d.cts +182 -2
  94. package/dist/server.d.ts +182 -2
  95. package/dist/server.js +918 -833
  96. package/dist/sha256-BshdOkCC.cjs +1 -0
  97. package/dist/sha256-DTG-Gq8i.js +157 -0
  98. package/dist/style-67OqfNed.js +73 -0
  99. package/dist/style-C22Pbv3T.cjs +1 -0
  100. package/dist/style.css +1 -1
  101. package/dist/template-catalog-Dua8h9ZA.cjs +1 -0
  102. package/dist/{template-catalog-j2B1MJlL.js → template-catalog-wT1fNeAP.js} +10 -10
  103. package/dist/{template-fragments-DcKeiylI.cjs → template-fragments-BajTajb4.cjs} +1 -1
  104. package/dist/{template-fragments-BGbQLGlV.js → template-fragments-DmX5XK4N.js} +2 -2
  105. package/dist/template-registry-CpysHAxy.cjs +1 -0
  106. package/dist/{template-registry-BtaKPELV.js → template-registry-u11fPd8D.js} +389 -321
  107. package/dist/{textwrap-DE1kgcJB.js → textwrap-BEIg2w8y.js} +1 -1
  108. package/dist/textwrap-BI-yJ6Wt.cjs +4 -0
  109. package/dist/{tree-BX380Rr7.cjs → tree-CLpxYbKa.cjs} +1 -1
  110. package/dist/{tree-CjVZLRw7.js → tree-DNJorJUf.js} +1 -1
  111. package/dist/vue/async.d.cts +174 -2
  112. package/dist/vue/async.d.ts +174 -2
  113. package/dist/vue/index.d.cts +218 -3
  114. package/dist/vue/index.d.ts +218 -3
  115. package/dist/vue-async.cjs +1 -1
  116. package/dist/vue-async.js +3 -3
  117. package/dist/vue.cjs +1 -1
  118. package/dist/vue.js +7 -7
  119. package/dist/{workbook-session-BvToI-Fd.js → workbook-session-B8pNW24X.js} +153 -140
  120. package/dist/{workbook-session-Bjv1YCRK.cjs → workbook-session-DN5LSA5C.cjs} +12 -12
  121. package/dist/worker.cjs +1 -1
  122. package/dist/worker.d.cts +84 -1
  123. package/dist/worker.d.ts +84 -1
  124. package/dist/worker.js +12 -157
  125. package/dist/xlsx-node.cjs +33 -33
  126. package/dist/xlsx-node.js +1282 -1289
  127. package/dist/xlsx.cjs +4 -3
  128. package/dist/xlsx.d.cts +90 -2
  129. package/dist/xlsx.d.ts +90 -2
  130. package/dist/xlsx.js +279 -259
  131. package/package.json +6 -3
  132. package/dist/ReportPreview-ChV19HBp.js +0 -4619
  133. package/dist/ReportPreview-DbLvvOUT.cjs +0 -6
  134. package/dist/RuleEditor-C_Clasvd.js +0 -2037
  135. package/dist/RuleEditor-XhGHK8DE.cjs +0 -1
  136. package/dist/assets-B9ImAi6_.cjs +0 -1
  137. package/dist/assets-DEaz4qsp.js +0 -124
  138. package/dist/batch-BaP6pWDE.cjs +0 -1
  139. package/dist/batch-CGyt-b2W.js +0 -273
  140. package/dist/capabilities-CAh2Nrue.cjs +0 -1
  141. package/dist/capabilities-DskCHs3V.js +0 -69
  142. package/dist/computed-C-4C2S5h.js +0 -521
  143. package/dist/computed-CGV2a809.cjs +0 -1
  144. package/dist/config-D10us76d.cjs +0 -1
  145. package/dist/data-explanation-B8MZRYVS.js +0 -16
  146. package/dist/data-explanation-DE55G30w.cjs +0 -1
  147. package/dist/dataset-BkRmwgeJ.cjs +0 -1
  148. package/dist/dataset-H5pFuQGU.js +0 -121
  149. package/dist/defaults-DXhiM1ZD.js +0 -10
  150. package/dist/defaults-xhmcLLrf.cjs +0 -1
  151. package/dist/designer-2bDlcNXQ.js +0 -5136
  152. package/dist/designer-BT7XCdbW.cjs +0 -2
  153. package/dist/drill-DYTxuL3A.cjs +0 -1
  154. package/dist/grid-strokes-Cr7DwUux.cjs +0 -1
  155. package/dist/grid-strokes-DyyG1q_o.js +0 -53
  156. package/dist/json-snapshot-DFb2eWkf.js +0 -1416
  157. package/dist/json-snapshot-WWSGlaHG.cjs +0 -2
  158. package/dist/matrix-CGRGkn5s.js +0 -112
  159. package/dist/matrix-gEO7ZM_u.cjs +0 -1
  160. package/dist/prepared-CFy9B75C.cjs +0 -1
  161. package/dist/prepared-ajM-H-9B.js +0 -69
  162. package/dist/record-bindings-By_UKZ2g.cjs +0 -1
  163. package/dist/render-plan-7xpGrCEl.cjs +0 -1
  164. package/dist/render-plan-Ck6koX9L.js +0 -13
  165. package/dist/sha256-ArEYjaTI.cjs +0 -1
  166. package/dist/sha256-DPEuJ3nh.js +0 -155
  167. package/dist/style-CQ1PK8ZB.js +0 -67
  168. package/dist/style-UgIJSA1F.cjs +0 -1
  169. package/dist/template-catalog-FJE_c9Qe.cjs +0 -1
  170. package/dist/template-registry-Co1zPq5e.cjs +0 -1
  171. package/dist/textwrap-CWHyzkBH.cjs +0 -4
@@ -74,6 +74,10 @@ declare const __VLS_component: DefineComponent<ExtractPropTypes<{
74
74
  type: PropType<ReportOutputOptions>;
75
75
  default: undefined;
76
76
  };
77
+ exportExecution: {
78
+ type: PropType<ReportExportExecutionOptions>;
79
+ default: undefined;
80
+ };
77
81
  assets: {
78
82
  type: PropType<AssetRenderOptions>;
79
83
  default: undefined;
@@ -244,6 +248,10 @@ declare const __VLS_component: DefineComponent<ExtractPropTypes<{
244
248
  type: PropType<ReportOutputOptions>;
245
249
  default: undefined;
246
250
  };
251
+ exportExecution: {
252
+ type: PropType<ReportExportExecutionOptions>;
253
+ default: undefined;
254
+ };
247
255
  assets: {
248
256
  type: PropType<AssetRenderOptions>;
249
257
  default: undefined;
@@ -325,6 +333,7 @@ declare const __VLS_component: DefineComponent<ExtractPropTypes<{
325
333
  showPdfWindow: boolean;
326
334
  showSettings: boolean;
327
335
  showParams: boolean;
336
+ exportExecution: ReportExportExecutionOptions;
328
337
  drill: ReportDrillOptions;
329
338
  loadParamOptions: ReportParamOptionsLoader;
330
339
  printOptions: ReportPrintOptions;
@@ -489,13 +498,42 @@ declare interface AssetRenderBudget {
489
498
  /** Wall-clock budget, including adapters that ignore AbortSignal. Default 30 seconds. */
490
499
  maxDurationMs?: number;
491
500
  }
501
+ declare interface AssetRenderBudget_2 {
502
+ /** Maximum newly rendered assets, default 1000. Existing imageData is kept unchanged. */
503
+ maxAssets?: number;
504
+ /** Maximum image payload bytes per new asset, default 32 MiB. */
505
+ maxImageBytes?: number;
506
+ /** Maximum total image payload bytes for new assets, default 128 MiB. */
507
+ maxTotalImageBytes?: number;
508
+ /** Wall-clock budget, including adapters that ignore AbortSignal. Default 30 seconds. */
509
+ maxDurationMs?: number;
510
+ }
492
511
  declare interface AssetRenderOptions extends OutputDiagnosticOptions, ImageMediaOptions {
493
512
  assetRenderers?: Partial<Record<ImageComponentKind, ComponentImageRenderer>>;
513
+ /** Explicit id/version registry; unbound components continue using assetRenderers by kind. */
514
+ assetRegistry?: ComponentAssetRegistry;
494
515
  assetBudget?: AssetRenderBudget;
495
516
  /** Default throw prevents an incomplete export; placeholder retains the component and emits diagnostics. */
496
517
  assetFailure?: "throw" | "placeholder";
497
518
  signal?: AbortSignal;
498
519
  }
520
+ declare interface AssetRenderOptions_2 extends OutputDiagnosticOptions_2, ImageMediaOptions_2 {
521
+ assetRenderers?: Partial<Record<ImageComponentKind_2, ComponentImageRenderer_2>>;
522
+ /** Explicit id/version registry; unbound components continue using assetRenderers by kind. */
523
+ assetRegistry?: ComponentAssetRegistry_2;
524
+ assetBudget?: AssetRenderBudget_2;
525
+ /** Default throw prevents an incomplete export; placeholder retains the component and emits diagnostics. */
526
+ assetFailure?: "throw" | "placeholder";
527
+ signal?: AbortSignal;
528
+ }
529
+ declare interface BrowserReportWorker {
530
+ postMessage(value: unknown, transfer?: Transferable[]): void;
531
+ terminate(): void;
532
+ addEventListener(type: "message", listener: (event: MessageEvent) => void): void;
533
+ addEventListener(type: "error" | "messageerror", listener: (event: Event) => void): void;
534
+ removeEventListener(type: "message", listener: (event: MessageEvent) => void): void;
535
+ removeEventListener(type: "error" | "messageerror", listener: (event: Event) => void): void;
536
+ }
499
537
  /** 供 HTML/Word 导出的完整文档;打印路径逐页渲染,避免预先生成所有页。 */
500
538
  export declare function buildPrintDocument(p: RenderPlan, options?: ReportPrintOptions): PrintHtmlResult;
501
539
  export declare function buildWordHtml(p: RenderPlan): {
@@ -601,6 +639,14 @@ declare type ColumnFormat_3 = {
601
639
  kind: "date";
602
640
  pattern?: string;
603
641
  };
642
+ declare interface ComponentAssetRegistry {
643
+ rendererFor(component: Readonly<PlanComponent>): ComponentImageRenderer | undefined;
644
+ hasExtension(id: string, version: string, kind: string): boolean;
645
+ }
646
+ declare interface ComponentAssetRegistry_2 {
647
+ rendererFor(component: Readonly<PlanComponent_2>): ComponentImageRenderer_2 | undefined;
648
+ hasExtension(id: string, version: string, kind: string): boolean;
649
+ }
604
650
  /** A literal own field of the current label record; expressions and paths are not evaluated. */
605
651
  declare interface ComponentBinding {
606
652
  field: string;
@@ -632,7 +678,15 @@ declare interface ComponentImageContext {
632
678
  readonly componentPath: readonly number[];
633
679
  readonly signal: AbortSignal;
634
680
  }
681
+ declare interface ComponentImageContext_2 {
682
+ readonly component: Readonly<PlanComponent_2>;
683
+ readonly pageIndex: number;
684
+ readonly componentIndex: number;
685
+ readonly componentPath: readonly number[];
686
+ readonly signal: AbortSignal;
687
+ }
635
688
  declare type ComponentImageRenderer = (context: ComponentImageContext) => string | Promise<string>;
689
+ declare type ComponentImageRenderer_2 = (context: ComponentImageContext_2) => string | Promise<string>;
636
690
  declare type ComponentKind = "text" | "image" | "barcode" | "qrcode" | "chart" | "line" | "rect" | "ellipse";
637
691
  declare type ComponentKind_2 = "text" | "image" | "barcode" | "qrcode" | "chart" | "line" | "rect" | "ellipse";
638
692
  declare type ComponentKind_3 = "text" | "image" | "barcode" | "qrcode" | "chart" | "line" | "rect" | "ellipse";
@@ -907,6 +961,8 @@ declare interface FormulaAdapter {
907
961
  }): unknown;
908
962
  }
909
963
  declare interface GridCell {
964
+ /** Styled cell content; text remains a plain-text fallback. Imported rich cells are read-only. */
965
+ richParagraphs?: RichParagraph[];
910
966
  text?: string;
911
967
  rawText?: string;
912
968
  /** 原始值,仅供 Excel raw 模式消费;不参与预览、分页与 PDF 绘制。 */
@@ -930,6 +986,8 @@ declare interface GridCell {
930
986
  style?: ComponentStyle;
931
987
  }
932
988
  declare interface GridCell_2 {
989
+ /** Styled cell content; text remains a plain-text fallback. Imported rich cells are read-only. */
990
+ richParagraphs?: RichParagraph_2[];
933
991
  text?: string;
934
992
  rawText?: string;
935
993
  /** 原始值,仅供 Excel raw 模式消费;不参与预览、分页与 PDF 绘制。 */
@@ -953,6 +1011,8 @@ declare interface GridCell_2 {
953
1011
  style?: ComponentStyle_2;
954
1012
  }
955
1013
  declare interface GridCell_3 {
1014
+ /** Styled cell content; text remains a plain-text fallback. Imported rich cells are read-only. */
1015
+ richParagraphs?: RichParagraph_3[];
956
1016
  text?: string;
957
1017
  rawText?: string;
958
1018
  /** 原始值,仅供 Excel raw 模式消费;不参与预览、分页与 PDF 绘制。 */
@@ -984,6 +1044,7 @@ export declare type HostRequest = (config: {
984
1044
  signal?: AbortSignal;
985
1045
  }) => Promise<unknown>;
986
1046
  declare type ImageComponentKind = "image" | "chart" | "barcode" | "qrcode";
1047
+ declare type ImageComponentKind_2 = "image" | "chart" | "barcode" | "qrcode";
987
1048
  /** Bounded binary image inspection shared by PDF, Excel and template import. No decoder is loaded. */
988
1049
  declare interface ImageMediaOptions {
989
1050
  maxImageBytes?: number;
@@ -1422,6 +1483,8 @@ export declare interface MachReportController {
1422
1483
  }
1423
1484
  /** defaults 层可配置项(全部可选,均有内置缺省) */
1424
1485
  export declare interface MachReportDefaults {
1486
+ /** Small encodes stay local; optional Worker isolation uses the same prepared plan for large output. */
1487
+ exportExecution?: ReportExportExecutionOptions;
1425
1488
  drill?: ReportDrillOptions;
1426
1489
  loadParamOptions?: ReportParamOptionsLoader;
1427
1490
  printOptions?: ReportPrintOptions;
@@ -1778,6 +1841,57 @@ export declare interface MachReportToolbarOptions {
1778
1841
  /** 未传时显示全部已有出口;空数组表示不提供导出工具。 */
1779
1842
  exportFormats?: ReportExportFormat[];
1780
1843
  }
1844
+ declare interface MatrixAxisOptions {
1845
+ /** Display names in the same outer-to-inner order as the dimension fields. */
1846
+ labels?: readonly string[];
1847
+ /** Per-level sibling order; omitted levels retain first-seen order. */
1848
+ sort?: readonly MatrixDimensionOrder[];
1849
+ /** One-based prefix depths. Leaf depths are not subtotals. */
1850
+ subtotals?: readonly number[];
1851
+ }
1852
+ declare interface MatrixAxisOptions_2 {
1853
+ /** Display names in the same outer-to-inner order as the dimension fields. */
1854
+ labels?: readonly string[];
1855
+ /** Per-level sibling order; omitted levels retain first-seen order. */
1856
+ sort?: readonly MatrixDimensionOrder_2[];
1857
+ /** One-based prefix depths. Leaf depths are not subtotals. */
1858
+ subtotals?: readonly number[];
1859
+ }
1860
+ declare interface MatrixAxisOptions_3 {
1861
+ /** Display names in the same outer-to-inner order as the dimension fields. */
1862
+ labels?: readonly string[];
1863
+ /** Per-level sibling order; omitted levels retain first-seen order. */
1864
+ sort?: readonly MatrixDimensionOrder_3[];
1865
+ /** One-based prefix depths. Leaf depths are not subtotals. */
1866
+ subtotals?: readonly number[];
1867
+ }
1868
+ declare type MatrixDimensionOrder = "source" | "asc" | "desc";
1869
+ declare type MatrixDimensionOrder_2 = "source" | "asc" | "desc";
1870
+ declare type MatrixDimensionOrder_3 = "source" | "asc" | "desc";
1871
+ declare interface MatrixHierarchyOptions {
1872
+ row?: MatrixAxisOptions;
1873
+ column?: MatrixAxisOptions;
1874
+ /** Only null/missing values use this label; empty strings and zero stay distinct. */
1875
+ emptyLabel?: string;
1876
+ subtotalLabel?: string;
1877
+ totalLabel?: string;
1878
+ }
1879
+ declare interface MatrixHierarchyOptions_2 {
1880
+ row?: MatrixAxisOptions_2;
1881
+ column?: MatrixAxisOptions_2;
1882
+ /** Only null/missing values use this label; empty strings and zero stay distinct. */
1883
+ emptyLabel?: string;
1884
+ subtotalLabel?: string;
1885
+ totalLabel?: string;
1886
+ }
1887
+ declare interface MatrixHierarchyOptions_3 {
1888
+ row?: MatrixAxisOptions_3;
1889
+ column?: MatrixAxisOptions_3;
1890
+ /** Only null/missing values use this label; empty strings and zero stay distinct. */
1891
+ emptyLabel?: string;
1892
+ subtotalLabel?: string;
1893
+ totalLabel?: string;
1894
+ }
1781
1895
  declare interface MatrixTableOptions {
1782
1896
  rowFields: readonly string[];
1783
1897
  columnFields: readonly string[];
@@ -1792,6 +1906,10 @@ declare interface MatrixTableOptions {
1792
1906
  maxColumns?: number;
1793
1907
  maxInputRows?: number;
1794
1908
  maxCells?: number;
1909
+ /** Opt-in hierarchical dimensions, physical merged headers and prefix subtotals. */
1910
+ hierarchy?: MatrixHierarchyOptions;
1911
+ /** Hierarchical aggregate work, checked before measure reads; default 10 million updates. */
1912
+ maxAggregateUpdates?: number;
1795
1913
  }
1796
1914
  declare interface MatrixTableOptions_2 {
1797
1915
  rowFields: readonly string[];
@@ -1807,6 +1925,10 @@ declare interface MatrixTableOptions_2 {
1807
1925
  maxColumns?: number;
1808
1926
  maxInputRows?: number;
1809
1927
  maxCells?: number;
1928
+ /** Opt-in hierarchical dimensions, physical merged headers and prefix subtotals. */
1929
+ hierarchy?: MatrixHierarchyOptions_2;
1930
+ /** Hierarchical aggregate work, checked before measure reads; default 10 million updates. */
1931
+ maxAggregateUpdates?: number;
1810
1932
  }
1811
1933
  declare interface MatrixTableOptions_3 {
1812
1934
  rowFields: readonly string[];
@@ -1822,6 +1944,10 @@ declare interface MatrixTableOptions_3 {
1822
1944
  maxColumns?: number;
1823
1945
  maxInputRows?: number;
1824
1946
  maxCells?: number;
1947
+ /** Opt-in hierarchical dimensions, physical merged headers and prefix subtotals. */
1948
+ hierarchy?: MatrixHierarchyOptions_3;
1949
+ /** Hierarchical aggregate work, checked before measure reads; default 10 million updates. */
1950
+ maxAggregateUpdates?: number;
1825
1951
  }
1826
1952
  export declare function normalizeReportIds(reportId: ReportIdInput): string[];
1827
1953
  /** Workers preserve stable error codes, not JavaScript class identity. Only known codes cross the UI boundary. */
@@ -1836,6 +1962,11 @@ declare interface OutputDiagnostic {
1836
1962
  componentPath?: readonly number[];
1837
1963
  kind: string;
1838
1964
  nid?: string;
1965
+ /** Declarative extension identity only; no property values or business binding data enter diagnostics. */
1966
+ extension?: {
1967
+ id: string;
1968
+ version: string;
1969
+ };
1839
1970
  message: string;
1840
1971
  }
1841
1972
  declare interface OutputDiagnostic_2 {
@@ -1848,6 +1979,11 @@ declare interface OutputDiagnostic_2 {
1848
1979
  componentPath?: readonly number[];
1849
1980
  kind: string;
1850
1981
  nid?: string;
1982
+ /** Declarative extension identity only; no property values or business binding data enter diagnostics. */
1983
+ extension?: {
1984
+ id: string;
1985
+ version: string;
1986
+ };
1851
1987
  message: string;
1852
1988
  }
1853
1989
  declare interface OutputDiagnosticOptions extends OutputTaskOptions {
@@ -1909,6 +2045,8 @@ export declare interface PdfExporter {
1909
2045
  }): Promise<Uint8Array>;
1910
2046
  /** 可选轻量字体检查;旧版自定义导出函数无需实现。取消时拒绝 AbortError。 */
1911
2047
  checkFont?: (signal?: AbortSignal) => Promise<PdfFontCheckResult>;
2048
+ /** Optional resource preparation for isolated encoding; custom exporters without it keep their own pipeline. */
2049
+ prepare?: (signal?: AbortSignal) => Promise<ReportPdfFontOptions>;
1912
2050
  }
1913
2051
  export declare interface PdfFontCheckResult {
1914
2052
  status: PdfFontStatus;
@@ -2110,6 +2248,16 @@ declare interface PlanTableFragment_3 {
2110
2248
  }
2111
2249
  /** Bounded concurrency, one stage timeout, and cancellation even for a hanging decoder. */
2112
2250
  export declare function preparePrintResources(doc: Document, options?: ReportPrintOptions, signal?: AbortSignal, base?: string): Promise<void>;
2251
+ declare interface PreviewEncoding {
2252
+ pdf(plan: RenderPlan, exporter: PdfExporter, warning: (message: string) => void, task?: PreviewEncodingTask): Promise<Uint8Array>;
2253
+ xlsx(plan: RenderPlan, options: XlsxRenderOptions, task: PreviewEncodingTask): Promise<{
2254
+ buffer: Uint8Array;
2255
+ warnings: string[];
2256
+ }>;
2257
+ }
2258
+ declare type PreviewEncodingTask = OutputTaskOptions_2 & {
2259
+ onDiagnostic?: (entry: OutputDiagnostic) => void;
2260
+ };
2113
2261
  export declare function printCalibration(options?: ReportPrintOptions): {
2114
2262
  x: number;
2115
2263
  y: number;
@@ -2462,8 +2610,36 @@ export declare interface ReportEmptyState {
2462
2610
  title?: string;
2463
2611
  description?: string;
2464
2612
  }
2613
+ export declare interface ReportExportDecision {
2614
+ mode: "local" | "worker";
2615
+ reason: ReportExportDecisionReason;
2616
+ /** Lower bounds: traversal stops as soon as isolation is warranted. No font or image hashing. */
2617
+ estimate: {
2618
+ pages: number;
2619
+ cells: number;
2620
+ bytes: number;
2621
+ };
2622
+ hardCancellation: boolean;
2623
+ }
2624
+ declare type ReportExportDecisionReason = "small-task" | "threshold" | "scan-limit" | "explicit-local" | "explicit-worker" | "worker-unavailable" | "worker-start-failed" | "nonserializable-options";
2625
+ export declare interface ReportExportExecutionOptions {
2626
+ mode?: "auto" | "worker" | "local";
2627
+ /** A fresh bundler-managed module Worker for every call; never a shared worker. */
2628
+ workerFactory?: () => BrowserReportWorker;
2629
+ thresholds?: ReportExportThresholds;
2630
+ /** Auto only. Startup unavailability may use local; encoding failures never retry. */
2631
+ fallback?: "local" | "error";
2632
+ timeoutMs?: number;
2633
+ budget?: ReportRuntimeBudget;
2634
+ onDecision?: (decision: ReportExportDecision) => void;
2635
+ }
2465
2636
  /** 输出能力仍由宿主授权;工具偏好只决定当前预览实例的可见与启用状态。 */
2466
2637
  export declare type ReportExportFormat = "html" | "pdf" | "xlsx" | "png" | "word";
2638
+ export declare interface ReportExportThresholds {
2639
+ cells?: number;
2640
+ pages?: number;
2641
+ bytes?: number;
2642
+ }
2467
2643
  declare type ReportExpression = {
2468
2644
  field: string;
2469
2645
  } | {
@@ -2514,7 +2690,13 @@ declare interface ReportFetchInput extends ReportTaskMonitoring {
2514
2690
  /** Index scopes diagnostics when reports share datasets or a report ID is repeated. */
2515
2691
  onQueryResult?: (reportId: string, result: ReportQueryResult, reportIndex?: number) => void;
2516
2692
  }
2517
- declare interface ReportFieldContract {
2693
+ declare type ReportFieldAggregation = "sum" | "avg" | "min" | "max" | "count" | "none";
2694
+ declare interface ReportFieldCalculation {
2695
+ /** Business-owned explanation, never executable JavaScript or an inferred business formula. */
2696
+ description: string;
2697
+ dependsOn: readonly string[];
2698
+ }
2699
+ declare interface ReportFieldContract extends ReportFieldSemantics {
2518
2700
  field: string;
2519
2701
  label?: string;
2520
2702
  type: "text" | "number" | "boolean" | "date" | "decimal";
@@ -2528,6 +2710,16 @@ declare interface ReportFieldContract {
2528
2710
  semanticRole?: "identifier" | "dimension" | "measure" | "date" | "text";
2529
2711
  unit?: string;
2530
2712
  }
2713
+ declare interface ReportFieldSemantics {
2714
+ description?: string;
2715
+ /** Explicit meaning of null/missing; does not convert blanks into zero. */
2716
+ missingMeaning?: string;
2717
+ /** Recommended aggregation; none marks non-additive measures such as ratios. No aggregation runs implicitly. */
2718
+ aggregation?: ReportFieldAggregation;
2719
+ /** Shared presentation only; raw values and calculation precision remain unchanged. */
2720
+ format?: ColumnFormat;
2721
+ calculation?: ReportFieldCalculation;
2722
+ }
2531
2723
  export declare interface ReportFieldTarget {
2532
2724
  field: string;
2533
2725
  datasetId?: string;
@@ -2707,12 +2899,23 @@ export declare const ReportParamPanel: DefineComponent<__VLS_Props_3, {
2707
2899
  onQuery?: (() => any) | undefined;
2708
2900
  "onUpdate:modelValue"?: ((value: Record<string, string>) => any) | undefined;
2709
2901
  }>, {
2902
+ issues: readonly ReportParamIssue[];
2710
2903
  disabled: boolean;
2711
2904
  loadOptions: ReportParamOptionsLoader;
2712
- issues: readonly ReportParamIssue[];
2713
2905
  showActions: boolean;
2714
2906
  showTitle: boolean;
2715
2907
  }>;
2908
+ /** Licensed local font bytes; never downloaded implicitly by the runtime. */
2909
+ declare interface ReportPdfFontOptions {
2910
+ customFontBytes?: Uint8Array | ArrayBuffer;
2911
+ customFontName?: string;
2912
+ customFontFaces?: {
2913
+ regular: Uint8Array | ArrayBuffer;
2914
+ bold?: Uint8Array | ArrayBuffer;
2915
+ italic?: Uint8Array | ArrayBuffer;
2916
+ boldItalic?: Uint8Array | ArrayBuffer;
2917
+ };
2918
+ }
2716
2919
  export declare interface ReportPreferencesAdapter {
2717
2920
  load(key: string): Partial<ReportPreviewPreferences> | null | Promise<Partial<ReportPreviewPreferences> | null>;
2718
2921
  save(key: string, value: Readonly<Partial<ReportPreviewPreferences>>): void | Promise<void>;
@@ -2811,6 +3014,15 @@ declare interface ReportQueryResult {
2811
3014
  diagnostics?: ReportDiagnostic[];
2812
3015
  }
2813
3016
  declare type ReportRegistry = Record<string, ReportDefinition>;
3017
+ declare interface ReportRuntimeBudget {
3018
+ maxRows?: number;
3019
+ maxPages?: number;
3020
+ maxCells?: number;
3021
+ maxOutputBytes?: number;
3022
+ /** Bound the plain JSON snapshot accepted by exportPrepared (default 64 MB). */
3023
+ maxPreparedBytes?: number;
3024
+ maxDurationMs?: number;
3025
+ }
2814
3026
  declare interface ReportSaveInput extends ReportLoadContext {
2815
3027
  requestId: string;
2816
3028
  expectedRevision?: string;
@@ -2928,6 +3140,7 @@ declare type ReportValueState_2 = "missing-source" | "not-applicable" | "not-cal
2928
3140
  export declare function resolveCalculationMessages(messages: Partial<ReportCalculationMessages>): ReportCalculationMessages;
2929
3141
  export declare function resolveConfig(config: MachReportConfig | null | undefined, presetName?: string): ResolvedConfig;
2930
3142
  export declare type ResolvedConfig = Required<Pick<MachReportDefaults, "showExport" | "showPrint" | "showPdfWindow" | "showSettings" | "showParams" | "gapPx">> & {
3143
+ exportExecution?: ReportExportExecutionOptions;
2931
3144
  drill?: ReportDrillOptions;
2932
3145
  loadParamOptions?: ReportParamOptionsLoader;
2933
3146
  pdfFontUrl: string;
@@ -3187,6 +3400,8 @@ export declare function usePrintExport(plan: Ref<RenderPlan | null>, hooks: {
3187
3400
  /** Flush the active editor and await source-backed calculation/persistence before capturing the output plan. */
3188
3401
  beforeOutput?: () => boolean | Promise<boolean>;
3189
3402
  getPdfExporter: () => PdfExporter;
3403
+ /** Optional prepared-plan encoders; legacy callers keep their injected exporter unchanged. */
3404
+ encoding?: PreviewEncoding;
3190
3405
  onError: (message: string, code?: string) => void;
3191
3406
  onWarning?: (message: string) => void;
3192
3407
  onBusy?: (format: string | null) => void;
@@ -3247,7 +3462,7 @@ declare type XlsxImageOptions = ImageMediaOptions_2;
3247
3462
  * 目标是"财务能直接用的对账表"而非复刻版面)
3248
3463
  * - 原生 richText 保留基础字形;未支持组件、段落专有排版与单元格嵌套组件计入 diagnostics / warnings
3249
3464
  */
3250
- declare interface XlsxRenderOptions extends OutputDiagnosticOptions_2, XlsxImageOptions {
3465
+ declare interface XlsxRenderOptions extends AssetRenderOptions_2, XlsxImageOptions {
3251
3466
  /** 工作表命名(连续表默认使用标题,其余默认 "Sheet1" 起序)。 */
3252
3467
  sheetName?: (sheetIndex: number) => string;
3253
3468
  /** auto 默认将 wide 逻辑表合并为连续 Sheet;pages 保留逐页;continuous 要求明确的表来源。 */
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("./plugin-DHO7X8z2.cjs");function i(){return Promise.resolve().then(()=>require("./ReportPreview-DbLvvOUT.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-CtFX9PFG.cjs");function i(){return Promise.resolve().then(()=>require("./ReportPreview-CJC_-j2I.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-Ca_XZG3l.js";
2
- import { M as l } from "./plugin-Ca_XZG3l.js";
1
+ import { m as o } from "./plugin-BBp74CQZ.js";
2
+ import { M as l } from "./plugin-BBp74CQZ.js";
3
3
  function a() {
4
- return import("./ReportPreview-ChV19HBp.js").then((t) => t.s);
4
+ return import("./ReportPreview-BdQawRh0.js").then((t) => t.s);
5
5
  }
6
6
  const n = {
7
7
  install(t, r = {}) {
package/dist/vue.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const E=require("@agile-team/mach-report"),i=require("./ReportPreview-DbLvvOUT.cjs"),a=require("./config-D10us76d.cjs"),g=require("./injection-keys-Db_DyLkm.cjs"),y=require("./plugin-DHO7X8z2.cjs"),h=require("vue"),M=require("./data-explanation-DE55G30w.cjs"),A=require("./progress-B0ctFpKf.cjs");function v(r){const e=E.createReportSource(r),o=async t=>{if(t.reportIds.length===0)throw new i.PlanLoadError("缺少报表 ID");for(const n of t.reportIds)if(!Object.prototype.hasOwnProperty.call(r,n)||!r[n])throw new i.PlanLoadError(`本地模板 ${n} 不存在`);return e(t)};return o.getParamDefs=e.getParamDefs,o}const I=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 L(){const r=h.shallowRef(null),e=()=>r.value?.state??I,o=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(n){const s=n;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:o,async checkPdfFont(){const n=t();return n.checkPdfFont?n.checkPdfFont():{status:"unverified",fontUrl:"",message:"旧自定义控制器未提供字体检查,请由宿主确认字体配置"}},cancelTask(){t().cancelTask?.()},async confirmDiscard(n){return await t().confirmDiscard?.(n)??!0},getOutputDiagnostics(n){return t().getOutputDiagnostics?.(n)??[]},async reload(){await t().reload()},async print(){await t().print()},async exportAs(n){await t().exportAs(n)},openPdfWindow(){t().openPdfWindow()},gotoPage(n){t().gotoPage(n)},async setParams(n,s){await t().setParams(n,s)},async importExcel(n,s){const f=t();if(!f.importExcel)throw new a.MachReportError("config","旧自定义控制器未提供 Excel 导入");return f.importExcel(n,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(n,s)=>await t().focusCell?.(n,s)??!1,focusField:async n=>await t().focusField?.(n)??!1,copySelection:()=>t().copySelection?.()??"",pasteSelection:async n=>await t().pasteSelection?.(n)??!1}}function D(){return h.inject(g.MACH_REPORT_CONTROLLER_KEY,null)}function T(r){return!!r&&typeof r=="object"&&!Array.isArray(r)}function x(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")&&M.hasValidDataExplanation(e))}function F(r,e){return Array.isArray(r)&&r.every(o=>T(o)&&Number.isSafeInteger(o.editIndex)&&o.editIndex>=0&&o.editIndex<e&&typeof o.code=="string"&&typeof o.message=="string")}function b(r,e){let o;if(!T(r)||typeof r.revision!="string"||!r.revision.trim()?o="非空 revision(请先在适配器解包业务响应)":r.sourceToken!==void 0&&typeof r.sourceToken!="string"?o="字符串 sourceToken":r.diagnostics!==void 0&&!x(r.diagnostics)?o="结构化 diagnostics":r.conflicts!==void 0&&!F(r.conflicts,e)&&(o="有效 editIndex/code/message conflicts"),o)throw new a.MachReportError("edit",`ReportProvider.save 必须返回${o};服务器可能已提交,请重新查询确认后再编辑`)}function O(r){return typeof r=="function"?r():r}function q(r,e){const o=new Set(r.flatMap(t=>t.source?.[e]===void 0?[]:[String(t.source[e])]));return o.size===1?[...o][0]:void 0}function _(r,e,o,t){return typeof r=="function"?r():q(e,o)??t??r}function k(r){return r.requestId??globalThis.crypto?.randomUUID?.()??`mr-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}function U(r,e){if(!r.save)throw new a.MachReportError("config","ReportProvider.save 未配置,无法启用业务保存");let o="",t,n,s=0;function f(c,u,p){c.conflicts?.length||u!==o||p!==s||(t=c.revision,n=c.sourceToken)}async function S(c,u){if(u.signal.aborted)throw u.signal.reason??new DOMException("Aborted","AbortError");const p=O(e.reportId),m={...O(e.params??{})},R=JSON.stringify([p,m]),C=++s;if(R!==o&&(o=R,t=void 0,n=void 0),e.requireSource!==!1&&c.edits.some(l=>!l.source))throw new E.ReportCellEditError("missing");const d=await r.save({reportId:p,params:m,signal:u.signal,requestId:c.requestId,action:u.action,edits:i.cloneReportSnapshot(c.edits),expectedRevision:_(e.expectedRevision,c.edits,"revision",t),sourceToken:_(e.sourceToken,c.edits,"sourceToken",n)});if(u.signal.aborted)throw u.signal.reason??new DOMException("Aborted","AbortError");b(d,c.edits.length),d.diagnostics?.forEach(l=>A.observeOutput(()=>e.onDiagnostic?.(l)));const P=d.diagnostics?.filter(l=>l.severity==="error");if(P?.length)throw new a.MachReportError("edit",P.map(l=>l.message).join(";"),{diagnostics:P});const w=d.conflicts?.map(l=>({source:c.edits[l.editIndex]?.source,address:c.edits[l.editIndex]?.address,message:l.message}));return f(d,R,C),{revision:d.revision,sourceToken:d.sourceToken,conflicts:w}}return{requireSource:e.requireSource??!0,canEdit:e.canEdit,validate:e.validate,saveBatch:S,save:(c,u)=>S({requestId:k(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.ReportPrintResourceError=i.ReportPrintResourceError;exports.ReportToolbar=i.ReportToolbar;exports.buildPrintDocument=i.buildPrintDocument;exports.buildWordHtml=i.buildWordHtml;exports.createDefaultPdfExporter=i.createDefaultPdfExporter;exports.createFetchRequest=i.createFetchRequest;exports.createPrintCalibrationPlan=i.createPrintCalibrationPlan;exports.createReportStoragePreferences=i.createReportStoragePreferences;exports.joinReportIds=i.joinReportIds;exports.normalizeReportIds=i.normalizeReportIds;exports.preparePrintResources=i.preparePrintResources;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_PRINT_MESSAGES=a.DEFAULT_PRINT_MESSAGES;exports.DEFAULT_THEME=a.DEFAULT_THEME;exports.MachReportError=a.MachReportError;exports.PARAM_OPTIONS_MESSAGES=a.PARAM_OPTIONS_MESSAGES;exports.ReportParamPanel=a.ReportParamPanel;exports.SILENT_LOGGER=a.SILENT_LOGGER;exports.defineMachReportConfig=a.defineMachReportConfig;exports.defineMachReportPreset=a.defineMachReportPreset;exports.normalizeReportLoadError=a.normalizeReportLoadError;exports.printCalibration=a.printCalibration;exports.provideMachReportConfig=a.provideMachReportConfig;exports.resolveCalculationMessages=a.resolveCalculationMessages;exports.resolveConfig=a.resolveConfig;exports.snapshotPrintOptions=a.snapshotPrintOptions;exports.themeToCssVars=a.themeToCssVars;exports.toErrorDetail=a.toErrorDetail;exports.useMachReportConfig=a.useMachReportConfig;exports.MACH_REPORT_CONFIG_KEY=g.MACH_REPORT_CONFIG_KEY;exports.MACH_REPORT_CONTROLLER_KEY=g.MACH_REPORT_CONTROLLER_KEY;exports.MACH_REPORT_FETCHER_KEY=g.MACH_REPORT_FETCHER_KEY;exports.MACH_REPORT_PDF_EXPORTER_KEY=g.MACH_REPORT_PDF_EXPORTER_KEY;exports.MachReportPreview=y.MachReportPreview;exports.machReportPlugin=y.machReportPlugin;exports.createLocalFetcher=v;exports.createProviderEditing=U;exports.useMachReport=L;exports.useReportPreview=D;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-CJC_-j2I.cjs"),a=require("./config-Dg_o8e7m.cjs"),g=require("./injection-keys-Db_DyLkm.cjs"),y=require("./plugin-CtFX9PFG.cjs"),h=require("vue"),M=require("./json-snapshot-D7PE1NsU.cjs"),A=require("./progress-B0ctFpKf.cjs");function v(r){const e=E.createReportSource(r),o=async t=>{if(t.reportIds.length===0)throw new i.PlanLoadError("缺少报表 ID");for(const n of t.reportIds)if(!Object.prototype.hasOwnProperty.call(r,n)||!r[n])throw new i.PlanLoadError(`本地模板 ${n} 不存在`);return e(t)};return o.getParamDefs=e.getParamDefs,o}const I=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 L(){const r=h.shallowRef(null),e=()=>r.value?.state??I,o=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(n){const s=n;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:o,async checkPdfFont(){const n=t();return n.checkPdfFont?n.checkPdfFont():{status:"unverified",fontUrl:"",message:"旧自定义控制器未提供字体检查,请由宿主确认字体配置"}},cancelTask(){t().cancelTask?.()},async confirmDiscard(n){return await t().confirmDiscard?.(n)??!0},getOutputDiagnostics(n){return t().getOutputDiagnostics?.(n)??[]},async reload(){await t().reload()},async print(){await t().print()},async exportAs(n){await t().exportAs(n)},openPdfWindow(){t().openPdfWindow()},gotoPage(n){t().gotoPage(n)},async setParams(n,s){await t().setParams(n,s)},async importExcel(n,s){const f=t();if(!f.importExcel)throw new a.MachReportError("config","旧自定义控制器未提供 Excel 导入");return f.importExcel(n,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(n,s)=>await t().focusCell?.(n,s)??!1,focusField:async n=>await t().focusField?.(n)??!1,copySelection:()=>t().copySelection?.()??"",pasteSelection:async n=>await t().pasteSelection?.(n)??!1}}function D(){return h.inject(g.MACH_REPORT_CONTROLLER_KEY,null)}function T(r){return!!r&&typeof r=="object"&&!Array.isArray(r)}function x(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")&&M.hasValidDataExplanation(e))}function F(r,e){return Array.isArray(r)&&r.every(o=>T(o)&&Number.isSafeInteger(o.editIndex)&&o.editIndex>=0&&o.editIndex<e&&typeof o.code=="string"&&typeof o.message=="string")}function b(r,e){let o;if(!T(r)||typeof r.revision!="string"||!r.revision.trim()?o="非空 revision(请先在适配器解包业务响应)":r.sourceToken!==void 0&&typeof r.sourceToken!="string"?o="字符串 sourceToken":r.diagnostics!==void 0&&!x(r.diagnostics)?o="结构化 diagnostics":r.conflicts!==void 0&&!F(r.conflicts,e)&&(o="有效 editIndex/code/message conflicts"),o)throw new a.MachReportError("edit",`ReportProvider.save 必须返回${o};服务器可能已提交,请重新查询确认后再编辑`)}function O(r){return typeof r=="function"?r():r}function q(r,e){const o=new Set(r.flatMap(t=>t.source?.[e]===void 0?[]:[String(t.source[e])]));return o.size===1?[...o][0]:void 0}function _(r,e,o,t){return typeof r=="function"?r():q(e,o)??t??r}function k(r){return r.requestId??globalThis.crypto?.randomUUID?.()??`mr-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}function U(r,e){if(!r.save)throw new a.MachReportError("config","ReportProvider.save 未配置,无法启用业务保存");let o="",t,n,s=0;function f(c,u,p){c.conflicts?.length||u!==o||p!==s||(t=c.revision,n=c.sourceToken)}async function S(c,u){if(u.signal.aborted)throw u.signal.reason??new DOMException("Aborted","AbortError");const p=O(e.reportId),m={...O(e.params??{})},R=JSON.stringify([p,m]),C=++s;if(R!==o&&(o=R,t=void 0,n=void 0),e.requireSource!==!1&&c.edits.some(l=>!l.source))throw new E.ReportCellEditError("missing");const d=await r.save({reportId:p,params:m,signal:u.signal,requestId:c.requestId,action:u.action,edits:i.cloneReportSnapshot(c.edits),expectedRevision:_(e.expectedRevision,c.edits,"revision",t),sourceToken:_(e.sourceToken,c.edits,"sourceToken",n)});if(u.signal.aborted)throw u.signal.reason??new DOMException("Aborted","AbortError");b(d,c.edits.length),d.diagnostics?.forEach(l=>A.observeOutput(()=>e.onDiagnostic?.(l)));const P=d.diagnostics?.filter(l=>l.severity==="error");if(P?.length)throw new a.MachReportError("edit",P.map(l=>l.message).join(";"),{diagnostics:P});const w=d.conflicts?.map(l=>({source:c.edits[l.editIndex]?.source,address:c.edits[l.editIndex]?.address,message:l.message}));return f(d,R,C),{revision:d.revision,sourceToken:d.sourceToken,conflicts:w}}return{requireSource:e.requireSource??!0,canEdit:e.canEdit,validate:e.validate,saveBatch:S,save:(c,u)=>S({requestId:k(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.ReportPrintResourceError=i.ReportPrintResourceError;exports.ReportToolbar=i.ReportToolbar;exports.buildPrintDocument=i.buildPrintDocument;exports.buildWordHtml=i.buildWordHtml;exports.createDefaultPdfExporter=i.createDefaultPdfExporter;exports.createFetchRequest=i.createFetchRequest;exports.createPrintCalibrationPlan=i.createPrintCalibrationPlan;exports.createReportStoragePreferences=i.createReportStoragePreferences;exports.joinReportIds=i.joinReportIds;exports.normalizeReportIds=i.normalizeReportIds;exports.preparePrintResources=i.preparePrintResources;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_PRINT_MESSAGES=a.DEFAULT_PRINT_MESSAGES;exports.DEFAULT_THEME=a.DEFAULT_THEME;exports.MachReportError=a.MachReportError;exports.PARAM_OPTIONS_MESSAGES=a.PARAM_OPTIONS_MESSAGES;exports.ReportParamPanel=a.ReportParamPanel;exports.SILENT_LOGGER=a.SILENT_LOGGER;exports.defineMachReportConfig=a.defineMachReportConfig;exports.defineMachReportPreset=a.defineMachReportPreset;exports.normalizeReportLoadError=a.normalizeReportLoadError;exports.printCalibration=a.printCalibration;exports.provideMachReportConfig=a.provideMachReportConfig;exports.resolveCalculationMessages=a.resolveCalculationMessages;exports.resolveConfig=a.resolveConfig;exports.snapshotPrintOptions=a.snapshotPrintOptions;exports.themeToCssVars=a.themeToCssVars;exports.toErrorDetail=a.toErrorDetail;exports.useMachReportConfig=a.useMachReportConfig;exports.MACH_REPORT_CONFIG_KEY=g.MACH_REPORT_CONFIG_KEY;exports.MACH_REPORT_CONTROLLER_KEY=g.MACH_REPORT_CONTROLLER_KEY;exports.MACH_REPORT_FETCHER_KEY=g.MACH_REPORT_FETCHER_KEY;exports.MACH_REPORT_PDF_EXPORTER_KEY=g.MACH_REPORT_PDF_EXPORTER_KEY;exports.MachReportPreview=y.MachReportPreview;exports.machReportPlugin=y.machReportPlugin;exports.createLocalFetcher=v;exports.createProviderEditing=U;exports.useMachReport=L;exports.useReportPreview=D;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,15 +1,15 @@
1
1
  import { createReportSource as v, ReportCellEditError as x } from "@agile-team/mach-report";
2
2
  export * from "@agile-team/mach-report";
3
- import { P as R, c as h } from "./ReportPreview-ChV19HBp.js";
4
- import { R as Z, a as Q, b as ee, d as re, e as te, f as ne, g as oe, h as se, i as ae, j as ie, k as ce, l as ue, m as fe, n as de, p as ge, o as le, u as pe, q as me, r as Pe } from "./ReportPreview-ChV19HBp.js";
5
- import { M as f } from "./config-BVsJXSqS.js";
6
- import { D as Re, a as he, b as we, c as ye, P as Se, R as Te, S as ve, d as xe, e as Ce, n as Ae, p as Oe, f as Ie, r as Me, g as _e, s as De, t as ke, h as Fe, u as be } from "./config-BVsJXSqS.js";
3
+ import { P as R, c as h } from "./ReportPreview-BdQawRh0.js";
4
+ import { R as Z, a as Q, b as ee, d as re, e as te, f as ne, g as oe, h as se, i as ae, j as ie, k as ce, l as ue, m as fe, n as de, p as ge, o as le, u as pe, q as me, r as Pe } from "./ReportPreview-BdQawRh0.js";
5
+ import { M as f } from "./config-XQ4qrQ7Q.js";
6
+ import { D as Re, a as he, b as we, c as ye, P as Se, R as Te, S as ve, d as xe, e as Ce, n as Ae, p as Oe, f as Ie, r as Me, g as _e, s as De, t as ke, h as Fe, u as be } from "./config-XQ4qrQ7Q.js";
7
7
  import { M as C } from "./injection-keys-e85udZCp.js";
8
8
  import { a as qe, b as Ue, c as je } from "./injection-keys-e85udZCp.js";
9
- import { M as Ne, m as He } from "./plugin-Ca_XZG3l.js";
9
+ import { M as Ne, m as He } from "./plugin-BBp74CQZ.js";
10
10
  import { shallowRef as A, computed as O, inject as I } from "vue";
11
- import { h as M } from "./data-explanation-B8MZRYVS.js";
12
- import { b as _ } from "./progress-D-OTpEav.js";
11
+ import { u as M } from "./json-snapshot-DYmEe3sO.js";
12
+ import { a as _ } from "./progress-Hc2vxoCs.js";
13
13
  function Y(r) {
14
14
  const e = v(r), o = async (t) => {
15
15
  if (t.reportIds.length === 0) throw new R("缺少报表 ID");