@silurus/ooxml 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/pptx.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./pptx-E7x-tlbY.cjs`);exports.PptxPresentation=e.r,exports.PptxViewer=e.n,exports.renderSlide=e.i;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./autoResize-ggn4hzd8.cjs`),t=require(`./pptx-CYYMOWs4.cjs`);exports.PptxPresentation=t.r,exports.PptxViewer=t.n,exports.autoResize=e.t,exports.renderSlide=t.i;
package/dist/pptx.mjs CHANGED
@@ -1,2 +1,3 @@
1
- import { i as e, n as t, r as n } from "./pptx-9gGaUMeA.js";
2
- export { n as PptxPresentation, t as PptxViewer, e as renderSlide };
1
+ import { t as e } from "./autoResize-U2-IRmNE.js";
2
+ import { i as t, n, r } from "./pptx-BHGTs5zW.js";
3
+ export { r as PptxPresentation, n as PptxViewer, e as autoResize, t as renderSlide };
@@ -55,23 +55,41 @@ function l(e, n, r, i, a, o) {
55
55
  e.fillText(a.slice(0, 20), r + 10 + 4, l + s / 2), l += c;
56
56
  }
57
57
  }
58
- function u(e, t, n, r, i, a) {
58
+ function u(e, t, n, r, i) {
59
+ if (t === "none" || !t) return;
60
+ let a = e.strokeStyle;
61
+ if (e.strokeStyle = "#888", e.lineWidth = 1, e.beginPath(), n === "val") {
62
+ let n = r, a = i, o = t === "out" || t === "cross" ? -4 : 0, s = t === "in" || t === "cross" ? 4 : 0;
63
+ e.moveTo(n + o, a), e.lineTo(n + s, a);
64
+ } else {
65
+ let n = r, a = i, o = t === "out" || t === "cross" ? 4 : 0, s = t === "in" || t === "cross" ? -4 : 0;
66
+ e.moveTo(a, n + o), e.lineTo(a, n + s);
67
+ }
68
+ e.stroke(), e.strokeStyle = a;
69
+ }
70
+ function d(e, t, n) {
71
+ return e.titleFontSizeHpt ? e.titleFontSizeHpt / 100 * n : Math.max(10, t * .085);
72
+ }
73
+ function f(e, t, n) {
74
+ return e ? e / 100 * n : Math.max(8, t * .045);
75
+ }
76
+ function p(e, t, n, r, i, a) {
59
77
  t && (e.font = `bold ${a}px sans-serif`, e.fillStyle = "#333", e.textAlign = "center", e.textBaseline = "top", e.fillText(t, n + i / 2, r));
60
78
  }
61
- function d(e) {
79
+ function m(e) {
62
80
  return e.categories.length > 0 ? e.categories : e.series[0]?.categories ?? [];
63
81
  }
64
- function f(e, n, r) {
65
- let { x: o, y: f, w: p, h: m } = r, h = n.chartType === "clusteredBarH" || n.chartType === "stackedBarH" || n.chartType === "stackedBarHPct", g = n.chartType.startsWith("stacked"), _ = n.chartType === "stackedBarPct" || n.chartType === "stackedBarHPct", v = n.series.filter((e) => e.seriesType !== "line"), y = n.series.filter((e) => e.seriesType === "line"), b = d(n), x = b.length;
82
+ function h(e, n, r) {
83
+ let { x: o, y: u, w: d, h: f } = r, h = n.chartType === "clusteredBarH" || n.chartType === "stackedBarH" || n.chartType === "stackedBarHPct", g = n.chartType.startsWith("stacked"), _ = n.chartType === "stackedBarPct" || n.chartType === "stackedBarHPct", v = n.series.filter((e) => e.seriesType !== "line"), y = n.series.filter((e) => e.seriesType === "line"), b = m(n), x = b.length;
66
84
  if (x === 0) return;
67
- let S = n.title ? Math.max(14, m * .06) : 0, C = n.series.length >= 1 ? Math.max(80, p * .22) : 0, w = Math.max(8, Math.min(10, m * .045)), T = n.catAxisTitle ? w + 4 : 0, E = n.valAxisTitle ? w + 4 : 0, D = {
68
- t: S + m * .04,
69
- r: C + p * .03,
70
- b: m * .14 + T,
71
- l: p * .12 + E
85
+ let S = n.title ? Math.max(14, f * .06) : 0, C = n.showLegend ? Math.max(80, d * .22) : 0, w = Math.max(8, Math.min(10, f * .045)), T = n.catAxisTitle ? w + 4 : 0, E = n.valAxisTitle ? w + 4 : 0, D = {
86
+ t: S + f * .04,
87
+ r: C + d * .03,
88
+ b: f * .14 + T,
89
+ l: d * .12 + E
72
90
  };
73
- h && (D.l = p * .22 + E, D.b = m * .08 + T), u(e, n.title, o, f + 2, p, Math.max(11, S * .7));
74
- let O = o + D.l, k = f + D.t, A = p - D.l - D.r, j = m - D.t - D.b;
91
+ h && (D.l = d * .22 + E, D.b = f * .08 + T), p(e, n.title, o, u + 2, d, Math.max(11, S * .7));
92
+ let O = o + D.l, k = u + D.t, A = d - D.l - D.r, j = f - D.t - D.b;
75
93
  if (A <= 0 || j <= 0) return;
76
94
  n.plotAreaBg && (e.fillStyle = `#${n.plotAreaBg}`, e.fillRect(O, k, A, j));
77
95
  let M = 0;
@@ -149,74 +167,77 @@ function f(e, n, r) {
149
167
  e.fillStyle = i, e.beginPath(), e.arc(a, o, 3, 0, Math.PI * 2), e.fill();
150
168
  }
151
169
  }
152
- C > 0 && l(e, n.series, o + p - C + 4, k, C - 8, j), n.catAxisTitle && c(e, n.catAxisTitle, O, k, A, j, "cat", w), n.valAxisTitle && c(e, n.valAxisTitle, O, k, A, j, "val", w);
170
+ C > 0 && l(e, n.series, o + d - C + 4, k, C - 8, j), n.catAxisTitle && c(e, n.catAxisTitle, O, k, A, j, "cat", w), n.valAxisTitle && c(e, n.valAxisTitle, O, k, A, j, "val", w);
153
171
  }
154
- function p(e, n, r) {
155
- let { x: f, y: p, w: m, h } = r, g = d(n), _ = g.length;
156
- if (_ === 0) return;
157
- let v = n.title ? Math.max(14, h * .06) : 0, y = n.series.length >= 1 ? Math.max(80, m * .22) : 0, b = Math.max(8, Math.min(10, h * .045)), x = n.catAxisTitle ? b + 4 : 0, S = n.valAxisTitle ? b + 4 : 0, C = {
158
- t: v + h * .04,
159
- r: y + m * .05,
160
- b: h * .14 + x,
161
- l: m * .12 + S
172
+ function g(e, n, r, h) {
173
+ let { x: g, y: _, w: v, h: y } = r, b = m(n), x = b.length;
174
+ if (x === 0) return;
175
+ let S = n.title ? d(n, y, h) : 0, C = n.title ? y * .045 : 0, w = n.title ? y * .035 : 0, T = n.title ? S + C + w : 0, E = n.showLegend ? Math.max(80, v * .22) : 0, D = f(n.catAxisFontSizeHpt, y, h), O = f(n.valAxisFontSizeHpt, y, h), k = Math.max(D, O), A = n.catAxisTitle ? k + 4 : 0, j = n.valAxisTitle ? k + 4 : 0, M = {
176
+ t: T + O / 2 + 2,
177
+ r: E + v * .05,
178
+ b: D + 12 + A,
179
+ l: O * 2.2 + 10 + j
162
180
  };
163
- u(e, n.title, f, p + 2, m, Math.max(11, v * .7));
164
- let w = f + C.l, T = p + C.t, E = m - C.l - C.r, D = h - C.t - C.b;
165
- if (E <= 0 || D <= 0) return;
166
- n.plotAreaBg && (e.fillStyle = `#${n.plotAreaBg}`, e.fillRect(w, T, E, D));
167
- let O = Infinity, k = -Infinity;
168
- for (let e of n.series) for (let t of e.values) t != null && (O = Math.min(O, t), k = Math.max(k, t));
169
- isFinite(O) || (O = 0, k = 1), n.valMin == null ? O > 0 && (O = 0) : O = n.valMin, n.valMax == null ? k < 0 && (k = 0) : k = n.valMax, k === O && (k = O + 1);
170
- let A = i(k - O), j = n.valMin ?? o(O, A), M = n.valMax ?? a(k, A), N = M - j;
171
- if (N === 0) return;
172
- let P = (e) => T + D - (e - j) / N * D, F = (e) => w + (_ === 1 ? E / 2 : e / (_ - 1) * E);
181
+ p(e, n.title, g, _ + C, v, S);
182
+ let N = g + M.l, P = _ + M.t, F = v - M.l - M.r, I = y - M.t - M.b;
183
+ if (F <= 0 || I <= 0) return;
184
+ n.plotAreaBg && (e.fillStyle = `#${n.plotAreaBg}`, e.fillRect(N, P, F, I));
185
+ let L = Infinity, R = -Infinity;
186
+ for (let e of n.series) for (let t of e.values) t != null && (L = Math.min(L, t), R = Math.max(R, t));
187
+ isFinite(L) || (L = 0, R = 1), n.valMin == null ? L > 0 && (L = 0) : L = n.valMin, n.valMax == null ? R < 0 && (R = 0) : R = n.valMax, R === L && (R = L + 1);
188
+ let z = i(R - L), B = n.valMin ?? o(L, z), V = n.valMax ?? a(R, z), H = V - B;
189
+ if (H === 0) return;
190
+ let U = (e) => P + I - (e - B) / H * I, W = n.catAxisCrossBetween === "midCat" ? (e) => N + (x === 1 ? F / 2 : e / (x - 1) * F) : (e) => N + (e + .5) / x * F;
173
191
  if (!n.valAxisHidden) {
174
- let t = Math.round((M - j) / A);
175
- e.font = `${Math.max(8, Math.min(11, D / 20))}px sans-serif`, e.textBaseline = "middle";
176
- for (let n = 0; n <= t; n++) {
177
- let t = j + n * A, r = P(t);
178
- e.strokeStyle = t === 0 ? "#aaa" : "#e0e0e0", e.lineWidth = t === 0 ? 1 : .5, e.beginPath(), e.moveTo(w, r), e.lineTo(w + E, r), e.stroke(), e.fillStyle = "#555", e.textAlign = "right", e.fillText(s(t), w - 4, r);
192
+ let t = Math.round((V - B) / z);
193
+ e.font = `${O}px sans-serif`, e.textBaseline = "middle";
194
+ for (let r = 0; r <= t; r++) {
195
+ let t = B + r * z, i = U(t);
196
+ e.strokeStyle = t === 0 ? "#aaa" : "#e0e0e0", e.lineWidth = t === 0 ? 1 : .5, e.beginPath(), e.moveTo(N, i), e.lineTo(N + F, i), e.stroke(), u(e, n.valAxisMajorTickMark, "val", N, i), e.fillStyle = "#555", e.textAlign = "right", e.fillText(s(t), N - 6, i);
179
197
  }
180
198
  }
181
- e.strokeStyle = "#aaa", e.lineWidth = 1, e.beginPath(), e.moveTo(w, T + D), e.lineTo(w + E, T + D), e.stroke();
182
- let I = Math.max(3, D * .015);
199
+ e.strokeStyle = "#aaa", e.lineWidth = 1, e.beginPath(), e.moveTo(N, P + I), e.lineTo(N + F, P + I), e.stroke(), n.valAxisHidden || (e.beginPath(), e.moveTo(N, P), e.lineTo(N, P + I), e.stroke());
200
+ let G = Math.max(1, 2.25 * h), K = Math.max(2, 2.5 * h), q = f(n.dataLabelFontSizeHpt, y, h);
183
201
  for (let r = 0; r < n.series.length; r++) {
184
202
  let i = n.series[r], a = t(r, i);
185
- e.strokeStyle = a, e.lineWidth = 2, e.setLineDash([]), e.beginPath();
203
+ e.strokeStyle = a, e.lineWidth = G, e.setLineDash([]), e.beginPath();
186
204
  let o = !1;
187
- for (let t = 0; t < _; t++) {
205
+ for (let t = 0; t < x; t++) {
188
206
  let n = i.values[t];
189
207
  if (n == null) {
190
208
  o = !1;
191
209
  continue;
192
210
  }
193
- let r = F(t), a = P(n);
211
+ let r = W(t), a = U(n);
194
212
  o ? e.lineTo(r, a) : (e.moveTo(r, a), o = !0);
195
213
  }
196
214
  e.stroke(), e.fillStyle = a;
197
- for (let t = 0; t < _; t++) {
215
+ for (let t = 0; t < x; t++) {
198
216
  let r = i.values[t];
199
- r != null && (e.beginPath(), e.arc(F(t), P(r), I, 0, Math.PI * 2), e.fill(), n.showDataLabels && (e.font = `${Math.max(7, Math.round(I * 1.5))}px sans-serif`, e.fillStyle = "#333", e.textAlign = "center", e.textBaseline = "bottom", e.fillText(s(r), F(t), P(r) - I - 1), e.fillStyle = a));
217
+ r != null && (e.beginPath(), e.arc(W(t), U(r), K, 0, Math.PI * 2), e.fill(), n.showDataLabels && (e.font = `${q}px sans-serif`, e.fillStyle = "#333", e.textAlign = "center", e.textBaseline = "bottom", e.fillText(s(r), W(t), U(r) - K - 1), e.fillStyle = a));
200
218
  }
201
219
  }
202
220
  if (!n.catAxisHidden) {
203
- let t = Math.max(1, Math.ceil(_ / 8));
204
- e.fillStyle = "#555", e.textAlign = "center", e.textBaseline = "top", e.font = `${Math.max(8, Math.min(11, E / _ * .8))}px sans-serif`;
205
- for (let n = 0; n < _; n += t) e.fillText((g[n] ?? "").toString().slice(0, 10), F(n), T + D + 3);
221
+ let t = Math.max(1, Math.ceil(x / 8));
222
+ e.fillStyle = "#555", e.textAlign = "center", e.textBaseline = "top", e.font = `${D}px sans-serif`;
223
+ for (let r = 0; r < x; r += t) {
224
+ let t = W(r);
225
+ u(e, n.catAxisMajorTickMark, "cat", P + I, t), e.fillStyle = "#555", e.fillText((b[r] ?? "").toString().slice(0, 10), t, P + I + 5);
226
+ }
206
227
  }
207
- y > 0 && l(e, n.series, f + m - y + 4, T, y - 8, D), n.catAxisTitle && c(e, n.catAxisTitle, w, T, E, D, "cat", b), n.valAxisTitle && c(e, n.valAxisTitle, w, T, E, D, "val", b);
228
+ E > 0 && l(e, n.series, g + v - E + 4, P, E - 8, I), n.catAxisTitle && c(e, n.catAxisTitle, N, P, F, I, "cat", k), n.valAxisTitle && c(e, n.valAxisTitle, N, P, F, I, "val", k);
208
229
  }
209
- function m(e, n, o) {
210
- let { x: f, y: p, w: m, h } = o, g = d(n), _ = g.length;
230
+ function _(e, n, o) {
231
+ let { x: u, y: d, w: f, h } = o, g = m(n), _ = g.length;
211
232
  if (_ === 0) return;
212
- let v = n.chartType === "stackedArea" || n.chartType === "stackedAreaPct", y = n.title ? Math.max(14, h * .06) : 0, b = n.series.length >= 1 ? Math.max(80, m * .22) : 0, x = Math.max(8, Math.min(10, h * .045)), S = n.catAxisTitle ? x + 4 : 0, C = n.valAxisTitle ? x + 4 : 0, w = {
233
+ let v = n.chartType === "stackedArea" || n.chartType === "stackedAreaPct", y = n.title ? Math.max(14, h * .06) : 0, b = n.showLegend ? Math.max(80, f * .22) : 0, x = Math.max(8, Math.min(10, h * .045)), S = n.catAxisTitle ? x + 4 : 0, C = n.valAxisTitle ? x + 4 : 0, w = {
213
234
  t: y + h * .04,
214
- r: b + m * .05,
235
+ r: b + f * .05,
215
236
  b: h * .14 + S,
216
- l: m * .12 + C
237
+ l: f * .12 + C
217
238
  };
218
- u(e, n.title, f, p + 2, m, Math.max(11, y * .7));
219
- let T = f + w.l, E = p + w.t, D = m - w.l - w.r, O = h - w.t - w.b;
239
+ p(e, n.title, u, d + 2, f, Math.max(11, y * .7));
240
+ let T = u + w.l, E = d + w.t, D = f - w.l - w.r, O = h - w.t - w.b;
220
241
  if (D <= 0 || O <= 0) return;
221
242
  n.plotAreaBg && (e.fillStyle = `#${n.plotAreaBg}`, e.fillRect(T, E, D, O));
222
243
  let k = 0;
@@ -258,36 +279,36 @@ function m(e, n, o) {
258
279
  e.fillStyle = "#555", e.textAlign = "center", e.textBaseline = "top", e.font = `${Math.max(8, Math.min(11, D / _ * .8))}px sans-serif`;
259
280
  for (let n = 0; n < _; n += t) e.fillText((g[n] ?? "").toString().slice(0, 10), M(n), E + O + 3);
260
281
  }
261
- b > 0 && l(e, n.series, f + m - b + 4, E, b - 8, O), n.catAxisTitle && c(e, n.catAxisTitle, T, E, D, O, "cat", x), n.valAxisTitle && c(e, n.valAxisTitle, T, E, D, O, "val", x);
282
+ b > 0 && l(e, n.series, u + f - b + 4, E, b - 8, O), n.catAxisTitle && c(e, n.catAxisTitle, T, E, D, O, "cat", x), n.valAxisTitle && c(e, n.valAxisTitle, T, E, D, O, "val", x);
262
283
  }
263
- function h(e, t, r, i) {
284
+ function v(e, t, r, i) {
264
285
  let { x: a, y: o, w: s, h: c } = r, l = t.series[0];
265
286
  if (!l) return;
266
- let d = l.categories && l.categories.length > 0 ? l.categories : t.categories, f = l.values.map((e) => Math.abs(e ?? 0)), p = f.reduce((e, t) => e + t, 0);
267
- if (p === 0) return;
287
+ 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);
288
+ if (f === 0) return;
268
289
  let m = t.title ? Math.max(14, c * .06) : 0;
269
- u(e, t.title, a, o + 2, s, Math.max(11, m * .7));
270
- let h = s - Math.max(80, s * .28), g = c - m - c * .04, _ = a + h / 2, v = o + m + c * .04 + g / 2, y = Math.min(h, g) * .42, b = i ? y * .5 : 0, x = -Math.PI / 2;
271
- for (let r = 0; r < f.length; r++) {
272
- let a = f[r] / p * Math.PI * 2, o = n(r, l);
290
+ p(e, t.title, a, o + 2, s, Math.max(11, m * .7));
291
+ let h = s - (t.showLegend ? Math.max(80, s * .28) : 0), g = c - m - c * .04, _ = a + h / 2, v = o + m + c * .04 + g / 2, y = Math.min(h, g) * .42, b = i ? y * .5 : 0, x = -Math.PI / 2;
292
+ for (let r = 0; r < d.length; r++) {
293
+ let a = d[r] / f * Math.PI * 2, o = n(r, l);
273
294
  if (e.beginPath(), e.moveTo(_, v), e.arc(_, v, y, x, x + a), e.closePath(), e.fillStyle = o, e.fill(), e.strokeStyle = "#fff", e.lineWidth = 1, e.stroke(), t.showDataLabels && a > .15) {
274
- let t = x + a / 2, n = y * (i ? .75 : .6), o = _ + Math.cos(t) * n, s = v + Math.sin(t) * n, c = Math.round(f[r] / p * 100);
295
+ let t = x + a / 2, n = y * (i ? .75 : .6), o = _ + Math.cos(t) * n, s = v + Math.sin(t) * n, c = Math.round(d[r] / f * 100);
275
296
  e.font = `bold ${Math.max(8, y * .1)}px sans-serif`, e.fillStyle = "#fff", e.textAlign = "center", e.textBaseline = "middle", e.fillText(`${c}%`, o, s);
276
297
  }
277
298
  x += a;
278
299
  }
279
300
  i && (e.beginPath(), e.arc(_, v, b, 0, Math.PI * 2), e.fillStyle = "#fff", e.fill());
280
- let S = a + h + 4, C = Math.max(9, Math.min(12, c / (f.length + 2)));
301
+ let S = a + h + 4, C = Math.max(9, Math.min(12, c / (d.length + 2)));
281
302
  e.font = `${C}px sans-serif`, e.textBaseline = "middle";
282
- let w = C + 4, T = o + (c - w * f.length) / 2;
283
- for (let t = 0; t < f.length; t++) e.fillStyle = n(t, l), e.fillRect(S, T, 10, C), e.fillStyle = "#333", e.textAlign = "left", e.fillText((d[t] ?? `Item ${t + 1}`).toString().slice(0, 18), S + 14, T + C / 2), T += w;
303
+ let w = C + 4, T = o + (c - w * d.length) / 2;
304
+ for (let t = 0; t < d.length; t++) e.fillStyle = n(t, l), e.fillRect(S, T, 10, C), e.fillStyle = "#333", e.textAlign = "left", e.fillText((u[t] ?? `Item ${t + 1}`).toString().slice(0, 18), S + 14, T + C / 2), T += w;
284
305
  }
285
- function g(e, n, o) {
286
- let { x: s, y: c, w: f, h: p } = o, m = d(n), h = m.length;
306
+ function y(e, n, o) {
307
+ let { x: s, y: c, w: u, h: d } = o, f = m(n), h = f.length;
287
308
  if (h < 3) return;
288
- let g = n.title ? Math.max(14, p * .06) : 0, _ = n.series.length > 1 ? Math.max(70, f * .2) : 0;
289
- u(e, n.title, s, c + 2, f, Math.max(11, g * .7));
290
- let v = f - _, y = p - g - p * .04, b = s + v / 2, x = c + g + p * .04 + y / 2, S = Math.min(v, y) * .38, C = 0;
309
+ let g = n.title ? Math.max(14, d * .06) : 0, _ = n.showLegend ? Math.max(70, u * .2) : 0;
310
+ p(e, n.title, s, c + 2, u, Math.max(11, g * .7));
311
+ let v = u - _, y = d - g - d * .04, b = s + v / 2, x = c + g + d * .04 + y / 2, S = Math.min(v, y) * .38, C = 0;
291
312
  for (let e of n.series) for (let t of e.values) C = Math.max(C, t ?? 0);
292
313
  n.valMax != null && (C = n.valMax), C === 0 && (C = 1);
293
314
  let w = i(C), T = n.valMax ?? a(C, w), E = -Math.PI / 2, D = (e) => E + e / h * Math.PI * 2, O = Math.round(T / w);
@@ -309,7 +330,7 @@ function g(e, n, o) {
309
330
  e.font = `${Math.max(8, Math.min(11, S * .2))}px sans-serif`, e.fillStyle = "#444", e.textBaseline = "middle";
310
331
  for (let t = 0; t < h; t++) {
311
332
  let n = D(t), r = b + Math.cos(n) * (S + 12), i = x + Math.sin(n) * (S + 12);
312
- e.textAlign = Math.cos(n) < -.1 ? "right" : Math.cos(n) > .1 ? "left" : "center", e.fillText((m[t] ?? "").toString().slice(0, 12), r, i);
333
+ e.textAlign = Math.cos(n) < -.1 ? "right" : Math.cos(n) > .1 ? "left" : "center", e.fillText((f[t] ?? "").toString().slice(0, 12), r, i);
313
334
  }
314
335
  for (let i = 0; i < n.series.length; i++) {
315
336
  let a = n.series[i], o = t(i, a);
@@ -320,17 +341,17 @@ function g(e, n, o) {
320
341
  }
321
342
  e.closePath(), e.fillStyle = r(o, .25), e.fill(), e.strokeStyle = o, e.lineWidth = 2, e.stroke();
322
343
  }
323
- _ > 0 && l(e, n.series, s + f - _ + 4, c + g + p * .04, _ - 8, y);
344
+ _ > 0 && l(e, n.series, s + u - _ + 4, c + g + d * .04, _ - 8, y);
324
345
  }
325
- function _(e, n, r) {
326
- let { x: a, y: o, w: d, h: f } = r, p = n.title ? Math.max(14, f * .06) : 0, m = n.series.length >= 1 ? Math.max(80, d * .22) : 0, h = Math.max(8, Math.min(10, f * .045)), g = n.catAxisTitle ? h + 4 : 0, _ = n.valAxisTitle ? h + 4 : 0, v = {
327
- t: p + f * .06,
328
- r: m + d * .05,
329
- b: f * .12 + g,
330
- l: d * .12 + _
346
+ function b(e, n, r) {
347
+ let { x: a, y: o, w: u, h: d } = r, f = n.title ? Math.max(14, d * .06) : 0, m = n.showLegend ? Math.max(80, u * .22) : 0, h = Math.max(8, Math.min(10, d * .045)), g = n.catAxisTitle ? h + 4 : 0, _ = n.valAxisTitle ? h + 4 : 0, v = {
348
+ t: f + d * .06,
349
+ r: m + u * .05,
350
+ b: d * .12 + g,
351
+ l: u * .12 + _
331
352
  };
332
- u(e, n.title, a, o + 2, d, Math.max(11, p * .7));
333
- let y = a + v.l, b = o + v.t, x = d - v.l - v.r, S = f - v.t - v.b;
353
+ p(e, n.title, a, o + 2, u, Math.max(11, f * .7));
354
+ let y = a + v.l, b = o + v.t, x = u - v.l - v.r, S = d - v.t - v.b;
334
355
  if (x <= 0 || S <= 0) return;
335
356
  n.plotAreaBg && (e.fillStyle = `#${n.plotAreaBg}`, e.fillRect(y, b, x, S));
336
357
  let C = [], w = [];
@@ -373,9 +394,9 @@ function _(e, n, r) {
373
394
  isNaN(r) || (e.beginPath(), e.arc(A(r), j(n), M, 0, Math.PI * 2), e.fill());
374
395
  }
375
396
  }
376
- m > 0 && l(e, n.series, a + d - m + 4, b, m - 8, S), n.catAxisTitle && c(e, n.catAxisTitle, y, b, x, S, "cat", h), n.valAxisTitle && c(e, n.valAxisTitle, y, b, x, S, "val", h);
397
+ m > 0 && l(e, n.series, a + u - m + 4, b, m - 8, S), n.catAxisTitle && c(e, n.catAxisTitle, y, b, x, S, "cat", h), n.valAxisTitle && c(e, n.valAxisTitle, y, b, x, S, "val", h);
377
398
  }
378
- function v(e, t, n) {
399
+ function x(e, t, n) {
379
400
  let { x: r, y: a, w: o, h: s } = n, c = o * .11, l = o * .04, u = s * .08, d = s * .18, f = r + c, p = a + u, m = o - c - l, h = s - u - d, g = t.series[0]?.values ?? [], _ = t.categories, v = _.length;
380
401
  if (v === 0) return;
381
402
  let y = new Set(t.subtotalIndices), b = 0, x = [];
@@ -425,10 +446,10 @@ function v(e, t, n) {
425
446
  }
426
447
  e.restore();
427
448
  }
428
- function y(e, t, n) {
429
- let { x: r, y: i, w: a, h: o } = n;
430
- if (e.fillStyle = "#ffffff", e.fillRect(r, i, a, o), e.strokeStyle = "#d0d0d0", e.lineWidth = 1, e.strokeRect(r + .5, i + .5, a - 1, o - 1), t.series.length === 0) {
431
- e.fillStyle = "#888", e.font = "12px sans-serif", e.textAlign = "center", e.textBaseline = "middle", e.fillText("(no data)", r + a / 2, i + o / 2);
449
+ function S(e, t, n, r = 1.333) {
450
+ let { x: i, y: a, w: o, h: s } = n;
451
+ if (t.chartBg && (e.fillStyle = `#${t.chartBg}`, e.fillRect(i, a, o, s)), t.series.length === 0) {
452
+ e.fillStyle = "#888", e.font = "12px sans-serif", e.textAlign = "center", e.textBaseline = "middle", e.fillText("(no data)", i + o / 2, a + s / 2);
432
453
  return;
433
454
  }
434
455
  switch (t.chartType) {
@@ -438,36 +459,36 @@ function y(e, t, n) {
438
459
  case "stackedBarH":
439
460
  case "stackedBarPct":
440
461
  case "stackedBarHPct":
441
- f(e, t, n);
462
+ h(e, t, n);
442
463
  break;
443
464
  case "line":
444
465
  case "stackedLine":
445
466
  case "stackedLinePct":
446
- p(e, t, n);
467
+ g(e, t, n, r);
447
468
  break;
448
469
  case "area":
449
470
  case "stackedArea":
450
471
  case "stackedAreaPct":
451
- m(e, t, n);
472
+ _(e, t, n);
452
473
  break;
453
474
  case "pie":
454
- h(e, t, n, !1);
475
+ v(e, t, n, !1);
455
476
  break;
456
477
  case "doughnut":
457
- h(e, t, n, !0);
478
+ v(e, t, n, !0);
458
479
  break;
459
480
  case "radar":
460
- g(e, t, n);
481
+ y(e, t, n);
461
482
  break;
462
483
  case "scatter":
463
484
  case "bubble":
464
- _(e, t, n);
485
+ b(e, t, n);
465
486
  break;
466
487
  case "waterfall":
467
- v(e, t, n);
488
+ x(e, t, n);
468
489
  break;
469
- default: e.fillStyle = "#888", e.font = "11px sans-serif", e.textAlign = "center", e.textBaseline = "middle", e.fillText(`Chart: ${t.chartType}`, r + a / 2, i + o / 2);
490
+ 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);
470
491
  }
471
492
  }
472
493
  //#endregion
473
- export { y as t };
494
+ export { S as t };
@@ -0,0 +1 @@
1
+ var e=[`4472C4`,`ED7D31`,`A9D18E`,`FF0000`,`70AD47`,`4BACC6`,`FFC000`,`9E480E`,`843C0C`,`636363`,`255E91`,`967300`];function t(t,n){return n?.color?`#${n.color}`:`#${e[t%e.length]}`}function n(t,n){let r=n.dataPointColors?.[t];return r?`#${r}`:`#${e[t%e.length]}`}function r(e,t){let n=e.startsWith(`#`)?e.slice(1):e;return`rgba(${parseInt(n.slice(0,2),16)},${parseInt(n.slice(2,4),16)},${parseInt(n.slice(4,6),16)},${t})`}function i(e,t=5){if(e===0)return 1;let n=e/t,r=10**Math.floor(Math.log10(n)),i=n/r;return(i<1.5?1:i<3.5?2:i<7.5?5:10)*r}function a(e,t){if(e<=0)return t;let n=Math.ceil(e/t)*t;return Math.abs(n-e)<t*1e-9?n+t:n}function o(e,t){if(e>=0)return 0;let n=Math.floor(e/t)*t;return Math.abs(n-e)<t*1e-9?n-t:n}function s(e){return Math.abs(e)>=1e6?`${(e/1e6).toFixed(1)}M`:Math.abs(e)>=1e3?`${(e/1e3).toFixed(1)}k`:Number.isInteger(e)?String(e):e.toFixed(2).replace(/\.?0+$/,``)}function c(e,t,n,r,i,a,o,s){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()}function l(e,n,r,i,a,o){let s=Math.max(9,Math.min(12,o/(n.length+1)));e.font=`${s}px sans-serif`,e.textBaseline=`middle`;let c=s+4,l=i+(o-c*n.length)/2;for(let i=0;i<n.length;i++){e.fillStyle=t(i,n[i]),e.fillRect(r,l,10,s),e.fillStyle=`#333`,e.textAlign=`left`;let a=n[i].name||`Series ${i+1}`;e.fillText(a.slice(0,20),r+10+4,l+s/2),l+=c}}function u(e,t,n,r,i){if(t===`none`||!t)return;let a=e.strokeStyle;if(e.strokeStyle=`#888`,e.lineWidth=1,e.beginPath(),n===`val`){let n=r,a=i,o=t===`out`||t===`cross`?-4:0,s=t===`in`||t===`cross`?4:0;e.moveTo(n+o,a),e.lineTo(n+s,a)}else{let n=r,a=i,o=t===`out`||t===`cross`?4:0,s=t===`in`||t===`cross`?-4:0;e.moveTo(a,n+o),e.lineTo(a,n+s)}e.stroke(),e.strokeStyle=a}function d(e,t,n){return e.titleFontSizeHpt?e.titleFontSizeHpt/100*n:Math.max(10,t*.085)}function f(e,t,n){return e?e/100*n:Math.max(8,t*.045)}function p(e,t,n,r,i,a){t&&(e.font=`bold ${a}px sans-serif`,e.fillStyle=`#333`,e.textAlign=`center`,e.textBaseline=`top`,e.fillText(t,n+i/2,r))}function m(e){return e.categories.length>0?e.categories:e.series[0]?.categories??[]}function h(e,n,r){let{x:o,y:u,w:d,h:f}=r,h=n.chartType===`clusteredBarH`||n.chartType===`stackedBarH`||n.chartType===`stackedBarHPct`,g=n.chartType.startsWith(`stacked`),_=n.chartType===`stackedBarPct`||n.chartType===`stackedBarHPct`,v=n.series.filter(e=>e.seriesType!==`line`),y=n.series.filter(e=>e.seriesType===`line`),b=m(n),x=b.length;if(x===0)return;let S=n.title?Math.max(14,f*.06):0,C=n.showLegend?Math.max(80,d*.22):0,w=Math.max(8,Math.min(10,f*.045)),T=n.catAxisTitle?w+4:0,E=n.valAxisTitle?w+4:0,D={t:S+f*.04,r:C+d*.03,b:f*.14+T,l:d*.12+E};h&&(D.l=d*.22+E,D.b=f*.08+T),p(e,n.title,o,u+2,d,Math.max(11,S*.7));let O=o+D.l,k=u+D.t,A=d-D.l-D.r,j=f-D.t-D.b;if(A<=0||j<=0)return;n.plotAreaBg&&(e.fillStyle=`#${n.plotAreaBg}`,e.fillRect(O,k,A,j));let M=0;for(let e=0;e<x;e++){let t=0;for(let n of v){let r=n.values[e]??0;g?t+=Math.abs(r):M=Math.max(M,Math.abs(r))}g&&(M=Math.max(M,t))}_&&(M=100),n.valMax!=null&&(M=n.valMax),M===0&&(M=1);let N=i(M),P=n.valMax??a(M,N),F=`#e0e0e0`,I=Math.round(P/N);if(e.textBaseline=`middle`,e.font=`${Math.max(8,Math.min(11,j/20))}px sans-serif`,e.fillStyle=`#555`,!n.valAxisHidden)for(let t=0;t<=I;t++){let n=t*N,r=_?`${Math.round(n)}%`:n>=1e3?`${(n/1e3).toFixed(1)}k`:String(n);if(h){let i=O+n/P*A;e.strokeStyle=t===0?`#aaa`:F,e.lineWidth=t===0?1:.5,e.beginPath(),e.moveTo(i,k),e.lineTo(i,k+j),e.stroke(),e.textAlign=`center`,e.fillText(r,i,k+j+10)}else{let i=k+j-n/P*j;e.strokeStyle=t===0?`#aaa`:F,e.lineWidth=t===0?1:.5,e.beginPath(),e.moveTo(O,i),e.lineTo(O+A,i),e.stroke(),e.textAlign=`right`,e.fillText(r,O-4,i)}}e.strokeStyle=`#aaa`,e.lineWidth=1,h?(e.beginPath(),e.moveTo(O,k),e.lineTo(O,k+j),e.stroke()):(e.beginPath(),e.moveTo(O,k+j),e.lineTo(O+A,k+j),e.stroke());let L=h?j/x:A/x,R=L*(g?.6:.6/Math.max(1,v.length)),z=g?0:L*.6/Math.max(1,v.length),B=L*.2;for(let r=0;r<x;r++){let i=0,a=0;if(_){for(let e of v)a+=Math.abs(e.values[r]??0);a===0&&(a=1)}for(let o=0;o<v.length;o++){let c=v[o],l=c.values[r]??0,u=_?Math.abs(l)/a*100:Math.abs(l),d=t(o,c);if(h){let t=g?k+(x-1-r)*L+B:k+(x-1-r)*L+B+o*z,a=u/P*A,c=g?O+i/P*A:O;e.fillStyle=d,e.fillRect(c,t,a,R),n.showDataLabels&&u>0&&(e.font=`bold ${Math.max(7,Math.min(10,R*.7))}px sans-serif`,e.fillStyle=`#333`,e.textAlign=`left`,e.textBaseline=`middle`,e.fillText(_?`${Math.round(u)}%`:s(u),c+a+2,t+R/2))}else{let t=g?O+r*L+B:O+r*L+B+o*z,a=u/P*j,c=k+j-(g?i+u:u)/P*j;e.fillStyle=d,e.fillRect(t,c,R,a),n.showDataLabels&&u>0&&(e.font=`bold ${Math.max(7,Math.min(10,R*.7))}px sans-serif`,e.fillStyle=`#333`,e.textAlign=`center`,e.textBaseline=`bottom`,e.fillText(_?`${Math.round(u)}%`:s(u),t+R/2,c-1))}g&&(i+=u)}}if(!n.catAxisHidden){e.fillStyle=`#555`,e.font=`${Math.max(8,Math.min(11,L*.5))}px sans-serif`;for(let t=0;t<x;t++){let n=(b[t]??``).toString().slice(0,12);if(h){let r=k+(x-1-t)*L+L/2;e.textAlign=`right`,e.textBaseline=`middle`,e.fillText(n,O-4,r)}else{let r=O+t*L+L/2;e.textAlign=`center`,e.textBaseline=`top`,e.fillText(n,r,k+j+3)}}}if(y.length>0&&!h)for(let n=0;n<y.length;n++){let r=y[n],i=t(v.length+n,r);e.strokeStyle=i,e.lineWidth=2,e.setLineDash([]),e.beginPath();let a=!1;for(let t=0;t<x;t++){let n=r.values[t];if(n==null){a=!1;continue}let i=O+t*L+L/2,o=k+j-n/P*j;a?e.lineTo(i,o):(e.moveTo(i,o),a=!0)}e.stroke();for(let t=0;t<x;t++){let n=r.values[t];if(n==null)continue;let a=O+t*L+L/2,o=k+j-n/P*j;e.fillStyle=i,e.beginPath(),e.arc(a,o,3,0,Math.PI*2),e.fill()}}C>0&&l(e,n.series,o+d-C+4,k,C-8,j),n.catAxisTitle&&c(e,n.catAxisTitle,O,k,A,j,`cat`,w),n.valAxisTitle&&c(e,n.valAxisTitle,O,k,A,j,`val`,w)}function g(e,n,r,h){let{x:g,y:_,w:v,h:y}=r,b=m(n),x=b.length;if(x===0)return;let S=n.title?d(n,y,h):0,C=n.title?y*.045:0,w=n.title?y*.035:0,T=n.title?S+C+w:0,E=n.showLegend?Math.max(80,v*.22):0,D=f(n.catAxisFontSizeHpt,y,h),O=f(n.valAxisFontSizeHpt,y,h),k=Math.max(D,O),A=n.catAxisTitle?k+4:0,j=n.valAxisTitle?k+4:0,M={t:T+O/2+2,r:E+v*.05,b:D+12+A,l:O*2.2+10+j};p(e,n.title,g,_+C,v,S);let N=g+M.l,P=_+M.t,F=v-M.l-M.r,I=y-M.t-M.b;if(F<=0||I<=0)return;n.plotAreaBg&&(e.fillStyle=`#${n.plotAreaBg}`,e.fillRect(N,P,F,I));let L=1/0,R=-1/0;for(let e of n.series)for(let t of e.values)t!=null&&(L=Math.min(L,t),R=Math.max(R,t));isFinite(L)||(L=0,R=1),n.valMin==null?L>0&&(L=0):L=n.valMin,n.valMax==null?R<0&&(R=0):R=n.valMax,R===L&&(R=L+1);let z=i(R-L),B=n.valMin??o(L,z),V=n.valMax??a(R,z),H=V-B;if(H===0)return;let U=e=>P+I-(e-B)/H*I,W=n.catAxisCrossBetween===`midCat`?e=>N+(x===1?F/2:e/(x-1)*F):e=>N+(e+.5)/x*F;if(!n.valAxisHidden){let t=Math.round((V-B)/z);e.font=`${O}px sans-serif`,e.textBaseline=`middle`;for(let r=0;r<=t;r++){let t=B+r*z,i=U(t);e.strokeStyle=t===0?`#aaa`:`#e0e0e0`,e.lineWidth=t===0?1:.5,e.beginPath(),e.moveTo(N,i),e.lineTo(N+F,i),e.stroke(),u(e,n.valAxisMajorTickMark,`val`,N,i),e.fillStyle=`#555`,e.textAlign=`right`,e.fillText(s(t),N-6,i)}}e.strokeStyle=`#aaa`,e.lineWidth=1,e.beginPath(),e.moveTo(N,P+I),e.lineTo(N+F,P+I),e.stroke(),n.valAxisHidden||(e.beginPath(),e.moveTo(N,P),e.lineTo(N,P+I),e.stroke());let G=Math.max(1,2.25*h),K=Math.max(2,2.5*h),q=f(n.dataLabelFontSizeHpt,y,h);for(let r=0;r<n.series.length;r++){let i=n.series[r],a=t(r,i);e.strokeStyle=a,e.lineWidth=G,e.setLineDash([]),e.beginPath();let o=!1;for(let t=0;t<x;t++){let n=i.values[t];if(n==null){o=!1;continue}let r=W(t),a=U(n);o?e.lineTo(r,a):(e.moveTo(r,a),o=!0)}e.stroke(),e.fillStyle=a;for(let t=0;t<x;t++){let r=i.values[t];r!=null&&(e.beginPath(),e.arc(W(t),U(r),K,0,Math.PI*2),e.fill(),n.showDataLabels&&(e.font=`${q}px sans-serif`,e.fillStyle=`#333`,e.textAlign=`center`,e.textBaseline=`bottom`,e.fillText(s(r),W(t),U(r)-K-1),e.fillStyle=a))}}if(!n.catAxisHidden){let t=Math.max(1,Math.ceil(x/8));e.fillStyle=`#555`,e.textAlign=`center`,e.textBaseline=`top`,e.font=`${D}px sans-serif`;for(let r=0;r<x;r+=t){let t=W(r);u(e,n.catAxisMajorTickMark,`cat`,P+I,t),e.fillStyle=`#555`,e.fillText((b[r]??``).toString().slice(0,10),t,P+I+5)}}E>0&&l(e,n.series,g+v-E+4,P,E-8,I),n.catAxisTitle&&c(e,n.catAxisTitle,N,P,F,I,`cat`,k),n.valAxisTitle&&c(e,n.valAxisTitle,N,P,F,I,`val`,k)}function _(e,n,o){let{x:u,y:d,w:f,h}=o,g=m(n),_=g.length;if(_===0)return;let v=n.chartType===`stackedArea`||n.chartType===`stackedAreaPct`,y=n.title?Math.max(14,h*.06):0,b=n.showLegend?Math.max(80,f*.22):0,x=Math.max(8,Math.min(10,h*.045)),S=n.catAxisTitle?x+4:0,C=n.valAxisTitle?x+4:0,w={t:y+h*.04,r:b+f*.05,b:h*.14+S,l:f*.12+C};p(e,n.title,u,d+2,f,Math.max(11,y*.7));let T=u+w.l,E=d+w.t,D=f-w.l-w.r,O=h-w.t-w.b;if(D<=0||O<=0)return;n.plotAreaBg&&(e.fillStyle=`#${n.plotAreaBg}`,e.fillRect(T,E,D,O));let k=0;for(let e=0;e<_;e++)if(v){let t=0;for(let r of n.series)t+=r.values[e]??0;k=Math.max(k,t)}else for(let t of n.series)k=Math.max(k,t.values[e]??0);n.valMax!=null&&(k=n.valMax),k===0&&(k=1);let A=i(k),j=n.valMax??a(k,A),M=e=>T+(_===1?D/2:e/(_-1)*D),N=e=>E+O-e/j*O;if(!n.valAxisHidden){e.font=`${Math.max(8,Math.min(11,O/20))}px sans-serif`,e.textBaseline=`middle`;let t=Math.round(j/A);for(let n=0;n<=t;n++){let t=n*A,r=N(t);e.strokeStyle=n===0?`#aaa`:`#e0e0e0`,e.lineWidth=n===0?1:.5,e.beginPath(),e.moveTo(T,r),e.lineTo(T+D,r),e.stroke(),e.fillStyle=`#555`,e.textAlign=`right`,e.fillText(s(t),T-4,r)}}e.strokeStyle=`#aaa`,e.lineWidth=1,e.beginPath(),e.moveTo(T,E+O),e.lineTo(T+D,E+O),e.stroke();let P=v?Array(_).fill(0):null;for(let i=n.series.length-1;i>=0;i--){let a=n.series[i],o=t(i,a),s=E+O;if(e.beginPath(),v&&P){for(let t=0;t<_;t++){let n=(a.values[t]??0)+P[t],r=M(t),i=N(n);t===0?e.moveTo(r,i):e.lineTo(r,i)}for(let t=_-1;t>=0;t--)e.lineTo(M(t),N(P[t]));for(let e=0;e<_;e++)P[e]+=a.values[e]??0}else{e.moveTo(M(0),s);for(let t=0;t<_;t++)e.lineTo(M(t),N(a.values[t]??0));e.lineTo(M(_-1),s)}e.closePath(),e.fillStyle=r(o,.6),e.fill(),e.strokeStyle=o,e.lineWidth=1.5,e.setLineDash([]),e.stroke()}if(!n.catAxisHidden){let t=Math.max(1,Math.ceil(_/8));e.fillStyle=`#555`,e.textAlign=`center`,e.textBaseline=`top`,e.font=`${Math.max(8,Math.min(11,D/_*.8))}px sans-serif`;for(let n=0;n<_;n+=t)e.fillText((g[n]??``).toString().slice(0,10),M(n),E+O+3)}b>0&&l(e,n.series,u+f-b+4,E,b-8,O),n.catAxisTitle&&c(e,n.catAxisTitle,T,E,D,O,`cat`,x),n.valAxisTitle&&c(e,n.valAxisTitle,T,E,D,O,`val`,x)}function v(e,t,r,i){let{x:a,y:o,w:s,h:c}=r,l=t.series[0];if(!l)return;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);if(f===0)return;let m=t.title?Math.max(14,c*.06):0;p(e,t.title,a,o+2,s,Math.max(11,m*.7));let h=s-(t.showLegend?Math.max(80,s*.28):0),g=c-m-c*.04,_=a+h/2,v=o+m+c*.04+g/2,y=Math.min(h,g)*.42,b=i?y*.5:0,x=-Math.PI/2;for(let r=0;r<d.length;r++){let a=d[r]/f*Math.PI*2,o=n(r,l);if(e.beginPath(),e.moveTo(_,v),e.arc(_,v,y,x,x+a),e.closePath(),e.fillStyle=o,e.fill(),e.strokeStyle=`#fff`,e.lineWidth=1,e.stroke(),t.showDataLabels&&a>.15){let t=x+a/2,n=y*(i?.75:.6),o=_+Math.cos(t)*n,s=v+Math.sin(t)*n,c=Math.round(d[r]/f*100);e.font=`bold ${Math.max(8,y*.1)}px sans-serif`,e.fillStyle=`#fff`,e.textAlign=`center`,e.textBaseline=`middle`,e.fillText(`${c}%`,o,s)}x+=a}i&&(e.beginPath(),e.arc(_,v,b,0,Math.PI*2),e.fillStyle=`#fff`,e.fill());let S=a+h+4,C=Math.max(9,Math.min(12,c/(d.length+2)));e.font=`${C}px sans-serif`,e.textBaseline=`middle`;let w=C+4,T=o+(c-w*d.length)/2;for(let t=0;t<d.length;t++)e.fillStyle=n(t,l),e.fillRect(S,T,10,C),e.fillStyle=`#333`,e.textAlign=`left`,e.fillText((u[t]??`Item ${t+1}`).toString().slice(0,18),S+14,T+C/2),T+=w}function y(e,n,o){let{x:s,y:c,w:u,h:d}=o,f=m(n),h=f.length;if(h<3)return;let g=n.title?Math.max(14,d*.06):0,_=n.showLegend?Math.max(70,u*.2):0;p(e,n.title,s,c+2,u,Math.max(11,g*.7));let v=u-_,y=d-g-d*.04,b=s+v/2,x=c+g+d*.04+y/2,S=Math.min(v,y)*.38,C=0;for(let e of n.series)for(let t of e.values)C=Math.max(C,t??0);n.valMax!=null&&(C=n.valMax),C===0&&(C=1);let w=i(C),T=n.valMax??a(C,w),E=-Math.PI/2,D=e=>E+e/h*Math.PI*2,O=Math.round(T/w);e.strokeStyle=`#ddd`,e.lineWidth=.5;for(let t=1;t<=O;t++){let n=t/O*S;e.beginPath();for(let t=0;t<h;t++){let r=D(t),i=b+Math.cos(r)*n,a=x+Math.sin(r)*n;t===0?e.moveTo(i,a):e.lineTo(i,a)}e.closePath(),e.stroke()}e.strokeStyle=`#bbb`,e.lineWidth=.5;for(let t=0;t<h;t++){let n=D(t);e.beginPath(),e.moveTo(b,x),e.lineTo(b+Math.cos(n)*S,x+Math.sin(n)*S),e.stroke()}e.font=`${Math.max(8,Math.min(11,S*.2))}px sans-serif`,e.fillStyle=`#444`,e.textBaseline=`middle`;for(let t=0;t<h;t++){let n=D(t),r=b+Math.cos(n)*(S+12),i=x+Math.sin(n)*(S+12);e.textAlign=Math.cos(n)<-.1?`right`:Math.cos(n)>.1?`left`:`center`,e.fillText((f[t]??``).toString().slice(0,12),r,i)}for(let i=0;i<n.series.length;i++){let a=n.series[i],o=t(i,a);e.beginPath();for(let t=0;t<h;t++){let n=(a.values[t]??0)/T,r=D(t),i=b+Math.cos(r)*S*n,o=x+Math.sin(r)*S*n;t===0?e.moveTo(i,o):e.lineTo(i,o)}e.closePath(),e.fillStyle=r(o,.25),e.fill(),e.strokeStyle=o,e.lineWidth=2,e.stroke()}_>0&&l(e,n.series,s+u-_+4,c+g+d*.04,_-8,y)}function b(e,n,r){let{x:a,y:o,w:u,h:d}=r,f=n.title?Math.max(14,d*.06):0,m=n.showLegend?Math.max(80,u*.22):0,h=Math.max(8,Math.min(10,d*.045)),g=n.catAxisTitle?h+4:0,_=n.valAxisTitle?h+4:0,v={t:f+d*.06,r:m+u*.05,b:d*.12+g,l:u*.12+_};p(e,n.title,a,o+2,u,Math.max(11,f*.7));let y=a+v.l,b=o+v.t,x=u-v.l-v.r,S=d-v.t-v.b;if(x<=0||S<=0)return;n.plotAreaBg&&(e.fillStyle=`#${n.plotAreaBg}`,e.fillRect(y,b,x,S));let C=[],w=[];for(let e of n.series){let t=e.categories??[];for(let e of t){let t=parseFloat(e);isNaN(t)||C.push(t)}for(let t of e.values)t!=null&&w.push(t)}let T=C.length===0;if(T){let e=Math.max(...n.series.map(e=>e.values.length));for(let t=0;t<e;t++)C.push(t)}let E=Math.min(...C),D=Math.max(...C),O=Math.min(...w),k=Math.max(...w);E===D&&(--E,D+=1),O===k&&(--O,k+=1),n.valMin==null?O>0&&(O=0):O=n.valMin,n.valMax!=null&&(k=n.valMax);let A=e=>y+(e-E)/(D-E)*x,j=e=>b+S-(e-O)/(k-O)*S;if(!n.valAxisHidden){e.font=`${Math.max(8,Math.min(11,S/20))}px sans-serif`;let t=i(k-O),n=Math.round((k-O)/t)+1;for(let r=0;r<n;r++){let n=O+r*t;if(n>k+t*.01)break;let i=j(n);e.strokeStyle=`#e0e0e0`,e.lineWidth=.5,e.beginPath(),e.moveTo(y,i),e.lineTo(y+x,i),e.stroke(),e.fillStyle=`#555`,e.textAlign=`right`,e.textBaseline=`middle`,e.fillText(s(n),y-4,i)}}e.strokeStyle=`#aaa`,e.lineWidth=1,e.beginPath(),e.moveTo(y,b+S),e.lineTo(y+x,b+S),e.stroke(),e.beginPath(),e.moveTo(y,b),e.lineTo(y,b+S),e.stroke();let M=Math.max(3,S*.015);for(let r=0;r<n.series.length;r++){let i=n.series[r];e.fillStyle=t(r,i);let a=i.categories??[];for(let t=0;t<i.values.length;t++){let n=i.values[t];if(n==null)continue;let r=T?t:parseFloat(a[t]??`0`);isNaN(r)||(e.beginPath(),e.arc(A(r),j(n),M,0,Math.PI*2),e.fill())}}m>0&&l(e,n.series,a+u-m+4,b,m-8,S),n.catAxisTitle&&c(e,n.catAxisTitle,y,b,x,S,`cat`,h),n.valAxisTitle&&c(e,n.valAxisTitle,y,b,x,S,`val`,h)}function x(e,t,n){let{x:r,y:a,w:o,h:s}=n,c=o*.11,l=o*.04,u=s*.08,d=s*.18,f=r+c,p=a+u,m=o-c-l,h=s-u-d,g=t.series[0]?.values??[],_=t.categories,v=_.length;if(v===0)return;let y=new Set(t.subtotalIndices),b=0,x=[];for(let e=0;e<v;e++){let t=g[e]??0;if(e===0||y.has(e))x.push({start:0,end:t,isSub:!0,isPos:!0}),b=t;else{let e=t>=0?b:b+t,n=t>=0?b+t:b;x.push({start:e,end:n,isSub:!1,isPos:t>=0}),b+=t}}let S=x.map(e=>e.end),C=x.map(e=>e.start),w=Math.max(...S,...C),T=Math.min(...C,0),E=w-T;if(E<=0)return;let D=E*1.1,O=T-E*.05,k=O+D,A=i(D);e.save();let j=Math.round(s*.042);e.font=`${j}px sans-serif`,e.strokeStyle=`#e8e8e8`,e.lineWidth=.7,e.fillStyle=`#666`,e.textAlign=`right`,e.textBaseline=`middle`;for(let t=Math.ceil(O/A)*A;t<=k;t+=A){let n=p+h*(1-(t-O)/D);e.beginPath(),e.moveTo(f,n),e.lineTo(f+m,n),e.stroke(),e.fillText(t.toLocaleString(),f-4,n)}e.strokeStyle=`#bbb`,e.lineWidth=1,e.beginPath(),e.moveTo(f,p),e.lineTo(f,p+h),e.lineTo(f+m,p+h),e.stroke();let M=m/v*.55,N=m/v;x.forEach((t,n)=>{let r=f+N*n+(N-M)/2,i=p+h*(1-(t.end-O)/D),a=p+h*(1-(t.start-O)/D),o=Math.max(1,a-i);if(t.isSub?(e.fillStyle=`#196ECA`,e.fillRect(r,i,M,o)):(e.strokeStyle=t.isPos?`#5BA4E6`:`#E46970`,e.lineWidth=1.5,e.strokeRect(r+.75,i+.75,M-1.5,o-1.5)),n<v-1){let o=f+N*(n+1)+(N-M)/2,s=t.isPos?i:a;e.strokeStyle=`#ccc`,e.lineWidth=.8,e.setLineDash([3,3]),e.beginPath(),e.moveTo(r+M,s),e.lineTo(o,s),e.stroke(),e.setLineDash([])}let c=g[n]??0,l=c<0?`△ ${Math.abs(c).toLocaleString()}`:c.toLocaleString();e.fillStyle=`#595959`,e.font=`bold ${Math.round(s*.044)}px sans-serif`,e.textAlign=`center`,e.textBaseline=`bottom`,e.fillText(l,r+M/2,i-3)}),e.textAlign=`center`,e.textBaseline=`top`,e.fillStyle=`#666`,e.font=`${Math.round(s*.038)}px sans-serif`;let P=p+h+4;for(let t=0;t<v;t++){let n=f+N*t+N/2;_[t].split(/\s+/).forEach((t,r)=>e.fillText(t,n,P+r*(j+2)))}e.restore()}function S(e,t,n,r=1.333){let{x:i,y:a,w:o,h:s}=n;if(t.chartBg&&(e.fillStyle=`#${t.chartBg}`,e.fillRect(i,a,o,s)),t.series.length===0){e.fillStyle=`#888`,e.font=`12px sans-serif`,e.textAlign=`center`,e.textBaseline=`middle`,e.fillText(`(no data)`,i+o/2,a+s/2);return}switch(t.chartType){case`clusteredBar`:case`clusteredBarH`:case`stackedBar`:case`stackedBarH`:case`stackedBarPct`:case`stackedBarHPct`:h(e,t,n);break;case`line`:case`stackedLine`:case`stackedLinePct`:g(e,t,n,r);break;case`area`:case`stackedArea`:case`stackedAreaPct`:_(e,t,n);break;case`pie`:v(e,t,n,!1);break;case`doughnut`:v(e,t,n,!0);break;case`radar`:y(e,t,n);break;case`scatter`:case`bubble`:b(e,t,n);break;case`waterfall`:x(e,t,n);break;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)}}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return S}});
@@ -1,3 +1,28 @@
1
+ /**
2
+ * Observe an element's size and invoke a render callback, coalescing bursts to
3
+ * one call per animation frame and serializing overlapping async renders.
4
+ *
5
+ * Framework-agnostic: call from any mount/setup hook and invoke the returned
6
+ * disposer in the corresponding teardown hook.
7
+ *
8
+ * @example
9
+ * const detach = autoResize(
10
+ * (width) => pres.renderSlide(canvas, 0, { width }),
11
+ * canvas,
12
+ * );
13
+ * // later
14
+ * detach();
15
+ */
16
+ export declare function autoResize(render: (width: number, height: number) => void | Promise<void>, element: Element, opts?: AutoResizeOptions): () => void;
17
+
18
+ export declare interface AutoResizeOptions {
19
+ /**
20
+ * Skip rendering while `document.hidden` is true and fire once with the latest
21
+ * observed size when the tab becomes visible again. Default: true.
22
+ */
23
+ pauseWhenHidden?: boolean;
24
+ }
25
+
1
26
  declare type BodyElement = {
2
27
  type: 'paragraph';
3
28
  } & DocParagraph | {
@@ -20,7 +45,12 @@ declare interface CellBorders {
20
45
  }
21
46
 
22
47
  export declare interface DocParagraph {
23
- alignment: 'left' | 'center' | 'right' | 'justify';
48
+ /**
49
+ * ECMA-376 §17.18.44 ST_Jc. Renderer honors left, start, center, right, end,
50
+ * both, distribute. Other values (kashida variants, numTab, thaiDistribute)
51
+ * are treated as start-aligned.
52
+ */
53
+ alignment: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | 'both' | 'distribute' | string;
24
54
  indentLeft: number;
25
55
  indentRight: number;
26
56
  indentFirst: number;
@@ -36,6 +66,12 @@ export declare interface DocParagraph {
36
66
  pageBreakBefore?: boolean;
37
67
  /** Suppress spacing between adjacent same-style paragraphs (w:contextualSpacing) */
38
68
  contextualSpacing?: boolean;
69
+ /** Keep paragraph on same page as the next paragraph (w:keepNext) */
70
+ keepNext?: boolean;
71
+ /** Keep all lines of this paragraph on the same page (w:keepLines) */
72
+ keepLines?: boolean;
73
+ /** Widow/orphan control (w:widowControl). ECMA-376 default is true. */
74
+ widowControl?: boolean;
39
75
  /** Paragraph borders (w:pBdr) */
40
76
  borders?: ParagraphBorders | null;
41
77
  /** Style ID of the applied paragraph style */
@@ -53,7 +89,9 @@ export declare type DocRun = {
53
89
  breakType: 'line' | 'page' | 'column';
54
90
  } | {
55
91
  type: 'field';
56
- } & FieldRun;
92
+ } & FieldRun | {
93
+ type: 'shape';
94
+ } & ShapeRun;
57
95
 
58
96
  declare interface DocTable {
59
97
  colWidths: number[];
@@ -142,6 +180,13 @@ declare interface FieldRun {
142
180
  highlight?: string | null;
143
181
  }
144
182
 
183
+ declare interface GradientStop {
184
+ /** 0.0–1.0 */
185
+ position: number;
186
+ /** hex 6-char */
187
+ color: string;
188
+ }
189
+
145
190
  declare interface HeaderFooter {
146
191
  body: BodyElement[];
147
192
  }
@@ -227,6 +272,32 @@ declare interface ParagraphBorders {
227
272
  between: ParaBorderEdge | null;
228
273
  }
229
274
 
275
+ declare type PathCmd = {
276
+ cmd: 'moveTo';
277
+ x: number;
278
+ y: number;
279
+ } | {
280
+ cmd: 'lineTo';
281
+ x: number;
282
+ y: number;
283
+ } | {
284
+ cmd: 'cubicBezTo';
285
+ x1: number;
286
+ y1: number;
287
+ x2: number;
288
+ y2: number;
289
+ x: number;
290
+ y: number;
291
+ } | {
292
+ cmd: 'arcTo';
293
+ wr: number;
294
+ hr: number;
295
+ stAng: number;
296
+ swAng: number;
297
+ } | {
298
+ cmd: 'close';
299
+ };
300
+
230
301
  export declare interface RenderPageOptions {
231
302
  /** Canvas CSS width in px; height is auto-computed from page aspect ratio */
232
303
  width?: number;
@@ -247,6 +318,38 @@ export declare interface SectionProps {
247
318
  evenAndOddHeaders: boolean;
248
319
  }
249
320
 
321
+ declare type ShapeFill = {
322
+ fillType: 'solid';
323
+ color: string;
324
+ } | {
325
+ fillType: 'gradient';
326
+ stops: GradientStop[];
327
+ angle: number;
328
+ gradType: string;
329
+ };
330
+
331
+ declare interface ShapeRun {
332
+ widthPt: number;
333
+ heightPt: number;
334
+ /** X offset in pt */
335
+ anchorXPt: number;
336
+ /** Y offset in pt */
337
+ anchorYPt: number;
338
+ anchorXFromMargin: boolean;
339
+ anchorYFromPara: boolean;
340
+ /** Draw behind text when true (wp:anchor behindDoc="1"). */
341
+ behindDoc?: boolean;
342
+ /** Document-order index within a group; lower values render first. */
343
+ zOrder: number;
344
+ /** Normalized [0,1] custom-geometry sub-paths */
345
+ subpaths: PathCmd[][];
346
+ fill: ShapeFill | null;
347
+ stroke: string | null;
348
+ strokeWidth?: number;
349
+ rotation?: number;
350
+ wrapMode?: string | null;
351
+ }
352
+
250
353
  declare interface TableBorders {
251
354
  top: BorderSpec | null;
252
355
  bottom: BorderSpec | null;