@agile-team/mach-report 2.17.0 → 2.18.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 (168) hide show
  1. package/README.md +18 -9
  2. package/dist/{ExcelBindingWizard-Bq6FYME6.cjs → ExcelBindingWizard-Czn3C2yE.cjs} +1 -1
  3. package/dist/{ExcelBindingWizard-Co1svTsw.js → ExcelBindingWizard-DMGZj6I6.js} +3 -3
  4. package/dist/ParamEditor-KzDQvbHY.js +732 -0
  5. package/dist/ParamEditor-oDfD8LgE.cjs +1 -0
  6. package/dist/{ReportBatchPanel-uQh06usx.js → ReportBatchPanel-BJK7PvZ4.js} +39 -39
  7. package/dist/ReportBatchPanel-DnmNRssu.cjs +1 -0
  8. package/dist/ReportParamPanel-mQkeN70Q.js +1020 -0
  9. package/dist/ReportParamPanel-sOANVRz-.cjs +1 -0
  10. package/dist/ReportPreview-BxWWTUL5.js +5583 -0
  11. package/dist/ReportPreview-Yf99omi3.cjs +6 -0
  12. package/dist/{ReportTemplateLibrary-TIL_Oj2l.js → ReportTemplateLibrary-BFjB08Wu.js} +1 -1
  13. package/dist/{ReportTemplateLibrary-CnP7_1pH.cjs → ReportTemplateLibrary-BO42QnWd.cjs} +1 -1
  14. package/dist/RuleEditor-CqxT1a-W.js +2337 -0
  15. package/dist/RuleEditor-D7YWigD9.cjs +1 -0
  16. package/dist/{TemplateOutlinePanel-BlLxRrfu.cjs → TemplateOutlinePanel-B0XX350V.cjs} +1 -1
  17. package/dist/{TemplateOutlinePanel-BouxsuqQ.js → TemplateOutlinePanel-zG0DrsIB.js} +2 -2
  18. package/dist/{TemplateReusePanel-yxsHSO40.cjs → TemplateReusePanel-BD0HSKp_.cjs} +1 -1
  19. package/dist/{TemplateReusePanel-BEACLPaN.js → TemplateReusePanel-Czwe5GbC.js} +2 -2
  20. package/dist/{TemplateReviewPanel-D9Cx0m2N.cjs → TemplateReviewPanel-CA5sdffM.cjs} +1 -1
  21. package/dist/{TemplateReviewPanel-B1OGRY2i.js → TemplateReviewPanel-NhmQI65C.js} +2 -2
  22. package/dist/analytics.cjs +1 -1
  23. package/dist/analytics.d.cts +100 -41
  24. package/dist/analytics.d.ts +100 -41
  25. package/dist/analytics.js +76 -141
  26. package/dist/artifact-integrity.json +108 -102
  27. package/dist/assets-2eC3mOcV.js +232 -0
  28. package/dist/assets-B0Hxn4l6.cjs +1 -0
  29. package/dist/{auto-DDHflI9v.cjs → auto-B0EZFIK1.cjs} +1 -1
  30. package/dist/{auto-BIOmtVhk.js → auto-BlchZ1b8.js} +19 -19
  31. package/dist/{batch-WzDIXJAt.js → batch-DGCt44XM.js} +1 -1
  32. package/dist/{batch-z6Aw5GEY.cjs → batch-DYcokH4v.cjs} +1 -1
  33. package/dist/charts-Dlv8j2AG.js +141 -0
  34. package/dist/charts-aCtoswXq.cjs +1 -0
  35. package/dist/codes.cjs +9 -9
  36. package/dist/codes.d.cts +54 -0
  37. package/dist/codes.d.ts +54 -0
  38. package/dist/codes.js +12097 -13668
  39. package/dist/column-visual-BpgQVWwT.js +238 -0
  40. package/dist/column-visual-CtYxnBCP.cjs +1 -0
  41. package/dist/component-tree-6TV7W6Yj.cjs +1 -0
  42. package/dist/component-tree-CvW4lzpv.js +67 -0
  43. package/dist/computed-4TnxzgIh.cjs +1 -0
  44. package/dist/computed-C8NRZQss.js +739 -0
  45. package/dist/data-bar-Ce38juRZ.cjs +1 -0
  46. package/dist/data-bar-PtjXhMgN.js +9 -0
  47. package/dist/designer--TKECSEc.cjs +2 -0
  48. package/dist/designer-d6hJS41w.js +5683 -0
  49. package/dist/designer.cjs +1 -1
  50. package/dist/designer.d.cts +710 -42
  51. package/dist/designer.d.ts +710 -42
  52. package/dist/designer.js +23 -20
  53. package/dist/{encoding-BFMFIc4r.cjs → encoding-B--eZpp1.cjs} +1 -1
  54. package/dist/{encoding-DP_Eaf0A.js → encoding-mctOLocI.js} +2 -2
  55. package/dist/{font-loader-7FWVlykp.cjs → font-loader-DBBJ5KE9.cjs} +1 -1
  56. package/dist/{font-loader-CQZowp0I.js → font-loader-DW8tIaNp.js} +1 -1
  57. package/dist/index-CPh6tqge.js +1575 -0
  58. package/dist/index-CUNw7dL9.cjs +1 -0
  59. package/dist/index.cjs +7 -7
  60. package/dist/index.d.cts +361 -15
  61. package/dist/index.d.ts +361 -15
  62. package/dist/index.js +876 -835
  63. package/dist/json-snapshot-By4ZVVUt.js +1967 -0
  64. package/dist/json-snapshot-jiXff4lc.cjs +2 -0
  65. package/dist/matrix-0hywp0-F.cjs +1 -0
  66. package/dist/matrix-Dy-tyY7E.js +381 -0
  67. package/dist/param-validation-C-8sRJLq.cjs +1 -0
  68. package/dist/param-validation-CnDEd2l-.js +333 -0
  69. package/dist/{pdf-l3ea86di.js → pdf-CKROKygt.js} +1851 -1849
  70. package/dist/{pdf-B8JouyYv.cjs → pdf-DqyxJ96U.cjs} +46 -46
  71. package/dist/pdf.cjs +1 -1
  72. package/dist/pdf.d.cts +54 -0
  73. package/dist/pdf.d.ts +54 -0
  74. package/dist/pdf.js +2 -2
  75. package/dist/{plugin-BBp74CQZ.js → plugin-ByjF2kiV.js} +5 -5
  76. package/dist/{plugin-CtFX9PFG.cjs → plugin-DM1M2wlI.cjs} +1 -1
  77. package/dist/prefill-B8H9qwE4.js +371 -0
  78. package/dist/prefill-D7EswyTI.cjs +1 -0
  79. package/dist/{prepared-CARicKYh.js → prepared-BE-4jfX5.js} +2 -2
  80. package/dist/{prepared-Ch1x_Gog.cjs → prepared-CGVphji3.cjs} +1 -1
  81. package/dist/{protocol-B5A2uom4.cjs → protocol-ByRVzzQG.cjs} +1 -1
  82. package/dist/{protocol-BaiWjq5w.js → protocol-Cr81vFSQ.js} +3 -3
  83. package/dist/{record-bindings-D4TuMzHs.js → record-bindings-DEJtmo3p.js} +67 -107
  84. package/dist/record-bindings-ehjnCDHt.cjs +1 -0
  85. package/dist/{region-binding-workflow-BNasF5kz.js → region-binding-workflow-CBg0l_tj.js} +1 -1
  86. package/dist/{region-binding-workflow-O2Cni3mF.cjs → region-binding-workflow-D05tOYn3.cjs} +1 -1
  87. package/dist/report-encoding-worker.cjs +1 -1
  88. package/dist/report-encoding-worker.js +1 -1
  89. package/dist/{report-params-B1RzkhJj.js → report-params-D9tBuM9B.js} +1 -1
  90. package/dist/{report-params-WDGrA4oP.cjs → report-params-VTg8MoCp.cjs} +1 -1
  91. package/dist/runtime-CDA6d263.cjs +1 -0
  92. package/dist/runtime-CEMvybO7.js +170 -0
  93. package/dist/sbom.cdx.json +1 -1
  94. package/dist/server/node.d.cts +75 -7
  95. package/dist/server/node.d.ts +75 -7
  96. package/dist/server-node.cjs +4 -4
  97. package/dist/server-node.js +2692 -1990
  98. package/dist/server.cjs +1 -1
  99. package/dist/server.d.cts +243 -28
  100. package/dist/server.d.ts +243 -28
  101. package/dist/server.js +28 -28
  102. package/dist/sha256-BDQ1Qk7A.js +158 -0
  103. package/dist/sha256-DgZAKXqI.cjs +1 -0
  104. package/dist/style.css +1 -1
  105. package/dist/template-bindings-Cg5oBLFT.cjs +1 -0
  106. package/dist/template-bindings-TKnXM7ll.js +62 -0
  107. package/dist/{template-catalog-wT1fNeAP.js → template-catalog-CmbWOJqy.js} +16 -16
  108. package/dist/{template-catalog-Dua8h9ZA.cjs → template-catalog-Utu4GP09.cjs} +1 -1
  109. package/dist/{template-fragments-BajTajb4.cjs → template-fragments-C_zSHJAa.cjs} +1 -1
  110. package/dist/{template-fragments-DmX5XK4N.js → template-fragments-DWgo9tlZ.js} +2 -2
  111. package/dist/{template-outline-BwRV_eRo.cjs → template-outline-DWkzZXVC.cjs} +1 -1
  112. package/dist/{template-outline-cnWfT_LK.js → template-outline-DiADphlq.js} +1 -1
  113. package/dist/{template-registry-u11fPd8D.js → template-registry-BIhIHOab.js} +319 -314
  114. package/dist/template-registry-DzWswQI5.cjs +1 -0
  115. package/dist/vue/async.d.cts +528 -33
  116. package/dist/vue/async.d.ts +528 -33
  117. package/dist/vue/index.d.cts +616 -64
  118. package/dist/vue/index.d.ts +616 -64
  119. package/dist/vue-async.cjs +1 -1
  120. package/dist/vue-async.js +3 -3
  121. package/dist/vue.cjs +1 -1
  122. package/dist/vue.js +94 -89
  123. package/dist/{workbook-session-DN5LSA5C.cjs → workbook-session-B94EwVa_.cjs} +1 -1
  124. package/dist/{workbook-session-B8pNW24X.js → workbook-session-BoScoOg-.js} +2 -2
  125. package/dist/worker.cjs +1 -1
  126. package/dist/worker.d.cts +75 -7
  127. package/dist/worker.d.ts +75 -7
  128. package/dist/worker.js +4 -4
  129. package/dist/xlsx.cjs +4 -4
  130. package/dist/xlsx.d.cts +120 -13
  131. package/dist/xlsx.d.ts +120 -13
  132. package/dist/xlsx.js +313 -279
  133. package/package.json +1 -1
  134. package/dist/ParamEditor-B5UZRgxv.cjs +0 -1
  135. package/dist/ParamEditor-DNNARyeB.js +0 -594
  136. package/dist/ReportBatchPanel-Ctvs2t_9.cjs +0 -1
  137. package/dist/ReportPreview-BdQawRh0.js +0 -4879
  138. package/dist/ReportPreview-CJC_-j2I.cjs +0 -6
  139. package/dist/RuleEditor-DkRjOLlr.js +0 -2141
  140. package/dist/RuleEditor-h5anGsDB.cjs +0 -1
  141. package/dist/assets-BIMVwjQe.js +0 -231
  142. package/dist/assets-Dfs2ElxI.cjs +0 -1
  143. package/dist/component-tree-Ca6YYfHq.js +0 -61
  144. package/dist/component-tree-DkGLEfZC.cjs +0 -1
  145. package/dist/computed-BW5a8QFk.js +0 -612
  146. package/dist/computed-C2GD3XcE.cjs +0 -1
  147. package/dist/config-Dg_o8e7m.cjs +0 -1
  148. package/dist/config-XQ4qrQ7Q.js +0 -844
  149. package/dist/designer-D9XAxqSc.js +0 -5178
  150. package/dist/designer-uCDo5XSK.cjs +0 -2
  151. package/dist/drill-ByN8COs_.cjs +0 -1
  152. package/dist/drill-CKW3Xtfa.js +0 -145
  153. package/dist/json-snapshot-D7PE1NsU.cjs +0 -2
  154. package/dist/json-snapshot-DYmEe3sO.js +0 -1779
  155. package/dist/matrix-JLAXlux-.js +0 -302
  156. package/dist/matrix-gTHpDTGm.cjs +0 -1
  157. package/dist/param-validation-C3HlcLLO.cjs +0 -1
  158. package/dist/param-validation-Do7Eg8Zv.js +0 -181
  159. package/dist/record-bindings-B86Sur_y.cjs +0 -1
  160. package/dist/runtime-DakRXui3.js +0 -170
  161. package/dist/runtime-dL5ygIfa.cjs +0 -1
  162. package/dist/sha256-BshdOkCC.cjs +0 -1
  163. package/dist/sha256-DTG-Gq8i.js +0 -157
  164. package/dist/template-bindings-C2SpvsMU.js +0 -58
  165. package/dist/template-bindings-CEtWyiLX.cjs +0 -1
  166. package/dist/template-registry-CpysHAxy.cjs +0 -1
  167. package/dist/tree-CLpxYbKa.cjs +0 -1
  168. package/dist/tree-DNJorJUf.js +0 -172
@@ -8,7 +8,16 @@ import { ExtractPropTypes } from 'vue';
8
8
  import { InjectionKey } from 'vue';
9
9
  import { PropType } from 'vue';
10
10
  import { Ref } from 'vue';
11
+ import { ShallowRef } from 'vue';
11
12
  declare const __VLS_component: DefineComponent<ExtractPropTypes<{
13
+ prefill: {
14
+ type: PropType<ReportPrefillReviewOptions | false>;
15
+ default: undefined;
16
+ };
17
+ dataComparison: {
18
+ type: PropType<ReportDataComparisonReviewOptions | false>;
19
+ default: undefined;
20
+ };
12
21
  drill: {
13
22
  type: PropType<ReportDrillOptions>;
14
23
  default: undefined;
@@ -159,7 +168,7 @@ declare const __VLS_component: DefineComponent<ExtractPropTypes<{
159
168
  ?: boolean;
160
169
  }): Promise<void> | void;
161
170
  importExcel?(input: ArrayBuffer | Uint8Array | Blob, options?: ExcelImportOptions): Promise<ExcelImportResult | null>;
162
- getPlan?(): RenderPlan | null;
171
+ getPlan?(): RenderPlan_2 | null;
163
172
  getChanges?(): ReportCellEdit_2[];
164
173
  getDifferences?(): ReportCellEdit_2[];
165
174
  undo?(): Promise<boolean>;
@@ -183,6 +192,14 @@ declare const __VLS_component: DefineComponent<ExtractPropTypes<{
183
192
  "template-import": (result: ExcelImportResult) => any;
184
193
  "preferences-change": (preferences: Readonly<ReportPreviewPreferences>) => any;
185
194
  }, string, MachReportVuePublicProps, Readonly<ExtractPropTypes<{
195
+ prefill: {
196
+ type: PropType<ReportPrefillReviewOptions | false>;
197
+ default: undefined;
198
+ };
199
+ dataComparison: {
200
+ type: PropType<ReportDataComparisonReviewOptions | false>;
201
+ default: undefined;
202
+ };
186
203
  drill: {
187
204
  type: PropType<ReportDrillOptions>;
188
205
  default: undefined;
@@ -320,13 +337,14 @@ declare const __VLS_component: DefineComponent<ExtractPropTypes<{
320
337
  "onTemplate-import"?: ((result: ExcelImportResult) => any) | undefined;
321
338
  "onPreferences-change"?: ((preferences: Readonly<ReportPreviewPreferences>) => any) | undefined;
322
339
  }>, {
340
+ output: ReportOutputOptions;
323
341
  editable: boolean | ReportEditingOptions;
324
342
  params: Record<string, string>;
325
- output: ReportOutputOptions;
326
343
  height: string;
327
344
  gapPx: number;
328
345
  assets: AssetRenderOptions;
329
346
  reportId: string | string[] | null;
347
+ prefill: false | ReportPrefillReviewOptions;
330
348
  debug: boolean;
331
349
  showExport: boolean;
332
350
  showPrint: boolean;
@@ -343,6 +361,7 @@ declare const __VLS_component: DefineComponent<ExtractPropTypes<{
343
361
  guardChanges: boolean;
344
362
  beforeDiscard: ReportBeforeDiscard;
345
363
  messages: Partial<MachReportMessages>;
364
+ dataComparison: false | ReportDataComparisonReviewOptions;
346
365
  excelImport: boolean | ExcelImportOptions;
347
366
  preset: string;
348
367
  emptyState: boolean | ReportEmptyState;
@@ -429,6 +448,26 @@ declare type __VLS_Props_3 = {
429
448
  disabled?: boolean;
430
449
  loadOptions?: ReportParamOptionsLoader;
431
450
  };
451
+ declare type __VLS_Props_4 = {
452
+ issues: readonly ReportValidationIssue[];
453
+ messages?: Partial<{
454
+ title: string;
455
+ error: string;
456
+ warning: string;
457
+ locate: string;
458
+ dataset: string;
459
+ row: string;
460
+ more: string;
461
+ }>;
462
+ };
463
+ declare type __VLS_Props_5 = {
464
+ state: ReportPrefillState;
465
+ messages: ReportDataReviewMessages;
466
+ };
467
+ declare type __VLS_Props_6 = {
468
+ state: ReportDataComparisonState;
469
+ messages: ReportDataReviewMessages;
470
+ };
432
471
  declare function __VLS_template(): {
433
472
  slots: {
434
473
  settings?(_: {}): any;
@@ -439,6 +478,7 @@ declare function __VLS_template_2(): {
439
478
  attrs: Partial<{}>;
440
479
  slots: {
441
480
  navigation?(_: {}): any;
481
+ 'data-tools'?(_: {}): any;
442
482
  };
443
483
  refs: {
444
484
  searchToggleRef: HTMLButtonElement;
@@ -461,7 +501,7 @@ declare type __VLS_WithTemplateSlots_2<T, S> = T & {
461
501
  declare interface AggregateDefinition {
462
502
  /** Output column; valueField defaults to this field. */
463
503
  field: string;
464
- op: AggregateOperation;
504
+ op: AggregateOperation_2;
465
505
  valueField?: string;
466
506
  weightField?: string;
467
507
  numeric?: "number" | "decimal";
@@ -470,7 +510,7 @@ declare interface AggregateDefinition {
470
510
  declare interface AggregateDefinition_2 {
471
511
  /** Output column; valueField defaults to this field. */
472
512
  field: string;
473
- op: AggregateOperation_2;
513
+ op: AggregateOperation;
474
514
  valueField?: string;
475
515
  weightField?: string;
476
516
  numeric?: "number" | "decimal";
@@ -488,6 +528,27 @@ declare interface AggregateDefinition_3 {
488
528
  declare type AggregateOperation = "sum" | "count" | "avg" | "min" | "max" | "weightedAvg";
489
529
  declare type AggregateOperation_2 = "sum" | "count" | "avg" | "min" | "max" | "weightedAvg";
490
530
  declare type AggregateOperation_3 = "sum" | "count" | "avg" | "min" | "max" | "weightedAvg";
531
+ declare interface AggregateRequest {
532
+ op: AggregateOperation;
533
+ field?: string;
534
+ weightField?: string;
535
+ numeric?: "number" | "decimal";
536
+ digits?: number;
537
+ }
538
+ declare interface AggregateRequest_2 {
539
+ op: AggregateOperation_2;
540
+ field?: string;
541
+ weightField?: string;
542
+ numeric?: "number" | "decimal";
543
+ digits?: number;
544
+ }
545
+ declare interface AggregateRequest_3 {
546
+ op: AggregateOperation_3;
547
+ field?: string;
548
+ weightField?: string;
549
+ numeric?: "number" | "decimal";
550
+ digits?: number;
551
+ }
491
552
  declare interface AssetRenderBudget {
492
553
  /** Maximum newly rendered assets, default 1000. Existing imageData is kept unchanged. */
493
554
  maxAssets?: number;
@@ -535,8 +596,8 @@ declare interface BrowserReportWorker {
535
596
  removeEventListener(type: "error" | "messageerror", listener: (event: Event) => void): void;
536
597
  }
537
598
  /** 供 HTML/Word 导出的完整文档;打印路径逐页渲染,避免预先生成所有页。 */
538
- export declare function buildPrintDocument(p: RenderPlan, options?: ReportPrintOptions): PrintHtmlResult;
539
- export declare function buildWordHtml(p: RenderPlan): {
599
+ export declare function buildPrintDocument(p: RenderPlan_2, options?: ReportPrintOptions): PrintHtmlResult;
600
+ export declare function buildWordHtml(p: RenderPlan_2): {
540
601
  html: string;
541
602
  filename: string;
542
603
  };
@@ -639,6 +700,54 @@ declare type ColumnFormat_3 = {
639
700
  kind: "date";
640
701
  pattern?: string;
641
702
  };
703
+ declare type ColumnVisual = {
704
+ /** Defaults to the column field; never changes the cell's raw value or business identity. */
705
+ field?: string;
706
+ /** Numeric text requires explicit opt-in; formatting an identifier does not turn it into a measure. */
707
+ numeric?: "number" | "decimal";
708
+ min?: number;
709
+ max?: number;
710
+ } & ({
711
+ kind: "colorScale";
712
+ lowColor?: string;
713
+ highColor?: string;
714
+ } | {
715
+ kind: "dataBar";
716
+ color?: string;
717
+ negativeColor?: string;
718
+ });
719
+ declare type ColumnVisual_2 = {
720
+ /** Defaults to the column field; never changes the cell's raw value or business identity. */
721
+ field?: string;
722
+ /** Numeric text requires explicit opt-in; formatting an identifier does not turn it into a measure. */
723
+ numeric?: "number" | "decimal";
724
+ min?: number;
725
+ max?: number;
726
+ } & ({
727
+ kind: "colorScale";
728
+ lowColor?: string;
729
+ highColor?: string;
730
+ } | {
731
+ kind: "dataBar";
732
+ color?: string;
733
+ negativeColor?: string;
734
+ });
735
+ declare type ColumnVisual_3 = {
736
+ /** Defaults to the column field; never changes the cell's raw value or business identity. */
737
+ field?: string;
738
+ /** Numeric text requires explicit opt-in; formatting an identifier does not turn it into a measure. */
739
+ numeric?: "number" | "decimal";
740
+ min?: number;
741
+ max?: number;
742
+ } & ({
743
+ kind: "colorScale";
744
+ lowColor?: string;
745
+ highColor?: string;
746
+ } | {
747
+ kind: "dataBar";
748
+ color?: string;
749
+ negativeColor?: string;
750
+ });
642
751
  declare interface ComponentAssetRegistry {
643
752
  rendererFor(component: Readonly<PlanComponent>): ComponentImageRenderer | undefined;
644
753
  hasExtension(id: string, version: string, kind: string): boolean;
@@ -805,7 +914,7 @@ export declare function createFetchRequest(options?: FetchRequestOptions): HostR
805
914
  */
806
915
  export declare function createLocalFetcher(entries: Record<string, LocalTemplateEntry> | ReportRegistry): PlanFetcher;
807
916
  /** Independent physical test page. Its ruler is measured in millimetres, never CSS pixels. */
808
- export declare function createPrintCalibrationPlan(widthMm: number, heightMm: number): RenderPlan_2;
917
+ export declare function createPrintCalibrationPlan(widthMm: number, heightMm: number): RenderPlan;
809
918
  /** Explicit persistence bridge. Merely registering ReportProvider never enables editing or saving. */
810
919
  export declare function createProviderEditing(provider: ReportProvider, options: ProviderEditingOptions): ReportEditingOptions;
811
920
  /** Optional browser convenience adapter. Access errors are handled by the preview. */
@@ -823,6 +932,7 @@ declare interface DatasetValidationOptions {
823
932
  maxIssues?: number;
824
933
  }
825
934
  export declare const DEFAULT_CALCULATION_MESSAGES: ReportCalculationMessages;
935
+ export declare const DEFAULT_DATA_REVIEW_MESSAGES: ReportDataReviewMessages;
826
936
  export declare const DEFAULT_MESSAGES: MachReportMessages;
827
937
  export declare const DEFAULT_PRINT_MESSAGES: Required<ReportPrintMessages>;
828
938
  export declare const DEFAULT_THEME: MachReportTheme;
@@ -960,7 +1070,21 @@ declare interface FormulaAdapter {
960
1070
  rows: readonly Record<string, unknown>[];
961
1071
  }): unknown;
962
1072
  }
1073
+ declare interface FormulaAdapter_2 {
1074
+ /** Explicit trusted engine; core never evaluates source code/macros/external workbook references. */
1075
+ evaluate(expression: string, context: {
1076
+ row: Readonly<Record<string, unknown>>;
1077
+ rowIndex: number;
1078
+ rows: readonly Record<string, unknown>[];
1079
+ }): unknown;
1080
+ }
963
1081
  declare interface GridCell {
1082
+ /** Resolved visual only. Original value, text, editability and source are unchanged. */
1083
+ dataBar?: {
1084
+ start: number;
1085
+ end: number;
1086
+ color: string;
1087
+ };
964
1088
  /** Styled cell content; text remains a plain-text fallback. Imported rich cells are read-only. */
965
1089
  richParagraphs?: RichParagraph[];
966
1090
  text?: string;
@@ -986,6 +1110,12 @@ declare interface GridCell {
986
1110
  style?: ComponentStyle;
987
1111
  }
988
1112
  declare interface GridCell_2 {
1113
+ /** Resolved visual only. Original value, text, editability and source are unchanged. */
1114
+ dataBar?: {
1115
+ start: number;
1116
+ end: number;
1117
+ color: string;
1118
+ };
989
1119
  /** Styled cell content; text remains a plain-text fallback. Imported rich cells are read-only. */
990
1120
  richParagraphs?: RichParagraph_2[];
991
1121
  text?: string;
@@ -1011,6 +1141,12 @@ declare interface GridCell_2 {
1011
1141
  style?: ComponentStyle_2;
1012
1142
  }
1013
1143
  declare interface GridCell_3 {
1144
+ /** Resolved visual only. Original value, text, editability and source are unchanged. */
1145
+ dataBar?: {
1146
+ start: number;
1147
+ end: number;
1148
+ color: string;
1149
+ };
1014
1150
  /** Styled cell content; text remains a plain-text fallback. Imported rich cells are read-only. */
1015
1151
  richParagraphs?: RichParagraph_3[];
1016
1152
  text?: string;
@@ -1091,6 +1227,8 @@ declare interface ListColumn {
1091
1227
  format?: ColumnFormat_2;
1092
1228
  /** 条件格式规则(声明式,命中合并进单元格样式;如负数红字) */
1093
1229
  rules?: StyleRule[];
1230
+ /** Optional resolved color scale or value-preserving data bar. */
1231
+ visual?: ColumnVisual;
1094
1232
  /** 内容列编辑控制;仍需由预览显式开启 editing,不影响表头/小计只读规则。 */
1095
1233
  editable?: boolean;
1096
1234
  /** 空值列或特殊数据类型可显式声明编辑输入类型。 */
@@ -1116,6 +1254,8 @@ declare interface ListColumn_2 {
1116
1254
  format?: ColumnFormat;
1117
1255
  /** 条件格式规则(声明式,命中合并进单元格样式;如负数红字) */
1118
1256
  rules?: StyleRule_2[];
1257
+ /** Optional resolved color scale or value-preserving data bar. */
1258
+ visual?: ColumnVisual_2;
1119
1259
  /** 内容列编辑控制;仍需由预览显式开启 editing,不影响表头/小计只读规则。 */
1120
1260
  editable?: boolean;
1121
1261
  /** 空值列或特殊数据类型可显式声明编辑输入类型。 */
@@ -1141,6 +1281,8 @@ declare interface ListColumn_3 {
1141
1281
  format?: ColumnFormat_3;
1142
1282
  /** 条件格式规则(声明式,命中合并进单元格样式;如负数红字) */
1143
1283
  rules?: StyleRule_3[];
1284
+ /** Optional resolved color scale or value-preserving data bar. */
1285
+ visual?: ColumnVisual_3;
1144
1286
  /** 内容列编辑控制;仍需由预览显式开启 editing,不影响表头/小计只读规则。 */
1145
1287
  editable?: boolean;
1146
1288
  /** 空值列或特殊数据类型可显式声明编辑输入类型。 */
@@ -1469,7 +1611,7 @@ export declare interface MachReportController {
1469
1611
  /** Explicit import does not require the toolbar excelImport option. No host APIs are called. */
1470
1612
  importExcel?(input: ArrayBuffer | Uint8Array | Blob, options?: ExcelImportOptions): Promise<ExcelImportResult | null>;
1471
1613
  /** Copies prevent consumers from mutating the preview's current snapshot. */
1472
- getPlan?(): RenderPlan | null;
1614
+ getPlan?(): RenderPlan_2 | null;
1473
1615
  getChanges?(): ReportCellEdit_2[];
1474
1616
  getDifferences?(): ReportCellEdit_2[];
1475
1617
  undo?(): Promise<boolean>;
@@ -1517,6 +1659,10 @@ export declare interface MachReportDefaults {
1517
1659
  xlsx?: XlsxRenderOptions;
1518
1660
  /** 默认关闭;true 为本地草稿,对象可提供权限、校验和保存回调。 */
1519
1661
  editable?: boolean | ReportEditingOptions;
1662
+ /** Optional reference-data loader; review and atomic editing are maintained inside the package. */
1663
+ prefill?: ReportPrefillReviewOptions | false;
1664
+ /** Compare a reference with the same query result rendered in the report. */
1665
+ dataComparison?: ReportDataComparisonReviewOptions | false;
1520
1666
  /** 默认关闭;启用后提供导入按钮。ExcelJS 仅在导入时加载。 */
1521
1667
  excelImport?: boolean | ExcelImportOptions;
1522
1668
  }
@@ -1549,7 +1695,7 @@ export declare interface MachReportHandle extends MachReportController {
1549
1695
  reload?: boolean;
1550
1696
  }): Promise<void>;
1551
1697
  importExcel(input: ArrayBuffer | Uint8Array | Blob, options?: ExcelImportOptions): Promise<ExcelImportResult | null>;
1552
- getPlan(): RenderPlan | null;
1698
+ getPlan(): RenderPlan_2 | null;
1553
1699
  getChanges(): ReportCellEdit_2[];
1554
1700
  getDifferences(): ReportCellEdit_2[];
1555
1701
  undo(): Promise<boolean>;
@@ -1570,7 +1716,14 @@ export declare type MachReportLogger = Pick<Console, "warn" | "info">;
1570
1716
  * - 优先级:组件 props > 路由级叠加 > preset > defaults(props 永远最高)
1571
1717
  */
1572
1718
  /** 工具栏与状态文案(默认简体中文;出海场景覆写) */
1573
- export declare interface MachReportMessages extends Partial<ReportCalculationMessages>, ReportPrintMessages, ReportParamOptionsMessages {
1719
+ export declare interface MachReportMessages extends Partial<ReportCalculationMessages>, Partial<ReportDataReviewMessages>, ReportPrintMessages, ReportParamOptionsMessages {
1720
+ reviewTools?: string;
1721
+ validationTitle?: string;
1722
+ validationError?: string;
1723
+ validationWarning?: string;
1724
+ validationDataset?: string;
1725
+ validationRow?: string;
1726
+ validationMore?: string;
1574
1727
  drillActions?: string;
1575
1728
  drillOpening?: string;
1576
1729
  drillMissingValue?: string;
@@ -2030,17 +2183,19 @@ declare interface PaginateOptions {
2030
2183
  maxPages?: number;
2031
2184
  /** Actual grid cells, including repeated furniture and nested children; checked before each page is appended. */
2032
2185
  maxCells?: number;
2186
+ /** Shared bound-chart primitive budget, checked before expansion; default 50000, range 1..1000000. */
2187
+ maxChartComponents?: number;
2033
2188
  signal?: AbortSignal;
2034
2189
  /** Streaming total-page anchors can skip the bounded counting pass when known. */
2035
2190
  knownTotalPages?: number;
2036
2191
  onWarning?: (warning: string) => void;
2037
2192
  /** Trusted formula adapter is passed at execution time; it is never serialized in templates. */
2038
- formula?: FormulaAdapter;
2193
+ formula?: FormulaAdapter_2;
2039
2194
  }
2040
2195
  export declare const PARAM_OPTIONS_MESSAGES: Required<ReportParamOptionsMessages>;
2041
2196
  /** PDF 导出器:RenderPlan → PDF 字节;第二参数可上报非致命保真告警。 */
2042
2197
  export declare interface PdfExporter {
2043
- (plan: RenderPlan, onWarning?: (message: string) => void, task?: OutputTaskOptions_2 & {
2198
+ (plan: RenderPlan_2, onWarning?: (message: string) => void, task?: OutputTaskOptions_2 & {
2044
2199
  onDiagnostic?: (entry: OutputDiagnostic) => void;
2045
2200
  }): Promise<Uint8Array>;
2046
2201
  /** 可选轻量字体检查;旧版自定义导出函数无需实现。取消时拒绝 AbortError。 */
@@ -2057,6 +2212,8 @@ export declare interface PdfFontCheckResult {
2057
2212
  /** available 仅表示字体资源可达;实际导出仍会校验文字能否编码。 */
2058
2213
  export declare type PdfFontStatus = "unchecked" | "checking" | "available" | "disabled" | "unverified" | "error";
2059
2214
  declare interface PlanComponent {
2215
+ /** Template-only aggregate binding, expanded into shared primitives during layout. */
2216
+ chartBinding?: ReportChartBinding;
2060
2217
  /** Optional QR/barcode encoding configuration; no encoder is loaded by the core. */
2061
2218
  code?: CodeOptions;
2062
2219
  /** Template-only binding; resolved and removed before constructing the output plan. */
@@ -2085,6 +2242,8 @@ declare interface PlanComponent {
2085
2242
  fallbackText?: string;
2086
2243
  }
2087
2244
  declare interface PlanComponent_2 {
2245
+ /** Template-only aggregate binding, expanded into shared primitives during layout. */
2246
+ chartBinding?: ReportChartBinding_2;
2088
2247
  /** Optional QR/barcode encoding configuration; no encoder is loaded by the core. */
2089
2248
  code?: CodeOptions_2;
2090
2249
  /** Template-only binding; resolved and removed before constructing the output plan. */
@@ -2113,6 +2272,8 @@ declare interface PlanComponent_2 {
2113
2272
  fallbackText?: string;
2114
2273
  }
2115
2274
  declare interface PlanComponent_3 {
2275
+ /** Template-only aggregate binding, expanded into shared primitives during layout. */
2276
+ chartBinding?: ReportChartBinding_3;
2116
2277
  /** Optional QR/barcode encoding configuration; no encoder is loaded by the core. */
2117
2278
  code?: CodeOptions_3;
2118
2279
  /** Template-only binding; resolved and removed before constructing the output plan. */
@@ -2141,7 +2302,7 @@ declare interface PlanComponent_3 {
2141
2302
  fallbackText?: string;
2142
2303
  }
2143
2304
  export declare interface PlanFetcher {
2144
- (input: ReportFetchInput): Promise<RenderPlan>;
2305
+ (input: ReportFetchInput): Promise<RenderPlan_2>;
2145
2306
  getParamDefs?: ReportFetcher["getParamDefs"];
2146
2307
  }
2147
2308
  declare interface PlanGrid {
@@ -2184,7 +2345,7 @@ declare interface PlanPage {
2184
2345
  marginBottomMm?: number;
2185
2346
  marginLeftMm?: number;
2186
2347
  marginRightMm?: number;
2187
- components: PlanComponent[];
2348
+ components: PlanComponent_2[];
2188
2349
  }
2189
2350
  declare interface PlanPage_2 {
2190
2351
  meta?: Record<string, unknown>;
@@ -2196,7 +2357,7 @@ declare interface PlanPage_2 {
2196
2357
  marginBottomMm?: number;
2197
2358
  marginLeftMm?: number;
2198
2359
  marginRightMm?: number;
2199
- components: PlanComponent_2[];
2360
+ components: PlanComponent[];
2200
2361
  }
2201
2362
  /** 列表的逻辑行来源;用于连续 Excel 重组,避免按文本猜测重复表头。 */
2202
2363
  declare interface PlanTableFragment {
@@ -2249,8 +2410,8 @@ declare interface PlanTableFragment_3 {
2249
2410
  /** Bounded concurrency, one stage timeout, and cancellation even for a hanging decoder. */
2250
2411
  export declare function preparePrintResources(doc: Document, options?: ReportPrintOptions, signal?: AbortSignal, base?: string): Promise<void>;
2251
2412
  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<{
2413
+ pdf(plan: RenderPlan_2, exporter: PdfExporter, warning: (message: string) => void, task?: PreviewEncodingTask): Promise<Uint8Array>;
2414
+ xlsx(plan: RenderPlan_2, options: XlsxRenderOptions, task: PreviewEncodingTask): Promise<{
2254
2415
  buffer: Uint8Array;
2255
2416
  warnings: string[];
2256
2417
  }>;
@@ -2270,7 +2431,7 @@ declare interface PrintHtmlResult {
2270
2431
  * 批量打印(多单连打):把多份计划合并为一个打印文档——
2271
2432
  * named pages 保证混合纸张正确分页,浏览器只弹一次打印对话框。
2272
2433
  */
2273
- export declare function printPlans(plans: RenderPlan[], options?: {
2434
+ export declare function printPlans(plans: RenderPlan_2[], options?: {
2274
2435
  onProgress?: (done: number, total: number) => void;
2275
2436
  onError?: (message: string) => void;
2276
2437
  signal?: AbortSignal;
@@ -2351,6 +2512,10 @@ export declare interface ReportCalculationMessages {
2351
2512
  calculationErrorOverflow: string;
2352
2513
  calculationErrorPrecision: string;
2353
2514
  }
2515
+ declare interface ReportCandidateValidationOptions extends Pick<ReportDatasetValidationOptions, "rules" | "maxChecks" | "maxIssues"> {
2516
+ /** Warnings are visible and allowed by default; block explicitly when required by business policy. */
2517
+ warningPolicy?: "allow" | "block";
2518
+ }
2354
2519
  /** 预览中的物理坐标;合并单元格使用左上角坐标。 */
2355
2520
  declare interface ReportCellAddress {
2356
2521
  pageIndex: number;
@@ -2478,6 +2643,265 @@ declare interface ReportCellTableIdentity_2 {
2478
2643
  declare type ReportCellValue = string | number | boolean | null;
2479
2644
  declare type ReportCellValue_2 = string | number | boolean | null;
2480
2645
  declare type ReportCellValueType = NonNullable<GridCell_2["valueType"]>;
2646
+ /** Serializable binding; data and authorization continue to come from the existing report source. */
2647
+ declare interface ReportChartBinding {
2648
+ dataset: string;
2649
+ categoryField: string;
2650
+ measures: readonly ReportChartMeasure[];
2651
+ type: ReportChartOptions["type"];
2652
+ sort?: "asc" | "desc";
2653
+ title?: string;
2654
+ showValues?: boolean;
2655
+ maxRows?: number;
2656
+ maxCategories?: number;
2657
+ }
2658
+ /** Serializable binding; data and authorization continue to come from the existing report source. */
2659
+ declare interface ReportChartBinding_2 {
2660
+ dataset: string;
2661
+ categoryField: string;
2662
+ measures: readonly ReportChartMeasure_2[];
2663
+ type: ReportChartOptions_2["type"];
2664
+ sort?: "asc" | "desc";
2665
+ title?: string;
2666
+ showValues?: boolean;
2667
+ maxRows?: number;
2668
+ maxCategories?: number;
2669
+ }
2670
+ /** Serializable binding; data and authorization continue to come from the existing report source. */
2671
+ declare interface ReportChartBinding_3 {
2672
+ dataset: string;
2673
+ categoryField: string;
2674
+ measures: readonly ReportChartMeasure_3[];
2675
+ type: ReportChartOptions_3["type"];
2676
+ sort?: "asc" | "desc";
2677
+ title?: string;
2678
+ showValues?: boolean;
2679
+ maxRows?: number;
2680
+ maxCategories?: number;
2681
+ }
2682
+ declare interface ReportChartMeasure extends AggregateRequest {
2683
+ label?: string;
2684
+ color?: string;
2685
+ }
2686
+ declare interface ReportChartMeasure_2 extends AggregateRequest_2 {
2687
+ label?: string;
2688
+ color?: string;
2689
+ }
2690
+ declare interface ReportChartMeasure_3 extends AggregateRequest_3 {
2691
+ label?: string;
2692
+ color?: string;
2693
+ }
2694
+ declare interface ReportChartOptions {
2695
+ type: "bar" | "line" | "stackedBar" | "percentBar";
2696
+ categories: readonly string[];
2697
+ series: readonly ReportChartSeries[];
2698
+ leftMm: number;
2699
+ topMm: number;
2700
+ widthMm: number;
2701
+ heightMm: number;
2702
+ title?: string;
2703
+ showValues?: boolean;
2704
+ }
2705
+ declare interface ReportChartOptions_2 {
2706
+ type: "bar" | "line" | "stackedBar" | "percentBar";
2707
+ categories: readonly string[];
2708
+ series: readonly ReportChartSeries_2[];
2709
+ leftMm: number;
2710
+ topMm: number;
2711
+ widthMm: number;
2712
+ heightMm: number;
2713
+ title?: string;
2714
+ showValues?: boolean;
2715
+ }
2716
+ declare interface ReportChartOptions_3 {
2717
+ type: "bar" | "line" | "stackedBar" | "percentBar";
2718
+ categories: readonly string[];
2719
+ series: readonly ReportChartSeries_3[];
2720
+ leftMm: number;
2721
+ topMm: number;
2722
+ widthMm: number;
2723
+ heightMm: number;
2724
+ title?: string;
2725
+ showValues?: boolean;
2726
+ }
2727
+ declare interface ReportChartSeries {
2728
+ name: string;
2729
+ values: readonly (number | null)[];
2730
+ color?: string;
2731
+ }
2732
+ declare interface ReportChartSeries_2 {
2733
+ name: string;
2734
+ values: readonly (number | null)[];
2735
+ color?: string;
2736
+ }
2737
+ declare interface ReportChartSeries_3 {
2738
+ name: string;
2739
+ values: readonly (number | null)[];
2740
+ color?: string;
2741
+ }
2742
+ declare interface ReportComparison {
2743
+ field: string;
2744
+ op: ">" | ">=" | "<" | "<=" | "==" | "!=" | "between" | "contains" | "isNull" | "isNotNull";
2745
+ /** Legacy scalar thresholds remain supported. Use right for field-to-field comparisons. */
2746
+ value?: ReportPredicateScalar;
2747
+ right?: ReportPredicateOperand;
2748
+ values?: readonly [
2749
+ ReportPredicateScalar,
2750
+ ReportPredicateScalar
2751
+ ];
2752
+ numeric?: "number" | "decimal";
2753
+ valueType?: "number" | "decimal" | "text" | "date" | "boolean";
2754
+ }
2755
+ declare interface ReportComparison_2 {
2756
+ field: string;
2757
+ op: ">" | ">=" | "<" | "<=" | "==" | "!=" | "between" | "contains" | "isNull" | "isNotNull";
2758
+ /** Legacy scalar thresholds remain supported. Use right for field-to-field comparisons. */
2759
+ value?: ReportPredicateScalar_2;
2760
+ right?: ReportPredicateOperand_2;
2761
+ values?: readonly [
2762
+ ReportPredicateScalar_2,
2763
+ ReportPredicateScalar_2
2764
+ ];
2765
+ numeric?: "number" | "decimal";
2766
+ valueType?: "number" | "decimal" | "text" | "date" | "boolean";
2767
+ }
2768
+ declare interface ReportComparison_3 {
2769
+ field: string;
2770
+ op: ">" | ">=" | "<" | "<=" | "==" | "!=" | "between" | "contains" | "isNull" | "isNotNull";
2771
+ /** Legacy scalar thresholds remain supported. Use right for field-to-field comparisons. */
2772
+ value?: ReportPredicateScalar_3;
2773
+ right?: ReportPredicateOperand_3;
2774
+ values?: readonly [
2775
+ ReportPredicateScalar_3,
2776
+ ReportPredicateScalar_3
2777
+ ];
2778
+ numeric?: "number" | "decimal";
2779
+ valueType?: "number" | "decimal" | "text" | "date" | "boolean";
2780
+ }
2781
+ declare interface ReportDataComparison {
2782
+ sourceScope?: string;
2783
+ datasetId: string;
2784
+ differences: readonly ReportDataDifference[];
2785
+ counts: {
2786
+ added: number;
2787
+ removed: number;
2788
+ changed: number;
2789
+ unchanged: number;
2790
+ cells: number;
2791
+ };
2792
+ }
2793
+ declare interface ReportDataComparisonField {
2794
+ field: string;
2795
+ label?: string;
2796
+ /** Numeric comparison is explicit; identifiers containing digits stay text. */
2797
+ type?: "value" | "decimal";
2798
+ /** Absolute decimal tolerance, inclusive. No binary floating-point subtraction. */
2799
+ tolerance?: string;
2800
+ /** Fractional ratio digits. changeRatio is (after - before) / before, not a percent. */
2801
+ ratioDigits?: number;
2802
+ zeroDenominator?: "omit" | "zero-if-equal";
2803
+ missing?: "distinct" | "empty-equivalent" | "zero";
2804
+ }
2805
+ export declare const ReportDataComparisonPanel: DefineComponent<__VLS_Props_6, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, MachReportVuePublicProps, Readonly<__VLS_Props_6> & Readonly<{}>, {}>;
2806
+ export declare interface ReportDataComparisonReviewOptions extends ReportDataReviewSource {
2807
+ fields: readonly ReportDataComparisonField[];
2808
+ maxDifferences?: number;
2809
+ }
2810
+ export declare interface ReportDataComparisonState extends ReportDataReviewState<ReportDataComparison> {
2811
+ locate(item: ReportDataDifference): boolean;
2812
+ }
2813
+ declare interface ReportDataDifference {
2814
+ rowKey: string | number;
2815
+ kind: "added" | "removed" | "changed";
2816
+ field: string;
2817
+ label: string;
2818
+ before: ReportCellValue | undefined;
2819
+ after: ReportCellValue | undefined;
2820
+ /** Exact base-ten difference. Undefined when either input is missing/non-numeric. */
2821
+ delta?: string;
2822
+ changeRatio?: string;
2823
+ ratioUnavailable?: "zero-denominator" | "missing";
2824
+ }
2825
+ declare interface ReportDataLimits {
2826
+ maxRows?: number;
2827
+ maxFields?: number;
2828
+ maxCells?: number;
2829
+ }
2830
+ /** A business record, never a physical report row index. */
2831
+ declare interface ReportDataRecord {
2832
+ rowKey: string | number;
2833
+ values: Readonly<Record<string, ReportCellValue>>;
2834
+ }
2835
+ export declare interface ReportDataReviewMessages {
2836
+ prefillTitle: string;
2837
+ prefillHint: string;
2838
+ prefillCurrent: string;
2839
+ prefillReference: string;
2840
+ prefillLoad: string;
2841
+ prefillApply: string;
2842
+ prefillMatched: string;
2843
+ prefillChanged: string;
2844
+ prefillSkipped: string;
2845
+ prefillConflict: string;
2846
+ prefillUnchanged: string;
2847
+ prefillReadonly: string;
2848
+ prefillOccupied: string;
2849
+ prefillMissingSource: string;
2850
+ prefillMissingTarget: string;
2851
+ prefillAmbiguous: string;
2852
+ prefillInvalid: string;
2853
+ comparisonTitle: string;
2854
+ comparisonHint: string;
2855
+ comparisonLoad: string;
2856
+ comparisonAdded: string;
2857
+ comparisonRemoved: string;
2858
+ comparisonChanged: string;
2859
+ comparisonUnchanged: string;
2860
+ reviewCancel: string;
2861
+ reviewClose: string;
2862
+ reviewBefore: string;
2863
+ reviewAfter: string;
2864
+ reviewField: string;
2865
+ reviewKey: string;
2866
+ reviewDelta: string;
2867
+ reviewRatio: string;
2868
+ reviewLocate: string;
2869
+ reviewEmpty: string;
2870
+ reviewPrevious: string;
2871
+ reviewNext: string;
2872
+ reviewPage: string;
2873
+ }
2874
+ declare interface ReportDataReviewSource extends ReportDataLimits {
2875
+ sourceScope?: string;
2876
+ datasetId: string;
2877
+ label?: string;
2878
+ /** The host chooses history/instances; this package never guesses an endpoint or period. */
2879
+ load(operation: {
2880
+ signal: AbortSignal;
2881
+ }): readonly ReportDataRecord[] | Promise<readonly ReportDataRecord[]>;
2882
+ /** Cancel loaders that do not finish; default 15 seconds, bounded at 120 seconds. */
2883
+ timeoutMs?: number;
2884
+ }
2885
+ declare interface ReportDataReviewState<Result> {
2886
+ busy: Ref<boolean>;
2887
+ result: ShallowRef<Result | null>;
2888
+ error: Ref<string | null>;
2889
+ run(): Promise<void>;
2890
+ cancel(): void;
2891
+ clear(): void;
2892
+ }
2893
+ declare interface ReportDatasetValidationOptions {
2894
+ rules: readonly ReportValidationRule[];
2895
+ rowKey?: string;
2896
+ computed?: readonly ComputedField[];
2897
+ /** Explicit trusted engine, shared with pagination; never read from a serialized template. */
2898
+ formula?: FormulaAdapter;
2899
+ /** Uses the same bounded tree preparation and descendant-leaf summaries as pagination. */
2900
+ tree?: TreeTableOptions;
2901
+ maxChecks?: number;
2902
+ maxIssues?: number;
2903
+ signal?: AbortSignal;
2904
+ }
2481
2905
  declare interface ReportDataTarget {
2482
2906
  datasetId: string;
2483
2907
  field: string;
@@ -2585,6 +3009,10 @@ export declare interface ReportEditingOptions {
2585
3009
  canEdit?(context: ReportCellContext): boolean;
2586
3010
  /** Return an error message or throw to reject the edit. */
2587
3011
  validate?(edit: Readonly<ReportCellEdit>, operation: ReportEditOperation): void | string | Promise<void | string>;
3012
+ /** Same declarative rules can be run in Node via validateReportDataset. Requires a source-backed session. */
3013
+ validation?: ReportCandidateValidationOptions;
3014
+ /** Optional host batch validation sees the fully recalculated candidate plan. */
3015
+ validateBatch?(batch: Readonly<ReportEditBatch>, candidate: RenderPlan, operation: ReportEditOperation): void | readonly ReportValidationIssue[] | Promise<void | readonly ReportValidationIssue[]>;
2588
3016
  /** Called before applying the change. A rejection leaves the current report untouched. */
2589
3017
  save?(edit: Readonly<ReportCellEdit>, operation: ReportEditOperation): void | ReportEditResult | Promise<void | ReportEditResult>;
2590
3018
  /** Must commit all edits in one server transaction. Required for multi-cell persisted edits. */
@@ -2645,11 +3073,13 @@ declare type ReportExpression = {
2645
3073
  } | {
2646
3074
  value: string | number | boolean | null;
2647
3075
  } | {
2648
- aggregate: AggregateOperation;
3076
+ aggregate: AggregateOperation_2;
2649
3077
  field?: string;
2650
3078
  weightField?: string;
2651
3079
  } | {
2652
- op: "add" | "subtract" | "multiply" | "divide" | "coalesce";
3080
+ op: ReportExpressionOperation;
3081
+ /** Required for if; args are [then, else], and only the selected branch is evaluated. */
3082
+ condition?: ReportPredicate;
2653
3083
  args: readonly ReportExpression[];
2654
3084
  };
2655
3085
  declare type ReportExpression_2 = {
@@ -2657,11 +3087,13 @@ declare type ReportExpression_2 = {
2657
3087
  } | {
2658
3088
  value: string | number | boolean | null;
2659
3089
  } | {
2660
- aggregate: AggregateOperation_2;
3090
+ aggregate: AggregateOperation;
2661
3091
  field?: string;
2662
3092
  weightField?: string;
2663
3093
  } | {
2664
- op: "add" | "subtract" | "multiply" | "divide" | "coalesce";
3094
+ op: ReportExpressionOperation_2;
3095
+ /** Required for if; args are [then, else], and only the selected branch is evaluated. */
3096
+ condition?: ReportPredicate_2;
2665
3097
  args: readonly ReportExpression_2[];
2666
3098
  };
2667
3099
  declare type ReportExpression_3 = {
@@ -2673,12 +3105,17 @@ declare type ReportExpression_3 = {
2673
3105
  field?: string;
2674
3106
  weightField?: string;
2675
3107
  } | {
2676
- op: "add" | "subtract" | "multiply" | "divide" | "coalesce";
3108
+ op: ReportExpressionOperation_3;
3109
+ /** Required for if; args are [then, else], and only the selected branch is evaluated. */
3110
+ condition?: ReportPredicate_3;
2677
3111
  args: readonly ReportExpression_3[];
2678
3112
  };
3113
+ declare type ReportExpressionOperation = "add" | "subtract" | "multiply" | "divide" | "coalesce" | "if" | "round" | "abs" | "concat" | "trim" | "upper" | "lower" | "dateYear" | "dateMonth" | "dateDay";
3114
+ declare type ReportExpressionOperation_2 = "add" | "subtract" | "multiply" | "divide" | "coalesce" | "if" | "round" | "abs" | "concat" | "trim" | "upper" | "lower" | "dateYear" | "dateMonth" | "dateDay";
3115
+ declare type ReportExpressionOperation_3 = "add" | "subtract" | "multiply" | "divide" | "coalesce" | "if" | "round" | "abs" | "concat" | "trim" | "upper" | "lower" | "dateYear" | "dateMonth" | "dateDay";
2679
3116
  /** 保持 Promise<RenderPlan> 契约;元数据为可选,旧业务 fetcher 无需改造。 */
2680
3117
  declare interface ReportFetcher {
2681
- (input: ReportFetchInput): Promise<RenderPlan>;
3118
+ (input: ReportFetchInput): Promise<RenderPlan_2>;
2682
3119
  getParamDefs?: (reportIds: string[]) => ReportParamDef[];
2683
3120
  }
2684
3121
  declare interface ReportFetchInput extends ReportTaskMonitoring {
@@ -2789,12 +3226,9 @@ declare interface ReportParamDef {
2789
3226
  field: string;
2790
3227
  /** 显示名(缺省用 field) */
2791
3228
  label?: string;
2792
- type?: "text" | "number" | "date" | "month" | "year" | "dateRange" | "select";
3229
+ type?: "text" | "number" | "date" | "month" | "year" | "dateRange" | "select" | "multiSelect" | "cascader" | "numberRange";
2793
3230
  /** select 选项 */
2794
- options?: Array<{
2795
- label: string;
2796
- value: string;
2797
- }>;
3231
+ options?: ReportParamTreeOption[];
2798
3232
  /** Opaque host-resolved source key. No URL, credentials or executable code is stored. */
2799
3233
  optionsSource?: string;
2800
3234
  /** Select dependencies must be declared parameters; changing a parent clears descendants. */
@@ -2807,6 +3241,9 @@ declare interface ReportParamDef {
2807
3241
  max?: number | string;
2808
3242
  minLength?: number;
2809
3243
  maxLength?: number;
3244
+ /** multiSelect item count (maximum 100). Cascader paths are bounded to 16 levels. */
3245
+ minItems?: number;
3246
+ maxItems?: number;
2810
3247
  }
2811
3248
  /** 报表参数定义(声明式,模板自描述参数面:渲染组件据此生成查询面板) */
2812
3249
  declare interface ReportParamDef_2 {
@@ -2814,12 +3251,9 @@ declare interface ReportParamDef_2 {
2814
3251
  field: string;
2815
3252
  /** 显示名(缺省用 field) */
2816
3253
  label?: string;
2817
- type?: "text" | "number" | "date" | "month" | "year" | "dateRange" | "select";
3254
+ type?: "text" | "number" | "date" | "month" | "year" | "dateRange" | "select" | "multiSelect" | "cascader" | "numberRange";
2818
3255
  /** select 选项 */
2819
- options?: Array<{
2820
- label: string;
2821
- value: string;
2822
- }>;
3256
+ options?: ReportParamTreeOption_2[];
2823
3257
  /** Opaque host-resolved source key. No URL, credentials or executable code is stored. */
2824
3258
  optionsSource?: string;
2825
3259
  /** Select dependencies must be declared parameters; changing a parent clears descendants. */
@@ -2832,6 +3266,9 @@ declare interface ReportParamDef_2 {
2832
3266
  max?: number | string;
2833
3267
  minLength?: number;
2834
3268
  maxLength?: number;
3269
+ /** multiSelect item count (maximum 100). Cascader paths are bounded to 16 levels. */
3270
+ minItems?: number;
3271
+ maxItems?: number;
2835
3272
  }
2836
3273
  /** 报表参数定义(声明式,模板自描述参数面:渲染组件据此生成查询面板) */
2837
3274
  declare interface ReportParamDef_3 {
@@ -2839,12 +3276,9 @@ declare interface ReportParamDef_3 {
2839
3276
  field: string;
2840
3277
  /** 显示名(缺省用 field) */
2841
3278
  label?: string;
2842
- type?: "text" | "number" | "date" | "month" | "year" | "dateRange" | "select";
3279
+ type?: "text" | "number" | "date" | "month" | "year" | "dateRange" | "select" | "multiSelect" | "cascader" | "numberRange";
2843
3280
  /** select 选项 */
2844
- options?: Array<{
2845
- label: string;
2846
- value: string;
2847
- }>;
3281
+ options?: ReportParamTreeOption_3[];
2848
3282
  /** Opaque host-resolved source key. No URL, credentials or executable code is stored. */
2849
3283
  optionsSource?: string;
2850
3284
  /** Select dependencies must be declared parameters; changing a parent clears descendants. */
@@ -2857,6 +3291,9 @@ declare interface ReportParamDef_3 {
2857
3291
  max?: number | string;
2858
3292
  minLength?: number;
2859
3293
  maxLength?: number;
3294
+ /** multiSelect item count (maximum 100). Cascader paths are bounded to 16 levels. */
3295
+ minItems?: number;
3296
+ maxItems?: number;
2860
3297
  }
2861
3298
  declare interface ReportParamIssue {
2862
3299
  code: ReportParamIssueCode;
@@ -2864,10 +3301,11 @@ declare interface ReportParamIssue {
2864
3301
  field: string;
2865
3302
  message: string;
2866
3303
  }
2867
- declare type ReportParamIssueCode = "definition" | "required" | "type" | "option" | "dependency" | "minimum" | "maximum" | "minLength" | "maxLength";
3304
+ declare type ReportParamIssueCode = "definition" | "required" | "type" | "option" | "dependency" | "minimum" | "maximum" | "minLength" | "maxLength" | "minItems" | "maxItems";
2868
3305
  export declare interface ReportParamOption {
2869
3306
  readonly label: string;
2870
3307
  readonly value: string;
3308
+ readonly children?: readonly ReportParamOption[];
2871
3309
  }
2872
3310
  export declare interface ReportParamOptionsInput {
2873
3311
  readonly source: string;
@@ -2887,6 +3325,8 @@ export declare interface ReportParamOptionsMessages {
2887
3325
  paramOptionsMissingLoader?: string;
2888
3326
  paramOptionsDependencies?: string;
2889
3327
  paramOptionsClear?: string;
3328
+ paramNumberRangeStart?: string;
3329
+ paramNumberRangeEnd?: string;
2890
3330
  }
2891
3331
  export declare const ReportParamPanel: DefineComponent<__VLS_Props_3, {
2892
3332
  focusInvalid: typeof focusInvalid;
@@ -2905,6 +3345,24 @@ export declare const ReportParamPanel: DefineComponent<__VLS_Props_3, {
2905
3345
  showActions: boolean;
2906
3346
  showTitle: boolean;
2907
3347
  }>;
3348
+ /** Cascader values are unique within each sibling list. */
3349
+ declare interface ReportParamTreeOption {
3350
+ label: string;
3351
+ value: string;
3352
+ children?: ReportParamTreeOption[];
3353
+ }
3354
+ /** Cascader values are unique within each sibling list. */
3355
+ declare interface ReportParamTreeOption_2 {
3356
+ label: string;
3357
+ value: string;
3358
+ children?: ReportParamTreeOption_2[];
3359
+ }
3360
+ /** Cascader values are unique within each sibling list. */
3361
+ declare interface ReportParamTreeOption_3 {
3362
+ label: string;
3363
+ value: string;
3364
+ children?: ReportParamTreeOption_3[];
3365
+ }
2908
3366
  /** Licensed local font bytes; never downloaded implicitly by the runtime. */
2909
3367
  declare interface ReportPdfFontOptions {
2910
3368
  customFontBytes?: Uint8Array | ArrayBuffer;
@@ -2916,6 +3374,45 @@ declare interface ReportPdfFontOptions {
2916
3374
  boldItalic?: Uint8Array | ArrayBuffer;
2917
3375
  };
2918
3376
  }
3377
+ declare type ReportPredicate = ReportComparison | {
3378
+ all: readonly ReportPredicate[];
3379
+ } | {
3380
+ any: readonly ReportPredicate[];
3381
+ } | {
3382
+ not: ReportPredicate;
3383
+ };
3384
+ declare type ReportPredicate_2 = ReportComparison_2 | {
3385
+ all: readonly ReportPredicate_2[];
3386
+ } | {
3387
+ any: readonly ReportPredicate_2[];
3388
+ } | {
3389
+ not: ReportPredicate_2;
3390
+ };
3391
+ declare type ReportPredicate_3 = ReportComparison_3 | {
3392
+ all: readonly ReportPredicate_3[];
3393
+ } | {
3394
+ any: readonly ReportPredicate_3[];
3395
+ } | {
3396
+ not: ReportPredicate_3;
3397
+ };
3398
+ declare type ReportPredicateOperand = {
3399
+ field: string;
3400
+ } | {
3401
+ value: ReportPredicateScalar;
3402
+ };
3403
+ declare type ReportPredicateOperand_2 = {
3404
+ field: string;
3405
+ } | {
3406
+ value: ReportPredicateScalar_2;
3407
+ };
3408
+ declare type ReportPredicateOperand_3 = {
3409
+ field: string;
3410
+ } | {
3411
+ value: ReportPredicateScalar_3;
3412
+ };
3413
+ declare type ReportPredicateScalar = string | number | boolean | null;
3414
+ declare type ReportPredicateScalar_2 = string | number | boolean | null;
3415
+ declare type ReportPredicateScalar_3 = string | number | boolean | null;
2919
3416
  export declare interface ReportPreferencesAdapter {
2920
3417
  load(key: string): Partial<ReportPreviewPreferences> | null | Promise<Partial<ReportPreviewPreferences> | null>;
2921
3418
  save(key: string, value: Readonly<Partial<ReportPreviewPreferences>>): void | Promise<void>;
@@ -2926,6 +3423,41 @@ export declare interface ReportPreferencesOptions {
2926
3423
  key: string;
2927
3424
  adapter: ReportPreferencesAdapter;
2928
3425
  }
3426
+ declare interface ReportPrefillField {
3427
+ field: string;
3428
+ sourceField?: string;
3429
+ label?: string;
3430
+ }
3431
+ declare interface ReportPrefillItem {
3432
+ source: Readonly<ReportCellSource>;
3433
+ label: string;
3434
+ status: ReportPrefillStatus;
3435
+ reason?: ReportPrefillReason;
3436
+ before?: ReportCellValue;
3437
+ after?: ReportCellValue;
3438
+ }
3439
+ export declare const ReportPrefillPanel: DefineComponent<__VLS_Props_5, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, MachReportVuePublicProps, Readonly<__VLS_Props_5> & Readonly<{}>, {}>;
3440
+ declare interface ReportPrefillPreview {
3441
+ sourceScope?: string;
3442
+ datasetId: string;
3443
+ items: readonly ReportPrefillItem[];
3444
+ counts: Readonly<Record<ReportPrefillStatus, number>>;
3445
+ /** Optimistic source tokens and previous values are retained for an atomic edit. */
3446
+ edits: readonly ReportCellEdit[];
3447
+ }
3448
+ declare type ReportPrefillReason = "unchanged" | "readonly" | "occupied" | "missing-source" | "missing-target" | "ambiguous" | "invalid";
3449
+ export declare interface ReportPrefillReviewOptions extends ReportDataReviewSource {
3450
+ fields: readonly ReportPrefillField[];
3451
+ mode?: "empty" | "replace";
3452
+ maxChanges?: number;
3453
+ }
3454
+ export declare interface ReportPrefillState extends ReportDataReviewState<ReportPrefillPreview> {
3455
+ applying: Ref<boolean>;
3456
+ blockedReason: ComputedRef<string | undefined>;
3457
+ canApply: ComputedRef<boolean>;
3458
+ apply(): Promise<boolean>;
3459
+ }
3460
+ declare type ReportPrefillStatus = "matched" | "changed" | "skipped" | "conflict";
2929
3461
  export declare const ReportPreview: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
2930
3462
  export declare interface ReportPreviewDataTarget extends ReportDataTarget_2 {
2931
3463
  /** Added by the query adapter; isolates identical dataset/row/field identities across reports. */
@@ -3018,6 +3550,8 @@ declare interface ReportRuntimeBudget {
3018
3550
  maxRows?: number;
3019
3551
  maxPages?: number;
3020
3552
  maxCells?: number;
3553
+ /** Aggregate bound-chart primitives per prepare, before expansion; default 50000, hard maximum 1000000. */
3554
+ maxChartComponents?: number;
3021
3555
  maxOutputBytes?: number;
3022
3556
  /** Bound the plain JSON snapshot accepted by exportPrepared (default 64 MB). */
3023
3557
  maxPreparedBytes?: number;
@@ -3132,6 +3666,34 @@ declare interface ReportTemplateRepeat_3 {
3132
3666
  }
3133
3667
  declare type ReportTemplateSummary = Omit<ReportTemplateDocument, "template">;
3134
3668
  export declare const ReportToolbar: __VLS_WithTemplateSlots_2<typeof __VLS_component_2, __VLS_TemplateResult_2["slots"]>;
3669
+ declare interface ReportValidationIssue {
3670
+ ruleId: string;
3671
+ rowKey?: string | number;
3672
+ rowIndex?: number;
3673
+ field?: string;
3674
+ dataset?: string;
3675
+ sourceScope?: string;
3676
+ severity: "error" | "warning";
3677
+ message: string;
3678
+ }
3679
+ export declare const ReportValidationPanel: DefineComponent<__VLS_Props_4, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
3680
+ locate: (issue: ReportValidationIssue) => any;
3681
+ }, string, MachReportVuePublicProps, Readonly<__VLS_Props_4> & Readonly<{
3682
+ onLocate?: ((issue: ReportValidationIssue) => any) | undefined;
3683
+ }>, {}>;
3684
+ declare interface ReportValidationRule {
3685
+ id: string;
3686
+ /** Optional target; omitted applies to each candidate dataset. */
3687
+ dataset?: string;
3688
+ assert: ReportPredicate;
3689
+ when?: ReportPredicate;
3690
+ field?: string;
3691
+ severity?: "error" | "warning";
3692
+ message: string;
3693
+ scope?: "row" | "dataset";
3694
+ /** Dataset-scope assertions read this explicit summary row, never an arbitrary detail row. */
3695
+ aggregates?: readonly AggregateDefinition[];
3696
+ }
3135
3697
  /** Optional business explanations never replace raw data or schema validation. */
3136
3698
  declare type ReportValueState = "missing-source" | "not-applicable" | "not-calculable";
3137
3699
  /** Optional business explanations never replace raw data or schema validation. */
@@ -3139,10 +3701,14 @@ declare type ReportValueState_2 = "missing-source" | "not-applicable" | "not-cal
3139
3701
  /** 新消息保持可选,旧的完整文案对象也能获得新增能力的默认文案。 */
3140
3702
  export declare function resolveCalculationMessages(messages: Partial<ReportCalculationMessages>): ReportCalculationMessages;
3141
3703
  export declare function resolveConfig(config: MachReportConfig | null | undefined, presetName?: string): ResolvedConfig;
3704
+ /** Optional message additions preserve complete message objects supplied by older consumers. */
3705
+ export declare function resolveDataReviewMessages(messages: Partial<ReportDataReviewMessages>): ReportDataReviewMessages;
3142
3706
  export declare type ResolvedConfig = Required<Pick<MachReportDefaults, "showExport" | "showPrint" | "showPdfWindow" | "showSettings" | "showParams" | "gapPx">> & {
3143
3707
  exportExecution?: ReportExportExecutionOptions;
3144
3708
  drill?: ReportDrillOptions;
3145
3709
  loadParamOptions?: ReportParamOptionsLoader;
3710
+ prefill?: ReportPrefillReviewOptions | false;
3711
+ dataComparison?: ReportDataComparisonReviewOptions | false;
3146
3712
  pdfFontUrl: string;
3147
3713
  theme: MachReportTheme;
3148
3714
  messages: MachReportMessages;
@@ -3206,37 +3772,19 @@ export declare const SILENT_LOGGER: MachReportLogger;
3206
3772
  export declare function snapshotPrintOptions(options?: ReportPrintOptions): ReportPrintOptions;
3207
3773
  /** 条件格式规则求值(声明式,见 ListColumn.rules) */
3208
3774
  declare interface StyleRule {
3209
- when: {
3210
- field: string;
3211
- op: ">" | ">=" | "<" | "<=" | "==" | "!=";
3212
- value: number | string;
3213
- /** Explicit decimal comparisons retain decimal thresholds as text. */
3214
- numeric?: "number" | "decimal";
3215
- };
3775
+ when: ReportPredicate;
3216
3776
  /** 命中时合并进单元格样式(color/bold/backgroundColor 等) */
3217
3777
  style: Record<string, unknown>;
3218
3778
  }
3219
3779
  /** 条件格式规则求值(声明式,见 ListColumn.rules) */
3220
3780
  declare interface StyleRule_2 {
3221
- when: {
3222
- field: string;
3223
- op: ">" | ">=" | "<" | "<=" | "==" | "!=";
3224
- value: number | string;
3225
- /** Explicit decimal comparisons retain decimal thresholds as text. */
3226
- numeric?: "number" | "decimal";
3227
- };
3781
+ when: ReportPredicate_2;
3228
3782
  /** 命中时合并进单元格样式(color/bold/backgroundColor 等) */
3229
3783
  style: Record<string, unknown>;
3230
3784
  }
3231
3785
  /** 条件格式规则求值(声明式,见 ListColumn.rules) */
3232
3786
  declare interface StyleRule_3 {
3233
- when: {
3234
- field: string;
3235
- op: ">" | ">=" | "<" | "<=" | "==" | "!=";
3236
- value: number | string;
3237
- /** Explicit decimal comparisons retain decimal thresholds as text. */
3238
- numeric?: "number" | "decimal";
3239
- };
3787
+ when: ReportPredicate_3;
3240
3788
  /** 命中时合并进单元格样式(color/bold/backgroundColor 等) */
3241
3789
  style: Record<string, unknown>;
3242
3790
  }
@@ -3372,7 +3920,7 @@ export declare function useMachReport(): MachReportHandle;
3372
3920
  /** 组件内部读取当前生效配置层(未提供时返回 null → 走内置缺省) */
3373
3921
  export declare function useMachReportConfig(): ConfigRef;
3374
3922
  /** 页级虚拟化;页几何按计划引用缓存,滚动仅更新坐标,不遍历整个计划。 */
3375
- export declare function usePageWindow(plan: Ref<RenderPlan | null>, zoom: Ref<number>, options?: {
3923
+ export declare function usePageWindow(plan: Ref<RenderPlan_2 | null>, zoom: Ref<number>, options?: {
3376
3924
  pxPerMm?: number;
3377
3925
  gapPx?: number | Ref<number>;
3378
3926
  overscan?: number | Ref<number>;
@@ -3383,7 +3931,7 @@ export declare function usePageWindow(plan: Ref<RenderPlan | null>, zoom: Ref<nu
3383
3931
  }>;
3384
3932
  windowRange: ComputedRef<PageWindow>;
3385
3933
  visiblePages: ComputedRef<{
3386
- page: PlanPage;
3934
+ page: PlanPage_2;
3387
3935
  index: number;
3388
3936
  }[]>;
3389
3937
  makeScrollHandler: (currentPage: Ref<number>, pageCount: Ref<number>) => (vp: HTMLElement) => void;
@@ -3392,7 +3940,7 @@ export declare function usePageWindow(plan: Ref<RenderPlan | null>, zoom: Ref<nu
3392
3940
  pageOffsetPx: (index: number) => number;
3393
3941
  destroy: () => void;
3394
3942
  };
3395
- export declare function usePrintExport(plan: Ref<RenderPlan | null>, hooks: {
3943
+ export declare function usePrintExport(plan: Ref<RenderPlan_2 | null>, hooks: {
3396
3944
  /** 按导出开始时的配置快照处理,避免输出过程中跟随路由配置变化。 */
3397
3945
  getXlsxOptions?: () => XlsxRenderOptions;
3398
3946
  getPrintOptions?: () => ReportPrintOptions;
@@ -3404,6 +3952,8 @@ export declare function usePrintExport(plan: Ref<RenderPlan | null>, hooks: {
3404
3952
  encoding?: PreviewEncoding;
3405
3953
  onError: (message: string, code?: string) => void;
3406
3954
  onWarning?: (message: string) => void;
3955
+ /** Informational output semantics, separate from fidelity failures. */
3956
+ onNote?: (message: string) => void;
3407
3957
  onBusy?: (format: string | null) => void;
3408
3958
  onPrinting?: (printing: boolean) => void;
3409
3959
  onTask?: (task: Readonly<ReportPreviewTask>) => void;
@@ -3469,6 +4019,8 @@ declare interface XlsxRenderOptions extends AssetRenderOptions_2, XlsxImageOptio
3469
4019
  sheetMode?: "auto" | "pages" | "continuous";
3470
4020
  /** 宽表或连续表默认 raw,其余默认 text;显式配置可覆盖默认值。 */
3471
4021
  valueMode?: "text" | "raw";
4022
+ /** Static data-bar drawing budget; fail explicitly rather than omitting bars. Default 10,000. */
4023
+ maxDataBars?: number;
3472
4024
  /** 连续表默认不限制打印纸型;显式 A3/A4/A5 仅设置打印适配,不改变 Excel 列宽。 */
3473
4025
  paperSize?: "auto" | "a3" | "a4" | "a5";
3474
4026
  }