@agile-team/mach-report 2.16.0 → 2.17.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.
- package/README.md +10 -6
- package/dist/{ExcelBindingWizard-CP6h2x1f.cjs → ExcelBindingWizard-Bq6FYME6.cjs} +1 -1
- package/dist/{ExcelBindingWizard-HhB3hAJE.js → ExcelBindingWizard-Co1svTsw.js} +3 -3
- package/dist/{ParamEditor-CUQLgoxa.cjs → ParamEditor-B5UZRgxv.cjs} +1 -1
- package/dist/{ParamEditor-OKesP_nO.js → ParamEditor-DNNARyeB.js} +1 -1
- package/dist/{ReportBatchPanel-cZCAMAwH.cjs → ReportBatchPanel-Ctvs2t_9.cjs} +1 -1
- package/dist/{ReportBatchPanel-ruxcbfY6.js → ReportBatchPanel-uQh06usx.js} +1 -1
- package/dist/ReportPreview-BdQawRh0.js +4879 -0
- package/dist/ReportPreview-CJC_-j2I.cjs +6 -0
- package/dist/{ReportTemplateLibrary-BDlNT8JN.cjs → ReportTemplateLibrary-CnP7_1pH.cjs} +1 -1
- package/dist/{ReportTemplateLibrary-DcwrH-63.js → ReportTemplateLibrary-TIL_Oj2l.js} +1 -1
- package/dist/RuleEditor-DkRjOLlr.js +2141 -0
- package/dist/RuleEditor-h5anGsDB.cjs +1 -0
- package/dist/{TemplateOutlinePanel-CGrT5DFN.cjs → TemplateOutlinePanel-BlLxRrfu.cjs} +1 -1
- package/dist/{TemplateOutlinePanel-SXCjaPKR.js → TemplateOutlinePanel-BouxsuqQ.js} +1 -1
- package/dist/{TemplateReusePanel-lHLOS9Wn.js → TemplateReusePanel-BEACLPaN.js} +2 -2
- package/dist/{TemplateReusePanel-6Z3wRFz8.cjs → TemplateReusePanel-yxsHSO40.cjs} +1 -1
- package/dist/{TemplateReviewPanel-CJ9PLc48.js → TemplateReviewPanel-B1OGRY2i.js} +1 -1
- package/dist/{TemplateReviewPanel-Dpk7sLcF.cjs → TemplateReviewPanel-D9Cx0m2N.cjs} +1 -1
- package/dist/analytics.cjs +1 -1
- package/dist/analytics.d.cts +63 -1
- package/dist/analytics.d.ts +63 -1
- package/dist/analytics.js +4 -4
- package/dist/artifact-integrity.json +86 -90
- package/dist/assets-BIMVwjQe.js +231 -0
- package/dist/assets-Dfs2ElxI.cjs +1 -0
- package/dist/{auto-YR7a4BtF.js → auto-BIOmtVhk.js} +14 -14
- package/dist/{auto-uVBjX1j5.cjs → auto-DDHflI9v.cjs} +1 -1
- package/dist/computed-BW5a8QFk.js +612 -0
- package/dist/computed-C2GD3XcE.cjs +1 -0
- package/dist/dataset-DL83majE.js +161 -0
- package/dist/dataset-IrlXbUvh.cjs +1 -0
- package/dist/{designer-BfQSahxq.js → designer-D9XAxqSc.js} +1194 -1179
- package/dist/designer-uCDo5XSK.cjs +2 -0
- package/dist/designer.cjs +1 -1
- package/dist/designer.d.cts +125 -3
- package/dist/designer.d.ts +125 -3
- package/dist/designer.js +1 -1
- package/dist/{drill-CsdjgkRM.cjs → drill-ByN8COs_.cjs} +1 -1
- package/dist/{drill-DIGsZfyB.js → drill-CKW3Xtfa.js} +11 -11
- package/dist/{encoding-BYF9ZTl9.cjs → encoding-BFMFIc4r.cjs} +1 -1
- package/dist/{encoding-BOGq4qYL.js → encoding-DP_Eaf0A.js} +2 -2
- package/dist/{font-loader-EKLzOJxf.cjs → font-loader-7FWVlykp.cjs} +1 -1
- package/dist/{font-loader-CzI1GuBc.js → font-loader-CQZowp0I.js} +1 -1
- package/dist/index.cjs +8 -8
- package/dist/index.d.cts +173 -1
- package/dist/index.d.ts +173 -1
- package/dist/index.js +1205 -808
- package/dist/json-snapshot-D7PE1NsU.cjs +2 -0
- package/dist/{json-snapshot-D6ioHth9.js → json-snapshot-DYmEe3sO.js} +769 -692
- package/dist/matrix-JLAXlux-.js +302 -0
- package/dist/matrix-gTHpDTGm.cjs +1 -0
- package/dist/{pdf-ByVCb1i6.cjs → pdf-B8JouyYv.cjs} +47 -47
- package/dist/{pdf-DJ5S6ukC.js → pdf-l3ea86di.js} +13 -15
- package/dist/pdf.cjs +1 -1
- package/dist/pdf.d.cts +12 -0
- package/dist/pdf.d.ts +12 -0
- package/dist/pdf.js +2 -2
- package/dist/{plugin-C2j5_mhx.js → plugin-BBp74CQZ.js} +1 -1
- package/dist/{plugin-Dr39GBRG.cjs → plugin-CtFX9PFG.cjs} +1 -1
- package/dist/{prepared-DqtpvRTn.js → prepared-CARicKYh.js} +1 -1
- package/dist/{prepared-DdrjLC7L.cjs → prepared-Ch1x_Gog.cjs} +1 -1
- package/dist/{protocol-BzwMP4Vw.cjs → protocol-B5A2uom4.cjs} +1 -1
- package/dist/{protocol-kt4Iy6-3.js → protocol-BaiWjq5w.js} +3 -3
- package/dist/{record-bindings-DUX1VMlR.cjs → record-bindings-B86Sur_y.cjs} +1 -1
- package/dist/{record-bindings-CZWBJ1fU.js → record-bindings-D4TuMzHs.js} +1 -1
- package/dist/{region-binding-workflow-CWNvIjkV.js → region-binding-workflow-BNasF5kz.js} +2 -2
- package/dist/{region-binding-workflow-CqSMxQ4p.cjs → region-binding-workflow-O2Cni3mF.cjs} +1 -1
- package/dist/report-encoding-worker.cjs +1 -1
- package/dist/report-encoding-worker.js +1 -1
- package/dist/runtime-DakRXui3.js +170 -0
- package/dist/runtime-dL5ygIfa.cjs +1 -0
- package/dist/sbom.cdx.json +1 -1
- package/dist/server/node.d.cts +46 -0
- package/dist/server/node.d.ts +46 -0
- package/dist/server-node.cjs +4 -4
- package/dist/server-node.js +2540 -1911
- package/dist/server.cjs +1 -1
- package/dist/server.d.cts +174 -1
- package/dist/server.d.ts +174 -1
- package/dist/server.js +787 -544
- package/dist/style.css +1 -1
- package/dist/template-catalog-Dua8h9ZA.cjs +1 -0
- package/dist/{template-catalog-BtR2JmCL.js → template-catalog-wT1fNeAP.js} +4 -4
- package/dist/{template-fragments-BVsbxs4a.cjs → template-fragments-BajTajb4.cjs} +1 -1
- package/dist/{template-fragments-By0aZC1D.js → template-fragments-DmX5XK4N.js} +1 -1
- package/dist/{template-registry-C62vpv4a.cjs → template-registry-CpysHAxy.cjs} +1 -1
- package/dist/{template-registry-Cw3vRTX2.js → template-registry-u11fPd8D.js} +5 -5
- package/dist/{tree-BX380Rr7.cjs → tree-CLpxYbKa.cjs} +1 -1
- package/dist/{tree-CjVZLRw7.js → tree-DNJorJUf.js} +1 -1
- package/dist/vue/async.d.cts +108 -2
- package/dist/vue/async.d.ts +108 -2
- package/dist/vue/index.d.cts +130 -3
- package/dist/vue/index.d.ts +130 -3
- package/dist/vue-async.cjs +1 -1
- package/dist/vue-async.js +3 -3
- package/dist/vue.cjs +1 -1
- package/dist/vue.js +4 -4
- package/dist/{workbook-session-BeSO8PFB.js → workbook-session-B8pNW24X.js} +1 -1
- package/dist/{workbook-session-Cbts-22R.cjs → workbook-session-DN5LSA5C.cjs} +1 -1
- package/dist/worker.cjs +1 -1
- package/dist/worker.js +4 -4
- package/dist/xlsx.cjs +4 -4
- package/dist/xlsx.d.cts +88 -2
- package/dist/xlsx.d.ts +88 -2
- package/dist/xlsx.js +232 -230
- package/package.json +1 -1
- package/dist/ReportPreview-BcDKCLiK.js +0 -4834
- package/dist/ReportPreview-Bk9nLfO9.cjs +0 -6
- package/dist/RuleEditor-BX5S8RSF.cjs +0 -1
- package/dist/RuleEditor-CGl9XY2s.js +0 -2037
- package/dist/assets-CqIbfbTr.js +0 -126
- package/dist/assets-e4YSke8n.cjs +0 -1
- package/dist/capabilities-DDwXr_cA.js +0 -103
- package/dist/capabilities-DNLyZdNw.cjs +0 -1
- package/dist/computed-C-4C2S5h.js +0 -521
- package/dist/computed-CGV2a809.cjs +0 -1
- package/dist/dataset-BkRmwgeJ.cjs +0 -1
- package/dist/dataset-H5pFuQGU.js +0 -121
- package/dist/designer-CPPdeM5_.cjs +0 -2
- package/dist/diagnostic-notification-B9K9We3h.cjs +0 -1
- package/dist/diagnostic-notification-qGAYZdkB.js +0 -7
- package/dist/json-snapshot-DknkjvxP.cjs +0 -2
- package/dist/matrix-CGRGkn5s.js +0 -112
- package/dist/matrix-gEO7ZM_u.cjs +0 -1
- package/dist/runtime-BjKBI530.js +0 -168
- package/dist/runtime-CBFEPKEs.cjs +0 -1
- package/dist/template-catalog-C2NLdrwB.cjs +0 -1
package/dist/index.js
CHANGED
|
@@ -1,32 +1,137 @@
|
|
|
1
|
-
import { D as
|
|
2
|
-
import { C as
|
|
3
|
-
import { R as
|
|
4
|
-
import { i as
|
|
5
|
-
import { R as
|
|
6
|
-
import { v as
|
|
7
|
-
import {
|
|
8
|
-
import { v as
|
|
9
|
-
import { d as
|
|
10
|
-
import { h as
|
|
11
|
-
import { c as
|
|
12
|
-
import { R as
|
|
13
|
-
import { D as
|
|
14
|
-
import { r as
|
|
15
|
-
import { r as
|
|
16
|
-
import { r as
|
|
17
|
-
import { i as
|
|
18
|
-
import { o as
|
|
19
|
-
import {
|
|
20
|
-
import { r as
|
|
21
|
-
import {
|
|
22
|
-
import { c as
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
const
|
|
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";
|
|
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";
|
|
14
|
+
import { r as xe } from "./grid-geometry-BNptEcMm.js";
|
|
15
|
+
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";
|
|
26
|
+
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;
|
|
31
|
+
}
|
|
32
|
+
return r;
|
|
33
|
+
}
|
|
34
|
+
function nt(e) {
|
|
35
|
+
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
|
+
return e;
|
|
37
|
+
}
|
|
38
|
+
function Ot(e) {
|
|
39
|
+
const t = e.rows.map(() => []);
|
|
40
|
+
for (const n of e.cells) {
|
|
41
|
+
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);
|
|
43
|
+
}
|
|
44
|
+
for (const n of t) n.sort((r, i) => r.xMm - i.xMm);
|
|
45
|
+
return {
|
|
46
|
+
cells(n) {
|
|
47
|
+
nt(n);
|
|
48
|
+
const r = /* @__PURE__ */ new Set(), i = n.topMm + n.heightMm, o = n.leftMm + n.widthMm;
|
|
49
|
+
let l = we(e.rows, n.topMm, (s) => s.pos + s.size);
|
|
50
|
+
for (; l < t.length && e.rows[l].pos <= i; ) {
|
|
51
|
+
const s = t[l++];
|
|
52
|
+
let a = we(s, n.leftMm, (c) => c.xMm + c.widthMm);
|
|
53
|
+
for (; a < s.length && s[a].xMm <= o; ) r.add(s[a++]);
|
|
54
|
+
}
|
|
55
|
+
return [...r].sort((s, a) => s.ri - a.ri || s.ci - a.ci);
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
function It(e) {
|
|
60
|
+
const t = ["h", "v"].map((n) => e.filter((r) => r.kind === n).sort((r, i) => r.pos - i.pos));
|
|
61
|
+
return (n) => {
|
|
62
|
+
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++];
|
|
68
|
+
m.to >= a && m.from <= c && r.push(m);
|
|
69
|
+
}
|
|
70
|
+
}), r;
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
function Nt() {
|
|
74
|
+
const e = [];
|
|
75
|
+
return {
|
|
76
|
+
mount(t) {
|
|
77
|
+
e.push(Ft(t));
|
|
78
|
+
},
|
|
79
|
+
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;
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
function Lt(e, t) {
|
|
88
|
+
const n = Math.max(8, e.widthMm / 4), r = Math.max(8, e.heightMm / 4);
|
|
89
|
+
return {
|
|
90
|
+
leftMm: e.leftMm - t.leftMm - n,
|
|
91
|
+
topMm: e.topMm - t.topMm - r,
|
|
92
|
+
widthMm: e.widthMm + 2 * n,
|
|
93
|
+
heightMm: e.heightMm + 2 * r
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
function Dt(e, t, n) {
|
|
97
|
+
let r = t.get(n);
|
|
98
|
+
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
|
+
}
|
|
100
|
+
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
|
+
for (const s of t) {
|
|
105
|
+
let a = n.get(s);
|
|
106
|
+
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);
|
|
108
|
+
a.parentElement !== c && c.appendChild(a);
|
|
109
|
+
}
|
|
110
|
+
const l = /* @__PURE__ */ new Map();
|
|
111
|
+
for (const s of t) {
|
|
112
|
+
const a = l.get(s.ri) ?? [];
|
|
113
|
+
a.push(n.get(s)), l.set(s.ri, a);
|
|
114
|
+
}
|
|
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)));
|
|
117
|
+
}
|
|
118
|
+
function De(e, t) {
|
|
119
|
+
let n = e.firstElementChild;
|
|
120
|
+
for (const r of t)
|
|
121
|
+
r === n ? n = n.nextElementSibling : e.insertBefore(r, n);
|
|
122
|
+
}
|
|
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));
|
|
125
|
+
e.table.setAttribute("aria-rowcount", String(t.rows.length)), e.table.setAttribute("aria-colcount", String(t.columns.length));
|
|
126
|
+
let s = "", a = "";
|
|
127
|
+
return { component: e.component, update(c, d) {
|
|
128
|
+
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
|
+
} };
|
|
133
|
+
}
|
|
134
|
+
const rt = /* @__PURE__ */ new WeakMap(), zt = {
|
|
30
135
|
root: "mr-root",
|
|
31
136
|
page: "mr-page",
|
|
32
137
|
comp: "mr-comp",
|
|
@@ -43,10 +148,10 @@ const ct = {
|
|
|
43
148
|
cell: "mr-cell",
|
|
44
149
|
unknown: "mr-unknown"
|
|
45
150
|
};
|
|
46
|
-
function
|
|
47
|
-
return t?.classNames?.[e] ??
|
|
151
|
+
function $(e, t) {
|
|
152
|
+
return t?.classNames?.[e] ?? zt[e];
|
|
48
153
|
}
|
|
49
|
-
class
|
|
154
|
+
class Ht {
|
|
50
155
|
constructor() {
|
|
51
156
|
this.props = [];
|
|
52
157
|
}
|
|
@@ -54,7 +159,7 @@ class dt {
|
|
|
54
159
|
return n == null || n === !1 || n === "" ? this : (this.props.push([t, String(n)]), this);
|
|
55
160
|
}
|
|
56
161
|
mm(t, n, r, i = 2) {
|
|
57
|
-
return this.add(t, `${
|
|
162
|
+
return this.add(t, `${J(ue(n, r), i)}px`);
|
|
58
163
|
}
|
|
59
164
|
toString() {
|
|
60
165
|
let t = "";
|
|
@@ -67,188 +172,213 @@ class dt {
|
|
|
67
172
|
n && (t.style.cssText = n);
|
|
68
173
|
}
|
|
69
174
|
}
|
|
70
|
-
function
|
|
71
|
-
return new
|
|
175
|
+
function x(e, t = "unset") {
|
|
176
|
+
return new Ht().add("all", t).add("display", e).add("box-sizing", "border-box");
|
|
72
177
|
}
|
|
73
|
-
function
|
|
74
|
-
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(
|
|
75
|
-
const r =
|
|
76
|
-
e.add("font-size", `${
|
|
178
|
+
function it(e, t, n) {
|
|
179
|
+
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
|
+
const r = _(t, n);
|
|
181
|
+
e.add("font-size", `${J(r.fontSizePx, 2)}px`);
|
|
77
182
|
}
|
|
78
|
-
function
|
|
183
|
+
function Bt(e, t, n) {
|
|
79
184
|
const r = t.style ?? {};
|
|
80
|
-
|
|
185
|
+
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);
|
|
81
186
|
}
|
|
82
|
-
function
|
|
83
|
-
const l = e.cell,
|
|
84
|
-
|
|
85
|
-
const
|
|
86
|
-
|
|
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
|
+
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
|
+
it(c, a, r), c.applyTo(s);
|
|
87
192
|
const d = o.createElement("div");
|
|
88
|
-
d.className = "mr-cell-content",
|
|
89
|
-
for (const
|
|
90
|
-
return
|
|
91
|
-
}
|
|
92
|
-
function
|
|
93
|
-
return
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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;
|
|
196
|
+
}
|
|
197
|
+
function _t(e, t, n, r) {
|
|
198
|
+
return ot(Se(e, t), n, r);
|
|
199
|
+
}
|
|
200
|
+
function ot(e, t, n) {
|
|
201
|
+
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");
|
|
204
|
+
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;
|
|
98
206
|
});
|
|
99
207
|
}
|
|
100
|
-
function
|
|
208
|
+
function Wt(e, t, n, r, i) {
|
|
101
209
|
const o = i.createElement("table");
|
|
102
|
-
o.className =
|
|
103
|
-
const l =
|
|
104
|
-
|
|
105
|
-
const s =
|
|
106
|
-
|
|
107
|
-
|
|
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);
|
|
214
|
+
if (s) {
|
|
215
|
+
const m = i.createElement("div");
|
|
216
|
+
x("block").add("position", "relative").add("width", "100%").add("height", "100%").applyTo(m);
|
|
217
|
+
const h = i.createElement("div");
|
|
218
|
+
return x("contents").applyTo(h), h.setAttribute("aria-hidden", "true"), s.mount({
|
|
219
|
+
grid: e,
|
|
220
|
+
component: t,
|
|
221
|
+
table: o,
|
|
222
|
+
rowClass: $("row", r),
|
|
223
|
+
body: l,
|
|
224
|
+
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;
|
|
228
|
+
}
|
|
229
|
+
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;
|
|
108
232
|
});
|
|
109
|
-
for (const
|
|
110
|
-
|
|
111
|
-
const
|
|
112
|
-
return
|
|
233
|
+
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;
|
|
113
237
|
}
|
|
114
|
-
function
|
|
238
|
+
function Vt(e, t, n, r) {
|
|
115
239
|
const i = r.createElement("div");
|
|
116
|
-
i.className =
|
|
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);
|
|
117
241
|
for (const o of e.segments || []) {
|
|
118
242
|
const l = r.createElement("span");
|
|
119
|
-
l.className =
|
|
120
|
-
const
|
|
243
|
+
l.className = $("segment", n), l.textContent = o.kind === "field" ? o.field ?? "" : o.text ?? "";
|
|
244
|
+
const s = x("inline");
|
|
121
245
|
if (o.style) {
|
|
122
|
-
const
|
|
123
|
-
|
|
246
|
+
const a = o.style;
|
|
247
|
+
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`);
|
|
124
248
|
}
|
|
125
|
-
|
|
249
|
+
s.applyTo(l), i.appendChild(l);
|
|
126
250
|
}
|
|
127
251
|
return i;
|
|
128
252
|
}
|
|
129
|
-
function
|
|
130
|
-
if (
|
|
253
|
+
function at(e, t, n, r) {
|
|
254
|
+
if (Ye(e)) {
|
|
131
255
|
const i = r.createElement("div");
|
|
132
|
-
i.className =
|
|
133
|
-
for (const o of e.richParagraphs) i.appendChild(
|
|
256
|
+
i.className = $("rich", n), x("block").applyTo(i);
|
|
257
|
+
for (const o of e.richParagraphs) i.appendChild(Vt(o, t, n, r));
|
|
134
258
|
return i;
|
|
135
259
|
}
|
|
136
260
|
if (Array.isArray(e.lines) && e.lines.length > 0) {
|
|
137
261
|
const i = r.createElement("div");
|
|
138
|
-
i.className =
|
|
262
|
+
i.className = $("lines", n), x("block").applyTo(i);
|
|
139
263
|
for (const o of e.lines) {
|
|
140
264
|
const l = r.createElement("div");
|
|
141
|
-
l.className =
|
|
265
|
+
l.className = $("line", n), l.textContent = o, x("block").add("white-space", "pre").add("min-height", "1lh").applyTo(l), i.appendChild(l);
|
|
142
266
|
}
|
|
143
267
|
return i;
|
|
144
268
|
}
|
|
145
269
|
return e.text ?? "";
|
|
146
270
|
}
|
|
147
|
-
function
|
|
271
|
+
function Ut(e, t, n, r) {
|
|
148
272
|
const i = r.createElement("div");
|
|
149
|
-
i.className =
|
|
273
|
+
i.className = $("text", n);
|
|
150
274
|
const o = e.style || {};
|
|
151
|
-
return
|
|
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;
|
|
152
276
|
}
|
|
153
|
-
function
|
|
277
|
+
function qt(e, t, n) {
|
|
154
278
|
const r = n.createElement("img");
|
|
155
|
-
return r.className =
|
|
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;
|
|
156
280
|
}
|
|
157
|
-
function
|
|
281
|
+
function Fe(e, t, n, r) {
|
|
158
282
|
const i = r.createElement("div");
|
|
159
|
-
i.className =
|
|
160
|
-
const o = e.style || {}, l =
|
|
161
|
-
return e.grid ? c.add("position", "relative") : e.kind === "rect" ? (
|
|
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;
|
|
162
286
|
}
|
|
163
|
-
function
|
|
164
|
-
const r = n.createElementNS("http://www.w3.org/2000/svg", "svg"), i =
|
|
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);
|
|
165
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";
|
|
166
290
|
const l = n.createElementNS("http://www.w3.org/2000/svg", "line");
|
|
167
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));
|
|
168
|
-
const
|
|
169
|
-
return l.setAttribute("stroke",
|
|
292
|
+
const s = Y({ ...e.style, borderColor: e.style?.lineColor ?? e.style?.borderColor });
|
|
293
|
+
return l.setAttribute("stroke", s.color), l.setAttribute("stroke-width", String(s.widthPt * t / 72)), r.appendChild(l), r;
|
|
170
294
|
}
|
|
171
|
-
function
|
|
295
|
+
function st(e, t, n, r) {
|
|
172
296
|
const i = r.createElement("div");
|
|
173
|
-
i.className = `${
|
|
174
|
-
const o =
|
|
175
|
-
if (
|
|
176
|
-
return i.appendChild(
|
|
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;
|
|
177
301
|
if (e.kind === "text")
|
|
178
|
-
return i.appendChild(
|
|
302
|
+
return i.appendChild(Ut(e, t, n, r)), i;
|
|
179
303
|
if (e.grid) {
|
|
180
|
-
const
|
|
181
|
-
return
|
|
304
|
+
const s = Fe(e, t, n, r);
|
|
305
|
+
return s.appendChild(Wt(e.grid, e, t, n, r)), i.appendChild(s), i;
|
|
182
306
|
}
|
|
183
307
|
if (e.kind === "line" && e.lineDirection)
|
|
184
|
-
return i.appendChild(
|
|
308
|
+
return i.appendChild(Gt(e, t, r)), i;
|
|
185
309
|
if (e.kind === "line" || e.kind === "rect" || e.kind === "ellipse")
|
|
186
|
-
return i.appendChild(
|
|
310
|
+
return i.appendChild(Fe(e, t, n, r)), i;
|
|
187
311
|
const l = r.createElement("div");
|
|
188
|
-
return l.className =
|
|
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;
|
|
189
313
|
}
|
|
190
|
-
function
|
|
314
|
+
function lt(e, t, n, r) {
|
|
191
315
|
const i = r.createElement("div");
|
|
192
|
-
return i.className =
|
|
193
|
-
const
|
|
194
|
-
|
|
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);
|
|
195
319
|
}), i;
|
|
196
320
|
}
|
|
197
|
-
function
|
|
321
|
+
function pr(e, t, n = {}) {
|
|
198
322
|
const r = n.dpi ?? 96;
|
|
199
|
-
|
|
323
|
+
Z(e, "dom", n);
|
|
200
324
|
const i = t.createElement("div");
|
|
201
|
-
return i.className =
|
|
202
|
-
i.appendChild(
|
|
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));
|
|
203
327
|
}), i;
|
|
204
328
|
}
|
|
205
|
-
function
|
|
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);
|
|
333
|
+
} };
|
|
334
|
+
}
|
|
335
|
+
function Ce(e, t, n, r, i, o, l, s = "top") {
|
|
206
336
|
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";
|
|
207
|
-
const
|
|
208
|
-
`), d = c.length *
|
|
209
|
-
let
|
|
210
|
-
|
|
211
|
-
const
|
|
212
|
-
|
|
337
|
+
const a = t.fontSizePx * t.lineHeight, c = t.text === "" ? [""] : t.text.split(`
|
|
338
|
+
`), d = c.length * a;
|
|
339
|
+
let m = r;
|
|
340
|
+
s === "middle" ? m = r + (o - d) / 2 : s === "bottom" && (m = r + o - d), c.forEach((h, f) => {
|
|
341
|
+
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);
|
|
213
343
|
}), e.textAlign = "left";
|
|
214
344
|
}
|
|
215
|
-
function
|
|
216
|
-
const l = Array.from(t),
|
|
217
|
-
if (!
|
|
345
|
+
function Jt(e, t, n, r, i, o) {
|
|
346
|
+
const l = Array.from(t), s = n.letterSpacingPx ?? 0;
|
|
347
|
+
if (!s) {
|
|
218
348
|
e.textAlign = n.align === "center" ? "center" : n.align === "right" ? "right" : "left";
|
|
219
|
-
const
|
|
220
|
-
e.fillText(t,
|
|
349
|
+
const m = n.align === "center" ? r + o / 2 : n.align === "right" ? r + o : r;
|
|
350
|
+
e.fillText(t, m, i);
|
|
221
351
|
return;
|
|
222
352
|
}
|
|
223
|
-
const
|
|
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;
|
|
224
354
|
e.textAlign = "left";
|
|
225
355
|
let d = "";
|
|
226
|
-
l.forEach((
|
|
227
|
-
e.fillText(
|
|
356
|
+
l.forEach((m, h) => {
|
|
357
|
+
e.fillText(m, c + e.measureText(d).width + h * s, i), d += m;
|
|
228
358
|
});
|
|
229
359
|
}
|
|
230
|
-
function
|
|
231
|
-
const l = e.measureText(t).width + Math.max(0, Array.from(t).length - 1) * (n.letterSpacingPx ?? 0),
|
|
232
|
-
e.strokeStyle = n.color, e.lineWidth = Math.max(0.5, n.fontSizePx / 20), e.beginPath(), e.moveTo(
|
|
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();
|
|
233
363
|
}
|
|
234
|
-
function
|
|
235
|
-
const o = r / 72, l = (
|
|
236
|
-
e.font = `${
|
|
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");
|
|
237
367
|
};
|
|
238
|
-
|
|
239
|
-
measure(
|
|
240
|
-
return l(
|
|
368
|
+
$t(t, { x: n.x / o, yTop: -n.y / o, width: n.width / o, height: n.height / o }, {
|
|
369
|
+
measure(s, a) {
|
|
370
|
+
return l(a), e.measureText(s).width / o + (a.letterSpacing ?? 0);
|
|
241
371
|
},
|
|
242
|
-
draw(
|
|
243
|
-
const
|
|
244
|
-
|
|
372
|
+
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);
|
|
245
375
|
}
|
|
246
376
|
});
|
|
247
377
|
}
|
|
248
378
|
function k(e) {
|
|
249
379
|
if (e?.aborted) throw e.reason ?? new DOMException("The operation was aborted.", "AbortError");
|
|
250
380
|
}
|
|
251
|
-
const
|
|
381
|
+
const Yt = (e, t) => (k(t), /^data:image\/(?:png|jpe?g|webp|gif|svg\+xml)[;,]/i.test(e) ? new Promise((n, r) => {
|
|
252
382
|
const i = new Image(), o = () => {
|
|
253
383
|
i.onload = null, i.onerror = null, t?.removeEventListener("abort", l);
|
|
254
384
|
}, l = () => {
|
|
@@ -260,364 +390,364 @@ const xt = (e, t) => (k(t), /^data:image\/(?:png|jpe?g|webp|gif|svg\+xml)[;,]/i.
|
|
|
260
390
|
o(), r(new Error("Image could not be decoded for Canvas output."));
|
|
261
391
|
}, t?.addEventListener("abort", l, { once: !0 }), i.src = e;
|
|
262
392
|
}) : Promise.reject(new TypeError("Canvas imageData must be an image data URL; provide imageLoader for other sources.")));
|
|
263
|
-
function
|
|
393
|
+
function Xt(e, t, n) {
|
|
264
394
|
return k(n), n ? new Promise((r, i) => {
|
|
265
395
|
const o = () => i(n.reason ?? new DOMException("The operation was aborted.", "AbortError"));
|
|
266
396
|
n.addEventListener("abort", o, { once: !0 }), Promise.resolve().then(() => e(t, n)).then(r, i).finally(() => n.removeEventListener("abort", o));
|
|
267
397
|
}) : e(t);
|
|
268
398
|
}
|
|
269
|
-
function*
|
|
399
|
+
function* Te(e) {
|
|
270
400
|
function* t(n, r, i, o) {
|
|
271
401
|
if (o.has(n)) throw new TypeError("Cyclic grid children cannot be rendered.");
|
|
272
|
-
|
|
402
|
+
ce(n) && (yield { component: n, componentIndex: r, componentPath: i });
|
|
273
403
|
const l = new Set(o).add(n);
|
|
274
|
-
for (const [
|
|
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);
|
|
275
405
|
}
|
|
276
406
|
for (const [n, r] of e.components.entries()) yield* t(r, n, [], /* @__PURE__ */ new Set());
|
|
277
407
|
}
|
|
278
|
-
async function
|
|
408
|
+
async function Zt(e, t, n) {
|
|
279
409
|
const r = /* @__PURE__ */ new Map();
|
|
280
|
-
for (const { component: i } of
|
|
281
|
-
!
|
|
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));
|
|
282
412
|
return k(n), r;
|
|
283
413
|
}
|
|
284
|
-
function
|
|
285
|
-
const l = t,
|
|
286
|
-
if (
|
|
287
|
-
const c = Math.min(i /
|
|
288
|
-
e.drawImage(t, n + (i - d) / 2, r + (o -
|
|
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;
|
|
416
|
+
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);
|
|
289
419
|
}
|
|
290
|
-
function
|
|
291
|
-
return
|
|
420
|
+
function en(e) {
|
|
421
|
+
return kt(e.pageHeightsPx, e.gapPx).window(e.viewportHeightPx, e.scrollTopPx, e.overscan);
|
|
292
422
|
}
|
|
293
|
-
const
|
|
294
|
-
function
|
|
295
|
-
const n = t / 96 *
|
|
423
|
+
const Re = 96 / 25.4;
|
|
424
|
+
function $e(e, t = 96) {
|
|
425
|
+
const n = t / 96 * Re;
|
|
296
426
|
return {
|
|
297
427
|
widthPx: Math.max(1, Math.round(e.pageWidthMm * n)),
|
|
298
428
|
heightPx: Math.max(1, Math.round(e.pageHeightMm * n))
|
|
299
429
|
};
|
|
300
430
|
}
|
|
301
|
-
function
|
|
431
|
+
function dt(e, t, n, r = 64e6) {
|
|
302
432
|
if (!Number.isFinite(t) || t <= 0 || !Number.isFinite(n) || n <= 0) throw new RangeError("Canvas dpr and dpi must be positive finite numbers.");
|
|
303
433
|
if (!Number.isFinite(r) || r <= 0) throw new RangeError("maxCanvasPixels must be positive and finite.");
|
|
304
|
-
const i =
|
|
434
|
+
const i = $e(e, n), o = Math.round(i.widthPx * t), l = Math.round(i.heightPx * t);
|
|
305
435
|
if (!Number.isSafeInteger(o) || !Number.isSafeInteger(l) || o * l > r) throw new RangeError("Canvas page exceeds maxCanvasPixels; reduce resolution or split the report.");
|
|
306
436
|
return { width: o, height: l };
|
|
307
437
|
}
|
|
308
|
-
function
|
|
309
|
-
const i = document.createElement("canvas"), { widthPx: o, heightPx: l } =
|
|
310
|
-
i.width =
|
|
311
|
-
const
|
|
312
|
-
if (!
|
|
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
|
+
if (!a)
|
|
313
443
|
throw new Error("当前环境不支持 Canvas 2D(测试需真浏览器,见 e2e/canvas.spec.ts)");
|
|
314
|
-
return
|
|
444
|
+
return a.scale(t, t), a.fillStyle = "#ffffff", a.fillRect(0, 0, o, l), { canvas: i, ctx: a };
|
|
315
445
|
}
|
|
316
|
-
function
|
|
317
|
-
return
|
|
446
|
+
function br(e, t = 96) {
|
|
447
|
+
return _(e, t).fontSizePx;
|
|
318
448
|
}
|
|
319
|
-
function
|
|
320
|
-
for (const
|
|
321
|
-
e.strokeStyle =
|
|
449
|
+
function tn(e, t, n, r, i, o, l) {
|
|
450
|
+
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();
|
|
322
452
|
}
|
|
323
|
-
function
|
|
453
|
+
function nn(e, t, n, r, i, o) {
|
|
324
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();
|
|
325
455
|
}
|
|
326
|
-
function
|
|
327
|
-
const
|
|
328
|
-
for (const
|
|
329
|
-
const
|
|
330
|
-
|
|
456
|
+
function rn(e, t, n, r, i, o, l, s, a, c, d, m) {
|
|
457
|
+
const h = xe(t, o / s, l / s);
|
|
458
|
+
for (const f of h.cells) {
|
|
459
|
+
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));
|
|
331
461
|
}
|
|
332
|
-
|
|
333
|
-
for (const
|
|
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);
|
|
334
464
|
}
|
|
335
|
-
function
|
|
336
|
-
const d = n.grid?.paddingMm ?? 0.5,
|
|
337
|
-
`),
|
|
338
|
-
e.save(), e.beginPath(), e.rect(
|
|
465
|
+
function on(e, t, n, r, i, o, l, s, a, c) {
|
|
466
|
+
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(
|
|
339
469
|
e,
|
|
340
470
|
{
|
|
341
|
-
text:
|
|
342
|
-
fontSizePx:
|
|
343
|
-
bold:
|
|
344
|
-
italic:
|
|
345
|
-
underline:
|
|
346
|
-
color:
|
|
347
|
-
align:
|
|
348
|
-
lineHeight:
|
|
349
|
-
letterSpacingPx:
|
|
471
|
+
text: S,
|
|
472
|
+
fontSizePx: f.fontSizePx,
|
|
473
|
+
bold: h.bold ?? !1,
|
|
474
|
+
italic: h.italic,
|
|
475
|
+
underline: h.underline,
|
|
476
|
+
color: ye(h, Ge),
|
|
477
|
+
align: h.align ?? "left",
|
|
478
|
+
lineHeight: q(h),
|
|
479
|
+
letterSpacingPx: U(h.letterSpacing ?? 0, l)
|
|
350
480
|
},
|
|
351
|
-
r + (t.xMm + d +
|
|
481
|
+
r + (t.xMm + d + g) * o,
|
|
352
482
|
i + (t.yMm + d) * o,
|
|
353
|
-
|
|
483
|
+
C * o,
|
|
354
484
|
Math.max(0, t.heightMm - 2 * d) * o,
|
|
355
|
-
|
|
356
|
-
|
|
485
|
+
h.fontFamily ?? s,
|
|
486
|
+
h.verticalAlign ?? "middle"
|
|
357
487
|
);
|
|
358
|
-
for (const
|
|
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);
|
|
359
489
|
e.restore();
|
|
360
490
|
}
|
|
361
|
-
function
|
|
362
|
-
const c = t.style ?? {}, d =
|
|
363
|
-
if (
|
|
364
|
-
|
|
491
|
+
function an(e, t, n, r, i, o, l, s, a) {
|
|
492
|
+
const c = t.style ?? {}, d = _(c, l);
|
|
493
|
+
if (Ye(t)) {
|
|
494
|
+
ct(e, t, { x: n, y: r, width: i, height: o }, l, s);
|
|
365
495
|
return;
|
|
366
496
|
}
|
|
367
|
-
const
|
|
368
|
-
`) :
|
|
497
|
+
const m = t.lines?.length ? t.lines.join(`
|
|
498
|
+
`) : Qe(t.text ?? "", t.widthMm, { fontSizePt: d.fontSizePt, bold: c.bold, italic: c.italic, fontFamily: c.fontFamily ?? s, letterSpacingPt: c.letterSpacing }, a).join(`
|
|
369
499
|
`);
|
|
370
|
-
|
|
371
|
-
text:
|
|
500
|
+
Ce(e, {
|
|
501
|
+
text: m,
|
|
372
502
|
fontSizePx: d.fontSizePx,
|
|
373
503
|
bold: c.bold ?? !1,
|
|
374
504
|
italic: c.italic,
|
|
375
505
|
underline: c.underline,
|
|
376
|
-
color:
|
|
506
|
+
color: ye(c),
|
|
377
507
|
align: c.align ?? "left",
|
|
378
|
-
lineHeight:
|
|
379
|
-
letterSpacingPx:
|
|
380
|
-
}, n, r, i, o, c.fontFamily ??
|
|
381
|
-
}
|
|
382
|
-
function
|
|
383
|
-
const
|
|
384
|
-
if (
|
|
385
|
-
const
|
|
386
|
-
|
|
508
|
+
lineHeight: q(c),
|
|
509
|
+
letterSpacingPx: U(c.letterSpacing ?? 0, l)
|
|
510
|
+
}, n, r, i, o, c.fontFamily ?? s, c.verticalAlign);
|
|
511
|
+
}
|
|
512
|
+
function de(e, t, n, r, i, o, l) {
|
|
513
|
+
const s = t.leftMm * n, a = t.topMm * n, c = t.widthMm * n, d = t.heightMm * n, m = t.style ?? {};
|
|
514
|
+
if (ce(t)) {
|
|
515
|
+
const h = l?.get(t.imageData);
|
|
516
|
+
h ? Qt(e, h, s, a, c, d) : ze(e, t, s, a, c, d);
|
|
387
517
|
return;
|
|
388
518
|
}
|
|
389
519
|
if (t.grid) {
|
|
390
|
-
|
|
520
|
+
rn(e, t.grid, t, s, a, c, d, n, r, i, o, l);
|
|
391
521
|
return;
|
|
392
522
|
}
|
|
393
523
|
switch (t.kind) {
|
|
394
524
|
case "text": {
|
|
395
|
-
|
|
525
|
+
an(e, t, s, a, c, d, r, i, o);
|
|
396
526
|
break;
|
|
397
527
|
}
|
|
398
528
|
case "rect": {
|
|
399
|
-
const
|
|
400
|
-
|
|
529
|
+
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));
|
|
401
531
|
break;
|
|
402
532
|
}
|
|
403
533
|
case "line": {
|
|
404
|
-
const
|
|
405
|
-
e.strokeStyle =
|
|
406
|
-
const
|
|
407
|
-
e.moveTo(
|
|
534
|
+
const h = Y({ ...m, borderColor: m.lineColor ?? m.borderColor });
|
|
535
|
+
e.strokeStyle = h.color, e.lineWidth = U(h.widthPt, r), e.beginPath();
|
|
536
|
+
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
|
+
e.moveTo(s, f), e.lineTo(s + c, g), e.stroke();
|
|
408
538
|
break;
|
|
409
539
|
}
|
|
410
540
|
case "ellipse": {
|
|
411
|
-
const
|
|
412
|
-
e.strokeStyle =
|
|
541
|
+
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();
|
|
413
543
|
break;
|
|
414
544
|
}
|
|
415
545
|
default:
|
|
416
|
-
|
|
546
|
+
ze(e, t, s, a, c, d);
|
|
417
547
|
break;
|
|
418
548
|
}
|
|
419
549
|
}
|
|
420
|
-
function
|
|
550
|
+
function ze(e, t, n, r, i, o) {
|
|
421
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();
|
|
422
552
|
}
|
|
423
|
-
async function
|
|
553
|
+
async function yr(e, t = {}) {
|
|
424
554
|
if (typeof document > "u")
|
|
425
555
|
throw new Error("renderPlanToImages 需要浏览器环境(SSR/Node 请在客户端钩子中调用)");
|
|
426
556
|
const { format: n = "png", quality: r = 0.92, ...i } = t;
|
|
427
557
|
if (n !== "png" && n !== "jpeg") throw new TypeError("Image format must be png or jpeg.");
|
|
428
558
|
if (!Number.isFinite(r) || r < 0 || r > 1) throw new RangeError("Image quality must be between 0 and 1.");
|
|
429
559
|
k(t.signal);
|
|
430
|
-
const o = await
|
|
560
|
+
const o = await Ee(e, { ...t, format: "canvas" });
|
|
431
561
|
e = o.plan;
|
|
432
|
-
const l = [...o.diagnostics, ...
|
|
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);
|
|
433
563
|
for (let d = Math.max(0, t.start ?? 0); d <= c; d++) {
|
|
434
564
|
k(t.signal);
|
|
435
|
-
const
|
|
565
|
+
const m = await ht(e.pages[d], d, i, l);
|
|
436
566
|
try {
|
|
437
|
-
|
|
567
|
+
a.push(await sn(m, s, r, t.signal));
|
|
438
568
|
} finally {
|
|
439
|
-
|
|
569
|
+
m.width = 0, m.height = 0;
|
|
440
570
|
}
|
|
441
|
-
await
|
|
571
|
+
await At(t, a.length, c - Math.max(0, t.start ?? 0) + 1);
|
|
442
572
|
}
|
|
443
|
-
return k(t.signal), { blobs:
|
|
573
|
+
return k(t.signal), { blobs: a, diagnostics: l };
|
|
444
574
|
}
|
|
445
|
-
function
|
|
575
|
+
function sn(e, t, n, r) {
|
|
446
576
|
return k(r), new Promise((i, o) => {
|
|
447
577
|
const l = () => o(r?.reason ?? new DOMException("The operation was aborted.", "AbortError"));
|
|
448
578
|
r?.addEventListener("abort", l, { once: !0 });
|
|
449
579
|
try {
|
|
450
|
-
e.toBlob((
|
|
451
|
-
r?.removeEventListener("abort", l),
|
|
580
|
+
e.toBlob((s) => {
|
|
581
|
+
r?.removeEventListener("abort", l), s ? i(s) : o(new Error("Canvas encoding failed; no empty image was emitted."));
|
|
452
582
|
}, t, n);
|
|
453
|
-
} catch (
|
|
454
|
-
r?.removeEventListener("abort", l), o(
|
|
583
|
+
} catch (s) {
|
|
584
|
+
r?.removeEventListener("abort", l), o(s);
|
|
455
585
|
}
|
|
456
586
|
});
|
|
457
587
|
}
|
|
458
|
-
function
|
|
588
|
+
function Mr(e, t = {}) {
|
|
459
589
|
if (k(t.signal), typeof document > "u")
|
|
460
590
|
throw new Error("renderPlanToCanvas 需要浏览器环境(SSR 请在客户端钩子中调用)");
|
|
461
|
-
const n = t.dpr ?? (typeof devicePixelRatio == "number" ? devicePixelRatio : 1), r = t.dpi ?? 96, i = r / 96 *
|
|
462
|
-
for (const
|
|
463
|
-
|
|
464
|
-
if (t.fidelity === "strict" &&
|
|
465
|
-
for (let
|
|
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);
|
|
592
|
+
for (const h of m)
|
|
593
|
+
tt(h, t), d.push(h);
|
|
594
|
+
if (t.fidelity === "strict" && m.length) throw new Pt(d);
|
|
595
|
+
for (let h = s; h <= a; h++) {
|
|
466
596
|
k(t.signal);
|
|
467
|
-
const
|
|
468
|
-
for (const
|
|
469
|
-
|
|
470
|
-
c.push(
|
|
597
|
+
const f = e.pages[h], { canvas: g, ctx: C } = mt(f, n, r, t.maxCanvasPixels);
|
|
598
|
+
for (const S of f.components)
|
|
599
|
+
de(C, S, i, r, o, l);
|
|
600
|
+
c.push(g);
|
|
471
601
|
}
|
|
472
602
|
return { canvases: c, diagnostics: d };
|
|
473
603
|
}
|
|
474
|
-
function
|
|
475
|
-
return n < t ? [] : e.pages.slice(t, n + 1).flatMap((r, i) => [...
|
|
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 }) => ({
|
|
476
606
|
code: "async-image-required",
|
|
477
607
|
severity: "warning",
|
|
478
608
|
format: "canvas",
|
|
479
609
|
pageIndex: t + i,
|
|
480
610
|
componentIndex: l,
|
|
481
|
-
componentPath:
|
|
611
|
+
componentPath: s,
|
|
482
612
|
kind: o.kind,
|
|
483
613
|
nid: o.nid,
|
|
484
614
|
message: "Use renderPlanToCanvasAsync or renderPlanToImages to decode and include images."
|
|
485
615
|
})));
|
|
486
616
|
}
|
|
487
|
-
async function
|
|
617
|
+
async function vr(e, t = {}) {
|
|
488
618
|
if (typeof document > "u") throw new Error("renderPlanToCanvasAsync 需要浏览器环境(Node 请使用 PDF 或 XLSX 输出)");
|
|
489
619
|
k(t.signal);
|
|
490
|
-
const n = await
|
|
620
|
+
const n = await Ee(e, { ...t, format: "canvas" });
|
|
491
621
|
e = n.plan;
|
|
492
|
-
const r = [...n.diagnostics, ...
|
|
622
|
+
const r = [...n.diagnostics, ...Z(e, "canvas", t)], i = [], o = Math.min(e.pages.length - 1, t.end ?? e.pages.length - 1);
|
|
493
623
|
for (let l = Math.max(0, t.start ?? 0); l <= o; l++)
|
|
494
|
-
i.push(await
|
|
624
|
+
i.push(await ht(e.pages[l], l, t, r));
|
|
495
625
|
return { canvases: i, diagnostics: r };
|
|
496
626
|
}
|
|
497
|
-
async function
|
|
498
|
-
const i = n.dpr ?? (typeof devicePixelRatio == "number" ? devicePixelRatio : 1), o = n.dpi ?? 96, l = n.fontFamily ??
|
|
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);
|
|
499
629
|
k(n.signal);
|
|
500
|
-
const { canvas:
|
|
501
|
-
for (const d of e.components)
|
|
502
|
-
return
|
|
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;
|
|
503
633
|
}
|
|
504
|
-
async function
|
|
505
|
-
const i = n.imageLoader ??
|
|
506
|
-
return
|
|
634
|
+
async function ft(e, t, n, r) {
|
|
635
|
+
const i = n.imageLoader ?? Yt;
|
|
636
|
+
return Zt(e, async (o, l) => {
|
|
507
637
|
try {
|
|
508
638
|
return await i(o, l);
|
|
509
|
-
} catch (
|
|
510
|
-
if (l?.aborted) throw
|
|
511
|
-
const
|
|
512
|
-
throw r.push(
|
|
639
|
+
} catch (s) {
|
|
640
|
+
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;
|
|
513
643
|
}
|
|
514
644
|
}, n.signal);
|
|
515
645
|
}
|
|
516
|
-
function
|
|
517
|
-
const n = t.dpr ?? (typeof devicePixelRatio == "number" ? devicePixelRatio : 1), r = t.dpi ?? 96, i = r / 96 *
|
|
518
|
-
let
|
|
519
|
-
const
|
|
520
|
-
function
|
|
521
|
-
const
|
|
522
|
-
|
|
523
|
-
const
|
|
524
|
-
for (let
|
|
525
|
-
const
|
|
526
|
-
|
|
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() {
|
|
651
|
+
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 = [];
|
|
653
|
+
const R = Math.min(e.pages.length, 3 + s * 2);
|
|
654
|
+
for (let z = 0; z < R; z++) {
|
|
655
|
+
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);
|
|
527
657
|
}
|
|
528
|
-
|
|
529
|
-
}
|
|
530
|
-
async function
|
|
531
|
-
const
|
|
532
|
-
|
|
533
|
-
const
|
|
534
|
-
if (
|
|
535
|
-
const { widthPx:
|
|
536
|
-
let
|
|
537
|
-
(!
|
|
538
|
-
const
|
|
539
|
-
|
|
540
|
-
const
|
|
541
|
-
if (
|
|
542
|
-
|
|
543
|
-
for (const
|
|
544
|
-
|
|
545
|
-
|
|
658
|
+
g.appendChild(S), p.appendChild(g);
|
|
659
|
+
}
|
|
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);
|
|
664
|
+
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");
|
|
671
|
+
if (W) {
|
|
672
|
+
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`;
|
|
546
676
|
}
|
|
547
677
|
}
|
|
548
|
-
function
|
|
549
|
-
|
|
550
|
-
const
|
|
551
|
-
|
|
552
|
-
const
|
|
553
|
-
|
|
554
|
-
if (
|
|
555
|
-
|
|
556
|
-
const
|
|
557
|
-
|
|
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`;
|
|
680
|
+
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`;
|
|
682
|
+
const z = p.end - p.start + 1;
|
|
683
|
+
w.forEach((E, P) => {
|
|
684
|
+
if (P < z) {
|
|
685
|
+
E.style.display = "";
|
|
686
|
+
const ne = p.start + P;
|
|
687
|
+
E.style.height = `${d[ne] ?? 0}px`;
|
|
558
688
|
} else
|
|
559
|
-
|
|
560
|
-
}),
|
|
561
|
-
for (let
|
|
562
|
-
const
|
|
563
|
-
if (!
|
|
564
|
-
|
|
689
|
+
E.style.display = "none";
|
|
690
|
+
}), y = [];
|
|
691
|
+
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);
|
|
565
695
|
}
|
|
566
|
-
|
|
567
|
-
}
|
|
568
|
-
function
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
let
|
|
572
|
-
for (;
|
|
573
|
-
const
|
|
574
|
-
|
|
696
|
+
he();
|
|
697
|
+
}
|
|
698
|
+
function he() {
|
|
699
|
+
v || y.length === 0 || (v = requestAnimationFrame(() => {
|
|
700
|
+
v = 0;
|
|
701
|
+
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(() => {
|
|
575
705
|
});
|
|
576
706
|
}
|
|
577
|
-
|
|
707
|
+
y.length > 0 && he();
|
|
578
708
|
}));
|
|
579
709
|
}
|
|
580
|
-
function
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
const
|
|
710
|
+
function ee() {
|
|
711
|
+
v || (v = requestAnimationFrame(() => {
|
|
712
|
+
v = 0;
|
|
713
|
+
const p = f, R = en({
|
|
584
714
|
pageHeightsPx: d,
|
|
585
|
-
viewportHeightPx:
|
|
586
|
-
scrollTopPx:
|
|
587
|
-
overscan:
|
|
588
|
-
gapPx:
|
|
715
|
+
viewportHeightPx: p.clientHeight,
|
|
716
|
+
scrollTopPx: p.scrollTop,
|
|
717
|
+
overscan: s,
|
|
718
|
+
gapPx: a
|
|
589
719
|
});
|
|
590
|
-
|
|
720
|
+
R.start !== h.start || R.end !== h.end ? vt(R) : he();
|
|
591
721
|
}));
|
|
592
722
|
}
|
|
593
|
-
let
|
|
723
|
+
let te = null;
|
|
594
724
|
return {
|
|
595
|
-
attach(
|
|
725
|
+
attach(p) {
|
|
596
726
|
if (typeof document > "u")
|
|
597
727
|
throw new Error("createCanvasPager 需要浏览器环境(SSR 请在客户端钩子中调用 attach)");
|
|
598
|
-
k(t.signal),
|
|
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();
|
|
599
729
|
},
|
|
600
730
|
destroy() {
|
|
601
|
-
|
|
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;
|
|
602
732
|
},
|
|
603
733
|
window() {
|
|
604
|
-
return { ...
|
|
734
|
+
return { ...h };
|
|
605
735
|
}
|
|
606
736
|
};
|
|
607
|
-
function
|
|
608
|
-
|
|
737
|
+
function Ie() {
|
|
738
|
+
L.abort(t.signal?.reason);
|
|
609
739
|
}
|
|
610
740
|
}
|
|
611
|
-
function
|
|
741
|
+
function gt(e, t, n) {
|
|
612
742
|
let r, i;
|
|
613
743
|
if (typeof e == "string") {
|
|
614
|
-
const o =
|
|
615
|
-
if (!o) throw new Error(`未知纸张预设 "${e}"(可用:${Object.keys(
|
|
744
|
+
const o = oe[e];
|
|
745
|
+
if (!o) throw new Error(`未知纸张预设 "${e}"(可用:${Object.keys(oe).join("/")})`);
|
|
616
746
|
r = o.widthMm, i = o.heightMm;
|
|
617
747
|
} else typeof e == "number" ? (r = e, i = t ?? 297) : (r = e.widthMm, i = e.heightMm);
|
|
618
748
|
return n ? { widthMm: i, heightMm: r } : { widthMm: r, heightMm: i };
|
|
619
749
|
}
|
|
620
|
-
class
|
|
750
|
+
class cn {
|
|
621
751
|
constructor() {
|
|
622
752
|
this.pages = [], this.pending = null, this.templateParams = void 0;
|
|
623
753
|
}
|
|
@@ -650,18 +780,18 @@ class Lt {
|
|
|
650
780
|
*/
|
|
651
781
|
page(t = "a4", n = {}, r) {
|
|
652
782
|
this.collect();
|
|
653
|
-
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:
|
|
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(
|
|
654
784
|
t,
|
|
655
785
|
typeof n == "number" ? n : void 0,
|
|
656
786
|
o.landscape
|
|
657
|
-
),
|
|
658
|
-
return this.pending = new
|
|
787
|
+
), a = o.margins ?? {};
|
|
788
|
+
return this.pending = new dn(this, {
|
|
659
789
|
widthMm: l,
|
|
660
|
-
heightMm:
|
|
661
|
-
marginTopMm:
|
|
662
|
-
marginBottomMm:
|
|
663
|
-
marginLeftMm:
|
|
664
|
-
marginRightMm:
|
|
790
|
+
heightMm: s,
|
|
791
|
+
marginTopMm: a.marginTopMm ?? 10,
|
|
792
|
+
marginBottomMm: a.marginBottomMm ?? 10,
|
|
793
|
+
marginLeftMm: a.marginLeftMm ?? 10,
|
|
794
|
+
marginRightMm: a.marginRightMm ?? 10
|
|
665
795
|
}), this.pending;
|
|
666
796
|
}
|
|
667
797
|
collect() {
|
|
@@ -677,7 +807,7 @@ class Lt {
|
|
|
677
807
|
};
|
|
678
808
|
}
|
|
679
809
|
}
|
|
680
|
-
class
|
|
810
|
+
class dn {
|
|
681
811
|
constructor(t, n) {
|
|
682
812
|
this.parent = t, this.page = n, this.components = [];
|
|
683
813
|
}
|
|
@@ -746,26 +876,27 @@ class Dt {
|
|
|
746
876
|
return this.done().build();
|
|
747
877
|
}
|
|
748
878
|
}
|
|
749
|
-
function
|
|
750
|
-
return new
|
|
879
|
+
function Sr() {
|
|
880
|
+
return new cn();
|
|
751
881
|
}
|
|
752
|
-
function
|
|
753
|
-
return
|
|
882
|
+
function Er(e, t = {}) {
|
|
883
|
+
return Et([], e), e.fields.map((n) => ({
|
|
754
884
|
field: n.field,
|
|
755
885
|
header: `${n.label ?? n.field}${n.unit ? ` (${n.unit})` : ""}`,
|
|
756
886
|
semanticRole: n.semanticRole ?? (n.type === "number" || n.type === "decimal" ? "measure" : n.type === "date" ? "date" : n.enum ? "dimension" : "text"),
|
|
887
|
+
...n.format ? { format: { ...n.format } } : {},
|
|
757
888
|
...t[n.field]
|
|
758
889
|
}));
|
|
759
890
|
}
|
|
760
|
-
function
|
|
891
|
+
function O(e, t, n = !1) {
|
|
761
892
|
if (!Number.isFinite(e) || (n ? e < 0 : e <= 0))
|
|
762
893
|
throw new Error(`${t} 必须是有限${n ? "非负" : "正"}数`);
|
|
763
894
|
}
|
|
764
|
-
function
|
|
895
|
+
function ae(e, t, n) {
|
|
765
896
|
if (e !== void 0 && !["left", "center", "right", "justify", ...n ? ["auto"] : []].includes(e))
|
|
766
897
|
throw new Error(`${t} 必须是 left/center/right/justify${n ? "/auto" : ""}`);
|
|
767
898
|
}
|
|
768
|
-
function
|
|
899
|
+
function mn(e) {
|
|
769
900
|
const t = e.layout ?? "page";
|
|
770
901
|
if (t !== "page" && t !== "wide")
|
|
771
902
|
throw new Error("layout 必须是 page 或 wide");
|
|
@@ -774,18 +905,18 @@ function Ft(e) {
|
|
|
774
905
|
if (t !== "wide" && e.columnWidthMm !== void 0)
|
|
775
906
|
throw new Error('columnWidthMm 仅适用于 layout: "wide"');
|
|
776
907
|
const n = e.columnWidthMm ?? 30;
|
|
777
|
-
return
|
|
908
|
+
return O(n, "columnWidthMm"), { layout: t, columnWidthMm: n };
|
|
778
909
|
}
|
|
779
|
-
function
|
|
910
|
+
function hn(e) {
|
|
780
911
|
const t = e.paper === void 0 ? "a4" : e.paper;
|
|
781
912
|
if (typeof t != "string" && (typeof t != "object" || t === null) || e.landscape !== void 0 && typeof e.landscape != "boolean")
|
|
782
913
|
throw new Error("paper 必须是纸张预设名或 { widthMm, heightMm } 对象,landscape 必须是布尔值");
|
|
783
|
-
if (typeof t == "string" && !Object.prototype.hasOwnProperty.call(
|
|
784
|
-
throw new Error(`未知纸张预设 "${t}"(可用:${Object.keys(
|
|
785
|
-
const n =
|
|
786
|
-
return
|
|
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 };
|
|
787
918
|
}
|
|
788
|
-
function
|
|
919
|
+
function fn(e) {
|
|
789
920
|
if (e.margins !== void 0 && (!e.margins || typeof e.margins != "object" || Array.isArray(e.margins)))
|
|
790
921
|
throw new Error("margins 必须是页边距对象");
|
|
791
922
|
const t = e.margins ?? {}, n = {
|
|
@@ -794,133 +925,185 @@ function zt(e) {
|
|
|
794
925
|
marginLeftMm: t.marginLeftMm === void 0 ? 10 : t.marginLeftMm,
|
|
795
926
|
marginRightMm: t.marginRightMm === void 0 ? 10 : t.marginRightMm
|
|
796
927
|
};
|
|
797
|
-
for (const [r, i] of Object.entries(n))
|
|
928
|
+
for (const [r, i] of Object.entries(n)) O(i, r, !0);
|
|
798
929
|
return n;
|
|
799
930
|
}
|
|
800
|
-
function
|
|
931
|
+
function gn(e, t) {
|
|
801
932
|
const n = e.dataset === void 0 ? "detail" : e.dataset;
|
|
802
933
|
if (typeof n != "string" || !n.trim())
|
|
803
934
|
throw new Error("dataset 必须是非空字符串");
|
|
804
935
|
if (e.title !== void 0 && typeof e.title != "string")
|
|
805
936
|
throw new Error("title 必须是字符串");
|
|
806
937
|
const r = e.titleHeightMm === void 0 ? 10 : e.titleHeightMm, i = e.titleGapMm === void 0 ? 4 : e.titleGapMm;
|
|
807
|
-
|
|
938
|
+
O(r, "titleHeightMm"), O(i, "titleGapMm", !0);
|
|
808
939
|
const o = e.title !== void 0 && e.title.length > 0, l = o ? r + i : 0;
|
|
809
940
|
if (l >= t)
|
|
810
941
|
throw new Error("标题高度与间距占满页面,必须为表格保留可用高度");
|
|
811
942
|
return { dataset: n, titleHeightMm: r, hasTitle: o, titleSpaceMm: l };
|
|
812
943
|
}
|
|
813
|
-
function
|
|
944
|
+
function un(e) {
|
|
814
945
|
if (e.listOptions !== void 0 && (!e.listOptions || typeof e.listOptions != "object" || Array.isArray(e.listOptions)))
|
|
815
946
|
throw new Error("listOptions 必须是列表配置对象");
|
|
816
947
|
const t = e.listOptions ?? {};
|
|
817
|
-
|
|
948
|
+
ae(t.align, "listOptions.align", !0), ae(t.headerAlign, "listOptions.headerAlign", !1);
|
|
818
949
|
for (const n of ["fontSizePt", "rowHeightMm", "paddingMm"]) {
|
|
819
950
|
const r = t[n];
|
|
820
|
-
r !== void 0 &&
|
|
951
|
+
r !== void 0 && O(r, `listOptions.${n}`, n === "paddingMm");
|
|
821
952
|
}
|
|
822
953
|
return t;
|
|
823
954
|
}
|
|
824
|
-
function
|
|
955
|
+
function pn(e) {
|
|
825
956
|
let t = 0, n = 0;
|
|
826
957
|
for (const [r, i] of e.entries()) {
|
|
827
958
|
if (!i || typeof i.header != "string" || typeof i.field != "string" || !i.field.trim())
|
|
828
959
|
throw new Error(`columns[${r}] 需要字符串 header 与非空 field`);
|
|
829
|
-
|
|
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);
|
|
830
961
|
}
|
|
831
962
|
return { fixedWidthMm: t, maxFlex: n };
|
|
832
963
|
}
|
|
833
|
-
function
|
|
834
|
-
const { fixedWidthMm: i, maxFlex: o } =
|
|
964
|
+
function wn(e, t, n, r) {
|
|
965
|
+
const { fixedWidthMm: i, maxFlex: o } = pn(e.columns);
|
|
835
966
|
if (t === "page" && i > r)
|
|
836
967
|
throw new Error(`固定列宽 ${i}mm 超出页面可用宽度 ${r}mm`);
|
|
837
968
|
const l = r - i;
|
|
838
969
|
if (t === "page" && o > 0 && l <= 0)
|
|
839
970
|
throw new Error("固定列占满页面可用宽度,自动列需要正的剩余宽度");
|
|
840
|
-
const
|
|
841
|
-
return { columns: e.columns.map(({ widthMm: c, flex: d, ...
|
|
842
|
-
const
|
|
843
|
-
return
|
|
971
|
+
const s = o > 0 ? e.columns.reduce((c, d) => c + (d.widthMm === void 0 ? (d.flex ?? 1) / o : 0), 0) : 0;
|
|
972
|
+
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 };
|
|
844
975
|
}), fixedWidthMm: i, maxFlex: o };
|
|
845
976
|
}
|
|
846
|
-
function
|
|
977
|
+
function Cr(e) {
|
|
847
978
|
if (!e || typeof e != "object")
|
|
848
979
|
throw new Error("标准明细模板需要 options 对象");
|
|
849
980
|
if (!Array.isArray(e.columns) || e.columns.length === 0)
|
|
850
981
|
throw new Error("columns 至少需要一列");
|
|
851
|
-
const { layout: t, columnWidthMm: n } =
|
|
982
|
+
const { layout: t, columnWidthMm: n } = mn(e), r = hn(e);
|
|
852
983
|
let i = r.widthMm;
|
|
853
|
-
const o = r.heightMm, l =
|
|
854
|
-
let
|
|
855
|
-
const
|
|
856
|
-
if (t === "page" &&
|
|
984
|
+
const o = r.heightMm, l = fn(e);
|
|
985
|
+
let s = i - l.marginLeftMm - l.marginRightMm;
|
|
986
|
+
const a = o - l.marginTopMm - l.marginBottomMm;
|
|
987
|
+
if (t === "page" && s <= 0 || a <= 0)
|
|
857
988
|
throw new Error("页边距占满纸张,必须保留正的可用宽度和高度");
|
|
858
|
-
const { dataset: c, titleHeightMm: d, hasTitle:
|
|
859
|
-
t === "wide" && (
|
|
860
|
-
const
|
|
861
|
-
return
|
|
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({
|
|
862
993
|
kind: "text",
|
|
863
994
|
text: e.title,
|
|
864
995
|
leftMm: l.marginLeftMm,
|
|
865
996
|
topMm: l.marginTopMm,
|
|
866
|
-
widthMm:
|
|
997
|
+
widthMm: s,
|
|
867
998
|
heightMm: d,
|
|
868
999
|
style: { fontSize: 16, bold: !0, align: "center", verticalAlign: "middle", ...e.titleStyle }
|
|
869
|
-
}),
|
|
1000
|
+
}), w.components.push({
|
|
870
1001
|
align: "auto",
|
|
871
1002
|
headerAlign: "center",
|
|
872
|
-
...
|
|
1003
|
+
...f,
|
|
873
1004
|
kind: "list",
|
|
874
1005
|
...t === "wide" ? { layout: t } : {},
|
|
875
|
-
...
|
|
1006
|
+
...m ? { title: e.title } : {},
|
|
876
1007
|
dataset: c,
|
|
877
|
-
columns:
|
|
1008
|
+
columns: g,
|
|
878
1009
|
leftMm: l.marginLeftMm,
|
|
879
|
-
topMm: l.marginTopMm +
|
|
880
|
-
widthMm: t === "wide" ||
|
|
881
|
-
}), e.params === void 0 ? { pages: [
|
|
1010
|
+
topMm: l.marginTopMm + h,
|
|
1011
|
+
widthMm: t === "wide" || S > 0 ? s : C
|
|
1012
|
+
}), e.params === void 0 ? { pages: [w] } : { params: e.params, pages: [w] };
|
|
882
1013
|
}
|
|
883
|
-
function
|
|
1014
|
+
function Tr(e) {
|
|
884
1015
|
if (e.components !== void 0 && e.pages !== void 0) throw new TypeError("标签 components 与 pages 只能选择一种");
|
|
885
1016
|
const { dataset: t, rowKey: n, copies: r, params: i } = e, o = e.pages ?? [{ components: e.components ?? [] }], l = {
|
|
886
1017
|
repeat: { dataset: t, ...n === void 0 ? {} : { rowKey: n }, ...r === void 0 ? {} : { copies: r } },
|
|
887
1018
|
...i === void 0 ? {} : { params: i },
|
|
888
|
-
pages: o.map((
|
|
889
|
-
widthMm:
|
|
890
|
-
heightMm:
|
|
1019
|
+
pages: o.map((a) => ({
|
|
1020
|
+
widthMm: a.widthMm ?? e.widthMm ?? 80,
|
|
1021
|
+
heightMm: a.heightMm ?? e.heightMm ?? 55,
|
|
891
1022
|
marginTopMm: 0,
|
|
892
1023
|
marginRightMm: 0,
|
|
893
1024
|
marginBottomMm: 0,
|
|
894
1025
|
marginLeftMm: 0,
|
|
895
|
-
components:
|
|
896
|
-
...
|
|
1026
|
+
components: a.components,
|
|
1027
|
+
...a.meta === void 0 ? {} : { meta: a.meta }
|
|
897
1028
|
}))
|
|
898
|
-
},
|
|
899
|
-
if (!
|
|
1029
|
+
}, s = Xe(l);
|
|
1030
|
+
if (!s.ok) throw new Ze(s.errors);
|
|
900
1031
|
return JSON.parse(JSON.stringify(l));
|
|
901
1032
|
}
|
|
902
|
-
function
|
|
1033
|
+
function bn(e) {
|
|
903
1034
|
if (!e || typeof e != "object" || !e.repeat)
|
|
904
|
-
throw new
|
|
905
|
-
const t =
|
|
906
|
-
if (!t.ok) throw new
|
|
1035
|
+
throw new ve("config", "defineLabelReport 需要带 repeat 的固定标签模板");
|
|
1036
|
+
const t = Xe(e);
|
|
1037
|
+
if (!t.ok) throw new Ze(t.errors);
|
|
907
1038
|
return e.repeat.dataset;
|
|
908
1039
|
}
|
|
909
|
-
function
|
|
910
|
-
if (!Array.isArray(e)) throw new
|
|
1040
|
+
function He(e, t) {
|
|
1041
|
+
if (!Array.isArray(e)) throw new ve("validate", "标签数据应为对象数组;请从业务响应中提取行数组");
|
|
911
1042
|
return { [t]: e };
|
|
912
1043
|
}
|
|
913
|
-
function
|
|
914
|
-
const { template: t, rows: n, load: r, dataSchema: i, params: o, pagination: l, dataValidation:
|
|
1044
|
+
function Rr(e) {
|
|
1045
|
+
const { template: t, rows: n, load: r, dataSchema: i, params: o, pagination: l, dataValidation: s } = e, a = bn(t);
|
|
915
1046
|
if (n !== void 0 == (r !== void 0) || r !== void 0 && typeof r != "function")
|
|
916
|
-
throw new
|
|
917
|
-
const c = { template: t, params: o, pagination: l, dataValidation:
|
|
918
|
-
return r ?
|
|
1047
|
+
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) };
|
|
919
1050
|
}
|
|
920
|
-
function
|
|
1051
|
+
function $r(e) {
|
|
921
1052
|
return e;
|
|
922
1053
|
}
|
|
923
|
-
class
|
|
1054
|
+
class F extends Error {
|
|
1055
|
+
constructor(t, n) {
|
|
1056
|
+
super(n), this.code = t, this.name = "ReportTemplateMigrationError";
|
|
1057
|
+
}
|
|
1058
|
+
}
|
|
1059
|
+
function Be(e) {
|
|
1060
|
+
let t = e;
|
|
1061
|
+
if (typeof t == "string") {
|
|
1062
|
+
if (t.length > 1e7) throw new F("result", "模板迁移输入超过预算");
|
|
1063
|
+
try {
|
|
1064
|
+
t = JSON.parse(t);
|
|
1065
|
+
} catch {
|
|
1066
|
+
throw new F("result", "模板 JSON 语法无效");
|
|
1067
|
+
}
|
|
1068
|
+
}
|
|
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", "模板迁移应返回文档对象");
|
|
1071
|
+
return n;
|
|
1072
|
+
}
|
|
1073
|
+
function yn(e) {
|
|
1074
|
+
if (!Array.isArray(e) || e.length > 32) throw new F("definition", "模板迁移最多声明 32 步");
|
|
1075
|
+
const t = /* @__PURE__ */ new Map();
|
|
1076
|
+
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", "迁移起点应唯一,不得从当前版本降级");
|
|
1078
|
+
t.set(n.from, { ...n });
|
|
1079
|
+
}
|
|
1080
|
+
for (const n of t.keys()) {
|
|
1081
|
+
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;
|
|
1086
|
+
}
|
|
1087
|
+
if (i !== pe) throw new F("definition", "每条迁移链应到达当前模板版本");
|
|
1088
|
+
}
|
|
1089
|
+
return t;
|
|
1090
|
+
}
|
|
1091
|
+
function Mn(e = []) {
|
|
1092
|
+
const t = yn(e);
|
|
1093
|
+
return async (n) => {
|
|
1094
|
+
let r = Be(n);
|
|
1095
|
+
const i = [];
|
|
1096
|
+
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;
|
|
1102
|
+
}
|
|
1103
|
+
return { document: re(r), steps: i };
|
|
1104
|
+
};
|
|
1105
|
+
}
|
|
1106
|
+
class j extends Error {
|
|
924
1107
|
constructor(t, n) {
|
|
925
1108
|
super(n), this.code = t, this.name = "ReportTemplateStoreError";
|
|
926
1109
|
}
|
|
@@ -928,134 +1111,342 @@ class D extends Error {
|
|
|
928
1111
|
function I(e) {
|
|
929
1112
|
return JSON.parse(JSON.stringify(e));
|
|
930
1113
|
}
|
|
931
|
-
function
|
|
1114
|
+
function T(e) {
|
|
932
1115
|
if (!e?.aborted) return;
|
|
933
1116
|
const t = new Error("模板操作已取消");
|
|
934
1117
|
throw t.name = "AbortError", t;
|
|
935
1118
|
}
|
|
936
|
-
function
|
|
1119
|
+
function _e(e) {
|
|
937
1120
|
const t = e ? Number(e.revision) : 0;
|
|
938
|
-
if (!Number.isSafeInteger(t) || t < 0 || t >= Number.MAX_SAFE_INTEGER) throw new
|
|
1121
|
+
if (!Number.isSafeInteger(t) || t < 0 || t >= Number.MAX_SAFE_INTEGER) throw new j("history", "修订号无效或已达上限");
|
|
939
1122
|
return String(t + 1);
|
|
940
1123
|
}
|
|
941
|
-
function
|
|
942
|
-
const n = async (
|
|
943
|
-
|
|
944
|
-
const
|
|
945
|
-
return
|
|
946
|
-
},
|
|
947
|
-
const
|
|
948
|
-
if ((
|
|
949
|
-
return
|
|
950
|
-
},
|
|
951
|
-
if (
|
|
952
|
-
return I(
|
|
953
|
-
},
|
|
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) => {
|
|
1126
|
+
T(c);
|
|
1127
|
+
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", "模板已变化,请重新读取后提交");
|
|
1132
|
+
return d;
|
|
1133
|
+
}, 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);
|
|
1136
|
+
}, s = async (a, c, d, m) => {
|
|
954
1137
|
if (t.beforePublish) {
|
|
955
|
-
|
|
956
|
-
const
|
|
957
|
-
|
|
958
|
-
S(
|
|
1138
|
+
T(d.signal);
|
|
1139
|
+
const C = a.published ? await r(a.published) : void 0;
|
|
1140
|
+
T(d.signal);
|
|
1141
|
+
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 ?? "模板发布检查未通过");
|
|
1143
|
+
T(d.signal);
|
|
959
1144
|
}
|
|
960
|
-
const
|
|
961
|
-
return
|
|
1145
|
+
const h = _e(a), f = re({ ...c, revision: h }), g = { revision: h, document: f, publishedAt: (t.now?.() ?? /* @__PURE__ */ new Date()).toISOString() };
|
|
1146
|
+
return m !== void 0 && (g.restoredFrom = m), l({ id: a.id, revision: h, publishedRevision: h, published: f }, d, g);
|
|
962
1147
|
};
|
|
963
1148
|
return {
|
|
964
|
-
list: async (
|
|
965
|
-
|
|
966
|
-
const
|
|
967
|
-
return
|
|
1149
|
+
list: async (a) => {
|
|
1150
|
+
T(a);
|
|
1151
|
+
const c = await e.list(a);
|
|
1152
|
+
return T(a), I(c);
|
|
968
1153
|
},
|
|
969
|
-
get: async (
|
|
970
|
-
const
|
|
971
|
-
return
|
|
1154
|
+
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;
|
|
1156
|
+
return T(c.signal), h;
|
|
972
1157
|
},
|
|
973
|
-
history: async (
|
|
974
|
-
|
|
975
|
-
const
|
|
976
|
-
return
|
|
1158
|
+
history: async (a, c) => {
|
|
1159
|
+
T(c);
|
|
1160
|
+
const d = await e.history(a, c);
|
|
1161
|
+
return T(c), I(d);
|
|
977
1162
|
},
|
|
978
|
-
saveDraft: async (
|
|
979
|
-
|
|
980
|
-
const
|
|
981
|
-
return
|
|
982
|
-
id:
|
|
983
|
-
revision:
|
|
984
|
-
draft: { ...
|
|
985
|
-
...
|
|
986
|
-
},
|
|
1163
|
+
saveDraft: async (a, c) => {
|
|
1164
|
+
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);
|
|
1166
|
+
return l({
|
|
1167
|
+
id: d.id,
|
|
1168
|
+
revision: h,
|
|
1169
|
+
draft: { ...d, revision: h },
|
|
1170
|
+
...m?.publishedRevision ? { publishedRevision: m.publishedRevision, published: m.published } : {}
|
|
1171
|
+
}, c);
|
|
987
1172
|
},
|
|
988
|
-
publish: async (
|
|
989
|
-
|
|
990
|
-
const
|
|
991
|
-
if (!
|
|
992
|
-
if (!
|
|
993
|
-
return
|
|
1173
|
+
publish: async (a, c) => {
|
|
1174
|
+
c = { ...c };
|
|
1175
|
+
const d = await o(a, c);
|
|
1176
|
+
if (!d) throw new j("missing", "模板不存在");
|
|
1177
|
+
if (!d.draft) throw new j("draft", "没有可发布的草稿");
|
|
1178
|
+
return s(d, await r(d.draft), c);
|
|
994
1179
|
},
|
|
995
|
-
rollback: async (
|
|
996
|
-
|
|
997
|
-
const
|
|
998
|
-
if (!
|
|
999
|
-
|
|
1000
|
-
const
|
|
1001
|
-
if (!
|
|
1002
|
-
return
|
|
1180
|
+
rollback: async (a, c, d) => {
|
|
1181
|
+
d = { ...d };
|
|
1182
|
+
const m = await o(a, d);
|
|
1183
|
+
if (!m) throw new j("missing", "模板不存在");
|
|
1184
|
+
T(d.signal);
|
|
1185
|
+
const h = await e.getVersion(a, c, d.signal);
|
|
1186
|
+
if (!h) throw new j("history", "历史修订不存在");
|
|
1187
|
+
return s(m, await r(h.document), d, c);
|
|
1003
1188
|
}
|
|
1004
1189
|
};
|
|
1005
1190
|
}
|
|
1006
|
-
function
|
|
1191
|
+
function Ar() {
|
|
1007
1192
|
const e = /* @__PURE__ */ new Map(), t = /* @__PURE__ */ new Map();
|
|
1008
1193
|
return {
|
|
1009
1194
|
read: async (n, r) => {
|
|
1010
|
-
|
|
1195
|
+
T(r);
|
|
1011
1196
|
const i = e.get(n);
|
|
1012
1197
|
return i ? I(i) : void 0;
|
|
1013
1198
|
},
|
|
1014
|
-
list: async (n) => (
|
|
1015
|
-
history: async (n, r) => (
|
|
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))),
|
|
1016
1201
|
getVersion: async (n, r, i) => {
|
|
1017
|
-
|
|
1202
|
+
T(i);
|
|
1018
1203
|
const o = t.get(n)?.get(r);
|
|
1019
1204
|
return o ? I(o) : void 0;
|
|
1020
1205
|
},
|
|
1021
1206
|
compareAndSwap: async (n, r, i, o) => {
|
|
1022
|
-
if (
|
|
1023
|
-
if (i.id !== n) throw new
|
|
1024
|
-
const l = I(i),
|
|
1025
|
-
if (
|
|
1026
|
-
const
|
|
1027
|
-
if (
|
|
1028
|
-
|
|
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;
|
|
1210
|
+
if (s) {
|
|
1211
|
+
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);
|
|
1029
1214
|
}
|
|
1030
1215
|
return e.set(n, l), !0;
|
|
1031
1216
|
}
|
|
1032
1217
|
};
|
|
1033
1218
|
}
|
|
1034
|
-
|
|
1219
|
+
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";
|
|
1222
|
+
}
|
|
1223
|
+
}
|
|
1224
|
+
const vn = /* @__PURE__ */ new Set(["__proto__", "constructor", "prototype"]);
|
|
1225
|
+
function K(e, t = "$", n = { nodes: 0, units: 0 }, r = 0) {
|
|
1226
|
+
if (++n.nodes > 2048 || r > 16) throw new u("binding", "Component extension JSON exceeds its depth/node budget.", t);
|
|
1227
|
+
if (n.units > 64 * 1024) throw new u("binding", "Component extension JSON exceeds 64 Ki UTF-16 units.", t);
|
|
1228
|
+
if (e === null || typeof e == "boolean" || typeof e == "number" && Number.isFinite(e)) return e;
|
|
1229
|
+
if (typeof e == "string") {
|
|
1230
|
+
if (n.units += e.length, n.units > 64 * 1024) throw new u("binding", "Component extension JSON exceeds 64 Ki UTF-16 units.", t);
|
|
1231
|
+
return e;
|
|
1232
|
+
}
|
|
1233
|
+
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);
|
|
1238
|
+
}
|
|
1239
|
+
function Pe(e, t, n) {
|
|
1240
|
+
const r = Object.getOwnPropertyDescriptor(e, t);
|
|
1241
|
+
if (typeof t != "string" || vn.has(t) || !r?.enumerable || r.get || r.set)
|
|
1242
|
+
throw new u("binding", "Component extension JSON contains an unsafe key or accessor.", n);
|
|
1243
|
+
return r.value;
|
|
1244
|
+
}
|
|
1245
|
+
function xn(e, t, n, r) {
|
|
1246
|
+
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)));
|
|
1248
|
+
}
|
|
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);
|
|
1254
|
+
return n.units += String(l).length, [l, K(a, s, n, r + 1)];
|
|
1255
|
+
});
|
|
1256
|
+
return Object.freeze(Object.fromEntries(o));
|
|
1257
|
+
}
|
|
1258
|
+
function Q(e, t) {
|
|
1259
|
+
if (!e || typeof e != "object" || Array.isArray(e)) throw new u("binding", "Expected a component extension object.", t);
|
|
1260
|
+
return e;
|
|
1261
|
+
}
|
|
1262
|
+
function me(e, t, n) {
|
|
1263
|
+
for (const r of Object.keys(e)) if (!t.includes(r)) throw new u("binding", "Unknown component extension property.", `${n}.${r}`);
|
|
1264
|
+
}
|
|
1265
|
+
function be(e, t, n = 160) {
|
|
1266
|
+
if (typeof e != "string" || !e.trim() || e.length > n) throw new u("definition", "Component extension labels must be bounded nonempty strings.", t);
|
|
1267
|
+
}
|
|
1268
|
+
function ut(e, t) {
|
|
1269
|
+
if (typeof e != "string" || !/^[a-z][a-z\d_.-]{0,127}$/i.test(e)) throw new u("definition", "Invalid component extension id.", "$.id");
|
|
1270
|
+
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
|
+
}
|
|
1272
|
+
function Ae(e, t, n) {
|
|
1273
|
+
if (!(e === null && !t.required)) {
|
|
1274
|
+
if (typeof e !== t.type || typeof e == "number" && !Number.isFinite(e)) throw new u("binding", `Expected ${t.type} component property.`, n);
|
|
1275
|
+
if (t.options && !t.options.some((r) => Object.is(r, e))) throw new u("binding", "Component property is outside its declared options.", n);
|
|
1276
|
+
if (typeof e == "number" && (e < (t.min ?? -1 / 0) || e > (t.max ?? 1 / 0))) throw new u("binding", "Component property is outside its declared range.", n);
|
|
1277
|
+
if (typeof e == "string" && e.length > (t.maxLength ?? 64 * 1024)) throw new u("binding", "Component property exceeds maxLength.", n);
|
|
1278
|
+
}
|
|
1279
|
+
}
|
|
1280
|
+
function En(e, t) {
|
|
1281
|
+
const n = Q(e, t);
|
|
1282
|
+
me(n, ["label", "type", "required", "default", "options", "min", "max", "maxLength"], t);
|
|
1283
|
+
const r = n;
|
|
1284
|
+
if (be(r.label, `${t}.label`), !["string", "number", "boolean"].includes(r.type)) throw new u("definition", "Unknown component property type.", t);
|
|
1285
|
+
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`);
|
|
1287
|
+
}
|
|
1288
|
+
function Cn(e, t) {
|
|
1289
|
+
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
|
+
if ((e.min ?? -1 / 0) > (e.max ?? 1 / 0)) throw new u("definition", "Component property min exceeds max.", t);
|
|
1291
|
+
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
|
+
if (e.options !== void 0) {
|
|
1293
|
+
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`);
|
|
1295
|
+
}
|
|
1296
|
+
}
|
|
1297
|
+
function Tn(e) {
|
|
1298
|
+
const t = Object.getPrototypeOf(e);
|
|
1299
|
+
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");
|
|
1302
|
+
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}`);
|
|
1306
|
+
}
|
|
1307
|
+
return r;
|
|
1308
|
+
}
|
|
1309
|
+
function pt(e, t) {
|
|
1310
|
+
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;
|
|
1314
|
+
if (l === void 0) {
|
|
1315
|
+
if (o.required) throw new u("binding", "Required component property is missing.", `$.props.${i}`, e.id);
|
|
1316
|
+
continue;
|
|
1317
|
+
}
|
|
1318
|
+
Ae(l, o, `$.props.${i}`), r[i] = l;
|
|
1319
|
+
}
|
|
1320
|
+
return Object.freeze(r);
|
|
1321
|
+
}
|
|
1322
|
+
const H = "componentExtension";
|
|
1323
|
+
function Rn(e) {
|
|
1324
|
+
const t = Object.getOwnPropertyDescriptor(e, "meta")?.value, n = t && Object.getOwnPropertyDescriptor(t, H);
|
|
1325
|
+
if (n) {
|
|
1326
|
+
if (n.get || n.set) throw new u("binding", "Component extension binding cannot be an accessor.", `$.meta.${H}`);
|
|
1327
|
+
return n.value;
|
|
1328
|
+
}
|
|
1329
|
+
}
|
|
1330
|
+
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);
|
|
1333
|
+
const r = e.get(n.id);
|
|
1334
|
+
if (!r) throw new u("binding", "Component extension is not registered in this runtime.", `$.meta.${H}.id`, n.id);
|
|
1335
|
+
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 };
|
|
1338
|
+
}
|
|
1339
|
+
function We(e) {
|
|
1340
|
+
return e.released ??= Promise.resolve().then(() => e.renderer?.dispose?.());
|
|
1341
|
+
}
|
|
1342
|
+
function V(e) {
|
|
1343
|
+
if (e) throw new u("disposed", "Component registry has been disposed.");
|
|
1344
|
+
}
|
|
1345
|
+
function Pn(e) {
|
|
1346
|
+
if (!e || typeof e != "object") throw new u("definition", "Component extension definition must be an object.");
|
|
1347
|
+
if (Object.getPrototypeOf(e) !== Object.prototype && Object.getPrototypeOf(e) !== null) throw new u("definition", "Component extension definition must be a plain object.");
|
|
1348
|
+
const t = Object.getOwnPropertyDescriptor(e, "load");
|
|
1349
|
+
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 };
|
|
1351
|
+
}
|
|
1352
|
+
function An(e, t) {
|
|
1353
|
+
if (!(e && typeof e.render == "function" && (e.dispose === void 0 || typeof e.dispose == "function"))) {
|
|
1354
|
+
if (e && typeof e.dispose == "function")
|
|
1355
|
+
try {
|
|
1356
|
+
Promise.resolve(e.dispose()).catch(() => {
|
|
1357
|
+
});
|
|
1358
|
+
} catch {
|
|
1359
|
+
}
|
|
1360
|
+
throw new u("load", "Component loader must return render and optional dispose methods.", "$.load", t);
|
|
1361
|
+
}
|
|
1362
|
+
}
|
|
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);
|
|
1367
|
+
} };
|
|
1368
|
+
}
|
|
1369
|
+
function kr(e) {
|
|
1370
|
+
if (!Array.isArray(e) || e.length > 128) throw new u("definition", "Register at most 128 component extensions.");
|
|
1371
|
+
const t = /* @__PURE__ */ new Map(), n = new AbortController();
|
|
1372
|
+
let r = !1, i;
|
|
1373
|
+
for (const a of e) {
|
|
1374
|
+
const c = Pn(a), d = c.metadata.id;
|
|
1375
|
+
if (t.has(d)) throw new u("definition", "Component extension id is already registered.", "$.id", d);
|
|
1376
|
+
t.set(d, c);
|
|
1377
|
+
}
|
|
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) => {
|
|
1380
|
+
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
|
+
})), a.pending;
|
|
1382
|
+
}
|
|
1383
|
+
const l = async (a) => {
|
|
1384
|
+
V(r);
|
|
1385
|
+
const { entry: c, extension: d } = $n(t, a.component), m = kn(a.signal, n.signal);
|
|
1386
|
+
try {
|
|
1387
|
+
const h = await Le(o(c), m.signal);
|
|
1388
|
+
return await Le(h.render({ ...a, signal: m.signal, extension: d }), m.signal);
|
|
1389
|
+
} finally {
|
|
1390
|
+
m.dispose();
|
|
1391
|
+
}
|
|
1392
|
+
}, s = {
|
|
1393
|
+
assets: Object.freeze({ get assetRegistry() {
|
|
1394
|
+
return s;
|
|
1395
|
+
} }),
|
|
1396
|
+
describe(a) {
|
|
1397
|
+
return V(r), Object.freeze([...t.values()].map((c) => c.metadata).filter((c) => !a || c.kind === a));
|
|
1398
|
+
},
|
|
1399
|
+
hasExtension(a, c, d) {
|
|
1400
|
+
const m = t.get(a)?.metadata;
|
|
1401
|
+
return !r && m?.version === c && m.kind === d;
|
|
1402
|
+
},
|
|
1403
|
+
rendererFor(a) {
|
|
1404
|
+
const c = Object.getOwnPropertyDescriptor(a, "meta")?.value;
|
|
1405
|
+
return c && Object.prototype.hasOwnProperty.call(c, H) ? l : void 0;
|
|
1406
|
+
},
|
|
1407
|
+
createComponent(a, c = {}) {
|
|
1408
|
+
V(r);
|
|
1409
|
+
const d = t.get(a);
|
|
1410
|
+
if (!d) throw new u("binding", "Component extension is not registered in this runtime.", "$.id", a);
|
|
1411
|
+
const m = Q(K(c), "$");
|
|
1412
|
+
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 } };
|
|
1414
|
+
return { kind: d.metadata.kind, meta: { [H]: Object.freeze(h) } };
|
|
1415
|
+
},
|
|
1416
|
+
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) => {
|
|
1418
|
+
const c = a.find((d) => d.status === "rejected");
|
|
1419
|
+
if (c?.status === "rejected") throw c.reason;
|
|
1420
|
+
}), i);
|
|
1421
|
+
}
|
|
1422
|
+
};
|
|
1423
|
+
return s;
|
|
1424
|
+
}
|
|
1425
|
+
function Or(e) {
|
|
1035
1426
|
return e.map((t) => t.map((n) => /[\t\r\n"]/.test(n) ? `"${n.replace(/"/g, '""')}"` : n).join(" ")).join(`\r
|
|
1036
1427
|
`);
|
|
1037
1428
|
}
|
|
1038
|
-
function
|
|
1429
|
+
function On(e, t) {
|
|
1039
1430
|
const n = e[e.length - 1];
|
|
1040
1431
|
e.length > 1 && n?.length === 1 && n[0] === "" && /[\r\n]$/.test(t) && e.pop();
|
|
1041
1432
|
}
|
|
1042
|
-
function
|
|
1433
|
+
function Ir(e, t = 1e4) {
|
|
1043
1434
|
if (e.length > 4 * 1024 * 1024) throw new Error("Clipboard text limit exceeded");
|
|
1044
1435
|
const n = [[]];
|
|
1045
1436
|
let r = "", i = !1, o = !1, l = 0;
|
|
1046
|
-
function
|
|
1437
|
+
function s() {
|
|
1047
1438
|
if (++l > t) throw new Error("Clipboard cell limit exceeded");
|
|
1048
1439
|
n[n.length - 1].push(r), r = "", o = !1;
|
|
1049
1440
|
}
|
|
1050
|
-
for (let
|
|
1051
|
-
const c = e[
|
|
1441
|
+
for (let a = 0; a < e.length; a++) {
|
|
1442
|
+
const c = e[a];
|
|
1052
1443
|
if (i) {
|
|
1053
1444
|
if (c !== '"') {
|
|
1054
1445
|
r += c;
|
|
1055
1446
|
continue;
|
|
1056
1447
|
}
|
|
1057
|
-
if (e[
|
|
1058
|
-
r += '"',
|
|
1448
|
+
if (e[a + 1] === '"') {
|
|
1449
|
+
r += '"', a++;
|
|
1059
1450
|
continue;
|
|
1060
1451
|
}
|
|
1061
1452
|
i = !1, o = !0;
|
|
@@ -1066,22 +1457,22 @@ function qn(e, t = 1e4) {
|
|
|
1066
1457
|
continue;
|
|
1067
1458
|
}
|
|
1068
1459
|
if (c === " ") {
|
|
1069
|
-
|
|
1460
|
+
s();
|
|
1070
1461
|
continue;
|
|
1071
1462
|
}
|
|
1072
1463
|
if (c === "\r" || c === `
|
|
1073
1464
|
`) {
|
|
1074
|
-
|
|
1075
|
-
` &&
|
|
1465
|
+
s(), n.push([]), c === "\r" && e[a + 1] === `
|
|
1466
|
+
` && a++;
|
|
1076
1467
|
continue;
|
|
1077
1468
|
}
|
|
1078
1469
|
if (o) throw new Error("Invalid quoted clipboard value");
|
|
1079
1470
|
r += c;
|
|
1080
1471
|
}
|
|
1081
1472
|
if (i) throw new Error("Unclosed clipboard quote");
|
|
1082
|
-
return
|
|
1473
|
+
return s(), On(n, e), n;
|
|
1083
1474
|
}
|
|
1084
|
-
class
|
|
1475
|
+
class In extends Error {
|
|
1085
1476
|
constructor(t, n, r) {
|
|
1086
1477
|
const i = typeof n.label == "string" ? n.label : "单元格", o = {
|
|
1087
1478
|
definition: `${i}的编辑器配置无效`,
|
|
@@ -1097,457 +1488,463 @@ class Gt extends Error {
|
|
|
1097
1488
|
super(o[t]), this.code = t, this.field = n, this.expected = r, this.name = "ReportCellFieldError";
|
|
1098
1489
|
}
|
|
1099
1490
|
}
|
|
1100
|
-
function
|
|
1101
|
-
throw new
|
|
1491
|
+
function b(e, t, n) {
|
|
1492
|
+
throw new In(t, e, n);
|
|
1102
1493
|
}
|
|
1103
|
-
function
|
|
1494
|
+
function wt(e) {
|
|
1104
1495
|
if (typeof e != "string" || !/^\d{4}-\d{2}-\d{2}$/.test(e) || e.startsWith("0000-")) return !1;
|
|
1105
1496
|
const t = /* @__PURE__ */ new Date(`${e}T00:00:00.000Z`);
|
|
1106
1497
|
return Number.isFinite(t.getTime()) && t.toISOString().slice(0, 10) === e;
|
|
1107
1498
|
}
|
|
1108
|
-
function
|
|
1499
|
+
function Nn(e) {
|
|
1109
1500
|
const [t = "", n = "0"] = String(e).toLowerCase().split("e");
|
|
1110
1501
|
return Math.max(0, (t.split(".")[1]?.length ?? 0) - Number(n));
|
|
1111
1502
|
}
|
|
1112
|
-
function
|
|
1113
|
-
e.min !== void 0 && t < e.min &&
|
|
1503
|
+
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);
|
|
1114
1505
|
}
|
|
1115
|
-
function
|
|
1116
|
-
|
|
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);
|
|
1117
1508
|
}
|
|
1118
|
-
function
|
|
1119
|
-
[e.min, e.max].some((t) => t !== void 0 && !Number.isFinite(t)) &&
|
|
1509
|
+
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");
|
|
1120
1511
|
}
|
|
1121
|
-
function
|
|
1122
|
-
[e.min, e.max].some((t) => t !== void 0 && !
|
|
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");
|
|
1123
1514
|
}
|
|
1124
|
-
function
|
|
1125
|
-
(!Array.isArray(t.options) || !t.options.length) &&
|
|
1515
|
+
function zn(e, t) {
|
|
1516
|
+
(!Array.isArray(t.options) || !t.options.length) && b(t, "definition");
|
|
1126
1517
|
const n = e.valueType === "text" ? "string" : e.valueType, r = /* @__PURE__ */ new Set();
|
|
1127
1518
|
for (const i of t.options)
|
|
1128
|
-
(!i || typeof i.value !== n || typeof i.value == "number" && !Number.isFinite(i.value)) &&
|
|
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);
|
|
1129
1520
|
}
|
|
1130
|
-
function
|
|
1131
|
-
e.required !== void 0 && typeof e.required != "boolean" &&
|
|
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");
|
|
1132
1523
|
}
|
|
1133
|
-
function
|
|
1134
|
-
(!t || typeof t != "object" || Array.isArray(t) || !["text", "number", "boolean", "enum", "date"].includes(t.type)) &&
|
|
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);
|
|
1135
1526
|
}
|
|
1136
|
-
function
|
|
1137
|
-
if (!e.editable) throw new
|
|
1138
|
-
n &&
|
|
1139
|
-
const r =
|
|
1140
|
-
return n ? (n.required && typeof r == "string" && !r.trim() &&
|
|
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;
|
|
1141
1532
|
}
|
|
1142
|
-
class
|
|
1533
|
+
class M extends Error {
|
|
1143
1534
|
constructor(t) {
|
|
1144
1535
|
super(`Report calculation: ${t}`), this.code = t, this.name = "ReportCalculationError";
|
|
1145
1536
|
}
|
|
1146
1537
|
}
|
|
1147
|
-
function
|
|
1538
|
+
function G(e) {
|
|
1148
1539
|
if (!e?.aborted) return;
|
|
1149
1540
|
const t = new Error("Calculation cancelled");
|
|
1150
1541
|
throw t.name = "AbortError", t;
|
|
1151
1542
|
}
|
|
1152
|
-
async function
|
|
1543
|
+
async function se(e, t = 1) {
|
|
1153
1544
|
const n = Math.floor(e.scanned / 2048);
|
|
1154
|
-
if (e.scanned += t, e.scanned > e.maxScanned) throw new
|
|
1155
|
-
|
|
1545
|
+
if (e.scanned += t, e.scanned > e.maxScanned) throw new M("limit");
|
|
1546
|
+
G(e.signal), Math.floor(e.scanned / 2048) > n && (await e.yieldToHost(), G(e.signal));
|
|
1156
1547
|
}
|
|
1157
|
-
function
|
|
1548
|
+
function ke(e) {
|
|
1158
1549
|
return e.table?.role === "header" ? -Math.max(1, e.grid?.cells.length ?? 1) : e.table?.rowIndex ?? 0;
|
|
1159
1550
|
}
|
|
1160
|
-
function
|
|
1161
|
-
if (![t.pageIndex, t.componentIndex, t.rowIndex, t.columnIndex].every((
|
|
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");
|
|
1162
1553
|
const r = e.pages[t.pageIndex]?.components[t.componentIndex];
|
|
1163
|
-
if (!r?.grid || t.rowIndex >= r.grid.cells.length) throw new
|
|
1164
|
-
const i = r.grid.colWidthsMm?.length ?? r.grid.cells.reduce((
|
|
1165
|
-
if (t.columnIndex >= i) throw new
|
|
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");
|
|
1166
1557
|
const o = r.table, l = e.pages[n.pageIndex]?.components[n.componentIndex]?.table;
|
|
1167
1558
|
if (o && l && o.id === l.id) {
|
|
1168
|
-
const
|
|
1169
|
-
if (
|
|
1170
|
-
return { grid: o.id, row:
|
|
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 };
|
|
1171
1562
|
}
|
|
1172
1563
|
return { grid: `${t.pageIndex}:${t.componentIndex}`, row: t.rowIndex, column: t.columnIndex };
|
|
1173
1564
|
}
|
|
1174
|
-
function
|
|
1175
|
-
const r =
|
|
1176
|
-
if (r.grid !== i.grid) throw new
|
|
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");
|
|
1177
1568
|
const o = (Math.abs(r.row - i.row) + 1) * (Math.abs(r.column - i.column) + 1);
|
|
1178
|
-
if (!Number.isSafeInteger(o) || o > n) throw new
|
|
1569
|
+
if (!Number.isSafeInteger(o) || o > n) throw new M("limit");
|
|
1179
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 };
|
|
1180
1571
|
}
|
|
1181
|
-
function
|
|
1572
|
+
function Wn(e) {
|
|
1182
1573
|
if (!e) return !1;
|
|
1183
1574
|
const t = e.replace(/"[^"]*"|\\.|\[(?![hms]+\])[^\]]*\]/gi, "");
|
|
1184
1575
|
return /[ymdhs]/i.test(t);
|
|
1185
1576
|
}
|
|
1186
|
-
function
|
|
1187
|
-
if (e.valueType === "text" || e.valueType === "boolean" ||
|
|
1577
|
+
function Vn(e) {
|
|
1578
|
+
if (e.valueType === "text" || e.valueType === "boolean" || Wn(e.numberFormat)) return null;
|
|
1188
1579
|
const t = e.value;
|
|
1189
1580
|
if (typeof t != "number" || !Number.isFinite(t)) return null;
|
|
1190
|
-
if (Number.isInteger(t) && !Number.isSafeInteger(t)) throw new
|
|
1581
|
+
if (Number.isInteger(t) && !Number.isSafeInteger(t)) throw new M("precision");
|
|
1191
1582
|
return t;
|
|
1192
1583
|
}
|
|
1193
|
-
function
|
|
1584
|
+
function Un(e, t, n) {
|
|
1194
1585
|
if (e.seen.has(n)) return;
|
|
1195
1586
|
e.seen.add(n), e.selected++;
|
|
1196
|
-
const r = t ?
|
|
1587
|
+
const r = t ? Vn(t) : null;
|
|
1197
1588
|
r === null ? e.excluded++ : e.values.push(r);
|
|
1198
1589
|
}
|
|
1199
|
-
function
|
|
1590
|
+
function qn(e, t, n, r) {
|
|
1200
1591
|
return r.origin ? e.table?.id === r.origin.id : `${t}:${n}` === r.grid;
|
|
1201
1592
|
}
|
|
1202
|
-
function
|
|
1593
|
+
function Gn(e, t, n) {
|
|
1203
1594
|
return n.origin ? n.origin.columnKeys.indexOf(e.table.columnKeys[t] ?? "") : t;
|
|
1204
1595
|
}
|
|
1205
|
-
function
|
|
1206
|
-
const i = r.origin ?
|
|
1596
|
+
function Jn(e, t, n, r) {
|
|
1597
|
+
const i = r.origin ? ke(e) + t : t, o = Gn(e, n, r);
|
|
1207
1598
|
return i < r.rowStart || i > r.rowEnd || o < r.columnStart || o > r.columnEnd ? null : `${r.grid}:${i}:${o}`;
|
|
1208
1599
|
}
|
|
1209
|
-
function
|
|
1210
|
-
const n = t.origin ?
|
|
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);
|
|
1211
1602
|
return i > r ? i : 0;
|
|
1212
1603
|
}
|
|
1213
|
-
async function
|
|
1604
|
+
async function Yn(e, t, n, r, i) {
|
|
1214
1605
|
const o = e.grid;
|
|
1215
|
-
if (t > r.maxScanned) throw new
|
|
1216
|
-
const l = o.colWidthsMm?.length ?? o.cells.reduce((
|
|
1217
|
-
if (l > r.maxScanned) throw new
|
|
1218
|
-
const
|
|
1219
|
-
for (let
|
|
1220
|
-
|
|
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");
|
|
1609
|
+
const s = /* @__PURE__ */ new Map();
|
|
1610
|
+
for (let a = 0; a < t; a++) {
|
|
1611
|
+
a > 0 && a % 2048 === 0 && (await r.yieldToHost(), G(r.signal));
|
|
1221
1612
|
let c = 0;
|
|
1222
|
-
for (const d of o.cells[
|
|
1223
|
-
for (await
|
|
1613
|
+
for (const d of o.cells[a]) {
|
|
1614
|
+
for (await se(r); c < l && (s.get(c) ?? 0) > a; ) c++;
|
|
1224
1615
|
if (c >= l) break;
|
|
1225
|
-
const
|
|
1226
|
-
|
|
1227
|
-
for (let
|
|
1228
|
-
const
|
|
1229
|
-
|
|
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));
|
|
1617
|
+
m > 1 && await se(r, m - 1);
|
|
1618
|
+
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;
|
|
1230
1621
|
}
|
|
1231
1622
|
}
|
|
1232
1623
|
}
|
|
1233
|
-
async function
|
|
1624
|
+
async function Xn(e, t, n) {
|
|
1234
1625
|
const r = { values: [], seen: /* @__PURE__ */ new Set(), excluded: 0, selected: 0 };
|
|
1235
1626
|
for (let i = 0; i < e.pages.length; i++) {
|
|
1236
|
-
await
|
|
1627
|
+
await se(n);
|
|
1237
1628
|
const o = e.pages[i];
|
|
1238
1629
|
for (let l = 0; l < o.components.length; l++) {
|
|
1239
|
-
await
|
|
1240
|
-
const
|
|
1241
|
-
if (!
|
|
1242
|
-
const
|
|
1243
|
-
|
|
1630
|
+
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);
|
|
1244
1635
|
}
|
|
1245
1636
|
}
|
|
1246
1637
|
return r;
|
|
1247
1638
|
}
|
|
1248
|
-
function
|
|
1249
|
-
if (!Number.isFinite(e)) throw new
|
|
1639
|
+
function X(e) {
|
|
1640
|
+
if (!Number.isFinite(e)) throw new M("overflow");
|
|
1250
1641
|
return e;
|
|
1251
1642
|
}
|
|
1252
|
-
function
|
|
1643
|
+
function Zn(e) {
|
|
1253
1644
|
let t = 0, n = 0;
|
|
1254
1645
|
for (const r of e) {
|
|
1255
|
-
const i = r - n, o =
|
|
1646
|
+
const i = r - n, o = X(t + i);
|
|
1256
1647
|
n = o - t - i, t = o;
|
|
1257
1648
|
}
|
|
1258
1649
|
return t;
|
|
1259
1650
|
}
|
|
1260
|
-
async function
|
|
1651
|
+
async function Ue(e, t) {
|
|
1261
1652
|
let n = [...e], r = new Array(e.length);
|
|
1262
1653
|
for (let o = 1; o < e.length; o *= 2) {
|
|
1263
1654
|
for (let l = 0; l < e.length; l += o * 2) {
|
|
1264
|
-
const
|
|
1265
|
-
let c = l, d =
|
|
1266
|
-
for (let
|
|
1267
|
-
r[
|
|
1655
|
+
const s = Math.min(l + o, e.length), a = Math.min(l + o * 2, e.length);
|
|
1656
|
+
let c = l, d = s;
|
|
1657
|
+
for (let m = l; m < a; m++)
|
|
1658
|
+
r[m] = d >= a || c < s && n[c] <= n[d] ? n[c++] : n[d++], m % 2048 === 0 && (await t.yieldToHost(), G(t.signal));
|
|
1268
1659
|
}
|
|
1269
1660
|
[n, r] = [r, n];
|
|
1270
1661
|
}
|
|
1271
1662
|
const i = Math.floor(n.length / 2);
|
|
1272
|
-
return n.length % 2 ? n[i] :
|
|
1663
|
+
return n.length % 2 ? n[i] : X(n[i - 1] / 2 + n[i] / 2);
|
|
1273
1664
|
}
|
|
1274
|
-
function
|
|
1275
|
-
const t =
|
|
1665
|
+
function Qn(e) {
|
|
1666
|
+
const t = Zn(e);
|
|
1276
1667
|
let n = 1 / 0, r = -1 / 0;
|
|
1277
1668
|
for (const i of e)
|
|
1278
1669
|
n = Math.min(n, i), r = Math.max(r, i);
|
|
1279
1670
|
return { SUM: t, AVERAGE: t / e.length, AVG: t / e.length, MIN: n, MAX: r, COUNT: e.length };
|
|
1280
1671
|
}
|
|
1281
|
-
function
|
|
1282
|
-
if (typeof e != "string" || e.length > 256) throw new
|
|
1672
|
+
function er(e, t) {
|
|
1673
|
+
if (typeof e != "string" || e.length > 256) throw new M("expression");
|
|
1283
1674
|
const n = e.toUpperCase().match(/(?:\d+(?:\.\d*)?|\.\d+)(?:E[+-]?\d+)?|[A-Z_]+|[()+\-*/]|\S/g) ?? [];
|
|
1284
|
-
if (!n.length || n.length > 64) throw new
|
|
1675
|
+
if (!n.length || n.length > 64) throw new M("expression");
|
|
1285
1676
|
let r = 0;
|
|
1286
|
-
function i(
|
|
1287
|
-
if (
|
|
1288
|
-
const
|
|
1289
|
-
if (
|
|
1290
|
-
if (
|
|
1291
|
-
const c = o(0,
|
|
1292
|
-
if (n[r++] !== ")") throw new
|
|
1677
|
+
function i(s) {
|
|
1678
|
+
if (s > 16) throw new M("expression");
|
|
1679
|
+
const a = n[r++];
|
|
1680
|
+
if (a === "+" || a === "-") return (a === "-" ? -1 : 1) * i(s + 1);
|
|
1681
|
+
if (a === "(") {
|
|
1682
|
+
const c = o(0, s + 1);
|
|
1683
|
+
if (n[r++] !== ")") throw new M("expression");
|
|
1293
1684
|
return c;
|
|
1294
1685
|
}
|
|
1295
|
-
if (
|
|
1296
|
-
if (
|
|
1297
|
-
throw new
|
|
1686
|
+
if (a && /^(?:SUM|AVERAGE|AVG|MIN|MAX|COUNT|MEDIAN)$/.test(a) && Object.prototype.hasOwnProperty.call(t, a)) return X(t[a]);
|
|
1687
|
+
if (a && /^(?:\d+(?:\.\d*)?|\.\d+)(?:E[+-]?\d+)?$/.test(a)) return X(Number(a));
|
|
1688
|
+
throw new M("expression");
|
|
1298
1689
|
}
|
|
1299
|
-
function o(
|
|
1300
|
-
let c = i(
|
|
1690
|
+
function o(s, a) {
|
|
1691
|
+
let c = i(a);
|
|
1301
1692
|
for (; r < n.length; ) {
|
|
1302
|
-
const d = n[r],
|
|
1303
|
-
if (!
|
|
1693
|
+
const d = n[r], m = d === "+" || d === "-" ? 1 : d === "*" || d === "/" ? 2 : 0;
|
|
1694
|
+
if (!m || m < s) break;
|
|
1304
1695
|
r++;
|
|
1305
|
-
const
|
|
1306
|
-
if (d === "/" &&
|
|
1307
|
-
c =
|
|
1696
|
+
const h = o(m + 1, a + 1);
|
|
1697
|
+
if (d === "/" && h === 0) throw new M("division");
|
|
1698
|
+
c = X(d === "+" ? c + h : d === "-" ? c - h : d === "*" ? c * h : c / h);
|
|
1308
1699
|
}
|
|
1309
1700
|
return c;
|
|
1310
1701
|
}
|
|
1311
1702
|
const l = o(1, 0);
|
|
1312
|
-
if (r !== n.length) throw new
|
|
1703
|
+
if (r !== n.length) throw new M("expression");
|
|
1313
1704
|
return l;
|
|
1314
1705
|
}
|
|
1315
|
-
function
|
|
1706
|
+
function tr(e) {
|
|
1316
1707
|
const t = e.maxCells ?? 1e5, n = e.maxScannedCells ?? 2e5, r = e.precision ?? 2;
|
|
1317
|
-
if (![t, n].every((i) => Number.isSafeInteger(i) && i >= 1 && i <= 2e6)) throw new
|
|
1318
|
-
if (!Number.isInteger(r) || r < 0 || r > 12) throw new
|
|
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");
|
|
1319
1710
|
return { maxCells: t, maxScanned: n, precision: r };
|
|
1320
1711
|
}
|
|
1321
|
-
async function
|
|
1322
|
-
const r =
|
|
1323
|
-
|
|
1324
|
-
const o = await
|
|
1325
|
-
if (!["sum", "average", "min", "max", "count", "median", "expression"].includes(l)) throw new
|
|
1326
|
-
let
|
|
1327
|
-
if (l === "count")
|
|
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");
|
|
1717
|
+
let s = null;
|
|
1718
|
+
if (l === "count") s = o.values.length;
|
|
1328
1719
|
else if (o.values.length)
|
|
1329
|
-
if (l === "median")
|
|
1720
|
+
if (l === "median") s = await Ue(o.values, i);
|
|
1330
1721
|
else {
|
|
1331
|
-
const
|
|
1332
|
-
l === "expression" ? (/\bMEDIAN\b/i.test(n.expression ?? "") && (
|
|
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()];
|
|
1333
1724
|
}
|
|
1334
|
-
if (
|
|
1335
|
-
return { value:
|
|
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 };
|
|
1336
1727
|
}
|
|
1337
1728
|
class A extends Error {
|
|
1338
1729
|
constructor(t, n) {
|
|
1339
1730
|
super(t), this.path = n, this.code = "label-sheet", this.name = "LabelSheetError";
|
|
1340
1731
|
}
|
|
1341
1732
|
}
|
|
1342
|
-
function
|
|
1733
|
+
function ie(e) {
|
|
1343
1734
|
if (e?.aborted) {
|
|
1344
1735
|
const t = new Error("标签拼版已取消");
|
|
1345
1736
|
throw t.name = "AbortError", t;
|
|
1346
1737
|
}
|
|
1347
1738
|
}
|
|
1348
|
-
function
|
|
1739
|
+
function B(e, t, n = !1) {
|
|
1349
1740
|
if (!Number.isFinite(e) || e <= 0 || n && !Number.isSafeInteger(e)) throw new A("应为正有限数字,数量应为安全整数", t);
|
|
1350
1741
|
return e;
|
|
1351
1742
|
}
|
|
1352
|
-
function
|
|
1743
|
+
function qe(e, t) {
|
|
1353
1744
|
if (!Number.isFinite(e) || e < 0) throw new A("应为非负有限数字", t);
|
|
1354
1745
|
return e;
|
|
1355
1746
|
}
|
|
1356
|
-
function
|
|
1747
|
+
function nr(e) {
|
|
1357
1748
|
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 };
|
|
1358
|
-
for (const r of ["top", "left", "bottom", "right"])
|
|
1359
|
-
for (const r of ["horizontal", "vertical"])
|
|
1749
|
+
for (const r of ["top", "left", "bottom", "right"]) qe(t?.[r], `$.marginMm.${r}`);
|
|
1750
|
+
for (const r of ["horizontal", "vertical"]) qe(n?.[r], `$.gapMm.${r}`);
|
|
1360
1751
|
return { margin: t, gap: n };
|
|
1361
1752
|
}
|
|
1362
|
-
function
|
|
1753
|
+
function rr(e) {
|
|
1363
1754
|
const t = e.paper === void 0 || e.paper === "a4" ? { widthMm: 210, heightMm: 297 } : e.paper;
|
|
1364
|
-
|
|
1365
|
-
const n =
|
|
1755
|
+
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;
|
|
1366
1757
|
if (i > 1e3) throw new A("每张纸不能超过 1000 个位置", "$.columns");
|
|
1367
|
-
const { margin: o, gap: l } =
|
|
1368
|
-
if (!Number.isSafeInteger(
|
|
1369
|
-
if (!Number.isFinite(
|
|
1370
|
-
return { paper: t, columns: n, rows: r, capacity: i, margin: o, gap: l, startSlot:
|
|
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 };
|
|
1371
1762
|
}
|
|
1372
|
-
function
|
|
1373
|
-
return 1 + (e.grid?.cells.reduce((t, n) => t + n.length + 1 + n.reduce((r, i) => r + (i?.children?.reduce((o, l) => o +
|
|
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);
|
|
1374
1765
|
}
|
|
1375
|
-
function
|
|
1376
|
-
if (!
|
|
1766
|
+
function ir(e, t, n) {
|
|
1767
|
+
if (!St(e).ok) throw new A("标签计划无效", "$.plan");
|
|
1377
1768
|
const r = e.pages[0];
|
|
1378
1769
|
if (!r) return;
|
|
1379
|
-
const { paper: i, columns: o, rows: l, margin:
|
|
1380
|
-
if (
|
|
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");
|
|
1381
1772
|
let d = 0;
|
|
1382
|
-
for (const [
|
|
1383
|
-
if (
|
|
1384
|
-
if (d +=
|
|
1385
|
-
for (const
|
|
1773
|
+
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`);
|
|
1386
1777
|
}
|
|
1387
1778
|
}
|
|
1388
|
-
function
|
|
1389
|
-
|
|
1390
|
-
const n =
|
|
1391
|
-
if (d >
|
|
1392
|
-
|
|
1393
|
-
const
|
|
1394
|
-
for (const [
|
|
1395
|
-
|
|
1396
|
-
const
|
|
1397
|
-
|
|
1398
|
-
}
|
|
1399
|
-
return { ...
|
|
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");
|
|
1783
|
+
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: [] } } }));
|
|
1785
|
+
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 } })));
|
|
1789
|
+
}
|
|
1790
|
+
return { ...m, pages: h };
|
|
1400
1791
|
}
|
|
1401
1792
|
export {
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1793
|
+
zr as CSS_DPI,
|
|
1794
|
+
Hr as DEFAULT_BORDER_PT,
|
|
1795
|
+
le as DEFAULT_FONT_FAMILY,
|
|
1796
|
+
Br as DEFAULT_FONT_PT,
|
|
1797
|
+
Mi as DEFAULT_LABEL_PAGE_LIMIT,
|
|
1798
|
+
_r as DEFAULT_STROKE_COLOR,
|
|
1799
|
+
Ge as DEFAULT_TEXT_COLOR,
|
|
1800
|
+
Wr as LINE_HEIGHT,
|
|
1410
1801
|
A as LabelSheetError,
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
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,
|
|
1810
|
+
pe as REPORT_TEMPLATE_DOCUMENT_VERSION,
|
|
1811
|
+
Kr as ReportBindingError,
|
|
1812
|
+
M as ReportCalculationError,
|
|
1813
|
+
Tt as ReportCellEditError,
|
|
1814
|
+
In as ReportCellFieldError,
|
|
1815
|
+
u as ReportComponentExtensionError,
|
|
1816
|
+
Zi as ReportDrillError,
|
|
1817
|
+
io as ReportParamValidationError,
|
|
1818
|
+
ve as ReportSourceError,
|
|
1819
|
+
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,
|
|
1878
|
+
Me as heuristicMeasurer,
|
|
1879
|
+
Dr as imposeLabelSheets,
|
|
1880
|
+
$o as insertTemplateFragment,
|
|
1881
|
+
Yi as inspectOutputCapabilities,
|
|
1882
|
+
So as inspectTemplateFieldUsage,
|
|
1883
|
+
Po as inspectTemplateFragmentBindings,
|
|
1884
|
+
ce as isImageBackedComponent,
|
|
1885
|
+
zi as isReportDataTarget,
|
|
1886
|
+
so as isReportDate,
|
|
1887
|
+
lo as isReportMonth,
|
|
1888
|
+
Hi as isReportValueState,
|
|
1889
|
+
co as isReportYear,
|
|
1890
|
+
Ye as isRichText,
|
|
1891
|
+
eo as matchReportDrillActions,
|
|
1892
|
+
$e as measurePageSizePx,
|
|
1893
|
+
bi as measureTextMm,
|
|
1894
|
+
Ke as mergeComponentStyles,
|
|
1895
|
+
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,
|
|
1904
|
+
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,
|
|
1918
|
+
Z as reportOutputDiagnostics,
|
|
1919
|
+
ho as reportParamsJsonSchema,
|
|
1920
|
+
Je as resolveBoxBorders,
|
|
1921
|
+
Qr as resolveComponentBinding,
|
|
1922
|
+
_ as resolveFontSize,
|
|
1923
|
+
xe as resolveGridLayout,
|
|
1924
|
+
q as resolveLineHeight,
|
|
1925
|
+
gt as resolvePaper,
|
|
1926
|
+
Ee as resolvePlanAssets,
|
|
1927
|
+
to as resolveReportDrillReturn,
|
|
1928
|
+
Y as resolveStroke,
|
|
1929
|
+
ye as resolveTextColor,
|
|
1930
|
+
yo as reviewReportTemplate,
|
|
1931
|
+
Mo as reviewReportTemplateAsync,
|
|
1932
|
+
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,
|
|
1946
|
+
Xe as validateReportTemplate,
|
|
1947
|
+
mi as validateReportTemplateDocument,
|
|
1948
|
+
Io as validateTreeOptions,
|
|
1949
|
+
Qe as wrapText
|
|
1553
1950
|
};
|