@silurus/ooxml 0.81.0 → 0.82.1

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.
Files changed (61) hide show
  1. package/README.md +4 -8
  2. package/dist/assets/render-worker-Cy-QsDge.js +10 -0
  3. package/dist/assets/{render-worker-DtU8oQZ7.js → render-worker-Dw_wQRIh.js} +1 -1
  4. package/dist/assets/{render-worker-C2ACcLes.js → render-worker-aHayzR7v.js} +4 -4
  5. package/dist/{canvas-viewer-mechanics-CqxKRGCp.js → canvas-viewer-mechanics-CS_qbr6T.js} +1 -1
  6. package/dist/chart-ex.mjs +4 -4
  7. package/dist/comment-occurrence-C34fWs_F.js +6 -0
  8. package/dist/comment-ui-runtime-C1RV_3iu.js +112 -0
  9. package/dist/comment-ui-runtime-DTGN3Vyy.js +2 -0
  10. package/dist/comment-ui-runtime-DgCZpPR0.js +171 -0
  11. package/dist/comments-Cf9W7r3M.js +241 -0
  12. package/dist/{document-pull-client-Ux4a_ax8.js → document-pull-client-B1WOjA0z.js} +2206 -2193
  13. package/dist/{docx-SEyQ4gS-.js → docx-HoZXZUPA.js} +674 -249
  14. package/dist/docx.mjs +6 -5
  15. package/dist/docx_parser_bg.wasm +0 -0
  16. package/dist/dom-interaction-boundary-C8F6HO5x.js +119 -0
  17. package/dist/highlight-rect-MaCt0om0.js +13 -0
  18. package/dist/index.mjs +3 -3
  19. package/dist/{line-distribute-BBGvvwLt.js → line-distribute-iXsUCIH-.js} +2 -2
  20. package/dist/{line-metrics-Baz31mML.js → line-metrics-B3syvDn2.js} +52 -52
  21. package/dist/math.mjs +2 -2
  22. package/dist/node.mjs +10 -10
  23. package/dist/{plot-area-frame-Dg1VIpUU.js → plot-area-frame-DHV02PJU.js} +591 -590
  24. package/dist/{pptx-5lQrMvMR.js → pptx-DEUP4Yq5.js} +537 -243
  25. package/dist/pptx.mjs +6 -6
  26. package/dist/pptx_parser_bg.wasm +0 -0
  27. package/dist/read-only-comment-decoration-DcFevX_Q.js +96 -0
  28. package/dist/read-only-comment-margin-DrUX-YrP.js +189 -0
  29. package/dist/region-map.mjs +2 -2
  30. package/dist/{render-DEHjijQD.js → render-BC8p7vZQ.js} +1 -1
  31. package/dist/{render-worker-host-B1nbV_k7.js → render-worker-host-BNnXCtAu.js} +1 -1
  32. package/dist/{render-worker-host-Bze5M6k5.js → render-worker-host-CmPBviYJ.js} +1 -1
  33. package/dist/{render-worker-host-Dg_74V64.js → render-worker-host-DhnkTyjj.js} +1 -1
  34. package/dist/{renderer-DuopJE1K.js → renderer-CYr9YTXM.js} +436 -435
  35. package/dist/{resource-measurement-DRLp4nFt.js → resource-measurement-CsW4_eYt.js} +2 -2
  36. package/dist/{session-CNVc3VJ4.js → session-Da7LEQUB.js} +3 -3
  37. package/dist/{slide-pull-client-CzutXnGc.js → slide-pull-client-Bg9DusLX.js} +413 -300
  38. package/dist/source-key-BklvnEyQ.js +42 -0
  39. package/dist/{three-d-BYiWCNlz.js → three-d-7MaVzQuZ.js} +48 -47
  40. package/dist/three-d.mjs +324 -323
  41. package/dist/types/chart-ex.d.ts +2 -2
  42. package/dist/types/docx.d.ts +183 -19
  43. package/dist/types/index.d.ts +343 -26
  44. package/dist/types/math.d.ts +1 -1
  45. package/dist/types/node.d.ts +428 -348
  46. package/dist/types/pptx.d.ts +132 -11
  47. package/dist/types/region-map.d.ts +2 -2
  48. package/dist/types/three-d.d.ts +2 -2
  49. package/dist/types/xlsx.d.ts +78 -10
  50. package/dist/units-BzZ0gAxs.js +4 -0
  51. package/dist/{worksheet-pull-client-Cxj3Ej0s.js → worksheet-pull-client-CYtwXP5D.js} +3 -3
  52. package/dist/{xlsx-Bl3TIEVu.js → xlsx-DMWeXT-c.js} +429 -218
  53. package/dist/xlsx.mjs +6 -6
  54. package/dist/xlsx_parser_bg.wasm +0 -0
  55. package/package.json +2 -1
  56. package/dist/assets/render-worker-Cx5uR77k.js +0 -10
  57. package/dist/highlight-rect-BqcZMHUE.js +0 -48
  58. /package/dist/{mathjax-DJa-Q93p.js → mathjax-DwIrafQ6.js} +0 -0
  59. /package/dist/{renderer-module-contract-0bO_5SC0.js → renderer-module-contract-DLbb7zY0.js} +0 -0
  60. /package/dist/{transfer-D0U6Uhn4.js → transfer-R6NjgBKD.js} +0 -0
  61. /package/dist/{visible-index-DbDuGMCE.js → visible-index-BFE3PWiY.js} +0 -0
@@ -1,28 +1,31 @@
1
1
  import { t as e } from "./chunk-DmhlhrBa.js";
2
- import { a as t, c as n, i as r, l as i, n as a, o, r as s, s as c, t as l } from "./slide-pull-client-CzutXnGc.js";
3
- import { B as u, Ct as d, Et as f, G as p, Jt as m, R as h, Yt as g, a as _, at as v, ht as y, it as b, mt as x, q as S, z as C } from "./line-metrics-Baz31mML.js";
4
- import { C as w, E as ee, S as te, T as ne, _ as re, a as T, b as ie, c as E, d as ae, f as oe, g as se, h as ce, i as D, l as O, m as le, n as ue, o as de, p as fe, r as pe, s as me, t as he, v as ge, w as _e, x as ve, y as k } from "./canvas-viewer-mechanics-CqxKRGCp.js";
5
- import { a as ye, i as be, n as xe, t as Se } from "./bounded-raw-part-cache-C6ro6Ezf.js";
6
- import { in as A, mn as Ce, pn as we } from "./plot-area-frame-Dg1VIpUU.js";
7
- import { n as Te } from "./resource-measurement-DRLp4nFt.js";
8
- import { n as Ee } from "./renderer-module-contract-0bO_5SC0.js";
9
- import { n as De, r as j, t as Oe } from "./visible-index-DbDuGMCE.js";
10
- import { n as ke, r as M, t as N } from "./highlight-rect-BqcZMHUE.js";
2
+ import { a as t, c as n, i as r, l as i, n as a, o, r as s, s as c, t as l } from "./slide-pull-client-Bg9DusLX.js";
3
+ import { B as u, Ct as d, Et as f, G as p, Jt as m, R as h, Yt as g, a as _, at as v, ht as y, it as b, mt as x, q as S, z as C } from "./line-metrics-B3syvDn2.js";
4
+ import { C as w, E as ee, S as te, T as ne, _ as re, a as T, b as ie, c as E, d as ae, f as oe, g as se, h as ce, i as D, l as O, m as le, n as ue, o as de, p as fe, r as pe, s as me, t as he, v as ge, w as _e, x as ve, y as ye } from "./canvas-viewer-mechanics-CS_qbr6T.js";
5
+ import { a as be, i as xe, n as Se, t as Ce } from "./bounded-raw-part-cache-C6ro6Ezf.js";
6
+ import { cn as we, ln as Te } from "./plot-area-frame-DHV02PJU.js";
7
+ import { i as k } from "./units-BzZ0gAxs.js";
8
+ import { n as Ee } from "./resource-measurement-CsW4_eYt.js";
9
+ import { n as De } from "./renderer-module-contract-DLbb7zY0.js";
10
+ import { n as Oe, r as ke, t as Ae } from "./visible-index-BFE3PWiY.js";
11
+ import { n as je, r as Me, t as Ne } from "./dom-interaction-boundary-C8F6HO5x.js";
12
+ import { n as Pe, t as A } from "./highlight-rect-MaCt0om0.js";
13
+ import { t as j } from "./comment-occurrence-C34fWs_F.js";
11
14
  //#region packages/core/src/nav/internal-target.ts
12
- function Ae(e, t) {
15
+ function Fe(e, t) {
13
16
  let n = t.startsWith("/") ? [] : e.split("/").filter((e) => e !== "");
14
17
  for (let e of t.split("/")) if (e === "..") n.pop();
15
18
  else if (e === "." || e === "") continue;
16
19
  else n.push(e);
17
20
  return n.join("/");
18
21
  }
19
- function je(e) {
22
+ function Ie(e) {
20
23
  let t = /[?&]jump=([a-zA-Z]+)/.exec(e);
21
24
  if (!t) return null;
22
25
  let n = t[1].toLowerCase();
23
26
  return n === "firstslide" || n === "lastslide" || n === "nextslide" || n === "previousslide" ? n : null;
24
27
  }
25
- function Me(e, t, n) {
28
+ function Le(e, t, n) {
26
29
  if (!(n <= 0)) switch (e) {
27
30
  case "firstslide": return 0;
28
31
  case "lastslide": return n - 1;
@@ -32,17 +35,17 @@ function Me(e, t, n) {
32
35
  }
33
36
  //#endregion
34
37
  //#region packages/pptx/src/text-layer.ts
35
- function P(e, t, n) {
38
+ function M(e, t, n) {
36
39
  e.dataset ? n === void 0 ? delete e.dataset[t] : e.dataset[t] = n : n !== void 0 && e.setAttribute?.(`data-${t.replace(/[A-Z]/g, (e) => `-${e.toLowerCase()}`)}`, n);
37
40
  }
38
- function F(e, t, n, r, i, a) {
39
- e.innerHTML = "", P(e, "ooxmlSelectionSurface", "pptx"), P(e, "slideIndex", a === void 0 ? void 0 : String(a));
41
+ function N(e, t, n, r, i, a) {
42
+ e.innerHTML = "", M(e, "ooxmlSelectionSurface", "pptx"), M(e, "slideIndex", a === void 0 ? void 0 : String(a));
40
43
  let o = /* @__PURE__ */ new Map(), s = e.ownerDocument ?? document;
41
44
  for (let [a, c] of t.entries()) {
42
45
  let t = c.rotation + (c.textBodyRotation ?? 0), l = `${c.shapeX},${c.shapeY},${c.shapeW},${c.shapeH},${t}`;
43
46
  if (!o.has(l)) {
44
47
  let i = s.createElement("div");
45
- i.style.cssText = `position:absolute;left:${N(c.shapeX, n)};top:${N(c.shapeY, r)};width:${N(c.shapeW, n)};height:${N(c.shapeH, r)};pointer-events:all;overflow:hidden;`, t !== 0 && (i.style.transformOrigin = "center center", i.style.transform = `rotate(${t}deg)`), o.set(l, {
48
+ i.style.cssText = `position:absolute;left:${A(c.shapeX, n)};top:${A(c.shapeY, r)};width:${A(c.shapeW, n)};height:${A(c.shapeH, r)};pointer-events:all;overflow:hidden;`, t !== 0 && (i.style.transformOrigin = "center center", i.style.transform = `rotate(${t}deg)`), o.set(l, {
46
49
  div: i,
47
50
  x: c.shapeX,
48
51
  y: c.shapeY,
@@ -52,20 +55,20 @@ function F(e, t, n, r, i, a) {
52
55
  }), e.appendChild(i);
53
56
  }
54
57
  let u = o.get(l), d = s.createElement("span");
55
- P(d, "ooxmlSelectionRun", "pptx"), P(d, "runIndex", String(a)), c.shapeId !== void 0 && P(d, "shapeId", c.shapeId), c.elementIndex !== void 0 && P(d, "elementIndex", String(c.elementIndex)), c.origin !== void 0 && P(d, "elementOrigin", c.origin), d.textContent = c.text;
58
+ M(d, "ooxmlSelectionRun", "pptx"), M(d, "runIndex", String(a)), c.shapeId !== void 0 && M(d, "shapeId", c.shapeId), c.elementIndex !== void 0 && M(d, "elementIndex", String(c.elementIndex)), c.origin !== void 0 && M(d, "elementOrigin", c.origin), d.textContent = c.text;
56
59
  let f = i ? c.hyperlink : void 0;
57
- d.style.cssText = `position:absolute;left:${N(c.inShapeX, u.w)};top:${N(c.inShapeY, u.h)};font:${c.font};line-height:${c.h}px;letter-spacing:0;white-space:pre;color:transparent;cursor:${f ? "pointer" : "text"};`, f && i && (d.title = f.kind === "external" ? f.url : f.ref, d.addEventListener("click", (e) => {
60
+ d.style.cssText = `position:absolute;left:${A(c.inShapeX, u.w)};top:${A(c.inShapeY, u.h)};font:${c.font};line-height:${c.h}px;letter-spacing:0;white-space:pre;color:transparent;cursor:${f ? "pointer" : "text"};`, f && i && (d.title = f.kind === "external" ? f.url : f.ref, d.addEventListener("click", (e) => {
58
61
  e.preventDefault(), i(f);
59
62
  })), u.div.appendChild(d);
60
63
  }
61
64
  }
62
- function I(e, t, n, r, i, a, o = {}) {
65
+ function P(e, t, n, r, i, a, o = {}) {
63
66
  e.innerHTML = "";
64
67
  let s = o.match ?? "rgba(255, 214, 0, 0.42)", c = o.active ?? "rgba(255, 140, 0, 0.55)", l = /* @__PURE__ */ new Map(), u = (t) => {
65
68
  let n = t.rotation + (t.textBodyRotation ?? 0), a = `${t.shapeX},${t.shapeY},${t.shapeW},${t.shapeH},${n}`, o = l.get(a);
66
69
  if (!o) {
67
70
  let s = document.createElement("div");
68
- s.style.cssText = `position:absolute;left:${N(t.shapeX, r)};top:${N(t.shapeY, i)};width:${N(t.shapeW, r)};height:${N(t.shapeH, i)};pointer-events:none;overflow:hidden;`, n !== 0 && (s.style.transformOrigin = "center center", s.style.transform = `rotate(${n}deg)`), o = {
71
+ s.style.cssText = `position:absolute;left:${A(t.shapeX, r)};top:${A(t.shapeY, i)};width:${A(t.shapeW, r)};height:${A(t.shapeH, i)};pointer-events:none;overflow:hidden;`, n !== 0 && (s.style.transformOrigin = "center center", s.style.transform = `rotate(${n}deg)`), o = {
69
72
  div: s,
70
73
  w: t.shapeW,
71
74
  h: t.shapeH
@@ -78,16 +81,16 @@ function I(e, t, n, r, i, a, o = {}) {
78
81
  for (let r of e.slices) {
79
82
  let e = t[r.runIndex];
80
83
  if (!e) continue;
81
- let i = a(e.font), { x: o, width: s } = ke(e.text, r.start, r.end, i);
84
+ let i = a(e.font), { x: o, width: s } = Pe(e.text, r.start, r.end, i);
82
85
  if (s <= 0) continue;
83
86
  let c = u(e), l = document.createElement("div");
84
- l.style.cssText = `position:absolute;left:${N(e.inShapeX + o, c.w)};top:${N(e.inShapeY, c.h)};width:${N(s, c.w)};height:${N(e.h, c.h)};background:${n};pointer-events:none;`, c.div.appendChild(l);
87
+ l.style.cssText = `position:absolute;left:${A(e.inShapeX + o, c.w)};top:${A(e.inShapeY, c.h)};width:${A(s, c.w)};height:${A(e.h, c.h)};background:${n};pointer-events:none;`, c.div.appendChild(l);
85
88
  }
86
89
  }
87
90
  }
88
91
  //#endregion
89
92
  //#region packages/pptx/src/find.ts
90
- var L = class {
93
+ var Re = class {
91
94
  _slideRuns = /* @__PURE__ */ new Map();
92
95
  _matches = [];
93
96
  _active = -1;
@@ -173,22 +176,22 @@ var L = class {
173
176
  location: { slide: e.slide }
174
177
  } : null;
175
178
  }
176
- }, R = (e) => e >= "0" && e <= "9";
177
- function Ne(e) {
179
+ }, ze = (e) => e >= "0" && e <= "9";
180
+ function Be(e) {
178
181
  let t = 0;
179
182
  for (let n = 0; n < 10; n++) t = Math.max(t, e.measureText(String(n)).width);
180
183
  return t;
181
184
  }
182
- function z(e, t, n) {
185
+ function F(e, t, n) {
183
186
  let r = 0;
184
- for (let i of t) r += R(i) ? n : e.measureText(i).width;
187
+ for (let i of t) r += ze(i) ? n : e.measureText(i).width;
185
188
  return r;
186
189
  }
187
- function B(e, t, n, r, i) {
190
+ function I(e, t, n, r, i) {
188
191
  let a = e.textAlign;
189
192
  e.textAlign = "left";
190
193
  let o = n;
191
- for (let n of t) if (R(n)) {
194
+ for (let n of t) if (ze(n)) {
192
195
  let t = e.measureText(n).width;
193
196
  e.fillText(n, o + (i - t) / 2, r), o += i;
194
197
  } else e.fillText(n, o, r), o += e.measureText(n).width;
@@ -196,11 +199,11 @@ function B(e, t, n, r, i) {
196
199
  }
197
200
  //#endregion
198
201
  //#region packages/pptx/src/presentation-handle.ts
199
- var V = (e, t) => e / A * t;
200
- async function Pe(e, t, n) {
202
+ var L = (e, t) => e / k * t;
203
+ async function Ve(e, t, n) {
201
204
  let r = e.getContext("2d");
202
205
  if (!r) throw Error("2D context not available");
203
- let a = n.width / (n.slideWidthEmu / A);
206
+ let a = n.width / (n.slideWidthEmu / k);
204
207
  await n.drawBase();
205
208
  let o = document.createElement("canvas");
206
209
  o.width = e.width, o.height = e.height;
@@ -224,11 +227,11 @@ async function Pe(e, t, n) {
224
227
  try {
225
228
  t = await n.fetchMedia(e.mediaPath);
226
229
  } catch (t) {
227
- throw u(), Le(e, t);
230
+ throw u(), We(e, t);
228
231
  }
229
232
  let r = e.mimeType || t.type, i = t.type === r ? t : new Blob([t], { type: r }), o = URL.createObjectURL(i), s = e.mediaKind === "video" ? document.createElement("video") : document.createElement("audio");
230
233
  s.src = o, s.preload = "metadata", e.mediaKind === "video" && (s.playsInline = !0);
231
- let f = Fe(e, a), p = {
234
+ let f = He(e, a), p = {
232
235
  el: e,
233
236
  rect: e.mediaKind === "audio" ? {
234
237
  x: f.x + f.w / 2 - Math.max(f.w, 260) / 2,
@@ -246,7 +249,7 @@ async function Pe(e, t, n) {
246
249
  }, h = () => {
247
250
  l || (p.loadState = "ready");
248
251
  }, g = () => {
249
- l || (p.loadState = "error", d(H(e, s, "decode")));
252
+ l || (p.loadState = "error", d(R(e, s, "decode")));
250
253
  };
251
254
  s.addEventListener("loadedmetadata", m), s.addEventListener("canplay", h), s.addEventListener("error", g), p.detachListeners = () => {
252
255
  s.removeEventListener("loadedmetadata", m), s.removeEventListener("canplay", h), s.removeEventListener("error", g);
@@ -254,7 +257,7 @@ async function Pe(e, t, n) {
254
257
  try {
255
258
  s.load();
256
259
  } catch (t) {
257
- let n = H(e, s, "load", t);
260
+ let n = R(e, s, "load", t);
258
261
  throw u(), n;
259
262
  }
260
263
  }
@@ -266,14 +269,14 @@ async function Pe(e, t, n) {
266
269
  let t = e.media;
267
270
  if (e.loadState !== "loading") {
268
271
  if (e.loadState === "error") {
269
- Ie(r, e.posterRect, "Media unavailable");
272
+ Ue(r, e.posterRect, "Media unavailable");
270
273
  continue;
271
274
  }
272
275
  if (e.el.mediaKind === "video" && t.readyState >= 2) {
273
276
  let { x: n, y: i, w: a, h: o } = e.posterRect;
274
277
  r.drawImage(t, n, i, a, o);
275
278
  }
276
- if (e === p || v?.state === e) Ve(r, e, t);
279
+ if (e === p || v?.state === e) Ye(r, e, t);
277
280
  else if (t.paused) {
278
281
  let { x: t, y: n, w: a, h: o } = e.posterRect;
279
282
  i(r, t + a / 2, n + o / 2, a, o, "paused");
@@ -292,7 +295,7 @@ async function Pe(e, t, n) {
292
295
  for (let n of c) {
293
296
  let { x: r, y: i, w: a, h: o } = n.rect;
294
297
  if (e < r || e > r + a || t < i || t > i + o) continue;
295
- let s = K(n), c = s.y - 12, l = s.y + s.h + 8;
298
+ let s = W(n), c = s.y - 12, l = s.y + s.h + 8;
296
299
  return (Number.isFinite(n.media.duration) ? n.media.duration : 0) > 0 && e >= s.x && e <= s.x + s.w && t >= c && t <= l ? {
297
300
  kind: "seek",
298
301
  state: n,
@@ -309,10 +312,10 @@ async function Pe(e, t, n) {
309
312
  }, b = (e) => {
310
313
  try {
311
314
  e.media.play().catch((t) => {
312
- d(H(e.el, e.media, "play", t));
315
+ d(R(e.el, e.media, "play", t));
313
316
  });
314
317
  } catch (t) {
315
- d(H(e.el, e.media, "play", t));
318
+ d(R(e.el, e.media, "play", t));
316
319
  }
317
320
  }, x = (t) => {
318
321
  let { x: n, y: r } = g(t.clientX, t.clientY), i = _(n, r);
@@ -331,7 +334,7 @@ async function Pe(e, t, n) {
331
334
  }
332
335
  }
333
336
  if (v) {
334
- let e = K(v.state), n = Math.max(0, Math.min(1, (t - e.x) / e.w));
337
+ let e = W(v.state), n = Math.max(0, Math.min(1, (t - e.x) / e.w));
335
338
  y(v.state, n);
336
339
  }
337
340
  }, C = () => {
@@ -353,24 +356,24 @@ async function Pe(e, t, n) {
353
356
  }
354
357
  };
355
358
  }
356
- function Fe(e, t) {
359
+ function He(e, t) {
357
360
  return {
358
- x: V(e.x, t),
359
- y: V(e.y, t),
360
- w: V(e.width, t),
361
- h: V(e.height, t)
361
+ x: L(e.x, t),
362
+ y: L(e.y, t),
363
+ w: L(e.width, t),
364
+ h: L(e.height, t)
362
365
  };
363
366
  }
364
- function Ie(e, t, n) {
367
+ function Ue(e, t, n) {
365
368
  let r = Math.max(10, Math.min(14, t.h * .12));
366
369
  e.save(), e.font = `500 ${r}px system-ui, -apple-system, sans-serif`, e.textAlign = "center", e.textBaseline = "middle";
367
370
  let i = r + 12, a = Math.min(t.w, Math.max(100, e.measureText(n).width + 24));
368
- q(e, t.x + (t.w - a) / 2, t.y + (t.h - i) / 2, a, i, i / 2), e.fillStyle = "rgba(20, 20, 20, 0.72)", e.fill(), e.fillStyle = "rgba(255, 255, 255, 0.95)", e.fillText(n, t.x + t.w / 2, t.y + t.h / 2), e.restore();
371
+ G(e, t.x + (t.w - a) / 2, t.y + (t.h - i) / 2, a, i, i / 2), e.fillStyle = "rgba(20, 20, 20, 0.72)", e.fill(), e.fillStyle = "rgba(255, 255, 255, 0.95)", e.fillText(n, t.x + t.w / 2, t.y + t.h / 2), e.restore();
369
372
  }
370
- function Le(e, t) {
371
- return /* @__PURE__ */ Error(`Embedded ${e.mediaKind} fetch failed for "${e.mediaPath}" (mime=${e.mimeType || "unknown"}): ${U(t)}`);
373
+ function We(e, t) {
374
+ return /* @__PURE__ */ Error(`Embedded ${e.mediaKind} fetch failed for "${e.mediaPath}" (mime=${e.mimeType || "unknown"}): ${Ge(t)}`);
372
375
  }
373
- function H(e, t, n, r) {
376
+ function R(e, t, n, r) {
374
377
  let i = "";
375
378
  try {
376
379
  i = e.mimeType ? t.canPlayType(e.mimeType) : "";
@@ -382,82 +385,82 @@ function H(e, t, n, r) {
382
385
  `networkState=${t.networkState}`
383
386
  ];
384
387
  a && o.push(`mediaError=${a.code}${a.message ? ` ${a.message}` : ""}`);
385
- let s = r === void 0 ? "" : `: ${U(r)}`;
388
+ let s = r === void 0 ? "" : `: ${Ge(r)}`;
386
389
  return /* @__PURE__ */ Error(`Embedded ${e.mediaKind} ${n} failed for "${e.mediaPath}" (${o.join("; ")})${s}`);
387
390
  }
388
- function U(e) {
391
+ function Ge(e) {
389
392
  return e instanceof Error ? `${e.name || "Error"}${e.message ? `: ${e.message}` : ""}` : String(e);
390
393
  }
391
- var Re = 28, W = 14, ze = 72, Be = 10, G = 3;
392
- function Ve(e, t, n) {
394
+ var Ke = 28, z = 14, qe = 72, Je = 10, B = 3;
395
+ function Ye(e, t, n) {
393
396
  let r = Number.isFinite(n.duration) ? n.duration : 0, a = r > 0 ? Math.min(1, n.currentTime / r) : 0, o = t.posterRect;
394
- i(e, o.x + o.w / 2, o.y + o.h / 2, o.w, o.h, n.paused ? "paused" : "playing"), t.el.mediaKind === "audio" ? Ue(e, t, n, r, a) : He(e, t, n, r, a);
397
+ i(e, o.x + o.w / 2, o.y + o.h / 2, o.w, o.h, n.paused ? "paused" : "playing"), t.el.mediaKind === "audio" ? Ze(e, t, n, r, a) : Xe(e, t, n, r, a);
395
398
  }
396
- function He(e, t, n, r, i) {
399
+ function Xe(e, t, n, r, i) {
397
400
  let { x: a, y: o, w: s, h: c } = t.rect, l = Math.max(28, Math.min(56, c * .22)), u = o + c - l;
398
401
  e.save();
399
402
  let d = e.createLinearGradient(0, u, 0, o + c);
400
403
  d.addColorStop(0, "rgba(0, 0, 0, 0)"), d.addColorStop(1, "rgba(0, 0, 0, 0.55)"), e.fillStyle = d, e.fillRect(a, u, s, l), e.restore();
401
- let f = K(t);
402
- Ge(e, f, i, r > 0), e.save(), e.font = "500 11px system-ui, -apple-system, sans-serif", e.textBaseline = "middle", e.shadowColor = "rgba(0, 0, 0, 0.75)", e.shadowBlur = 3, e.fillStyle = "rgba(255, 255, 255, 0.95)", We(e, n.currentTime, r, f.x, f.y - 10, "bottom"), e.restore();
404
+ let f = W(t);
405
+ H(e, f, i, r > 0), e.save(), e.font = "500 11px system-ui, -apple-system, sans-serif", e.textBaseline = "middle", e.shadowColor = "rgba(0, 0, 0, 0.75)", e.shadowBlur = 3, e.fillStyle = "rgba(255, 255, 255, 0.95)", V(e, n.currentTime, r, f.x, f.y - 10, "bottom"), e.restore();
403
406
  }
404
- function Ue(e, t, n, r, i) {
405
- let a = Ke(t.rect);
406
- e.save(), q(e, a.x, a.y, a.w, a.h, a.h / 2), e.fillStyle = "rgba(20, 20, 20, 0.72)", e.fill(), e.font = "500 11px system-ui, -apple-system, sans-serif", e.textBaseline = "middle", e.fillStyle = "rgba(255, 255, 255, 0.95)", We(e, n.currentTime, r, a.x + W, a.y + a.h / 2, "middle"), e.restore(), Ge(e, K(t), i, r > 0);
407
+ function Ze(e, t, n, r, i) {
408
+ let a = U(t.rect);
409
+ e.save(), G(e, a.x, a.y, a.w, a.h, a.h / 2), e.fillStyle = "rgba(20, 20, 20, 0.72)", e.fill(), e.font = "500 11px system-ui, -apple-system, sans-serif", e.textBaseline = "middle", e.fillStyle = "rgba(255, 255, 255, 0.95)", V(e, n.currentTime, r, a.x + z, a.y + a.h / 2, "middle"), e.restore(), H(e, W(t), i, r > 0);
407
410
  }
408
- function We(e, t, n, r, i, a) {
409
- let o = qe(t), s = qe(n), c = Ne(e), l = z(e, o, c), u = z(e, s, c), d = e.measureText(" / ").width, f = Math.max(l, u);
410
- B(e, o, r + f - l, i, c);
411
+ function V(e, t, n, r, i, a) {
412
+ let o = Qe(t), s = Qe(n), c = Be(e), l = F(e, o, c), u = F(e, s, c), d = e.measureText(" / ").width, f = Math.max(l, u);
413
+ I(e, o, r + f - l, i, c);
411
414
  let p = e.textAlign;
412
- e.textAlign = "left", e.fillText(" / ", r + f, i), e.textAlign = p, B(e, s, r + f + d, i, c);
415
+ e.textAlign = "left", e.fillText(" / ", r + f, i), e.textAlign = p, I(e, s, r + f + d, i, c);
413
416
  }
414
- function Ge(e, t, n, r) {
417
+ function H(e, t, n, r) {
415
418
  let i = t.h / 2;
416
- if (e.save(), q(e, t.x, t.y, t.w, t.h, i), e.fillStyle = "rgba(255, 255, 255, 0.35)", e.fill(), n > 0 && (q(e, t.x, t.y, t.w * n, t.h, i), e.fillStyle = "#fff", e.fill()), r) {
419
+ if (e.save(), G(e, t.x, t.y, t.w, t.h, i), e.fillStyle = "rgba(255, 255, 255, 0.35)", e.fill(), n > 0 && (G(e, t.x, t.y, t.w * n, t.h, i), e.fillStyle = "#fff", e.fill()), r) {
417
420
  let r = Math.max(t.x + 5, Math.min(t.x + t.w - 5, t.x + t.w * n));
418
421
  e.shadowColor = "rgba(0, 0, 0, 0.3)", e.shadowBlur = 3, e.fillStyle = "#fff", e.beginPath(), e.arc(r, t.y + t.h / 2, 5, 0, Math.PI * 2), e.fill();
419
422
  }
420
423
  e.restore();
421
424
  }
422
- function Ke(e) {
425
+ function U(e) {
423
426
  let t = Math.max(220, e.w - 24);
424
427
  return {
425
428
  x: e.x + e.w / 2 - t / 2,
426
- y: e.y + e.h - Re - 4,
429
+ y: e.y + e.h - Ke - 4,
427
430
  w: t,
428
- h: Re
431
+ h: Ke
429
432
  };
430
433
  }
431
- function K(e) {
434
+ function W(e) {
432
435
  if (e.el.mediaKind === "audio") {
433
- let t = Ke(e.rect), n = t.x + W + ze + Be, r = Math.max(40, t.x + t.w - W - n);
436
+ let t = U(e.rect), n = t.x + z + qe + Je, r = Math.max(40, t.x + t.w - z - n);
434
437
  return {
435
438
  x: n,
436
- y: t.y + (t.h - G) / 2,
439
+ y: t.y + (t.h - B) / 2,
437
440
  w: r,
438
- h: G
441
+ h: B
439
442
  };
440
443
  }
441
444
  let t = e.rect, n = Math.max(12, t.w * .025), r = Math.max(12, Math.min(18, t.h * .05));
442
445
  return {
443
446
  x: t.x + n,
444
- y: t.y + t.h - G - r,
447
+ y: t.y + t.h - B - r,
445
448
  w: t.w - n * 2,
446
- h: G
449
+ h: B
447
450
  };
448
451
  }
449
- function q(e, t, n, r, i, a) {
452
+ function G(e, t, n, r, i, a) {
450
453
  let o = Math.min(a, i / 2, r / 2);
451
454
  e.beginPath(), e.moveTo(t + o, n), e.lineTo(t + r - o, n), e.quadraticCurveTo(t + r, n, t + r, n + o), e.lineTo(t + r, n + i - o), e.quadraticCurveTo(t + r, n + i, t + r - o, n + i), e.lineTo(t + o, n + i), e.quadraticCurveTo(t, n + i, t, n + i - o), e.lineTo(t, n + o), e.quadraticCurveTo(t, n, t + o, n), e.closePath();
452
455
  }
453
- function qe(e) {
456
+ function Qe(e) {
454
457
  if (!Number.isFinite(e) || e < 0) return "0:00";
455
458
  let t = Math.floor(e);
456
459
  return `${Math.floor(t / 60)}:${(t % 60).toString().padStart(2, "0")}`;
457
460
  }
458
461
  //#endregion
459
462
  //#region packages/pptx/src/slide-nav.ts
460
- function Je(e) {
463
+ function $e(e) {
461
464
  let t = /* @__PURE__ */ new Map();
462
465
  for (let n = 0; n < e.length; n++) {
463
466
  let r = e[n];
@@ -465,18 +468,18 @@ function Je(e) {
465
468
  }
466
469
  return t;
467
470
  }
468
- function Ye(e, t) {
471
+ function et(e, t) {
469
472
  if (e === "") return;
470
- let n = Ae("ppt/slides", e);
473
+ let n = Fe("ppt/slides", e);
471
474
  return t.get(n);
472
475
  }
473
- function Xe(e, t, n) {
474
- let r = je(e);
475
- return r === null ? Ye(e, t) : Me(r, n, t.size);
476
+ function tt(e, t, n) {
477
+ let r = Ie(e);
478
+ return r === null ? et(e, t) : Le(r, n, t.size);
476
479
  }
477
480
  //#endregion
478
481
  //#region packages/pptx/src/slide-repository.ts
479
- var Ze = class {
482
+ var nt = class {
480
483
  #e;
481
484
  #t;
482
485
  #n;
@@ -486,10 +489,10 @@ var Ze = class {
486
489
  #o;
487
490
  constructor(e) {
488
491
  if (!Number.isSafeInteger(e.slideCount) || e.slideCount < 0) throw TypeError("slideCount must be a non-negative safe integer");
489
- this.#e = e.slideCount, this.#t = e.loadSlide, this.#n = new xe({
492
+ this.#e = e.slideCount, this.#t = e.loadSlide, this.#n = new Se({
490
493
  maxEntries: e.maxCachedSlides,
491
494
  maxWeight: e.maxCachedStructuralBytes,
492
- measure: (e) => Te(e).jsonBytes
495
+ measure: (e) => Ee(e).jsonBytes
493
496
  });
494
497
  }
495
498
  get slideCount() {
@@ -507,7 +510,7 @@ var Ze = class {
507
510
  try {
508
511
  return await t(r);
509
512
  } catch (e) {
510
- let t = Qe(e);
513
+ let t = rt(e);
511
514
  throw t ? (this.#l(t, n), this.#o === n ? this.#a ?? t : t) : e;
512
515
  }
513
516
  });
@@ -519,7 +522,7 @@ var Ze = class {
519
522
  try {
520
523
  n = await this.#t(e);
521
524
  } catch (e) {
522
- let n = Qe(e);
525
+ let n = rt(e);
523
526
  throw n ? (this.#l(n, t), this.#o === t ? this.#a ?? n : n) : e;
524
527
  }
525
528
  if (this.#o === t && this.#a) throw this.#a;
@@ -536,16 +539,16 @@ var Ze = class {
536
539
  t !== this.#r || this.#a || (this.#a = e, this.#o = t, this.#r += 1, this.#n.clear());
537
540
  }
538
541
  };
539
- function Qe(e) {
542
+ function rt(e) {
540
543
  return e instanceof g ? e : v(e);
541
544
  }
542
545
  //#endregion
543
546
  //#region packages/pptx/src/worker.ts?worker&inline
544
- var $e = "var e=(e,t)=>()=>(e&&(t=e(e=0)),t),t=class e extends Error{code;constructor(t,n){super(n),this.name=`OoxmlError`,this.code=t,Object.setPrototypeOf(this,e.prototype)}},n=class e extends Error{code=`ooxml-resource-limit`;details;constructor(t,n){super(t),this.name=`OoxmlResourceLimitError`;let r=n.violation,i=Object.freeze({format:r.format,operation:r.operation,resource:r.resource,metric:r.metric,...r.part===void 0?{}:{part:r.part},limit:r.limit,observed:r.observed,configurable:r.configurable,usage:Object.freeze({archiveEntryCount:r.usage.archiveEntryCount,declaredInflatedBytes:r.usage.declaredInflatedBytes,...r.usage.largestInflatedEntryBytes===void 0?{}:{largestInflatedEntryBytes:r.usage.largestInflatedEntryBytes},distinctInflatedBytes:r.usage.distinctInflatedBytes,operationInflatedBytes:r.usage.operationInflatedBytes})});this.details=Object.freeze({stage:n.stage,violation:i}),Object.setPrototypeOf(this,e.prototype)}};const r=`https://fonts.googleapis.com/css2?family=Noto+Naskh+Arabic:wght@400;700&display=swap`,i=`https://fonts.googleapis.com/css2?family=Noto+Sans+Arabic:wght@400;700&display=swap`,a=`https://fonts.googleapis.com/css2?family=Libre+Franklin:ital,wght@0,400;0,600;0,700;1,400;1,600;1,700&display=swap`,o={calibri:{url:`https://fonts.googleapis.com/css2?family=Carlito:ital,wght@0,400;0,700;1,400;1,700&display=swap`,loadFamily:`Carlito`},\"calibri light\":{url:`https://fonts.googleapis.com/css2?family=Carlito:ital,wght@0,400;0,700;1,400;1,700&display=swap`,loadFamily:`Carlito`},cambria:{url:`https://fonts.googleapis.com/css2?family=Caladea:ital,wght@0,400;0,700;1,400;1,700&display=swap`,loadFamily:`Caladea`},\"cambria math\":{url:`https://fonts.googleapis.com/css2?family=Caladea:ital,wght@0,400;0,700;1,400;1,700&display=swap`,loadFamily:`Caladea`},\"franklin gothic book\":{url:a,loadFamily:`Libre Franklin`},\"franklin gothic medium\":{url:a,loadFamily:`Libre Franklin`},\"nunito sans\":{url:`https://fonts.googleapis.com/css2?family=Nunito+Sans:ital,wght@0,400;0,700;1,400;1,700&display=swap`},nunito:{url:`https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,400;0,700;1,400;1,700&display=swap`},\"open sans\":{url:`https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,700;1,400;1,700&display=swap`},roboto:{url:`https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,400;0,700;1,400;1,700&display=swap`},lato:{url:`https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,700;1,400;1,700&display=swap`},montserrat:{url:`https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,400;0,700;1,400;1,700&display=swap`},poppins:{url:`https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,400;0,700;1,400;1,700&display=swap`},raleway:{url:`https://fonts.googleapis.com/css2?family=Raleway:ital,wght@0,400;0,700;1,400;1,700&display=swap`},\"playfair display\":{url:`https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,700;1,400;1,700&display=swap`},ubuntu:{url:`https://fonts.googleapis.com/css2?family=Ubuntu:ital,wght@0,400;0,700;1,400;1,700&display=swap`},\"sakkal majalla\":{url:r,loadFamily:`Noto Naskh Arabic`},\"traditional arabic\":{url:r,loadFamily:`Noto Naskh Arabic`},\"simplified arabic\":{url:r,loadFamily:`Noto Naskh Arabic`},\"arabic typesetting\":{url:r,loadFamily:`Noto Naskh Arabic`},\"univers next arabic\":{url:i,loadFamily:`Noto Sans Arabic`},\"noto naskh arabic\":{url:r,loadFamily:`Noto Naskh Arabic`},\"noto sans arabic\":{url:i,loadFamily:`Noto Sans Arabic`}};function s(e){if(!e)return null;let t=e.toLowerCase();return/[ᄀ-ᇿ㄰-㆏가-힯]/.test(e)?`kr`:/[぀-ヿ]/.test(e)?`jp`:/jhenghei|微軟正黑|新細明|細明|pmingliu|mingliu|dfkai|標楷|華康|cns11643|kaiti tc|ming\\s*liu/.test(t)||/新細明體|細明體|標楷體|微軟正黑體|華康/.test(e)?`tc`:/simsun|nsimsun|simhei|simkai|simfang|yahei|dengxian|fangsong|kaiti|youyuan|lisu|stsong|stkaiti|stfangsong|stheiti|stxihei|stzhongsong|songti sc|heiti sc|微软雅黑/.test(t)||/宋体|黑体|楷体|仿宋|等线|微软雅黑|隶书|幼圆/.test(e)?`sc`:/malgun|batang|gulim|dotum|gungsuh|nanum|new gulim|hancom|hy(gothic|graphic|namu)?/.test(t)?`kr`:/\\bmeiryo\\b|\\byu\\s*(gothic|mincho)\\b|yugothic|yumincho|hiragino|\\bms\\s*(gothic|mincho|pgothic|pmincho|ui\\s*gothic)\\b|\\bms[pg]?(gothic|mincho)\\b|ipa(ex)?(gothic|mincho)|noto\\s+(sans|serif)\\s+jp|游ゴシック|游明朝|MS|メイリオ|ヒラギノ/.test(t)||/游ゴシック|游明朝|MS ゴシック|MS 明朝|MS Pゴシック|メイリオ|ヒラギノ/.test(e)?`jp`:null}const c=e=>`https://fonts.googleapis.com/css2?family=${e}:wght@400;700&display=swap`,l={\"noto sans kr\":{url:c(`Noto+Sans+KR`)},\"noto sans sc\":{url:c(`Noto+Sans+SC`)},\"noto sans tc\":{url:c(`Noto+Sans+TC`)},\"noto sans jp\":{url:c(`Noto+Sans+JP`)},\"noto serif kr\":{url:c(`Noto+Serif+KR`)},\"noto serif sc\":{url:c(`Noto+Serif+SC`)},\"noto serif tc\":{url:c(`Noto+Serif+TC`)},\"noto serif jp\":{url:c(`Noto+Serif+JP`)},\"noto sans\":{url:c(`Noto+Sans`)},\"noto serif\":{url:c(`Noto+Serif`)},\"noto sans devanagari\":{url:c(`Noto+Sans+Devanagari`)},\"noto sans thai\":{url:c(`Noto+Sans+Thai`)},\"noto sans hebrew\":{url:c(`Noto+Sans+Hebrew`)},\"noto serif hebrew\":{url:c(`Noto+Serif+Hebrew`)}};var ee=class e{hasHan=!1;hasHangul=!1;hasKana=!1;hasArabic=!1;hasThai=!1;hasHebrew=!1;hasDevanagari=!1;hasCyrGreek=!1;constructor(e){this.cjkLang=e}clone(){let t=new e(this.cjkLang);return t.hasHan=this.hasHan,t.hasHangul=this.hasHangul,t.hasKana=this.hasKana,t.hasArabic=this.hasArabic,t.hasThai=this.hasThai,t.hasHebrew=this.hasHebrew,t.hasDevanagari=this.hasDevanagari,t.hasCyrGreek=this.hasCyrGreek,t}addText(e){let t=()=>this.hasHan&&this.hasHangul&&this.hasKana&&this.hasArabic&&this.hasThai&&this.hasHebrew&&this.hasDevanagari&&this.hasCyrGreek;outer:for(let n of e)if(n)for(let e of n){let n=e.codePointAt(0);if(n!==void 0&&!(n<=591)&&(n>=4352&&n<=4607||n>=12592&&n<=12687||n>=44032&&n<=55215?this.hasHangul=!0:n>=12352&&n<=12543?this.hasKana=!0:n>=13312&&n<=19903||n>=19968&&n<=40959||n>=63744&&n<=64255||n>=131072&&n<=195103?this.hasHan=!0:n>=1536&&n<=1791||n>=1872&&n<=1919||n>=2208&&n<=2303||n>=64336&&n<=65023||n>=65136&&n<=65279?this.hasArabic=!0:n>=3584&&n<=3711?this.hasThai=!0:n>=1424&&n<=1535||n>=64285&&n<=64335?this.hasHebrew=!0:n>=2304&&n<=2431?this.hasDevanagari=!0:(n>=1024&&n<=1279||n>=880&&n<=1023)&&(this.hasCyrGreek=!0),t()))break outer}}names(){let e=[],t=new Set;this.hasHangul&&t.add(`kr`),this.hasKana&&t.add(`jp`),this.hasHan&&t.size===0&&t.add(this.cjkLang??`jp`);for(let n of[`kr`,`sc`,`tc`,`jp`])if(t.has(n)){let t={kr:`KR`,sc:`SC`,tc:`TC`,jp:`JP`}[n];e.push(`Noto Sans ${t}`,`Noto Serif ${t}`)}return this.hasCyrGreek&&e.push(`Noto Sans`,`Noto Serif`),this.hasArabic&&e.push(`Noto Naskh Arabic`,`Noto Sans Arabic`),this.hasThai&&e.push(`Noto Sans Thai`),this.hasHebrew&&e.push(`Noto Sans Hebrew`,`Noto Serif Hebrew`),this.hasDevanagari&&e.push(`Noto Sans Devanagari`),e}},u,d,te=e((()=>{u=1<<25,u*4,d=class e extends RangeError{code=`ooxml-decoded-image-limit`;constructor(t,n,r){super(`OOXML decoded image limit exceeded: ${t} ${r} > ${n}`),this.metric=t,this.limit=n,this.observed=r,this.name=`OoxmlDecodedImageLimitError`,Object.setPrototypeOf(this,e.prototype)}}}));function ne(e){if(!e.startsWith(`data:`))return null;let t=e.indexOf(`,`);if(t===-1)return null;let n=atob(e.slice(t+1)),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);return r.buffer}var re=class{state=`uninitialized`;generationValue=0;readiness;poisonListeners=new Set;constructor(e,t,n){this.initialize=e,this.reinitialize=t,this.normalizeFailure=n}get generation(){return this.generationValue}get poisoned(){return this.state===`poisoned`}onPoison(e){return this.poisonListeners.add(e),()=>this.poisonListeners.delete(e)}async ensureReady(){if(this.state!==`ready`){if(!this.readiness){let e=this.state===`uninitialized`?this.initialize:this.reinitialize;this.readiness=Promise.resolve().then(e).then(()=>{this.generationValue+=1,this.state=`ready`,this.readiness=void 0},e=>{throw this.readiness=void 0,e})}await this.readiness}}run(e){try{return e()}catch(e){let t=this.normalizeFailure(e);throw t?(this.poison(t),t):e}}tryRunReady(e){if(this.state!==`ready`)return{current:!1};let t=this.generationValue,n=this.run(e);return this.state!==`ready`||t!==this.generationValue?{current:!1}:{current:!0,generation:t,value:n}}poison(e){this.state=`poisoned`,this.readiness=void 0;for(let t of this.poisonListeners)t(e)}assertCurrent(e){if(this.state!==`ready`||e!==this.generationValue)throw Error(`WASM archive session belongs to a discarded runtime generation`)}},ie=class e extends Error{code=`parser-crashed`;constructor(t){super(t),this.name=`WasmTrapError`,Object.setPrototypeOf(this,e.prototype)}};function ae(e){let t=globalThis.WebAssembly?.RuntimeError;return t&&e instanceof t||e instanceof RangeError?!0:e instanceof Error?e.name===`RuntimeError`||e.name===`CompileError`||e.name===`LinkError`||e.name===`InternalError`||e.name===`OOMError`:!1}function oe(e){try{if((typeof e!=`object`||!e)&&typeof e!=`function`)return;let t=Reflect.get(e,`__destroy_into_raw`);typeof t==`function`&&Reflect.apply(t,e,[])}catch{}}function se(e,t){return e({module_or_path:t})}var ce=class{runtime;wasmInput=null;currentArchive=null;constructor(e,t={}){this.init=e,this.options=t,this.runtime=new re(()=>this.invokeConfigured(this.init),()=>this.invokeConfigured(this.options.reinit??this.init),le),this.runtime.onPoison(()=>this.dropPoisonedArchive())}setWasmInput(e){this.wasmInput=e,this.runtime.ensureReady().catch(()=>void 0)}setWasmUrl(e){this.setWasmInput(e)}get archive(){return this.currentArchive}setArchive(e){this.freeArchive(),this.currentArchive=e}disposeArchive(){this.freeArchive()}get poisoned(){return this.runtime.poisoned}async ensureReady(){await this.runtime.ensureReady()}run(e){return this.runtime.run(e)}poison(){this.runtime.poison(new ie(`WASM parser was recycled`))}invokeConfigured(e){return this.wasmInput===null?Promise.reject(Error(`WasmParserHost: setWasmInput was never called`)):se(e,this.wasmInput)}freeArchive(){this.currentArchive!==null&&this.options.freeArchive&&this.options.freeArchive(this.currentArchive),this.currentArchive=null}dropPoisonedArchive(){let e=this.currentArchive;this.currentArchive=null,oe(e)}};function le(e){return ae(e)?new ie(`WASM parser trapped and was recycled: ${e instanceof Error?e.message:String(e)}`):null}function ue(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>0}function de(e){if(!e||typeof e!=`object`||Array.isArray(e))return!1;let t=e;return ue(t.requiredBytes)&&ue(t.offeredBytes)&&t.requiredBytes>t.offeredBytes}var f=class e extends RangeError{code=`ooxml-insufficient-credit`;requiredBytes;offeredBytes;constructor(t){super(`Pull unit requires ${t.requiredBytes} bytes but credit is ${t.offeredBytes}`),this.name=`PullSessionInsufficientCreditError`,this.requiredBytes=t.requiredBytes,this.offeredBytes=t.offeredBytes,Object.setPrototypeOf(this,e.prototype)}};function fe(e){if(e instanceof f)return e;let t=e instanceof Error?e.message:String(e);if(!t.startsWith(`OOXML_INSUFFICIENT_CREDIT:`))return;let n;try{n=JSON.parse(t.slice(26))}catch{return}if(!n||typeof n!=`object`||Array.isArray(n))return;let r=n;if(!(r.code!==`ooxml-insufficient-credit`||!de(r)))return new f(r)}function pe(e,t,n){let r=fe(e);if(!(!r||r.offeredBytes!==t||r.requiredBytes>n))return r}te();const me=`OOXML_RESOURCE_LIMIT:`;function p(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0}function he(e){if(!e||typeof e!=`object`||Array.isArray(e))return!1;let t=e;return p(t.archiveEntryCount)&&p(t.declaredInflatedBytes)&&(t.largestInflatedEntryBytes===void 0||p(t.largestInflatedEntryBytes))&&p(t.distinctInflatedBytes)&&p(t.operationInflatedBytes)}function ge(e){let t;try{t=JSON.parse(new TextDecoder().decode(e))}catch{throw TypeError(`OOXML resource usage checkpoint is not valid JSON`)}if(!he(t))throw TypeError(`OOXML resource usage checkpoint is invalid`);return t}function _e(e){return e===`docx`||e===`xlsx`||e===`pptx`}function ve(e){return e===`container`||e===`decompression`||e===`parsing`||e===`serialization`||e===`layout`||e===`rendering`||e===`worker`}function m(e,t){return typeof e==`string`&&e.length>0&&e.length<=t&&!/[\\u0000-\\u001f\\u007f]/u.test(e)}function h(e){return m(e,128)&&/^[a-z0-9][a-z0-9-]*$/u.test(e)}function ye(e){return!m(e,4096)||e.startsWith(`/`)||e.startsWith(`\\\\`)||e.includes(`\\\\`)||e.includes(`?`)||e.includes(`#`)||e.includes(`://`)||/^[a-z]:/iu.test(e)?!1:e.split(`/`).every(e=>e!==``&&e!==`.`&&e!==`..`)}const g=new Map([[`archive-entry:declared-inflated-bytes`,{stage:`container`,part:`required`}],[`archive-entry:actual-inflated-bytes`,{stage:`decompression`,part:`required`}],[`archive:entry-count`,{stage:`container`,part:`forbidden`}],[`archive:central-directory-bytes`,{stage:`container`,part:`forbidden`,configurable:!1}],[`archive:distinct-inflated-bytes`,{stage:`decompression`,part:`required`}],[`xml-event:bytes`,{stage:`parsing`,part:`optional`,configurable:!1}],[`xml-context:bytes`,{stage:`parsing`,part:`optional`,configurable:!1}],[`xml-tree:depth`,{stage:`parsing`,part:`optional`,configurable:!1}],[`worksheet-row:projected-bytes`,{stage:`parsing`,part:`optional`,configurable:!1}],[`worksheet-shell:projected-bytes`,{stage:`parsing`,part:`optional`,configurable:!1}]]),be=new Set([...g.keys()].map(e=>e.slice(0,e.indexOf(`:`)))),xe=new Set([...g.keys()].map(e=>e.slice(e.indexOf(`:`)+1)));function Se(e){if(!e||typeof e!=`object`||Array.isArray(e))return!1;let t=e;return!_e(t.format)||!m(t.operation,256)||!h(t.resource)||!h(t.metric)||!p(t.limit)||!p(t.observed)||typeof t.configurable!=`boolean`||!he(t.usage)?!1:!(`part`in t)||ye(t.part)}function _(e){if(!e||typeof e!=`object`||Array.isArray(e))return!1;let t=e;if(!ve(t.stage)||!Se(t.violation))return!1;let n=t.violation,r=g.get(`${n.resource}:${n.metric}`);return r?t.stage!==r.stage||r.configurable===!1&&n.configurable!==!1?!1:r.part===`required`?n.part!==void 0:r.part===`forbidden`?n.part===void 0:!0:!(be.has(n.resource)&&xe.has(n.metric))}function Ce(e){return{archiveEntryCount:e.archiveEntryCount,declaredInflatedBytes:e.declaredInflatedBytes,...e.largestInflatedEntryBytes===void 0?{}:{largestInflatedEntryBytes:e.largestInflatedEntryBytes},distinctInflatedBytes:e.distinctInflatedBytes,operationInflatedBytes:e.operationInflatedBytes}}function we(e){if(!_(e))return;let t=e.violation,n={stage:e.stage,violation:{format:t.format,operation:t.operation,resource:t.resource,metric:t.metric,...t.part===void 0?{}:{part:t.part},limit:t.limit,observed:t.observed,configurable:t.configurable,usage:Ce(t.usage)}};return _(n)?n:void 0}function v(e){let t=e.violation;return`OOXML resource limit exceeded${t.part?` for ${t.part}`:``}: ${t.metric} ${t.observed} > ${t.limit}`}function Te(e){let t=e instanceof Error?e.message:String(e);if(!t.startsWith(me))return;let r;try{r=JSON.parse(t.slice(21))}catch{return}if(!r||typeof r!=`object`)return;let i=r;if(!(i.code!==`ooxml-resource-limit`||!_(i.details)))return new n(v(i.details),i.details)}function Ee(e){if(e instanceof d)return{message:e.message,errorName:e.name,code:e.code,decodedImage:{metric:e.metric,limit:e.limit,observed:e.observed}};let r=fe(e);if(r)return{message:r.message,errorName:r.name,code:r.code,insufficientCredit:{requiredBytes:r.requiredBytes,offeredBytes:r.offeredBytes}};let i=e instanceof t||e instanceof n?e:Te(e);if(i instanceof n){let e=we(i.details);return e?{message:typeof i.message==`string`?i.message:v(e),errorName:`OoxmlResourceLimitError`,code:`ooxml-resource-limit`,resourceLimit:e}:{message:`Invalid OOXML resource-limit error payload`,errorName:`Error`}}if(i instanceof t)return{message:typeof i.message==`string`?i.message:String(i.message),errorName:m(i.name,128)?i.name:`OoxmlError`,...h(i.code)?{code:i.code}:{}};let a=e instanceof Error?e.message:String(e);if(typeof a==`string`&&a.startsWith(me))return{message:`Invalid OOXML resource-limit payload`,errorName:`Error`};let o=e instanceof Error?e:Error(a),s=o;return{message:typeof o.message==`string`?o.message:String(o.message),errorName:m(o.name,128)?o.name:`Error`,...typeof s.code==`string`?{code:s.code}:{}}}function y(e){try{return Ee(e)}catch{return{message:`Worker operation failed with an unreadable error`,errorName:`Error`}}}const De=new Set([`encrypted`,`invalid-password`,`unsupported-encryption`,`legacy-binary-format`,`not-ooxml`]);function Oe(e){if(e.code===`ooxml-decoded-image-limit`&&e.decodedImage&&(e.decodedImage.metric===`image-pixels`||e.decodedImage.metric===`active-decoded-bytes`)&&p(e.decodedImage.limit)&&p(e.decodedImage.observed)&&e.decodedImage.observed>e.decodedImage.limit)return new d(e.decodedImage.metric,e.decodedImage.limit,e.decodedImage.observed);if(e.code===`ooxml-insufficient-credit`&&de(e.insufficientCredit))return new f(e.insufficientCredit);if(e.code===`ooxml-resource-limit`&&_(e.resourceLimit))return new n(e.message,e.resourceLimit);if(e.code&&De.has(e.code))return new t(e.code,e.message);let r=e.errorName===`TypeError`?TypeError(e.message):e.errorName===`RangeError`?RangeError(e.message):Error(e.message);return e.errorName&&(r.name=e.errorName),e.code!==void 0&&Object.assign(r,{code:e.code}),r}function ke(e){return e.byteOffset===0&&e.byteLength===e.buffer.byteLength&&e.buffer instanceof ArrayBuffer?e.buffer:e.slice().buffer}const Ae=67108864;Object.freeze({maxArchiveEntryBytes:134217728,maxTotalInflatedBytes:268435456,maxArchiveEntries:4096});function je(e){return[e.maxArchiveEntryBytes===null?0n:BigInt(e.maxArchiveEntryBytes),e.maxTotalInflatedBytes===null?0n:BigInt(e.maxTotalInflatedBytes),e.maxArchiveEntries===null?0n:BigInt(e.maxArchiveEntries)]}const b=`ooxml-pull-v1`;function x(e,t){if(!Number.isSafeInteger(e)||e<=0)throw RangeError(`${t} must be a positive safe integer`)}function Me(e){if(!(typeof e==`string`&&e.length>0||typeof e==`number`&&Number.isSafeInteger(e)&&e>0))throw RangeError(`session id must be a non-empty string or positive safe integer`)}var Ne=class{owner;queue=Promise.resolve();leases=new Map;retainedBytes=0;retainedCount=0;maxRetainedBytes;maxRetainedCount;cleanups=new Set;pendingFatalCleanups=[];poisonRunning=!1;fatal;constructor(e){this.maxRetainedBytes=e?.maxRetainedBytes??64*1024*1024,this.maxRetainedCount=e?.maxRetainedCount??256,x(this.maxRetainedBytes,`max retained lease bytes`),x(this.maxRetainedCount,`max retained lease count`)}enqueue(e){let t=this.queue.then(e,e);return this.queue=t.then(()=>void 0,()=>void 0),t}acquire(e){return this.owner===void 0?(this.owner=e,!0):this.owner===e}release(e){this.owner===e&&(this.owner=void 0)}retainLease(e,t,n){if(!Number.isSafeInteger(n)||n<0)throw RangeError(`retained lease bytes are invalid`);let r=this.leases.get(e)??new Map;if(r.has(t))throw Error(`driver returned a duplicate lease id`);if(this.retainedCount+1>this.maxRetainedCount)throw RangeError(`retained lease count exceeds limit`);if(this.retainedBytes+n>this.maxRetainedBytes)throw RangeError(`retained lease bytes exceed limit`);r.set(t,n),this.leases.set(e,r),this.retainedCount++,this.retainedBytes+=n}releaseLease(e,t){let n=this.leases.get(e),r=n?.get(t);r!==void 0&&(n?.delete(t),n?.size===0&&this.leases.delete(e),this.retainedCount--,this.retainedBytes-=r)}registerCleanup(e){return this.fatal?(this.poisonRunning?this.pendingFatalCleanups.push(e):this.enqueue(e).catch(()=>void 0),()=>void 0):(this.cleanups.add(e),()=>this.cleanups.delete(e))}get fatalError(){return this.fatal}get registeredHostCount(){return this.cleanups.size}async poison(e){if(this.fatal??=e,this.poisonRunning)return this.fatal;this.poisonRunning=!0,this.pendingFatalCleanups.push(...this.cleanups);try{let e;for(;(e=this.pendingFatalCleanups.shift())!==void 0;)await e().catch(()=>void 0)}finally{this.poisonRunning=!1}return this.fatal}},Pe=class{options;coordinator;coordinatorOwner=Symbol(`pull-session-host`);unregisterCleanup;sequence=0;unacked;leases=new Map;activeDriverLeases=new Set;nextWireLeaseId;cancelRequested=!1;cancelComplete=!1;closeRequested=!1;closeComplete=!1;driverCancelComplete=!1;driverCloseComplete=!1;completed=!1;constructor(e){Me(e.sessionId),x(e.operationId,`operation id`),x(e.generation,`generation`),x(e.maxByteCredit,`max byte credit`),e.wireLeaseIdStart!==void 0&&x(e.wireLeaseIdStart,`wire lease id start`),this.options=e,this.coordinator=e.coordinator,this.nextWireLeaseId=e.wireLeaseIdStart??1,this.unregisterCleanup=this.coordinator.registerCleanup(()=>this.forceFatalCleanup())}dispatch(e,t){return this.coordinator.enqueue(async()=>{let n=await this.execute(e);try{t(n.response,n.transfer)}catch(e){throw await this.rollbackFailedPost(n),e}})}async rollbackFailedPost(e){let t=e.response;if(t.kind===`chunk`){let n=t.leaseId===void 0?void 0:this.leases.get(t.leaseId);try{await this.options.driver.disposeInvalidChunk?.({payload:t.payload,byteLength:t.byteLength,done:t.done,leaseId:n?.driverLeaseId,retainedBytes:n?.retainedBytes,transfer:e.transfer})}catch{}}this.unacked=void 0,this.coordinator.release(this.coordinatorOwner);for(let[e,t]of[...this.leases])try{await this.options.driver.releaseLease?.(t.driverLeaseId)}catch{}finally{this.leases.delete(e),this.activeDriverLeases.delete(t.driverLeaseId),this.coordinator.releaseLease(this.coordinatorOwner,e)}if(this.cancelRequested=!0,!this.driverCancelComplete)try{await this.options.driver.cancel?.(),this.driverCancelComplete=!0}catch{}this.unregisterCleanup()}async execute(e){try{if(this.isStaleLifecycle(e)){let t=e.kind===`cancel`?`cancel`:`close`;return this.sameOperationIdentity(e)?{response:this.accepted(e,t,!0)}:{response:this.errorResponse(e,{message:`stale lifecycle targets another session or operation`,errorName:`PullSessionProtocolError`,code:`ooxml-stale-lifecycle`})}}this.validateCommandIdentity(e);let t=this.coordinator.fatalError;if(t)return e.kind===`pull`?{response:this.errorResponse(e,t)}:(e.kind===`cancel`?await this.cancel():e.kind===`close`?await this.close():e.kind===`release`&&await this.release(e.leaseId),{response:this.accepted(e,e.kind)});switch(e.kind){case`pull`:return await this.pull(e);case`ack`:return await this.ack(e.sequence),{response:this.accepted(e,`ack`)};case`release`:return await this.release(e.leaseId),{response:this.accepted(e,`release`)};case`cancel`:return await this.cancel(),{response:this.accepted(e,`cancel`)};case`close`:return await this.close(),{response:this.accepted(e,`close`)}}}catch(t){let n=y(t);return n.code===`ooxml-resource-limit`&&(n=await this.coordinator.poison(n)),{response:this.errorResponse(e,n)}}}async pull(e){if(this.closeRequested||this.cancelRequested||this.completed)throw Error(`pull session is closed`);if(this.unacked)throw Error(`previous chunk is not acknowledged`);if(!Number.isSafeInteger(e.sequence)||e.sequence<0||e.sequence!==this.sequence)throw Error(`pull command sequence mismatch`);if(this.validateHostCredit(e.byteCredit),!this.coordinator.acquire(this.coordinatorOwner))throw Error(`another operation has an unacknowledged package chunk`);let t;try{t=await this.options.driver.pull(e.byteCredit)}catch(e){throw this.coordinator.release(this.coordinatorOwner),e}let n=!1,r=!1,i,a;try{let o=this.options.driver.measureChunk(t),s=this.arrayBufferTransferBytes(t.transfer);if(o<s)throw RangeError(`measured chunk bytes are below ArrayBuffer transfer bytes`);if(a=Math.max(o,s),t.leaseId!==void 0){if(x(t.leaseId,`lease id`),t.retainedBytes===void 0)throw Error(`retained lease bytes are required`);if(this.activeDriverLeases.has(t.leaseId))throw r=!0,Error(`driver returned an active duplicate lease id`);i=this.allocateWireLeaseId(),this.coordinator.retainLease(this.coordinatorOwner,i,t.retainedBytes),this.leases.set(i,{driverLeaseId:t.leaseId,retainedBytes:t.retainedBytes}),this.activeDriverLeases.add(t.leaseId),n=!0}else if(t.retainedBytes!==void 0)throw Error(`retained lease bytes require a lease id`);if(!Number.isSafeInteger(a)||a<0)throw RangeError(`host chunk byte length must be a non-negative safe integer`);if(a>e.byteCredit)throw RangeError(`host chunk exceeds byte credit`)}catch(e){let a;try{await this.options.driver.disposeInvalidChunk?.(t)}catch(e){a=e}if(n&&i!==void 0)try{await this.release(i)}catch(e){a??=e}else if(t.leaseId!==void 0&&!r)try{await this.options.driver.releaseLease?.(t.leaseId)}catch(e){a??=e}if(r)try{await this.cancel()}catch(e){a??=e}throw this.coordinator.release(this.coordinatorOwner),a||e}return this.unacked={sequence:this.sequence,done:t.done},{response:{kind:`chunk`,protocol:b,...this.identity(),requestId:e.requestId,sequence:this.sequence,byteLength:a,done:t.done,payload:t.payload,leaseId:i,usage:this.resourceUsage()},transfer:t.transfer}}async ack(e){if(!Number.isSafeInteger(e)||e<0)throw RangeError(`invalid ack sequence`);if(e<this.sequence)return;if(!this.unacked||e!==this.sequence)throw Error(`ack sequence mismatch`);let t=this.unacked.done;await this.options.driver.acknowledge?.(e),this.unacked=void 0,this.coordinator.release(this.coordinatorOwner),this.sequence++,t&&(this.completed=!0,this.maybeUnregisterCompleted())}async release(e){x(e,`wire lease id`);let t=this.leases.get(e);t&&(await this.options.driver.releaseLease?.(t.driverLeaseId),this.leases.delete(e),this.activeDriverLeases.delete(t.driverLeaseId),this.coordinator.releaseLease(this.coordinatorOwner,e),this.maybeUnregisterCompleted())}async cancel(){if(this.cancelComplete)return;this.cancelRequested=!0,this.unacked=void 0,this.coordinator.release(this.coordinatorOwner);let e;try{await this.releaseAllLeases()}catch(t){e=t}if(!this.driverCancelComplete)try{await this.options.driver.cancel?.(),this.driverCancelComplete=!0}catch(t){e??=t}if(e)throw e;this.cancelComplete=!0,this.unregisterCleanup()}async close(){if(this.closeComplete)return;this.closeRequested=!0,this.unacked=void 0,this.coordinator.release(this.coordinatorOwner);let e;try{await this.releaseAllLeases()}catch(t){e=t}if(!this.driverCloseComplete)try{await this.options.driver.close?.(),this.driverCloseComplete=!0}catch(t){e??=t}if(e)throw e;this.closeComplete=!0,this.unregisterCleanup()}async releaseAllLeases(){let e;for(let t of[...this.leases.keys()])try{await this.release(t)}catch(t){e??=t}if(e)throw e}validateCommandIdentity(e){if(e.protocol!==`ooxml-pull-v1`||e.sessionId!==this.options.sessionId||e.operationId!==this.options.operationId||e.generation!==this.options.generation||!Number.isSafeInteger(e.requestId)||e.requestId<=0)throw Error(`stale or mismatched pull session command`)}validateHostCredit(e){if(x(e,`byte credit`),e>this.options.maxByteCredit)throw RangeError(`byte credit exceeds host maximum`)}accepted(e,t,n=!1){return{kind:`accepted`,protocol:b,...n?{sessionId:e.sessionId,operationId:e.operationId,generation:e.generation}:this.identity(),requestId:e.requestId,command:t,usage:this.resourceUsage()}}identity(){return{sessionId:this.options.sessionId,operationId:this.options.operationId,generation:this.options.generation}}isStaleLifecycle(e){return(e.kind===`cancel`||e.kind===`close`)&&e.protocol===`ooxml-pull-v1`&&Number.isSafeInteger(e.requestId)&&e.requestId>0&&Number.isSafeInteger(e.generation)&&e.generation>0&&e.generation<this.options.generation}sameOperationIdentity(e){return e.sessionId===this.options.sessionId&&e.operationId===this.options.operationId}errorResponse(e,t){return{kind:`error`,protocol:b,sessionId:e.sessionId,operationId:e.operationId,generation:e.generation,requestId:e.requestId,error:t,usage:this.errorResourceUsage()}}async forceFatalCleanup(){this.cancelRequested=!0,this.unacked=void 0,this.coordinator.release(this.coordinatorOwner);let e;for(let t of[...this.leases.keys()])try{await this.release(t)}catch(t){e??=t}if(!this.driverCancelComplete)try{await this.options.driver.cancel?.(),this.driverCancelComplete=!0}catch(t){e??=t}if(e)throw e;this.unregisterCleanup()}allocateWireLeaseId(){if(!Number.isSafeInteger(this.nextWireLeaseId)||this.nextWireLeaseId<=0)throw RangeError(`wire lease id space exhausted`);return this.nextWireLeaseId++}arrayBufferTransferBytes(e){let t=0;for(let n of e??[])if(n instanceof ArrayBuffer&&(t+=n.byteLength,!Number.isSafeInteger(t)))throw RangeError(`ArrayBuffer transfer bytes overflow`);return t}maybeUnregisterCompleted(){this.completed&&this.leases.size===0&&this.unregisterCleanup()}resourceUsage(){return this.options.driver.resourceUsage?.()}errorResourceUsage(){try{return this.resourceUsage()}catch{return}}};function S(e,t){if(!Number.isSafeInteger(e)||e<0)throw Error(`${t} must be a non-negative safe integer`)}function C(e,t,n){return S(e,`resource measurement`),S(t,`resource measurement`),S(n,`resource measurement limit`),e>n||t>n||t>n-e?n===2**53-1?n:n+1:e+t}function Fe(e,t=2**53-1){S(t,`resource measurement limit`);let n=0;for(let r=0;r<e.length;r+=1){let i=e.charCodeAt(r),a;if(i<=127)a=1;else if(i<=2047)a=2;else if(i>=55296&&i<=56319&&r+1<e.length){let t=e.charCodeAt(r+1);t>=56320&&t<=57343?(a=4,r+=1):a=3}else a=3;if(n=C(n,a,t),n>t)return n}return n}function w(e,t=2**53-1){S(t,`resource measurement limit`);let n=C(0,2,t);if(n>t)return n;for(let r=0;r<e.length;r+=1){let i=e.charCodeAt(r),a;if(i===34||i===92||i===8||i===9||i===10||i===12||i===13)a=2;else if(i<=31)a=6;else if(i<=127)a=1;else if(i<=2047)a=2;else if(i>=55296&&i<=56319&&r+1<e.length){let t=e.charCodeAt(r+1);t>=56320&&t<=57343?(a=4,r+=1):a=6}else a=i>=55296&&i<=57343?6:3;if(n=C(n,a,t),n>t)return n}return n}function T(e,t){return C(0,e,t)}function E(e,t=2**53-1,n=!1){if(S(t,`resource measurement limit`),e===null)return{jsonBytes:T(4,t),stringValueUtf8Bytes:0};if(typeof e==`string`)return{jsonBytes:w(e,t),stringValueUtf8Bytes:Fe(e,t)};if(typeof e==`boolean`)return{jsonBytes:T(e?4:5,t),stringValueUtf8Bytes:0};if(typeof e==`number`)return{jsonBytes:T((Number.isFinite(e)?String(Object.is(e,-0)?0:e):`null`).length,t),stringValueUtf8Bytes:0};if(typeof e==`bigint`)throw TypeError(`BigInt values cannot be serialized to JSON`);if(Array.isArray(e)){let n=T(2,t),r=0;for(let i=0;i<e.length;i+=1){i!==0&&(n=C(n,1,t));let a=E(e[i],t,!0);n=C(n,a.jsonBytes,t),r=C(r,a.stringValueUtf8Bytes,t)}return{jsonBytes:n,stringValueUtf8Bytes:r}}if(typeof e==`object`){let n=T(2,t),r=0,i=0;for(let[a,o]of Object.entries(e)){if(o===void 0||typeof o==`function`||typeof o==`symbol`)continue;i++!==0&&(n=C(n,1,t)),n=C(n,w(a,t),t),n=C(n,1,t);let e=E(o,t);n=C(n,e.jsonBytes,t),r=C(r,e.stringValueUtf8Bytes,t)}return{jsonBytes:n,stringValueUtf8Bytes:r}}return{jsonBytes:n?T(4,t):0,stringValueUtf8Bytes:0}}({...o,...l});function*D(e){for(let t of e?.paragraphs??[])for(let e of t.runs)e.type===`text`&&(yield e.text)}function*O(e){for(let t of e?.paragraphs??[]){t.defFontFamily&&(yield t.defFontFamily);for(let e of t.runs)e.type===`text`&&(e.fontFamily&&(yield e.fontFamily),e.fontFamilyEa&&(yield e.fontFamilyEa),e.fontFamilySym&&(yield e.fontFamilySym))}}function*Ie(e){for(let t of e.elements)if(t.type===`shape`)yield*D(t.textBody);else if(t.type===`table`)for(let e of t.rows)for(let t of e.cells)yield*D(t.textBody);else if(t.type===`chart`){t.chart.title&&(yield t.chart.title);for(let e of t.chart.categories)yield e;for(let e of t.chart.series)e.name&&(yield e.name)}}var Le=class e{scripts;families;constructor(e,t,n,r){this.majorFont=e,this.minorFont=t;let i=s(e)??s(t)??null;this.scripts=n??new ee(i),this.families=r??new Set,e&&this.families.add(e),t&&this.families.add(t)}addSlide(e){this.scripts.addText(Ie(e));for(let t of e.elements)if(t.type===`shape`)for(let e of O(t.textBody))this.families.add(e);else if(t.type===`table`)for(let e of t.rows)for(let t of e.cells)for(let e of O(t.textBody))this.families.add(e)}names(){return[...this.families,...this.scripts.names()]}withSlide(t){let n=new e(this.majorFont,this.minorFont,this.scripts.clone(),new Set(this.families));return n.addSlide(t),n}};const k=Object.freeze({archiveEntryCount:0,declaredInflatedBytes:0,distinctInflatedBytes:0,operationInflatedBytes:0}),A=67108864;function j(e,t){if(e!==null&&typeof e!=`string`)throw Error(`invalid PPTX presentation bootstrap ${t}`)}function Re(e,t){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`invalid PPTX presentation bootstrap slide at ${t}`);let n=e;if(n.index!==t)throw Error(`invalid PPTX presentation bootstrap slide index ${n.index}`);if(n.partName!==void 0&&typeof n.partName!=`string`)throw Error(`invalid PPTX presentation bootstrap slide partName at ${t}`);return Object.freeze({index:n.index,...n.partName===void 0?{}:{partName:n.partName}})}function ze(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`invalid PPTX presentation bootstrap payload`);let t=e;if(!Number.isSafeInteger(t.slideCount)||(t.slideCount??-1)<0||!Number.isSafeInteger(t.slideWidth)||(t.slideWidth??0)<=0||!Number.isSafeInteger(t.slideHeight)||(t.slideHeight??0)<=0||!Array.isArray(t.slides)||t.slides.length!==t.slideCount)throw Error(`invalid PPTX presentation bootstrap dimensions or slide count`);return j(t.defaultTextColor,`defaultTextColor`),j(t.majorFont,`majorFont`),j(t.minorFont,`minorFont`),j(t.hlinkColor,`hlinkColor`),j(t.folHlinkColor,`folHlinkColor`),Object.freeze({slideCount:t.slideCount,slideWidth:t.slideWidth,slideHeight:t.slideHeight,defaultTextColor:t.defaultTextColor,majorFont:t.majorFont,minorFont:t.minorFont,hlinkColor:t.hlinkColor,folHlinkColor:t.folHlinkColor,slides:Object.freeze(t.slides.map(Re))})}function Be(e){return Object.freeze({type:`media`,x:e.x,y:e.y,width:e.width,height:e.height,rotation:e.rotation,flipH:e.flipH,flipV:e.flipV,mediaKind:e.mediaKind,posterPath:e.posterPath,posterMimeType:e.posterMimeType,mediaPath:e.mediaPath,mimeType:e.mimeType})}function Ve(e,t){if(e.index!==t.index||e.partName!==t.partName)throw Error(`PPTX pulled slide identity does not match bootstrap index ${t.index}`);return Object.freeze({index:t.index,...t.partName===void 0?{}:{partName:t.partName},notes:e.notes??null,hidden:e.hidden??!1,mediaElements:Object.freeze(e.elements.filter(e=>e.type===`media`).map(Be))})}function M(e,t,r){if(!(e<=t))throw new n(`PPTX presentation preflight exceeded its hard limit of ${t} projected bytes`,{stage:`parsing`,violation:{format:`pptx`,operation:`presentation-preflight`,resource:`presentation-preflight`,metric:`projected-bytes`,limit:t,observed:Math.min(e,t+1),configurable:!1,usage:r}})}var He=class{slideCountValue;slideWidthValue;slideHeightValue;defaultTextColorValue;majorFontValue;minorFontValue;hlinkColorValue;folHlinkColorValue;descriptors;slides=[];fonts;fontPreloadNames;fontProjectionBytes;projectionBytesValue;limit;pending=null;finished=null;constructor(e,t={}){let n=ze(e),r=t.hardLimitForTesting??A;if(!Number.isSafeInteger(r)||r<=0||r>A)throw Error(`invalid PPTX presentation preflight test limit`);this.limit=r,this.slideCountValue=n.slideCount,this.slideWidthValue=n.slideWidth,this.slideHeightValue=n.slideHeight,this.defaultTextColorValue=n.defaultTextColor,this.majorFontValue=n.majorFont,this.minorFontValue=n.minorFont,this.hlinkColorValue=n.hlinkColor,this.folHlinkColorValue=n.folHlinkColor,this.descriptors=[...n.slides],this.fonts=new Le(this.majorFontValue,this.minorFontValue),this.fontPreloadNames=Object.freeze(this.fonts.names()),this.fontProjectionBytes=E(this.fontPreloadNames,this.limit).jsonBytes,this.projectionBytesValue=E({slideCount:this.slideCountValue,slideWidth:this.slideWidthValue,slideHeight:this.slideHeightValue,defaultTextColor:this.defaultTextColorValue,majorFont:this.majorFontValue,minorFont:this.minorFontValue,hlinkColor:this.hlinkColorValue,folHlinkColor:this.folHlinkColorValue,remainingSlides:this.descriptors,slides:[],fontPreloadNames:this.fontPreloadNames},this.limit).jsonBytes,M(this.projectionBytesValue,this.limit,k)}get acceptedSlideCount(){return this.finished?.slideCount??this.slides.length}get projectedBytes(){return this.projectionBytesValue}get remainingDescriptorCount(){return this.descriptors.reduce((e,t)=>e+Number(t!==void 0),0)}addSlide(e,t=k){this.prepareSlide(e,t).commit()}prepareSlide(e,t=k){if(this.finished)throw Error(`PPTX presentation preflight is already finished`);if(this.pending)throw Error(`PPTX presentation preflight already has a prepared slide`);let n=this.slides.length,r=this.descriptors[n];if(!r)throw Error(`PPTX presentation preflight received an extra slide`);let i=Ve(e,r),a=this.fonts.withSlide(e),o=Object.freeze(a.names()),s=E(o,this.limit).jsonBytes,c=E(i,this.limit).jsonBytes,l=this.projectionBytesValue-this.fontProjectionBytes-E(r,this.limit).jsonBytes+4;l=C(l,s,this.limit),l=C(l,c,this.limit),this.slides.length!==0&&(l=C(l,1,this.limit));let ee=E({slide:i,fontPreloadNames:o},this.limit).jsonBytes,u=C(this.projectionBytesValue,ee,this.limit);M(Math.max(u,l),this.limit,t);let d={state:`prepared`,fact:i,fonts:a,fontNames:o,fontBytes:s,committedBytes:l};return this.pending=d,{projectedBytes:u,commit:()=>{if(d.state!==`committed`){if(d.state===`rolled-back`)throw Error(`PPTX presentation preflight cannot commit a rolled-back slide`);if(this.pending!==d)throw Error(`PPTX presentation preflight prepared slide is stale`);this.descriptors[n]=void 0,this.slides.push(d.fact),this.fonts=d.fonts,this.fontPreloadNames=d.fontNames,this.fontProjectionBytes=d.fontBytes,this.projectionBytesValue=d.committedBytes,d.state=`committed`,this.pending=null}},rollback:()=>{if(d.state!==`rolled-back`){if(d.state===`committed`)throw Error(`PPTX presentation preflight cannot roll back a committed slide`);if(this.pending!==d)throw Error(`PPTX presentation preflight prepared slide is stale`);d.state=`rolled-back`,this.pending=null}}}}finish(){if(this.finished)return this.finished;if(this.pending)throw Error(`PPTX presentation preflight has an uncommitted slide`);if(this.slides.length!==this.slideCountValue)throw Error(`PPTX presentation preflight is incomplete: ${this.slides.length}/${this.slideCountValue} slides`);return this.finished=Object.freeze({slideCount:this.slideCountValue,slideWidth:this.slideWidthValue,slideHeight:this.slideHeightValue,defaultTextColor:this.defaultTextColorValue,majorFont:this.majorFontValue,minorFont:this.minorFontValue,hlinkColor:this.hlinkColorValue,folHlinkColor:this.folHlinkColorValue,slides:Object.freeze([...this.slides]),fontPreloadNames:this.fontPreloadNames}),this.descriptors=[],this.slides=[],this.projectionBytesValue=E(this.finished,this.limit).jsonBytes,this.finished}};function N(e){try{return ge(e(e=>e.slide_cursor_resource_usage()))}catch(e){if(String(e).includes(`slide cursor usage is unavailable`))return;throw e}}function Ue(e,t,n,r,i){let a,o;try{if(i){if(!r)throw Error(`slide payload is missing before acknowledgement`);let t=i(n,r,N(e));typeof t==`function`?a=t:t&&({rollback:a,commit:o}=t)}e(e=>e.acknowledge_slide(t.operationId,t.generation)),o?.()}catch(e){try{a?.()}catch{}throw e}}var We=class{coordinatorGeneration=new Ne;sessions=new Map;pendingOpens=new Map;operationTail=Promise.resolve();resourceFailure;lifecycleState=`ready`;resetBarrier;resetIdentities=new Map;constructor(e,t,n=e=>e(this.requireArchive())){this.archive=e,this.acceptSlide=t,this.executeArchive=n}get coordinator(){return this.coordinatorGeneration}reserveOpen(e){if(this.assertReady(),Ke(e),this.pendingOpens.has(e.sessionId)||this.sessions.has(e.sessionId))throw Error(`slide pull session id is already reserved`);this.pendingOpens.set(e.sessionId,{identity:e,canceled:!1})}abandonOpen(e){this.pendingOpens.delete(e)}get pendingOpenCount(){return this.pendingOpens.size}async open(e,t){if(this.assertReady(),this.resourceFailure)throw this.resourceFailure;if(!Number.isSafeInteger(e)||e<0)throw RangeError(`slide index must be a non-negative safe integer`);let n=this.pendingOpens.get(t.sessionId);if(!n||!P(n.identity,t))throw Error(`slide pull session open reservation is stale or missing`);let r,i=new Promise(e=>{r=e}),a=this.operationTail.then(()=>this.coordinator.enqueue(async()=>{if(n.canceled)throw Error(`slide pull session open was canceled`);let i,a=!1,o=new Pe({...t,maxByteCredit:Ae,coordinator:this.coordinator,driver:{pull:n=>{let r;try{r=this.executeArchive(r=>r.pull_slide(e,t.operationId,t.generation,n))}catch(e){throw pe(e,n,Ae)||(this.latchResourceFailure(e),e)}let o=ke(r);return this.acceptSlide&&(i=JSON.parse(new TextDecoder().decode(new Uint8Array(o)))),a=!0,{payload:o,byteLength:o.byteLength,done:!0,transfer:[o]}},measureChunk:({payload:e})=>e.byteLength,acknowledge:()=>{if(!a)throw Error(`slide unit is not awaiting acknowledgement`);try{Ue(this.executeArchive,t,e,i,this.acceptSlide)}catch(e){throw this.latchResourceFailure(e),e}a=!1,i=void 0,this.sessions.delete(t.sessionId),r()},cancel:async()=>{try{this.archive()&&await this.executeArchive(e=>e.cancel_slide())}finally{i=void 0,a=!1,this.sessions.delete(t.sessionId),r()}},close:async()=>{try{this.archive()&&await this.executeArchive(e=>e.cancel_slide())}finally{i=void 0,a=!1,this.sessions.delete(t.sessionId),r()}},resourceUsage:()=>{try{return this.readResourceUsage()}catch(e){throw this.latchResourceFailure(e),e}}}});this.sessions.set(t.sessionId,{host:o,identity:t}),this.pendingOpens.delete(t.sessionId)}));this.operationTail=a.then(()=>i,()=>void 0);try{await a}catch(e){throw this.pendingOpens.delete(t.sessionId),r(),e}}async postOpenedSafely(e,t,n){if(this.lifecycleState!==`ready`){try{n(this.lifecycleError())}catch{}return}try{t()}catch(t){await this.closeIdentity(e);try{n(t)}catch{}}}dispatch(e,t){if(this.lifecycleState!==`ready`)return t(this.responseDuringReset(e)),Promise.resolve();let n=this.sessions.get(e.sessionId);if(n)return n.host.dispatch(e,t);let r=this.pendingOpens.get(e.sessionId);if(r&&(e.kind===`cancel`||e.kind===`close`)){let n=P(r.identity,e);return n&&(r.canceled=!0),t(n?{protocol:b,kind:`accepted`,sessionId:e.sessionId,operationId:e.operationId,generation:e.generation,requestId:e.requestId,command:e.kind}:this.staleLifecycleResponse(e)),Promise.resolve()}return e.kind===`cancel`||e.kind===`close`?(t({protocol:b,kind:`accepted`,sessionId:e.sessionId,operationId:e.operationId,generation:e.generation,requestId:e.requestId,command:e.kind}),Promise.resolve()):(t({protocol:b,kind:`error`,sessionId:e.sessionId,operationId:e.operationId,generation:e.generation,requestId:e.requestId,error:y(Error(`slide pull session is not open`))}),Promise.resolve())}async dispatchSafely(e,t){try{await this.dispatch(e,t)}catch(n){try{t({protocol:b,kind:`error`,sessionId:e.sessionId,operationId:e.operationId,generation:e.generation,requestId:e.requestId,error:y(n)})}catch{}}}run(e){if(this.lifecycleState!==`ready`)return Promise.reject(this.lifecycleError());let t=this.operationTail.then(()=>this.coordinator.enqueue(async()=>{if(this.resourceFailure)throw this.resourceFailure;return e()})).catch(e=>{throw this.latchResourceFailure(e),e});return this.operationTail=t.then(()=>void 0,()=>void 0),t}reset(){if(this.resetBarrier)return this.resetBarrier;this.lifecycleState=`resetting`,this.captureResetIdentities();let e=this.performReset().then(()=>{this.resetIdentities.clear(),this.lifecycleState=`ready`},e=>{throw this.lifecycleState=`reset-failed`,e}).finally(()=>{this.resetBarrier===e&&(this.resetBarrier=void 0)});return this.resetBarrier=e,e}async performReset(){for(let e of this.pendingOpens.values())e.canceled=!0;let e=1;for(let{host:t,identity:n}of[...this.sessions.values()]){let r;if(await t.dispatch({protocol:b,kind:`close`,...n,requestId:e++},e=>{e.kind===`error`&&(r=Oe(e.error))}),r)throw r}this.sessions.clear(),await this.operationTail,this.pendingOpens.clear(),this.archive()&&await this.executeArchive(e=>e.close_presentation_session()),this.coordinatorGeneration=new Ne,this.resourceFailure=void 0}assertReady(){if(this.lifecycleState!==`ready`)throw this.lifecycleError()}lifecycleError(){let e=this.lifecycleState===`reset-failed`,t=Error(e?`slide pull worker reset failed; retry reset before new work`:`slide pull worker reset is in progress`);return t.name=`PullSessionLifecycleError`,Object.assign(t,{code:e?`ooxml-pull-reset-failed`:`ooxml-pull-resetting`})}captureResetIdentities(){for(let{identity:e}of this.sessions.values())this.resetIdentities.set(e.sessionId,e);for(let{identity:e}of this.pendingOpens.values())this.resetIdentities.set(e.sessionId,e)}responseDuringReset(e){if(e.kind===`cancel`||e.kind===`close`){let t=this.resetIdentities.get(e.sessionId);return t&&!P(t,e)?this.staleLifecycleResponse(e):{protocol:b,kind:`accepted`,sessionId:e.sessionId,operationId:e.operationId,generation:e.generation,requestId:e.requestId,command:e.kind}}return{protocol:b,kind:`error`,sessionId:e.sessionId,operationId:e.operationId,generation:e.generation,requestId:e.requestId,error:y(this.lifecycleError())}}requireArchive(){let e=this.archive();if(!e)throw Error(`Presentation not loaded`);return e}async closeIdentity(e){if(this.lifecycleState!==`ready`)return;let t=this.sessions.get(e.sessionId);if(t){await t.host.dispatch({protocol:b,kind:`close`,...e,requestId:1},()=>void 0);return}let n=this.pendingOpens.get(e.sessionId);n&&P(n.identity,e)&&(n.canceled=!0)}readResourceUsage(){return N(this.executeArchive)}latchResourceFailure(e){let t=e instanceof n?e:Te(e);t&&(this.resourceFailure??=t)}staleLifecycleResponse(e){return{protocol:b,kind:`error`,sessionId:e.sessionId,operationId:e.operationId,generation:e.generation,requestId:e.requestId,error:{message:`stale lifecycle targets another slide operation`,errorName:`PullSessionProtocolError`,code:`ooxml-stale-lifecycle`}}}};function Ge(e){return!!e&&typeof e==`object`&&e.protocol===`ooxml-pull-v1`}function Ke(e){if(!Number.isSafeInteger(e.sessionId)||e.sessionId<=0)throw RangeError(`session id must be a positive safe integer`);if(!Number.isSafeInteger(e.operationId)||e.operationId<=0)throw RangeError(`operation id must be a positive safe integer`);if(!Number.isSafeInteger(e.generation)||e.generation<=0)throw RangeError(`generation must be a positive safe integer`)}function P(e,t){return e.sessionId===t.sessionId&&e.operationId===t.operationId&&e.generation===t.generation}var F=class{__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Je.unregister(this),e}free(){let e=this.__destroy_into_raw();J.__wbg_pptxarchive_free(e,0)}acknowledge_slide(e,t){let n=J.pptxarchive_acknowledge_slide(this.__wbg_ptr,e,t);if(n[1])throw U(n[0])}assert_healthy(){let e=J.pptxarchive_assert_healthy(this.__wbg_ptr);if(e[1])throw U(e[0])}cancel_slide(){J.pptxarchive_cancel_slide(this.__wbg_ptr)}close_presentation_session(){J.pptxarchive_close_presentation_session(this.__wbg_ptr)}extract_image(e){let t=H(e,J.__wbindgen_malloc,J.__wbindgen_realloc),n=q,r=J.pptxarchive_extract_image(this.__wbg_ptr,t,n);if(r[3])throw U(r[2]);var i=I(r[0],r[1]).slice();return J.__wbindgen_free(r[0],r[1]*1,1),i}extract_media(e){let t=H(e,J.__wbindgen_malloc,J.__wbindgen_realloc),n=q,r=J.pptxarchive_extract_media(this.__wbg_ptr,t,n);if(r[3])throw U(r[2]);var i=I(r[0],r[1]).slice();return J.__wbindgen_free(r[0],r[1]*1,1),i}constructor(e,t,n,r){let i=Xe(e,J.__wbindgen_malloc),a=q,o=J.pptxarchive_new(i,a,!V(t),V(t)?BigInt(0):t,!V(n),V(n)?BigInt(0):n,!V(r),V(r)?BigInt(0):r);if(o[2])throw U(o[1]);return this.__wbg_ptr=o[0]>>>0,Je.register(this,this.__wbg_ptr,this),this}parse(){let e=J.pptxarchive_parse(this.__wbg_ptr);if(e[3])throw U(e[2]);var t=I(e[0],e[1]).slice();return J.__wbindgen_free(e[0],e[1]*1,1),t}presentation_bootstrap(){let e=J.pptxarchive_presentation_bootstrap(this.__wbg_ptr);if(e[3])throw U(e[2]);var t=I(e[0],e[1]).slice();return J.__wbindgen_free(e[0],e[1]*1,1),t}pull_slide(e,t,n,r){let i=J.pptxarchive_pull_slide(this.__wbg_ptr,e,t,n,r);if(i[3])throw U(i[2]);var a=I(i[0],i[1]).slice();return J.__wbindgen_free(i[0],i[1]*1,1),a}resource_usage(){let e=J.pptxarchive_resource_usage(this.__wbg_ptr);if(e[3])throw U(e[2]);var t=I(e[0],e[1]).slice();return J.__wbindgen_free(e[0],e[1]*1,1),t}slide_cursor_resource_usage(){let e=J.pptxarchive_slide_cursor_resource_usage(this.__wbg_ptr);if(e[3])throw U(e[2]);var t=I(e[0],e[1]).slice();return J.__wbindgen_free(e[0],e[1]*1,1),t}to_markdown(){let e,t;try{let i=J.pptxarchive_to_markdown(this.__wbg_ptr);var n=i[0],r=i[1];if(i[3])throw n=0,r=0,U(i[2]);return e=n,t=r,R(n,r)}finally{J.__wbindgen_free(e,t,1)}}};Symbol.dispose&&(F.prototype[Symbol.dispose]=F.prototype.free);function qe(){return{__proto__:null,\"./pptx_parser_bg.js\":{__proto__:null,__wbg___wbindgen_throw_6b64449b9b9ed33c:function(e,t){throw Error(R(e,t))},__wbg_error_a6fa202b58aa1cd3:function(e,t){let n,r;try{n=e,r=t,console.error(R(e,t))}finally{J.__wbindgen_free(n,r,1)}},__wbg_new_227d7c05414eb861:function(){return Error()},__wbg_stack_3b0d974bbf31e44f:function(e,t){let n=t.stack,r=H(n,J.__wbindgen_malloc,J.__wbindgen_realloc),i=q;Ye().setInt32(e+4,i,!0),Ye().setInt32(e+0,r,!0)},__wbindgen_cast_0000000000000001:function(e,t){return R(e,t)},__wbindgen_init_externref_table:function(){let e=J.__wbindgen_externrefs,t=e.grow(4);e.set(0,void 0),e.set(t+0,void 0),e.set(t+1,null),e.set(t+2,!0),e.set(t+3,!1)}}}}const Je=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(e=>J.__wbg_pptxarchive_free(e>>>0,1));function I(e,t){return e>>>=0,B().subarray(e/1,e/1+t)}let L=null;function Ye(){return(L===null||L.buffer.detached===!0||L.buffer.detached===void 0&&L.buffer!==J.memory.buffer)&&(L=new DataView(J.memory.buffer)),L}function R(e,t){return e>>>=0,Ze(e,t)}let z=null;function B(){return(z===null||z.byteLength===0)&&(z=new Uint8Array(J.memory.buffer)),z}function V(e){return e==null}function Xe(e,t){let n=t(e.length*1,1)>>>0;return B().set(e,n/1),q=e.length,n}function H(e,t,n){if(n===void 0){let n=K.encode(e),r=t(n.length,1)>>>0;return B().subarray(r,r+n.length).set(n),q=n.length,r}let r=e.length,i=t(r,1)>>>0,a=B(),o=0;for(;o<r;o++){let t=e.charCodeAt(o);if(t>127)break;a[i+o]=t}if(o!==r){o!==0&&(e=e.slice(o)),i=n(i,r,r=o+e.length*3,1)>>>0;let t=B().subarray(i+o,i+r),a=K.encodeInto(e,t);o+=a.written,i=n(i,r,o,1)>>>0}return q=o,i}function U(e){let t=J.__wbindgen_externrefs.get(e);return J.__externref_table_dealloc(e),t}let W=new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0});W.decode();let G=0;function Ze(e,t){return G+=t,G>=2146435072&&(W=new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}),W.decode(),G=t),W.decode(B().subarray(e,e+t))}const K=new TextEncoder;`encodeInto`in K||(K.encodeInto=function(e,t){let n=K.encode(e);return t.set(n),{read:e.length,written:n.length}});let q=0,J;function Qe(e,t){return J=e.exports,L=null,z=null,J.__wbindgen_start(),J}async function $e(e,t){if(typeof Response==`function`&&e instanceof Response){if(typeof WebAssembly.instantiateStreaming==`function`)try{return await WebAssembly.instantiateStreaming(e,t)}catch(t){if(e.ok&&n(e.type)&&e.headers.get(`Content-Type`)!==`application/wasm`)console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\",t);else throw t}let r=await e.arrayBuffer();return await WebAssembly.instantiate(r,t)}else{let n=await WebAssembly.instantiate(e,t);return n instanceof WebAssembly.Instance?{instance:n,module:e}:n}function n(e){switch(e){case`basic`:case`cors`:case`default`:return!0}return!1}}async function et(e){if(J!==void 0)return J;e!==void 0&&(Object.getPrototypeOf(e)===Object.prototype?{module_or_path:e}=e:console.warn(`using deprecated parameters for the initialization function; pass a single object instead`));let t=qe();(typeof e==`string`||typeof Request==`function`&&e instanceof Request||typeof URL==`function`&&e instanceof URL)&&(e=fetch(e));let{instance:n,module:r}=await $e(await e,t);return Qe(n,r)}async function tt(e){return J=void 0,L=null,z=null,et(e)}const Y=new ce(et,{freeArchive:e=>e.free(),reinit:tt});let X=null,Z=`empty`;function nt(){if(Z!==`empty`){let e=Error(`this PPTX worker already owns a presentation parse`);throw e.name=`PptxWorkerStateError`,Object.assign(e,{code:`ooxml-pptx-parse-already-started`})}Z=`opening`}const Q=new We(()=>Y.archive,(e,t,n)=>{if(X){if(e!==X.acceptedSlideCount)throw Error(`PPTX preflight expected slide ${X.acceptedSlideCount}, received ${e}`);return X.prepareSlide(t,n)}},e=>{let t=Y.archive;if(!t)throw Error(`Presentation not loaded`);return Y.run(()=>e(t))}),$=(e,t)=>self.postMessage(e,t);self.onmessage=async e=>{let t=e.data;if(Ge(t)){await Q.dispatchSafely(t,$);return}if(t.kind===`init`){Y.setWasmInput(ne(t.wasmUrl)??t.wasmUrl);return}let n=t.id,r=!1;try{if(t.kind===`openSlideSession`&&Q.reserveOpen(t),t.kind===`parse`&&(nt(),r=!0),t.kind===`openSlideSession`){await Y.ensureReady(),await Q.open(t.slideIndex,t),await Q.postOpenedSafely(t,()=>$({kind:`slideSessionOpened`,id:n,sessionId:t.sessionId,operationId:t.operationId,generation:t.generation}),e=>$({kind:`error`,id:n,...y(e)}));return}t.kind===`parse`&&await Q.reset(),await Q.run(async()=>{if(await Y.ensureReady(),t.kind!==`parse`&&Y.archive){let e=Y.archive;Y.run(()=>e.assert_healthy())}if(t.kind===`parse`){X=null;let[e,r,i]=je(t.resourcePolicy),a=Y.run(()=>{let n=new F(new Uint8Array(t.buffer),e,r,i);return Y.setArchive(n),JSON.parse(new TextDecoder().decode(n.presentation_bootstrap()))});X=new He(a),$({kind:`presentationOpened`,id:n,bootstrap:a}),Z=`ready`;return}let e=Y.archive;if(!e)throw Error(`No pptx loaded`);if(t.kind===`finishPresentationPreflight`){if(!X)throw Error(`PPTX presentation preflight is not active`);let e=X.finish();X=null,$({kind:`presentationPreflightReady`,id:n,preflight:e});return}if(t.kind===`extractMedia`){let r=Y.run(()=>e.extract_media(t.path).buffer);$({kind:`mediaExtracted`,id:n,bytes:r},[r]);return}if(t.kind===`extractImage`){let r=Y.run(()=>e.extract_image(t.path).buffer);$({kind:`imageExtracted`,id:n,bytes:r},[r]);return}if(t.kind===`resourceUsage`){$({kind:`resourceUsage`,id:n,usage:ge(Y.run(()=>e.resource_usage()))});return}t.kind===`toMarkdown`&&$({kind:`markdownRendered`,id:n,markdown:Y.run(()=>e.to_markdown())})})}catch(e){r&&(Z=`failed`),t.kind===`openSlideSession`&&Q.abandonOpen(t.sessionId);try{$({kind:`error`,id:n,...y(e)})}catch{}}};", et = typeof self < "u" && self.Blob && new Blob(["URL.revokeObjectURL(import.meta.url);", $e], { type: "text/javascript;charset=utf-8" });
545
- function tt(e) {
547
+ var it = "var e=(e,t)=>()=>(e&&(t=e(e=0)),t),t=class e extends Error{code;constructor(t,n){super(n),this.name=`OoxmlError`,this.code=t,Object.setPrototypeOf(this,e.prototype)}},n=class e extends Error{code=`ooxml-resource-limit`;details;constructor(t,n){super(t),this.name=`OoxmlResourceLimitError`;let r=n.violation,i=Object.freeze({format:r.format,operation:r.operation,resource:r.resource,metric:r.metric,...r.part===void 0?{}:{part:r.part},limit:r.limit,observed:r.observed,configurable:r.configurable,usage:Object.freeze({archiveEntryCount:r.usage.archiveEntryCount,declaredInflatedBytes:r.usage.declaredInflatedBytes,...r.usage.largestInflatedEntryBytes===void 0?{}:{largestInflatedEntryBytes:r.usage.largestInflatedEntryBytes},distinctInflatedBytes:r.usage.distinctInflatedBytes,operationInflatedBytes:r.usage.operationInflatedBytes})});this.details=Object.freeze({stage:n.stage,violation:i}),Object.setPrototypeOf(this,e.prototype)}};const r=`https://fonts.googleapis.com/css2?family=Noto+Naskh+Arabic:wght@400;700&display=swap`,i=`https://fonts.googleapis.com/css2?family=Noto+Sans+Arabic:wght@400;700&display=swap`,a=`https://fonts.googleapis.com/css2?family=Libre+Franklin:ital,wght@0,400;0,600;0,700;1,400;1,600;1,700&display=swap`,o={calibri:{url:`https://fonts.googleapis.com/css2?family=Carlito:ital,wght@0,400;0,700;1,400;1,700&display=swap`,loadFamily:`Carlito`},\"calibri light\":{url:`https://fonts.googleapis.com/css2?family=Carlito:ital,wght@0,400;0,700;1,400;1,700&display=swap`,loadFamily:`Carlito`},cambria:{url:`https://fonts.googleapis.com/css2?family=Caladea:ital,wght@0,400;0,700;1,400;1,700&display=swap`,loadFamily:`Caladea`},\"cambria math\":{url:`https://fonts.googleapis.com/css2?family=Caladea:ital,wght@0,400;0,700;1,400;1,700&display=swap`,loadFamily:`Caladea`},\"franklin gothic book\":{url:a,loadFamily:`Libre Franklin`},\"franklin gothic medium\":{url:a,loadFamily:`Libre Franklin`},\"nunito sans\":{url:`https://fonts.googleapis.com/css2?family=Nunito+Sans:ital,wght@0,400;0,700;1,400;1,700&display=swap`},nunito:{url:`https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,400;0,700;1,400;1,700&display=swap`},\"open sans\":{url:`https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,700;1,400;1,700&display=swap`},roboto:{url:`https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,400;0,700;1,400;1,700&display=swap`},lato:{url:`https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,700;1,400;1,700&display=swap`},montserrat:{url:`https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,400;0,700;1,400;1,700&display=swap`},poppins:{url:`https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,400;0,700;1,400;1,700&display=swap`},raleway:{url:`https://fonts.googleapis.com/css2?family=Raleway:ital,wght@0,400;0,700;1,400;1,700&display=swap`},\"playfair display\":{url:`https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,700;1,400;1,700&display=swap`},ubuntu:{url:`https://fonts.googleapis.com/css2?family=Ubuntu:ital,wght@0,400;0,700;1,400;1,700&display=swap`},\"sakkal majalla\":{url:r,loadFamily:`Noto Naskh Arabic`},\"traditional arabic\":{url:r,loadFamily:`Noto Naskh Arabic`},\"simplified arabic\":{url:r,loadFamily:`Noto Naskh Arabic`},\"arabic typesetting\":{url:r,loadFamily:`Noto Naskh Arabic`},\"univers next arabic\":{url:i,loadFamily:`Noto Sans Arabic`},\"noto naskh arabic\":{url:r,loadFamily:`Noto Naskh Arabic`},\"noto sans arabic\":{url:i,loadFamily:`Noto Sans Arabic`}};function s(e){if(!e)return null;let t=e.toLowerCase();return/[ᄀ-ᇿ㄰-㆏가-힯]/.test(e)?`kr`:/[぀-ヿ]/.test(e)?`jp`:/jhenghei|微軟正黑|新細明|細明|pmingliu|mingliu|dfkai|標楷|華康|cns11643|kaiti tc|ming\\s*liu/.test(t)||/新細明體|細明體|標楷體|微軟正黑體|華康/.test(e)?`tc`:/simsun|nsimsun|simhei|simkai|simfang|yahei|dengxian|fangsong|kaiti|youyuan|lisu|stsong|stkaiti|stfangsong|stheiti|stxihei|stzhongsong|songti sc|heiti sc|微软雅黑/.test(t)||/宋体|黑体|楷体|仿宋|等线|微软雅黑|隶书|幼圆/.test(e)?`sc`:/malgun|batang|gulim|dotum|gungsuh|nanum|new gulim|hancom|hy(gothic|graphic|namu)?/.test(t)?`kr`:/\\bmeiryo\\b|\\byu\\s*(gothic|mincho)\\b|yugothic|yumincho|hiragino|\\bms\\s*(gothic|mincho|pgothic|pmincho|ui\\s*gothic)\\b|\\bms[pg]?(gothic|mincho)\\b|ipa(ex)?(gothic|mincho)|noto\\s+(sans|serif)\\s+jp|游ゴシック|游明朝|MS|メイリオ|ヒラギノ/.test(t)||/游ゴシック|游明朝|MS ゴシック|MS 明朝|MS Pゴシック|メイリオ|ヒラギノ/.test(e)?`jp`:null}const c=e=>`https://fonts.googleapis.com/css2?family=${e}:wght@400;700&display=swap`,l={\"noto sans kr\":{url:c(`Noto+Sans+KR`)},\"noto sans sc\":{url:c(`Noto+Sans+SC`)},\"noto sans tc\":{url:c(`Noto+Sans+TC`)},\"noto sans jp\":{url:c(`Noto+Sans+JP`)},\"noto serif kr\":{url:c(`Noto+Serif+KR`)},\"noto serif sc\":{url:c(`Noto+Serif+SC`)},\"noto serif tc\":{url:c(`Noto+Serif+TC`)},\"noto serif jp\":{url:c(`Noto+Serif+JP`)},\"noto sans\":{url:c(`Noto+Sans`)},\"noto serif\":{url:c(`Noto+Serif`)},\"noto sans devanagari\":{url:c(`Noto+Sans+Devanagari`)},\"noto sans thai\":{url:c(`Noto+Sans+Thai`)},\"noto sans hebrew\":{url:c(`Noto+Sans+Hebrew`)},\"noto serif hebrew\":{url:c(`Noto+Serif+Hebrew`)}};var ee=class e{hasHan=!1;hasHangul=!1;hasKana=!1;hasArabic=!1;hasThai=!1;hasHebrew=!1;hasDevanagari=!1;hasCyrGreek=!1;constructor(e){this.cjkLang=e}clone(){let t=new e(this.cjkLang);return t.hasHan=this.hasHan,t.hasHangul=this.hasHangul,t.hasKana=this.hasKana,t.hasArabic=this.hasArabic,t.hasThai=this.hasThai,t.hasHebrew=this.hasHebrew,t.hasDevanagari=this.hasDevanagari,t.hasCyrGreek=this.hasCyrGreek,t}addText(e){let t=()=>this.hasHan&&this.hasHangul&&this.hasKana&&this.hasArabic&&this.hasThai&&this.hasHebrew&&this.hasDevanagari&&this.hasCyrGreek;outer:for(let n of e)if(n)for(let e of n){let n=e.codePointAt(0);if(n!==void 0&&!(n<=591)&&(n>=4352&&n<=4607||n>=12592&&n<=12687||n>=44032&&n<=55215?this.hasHangul=!0:n>=12352&&n<=12543?this.hasKana=!0:n>=13312&&n<=19903||n>=19968&&n<=40959||n>=63744&&n<=64255||n>=131072&&n<=195103?this.hasHan=!0:n>=1536&&n<=1791||n>=1872&&n<=1919||n>=2208&&n<=2303||n>=64336&&n<=65023||n>=65136&&n<=65279?this.hasArabic=!0:n>=3584&&n<=3711?this.hasThai=!0:n>=1424&&n<=1535||n>=64285&&n<=64335?this.hasHebrew=!0:n>=2304&&n<=2431?this.hasDevanagari=!0:(n>=1024&&n<=1279||n>=880&&n<=1023)&&(this.hasCyrGreek=!0),t()))break outer}}names(){let e=[],t=new Set;this.hasHangul&&t.add(`kr`),this.hasKana&&t.add(`jp`),this.hasHan&&t.size===0&&t.add(this.cjkLang??`jp`);for(let n of[`kr`,`sc`,`tc`,`jp`])if(t.has(n)){let t={kr:`KR`,sc:`SC`,tc:`TC`,jp:`JP`}[n];e.push(`Noto Sans ${t}`,`Noto Serif ${t}`)}return this.hasCyrGreek&&e.push(`Noto Sans`,`Noto Serif`),this.hasArabic&&e.push(`Noto Naskh Arabic`,`Noto Sans Arabic`),this.hasThai&&e.push(`Noto Sans Thai`),this.hasHebrew&&e.push(`Noto Sans Hebrew`,`Noto Serif Hebrew`),this.hasDevanagari&&e.push(`Noto Sans Devanagari`),e}},u,d,te=e((()=>{u=1<<25,u*4,d=class e extends RangeError{code=`ooxml-decoded-image-limit`;constructor(t,n,r){super(`OOXML decoded image limit exceeded: ${t} ${r} > ${n}`),this.metric=t,this.limit=n,this.observed=r,this.name=`OoxmlDecodedImageLimitError`,Object.setPrototypeOf(this,e.prototype)}}}));function ne(e){if(!e.startsWith(`data:`))return null;let t=e.indexOf(`,`);if(t===-1)return null;let n=atob(e.slice(t+1)),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);return r.buffer}var re=class{state=`uninitialized`;generationValue=0;readiness;poisonListeners=new Set;constructor(e,t,n){this.initialize=e,this.reinitialize=t,this.normalizeFailure=n}get generation(){return this.generationValue}get poisoned(){return this.state===`poisoned`}onPoison(e){return this.poisonListeners.add(e),()=>this.poisonListeners.delete(e)}async ensureReady(){if(this.state!==`ready`){if(!this.readiness){let e=this.state===`uninitialized`?this.initialize:this.reinitialize;this.readiness=Promise.resolve().then(e).then(()=>{this.generationValue+=1,this.state=`ready`,this.readiness=void 0},e=>{throw this.readiness=void 0,e})}await this.readiness}}run(e){try{return e()}catch(e){let t=this.normalizeFailure(e);throw t?(this.poison(t),t):e}}tryRunReady(e){if(this.state!==`ready`)return{current:!1};let t=this.generationValue,n=this.run(e);return this.state!==`ready`||t!==this.generationValue?{current:!1}:{current:!0,generation:t,value:n}}poison(e){this.state=`poisoned`,this.readiness=void 0;for(let t of this.poisonListeners)t(e)}assertCurrent(e){if(this.state!==`ready`||e!==this.generationValue)throw Error(`WASM archive session belongs to a discarded runtime generation`)}},ie=class e extends Error{code=`parser-crashed`;constructor(t){super(t),this.name=`WasmTrapError`,Object.setPrototypeOf(this,e.prototype)}};function ae(e){let t=globalThis.WebAssembly?.RuntimeError;return t&&e instanceof t||e instanceof RangeError?!0:e instanceof Error?e.name===`RuntimeError`||e.name===`CompileError`||e.name===`LinkError`||e.name===`InternalError`||e.name===`OOMError`:!1}function oe(e){try{if((typeof e!=`object`||!e)&&typeof e!=`function`)return;let t=Reflect.get(e,`__destroy_into_raw`);typeof t==`function`&&Reflect.apply(t,e,[])}catch{}}function se(e,t){return e({module_or_path:t})}var ce=class{runtime;wasmInput=null;currentArchive=null;constructor(e,t={}){this.init=e,this.options=t,this.runtime=new re(()=>this.invokeConfigured(this.init),()=>this.invokeConfigured(this.options.reinit??this.init),le),this.runtime.onPoison(()=>this.dropPoisonedArchive())}setWasmInput(e){this.wasmInput=e,this.runtime.ensureReady().catch(()=>void 0)}setWasmUrl(e){this.setWasmInput(e)}get archive(){return this.currentArchive}setArchive(e){this.freeArchive(),this.currentArchive=e}disposeArchive(){this.freeArchive()}get poisoned(){return this.runtime.poisoned}async ensureReady(){await this.runtime.ensureReady()}run(e){return this.runtime.run(e)}poison(){this.runtime.poison(new ie(`WASM parser was recycled`))}invokeConfigured(e){return this.wasmInput===null?Promise.reject(Error(`WasmParserHost: setWasmInput was never called`)):se(e,this.wasmInput)}freeArchive(){this.currentArchive!==null&&this.options.freeArchive&&this.options.freeArchive(this.currentArchive),this.currentArchive=null}dropPoisonedArchive(){let e=this.currentArchive;this.currentArchive=null,oe(e)}};function le(e){return ae(e)?new ie(`WASM parser trapped and was recycled: ${e instanceof Error?e.message:String(e)}`):null}function f(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>0}function ue(e){if(!e||typeof e!=`object`||Array.isArray(e))return!1;let t=e;return f(t.requiredBytes)&&f(t.offeredBytes)&&t.requiredBytes>t.offeredBytes}var p=class e extends RangeError{code=`ooxml-insufficient-credit`;requiredBytes;offeredBytes;constructor(t){super(`Pull unit requires ${t.requiredBytes} bytes but credit is ${t.offeredBytes}`),this.name=`PullSessionInsufficientCreditError`,this.requiredBytes=t.requiredBytes,this.offeredBytes=t.offeredBytes,Object.setPrototypeOf(this,e.prototype)}};function de(e){if(e instanceof p)return e;let t=e instanceof Error?e.message:String(e);if(!t.startsWith(`OOXML_INSUFFICIENT_CREDIT:`))return;let n;try{n=JSON.parse(t.slice(26))}catch{return}if(!n||typeof n!=`object`||Array.isArray(n))return;let r=n;if(!(r.code!==`ooxml-insufficient-credit`||!ue(r)))return new p(r)}function fe(e,t,n){let r=de(e);if(!(!r||r.offeredBytes!==t||r.requiredBytes>n))return r}te();const pe=`OOXML_RESOURCE_LIMIT:`;function m(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0}function me(e){if(!e||typeof e!=`object`||Array.isArray(e))return!1;let t=e;return m(t.archiveEntryCount)&&m(t.declaredInflatedBytes)&&(t.largestInflatedEntryBytes===void 0||m(t.largestInflatedEntryBytes))&&m(t.distinctInflatedBytes)&&m(t.operationInflatedBytes)}function h(e){let t;try{t=JSON.parse(new TextDecoder().decode(e))}catch{throw TypeError(`OOXML resource usage checkpoint is not valid JSON`)}if(!me(t))throw TypeError(`OOXML resource usage checkpoint is invalid`);return t}function he(e){return e===`docx`||e===`xlsx`||e===`pptx`}function ge(e){return e===`container`||e===`decompression`||e===`parsing`||e===`serialization`||e===`layout`||e===`rendering`||e===`worker`}function g(e,t){return typeof e==`string`&&e.length>0&&e.length<=t&&!/[\\u0000-\\u001f\\u007f]/u.test(e)}function _(e){return g(e,128)&&/^[a-z0-9][a-z0-9-]*$/u.test(e)}function _e(e){return!g(e,4096)||e.startsWith(`/`)||e.startsWith(`\\\\`)||e.includes(`\\\\`)||e.includes(`?`)||e.includes(`#`)||e.includes(`://`)||/^[a-z]:/iu.test(e)?!1:e.split(`/`).every(e=>e!==``&&e!==`.`&&e!==`..`)}const v=new Map([[`archive-entry:declared-inflated-bytes`,{stage:`container`,part:`required`}],[`archive-entry:actual-inflated-bytes`,{stage:`decompression`,part:`required`}],[`archive:entry-count`,{stage:`container`,part:`forbidden`}],[`archive:central-directory-bytes`,{stage:`container`,part:`forbidden`,configurable:!1}],[`archive:distinct-inflated-bytes`,{stage:`decompression`,part:`required`}],[`xml-event:bytes`,{stage:`parsing`,part:`optional`,configurable:!1}],[`xml-context:bytes`,{stage:`parsing`,part:`optional`,configurable:!1}],[`xml-tree:depth`,{stage:`parsing`,part:`optional`,configurable:!1}],[`worksheet-row:projected-bytes`,{stage:`parsing`,part:`optional`,configurable:!1}],[`worksheet-shell:projected-bytes`,{stage:`parsing`,part:`optional`,configurable:!1}]]),ve=new Set([...v.keys()].map(e=>e.slice(0,e.indexOf(`:`)))),ye=new Set([...v.keys()].map(e=>e.slice(e.indexOf(`:`)+1)));function be(e){if(!e||typeof e!=`object`||Array.isArray(e))return!1;let t=e;return!he(t.format)||!g(t.operation,256)||!_(t.resource)||!_(t.metric)||!m(t.limit)||!m(t.observed)||typeof t.configurable!=`boolean`||!me(t.usage)?!1:!(`part`in t)||_e(t.part)}function y(e){if(!e||typeof e!=`object`||Array.isArray(e))return!1;let t=e;if(!ge(t.stage)||!be(t.violation))return!1;let n=t.violation,r=v.get(`${n.resource}:${n.metric}`);return r?t.stage!==r.stage||r.configurable===!1&&n.configurable!==!1?!1:r.part===`required`?n.part!==void 0:r.part===`forbidden`?n.part===void 0:!0:!(ve.has(n.resource)&&ye.has(n.metric))}function xe(e){return{archiveEntryCount:e.archiveEntryCount,declaredInflatedBytes:e.declaredInflatedBytes,...e.largestInflatedEntryBytes===void 0?{}:{largestInflatedEntryBytes:e.largestInflatedEntryBytes},distinctInflatedBytes:e.distinctInflatedBytes,operationInflatedBytes:e.operationInflatedBytes}}function Se(e){if(!y(e))return;let t=e.violation,n={stage:e.stage,violation:{format:t.format,operation:t.operation,resource:t.resource,metric:t.metric,...t.part===void 0?{}:{part:t.part},limit:t.limit,observed:t.observed,configurable:t.configurable,usage:xe(t.usage)}};return y(n)?n:void 0}function Ce(e){let t=e.violation;return`OOXML resource limit exceeded${t.part?` for ${t.part}`:``}: ${t.metric} ${t.observed} > ${t.limit}`}function b(e){let t=e instanceof Error?e.message:String(e);if(!t.startsWith(pe))return;let r;try{r=JSON.parse(t.slice(21))}catch{return}if(!r||typeof r!=`object`)return;let i=r;if(!(i.code!==`ooxml-resource-limit`||!y(i.details)))return new n(Ce(i.details),i.details)}function we(e){if(e instanceof d)return{message:e.message,errorName:e.name,code:e.code,decodedImage:{metric:e.metric,limit:e.limit,observed:e.observed}};let r=de(e);if(r)return{message:r.message,errorName:r.name,code:r.code,insufficientCredit:{requiredBytes:r.requiredBytes,offeredBytes:r.offeredBytes}};let i=e instanceof t||e instanceof n?e:b(e);if(i instanceof n){let e=Se(i.details);return e?{message:typeof i.message==`string`?i.message:Ce(e),errorName:`OoxmlResourceLimitError`,code:`ooxml-resource-limit`,resourceLimit:e}:{message:`Invalid OOXML resource-limit error payload`,errorName:`Error`}}if(i instanceof t)return{message:typeof i.message==`string`?i.message:String(i.message),errorName:g(i.name,128)?i.name:`OoxmlError`,..._(i.code)?{code:i.code}:{}};let a=e instanceof Error?e.message:String(e);if(typeof a==`string`&&a.startsWith(pe))return{message:`Invalid OOXML resource-limit payload`,errorName:`Error`};let o=e instanceof Error?e:Error(a),s=o;return{message:typeof o.message==`string`?o.message:String(o.message),errorName:g(o.name,128)?o.name:`Error`,...typeof s.code==`string`?{code:s.code}:{}}}function x(e){try{return we(e)}catch{return{message:`Worker operation failed with an unreadable error`,errorName:`Error`}}}const Te=new Set([`encrypted`,`invalid-password`,`unsupported-encryption`,`legacy-binary-format`,`not-ooxml`]);function Ee(e){if(e.code===`ooxml-decoded-image-limit`&&e.decodedImage&&(e.decodedImage.metric===`image-pixels`||e.decodedImage.metric===`active-decoded-bytes`)&&m(e.decodedImage.limit)&&m(e.decodedImage.observed)&&e.decodedImage.observed>e.decodedImage.limit)return new d(e.decodedImage.metric,e.decodedImage.limit,e.decodedImage.observed);if(e.code===`ooxml-insufficient-credit`&&ue(e.insufficientCredit))return new p(e.insufficientCredit);if(e.code===`ooxml-resource-limit`&&y(e.resourceLimit))return new n(e.message,e.resourceLimit);if(e.code&&Te.has(e.code))return new t(e.code,e.message);let r=e.errorName===`TypeError`?TypeError(e.message):e.errorName===`RangeError`?RangeError(e.message):Error(e.message);return e.errorName&&(r.name=e.errorName),e.code!==void 0&&Object.assign(r,{code:e.code}),r}function De(e){return e.byteOffset===0&&e.byteLength===e.buffer.byteLength&&e.buffer instanceof ArrayBuffer?e.buffer:e.slice().buffer}const S=67108864;Object.freeze({maxArchiveEntryBytes:134217728,maxTotalInflatedBytes:268435456,maxArchiveEntries:4096});function Oe(e){return[e.maxArchiveEntryBytes===null?0n:BigInt(e.maxArchiveEntryBytes),e.maxTotalInflatedBytes===null?0n:BigInt(e.maxTotalInflatedBytes),e.maxArchiveEntries===null?0n:BigInt(e.maxArchiveEntries)]}const C=`ooxml-pull-v1`;function w(e,t){if(!Number.isSafeInteger(e)||e<=0)throw RangeError(`${t} must be a positive safe integer`)}function ke(e){if(!(typeof e==`string`&&e.length>0||typeof e==`number`&&Number.isSafeInteger(e)&&e>0))throw RangeError(`session id must be a non-empty string or positive safe integer`)}var Ae=class{owner;queue=Promise.resolve();leases=new Map;retainedBytes=0;retainedCount=0;maxRetainedBytes;maxRetainedCount;cleanups=new Set;pendingFatalCleanups=[];poisonRunning=!1;fatal;constructor(e){this.maxRetainedBytes=e?.maxRetainedBytes??64*1024*1024,this.maxRetainedCount=e?.maxRetainedCount??256,w(this.maxRetainedBytes,`max retained lease bytes`),w(this.maxRetainedCount,`max retained lease count`)}enqueue(e){let t=this.queue.then(e,e);return this.queue=t.then(()=>void 0,()=>void 0),t}acquire(e){return this.owner===void 0?(this.owner=e,!0):this.owner===e}release(e){this.owner===e&&(this.owner=void 0)}retainLease(e,t,n){if(!Number.isSafeInteger(n)||n<0)throw RangeError(`retained lease bytes are invalid`);let r=this.leases.get(e)??new Map;if(r.has(t))throw Error(`driver returned a duplicate lease id`);if(this.retainedCount+1>this.maxRetainedCount)throw RangeError(`retained lease count exceeds limit`);if(this.retainedBytes+n>this.maxRetainedBytes)throw RangeError(`retained lease bytes exceed limit`);r.set(t,n),this.leases.set(e,r),this.retainedCount++,this.retainedBytes+=n}releaseLease(e,t){let n=this.leases.get(e),r=n?.get(t);r!==void 0&&(n?.delete(t),n?.size===0&&this.leases.delete(e),this.retainedCount--,this.retainedBytes-=r)}registerCleanup(e){return this.fatal?(this.poisonRunning?this.pendingFatalCleanups.push(e):this.enqueue(e).catch(()=>void 0),()=>void 0):(this.cleanups.add(e),()=>this.cleanups.delete(e))}get fatalError(){return this.fatal}get registeredHostCount(){return this.cleanups.size}async poison(e){if(this.fatal??=e,this.poisonRunning)return this.fatal;this.poisonRunning=!0,this.pendingFatalCleanups.push(...this.cleanups);try{let e;for(;(e=this.pendingFatalCleanups.shift())!==void 0;)await e().catch(()=>void 0)}finally{this.poisonRunning=!1}return this.fatal}},je=class{options;coordinator;coordinatorOwner=Symbol(`pull-session-host`);unregisterCleanup;sequence=0;unacked;leases=new Map;activeDriverLeases=new Set;nextWireLeaseId;cancelRequested=!1;cancelComplete=!1;closeRequested=!1;closeComplete=!1;driverCancelComplete=!1;driverCloseComplete=!1;completed=!1;constructor(e){ke(e.sessionId),w(e.operationId,`operation id`),w(e.generation,`generation`),w(e.maxByteCredit,`max byte credit`),e.wireLeaseIdStart!==void 0&&w(e.wireLeaseIdStart,`wire lease id start`),this.options=e,this.coordinator=e.coordinator,this.nextWireLeaseId=e.wireLeaseIdStart??1,this.unregisterCleanup=this.coordinator.registerCleanup(()=>this.forceFatalCleanup())}dispatch(e,t){return this.coordinator.enqueue(async()=>{let n=await this.execute(e);try{t(n.response,n.transfer)}catch(e){throw await this.rollbackFailedPost(n),e}})}async rollbackFailedPost(e){let t=e.response;if(t.kind===`chunk`){let n=t.leaseId===void 0?void 0:this.leases.get(t.leaseId);try{await this.options.driver.disposeInvalidChunk?.({payload:t.payload,byteLength:t.byteLength,done:t.done,leaseId:n?.driverLeaseId,retainedBytes:n?.retainedBytes,transfer:e.transfer})}catch{}}this.unacked=void 0,this.coordinator.release(this.coordinatorOwner);for(let[e,t]of[...this.leases])try{await this.options.driver.releaseLease?.(t.driverLeaseId)}catch{}finally{this.leases.delete(e),this.activeDriverLeases.delete(t.driverLeaseId),this.coordinator.releaseLease(this.coordinatorOwner,e)}if(this.cancelRequested=!0,!this.driverCancelComplete)try{await this.options.driver.cancel?.(),this.driverCancelComplete=!0}catch{}this.unregisterCleanup()}async execute(e){try{if(this.isStaleLifecycle(e)){let t=e.kind===`cancel`?`cancel`:`close`;return this.sameOperationIdentity(e)?{response:this.accepted(e,t,!0)}:{response:this.errorResponse(e,{message:`stale lifecycle targets another session or operation`,errorName:`PullSessionProtocolError`,code:`ooxml-stale-lifecycle`})}}this.validateCommandIdentity(e);let t=this.coordinator.fatalError;if(t)return e.kind===`pull`?{response:this.errorResponse(e,t)}:(e.kind===`cancel`?await this.cancel():e.kind===`close`?await this.close():e.kind===`release`&&await this.release(e.leaseId),{response:this.accepted(e,e.kind)});switch(e.kind){case`pull`:return await this.pull(e);case`ack`:return await this.ack(e.sequence),{response:this.accepted(e,`ack`)};case`release`:return await this.release(e.leaseId),{response:this.accepted(e,`release`)};case`cancel`:return await this.cancel(),{response:this.accepted(e,`cancel`)};case`close`:return await this.close(),{response:this.accepted(e,`close`)}}}catch(t){let n=x(t);return n.code===`ooxml-resource-limit`&&(n=await this.coordinator.poison(n)),{response:this.errorResponse(e,n)}}}async pull(e){if(this.closeRequested||this.cancelRequested||this.completed)throw Error(`pull session is closed`);if(this.unacked)throw Error(`previous chunk is not acknowledged`);if(!Number.isSafeInteger(e.sequence)||e.sequence<0||e.sequence!==this.sequence)throw Error(`pull command sequence mismatch`);if(this.validateHostCredit(e.byteCredit),!this.coordinator.acquire(this.coordinatorOwner))throw Error(`another operation has an unacknowledged package chunk`);let t;try{t=await this.options.driver.pull(e.byteCredit)}catch(e){throw this.coordinator.release(this.coordinatorOwner),e}let n=!1,r=!1,i,a;try{let o=this.options.driver.measureChunk(t),s=this.arrayBufferTransferBytes(t.transfer);if(o<s)throw RangeError(`measured chunk bytes are below ArrayBuffer transfer bytes`);if(a=Math.max(o,s),t.leaseId!==void 0){if(w(t.leaseId,`lease id`),t.retainedBytes===void 0)throw Error(`retained lease bytes are required`);if(this.activeDriverLeases.has(t.leaseId))throw r=!0,Error(`driver returned an active duplicate lease id`);i=this.allocateWireLeaseId(),this.coordinator.retainLease(this.coordinatorOwner,i,t.retainedBytes),this.leases.set(i,{driverLeaseId:t.leaseId,retainedBytes:t.retainedBytes}),this.activeDriverLeases.add(t.leaseId),n=!0}else if(t.retainedBytes!==void 0)throw Error(`retained lease bytes require a lease id`);if(!Number.isSafeInteger(a)||a<0)throw RangeError(`host chunk byte length must be a non-negative safe integer`);if(a>e.byteCredit)throw RangeError(`host chunk exceeds byte credit`)}catch(e){let a;try{await this.options.driver.disposeInvalidChunk?.(t)}catch(e){a=e}if(n&&i!==void 0)try{await this.release(i)}catch(e){a??=e}else if(t.leaseId!==void 0&&!r)try{await this.options.driver.releaseLease?.(t.leaseId)}catch(e){a??=e}if(r)try{await this.cancel()}catch(e){a??=e}throw this.coordinator.release(this.coordinatorOwner),a||e}return this.unacked={sequence:this.sequence,done:t.done},{response:{kind:`chunk`,protocol:C,...this.identity(),requestId:e.requestId,sequence:this.sequence,byteLength:a,done:t.done,payload:t.payload,leaseId:i,usage:this.resourceUsage()},transfer:t.transfer}}async ack(e){if(!Number.isSafeInteger(e)||e<0)throw RangeError(`invalid ack sequence`);if(e<this.sequence)return;if(!this.unacked||e!==this.sequence)throw Error(`ack sequence mismatch`);let t=this.unacked.done;await this.options.driver.acknowledge?.(e),this.unacked=void 0,this.coordinator.release(this.coordinatorOwner),this.sequence++,t&&(this.completed=!0,this.maybeUnregisterCompleted())}async release(e){w(e,`wire lease id`);let t=this.leases.get(e);t&&(await this.options.driver.releaseLease?.(t.driverLeaseId),this.leases.delete(e),this.activeDriverLeases.delete(t.driverLeaseId),this.coordinator.releaseLease(this.coordinatorOwner,e),this.maybeUnregisterCompleted())}async cancel(){if(this.cancelComplete)return;this.cancelRequested=!0,this.unacked=void 0,this.coordinator.release(this.coordinatorOwner);let e;try{await this.releaseAllLeases()}catch(t){e=t}if(!this.driverCancelComplete)try{await this.options.driver.cancel?.(),this.driverCancelComplete=!0}catch(t){e??=t}if(e)throw e;this.cancelComplete=!0,this.unregisterCleanup()}async close(){if(this.closeComplete)return;this.closeRequested=!0,this.unacked=void 0,this.coordinator.release(this.coordinatorOwner);let e;try{await this.releaseAllLeases()}catch(t){e=t}if(!this.driverCloseComplete)try{await this.options.driver.close?.(),this.driverCloseComplete=!0}catch(t){e??=t}if(e)throw e;this.closeComplete=!0,this.unregisterCleanup()}async releaseAllLeases(){let e;for(let t of[...this.leases.keys()])try{await this.release(t)}catch(t){e??=t}if(e)throw e}validateCommandIdentity(e){if(e.protocol!==`ooxml-pull-v1`||e.sessionId!==this.options.sessionId||e.operationId!==this.options.operationId||e.generation!==this.options.generation||!Number.isSafeInteger(e.requestId)||e.requestId<=0)throw Error(`stale or mismatched pull session command`)}validateHostCredit(e){if(w(e,`byte credit`),e>this.options.maxByteCredit)throw RangeError(`byte credit exceeds host maximum`)}accepted(e,t,n=!1){return{kind:`accepted`,protocol:C,...n?{sessionId:e.sessionId,operationId:e.operationId,generation:e.generation}:this.identity(),requestId:e.requestId,command:t,usage:this.resourceUsage()}}identity(){return{sessionId:this.options.sessionId,operationId:this.options.operationId,generation:this.options.generation}}isStaleLifecycle(e){return(e.kind===`cancel`||e.kind===`close`)&&e.protocol===`ooxml-pull-v1`&&Number.isSafeInteger(e.requestId)&&e.requestId>0&&Number.isSafeInteger(e.generation)&&e.generation>0&&e.generation<this.options.generation}sameOperationIdentity(e){return e.sessionId===this.options.sessionId&&e.operationId===this.options.operationId}errorResponse(e,t){return{kind:`error`,protocol:C,sessionId:e.sessionId,operationId:e.operationId,generation:e.generation,requestId:e.requestId,error:t,usage:this.errorResourceUsage()}}async forceFatalCleanup(){this.cancelRequested=!0,this.unacked=void 0,this.coordinator.release(this.coordinatorOwner);let e;for(let t of[...this.leases.keys()])try{await this.release(t)}catch(t){e??=t}if(!this.driverCancelComplete)try{await this.options.driver.cancel?.(),this.driverCancelComplete=!0}catch(t){e??=t}if(e)throw e;this.unregisterCleanup()}allocateWireLeaseId(){if(!Number.isSafeInteger(this.nextWireLeaseId)||this.nextWireLeaseId<=0)throw RangeError(`wire lease id space exhausted`);return this.nextWireLeaseId++}arrayBufferTransferBytes(e){let t=0;for(let n of e??[])if(n instanceof ArrayBuffer&&(t+=n.byteLength,!Number.isSafeInteger(t)))throw RangeError(`ArrayBuffer transfer bytes overflow`);return t}maybeUnregisterCompleted(){this.completed&&this.leases.size===0&&this.unregisterCleanup()}resourceUsage(){return this.options.driver.resourceUsage?.()}errorResourceUsage(){try{return this.resourceUsage()}catch{return}}};function T(e,t){if(!Number.isSafeInteger(e)||e<0)throw Error(`${t} must be a non-negative safe integer`)}function E(e,t,n){return T(e,`resource measurement`),T(t,`resource measurement`),T(n,`resource measurement limit`),e>n||t>n||t>n-e?n===2**53-1?n:n+1:e+t}function Me(e,t=2**53-1){T(t,`resource measurement limit`);let n=0;for(let r=0;r<e.length;r+=1){let i=e.charCodeAt(r),a;if(i<=127)a=1;else if(i<=2047)a=2;else if(i>=55296&&i<=56319&&r+1<e.length){let t=e.charCodeAt(r+1);t>=56320&&t<=57343?(a=4,r+=1):a=3}else a=3;if(n=E(n,a,t),n>t)return n}return n}function Ne(e,t=2**53-1){T(t,`resource measurement limit`);let n=E(0,2,t);if(n>t)return n;for(let r=0;r<e.length;r+=1){let i=e.charCodeAt(r),a;if(i===34||i===92||i===8||i===9||i===10||i===12||i===13)a=2;else if(i<=31)a=6;else if(i<=127)a=1;else if(i<=2047)a=2;else if(i>=55296&&i<=56319&&r+1<e.length){let t=e.charCodeAt(r+1);t>=56320&&t<=57343?(a=4,r+=1):a=6}else a=i>=55296&&i<=57343?6:3;if(n=E(n,a,t),n>t)return n}return n}function D(e,t){return E(0,e,t)}function O(e,t=2**53-1,n=!1){if(T(t,`resource measurement limit`),e===null)return{jsonBytes:D(4,t),stringValueUtf8Bytes:0};if(typeof e==`string`)return{jsonBytes:Ne(e,t),stringValueUtf8Bytes:Me(e,t)};if(typeof e==`boolean`)return{jsonBytes:D(e?4:5,t),stringValueUtf8Bytes:0};if(typeof e==`number`)return{jsonBytes:D((Number.isFinite(e)?String(Object.is(e,-0)?0:e):`null`).length,t),stringValueUtf8Bytes:0};if(typeof e==`bigint`)throw TypeError(`BigInt values cannot be serialized to JSON`);if(Array.isArray(e)){let n=D(2,t),r=0;for(let i=0;i<e.length;i+=1){i!==0&&(n=E(n,1,t));let a=O(e[i],t,!0);n=E(n,a.jsonBytes,t),r=E(r,a.stringValueUtf8Bytes,t)}return{jsonBytes:n,stringValueUtf8Bytes:r}}if(typeof e==`object`){let n=D(2,t),r=0,i=0;for(let[a,o]of Object.entries(e)){if(o===void 0||typeof o==`function`||typeof o==`symbol`)continue;i++!==0&&(n=E(n,1,t)),n=E(n,Ne(a,t),t),n=E(n,1,t);let e=O(o,t);n=E(n,e.jsonBytes,t),r=E(r,e.stringValueUtf8Bytes,t)}return{jsonBytes:n,stringValueUtf8Bytes:r}}return{jsonBytes:n?D(4,t):0,stringValueUtf8Bytes:0}}({...o,...l});function*Pe(e){for(let t of e?.paragraphs??[])for(let e of t.runs)e.type===`text`&&(yield e.text)}function*Fe(e){for(let t of e?.paragraphs??[]){t.defFontFamily&&(yield t.defFontFamily);for(let e of t.runs)e.type===`text`&&(e.fontFamily&&(yield e.fontFamily),e.fontFamilyEa&&(yield e.fontFamilyEa),e.fontFamilySym&&(yield e.fontFamilySym))}}function*Ie(e){for(let t of e.elements)if(t.type===`shape`)yield*Pe(t.textBody);else if(t.type===`table`)for(let e of t.rows)for(let t of e.cells)yield*Pe(t.textBody);else if(t.type===`chart`){t.chart.title&&(yield t.chart.title);for(let e of t.chart.categories)yield e;for(let e of t.chart.series)e.name&&(yield e.name)}}var Le=class e{scripts;families;constructor(e,t,n,r){this.majorFont=e,this.minorFont=t;let i=s(e)??s(t)??null;this.scripts=n??new ee(i),this.families=r??new Set,e&&this.families.add(e),t&&this.families.add(t)}addSlide(e){this.scripts.addText(Ie(e));for(let t of e.elements)if(t.type===`shape`)for(let e of Fe(t.textBody))this.families.add(e);else if(t.type===`table`)for(let e of t.rows)for(let t of e.cells)for(let e of Fe(t.textBody))this.families.add(e)}names(){return[...this.families,...this.scripts.names()]}withSlide(t){let n=new e(this.majorFont,this.minorFont,this.scripts.clone(),new Set(this.families));return n.addSlide(t),n}};const k=Object.freeze({archiveEntryCount:0,declaredInflatedBytes:0,distinctInflatedBytes:0,operationInflatedBytes:0}),Re=67108864;function A(e,t){if(e!==null&&typeof e!=`string`)throw Error(`invalid PPTX presentation bootstrap ${t}`)}function ze(e,t){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`invalid PPTX presentation bootstrap slide at ${t}`);let n=e;if(n.index!==t)throw Error(`invalid PPTX presentation bootstrap slide index ${n.index}`);if(n.partName!==void 0&&typeof n.partName!=`string`)throw Error(`invalid PPTX presentation bootstrap slide partName at ${t}`);return Object.freeze({index:n.index,...n.partName===void 0?{}:{partName:n.partName}})}function Be(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`invalid PPTX presentation bootstrap payload`);let t=e;if(!Number.isSafeInteger(t.slideCount)||(t.slideCount??-1)<0||!Number.isSafeInteger(t.slideWidth)||(t.slideWidth??0)<=0||!Number.isSafeInteger(t.slideHeight)||(t.slideHeight??0)<=0||!Array.isArray(t.slides)||t.slides.length!==t.slideCount)throw Error(`invalid PPTX presentation bootstrap dimensions or slide count`);return A(t.defaultTextColor,`defaultTextColor`),A(t.majorFont,`majorFont`),A(t.minorFont,`minorFont`),A(t.hlinkColor,`hlinkColor`),A(t.folHlinkColor,`folHlinkColor`),Object.freeze({slideCount:t.slideCount,slideWidth:t.slideWidth,slideHeight:t.slideHeight,defaultTextColor:t.defaultTextColor,majorFont:t.majorFont,minorFont:t.minorFont,hlinkColor:t.hlinkColor,folHlinkColor:t.folHlinkColor,slides:Object.freeze(t.slides.map(ze))})}function Ve(e){return Object.freeze({type:`media`,x:e.x,y:e.y,width:e.width,height:e.height,rotation:e.rotation,flipH:e.flipH,flipV:e.flipV,mediaKind:e.mediaKind,posterPath:e.posterPath,posterMimeType:e.posterMimeType,mediaPath:e.mediaPath,mimeType:e.mimeType})}function He(e){return Object.freeze({...e.id===void 0?{}:{id:e.id},...e.authorId===void 0?{}:{authorId:e.authorId},...e.author===void 0?{}:{author:e.author},...e.date===void 0?{}:{date:e.date},...e.status===void 0?{}:{status:e.status},text:e.text})}function Ue(e){return Object.freeze({...e})}function We(e){return Object.freeze({...e.authorId===void 0?{}:{authorId:e.authorId},...e.modernAuthorId===void 0?{}:{modernAuthorId:e.modernAuthorId},...e.id===void 0?{}:{id:e.id},...e.index===void 0?{}:{index:e.index},...e.author===void 0?{}:{author:e.author},...e.date===void 0?{}:{date:e.date},...e.x===void 0?{}:{x:e.x},...e.y===void 0?{}:{y:e.y},...e.anchors?.length?{anchors:Object.freeze(e.anchors.map(Ue))}:{},...e.status===void 0?{}:{status:e.status},text:e.text,...e.replies?.length?{replies:Object.freeze(e.replies.map(He))}:{}})}function Ge(e,t){if(e.index!==t.index||e.partName!==t.partName)throw Error(`PPTX pulled slide identity does not match bootstrap index ${t.index}`);return Object.freeze({index:t.index,...t.partName===void 0?{}:{partName:t.partName},notes:e.notes??null,hidden:e.hidden??!1,mediaElements:Object.freeze(e.elements.filter(e=>e.type===`media`).map(Ve)),...e.comments?.length?{comments:Object.freeze(e.comments.map(We))}:{}})}function Ke(e,t,r){if(!(e<=t))throw new n(`PPTX presentation preflight exceeded its hard limit of ${t} projected bytes`,{stage:`parsing`,violation:{format:`pptx`,operation:`presentation-preflight`,resource:`presentation-preflight`,metric:`projected-bytes`,limit:t,observed:Math.min(e,t+1),configurable:!1,usage:r}})}var qe=class{slideCountValue;slideWidthValue;slideHeightValue;defaultTextColorValue;majorFontValue;minorFontValue;hlinkColorValue;folHlinkColorValue;descriptors;slides=[];fonts;fontPreloadNames;fontProjectionBytes;projectionBytesValue;limit;pending=null;finished=null;constructor(e,t={}){let n=Be(e),r=t.hardLimitForTesting??Re;if(!Number.isSafeInteger(r)||r<=0||r>Re)throw Error(`invalid PPTX presentation preflight test limit`);this.limit=r,this.slideCountValue=n.slideCount,this.slideWidthValue=n.slideWidth,this.slideHeightValue=n.slideHeight,this.defaultTextColorValue=n.defaultTextColor,this.majorFontValue=n.majorFont,this.minorFontValue=n.minorFont,this.hlinkColorValue=n.hlinkColor,this.folHlinkColorValue=n.folHlinkColor,this.descriptors=[...n.slides],this.fonts=new Le(this.majorFontValue,this.minorFontValue),this.fontPreloadNames=Object.freeze(this.fonts.names()),this.fontProjectionBytes=O(this.fontPreloadNames,this.limit).jsonBytes,this.projectionBytesValue=O({slideCount:this.slideCountValue,slideWidth:this.slideWidthValue,slideHeight:this.slideHeightValue,defaultTextColor:this.defaultTextColorValue,majorFont:this.majorFontValue,minorFont:this.minorFontValue,hlinkColor:this.hlinkColorValue,folHlinkColor:this.folHlinkColorValue,remainingSlides:this.descriptors,slides:[],fontPreloadNames:this.fontPreloadNames},this.limit).jsonBytes,Ke(this.projectionBytesValue,this.limit,k)}get acceptedSlideCount(){return this.finished?.slideCount??this.slides.length}get projectedBytes(){return this.projectionBytesValue}get remainingDescriptorCount(){return this.descriptors.reduce((e,t)=>e+Number(t!==void 0),0)}addSlide(e,t=k){this.prepareSlide(e,t).commit()}prepareSlide(e,t=k){if(this.finished)throw Error(`PPTX presentation preflight is already finished`);if(this.pending)throw Error(`PPTX presentation preflight already has a prepared slide`);let n=this.slides.length,r=this.descriptors[n];if(!r)throw Error(`PPTX presentation preflight received an extra slide`);let i=Ge(e,r),a=this.fonts.withSlide(e),o=Object.freeze(a.names()),s=O(o,this.limit).jsonBytes,c=O(i,this.limit).jsonBytes,l=this.projectionBytesValue-this.fontProjectionBytes-O(r,this.limit).jsonBytes+4;l=E(l,s,this.limit),l=E(l,c,this.limit),this.slides.length!==0&&(l=E(l,1,this.limit));let ee=O({slide:i,fontPreloadNames:o},this.limit).jsonBytes,u=E(this.projectionBytesValue,ee,this.limit);Ke(Math.max(u,l),this.limit,t);let d={state:`prepared`,fact:i,fonts:a,fontNames:o,fontBytes:s,committedBytes:l};return this.pending=d,{projectedBytes:u,commit:()=>{if(d.state!==`committed`){if(d.state===`rolled-back`)throw Error(`PPTX presentation preflight cannot commit a rolled-back slide`);if(this.pending!==d)throw Error(`PPTX presentation preflight prepared slide is stale`);this.descriptors[n]=void 0,this.slides.push(d.fact),this.fonts=d.fonts,this.fontPreloadNames=d.fontNames,this.fontProjectionBytes=d.fontBytes,this.projectionBytesValue=d.committedBytes,d.state=`committed`,this.pending=null}},rollback:()=>{if(d.state!==`rolled-back`){if(d.state===`committed`)throw Error(`PPTX presentation preflight cannot roll back a committed slide`);if(this.pending!==d)throw Error(`PPTX presentation preflight prepared slide is stale`);d.state=`rolled-back`,this.pending=null}}}}finish(){if(this.finished)return this.finished;if(this.pending)throw Error(`PPTX presentation preflight has an uncommitted slide`);if(this.slides.length!==this.slideCountValue)throw Error(`PPTX presentation preflight is incomplete: ${this.slides.length}/${this.slideCountValue} slides`);return this.finished=Object.freeze({slideCount:this.slideCountValue,slideWidth:this.slideWidthValue,slideHeight:this.slideHeightValue,defaultTextColor:this.defaultTextColorValue,majorFont:this.majorFontValue,minorFont:this.minorFontValue,hlinkColor:this.hlinkColorValue,folHlinkColor:this.folHlinkColorValue,slides:Object.freeze([...this.slides]),fontPreloadNames:this.fontPreloadNames}),this.descriptors=[],this.slides=[],this.projectionBytesValue=O(this.finished,this.limit).jsonBytes,this.finished}};function j(e){try{return h(e(e=>e.slide_cursor_resource_usage()))}catch(e){if(String(e).includes(`slide cursor usage is unavailable`))return;throw e}}function Je(e,t,n,r,i){let a,o;try{if(i){if(!r)throw Error(`slide payload is missing before acknowledgement`);let t=i(n,r,j(e));typeof t==`function`?a=t:t&&({rollback:a,commit:o}=t)}e(e=>e.acknowledge_slide(t.operationId,t.generation)),o?.()}catch(e){try{a?.()}catch{}throw e}}var Ye=class{coordinatorGeneration=new Ae;sessions=new Map;pendingOpens=new Map;operationTail=Promise.resolve();resourceFailure;lifecycleState=`ready`;resetBarrier;resetIdentities=new Map;constructor(e,t,n=e=>e(this.requireArchive())){this.archive=e,this.acceptSlide=t,this.executeArchive=n}get coordinator(){return this.coordinatorGeneration}reserveOpen(e){if(this.assertReady(),Ze(e),this.pendingOpens.has(e.sessionId)||this.sessions.has(e.sessionId))throw Error(`slide pull session id is already reserved`);this.pendingOpens.set(e.sessionId,{identity:e,canceled:!1})}abandonOpen(e){this.pendingOpens.delete(e)}get pendingOpenCount(){return this.pendingOpens.size}async open(e,t){if(this.assertReady(),this.resourceFailure)throw this.resourceFailure;if(!Number.isSafeInteger(e)||e<0)throw RangeError(`slide index must be a non-negative safe integer`);let n=this.pendingOpens.get(t.sessionId);if(!n||!M(n.identity,t))throw Error(`slide pull session open reservation is stale or missing`);let r,i=new Promise(e=>{r=e}),a=this.operationTail.then(()=>this.coordinator.enqueue(async()=>{if(n.canceled)throw Error(`slide pull session open was canceled`);let i,a=!1,o=new je({...t,maxByteCredit:S,coordinator:this.coordinator,driver:{pull:n=>{let r;try{r=this.executeArchive(r=>r.pull_slide(e,t.operationId,t.generation,n))}catch(e){throw fe(e,n,S)||(this.latchResourceFailure(e),e)}let o=De(r);return this.acceptSlide&&(i=JSON.parse(new TextDecoder().decode(new Uint8Array(o)))),a=!0,{payload:o,byteLength:o.byteLength,done:!0,transfer:[o]}},measureChunk:({payload:e})=>e.byteLength,acknowledge:()=>{if(!a)throw Error(`slide unit is not awaiting acknowledgement`);try{Je(this.executeArchive,t,e,i,this.acceptSlide)}catch(e){throw this.latchResourceFailure(e),e}a=!1,i=void 0,this.sessions.delete(t.sessionId),r()},cancel:async()=>{try{this.archive()&&await this.executeArchive(e=>e.cancel_slide())}finally{i=void 0,a=!1,this.sessions.delete(t.sessionId),r()}},close:async()=>{try{this.archive()&&await this.executeArchive(e=>e.cancel_slide())}finally{i=void 0,a=!1,this.sessions.delete(t.sessionId),r()}},resourceUsage:()=>{try{return this.readResourceUsage()}catch(e){throw this.latchResourceFailure(e),e}}}});this.sessions.set(t.sessionId,{host:o,identity:t}),this.pendingOpens.delete(t.sessionId)}));this.operationTail=a.then(()=>i,()=>void 0);try{await a}catch(e){throw this.pendingOpens.delete(t.sessionId),r(),e}}async postOpenedSafely(e,t,n){if(this.lifecycleState!==`ready`){try{n(this.lifecycleError())}catch{}return}try{t()}catch(t){await this.closeIdentity(e);try{n(t)}catch{}}}dispatch(e,t){if(this.lifecycleState!==`ready`)return t(this.responseDuringReset(e)),Promise.resolve();let n=this.sessions.get(e.sessionId);if(n)return n.host.dispatch(e,t);let r=this.pendingOpens.get(e.sessionId);if(r&&(e.kind===`cancel`||e.kind===`close`)){let n=M(r.identity,e);return n&&(r.canceled=!0),t(n?{protocol:C,kind:`accepted`,sessionId:e.sessionId,operationId:e.operationId,generation:e.generation,requestId:e.requestId,command:e.kind}:this.staleLifecycleResponse(e)),Promise.resolve()}return e.kind===`cancel`||e.kind===`close`?(t({protocol:C,kind:`accepted`,sessionId:e.sessionId,operationId:e.operationId,generation:e.generation,requestId:e.requestId,command:e.kind}),Promise.resolve()):(t({protocol:C,kind:`error`,sessionId:e.sessionId,operationId:e.operationId,generation:e.generation,requestId:e.requestId,error:x(Error(`slide pull session is not open`))}),Promise.resolve())}async dispatchSafely(e,t){try{await this.dispatch(e,t)}catch(n){try{t({protocol:C,kind:`error`,sessionId:e.sessionId,operationId:e.operationId,generation:e.generation,requestId:e.requestId,error:x(n)})}catch{}}}run(e){if(this.lifecycleState!==`ready`)return Promise.reject(this.lifecycleError());let t=this.operationTail.then(()=>this.coordinator.enqueue(async()=>{if(this.resourceFailure)throw this.resourceFailure;return e()})).catch(e=>{throw this.latchResourceFailure(e),e});return this.operationTail=t.then(()=>void 0,()=>void 0),t}reset(){if(this.resetBarrier)return this.resetBarrier;this.lifecycleState=`resetting`,this.captureResetIdentities();let e=this.performReset().then(()=>{this.resetIdentities.clear(),this.lifecycleState=`ready`},e=>{throw this.lifecycleState=`reset-failed`,e}).finally(()=>{this.resetBarrier===e&&(this.resetBarrier=void 0)});return this.resetBarrier=e,e}async performReset(){for(let e of this.pendingOpens.values())e.canceled=!0;let e=1;for(let{host:t,identity:n}of[...this.sessions.values()]){let r;if(await t.dispatch({protocol:C,kind:`close`,...n,requestId:e++},e=>{e.kind===`error`&&(r=Ee(e.error))}),r)throw r}this.sessions.clear(),await this.operationTail,this.pendingOpens.clear(),this.archive()&&await this.executeArchive(e=>e.close_presentation_session()),this.coordinatorGeneration=new Ae,this.resourceFailure=void 0}assertReady(){if(this.lifecycleState!==`ready`)throw this.lifecycleError()}lifecycleError(){let e=this.lifecycleState===`reset-failed`,t=Error(e?`slide pull worker reset failed; retry reset before new work`:`slide pull worker reset is in progress`);return t.name=`PullSessionLifecycleError`,Object.assign(t,{code:e?`ooxml-pull-reset-failed`:`ooxml-pull-resetting`})}captureResetIdentities(){for(let{identity:e}of this.sessions.values())this.resetIdentities.set(e.sessionId,e);for(let{identity:e}of this.pendingOpens.values())this.resetIdentities.set(e.sessionId,e)}responseDuringReset(e){if(e.kind===`cancel`||e.kind===`close`){let t=this.resetIdentities.get(e.sessionId);return t&&!M(t,e)?this.staleLifecycleResponse(e):{protocol:C,kind:`accepted`,sessionId:e.sessionId,operationId:e.operationId,generation:e.generation,requestId:e.requestId,command:e.kind}}return{protocol:C,kind:`error`,sessionId:e.sessionId,operationId:e.operationId,generation:e.generation,requestId:e.requestId,error:x(this.lifecycleError())}}requireArchive(){let e=this.archive();if(!e)throw Error(`Presentation not loaded`);return e}async closeIdentity(e){if(this.lifecycleState!==`ready`)return;let t=this.sessions.get(e.sessionId);if(t){await t.host.dispatch({protocol:C,kind:`close`,...e,requestId:1},()=>void 0);return}let n=this.pendingOpens.get(e.sessionId);n&&M(n.identity,e)&&(n.canceled=!0)}readResourceUsage(){return j(this.executeArchive)}latchResourceFailure(e){let t=e instanceof n?e:b(e);t&&(this.resourceFailure??=t)}staleLifecycleResponse(e){return{protocol:C,kind:`error`,sessionId:e.sessionId,operationId:e.operationId,generation:e.generation,requestId:e.requestId,error:{message:`stale lifecycle targets another slide operation`,errorName:`PullSessionProtocolError`,code:`ooxml-stale-lifecycle`}}}};function Xe(e){return!!e&&typeof e==`object`&&e.protocol===`ooxml-pull-v1`}function Ze(e){if(!Number.isSafeInteger(e.sessionId)||e.sessionId<=0)throw RangeError(`session id must be a positive safe integer`);if(!Number.isSafeInteger(e.operationId)||e.operationId<=0)throw RangeError(`operation id must be a positive safe integer`);if(!Number.isSafeInteger(e.generation)||e.generation<=0)throw RangeError(`generation must be a positive safe integer`)}function M(e,t){return e.sessionId===t.sessionId&&e.operationId===t.operationId&&e.generation===t.generation}var N=class{__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,P.unregister(this),e}free(){let e=this.__destroy_into_raw();J.__wbg_pptxarchive_free(e,0)}acknowledge_slide(e,t){let n=J.pptxarchive_acknowledge_slide(this.__wbg_ptr,e,t);if(n[1])throw U(n[0])}assert_healthy(){let e=J.pptxarchive_assert_healthy(this.__wbg_ptr);if(e[1])throw U(e[0])}cancel_slide(){J.pptxarchive_cancel_slide(this.__wbg_ptr)}close_presentation_session(){J.pptxarchive_close_presentation_session(this.__wbg_ptr)}extract_image(e){let t=H(e,J.__wbindgen_malloc,J.__wbindgen_realloc),n=q,r=J.pptxarchive_extract_image(this.__wbg_ptr,t,n);if(r[3])throw U(r[2]);var i=F(r[0],r[1]).slice();return J.__wbindgen_free(r[0],r[1]*1,1),i}extract_media(e){let t=H(e,J.__wbindgen_malloc,J.__wbindgen_realloc),n=q,r=J.pptxarchive_extract_media(this.__wbg_ptr,t,n);if(r[3])throw U(r[2]);var i=F(r[0],r[1]).slice();return J.__wbindgen_free(r[0],r[1]*1,1),i}constructor(e,t,n,r){let i=$e(e,J.__wbindgen_malloc),a=q,o=J.pptxarchive_new(i,a,!V(t),V(t)?BigInt(0):t,!V(n),V(n)?BigInt(0):n,!V(r),V(r)?BigInt(0):r);if(o[2])throw U(o[1]);return this.__wbg_ptr=o[0]>>>0,P.register(this,this.__wbg_ptr,this),this}parse(){let e=J.pptxarchive_parse(this.__wbg_ptr);if(e[3])throw U(e[2]);var t=F(e[0],e[1]).slice();return J.__wbindgen_free(e[0],e[1]*1,1),t}presentation_bootstrap(){let e=J.pptxarchive_presentation_bootstrap(this.__wbg_ptr);if(e[3])throw U(e[2]);var t=F(e[0],e[1]).slice();return J.__wbindgen_free(e[0],e[1]*1,1),t}pull_slide(e,t,n,r){let i=J.pptxarchive_pull_slide(this.__wbg_ptr,e,t,n,r);if(i[3])throw U(i[2]);var a=F(i[0],i[1]).slice();return J.__wbindgen_free(i[0],i[1]*1,1),a}resource_usage(){let e=J.pptxarchive_resource_usage(this.__wbg_ptr);if(e[3])throw U(e[2]);var t=F(e[0],e[1]).slice();return J.__wbindgen_free(e[0],e[1]*1,1),t}slide_cursor_resource_usage(){let e=J.pptxarchive_slide_cursor_resource_usage(this.__wbg_ptr);if(e[3])throw U(e[2]);var t=F(e[0],e[1]).slice();return J.__wbindgen_free(e[0],e[1]*1,1),t}to_markdown(){let e,t;try{let i=J.pptxarchive_to_markdown(this.__wbg_ptr);var n=i[0],r=i[1];if(i[3])throw n=0,r=0,U(i[2]);return e=n,t=r,R(n,r)}finally{J.__wbindgen_free(e,t,1)}}};Symbol.dispose&&(N.prototype[Symbol.dispose]=N.prototype.free);function Qe(){return{__proto__:null,\"./pptx_parser_bg.js\":{__proto__:null,__wbg___wbindgen_throw_6b64449b9b9ed33c:function(e,t){throw Error(R(e,t))},__wbg_error_a6fa202b58aa1cd3:function(e,t){let n,r;try{n=e,r=t,console.error(R(e,t))}finally{J.__wbindgen_free(n,r,1)}},__wbg_new_227d7c05414eb861:function(){return Error()},__wbg_stack_3b0d974bbf31e44f:function(e,t){let n=t.stack,r=H(n,J.__wbindgen_malloc,J.__wbindgen_realloc),i=q;L().setInt32(e+4,i,!0),L().setInt32(e+0,r,!0)},__wbindgen_cast_0000000000000001:function(e,t){return R(e,t)},__wbindgen_init_externref_table:function(){let e=J.__wbindgen_externrefs,t=e.grow(4);e.set(0,void 0),e.set(t+0,void 0),e.set(t+1,null),e.set(t+2,!0),e.set(t+3,!1)}}}}const P=typeof FinalizationRegistry>`u`?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(e=>J.__wbg_pptxarchive_free(e>>>0,1));function F(e,t){return e>>>=0,B().subarray(e/1,e/1+t)}let I=null;function L(){return(I===null||I.buffer.detached===!0||I.buffer.detached===void 0&&I.buffer!==J.memory.buffer)&&(I=new DataView(J.memory.buffer)),I}function R(e,t){return e>>>=0,et(e,t)}let z=null;function B(){return(z===null||z.byteLength===0)&&(z=new Uint8Array(J.memory.buffer)),z}function V(e){return e==null}function $e(e,t){let n=t(e.length*1,1)>>>0;return B().set(e,n/1),q=e.length,n}function H(e,t,n){if(n===void 0){let n=K.encode(e),r=t(n.length,1)>>>0;return B().subarray(r,r+n.length).set(n),q=n.length,r}let r=e.length,i=t(r,1)>>>0,a=B(),o=0;for(;o<r;o++){let t=e.charCodeAt(o);if(t>127)break;a[i+o]=t}if(o!==r){o!==0&&(e=e.slice(o)),i=n(i,r,r=o+e.length*3,1)>>>0;let t=B().subarray(i+o,i+r),a=K.encodeInto(e,t);o+=a.written,i=n(i,r,o,1)>>>0}return q=o,i}function U(e){let t=J.__wbindgen_externrefs.get(e);return J.__externref_table_dealloc(e),t}let W=new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0});W.decode();let G=0;function et(e,t){return G+=t,G>=2146435072&&(W=new TextDecoder(`utf-8`,{ignoreBOM:!0,fatal:!0}),W.decode(),G=t),W.decode(B().subarray(e,e+t))}const K=new TextEncoder;`encodeInto`in K||(K.encodeInto=function(e,t){let n=K.encode(e);return t.set(n),{read:e.length,written:n.length}});let q=0,J;function tt(e,t){return J=e.exports,I=null,z=null,J.__wbindgen_start(),J}async function nt(e,t){if(typeof Response==`function`&&e instanceof Response){if(typeof WebAssembly.instantiateStreaming==`function`)try{return await WebAssembly.instantiateStreaming(e,t)}catch(t){if(e.ok&&n(e.type)&&e.headers.get(`Content-Type`)!==`application/wasm`)console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\",t);else throw t}let r=await e.arrayBuffer();return await WebAssembly.instantiate(r,t)}else{let n=await WebAssembly.instantiate(e,t);return n instanceof WebAssembly.Instance?{instance:n,module:e}:n}function n(e){switch(e){case`basic`:case`cors`:case`default`:return!0}return!1}}async function rt(e){if(J!==void 0)return J;e!==void 0&&(Object.getPrototypeOf(e)===Object.prototype?{module_or_path:e}=e:console.warn(`using deprecated parameters for the initialization function; pass a single object instead`));let t=Qe();(typeof e==`string`||typeof Request==`function`&&e instanceof Request||typeof URL==`function`&&e instanceof URL)&&(e=fetch(e));let{instance:n,module:r}=await nt(await e,t);return tt(n,r)}async function it(e){return J=void 0,I=null,z=null,rt(e)}const Y=new ce(rt,{freeArchive:e=>e.free(),reinit:it});let X=null,Z=`empty`;function at(){if(Z!==`empty`){let e=Error(`this PPTX worker already owns a presentation parse`);throw e.name=`PptxWorkerStateError`,Object.assign(e,{code:`ooxml-pptx-parse-already-started`})}Z=`opening`}const Q=new Ye(()=>Y.archive,(e,t,n)=>{if(X){if(e!==X.acceptedSlideCount)throw Error(`PPTX preflight expected slide ${X.acceptedSlideCount}, received ${e}`);return X.prepareSlide(t,n)}},e=>{let t=Y.archive;if(!t)throw Error(`Presentation not loaded`);return Y.run(()=>e(t))}),$=(e,t)=>self.postMessage(e,t);self.onmessage=async e=>{let t=e.data;if(Xe(t)){await Q.dispatchSafely(t,$);return}if(t.kind===`init`){Y.setWasmInput(ne(t.wasmUrl)??t.wasmUrl);return}let n=t.id,r=!1;try{if(t.kind===`openSlideSession`&&Q.reserveOpen(t),t.kind===`parse`&&(at(),r=!0),t.kind===`openSlideSession`){await Y.ensureReady(),await Q.open(t.slideIndex,t),await Q.postOpenedSafely(t,()=>$({kind:`slideSessionOpened`,id:n,sessionId:t.sessionId,operationId:t.operationId,generation:t.generation}),e=>$({kind:`error`,id:n,...x(e)}));return}t.kind===`parse`&&await Q.reset(),await Q.run(async()=>{if(await Y.ensureReady(),t.kind!==`parse`&&Y.archive){let e=Y.archive;Y.run(()=>e.assert_healthy())}if(t.kind===`parse`){X=null;let[e,r,i]=Oe(t.resourcePolicy),a=Y.run(()=>{let n=new N(new Uint8Array(t.buffer),e,r,i);return Y.setArchive(n),JSON.parse(new TextDecoder().decode(n.presentation_bootstrap()))});X=new qe(a),$({kind:`presentationOpened`,id:n,bootstrap:a}),Z=`ready`;return}let e=Y.archive;if(!e)throw Error(`No pptx loaded`);if(t.kind===`finishPresentationPreflight`){if(!X)throw Error(`PPTX presentation preflight is not active`);let e=X.finish();X=null,$({kind:`presentationPreflightReady`,id:n,preflight:e});return}if(t.kind===`extractMedia`){let r=Y.run(()=>e.extract_media(t.path).buffer);$({kind:`mediaExtracted`,id:n,bytes:r},[r]);return}if(t.kind===`extractImage`){let r=Y.run(()=>e.extract_image(t.path).buffer);$({kind:`imageExtracted`,id:n,bytes:r},[r]);return}if(t.kind===`resourceUsage`){$({kind:`resourceUsage`,id:n,usage:h(Y.run(()=>e.resource_usage()))});return}t.kind===`toMarkdown`&&$({kind:`markdownRendered`,id:n,markdown:Y.run(()=>e.to_markdown())})})}catch(e){r&&(Z=`failed`),t.kind===`openSlideSession`&&Q.abandonOpen(t.sessionId);try{$({kind:`error`,id:n,...x(e)})}catch{}}};", at = typeof self < "u" && self.Blob && new Blob(["URL.revokeObjectURL(import.meta.url);", it], { type: "text/javascript;charset=utf-8" });
548
+ function ot(e) {
546
549
  let t;
547
550
  try {
548
- if (t = et && (self.URL || self.webkitURL).createObjectURL(et), !t) throw "";
551
+ if (t = at && (self.URL || self.webkitURL).createObjectURL(at), !t) throw "";
549
552
  let n = new Worker(t, {
550
553
  type: "module",
551
554
  name: e?.name
@@ -554,7 +557,7 @@ function tt(e) {
554
557
  (self.URL || self.webkitURL).revokeObjectURL(t);
555
558
  }), n;
556
559
  } catch {
557
- return new Worker("data:text/javascript;charset=utf-8," + encodeURIComponent($e), {
560
+ return new Worker("data:text/javascript;charset=utf-8," + encodeURIComponent(it), {
558
561
  type: "module",
559
562
  name: e?.name
560
563
  });
@@ -562,24 +565,24 @@ function tt(e) {
562
565
  }
563
566
  //#endregion
564
567
  //#region packages/pptx/src/wasm/pptx_parser_bg.wasm?url
565
- var nt = new URL("pptx_parser_bg.wasm", import.meta.url).href, J = 65536, rt = 16384, it = new Set(["line", "straightconnector1"]);
566
- function at(e, t) {
568
+ var st = new URL("pptx_parser_bg.wasm", import.meta.url).href, K = 65536, ct = 16384, lt = new Set(["line", "straightconnector1"]);
569
+ function ut(e, t) {
567
570
  let n = e.x + e.width / 2, r = e.y + e.height / 2, i = -e.rotation * Math.PI / 180, a = Math.cos(i), o = Math.sin(i), s = t.x - n, c = t.y - r, l = n + a * s - o * c, u = r + o * s + a * c;
568
571
  return e.flipH && (l = 2 * n - l), e.flipV && (u = 2 * r - u), {
569
572
  x: l,
570
573
  y: u
571
574
  };
572
575
  }
573
- function ot(e, t, n) {
576
+ function dt(e, t, n) {
574
577
  let r = n.x - t.x, i = n.y - t.y, a = r * r + i * i;
575
578
  if (a === 0) return Math.hypot(e.x - t.x, e.y - t.y);
576
579
  let o = Math.max(0, Math.min(1, ((e.x - t.x) * r + (e.y - t.y) * i) / a));
577
580
  return Math.hypot(e.x - (t.x + o * r), e.y - (t.y + o * i));
578
581
  }
579
- function st(e, t, n = 0) {
582
+ function ft(e, t, n = 0) {
580
583
  if (!Number.isFinite(t.x) || !Number.isFinite(t.y)) return !1;
581
- let r = at(e, t), i = Number.isFinite(n) && n > 0 ? n : 0;
582
- if (e.type === "shape" && (it.has(e.geometry.toLowerCase()) || e.width === 0 || e.height === 0)) return ot(r, {
584
+ let r = ut(e, t), i = Number.isFinite(n) && n > 0 ? n : 0;
585
+ if (e.type === "shape" && (lt.has(e.geometry.toLowerCase()) || e.width === 0 || e.height === 0)) return dt(r, {
583
586
  x: e.x,
584
587
  y: e.y
585
588
  }, {
@@ -589,7 +592,7 @@ function st(e, t, n = 0) {
589
592
  let a = Math.min(e.x, e.x + e.width), o = Math.max(e.x, e.x + e.width), s = Math.min(e.y, e.y + e.height), c = Math.max(e.y, e.y + e.height);
590
593
  return r.x >= a && r.x <= o && r.y >= s && r.y <= c;
591
594
  }
592
- function* ct(e) {
595
+ function* pt(e) {
593
596
  if (e) for (let t of e.paragraphs) {
594
597
  let e = !0;
595
598
  for (let n of t.runs) {
@@ -601,17 +604,17 @@ function* ct(e) {
601
604
  }
602
605
  }
603
606
  }
604
- function* lt(e) {
607
+ function* mt(e) {
605
608
  if (e.type === "shape") {
606
- yield* ct(e.textBody);
609
+ yield* pt(e.textBody);
607
610
  return;
608
611
  }
609
612
  if (e.type === "table") {
610
- for (let t of e.rows) for (let e of t.cells) yield* ct(e.textBody);
613
+ for (let t of e.rows) for (let e of t.cells) yield* pt(e.textBody);
611
614
  return;
612
615
  }
613
616
  }
614
- function ut(e, t) {
617
+ function ht(e, t) {
615
618
  let n = Math.min(e.length, t);
616
619
  if (n > 0 && n < e.length) {
617
620
  let t = e.charCodeAt(n - 1), r = e.charCodeAt(n);
@@ -619,9 +622,9 @@ function ut(e, t) {
619
622
  }
620
623
  return e.slice(0, n);
621
624
  }
622
- function dt(e, t = rt) {
625
+ function gt(e, t = ct) {
623
626
  if (!Number.isFinite(t) || t < 0) throw RangeError("maxTextCharacters must be a finite non-negative number.");
624
- let n = Math.min(J, Math.floor(t)), r = e.text, i = r === void 0 ? void 0 : ut(r, n), a = r !== void 0 && i.length < r.length;
627
+ let n = Math.min(K, Math.floor(t)), r = e.text, i = r === void 0 ? void 0 : ht(r, n), a = r !== void 0 && i.length < r.length;
625
628
  return {
626
629
  ...structuredClone(e),
627
630
  ...i === void 0 ? {} : { text: i },
@@ -631,7 +634,7 @@ function dt(e, t = rt) {
631
634
  maxTextCharacters: n
632
635
  };
633
636
  }
634
- function ft(e, t) {
637
+ function _t(e, t) {
635
638
  let n = [], r = 0, i = !1, a = !1;
636
639
  for (let o of e) {
637
640
  if (a = !0, o.beginsPart && n.length > 0) {
@@ -641,7 +644,7 @@ function ft(e, t) {
641
644
  }
642
645
  n.push("\n"), r++;
643
646
  }
644
- let e = Math.max(0, t - r), s = ut(o.text, e);
647
+ let e = Math.max(0, t - r), s = ht(o.text, e);
645
648
  if (n.push(s), r += s.length, s.length < o.text.length) {
646
649
  i = !0;
647
650
  break;
@@ -656,16 +659,16 @@ function ft(e, t) {
656
659
  textCharacters: 0
657
660
  };
658
661
  }
659
- function pt(e, t, n, r = {}) {
662
+ function vt(e, t, n, r = {}) {
660
663
  if (!Number.isFinite(n.x) || !Number.isFinite(n.y)) throw RangeError("PPTX hit-test point must contain finite coordinates.");
661
- let i = r.maxTextCharacters ?? rt;
664
+ let i = r.maxTextCharacters ?? ct;
662
665
  if (!Number.isFinite(i) || i < 0) throw RangeError("maxTextCharacters must be a finite non-negative number.");
663
- let a = Math.min(J, Math.floor(i)), o = r.tolerance ?? 0;
666
+ let a = Math.min(K, Math.floor(i)), o = r.tolerance ?? 0;
664
667
  if (!Number.isFinite(o) || o < 0) throw RangeError("tolerance must be a finite non-negative number.");
665
668
  for (let r = t.elements.length - 1; r >= 0; r--) {
666
669
  let i = t.elements[r];
667
- if (!st(i, n, o)) continue;
668
- let s = i.type === "chart" ? ae(i.chart, a) : ft(lt(i), a);
670
+ if (!ft(i, n, o)) continue;
671
+ let s = i.type === "chart" ? ae(i.chart, a) : _t(mt(i), a);
669
672
  return {
670
673
  format: "pptx",
671
674
  kind: "element",
@@ -707,9 +710,38 @@ function pt(e, t, n, r = {}) {
707
710
  }
708
711
  return null;
709
712
  }
713
+ function yt(e, t) {
714
+ let n = new Set(t.filter((e) => e.length > 0));
715
+ if (n.size === 0) return Object.freeze([]);
716
+ let r = /* @__PURE__ */ new Map();
717
+ for (let [t, i] of e.elements.entries()) {
718
+ let a = i.id;
719
+ if (!a || !n.has(a)) continue;
720
+ let o = e.elementSources?.[t]?.origin ?? "unknown", s = o === "slide" ? 3 : o === "layout" ? 2 : +(o === "master"), c = r.get(a), l = c?.origin === "slide" ? 3 : c?.origin === "layout" ? 2 : +(c?.origin === "master");
721
+ c && l > s || r.set(a, Object.freeze({
722
+ elementId: a,
723
+ elementIndex: t,
724
+ origin: o,
725
+ elementType: i.type,
726
+ bounds: Object.freeze({
727
+ x: i.x,
728
+ y: i.y,
729
+ width: i.width,
730
+ height: i.height,
731
+ rotation: i.rotation,
732
+ flipH: i.flipH,
733
+ flipV: i.flipV
734
+ })
735
+ }));
736
+ }
737
+ return Object.freeze(t.flatMap((e) => {
738
+ let t = r.get(e);
739
+ return t ? [t] : [];
740
+ }));
741
+ }
710
742
  //#endregion
711
743
  //#region packages/pptx/src/presentation.ts
712
- var Y = class e {
744
+ var q = class e {
713
745
  _metrics = null;
714
746
  _worker;
715
747
  _bridge;
@@ -719,7 +751,7 @@ var Y = class e {
719
751
  _slidePullClient = null;
720
752
  _resourceFailure = null;
721
753
  _slidePartIndex = null;
722
- _rawParts = new Se({
754
+ _rawParts = new Ce({
723
755
  maxEntries: 64,
724
756
  maxBytes: S
725
757
  });
@@ -735,7 +767,7 @@ var Y = class e {
735
767
  correlate: (e) => "protocol" in e && e.protocol === "ooxml-pull-v1" ? e.requestId : "id" in e ? e.id : void 0,
736
768
  toError: (e) => !("protocol" in e) && e.kind === "error" ? b(e) : void 0
737
769
  });
738
- let r = new URL(n ?? nt, location.href).href;
770
+ let r = new URL(n ?? st, location.href).href;
739
771
  this._bridge.post({
740
772
  kind: "init",
741
773
  wasmUrl: r
@@ -766,9 +798,9 @@ var Y = class e {
766
798
  s = await e.arrayBuffer();
767
799
  } else s = t;
768
800
  s = ee(await ne(s, n.password)), a.setSourceBytes(s.byteLength), a.checkpoint("container ready");
769
- let c = i === "worker" ? (await import("./render-worker-host-B1nbV_k7.js")).createRenderWorker() : new tt(), l = i === "worker" ? Ee(n) : void 0, u;
801
+ let c = i === "worker" ? (await import("./render-worker-host-BNnXCtAu.js")).createRenderWorker() : new ot(), l = i === "worker" ? De(n) : void 0, u;
770
802
  try {
771
- return u = new e(c, i, n.wasmUrl), u._metrics = a, n.math && i === "worker" && !l?.math && console.warn("[ooxml] a custom math renderer cannot cross the worker boundary; equations will be skipped in mode: 'worker'. Use the math renderer from @silurus/ooxml/math."), n.threeD && i === "worker" && !l?.threeD && console.warn("[ooxml] a custom 3-D chart renderer cannot cross the worker boundary; charts use their 2-D family fallback in mode: 'worker'. Use the renderer from @silurus/ooxml/three-d."), u._math = i === "worker" ? void 0 : n.math, u._threeD = i === "worker" ? void 0 : n.threeD, n.regionMap && i === "worker" && !l?.regionMap && console.warn("[ooxml] a custom Region Map renderer cannot cross the worker boundary; geospatial charts use the unsupported-chart placeholder in mode: 'worker'. Use the renderer from @silurus/ooxml/region-map."), u._regionMap = i === "worker" ? void 0 : n.regionMap, n.chartEx && i === "worker" && !l?.chartEx && console.warn("[ooxml] a custom ChartEx renderer cannot cross the worker boundary; ChartEx charts use the unsupported-chart placeholder in mode: 'worker'. Use the renderer from @silurus/ooxml/chart-ex."), u._chartEx = i === "worker" ? void 0 : n.chartEx, await u._parse(s, r.policy, i === "worker" ? !!n.useGoogleFonts : !1, n.workerTimeoutMs, (e) => a.observeUsage(e), l), a.checkpoint("presentation preflight ready"), i === "main" && n.useGoogleFonts && u._preflight && (u._googleFontFaces = await be(u._preflight.fontPreloadNames, o)), a.succeed({ slides: u.slideCount }), u;
803
+ return u = new e(c, i, n.wasmUrl), u._metrics = a, n.math && i === "worker" && !l?.math && console.warn("[ooxml] a custom math renderer cannot cross the worker boundary; equations will be skipped in mode: 'worker'. Use the math renderer from @silurus/ooxml/math."), n.threeD && i === "worker" && !l?.threeD && console.warn("[ooxml] a custom 3-D chart renderer cannot cross the worker boundary; charts use their 2-D family fallback in mode: 'worker'. Use the renderer from @silurus/ooxml/three-d."), u._math = i === "worker" ? void 0 : n.math, u._threeD = i === "worker" ? void 0 : n.threeD, n.regionMap && i === "worker" && !l?.regionMap && console.warn("[ooxml] a custom Region Map renderer cannot cross the worker boundary; geospatial charts use the unsupported-chart placeholder in mode: 'worker'. Use the renderer from @silurus/ooxml/region-map."), u._regionMap = i === "worker" ? void 0 : n.regionMap, n.chartEx && i === "worker" && !l?.chartEx && console.warn("[ooxml] a custom ChartEx renderer cannot cross the worker boundary; ChartEx charts use the unsupported-chart placeholder in mode: 'worker'. Use the renderer from @silurus/ooxml/chart-ex."), u._chartEx = i === "worker" ? void 0 : n.chartEx, await u._parse(s, r.policy, i === "worker" ? !!n.useGoogleFonts : !1, n.workerTimeoutMs, (e) => a.observeUsage(e), l), a.checkpoint("presentation preflight ready"), i === "main" && n.useGoogleFonts && u._preflight && (u._googleFontFaces = await xe(u._preflight.fontPreloadNames, o)), a.succeed({ slides: u.slideCount }), u;
772
804
  } catch (e) {
773
805
  let t = u;
774
806
  throw te(c, t ? () => t.destroy() : void 0), e;
@@ -814,7 +846,7 @@ var Y = class e {
814
846
  this._preflight = t((await this._bridge.request((e) => ({
815
847
  kind: "finishPresentationPreflight",
816
848
  id: e
817
- }), void 0, { timeoutMs: o })).preflight), this._slides = new Ze({
849
+ }), void 0, { timeoutMs: o })).preflight), this._slides = new nt({
818
850
  slideCount: this._preflight.slideCount,
819
851
  maxCachedSlides: 8,
820
852
  maxCachedStructuralBytes: p,
@@ -840,6 +872,9 @@ var Y = class e {
840
872
  getNotes(e) {
841
873
  return Number.isInteger(e) ? this._preflight?.slides[e]?.notes ?? null : null;
842
874
  }
875
+ getComments(e) {
876
+ return Number.isInteger(e) ? this._preflight?.slides[e]?.comments ?? [] : [];
877
+ }
843
878
  isHidden(e) {
844
879
  return Number.isInteger(e) ? this._preflight?.slides[e]?.hidden ?? !1 : !1;
845
880
  }
@@ -847,13 +882,13 @@ var Y = class e {
847
882
  return (this._preflight?.slides ?? []).map((e) => e.partName);
848
883
  }
849
884
  _partIndex() {
850
- return this._slidePartIndex ||= Je(this._partNames()), this._slidePartIndex;
885
+ return this._slidePartIndex ||= $e(this._partNames()), this._slidePartIndex;
851
886
  }
852
887
  getSlideIndexByPartName(e) {
853
888
  return this._partIndex().get(e);
854
889
  }
855
890
  resolveInternalTarget(e, t = 0) {
856
- return Xe(e, this._partIndex(), t);
891
+ return tt(e, this._partIndex(), t);
857
892
  }
858
893
  async renderSlide(e, t, r = {}) {
859
894
  this._assertResourceHealthy();
@@ -944,7 +979,24 @@ var Y = class e {
944
979
  options: n
945
980
  }))).context;
946
981
  if (!this._slides) throw Error("Presentation not loaded");
947
- return await this._slides.withSlide(e, (r) => pt(e, r, t, n));
982
+ return await this._slides.withSlide(e, (r) => vt(e, r, t, n));
983
+ } catch (e) {
984
+ this._rethrowWithResourceFailure(e);
985
+ }
986
+ }
987
+ async getElementBoundsByIds(e, t) {
988
+ if (this._assertResourceHealthy(), !Number.isInteger(e) || e < 0 || e >= this.slideCount) throw Error(`Slide index ${e} out of range (count: ${this.slideCount})`);
989
+ let n = Object.freeze(t.filter((e) => typeof e == "string" && e.length > 0));
990
+ if (n.length === 0) return Object.freeze([]);
991
+ try {
992
+ if (this._mode === "worker") return (await this._bridge.request((t) => ({
993
+ kind: "resolveElementBounds",
994
+ id: t,
995
+ slideIndex: e,
996
+ elementIds: n
997
+ }))).bounds;
998
+ if (!this._slides) throw Error("Presentation not loaded");
999
+ return await this._slides.withSlide(e, (e) => yt(e, n));
948
1000
  } catch (e) {
949
1001
  this._rethrowWithResourceFailure(e);
950
1002
  }
@@ -1026,7 +1078,7 @@ var Y = class e {
1026
1078
  dim: n.dim,
1027
1079
  onTextRun: n.onTextRun
1028
1080
  });
1029
- return await Pe(e, this._preflight.slides[t]?.mediaElements ?? [], {
1081
+ return await Ve(e, this._preflight.slides[t]?.mediaElements ?? [], {
1030
1082
  width: i,
1031
1083
  dpr: r,
1032
1084
  slideWidthEmu: this.slideWidth,
@@ -1040,28 +1092,60 @@ var Y = class e {
1040
1092
  }
1041
1093
  }
1042
1094
  destroy() {
1043
- this._slidePullClient?.cancelAll(), this._bridge.terminate(), this._slides?.clear(), this._slides = null, this._slidePullClient = null, this._preflight = null, this._resourceFailure = null, this._slidePartIndex = null, this._rawParts.clear(), this._googleFontFaces.length > 0 && (ye(this._googleFontFaces), this._googleFontFaces = []), f(this._fetchImage), d(this._fetchImage);
1095
+ this._slidePullClient?.cancelAll(), this._bridge.terminate(), this._slides?.clear(), this._slides = null, this._slidePullClient = null, this._preflight = null, this._resourceFailure = null, this._slidePartIndex = null, this._rawParts.clear(), this._googleFontFaces.length > 0 && (be(this._googleFontFaces), this._googleFontFaces = []), f(this._fetchImage), d(this._fetchImage);
1044
1096
  }
1045
1097
  };
1046
1098
  //#endregion
1047
1099
  //#region packages/pptx/src/selection-context.ts
1048
- function X(e) {
1100
+ function bt(e, t, n, r, i = {}) {
1101
+ let a = je({
1102
+ id: e.id,
1103
+ author: e.author,
1104
+ date: e.date,
1105
+ text: e.text,
1106
+ status: e.status ?? "active"
1107
+ }, (e.replies ?? []).map((e) => ({
1108
+ id: e.id,
1109
+ author: e.author,
1110
+ date: e.date,
1111
+ text: e.text,
1112
+ status: e.status ?? "active"
1113
+ })), i.maxTextCharacters);
1114
+ return Object.freeze({
1115
+ format: "pptx",
1116
+ kind: "comment",
1117
+ slideIndex: t,
1118
+ commentIndex: n,
1119
+ occurrenceId: r,
1120
+ ...e.id ? { commentId: e.id } : {},
1121
+ ...Number.isFinite(e.x) && Number.isFinite(e.y) ? { point: Object.freeze({
1122
+ x: e.x,
1123
+ y: e.y
1124
+ }) } : {},
1125
+ thread: a.thread,
1126
+ truncated: a.truncated,
1127
+ truncationReasons: a.truncated ? ["text"] : [],
1128
+ textCharacters: a.textCharacters,
1129
+ maxTextCharacters: a.maxTextCharacters
1130
+ });
1131
+ }
1132
+ function J(e) {
1049
1133
  if (e === void 0 || !/^\d+$/.test(e)) return null;
1050
1134
  let t = Number(e);
1051
1135
  return Number.isSafeInteger(t) ? t : null;
1052
1136
  }
1053
- function mt(e) {
1137
+ function xt(e) {
1054
1138
  for (let t = e; t; t = t.parentElement) {
1055
- let e = X(t.dataset.slideIndex);
1139
+ let e = J(t.dataset.slideIndex);
1056
1140
  if (e !== null) return e;
1057
1141
  }
1058
1142
  return null;
1059
1143
  }
1060
- function Z(e, t, n = {}) {
1144
+ function Y(e, t, n = {}) {
1061
1145
  let r = me(e, t, (e) => {
1062
- let t = mt(e), n = X(e.dataset.runIndex);
1146
+ let t = xt(e), n = J(e.dataset.runIndex);
1063
1147
  if (t === null || n === null) return null;
1064
- let r = X(e.dataset.elementIndex), i = e.dataset.elementOrigin, a = r !== null && (i === "master" || i === "layout" || i === "slide");
1148
+ let r = J(e.dataset.elementIndex), i = e.dataset.elementOrigin, a = r !== null && (i === "master" || i === "layout" || i === "slide");
1065
1149
  return {
1066
1150
  slideIndex: t,
1067
1151
  runIndex: n,
@@ -1092,11 +1176,16 @@ function Z(e, t, n = {}) {
1092
1176
  };
1093
1177
  }
1094
1178
  //#endregion
1179
+ //#region packages/pptx/src/focused-view-runtime.ts
1180
+ function X(e, t, n, r, i) {
1181
+ return r === "worker" ? e.renderSlideToBitmap(n, i) : e.renderSlide(t, n, i);
1182
+ }
1183
+ //#endregion
1095
1184
  //#region packages/pptx/src/viewer.ts
1096
- var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1185
+ var St = Symbol("PptxViewer.borrowedPresentation"), Z = {
1097
1186
  color: "#ffffff",
1098
1187
  opacity: .6
1099
- }, _t = class e {
1188
+ }, Ct = class e {
1100
1189
  canvas;
1101
1190
  wrapper;
1102
1191
  canvasMount;
@@ -1130,12 +1219,12 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1130
1219
  static fromPresentation(t, n, r = {}) {
1131
1220
  return new e(t, {
1132
1221
  ...r,
1133
- [ht]: n
1222
+ [St]: n
1134
1223
  });
1135
1224
  }
1136
1225
  constructor(e, t = {}) {
1137
1226
  this.opts = t, this.canvas = e;
1138
- let n = t[ht];
1227
+ let n = t[St];
1139
1228
  this.borrowed = n !== void 0, this._mode = O("PptxViewer", t.mode, n), this.presentationOwner = new T("PptxViewer", n ?? null, !1);
1140
1229
  let r = e.ownerDocument?.defaultView ?? (typeof window < "u" ? window : null);
1141
1230
  if (!r) throw Error("PptxViewer requires a canvas with an active Window");
@@ -1149,14 +1238,14 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1149
1238
  let a = new ue(this.wrapper, t.enableTextSelection === !0, t.enableElementSelection === !0);
1150
1239
  this.textLayer = a.textLayer, this.highlightLayer = a.highlightLayer, this.elementLayer = a.elementLayer, this.textLayer && (t.onSelectionContextChange || t.enableElementSelection) && (this.selectionChangeListener = () => this._emitSelectionContextChange(), this.wrapper.ownerDocument.addEventListener("selectionchange", this.selectionChangeListener)), t.enableElementSelection && (this.elementClickListener = (e) => {
1151
1240
  this._onElementClick(e).catch((e) => this._reportRenderError(e));
1152
- }, this.wrapper.addEventListener("click", this.elementClickListener)), t.onContextMenu && (this.contextMenuListener = (e) => this._onContextMenu(e), this.wrapper.addEventListener("contextmenu", this.contextMenuListener)), this._find = new L(() => this.slideCount, (e) => this._collectSlideRuns(e));
1241
+ }, this.wrapper.addEventListener("click", this.elementClickListener)), t.onContextMenu && (this.contextMenuListener = (e) => this._onContextMenu(e), this.wrapper.addEventListener("contextmenu", this.contextMenuListener)), this._find = new Re(() => this.slideCount, (e) => this._collectSlideRuns(e));
1153
1242
  }
1154
1243
  async load(e) {
1155
1244
  if (this.destroyed) throw Error("PptxViewer is destroyed");
1156
1245
  if (this.borrowed) throw Error("PptxViewer.load() is unsupported on a Viewer created by fromPresentation(); the borrowed presentation is already loaded.");
1157
1246
  let t = !1;
1158
1247
  try {
1159
- if (!await this.presentationOwner.replace(() => Y.load(e, {
1248
+ if (!await this.presentationOwner.replace(() => q.load(e, {
1160
1249
  password: this.opts.password,
1161
1250
  useGoogleFonts: this.opts.useGoogleFonts,
1162
1251
  maxZipEntryBytes: this.opts.maxZipEntryBytes,
@@ -1192,21 +1281,21 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1192
1281
  await this.goToSlide(this._step(-1));
1193
1282
  }
1194
1283
  _step(e) {
1195
- return this._hiddenMode === "skip" && this.engine ? De(this.currentSlide, e, (e) => this.engine.isHidden(e), this.slideCount) : this.currentSlide + e;
1284
+ return this._hiddenMode === "skip" && this.engine ? Oe(this.currentSlide, e, (e) => this.engine.isHidden(e), this.slideCount) : this.currentSlide + e;
1196
1285
  }
1197
1286
  _initialSlide() {
1198
- return this._hiddenMode === "skip" && this.engine ? j(0, (e) => this.engine.isHidden(e), this.slideCount) : 0;
1287
+ return this._hiddenMode === "skip" && this.engine ? ke(0, (e) => this.engine.isHidden(e), this.slideCount) : 0;
1199
1288
  }
1200
1289
  _dim() {
1201
1290
  return {
1202
- color: this.opts.hiddenSlideDim?.color ?? gt.color,
1203
- opacity: this.opts.hiddenSlideDim?.opacity ?? gt.opacity
1291
+ color: this.opts.hiddenSlideDim?.color ?? Z.color,
1292
+ opacity: this.opts.hiddenSlideDim?.opacity ?? Z.opacity
1204
1293
  };
1205
1294
  }
1206
1295
  async setHiddenSlideMode(e) {
1207
1296
  this._hiddenMode = e;
1208
1297
  let t = this.currentSlide;
1209
- e === "skip" && this.engine && (t = j(this.currentSlide, (e) => this.engine.isHidden(e), this.slideCount));
1298
+ e === "skip" && this.engine && (t = ke(this.currentSlide, (e) => this.engine.isHidden(e), this.slideCount));
1210
1299
  let n = t !== this.currentSlide;
1211
1300
  n && this._invalidateElementSelection(!1), this.currentSlide = t, await this.renderCurrentSlide(), n && !this.destroyed && this._emitSelectionContextChange();
1212
1301
  }
@@ -1216,7 +1305,7 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1216
1305
  get visibleSlideCount() {
1217
1306
  if (!this.engine) return 0;
1218
1307
  let e = this.engine;
1219
- return Oe((t) => e.isHidden(t), this.slideCount);
1308
+ return Ae((t) => e.isHidden(t), this.slideCount);
1220
1309
  }
1221
1310
  get slideIndex() {
1222
1311
  return this.currentSlide;
@@ -1232,7 +1321,7 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1232
1321
  }
1233
1322
  _naturalWidthPx() {
1234
1323
  let e = this.engine?.slideWidth ?? 0;
1235
- return e > 0 ? e / A : 0;
1324
+ return e > 0 ? e / k : 0;
1236
1325
  }
1237
1326
  _targetWidth() {
1238
1327
  if (this._scale === null) return this.opts.width ?? (this.canvas.offsetWidth || 960);
@@ -1258,7 +1347,7 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1258
1347
  await this.setScale(ge(this.getScale()));
1259
1348
  }
1260
1349
  async zoomOut() {
1261
- await this.setScale(k(this.getScale()));
1350
+ await this.setScale(ye(this.getScale()));
1262
1351
  }
1263
1352
  async fitWidth() {
1264
1353
  await this._fit("width");
@@ -1271,8 +1360,8 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1271
1360
  let t = this.wrapper.parentElement;
1272
1361
  if (!t) return;
1273
1362
  let n = re({
1274
- contentWidth: this.engine.slideWidth / A,
1275
- contentHeight: this.engine.slideHeight / A,
1363
+ contentWidth: this.engine.slideWidth / k,
1364
+ contentHeight: this.engine.slideHeight / k,
1276
1365
  containerWidth: t.clientWidth,
1277
1366
  containerHeight: t.clientHeight
1278
1367
  }, e);
@@ -1300,14 +1389,14 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1300
1389
  }
1301
1390
  this.handle = i;
1302
1391
  } else if (o) {
1303
- let i = await this.engine.renderSlideToBitmap(this.currentSlide, {
1392
+ let i = await X(this.engine, this.canvas, this.currentSlide, "worker", {
1304
1393
  width: n,
1305
1394
  dpr: r,
1306
1395
  dim: t,
1307
1396
  onTextRun: c
1308
1397
  });
1309
1398
  if (!this.renderDispatcher.commitBitmap(e, i)) return;
1310
- } else if (await this.engine.renderSlide(this.canvas, this.currentSlide, {
1399
+ } else if (await X(this.engine, this.canvas, this.currentSlide, "main", {
1311
1400
  width: n,
1312
1401
  dpr: r,
1313
1402
  onTextRun: c,
@@ -1322,7 +1411,7 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1322
1411
  }
1323
1412
  _buildHighlightLayer(e, t, n) {
1324
1413
  let r = this.highlightLayer;
1325
- r && I(r, e, this._find.slideHighlights(this.currentSlide), t, n, (e) => this._measureForFont(e), this.opts.findHighlightColors);
1414
+ r && P(r, e, this._find.slideHighlights(this.currentSlide), t, n, (e) => this._measureForFont(e), this.opts.findHighlightColors);
1326
1415
  }
1327
1416
  _measureForFont(e) {
1328
1417
  this._measureCtx ||= document.createElement("canvas").getContext("2d");
@@ -1354,7 +1443,7 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1354
1443
  this._buildHighlightLayer(e, t, n);
1355
1444
  }
1356
1445
  _buildTextLayer(e, t, n, r) {
1357
- F(e, t, n, r, this._hyperlinkHandler(), this.currentSlide);
1446
+ N(e, t, n, r, this._hyperlinkHandler(), this.currentSlide);
1358
1447
  }
1359
1448
  _hyperlinkHandler() {
1360
1449
  if (this.opts.enableHyperlinks !== !1) return (e) => this._onHyperlinkClick(e);
@@ -1388,7 +1477,7 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1388
1477
  }
1389
1478
  getSelectionContext(e = {}) {
1390
1479
  if (this.destroyed) throw Error("PptxViewer is destroyed");
1391
- return (this.textLayer ? Z(this.wrapper, this.wrapper.ownerDocument?.getSelection?.() ?? null, e) : null) ?? (this.elementContext ? dt(this.elementContext, e.maxTextCharacters) : null);
1480
+ return (this.textLayer ? Y(this.wrapper, this.wrapper.ownerDocument?.getSelection?.() ?? null, e) : null) ?? (this.elementContext ? gt(this.elementContext, e.maxTextCharacters) : null);
1392
1481
  }
1393
1482
  _emitSelectionContextChange() {
1394
1483
  let e = this.getSelectionContext();
@@ -1429,7 +1518,7 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1429
1518
  async _resolveContextAt(e) {
1430
1519
  let t = this.engine;
1431
1520
  if (this.destroyed || !t) return null;
1432
- if (this.textLayer && Z(this.wrapper, this.wrapper.ownerDocument?.getSelection?.() ?? null)) return this._emitSelectionContextChange(), this.destroyed ? null : this.getSelectionContext();
1521
+ if (this.textLayer && Y(this.wrapper, this.wrapper.ownerDocument?.getSelection?.() ?? null)) return this._emitSelectionContextChange(), this.destroyed ? null : this.getSelectionContext();
1433
1522
  if (!this.opts.enableElementSelection) return this.getSelectionContext();
1434
1523
  let n = this.canvas.getBoundingClientRect();
1435
1524
  if (n.width <= 0 || n.height <= 0) return this._invalidateElementSelection(), null;
@@ -1442,7 +1531,7 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1442
1531
  try {
1443
1532
  c = await t.getElementContextAt(o, s, {
1444
1533
  tolerance: this.elementHitTolerance / n.width * t.slideWidth,
1445
- maxTextCharacters: J
1534
+ maxTextCharacters: K
1446
1535
  });
1447
1536
  } catch (e) {
1448
1537
  if (this.destroyed || a !== this.elementHitGeneration || o !== this.currentSlide || t !== this.engine) return null;
@@ -1453,7 +1542,11 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1453
1542
  destroy() {
1454
1543
  this.destroyed || (this.destroyed = !0, this.errorRouter.close(), this.renderDispatcher.destroy(), c(this.canvas), this.handle?.destroy(), this.handle = null, this.presentationOwner.close(), this._find.invalidate(), this.selectionChangeListener &&= (this.wrapper.ownerDocument.removeEventListener("selectionchange", this.selectionChangeListener), null), this.elementHitGeneration++, this.elementClickListener &&= (this.wrapper.removeEventListener("click", this.elementClickListener), null), this.contextMenuListener &&= (this.wrapper.removeEventListener("contextmenu", this.contextMenuListener), null), this.elementContext = null, this.canvasMount.restore());
1455
1544
  }
1456
- }, vt = 150, yt = "0 1px 3px rgba(0,0,0,0.2)", Q = Symbol("PptxScrollViewer.borrowedPresentation"), $ = class e {
1545
+ }, wt = 150, Tt = "0 1px 3px rgba(0,0,0,0.2)", Q = 12, Et;
1546
+ function Dt() {
1547
+ return Et ??= import("./comment-ui-runtime-C1RV_3iu.js");
1548
+ }
1549
+ var $ = 440, Ot = 20, kt = Symbol("PptxScrollViewer.borrowedPresentation"), At = class e {
1457
1550
  _presentationOwner;
1458
1551
  get _pres() {
1459
1552
  return this._presentationOwner.current;
@@ -1470,7 +1563,7 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1470
1563
  _pendingScale = null;
1471
1564
  _slots = /* @__PURE__ */ new Map();
1472
1565
  _free = [];
1473
- _heights = [];
1566
+ _uniformSlideHeight = 0;
1474
1567
  _lastRange = null;
1475
1568
  _lastTopIndex = -1;
1476
1569
  _scrollListener = null;
@@ -1478,7 +1571,16 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1478
1571
  _selectionContextKey = "null";
1479
1572
  _elementClickListener = null;
1480
1573
  _contextMenuListener = null;
1574
+ _commentOutsidePointerListener = null;
1481
1575
  _elementContext = null;
1576
+ _activeCommentId = null;
1577
+ _activeCommentSlide = null;
1578
+ _commentNavigationGeneration = 0;
1579
+ _commentUi = null;
1580
+ _commentGeometryScheduled = !1;
1581
+ _commentGeometryFrame = null;
1582
+ _pendingCommentGeometry = /* @__PURE__ */ new Map();
1583
+ _hasComments = !1;
1482
1584
  _elementHitGeneration = 0;
1483
1585
  _elementHitTolerance;
1484
1586
  _destroyed = !1;
@@ -1491,13 +1593,13 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1491
1593
  _prevBase = 0;
1492
1594
  _lastFitWidth = 0;
1493
1595
  _pageShadow;
1494
- _find = new L(() => this.slideCount, (e) => this._collectSlideRuns(e));
1596
+ _find = new Re(() => this.slideCount, (e) => this._collectSlideRuns(e));
1495
1597
  _findActive = !1;
1496
1598
  _findMeasureCtx;
1497
1599
  static fromPresentation(t, n, r = {}) {
1498
1600
  return new e(t, {
1499
1601
  ...r,
1500
- [Q]: n
1602
+ [kt]: n
1501
1603
  });
1502
1604
  }
1503
1605
  constructor(e, t = {}) {
@@ -1505,11 +1607,22 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1505
1607
  this._container = e, this._opts = t;
1506
1608
  let n = t.elementHitTolerance ?? 6;
1507
1609
  if (!Number.isFinite(n) || n < 0) throw RangeError("elementHitTolerance must be a finite non-negative number.");
1508
- this._elementHitTolerance = n, this._pageShadow = t.pageShadow ?? yt;
1509
- let r = t[Q];
1510
- this._borrowed = r !== void 0, r ? (this._presentationOwner = new T("PptxScrollViewer", r, !1), this._mode = O("PptxScrollViewer", t.mode, r)) : (this._presentationOwner = new T("PptxScrollViewer"), this._mode = O("PptxScrollViewer", t.mode, void 0)), this._wrapper = document.createElement("div"), this._wrapper.style.cssText = "position:relative;width:100%;height:100%;overflow:hidden;", this._scrollHost = document.createElement("div"), this._scrollHost.style.cssText = "position:absolute;inset:0;overflow:auto;", this._scrollHost.style.scrollbarGutter = "stable", t.background && (this._scrollHost.style.background = t.background), this._spacer = document.createElement("div"), this._spacer.style.cssText = "position:absolute;top:0;left:0;width:1px;height:0;pointer-events:none;", this._scrollHost.appendChild(this._spacer), this._wrapper.appendChild(this._scrollHost), this._container.appendChild(this._wrapper), t.enableTextSelection && (t.onSelectionContextChange || t.enableElementSelection) && (this._selectionChangeListener = () => this._emitSelectionContextChange(), this._wrapper.ownerDocument.addEventListener("selectionchange", this._selectionChangeListener)), t.enableElementSelection && (this._elementClickListener = (e) => {
1610
+ this._elementHitTolerance = n, this._pageShadow = t.pageShadow ?? Tt;
1611
+ let r = t[kt];
1612
+ this._borrowed = r !== void 0, r ? (this._presentationOwner = new T("PptxScrollViewer", r, !1), this._mode = O("PptxScrollViewer", t.mode, r), this._hasComments = (t.comments === !0 || typeof t.comments == "object") && this._presentationHasComments(r)) : (this._presentationOwner = new T("PptxScrollViewer"), this._mode = O("PptxScrollViewer", t.mode, void 0)), this._wrapper = document.createElement("div"), this._wrapper.style.cssText = "position:relative;width:100%;height:100%;overflow:hidden;", this._scrollHost = document.createElement("div"), this._scrollHost.style.cssText = "position:absolute;inset:0;overflow:auto;", this._scrollHost.style.scrollbarGutter = "stable", t.background && (this._scrollHost.style.background = t.background), this._spacer = document.createElement("div"), this._spacer.style.cssText = "position:absolute;top:0;left:0;width:1px;height:0;pointer-events:none;", this._scrollHost.appendChild(this._spacer), this._wrapper.appendChild(this._scrollHost), this._container.appendChild(this._wrapper), this._commentsEnabled() && Dt().then((e) => {
1613
+ if (!this._destroyed) {
1614
+ this._commentUi = e;
1615
+ for (let [e, t] of this._slots) this._redrawSlotComments(e, t);
1616
+ }
1617
+ }).catch((e) => this._reportRenderError(e)), t.enableTextSelection && (t.onSelectionContextChange || t.enableElementSelection) && (this._selectionChangeListener = () => this._emitSelectionContextChange(), this._wrapper.ownerDocument.addEventListener("selectionchange", this._selectionChangeListener)), t.enableElementSelection && (this._elementClickListener = (e) => {
1511
1618
  this._onElementClick(e).catch((e) => this._reportRenderError(e));
1512
- }, this._scrollHost.addEventListener("click", this._elementClickListener)), t.onContextMenu && (this._contextMenuListener = (e) => this._onContextMenu(e), this._scrollHost.addEventListener("contextmenu", this._contextMenuListener)), this._scrollListener = () => this._onScroll(), this._scrollHost.addEventListener("scroll", this._scrollListener), this._opts.enableZoom !== !1 && (this._wheelListener = (e) => {
1619
+ }, this._scrollHost.addEventListener("click", this._elementClickListener)), t.onContextMenu && (this._contextMenuListener = (e) => this._onContextMenu(e), this._scrollHost.addEventListener("contextmenu", this._contextMenuListener)), this._scrollListener = () => this._onScroll(), this._scrollHost.addEventListener("scroll", this._scrollListener), t.comments && (this._commentOutsidePointerListener = (e) => {
1620
+ if (!Ne(e, this._wrapper, "ooxmlCommentId") && this._activeCommentId !== null) {
1621
+ this._activeCommentId = null, this._activeCommentSlide = null;
1622
+ for (let [e, t] of this._slots) this._redrawSlotComments(e, t);
1623
+ this._emitSelectionContextChange();
1624
+ }
1625
+ }, this._wrapper.ownerDocument.addEventListener("pointerdown", this._commentOutsidePointerListener)), this._opts.enableZoom !== !1 && (this._wheelListener = (e) => {
1513
1626
  if (!(e.ctrlKey || e.metaKey) || (e.preventDefault(), e.deltaY === 0)) return;
1514
1627
  let t = this._scrollHost.getBoundingClientRect(), n = e.clientX - t.left, r = e.clientY - t.top;
1515
1628
  this._pendingZoomAnchor = Number.isFinite(n) && Number.isFinite(r) ? {
@@ -1523,7 +1636,7 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1523
1636
  if (this._borrowed) throw Error("PptxScrollViewer.load() is unsupported on a Viewer created by fromPresentation(); the borrowed presentation is already loaded.");
1524
1637
  let t = !1;
1525
1638
  try {
1526
- if (!await this._presentationOwner.replace(() => Y.load(e, {
1639
+ let n = await this._presentationOwner.replace(() => q.load(e, {
1527
1640
  password: this._opts.password,
1528
1641
  useGoogleFonts: this._opts.useGoogleFonts,
1529
1642
  maxZipEntryBytes: this._opts.maxZipEntryBytes,
@@ -1538,15 +1651,16 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1538
1651
  chartEx: this._opts.chartEx,
1539
1652
  mode: this._mode
1540
1653
  }), (e) => {
1541
- if (this._invalidateElementSelection(!1), t = !0, this._find.invalidate(), this._findActive = !1, e) {
1654
+ if (this._invalidateElementSelection(!1), t = !0, this._find.invalidate(), this._findActive = !1, this._activeCommentId = null, this._activeCommentSlide = null, this._hasComments = !1, e) {
1542
1655
  for (let [e, t] of [...this._slots]) this._recycleSlot(e, t);
1543
1656
  this._lastTopIndex = -1;
1544
1657
  }
1545
- })) return;
1658
+ });
1659
+ if (!n) return;
1546
1660
  if (this._destroyed) throw Error("PptxScrollViewer is destroyed");
1547
- this._find.invalidate(), this._findActive = !1;
1548
- let n = [];
1549
- this._relayout(n), await Promise.all(n);
1661
+ this._find.invalidate(), this._findActive = !1, this._activeCommentId = null, this._activeCommentSlide = null, this._hasComments = this._commentsEnabled() && this._presentationHasComments(n);
1662
+ let r = [];
1663
+ this._relayout(r), await Promise.all(r);
1550
1664
  } catch (e) {
1551
1665
  throw this._destroyed ? Error("PptxScrollViewer is destroyed") : e instanceof Error ? e : Error(String(e));
1552
1666
  }
@@ -1556,21 +1670,52 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1556
1670
  return this._pres?.slideCount ?? 0;
1557
1671
  }
1558
1672
  _slideWidthPx() {
1559
- return this._pres.slideWidth / A * this._scale;
1673
+ return this._pres.slideWidth / k * this._scale;
1560
1674
  }
1561
1675
  _slideHeightPx() {
1562
- return this._pres.slideHeight / A * this._scale;
1676
+ return this._pres.slideHeight / k * this._scale;
1563
1677
  }
1564
1678
  _fitWidthPx() {
1565
1679
  if (this._opts.width && this._opts.width > 0) return this._opts.width;
1566
1680
  let e = this._scrollHost.clientWidth || this._container.clientWidth;
1567
1681
  if (e <= 0) return 0;
1568
1682
  let { left: t, right: n } = this._padH(), r = e - t - n;
1569
- return r > 0 ? r : 0;
1683
+ if (r <= 0) return 0;
1684
+ let i = this._pres ? this._pres.slideWidth / k : 0, a = this._hasCommentMargin() && i > 0 ? r * i / (i + Q + $) : r;
1685
+ return a > 0 ? a : 0;
1686
+ }
1687
+ _commentMarginExtent() {
1688
+ return this._hasCommentMargin() ? (Q + $) * this._commentZoom() : 0;
1689
+ }
1690
+ _hasCommentMargin() {
1691
+ return this._commentsEnabled() && this._hasComments && this._commentsOptions()?.cards !== !1;
1692
+ }
1693
+ _commentZoom() {
1694
+ return this._scaleEstablished ? this._scale : 1;
1695
+ }
1696
+ _commentsEnabled() {
1697
+ return this._opts.comments === !0 || typeof this._opts.comments == "object";
1698
+ }
1699
+ _commentsOptions() {
1700
+ return typeof this._opts.comments == "object" ? this._opts.comments : void 0;
1701
+ }
1702
+ _commentSide() {
1703
+ let e = this._commentsOptions()?.side;
1704
+ return e === "left" || e === "right" ? e : (this._container.ownerDocument.defaultView?.getComputedStyle?.(this._container).direction || this._container.dir || this._container.style.direction) === "rtl" ? "left" : "right";
1705
+ }
1706
+ _syncCommentMarginGeometry(e) {
1707
+ if (!e) return;
1708
+ let t = this._commentZoom(), n = `calc(100% + ${Q * t}px)`;
1709
+ e.style.left = this._commentSide() === "right" ? n : "", e.style.right = this._commentSide() === "left" ? n : "", e.style.width = `${$ * t}px`, e.style.fontSize = `${Ot}px`, e.dataset.ooxmlCommentZoom = String(t);
1710
+ }
1711
+ _presentationHasComments(e) {
1712
+ let t = this._commentsOptions()?.includeResolved === !0;
1713
+ for (let n = 0; n < e.slideCount; n++) if (e.getComments(n).some((e) => t || e.status !== "resolved" && e.status !== "closed")) return !0;
1714
+ return !1;
1570
1715
  }
1571
1716
  _baseScale() {
1572
1717
  if (!this._pres || this._pres.slideCount === 0) return 0;
1573
- let e = this._fitWidthPx(), t = this._pres.slideWidth / A;
1718
+ let e = this._fitWidthPx(), t = this._pres.slideWidth / k;
1574
1719
  return e <= 0 || t <= 0 ? 0 : e / t;
1575
1720
  }
1576
1721
  relayout() {
@@ -1591,8 +1736,7 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1591
1736
  }
1592
1737
  }
1593
1738
  _recomputeHeights() {
1594
- let e = this._pres.slideCount, t = this._slideHeightPx();
1595
- this._heights = Array(e).fill(t);
1739
+ this._uniformSlideHeight = this._slideHeightPx();
1596
1740
  }
1597
1741
  _gap() {
1598
1742
  return this._opts.gap ?? 16;
@@ -1617,19 +1761,20 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1617
1761
  right: this._opts.paddingRight ?? e
1618
1762
  };
1619
1763
  }
1620
- _slideIndexAtOffset(e, t) {
1621
- let { offsets: n } = e, r = 0, i = n.length - 1, a = 0;
1622
- for (; r <= i;) {
1623
- let e = r + i >> 1;
1624
- n[e] <= t ? (a = e, r = e + 1) : i = e - 1;
1625
- }
1626
- return a;
1764
+ _slideOffset(e) {
1765
+ return this._pad().leading + e * (this._uniformSlideHeight + this._gap());
1766
+ }
1767
+ _slideIndexAtOffset(e) {
1768
+ return Me(this._pres?.slideCount ?? 0, this._uniformSlideHeight, this._gap(), e, 0, 0, this._pad()).topIndex;
1769
+ }
1770
+ _rangeAt(e, t) {
1771
+ return Me(this._pres?.slideCount ?? 0, this._uniformSlideHeight, this._gap(), e, this._scrollHost.clientHeight, t, this._pad());
1627
1772
  }
1628
1773
  _range() {
1629
- return M(this._heights, this._gap(), this._scrollHost.scrollTop, this._scrollHost.clientHeight, this._overscan(), this._pad());
1774
+ return this._rangeAt(this._scrollHost.scrollTop, this._overscan());
1630
1775
  }
1631
1776
  _mediaRange() {
1632
- return M(this._heights, this._gap(), this._scrollHost.scrollTop, this._scrollHost.clientHeight, this._mediaOverscan(), this._pad());
1777
+ return this._rangeAt(this._scrollHost.scrollTop, this._mediaOverscan());
1633
1778
  }
1634
1779
  _rangeContains(e, t) {
1635
1780
  return t >= e.start && t <= e.end;
@@ -1640,24 +1785,24 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1640
1785
  }
1641
1786
  _syncSpacerWidth() {
1642
1787
  let { left: e, right: t } = this._padH();
1643
- this._spacer.style.width = `${this._slideWidthPx() + e + t}px`;
1788
+ this._spacer.style.width = `${this._slideWidthPx() + this._commentMarginExtent() + e + t}px`;
1644
1789
  }
1645
1790
  _onScroll() {
1646
- !this._pres || !this._scaleEstablished || this._mountVisible();
1791
+ !this._pres || !this._scaleEstablished || this._mountVisible(void 0, !1);
1647
1792
  }
1648
- _mountVisible(e) {
1793
+ _mountVisible(e, t = !0) {
1649
1794
  if (!this._pres || this._pres.slideCount === 0) return;
1650
- let t = this._range(), n = this._opts.enableMediaPlayback ? this._mediaRange() : null;
1651
- this._lastRange = t;
1652
- for (let [e, n] of [...this._slots]) (e < t.start || e > t.end) && this._recycleSlot(e, n);
1653
- for (let r = t.start; r <= t.end; r++) if (this._slots.has(r)) this._positionSlot(this._slots.get(r), r, t);
1795
+ let n = this._range(), r = this._opts.enableMediaPlayback ? this._mediaRange() : null;
1796
+ this._lastRange = n;
1797
+ for (let [e, t] of [...this._slots]) (e < n.start || e > n.end) && this._recycleSlot(e, t);
1798
+ for (let i = n.start; i <= n.end; i++) if (this._slots.has(i)) t && this._positionSlot(this._slots.get(i), i, n);
1654
1799
  else {
1655
- let i = this._acquireSlot();
1656
- this._positionSlot(i, r, t), this._slots.set(r, i);
1657
- let a = this._renderSlot(r, i, !!n && this._rangeContains(n, r), e === void 0);
1800
+ let t = this._acquireSlot();
1801
+ this._positionSlot(t, i, n), this._slots.set(i, t), this._redrawSlotComments(i, t);
1802
+ let a = this._renderSlot(i, t, !!r && this._rangeContains(r, i), e === void 0);
1658
1803
  e && a && e.push(a);
1659
1804
  }
1660
- n && this._syncMediaPlayback(n), t.topIndex !== this._lastTopIndex && (this._lastTopIndex = t.topIndex, this._opts.onVisibleSlideChange?.(t.topIndex, this._pres.slideCount));
1805
+ r && this._syncMediaPlayback(r), n.topIndex !== this._lastTopIndex && (this._lastTopIndex = n.topIndex, this._opts.onVisibleSlideChange?.(n.topIndex, this._pres.slideCount));
1661
1806
  }
1662
1807
  _applyPageShadow(e) {
1663
1808
  this._pageShadow !== !1 && (e.style.boxShadow = this._pageShadow);
@@ -1673,13 +1818,22 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1673
1818
  this._opts.enableTextSelection && (r = document.createElement("div"), r.style.cssText = "position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;pointer-events:none;user-select:text;-webkit-user-select:text;", t.appendChild(r));
1674
1819
  let i = document.createElement("div");
1675
1820
  i.style.cssText = "position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;pointer-events:none;", t.appendChild(i);
1676
- let a = de(t, this._opts.enableElementSelection === !0);
1821
+ let a = null, o = null, s = null;
1822
+ this._commentsEnabled() && this._hasComments && (a = document.createElement("div"), a.style.cssText = "position:absolute;inset:0;overflow:hidden;pointer-events:none;", t.appendChild(a), this._hasCommentMargin() && (o = document.createElement("div"), o.style.cssText = "position:absolute;top:0;height:100%;box-sizing:border-box;overflow-x:hidden;overflow-y:auto;pointer-events:auto;", this._syncCommentMarginGeometry(o), this._commentsOptions()?.connectors !== void 0 && (s = document.createElement("div"), s.style.cssText = "position:absolute;top:0;left:0;overflow:visible;pointer-events:none;", t.appendChild(s)), t.appendChild(o)));
1823
+ let c = de(t, this._opts.enableElementSelection === !0);
1677
1824
  return this._scrollHost.appendChild(t), {
1678
1825
  wrapper: t,
1679
1826
  canvas: n,
1680
1827
  textLayer: r,
1681
1828
  highlightLayer: i,
1682
- elementLayer: a,
1829
+ elementLayer: c,
1830
+ commentMarkerLayer: a,
1831
+ commentMargin: o,
1832
+ commentDecorationLayer: s,
1833
+ commentElementBounds: Object.freeze([]),
1834
+ commentGeometry: null,
1835
+ commentAnchorSlide: -1,
1836
+ commentAnchorGeneration: 0,
1683
1837
  renderedSlide: -1,
1684
1838
  renderedScale: -1,
1685
1839
  dispatcher: new D(n, this._mode === "worker"),
@@ -1690,14 +1844,18 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1690
1844
  };
1691
1845
  }
1692
1846
  _recycleSlot(e, t) {
1693
- this._slots.delete(e), t.renderGeneration++, t.presentationGeneration++, t.presentationHandle?.destroy(), t.presentationHandle = null, t.mediaInteractive = !1, t.dispatcher.destroy(), this._destroyed || (t.dispatcher = new D(t.canvas, this._mode === "worker")), t.textLayer && (t.textLayer.innerHTML = "", t.textLayer.style.transform = "", t.textLayer.style.transformOrigin = ""), t.highlightLayer.innerHTML = "", t.highlightLayer.style.transform = "", t.highlightLayer.style.transformOrigin = "", E(t.elementLayer, null), t.canvas.style.height = "", t.renderedSlide = -1, t.renderedScale = -1, t.wrapper.remove(), this._free.push(t);
1847
+ this._slots.delete(e), t.renderGeneration++, t.presentationGeneration++, t.presentationHandle?.destroy(), t.presentationHandle = null, t.mediaInteractive = !1, t.dispatcher.destroy(), this._destroyed || (t.dispatcher = new D(t.canvas, this._mode === "worker")), t.textLayer && (t.textLayer.innerHTML = "", t.textLayer.style.transform = "", t.textLayer.style.transformOrigin = ""), t.highlightLayer.innerHTML = "", t.highlightLayer.style.transform = "", t.highlightLayer.style.transformOrigin = "", t.commentMarkerLayer && (t.commentMarkerLayer.replaceChildren(), t.commentMarkerLayer.style.visibility = ""), t.commentMargin && (this._commentUi?.disposeReadOnlyCommentMargin(t.commentMargin), this._commentUi || t.commentMargin.replaceChildren(), t.commentMargin.style.visibility = ""), t.commentDecorationLayer && (this._commentUi?.disposeReadOnlyCommentDecoration(t.commentDecorationLayer), this._commentUi || t.commentDecorationLayer.replaceChildren(), t.commentDecorationLayer.style.visibility = ""), t.commentElementBounds = Object.freeze([]), t.commentGeometry = null, t.commentAnchorSlide = -1, t.commentAnchorGeneration++, E(t.elementLayer, null), t.canvas.style.height = "", t.renderedSlide = -1, t.renderedScale = -1, t.wrapper.remove(), this._free.push(t);
1694
1848
  }
1695
1849
  _positionSlot(e, t, n) {
1696
- e.wrapper.dataset.slideIndex = String(t), e.wrapper.style.top = `${n.offsets[t]}px`;
1850
+ e.wrapper.dataset.slideIndex = String(t), e.wrapper.style.top = `${this._slideOffset(t)}px`;
1697
1851
  let r = this._slideWidthPx();
1698
- e.wrapper.style.width = `${r}px`, e.wrapper.style.height = `${this._slideHeightPx()}px`, this._redrawElementOutlineForSlot(t, e);
1699
- let { left: i } = this._padH(), a = this._scrollHost.clientWidth;
1700
- e.wrapper.style.left = `${Math.max(i, (a - r) / 2)}px`;
1852
+ if (e.wrapper.style.width = `${r}px`, e.wrapper.style.height = `${this._slideHeightPx()}px`, this._syncCommentMarginGeometry(e.commentMargin), e.commentDecorationLayer) {
1853
+ let t = this._commentMarginExtent();
1854
+ e.commentDecorationLayer.style.left = this._commentSide() === "left" ? `${-t}px` : "0px", e.commentDecorationLayer.style.width = `${r + t}px`, e.commentDecorationLayer.style.height = `${this._slideHeightPx()}px`;
1855
+ }
1856
+ this._redrawElementOutlineForSlot(t, e);
1857
+ let { left: i } = this._padH(), a = this._scrollHost.clientWidth, o = this._commentMarginExtent(), s = r + o, c = Math.max(i, (a - s) / 2);
1858
+ e.wrapper.style.left = `${c + (this._commentSide() === "left" ? o : 0)}px`;
1701
1859
  }
1702
1860
  _dpr() {
1703
1861
  return this._opts.dpr ?? (typeof window < "u" && window.devicePixelRatio || 1);
@@ -1709,12 +1867,12 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1709
1867
  if (this._opts.enableMediaPlayback && n) return t.mediaInteractive = !0, this._renderInteractiveSlot(e, t, o, a, c, s, r);
1710
1868
  if (t.mediaInteractive = !1, this._mode === "worker") return this._renderSlotBitmap(e, t, o, a, c, i, l, u, r);
1711
1869
  let d = [], f = !!this._opts.enableTextSelection && !!t.textLayer, p = f || this._findActive, m = p ? (e) => d.push(e) : void 0, h = t.canvas;
1712
- return this._pres.renderSlide(h, e, {
1870
+ return X(this._pres, h, e, "main", {
1713
1871
  width: o,
1714
1872
  dpr: a,
1715
1873
  onTextRun: m
1716
1874
  }).then(() => {
1717
- i !== t.renderGeneration || !l.isCurrent(u) || h !== t.canvas || s !== this._renderEpoch || this._slots.get(e) !== t || t.renderedSlide !== e || (t.renderedScale = c, f && t.textLayer && F(t.textLayer, d, Math.round(o), Math.round(this._slideHeightPx()), this._hyperlinkHandler(), e), p && this._refreshFindRuns(e, d), this._redrawSlotHighlights(e, t));
1875
+ i !== t.renderGeneration || !l.isCurrent(u) || h !== t.canvas || s !== this._renderEpoch || this._slots.get(e) !== t || t.renderedSlide !== e || (t.renderedScale = c, f && t.textLayer && N(t.textLayer, d, Math.round(o), Math.round(this._slideHeightPx()), this._hyperlinkHandler(), e), p && this._refreshFindRuns(e, d), this._commitSlotComments(e, t), this._redrawSlotHighlights(e, t));
1718
1876
  }).catch((n) => {
1719
1877
  if (i === t.renderGeneration && l.isCurrent(u) && h === t.canvas && s === this._renderEpoch && this._slots.get(e) === t && t.renderedSlide === e) if (r) this._reportRenderError(n);
1720
1878
  else throw n;
@@ -1737,7 +1895,7 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1737
1895
  r.destroy();
1738
1896
  return;
1739
1897
  }
1740
- t.presentationHandle = r, t.renderedScale = i, l && t.textLayer && F(t.textLayer, c, Math.round(n), Math.round(this._slideHeightPx()), this._hyperlinkHandler(), e), u && this._refreshFindRuns(e, c), this._redrawSlotHighlights(e, t);
1898
+ t.presentationHandle = r, t.renderedScale = i, l && t.textLayer && N(t.textLayer, c, Math.round(n), Math.round(this._slideHeightPx()), this._hyperlinkHandler(), e), u && this._refreshFindRuns(e, c), this._commitSlotComments(e, t), this._redrawSlotHighlights(e, t);
1741
1899
  }).catch((e) => {
1742
1900
  if (s === t.presentationGeneration) if (o) this._reportRenderError(e);
1743
1901
  else throw e;
@@ -1760,7 +1918,7 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1760
1918
  this._slideInFlight.add(e);
1761
1919
  let u = t.canvas, d = !1, f = !!this._opts.enableTextSelection && !!t.textLayer, p = f || this._findActive, m = [];
1762
1920
  try {
1763
- let c = await this._pres.renderSlideToBitmap(e, {
1921
+ let c = await X(this._pres, u, e, "worker", {
1764
1922
  width: n,
1765
1923
  dpr: r,
1766
1924
  onTextRun: p ? (e) => m.push(e) : void 0
@@ -1773,7 +1931,7 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1773
1931
  cssWidth: Math.round(c.width / r),
1774
1932
  cssHeight: Math.round(c.height / r)
1775
1933
  })) return;
1776
- t.renderedScale = i, t.textLayer && (t.textLayer.style.transform = "", t.textLayer.style.transformOrigin = "", f && F(t.textLayer, m, Math.round(n), Math.round(this._slideHeightPx()), this._hyperlinkHandler(), e)), p && this._refreshFindRuns(e, m), this._redrawSlotHighlights(e, t), d = !0;
1934
+ t.renderedScale = i, t.textLayer && (t.textLayer.style.transform = "", t.textLayer.style.transformOrigin = "", f && N(t.textLayer, m, Math.round(n), Math.round(this._slideHeightPx()), this._hyperlinkHandler(), e)), p && this._refreshFindRuns(e, m), this._commitSlotComments(e, t), this._redrawSlotHighlights(e, t), d = !0;
1777
1935
  } catch (n) {
1778
1936
  if (a === t.renderGeneration && o.isCurrent(s) && u === t.canvas && l === this._renderEpoch && this._slots.get(e) === t && t.renderedSlide === e) if (c) this._reportRenderError(n);
1779
1937
  else throw n;
@@ -1790,16 +1948,16 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1790
1948
  return;
1791
1949
  }
1792
1950
  if (r === this._scale) return;
1793
- let a = this._scale, o = i ? i.y : 0, s = this._range(), c = this._scrollHost.scrollTop, l = c + o, u = this._slideIndexAtOffset(s, l), d = this._heights[u] || 0, f = d > 0 ? (l - s.offsets[u]) / d : 0;
1794
- f = Math.min(1, Math.max(0, f));
1795
- let p = this._padH().left, m = this._scrollHost.scrollLeft || 0;
1951
+ let a = this._scale, o = i ? i.y : 0, s = this._scrollHost.scrollTop, c = s + o, l = this._slideIndexAtOffset(c), u = this._uniformSlideHeight, d = u > 0 ? (c - this._slideOffset(l)) / u : 0;
1952
+ d = Math.min(1, Math.max(0, d));
1953
+ let f = this._padH().left, p = this._scrollHost.scrollLeft || 0;
1796
1954
  this._renderEpoch++, this._scale = r, this._recomputeHeights();
1797
- let h = M(this._heights, this._gap(), 0, this._scrollHost.clientHeight, this._overscan(), this._pad());
1798
- this._spacer.style.height = `${h.totalHeight}px`, this._syncSpacerWidth();
1799
- let g = Math.max(0, h.totalHeight - this._scrollHost.clientHeight), _ = (h.offsets[u] ?? 0) + f * (this._heights[u] || 0), v = l < (s.offsets[0] ?? 0) ? c : _ - o;
1800
- if (this._scrollHost.scrollTop = Math.min(g, Math.max(0, v)), i) {
1955
+ let m = this._rangeAt(0, this._overscan());
1956
+ this._spacer.style.height = `${m.totalHeight}px`, this._syncSpacerWidth();
1957
+ let h = Math.max(0, m.totalHeight - this._scrollHost.clientHeight), g = this._slideOffset(l) + d * this._uniformSlideHeight, _ = c < this._slideOffset(0) ? s : g - o;
1958
+ if (this._scrollHost.scrollTop = Math.min(h, Math.max(0, _)), i) {
1801
1959
  let e = Math.max(0, (this._spacer.offsetWidth || 0) - this._scrollHost.clientWidth);
1802
- this._scrollHost.scrollLeft = ie(m, i.x - p, a, r, { maxScroll: e });
1960
+ this._scrollHost.scrollLeft = ie(p, i.x - f, a, r, { maxScroll: e });
1803
1961
  }
1804
1962
  this._previewVisible(), this._scheduleSettle(), this._opts.onScaleChange?.(r);
1805
1963
  }
@@ -1810,7 +1968,7 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1810
1968
  this.setScale(ge(this.getScale()));
1811
1969
  }
1812
1970
  zoomOut() {
1813
- this.setScale(k(this.getScale()));
1971
+ this.setScale(ye(this.getScale()));
1814
1972
  }
1815
1973
  fitWidth() {
1816
1974
  this._fit("width");
@@ -1821,8 +1979,8 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1821
1979
  _fit(e) {
1822
1980
  if (!this._pres || this._pres.slideCount === 0) return;
1823
1981
  let t = re({
1824
- contentWidth: this._pres.slideWidth / A,
1825
- contentHeight: this._pres.slideHeight / A,
1982
+ contentWidth: this._pres.slideWidth / k,
1983
+ contentHeight: this._pres.slideHeight / k,
1826
1984
  containerWidth: this._fitWidthPx(),
1827
1985
  containerHeight: this._scrollHost.clientHeight
1828
1986
  }, e);
@@ -1838,7 +1996,7 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1838
1996
  if (r) this._previewSlot(r, n, e);
1839
1997
  else {
1840
1998
  let r = this._acquireSlot();
1841
- this._positionSlot(r, n, e), this._slots.set(n, r), this._renderSlot(n, r, !!t && this._rangeContains(t, n));
1999
+ this._positionSlot(r, n, e), this._slots.set(n, r), this._redrawSlotComments(n, r), this._renderSlot(n, r, !!t && this._rangeContains(t, n));
1842
2000
  }
1843
2001
  }
1844
2002
  t && this._syncMediaPlayback(t), e.topIndex !== this._lastTopIndex && (this._lastTopIndex = e.topIndex, this._opts.onVisibleSlideChange?.(e.topIndex, this._pres.slideCount));
@@ -1848,11 +2006,19 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1848
2006
  let t = this._scale / e.renderedScale;
1849
2007
  e.textLayer.style.transformOrigin = "0 0", e.textLayer.style.transform = `scale(${t})`;
1850
2008
  }
2009
+ if (e.renderedScale > 0) {
2010
+ let t = this._scale / e.renderedScale, n = Math.round(t * 1e6) / 1e6;
2011
+ e.commentMargin && this._commentUi?.previewReadOnlyCommentMargin(e.commentMargin, t);
2012
+ for (let t of e.commentMarkerLayer?.children ?? []) t.dataset.ooxmlCommentMarker !== void 0 && (t.style.transform = `translate(-50%,-50%) scale(${n})`);
2013
+ e.commentMarkerLayer && (e.commentMarkerLayer.style.visibility = ""), e.commentMargin && (e.commentMargin.style.visibility = ""), e.commentDecorationLayer && (e.commentDecorationLayer.style.visibility = "");
2014
+ return;
2015
+ }
2016
+ e.commentMarkerLayer && (e.commentMarkerLayer.style.visibility = "hidden"), e.commentMargin && (e.commentMargin.style.visibility = "hidden"), e.commentDecorationLayer && (e.commentDecorationLayer.style.visibility = "hidden");
1851
2017
  }
1852
2018
  _scheduleSettle() {
1853
2019
  this._settleTimer !== null && clearTimeout(this._settleTimer), this._settleTimer = setTimeout(() => {
1854
2020
  this._settleTimer = null, this._settleRender();
1855
- }, vt);
2021
+ }, wt);
1856
2022
  }
1857
2023
  _settleRender() {
1858
2024
  if (this._destroyed || !this._pres || this._pres.slideCount === 0) return;
@@ -1874,7 +2040,7 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1874
2040
  let o = document.createElement("canvas"), s = ++t.renderGeneration;
1875
2041
  o.style.cssText = "display:block;background:#fff;", this._applyPageShadow(o);
1876
2042
  let c = new D(o, !1), l = c.begin(), u = [], d = !!this._opts.enableTextSelection && !!t.textLayer, f = d || this._findActive, p = f ? (e) => u.push(e) : void 0;
1877
- this._pres.renderSlide(o, e, {
2043
+ X(this._pres, o, e, "main", {
1878
2044
  width: r,
1879
2045
  dpr: n,
1880
2046
  onTextRun: p
@@ -1884,7 +2050,7 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1884
2050
  return;
1885
2051
  }
1886
2052
  let n = t.canvas;
1887
- t.dispatcher.destroy(), t.wrapper.insertBefore(o, n), n.remove(), t.canvas = o, t.dispatcher = c, t.renderedScale = i, t.textLayer && (t.textLayer.style.transform = "", t.textLayer.style.transformOrigin = "", d && F(t.textLayer, u, Math.round(r), Math.round(this._slideHeightPx()), this._hyperlinkHandler(), e)), f && this._refreshFindRuns(e, u), this._redrawSlotHighlights(e, t);
2053
+ t.dispatcher.destroy(), t.wrapper.insertBefore(o, n), n.remove(), t.canvas = o, t.dispatcher = c, t.renderedScale = i, t.textLayer && (t.textLayer.style.transform = "", t.textLayer.style.transformOrigin = "", d && N(t.textLayer, u, Math.round(r), Math.round(this._slideHeightPx()), this._hyperlinkHandler(), e)), f && this._refreshFindRuns(e, u), this._commitSlotComments(e, t), this._redrawSlotHighlights(e, t);
1888
2054
  }).catch((n) => {
1889
2055
  s === t.renderGeneration && c.isCurrent(l) && a === this._renderEpoch && this._slots.get(e) === t && t.renderedSlide === e && this._reportRenderError(n), c.destroy();
1890
2056
  });
@@ -1907,19 +2073,65 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1907
2073
  return;
1908
2074
  }
1909
2075
  let d = t.canvas, f = t.presentationHandle;
1910
- t.dispatcher.destroy(), t.wrapper.insertBefore(s, d), d.remove(), t.canvas = s, t.dispatcher = new D(s, !1), t.presentationHandle = r, t.renderedScale = i, f?.destroy(), t.textLayer && (t.textLayer.style.transform = "", t.textLayer.style.transformOrigin = "", l && F(t.textLayer, c, Math.round(n), Math.round(this._slideHeightPx()), this._hyperlinkHandler(), e)), u && this._refreshFindRuns(e, c), this._redrawSlotHighlights(e, t);
2076
+ t.dispatcher.destroy(), t.wrapper.insertBefore(s, d), d.remove(), t.canvas = s, t.dispatcher = new D(s, !1), t.presentationHandle = r, t.renderedScale = i, f?.destroy(), t.textLayer && (t.textLayer.style.transform = "", t.textLayer.style.transformOrigin = "", l && N(t.textLayer, c, Math.round(n), Math.round(this._slideHeightPx()), this._hyperlinkHandler(), e)), u && this._refreshFindRuns(e, c), this._commitSlotComments(e, t), this._redrawSlotHighlights(e, t);
1911
2077
  }).catch((e) => {
1912
2078
  o === t.presentationGeneration && this._reportRenderError(e);
1913
2079
  });
1914
2080
  }
1915
2081
  scrollToSlide(e, t) {
1916
2082
  if (!this._pres || this._pres.slideCount === 0 || !this._scaleEstablished) return;
1917
- let n = Math.max(0, Math.min(e, this._pres.slideCount - 1)), r = M(this._heights, this._gap(), 0, this._scrollHost.clientHeight, this._overscan(), this._pad()), i = r.offsets[n] ?? 0, a = Math.max(0, r.totalHeight - this._scrollHost.clientHeight), o = Math.min(a, Math.max(0, i)), s = this._scrollHost;
2083
+ let n = Math.max(0, Math.min(e, this._pres.slideCount - 1)), r = this._rangeAt(0, this._overscan()), i = this._slideOffset(n), a = Math.max(0, r.totalHeight - this._scrollHost.clientHeight), o = Math.min(a, Math.max(0, i)), s = this._scrollHost;
1918
2084
  typeof s.scrollTo == "function" ? s.scrollTo({
1919
2085
  top: o,
1920
2086
  behavior: t?.behavior ?? "auto"
1921
2087
  }) : this._scrollHost.scrollTop = o, this._mountVisible();
1922
2088
  }
2089
+ _scrollToSlideCommentTarget(e, t, n, r) {
2090
+ if (!this._pres) return !1;
2091
+ let i = this._slots.get(e), a = new Map((i?.commentElementBounds ?? []).map((e) => [e.elementId, e.bounds])), o = r ?? (t.anchors ?? []).flatMap((e) => {
2092
+ if (e.type !== "drawingElement" && e.type !== "textRange" || !e.elementId) return [];
2093
+ let t = a.get(e.elementId);
2094
+ return t ? [t] : [];
2095
+ })[0], s = t.anchors ?? [], c = Number.isFinite(t.x) && Number.isFinite(t.y) && (s.length === 0 || s.some((e) => e.type === "slide"));
2096
+ if (!o && !c) return !1;
2097
+ let l = o ? o.x + (c ? t.x : o.width) : t.x, u = o ? o.y + (c ? t.y : 0) : t.y, d = this._slideWidthPx(), f = this._commentMarginExtent(), { left: p } = this._padH(), m = Math.max(p, (this._scrollHost.clientWidth - d - f) / 2) + (this._commentSide() === "left" ? f : 0), h = this._rangeAt(0, this._overscan()), g = Math.max(0, h.totalHeight - this._scrollHost.clientHeight), _ = this._spacer.offsetWidth || Number.parseFloat(this._spacer.style.width) || 0, v = Math.max(0, _ - this._scrollHost.clientWidth), y = l / k * this._scale, b = u / k * this._scale, x = Math.min(g, Math.max(0, this._slideOffset(e) + b - this._scrollHost.clientHeight / 2)), S = Math.min(v, Math.max(0, m + y - this._scrollHost.clientWidth / 2)), C = this._scrollHost;
2098
+ return typeof C.scrollTo == "function" ? C.scrollTo({
2099
+ top: x,
2100
+ left: S,
2101
+ behavior: n?.behavior ?? "auto"
2102
+ }) : (this._scrollHost.scrollTop = x, this._scrollHost.scrollLeft = S), this._mountVisible(), !0;
2103
+ }
2104
+ async _resolveSlideCommentElementBounds(e, t) {
2105
+ let n = this._pres;
2106
+ if (!n) return;
2107
+ let r = (t.anchors ?? []).flatMap((e) => (e.type === "drawingElement" || e.type === "textRange") && e.elementId ? [e.elementId] : []);
2108
+ if (r.length === 0) return;
2109
+ let i = new Map((this._slots.get(e)?.commentElementBounds ?? []).map((e) => [e.elementId, e.bounds])), a = r.flatMap((e) => {
2110
+ let t = i.get(e);
2111
+ return t ? [t] : [];
2112
+ })[0];
2113
+ if (a) return a;
2114
+ let o = await n.getElementBoundsByIds(e, r);
2115
+ return r.flatMap((e) => {
2116
+ let t = o.find((t) => t.elementId === e);
2117
+ return t ? [t.bounds] : [];
2118
+ })[0];
2119
+ }
2120
+ async goToComment(e, t, n) {
2121
+ if (this._destroyed) throw Error("PptxScrollViewer is destroyed");
2122
+ let r = this._pres;
2123
+ if (!r || !Number.isInteger(e) || !Number.isInteger(t) || e < 0 || e >= r.slideCount) return !1;
2124
+ let i = r.getComments(e)[t];
2125
+ if (!i) return !1;
2126
+ let a = ++this._commentNavigationGeneration, o = await this._resolveSlideCommentElementBounds(e, i);
2127
+ if (this._destroyed) throw Error("PptxScrollViewer is destroyed");
2128
+ if (a !== this._commentNavigationGeneration || r !== this._pres) return !1;
2129
+ let s = i.anchors ?? [], c = Number.isFinite(i.x) && Number.isFinite(i.y) && (s.length === 0 || s.some((e) => e.type === "slide"));
2130
+ if (!o && !c || (this.scrollToSlide(e, n), !this._scrollToSlideCommentTarget(e, i, n, o))) return !1;
2131
+ this._activeCommentId = j(i, t, e), this._activeCommentSlide = e, this._elementContext = null;
2132
+ for (let [e, t] of this._slots) this._redrawSlotComments(e, t);
2133
+ return this._emitSelectionContextChange(), !0;
2134
+ }
1923
2135
  async findText(e, t = {}) {
1924
2136
  if (!this._pres) return [];
1925
2137
  this._findActive = e.length > 0;
@@ -1947,6 +2159,84 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1947
2159
  _refreshFindRuns(e, t) {
1948
2160
  this._findActive && this._find.setSlideRuns(e, t);
1949
2161
  }
2162
+ _redrawSlotComments(e, t) {
2163
+ if (!this._pres || !t.commentMarkerLayer) return;
2164
+ let n = this._commentUi;
2165
+ if (!n) {
2166
+ t.commentMarkerLayer.replaceChildren(), t.commentMargin?.replaceChildren(), t.commentDecorationLayer?.replaceChildren(), t.commentGeometry = null;
2167
+ return;
2168
+ }
2169
+ t.commentGeometry = n.buildPptxCommentMargin(t.commentMarkerLayer, t.commentMargin, this._pres.getComments(e), t.commentElementBounds, e, this._pres.slideWidth, this._pres.slideHeight, this._activeCommentId, (t, n) => {
2170
+ let r = n ? t : this._activeCommentId === t ? null : this._activeCommentId;
2171
+ if (r !== this._activeCommentId) {
2172
+ this._activeCommentId = r, this._activeCommentSlide = r ? e : null, this._elementContext = null;
2173
+ for (let [e, t] of this._slots) this._redrawSlotComments(e, t);
2174
+ this._emitSelectionContextChange();
2175
+ }
2176
+ }, this._commentZoom(), $, this._commentsOptions()?.markers !== !1, this._commentsOptions()?.includeResolved === !0, t.commentDecorationLayer ? () => this._scheduleCommentGeometry(e, t, !1) : void 0, t.commentDecorationLayer ? () => this._scheduleCommentGeometry(e, t, !0) : void 0), this._redrawSlotCommentConnectors(e, t);
2177
+ }
2178
+ _redrawSlotCommentConnectors(e, t) {
2179
+ let n = t.commentDecorationLayer, r = t.commentMargin, i = t.commentGeometry, a = this._commentsOptions()?.connectors;
2180
+ if (!n || !r || !i || !a) return;
2181
+ let o = this._slideWidthPx(), s = this._slideHeightPx(), c = this._commentSide(), l = this._commentMarginExtent(), u = this._commentUi;
2182
+ u && u.buildReadOnlyCommentDecoration(n, Object.freeze({
2183
+ surfaceBounds: Object.freeze({
2184
+ x: c === "left" ? -l : 0,
2185
+ y: 0,
2186
+ width: o + l,
2187
+ height: s
2188
+ }),
2189
+ contentBounds: Object.freeze({
2190
+ x: 0,
2191
+ y: 0,
2192
+ width: o,
2193
+ height: s
2194
+ }),
2195
+ side: c,
2196
+ threads: u.projectReadOnlyCommentMarginScroll(i, r.scrollTop)
2197
+ }), {
2198
+ route: a.route ?? "bezier",
2199
+ stroke: a.stroke ?? "solid",
2200
+ color: a.color,
2201
+ activeColor: a.activeColor
2202
+ });
2203
+ }
2204
+ _commitSlotComments(e, t) {
2205
+ this._ensureSlotCommentAnchors(e, t), this._redrawSlotComments(e, t), t.commentMarkerLayer && (t.commentMarkerLayer.style.visibility = ""), t.commentMargin && (t.commentMargin.style.visibility = ""), t.commentDecorationLayer && (t.commentDecorationLayer.style.visibility = "");
2206
+ }
2207
+ _ensureSlotCommentAnchors(e, t) {
2208
+ let n = this._pres;
2209
+ if (!n || t.commentAnchorSlide === e) return;
2210
+ t.commentAnchorSlide = e, t.commentElementBounds = Object.freeze([]);
2211
+ let r = [...new Set(n.getComments(e).flatMap((e) => (e.anchors ?? []).flatMap((e) => (e.type === "drawingElement" || e.type === "textRange") && e.elementId ? [e.elementId] : [])))];
2212
+ if (r.length === 0) return;
2213
+ let i = ++t.commentAnchorGeneration;
2214
+ n.getElementBoundsByIds(e, r).then((r) => {
2215
+ if (this._destroyed || i !== t.commentAnchorGeneration || n !== this._pres || this._slots.get(e) !== t || t.commentAnchorSlide !== e) return;
2216
+ t.commentElementBounds = r, this._redrawSlotComments(e, t);
2217
+ let a = n.getComments(e).find((t, n) => j(t, n, e) === this._activeCommentId);
2218
+ a && this._scrollToSlideCommentTarget(e, a);
2219
+ }).catch((e) => {
2220
+ !this._destroyed && i === t.commentAnchorGeneration && this._reportRenderError(e);
2221
+ });
2222
+ }
2223
+ _scheduleCommentGeometry(e, t, n = !1) {
2224
+ let r = this._pendingCommentGeometry.get(e);
2225
+ if (this._pendingCommentGeometry.set(e, {
2226
+ slot: t,
2227
+ connectorsOnly: r?.slot === t ? r.connectorsOnly && n : n
2228
+ }), this._commentGeometryScheduled) return;
2229
+ this._commentGeometryScheduled = !0;
2230
+ let i = () => {
2231
+ this._commentGeometryScheduled = !1, this._commentGeometryFrame = null;
2232
+ let e = [...this._pendingCommentGeometry];
2233
+ if (this._pendingCommentGeometry.clear(), !this._destroyed) for (let [t, n] of e) {
2234
+ let { slot: e, connectorsOnly: r } = n;
2235
+ this._slots.get(t) === e && e.renderedScale === this._scale && (r ? this._redrawSlotCommentConnectors(t, e) : this._redrawSlotComments(t, e));
2236
+ }
2237
+ }, a = this._wrapper.ownerDocument.defaultView;
2238
+ a?.requestAnimationFrame ? this._commentGeometryFrame = a.requestAnimationFrame(i) : queueMicrotask(i);
2239
+ }
1950
2240
  _redrawSlotHighlights(e, t) {
1951
2241
  if (!this._findActive) {
1952
2242
  t.highlightLayer.innerHTML = "";
@@ -1957,7 +2247,7 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
1957
2247
  t.highlightLayer.innerHTML = "";
1958
2248
  return;
1959
2249
  }
1960
- I(t.highlightLayer, n, this._find.slideHighlights(e), this._slideWidthPx(), this._slideHeightPx(), (e) => this._measureForFind(e), this._opts.findHighlightColors);
2250
+ P(t.highlightLayer, n, this._find.slideHighlights(e), this._slideWidthPx(), this._slideHeightPx(), (e) => this._measureForFind(e), this._opts.findHighlightColors);
1961
2251
  }
1962
2252
  _measureForFind(e) {
1963
2253
  this._findMeasureCtx === void 0 && (this._findMeasureCtx = document.createElement("canvas").getContext("2d"));
@@ -2030,14 +2320,14 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
2030
2320
  this._onResize();
2031
2321
  }
2032
2322
  contentAtViewportYForTest(e) {
2033
- let t = this._range(), n = this._scrollHost.scrollTop + e, r = this._slideIndexAtOffset(t, n), i = this._heights[r] || 0;
2323
+ let t = this._scrollHost.scrollTop + e, n = this._slideIndexAtOffset(t), r = this._uniformSlideHeight;
2034
2324
  return {
2035
- slide: r,
2036
- frac: i > 0 ? Math.min(1, Math.max(0, (n - t.offsets[r]) / i)) : 0
2325
+ slide: n,
2326
+ frac: r > 0 ? Math.min(1, Math.max(0, (t - this._slideOffset(n)) / r)) : 0
2037
2327
  };
2038
2328
  }
2039
2329
  viewportYOfForTest(e, t) {
2040
- return (this._range().offsets[e] ?? 0) + t * (this._heights[e] || 0) - this._scrollHost.scrollTop;
2330
+ return this._slideOffset(e) + t * this._uniformSlideHeight - this._scrollHost.scrollTop;
2041
2331
  }
2042
2332
  async getResourceMetrics() {
2043
2333
  if (!this._pres) throw Error("Presentation not loaded");
@@ -2045,7 +2335,11 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
2045
2335
  }
2046
2336
  getSelectionContext(e = {}) {
2047
2337
  if (this._destroyed) throw Error("PptxScrollViewer is destroyed");
2048
- return (this._opts.enableTextSelection ? Z(this._wrapper, this._wrapper.ownerDocument?.getSelection?.() ?? null, e) : null) ?? (this._elementContext ? dt(this._elementContext, e.maxTextCharacters) : null);
2338
+ if (this._pres && this._activeCommentId !== null && this._activeCommentSlide !== null) {
2339
+ let t = this._pres.getComments(this._activeCommentSlide), n = t.findIndex((e, t) => j(e, t, this._activeCommentSlide) === this._activeCommentId), r = t[n];
2340
+ if (r && n >= 0) return bt(r, this._activeCommentSlide, n, this._activeCommentId, e);
2341
+ }
2342
+ return (this._opts.enableTextSelection ? Y(this._wrapper, this._wrapper.ownerDocument?.getSelection?.() ?? null, e) : null) ?? (this._elementContext ? gt(this._elementContext, e.maxTextCharacters) : null);
2049
2343
  }
2050
2344
  _emitSelectionContextChange() {
2051
2345
  let e = this.getSelectionContext();
@@ -2089,7 +2383,7 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
2089
2383
  async _resolveContextAt(e) {
2090
2384
  let t = this._pres;
2091
2385
  if (this._destroyed || !t) return null;
2092
- if (this._opts.enableTextSelection && Z(this._wrapper, this._wrapper.ownerDocument?.getSelection?.() ?? null)) return this._emitSelectionContextChange(), this._destroyed ? null : this.getSelectionContext();
2386
+ if (this._opts.enableTextSelection && Y(this._wrapper, this._wrapper.ownerDocument?.getSelection?.() ?? null)) return this._emitSelectionContextChange(), this._destroyed ? null : this.getSelectionContext();
2093
2387
  if (!this._opts.enableElementSelection) return this.getSelectionContext();
2094
2388
  let n = e.target, r = [...this._slots].find(([, e]) => n !== null && e.wrapper.contains(n));
2095
2389
  if (!r) return this._invalidateElementSelection(), null;
@@ -2104,7 +2398,7 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
2104
2398
  try {
2105
2399
  d = await t.getElementContextAt(i, u, {
2106
2400
  tolerance: this._elementHitTolerance / o.width * t.slideWidth,
2107
- maxTextCharacters: J
2401
+ maxTextCharacters: K
2108
2402
  });
2109
2403
  } catch (e) {
2110
2404
  if (this._destroyed || l !== this._elementHitGeneration || t !== this._pres) return null;
@@ -2114,25 +2408,25 @@ var ht = Symbol("PptxViewer.borrowedPresentation"), gt = {
2114
2408
  }
2115
2409
  destroy() {
2116
2410
  if (!this._destroyed) {
2117
- this._destroyed = !0, this._find.invalidate(), this._findActive = !1, this._selectionChangeListener &&= (this._wrapper.ownerDocument.removeEventListener("selectionchange", this._selectionChangeListener), null), this._elementHitGeneration++, this._elementClickListener &&= (this._scrollHost.removeEventListener("click", this._elementClickListener), null), this._contextMenuListener &&= (this._scrollHost.removeEventListener("contextmenu", this._contextMenuListener), null), this._elementContext = null, this._scrollListener &&= (this._scrollHost.removeEventListener("scroll", this._scrollListener), null), this._wheelListener &&= (this._scrollHost.removeEventListener("wheel", this._wheelListener), null), this._resizeObserver?.disconnect(), this._resizeObserver = null, this._settleTimer !== null && (clearTimeout(this._settleTimer), this._settleTimer = null);
2411
+ this._destroyed = !0, this._find.invalidate(), this._findActive = !1, this._selectionChangeListener &&= (this._wrapper.ownerDocument.removeEventListener("selectionchange", this._selectionChangeListener), null), this._elementHitGeneration++, this._elementClickListener &&= (this._scrollHost.removeEventListener("click", this._elementClickListener), null), this._contextMenuListener &&= (this._scrollHost.removeEventListener("contextmenu", this._contextMenuListener), null), this._commentOutsidePointerListener &&= (this._wrapper.ownerDocument.removeEventListener("pointerdown", this._commentOutsidePointerListener), null), this._commentGeometryFrame !== null && (this._wrapper.ownerDocument.defaultView?.cancelAnimationFrame?.(this._commentGeometryFrame), this._commentGeometryFrame = null), this._commentGeometryScheduled = !1, this._pendingCommentGeometry.clear(), this._elementContext = null, this._scrollListener &&= (this._scrollHost.removeEventListener("scroll", this._scrollListener), null), this._wheelListener &&= (this._scrollHost.removeEventListener("wheel", this._wheelListener), null), this._resizeObserver?.disconnect(), this._resizeObserver = null, this._settleTimer !== null && (clearTimeout(this._settleTimer), this._settleTimer = null);
2118
2412
  for (let [e, t] of [...this._slots]) this._recycleSlot(e, t);
2119
2413
  this._free.length = 0, this._presentationOwner.close(), this._wrapper.remove();
2120
2414
  }
2121
2415
  }
2122
- }, bt = /* @__PURE__ */ e({
2416
+ }, jt = /* @__PURE__ */ e({
2123
2417
  OoxmlDecodedImageLimitError: () => we,
2124
2418
  OoxmlError: () => m,
2125
2419
  OoxmlResourceLimitError: () => g,
2126
- PptxPresentation: () => Y,
2127
- PptxScrollViewer: () => $,
2128
- PptxViewer: () => _t,
2420
+ PptxPresentation: () => q,
2421
+ PptxScrollViewer: () => At,
2422
+ PptxViewer: () => Ct,
2129
2423
  autoResize: () => _e,
2130
- buildPptxHighlightLayer: () => I,
2131
- buildPptxTextLayer: () => F,
2132
- isOoxmlDecodedImageLimitError: () => Ce,
2424
+ buildPptxHighlightLayer: () => P,
2425
+ buildPptxTextLayer: () => N,
2426
+ isOoxmlDecodedImageLimitError: () => Te,
2133
2427
  openExternalHyperlink: () => _,
2134
- readPptxTextSelectionContext: () => Z,
2428
+ readPptxTextSelectionContext: () => Y,
2135
2429
  renderSlide: () => n
2136
2430
  });
2137
2431
  //#endregion
2138
- export { Y as a, Z as i, $ as n, I as o, _t as r, F as s, bt as t };
2432
+ export { q as a, Y as i, At as n, P as o, Ct as r, N as s, jt as t };