@agile-team/mach-report 2.17.0 → 2.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/README.md +18 -9
  2. package/dist/{ExcelBindingWizard-Bq6FYME6.cjs → ExcelBindingWizard-Czn3C2yE.cjs} +1 -1
  3. package/dist/{ExcelBindingWizard-Co1svTsw.js → ExcelBindingWizard-DMGZj6I6.js} +3 -3
  4. package/dist/ParamEditor-KzDQvbHY.js +732 -0
  5. package/dist/ParamEditor-oDfD8LgE.cjs +1 -0
  6. package/dist/{ReportBatchPanel-uQh06usx.js → ReportBatchPanel-BJK7PvZ4.js} +39 -39
  7. package/dist/ReportBatchPanel-DnmNRssu.cjs +1 -0
  8. package/dist/ReportParamPanel-mQkeN70Q.js +1020 -0
  9. package/dist/ReportParamPanel-sOANVRz-.cjs +1 -0
  10. package/dist/ReportPreview-BxWWTUL5.js +5583 -0
  11. package/dist/ReportPreview-Yf99omi3.cjs +6 -0
  12. package/dist/{ReportTemplateLibrary-TIL_Oj2l.js → ReportTemplateLibrary-BFjB08Wu.js} +1 -1
  13. package/dist/{ReportTemplateLibrary-CnP7_1pH.cjs → ReportTemplateLibrary-BO42QnWd.cjs} +1 -1
  14. package/dist/RuleEditor-CqxT1a-W.js +2337 -0
  15. package/dist/RuleEditor-D7YWigD9.cjs +1 -0
  16. package/dist/{TemplateOutlinePanel-BlLxRrfu.cjs → TemplateOutlinePanel-B0XX350V.cjs} +1 -1
  17. package/dist/{TemplateOutlinePanel-BouxsuqQ.js → TemplateOutlinePanel-zG0DrsIB.js} +2 -2
  18. package/dist/{TemplateReusePanel-yxsHSO40.cjs → TemplateReusePanel-BD0HSKp_.cjs} +1 -1
  19. package/dist/{TemplateReusePanel-BEACLPaN.js → TemplateReusePanel-Czwe5GbC.js} +2 -2
  20. package/dist/{TemplateReviewPanel-D9Cx0m2N.cjs → TemplateReviewPanel-CA5sdffM.cjs} +1 -1
  21. package/dist/{TemplateReviewPanel-B1OGRY2i.js → TemplateReviewPanel-NhmQI65C.js} +2 -2
  22. package/dist/analytics.cjs +1 -1
  23. package/dist/analytics.d.cts +100 -41
  24. package/dist/analytics.d.ts +100 -41
  25. package/dist/analytics.js +76 -141
  26. package/dist/artifact-integrity.json +108 -102
  27. package/dist/assets-2eC3mOcV.js +232 -0
  28. package/dist/assets-B0Hxn4l6.cjs +1 -0
  29. package/dist/{auto-DDHflI9v.cjs → auto-B0EZFIK1.cjs} +1 -1
  30. package/dist/{auto-BIOmtVhk.js → auto-BlchZ1b8.js} +19 -19
  31. package/dist/{batch-WzDIXJAt.js → batch-DGCt44XM.js} +1 -1
  32. package/dist/{batch-z6Aw5GEY.cjs → batch-DYcokH4v.cjs} +1 -1
  33. package/dist/charts-Dlv8j2AG.js +141 -0
  34. package/dist/charts-aCtoswXq.cjs +1 -0
  35. package/dist/codes.cjs +9 -9
  36. package/dist/codes.d.cts +54 -0
  37. package/dist/codes.d.ts +54 -0
  38. package/dist/codes.js +12097 -13668
  39. package/dist/column-visual-BpgQVWwT.js +238 -0
  40. package/dist/column-visual-CtYxnBCP.cjs +1 -0
  41. package/dist/component-tree-6TV7W6Yj.cjs +1 -0
  42. package/dist/component-tree-CvW4lzpv.js +67 -0
  43. package/dist/computed-4TnxzgIh.cjs +1 -0
  44. package/dist/computed-C8NRZQss.js +739 -0
  45. package/dist/data-bar-Ce38juRZ.cjs +1 -0
  46. package/dist/data-bar-PtjXhMgN.js +9 -0
  47. package/dist/designer--TKECSEc.cjs +2 -0
  48. package/dist/designer-d6hJS41w.js +5683 -0
  49. package/dist/designer.cjs +1 -1
  50. package/dist/designer.d.cts +710 -42
  51. package/dist/designer.d.ts +710 -42
  52. package/dist/designer.js +23 -20
  53. package/dist/{encoding-BFMFIc4r.cjs → encoding-B--eZpp1.cjs} +1 -1
  54. package/dist/{encoding-DP_Eaf0A.js → encoding-mctOLocI.js} +2 -2
  55. package/dist/{font-loader-7FWVlykp.cjs → font-loader-DBBJ5KE9.cjs} +1 -1
  56. package/dist/{font-loader-CQZowp0I.js → font-loader-DW8tIaNp.js} +1 -1
  57. package/dist/index-CPh6tqge.js +1575 -0
  58. package/dist/index-CUNw7dL9.cjs +1 -0
  59. package/dist/index.cjs +7 -7
  60. package/dist/index.d.cts +361 -15
  61. package/dist/index.d.ts +361 -15
  62. package/dist/index.js +876 -835
  63. package/dist/json-snapshot-By4ZVVUt.js +1967 -0
  64. package/dist/json-snapshot-jiXff4lc.cjs +2 -0
  65. package/dist/matrix-0hywp0-F.cjs +1 -0
  66. package/dist/matrix-Dy-tyY7E.js +381 -0
  67. package/dist/param-validation-C-8sRJLq.cjs +1 -0
  68. package/dist/param-validation-CnDEd2l-.js +333 -0
  69. package/dist/{pdf-l3ea86di.js → pdf-CKROKygt.js} +1851 -1849
  70. package/dist/{pdf-B8JouyYv.cjs → pdf-DqyxJ96U.cjs} +46 -46
  71. package/dist/pdf.cjs +1 -1
  72. package/dist/pdf.d.cts +54 -0
  73. package/dist/pdf.d.ts +54 -0
  74. package/dist/pdf.js +2 -2
  75. package/dist/{plugin-BBp74CQZ.js → plugin-ByjF2kiV.js} +5 -5
  76. package/dist/{plugin-CtFX9PFG.cjs → plugin-DM1M2wlI.cjs} +1 -1
  77. package/dist/prefill-B8H9qwE4.js +371 -0
  78. package/dist/prefill-D7EswyTI.cjs +1 -0
  79. package/dist/{prepared-CARicKYh.js → prepared-BE-4jfX5.js} +2 -2
  80. package/dist/{prepared-Ch1x_Gog.cjs → prepared-CGVphji3.cjs} +1 -1
  81. package/dist/{protocol-B5A2uom4.cjs → protocol-ByRVzzQG.cjs} +1 -1
  82. package/dist/{protocol-BaiWjq5w.js → protocol-Cr81vFSQ.js} +3 -3
  83. package/dist/{record-bindings-D4TuMzHs.js → record-bindings-DEJtmo3p.js} +67 -107
  84. package/dist/record-bindings-ehjnCDHt.cjs +1 -0
  85. package/dist/{region-binding-workflow-BNasF5kz.js → region-binding-workflow-CBg0l_tj.js} +1 -1
  86. package/dist/{region-binding-workflow-O2Cni3mF.cjs → region-binding-workflow-D05tOYn3.cjs} +1 -1
  87. package/dist/report-encoding-worker.cjs +1 -1
  88. package/dist/report-encoding-worker.js +1 -1
  89. package/dist/{report-params-B1RzkhJj.js → report-params-D9tBuM9B.js} +1 -1
  90. package/dist/{report-params-WDGrA4oP.cjs → report-params-VTg8MoCp.cjs} +1 -1
  91. package/dist/runtime-CDA6d263.cjs +1 -0
  92. package/dist/runtime-CEMvybO7.js +170 -0
  93. package/dist/sbom.cdx.json +1 -1
  94. package/dist/server/node.d.cts +75 -7
  95. package/dist/server/node.d.ts +75 -7
  96. package/dist/server-node.cjs +4 -4
  97. package/dist/server-node.js +2692 -1990
  98. package/dist/server.cjs +1 -1
  99. package/dist/server.d.cts +243 -28
  100. package/dist/server.d.ts +243 -28
  101. package/dist/server.js +28 -28
  102. package/dist/sha256-BDQ1Qk7A.js +158 -0
  103. package/dist/sha256-DgZAKXqI.cjs +1 -0
  104. package/dist/style.css +1 -1
  105. package/dist/template-bindings-Cg5oBLFT.cjs +1 -0
  106. package/dist/template-bindings-TKnXM7ll.js +62 -0
  107. package/dist/{template-catalog-wT1fNeAP.js → template-catalog-CmbWOJqy.js} +16 -16
  108. package/dist/{template-catalog-Dua8h9ZA.cjs → template-catalog-Utu4GP09.cjs} +1 -1
  109. package/dist/{template-fragments-BajTajb4.cjs → template-fragments-C_zSHJAa.cjs} +1 -1
  110. package/dist/{template-fragments-DmX5XK4N.js → template-fragments-DWgo9tlZ.js} +2 -2
  111. package/dist/{template-outline-BwRV_eRo.cjs → template-outline-DWkzZXVC.cjs} +1 -1
  112. package/dist/{template-outline-cnWfT_LK.js → template-outline-DiADphlq.js} +1 -1
  113. package/dist/{template-registry-u11fPd8D.js → template-registry-BIhIHOab.js} +319 -314
  114. package/dist/template-registry-DzWswQI5.cjs +1 -0
  115. package/dist/vue/async.d.cts +528 -33
  116. package/dist/vue/async.d.ts +528 -33
  117. package/dist/vue/index.d.cts +616 -64
  118. package/dist/vue/index.d.ts +616 -64
  119. package/dist/vue-async.cjs +1 -1
  120. package/dist/vue-async.js +3 -3
  121. package/dist/vue.cjs +1 -1
  122. package/dist/vue.js +94 -89
  123. package/dist/{workbook-session-DN5LSA5C.cjs → workbook-session-B94EwVa_.cjs} +1 -1
  124. package/dist/{workbook-session-B8pNW24X.js → workbook-session-BoScoOg-.js} +2 -2
  125. package/dist/worker.cjs +1 -1
  126. package/dist/worker.d.cts +75 -7
  127. package/dist/worker.d.ts +75 -7
  128. package/dist/worker.js +4 -4
  129. package/dist/xlsx.cjs +4 -4
  130. package/dist/xlsx.d.cts +120 -13
  131. package/dist/xlsx.d.ts +120 -13
  132. package/dist/xlsx.js +313 -279
  133. package/package.json +1 -1
  134. package/dist/ParamEditor-B5UZRgxv.cjs +0 -1
  135. package/dist/ParamEditor-DNNARyeB.js +0 -594
  136. package/dist/ReportBatchPanel-Ctvs2t_9.cjs +0 -1
  137. package/dist/ReportPreview-BdQawRh0.js +0 -4879
  138. package/dist/ReportPreview-CJC_-j2I.cjs +0 -6
  139. package/dist/RuleEditor-DkRjOLlr.js +0 -2141
  140. package/dist/RuleEditor-h5anGsDB.cjs +0 -1
  141. package/dist/assets-BIMVwjQe.js +0 -231
  142. package/dist/assets-Dfs2ElxI.cjs +0 -1
  143. package/dist/component-tree-Ca6YYfHq.js +0 -61
  144. package/dist/component-tree-DkGLEfZC.cjs +0 -1
  145. package/dist/computed-BW5a8QFk.js +0 -612
  146. package/dist/computed-C2GD3XcE.cjs +0 -1
  147. package/dist/config-Dg_o8e7m.cjs +0 -1
  148. package/dist/config-XQ4qrQ7Q.js +0 -844
  149. package/dist/designer-D9XAxqSc.js +0 -5178
  150. package/dist/designer-uCDo5XSK.cjs +0 -2
  151. package/dist/drill-ByN8COs_.cjs +0 -1
  152. package/dist/drill-CKW3Xtfa.js +0 -145
  153. package/dist/json-snapshot-D7PE1NsU.cjs +0 -2
  154. package/dist/json-snapshot-DYmEe3sO.js +0 -1779
  155. package/dist/matrix-JLAXlux-.js +0 -302
  156. package/dist/matrix-gTHpDTGm.cjs +0 -1
  157. package/dist/param-validation-C3HlcLLO.cjs +0 -1
  158. package/dist/param-validation-Do7Eg8Zv.js +0 -181
  159. package/dist/record-bindings-B86Sur_y.cjs +0 -1
  160. package/dist/runtime-DakRXui3.js +0 -170
  161. package/dist/runtime-dL5ygIfa.cjs +0 -1
  162. package/dist/sha256-BshdOkCC.cjs +0 -1
  163. package/dist/sha256-DTG-Gq8i.js +0 -157
  164. package/dist/template-bindings-C2SpvsMU.js +0 -58
  165. package/dist/template-bindings-CEtWyiLX.cjs +0 -1
  166. package/dist/template-registry-CpysHAxy.cjs +0 -1
  167. package/dist/tree-CLpxYbKa.cjs +0 -1
  168. package/dist/tree-DNJorJUf.js +0 -172
package/dist/index.js CHANGED
@@ -1,37 +1,40 @@
1
- import { D as le, a as J, r as _, b as q, c as Ge, d as Y, e as Je, m as ue, f as Ke, g as ye, p as U, P as oe } from "./style-67OqfNed.js";
2
- import { C as zr, h as Hr, i as Br, j as _r, L as Wr, M as Vr, S as Ur, k as qr, l as Gr } from "./style-67OqfNed.js";
3
- import { R as Kr, e as Yr, f as Xr, p as Zr, b as Qr, t as ei, d as ti } from "./record-bindings-D4TuMzHs.js";
4
- import { i as ce, a as Ye } from "./component-tree-Ca6YYfHq.js";
5
- import { R as ri } from "./component-tree-Ca6YYfHq.js";
6
- import { v as Xe, R as Ze, a as pe, p as re, b as St } from "./template-registry-u11fPd8D.js";
7
- import { c as oi, d as ai, e as si, s as li, f as ci, g as di, h as mi } from "./template-registry-u11fPd8D.js";
8
- import { v as Et } from "./dataset-DL83majE.js";
9
- import { d as fi } from "./dataset-DL83majE.js";
1
+ import { D as le, a as J, r as _, b as q, c as Ge, d as Y, e as Je, m as ue, f as Ke, g as ye, p as V, P as ie } from "./style-67OqfNed.js";
2
+ import { C as _r, h as Wr, i as Ur, j as Vr, L as qr, M as Gr, S as Jr, k as Kr, l as Yr } from "./style-67OqfNed.js";
3
+ import { R as Zr, e as Qr, f as eo, p as to, b as no, t as ro, d as oo } from "./record-bindings-DEJtmo3p.js";
4
+ import { i as ce, a as Ye } from "./component-tree-CvW4lzpv.js";
5
+ import { R as ao } from "./component-tree-CvW4lzpv.js";
6
+ import { v as Xe, R as Ze, a as pe, p as re, b as Et } from "./template-registry-BIhIHOab.js";
7
+ import { c as lo, d as co, e as mo, s as ho, f as fo, g as go, h as uo } from "./template-registry-BIhIHOab.js";
8
+ import { v as Ct } from "./dataset-DL83majE.js";
9
+ import { d as wo } from "./dataset-DL83majE.js";
10
10
  import { h as Me, w as Qe } from "./textwrap-BEIg2w8y.js";
11
- import { c as ui, a as pi, b as wi, m as bi } from "./textwrap-BEIg2w8y.js";
12
- import { R as ve, d as Ct, s as et, a as Tt, p as Rt } from "./json-snapshot-DYmEe3sO.js";
13
- import { D as Mi, P as vi, b as xi, c as Si, e as Ei, f as Ci, g as Ti, h as Ri, i as $i, j as Pi, k as Ai, l as ki, m as Oi, n as Ii, o as Ni, q as Li, r as Di, t as ji, u as Fi, v as zi, w as Hi, x as Bi, y as _i, z as Wi, A as Vi, B as Ui, C as qi, E as Gi } from "./json-snapshot-DYmEe3sO.js";
11
+ import { c as yo, a as Mo, b as vo, m as xo } from "./textwrap-BEIg2w8y.js";
12
+ import { R as ve, d as Tt, s as et, a as Rt, p as Pt } from "./json-snapshot-By4ZVVUt.js";
13
+ import { D as Eo, P as Co, b as To, c as Ro, e as Po, f as $o, g as ko, h as Ao, i as Io, j as Oo, k as No, l as Do, m as Lo, n as Fo, o as jo, q as zo, r as Ho, t as Bo, u as _o, v as Wo, w as Uo, x as Vo, y as qo, z as Go, A as Jo, B as Ko, C as Yo, E as Xo, F as Zo, G as Qo, H as ei, I as ti } from "./json-snapshot-By4ZVVUt.js";
14
14
  import { r as xe } from "./grid-geometry-BNptEcMm.js";
15
+ import { d as tt } from "./data-bar-PtjXhMgN.js";
15
16
  import { r as Se, d as $t } from "./rich-text-layout-Ct5WrY1g.js";
16
- import { r as Z, n as tt, O as Pt, a as Ee } from "./assets-BIMVwjQe.js";
17
- import { b as Ki, i as Yi } from "./assets-BIMVwjQe.js";
18
- import { o as At, w as Le } from "./progress-Hc2vxoCs.js";
19
- import { c as kt } from "./drill-CKW3Xtfa.js";
20
- import { R as Zi, a as Qi, m as eo, r as to, v as no } from "./drill-CKW3Xtfa.js";
21
- import { R as io, a as oo, f as ao, i as so, b as lo, c as co, p as mo, r as ho, v as fo, d as go } from "./param-validation-Do7Eg8Zv.js";
22
- import { c as po, a as wo, d as bo, r as yo, b as Mo } from "./template-catalog-wT1fNeAP.js";
23
- import { c as xo, i as So, t as Eo } from "./template-outline-cnWfT_LK.js";
24
- import { a as To, c as Ro, i as $o, b as Po } from "./template-fragments-DmX5XK4N.js";
25
- import { T as ko, c as Oo, v as Io } from "./tree-DNJorJUf.js";
17
+ import { r as Z, n as nt, O as kt, a as Ee } from "./assets-2eC3mOcV.js";
18
+ import { b as ri, i as oi } from "./assets-2eC3mOcV.js";
19
+ import { o as At, w as De } from "./progress-Hc2vxoCs.js";
20
+ import { c as It } from "./prefill-B8H9qwE4.js";
21
+ import { R as ai, a as si, b as li, d as ci, e as di, m as mi, r as hi, f as fi, g as gi, v as ui } from "./prefill-B8H9qwE4.js";
22
+ import { R as wi, a as bi, f as yi, b as Mi, c as vi, d as xi, i as Si, e as Ei, g as Ci, p as Ti, h as Ri, j as Pi, k as $i, r as ki, v as Ai, l as Ii } from "./param-validation-CnDEd2l-.js";
23
+ import { b as Ni, d as Di } from "./matrix-Dy-tyY7E.js";
24
+ import { k as Fi, l as ji, r as zi } from "./computed-C8NRZQss.js";
25
+ import { c as Bi, a as _i, d as Wi, r as Ui, b as Vi } from "./template-catalog-CmbWOJqy.js";
26
+ import { c as Gi, i as Ji, t as Ki } from "./template-outline-DiADphlq.js";
27
+ import { a as Xi, c as Zi, i as Qi, b as ea } from "./template-fragments-DWgo9tlZ.js";
28
+ import { T as na, c as ra, a as oa } from "./column-visual-BpgQVWwT.js";
26
29
  function we(e, t, n) {
27
- let r = 0, i = e.length;
28
- for (; r < i; ) {
29
- const o = r + i >>> 1;
30
- n(e[o]) < t ? r = o + 1 : i = o;
30
+ let r = 0, o = e.length;
31
+ for (; r < o; ) {
32
+ const i = r + o >>> 1;
33
+ n(e[i]) < t ? r = i + 1 : o = i;
31
34
  }
32
35
  return r;
33
36
  }
34
- function nt(e) {
37
+ function rt(e) {
35
38
  if (![e.leftMm, e.topMm, e.widthMm, e.heightMm].every(Number.isFinite) || e.widthMm < 0 || e.heightMm < 0) throw new RangeError("Preview viewport must have finite coordinates and nonnegative dimensions.");
36
39
  return e;
37
40
  }
@@ -39,48 +42,48 @@ function Ot(e) {
39
42
  const t = e.rows.map(() => []);
40
43
  for (const n of e.cells) {
41
44
  const r = Math.min(t.length, n.ri + (n.cell.rowSpan ?? 1));
42
- for (let i = n.ri; i < r; i++) t[i].push(n);
45
+ for (let o = n.ri; o < r; o++) t[o].push(n);
43
46
  }
44
- for (const n of t) n.sort((r, i) => r.xMm - i.xMm);
47
+ for (const n of t) n.sort((r, o) => r.xMm - o.xMm);
45
48
  return {
46
49
  cells(n) {
47
- nt(n);
48
- const r = /* @__PURE__ */ new Set(), i = n.topMm + n.heightMm, o = n.leftMm + n.widthMm;
50
+ rt(n);
51
+ const r = /* @__PURE__ */ new Set(), o = n.topMm + n.heightMm, i = n.leftMm + n.widthMm;
49
52
  let l = we(e.rows, n.topMm, (s) => s.pos + s.size);
50
- for (; l < t.length && e.rows[l].pos <= i; ) {
53
+ for (; l < t.length && e.rows[l].pos <= o; ) {
51
54
  const s = t[l++];
52
55
  let a = we(s, n.leftMm, (c) => c.xMm + c.widthMm);
53
- for (; a < s.length && s[a].xMm <= o; ) r.add(s[a++]);
56
+ for (; a < s.length && s[a].xMm <= i; ) r.add(s[a++]);
54
57
  }
55
58
  return [...r].sort((s, a) => s.ri - a.ri || s.ci - a.ci);
56
59
  }
57
60
  };
58
61
  }
59
- function It(e) {
60
- const t = ["h", "v"].map((n) => e.filter((r) => r.kind === n).sort((r, i) => r.pos - i.pos));
62
+ function Nt(e) {
63
+ const t = ["h", "v"].map((n) => e.filter((r) => r.kind === n).sort((r, o) => r.pos - o.pos));
61
64
  return (n) => {
62
65
  const r = [];
63
- return t.forEach((i, o) => {
64
- const l = o === 0 ? n.topMm : n.leftMm, s = l + (o === 0 ? n.heightMm : n.widthMm), a = o === 0 ? n.leftMm : n.topMm, c = a + (o === 0 ? n.widthMm : n.heightMm);
65
- let d = we(i, l, (m) => m.pos);
66
- for (; d < i.length && i[d].pos <= s; ) {
67
- const m = i[d++];
66
+ return t.forEach((o, i) => {
67
+ const l = i === 0 ? n.topMm : n.leftMm, s = l + (i === 0 ? n.heightMm : n.widthMm), a = i === 0 ? n.leftMm : n.topMm, c = a + (i === 0 ? n.widthMm : n.heightMm);
68
+ let d = we(o, l, (m) => m.pos);
69
+ for (; d < o.length && o[d].pos <= s; ) {
70
+ const m = o[d++];
68
71
  m.to >= a && m.from <= c && r.push(m);
69
72
  }
70
73
  }), r;
71
74
  };
72
75
  }
73
- function Nt() {
76
+ function Dt() {
74
77
  const e = [];
75
78
  return {
76
79
  mount(t) {
77
- e.push(Ft(t));
80
+ e.push(zt(t));
78
81
  },
79
82
  update(t, n, r) {
80
- nt(t);
81
- let i = !1;
82
- for (const o of e) i = o.update(t, o.component === n ? r : void 0) || i;
83
- return i;
83
+ rt(t);
84
+ let o = !1;
85
+ for (const i of e) o = i.update(t, i.component === n ? r : void 0) || o;
86
+ return o;
84
87
  }
85
88
  };
86
89
  }
@@ -93,18 +96,18 @@ function Lt(e, t) {
93
96
  heightMm: e.heightMm + 2 * r
94
97
  };
95
98
  }
96
- function Dt(e, t, n) {
99
+ function Ft(e, t, n) {
97
100
  let r = t.get(n);
98
101
  return r || (r = e.table.ownerDocument.createElement("tr"), r.className = e.rowClass, r.setAttribute("role", "row"), r.setAttribute("aria-rowindex", String(n + 1)), r.style.cssText = "all:unset;display:contents;box-sizing:border-box", t.set(n, r)), r;
99
102
  }
100
103
  function jt(e, t, n, r) {
101
- const i = new Set(t), o = new Set(t.map((s) => s.ri));
102
- for (const [s, a] of n) i.has(s) || (a.remove(), n.delete(s));
103
- for (const [s, a] of r) o.has(s) || (a.remove(), r.delete(s));
104
+ const o = new Set(t), i = new Set(t.map((s) => s.ri));
105
+ for (const [s, a] of n) o.has(s) || (a.remove(), n.delete(s));
106
+ for (const [s, a] of r) i.has(s) || (a.remove(), r.delete(s));
104
107
  for (const s of t) {
105
108
  let a = n.get(s);
106
109
  a || (a = e.drawCell(s), a.setAttribute("aria-colindex", String(s.ci + 1)), n.set(s, a));
107
- const c = Dt(e, r, s.ri);
110
+ const c = Ft(e, r, s.ri);
108
111
  a.parentElement !== c && c.appendChild(a);
109
112
  }
110
113
  const l = /* @__PURE__ */ new Map();
@@ -112,26 +115,26 @@ function jt(e, t, n, r) {
112
115
  const a = l.get(s.ri) ?? [];
113
116
  a.push(n.get(s)), l.set(s.ri, a);
114
117
  }
115
- for (const [s, a] of l) De(r.get(s), a);
116
- De(e.body, [...o].sort((s, a) => s - a).map((s) => r.get(s)));
118
+ for (const [s, a] of l) Le(r.get(s), a);
119
+ Le(e.body, [...i].sort((s, a) => s - a).map((s) => r.get(s)));
117
120
  }
118
- function De(e, t) {
121
+ function Le(e, t) {
119
122
  let n = e.firstElementChild;
120
123
  for (const r of t)
121
124
  r === n ? n = n.nextElementSibling : e.insertBefore(r, n);
122
125
  }
123
- function Ft(e) {
124
- const t = xe(e.grid, e.component.widthMm, e.component.heightMm), n = new Map(t.cells.map((c) => [`${c.ri}:${c.ci}`, c])), r = Ot(t), i = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), l = It(Se(t, e.component));
126
+ function zt(e) {
127
+ const t = xe(e.grid, e.component.widthMm, e.component.heightMm), n = new Map(t.cells.map((c) => [`${c.ri}:${c.ci}`, c])), r = Ot(t), o = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map(), l = Nt(Se(t, e.component));
125
128
  e.table.setAttribute("aria-rowcount", String(t.rows.length)), e.table.setAttribute("aria-colcount", String(t.columns.length));
126
129
  let s = "", a = "";
127
130
  return { component: e.component, update(c, d) {
128
131
  const m = Lt(c, e.component), h = r.cells(m), f = d && n.get(`${d.rowIndex}:${d.columnIndex}`);
129
- f && !h.includes(f) && h.push(f), h.sort((y, N) => y.ri - N.ri || y.ci - N.ci);
130
- const g = h.map((y) => `${y.ri}:${y.ci}`).join(";"), C = l(m), S = C.map((y) => `${y.kind}:${y.pos}:${y.from}:${y.to}`).join(";"), w = g !== s, v = S !== a;
131
- return w && (s = g, jt(e, h, i, o)), v && (a = S, e.edgeHost.replaceChildren(...e.drawEdges(C))), w || v;
132
+ f && !h.includes(f) && h.push(f), h.sort((w, N) => w.ri - N.ri || w.ci - N.ci);
133
+ const g = h.map((w) => `${w.ri}:${w.ci}`).join(";"), C = l(m), S = C.map((w) => `${w.kind}:${w.pos}:${w.from}:${w.to}`).join(";"), b = g !== s, M = S !== a;
134
+ return b && (s = g, jt(e, h, o, i)), M && (a = S, e.edgeHost.replaceChildren(...e.drawEdges(C))), b || M;
132
135
  } };
133
136
  }
134
- const rt = /* @__PURE__ */ new WeakMap(), zt = {
137
+ const ot = /* @__PURE__ */ new WeakMap(), Ht = {
135
138
  root: "mr-root",
136
139
  page: "mr-page",
137
140
  comp: "mr-comp",
@@ -148,18 +151,18 @@ const rt = /* @__PURE__ */ new WeakMap(), zt = {
148
151
  cell: "mr-cell",
149
152
  unknown: "mr-unknown"
150
153
  };
151
- function $(e, t) {
152
- return t?.classNames?.[e] ?? zt[e];
154
+ function P(e, t) {
155
+ return t?.classNames?.[e] ?? Ht[e];
153
156
  }
154
- class Ht {
157
+ class Bt {
155
158
  constructor() {
156
159
  this.props = [];
157
160
  }
158
161
  add(t, n) {
159
162
  return n == null || n === !1 || n === "" ? this : (this.props.push([t, String(n)]), this);
160
163
  }
161
- mm(t, n, r, i = 2) {
162
- return this.add(t, `${J(ue(n, r), i)}px`);
164
+ mm(t, n, r, o = 2) {
165
+ return this.add(t, `${J(ue(n, r), o)}px`);
163
166
  }
164
167
  toString() {
165
168
  let t = "";
@@ -173,299 +176,304 @@ class Ht {
173
176
  }
174
177
  }
175
178
  function x(e, t = "unset") {
176
- return new Ht().add("all", t).add("display", e).add("box-sizing", "border-box");
179
+ return new Bt().add("all", t).add("display", e).add("box-sizing", "border-box");
177
180
  }
178
181
  function it(e, t, n) {
179
182
  e.add("color", t.color).add("font-family", t.fontFamily).add("font-weight", t.bold != null ? t.bold ? "700" : "400" : void 0).add("font-style", t.italic != null ? t.italic ? "italic" : "normal" : void 0).add("text-decoration", t.underline != null ? t.underline ? "underline" : "none" : void 0).add("letter-spacing", t.letterSpacing != null ? `${t.letterSpacing}pt` : void 0).add("line-height", String(q(t))).add("text-align", t.align);
180
183
  const r = _(t, n);
181
184
  e.add("font-size", `${J(r.fontSizePx, 2)}px`);
182
185
  }
183
- function Bt(e, t, n) {
186
+ function _t(e, t, n) {
184
187
  const r = t.style ?? {};
185
188
  it(e, r, n), e.add("background-color", r.backgroundColor).add("opacity", r.opacity != null ? String(r.opacity) : void 0).add("transform", r.rotateDeg ? `rotate(${r.rotateDeg}deg)` : void 0);
186
189
  }
187
- function je(e, t, n, r, i, o) {
188
- const l = e.cell, s = o.createElement("td");
189
- s.className = $("cell", i), s.dataset.mrRowIndex = String(e.ri), s.dataset.mrColumnIndex = String(e.ci), s.setAttribute("role", t.table?.role === "header" ? "columnheader" : "cell"), l.colSpan && (s.colSpan = l.colSpan), l.rowSpan && (s.rowSpan = l.rowSpan);
190
+ function Fe(e, t, n, r, o, i) {
191
+ const l = e.cell, s = i.createElement("td");
192
+ s.className = P("cell", o), s.dataset.mrRowIndex = String(e.ri), s.dataset.mrColumnIndex = String(e.ci), s.setAttribute("role", t.table?.role === "header" ? "columnheader" : "cell"), l.colSpan && (s.colSpan = l.colSpan), l.rowSpan && (s.rowSpan = l.rowSpan);
190
193
  const a = Ke(t.style, l.style), c = x("block").add("position", "absolute").mm("left", e.xMm, r).mm("top", e.yMm, r).mm("width", e.widthMm, r).mm("height", e.heightMm, r).add("background-color", a.backgroundColor).add("vertical-align", a.verticalAlign ?? "middle");
191
194
  it(c, a, r), c.applyTo(s);
192
- const d = o.createElement("div");
193
- d.className = "mr-cell-content", x("flex").add("position", "absolute").mm("left", n + (l.indentMm ?? 0), r).mm("right", n, r).mm("top", n, r).mm("bottom", n, r).add("flex-direction", "column").add("justify-content", a.verticalAlign === "top" ? "flex-start" : a.verticalAlign === "bottom" ? "flex-end" : "center").add("overflow-wrap", "anywhere").add("overflow", "hidden").applyTo(d), l.richParagraphs?.length ? d.appendChild(at({ ...t, kind: "text", richParagraphs: l.richParagraphs }, r, i, o)) : l.text != null && d.append(l.text);
194
- for (const m of l.children ?? []) d.appendChild(st(m, r, i, o));
195
- return s.appendChild(d), s;
195
+ const d = tt(l.dataBar, e.widthMm, e.heightMm, n);
196
+ if (d) {
197
+ const h = i.createElement("div");
198
+ h.className = "mr-cell-data-bar", h.setAttribute("aria-hidden", "true"), x("block").add("position", "absolute").mm("left", d.x, r).mm("top", d.y, r).mm("width", d.width, r).mm("height", d.height, r).add("background-color", d.color).add("opacity", "0.35").add("pointer-events", "none").applyTo(h), s.appendChild(h);
199
+ }
200
+ const m = i.createElement("div");
201
+ m.className = "mr-cell-content", x("flex").add("position", "absolute").mm("left", n + (l.indentMm ?? 0), r).mm("right", n, r).mm("top", n, r).mm("bottom", n, r).add("flex-direction", "column").add("justify-content", a.verticalAlign === "top" ? "flex-start" : a.verticalAlign === "bottom" ? "flex-end" : "center").add("overflow-wrap", "anywhere").add("overflow", "hidden").applyTo(m), l.richParagraphs?.length ? m.appendChild(st({ ...t, kind: "text", richParagraphs: l.richParagraphs }, r, o, i)) : l.text != null && m.append(l.text);
202
+ for (const h of l.children ?? []) m.appendChild(lt(h, r, o, i));
203
+ return s.insertBefore(m, s.firstChild), s;
196
204
  }
197
- function _t(e, t, n, r) {
198
- return ot(Se(e, t), n, r);
205
+ function Wt(e, t, n, r) {
206
+ return at(Se(e, t), n, r);
199
207
  }
200
- function ot(e, t, n) {
208
+ function at(e, t, n) {
201
209
  return e.map((r) => {
202
- const i = `${J(r.widthPt * t / 72, 2)}px solid ${r.color}`, o = n.createElement("div");
203
- o.className = "mr-grid-edge", o.setAttribute("aria-hidden", "true");
210
+ const o = `${J(r.widthPt * t / 72, 2)}px solid ${r.color}`, i = n.createElement("div");
211
+ i.className = "mr-grid-edge", i.setAttribute("aria-hidden", "true");
204
212
  const l = r.kind === "h";
205
- return x("block").add("position", "absolute").add("pointer-events", "none").mm("left", l ? r.from : r.pos, t).mm("top", l ? r.pos : r.from, t).mm("width", l ? r.to - r.from : 0, t).mm("height", l ? 0 : r.to - r.from, t).add(l ? "border-top" : "border-left", i).applyTo(o), o;
213
+ return x("block").add("position", "absolute").add("pointer-events", "none").mm("left", l ? r.from : r.pos, t).mm("top", l ? r.pos : r.from, t).mm("width", l ? r.to - r.from : 0, t).mm("height", l ? 0 : r.to - r.from, t).add(l ? "border-top" : "border-left", o).applyTo(i), i;
206
214
  });
207
215
  }
208
- function Wt(e, t, n, r, i) {
209
- const o = i.createElement("table");
210
- o.className = $("grid", r), o.setAttribute("role", "table"), x("block").add("position", "relative").add("width", "100%").add("height", "100%").applyTo(o);
211
- const l = i.createElement("tbody");
212
- x("contents").applyTo(l), o.appendChild(l);
213
- const s = t.style?.rotateDeg ? void 0 : rt.get(r);
216
+ function Ut(e, t, n, r, o) {
217
+ const i = o.createElement("table");
218
+ i.className = P("grid", r), i.setAttribute("role", "table"), x("block").add("position", "relative").add("width", "100%").add("height", "100%").applyTo(i);
219
+ const l = o.createElement("tbody");
220
+ x("contents").applyTo(l), i.appendChild(l);
221
+ const s = t.style?.rotateDeg ? void 0 : ot.get(r);
214
222
  if (s) {
215
- const m = i.createElement("div");
223
+ const m = o.createElement("div");
216
224
  x("block").add("position", "relative").add("width", "100%").add("height", "100%").applyTo(m);
217
- const h = i.createElement("div");
225
+ const h = o.createElement("div");
218
226
  return x("contents").applyTo(h), h.setAttribute("aria-hidden", "true"), s.mount({
219
227
  grid: e,
220
228
  component: t,
221
- table: o,
222
- rowClass: $("row", r),
229
+ table: i,
230
+ rowClass: P("row", r),
223
231
  body: l,
224
232
  edgeHost: h,
225
- drawCell: (f) => je(f, t, e.paddingMm ?? 0.5, n, { ...r }, i),
226
- drawEdges: (f) => ot(f, n, i)
227
- }), m.append(o, h), m;
233
+ drawCell: (f) => Fe(f, t, e.paddingMm ?? 0.5, n, { ...r }, o),
234
+ drawEdges: (f) => at(f, n, o)
235
+ }), m.append(i, h), m;
228
236
  }
229
237
  const a = xe(e, t.widthMm, t.heightMm), c = e.cells.map(() => {
230
- const m = i.createElement("tr");
231
- return m.className = $("row", r), m.setAttribute("role", "row"), x("contents").applyTo(m), l.appendChild(m), m;
238
+ const m = o.createElement("tr");
239
+ return m.className = P("row", r), m.setAttribute("role", "row"), x("contents").applyTo(m), l.appendChild(m), m;
232
240
  });
233
241
  for (const m of a.cells)
234
- c[m.ri].appendChild(je(m, t, e.paddingMm ?? 0.5, n, r, i));
235
- const d = i.createElement("div");
236
- return x("block").add("position", "relative").add("width", "100%").add("height", "100%").applyTo(d), d.append(o, ..._t(a, t, n, i)), d;
242
+ c[m.ri].appendChild(Fe(m, t, e.paddingMm ?? 0.5, n, r, o));
243
+ const d = o.createElement("div");
244
+ return x("block").add("position", "relative").add("width", "100%").add("height", "100%").applyTo(d), d.append(i, ...Wt(a, t, n, o)), d;
237
245
  }
238
246
  function Vt(e, t, n, r) {
239
- const i = r.createElement("div");
240
- i.className = $("paragraph", n), x("block").add("text-align", e.align).add("line-height", e.lineHeight != null ? String(e.lineHeight) : void 0).mm("margin-top", e.spaceBeforeMm ?? 0, t).mm("margin-bottom", e.spaceAfterMm ?? 0, t).mm("text-indent", e.indentMm ?? 0, t).applyTo(i);
241
- for (const o of e.segments || []) {
247
+ const o = r.createElement("div");
248
+ o.className = P("paragraph", n), x("block").add("text-align", e.align).add("line-height", e.lineHeight != null ? String(e.lineHeight) : void 0).mm("margin-top", e.spaceBeforeMm ?? 0, t).mm("margin-bottom", e.spaceAfterMm ?? 0, t).mm("text-indent", e.indentMm ?? 0, t).applyTo(o);
249
+ for (const i of e.segments || []) {
242
250
  const l = r.createElement("span");
243
- l.className = $("segment", n), l.textContent = o.kind === "field" ? o.field ?? "" : o.text ?? "";
251
+ l.className = P("segment", n), l.textContent = i.kind === "field" ? i.field ?? "" : i.text ?? "";
244
252
  const s = x("inline");
245
- if (o.style) {
246
- const a = o.style;
253
+ if (i.style) {
254
+ const a = i.style;
247
255
  s.add("color", a.color).add("background-color", a.backgroundColor).add("font-family", a.fontFamily).add("line-height", a.lineHeight).add("letter-spacing", a.letterSpacing == null ? void 0 : `${a.letterSpacing * t / 72}px`).add("font-weight", a.bold != null ? a.bold ? "700" : "400" : void 0).add("font-style", a.italic != null ? a.italic ? "italic" : "normal" : void 0).add("text-decoration", a.underline != null ? a.underline ? "underline" : "none" : void 0), (a.fontSize != null || a.fontSizePx != null) && s.add("font-size", `${J(_(a, t).fontSizePx, 2)}px`);
248
256
  }
249
- s.applyTo(l), i.appendChild(l);
257
+ s.applyTo(l), o.appendChild(l);
250
258
  }
251
- return i;
259
+ return o;
252
260
  }
253
- function at(e, t, n, r) {
261
+ function st(e, t, n, r) {
254
262
  if (Ye(e)) {
255
- const i = r.createElement("div");
256
- i.className = $("rich", n), x("block").applyTo(i);
257
- for (const o of e.richParagraphs) i.appendChild(Vt(o, t, n, r));
258
- return i;
263
+ const o = r.createElement("div");
264
+ o.className = P("rich", n), x("block").applyTo(o);
265
+ for (const i of e.richParagraphs) o.appendChild(Vt(i, t, n, r));
266
+ return o;
259
267
  }
260
268
  if (Array.isArray(e.lines) && e.lines.length > 0) {
261
- const i = r.createElement("div");
262
- i.className = $("lines", n), x("block").applyTo(i);
263
- for (const o of e.lines) {
269
+ const o = r.createElement("div");
270
+ o.className = P("lines", n), x("block").applyTo(o);
271
+ for (const i of e.lines) {
264
272
  const l = r.createElement("div");
265
- l.className = $("line", n), l.textContent = o, x("block").add("white-space", "pre").add("min-height", "1lh").applyTo(l), i.appendChild(l);
273
+ l.className = P("line", n), l.textContent = i, x("block").add("white-space", "pre").add("min-height", "1lh").applyTo(l), o.appendChild(l);
266
274
  }
267
- return i;
275
+ return o;
268
276
  }
269
277
  return e.text ?? "";
270
278
  }
271
- function Ut(e, t, n, r) {
272
- const i = r.createElement("div");
273
- i.className = $("text", n);
274
- const o = e.style || {};
275
- return x("flex").add("width", "100%").add("height", "100%").add("flex-direction", "column").add("justify-content", o.verticalAlign === "middle" ? "center" : o.verticalAlign === "bottom" ? "flex-end" : "flex-start").add("overflow-wrap", "anywhere").add("overflow", "hidden").applyTo(i), i.append(at(e, t, n, r)), i;
279
+ function qt(e, t, n, r) {
280
+ const o = r.createElement("div");
281
+ o.className = P("text", n);
282
+ const i = e.style || {};
283
+ return x("flex").add("width", "100%").add("height", "100%").add("flex-direction", "column").add("justify-content", i.verticalAlign === "middle" ? "center" : i.verticalAlign === "bottom" ? "flex-end" : "flex-start").add("overflow-wrap", "anywhere").add("overflow", "hidden").applyTo(o), o.append(st(e, t, n, r)), o;
276
284
  }
277
- function qt(e, t, n) {
285
+ function Gt(e, t, n) {
278
286
  const r = n.createElement("img");
279
- return r.className = $("image", t), r.src = e.imageData, x("block").add("width", "100%").add("height", "100%").add("object-fit", "contain").applyTo(r), r.alt = e.kind, r;
287
+ return r.className = P("image", t), r.src = e.imageData, x("block").add("width", "100%").add("height", "100%").add("object-fit", "contain").applyTo(r), r.alt = e.kind, r;
280
288
  }
281
- function Fe(e, t, n, r) {
282
- const i = r.createElement("div");
283
- i.className = $("shape", n);
284
- const o = e.style || {}, l = Y(o), s = Je(o), a = `${J(l.widthPt * t / 72, 2)}px solid ${l.color}`, c = x("block");
285
- return e.grid ? c.add("position", "relative") : e.kind === "rect" ? (s.top && c.add("border-top", a), s.right && c.add("border-right", a), s.bottom && c.add("border-bottom", a), s.left && c.add("border-left", a)) : e.kind === "ellipse" ? (s.inner && c.add("border", a).add("border-radius", "50%"), o.backgroundColor && c.add("background-color", o.backgroundColor)) : e.kind === "line" && c.add("height", "0").add("border-top", a), c.add("box-sizing", "border-box").add("width", "100%").add("height", "100%"), c.applyTo(i), i;
289
+ function je(e, t, n, r) {
290
+ const o = r.createElement("div");
291
+ o.className = P("shape", n);
292
+ const i = e.style || {}, l = Y(i), s = Je(i), a = `${J(l.widthPt * t / 72, 2)}px solid ${l.color}`, c = x("block");
293
+ return e.grid ? c.add("position", "relative") : e.kind === "rect" ? (s.top && c.add("border-top", a), s.right && c.add("border-right", a), s.bottom && c.add("border-bottom", a), s.left && c.add("border-left", a)) : e.kind === "ellipse" ? (s.inner && c.add("border", a).add("border-radius", "50%"), i.backgroundColor && c.add("background-color", i.backgroundColor)) : e.kind === "line" && c.add("height", "0").add("border-top", a), c.add("box-sizing", "border-box").add("width", "100%").add("height", "100%"), c.applyTo(o), o;
286
294
  }
287
- function Gt(e, t, n) {
288
- const r = n.createElementNS("http://www.w3.org/2000/svg", "svg"), i = ue(e.widthMm, t), o = ue(e.heightMm, t);
289
- r.setAttribute("width", String(Math.max(1, i))), r.setAttribute("height", String(Math.max(1, o))), r.setAttribute("aria-hidden", "true"), r.style.overflow = "visible", r.style.display = "block";
295
+ function Jt(e, t, n) {
296
+ const r = n.createElementNS("http://www.w3.org/2000/svg", "svg"), o = ue(e.widthMm, t), i = ue(e.heightMm, t);
297
+ r.setAttribute("width", String(Math.max(1, o))), r.setAttribute("height", String(Math.max(1, i))), r.setAttribute("aria-hidden", "true"), r.style.overflow = "visible", r.style.display = "block";
290
298
  const l = n.createElementNS("http://www.w3.org/2000/svg", "line");
291
- l.setAttribute("x1", "0"), l.setAttribute("x2", String(i)), l.setAttribute("y1", e.lineDirection === "up" ? String(o) : "0"), l.setAttribute("y2", e.lineDirection === "up" ? "0" : String(o));
299
+ l.setAttribute("x1", "0"), l.setAttribute("x2", String(o)), l.setAttribute("y1", e.lineDirection === "up" ? String(i) : "0"), l.setAttribute("y2", e.lineDirection === "up" ? "0" : String(i));
292
300
  const s = Y({ ...e.style, borderColor: e.style?.lineColor ?? e.style?.borderColor });
293
301
  return l.setAttribute("stroke", s.color), l.setAttribute("stroke-width", String(s.widthPt * t / 72)), r.appendChild(l), r;
294
302
  }
295
- function st(e, t, n, r) {
296
- const i = r.createElement("div");
297
- i.className = `${$("comp", n)} mr-kind-${e.kind}`;
298
- const o = x("block").add("position", "absolute").mm("left", e.leftMm, t).mm("top", e.topMm, t).mm("width", e.widthMm, t).mm("height", e.heightMm, t).add("box-sizing", "border-box");
299
- if (Bt(o, e, t), o.applyTo(i), ce(e))
300
- return i.appendChild(qt(e, n, r)), i;
303
+ function lt(e, t, n, r) {
304
+ const o = r.createElement("div");
305
+ o.className = `${P("comp", n)} mr-kind-${e.kind}`;
306
+ const i = x("block").add("position", "absolute").mm("left", e.leftMm, t).mm("top", e.topMm, t).mm("width", e.widthMm, t).mm("height", e.heightMm, t).add("box-sizing", "border-box");
307
+ if (_t(i, e, t), i.applyTo(o), ce(e))
308
+ return o.appendChild(Gt(e, n, r)), o;
301
309
  if (e.kind === "text")
302
- return i.appendChild(Ut(e, t, n, r)), i;
310
+ return o.appendChild(qt(e, t, n, r)), o;
303
311
  if (e.grid) {
304
- const s = Fe(e, t, n, r);
305
- return s.appendChild(Wt(e.grid, e, t, n, r)), i.appendChild(s), i;
312
+ const s = je(e, t, n, r);
313
+ return s.appendChild(Ut(e.grid, e, t, n, r)), o.appendChild(s), o;
306
314
  }
307
315
  if (e.kind === "line" && e.lineDirection)
308
- return i.appendChild(Gt(e, t, r)), i;
316
+ return o.appendChild(Jt(e, t, r)), o;
309
317
  if (e.kind === "line" || e.kind === "rect" || e.kind === "ellipse")
310
- return i.appendChild(Fe(e, t, n, r)), i;
318
+ return o.appendChild(je(e, t, n, r)), o;
311
319
  const l = r.createElement("div");
312
- return l.className = $("unknown", n), x("block").applyTo(l), l.textContent = e.fallbackText ?? `[${e.kind}]`, l.dataset.mrUnsupported = e.kind, l.setAttribute("role", "note"), i.appendChild(l), i;
320
+ return l.className = P("unknown", n), x("block").applyTo(l), l.textContent = e.fallbackText ?? `[${e.kind}]`, l.dataset.mrUnsupported = e.kind, l.setAttribute("role", "note"), o.appendChild(l), o;
313
321
  }
314
- function lt(e, t, n, r) {
315
- const i = r.createElement("div");
316
- return i.className = $("page", n), x("block", "initial").add("position", "relative").add("font-family", le).add("font-size", `${J(_(void 0, t).fontSizePx, 2)}px`).add("line-height", String(q(void 0))).add("white-space", "pre-wrap").add("direction", "ltr").mm("width", e.pageWidthMm, t).mm("height", e.pageHeightMm, t).add("background-color", "#fff").add("color", Ge).add("overflow", "hidden").add("box-sizing", "border-box").applyTo(i), e.components.forEach((o, l) => {
317
- const s = st(o, t, n, r);
318
- s.dataset.mrComponentIndex = String(l), i.appendChild(s);
319
- }), i;
322
+ function ct(e, t, n, r) {
323
+ const o = r.createElement("div");
324
+ return o.className = P("page", n), x("block", "initial").add("position", "relative").add("font-family", le).add("font-size", `${J(_(void 0, t).fontSizePx, 2)}px`).add("line-height", String(q(void 0))).add("white-space", "pre-wrap").add("direction", "ltr").mm("width", e.pageWidthMm, t).mm("height", e.pageHeightMm, t).add("background-color", "#fff").add("color", Ge).add("overflow", "hidden").add("box-sizing", "border-box").applyTo(o), e.components.forEach((i, l) => {
325
+ const s = lt(i, t, n, r);
326
+ s.dataset.mrComponentIndex = String(l), o.appendChild(s);
327
+ }), o;
320
328
  }
321
- function pr(e, t, n = {}) {
329
+ function br(e, t, n = {}) {
322
330
  const r = n.dpi ?? 96;
323
331
  Z(e, "dom", n);
324
- const i = t.createElement("div");
325
- return i.className = $("root", n), x("block").applyTo(i), i.dataset.schemaVersion = e.schemaVersion, e.pages.forEach((o) => {
326
- i.appendChild(lt(o, r, n, t));
327
- }), i;
328
- }
329
- function wr(e, t, n, r) {
330
- const i = { ...n }, o = Nt();
331
- return rt.set(i, o), { element: lt(e, t, i, r), update(s, a) {
332
- return o.update(s, a && e.components[a.componentIndex], a);
332
+ const o = t.createElement("div");
333
+ return o.className = P("root", n), x("block").applyTo(o), o.dataset.schemaVersion = e.schemaVersion, e.pages.forEach((i) => {
334
+ o.appendChild(ct(i, r, n, t));
335
+ }), o;
336
+ }
337
+ function yr(e, t, n, r) {
338
+ const o = { ...n }, i = Dt();
339
+ return ot.set(o, i), { element: ct(e, t, o, r), update(s, a) {
340
+ return i.update(s, a && e.components[a.componentIndex], a);
333
341
  } };
334
342
  }
335
- function Ce(e, t, n, r, i, o, l, s = "top") {
343
+ function Ce(e, t, n, r, o, i, l, s = "top") {
336
344
  e.font = `${t.italic ? "italic " : ""}${t.bold ? "bold " : ""}${t.fontSizePx}px ${l}`, "letterSpacing" in e && (e.letterSpacing = "0px"), e.fillStyle = t.color, e.textBaseline = "alphabetic";
337
345
  const a = t.fontSizePx * t.lineHeight, c = t.text === "" ? [""] : t.text.split(`
338
346
  `), d = c.length * a;
339
347
  let m = r;
340
- s === "middle" ? m = r + (o - d) / 2 : s === "bottom" && (m = r + o - d), c.forEach((h, f) => {
348
+ s === "middle" ? m = r + (i - d) / 2 : s === "bottom" && (m = r + i - d), c.forEach((h, f) => {
341
349
  const g = m + f * a + t.fontSizePx * 0.8;
342
- Jt(e, h, t, n, g, i), t.underline && h && Kt(e, h, t, n, g, i);
350
+ Kt(e, h, t, n, g, o), t.underline && h && Yt(e, h, t, n, g, o);
343
351
  }), e.textAlign = "left";
344
352
  }
345
- function Jt(e, t, n, r, i, o) {
353
+ function Kt(e, t, n, r, o, i) {
346
354
  const l = Array.from(t), s = n.letterSpacingPx ?? 0;
347
355
  if (!s) {
348
356
  e.textAlign = n.align === "center" ? "center" : n.align === "right" ? "right" : "left";
349
- const m = n.align === "center" ? r + o / 2 : n.align === "right" ? r + o : r;
350
- e.fillText(t, m, i);
357
+ const m = n.align === "center" ? r + i / 2 : n.align === "right" ? r + i : r;
358
+ e.fillText(t, m, o);
351
359
  return;
352
360
  }
353
- const a = e.measureText(t).width + Math.max(0, l.length - 1) * s, c = n.align === "center" ? r + (o - a) / 2 : n.align === "right" ? r + o - a : r;
361
+ const a = e.measureText(t).width + Math.max(0, l.length - 1) * s, c = n.align === "center" ? r + (i - a) / 2 : n.align === "right" ? r + i - a : r;
354
362
  e.textAlign = "left";
355
363
  let d = "";
356
364
  l.forEach((m, h) => {
357
- e.fillText(m, c + e.measureText(d).width + h * s, i), d += m;
365
+ e.fillText(m, c + e.measureText(d).width + h * s, o), d += m;
358
366
  });
359
367
  }
360
- function Kt(e, t, n, r, i, o) {
361
- const l = e.measureText(t).width + Math.max(0, Array.from(t).length - 1) * (n.letterSpacingPx ?? 0), s = n.align === "center" ? r + (o - l) / 2 : n.align === "right" ? r + o - l : r;
362
- e.strokeStyle = n.color, e.lineWidth = Math.max(0.5, n.fontSizePx / 20), e.beginPath(), e.moveTo(s, i + 1), e.lineTo(s + l, i + 1), e.stroke();
368
+ function Yt(e, t, n, r, o, i) {
369
+ const l = e.measureText(t).width + Math.max(0, Array.from(t).length - 1) * (n.letterSpacingPx ?? 0), s = n.align === "center" ? r + (i - l) / 2 : n.align === "right" ? r + i - l : r;
370
+ e.strokeStyle = n.color, e.lineWidth = Math.max(0.5, n.fontSizePx / 20), e.beginPath(), e.moveTo(s, o + 1), e.lineTo(s + l, o + 1), e.stroke();
363
371
  }
364
- function ct(e, t, n, r, i) {
365
- const o = r / 72, l = (s) => {
366
- e.font = `${s.italic ? "italic " : ""}${s.bold ? "bold " : ""}${_(s, r).fontSizePx}px ${s.fontFamily ?? i}`, "letterSpacing" in e && (e.letterSpacing = "0px");
372
+ function dt(e, t, n, r, o) {
373
+ const i = r / 72, l = (s) => {
374
+ e.font = `${s.italic ? "italic " : ""}${s.bold ? "bold " : ""}${_(s, r).fontSizePx}px ${s.fontFamily ?? o}`, "letterSpacing" in e && (e.letterSpacing = "0px");
367
375
  };
368
- $t(t, { x: n.x / o, yTop: -n.y / o, width: n.width / o, height: n.height / o }, {
376
+ $t(t, { x: n.x / i, yTop: -n.y / i, width: n.width / i, height: n.height / i }, {
369
377
  measure(s, a) {
370
- return l(a), e.measureText(s).width / o + (a.letterSpacing ?? 0);
378
+ return l(a), e.measureText(s).width / i + (a.letterSpacing ?? 0);
371
379
  },
372
380
  draw(s, a, c, d, m) {
373
- const h = _(a, r).fontSizePx, f = -d * o - h * 0.8;
374
- a.backgroundColor && (e.fillStyle = a.backgroundColor, e.fillRect(c * o, f, m * o, h * q(a))), Ce(e, { text: s, fontSizePx: h, bold: !!a.bold, italic: a.italic, underline: a.underline, color: ye(a), align: "left", lineHeight: q(a), letterSpacingPx: (a.letterSpacing ?? 0) * o }, c * o, f, m * o, h, a.fontFamily ?? i);
381
+ const h = _(a, r).fontSizePx, f = -d * i - h * 0.8;
382
+ a.backgroundColor && (e.fillStyle = a.backgroundColor, e.fillRect(c * i, f, m * i, h * q(a))), Ce(e, { text: s, fontSizePx: h, bold: !!a.bold, italic: a.italic, underline: a.underline, color: ye(a), align: "left", lineHeight: q(a), letterSpacingPx: (a.letterSpacing ?? 0) * i }, c * i, f, m * i, h, a.fontFamily ?? o);
375
383
  }
376
384
  });
377
385
  }
378
- function k(e) {
386
+ function A(e) {
379
387
  if (e?.aborted) throw e.reason ?? new DOMException("The operation was aborted.", "AbortError");
380
388
  }
381
- const Yt = (e, t) => (k(t), /^data:image\/(?:png|jpe?g|webp|gif|svg\+xml)[;,]/i.test(e) ? new Promise((n, r) => {
382
- const i = new Image(), o = () => {
383
- i.onload = null, i.onerror = null, t?.removeEventListener("abort", l);
389
+ const Xt = (e, t) => (A(t), /^data:image\/(?:png|jpe?g|webp|gif|svg\+xml)[;,]/i.test(e) ? new Promise((n, r) => {
390
+ const o = new Image(), i = () => {
391
+ o.onload = null, o.onerror = null, t?.removeEventListener("abort", l);
384
392
  }, l = () => {
385
- o(), i.src = "", r(t?.reason ?? new DOMException("The operation was aborted.", "AbortError"));
393
+ i(), o.src = "", r(t?.reason ?? new DOMException("The operation was aborted.", "AbortError"));
386
394
  };
387
- i.onload = () => {
388
- o(), n(i);
389
- }, i.onerror = () => {
390
- o(), r(new Error("Image could not be decoded for Canvas output."));
391
- }, t?.addEventListener("abort", l, { once: !0 }), i.src = e;
395
+ o.onload = () => {
396
+ i(), n(o);
397
+ }, o.onerror = () => {
398
+ i(), r(new Error("Image could not be decoded for Canvas output."));
399
+ }, t?.addEventListener("abort", l, { once: !0 }), o.src = e;
392
400
  }) : Promise.reject(new TypeError("Canvas imageData must be an image data URL; provide imageLoader for other sources.")));
393
- function Xt(e, t, n) {
394
- return k(n), n ? new Promise((r, i) => {
395
- const o = () => i(n.reason ?? new DOMException("The operation was aborted.", "AbortError"));
396
- n.addEventListener("abort", o, { once: !0 }), Promise.resolve().then(() => e(t, n)).then(r, i).finally(() => n.removeEventListener("abort", o));
401
+ function Zt(e, t, n) {
402
+ return A(n), n ? new Promise((r, o) => {
403
+ const i = () => o(n.reason ?? new DOMException("The operation was aborted.", "AbortError"));
404
+ n.addEventListener("abort", i, { once: !0 }), Promise.resolve().then(() => e(t, n)).then(r, o).finally(() => n.removeEventListener("abort", i));
397
405
  }) : e(t);
398
406
  }
399
407
  function* Te(e) {
400
- function* t(n, r, i, o) {
401
- if (o.has(n)) throw new TypeError("Cyclic grid children cannot be rendered.");
402
- ce(n) && (yield { component: n, componentIndex: r, componentPath: i });
403
- const l = new Set(o).add(n);
404
- for (const [s, a] of (n.grid?.cells ?? []).entries()) for (const [c, d] of a.entries()) for (const [m, h] of (d?.children ?? []).entries()) yield* t(h, r, [...i, s, c, m], l);
408
+ function* t(n, r, o, i) {
409
+ if (i.has(n)) throw new TypeError("Cyclic grid children cannot be rendered.");
410
+ ce(n) && (yield { component: n, componentIndex: r, componentPath: o });
411
+ const l = new Set(i).add(n);
412
+ for (const [s, a] of (n.grid?.cells ?? []).entries()) for (const [c, d] of a.entries()) for (const [m, h] of (d?.children ?? []).entries()) yield* t(h, r, [...o, s, c, m], l);
405
413
  }
406
414
  for (const [n, r] of e.components.entries()) yield* t(r, n, [], /* @__PURE__ */ new Set());
407
415
  }
408
- async function Zt(e, t, n) {
416
+ async function Qt(e, t, n) {
409
417
  const r = /* @__PURE__ */ new Map();
410
- for (const { component: i } of Te(e))
411
- !ce(i) || r.has(i.imageData) || r.set(i.imageData, await Xt(t, i.imageData, n));
412
- return k(n), r;
418
+ for (const { component: o } of Te(e))
419
+ !ce(o) || r.has(o.imageData) || r.set(o.imageData, await Zt(t, o.imageData, n));
420
+ return A(n), r;
413
421
  }
414
- function Qt(e, t, n, r, i, o) {
415
- const l = t, s = l.naturalWidth ?? l.width ?? i, a = l.naturalHeight ?? l.height ?? o;
422
+ function en(e, t, n, r, o, i) {
423
+ const l = t, s = l.naturalWidth ?? l.width ?? o, a = l.naturalHeight ?? l.height ?? i;
416
424
  if (s <= 0 || a <= 0) throw new RangeError("Decoded Canvas image dimensions must be positive.");
417
- const c = Math.min(i / s, o / a), d = s * c, m = a * c;
418
- e.drawImage(t, n + (i - d) / 2, r + (o - m) / 2, d, m);
425
+ const c = Math.min(o / s, i / a), d = s * c, m = a * c;
426
+ e.drawImage(t, n + (o - d) / 2, r + (i - m) / 2, d, m);
419
427
  }
420
- function en(e) {
421
- return kt(e.pageHeightsPx, e.gapPx).window(e.viewportHeightPx, e.scrollTopPx, e.overscan);
428
+ function tn(e) {
429
+ return It(e.pageHeightsPx, e.gapPx).window(e.viewportHeightPx, e.scrollTopPx, e.overscan);
422
430
  }
423
431
  const Re = 96 / 25.4;
424
- function $e(e, t = 96) {
432
+ function Pe(e, t = 96) {
425
433
  const n = t / 96 * Re;
426
434
  return {
427
435
  widthPx: Math.max(1, Math.round(e.pageWidthMm * n)),
428
436
  heightPx: Math.max(1, Math.round(e.pageHeightMm * n))
429
437
  };
430
438
  }
431
- function dt(e, t, n, r = 64e6) {
439
+ function mt(e, t, n, r = 64e6) {
432
440
  if (!Number.isFinite(t) || t <= 0 || !Number.isFinite(n) || n <= 0) throw new RangeError("Canvas dpr and dpi must be positive finite numbers.");
433
441
  if (!Number.isFinite(r) || r <= 0) throw new RangeError("maxCanvasPixels must be positive and finite.");
434
- const i = $e(e, n), o = Math.round(i.widthPx * t), l = Math.round(i.heightPx * t);
435
- if (!Number.isSafeInteger(o) || !Number.isSafeInteger(l) || o * l > r) throw new RangeError("Canvas page exceeds maxCanvasPixels; reduce resolution or split the report.");
436
- return { width: o, height: l };
437
- }
438
- function mt(e, t, n, r) {
439
- const i = document.createElement("canvas"), { widthPx: o, heightPx: l } = $e(e, n), s = dt(e, t, n, r);
440
- i.width = s.width, i.height = s.height, i.style.width = `${o}px`, i.style.height = `${l}px`;
441
- const a = i.getContext("2d");
442
+ const o = Pe(e, n), i = Math.round(o.widthPx * t), l = Math.round(o.heightPx * t);
443
+ if (!Number.isSafeInteger(i) || !Number.isSafeInteger(l) || i * l > r) throw new RangeError("Canvas page exceeds maxCanvasPixels; reduce resolution or split the report.");
444
+ return { width: i, height: l };
445
+ }
446
+ function ht(e, t, n, r) {
447
+ const o = document.createElement("canvas"), { widthPx: i, heightPx: l } = Pe(e, n), s = mt(e, t, n, r);
448
+ o.width = s.width, o.height = s.height, o.style.width = `${i}px`, o.style.height = `${l}px`;
449
+ const a = o.getContext("2d");
442
450
  if (!a)
443
451
  throw new Error("当前环境不支持 Canvas 2D(测试需真浏览器,见 e2e/canvas.spec.ts)");
444
- return a.scale(t, t), a.fillStyle = "#ffffff", a.fillRect(0, 0, o, l), { canvas: i, ctx: a };
452
+ return a.scale(t, t), a.fillStyle = "#ffffff", a.fillRect(0, 0, i, l), { canvas: o, ctx: a };
445
453
  }
446
- function br(e, t = 96) {
454
+ function Mr(e, t = 96) {
447
455
  return _(e, t).fontSizePx;
448
456
  }
449
- function tn(e, t, n, r, i, o, l) {
457
+ function nn(e, t, n, r, o, i, l) {
450
458
  for (const s of Se(t, n))
451
- e.strokeStyle = s.color, e.lineWidth = U(s.widthPt, l), e.beginPath(), s.kind === "v" ? (e.moveTo(r + s.pos * o, i + s.from * o), e.lineTo(r + s.pos * o, i + s.to * o)) : (e.moveTo(r + s.from * o, i + s.pos * o), e.lineTo(r + s.to * o, i + s.pos * o)), e.stroke();
459
+ e.strokeStyle = s.color, e.lineWidth = V(s.widthPt, l), e.beginPath(), s.kind === "v" ? (e.moveTo(r + s.pos * i, o + s.from * i), e.lineTo(r + s.pos * i, o + s.to * i)) : (e.moveTo(r + s.from * i, o + s.pos * i), e.lineTo(r + s.to * i, o + s.pos * i)), e.stroke();
452
460
  }
453
- function nn(e, t, n, r, i, o) {
454
- e.beginPath(), t.top && (e.moveTo(n, r), e.lineTo(n + i, r)), t.right && (e.moveTo(n + i, r), e.lineTo(n + i, r + o)), t.bottom && (e.moveTo(n + i, r + o), e.lineTo(n, r + o)), t.left && (e.moveTo(n, r + o), e.lineTo(n, r)), e.stroke();
461
+ function rn(e, t, n, r, o, i) {
462
+ e.beginPath(), t.top && (e.moveTo(n, r), e.lineTo(n + o, r)), t.right && (e.moveTo(n + o, r), e.lineTo(n + o, r + i)), t.bottom && (e.moveTo(n + o, r + i), e.lineTo(n, r + i)), t.left && (e.moveTo(n, r + i), e.lineTo(n, r)), e.stroke();
455
463
  }
456
- function rn(e, t, n, r, i, o, l, s, a, c, d, m) {
457
- const h = xe(t, o / s, l / s);
464
+ function on(e, t, n, r, o, i, l, s, a, c, d, m) {
465
+ const h = xe(t, i / s, l / s);
458
466
  for (const f of h.cells) {
459
467
  const g = f.cell.style?.backgroundColor ?? n.style?.backgroundColor;
460
- g && (e.fillStyle = g, e.fillRect(r + f.xMm * s, i + f.yMm * s, f.widthMm * s, f.heightMm * s));
468
+ g && (e.fillStyle = g, e.fillRect(r + f.xMm * s, o + f.yMm * s, f.widthMm * s, f.heightMm * s));
461
469
  }
462
- tn(e, h, n, r, i, s, a);
463
- for (const f of h.cells) on(e, f, n, r, i, s, a, c, d, m);
470
+ nn(e, h, n, r, o, s, a);
471
+ for (const f of h.cells) an(e, f, n, r, o, s, a, c, d, m);
464
472
  }
465
- function on(e, t, n, r, i, o, l, s, a, c) {
473
+ function an(e, t, n, r, o, i, l, s, a, c) {
466
474
  const d = n.grid?.paddingMm ?? 0.5, m = t.cell.text ?? "", h = Ke(n.style, t.cell.style), f = _(h, l), g = t.cell.indentMm ?? 0, C = Math.max(0, t.widthMm - 2 * d - g), S = Qe(m, C, { fontSizePt: f.fontSizePt, bold: h.bold, italic: h.italic, fontFamily: h.fontFamily ?? s, letterSpacingPt: h.letterSpacing }, a).join(`
467
- `), w = { x: r + (t.xMm + d + g) * o, y: i + (t.yMm + d) * o, width: C * o, height: Math.max(0, t.heightMm - 2 * d) * o };
468
- e.save(), e.beginPath(), e.rect(w.x, w.y, w.width, w.height), e.clip(), t.cell.richParagraphs?.length ? ct(e, { ...n, richParagraphs: t.cell.richParagraphs, style: { verticalAlign: "middle", ...h } }, w, l, s) : Ce(
475
+ `), b = { x: r + (t.xMm + d + g) * i, y: o + (t.yMm + d) * i, width: C * i, height: Math.max(0, t.heightMm - 2 * d) * i };
476
+ e.save(), e.beginPath(), e.rect(b.x, b.y, b.width, b.height), e.clip(), t.cell.richParagraphs?.length ? dt(e, { ...n, richParagraphs: t.cell.richParagraphs, style: { verticalAlign: "middle", ...h } }, b, l, s) : Ce(
469
477
  e,
470
478
  {
471
479
  text: S,
@@ -476,22 +484,24 @@ function on(e, t, n, r, i, o, l, s, a, c) {
476
484
  color: ye(h, Ge),
477
485
  align: h.align ?? "left",
478
486
  lineHeight: q(h),
479
- letterSpacingPx: U(h.letterSpacing ?? 0, l)
487
+ letterSpacingPx: V(h.letterSpacing ?? 0, l)
480
488
  },
481
- r + (t.xMm + d + g) * o,
482
- i + (t.yMm + d) * o,
483
- C * o,
484
- Math.max(0, t.heightMm - 2 * d) * o,
489
+ r + (t.xMm + d + g) * i,
490
+ o + (t.yMm + d) * i,
491
+ C * i,
492
+ Math.max(0, t.heightMm - 2 * d) * i,
485
493
  h.fontFamily ?? s,
486
494
  h.verticalAlign ?? "middle"
487
495
  );
488
- for (const v of t.cell.children ?? []) de(e, { ...v, leftMm: v.leftMm + w.x / o, topMm: v.topMm + w.y / o }, o, l, s, a, c);
496
+ for (const w of t.cell.children ?? []) de(e, { ...w, leftMm: w.leftMm + b.x / i, topMm: w.topMm + b.y / i }, i, l, s, a, c);
489
497
  e.restore();
498
+ const M = tt(t.cell.dataBar, t.widthMm, t.heightMm, d);
499
+ M && (e.save(), e.globalAlpha *= 0.35, e.fillStyle = M.color, e.fillRect(r + (t.xMm + M.x) * i, o + (t.yMm + M.y) * i, M.width * i, M.height * i), e.restore());
490
500
  }
491
- function an(e, t, n, r, i, o, l, s, a) {
501
+ function sn(e, t, n, r, o, i, l, s, a) {
492
502
  const c = t.style ?? {}, d = _(c, l);
493
503
  if (Ye(t)) {
494
- ct(e, t, { x: n, y: r, width: i, height: o }, l, s);
504
+ dt(e, t, { x: n, y: r, width: o, height: i }, l, s);
495
505
  return;
496
506
  }
497
507
  const m = t.lines?.length ? t.lines.join(`
@@ -506,40 +516,40 @@ function an(e, t, n, r, i, o, l, s, a) {
506
516
  color: ye(c),
507
517
  align: c.align ?? "left",
508
518
  lineHeight: q(c),
509
- letterSpacingPx: U(c.letterSpacing ?? 0, l)
510
- }, n, r, i, o, c.fontFamily ?? s, c.verticalAlign);
519
+ letterSpacingPx: V(c.letterSpacing ?? 0, l)
520
+ }, n, r, o, i, c.fontFamily ?? s, c.verticalAlign);
511
521
  }
512
- function de(e, t, n, r, i, o, l) {
522
+ function de(e, t, n, r, o, i, l) {
513
523
  const s = t.leftMm * n, a = t.topMm * n, c = t.widthMm * n, d = t.heightMm * n, m = t.style ?? {};
514
524
  if (ce(t)) {
515
525
  const h = l?.get(t.imageData);
516
- h ? Qt(e, h, s, a, c, d) : ze(e, t, s, a, c, d);
526
+ h ? en(e, h, s, a, c, d) : ze(e, t, s, a, c, d);
517
527
  return;
518
528
  }
519
529
  if (t.grid) {
520
- rn(e, t.grid, t, s, a, c, d, n, r, i, o, l);
530
+ on(e, t.grid, t, s, a, c, d, n, r, o, i, l);
521
531
  return;
522
532
  }
523
533
  switch (t.kind) {
524
534
  case "text": {
525
- an(e, t, s, a, c, d, r, i, o);
535
+ sn(e, t, s, a, c, d, r, o, i);
526
536
  break;
527
537
  }
528
538
  case "rect": {
529
539
  const h = Y(m), f = Je(m);
530
- m.backgroundColor && (e.fillStyle = m.backgroundColor, e.fillRect(s, a, c, d)), f.inner && (e.strokeStyle = h.color, e.lineWidth = U(h.widthPt, r), nn(e, f, s, a, c, d));
540
+ m.backgroundColor && (e.fillStyle = m.backgroundColor, e.fillRect(s, a, c, d)), f.inner && (e.strokeStyle = h.color, e.lineWidth = V(h.widthPt, r), rn(e, f, s, a, c, d));
531
541
  break;
532
542
  }
533
543
  case "line": {
534
544
  const h = Y({ ...m, borderColor: m.lineColor ?? m.borderColor });
535
- e.strokeStyle = h.color, e.lineWidth = U(h.widthPt, r), e.beginPath();
545
+ e.strokeStyle = h.color, e.lineWidth = V(h.widthPt, r), e.beginPath();
536
546
  const f = t.lineDirection === "up" ? a + d : t.lineDirection === "down" ? a : a + d / 2, g = t.lineDirection === "up" ? a : t.lineDirection === "down" ? a + d : a + d / 2;
537
547
  e.moveTo(s, f), e.lineTo(s + c, g), e.stroke();
538
548
  break;
539
549
  }
540
550
  case "ellipse": {
541
551
  const h = Y(m);
542
- e.strokeStyle = h.color, e.lineWidth = U(h.widthPt, r), m.backgroundColor && (e.fillStyle = m.backgroundColor, e.beginPath(), e.ellipse(s + c / 2, a + d / 2, c / 2, d / 2, 0, 0, Math.PI * 2), e.fill()), e.beginPath(), e.ellipse(s + c / 2, a + d / 2, c / 2, d / 2, 0, 0, Math.PI * 2), e.stroke();
552
+ e.strokeStyle = h.color, e.lineWidth = V(h.widthPt, r), m.backgroundColor && (e.fillStyle = m.backgroundColor, e.beginPath(), e.ellipse(s + c / 2, a + d / 2, c / 2, d / 2, 0, 0, Math.PI * 2), e.fill()), e.beginPath(), e.ellipse(s + c / 2, a + d / 2, c / 2, d / 2, 0, 0, Math.PI * 2), e.stroke();
543
553
  break;
544
554
  }
545
555
  default:
@@ -547,177 +557,177 @@ function de(e, t, n, r, i, o, l) {
547
557
  break;
548
558
  }
549
559
  }
550
- function ze(e, t, n, r, i, o) {
551
- e.save(), e.strokeStyle = "#94a3b8", e.strokeRect(n, r, i, o), e.fillStyle = "#64748b", e.font = "12px sans-serif", e.fillText(t.fallbackText ?? `[${t.kind}]`, n + 3, r + 14), e.restore();
560
+ function ze(e, t, n, r, o, i) {
561
+ e.save(), e.strokeStyle = "#94a3b8", e.strokeRect(n, r, o, i), e.fillStyle = "#64748b", e.font = "12px sans-serif", e.fillText(t.fallbackText ?? `[${t.kind}]`, n + 3, r + 14), e.restore();
552
562
  }
553
- async function yr(e, t = {}) {
563
+ async function vr(e, t = {}) {
554
564
  if (typeof document > "u")
555
565
  throw new Error("renderPlanToImages 需要浏览器环境(SSR/Node 请在客户端钩子中调用)");
556
- const { format: n = "png", quality: r = 0.92, ...i } = t;
566
+ const { format: n = "png", quality: r = 0.92, ...o } = t;
557
567
  if (n !== "png" && n !== "jpeg") throw new TypeError("Image format must be png or jpeg.");
558
568
  if (!Number.isFinite(r) || r < 0 || r > 1) throw new RangeError("Image quality must be between 0 and 1.");
559
- k(t.signal);
560
- const o = await Ee(e, { ...t, format: "canvas" });
561
- e = o.plan;
562
- const l = [...o.diagnostics, ...Z(e, "canvas", t)], s = n === "jpeg" ? "image/jpeg" : "image/png", a = [], c = Math.min(e.pages.length - 1, t.end ?? e.pages.length - 1);
569
+ A(t.signal);
570
+ const i = await Ee(e, { ...t, format: "canvas" });
571
+ e = i.plan;
572
+ const l = [...i.diagnostics, ...Z(e, "canvas", t)], s = n === "jpeg" ? "image/jpeg" : "image/png", a = [], c = Math.min(e.pages.length - 1, t.end ?? e.pages.length - 1);
563
573
  for (let d = Math.max(0, t.start ?? 0); d <= c; d++) {
564
- k(t.signal);
565
- const m = await ht(e.pages[d], d, i, l);
574
+ A(t.signal);
575
+ const m = await ft(e.pages[d], d, o, l);
566
576
  try {
567
- a.push(await sn(m, s, r, t.signal));
577
+ a.push(await ln(m, s, r, t.signal));
568
578
  } finally {
569
579
  m.width = 0, m.height = 0;
570
580
  }
571
581
  await At(t, a.length, c - Math.max(0, t.start ?? 0) + 1);
572
582
  }
573
- return k(t.signal), { blobs: a, diagnostics: l };
583
+ return A(t.signal), { blobs: a, diagnostics: l };
574
584
  }
575
- function sn(e, t, n, r) {
576
- return k(r), new Promise((i, o) => {
577
- const l = () => o(r?.reason ?? new DOMException("The operation was aborted.", "AbortError"));
585
+ function ln(e, t, n, r) {
586
+ return A(r), new Promise((o, i) => {
587
+ const l = () => i(r?.reason ?? new DOMException("The operation was aborted.", "AbortError"));
578
588
  r?.addEventListener("abort", l, { once: !0 });
579
589
  try {
580
590
  e.toBlob((s) => {
581
- r?.removeEventListener("abort", l), s ? i(s) : o(new Error("Canvas encoding failed; no empty image was emitted."));
591
+ r?.removeEventListener("abort", l), s ? o(s) : i(new Error("Canvas encoding failed; no empty image was emitted."));
582
592
  }, t, n);
583
593
  } catch (s) {
584
- r?.removeEventListener("abort", l), o(s);
594
+ r?.removeEventListener("abort", l), i(s);
585
595
  }
586
596
  });
587
597
  }
588
- function Mr(e, t = {}) {
589
- if (k(t.signal), typeof document > "u")
598
+ function xr(e, t = {}) {
599
+ if (A(t.signal), typeof document > "u")
590
600
  throw new Error("renderPlanToCanvas 需要浏览器环境(SSR 请在客户端钩子中调用)");
591
- const n = t.dpr ?? (typeof devicePixelRatio == "number" ? devicePixelRatio : 1), r = t.dpi ?? 96, i = r / 96 * Re, o = t.fontFamily ?? le, l = t.measurer ?? Me, s = Math.max(0, t.start ?? 0), a = Math.min(e.pages.length - 1, t.end ?? e.pages.length - 1), c = [], d = Z(e, "canvas", t), m = ln(e, s, a);
601
+ const n = t.dpr ?? (typeof devicePixelRatio == "number" ? devicePixelRatio : 1), r = t.dpi ?? 96, o = r / 96 * Re, i = t.fontFamily ?? le, l = t.measurer ?? Me, s = Math.max(0, t.start ?? 0), a = Math.min(e.pages.length - 1, t.end ?? e.pages.length - 1), c = [], d = Z(e, "canvas", t), m = cn(e, s, a);
592
602
  for (const h of m)
593
- tt(h, t), d.push(h);
594
- if (t.fidelity === "strict" && m.length) throw new Pt(d);
603
+ nt(h, t), d.push(h);
604
+ if (t.fidelity === "strict" && m.length) throw new kt(d);
595
605
  for (let h = s; h <= a; h++) {
596
- k(t.signal);
597
- const f = e.pages[h], { canvas: g, ctx: C } = mt(f, n, r, t.maxCanvasPixels);
606
+ A(t.signal);
607
+ const f = e.pages[h], { canvas: g, ctx: C } = ht(f, n, r, t.maxCanvasPixels);
598
608
  for (const S of f.components)
599
- de(C, S, i, r, o, l);
609
+ de(C, S, o, r, i, l);
600
610
  c.push(g);
601
611
  }
602
612
  return { canvases: c, diagnostics: d };
603
613
  }
604
- function ln(e, t, n) {
605
- return n < t ? [] : e.pages.slice(t, n + 1).flatMap((r, i) => [...Te(r)].map(({ component: o, componentIndex: l, componentPath: s }) => ({
614
+ function cn(e, t, n) {
615
+ return n < t ? [] : e.pages.slice(t, n + 1).flatMap((r, o) => [...Te(r)].map(({ component: i, componentIndex: l, componentPath: s }) => ({
606
616
  code: "async-image-required",
607
617
  severity: "warning",
608
618
  format: "canvas",
609
- pageIndex: t + i,
619
+ pageIndex: t + o,
610
620
  componentIndex: l,
611
621
  componentPath: s,
612
- kind: o.kind,
613
- nid: o.nid,
622
+ kind: i.kind,
623
+ nid: i.nid,
614
624
  message: "Use renderPlanToCanvasAsync or renderPlanToImages to decode and include images."
615
625
  })));
616
626
  }
617
- async function vr(e, t = {}) {
627
+ async function Sr(e, t = {}) {
618
628
  if (typeof document > "u") throw new Error("renderPlanToCanvasAsync 需要浏览器环境(Node 请使用 PDF 或 XLSX 输出)");
619
- k(t.signal);
629
+ A(t.signal);
620
630
  const n = await Ee(e, { ...t, format: "canvas" });
621
631
  e = n.plan;
622
- const r = [...n.diagnostics, ...Z(e, "canvas", t)], i = [], o = Math.min(e.pages.length - 1, t.end ?? e.pages.length - 1);
623
- for (let l = Math.max(0, t.start ?? 0); l <= o; l++)
624
- i.push(await ht(e.pages[l], l, t, r));
625
- return { canvases: i, diagnostics: r };
626
- }
627
- async function ht(e, t, n, r) {
628
- const i = n.dpr ?? (typeof devicePixelRatio == "number" ? devicePixelRatio : 1), o = n.dpi ?? 96, l = n.fontFamily ?? le, s = await ft(e, t, n, r);
629
- k(n.signal);
630
- const { canvas: a, ctx: c } = mt(e, i, o, n.maxCanvasPixels);
631
- for (const d of e.components) de(c, d, o / 25.4, o, l, n.measurer ?? Me, s);
632
- return a;
632
+ const r = [...n.diagnostics, ...Z(e, "canvas", t)], o = [], i = Math.min(e.pages.length - 1, t.end ?? e.pages.length - 1);
633
+ for (let l = Math.max(0, t.start ?? 0); l <= i; l++)
634
+ o.push(await ft(e.pages[l], l, t, r));
635
+ return { canvases: o, diagnostics: r };
633
636
  }
634
637
  async function ft(e, t, n, r) {
635
- const i = n.imageLoader ?? Yt;
636
- return Zt(e, async (o, l) => {
638
+ const o = n.dpr ?? (typeof devicePixelRatio == "number" ? devicePixelRatio : 1), i = n.dpi ?? 96, l = n.fontFamily ?? le, s = await gt(e, t, n, r);
639
+ A(n.signal);
640
+ const { canvas: a, ctx: c } = ht(e, o, i, n.maxCanvasPixels);
641
+ for (const d of e.components) de(c, d, i / 25.4, i, l, n.measurer ?? Me, s);
642
+ return a;
643
+ }
644
+ async function gt(e, t, n, r) {
645
+ const o = n.imageLoader ?? Xt;
646
+ return Qt(e, async (i, l) => {
637
647
  try {
638
- return await i(o, l);
648
+ return await o(i, l);
639
649
  } catch (s) {
640
650
  if (l?.aborted) throw s;
641
- const a = [...Te(e)].find(({ component: f }) => f.imageData === o), { component: c, componentIndex: d, componentPath: m } = a, h = { code: "image-decode-failed", severity: "warning", format: "canvas", pageIndex: t, componentIndex: d, componentPath: m, kind: c.kind, nid: c.nid, message: "Image decoding failed; raster output was cancelled instead of omitting the image." };
642
- throw r.push(h), tt(h, n), s;
651
+ const a = [...Te(e)].find(({ component: f }) => f.imageData === i), { component: c, componentIndex: d, componentPath: m } = a, h = { code: "image-decode-failed", severity: "warning", format: "canvas", pageIndex: t, componentIndex: d, componentPath: m, kind: c.kind, nid: c.nid, message: "Image decoding failed; raster output was cancelled instead of omitting the image." };
652
+ throw r.push(h), nt(h, n), s;
643
653
  }
644
654
  }, n.signal);
645
655
  }
646
- function xr(e, t = {}) {
647
- const n = t.dpr ?? (typeof devicePixelRatio == "number" ? devicePixelRatio : 1), r = t.dpi ?? 96, i = r / 96 * Re, o = t.fontFamily ?? le, l = t.measurer ?? Me, s = t.overscan ?? 1, a = t.gapPx ?? 18, c = t.pagesPerFrame ?? 1, d = e.pages.map((p) => p.pageHeightMm * i), m = Math.max(1, ...e.pages.map((p) => p.pageWidthMm * i)), h = { start: 0, end: -1 };
648
- let f = null, g = null, C = null, S = null, w = [], v = 0, y = [], N = 0, L = new AbortController();
649
- const Oe = [];
650
- function yt() {
656
+ function Er(e, t = {}) {
657
+ const n = t.dpr ?? (typeof devicePixelRatio == "number" ? devicePixelRatio : 1), r = t.dpi ?? 96, o = r / 96 * Re, i = t.fontFamily ?? le, l = t.measurer ?? Me, s = t.overscan ?? 1, a = t.gapPx ?? 18, c = t.pagesPerFrame ?? 1, d = e.pages.map((p) => p.pageHeightMm * o), m = Math.max(1, ...e.pages.map((p) => p.pageWidthMm * o)), h = { start: 0, end: -1 };
658
+ let f = null, g = null, C = null, S = null, b = [], M = 0, w = [], N = 0, D = new AbortController();
659
+ const Ie = [];
660
+ function Mt() {
651
661
  const p = f;
652
- p.innerHTML = "", g = document.createElement("div"), g.style.cssText = `width:${m}px;margin:0 auto;`, C = document.createElement("div"), S = document.createElement("div"), g.appendChild(C), w = [];
662
+ p.innerHTML = "", g = document.createElement("div"), g.style.cssText = `width:${m}px;margin:0 auto;`, C = document.createElement("div"), S = document.createElement("div"), g.appendChild(C), b = [];
653
663
  const R = Math.min(e.pages.length, 3 + s * 2);
654
664
  for (let z = 0; z < R; z++) {
655
665
  const E = document.createElement("div");
656
- E.style.cssText = `margin:0 auto ${a}px;box-shadow:0 2px 8px rgba(0,0,0,.35);background:#fff;`, g.appendChild(E), w.push(E);
666
+ E.style.cssText = `margin:0 auto ${a}px;box-shadow:0 2px 8px rgba(0,0,0,.35);background:#fff;`, g.appendChild(E), b.push(E);
657
667
  }
658
668
  g.appendChild(S), p.appendChild(g);
659
669
  }
660
- async function Mt(p, R) {
661
- const z = N, E = await Ee(e, { ...t, signal: L.signal, format: "canvas", start: R, end: R });
662
- Oe.push(...E.diagnostics);
663
- const P = E.plan.pages[R], ne = await ft(P, R, { ...t, signal: L.signal }, Oe);
670
+ async function vt(p, R) {
671
+ const z = N, E = await Ee(e, { ...t, signal: D.signal, format: "canvas", start: R, end: R });
672
+ Ie.push(...E.diagnostics);
673
+ const $ = E.plan.pages[R], ne = await gt($, R, { ...t, signal: D.signal }, Ie);
664
674
  if (z !== N || !f) return;
665
- const { widthPx: fe, heightPx: ge } = $e(P, r);
666
- let D = p.firstElementChild;
667
- (!D || D.tagName !== "CANVAS") && (D = document.createElement("canvas"), p.innerHTML = "", p.appendChild(D));
668
- const Ne = dt(P, n, r, t.maxCanvasPixels);
669
- D.width = Ne.width, D.height = Ne.height, D.style.width = `${fe}px`, D.style.height = `${ge}px`;
670
- const W = D.getContext("2d");
675
+ const { widthPx: fe, heightPx: ge } = Pe($, r);
676
+ let L = p.firstElementChild;
677
+ (!L || L.tagName !== "CANVAS") && (L = document.createElement("canvas"), p.innerHTML = "", p.appendChild(L));
678
+ const Ne = mt($, n, r, t.maxCanvasPixels);
679
+ L.width = Ne.width, L.height = Ne.height, L.style.width = `${fe}px`, L.style.height = `${ge}px`;
680
+ const W = L.getContext("2d");
671
681
  if (W) {
672
682
  W.setTransform(1, 0, 0, 1, 0, 0), W.scale(n, n), W.fillStyle = "#ffffff", W.fillRect(0, 0, fe, ge);
673
- for (const xt of P.components)
674
- de(W, xt, i, r, o, l, ne);
675
- D.dataset.canvasPage = String(R), p.style.height = `${ge}px`, p.style.width = `${fe}px`;
683
+ for (const St of $.components)
684
+ de(W, St, o, r, i, l, ne);
685
+ L.dataset.canvasPage = String(R), p.style.height = `${ge}px`, p.style.width = `${fe}px`;
676
686
  }
677
687
  }
678
- function vt(p) {
679
- N++, h.start = p.start, h.end = p.end, C.style.height = `${p.start * a + d.slice(0, p.start).reduce((E, P) => E + P, 0)}px`;
688
+ function xt(p) {
689
+ N++, h.start = p.start, h.end = p.end, C.style.height = `${p.start * a + d.slice(0, p.start).reduce((E, $) => E + $, 0)}px`;
680
690
  const R = e.pages.length - 1 - p.end;
681
- S.style.height = `${R * a + d.slice(p.end + 1).reduce((E, P) => E + P, 0)}px`;
691
+ S.style.height = `${R * a + d.slice(p.end + 1).reduce((E, $) => E + $, 0)}px`;
682
692
  const z = p.end - p.start + 1;
683
- w.forEach((E, P) => {
684
- if (P < z) {
693
+ b.forEach((E, $) => {
694
+ if ($ < z) {
685
695
  E.style.display = "";
686
- const ne = p.start + P;
696
+ const ne = p.start + $;
687
697
  E.style.height = `${d[ne] ?? 0}px`;
688
698
  } else
689
699
  E.style.display = "none";
690
- }), y = [];
700
+ }), w = [];
691
701
  for (let E = p.start; E <= p.end; E++) {
692
- const P = w[E - p.start];
693
- if (!P) continue;
694
- P.firstElementChild?.dataset?.canvasPage !== String(E) && y.push(E);
702
+ const $ = b[E - p.start];
703
+ if (!$) continue;
704
+ $.firstElementChild?.dataset?.canvasPage !== String(E) && w.push(E);
695
705
  }
696
706
  he();
697
707
  }
698
708
  function he() {
699
- v || y.length === 0 || (v = requestAnimationFrame(() => {
700
- v = 0;
709
+ M || w.length === 0 || (M = requestAnimationFrame(() => {
710
+ M = 0;
701
711
  let p = Math.max(1, c);
702
- for (; y.length > 0 && p-- > 0; ) {
703
- const R = y.shift(), z = w[R - h.start];
704
- z && Mt(z, R).catch(() => {
712
+ for (; w.length > 0 && p-- > 0; ) {
713
+ const R = w.shift(), z = b[R - h.start];
714
+ z && vt(z, R).catch(() => {
705
715
  });
706
716
  }
707
- y.length > 0 && he();
717
+ w.length > 0 && he();
708
718
  }));
709
719
  }
710
720
  function ee() {
711
- v || (v = requestAnimationFrame(() => {
712
- v = 0;
713
- const p = f, R = en({
721
+ M || (M = requestAnimationFrame(() => {
722
+ M = 0;
723
+ const p = f, R = tn({
714
724
  pageHeightsPx: d,
715
725
  viewportHeightPx: p.clientHeight,
716
726
  scrollTopPx: p.scrollTop,
717
727
  overscan: s,
718
728
  gapPx: a
719
729
  });
720
- R.start !== h.start || R.end !== h.end ? vt(R) : he();
730
+ R.start !== h.start || R.end !== h.end ? xt(R) : he();
721
731
  }));
722
732
  }
723
733
  let te = null;
@@ -725,29 +735,29 @@ function xr(e, t = {}) {
725
735
  attach(p) {
726
736
  if (typeof document > "u")
727
737
  throw new Error("createCanvasPager 需要浏览器环境(SSR 请在客户端钩子中调用 attach)");
728
- k(t.signal), L = new AbortController(), t.signal?.addEventListener("abort", Ie, { once: !0 }), Z(e, "canvas", t), f = p, yt(), p.addEventListener("scroll", ee, { passive: !0 }), typeof ResizeObserver < "u" && (te = new ResizeObserver(() => ee()), te.observe(p)), ee();
738
+ A(t.signal), D = new AbortController(), t.signal?.addEventListener("abort", Oe, { once: !0 }), Z(e, "canvas", t), f = p, Mt(), p.addEventListener("scroll", ee, { passive: !0 }), typeof ResizeObserver < "u" && (te = new ResizeObserver(() => ee()), te.observe(p)), ee();
729
739
  },
730
740
  destroy() {
731
- N++, L.abort(), t.signal?.removeEventListener("abort", Ie), v && cancelAnimationFrame(v), v = 0, te?.disconnect(), te = null, f?.removeEventListener("scroll", ee), y = [], g?.remove(), f = null;
741
+ N++, D.abort(), t.signal?.removeEventListener("abort", Oe), M && cancelAnimationFrame(M), M = 0, te?.disconnect(), te = null, f?.removeEventListener("scroll", ee), w = [], g?.remove(), f = null;
732
742
  },
733
743
  window() {
734
744
  return { ...h };
735
745
  }
736
746
  };
737
- function Ie() {
738
- L.abort(t.signal?.reason);
747
+ function Oe() {
748
+ D.abort(t.signal?.reason);
739
749
  }
740
750
  }
741
- function gt(e, t, n) {
742
- let r, i;
751
+ function ut(e, t, n) {
752
+ let r, o;
743
753
  if (typeof e == "string") {
744
- const o = oe[e];
745
- if (!o) throw new Error(`未知纸张预设 "${e}"(可用:${Object.keys(oe).join("/")})`);
746
- r = o.widthMm, i = o.heightMm;
747
- } else typeof e == "number" ? (r = e, i = t ?? 297) : (r = e.widthMm, i = e.heightMm);
748
- return n ? { widthMm: i, heightMm: r } : { widthMm: r, heightMm: i };
754
+ const i = ie[e];
755
+ if (!i) throw new Error(`未知纸张预设 "${e}"(可用:${Object.keys(ie).join("/")})`);
756
+ r = i.widthMm, o = i.heightMm;
757
+ } else typeof e == "number" ? (r = e, o = t ?? 297) : (r = e.widthMm, o = e.heightMm);
758
+ return n ? { widthMm: o, heightMm: r } : { widthMm: r, heightMm: o };
749
759
  }
750
- class cn {
760
+ class dn {
751
761
  constructor() {
752
762
  this.pages = [], this.pending = null, this.templateParams = void 0;
753
763
  }
@@ -780,12 +790,12 @@ class cn {
780
790
  */
781
791
  page(t = "a4", n = {}, r) {
782
792
  this.collect();
783
- const o = r != null && !("margins" in r) && !("landscape" in r) && ("marginTopMm" in r || "marginBottomMm" in r || "marginLeftMm" in r || "marginRightMm" in r) ? { margins: r } : typeof n == "number" ? r ?? {} : n, { widthMm: l, heightMm: s } = gt(
793
+ const i = r != null && !("margins" in r) && !("landscape" in r) && ("marginTopMm" in r || "marginBottomMm" in r || "marginLeftMm" in r || "marginRightMm" in r) ? { margins: r } : typeof n == "number" ? r ?? {} : n, { widthMm: l, heightMm: s } = ut(
784
794
  t,
785
795
  typeof n == "number" ? n : void 0,
786
- o.landscape
787
- ), a = o.margins ?? {};
788
- return this.pending = new dn(this, {
796
+ i.landscape
797
+ ), a = i.margins ?? {};
798
+ return this.pending = new mn(this, {
789
799
  widthMm: l,
790
800
  heightMm: s,
791
801
  marginTopMm: a.marginTopMm ?? 10,
@@ -807,7 +817,7 @@ class cn {
807
817
  };
808
818
  }
809
819
  }
810
- class dn {
820
+ class mn {
811
821
  constructor(t, n) {
812
822
  this.parent = t, this.page = n, this.components = [];
813
823
  }
@@ -822,7 +832,7 @@ class dn {
822
832
  style: r
823
833
  }), this;
824
834
  }
825
- list(t, n, r, i = {}) {
835
+ list(t, n, r, o = {}) {
826
836
  return this.components.push({
827
837
  kind: "list",
828
838
  leftMm: n.leftMm ?? 10,
@@ -830,20 +840,20 @@ class dn {
830
840
  widthMm: n.widthMm ?? 180,
831
841
  dataset: t,
832
842
  columns: r,
833
- ...i
843
+ ...o
834
844
  }), this;
835
845
  }
836
846
  rect(t, n = {}) {
837
847
  return this.components.push({ kind: "rect", ...t, style: n }), this;
838
848
  }
839
- line(t, n, r, i = {}) {
849
+ line(t, n, r, o = {}) {
840
850
  return this.components.push({
841
851
  kind: "line",
842
852
  leftMm: t,
843
853
  topMm: n,
844
854
  widthMm: r,
845
855
  heightMm: 0.5,
846
- style: i
856
+ style: o
847
857
  }), this;
848
858
  }
849
859
  barcode(t, n) {
@@ -856,11 +866,11 @@ class dn {
856
866
  fallbackText: t
857
867
  }), this;
858
868
  }
859
- qrcode(t, n, r, i) {
869
+ qrcode(t, n, r, o) {
860
870
  return this.components.push({
861
871
  kind: "qrcode",
862
872
  leftMm: r,
863
- topMm: i,
873
+ topMm: o,
864
874
  widthMm: n,
865
875
  heightMm: n,
866
876
  fallbackText: t
@@ -876,11 +886,11 @@ class dn {
876
886
  return this.done().build();
877
887
  }
878
888
  }
879
- function Sr() {
880
- return new cn();
889
+ function Cr() {
890
+ return new dn();
881
891
  }
882
- function Er(e, t = {}) {
883
- return Et([], e), e.fields.map((n) => ({
892
+ function Tr(e, t = {}) {
893
+ return Ct([], e), e.fields.map((n) => ({
884
894
  field: n.field,
885
895
  header: `${n.label ?? n.field}${n.unit ? ` (${n.unit})` : ""}`,
886
896
  semanticRole: n.semanticRole ?? (n.type === "number" || n.type === "decimal" ? "measure" : n.type === "date" ? "date" : n.enum ? "dimension" : "text"),
@@ -888,7 +898,7 @@ function Er(e, t = {}) {
888
898
  ...t[n.field]
889
899
  }));
890
900
  }
891
- function O(e, t, n = !1) {
901
+ function I(e, t, n = !1) {
892
902
  if (!Number.isFinite(e) || (n ? e < 0 : e <= 0))
893
903
  throw new Error(`${t} 必须是有限${n ? "非负" : "正"}数`);
894
904
  }
@@ -896,7 +906,7 @@ function ae(e, t, n) {
896
906
  if (e !== void 0 && !["left", "center", "right", "justify", ...n ? ["auto"] : []].includes(e))
897
907
  throw new Error(`${t} 必须是 left/center/right/justify${n ? "/auto" : ""}`);
898
908
  }
899
- function mn(e) {
909
+ function hn(e) {
900
910
  const t = e.layout ?? "page";
901
911
  if (t !== "page" && t !== "wide")
902
912
  throw new Error("layout 必须是 page 或 wide");
@@ -905,18 +915,18 @@ function mn(e) {
905
915
  if (t !== "wide" && e.columnWidthMm !== void 0)
906
916
  throw new Error('columnWidthMm 仅适用于 layout: "wide"');
907
917
  const n = e.columnWidthMm ?? 30;
908
- return O(n, "columnWidthMm"), { layout: t, columnWidthMm: n };
918
+ return I(n, "columnWidthMm"), { layout: t, columnWidthMm: n };
909
919
  }
910
- function hn(e) {
920
+ function fn(e) {
911
921
  const t = e.paper === void 0 ? "a4" : e.paper;
912
922
  if (typeof t != "string" && (typeof t != "object" || t === null) || e.landscape !== void 0 && typeof e.landscape != "boolean")
913
923
  throw new Error("paper 必须是纸张预设名或 { widthMm, heightMm } 对象,landscape 必须是布尔值");
914
- if (typeof t == "string" && !Object.prototype.hasOwnProperty.call(oe, t))
915
- throw new Error(`未知纸张预设 "${t}"(可用:${Object.keys(oe).join("/")})`);
916
- const n = gt(t, void 0, e.landscape), r = n.widthMm, i = n.heightMm;
917
- return O(r, "纸张 widthMm"), O(i, "纸张 heightMm"), { widthMm: r, heightMm: i };
924
+ if (typeof t == "string" && !Object.prototype.hasOwnProperty.call(ie, t))
925
+ throw new Error(`未知纸张预设 "${t}"(可用:${Object.keys(ie).join("/")})`);
926
+ const n = ut(t, void 0, e.landscape), r = n.widthMm, o = n.heightMm;
927
+ return I(r, "纸张 widthMm"), I(o, "纸张 heightMm"), { widthMm: r, heightMm: o };
918
928
  }
919
- function fn(e) {
929
+ function gn(e) {
920
930
  if (e.margins !== void 0 && (!e.margins || typeof e.margins != "object" || Array.isArray(e.margins)))
921
931
  throw new Error("margins 必须是页边距对象");
922
932
  const t = e.margins ?? {}, n = {
@@ -925,71 +935,71 @@ function fn(e) {
925
935
  marginLeftMm: t.marginLeftMm === void 0 ? 10 : t.marginLeftMm,
926
936
  marginRightMm: t.marginRightMm === void 0 ? 10 : t.marginRightMm
927
937
  };
928
- for (const [r, i] of Object.entries(n)) O(i, r, !0);
938
+ for (const [r, o] of Object.entries(n)) I(o, r, !0);
929
939
  return n;
930
940
  }
931
- function gn(e, t) {
941
+ function un(e, t) {
932
942
  const n = e.dataset === void 0 ? "detail" : e.dataset;
933
943
  if (typeof n != "string" || !n.trim())
934
944
  throw new Error("dataset 必须是非空字符串");
935
945
  if (e.title !== void 0 && typeof e.title != "string")
936
946
  throw new Error("title 必须是字符串");
937
- const r = e.titleHeightMm === void 0 ? 10 : e.titleHeightMm, i = e.titleGapMm === void 0 ? 4 : e.titleGapMm;
938
- O(r, "titleHeightMm"), O(i, "titleGapMm", !0);
939
- const o = e.title !== void 0 && e.title.length > 0, l = o ? r + i : 0;
947
+ const r = e.titleHeightMm === void 0 ? 10 : e.titleHeightMm, o = e.titleGapMm === void 0 ? 4 : e.titleGapMm;
948
+ I(r, "titleHeightMm"), I(o, "titleGapMm", !0);
949
+ const i = e.title !== void 0 && e.title.length > 0, l = i ? r + o : 0;
940
950
  if (l >= t)
941
951
  throw new Error("标题高度与间距占满页面,必须为表格保留可用高度");
942
- return { dataset: n, titleHeightMm: r, hasTitle: o, titleSpaceMm: l };
952
+ return { dataset: n, titleHeightMm: r, hasTitle: i, titleSpaceMm: l };
943
953
  }
944
- function un(e) {
954
+ function pn(e) {
945
955
  if (e.listOptions !== void 0 && (!e.listOptions || typeof e.listOptions != "object" || Array.isArray(e.listOptions)))
946
956
  throw new Error("listOptions 必须是列表配置对象");
947
957
  const t = e.listOptions ?? {};
948
958
  ae(t.align, "listOptions.align", !0), ae(t.headerAlign, "listOptions.headerAlign", !1);
949
959
  for (const n of ["fontSizePt", "rowHeightMm", "paddingMm"]) {
950
960
  const r = t[n];
951
- r !== void 0 && O(r, `listOptions.${n}`, n === "paddingMm");
961
+ r !== void 0 && I(r, `listOptions.${n}`, n === "paddingMm");
952
962
  }
953
963
  return t;
954
964
  }
955
- function pn(e) {
965
+ function wn(e) {
956
966
  let t = 0, n = 0;
957
- for (const [r, i] of e.entries()) {
958
- if (!i || typeof i.header != "string" || typeof i.field != "string" || !i.field.trim())
967
+ for (const [r, o] of e.entries()) {
968
+ if (!o || typeof o.header != "string" || typeof o.field != "string" || !o.field.trim())
959
969
  throw new Error(`columns[${r}] 需要字符串 header 与非空 field`);
960
- ae(i.align, `columns[${r}].align`, !0), ae(i.headerAlign, `columns[${r}].headerAlign`, !1), i.flex !== void 0 && O(i.flex, `columns[${r}].flex`), i.widthMm !== void 0 ? (O(i.widthMm, `columns[${r}].widthMm`), t += i.widthMm) : n = Math.max(n, i.flex ?? 1);
970
+ ae(o.align, `columns[${r}].align`, !0), ae(o.headerAlign, `columns[${r}].headerAlign`, !1), o.flex !== void 0 && I(o.flex, `columns[${r}].flex`), o.widthMm !== void 0 ? (I(o.widthMm, `columns[${r}].widthMm`), t += o.widthMm) : n = Math.max(n, o.flex ?? 1);
961
971
  }
962
972
  return { fixedWidthMm: t, maxFlex: n };
963
973
  }
964
- function wn(e, t, n, r) {
965
- const { fixedWidthMm: i, maxFlex: o } = pn(e.columns);
966
- if (t === "page" && i > r)
967
- throw new Error(`固定列宽 ${i}mm 超出页面可用宽度 ${r}mm`);
968
- const l = r - i;
969
- if (t === "page" && o > 0 && l <= 0)
974
+ function bn(e, t, n, r) {
975
+ const { fixedWidthMm: o, maxFlex: i } = wn(e.columns);
976
+ if (t === "page" && o > r)
977
+ throw new Error(`固定列宽 ${o}mm 超出页面可用宽度 ${r}mm`);
978
+ const l = r - o;
979
+ if (t === "page" && i > 0 && l <= 0)
970
980
  throw new Error("固定列占满页面可用宽度,自动列需要正的剩余宽度");
971
- const s = o > 0 ? e.columns.reduce((c, d) => c + (d.widthMm === void 0 ? (d.flex ?? 1) / o : 0), 0) : 0;
981
+ const s = i > 0 ? e.columns.reduce((c, d) => c + (d.widthMm === void 0 ? (d.flex ?? 1) / i : 0), 0) : 0;
972
982
  return { columns: e.columns.map(({ widthMm: c, flex: d, ...m }, h) => {
973
- const f = c ?? (t === "wide" ? n * (d ?? 1) : l * ((d ?? 1) / o) / s);
974
- return O(f, `columns[${h}] 分配后的 widthMm`), { ...m, widthMm: f };
975
- }), fixedWidthMm: i, maxFlex: o };
983
+ const f = c ?? (t === "wide" ? n * (d ?? 1) : l * ((d ?? 1) / i) / s);
984
+ return I(f, `columns[${h}] 分配后的 widthMm`), { ...m, widthMm: f };
985
+ }), fixedWidthMm: o, maxFlex: i };
976
986
  }
977
- function Cr(e) {
987
+ function Rr(e) {
978
988
  if (!e || typeof e != "object")
979
989
  throw new Error("标准明细模板需要 options 对象");
980
990
  if (!Array.isArray(e.columns) || e.columns.length === 0)
981
991
  throw new Error("columns 至少需要一列");
982
- const { layout: t, columnWidthMm: n } = mn(e), r = hn(e);
983
- let i = r.widthMm;
984
- const o = r.heightMm, l = fn(e);
985
- let s = i - l.marginLeftMm - l.marginRightMm;
986
- const a = o - l.marginTopMm - l.marginBottomMm;
992
+ const { layout: t, columnWidthMm: n } = hn(e), r = fn(e);
993
+ let o = r.widthMm;
994
+ const i = r.heightMm, l = gn(e);
995
+ let s = o - l.marginLeftMm - l.marginRightMm;
996
+ const a = i - l.marginTopMm - l.marginBottomMm;
987
997
  if (t === "page" && s <= 0 || a <= 0)
988
998
  throw new Error("页边距占满纸张,必须保留正的可用宽度和高度");
989
- const { dataset: c, titleHeightMm: d, hasTitle: m, titleSpaceMm: h } = gn(e, a), f = un(e), { columns: g, fixedWidthMm: C, maxFlex: S } = wn(e, t, n, s);
990
- t === "wide" && (s = g.reduce((v, y) => v + y.widthMm, 0), O(s, "宽表总列宽"), i = s + l.marginLeftMm + l.marginRightMm, O(i, "宽表总宽度"));
991
- const w = { widthMm: i, heightMm: o, ...l, components: [], ...t === "wide" ? { layout: t } : {} };
992
- return m && w.components.push({
999
+ const { dataset: c, titleHeightMm: d, hasTitle: m, titleSpaceMm: h } = un(e, a), f = pn(e), { columns: g, fixedWidthMm: C, maxFlex: S } = bn(e, t, n, s);
1000
+ t === "wide" && (s = g.reduce((M, w) => M + w.widthMm, 0), I(s, "宽表总列宽"), o = s + l.marginLeftMm + l.marginRightMm, I(o, "宽表总宽度"));
1001
+ const b = { widthMm: o, heightMm: i, ...l, components: [], ...t === "wide" ? { layout: t } : {} };
1002
+ return m && b.components.push({
993
1003
  kind: "text",
994
1004
  text: e.title,
995
1005
  leftMm: l.marginLeftMm,
@@ -997,7 +1007,7 @@ function Cr(e) {
997
1007
  widthMm: s,
998
1008
  heightMm: d,
999
1009
  style: { fontSize: 16, bold: !0, align: "center", verticalAlign: "middle", ...e.titleStyle }
1000
- }), w.components.push({
1010
+ }), b.components.push({
1001
1011
  align: "auto",
1002
1012
  headerAlign: "center",
1003
1013
  ...f,
@@ -1009,14 +1019,14 @@ function Cr(e) {
1009
1019
  leftMm: l.marginLeftMm,
1010
1020
  topMm: l.marginTopMm + h,
1011
1021
  widthMm: t === "wide" || S > 0 ? s : C
1012
- }), e.params === void 0 ? { pages: [w] } : { params: e.params, pages: [w] };
1022
+ }), e.params === void 0 ? { pages: [b] } : { params: e.params, pages: [b] };
1013
1023
  }
1014
- function Tr(e) {
1024
+ function Pr(e) {
1015
1025
  if (e.components !== void 0 && e.pages !== void 0) throw new TypeError("标签 components 与 pages 只能选择一种");
1016
- const { dataset: t, rowKey: n, copies: r, params: i } = e, o = e.pages ?? [{ components: e.components ?? [] }], l = {
1026
+ const { dataset: t, rowKey: n, copies: r, params: o } = e, i = e.pages ?? [{ components: e.components ?? [] }], l = {
1017
1027
  repeat: { dataset: t, ...n === void 0 ? {} : { rowKey: n }, ...r === void 0 ? {} : { copies: r } },
1018
- ...i === void 0 ? {} : { params: i },
1019
- pages: o.map((a) => ({
1028
+ ...o === void 0 ? {} : { params: o },
1029
+ pages: i.map((a) => ({
1020
1030
  widthMm: a.widthMm ?? e.widthMm ?? 80,
1021
1031
  heightMm: a.heightMm ?? e.heightMm ?? 55,
1022
1032
  marginTopMm: 0,
@@ -1030,7 +1040,7 @@ function Tr(e) {
1030
1040
  if (!s.ok) throw new Ze(s.errors);
1031
1041
  return JSON.parse(JSON.stringify(l));
1032
1042
  }
1033
- function bn(e) {
1043
+ function yn(e) {
1034
1044
  if (!e || typeof e != "object" || !e.repeat)
1035
1045
  throw new ve("config", "defineLabelReport 需要带 repeat 的固定标签模板");
1036
1046
  const t = Xe(e);
@@ -1041,17 +1051,17 @@ function He(e, t) {
1041
1051
  if (!Array.isArray(e)) throw new ve("validate", "标签数据应为对象数组;请从业务响应中提取行数组");
1042
1052
  return { [t]: e };
1043
1053
  }
1044
- function Rr(e) {
1045
- const { template: t, rows: n, load: r, dataSchema: i, params: o, pagination: l, dataValidation: s } = e, a = bn(t);
1054
+ function $r(e) {
1055
+ const { template: t, rows: n, load: r, dataSchema: o, params: i, pagination: l, dataValidation: s } = e, a = yn(t);
1046
1056
  if (n !== void 0 == (r !== void 0) || r !== void 0 && typeof r != "function")
1047
1057
  throw new ve("config", "标签报表应且只能配置 rows 或 load 其中一种数据来源");
1048
- const c = { template: t, params: o, pagination: l, dataValidation: s, ...i === void 0 ? {} : { dataSchema: { [a]: i } } };
1049
- return r ? Ct({ ...c, load: r, mapData: (d) => He(d, a) }) : { ...c, datasets: He(n, a) };
1058
+ const c = { template: t, params: i, pagination: l, dataValidation: s, ...o === void 0 ? {} : { dataSchema: { [a]: o } } };
1059
+ return r ? Tt({ ...c, load: r, mapData: (d) => He(d, a) }) : { ...c, datasets: He(n, a) };
1050
1060
  }
1051
- function $r(e) {
1061
+ function kr(e) {
1052
1062
  return e;
1053
1063
  }
1054
- class F extends Error {
1064
+ class j extends Error {
1055
1065
  constructor(t, n) {
1056
1066
  super(n), this.code = t, this.name = "ReportTemplateMigrationError";
1057
1067
  }
@@ -1059,56 +1069,56 @@ class F extends Error {
1059
1069
  function Be(e) {
1060
1070
  let t = e;
1061
1071
  if (typeof t == "string") {
1062
- if (t.length > 1e7) throw new F("result", "模板迁移输入超过预算");
1072
+ if (t.length > 1e7) throw new j("result", "模板迁移输入超过预算");
1063
1073
  try {
1064
1074
  t = JSON.parse(t);
1065
1075
  } catch {
1066
- throw new F("result", "模板 JSON 语法无效");
1076
+ throw new j("result", "模板 JSON 语法无效");
1067
1077
  }
1068
1078
  }
1069
- const n = et(t, { maxBytes: 1e7, error: (r, i) => new F("result", i) });
1070
- if (!n || typeof n != "object" || Array.isArray(n)) throw new F("result", "模板迁移应返回文档对象");
1079
+ const n = et(t, { maxBytes: 1e7, error: (r, o) => new j("result", o) });
1080
+ if (!n || typeof n != "object" || Array.isArray(n)) throw new j("result", "模板迁移应返回文档对象");
1071
1081
  return n;
1072
1082
  }
1073
- function yn(e) {
1074
- if (!Array.isArray(e) || e.length > 32) throw new F("definition", "模板迁移最多声明 32 步");
1083
+ function Mn(e) {
1084
+ if (!Array.isArray(e) || e.length > 32) throw new j("definition", "模板迁移最多声明 32 步");
1075
1085
  const t = /* @__PURE__ */ new Map();
1076
1086
  for (const n of e) {
1077
- if (!n || ![n.from, n.to].every((r) => typeof r == "string" && r.trim() && r.length <= 64) || n.from === n.to || t.has(n.from) || typeof n.migrate != "function" || n.from === pe) throw new F("definition", "迁移起点应唯一,不得从当前版本降级");
1087
+ if (!n || ![n.from, n.to].every((r) => typeof r == "string" && r.trim() && r.length <= 64) || n.from === n.to || t.has(n.from) || typeof n.migrate != "function" || n.from === pe) throw new j("definition", "迁移起点应唯一,不得从当前版本降级");
1078
1088
  t.set(n.from, { ...n });
1079
1089
  }
1080
1090
  for (const n of t.keys()) {
1081
1091
  const r = /* @__PURE__ */ new Set();
1082
- let i = n;
1083
- for (; t.has(i); ) {
1084
- if (r.has(i)) throw new F("definition", "模板迁移链存在循环");
1085
- r.add(i), i = t.get(i).to;
1092
+ let o = n;
1093
+ for (; t.has(o); ) {
1094
+ if (r.has(o)) throw new j("definition", "模板迁移链存在循环");
1095
+ r.add(o), o = t.get(o).to;
1086
1096
  }
1087
- if (i !== pe) throw new F("definition", "每条迁移链应到达当前模板版本");
1097
+ if (o !== pe) throw new j("definition", "每条迁移链应到达当前模板版本");
1088
1098
  }
1089
1099
  return t;
1090
1100
  }
1091
- function Mn(e = []) {
1092
- const t = yn(e);
1101
+ function vn(e = []) {
1102
+ const t = Mn(e);
1093
1103
  return async (n) => {
1094
1104
  let r = Be(n);
1095
- const i = [];
1105
+ const o = [];
1096
1106
  for (; r.schemaVersion !== pe; ) {
1097
- const o = typeof r.schemaVersion == "string" ? t.get(r.schemaVersion) : void 0;
1098
- if (!o) throw new F("unsupported", "未声明此模板版本的迁移路径");
1099
- const l = r.id, s = Be(await o.migrate(r));
1100
- if (s.schemaVersion !== o.to || typeof l == "string" && s.id !== l) throw new F("result", "迁移结果版本不匹配或改变了模板身份");
1101
- i.push({ from: o.from, to: o.to }), r = s;
1107
+ const i = typeof r.schemaVersion == "string" ? t.get(r.schemaVersion) : void 0;
1108
+ if (!i) throw new j("unsupported", "未声明此模板版本的迁移路径");
1109
+ const l = r.id, s = Be(await i.migrate(r));
1110
+ if (s.schemaVersion !== i.to || typeof l == "string" && s.id !== l) throw new j("result", "迁移结果版本不匹配或改变了模板身份");
1111
+ o.push({ from: i.from, to: i.to }), r = s;
1102
1112
  }
1103
- return { document: re(r), steps: i };
1113
+ return { document: re(r), steps: o };
1104
1114
  };
1105
1115
  }
1106
- class j extends Error {
1116
+ class F extends Error {
1107
1117
  constructor(t, n) {
1108
1118
  super(n), this.code = t, this.name = "ReportTemplateStoreError";
1109
1119
  }
1110
1120
  }
1111
- function I(e) {
1121
+ function O(e) {
1112
1122
  return JSON.parse(JSON.stringify(e));
1113
1123
  }
1114
1124
  function T(e) {
@@ -1118,28 +1128,28 @@ function T(e) {
1118
1128
  }
1119
1129
  function _e(e) {
1120
1130
  const t = e ? Number(e.revision) : 0;
1121
- if (!Number.isSafeInteger(t) || t < 0 || t >= Number.MAX_SAFE_INTEGER) throw new j("history", "修订号无效或已达上限");
1131
+ if (!Number.isSafeInteger(t) || t < 0 || t >= Number.MAX_SAFE_INTEGER) throw new F("history", "修订号无效或已达上限");
1122
1132
  return String(t + 1);
1123
1133
  }
1124
- function Pr(e, t = {}) {
1125
- const n = t.migrations ? Mn(t.migrations) : void 0, r = async (a) => n ? (await n(a)).document : re(a), i = async (a, c) => {
1134
+ function Ar(e, t = {}) {
1135
+ const n = t.migrations ? vn(t.migrations) : void 0, r = async (a) => n ? (await n(a)).document : re(a), o = async (a, c) => {
1126
1136
  T(c);
1127
1137
  const d = await e.read(a, c);
1128
- return T(c), d ? I(d) : void 0;
1129
- }, o = async (a, c) => {
1130
- const d = await i(a, c.signal);
1131
- if ((d?.revision ?? null) !== c.expectedRevision) throw new j("conflict", "模板已变化,请重新读取后提交");
1138
+ return T(c), d ? O(d) : void 0;
1139
+ }, i = async (a, c) => {
1140
+ const d = await o(a, c.signal);
1141
+ if ((d?.revision ?? null) !== c.expectedRevision) throw new F("conflict", "模板已变化,请重新读取后提交");
1132
1142
  return d;
1133
1143
  }, l = async (a, c, d) => {
1134
- if (T(c.signal), !await e.compareAndSwap(a.id, c.expectedRevision, I(a), { signal: c.signal, ...d ? { publication: I(d) } : {} })) throw new j("conflict", "模板已被其他请求更新");
1135
- return I(a);
1144
+ if (T(c.signal), !await e.compareAndSwap(a.id, c.expectedRevision, O(a), { signal: c.signal, ...d ? { publication: O(d) } : {} })) throw new F("conflict", "模板已被其他请求更新");
1145
+ return O(a);
1136
1146
  }, s = async (a, c, d, m) => {
1137
1147
  if (t.beforePublish) {
1138
1148
  T(d.signal);
1139
1149
  const C = a.published ? await r(a.published) : void 0;
1140
1150
  T(d.signal);
1141
1151
  const S = await t.beforePublish({ document: re(c), previous: C, signal: d.signal });
1142
- if (!S || S.ok !== !0) throw new j("review", S?.issues?.find((w) => w.severity === "error")?.message ?? "模板发布检查未通过");
1152
+ if (!S || S.ok !== !0) throw new F("review", S?.issues?.find((b) => b.severity === "error")?.message ?? "模板发布检查未通过");
1143
1153
  T(d.signal);
1144
1154
  }
1145
1155
  const h = _e(a), f = re({ ...c, revision: h }), g = { revision: h, document: f, publishedAt: (t.now?.() ?? /* @__PURE__ */ new Date()).toISOString() };
@@ -1149,20 +1159,20 @@ function Pr(e, t = {}) {
1149
1159
  list: async (a) => {
1150
1160
  T(a);
1151
1161
  const c = await e.list(a);
1152
- return T(a), I(c);
1162
+ return T(a), O(c);
1153
1163
  },
1154
1164
  get: async (a, c = {}) => {
1155
- const d = await i(a, c.signal), m = c.draft ? d?.draft : d?.published, h = m ? await r(m) : void 0;
1165
+ const d = await o(a, c.signal), m = c.draft ? d?.draft : d?.published, h = m ? await r(m) : void 0;
1156
1166
  return T(c.signal), h;
1157
1167
  },
1158
1168
  history: async (a, c) => {
1159
1169
  T(c);
1160
1170
  const d = await e.history(a, c);
1161
- return T(c), I(d);
1171
+ return T(c), O(d);
1162
1172
  },
1163
1173
  saveDraft: async (a, c) => {
1164
1174
  c = { ...c }, T(c.signal);
1165
- const d = await r(t.migrate ? await t.migrate(a) : a), m = await o(d.id, c), h = _e(m);
1175
+ const d = await r(t.migrate ? await t.migrate(a) : a), m = await i(d.id, c), h = _e(m);
1166
1176
  return l({
1167
1177
  id: d.id,
1168
1178
  revision: h,
@@ -1172,56 +1182,56 @@ function Pr(e, t = {}) {
1172
1182
  },
1173
1183
  publish: async (a, c) => {
1174
1184
  c = { ...c };
1175
- const d = await o(a, c);
1176
- if (!d) throw new j("missing", "模板不存在");
1177
- if (!d.draft) throw new j("draft", "没有可发布的草稿");
1185
+ const d = await i(a, c);
1186
+ if (!d) throw new F("missing", "模板不存在");
1187
+ if (!d.draft) throw new F("draft", "没有可发布的草稿");
1178
1188
  return s(d, await r(d.draft), c);
1179
1189
  },
1180
1190
  rollback: async (a, c, d) => {
1181
1191
  d = { ...d };
1182
- const m = await o(a, d);
1183
- if (!m) throw new j("missing", "模板不存在");
1192
+ const m = await i(a, d);
1193
+ if (!m) throw new F("missing", "模板不存在");
1184
1194
  T(d.signal);
1185
1195
  const h = await e.getVersion(a, c, d.signal);
1186
- if (!h) throw new j("history", "历史修订不存在");
1196
+ if (!h) throw new F("history", "历史修订不存在");
1187
1197
  return s(m, await r(h.document), d, c);
1188
1198
  }
1189
1199
  };
1190
1200
  }
1191
- function Ar() {
1201
+ function Ir() {
1192
1202
  const e = /* @__PURE__ */ new Map(), t = /* @__PURE__ */ new Map();
1193
1203
  return {
1194
1204
  read: async (n, r) => {
1195
1205
  T(r);
1196
- const i = e.get(n);
1197
- return i ? I(i) : void 0;
1206
+ const o = e.get(n);
1207
+ return o ? O(o) : void 0;
1198
1208
  },
1199
- list: async (n) => (T(n), Array.from(e.values(), ({ id: r, revision: i, publishedRevision: o }) => ({ id: r, revision: i, ...o ? { publishedRevision: o } : {} }))),
1200
- history: async (n, r) => (T(r), Array.from(t.get(n)?.values() ?? [], (i) => I(i))),
1201
- getVersion: async (n, r, i) => {
1202
- T(i);
1203
- const o = t.get(n)?.get(r);
1204
- return o ? I(o) : void 0;
1209
+ list: async (n) => (T(n), Array.from(e.values(), ({ id: r, revision: o, publishedRevision: i }) => ({ id: r, revision: o, ...i ? { publishedRevision: i } : {} }))),
1210
+ history: async (n, r) => (T(r), Array.from(t.get(n)?.values() ?? [], (o) => O(o))),
1211
+ getVersion: async (n, r, o) => {
1212
+ T(o);
1213
+ const i = t.get(n)?.get(r);
1214
+ return i ? O(i) : void 0;
1205
1215
  },
1206
- compareAndSwap: async (n, r, i, o) => {
1207
- if (T(o.signal), (e.get(n)?.revision ?? null) !== r) return !1;
1208
- if (i.id !== n) throw new j("history", "状态 ID 与存储 ID 不一致");
1209
- const l = I(i), s = o.publication;
1216
+ compareAndSwap: async (n, r, o, i) => {
1217
+ if (T(i.signal), (e.get(n)?.revision ?? null) !== r) return !1;
1218
+ if (o.id !== n) throw new F("history", "状态 ID 与存储 ID 不一致");
1219
+ const l = O(o), s = i.publication;
1210
1220
  if (s) {
1211
1221
  const a = t.get(n) ?? /* @__PURE__ */ new Map();
1212
- if (a.has(s.revision) || s.revision !== i.revision || s.document.id !== n) throw new j("history", "发布修订不可覆盖,且必须与状态修订和模板 ID 一致");
1213
- a.set(s.revision, I(s)), t.set(n, a);
1222
+ if (a.has(s.revision) || s.revision !== o.revision || s.document.id !== n) throw new F("history", "发布修订不可覆盖,且必须与状态修订和模板 ID 一致");
1223
+ a.set(s.revision, O(s)), t.set(n, a);
1214
1224
  }
1215
1225
  return e.set(n, l), !0;
1216
1226
  }
1217
1227
  };
1218
1228
  }
1219
1229
  class u extends Error {
1220
- constructor(t, n, r = "$", i) {
1221
- super(n), this.code = t, this.path = r, this.extensionId = i, this.name = "ReportComponentExtensionError";
1230
+ constructor(t, n, r = "$", o) {
1231
+ super(n), this.code = t, this.path = r, this.extensionId = o, this.name = "ReportComponentExtensionError";
1222
1232
  }
1223
1233
  }
1224
- const vn = /* @__PURE__ */ new Set(["__proto__", "constructor", "prototype"]);
1234
+ const xn = /* @__PURE__ */ new Set(["__proto__", "constructor", "prototype"]);
1225
1235
  function K(e, t = "$", n = { nodes: 0, units: 0 }, r = 0) {
1226
1236
  if (++n.nodes > 2048 || r > 16) throw new u("binding", "Component extension JSON exceeds its depth/node budget.", t);
1227
1237
  if (n.units > 64 * 1024) throw new u("binding", "Component extension JSON exceeds 64 Ki UTF-16 units.", t);
@@ -1231,29 +1241,29 @@ function K(e, t = "$", n = { nodes: 0, units: 0 }, r = 0) {
1231
1241
  return e;
1232
1242
  }
1233
1243
  if (!e || typeof e != "object") throw new u("binding", "Component extension values must be finite JSON data.", t);
1234
- const i = Object.getPrototypeOf(e);
1235
- if (Array.isArray(e)) return xn(e, t, n, r);
1236
- if (i !== Object.prototype && i !== null) throw new u("binding", "Component extension values must be plain JSON objects.", t);
1237
- return Sn(e, t, n, r);
1244
+ const o = Object.getPrototypeOf(e);
1245
+ if (Array.isArray(e)) return Sn(e, t, n, r);
1246
+ if (o !== Object.prototype && o !== null) throw new u("binding", "Component extension values must be plain JSON objects.", t);
1247
+ return En(e, t, n, r);
1238
1248
  }
1239
- function Pe(e, t, n) {
1249
+ function $e(e, t, n) {
1240
1250
  const r = Object.getOwnPropertyDescriptor(e, t);
1241
- if (typeof t != "string" || vn.has(t) || !r?.enumerable || r.get || r.set)
1251
+ if (typeof t != "string" || xn.has(t) || !r?.enumerable || r.get || r.set)
1242
1252
  throw new u("binding", "Component extension JSON contains an unsafe key or accessor.", n);
1243
1253
  return r.value;
1244
1254
  }
1245
- function xn(e, t, n, r) {
1255
+ function Sn(e, t, n, r) {
1246
1256
  if (Object.getPrototypeOf(e) !== Array.prototype || e.length > 2048 || Reflect.ownKeys(e).length !== e.length + 1) throw new u("binding", "Component extension arrays must be plain dense JSON arrays.", t);
1247
- return Object.freeze(Array.from({ length: e.length }, (i, o) => K(Pe(e, String(o), `${t}[${o}]`), `${t}[${o}]`, n, r + 1)));
1257
+ return Object.freeze(Array.from({ length: e.length }, (o, i) => K($e(e, String(i), `${t}[${i}]`), `${t}[${i}]`, n, r + 1)));
1248
1258
  }
1249
- function Sn(e, t, n, r) {
1250
- const i = Reflect.ownKeys(e);
1251
- if (i.length > 2048) throw new u("binding", "Component extension JSON exceeds its node budget.", t);
1252
- const o = i.map((l) => {
1253
- const s = `${t}.${String(l)}`, a = Pe(e, l, s);
1259
+ function En(e, t, n, r) {
1260
+ const o = Reflect.ownKeys(e);
1261
+ if (o.length > 2048) throw new u("binding", "Component extension JSON exceeds its node budget.", t);
1262
+ const i = o.map((l) => {
1263
+ const s = `${t}.${String(l)}`, a = $e(e, l, s);
1254
1264
  return n.units += String(l).length, [l, K(a, s, n, r + 1)];
1255
1265
  });
1256
- return Object.freeze(Object.fromEntries(o));
1266
+ return Object.freeze(Object.fromEntries(i));
1257
1267
  }
1258
1268
  function Q(e, t) {
1259
1269
  if (!e || typeof e != "object" || Array.isArray(e)) throw new u("binding", "Expected a component extension object.", t);
@@ -1265,11 +1275,11 @@ function me(e, t, n) {
1265
1275
  function be(e, t, n = 160) {
1266
1276
  if (typeof e != "string" || !e.trim() || e.length > n) throw new u("definition", "Component extension labels must be bounded nonempty strings.", t);
1267
1277
  }
1268
- function ut(e, t) {
1278
+ function pt(e, t) {
1269
1279
  if (typeof e != "string" || !/^[a-z][a-z\d_.-]{0,127}$/i.test(e)) throw new u("definition", "Invalid component extension id.", "$.id");
1270
1280
  if (typeof t != "string" || t.length > 64 || !/^\d+\.\d+\.\d+(?:-[\da-z.-]+)?(?:\+[\da-z.-]+)?$/i.test(t)) throw new u("definition", "Component extension version must be explicit semantic version text.", "$.version", e);
1271
1281
  }
1272
- function Ae(e, t, n) {
1282
+ function ke(e, t, n) {
1273
1283
  if (!(e === null && !t.required)) {
1274
1284
  if (typeof e !== t.type || typeof e == "number" && !Number.isFinite(e)) throw new u("binding", `Expected ${t.type} component property.`, n);
1275
1285
  if (t.options && !t.options.some((r) => Object.is(r, e))) throw new u("binding", "Component property is outside its declared options.", n);
@@ -1277,50 +1287,50 @@ function Ae(e, t, n) {
1277
1287
  if (typeof e == "string" && e.length > (t.maxLength ?? 64 * 1024)) throw new u("binding", "Component property exceeds maxLength.", n);
1278
1288
  }
1279
1289
  }
1280
- function En(e, t) {
1290
+ function Cn(e, t) {
1281
1291
  const n = Q(e, t);
1282
1292
  me(n, ["label", "type", "required", "default", "options", "min", "max", "maxLength"], t);
1283
1293
  const r = n;
1284
1294
  if (be(r.label, `${t}.label`), !["string", "number", "boolean"].includes(r.type)) throw new u("definition", "Unknown component property type.", t);
1285
1295
  if (r.required !== void 0 && typeof r.required != "boolean") throw new u("definition", "Component property required must be boolean.", t);
1286
- Cn(r, t), r.default !== void 0 && Ae(r.default, r, `${t}.default`);
1296
+ Tn(r, t), r.default !== void 0 && ke(r.default, r, `${t}.default`);
1287
1297
  }
1288
- function Cn(e, t) {
1298
+ function Tn(e, t) {
1289
1299
  for (const n of ["min", "max"]) if (e[n] !== void 0 && (e.type !== "number" || !Number.isFinite(e[n]))) throw new u("definition", "Numeric property bounds must be finite numbers.", t);
1290
1300
  if ((e.min ?? -1 / 0) > (e.max ?? 1 / 0)) throw new u("definition", "Component property min exceeds max.", t);
1291
1301
  if (e.maxLength !== void 0 && (e.type !== "string" || !Number.isSafeInteger(e.maxLength) || e.maxLength < 0 || e.maxLength > 64 * 1024)) throw new u("definition", "Invalid component property maxLength.", t);
1292
1302
  if (e.options !== void 0) {
1293
1303
  if (!Array.isArray(e.options) || !e.options.length || e.options.length > 64) throw new u("definition", "Component property options must contain 1 to 64 values.", t);
1294
- for (const n of e.options) Ae(n, { ...e, options: void 0 }, `${t}.options`);
1304
+ for (const n of e.options) ke(n, { ...e, options: void 0 }, `${t}.options`);
1295
1305
  }
1296
1306
  }
1297
- function Tn(e) {
1307
+ function Rn(e) {
1298
1308
  const t = Object.getPrototypeOf(e);
1299
1309
  if (t !== Object.prototype && t !== null) throw new u("definition", "Component extension metadata must be a plain object.");
1300
- const n = Reflect.ownKeys(e).filter((i) => i !== "load").map((i) => [i, Pe(e, i, `$.${String(i)}`)]), r = K(Object.fromEntries(n));
1301
- if (me(r, ["id", "version", "kind", "label", "description", "properties"], "$"), ut(r.id, r.version), be(r.label, "$.label"), !["image", "chart", "barcode", "qrcode"].includes(r.kind)) throw new u("definition", "Extension kind must use the existing image-backed output pipeline.", "$.kind");
1310
+ const n = Reflect.ownKeys(e).filter((o) => o !== "load").map((o) => [o, $e(e, o, `$.${String(o)}`)]), r = K(Object.fromEntries(n));
1311
+ if (me(r, ["id", "version", "kind", "label", "description", "properties"], "$"), pt(r.id, r.version), be(r.label, "$.label"), !["image", "chart", "barcode", "qrcode"].includes(r.kind)) throw new u("definition", "Extension kind must use the existing image-backed output pipeline.", "$.kind");
1302
1312
  if (r.description !== void 0 && be(r.description, "$.description", 2048), r.properties !== void 0) {
1303
- const i = Q(r.properties, "$.properties");
1304
- if (Object.keys(i).length > 64) throw new u("definition", "Component extension supports at most 64 properties.", "$.properties");
1305
- for (const [o, l] of Object.entries(i)) En(l, `$.properties.${o}`);
1313
+ const o = Q(r.properties, "$.properties");
1314
+ if (Object.keys(o).length > 64) throw new u("definition", "Component extension supports at most 64 properties.", "$.properties");
1315
+ for (const [i, l] of Object.entries(o)) Cn(l, `$.properties.${i}`);
1306
1316
  }
1307
1317
  return r;
1308
1318
  }
1309
- function pt(e, t) {
1319
+ function wt(e, t) {
1310
1320
  const n = Q(K(t ?? {}), "$.props"), r = {};
1311
- for (const i of Object.keys(n)) if (!Object.prototype.hasOwnProperty.call(e.properties ?? {}, i)) throw new u("binding", "Unknown component property.", `$.props.${i}`, e.id);
1312
- for (const [i, o] of Object.entries(e.properties ?? {})) {
1313
- const l = Object.prototype.hasOwnProperty.call(n, i) ? n[i] : o.default;
1321
+ for (const o of Object.keys(n)) if (!Object.prototype.hasOwnProperty.call(e.properties ?? {}, o)) throw new u("binding", "Unknown component property.", `$.props.${o}`, e.id);
1322
+ for (const [o, i] of Object.entries(e.properties ?? {})) {
1323
+ const l = Object.prototype.hasOwnProperty.call(n, o) ? n[o] : i.default;
1314
1324
  if (l === void 0) {
1315
- if (o.required) throw new u("binding", "Required component property is missing.", `$.props.${i}`, e.id);
1325
+ if (i.required) throw new u("binding", "Required component property is missing.", `$.props.${o}`, e.id);
1316
1326
  continue;
1317
1327
  }
1318
- Ae(l, o, `$.props.${i}`), r[i] = l;
1328
+ ke(l, i, `$.props.${o}`), r[o] = l;
1319
1329
  }
1320
1330
  return Object.freeze(r);
1321
1331
  }
1322
1332
  const H = "componentExtension";
1323
- function Rn(e) {
1333
+ function Pn(e) {
1324
1334
  const t = Object.getOwnPropertyDescriptor(e, "meta")?.value, n = t && Object.getOwnPropertyDescriptor(t, H);
1325
1335
  if (n) {
1326
1336
  if (n.get || n.set) throw new u("binding", "Component extension binding cannot be an accessor.", `$.meta.${H}`);
@@ -1328,26 +1338,26 @@ function Rn(e) {
1328
1338
  }
1329
1339
  }
1330
1340
  function $n(e, t) {
1331
- const n = Q(K(Rn(t)), `$.meta.${H}`);
1332
- me(n, ["id", "version", "props", "binding"], `$.meta.${H}`), ut(n.id, n.version);
1341
+ const n = Q(K(Pn(t)), `$.meta.${H}`);
1342
+ me(n, ["id", "version", "props", "binding"], `$.meta.${H}`), pt(n.id, n.version);
1333
1343
  const r = e.get(n.id);
1334
1344
  if (!r) throw new u("binding", "Component extension is not registered in this runtime.", `$.meta.${H}.id`, n.id);
1335
1345
  if (r.metadata.version !== n.version || r.metadata.kind !== t.kind) throw new u("binding", "Component extension version or image kind does not match its registration.", `$.meta.${H}`, r.metadata.id);
1336
- const i = Object.freeze({ id: r.metadata.id, version: r.metadata.version, props: pt(r.metadata, n.props), ...n.binding === void 0 ? {} : { binding: n.binding } });
1337
- return { entry: r, extension: i };
1346
+ const o = Object.freeze({ id: r.metadata.id, version: r.metadata.version, props: wt(r.metadata, n.props), ...n.binding === void 0 ? {} : { binding: n.binding } });
1347
+ return { entry: r, extension: o };
1338
1348
  }
1339
1349
  function We(e) {
1340
1350
  return e.released ??= Promise.resolve().then(() => e.renderer?.dispose?.());
1341
1351
  }
1342
- function V(e) {
1352
+ function U(e) {
1343
1353
  if (e) throw new u("disposed", "Component registry has been disposed.");
1344
1354
  }
1345
- function Pn(e) {
1355
+ function kn(e) {
1346
1356
  if (!e || typeof e != "object") throw new u("definition", "Component extension definition must be an object.");
1347
1357
  if (Object.getPrototypeOf(e) !== Object.prototype && Object.getPrototypeOf(e) !== null) throw new u("definition", "Component extension definition must be a plain object.");
1348
1358
  const t = Object.getOwnPropertyDescriptor(e, "load");
1349
1359
  if (!t || t.get || t.set || typeof t.value != "function") throw new u("definition", "Component extension needs a trusted runtime loader.", "$.load");
1350
- return { metadata: Tn(e), load: t.value };
1360
+ return { metadata: Rn(e), load: t.value };
1351
1361
  }
1352
1362
  function An(e, t) {
1353
1363
  if (!(e && typeof e.render == "function" && (e.dispose === void 0 || typeof e.dispose == "function"))) {
@@ -1360,32 +1370,32 @@ function An(e, t) {
1360
1370
  throw new u("load", "Component loader must return render and optional dispose methods.", "$.load", t);
1361
1371
  }
1362
1372
  }
1363
- function kn(e, t) {
1364
- const n = new AbortController(), r = () => n.abort(e.reason), i = () => n.abort(t.reason);
1365
- return e.aborted ? r() : e.addEventListener("abort", r, { once: !0 }), t.aborted ? i() : t.addEventListener("abort", i, { once: !0 }), { signal: n.signal, dispose() {
1366
- e.removeEventListener("abort", r), t.removeEventListener("abort", i);
1373
+ function In(e, t) {
1374
+ const n = new AbortController(), r = () => n.abort(e.reason), o = () => n.abort(t.reason);
1375
+ return e.aborted ? r() : e.addEventListener("abort", r, { once: !0 }), t.aborted ? o() : t.addEventListener("abort", o, { once: !0 }), { signal: n.signal, dispose() {
1376
+ e.removeEventListener("abort", r), t.removeEventListener("abort", o);
1367
1377
  } };
1368
1378
  }
1369
- function kr(e) {
1379
+ function Or(e) {
1370
1380
  if (!Array.isArray(e) || e.length > 128) throw new u("definition", "Register at most 128 component extensions.");
1371
1381
  const t = /* @__PURE__ */ new Map(), n = new AbortController();
1372
- let r = !1, i;
1382
+ let r = !1, o;
1373
1383
  for (const a of e) {
1374
- const c = Pn(a), d = c.metadata.id;
1384
+ const c = kn(a), d = c.metadata.id;
1375
1385
  if (t.has(d)) throw new u("definition", "Component extension id is already registered.", "$.id", d);
1376
1386
  t.set(d, c);
1377
1387
  }
1378
- function o(a) {
1379
- return V(r), a.pending || (a.pending = Promise.resolve().then(() => (V(r), a.load(n.signal))).then(async (c) => (An(c, a.metadata.id), a.renderer = c, r && (await We(a), V(r)), c)).catch((c) => {
1388
+ function i(a) {
1389
+ return U(r), a.pending || (a.pending = Promise.resolve().then(() => (U(r), a.load(n.signal))).then(async (c) => (An(c, a.metadata.id), a.renderer = c, r && (await We(a), U(r)), c)).catch((c) => {
1380
1390
  throw a.pending = void 0, c instanceof u ? c : Object.assign(new u("load", "Component extension loader failed.", "$.load", a.metadata.id), { cause: c });
1381
1391
  })), a.pending;
1382
1392
  }
1383
1393
  const l = async (a) => {
1384
- V(r);
1385
- const { entry: c, extension: d } = $n(t, a.component), m = kn(a.signal, n.signal);
1394
+ U(r);
1395
+ const { entry: c, extension: d } = $n(t, a.component), m = In(a.signal, n.signal);
1386
1396
  try {
1387
- const h = await Le(o(c), m.signal);
1388
- return await Le(h.render({ ...a, signal: m.signal, extension: d }), m.signal);
1397
+ const h = await De(i(c), m.signal);
1398
+ return await De(h.render({ ...a, signal: m.signal, extension: d }), m.signal);
1389
1399
  } finally {
1390
1400
  m.dispose();
1391
1401
  }
@@ -1394,7 +1404,7 @@ function kr(e) {
1394
1404
  return s;
1395
1405
  } }),
1396
1406
  describe(a) {
1397
- return V(r), Object.freeze([...t.values()].map((c) => c.metadata).filter((c) => !a || c.kind === a));
1407
+ return U(r), Object.freeze([...t.values()].map((c) => c.metadata).filter((c) => !a || c.kind === a));
1398
1408
  },
1399
1409
  hasExtension(a, c, d) {
1400
1410
  const m = t.get(a)?.metadata;
@@ -1405,24 +1415,24 @@ function kr(e) {
1405
1415
  return c && Object.prototype.hasOwnProperty.call(c, H) ? l : void 0;
1406
1416
  },
1407
1417
  createComponent(a, c = {}) {
1408
- V(r);
1418
+ U(r);
1409
1419
  const d = t.get(a);
1410
1420
  if (!d) throw new u("binding", "Component extension is not registered in this runtime.", "$.id", a);
1411
1421
  const m = Q(K(c), "$");
1412
1422
  me(m, ["props", "binding"], "$");
1413
- const h = { id: a, version: d.metadata.version, props: pt(d.metadata, m.props), ...m.binding === void 0 ? {} : { binding: m.binding } };
1423
+ const h = { id: a, version: d.metadata.version, props: wt(d.metadata, m.props), ...m.binding === void 0 ? {} : { binding: m.binding } };
1414
1424
  return { kind: d.metadata.kind, meta: { [H]: Object.freeze(h) } };
1415
1425
  },
1416
1426
  dispose() {
1417
- return i || (r = !0, n.abort(new u("disposed", "Component registry has been disposed.")), i = Promise.allSettled([...t.values()].filter((a) => a.renderer).map(We)).then((a) => {
1427
+ return o || (r = !0, n.abort(new u("disposed", "Component registry has been disposed.")), o = Promise.allSettled([...t.values()].filter((a) => a.renderer).map(We)).then((a) => {
1418
1428
  const c = a.find((d) => d.status === "rejected");
1419
1429
  if (c?.status === "rejected") throw c.reason;
1420
- }), i);
1430
+ }), o);
1421
1431
  }
1422
1432
  };
1423
1433
  return s;
1424
1434
  }
1425
- function Or(e) {
1435
+ function Nr(e) {
1426
1436
  return e.map((t) => t.map((n) => /[\t\r\n"]/.test(n) ? `"${n.replace(/"/g, '""')}"` : n).join(" ")).join(`\r
1427
1437
  `);
1428
1438
  }
@@ -1430,17 +1440,17 @@ function On(e, t) {
1430
1440
  const n = e[e.length - 1];
1431
1441
  e.length > 1 && n?.length === 1 && n[0] === "" && /[\r\n]$/.test(t) && e.pop();
1432
1442
  }
1433
- function Ir(e, t = 1e4) {
1443
+ function Dr(e, t = 1e4) {
1434
1444
  if (e.length > 4 * 1024 * 1024) throw new Error("Clipboard text limit exceeded");
1435
1445
  const n = [[]];
1436
- let r = "", i = !1, o = !1, l = 0;
1446
+ let r = "", o = !1, i = !1, l = 0;
1437
1447
  function s() {
1438
1448
  if (++l > t) throw new Error("Clipboard cell limit exceeded");
1439
- n[n.length - 1].push(r), r = "", o = !1;
1449
+ n[n.length - 1].push(r), r = "", i = !1;
1440
1450
  }
1441
1451
  for (let a = 0; a < e.length; a++) {
1442
1452
  const c = e[a];
1443
- if (i) {
1453
+ if (o) {
1444
1454
  if (c !== '"') {
1445
1455
  r += c;
1446
1456
  continue;
@@ -1449,11 +1459,11 @@ function Ir(e, t = 1e4) {
1449
1459
  r += '"', a++;
1450
1460
  continue;
1451
1461
  }
1452
- i = !1, o = !0;
1462
+ o = !1, i = !0;
1453
1463
  continue;
1454
1464
  }
1455
- if (c === '"' && !r && !o) {
1456
- i = !0;
1465
+ if (c === '"' && !r && !i) {
1466
+ o = !0;
1457
1467
  continue;
1458
1468
  }
1459
1469
  if (c === " ") {
@@ -1466,71 +1476,71 @@ function Ir(e, t = 1e4) {
1466
1476
  ` && a++;
1467
1477
  continue;
1468
1478
  }
1469
- if (o) throw new Error("Invalid quoted clipboard value");
1479
+ if (i) throw new Error("Invalid quoted clipboard value");
1470
1480
  r += c;
1471
1481
  }
1472
- if (i) throw new Error("Unclosed clipboard quote");
1482
+ if (o) throw new Error("Unclosed clipboard quote");
1473
1483
  return s(), On(n, e), n;
1474
1484
  }
1475
- class In extends Error {
1485
+ class Nn extends Error {
1476
1486
  constructor(t, n, r) {
1477
- const i = typeof n.label == "string" ? n.label : "单元格", o = {
1478
- definition: `${i}的编辑器配置无效`,
1479
- type: `${i}的编辑器与数据类型不一致`,
1480
- required: `${i}不能为空`,
1481
- min: `${i}不能小于 ${r}`,
1482
- max: `${i}不能大于 ${r}`,
1483
- precision: `${i}最多保留 ${r} 位小数`,
1484
- length: `${i}最多允许 ${r} 个字符`,
1485
- choice: `${i}请选择有效选项`,
1486
- date: `${i}请输入有效日期(YYYY-MM-DD)`
1487
+ const o = typeof n.label == "string" ? n.label : "单元格", i = {
1488
+ definition: `${o}的编辑器配置无效`,
1489
+ type: `${o}的编辑器与数据类型不一致`,
1490
+ required: `${o}不能为空`,
1491
+ min: `${o}不能小于 ${r}`,
1492
+ max: `${o}不能大于 ${r}`,
1493
+ precision: `${o}最多保留 ${r} 位小数`,
1494
+ length: `${o}最多允许 ${r} 个字符`,
1495
+ choice: `${o}请选择有效选项`,
1496
+ date: `${o}请输入有效日期(YYYY-MM-DD)`
1487
1497
  };
1488
- super(o[t]), this.code = t, this.field = n, this.expected = r, this.name = "ReportCellFieldError";
1498
+ super(i[t]), this.code = t, this.field = n, this.expected = r, this.name = "ReportCellFieldError";
1489
1499
  }
1490
1500
  }
1491
- function b(e, t, n) {
1492
- throw new In(t, e, n);
1501
+ function y(e, t, n) {
1502
+ throw new Nn(t, e, n);
1493
1503
  }
1494
- function wt(e) {
1504
+ function bt(e) {
1495
1505
  if (typeof e != "string" || !/^\d{4}-\d{2}-\d{2}$/.test(e) || e.startsWith("0000-")) return !1;
1496
1506
  const t = /* @__PURE__ */ new Date(`${e}T00:00:00.000Z`);
1497
1507
  return Number.isFinite(t.getTime()) && t.toISOString().slice(0, 10) === e;
1498
1508
  }
1499
- function Nn(e) {
1509
+ function Dn(e) {
1500
1510
  const [t = "", n = "0"] = String(e).toLowerCase().split("e");
1501
1511
  return Math.max(0, (t.split(".")[1]?.length ?? 0) - Number(n));
1502
1512
  }
1503
1513
  function Ln(e, t) {
1504
- e.min !== void 0 && t < e.min && b(e, "min", e.min), e.max !== void 0 && t > e.max && b(e, "max", e.max), e.precision !== void 0 && Nn(t) > e.precision && b(e, "precision", e.precision);
1514
+ e.min !== void 0 && t < e.min && y(e, "min", e.min), e.max !== void 0 && t > e.max && y(e, "max", e.max), e.precision !== void 0 && Dn(t) > e.precision && y(e, "precision", e.precision);
1505
1515
  }
1506
- function Dn(e, t) {
1507
- wt(t) || b(e, "date"), e.min !== void 0 && t < e.min && b(e, "min", e.min), e.max !== void 0 && t > e.max && b(e, "max", e.max);
1516
+ function Fn(e, t) {
1517
+ bt(t) || y(e, "date"), e.min !== void 0 && t < e.min && y(e, "min", e.min), e.max !== void 0 && t > e.max && y(e, "max", e.max);
1508
1518
  }
1509
1519
  function jn(e) {
1510
- [e.min, e.max].some((t) => t !== void 0 && !Number.isFinite(t)) && b(e, "definition"), e.min !== void 0 && e.max !== void 0 && e.min > e.max && b(e, "definition"), e.precision !== void 0 && (!Number.isInteger(e.precision) || e.precision < 0 || e.precision > 15) && b(e, "definition");
1520
+ [e.min, e.max].some((t) => t !== void 0 && !Number.isFinite(t)) && y(e, "definition"), e.min !== void 0 && e.max !== void 0 && e.min > e.max && y(e, "definition"), e.precision !== void 0 && (!Number.isInteger(e.precision) || e.precision < 0 || e.precision > 15) && y(e, "definition");
1511
1521
  }
1512
- function Fn(e) {
1513
- [e.min, e.max].some((t) => t !== void 0 && !wt(t)) && b(e, "definition"), e.min !== void 0 && e.max !== void 0 && e.min > e.max && b(e, "definition");
1522
+ function zn(e) {
1523
+ [e.min, e.max].some((t) => t !== void 0 && !bt(t)) && y(e, "definition"), e.min !== void 0 && e.max !== void 0 && e.min > e.max && y(e, "definition");
1514
1524
  }
1515
- function zn(e, t) {
1516
- (!Array.isArray(t.options) || !t.options.length) && b(t, "definition");
1525
+ function Hn(e, t) {
1526
+ (!Array.isArray(t.options) || !t.options.length) && y(t, "definition");
1517
1527
  const n = e.valueType === "text" ? "string" : e.valueType, r = /* @__PURE__ */ new Set();
1518
- for (const i of t.options)
1519
- (!i || typeof i.value !== n || typeof i.value == "number" && !Number.isFinite(i.value)) && b(t, "definition"), i.label !== void 0 && typeof i.label != "string" && b(t, "definition"), r.has(i.value) && b(t, "definition"), r.add(i.value);
1528
+ for (const o of t.options)
1529
+ (!o || typeof o.value !== n || typeof o.value == "number" && !Number.isFinite(o.value)) && y(t, "definition"), o.label !== void 0 && typeof o.label != "string" && y(t, "definition"), r.has(o.value) && y(t, "definition"), r.add(o.value);
1520
1530
  }
1521
- function Hn(e) {
1522
- e.required !== void 0 && typeof e.required != "boolean" && b(e, "definition"), [e.label, e.hint, e.unit].some((t) => t !== void 0 && typeof t != "string") && b(e, "definition"), e.type === "boolean" && [e.trueLabel, e.falseLabel].some((t) => t !== void 0 && typeof t != "string") && b(e, "definition");
1531
+ function Bn(e) {
1532
+ e.required !== void 0 && typeof e.required != "boolean" && y(e, "definition"), [e.label, e.hint, e.unit].some((t) => t !== void 0 && typeof t != "string") && y(e, "definition"), e.type === "boolean" && [e.trueLabel, e.falseLabel].some((t) => t !== void 0 && typeof t != "string") && y(e, "definition");
1523
1533
  }
1524
- function Bn(e, t) {
1525
- (!t || typeof t != "object" || Array.isArray(t) || !["text", "number", "boolean", "enum", "date"].includes(t.type)) && b(t ?? { type: "text" }, "definition"), Hn(t), (t.type === "number" || t.type === "boolean") && e.valueType !== t.type && b(t, "type"), (t.type === "text" || t.type === "date") && e.valueType !== "text" && b(t, "type"), t.type === "number" && jn(t), t.type === "text" && t.maxLength !== void 0 && (!Number.isInteger(t.maxLength) || t.maxLength < 0) && b(t, "definition"), t.type === "date" && Fn(t), t.type === "enum" && zn(e, t);
1534
+ function _n(e, t) {
1535
+ (!t || typeof t != "object" || Array.isArray(t) || !["text", "number", "boolean", "enum", "date"].includes(t.type)) && y(t ?? { type: "text" }, "definition"), Bn(t), (t.type === "number" || t.type === "boolean") && e.valueType !== t.type && y(t, "type"), (t.type === "text" || t.type === "date") && e.valueType !== "text" && y(t, "type"), t.type === "number" && jn(t), t.type === "text" && t.maxLength !== void 0 && (!Number.isInteger(t.maxLength) || t.maxLength < 0) && y(t, "definition"), t.type === "date" && zn(t), t.type === "enum" && Hn(e, t);
1526
1536
  }
1527
- function Nr(e, t, n) {
1528
- if (!e.editable) throw new Tt("readonly");
1529
- n && Bn(e, n);
1530
- const r = Rt(e, t);
1531
- return n ? (n.required && typeof r == "string" && !r.trim() && b(n, "required"), r === null || r === "" ? (n.required && b(n, "required"), r) : (n.type === "number" && Ln(n, r), n.type === "date" && Dn(n, r), n.type === "text" && n.maxLength !== void 0 && [...String(r)].length > n.maxLength && b(n, "length", n.maxLength), n.type === "enum" && !n.options.some((i) => Object.is(i.value, r)) && b(n, "choice"), r)) : r;
1537
+ function Lr(e, t, n) {
1538
+ if (!e.editable) throw new Rt("readonly");
1539
+ n && _n(e, n);
1540
+ const r = Pt(e, t);
1541
+ return n ? (n.required && typeof r == "string" && !r.trim() && y(n, "required"), r === null || r === "" ? (n.required && y(n, "required"), r) : (n.type === "number" && Ln(n, r), n.type === "date" && Fn(n, r), n.type === "text" && n.maxLength !== void 0 && [...String(r)].length > n.maxLength && y(n, "length", n.maxLength), n.type === "enum" && !n.options.some((o) => Object.is(o.value, r)) && y(n, "choice"), r)) : r;
1532
1542
  }
1533
- class M extends Error {
1543
+ class v extends Error {
1534
1544
  constructor(t) {
1535
1545
  super(`Report calculation: ${t}`), this.code = t, this.name = "ReportCalculationError";
1536
1546
  }
@@ -1542,409 +1552,440 @@ function G(e) {
1542
1552
  }
1543
1553
  async function se(e, t = 1) {
1544
1554
  const n = Math.floor(e.scanned / 2048);
1545
- if (e.scanned += t, e.scanned > e.maxScanned) throw new M("limit");
1555
+ if (e.scanned += t, e.scanned > e.maxScanned) throw new v("limit");
1546
1556
  G(e.signal), Math.floor(e.scanned / 2048) > n && (await e.yieldToHost(), G(e.signal));
1547
1557
  }
1548
- function ke(e) {
1558
+ function Ae(e) {
1549
1559
  return e.table?.role === "header" ? -Math.max(1, e.grid?.cells.length ?? 1) : e.table?.rowIndex ?? 0;
1550
1560
  }
1551
- function Ve(e, t, n) {
1552
- if (![t.pageIndex, t.componentIndex, t.rowIndex, t.columnIndex].every((s) => Number.isSafeInteger(s) && s >= 0)) throw new M("selection");
1561
+ function Ue(e, t, n) {
1562
+ if (![t.pageIndex, t.componentIndex, t.rowIndex, t.columnIndex].every((s) => Number.isSafeInteger(s) && s >= 0)) throw new v("selection");
1553
1563
  const r = e.pages[t.pageIndex]?.components[t.componentIndex];
1554
- if (!r?.grid || t.rowIndex >= r.grid.cells.length) throw new M("selection");
1555
- const i = r.grid.colWidthsMm?.length ?? r.grid.cells.reduce((s, a) => Math.max(s, a.length), 1);
1556
- if (t.columnIndex >= i) throw new M("selection");
1557
- const o = r.table, l = e.pages[n.pageIndex]?.components[n.componentIndex]?.table;
1558
- if (o && l && o.id === l.id) {
1559
- const s = l.columnKeys.indexOf(o.columnKeys[t.columnIndex] ?? "");
1560
- if (s < 0) throw new M("selection");
1561
- return { grid: o.id, row: ke(r) + t.rowIndex, column: s };
1564
+ if (!r?.grid || t.rowIndex >= r.grid.cells.length) throw new v("selection");
1565
+ const o = r.grid.colWidthsMm?.length ?? r.grid.cells.reduce((s, a) => Math.max(s, a.length), 1);
1566
+ if (t.columnIndex >= o) throw new v("selection");
1567
+ const i = r.table, l = e.pages[n.pageIndex]?.components[n.componentIndex]?.table;
1568
+ if (i && l && i.id === l.id) {
1569
+ const s = l.columnKeys.indexOf(i.columnKeys[t.columnIndex] ?? "");
1570
+ if (s < 0) throw new v("selection");
1571
+ return { grid: i.id, row: Ae(r) + t.rowIndex, column: s };
1562
1572
  }
1563
1573
  return { grid: `${t.pageIndex}:${t.componentIndex}`, row: t.rowIndex, column: t.columnIndex };
1564
1574
  }
1565
- function _n(e, t, n) {
1566
- const r = Ve(e, t.anchor, t.anchor), i = Ve(e, t.focus, t.anchor);
1567
- if (r.grid !== i.grid) throw new M("selection");
1568
- const o = (Math.abs(r.row - i.row) + 1) * (Math.abs(r.column - i.column) + 1);
1569
- if (!Number.isSafeInteger(o) || o > n) throw new M("limit");
1570
- return { grid: r.grid, rowStart: Math.min(r.row, i.row), rowEnd: Math.max(r.row, i.row), columnStart: Math.min(r.column, i.column), columnEnd: Math.max(r.column, i.column), origin: e.pages[t.anchor.pageIndex].components[t.anchor.componentIndex].table };
1575
+ function Wn(e, t, n) {
1576
+ const r = Ue(e, t.anchor, t.anchor), o = Ue(e, t.focus, t.anchor);
1577
+ if (r.grid !== o.grid) throw new v("selection");
1578
+ const i = (Math.abs(r.row - o.row) + 1) * (Math.abs(r.column - o.column) + 1);
1579
+ if (!Number.isSafeInteger(i) || i > n) throw new v("limit");
1580
+ return { grid: r.grid, rowStart: Math.min(r.row, o.row), rowEnd: Math.max(r.row, o.row), columnStart: Math.min(r.column, o.column), columnEnd: Math.max(r.column, o.column), origin: e.pages[t.anchor.pageIndex].components[t.anchor.componentIndex].table };
1571
1581
  }
1572
- function Wn(e) {
1582
+ function Un(e) {
1573
1583
  if (!e) return !1;
1574
1584
  const t = e.replace(/"[^"]*"|\\.|\[(?![hms]+\])[^\]]*\]/gi, "");
1575
1585
  return /[ymdhs]/i.test(t);
1576
1586
  }
1577
1587
  function Vn(e) {
1578
- if (e.valueType === "text" || e.valueType === "boolean" || Wn(e.numberFormat)) return null;
1588
+ if (e.valueType === "text" || e.valueType === "boolean" || Un(e.numberFormat)) return null;
1579
1589
  const t = e.value;
1580
1590
  if (typeof t != "number" || !Number.isFinite(t)) return null;
1581
- if (Number.isInteger(t) && !Number.isSafeInteger(t)) throw new M("precision");
1591
+ if (Number.isInteger(t) && !Number.isSafeInteger(t)) throw new v("precision");
1582
1592
  return t;
1583
1593
  }
1584
- function Un(e, t, n) {
1594
+ function qn(e, t, n) {
1585
1595
  if (e.seen.has(n)) return;
1586
1596
  e.seen.add(n), e.selected++;
1587
1597
  const r = t ? Vn(t) : null;
1588
1598
  r === null ? e.excluded++ : e.values.push(r);
1589
1599
  }
1590
- function qn(e, t, n, r) {
1600
+ function Gn(e, t, n, r) {
1591
1601
  return r.origin ? e.table?.id === r.origin.id : `${t}:${n}` === r.grid;
1592
1602
  }
1593
- function Gn(e, t, n) {
1603
+ function Jn(e, t, n) {
1594
1604
  return n.origin ? n.origin.columnKeys.indexOf(e.table.columnKeys[t] ?? "") : t;
1595
1605
  }
1596
- function Jn(e, t, n, r) {
1597
- const i = r.origin ? ke(e) + t : t, o = Gn(e, n, r);
1598
- return i < r.rowStart || i > r.rowEnd || o < r.columnStart || o > r.columnEnd ? null : `${r.grid}:${i}:${o}`;
1606
+ function Kn(e, t, n, r) {
1607
+ const o = r.origin ? Ae(e) + t : t, i = Jn(e, n, r);
1608
+ return o < r.rowStart || o > r.rowEnd || i < r.columnStart || i > r.columnEnd ? null : `${r.grid}:${o}:${i}`;
1599
1609
  }
1600
- function Kn(e, t) {
1601
- const n = t.origin ? ke(e) : 0, r = Math.max(0, t.rowStart - n), i = Math.min(e.grid.cells.length, t.rowEnd - n + 1);
1602
- return i > r ? i : 0;
1610
+ function Yn(e, t) {
1611
+ const n = t.origin ? Ae(e) : 0, r = Math.max(0, t.rowStart - n), o = Math.min(e.grid.cells.length, t.rowEnd - n + 1);
1612
+ return o > r ? o : 0;
1603
1613
  }
1604
- async function Yn(e, t, n, r, i) {
1605
- const o = e.grid;
1606
- if (t > r.maxScanned) throw new M("limit");
1607
- const l = o.colWidthsMm?.length ?? o.cells.reduce((a, c) => Math.max(a, c.length), 1);
1608
- if (l > r.maxScanned) throw new M("limit");
1614
+ async function Xn(e, t, n, r, o) {
1615
+ const i = e.grid;
1616
+ if (t > r.maxScanned) throw new v("limit");
1617
+ const l = i.colWidthsMm?.length ?? i.cells.reduce((a, c) => Math.max(a, c.length), 1);
1618
+ if (l > r.maxScanned) throw new v("limit");
1609
1619
  const s = /* @__PURE__ */ new Map();
1610
1620
  for (let a = 0; a < t; a++) {
1611
1621
  a > 0 && a % 2048 === 0 && (await r.yieldToHost(), G(r.signal));
1612
1622
  let c = 0;
1613
- for (const d of o.cells[a]) {
1623
+ for (const d of i.cells[a]) {
1614
1624
  for (await se(r); c < l && (s.get(c) ?? 0) > a; ) c++;
1615
1625
  if (c >= l) break;
1616
- const m = Math.max(1, Math.min(d?.colSpan ?? 1, l - c)), h = Math.min(o.cells.length, a + Math.max(1, d?.rowSpan ?? 1));
1626
+ const m = Math.max(1, Math.min(d?.colSpan ?? 1, l - c)), h = Math.min(i.cells.length, a + Math.max(1, d?.rowSpan ?? 1));
1617
1627
  m > 1 && await se(r, m - 1);
1618
1628
  for (let g = c; g < c + m; g++) s.set(g, h);
1619
- const f = Jn(e, a, c, n);
1620
- f && Un(i, d, f), c += m;
1629
+ const f = Kn(e, a, c, n);
1630
+ f && qn(o, d, f), c += m;
1621
1631
  }
1622
1632
  }
1623
1633
  }
1624
- async function Xn(e, t, n) {
1634
+ async function Zn(e, t, n) {
1625
1635
  const r = { values: [], seen: /* @__PURE__ */ new Set(), excluded: 0, selected: 0 };
1626
- for (let i = 0; i < e.pages.length; i++) {
1636
+ for (let o = 0; o < e.pages.length; o++) {
1627
1637
  await se(n);
1628
- const o = e.pages[i];
1629
- for (let l = 0; l < o.components.length; l++) {
1638
+ const i = e.pages[o];
1639
+ for (let l = 0; l < i.components.length; l++) {
1630
1640
  await se(n);
1631
- const s = o.components[l];
1632
- if (!s.grid || !qn(s, i, l, t) || s.table && s.table.role !== "body") continue;
1633
- const a = Kn(s, t);
1634
- a && await Yn(s, a, t, n, r);
1641
+ const s = i.components[l];
1642
+ if (!s.grid || !Gn(s, o, l, t) || s.table && s.table.role !== "body") continue;
1643
+ const a = Yn(s, t);
1644
+ a && await Xn(s, a, t, n, r);
1635
1645
  }
1636
1646
  }
1637
1647
  return r;
1638
1648
  }
1639
1649
  function X(e) {
1640
- if (!Number.isFinite(e)) throw new M("overflow");
1650
+ if (!Number.isFinite(e)) throw new v("overflow");
1641
1651
  return e;
1642
1652
  }
1643
- function Zn(e) {
1653
+ function Qn(e) {
1644
1654
  let t = 0, n = 0;
1645
1655
  for (const r of e) {
1646
- const i = r - n, o = X(t + i);
1647
- n = o - t - i, t = o;
1656
+ const o = r - n, i = X(t + o);
1657
+ n = i - t - o, t = i;
1648
1658
  }
1649
1659
  return t;
1650
1660
  }
1651
- async function Ue(e, t) {
1661
+ async function Ve(e, t) {
1652
1662
  let n = [...e], r = new Array(e.length);
1653
- for (let o = 1; o < e.length; o *= 2) {
1654
- for (let l = 0; l < e.length; l += o * 2) {
1655
- const s = Math.min(l + o, e.length), a = Math.min(l + o * 2, e.length);
1663
+ for (let i = 1; i < e.length; i *= 2) {
1664
+ for (let l = 0; l < e.length; l += i * 2) {
1665
+ const s = Math.min(l + i, e.length), a = Math.min(l + i * 2, e.length);
1656
1666
  let c = l, d = s;
1657
1667
  for (let m = l; m < a; m++)
1658
1668
  r[m] = d >= a || c < s && n[c] <= n[d] ? n[c++] : n[d++], m % 2048 === 0 && (await t.yieldToHost(), G(t.signal));
1659
1669
  }
1660
1670
  [n, r] = [r, n];
1661
1671
  }
1662
- const i = Math.floor(n.length / 2);
1663
- return n.length % 2 ? n[i] : X(n[i - 1] / 2 + n[i] / 2);
1672
+ const o = Math.floor(n.length / 2);
1673
+ return n.length % 2 ? n[o] : X(n[o - 1] / 2 + n[o] / 2);
1664
1674
  }
1665
- function Qn(e) {
1666
- const t = Zn(e);
1675
+ function er(e) {
1676
+ const t = Qn(e);
1667
1677
  let n = 1 / 0, r = -1 / 0;
1668
- for (const i of e)
1669
- n = Math.min(n, i), r = Math.max(r, i);
1678
+ for (const o of e)
1679
+ n = Math.min(n, o), r = Math.max(r, o);
1670
1680
  return { SUM: t, AVERAGE: t / e.length, AVG: t / e.length, MIN: n, MAX: r, COUNT: e.length };
1671
1681
  }
1672
- function er(e, t) {
1673
- if (typeof e != "string" || e.length > 256) throw new M("expression");
1682
+ function tr(e, t) {
1683
+ if (typeof e != "string" || e.length > 256) throw new v("expression");
1674
1684
  const n = e.toUpperCase().match(/(?:\d+(?:\.\d*)?|\.\d+)(?:E[+-]?\d+)?|[A-Z_]+|[()+\-*/]|\S/g) ?? [];
1675
- if (!n.length || n.length > 64) throw new M("expression");
1685
+ if (!n.length || n.length > 64) throw new v("expression");
1676
1686
  let r = 0;
1677
- function i(s) {
1678
- if (s > 16) throw new M("expression");
1687
+ function o(s) {
1688
+ if (s > 16) throw new v("expression");
1679
1689
  const a = n[r++];
1680
- if (a === "+" || a === "-") return (a === "-" ? -1 : 1) * i(s + 1);
1690
+ if (a === "+" || a === "-") return (a === "-" ? -1 : 1) * o(s + 1);
1681
1691
  if (a === "(") {
1682
- const c = o(0, s + 1);
1683
- if (n[r++] !== ")") throw new M("expression");
1692
+ const c = i(0, s + 1);
1693
+ if (n[r++] !== ")") throw new v("expression");
1684
1694
  return c;
1685
1695
  }
1686
1696
  if (a && /^(?:SUM|AVERAGE|AVG|MIN|MAX|COUNT|MEDIAN)$/.test(a) && Object.prototype.hasOwnProperty.call(t, a)) return X(t[a]);
1687
1697
  if (a && /^(?:\d+(?:\.\d*)?|\.\d+)(?:E[+-]?\d+)?$/.test(a)) return X(Number(a));
1688
- throw new M("expression");
1698
+ throw new v("expression");
1689
1699
  }
1690
- function o(s, a) {
1691
- let c = i(a);
1700
+ function i(s, a) {
1701
+ let c = o(a);
1692
1702
  for (; r < n.length; ) {
1693
1703
  const d = n[r], m = d === "+" || d === "-" ? 1 : d === "*" || d === "/" ? 2 : 0;
1694
1704
  if (!m || m < s) break;
1695
1705
  r++;
1696
- const h = o(m + 1, a + 1);
1697
- if (d === "/" && h === 0) throw new M("division");
1706
+ const h = i(m + 1, a + 1);
1707
+ if (d === "/" && h === 0) throw new v("division");
1698
1708
  c = X(d === "+" ? c + h : d === "-" ? c - h : d === "*" ? c * h : c / h);
1699
1709
  }
1700
1710
  return c;
1701
1711
  }
1702
- const l = o(1, 0);
1703
- if (r !== n.length) throw new M("expression");
1712
+ const l = i(1, 0);
1713
+ if (r !== n.length) throw new v("expression");
1704
1714
  return l;
1705
1715
  }
1706
- function tr(e) {
1716
+ function nr(e) {
1707
1717
  const t = e.maxCells ?? 1e5, n = e.maxScannedCells ?? 2e5, r = e.precision ?? 2;
1708
- if (![t, n].every((i) => Number.isSafeInteger(i) && i >= 1 && i <= 2e6)) throw new M("limit");
1709
- if (!Number.isInteger(r) || r < 0 || r > 12) throw new M("precision");
1718
+ if (![t, n].every((o) => Number.isSafeInteger(o) && o >= 1 && o <= 2e6)) throw new v("limit");
1719
+ if (!Number.isInteger(r) || r < 0 || r > 12) throw new v("precision");
1710
1720
  return { maxCells: t, maxScanned: n, precision: r };
1711
1721
  }
1712
- async function Lr(e, t, n = {}) {
1713
- const r = tr(n), i = { scanned: 0, maxScanned: r.maxScanned, signal: n.signal, yieldToHost: n.yieldToHost ?? (() => new Promise((a) => setTimeout(a, 0))) };
1714
- G(i.signal);
1715
- const o = await Xn(e, _n(e, t, r.maxCells), i), l = n.operation ?? "sum";
1716
- if (!["sum", "average", "min", "max", "count", "median", "expression"].includes(l)) throw new M("expression");
1722
+ async function Fr(e, t, n = {}) {
1723
+ const r = nr(n), o = { scanned: 0, maxScanned: r.maxScanned, signal: n.signal, yieldToHost: n.yieldToHost ?? (() => new Promise((a) => setTimeout(a, 0))) };
1724
+ G(o.signal);
1725
+ const i = await Zn(e, Wn(e, t, r.maxCells), o), l = n.operation ?? "sum";
1726
+ if (!["sum", "average", "min", "max", "count", "median", "expression"].includes(l)) throw new v("expression");
1717
1727
  let s = null;
1718
- if (l === "count") s = o.values.length;
1719
- else if (o.values.length)
1720
- if (l === "median") s = await Ue(o.values, i);
1728
+ if (l === "count") s = i.values.length;
1729
+ else if (i.values.length)
1730
+ if (l === "median") s = await Ve(i.values, o);
1721
1731
  else {
1722
- const a = Qn(o.values);
1723
- l === "expression" ? (/\bMEDIAN\b/i.test(n.expression ?? "") && (a.MEDIAN = await Ue(o.values, i)), s = er(n.expression ?? "", a)) : s = a[l.toUpperCase()];
1732
+ const a = er(i.values);
1733
+ l === "expression" ? (/\bMEDIAN\b/i.test(n.expression ?? "") && (a.MEDIAN = await Ve(i.values, o)), s = tr(n.expression ?? "", a)) : s = a[l.toUpperCase()];
1724
1734
  }
1725
- if (G(i.signal), s !== null && Number.isInteger(s) && !Number.isSafeInteger(s)) throw new M("precision");
1726
- return { value: s, formatted: s === null ? "—" : s.toFixed(r.precision), numericCells: o.values.length, excludedCells: o.excluded, selectedCells: o.selected, precision: r.precision };
1735
+ if (G(o.signal), s !== null && Number.isInteger(s) && !Number.isSafeInteger(s)) throw new v("precision");
1736
+ return { value: s, formatted: s === null ? "—" : s.toFixed(r.precision), numericCells: i.values.length, excludedCells: i.excluded, selectedCells: i.selected, precision: r.precision };
1727
1737
  }
1728
- class A extends Error {
1738
+ class k extends Error {
1729
1739
  constructor(t, n) {
1730
1740
  super(t), this.path = n, this.code = "label-sheet", this.name = "LabelSheetError";
1731
1741
  }
1732
1742
  }
1733
- function ie(e) {
1743
+ function oe(e) {
1734
1744
  if (e?.aborted) {
1735
1745
  const t = new Error("标签拼版已取消");
1736
1746
  throw t.name = "AbortError", t;
1737
1747
  }
1738
1748
  }
1739
1749
  function B(e, t, n = !1) {
1740
- if (!Number.isFinite(e) || e <= 0 || n && !Number.isSafeInteger(e)) throw new A("应为正有限数字,数量应为安全整数", t);
1750
+ if (!Number.isFinite(e) || e <= 0 || n && !Number.isSafeInteger(e)) throw new k("应为正有限数字,数量应为安全整数", t);
1741
1751
  return e;
1742
1752
  }
1743
1753
  function qe(e, t) {
1744
- if (!Number.isFinite(e) || e < 0) throw new A("应为非负有限数字", t);
1754
+ if (!Number.isFinite(e) || e < 0) throw new k("应为非负有限数字", t);
1745
1755
  return e;
1746
1756
  }
1747
- function nr(e) {
1757
+ function rr(e) {
1748
1758
  const t = typeof e.marginMm == "object" ? e.marginMm : { top: e.marginMm ?? 0, left: e.marginMm ?? 0, bottom: e.marginMm ?? 0, right: e.marginMm ?? 0 }, n = typeof e.gapMm == "object" ? e.gapMm : { horizontal: e.gapMm ?? 0, vertical: e.gapMm ?? 0 };
1749
1759
  for (const r of ["top", "left", "bottom", "right"]) qe(t?.[r], `$.marginMm.${r}`);
1750
1760
  for (const r of ["horizontal", "vertical"]) qe(n?.[r], `$.gapMm.${r}`);
1751
1761
  return { margin: t, gap: n };
1752
1762
  }
1753
- function rr(e) {
1763
+ function or(e) {
1754
1764
  const t = e.paper === void 0 || e.paper === "a4" ? { widthMm: 210, heightMm: 297 } : e.paper;
1755
1765
  B(t.widthMm, "$.paper.widthMm"), B(t.heightMm, "$.paper.heightMm");
1756
- const n = B(e.columns, "$.columns", !0), r = B(e.rows, "$.rows", !0), i = n * r;
1757
- if (i > 1e3) throw new A("每张纸不能超过 1000 个位置", "$.columns");
1758
- const { margin: o, gap: l } = nr(e), s = e.startSlot ?? 0, a = e.offsetMm ?? { x: 0, y: 0 };
1759
- if (!Number.isSafeInteger(s) || s < 0 || s >= i) throw new A("起始位置应在首张纸的有效位置内", "$.startSlot");
1760
- if (!Number.isFinite(a.x) || !Number.isFinite(a.y)) throw new A("校准偏移应为有限毫米值", "$.offsetMm");
1761
- return { paper: t, columns: n, rows: r, capacity: i, margin: o, gap: l, startSlot: s, offset: a };
1766
+ const n = B(e.columns, "$.columns", !0), r = B(e.rows, "$.rows", !0), o = n * r;
1767
+ if (o > 1e3) throw new k("每张纸不能超过 1000 个位置", "$.columns");
1768
+ const { margin: i, gap: l } = rr(e), s = e.startSlot ?? 0, a = e.offsetMm ?? { x: 0, y: 0 };
1769
+ if (!Number.isSafeInteger(s) || s < 0 || s >= o) throw new k("起始位置应在首张纸的有效位置内", "$.startSlot");
1770
+ if (!Number.isFinite(a.x) || !Number.isFinite(a.y)) throw new k("校准偏移应为有限毫米值", "$.offsetMm");
1771
+ return { paper: t, columns: n, rows: r, capacity: o, margin: i, gap: l, startSlot: s, offset: a };
1762
1772
  }
1763
- function bt(e) {
1764
- return 1 + (e.grid?.cells.reduce((t, n) => t + n.length + 1 + n.reduce((r, i) => r + (i?.children?.reduce((o, l) => o + bt(l), 0) ?? 0), 0), 0) ?? 0);
1773
+ function yt(e) {
1774
+ return 1 + (e.grid?.cells.reduce((t, n) => t + n.length + 1 + n.reduce((r, o) => r + (o?.children?.reduce((i, l) => i + yt(l), 0) ?? 0), 0), 0) ?? 0);
1765
1775
  }
1766
1776
  function ir(e, t, n) {
1767
- if (!St(e).ok) throw new A("标签计划无效", "$.plan");
1777
+ if (!Et(e).ok) throw new k("标签计划无效", "$.plan");
1768
1778
  const r = e.pages[0];
1769
1779
  if (!r) return;
1770
- const { paper: i, columns: o, rows: l, margin: s, gap: a, offset: c } = n;
1771
- if (s.left + c.x < 0 || s.top + c.y < 0 || s.left + c.x + o * r.pageWidthMm + (o - 1) * a.horizontal + s.right > i.widthMm + 1e-6 || s.top + c.y + l * r.pageHeightMm + (l - 1) * a.vertical + s.bottom > i.heightMm + 1e-6) throw new A("标签、间距、边距及校准偏移超过纸张尺寸;不会自动缩小标签", "$.paper");
1780
+ const { paper: o, columns: i, rows: l, margin: s, gap: a, offset: c } = n;
1781
+ if (s.left + c.x < 0 || s.top + c.y < 0 || s.left + c.x + i * r.pageWidthMm + (i - 1) * a.horizontal + s.right > o.widthMm + 1e-6 || s.top + c.y + l * r.pageHeightMm + (l - 1) * a.vertical + s.bottom > o.heightMm + 1e-6) throw new k("标签、间距、边距及校准偏移超过纸张尺寸;不会自动缩小标签", "$.paper");
1772
1782
  let d = 0;
1773
1783
  for (const [m, h] of e.pages.entries()) {
1774
- if (ie(t.signal), h.layout === "wide" || h.pageWidthMm !== r.pageWidthMm || h.pageHeightMm !== r.pageHeightMm) throw new A("拼版需要尺寸相同的固定标签页面", `$.pages.${m}`);
1775
- if (d += h.components.reduce((f, g) => f + bt(g), 0), d > B(t.maxComponents ?? 25e4, "$.maxComponents", !0)) throw new A("拼版组件总量超过预算", "$.maxComponents");
1776
- for (const f of h.components) if (f.leftMm < 0 || f.topMm < 0 || f.leftMm + f.widthMm > h.pageWidthMm + 1e-6 || f.topMm + f.heightMm > h.pageHeightMm + 1e-6) throw new A("标签内容超出标签边界", `$.pages.${m}.components`);
1784
+ if (oe(t.signal), h.layout === "wide" || h.pageWidthMm !== r.pageWidthMm || h.pageHeightMm !== r.pageHeightMm) throw new k("拼版需要尺寸相同的固定标签页面", `$.pages.${m}`);
1785
+ if (d += h.components.reduce((f, g) => f + yt(g), 0), d > B(t.maxComponents ?? 25e4, "$.maxComponents", !0)) throw new k("拼版组件总量超过预算", "$.maxComponents");
1786
+ for (const f of h.components) if (f.leftMm < 0 || f.topMm < 0 || f.leftMm + f.widthMm > h.pageWidthMm + 1e-6 || f.topMm + f.heightMm > h.pageHeightMm + 1e-6) throw new k("标签内容超出标签边界", `$.pages.${m}.components`);
1777
1787
  }
1778
1788
  }
1779
- function Dr(e, t) {
1780
- ie(t.signal);
1781
- const n = rr(t), { paper: r, columns: i, capacity: o, margin: l, gap: s, startSlot: a, offset: c } = n, d = e.pages.length ? Math.ceil((a + e.pages.length) / o) : 0;
1782
- if (d > B(t.maxSheets ?? 1e4, "$.maxSheets", !0)) throw new A("拼版纸张数量超过预算", "$.maxSheets");
1789
+ function jr(e, t) {
1790
+ oe(t.signal);
1791
+ const n = or(t), { paper: r, columns: o, capacity: i, margin: l, gap: s, startSlot: a, offset: c } = n, d = e.pages.length ? Math.ceil((a + e.pages.length) / i) : 0;
1792
+ if (d > B(t.maxSheets ?? 1e4, "$.maxSheets", !0)) throw new k("拼版纸张数量超过预算", "$.maxSheets");
1783
1793
  B(t.maxComponents ?? 25e4, "$.maxComponents", !0), ir(e, t, n);
1784
- const m = et(e, { maxBytes: B(t.maxSnapshotBytes ?? 64e6, "$.maxSnapshotBytes", !0), check: () => ie(t.signal), error: (f, g) => new A(g, "$.maxSnapshotBytes") }), h = Array.from({ length: d }, () => ({ pageWidthMm: r.widthMm, pageHeightMm: r.heightMm, components: [], meta: { labelSheet: { columns: i, rows: n.rows, slots: [] } } }));
1794
+ const m = et(e, { maxBytes: B(t.maxSnapshotBytes ?? 64e6, "$.maxSnapshotBytes", !0), check: () => oe(t.signal), error: (f, g) => new k(g, "$.maxSnapshotBytes") }), h = Array.from({ length: d }, () => ({ pageWidthMm: r.widthMm, pageHeightMm: r.heightMm, components: [], meta: { labelSheet: { columns: o, rows: n.rows, slots: [] } } }));
1785
1795
  for (const [f, g] of m.pages.entries()) {
1786
- ie(t.signal);
1787
- const C = a + f, S = C % o, w = h[Math.floor(C / o)], v = l.left + c.x + S % i * (g.pageWidthMm + s.horizontal), y = l.top + c.y + Math.floor(S / i) * (g.pageHeightMm + s.vertical), N = { sourcePageIndex: f, slotIndex: S, xMm: v, yMm: y, widthMm: g.pageWidthMm, heightMm: g.pageHeightMm, ...g.meta ? { sourceMeta: g.meta } : {} };
1788
- w.meta.labelSheet.slots.push(N), w.components.push(...g.components.map((L) => ({ ...L, leftMm: L.leftMm + v, topMm: L.topMm + y, meta: { ...L.meta, labelSheet: N } })));
1796
+ oe(t.signal);
1797
+ const C = a + f, S = C % i, b = h[Math.floor(C / i)], M = l.left + c.x + S % o * (g.pageWidthMm + s.horizontal), w = l.top + c.y + Math.floor(S / o) * (g.pageHeightMm + s.vertical), N = { sourcePageIndex: f, slotIndex: S, xMm: M, yMm: w, widthMm: g.pageWidthMm, heightMm: g.pageHeightMm, ...g.meta ? { sourceMeta: g.meta } : {} };
1798
+ b.meta.labelSheet.slots.push(N), b.components.push(...g.components.map((D) => ({ ...D, leftMm: D.leftMm + M, topMm: D.topMm + w, meta: { ...D.meta, labelSheet: N } })));
1789
1799
  }
1790
1800
  return { ...m, pages: h };
1791
1801
  }
1802
+ function zr(e) {
1803
+ if (!e || !["today", "yesterday", "month-start", "month-end"].includes(e.preset)) throw new TypeError("未知日期默认值");
1804
+ const t = e.now instanceof Date ? e.now.getTime() : e.now;
1805
+ if (typeof t != "number" || !Number.isFinite(t) || !Number.isFinite(new Date(t).getTime())) throw new TypeError("日期默认值需要有效的业务时钟");
1806
+ if (typeof e.timeZone != "string" || !e.timeZone.trim()) throw new TypeError("日期默认值需要显式业务时区");
1807
+ if (e.offsetDays !== void 0 && (!Number.isSafeInteger(e.offsetDays) || Math.abs(e.offsetDays) > 3660)) throw new RangeError("日期偏移应为 -3660 到 3660 的整数");
1808
+ const n = new Intl.DateTimeFormat("en-CA", { timeZone: e.timeZone, year: "numeric", month: "2-digit", day: "2-digit", calendar: "iso8601", numberingSystem: "latn" }).formatToParts(t), r = (i) => Number(n.find((l) => l.type === i)?.value), o = /* @__PURE__ */ new Date(0);
1809
+ if (o.setUTCFullYear(r("year"), r("month") - 1, r("day")), o.setUTCHours(0, 0, 0, 0), e.preset === "yesterday" && o.setUTCDate(o.getUTCDate() - 1), e.preset === "month-start" && o.setUTCDate(1), e.preset === "month-end" && o.setUTCMonth(o.getUTCMonth() + 1, 0), o.setUTCDate(o.getUTCDate() + (e.offsetDays ?? 0)), o.getUTCFullYear() < 1 || o.getUTCFullYear() > 9999) throw new RangeError("业务日期超出 0001–9999 范围");
1810
+ return o.toISOString().slice(0, 10);
1811
+ }
1792
1812
  export {
1793
- zr as CSS_DPI,
1794
- Hr as DEFAULT_BORDER_PT,
1813
+ _r as CSS_DPI,
1814
+ Wr as DEFAULT_BORDER_PT,
1795
1815
  le as DEFAULT_FONT_FAMILY,
1796
- Br as DEFAULT_FONT_PT,
1797
- Mi as DEFAULT_LABEL_PAGE_LIMIT,
1798
- _r as DEFAULT_STROKE_COLOR,
1816
+ Ur as DEFAULT_FONT_PT,
1817
+ Eo as DEFAULT_LABEL_PAGE_LIMIT,
1818
+ Vr as DEFAULT_STROKE_COLOR,
1799
1819
  Ge as DEFAULT_TEXT_COLOR,
1800
- Wr as LINE_HEIGHT,
1801
- A as LabelSheetError,
1802
- Vr as MM_PER_INCH,
1803
- Ki as OutputAssetError,
1804
- Pt as OutputFidelityError,
1805
- oe as PAPER_SIZES,
1806
- dn as PageBuilder,
1807
- vi as PaginateCellLimitError,
1808
- xi as PaginatePageLimitError,
1809
- ri as RENDER_PLAN_SCHEMA_VERSION,
1820
+ qr as LINE_HEIGHT,
1821
+ k as LabelSheetError,
1822
+ Gr as MM_PER_INCH,
1823
+ ri as OutputAssetError,
1824
+ kt as OutputFidelityError,
1825
+ ie as PAPER_SIZES,
1826
+ mn as PageBuilder,
1827
+ Co as PaginateCellLimitError,
1828
+ To as PaginateChartComponentLimitError,
1829
+ Ro as PaginatePageLimitError,
1830
+ ao as RENDER_PLAN_SCHEMA_VERSION,
1810
1831
  pe as REPORT_TEMPLATE_DOCUMENT_VERSION,
1811
- Kr as ReportBindingError,
1812
- M as ReportCalculationError,
1813
- Tt as ReportCellEditError,
1814
- In as ReportCellFieldError,
1832
+ Zr as ReportBindingError,
1833
+ v as ReportCalculationError,
1834
+ Rt as ReportCellEditError,
1835
+ Nn as ReportCellFieldError,
1815
1836
  u as ReportComponentExtensionError,
1816
- Zi as ReportDrillError,
1817
- io as ReportParamValidationError,
1837
+ ai as ReportDataError,
1838
+ si as ReportDrillError,
1839
+ wi as ReportParamValidationError,
1818
1840
  ve as ReportSourceError,
1819
1841
  Ze as ReportTemplateError,
1820
- F as ReportTemplateMigrationError,
1821
- j as ReportTemplateStoreError,
1822
- Ur as SCHEMA_VERSION_MACH,
1823
- cn as TemplateBuilder,
1824
- ko as TreeRowLimitError,
1825
- Si as applyReportCellEdit,
1826
- Ei as applyReportCellEditBatch,
1827
- To as applyReportDocumentStyle,
1828
- Ci as applyReportEditResult,
1829
- Ti as applyReportSourceMetadata,
1830
- oi as assertRenderPlan,
1831
- oo as assertReportParams,
1832
- Lr as calculateReportSelection,
1833
- Ro as captureTemplateFragment,
1834
- ui as charWidthEm,
1835
- $ as classOf,
1836
- po as cloneReportTemplate,
1837
- xo as collectTemplateOutline,
1838
- Er as columnsFromContract,
1839
- en as computePageWindow,
1840
- Ri as countTemplatePages,
1841
- pi as createCanvasMeasurer,
1842
- xr as createCanvasPager,
1843
- wi as createHeuristicMeasurer,
1844
- Tr as createLabelTemplate,
1845
- wo as createLocalTemplateCatalog,
1846
- Ar as createMemoryTemplateStore,
1847
- wr as createPageViewportRenderer,
1848
- $r as createProviderReport,
1849
- $i as createReportCellEdit,
1850
- Pi as createReportCellEditBatch,
1851
- Ai as createReportCellResolver,
1852
- kr as createReportComponentRegistry,
1853
- Qi as createReportDrillRequest,
1854
- ki as createReportEditSession,
1855
- Oi as createReportSource,
1856
- Cr as createTableTemplate,
1857
- Sr as createTemplate,
1858
- Pr as createTemplateManager,
1859
- Mn as createTemplateMigrator,
1860
- ai as createTemplateRegistry,
1861
- Oo as createTreeTable,
1862
- fi as datasetJsonSchema,
1863
- Rr as defineLabelReport,
1864
- Ct as defineReport,
1865
- si as defineReportTemplate,
1866
- bo as diffReportTemplates,
1867
- Ii as estimateListLayoutCells,
1868
- Yr as evalStyleRule,
1869
- er as evaluateReportAggregateExpression,
1870
- Ni as explainDatasetField,
1871
- Li as formatReportCellEdit,
1872
- Or as formatReportClipboard,
1873
- ao as formatReportDateRange,
1874
- Xr as formatValue,
1875
- Di as getReportCellContext,
1876
- ji as getReportEditSession,
1877
- Fi as hasValidDataExplanation,
1842
+ j as ReportTemplateMigrationError,
1843
+ F as ReportTemplateStoreError,
1844
+ Po as ReportValidationError,
1845
+ Jr as SCHEMA_VERSION_MACH,
1846
+ dn as TemplateBuilder,
1847
+ na as TreeRowLimitError,
1848
+ $o as applyReportCellEdit,
1849
+ ko as applyReportCellEditBatch,
1850
+ Xi as applyReportDocumentStyle,
1851
+ Ao as applyReportEditResult,
1852
+ Io as applyReportSourceMetadata,
1853
+ lo as assertRenderPlan,
1854
+ bi as assertReportParams,
1855
+ Oo as assertReportValidation,
1856
+ Fr as calculateReportSelection,
1857
+ Zi as captureTemplateFragment,
1858
+ yo as charWidthEm,
1859
+ P as classOf,
1860
+ Bi as cloneReportTemplate,
1861
+ Gi as collectTemplateOutline,
1862
+ Tr as columnsFromContract,
1863
+ li as compareReportData,
1864
+ Fi as compileReportPredicate,
1865
+ tn as computePageWindow,
1866
+ No as countTemplatePages,
1867
+ Mo as createCanvasMeasurer,
1868
+ Er as createCanvasPager,
1869
+ vo as createHeuristicMeasurer,
1870
+ Pr as createLabelTemplate,
1871
+ _i as createLocalTemplateCatalog,
1872
+ Ir as createMemoryTemplateStore,
1873
+ yr as createPageViewportRenderer,
1874
+ kr as createProviderReport,
1875
+ Do as createReportCellEdit,
1876
+ Lo as createReportCellEditBatch,
1877
+ Fo as createReportCellResolver,
1878
+ Ni as createReportChartData,
1879
+ Or as createReportComponentRegistry,
1880
+ ci as createReportDrillRequest,
1881
+ jo as createReportEditSession,
1882
+ di as createReportPrefill,
1883
+ zo as createReportSource,
1884
+ Rr as createTableTemplate,
1885
+ Cr as createTemplate,
1886
+ Ar as createTemplateManager,
1887
+ vn as createTemplateMigrator,
1888
+ co as createTemplateRegistry,
1889
+ ra as createTreeTable,
1890
+ wo as datasetJsonSchema,
1891
+ $r as defineLabelReport,
1892
+ Tt as defineReport,
1893
+ mo as defineReportTemplate,
1894
+ Wi as diffReportTemplates,
1895
+ Ho as estimateListLayoutCells,
1896
+ Qr as evalStyleRule,
1897
+ tr as evaluateReportAggregateExpression,
1898
+ ji as evaluateReportPredicate,
1899
+ Bo as explainDatasetField,
1900
+ yi as formatReportCascaderPath,
1901
+ _o as formatReportCellEdit,
1902
+ Nr as formatReportClipboard,
1903
+ Mi as formatReportDateRange,
1904
+ vi as formatReportNumberRange,
1905
+ xi as formatReportParamSelection,
1906
+ eo as formatValue,
1907
+ Wo as getReportCellContext,
1908
+ Uo as getReportEditSession,
1909
+ Vo as hasValidDataExplanation,
1878
1910
  Me as heuristicMeasurer,
1879
- Dr as imposeLabelSheets,
1880
- $o as insertTemplateFragment,
1881
- Yi as inspectOutputCapabilities,
1882
- So as inspectTemplateFieldUsage,
1883
- Po as inspectTemplateFragmentBindings,
1911
+ jr as imposeLabelSheets,
1912
+ Qi as insertTemplateFragment,
1913
+ oi as inspectOutputCapabilities,
1914
+ Ji as inspectTemplateFieldUsage,
1915
+ ea as inspectTemplateFragmentBindings,
1884
1916
  ce as isImageBackedComponent,
1885
- zi as isReportDataTarget,
1886
- so as isReportDate,
1887
- lo as isReportMonth,
1888
- Hi as isReportValueState,
1889
- co as isReportYear,
1917
+ qo as isReportDataTarget,
1918
+ Si as isReportDate,
1919
+ Ei as isReportMonth,
1920
+ Go as isReportValueState,
1921
+ Ci as isReportYear,
1890
1922
  Ye as isRichText,
1891
- eo as matchReportDrillActions,
1892
- $e as measurePageSizePx,
1893
- bi as measureTextMm,
1923
+ mi as matchReportDrillActions,
1924
+ Pe as measurePageSizePx,
1925
+ xo as measureTextMm,
1894
1926
  Ke as mergeComponentStyles,
1895
1927
  ue as mmToPx,
1896
- qr as mmToPxFactor,
1897
- Bi as paginateTemplate,
1898
- _i as paginateTemplatePages,
1899
- Zr as parseDateLocal,
1900
- Nr as parseReportCellFieldInput,
1901
- Rt as parseReportCellInput,
1902
- Ir as parseReportClipboard,
1903
- mo as parseReportDateRange,
1928
+ Kr as mmToPxFactor,
1929
+ Jo as paginateTemplate,
1930
+ Ko as paginateTemplatePages,
1931
+ to as parseDateLocal,
1932
+ Ti as parseReportCascaderPath,
1933
+ Lr as parseReportCellFieldInput,
1934
+ Pt as parseReportCellInput,
1935
+ Dr as parseReportClipboard,
1936
+ Ri as parseReportDateRange,
1937
+ Pi as parseReportNumberRange,
1938
+ $i as parseReportParamSelection,
1904
1939
  re as parseReportTemplate,
1905
- br as planFontSizePx,
1906
- Wi as projectListColumns,
1907
- U as ptToPx,
1908
- Gr as pxToMm,
1909
- Vi as registerReportEditSession,
1910
- Ui as relocateReportCellEdits,
1911
- st as renderComponent,
1912
- lt as renderPage,
1913
- pr as renderPlan,
1914
- Mr as renderPlanToCanvas,
1915
- vr as renderPlanToCanvasAsync,
1916
- yr as renderPlanToImages,
1917
- qi as reportCellEditKey,
1940
+ Mr as planFontSizePx,
1941
+ Yo as projectListColumns,
1942
+ V as ptToPx,
1943
+ Yr as pxToMm,
1944
+ Xo as registerReportEditSession,
1945
+ Zo as relocateReportCellEdits,
1946
+ lt as renderComponent,
1947
+ ct as renderPage,
1948
+ br as renderPlan,
1949
+ xr as renderPlanToCanvas,
1950
+ Sr as renderPlanToCanvasAsync,
1951
+ vr as renderPlanToImages,
1952
+ Qo as reportCellEditKey,
1953
+ hi as reportDataSnapshotFromPlan,
1954
+ zr as reportDateDefault,
1918
1955
  Z as reportOutputDiagnostics,
1919
- ho as reportParamsJsonSchema,
1956
+ ki as reportParamsJsonSchema,
1957
+ zi as reportPredicateFields,
1958
+ fi as reportPrefillInputs,
1920
1959
  Je as resolveBoxBorders,
1921
- Qr as resolveComponentBinding,
1960
+ no as resolveComponentBinding,
1922
1961
  _ as resolveFontSize,
1923
1962
  xe as resolveGridLayout,
1924
1963
  q as resolveLineHeight,
1925
- gt as resolvePaper,
1964
+ ut as resolvePaper,
1926
1965
  Ee as resolvePlanAssets,
1927
- to as resolveReportDrillReturn,
1966
+ gi as resolveReportDrillReturn,
1928
1967
  Y as resolveStroke,
1929
1968
  ye as resolveTextColor,
1930
- yo as reviewReportTemplate,
1931
- Mo as reviewReportTemplateAsync,
1969
+ Ui as reviewReportTemplate,
1970
+ Vi as reviewReportTemplateAsync,
1932
1971
  J as round,
1933
- li as serializeReportTemplate,
1934
- Gi as summarizeReportCellEdits,
1935
- Eo as templatePathLocation,
1936
- ei as toExcelNumberFormat,
1937
- ti as toNumber,
1938
- ci as validateComponent,
1939
- Et as validateDatasetRows,
1940
- di as validatePage,
1941
- St as validateRenderPlan,
1942
- Bn as validateReportCellFieldDefinition,
1943
- no as validateReportDrillActions,
1944
- fo as validateReportParamDefinitions,
1945
- go as validateReportParams,
1972
+ ho as serializeReportTemplate,
1973
+ ei as summarizeReportCellEdits,
1974
+ Ki as templatePathLocation,
1975
+ ro as toExcelNumberFormat,
1976
+ oo as toNumber,
1977
+ fo as validateComponent,
1978
+ Ct as validateDatasetRows,
1979
+ go as validatePage,
1980
+ Et as validateRenderPlan,
1981
+ _n as validateReportCellFieldDefinition,
1982
+ Di as validateReportChartBinding,
1983
+ ti as validateReportDataset,
1984
+ ui as validateReportDrillActions,
1985
+ Ai as validateReportParamDefinitions,
1986
+ Ii as validateReportParams,
1946
1987
  Xe as validateReportTemplate,
1947
- mi as validateReportTemplateDocument,
1948
- Io as validateTreeOptions,
1988
+ uo as validateReportTemplateDocument,
1989
+ oa as validateTreeOptions,
1949
1990
  Qe as wrapText
1950
1991
  };