@agile-team/mach-report 2.13.0 → 2.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (260) hide show
  1. package/README.md +20 -7
  2. package/THIRD_PARTY_NOTICES.md +3 -1
  3. package/dist/ExcelBindingWizard-BKH1nGNS.js +1485 -0
  4. package/dist/ExcelBindingWizard-Bs43BGNp.cjs +1 -0
  5. package/dist/ParamEditor-Da4akw6V.cjs +1 -0
  6. package/dist/ParamEditor-DoAhzJsm.js +594 -0
  7. package/dist/{ReportBatchPanel-CW2HV9I8.js → ReportBatchPanel-BMf6boMA.js} +39 -39
  8. package/dist/ReportBatchPanel-wP9m9Pj1.cjs +1 -0
  9. package/dist/ReportPreview-ChV19HBp.js +4619 -0
  10. package/dist/ReportPreview-DbLvvOUT.cjs +6 -0
  11. package/dist/{ReportTemplateLibrary-BZB-XWjj.js → ReportTemplateLibrary-C9wutIiT.js} +1 -1
  12. package/dist/ReportTemplateLibrary-Sxr3eD0J.cjs +1 -0
  13. package/dist/RuleEditor-C_Clasvd.js +2037 -0
  14. package/dist/RuleEditor-XhGHK8DE.cjs +1 -0
  15. package/dist/TemplateOutlinePanel-D6Bkny59.js +96 -0
  16. package/dist/TemplateOutlinePanel-JTSR53vJ.cjs +1 -0
  17. package/dist/TemplateReusePanel-Kx35S0Ql.cjs +1 -0
  18. package/dist/TemplateReusePanel-rVuK1kTz.js +388 -0
  19. package/dist/TemplateReviewPanel-B0ar9_zf.js +592 -0
  20. package/dist/TemplateReviewPanel-Dn6X9UmY.cjs +1 -0
  21. package/dist/analytics.cjs +1 -1
  22. package/dist/analytics.d.cts +3 -1
  23. package/dist/analytics.d.ts +3 -1
  24. package/dist/analytics.js +154 -60
  25. package/dist/artifact-integrity.json +135 -0
  26. package/dist/assets-B9ImAi6_.cjs +1 -0
  27. package/dist/assets-DEaz4qsp.js +124 -0
  28. package/dist/batch-BaP6pWDE.cjs +1 -0
  29. package/dist/batch-BfZHN1do.js +220 -0
  30. package/dist/batch-CGyt-b2W.js +273 -0
  31. package/dist/batch-CLpELXBl.cjs +1 -0
  32. package/dist/capabilities-CAh2Nrue.cjs +1 -0
  33. package/dist/capabilities-DskCHs3V.js +69 -0
  34. package/dist/codes.d.cts +2 -0
  35. package/dist/codes.d.ts +2 -0
  36. package/dist/{computed-Bvk0W15F.js → computed-C-4C2S5h.js} +3 -3
  37. package/dist/config-BVsJXSqS.js +842 -0
  38. package/dist/config-D10us76d.cjs +1 -0
  39. package/dist/data-explanation-B8MZRYVS.js +16 -0
  40. package/dist/data-explanation-DE55G30w.cjs +1 -0
  41. package/dist/designer-2bDlcNXQ.js +5136 -0
  42. package/dist/designer-BT7XCdbW.cjs +2 -0
  43. package/dist/designer.cjs +1 -2
  44. package/dist/designer.d.cts +432 -17
  45. package/dist/designer.d.ts +432 -17
  46. package/dist/designer.js +21 -4312
  47. package/dist/drill-ByJviLXS.js +145 -0
  48. package/dist/drill-DYTxuL3A.cjs +1 -0
  49. package/dist/font-loader-B_UkxpzC.cjs +1 -0
  50. package/dist/font-loader-Q3bQjmrI.js +297 -0
  51. package/dist/index.cjs +8 -8
  52. package/dist/index.d.cts +239 -5
  53. package/dist/index.d.ts +239 -5
  54. package/dist/index.js +939 -893
  55. package/dist/json-snapshot-DFb2eWkf.js +1416 -0
  56. package/dist/json-snapshot-WWSGlaHG.cjs +2 -0
  57. package/dist/licenses/_bwip-js_generic-4.11.4.txt +24 -0
  58. package/dist/licenses/_fast-csv_format-4.3.5.txt +22 -0
  59. package/dist/licenses/_fast-csv_parse-4.3.6.txt +22 -0
  60. package/dist/licenses/_pdf-lib_fontkit-1.1.1.txt +326 -0
  61. package/dist/licenses/_pdf-lib_standard-fonts-1.0.0.txt +22 -0
  62. package/dist/licenses/_pdf-lib_upng-1.0.1.txt +22 -0
  63. package/dist/licenses/_types_node-14.18.63.txt +22 -0
  64. package/dist/licenses/_types_pako-2.0.3.txt +22 -0
  65. package/dist/licenses/_types_pegjs-0.10.6.txt +22 -0
  66. package/dist/licenses/archiver-5.3.2.txt +23 -0
  67. package/dist/licenses/archiver-utils-2.1.0.txt +23 -0
  68. package/dist/licenses/archiver-utils-3.0.4.txt +23 -0
  69. package/dist/licenses/async-3.2.6.txt +20 -0
  70. package/dist/licenses/balanced-match-1.0.2.txt +22 -0
  71. package/dist/licenses/base64-js-1.5.1.txt +22 -0
  72. package/dist/licenses/big-integer-1.6.52.txt +25 -0
  73. package/dist/licenses/binary-0.3.0.txt +178 -0
  74. package/dist/licenses/bl-4.1.0.txt +14 -0
  75. package/dist/licenses/bluebird-3.4.7.txt +22 -0
  76. package/dist/licenses/brace-expansion-1.1.21.txt +22 -0
  77. package/dist/licenses/brace-expansion-2.1.7.txt +22 -0
  78. package/dist/licenses/buffer-5.7.1.txt +22 -0
  79. package/dist/licenses/buffer-crc32-0.2.13.txt +20 -0
  80. package/dist/licenses/buffer-indexof-polyfill-1.0.2.txt +23 -0
  81. package/dist/licenses/buffers-0.1.1.txt +140 -0
  82. package/dist/licenses/chainsaw-0.1.0.txt +184 -0
  83. package/dist/licenses/compress-commons-4.1.2.txt +23 -0
  84. package/dist/licenses/concat-map-0.0.1.txt +19 -0
  85. package/dist/licenses/core-util-is-1.0.3.txt +20 -0
  86. package/dist/licenses/crc-32-1.2.2.txt +202 -0
  87. package/dist/licenses/crc32-stream-4.0.3.txt +23 -0
  88. package/dist/licenses/dayjs-1.11.23.txt +22 -0
  89. package/dist/licenses/duplexer2-0.1.4.txt +27 -0
  90. package/dist/licenses/end-of-stream-1.4.5.txt +22 -0
  91. package/dist/licenses/exceljs-4.4.0.txt +23 -0
  92. package/dist/licenses/fast-csv-4.3.6.txt +22 -0
  93. package/dist/licenses/fast-png-6.4.0.txt +22 -0
  94. package/dist/licenses/fs-constants-1.0.0.txt +22 -0
  95. package/dist/licenses/fs.realpath-1.0.0.txt +44 -0
  96. package/dist/licenses/fstream-1.0.12.txt +16 -0
  97. package/dist/licenses/glob-7.2.3.txt +22 -0
  98. package/dist/licenses/graceful-fs-4.2.11.txt +16 -0
  99. package/dist/licenses/ieee754-1.2.1.txt +12 -0
  100. package/dist/licenses/immediate-3.0.6.txt +21 -0
  101. package/dist/licenses/inflight-1.0.6.txt +16 -0
  102. package/dist/licenses/inherits-2.0.4.txt +17 -0
  103. package/dist/licenses/iobuffer-5.4.0.txt +23 -0
  104. package/dist/licenses/isarray-1.0.0.txt +61 -0
  105. package/dist/licenses/jszip-3.10.2.txt +652 -0
  106. package/dist/licenses/lazystream-1.0.1.txt +24 -0
  107. package/dist/licenses/lie-3.3.0.txt +8 -0
  108. package/dist/licenses/listenercount-1.0.1.txt +6 -0
  109. package/dist/licenses/lodash.defaults-4.2.0.txt +48 -0
  110. package/dist/licenses/lodash.difference-4.5.0.txt +48 -0
  111. package/dist/licenses/lodash.escaperegexp-4.1.2.txt +48 -0
  112. package/dist/licenses/lodash.flatten-4.4.0.txt +48 -0
  113. package/dist/licenses/lodash.groupby-4.6.0.txt +48 -0
  114. package/dist/licenses/lodash.isboolean-3.0.3.txt +23 -0
  115. package/dist/licenses/lodash.isequal-4.5.0.txt +48 -0
  116. package/dist/licenses/lodash.isfunction-3.0.9.txt +48 -0
  117. package/dist/licenses/lodash.isnil-4.0.0.txt +23 -0
  118. package/dist/licenses/lodash.isplainobject-4.0.6.txt +48 -0
  119. package/dist/licenses/lodash.isundefined-3.0.1.txt +23 -0
  120. package/dist/licenses/lodash.union-4.6.0.txt +48 -0
  121. package/dist/licenses/lodash.uniq-4.5.0.txt +48 -0
  122. package/dist/licenses/minimatch-3.1.5.txt +16 -0
  123. package/dist/licenses/minimatch-5.1.9.txt +16 -0
  124. package/dist/licenses/minimist-1.2.8.txt +19 -0
  125. package/dist/licenses/mkdirp-0.5.6.txt +22 -0
  126. package/dist/licenses/node-sql-parser-5.4.0.txt +202 -0
  127. package/dist/licenses/normalize-path-3.0.0.txt +22 -0
  128. package/dist/licenses/once-1.4.0.txt +16 -0
  129. package/dist/licenses/pako-1.0.11.txt +22 -0
  130. package/dist/licenses/pako-2.2.0.txt +22 -0
  131. package/dist/licenses/path-is-absolute-1.0.1.txt +22 -0
  132. package/dist/licenses/pdf-lib-1.17.1.txt +22 -0
  133. package/dist/licenses/process-nextick-args-2.0.1.txt +20 -0
  134. package/dist/licenses/readable-stream-2.3.8.txt +48 -0
  135. package/dist/licenses/readable-stream-3.6.2.txt +48 -0
  136. package/dist/licenses/readdir-glob-1.1.3.txt +202 -0
  137. package/dist/licenses/rimraf-2.7.1.txt +16 -0
  138. package/dist/licenses/safe-buffer-5.1.2.txt +22 -0
  139. package/dist/licenses/safe-buffer-5.2.1.txt +22 -0
  140. package/dist/licenses/saxes-5.0.1.txt +397 -0
  141. package/dist/licenses/setimmediate-1.0.5.txt +21 -0
  142. package/dist/licenses/string_decoder-1.1.1.txt +49 -0
  143. package/dist/licenses/string_decoder-1.3.0.txt +49 -0
  144. package/dist/licenses/tar-stream-2.2.0.txt +22 -0
  145. package/dist/licenses/tmp-0.2.7.txt +22 -0
  146. package/dist/licenses/traverse-0.3.9.txt +25 -0
  147. package/dist/licenses/tslib-1.14.1.txt +13 -0
  148. package/dist/licenses/unzipper-0.10.14.txt +26 -0
  149. package/dist/licenses/util-deprecate-1.0.2.txt +25 -0
  150. package/dist/licenses/uuid-11.1.1.txt +10 -0
  151. package/dist/licenses/wrappy-1.0.2.txt +16 -0
  152. package/dist/licenses/xmlchars-2.2.0.txt +19 -0
  153. package/dist/licenses/zip-stream-4.1.1.txt +23 -0
  154. package/dist/matrix-CGRGkn5s.js +112 -0
  155. package/dist/matrix-gEO7ZM_u.cjs +1 -0
  156. package/dist/media-B7vnpD8k.cjs +1 -0
  157. package/dist/media-Y90dHK9z.js +70 -0
  158. package/dist/param-validation-C3HlcLLO.cjs +1 -0
  159. package/dist/param-validation-Do7Eg8Zv.js +181 -0
  160. package/dist/pdf-BwNyeGpt.js +36352 -0
  161. package/dist/pdf-CvvrjPQg.cjs +103 -0
  162. package/dist/pdf.cjs +1 -101
  163. package/dist/pdf.d.cts +18 -3
  164. package/dist/pdf.d.ts +18 -3
  165. package/dist/pdf.js +9 -36579
  166. package/dist/plugin-Ca_XZG3l.js +22 -0
  167. package/dist/{plugin-DzS6pxTA.cjs → plugin-DHO7X8z2.cjs} +1 -1
  168. package/dist/prepared-CFy9B75C.cjs +1 -0
  169. package/dist/prepared-ajM-H-9B.js +69 -0
  170. package/dist/progress-B0ctFpKf.cjs +1 -0
  171. package/dist/progress-D-OTpEav.js +52 -0
  172. package/dist/{record-bindings-D-5jQlTj.js → record-bindings-Do_b3h4V.js} +1 -1
  173. package/dist/{region-binding-workflow-CcUq8W2Q.js → region-binding-workflow-BMhK_TjP.js} +1 -1
  174. package/dist/{region-binding-workflow-BzfbxRiR.cjs → region-binding-workflow-DIYJdCUr.cjs} +1 -1
  175. package/dist/{report-params-B44imUd4.js → report-params-B1RzkhJj.js} +1 -1
  176. package/dist/{report-params-SJfhKgaX.cjs → report-params-WDGrA4oP.cjs} +1 -1
  177. package/dist/sbom.cdx.json +3982 -0
  178. package/dist/server/node.d.cts +66 -12
  179. package/dist/server/node.d.ts +66 -12
  180. package/dist/server-node.cjs +1 -1
  181. package/dist/server-node.js +405 -381
  182. package/dist/server.cjs +1 -1
  183. package/dist/server.d.cts +878 -15
  184. package/dist/server.d.ts +878 -15
  185. package/dist/server.js +1034 -534
  186. package/dist/sha256-ArEYjaTI.cjs +1 -0
  187. package/dist/sha256-DPEuJ3nh.js +155 -0
  188. package/dist/style.css +1 -1
  189. package/dist/template-bindings-C2SpvsMU.js +58 -0
  190. package/dist/template-bindings-CEtWyiLX.cjs +1 -0
  191. package/dist/template-catalog-FJE_c9Qe.cjs +1 -0
  192. package/dist/template-catalog-j2B1MJlL.js +414 -0
  193. package/dist/template-fragments-BGbQLGlV.js +187 -0
  194. package/dist/template-fragments-DcKeiylI.cjs +1 -0
  195. package/dist/template-outline-BwRV_eRo.cjs +1 -0
  196. package/dist/template-outline-cnWfT_LK.js +88 -0
  197. package/dist/{template-registry-BjE1VS6g.js → template-registry-BtaKPELV.js} +364 -201
  198. package/dist/template-registry-Co1zPq5e.cjs +1 -0
  199. package/dist/textwrap-CWHyzkBH.cjs +4 -0
  200. package/dist/textwrap-DE1kgcJB.js +110 -0
  201. package/dist/{tree-CqcQ99NM.js → tree-CjVZLRw7.js} +1 -1
  202. package/dist/{useLocalDraft-C07SYRnC.js → useLocalDraft-BnhcxXk_.js} +1 -1
  203. package/dist/{useLocalDraft-Yiw1wFgI.cjs → useLocalDraft-CioIfDb6.cjs} +1 -1
  204. package/dist/vue/async.d.cts +190 -15
  205. package/dist/vue/async.d.ts +190 -15
  206. package/dist/vue/index.d.cts +274 -24
  207. package/dist/vue/index.d.ts +274 -24
  208. package/dist/vue-async.cjs +1 -1
  209. package/dist/vue-async.js +5 -5
  210. package/dist/vue.cjs +1 -1
  211. package/dist/vue.js +90 -81
  212. package/dist/{workbook-session-DNa2RHNG.cjs → workbook-session-Bjv1YCRK.cjs} +18 -18
  213. package/dist/{workbook-session-BPb3TMnT.js → workbook-session-BvToI-Fd.js} +5440 -5288
  214. package/dist/worker.cjs +1 -1
  215. package/dist/worker.d.cts +66 -12
  216. package/dist/worker.d.ts +66 -12
  217. package/dist/worker.js +61 -56
  218. package/dist/xlsx-node.cjs +34 -34
  219. package/dist/xlsx-node.js +878 -870
  220. package/dist/xlsx.cjs +3 -4
  221. package/dist/xlsx.d.cts +22 -10
  222. package/dist/xlsx.d.ts +22 -10
  223. package/dist/xlsx.js +261 -253
  224. package/package.json +2 -2
  225. package/dist/ExcelBindingWizard-CeAf4QSE.js +0 -1465
  226. package/dist/ExcelBindingWizard-y0mT-AHR.cjs +0 -1
  227. package/dist/ParamEditor-BLaE5q5W.js +0 -522
  228. package/dist/ParamEditor-MBBC7lUE.cjs +0 -1
  229. package/dist/ReportBatchPanel-Fp1ePFag.cjs +0 -1
  230. package/dist/ReportPreview-BN6fk7Wz.cjs +0 -6
  231. package/dist/ReportPreview-D2Jkyh1U.js +0 -4243
  232. package/dist/ReportTemplateLibrary-5fk5CQBO.cjs +0 -1
  233. package/dist/RuleEditor-ChRzNQuF.cjs +0 -1
  234. package/dist/RuleEditor-DzAmW5YH.js +0 -2024
  235. package/dist/TemplateReviewPanel-BKofGrV9.js +0 -222
  236. package/dist/TemplateReviewPanel-DwtOcLue.cjs +0 -1
  237. package/dist/assets-C2U-e-Sz.cjs +0 -4
  238. package/dist/assets-Q0wUwNrV.js +0 -217
  239. package/dist/batch-Bt3Fd27Z.cjs +0 -1
  240. package/dist/batch-mRqhhhjt.js +0 -364
  241. package/dist/capabilities-CK_7hizc.js +0 -63
  242. package/dist/capabilities-CsZ-pNHR.cjs +0 -1
  243. package/dist/config-Bb7RiIO5.cjs +0 -1
  244. package/dist/config-XVwG87IA.js +0 -529
  245. package/dist/matrix-DVyWiYsd.cjs +0 -1
  246. package/dist/matrix-yZsGnldA.js +0 -227
  247. package/dist/page-window-index-CIuT4BAv.js +0 -43
  248. package/dist/page-window-index-DEjnM6IB.cjs +0 -1
  249. package/dist/param-validation-BlHHXs6u.js +0 -153
  250. package/dist/param-validation-DCK039V1.cjs +0 -1
  251. package/dist/plugin-D4wizDXB.js +0 -22
  252. package/dist/progress-7OSZbFok.js +0 -39
  253. package/dist/progress-BnLiS5eH.cjs +0 -1
  254. package/dist/task-events-DQ276fn2.cjs +0 -1
  255. package/dist/task-events-Dpsvf_t2.js +0 -47
  256. package/dist/template-registry-D3SjENi6.cjs +0 -1
  257. package/dist/template-review-DGwWOoCv.cjs +0 -2
  258. package/dist/template-review-PgEe_Wr9.js +0 -1742
  259. package/dist/validate-BJ5HIWY8.cjs +0 -1
  260. package/dist/validate-DbgEM1Hh.js +0 -163
@@ -0,0 +1,145 @@
1
+ import { g as w, r as j, e as K } from "./batch-CGyt-b2W.js";
2
+ import { r as D } from "./grid-geometry-BNptEcMm.js";
3
+ function m(e) {
4
+ return Number.isFinite(e) ? Math.max(0, e) : 0;
5
+ }
6
+ function _(e, t = 0) {
7
+ const r = e.length, n = m(t), o = new Array(r + 1);
8
+ o[0] = 0;
9
+ for (let s = 0; s < r; s++)
10
+ o[s + 1] = o[s] + m(e[s] ?? 0) + n;
11
+ const u = o[r];
12
+ function l(s) {
13
+ let i = 0, d = r - 1, g = 0;
14
+ for (; i <= d; ) {
15
+ const p = i + d >>> 1;
16
+ o[p] <= s ? (g = p, i = p + 1) : d = p - 1;
17
+ }
18
+ return g;
19
+ }
20
+ function a(s, i, d = 1) {
21
+ if (r === 0) return { start: 0, end: -1, padTopPx: 0, padBottomPx: 0 };
22
+ const g = Math.floor(m(d)), p = m(i), v = l(p), I = Math.max(0, v - g), M = p + m(s);
23
+ let y = v, b = r - 1, S = r - 1;
24
+ for (; y <= b; ) {
25
+ const h = y + b >>> 1;
26
+ o[h + 1] < M ? y = h + 1 : (S = h, b = h - 1);
27
+ }
28
+ const x = Math.min(r - 1, S + g);
29
+ return {
30
+ start: I,
31
+ end: x,
32
+ padTopPx: o[I],
33
+ padBottomPx: Math.max(0, u - o[x + 1])
34
+ };
35
+ }
36
+ return {
37
+ totalHeightPx: u,
38
+ pageAt: l,
39
+ offsetAt: (s) => o[Math.max(0, Math.min(r, Math.floor(s)))] ?? 0,
40
+ window: a
41
+ };
42
+ }
43
+ class c extends Error {
44
+ constructor(t) {
45
+ super(`Report drill: ${t}`), this.code = t, this.name = "ReportDrillError";
46
+ }
47
+ }
48
+ function f(e) {
49
+ return typeof e == "string" && e.trim().length > 0 && e.length <= 256;
50
+ }
51
+ function O(e) {
52
+ if (typeof e == "number" && Number.isFinite(e) || typeof e == "boolean") return String(e);
53
+ if (typeof e == "string" && e.length > 0 && e.length <= 4096) return e;
54
+ throw new c("missing-value");
55
+ }
56
+ function E(e, t) {
57
+ return Object.getOwnPropertyDescriptor(e, t)?.value;
58
+ }
59
+ function R(e) {
60
+ if (!Array.isArray(e) || e.length > 64) throw new c("config");
61
+ const t = /* @__PURE__ */ new Set();
62
+ for (const r of e) {
63
+ if (!r || !f(r.id) || !f(r.label) || !r.target || !f(r.target.field) || t.has(r.id)) throw new c("config");
64
+ t.add(r.id);
65
+ const n = r.target;
66
+ if (n.datasetId !== void 0 && !f(n.datasetId) || n.reportScope !== void 0 && !f(n.reportScope)) throw new c("config");
67
+ if (n.roles !== void 0 && (!Array.isArray(n.roles) || n.roles.length > 16 || n.roles.some((o) => !f(o)))) throw new c("config");
68
+ z(r.params);
69
+ }
70
+ }
71
+ function z(e) {
72
+ if (e !== void 0) {
73
+ if (!e || typeof e != "object" || Array.isArray(e) || Object.keys(e).length > 32) throw new c("config");
74
+ for (const [t, r] of Object.entries(e)) {
75
+ if (!f(t) || ["__proto__", "constructor", "prototype"].includes(t) || !r || typeof r != "object") throw new c("config");
76
+ if ("value" in r)
77
+ try {
78
+ O(r.value);
79
+ } catch {
80
+ throw new c("config");
81
+ }
82
+ else if (!["value", "rowKey", "query", "field"].includes(r.from) || (r.from === "query" || r.from === "field") && !f(r.field)) throw new c("config");
83
+ }
84
+ }
85
+ }
86
+ function A(e, t, r) {
87
+ const { target: n } = r, o = t.source?.datasetId ?? t.component.table?.source?.datasetId;
88
+ return (t.source?.field ?? t.table?.columnKey) === n.field && (n.datasetId === void 0 || o === n.datasetId) && (n.reportScope === void 0 || e.pages[t.address.pageIndex]?.meta?.reportScope === n.reportScope) && (n.roles ? n.roles.includes(t.table?.role ?? "") : t.table?.role !== "header");
89
+ }
90
+ function k(e, t, r) {
91
+ R(r);
92
+ const n = w(e, t);
93
+ return n ? r.filter((o) => A(e, n, o)) : [];
94
+ }
95
+ function P(e, t, r, n) {
96
+ if ("value" in e) return e.value;
97
+ switch (e.from) {
98
+ case "value":
99
+ return r.value;
100
+ case "rowKey":
101
+ return r.source?.rowKey;
102
+ case "query":
103
+ return E(n, e.field);
104
+ case "field": {
105
+ const o = r.component.table?.columnKeys.indexOf(e.field) ?? -1;
106
+ return o < 0 ? void 0 : w(t, { ...r.address, columnIndex: o })?.value;
107
+ }
108
+ }
109
+ }
110
+ function B(e, t, r, n = {}) {
111
+ R([r]);
112
+ const o = w(e, t);
113
+ if (!o || !A(e, o, r)) throw new c("target");
114
+ const u = Object.fromEntries(Object.entries(r.params ?? {}).map(([s, i]) => [s, O(P(i, e, o, n))])), l = Object.entries(n);
115
+ if (l.length > 128 || l.some(([s, i]) => !f(s) || typeof i != "string" || i.length > 4096)) throw new c("config");
116
+ const a = e.pages[t.pageIndex]?.meta?.reportScope;
117
+ return Object.freeze({ actionId: r.id, params: Object.freeze(u), returnState: Object.freeze({
118
+ params: Object.freeze(Object.fromEntries(l)),
119
+ address: Object.freeze({ ...t }),
120
+ ...typeof a == "string" ? { reportScope: a } : {},
121
+ ...o.source ? { source: Object.freeze({ sourceScope: o.source.sourceScope, datasetId: o.source.datasetId, rowKey: o.source.rowKey, field: o.source.field }) } : {}
122
+ }) });
123
+ }
124
+ function N(e, t) {
125
+ if (!t.source) return e.pages[t.address.pageIndex]?.meta?.reportScope === t.reportScope && w(e, t.address) ? { ...t.address } : null;
126
+ const r = K(e), n = j({ address: t.address, source: t.source });
127
+ for (const [o, u] of e.pages.entries())
128
+ if (!(t.reportScope !== void 0 && u.meta?.reportScope !== t.reportScope)) {
129
+ for (const [l, a] of u.components.entries())
130
+ if (a.grid)
131
+ for (const s of D(a.grid, a.widthMm, a.heightMm).cells) {
132
+ const i = { pageIndex: o, componentIndex: l, rowIndex: s.ri, columnIndex: s.ci }, d = r(i);
133
+ if (d?.source && j(d) === n) return i;
134
+ }
135
+ }
136
+ return null;
137
+ }
138
+ export {
139
+ c as R,
140
+ B as a,
141
+ _ as c,
142
+ k as m,
143
+ N as r,
144
+ R as v
145
+ };
@@ -0,0 +1 @@
1
+ "use strict";const g=require("./batch-BaP6pWDE.cjs"),D=require("./grid-geometry-CZ_cYB6O.cjs");function m(e){return Number.isFinite(e)?Math.max(0,e):0}function C(e,r=0){const t=e.length,n=m(r),o=new Array(t+1);o[0]=0;for(let i=0;i<t;i++)o[i+1]=o[i]+m(e[i]??0)+n;const u=o[t];function f(i){let c=0,a=t-1,h=0;for(;c<=a;){const p=c+a>>>1;o[p]<=i?(h=p,c=p+1):a=p-1}return h}function l(i,c,a=1){if(t===0)return{start:0,end:-1,padTopPx:0,padBottomPx:0};const h=Math.floor(m(a)),p=m(c),v=f(p),x=Math.max(0,v-h),A=p+m(i);let y=v,b=t-1,I=t-1;for(;y<=b;){const w=y+b>>>1;o[w+1]<A?y=w+1:(I=w,b=w-1)}const S=Math.min(t-1,I+h);return{start:x,end:S,padTopPx:o[x],padBottomPx:Math.max(0,u-o[S+1])}}return{totalHeightPx:u,pageAt:f,offsetAt:i=>o[Math.max(0,Math.min(t,Math.floor(i)))]??0,window:l}}class s extends Error{constructor(r){super(`Report drill: ${r}`),this.code=r,this.name="ReportDrillError"}}function d(e){return typeof e=="string"&&e.trim().length>0&&e.length<=256}function j(e){if(typeof e=="number"&&Number.isFinite(e)||typeof e=="boolean")return String(e);if(typeof e=="string"&&e.length>0&&e.length<=4096)return e;throw new s("missing-value")}function M(e,r){return Object.getOwnPropertyDescriptor(e,r)?.value}function R(e){if(!Array.isArray(e)||e.length>64)throw new s("config");const r=new Set;for(const t of e){if(!t||!d(t.id)||!d(t.label)||!t.target||!d(t.target.field)||r.has(t.id))throw new s("config");r.add(t.id);const n=t.target;if(n.datasetId!==void 0&&!d(n.datasetId)||n.reportScope!==void 0&&!d(n.reportScope))throw new s("config");if(n.roles!==void 0&&(!Array.isArray(n.roles)||n.roles.length>16||n.roles.some(o=>!d(o))))throw new s("config");E(t.params)}}function E(e){if(e!==void 0){if(!e||typeof e!="object"||Array.isArray(e)||Object.keys(e).length>32)throw new s("config");for(const[r,t]of Object.entries(e)){if(!d(r)||["__proto__","constructor","prototype"].includes(r)||!t||typeof t!="object")throw new s("config");if("value"in t)try{j(t.value)}catch{throw new s("config")}else if(!["value","rowKey","query","field"].includes(t.from)||(t.from==="query"||t.from==="field")&&!d(t.field))throw new s("config")}}}function O(e,r,t){const{target:n}=t,o=r.source?.datasetId??r.component.table?.source?.datasetId;return(r.source?.field??r.table?.columnKey)===n.field&&(n.datasetId===void 0||o===n.datasetId)&&(n.reportScope===void 0||e.pages[r.address.pageIndex]?.meta?.reportScope===n.reportScope)&&(n.roles?n.roles.includes(r.table?.role??""):r.table?.role!=="header")}function K(e,r,t){R(t);const n=g.getReportCellContext(e,r);return n?t.filter(o=>O(e,n,o)):[]}function q(e,r,t,n){if("value"in e)return e.value;switch(e.from){case"value":return t.value;case"rowKey":return t.source?.rowKey;case"query":return M(n,e.field);case"field":{const o=t.component.table?.columnKeys.indexOf(e.field)??-1;return o<0?void 0:g.getReportCellContext(r,{...t.address,columnIndex:o})?.value}}}function P(e,r,t,n={}){R([t]);const o=g.getReportCellContext(e,r);if(!o||!O(e,o,t))throw new s("target");const u=Object.fromEntries(Object.entries(t.params??{}).map(([i,c])=>[i,j(q(c,e,o,n))])),f=Object.entries(n);if(f.length>128||f.some(([i,c])=>!d(i)||typeof c!="string"||c.length>4096))throw new s("config");const l=e.pages[r.pageIndex]?.meta?.reportScope;return Object.freeze({actionId:t.id,params:Object.freeze(u),returnState:Object.freeze({params:Object.freeze(Object.fromEntries(f)),address:Object.freeze({...r}),...typeof l=="string"?{reportScope:l}:{},...o.source?{source:Object.freeze({sourceScope:o.source.sourceScope,datasetId:o.source.datasetId,rowKey:o.source.rowKey,field:o.source.field})}:{}})})}function z(e,r){if(!r.source)return e.pages[r.address.pageIndex]?.meta?.reportScope===r.reportScope&&g.getReportCellContext(e,r.address)?{...r.address}:null;const t=g.createReportCellResolver(e),n=g.reportCellEditKey({address:r.address,source:r.source});for(const[o,u]of e.pages.entries())if(!(r.reportScope!==void 0&&u.meta?.reportScope!==r.reportScope)){for(const[f,l]of u.components.entries())if(l.grid)for(const i of D.resolveGridLayout(l.grid,l.widthMm,l.heightMm).cells){const c={pageIndex:o,componentIndex:f,rowIndex:i.ri,columnIndex:i.ci},a=t(c);if(a?.source&&g.reportCellEditKey(a)===n)return c}}return null}exports.ReportDrillError=s;exports.createPageWindowIndex=C;exports.createReportDrillRequest=P;exports.matchReportDrillActions=K;exports.resolveReportDrillReturn=z;exports.validateReportDrillActions=R;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=new Map;let b=0,d={maxFonts:8,maxBytes:64*1024*1024,maxFontBytes:24*1024*1024};function O(){for(;f.size>d.maxFonts||b>d.maxBytes;){const t=f.keys().next().value;b-=f.get(t).byteLength,f.delete(t)}}function W(t){const e={...d,...t};if(!Object.values(e).every(n=>Number.isSafeInteger(n)&&n>0))throw new Error("字体缓存预算应为正整数字节/数量");d=e;for(const[n,a]of f)a.byteLength>d.maxFontBytes&&B(n);O()}function p(){return{fonts:f.size,bytes:b,...d}}function j(t){const e=f.get(t);return e&&(f.delete(t),f.set(t,e)),e}function B(t){const e=f.get(t);e&&(b-=e.byteLength),f.delete(t)}function q(){f.clear(),b=0}function H(t,e){B(t),!(e.byteLength>d.maxBytes||e.byteLength>d.maxFontBytes)&&(f.set(t,e),b+=e.byteLength,O())}const V="mach-report-fonts",u="fonts";function $(){return new Promise((t,e)=>{const n=indexedDB.open(V,1);n.onupgradeneeded=()=>{n.result.objectStoreNames.contains(u)||n.result.createObjectStore(u)},n.onsuccess=()=>t(n.result),n.onerror=()=>e(n.error)})}function M(t){if(t instanceof Uint8Array)return{bytes:t,accessedAt:0};const e=t;return e?.bytes instanceof Uint8Array&&Number.isFinite(e.accessedAt)?e:void 0}async function C(t,e){if(typeof indexedDB>"u")return t;let n;try{return n=await $(),await e(n)}catch{return t}finally{n?.close()}}function G(t){return C(null,e=>new Promise((n,a)=>{const r=e.transaction(u,"readwrite"),o=r.objectStore(u),i=o.get(t);let c=null;i.onsuccess=()=>{const s=M(i.result);s&&s.bytes.byteLength<=p().maxFontBytes?(c=s.bytes,o.put({bytes:s.bytes,accessedAt:Date.now()},t)):i.result!==void 0&&o.delete(t)},r.oncomplete=()=>n(c),r.onerror=()=>a(r.error),r.onabort=()=>a(r.error)}))}function J(t,e,n,a){const r=p(),o=e.filter(s=>s.key!==n);t.delete(n),a.byteLength<=Math.min(r.maxFontBytes,r.maxBytes)&&o.unshift({key:n,bytes:a.byteLength,accessedAt:Date.now()}),o.sort((s,h)=>h.accessedAt-s.accessedAt);let i=0,c=0;for(const s of o){if(c>=r.maxFonts||i+s.bytes>r.maxBytes||s.bytes>r.maxFontBytes){t.delete(s.key);continue}i+=s.bytes,c++,s.key===n&&t.put({bytes:a,accessedAt:s.accessedAt},n)}}function _(t,e){return C(void 0,n=>new Promise((a,r)=>{const o=n.transaction(u,"readwrite"),i=o.objectStore(u),c=i.openCursor(),s=[];c.onsuccess=()=>{const h=c.result;if(!h){J(i,s,t,e);return}const x=M(h.value);x?s.push({key:h.key,bytes:x.bytes.byteLength,accessedAt:x.accessedAt}):h.delete(),h.continue()},o.oncomplete=()=>a(),o.onerror=()=>r(o.error),o.onabort=()=>r(o.error)}))}function D(t){return C(void 0,e=>new Promise((n,a)=>{const r=e.transaction(u,"readwrite"),o=r.objectStore(u);t===void 0?o.clear():o.delete(t),r.oncomplete=()=>n(),r.onerror=()=>a(r.error),r.onabort=()=>a(r.error)}))}let L=0,S=0,v=Promise.resolve();const g=new Map;async function N(t){l.set(t,(l.get(t)??0)+1),B(t),w.delete(t);const e=g.get(t),n=(async()=>{await v,await e,await y.get(t),await D(t)})();g.set(t,n);try{await n}finally{g.get(t)===n&&g.delete(t)}}async function I(){L++,q(),w.clear(),l.clear();const t=v,e=(async()=>{await t,await Promise.all(y.values()),await D()})();v=e.catch(()=>{}),await e}const l=new Map,y=new Map,w=new Map,E=new Set;function k(){!S&&!E.size&&l.clear()}const T=new WeakMap;function K(t){const e=new TextDecoder().decode(t.subarray(0,256));return/^\s*(?:\uFEFF)?\s*<(?:!doctype\s+html|html|head|body)(?:\s|>)/i.test(e)}function R(t){if(t.byteLength===0)throw new Error("字体文件为空");if(K(t))throw new Error("字体 URL 返回 HTML 页面(可能是 SPA 路由回退),不是字体文件")}function Q(t){const e=T.get(t);if(e)return e;const n=(async()=>{const a=String.fromCharCode(...t.subarray(0,4));if(!["\0\0\0","true","OTTO","wOFF","wOF2","ttcf"].includes(a))throw new Error("文件内容不是支持的 TTF/OTF/WOFF 字体(可能返回了 JSON 或文本)");const{default:r}=await Promise.resolve().then(()=>require("./pdf-CvvrjPQg.cjs")).then(i=>i.fontkit_es),o=r.create(t);if(!Number.isFinite(o.unitsPerEm)||o.unitsPerEm<=0||!o.characterSet?.length||!o.numGlyphs)throw new Error("字体结构无效或不含可嵌入的单字体;请提供有效的 TTF/OTF/WOFF 文件")})();return T.set(t,n),n}function A(t,e,n=!1){const a=n?"字体加载超时,请检查网络或字体服务":e instanceof Error?e.message:String(e);return Object.assign(new Error(`PDF 字体 ${JSON.stringify(t)} 加载失败:${a}`),{cause:e})}function P(t,e){if(t>e)throw new Error(`字体文件超过单字体下载预算(${e}字节)`)}async function X(t,e,n){const a=Number(t.headers?.get("content-length"));try{Number.isFinite(a)&&P(a,e)}catch(r){throw t.body?.cancel(r).catch(()=>{}),r}if(!t.body){const r=new Uint8Array(await F(t.arrayBuffer(),n));return P(r.byteLength,e),r}return U(t.body,e,n)}async function U(t,e,n){const a=t.getReader(),r=[];let o=0;try{for(;;){const s=await F(a.read(),n);if(s.done)break;o+=s.value.byteLength,P(o,e),r.push(s.value)}const i=new Uint8Array(o);let c=0;for(const s of r)i.set(s,c),c+=s.byteLength;return i}catch(i){throw a.cancel(i).catch(()=>{}),i}finally{a.releaseLock()}}async function Y(t,e,n){if(t[0]!==31||t[1]!==139)return t;if(typeof DecompressionStream>"u")throw new Error("当前环境不支持 gzip 字体解压,请使用未压缩的字体 URL 或支持 DecompressionStream 的浏览器 / Node 环境");const r=new ReadableStream({start(o){o.enqueue(t),o.close()}}).pipeThrough(new DecompressionStream("gzip"));return U(r,e,n)}async function Z(t){const e=new AbortController;let n=!1;const a=setTimeout(()=>{n=!0,e.abort()},15e3);try{const r=await fetch(t,{signal:e.signal});if(!r.ok)throw new Error(`字体请求返回 HTTP ${r.status}`);if(/text\/html|application\/xhtml\+xml/i.test(r.headers?.get("content-type")??""))throw new Error("字体 URL 返回 HTML 页面(可能是 SPA 路由回退),不是字体文件");const o=p().maxFontBytes,i=await X(r,o,e.signal),c=await Y(i,o,e.signal);return R(c),{bytes:c,fromCache:!1}}catch(r){throw e.abort(),A(t,r,n)}finally{clearTimeout(a)}}async function tt(t){await v,await g.get(t);const e=await G(t);if(e)try{return R(e),{bytes:e,fromCache:!0}}catch{}return Z(t)}function et(t){const e=w.get(t);if(e)return e;const n=tt(t);w.set(t,n),E.add(n);const a=()=>{w.get(t)===n&&w.delete(t),E.delete(n),k()};return n.then(a,a),n}async function nt(t,e,n,a){if((l.get(t)??0)!==n||L!==a)return;H(t,e);const r=y.get(t);if(r){await r;return}const o=_(t,e);y.set(t,o),await o,y.get(t)===o&&y.delete(t)}function m(t){return t.reason??new DOMException("字体加载已取消","AbortError")}function F(t,e){return e?e.aborted?Promise.reject(m(e)):new Promise((n,a)=>{const r=()=>{e.removeEventListener("abort",r),a(m(e))};e.addEventListener("abort",r,{once:!0}),t.then(o=>{e.removeEventListener("abort",r),n(o)},o=>{e.removeEventListener("abort",r),a(o)})}):t}async function rt(t,e,n,a,r){try{return await F(Q(e.bytes),n.signal),e.bytes}catch(o){if(n.signal?.aborted)throw m(n.signal);if((l.get(t)??0)!==a||L!==r)throw A(t,o);if(await N(t),e.fromCache)return await z(t,n);throw A(t,o)}}async function z(t,e={}){if(e.signal?.aborted)throw m(e.signal);const n=l.get(t)??0,a=L,r=j(t);if(r&&!e.strict)return r;const o=r?void 0:et(t);S++;try{const i=r?{bytes:r,fromCache:!0}:await F(o,e.signal),c=e.strict?await rt(t,i,e,n,a):i.bytes;if(e.signal?.aborted)throw m(e.signal);return r||await F(nt(t,c,n,a),e.signal),c}catch(i){if(e.signal?.aborted)throw m(e.signal);if(e.strict)throw i;return null}finally{S--,k()}}exports.clearFontCache=I;exports.configureFontCache=W;exports.getFontCacheStats=p;exports.invalidateFontCache=N;exports.loadFontWithCache=z;
@@ -0,0 +1,297 @@
1
+ const f = /* @__PURE__ */ new Map();
2
+ let b = 0, d = { maxFonts: 8, maxBytes: 64 * 1024 * 1024, maxFontBytes: 24 * 1024 * 1024 };
3
+ function D() {
4
+ for (; f.size > d.maxFonts || b > d.maxBytes; ) {
5
+ const t = f.keys().next().value;
6
+ b -= f.get(t).byteLength, f.delete(t);
7
+ }
8
+ }
9
+ function nt(t) {
10
+ const e = { ...d, ...t };
11
+ if (!Object.values(e).every((n) => Number.isSafeInteger(n) && n > 0)) throw new Error("字体缓存预算应为正整数字节/数量");
12
+ d = e;
13
+ for (const [n, a] of f) a.byteLength > d.maxFontBytes && P(n);
14
+ D();
15
+ }
16
+ function B() {
17
+ return { fonts: f.size, bytes: b, ...d };
18
+ }
19
+ function U(t) {
20
+ const e = f.get(t);
21
+ return e && (f.delete(t), f.set(t, e)), e;
22
+ }
23
+ function P(t) {
24
+ const e = f.get(t);
25
+ e && (b -= e.byteLength), f.delete(t);
26
+ }
27
+ function z() {
28
+ f.clear(), b = 0;
29
+ }
30
+ function W(t, e) {
31
+ P(t), !(e.byteLength > d.maxBytes || e.byteLength > d.maxFontBytes) && (f.set(t, e), b += e.byteLength, D());
32
+ }
33
+ const j = "mach-report-fonts", u = "fonts";
34
+ function H() {
35
+ return new Promise((t, e) => {
36
+ const n = indexedDB.open(j, 1);
37
+ n.onupgradeneeded = () => {
38
+ n.result.objectStoreNames.contains(u) || n.result.createObjectStore(u);
39
+ }, n.onsuccess = () => t(n.result), n.onerror = () => e(n.error);
40
+ });
41
+ }
42
+ function M(t) {
43
+ if (t instanceof Uint8Array) return { bytes: t, accessedAt: 0 };
44
+ const e = t;
45
+ return e?.bytes instanceof Uint8Array && Number.isFinite(e.accessedAt) ? e : void 0;
46
+ }
47
+ async function T(t, e) {
48
+ if (typeof indexedDB > "u") return t;
49
+ let n;
50
+ try {
51
+ return n = await H(), await e(n);
52
+ } catch {
53
+ return t;
54
+ } finally {
55
+ n?.close();
56
+ }
57
+ }
58
+ function V(t) {
59
+ return T(null, (e) => new Promise((n, a) => {
60
+ const r = e.transaction(u, "readwrite"), o = r.objectStore(u), i = o.get(t);
61
+ let c = null;
62
+ i.onsuccess = () => {
63
+ const s = M(i.result);
64
+ s && s.bytes.byteLength <= B().maxFontBytes ? (c = s.bytes, o.put({ bytes: s.bytes, accessedAt: Date.now() }, t)) : i.result !== void 0 && o.delete(t);
65
+ }, r.oncomplete = () => n(c), r.onerror = () => a(r.error), r.onabort = () => a(r.error);
66
+ }));
67
+ }
68
+ function $(t, e, n, a) {
69
+ const r = B(), o = e.filter((s) => s.key !== n);
70
+ t.delete(n), a.byteLength <= Math.min(r.maxFontBytes, r.maxBytes) && o.unshift({ key: n, bytes: a.byteLength, accessedAt: Date.now() }), o.sort((s, h) => h.accessedAt - s.accessedAt);
71
+ let i = 0, c = 0;
72
+ for (const s of o) {
73
+ if (c >= r.maxFonts || i + s.bytes > r.maxBytes || s.bytes > r.maxFontBytes) {
74
+ t.delete(s.key);
75
+ continue;
76
+ }
77
+ i += s.bytes, c++, s.key === n && t.put({ bytes: a, accessedAt: s.accessedAt }, n);
78
+ }
79
+ }
80
+ function q(t, e) {
81
+ return T(void 0, (n) => new Promise((a, r) => {
82
+ const o = n.transaction(u, "readwrite"), i = o.objectStore(u), c = i.openCursor(), s = [];
83
+ c.onsuccess = () => {
84
+ const h = c.result;
85
+ if (!h) {
86
+ $(i, s, t, e);
87
+ return;
88
+ }
89
+ const L = M(h.value);
90
+ L ? s.push({ key: h.key, bytes: L.bytes.byteLength, accessedAt: L.accessedAt }) : h.delete(), h.continue();
91
+ }, o.oncomplete = () => a(), o.onerror = () => r(o.error), o.onabort = () => r(o.error);
92
+ }));
93
+ }
94
+ function C(t) {
95
+ return T(void 0, (e) => new Promise((n, a) => {
96
+ const r = e.transaction(u, "readwrite"), o = r.objectStore(u);
97
+ t === void 0 ? o.clear() : o.delete(t), r.oncomplete = () => n(), r.onerror = () => a(r.error), r.onabort = () => a(r.error);
98
+ }));
99
+ }
100
+ let p = 0, x = 0, v = Promise.resolve();
101
+ const g = /* @__PURE__ */ new Map();
102
+ async function G(t) {
103
+ y.set(t, (y.get(t) ?? 0) + 1), P(t), l.delete(t);
104
+ const e = g.get(t), n = (async () => {
105
+ await v, await e, await w.get(t), await C(t);
106
+ })();
107
+ g.set(t, n);
108
+ try {
109
+ await n;
110
+ } finally {
111
+ g.get(t) === n && g.delete(t);
112
+ }
113
+ }
114
+ async function rt() {
115
+ p++, z(), l.clear(), y.clear();
116
+ const t = v, e = (async () => {
117
+ await t, await Promise.all(w.values()), await C();
118
+ })();
119
+ v = e.catch(() => {
120
+ }), await e;
121
+ }
122
+ const y = /* @__PURE__ */ new Map(), w = /* @__PURE__ */ new Map(), l = /* @__PURE__ */ new Map(), E = /* @__PURE__ */ new Set();
123
+ function N() {
124
+ !x && !E.size && y.clear();
125
+ }
126
+ const O = /* @__PURE__ */ new WeakMap();
127
+ function J(t) {
128
+ const e = new TextDecoder().decode(t.subarray(0, 256));
129
+ return /^\s*(?:\uFEFF)?\s*<(?:!doctype\s+html|html|head|body)(?:\s|>)/i.test(e);
130
+ }
131
+ function k(t) {
132
+ if (t.byteLength === 0) throw new Error("字体文件为空");
133
+ if (J(t)) throw new Error("字体 URL 返回 HTML 页面(可能是 SPA 路由回退),不是字体文件");
134
+ }
135
+ function I(t) {
136
+ const e = O.get(t);
137
+ if (e) return e;
138
+ const n = (async () => {
139
+ const a = String.fromCharCode(...t.subarray(0, 4));
140
+ if (!["\0\0\0", "true", "OTTO", "wOFF", "wOF2", "ttcf"].includes(a))
141
+ throw new Error("文件内容不是支持的 TTF/OTF/WOFF 字体(可能返回了 JSON 或文本)");
142
+ const { default: r } = await import("./pdf-BwNyeGpt.js").then((i) => i.f), o = r.create(t);
143
+ if (!Number.isFinite(o.unitsPerEm) || o.unitsPerEm <= 0 || !o.characterSet?.length || !o.numGlyphs)
144
+ throw new Error("字体结构无效或不含可嵌入的单字体;请提供有效的 TTF/OTF/WOFF 文件");
145
+ })();
146
+ return O.set(t, n), n;
147
+ }
148
+ function S(t, e, n = !1) {
149
+ const a = n ? "字体加载超时,请检查网络或字体服务" : e instanceof Error ? e.message : String(e);
150
+ return Object.assign(new Error(`PDF 字体 ${JSON.stringify(t)} 加载失败:${a}`), { cause: e });
151
+ }
152
+ function A(t, e) {
153
+ if (t > e) throw new Error(`字体文件超过单字体下载预算(${e}字节)`);
154
+ }
155
+ async function _(t, e, n) {
156
+ const a = Number(t.headers?.get("content-length"));
157
+ try {
158
+ Number.isFinite(a) && A(a, e);
159
+ } catch (r) {
160
+ throw t.body?.cancel(r).catch(() => {
161
+ }), r;
162
+ }
163
+ if (!t.body) {
164
+ const r = new Uint8Array(await F(t.arrayBuffer(), n));
165
+ return A(r.byteLength, e), r;
166
+ }
167
+ return R(t.body, e, n);
168
+ }
169
+ async function R(t, e, n) {
170
+ const a = t.getReader(), r = [];
171
+ let o = 0;
172
+ try {
173
+ for (; ; ) {
174
+ const s = await F(a.read(), n);
175
+ if (s.done) break;
176
+ o += s.value.byteLength, A(o, e), r.push(s.value);
177
+ }
178
+ const i = new Uint8Array(o);
179
+ let c = 0;
180
+ for (const s of r)
181
+ i.set(s, c), c += s.byteLength;
182
+ return i;
183
+ } catch (i) {
184
+ throw a.cancel(i).catch(() => {
185
+ }), i;
186
+ } finally {
187
+ a.releaseLock();
188
+ }
189
+ }
190
+ async function K(t, e, n) {
191
+ if (t[0] !== 31 || t[1] !== 139) return t;
192
+ if (typeof DecompressionStream > "u") throw new Error("当前环境不支持 gzip 字体解压,请使用未压缩的字体 URL 或支持 DecompressionStream 的浏览器 / Node 环境");
193
+ const r = new ReadableStream({ start(o) {
194
+ o.enqueue(t), o.close();
195
+ } }).pipeThrough(new DecompressionStream("gzip"));
196
+ return R(r, e, n);
197
+ }
198
+ async function Q(t) {
199
+ const e = new AbortController();
200
+ let n = !1;
201
+ const a = setTimeout(() => {
202
+ n = !0, e.abort();
203
+ }, 15e3);
204
+ try {
205
+ const r = await fetch(t, { signal: e.signal });
206
+ if (!r.ok) throw new Error(`字体请求返回 HTTP ${r.status}`);
207
+ if (/text\/html|application\/xhtml\+xml/i.test(r.headers?.get("content-type") ?? ""))
208
+ throw new Error("字体 URL 返回 HTML 页面(可能是 SPA 路由回退),不是字体文件");
209
+ const o = B().maxFontBytes, i = await _(r, o, e.signal), c = await K(i, o, e.signal);
210
+ return k(c), { bytes: c, fromCache: !1 };
211
+ } catch (r) {
212
+ throw e.abort(), S(t, r, n);
213
+ } finally {
214
+ clearTimeout(a);
215
+ }
216
+ }
217
+ async function X(t) {
218
+ await v, await g.get(t);
219
+ const e = await V(t);
220
+ if (e)
221
+ try {
222
+ return k(e), { bytes: e, fromCache: !0 };
223
+ } catch {
224
+ }
225
+ return Q(t);
226
+ }
227
+ function Y(t) {
228
+ const e = l.get(t);
229
+ if (e) return e;
230
+ const n = X(t);
231
+ l.set(t, n), E.add(n);
232
+ const a = () => {
233
+ l.get(t) === n && l.delete(t), E.delete(n), N();
234
+ };
235
+ return n.then(a, a), n;
236
+ }
237
+ async function Z(t, e, n, a) {
238
+ if ((y.get(t) ?? 0) !== n || p !== a) return;
239
+ W(t, e);
240
+ const r = w.get(t);
241
+ if (r) {
242
+ await r;
243
+ return;
244
+ }
245
+ const o = q(t, e);
246
+ w.set(t, o), await o, w.get(t) === o && w.delete(t);
247
+ }
248
+ function m(t) {
249
+ return t.reason ?? new DOMException("字体加载已取消", "AbortError");
250
+ }
251
+ function F(t, e) {
252
+ return e ? e.aborted ? Promise.reject(m(e)) : new Promise((n, a) => {
253
+ const r = () => {
254
+ e.removeEventListener("abort", r), a(m(e));
255
+ };
256
+ e.addEventListener("abort", r, { once: !0 }), t.then((o) => {
257
+ e.removeEventListener("abort", r), n(o);
258
+ }, (o) => {
259
+ e.removeEventListener("abort", r), a(o);
260
+ });
261
+ }) : t;
262
+ }
263
+ async function tt(t, e, n, a, r) {
264
+ try {
265
+ return await F(I(e.bytes), n.signal), e.bytes;
266
+ } catch (o) {
267
+ if (n.signal?.aborted) throw m(n.signal);
268
+ if ((y.get(t) ?? 0) !== a || p !== r) throw S(t, o);
269
+ if (await G(t), e.fromCache) return await et(t, n);
270
+ throw S(t, o);
271
+ }
272
+ }
273
+ async function et(t, e = {}) {
274
+ if (e.signal?.aborted) throw m(e.signal);
275
+ const n = y.get(t) ?? 0, a = p, r = U(t);
276
+ if (r && !e.strict) return r;
277
+ const o = r ? void 0 : Y(t);
278
+ x++;
279
+ try {
280
+ const i = r ? { bytes: r, fromCache: !0 } : await F(o, e.signal), c = e.strict ? await tt(t, i, e, n, a) : i.bytes;
281
+ if (e.signal?.aborted) throw m(e.signal);
282
+ return r || await F(Z(t, c, n, a), e.signal), c;
283
+ } catch (i) {
284
+ if (e.signal?.aborted) throw m(e.signal);
285
+ if (e.strict) throw i;
286
+ return null;
287
+ } finally {
288
+ x--, N();
289
+ }
290
+ }
291
+ export {
292
+ rt as clearFontCache,
293
+ nt as configureFontCache,
294
+ B as getFontCacheStats,
295
+ G as invalidateFontCache,
296
+ et as loadFontWithCache
297
+ };