@agile-team/mach-report 2.16.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 (177) hide show
  1. package/README.md +25 -12
  2. package/dist/{ExcelBindingWizard-CP6h2x1f.cjs → ExcelBindingWizard-Czn3C2yE.cjs} +1 -1
  3. package/dist/{ExcelBindingWizard-HhB3hAJE.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-ruxcbfY6.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-DcwrH-63.js → ReportTemplateLibrary-BFjB08Wu.js} +1 -1
  13. package/dist/{ReportTemplateLibrary-BDlNT8JN.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-CGrT5DFN.cjs → TemplateOutlinePanel-B0XX350V.cjs} +1 -1
  17. package/dist/{TemplateOutlinePanel-SXCjaPKR.js → TemplateOutlinePanel-zG0DrsIB.js} +2 -2
  18. package/dist/{TemplateReusePanel-6Z3wRFz8.cjs → TemplateReusePanel-BD0HSKp_.cjs} +1 -1
  19. package/dist/{TemplateReusePanel-lHLOS9Wn.js → TemplateReusePanel-Czwe5GbC.js} +2 -2
  20. package/dist/{TemplateReviewPanel-Dpk7sLcF.cjs → TemplateReviewPanel-CA5sdffM.cjs} +1 -1
  21. package/dist/{TemplateReviewPanel-CJ9PLc48.js → TemplateReviewPanel-NhmQI65C.js} +2 -2
  22. package/dist/analytics.cjs +1 -1
  23. package/dist/analytics.d.cts +163 -42
  24. package/dist/analytics.d.ts +163 -42
  25. package/dist/analytics.js +76 -141
  26. package/dist/artifact-integrity.json +110 -108
  27. package/dist/assets-2eC3mOcV.js +232 -0
  28. package/dist/assets-B0Hxn4l6.cjs +1 -0
  29. package/dist/{auto-uVBjX1j5.cjs → auto-B0EZFIK1.cjs} +1 -1
  30. package/dist/{auto-YR7a4BtF.js → auto-BlchZ1b8.js} +10 -10
  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/dataset-DL83majE.js +161 -0
  48. package/dist/dataset-IrlXbUvh.cjs +1 -0
  49. package/dist/designer--TKECSEc.cjs +2 -0
  50. package/dist/designer-d6hJS41w.js +5683 -0
  51. package/dist/designer.cjs +1 -1
  52. package/dist/designer.d.cts +835 -45
  53. package/dist/designer.d.ts +835 -45
  54. package/dist/designer.js +23 -20
  55. package/dist/{encoding-BYF9ZTl9.cjs → encoding-B--eZpp1.cjs} +1 -1
  56. package/dist/{encoding-BOGq4qYL.js → encoding-mctOLocI.js} +2 -2
  57. package/dist/{font-loader-EKLzOJxf.cjs → font-loader-DBBJ5KE9.cjs} +1 -1
  58. package/dist/{font-loader-CzI1GuBc.js → font-loader-DW8tIaNp.js} +1 -1
  59. package/dist/index-CPh6tqge.js +1575 -0
  60. package/dist/index-CUNw7dL9.cjs +1 -0
  61. package/dist/index.cjs +8 -8
  62. package/dist/index.d.cts +534 -16
  63. package/dist/index.d.ts +534 -16
  64. package/dist/index.js +1393 -955
  65. package/dist/json-snapshot-By4ZVVUt.js +1967 -0
  66. package/dist/json-snapshot-jiXff4lc.cjs +2 -0
  67. package/dist/matrix-0hywp0-F.cjs +1 -0
  68. package/dist/matrix-Dy-tyY7E.js +381 -0
  69. package/dist/param-validation-C-8sRJLq.cjs +1 -0
  70. package/dist/param-validation-CnDEd2l-.js +333 -0
  71. package/dist/{pdf-DJ5S6ukC.js → pdf-CKROKygt.js} +1845 -1845
  72. package/dist/{pdf-ByVCb1i6.cjs → pdf-DqyxJ96U.cjs} +47 -47
  73. package/dist/pdf.cjs +1 -1
  74. package/dist/pdf.d.cts +66 -0
  75. package/dist/pdf.d.ts +66 -0
  76. package/dist/pdf.js +2 -2
  77. package/dist/{plugin-C2j5_mhx.js → plugin-ByjF2kiV.js} +5 -5
  78. package/dist/{plugin-Dr39GBRG.cjs → plugin-DM1M2wlI.cjs} +1 -1
  79. package/dist/prefill-B8H9qwE4.js +371 -0
  80. package/dist/prefill-D7EswyTI.cjs +1 -0
  81. package/dist/{prepared-DqtpvRTn.js → prepared-BE-4jfX5.js} +2 -2
  82. package/dist/{prepared-DdrjLC7L.cjs → prepared-CGVphji3.cjs} +1 -1
  83. package/dist/{protocol-BzwMP4Vw.cjs → protocol-ByRVzzQG.cjs} +1 -1
  84. package/dist/{protocol-kt4Iy6-3.js → protocol-Cr81vFSQ.js} +3 -3
  85. package/dist/{record-bindings-CZWBJ1fU.js → record-bindings-DEJtmo3p.js} +67 -107
  86. package/dist/record-bindings-ehjnCDHt.cjs +1 -0
  87. package/dist/{region-binding-workflow-CWNvIjkV.js → region-binding-workflow-CBg0l_tj.js} +2 -2
  88. package/dist/{region-binding-workflow-CqSMxQ4p.cjs → region-binding-workflow-D05tOYn3.cjs} +1 -1
  89. package/dist/report-encoding-worker.cjs +1 -1
  90. package/dist/report-encoding-worker.js +1 -1
  91. package/dist/{report-params-B1RzkhJj.js → report-params-D9tBuM9B.js} +1 -1
  92. package/dist/{report-params-WDGrA4oP.cjs → report-params-VTg8MoCp.cjs} +1 -1
  93. package/dist/runtime-CDA6d263.cjs +1 -0
  94. package/dist/runtime-CEMvybO7.js +170 -0
  95. package/dist/sbom.cdx.json +1 -1
  96. package/dist/server/node.d.cts +121 -7
  97. package/dist/server/node.d.ts +121 -7
  98. package/dist/server-node.cjs +4 -4
  99. package/dist/server-node.js +3446 -2115
  100. package/dist/server.cjs +1 -1
  101. package/dist/server.d.cts +417 -29
  102. package/dist/server.d.ts +417 -29
  103. package/dist/server.js +787 -544
  104. package/dist/sha256-BDQ1Qk7A.js +158 -0
  105. package/dist/sha256-DgZAKXqI.cjs +1 -0
  106. package/dist/style.css +1 -1
  107. package/dist/template-bindings-Cg5oBLFT.cjs +1 -0
  108. package/dist/template-bindings-TKnXM7ll.js +62 -0
  109. package/dist/{template-catalog-BtR2JmCL.js → template-catalog-CmbWOJqy.js} +16 -16
  110. package/dist/template-catalog-Utu4GP09.cjs +1 -0
  111. package/dist/{template-fragments-BVsbxs4a.cjs → template-fragments-C_zSHJAa.cjs} +1 -1
  112. package/dist/{template-fragments-By0aZC1D.js → template-fragments-DWgo9tlZ.js} +2 -2
  113. package/dist/{template-outline-BwRV_eRo.cjs → template-outline-DWkzZXVC.cjs} +1 -1
  114. package/dist/{template-outline-cnWfT_LK.js → template-outline-DiADphlq.js} +1 -1
  115. package/dist/{template-registry-Cw3vRTX2.js → template-registry-BIhIHOab.js} +319 -314
  116. package/dist/template-registry-DzWswQI5.cjs +1 -0
  117. package/dist/vue/async.d.cts +636 -35
  118. package/dist/vue/async.d.ts +636 -35
  119. package/dist/vue/index.d.cts +746 -67
  120. package/dist/vue/index.d.ts +746 -67
  121. package/dist/vue-async.cjs +1 -1
  122. package/dist/vue-async.js +3 -3
  123. package/dist/vue.cjs +1 -1
  124. package/dist/vue.js +94 -89
  125. package/dist/{workbook-session-Cbts-22R.cjs → workbook-session-B94EwVa_.cjs} +1 -1
  126. package/dist/{workbook-session-BeSO8PFB.js → workbook-session-BoScoOg-.js} +2 -2
  127. package/dist/worker.cjs +1 -1
  128. package/dist/worker.d.cts +75 -7
  129. package/dist/worker.d.ts +75 -7
  130. package/dist/worker.js +4 -4
  131. package/dist/xlsx.cjs +4 -4
  132. package/dist/xlsx.d.cts +208 -15
  133. package/dist/xlsx.d.ts +208 -15
  134. package/dist/xlsx.js +288 -252
  135. package/package.json +1 -1
  136. package/dist/ParamEditor-CUQLgoxa.cjs +0 -1
  137. package/dist/ParamEditor-OKesP_nO.js +0 -594
  138. package/dist/ReportBatchPanel-cZCAMAwH.cjs +0 -1
  139. package/dist/ReportPreview-BcDKCLiK.js +0 -4834
  140. package/dist/ReportPreview-Bk9nLfO9.cjs +0 -6
  141. package/dist/RuleEditor-BX5S8RSF.cjs +0 -1
  142. package/dist/RuleEditor-CGl9XY2s.js +0 -2037
  143. package/dist/assets-CqIbfbTr.js +0 -126
  144. package/dist/assets-e4YSke8n.cjs +0 -1
  145. package/dist/capabilities-DDwXr_cA.js +0 -103
  146. package/dist/capabilities-DNLyZdNw.cjs +0 -1
  147. package/dist/component-tree-Ca6YYfHq.js +0 -61
  148. package/dist/component-tree-DkGLEfZC.cjs +0 -1
  149. package/dist/computed-C-4C2S5h.js +0 -521
  150. package/dist/computed-CGV2a809.cjs +0 -1
  151. package/dist/config-Dg_o8e7m.cjs +0 -1
  152. package/dist/config-XQ4qrQ7Q.js +0 -844
  153. package/dist/dataset-BkRmwgeJ.cjs +0 -1
  154. package/dist/dataset-H5pFuQGU.js +0 -121
  155. package/dist/designer-BfQSahxq.js +0 -5163
  156. package/dist/designer-CPPdeM5_.cjs +0 -2
  157. package/dist/diagnostic-notification-B9K9We3h.cjs +0 -1
  158. package/dist/diagnostic-notification-qGAYZdkB.js +0 -7
  159. package/dist/drill-CsdjgkRM.cjs +0 -1
  160. package/dist/drill-DIGsZfyB.js +0 -145
  161. package/dist/json-snapshot-D6ioHth9.js +0 -1702
  162. package/dist/json-snapshot-DknkjvxP.cjs +0 -2
  163. package/dist/matrix-CGRGkn5s.js +0 -112
  164. package/dist/matrix-gEO7ZM_u.cjs +0 -1
  165. package/dist/param-validation-C3HlcLLO.cjs +0 -1
  166. package/dist/param-validation-Do7Eg8Zv.js +0 -181
  167. package/dist/record-bindings-DUX1VMlR.cjs +0 -1
  168. package/dist/runtime-BjKBI530.js +0 -168
  169. package/dist/runtime-CBFEPKEs.cjs +0 -1
  170. package/dist/sha256-BshdOkCC.cjs +0 -1
  171. package/dist/sha256-DTG-Gq8i.js +0 -157
  172. package/dist/template-bindings-C2SpvsMU.js +0 -58
  173. package/dist/template-bindings-CEtWyiLX.cjs +0 -1
  174. package/dist/template-catalog-C2NLdrwB.cjs +0 -1
  175. package/dist/template-registry-C62vpv4a.cjs +0 -1
  176. package/dist/tree-BX380Rr7.cjs +0 -1
  177. package/dist/tree-CjVZLRw7.js +0 -172
@@ -1,6 +1,22 @@
1
1
  import { ComponentOptionsMixin } from 'vue';
2
2
  import { ComputedRef } from 'vue';
3
3
  import { DefineComponent } from 'vue';
4
+ declare type __VLS_Props = {
5
+ modelValue?: ColumnVisual_2;
6
+ fields?: ReadonlyArray<{
7
+ field: string;
8
+ label?: string;
9
+ }>;
10
+ readonly?: boolean;
11
+ messages?: Partial<ColumnVisualMessages>;
12
+ };
13
+ declare type __VLS_Props_2 = {
14
+ component: PlanComponent;
15
+ schemas?: Record<string, DatasetContract>;
16
+ datasets?: DatasetRows;
17
+ disabled?: boolean;
18
+ messages?: Partial<TemplateEditorMessages>;
19
+ };
4
20
  declare interface AggregateDefinition {
5
21
  /** Output column; valueField defaults to this field. */
6
22
  field: string;
@@ -31,6 +47,27 @@ declare interface AggregateDefinition_3 {
31
47
  declare type AggregateOperation = "sum" | "count" | "avg" | "min" | "max" | "weightedAvg";
32
48
  declare type AggregateOperation_2 = "sum" | "count" | "avg" | "min" | "max" | "weightedAvg";
33
49
  declare type AggregateOperation_3 = "sum" | "count" | "avg" | "min" | "max" | "weightedAvg";
50
+ declare interface AggregateRequest {
51
+ op: AggregateOperation;
52
+ field?: string;
53
+ weightField?: string;
54
+ numeric?: "number" | "decimal";
55
+ digits?: number;
56
+ }
57
+ declare interface AggregateRequest_2 {
58
+ op: AggregateOperation_2;
59
+ field?: string;
60
+ weightField?: string;
61
+ numeric?: "number" | "decimal";
62
+ digits?: number;
63
+ }
64
+ declare interface AggregateRequest_3 {
65
+ op: AggregateOperation_3;
66
+ field?: string;
67
+ weightField?: string;
68
+ numeric?: "number" | "decimal";
69
+ digits?: number;
70
+ }
34
71
  declare type AnyExcelBindingDocumentResult = ExcelBindingDocumentResult | ExcelRegionBindingDocumentResult;
35
72
  declare type AnyExcelBindingSession = ExcelBindingSession | ExcelRegionBindingSession;
36
73
  declare interface AssetRenderBudget {
@@ -45,6 +82,8 @@ declare interface AssetRenderBudget {
45
82
  }
46
83
  declare interface AssetRenderOptions extends OutputDiagnosticOptions, ImageMediaOptions {
47
84
  assetRenderers?: Partial<Record<ImageComponentKind, ComponentImageRenderer>>;
85
+ /** Explicit id/version registry; unbound components continue using assetRenderers by kind. */
86
+ assetRegistry?: ComponentAssetRegistry;
48
87
  assetBudget?: AssetRenderBudget;
49
88
  /** Default throw prevents an incomplete export; placeholder retains the component and emits diagnostics. */
50
89
  assetFailure?: "throw" | "placeholder";
@@ -99,6 +138,11 @@ declare interface CanvasSelection {
99
138
  pageIndex: number;
100
139
  componentIndex: number;
101
140
  }
141
+ export declare const ChartBindingInspector: DefineComponent<__VLS_Props_2, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
142
+ change: (binding: ReportChartBinding) => any;
143
+ }, string, MachReportVuePublicProps, Readonly<__VLS_Props_2> & Readonly<{
144
+ onChange?: ((binding: ReportChartBinding) => any) | undefined;
145
+ }>, {}>;
102
146
  /** Serializable symbol settings. Encoders remain in the optional /codes entry. */
103
147
  declare interface CodeOptions {
104
148
  /** Explicit content, including an empty value, takes precedence over legacy fallbackText. */
@@ -132,6 +176,28 @@ declare interface CodeOptions_3 {
132
176
  /** Human-readable content below a linear barcode. */
133
177
  showText?: boolean;
134
178
  }
179
+ export declare const COLUMN_VISUAL_MESSAGES: {
180
+ title: string;
181
+ enabled: string;
182
+ kind: string;
183
+ colorScale: string;
184
+ dataBar: string;
185
+ measure: string;
186
+ ownField: string;
187
+ numeric: string;
188
+ number: string;
189
+ decimal: string;
190
+ autoDomain: string;
191
+ minimum: string;
192
+ maximum: string;
193
+ lowColor: string;
194
+ highColor: string;
195
+ color: string;
196
+ negativeColor: string;
197
+ invalid: string;
198
+ hint: string;
199
+ snapshot: string;
200
+ };
135
201
  /**
136
202
  * 列值格式化(声明式、JSON 可序列化)。
137
203
  * 在 paginate 的 cellText 出口统一消费:格式化发生在进 RenderPlan 之前,
@@ -198,6 +264,64 @@ declare type ColumnFormat_3 = {
198
264
  kind: "date";
199
265
  pattern?: string;
200
266
  };
267
+ declare type ColumnVisual = {
268
+ /** Defaults to the column field; never changes the cell's raw value or business identity. */
269
+ field?: string;
270
+ /** Numeric text requires explicit opt-in; formatting an identifier does not turn it into a measure. */
271
+ numeric?: "number" | "decimal";
272
+ min?: number;
273
+ max?: number;
274
+ } & ({
275
+ kind: "colorScale";
276
+ lowColor?: string;
277
+ highColor?: string;
278
+ } | {
279
+ kind: "dataBar";
280
+ color?: string;
281
+ negativeColor?: string;
282
+ });
283
+ declare type ColumnVisual_2 = {
284
+ /** Defaults to the column field; never changes the cell's raw value or business identity. */
285
+ field?: string;
286
+ /** Numeric text requires explicit opt-in; formatting an identifier does not turn it into a measure. */
287
+ numeric?: "number" | "decimal";
288
+ min?: number;
289
+ max?: number;
290
+ } & ({
291
+ kind: "colorScale";
292
+ lowColor?: string;
293
+ highColor?: string;
294
+ } | {
295
+ kind: "dataBar";
296
+ color?: string;
297
+ negativeColor?: string;
298
+ });
299
+ declare type ColumnVisual_3 = {
300
+ /** Defaults to the column field; never changes the cell's raw value or business identity. */
301
+ field?: string;
302
+ /** Numeric text requires explicit opt-in; formatting an identifier does not turn it into a measure. */
303
+ numeric?: "number" | "decimal";
304
+ min?: number;
305
+ max?: number;
306
+ } & ({
307
+ kind: "colorScale";
308
+ lowColor?: string;
309
+ highColor?: string;
310
+ } | {
311
+ kind: "dataBar";
312
+ color?: string;
313
+ negativeColor?: string;
314
+ });
315
+ export declare const ColumnVisualEditor: DefineComponent<__VLS_Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
316
+ "update:modelValue": (visual: ColumnVisual_2 | undefined) => any;
317
+ }, string, MachReportVuePublicProps, Readonly<__VLS_Props> & Readonly<{
318
+ "onUpdate:modelValue"?: ((visual: ColumnVisual_2 | undefined) => any) | undefined;
319
+ }>, {}>;
320
+ export declare type ColumnVisualMessages = typeof COLUMN_VISUAL_MESSAGES;
321
+ declare interface ComponentAssetRegistry {
322
+ rendererFor(component: Readonly<PlanComponent>): ComponentImageRenderer | undefined;
323
+ hasExtension(id: string, version: string, kind: string): boolean;
324
+ }
201
325
  /** A literal own field of the current label record; expressions and paths are not evaluated. */
202
326
  declare interface ComponentBinding {
203
327
  field: string;
@@ -662,7 +786,21 @@ declare interface ExpressionOptions_3 {
662
786
  nulls?: "propagate" | "error";
663
787
  divisionByZero?: "null" | "error";
664
788
  }
789
+ declare interface FormulaAdapter {
790
+ /** Explicit trusted engine; core never evaluates source code/macros/external workbook references. */
791
+ evaluate(expression: string, context: {
792
+ row: Readonly<Record<string, unknown>>;
793
+ rowIndex: number;
794
+ rows: readonly Record<string, unknown>[];
795
+ }): unknown;
796
+ }
665
797
  declare interface GridCell {
798
+ /** Resolved visual only. Original value, text, editability and source are unchanged. */
799
+ dataBar?: {
800
+ start: number;
801
+ end: number;
802
+ color: string;
803
+ };
666
804
  /** Styled cell content; text remains a plain-text fallback. Imported rich cells are read-only. */
667
805
  richParagraphs?: RichParagraph[];
668
806
  text?: string;
@@ -688,6 +826,12 @@ declare interface GridCell {
688
826
  style?: ComponentStyle;
689
827
  }
690
828
  declare interface GridCell_2 {
829
+ /** Resolved visual only. Original value, text, editability and source are unchanged. */
830
+ dataBar?: {
831
+ start: number;
832
+ end: number;
833
+ color: string;
834
+ };
691
835
  /** Styled cell content; text remains a plain-text fallback. Imported rich cells are read-only. */
692
836
  richParagraphs?: RichParagraph_2[];
693
837
  text?: string;
@@ -713,6 +857,12 @@ declare interface GridCell_2 {
713
857
  style?: ComponentStyle_2;
714
858
  }
715
859
  declare interface GridCell_3 {
860
+ /** Resolved visual only. Original value, text, editability and source are unchanged. */
861
+ dataBar?: {
862
+ start: number;
863
+ end: number;
864
+ color: string;
865
+ };
716
866
  /** Styled cell content; text remains a plain-text fallback. Imported rich cells are read-only. */
717
867
  richParagraphs?: RichParagraph_3[];
718
868
  text?: string;
@@ -771,6 +921,8 @@ declare interface ListColumn {
771
921
  format?: ColumnFormat;
772
922
  /** 条件格式规则(声明式,命中合并进单元格样式;如负数红字) */
773
923
  rules?: StyleRule[];
924
+ /** Optional resolved color scale or value-preserving data bar. */
925
+ visual?: ColumnVisual;
774
926
  /** 内容列编辑控制;仍需由预览显式开启 editing,不影响表头/小计只读规则。 */
775
927
  editable?: boolean;
776
928
  /** 空值列或特殊数据类型可显式声明编辑输入类型。 */
@@ -796,6 +948,8 @@ declare interface ListColumn_2 {
796
948
  format?: ColumnFormat_2;
797
949
  /** 条件格式规则(声明式,命中合并进单元格样式;如负数红字) */
798
950
  rules?: StyleRule_2[];
951
+ /** Optional resolved color scale or value-preserving data bar. */
952
+ visual?: ColumnVisual_2;
799
953
  /** 内容列编辑控制;仍需由预览显式开启 editing,不影响表头/小计只读规则。 */
800
954
  editable?: boolean;
801
955
  /** 空值列或特殊数据类型可显式声明编辑输入类型。 */
@@ -821,6 +975,8 @@ declare interface ListColumn_3 {
821
975
  format?: ColumnFormat_3;
822
976
  /** 条件格式规则(声明式,命中合并进单元格样式;如负数红字) */
823
977
  rules?: StyleRule_3[];
978
+ /** Optional resolved color scale or value-preserving data bar. */
979
+ visual?: ColumnVisual_3;
824
980
  /** 内容列编辑控制;仍需由预览显式开启 editing,不影响表头/小计只读规则。 */
825
981
  editable?: boolean;
826
982
  /** 空值列或特殊数据类型可显式声明编辑输入类型。 */
@@ -1140,6 +1296,10 @@ declare interface MachReportDefaults {
1140
1296
  xlsx?: XlsxRenderOptions;
1141
1297
  /** 默认关闭;true 为本地草稿,对象可提供权限、校验和保存回调。 */
1142
1298
  editable?: boolean | ReportEditingOptions;
1299
+ /** Optional reference-data loader; review and atomic editing are maintained inside the package. */
1300
+ prefill?: ReportPrefillReviewOptions | false;
1301
+ /** Compare a reference with the same query result rendered in the report. */
1302
+ dataComparison?: ReportDataComparisonReviewOptions | false;
1143
1303
  /** 默认关闭;启用后提供导入按钮。ExcelJS 仅在导入时加载。 */
1144
1304
  excelImport?: boolean | ExcelImportOptions;
1145
1305
  }
@@ -1152,7 +1312,14 @@ declare type MachReportLogger = Pick<Console, "warn" | "info">;
1152
1312
  * - 优先级:组件 props > 路由级叠加 > preset > defaults(props 永远最高)
1153
1313
  */
1154
1314
  /** 工具栏与状态文案(默认简体中文;出海场景覆写) */
1155
- declare interface MachReportMessages extends Partial<ReportCalculationMessages>, ReportPrintMessages, ReportParamOptionsMessages {
1315
+ declare interface MachReportMessages extends Partial<ReportCalculationMessages>, Partial<ReportDataReviewMessages>, ReportPrintMessages, ReportParamOptionsMessages {
1316
+ reviewTools?: string;
1317
+ validationTitle?: string;
1318
+ validationError?: string;
1319
+ validationWarning?: string;
1320
+ validationDataset?: string;
1321
+ validationRow?: string;
1322
+ validationMore?: string;
1156
1323
  drillActions?: string;
1157
1324
  drillOpening?: string;
1158
1325
  drillMissingValue?: string;
@@ -1331,7 +1498,14 @@ declare interface MachReportMessages extends Partial<ReportCalculationMessages>,
1331
1498
  * - 优先级:组件 props > 路由级叠加 > preset > defaults(props 永远最高)
1332
1499
  */
1333
1500
  /** 工具栏与状态文案(默认简体中文;出海场景覆写) */
1334
- declare interface MachReportMessages_2 extends Partial<ReportCalculationMessages_2>, ReportPrintMessages_2, ReportParamOptionsMessages_2 {
1501
+ declare interface MachReportMessages_2 extends Partial<ReportCalculationMessages_2>, Partial<ReportDataReviewMessages_2>, ReportPrintMessages_2, ReportParamOptionsMessages_2 {
1502
+ reviewTools?: string;
1503
+ validationTitle?: string;
1504
+ validationError?: string;
1505
+ validationWarning?: string;
1506
+ validationDataset?: string;
1507
+ validationRow?: string;
1508
+ validationMore?: string;
1335
1509
  drillActions?: string;
1336
1510
  drillOpening?: string;
1337
1511
  drillMissingValue?: string;
@@ -1536,6 +1710,57 @@ declare interface MachReportToolbarOptions {
1536
1710
  /** 未传时显示全部已有出口;空数组表示不提供导出工具。 */
1537
1711
  exportFormats?: ReportExportFormat[];
1538
1712
  }
1713
+ declare interface MatrixAxisOptions {
1714
+ /** Display names in the same outer-to-inner order as the dimension fields. */
1715
+ labels?: readonly string[];
1716
+ /** Per-level sibling order; omitted levels retain first-seen order. */
1717
+ sort?: readonly MatrixDimensionOrder[];
1718
+ /** One-based prefix depths. Leaf depths are not subtotals. */
1719
+ subtotals?: readonly number[];
1720
+ }
1721
+ declare interface MatrixAxisOptions_2 {
1722
+ /** Display names in the same outer-to-inner order as the dimension fields. */
1723
+ labels?: readonly string[];
1724
+ /** Per-level sibling order; omitted levels retain first-seen order. */
1725
+ sort?: readonly MatrixDimensionOrder_2[];
1726
+ /** One-based prefix depths. Leaf depths are not subtotals. */
1727
+ subtotals?: readonly number[];
1728
+ }
1729
+ declare interface MatrixAxisOptions_3 {
1730
+ /** Display names in the same outer-to-inner order as the dimension fields. */
1731
+ labels?: readonly string[];
1732
+ /** Per-level sibling order; omitted levels retain first-seen order. */
1733
+ sort?: readonly MatrixDimensionOrder_3[];
1734
+ /** One-based prefix depths. Leaf depths are not subtotals. */
1735
+ subtotals?: readonly number[];
1736
+ }
1737
+ declare type MatrixDimensionOrder = "source" | "asc" | "desc";
1738
+ declare type MatrixDimensionOrder_2 = "source" | "asc" | "desc";
1739
+ declare type MatrixDimensionOrder_3 = "source" | "asc" | "desc";
1740
+ declare interface MatrixHierarchyOptions {
1741
+ row?: MatrixAxisOptions;
1742
+ column?: MatrixAxisOptions;
1743
+ /** Only null/missing values use this label; empty strings and zero stay distinct. */
1744
+ emptyLabel?: string;
1745
+ subtotalLabel?: string;
1746
+ totalLabel?: string;
1747
+ }
1748
+ declare interface MatrixHierarchyOptions_2 {
1749
+ row?: MatrixAxisOptions_2;
1750
+ column?: MatrixAxisOptions_2;
1751
+ /** Only null/missing values use this label; empty strings and zero stay distinct. */
1752
+ emptyLabel?: string;
1753
+ subtotalLabel?: string;
1754
+ totalLabel?: string;
1755
+ }
1756
+ declare interface MatrixHierarchyOptions_3 {
1757
+ row?: MatrixAxisOptions_3;
1758
+ column?: MatrixAxisOptions_3;
1759
+ /** Only null/missing values use this label; empty strings and zero stay distinct. */
1760
+ emptyLabel?: string;
1761
+ subtotalLabel?: string;
1762
+ totalLabel?: string;
1763
+ }
1539
1764
  declare interface MatrixTableOptions {
1540
1765
  rowFields: readonly string[];
1541
1766
  columnFields: readonly string[];
@@ -1550,6 +1775,10 @@ declare interface MatrixTableOptions {
1550
1775
  maxColumns?: number;
1551
1776
  maxInputRows?: number;
1552
1777
  maxCells?: number;
1778
+ /** Opt-in hierarchical dimensions, physical merged headers and prefix subtotals. */
1779
+ hierarchy?: MatrixHierarchyOptions;
1780
+ /** Hierarchical aggregate work, checked before measure reads; default 10 million updates. */
1781
+ maxAggregateUpdates?: number;
1553
1782
  }
1554
1783
  declare interface MatrixTableOptions_2 {
1555
1784
  rowFields: readonly string[];
@@ -1565,6 +1794,10 @@ declare interface MatrixTableOptions_2 {
1565
1794
  maxColumns?: number;
1566
1795
  maxInputRows?: number;
1567
1796
  maxCells?: number;
1797
+ /** Opt-in hierarchical dimensions, physical merged headers and prefix subtotals. */
1798
+ hierarchy?: MatrixHierarchyOptions_2;
1799
+ /** Hierarchical aggregate work, checked before measure reads; default 10 million updates. */
1800
+ maxAggregateUpdates?: number;
1568
1801
  }
1569
1802
  declare interface MatrixTableOptions_3 {
1570
1803
  rowFields: readonly string[];
@@ -1580,6 +1813,10 @@ declare interface MatrixTableOptions_3 {
1580
1813
  maxColumns?: number;
1581
1814
  maxInputRows?: number;
1582
1815
  maxCells?: number;
1816
+ /** Opt-in hierarchical dimensions, physical merged headers and prefix subtotals. */
1817
+ hierarchy?: MatrixHierarchyOptions_3;
1818
+ /** Hierarchical aggregate work, checked before measure reads; default 10 million updates. */
1819
+ maxAggregateUpdates?: number;
1583
1820
  }
1584
1821
  declare interface OutputDiagnostic {
1585
1822
  code: "invalid-image-data" | "image-budget-exceeded" | "component-render-failed" | "unsupported-text" | "output-degraded" | "missing-image" | "unsupported-component" | "unsupported-image-format" | "unsupported-style" | "rich-text-flattened" | "nested-components-omitted" | "async-image-required" | "image-decode-failed" | "asset-render-failed" | "asset-budget-exceeded";
@@ -1591,6 +1828,11 @@ declare interface OutputDiagnostic {
1591
1828
  componentPath?: readonly number[];
1592
1829
  kind: string;
1593
1830
  nid?: string;
1831
+ /** Declarative extension identity only; no property values or business binding data enter diagnostics. */
1832
+ extension?: {
1833
+ id: string;
1834
+ version: string;
1835
+ };
1594
1836
  message: string;
1595
1837
  }
1596
1838
  declare interface OutputDiagnostic_2 {
@@ -1603,6 +1845,11 @@ declare interface OutputDiagnostic_2 {
1603
1845
  componentPath?: readonly number[];
1604
1846
  kind: string;
1605
1847
  nid?: string;
1848
+ /** Declarative extension identity only; no property values or business binding data enter diagnostics. */
1849
+ extension?: {
1850
+ id: string;
1851
+ version: string;
1852
+ };
1606
1853
  message: string;
1607
1854
  }
1608
1855
  declare interface OutputDiagnosticOptions extends OutputTaskOptions {
@@ -1682,6 +1929,13 @@ export declare const PARAM_EDITOR_MESSAGES: {
1682
1929
  paramYear: string;
1683
1930
  paramDateRange: string;
1684
1931
  paramSelect: string;
1932
+ paramMultiSelect: string;
1933
+ paramCascader: string;
1934
+ paramNumberRange: string;
1935
+ paramMinItems: string;
1936
+ paramMaxItems: string;
1937
+ paramChildAdd: string;
1938
+ paramTreeHint: string;
1685
1939
  };
1686
1940
  export declare const ParamEditor: DefineComponent<ParamEditorOptions, {
1687
1941
  pending: ComputedRef<boolean>;
@@ -1698,10 +1952,14 @@ export declare interface ParamEditorOptions {
1698
1952
  document: ReportTemplateDocument;
1699
1953
  readonly?: boolean;
1700
1954
  messages?: Partial<ParamEditorMessages>;
1955
+ /** Reuses the same trusted option resolver used by ReportPreview. */
1956
+ loadOptions?: ReportParamOptionsLoader_2;
1701
1957
  /** Return false when the enclosing template transaction rejects the change. */
1702
1958
  accept(definitions: ReportParamDef[]): boolean;
1703
1959
  }
1704
1960
  declare interface PlanComponent {
1961
+ /** Template-only aggregate binding, expanded into shared primitives during layout. */
1962
+ chartBinding?: ReportChartBinding;
1705
1963
  /** Optional QR/barcode encoding configuration; no encoder is loaded by the core. */
1706
1964
  code?: CodeOptions;
1707
1965
  /** Template-only binding; resolved and removed before constructing the output plan. */
@@ -1730,6 +1988,8 @@ declare interface PlanComponent {
1730
1988
  fallbackText?: string;
1731
1989
  }
1732
1990
  declare interface PlanComponent_2 {
1991
+ /** Template-only aggregate binding, expanded into shared primitives during layout. */
1992
+ chartBinding?: ReportChartBinding_2;
1733
1993
  /** Optional QR/barcode encoding configuration; no encoder is loaded by the core. */
1734
1994
  code?: CodeOptions_2;
1735
1995
  /** Template-only binding; resolved and removed before constructing the output plan. */
@@ -1758,6 +2018,8 @@ declare interface PlanComponent_2 {
1758
2018
  fallbackText?: string;
1759
2019
  }
1760
2020
  declare interface PlanComponent_3 {
2021
+ /** Template-only aggregate binding, expanded into shared primitives during layout. */
2022
+ chartBinding?: ReportChartBinding_3;
1761
2023
  /** Optional QR/barcode encoding configuration; no encoder is loaded by the core. */
1762
2024
  code?: CodeOptions_3;
1763
2025
  /** Template-only binding; resolved and removed before constructing the output plan. */
@@ -1812,6 +2074,18 @@ declare interface PlanGrid_3 {
1812
2074
  /** 单元格四边内距;旧静态网格默认 0.5mm,分页列表使用其真实测量内距。 */
1813
2075
  paddingMm?: number;
1814
2076
  }
2077
+ declare interface PlanPage {
2078
+ meta?: Record<string, unknown>;
2079
+ /** wide 表示完整自然列宽;页面仅为预览的垂直窗口分段。 */
2080
+ layout?: "page" | "wide";
2081
+ pageWidthMm: number;
2082
+ pageHeightMm: number;
2083
+ marginTopMm?: number;
2084
+ marginBottomMm?: number;
2085
+ marginLeftMm?: number;
2086
+ marginRightMm?: number;
2087
+ components: PlanComponent[];
2088
+ }
1815
2089
  /** 列表的逻辑行来源;用于连续 Excel 重组,避免按文本猜测重复表头。 */
1816
2090
  declare interface PlanTableFragment {
1817
2091
  /** 在整个计划中唯一的逻辑表身份;同一表的分页片段共享身份。 */
@@ -1861,6 +2135,37 @@ declare interface PlanTableFragment_3 {
1861
2135
  };
1862
2136
  }
1863
2137
  declare const PRODUCT_TEMPLATE_EDITOR_MESSAGES: {
2138
+ chartNumeric: string;
2139
+ chartNumber: string;
2140
+ chartDecimal: string;
2141
+ chartDigits: string;
2142
+ chartWeight: string;
2143
+ chartWeightedAverage: string;
2144
+ chartNumberOptions: string;
2145
+ chartStacked: string;
2146
+ chartPercent: string;
2147
+ chartDataset: string;
2148
+ chartCategory: string;
2149
+ chartMeasure: string;
2150
+ chartAggregation: string;
2151
+ chartSeries: string;
2152
+ chartAddSeries: string;
2153
+ chartRemoveSeries: string;
2154
+ chartRecordCount: string;
2155
+ chartSum: string;
2156
+ chartAverage: string;
2157
+ chartMinimum: string;
2158
+ chartMaximum: string;
2159
+ chartType: string;
2160
+ chartBar: string;
2161
+ chartLine: string;
2162
+ chartSort: string;
2163
+ chartNatural: string;
2164
+ chartAscending: string;
2165
+ chartDescending: string;
2166
+ chartTitle: string;
2167
+ chartValues: string;
2168
+ chartBindingNote: string;
1864
2169
  toolTarget: string;
1865
2170
  toolPreview: string;
1866
2171
  toolPreviewHide: string;
@@ -2056,6 +2361,12 @@ declare const PRODUCT_TEMPLATE_EDITOR_MESSAGES: {
2056
2361
  fieldPosition: string;
2057
2362
  previewFieldDirectory: string;
2058
2363
  };
2364
+ declare interface RenderPlan {
2365
+ schemaVersion: string;
2366
+ /** 编辑需要模板重算上下文;跨 Worker/JSON 保留要求,但不声明本地会话可用。 */
2367
+ requiresRecalculation?: boolean;
2368
+ pages: PlanPage[];
2369
+ }
2059
2370
  export declare const REPORT_BATCH_MESSAGES: {
2060
2371
  batchTitle: string;
2061
2372
  batchDescription: string;
@@ -2184,6 +2495,10 @@ declare interface ReportCalculationMessages_2 {
2184
2495
  calculationErrorOverflow: string;
2185
2496
  calculationErrorPrecision: string;
2186
2497
  }
2498
+ declare interface ReportCandidateValidationOptions extends Pick<ReportDatasetValidationOptions, "rules" | "maxChecks" | "maxIssues"> {
2499
+ /** Warnings are visible and allowed by default; block explicitly when required by business policy. */
2500
+ warningPolicy?: "allow" | "block";
2501
+ }
2187
2502
  /** 预览中的物理坐标;合并单元格使用左上角坐标。 */
2188
2503
  declare interface ReportCellAddress {
2189
2504
  pageIndex: number;
@@ -2283,6 +2598,268 @@ declare interface ReportCellTableIdentity {
2283
2598
  }
2284
2599
  declare type ReportCellValue = string | number | boolean | null;
2285
2600
  declare type ReportCellValueType = NonNullable<GridCell["valueType"]>;
2601
+ /** Serializable binding; data and authorization continue to come from the existing report source. */
2602
+ declare interface ReportChartBinding {
2603
+ dataset: string;
2604
+ categoryField: string;
2605
+ measures: readonly ReportChartMeasure[];
2606
+ type: ReportChartOptions["type"];
2607
+ sort?: "asc" | "desc";
2608
+ title?: string;
2609
+ showValues?: boolean;
2610
+ maxRows?: number;
2611
+ maxCategories?: number;
2612
+ }
2613
+ /** Serializable binding; data and authorization continue to come from the existing report source. */
2614
+ declare interface ReportChartBinding_2 {
2615
+ dataset: string;
2616
+ categoryField: string;
2617
+ measures: readonly ReportChartMeasure_2[];
2618
+ type: ReportChartOptions_2["type"];
2619
+ sort?: "asc" | "desc";
2620
+ title?: string;
2621
+ showValues?: boolean;
2622
+ maxRows?: number;
2623
+ maxCategories?: number;
2624
+ }
2625
+ /** Serializable binding; data and authorization continue to come from the existing report source. */
2626
+ declare interface ReportChartBinding_3 {
2627
+ dataset: string;
2628
+ categoryField: string;
2629
+ measures: readonly ReportChartMeasure_3[];
2630
+ type: ReportChartOptions_3["type"];
2631
+ sort?: "asc" | "desc";
2632
+ title?: string;
2633
+ showValues?: boolean;
2634
+ maxRows?: number;
2635
+ maxCategories?: number;
2636
+ }
2637
+ declare interface ReportChartMeasure extends AggregateRequest {
2638
+ label?: string;
2639
+ color?: string;
2640
+ }
2641
+ declare interface ReportChartMeasure_2 extends AggregateRequest_2 {
2642
+ label?: string;
2643
+ color?: string;
2644
+ }
2645
+ declare interface ReportChartMeasure_3 extends AggregateRequest_3 {
2646
+ label?: string;
2647
+ color?: string;
2648
+ }
2649
+ declare interface ReportChartOptions {
2650
+ type: "bar" | "line" | "stackedBar" | "percentBar";
2651
+ categories: readonly string[];
2652
+ series: readonly ReportChartSeries[];
2653
+ leftMm: number;
2654
+ topMm: number;
2655
+ widthMm: number;
2656
+ heightMm: number;
2657
+ title?: string;
2658
+ showValues?: boolean;
2659
+ }
2660
+ declare interface ReportChartOptions_2 {
2661
+ type: "bar" | "line" | "stackedBar" | "percentBar";
2662
+ categories: readonly string[];
2663
+ series: readonly ReportChartSeries_2[];
2664
+ leftMm: number;
2665
+ topMm: number;
2666
+ widthMm: number;
2667
+ heightMm: number;
2668
+ title?: string;
2669
+ showValues?: boolean;
2670
+ }
2671
+ declare interface ReportChartOptions_3 {
2672
+ type: "bar" | "line" | "stackedBar" | "percentBar";
2673
+ categories: readonly string[];
2674
+ series: readonly ReportChartSeries_3[];
2675
+ leftMm: number;
2676
+ topMm: number;
2677
+ widthMm: number;
2678
+ heightMm: number;
2679
+ title?: string;
2680
+ showValues?: boolean;
2681
+ }
2682
+ declare interface ReportChartSeries {
2683
+ name: string;
2684
+ values: readonly (number | null)[];
2685
+ color?: string;
2686
+ }
2687
+ declare interface ReportChartSeries_2 {
2688
+ name: string;
2689
+ values: readonly (number | null)[];
2690
+ color?: string;
2691
+ }
2692
+ declare interface ReportChartSeries_3 {
2693
+ name: string;
2694
+ values: readonly (number | null)[];
2695
+ color?: string;
2696
+ }
2697
+ declare interface ReportComparison {
2698
+ field: string;
2699
+ op: ">" | ">=" | "<" | "<=" | "==" | "!=" | "between" | "contains" | "isNull" | "isNotNull";
2700
+ /** Legacy scalar thresholds remain supported. Use right for field-to-field comparisons. */
2701
+ value?: ReportPredicateScalar;
2702
+ right?: ReportPredicateOperand;
2703
+ values?: readonly [
2704
+ ReportPredicateScalar,
2705
+ ReportPredicateScalar
2706
+ ];
2707
+ numeric?: "number" | "decimal";
2708
+ valueType?: "number" | "decimal" | "text" | "date" | "boolean";
2709
+ }
2710
+ declare interface ReportComparison_2 {
2711
+ field: string;
2712
+ op: ">" | ">=" | "<" | "<=" | "==" | "!=" | "between" | "contains" | "isNull" | "isNotNull";
2713
+ /** Legacy scalar thresholds remain supported. Use right for field-to-field comparisons. */
2714
+ value?: ReportPredicateScalar_2;
2715
+ right?: ReportPredicateOperand_2;
2716
+ values?: readonly [
2717
+ ReportPredicateScalar_2,
2718
+ ReportPredicateScalar_2
2719
+ ];
2720
+ numeric?: "number" | "decimal";
2721
+ valueType?: "number" | "decimal" | "text" | "date" | "boolean";
2722
+ }
2723
+ declare interface ReportComparison_3 {
2724
+ field: string;
2725
+ op: ">" | ">=" | "<" | "<=" | "==" | "!=" | "between" | "contains" | "isNull" | "isNotNull";
2726
+ /** Legacy scalar thresholds remain supported. Use right for field-to-field comparisons. */
2727
+ value?: ReportPredicateScalar_3;
2728
+ right?: ReportPredicateOperand_3;
2729
+ values?: readonly [
2730
+ ReportPredicateScalar_3,
2731
+ ReportPredicateScalar_3
2732
+ ];
2733
+ numeric?: "number" | "decimal";
2734
+ valueType?: "number" | "decimal" | "text" | "date" | "boolean";
2735
+ }
2736
+ declare interface ReportDataComparisonField {
2737
+ field: string;
2738
+ label?: string;
2739
+ /** Numeric comparison is explicit; identifiers containing digits stay text. */
2740
+ type?: "value" | "decimal";
2741
+ /** Absolute decimal tolerance, inclusive. No binary floating-point subtraction. */
2742
+ tolerance?: string;
2743
+ /** Fractional ratio digits. changeRatio is (after - before) / before, not a percent. */
2744
+ ratioDigits?: number;
2745
+ zeroDenominator?: "omit" | "zero-if-equal";
2746
+ missing?: "distinct" | "empty-equivalent" | "zero";
2747
+ }
2748
+ declare interface ReportDataComparisonReviewOptions extends ReportDataReviewSource {
2749
+ fields: readonly ReportDataComparisonField[];
2750
+ maxDifferences?: number;
2751
+ }
2752
+ declare interface ReportDataLimits {
2753
+ maxRows?: number;
2754
+ maxFields?: number;
2755
+ maxCells?: number;
2756
+ }
2757
+ /** A business record, never a physical report row index. */
2758
+ declare interface ReportDataRecord {
2759
+ rowKey: string | number;
2760
+ values: Readonly<Record<string, ReportCellValue>>;
2761
+ }
2762
+ declare interface ReportDataReviewMessages {
2763
+ prefillTitle: string;
2764
+ prefillHint: string;
2765
+ prefillCurrent: string;
2766
+ prefillReference: string;
2767
+ prefillLoad: string;
2768
+ prefillApply: string;
2769
+ prefillMatched: string;
2770
+ prefillChanged: string;
2771
+ prefillSkipped: string;
2772
+ prefillConflict: string;
2773
+ prefillUnchanged: string;
2774
+ prefillReadonly: string;
2775
+ prefillOccupied: string;
2776
+ prefillMissingSource: string;
2777
+ prefillMissingTarget: string;
2778
+ prefillAmbiguous: string;
2779
+ prefillInvalid: string;
2780
+ comparisonTitle: string;
2781
+ comparisonHint: string;
2782
+ comparisonLoad: string;
2783
+ comparisonAdded: string;
2784
+ comparisonRemoved: string;
2785
+ comparisonChanged: string;
2786
+ comparisonUnchanged: string;
2787
+ reviewCancel: string;
2788
+ reviewClose: string;
2789
+ reviewBefore: string;
2790
+ reviewAfter: string;
2791
+ reviewField: string;
2792
+ reviewKey: string;
2793
+ reviewDelta: string;
2794
+ reviewRatio: string;
2795
+ reviewLocate: string;
2796
+ reviewEmpty: string;
2797
+ reviewPrevious: string;
2798
+ reviewNext: string;
2799
+ reviewPage: string;
2800
+ }
2801
+ declare interface ReportDataReviewMessages_2 {
2802
+ prefillTitle: string;
2803
+ prefillHint: string;
2804
+ prefillCurrent: string;
2805
+ prefillReference: string;
2806
+ prefillLoad: string;
2807
+ prefillApply: string;
2808
+ prefillMatched: string;
2809
+ prefillChanged: string;
2810
+ prefillSkipped: string;
2811
+ prefillConflict: string;
2812
+ prefillUnchanged: string;
2813
+ prefillReadonly: string;
2814
+ prefillOccupied: string;
2815
+ prefillMissingSource: string;
2816
+ prefillMissingTarget: string;
2817
+ prefillAmbiguous: string;
2818
+ prefillInvalid: string;
2819
+ comparisonTitle: string;
2820
+ comparisonHint: string;
2821
+ comparisonLoad: string;
2822
+ comparisonAdded: string;
2823
+ comparisonRemoved: string;
2824
+ comparisonChanged: string;
2825
+ comparisonUnchanged: string;
2826
+ reviewCancel: string;
2827
+ reviewClose: string;
2828
+ reviewBefore: string;
2829
+ reviewAfter: string;
2830
+ reviewField: string;
2831
+ reviewKey: string;
2832
+ reviewDelta: string;
2833
+ reviewRatio: string;
2834
+ reviewLocate: string;
2835
+ reviewEmpty: string;
2836
+ reviewPrevious: string;
2837
+ reviewNext: string;
2838
+ reviewPage: string;
2839
+ }
2840
+ declare interface ReportDataReviewSource extends ReportDataLimits {
2841
+ sourceScope?: string;
2842
+ datasetId: string;
2843
+ label?: string;
2844
+ /** The host chooses history/instances; this package never guesses an endpoint or period. */
2845
+ load(operation: {
2846
+ signal: AbortSignal;
2847
+ }): readonly ReportDataRecord[] | Promise<readonly ReportDataRecord[]>;
2848
+ /** Cancel loaders that do not finish; default 15 seconds, bounded at 120 seconds. */
2849
+ timeoutMs?: number;
2850
+ }
2851
+ declare interface ReportDatasetValidationOptions {
2852
+ rules: readonly ReportValidationRule[];
2853
+ rowKey?: string;
2854
+ computed?: readonly ComputedField[];
2855
+ /** Explicit trusted engine, shared with pagination; never read from a serialized template. */
2856
+ formula?: FormulaAdapter;
2857
+ /** Uses the same bounded tree preparation and descendant-leaf summaries as pagination. */
2858
+ tree?: TreeTableOptions;
2859
+ maxChecks?: number;
2860
+ maxIssues?: number;
2861
+ signal?: AbortSignal;
2862
+ }
2286
2863
  declare type ReportDiscardReason = "reload" | "import" | "replace" | "leave";
2287
2864
  declare interface ReportDocumentStyle {
2288
2865
  id: string;
@@ -2352,6 +2929,10 @@ declare interface ReportEditingOptions {
2352
2929
  canEdit?(context: ReportCellContext): boolean;
2353
2930
  /** Return an error message or throw to reject the edit. */
2354
2931
  validate?(edit: Readonly<ReportCellEdit>, operation: ReportEditOperation): void | string | Promise<void | string>;
2932
+ /** Same declarative rules can be run in Node via validateReportDataset. Requires a source-backed session. */
2933
+ validation?: ReportCandidateValidationOptions;
2934
+ /** Optional host batch validation sees the fully recalculated candidate plan. */
2935
+ validateBatch?(batch: Readonly<ReportEditBatch>, candidate: RenderPlan, operation: ReportEditOperation): void | readonly ReportValidationIssue[] | Promise<void | readonly ReportValidationIssue[]>;
2355
2936
  /** Called before applying the change. A rejection leaves the current report untouched. */
2356
2937
  save?(edit: Readonly<ReportCellEdit>, operation: ReportEditOperation): void | ReportEditResult | Promise<void | ReportEditResult>;
2357
2938
  /** Must commit all edits in one server transaction. Required for multi-cell persisted edits. */
@@ -2411,7 +2992,9 @@ declare type ReportExpression = {
2411
2992
  field?: string;
2412
2993
  weightField?: string;
2413
2994
  } | {
2414
- op: "add" | "subtract" | "multiply" | "divide" | "coalesce";
2995
+ op: ReportExpressionOperation;
2996
+ /** Required for if; args are [then, else], and only the selected branch is evaluated. */
2997
+ condition?: ReportPredicate;
2415
2998
  args: readonly ReportExpression[];
2416
2999
  };
2417
3000
  declare type ReportExpression_2 = {
@@ -2423,7 +3006,9 @@ declare type ReportExpression_2 = {
2423
3006
  field?: string;
2424
3007
  weightField?: string;
2425
3008
  } | {
2426
- op: "add" | "subtract" | "multiply" | "divide" | "coalesce";
3009
+ op: ReportExpressionOperation_2;
3010
+ /** Required for if; args are [then, else], and only the selected branch is evaluated. */
3011
+ condition?: ReportPredicate_2;
2427
3012
  args: readonly ReportExpression_2[];
2428
3013
  };
2429
3014
  declare type ReportExpression_3 = {
@@ -2435,10 +3020,27 @@ declare type ReportExpression_3 = {
2435
3020
  field?: string;
2436
3021
  weightField?: string;
2437
3022
  } | {
2438
- op: "add" | "subtract" | "multiply" | "divide" | "coalesce";
3023
+ op: ReportExpressionOperation_3;
3024
+ /** Required for if; args are [then, else], and only the selected branch is evaluated. */
3025
+ condition?: ReportPredicate_3;
2439
3026
  args: readonly ReportExpression_3[];
2440
3027
  };
2441
- declare interface ReportFieldContract {
3028
+ declare type ReportExpressionOperation = "add" | "subtract" | "multiply" | "divide" | "coalesce" | "if" | "round" | "abs" | "concat" | "trim" | "upper" | "lower" | "dateYear" | "dateMonth" | "dateDay";
3029
+ declare type ReportExpressionOperation_2 = "add" | "subtract" | "multiply" | "divide" | "coalesce" | "if" | "round" | "abs" | "concat" | "trim" | "upper" | "lower" | "dateYear" | "dateMonth" | "dateDay";
3030
+ declare type ReportExpressionOperation_3 = "add" | "subtract" | "multiply" | "divide" | "coalesce" | "if" | "round" | "abs" | "concat" | "trim" | "upper" | "lower" | "dateYear" | "dateMonth" | "dateDay";
3031
+ declare type ReportFieldAggregation = "sum" | "avg" | "min" | "max" | "count" | "none";
3032
+ declare type ReportFieldAggregation_2 = "sum" | "avg" | "min" | "max" | "count" | "none";
3033
+ declare interface ReportFieldCalculation {
3034
+ /** Business-owned explanation, never executable JavaScript or an inferred business formula. */
3035
+ description: string;
3036
+ dependsOn: readonly string[];
3037
+ }
3038
+ declare interface ReportFieldCalculation_2 {
3039
+ /** Business-owned explanation, never executable JavaScript or an inferred business formula. */
3040
+ description: string;
3041
+ dependsOn: readonly string[];
3042
+ }
3043
+ declare interface ReportFieldContract extends ReportFieldSemantics {
2442
3044
  field: string;
2443
3045
  label?: string;
2444
3046
  type: "text" | "number" | "boolean" | "date" | "decimal";
@@ -2452,7 +3054,7 @@ declare interface ReportFieldContract {
2452
3054
  semanticRole?: "identifier" | "dimension" | "measure" | "date" | "text";
2453
3055
  unit?: string;
2454
3056
  }
2455
- declare interface ReportFieldContract_2 {
3057
+ declare interface ReportFieldContract_2 extends ReportFieldSemantics_2 {
2456
3058
  field: string;
2457
3059
  label?: string;
2458
3060
  type: "text" | "number" | "boolean" | "date" | "decimal";
@@ -2466,6 +3068,26 @@ declare interface ReportFieldContract_2 {
2466
3068
  semanticRole?: "identifier" | "dimension" | "measure" | "date" | "text";
2467
3069
  unit?: string;
2468
3070
  }
3071
+ declare interface ReportFieldSemantics {
3072
+ description?: string;
3073
+ /** Explicit meaning of null/missing; does not convert blanks into zero. */
3074
+ missingMeaning?: string;
3075
+ /** Recommended aggregation; none marks non-additive measures such as ratios. No aggregation runs implicitly. */
3076
+ aggregation?: ReportFieldAggregation;
3077
+ /** Shared presentation only; raw values and calculation precision remain unchanged. */
3078
+ format?: ColumnFormat;
3079
+ calculation?: ReportFieldCalculation;
3080
+ }
3081
+ declare interface ReportFieldSemantics_2 {
3082
+ description?: string;
3083
+ /** Explicit meaning of null/missing; does not convert blanks into zero. */
3084
+ missingMeaning?: string;
3085
+ /** Recommended aggregation; none marks non-additive measures such as ratios. No aggregation runs implicitly. */
3086
+ aggregation?: ReportFieldAggregation_2;
3087
+ /** Shared presentation only; raw values and calculation precision remain unchanged. */
3088
+ format?: ColumnFormat_2;
3089
+ calculation?: ReportFieldCalculation_2;
3090
+ }
2469
3091
  declare interface ReportFlowBand {
2470
3092
  /** Exact stable component IDs. Static components use nid, lists use id. */
2471
3093
  componentIds: string[];
@@ -2516,12 +3138,9 @@ declare interface ReportParamDef {
2516
3138
  field: string;
2517
3139
  /** 显示名(缺省用 field) */
2518
3140
  label?: string;
2519
- type?: "text" | "number" | "date" | "month" | "year" | "dateRange" | "select";
3141
+ type?: "text" | "number" | "date" | "month" | "year" | "dateRange" | "select" | "multiSelect" | "cascader" | "numberRange";
2520
3142
  /** select 选项 */
2521
- options?: Array<{
2522
- label: string;
2523
- value: string;
2524
- }>;
3143
+ options?: ReportParamTreeOption[];
2525
3144
  /** Opaque host-resolved source key. No URL, credentials or executable code is stored. */
2526
3145
  optionsSource?: string;
2527
3146
  /** Select dependencies must be declared parameters; changing a parent clears descendants. */
@@ -2534,6 +3153,9 @@ declare interface ReportParamDef {
2534
3153
  max?: number | string;
2535
3154
  minLength?: number;
2536
3155
  maxLength?: number;
3156
+ /** multiSelect item count (maximum 100). Cascader paths are bounded to 16 levels. */
3157
+ minItems?: number;
3158
+ maxItems?: number;
2537
3159
  }
2538
3160
  /** 报表参数定义(声明式,模板自描述参数面:渲染组件据此生成查询面板) */
2539
3161
  declare interface ReportParamDef_2 {
@@ -2541,12 +3163,9 @@ declare interface ReportParamDef_2 {
2541
3163
  field: string;
2542
3164
  /** 显示名(缺省用 field) */
2543
3165
  label?: string;
2544
- type?: "text" | "number" | "date" | "month" | "year" | "dateRange" | "select";
3166
+ type?: "text" | "number" | "date" | "month" | "year" | "dateRange" | "select" | "multiSelect" | "cascader" | "numberRange";
2545
3167
  /** select 选项 */
2546
- options?: Array<{
2547
- label: string;
2548
- value: string;
2549
- }>;
3168
+ options?: ReportParamTreeOption_2[];
2550
3169
  /** Opaque host-resolved source key. No URL, credentials or executable code is stored. */
2551
3170
  optionsSource?: string;
2552
3171
  /** Select dependencies must be declared parameters; changing a parent clears descendants. */
@@ -2559,6 +3178,9 @@ declare interface ReportParamDef_2 {
2559
3178
  max?: number | string;
2560
3179
  minLength?: number;
2561
3180
  maxLength?: number;
3181
+ /** multiSelect item count (maximum 100). Cascader paths are bounded to 16 levels. */
3182
+ minItems?: number;
3183
+ maxItems?: number;
2562
3184
  }
2563
3185
  /** 报表参数定义(声明式,模板自描述参数面:渲染组件据此生成查询面板) */
2564
3186
  declare interface ReportParamDef_3 {
@@ -2566,12 +3188,9 @@ declare interface ReportParamDef_3 {
2566
3188
  field: string;
2567
3189
  /** 显示名(缺省用 field) */
2568
3190
  label?: string;
2569
- type?: "text" | "number" | "date" | "month" | "year" | "dateRange" | "select";
3191
+ type?: "text" | "number" | "date" | "month" | "year" | "dateRange" | "select" | "multiSelect" | "cascader" | "numberRange";
2570
3192
  /** select 选项 */
2571
- options?: Array<{
2572
- label: string;
2573
- value: string;
2574
- }>;
3193
+ options?: ReportParamTreeOption_3[];
2575
3194
  /** Opaque host-resolved source key. No URL, credentials or executable code is stored. */
2576
3195
  optionsSource?: string;
2577
3196
  /** Select dependencies must be declared parameters; changing a parent clears descendants. */
@@ -2584,10 +3203,19 @@ declare interface ReportParamDef_3 {
2584
3203
  max?: number | string;
2585
3204
  minLength?: number;
2586
3205
  maxLength?: number;
3206
+ /** multiSelect item count (maximum 100). Cascader paths are bounded to 16 levels. */
3207
+ minItems?: number;
3208
+ maxItems?: number;
2587
3209
  }
2588
3210
  declare interface ReportParamOption {
2589
3211
  readonly label: string;
2590
3212
  readonly value: string;
3213
+ readonly children?: readonly ReportParamOption[];
3214
+ }
3215
+ declare interface ReportParamOption_2 {
3216
+ readonly label: string;
3217
+ readonly value: string;
3218
+ readonly children?: readonly ReportParamOption_2[];
2591
3219
  }
2592
3220
  declare interface ReportParamOptionsInput {
2593
3221
  readonly source: string;
@@ -2598,8 +3226,19 @@ declare interface ReportParamOptionsInput {
2598
3226
  readonly signal: AbortSignal;
2599
3227
  readonly limit: number;
2600
3228
  }
3229
+ declare interface ReportParamOptionsInput_2 {
3230
+ readonly source: string;
3231
+ readonly field: string;
3232
+ readonly query: string;
3233
+ /** Only declared dependencies, captured at request start. Never the mutable form. */
3234
+ readonly params: Readonly<Record<string, string>>;
3235
+ readonly signal: AbortSignal;
3236
+ readonly limit: number;
3237
+ }
2601
3238
  /** Resolve a trusted source key through the host's existing API/authentication. */
2602
3239
  declare type ReportParamOptionsLoader = (input: ReportParamOptionsInput) => Promise<readonly ReportParamOption[]>;
3240
+ /** Resolve a trusted source key through the host's existing API/authentication. */
3241
+ declare type ReportParamOptionsLoader_2 = (input: ReportParamOptionsInput_2) => Promise<readonly ReportParamOption_2[]>;
2603
3242
  declare interface ReportParamOptionsMessages {
2604
3243
  paramOptionsLoading?: string;
2605
3244
  paramOptionsEmpty?: string;
@@ -2607,6 +3246,8 @@ declare interface ReportParamOptionsMessages {
2607
3246
  paramOptionsMissingLoader?: string;
2608
3247
  paramOptionsDependencies?: string;
2609
3248
  paramOptionsClear?: string;
3249
+ paramNumberRangeStart?: string;
3250
+ paramNumberRangeEnd?: string;
2610
3251
  }
2611
3252
  declare interface ReportParamOptionsMessages_2 {
2612
3253
  paramOptionsLoading?: string;
@@ -2615,7 +3256,66 @@ declare interface ReportParamOptionsMessages_2 {
2615
3256
  paramOptionsMissingLoader?: string;
2616
3257
  paramOptionsDependencies?: string;
2617
3258
  paramOptionsClear?: string;
3259
+ paramNumberRangeStart?: string;
3260
+ paramNumberRangeEnd?: string;
2618
3261
  }
3262
+ /** Cascader values are unique within each sibling list. */
3263
+ declare interface ReportParamTreeOption {
3264
+ label: string;
3265
+ value: string;
3266
+ children?: ReportParamTreeOption[];
3267
+ }
3268
+ /** Cascader values are unique within each sibling list. */
3269
+ declare interface ReportParamTreeOption_2 {
3270
+ label: string;
3271
+ value: string;
3272
+ children?: ReportParamTreeOption_2[];
3273
+ }
3274
+ /** Cascader values are unique within each sibling list. */
3275
+ declare interface ReportParamTreeOption_3 {
3276
+ label: string;
3277
+ value: string;
3278
+ children?: ReportParamTreeOption_3[];
3279
+ }
3280
+ declare type ReportPredicate = ReportComparison | {
3281
+ all: readonly ReportPredicate[];
3282
+ } | {
3283
+ any: readonly ReportPredicate[];
3284
+ } | {
3285
+ not: ReportPredicate;
3286
+ };
3287
+ declare type ReportPredicate_2 = ReportComparison_2 | {
3288
+ all: readonly ReportPredicate_2[];
3289
+ } | {
3290
+ any: readonly ReportPredicate_2[];
3291
+ } | {
3292
+ not: ReportPredicate_2;
3293
+ };
3294
+ declare type ReportPredicate_3 = ReportComparison_3 | {
3295
+ all: readonly ReportPredicate_3[];
3296
+ } | {
3297
+ any: readonly ReportPredicate_3[];
3298
+ } | {
3299
+ not: ReportPredicate_3;
3300
+ };
3301
+ declare type ReportPredicateOperand = {
3302
+ field: string;
3303
+ } | {
3304
+ value: ReportPredicateScalar;
3305
+ };
3306
+ declare type ReportPredicateOperand_2 = {
3307
+ field: string;
3308
+ } | {
3309
+ value: ReportPredicateScalar_2;
3310
+ };
3311
+ declare type ReportPredicateOperand_3 = {
3312
+ field: string;
3313
+ } | {
3314
+ value: ReportPredicateScalar_3;
3315
+ };
3316
+ declare type ReportPredicateScalar = string | number | boolean | null;
3317
+ declare type ReportPredicateScalar_2 = string | number | boolean | null;
3318
+ declare type ReportPredicateScalar_3 = string | number | boolean | null;
2619
3319
  declare interface ReportPreferencesAdapter {
2620
3320
  load(key: string): Partial<ReportPreviewPreferences> | null | Promise<Partial<ReportPreviewPreferences> | null>;
2621
3321
  save(key: string, value: Readonly<Partial<ReportPreviewPreferences>>): void | Promise<void>;
@@ -2626,6 +3326,16 @@ declare interface ReportPreferencesOptions {
2626
3326
  key: string;
2627
3327
  adapter: ReportPreferencesAdapter;
2628
3328
  }
3329
+ declare interface ReportPrefillField {
3330
+ field: string;
3331
+ sourceField?: string;
3332
+ label?: string;
3333
+ }
3334
+ declare interface ReportPrefillReviewOptions extends ReportDataReviewSource {
3335
+ fields: readonly ReportPrefillField[];
3336
+ mode?: "empty" | "replace";
3337
+ maxChanges?: number;
3338
+ }
2629
3339
  declare type ReportPreviewPreferences = Record<ReportPreviewTool, boolean>;
2630
3340
  declare type ReportPreviewTool = "search" | "thumbnails" | "zoom" | ReportExportFormat | "print" | "pdfWindow" | "editing" | "import";
2631
3341
  declare interface ReportPrintCalibration {
@@ -2672,6 +3382,8 @@ declare interface ReportRuntimeBudget {
2672
3382
  maxRows?: number;
2673
3383
  maxPages?: number;
2674
3384
  maxCells?: number;
3385
+ /** Aggregate bound-chart primitives per prepare, before expansion; default 50000, hard maximum 1000000. */
3386
+ maxChartComponents?: number;
2675
3387
  maxOutputBytes?: number;
2676
3388
  /** Bound the plain JSON snapshot accepted by exportPrepared (default 64 MB). */
2677
3389
  maxPreparedBytes?: number;
@@ -2776,6 +3488,7 @@ export declare const ReportTemplateEditor: DefineComponent<TemplateEditorOptions
2776
3488
  guardChanges: (reason?: TemplateEditorBeforeDiscardContext["reason"], replacement?: ReportTemplateDocument) => Promise<boolean>;
2777
3489
  reset: () => Promise<void>;
2778
3490
  save: () => Promise<void>;
3491
+ insertComponent: (component: TemplateComponent) => boolean;
2779
3492
  }, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
2780
3493
  "update:modelValue": (document: ReportTemplateDocument) => any;
2781
3494
  saved: (document: ReportTemplateDocument) => any;
@@ -2843,6 +3556,29 @@ declare interface ReportTemplateReviewIssue {
2843
3556
  diagnostic?: OutputDiagnostic_2;
2844
3557
  }
2845
3558
  declare type ReportTemplateSummary = Omit<ReportTemplateDocument, "template">;
3559
+ declare interface ReportValidationIssue {
3560
+ ruleId: string;
3561
+ rowKey?: string | number;
3562
+ rowIndex?: number;
3563
+ field?: string;
3564
+ dataset?: string;
3565
+ sourceScope?: string;
3566
+ severity: "error" | "warning";
3567
+ message: string;
3568
+ }
3569
+ declare interface ReportValidationRule {
3570
+ id: string;
3571
+ /** Optional target; omitted applies to each candidate dataset. */
3572
+ dataset?: string;
3573
+ assert: ReportPredicate;
3574
+ when?: ReportPredicate;
3575
+ field?: string;
3576
+ severity?: "error" | "warning";
3577
+ message: string;
3578
+ scope?: "row" | "dataset";
3579
+ /** Dataset-scope assertions read this explicit summary row, never an arbitrary detail row. */
3580
+ aggregates?: readonly AggregateDefinition[];
3581
+ }
2846
3582
  declare interface RichParagraph {
2847
3583
  segments: RichSegment[];
2848
3584
  align?: ComponentStyle["align"];
@@ -2902,6 +3638,14 @@ export declare const RULE_EDITOR_MESSAGES: {
2902
3638
  pending: string;
2903
3639
  detail: string;
2904
3640
  matrix: string;
3641
+ matrixHierarchy: string;
3642
+ matrixHierarchyHint: string;
3643
+ matrixSort: string;
3644
+ matrixSourceOrder: string;
3645
+ matrixAscending: string;
3646
+ matrixDescending: string;
3647
+ matrixPrefixSubtotal: string;
3648
+ matrixEmptyLabel: string;
2905
3649
  tree: string;
2906
3650
  treeInput: string;
2907
3651
  treeFlat: string;
@@ -2964,6 +3708,34 @@ export declare const RULE_EDITOR_MESSAGES: {
2964
3708
  null: string;
2965
3709
  true: string;
2966
3710
  false: string;
3711
+ if: string;
3712
+ round: string;
3713
+ abs: string;
3714
+ concat: string;
3715
+ trim: string;
3716
+ upper: string;
3717
+ lower: string;
3718
+ dateYear: string;
3719
+ dateMonth: string;
3720
+ dateDay: string;
3721
+ all: string;
3722
+ any: string;
3723
+ not: string;
3724
+ conditionGroup: string;
3725
+ addCondition: string;
3726
+ compareField: string;
3727
+ compareValue: string;
3728
+ between: string;
3729
+ contains: string;
3730
+ isNull: string;
3731
+ isNotNull: string;
3732
+ valueKind: string;
3733
+ calendarDate: string;
3734
+ upperBound: string;
3735
+ lowerBound: string;
3736
+ functionHelp: string;
3737
+ thenValue: string;
3738
+ elseValue: string;
2967
3739
  add: string;
2968
3740
  subtract: string;
2969
3741
  multiply: string;
@@ -3055,41 +3827,54 @@ export declare interface RuleEditorOptions {
3055
3827
  }
3056
3828
  /** 条件格式规则求值(声明式,见 ListColumn.rules) */
3057
3829
  declare interface StyleRule {
3058
- when: {
3059
- field: string;
3060
- op: ">" | ">=" | "<" | "<=" | "==" | "!=";
3061
- value: number | string;
3062
- /** Explicit decimal comparisons retain decimal thresholds as text. */
3063
- numeric?: "number" | "decimal";
3064
- };
3830
+ when: ReportPredicate;
3065
3831
  /** 命中时合并进单元格样式(color/bold/backgroundColor 等) */
3066
3832
  style: Record<string, unknown>;
3067
3833
  }
3068
3834
  /** 条件格式规则求值(声明式,见 ListColumn.rules) */
3069
3835
  declare interface StyleRule_2 {
3070
- when: {
3071
- field: string;
3072
- op: ">" | ">=" | "<" | "<=" | "==" | "!=";
3073
- value: number | string;
3074
- /** Explicit decimal comparisons retain decimal thresholds as text. */
3075
- numeric?: "number" | "decimal";
3076
- };
3836
+ when: ReportPredicate_2;
3077
3837
  /** 命中时合并进单元格样式(color/bold/backgroundColor 等) */
3078
3838
  style: Record<string, unknown>;
3079
3839
  }
3080
3840
  /** 条件格式规则求值(声明式,见 ListColumn.rules) */
3081
3841
  declare interface StyleRule_3 {
3082
- when: {
3083
- field: string;
3084
- op: ">" | ">=" | "<" | "<=" | "==" | "!=";
3085
- value: number | string;
3086
- /** Explicit decimal comparisons retain decimal thresholds as text. */
3087
- numeric?: "number" | "decimal";
3088
- };
3842
+ when: ReportPredicate_3;
3089
3843
  /** 命中时合并进单元格样式(color/bold/backgroundColor 等) */
3090
3844
  style: Record<string, unknown>;
3091
3845
  }
3092
3846
  export declare const TEMPLATE_EDITOR_MESSAGES: {
3847
+ chartNumeric: string;
3848
+ chartNumber: string;
3849
+ chartDecimal: string;
3850
+ chartDigits: string;
3851
+ chartWeight: string;
3852
+ chartWeightedAverage: string;
3853
+ chartNumberOptions: string;
3854
+ chartStacked: string;
3855
+ chartPercent: string;
3856
+ chartDataset: string;
3857
+ chartCategory: string;
3858
+ chartMeasure: string;
3859
+ chartAggregation: string;
3860
+ chartSeries: string;
3861
+ chartAddSeries: string;
3862
+ chartRemoveSeries: string;
3863
+ chartRecordCount: string;
3864
+ chartSum: string;
3865
+ chartAverage: string;
3866
+ chartMinimum: string;
3867
+ chartMaximum: string;
3868
+ chartType: string;
3869
+ chartBar: string;
3870
+ chartLine: string;
3871
+ chartSort: string;
3872
+ chartNatural: string;
3873
+ chartAscending: string;
3874
+ chartDescending: string;
3875
+ chartTitle: string;
3876
+ chartValues: string;
3877
+ chartBindingNote: string;
3093
3878
  toolTarget: string;
3094
3879
  toolPreview: string;
3095
3880
  toolPreviewHide: string;
@@ -3572,6 +4357,8 @@ export declare interface TemplateEditorConflictOptions {
3572
4357
  keepCopy?: (document: ReportTemplateDocument, context: TemplateCopyContext) => Promise<void>;
3573
4358
  }
3574
4359
  export declare interface TemplateEditorController {
4360
+ /** Insert a native/registered component through validation, geometry constraints and undo history. */
4361
+ insertComponent(component: TemplateComponent): boolean;
3575
4362
  readonly pendingLocalChanges: boolean;
3576
4363
  readonly saving?: boolean;
3577
4364
  readonly blocked?: boolean;
@@ -3598,7 +4385,8 @@ export declare interface TemplateEditorOptions extends TemplateEditorConflictOpt
3598
4385
  bindingSession?: AnyExcelBindingSession;
3599
4386
  readonly?: boolean;
3600
4387
  messages?: Partial<TemplateEditorMessages>;
3601
- preview?: Pick<MachReportDefaults, "showExport" | "showPrint" | "showPdfWindow" | "theme" | "assets" | "pdfFontUrl" | "toolbar">;
4388
+ visualMessages?: Partial<ColumnVisualMessages>;
4389
+ preview?: Pick<MachReportDefaults, "showExport" | "showPrint" | "showPdfWindow" | "theme" | "assets" | "pdfFontUrl" | "toolbar" | "loadParamOptions">;
3602
4390
  beforeDiscard?: TemplateEditorBeforeDiscard;
3603
4391
  save?: (document: ReportTemplateDocument, context: TemplateEditorSaveContext) => Promise<ReportTemplateDocument>;
3604
4392
  }
@@ -3796,13 +4584,15 @@ declare type XlsxImageOptions = ImageMediaOptions;
3796
4584
  * 目标是"财务能直接用的对账表"而非复刻版面)
3797
4585
  * - 原生 richText 保留基础字形;未支持组件、段落专有排版与单元格嵌套组件计入 diagnostics / warnings
3798
4586
  */
3799
- declare interface XlsxRenderOptions extends OutputDiagnosticOptions, XlsxImageOptions {
4587
+ declare interface XlsxRenderOptions extends AssetRenderOptions, XlsxImageOptions {
3800
4588
  /** 工作表命名(连续表默认使用标题,其余默认 "Sheet1" 起序)。 */
3801
4589
  sheetName?: (sheetIndex: number) => string;
3802
4590
  /** auto 默认将 wide 逻辑表合并为连续 Sheet;pages 保留逐页;continuous 要求明确的表来源。 */
3803
4591
  sheetMode?: "auto" | "pages" | "continuous";
3804
4592
  /** 宽表或连续表默认 raw,其余默认 text;显式配置可覆盖默认值。 */
3805
4593
  valueMode?: "text" | "raw";
4594
+ /** Static data-bar drawing budget; fail explicitly rather than omitting bars. Default 10,000. */
4595
+ maxDataBars?: number;
3806
4596
  /** 连续表默认不限制打印纸型;显式 A3/A4/A5 仅设置打印适配,不改变 Excel 列宽。 */
3807
4597
  paperSize?: "auto" | "a3" | "a4" | "a5";
3808
4598
  }