@agile-team/mach-report 2.13.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 +10 -2
  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-CW2HV9I8.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-XVwG87IA.js → config-Dt9NtCPl.js} +223 -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 +290 -3
  30. package/dist/designer.d.ts +290 -3
  31. package/dist/designer.js +21 -4312
  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 +157 -1
  36. package/dist/index.d.ts +157 -1
  37. package/dist/index.js +720 -639
  38. package/dist/{template-review-PgEe_Wr9.js → json-snapshot-BeFT3Tso.js} +795 -585
  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-DzS6pxTA.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 +711 -451
  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 +68 -2
  67. package/dist/vue/async.d.ts +68 -2
  68. package/dist/vue/index.d.cts +117 -3
  69. package/dist/vue/index.d.ts +117 -3
  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-Fp1ePFag.cjs +0 -1
  85. package/dist/ReportPreview-BN6fk7Wz.cjs +0 -6
  86. package/dist/ReportPreview-D2Jkyh1U.js +0 -4243
  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-Bb7RiIO5.cjs +0 -1
  94. package/dist/plugin-D4wizDXB.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-DGwWOoCv.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;
@@ -1122,6 +1133,13 @@ declare interface MachReportMessages extends Partial<ReportCalculationMessages>
1122
1133
  pageJumpHint?: string;
1123
1134
  pagination?: string;
1124
1135
  recordNavigation?: string;
1136
+ dataExplanation?: string;
1137
+ dataExplanationHint?: string;
1138
+ dataExplanationSearch?: string;
1139
+ dataExplanationEmpty?: string;
1140
+ dataMissingSource?: string;
1141
+ dataNotApplicable?: string;
1142
+ dataNotCalculable?: string;
1125
1143
  recordInfo?: string;
1126
1144
  prevRecord?: string;
1127
1145
  nextRecord?: string;
@@ -1279,7 +1297,7 @@ declare interface MachReportMessages extends Partial<ReportCalculationMessages>
1279
1297
  * - 优先级:组件 props > 路由级叠加 > preset > defaults(props 永远最高)
1280
1298
  */
1281
1299
  /** 工具栏与状态文案(默认简体中文;出海场景覆写) */
1282
- declare interface MachReportMessages_2 extends Partial<ReportCalculationMessages_2> {
1300
+ declare interface MachReportMessages_2 extends Partial<ReportCalculationMessages_2>, ReportPrintMessages_2 {
1283
1301
  exportMenu?: string;
1284
1302
  exportMenuDescription?: string;
1285
1303
  clearSearch?: string;
@@ -1290,6 +1308,13 @@ declare interface MachReportMessages_2 extends Partial<ReportCalculationMessages
1290
1308
  pageJumpHint?: string;
1291
1309
  pagination?: string;
1292
1310
  recordNavigation?: string;
1311
+ dataExplanation?: string;
1312
+ dataExplanationHint?: string;
1313
+ dataExplanationSearch?: string;
1314
+ dataExplanationEmpty?: string;
1315
+ dataMissingSource?: string;
1316
+ dataNotApplicable?: string;
1317
+ dataNotCalculable?: string;
1293
1318
  recordInfo?: string;
1294
1319
  prevRecord?: string;
1295
1320
  nextRecord?: string;
@@ -2201,6 +2226,12 @@ declare interface ReportCellTableIdentity {
2201
2226
  declare type ReportCellValue = string | number | boolean | null;
2202
2227
  declare type ReportCellValueType = NonNullable<GridCell["valueType"]>;
2203
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
+ }
2204
2235
  declare interface ReportEditBatch {
2205
2236
  /** Idempotency identity; the server should bind it to the exact payload. */
2206
2237
  requestId: string;
@@ -2425,6 +2456,46 @@ declare interface ReportPreferencesOptions {
2425
2456
  }
2426
2457
  declare type ReportPreviewPreferences = Record<ReportPreviewTool, boolean>;
2427
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
+ }
2428
2499
  declare interface ReportTemplate {
2429
2500
  schemaVersion?: string;
2430
2501
  /** 参数定义(可选;宿主也可经 ReportPreview 的 paramDefs prop 提供,prop 优先) */
@@ -2533,6 +2604,19 @@ export declare const ReportTemplateEditor: DefineComponent<TemplateEditorOptions
2533
2604
  onSaved?: ((document: ReportTemplateDocument) => any) | undefined;
2534
2605
  "onExcel-bound"?: ((result: ExcelBindingWizardApply) => any) | undefined;
2535
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
+ }
2536
2620
  export declare const ReportTemplateLibrary: DefineComponent<TemplateLibraryOptions, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
2537
2621
  open: (document: ReportTemplateDocument_3, context?: ReportTemplateCatalogOpenContext_2 | undefined) => any;
2538
2622
  }, string, MachReportVuePublicProps, Readonly<TemplateLibraryOptions> & Readonly<{
@@ -2780,6 +2864,7 @@ export declare const RuleEditor: DefineComponent<RuleEditorOptions, {
2780
2864
  }>, {}>;
2781
2865
  export declare type RuleEditorMessages = typeof RULE_EDITOR_MESSAGES;
2782
2866
  export declare interface RuleEditorOptions {
2867
+ recoveryKey?: string;
2783
2868
  list: ListComponent_2;
2784
2869
  datasets?: DatasetRows_2;
2785
2870
  datasetSchema?: DatasetContract_2;
@@ -3043,6 +3128,8 @@ export declare const TEMPLATE_EDITOR_MESSAGES: {
3043
3128
  applyJson: string;
3044
3129
  note: string;
3045
3130
  invalid: string;
3131
+ outlineTool: string;
3132
+ reuseTool: string;
3046
3133
  fitWidth: string;
3047
3134
  fitPage: string;
3048
3135
  fitSelection: string;
@@ -3098,7 +3185,108 @@ export declare const TEMPLATE_LIBRARY_MESSAGES: {
3098
3185
  stale: string;
3099
3186
  invalid: string;
3100
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
+ };
3101
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;
3102
3290
  stale: string;
3103
3291
  scope: string;
3104
3292
  datasets: string;
@@ -3146,6 +3334,42 @@ export declare const TEMPLATE_REVIEW_MESSAGES: {
3146
3334
  declare type TemplateComponent = PlanComponent | ListComponent;
3147
3335
  declare type TemplateComponent_2 = PlanComponent_2 | ListComponent_2;
3148
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
+ }
3149
3373
  export declare type TemplateEditorBeforeDiscard = (context: TemplateEditorBeforeDiscardContext) => boolean | Promise<boolean>;
3150
3374
  export declare interface TemplateEditorBeforeDiscardContext {
3151
3375
  reason: "reset" | "replace";
@@ -3154,6 +3378,11 @@ export declare interface TemplateEditorBeforeDiscardContext {
3154
3378
  replacement?: ReportTemplateDocument;
3155
3379
  pendingLocalChanges: true;
3156
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
+ }
3157
3386
  export declare interface TemplateEditorController {
3158
3387
  readonly pendingLocalChanges: boolean;
3159
3388
  readonly saving?: boolean;
@@ -3164,7 +3393,15 @@ export declare interface TemplateEditorController {
3164
3393
  }
3165
3394
  /** Newly introduced labels are optional for existing complete message dictionaries. */
3166
3395
  export declare type TemplateEditorMessages = typeof BASE_TEMPLATE_EDITOR_MESSAGES & Partial<typeof PRODUCT_TEMPLATE_EDITOR_MESSAGES>;
3167
- 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[];
3168
3405
  modelValue: ReportTemplateDocument;
3169
3406
  datasets?: DatasetRows;
3170
3407
  dataSchemas?: Record<string, DatasetContract>;
@@ -3190,6 +3427,31 @@ export declare interface TemplateLibraryOptions {
3190
3427
  signal: AbortSignal;
3191
3428
  }) => Promise<ReportTemplateDocument>;
3192
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
+ }>, {}>;
3193
3455
  declare interface TemplatePage {
3194
3456
  widthMm: number;
3195
3457
  heightMm: number;
@@ -3232,6 +3494,25 @@ declare interface TemplatePage_3 {
3232
3494
  flow?: ReportPageFlow_3;
3233
3495
  meta?: Record<string, unknown>;
3234
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
+ }>, {}>;
3235
3516
  export declare type TemplateReviewMessages = typeof TEMPLATE_REVIEW_MESSAGES;
3236
3517
  declare interface TemplateReviewOptions {
3237
3518
  document: ReportTemplateDocument;
@@ -3239,6 +3520,8 @@ declare interface TemplateReviewOptions {
3239
3520
  datasets?: DatasetRows;
3240
3521
  dataSchemas?: Readonly<Record<string, DatasetContract>>;
3241
3522
  formats?: readonly OutputFormat[];
3523
+ /** Explicit, already de-identified examples; no business data is fetched by the editor. */
3524
+ fixtures?: readonly ReportTemplateFixture[];
3242
3525
  }
3243
3526
  export declare const TemplateReviewPanel: DefineComponent<TemplateReviewOptions & {
3244
3527
  messages?: Partial<TemplateReviewMessages>;
@@ -3249,6 +3532,10 @@ export declare const TemplateReviewPanel: DefineComponent<TemplateReviewOptions
3249
3532
  }> & Readonly<{
3250
3533
  onLocate?: ((value: Pick<ReportTemplateReviewIssue, "field" | "path" | "pageIndex" | "componentIndex">) => any) | undefined;
3251
3534
  }>, {}>;
3535
+ export declare interface TemplateToolDraft {
3536
+ baseline: string;
3537
+ value: string;
3538
+ }
3252
3539
  /** A serialized tree contract. Sibling and root order follow input order. */
3253
3540
  declare interface TreeTableOptions {
3254
3541
  input: "flat" | "nested";