@silurus/ooxml 0.57.0 → 0.58.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.
@@ -20,26 +20,28 @@ function i(e) {
20
20
  }
21
21
  async function a(e, t) {
22
22
  if (typeof document > "u") return;
23
- let n = /* @__PURE__ */ new Set(), a = /* @__PURE__ */ new Set(), o = [];
23
+ let n = /* @__PURE__ */ new Set(), a = /* @__PURE__ */ new Set(), o = [], s = /* @__PURE__ */ new Set();
24
24
  for (let i of e) {
25
25
  if (!i) continue;
26
26
  let e = i.toLowerCase();
27
27
  if (n.has(e)) continue;
28
28
  n.add(e);
29
- let s = t[e];
30
- if (!s) continue;
31
- let c = document.querySelector(`link[href="${s.url}"]`);
32
- if (!c) try {
33
- c = document.createElement("link"), c.rel = "stylesheet", c.href = s.url, document.head.appendChild(c);
29
+ let c = t[e];
30
+ if (!c) continue;
31
+ let l = document.querySelector(`link[href="${c.url}"]`);
32
+ if (!l) try {
33
+ l = document.createElement("link"), l.rel = "stylesheet", l.href = c.url, document.head.appendChild(l);
34
34
  } catch {
35
- c = null;
35
+ s.add((c.loadFamily ?? i).toLowerCase()), l = null;
36
36
  }
37
- c && o.push(r(c)), a.add((s.loadFamily ?? i).toLowerCase());
37
+ l && o.push(r(l)), a.add((c.loadFamily ?? i).toLowerCase());
38
38
  }
39
39
  if (a.size === 0) return;
40
40
  await i(Promise.allSettled(o));
41
- let s = [...document.fonts].filter((e) => a.has(e.family.toLowerCase()));
42
- await i(Promise.allSettled(s.map((e) => e.load())).then(() => document.fonts.ready));
41
+ let c = [...document.fonts].filter((e) => a.has(e.family.toLowerCase()));
42
+ await i(Promise.allSettled(c.map((e) => e.load())).then((e) => (e.forEach((e, t) => {
43
+ e.status === "rejected" && s.add(c[t].family.toLowerCase());
44
+ }), document.fonts.ready))), s.size > 0 && console.warn(`[ooxml] failed to preload web font(s): ${[...s].join(", ")}; falling back to system fonts (text may shift or differ).`);
43
45
  }
44
46
  //#endregion
45
47
  //#region packages/core/src/chart/axis-scale.ts
@@ -241,897 +243,8 @@ function h(e, t) {
241
243
  return o === 0 ? d : `${d}.${l.padEnd(o, "0")}`;
242
244
  }
243
245
  //#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
246
  //#region packages/core/src/shape/pattern-bitmaps.ts
1134
- var te = {
247
+ var g = {
1135
248
  pct5: [
1136
249
  0,
1137
250
  16,
@@ -1513,115 +626,1019 @@ var te = {
1513
626
  90
1514
627
  ]
1515
628
  };
629
+ function _(e, t, n) {
630
+ let r = g[e];
631
+ if (!r) return null;
632
+ let i = v(8, 8);
633
+ if (!i) return null;
634
+ let a = i.getContext("2d");
635
+ if (!a) return null;
636
+ a.fillStyle = y(n), a.fillRect(0, 0, 8, 8), a.fillStyle = y(t);
637
+ for (let e = 0; e < 8; e++) {
638
+ let t = r[e];
639
+ for (let n = 0; n < 8; n++) t & 1 << 7 - n && a.fillRect(n, e, 1, 1);
640
+ }
641
+ return i;
642
+ }
643
+ function v(e, t) {
644
+ if (typeof OffscreenCanvas < "u") return new OffscreenCanvas(e, t);
645
+ if (typeof document < "u") {
646
+ let n = document.createElement("canvas");
647
+ return n.width = e, n.height = t, n;
648
+ }
649
+ return null;
650
+ }
651
+ function y(e) {
652
+ 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})`;
653
+ }
654
+ //#endregion
655
+ //#region packages/core/src/shape/paint.ts
656
+ function b(e, t = 1) {
657
+ let n = e.charCodeAt(0) === 35 ? e.slice(1) : e;
658
+ 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})`;
659
+ }
660
+ function x(e, t, n, r, i, a) {
661
+ if (!e || e.fillType === "none") return null;
662
+ if (e.fillType === "solid") return b(e.color);
663
+ if (e.fillType === "pattern") return C(e, t);
664
+ if (e.fillType === "gradient") {
665
+ let o = e.stops;
666
+ if (o.length === 0) return null;
667
+ if (o.length === 1) return b(o[0].color);
668
+ let s;
669
+ if (e.gradType === "radial") {
670
+ let e = n + i / 2, o = r + a / 2, c = Math.sqrt(i * i + a * a) / 2;
671
+ s = t.createRadialGradient(e, o, 0, e, o, c);
672
+ } else {
673
+ 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;
674
+ s = t.createLinearGradient(c - Math.cos(o) * u, l - Math.sin(o) * u, c + Math.cos(o) * u, l + Math.sin(o) * u);
675
+ }
676
+ for (let e of o) s.addColorStop(Math.min(1, Math.max(0, e.position)), b(e.color));
677
+ return s;
678
+ }
679
+ return null;
680
+ }
681
+ var S = /* @__PURE__ */ new WeakMap();
682
+ function C(e, t) {
683
+ let n = `${e.preset}|${e.fg}|${e.bg}`, r = S.get(t);
684
+ r || (r = /* @__PURE__ */ new Map(), S.set(t, r));
685
+ let i = r.get(n);
686
+ if (i) return i;
687
+ let a = _(e.preset, e.fg, e.bg);
688
+ if (!a) return b(e.fg);
689
+ let o = t.createPattern(a, "repeat");
690
+ return o ? (r.set(n, o), o) : b(e.fg);
691
+ }
692
+ var w = {
693
+ dash: [6, 3],
694
+ dot: [1.5, 3],
695
+ dashDot: [
696
+ 6,
697
+ 3,
698
+ 1.5,
699
+ 3
700
+ ],
701
+ lgDash: [10, 4],
702
+ lgDashDot: [
703
+ 10,
704
+ 4,
705
+ 1.5,
706
+ 4
707
+ ],
708
+ lgDashDotDot: [
709
+ 10,
710
+ 4,
711
+ 1.5,
712
+ 4,
713
+ 1.5,
714
+ 4
715
+ ],
716
+ sysDash: [4, 2],
717
+ sysDot: [1, 2],
718
+ sysDashDot: [
719
+ 4,
720
+ 2,
721
+ 1,
722
+ 2
723
+ ]
724
+ };
725
+ function T(e, t, n) {
726
+ if (!t) {
727
+ e.strokeStyle = "transparent", e.lineWidth = 0, e.setLineDash([]);
728
+ return;
729
+ }
730
+ e.strokeStyle = b(t.color);
731
+ let r = Math.max(.5, t.width * n);
732
+ e.lineWidth = r;
733
+ let i = t.dashStyle ? w[t.dashStyle] : null;
734
+ e.setLineDash(i ? i.map((e) => e * r) : []);
735
+ }
736
+ //#endregion
737
+ //#region packages/core/src/units.ts
738
+ var E = 12700, D = 9525, O = 4 / 3, k = [
739
+ "4472C4",
740
+ "ED7D31",
741
+ "A9D18E",
742
+ "FF0000",
743
+ "70AD47",
744
+ "4BACC6",
745
+ "FFC000",
746
+ "9E480E",
747
+ "843C0C",
748
+ "636363",
749
+ "255E91",
750
+ "967300"
751
+ ];
752
+ function A(e, t) {
753
+ return t?.color ? `#${t.color}` : `#${k[e % k.length]}`;
754
+ }
755
+ function j(e, t) {
756
+ let n = t.dataPointColors?.[e];
757
+ return n ? `#${n}` : `#${k[e % k.length]}`;
758
+ }
759
+ function M(e) {
760
+ return e === "pie" || e === "doughnut";
761
+ }
762
+ function N(e, t, n) {
763
+ if (M(e)) {
764
+ let e = t[0];
765
+ return e ? j(n, e) : `#${k[n % k.length]}`;
766
+ }
767
+ return A(n, t[n]);
768
+ }
769
+ function P(e, t, n, r, i, a, o, s) {
770
+ 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();
771
+ }
772
+ function F(e) {
773
+ return e && (e === "line" || e === "stackedLine" || e === "stackedLinePct" || e === "radar" || e === "scatter") ? "line" : "fill";
774
+ }
775
+ function I(e, t, n, r, i, a, o) {
776
+ if (e.fillStyle = n, t === "line") {
777
+ e.strokeStyle = n;
778
+ let t = e.lineWidth;
779
+ e.lineWidth = Math.max(1.5, o * .15), e.beginPath();
780
+ let s = i + o / 2;
781
+ e.moveTo(r, s), e.lineTo(r + a, s), e.stroke(), e.lineWidth = t;
782
+ } else e.fillRect(r, i, a, o);
783
+ }
784
+ function L(e, t) {
785
+ if (M(t)) {
786
+ let n = e[0], r = n ? n.values.length : 0, i = n?.categories ?? [];
787
+ return Array.from({ length: r }, (n, r) => ({
788
+ label: (i[r] ?? `Item ${r + 1}`).toString(),
789
+ color: N(t, e, r)
790
+ }));
791
+ }
792
+ return e.map((n, r) => ({
793
+ label: n.name || `Series ${r + 1}`,
794
+ color: N(t, e, r)
795
+ }));
796
+ }
797
+ function R(e, t, n, r, i, a, o = "vertical", s) {
798
+ let c = F(s), l = L(t, s);
799
+ if (o === "horizontal") {
800
+ let t = Math.max(9, Math.min(12, a * .7));
801
+ e.font = `${t}px sans-serif`, e.textBaseline = "middle";
802
+ 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;
803
+ for (let n = 0; n < l.length; n++) I(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;
804
+ return;
805
+ }
806
+ let u = Math.max(9, Math.min(12, a / (l.length + 1)));
807
+ e.font = `${u}px sans-serif`, e.textBaseline = "middle";
808
+ let d = u + 4, f = r + (a - d * l.length) / 2;
809
+ for (let t = 0; t < l.length; t++) I(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;
810
+ }
811
+ function ee(e, t, n) {
812
+ if (!e.showLegend) return null;
813
+ let r = e.legendPos ?? "r", i = r === "l" ? "l" : r === "t" ? "t" : r === "b" ? "b" : "r";
814
+ return i === "r" || i === "l" ? {
815
+ side: i,
816
+ reserveW: Math.max(80, t * .22),
817
+ reserveH: 0
818
+ } : {
819
+ side: i,
820
+ reserveW: 0,
821
+ reserveH: Math.max(18, n * .08)
822
+ };
823
+ }
824
+ function te(e, t, n, r, i, a, o, s, c, l, u, d) {
825
+ if (!n) return;
826
+ let f = t.legendManualLayout;
827
+ if (f && f.xMode === "edge" && f.yMode === "edge" && f.w > 0 && f.h > 0) {
828
+ let n = r + f.x * a, s = i + f.y * o, c = f.w * a, l = f.h * o, u = c >= l ? "horizontal" : "vertical";
829
+ R(e, t.series, n, s, c, l, u, t.chartType);
830
+ return;
831
+ }
832
+ switch (n.side) {
833
+ case "r":
834
+ R(e, t.series, r + a - n.reserveW + 4, c, n.reserveW - 8, u, "vertical", t.chartType);
835
+ break;
836
+ case "l":
837
+ R(e, t.series, r + 4, c, n.reserveW - 8, u, "vertical", t.chartType);
838
+ break;
839
+ case "t":
840
+ R(e, t.series, s, i + d, l, n.reserveH, "horizontal", t.chartType);
841
+ break;
842
+ case "b":
843
+ R(e, t.series, s, i + o - n.reserveH, l, n.reserveH, "horizontal", t.chartType);
844
+ break;
845
+ }
846
+ }
847
+ function z(e, t, n, r, i, a, o) {
848
+ if (t === "none" || !t) return;
849
+ let s = o ? Math.max(4, o + 2) : 4, c = e.strokeStyle, l = e.lineWidth;
850
+ if (e.strokeStyle = a ?? "#888", e.lineWidth = o ?? 1, e.beginPath(), n === "val") {
851
+ let n = r, a = i, o = t === "out" || t === "cross" ? -s : 0, c = t === "in" || t === "cross" ? s : 0;
852
+ e.moveTo(n + o, a), e.lineTo(n + c, a);
853
+ } else {
854
+ let n = r, a = i, o = t === "out" || t === "cross" ? s : 0, c = t === "in" || t === "cross" ? -s : 0;
855
+ e.moveTo(a, n + o), e.lineTo(a, n + c);
856
+ }
857
+ e.stroke(), e.strokeStyle = c, e.lineWidth = l;
858
+ }
1516
859
  function ne(e, t, n) {
1517
- let r = te[e];
1518
- if (!r) return null;
1519
- let i = re(8, 8);
1520
- if (!i) return null;
1521
- let a = i.getContext("2d");
1522
- if (!a) return null;
1523
- a.fillStyle = ie(n), a.fillRect(0, 0, 8, 8), a.fillStyle = ie(t);
1524
- for (let e = 0; e < 8; e++) {
1525
- let t = r[e];
1526
- for (let n = 0; n < 8; n++) t & 1 << 7 - n && a.fillRect(n, e, 1, 1);
860
+ return e.titleFontSizeHpt ? e.titleFontSizeHpt / 100 * n : Math.max(10, t * .085);
861
+ }
862
+ function B(e, t, n) {
863
+ return e ? e / 100 * n : Math.max(8, t * .045);
864
+ }
865
+ function re(e, t, n, r, i, a) {
866
+ 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));
867
+ }
868
+ function V(e) {
869
+ if (e.categories.length > 0) return e.categories;
870
+ let t = e.series[0];
871
+ if (t?.categories && t.categories.length > 0) return t.categories;
872
+ let n = 0;
873
+ for (let t of e.series) t.values.length > n && (n = t.values.length);
874
+ return n > 0 ? Array.from({ length: n }, (e, t) => String(t + 1)) : [];
875
+ }
876
+ function H(e, t, n, r, i, a, o, s, c) {
877
+ let l = s ?? "outEnd";
878
+ if (e.fillStyle = c ? `#${c}` : "#333", o === "vertical") {
879
+ let o = n + a / 2;
880
+ 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));
881
+ } else {
882
+ let o = r + a / 2;
883
+ 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));
884
+ }
885
+ }
886
+ function U(e, t, n, r) {
887
+ 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"), g = V(t), _ = g.length;
888
+ if (_ === 0) return;
889
+ let v = t.title ? ne(t, l, r) : 0, y = t.title ? l * .02 : 0, b = t.title ? l * .025 : 0, x = t.title ? v + y + b : 0, S = ee(t, c, l), C = S?.side === "r" ? S.reserveW : 0, w = S?.side === "l" ? S.reserveW : 0, T = S?.side === "t" ? S.reserveH : 0, D = S?.side === "b" ? S.reserveH : 0, O = Math.max(8, Math.min(10, l * .045)), k = t.catAxisTitle ? O + 4 : 0, j = t.valAxisTitle ? O + 4 : 0, M = {
890
+ t: x + T + l * .02,
891
+ r: C + c * .03,
892
+ b: l * .14 + k + D,
893
+ l: c * .12 + j + w
894
+ };
895
+ d && (M.l = (t.catAxisHidden ? c * .03 : c * .22) + j + w, M.b = (t.valAxisHidden ? l * .02 : l * .08) + k + D), re(e, t, i, a + y, c, v);
896
+ let N = t.plotAreaManualLayout, F, I, L, R;
897
+ if (N && N.w != null && N.h != null ? (F = i + N.x * c, I = a + N.y * l, L = N.w * c, R = N.h * l) : (F = i + M.l, I = a + M.t, L = c - M.l - M.r, R = l - M.t - M.b), L <= 0 || R <= 0) return;
898
+ t.plotAreaBg && (e.fillStyle = `#${t.plotAreaBg}`, e.fillRect(F, I, L, R));
899
+ let z = 0;
900
+ for (let e = 0; e < _; e++) {
901
+ let t = 0;
902
+ for (let n of m) {
903
+ let r = n.values[e] ?? 0;
904
+ f ? t += Math.abs(r) : z = Math.max(z, Math.abs(r));
905
+ }
906
+ f && (z = Math.max(z, t));
907
+ }
908
+ p && (z = 100), t.valMax != null && (z = t.valMax), z === 0 && (z = 1);
909
+ let B = o(z), U = t.valMax ?? s(z, B), W = "#e0e0e0", ie = Math.round(U / B);
910
+ if (e.textBaseline = "middle", e.font = `${Math.max(8, Math.min(11, R / 20))}px sans-serif`, e.fillStyle = t.valAxisFontColor ? `#${t.valAxisFontColor}` : "#555", !t.valAxisHidden) for (let n = 0; n <= ie; n++) {
911
+ let r = n * B, i = p ? `${Math.round(r)}%` : u(r, t.valAxisFormatCode);
912
+ if (d) {
913
+ let t = F + r / U * L;
914
+ e.strokeStyle = n === 0 ? "#aaa" : W, e.lineWidth = n === 0 ? 1 : .5, e.beginPath(), e.moveTo(t, I), e.lineTo(t, I + R), e.stroke(), e.textAlign = "center", e.fillText(i, t, I + R + 10);
915
+ } else {
916
+ let t = I + R - r / U * R;
917
+ e.strokeStyle = n === 0 ? "#aaa" : W, e.lineWidth = n === 0 ? 1 : .5, e.beginPath(), e.moveTo(F, t), e.lineTo(F + L, t), e.stroke(), e.textAlign = "right", e.fillText(i, F - 4, t);
918
+ }
919
+ }
920
+ let G = t.catAxisLineColor ? `#${t.catAxisLineColor}` : "#aaa", ae = t.valAxisLineColor ? `#${t.valAxisLineColor}` : "#aaa", oe = t.catAxisLineWidthEmu ? Math.max(.5, t.catAxisLineWidthEmu / E) : 1, se = t.valAxisLineWidthEmu ? Math.max(.5, t.valAxisLineWidthEmu / E) : 1, ce = (t, n, r, i, a, o) => {
921
+ e.strokeStyle = a, e.lineWidth = o, e.beginPath(), e.moveTo(t, n), e.lineTo(r, i), e.stroke();
922
+ }, le = !t.catAxisHidden && !t.catAxisLineHidden, ue = !t.valAxisHidden && !t.valAxisLineHidden && t.valAxisLineColor != null;
923
+ d ? (le && ce(F, I, F, I + R, G, oe), ue && ce(F, I + R, F + L, I + R, ae, se)) : (le && ce(F, I + R, F + L, I + R, G, oe), ue && ce(F, I, F, I + R, ae, se));
924
+ let K = d ? R / _ : L / _, de = f ? 1 : Math.max(1, m.length), fe = f ? 0 : t.barOverlap ?? 0, pe = t.barGapWidth ?? 150, q = K / (1 + (de - 1) * (1 - fe / 100) + pe / 100), me = f ? 0 : q * (1 - fe / 100), J = (K - (q + (de - 1) * me)) / 2;
925
+ for (let n = 0; n < _; n++) {
926
+ let i = 0, a = 0;
927
+ if (p) {
928
+ for (let e of m) a += Math.abs(e.values[n] ?? 0);
929
+ a === 0 && (a = 1);
930
+ }
931
+ for (let o = 0; o < m.length; o++) {
932
+ let s = m[o], c = s.values[n] ?? 0, l = p ? Math.abs(c) / a * 100 : Math.abs(c), h = A(o, s);
933
+ if (d) {
934
+ let a = f ? o : m.length - 1 - o, c = f ? I + (_ - 1 - n) * K + J : I + (_ - 1 - n) * K + J + a * me, d = l / U * L, g = f ? F + i / U * L : F;
935
+ e.fillStyle = h, e.fillRect(g, c, d, q), t.showDataLabels && l > 0 && (e.font = `bold ${t.dataLabelFontSizeHpt ? t.dataLabelFontSizeHpt / 100 * r : Math.max(7, Math.min(11, q * .6))}px sans-serif`, H(e, p ? `${Math.round(l)}%` : u(l, t.dataLabelFormatCode ?? s.valFormatCode ?? null), g, c, d, q, "horizontal", t.dataLabelPosition ?? null, s.labelColor ?? t.dataLabelFontColor ?? null));
936
+ } else {
937
+ let a = f ? F + n * K + J : F + n * K + J + o * me, c = l / U * R, d = I + R - (f ? i + l : l) / U * R;
938
+ e.fillStyle = h, e.fillRect(a, d, q, c), t.showDataLabels && l > 0 && (e.font = `bold ${t.dataLabelFontSizeHpt ? t.dataLabelFontSizeHpt / 100 * r : Math.max(7, Math.min(11, q * .6))}px sans-serif`, H(e, p ? `${Math.round(l)}%` : u(l, t.dataLabelFormatCode ?? s.valFormatCode ?? null), a, d, c, q, "vertical", t.dataLabelPosition ?? null, s.labelColor ?? t.dataLabelFontColor ?? null));
939
+ }
940
+ f && (i += l);
941
+ }
942
+ }
943
+ if (!t.catAxisHidden) {
944
+ e.fillStyle = t.catAxisFontColor ? `#${t.catAxisFontColor}` : "#555", e.font = `${Math.max(8, Math.min(11, K * .5))}px sans-serif`;
945
+ for (let t = 0; t < _; t++) {
946
+ let n = (g[t] ?? "").toString().slice(0, 12);
947
+ if (d) {
948
+ let r = I + (_ - 1 - t) * K + K / 2;
949
+ e.textAlign = "right", e.textBaseline = "middle", e.fillText(n, F - 4, r);
950
+ } else {
951
+ let r = F + t * K + K / 2;
952
+ e.textAlign = "center", e.textBaseline = "top", e.fillText(n, r, I + R + 3);
953
+ }
954
+ }
955
+ }
956
+ if (h.length > 0 && !d) for (let t = 0; t < h.length; t++) {
957
+ let n = h[t], r = A(m.length + t, n);
958
+ e.strokeStyle = r, e.lineWidth = 2, e.setLineDash([]), e.beginPath();
959
+ let i = !1;
960
+ for (let t = 0; t < _; t++) {
961
+ let r = n.values[t];
962
+ if (r == null) {
963
+ i = !1;
964
+ continue;
965
+ }
966
+ let a = F + t * K + K / 2, o = I + R - r / U * R;
967
+ i ? e.lineTo(a, o) : (e.moveTo(a, o), i = !0);
968
+ }
969
+ if (e.stroke(), n.showMarker !== !1) for (let t = 0; t < _; t++) {
970
+ let i = n.values[t];
971
+ if (i == null) continue;
972
+ let a = F + t * K + K / 2, o = I + R - i / U * R;
973
+ e.fillStyle = r, e.beginPath(), e.arc(a, o, 3, 0, Math.PI * 2), e.fill();
974
+ }
975
+ }
976
+ te(e, d && !f ? {
977
+ ...t,
978
+ series: [...t.series].reverse()
979
+ } : t, S, i, a, c, l, F, I, L, R, x + 2), t.catAxisTitle && P(e, t.catAxisTitle, F, I, L, R, "cat", O), t.valAxisTitle && P(e, t.valAxisTitle, F, I, L, R, "val", O);
980
+ }
981
+ function W(e, t, n, r) {
982
+ let { x: i, y: a, w: d, h: f } = n, p = V(t), m = p.length;
983
+ if (m === 0) return;
984
+ let h = t.title ? ne(t, f, r) : 0, g = t.title ? f * .045 : 0, _ = t.title ? f * .035 : 0, v = t.title ? h + g + _ : 0, y = ee(t, d, f), b = y?.side === "r" ? y.reserveW : 0, x = y?.side === "l" ? y.reserveW : 0, S = y?.side === "t" ? y.reserveH : 0, C = y?.side === "b" ? y.reserveH : 0, w = B(t.catAxisFontSizeHpt, f, r), T = B(t.valAxisFontSizeHpt, f, r), E = Math.max(w, T), D = t.catAxisTitle ? E + 4 : 0, O = t.valAxisTitle ? E + 4 : 0, k = {
985
+ t: v + S + T / 2 + 2,
986
+ r: b + d * .05,
987
+ b: w + 12 + D + C,
988
+ l: T * 2.2 + 10 + O + x
989
+ };
990
+ re(e, t, i, a + g, d, h);
991
+ let j = i + k.l, M = a + k.t, N = d - k.l - k.r, F = f - k.t - k.b;
992
+ if (N <= 0 || F <= 0) return;
993
+ t.plotAreaBg && (e.fillStyle = `#${t.plotAreaBg}`, e.fillRect(j, M, N, F));
994
+ let I = Infinity, L = -Infinity;
995
+ for (let e of t.series) for (let t of e.values) t != null && (I = Math.min(I, t), L = Math.max(L, t));
996
+ isFinite(I) || (I = 0, L = 1), t.valMin == null ? I > 0 && (I = 0) : I = t.valMin, t.valMax == null ? L < 0 && (L = 0) : L = t.valMax, L === I && (L = I + 1);
997
+ let R = o(L - I), H = t.valMin ?? c(I, R), U = t.valMax ?? s(L, R), W = U - H;
998
+ if (W === 0) return;
999
+ let ie = (e) => M + F - (e - H) / W * F, G = t.catAxisCrossBetween === "midCat" ? (e) => j + (m === 1 ? N / 2 : e / (m - 1) * N) : (e) => j + (e + .5) / m * N;
1000
+ if (!t.valAxisHidden) {
1001
+ let n = Math.round((U - H) / R);
1002
+ e.font = `${T}px sans-serif`, e.textBaseline = "middle";
1003
+ for (let r = 0; r <= n; r++) {
1004
+ let n = H + r * R, i = ie(n);
1005
+ e.strokeStyle = n === 0 ? "#aaa" : "#e0e0e0", e.lineWidth = n === 0 ? 1 : .5, e.beginPath(), e.moveTo(j, i), e.lineTo(j + N, i), e.stroke(), z(e, t.valAxisMajorTickMark, "val", j, i), e.fillStyle = t.valAxisFontColor ? `#${t.valAxisFontColor}` : "#555", e.textAlign = "right", e.fillText(u(n, t.valAxisFormatCode), j - 6, i);
1006
+ }
1007
+ }
1008
+ e.strokeStyle = "#aaa", e.lineWidth = 1, !t.catAxisHidden && !t.catAxisLineHidden && (e.beginPath(), e.moveTo(j, M + F), e.lineTo(j + N, M + F), e.stroke()), !t.valAxisHidden && !t.valAxisLineHidden && (e.beginPath(), e.moveTo(j, M), e.lineTo(j, M + F), e.stroke());
1009
+ let ae = Math.max(1, 2.25 * r), oe = Math.max(2, 2.5 * r), se = B(t.dataLabelFontSizeHpt, f, r);
1010
+ for (let n = 0; n < t.series.length; n++) {
1011
+ let r = t.series[n], i = A(n, r);
1012
+ e.strokeStyle = i, e.lineWidth = ae, e.setLineDash([]), e.beginPath();
1013
+ let a = !1;
1014
+ for (let t = 0; t < m; t++) {
1015
+ let n = r.values[t];
1016
+ if (n == null) {
1017
+ a = !1;
1018
+ continue;
1019
+ }
1020
+ let i = G(t), o = ie(n);
1021
+ a ? e.lineTo(i, o) : (e.moveTo(i, o), a = !0);
1022
+ }
1023
+ e.stroke(), e.fillStyle = i;
1024
+ let o = r.showMarker !== !1;
1025
+ for (let n = 0; n < m; n++) {
1026
+ let a = r.values[n];
1027
+ if (a != null && (o && (e.beginPath(), e.arc(G(n), ie(a), oe, 0, Math.PI * 2), e.fill()), t.showDataLabels)) {
1028
+ e.font = `${se}px sans-serif`, e.fillStyle = "#333", e.textAlign = "center", e.textBaseline = "bottom";
1029
+ let t = o ? oe + 1 : 2;
1030
+ e.fillText(l(a), G(n), ie(a) - t), e.fillStyle = i;
1031
+ }
1032
+ }
1033
+ }
1034
+ if (!t.catAxisHidden) {
1035
+ let n = Math.max(1, Math.ceil(m / 8)), r = t.catAxisFontColor ? `#${t.catAxisFontColor}` : "#555";
1036
+ e.fillStyle = r, e.textAlign = "center", e.textBaseline = "top", e.font = `${w}px sans-serif`;
1037
+ for (let i = 0; i < m; i += n) {
1038
+ let n = G(i);
1039
+ z(e, t.catAxisMajorTickMark, "cat", M + F, n), e.fillStyle = r, e.fillText((p[i] ?? "").toString().slice(0, 10), n, M + F + 5);
1040
+ }
1041
+ }
1042
+ te(e, t, y, i, a, d, f, j, M, N, F, v + 2), t.catAxisTitle && P(e, t.catAxisTitle, j, M, N, F, "cat", E), t.valAxisTitle && P(e, t.valAxisTitle, j, M, N, F, "val", E);
1043
+ }
1044
+ function ie(e, t, n, r) {
1045
+ let { x: i, y: a, w: c, h: l } = n, d = V(t), f = d.length;
1046
+ if (f === 0) return;
1047
+ let p = t.chartType === "stackedArea" || t.chartType === "stackedAreaPct", m = t.title ? ne(t, l, r) : 0, h = t.title ? l * .035 : 0, g = t.title ? l * .035 : 0, _ = t.title ? m + h + g : 0, v = ee(t, c, l), y = v?.side === "r" ? v.reserveW : 0, x = v?.side === "l" ? v.reserveW : 0, S = v?.side === "t" ? v.reserveH : 0, C = v?.side === "b" ? v.reserveH : 0, w = Math.max(8, Math.min(10, l * .045)), T = t.catAxisTitle ? w + 4 : 0, E = t.valAxisTitle ? w + 4 : 0, D = {
1048
+ t: _ + S + l * .02,
1049
+ r: y + c * .05,
1050
+ b: l * .14 + T + C,
1051
+ l: c * .12 + E + x
1052
+ };
1053
+ re(e, t, i, a + h, c, m);
1054
+ let O = i + D.l, k = a + D.t, j = c - D.l - D.r, M = l - D.t - D.b;
1055
+ if (j <= 0 || M <= 0) return;
1056
+ t.plotAreaBg && (e.fillStyle = `#${t.plotAreaBg}`, e.fillRect(O, k, j, M));
1057
+ let N = 0;
1058
+ for (let e = 0; e < f; e++) if (p) {
1059
+ let n = 0;
1060
+ for (let r of t.series) n += r.values[e] ?? 0;
1061
+ N = Math.max(N, n);
1062
+ } else for (let n of t.series) N = Math.max(N, n.values[e] ?? 0);
1063
+ t.valMax != null && (N = t.valMax), N === 0 && (N = 1);
1064
+ let F = o(N), I = t.valMax ?? s(N, F), L = (e) => O + (f === 1 ? j / 2 : e / (f - 1) * j), R = (e) => k + M - e / I * M;
1065
+ if (!t.valAxisHidden) {
1066
+ e.font = `${Math.max(8, Math.min(11, M / 20))}px sans-serif`, e.textBaseline = "middle";
1067
+ let n = Math.round(I / F);
1068
+ for (let r = 0; r <= n; r++) {
1069
+ let n = r * F, i = R(n);
1070
+ e.strokeStyle = r === 0 ? "#aaa" : "#e0e0e0", e.lineWidth = r === 0 ? 1 : .5, e.beginPath(), e.moveTo(O, i), e.lineTo(O + j, i), e.stroke(), e.fillStyle = t.valAxisFontColor ? `#${t.valAxisFontColor}` : "#555", e.textAlign = "right", e.fillText(u(n, t.valAxisFormatCode), O - 4, i);
1071
+ }
1072
+ }
1073
+ !t.catAxisHidden && !t.catAxisLineHidden && (e.strokeStyle = "#aaa", e.lineWidth = 1, e.beginPath(), e.moveTo(O, k + M), e.lineTo(O + j, k + M), e.stroke());
1074
+ let z = p ? Array(f).fill(0) : null;
1075
+ for (let n = t.series.length - 1; n >= 0; n--) {
1076
+ let r = t.series[n], i = A(n, r), a = k + M;
1077
+ if (e.beginPath(), p && z) {
1078
+ for (let t = 0; t < f; t++) {
1079
+ let n = (r.values[t] ?? 0) + z[t], i = L(t), a = R(n);
1080
+ t === 0 ? e.moveTo(i, a) : e.lineTo(i, a);
1081
+ }
1082
+ for (let t = f - 1; t >= 0; t--) e.lineTo(L(t), R(z[t]));
1083
+ for (let e = 0; e < f; e++) z[e] += r.values[e] ?? 0;
1084
+ } else {
1085
+ e.moveTo(L(0), a);
1086
+ for (let t = 0; t < f; t++) e.lineTo(L(t), R(r.values[t] ?? 0));
1087
+ e.lineTo(L(f - 1), a);
1088
+ }
1089
+ e.closePath(), e.fillStyle = b(i, .6), e.fill(), e.strokeStyle = i, e.lineWidth = 1.5, e.setLineDash([]), e.stroke();
1090
+ }
1091
+ if (!t.catAxisHidden) {
1092
+ let n = Math.max(1, Math.ceil(f / 8));
1093
+ e.fillStyle = t.catAxisFontColor ? `#${t.catAxisFontColor}` : "#555", e.textAlign = "center", e.textBaseline = "top", e.font = `${Math.max(8, Math.min(11, j / f * .8))}px sans-serif`;
1094
+ for (let t = 0; t < f; t += n) e.fillText((d[t] ?? "").toString().slice(0, 10), L(t), k + M + 3);
1095
+ }
1096
+ te(e, t, v, i, a, c, l, O, k, j, M, _ + 2), t.catAxisTitle && P(e, t.catAxisTitle, O, k, j, M, "cat", w), t.valAxisTitle && P(e, t.valAxisTitle, O, k, j, M, "val", w);
1097
+ }
1098
+ function G(e, t, n, r, i) {
1099
+ let { x: a, y: o, w: s, h: c } = n, l = t.series[0];
1100
+ if (!l) return;
1101
+ 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);
1102
+ if (f === 0) return;
1103
+ let p = t.title ? ne(t, c, i) : 0, m = t.title ? c * .035 : 0, h = t.title ? c * .035 : 0, g = t.title ? p + m + h : 0;
1104
+ re(e, t, a, o + m, s, p);
1105
+ let _ = t.showLegend ? (() => {
1106
+ let e = t.legendPos ?? "r", n = e === "l" ? "l" : e === "t" ? "t" : e === "b" ? "b" : "r";
1107
+ return n === "r" || n === "l" ? {
1108
+ side: n,
1109
+ reserveW: Math.max(80, s * .28),
1110
+ reserveH: 0
1111
+ } : {
1112
+ side: n,
1113
+ reserveW: 0,
1114
+ reserveH: Math.max(18, c * .08)
1115
+ };
1116
+ })() : 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;
1117
+ for (let n = 0; n < d.length; n++) {
1118
+ let i = d[n] / f * Math.PI * 2, a = j(n, l);
1119
+ 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) {
1120
+ 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);
1121
+ 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);
1122
+ }
1123
+ O += i;
1124
+ }
1125
+ if (r && (e.beginPath(), e.arc(w, T, D, 0, Math.PI * 2), e.fillStyle = "#fff", e.fill()), _) {
1126
+ let n = [{
1127
+ ...l,
1128
+ categories: u
1129
+ }], r = w - S / 2;
1130
+ te(e, {
1131
+ ...t,
1132
+ series: n
1133
+ }, _, a, o, s, c, r, T - C / 2, S, C, g + 2);
1134
+ }
1135
+ }
1136
+ function ae(e, t, n, r) {
1137
+ let { x: i, y: a, w: c, h: u } = n, d = V(t), f = d.length;
1138
+ if (f < 3) return;
1139
+ let p = t.title ? ne(t, u, r) : 0, m = t.title ? u * .035 : 0, h = t.title ? u * .035 : 0, g = t.title ? p + m + h : 0, _ = ee(t, c, u), v = _?.side === "r" ? _.reserveW : 0, y = _?.side === "l" ? _.reserveW : 0, x = _?.side === "t" ? _.reserveH : 0, S = _?.side === "b" ? _.reserveH : 0;
1140
+ re(e, t, i, a + m, c, p);
1141
+ let C = c - v - y, w = u - g - x - S - u * .02, T = i + y + C / 2, E = a + g + x + u * .02 + w / 2, D = Math.min(C, w) * .38, O = 0;
1142
+ for (let e of t.series) for (let t of e.values) O = Math.max(O, t ?? 0);
1143
+ t.valMax != null && (O = t.valMax), O === 0 && (O = 1);
1144
+ let k = o(O), j = t.valMax ?? s(O, k), M = -Math.PI / 2, N = (e) => M + e / f * Math.PI * 2, P = Math.round(j / k);
1145
+ e.strokeStyle = "#ddd", e.lineWidth = .5;
1146
+ for (let t = 1; t <= P; t++) {
1147
+ let n = t / P * D;
1148
+ e.beginPath();
1149
+ for (let t = 0; t < f; t++) {
1150
+ let r = N(t), i = T + Math.cos(r) * n, a = E + Math.sin(r) * n;
1151
+ t === 0 ? e.moveTo(i, a) : e.lineTo(i, a);
1152
+ }
1153
+ e.closePath(), e.stroke();
1154
+ }
1155
+ e.strokeStyle = "#bbb", e.lineWidth = .5;
1156
+ for (let t = 0; t < f; t++) {
1157
+ let n = N(t);
1158
+ e.beginPath(), e.moveTo(T, E), e.lineTo(T + Math.cos(n) * D, E + Math.sin(n) * D), e.stroke();
1159
+ }
1160
+ if (!t.valAxisHidden) {
1161
+ e.font = `${B(t.valAxisFontSizeHpt, u, r)}px sans-serif`, e.fillStyle = "#555", e.textAlign = "right", e.textBaseline = "middle";
1162
+ for (let t = 1; t <= P; t++) {
1163
+ let n = t / P * j, r = t / P * D;
1164
+ e.fillText(l(n), T - 3, E - r);
1165
+ }
1166
+ }
1167
+ e.font = `${Math.max(8, Math.min(11, D * .2))}px sans-serif`, e.fillStyle = "#444", e.textBaseline = "middle";
1168
+ for (let t = 0; t < f; t++) {
1169
+ let n = N(t), r = T + Math.cos(n) * (D + 12), i = E + Math.sin(n) * (D + 12);
1170
+ e.textAlign = Math.cos(n) < -.1 ? "right" : Math.cos(n) > .1 ? "left" : "center", e.fillText((d[t] ?? "").toString().slice(0, 12), r, i);
1171
+ }
1172
+ let F = t.radarStyle === "filled", I = Math.max(2, D * .025);
1173
+ for (let n = 0; n < t.series.length; n++) {
1174
+ let r = t.series[n], i = A(n, r), a = [];
1175
+ for (let e = 0; e < f; e++) {
1176
+ let t = r.values[e];
1177
+ if (t == null) {
1178
+ a.push(null);
1179
+ continue;
1180
+ }
1181
+ let n = t / j, i = N(e);
1182
+ a.push([T + Math.cos(i) * D * n, E + Math.sin(i) * D * n]);
1183
+ }
1184
+ e.beginPath();
1185
+ let o = !1;
1186
+ for (let t of a) {
1187
+ if (t == null) {
1188
+ o = !1;
1189
+ continue;
1190
+ }
1191
+ o ? e.lineTo(t[0], t[1]) : (e.moveTo(t[0], t[1]), o = !0);
1192
+ }
1193
+ let s = a.every((e) => e != null);
1194
+ if (F && s ? (e.closePath(), e.fillStyle = b(i, .25), e.fill()) : s && e.closePath(), e.strokeStyle = i, e.lineWidth = 2, e.stroke(), !F && r.showMarker !== !1) {
1195
+ e.fillStyle = i;
1196
+ for (let t of a) t != null && (e.beginPath(), e.arc(t[0], t[1], I, 0, Math.PI * 2), e.fill());
1197
+ }
1198
+ }
1199
+ te(e, t, _, i, a, c, u, T - C / 2, E - w / 2, C, w, g + 2);
1200
+ }
1201
+ function oe(e, t, n, r) {
1202
+ let { x: i, y: a, w: s, h: c } = n, l = t.title ? ne(t, c, r) : 0, d = t.title ? c * .035 : 0, f = t.title ? c * .035 : 0, p = t.title ? l + d + f : 0, m = ee(t, s, c), h = m?.side === "r" ? m.reserveW : 0, g = m?.side === "l" ? m.reserveW : 0, _ = m?.side === "t" ? m.reserveH : 0, v = m?.side === "b" ? m.reserveH : 0, y = Math.max(8, Math.min(10, c * .045)), b = t.catAxisTitle ? y + 4 : 0, x = t.valAxisTitle ? y + 4 : 0;
1203
+ if (t.title) {
1204
+ let n = t.titleManualLayout;
1205
+ n && (n.x !== void 0 || n.y !== void 0) ? re(e, t, i + n.x * s, a + n.y * c, (n.w ?? .5) * s, l) : re(e, t, i, a + d, s, l);
1527
1206
  }
1528
- return i;
1207
+ let S = t.plotAreaManualLayout, C, w, T, D;
1208
+ if (S && S.w != null && S.h != null) C = i + S.x * s, w = a + S.y * c, T = S.w * s, D = S.h * c;
1209
+ else {
1210
+ let e = {
1211
+ t: p + _ + c * .02,
1212
+ r: h + s * .05,
1213
+ b: (t.catAxisHidden ? c * .04 : c * .12) + b + v,
1214
+ l: (t.valAxisHidden ? s * .04 : s * .12) + x + g
1215
+ };
1216
+ C = i + e.l, w = a + e.t, T = s - e.l - e.r, D = c - e.t - e.b;
1217
+ }
1218
+ if (T <= 0 || D <= 0) return;
1219
+ t.plotAreaBg && (e.fillStyle = `#${t.plotAreaBg}`, e.fillRect(C, w, T, D));
1220
+ let O = [], k = [];
1221
+ for (let e of t.series) {
1222
+ let t = e.categories ?? [];
1223
+ for (let e of t) {
1224
+ let t = parseFloat(e);
1225
+ isNaN(t) || O.push(t);
1226
+ }
1227
+ for (let t of e.values) t != null && k.push(t);
1228
+ }
1229
+ let j = O.length === 0;
1230
+ if (j) {
1231
+ let e = Math.max(...t.series.map((e) => e.values.length));
1232
+ for (let t = 0; t < e; t++) O.push(t);
1233
+ }
1234
+ let M = Math.min(...O), N = Math.max(...O), F = Math.min(...k), I = Math.max(...k);
1235
+ if (M === N && (--M, N += 1), F === I && (--F, I += 1), t.valMin == null ? F > 0 && (F = 0) : F = t.valMin, t.valMax != null && (I = t.valMax), t.catAxisMin != null && (M = t.catAxisMin), t.catAxisMax != null && (N = t.catAxisMax), t.catAxisMin == null || t.catAxisMax == null) {
1236
+ let e = o(N - M);
1237
+ e > 0 && (t.catAxisMin ?? (M = Math.floor(M / e) * e), t.catAxisMax ?? (N = Math.ceil(N / e) * e));
1238
+ }
1239
+ let L = (e) => C + (e - M) / (N - M) * T, R = (e) => w + D - (e - F) / (I - F) * D;
1240
+ if (!t.valAxisHidden) {
1241
+ let n = Math.max(8, Math.min(11, D / 20));
1242
+ e.font = `${t.valAxisFontBold ? "bold " : ""}${n}px sans-serif`;
1243
+ let r = o(I - F), i = Math.round((I - F) / r) + 1;
1244
+ for (let n = 0; n < i; n++) {
1245
+ let i = F + n * r;
1246
+ if (i > I + r * .01) break;
1247
+ let a = R(i);
1248
+ 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(u(i, t.valAxisFormatCode), C - 4, a);
1249
+ let o = t.valAxisLineColor ? `#${t.valAxisLineColor}` : void 0, s = t.valAxisLineWidthEmu ? Math.max(.5, t.valAxisLineWidthEmu / E) : void 0;
1250
+ z(e, t.valAxisMajorTickMark, "val", C, a, o, s);
1251
+ }
1252
+ }
1253
+ let B = w + D;
1254
+ if (t.catAxisCrossesAt != null) B = K(R(t.catAxisCrossesAt), w, w + D);
1255
+ else {
1256
+ let e = t.catAxisCrosses ?? "autoZero";
1257
+ e === "autoZero" && F < 0 && I > 0 ? B = K(R(0), w, w + D) : e === "min" ? B = w + D : e === "max" && (B = w);
1258
+ }
1259
+ if (!t.catAxisHidden && !t.catAxisLineHidden && (e.save(), e.strokeStyle = t.catAxisLineColor ? `#${t.catAxisLineColor}` : "#888", e.lineWidth = t.catAxisLineWidthEmu ? Math.max(.5, t.catAxisLineWidthEmu / E) : 1, e.lineCap = "butt", e.beginPath(), e.moveTo(C, B), e.lineTo(C + T, B), 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 / E) : 1, e.beginPath(), e.moveTo(C, w), e.lineTo(C, w + D), e.stroke(), e.restore()), !t.catAxisHidden) {
1260
+ let n = Math.max(8, Math.min(11, D / 20));
1261
+ e.font = `${t.catAxisFontBold ? "bold " : ""}${n}px sans-serif`;
1262
+ let r = o(N - M), i = Math.round((N - M) / r) + 1;
1263
+ e.fillStyle = "#555", e.textAlign = "center", e.textBaseline = "top";
1264
+ for (let n = 0; n < i; n++) {
1265
+ let i = M + n * r;
1266
+ if (i > N + r * .01) break;
1267
+ let a = L(i);
1268
+ e.fillText(u(i, t.catAxisFormatCode), a, B + 4);
1269
+ let o = t.catAxisLineColor ? `#${t.catAxisLineColor}` : void 0, s = t.catAxisLineWidthEmu ? Math.max(.5, t.catAxisLineWidthEmu / E) : void 0;
1270
+ z(e, t.catAxisMajorTickMark, "cat", B, a, o, s);
1271
+ }
1272
+ }
1273
+ let V = t.chartType === "bubble", H = V ? "marker" : t.scatterStyle ?? "marker", U = H === "line" || H === "lineMarker" || H === "lineNoMarker", W = H === "smooth" || H === "smoothMarker" || H === "smoothNoMarker", ie = H === "lineNoMarker" || H === "smoothNoMarker";
1274
+ for (let n = 0; n < t.series.length; n++) {
1275
+ let i = t.series[n], a = A(n, i), o = i.categories ?? [];
1276
+ for (let t of i.errBars ?? []) ce(e, i, t, o, j, L, R, a);
1277
+ if (U || W) {
1278
+ let t = [];
1279
+ for (let e = 0; e < i.values.length; e++) {
1280
+ let n = i.values[e];
1281
+ if (n == null) continue;
1282
+ let r = j ? e : parseFloat(o[e] ?? "0");
1283
+ isNaN(r) || t.push({
1284
+ x: L(r),
1285
+ y: R(n)
1286
+ });
1287
+ }
1288
+ if (t.length >= 2) {
1289
+ if (e.save(), e.strokeStyle = i.color ? `#${i.color}` : a, e.lineWidth = 1.5, e.beginPath(), e.moveTo(t[0].x, t[0].y), W && t.length >= 3) for (let n = 0; n < t.length - 1; n++) {
1290
+ 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;
1291
+ e.bezierCurveTo(s, c, l, u, a.x, a.y);
1292
+ }
1293
+ else for (let n = 1; n < t.length; n++) e.lineTo(t[n].x, t[n].y);
1294
+ e.stroke(), e.restore();
1295
+ }
1296
+ }
1297
+ if (!(ie || i.showMarker === !1 || typeof i.markerSymbol == "string" && i.markerSymbol === "none")) {
1298
+ let t = 0;
1299
+ if (V && i.bubbleSizes && i.bubbleSizes.length > 0) {
1300
+ let e = Math.max(0, ...i.bubbleSizes.filter((e) => e != null));
1301
+ e > 0 && (t = Math.min(T, D) / Math.max(8, i.values.length * 1.6) / Math.sqrt(e));
1302
+ }
1303
+ for (let n = 0; n < i.values.length; n++) {
1304
+ let s = i.values[n];
1305
+ if (s == null) continue;
1306
+ let c = j ? n : parseFloat(o[n] ?? "0");
1307
+ if (isNaN(c)) continue;
1308
+ let l = (i.dataPointOverrides ?? []).find((e) => e.idx === n), u = l?.markerSymbol ?? i.markerSymbol ?? "circle", d = l?.markerSize ?? i.markerSize ?? 5;
1309
+ if (V && t > 0) {
1310
+ let e = i.bubbleSizes?.[n];
1311
+ e != null && e > 0 && (d = Math.sqrt(e) * t * 2 / r);
1312
+ }
1313
+ let f = l?.markerFill ?? l?.color ?? i.markerFill ?? a, p = l?.markerLine ?? i.markerLine ?? null;
1314
+ se(e, L(c), R(s), u, d, f, p, r);
1315
+ }
1316
+ }
1317
+ le(e, i, o, j, L, R, D, r);
1318
+ }
1319
+ te(e, t, m, i, a, s, c, C, w, T, D, p + 2), t.catAxisTitle && P(e, t.catAxisTitle, C, w, T, D, "cat", y), t.valAxisTitle && P(e, t.valAxisTitle, C, w, T, D, "val", y);
1529
1320
  }
1530
- function re(e, t) {
1531
- if (typeof OffscreenCanvas < "u") return new OffscreenCanvas(e, t);
1532
- if (typeof document < "u") {
1533
- let n = document.createElement("canvas");
1534
- return n.width = e, n.height = t, n;
1321
+ function se(e, t, n, r, i, a, o, s) {
1322
+ let c = Math.max(2, i * s), l = c / 2, u = a.startsWith("#") ? a : `#${a}`, d = o ? o.startsWith("#") ? o : `#${o}` : null;
1323
+ switch (e.save(), e.fillStyle = u, d && (e.strokeStyle = d, e.lineWidth = 1), r) {
1324
+ case "square":
1325
+ e.fillRect(t - l, n - l, c, c), o && e.strokeRect(t - l, n - l, c, c);
1326
+ break;
1327
+ case "diamond":
1328
+ 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();
1329
+ break;
1330
+ case "triangle":
1331
+ 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();
1332
+ break;
1333
+ case "x":
1334
+ 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();
1335
+ break;
1336
+ case "plus":
1337
+ 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();
1338
+ break;
1339
+ case "star":
1340
+ e.beginPath();
1341
+ for (let r = 0; r < 10; r++) {
1342
+ 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;
1343
+ r === 0 ? e.moveTo(o, s) : e.lineTo(o, s);
1344
+ }
1345
+ e.closePath(), e.fill(), o && e.stroke();
1346
+ break;
1347
+ case "dot":
1348
+ e.beginPath(), e.arc(t, n, Math.max(1, c * .25), 0, Math.PI * 2), e.fill();
1349
+ break;
1350
+ case "dash": {
1351
+ let r = Math.max(1, c * .25);
1352
+ e.fillRect(t - l, n - r / 2, c, r);
1353
+ break;
1354
+ }
1355
+ default:
1356
+ e.beginPath(), e.arc(t, n, l, 0, Math.PI * 2), e.fill(), o && e.stroke();
1357
+ break;
1358
+ }
1359
+ e.restore();
1360
+ }
1361
+ function ce(e, t, n, r, i, a, o, s) {
1362
+ e.save(), e.strokeStyle = n.color ? `#${n.color}` : s, e.lineWidth = n.lineWidthEmu ? Math.max(.5, n.lineWidthEmu / E) : 1, e.setLineDash(de(n.dash));
1363
+ let c = n.barType === "plus" || n.barType === "both", l = n.barType === "minus" || n.barType === "both", u = n.dir === "x", d = e.lineWidth * 1.5;
1364
+ for (let s = 0; s < t.values.length; s++) {
1365
+ let f = t.values[s];
1366
+ if (f == null) continue;
1367
+ let p = i ? s : parseFloat(r[s] ?? "0");
1368
+ if (isNaN(p)) continue;
1369
+ let m = a(p), h = o(f), g = (t) => {
1370
+ let r = m, i = h;
1371
+ 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());
1372
+ };
1373
+ if (c) {
1374
+ let e = n.plus[s];
1375
+ e != null && g(e);
1376
+ }
1377
+ if (l) {
1378
+ let e = n.minus[s];
1379
+ e != null && g(-e);
1380
+ }
1381
+ }
1382
+ e.restore();
1383
+ }
1384
+ function le(e, t, n, r, i, a, o, s) {
1385
+ let c = t.dataLabelOverrides ?? [];
1386
+ if (c.length === 0 && !t.seriesDataLabels) return;
1387
+ let l = t.seriesDataLabels;
1388
+ for (let d = 0; d < t.values.length; d++) {
1389
+ let f = t.values[d];
1390
+ if (f == null) continue;
1391
+ let p = r ? d : parseFloat(n[d] ?? "0");
1392
+ if (isNaN(p)) continue;
1393
+ let m = c.find((e) => e.idx === d), h;
1394
+ if (m) {
1395
+ if (m.text === "") continue;
1396
+ h = m.text;
1397
+ } else if (l && (l.showVal || l.showSerName || l.showCatName)) {
1398
+ let e = [];
1399
+ 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;
1400
+ } else continue;
1401
+ 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;
1402
+ ue(e, i(p), a(f), h, g, v, y, b);
1403
+ }
1404
+ }
1405
+ function ue(e, t, n, r, i, a, o, s) {
1406
+ e.save(), e.font = `${s ? "bold " : ""}${a}px sans-serif`, e.fillStyle = o ? `#${o}` : "#333";
1407
+ let c = a * .6, l = t, u = n;
1408
+ switch (i) {
1409
+ case "l":
1410
+ e.textAlign = "right", e.textBaseline = "middle", l = t - c;
1411
+ break;
1412
+ case "r":
1413
+ e.textAlign = "left", e.textBaseline = "middle", l = t + c;
1414
+ break;
1415
+ case "t":
1416
+ e.textAlign = "center", e.textBaseline = "bottom", u = n - c;
1417
+ break;
1418
+ case "b":
1419
+ e.textAlign = "center", e.textBaseline = "top", u = n + c;
1420
+ break;
1421
+ case "ctr":
1422
+ e.textAlign = "center", e.textBaseline = "middle";
1423
+ break;
1424
+ default:
1425
+ e.textAlign = "left", e.textBaseline = "middle", l = t + c;
1426
+ break;
1427
+ }
1428
+ let d = r.split(/\r?\n/), f = a * 1.15, p = f * d.length, m = u;
1429
+ e.textBaseline === "middle" ? m = u - (p - f) / 2 : e.textBaseline === "bottom" && (m = u - (p - f));
1430
+ for (let t of d) e.fillText(t, l, m), m += f;
1431
+ e.restore();
1432
+ }
1433
+ function K(e, t, n) {
1434
+ return e < t ? t : e > n ? n : e;
1435
+ }
1436
+ function de(e) {
1437
+ if (!e) return [];
1438
+ switch (e) {
1439
+ case "solid": return [];
1440
+ case "dot":
1441
+ case "sysDot": return [1, 2];
1442
+ case "dash":
1443
+ case "sysDash": return [4, 2];
1444
+ case "lgDash": return [8, 3];
1445
+ case "dashDot":
1446
+ case "sysDashDot": return [
1447
+ 4,
1448
+ 2,
1449
+ 1,
1450
+ 2
1451
+ ];
1452
+ case "lgDashDot": return [
1453
+ 8,
1454
+ 3,
1455
+ 1,
1456
+ 3
1457
+ ];
1458
+ case "dashDotDot":
1459
+ case "sysDashDotDot":
1460
+ case "lgDashDotDot": return [
1461
+ 4,
1462
+ 2,
1463
+ 1,
1464
+ 2,
1465
+ 1,
1466
+ 2
1467
+ ];
1468
+ default: return [];
1469
+ }
1470
+ }
1471
+ function fe(e, t, n) {
1472
+ let { x: r, y: i, w: a, h: s } = n, c = t.plotAreaManualLayout, l, u, d, f;
1473
+ 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;
1474
+ else {
1475
+ let e = t.valAxisHidden ? a * .01 : a * .11, n = a * .01, o = s * .12, c = s * .14;
1476
+ l = r + e, u = i + o, d = a - e - n, f = s - o - c;
1477
+ }
1478
+ let p = t.series[0]?.values ?? [], m = t.categories, h = m.length;
1479
+ if (h === 0) return;
1480
+ let g = new Set(t.subtotalIndices), _ = 0, v = [];
1481
+ for (let e = 0; e < h; e++) {
1482
+ let t = p[e] ?? 0;
1483
+ if (e === 0 || g.has(e)) v.push({
1484
+ start: 0,
1485
+ end: t,
1486
+ isSub: !0,
1487
+ isPos: !0
1488
+ }), _ = t;
1489
+ else {
1490
+ let e = t >= 0 ? _ : _ + t, n = t >= 0 ? _ + t : _;
1491
+ v.push({
1492
+ start: e,
1493
+ end: n,
1494
+ isSub: !1,
1495
+ isPos: t >= 0
1496
+ }), _ += t;
1497
+ }
1498
+ }
1499
+ 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;
1500
+ if (C <= 0) return;
1501
+ let w = S < 0 ? S - C * .05 : 0, T = (x - w) * 1.1, E = w + T, D = o(T);
1502
+ e.save();
1503
+ let O = Math.round(s * .042);
1504
+ if (e.font = `${O}px sans-serif`, !t.valAxisHidden) {
1505
+ e.strokeStyle = "#e8e8e8", e.lineWidth = .7, e.fillStyle = "#666", e.textAlign = "right", e.textBaseline = "middle";
1506
+ for (let t = Math.ceil(w / D) * D; t <= E; t += D) {
1507
+ let n = u + f * (1 - (t - w) / T);
1508
+ e.beginPath(), e.moveTo(l, n), e.lineTo(l + d, n), e.stroke(), e.fillText(t.toLocaleString(), l - 4, n);
1509
+ }
1510
+ }
1511
+ let k = !t.valAxisHidden && !t.valAxisLineHidden, A = !t.catAxisHidden && !t.catAxisLineHidden;
1512
+ (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());
1513
+ let j = d / h, M = j / (1 + (t.barGapWidth ?? 150) / 100);
1514
+ v.forEach((n, r) => {
1515
+ 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);
1516
+ 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) {
1517
+ let t = l + j * (r + 1) + (j - M) / 2, s = n.isPos ? a : o;
1518
+ 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([]);
1519
+ }
1520
+ let d = p[r] ?? 0, m = d < 0 ? `△ ${Math.abs(d).toLocaleString()}` : d.toLocaleString(), g = t.series[0]?.dataLabelColors?.[r] ?? null;
1521
+ 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));
1522
+ }), e.textAlign = "center", e.textBaseline = "top", e.fillStyle = "#666", e.font = `${Math.round(s * .038)}px sans-serif`;
1523
+ let N = u + f + 4;
1524
+ for (let t = 0; t < h; t++) {
1525
+ let n = l + j * t + j / 2;
1526
+ m[t].split(/\s+/).forEach((t, r) => e.fillText(t, n, N + r * (O + 2)));
1535
1527
  }
1536
- return null;
1528
+ e.restore();
1537
1529
  }
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})`;
1530
+ function pe(e, t, n, r = O) {
1531
+ let { x: i, y: a, w: o, h: s } = n;
1532
+ if (t.chartBg && (e.fillStyle = `#${t.chartBg}`, e.fillRect(i, a, o, s)), t.series.length === 0) {
1533
+ e.fillStyle = "#888", e.font = "12px sans-serif", e.textAlign = "center", e.textBaseline = "middle", e.fillText("(no data)", i + o / 2, a + s / 2);
1534
+ return;
1535
+ }
1536
+ switch (t.chartType) {
1537
+ case "clusteredBar":
1538
+ case "clusteredBarH":
1539
+ case "stackedBar":
1540
+ case "stackedBarH":
1541
+ case "stackedBarPct":
1542
+ case "stackedBarHPct":
1543
+ U(e, t, n, r);
1544
+ break;
1545
+ case "line":
1546
+ case "stackedLine":
1547
+ case "stackedLinePct":
1548
+ W(e, t, n, r);
1549
+ break;
1550
+ case "area":
1551
+ case "stackedArea":
1552
+ case "stackedAreaPct":
1553
+ ie(e, t, n, r);
1554
+ break;
1555
+ case "pie":
1556
+ G(e, t, n, !1, r);
1557
+ break;
1558
+ case "doughnut":
1559
+ G(e, t, n, !0, r);
1560
+ break;
1561
+ case "radar":
1562
+ ae(e, t, n, r);
1563
+ break;
1564
+ case "scatter":
1565
+ case "bubble":
1566
+ oe(e, t, n, r);
1567
+ break;
1568
+ case "waterfall":
1569
+ fe(e, t, n);
1570
+ break;
1571
+ 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);
1572
+ }
1540
1573
  }
1541
1574
  //#endregion
1542
- //#region packages/core/src/shape/paint.ts
1543
- function ae(e, t = 1) {
1544
- 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 : t})`;
1545
- }
1546
- function oe(e, t, n, r, i, a) {
1547
- if (!e || e.fillType === "none") return null;
1548
- if (e.fillType === "solid") return ae(e.color);
1549
- if (e.fillType === "pattern") return se(e, t);
1550
- if (e.fillType === "gradient") {
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);
1575
+ //#region packages/core/src/autoResize.ts
1576
+ function q(e, t, n = {}) {
1577
+ let r = n.pauseWhenHidden ?? !0, i = null, a = 0, o = 0, s = null, c = !1, l = !1, u = () => {
1578
+ if (!l && !(r && typeof document < "u" && document.hidden)) {
1579
+ if (s) {
1580
+ c = !0;
1581
+ return;
1582
+ }
1583
+ i === null && (i = requestAnimationFrame(d));
1561
1584
  }
1562
- for (let e of o) s.addColorStop(Math.min(1, Math.max(0, e.position)), ae(e.color));
1563
- return s;
1564
- }
1565
- return null;
1566
- }
1567
- var X = /* @__PURE__ */ new WeakMap();
1568
- function se(e, t) {
1569
- let n = `${e.preset}|${e.fg}|${e.bg}`, r = X.get(t);
1570
- r || (r = /* @__PURE__ */ new Map(), X.set(t, r));
1571
- let i = r.get(n);
1572
- if (i) return i;
1573
- let a = ne(e.preset, e.fg, e.bg);
1574
- if (!a) return ae(e.fg);
1575
- let o = t.createPattern(a, "repeat");
1576
- return o ? (r.set(n, o), o) : ae(e.fg);
1585
+ }, d = async () => {
1586
+ if (i = null, l) return;
1587
+ let t = a, n = o;
1588
+ try {
1589
+ let r = e(t, n);
1590
+ s = r instanceof Promise ? r : Promise.resolve(), await s;
1591
+ } catch (e) {
1592
+ console.error("[autoResize] render failed:", e);
1593
+ } finally {
1594
+ s = null, c && !l && (c = !1, u());
1595
+ }
1596
+ }, f = new ResizeObserver((e) => {
1597
+ for (let t of e) {
1598
+ let e = t.contentRect;
1599
+ a = e.width, o = e.height;
1600
+ }
1601
+ u();
1602
+ });
1603
+ f.observe(t);
1604
+ let p = () => {
1605
+ typeof document < "u" && !document.hidden && u();
1606
+ };
1607
+ return r && typeof document < "u" && document.addEventListener("visibilitychange", p), () => {
1608
+ l = !0, f.disconnect(), i !== null && (cancelAnimationFrame(i), i = null), r && typeof document < "u" && document.removeEventListener("visibilitychange", p);
1609
+ };
1577
1610
  }
1578
- var ce = {
1579
- dash: [6, 3],
1580
- dot: [1.5, 3],
1581
- dashDot: [
1582
- 6,
1583
- 3,
1584
- 1.5,
1585
- 3
1586
- ],
1587
- lgDash: [10, 4],
1588
- lgDashDot: [
1589
- 10,
1590
- 4,
1591
- 1.5,
1592
- 4
1593
- ],
1594
- lgDashDotDot: [
1595
- 10,
1596
- 4,
1597
- 1.5,
1598
- 4,
1599
- 1.5,
1600
- 4
1601
- ],
1602
- sysDash: [4, 2],
1603
- sysDot: [1, 2],
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;
1611
+ //#endregion
1612
+ //#region packages/core/src/shape/custGeom.ts
1613
+ function me(e, t, n, r, i, a) {
1614
+ for (let o of t) {
1615
+ let t = 0, s = 0;
1616
+ for (let c of o) switch (c.cmd) {
1617
+ case "moveTo":
1618
+ e.moveTo(n + c.x * i, r + c.y * a), t = c.x, s = c.y;
1619
+ break;
1620
+ case "lineTo":
1621
+ e.lineTo(n + c.x * i, r + c.y * a), t = c.x, s = c.y;
1622
+ break;
1623
+ case "cubicBezTo":
1624
+ 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;
1625
+ break;
1626
+ case "arcTo": {
1627
+ let o = c.wr * i, l = c.hr * a;
1628
+ if (o <= 0 || l <= 0) break;
1629
+ 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;
1630
+ 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;
1631
+ break;
1632
+ }
1633
+ case "close":
1634
+ e.closePath();
1635
+ break;
1636
+ }
1615
1637
  }
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
1638
  }
1622
1639
  //#endregion
1623
1640
  //#region packages/core/src/shape/preset.ts
1624
- function Z(e, t, n, r, i, a, o, s = -Math.PI / 2) {
1641
+ function J(e, t, n, r, i, a, o, s = -Math.PI / 2) {
1625
1642
  let c = a * 2;
1626
1643
  for (let l = 0; l < c; l++) {
1627
1644
  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 +1646,21 @@ function Z(e, t, n, r, i, a, o, s = -Math.PI / 2) {
1629
1646
  }
1630
1647
  e.closePath();
1631
1648
  }
1632
- function ue(e, t, n, r, i, a, o = -Math.PI / 2) {
1649
+ function he(e, t, n, r, i, a, o = -Math.PI / 2) {
1633
1650
  for (let s = 0; s < a; s++) {
1634
1651
  let c = o + s * 2 * Math.PI / a, l = t + r * Math.cos(c), u = n + i * Math.sin(c);
1635
1652
  s === 0 ? e.moveTo(l, u) : e.lineTo(l, u);
1636
1653
  }
1637
1654
  e.closePath();
1638
1655
  }
1639
- function Q(e, t, n, r, i, a, o) {
1656
+ function Y(e, t, n, r, i, a, o) {
1640
1657
  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
1658
  return e.ellipse(u, d, Math.abs(r), Math.abs(i), 0, c, l, o < 0), {
1642
1659
  x: u + r * Math.cos(l),
1643
1660
  y: d + i * Math.sin(l)
1644
1661
  };
1645
1662
  }
1646
- function de(e, t, n, r, i, a, o = null, s = null, c = null, l = null) {
1663
+ function ge(e, t, n, r, i, a, o = null, s = null, c = null, l = null) {
1647
1664
  let u = n + i / 2, d = r + a / 2;
1648
1665
  switch (t) {
1649
1666
  case "ellipse":
@@ -1678,53 +1695,53 @@ function de(e, t, n, r, i, a, o = null, s = null, c = null, l = null) {
1678
1695
  break;
1679
1696
  }
1680
1697
  case "pentagon":
1681
- ue(e, u, d, i / 2, a / 2, 5);
1698
+ he(e, u, d, i / 2, a / 2, 5);
1682
1699
  break;
1683
1700
  case "hexagon":
1684
- ue(e, u, d, i / 2, a / 2, 6, 0);
1701
+ he(e, u, d, i / 2, a / 2, 6, 0);
1685
1702
  break;
1686
1703
  case "heptagon":
1687
- ue(e, u, d, i / 2, a / 2, 7);
1704
+ he(e, u, d, i / 2, a / 2, 7);
1688
1705
  break;
1689
1706
  case "octagon":
1690
- ue(e, u, d, i / 2, a / 2, 8, -Math.PI / 8);
1707
+ he(e, u, d, i / 2, a / 2, 8, -Math.PI / 8);
1691
1708
  break;
1692
1709
  case "decagon":
1693
- ue(e, u, d, i / 2, a / 2, 10);
1710
+ he(e, u, d, i / 2, a / 2, 10);
1694
1711
  break;
1695
1712
  case "dodecagon":
1696
- ue(e, u, d, i / 2, a / 2, 12);
1713
+ he(e, u, d, i / 2, a / 2, 12);
1697
1714
  break;
1698
1715
  case "star4":
1699
- Z(e, u, d, i / 2, a / 2, 4, (o ?? 12500) / 5e4);
1716
+ J(e, u, d, i / 2, a / 2, 4, (o ?? 12500) / 5e4);
1700
1717
  break;
1701
1718
  case "star5":
1702
1719
  case "star":
1703
- Z(e, u, d, i / 2, a / 2, 5, (o ?? 19098) / 5e4);
1720
+ J(e, u, d, i / 2, a / 2, 5, (o ?? 19098) / 5e4);
1704
1721
  break;
1705
1722
  case "star6":
1706
- Z(e, u, d, i / 2, a / 2, 6, (o ?? 28868) / 5e4, 0);
1723
+ J(e, u, d, i / 2, a / 2, 6, (o ?? 28868) / 5e4, 0);
1707
1724
  break;
1708
1725
  case "star7":
1709
- Z(e, u, d, i / 2, a / 2, 7, (o ?? 34142) / 5e4);
1726
+ J(e, u, d, i / 2, a / 2, 7, (o ?? 34142) / 5e4);
1710
1727
  break;
1711
1728
  case "star8":
1712
- Z(e, u, d, i / 2, a / 2, 8, (o ?? 37500) / 5e4, -Math.PI / 2);
1729
+ J(e, u, d, i / 2, a / 2, 8, (o ?? 37500) / 5e4, -Math.PI / 2);
1713
1730
  break;
1714
1731
  case "star10":
1715
- Z(e, u, d, i / 2, a / 2, 10, (o ?? 41421) / 5e4);
1732
+ J(e, u, d, i / 2, a / 2, 10, (o ?? 41421) / 5e4);
1716
1733
  break;
1717
1734
  case "star12":
1718
- Z(e, u, d, i / 2, a / 2, 12, (o ?? 37500) / 5e4, 0);
1735
+ J(e, u, d, i / 2, a / 2, 12, (o ?? 37500) / 5e4, 0);
1719
1736
  break;
1720
1737
  case "star16":
1721
- Z(e, u, d, i / 2, a / 2, 16, (o ?? 37500) / 5e4, -Math.PI / 2);
1738
+ J(e, u, d, i / 2, a / 2, 16, (o ?? 37500) / 5e4, -Math.PI / 2);
1722
1739
  break;
1723
1740
  case "star24":
1724
- Z(e, u, d, i / 2, a / 2, 24, (o ?? 37500) / 5e4, 0);
1741
+ J(e, u, d, i / 2, a / 2, 24, (o ?? 37500) / 5e4, 0);
1725
1742
  break;
1726
1743
  case "star32":
1727
- Z(e, u, d, i / 2, a / 2, 32, (o ?? 37500) / 5e4, -Math.PI / 2);
1744
+ J(e, u, d, i / 2, a / 2, 32, (o ?? 37500) / 5e4, -Math.PI / 2);
1728
1745
  break;
1729
1746
  case "rightarrow": {
1730
1747
  let t = a * Math.min(1, (o ?? 5e4) / 1e5), c = i * Math.min(1, (s ?? 5e4) / 1e5), l = r + (a - t) / 2;
@@ -2277,8 +2294,8 @@ function de(e, t, n, r, i, a, o = null, s = null, c = null, l = null) {
2277
2294
  break;
2278
2295
  }
2279
2296
  case "ellipseribbon2": {
2280
- let t = Math.min(1e5, Math.max(0, o ?? 25e3)), l = Math.min(75e3, Math.max(25e3, s ?? 5e4)), u = Math.max(0, t - (1e5 - t) / 2), d = Math.min(t, Math.max(u, c ?? 12500)), f = i / 8, p = i * l / 2e5, m = i / 2 - p, h = m + f, g = i - h, _ = i - m, v = i - f, y = a * d / 1e5, b = 4 * y / i, x = a - b * (h - h * h / i), S = h / 2, C = a - b * S, w = i - S, T = a * t / 1e5, E = T - y, D = b * (m - m * m / i), O = D + E, k = a - O, A = y + E - O + y + E, j = a - A, M = a - T, N = a - (y * 14 / 16 + M) / 2, P = a - (D + M), F = a - (O + M), I = m / 2, L = a - (b * I + M), R = i - I, z = a - (A + M);
2281
- e.moveTo(n, r + a), e.quadraticCurveTo(n + S, r + C, n + h, r + x), e.lineTo(n + m, r + k), e.quadraticCurveTo(n + i / 2, r + j, n + _, r + k), e.lineTo(n + g, r + x), e.quadraticCurveTo(n + w, r + C, n + i, r + a), e.lineTo(n + v, r + N), e.lineTo(n + i, r + T), e.quadraticCurveTo(n + R, r + L, n + _, r + P), e.lineTo(n + _, r + F), e.quadraticCurveTo(n + i / 2, r + z, n + m, r + F), e.lineTo(n + m, r + P), e.quadraticCurveTo(n + I, r + L, n, r + T), e.lineTo(n + f, r + N), e.closePath();
2297
+ let t = Math.min(1e5, Math.max(0, o ?? 25e3)), l = Math.min(75e3, Math.max(25e3, s ?? 5e4)), u = Math.max(0, t - (1e5 - t) / 2), d = Math.min(t, Math.max(u, c ?? 12500)), f = i / 8, p = i * l / 2e5, m = i / 2 - p, h = m + f, g = i - h, _ = i - m, v = i - f, y = a * d / 1e5, b = 4 * y / i, x = a - b * (h - h * h / i), S = h / 2, C = a - b * S, w = i - S, T = a * t / 1e5, E = T - y, D = b * (m - m * m / i), O = D + E, k = a - O, A = y + E - O + y + E, j = a - A, M = a - T, N = a - (y * 14 / 16 + M) / 2, P = a - (D + M), F = a - (O + M), I = m / 2, L = a - (b * I + M), R = i - I, ee = a - (A + M);
2298
+ e.moveTo(n, r + a), e.quadraticCurveTo(n + S, r + C, n + h, r + x), e.lineTo(n + m, r + k), e.quadraticCurveTo(n + i / 2, r + j, n + _, r + k), e.lineTo(n + g, r + x), e.quadraticCurveTo(n + w, r + C, n + i, r + a), e.lineTo(n + v, r + N), e.lineTo(n + i, r + T), e.quadraticCurveTo(n + R, r + L, n + _, r + P), e.lineTo(n + _, r + F), e.quadraticCurveTo(n + i / 2, r + ee, n + m, r + F), e.lineTo(n + m, r + P), e.quadraticCurveTo(n + I, r + L, n, r + T), e.lineTo(n + f, r + N), e.closePath();
2282
2299
  break;
2283
2300
  }
2284
2301
  case "circulararrow": {
@@ -2290,26 +2307,26 @@ function de(e, t, n, r, i, a, o = null, s = null, c = null, l = null) {
2290
2307
  }
2291
2308
  case "curvedrightarrow": {
2292
2309
  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), Q(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), Q(e, n + E, r + x, i, m, k, D), e.closePath();
2310
+ 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
2311
  break;
2295
2312
  }
2296
2313
  case "curvedleftarrow": {
2297
2314
  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
2315
  e.moveTo(n, r + E), e.lineTo(n + D, r + w), e.lineTo(n + D, r + x);
2299
- let P = Q(e, n + D, r + x, i, m, O, j);
2300
- Q(e, P.x, P.y, i, m, N, M), e.lineTo(n + D, r + T), e.closePath();
2316
+ let P = Y(e, n + D, r + x, i, m, O, j);
2317
+ Y(e, P.x, P.y, i, m, N, M), e.lineTo(n + D, r + T), e.closePath();
2301
2318
  break;
2302
2319
  }
2303
2320
  case "curveduparrow": {
2304
2321
  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
2322
  e.moveTo(n + E, r), e.lineTo(n + T, r + D), e.lineTo(n + S, r + D);
2306
- let F = Q(e, n + S, r + D, m, a, N, M);
2307
- Q(e, F.x, F.y, m, a, P, j), e.lineTo(n + w, r + D), e.closePath();
2323
+ let F = Y(e, n + S, r + D, m, a, N, M);
2324
+ Y(e, F.x, F.y, m, a, P, j), e.lineTo(n + w, r + D), e.closePath();
2308
2325
  break;
2309
2326
  }
2310
2327
  case "curveddownarrow": {
2311
2328
  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), Q(e, n + x, r + D, m, a, j, -O), e.lineTo(n + b, r), Q(e, n + b, r, m, a, 3 * Math.PI / 2, O), e.lineTo(n + T, r + D), e.closePath();
2329
+ 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
2330
  break;
2314
2331
  }
2315
2332
  case "stripedrightarrow": {
@@ -2376,7 +2393,7 @@ function de(e, t, n, r, i, a, o = null, s = null, c = null, l = null) {
2376
2393
  break;
2377
2394
  }
2378
2395
  }
2379
- var fe = {
2396
+ var _e = {
2380
2397
  accentbordercallout1: {
2381
2398
  adj: [
2382
2399
  ["adj1", "val 18750"],
@@ -24239,8 +24256,8 @@ var fe = {
24239
24256
  ]
24240
24257
  }]
24241
24258
  }
24242
- }, pe = 216e5, me = Math.PI * 2 / pe;
24243
- function he(e, t, n) {
24259
+ }, X = 216e5, ve = Math.PI * 2 / X;
24260
+ function ye(e, t, n) {
24244
24261
  let { w: r, h: i, adj: a } = e, o = Math.min(r, i), s = Math.max(r, i), c = Object.create(null);
24245
24262
  Object.assign(c, {
24246
24263
  w: r,
@@ -24285,14 +24302,14 @@ function he(e, t, n) {
24285
24302
  lsd8: s / 8,
24286
24303
  lsd16: s / 16,
24287
24304
  lsd32: s / 32,
24288
- cd: pe,
24289
- cd2: pe / 2,
24290
- cd4: pe / 4,
24291
- cd8: pe / 8,
24292
- "3cd4": 3 * pe / 4,
24293
- "3cd8": 3 * pe / 8,
24294
- "5cd8": 5 * pe / 8,
24295
- "7cd8": 7 * pe / 8
24305
+ cd: X,
24306
+ cd2: X / 2,
24307
+ cd4: X / 4,
24308
+ cd8: X / 8,
24309
+ "3cd4": 3 * X / 4,
24310
+ "3cd8": 3 * X / 8,
24311
+ "5cd8": 5 * X / 8,
24312
+ "7cd8": 7 * X / 8
24296
24313
  }), t.forEach(([e, t], n) => {
24297
24314
  let r = a[n];
24298
24315
  c[e] = typeof r == "number" ? r : u(t), e === "adj" && (c.adj1 = c.adj), e === "adj1" && (c.adj = c.adj1);
@@ -24329,10 +24346,10 @@ function he(e, t, n) {
24329
24346
  case "pin": return t[1] < t[0] ? t[0] : t[1] > t[2] ? t[2] : t[1];
24330
24347
  case "sqrt": return Math.sqrt(Math.max(0, t[0]));
24331
24348
  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] * me);
24333
- case "cos": return t[0] * Math.cos(t[1] * me);
24334
- case "tan": return t[0] * Math.tan(t[1] * me);
24335
- case "at2": return Math.atan2(t[1], t[0]) / me;
24349
+ case "sin": return t[0] * Math.sin(t[1] * ve);
24350
+ case "cos": return t[0] * Math.cos(t[1] * ve);
24351
+ case "tan": return t[0] * Math.tan(t[1] * ve);
24352
+ case "at2": return Math.atan2(t[1], t[0]) / ve;
24336
24353
  case "cat2": return t[0] * Math.cos(Math.atan2(t[2], t[1]));
24337
24354
  case "sat2": return t[0] * Math.sin(Math.atan2(t[2], t[1]));
24338
24355
  default: throw Error(`preset-shape: unknown operator "${e}" in "${n}"`);
@@ -24341,8 +24358,8 @@ function he(e, t, n) {
24341
24358
  }
24342
24359
  //#endregion
24343
24360
  //#region packages/core/src/shape/preset-geometry/path-executor.ts
24344
- var ge = Math.PI * 2 / 216e5;
24345
- function _e(e, t, n, r, i, a, o) {
24361
+ var be = Math.PI * 2 / 216e5;
24362
+ function xe(e, t, n, r, i, a, o) {
24346
24363
  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
24364
  for (let r of t.cmds) switch (r[0]) {
24348
24365
  case "m": {
@@ -24366,7 +24383,7 @@ function _e(e, t, n, r, i, a, o) {
24366
24383
  break;
24367
24384
  }
24368
24385
  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]) * ge, u = n.resolve(r[4]) * ge, 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;
24386
+ let t = n.resolve(r[1]), i = n.resolve(r[2]), a = t * s, o = i * c, l = n.resolve(r[3]) * be, u = n.resolve(r[4]) * be, 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
24387
  _ > 0 && v < 0 ? v += p : _ < 0 && v > 0 && (v -= p);
24371
24388
  let y = h + v + g * p, b = d - a * Math.cos(h), x = f - o * Math.sin(h);
24372
24389
  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 +24396,26 @@ function _e(e, t, n, r, i, a, o) {
24379
24396
  }
24380
24397
  //#endregion
24381
24398
  //#region packages/core/src/shape/preset-geometry/index.ts
24382
- var ve = fe;
24383
- function ye(e) {
24384
- return e.toLowerCase() in ve;
24399
+ var Z = _e;
24400
+ function Se(e) {
24401
+ return e.toLowerCase() in Z;
24385
24402
  }
24386
- function be(e, t, n, r, i, a, o = []) {
24387
- let s = ve[t.toLowerCase()];
24403
+ function Ce(e, t, n, r, i, a, o = []) {
24404
+ let s = Z[t.toLowerCase()];
24388
24405
  if (!s) return !1;
24389
- let c = he({
24406
+ let c = ye({
24390
24407
  w: i,
24391
24408
  h: a,
24392
24409
  adj: o
24393
24410
  }, s.adj, s.gd);
24394
- for (let t of s.paths) _e(e, t, c, n, r, i, a);
24411
+ for (let t of s.paths) xe(e, t, c, n, r, i, a);
24395
24412
  return !0;
24396
24413
  }
24397
- var xe = {
24414
+ var we = {
24398
24415
  wedgeroundrectcallout: "roundrect",
24399
24416
  wedgeellipsecallout: "ellipse",
24400
24417
  wedgerectcallout: null
24401
- }, Se = {
24418
+ }, Te = {
24402
24419
  adj: [],
24403
24420
  gd: [],
24404
24421
  paths: [{
@@ -24432,43 +24449,43 @@ var xe = {
24432
24449
  ]
24433
24450
  }]
24434
24451
  };
24435
- function Ce(e, t, n) {
24452
+ function Ee(e, t, n) {
24436
24453
  let r = e[n];
24437
24454
  if (typeof r == "number") return r;
24438
24455
  let i = t.adj[n];
24439
24456
  return i && Number(i[1].replace(/^val\s+/, "")) || 0;
24440
24457
  }
24441
- function we(e, t, n, r, i, a, o, s, c, l) {
24442
- let u = t.toLowerCase(), d = ve[u];
24458
+ function De(e, t, n, r, i, a, o, s, c, l) {
24459
+ let u = t.toLowerCase(), d = Z[u];
24443
24460
  if (!d) return !1;
24444
- if (u in xe) {
24445
- let e = Ce(o, d, 0), t = Ce(o, d, 1), n = i / 2 + i * e / 1e5, r = a / 2 + a * t / 1e5;
24461
+ if (u in we) {
24462
+ let e = Ee(o, d, 0), t = Ee(o, d, 1), n = i / 2 + i * e / 1e5, r = a / 2 + a * t / 1e5;
24446
24463
  if (n >= 0 && n <= i && r >= 0 && r <= a) {
24447
- let e = xe[u];
24448
- e === "roundrect" ? (d = ve.roundrect, o = [Ce(o, ve[u], 2)]) : e && ve[e] ? (d = ve[e], o = []) : (d = Se, o = []);
24464
+ let e = we[u];
24465
+ e === "roundrect" ? (d = Z.roundrect, o = [Ee(o, Z[u], 2)]) : e && Z[e] ? (d = Z[e], o = []) : (d = Te, o = []);
24449
24466
  }
24450
24467
  }
24451
- let f = he({
24468
+ let f = ye({
24452
24469
  w: i,
24453
24470
  h: a,
24454
24471
  adj: o
24455
24472
  }, d.adj, d.gd), p = !1;
24456
24473
  for (let t of d.paths) {
24457
- e.beginPath(), _e(e, t, f, n, r, i, a);
24474
+ e.beginPath(), xe(e, t, f, n, r, i, a);
24458
24475
  let o = t.fill;
24459
24476
  if (o !== "none" && s != null) {
24460
24477
  e.save(), e.fillStyle = s, e.fill();
24461
- let t = Ee(o);
24478
+ let t = ke(o);
24462
24479
  t && (e.fillStyle = t, e.fill()), e.restore(), p ||= (l(), !0);
24463
24480
  }
24464
24481
  t.stroke && c && c();
24465
24482
  }
24466
24483
  return !0;
24467
24484
  }
24468
- function Te(e, t, n, r, i, a) {
24469
- let o = ve[e.toLowerCase()];
24485
+ function Oe(e, t, n, r, i, a) {
24486
+ let o = Z[e.toLowerCase()];
24470
24487
  if (!o || o.paths.length === 0) return null;
24471
- let s = o.paths[0], c = he({
24488
+ let s = o.paths[0], c = ye({
24472
24489
  w: r,
24473
24490
  h: i,
24474
24491
  adj: a
@@ -24502,7 +24519,7 @@ function Te(e, t, n, r, i, a) {
24502
24519
  }
24503
24520
  };
24504
24521
  }
24505
- function Ee(e) {
24522
+ function ke(e) {
24506
24523
  switch (e) {
24507
24524
  case "lighten": return "rgba(255,255,255,0.30)";
24508
24525
  case "lightenLess": return "rgba(255,255,255,0.15)";
@@ -24513,10 +24530,10 @@ function Ee(e) {
24513
24530
  }
24514
24531
  //#endregion
24515
24532
  //#region packages/core/src/shape/effects.ts
24516
- function De(e, t) {
24533
+ function Ae(e, t) {
24517
24534
  return e * t;
24518
24535
  }
24519
- function Oe(e, t) {
24536
+ function je(e, t) {
24520
24537
  let n = Math.max(1, Math.ceil(e)), r = Math.max(1, Math.ceil(t));
24521
24538
  if (typeof OffscreenCanvas < "u") return new OffscreenCanvas(n, r);
24522
24539
  if (typeof document < "u") {
@@ -24525,29 +24542,29 @@ function Oe(e, t) {
24525
24542
  }
24526
24543
  return null;
24527
24544
  }
24528
- function ke(e) {
24545
+ function Me(e) {
24529
24546
  return e.getContext("2d") ?? null;
24530
24547
  }
24531
- function Ae(e, t, n, r, i, a, o) {
24532
- let s = Oe(a, o);
24548
+ function Ne(e, t, n, r, i, a, o) {
24549
+ let s = je(a, o);
24533
24550
  if (!s) return;
24534
- let c = ke(s);
24551
+ let c = Me(s);
24535
24552
  if (!c) return;
24536
- let l = De(r.blur, i), u = De(r.dist, i), d = r.dir * Math.PI / 180, f = Math.cos(d) * u, p = Math.sin(d) * u;
24537
- c.save(), c.fillStyle = ae(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();
24553
+ let l = Ae(r.blur, i), u = Ae(r.dist, i), d = r.dir * Math.PI / 180, f = Math.cos(d) * u, p = Math.sin(d) * u;
24554
+ c.save(), c.fillStyle = b(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
24555
  }
24539
- function je(e, t, n, r, i, a, o, s) {
24540
- let c = De(r.radius, i);
24556
+ function Pe(e, t, n, r, i, a, o, s) {
24557
+ let c = Ae(r.radius, i);
24541
24558
  if (c <= 0) {
24542
24559
  t(e);
24543
24560
  return;
24544
24561
  }
24545
- let l = Oe(a, o);
24562
+ let l = je(a, o);
24546
24563
  if (!l) {
24547
24564
  t(e);
24548
24565
  return;
24549
24566
  }
24550
- let u = ke(l);
24567
+ let u = Me(l);
24551
24568
  if (!u) {
24552
24569
  t(e);
24553
24570
  return;
@@ -24555,24 +24572,24 @@ function je(e, t, n, r, i, a, o, s) {
24555
24572
  let d = s ?? t;
24556
24573
  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
24574
  }
24558
- function Me(e, t, n, r, i, a, o) {
24559
- let s = Oe(a, o);
24575
+ function Fe(e, t, n, r, i, a, o) {
24576
+ let s = je(a, o);
24560
24577
  if (!s) return;
24561
- let c = ke(s);
24578
+ let c = Me(s);
24562
24579
  if (!c) return;
24563
- let l = De(r.blur, i);
24580
+ let l = Ae(r.blur, i);
24564
24581
  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 = Ne(r.stPos), m = Ne(r.endPos);
24582
+ let u = n.y, d = n.y + n.h, f = c.createLinearGradient(0, d, 0, u), p = Ie(r.stPos), m = Ie(r.endPos);
24566
24583
  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 = De(r.dist, i), g = r.dir * Math.PI / 180, _ = Math.cos(g) * h, v = Math.sin(g) * h;
24584
+ let h = Ae(r.dist, i), g = r.dir * Math.PI / 180, _ = Math.cos(g) * h, v = Math.sin(g) * h;
24568
24585
  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
24586
  }
24570
- function Ne(e) {
24587
+ function Ie(e) {
24571
24588
  return e < 0 ? 0 : e > 1 ? 1 : e;
24572
24589
  }
24573
24590
  //#endregion
24574
24591
  //#region packages/core/src/shape/scene3d-camera.ts
24575
- var Pe = 26, Fe = {
24592
+ var Le = 26, Re = {
24576
24593
  orthographicFront: {
24577
24594
  kind: "orthographic",
24578
24595
  baseLat: 0,
@@ -24585,52 +24602,52 @@ var Pe = 26, Fe = {
24585
24602
  baseLat: 0,
24586
24603
  baseLon: 0,
24587
24604
  baseRev: 0,
24588
- fovDeg: Pe
24605
+ fovDeg: Le
24589
24606
  },
24590
24607
  perspectiveRelaxed: {
24591
24608
  kind: "perspective",
24592
24609
  baseLat: 0,
24593
24610
  baseLon: 0,
24594
24611
  baseRev: 0,
24595
- fovDeg: Pe
24612
+ fovDeg: Le
24596
24613
  },
24597
24614
  perspectiveRelaxedModerately: {
24598
24615
  kind: "perspective",
24599
24616
  baseLat: 0,
24600
24617
  baseLon: 0,
24601
24618
  baseRev: 0,
24602
- fovDeg: Pe
24619
+ fovDeg: Le
24603
24620
  },
24604
24621
  perspectiveAbove: {
24605
24622
  kind: "perspective",
24606
24623
  baseLat: -20,
24607
24624
  baseLon: 0,
24608
24625
  baseRev: 0,
24609
- fovDeg: Pe
24626
+ fovDeg: Le
24610
24627
  },
24611
24628
  perspectiveBelow: {
24612
24629
  kind: "perspective",
24613
24630
  baseLat: 20,
24614
24631
  baseLon: 0,
24615
24632
  baseRev: 0,
24616
- fovDeg: Pe
24633
+ fovDeg: Le
24617
24634
  },
24618
24635
  perspectiveLeft: {
24619
24636
  kind: "perspective",
24620
24637
  baseLat: 0,
24621
24638
  baseLon: -20,
24622
24639
  baseRev: 0,
24623
- fovDeg: Pe
24640
+ fovDeg: Le
24624
24641
  },
24625
24642
  perspectiveRight: {
24626
24643
  kind: "perspective",
24627
24644
  baseLat: 0,
24628
24645
  baseLon: 20,
24629
24646
  baseRev: 0,
24630
- fovDeg: Pe
24647
+ fovDeg: Le
24631
24648
  }
24632
24649
  };
24633
- function Ie(e, t) {
24650
+ function ze(e, t) {
24634
24651
  let n = Array(9).fill(0);
24635
24652
  for (let r = 0; r < 3; r++) for (let i = 0; i < 3; i++) {
24636
24653
  let a = 0;
@@ -24639,7 +24656,7 @@ function Ie(e, t) {
24639
24656
  }
24640
24657
  return n;
24641
24658
  }
24642
- function Le(e) {
24659
+ function Be(e) {
24643
24660
  let t = e * Math.PI / 180, n = Math.cos(t), r = Math.sin(t);
24644
24661
  return [
24645
24662
  1,
@@ -24653,7 +24670,7 @@ function Le(e) {
24653
24670
  n
24654
24671
  ];
24655
24672
  }
24656
- function Re(e) {
24673
+ function Ve(e) {
24657
24674
  let t = e * Math.PI / 180, n = Math.cos(t), r = Math.sin(t);
24658
24675
  return [
24659
24676
  n,
@@ -24667,7 +24684,7 @@ function Re(e) {
24667
24684
  n
24668
24685
  ];
24669
24686
  }
24670
- function ze(e) {
24687
+ function He(e) {
24671
24688
  let t = e * Math.PI / 180, n = Math.cos(t), r = Math.sin(t);
24672
24689
  return [
24673
24690
  n,
@@ -24681,22 +24698,22 @@ function ze(e) {
24681
24698
  1
24682
24699
  ];
24683
24700
  }
24684
- function Be(e, t, n, r) {
24701
+ function Ue(e, t, n, r) {
24685
24702
  return [
24686
24703
  e[0] * t + e[1] * n + e[2] * r,
24687
24704
  e[3] * t + e[4] * n + e[5] * r,
24688
24705
  e[6] * t + e[7] * n + e[8] * r
24689
24706
  ];
24690
24707
  }
24691
- function Ve(e, t) {
24708
+ function We(e, t) {
24692
24709
  let n = t ? t.lat : e.baseLat, r = t ? t.lon : e.baseLon;
24693
- return Ie(ze(-(t ? t.rev : e.baseRev)), Ie(Le(-n), Re(-r)));
24710
+ return ze(He(-(t ? t.rev : e.baseRev)), ze(Be(-n), Ve(-r)));
24694
24711
  }
24695
- function He(e) {
24696
- return Fe[e] ?? Fe.orthographicFront;
24712
+ function Ge(e) {
24713
+ return Re[e] ?? Re.orthographicFront;
24697
24714
  }
24698
- function Ue(e, t, n) {
24699
- let r = He(e.prst), i = Ve(r, e.rot);
24715
+ function Ke(e, t, n) {
24716
+ let r = Ge(e.prst), i = We(r, e.rot);
24700
24717
  if (t <= 0 || n <= 0) return {
24701
24718
  corners: [
24702
24719
  {
@@ -24728,11 +24745,11 @@ function Ue(e, t, n) {
24728
24745
  if (r.kind === "perspective") {
24729
24746
  let t = e.fov ?? r.fovDeg, n = Math.max(1, Math.min(179, t)) * Math.PI / 180, a = l / Math.tan(n / 2);
24730
24747
  u = s.map(([e, t]) => {
24731
- let [n, r, o] = Be(i, e, t, 0), s = a - o, c = a / (Math.abs(s) < 1e-6 ? 1e-6 * Math.sign(s || 1) : s);
24748
+ let [n, r, o] = Ue(i, e, t, 0), s = a - o, c = a / (Math.abs(s) < 1e-6 ? 1e-6 * Math.sign(s || 1) : s);
24732
24749
  return [n * c, r * c];
24733
24750
  });
24734
24751
  } else u = s.map(([e, t]) => {
24735
- let [n, r] = Be(i, e, t, 0);
24752
+ let [n, r] = Ue(i, e, t, 0);
24736
24753
  return [n, r];
24737
24754
  });
24738
24755
  u = u.map(([e, t]) => [e * c, t * c]);
@@ -24757,13 +24774,32 @@ function Ue(e, t, n) {
24757
24774
  isIdentity: E
24758
24775
  };
24759
24776
  }
24760
- function We(e) {
24761
- let { isIdentity: t } = Ue(e, 1e3, 1e3);
24777
+ function qe(e) {
24778
+ let { isIdentity: t } = Ke(e, 1e3, 1e3);
24762
24779
  return !t;
24763
24780
  }
24781
+ function Je(e, t, n, r) {
24782
+ let i = Ge(e.prst), a = We(i, e.rot);
24783
+ if (t <= 0 || n <= 0 || r === 0) return {
24784
+ x: 0,
24785
+ y: 0
24786
+ };
24787
+ let o = t / 2, s = n / 2, c = Math.max(o, s), l = e.zoom ?? 1, u = (t) => {
24788
+ let [n, r, o] = Ue(a, 0, 0, t);
24789
+ if (i.kind === "perspective") {
24790
+ 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);
24791
+ return [n * d * l, r * d * l];
24792
+ }
24793
+ return [n * l, r * l];
24794
+ }, [d, f] = u(0), [p, m] = u(-r);
24795
+ return {
24796
+ x: p - d,
24797
+ y: m - f
24798
+ };
24799
+ }
24764
24800
  //#endregion
24765
24801
  //#region packages/core/src/shape/scene3d-draw.ts
24766
- function Ge(e, t, n, r) {
24802
+ function Ye(e, t, n, r) {
24767
24803
  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
24804
  if (Math.abs(m) < 1e-12 && Math.abs(_) < 1e-12) v = 0, y = 0;
24769
24805
  else {
@@ -24783,15 +24819,15 @@ function Ge(e, t, n, r) {
24783
24819
  1
24784
24820
  ];
24785
24821
  }
24786
- function Ke(e, t, n) {
24822
+ function Xe(e, t, n) {
24787
24823
  let r = e[6] * t + e[7] * n + e[8];
24788
24824
  return {
24789
24825
  x: (e[0] * t + e[1] * n + e[2]) / r,
24790
24826
  y: (e[3] * t + e[4] * n + e[5]) / r
24791
24827
  };
24792
24828
  }
24793
- var qe = 1;
24794
- function Je(e, t) {
24829
+ var Ze = 1;
24830
+ function Qe(e, t) {
24795
24831
  let [n, r, i, a, o, s] = e, [c, l, u, d, f, p] = t;
24796
24832
  return [
24797
24833
  n * c + i * l,
@@ -24802,13 +24838,13 @@ function Je(e, t) {
24802
24838
  r * f + a * p + s
24803
24839
  ];
24804
24840
  }
24805
- function Ye(e, t, n, r, i, a, o, s, c, l, u, d, f) {
24841
+ function $e(e, t, n, r, i, a, o, s, c, l, u, d, f) {
24806
24842
  let p = c - o, m = l - s;
24807
24843
  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 = qe * p / y, S = qe * 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;
24844
+ 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 = Ze * p / y, S = Ze * 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
24845
  if (D <= 0 || O <= 0) return;
24810
24846
  e.save();
24811
- let [k, A, j, M, N, P] = Je(i, [
24847
+ let [k, A, j, M, N, P] = Qe(i, [
24812
24848
  h,
24813
24849
  g,
24814
24850
  _,
@@ -24818,22 +24854,22 @@ function Ye(e, t, n, r, i, a, o, s, c, l, u, d, f) {
24818
24854
  ]);
24819
24855
  e.setTransform(k, A, j, M, N, P), e.drawImage(t, C, w, D, O, C, w, D, O), e.restore();
24820
24856
  }
24821
- function Xe(e, t, n, r, i, a, o, s, c, l, u, d, f) {
24822
- let p = Ke(o, s, c), m = Ke(o, l, c), h = Ke(o, s, u), g = Ke(o, l, u), _ = (s + l) / 2, v = (c + u) / 2, y = Ke(o, _, v), b = {
24857
+ function et(e, t, n, r, i, a, o, s, c, l, u, d, f) {
24858
+ let p = Xe(o, s, c), m = Xe(o, l, c), h = Xe(o, s, u), g = Xe(o, l, u), _ = (s + l) / 2, v = (c + u) / 2, y = Xe(o, _, v), b = {
24823
24859
  x: (p.x + m.x + h.x + g.x) / 4,
24824
24860
  y: (p.y + m.y + h.y + g.y) / 4
24825
- }, x = Qe(i), S = Math.hypot(y.x - b.x, y.y - b.y) * x;
24861
+ }, x = nt(i), S = Math.hypot(y.x - b.x, y.y - b.y) * x;
24826
24862
  if (f <= 0 || S <= d) {
24827
- Ye(e, t, n, r, i, a, s * n, c * r, l * n, u * r, p, m, h);
24863
+ $e(e, t, n, r, i, a, s * n, c * r, l * n, u * r, p, m, h);
24828
24864
  return;
24829
24865
  }
24830
- l - s >= u - c ? (Xe(e, t, n, r, i, a, o, s, c, _, u, d, f - 1), Xe(e, t, n, r, i, a, o, _, c, l, u, d, f - 1)) : (Xe(e, t, n, r, i, a, o, s, c, l, v, d, f - 1), Xe(e, t, n, r, i, a, o, s, v, l, u, d, f - 1));
24866
+ l - s >= u - c ? (et(e, t, n, r, i, a, o, s, c, _, u, d, f - 1), et(e, t, n, r, i, a, o, _, c, l, u, d, f - 1)) : (et(e, t, n, r, i, a, o, s, c, l, v, d, f - 1), et(e, t, n, r, i, a, o, s, v, l, u, d, f - 1));
24831
24867
  }
24832
- function Ze(e, t, n, r, i, a = .5) {
24868
+ function tt(e, t, n, r, i, a = .5) {
24833
24869
  if (n <= 0 || r <= 0) return;
24834
24870
  let [o, s, c, l] = i;
24835
24871
  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 = Ge(i[0], i[1], i[2], i[3]);
24872
+ let u = Ye(i[0], i[1], i[2], i[3]);
24837
24873
  if (!u) return;
24838
24874
  let d = t.getTransform(), f = [
24839
24875
  d.a,
@@ -24842,18 +24878,33 @@ function Ze(e, t, n, r, i, a = .5) {
24842
24878
  d.d,
24843
24879
  d.e,
24844
24880
  d.f
24845
- ], p = Qe(f);
24846
- nt(e, t, n, r, i, f, p, u, a, 14) || (et(), 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(), Xe(t, e, n, r, f, p, u, 0, 0, 1, 1, a, 14), t.restore());
24881
+ ], p = nt(f);
24882
+ st(e, t, n, r, i, f, p, u, a, 14) || (at(), 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(), et(t, e, n, r, f, p, u, 0, 0, 1, 1, a, 14), t.restore());
24847
24883
  }
24848
- function Qe(e) {
24884
+ function nt(e) {
24849
24885
  return Math.sqrt(Math.abs(e[0] * e[3] - e[1] * e[2])) || 1;
24850
24886
  }
24851
- var $e = !1;
24852
- function et() {
24853
- $e || ($e = !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."));
24887
+ function rt(e, t, n) {
24888
+ let r = Ye(e[0], e[1], e[2], e[3]);
24889
+ if (!r) return null;
24890
+ let i = [
24891
+ [-t, -n],
24892
+ [1 + t, -n],
24893
+ [1 + t, 1 + n],
24894
+ [-t, 1 + n]
24895
+ ], a = [];
24896
+ for (let [e, t] of i) {
24897
+ if (!(r[6] * e + r[7] * t + r[8] > 1e-9)) return null;
24898
+ a.push(Xe(r, e, t));
24899
+ }
24900
+ return a;
24901
+ }
24902
+ var it = !1;
24903
+ function at() {
24904
+ it || (it = !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
24905
  }
24855
- var tt = 2;
24856
- function nt(e, t, n, r, i, a, o, s, c, l) {
24906
+ var ot = 2;
24907
+ function st(e, t, n, r, i, a, o, s, c, l) {
24857
24908
  let u = i.map((e) => ({
24858
24909
  x: a[0] * e.x + a[2] * e.y + a[4],
24859
24910
  y: a[1] * e.x + a[3] * e.y + a[5]
@@ -24862,25 +24913,337 @@ function nt(e, t, n, r, i, a, o, s, c, l) {
24862
24913
  d = Math.floor(d) - 1, f = Math.floor(f) - 1, p = Math.ceil(p) + 1, m = Math.ceil(m) + 1;
24863
24914
  let h = p - d, g = m - f;
24864
24915
  if (h <= 0 || g <= 0) return !1;
24865
- let _ = Oe(h * tt, g * tt);
24866
- if (!_) return !1;
24867
- let v = _.getContext("2d") ?? null;
24868
- if (!v) return !1;
24869
- let y = tt, b = [
24870
- a[0] * y,
24871
- a[1] * y,
24872
- a[2] * y,
24873
- a[3] * y,
24874
- (a[4] - d) * y,
24875
- (a[5] - f) * y
24916
+ let _ = Math.max(1, Math.ceil(h * ot)), v = Math.max(1, Math.ceil(g * ot)), y = je(_, v);
24917
+ if (!y || y.width !== _ || y.height !== v) return !1;
24918
+ let b = y.getContext("2d") ?? null;
24919
+ if (!b) return !1;
24920
+ let x = ot, S = [
24921
+ a[0] * x,
24922
+ a[1] * x,
24923
+ a[2] * x,
24924
+ a[3] * x,
24925
+ (a[4] - d) * x,
24926
+ (a[5] - f) * x
24876
24927
  ];
24877
- v.save(), v.setTransform(b[0], b[1], b[2], b[3], b[4], b[5]), v.beginPath(), v.moveTo(i[0].x, i[0].y), v.lineTo(i[1].x, i[1].y), v.lineTo(i[2].x, i[2].y), v.lineTo(i[3].x, i[3].y), v.closePath(), v.clip(), Xe(v, e, n, r, b, o, s, 0, 0, 1, 1, c * y, l), v.restore(), t.save(), t.setTransform(1, 0, 0, 1, 0, 0);
24878
- let x = t.imageSmoothingEnabled, S = t.imageSmoothingQuality;
24879
- return t.imageSmoothingEnabled = !0, t.imageSmoothingQuality = "high", t.drawImage(_, 0, 0, h * y, g * y, d, f, h, g), t.imageSmoothingEnabled = x, t.imageSmoothingQuality = S, t.restore(), !0;
24928
+ 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(), et(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);
24929
+ let C = t.imageSmoothingEnabled, w = t.imageSmoothingQuality;
24930
+ 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;
24931
+ }
24932
+ //#endregion
24933
+ //#region packages/core/src/shape/bevel-shading.ts
24934
+ function ct(e, t) {
24935
+ if (t <= 0) return () => 1;
24936
+ let n = (e) => Math.max(0, Math.min(1, e / t));
24937
+ switch (e) {
24938
+ case "hardEdge": {
24939
+ let e = gt;
24940
+ return (t) => {
24941
+ let r = Math.min(1, n(t) / e);
24942
+ return r * r * (3 - 2 * r);
24943
+ };
24944
+ }
24945
+ case "angle":
24946
+ case "slope": return (e) => n(e);
24947
+ case "circle":
24948
+ case "convex":
24949
+ case "softRound": return (e) => {
24950
+ let t = 1 - n(e);
24951
+ return Math.sqrt(Math.max(0, 1 - t * t));
24952
+ };
24953
+ default: return (e) => {
24954
+ let t = n(e);
24955
+ return t * t * (3 - 2 * t);
24956
+ };
24957
+ }
24958
+ }
24959
+ function lt(e) {
24960
+ let t = e.length, n = new Float64Array(t);
24961
+ if (t === 0) return n;
24962
+ let r = new Int32Array(t), i = new Float64Array(t + 1), a = 0;
24963
+ r[0] = 0, i[0] = -Infinity, i[1] = Infinity;
24964
+ for (let n = 1; n < t; n++) {
24965
+ let t = (e[n] + n * n - (e[r[a]] + r[a] * r[a])) / (2 * n - 2 * r[a]);
24966
+ for (; t <= i[a];) a--, t = (e[n] + n * n - (e[r[a]] + r[a] * r[a])) / (2 * n - 2 * r[a]);
24967
+ a++, r[a] = n, i[a] = t, i[a + 1] = Infinity;
24968
+ }
24969
+ a = 0;
24970
+ for (let o = 0; o < t; o++) {
24971
+ for (; i[a + 1] < o;) a++;
24972
+ let t = o - r[a];
24973
+ n[o] = t * t + e[r[a]];
24974
+ }
24975
+ return n;
24976
+ }
24977
+ function ut(e, t = 3) {
24978
+ if (e <= 0) return Array(t).fill(1);
24979
+ let n = Math.sqrt(12 * e * e / t + 1), r = Math.floor(n);
24980
+ r % 2 == 0 && r--;
24981
+ let i = r + 2, a = (12 * e * e - t * r * r - 4 * t * r - 3 * t) / (-4 * r - 4), o = Math.round(a), s = [];
24982
+ for (let e = 0; e < t; e++) s.push(e < o ? r : i);
24983
+ return s;
24984
+ }
24985
+ function dt(e, t, n, r, i, a) {
24986
+ let o = 1 / (2 * i + 1);
24987
+ if (a) for (let a = 0; a < r; a++) {
24988
+ let r = a * n, s = 0;
24989
+ for (let t = 0; t <= i; t++) t < n && (s += e[r + t]);
24990
+ for (let a = 0; a < n; a++) {
24991
+ t[r + a] = s * o;
24992
+ let c = a + i + 1, l = a - i;
24993
+ c < n && (s += e[r + c]), l >= 0 && (s -= e[r + l]);
24994
+ }
24995
+ }
24996
+ else for (let a = 0; a < n; a++) {
24997
+ let s = 0;
24998
+ for (let t = 0; t <= i; t++) t < r && (s += e[t * n + a]);
24999
+ for (let c = 0; c < r; c++) {
25000
+ t[c * n + a] = s * o;
25001
+ let l = c + i + 1, u = c - i;
25002
+ l < r && (s += e[l * n + a]), u >= 0 && (s -= e[u * n + a]);
25003
+ }
25004
+ }
25005
+ }
25006
+ function ft(e, t, n, r) {
25007
+ let i = Float64Array.from(e);
25008
+ if (r <= 0 || t <= 0 || n <= 0) return i;
25009
+ let a = new Float64Array(t * n);
25010
+ for (let e of ut(r, 3)) {
25011
+ let r = Math.max(1, (e - 1) / 2);
25012
+ dt(i, a, t, n, r, !0), dt(a, i, t, n, r, !1);
25013
+ }
25014
+ return i;
25015
+ }
25016
+ function pt(e, t, n, r = 128) {
25017
+ let i = new Float64Array(t * n);
25018
+ for (let a = 0; a < t * n; a++) i[a] = (e[a] ?? 0) >= r ? 0x56bc75e2d63100000 : 0;
25019
+ let a = new Float64Array(n);
25020
+ for (let e = 0; e < t; e++) {
25021
+ for (let r = 0; r < n; r++) a[r] = i[r * t + e];
25022
+ let r = lt(a);
25023
+ for (let a = 0; a < n; a++) i[a * t + e] = r[a];
25024
+ }
25025
+ let o = new Float64Array(t);
25026
+ for (let e = 0; e < n; e++) {
25027
+ for (let n = 0; n < t; n++) o[n] = i[e * t + n];
25028
+ let n = lt(o);
25029
+ for (let r = 0; r < t; r++) i[e * t + r] = n[r];
25030
+ }
25031
+ for (let e = 0; e < n; e++) for (let r = 0; r < t; r++) {
25032
+ let a = e * t + r;
25033
+ if (i[a] === 0) continue;
25034
+ 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);
25035
+ u < i[a] && (i[a] = u);
25036
+ }
25037
+ for (let e = 0; e < t * n; e++) i[e] = Math.sqrt(i[e]);
25038
+ return i;
25039
+ }
25040
+ var mt = .25, ht = .35, gt = .5;
25041
+ function _t(e, t, n, r, i, a) {
25042
+ let o = new Float32Array(t * n * 3), s = new Uint8Array(t * n), c = new Float32Array(t * n);
25043
+ if (t <= 0 || n <= 0) return {
25044
+ normals: o,
25045
+ bandMask: s,
25046
+ bandWeight: c
25047
+ };
25048
+ let l = pt(e, t, n), u = ct(i, r), d = (n, r) => (e[r * t + n] ?? 0) >= 128, f = (r > 0 ? a / r : 0) * r, p = ft(l, t, n, Math.max(1, r * mt)), m = (e) => {
25049
+ let t = u(Math.max(0, e - .5));
25050
+ return u(e + .5) - t;
25051
+ };
25052
+ for (let e = 0; e < n; e++) for (let i = 0; i < t; i++) {
25053
+ let a = e * t + i;
25054
+ if (!d(i, e)) {
25055
+ o[a * 3 + 2] = 1;
25056
+ continue;
25057
+ }
25058
+ let u = l[a], h = u > 0 && u < r;
25059
+ if (s[a] = +!!h, !h) {
25060
+ o[a * 3 + 2] = 1;
25061
+ continue;
25062
+ }
25063
+ let g = u / r, _ = 1 - ht, v = 1;
25064
+ if (g > _) {
25065
+ let e = Math.min(1, (g - _) / ht);
25066
+ v = 1 - e * e * (3 - 2 * e);
25067
+ }
25068
+ c[a] = v;
25069
+ 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;
25070
+ T > 1e-9 && (E = -C / T, D = -w / T);
25071
+ let O = m(u) * f, k = O * E, A = O * D, j = 1, M = Math.hypot(k, A, j) || 1;
25072
+ k /= M, A /= M, j /= M, o[a * 3] = k, o[a * 3 + 1] = A, o[a * 3 + 2] = j;
25073
+ }
25074
+ return {
25075
+ normals: o,
25076
+ bandMask: s,
25077
+ bandWeight: c
25078
+ };
25079
+ }
25080
+ var vt = 35 * Math.PI / 180, yt = 12 * Math.PI / 180, bt = {
25081
+ t: {
25082
+ x: 0,
25083
+ y: -1
25084
+ },
25085
+ b: {
25086
+ x: 0,
25087
+ y: 1
25088
+ },
25089
+ l: {
25090
+ x: -1,
25091
+ y: 0
25092
+ },
25093
+ r: {
25094
+ x: 1,
25095
+ y: 0
25096
+ },
25097
+ tl: {
25098
+ x: -1,
25099
+ y: -1
25100
+ },
25101
+ tr: {
25102
+ x: 1,
25103
+ y: -1
25104
+ },
25105
+ bl: {
25106
+ x: -1,
25107
+ y: 1
25108
+ },
25109
+ br: {
25110
+ x: 1,
25111
+ y: 1
25112
+ }
25113
+ };
25114
+ function xt(e, t, n) {
25115
+ let r = n * Math.PI / 180, i = Math.cos(r), a = Math.sin(r);
25116
+ return {
25117
+ x: e * i - t * a,
25118
+ y: e * a + t * i
25119
+ };
25120
+ }
25121
+ function St(e, t, n) {
25122
+ let r = bt[t] ?? bt.t;
25123
+ return n && n.rev && (r = xt(r.x, r.y, n.rev)), wt(r.x, r.y, vt);
25124
+ }
25125
+ function Ct(e) {
25126
+ let t = Math.hypot(e.x, e.y) || 1;
25127
+ return wt(-e.x / t, -e.y / t, yt);
25128
+ }
25129
+ function wt(e, t, n) {
25130
+ 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;
25131
+ return {
25132
+ x: o / l,
25133
+ y: s / l,
25134
+ z: c / l
25135
+ };
25136
+ }
25137
+ var Tt = 2, Et = {
25138
+ matte: {
25139
+ ambient: .62,
25140
+ diffuse: .45,
25141
+ specular: 0,
25142
+ shininess: 8
25143
+ },
25144
+ plastic: {
25145
+ ambient: .55,
25146
+ diffuse: .5,
25147
+ specular: .35,
25148
+ shininess: 22
25149
+ }
25150
+ }, Dt = .8;
25151
+ function Ot(e) {
25152
+ switch (e) {
25153
+ case "plastic":
25154
+ case "metal":
25155
+ case "clear":
25156
+ case "softEdge":
25157
+ case "shiny":
25158
+ case "softmetal": return "plastic";
25159
+ default: return "matte";
25160
+ }
25161
+ }
25162
+ function kt(e, t, n = !0) {
25163
+ let r = Et[e], i = {
25164
+ light: t,
25165
+ material: e,
25166
+ ambient: r.ambient,
25167
+ diffuse: r.diffuse,
25168
+ specular: r.specular,
25169
+ shininess: r.shininess
25170
+ };
25171
+ return n && (i.fillLight = Ct(t), i.fillDiffuse = i.diffuse * Dt), i;
25172
+ }
25173
+ function At(e, t) {
25174
+ 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;
25175
+ if (t.fillLight && t.fillDiffuse) {
25176
+ let n = e.x * t.fillLight.x + e.y * t.fillLight.y + e.z * t.fillLight.z;
25177
+ i = t.fillDiffuse * Math.max(0, n);
25178
+ }
25179
+ let a = 0;
25180
+ if (t.specular > 0) {
25181
+ 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;
25182
+ a = t.specular * Math.max(0, s) ** +t.shininess;
25183
+ }
25184
+ return Math.max(0, t.ambient + r + i + a);
25185
+ }
25186
+ function jt(e, t) {
25187
+ let n = e.canvas.width, r = e.canvas.height;
25188
+ if (n <= 0 || r <= 0) return;
25189
+ let i = t.widthPx;
25190
+ if (i < .75) return;
25191
+ let a = e.getImageData(0, 0, n, r), o = a.data, s = new Uint8ClampedArray(n * r);
25192
+ for (let e = 0; e < n * r; e++) s[e] = o[e * 4 + 3];
25193
+ let { bandMask: c, bandWeight: l, normals: u } = _t(s, n, r, i, t.prst, t.heightPx), d = kt(t.material, t.light), f = At({
25194
+ x: 0,
25195
+ y: 0,
25196
+ z: 1
25197
+ }, d) || 1;
25198
+ for (let e = 0; e < n * r; e++) {
25199
+ if (c[e] === 0) continue;
25200
+ let n = l[e];
25201
+ if (n <= 0) continue;
25202
+ let r = u[e * 3], i = u[e * 3 + 1], a = u[e * 3 + 2];
25203
+ t.bottom && (r = -r, i = -i);
25204
+ let s = 1 + (At({
25205
+ x: r,
25206
+ y: i,
25207
+ z: a
25208
+ }, d) / f - 1) * n, p = e * 4;
25209
+ if (s >= 1) {
25210
+ let e = Math.min(1, (s - 1) * Tt);
25211
+ for (let t = 0; t < 3; t++) {
25212
+ let n = Math.min(255, o[p + t] * s);
25213
+ o[p + t] = n + (255 - n) * e;
25214
+ }
25215
+ } 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);
25216
+ }
25217
+ e.putImageData(a, 0, 0);
25218
+ }
25219
+ function Mt(e, t) {
25220
+ let n = e.canvas.width, r = e.canvas.height;
25221
+ if (n <= 0 || r <= 0) return;
25222
+ let i = t.offsetX, a = t.offsetY, o = Math.hypot(i, a);
25223
+ if (o < .75) return;
25224
+ let s = e.getImageData(0, 0, n, r), c = s.data, l = new Uint8ClampedArray(n * r);
25225
+ for (let e = 0; e < n * r; e++) l[e] = c[e * 4 + 3];
25226
+ let u = Math.max(1, Math.ceil(o)), [d, f, p] = t.rgb;
25227
+ for (let e = 0; e < r; e++) for (let t = 0; t < n; t++) {
25228
+ let o = e * n + t;
25229
+ if (l[o] >= 128) continue;
25230
+ let s = !1;
25231
+ for (let o = 1; o <= u; o++) {
25232
+ let c = o / u, d = Math.round(t - i * c), f = Math.round(e - a * c);
25233
+ if (!(d < 0 || f < 0 || d >= n || f >= r) && l[f * n + d] >= 128) {
25234
+ s = !0;
25235
+ break;
25236
+ }
25237
+ }
25238
+ if (!s) continue;
25239
+ let m = o * 4;
25240
+ c[m] = d, c[m + 1] = f, c[m + 2] = p, c[m + 3] = 255;
25241
+ }
25242
+ e.putImageData(s, 0, 0);
24880
25243
  }
24881
25244
  //#endregion
24882
25245
  //#region packages/core/src/sparkline/renderer.ts
24883
- function rt(e, t, n) {
25246
+ function Nt(e, t, n) {
24884
25247
  let { values: r } = n;
24885
25248
  if (r.length === 0 || t.w <= 0 || t.h <= 0) return;
24886
25249
  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 +25252,11 @@ function rt(e, t, n) {
24889
25252
  m === h && (h = m + 1, --m);
24890
25253
  let g = h - m, _ = (e) => c + u - (e - m) / g * u;
24891
25254
  if (n.kind === "stem") {
24892
- ot(e, n, s, c, l, u);
25255
+ It(e, n, s, c, l, u);
24893
25256
  return;
24894
25257
  }
24895
25258
  if (n.kind === "column") {
24896
- at(e, n, r, s, c, l, u, m, h);
25259
+ Ft(e, n, r, s, c, l, u, m, h);
24897
25260
  return;
24898
25261
  }
24899
25262
  if (n.displayXAxis && m < 0 && h > 0) {
@@ -24901,31 +25264,31 @@ function rt(e, t, n) {
24901
25264
  let t = _(0);
24902
25265
  e.moveTo(s, t), e.lineTo(s + l, t), e.stroke(), e.restore();
24903
25266
  }
24904
- let y = r.length, b = (e) => y === 1 ? s + l / 2 : s + e / (y - 1) * l;
24905
- e.save(), e.strokeStyle = i, e.lineCap = "round", e.lineJoin = "round", e.lineWidth = (n.lineWeight ?? .75) * v, e.beginPath();
24906
- let x = !1, S = n.displayEmptyCellsAs ?? "gap";
24907
- for (let t = 0; t < y; t++) {
25267
+ let v = r.length, y = (e) => v === 1 ? s + l / 2 : s + e / (v - 1) * l;
25268
+ e.save(), e.strokeStyle = i, e.lineCap = "round", e.lineJoin = "round", e.lineWidth = (n.lineWeight ?? .75) * O, e.beginPath();
25269
+ let b = !1, x = n.displayEmptyCellsAs ?? "gap";
25270
+ for (let t = 0; t < v; t++) {
24908
25271
  let n = r[t];
24909
25272
  if (n == null) {
24910
- if (S === "zero") {
24911
- let n = b(t), r = _(0);
24912
- x ? e.lineTo(n, r) : (e.moveTo(n, r), x = !0);
24913
- } else S === "gap" && (x = !1);
25273
+ if (x === "zero") {
25274
+ let n = y(t), r = _(0);
25275
+ b ? e.lineTo(n, r) : (e.moveTo(n, r), b = !0);
25276
+ } else x === "gap" && (b = !1);
24914
25277
  continue;
24915
25278
  }
24916
- let i = b(t), a = _(n);
24917
- x ? e.lineTo(i, a) : (e.moveTo(i, a), x = !0);
25279
+ let i = y(t), a = _(n);
25280
+ b ? e.lineTo(i, a) : (e.moveTo(i, a), b = !0);
24918
25281
  }
24919
25282
  e.stroke(), e.restore();
24920
- let C = Math.max(1, Math.min(2.5, u * .12)), w = it(r, n);
24921
- for (let t = 0; t < y; t++) {
25283
+ let S = Math.max(1, Math.min(2.5, u * .12)), C = Pt(r, n);
25284
+ for (let t = 0; t < v; t++) {
24922
25285
  let a = r[t];
24923
25286
  if (a == null) continue;
24924
- let o = w[t];
24925
- (n.markers || o != null) && (e.save(), e.fillStyle = o ?? n.colorMarkers ?? i, e.beginPath(), e.arc(b(t), _(a), C, 0, Math.PI * 2), e.fill(), e.restore());
25287
+ let o = C[t];
25288
+ (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
25289
  }
24927
25290
  }
24928
- function it(e, t) {
25291
+ function Pt(e, t) {
24929
25292
  let n = e.map(() => null), r = e.map((e) => typeof e == "number" ? e : null), i = r.findIndex((e) => e != null), a = -1;
24930
25293
  for (let e = r.length - 1; e >= 0; e--) if (r[e] != null) {
24931
25294
  a = e;
@@ -24940,10 +25303,10 @@ function it(e, t) {
24940
25303
  if (t.low && t.colorLow && !Number.isNaN(c)) for (let e = 0; e < r.length; e++) r[e] === c && (n[e] = t.colorLow);
24941
25304
  return n;
24942
25305
  }
24943
- function at(e, t, n, r, i, a, o, s, c) {
25306
+ function Ft(e, t, n, r, i, a, o, s, c) {
24944
25307
  let l = n.length;
24945
25308
  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 = it(n, t);
25309
+ 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 = Pt(n, t);
24947
25310
  for (let i = 0; i < l; i++) {
24948
25311
  let a = n[i];
24949
25312
  if (a == null) continue;
@@ -24951,10 +25314,10 @@ function at(e, t, n, r, i, a, o, s, c) {
24951
25314
  e.save(), e.fillStyle = o, e.fillRect(c, Math.min(p, s), l, Math.abs(p - s)), e.restore();
24952
25315
  }
24953
25316
  }
24954
- function ot(e, t, n, r, i, a) {
25317
+ function It(e, t, n, r, i, a) {
24955
25318
  let o = t.values.length;
24956
25319
  if (o === 0) return;
24957
- let s = r + a / 2, c = a / 2, l = i / o, u = Math.min(1.5, l * .15), d = it(t.values, t);
25320
+ let s = r + a / 2, c = a / 2, l = i / o, u = Math.min(1.5, l * .15), d = Pt(t.values, t);
24958
25321
  for (let r = 0; r < o; r++) {
24959
25322
  let i = t.values[r];
24960
25323
  if (i == null || i === 0) continue;
@@ -24964,13 +25327,13 @@ function ot(e, t, n, r, i, a) {
24964
25327
  }
24965
25328
  //#endregion
24966
25329
  //#region packages/core/src/math/mathml.ts
24967
- var st = {
25330
+ var Lt = {
24968
25331
  "&": "&amp;",
24969
25332
  "<": "&lt;",
24970
25333
  ">": "&gt;",
24971
25334
  "\"": "&quot;"
24972
- }, ct = (e) => e.replace(/[&<>"]/g, (e) => st[e]);
24973
- function lt(e) {
25335
+ }, Q = (e) => e.replace(/[&<>"]/g, (e) => Lt[e]);
25336
+ function Rt(e) {
24974
25337
  switch (e) {
24975
25338
  case "roman": return "normal";
24976
25339
  case "bold": return "bold";
@@ -24978,10 +25341,10 @@ function lt(e) {
24978
25341
  case "italic": return null;
24979
25342
  }
24980
25343
  }
24981
- var ut = new Set([..."⏞⏟⎴⎵︷︸⏜⏝{}[]()¯_‾"]), dt = "+−±∓×÷·∗⋅∘∙*/", ft = "=≠<>≤≥≈≡∼≅≃→←↔⇒∈∉⊂⊆⊃⊇∝≪≫⊥≔", pt = "([{⟨⌈⌊", mt = ")]}⟩⌉⌋", ht = ",;";
24982
- function gt(e, t) {
24983
- let n = lt(t), r = n ? ` mathvariant="${n}"` : "", i = "", a = "", o = () => {
24984
- a &&= (i += `<mn${r}>${ct(a)}</mn>`, "");
25344
+ var zt = new Set([..."⏞⏟⎴⎵︷︸⏜⏝{}[]()¯_‾"]), Bt = "+−±∓×÷·∗⋅∘∙*/", Vt = "=≠<>≤≥≈≡∼≅≃→←↔⇒∈∉⊂⊆⊃⊇∝≪≫⊥≔", Ht = "([{⟨⌈⌊", Ut = ")]}⟩⌉⌋", Wt = ",;";
25345
+ function Gt(e, t) {
25346
+ let n = Rt(t), r = n ? ` mathvariant="${n}"` : "", i = "", a = "", o = () => {
25347
+ a &&= (i += `<mn${r}>${Q(a)}</mn>`, "");
24985
25348
  };
24986
25349
  for (let t of e) {
24987
25350
  if (t === " ") {
@@ -24992,42 +25355,42 @@ function gt(e, t) {
24992
25355
  a += t;
24993
25356
  continue;
24994
25357
  }
24995
- o(), dt.includes(t) || ft.includes(t) || ht.includes(t) ? i += `<mo>${ct(t)}</mo>` : pt.includes(t) || mt.includes(t) ? i += `<mo fence="true" stretchy="false">${ct(t)}</mo>` : i += `<mi${r}>${ct(t)}</mi>`;
25358
+ o(), Bt.includes(t) || Vt.includes(t) || Wt.includes(t) ? i += `<mo>${Q(t)}</mo>` : Ht.includes(t) || Ut.includes(t) ? i += `<mo fence="true" stretchy="false">${Q(t)}</mo>` : i += `<mi${r}>${Q(t)}</mi>`;
24996
25359
  }
24997
25360
  return o(), i;
24998
25361
  }
24999
- function _t(e) {
25000
- return e.map(vt).join("");
25362
+ function Kt(e) {
25363
+ return e.map(qt).join("");
25001
25364
  }
25002
25365
  function $(e) {
25003
- return `<mrow>${_t(e)}</mrow>`;
25366
+ return `<mrow>${Kt(e)}</mrow>`;
25004
25367
  }
25005
- function vt(e) {
25368
+ function qt(e) {
25006
25369
  switch (e.kind) {
25007
- case "run": return gt(e.text, e.style);
25370
+ case "run": return Gt(e.text, e.style);
25008
25371
  case "group": return $(e.items);
25009
25372
  case "fraction": return `<mfrac${e.bar === !1 ? " linethickness=\"0\"" : ""}>${$(e.num)}${$(e.den)}</mfrac>`;
25010
25373
  case "sup": return `<msup>${$(e.base)}${$(e.sup ?? [])}</msup>`;
25011
25374
  case "sub": return `<msub>${$(e.base)}${$(e.sub ?? [])}</msub>`;
25012
25375
  case "subSup": return `<msubsup>${$(e.base)}${$(e.sub ?? [])}${$(e.sup ?? [])}</msubsup>`;
25013
- case "nary": return Tt(e);
25014
- case "delimiter": return Et(e);
25015
- case "radical": return e.index && e.index.length ? `<mroot>${$(e.radicand)}${$(e.index)}</mroot>` : `<msqrt>${_t(e.radicand)}</msqrt>`;
25016
- case "limit": return St(e);
25017
- case "array": return Ct(e);
25376
+ case "nary": return en(e);
25377
+ case "delimiter": return tn(e);
25378
+ case "radical": return e.index && e.index.length ? `<mroot>${$(e.radicand)}${$(e.index)}</mroot>` : `<msqrt>${Kt(e.radicand)}</msqrt>`;
25379
+ case "limit": return Zt(e);
25380
+ case "array": return Qt(e);
25018
25381
  case "groupChr": {
25019
- let t = $(e.base), n = ut.has(e.char), r = e.pos === "top" ? "mover" : "munder", i = `<mo stretchy="${n}">${ct(e.char)}</mo>`;
25382
+ let t = $(e.base), n = zt.has(e.char), r = e.pos === "top" ? "mover" : "munder", i = `<mo stretchy="${n}">${Q(e.char)}</mo>`;
25020
25383
  return n ? `<${r}>${t}${i}</${r}>` : `<${r} accent="true">${t}${i}</${r}>`;
25021
25384
  }
25022
25385
  case "bar": {
25023
25386
  let t = $(e.base), n = "<mo stretchy=\"true\">&#x2015;</mo>";
25024
25387
  return e.pos === "bot" ? `<munder>${t}${n}</munder>` : `<mover>${t}${n}</mover>`;
25025
25388
  }
25026
- case "accent": return xt(e);
25389
+ case "accent": return Xt(e);
25027
25390
  case "func": return `<mrow>${$(e.name)}<mo>&#x2061;</mo>${$(e.arg)}</mrow>`;
25028
25391
  }
25029
25392
  }
25030
- var yt = {
25393
+ var Jt = {
25031
25394
  "̀": "`",
25032
25395
  "́": "´",
25033
25396
  "̂": "^",
@@ -25038,7 +25401,7 @@ var yt = {
25038
25401
  "̌": "ˇ",
25039
25402
  "⃗": "→",
25040
25403
  "⃖": "←"
25041
- }, bt = new Set([
25404
+ }, Yt = new Set([
25042
25405
  "̅",
25043
25406
  "̄",
25044
25407
  "¯",
@@ -25046,37 +25409,37 @@ var yt = {
25046
25409
  "̲",
25047
25410
  "̳"
25048
25411
  ]);
25049
- function xt(e) {
25412
+ function Xt(e) {
25050
25413
  let t = $(e.base);
25051
- if (bt.has(e.char)) return `<mover>${t}<mo stretchy="true">&#x2015;</mo></mover>`;
25052
- let n = yt[e.char] ?? e.char;
25053
- return `<mover accent="true">${t}<mo stretchy="${n === "→" || n === "←" ? "true" : "false"}">${ct(n)}</mo></mover>`;
25414
+ if (Yt.has(e.char)) return `<mover>${t}<mo stretchy="true">&#x2015;</mo></mover>`;
25415
+ let n = Jt[e.char] ?? e.char;
25416
+ return `<mover accent="true">${t}<mo stretchy="${n === "→" || n === "←" ? "true" : "false"}">${Q(n)}</mo></mover>`;
25054
25417
  }
25055
- function St(e) {
25418
+ function Zt(e) {
25056
25419
  let t = $(e.base), n = e.lower && e.lower.length ? $(e.lower) : null, r = e.upper && e.upper.length ? $(e.upper) : null;
25057
25420
  return n && r ? `<munderover>${t}${n}${r}</munderover>` : n ? `<munder>${t}${n}</munder>` : r ? `<mover>${t}${r}</mover>` : t;
25058
25421
  }
25059
- function Ct(e) {
25422
+ function Qt(e) {
25060
25423
  let t = Math.max(1, ...e.rows.map((e) => e.length)), n;
25061
25424
  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>${_t(e)}</mtd>`).join("")}</mtr>`).join("");
25425
+ let r = e.rows.map((e) => `<mtr>${e.map((e) => `<mtd>${Kt(e)}</mtd>`).join("")}</mtr>`).join("");
25063
25426
  return `<mtable columnalign="${n}" rowspacing="0.2em" columnspacing="0.3em">${r}</mtable>`;
25064
25427
  }
25065
- var wt = new Set([..."∫∬∭∮∯∰∱∲∳⨌⨍⨎⨏⨐⨑⨒⨓⨔⨕⨖⨗"]);
25066
- function Tt(e) {
25067
- let t = e.limLoc === "subSup" ? !0 : e.limLoc === "undOvr" ? !1 : wt.has(e.op), n = `<mo largeop="true">${ct(e.op)}</mo>`, r = e.sub ?? [], i = e.sup ?? [], a;
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}${_t(e.body)}</mrow>`;
25428
+ var $t = new Set([..."∫∬∭∮∯∰∱∲∳⨌⨍⨎⨏⨐⨑⨒⨓⨔⨕⨖⨗"]);
25429
+ function en(e) {
25430
+ let t = e.limLoc === "subSup" ? !0 : e.limLoc === "undOvr" ? !1 : $t.has(e.op), n = `<mo largeop="true">${Q(e.op)}</mo>`, r = e.sub ?? [], i = e.sup ?? [], a;
25431
+ 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}${Kt(e.body)}</mrow>`;
25069
25432
  }
25070
- function Et(e) {
25071
- let t = (e) => `<mo fence="true" stretchy="true">${ct(e)}</mo>`, n = e.items.map((e) => $(e)).join("<mo separator=\"true\">,</mo>");
25433
+ function tn(e) {
25434
+ let t = (e) => `<mo fence="true" stretchy="true">${Q(e)}</mo>`, n = e.items.map((e) => $(e)).join("<mo separator=\"true\">,</mo>");
25072
25435
  return `<mrow>${t(e.begChar)}${n}${t(e.endChar)}</mrow>`;
25073
25436
  }
25074
- function Dt(e, t) {
25075
- return `<math xmlns="http://www.w3.org/1998/Math/MathML" display="${t ? "block" : "inline"}">${_t(e)}</math>`;
25437
+ function nn(e, t) {
25438
+ return `<math xmlns="http://www.w3.org/1998/Math/MathML" display="${t ? "block" : "inline"}">${Kt(e)}</math>`;
25076
25439
  }
25077
25440
  //#endregion
25078
25441
  //#region packages/core/src/worker/bridge.ts
25079
- var Ot = class {
25442
+ var rn = class {
25080
25443
  _worker;
25081
25444
  _opts;
25082
25445
  _pending = /* @__PURE__ */ new Map();
@@ -25116,7 +25479,7 @@ var Ot = class {
25116
25479
  for (let e of this._pending.values()) e.reject(/* @__PURE__ */ Error("Worker terminated"));
25117
25480
  this._pending.clear();
25118
25481
  }
25119
- }, kt = [
25482
+ }, an = [
25120
25483
  "L",
25121
25484
  "R",
25122
25485
  "AL",
@@ -25140,7 +25503,7 @@ var Ot = class {
25140
25503
  "RLI",
25141
25504
  "FSI",
25142
25505
  "PDI"
25143
- ], At = [
25506
+ ], on = [
25144
25507
  0,
25145
25508
  9,
25146
25509
  10,
@@ -26408,7 +26771,7 @@ var Ot = class {
26408
26771
  1048574,
26409
26772
  1048576,
26410
26773
  1114110
26411
- ], jt = [
26774
+ ], sn = [
26412
26775
  9,
26413
26776
  11,
26414
26777
  10,
@@ -27676,7 +28039,7 @@ var Ot = class {
27676
28039
  9,
27677
28040
  0,
27678
28041
  9
27679
- ], Mt = [
28042
+ ], cn = [
27680
28043
  40,
27681
28044
  41,
27682
28045
  41,
@@ -28533,7 +28896,7 @@ var Ot = class {
28533
28896
  65379,
28534
28897
  65379,
28535
28898
  65378
28536
- ], Nt = [
28899
+ ], ln = [
28537
28900
  40,
28538
28901
  41,
28539
28902
  0,
@@ -28921,42 +29284,42 @@ var Ot = class {
28921
29284
  ];
28922
29285
  //#endregion
28923
29286
  //#region packages/core/src/text/bidi/char-data.ts
28924
- function Pt(e) {
28925
- let t = 0, n = At.length - 1;
29287
+ function un(e) {
29288
+ let t = 0, n = on.length - 1;
28926
29289
  for (; t < n;) {
28927
29290
  let r = t + n + 1 >> 1;
28928
- At[r] <= e ? t = r : n = r - 1;
29291
+ on[r] <= e ? t = r : n = r - 1;
28929
29292
  }
28930
- return jt[t];
29293
+ return sn[t];
28931
29294
  }
28932
- function Ft(e) {
28933
- return kt[Pt(e)];
29295
+ function dn(e) {
29296
+ return an[un(e)];
28934
29297
  }
28935
- var It = (() => {
29298
+ var fn = (() => {
28936
29299
  let e = /* @__PURE__ */ new Map();
28937
- for (let t = 0; t < Mt.length; t += 2) e.set(Mt[t], Mt[t + 1]);
29300
+ for (let t = 0; t < cn.length; t += 2) e.set(cn[t], cn[t + 1]);
28938
29301
  return e;
28939
29302
  })();
28940
- function Lt(e) {
28941
- return It.get(e) ?? null;
29303
+ function pn(e) {
29304
+ return fn.get(e) ?? null;
28942
29305
  }
28943
- var Rt = (() => {
29306
+ var mn = (() => {
28944
29307
  let e = /* @__PURE__ */ new Map();
28945
- for (let t = 0; t < Nt.length; t += 3) e.set(Nt[t], {
28946
- pair: Nt[t + 1],
28947
- type: Nt[t + 2] === 0 ? "o" : "c"
29308
+ for (let t = 0; t < ln.length; t += 3) e.set(ln[t], {
29309
+ pair: ln[t + 1],
29310
+ type: ln[t + 2] === 0 ? "o" : "c"
28948
29311
  });
28949
29312
  return e;
28950
29313
  })();
28951
- function zt(e) {
28952
- return Rt.get(e) ?? null;
29314
+ function hn(e) {
29315
+ return mn.get(e) ?? null;
28953
29316
  }
28954
- var Bt = (e) => e === "RLE" || e === "LRE" || e === "RLO" || e === "LRO" || e === "PDF" || e === "BN", Vt = (e) => e === "LRI" || e === "RLI" || e === "FSI", Ht = (e) => e === "B" || e === "S" || e === "WS" || e === "ON" || e === "FSI" || e === "LRI" || e === "RLI" || e === "PDI", Ut = (e) => e & 1 ? e + 2 : e + 1, Wt = (e) => e & 1 ? e + 1 : e + 2;
28955
- function Gt(e, t, n) {
29317
+ var gn = (e) => e === "RLE" || e === "LRE" || e === "RLO" || e === "LRO" || e === "PDF" || e === "BN", _n = (e) => e === "LRI" || e === "RLI" || e === "FSI", vn = (e) => e === "B" || e === "S" || e === "WS" || e === "ON" || e === "FSI" || e === "LRI" || e === "RLI" || e === "PDI", yn = (e) => e & 1 ? e + 2 : e + 1, bn = (e) => e & 1 ? e + 1 : e + 2;
29318
+ function xn(e, t, n) {
28956
29319
  let r = 0;
28957
29320
  for (let i = t; i < n; i++) {
28958
29321
  let t = e[i];
28959
- if (Vt(t)) r++;
29322
+ if (_n(t)) r++;
28960
29323
  else if (t === "PDI") r > 0 && r--;
28961
29324
  else if (r === 0) {
28962
29325
  if (t === "L") return 0;
@@ -28965,11 +29328,11 @@ function Gt(e, t, n) {
28965
29328
  }
28966
29329
  return 0;
28967
29330
  }
28968
- function Kt(e) {
29331
+ function Sn(e) {
28969
29332
  let t = e.length, n = new Int32Array(t).fill(t), r = new Int32Array(t).fill(-1), i = [];
28970
29333
  for (let a = 0; a < t; a++) {
28971
29334
  let t = e[a];
28972
- if (Vt(t)) i.push(a);
29335
+ if (_n(t)) i.push(a);
28973
29336
  else if (t === "PDI" && i.length) {
28974
29337
  let e = i.pop();
28975
29338
  n[e] = a, r[a] = e;
@@ -28980,7 +29343,7 @@ function Kt(e) {
28980
29343
  initOf: r
28981
29344
  };
28982
29345
  }
28983
- function qt(e, t, n) {
29346
+ function Cn(e, t, n) {
28984
29347
  let r = e.length, i = Array(r).fill(t), a = e.slice(), o = [{
28985
29348
  level: t,
28986
29349
  override: "neutral",
@@ -28994,7 +29357,7 @@ function qt(e, t, n) {
28994
29357
  case "RLO":
28995
29358
  case "LRO": {
28996
29359
  i[d] = u().level;
28997
- let e = r === "RLE" || r === "RLO" ? Ut(u().level) : Wt(u().level);
29360
+ let e = r === "RLE" || r === "RLO" ? yn(u().level) : bn(u().level);
28998
29361
  e <= 125 && s === 0 && c === 0 ? o.push({
28999
29362
  level: e,
29000
29363
  override: r === "RLO" ? "R" : r === "LRO" ? "L" : "neutral",
@@ -29009,8 +29372,8 @@ function qt(e, t, n) {
29009
29372
  let t = u().override;
29010
29373
  t !== "neutral" && (a[d] = t);
29011
29374
  let f;
29012
- f = r === "RLI" ? "R" : r === "LRI" ? "L" : Gt(e, d + 1, n[d]) === 1 ? "R" : "L";
29013
- let p = f === "R" ? Ut(u().level) : Wt(u().level);
29375
+ f = r === "RLI" ? "R" : r === "LRI" ? "L" : xn(e, d + 1, n[d]) === 1 ? "R" : "L";
29376
+ let p = f === "R" ? yn(u().level) : bn(u().level);
29014
29377
  p <= 125 && s === 0 && c === 0 ? (l++, o.push({
29015
29378
  level: p,
29016
29379
  override: "neutral",
@@ -29052,10 +29415,10 @@ function qt(e, t, n) {
29052
29415
  types: a
29053
29416
  };
29054
29417
  }
29055
- function Jt(e) {
29418
+ function wn(e) {
29056
29419
  return e === 9001 ? 12296 : e === 9002 ? 12297 : e;
29057
29420
  }
29058
- function Yt(e, t, n, r, i, a) {
29421
+ function Tn(e, t, n, r, i, a) {
29059
29422
  let o = e.length, s = [];
29060
29423
  for (let e = 0; e < o; e++) n[e] || s.push(e);
29061
29424
  let c = [];
@@ -29073,7 +29436,7 @@ function Yt(e, t, n, r, i, a) {
29073
29436
  for (;;) {
29074
29437
  for (let e of p) f.push(e);
29075
29438
  let t = p[p.length - 1];
29076
- if (Vt(e[t]) && i[t] !== o) {
29439
+ if (_n(e[t]) && i[t] !== o) {
29077
29440
  let e = l.get(i[t]);
29078
29441
  if (e) {
29079
29442
  p = e;
@@ -29088,7 +29451,7 @@ function Yt(e, t, n, r, i, a) {
29088
29451
  break;
29089
29452
  }
29090
29453
  let g = u(Math.max(m, h)), _ = f[f.length - 1], v = r;
29091
- if (!(Vt(e[_]) && i[_] === o)) {
29454
+ if (!(_n(e[_]) && i[_] === o)) {
29092
29455
  for (let e = _ + 1; e < o; e++) if (!n[e]) {
29093
29456
  v = t[e];
29094
29457
  break;
@@ -29104,8 +29467,8 @@ function Yt(e, t, n, r, i, a) {
29104
29467
  }
29105
29468
  return d;
29106
29469
  }
29107
- var Xt = (e) => e === "L" ? "L" : e === "R" || e === "EN" || e === "AN" ? "R" : null;
29108
- function Zt(e, t, n, r, i) {
29470
+ var En = (e) => e === "L" ? "L" : e === "R" || e === "EN" || e === "AN" ? "R" : null;
29471
+ function Dn(e, t, n, r, i) {
29109
29472
  let a = e.indices, o = a.length, { sos: s, eos: c, level: l } = e;
29110
29473
  for (let e = 0; e < o; e++) {
29111
29474
  let t = a[e];
@@ -29152,15 +29515,15 @@ function Zt(e, t, n, r, i) {
29152
29515
  outer: for (let n = 0; n < o; n++) {
29153
29516
  let i = a[n];
29154
29517
  if (r[i] !== "ON") continue;
29155
- let o = zt(t[i]);
29518
+ let o = hn(t[i]);
29156
29519
  if (o) if (o.type === "o") {
29157
29520
  if (e.length === 63) break outer;
29158
29521
  e.push({
29159
- expect: Jt(o.pair),
29522
+ expect: wn(o.pair),
29160
29523
  pos: n
29161
29524
  });
29162
29525
  } else {
29163
- let r = Jt(t[i]);
29526
+ let r = wn(t[i]);
29164
29527
  for (let t = e.length - 1; t >= 0; t--) if (e[t].expect === r) {
29165
29528
  f.push({
29166
29529
  open: e[t].pos,
@@ -29178,7 +29541,7 @@ function Zt(e, t, n, r, i) {
29178
29541
  for (let { open: e, close: t } of f) {
29179
29542
  let n = !1, i = !1;
29180
29543
  for (let o = e + 1; o < t; o++) {
29181
- let e = Xt(r[a[o]]);
29544
+ let e = En(r[a[o]]);
29182
29545
  e === u ? n = !0 : e === d && (i = !0);
29183
29546
  }
29184
29547
  let o = null;
@@ -29186,7 +29549,7 @@ function Zt(e, t, n, r, i) {
29186
29549
  else if (i) {
29187
29550
  let t = s;
29188
29551
  for (let n = e - 1; n >= 0; n--) {
29189
- let e = Xt(r[a[n]]);
29552
+ let e = En(r[a[n]]);
29190
29553
  if (e) {
29191
29554
  t = e;
29192
29555
  break;
@@ -29197,29 +29560,29 @@ function Zt(e, t, n, r, i) {
29197
29560
  o && (r[a[e]] = o, r[a[t]] = o, p(e, o), p(t, o));
29198
29561
  }
29199
29562
  for (let e = 0; e < o; e++) {
29200
- if (!Ht(r[a[e]])) continue;
29563
+ if (!vn(r[a[e]])) continue;
29201
29564
  let t = e;
29202
- for (; t < o && Ht(r[a[t]]);) t++;
29203
- let n = e > 0 ? Xt(r[a[e - 1]]) : s, i = t < o ? Xt(r[a[t]]) : c;
29565
+ for (; t < o && vn(r[a[t]]);) t++;
29566
+ let n = e > 0 ? En(r[a[e - 1]]) : s, i = t < o ? En(r[a[t]]) : c;
29204
29567
  if (n && i && n === i) for (let i = e; i < t; i++) r[a[i]] = n;
29205
29568
  e = t - 1;
29206
29569
  }
29207
- for (let e = 0; e < o; e++) Ht(r[a[e]]) && (r[a[e]] = u);
29570
+ for (let e = 0; e < o; e++) vn(r[a[e]]) && (r[a[e]] = u);
29208
29571
  for (let e = 0; e < o; e++) {
29209
29572
  let t = a[e], n = r[t];
29210
29573
  l & 1 ? (n === "L" || n === "EN" || n === "AN") && (i[t] += 1) : n === "R" ? i[t] += 1 : (n === "AN" || n === "EN") && (i[t] += 2);
29211
29574
  }
29212
29575
  }
29213
- function Qt(e, t, n) {
29576
+ function On(e, t, n) {
29214
29577
  let r = e.length, i = Array(r);
29215
- for (let t = 0; t < r; t++) i[t] = n?.[t] ?? Ft(e[t]);
29216
- let a = t === "rtl" ? 1 : t === "ltr" ? 0 : Gt(i, 0, r), { pdiOf: o, initOf: s } = Kt(i), { levels: c, types: l } = qt(i, a, o), u = Array(r);
29217
- for (let e = 0; e < r; e++) u[e] = Bt(i[e]);
29218
- let d = Yt(i, c, u, a, o, s), f = l.slice();
29219
- for (let t of d) Zt(t, e, i, f, c);
29578
+ for (let t = 0; t < r; t++) i[t] = n?.[t] ?? dn(e[t]);
29579
+ let a = t === "rtl" ? 1 : t === "ltr" ? 0 : xn(i, 0, r), { pdiOf: o, initOf: s } = Sn(i), { levels: c, types: l } = Cn(i, a, o), u = Array(r);
29580
+ for (let e = 0; e < r; e++) u[e] = gn(i[e]);
29581
+ let d = Tn(i, c, u, a, o, s), f = l.slice();
29582
+ for (let t of d) Dn(t, e, i, f, c);
29220
29583
  let p = (e) => {
29221
29584
  let t = i[e];
29222
- return t === "WS" || Vt(t) || t === "PDI" || u[e];
29585
+ return t === "WS" || _n(t) || t === "PDI" || u[e];
29223
29586
  };
29224
29587
  for (let e = 0; e < r; e++) {
29225
29588
  let t = i[e];
@@ -29235,7 +29598,7 @@ function Qt(e, t, n) {
29235
29598
  paragraphLevel: a
29236
29599
  };
29237
29600
  }
29238
- function $t(e, t, n) {
29601
+ function kn(e, t, n) {
29239
29602
  let r = [];
29240
29603
  for (let i = t; i < n; i++) {
29241
29604
  let t = e[i];
@@ -29263,7 +29626,7 @@ function $t(e, t, n) {
29263
29626
  }
29264
29627
  //#endregion
29265
29628
  //#region packages/core/src/text/bidi/uax9/index.ts
29266
- function en(e) {
29629
+ function An(e) {
29267
29630
  let t = [], n = [], r = [];
29268
29631
  for (let i = 0; i < e.length;) {
29269
29632
  let a = e.codePointAt(i), o = a > 65535 ? 2 : 1;
@@ -29275,9 +29638,9 @@ function en(e) {
29275
29638
  starts: r
29276
29639
  };
29277
29640
  }
29278
- var tn = class {
29641
+ var jn = class {
29279
29642
  computeLevels(e, t, n) {
29280
- let { cps: r, units: i, starts: a } = en(e), { levels: o, paragraphLevel: s } = Qt(r, t, n ? r.map((e, t) => n[a[t]] ?? null) : void 0), c = new Uint8Array(e.length), l = 0;
29643
+ let { cps: r, units: i, starts: a } = An(e), { levels: o, paragraphLevel: s } = On(r, t, n ? r.map((e, t) => n[a[t]] ?? null) : void 0), c = new Uint8Array(e.length), l = 0;
29281
29644
  for (let e = 0; e < o.length; e++) {
29282
29645
  let t = o[e] === -1 ? 255 : o[e];
29283
29646
  for (let n = 0; n < i[e]; n++) c[l++] = t;
@@ -29288,25 +29651,25 @@ var tn = class {
29288
29651
  };
29289
29652
  }
29290
29653
  reorderVisual(e, t, n) {
29291
- return $t(e, t, n);
29654
+ return kn(e, t, n);
29292
29655
  }
29293
29656
  getMirror(e) {
29294
- return Lt(e);
29657
+ return pn(e);
29295
29658
  }
29296
29659
  };
29297
- function nn() {
29298
- return new tn();
29660
+ function Mn() {
29661
+ return new jn();
29299
29662
  }
29300
29663
  //#endregion
29301
29664
  //#region packages/core/src/text/bidi/engine.ts
29302
- var rn = null;
29303
- function an() {
29304
- return rn === null && (rn = nn()), rn;
29665
+ var Nn = null;
29666
+ function Pn() {
29667
+ return Nn === null && (Nn = Mn()), Nn;
29305
29668
  }
29306
29669
  //#endregion
29307
29670
  //#region packages/core/src/text/bidi/segments.ts
29308
- function on(e, t) {
29309
- return e === !0 ? "rtl" : e === !1 ? "ltr" : an().computeLevels(t, "auto").paragraphLevel === 1 ? "rtl" : "ltr";
29671
+ function Fn(e, t) {
29672
+ return e === !0 ? "rtl" : e === !1 ? "ltr" : Pn().computeLevels(t, "auto").paragraphLevel === 1 ? "rtl" : "ltr";
29310
29673
  }
29311
29674
  //#endregion
29312
- export { J as C, a as D, v as E, t as O, ee as S, _ as T, de as _, rt as a, oe as b, We as c, je as d, Oe as f, we as g, ye as h, Dt as i, Ae as l, Te as m, an as n, Ze as o, be as p, Ot as r, Ue as s, on as t, Me as u, le as v, g as w, Y as x, ae as y };
29675
+ export { T as A, ge as C, E as D, pe as E, x as M, a as N, D as O, t as P, De as S, q as T, Pe as _, Nt as a, Oe as b, St as c, rt as d, Je as f, Fe as g, Ne as h, nn as i, b as j, O as k, Ot as l, qe as m, Pn as n, jt as o, Ke as p, rn as r, Mt as s, Fn as t, tt as u, je as v, me as w, Se as x, Ce as y };