@agile-team/mach-report 2.12.0 → 2.14.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 (97) hide show
  1. package/README.md +27 -3
  2. package/dist/ExcelBindingWizard-CLT2p7P3.cjs +1 -0
  3. package/dist/ExcelBindingWizard-CvsWR8Ga.js +1485 -0
  4. package/dist/{ParamEditor-BLaE5q5W.js → ParamEditor-CflQV3eQ.js} +191 -187
  5. package/dist/ParamEditor-vIDzvpPV.cjs +1 -0
  6. package/dist/ReportBatchPanel-DkxTzBkD.cjs +1 -0
  7. package/dist/{ReportBatchPanel-B5ClP9tm.js → ReportBatchPanel-LqVgiqp7.js} +3 -3
  8. package/dist/ReportPreview-CvbqLUzM.cjs +6 -0
  9. package/dist/ReportPreview-D_ywJ_-H.js +4533 -0
  10. package/dist/{ReportTemplateLibrary-BZB-XWjj.js → ReportTemplateLibrary-MjWEtc7X.js} +1 -1
  11. package/dist/ReportTemplateLibrary-cQ1sqNYo.cjs +1 -0
  12. package/dist/RuleEditor-BaR6xUiI.cjs +1 -0
  13. package/dist/RuleEditor-ChuXMlei.js +2037 -0
  14. package/dist/TemplateOutlinePanel-BHKP89Xz.cjs +1 -0
  15. package/dist/TemplateOutlinePanel-Dci6aRn1.js +96 -0
  16. package/dist/TemplateReusePanel-B7Gmyc1z.js +388 -0
  17. package/dist/TemplateReusePanel-CY5eO2Sh.cjs +1 -0
  18. package/dist/TemplateReviewPanel-DjlX3xpt.js +592 -0
  19. package/dist/TemplateReviewPanel-JvZe9_4G.cjs +1 -0
  20. package/dist/{batch-mRqhhhjt.js → batch-DzaTNLWI.js} +23 -16
  21. package/dist/batch-xMkqYiTr.cjs +1 -0
  22. package/dist/config-0UIohTS7.cjs +1 -0
  23. package/dist/{config-B612mw0x.js → config-Dt9NtCPl.js} +227 -186
  24. package/dist/data-explanation-BktvER5B.cjs +1 -0
  25. package/dist/data-explanation-C_J6jYNi.js +16 -0
  26. package/dist/designer-Ci1LizA9.js +5020 -0
  27. package/dist/designer-rtmVIIdN.cjs +2 -0
  28. package/dist/designer.cjs +1 -2
  29. package/dist/designer.d.cts +306 -3
  30. package/dist/designer.d.ts +306 -3
  31. package/dist/designer.js +21 -4266
  32. package/dist/font-loader-DHto6Lra.js +297 -0
  33. package/dist/font-loader-vhCT8znW.cjs +1 -0
  34. package/dist/index.cjs +8 -8
  35. package/dist/index.d.cts +182 -1
  36. package/dist/index.d.ts +182 -1
  37. package/dist/index.js +728 -628
  38. package/dist/{template-review-BzpcI-tR.js → json-snapshot-BeFT3Tso.js} +867 -637
  39. package/dist/json-snapshot-D1NTP2oI.cjs +2 -0
  40. package/dist/pdf-8UPQebOE.js +36288 -0
  41. package/dist/pdf-AyJGb22z.cjs +101 -0
  42. package/dist/pdf.cjs +1 -101
  43. package/dist/pdf.js +9 -36579
  44. package/dist/plugin-BGKf-Tqg.js +22 -0
  45. package/dist/{plugin-BDTU4D94.cjs → plugin-CktLH_Iy.cjs} +1 -1
  46. package/dist/{region-binding-workflow-CcUq8W2Q.js → region-binding-workflow-DEJbhpCv.js} +1 -1
  47. package/dist/server/node.d.cts +46 -11
  48. package/dist/server/node.d.ts +46 -11
  49. package/dist/server-node.cjs +1 -1
  50. package/dist/server-node.js +294 -280
  51. package/dist/server.cjs +1 -1
  52. package/dist/server.d.cts +107 -12
  53. package/dist/server.d.ts +107 -12
  54. package/dist/server.js +713 -453
  55. package/dist/style.css +1 -1
  56. package/dist/template-bindings-BJR4k7qZ.cjs +1 -0
  57. package/dist/template-bindings-Daui7hLF.js +252 -0
  58. package/dist/template-fragments-CLkGo6To.js +187 -0
  59. package/dist/template-fragments-DFUpq5QM.cjs +1 -0
  60. package/dist/template-outline-B3xVkzSv.cjs +1 -0
  61. package/dist/template-outline-CFenM1PV.js +88 -0
  62. package/dist/{template-registry-BjE1VS6g.js → template-registry-COXDEJEM.js} +1 -1
  63. package/dist/{useLocalDraft-C07SYRnC.js → useLocalDraft-BnhcxXk_.js} +1 -1
  64. package/dist/{useLocalDraft-Yiw1wFgI.cjs → useLocalDraft-CioIfDb6.cjs} +1 -1
  65. package/dist/{validate-DbgEM1Hh.js → validate-CkQBWCeg.js} +3 -3
  66. package/dist/vue/async.d.cts +72 -2
  67. package/dist/vue/async.d.ts +72 -2
  68. package/dist/vue/index.d.cts +124 -5
  69. package/dist/vue/index.d.ts +124 -5
  70. package/dist/vue-async.cjs +1 -1
  71. package/dist/vue-async.js +5 -5
  72. package/dist/vue.cjs +1 -1
  73. package/dist/vue.js +78 -71
  74. package/dist/{workbook-session-BPb3TMnT.js → workbook-session-BfK1yHOO.js} +1 -1
  75. package/dist/worker.cjs +1 -1
  76. package/dist/worker.d.cts +46 -11
  77. package/dist/worker.d.ts +46 -11
  78. package/dist/worker.js +59 -55
  79. package/dist/xlsx.js +3 -3
  80. package/package.json +1 -1
  81. package/dist/ExcelBindingWizard-CeAf4QSE.js +0 -1465
  82. package/dist/ExcelBindingWizard-y0mT-AHR.cjs +0 -1
  83. package/dist/ParamEditor-MBBC7lUE.cjs +0 -1
  84. package/dist/ReportBatchPanel-Dc-SDkYA.cjs +0 -1
  85. package/dist/ReportPreview-DWXROHBP.cjs +0 -6
  86. package/dist/ReportPreview-DiNXhQI0.js +0 -4138
  87. package/dist/ReportTemplateLibrary-5fk5CQBO.cjs +0 -1
  88. package/dist/RuleEditor-ChRzNQuF.cjs +0 -1
  89. package/dist/RuleEditor-DzAmW5YH.js +0 -2024
  90. package/dist/TemplateReviewPanel-BKofGrV9.js +0 -222
  91. package/dist/TemplateReviewPanel-DwtOcLue.cjs +0 -1
  92. package/dist/batch-Bt3Fd27Z.cjs +0 -1
  93. package/dist/config-BRoLo2oj.cjs +0 -1
  94. package/dist/plugin-Cd5G2QQn.js +0 -22
  95. package/dist/record-bindings-By_UKZ2g.cjs +0 -1
  96. package/dist/record-bindings-D-5jQlTj.js +0 -196
  97. package/dist/template-review-BfCC8Ng9.cjs +0 -2
@@ -85,6 +85,12 @@ declare const BASE_TEMPLATE_EDITOR_MESSAGES: {
85
85
  note: string;
86
86
  invalid: string;
87
87
  };
88
+ declare interface CanvasSelection {
89
+ /** Ctrl/Command/Shift toggles the selection without changing the report schema. */
90
+ additive?: boolean;
91
+ pageIndex: number;
92
+ componentIndex: number;
93
+ }
88
94
  /** Serializable symbol settings. Encoders remain in the optional /codes entry. */
89
95
  declare interface CodeOptions {
90
96
  /** Explicit content, including an empty value, takes precedence over legacy fallbackText. */
@@ -315,6 +321,8 @@ declare interface ComputedField_3 extends ExpressionOptions_3 {
315
321
  /** String adapter expressions cannot be inspected; declare dependencies explicitly. */
316
322
  dependsOn?: readonly string[];
317
323
  }
324
+ /** No global storage access: hosts explicitly choose localStorage, sessionStorage or their own adapter. */
325
+ export declare function createTemplateDraftStorage(storage: Pick<Storage, "getItem" | "setItem" | "removeItem">): TemplateDraftStorageAdapter;
318
326
  declare interface DatasetContract {
319
327
  fields: readonly ReportFieldContract[];
320
328
  rowKey?: string;
@@ -327,6 +335,8 @@ declare type DatasetRows = Record<string, Record<string, unknown>[]>;
327
335
  declare type DatasetRows_2 = Record<string, Record<string, unknown>[]>;
328
336
  /** Optional wizard labels remain independent of the general designer configuration. */
329
337
  export declare const EXCEL_BINDING_MESSAGES: {
338
+ recoveredMapping: string;
339
+ recoveredSheetMissing: string;
330
340
  tableMode: string;
331
341
  multiRegions: string;
332
342
  multiHint: string;
@@ -1070,6 +1080,7 @@ declare interface ListGroupBy_3 {
1070
1080
  }
1071
1081
  /** defaults 层可配置项(全部可选,均有内置缺省) */
1072
1082
  declare interface MachReportDefaults {
1083
+ printOptions?: ReportPrintOptions;
1073
1084
  showExport?: boolean;
1074
1085
  showPrint?: boolean;
1075
1086
  showPdfWindow?: boolean;
@@ -1111,7 +1122,7 @@ declare type MachReportLogger = Pick<Console, "warn" | "info">;
1111
1122
  * - 优先级:组件 props > 路由级叠加 > preset > defaults(props 永远最高)
1112
1123
  */
1113
1124
  /** 工具栏与状态文案(默认简体中文;出海场景覆写) */
1114
- declare interface MachReportMessages extends Partial<ReportCalculationMessages> {
1125
+ declare interface MachReportMessages extends Partial<ReportCalculationMessages>, ReportPrintMessages {
1115
1126
  exportMenu?: string;
1116
1127
  exportMenuDescription?: string;
1117
1128
  clearSearch?: string;
@@ -1121,6 +1132,17 @@ declare interface MachReportMessages extends Partial<ReportCalculationMessages>
1121
1132
  pageJumpInvalid?: string;
1122
1133
  pageJumpHint?: string;
1123
1134
  pagination?: string;
1135
+ recordNavigation?: string;
1136
+ dataExplanation?: string;
1137
+ dataExplanationHint?: string;
1138
+ dataExplanationSearch?: string;
1139
+ dataExplanationEmpty?: string;
1140
+ dataMissingSource?: string;
1141
+ dataNotApplicable?: string;
1142
+ dataNotCalculable?: string;
1143
+ recordInfo?: string;
1144
+ prevRecord?: string;
1145
+ nextRecord?: string;
1124
1146
  columnSearchHint?: string;
1125
1147
  columnSearchShortcut?: string;
1126
1148
  closeColumnDirectory?: string;
@@ -1275,7 +1297,7 @@ declare interface MachReportMessages extends Partial<ReportCalculationMessages>
1275
1297
  * - 优先级:组件 props > 路由级叠加 > preset > defaults(props 永远最高)
1276
1298
  */
1277
1299
  /** 工具栏与状态文案(默认简体中文;出海场景覆写) */
1278
- declare interface MachReportMessages_2 extends Partial<ReportCalculationMessages_2> {
1300
+ declare interface MachReportMessages_2 extends Partial<ReportCalculationMessages_2>, ReportPrintMessages_2 {
1279
1301
  exportMenu?: string;
1280
1302
  exportMenuDescription?: string;
1281
1303
  clearSearch?: string;
@@ -1285,6 +1307,17 @@ declare interface MachReportMessages_2 extends Partial<ReportCalculationMessages
1285
1307
  pageJumpInvalid?: string;
1286
1308
  pageJumpHint?: string;
1287
1309
  pagination?: string;
1310
+ recordNavigation?: string;
1311
+ dataExplanation?: string;
1312
+ dataExplanationHint?: string;
1313
+ dataExplanationSearch?: string;
1314
+ dataExplanationEmpty?: string;
1315
+ dataMissingSource?: string;
1316
+ dataNotApplicable?: string;
1317
+ dataNotCalculable?: string;
1318
+ recordInfo?: string;
1319
+ prevRecord?: string;
1320
+ nextRecord?: string;
1288
1321
  columnSearchHint?: string;
1289
1322
  columnSearchShortcut?: string;
1290
1323
  closeColumnDirectory?: string;
@@ -1841,6 +1874,7 @@ declare const PRODUCT_TEMPLATE_EDITOR_MESSAGES: {
1841
1874
  insertQrcode: string;
1842
1875
  insertBarcode: string;
1843
1876
  codeSettings: string;
1877
+ codeAdvancedSettings: string;
1844
1878
  codeValue: string;
1845
1879
  codeSymbology: string;
1846
1880
  codeCorrection: string;
@@ -1882,6 +1916,9 @@ declare const PRODUCT_TEMPLATE_EDITOR_MESSAGES: {
1882
1916
  insertList: string;
1883
1917
  insertImage: string;
1884
1918
  insertRect: string;
1919
+ chartComponent: string;
1920
+ lineComponent: string;
1921
+ ellipseComponent: string;
1885
1922
  removeComponent: string;
1886
1923
  duplicateComponent: string;
1887
1924
  forward: string;
@@ -2189,6 +2226,12 @@ declare interface ReportCellTableIdentity {
2189
2226
  declare type ReportCellValue = string | number | boolean | null;
2190
2227
  declare type ReportCellValueType = NonNullable<GridCell["valueType"]>;
2191
2228
  declare type ReportDiscardReason = "reload" | "import" | "replace" | "leave";
2229
+ declare interface ReportDocumentStyle {
2230
+ id: string;
2231
+ name: string;
2232
+ style: ComponentStyle_2;
2233
+ target?: "content" | "header";
2234
+ }
2192
2235
  declare interface ReportEditBatch {
2193
2236
  /** Idempotency identity; the server should bind it to the exact payload. */
2194
2237
  requestId: string;
@@ -2413,6 +2456,46 @@ declare interface ReportPreferencesOptions {
2413
2456
  }
2414
2457
  declare type ReportPreviewPreferences = Record<ReportPreviewTool, boolean>;
2415
2458
  declare type ReportPreviewTool = "search" | "thumbnails" | "zoom" | ReportExportFormat | "print" | "pdfWindow" | "editing" | "import";
2459
+ declare interface ReportPrintCalibration {
2460
+ offsetXmm?: number;
2461
+ offsetYmm?: number;
2462
+ }
2463
+ declare interface ReportPrintFont {
2464
+ /** Same family name used by the template. Sources are trusted application assets. */
2465
+ family: string;
2466
+ source: string;
2467
+ weight?: string;
2468
+ style?: "normal" | "italic" | "oblique";
2469
+ }
2470
+ declare interface ReportPrintMessages {
2471
+ printPrepareTimeout?: string;
2472
+ printImageFailed?: string;
2473
+ printFontFailed?: string;
2474
+ printPrepareFailed?: string;
2475
+ printCalibration?: string;
2476
+ printOffsetX?: string;
2477
+ printOffsetY?: string;
2478
+ printCalibrationTest?: string;
2479
+ printCalibrationHint?: string;
2480
+ }
2481
+ declare interface ReportPrintMessages_2 {
2482
+ printPrepareTimeout?: string;
2483
+ printImageFailed?: string;
2484
+ printFontFailed?: string;
2485
+ printPrepareFailed?: string;
2486
+ printCalibration?: string;
2487
+ printOffsetX?: string;
2488
+ printOffsetY?: string;
2489
+ printCalibrationTest?: string;
2490
+ printCalibrationHint?: string;
2491
+ }
2492
+ declare interface ReportPrintOptions {
2493
+ /** Defaults to 15 seconds for the entire font/image preparation stage. */
2494
+ resourceTimeoutMs?: number;
2495
+ fonts?: readonly ReportPrintFont[];
2496
+ /** Physical translation only; no scaling or mutation of the report data/plan. */
2497
+ calibration?: ReportPrintCalibration;
2498
+ }
2416
2499
  declare interface ReportTemplate {
2417
2500
  schemaVersion?: string;
2418
2501
  /** 参数定义(可选;宿主也可经 ReportPreview 的 paramDefs prop 提供,prop 优先) */
@@ -2521,6 +2604,19 @@ export declare const ReportTemplateEditor: DefineComponent<TemplateEditorOptions
2521
2604
  onSaved?: ((document: ReportTemplateDocument) => any) | undefined;
2522
2605
  "onExcel-bound"?: ((result: ExcelBindingWizardApply) => any) | undefined;
2523
2606
  }>, {}>;
2607
+ declare interface ReportTemplateFixture {
2608
+ name: string;
2609
+ datasets: DatasetRows;
2610
+ params?: Record<string, string>;
2611
+ }
2612
+ /** Plain JSON, versioned by the host; inserting never links mutable library objects. */
2613
+ declare interface ReportTemplateFragment {
2614
+ id: string;
2615
+ name: string;
2616
+ revision: string;
2617
+ components: TemplateComponent_2[];
2618
+ repeatDataset?: string;
2619
+ }
2524
2620
  export declare const ReportTemplateLibrary: DefineComponent<TemplateLibraryOptions, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
2525
2621
  open: (document: ReportTemplateDocument_3, context?: ReportTemplateCatalogOpenContext_2 | undefined) => any;
2526
2622
  }, string, MachReportVuePublicProps, Readonly<TemplateLibraryOptions> & Readonly<{
@@ -2768,6 +2864,7 @@ export declare const RuleEditor: DefineComponent<RuleEditorOptions, {
2768
2864
  }>, {}>;
2769
2865
  export declare type RuleEditorMessages = typeof RULE_EDITOR_MESSAGES;
2770
2866
  export declare interface RuleEditorOptions {
2867
+ recoveryKey?: string;
2771
2868
  list: ListComponent_2;
2772
2869
  datasets?: DatasetRows_2;
2773
2870
  datasetSchema?: DatasetContract_2;
@@ -2870,6 +2967,7 @@ export declare const TEMPLATE_EDITOR_MESSAGES: {
2870
2967
  insertQrcode: string;
2871
2968
  insertBarcode: string;
2872
2969
  codeSettings: string;
2970
+ codeAdvancedSettings: string;
2873
2971
  codeValue: string;
2874
2972
  codeSymbology: string;
2875
2973
  codeCorrection: string;
@@ -2911,6 +3009,9 @@ export declare const TEMPLATE_EDITOR_MESSAGES: {
2911
3009
  insertList: string;
2912
3010
  insertImage: string;
2913
3011
  insertRect: string;
3012
+ chartComponent: string;
3013
+ lineComponent: string;
3014
+ ellipseComponent: string;
2914
3015
  removeComponent: string;
2915
3016
  duplicateComponent: string;
2916
3017
  forward: string;
@@ -3027,6 +3128,8 @@ export declare const TEMPLATE_EDITOR_MESSAGES: {
3027
3128
  applyJson: string;
3028
3129
  note: string;
3029
3130
  invalid: string;
3131
+ outlineTool: string;
3132
+ reuseTool: string;
3030
3133
  fitWidth: string;
3031
3134
  fitPage: string;
3032
3135
  fitSelection: string;
@@ -3082,7 +3185,108 @@ export declare const TEMPLATE_LIBRARY_MESSAGES: {
3082
3185
  stale: string;
3083
3186
  invalid: string;
3084
3187
  };
3188
+ export declare const TEMPLATE_PRODUCT_MESSAGES: {
3189
+ outline: string;
3190
+ search: string;
3191
+ noMatches: string;
3192
+ more: string;
3193
+ usages: string;
3194
+ all: string;
3195
+ count: string;
3196
+ page: string;
3197
+ component: string;
3198
+ field: string;
3199
+ calculation: string;
3200
+ binding: string;
3201
+ reuse: string;
3202
+ fragments: string;
3203
+ styles: string;
3204
+ insert: string;
3205
+ update: string;
3206
+ noFragments: string;
3207
+ capture: string;
3208
+ fragmentName: string;
3209
+ role: string;
3210
+ apply: string;
3211
+ copy: string;
3212
+ paste: string;
3213
+ bindings: string;
3214
+ dataset: string;
3215
+ target: string;
3216
+ preserve: string;
3217
+ select: string;
3218
+ revision: string;
3219
+ instance: string;
3220
+ newRevision: string;
3221
+ noStyles: string;
3222
+ nameRequired: string;
3223
+ styleText: string;
3224
+ styleHeading: string;
3225
+ styleBody: string;
3226
+ styleNumber: string;
3227
+ styleNote: string;
3228
+ rename: string;
3229
+ renameHint: string;
3230
+ continue: string;
3231
+ cancel: string;
3232
+ locate: string;
3233
+ };
3234
+ export declare const TEMPLATE_RECOVERY_MESSAGES: {
3235
+ readonly available: "发现未保存草稿";
3236
+ readonly restore: "恢复草稿";
3237
+ readonly discard: "放弃草稿";
3238
+ readonly stale: "草稿基线已变化,恢复后须核对最新版本再保存。";
3239
+ readonly localOnly: "仅保存模板、JSON 与工具配置,不保存业务数据或 Excel 文件。";
3240
+ readonly autosaved: "草稿已暂存";
3241
+ readonly saving: "暂存中";
3242
+ readonly storageError: "草稿暂存失败";
3243
+ readonly conflict: "模板版本已变化";
3244
+ readonly conflictHint: "本地修改已保留。核对差异后选择处理方式,不会自动合并或覆盖。";
3245
+ readonly baseline: "共同基线";
3246
+ readonly local: "本地修改";
3247
+ readonly remote: "远端修改";
3248
+ readonly changes: "处差异";
3249
+ readonly path: "位置";
3250
+ readonly before: "原值";
3251
+ readonly after: "新值";
3252
+ readonly empty: "没有差异";
3253
+ readonly loadLatest: "读取最新版本";
3254
+ readonly adopt: "采用最新版本";
3255
+ readonly rebase: "保留本地内容,以最新版本为基线";
3256
+ readonly confirm: "确认更新基线";
3257
+ readonly confirmHint: "此操作保留完整本地内容,不合并远端改动;下次保存将以最新修订号校验。";
3258
+ readonly keepCopy: "保留独立副本";
3259
+ readonly copied: "副本已保留";
3260
+ readonly revision: "修订";
3261
+ readonly unknown: "未发布";
3262
+ readonly close: "收起差异";
3263
+ readonly review: "核对版本冲突";
3264
+ readonly toolsNeedSource: "Excel 映射配置已恢复,请重新选择原文件后核对。";
3265
+ };
3085
3266
  export declare const TEMPLATE_REVIEW_MESSAGES: {
3267
+ cancel: string;
3268
+ cancelled: string;
3269
+ progress: string;
3270
+ sampleConsentMissing: string;
3271
+ sampleNameMissing: string;
3272
+ sampleLimit: string;
3273
+ sampleNameDuplicate: string;
3274
+ sampleRowsLimit: string;
3275
+ namedFixtures: string;
3276
+ fixtureName: string;
3277
+ fixturePlaceholder: string;
3278
+ deidentified: string;
3279
+ capture: string;
3280
+ remove: string;
3281
+ fixtureHint: string;
3282
+ parameters: string;
3283
+ compare: string;
3284
+ dimensions: string;
3285
+ fieldsAdded: string;
3286
+ fieldsRemoved: string;
3287
+ baselinePreview: string;
3288
+ draftPreview: string;
3289
+ closeCompare: string;
3086
3290
  stale: string;
3087
3291
  scope: string;
3088
3292
  datasets: string;
@@ -3130,6 +3334,42 @@ export declare const TEMPLATE_REVIEW_MESSAGES: {
3130
3334
  declare type TemplateComponent = PlanComponent | ListComponent;
3131
3335
  declare type TemplateComponent_2 = PlanComponent_2 | ListComponent_2;
3132
3336
  declare type TemplateComponent_3 = PlanComponent_3 | ListComponent_3;
3337
+ export declare interface TemplateConflictContext {
3338
+ id: string;
3339
+ signal: AbortSignal;
3340
+ }
3341
+ export declare interface TemplateCopyContext extends TemplateConflictContext {
3342
+ sourceRevision?: string;
3343
+ }
3344
+ export declare interface TemplateDraftRecord {
3345
+ version: 1;
3346
+ templateId: string;
3347
+ savedAt: string;
3348
+ baseline: ReportTemplateDocument;
3349
+ document: ReportTemplateDocument;
3350
+ json: string;
3351
+ appliedJson: string;
3352
+ tools: Record<string, TemplateToolDraft>;
3353
+ }
3354
+ export declare interface TemplateDraftStorage {
3355
+ /** Account / project scope. Changing scope cancels previous reads and isolates recovery. */
3356
+ scope: string;
3357
+ adapter: TemplateDraftStorageAdapter;
3358
+ debounceMs?: number;
3359
+ /** UTF-16 storage budget, default 2 MiB, maximum 16 MiB. */
3360
+ maxBytes?: number;
3361
+ }
3362
+ export declare interface TemplateDraftStorageAdapter {
3363
+ read(key: string, context: {
3364
+ signal: AbortSignal;
3365
+ }): string | null | Promise<string | null>;
3366
+ write(key: string, value: string, context: {
3367
+ signal: AbortSignal;
3368
+ }): void | Promise<void>;
3369
+ remove(key: string, context: {
3370
+ signal: AbortSignal;
3371
+ }): void | Promise<void>;
3372
+ }
3133
3373
  export declare type TemplateEditorBeforeDiscard = (context: TemplateEditorBeforeDiscardContext) => boolean | Promise<boolean>;
3134
3374
  export declare interface TemplateEditorBeforeDiscardContext {
3135
3375
  reason: "reset" | "replace";
@@ -3138,6 +3378,11 @@ export declare interface TemplateEditorBeforeDiscardContext {
3138
3378
  replacement?: ReportTemplateDocument;
3139
3379
  pendingLocalChanges: true;
3140
3380
  }
3381
+ export declare interface TemplateEditorConflictOptions {
3382
+ loadLatest?: (context: TemplateConflictContext) => Promise<ReportTemplateDocument>;
3383
+ /** The host chooses the new persistent identity. The local draft remains untouched. */
3384
+ keepCopy?: (document: ReportTemplateDocument, context: TemplateCopyContext) => Promise<void>;
3385
+ }
3141
3386
  export declare interface TemplateEditorController {
3142
3387
  readonly pendingLocalChanges: boolean;
3143
3388
  readonly saving?: boolean;
@@ -3148,7 +3393,15 @@ export declare interface TemplateEditorController {
3148
3393
  }
3149
3394
  /** Newly introduced labels are optional for existing complete message dictionaries. */
3150
3395
  export declare type TemplateEditorMessages = typeof BASE_TEMPLATE_EDITOR_MESSAGES & Partial<typeof PRODUCT_TEMPLATE_EDITOR_MESSAGES>;
3151
- export declare interface TemplateEditorOptions {
3396
+ export declare interface TemplateEditorOptions extends TemplateEditorConflictOptions {
3397
+ /** Opt-in declaration-only recovery. Scope should include project and account identity. */
3398
+ draftStorage?: TemplateDraftStorage;
3399
+ recoveryMessages?: Partial<TemplateRecoveryMessages>;
3400
+ productMessages?: Partial<TemplateProductMessages>;
3401
+ reviewMessages?: Partial<TemplateReviewMessages>;
3402
+ fragments?: ReportTemplateFragment[];
3403
+ documentStyles?: ReportDocumentStyle[];
3404
+ reviewFixtures?: ReportTemplateFixture[];
3152
3405
  modelValue: ReportTemplateDocument;
3153
3406
  datasets?: DatasetRows;
3154
3407
  dataSchemas?: Record<string, DatasetContract>;
@@ -3174,6 +3427,31 @@ export declare interface TemplateLibraryOptions {
3174
3427
  signal: AbortSignal;
3175
3428
  }) => Promise<ReportTemplateDocument>;
3176
3429
  }
3430
+ declare interface TemplateOutlineLocation {
3431
+ path: string;
3432
+ pageIndex?: number;
3433
+ componentIndex?: number;
3434
+ field?: string;
3435
+ }
3436
+ export declare const TemplateOutlinePanel: DefineComponent<{
3437
+ document: ReportTemplateDocument_3;
3438
+ selection?: {
3439
+ pageIndex: number;
3440
+ componentIndex: number;
3441
+ };
3442
+ messages?: Partial<TemplateProductMessages>;
3443
+ }, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
3444
+ locate: (location: TemplateOutlineLocation) => any;
3445
+ }, string, MachReportVuePublicProps, Readonly<{
3446
+ document: ReportTemplateDocument_3;
3447
+ selection?: {
3448
+ pageIndex: number;
3449
+ componentIndex: number;
3450
+ };
3451
+ messages?: Partial<TemplateProductMessages>;
3452
+ }> & Readonly<{
3453
+ onLocate?: ((location: TemplateOutlineLocation) => any) | undefined;
3454
+ }>, {}>;
3177
3455
  declare interface TemplatePage {
3178
3456
  widthMm: number;
3179
3457
  heightMm: number;
@@ -3216,6 +3494,25 @@ declare interface TemplatePage_3 {
3216
3494
  flow?: ReportPageFlow_3;
3217
3495
  meta?: Record<string, unknown>;
3218
3496
  }
3497
+ export declare type TemplateProductMessages = typeof TEMPLATE_PRODUCT_MESSAGES;
3498
+ export declare type TemplateRecoveryMessages = {
3499
+ [K in keyof typeof TEMPLATE_RECOVERY_MESSAGES]: string;
3500
+ };
3501
+ export declare interface TemplateReuseOptions {
3502
+ document: ReportTemplateDocument;
3503
+ pageIndex: number;
3504
+ selection?: CanvasSelection;
3505
+ fragments?: readonly ReportTemplateFragment[];
3506
+ styles?: readonly ReportDocumentStyle[];
3507
+ disabled?: boolean;
3508
+ messages?: Partial<TemplateProductMessages>;
3509
+ accept: (change: (document: ReportTemplateDocument) => void) => boolean;
3510
+ }
3511
+ export declare const TemplateReusePanel: DefineComponent<TemplateReuseOptions, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
3512
+ select: (location: CanvasSelection) => any;
3513
+ }, string, MachReportVuePublicProps, Readonly<TemplateReuseOptions> & Readonly<{
3514
+ onSelect?: ((location: CanvasSelection) => any) | undefined;
3515
+ }>, {}>;
3219
3516
  export declare type TemplateReviewMessages = typeof TEMPLATE_REVIEW_MESSAGES;
3220
3517
  declare interface TemplateReviewOptions {
3221
3518
  document: ReportTemplateDocument;
@@ -3223,6 +3520,8 @@ declare interface TemplateReviewOptions {
3223
3520
  datasets?: DatasetRows;
3224
3521
  dataSchemas?: Readonly<Record<string, DatasetContract>>;
3225
3522
  formats?: readonly OutputFormat[];
3523
+ /** Explicit, already de-identified examples; no business data is fetched by the editor. */
3524
+ fixtures?: readonly ReportTemplateFixture[];
3226
3525
  }
3227
3526
  export declare const TemplateReviewPanel: DefineComponent<TemplateReviewOptions & {
3228
3527
  messages?: Partial<TemplateReviewMessages>;
@@ -3233,6 +3532,10 @@ export declare const TemplateReviewPanel: DefineComponent<TemplateReviewOptions
3233
3532
  }> & Readonly<{
3234
3533
  onLocate?: ((value: Pick<ReportTemplateReviewIssue, "field" | "path" | "pageIndex" | "componentIndex">) => any) | undefined;
3235
3534
  }>, {}>;
3535
+ export declare interface TemplateToolDraft {
3536
+ baseline: string;
3537
+ value: string;
3538
+ }
3236
3539
  /** A serialized tree contract. Sibling and root order follow input order. */
3237
3540
  declare interface TreeTableOptions {
3238
3541
  input: "flat" | "nested";