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