@silurus/ooxml 0.57.0 → 0.59.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 +60 -17
- package/dist/docx-MHQa7gm7.js +1911 -0
- package/dist/docx.mjs +3 -3
- package/dist/index.mjs +3 -3
- package/dist/pptx-BiatvxSp.js +1865 -0
- package/dist/pptx.mjs +2 -2
- package/dist/render-worker-host-D7EpeMT0.js +27 -0
- package/dist/render-worker-host-DcreJHMg.js +27 -0
- package/dist/render-worker-host-Dg-fxkvs.js +27 -0
- package/dist/{src-BM-QyfQO.js → src-Csbp6xwR.js} +1802 -1320
- package/dist/types/docx.d.ts +106 -7
- package/dist/types/index.d.ts +486 -23
- package/dist/types/pptx.d.ts +157 -10
- package/dist/types/xlsx.d.ts +211 -6
- package/dist/xlsx-BcQbbV_c.js +3880 -0
- package/dist/xlsx.mjs +2 -2
- package/package.json +1 -1
- package/dist/docx-BWAno6Ct.js +0 -1661
- package/dist/pptx-5Y2LWU2Z.js +0 -1614
- package/dist/xlsx-qDuC11Rx.js +0 -3502
|
@@ -8,68 +8,181 @@ var e = Object.defineProperty, t = (t, n) => {
|
|
|
8
8
|
return n || e(r, Symbol.toStringTag, { value: "Module" }), r;
|
|
9
9
|
}, n = 15e3;
|
|
10
10
|
function r(e) {
|
|
11
|
-
return e.sheet ? Promise.resolve() : new Promise((t) => {
|
|
12
|
-
let n = () => {
|
|
13
|
-
e.removeEventListener("load", n), e.removeEventListener("error", n), t();
|
|
14
|
-
};
|
|
15
|
-
e.addEventListener("load", n), e.addEventListener("error", n);
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
function i(e) {
|
|
19
11
|
return Promise.race([e, new Promise((e) => setTimeout(e, n))]);
|
|
20
12
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
let
|
|
24
|
-
for (
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
let
|
|
30
|
-
|
|
31
|
-
let
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
13
|
+
var i = /* @__PURE__ */ new Map();
|
|
14
|
+
function a(e) {
|
|
15
|
+
let t = [], n = /@font-face\s*\{([^}]*)\}/g, r;
|
|
16
|
+
for (; r = n.exec(e);) {
|
|
17
|
+
let e = r[1], n = (t) => e.match(RegExp(`(?:^|;|\\n)\\s*${t}\\s*:\\s*([^;]+)`, "i"))?.[1].trim(), i = n("font-family"), a = n("src");
|
|
18
|
+
if (!i || !a) continue;
|
|
19
|
+
let o = {}, s = n("font-style");
|
|
20
|
+
s && (o.style = s);
|
|
21
|
+
let c = n("font-weight");
|
|
22
|
+
c && (o.weight = c);
|
|
23
|
+
let l = n("font-stretch");
|
|
24
|
+
l && (o.stretch = l);
|
|
25
|
+
let u = n("unicode-range");
|
|
26
|
+
u && (o.unicodeRange = u), t.push({
|
|
27
|
+
family: i.replace(/^['"]|['"]$/g, ""),
|
|
28
|
+
src: a,
|
|
29
|
+
descriptors: o
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
return t;
|
|
33
|
+
}
|
|
34
|
+
function o() {
|
|
35
|
+
return typeof document < "u" && document && document.fonts ? document.fonts : typeof self < "u" && self && "fonts" in self ? self.fonts : null;
|
|
36
|
+
}
|
|
37
|
+
async function s(e, t) {
|
|
38
|
+
let n = o();
|
|
39
|
+
if (!n || typeof FontFace > "u" || typeof fetch > "u") return;
|
|
40
|
+
let s = /* @__PURE__ */ new Set(), c = /* @__PURE__ */ new Set(), l = /* @__PURE__ */ new Set(), u = /* @__PURE__ */ new Map(), d = /* @__PURE__ */ new Set();
|
|
41
|
+
for (let n of e) {
|
|
42
|
+
if (!n) continue;
|
|
43
|
+
let e = n.toLowerCase();
|
|
44
|
+
if (s.has(e)) continue;
|
|
45
|
+
s.add(e);
|
|
46
|
+
let r = t[e];
|
|
47
|
+
if (!r) continue;
|
|
48
|
+
l.add(r.url);
|
|
49
|
+
let i = (r.loadFamily ?? n).toLowerCase();
|
|
50
|
+
c.add(i);
|
|
51
|
+
let a = u.get(r.url);
|
|
52
|
+
a || (a = /* @__PURE__ */ new Set(), u.set(r.url, a)), a.add(i);
|
|
38
53
|
}
|
|
39
|
-
if (
|
|
40
|
-
await
|
|
41
|
-
|
|
42
|
-
|
|
54
|
+
if (c.size === 0) return;
|
|
55
|
+
let f = await r(Promise.all([...l].map((e) => {
|
|
56
|
+
let t = i.get(e);
|
|
57
|
+
if (t) return t;
|
|
58
|
+
let r = (async () => {
|
|
59
|
+
try {
|
|
60
|
+
let t = await fetch(e);
|
|
61
|
+
if (!t.ok) throw Error(`HTTP ${t.status}`);
|
|
62
|
+
let r = [];
|
|
63
|
+
for (let e of a(await t.text())) {
|
|
64
|
+
let t = new FontFace(e.family, e.src, e.descriptors);
|
|
65
|
+
n.add(t), r.push(t);
|
|
66
|
+
}
|
|
67
|
+
return r;
|
|
68
|
+
} catch {
|
|
69
|
+
i.delete(e);
|
|
70
|
+
for (let t of u.get(e) ?? []) d.add(t);
|
|
71
|
+
return [];
|
|
72
|
+
}
|
|
73
|
+
})();
|
|
74
|
+
return i.set(e, r), r;
|
|
75
|
+
}))), p = (Array.isArray(f) ? f : []).flat();
|
|
76
|
+
await r(Promise.allSettled(p.map((e) => e.load())).then((e) => (e.forEach((e, t) => {
|
|
77
|
+
e.status === "rejected" && d.add(p[t].family.replace(/['"]/g, "").toLowerCase());
|
|
78
|
+
}), n.ready))), d.size > 0 && console.warn(`[ooxml] failed to preload web font(s): ${[...d].join(", ")}; falling back to system fonts (text may shift or differ).`);
|
|
79
|
+
}
|
|
80
|
+
//#endregion
|
|
81
|
+
//#region packages/core/src/fonts/scripts.ts
|
|
82
|
+
function c(e) {
|
|
83
|
+
if (!e) return null;
|
|
84
|
+
let t = e.toLowerCase();
|
|
85
|
+
return /[ᄀ-ᇿ-가-]/.test(e) ? "kr" : /[-ヿ]/.test(e) ? "jp" : /jhenghei|微軟正黑|新細明|細明|pmingliu|mingliu|dfkai|標楷|華康|cns11643|kaiti tc|ming\s*liu/.test(t) || /新細明體|細明體|標楷體|微軟正黑體|華康/.test(e) ? "tc" : /simsun|nsimsun|simhei|simkai|simfang|yahei|dengxian|fangsong|kaiti|youyuan|lisu|stsong|stkaiti|stfangsong|stheiti|stxihei|stzhongsong|songti sc|heiti sc|微软雅黑/.test(t) || /宋体|黑体|楷体|仿宋|等线|微软雅黑|隶书|幼圆/.test(e) ? "sc" : /malgun|batang|gulim|dotum|gungsuh|nanum|new gulim|hancom|hy(gothic|graphic|namu)?/.test(t) ? "kr" : /\bmeiryo\b|\byu\s*(gothic|mincho)\b|yugothic|yumincho|hiragino|\bms\s*(gothic|mincho|pgothic|pmincho|ui\s*gothic)\b|\bms[pg]?(gothic|mincho)\b|ipa(ex)?(gothic|mincho)|noto\s+(sans|serif)\s+jp|游ゴシック|游明朝|MS|メイリオ|ヒラギノ/.test(t) || /游ゴシック|游明朝|MS ゴシック|MS 明朝|MS Pゴシック|メイリオ|ヒラギノ/.test(e) ? "jp" : null;
|
|
86
|
+
}
|
|
87
|
+
function l(e, t) {
|
|
88
|
+
let n = t === "serif" ? "Noto Serif" : "Noto Sans", r = {
|
|
89
|
+
jp: [
|
|
90
|
+
"jp",
|
|
91
|
+
"sc",
|
|
92
|
+
"tc",
|
|
93
|
+
"kr"
|
|
94
|
+
],
|
|
95
|
+
sc: [
|
|
96
|
+
"sc",
|
|
97
|
+
"tc",
|
|
98
|
+
"jp",
|
|
99
|
+
"kr"
|
|
100
|
+
],
|
|
101
|
+
tc: [
|
|
102
|
+
"tc",
|
|
103
|
+
"sc",
|
|
104
|
+
"jp",
|
|
105
|
+
"kr"
|
|
106
|
+
],
|
|
107
|
+
kr: [
|
|
108
|
+
"kr",
|
|
109
|
+
"jp",
|
|
110
|
+
"sc",
|
|
111
|
+
"tc"
|
|
112
|
+
]
|
|
113
|
+
}, i = {
|
|
114
|
+
kr: "KR",
|
|
115
|
+
sc: "SC",
|
|
116
|
+
tc: "TC",
|
|
117
|
+
jp: "JP"
|
|
118
|
+
};
|
|
119
|
+
return r[e].map((e) => `${n} ${i[e]}`);
|
|
43
120
|
}
|
|
121
|
+
var u = [
|
|
122
|
+
"Noto Sans",
|
|
123
|
+
"Noto Sans Hebrew",
|
|
124
|
+
"Noto Sans Thai",
|
|
125
|
+
"Noto Sans Devanagari"
|
|
126
|
+
], d = ["Noto Serif", "Noto Serif Hebrew"], f = (e) => `https://fonts.googleapis.com/css2?family=${e}:wght@400;700&display=swap`, p = {
|
|
127
|
+
"noto sans kr": { url: f("Noto+Sans+KR") },
|
|
128
|
+
"noto sans sc": { url: f("Noto+Sans+SC") },
|
|
129
|
+
"noto sans tc": { url: f("Noto+Sans+TC") },
|
|
130
|
+
"noto sans jp": { url: f("Noto+Sans+JP") },
|
|
131
|
+
"noto serif kr": { url: f("Noto+Serif+KR") },
|
|
132
|
+
"noto serif sc": { url: f("Noto+Serif+SC") },
|
|
133
|
+
"noto serif tc": { url: f("Noto+Serif+TC") },
|
|
134
|
+
"noto serif jp": { url: f("Noto+Serif+JP") },
|
|
135
|
+
"noto sans": { url: f("Noto+Sans") },
|
|
136
|
+
"noto serif": { url: f("Noto+Serif") },
|
|
137
|
+
"noto sans devanagari": { url: f("Noto+Sans+Devanagari") },
|
|
138
|
+
"noto sans thai": { url: f("Noto+Sans+Thai") },
|
|
139
|
+
"noto sans hebrew": { url: f("Noto+Sans+Hebrew") },
|
|
140
|
+
"noto serif hebrew": { url: f("Noto+Serif+Hebrew") }
|
|
141
|
+
}, m = [
|
|
142
|
+
"Noto Sans KR",
|
|
143
|
+
"Noto Sans SC",
|
|
144
|
+
"Noto Sans TC",
|
|
145
|
+
"Noto Sans JP",
|
|
146
|
+
"Noto Serif KR",
|
|
147
|
+
"Noto Serif SC",
|
|
148
|
+
"Noto Serif TC",
|
|
149
|
+
"Noto Serif JP",
|
|
150
|
+
"Noto Sans",
|
|
151
|
+
"Noto Serif",
|
|
152
|
+
"Noto Sans Devanagari",
|
|
153
|
+
"Noto Sans Thai",
|
|
154
|
+
"Noto Sans Hebrew",
|
|
155
|
+
"Noto Serif Hebrew"
|
|
156
|
+
];
|
|
44
157
|
//#endregion
|
|
45
158
|
//#region packages/core/src/chart/axis-scale.ts
|
|
46
|
-
function
|
|
159
|
+
function h(e, t = 5) {
|
|
47
160
|
if (e === 0) return 1;
|
|
48
161
|
let n = e / t, r = 10 ** Math.floor(Math.log10(n)), i = n / r;
|
|
49
162
|
return (i < 1.5 ? 1 : i < 3.5 ? 2 : i < 7.5 ? 5 : 10) * r;
|
|
50
163
|
}
|
|
51
|
-
function
|
|
164
|
+
function g(e, t, n = 0) {
|
|
52
165
|
if (e <= 0) return t;
|
|
53
166
|
let r = e + (e - n) / 20;
|
|
54
167
|
return Math.ceil(r / t) * t;
|
|
55
168
|
}
|
|
56
|
-
function
|
|
169
|
+
function _(e, t) {
|
|
57
170
|
if (e >= 0) return 0;
|
|
58
171
|
let n = Math.floor(e / t) * t;
|
|
59
172
|
return Math.abs(n - e) < t * 1e-9 ? n - t : n;
|
|
60
173
|
}
|
|
61
174
|
//#endregion
|
|
62
175
|
//#region packages/core/src/chart/chart-number-format.ts
|
|
63
|
-
function
|
|
176
|
+
function v(e) {
|
|
64
177
|
return Number.isInteger(e) ? String(e) : e.toFixed(6).replace(/\.?0+$/, "");
|
|
65
178
|
}
|
|
66
|
-
function
|
|
67
|
-
if (!t || t.trim().toLowerCase() === "general") return
|
|
68
|
-
if (
|
|
69
|
-
let n =
|
|
70
|
-
return r = e > 0 ? n[0] ?? t : e < 0 ? n[1] ?? n[0] ?? t : n[2] ?? n[0] ?? t, r === "" ? "" : (e < 0 && n.length < 2 ? "-" : "") +
|
|
179
|
+
function y(e, t) {
|
|
180
|
+
if (!t || t.trim().toLowerCase() === "general") return v(e);
|
|
181
|
+
if (b(t)) return x(e, t);
|
|
182
|
+
let n = S(t), r;
|
|
183
|
+
return r = e > 0 ? n[0] ?? t : e < 0 ? n[1] ?? n[0] ?? t : n[2] ?? n[0] ?? t, r === "" ? "" : (e < 0 && n.length < 2 ? "-" : "") + C(Math.abs(e), r);
|
|
71
184
|
}
|
|
72
|
-
function
|
|
185
|
+
function b(e) {
|
|
73
186
|
let t = !1;
|
|
74
187
|
for (let n = 0; n < e.length; n++) {
|
|
75
188
|
let r = e[n];
|
|
@@ -91,7 +204,7 @@ function d(e) {
|
|
|
91
204
|
}
|
|
92
205
|
return !1;
|
|
93
206
|
}
|
|
94
|
-
function
|
|
207
|
+
function x(e, t) {
|
|
95
208
|
let n = Date.UTC(1899, 11, 30), r = e < 60 ? e + 1 : e, i = n + Math.floor(r) * 864e5, a = new Date(i), o = a.getUTCFullYear(), s = a.getUTCMonth() + 1, c = a.getUTCDate(), l = (e - Math.floor(e)) * 86400, u = Math.floor(l / 3600), d = Math.floor(l % 3600 / 60), f = Math.floor(l % 60), p = "", m = !1, h = 0;
|
|
96
209
|
for (; h < t.length;) {
|
|
97
210
|
let e = t[h];
|
|
@@ -146,7 +259,7 @@ function f(e, t) {
|
|
|
146
259
|
}
|
|
147
260
|
return p;
|
|
148
261
|
}
|
|
149
|
-
function
|
|
262
|
+
function S(e) {
|
|
150
263
|
let t = [], n = "";
|
|
151
264
|
for (let r = 0; r < e.length; r++) {
|
|
152
265
|
let i = e[r];
|
|
@@ -172,7 +285,7 @@ function p(e) {
|
|
|
172
285
|
}
|
|
173
286
|
return t.push(n), t;
|
|
174
287
|
}
|
|
175
|
-
function
|
|
288
|
+
function C(e, t) {
|
|
176
289
|
let n = [], r = 0, i = !1, a = !1;
|
|
177
290
|
for (; r < t.length;) {
|
|
178
291
|
let e = t[r];
|
|
@@ -233,905 +346,16 @@ function m(e, t) {
|
|
|
233
346
|
if (!i) return n.map((e) => e.text).join("");
|
|
234
347
|
let o = a ? e * 100 : e, s = "";
|
|
235
348
|
for (let e of n) e.kind === "num" && (s += e.text);
|
|
236
|
-
let c =
|
|
349
|
+
let c = w(o, s), l = !1;
|
|
237
350
|
return n.map((e) => e.kind === "lit" ? e.text : l ? "" : (l = !0, c)).join("");
|
|
238
351
|
}
|
|
239
|
-
function
|
|
352
|
+
function w(e, t) {
|
|
240
353
|
let n = t.indexOf("."), r = n >= 0 ? t.slice(0, n) : t, i = n >= 0 ? t.slice(n + 1) : "", a = /,/.test(r), o = (i.match(/[#0?]/g) ?? []).length, s = (r.replace(/,/g, "").match(/0/g) ?? []).length, [c, l = ""] = e.toFixed(o).split("."), u = c.padStart(s, "0"), d = a ? u.replace(/\B(?=(\d{3})+(?!\d))/g, ",") : u;
|
|
241
354
|
return o === 0 ? d : `${d}.${l.padEnd(o, "0")}`;
|
|
242
355
|
}
|
|
243
356
|
//#endregion
|
|
244
|
-
//#region packages/core/src/units.ts
|
|
245
|
-
var g = 12700, _ = 9525, v = 4 / 3, y = [
|
|
246
|
-
"4472C4",
|
|
247
|
-
"ED7D31",
|
|
248
|
-
"A9D18E",
|
|
249
|
-
"FF0000",
|
|
250
|
-
"70AD47",
|
|
251
|
-
"4BACC6",
|
|
252
|
-
"FFC000",
|
|
253
|
-
"9E480E",
|
|
254
|
-
"843C0C",
|
|
255
|
-
"636363",
|
|
256
|
-
"255E91",
|
|
257
|
-
"967300"
|
|
258
|
-
];
|
|
259
|
-
function b(e, t) {
|
|
260
|
-
return t?.color ? `#${t.color}` : `#${y[e % y.length]}`;
|
|
261
|
-
}
|
|
262
|
-
function x(e, t) {
|
|
263
|
-
let n = t.dataPointColors?.[e];
|
|
264
|
-
return n ? `#${n}` : `#${y[e % y.length]}`;
|
|
265
|
-
}
|
|
266
|
-
function S(e, t) {
|
|
267
|
-
let n = e.startsWith("#") ? e.slice(1) : e;
|
|
268
|
-
return `rgba(${parseInt(n.slice(0, 2), 16)},${parseInt(n.slice(2, 4), 16)},${parseInt(n.slice(4, 6), 16)},${t})`;
|
|
269
|
-
}
|
|
270
|
-
function C(e, t, n, r, i, a, o, s) {
|
|
271
|
-
e.save(), e.font = `${s}px sans-serif`, e.fillStyle = "#555", o === "cat" ? (e.textAlign = "center", e.textBaseline = "bottom", e.fillText(t.slice(0, 30), n + i / 2, r + a + s + 2)) : (e.translate(n - s - 4, r + a / 2), e.rotate(-Math.PI / 2), e.textAlign = "center", e.textBaseline = "middle", e.fillText(t.slice(0, 30), 0, 0)), e.restore();
|
|
272
|
-
}
|
|
273
|
-
function w(e) {
|
|
274
|
-
return e && (e === "line" || e === "stackedLine" || e === "stackedLinePct" || e === "radar" || e === "scatter") ? "line" : "fill";
|
|
275
|
-
}
|
|
276
|
-
function T(e, t, n, r, i, a, o) {
|
|
277
|
-
if (e.fillStyle = n, t === "line") {
|
|
278
|
-
e.strokeStyle = n;
|
|
279
|
-
let t = e.lineWidth;
|
|
280
|
-
e.lineWidth = Math.max(1.5, o * .15), e.beginPath();
|
|
281
|
-
let s = i + o / 2;
|
|
282
|
-
e.moveTo(r, s), e.lineTo(r + a, s), e.stroke(), e.lineWidth = t;
|
|
283
|
-
} else e.fillRect(r, i, a, o);
|
|
284
|
-
}
|
|
285
|
-
function E(e, t, n, r, i, a, o = "vertical", s) {
|
|
286
|
-
let c = w(s);
|
|
287
|
-
if (o === "horizontal") {
|
|
288
|
-
let o = Math.max(9, Math.min(12, a * .7));
|
|
289
|
-
e.font = `${o}px sans-serif`, e.textBaseline = "middle";
|
|
290
|
-
let s = t.map((e, t) => e.name || `Series ${t + 1}`), l = s.map((t) => 14 + e.measureText(t.slice(0, 30)).width), u = n + (i - (l.reduce((e, t) => e + t, 0) + 12 * Math.max(0, t.length - 1))) / 2, d = r + a / 2;
|
|
291
|
-
for (let n = 0; n < t.length; n++) T(e, c, b(n, t[n]), u, d - o / 2, 10, o), e.fillStyle = "#333", e.textAlign = "left", e.fillText(s[n].slice(0, 30), u + 10 + 4, d), u += l[n] + 12;
|
|
292
|
-
return;
|
|
293
|
-
}
|
|
294
|
-
let l = Math.max(9, Math.min(12, a / (t.length + 1)));
|
|
295
|
-
e.font = `${l}px sans-serif`, e.textBaseline = "middle";
|
|
296
|
-
let u = l + 4, d = r + (a - u * t.length) / 2;
|
|
297
|
-
for (let r = 0; r < t.length; r++) {
|
|
298
|
-
T(e, c, b(r, t[r]), n, d, 10, l), e.fillStyle = "#333", e.textAlign = "left";
|
|
299
|
-
let i = t[r].name || `Series ${r + 1}`;
|
|
300
|
-
e.fillText(i.slice(0, 20), n + 10 + 4, d + l / 2), d += u;
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
function D(e, t, n) {
|
|
304
|
-
if (!e.showLegend) return null;
|
|
305
|
-
let r = e.legendPos ?? "r", i = r === "l" ? "l" : r === "t" ? "t" : r === "b" ? "b" : "r";
|
|
306
|
-
return i === "r" || i === "l" ? {
|
|
307
|
-
side: i,
|
|
308
|
-
reserveW: Math.max(80, t * .22),
|
|
309
|
-
reserveH: 0
|
|
310
|
-
} : {
|
|
311
|
-
side: i,
|
|
312
|
-
reserveW: 0,
|
|
313
|
-
reserveH: Math.max(18, n * .08)
|
|
314
|
-
};
|
|
315
|
-
}
|
|
316
|
-
function O(e, t, n, r, i, a, o, s, c, l, u, d) {
|
|
317
|
-
if (!n) return;
|
|
318
|
-
let f = t.legendManualLayout;
|
|
319
|
-
if (f && f.xMode === "edge" && f.yMode === "edge" && f.w > 0 && f.h > 0) {
|
|
320
|
-
let n = r + f.x * a, s = i + f.y * o, c = f.w * a, l = f.h * o, u = c >= l ? "horizontal" : "vertical";
|
|
321
|
-
E(e, t.series, n, s, c, l, u, t.chartType);
|
|
322
|
-
return;
|
|
323
|
-
}
|
|
324
|
-
switch (n.side) {
|
|
325
|
-
case "r":
|
|
326
|
-
E(e, t.series, r + a - n.reserveW + 4, c, n.reserveW - 8, u, "vertical", t.chartType);
|
|
327
|
-
break;
|
|
328
|
-
case "l":
|
|
329
|
-
E(e, t.series, r + 4, c, n.reserveW - 8, u, "vertical", t.chartType);
|
|
330
|
-
break;
|
|
331
|
-
case "t":
|
|
332
|
-
E(e, t.series, s, i + d, l, n.reserveH, "horizontal", t.chartType);
|
|
333
|
-
break;
|
|
334
|
-
case "b":
|
|
335
|
-
E(e, t.series, s, i + o - n.reserveH, l, n.reserveH, "horizontal", t.chartType);
|
|
336
|
-
break;
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
function k(e, t, n, r, i, a, o) {
|
|
340
|
-
if (t === "none" || !t) return;
|
|
341
|
-
let s = o ? Math.max(4, o + 2) : 4, c = e.strokeStyle, l = e.lineWidth;
|
|
342
|
-
if (e.strokeStyle = a ?? "#888", e.lineWidth = o ?? 1, e.beginPath(), n === "val") {
|
|
343
|
-
let n = r, a = i, o = t === "out" || t === "cross" ? -s : 0, c = t === "in" || t === "cross" ? s : 0;
|
|
344
|
-
e.moveTo(n + o, a), e.lineTo(n + c, a);
|
|
345
|
-
} else {
|
|
346
|
-
let n = r, a = i, o = t === "out" || t === "cross" ? s : 0, c = t === "in" || t === "cross" ? -s : 0;
|
|
347
|
-
e.moveTo(a, n + o), e.lineTo(a, n + c);
|
|
348
|
-
}
|
|
349
|
-
e.stroke(), e.strokeStyle = c, e.lineWidth = l;
|
|
350
|
-
}
|
|
351
|
-
function A(e, t, n) {
|
|
352
|
-
return e.titleFontSizeHpt ? e.titleFontSizeHpt / 100 * n : Math.max(10, t * .085);
|
|
353
|
-
}
|
|
354
|
-
function j(e, t, n) {
|
|
355
|
-
return e ? e / 100 * n : Math.max(8, t * .045);
|
|
356
|
-
}
|
|
357
|
-
function M(e, t, n, r, i, a) {
|
|
358
|
-
t.title && (e.font = `bold ${a}px ${t.titleFontFace ? `"${t.titleFontFace}", Calibri, Arial, sans-serif` : "Calibri, Arial, sans-serif"}`, e.fillStyle = t.titleFontColor ? `#${t.titleFontColor}` : "#333", e.textAlign = "center", e.textBaseline = "top", e.fillText(t.title, n + i / 2, r));
|
|
359
|
-
}
|
|
360
|
-
function N(e) {
|
|
361
|
-
if (e.categories.length > 0) return e.categories;
|
|
362
|
-
let t = e.series[0];
|
|
363
|
-
if (t?.categories && t.categories.length > 0) return t.categories;
|
|
364
|
-
let n = 0;
|
|
365
|
-
for (let t of e.series) t.values.length > n && (n = t.values.length);
|
|
366
|
-
return n > 0 ? Array.from({ length: n }, (e, t) => String(t + 1)) : [];
|
|
367
|
-
}
|
|
368
|
-
function P(e, t, n, r, i, a, o, s, c) {
|
|
369
|
-
let l = s ?? "outEnd";
|
|
370
|
-
if (e.fillStyle = c ? `#${c}` : "#333", o === "vertical") {
|
|
371
|
-
let o = n + a / 2;
|
|
372
|
-
l === "inBase" ? (e.textAlign = "center", e.textBaseline = "bottom", e.fillText(t, o, r + i - 2)) : l === "inEnd" ? (e.textAlign = "center", e.textBaseline = "top", e.fillText(t, o, r + 2)) : l === "ctr" ? (e.textAlign = "center", e.textBaseline = "middle", e.fillText(t, o, r + i / 2)) : (e.textAlign = "center", e.textBaseline = "bottom", e.fillText(t, o, r - 1));
|
|
373
|
-
} else {
|
|
374
|
-
let o = r + a / 2;
|
|
375
|
-
l === "inBase" ? (e.textAlign = "left", e.textBaseline = "middle", e.fillText(t, n + 4, o)) : l === "inEnd" ? (e.textAlign = "right", e.textBaseline = "middle", e.fillText(t, n + i - 4, o)) : l === "ctr" ? (e.textAlign = "center", e.textBaseline = "middle", e.fillText(t, n + i / 2, o)) : (e.textAlign = "left", e.textBaseline = "middle", e.fillText(t, n + i + 2, o));
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
function F(e, t, n, r) {
|
|
379
|
-
let { x: i, y: a, w: c, h: l } = n, d = t.chartType === "clusteredBarH" || t.chartType === "stackedBarH" || t.chartType === "stackedBarHPct", f = t.chartType.startsWith("stacked"), p = t.chartType === "stackedBarPct" || t.chartType === "stackedBarHPct", m = t.series.filter((e) => e.seriesType !== "line"), h = t.series.filter((e) => e.seriesType === "line"), _ = N(t), v = _.length;
|
|
380
|
-
if (v === 0) return;
|
|
381
|
-
let y = t.title ? A(t, l, r) : 0, x = t.title ? l * .02 : 0, S = t.title ? l * .025 : 0, w = t.title ? y + x + S : 0, T = D(t, c, l), E = T?.side === "r" ? T.reserveW : 0, k = T?.side === "l" ? T.reserveW : 0, j = T?.side === "t" ? T.reserveH : 0, F = T?.side === "b" ? T.reserveH : 0, I = Math.max(8, Math.min(10, l * .045)), L = t.catAxisTitle ? I + 4 : 0, R = t.valAxisTitle ? I + 4 : 0, z = {
|
|
382
|
-
t: w + j + l * .02,
|
|
383
|
-
r: E + c * .03,
|
|
384
|
-
b: l * .14 + L + F,
|
|
385
|
-
l: c * .12 + R + k
|
|
386
|
-
};
|
|
387
|
-
d && (z.l = (t.catAxisHidden ? c * .03 : c * .22) + R + k, z.b = (t.valAxisHidden ? l * .02 : l * .08) + L + F), M(e, t, i, a + x, c, y);
|
|
388
|
-
let B = t.plotAreaManualLayout, V, H, U, W;
|
|
389
|
-
if (B && B.w != null && B.h != null ? (V = i + B.x * c, H = a + B.y * l, U = B.w * c, W = B.h * l) : (V = i + z.l, H = a + z.t, U = c - z.l - z.r, W = l - z.t - z.b), U <= 0 || W <= 0) return;
|
|
390
|
-
t.plotAreaBg && (e.fillStyle = `#${t.plotAreaBg}`, e.fillRect(V, H, U, W));
|
|
391
|
-
let G = 0;
|
|
392
|
-
for (let e = 0; e < v; e++) {
|
|
393
|
-
let t = 0;
|
|
394
|
-
for (let n of m) {
|
|
395
|
-
let r = n.values[e] ?? 0;
|
|
396
|
-
f ? t += Math.abs(r) : G = Math.max(G, Math.abs(r));
|
|
397
|
-
}
|
|
398
|
-
f && (G = Math.max(G, t));
|
|
399
|
-
}
|
|
400
|
-
p && (G = 100), t.valMax != null && (G = t.valMax), G === 0 && (G = 1);
|
|
401
|
-
let K = o(G), q = t.valMax ?? s(G, K), J = "#e0e0e0", ee = Math.round(q / K);
|
|
402
|
-
if (e.textBaseline = "middle", e.font = `${Math.max(8, Math.min(11, W / 20))}px sans-serif`, e.fillStyle = t.valAxisFontColor ? `#${t.valAxisFontColor}` : "#555", !t.valAxisHidden) for (let n = 0; n <= ee; n++) {
|
|
403
|
-
let r = n * K, i = p ? `${Math.round(r)}%` : u(r, t.valAxisFormatCode);
|
|
404
|
-
if (d) {
|
|
405
|
-
let t = V + r / q * U;
|
|
406
|
-
e.strokeStyle = n === 0 ? "#aaa" : J, e.lineWidth = n === 0 ? 1 : .5, e.beginPath(), e.moveTo(t, H), e.lineTo(t, H + W), e.stroke(), e.textAlign = "center", e.fillText(i, t, H + W + 10);
|
|
407
|
-
} else {
|
|
408
|
-
let t = H + W - r / q * W;
|
|
409
|
-
e.strokeStyle = n === 0 ? "#aaa" : J, e.lineWidth = n === 0 ? 1 : .5, e.beginPath(), e.moveTo(V, t), e.lineTo(V + U, t), e.stroke(), e.textAlign = "right", e.fillText(i, V - 4, t);
|
|
410
|
-
}
|
|
411
|
-
}
|
|
412
|
-
let Y = t.catAxisLineColor ? `#${t.catAxisLineColor}` : "#aaa", te = t.valAxisLineColor ? `#${t.valAxisLineColor}` : "#aaa", ne = t.catAxisLineWidthEmu ? Math.max(.5, t.catAxisLineWidthEmu / g) : 1, re = t.valAxisLineWidthEmu ? Math.max(.5, t.valAxisLineWidthEmu / g) : 1, ie = (t, n, r, i, a, o) => {
|
|
413
|
-
e.strokeStyle = a, e.lineWidth = o, e.beginPath(), e.moveTo(t, n), e.lineTo(r, i), e.stroke();
|
|
414
|
-
}, ae = !t.catAxisHidden && !t.catAxisLineHidden, oe = !t.valAxisHidden && !t.valAxisLineHidden && t.valAxisLineColor != null;
|
|
415
|
-
d ? (ae && ie(V, H, V, H + W, Y, ne), oe && ie(V, H + W, V + U, H + W, te, re)) : (ae && ie(V, H + W, V + U, H + W, Y, ne), oe && ie(V, H, V, H + W, te, re));
|
|
416
|
-
let X = d ? W / v : U / v, se = f ? 1 : Math.max(1, m.length), ce = f ? 0 : t.barOverlap ?? 0, le = t.barGapWidth ?? 150, Z = X / (1 + (se - 1) * (1 - ce / 100) + le / 100), ue = f ? 0 : Z * (1 - ce / 100), Q = (X - (Z + (se - 1) * ue)) / 2;
|
|
417
|
-
for (let n = 0; n < v; n++) {
|
|
418
|
-
let i = 0, a = 0;
|
|
419
|
-
if (p) {
|
|
420
|
-
for (let e of m) a += Math.abs(e.values[n] ?? 0);
|
|
421
|
-
a === 0 && (a = 1);
|
|
422
|
-
}
|
|
423
|
-
for (let o = 0; o < m.length; o++) {
|
|
424
|
-
let s = m[o], c = s.values[n] ?? 0, l = p ? Math.abs(c) / a * 100 : Math.abs(c), h = b(o, s);
|
|
425
|
-
if (d) {
|
|
426
|
-
let a = f ? o : m.length - 1 - o, c = f ? H + (v - 1 - n) * X + Q : H + (v - 1 - n) * X + Q + a * ue, d = l / q * U, g = f ? V + i / q * U : V;
|
|
427
|
-
e.fillStyle = h, e.fillRect(g, c, d, Z), t.showDataLabels && l > 0 && (e.font = `bold ${t.dataLabelFontSizeHpt ? t.dataLabelFontSizeHpt / 100 * r : Math.max(7, Math.min(11, Z * .6))}px sans-serif`, P(e, p ? `${Math.round(l)}%` : u(l, t.dataLabelFormatCode ?? s.valFormatCode ?? null), g, c, d, Z, "horizontal", t.dataLabelPosition ?? null, s.labelColor ?? t.dataLabelFontColor ?? null));
|
|
428
|
-
} else {
|
|
429
|
-
let a = f ? V + n * X + Q : V + n * X + Q + o * ue, c = l / q * W, d = H + W - (f ? i + l : l) / q * W;
|
|
430
|
-
e.fillStyle = h, e.fillRect(a, d, Z, c), t.showDataLabels && l > 0 && (e.font = `bold ${t.dataLabelFontSizeHpt ? t.dataLabelFontSizeHpt / 100 * r : Math.max(7, Math.min(11, Z * .6))}px sans-serif`, P(e, p ? `${Math.round(l)}%` : u(l, t.dataLabelFormatCode ?? s.valFormatCode ?? null), a, d, c, Z, "vertical", t.dataLabelPosition ?? null, s.labelColor ?? t.dataLabelFontColor ?? null));
|
|
431
|
-
}
|
|
432
|
-
f && (i += l);
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
if (!t.catAxisHidden) {
|
|
436
|
-
e.fillStyle = t.catAxisFontColor ? `#${t.catAxisFontColor}` : "#555", e.font = `${Math.max(8, Math.min(11, X * .5))}px sans-serif`;
|
|
437
|
-
for (let t = 0; t < v; t++) {
|
|
438
|
-
let n = (_[t] ?? "").toString().slice(0, 12);
|
|
439
|
-
if (d) {
|
|
440
|
-
let r = H + (v - 1 - t) * X + X / 2;
|
|
441
|
-
e.textAlign = "right", e.textBaseline = "middle", e.fillText(n, V - 4, r);
|
|
442
|
-
} else {
|
|
443
|
-
let r = V + t * X + X / 2;
|
|
444
|
-
e.textAlign = "center", e.textBaseline = "top", e.fillText(n, r, H + W + 3);
|
|
445
|
-
}
|
|
446
|
-
}
|
|
447
|
-
}
|
|
448
|
-
if (h.length > 0 && !d) for (let t = 0; t < h.length; t++) {
|
|
449
|
-
let n = h[t], r = b(m.length + t, n);
|
|
450
|
-
e.strokeStyle = r, e.lineWidth = 2, e.setLineDash([]), e.beginPath();
|
|
451
|
-
let i = !1;
|
|
452
|
-
for (let t = 0; t < v; t++) {
|
|
453
|
-
let r = n.values[t];
|
|
454
|
-
if (r == null) {
|
|
455
|
-
i = !1;
|
|
456
|
-
continue;
|
|
457
|
-
}
|
|
458
|
-
let a = V + t * X + X / 2, o = H + W - r / q * W;
|
|
459
|
-
i ? e.lineTo(a, o) : (e.moveTo(a, o), i = !0);
|
|
460
|
-
}
|
|
461
|
-
if (e.stroke(), n.showMarker !== !1) for (let t = 0; t < v; t++) {
|
|
462
|
-
let i = n.values[t];
|
|
463
|
-
if (i == null) continue;
|
|
464
|
-
let a = V + t * X + X / 2, o = H + W - i / q * W;
|
|
465
|
-
e.fillStyle = r, e.beginPath(), e.arc(a, o, 3, 0, Math.PI * 2), e.fill();
|
|
466
|
-
}
|
|
467
|
-
}
|
|
468
|
-
O(e, d && !f ? {
|
|
469
|
-
...t,
|
|
470
|
-
series: [...t.series].reverse()
|
|
471
|
-
} : t, T, i, a, c, l, V, H, U, W, w + 2), t.catAxisTitle && C(e, t.catAxisTitle, V, H, U, W, "cat", I), t.valAxisTitle && C(e, t.valAxisTitle, V, H, U, W, "val", I);
|
|
472
|
-
}
|
|
473
|
-
function I(e, t, n, r) {
|
|
474
|
-
let { x: i, y: a, w: d, h: f } = n, p = N(t), m = p.length;
|
|
475
|
-
if (m === 0) return;
|
|
476
|
-
let h = t.title ? A(t, f, r) : 0, g = t.title ? f * .045 : 0, _ = t.title ? f * .035 : 0, v = t.title ? h + g + _ : 0, y = D(t, d, f), x = y?.side === "r" ? y.reserveW : 0, S = y?.side === "l" ? y.reserveW : 0, w = y?.side === "t" ? y.reserveH : 0, T = y?.side === "b" ? y.reserveH : 0, E = j(t.catAxisFontSizeHpt, f, r), P = j(t.valAxisFontSizeHpt, f, r), F = Math.max(E, P), I = t.catAxisTitle ? F + 4 : 0, L = t.valAxisTitle ? F + 4 : 0, R = {
|
|
477
|
-
t: v + w + P / 2 + 2,
|
|
478
|
-
r: x + d * .05,
|
|
479
|
-
b: E + 12 + I + T,
|
|
480
|
-
l: P * 2.2 + 10 + L + S
|
|
481
|
-
};
|
|
482
|
-
M(e, t, i, a + g, d, h);
|
|
483
|
-
let z = i + R.l, B = a + R.t, V = d - R.l - R.r, H = f - R.t - R.b;
|
|
484
|
-
if (V <= 0 || H <= 0) return;
|
|
485
|
-
t.plotAreaBg && (e.fillStyle = `#${t.plotAreaBg}`, e.fillRect(z, B, V, H));
|
|
486
|
-
let U = Infinity, W = -Infinity;
|
|
487
|
-
for (let e of t.series) for (let t of e.values) t != null && (U = Math.min(U, t), W = Math.max(W, t));
|
|
488
|
-
isFinite(U) || (U = 0, W = 1), t.valMin == null ? U > 0 && (U = 0) : U = t.valMin, t.valMax == null ? W < 0 && (W = 0) : W = t.valMax, W === U && (W = U + 1);
|
|
489
|
-
let G = o(W - U), K = t.valMin ?? c(U, G), q = t.valMax ?? s(W, G), J = q - K;
|
|
490
|
-
if (J === 0) return;
|
|
491
|
-
let ee = (e) => B + H - (e - K) / J * H, Y = t.catAxisCrossBetween === "midCat" ? (e) => z + (m === 1 ? V / 2 : e / (m - 1) * V) : (e) => z + (e + .5) / m * V;
|
|
492
|
-
if (!t.valAxisHidden) {
|
|
493
|
-
let n = Math.round((q - K) / G);
|
|
494
|
-
e.font = `${P}px sans-serif`, e.textBaseline = "middle";
|
|
495
|
-
for (let r = 0; r <= n; r++) {
|
|
496
|
-
let n = K + r * G, i = ee(n);
|
|
497
|
-
e.strokeStyle = n === 0 ? "#aaa" : "#e0e0e0", e.lineWidth = n === 0 ? 1 : .5, e.beginPath(), e.moveTo(z, i), e.lineTo(z + V, i), e.stroke(), k(e, t.valAxisMajorTickMark, "val", z, i), e.fillStyle = t.valAxisFontColor ? `#${t.valAxisFontColor}` : "#555", e.textAlign = "right", e.fillText(u(n, t.valAxisFormatCode), z - 6, i);
|
|
498
|
-
}
|
|
499
|
-
}
|
|
500
|
-
e.strokeStyle = "#aaa", e.lineWidth = 1, !t.catAxisHidden && !t.catAxisLineHidden && (e.beginPath(), e.moveTo(z, B + H), e.lineTo(z + V, B + H), e.stroke()), !t.valAxisHidden && !t.valAxisLineHidden && (e.beginPath(), e.moveTo(z, B), e.lineTo(z, B + H), e.stroke());
|
|
501
|
-
let te = Math.max(1, 2.25 * r), ne = Math.max(2, 2.5 * r), re = j(t.dataLabelFontSizeHpt, f, r);
|
|
502
|
-
for (let n = 0; n < t.series.length; n++) {
|
|
503
|
-
let r = t.series[n], i = b(n, r);
|
|
504
|
-
e.strokeStyle = i, e.lineWidth = te, e.setLineDash([]), e.beginPath();
|
|
505
|
-
let a = !1;
|
|
506
|
-
for (let t = 0; t < m; t++) {
|
|
507
|
-
let n = r.values[t];
|
|
508
|
-
if (n == null) {
|
|
509
|
-
a = !1;
|
|
510
|
-
continue;
|
|
511
|
-
}
|
|
512
|
-
let i = Y(t), o = ee(n);
|
|
513
|
-
a ? e.lineTo(i, o) : (e.moveTo(i, o), a = !0);
|
|
514
|
-
}
|
|
515
|
-
e.stroke(), e.fillStyle = i;
|
|
516
|
-
let o = r.showMarker !== !1;
|
|
517
|
-
for (let n = 0; n < m; n++) {
|
|
518
|
-
let a = r.values[n];
|
|
519
|
-
if (a != null && (o && (e.beginPath(), e.arc(Y(n), ee(a), ne, 0, Math.PI * 2), e.fill()), t.showDataLabels)) {
|
|
520
|
-
e.font = `${re}px sans-serif`, e.fillStyle = "#333", e.textAlign = "center", e.textBaseline = "bottom";
|
|
521
|
-
let t = o ? ne + 1 : 2;
|
|
522
|
-
e.fillText(l(a), Y(n), ee(a) - t), e.fillStyle = i;
|
|
523
|
-
}
|
|
524
|
-
}
|
|
525
|
-
}
|
|
526
|
-
if (!t.catAxisHidden) {
|
|
527
|
-
let n = Math.max(1, Math.ceil(m / 8)), r = t.catAxisFontColor ? `#${t.catAxisFontColor}` : "#555";
|
|
528
|
-
e.fillStyle = r, e.textAlign = "center", e.textBaseline = "top", e.font = `${E}px sans-serif`;
|
|
529
|
-
for (let i = 0; i < m; i += n) {
|
|
530
|
-
let n = Y(i);
|
|
531
|
-
k(e, t.catAxisMajorTickMark, "cat", B + H, n), e.fillStyle = r, e.fillText((p[i] ?? "").toString().slice(0, 10), n, B + H + 5);
|
|
532
|
-
}
|
|
533
|
-
}
|
|
534
|
-
O(e, t, y, i, a, d, f, z, B, V, H, v + 2), t.catAxisTitle && C(e, t.catAxisTitle, z, B, V, H, "cat", F), t.valAxisTitle && C(e, t.valAxisTitle, z, B, V, H, "val", F);
|
|
535
|
-
}
|
|
536
|
-
function L(e, t, n, r) {
|
|
537
|
-
let { x: i, y: a, w: c, h: l } = n, d = N(t), f = d.length;
|
|
538
|
-
if (f === 0) return;
|
|
539
|
-
let p = t.chartType === "stackedArea" || t.chartType === "stackedAreaPct", m = t.title ? A(t, l, r) : 0, h = t.title ? l * .035 : 0, g = t.title ? l * .035 : 0, _ = t.title ? m + h + g : 0, v = D(t, c, l), y = v?.side === "r" ? v.reserveW : 0, x = v?.side === "l" ? v.reserveW : 0, w = v?.side === "t" ? v.reserveH : 0, T = v?.side === "b" ? v.reserveH : 0, E = Math.max(8, Math.min(10, l * .045)), k = t.catAxisTitle ? E + 4 : 0, j = t.valAxisTitle ? E + 4 : 0, P = {
|
|
540
|
-
t: _ + w + l * .02,
|
|
541
|
-
r: y + c * .05,
|
|
542
|
-
b: l * .14 + k + T,
|
|
543
|
-
l: c * .12 + j + x
|
|
544
|
-
};
|
|
545
|
-
M(e, t, i, a + h, c, m);
|
|
546
|
-
let F = i + P.l, I = a + P.t, L = c - P.l - P.r, R = l - P.t - P.b;
|
|
547
|
-
if (L <= 0 || R <= 0) return;
|
|
548
|
-
t.plotAreaBg && (e.fillStyle = `#${t.plotAreaBg}`, e.fillRect(F, I, L, R));
|
|
549
|
-
let z = 0;
|
|
550
|
-
for (let e = 0; e < f; e++) if (p) {
|
|
551
|
-
let n = 0;
|
|
552
|
-
for (let r of t.series) n += r.values[e] ?? 0;
|
|
553
|
-
z = Math.max(z, n);
|
|
554
|
-
} else for (let n of t.series) z = Math.max(z, n.values[e] ?? 0);
|
|
555
|
-
t.valMax != null && (z = t.valMax), z === 0 && (z = 1);
|
|
556
|
-
let B = o(z), V = t.valMax ?? s(z, B), H = (e) => F + (f === 1 ? L / 2 : e / (f - 1) * L), U = (e) => I + R - e / V * R;
|
|
557
|
-
if (!t.valAxisHidden) {
|
|
558
|
-
e.font = `${Math.max(8, Math.min(11, R / 20))}px sans-serif`, e.textBaseline = "middle";
|
|
559
|
-
let n = Math.round(V / B);
|
|
560
|
-
for (let r = 0; r <= n; r++) {
|
|
561
|
-
let n = r * B, i = U(n);
|
|
562
|
-
e.strokeStyle = r === 0 ? "#aaa" : "#e0e0e0", e.lineWidth = r === 0 ? 1 : .5, e.beginPath(), e.moveTo(F, i), e.lineTo(F + L, i), e.stroke(), e.fillStyle = t.valAxisFontColor ? `#${t.valAxisFontColor}` : "#555", e.textAlign = "right", e.fillText(u(n, t.valAxisFormatCode), F - 4, i);
|
|
563
|
-
}
|
|
564
|
-
}
|
|
565
|
-
!t.catAxisHidden && !t.catAxisLineHidden && (e.strokeStyle = "#aaa", e.lineWidth = 1, e.beginPath(), e.moveTo(F, I + R), e.lineTo(F + L, I + R), e.stroke());
|
|
566
|
-
let W = p ? Array(f).fill(0) : null;
|
|
567
|
-
for (let n = t.series.length - 1; n >= 0; n--) {
|
|
568
|
-
let r = t.series[n], i = b(n, r), a = I + R;
|
|
569
|
-
if (e.beginPath(), p && W) {
|
|
570
|
-
for (let t = 0; t < f; t++) {
|
|
571
|
-
let n = (r.values[t] ?? 0) + W[t], i = H(t), a = U(n);
|
|
572
|
-
t === 0 ? e.moveTo(i, a) : e.lineTo(i, a);
|
|
573
|
-
}
|
|
574
|
-
for (let t = f - 1; t >= 0; t--) e.lineTo(H(t), U(W[t]));
|
|
575
|
-
for (let e = 0; e < f; e++) W[e] += r.values[e] ?? 0;
|
|
576
|
-
} else {
|
|
577
|
-
e.moveTo(H(0), a);
|
|
578
|
-
for (let t = 0; t < f; t++) e.lineTo(H(t), U(r.values[t] ?? 0));
|
|
579
|
-
e.lineTo(H(f - 1), a);
|
|
580
|
-
}
|
|
581
|
-
e.closePath(), e.fillStyle = S(i, .6), e.fill(), e.strokeStyle = i, e.lineWidth = 1.5, e.setLineDash([]), e.stroke();
|
|
582
|
-
}
|
|
583
|
-
if (!t.catAxisHidden) {
|
|
584
|
-
let n = Math.max(1, Math.ceil(f / 8));
|
|
585
|
-
e.fillStyle = t.catAxisFontColor ? `#${t.catAxisFontColor}` : "#555", e.textAlign = "center", e.textBaseline = "top", e.font = `${Math.max(8, Math.min(11, L / f * .8))}px sans-serif`;
|
|
586
|
-
for (let t = 0; t < f; t += n) e.fillText((d[t] ?? "").toString().slice(0, 10), H(t), I + R + 3);
|
|
587
|
-
}
|
|
588
|
-
O(e, t, v, i, a, c, l, F, I, L, R, _ + 2), t.catAxisTitle && C(e, t.catAxisTitle, F, I, L, R, "cat", E), t.valAxisTitle && C(e, t.valAxisTitle, F, I, L, R, "val", E);
|
|
589
|
-
}
|
|
590
|
-
function R(e, t, n, r, i) {
|
|
591
|
-
let { x: a, y: o, w: s, h: c } = n, l = t.series[0];
|
|
592
|
-
if (!l) return;
|
|
593
|
-
let u = l.categories && l.categories.length > 0 ? l.categories : t.categories, d = l.values.map((e) => Math.abs(e ?? 0)), f = d.reduce((e, t) => e + t, 0);
|
|
594
|
-
if (f === 0) return;
|
|
595
|
-
let p = t.title ? A(t, c, i) : 0, m = t.title ? c * .035 : 0, h = t.title ? c * .035 : 0, g = t.title ? p + m + h : 0;
|
|
596
|
-
M(e, t, a, o + m, s, p);
|
|
597
|
-
let _ = t.showLegend ? (() => {
|
|
598
|
-
let e = t.legendPos ?? "r", n = e === "l" ? "l" : e === "t" ? "t" : e === "b" ? "b" : "r";
|
|
599
|
-
return n === "r" || n === "l" ? {
|
|
600
|
-
side: n,
|
|
601
|
-
reserveW: Math.max(80, s * .28),
|
|
602
|
-
reserveH: 0
|
|
603
|
-
} : {
|
|
604
|
-
side: n,
|
|
605
|
-
reserveW: 0,
|
|
606
|
-
reserveH: Math.max(18, c * .08)
|
|
607
|
-
};
|
|
608
|
-
})() : null, v = _?.side === "r" ? _.reserveW : 0, b = _?.side === "l" ? _.reserveW : 0, S = _?.side === "t" ? _.reserveH : 0, C = _?.side === "b" ? _.reserveH : 0, w = s - v - b, T = c - g - S - C - c * .02, E = a + b + w / 2, D = o + g + S + c * .02 + T / 2, k = Math.min(w, T) * .42, j = r ? k * .5 : 0, N = -Math.PI / 2;
|
|
609
|
-
for (let n = 0; n < d.length; n++) {
|
|
610
|
-
let i = d[n] / f * Math.PI * 2, a = x(n, l);
|
|
611
|
-
if (e.beginPath(), e.moveTo(E, D), e.arc(E, D, k, N, N + i), e.closePath(), e.fillStyle = a, e.fill(), e.strokeStyle = "#fff", e.lineWidth = 1, e.stroke(), t.showDataLabels && i > .15) {
|
|
612
|
-
let t = N + i / 2, a = k * (r ? .75 : .6), o = E + Math.cos(t) * a, s = D + Math.sin(t) * a, c = Math.round(d[n] / f * 100);
|
|
613
|
-
e.font = `bold ${Math.max(8, k * .1)}px sans-serif`, e.fillStyle = "#fff", e.textAlign = "center", e.textBaseline = "middle", e.fillText(`${c}%`, o, s);
|
|
614
|
-
}
|
|
615
|
-
N += i;
|
|
616
|
-
}
|
|
617
|
-
if (r && (e.beginPath(), e.arc(E, D, j, 0, Math.PI * 2), e.fillStyle = "#fff", e.fill()), _) {
|
|
618
|
-
let n = d.map((e, t) => ({
|
|
619
|
-
name: (u[t] ?? `Item ${t + 1}`).toString(),
|
|
620
|
-
color: l.dataPointColors?.[t] ?? l.color ?? y[t % y.length],
|
|
621
|
-
values: []
|
|
622
|
-
})), r = E - w / 2;
|
|
623
|
-
O(e, {
|
|
624
|
-
...t,
|
|
625
|
-
series: n
|
|
626
|
-
}, _, a, o, s, c, r, D - T / 2, w, T, g + 2);
|
|
627
|
-
}
|
|
628
|
-
}
|
|
629
|
-
function z(e, t, n, r) {
|
|
630
|
-
let { x: i, y: a, w: c, h: u } = n, d = N(t), f = d.length;
|
|
631
|
-
if (f < 3) return;
|
|
632
|
-
let p = t.title ? A(t, u, r) : 0, m = t.title ? u * .035 : 0, h = t.title ? u * .035 : 0, g = t.title ? p + m + h : 0, _ = D(t, c, u), v = _?.side === "r" ? _.reserveW : 0, y = _?.side === "l" ? _.reserveW : 0, x = _?.side === "t" ? _.reserveH : 0, C = _?.side === "b" ? _.reserveH : 0;
|
|
633
|
-
M(e, t, i, a + m, c, p);
|
|
634
|
-
let w = c - v - y, T = u - g - x - C - u * .02, E = i + y + w / 2, k = a + g + x + u * .02 + T / 2, P = Math.min(w, T) * .38, F = 0;
|
|
635
|
-
for (let e of t.series) for (let t of e.values) F = Math.max(F, t ?? 0);
|
|
636
|
-
t.valMax != null && (F = t.valMax), F === 0 && (F = 1);
|
|
637
|
-
let I = o(F), L = t.valMax ?? s(F, I), R = -Math.PI / 2, z = (e) => R + e / f * Math.PI * 2, B = Math.round(L / I);
|
|
638
|
-
e.strokeStyle = "#ddd", e.lineWidth = .5;
|
|
639
|
-
for (let t = 1; t <= B; t++) {
|
|
640
|
-
let n = t / B * P;
|
|
641
|
-
e.beginPath();
|
|
642
|
-
for (let t = 0; t < f; t++) {
|
|
643
|
-
let r = z(t), i = E + Math.cos(r) * n, a = k + Math.sin(r) * n;
|
|
644
|
-
t === 0 ? e.moveTo(i, a) : e.lineTo(i, a);
|
|
645
|
-
}
|
|
646
|
-
e.closePath(), e.stroke();
|
|
647
|
-
}
|
|
648
|
-
e.strokeStyle = "#bbb", e.lineWidth = .5;
|
|
649
|
-
for (let t = 0; t < f; t++) {
|
|
650
|
-
let n = z(t);
|
|
651
|
-
e.beginPath(), e.moveTo(E, k), e.lineTo(E + Math.cos(n) * P, k + Math.sin(n) * P), e.stroke();
|
|
652
|
-
}
|
|
653
|
-
if (!t.valAxisHidden) {
|
|
654
|
-
e.font = `${j(t.valAxisFontSizeHpt, u, r)}px sans-serif`, e.fillStyle = "#555", e.textAlign = "right", e.textBaseline = "middle";
|
|
655
|
-
for (let t = 1; t <= B; t++) {
|
|
656
|
-
let n = t / B * L, r = t / B * P;
|
|
657
|
-
e.fillText(l(n), E - 3, k - r);
|
|
658
|
-
}
|
|
659
|
-
}
|
|
660
|
-
e.font = `${Math.max(8, Math.min(11, P * .2))}px sans-serif`, e.fillStyle = "#444", e.textBaseline = "middle";
|
|
661
|
-
for (let t = 0; t < f; t++) {
|
|
662
|
-
let n = z(t), r = E + Math.cos(n) * (P + 12), i = k + Math.sin(n) * (P + 12);
|
|
663
|
-
e.textAlign = Math.cos(n) < -.1 ? "right" : Math.cos(n) > .1 ? "left" : "center", e.fillText((d[t] ?? "").toString().slice(0, 12), r, i);
|
|
664
|
-
}
|
|
665
|
-
let V = t.radarStyle === "filled", H = Math.max(2, P * .025);
|
|
666
|
-
for (let n = 0; n < t.series.length; n++) {
|
|
667
|
-
let r = t.series[n], i = b(n, r), a = [];
|
|
668
|
-
for (let e = 0; e < f; e++) {
|
|
669
|
-
let t = r.values[e];
|
|
670
|
-
if (t == null) {
|
|
671
|
-
a.push(null);
|
|
672
|
-
continue;
|
|
673
|
-
}
|
|
674
|
-
let n = t / L, i = z(e);
|
|
675
|
-
a.push([E + Math.cos(i) * P * n, k + Math.sin(i) * P * n]);
|
|
676
|
-
}
|
|
677
|
-
e.beginPath();
|
|
678
|
-
let o = !1;
|
|
679
|
-
for (let t of a) {
|
|
680
|
-
if (t == null) {
|
|
681
|
-
o = !1;
|
|
682
|
-
continue;
|
|
683
|
-
}
|
|
684
|
-
o ? e.lineTo(t[0], t[1]) : (e.moveTo(t[0], t[1]), o = !0);
|
|
685
|
-
}
|
|
686
|
-
let s = a.every((e) => e != null);
|
|
687
|
-
if (V && s ? (e.closePath(), e.fillStyle = S(i, .25), e.fill()) : s && e.closePath(), e.strokeStyle = i, e.lineWidth = 2, e.stroke(), !V && r.showMarker !== !1) {
|
|
688
|
-
e.fillStyle = i;
|
|
689
|
-
for (let t of a) t != null && (e.beginPath(), e.arc(t[0], t[1], H, 0, Math.PI * 2), e.fill());
|
|
690
|
-
}
|
|
691
|
-
}
|
|
692
|
-
O(e, t, _, i, a, c, u, E - w / 2, k - T / 2, w, T, g + 2);
|
|
693
|
-
}
|
|
694
|
-
function B(e, t, n, r) {
|
|
695
|
-
let { x: i, y: a, w: s, h: c } = n, l = t.title ? A(t, c, r) : 0, d = t.title ? c * .035 : 0, f = t.title ? c * .035 : 0, p = t.title ? l + d + f : 0, m = D(t, s, c), h = m?.side === "r" ? m.reserveW : 0, _ = m?.side === "l" ? m.reserveW : 0, v = m?.side === "t" ? m.reserveH : 0, y = m?.side === "b" ? m.reserveH : 0, x = Math.max(8, Math.min(10, c * .045)), S = t.catAxisTitle ? x + 4 : 0, w = t.valAxisTitle ? x + 4 : 0;
|
|
696
|
-
if (t.title) {
|
|
697
|
-
let n = t.titleManualLayout;
|
|
698
|
-
n && (n.x !== void 0 || n.y !== void 0) ? M(e, t, i + n.x * s, a + n.y * c, (n.w ?? .5) * s, l) : M(e, t, i, a + d, s, l);
|
|
699
|
-
}
|
|
700
|
-
let T = t.plotAreaManualLayout, E, j, N, P;
|
|
701
|
-
if (T && T.w != null && T.h != null) E = i + T.x * s, j = a + T.y * c, N = T.w * s, P = T.h * c;
|
|
702
|
-
else {
|
|
703
|
-
let e = {
|
|
704
|
-
t: p + v + c * .02,
|
|
705
|
-
r: h + s * .05,
|
|
706
|
-
b: (t.catAxisHidden ? c * .04 : c * .12) + S + y,
|
|
707
|
-
l: (t.valAxisHidden ? s * .04 : s * .12) + w + _
|
|
708
|
-
};
|
|
709
|
-
E = i + e.l, j = a + e.t, N = s - e.l - e.r, P = c - e.t - e.b;
|
|
710
|
-
}
|
|
711
|
-
if (N <= 0 || P <= 0) return;
|
|
712
|
-
t.plotAreaBg && (e.fillStyle = `#${t.plotAreaBg}`, e.fillRect(E, j, N, P));
|
|
713
|
-
let F = [], I = [];
|
|
714
|
-
for (let e of t.series) {
|
|
715
|
-
let t = e.categories ?? [];
|
|
716
|
-
for (let e of t) {
|
|
717
|
-
let t = parseFloat(e);
|
|
718
|
-
isNaN(t) || F.push(t);
|
|
719
|
-
}
|
|
720
|
-
for (let t of e.values) t != null && I.push(t);
|
|
721
|
-
}
|
|
722
|
-
let L = F.length === 0;
|
|
723
|
-
if (L) {
|
|
724
|
-
let e = Math.max(...t.series.map((e) => e.values.length));
|
|
725
|
-
for (let t = 0; t < e; t++) F.push(t);
|
|
726
|
-
}
|
|
727
|
-
let R = Math.min(...F), z = Math.max(...F), B = Math.min(...I), W = Math.max(...I);
|
|
728
|
-
if (R === z && (--R, z += 1), B === W && (--B, W += 1), t.valMin == null ? B > 0 && (B = 0) : B = t.valMin, t.valMax != null && (W = t.valMax), t.catAxisMin != null && (R = t.catAxisMin), t.catAxisMax != null && (z = t.catAxisMax), t.catAxisMin == null || t.catAxisMax == null) {
|
|
729
|
-
let e = o(z - R);
|
|
730
|
-
e > 0 && (t.catAxisMin ?? (R = Math.floor(R / e) * e), t.catAxisMax ?? (z = Math.ceil(z / e) * e));
|
|
731
|
-
}
|
|
732
|
-
let K = (e) => E + (e - R) / (z - R) * N, q = (e) => j + P - (e - B) / (W - B) * P;
|
|
733
|
-
if (!t.valAxisHidden) {
|
|
734
|
-
let n = Math.max(8, Math.min(11, P / 20));
|
|
735
|
-
e.font = `${t.valAxisFontBold ? "bold " : ""}${n}px sans-serif`;
|
|
736
|
-
let r = o(W - B), i = Math.round((W - B) / r) + 1;
|
|
737
|
-
for (let n = 0; n < i; n++) {
|
|
738
|
-
let i = B + n * r;
|
|
739
|
-
if (i > W + r * .01) break;
|
|
740
|
-
let a = q(i);
|
|
741
|
-
e.strokeStyle = "#e0e0e0", e.lineWidth = .5, e.beginPath(), e.moveTo(E, a), e.lineTo(E + N, a), e.stroke(), e.fillStyle = "#555", e.textAlign = "right", e.textBaseline = "middle", e.fillText(u(i, t.valAxisFormatCode), E - 4, a);
|
|
742
|
-
let o = t.valAxisLineColor ? `#${t.valAxisLineColor}` : void 0, s = t.valAxisLineWidthEmu ? Math.max(.5, t.valAxisLineWidthEmu / g) : void 0;
|
|
743
|
-
k(e, t.valAxisMajorTickMark, "val", E, a, o, s);
|
|
744
|
-
}
|
|
745
|
-
}
|
|
746
|
-
let J = j + P;
|
|
747
|
-
if (t.catAxisCrossesAt != null) J = G(q(t.catAxisCrossesAt), j, j + P);
|
|
748
|
-
else {
|
|
749
|
-
let e = t.catAxisCrosses ?? "autoZero";
|
|
750
|
-
e === "autoZero" && B < 0 && W > 0 ? J = G(q(0), j, j + P) : e === "min" ? J = j + P : e === "max" && (J = j);
|
|
751
|
-
}
|
|
752
|
-
if (!t.catAxisHidden && !t.catAxisLineHidden && (e.save(), e.strokeStyle = t.catAxisLineColor ? `#${t.catAxisLineColor}` : "#888", e.lineWidth = t.catAxisLineWidthEmu ? Math.max(.5, t.catAxisLineWidthEmu / g) : 1, e.lineCap = "butt", e.beginPath(), e.moveTo(E, J), e.lineTo(E + N, J), e.stroke(), e.restore()), !t.valAxisHidden && !t.valAxisLineHidden && (e.save(), e.strokeStyle = t.valAxisLineColor ? `#${t.valAxisLineColor}` : "#888", e.lineWidth = t.valAxisLineWidthEmu ? Math.max(.5, t.valAxisLineWidthEmu / g) : 1, e.beginPath(), e.moveTo(E, j), e.lineTo(E, j + P), e.stroke(), e.restore()), !t.catAxisHidden) {
|
|
753
|
-
let n = Math.max(8, Math.min(11, P / 20));
|
|
754
|
-
e.font = `${t.catAxisFontBold ? "bold " : ""}${n}px sans-serif`;
|
|
755
|
-
let r = o(z - R), i = Math.round((z - R) / r) + 1;
|
|
756
|
-
e.fillStyle = "#555", e.textAlign = "center", e.textBaseline = "top";
|
|
757
|
-
for (let n = 0; n < i; n++) {
|
|
758
|
-
let i = R + n * r;
|
|
759
|
-
if (i > z + r * .01) break;
|
|
760
|
-
let a = K(i);
|
|
761
|
-
e.fillText(u(i, t.catAxisFormatCode), a, J + 4);
|
|
762
|
-
let o = t.catAxisLineColor ? `#${t.catAxisLineColor}` : void 0, s = t.catAxisLineWidthEmu ? Math.max(.5, t.catAxisLineWidthEmu / g) : void 0;
|
|
763
|
-
k(e, t.catAxisMajorTickMark, "cat", J, a, o, s);
|
|
764
|
-
}
|
|
765
|
-
}
|
|
766
|
-
let ee = t.chartType === "bubble", Y = ee ? "marker" : t.scatterStyle ?? "marker", te = Y === "line" || Y === "lineMarker" || Y === "lineNoMarker", ne = Y === "smooth" || Y === "smoothMarker" || Y === "smoothNoMarker", re = Y === "lineNoMarker" || Y === "smoothNoMarker";
|
|
767
|
-
for (let n = 0; n < t.series.length; n++) {
|
|
768
|
-
let i = t.series[n], a = b(n, i), o = i.categories ?? [];
|
|
769
|
-
for (let t of i.errBars ?? []) H(e, i, t, o, L, K, q, a);
|
|
770
|
-
if (te || ne) {
|
|
771
|
-
let t = [];
|
|
772
|
-
for (let e = 0; e < i.values.length; e++) {
|
|
773
|
-
let n = i.values[e];
|
|
774
|
-
if (n == null) continue;
|
|
775
|
-
let r = L ? e : parseFloat(o[e] ?? "0");
|
|
776
|
-
isNaN(r) || t.push({
|
|
777
|
-
x: K(r),
|
|
778
|
-
y: q(n)
|
|
779
|
-
});
|
|
780
|
-
}
|
|
781
|
-
if (t.length >= 2) {
|
|
782
|
-
if (e.save(), e.strokeStyle = i.color ? `#${i.color}` : a, e.lineWidth = 1.5, e.beginPath(), e.moveTo(t[0].x, t[0].y), ne && t.length >= 3) for (let n = 0; n < t.length - 1; n++) {
|
|
783
|
-
let r = t[n - 1] ?? t[n], i = t[n], a = t[n + 1], o = t[n + 2] ?? a, s = i.x + (a.x - r.x) / 6, c = i.y + (a.y - r.y) / 6, l = a.x - (o.x - i.x) / 6, u = a.y - (o.y - i.y) / 6;
|
|
784
|
-
e.bezierCurveTo(s, c, l, u, a.x, a.y);
|
|
785
|
-
}
|
|
786
|
-
else for (let n = 1; n < t.length; n++) e.lineTo(t[n].x, t[n].y);
|
|
787
|
-
e.stroke(), e.restore();
|
|
788
|
-
}
|
|
789
|
-
}
|
|
790
|
-
if (!(re || i.showMarker === !1 || typeof i.markerSymbol == "string" && i.markerSymbol === "none")) {
|
|
791
|
-
let t = 0;
|
|
792
|
-
if (ee && i.bubbleSizes && i.bubbleSizes.length > 0) {
|
|
793
|
-
let e = Math.max(0, ...i.bubbleSizes.filter((e) => e != null));
|
|
794
|
-
e > 0 && (t = Math.min(N, P) / Math.max(8, i.values.length * 1.6) / Math.sqrt(e));
|
|
795
|
-
}
|
|
796
|
-
for (let n = 0; n < i.values.length; n++) {
|
|
797
|
-
let s = i.values[n];
|
|
798
|
-
if (s == null) continue;
|
|
799
|
-
let c = L ? n : parseFloat(o[n] ?? "0");
|
|
800
|
-
if (isNaN(c)) continue;
|
|
801
|
-
let l = (i.dataPointOverrides ?? []).find((e) => e.idx === n), u = l?.markerSymbol ?? i.markerSymbol ?? "circle", d = l?.markerSize ?? i.markerSize ?? 5;
|
|
802
|
-
if (ee && t > 0) {
|
|
803
|
-
let e = i.bubbleSizes?.[n];
|
|
804
|
-
e != null && e > 0 && (d = Math.sqrt(e) * t * 2 / r);
|
|
805
|
-
}
|
|
806
|
-
let f = l?.markerFill ?? l?.color ?? i.markerFill ?? a, p = l?.markerLine ?? i.markerLine ?? null;
|
|
807
|
-
V(e, K(c), q(s), u, d, f, p, r);
|
|
808
|
-
}
|
|
809
|
-
}
|
|
810
|
-
U(e, i, o, L, K, q, P, r);
|
|
811
|
-
}
|
|
812
|
-
O(e, t, m, i, a, s, c, E, j, N, P, p + 2), t.catAxisTitle && C(e, t.catAxisTitle, E, j, N, P, "cat", x), t.valAxisTitle && C(e, t.valAxisTitle, E, j, N, P, "val", x);
|
|
813
|
-
}
|
|
814
|
-
function V(e, t, n, r, i, a, o, s) {
|
|
815
|
-
let c = Math.max(2, i * s), l = c / 2, u = a.startsWith("#") ? a : `#${a}`, d = o ? o.startsWith("#") ? o : `#${o}` : null;
|
|
816
|
-
switch (e.save(), e.fillStyle = u, d && (e.strokeStyle = d, e.lineWidth = 1), r) {
|
|
817
|
-
case "square":
|
|
818
|
-
e.fillRect(t - l, n - l, c, c), o && e.strokeRect(t - l, n - l, c, c);
|
|
819
|
-
break;
|
|
820
|
-
case "diamond":
|
|
821
|
-
e.beginPath(), e.moveTo(t, n - l), e.lineTo(t + l, n), e.lineTo(t, n + l), e.lineTo(t - l, n), e.closePath(), e.fill(), o && e.stroke();
|
|
822
|
-
break;
|
|
823
|
-
case "triangle":
|
|
824
|
-
e.beginPath(), e.moveTo(t, n - l), e.lineTo(t + l, n + l), e.lineTo(t - l, n + l), e.closePath(), e.fill(), o && e.stroke();
|
|
825
|
-
break;
|
|
826
|
-
case "x":
|
|
827
|
-
e.strokeStyle = u, e.lineWidth = Math.max(1, c * .18), e.beginPath(), e.moveTo(t - l, n - l), e.lineTo(t + l, n + l), e.moveTo(t - l, n + l), e.lineTo(t + l, n - l), e.stroke();
|
|
828
|
-
break;
|
|
829
|
-
case "plus":
|
|
830
|
-
e.strokeStyle = u, e.lineWidth = Math.max(1, c * .18), e.beginPath(), e.moveTo(t - l, n), e.lineTo(t + l, n), e.moveTo(t, n - l), e.lineTo(t, n + l), e.stroke();
|
|
831
|
-
break;
|
|
832
|
-
case "star":
|
|
833
|
-
e.beginPath();
|
|
834
|
-
for (let r = 0; r < 10; r++) {
|
|
835
|
-
let i = r % 2 == 0 ? l : l * .45, a = -Math.PI / 2 + r * Math.PI / 5, o = t + Math.cos(a) * i, s = n + Math.sin(a) * i;
|
|
836
|
-
r === 0 ? e.moveTo(o, s) : e.lineTo(o, s);
|
|
837
|
-
}
|
|
838
|
-
e.closePath(), e.fill(), o && e.stroke();
|
|
839
|
-
break;
|
|
840
|
-
case "dot":
|
|
841
|
-
e.beginPath(), e.arc(t, n, Math.max(1, c * .25), 0, Math.PI * 2), e.fill();
|
|
842
|
-
break;
|
|
843
|
-
case "dash": {
|
|
844
|
-
let r = Math.max(1, c * .25);
|
|
845
|
-
e.fillRect(t - l, n - r / 2, c, r);
|
|
846
|
-
break;
|
|
847
|
-
}
|
|
848
|
-
default:
|
|
849
|
-
e.beginPath(), e.arc(t, n, l, 0, Math.PI * 2), e.fill(), o && e.stroke();
|
|
850
|
-
break;
|
|
851
|
-
}
|
|
852
|
-
e.restore();
|
|
853
|
-
}
|
|
854
|
-
function H(e, t, n, r, i, a, o, s) {
|
|
855
|
-
e.save(), e.strokeStyle = n.color ? `#${n.color}` : s, e.lineWidth = n.lineWidthEmu ? Math.max(.5, n.lineWidthEmu / g) : 1, e.setLineDash(K(n.dash));
|
|
856
|
-
let c = n.barType === "plus" || n.barType === "both", l = n.barType === "minus" || n.barType === "both", u = n.dir === "x", d = e.lineWidth * 1.5;
|
|
857
|
-
for (let s = 0; s < t.values.length; s++) {
|
|
858
|
-
let f = t.values[s];
|
|
859
|
-
if (f == null) continue;
|
|
860
|
-
let p = i ? s : parseFloat(r[s] ?? "0");
|
|
861
|
-
if (isNaN(p)) continue;
|
|
862
|
-
let m = a(p), h = o(f), g = (t) => {
|
|
863
|
-
let r = m, i = h;
|
|
864
|
-
u ? r = a(p + t) : i = o(f + t), e.beginPath(), e.moveTo(m, h), e.lineTo(r, i), e.stroke(), n.noEndCap || (e.save(), e.setLineDash([]), e.beginPath(), u ? (e.moveTo(r, i - d), e.lineTo(r, i + d)) : (e.moveTo(r - d, i), e.lineTo(r + d, i)), e.stroke(), e.restore());
|
|
865
|
-
};
|
|
866
|
-
if (c) {
|
|
867
|
-
let e = n.plus[s];
|
|
868
|
-
e != null && g(e);
|
|
869
|
-
}
|
|
870
|
-
if (l) {
|
|
871
|
-
let e = n.minus[s];
|
|
872
|
-
e != null && g(-e);
|
|
873
|
-
}
|
|
874
|
-
}
|
|
875
|
-
e.restore();
|
|
876
|
-
}
|
|
877
|
-
function U(e, t, n, r, i, a, o, s) {
|
|
878
|
-
let c = t.dataLabelOverrides ?? [];
|
|
879
|
-
if (c.length === 0 && !t.seriesDataLabels) return;
|
|
880
|
-
let l = t.seriesDataLabels;
|
|
881
|
-
for (let d = 0; d < t.values.length; d++) {
|
|
882
|
-
let f = t.values[d];
|
|
883
|
-
if (f == null) continue;
|
|
884
|
-
let p = r ? d : parseFloat(n[d] ?? "0");
|
|
885
|
-
if (isNaN(p)) continue;
|
|
886
|
-
let m = c.find((e) => e.idx === d), h;
|
|
887
|
-
if (m) {
|
|
888
|
-
if (m.text === "") continue;
|
|
889
|
-
h = m.text;
|
|
890
|
-
} else if (l && (l.showVal || l.showSerName || l.showCatName)) {
|
|
891
|
-
let e = [];
|
|
892
|
-
if (l.showCatName && !r && e.push(n[d] ?? ""), l.showSerName && e.push(t.name), l.showVal && e.push(u(f, l.formatCode ?? null)), h = e.filter(Boolean).join(" "), !h) continue;
|
|
893
|
-
} else continue;
|
|
894
|
-
let g = m?.position ?? l?.position ?? "r", _ = m?.fontSizeHpt ?? l?.fontSizeHpt, v = _ ? _ / 100 * s : Math.max(9, Math.min(11, o / 25)), y = m?.fontColor ?? l?.fontColor, b = m?.fontBold ?? l?.fontBold ?? !1;
|
|
895
|
-
W(e, i(p), a(f), h, g, v, y, b);
|
|
896
|
-
}
|
|
897
|
-
}
|
|
898
|
-
function W(e, t, n, r, i, a, o, s) {
|
|
899
|
-
e.save(), e.font = `${s ? "bold " : ""}${a}px sans-serif`, e.fillStyle = o ? `#${o}` : "#333";
|
|
900
|
-
let c = a * .6, l = t, u = n;
|
|
901
|
-
switch (i) {
|
|
902
|
-
case "l":
|
|
903
|
-
e.textAlign = "right", e.textBaseline = "middle", l = t - c;
|
|
904
|
-
break;
|
|
905
|
-
case "r":
|
|
906
|
-
e.textAlign = "left", e.textBaseline = "middle", l = t + c;
|
|
907
|
-
break;
|
|
908
|
-
case "t":
|
|
909
|
-
e.textAlign = "center", e.textBaseline = "bottom", u = n - c;
|
|
910
|
-
break;
|
|
911
|
-
case "b":
|
|
912
|
-
e.textAlign = "center", e.textBaseline = "top", u = n + c;
|
|
913
|
-
break;
|
|
914
|
-
case "ctr":
|
|
915
|
-
e.textAlign = "center", e.textBaseline = "middle";
|
|
916
|
-
break;
|
|
917
|
-
default:
|
|
918
|
-
e.textAlign = "left", e.textBaseline = "middle", l = t + c;
|
|
919
|
-
break;
|
|
920
|
-
}
|
|
921
|
-
let d = r.split(/\r?\n/), f = a * 1.15, p = f * d.length, m = u;
|
|
922
|
-
e.textBaseline === "middle" ? m = u - (p - f) / 2 : e.textBaseline === "bottom" && (m = u - (p - f));
|
|
923
|
-
for (let t of d) e.fillText(t, l, m), m += f;
|
|
924
|
-
e.restore();
|
|
925
|
-
}
|
|
926
|
-
function G(e, t, n) {
|
|
927
|
-
return e < t ? t : e > n ? n : e;
|
|
928
|
-
}
|
|
929
|
-
function K(e) {
|
|
930
|
-
if (!e) return [];
|
|
931
|
-
switch (e) {
|
|
932
|
-
case "solid": return [];
|
|
933
|
-
case "dot":
|
|
934
|
-
case "sysDot": return [1, 2];
|
|
935
|
-
case "dash":
|
|
936
|
-
case "sysDash": return [4, 2];
|
|
937
|
-
case "lgDash": return [8, 3];
|
|
938
|
-
case "dashDot":
|
|
939
|
-
case "sysDashDot": return [
|
|
940
|
-
4,
|
|
941
|
-
2,
|
|
942
|
-
1,
|
|
943
|
-
2
|
|
944
|
-
];
|
|
945
|
-
case "lgDashDot": return [
|
|
946
|
-
8,
|
|
947
|
-
3,
|
|
948
|
-
1,
|
|
949
|
-
3
|
|
950
|
-
];
|
|
951
|
-
case "dashDotDot":
|
|
952
|
-
case "sysDashDotDot":
|
|
953
|
-
case "lgDashDotDot": return [
|
|
954
|
-
4,
|
|
955
|
-
2,
|
|
956
|
-
1,
|
|
957
|
-
2,
|
|
958
|
-
1,
|
|
959
|
-
2
|
|
960
|
-
];
|
|
961
|
-
default: return [];
|
|
962
|
-
}
|
|
963
|
-
}
|
|
964
|
-
function q(e, t, n) {
|
|
965
|
-
let { x: r, y: i, w: a, h: s } = n, c = t.plotAreaManualLayout, l, u, d, f;
|
|
966
|
-
if (c && c.w != null && c.h != null) l = r + c.x * a, u = i + c.y * s, d = c.w * a, f = c.h * s;
|
|
967
|
-
else {
|
|
968
|
-
let e = t.valAxisHidden ? a * .01 : a * .11, n = a * .01, o = s * .12, c = s * .14;
|
|
969
|
-
l = r + e, u = i + o, d = a - e - n, f = s - o - c;
|
|
970
|
-
}
|
|
971
|
-
let p = t.series[0]?.values ?? [], m = t.categories, h = m.length;
|
|
972
|
-
if (h === 0) return;
|
|
973
|
-
let g = new Set(t.subtotalIndices), _ = 0, v = [];
|
|
974
|
-
for (let e = 0; e < h; e++) {
|
|
975
|
-
let t = p[e] ?? 0;
|
|
976
|
-
if (e === 0 || g.has(e)) v.push({
|
|
977
|
-
start: 0,
|
|
978
|
-
end: t,
|
|
979
|
-
isSub: !0,
|
|
980
|
-
isPos: !0
|
|
981
|
-
}), _ = t;
|
|
982
|
-
else {
|
|
983
|
-
let e = t >= 0 ? _ : _ + t, n = t >= 0 ? _ + t : _;
|
|
984
|
-
v.push({
|
|
985
|
-
start: e,
|
|
986
|
-
end: n,
|
|
987
|
-
isSub: !1,
|
|
988
|
-
isPos: t >= 0
|
|
989
|
-
}), _ += t;
|
|
990
|
-
}
|
|
991
|
-
}
|
|
992
|
-
let y = v.map((e) => e.end), b = v.map((e) => e.start), x = Math.max(...y, ...b), S = Math.min(...b, 0), C = x - S;
|
|
993
|
-
if (C <= 0) return;
|
|
994
|
-
let w = S < 0 ? S - C * .05 : 0, T = (x - w) * 1.1, E = w + T, D = o(T);
|
|
995
|
-
e.save();
|
|
996
|
-
let O = Math.round(s * .042);
|
|
997
|
-
if (e.font = `${O}px sans-serif`, !t.valAxisHidden) {
|
|
998
|
-
e.strokeStyle = "#e8e8e8", e.lineWidth = .7, e.fillStyle = "#666", e.textAlign = "right", e.textBaseline = "middle";
|
|
999
|
-
for (let t = Math.ceil(w / D) * D; t <= E; t += D) {
|
|
1000
|
-
let n = u + f * (1 - (t - w) / T);
|
|
1001
|
-
e.beginPath(), e.moveTo(l, n), e.lineTo(l + d, n), e.stroke(), e.fillText(t.toLocaleString(), l - 4, n);
|
|
1002
|
-
}
|
|
1003
|
-
}
|
|
1004
|
-
let k = !t.valAxisHidden && !t.valAxisLineHidden, A = !t.catAxisHidden && !t.catAxisLineHidden;
|
|
1005
|
-
(k || A) && (e.strokeStyle = "#bbb", e.lineWidth = 1, e.beginPath(), k ? (e.moveTo(l, u), e.lineTo(l, u + f), A && e.lineTo(l + d, u + f)) : A && (e.moveTo(l, u + f), e.lineTo(l + d, u + f)), e.stroke());
|
|
1006
|
-
let j = d / h, M = j / (1 + (t.barGapWidth ?? 150) / 100);
|
|
1007
|
-
v.forEach((n, r) => {
|
|
1008
|
-
let i = l + j * r + (j - M) / 2, a = u + f * (1 - (n.end - w) / T), o = u + f * (1 - (n.start - w) / T), c = Math.max(1, o - a);
|
|
1009
|
-
if (n.isSub ? (e.fillStyle = "#196ECA", e.fillRect(i, a, M, c)) : (e.strokeStyle = n.isPos ? "#5BA4E6" : "#E46970", e.lineWidth = 1.5, e.strokeRect(i + .75, a + .75, M - 1.5, c - 1.5)), r < h - 1) {
|
|
1010
|
-
let t = l + j * (r + 1) + (j - M) / 2, s = n.isPos ? a : o;
|
|
1011
|
-
e.strokeStyle = "#ccc", e.lineWidth = .8, e.setLineDash([3, 3]), e.beginPath(), e.moveTo(i + M, s), e.lineTo(t, s), e.stroke(), e.setLineDash([]);
|
|
1012
|
-
}
|
|
1013
|
-
let d = p[r] ?? 0, m = d < 0 ? `△ ${Math.abs(d).toLocaleString()}` : d.toLocaleString(), g = t.series[0]?.dataLabelColors?.[r] ?? null;
|
|
1014
|
-
e.fillStyle = g ? `#${g}` : t.dataLabelFontColor ? `#${t.dataLabelFontColor}` : "#595959", e.font = `bold ${Math.round(s * .044)}px sans-serif`, e.textAlign = "center", d < 0 ? (e.textBaseline = "top", e.fillText(m, i + M / 2, o + 3)) : (e.textBaseline = "bottom", e.fillText(m, i + M / 2, a - 3));
|
|
1015
|
-
}), e.textAlign = "center", e.textBaseline = "top", e.fillStyle = "#666", e.font = `${Math.round(s * .038)}px sans-serif`;
|
|
1016
|
-
let N = u + f + 4;
|
|
1017
|
-
for (let t = 0; t < h; t++) {
|
|
1018
|
-
let n = l + j * t + j / 2;
|
|
1019
|
-
m[t].split(/\s+/).forEach((t, r) => e.fillText(t, n, N + r * (O + 2)));
|
|
1020
|
-
}
|
|
1021
|
-
e.restore();
|
|
1022
|
-
}
|
|
1023
|
-
function J(e, t, n, r = v) {
|
|
1024
|
-
let { x: i, y: a, w: o, h: s } = n;
|
|
1025
|
-
if (t.chartBg && (e.fillStyle = `#${t.chartBg}`, e.fillRect(i, a, o, s)), t.series.length === 0) {
|
|
1026
|
-
e.fillStyle = "#888", e.font = "12px sans-serif", e.textAlign = "center", e.textBaseline = "middle", e.fillText("(no data)", i + o / 2, a + s / 2);
|
|
1027
|
-
return;
|
|
1028
|
-
}
|
|
1029
|
-
switch (t.chartType) {
|
|
1030
|
-
case "clusteredBar":
|
|
1031
|
-
case "clusteredBarH":
|
|
1032
|
-
case "stackedBar":
|
|
1033
|
-
case "stackedBarH":
|
|
1034
|
-
case "stackedBarPct":
|
|
1035
|
-
case "stackedBarHPct":
|
|
1036
|
-
F(e, t, n, r);
|
|
1037
|
-
break;
|
|
1038
|
-
case "line":
|
|
1039
|
-
case "stackedLine":
|
|
1040
|
-
case "stackedLinePct":
|
|
1041
|
-
I(e, t, n, r);
|
|
1042
|
-
break;
|
|
1043
|
-
case "area":
|
|
1044
|
-
case "stackedArea":
|
|
1045
|
-
case "stackedAreaPct":
|
|
1046
|
-
L(e, t, n, r);
|
|
1047
|
-
break;
|
|
1048
|
-
case "pie":
|
|
1049
|
-
R(e, t, n, !1, r);
|
|
1050
|
-
break;
|
|
1051
|
-
case "doughnut":
|
|
1052
|
-
R(e, t, n, !0, r);
|
|
1053
|
-
break;
|
|
1054
|
-
case "radar":
|
|
1055
|
-
z(e, t, n, r);
|
|
1056
|
-
break;
|
|
1057
|
-
case "scatter":
|
|
1058
|
-
case "bubble":
|
|
1059
|
-
B(e, t, n, r);
|
|
1060
|
-
break;
|
|
1061
|
-
case "waterfall":
|
|
1062
|
-
q(e, t, n);
|
|
1063
|
-
break;
|
|
1064
|
-
default: e.fillStyle = "#888", e.font = "11px sans-serif", e.textAlign = "center", e.textBaseline = "middle", e.fillText(`Chart: ${t.chartType}`, i + o / 2, a + s / 2);
|
|
1065
|
-
}
|
|
1066
|
-
}
|
|
1067
|
-
//#endregion
|
|
1068
|
-
//#region packages/core/src/autoResize.ts
|
|
1069
|
-
function ee(e, t, n = {}) {
|
|
1070
|
-
let r = n.pauseWhenHidden ?? !0, i = null, a = 0, o = 0, s = null, c = !1, l = !1, u = () => {
|
|
1071
|
-
if (!l && !(r && typeof document < "u" && document.hidden)) {
|
|
1072
|
-
if (s) {
|
|
1073
|
-
c = !0;
|
|
1074
|
-
return;
|
|
1075
|
-
}
|
|
1076
|
-
i === null && (i = requestAnimationFrame(d));
|
|
1077
|
-
}
|
|
1078
|
-
}, d = async () => {
|
|
1079
|
-
if (i = null, l) return;
|
|
1080
|
-
let t = a, n = o;
|
|
1081
|
-
try {
|
|
1082
|
-
let r = e(t, n);
|
|
1083
|
-
s = r instanceof Promise ? r : Promise.resolve(), await s;
|
|
1084
|
-
} catch (e) {
|
|
1085
|
-
console.error("[autoResize] render failed:", e);
|
|
1086
|
-
} finally {
|
|
1087
|
-
s = null, c && !l && (c = !1, u());
|
|
1088
|
-
}
|
|
1089
|
-
}, f = new ResizeObserver((e) => {
|
|
1090
|
-
for (let t of e) {
|
|
1091
|
-
let e = t.contentRect;
|
|
1092
|
-
a = e.width, o = e.height;
|
|
1093
|
-
}
|
|
1094
|
-
u();
|
|
1095
|
-
});
|
|
1096
|
-
f.observe(t);
|
|
1097
|
-
let p = () => {
|
|
1098
|
-
typeof document < "u" && !document.hidden && u();
|
|
1099
|
-
};
|
|
1100
|
-
return r && typeof document < "u" && document.addEventListener("visibilitychange", p), () => {
|
|
1101
|
-
l = !0, f.disconnect(), i !== null && (cancelAnimationFrame(i), i = null), r && typeof document < "u" && document.removeEventListener("visibilitychange", p);
|
|
1102
|
-
};
|
|
1103
|
-
}
|
|
1104
|
-
//#endregion
|
|
1105
|
-
//#region packages/core/src/shape/custGeom.ts
|
|
1106
|
-
function Y(e, t, n, r, i, a) {
|
|
1107
|
-
for (let o of t) {
|
|
1108
|
-
let t = 0, s = 0;
|
|
1109
|
-
for (let c of o) switch (c.cmd) {
|
|
1110
|
-
case "moveTo":
|
|
1111
|
-
e.moveTo(n + c.x * i, r + c.y * a), t = c.x, s = c.y;
|
|
1112
|
-
break;
|
|
1113
|
-
case "lineTo":
|
|
1114
|
-
e.lineTo(n + c.x * i, r + c.y * a), t = c.x, s = c.y;
|
|
1115
|
-
break;
|
|
1116
|
-
case "cubicBezTo":
|
|
1117
|
-
e.bezierCurveTo(n + c.x1 * i, r + c.y1 * a, n + c.x2 * i, r + c.y2 * a, n + c.x * i, r + c.y * a), t = c.x, s = c.y;
|
|
1118
|
-
break;
|
|
1119
|
-
case "arcTo": {
|
|
1120
|
-
let o = c.wr * i, l = c.hr * a;
|
|
1121
|
-
if (o <= 0 || l <= 0) break;
|
|
1122
|
-
let u = c.stAng * Math.PI / 180, d = c.swAng * Math.PI / 180, f = n + t * i, p = r + s * a, m = f - o * Math.cos(u), h = p - l * Math.sin(u), g = u + d;
|
|
1123
|
-
e.ellipse(m, h, o, l, 0, u, g, d < 0), t = (m + o * Math.cos(g) - n) / i, s = (h + l * Math.sin(g) - r) / a;
|
|
1124
|
-
break;
|
|
1125
|
-
}
|
|
1126
|
-
case "close":
|
|
1127
|
-
e.closePath();
|
|
1128
|
-
break;
|
|
1129
|
-
}
|
|
1130
|
-
}
|
|
1131
|
-
}
|
|
1132
|
-
//#endregion
|
|
1133
357
|
//#region packages/core/src/shape/pattern-bitmaps.ts
|
|
1134
|
-
var
|
|
358
|
+
var T = {
|
|
1135
359
|
pct5: [
|
|
1136
360
|
0,
|
|
1137
361
|
16,
|
|
@@ -1492,136 +716,1040 @@ var te = {
|
|
|
1492
716
|
15,
|
|
1493
717
|
15
|
|
1494
718
|
],
|
|
1495
|
-
smCheck: [
|
|
1496
|
-
204,
|
|
1497
|
-
204,
|
|
1498
|
-
51,
|
|
1499
|
-
51,
|
|
1500
|
-
204,
|
|
1501
|
-
204,
|
|
1502
|
-
51,
|
|
1503
|
-
51
|
|
719
|
+
smCheck: [
|
|
720
|
+
204,
|
|
721
|
+
204,
|
|
722
|
+
51,
|
|
723
|
+
51,
|
|
724
|
+
204,
|
|
725
|
+
204,
|
|
726
|
+
51,
|
|
727
|
+
51
|
|
728
|
+
],
|
|
729
|
+
trellis: [
|
|
730
|
+
165,
|
|
731
|
+
90,
|
|
732
|
+
165,
|
|
733
|
+
90,
|
|
734
|
+
165,
|
|
735
|
+
90,
|
|
736
|
+
165,
|
|
737
|
+
90
|
|
738
|
+
]
|
|
739
|
+
};
|
|
740
|
+
function E(e, t, n) {
|
|
741
|
+
let r = T[e];
|
|
742
|
+
if (!r) return null;
|
|
743
|
+
let i = D(8, 8);
|
|
744
|
+
if (!i) return null;
|
|
745
|
+
let a = i.getContext("2d");
|
|
746
|
+
if (!a) return null;
|
|
747
|
+
a.fillStyle = O(n), a.fillRect(0, 0, 8, 8), a.fillStyle = O(t);
|
|
748
|
+
for (let e = 0; e < 8; e++) {
|
|
749
|
+
let t = r[e];
|
|
750
|
+
for (let n = 0; n < 8; n++) t & 1 << 7 - n && a.fillRect(n, e, 1, 1);
|
|
751
|
+
}
|
|
752
|
+
return i;
|
|
753
|
+
}
|
|
754
|
+
function D(e, t) {
|
|
755
|
+
if (typeof OffscreenCanvas < "u") return new OffscreenCanvas(e, t);
|
|
756
|
+
if (typeof document < "u") {
|
|
757
|
+
let n = document.createElement("canvas");
|
|
758
|
+
return n.width = e, n.height = t, n;
|
|
759
|
+
}
|
|
760
|
+
return null;
|
|
761
|
+
}
|
|
762
|
+
function O(e) {
|
|
763
|
+
return `rgba(${parseInt(e.slice(0, 2), 16)},${parseInt(e.slice(2, 4), 16)},${parseInt(e.slice(4, 6), 16)},${e.length >= 8 ? parseInt(e.slice(6, 8), 16) / 255 : 1})`;
|
|
764
|
+
}
|
|
765
|
+
//#endregion
|
|
766
|
+
//#region packages/core/src/shape/paint.ts
|
|
767
|
+
function k(e, t = 1) {
|
|
768
|
+
let n = e.charCodeAt(0) === 35 ? e.slice(1) : e;
|
|
769
|
+
return `rgba(${parseInt(n.slice(0, 2), 16)},${parseInt(n.slice(2, 4), 16)},${parseInt(n.slice(4, 6), 16)},${n.length >= 8 ? parseInt(n.slice(6, 8), 16) / 255 : t})`;
|
|
770
|
+
}
|
|
771
|
+
function A(e, t, n, r, i, a) {
|
|
772
|
+
if (!e || e.fillType === "none") return null;
|
|
773
|
+
if (e.fillType === "solid") return k(e.color);
|
|
774
|
+
if (e.fillType === "pattern") return M(e, t);
|
|
775
|
+
if (e.fillType === "gradient") {
|
|
776
|
+
let o = e.stops;
|
|
777
|
+
if (o.length === 0) return null;
|
|
778
|
+
if (o.length === 1) return k(o[0].color);
|
|
779
|
+
let s;
|
|
780
|
+
if (e.gradType === "radial") {
|
|
781
|
+
let e = n + i / 2, o = r + a / 2, c = Math.sqrt(i * i + a * a) / 2;
|
|
782
|
+
s = t.createRadialGradient(e, o, 0, e, o, c);
|
|
783
|
+
} else {
|
|
784
|
+
let o = e.angle * Math.PI / 180, c = n + i / 2, l = r + a / 2, u = (Math.abs(Math.cos(o)) * i + Math.abs(Math.sin(o)) * a) / 2;
|
|
785
|
+
s = t.createLinearGradient(c - Math.cos(o) * u, l - Math.sin(o) * u, c + Math.cos(o) * u, l + Math.sin(o) * u);
|
|
786
|
+
}
|
|
787
|
+
for (let e of o) s.addColorStop(Math.min(1, Math.max(0, e.position)), k(e.color));
|
|
788
|
+
return s;
|
|
789
|
+
}
|
|
790
|
+
return null;
|
|
791
|
+
}
|
|
792
|
+
var j = /* @__PURE__ */ new WeakMap();
|
|
793
|
+
function M(e, t) {
|
|
794
|
+
let n = `${e.preset}|${e.fg}|${e.bg}`, r = j.get(t);
|
|
795
|
+
r || (r = /* @__PURE__ */ new Map(), j.set(t, r));
|
|
796
|
+
let i = r.get(n);
|
|
797
|
+
if (i) return i;
|
|
798
|
+
let a = E(e.preset, e.fg, e.bg);
|
|
799
|
+
if (!a) return k(e.fg);
|
|
800
|
+
let o = t.createPattern(a, "repeat");
|
|
801
|
+
return o ? (r.set(n, o), o) : k(e.fg);
|
|
802
|
+
}
|
|
803
|
+
var N = {
|
|
804
|
+
dash: [6, 3],
|
|
805
|
+
dot: [1.5, 3],
|
|
806
|
+
dashDot: [
|
|
807
|
+
6,
|
|
808
|
+
3,
|
|
809
|
+
1.5,
|
|
810
|
+
3
|
|
811
|
+
],
|
|
812
|
+
lgDash: [10, 4],
|
|
813
|
+
lgDashDot: [
|
|
814
|
+
10,
|
|
815
|
+
4,
|
|
816
|
+
1.5,
|
|
817
|
+
4
|
|
818
|
+
],
|
|
819
|
+
lgDashDotDot: [
|
|
820
|
+
10,
|
|
821
|
+
4,
|
|
822
|
+
1.5,
|
|
823
|
+
4,
|
|
824
|
+
1.5,
|
|
825
|
+
4
|
|
1504
826
|
],
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
165,
|
|
1513
|
-
90
|
|
827
|
+
sysDash: [4, 2],
|
|
828
|
+
sysDot: [1, 2],
|
|
829
|
+
sysDashDot: [
|
|
830
|
+
4,
|
|
831
|
+
2,
|
|
832
|
+
1,
|
|
833
|
+
2
|
|
1514
834
|
]
|
|
1515
835
|
};
|
|
1516
|
-
function
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
836
|
+
function P(e, t, n) {
|
|
837
|
+
if (!t) {
|
|
838
|
+
e.strokeStyle = "transparent", e.lineWidth = 0, e.setLineDash([]);
|
|
839
|
+
return;
|
|
840
|
+
}
|
|
841
|
+
e.strokeStyle = k(t.color);
|
|
842
|
+
let r = Math.max(.5, t.width * n);
|
|
843
|
+
e.lineWidth = r;
|
|
844
|
+
let i = t.dashStyle ? N[t.dashStyle] : null;
|
|
845
|
+
e.setLineDash(i ? i.map((e) => e * r) : []);
|
|
846
|
+
}
|
|
847
|
+
//#endregion
|
|
848
|
+
//#region packages/core/src/units.ts
|
|
849
|
+
var F = 12700, I = 9525, L = 4 / 3, R = [
|
|
850
|
+
"4472C4",
|
|
851
|
+
"ED7D31",
|
|
852
|
+
"A9D18E",
|
|
853
|
+
"FF0000",
|
|
854
|
+
"70AD47",
|
|
855
|
+
"4BACC6",
|
|
856
|
+
"FFC000",
|
|
857
|
+
"9E480E",
|
|
858
|
+
"843C0C",
|
|
859
|
+
"636363",
|
|
860
|
+
"255E91",
|
|
861
|
+
"967300"
|
|
862
|
+
];
|
|
863
|
+
function z(e, t) {
|
|
864
|
+
return t?.color ? `#${t.color}` : `#${R[e % R.length]}`;
|
|
865
|
+
}
|
|
866
|
+
function B(e, t) {
|
|
867
|
+
let n = t.dataPointColors?.[e];
|
|
868
|
+
return n ? `#${n}` : `#${R[e % R.length]}`;
|
|
869
|
+
}
|
|
870
|
+
function V(e) {
|
|
871
|
+
return e === "pie" || e === "doughnut";
|
|
872
|
+
}
|
|
873
|
+
function H(e, t, n) {
|
|
874
|
+
if (V(e)) {
|
|
875
|
+
let e = t[0];
|
|
876
|
+
return e ? B(n, e) : `#${R[n % R.length]}`;
|
|
877
|
+
}
|
|
878
|
+
return z(n, t[n]);
|
|
879
|
+
}
|
|
880
|
+
function U(e, t, n, r, i, a, o, s) {
|
|
881
|
+
e.save(), e.font = `${s}px sans-serif`, e.fillStyle = "#555", o === "cat" ? (e.textAlign = "center", e.textBaseline = "bottom", e.fillText(t.slice(0, 30), n + i / 2, r + a + s + 2)) : (e.translate(n - s - 4, r + a / 2), e.rotate(-Math.PI / 2), e.textAlign = "center", e.textBaseline = "middle", e.fillText(t.slice(0, 30), 0, 0)), e.restore();
|
|
882
|
+
}
|
|
883
|
+
function ee(e) {
|
|
884
|
+
return e && (e === "line" || e === "stackedLine" || e === "stackedLinePct" || e === "radar" || e === "scatter") ? "line" : "fill";
|
|
885
|
+
}
|
|
886
|
+
function te(e, t, n, r, i, a, o) {
|
|
887
|
+
if (e.fillStyle = n, t === "line") {
|
|
888
|
+
e.strokeStyle = n;
|
|
889
|
+
let t = e.lineWidth;
|
|
890
|
+
e.lineWidth = Math.max(1.5, o * .15), e.beginPath();
|
|
891
|
+
let s = i + o / 2;
|
|
892
|
+
e.moveTo(r, s), e.lineTo(r + a, s), e.stroke(), e.lineWidth = t;
|
|
893
|
+
} else e.fillRect(r, i, a, o);
|
|
894
|
+
}
|
|
895
|
+
function ne(e, t) {
|
|
896
|
+
if (V(t)) {
|
|
897
|
+
let n = e[0], r = n ? n.values.length : 0, i = n?.categories ?? [];
|
|
898
|
+
return Array.from({ length: r }, (n, r) => ({
|
|
899
|
+
label: (i[r] ?? `Item ${r + 1}`).toString(),
|
|
900
|
+
color: H(t, e, r)
|
|
901
|
+
}));
|
|
902
|
+
}
|
|
903
|
+
return e.map((n, r) => ({
|
|
904
|
+
label: n.name || `Series ${r + 1}`,
|
|
905
|
+
color: H(t, e, r)
|
|
906
|
+
}));
|
|
907
|
+
}
|
|
908
|
+
function W(e, t, n, r, i, a, o = "vertical", s) {
|
|
909
|
+
let c = ee(s), l = ne(t, s);
|
|
910
|
+
if (o === "horizontal") {
|
|
911
|
+
let t = Math.max(9, Math.min(12, a * .7));
|
|
912
|
+
e.font = `${t}px sans-serif`, e.textBaseline = "middle";
|
|
913
|
+
let o = l.map((t) => 14 + e.measureText(t.label.slice(0, 30)).width), s = n + (i - (o.reduce((e, t) => e + t, 0) + 12 * Math.max(0, l.length - 1))) / 2, u = r + a / 2;
|
|
914
|
+
for (let n = 0; n < l.length; n++) te(e, c, l[n].color, s, u - t / 2, 10, t), e.fillStyle = "#333", e.textAlign = "left", e.fillText(l[n].label.slice(0, 30), s + 10 + 4, u), s += o[n] + 12;
|
|
915
|
+
return;
|
|
916
|
+
}
|
|
917
|
+
let u = Math.max(9, Math.min(12, a / (l.length + 1)));
|
|
918
|
+
e.font = `${u}px sans-serif`, e.textBaseline = "middle";
|
|
919
|
+
let d = u + 4, f = r + (a - d * l.length) / 2;
|
|
920
|
+
for (let t = 0; t < l.length; t++) te(e, c, l[t].color, n, f, 10, u), e.fillStyle = "#333", e.textAlign = "left", e.fillText(l[t].label.slice(0, 20), n + 10 + 4, f + u / 2), f += d;
|
|
921
|
+
}
|
|
922
|
+
function re(e, t, n) {
|
|
923
|
+
if (!e.showLegend) return null;
|
|
924
|
+
let r = e.legendPos ?? "r", i = r === "l" ? "l" : r === "t" ? "t" : r === "b" ? "b" : "r";
|
|
925
|
+
return i === "r" || i === "l" ? {
|
|
926
|
+
side: i,
|
|
927
|
+
reserveW: Math.max(80, t * .22),
|
|
928
|
+
reserveH: 0
|
|
929
|
+
} : {
|
|
930
|
+
side: i,
|
|
931
|
+
reserveW: 0,
|
|
932
|
+
reserveH: Math.max(18, n * .08)
|
|
933
|
+
};
|
|
934
|
+
}
|
|
935
|
+
function ie(e, t, n, r, i, a, o, s, c, l, u, d) {
|
|
936
|
+
if (!n) return;
|
|
937
|
+
let f = t.legendManualLayout;
|
|
938
|
+
if (f && f.xMode === "edge" && f.yMode === "edge" && f.w > 0 && f.h > 0) {
|
|
939
|
+
let n = r + f.x * a, s = i + f.y * o, c = f.w * a, l = f.h * o, u = c >= l ? "horizontal" : "vertical";
|
|
940
|
+
W(e, t.series, n, s, c, l, u, t.chartType);
|
|
941
|
+
return;
|
|
942
|
+
}
|
|
943
|
+
switch (n.side) {
|
|
944
|
+
case "r":
|
|
945
|
+
W(e, t.series, r + a - n.reserveW + 4, c, n.reserveW - 8, u, "vertical", t.chartType);
|
|
946
|
+
break;
|
|
947
|
+
case "l":
|
|
948
|
+
W(e, t.series, r + 4, c, n.reserveW - 8, u, "vertical", t.chartType);
|
|
949
|
+
break;
|
|
950
|
+
case "t":
|
|
951
|
+
W(e, t.series, s, i + d, l, n.reserveH, "horizontal", t.chartType);
|
|
952
|
+
break;
|
|
953
|
+
case "b":
|
|
954
|
+
W(e, t.series, s, i + o - n.reserveH, l, n.reserveH, "horizontal", t.chartType);
|
|
955
|
+
break;
|
|
956
|
+
}
|
|
957
|
+
}
|
|
958
|
+
function G(e, t, n, r, i, a, o) {
|
|
959
|
+
if (t === "none" || !t) return;
|
|
960
|
+
let s = o ? Math.max(4, o + 2) : 4, c = e.strokeStyle, l = e.lineWidth;
|
|
961
|
+
if (e.strokeStyle = a ?? "#888", e.lineWidth = o ?? 1, e.beginPath(), n === "val") {
|
|
962
|
+
let n = r, a = i, o = t === "out" || t === "cross" ? -s : 0, c = t === "in" || t === "cross" ? s : 0;
|
|
963
|
+
e.moveTo(n + o, a), e.lineTo(n + c, a);
|
|
964
|
+
} else {
|
|
965
|
+
let n = r, a = i, o = t === "out" || t === "cross" ? s : 0, c = t === "in" || t === "cross" ? -s : 0;
|
|
966
|
+
e.moveTo(a, n + o), e.lineTo(a, n + c);
|
|
967
|
+
}
|
|
968
|
+
e.stroke(), e.strokeStyle = c, e.lineWidth = l;
|
|
969
|
+
}
|
|
970
|
+
function ae(e, t, n) {
|
|
971
|
+
return e.titleFontSizeHpt ? e.titleFontSizeHpt / 100 * n : Math.max(10, t * .085);
|
|
972
|
+
}
|
|
973
|
+
function oe(e, t, n) {
|
|
974
|
+
return e ? e / 100 * n : Math.max(8, t * .045);
|
|
975
|
+
}
|
|
976
|
+
function se(e, t, n, r, i, a) {
|
|
977
|
+
t.title && (e.font = `bold ${a}px ${t.titleFontFace ? `"${t.titleFontFace}", Calibri, Arial, sans-serif` : "Calibri, Arial, sans-serif"}`, e.fillStyle = t.titleFontColor ? `#${t.titleFontColor}` : "#333", e.textAlign = "center", e.textBaseline = "top", e.fillText(t.title, n + i / 2, r));
|
|
978
|
+
}
|
|
979
|
+
function ce(e) {
|
|
980
|
+
if (e.categories.length > 0) return e.categories;
|
|
981
|
+
let t = e.series[0];
|
|
982
|
+
if (t?.categories && t.categories.length > 0) return t.categories;
|
|
983
|
+
let n = 0;
|
|
984
|
+
for (let t of e.series) t.values.length > n && (n = t.values.length);
|
|
985
|
+
return n > 0 ? Array.from({ length: n }, (e, t) => String(t + 1)) : [];
|
|
986
|
+
}
|
|
987
|
+
function le(e, t, n, r, i, a, o, s, c) {
|
|
988
|
+
let l = s ?? "outEnd";
|
|
989
|
+
if (e.fillStyle = c ? `#${c}` : "#333", o === "vertical") {
|
|
990
|
+
let o = n + a / 2;
|
|
991
|
+
l === "inBase" ? (e.textAlign = "center", e.textBaseline = "bottom", e.fillText(t, o, r + i - 2)) : l === "inEnd" ? (e.textAlign = "center", e.textBaseline = "top", e.fillText(t, o, r + 2)) : l === "ctr" ? (e.textAlign = "center", e.textBaseline = "middle", e.fillText(t, o, r + i / 2)) : (e.textAlign = "center", e.textBaseline = "bottom", e.fillText(t, o, r - 1));
|
|
992
|
+
} else {
|
|
993
|
+
let o = r + a / 2;
|
|
994
|
+
l === "inBase" ? (e.textAlign = "left", e.textBaseline = "middle", e.fillText(t, n + 4, o)) : l === "inEnd" ? (e.textAlign = "right", e.textBaseline = "middle", e.fillText(t, n + i - 4, o)) : l === "ctr" ? (e.textAlign = "center", e.textBaseline = "middle", e.fillText(t, n + i / 2, o)) : (e.textAlign = "left", e.textBaseline = "middle", e.fillText(t, n + i + 2, o));
|
|
995
|
+
}
|
|
996
|
+
}
|
|
997
|
+
function ue(e, t, n, r) {
|
|
998
|
+
let { x: i, y: a, w: o, h: s } = n, c = t.chartType === "clusteredBarH" || t.chartType === "stackedBarH" || t.chartType === "stackedBarHPct", l = t.chartType.startsWith("stacked"), u = t.chartType === "stackedBarPct" || t.chartType === "stackedBarHPct", d = t.series.filter((e) => e.seriesType !== "line"), f = t.series.filter((e) => e.seriesType === "line"), p = ce(t), m = p.length;
|
|
999
|
+
if (m === 0) return;
|
|
1000
|
+
let _ = t.title ? ae(t, s, r) : 0, v = t.title ? s * .02 : 0, b = t.title ? s * .025 : 0, x = t.title ? _ + v + b : 0, S = re(t, o, s), C = S?.side === "r" ? S.reserveW : 0, w = S?.side === "l" ? S.reserveW : 0, T = S?.side === "t" ? S.reserveH : 0, E = S?.side === "b" ? S.reserveH : 0, D = Math.max(8, Math.min(10, s * .045)), O = t.catAxisTitle ? D + 4 : 0, k = t.valAxisTitle ? D + 4 : 0, A = {
|
|
1001
|
+
t: x + T + s * .02,
|
|
1002
|
+
r: C + o * .03,
|
|
1003
|
+
b: s * .14 + O + E,
|
|
1004
|
+
l: o * .12 + k + w
|
|
1005
|
+
};
|
|
1006
|
+
c && (A.l = (t.catAxisHidden ? o * .03 : o * .22) + k + w, A.b = (t.valAxisHidden ? s * .02 : s * .08) + O + E), se(e, t, i, a + v, o, _);
|
|
1007
|
+
let j = t.plotAreaManualLayout, M, N, P, I;
|
|
1008
|
+
if (j && j.w != null && j.h != null ? (M = i + j.x * o, N = a + j.y * s, P = j.w * o, I = j.h * s) : (M = i + A.l, N = a + A.t, P = o - A.l - A.r, I = s - A.t - A.b), P <= 0 || I <= 0) return;
|
|
1009
|
+
t.plotAreaBg && (e.fillStyle = `#${t.plotAreaBg}`, e.fillRect(M, N, P, I));
|
|
1010
|
+
let L = 0;
|
|
1011
|
+
for (let e = 0; e < m; e++) {
|
|
1012
|
+
let t = 0;
|
|
1013
|
+
for (let n of d) {
|
|
1014
|
+
let r = n.values[e] ?? 0;
|
|
1015
|
+
l ? t += Math.abs(r) : L = Math.max(L, Math.abs(r));
|
|
1016
|
+
}
|
|
1017
|
+
l && (L = Math.max(L, t));
|
|
1018
|
+
}
|
|
1019
|
+
u && (L = 100), t.valMax != null && (L = t.valMax), L === 0 && (L = 1);
|
|
1020
|
+
let R = h(L), B = t.valMax ?? g(L, R), V = "#e0e0e0", H = Math.round(B / R);
|
|
1021
|
+
if (e.textBaseline = "middle", e.font = `${Math.max(8, Math.min(11, I / 20))}px sans-serif`, e.fillStyle = t.valAxisFontColor ? `#${t.valAxisFontColor}` : "#555", !t.valAxisHidden) for (let n = 0; n <= H; n++) {
|
|
1022
|
+
let r = n * R, i = u ? `${Math.round(r)}%` : y(r, t.valAxisFormatCode);
|
|
1023
|
+
if (c) {
|
|
1024
|
+
let t = M + r / B * P;
|
|
1025
|
+
e.strokeStyle = n === 0 ? "#aaa" : V, e.lineWidth = n === 0 ? 1 : .5, e.beginPath(), e.moveTo(t, N), e.lineTo(t, N + I), e.stroke(), e.textAlign = "center", e.fillText(i, t, N + I + 10);
|
|
1026
|
+
} else {
|
|
1027
|
+
let t = N + I - r / B * I;
|
|
1028
|
+
e.strokeStyle = n === 0 ? "#aaa" : V, e.lineWidth = n === 0 ? 1 : .5, e.beginPath(), e.moveTo(M, t), e.lineTo(M + P, t), e.stroke(), e.textAlign = "right", e.fillText(i, M - 4, t);
|
|
1029
|
+
}
|
|
1030
|
+
}
|
|
1031
|
+
let ee = t.catAxisLineColor ? `#${t.catAxisLineColor}` : "#aaa", te = t.valAxisLineColor ? `#${t.valAxisLineColor}` : "#aaa", ne = t.catAxisLineWidthEmu ? Math.max(.5, t.catAxisLineWidthEmu / F) : 1, W = t.valAxisLineWidthEmu ? Math.max(.5, t.valAxisLineWidthEmu / F) : 1, G = (t, n, r, i, a, o) => {
|
|
1032
|
+
e.strokeStyle = a, e.lineWidth = o, e.beginPath(), e.moveTo(t, n), e.lineTo(r, i), e.stroke();
|
|
1033
|
+
}, oe = !t.catAxisHidden && !t.catAxisLineHidden, ue = !t.valAxisHidden && !t.valAxisLineHidden && t.valAxisLineColor != null;
|
|
1034
|
+
c ? (oe && G(M, N, M, N + I, ee, ne), ue && G(M, N + I, M + P, N + I, te, W)) : (oe && G(M, N + I, M + P, N + I, ee, ne), ue && G(M, N, M, N + I, te, W));
|
|
1035
|
+
let K = c ? I / m : P / m, de = l ? 1 : Math.max(1, d.length), fe = l ? 0 : t.barOverlap ?? 0, pe = t.barGapWidth ?? 150, q = K / (1 + (de - 1) * (1 - fe / 100) + pe / 100), me = l ? 0 : q * (1 - fe / 100), he = (K - (q + (de - 1) * me)) / 2;
|
|
1036
|
+
for (let n = 0; n < m; n++) {
|
|
1037
|
+
let i = 0, a = 0;
|
|
1038
|
+
if (u) {
|
|
1039
|
+
for (let e of d) a += Math.abs(e.values[n] ?? 0);
|
|
1040
|
+
a === 0 && (a = 1);
|
|
1041
|
+
}
|
|
1042
|
+
for (let o = 0; o < d.length; o++) {
|
|
1043
|
+
let s = d[o], f = s.values[n] ?? 0, p = u ? Math.abs(f) / a * 100 : Math.abs(f), h = z(o, s);
|
|
1044
|
+
if (c) {
|
|
1045
|
+
let a = l ? o : d.length - 1 - o, c = l ? N + (m - 1 - n) * K + he : N + (m - 1 - n) * K + he + a * me, f = p / B * P, g = l ? M + i / B * P : M;
|
|
1046
|
+
e.fillStyle = h, e.fillRect(g, c, f, q), t.showDataLabels && p > 0 && (e.font = `bold ${t.dataLabelFontSizeHpt ? t.dataLabelFontSizeHpt / 100 * r : Math.max(7, Math.min(11, q * .6))}px sans-serif`, le(e, u ? `${Math.round(p)}%` : y(p, t.dataLabelFormatCode ?? s.valFormatCode ?? null), g, c, f, q, "horizontal", t.dataLabelPosition ?? null, s.labelColor ?? t.dataLabelFontColor ?? null));
|
|
1047
|
+
} else {
|
|
1048
|
+
let a = l ? M + n * K + he : M + n * K + he + o * me, c = p / B * I, d = N + I - (l ? i + p : p) / B * I;
|
|
1049
|
+
e.fillStyle = h, e.fillRect(a, d, q, c), t.showDataLabels && p > 0 && (e.font = `bold ${t.dataLabelFontSizeHpt ? t.dataLabelFontSizeHpt / 100 * r : Math.max(7, Math.min(11, q * .6))}px sans-serif`, le(e, u ? `${Math.round(p)}%` : y(p, t.dataLabelFormatCode ?? s.valFormatCode ?? null), a, d, c, q, "vertical", t.dataLabelPosition ?? null, s.labelColor ?? t.dataLabelFontColor ?? null));
|
|
1050
|
+
}
|
|
1051
|
+
l && (i += p);
|
|
1052
|
+
}
|
|
1053
|
+
}
|
|
1054
|
+
if (!t.catAxisHidden) {
|
|
1055
|
+
e.fillStyle = t.catAxisFontColor ? `#${t.catAxisFontColor}` : "#555", e.font = `${Math.max(8, Math.min(11, K * .5))}px sans-serif`;
|
|
1056
|
+
for (let t = 0; t < m; t++) {
|
|
1057
|
+
let n = (p[t] ?? "").toString().slice(0, 12);
|
|
1058
|
+
if (c) {
|
|
1059
|
+
let r = N + (m - 1 - t) * K + K / 2;
|
|
1060
|
+
e.textAlign = "right", e.textBaseline = "middle", e.fillText(n, M - 4, r);
|
|
1061
|
+
} else {
|
|
1062
|
+
let r = M + t * K + K / 2;
|
|
1063
|
+
e.textAlign = "center", e.textBaseline = "top", e.fillText(n, r, N + I + 3);
|
|
1064
|
+
}
|
|
1065
|
+
}
|
|
1066
|
+
}
|
|
1067
|
+
if (f.length > 0 && !c) for (let t = 0; t < f.length; t++) {
|
|
1068
|
+
let n = f[t], r = z(d.length + t, n);
|
|
1069
|
+
e.strokeStyle = r, e.lineWidth = 2, e.setLineDash([]), e.beginPath();
|
|
1070
|
+
let i = !1;
|
|
1071
|
+
for (let t = 0; t < m; t++) {
|
|
1072
|
+
let r = n.values[t];
|
|
1073
|
+
if (r == null) {
|
|
1074
|
+
i = !1;
|
|
1075
|
+
continue;
|
|
1076
|
+
}
|
|
1077
|
+
let a = M + t * K + K / 2, o = N + I - r / B * I;
|
|
1078
|
+
i ? e.lineTo(a, o) : (e.moveTo(a, o), i = !0);
|
|
1079
|
+
}
|
|
1080
|
+
if (e.stroke(), n.showMarker !== !1) for (let t = 0; t < m; t++) {
|
|
1081
|
+
let i = n.values[t];
|
|
1082
|
+
if (i == null) continue;
|
|
1083
|
+
let a = M + t * K + K / 2, o = N + I - i / B * I;
|
|
1084
|
+
e.fillStyle = r, e.beginPath(), e.arc(a, o, 3, 0, Math.PI * 2), e.fill();
|
|
1085
|
+
}
|
|
1086
|
+
}
|
|
1087
|
+
ie(e, c && !l ? {
|
|
1088
|
+
...t,
|
|
1089
|
+
series: [...t.series].reverse()
|
|
1090
|
+
} : t, S, i, a, o, s, M, N, P, I, x + 2), t.catAxisTitle && U(e, t.catAxisTitle, M, N, P, I, "cat", D), t.valAxisTitle && U(e, t.valAxisTitle, M, N, P, I, "val", D);
|
|
1091
|
+
}
|
|
1092
|
+
function K(e, t, n, r) {
|
|
1093
|
+
let { x: i, y: a, w: o, h: s } = n, c = ce(t), l = c.length;
|
|
1094
|
+
if (l === 0) return;
|
|
1095
|
+
let u = t.title ? ae(t, s, r) : 0, d = t.title ? s * .045 : 0, f = t.title ? s * .035 : 0, p = t.title ? u + d + f : 0, m = re(t, o, s), b = m?.side === "r" ? m.reserveW : 0, x = m?.side === "l" ? m.reserveW : 0, S = m?.side === "t" ? m.reserveH : 0, C = m?.side === "b" ? m.reserveH : 0, w = oe(t.catAxisFontSizeHpt, s, r), T = oe(t.valAxisFontSizeHpt, s, r), E = Math.max(w, T), D = t.catAxisTitle ? E + 4 : 0, O = t.valAxisTitle ? E + 4 : 0, k = {
|
|
1096
|
+
t: p + S + T / 2 + 2,
|
|
1097
|
+
r: b + o * .05,
|
|
1098
|
+
b: w + 12 + D + C,
|
|
1099
|
+
l: T * 2.2 + 10 + O + x
|
|
1100
|
+
};
|
|
1101
|
+
se(e, t, i, a + d, o, u);
|
|
1102
|
+
let A = i + k.l, j = a + k.t, M = o - k.l - k.r, N = s - k.t - k.b;
|
|
1103
|
+
if (M <= 0 || N <= 0) return;
|
|
1104
|
+
t.plotAreaBg && (e.fillStyle = `#${t.plotAreaBg}`, e.fillRect(A, j, M, N));
|
|
1105
|
+
let P = Infinity, F = -Infinity;
|
|
1106
|
+
for (let e of t.series) for (let t of e.values) t != null && (P = Math.min(P, t), F = Math.max(F, t));
|
|
1107
|
+
isFinite(P) || (P = 0, F = 1), t.valMin == null ? P > 0 && (P = 0) : P = t.valMin, t.valMax == null ? F < 0 && (F = 0) : F = t.valMax, F === P && (F = P + 1);
|
|
1108
|
+
let I = h(F - P), L = t.valMin ?? _(P, I), R = t.valMax ?? g(F, I), B = R - L;
|
|
1109
|
+
if (B === 0) return;
|
|
1110
|
+
let V = (e) => j + N - (e - L) / B * N, H = t.catAxisCrossBetween === "midCat" ? (e) => A + (l === 1 ? M / 2 : e / (l - 1) * M) : (e) => A + (e + .5) / l * M;
|
|
1111
|
+
if (!t.valAxisHidden) {
|
|
1112
|
+
let n = Math.round((R - L) / I);
|
|
1113
|
+
e.font = `${T}px sans-serif`, e.textBaseline = "middle";
|
|
1114
|
+
for (let r = 0; r <= n; r++) {
|
|
1115
|
+
let n = L + r * I, i = V(n);
|
|
1116
|
+
e.strokeStyle = n === 0 ? "#aaa" : "#e0e0e0", e.lineWidth = n === 0 ? 1 : .5, e.beginPath(), e.moveTo(A, i), e.lineTo(A + M, i), e.stroke(), G(e, t.valAxisMajorTickMark, "val", A, i), e.fillStyle = t.valAxisFontColor ? `#${t.valAxisFontColor}` : "#555", e.textAlign = "right", e.fillText(y(n, t.valAxisFormatCode), A - 6, i);
|
|
1117
|
+
}
|
|
1118
|
+
}
|
|
1119
|
+
e.strokeStyle = "#aaa", e.lineWidth = 1, !t.catAxisHidden && !t.catAxisLineHidden && (e.beginPath(), e.moveTo(A, j + N), e.lineTo(A + M, j + N), e.stroke()), !t.valAxisHidden && !t.valAxisLineHidden && (e.beginPath(), e.moveTo(A, j), e.lineTo(A, j + N), e.stroke());
|
|
1120
|
+
let ee = Math.max(1, 2.25 * r), te = Math.max(2, 2.5 * r), ne = oe(t.dataLabelFontSizeHpt, s, r);
|
|
1121
|
+
for (let n = 0; n < t.series.length; n++) {
|
|
1122
|
+
let r = t.series[n], i = z(n, r);
|
|
1123
|
+
e.strokeStyle = i, e.lineWidth = ee, e.setLineDash([]), e.beginPath();
|
|
1124
|
+
let a = !1;
|
|
1125
|
+
for (let t = 0; t < l; t++) {
|
|
1126
|
+
let n = r.values[t];
|
|
1127
|
+
if (n == null) {
|
|
1128
|
+
a = !1;
|
|
1129
|
+
continue;
|
|
1130
|
+
}
|
|
1131
|
+
let i = H(t), o = V(n);
|
|
1132
|
+
a ? e.lineTo(i, o) : (e.moveTo(i, o), a = !0);
|
|
1133
|
+
}
|
|
1134
|
+
e.stroke(), e.fillStyle = i;
|
|
1135
|
+
let o = r.showMarker !== !1;
|
|
1136
|
+
for (let n = 0; n < l; n++) {
|
|
1137
|
+
let a = r.values[n];
|
|
1138
|
+
if (a != null && (o && (e.beginPath(), e.arc(H(n), V(a), te, 0, Math.PI * 2), e.fill()), t.showDataLabels)) {
|
|
1139
|
+
e.font = `${ne}px sans-serif`, e.fillStyle = "#333", e.textAlign = "center", e.textBaseline = "bottom";
|
|
1140
|
+
let t = o ? te + 1 : 2;
|
|
1141
|
+
e.fillText(v(a), H(n), V(a) - t), e.fillStyle = i;
|
|
1142
|
+
}
|
|
1143
|
+
}
|
|
1144
|
+
}
|
|
1145
|
+
if (!t.catAxisHidden) {
|
|
1146
|
+
let n = Math.max(1, Math.ceil(l / 8)), r = t.catAxisFontColor ? `#${t.catAxisFontColor}` : "#555";
|
|
1147
|
+
e.fillStyle = r, e.textAlign = "center", e.textBaseline = "top", e.font = `${w}px sans-serif`;
|
|
1148
|
+
for (let i = 0; i < l; i += n) {
|
|
1149
|
+
let n = H(i);
|
|
1150
|
+
G(e, t.catAxisMajorTickMark, "cat", j + N, n), e.fillStyle = r, e.fillText((c[i] ?? "").toString().slice(0, 10), n, j + N + 5);
|
|
1151
|
+
}
|
|
1152
|
+
}
|
|
1153
|
+
ie(e, t, m, i, a, o, s, A, j, M, N, p + 2), t.catAxisTitle && U(e, t.catAxisTitle, A, j, M, N, "cat", E), t.valAxisTitle && U(e, t.valAxisTitle, A, j, M, N, "val", E);
|
|
1154
|
+
}
|
|
1155
|
+
function de(e, t, n, r) {
|
|
1156
|
+
let { x: i, y: a, w: o, h: s } = n, c = ce(t), l = c.length;
|
|
1157
|
+
if (l === 0) return;
|
|
1158
|
+
let u = t.chartType === "stackedArea" || t.chartType === "stackedAreaPct", d = t.title ? ae(t, s, r) : 0, f = t.title ? s * .035 : 0, p = t.title ? s * .035 : 0, m = t.title ? d + f + p : 0, _ = re(t, o, s), v = _?.side === "r" ? _.reserveW : 0, b = _?.side === "l" ? _.reserveW : 0, x = _?.side === "t" ? _.reserveH : 0, S = _?.side === "b" ? _.reserveH : 0, C = Math.max(8, Math.min(10, s * .045)), w = t.catAxisTitle ? C + 4 : 0, T = t.valAxisTitle ? C + 4 : 0, E = {
|
|
1159
|
+
t: m + x + s * .02,
|
|
1160
|
+
r: v + o * .05,
|
|
1161
|
+
b: s * .14 + w + S,
|
|
1162
|
+
l: o * .12 + T + b
|
|
1163
|
+
};
|
|
1164
|
+
se(e, t, i, a + f, o, d);
|
|
1165
|
+
let D = i + E.l, O = a + E.t, A = o - E.l - E.r, j = s - E.t - E.b;
|
|
1166
|
+
if (A <= 0 || j <= 0) return;
|
|
1167
|
+
t.plotAreaBg && (e.fillStyle = `#${t.plotAreaBg}`, e.fillRect(D, O, A, j));
|
|
1168
|
+
let M = 0;
|
|
1169
|
+
for (let e = 0; e < l; e++) if (u) {
|
|
1170
|
+
let n = 0;
|
|
1171
|
+
for (let r of t.series) n += r.values[e] ?? 0;
|
|
1172
|
+
M = Math.max(M, n);
|
|
1173
|
+
} else for (let n of t.series) M = Math.max(M, n.values[e] ?? 0);
|
|
1174
|
+
t.valMax != null && (M = t.valMax), M === 0 && (M = 1);
|
|
1175
|
+
let N = h(M), P = t.valMax ?? g(M, N), F = (e) => D + (l === 1 ? A / 2 : e / (l - 1) * A), I = (e) => O + j - e / P * j;
|
|
1176
|
+
if (!t.valAxisHidden) {
|
|
1177
|
+
e.font = `${Math.max(8, Math.min(11, j / 20))}px sans-serif`, e.textBaseline = "middle";
|
|
1178
|
+
let n = Math.round(P / N);
|
|
1179
|
+
for (let r = 0; r <= n; r++) {
|
|
1180
|
+
let n = r * N, i = I(n);
|
|
1181
|
+
e.strokeStyle = r === 0 ? "#aaa" : "#e0e0e0", e.lineWidth = r === 0 ? 1 : .5, e.beginPath(), e.moveTo(D, i), e.lineTo(D + A, i), e.stroke(), e.fillStyle = t.valAxisFontColor ? `#${t.valAxisFontColor}` : "#555", e.textAlign = "right", e.fillText(y(n, t.valAxisFormatCode), D - 4, i);
|
|
1182
|
+
}
|
|
1183
|
+
}
|
|
1184
|
+
!t.catAxisHidden && !t.catAxisLineHidden && (e.strokeStyle = "#aaa", e.lineWidth = 1, e.beginPath(), e.moveTo(D, O + j), e.lineTo(D + A, O + j), e.stroke());
|
|
1185
|
+
let L = u ? Array(l).fill(0) : null;
|
|
1186
|
+
for (let n = t.series.length - 1; n >= 0; n--) {
|
|
1187
|
+
let r = t.series[n], i = z(n, r), a = O + j;
|
|
1188
|
+
if (e.beginPath(), u && L) {
|
|
1189
|
+
for (let t = 0; t < l; t++) {
|
|
1190
|
+
let n = (r.values[t] ?? 0) + L[t], i = F(t), a = I(n);
|
|
1191
|
+
t === 0 ? e.moveTo(i, a) : e.lineTo(i, a);
|
|
1192
|
+
}
|
|
1193
|
+
for (let t = l - 1; t >= 0; t--) e.lineTo(F(t), I(L[t]));
|
|
1194
|
+
for (let e = 0; e < l; e++) L[e] += r.values[e] ?? 0;
|
|
1195
|
+
} else {
|
|
1196
|
+
e.moveTo(F(0), a);
|
|
1197
|
+
for (let t = 0; t < l; t++) e.lineTo(F(t), I(r.values[t] ?? 0));
|
|
1198
|
+
e.lineTo(F(l - 1), a);
|
|
1199
|
+
}
|
|
1200
|
+
e.closePath(), e.fillStyle = k(i, .6), e.fill(), e.strokeStyle = i, e.lineWidth = 1.5, e.setLineDash([]), e.stroke();
|
|
1201
|
+
}
|
|
1202
|
+
if (!t.catAxisHidden) {
|
|
1203
|
+
let n = Math.max(1, Math.ceil(l / 8));
|
|
1204
|
+
e.fillStyle = t.catAxisFontColor ? `#${t.catAxisFontColor}` : "#555", e.textAlign = "center", e.textBaseline = "top", e.font = `${Math.max(8, Math.min(11, A / l * .8))}px sans-serif`;
|
|
1205
|
+
for (let t = 0; t < l; t += n) e.fillText((c[t] ?? "").toString().slice(0, 10), F(t), O + j + 3);
|
|
1206
|
+
}
|
|
1207
|
+
ie(e, t, _, i, a, o, s, D, O, A, j, m + 2), t.catAxisTitle && U(e, t.catAxisTitle, D, O, A, j, "cat", C), t.valAxisTitle && U(e, t.valAxisTitle, D, O, A, j, "val", C);
|
|
1208
|
+
}
|
|
1209
|
+
function fe(e, t, n, r, i) {
|
|
1210
|
+
let { x: a, y: o, w: s, h: c } = n, l = t.series[0];
|
|
1211
|
+
if (!l) return;
|
|
1212
|
+
let u = l.categories && l.categories.length > 0 ? l.categories : t.categories, d = l.values.map((e) => Math.abs(e ?? 0)), f = d.reduce((e, t) => e + t, 0);
|
|
1213
|
+
if (f === 0) return;
|
|
1214
|
+
let p = t.title ? ae(t, c, i) : 0, m = t.title ? c * .035 : 0, h = t.title ? c * .035 : 0, g = t.title ? p + m + h : 0;
|
|
1215
|
+
se(e, t, a, o + m, s, p);
|
|
1216
|
+
let _ = t.showLegend ? (() => {
|
|
1217
|
+
let e = t.legendPos ?? "r", n = e === "l" ? "l" : e === "t" ? "t" : e === "b" ? "b" : "r";
|
|
1218
|
+
return n === "r" || n === "l" ? {
|
|
1219
|
+
side: n,
|
|
1220
|
+
reserveW: Math.max(80, s * .28),
|
|
1221
|
+
reserveH: 0
|
|
1222
|
+
} : {
|
|
1223
|
+
side: n,
|
|
1224
|
+
reserveW: 0,
|
|
1225
|
+
reserveH: Math.max(18, c * .08)
|
|
1226
|
+
};
|
|
1227
|
+
})() : null, v = _?.side === "r" ? _.reserveW : 0, y = _?.side === "l" ? _.reserveW : 0, b = _?.side === "t" ? _.reserveH : 0, x = _?.side === "b" ? _.reserveH : 0, S = s - v - y, C = c - g - b - x - c * .02, w = a + y + S / 2, T = o + g + b + c * .02 + C / 2, E = Math.min(S, C) * .42, D = r ? E * .5 : 0, O = -Math.PI / 2;
|
|
1228
|
+
for (let n = 0; n < d.length; n++) {
|
|
1229
|
+
let i = d[n] / f * Math.PI * 2, a = B(n, l);
|
|
1230
|
+
if (e.beginPath(), e.moveTo(w, T), e.arc(w, T, E, O, O + i), e.closePath(), e.fillStyle = a, e.fill(), e.strokeStyle = "#fff", e.lineWidth = 1, e.stroke(), t.showDataLabels && i > .15) {
|
|
1231
|
+
let t = O + i / 2, a = E * (r ? .75 : .6), o = w + Math.cos(t) * a, s = T + Math.sin(t) * a, c = Math.round(d[n] / f * 100);
|
|
1232
|
+
e.font = `bold ${Math.max(8, E * .1)}px sans-serif`, e.fillStyle = "#fff", e.textAlign = "center", e.textBaseline = "middle", e.fillText(`${c}%`, o, s);
|
|
1233
|
+
}
|
|
1234
|
+
O += i;
|
|
1235
|
+
}
|
|
1236
|
+
if (r && (e.beginPath(), e.arc(w, T, D, 0, Math.PI * 2), e.fillStyle = "#fff", e.fill()), _) {
|
|
1237
|
+
let n = [{
|
|
1238
|
+
...l,
|
|
1239
|
+
categories: u
|
|
1240
|
+
}], r = w - S / 2;
|
|
1241
|
+
ie(e, {
|
|
1242
|
+
...t,
|
|
1243
|
+
series: n
|
|
1244
|
+
}, _, a, o, s, c, r, T - C / 2, S, C, g + 2);
|
|
1245
|
+
}
|
|
1246
|
+
}
|
|
1247
|
+
function pe(e, t, n, r) {
|
|
1248
|
+
let { x: i, y: a, w: o, h: s } = n, c = ce(t), l = c.length;
|
|
1249
|
+
if (l < 3) return;
|
|
1250
|
+
let u = t.title ? ae(t, s, r) : 0, d = t.title ? s * .035 : 0, f = t.title ? s * .035 : 0, p = t.title ? u + d + f : 0, m = re(t, o, s), _ = m?.side === "r" ? m.reserveW : 0, y = m?.side === "l" ? m.reserveW : 0, b = m?.side === "t" ? m.reserveH : 0, x = m?.side === "b" ? m.reserveH : 0;
|
|
1251
|
+
se(e, t, i, a + d, o, u);
|
|
1252
|
+
let S = o - _ - y, C = s - p - b - x - s * .02, w = i + y + S / 2, T = a + p + b + s * .02 + C / 2, E = Math.min(S, C) * .38, D = 0;
|
|
1253
|
+
for (let e of t.series) for (let t of e.values) D = Math.max(D, t ?? 0);
|
|
1254
|
+
t.valMax != null && (D = t.valMax), D === 0 && (D = 1);
|
|
1255
|
+
let O = h(D), A = t.valMax ?? g(D, O), j = -Math.PI / 2, M = (e) => j + e / l * Math.PI * 2, N = Math.round(A / O);
|
|
1256
|
+
e.strokeStyle = "#ddd", e.lineWidth = .5;
|
|
1257
|
+
for (let t = 1; t <= N; t++) {
|
|
1258
|
+
let n = t / N * E;
|
|
1259
|
+
e.beginPath();
|
|
1260
|
+
for (let t = 0; t < l; t++) {
|
|
1261
|
+
let r = M(t), i = w + Math.cos(r) * n, a = T + Math.sin(r) * n;
|
|
1262
|
+
t === 0 ? e.moveTo(i, a) : e.lineTo(i, a);
|
|
1263
|
+
}
|
|
1264
|
+
e.closePath(), e.stroke();
|
|
1265
|
+
}
|
|
1266
|
+
e.strokeStyle = "#bbb", e.lineWidth = .5;
|
|
1267
|
+
for (let t = 0; t < l; t++) {
|
|
1268
|
+
let n = M(t);
|
|
1269
|
+
e.beginPath(), e.moveTo(w, T), e.lineTo(w + Math.cos(n) * E, T + Math.sin(n) * E), e.stroke();
|
|
1270
|
+
}
|
|
1271
|
+
if (!t.valAxisHidden) {
|
|
1272
|
+
e.font = `${oe(t.valAxisFontSizeHpt, s, r)}px sans-serif`, e.fillStyle = "#555", e.textAlign = "right", e.textBaseline = "middle";
|
|
1273
|
+
for (let t = 1; t <= N; t++) {
|
|
1274
|
+
let n = t / N * A, r = t / N * E;
|
|
1275
|
+
e.fillText(v(n), w - 3, T - r);
|
|
1276
|
+
}
|
|
1277
|
+
}
|
|
1278
|
+
e.font = `${Math.max(8, Math.min(11, E * .2))}px sans-serif`, e.fillStyle = "#444", e.textBaseline = "middle";
|
|
1279
|
+
for (let t = 0; t < l; t++) {
|
|
1280
|
+
let n = M(t), r = w + Math.cos(n) * (E + 12), i = T + Math.sin(n) * (E + 12);
|
|
1281
|
+
e.textAlign = Math.cos(n) < -.1 ? "right" : Math.cos(n) > .1 ? "left" : "center", e.fillText((c[t] ?? "").toString().slice(0, 12), r, i);
|
|
1282
|
+
}
|
|
1283
|
+
let P = t.radarStyle === "filled", F = Math.max(2, E * .025);
|
|
1284
|
+
for (let n = 0; n < t.series.length; n++) {
|
|
1285
|
+
let r = t.series[n], i = z(n, r), a = [];
|
|
1286
|
+
for (let e = 0; e < l; e++) {
|
|
1287
|
+
let t = r.values[e];
|
|
1288
|
+
if (t == null) {
|
|
1289
|
+
a.push(null);
|
|
1290
|
+
continue;
|
|
1291
|
+
}
|
|
1292
|
+
let n = t / A, i = M(e);
|
|
1293
|
+
a.push([w + Math.cos(i) * E * n, T + Math.sin(i) * E * n]);
|
|
1294
|
+
}
|
|
1295
|
+
e.beginPath();
|
|
1296
|
+
let o = !1;
|
|
1297
|
+
for (let t of a) {
|
|
1298
|
+
if (t == null) {
|
|
1299
|
+
o = !1;
|
|
1300
|
+
continue;
|
|
1301
|
+
}
|
|
1302
|
+
o ? e.lineTo(t[0], t[1]) : (e.moveTo(t[0], t[1]), o = !0);
|
|
1303
|
+
}
|
|
1304
|
+
let s = a.every((e) => e != null);
|
|
1305
|
+
if (P && s ? (e.closePath(), e.fillStyle = k(i, .25), e.fill()) : s && e.closePath(), e.strokeStyle = i, e.lineWidth = 2, e.stroke(), !P && r.showMarker !== !1) {
|
|
1306
|
+
e.fillStyle = i;
|
|
1307
|
+
for (let t of a) t != null && (e.beginPath(), e.arc(t[0], t[1], F, 0, Math.PI * 2), e.fill());
|
|
1308
|
+
}
|
|
1309
|
+
}
|
|
1310
|
+
ie(e, t, m, i, a, o, s, w - S / 2, T - C / 2, S, C, p + 2);
|
|
1311
|
+
}
|
|
1312
|
+
function q(e, t, n, r) {
|
|
1313
|
+
let { x: i, y: a, w: o, h: s } = n, c = t.title ? ae(t, s, r) : 0, l = t.title ? s * .035 : 0, u = t.title ? s * .035 : 0, d = t.title ? c + l + u : 0, f = re(t, o, s), p = f?.side === "r" ? f.reserveW : 0, m = f?.side === "l" ? f.reserveW : 0, g = f?.side === "t" ? f.reserveH : 0, _ = f?.side === "b" ? f.reserveH : 0, v = Math.max(8, Math.min(10, s * .045)), b = t.catAxisTitle ? v + 4 : 0, x = t.valAxisTitle ? v + 4 : 0;
|
|
1314
|
+
if (t.title) {
|
|
1315
|
+
let n = t.titleManualLayout;
|
|
1316
|
+
n && (n.x !== void 0 || n.y !== void 0) ? se(e, t, i + n.x * o, a + n.y * s, (n.w ?? .5) * o, c) : se(e, t, i, a + l, o, c);
|
|
1317
|
+
}
|
|
1318
|
+
let S = t.plotAreaManualLayout, C, w, T, E;
|
|
1319
|
+
if (S && S.w != null && S.h != null) C = i + S.x * o, w = a + S.y * s, T = S.w * o, E = S.h * s;
|
|
1320
|
+
else {
|
|
1321
|
+
let e = {
|
|
1322
|
+
t: d + g + s * .02,
|
|
1323
|
+
r: p + o * .05,
|
|
1324
|
+
b: (t.catAxisHidden ? s * .04 : s * .12) + b + _,
|
|
1325
|
+
l: (t.valAxisHidden ? o * .04 : o * .12) + x + m
|
|
1326
|
+
};
|
|
1327
|
+
C = i + e.l, w = a + e.t, T = o - e.l - e.r, E = s - e.t - e.b;
|
|
1328
|
+
}
|
|
1329
|
+
if (T <= 0 || E <= 0) return;
|
|
1330
|
+
t.plotAreaBg && (e.fillStyle = `#${t.plotAreaBg}`, e.fillRect(C, w, T, E));
|
|
1331
|
+
let D = [], O = [];
|
|
1332
|
+
for (let e of t.series) {
|
|
1333
|
+
let t = e.categories ?? [];
|
|
1334
|
+
for (let e of t) {
|
|
1335
|
+
let t = parseFloat(e);
|
|
1336
|
+
isNaN(t) || D.push(t);
|
|
1337
|
+
}
|
|
1338
|
+
for (let t of e.values) t != null && O.push(t);
|
|
1339
|
+
}
|
|
1340
|
+
let k = D.length === 0;
|
|
1341
|
+
if (k) {
|
|
1342
|
+
let e = Math.max(...t.series.map((e) => e.values.length));
|
|
1343
|
+
for (let t = 0; t < e; t++) D.push(t);
|
|
1344
|
+
}
|
|
1345
|
+
let A = Math.min(...D), j = Math.max(...D), M = Math.min(...O), N = Math.max(...O);
|
|
1346
|
+
if (A === j && (--A, j += 1), M === N && (--M, N += 1), t.valMin == null ? M > 0 && (M = 0) : M = t.valMin, t.valMax != null && (N = t.valMax), t.catAxisMin != null && (A = t.catAxisMin), t.catAxisMax != null && (j = t.catAxisMax), t.catAxisMin == null || t.catAxisMax == null) {
|
|
1347
|
+
let e = h(j - A);
|
|
1348
|
+
e > 0 && (t.catAxisMin ?? (A = Math.floor(A / e) * e), t.catAxisMax ?? (j = Math.ceil(j / e) * e));
|
|
1349
|
+
}
|
|
1350
|
+
let P = (e) => C + (e - A) / (j - A) * T, I = (e) => w + E - (e - M) / (N - M) * E;
|
|
1351
|
+
if (!t.valAxisHidden) {
|
|
1352
|
+
let n = Math.max(8, Math.min(11, E / 20));
|
|
1353
|
+
e.font = `${t.valAxisFontBold ? "bold " : ""}${n}px sans-serif`;
|
|
1354
|
+
let r = h(N - M), i = Math.round((N - M) / r) + 1;
|
|
1355
|
+
for (let n = 0; n < i; n++) {
|
|
1356
|
+
let i = M + n * r;
|
|
1357
|
+
if (i > N + r * .01) break;
|
|
1358
|
+
let a = I(i);
|
|
1359
|
+
e.strokeStyle = "#e0e0e0", e.lineWidth = .5, e.beginPath(), e.moveTo(C, a), e.lineTo(C + T, a), e.stroke(), e.fillStyle = "#555", e.textAlign = "right", e.textBaseline = "middle", e.fillText(y(i, t.valAxisFormatCode), C - 4, a);
|
|
1360
|
+
let o = t.valAxisLineColor ? `#${t.valAxisLineColor}` : void 0, s = t.valAxisLineWidthEmu ? Math.max(.5, t.valAxisLineWidthEmu / F) : void 0;
|
|
1361
|
+
G(e, t.valAxisMajorTickMark, "val", C, a, o, s);
|
|
1362
|
+
}
|
|
1363
|
+
}
|
|
1364
|
+
let L = w + E;
|
|
1365
|
+
if (t.catAxisCrossesAt != null) L = ve(I(t.catAxisCrossesAt), w, w + E);
|
|
1366
|
+
else {
|
|
1367
|
+
let e = t.catAxisCrosses ?? "autoZero";
|
|
1368
|
+
e === "autoZero" && M < 0 && N > 0 ? L = ve(I(0), w, w + E) : e === "min" ? L = w + E : e === "max" && (L = w);
|
|
1369
|
+
}
|
|
1370
|
+
if (!t.catAxisHidden && !t.catAxisLineHidden && (e.save(), e.strokeStyle = t.catAxisLineColor ? `#${t.catAxisLineColor}` : "#888", e.lineWidth = t.catAxisLineWidthEmu ? Math.max(.5, t.catAxisLineWidthEmu / F) : 1, e.lineCap = "butt", e.beginPath(), e.moveTo(C, L), e.lineTo(C + T, L), e.stroke(), e.restore()), !t.valAxisHidden && !t.valAxisLineHidden && (e.save(), e.strokeStyle = t.valAxisLineColor ? `#${t.valAxisLineColor}` : "#888", e.lineWidth = t.valAxisLineWidthEmu ? Math.max(.5, t.valAxisLineWidthEmu / F) : 1, e.beginPath(), e.moveTo(C, w), e.lineTo(C, w + E), e.stroke(), e.restore()), !t.catAxisHidden) {
|
|
1371
|
+
let n = Math.max(8, Math.min(11, E / 20));
|
|
1372
|
+
e.font = `${t.catAxisFontBold ? "bold " : ""}${n}px sans-serif`;
|
|
1373
|
+
let r = h(j - A), i = Math.round((j - A) / r) + 1;
|
|
1374
|
+
e.fillStyle = "#555", e.textAlign = "center", e.textBaseline = "top";
|
|
1375
|
+
for (let n = 0; n < i; n++) {
|
|
1376
|
+
let i = A + n * r;
|
|
1377
|
+
if (i > j + r * .01) break;
|
|
1378
|
+
let a = P(i);
|
|
1379
|
+
e.fillText(y(i, t.catAxisFormatCode), a, L + 4);
|
|
1380
|
+
let o = t.catAxisLineColor ? `#${t.catAxisLineColor}` : void 0, s = t.catAxisLineWidthEmu ? Math.max(.5, t.catAxisLineWidthEmu / F) : void 0;
|
|
1381
|
+
G(e, t.catAxisMajorTickMark, "cat", L, a, o, s);
|
|
1382
|
+
}
|
|
1383
|
+
}
|
|
1384
|
+
let R = t.chartType === "bubble", B = R ? "marker" : t.scatterStyle ?? "marker", V = B === "line" || B === "lineMarker" || B === "lineNoMarker", H = B === "smooth" || B === "smoothMarker" || B === "smoothNoMarker", ee = B === "lineNoMarker" || B === "smoothNoMarker";
|
|
1385
|
+
for (let n = 0; n < t.series.length; n++) {
|
|
1386
|
+
let i = t.series[n], a = z(n, i), o = i.categories ?? [];
|
|
1387
|
+
for (let t of i.errBars ?? []) he(e, i, t, o, k, P, I, a);
|
|
1388
|
+
if (V || H) {
|
|
1389
|
+
let t = [];
|
|
1390
|
+
for (let e = 0; e < i.values.length; e++) {
|
|
1391
|
+
let n = i.values[e];
|
|
1392
|
+
if (n == null) continue;
|
|
1393
|
+
let r = k ? e : parseFloat(o[e] ?? "0");
|
|
1394
|
+
isNaN(r) || t.push({
|
|
1395
|
+
x: P(r),
|
|
1396
|
+
y: I(n)
|
|
1397
|
+
});
|
|
1398
|
+
}
|
|
1399
|
+
if (t.length >= 2) {
|
|
1400
|
+
if (e.save(), e.strokeStyle = i.color ? `#${i.color}` : a, e.lineWidth = 1.5, e.beginPath(), e.moveTo(t[0].x, t[0].y), H && t.length >= 3) for (let n = 0; n < t.length - 1; n++) {
|
|
1401
|
+
let r = t[n - 1] ?? t[n], i = t[n], a = t[n + 1], o = t[n + 2] ?? a, s = i.x + (a.x - r.x) / 6, c = i.y + (a.y - r.y) / 6, l = a.x - (o.x - i.x) / 6, u = a.y - (o.y - i.y) / 6;
|
|
1402
|
+
e.bezierCurveTo(s, c, l, u, a.x, a.y);
|
|
1403
|
+
}
|
|
1404
|
+
else for (let n = 1; n < t.length; n++) e.lineTo(t[n].x, t[n].y);
|
|
1405
|
+
e.stroke(), e.restore();
|
|
1406
|
+
}
|
|
1407
|
+
}
|
|
1408
|
+
if (!(ee || i.showMarker === !1 || typeof i.markerSymbol == "string" && i.markerSymbol === "none")) {
|
|
1409
|
+
let t = 0;
|
|
1410
|
+
if (R && i.bubbleSizes && i.bubbleSizes.length > 0) {
|
|
1411
|
+
let e = Math.max(0, ...i.bubbleSizes.filter((e) => e != null));
|
|
1412
|
+
e > 0 && (t = Math.min(T, E) / Math.max(8, i.values.length * 1.6) / Math.sqrt(e));
|
|
1413
|
+
}
|
|
1414
|
+
for (let n = 0; n < i.values.length; n++) {
|
|
1415
|
+
let s = i.values[n];
|
|
1416
|
+
if (s == null) continue;
|
|
1417
|
+
let c = k ? n : parseFloat(o[n] ?? "0");
|
|
1418
|
+
if (isNaN(c)) continue;
|
|
1419
|
+
let l = (i.dataPointOverrides ?? []).find((e) => e.idx === n), u = l?.markerSymbol ?? i.markerSymbol ?? "circle", d = l?.markerSize ?? i.markerSize ?? 5;
|
|
1420
|
+
if (R && t > 0) {
|
|
1421
|
+
let e = i.bubbleSizes?.[n];
|
|
1422
|
+
e != null && e > 0 && (d = Math.sqrt(e) * t * 2 / r);
|
|
1423
|
+
}
|
|
1424
|
+
let f = l?.markerFill ?? l?.color ?? i.markerFill ?? a, p = l?.markerLine ?? i.markerLine ?? null;
|
|
1425
|
+
me(e, P(c), I(s), u, d, f, p, r);
|
|
1426
|
+
}
|
|
1427
|
+
}
|
|
1428
|
+
ge(e, i, o, k, P, I, E, r);
|
|
1429
|
+
}
|
|
1430
|
+
ie(e, t, f, i, a, o, s, C, w, T, E, d + 2), t.catAxisTitle && U(e, t.catAxisTitle, C, w, T, E, "cat", v), t.valAxisTitle && U(e, t.valAxisTitle, C, w, T, E, "val", v);
|
|
1431
|
+
}
|
|
1432
|
+
function me(e, t, n, r, i, a, o, s) {
|
|
1433
|
+
let c = Math.max(2, i * s), l = c / 2, u = a.startsWith("#") ? a : `#${a}`, d = o ? o.startsWith("#") ? o : `#${o}` : null;
|
|
1434
|
+
switch (e.save(), e.fillStyle = u, d && (e.strokeStyle = d, e.lineWidth = 1), r) {
|
|
1435
|
+
case "square":
|
|
1436
|
+
e.fillRect(t - l, n - l, c, c), o && e.strokeRect(t - l, n - l, c, c);
|
|
1437
|
+
break;
|
|
1438
|
+
case "diamond":
|
|
1439
|
+
e.beginPath(), e.moveTo(t, n - l), e.lineTo(t + l, n), e.lineTo(t, n + l), e.lineTo(t - l, n), e.closePath(), e.fill(), o && e.stroke();
|
|
1440
|
+
break;
|
|
1441
|
+
case "triangle":
|
|
1442
|
+
e.beginPath(), e.moveTo(t, n - l), e.lineTo(t + l, n + l), e.lineTo(t - l, n + l), e.closePath(), e.fill(), o && e.stroke();
|
|
1443
|
+
break;
|
|
1444
|
+
case "x":
|
|
1445
|
+
e.strokeStyle = u, e.lineWidth = Math.max(1, c * .18), e.beginPath(), e.moveTo(t - l, n - l), e.lineTo(t + l, n + l), e.moveTo(t - l, n + l), e.lineTo(t + l, n - l), e.stroke();
|
|
1446
|
+
break;
|
|
1447
|
+
case "plus":
|
|
1448
|
+
e.strokeStyle = u, e.lineWidth = Math.max(1, c * .18), e.beginPath(), e.moveTo(t - l, n), e.lineTo(t + l, n), e.moveTo(t, n - l), e.lineTo(t, n + l), e.stroke();
|
|
1449
|
+
break;
|
|
1450
|
+
case "star":
|
|
1451
|
+
e.beginPath();
|
|
1452
|
+
for (let r = 0; r < 10; r++) {
|
|
1453
|
+
let i = r % 2 == 0 ? l : l * .45, a = -Math.PI / 2 + r * Math.PI / 5, o = t + Math.cos(a) * i, s = n + Math.sin(a) * i;
|
|
1454
|
+
r === 0 ? e.moveTo(o, s) : e.lineTo(o, s);
|
|
1455
|
+
}
|
|
1456
|
+
e.closePath(), e.fill(), o && e.stroke();
|
|
1457
|
+
break;
|
|
1458
|
+
case "dot":
|
|
1459
|
+
e.beginPath(), e.arc(t, n, Math.max(1, c * .25), 0, Math.PI * 2), e.fill();
|
|
1460
|
+
break;
|
|
1461
|
+
case "dash": {
|
|
1462
|
+
let r = Math.max(1, c * .25);
|
|
1463
|
+
e.fillRect(t - l, n - r / 2, c, r);
|
|
1464
|
+
break;
|
|
1465
|
+
}
|
|
1466
|
+
default:
|
|
1467
|
+
e.beginPath(), e.arc(t, n, l, 0, Math.PI * 2), e.fill(), o && e.stroke();
|
|
1468
|
+
break;
|
|
1469
|
+
}
|
|
1470
|
+
e.restore();
|
|
1471
|
+
}
|
|
1472
|
+
function he(e, t, n, r, i, a, o, s) {
|
|
1473
|
+
e.save(), e.strokeStyle = n.color ? `#${n.color}` : s, e.lineWidth = n.lineWidthEmu ? Math.max(.5, n.lineWidthEmu / F) : 1, e.setLineDash(ye(n.dash));
|
|
1474
|
+
let c = n.barType === "plus" || n.barType === "both", l = n.barType === "minus" || n.barType === "both", u = n.dir === "x", d = e.lineWidth * 1.5;
|
|
1475
|
+
for (let s = 0; s < t.values.length; s++) {
|
|
1476
|
+
let f = t.values[s];
|
|
1477
|
+
if (f == null) continue;
|
|
1478
|
+
let p = i ? s : parseFloat(r[s] ?? "0");
|
|
1479
|
+
if (isNaN(p)) continue;
|
|
1480
|
+
let m = a(p), h = o(f), g = (t) => {
|
|
1481
|
+
let r = m, i = h;
|
|
1482
|
+
u ? r = a(p + t) : i = o(f + t), e.beginPath(), e.moveTo(m, h), e.lineTo(r, i), e.stroke(), n.noEndCap || (e.save(), e.setLineDash([]), e.beginPath(), u ? (e.moveTo(r, i - d), e.lineTo(r, i + d)) : (e.moveTo(r - d, i), e.lineTo(r + d, i)), e.stroke(), e.restore());
|
|
1483
|
+
};
|
|
1484
|
+
if (c) {
|
|
1485
|
+
let e = n.plus[s];
|
|
1486
|
+
e != null && g(e);
|
|
1487
|
+
}
|
|
1488
|
+
if (l) {
|
|
1489
|
+
let e = n.minus[s];
|
|
1490
|
+
e != null && g(-e);
|
|
1491
|
+
}
|
|
1492
|
+
}
|
|
1493
|
+
e.restore();
|
|
1494
|
+
}
|
|
1495
|
+
function ge(e, t, n, r, i, a, o, s) {
|
|
1496
|
+
let c = t.dataLabelOverrides ?? [];
|
|
1497
|
+
if (c.length === 0 && !t.seriesDataLabels) return;
|
|
1498
|
+
let l = t.seriesDataLabels;
|
|
1499
|
+
for (let u = 0; u < t.values.length; u++) {
|
|
1500
|
+
let d = t.values[u];
|
|
1501
|
+
if (d == null) continue;
|
|
1502
|
+
let f = r ? u : parseFloat(n[u] ?? "0");
|
|
1503
|
+
if (isNaN(f)) continue;
|
|
1504
|
+
let p = c.find((e) => e.idx === u), m;
|
|
1505
|
+
if (p) {
|
|
1506
|
+
if (p.text === "") continue;
|
|
1507
|
+
m = p.text;
|
|
1508
|
+
} else if (l && (l.showVal || l.showSerName || l.showCatName)) {
|
|
1509
|
+
let e = [];
|
|
1510
|
+
if (l.showCatName && !r && e.push(n[u] ?? ""), l.showSerName && e.push(t.name), l.showVal && e.push(y(d, l.formatCode ?? null)), m = e.filter(Boolean).join(" "), !m) continue;
|
|
1511
|
+
} else continue;
|
|
1512
|
+
let h = p?.position ?? l?.position ?? "r", g = p?.fontSizeHpt ?? l?.fontSizeHpt, _ = g ? g / 100 * s : Math.max(9, Math.min(11, o / 25)), v = p?.fontColor ?? l?.fontColor, b = p?.fontBold ?? l?.fontBold ?? !1;
|
|
1513
|
+
_e(e, i(f), a(d), m, h, _, v, b);
|
|
1514
|
+
}
|
|
1515
|
+
}
|
|
1516
|
+
function _e(e, t, n, r, i, a, o, s) {
|
|
1517
|
+
e.save(), e.font = `${s ? "bold " : ""}${a}px sans-serif`, e.fillStyle = o ? `#${o}` : "#333";
|
|
1518
|
+
let c = a * .6, l = t, u = n;
|
|
1519
|
+
switch (i) {
|
|
1520
|
+
case "l":
|
|
1521
|
+
e.textAlign = "right", e.textBaseline = "middle", l = t - c;
|
|
1522
|
+
break;
|
|
1523
|
+
case "r":
|
|
1524
|
+
e.textAlign = "left", e.textBaseline = "middle", l = t + c;
|
|
1525
|
+
break;
|
|
1526
|
+
case "t":
|
|
1527
|
+
e.textAlign = "center", e.textBaseline = "bottom", u = n - c;
|
|
1528
|
+
break;
|
|
1529
|
+
case "b":
|
|
1530
|
+
e.textAlign = "center", e.textBaseline = "top", u = n + c;
|
|
1531
|
+
break;
|
|
1532
|
+
case "ctr":
|
|
1533
|
+
e.textAlign = "center", e.textBaseline = "middle";
|
|
1534
|
+
break;
|
|
1535
|
+
default:
|
|
1536
|
+
e.textAlign = "left", e.textBaseline = "middle", l = t + c;
|
|
1537
|
+
break;
|
|
1538
|
+
}
|
|
1539
|
+
let d = r.split(/\r?\n/), f = a * 1.15, p = f * d.length, m = u;
|
|
1540
|
+
e.textBaseline === "middle" ? m = u - (p - f) / 2 : e.textBaseline === "bottom" && (m = u - (p - f));
|
|
1541
|
+
for (let t of d) e.fillText(t, l, m), m += f;
|
|
1542
|
+
e.restore();
|
|
1543
|
+
}
|
|
1544
|
+
function ve(e, t, n) {
|
|
1545
|
+
return e < t ? t : e > n ? n : e;
|
|
1546
|
+
}
|
|
1547
|
+
function ye(e) {
|
|
1548
|
+
if (!e) return [];
|
|
1549
|
+
switch (e) {
|
|
1550
|
+
case "solid": return [];
|
|
1551
|
+
case "dot":
|
|
1552
|
+
case "sysDot": return [1, 2];
|
|
1553
|
+
case "dash":
|
|
1554
|
+
case "sysDash": return [4, 2];
|
|
1555
|
+
case "lgDash": return [8, 3];
|
|
1556
|
+
case "dashDot":
|
|
1557
|
+
case "sysDashDot": return [
|
|
1558
|
+
4,
|
|
1559
|
+
2,
|
|
1560
|
+
1,
|
|
1561
|
+
2
|
|
1562
|
+
];
|
|
1563
|
+
case "lgDashDot": return [
|
|
1564
|
+
8,
|
|
1565
|
+
3,
|
|
1566
|
+
1,
|
|
1567
|
+
3
|
|
1568
|
+
];
|
|
1569
|
+
case "dashDotDot":
|
|
1570
|
+
case "sysDashDotDot":
|
|
1571
|
+
case "lgDashDotDot": return [
|
|
1572
|
+
4,
|
|
1573
|
+
2,
|
|
1574
|
+
1,
|
|
1575
|
+
2,
|
|
1576
|
+
1,
|
|
1577
|
+
2
|
|
1578
|
+
];
|
|
1579
|
+
default: return [];
|
|
1580
|
+
}
|
|
1581
|
+
}
|
|
1582
|
+
function be(e, t, n) {
|
|
1583
|
+
let { x: r, y: i, w: a, h: o } = n, s = t.plotAreaManualLayout, c, l, u, d;
|
|
1584
|
+
if (s && s.w != null && s.h != null) c = r + s.x * a, l = i + s.y * o, u = s.w * a, d = s.h * o;
|
|
1585
|
+
else {
|
|
1586
|
+
let e = t.valAxisHidden ? a * .01 : a * .11, n = a * .01, s = o * .12, f = o * .14;
|
|
1587
|
+
c = r + e, l = i + s, u = a - e - n, d = o - s - f;
|
|
1588
|
+
}
|
|
1589
|
+
let f = t.series[0]?.values ?? [], p = t.categories, m = p.length;
|
|
1590
|
+
if (m === 0) return;
|
|
1591
|
+
let g = new Set(t.subtotalIndices), _ = 0, v = [];
|
|
1592
|
+
for (let e = 0; e < m; e++) {
|
|
1593
|
+
let t = f[e] ?? 0;
|
|
1594
|
+
if (e === 0 || g.has(e)) v.push({
|
|
1595
|
+
start: 0,
|
|
1596
|
+
end: t,
|
|
1597
|
+
isSub: !0,
|
|
1598
|
+
isPos: !0
|
|
1599
|
+
}), _ = t;
|
|
1600
|
+
else {
|
|
1601
|
+
let e = t >= 0 ? _ : _ + t, n = t >= 0 ? _ + t : _;
|
|
1602
|
+
v.push({
|
|
1603
|
+
start: e,
|
|
1604
|
+
end: n,
|
|
1605
|
+
isSub: !1,
|
|
1606
|
+
isPos: t >= 0
|
|
1607
|
+
}), _ += t;
|
|
1608
|
+
}
|
|
1609
|
+
}
|
|
1610
|
+
let y = v.map((e) => e.end), b = v.map((e) => e.start), x = Math.max(...y, ...b), S = Math.min(...b, 0), C = x - S;
|
|
1611
|
+
if (C <= 0) return;
|
|
1612
|
+
let w = S < 0 ? S - C * .05 : 0, T = (x - w) * 1.1, E = w + T, D = h(T);
|
|
1613
|
+
e.save();
|
|
1614
|
+
let O = Math.round(o * .042);
|
|
1615
|
+
if (e.font = `${O}px sans-serif`, !t.valAxisHidden) {
|
|
1616
|
+
e.strokeStyle = "#e8e8e8", e.lineWidth = .7, e.fillStyle = "#666", e.textAlign = "right", e.textBaseline = "middle";
|
|
1617
|
+
for (let t = Math.ceil(w / D) * D; t <= E; t += D) {
|
|
1618
|
+
let n = l + d * (1 - (t - w) / T);
|
|
1619
|
+
e.beginPath(), e.moveTo(c, n), e.lineTo(c + u, n), e.stroke(), e.fillText(t.toLocaleString(), c - 4, n);
|
|
1620
|
+
}
|
|
1621
|
+
}
|
|
1622
|
+
let k = !t.valAxisHidden && !t.valAxisLineHidden, A = !t.catAxisHidden && !t.catAxisLineHidden;
|
|
1623
|
+
(k || A) && (e.strokeStyle = "#bbb", e.lineWidth = 1, e.beginPath(), k ? (e.moveTo(c, l), e.lineTo(c, l + d), A && e.lineTo(c + u, l + d)) : A && (e.moveTo(c, l + d), e.lineTo(c + u, l + d)), e.stroke());
|
|
1624
|
+
let j = u / m, M = j / (1 + (t.barGapWidth ?? 150) / 100);
|
|
1625
|
+
v.forEach((n, r) => {
|
|
1626
|
+
let i = c + j * r + (j - M) / 2, a = l + d * (1 - (n.end - w) / T), s = l + d * (1 - (n.start - w) / T), u = Math.max(1, s - a);
|
|
1627
|
+
if (n.isSub ? (e.fillStyle = "#196ECA", e.fillRect(i, a, M, u)) : (e.strokeStyle = n.isPos ? "#5BA4E6" : "#E46970", e.lineWidth = 1.5, e.strokeRect(i + .75, a + .75, M - 1.5, u - 1.5)), r < m - 1) {
|
|
1628
|
+
let t = c + j * (r + 1) + (j - M) / 2, o = n.isPos ? a : s;
|
|
1629
|
+
e.strokeStyle = "#ccc", e.lineWidth = .8, e.setLineDash([3, 3]), e.beginPath(), e.moveTo(i + M, o), e.lineTo(t, o), e.stroke(), e.setLineDash([]);
|
|
1630
|
+
}
|
|
1631
|
+
let p = f[r] ?? 0, h = p < 0 ? `△ ${Math.abs(p).toLocaleString()}` : p.toLocaleString(), g = t.series[0]?.dataLabelColors?.[r] ?? null;
|
|
1632
|
+
e.fillStyle = g ? `#${g}` : t.dataLabelFontColor ? `#${t.dataLabelFontColor}` : "#595959", e.font = `bold ${Math.round(o * .044)}px sans-serif`, e.textAlign = "center", p < 0 ? (e.textBaseline = "top", e.fillText(h, i + M / 2, s + 3)) : (e.textBaseline = "bottom", e.fillText(h, i + M / 2, a - 3));
|
|
1633
|
+
}), e.textAlign = "center", e.textBaseline = "top", e.fillStyle = "#666", e.font = `${Math.round(o * .038)}px sans-serif`;
|
|
1634
|
+
let N = l + d + 4;
|
|
1635
|
+
for (let t = 0; t < m; t++) {
|
|
1636
|
+
let n = c + j * t + j / 2;
|
|
1637
|
+
p[t].split(/\s+/).forEach((t, r) => e.fillText(t, n, N + r * (O + 2)));
|
|
1527
1638
|
}
|
|
1528
|
-
|
|
1639
|
+
e.restore();
|
|
1529
1640
|
}
|
|
1530
|
-
function
|
|
1531
|
-
|
|
1532
|
-
if (
|
|
1533
|
-
|
|
1534
|
-
return
|
|
1641
|
+
function xe(e, t, n, r = L) {
|
|
1642
|
+
let { x: i, y: a, w: o, h: s } = n;
|
|
1643
|
+
if (t.chartBg && (e.fillStyle = `#${t.chartBg}`, e.fillRect(i, a, o, s)), t.series.length === 0) {
|
|
1644
|
+
e.fillStyle = "#888", e.font = "12px sans-serif", e.textAlign = "center", e.textBaseline = "middle", e.fillText("(no data)", i + o / 2, a + s / 2);
|
|
1645
|
+
return;
|
|
1646
|
+
}
|
|
1647
|
+
switch (t.chartType) {
|
|
1648
|
+
case "clusteredBar":
|
|
1649
|
+
case "clusteredBarH":
|
|
1650
|
+
case "stackedBar":
|
|
1651
|
+
case "stackedBarH":
|
|
1652
|
+
case "stackedBarPct":
|
|
1653
|
+
case "stackedBarHPct":
|
|
1654
|
+
ue(e, t, n, r);
|
|
1655
|
+
break;
|
|
1656
|
+
case "line":
|
|
1657
|
+
case "stackedLine":
|
|
1658
|
+
case "stackedLinePct":
|
|
1659
|
+
K(e, t, n, r);
|
|
1660
|
+
break;
|
|
1661
|
+
case "area":
|
|
1662
|
+
case "stackedArea":
|
|
1663
|
+
case "stackedAreaPct":
|
|
1664
|
+
de(e, t, n, r);
|
|
1665
|
+
break;
|
|
1666
|
+
case "pie":
|
|
1667
|
+
fe(e, t, n, !1, r);
|
|
1668
|
+
break;
|
|
1669
|
+
case "doughnut":
|
|
1670
|
+
fe(e, t, n, !0, r);
|
|
1671
|
+
break;
|
|
1672
|
+
case "radar":
|
|
1673
|
+
pe(e, t, n, r);
|
|
1674
|
+
break;
|
|
1675
|
+
case "scatter":
|
|
1676
|
+
case "bubble":
|
|
1677
|
+
q(e, t, n, r);
|
|
1678
|
+
break;
|
|
1679
|
+
case "waterfall":
|
|
1680
|
+
be(e, t, n);
|
|
1681
|
+
break;
|
|
1682
|
+
default: e.fillStyle = "#888", e.font = "11px sans-serif", e.textAlign = "center", e.textBaseline = "middle", e.fillText(`Chart: ${t.chartType}`, i + o / 2, a + s / 2);
|
|
1535
1683
|
}
|
|
1536
|
-
return null;
|
|
1537
|
-
}
|
|
1538
|
-
function ie(e) {
|
|
1539
|
-
return `rgba(${parseInt(e.slice(0, 2), 16)},${parseInt(e.slice(2, 4), 16)},${parseInt(e.slice(4, 6), 16)},${e.length >= 8 ? parseInt(e.slice(6, 8), 16) / 255 : 1})`;
|
|
1540
1684
|
}
|
|
1541
1685
|
//#endregion
|
|
1542
|
-
//#region packages/core/src/
|
|
1543
|
-
function
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
let o = e.stops;
|
|
1552
|
-
if (o.length === 0) return null;
|
|
1553
|
-
if (o.length === 1) return ae(o[0].color);
|
|
1554
|
-
let s;
|
|
1555
|
-
if (e.gradType === "radial") {
|
|
1556
|
-
let e = n + i / 2, o = r + a / 2, c = Math.sqrt(i * i + a * a) / 2;
|
|
1557
|
-
s = t.createRadialGradient(e, o, 0, e, o, c);
|
|
1558
|
-
} else {
|
|
1559
|
-
let o = e.angle * Math.PI / 180, c = n + i / 2, l = r + a / 2, u = (Math.abs(Math.cos(o)) * i + Math.abs(Math.sin(o)) * a) / 2;
|
|
1560
|
-
s = t.createLinearGradient(c - Math.cos(o) * u, l - Math.sin(o) * u, c + Math.cos(o) * u, l + Math.sin(o) * u);
|
|
1686
|
+
//#region packages/core/src/autoResize.ts
|
|
1687
|
+
function Se(e, t, n = {}) {
|
|
1688
|
+
let r = n.pauseWhenHidden ?? !0, i = null, a = 0, o = 0, s = null, c = !1, l = !1, u = () => {
|
|
1689
|
+
if (!l && !(r && typeof document < "u" && document.hidden)) {
|
|
1690
|
+
if (s) {
|
|
1691
|
+
c = !0;
|
|
1692
|
+
return;
|
|
1693
|
+
}
|
|
1694
|
+
i === null && (i = requestAnimationFrame(d));
|
|
1561
1695
|
}
|
|
1562
|
-
|
|
1563
|
-
return
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1696
|
+
}, d = async () => {
|
|
1697
|
+
if (i = null, l) return;
|
|
1698
|
+
let t = a, n = o;
|
|
1699
|
+
try {
|
|
1700
|
+
let r = e(t, n);
|
|
1701
|
+
s = r instanceof Promise ? r : Promise.resolve(), await s;
|
|
1702
|
+
} catch (e) {
|
|
1703
|
+
console.error("[autoResize] render failed:", e);
|
|
1704
|
+
} finally {
|
|
1705
|
+
s = null, c && !l && (c = !1, u());
|
|
1706
|
+
}
|
|
1707
|
+
}, f = new ResizeObserver((e) => {
|
|
1708
|
+
for (let t of e) {
|
|
1709
|
+
let e = t.contentRect;
|
|
1710
|
+
a = e.width, o = e.height;
|
|
1711
|
+
}
|
|
1712
|
+
u();
|
|
1713
|
+
});
|
|
1714
|
+
f.observe(t);
|
|
1715
|
+
let p = () => {
|
|
1716
|
+
typeof document < "u" && !document.hidden && u();
|
|
1717
|
+
};
|
|
1718
|
+
return r && typeof document < "u" && document.addEventListener("visibilitychange", p), () => {
|
|
1719
|
+
l = !0, f.disconnect(), i !== null && (cancelAnimationFrame(i), i = null), r && typeof document < "u" && document.removeEventListener("visibilitychange", p);
|
|
1720
|
+
};
|
|
1577
1721
|
}
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
sysDashDot: [
|
|
1605
|
-
4,
|
|
1606
|
-
2,
|
|
1607
|
-
1,
|
|
1608
|
-
2
|
|
1609
|
-
]
|
|
1610
|
-
};
|
|
1611
|
-
function le(e, t, n) {
|
|
1612
|
-
if (!t) {
|
|
1613
|
-
e.strokeStyle = "transparent", e.lineWidth = 0, e.setLineDash([]);
|
|
1614
|
-
return;
|
|
1722
|
+
//#endregion
|
|
1723
|
+
//#region packages/core/src/shape/custGeom.ts
|
|
1724
|
+
function Ce(e, t, n, r, i, a) {
|
|
1725
|
+
for (let o of t) {
|
|
1726
|
+
let t = 0, s = 0;
|
|
1727
|
+
for (let c of o) switch (c.cmd) {
|
|
1728
|
+
case "moveTo":
|
|
1729
|
+
e.moveTo(n + c.x * i, r + c.y * a), t = c.x, s = c.y;
|
|
1730
|
+
break;
|
|
1731
|
+
case "lineTo":
|
|
1732
|
+
e.lineTo(n + c.x * i, r + c.y * a), t = c.x, s = c.y;
|
|
1733
|
+
break;
|
|
1734
|
+
case "cubicBezTo":
|
|
1735
|
+
e.bezierCurveTo(n + c.x1 * i, r + c.y1 * a, n + c.x2 * i, r + c.y2 * a, n + c.x * i, r + c.y * a), t = c.x, s = c.y;
|
|
1736
|
+
break;
|
|
1737
|
+
case "arcTo": {
|
|
1738
|
+
let o = c.wr * i, l = c.hr * a;
|
|
1739
|
+
if (o <= 0 || l <= 0) break;
|
|
1740
|
+
let u = c.stAng * Math.PI / 180, d = c.swAng * Math.PI / 180, f = n + t * i, p = r + s * a, m = f - o * Math.cos(u), h = p - l * Math.sin(u), g = u + d;
|
|
1741
|
+
e.ellipse(m, h, o, l, 0, u, g, d < 0), t = (m + o * Math.cos(g) - n) / i, s = (h + l * Math.sin(g) - r) / a;
|
|
1742
|
+
break;
|
|
1743
|
+
}
|
|
1744
|
+
case "close":
|
|
1745
|
+
e.closePath();
|
|
1746
|
+
break;
|
|
1747
|
+
}
|
|
1615
1748
|
}
|
|
1616
|
-
e.strokeStyle = ae(t.color);
|
|
1617
|
-
let r = Math.max(.5, t.width * n);
|
|
1618
|
-
e.lineWidth = r;
|
|
1619
|
-
let i = t.dashStyle ? ce[t.dashStyle] : null;
|
|
1620
|
-
e.setLineDash(i ? i.map((e) => e * r) : []);
|
|
1621
1749
|
}
|
|
1622
1750
|
//#endregion
|
|
1623
1751
|
//#region packages/core/src/shape/preset.ts
|
|
1624
|
-
function
|
|
1752
|
+
function J(e, t, n, r, i, a, o, s = -Math.PI / 2) {
|
|
1625
1753
|
let c = a * 2;
|
|
1626
1754
|
for (let l = 0; l < c; l++) {
|
|
1627
1755
|
let c = s + l * Math.PI / a, u = l % 2 == 0 ? 1 : o, d = t + r * u * Math.cos(c), f = n + i * u * Math.sin(c);
|
|
@@ -1629,21 +1757,21 @@ function Z(e, t, n, r, i, a, o, s = -Math.PI / 2) {
|
|
|
1629
1757
|
}
|
|
1630
1758
|
e.closePath();
|
|
1631
1759
|
}
|
|
1632
|
-
function
|
|
1760
|
+
function we(e, t, n, r, i, a, o = -Math.PI / 2) {
|
|
1633
1761
|
for (let s = 0; s < a; s++) {
|
|
1634
1762
|
let c = o + s * 2 * Math.PI / a, l = t + r * Math.cos(c), u = n + i * Math.sin(c);
|
|
1635
1763
|
s === 0 ? e.moveTo(l, u) : e.lineTo(l, u);
|
|
1636
1764
|
}
|
|
1637
1765
|
e.closePath();
|
|
1638
1766
|
}
|
|
1639
|
-
function
|
|
1767
|
+
function Y(e, t, n, r, i, a, o) {
|
|
1640
1768
|
let s = (e) => Math.atan2(r * Math.sin(e), i * Math.cos(e)), c = s(a), l = s(a + o), u = t - r * Math.cos(c), d = n - i * Math.sin(c);
|
|
1641
1769
|
return e.ellipse(u, d, Math.abs(r), Math.abs(i), 0, c, l, o < 0), {
|
|
1642
1770
|
x: u + r * Math.cos(l),
|
|
1643
1771
|
y: d + i * Math.sin(l)
|
|
1644
1772
|
};
|
|
1645
1773
|
}
|
|
1646
|
-
function
|
|
1774
|
+
function Te(e, t, n, r, i, a, o = null, s = null, c = null, l = null) {
|
|
1647
1775
|
let u = n + i / 2, d = r + a / 2;
|
|
1648
1776
|
switch (t) {
|
|
1649
1777
|
case "ellipse":
|
|
@@ -1678,53 +1806,53 @@ function de(e, t, n, r, i, a, o = null, s = null, c = null, l = null) {
|
|
|
1678
1806
|
break;
|
|
1679
1807
|
}
|
|
1680
1808
|
case "pentagon":
|
|
1681
|
-
|
|
1809
|
+
we(e, u, d, i / 2, a / 2, 5);
|
|
1682
1810
|
break;
|
|
1683
1811
|
case "hexagon":
|
|
1684
|
-
|
|
1812
|
+
we(e, u, d, i / 2, a / 2, 6, 0);
|
|
1685
1813
|
break;
|
|
1686
1814
|
case "heptagon":
|
|
1687
|
-
|
|
1815
|
+
we(e, u, d, i / 2, a / 2, 7);
|
|
1688
1816
|
break;
|
|
1689
1817
|
case "octagon":
|
|
1690
|
-
|
|
1818
|
+
we(e, u, d, i / 2, a / 2, 8, -Math.PI / 8);
|
|
1691
1819
|
break;
|
|
1692
1820
|
case "decagon":
|
|
1693
|
-
|
|
1821
|
+
we(e, u, d, i / 2, a / 2, 10);
|
|
1694
1822
|
break;
|
|
1695
1823
|
case "dodecagon":
|
|
1696
|
-
|
|
1824
|
+
we(e, u, d, i / 2, a / 2, 12);
|
|
1697
1825
|
break;
|
|
1698
1826
|
case "star4":
|
|
1699
|
-
|
|
1827
|
+
J(e, u, d, i / 2, a / 2, 4, (o ?? 12500) / 5e4);
|
|
1700
1828
|
break;
|
|
1701
1829
|
case "star5":
|
|
1702
1830
|
case "star":
|
|
1703
|
-
|
|
1831
|
+
J(e, u, d, i / 2, a / 2, 5, (o ?? 19098) / 5e4);
|
|
1704
1832
|
break;
|
|
1705
1833
|
case "star6":
|
|
1706
|
-
|
|
1834
|
+
J(e, u, d, i / 2, a / 2, 6, (o ?? 28868) / 5e4, 0);
|
|
1707
1835
|
break;
|
|
1708
1836
|
case "star7":
|
|
1709
|
-
|
|
1837
|
+
J(e, u, d, i / 2, a / 2, 7, (o ?? 34142) / 5e4);
|
|
1710
1838
|
break;
|
|
1711
1839
|
case "star8":
|
|
1712
|
-
|
|
1840
|
+
J(e, u, d, i / 2, a / 2, 8, (o ?? 37500) / 5e4, -Math.PI / 2);
|
|
1713
1841
|
break;
|
|
1714
1842
|
case "star10":
|
|
1715
|
-
|
|
1843
|
+
J(e, u, d, i / 2, a / 2, 10, (o ?? 41421) / 5e4);
|
|
1716
1844
|
break;
|
|
1717
1845
|
case "star12":
|
|
1718
|
-
|
|
1846
|
+
J(e, u, d, i / 2, a / 2, 12, (o ?? 37500) / 5e4, 0);
|
|
1719
1847
|
break;
|
|
1720
1848
|
case "star16":
|
|
1721
|
-
|
|
1849
|
+
J(e, u, d, i / 2, a / 2, 16, (o ?? 37500) / 5e4, -Math.PI / 2);
|
|
1722
1850
|
break;
|
|
1723
1851
|
case "star24":
|
|
1724
|
-
|
|
1852
|
+
J(e, u, d, i / 2, a / 2, 24, (o ?? 37500) / 5e4, 0);
|
|
1725
1853
|
break;
|
|
1726
1854
|
case "star32":
|
|
1727
|
-
|
|
1855
|
+
J(e, u, d, i / 2, a / 2, 32, (o ?? 37500) / 5e4, -Math.PI / 2);
|
|
1728
1856
|
break;
|
|
1729
1857
|
case "rightarrow": {
|
|
1730
1858
|
let t = a * Math.min(1, (o ?? 5e4) / 1e5), c = i * Math.min(1, (s ?? 5e4) / 1e5), l = r + (a - t) / 2;
|
|
@@ -2290,26 +2418,26 @@ function de(e, t, n, r, i, a, o = null, s = null, c = null, l = null) {
|
|
|
2290
2418
|
}
|
|
2291
2419
|
case "curvedrightarrow": {
|
|
2292
2420
|
let t = Math.min(i, a), l = a / 2, u = 5e4 * a / t, d = Math.min(u, Math.max(0, s ?? 5e4)), f = t * Math.min(d, Math.max(0, o ?? 25e3)) / 1e5, p = t * d / 1e5, m = l - (f + p) / 4, h = (2 * m) ** 2 - f ** 2, g = 1e5 * (Math.sqrt(Math.max(0, h)) * i / (2 * m)) / t, _ = t * Math.min(g, Math.max(0, c ?? 25e3)) / 1e5, v = Math.sqrt(Math.max(0, i * i - _ * _)) * m / i, y = m + f, b = m + v, x = y + v, S = (p - f) / 2, C = b - S, w = x + S, T = a - p / 2, E = i - _, D = Math.atan2(_, v), O = -D, k = Math.PI - D;
|
|
2293
|
-
e.moveTo(n, r + m),
|
|
2421
|
+
e.moveTo(n, r + m), Y(e, n, r + m, i, m, Math.PI, O), e.lineTo(n + E, r + C), e.lineTo(n + i, r + T), e.lineTo(n + E, r + w), e.lineTo(n + E, r + x), Y(e, n + E, r + x, i, m, k, D), e.closePath();
|
|
2294
2422
|
break;
|
|
2295
2423
|
}
|
|
2296
2424
|
case "curvedleftarrow": {
|
|
2297
2425
|
let t = Math.min(i, a), l = a / 2, u = 5e4 * a / t, d = Math.min(u, Math.max(0, s ?? 5e4)), f = t * Math.min(d, Math.max(0, o ?? 25e3)) / 1e5, p = t * d / 1e5, m = l - (f + p) / 4, h = (2 * m) ** 2 - f ** 2, g = Math.sqrt(Math.max(0, h)) * i / (2 * m), _ = 1e5 * g / t, v = t * Math.min(_, Math.max(0, c ?? 25e3)) / 1e5, y = Math.sqrt(Math.max(0, i * i - v * v)) * m / i, b = m + f, x = m + y, S = b + y, C = (p - f) / 2, w = x - C, T = S + C, E = a - p / 2, D = v, O = Math.atan2(v, y), k = f / 2, A = Math.atan2(k, g), j = A - O, M = O - A, N = -A;
|
|
2298
2426
|
e.moveTo(n, r + E), e.lineTo(n + D, r + w), e.lineTo(n + D, r + x);
|
|
2299
|
-
let P =
|
|
2300
|
-
|
|
2427
|
+
let P = Y(e, n + D, r + x, i, m, O, j);
|
|
2428
|
+
Y(e, P.x, P.y, i, m, N, M), e.lineTo(n + D, r + T), e.closePath();
|
|
2301
2429
|
break;
|
|
2302
2430
|
}
|
|
2303
2431
|
case "curveduparrow": {
|
|
2304
2432
|
let t = Math.min(i, a), l = i / 2, u = 5e4 * i / t, d = Math.min(u, Math.max(0, s ?? 5e4)), f = t * Math.min(1e5, Math.max(0, o ?? 25e3)) / 1e5, p = t * d / 1e5, m = l - (f + p) / 4, h = (2 * m) ** 2 - f ** 2, g = Math.sqrt(Math.max(0, h)) * a / (2 * m), _ = 1e5 * g / t, v = t * Math.min(_, Math.max(0, c ?? 25e3)) / 1e5, y = Math.sqrt(Math.max(0, a * a - v * v)) * m / a, b = m + f, x = m + y, S = b + y, C = (p - f) / 2, w = x - C, T = S + C, E = i - p / 2, D = v, O = Math.atan2(v, y), k = f / 2, A = Math.atan2(k, g), j = A - O, M = O - A, N = Math.PI / 2 - O, P = Math.PI / 2 - A;
|
|
2305
2433
|
e.moveTo(n + E, r), e.lineTo(n + T, r + D), e.lineTo(n + S, r + D);
|
|
2306
|
-
let F =
|
|
2307
|
-
|
|
2434
|
+
let F = Y(e, n + S, r + D, m, a, N, M);
|
|
2435
|
+
Y(e, F.x, F.y, m, a, P, j), e.lineTo(n + w, r + D), e.closePath();
|
|
2308
2436
|
break;
|
|
2309
2437
|
}
|
|
2310
2438
|
case "curveddownarrow": {
|
|
2311
2439
|
let t = Math.min(i, a), l = i / 2, u = 5e4 * i / t, d = Math.min(u, Math.max(0, s ?? 5e4)), f = t * Math.min(1e5, Math.max(0, o ?? 25e3)) / 1e5, p = t * d / 1e5, m = l - (f + p) / 4, h = (2 * m) ** 2 - f ** 2, g = Math.sqrt(Math.max(0, h)) * a / (2 * m), _ = 1e5 * g / t, v = t * Math.min(_, Math.max(0, c ?? 25e3)) / 1e5, y = Math.sqrt(Math.max(0, a * a - v * v)) * m / a, b = m + f, x = m + y, S = b + y, C = (p - f) / 2, w = x - C, T = S + C, E = i - p / 2, D = a - v, O = Math.atan2(v, y), k = f / 2, A = Math.atan2(k, g), j = 3 * Math.PI / 2 + O;
|
|
2312
|
-
3 * Math.PI / 2 - A, A - Math.PI / 2, Math.PI / 2 - A, e.moveTo(n + E, r + a), e.lineTo(n + w, r + D), e.lineTo(n + x, r + D),
|
|
2440
|
+
3 * Math.PI / 2 - A, A - Math.PI / 2, Math.PI / 2 - A, e.moveTo(n + E, r + a), e.lineTo(n + w, r + D), e.lineTo(n + x, r + D), Y(e, n + x, r + D, m, a, j, -O), e.lineTo(n + b, r), Y(e, n + b, r, m, a, 3 * Math.PI / 2, O), e.lineTo(n + T, r + D), e.closePath();
|
|
2313
2441
|
break;
|
|
2314
2442
|
}
|
|
2315
2443
|
case "stripedrightarrow": {
|
|
@@ -2376,7 +2504,7 @@ function de(e, t, n, r, i, a, o = null, s = null, c = null, l = null) {
|
|
|
2376
2504
|
break;
|
|
2377
2505
|
}
|
|
2378
2506
|
}
|
|
2379
|
-
var
|
|
2507
|
+
var Ee = {
|
|
2380
2508
|
accentbordercallout1: {
|
|
2381
2509
|
adj: [
|
|
2382
2510
|
["adj1", "val 18750"],
|
|
@@ -24239,8 +24367,8 @@ var fe = {
|
|
|
24239
24367
|
]
|
|
24240
24368
|
}]
|
|
24241
24369
|
}
|
|
24242
|
-
},
|
|
24243
|
-
function
|
|
24370
|
+
}, X = 216e5, De = Math.PI * 2 / X;
|
|
24371
|
+
function Oe(e, t, n) {
|
|
24244
24372
|
let { w: r, h: i, adj: a } = e, o = Math.min(r, i), s = Math.max(r, i), c = Object.create(null);
|
|
24245
24373
|
Object.assign(c, {
|
|
24246
24374
|
w: r,
|
|
@@ -24285,14 +24413,14 @@ function he(e, t, n) {
|
|
|
24285
24413
|
lsd8: s / 8,
|
|
24286
24414
|
lsd16: s / 16,
|
|
24287
24415
|
lsd32: s / 32,
|
|
24288
|
-
cd:
|
|
24289
|
-
cd2:
|
|
24290
|
-
cd4:
|
|
24291
|
-
cd8:
|
|
24292
|
-
"3cd4": 3 *
|
|
24293
|
-
"3cd8": 3 *
|
|
24294
|
-
"5cd8": 5 *
|
|
24295
|
-
"7cd8": 7 *
|
|
24416
|
+
cd: X,
|
|
24417
|
+
cd2: X / 2,
|
|
24418
|
+
cd4: X / 4,
|
|
24419
|
+
cd8: X / 8,
|
|
24420
|
+
"3cd4": 3 * X / 4,
|
|
24421
|
+
"3cd8": 3 * X / 8,
|
|
24422
|
+
"5cd8": 5 * X / 8,
|
|
24423
|
+
"7cd8": 7 * X / 8
|
|
24296
24424
|
}), t.forEach(([e, t], n) => {
|
|
24297
24425
|
let r = a[n];
|
|
24298
24426
|
c[e] = typeof r == "number" ? r : u(t), e === "adj" && (c.adj1 = c.adj), e === "adj1" && (c.adj = c.adj1);
|
|
@@ -24329,10 +24457,10 @@ function he(e, t, n) {
|
|
|
24329
24457
|
case "pin": return t[1] < t[0] ? t[0] : t[1] > t[2] ? t[2] : t[1];
|
|
24330
24458
|
case "sqrt": return Math.sqrt(Math.max(0, t[0]));
|
|
24331
24459
|
case "mod": return Math.sqrt(t[0] * t[0] + t[1] * t[1] + t[2] * t[2]);
|
|
24332
|
-
case "sin": return t[0] * Math.sin(t[1] *
|
|
24333
|
-
case "cos": return t[0] * Math.cos(t[1] *
|
|
24334
|
-
case "tan": return t[0] * Math.tan(t[1] *
|
|
24335
|
-
case "at2": return Math.atan2(t[1], t[0]) /
|
|
24460
|
+
case "sin": return t[0] * Math.sin(t[1] * De);
|
|
24461
|
+
case "cos": return t[0] * Math.cos(t[1] * De);
|
|
24462
|
+
case "tan": return t[0] * Math.tan(t[1] * De);
|
|
24463
|
+
case "at2": return Math.atan2(t[1], t[0]) / De;
|
|
24336
24464
|
case "cat2": return t[0] * Math.cos(Math.atan2(t[2], t[1]));
|
|
24337
24465
|
case "sat2": return t[0] * Math.sin(Math.atan2(t[2], t[1]));
|
|
24338
24466
|
default: throw Error(`preset-shape: unknown operator "${e}" in "${n}"`);
|
|
@@ -24341,8 +24469,8 @@ function he(e, t, n) {
|
|
|
24341
24469
|
}
|
|
24342
24470
|
//#endregion
|
|
24343
24471
|
//#region packages/core/src/shape/preset-geometry/path-executor.ts
|
|
24344
|
-
var
|
|
24345
|
-
function
|
|
24472
|
+
var ke = Math.PI * 2 / 216e5;
|
|
24473
|
+
function Ae(e, t, n, r, i, a, o) {
|
|
24346
24474
|
let s = t.w == null ? 1 : a / t.w, c = t.h == null ? 1 : o / t.h, l = (e) => r + e * s, u = (e) => i + e * c, d = 0, f = 0;
|
|
24347
24475
|
for (let r of t.cmds) switch (r[0]) {
|
|
24348
24476
|
case "m": {
|
|
@@ -24366,7 +24494,7 @@ function _e(e, t, n, r, i, a, o) {
|
|
|
24366
24494
|
break;
|
|
24367
24495
|
}
|
|
24368
24496
|
case "a": {
|
|
24369
|
-
let t = n.resolve(r[1]), i = n.resolve(r[2]), a = t * s, o = i * c, l = n.resolve(r[3]) *
|
|
24497
|
+
let t = n.resolve(r[1]), i = n.resolve(r[2]), a = t * s, o = i * c, l = n.resolve(r[3]) * ke, u = n.resolve(r[4]) * ke, p = Math.PI * 2, m = (e) => Math.atan2(t * Math.sin(e), i * Math.cos(e)), h = m(l), g = Math.trunc(u / p), _ = u - g * p, v = m(l + _) - h;
|
|
24370
24498
|
_ > 0 && v < 0 ? v += p : _ < 0 && v > 0 && (v -= p);
|
|
24371
24499
|
let y = h + v + g * p, b = d - a * Math.cos(h), x = f - o * Math.sin(h);
|
|
24372
24500
|
Math.abs(a) > 1e-6 && Math.abs(o) > 1e-6 && (e.ellipse(b, x, Math.abs(a), Math.abs(o), 0, h, y, u < 0), d = b + a * Math.cos(y), f = x + o * Math.sin(y));
|
|
@@ -24379,26 +24507,26 @@ function _e(e, t, n, r, i, a, o) {
|
|
|
24379
24507
|
}
|
|
24380
24508
|
//#endregion
|
|
24381
24509
|
//#region packages/core/src/shape/preset-geometry/index.ts
|
|
24382
|
-
var
|
|
24383
|
-
function
|
|
24384
|
-
return e.toLowerCase() in
|
|
24510
|
+
var Z = Ee;
|
|
24511
|
+
function je(e) {
|
|
24512
|
+
return e.toLowerCase() in Z;
|
|
24385
24513
|
}
|
|
24386
|
-
function
|
|
24387
|
-
let s =
|
|
24514
|
+
function Me(e, t, n, r, i, a, o = []) {
|
|
24515
|
+
let s = Z[t.toLowerCase()];
|
|
24388
24516
|
if (!s) return !1;
|
|
24389
|
-
let c =
|
|
24517
|
+
let c = Oe({
|
|
24390
24518
|
w: i,
|
|
24391
24519
|
h: a,
|
|
24392
24520
|
adj: o
|
|
24393
24521
|
}, s.adj, s.gd);
|
|
24394
|
-
for (let t of s.paths)
|
|
24522
|
+
for (let t of s.paths) Ae(e, t, c, n, r, i, a);
|
|
24395
24523
|
return !0;
|
|
24396
24524
|
}
|
|
24397
|
-
var
|
|
24525
|
+
var Ne = {
|
|
24398
24526
|
wedgeroundrectcallout: "roundrect",
|
|
24399
24527
|
wedgeellipsecallout: "ellipse",
|
|
24400
24528
|
wedgerectcallout: null
|
|
24401
|
-
},
|
|
24529
|
+
}, Pe = {
|
|
24402
24530
|
adj: [],
|
|
24403
24531
|
gd: [],
|
|
24404
24532
|
paths: [{
|
|
@@ -24432,43 +24560,43 @@ var xe = {
|
|
|
24432
24560
|
]
|
|
24433
24561
|
}]
|
|
24434
24562
|
};
|
|
24435
|
-
function
|
|
24563
|
+
function Fe(e, t, n) {
|
|
24436
24564
|
let r = e[n];
|
|
24437
24565
|
if (typeof r == "number") return r;
|
|
24438
24566
|
let i = t.adj[n];
|
|
24439
24567
|
return i && Number(i[1].replace(/^val\s+/, "")) || 0;
|
|
24440
24568
|
}
|
|
24441
|
-
function
|
|
24442
|
-
let u = t.toLowerCase(), d =
|
|
24569
|
+
function Ie(e, t, n, r, i, a, o, s, c, l) {
|
|
24570
|
+
let u = t.toLowerCase(), d = Z[u];
|
|
24443
24571
|
if (!d) return !1;
|
|
24444
|
-
if (u in
|
|
24445
|
-
let e =
|
|
24572
|
+
if (u in Ne) {
|
|
24573
|
+
let e = Fe(o, d, 0), t = Fe(o, d, 1), n = i / 2 + i * e / 1e5, r = a / 2 + a * t / 1e5;
|
|
24446
24574
|
if (n >= 0 && n <= i && r >= 0 && r <= a) {
|
|
24447
|
-
let e =
|
|
24448
|
-
e === "roundrect" ? (d =
|
|
24575
|
+
let e = Ne[u];
|
|
24576
|
+
e === "roundrect" ? (d = Z.roundrect, o = [Fe(o, Z[u], 2)]) : e && Z[e] ? (d = Z[e], o = []) : (d = Pe, o = []);
|
|
24449
24577
|
}
|
|
24450
24578
|
}
|
|
24451
|
-
let f =
|
|
24579
|
+
let f = Oe({
|
|
24452
24580
|
w: i,
|
|
24453
24581
|
h: a,
|
|
24454
24582
|
adj: o
|
|
24455
24583
|
}, d.adj, d.gd), p = !1;
|
|
24456
24584
|
for (let t of d.paths) {
|
|
24457
|
-
e.beginPath(),
|
|
24585
|
+
e.beginPath(), Ae(e, t, f, n, r, i, a);
|
|
24458
24586
|
let o = t.fill;
|
|
24459
24587
|
if (o !== "none" && s != null) {
|
|
24460
24588
|
e.save(), e.fillStyle = s, e.fill();
|
|
24461
|
-
let t =
|
|
24589
|
+
let t = Re(o);
|
|
24462
24590
|
t && (e.fillStyle = t, e.fill()), e.restore(), p ||= (l(), !0);
|
|
24463
24591
|
}
|
|
24464
24592
|
t.stroke && c && c();
|
|
24465
24593
|
}
|
|
24466
24594
|
return !0;
|
|
24467
24595
|
}
|
|
24468
|
-
function
|
|
24469
|
-
let o =
|
|
24596
|
+
function Le(e, t, n, r, i, a) {
|
|
24597
|
+
let o = Z[e.toLowerCase()];
|
|
24470
24598
|
if (!o || o.paths.length === 0) return null;
|
|
24471
|
-
let s = o.paths[0], c =
|
|
24599
|
+
let s = o.paths[0], c = Oe({
|
|
24472
24600
|
w: r,
|
|
24473
24601
|
h: i,
|
|
24474
24602
|
adj: a
|
|
@@ -24502,7 +24630,7 @@ function Te(e, t, n, r, i, a) {
|
|
|
24502
24630
|
}
|
|
24503
24631
|
};
|
|
24504
24632
|
}
|
|
24505
|
-
function
|
|
24633
|
+
function Re(e) {
|
|
24506
24634
|
switch (e) {
|
|
24507
24635
|
case "lighten": return "rgba(255,255,255,0.30)";
|
|
24508
24636
|
case "lightenLess": return "rgba(255,255,255,0.15)";
|
|
@@ -24513,10 +24641,10 @@ function Ee(e) {
|
|
|
24513
24641
|
}
|
|
24514
24642
|
//#endregion
|
|
24515
24643
|
//#region packages/core/src/shape/effects.ts
|
|
24516
|
-
function
|
|
24644
|
+
function ze(e, t) {
|
|
24517
24645
|
return e * t;
|
|
24518
24646
|
}
|
|
24519
|
-
function
|
|
24647
|
+
function Be(e, t) {
|
|
24520
24648
|
let n = Math.max(1, Math.ceil(e)), r = Math.max(1, Math.ceil(t));
|
|
24521
24649
|
if (typeof OffscreenCanvas < "u") return new OffscreenCanvas(n, r);
|
|
24522
24650
|
if (typeof document < "u") {
|
|
@@ -24525,29 +24653,29 @@ function Oe(e, t) {
|
|
|
24525
24653
|
}
|
|
24526
24654
|
return null;
|
|
24527
24655
|
}
|
|
24528
|
-
function
|
|
24656
|
+
function Ve(e) {
|
|
24529
24657
|
return e.getContext("2d") ?? null;
|
|
24530
24658
|
}
|
|
24531
|
-
function
|
|
24532
|
-
let s =
|
|
24659
|
+
function He(e, t, n, r, i, a, o) {
|
|
24660
|
+
let s = Be(a, o);
|
|
24533
24661
|
if (!s) return;
|
|
24534
|
-
let c =
|
|
24662
|
+
let c = Ve(s);
|
|
24535
24663
|
if (!c) return;
|
|
24536
|
-
let l =
|
|
24537
|
-
c.save(), c.fillStyle =
|
|
24664
|
+
let l = ze(r.blur, i), u = ze(r.dist, i), d = r.dir * Math.PI / 180, f = Math.cos(d) * u, p = Math.sin(d) * u;
|
|
24665
|
+
c.save(), c.fillStyle = k(r.color, r.alpha), t(c), c.restore(), c.save(), c.globalCompositeOperation = "destination-out", c.filter = l > 0 ? `blur(${l}px)` : "none", c.translate(f, p), c.fillStyle = "#000", t(c), c.restore(), c.save(), c.globalCompositeOperation = "destination-in", c.filter = "none", c.fillStyle = "#000", t(c), c.restore(), e.save(), e.drawImage(s, 0, 0), e.restore();
|
|
24538
24666
|
}
|
|
24539
|
-
function
|
|
24540
|
-
let c =
|
|
24667
|
+
function Ue(e, t, n, r, i, a, o, s) {
|
|
24668
|
+
let c = ze(r.radius, i);
|
|
24541
24669
|
if (c <= 0) {
|
|
24542
24670
|
t(e);
|
|
24543
24671
|
return;
|
|
24544
24672
|
}
|
|
24545
|
-
let l =
|
|
24673
|
+
let l = Be(a, o);
|
|
24546
24674
|
if (!l) {
|
|
24547
24675
|
t(e);
|
|
24548
24676
|
return;
|
|
24549
24677
|
}
|
|
24550
|
-
let u =
|
|
24678
|
+
let u = Ve(l);
|
|
24551
24679
|
if (!u) {
|
|
24552
24680
|
t(e);
|
|
24553
24681
|
return;
|
|
@@ -24555,24 +24683,24 @@ function je(e, t, n, r, i, a, o, s) {
|
|
|
24555
24683
|
let d = s ?? t;
|
|
24556
24684
|
t(u), u.save(), u.globalCompositeOperation = "destination-in", u.filter = `blur(${c}px)`, u.fillStyle = "#000", d(u), u.restore(), e.save(), e.drawImage(l, 0, 0), e.restore();
|
|
24557
24685
|
}
|
|
24558
|
-
function
|
|
24559
|
-
let s =
|
|
24686
|
+
function We(e, t, n, r, i, a, o) {
|
|
24687
|
+
let s = Be(a, o);
|
|
24560
24688
|
if (!s) return;
|
|
24561
|
-
let c =
|
|
24689
|
+
let c = Ve(s);
|
|
24562
24690
|
if (!c) return;
|
|
24563
|
-
let l =
|
|
24691
|
+
let l = ze(r.blur, i);
|
|
24564
24692
|
c.save(), l > 0 && (c.filter = `blur(${l}px)`), t(c), c.restore(), c.save(), c.globalCompositeOperation = "destination-in";
|
|
24565
|
-
let u = n.y, d = n.y + n.h, f = c.createLinearGradient(0, d, 0, u), p =
|
|
24693
|
+
let u = n.y, d = n.y + n.h, f = c.createLinearGradient(0, d, 0, u), p = Ge(r.stPos), m = Ge(r.endPos);
|
|
24566
24694
|
f.addColorStop(0, `rgba(0,0,0,${r.stA})`), p > 0 && f.addColorStop(p, `rgba(0,0,0,${r.stA})`), m < 1 && m > p && f.addColorStop(m, `rgba(0,0,0,${r.endA})`), f.addColorStop(1, `rgba(0,0,0,${r.endA})`), c.fillStyle = f, c.fillRect(0, 0, a, o), c.restore();
|
|
24567
|
-
let h =
|
|
24695
|
+
let h = ze(r.dist, i), g = r.dir * Math.PI / 180, _ = Math.cos(g) * h, v = Math.sin(g) * h;
|
|
24568
24696
|
e.save(), e.translate(n.x + _, d + v), e.scale(r.sx, r.sy), e.translate(-n.x, -d), e.drawImage(s, 0, 0), e.restore();
|
|
24569
24697
|
}
|
|
24570
|
-
function
|
|
24698
|
+
function Ge(e) {
|
|
24571
24699
|
return e < 0 ? 0 : e > 1 ? 1 : e;
|
|
24572
24700
|
}
|
|
24573
24701
|
//#endregion
|
|
24574
24702
|
//#region packages/core/src/shape/scene3d-camera.ts
|
|
24575
|
-
var
|
|
24703
|
+
var Ke = 26, qe = {
|
|
24576
24704
|
orthographicFront: {
|
|
24577
24705
|
kind: "orthographic",
|
|
24578
24706
|
baseLat: 0,
|
|
@@ -24585,52 +24713,52 @@ var Pe = 26, Fe = {
|
|
|
24585
24713
|
baseLat: 0,
|
|
24586
24714
|
baseLon: 0,
|
|
24587
24715
|
baseRev: 0,
|
|
24588
|
-
fovDeg:
|
|
24716
|
+
fovDeg: Ke
|
|
24589
24717
|
},
|
|
24590
24718
|
perspectiveRelaxed: {
|
|
24591
24719
|
kind: "perspective",
|
|
24592
24720
|
baseLat: 0,
|
|
24593
24721
|
baseLon: 0,
|
|
24594
24722
|
baseRev: 0,
|
|
24595
|
-
fovDeg:
|
|
24723
|
+
fovDeg: Ke
|
|
24596
24724
|
},
|
|
24597
24725
|
perspectiveRelaxedModerately: {
|
|
24598
24726
|
kind: "perspective",
|
|
24599
24727
|
baseLat: 0,
|
|
24600
24728
|
baseLon: 0,
|
|
24601
24729
|
baseRev: 0,
|
|
24602
|
-
fovDeg:
|
|
24730
|
+
fovDeg: Ke
|
|
24603
24731
|
},
|
|
24604
24732
|
perspectiveAbove: {
|
|
24605
24733
|
kind: "perspective",
|
|
24606
24734
|
baseLat: -20,
|
|
24607
24735
|
baseLon: 0,
|
|
24608
24736
|
baseRev: 0,
|
|
24609
|
-
fovDeg:
|
|
24737
|
+
fovDeg: Ke
|
|
24610
24738
|
},
|
|
24611
24739
|
perspectiveBelow: {
|
|
24612
24740
|
kind: "perspective",
|
|
24613
24741
|
baseLat: 20,
|
|
24614
24742
|
baseLon: 0,
|
|
24615
24743
|
baseRev: 0,
|
|
24616
|
-
fovDeg:
|
|
24744
|
+
fovDeg: Ke
|
|
24617
24745
|
},
|
|
24618
24746
|
perspectiveLeft: {
|
|
24619
24747
|
kind: "perspective",
|
|
24620
24748
|
baseLat: 0,
|
|
24621
24749
|
baseLon: -20,
|
|
24622
24750
|
baseRev: 0,
|
|
24623
|
-
fovDeg:
|
|
24751
|
+
fovDeg: Ke
|
|
24624
24752
|
},
|
|
24625
24753
|
perspectiveRight: {
|
|
24626
24754
|
kind: "perspective",
|
|
24627
24755
|
baseLat: 0,
|
|
24628
24756
|
baseLon: 20,
|
|
24629
24757
|
baseRev: 0,
|
|
24630
|
-
fovDeg:
|
|
24758
|
+
fovDeg: Ke
|
|
24631
24759
|
}
|
|
24632
24760
|
};
|
|
24633
|
-
function
|
|
24761
|
+
function Je(e, t) {
|
|
24634
24762
|
let n = Array(9).fill(0);
|
|
24635
24763
|
for (let r = 0; r < 3; r++) for (let i = 0; i < 3; i++) {
|
|
24636
24764
|
let a = 0;
|
|
@@ -24639,7 +24767,7 @@ function Ie(e, t) {
|
|
|
24639
24767
|
}
|
|
24640
24768
|
return n;
|
|
24641
24769
|
}
|
|
24642
|
-
function
|
|
24770
|
+
function Ye(e) {
|
|
24643
24771
|
let t = e * Math.PI / 180, n = Math.cos(t), r = Math.sin(t);
|
|
24644
24772
|
return [
|
|
24645
24773
|
1,
|
|
@@ -24653,7 +24781,7 @@ function Le(e) {
|
|
|
24653
24781
|
n
|
|
24654
24782
|
];
|
|
24655
24783
|
}
|
|
24656
|
-
function
|
|
24784
|
+
function Xe(e) {
|
|
24657
24785
|
let t = e * Math.PI / 180, n = Math.cos(t), r = Math.sin(t);
|
|
24658
24786
|
return [
|
|
24659
24787
|
n,
|
|
@@ -24667,7 +24795,7 @@ function Re(e) {
|
|
|
24667
24795
|
n
|
|
24668
24796
|
];
|
|
24669
24797
|
}
|
|
24670
|
-
function
|
|
24798
|
+
function Ze(e) {
|
|
24671
24799
|
let t = e * Math.PI / 180, n = Math.cos(t), r = Math.sin(t);
|
|
24672
24800
|
return [
|
|
24673
24801
|
n,
|
|
@@ -24681,22 +24809,22 @@ function ze(e) {
|
|
|
24681
24809
|
1
|
|
24682
24810
|
];
|
|
24683
24811
|
}
|
|
24684
|
-
function
|
|
24812
|
+
function Qe(e, t, n, r) {
|
|
24685
24813
|
return [
|
|
24686
24814
|
e[0] * t + e[1] * n + e[2] * r,
|
|
24687
24815
|
e[3] * t + e[4] * n + e[5] * r,
|
|
24688
24816
|
e[6] * t + e[7] * n + e[8] * r
|
|
24689
24817
|
];
|
|
24690
24818
|
}
|
|
24691
|
-
function
|
|
24819
|
+
function $e(e, t) {
|
|
24692
24820
|
let n = t ? t.lat : e.baseLat, r = t ? t.lon : e.baseLon;
|
|
24693
|
-
return
|
|
24821
|
+
return Je(Ze(-(t ? t.rev : e.baseRev)), Je(Ye(-n), Xe(-r)));
|
|
24694
24822
|
}
|
|
24695
|
-
function
|
|
24696
|
-
return
|
|
24823
|
+
function et(e) {
|
|
24824
|
+
return qe[e] ?? qe.orthographicFront;
|
|
24697
24825
|
}
|
|
24698
|
-
function
|
|
24699
|
-
let r =
|
|
24826
|
+
function tt(e, t, n) {
|
|
24827
|
+
let r = et(e.prst), i = $e(r, e.rot);
|
|
24700
24828
|
if (t <= 0 || n <= 0) return {
|
|
24701
24829
|
corners: [
|
|
24702
24830
|
{
|
|
@@ -24728,11 +24856,11 @@ function Ue(e, t, n) {
|
|
|
24728
24856
|
if (r.kind === "perspective") {
|
|
24729
24857
|
let t = e.fov ?? r.fovDeg, n = Math.max(1, Math.min(179, t)) * Math.PI / 180, a = l / Math.tan(n / 2);
|
|
24730
24858
|
u = s.map(([e, t]) => {
|
|
24731
|
-
let [n, r, o] =
|
|
24859
|
+
let [n, r, o] = Qe(i, e, t, 0), s = a - o, c = a / (Math.abs(s) < 1e-6 ? 1e-6 * Math.sign(s || 1) : s);
|
|
24732
24860
|
return [n * c, r * c];
|
|
24733
24861
|
});
|
|
24734
24862
|
} else u = s.map(([e, t]) => {
|
|
24735
|
-
let [n, r] =
|
|
24863
|
+
let [n, r] = Qe(i, e, t, 0);
|
|
24736
24864
|
return [n, r];
|
|
24737
24865
|
});
|
|
24738
24866
|
u = u.map(([e, t]) => [e * c, t * c]);
|
|
@@ -24757,13 +24885,32 @@ function Ue(e, t, n) {
|
|
|
24757
24885
|
isIdentity: E
|
|
24758
24886
|
};
|
|
24759
24887
|
}
|
|
24760
|
-
function
|
|
24761
|
-
let { isIdentity: t } =
|
|
24888
|
+
function nt(e) {
|
|
24889
|
+
let { isIdentity: t } = tt(e, 1e3, 1e3);
|
|
24762
24890
|
return !t;
|
|
24763
24891
|
}
|
|
24892
|
+
function rt(e, t, n, r) {
|
|
24893
|
+
let i = et(e.prst), a = $e(i, e.rot);
|
|
24894
|
+
if (t <= 0 || n <= 0 || r === 0) return {
|
|
24895
|
+
x: 0,
|
|
24896
|
+
y: 0
|
|
24897
|
+
};
|
|
24898
|
+
let o = t / 2, s = n / 2, c = Math.max(o, s), l = e.zoom ?? 1, u = (t) => {
|
|
24899
|
+
let [n, r, o] = Qe(a, 0, 0, t);
|
|
24900
|
+
if (i.kind === "perspective") {
|
|
24901
|
+
let t = e.fov ?? i.fovDeg, a = Math.max(1, Math.min(179, t)) * Math.PI / 180, s = c / Math.tan(a / 2), u = s - o, d = s / (Math.abs(u) < 1e-6 ? 1e-6 * Math.sign(u || 1) : u);
|
|
24902
|
+
return [n * d * l, r * d * l];
|
|
24903
|
+
}
|
|
24904
|
+
return [n * l, r * l];
|
|
24905
|
+
}, [d, f] = u(0), [p, m] = u(-r);
|
|
24906
|
+
return {
|
|
24907
|
+
x: p - d,
|
|
24908
|
+
y: m - f
|
|
24909
|
+
};
|
|
24910
|
+
}
|
|
24764
24911
|
//#endregion
|
|
24765
24912
|
//#region packages/core/src/shape/scene3d-draw.ts
|
|
24766
|
-
function
|
|
24913
|
+
function it(e, t, n, r) {
|
|
24767
24914
|
let i = e.x, a = e.y, o = t.x, s = t.y, c = n.x, l = n.y, u = r.x, d = r.y, f = o - c, p = u - c, m = i - o + c - u, h = s - l, g = d - l, _ = a - s + l - d, v, y;
|
|
24768
24915
|
if (Math.abs(m) < 1e-12 && Math.abs(_) < 1e-12) v = 0, y = 0;
|
|
24769
24916
|
else {
|
|
@@ -24783,15 +24930,15 @@ function Ge(e, t, n, r) {
|
|
|
24783
24930
|
1
|
|
24784
24931
|
];
|
|
24785
24932
|
}
|
|
24786
|
-
function
|
|
24933
|
+
function at(e, t, n) {
|
|
24787
24934
|
let r = e[6] * t + e[7] * n + e[8];
|
|
24788
24935
|
return {
|
|
24789
24936
|
x: (e[0] * t + e[1] * n + e[2]) / r,
|
|
24790
24937
|
y: (e[3] * t + e[4] * n + e[5]) / r
|
|
24791
24938
|
};
|
|
24792
24939
|
}
|
|
24793
|
-
var
|
|
24794
|
-
function
|
|
24940
|
+
var ot = 1;
|
|
24941
|
+
function st(e, t) {
|
|
24795
24942
|
let [n, r, i, a, o, s] = e, [c, l, u, d, f, p] = t;
|
|
24796
24943
|
return [
|
|
24797
24944
|
n * c + i * l,
|
|
@@ -24802,13 +24949,13 @@ function Je(e, t) {
|
|
|
24802
24949
|
r * f + a * p + s
|
|
24803
24950
|
];
|
|
24804
24951
|
}
|
|
24805
|
-
function
|
|
24952
|
+
function ct(e, t, n, r, i, a, o, s, c, l, u, d, f) {
|
|
24806
24953
|
let p = c - o, m = l - s;
|
|
24807
24954
|
if (p <= 0 || m <= 0) return;
|
|
24808
|
-
let h = (d.x - u.x) / p, g = (d.y - u.y) / p, _ = (f.x - u.x) / m, v = (f.y - u.y) / m, y = (Math.hypot(d.x - u.x, d.y - u.y) || 1) * a, b = (Math.hypot(f.x - u.x, f.y - u.y) || 1) * a, x =
|
|
24955
|
+
let h = (d.x - u.x) / p, g = (d.y - u.y) / p, _ = (f.x - u.x) / m, v = (f.y - u.y) / m, y = (Math.hypot(d.x - u.x, d.y - u.y) || 1) * a, b = (Math.hypot(f.x - u.x, f.y - u.y) || 1) * a, x = ot * p / y, S = ot * m / b, C = Math.max(0, o - x), w = Math.max(0, s - S), T = Math.min(n, c + x), E = Math.min(r, l + S), D = T - C, O = E - w;
|
|
24809
24956
|
if (D <= 0 || O <= 0) return;
|
|
24810
24957
|
e.save();
|
|
24811
|
-
let [k, A, j, M, N, P] =
|
|
24958
|
+
let [k, A, j, M, N, P] = st(i, [
|
|
24812
24959
|
h,
|
|
24813
24960
|
g,
|
|
24814
24961
|
_,
|
|
@@ -24818,22 +24965,22 @@ function Ye(e, t, n, r, i, a, o, s, c, l, u, d, f) {
|
|
|
24818
24965
|
]);
|
|
24819
24966
|
e.setTransform(k, A, j, M, N, P), e.drawImage(t, C, w, D, O, C, w, D, O), e.restore();
|
|
24820
24967
|
}
|
|
24821
|
-
function
|
|
24822
|
-
let p =
|
|
24968
|
+
function lt(e, t, n, r, i, a, o, s, c, l, u, d, f) {
|
|
24969
|
+
let p = at(o, s, c), m = at(o, l, c), h = at(o, s, u), g = at(o, l, u), _ = (s + l) / 2, v = (c + u) / 2, y = at(o, _, v), b = {
|
|
24823
24970
|
x: (p.x + m.x + h.x + g.x) / 4,
|
|
24824
24971
|
y: (p.y + m.y + h.y + g.y) / 4
|
|
24825
|
-
}, x =
|
|
24972
|
+
}, x = dt(i), S = Math.hypot(y.x - b.x, y.y - b.y) * x;
|
|
24826
24973
|
if (f <= 0 || S <= d) {
|
|
24827
|
-
|
|
24974
|
+
ct(e, t, n, r, i, a, s * n, c * r, l * n, u * r, p, m, h);
|
|
24828
24975
|
return;
|
|
24829
24976
|
}
|
|
24830
|
-
l - s >= u - c ? (
|
|
24977
|
+
l - s >= u - c ? (lt(e, t, n, r, i, a, o, s, c, _, u, d, f - 1), lt(e, t, n, r, i, a, o, _, c, l, u, d, f - 1)) : (lt(e, t, n, r, i, a, o, s, c, l, v, d, f - 1), lt(e, t, n, r, i, a, o, s, v, l, u, d, f - 1));
|
|
24831
24978
|
}
|
|
24832
|
-
function
|
|
24979
|
+
function ut(e, t, n, r, i, a = .5) {
|
|
24833
24980
|
if (n <= 0 || r <= 0) return;
|
|
24834
24981
|
let [o, s, c, l] = i;
|
|
24835
24982
|
if (Math.abs(o.x * s.y - s.x * o.y + s.x * c.y - c.x * s.y + c.x * l.y - l.x * c.y + l.x * o.y - o.x * l.y) / 2 < 1e-6) return;
|
|
24836
|
-
let u =
|
|
24983
|
+
let u = it(i[0], i[1], i[2], i[3]);
|
|
24837
24984
|
if (!u) return;
|
|
24838
24985
|
let d = t.getTransform(), f = [
|
|
24839
24986
|
d.a,
|
|
@@ -24842,18 +24989,33 @@ function Ze(e, t, n, r, i, a = .5) {
|
|
|
24842
24989
|
d.d,
|
|
24843
24990
|
d.e,
|
|
24844
24991
|
d.f
|
|
24845
|
-
], p =
|
|
24846
|
-
|
|
24992
|
+
], p = dt(f);
|
|
24993
|
+
gt(e, t, n, r, i, f, p, u, a, 14) || (mt(), t.save(), t.beginPath(), t.moveTo(i[0].x, i[0].y), t.lineTo(i[1].x, i[1].y), t.lineTo(i[2].x, i[2].y), t.lineTo(i[3].x, i[3].y), t.closePath(), t.clip(), lt(t, e, n, r, f, p, u, 0, 0, 1, 1, a, 14), t.restore());
|
|
24847
24994
|
}
|
|
24848
|
-
function
|
|
24995
|
+
function dt(e) {
|
|
24849
24996
|
return Math.sqrt(Math.abs(e[0] * e[3] - e[1] * e[2])) || 1;
|
|
24850
24997
|
}
|
|
24851
|
-
|
|
24852
|
-
|
|
24853
|
-
|
|
24998
|
+
function ft(e, t, n) {
|
|
24999
|
+
let r = it(e[0], e[1], e[2], e[3]);
|
|
25000
|
+
if (!r) return null;
|
|
25001
|
+
let i = [
|
|
25002
|
+
[-t, -n],
|
|
25003
|
+
[1 + t, -n],
|
|
25004
|
+
[1 + t, 1 + n],
|
|
25005
|
+
[-t, 1 + n]
|
|
25006
|
+
], a = [];
|
|
25007
|
+
for (let [e, t] of i) {
|
|
25008
|
+
if (!(r[6] * e + r[7] * t + r[8] > 1e-9)) return null;
|
|
25009
|
+
a.push(at(r, e, t));
|
|
25010
|
+
}
|
|
25011
|
+
return a;
|
|
25012
|
+
}
|
|
25013
|
+
var pt = !1;
|
|
25014
|
+
function mt() {
|
|
25015
|
+
pt || (pt = !0, typeof console < "u" && typeof console.warn == "function" && console.warn("[ooxml] scene3d: no offscreen canvas available — using the direct warp fallback (per-cell bleed only, no supersample). Textured-source seams may be faintly visible; the silhouette and geometry are unaffected."));
|
|
24854
25016
|
}
|
|
24855
|
-
var
|
|
24856
|
-
function
|
|
25017
|
+
var ht = 2;
|
|
25018
|
+
function gt(e, t, n, r, i, a, o, s, c, l) {
|
|
24857
25019
|
let u = i.map((e) => ({
|
|
24858
25020
|
x: a[0] * e.x + a[2] * e.y + a[4],
|
|
24859
25021
|
y: a[1] * e.x + a[3] * e.y + a[5]
|
|
@@ -24862,25 +25024,337 @@ function nt(e, t, n, r, i, a, o, s, c, l) {
|
|
|
24862
25024
|
d = Math.floor(d) - 1, f = Math.floor(f) - 1, p = Math.ceil(p) + 1, m = Math.ceil(m) + 1;
|
|
24863
25025
|
let h = p - d, g = m - f;
|
|
24864
25026
|
if (h <= 0 || g <= 0) return !1;
|
|
24865
|
-
let _ =
|
|
24866
|
-
if (!_) return !1;
|
|
24867
|
-
let
|
|
24868
|
-
if (!
|
|
24869
|
-
let
|
|
24870
|
-
a[0] *
|
|
24871
|
-
a[1] *
|
|
24872
|
-
a[2] *
|
|
24873
|
-
a[3] *
|
|
24874
|
-
(a[4] - d) *
|
|
24875
|
-
(a[5] - f) *
|
|
25027
|
+
let _ = Math.max(1, Math.ceil(h * ht)), v = Math.max(1, Math.ceil(g * ht)), y = Be(_, v);
|
|
25028
|
+
if (!y || y.width !== _ || y.height !== v) return !1;
|
|
25029
|
+
let b = y.getContext("2d") ?? null;
|
|
25030
|
+
if (!b) return !1;
|
|
25031
|
+
let x = ht, S = [
|
|
25032
|
+
a[0] * x,
|
|
25033
|
+
a[1] * x,
|
|
25034
|
+
a[2] * x,
|
|
25035
|
+
a[3] * x,
|
|
25036
|
+
(a[4] - d) * x,
|
|
25037
|
+
(a[5] - f) * x
|
|
24876
25038
|
];
|
|
24877
|
-
|
|
24878
|
-
let
|
|
24879
|
-
return t.imageSmoothingEnabled = !0, t.imageSmoothingQuality = "high", t.drawImage(
|
|
25039
|
+
b.save(), b.setTransform(S[0], S[1], S[2], S[3], S[4], S[5]), b.beginPath(), b.moveTo(i[0].x, i[0].y), b.lineTo(i[1].x, i[1].y), b.lineTo(i[2].x, i[2].y), b.lineTo(i[3].x, i[3].y), b.closePath(), b.clip(), lt(b, e, n, r, S, o, s, 0, 0, 1, 1, c * x, l), b.restore(), t.save(), t.setTransform(1, 0, 0, 1, 0, 0);
|
|
25040
|
+
let C = t.imageSmoothingEnabled, w = t.imageSmoothingQuality;
|
|
25041
|
+
return t.imageSmoothingEnabled = !0, t.imageSmoothingQuality = "high", t.drawImage(y, 0, 0, h * x, g * x, d, f, h, g), t.imageSmoothingEnabled = C, t.imageSmoothingQuality = w, t.restore(), !0;
|
|
25042
|
+
}
|
|
25043
|
+
//#endregion
|
|
25044
|
+
//#region packages/core/src/shape/bevel-shading.ts
|
|
25045
|
+
function _t(e, t) {
|
|
25046
|
+
if (t <= 0) return () => 1;
|
|
25047
|
+
let n = (e) => Math.max(0, Math.min(1, e / t));
|
|
25048
|
+
switch (e) {
|
|
25049
|
+
case "hardEdge": {
|
|
25050
|
+
let e = Tt;
|
|
25051
|
+
return (t) => {
|
|
25052
|
+
let r = Math.min(1, n(t) / e);
|
|
25053
|
+
return r * r * (3 - 2 * r);
|
|
25054
|
+
};
|
|
25055
|
+
}
|
|
25056
|
+
case "angle":
|
|
25057
|
+
case "slope": return (e) => n(e);
|
|
25058
|
+
case "circle":
|
|
25059
|
+
case "convex":
|
|
25060
|
+
case "softRound": return (e) => {
|
|
25061
|
+
let t = 1 - n(e);
|
|
25062
|
+
return Math.sqrt(Math.max(0, 1 - t * t));
|
|
25063
|
+
};
|
|
25064
|
+
default: return (e) => {
|
|
25065
|
+
let t = n(e);
|
|
25066
|
+
return t * t * (3 - 2 * t);
|
|
25067
|
+
};
|
|
25068
|
+
}
|
|
25069
|
+
}
|
|
25070
|
+
function vt(e) {
|
|
25071
|
+
let t = e.length, n = new Float64Array(t);
|
|
25072
|
+
if (t === 0) return n;
|
|
25073
|
+
let r = new Int32Array(t), i = new Float64Array(t + 1), a = 0;
|
|
25074
|
+
r[0] = 0, i[0] = -Infinity, i[1] = Infinity;
|
|
25075
|
+
for (let n = 1; n < t; n++) {
|
|
25076
|
+
let t = (e[n] + n * n - (e[r[a]] + r[a] * r[a])) / (2 * n - 2 * r[a]);
|
|
25077
|
+
for (; t <= i[a];) a--, t = (e[n] + n * n - (e[r[a]] + r[a] * r[a])) / (2 * n - 2 * r[a]);
|
|
25078
|
+
a++, r[a] = n, i[a] = t, i[a + 1] = Infinity;
|
|
25079
|
+
}
|
|
25080
|
+
a = 0;
|
|
25081
|
+
for (let o = 0; o < t; o++) {
|
|
25082
|
+
for (; i[a + 1] < o;) a++;
|
|
25083
|
+
let t = o - r[a];
|
|
25084
|
+
n[o] = t * t + e[r[a]];
|
|
25085
|
+
}
|
|
25086
|
+
return n;
|
|
25087
|
+
}
|
|
25088
|
+
function yt(e, t = 3) {
|
|
25089
|
+
if (e <= 0) return Array(t).fill(1);
|
|
25090
|
+
let n = Math.sqrt(12 * e * e / t + 1), r = Math.floor(n);
|
|
25091
|
+
r % 2 == 0 && r--;
|
|
25092
|
+
let i = r + 2, a = (12 * e * e - t * r * r - 4 * t * r - 3 * t) / (-4 * r - 4), o = Math.round(a), s = [];
|
|
25093
|
+
for (let e = 0; e < t; e++) s.push(e < o ? r : i);
|
|
25094
|
+
return s;
|
|
25095
|
+
}
|
|
25096
|
+
function bt(e, t, n, r, i, a) {
|
|
25097
|
+
let o = 1 / (2 * i + 1);
|
|
25098
|
+
if (a) for (let a = 0; a < r; a++) {
|
|
25099
|
+
let r = a * n, s = 0;
|
|
25100
|
+
for (let t = 0; t <= i; t++) t < n && (s += e[r + t]);
|
|
25101
|
+
for (let a = 0; a < n; a++) {
|
|
25102
|
+
t[r + a] = s * o;
|
|
25103
|
+
let c = a + i + 1, l = a - i;
|
|
25104
|
+
c < n && (s += e[r + c]), l >= 0 && (s -= e[r + l]);
|
|
25105
|
+
}
|
|
25106
|
+
}
|
|
25107
|
+
else for (let a = 0; a < n; a++) {
|
|
25108
|
+
let s = 0;
|
|
25109
|
+
for (let t = 0; t <= i; t++) t < r && (s += e[t * n + a]);
|
|
25110
|
+
for (let c = 0; c < r; c++) {
|
|
25111
|
+
t[c * n + a] = s * o;
|
|
25112
|
+
let l = c + i + 1, u = c - i;
|
|
25113
|
+
l < r && (s += e[l * n + a]), u >= 0 && (s -= e[u * n + a]);
|
|
25114
|
+
}
|
|
25115
|
+
}
|
|
25116
|
+
}
|
|
25117
|
+
function xt(e, t, n, r) {
|
|
25118
|
+
let i = Float64Array.from(e);
|
|
25119
|
+
if (r <= 0 || t <= 0 || n <= 0) return i;
|
|
25120
|
+
let a = new Float64Array(t * n);
|
|
25121
|
+
for (let e of yt(r, 3)) {
|
|
25122
|
+
let r = Math.max(1, (e - 1) / 2);
|
|
25123
|
+
bt(i, a, t, n, r, !0), bt(a, i, t, n, r, !1);
|
|
25124
|
+
}
|
|
25125
|
+
return i;
|
|
25126
|
+
}
|
|
25127
|
+
function St(e, t, n, r = 128) {
|
|
25128
|
+
let i = new Float64Array(t * n);
|
|
25129
|
+
for (let a = 0; a < t * n; a++) i[a] = (e[a] ?? 0) >= r ? 0x56bc75e2d63100000 : 0;
|
|
25130
|
+
let a = new Float64Array(n);
|
|
25131
|
+
for (let e = 0; e < t; e++) {
|
|
25132
|
+
for (let r = 0; r < n; r++) a[r] = i[r * t + e];
|
|
25133
|
+
let r = vt(a);
|
|
25134
|
+
for (let a = 0; a < n; a++) i[a * t + e] = r[a];
|
|
25135
|
+
}
|
|
25136
|
+
let o = new Float64Array(t);
|
|
25137
|
+
for (let e = 0; e < n; e++) {
|
|
25138
|
+
for (let n = 0; n < t; n++) o[n] = i[e * t + n];
|
|
25139
|
+
let n = vt(o);
|
|
25140
|
+
for (let r = 0; r < t; r++) i[e * t + r] = n[r];
|
|
25141
|
+
}
|
|
25142
|
+
for (let e = 0; e < n; e++) for (let r = 0; r < t; r++) {
|
|
25143
|
+
let a = e * t + r;
|
|
25144
|
+
if (i[a] === 0) continue;
|
|
25145
|
+
let o = (e + 1) * (e + 1), s = (n - e) * (n - e), c = (r + 1) * (r + 1), l = (t - r) * (t - r), u = Math.min(o, s, c, l);
|
|
25146
|
+
u < i[a] && (i[a] = u);
|
|
25147
|
+
}
|
|
25148
|
+
for (let e = 0; e < t * n; e++) i[e] = Math.sqrt(i[e]);
|
|
25149
|
+
return i;
|
|
25150
|
+
}
|
|
25151
|
+
var Ct = .25, wt = .35, Tt = .5;
|
|
25152
|
+
function Et(e, t, n, r, i, a) {
|
|
25153
|
+
let o = new Float32Array(t * n * 3), s = new Uint8Array(t * n), c = new Float32Array(t * n);
|
|
25154
|
+
if (t <= 0 || n <= 0) return {
|
|
25155
|
+
normals: o,
|
|
25156
|
+
bandMask: s,
|
|
25157
|
+
bandWeight: c
|
|
25158
|
+
};
|
|
25159
|
+
let l = St(e, t, n), u = _t(i, r), d = (n, r) => (e[r * t + n] ?? 0) >= 128, f = (r > 0 ? a / r : 0) * r, p = xt(l, t, n, Math.max(1, r * Ct)), m = (e) => {
|
|
25160
|
+
let t = u(Math.max(0, e - .5));
|
|
25161
|
+
return u(e + .5) - t;
|
|
25162
|
+
};
|
|
25163
|
+
for (let e = 0; e < n; e++) for (let i = 0; i < t; i++) {
|
|
25164
|
+
let a = e * t + i;
|
|
25165
|
+
if (!d(i, e)) {
|
|
25166
|
+
o[a * 3 + 2] = 1;
|
|
25167
|
+
continue;
|
|
25168
|
+
}
|
|
25169
|
+
let u = l[a], h = u > 0 && u < r;
|
|
25170
|
+
if (s[a] = +!!h, !h) {
|
|
25171
|
+
o[a * 3 + 2] = 1;
|
|
25172
|
+
continue;
|
|
25173
|
+
}
|
|
25174
|
+
let g = u / r, _ = 1 - wt, v = 1;
|
|
25175
|
+
if (g > _) {
|
|
25176
|
+
let e = Math.min(1, (g - _) / wt);
|
|
25177
|
+
v = 1 - e * e * (3 - 2 * e);
|
|
25178
|
+
}
|
|
25179
|
+
c[a] = v;
|
|
25180
|
+
let y = i > 0 ? i - 1 : i, b = i < t - 1 ? i + 1 : i, x = e > 0 ? e - 1 : e, S = e < n - 1 ? e + 1 : e, C = (p[e * t + b] - p[e * t + y]) / (b - y || 1), w = (p[S * t + i] - p[x * t + i]) / (S - x || 1), T = Math.hypot(C, w), E = 0, D = 0;
|
|
25181
|
+
T > 1e-9 && (E = -C / T, D = -w / T);
|
|
25182
|
+
let O = m(u) * f, k = O * E, A = O * D, j = 1, M = Math.hypot(k, A, j) || 1;
|
|
25183
|
+
k /= M, A /= M, j /= M, o[a * 3] = k, o[a * 3 + 1] = A, o[a * 3 + 2] = j;
|
|
25184
|
+
}
|
|
25185
|
+
return {
|
|
25186
|
+
normals: o,
|
|
25187
|
+
bandMask: s,
|
|
25188
|
+
bandWeight: c
|
|
25189
|
+
};
|
|
25190
|
+
}
|
|
25191
|
+
var Dt = 35 * Math.PI / 180, Ot = 12 * Math.PI / 180, kt = {
|
|
25192
|
+
t: {
|
|
25193
|
+
x: 0,
|
|
25194
|
+
y: -1
|
|
25195
|
+
},
|
|
25196
|
+
b: {
|
|
25197
|
+
x: 0,
|
|
25198
|
+
y: 1
|
|
25199
|
+
},
|
|
25200
|
+
l: {
|
|
25201
|
+
x: -1,
|
|
25202
|
+
y: 0
|
|
25203
|
+
},
|
|
25204
|
+
r: {
|
|
25205
|
+
x: 1,
|
|
25206
|
+
y: 0
|
|
25207
|
+
},
|
|
25208
|
+
tl: {
|
|
25209
|
+
x: -1,
|
|
25210
|
+
y: -1
|
|
25211
|
+
},
|
|
25212
|
+
tr: {
|
|
25213
|
+
x: 1,
|
|
25214
|
+
y: -1
|
|
25215
|
+
},
|
|
25216
|
+
bl: {
|
|
25217
|
+
x: -1,
|
|
25218
|
+
y: 1
|
|
25219
|
+
},
|
|
25220
|
+
br: {
|
|
25221
|
+
x: 1,
|
|
25222
|
+
y: 1
|
|
25223
|
+
}
|
|
25224
|
+
};
|
|
25225
|
+
function At(e, t, n) {
|
|
25226
|
+
let r = n * Math.PI / 180, i = Math.cos(r), a = Math.sin(r);
|
|
25227
|
+
return {
|
|
25228
|
+
x: e * i - t * a,
|
|
25229
|
+
y: e * a + t * i
|
|
25230
|
+
};
|
|
25231
|
+
}
|
|
25232
|
+
function jt(e, t, n) {
|
|
25233
|
+
let r = kt[t] ?? kt.t;
|
|
25234
|
+
return n && n.rev && (r = At(r.x, r.y, n.rev)), Nt(r.x, r.y, Dt);
|
|
25235
|
+
}
|
|
25236
|
+
function Mt(e) {
|
|
25237
|
+
let t = Math.hypot(e.x, e.y) || 1;
|
|
25238
|
+
return Nt(-e.x / t, -e.y / t, Ot);
|
|
25239
|
+
}
|
|
25240
|
+
function Nt(e, t, n) {
|
|
25241
|
+
let r = Math.hypot(e, t) || 1, i = Math.cos(n), a = Math.sin(n), o = e / r * i, s = t / r * i, c = a, l = Math.hypot(o, s, c) || 1;
|
|
25242
|
+
return {
|
|
25243
|
+
x: o / l,
|
|
25244
|
+
y: s / l,
|
|
25245
|
+
z: c / l
|
|
25246
|
+
};
|
|
25247
|
+
}
|
|
25248
|
+
var Pt = 2, Ft = {
|
|
25249
|
+
matte: {
|
|
25250
|
+
ambient: .62,
|
|
25251
|
+
diffuse: .45,
|
|
25252
|
+
specular: 0,
|
|
25253
|
+
shininess: 8
|
|
25254
|
+
},
|
|
25255
|
+
plastic: {
|
|
25256
|
+
ambient: .55,
|
|
25257
|
+
diffuse: .5,
|
|
25258
|
+
specular: .35,
|
|
25259
|
+
shininess: 22
|
|
25260
|
+
}
|
|
25261
|
+
}, It = .8;
|
|
25262
|
+
function Lt(e) {
|
|
25263
|
+
switch (e) {
|
|
25264
|
+
case "plastic":
|
|
25265
|
+
case "metal":
|
|
25266
|
+
case "clear":
|
|
25267
|
+
case "softEdge":
|
|
25268
|
+
case "shiny":
|
|
25269
|
+
case "softmetal": return "plastic";
|
|
25270
|
+
default: return "matte";
|
|
25271
|
+
}
|
|
25272
|
+
}
|
|
25273
|
+
function Rt(e, t, n = !0) {
|
|
25274
|
+
let r = Ft[e], i = {
|
|
25275
|
+
light: t,
|
|
25276
|
+
material: e,
|
|
25277
|
+
ambient: r.ambient,
|
|
25278
|
+
diffuse: r.diffuse,
|
|
25279
|
+
specular: r.specular,
|
|
25280
|
+
shininess: r.shininess
|
|
25281
|
+
};
|
|
25282
|
+
return n && (i.fillLight = Mt(t), i.fillDiffuse = i.diffuse * It), i;
|
|
25283
|
+
}
|
|
25284
|
+
function zt(e, t) {
|
|
25285
|
+
let n = e.x * t.light.x + e.y * t.light.y + e.z * t.light.z, r = t.diffuse * Math.max(0, n), i = 0;
|
|
25286
|
+
if (t.fillLight && t.fillDiffuse) {
|
|
25287
|
+
let n = e.x * t.fillLight.x + e.y * t.fillLight.y + e.z * t.fillLight.z;
|
|
25288
|
+
i = t.fillDiffuse * Math.max(0, n);
|
|
25289
|
+
}
|
|
25290
|
+
let a = 0;
|
|
25291
|
+
if (t.specular > 0) {
|
|
25292
|
+
let n = t.light.x, r = t.light.y, i = t.light.z + 1, o = Math.hypot(n, r, i) || 1, s = (e.x * n + e.y * r + e.z * i) / o;
|
|
25293
|
+
a = t.specular * Math.max(0, s) ** +t.shininess;
|
|
25294
|
+
}
|
|
25295
|
+
return Math.max(0, t.ambient + r + i + a);
|
|
25296
|
+
}
|
|
25297
|
+
function Bt(e, t) {
|
|
25298
|
+
let n = e.canvas.width, r = e.canvas.height;
|
|
25299
|
+
if (n <= 0 || r <= 0) return;
|
|
25300
|
+
let i = t.widthPx;
|
|
25301
|
+
if (i < .75) return;
|
|
25302
|
+
let a = e.getImageData(0, 0, n, r), o = a.data, s = new Uint8ClampedArray(n * r);
|
|
25303
|
+
for (let e = 0; e < n * r; e++) s[e] = o[e * 4 + 3];
|
|
25304
|
+
let { bandMask: c, bandWeight: l, normals: u } = Et(s, n, r, i, t.prst, t.heightPx), d = Rt(t.material, t.light), f = zt({
|
|
25305
|
+
x: 0,
|
|
25306
|
+
y: 0,
|
|
25307
|
+
z: 1
|
|
25308
|
+
}, d) || 1;
|
|
25309
|
+
for (let e = 0; e < n * r; e++) {
|
|
25310
|
+
if (c[e] === 0) continue;
|
|
25311
|
+
let n = l[e];
|
|
25312
|
+
if (n <= 0) continue;
|
|
25313
|
+
let r = u[e * 3], i = u[e * 3 + 1], a = u[e * 3 + 2];
|
|
25314
|
+
t.bottom && (r = -r, i = -i);
|
|
25315
|
+
let s = 1 + (zt({
|
|
25316
|
+
x: r,
|
|
25317
|
+
y: i,
|
|
25318
|
+
z: a
|
|
25319
|
+
}, d) / f - 1) * n, p = e * 4;
|
|
25320
|
+
if (s >= 1) {
|
|
25321
|
+
let e = Math.min(1, (s - 1) * Pt);
|
|
25322
|
+
for (let t = 0; t < 3; t++) {
|
|
25323
|
+
let n = Math.min(255, o[p + t] * s);
|
|
25324
|
+
o[p + t] = n + (255 - n) * e;
|
|
25325
|
+
}
|
|
25326
|
+
} else o[p] = Math.max(0, o[p] * s), o[p + 1] = Math.max(0, o[p + 1] * s), o[p + 2] = Math.max(0, o[p + 2] * s);
|
|
25327
|
+
}
|
|
25328
|
+
e.putImageData(a, 0, 0);
|
|
25329
|
+
}
|
|
25330
|
+
function Vt(e, t) {
|
|
25331
|
+
let n = e.canvas.width, r = e.canvas.height;
|
|
25332
|
+
if (n <= 0 || r <= 0) return;
|
|
25333
|
+
let i = t.offsetX, a = t.offsetY, o = Math.hypot(i, a);
|
|
25334
|
+
if (o < .75) return;
|
|
25335
|
+
let s = e.getImageData(0, 0, n, r), c = s.data, l = new Uint8ClampedArray(n * r);
|
|
25336
|
+
for (let e = 0; e < n * r; e++) l[e] = c[e * 4 + 3];
|
|
25337
|
+
let u = Math.max(1, Math.ceil(o)), [d, f, p] = t.rgb;
|
|
25338
|
+
for (let e = 0; e < r; e++) for (let t = 0; t < n; t++) {
|
|
25339
|
+
let o = e * n + t;
|
|
25340
|
+
if (l[o] >= 128) continue;
|
|
25341
|
+
let s = !1;
|
|
25342
|
+
for (let o = 1; o <= u; o++) {
|
|
25343
|
+
let c = o / u, d = Math.round(t - i * c), f = Math.round(e - a * c);
|
|
25344
|
+
if (!(d < 0 || f < 0 || d >= n || f >= r) && l[f * n + d] >= 128) {
|
|
25345
|
+
s = !0;
|
|
25346
|
+
break;
|
|
25347
|
+
}
|
|
25348
|
+
}
|
|
25349
|
+
if (!s) continue;
|
|
25350
|
+
let m = o * 4;
|
|
25351
|
+
c[m] = d, c[m + 1] = f, c[m + 2] = p, c[m + 3] = 255;
|
|
25352
|
+
}
|
|
25353
|
+
e.putImageData(s, 0, 0);
|
|
24880
25354
|
}
|
|
24881
25355
|
//#endregion
|
|
24882
25356
|
//#region packages/core/src/sparkline/renderer.ts
|
|
24883
|
-
function
|
|
25357
|
+
function Ht(e, t, n) {
|
|
24884
25358
|
let { values: r } = n;
|
|
24885
25359
|
if (r.length === 0 || t.w <= 0 || t.h <= 0) return;
|
|
24886
25360
|
let i = n.colorSeries ?? "#5B9BD5", a = Math.min(2, t.w * .08), o = Math.max(2, t.h * .2), s = t.x + a, c = t.y + o, l = Math.max(1, t.w - a * 2), u = Math.max(1, t.h - o * 2), d = r.filter((e) => typeof e == "number");
|
|
@@ -24889,11 +25363,11 @@ function rt(e, t, n) {
|
|
|
24889
25363
|
m === h && (h = m + 1, --m);
|
|
24890
25364
|
let g = h - m, _ = (e) => c + u - (e - m) / g * u;
|
|
24891
25365
|
if (n.kind === "stem") {
|
|
24892
|
-
|
|
25366
|
+
Gt(e, n, s, c, l, u);
|
|
24893
25367
|
return;
|
|
24894
25368
|
}
|
|
24895
25369
|
if (n.kind === "column") {
|
|
24896
|
-
|
|
25370
|
+
Wt(e, n, r, s, c, l, u, m, h);
|
|
24897
25371
|
return;
|
|
24898
25372
|
}
|
|
24899
25373
|
if (n.displayXAxis && m < 0 && h > 0) {
|
|
@@ -24901,31 +25375,31 @@ function rt(e, t, n) {
|
|
|
24901
25375
|
let t = _(0);
|
|
24902
25376
|
e.moveTo(s, t), e.lineTo(s + l, t), e.stroke(), e.restore();
|
|
24903
25377
|
}
|
|
24904
|
-
let
|
|
24905
|
-
e.save(), e.strokeStyle = i, e.lineCap = "round", e.lineJoin = "round", e.lineWidth = (n.lineWeight ?? .75) *
|
|
24906
|
-
let
|
|
24907
|
-
for (let t = 0; t <
|
|
25378
|
+
let v = r.length, y = (e) => v === 1 ? s + l / 2 : s + e / (v - 1) * l;
|
|
25379
|
+
e.save(), e.strokeStyle = i, e.lineCap = "round", e.lineJoin = "round", e.lineWidth = (n.lineWeight ?? .75) * L, e.beginPath();
|
|
25380
|
+
let b = !1, x = n.displayEmptyCellsAs ?? "gap";
|
|
25381
|
+
for (let t = 0; t < v; t++) {
|
|
24908
25382
|
let n = r[t];
|
|
24909
25383
|
if (n == null) {
|
|
24910
|
-
if (
|
|
24911
|
-
let n =
|
|
24912
|
-
|
|
24913
|
-
} else
|
|
25384
|
+
if (x === "zero") {
|
|
25385
|
+
let n = y(t), r = _(0);
|
|
25386
|
+
b ? e.lineTo(n, r) : (e.moveTo(n, r), b = !0);
|
|
25387
|
+
} else x === "gap" && (b = !1);
|
|
24914
25388
|
continue;
|
|
24915
25389
|
}
|
|
24916
|
-
let i =
|
|
24917
|
-
|
|
25390
|
+
let i = y(t), a = _(n);
|
|
25391
|
+
b ? e.lineTo(i, a) : (e.moveTo(i, a), b = !0);
|
|
24918
25392
|
}
|
|
24919
25393
|
e.stroke(), e.restore();
|
|
24920
|
-
let
|
|
24921
|
-
for (let t = 0; t <
|
|
25394
|
+
let S = Math.max(1, Math.min(2.5, u * .12)), C = Ut(r, n);
|
|
25395
|
+
for (let t = 0; t < v; t++) {
|
|
24922
25396
|
let a = r[t];
|
|
24923
25397
|
if (a == null) continue;
|
|
24924
|
-
let o =
|
|
24925
|
-
(n.markers || o != null) && (e.save(), e.fillStyle = o ?? n.colorMarkers ?? i, e.beginPath(), e.arc(
|
|
25398
|
+
let o = C[t];
|
|
25399
|
+
(n.markers || o != null) && (e.save(), e.fillStyle = o ?? n.colorMarkers ?? i, e.beginPath(), e.arc(y(t), _(a), S, 0, Math.PI * 2), e.fill(), e.restore());
|
|
24926
25400
|
}
|
|
24927
25401
|
}
|
|
24928
|
-
function
|
|
25402
|
+
function Ut(e, t) {
|
|
24929
25403
|
let n = e.map(() => null), r = e.map((e) => typeof e == "number" ? e : null), i = r.findIndex((e) => e != null), a = -1;
|
|
24930
25404
|
for (let e = r.length - 1; e >= 0; e--) if (r[e] != null) {
|
|
24931
25405
|
a = e;
|
|
@@ -24940,10 +25414,10 @@ function it(e, t) {
|
|
|
24940
25414
|
if (t.low && t.colorLow && !Number.isNaN(c)) for (let e = 0; e < r.length; e++) r[e] === c && (n[e] = t.colorLow);
|
|
24941
25415
|
return n;
|
|
24942
25416
|
}
|
|
24943
|
-
function
|
|
25417
|
+
function Wt(e, t, n, r, i, a, o, s, c) {
|
|
24944
25418
|
let l = n.length;
|
|
24945
25419
|
if (l === 0) return;
|
|
24946
|
-
let u = s < 0 && c > 0 ? 0 : s, d = c - s, f = (e) => i + o - (e - s) / d * o, p = f(u), m = a / l, h = Math.min(1.5, m * .15), g =
|
|
25420
|
+
let u = s < 0 && c > 0 ? 0 : s, d = c - s, f = (e) => i + o - (e - s) / d * o, p = f(u), m = a / l, h = Math.min(1.5, m * .15), g = Ut(n, t);
|
|
24947
25421
|
for (let i = 0; i < l; i++) {
|
|
24948
25422
|
let a = n[i];
|
|
24949
25423
|
if (a == null) continue;
|
|
@@ -24951,10 +25425,10 @@ function at(e, t, n, r, i, a, o, s, c) {
|
|
|
24951
25425
|
e.save(), e.fillStyle = o, e.fillRect(c, Math.min(p, s), l, Math.abs(p - s)), e.restore();
|
|
24952
25426
|
}
|
|
24953
25427
|
}
|
|
24954
|
-
function
|
|
25428
|
+
function Gt(e, t, n, r, i, a) {
|
|
24955
25429
|
let o = t.values.length;
|
|
24956
25430
|
if (o === 0) return;
|
|
24957
|
-
let s = r + a / 2, c = a / 2, l = i / o, u = Math.min(1.5, l * .15), d =
|
|
25431
|
+
let s = r + a / 2, c = a / 2, l = i / o, u = Math.min(1.5, l * .15), d = Ut(t.values, t);
|
|
24958
25432
|
for (let r = 0; r < o; r++) {
|
|
24959
25433
|
let i = t.values[r];
|
|
24960
25434
|
if (i == null || i === 0) continue;
|
|
@@ -24964,13 +25438,13 @@ function ot(e, t, n, r, i, a) {
|
|
|
24964
25438
|
}
|
|
24965
25439
|
//#endregion
|
|
24966
25440
|
//#region packages/core/src/math/mathml.ts
|
|
24967
|
-
var
|
|
25441
|
+
var Kt = {
|
|
24968
25442
|
"&": "&",
|
|
24969
25443
|
"<": "<",
|
|
24970
25444
|
">": ">",
|
|
24971
25445
|
"\"": """
|
|
24972
|
-
},
|
|
24973
|
-
function
|
|
25446
|
+
}, Q = (e) => e.replace(/[&<>"]/g, (e) => Kt[e]);
|
|
25447
|
+
function qt(e) {
|
|
24974
25448
|
switch (e) {
|
|
24975
25449
|
case "roman": return "normal";
|
|
24976
25450
|
case "bold": return "bold";
|
|
@@ -24978,10 +25452,10 @@ function lt(e) {
|
|
|
24978
25452
|
case "italic": return null;
|
|
24979
25453
|
}
|
|
24980
25454
|
}
|
|
24981
|
-
var
|
|
24982
|
-
function
|
|
24983
|
-
let n =
|
|
24984
|
-
a &&= (i += `<mn${r}>${
|
|
25455
|
+
var Jt = new Set([..."⏞⏟⎴⎵︷︸⏜⏝{}[]()¯_‾"]), Yt = "+−±∓×÷·∗⋅∘∙*/", Xt = "=≠<>≤≥≈≡∼≅≃→←↔⇒∈∉⊂⊆⊃⊇∝≪≫⊥≔", Zt = "([{⟨⌈⌊", Qt = ")]}⟩⌉⌋", $t = ",;";
|
|
25456
|
+
function en(e, t) {
|
|
25457
|
+
let n = qt(t), r = n ? ` mathvariant="${n}"` : "", i = "", a = "", o = () => {
|
|
25458
|
+
a &&= (i += `<mn${r}>${Q(a)}</mn>`, "");
|
|
24985
25459
|
};
|
|
24986
25460
|
for (let t of e) {
|
|
24987
25461
|
if (t === " ") {
|
|
@@ -24992,42 +25466,42 @@ function gt(e, t) {
|
|
|
24992
25466
|
a += t;
|
|
24993
25467
|
continue;
|
|
24994
25468
|
}
|
|
24995
|
-
o(),
|
|
25469
|
+
o(), Yt.includes(t) || Xt.includes(t) || $t.includes(t) ? i += `<mo>${Q(t)}</mo>` : Zt.includes(t) || Qt.includes(t) ? i += `<mo fence="true" stretchy="false">${Q(t)}</mo>` : i += `<mi${r}>${Q(t)}</mi>`;
|
|
24996
25470
|
}
|
|
24997
25471
|
return o(), i;
|
|
24998
25472
|
}
|
|
24999
|
-
function
|
|
25000
|
-
return e.map(
|
|
25473
|
+
function tn(e) {
|
|
25474
|
+
return e.map(nn).join("");
|
|
25001
25475
|
}
|
|
25002
25476
|
function $(e) {
|
|
25003
|
-
return `<mrow>${
|
|
25477
|
+
return `<mrow>${tn(e)}</mrow>`;
|
|
25004
25478
|
}
|
|
25005
|
-
function
|
|
25479
|
+
function nn(e) {
|
|
25006
25480
|
switch (e.kind) {
|
|
25007
|
-
case "run": return
|
|
25481
|
+
case "run": return en(e.text, e.style);
|
|
25008
25482
|
case "group": return $(e.items);
|
|
25009
25483
|
case "fraction": return `<mfrac${e.bar === !1 ? " linethickness=\"0\"" : ""}>${$(e.num)}${$(e.den)}</mfrac>`;
|
|
25010
25484
|
case "sup": return `<msup>${$(e.base)}${$(e.sup ?? [])}</msup>`;
|
|
25011
25485
|
case "sub": return `<msub>${$(e.base)}${$(e.sub ?? [])}</msub>`;
|
|
25012
25486
|
case "subSup": return `<msubsup>${$(e.base)}${$(e.sub ?? [])}${$(e.sup ?? [])}</msubsup>`;
|
|
25013
|
-
case "nary": return
|
|
25014
|
-
case "delimiter": return
|
|
25015
|
-
case "radical": return e.index && e.index.length ? `<mroot>${$(e.radicand)}${$(e.index)}</mroot>` : `<msqrt>${
|
|
25016
|
-
case "limit": return
|
|
25017
|
-
case "array": return
|
|
25487
|
+
case "nary": return un(e);
|
|
25488
|
+
case "delimiter": return dn(e);
|
|
25489
|
+
case "radical": return e.index && e.index.length ? `<mroot>${$(e.radicand)}${$(e.index)}</mroot>` : `<msqrt>${tn(e.radicand)}</msqrt>`;
|
|
25490
|
+
case "limit": return sn(e);
|
|
25491
|
+
case "array": return cn(e);
|
|
25018
25492
|
case "groupChr": {
|
|
25019
|
-
let t = $(e.base), n =
|
|
25493
|
+
let t = $(e.base), n = Jt.has(e.char), r = e.pos === "top" ? "mover" : "munder", i = `<mo stretchy="${n}">${Q(e.char)}</mo>`;
|
|
25020
25494
|
return n ? `<${r}>${t}${i}</${r}>` : `<${r} accent="true">${t}${i}</${r}>`;
|
|
25021
25495
|
}
|
|
25022
25496
|
case "bar": {
|
|
25023
25497
|
let t = $(e.base), n = "<mo stretchy=\"true\">―</mo>";
|
|
25024
25498
|
return e.pos === "bot" ? `<munder>${t}${n}</munder>` : `<mover>${t}${n}</mover>`;
|
|
25025
25499
|
}
|
|
25026
|
-
case "accent": return
|
|
25500
|
+
case "accent": return on(e);
|
|
25027
25501
|
case "func": return `<mrow>${$(e.name)}<mo>⁡</mo>${$(e.arg)}</mrow>`;
|
|
25028
25502
|
}
|
|
25029
25503
|
}
|
|
25030
|
-
var
|
|
25504
|
+
var rn = {
|
|
25031
25505
|
"̀": "`",
|
|
25032
25506
|
"́": "´",
|
|
25033
25507
|
"̂": "^",
|
|
@@ -25038,7 +25512,7 @@ var yt = {
|
|
|
25038
25512
|
"̌": "ˇ",
|
|
25039
25513
|
"⃗": "→",
|
|
25040
25514
|
"⃖": "←"
|
|
25041
|
-
},
|
|
25515
|
+
}, an = new Set([
|
|
25042
25516
|
"̅",
|
|
25043
25517
|
"̄",
|
|
25044
25518
|
"¯",
|
|
@@ -25046,37 +25520,45 @@ var yt = {
|
|
|
25046
25520
|
"̲",
|
|
25047
25521
|
"̳"
|
|
25048
25522
|
]);
|
|
25049
|
-
function
|
|
25523
|
+
function on(e) {
|
|
25050
25524
|
let t = $(e.base);
|
|
25051
|
-
if (
|
|
25052
|
-
let n =
|
|
25053
|
-
return `<mover accent="true">${t}<mo stretchy="${n === "→" || n === "←" ? "true" : "false"}">${
|
|
25525
|
+
if (an.has(e.char)) return `<mover>${t}<mo stretchy="true">―</mo></mover>`;
|
|
25526
|
+
let n = rn[e.char] ?? e.char;
|
|
25527
|
+
return `<mover accent="true">${t}<mo stretchy="${n === "→" || n === "←" ? "true" : "false"}">${Q(n)}</mo></mover>`;
|
|
25054
25528
|
}
|
|
25055
|
-
function
|
|
25529
|
+
function sn(e) {
|
|
25056
25530
|
let t = $(e.base), n = e.lower && e.lower.length ? $(e.lower) : null, r = e.upper && e.upper.length ? $(e.upper) : null;
|
|
25057
25531
|
return n && r ? `<munderover>${t}${n}${r}</munderover>` : n ? `<munder>${t}${n}</munder>` : r ? `<mover>${t}${r}</mover>` : t;
|
|
25058
25532
|
}
|
|
25059
|
-
function
|
|
25533
|
+
function cn(e) {
|
|
25060
25534
|
let t = Math.max(1, ...e.rows.map((e) => e.length)), n;
|
|
25061
25535
|
n = e.align === "eq" ? Array.from({ length: t }, (e, t) => t % 2 == 0 ? "right" : "left").join(" ") : e.align === "left" ? "left" : "center";
|
|
25062
|
-
let r = e.rows.map((e) => `<mtr>${e.map((e) => `<mtd>${
|
|
25536
|
+
let r = e.rows.map((e) => `<mtr>${e.map((e) => `<mtd>${tn(e)}</mtd>`).join("")}</mtr>`).join("");
|
|
25063
25537
|
return `<mtable columnalign="${n}" rowspacing="0.2em" columnspacing="0.3em">${r}</mtable>`;
|
|
25064
25538
|
}
|
|
25065
|
-
var
|
|
25066
|
-
function
|
|
25067
|
-
let t = e.limLoc === "subSup" ? !0 : e.limLoc === "undOvr" ? !1 :
|
|
25068
|
-
return a = t ? r.length && i.length ? `<msubsup>${n}${$(r)}${$(i)}</msubsup>` : r.length ? `<msub>${n}${$(r)}</msub>` : i.length ? `<msup>${n}${$(i)}</msup>` : n : r.length && i.length ? `<munderover>${n}${$(r)}${$(i)}</munderover>` : r.length ? `<munder>${n}${$(r)}</munder>` : i.length ? `<mover>${n}${$(i)}</mover>` : n, `<mrow>${a}${
|
|
25539
|
+
var ln = new Set([..."∫∬∭∮∯∰∱∲∳⨌⨍⨎⨏⨐⨑⨒⨓⨔⨕⨖⨗"]);
|
|
25540
|
+
function un(e) {
|
|
25541
|
+
let t = e.limLoc === "subSup" ? !0 : e.limLoc === "undOvr" ? !1 : ln.has(e.op), n = `<mo largeop="true">${Q(e.op)}</mo>`, r = e.sub ?? [], i = e.sup ?? [], a;
|
|
25542
|
+
return a = t ? r.length && i.length ? `<msubsup>${n}${$(r)}${$(i)}</msubsup>` : r.length ? `<msub>${n}${$(r)}</msub>` : i.length ? `<msup>${n}${$(i)}</msup>` : n : r.length && i.length ? `<munderover>${n}${$(r)}${$(i)}</munderover>` : r.length ? `<munder>${n}${$(r)}</munder>` : i.length ? `<mover>${n}${$(i)}</mover>` : n, `<mrow>${a}${tn(e.body)}</mrow>`;
|
|
25069
25543
|
}
|
|
25070
|
-
function
|
|
25071
|
-
let t = (e) => `<mo fence="true" stretchy="true">${
|
|
25544
|
+
function dn(e) {
|
|
25545
|
+
let t = (e) => `<mo fence="true" stretchy="true">${Q(e)}</mo>`, n = e.items.map((e) => $(e)).join("<mo separator=\"true\">,</mo>");
|
|
25072
25546
|
return `<mrow>${t(e.begChar)}${n}${t(e.endChar)}</mrow>`;
|
|
25073
25547
|
}
|
|
25074
|
-
function
|
|
25075
|
-
return `<math xmlns="http://www.w3.org/1998/Math/MathML" display="${t ? "block" : "inline"}">${
|
|
25548
|
+
function fn(e, t) {
|
|
25549
|
+
return `<math xmlns="http://www.w3.org/1998/Math/MathML" display="${t ? "block" : "inline"}">${tn(e)}</math>`;
|
|
25550
|
+
}
|
|
25551
|
+
//#endregion
|
|
25552
|
+
//#region packages/core/src/canvas/env.ts
|
|
25553
|
+
function pn(e) {
|
|
25554
|
+
return typeof HTMLCanvasElement < "u" && e instanceof HTMLCanvasElement;
|
|
25555
|
+
}
|
|
25556
|
+
function mn(e = 1) {
|
|
25557
|
+
return typeof window < "u" && window.devicePixelRatio || e;
|
|
25076
25558
|
}
|
|
25077
25559
|
//#endregion
|
|
25078
25560
|
//#region packages/core/src/worker/bridge.ts
|
|
25079
|
-
var
|
|
25561
|
+
var hn = class {
|
|
25080
25562
|
_worker;
|
|
25081
25563
|
_opts;
|
|
25082
25564
|
_pending = /* @__PURE__ */ new Map();
|
|
@@ -25116,7 +25598,7 @@ var Ot = class {
|
|
|
25116
25598
|
for (let e of this._pending.values()) e.reject(/* @__PURE__ */ Error("Worker terminated"));
|
|
25117
25599
|
this._pending.clear();
|
|
25118
25600
|
}
|
|
25119
|
-
},
|
|
25601
|
+
}, gn = [
|
|
25120
25602
|
"L",
|
|
25121
25603
|
"R",
|
|
25122
25604
|
"AL",
|
|
@@ -25140,7 +25622,7 @@ var Ot = class {
|
|
|
25140
25622
|
"RLI",
|
|
25141
25623
|
"FSI",
|
|
25142
25624
|
"PDI"
|
|
25143
|
-
],
|
|
25625
|
+
], _n = [
|
|
25144
25626
|
0,
|
|
25145
25627
|
9,
|
|
25146
25628
|
10,
|
|
@@ -26408,7 +26890,7 @@ var Ot = class {
|
|
|
26408
26890
|
1048574,
|
|
26409
26891
|
1048576,
|
|
26410
26892
|
1114110
|
|
26411
|
-
],
|
|
26893
|
+
], vn = [
|
|
26412
26894
|
9,
|
|
26413
26895
|
11,
|
|
26414
26896
|
10,
|
|
@@ -27676,7 +28158,7 @@ var Ot = class {
|
|
|
27676
28158
|
9,
|
|
27677
28159
|
0,
|
|
27678
28160
|
9
|
|
27679
|
-
],
|
|
28161
|
+
], yn = [
|
|
27680
28162
|
40,
|
|
27681
28163
|
41,
|
|
27682
28164
|
41,
|
|
@@ -28533,7 +29015,7 @@ var Ot = class {
|
|
|
28533
29015
|
65379,
|
|
28534
29016
|
65379,
|
|
28535
29017
|
65378
|
|
28536
|
-
],
|
|
29018
|
+
], bn = [
|
|
28537
29019
|
40,
|
|
28538
29020
|
41,
|
|
28539
29021
|
0,
|
|
@@ -28921,42 +29403,42 @@ var Ot = class {
|
|
|
28921
29403
|
];
|
|
28922
29404
|
//#endregion
|
|
28923
29405
|
//#region packages/core/src/text/bidi/char-data.ts
|
|
28924
|
-
function
|
|
28925
|
-
let t = 0, n =
|
|
29406
|
+
function xn(e) {
|
|
29407
|
+
let t = 0, n = _n.length - 1;
|
|
28926
29408
|
for (; t < n;) {
|
|
28927
29409
|
let r = t + n + 1 >> 1;
|
|
28928
|
-
|
|
29410
|
+
_n[r] <= e ? t = r : n = r - 1;
|
|
28929
29411
|
}
|
|
28930
|
-
return
|
|
29412
|
+
return vn[t];
|
|
28931
29413
|
}
|
|
28932
|
-
function
|
|
28933
|
-
return
|
|
29414
|
+
function Sn(e) {
|
|
29415
|
+
return gn[xn(e)];
|
|
28934
29416
|
}
|
|
28935
|
-
var
|
|
29417
|
+
var Cn = (() => {
|
|
28936
29418
|
let e = /* @__PURE__ */ new Map();
|
|
28937
|
-
for (let t = 0; t <
|
|
29419
|
+
for (let t = 0; t < yn.length; t += 2) e.set(yn[t], yn[t + 1]);
|
|
28938
29420
|
return e;
|
|
28939
29421
|
})();
|
|
28940
|
-
function
|
|
28941
|
-
return
|
|
29422
|
+
function wn(e) {
|
|
29423
|
+
return Cn.get(e) ?? null;
|
|
28942
29424
|
}
|
|
28943
|
-
var
|
|
29425
|
+
var Tn = (() => {
|
|
28944
29426
|
let e = /* @__PURE__ */ new Map();
|
|
28945
|
-
for (let t = 0; t <
|
|
28946
|
-
pair:
|
|
28947
|
-
type:
|
|
29427
|
+
for (let t = 0; t < bn.length; t += 3) e.set(bn[t], {
|
|
29428
|
+
pair: bn[t + 1],
|
|
29429
|
+
type: bn[t + 2] === 0 ? "o" : "c"
|
|
28948
29430
|
});
|
|
28949
29431
|
return e;
|
|
28950
29432
|
})();
|
|
28951
|
-
function
|
|
28952
|
-
return
|
|
29433
|
+
function En(e) {
|
|
29434
|
+
return Tn.get(e) ?? null;
|
|
28953
29435
|
}
|
|
28954
|
-
var
|
|
28955
|
-
function
|
|
29436
|
+
var Dn = (e) => e === "RLE" || e === "LRE" || e === "RLO" || e === "LRO" || e === "PDF" || e === "BN", On = (e) => e === "LRI" || e === "RLI" || e === "FSI", kn = (e) => e === "B" || e === "S" || e === "WS" || e === "ON" || e === "FSI" || e === "LRI" || e === "RLI" || e === "PDI", An = (e) => e & 1 ? e + 2 : e + 1, jn = (e) => e & 1 ? e + 1 : e + 2;
|
|
29437
|
+
function Mn(e, t, n) {
|
|
28956
29438
|
let r = 0;
|
|
28957
29439
|
for (let i = t; i < n; i++) {
|
|
28958
29440
|
let t = e[i];
|
|
28959
|
-
if (
|
|
29441
|
+
if (On(t)) r++;
|
|
28960
29442
|
else if (t === "PDI") r > 0 && r--;
|
|
28961
29443
|
else if (r === 0) {
|
|
28962
29444
|
if (t === "L") return 0;
|
|
@@ -28965,11 +29447,11 @@ function Gt(e, t, n) {
|
|
|
28965
29447
|
}
|
|
28966
29448
|
return 0;
|
|
28967
29449
|
}
|
|
28968
|
-
function
|
|
29450
|
+
function Nn(e) {
|
|
28969
29451
|
let t = e.length, n = new Int32Array(t).fill(t), r = new Int32Array(t).fill(-1), i = [];
|
|
28970
29452
|
for (let a = 0; a < t; a++) {
|
|
28971
29453
|
let t = e[a];
|
|
28972
|
-
if (
|
|
29454
|
+
if (On(t)) i.push(a);
|
|
28973
29455
|
else if (t === "PDI" && i.length) {
|
|
28974
29456
|
let e = i.pop();
|
|
28975
29457
|
n[e] = a, r[a] = e;
|
|
@@ -28980,7 +29462,7 @@ function Kt(e) {
|
|
|
28980
29462
|
initOf: r
|
|
28981
29463
|
};
|
|
28982
29464
|
}
|
|
28983
|
-
function
|
|
29465
|
+
function Pn(e, t, n) {
|
|
28984
29466
|
let r = e.length, i = Array(r).fill(t), a = e.slice(), o = [{
|
|
28985
29467
|
level: t,
|
|
28986
29468
|
override: "neutral",
|
|
@@ -28994,7 +29476,7 @@ function qt(e, t, n) {
|
|
|
28994
29476
|
case "RLO":
|
|
28995
29477
|
case "LRO": {
|
|
28996
29478
|
i[d] = u().level;
|
|
28997
|
-
let e = r === "RLE" || r === "RLO" ?
|
|
29479
|
+
let e = r === "RLE" || r === "RLO" ? An(u().level) : jn(u().level);
|
|
28998
29480
|
e <= 125 && s === 0 && c === 0 ? o.push({
|
|
28999
29481
|
level: e,
|
|
29000
29482
|
override: r === "RLO" ? "R" : r === "LRO" ? "L" : "neutral",
|
|
@@ -29009,8 +29491,8 @@ function qt(e, t, n) {
|
|
|
29009
29491
|
let t = u().override;
|
|
29010
29492
|
t !== "neutral" && (a[d] = t);
|
|
29011
29493
|
let f;
|
|
29012
|
-
f = r === "RLI" ? "R" : r === "LRI" ? "L" :
|
|
29013
|
-
let p = f === "R" ?
|
|
29494
|
+
f = r === "RLI" ? "R" : r === "LRI" ? "L" : Mn(e, d + 1, n[d]) === 1 ? "R" : "L";
|
|
29495
|
+
let p = f === "R" ? An(u().level) : jn(u().level);
|
|
29014
29496
|
p <= 125 && s === 0 && c === 0 ? (l++, o.push({
|
|
29015
29497
|
level: p,
|
|
29016
29498
|
override: "neutral",
|
|
@@ -29052,10 +29534,10 @@ function qt(e, t, n) {
|
|
|
29052
29534
|
types: a
|
|
29053
29535
|
};
|
|
29054
29536
|
}
|
|
29055
|
-
function
|
|
29537
|
+
function Fn(e) {
|
|
29056
29538
|
return e === 9001 ? 12296 : e === 9002 ? 12297 : e;
|
|
29057
29539
|
}
|
|
29058
|
-
function
|
|
29540
|
+
function In(e, t, n, r, i, a) {
|
|
29059
29541
|
let o = e.length, s = [];
|
|
29060
29542
|
for (let e = 0; e < o; e++) n[e] || s.push(e);
|
|
29061
29543
|
let c = [];
|
|
@@ -29073,7 +29555,7 @@ function Yt(e, t, n, r, i, a) {
|
|
|
29073
29555
|
for (;;) {
|
|
29074
29556
|
for (let e of p) f.push(e);
|
|
29075
29557
|
let t = p[p.length - 1];
|
|
29076
|
-
if (
|
|
29558
|
+
if (On(e[t]) && i[t] !== o) {
|
|
29077
29559
|
let e = l.get(i[t]);
|
|
29078
29560
|
if (e) {
|
|
29079
29561
|
p = e;
|
|
@@ -29088,7 +29570,7 @@ function Yt(e, t, n, r, i, a) {
|
|
|
29088
29570
|
break;
|
|
29089
29571
|
}
|
|
29090
29572
|
let g = u(Math.max(m, h)), _ = f[f.length - 1], v = r;
|
|
29091
|
-
if (!(
|
|
29573
|
+
if (!(On(e[_]) && i[_] === o)) {
|
|
29092
29574
|
for (let e = _ + 1; e < o; e++) if (!n[e]) {
|
|
29093
29575
|
v = t[e];
|
|
29094
29576
|
break;
|
|
@@ -29104,8 +29586,8 @@ function Yt(e, t, n, r, i, a) {
|
|
|
29104
29586
|
}
|
|
29105
29587
|
return d;
|
|
29106
29588
|
}
|
|
29107
|
-
var
|
|
29108
|
-
function
|
|
29589
|
+
var Ln = (e) => e === "L" ? "L" : e === "R" || e === "EN" || e === "AN" ? "R" : null;
|
|
29590
|
+
function Rn(e, t, n, r, i) {
|
|
29109
29591
|
let a = e.indices, o = a.length, { sos: s, eos: c, level: l } = e;
|
|
29110
29592
|
for (let e = 0; e < o; e++) {
|
|
29111
29593
|
let t = a[e];
|
|
@@ -29152,15 +29634,15 @@ function Zt(e, t, n, r, i) {
|
|
|
29152
29634
|
outer: for (let n = 0; n < o; n++) {
|
|
29153
29635
|
let i = a[n];
|
|
29154
29636
|
if (r[i] !== "ON") continue;
|
|
29155
|
-
let o =
|
|
29637
|
+
let o = En(t[i]);
|
|
29156
29638
|
if (o) if (o.type === "o") {
|
|
29157
29639
|
if (e.length === 63) break outer;
|
|
29158
29640
|
e.push({
|
|
29159
|
-
expect:
|
|
29641
|
+
expect: Fn(o.pair),
|
|
29160
29642
|
pos: n
|
|
29161
29643
|
});
|
|
29162
29644
|
} else {
|
|
29163
|
-
let r =
|
|
29645
|
+
let r = Fn(t[i]);
|
|
29164
29646
|
for (let t = e.length - 1; t >= 0; t--) if (e[t].expect === r) {
|
|
29165
29647
|
f.push({
|
|
29166
29648
|
open: e[t].pos,
|
|
@@ -29178,7 +29660,7 @@ function Zt(e, t, n, r, i) {
|
|
|
29178
29660
|
for (let { open: e, close: t } of f) {
|
|
29179
29661
|
let n = !1, i = !1;
|
|
29180
29662
|
for (let o = e + 1; o < t; o++) {
|
|
29181
|
-
let e =
|
|
29663
|
+
let e = Ln(r[a[o]]);
|
|
29182
29664
|
e === u ? n = !0 : e === d && (i = !0);
|
|
29183
29665
|
}
|
|
29184
29666
|
let o = null;
|
|
@@ -29186,7 +29668,7 @@ function Zt(e, t, n, r, i) {
|
|
|
29186
29668
|
else if (i) {
|
|
29187
29669
|
let t = s;
|
|
29188
29670
|
for (let n = e - 1; n >= 0; n--) {
|
|
29189
|
-
let e =
|
|
29671
|
+
let e = Ln(r[a[n]]);
|
|
29190
29672
|
if (e) {
|
|
29191
29673
|
t = e;
|
|
29192
29674
|
break;
|
|
@@ -29197,29 +29679,29 @@ function Zt(e, t, n, r, i) {
|
|
|
29197
29679
|
o && (r[a[e]] = o, r[a[t]] = o, p(e, o), p(t, o));
|
|
29198
29680
|
}
|
|
29199
29681
|
for (let e = 0; e < o; e++) {
|
|
29200
|
-
if (!
|
|
29682
|
+
if (!kn(r[a[e]])) continue;
|
|
29201
29683
|
let t = e;
|
|
29202
|
-
for (; t < o &&
|
|
29203
|
-
let n = e > 0 ?
|
|
29684
|
+
for (; t < o && kn(r[a[t]]);) t++;
|
|
29685
|
+
let n = e > 0 ? Ln(r[a[e - 1]]) : s, i = t < o ? Ln(r[a[t]]) : c;
|
|
29204
29686
|
if (n && i && n === i) for (let i = e; i < t; i++) r[a[i]] = n;
|
|
29205
29687
|
e = t - 1;
|
|
29206
29688
|
}
|
|
29207
|
-
for (let e = 0; e < o; e++)
|
|
29689
|
+
for (let e = 0; e < o; e++) kn(r[a[e]]) && (r[a[e]] = u);
|
|
29208
29690
|
for (let e = 0; e < o; e++) {
|
|
29209
29691
|
let t = a[e], n = r[t];
|
|
29210
29692
|
l & 1 ? (n === "L" || n === "EN" || n === "AN") && (i[t] += 1) : n === "R" ? i[t] += 1 : (n === "AN" || n === "EN") && (i[t] += 2);
|
|
29211
29693
|
}
|
|
29212
29694
|
}
|
|
29213
|
-
function
|
|
29695
|
+
function zn(e, t, n) {
|
|
29214
29696
|
let r = e.length, i = Array(r);
|
|
29215
|
-
for (let t = 0; t < r; t++) i[t] = n?.[t] ??
|
|
29216
|
-
let a = t === "rtl" ? 1 : t === "ltr" ? 0 :
|
|
29217
|
-
for (let e = 0; e < r; e++) u[e] =
|
|
29218
|
-
let d =
|
|
29219
|
-
for (let t of d)
|
|
29697
|
+
for (let t = 0; t < r; t++) i[t] = n?.[t] ?? Sn(e[t]);
|
|
29698
|
+
let a = t === "rtl" ? 1 : t === "ltr" ? 0 : Mn(i, 0, r), { pdiOf: o, initOf: s } = Nn(i), { levels: c, types: l } = Pn(i, a, o), u = Array(r);
|
|
29699
|
+
for (let e = 0; e < r; e++) u[e] = Dn(i[e]);
|
|
29700
|
+
let d = In(i, c, u, a, o, s), f = l.slice();
|
|
29701
|
+
for (let t of d) Rn(t, e, i, f, c);
|
|
29220
29702
|
let p = (e) => {
|
|
29221
29703
|
let t = i[e];
|
|
29222
|
-
return t === "WS" ||
|
|
29704
|
+
return t === "WS" || On(t) || t === "PDI" || u[e];
|
|
29223
29705
|
};
|
|
29224
29706
|
for (let e = 0; e < r; e++) {
|
|
29225
29707
|
let t = i[e];
|
|
@@ -29235,7 +29717,7 @@ function Qt(e, t, n) {
|
|
|
29235
29717
|
paragraphLevel: a
|
|
29236
29718
|
};
|
|
29237
29719
|
}
|
|
29238
|
-
function
|
|
29720
|
+
function Bn(e, t, n) {
|
|
29239
29721
|
let r = [];
|
|
29240
29722
|
for (let i = t; i < n; i++) {
|
|
29241
29723
|
let t = e[i];
|
|
@@ -29263,7 +29745,7 @@ function $t(e, t, n) {
|
|
|
29263
29745
|
}
|
|
29264
29746
|
//#endregion
|
|
29265
29747
|
//#region packages/core/src/text/bidi/uax9/index.ts
|
|
29266
|
-
function
|
|
29748
|
+
function Vn(e) {
|
|
29267
29749
|
let t = [], n = [], r = [];
|
|
29268
29750
|
for (let i = 0; i < e.length;) {
|
|
29269
29751
|
let a = e.codePointAt(i), o = a > 65535 ? 2 : 1;
|
|
@@ -29275,9 +29757,9 @@ function en(e) {
|
|
|
29275
29757
|
starts: r
|
|
29276
29758
|
};
|
|
29277
29759
|
}
|
|
29278
|
-
var
|
|
29760
|
+
var Hn = class {
|
|
29279
29761
|
computeLevels(e, t, n) {
|
|
29280
|
-
let { cps: r, units: i, starts: a } =
|
|
29762
|
+
let { cps: r, units: i, starts: a } = Vn(e), { levels: o, paragraphLevel: s } = zn(r, t, n ? r.map((e, t) => n[a[t]] ?? null) : void 0), c = new Uint8Array(e.length), l = 0;
|
|
29281
29763
|
for (let e = 0; e < o.length; e++) {
|
|
29282
29764
|
let t = o[e] === -1 ? 255 : o[e];
|
|
29283
29765
|
for (let n = 0; n < i[e]; n++) c[l++] = t;
|
|
@@ -29288,25 +29770,25 @@ var tn = class {
|
|
|
29288
29770
|
};
|
|
29289
29771
|
}
|
|
29290
29772
|
reorderVisual(e, t, n) {
|
|
29291
|
-
return
|
|
29773
|
+
return Bn(e, t, n);
|
|
29292
29774
|
}
|
|
29293
29775
|
getMirror(e) {
|
|
29294
|
-
return
|
|
29776
|
+
return wn(e);
|
|
29295
29777
|
}
|
|
29296
29778
|
};
|
|
29297
|
-
function
|
|
29298
|
-
return new
|
|
29779
|
+
function Un() {
|
|
29780
|
+
return new Hn();
|
|
29299
29781
|
}
|
|
29300
29782
|
//#endregion
|
|
29301
29783
|
//#region packages/core/src/text/bidi/engine.ts
|
|
29302
|
-
var
|
|
29303
|
-
function
|
|
29304
|
-
return
|
|
29784
|
+
var Wn = null;
|
|
29785
|
+
function Gn() {
|
|
29786
|
+
return Wn === null && (Wn = Un()), Wn;
|
|
29305
29787
|
}
|
|
29306
29788
|
//#endregion
|
|
29307
29789
|
//#region packages/core/src/text/bidi/segments.ts
|
|
29308
|
-
function
|
|
29309
|
-
return e === !0 ? "rtl" : e === !1 ? "ltr" :
|
|
29790
|
+
function Kn(e, t) {
|
|
29791
|
+
return e === !0 ? "rtl" : e === !1 ? "ltr" : Gn().computeLevels(t, "auto").paragraphLevel === 1 ? "rtl" : "ltr";
|
|
29310
29792
|
}
|
|
29311
29793
|
//#endregion
|
|
29312
|
-
export {
|
|
29794
|
+
export { I as A, c as B, je as C, Se as D, Ce as E, u as F, t as H, d as I, p as L, P as M, k as N, xe as O, A as P, m as R, Le as S, Te as T, s as V, He as _, pn as a, Be as b, Bt as c, Lt as d, ut as f, nt as g, tt as h, mn as i, L as j, F as k, Vt as l, rt as m, Gn as n, fn as o, ft as p, hn as r, Ht as s, Kn as t, jt as u, We as v, Ie as w, Me as x, Ue as y, l as z };
|