@agile-team/mach-report 2.17.0 → 2.19.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 (170) hide show
  1. package/README.md +19 -9
  2. package/dist/{ExcelBindingWizard-Bq6FYME6.cjs → ExcelBindingWizard-UHSApSG9.cjs} +1 -1
  3. package/dist/{ExcelBindingWizard-Co1svTsw.js → ExcelBindingWizard-xJIYmnZ_.js} +3 -3
  4. package/dist/ParamEditor-BZb-okUd.cjs +1 -0
  5. package/dist/ParamEditor-D1wWemaf.js +732 -0
  6. package/dist/{ReportBatchPanel-uQh06usx.js → ReportBatchPanel-B88R-fME.js} +39 -39
  7. package/dist/ReportBatchPanel-BkJFqeEW.cjs +1 -0
  8. package/dist/ReportLabelStudio-B4WZ2XNN.js +239 -0
  9. package/dist/ReportLabelStudio-BN-fYNCr.cjs +1 -0
  10. package/dist/ReportParamPanel-mQkeN70Q.js +1020 -0
  11. package/dist/ReportParamPanel-sOANVRz-.cjs +1 -0
  12. package/dist/ReportPreview-BUr8GQUW.js +5618 -0
  13. package/dist/ReportPreview-D7PvKzs3.cjs +6 -0
  14. package/dist/{ReportTemplateLibrary-TIL_Oj2l.js → ReportTemplateLibrary-BGELmgd3.js} +1 -1
  15. package/dist/{ReportTemplateLibrary-CnP7_1pH.cjs → ReportTemplateLibrary-BOh2MgjQ.cjs} +1 -1
  16. package/dist/RuleEditor-CoLqgehG.js +2337 -0
  17. package/dist/RuleEditor-XaLcCdTb.cjs +1 -0
  18. package/dist/{TemplateOutlinePanel-BouxsuqQ.js → TemplateOutlinePanel-DU95loB-.js} +2 -2
  19. package/dist/{TemplateOutlinePanel-BlLxRrfu.cjs → TemplateOutlinePanel-DiG8tRRe.cjs} +1 -1
  20. package/dist/{TemplateReusePanel-BEACLPaN.js → TemplateReusePanel-DE1KSD6c.js} +2 -2
  21. package/dist/{TemplateReusePanel-yxsHSO40.cjs → TemplateReusePanel-G-Y299wc.cjs} +1 -1
  22. package/dist/{TemplateReviewPanel-D9Cx0m2N.cjs → TemplateReviewPanel-KQx9ts0D.cjs} +1 -1
  23. package/dist/{TemplateReviewPanel-B1OGRY2i.js → TemplateReviewPanel-vqFJ_Y9o.js} +2 -2
  24. package/dist/analytics.cjs +1 -1
  25. package/dist/analytics.d.cts +100 -41
  26. package/dist/analytics.d.ts +100 -41
  27. package/dist/analytics.js +76 -141
  28. package/dist/artifact-integrity.json +110 -102
  29. package/dist/assets-2eC3mOcV.js +232 -0
  30. package/dist/assets-B0Hxn4l6.cjs +1 -0
  31. package/dist/{auto-DDHflI9v.cjs → auto-B0EZFIK1.cjs} +1 -1
  32. package/dist/{auto-BIOmtVhk.js → auto-BlchZ1b8.js} +19 -19
  33. package/dist/{batch-WzDIXJAt.js → batch-DGCt44XM.js} +1 -1
  34. package/dist/{batch-z6Aw5GEY.cjs → batch-DYcokH4v.cjs} +1 -1
  35. package/dist/charts-Dlv8j2AG.js +141 -0
  36. package/dist/charts-aCtoswXq.cjs +1 -0
  37. package/dist/codes.cjs +9 -9
  38. package/dist/codes.d.cts +54 -0
  39. package/dist/codes.d.ts +54 -0
  40. package/dist/codes.js +12097 -13668
  41. package/dist/column-visual-BpgQVWwT.js +238 -0
  42. package/dist/column-visual-CtYxnBCP.cjs +1 -0
  43. package/dist/component-tree-6TV7W6Yj.cjs +1 -0
  44. package/dist/component-tree-CvW4lzpv.js +67 -0
  45. package/dist/computed-4TnxzgIh.cjs +1 -0
  46. package/dist/computed-C8NRZQss.js +739 -0
  47. package/dist/data-bar-Ce38juRZ.cjs +1 -0
  48. package/dist/data-bar-PtjXhMgN.js +9 -0
  49. package/dist/designer-CyKXBhQg.cjs +2 -0
  50. package/dist/designer-fVvpYg8H.js +5824 -0
  51. package/dist/designer.cjs +1 -1
  52. package/dist/designer.d.cts +803 -43
  53. package/dist/designer.d.ts +803 -43
  54. package/dist/designer.js +26 -20
  55. package/dist/{encoding-BFMFIc4r.cjs → encoding-B--eZpp1.cjs} +1 -1
  56. package/dist/{encoding-DP_Eaf0A.js → encoding-mctOLocI.js} +2 -2
  57. package/dist/{font-loader-7FWVlykp.cjs → font-loader-DBBJ5KE9.cjs} +1 -1
  58. package/dist/{font-loader-CQZowp0I.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 +7 -7
  62. package/dist/index.d.cts +361 -15
  63. package/dist/index.d.ts +361 -15
  64. package/dist/index.js +876 -835
  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-l3ea86di.js → pdf-CKROKygt.js} +1851 -1849
  72. package/dist/{pdf-B8JouyYv.cjs → pdf-DqyxJ96U.cjs} +46 -46
  73. package/dist/pdf.cjs +1 -1
  74. package/dist/pdf.d.cts +54 -0
  75. package/dist/pdf.d.ts +54 -0
  76. package/dist/pdf.js +2 -2
  77. package/dist/{plugin-CtFX9PFG.cjs → plugin-4VuL38Nc.cjs} +1 -1
  78. package/dist/{plugin-BBp74CQZ.js → plugin-YWHcI3t4.js} +5 -5
  79. package/dist/prefill-B8H9qwE4.js +371 -0
  80. package/dist/prefill-D7EswyTI.cjs +1 -0
  81. package/dist/{prepared-CARicKYh.js → prepared-BE-4jfX5.js} +2 -2
  82. package/dist/{prepared-Ch1x_Gog.cjs → prepared-CGVphji3.cjs} +1 -1
  83. package/dist/{protocol-B5A2uom4.cjs → protocol-ByRVzzQG.cjs} +1 -1
  84. package/dist/{protocol-BaiWjq5w.js → protocol-Cr81vFSQ.js} +3 -3
  85. package/dist/{record-bindings-D4TuMzHs.js → record-bindings-DEJtmo3p.js} +67 -107
  86. package/dist/record-bindings-ehjnCDHt.cjs +1 -0
  87. package/dist/{region-binding-workflow-BNasF5kz.js → region-binding-workflow-CBg0l_tj.js} +1 -1
  88. package/dist/{region-binding-workflow-O2Cni3mF.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 +75 -7
  97. package/dist/server/node.d.ts +75 -7
  98. package/dist/server-node.cjs +4 -4
  99. package/dist/server-node.js +2692 -1990
  100. package/dist/server.cjs +1 -1
  101. package/dist/server.d.cts +243 -28
  102. package/dist/server.d.ts +243 -28
  103. package/dist/server.js +28 -28
  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-wT1fNeAP.js → template-catalog-CmbWOJqy.js} +16 -16
  110. package/dist/{template-catalog-Dua8h9ZA.cjs → template-catalog-Utu4GP09.cjs} +1 -1
  111. package/dist/{template-fragments-BajTajb4.cjs → template-fragments-C_zSHJAa.cjs} +1 -1
  112. package/dist/{template-fragments-DmX5XK4N.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-u11fPd8D.js → template-registry-BIhIHOab.js} +319 -314
  116. package/dist/template-registry-DzWswQI5.cjs +1 -0
  117. package/dist/vue/async.d.cts +528 -33
  118. package/dist/vue/async.d.ts +528 -33
  119. package/dist/vue/index.d.cts +616 -64
  120. package/dist/vue/index.d.ts +616 -64
  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-DN5LSA5C.cjs → workbook-session-B94EwVa_.cjs} +1 -1
  126. package/dist/{workbook-session-B8pNW24X.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 +120 -13
  133. package/dist/xlsx.d.ts +120 -13
  134. package/dist/xlsx.js +313 -279
  135. package/package.json +1 -1
  136. package/dist/ParamEditor-B5UZRgxv.cjs +0 -1
  137. package/dist/ParamEditor-DNNARyeB.js +0 -594
  138. package/dist/ReportBatchPanel-Ctvs2t_9.cjs +0 -1
  139. package/dist/ReportPreview-BdQawRh0.js +0 -4879
  140. package/dist/ReportPreview-CJC_-j2I.cjs +0 -6
  141. package/dist/RuleEditor-DkRjOLlr.js +0 -2141
  142. package/dist/RuleEditor-h5anGsDB.cjs +0 -1
  143. package/dist/assets-BIMVwjQe.js +0 -231
  144. package/dist/assets-Dfs2ElxI.cjs +0 -1
  145. package/dist/component-tree-Ca6YYfHq.js +0 -61
  146. package/dist/component-tree-DkGLEfZC.cjs +0 -1
  147. package/dist/computed-BW5a8QFk.js +0 -612
  148. package/dist/computed-C2GD3XcE.cjs +0 -1
  149. package/dist/config-Dg_o8e7m.cjs +0 -1
  150. package/dist/config-XQ4qrQ7Q.js +0 -844
  151. package/dist/designer-D9XAxqSc.js +0 -5178
  152. package/dist/designer-uCDo5XSK.cjs +0 -2
  153. package/dist/drill-ByN8COs_.cjs +0 -1
  154. package/dist/drill-CKW3Xtfa.js +0 -145
  155. package/dist/json-snapshot-D7PE1NsU.cjs +0 -2
  156. package/dist/json-snapshot-DYmEe3sO.js +0 -1779
  157. package/dist/matrix-JLAXlux-.js +0 -302
  158. package/dist/matrix-gTHpDTGm.cjs +0 -1
  159. package/dist/param-validation-C3HlcLLO.cjs +0 -1
  160. package/dist/param-validation-Do7Eg8Zv.js +0 -181
  161. package/dist/record-bindings-B86Sur_y.cjs +0 -1
  162. package/dist/runtime-DakRXui3.js +0 -170
  163. package/dist/runtime-dL5ygIfa.cjs +0 -1
  164. package/dist/sha256-BshdOkCC.cjs +0 -1
  165. package/dist/sha256-DTG-Gq8i.js +0 -157
  166. package/dist/template-bindings-C2SpvsMU.js +0 -58
  167. package/dist/template-bindings-CEtWyiLX.cjs +0 -1
  168. package/dist/template-registry-CpysHAxy.cjs +0 -1
  169. package/dist/tree-CLpxYbKa.cjs +0 -1
  170. package/dist/tree-DNJorJUf.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 {
@@ -101,6 +138,11 @@ declare interface CanvasSelection {
101
138
  pageIndex: number;
102
139
  componentIndex: number;
103
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
+ }>, {}>;
104
146
  /** Serializable symbol settings. Encoders remain in the optional /codes entry. */
105
147
  declare interface CodeOptions {
106
148
  /** Explicit content, including an empty value, takes precedence over legacy fallbackText. */
@@ -134,6 +176,28 @@ declare interface CodeOptions_3 {
134
176
  /** Human-readable content below a linear barcode. */
135
177
  showText?: boolean;
136
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
+ };
137
201
  /**
138
202
  * 列值格式化(声明式、JSON 可序列化)。
139
203
  * 在 paginate 的 cellText 出口统一消费:格式化发生在进 RenderPlan 之前,
@@ -200,6 +264,60 @@ declare type ColumnFormat_3 = {
200
264
  kind: "date";
201
265
  pattern?: string;
202
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;
203
321
  declare interface ComponentAssetRegistry {
204
322
  rendererFor(component: Readonly<PlanComponent>): ComponentImageRenderer | undefined;
205
323
  hasExtension(id: string, version: string, kind: string): boolean;
@@ -347,6 +465,27 @@ declare interface DatasetContract_2 {
347
465
  }
348
466
  declare type DatasetRows = Record<string, Record<string, unknown>[]>;
349
467
  declare type DatasetRows_2 = Record<string, Record<string, unknown>[]>;
468
+ export declare const DESIGNER_GUIDE_MESSAGES: {
469
+ readonly title: "操作指引";
470
+ readonly prompt: "这次想调整什么?";
471
+ readonly close: "关闭操作指引";
472
+ readonly fields: "改字段、对齐和颜色";
473
+ readonly fieldsHint: "选中一列,再修改属性;支持数据条与色阶";
474
+ readonly components: "加图表、二维码或条码";
475
+ readonly componentsHint: "进入画布,添加组件并绑定真实字段";
476
+ readonly layout: "改纸张、页数和份数";
477
+ readonly layoutHint: "设置毫米尺寸、标准纸型及逐记录输出";
478
+ readonly excel: "从 Excel 还原模板";
479
+ readonly excelHint: "导入工作簿,再明确字段和区域绑定";
480
+ readonly rules: "配计算和条件样式";
481
+ readonly rulesHint: "先配置,再应用到模板;不会修改接口实绩";
482
+ readonly review: "检查并定位问题";
483
+ readonly reviewHint: "校验字段依赖、样例结果与输出限制";
484
+ readonly result: "预览确认效果后保存模板;高级 JSON 保留给需要时使用。";
485
+ };
486
+ export declare type DesignerGuideMessages = {
487
+ [K in keyof typeof DESIGNER_GUIDE_MESSAGES]: string;
488
+ };
350
489
  /** Optional wizard labels remain independent of the general designer configuration. */
351
490
  export declare const EXCEL_BINDING_MESSAGES: {
352
491
  recoveredMapping: string;
@@ -668,7 +807,21 @@ declare interface ExpressionOptions_3 {
668
807
  nulls?: "propagate" | "error";
669
808
  divisionByZero?: "null" | "error";
670
809
  }
810
+ declare interface FormulaAdapter {
811
+ /** Explicit trusted engine; core never evaluates source code/macros/external workbook references. */
812
+ evaluate(expression: string, context: {
813
+ row: Readonly<Record<string, unknown>>;
814
+ rowIndex: number;
815
+ rows: readonly Record<string, unknown>[];
816
+ }): unknown;
817
+ }
671
818
  declare interface GridCell {
819
+ /** Resolved visual only. Original value, text, editability and source are unchanged. */
820
+ dataBar?: {
821
+ start: number;
822
+ end: number;
823
+ color: string;
824
+ };
672
825
  /** Styled cell content; text remains a plain-text fallback. Imported rich cells are read-only. */
673
826
  richParagraphs?: RichParagraph[];
674
827
  text?: string;
@@ -694,6 +847,12 @@ declare interface GridCell {
694
847
  style?: ComponentStyle;
695
848
  }
696
849
  declare interface GridCell_2 {
850
+ /** Resolved visual only. Original value, text, editability and source are unchanged. */
851
+ dataBar?: {
852
+ start: number;
853
+ end: number;
854
+ color: string;
855
+ };
697
856
  /** Styled cell content; text remains a plain-text fallback. Imported rich cells are read-only. */
698
857
  richParagraphs?: RichParagraph_2[];
699
858
  text?: string;
@@ -719,6 +878,12 @@ declare interface GridCell_2 {
719
878
  style?: ComponentStyle_2;
720
879
  }
721
880
  declare interface GridCell_3 {
881
+ /** Resolved visual only. Original value, text, editability and source are unchanged. */
882
+ dataBar?: {
883
+ start: number;
884
+ end: number;
885
+ color: string;
886
+ };
722
887
  /** Styled cell content; text remains a plain-text fallback. Imported rich cells are read-only. */
723
888
  richParagraphs?: RichParagraph_3[];
724
889
  text?: string;
@@ -756,6 +921,53 @@ declare interface ImageMediaOptions {
756
921
  /** Maximum source dimension, default 16384 pixels. */
757
922
  maxImageDimension?: number;
758
923
  }
924
+ export declare const LABEL_STUDIO_MESSAGES: {
925
+ readonly applyFirst: "请先应用当前配置或修正模板问题,再切换打印预览。";
926
+ readonly saveFailed: "模板尚未保存,请检查提示后重试。";
927
+ readonly title: "标识打印";
928
+ readonly preview: "打印预览";
929
+ readonly design: "设计标签";
930
+ readonly records: "预览记录";
931
+ readonly all: "全部记录";
932
+ readonly record: "记录序号";
933
+ readonly single: "单条预览";
934
+ readonly faces: "个版面";
935
+ readonly labels: "张标签";
936
+ readonly session: "当前会话模板";
937
+ readonly flow: "选择记录 → 设计标签 → 预览并打印";
938
+ readonly guide: "使用指引";
939
+ readonly help: "在画布点选文字或码图,再设置绑定字段;在“模板”中调整纸张与份数。";
940
+ readonly size: "纸张与份数";
941
+ readonly bindings: "字段与码图";
942
+ readonly count: "条记录";
943
+ readonly invalidCopies: "份数待校验";
944
+ readonly sheet: "A4 标签拼版";
945
+ readonly sheetHint: "2 列 × 4 行,保持原尺寸";
946
+ readonly printHint: "先试打一张,使用同规格纸张与 100% 比例核对尺寸和扫码。";
947
+ readonly empty: "暂无可打印记录";
948
+ readonly save: "保存标签模板";
949
+ };
950
+ /** Named business row interfaces and readonly arrays need no index signature or conversion. */
951
+ declare type LabelReportRows = readonly object[];
952
+ export declare interface LabelStudioController {
953
+ readonly busy?: boolean;
954
+ guardChanges(): Promise<boolean>;
955
+ prepare(): Promise<ReportTemplateDocument | undefined>;
956
+ }
957
+ export declare type LabelStudioMessages = {
958
+ [K in keyof typeof LABEL_STUDIO_MESSAGES]: string;
959
+ };
960
+ export declare interface LabelStudioOptions {
961
+ rows: LabelReportRows;
962
+ schema: DatasetContract;
963
+ title?: string;
964
+ identityField?: string;
965
+ modelValue?: ReportTemplateDocument;
966
+ preview?: TemplateEditorOptions["preview"];
967
+ save?: TemplateEditorOptions["save"];
968
+ beforeDiscard?: TemplateEditorOptions["beforeDiscard"];
969
+ messages?: Partial<LabelStudioMessages>;
970
+ }
759
971
  /** auto:真实数字/显式数值格式居右,日期与布尔居中,其他内容居左。 */
760
972
  declare type ListAlignment = NonNullable<ComponentStyle["align"]> | "auto";
761
973
  /** auto:真实数字/显式数值格式居右,日期与布尔居中,其他内容居左。 */
@@ -777,6 +989,8 @@ declare interface ListColumn {
777
989
  format?: ColumnFormat;
778
990
  /** 条件格式规则(声明式,命中合并进单元格样式;如负数红字) */
779
991
  rules?: StyleRule[];
992
+ /** Optional resolved color scale or value-preserving data bar. */
993
+ visual?: ColumnVisual;
780
994
  /** 内容列编辑控制;仍需由预览显式开启 editing,不影响表头/小计只读规则。 */
781
995
  editable?: boolean;
782
996
  /** 空值列或特殊数据类型可显式声明编辑输入类型。 */
@@ -802,6 +1016,8 @@ declare interface ListColumn_2 {
802
1016
  format?: ColumnFormat_2;
803
1017
  /** 条件格式规则(声明式,命中合并进单元格样式;如负数红字) */
804
1018
  rules?: StyleRule_2[];
1019
+ /** Optional resolved color scale or value-preserving data bar. */
1020
+ visual?: ColumnVisual_2;
805
1021
  /** 内容列编辑控制;仍需由预览显式开启 editing,不影响表头/小计只读规则。 */
806
1022
  editable?: boolean;
807
1023
  /** 空值列或特殊数据类型可显式声明编辑输入类型。 */
@@ -827,6 +1043,8 @@ declare interface ListColumn_3 {
827
1043
  format?: ColumnFormat_3;
828
1044
  /** 条件格式规则(声明式,命中合并进单元格样式;如负数红字) */
829
1045
  rules?: StyleRule_3[];
1046
+ /** Optional resolved color scale or value-preserving data bar. */
1047
+ visual?: ColumnVisual_3;
830
1048
  /** 内容列编辑控制;仍需由预览显式开启 editing,不影响表头/小计只读规则。 */
831
1049
  editable?: boolean;
832
1050
  /** 空值列或特殊数据类型可显式声明编辑输入类型。 */
@@ -1146,6 +1364,10 @@ declare interface MachReportDefaults {
1146
1364
  xlsx?: XlsxRenderOptions;
1147
1365
  /** 默认关闭;true 为本地草稿,对象可提供权限、校验和保存回调。 */
1148
1366
  editable?: boolean | ReportEditingOptions;
1367
+ /** Optional reference-data loader; review and atomic editing are maintained inside the package. */
1368
+ prefill?: ReportPrefillReviewOptions | false;
1369
+ /** Compare a reference with the same query result rendered in the report. */
1370
+ dataComparison?: ReportDataComparisonReviewOptions | false;
1149
1371
  /** 默认关闭;启用后提供导入按钮。ExcelJS 仅在导入时加载。 */
1150
1372
  excelImport?: boolean | ExcelImportOptions;
1151
1373
  }
@@ -1158,7 +1380,14 @@ declare type MachReportLogger = Pick<Console, "warn" | "info">;
1158
1380
  * - 优先级:组件 props > 路由级叠加 > preset > defaults(props 永远最高)
1159
1381
  */
1160
1382
  /** 工具栏与状态文案(默认简体中文;出海场景覆写) */
1161
- declare interface MachReportMessages extends Partial<ReportCalculationMessages>, ReportPrintMessages, ReportParamOptionsMessages {
1383
+ declare interface MachReportMessages extends Partial<ReportCalculationMessages>, Partial<ReportDataReviewMessages>, ReportPrintMessages, ReportParamOptionsMessages {
1384
+ reviewTools?: string;
1385
+ validationTitle?: string;
1386
+ validationError?: string;
1387
+ validationWarning?: string;
1388
+ validationDataset?: string;
1389
+ validationRow?: string;
1390
+ validationMore?: string;
1162
1391
  drillActions?: string;
1163
1392
  drillOpening?: string;
1164
1393
  drillMissingValue?: string;
@@ -1337,7 +1566,14 @@ declare interface MachReportMessages extends Partial<ReportCalculationMessages>,
1337
1566
  * - 优先级:组件 props > 路由级叠加 > preset > defaults(props 永远最高)
1338
1567
  */
1339
1568
  /** 工具栏与状态文案(默认简体中文;出海场景覆写) */
1340
- declare interface MachReportMessages_2 extends Partial<ReportCalculationMessages_2>, ReportPrintMessages_2, ReportParamOptionsMessages_2 {
1569
+ declare interface MachReportMessages_2 extends Partial<ReportCalculationMessages_2>, Partial<ReportDataReviewMessages_2>, ReportPrintMessages_2, ReportParamOptionsMessages_2 {
1570
+ reviewTools?: string;
1571
+ validationTitle?: string;
1572
+ validationError?: string;
1573
+ validationWarning?: string;
1574
+ validationDataset?: string;
1575
+ validationRow?: string;
1576
+ validationMore?: string;
1341
1577
  drillActions?: string;
1342
1578
  drillOpening?: string;
1343
1579
  drillMissingValue?: string;
@@ -1650,6 +1886,7 @@ declare interface MatrixTableOptions_3 {
1650
1886
  /** Hierarchical aggregate work, checked before measure reads; default 10 million updates. */
1651
1887
  maxAggregateUpdates?: number;
1652
1888
  }
1889
+ declare function openPanel(target: TemplateEditorPanel): void;
1653
1890
  declare interface OutputDiagnostic {
1654
1891
  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";
1655
1892
  severity: "warning";
@@ -1761,6 +1998,13 @@ export declare const PARAM_EDITOR_MESSAGES: {
1761
1998
  paramYear: string;
1762
1999
  paramDateRange: string;
1763
2000
  paramSelect: string;
2001
+ paramMultiSelect: string;
2002
+ paramCascader: string;
2003
+ paramNumberRange: string;
2004
+ paramMinItems: string;
2005
+ paramMaxItems: string;
2006
+ paramChildAdd: string;
2007
+ paramTreeHint: string;
1764
2008
  };
1765
2009
  export declare const ParamEditor: DefineComponent<ParamEditorOptions, {
1766
2010
  pending: ComputedRef<boolean>;
@@ -1777,10 +2021,14 @@ export declare interface ParamEditorOptions {
1777
2021
  document: ReportTemplateDocument;
1778
2022
  readonly?: boolean;
1779
2023
  messages?: Partial<ParamEditorMessages>;
2024
+ /** Reuses the same trusted option resolver used by ReportPreview. */
2025
+ loadOptions?: ReportParamOptionsLoader_2;
1780
2026
  /** Return false when the enclosing template transaction rejects the change. */
1781
2027
  accept(definitions: ReportParamDef[]): boolean;
1782
2028
  }
1783
2029
  declare interface PlanComponent {
2030
+ /** Template-only aggregate binding, expanded into shared primitives during layout. */
2031
+ chartBinding?: ReportChartBinding;
1784
2032
  /** Optional QR/barcode encoding configuration; no encoder is loaded by the core. */
1785
2033
  code?: CodeOptions;
1786
2034
  /** Template-only binding; resolved and removed before constructing the output plan. */
@@ -1809,6 +2057,8 @@ declare interface PlanComponent {
1809
2057
  fallbackText?: string;
1810
2058
  }
1811
2059
  declare interface PlanComponent_2 {
2060
+ /** Template-only aggregate binding, expanded into shared primitives during layout. */
2061
+ chartBinding?: ReportChartBinding_2;
1812
2062
  /** Optional QR/barcode encoding configuration; no encoder is loaded by the core. */
1813
2063
  code?: CodeOptions_2;
1814
2064
  /** Template-only binding; resolved and removed before constructing the output plan. */
@@ -1837,6 +2087,8 @@ declare interface PlanComponent_2 {
1837
2087
  fallbackText?: string;
1838
2088
  }
1839
2089
  declare interface PlanComponent_3 {
2090
+ /** Template-only aggregate binding, expanded into shared primitives during layout. */
2091
+ chartBinding?: ReportChartBinding_3;
1840
2092
  /** Optional QR/barcode encoding configuration; no encoder is loaded by the core. */
1841
2093
  code?: CodeOptions_3;
1842
2094
  /** Template-only binding; resolved and removed before constructing the output plan. */
@@ -1891,6 +2143,18 @@ declare interface PlanGrid_3 {
1891
2143
  /** 单元格四边内距;旧静态网格默认 0.5mm,分页列表使用其真实测量内距。 */
1892
2144
  paddingMm?: number;
1893
2145
  }
2146
+ declare interface PlanPage {
2147
+ meta?: Record<string, unknown>;
2148
+ /** wide 表示完整自然列宽;页面仅为预览的垂直窗口分段。 */
2149
+ layout?: "page" | "wide";
2150
+ pageWidthMm: number;
2151
+ pageHeightMm: number;
2152
+ marginTopMm?: number;
2153
+ marginBottomMm?: number;
2154
+ marginLeftMm?: number;
2155
+ marginRightMm?: number;
2156
+ components: PlanComponent[];
2157
+ }
1894
2158
  /** 列表的逻辑行来源;用于连续 Excel 重组,避免按文本猜测重复表头。 */
1895
2159
  declare interface PlanTableFragment {
1896
2160
  /** 在整个计划中唯一的逻辑表身份;同一表的分页片段共享身份。 */
@@ -1940,6 +2204,37 @@ declare interface PlanTableFragment_3 {
1940
2204
  };
1941
2205
  }
1942
2206
  declare const PRODUCT_TEMPLATE_EDITOR_MESSAGES: {
2207
+ chartNumeric: string;
2208
+ chartNumber: string;
2209
+ chartDecimal: string;
2210
+ chartDigits: string;
2211
+ chartWeight: string;
2212
+ chartWeightedAverage: string;
2213
+ chartNumberOptions: string;
2214
+ chartStacked: string;
2215
+ chartPercent: string;
2216
+ chartDataset: string;
2217
+ chartCategory: string;
2218
+ chartMeasure: string;
2219
+ chartAggregation: string;
2220
+ chartSeries: string;
2221
+ chartAddSeries: string;
2222
+ chartRemoveSeries: string;
2223
+ chartRecordCount: string;
2224
+ chartSum: string;
2225
+ chartAverage: string;
2226
+ chartMinimum: string;
2227
+ chartMaximum: string;
2228
+ chartType: string;
2229
+ chartBar: string;
2230
+ chartLine: string;
2231
+ chartSort: string;
2232
+ chartNatural: string;
2233
+ chartAscending: string;
2234
+ chartDescending: string;
2235
+ chartTitle: string;
2236
+ chartValues: string;
2237
+ chartBindingNote: string;
1943
2238
  toolTarget: string;
1944
2239
  toolPreview: string;
1945
2240
  toolPreviewHide: string;
@@ -2135,6 +2430,12 @@ declare const PRODUCT_TEMPLATE_EDITOR_MESSAGES: {
2135
2430
  fieldPosition: string;
2136
2431
  previewFieldDirectory: string;
2137
2432
  };
2433
+ declare interface RenderPlan {
2434
+ schemaVersion: string;
2435
+ /** 编辑需要模板重算上下文;跨 Worker/JSON 保留要求,但不声明本地会话可用。 */
2436
+ requiresRecalculation?: boolean;
2437
+ pages: PlanPage[];
2438
+ }
2138
2439
  export declare const REPORT_BATCH_MESSAGES: {
2139
2440
  batchTitle: string;
2140
2441
  batchDescription: string;
@@ -2263,6 +2564,10 @@ declare interface ReportCalculationMessages_2 {
2263
2564
  calculationErrorOverflow: string;
2264
2565
  calculationErrorPrecision: string;
2265
2566
  }
2567
+ declare interface ReportCandidateValidationOptions extends Pick<ReportDatasetValidationOptions, "rules" | "maxChecks" | "maxIssues"> {
2568
+ /** Warnings are visible and allowed by default; block explicitly when required by business policy. */
2569
+ warningPolicy?: "allow" | "block";
2570
+ }
2266
2571
  /** 预览中的物理坐标;合并单元格使用左上角坐标。 */
2267
2572
  declare interface ReportCellAddress {
2268
2573
  pageIndex: number;
@@ -2362,6 +2667,268 @@ declare interface ReportCellTableIdentity {
2362
2667
  }
2363
2668
  declare type ReportCellValue = string | number | boolean | null;
2364
2669
  declare type ReportCellValueType = NonNullable<GridCell["valueType"]>;
2670
+ /** Serializable binding; data and authorization continue to come from the existing report source. */
2671
+ declare interface ReportChartBinding {
2672
+ dataset: string;
2673
+ categoryField: string;
2674
+ measures: readonly ReportChartMeasure[];
2675
+ type: ReportChartOptions["type"];
2676
+ sort?: "asc" | "desc";
2677
+ title?: string;
2678
+ showValues?: boolean;
2679
+ maxRows?: number;
2680
+ maxCategories?: number;
2681
+ }
2682
+ /** Serializable binding; data and authorization continue to come from the existing report source. */
2683
+ declare interface ReportChartBinding_2 {
2684
+ dataset: string;
2685
+ categoryField: string;
2686
+ measures: readonly ReportChartMeasure_2[];
2687
+ type: ReportChartOptions_2["type"];
2688
+ sort?: "asc" | "desc";
2689
+ title?: string;
2690
+ showValues?: boolean;
2691
+ maxRows?: number;
2692
+ maxCategories?: number;
2693
+ }
2694
+ /** Serializable binding; data and authorization continue to come from the existing report source. */
2695
+ declare interface ReportChartBinding_3 {
2696
+ dataset: string;
2697
+ categoryField: string;
2698
+ measures: readonly ReportChartMeasure_3[];
2699
+ type: ReportChartOptions_3["type"];
2700
+ sort?: "asc" | "desc";
2701
+ title?: string;
2702
+ showValues?: boolean;
2703
+ maxRows?: number;
2704
+ maxCategories?: number;
2705
+ }
2706
+ declare interface ReportChartMeasure extends AggregateRequest {
2707
+ label?: string;
2708
+ color?: string;
2709
+ }
2710
+ declare interface ReportChartMeasure_2 extends AggregateRequest_2 {
2711
+ label?: string;
2712
+ color?: string;
2713
+ }
2714
+ declare interface ReportChartMeasure_3 extends AggregateRequest_3 {
2715
+ label?: string;
2716
+ color?: string;
2717
+ }
2718
+ declare interface ReportChartOptions {
2719
+ type: "bar" | "line" | "stackedBar" | "percentBar";
2720
+ categories: readonly string[];
2721
+ series: readonly ReportChartSeries[];
2722
+ leftMm: number;
2723
+ topMm: number;
2724
+ widthMm: number;
2725
+ heightMm: number;
2726
+ title?: string;
2727
+ showValues?: boolean;
2728
+ }
2729
+ declare interface ReportChartOptions_2 {
2730
+ type: "bar" | "line" | "stackedBar" | "percentBar";
2731
+ categories: readonly string[];
2732
+ series: readonly ReportChartSeries_2[];
2733
+ leftMm: number;
2734
+ topMm: number;
2735
+ widthMm: number;
2736
+ heightMm: number;
2737
+ title?: string;
2738
+ showValues?: boolean;
2739
+ }
2740
+ declare interface ReportChartOptions_3 {
2741
+ type: "bar" | "line" | "stackedBar" | "percentBar";
2742
+ categories: readonly string[];
2743
+ series: readonly ReportChartSeries_3[];
2744
+ leftMm: number;
2745
+ topMm: number;
2746
+ widthMm: number;
2747
+ heightMm: number;
2748
+ title?: string;
2749
+ showValues?: boolean;
2750
+ }
2751
+ declare interface ReportChartSeries {
2752
+ name: string;
2753
+ values: readonly (number | null)[];
2754
+ color?: string;
2755
+ }
2756
+ declare interface ReportChartSeries_2 {
2757
+ name: string;
2758
+ values: readonly (number | null)[];
2759
+ color?: string;
2760
+ }
2761
+ declare interface ReportChartSeries_3 {
2762
+ name: string;
2763
+ values: readonly (number | null)[];
2764
+ color?: string;
2765
+ }
2766
+ declare interface ReportComparison {
2767
+ field: string;
2768
+ op: ">" | ">=" | "<" | "<=" | "==" | "!=" | "between" | "contains" | "isNull" | "isNotNull";
2769
+ /** Legacy scalar thresholds remain supported. Use right for field-to-field comparisons. */
2770
+ value?: ReportPredicateScalar;
2771
+ right?: ReportPredicateOperand;
2772
+ values?: readonly [
2773
+ ReportPredicateScalar,
2774
+ ReportPredicateScalar
2775
+ ];
2776
+ numeric?: "number" | "decimal";
2777
+ valueType?: "number" | "decimal" | "text" | "date" | "boolean";
2778
+ }
2779
+ declare interface ReportComparison_2 {
2780
+ field: string;
2781
+ op: ">" | ">=" | "<" | "<=" | "==" | "!=" | "between" | "contains" | "isNull" | "isNotNull";
2782
+ /** Legacy scalar thresholds remain supported. Use right for field-to-field comparisons. */
2783
+ value?: ReportPredicateScalar_2;
2784
+ right?: ReportPredicateOperand_2;
2785
+ values?: readonly [
2786
+ ReportPredicateScalar_2,
2787
+ ReportPredicateScalar_2
2788
+ ];
2789
+ numeric?: "number" | "decimal";
2790
+ valueType?: "number" | "decimal" | "text" | "date" | "boolean";
2791
+ }
2792
+ declare interface ReportComparison_3 {
2793
+ field: string;
2794
+ op: ">" | ">=" | "<" | "<=" | "==" | "!=" | "between" | "contains" | "isNull" | "isNotNull";
2795
+ /** Legacy scalar thresholds remain supported. Use right for field-to-field comparisons. */
2796
+ value?: ReportPredicateScalar_3;
2797
+ right?: ReportPredicateOperand_3;
2798
+ values?: readonly [
2799
+ ReportPredicateScalar_3,
2800
+ ReportPredicateScalar_3
2801
+ ];
2802
+ numeric?: "number" | "decimal";
2803
+ valueType?: "number" | "decimal" | "text" | "date" | "boolean";
2804
+ }
2805
+ declare interface ReportDataComparisonField {
2806
+ field: string;
2807
+ label?: string;
2808
+ /** Numeric comparison is explicit; identifiers containing digits stay text. */
2809
+ type?: "value" | "decimal";
2810
+ /** Absolute decimal tolerance, inclusive. No binary floating-point subtraction. */
2811
+ tolerance?: string;
2812
+ /** Fractional ratio digits. changeRatio is (after - before) / before, not a percent. */
2813
+ ratioDigits?: number;
2814
+ zeroDenominator?: "omit" | "zero-if-equal";
2815
+ missing?: "distinct" | "empty-equivalent" | "zero";
2816
+ }
2817
+ declare interface ReportDataComparisonReviewOptions extends ReportDataReviewSource {
2818
+ fields: readonly ReportDataComparisonField[];
2819
+ maxDifferences?: number;
2820
+ }
2821
+ declare interface ReportDataLimits {
2822
+ maxRows?: number;
2823
+ maxFields?: number;
2824
+ maxCells?: number;
2825
+ }
2826
+ /** A business record, never a physical report row index. */
2827
+ declare interface ReportDataRecord {
2828
+ rowKey: string | number;
2829
+ values: Readonly<Record<string, ReportCellValue>>;
2830
+ }
2831
+ declare interface ReportDataReviewMessages {
2832
+ prefillTitle: string;
2833
+ prefillHint: string;
2834
+ prefillCurrent: string;
2835
+ prefillReference: string;
2836
+ prefillLoad: string;
2837
+ prefillApply: string;
2838
+ prefillMatched: string;
2839
+ prefillChanged: string;
2840
+ prefillSkipped: string;
2841
+ prefillConflict: string;
2842
+ prefillUnchanged: string;
2843
+ prefillReadonly: string;
2844
+ prefillOccupied: string;
2845
+ prefillMissingSource: string;
2846
+ prefillMissingTarget: string;
2847
+ prefillAmbiguous: string;
2848
+ prefillInvalid: string;
2849
+ comparisonTitle: string;
2850
+ comparisonHint: string;
2851
+ comparisonLoad: string;
2852
+ comparisonAdded: string;
2853
+ comparisonRemoved: string;
2854
+ comparisonChanged: string;
2855
+ comparisonUnchanged: string;
2856
+ reviewCancel: string;
2857
+ reviewClose: string;
2858
+ reviewBefore: string;
2859
+ reviewAfter: string;
2860
+ reviewField: string;
2861
+ reviewKey: string;
2862
+ reviewDelta: string;
2863
+ reviewRatio: string;
2864
+ reviewLocate: string;
2865
+ reviewEmpty: string;
2866
+ reviewPrevious: string;
2867
+ reviewNext: string;
2868
+ reviewPage: string;
2869
+ }
2870
+ declare interface ReportDataReviewMessages_2 {
2871
+ prefillTitle: string;
2872
+ prefillHint: string;
2873
+ prefillCurrent: string;
2874
+ prefillReference: string;
2875
+ prefillLoad: string;
2876
+ prefillApply: string;
2877
+ prefillMatched: string;
2878
+ prefillChanged: string;
2879
+ prefillSkipped: string;
2880
+ prefillConflict: string;
2881
+ prefillUnchanged: string;
2882
+ prefillReadonly: string;
2883
+ prefillOccupied: string;
2884
+ prefillMissingSource: string;
2885
+ prefillMissingTarget: string;
2886
+ prefillAmbiguous: string;
2887
+ prefillInvalid: string;
2888
+ comparisonTitle: string;
2889
+ comparisonHint: string;
2890
+ comparisonLoad: string;
2891
+ comparisonAdded: string;
2892
+ comparisonRemoved: string;
2893
+ comparisonChanged: string;
2894
+ comparisonUnchanged: string;
2895
+ reviewCancel: string;
2896
+ reviewClose: string;
2897
+ reviewBefore: string;
2898
+ reviewAfter: string;
2899
+ reviewField: string;
2900
+ reviewKey: string;
2901
+ reviewDelta: string;
2902
+ reviewRatio: string;
2903
+ reviewLocate: string;
2904
+ reviewEmpty: string;
2905
+ reviewPrevious: string;
2906
+ reviewNext: string;
2907
+ reviewPage: string;
2908
+ }
2909
+ declare interface ReportDataReviewSource extends ReportDataLimits {
2910
+ sourceScope?: string;
2911
+ datasetId: string;
2912
+ label?: string;
2913
+ /** The host chooses history/instances; this package never guesses an endpoint or period. */
2914
+ load(operation: {
2915
+ signal: AbortSignal;
2916
+ }): readonly ReportDataRecord[] | Promise<readonly ReportDataRecord[]>;
2917
+ /** Cancel loaders that do not finish; default 15 seconds, bounded at 120 seconds. */
2918
+ timeoutMs?: number;
2919
+ }
2920
+ declare interface ReportDatasetValidationOptions {
2921
+ rules: readonly ReportValidationRule[];
2922
+ rowKey?: string;
2923
+ computed?: readonly ComputedField[];
2924
+ /** Explicit trusted engine, shared with pagination; never read from a serialized template. */
2925
+ formula?: FormulaAdapter;
2926
+ /** Uses the same bounded tree preparation and descendant-leaf summaries as pagination. */
2927
+ tree?: TreeTableOptions;
2928
+ maxChecks?: number;
2929
+ maxIssues?: number;
2930
+ signal?: AbortSignal;
2931
+ }
2365
2932
  declare type ReportDiscardReason = "reload" | "import" | "replace" | "leave";
2366
2933
  declare interface ReportDocumentStyle {
2367
2934
  id: string;
@@ -2431,6 +2998,10 @@ declare interface ReportEditingOptions {
2431
2998
  canEdit?(context: ReportCellContext): boolean;
2432
2999
  /** Return an error message or throw to reject the edit. */
2433
3000
  validate?(edit: Readonly<ReportCellEdit>, operation: ReportEditOperation): void | string | Promise<void | string>;
3001
+ /** Same declarative rules can be run in Node via validateReportDataset. Requires a source-backed session. */
3002
+ validation?: ReportCandidateValidationOptions;
3003
+ /** Optional host batch validation sees the fully recalculated candidate plan. */
3004
+ validateBatch?(batch: Readonly<ReportEditBatch>, candidate: RenderPlan, operation: ReportEditOperation): void | readonly ReportValidationIssue[] | Promise<void | readonly ReportValidationIssue[]>;
2434
3005
  /** Called before applying the change. A rejection leaves the current report untouched. */
2435
3006
  save?(edit: Readonly<ReportCellEdit>, operation: ReportEditOperation): void | ReportEditResult | Promise<void | ReportEditResult>;
2436
3007
  /** Must commit all edits in one server transaction. Required for multi-cell persisted edits. */
@@ -2490,7 +3061,9 @@ declare type ReportExpression = {
2490
3061
  field?: string;
2491
3062
  weightField?: string;
2492
3063
  } | {
2493
- op: "add" | "subtract" | "multiply" | "divide" | "coalesce";
3064
+ op: ReportExpressionOperation;
3065
+ /** Required for if; args are [then, else], and only the selected branch is evaluated. */
3066
+ condition?: ReportPredicate;
2494
3067
  args: readonly ReportExpression[];
2495
3068
  };
2496
3069
  declare type ReportExpression_2 = {
@@ -2502,7 +3075,9 @@ declare type ReportExpression_2 = {
2502
3075
  field?: string;
2503
3076
  weightField?: string;
2504
3077
  } | {
2505
- op: "add" | "subtract" | "multiply" | "divide" | "coalesce";
3078
+ op: ReportExpressionOperation_2;
3079
+ /** Required for if; args are [then, else], and only the selected branch is evaluated. */
3080
+ condition?: ReportPredicate_2;
2506
3081
  args: readonly ReportExpression_2[];
2507
3082
  };
2508
3083
  declare type ReportExpression_3 = {
@@ -2514,9 +3089,14 @@ declare type ReportExpression_3 = {
2514
3089
  field?: string;
2515
3090
  weightField?: string;
2516
3091
  } | {
2517
- op: "add" | "subtract" | "multiply" | "divide" | "coalesce";
3092
+ op: ReportExpressionOperation_3;
3093
+ /** Required for if; args are [then, else], and only the selected branch is evaluated. */
3094
+ condition?: ReportPredicate_3;
2518
3095
  args: readonly ReportExpression_3[];
2519
3096
  };
3097
+ declare type ReportExpressionOperation = "add" | "subtract" | "multiply" | "divide" | "coalesce" | "if" | "round" | "abs" | "concat" | "trim" | "upper" | "lower" | "dateYear" | "dateMonth" | "dateDay";
3098
+ declare type ReportExpressionOperation_2 = "add" | "subtract" | "multiply" | "divide" | "coalesce" | "if" | "round" | "abs" | "concat" | "trim" | "upper" | "lower" | "dateYear" | "dateMonth" | "dateDay";
3099
+ declare type ReportExpressionOperation_3 = "add" | "subtract" | "multiply" | "divide" | "coalesce" | "if" | "round" | "abs" | "concat" | "trim" | "upper" | "lower" | "dateYear" | "dateMonth" | "dateDay";
2520
3100
  declare type ReportFieldAggregation = "sum" | "avg" | "min" | "max" | "count" | "none";
2521
3101
  declare type ReportFieldAggregation_2 = "sum" | "avg" | "min" | "max" | "count" | "none";
2522
3102
  declare interface ReportFieldCalculation {
@@ -2608,6 +3188,16 @@ declare interface ReportInteractionOptions {
2608
3188
  /** Show workbook sheets / report sections when available. Default true. */
2609
3189
  navigation?: boolean;
2610
3190
  }
3191
+ /** Label workspace: a flat rows/schema contract with the existing designer and output pipeline. */
3192
+ export declare const ReportLabelStudio: DefineComponent<LabelStudioOptions, {
3193
+ guardChanges: () => Promise<boolean>;
3194
+ prepare: () => Promise<ReportTemplateDocument_3 | undefined>;
3195
+ busy: boolean;
3196
+ }, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
3197
+ "update:modelValue": (document: ReportTemplateDocument_3) => any;
3198
+ }, string, MachReportVuePublicProps, Readonly<LabelStudioOptions> & Readonly<{
3199
+ "onUpdate:modelValue"?: ((document: ReportTemplateDocument_3) => any) | undefined;
3200
+ }>, {}>;
2611
3201
  declare interface ReportOutputOptions {
2612
3202
  /** warn preserves supported output and shows diagnostics; strict rejects known fidelity loss. */
2613
3203
  fidelity?: "warn" | "strict";
@@ -2627,12 +3217,9 @@ declare interface ReportParamDef {
2627
3217
  field: string;
2628
3218
  /** 显示名(缺省用 field) */
2629
3219
  label?: string;
2630
- type?: "text" | "number" | "date" | "month" | "year" | "dateRange" | "select";
3220
+ type?: "text" | "number" | "date" | "month" | "year" | "dateRange" | "select" | "multiSelect" | "cascader" | "numberRange";
2631
3221
  /** select 选项 */
2632
- options?: Array<{
2633
- label: string;
2634
- value: string;
2635
- }>;
3222
+ options?: ReportParamTreeOption[];
2636
3223
  /** Opaque host-resolved source key. No URL, credentials or executable code is stored. */
2637
3224
  optionsSource?: string;
2638
3225
  /** Select dependencies must be declared parameters; changing a parent clears descendants. */
@@ -2645,6 +3232,9 @@ declare interface ReportParamDef {
2645
3232
  max?: number | string;
2646
3233
  minLength?: number;
2647
3234
  maxLength?: number;
3235
+ /** multiSelect item count (maximum 100). Cascader paths are bounded to 16 levels. */
3236
+ minItems?: number;
3237
+ maxItems?: number;
2648
3238
  }
2649
3239
  /** 报表参数定义(声明式,模板自描述参数面:渲染组件据此生成查询面板) */
2650
3240
  declare interface ReportParamDef_2 {
@@ -2652,12 +3242,9 @@ declare interface ReportParamDef_2 {
2652
3242
  field: string;
2653
3243
  /** 显示名(缺省用 field) */
2654
3244
  label?: string;
2655
- type?: "text" | "number" | "date" | "month" | "year" | "dateRange" | "select";
3245
+ type?: "text" | "number" | "date" | "month" | "year" | "dateRange" | "select" | "multiSelect" | "cascader" | "numberRange";
2656
3246
  /** select 选项 */
2657
- options?: Array<{
2658
- label: string;
2659
- value: string;
2660
- }>;
3247
+ options?: ReportParamTreeOption_2[];
2661
3248
  /** Opaque host-resolved source key. No URL, credentials or executable code is stored. */
2662
3249
  optionsSource?: string;
2663
3250
  /** Select dependencies must be declared parameters; changing a parent clears descendants. */
@@ -2670,6 +3257,9 @@ declare interface ReportParamDef_2 {
2670
3257
  max?: number | string;
2671
3258
  minLength?: number;
2672
3259
  maxLength?: number;
3260
+ /** multiSelect item count (maximum 100). Cascader paths are bounded to 16 levels. */
3261
+ minItems?: number;
3262
+ maxItems?: number;
2673
3263
  }
2674
3264
  /** 报表参数定义(声明式,模板自描述参数面:渲染组件据此生成查询面板) */
2675
3265
  declare interface ReportParamDef_3 {
@@ -2677,12 +3267,9 @@ declare interface ReportParamDef_3 {
2677
3267
  field: string;
2678
3268
  /** 显示名(缺省用 field) */
2679
3269
  label?: string;
2680
- type?: "text" | "number" | "date" | "month" | "year" | "dateRange" | "select";
3270
+ type?: "text" | "number" | "date" | "month" | "year" | "dateRange" | "select" | "multiSelect" | "cascader" | "numberRange";
2681
3271
  /** select 选项 */
2682
- options?: Array<{
2683
- label: string;
2684
- value: string;
2685
- }>;
3272
+ options?: ReportParamTreeOption_3[];
2686
3273
  /** Opaque host-resolved source key. No URL, credentials or executable code is stored. */
2687
3274
  optionsSource?: string;
2688
3275
  /** Select dependencies must be declared parameters; changing a parent clears descendants. */
@@ -2695,10 +3282,19 @@ declare interface ReportParamDef_3 {
2695
3282
  max?: number | string;
2696
3283
  minLength?: number;
2697
3284
  maxLength?: number;
3285
+ /** multiSelect item count (maximum 100). Cascader paths are bounded to 16 levels. */
3286
+ minItems?: number;
3287
+ maxItems?: number;
2698
3288
  }
2699
3289
  declare interface ReportParamOption {
2700
3290
  readonly label: string;
2701
3291
  readonly value: string;
3292
+ readonly children?: readonly ReportParamOption[];
3293
+ }
3294
+ declare interface ReportParamOption_2 {
3295
+ readonly label: string;
3296
+ readonly value: string;
3297
+ readonly children?: readonly ReportParamOption_2[];
2702
3298
  }
2703
3299
  declare interface ReportParamOptionsInput {
2704
3300
  readonly source: string;
@@ -2709,8 +3305,19 @@ declare interface ReportParamOptionsInput {
2709
3305
  readonly signal: AbortSignal;
2710
3306
  readonly limit: number;
2711
3307
  }
3308
+ declare interface ReportParamOptionsInput_2 {
3309
+ readonly source: string;
3310
+ readonly field: string;
3311
+ readonly query: string;
3312
+ /** Only declared dependencies, captured at request start. Never the mutable form. */
3313
+ readonly params: Readonly<Record<string, string>>;
3314
+ readonly signal: AbortSignal;
3315
+ readonly limit: number;
3316
+ }
2712
3317
  /** Resolve a trusted source key through the host's existing API/authentication. */
2713
3318
  declare type ReportParamOptionsLoader = (input: ReportParamOptionsInput) => Promise<readonly ReportParamOption[]>;
3319
+ /** Resolve a trusted source key through the host's existing API/authentication. */
3320
+ declare type ReportParamOptionsLoader_2 = (input: ReportParamOptionsInput_2) => Promise<readonly ReportParamOption_2[]>;
2714
3321
  declare interface ReportParamOptionsMessages {
2715
3322
  paramOptionsLoading?: string;
2716
3323
  paramOptionsEmpty?: string;
@@ -2718,6 +3325,8 @@ declare interface ReportParamOptionsMessages {
2718
3325
  paramOptionsMissingLoader?: string;
2719
3326
  paramOptionsDependencies?: string;
2720
3327
  paramOptionsClear?: string;
3328
+ paramNumberRangeStart?: string;
3329
+ paramNumberRangeEnd?: string;
2721
3330
  }
2722
3331
  declare interface ReportParamOptionsMessages_2 {
2723
3332
  paramOptionsLoading?: string;
@@ -2726,7 +3335,66 @@ declare interface ReportParamOptionsMessages_2 {
2726
3335
  paramOptionsMissingLoader?: string;
2727
3336
  paramOptionsDependencies?: string;
2728
3337
  paramOptionsClear?: string;
3338
+ paramNumberRangeStart?: string;
3339
+ paramNumberRangeEnd?: string;
3340
+ }
3341
+ /** Cascader values are unique within each sibling list. */
3342
+ declare interface ReportParamTreeOption {
3343
+ label: string;
3344
+ value: string;
3345
+ children?: ReportParamTreeOption[];
3346
+ }
3347
+ /** Cascader values are unique within each sibling list. */
3348
+ declare interface ReportParamTreeOption_2 {
3349
+ label: string;
3350
+ value: string;
3351
+ children?: ReportParamTreeOption_2[];
3352
+ }
3353
+ /** Cascader values are unique within each sibling list. */
3354
+ declare interface ReportParamTreeOption_3 {
3355
+ label: string;
3356
+ value: string;
3357
+ children?: ReportParamTreeOption_3[];
2729
3358
  }
3359
+ declare type ReportPredicate = ReportComparison | {
3360
+ all: readonly ReportPredicate[];
3361
+ } | {
3362
+ any: readonly ReportPredicate[];
3363
+ } | {
3364
+ not: ReportPredicate;
3365
+ };
3366
+ declare type ReportPredicate_2 = ReportComparison_2 | {
3367
+ all: readonly ReportPredicate_2[];
3368
+ } | {
3369
+ any: readonly ReportPredicate_2[];
3370
+ } | {
3371
+ not: ReportPredicate_2;
3372
+ };
3373
+ declare type ReportPredicate_3 = ReportComparison_3 | {
3374
+ all: readonly ReportPredicate_3[];
3375
+ } | {
3376
+ any: readonly ReportPredicate_3[];
3377
+ } | {
3378
+ not: ReportPredicate_3;
3379
+ };
3380
+ declare type ReportPredicateOperand = {
3381
+ field: string;
3382
+ } | {
3383
+ value: ReportPredicateScalar;
3384
+ };
3385
+ declare type ReportPredicateOperand_2 = {
3386
+ field: string;
3387
+ } | {
3388
+ value: ReportPredicateScalar_2;
3389
+ };
3390
+ declare type ReportPredicateOperand_3 = {
3391
+ field: string;
3392
+ } | {
3393
+ value: ReportPredicateScalar_3;
3394
+ };
3395
+ declare type ReportPredicateScalar = string | number | boolean | null;
3396
+ declare type ReportPredicateScalar_2 = string | number | boolean | null;
3397
+ declare type ReportPredicateScalar_3 = string | number | boolean | null;
2730
3398
  declare interface ReportPreferencesAdapter {
2731
3399
  load(key: string): Partial<ReportPreviewPreferences> | null | Promise<Partial<ReportPreviewPreferences> | null>;
2732
3400
  save(key: string, value: Readonly<Partial<ReportPreviewPreferences>>): void | Promise<void>;
@@ -2737,6 +3405,16 @@ declare interface ReportPreferencesOptions {
2737
3405
  key: string;
2738
3406
  adapter: ReportPreferencesAdapter;
2739
3407
  }
3408
+ declare interface ReportPrefillField {
3409
+ field: string;
3410
+ sourceField?: string;
3411
+ label?: string;
3412
+ }
3413
+ declare interface ReportPrefillReviewOptions extends ReportDataReviewSource {
3414
+ fields: readonly ReportPrefillField[];
3415
+ mode?: "empty" | "replace";
3416
+ maxChanges?: number;
3417
+ }
2740
3418
  declare type ReportPreviewPreferences = Record<ReportPreviewTool, boolean>;
2741
3419
  declare type ReportPreviewTool = "search" | "thumbnails" | "zoom" | ReportExportFormat | "print" | "pdfWindow" | "editing" | "import";
2742
3420
  declare interface ReportPrintCalibration {
@@ -2783,6 +3461,8 @@ declare interface ReportRuntimeBudget {
2783
3461
  maxRows?: number;
2784
3462
  maxPages?: number;
2785
3463
  maxCells?: number;
3464
+ /** Aggregate bound-chart primitives per prepare, before expansion; default 50000, hard maximum 1000000. */
3465
+ maxChartComponents?: number;
2786
3466
  maxOutputBytes?: number;
2787
3467
  /** Bound the plain JSON snapshot accepted by exportPrepared (default 64 MB). */
2788
3468
  maxPreparedBytes?: number;
@@ -2881,6 +3561,9 @@ declare interface ReportTemplateDocument_3 {
2881
3561
  template: ReportTemplate_3;
2882
3562
  }
2883
3563
  export declare const ReportTemplateEditor: DefineComponent<TemplateEditorOptions, {
3564
+ openPanel: typeof openPanel;
3565
+ canApply: boolean;
3566
+ saveReason: string;
2884
3567
  pendingLocalChanges: boolean;
2885
3568
  saving: boolean;
2886
3569
  blocked: boolean;
@@ -2896,7 +3579,9 @@ export declare const ReportTemplateEditor: DefineComponent<TemplateEditorOptions
2896
3579
  "onUpdate:modelValue"?: ((document: ReportTemplateDocument) => any) | undefined;
2897
3580
  onSaved?: ((document: ReportTemplateDocument) => any) | undefined;
2898
3581
  "onExcel-bound"?: ((result: ExcelBindingWizardApply) => any) | undefined;
2899
- }>, {}>;
3582
+ }>, {
3583
+ showSave: boolean;
3584
+ }>;
2900
3585
  declare interface ReportTemplateFixture {
2901
3586
  name: string;
2902
3587
  datasets: DatasetRows;
@@ -2955,6 +3640,29 @@ declare interface ReportTemplateReviewIssue {
2955
3640
  diagnostic?: OutputDiagnostic_2;
2956
3641
  }
2957
3642
  declare type ReportTemplateSummary = Omit<ReportTemplateDocument, "template">;
3643
+ declare interface ReportValidationIssue {
3644
+ ruleId: string;
3645
+ rowKey?: string | number;
3646
+ rowIndex?: number;
3647
+ field?: string;
3648
+ dataset?: string;
3649
+ sourceScope?: string;
3650
+ severity: "error" | "warning";
3651
+ message: string;
3652
+ }
3653
+ declare interface ReportValidationRule {
3654
+ id: string;
3655
+ /** Optional target; omitted applies to each candidate dataset. */
3656
+ dataset?: string;
3657
+ assert: ReportPredicate;
3658
+ when?: ReportPredicate;
3659
+ field?: string;
3660
+ severity?: "error" | "warning";
3661
+ message: string;
3662
+ scope?: "row" | "dataset";
3663
+ /** Dataset-scope assertions read this explicit summary row, never an arbitrary detail row. */
3664
+ aggregates?: readonly AggregateDefinition[];
3665
+ }
2958
3666
  declare interface RichParagraph {
2959
3667
  segments: RichSegment[];
2960
3668
  align?: ComponentStyle["align"];
@@ -3084,6 +3792,34 @@ export declare const RULE_EDITOR_MESSAGES: {
3084
3792
  null: string;
3085
3793
  true: string;
3086
3794
  false: string;
3795
+ if: string;
3796
+ round: string;
3797
+ abs: string;
3798
+ concat: string;
3799
+ trim: string;
3800
+ upper: string;
3801
+ lower: string;
3802
+ dateYear: string;
3803
+ dateMonth: string;
3804
+ dateDay: string;
3805
+ all: string;
3806
+ any: string;
3807
+ not: string;
3808
+ conditionGroup: string;
3809
+ addCondition: string;
3810
+ compareField: string;
3811
+ compareValue: string;
3812
+ between: string;
3813
+ contains: string;
3814
+ isNull: string;
3815
+ isNotNull: string;
3816
+ valueKind: string;
3817
+ calendarDate: string;
3818
+ upperBound: string;
3819
+ lowerBound: string;
3820
+ functionHelp: string;
3821
+ thenValue: string;
3822
+ elseValue: string;
3087
3823
  add: string;
3088
3824
  subtract: string;
3089
3825
  multiply: string;
@@ -3175,41 +3911,54 @@ export declare interface RuleEditorOptions {
3175
3911
  }
3176
3912
  /** 条件格式规则求值(声明式,见 ListColumn.rules) */
3177
3913
  declare interface StyleRule {
3178
- when: {
3179
- field: string;
3180
- op: ">" | ">=" | "<" | "<=" | "==" | "!=";
3181
- value: number | string;
3182
- /** Explicit decimal comparisons retain decimal thresholds as text. */
3183
- numeric?: "number" | "decimal";
3184
- };
3914
+ when: ReportPredicate;
3185
3915
  /** 命中时合并进单元格样式(color/bold/backgroundColor 等) */
3186
3916
  style: Record<string, unknown>;
3187
3917
  }
3188
3918
  /** 条件格式规则求值(声明式,见 ListColumn.rules) */
3189
3919
  declare interface StyleRule_2 {
3190
- when: {
3191
- field: string;
3192
- op: ">" | ">=" | "<" | "<=" | "==" | "!=";
3193
- value: number | string;
3194
- /** Explicit decimal comparisons retain decimal thresholds as text. */
3195
- numeric?: "number" | "decimal";
3196
- };
3920
+ when: ReportPredicate_2;
3197
3921
  /** 命中时合并进单元格样式(color/bold/backgroundColor 等) */
3198
3922
  style: Record<string, unknown>;
3199
3923
  }
3200
3924
  /** 条件格式规则求值(声明式,见 ListColumn.rules) */
3201
3925
  declare interface StyleRule_3 {
3202
- when: {
3203
- field: string;
3204
- op: ">" | ">=" | "<" | "<=" | "==" | "!=";
3205
- value: number | string;
3206
- /** Explicit decimal comparisons retain decimal thresholds as text. */
3207
- numeric?: "number" | "decimal";
3208
- };
3926
+ when: ReportPredicate_3;
3209
3927
  /** 命中时合并进单元格样式(color/bold/backgroundColor 等) */
3210
3928
  style: Record<string, unknown>;
3211
3929
  }
3212
3930
  export declare const TEMPLATE_EDITOR_MESSAGES: {
3931
+ chartNumeric: string;
3932
+ chartNumber: string;
3933
+ chartDecimal: string;
3934
+ chartDigits: string;
3935
+ chartWeight: string;
3936
+ chartWeightedAverage: string;
3937
+ chartNumberOptions: string;
3938
+ chartStacked: string;
3939
+ chartPercent: string;
3940
+ chartDataset: string;
3941
+ chartCategory: string;
3942
+ chartMeasure: string;
3943
+ chartAggregation: string;
3944
+ chartSeries: string;
3945
+ chartAddSeries: string;
3946
+ chartRemoveSeries: string;
3947
+ chartRecordCount: string;
3948
+ chartSum: string;
3949
+ chartAverage: string;
3950
+ chartMinimum: string;
3951
+ chartMaximum: string;
3952
+ chartType: string;
3953
+ chartBar: string;
3954
+ chartLine: string;
3955
+ chartSort: string;
3956
+ chartNatural: string;
3957
+ chartAscending: string;
3958
+ chartDescending: string;
3959
+ chartTitle: string;
3960
+ chartValues: string;
3961
+ chartBindingNote: string;
3213
3962
  toolTarget: string;
3214
3963
  toolPreview: string;
3215
3964
  toolPreviewHide: string;
@@ -3692,8 +4441,12 @@ export declare interface TemplateEditorConflictOptions {
3692
4441
  keepCopy?: (document: ReportTemplateDocument, context: TemplateCopyContext) => Promise<void>;
3693
4442
  }
3694
4443
  export declare interface TemplateEditorController {
4444
+ /** Open a task through the package navigation, without reaching into child DOM. */
4445
+ openPanel?(target: TemplateEditorPanel): void;
3695
4446
  /** Insert a native/registered component through validation, geometry constraints and undo history. */
3696
4447
  insertComponent(component: TemplateComponent): boolean;
4448
+ readonly canApply?: boolean;
4449
+ readonly saveReason?: string;
3697
4450
  readonly pendingLocalChanges: boolean;
3698
4451
  readonly saving?: boolean;
3699
4452
  readonly blocked?: boolean;
@@ -3704,6 +4457,9 @@ export declare interface TemplateEditorController {
3704
4457
  /** Newly introduced labels are optional for existing complete message dictionaries. */
3705
4458
  export declare type TemplateEditorMessages = typeof BASE_TEMPLATE_EDITOR_MESSAGES & Partial<typeof PRODUCT_TEMPLATE_EDITOR_MESSAGES>;
3706
4459
  export declare interface TemplateEditorOptions extends TemplateEditorConflictOptions {
4460
+ /** Hide the duplicate save action when the host already provides an apply/save footer. */
4461
+ showSave?: boolean;
4462
+ guideMessages?: Partial<DesignerGuideMessages>;
3707
4463
  /** Opt-in declaration-only recovery. Scope should include project and account identity. */
3708
4464
  draftStorage?: TemplateDraftStorage;
3709
4465
  recoveryMessages?: Partial<TemplateRecoveryMessages>;
@@ -3720,10 +4476,12 @@ export declare interface TemplateEditorOptions extends TemplateEditorConflictOpt
3720
4476
  bindingSession?: AnyExcelBindingSession;
3721
4477
  readonly?: boolean;
3722
4478
  messages?: Partial<TemplateEditorMessages>;
3723
- preview?: Pick<MachReportDefaults, "showExport" | "showPrint" | "showPdfWindow" | "theme" | "assets" | "pdfFontUrl" | "toolbar">;
4479
+ visualMessages?: Partial<ColumnVisualMessages>;
4480
+ preview?: Pick<MachReportDefaults, "showExport" | "showPrint" | "showPdfWindow" | "theme" | "assets" | "pdfFontUrl" | "toolbar" | "loadParamOptions">;
3724
4481
  beforeDiscard?: TemplateEditorBeforeDiscard;
3725
4482
  save?: (document: ReportTemplateDocument, context: TemplateEditorSaveContext) => Promise<ReportTemplateDocument>;
3726
4483
  }
4484
+ export declare type TemplateEditorPanel = "fields" | "components" | "layout" | "excel" | "rules" | "params" | "review";
3727
4485
  export declare interface TemplateEditorSaveContext {
3728
4486
  expectedRevision?: string;
3729
4487
  signal: AbortSignal;
@@ -3925,6 +4683,8 @@ declare interface XlsxRenderOptions extends AssetRenderOptions, XlsxImageOptions
3925
4683
  sheetMode?: "auto" | "pages" | "continuous";
3926
4684
  /** 宽表或连续表默认 raw,其余默认 text;显式配置可覆盖默认值。 */
3927
4685
  valueMode?: "text" | "raw";
4686
+ /** Static data-bar drawing budget; fail explicitly rather than omitting bars. Default 10,000. */
4687
+ maxDataBars?: number;
3928
4688
  /** 连续表默认不限制打印纸型;显式 A3/A4/A5 仅设置打印适配,不改变 Excel 列宽。 */
3929
4689
  paperSize?: "auto" | "a3" | "a4" | "a5";
3930
4690
  }