@agile-team/mach-report 2.14.0 → 2.15.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 (256) hide show
  1. package/README.md +16 -11
  2. package/THIRD_PARTY_NOTICES.md +3 -1
  3. package/dist/{ExcelBindingWizard-CvsWR8Ga.js → ExcelBindingWizard-BKH1nGNS.js} +3 -3
  4. package/dist/{ExcelBindingWizard-CLT2p7P3.cjs → ExcelBindingWizard-Bs43BGNp.cjs} +1 -1
  5. package/dist/ParamEditor-Da4akw6V.cjs +1 -0
  6. package/dist/ParamEditor-DoAhzJsm.js +594 -0
  7. package/dist/{ReportBatchPanel-LqVgiqp7.js → ReportBatchPanel-BMf6boMA.js} +39 -39
  8. package/dist/{ReportBatchPanel-DkxTzBkD.cjs → ReportBatchPanel-wP9m9Pj1.cjs} +1 -1
  9. package/dist/ReportPreview-ChV19HBp.js +4619 -0
  10. package/dist/ReportPreview-DbLvvOUT.cjs +6 -0
  11. package/dist/{ReportTemplateLibrary-MjWEtc7X.js → ReportTemplateLibrary-C9wutIiT.js} +1 -1
  12. package/dist/{ReportTemplateLibrary-cQ1sqNYo.cjs → ReportTemplateLibrary-Sxr3eD0J.cjs} +1 -1
  13. package/dist/{RuleEditor-ChuXMlei.js → RuleEditor-C_Clasvd.js} +5 -5
  14. package/dist/{RuleEditor-BaR6xUiI.cjs → RuleEditor-XhGHK8DE.cjs} +1 -1
  15. package/dist/{TemplateOutlinePanel-Dci6aRn1.js → TemplateOutlinePanel-D6Bkny59.js} +2 -2
  16. package/dist/{TemplateOutlinePanel-BHKP89Xz.cjs → TemplateOutlinePanel-JTSR53vJ.cjs} +1 -1
  17. package/dist/{TemplateReusePanel-CY5eO2Sh.cjs → TemplateReusePanel-Kx35S0Ql.cjs} +1 -1
  18. package/dist/{TemplateReusePanel-B7Gmyc1z.js → TemplateReusePanel-rVuK1kTz.js} +2 -2
  19. package/dist/{TemplateReviewPanel-DjlX3xpt.js → TemplateReviewPanel-B0ar9_zf.js} +2 -2
  20. package/dist/{TemplateReviewPanel-JvZe9_4G.cjs → TemplateReviewPanel-Dn6X9UmY.cjs} +1 -1
  21. package/dist/analytics.cjs +1 -1
  22. package/dist/analytics.d.cts +3 -1
  23. package/dist/analytics.d.ts +3 -1
  24. package/dist/analytics.js +154 -60
  25. package/dist/artifact-integrity.json +135 -0
  26. package/dist/assets-B9ImAi6_.cjs +1 -0
  27. package/dist/assets-DEaz4qsp.js +124 -0
  28. package/dist/batch-BaP6pWDE.cjs +1 -0
  29. package/dist/batch-BfZHN1do.js +220 -0
  30. package/dist/batch-CGyt-b2W.js +273 -0
  31. package/dist/batch-CLpELXBl.cjs +1 -0
  32. package/dist/capabilities-CAh2Nrue.cjs +1 -0
  33. package/dist/capabilities-DskCHs3V.js +69 -0
  34. package/dist/codes.d.cts +2 -0
  35. package/dist/codes.d.ts +2 -0
  36. package/dist/{computed-Bvk0W15F.js → computed-C-4C2S5h.js} +3 -3
  37. package/dist/config-BVsJXSqS.js +842 -0
  38. package/dist/config-D10us76d.cjs +1 -0
  39. package/dist/data-explanation-B8MZRYVS.js +16 -0
  40. package/dist/data-explanation-DE55G30w.cjs +1 -0
  41. package/dist/designer-2bDlcNXQ.js +5136 -0
  42. package/dist/designer-BT7XCdbW.cjs +2 -0
  43. package/dist/designer.cjs +1 -1
  44. package/dist/designer.d.cts +144 -16
  45. package/dist/designer.d.ts +144 -16
  46. package/dist/designer.js +1 -1
  47. package/dist/drill-ByJviLXS.js +145 -0
  48. package/dist/drill-DYTxuL3A.cjs +1 -0
  49. package/dist/{font-loader-vhCT8znW.cjs → font-loader-B_UkxpzC.cjs} +1 -1
  50. package/dist/{font-loader-DHto6Lra.js → font-loader-Q3bQjmrI.js} +1 -1
  51. package/dist/index.cjs +8 -8
  52. package/dist/index.d.cts +82 -4
  53. package/dist/index.d.ts +82 -4
  54. package/dist/index.js +785 -820
  55. package/dist/json-snapshot-DFb2eWkf.js +1416 -0
  56. package/dist/json-snapshot-WWSGlaHG.cjs +2 -0
  57. package/dist/licenses/_bwip-js_generic-4.11.4.txt +24 -0
  58. package/dist/licenses/_fast-csv_format-4.3.5.txt +22 -0
  59. package/dist/licenses/_fast-csv_parse-4.3.6.txt +22 -0
  60. package/dist/licenses/_pdf-lib_fontkit-1.1.1.txt +326 -0
  61. package/dist/licenses/_pdf-lib_standard-fonts-1.0.0.txt +22 -0
  62. package/dist/licenses/_pdf-lib_upng-1.0.1.txt +22 -0
  63. package/dist/licenses/_types_node-14.18.63.txt +22 -0
  64. package/dist/licenses/_types_pako-2.0.3.txt +22 -0
  65. package/dist/licenses/_types_pegjs-0.10.6.txt +22 -0
  66. package/dist/licenses/archiver-5.3.2.txt +23 -0
  67. package/dist/licenses/archiver-utils-2.1.0.txt +23 -0
  68. package/dist/licenses/archiver-utils-3.0.4.txt +23 -0
  69. package/dist/licenses/async-3.2.6.txt +20 -0
  70. package/dist/licenses/balanced-match-1.0.2.txt +22 -0
  71. package/dist/licenses/base64-js-1.5.1.txt +22 -0
  72. package/dist/licenses/big-integer-1.6.52.txt +25 -0
  73. package/dist/licenses/binary-0.3.0.txt +178 -0
  74. package/dist/licenses/bl-4.1.0.txt +14 -0
  75. package/dist/licenses/bluebird-3.4.7.txt +22 -0
  76. package/dist/licenses/brace-expansion-1.1.21.txt +22 -0
  77. package/dist/licenses/brace-expansion-2.1.7.txt +22 -0
  78. package/dist/licenses/buffer-5.7.1.txt +22 -0
  79. package/dist/licenses/buffer-crc32-0.2.13.txt +20 -0
  80. package/dist/licenses/buffer-indexof-polyfill-1.0.2.txt +23 -0
  81. package/dist/licenses/buffers-0.1.1.txt +140 -0
  82. package/dist/licenses/chainsaw-0.1.0.txt +184 -0
  83. package/dist/licenses/compress-commons-4.1.2.txt +23 -0
  84. package/dist/licenses/concat-map-0.0.1.txt +19 -0
  85. package/dist/licenses/core-util-is-1.0.3.txt +20 -0
  86. package/dist/licenses/crc-32-1.2.2.txt +202 -0
  87. package/dist/licenses/crc32-stream-4.0.3.txt +23 -0
  88. package/dist/licenses/dayjs-1.11.23.txt +22 -0
  89. package/dist/licenses/duplexer2-0.1.4.txt +27 -0
  90. package/dist/licenses/end-of-stream-1.4.5.txt +22 -0
  91. package/dist/licenses/exceljs-4.4.0.txt +23 -0
  92. package/dist/licenses/fast-csv-4.3.6.txt +22 -0
  93. package/dist/licenses/fast-png-6.4.0.txt +22 -0
  94. package/dist/licenses/fs-constants-1.0.0.txt +22 -0
  95. package/dist/licenses/fs.realpath-1.0.0.txt +44 -0
  96. package/dist/licenses/fstream-1.0.12.txt +16 -0
  97. package/dist/licenses/glob-7.2.3.txt +22 -0
  98. package/dist/licenses/graceful-fs-4.2.11.txt +16 -0
  99. package/dist/licenses/ieee754-1.2.1.txt +12 -0
  100. package/dist/licenses/immediate-3.0.6.txt +21 -0
  101. package/dist/licenses/inflight-1.0.6.txt +16 -0
  102. package/dist/licenses/inherits-2.0.4.txt +17 -0
  103. package/dist/licenses/iobuffer-5.4.0.txt +23 -0
  104. package/dist/licenses/isarray-1.0.0.txt +61 -0
  105. package/dist/licenses/jszip-3.10.2.txt +652 -0
  106. package/dist/licenses/lazystream-1.0.1.txt +24 -0
  107. package/dist/licenses/lie-3.3.0.txt +8 -0
  108. package/dist/licenses/listenercount-1.0.1.txt +6 -0
  109. package/dist/licenses/lodash.defaults-4.2.0.txt +48 -0
  110. package/dist/licenses/lodash.difference-4.5.0.txt +48 -0
  111. package/dist/licenses/lodash.escaperegexp-4.1.2.txt +48 -0
  112. package/dist/licenses/lodash.flatten-4.4.0.txt +48 -0
  113. package/dist/licenses/lodash.groupby-4.6.0.txt +48 -0
  114. package/dist/licenses/lodash.isboolean-3.0.3.txt +23 -0
  115. package/dist/licenses/lodash.isequal-4.5.0.txt +48 -0
  116. package/dist/licenses/lodash.isfunction-3.0.9.txt +48 -0
  117. package/dist/licenses/lodash.isnil-4.0.0.txt +23 -0
  118. package/dist/licenses/lodash.isplainobject-4.0.6.txt +48 -0
  119. package/dist/licenses/lodash.isundefined-3.0.1.txt +23 -0
  120. package/dist/licenses/lodash.union-4.6.0.txt +48 -0
  121. package/dist/licenses/lodash.uniq-4.5.0.txt +48 -0
  122. package/dist/licenses/minimatch-3.1.5.txt +16 -0
  123. package/dist/licenses/minimatch-5.1.9.txt +16 -0
  124. package/dist/licenses/minimist-1.2.8.txt +19 -0
  125. package/dist/licenses/mkdirp-0.5.6.txt +22 -0
  126. package/dist/licenses/node-sql-parser-5.4.0.txt +202 -0
  127. package/dist/licenses/normalize-path-3.0.0.txt +22 -0
  128. package/dist/licenses/once-1.4.0.txt +16 -0
  129. package/dist/licenses/pako-1.0.11.txt +22 -0
  130. package/dist/licenses/pako-2.2.0.txt +22 -0
  131. package/dist/licenses/path-is-absolute-1.0.1.txt +22 -0
  132. package/dist/licenses/pdf-lib-1.17.1.txt +22 -0
  133. package/dist/licenses/process-nextick-args-2.0.1.txt +20 -0
  134. package/dist/licenses/readable-stream-2.3.8.txt +48 -0
  135. package/dist/licenses/readable-stream-3.6.2.txt +48 -0
  136. package/dist/licenses/readdir-glob-1.1.3.txt +202 -0
  137. package/dist/licenses/rimraf-2.7.1.txt +16 -0
  138. package/dist/licenses/safe-buffer-5.1.2.txt +22 -0
  139. package/dist/licenses/safe-buffer-5.2.1.txt +22 -0
  140. package/dist/licenses/saxes-5.0.1.txt +397 -0
  141. package/dist/licenses/setimmediate-1.0.5.txt +21 -0
  142. package/dist/licenses/string_decoder-1.1.1.txt +49 -0
  143. package/dist/licenses/string_decoder-1.3.0.txt +49 -0
  144. package/dist/licenses/tar-stream-2.2.0.txt +22 -0
  145. package/dist/licenses/tmp-0.2.7.txt +22 -0
  146. package/dist/licenses/traverse-0.3.9.txt +25 -0
  147. package/dist/licenses/tslib-1.14.1.txt +13 -0
  148. package/dist/licenses/unzipper-0.10.14.txt +26 -0
  149. package/dist/licenses/util-deprecate-1.0.2.txt +25 -0
  150. package/dist/licenses/uuid-11.1.1.txt +10 -0
  151. package/dist/licenses/wrappy-1.0.2.txt +16 -0
  152. package/dist/licenses/xmlchars-2.2.0.txt +19 -0
  153. package/dist/licenses/zip-stream-4.1.1.txt +23 -0
  154. package/dist/matrix-CGRGkn5s.js +112 -0
  155. package/dist/matrix-gEO7ZM_u.cjs +1 -0
  156. package/dist/media-B7vnpD8k.cjs +1 -0
  157. package/dist/media-Y90dHK9z.js +70 -0
  158. package/dist/param-validation-C3HlcLLO.cjs +1 -0
  159. package/dist/param-validation-Do7Eg8Zv.js +181 -0
  160. package/dist/{pdf-8UPQebOE.js → pdf-BwNyeGpt.js} +4385 -4321
  161. package/dist/{pdf-AyJGb22z.cjs → pdf-CvvrjPQg.cjs} +51 -49
  162. package/dist/pdf.cjs +1 -1
  163. package/dist/pdf.d.cts +18 -3
  164. package/dist/pdf.d.ts +18 -3
  165. package/dist/pdf.js +2 -2
  166. package/dist/{plugin-BGKf-Tqg.js → plugin-Ca_XZG3l.js} +2 -2
  167. package/dist/{plugin-CktLH_Iy.cjs → plugin-DHO7X8z2.cjs} +1 -1
  168. package/dist/prepared-CFy9B75C.cjs +1 -0
  169. package/dist/prepared-ajM-H-9B.js +69 -0
  170. package/dist/progress-B0ctFpKf.cjs +1 -0
  171. package/dist/progress-D-OTpEav.js +52 -0
  172. package/dist/record-bindings-By_UKZ2g.cjs +1 -0
  173. package/dist/record-bindings-Do_b3h4V.js +196 -0
  174. package/dist/{region-binding-workflow-DEJbhpCv.js → region-binding-workflow-BMhK_TjP.js} +1 -1
  175. package/dist/{region-binding-workflow-BzfbxRiR.cjs → region-binding-workflow-DIYJdCUr.cjs} +1 -1
  176. package/dist/{report-params-B44imUd4.js → report-params-B1RzkhJj.js} +1 -1
  177. package/dist/{report-params-SJfhKgaX.cjs → report-params-WDGrA4oP.cjs} +1 -1
  178. package/dist/sbom.cdx.json +3982 -0
  179. package/dist/server/node.d.cts +20 -1
  180. package/dist/server/node.d.ts +20 -1
  181. package/dist/server-node.cjs +1 -1
  182. package/dist/server-node.js +247 -237
  183. package/dist/server.cjs +1 -1
  184. package/dist/server.d.cts +772 -4
  185. package/dist/server.d.ts +772 -4
  186. package/dist/server.js +885 -645
  187. package/dist/sha256-ArEYjaTI.cjs +1 -0
  188. package/dist/sha256-DPEuJ3nh.js +155 -0
  189. package/dist/style.css +1 -1
  190. package/dist/template-bindings-C2SpvsMU.js +58 -0
  191. package/dist/template-bindings-CEtWyiLX.cjs +1 -0
  192. package/dist/template-catalog-FJE_c9Qe.cjs +1 -0
  193. package/dist/template-catalog-j2B1MJlL.js +414 -0
  194. package/dist/{template-fragments-CLkGo6To.js → template-fragments-BGbQLGlV.js} +21 -21
  195. package/dist/{template-fragments-DFUpq5QM.cjs → template-fragments-DcKeiylI.cjs} +1 -1
  196. package/dist/{template-outline-B3xVkzSv.cjs → template-outline-BwRV_eRo.cjs} +1 -1
  197. package/dist/{template-outline-CFenM1PV.js → template-outline-cnWfT_LK.js} +3 -3
  198. package/dist/{template-registry-COXDEJEM.js → template-registry-BtaKPELV.js} +364 -201
  199. package/dist/template-registry-Co1zPq5e.cjs +1 -0
  200. package/dist/textwrap-CWHyzkBH.cjs +4 -0
  201. package/dist/textwrap-DE1kgcJB.js +110 -0
  202. package/dist/{tree-CqcQ99NM.js → tree-CjVZLRw7.js} +1 -1
  203. package/dist/vue/async.d.cts +123 -14
  204. package/dist/vue/async.d.ts +123 -14
  205. package/dist/vue/index.d.cts +158 -22
  206. package/dist/vue/index.d.ts +158 -22
  207. package/dist/vue-async.cjs +1 -1
  208. package/dist/vue-async.js +3 -3
  209. package/dist/vue.cjs +1 -1
  210. package/dist/vue.js +80 -78
  211. package/dist/{workbook-session-DNa2RHNG.cjs → workbook-session-Bjv1YCRK.cjs} +18 -18
  212. package/dist/{workbook-session-BfK1yHOO.js → workbook-session-BvToI-Fd.js} +5440 -5288
  213. package/dist/worker.cjs +1 -1
  214. package/dist/worker.d.cts +20 -1
  215. package/dist/worker.d.ts +20 -1
  216. package/dist/worker.js +33 -32
  217. package/dist/xlsx-node.cjs +34 -34
  218. package/dist/xlsx-node.js +878 -870
  219. package/dist/xlsx.cjs +3 -4
  220. package/dist/xlsx.d.cts +22 -10
  221. package/dist/xlsx.d.ts +22 -10
  222. package/dist/xlsx.js +261 -253
  223. package/package.json +2 -2
  224. package/dist/ParamEditor-CflQV3eQ.js +0 -526
  225. package/dist/ParamEditor-vIDzvpPV.cjs +0 -1
  226. package/dist/ReportPreview-CvbqLUzM.cjs +0 -6
  227. package/dist/ReportPreview-D_ywJ_-H.js +0 -4533
  228. package/dist/assets-C2U-e-Sz.cjs +0 -4
  229. package/dist/assets-Q0wUwNrV.js +0 -217
  230. package/dist/batch-DzaTNLWI.js +0 -371
  231. package/dist/batch-xMkqYiTr.cjs +0 -1
  232. package/dist/capabilities-CK_7hizc.js +0 -63
  233. package/dist/capabilities-CsZ-pNHR.cjs +0 -1
  234. package/dist/config-0UIohTS7.cjs +0 -1
  235. package/dist/config-Dt9NtCPl.js +0 -566
  236. package/dist/data-explanation-BktvER5B.cjs +0 -1
  237. package/dist/data-explanation-C_J6jYNi.js +0 -16
  238. package/dist/designer-Ci1LizA9.js +0 -5020
  239. package/dist/designer-rtmVIIdN.cjs +0 -2
  240. package/dist/json-snapshot-BeFT3Tso.js +0 -1952
  241. package/dist/json-snapshot-D1NTP2oI.cjs +0 -2
  242. package/dist/matrix-DVyWiYsd.cjs +0 -1
  243. package/dist/matrix-yZsGnldA.js +0 -227
  244. package/dist/page-window-index-CIuT4BAv.js +0 -43
  245. package/dist/page-window-index-DEjnM6IB.cjs +0 -1
  246. package/dist/param-validation-BlHHXs6u.js +0 -153
  247. package/dist/param-validation-DCK039V1.cjs +0 -1
  248. package/dist/progress-7OSZbFok.js +0 -39
  249. package/dist/progress-BnLiS5eH.cjs +0 -1
  250. package/dist/task-events-DQ276fn2.cjs +0 -1
  251. package/dist/task-events-Dpsvf_t2.js +0 -47
  252. package/dist/template-bindings-BJR4k7qZ.cjs +0 -1
  253. package/dist/template-bindings-Daui7hLF.js +0 -252
  254. package/dist/template-registry-D3SjENi6.cjs +0 -1
  255. package/dist/validate-BJ5HIWY8.cjs +0 -1
  256. package/dist/validate-CkQBWCeg.js +0 -163
package/dist/index.d.cts CHANGED
@@ -22,6 +22,9 @@ export declare function applyReportDocumentStyle(input: ReportTemplateDocument,
22
22
  /** Refresh concurrency metadata without changing values, layout, or the host's source objects. */
23
23
  export declare function applyReportEditResult(plan: RenderPlan, batch: ReportEditBatch, result: void | ReportEditResult): RenderPlan;
24
24
 
25
+ /** Session-owned receipts survive reflow even when host rows have no concurrency fields. */
26
+ export declare function applyReportSourceMetadata(plan: RenderPlan, metadata: ReadonlyMap<string, ReportEditResult>): RenderPlan;
27
+
25
28
  export declare function assertRenderPlan(input: unknown): PlanPage[];
26
29
 
27
30
  export declare function assertReportParams(defs: readonly ReportParamDef[], input?: Record<string, unknown>): Record<string, string>;
@@ -37,7 +40,7 @@ export declare interface AssetRenderBudget {
37
40
  maxDurationMs?: number;
38
41
  }
39
42
 
40
- export declare interface AssetRenderOptions extends OutputDiagnosticOptions {
43
+ export declare interface AssetRenderOptions extends OutputDiagnosticOptions, ImageMediaOptions {
41
44
  assetRenderers?: Partial<Record<ImageComponentKind, ComponentImageRenderer>>;
42
45
  assetBudget?: AssetRenderBudget;
43
46
  /** Default throw prevents an incomplete export; placeholder retains the component and emits diagnostics. */
@@ -275,6 +278,9 @@ export declare function createReportCellEditBatch(plan: RenderPlan, inputs: read
275
278
  /** Operation-scoped index: avoids repeated geometry work without caching mutable plans globally. */
276
279
  export declare function createReportCellResolver(plan: RenderPlan): (address: ReportCellAddress) => ReportCellContext | null;
277
280
 
281
+ /** Revalidates the current cell on activation; returns only bounded scalar values and explicit return state. */
282
+ export declare function createReportDrillRequest(plan: RenderPlan, address: ReportCellAddress, action: ReportDrillAction, params?: Readonly<Record<string, string>>): ReportDrillRequest;
283
+
278
284
  /** Optional standalone entry; normal createReportSource/createLocalFetcher already register it. */
279
285
  export declare function createReportEditSession(options: {
280
286
  template: ReportTemplate;
@@ -508,6 +514,19 @@ export declare const heuristicMeasurer: TextMeasurer;
508
514
 
509
515
  export declare type ImageComponentKind = "image" | "chart" | "barcode" | "qrcode";
510
516
 
517
+ /** Bounded binary image inspection shared by PDF, Excel and template import. No decoder is loaded. */
518
+ declare interface ImageMediaOptions {
519
+ maxImageBytes?: number;
520
+ maxTotalImageBytes?: number;
521
+ maxImages?: number;
522
+ /** Decoded pixels per unique image, default 16 million. */
523
+ maxImagePixels?: number;
524
+ /** Total decoded pixels for unique media, default 64 million. */
525
+ maxTotalImagePixels?: number;
526
+ /** Maximum source dimension, default 16384 pixels. */
527
+ maxImageDimension?: number;
528
+ }
529
+
511
530
  export declare interface ImageRenderOptions extends AsyncCanvasRenderOptions {
512
531
  /** 图片格式(默认 png;jpeg 体积更小但无透明) */
513
532
  format?: "png" | "jpeg";
@@ -755,6 +774,9 @@ export declare interface LocalTemplateCatalogItem {
755
774
  tags?: string[];
756
775
  }
757
776
 
777
+ /** O(action count), no row scans or listeners per cell; invoke for the focused cell only. */
778
+ export declare function matchReportDrillActions(plan: RenderPlan, address: ReportCellAddress, actions: readonly ReportDrillAction[]): ReportDrillAction[];
779
+
758
780
  declare interface MatrixTableOptions {
759
781
  rowFields: readonly string[];
760
782
  columnFields: readonly string[];
@@ -794,7 +816,7 @@ export declare class OutputAssetError extends Error {
794
816
  }
795
817
 
796
818
  export declare interface OutputDiagnostic {
797
- code: "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";
819
+ 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";
798
820
  severity: "warning";
799
821
  format: OutputFormat;
800
822
  pageIndex: number;
@@ -1017,7 +1039,7 @@ export declare function ptToPx(pt: number, dpi?: number): number;
1017
1039
 
1018
1040
  export declare function pxToMm(value: number, dpi?: number): number;
1019
1041
 
1020
- /** Registers only context references/fingerprint. Read-only loads never deep-copy data or reflow. */
1042
+ /** Registers a bounded descriptor guard. Immutable strings are retained, never rescanned character by character. */
1021
1043
  export declare function registerReportEditSession(initial: RenderPlan, registration: ReportEditSessionRegistration): ReportEditSession;
1022
1044
 
1023
1045
  /** Reflow changes coordinates; history targets are resolved by business source every time. */
@@ -1180,6 +1202,8 @@ export declare type ReportCellReadOnlyReason = "cell" | "formula" | "complex" |
1180
1202
 
1181
1203
  /** 可持久化的业务身份与计划坐标独立;权限及并发校验仍由业务服务器执行。 */
1182
1204
  export declare interface ReportCellSource {
1205
+ /** Source identity across report occurrences; sharing must be explicitly declared. */
1206
+ sourceScope?: string;
1183
1207
  datasetId: string;
1184
1208
  rowKey: string | number;
1185
1209
  field: string;
@@ -1205,6 +1229,8 @@ export declare interface ReportDataTarget {
1205
1229
  rowKey?: string | number;
1206
1230
  /** Use table identity when the same dataset appears in several tables. */
1207
1231
  tableId?: string;
1232
+ /** Assigned by the source/runtime when several reports share dataset names. */
1233
+ reportScope?: string;
1208
1234
  }
1209
1235
 
1210
1236
  /** Wire values deliberately remain strings in browsers, Workers and backend runtimes. */
@@ -1214,6 +1240,8 @@ export declare interface ReportDateRange {
1214
1240
  }
1215
1241
 
1216
1242
  export declare interface ReportDefinition {
1243
+ /** Explicitly shared editable data identity. Omit to isolate each report occurrence. */
1244
+ sourceScope?: string;
1217
1245
  /** 静态模板或宿主提供的异步模板加载器;动态模板默认每次重新读取,不缓存版本。 */
1218
1246
  template: ReportTemplate | ReportTemplateLoader;
1219
1247
  /** 静态数据;load 存在时优先使用 load 的结果。 */
@@ -1251,6 +1279,46 @@ export declare interface ReportDocumentStyle {
1251
1279
  target?: "content" | "header";
1252
1280
  }
1253
1281
 
1282
+ /** Serializable action metadata. URLs, scripts and automatic navigation are deliberately absent. */
1283
+ export declare interface ReportDrillAction {
1284
+ id: string;
1285
+ label: string;
1286
+ target: {
1287
+ field: string;
1288
+ datasetId?: string;
1289
+ reportScope?: string;
1290
+ roles?: readonly string[];
1291
+ };
1292
+ params?: Readonly<Record<string, ReportDrillBinding>>;
1293
+ }
1294
+
1295
+ export declare type ReportDrillBinding = {
1296
+ value: string | number | boolean;
1297
+ } | {
1298
+ from: "value" | "rowKey";
1299
+ } | {
1300
+ from: "query" | "field";
1301
+ field: string;
1302
+ };
1303
+
1304
+ export declare class ReportDrillError extends Error {
1305
+ readonly code: "config" | "missing-value" | "target";
1306
+ constructor(code: "config" | "missing-value" | "target");
1307
+ }
1308
+
1309
+ export declare interface ReportDrillRequest {
1310
+ actionId: string;
1311
+ params: Readonly<Record<string, string>>;
1312
+ returnState: Readonly<ReportDrillReturnState>;
1313
+ }
1314
+
1315
+ export declare interface ReportDrillReturnState {
1316
+ params: Readonly<Record<string, string>>;
1317
+ address: Readonly<ReportCellAddress>;
1318
+ reportScope?: string;
1319
+ source?: Readonly<Pick<ReportCellSource, "sourceScope" | "datasetId" | "rowKey" | "field">>;
1320
+ }
1321
+
1254
1322
  export declare interface ReportEditBatch {
1255
1323
  /** Idempotency identity; the server should bind it to the exact payload. */
1256
1324
  requestId: string;
@@ -1286,6 +1354,7 @@ export declare interface ReportEditSession {
1286
1354
  declare interface ReportEditSessionPart {
1287
1355
  template: ReportTemplate;
1288
1356
  datasets: DatasetRows;
1357
+ sourceScope?: string;
1289
1358
  }
1290
1359
 
1291
1360
  export declare interface ReportEditSessionRegistration {
@@ -1376,6 +1445,10 @@ export declare interface ReportParamDef {
1376
1445
  label: string;
1377
1446
  value: string;
1378
1447
  }>;
1448
+ /** Opaque host-resolved source key. No URL, credentials or executable code is stored. */
1449
+ optionsSource?: string;
1450
+ /** Select dependencies must be declared parameters; changing a parent clears descendants. */
1451
+ dependsOn?: string[];
1379
1452
  defaultValue?: string;
1380
1453
  required?: boolean;
1381
1454
  placeholder?: string;
@@ -1393,7 +1466,7 @@ export declare interface ReportParamIssue {
1393
1466
  message: string;
1394
1467
  }
1395
1468
 
1396
- export declare type ReportParamIssueCode = "definition" | "required" | "type" | "option" | "minimum" | "maximum" | "minLength" | "maxLength";
1469
+ export declare type ReportParamIssueCode = "definition" | "required" | "type" | "option" | "dependency" | "minimum" | "maximum" | "minLength" | "maxLength";
1397
1470
 
1398
1471
  /** 描述 typedValues 的 Draft 2020-12 Schema;日期区间额外保留 x-report-* 扩展。 */
1399
1472
  export declare function reportParamsJsonSchema(defs: readonly ReportParamDef[]): Record<string, unknown>;
@@ -1802,6 +1875,9 @@ export declare interface ResolvePlanAssetsOptions extends AssetRenderOptions {
1802
1875
  end?: number;
1803
1876
  }
1804
1877
 
1878
+ /** Resolve a stable business cell after requery/reordering; missing rows never fall back to another row. */
1879
+ export declare function resolveReportDrillReturn(plan: RenderPlan, state: ReportDrillReturnState): ReportCellAddress | null;
1880
+
1805
1881
  /** 描边解析:颜色 + 线宽(pt) */
1806
1882
  export declare function resolveStroke(style: Pick<ComponentStyle, "borderColor" | "lineColor" | "lineWidthPt"> | undefined, fallbackColor?: string): {
1807
1883
  color: string;
@@ -2073,6 +2149,8 @@ export declare function validateRenderPlan(input: unknown): ValidationResult;
2073
2149
  /** Check configuration before opening an input, including JSON/JavaScript callers. */
2074
2150
  export declare function validateReportCellFieldDefinition(context: ReportCellContext, field: ReportCellFieldOptions): void;
2075
2151
 
2152
+ export declare function validateReportDrillActions(actions: readonly ReportDrillAction[]): void;
2153
+
2076
2154
  /** 模板参数配置错误也统一返回结构化问题,不让无效默认值或边界静默进入后端。 */
2077
2155
  export declare function validateReportParamDefinitions(defs: readonly ReportParamDef[]): ReportParamIssue[];
2078
2156
 
package/dist/index.d.ts CHANGED
@@ -22,6 +22,9 @@ export declare function applyReportDocumentStyle(input: ReportTemplateDocument,
22
22
  /** Refresh concurrency metadata without changing values, layout, or the host's source objects. */
23
23
  export declare function applyReportEditResult(plan: RenderPlan, batch: ReportEditBatch, result: void | ReportEditResult): RenderPlan;
24
24
 
25
+ /** Session-owned receipts survive reflow even when host rows have no concurrency fields. */
26
+ export declare function applyReportSourceMetadata(plan: RenderPlan, metadata: ReadonlyMap<string, ReportEditResult>): RenderPlan;
27
+
25
28
  export declare function assertRenderPlan(input: unknown): PlanPage[];
26
29
 
27
30
  export declare function assertReportParams(defs: readonly ReportParamDef[], input?: Record<string, unknown>): Record<string, string>;
@@ -37,7 +40,7 @@ export declare interface AssetRenderBudget {
37
40
  maxDurationMs?: number;
38
41
  }
39
42
 
40
- export declare interface AssetRenderOptions extends OutputDiagnosticOptions {
43
+ export declare interface AssetRenderOptions extends OutputDiagnosticOptions, ImageMediaOptions {
41
44
  assetRenderers?: Partial<Record<ImageComponentKind, ComponentImageRenderer>>;
42
45
  assetBudget?: AssetRenderBudget;
43
46
  /** Default throw prevents an incomplete export; placeholder retains the component and emits diagnostics. */
@@ -275,6 +278,9 @@ export declare function createReportCellEditBatch(plan: RenderPlan, inputs: read
275
278
  /** Operation-scoped index: avoids repeated geometry work without caching mutable plans globally. */
276
279
  export declare function createReportCellResolver(plan: RenderPlan): (address: ReportCellAddress) => ReportCellContext | null;
277
280
 
281
+ /** Revalidates the current cell on activation; returns only bounded scalar values and explicit return state. */
282
+ export declare function createReportDrillRequest(plan: RenderPlan, address: ReportCellAddress, action: ReportDrillAction, params?: Readonly<Record<string, string>>): ReportDrillRequest;
283
+
278
284
  /** Optional standalone entry; normal createReportSource/createLocalFetcher already register it. */
279
285
  export declare function createReportEditSession(options: {
280
286
  template: ReportTemplate;
@@ -508,6 +514,19 @@ export declare const heuristicMeasurer: TextMeasurer;
508
514
 
509
515
  export declare type ImageComponentKind = "image" | "chart" | "barcode" | "qrcode";
510
516
 
517
+ /** Bounded binary image inspection shared by PDF, Excel and template import. No decoder is loaded. */
518
+ declare interface ImageMediaOptions {
519
+ maxImageBytes?: number;
520
+ maxTotalImageBytes?: number;
521
+ maxImages?: number;
522
+ /** Decoded pixels per unique image, default 16 million. */
523
+ maxImagePixels?: number;
524
+ /** Total decoded pixels for unique media, default 64 million. */
525
+ maxTotalImagePixels?: number;
526
+ /** Maximum source dimension, default 16384 pixels. */
527
+ maxImageDimension?: number;
528
+ }
529
+
511
530
  export declare interface ImageRenderOptions extends AsyncCanvasRenderOptions {
512
531
  /** 图片格式(默认 png;jpeg 体积更小但无透明) */
513
532
  format?: "png" | "jpeg";
@@ -755,6 +774,9 @@ export declare interface LocalTemplateCatalogItem {
755
774
  tags?: string[];
756
775
  }
757
776
 
777
+ /** O(action count), no row scans or listeners per cell; invoke for the focused cell only. */
778
+ export declare function matchReportDrillActions(plan: RenderPlan, address: ReportCellAddress, actions: readonly ReportDrillAction[]): ReportDrillAction[];
779
+
758
780
  declare interface MatrixTableOptions {
759
781
  rowFields: readonly string[];
760
782
  columnFields: readonly string[];
@@ -794,7 +816,7 @@ export declare class OutputAssetError extends Error {
794
816
  }
795
817
 
796
818
  export declare interface OutputDiagnostic {
797
- code: "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";
819
+ 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";
798
820
  severity: "warning";
799
821
  format: OutputFormat;
800
822
  pageIndex: number;
@@ -1017,7 +1039,7 @@ export declare function ptToPx(pt: number, dpi?: number): number;
1017
1039
 
1018
1040
  export declare function pxToMm(value: number, dpi?: number): number;
1019
1041
 
1020
- /** Registers only context references/fingerprint. Read-only loads never deep-copy data or reflow. */
1042
+ /** Registers a bounded descriptor guard. Immutable strings are retained, never rescanned character by character. */
1021
1043
  export declare function registerReportEditSession(initial: RenderPlan, registration: ReportEditSessionRegistration): ReportEditSession;
1022
1044
 
1023
1045
  /** Reflow changes coordinates; history targets are resolved by business source every time. */
@@ -1180,6 +1202,8 @@ export declare type ReportCellReadOnlyReason = "cell" | "formula" | "complex" |
1180
1202
 
1181
1203
  /** 可持久化的业务身份与计划坐标独立;权限及并发校验仍由业务服务器执行。 */
1182
1204
  export declare interface ReportCellSource {
1205
+ /** Source identity across report occurrences; sharing must be explicitly declared. */
1206
+ sourceScope?: string;
1183
1207
  datasetId: string;
1184
1208
  rowKey: string | number;
1185
1209
  field: string;
@@ -1205,6 +1229,8 @@ export declare interface ReportDataTarget {
1205
1229
  rowKey?: string | number;
1206
1230
  /** Use table identity when the same dataset appears in several tables. */
1207
1231
  tableId?: string;
1232
+ /** Assigned by the source/runtime when several reports share dataset names. */
1233
+ reportScope?: string;
1208
1234
  }
1209
1235
 
1210
1236
  /** Wire values deliberately remain strings in browsers, Workers and backend runtimes. */
@@ -1214,6 +1240,8 @@ export declare interface ReportDateRange {
1214
1240
  }
1215
1241
 
1216
1242
  export declare interface ReportDefinition {
1243
+ /** Explicitly shared editable data identity. Omit to isolate each report occurrence. */
1244
+ sourceScope?: string;
1217
1245
  /** 静态模板或宿主提供的异步模板加载器;动态模板默认每次重新读取,不缓存版本。 */
1218
1246
  template: ReportTemplate | ReportTemplateLoader;
1219
1247
  /** 静态数据;load 存在时优先使用 load 的结果。 */
@@ -1251,6 +1279,46 @@ export declare interface ReportDocumentStyle {
1251
1279
  target?: "content" | "header";
1252
1280
  }
1253
1281
 
1282
+ /** Serializable action metadata. URLs, scripts and automatic navigation are deliberately absent. */
1283
+ export declare interface ReportDrillAction {
1284
+ id: string;
1285
+ label: string;
1286
+ target: {
1287
+ field: string;
1288
+ datasetId?: string;
1289
+ reportScope?: string;
1290
+ roles?: readonly string[];
1291
+ };
1292
+ params?: Readonly<Record<string, ReportDrillBinding>>;
1293
+ }
1294
+
1295
+ export declare type ReportDrillBinding = {
1296
+ value: string | number | boolean;
1297
+ } | {
1298
+ from: "value" | "rowKey";
1299
+ } | {
1300
+ from: "query" | "field";
1301
+ field: string;
1302
+ };
1303
+
1304
+ export declare class ReportDrillError extends Error {
1305
+ readonly code: "config" | "missing-value" | "target";
1306
+ constructor(code: "config" | "missing-value" | "target");
1307
+ }
1308
+
1309
+ export declare interface ReportDrillRequest {
1310
+ actionId: string;
1311
+ params: Readonly<Record<string, string>>;
1312
+ returnState: Readonly<ReportDrillReturnState>;
1313
+ }
1314
+
1315
+ export declare interface ReportDrillReturnState {
1316
+ params: Readonly<Record<string, string>>;
1317
+ address: Readonly<ReportCellAddress>;
1318
+ reportScope?: string;
1319
+ source?: Readonly<Pick<ReportCellSource, "sourceScope" | "datasetId" | "rowKey" | "field">>;
1320
+ }
1321
+
1254
1322
  export declare interface ReportEditBatch {
1255
1323
  /** Idempotency identity; the server should bind it to the exact payload. */
1256
1324
  requestId: string;
@@ -1286,6 +1354,7 @@ export declare interface ReportEditSession {
1286
1354
  declare interface ReportEditSessionPart {
1287
1355
  template: ReportTemplate;
1288
1356
  datasets: DatasetRows;
1357
+ sourceScope?: string;
1289
1358
  }
1290
1359
 
1291
1360
  export declare interface ReportEditSessionRegistration {
@@ -1376,6 +1445,10 @@ export declare interface ReportParamDef {
1376
1445
  label: string;
1377
1446
  value: string;
1378
1447
  }>;
1448
+ /** Opaque host-resolved source key. No URL, credentials or executable code is stored. */
1449
+ optionsSource?: string;
1450
+ /** Select dependencies must be declared parameters; changing a parent clears descendants. */
1451
+ dependsOn?: string[];
1379
1452
  defaultValue?: string;
1380
1453
  required?: boolean;
1381
1454
  placeholder?: string;
@@ -1393,7 +1466,7 @@ export declare interface ReportParamIssue {
1393
1466
  message: string;
1394
1467
  }
1395
1468
 
1396
- export declare type ReportParamIssueCode = "definition" | "required" | "type" | "option" | "minimum" | "maximum" | "minLength" | "maxLength";
1469
+ export declare type ReportParamIssueCode = "definition" | "required" | "type" | "option" | "dependency" | "minimum" | "maximum" | "minLength" | "maxLength";
1397
1470
 
1398
1471
  /** 描述 typedValues 的 Draft 2020-12 Schema;日期区间额外保留 x-report-* 扩展。 */
1399
1472
  export declare function reportParamsJsonSchema(defs: readonly ReportParamDef[]): Record<string, unknown>;
@@ -1802,6 +1875,9 @@ export declare interface ResolvePlanAssetsOptions extends AssetRenderOptions {
1802
1875
  end?: number;
1803
1876
  }
1804
1877
 
1878
+ /** Resolve a stable business cell after requery/reordering; missing rows never fall back to another row. */
1879
+ export declare function resolveReportDrillReturn(plan: RenderPlan, state: ReportDrillReturnState): ReportCellAddress | null;
1880
+
1805
1881
  /** 描边解析:颜色 + 线宽(pt) */
1806
1882
  export declare function resolveStroke(style: Pick<ComponentStyle, "borderColor" | "lineColor" | "lineWidthPt"> | undefined, fallbackColor?: string): {
1807
1883
  color: string;
@@ -2073,6 +2149,8 @@ export declare function validateRenderPlan(input: unknown): ValidationResult;
2073
2149
  /** Check configuration before opening an input, including JSON/JavaScript callers. */
2074
2150
  export declare function validateReportCellFieldDefinition(context: ReportCellContext, field: ReportCellFieldOptions): void;
2075
2151
 
2152
+ export declare function validateReportDrillActions(actions: readonly ReportDrillAction[]): void;
2153
+
2076
2154
  /** 模板参数配置错误也统一返回结构化问题,不让无效默认值或边界静默进入后端。 */
2077
2155
  export declare function validateReportParamDefinitions(defs: readonly ReportParamDef[]): ReportParamIssue[];
2078
2156