pptx-react-viewer 3.21.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/{AiChatPanel-UD756KAU.mjs → AiChatPanel-MHURGN6G.mjs} +3 -3
  3. package/dist/AiChatPanel-MHURGN6G.mjs.br +0 -0
  4. package/dist/AiChatPanel-MHURGN6G.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-B3QM7MIC.js → AiChatPanel-WMVQFNDC.js} +24 -24
  6. package/dist/AiChatPanel-WMVQFNDC.js.br +0 -0
  7. package/dist/AiChatPanel-WMVQFNDC.js.gz +0 -0
  8. package/dist/{Area3DChartScene-435BFPLY.js → Area3DChartScene-IMGZEZNU.js} +2 -2
  9. package/dist/Area3DChartScene-IMGZEZNU.js.br +0 -0
  10. package/dist/Area3DChartScene-IMGZEZNU.js.gz +0 -0
  11. package/dist/{Area3DChartScene-MQKUWVMS.mjs → Area3DChartScene-LKOWSMAU.mjs} +1 -1
  12. package/dist/Area3DChartScene-LKOWSMAU.mjs.br +0 -0
  13. package/dist/Area3DChartScene-LKOWSMAU.mjs.gz +0 -0
  14. package/dist/{Bar3DChartScene-D4GMQGPN.mjs → Bar3DChartScene-NQNSIMUL.mjs} +1 -1
  15. package/dist/Bar3DChartScene-NQNSIMUL.mjs.br +0 -0
  16. package/dist/Bar3DChartScene-NQNSIMUL.mjs.gz +0 -0
  17. package/dist/{Bar3DChartScene-KEYLVYJA.js → Bar3DChartScene-VLSYVFRT.js} +2 -2
  18. package/dist/Bar3DChartScene-VLSYVFRT.js.br +0 -0
  19. package/dist/Bar3DChartScene-VLSYVFRT.js.gz +0 -0
  20. package/dist/{Line3DChartScene-B3AWFXE4.mjs → Line3DChartScene-ANZBJYQI.mjs} +1 -1
  21. package/dist/Line3DChartScene-ANZBJYQI.mjs.br +0 -0
  22. package/dist/Line3DChartScene-ANZBJYQI.mjs.gz +0 -0
  23. package/dist/{Line3DChartScene-JYGXLE56.js → Line3DChartScene-IWZHA563.js} +2 -2
  24. package/dist/Line3DChartScene-IWZHA563.js.br +0 -0
  25. package/dist/Line3DChartScene-IWZHA563.js.gz +0 -0
  26. package/dist/{Model3DScene-JF5J6N6W.js → Model3DScene-2L3YRAMR.js} +2 -2
  27. package/dist/Model3DScene-2L3YRAMR.js.br +0 -0
  28. package/dist/Model3DScene-2L3YRAMR.js.gz +0 -0
  29. package/dist/{Model3DScene-4TG4YRVM.mjs → Model3DScene-Y34HTZXK.mjs} +1 -1
  30. package/dist/Model3DScene-Y34HTZXK.mjs.br +0 -0
  31. package/dist/Model3DScene-Y34HTZXK.mjs.gz +0 -0
  32. package/dist/{PieChart3DScene-4BQ6PR7P.mjs → PieChart3DScene-FBRPLHLG.mjs} +1 -1
  33. package/dist/PieChart3DScene-FBRPLHLG.mjs.br +0 -0
  34. package/dist/PieChart3DScene-FBRPLHLG.mjs.gz +0 -0
  35. package/dist/{PieChart3DScene-CCQWSH3W.js → PieChart3DScene-NE3GN5VG.js} +2 -2
  36. package/dist/PieChart3DScene-NE3GN5VG.js.br +0 -0
  37. package/dist/PieChart3DScene-NE3GN5VG.js.gz +0 -0
  38. package/dist/{SurfaceChart3DScene-FRQC5HBG.mjs → SurfaceChart3DScene-7HE5DA3X.mjs} +1 -1
  39. package/dist/SurfaceChart3DScene-7HE5DA3X.mjs.br +0 -0
  40. package/dist/SurfaceChart3DScene-7HE5DA3X.mjs.gz +0 -0
  41. package/dist/{SurfaceChart3DScene-UVZPT6OD.js → SurfaceChart3DScene-OSMAVZJC.js} +2 -2
  42. package/dist/SurfaceChart3DScene-OSMAVZJC.js.br +0 -0
  43. package/dist/SurfaceChart3DScene-OSMAVZJC.js.gz +0 -0
  44. package/dist/{chunk-TMTQJAGK.mjs → chunk-33YE6E2O.mjs} +162 -82
  45. package/dist/chunk-33YE6E2O.mjs.br +0 -0
  46. package/dist/chunk-33YE6E2O.mjs.gz +0 -0
  47. package/dist/{chunk-TOOKJUPG.mjs → chunk-5F426BCZ.mjs} +1 -1
  48. package/dist/chunk-5F426BCZ.mjs.br +0 -0
  49. package/dist/chunk-5F426BCZ.mjs.gz +0 -0
  50. package/dist/{chunk-HZEOZUUH.mjs → chunk-GITM3RKP.mjs} +1 -1
  51. package/dist/chunk-GITM3RKP.mjs.br +0 -0
  52. package/dist/chunk-GITM3RKP.mjs.gz +0 -0
  53. package/dist/{chunk-EJMDD4VV.mjs → chunk-H7J4EYXS.mjs} +6 -6
  54. package/dist/chunk-H7J4EYXS.mjs.br +0 -0
  55. package/dist/chunk-H7J4EYXS.mjs.gz +0 -0
  56. package/dist/{chunk-M6QJKPU2.js → chunk-I5F3XLVR.js} +1052 -1052
  57. package/dist/chunk-I5F3XLVR.js.br +0 -0
  58. package/dist/chunk-I5F3XLVR.js.gz +0 -0
  59. package/dist/{chunk-BXMPXKV5.mjs → chunk-IWHZ2DUD.mjs} +8 -8
  60. package/dist/chunk-IWHZ2DUD.mjs.br +0 -0
  61. package/dist/chunk-IWHZ2DUD.mjs.gz +0 -0
  62. package/dist/{chunk-BFPIMU6Q.js → chunk-L6I73WMO.js} +790 -790
  63. package/dist/chunk-L6I73WMO.js.br +0 -0
  64. package/dist/chunk-L6I73WMO.js.gz +0 -0
  65. package/dist/{chunk-T6V342NP.js → chunk-LAAXFMRE.js} +162 -82
  66. package/dist/chunk-LAAXFMRE.js.br +0 -0
  67. package/dist/chunk-LAAXFMRE.js.gz +0 -0
  68. package/dist/{chunk-SUZIFHXI.js → chunk-NKACTGK5.js} +173 -173
  69. package/dist/chunk-NKACTGK5.js.br +0 -0
  70. package/dist/chunk-NKACTGK5.js.gz +0 -0
  71. package/dist/{chunk-H7QPQ4OR.js → chunk-ZOB6ITIM.js} +5 -5
  72. package/dist/chunk-ZOB6ITIM.js.br +0 -0
  73. package/dist/chunk-ZOB6ITIM.js.gz +0 -0
  74. package/dist/index.js +46 -46
  75. package/dist/index.js.br +0 -0
  76. package/dist/index.js.gz +0 -0
  77. package/dist/index.mjs +5 -5
  78. package/dist/index.mjs.br +0 -0
  79. package/dist/index.mjs.gz +0 -0
  80. package/dist/internals.js +104 -104
  81. package/dist/internals.js.br +0 -0
  82. package/dist/internals.js.gz +0 -0
  83. package/dist/internals.mjs +3 -3
  84. package/dist/internals.mjs.br +0 -0
  85. package/dist/internals.mjs.gz +0 -0
  86. package/dist/viewer/index.js +26 -26
  87. package/dist/viewer/index.js.br +0 -0
  88. package/dist/viewer/index.js.gz +0 -0
  89. package/dist/viewer/index.mjs +5 -5
  90. package/dist/viewer/index.mjs.br +0 -0
  91. package/dist/viewer/index.mjs.gz +0 -0
  92. package/package.json +2 -2
  93. package/dist/AiChatPanel-B3QM7MIC.js.br +0 -0
  94. package/dist/AiChatPanel-B3QM7MIC.js.gz +0 -0
  95. package/dist/AiChatPanel-UD756KAU.mjs.br +0 -0
  96. package/dist/AiChatPanel-UD756KAU.mjs.gz +0 -0
  97. package/dist/Area3DChartScene-435BFPLY.js.br +0 -0
  98. package/dist/Area3DChartScene-435BFPLY.js.gz +0 -0
  99. package/dist/Area3DChartScene-MQKUWVMS.mjs.br +0 -0
  100. package/dist/Area3DChartScene-MQKUWVMS.mjs.gz +0 -0
  101. package/dist/Bar3DChartScene-D4GMQGPN.mjs.br +0 -0
  102. package/dist/Bar3DChartScene-D4GMQGPN.mjs.gz +0 -0
  103. package/dist/Bar3DChartScene-KEYLVYJA.js.br +0 -0
  104. package/dist/Bar3DChartScene-KEYLVYJA.js.gz +0 -0
  105. package/dist/Line3DChartScene-B3AWFXE4.mjs.br +0 -0
  106. package/dist/Line3DChartScene-B3AWFXE4.mjs.gz +0 -0
  107. package/dist/Line3DChartScene-JYGXLE56.js.br +0 -0
  108. package/dist/Line3DChartScene-JYGXLE56.js.gz +0 -0
  109. package/dist/Model3DScene-4TG4YRVM.mjs.br +0 -0
  110. package/dist/Model3DScene-4TG4YRVM.mjs.gz +0 -0
  111. package/dist/Model3DScene-JF5J6N6W.js.br +0 -0
  112. package/dist/Model3DScene-JF5J6N6W.js.gz +0 -0
  113. package/dist/PieChart3DScene-4BQ6PR7P.mjs.br +0 -0
  114. package/dist/PieChart3DScene-4BQ6PR7P.mjs.gz +0 -0
  115. package/dist/PieChart3DScene-CCQWSH3W.js.br +0 -0
  116. package/dist/PieChart3DScene-CCQWSH3W.js.gz +0 -0
  117. package/dist/SurfaceChart3DScene-FRQC5HBG.mjs.br +0 -0
  118. package/dist/SurfaceChart3DScene-FRQC5HBG.mjs.gz +0 -0
  119. package/dist/SurfaceChart3DScene-UVZPT6OD.js.br +0 -0
  120. package/dist/SurfaceChart3DScene-UVZPT6OD.js.gz +0 -0
  121. package/dist/chunk-BFPIMU6Q.js.br +0 -0
  122. package/dist/chunk-BFPIMU6Q.js.gz +0 -0
  123. package/dist/chunk-BXMPXKV5.mjs.br +0 -0
  124. package/dist/chunk-BXMPXKV5.mjs.gz +0 -0
  125. package/dist/chunk-EJMDD4VV.mjs.br +0 -0
  126. package/dist/chunk-EJMDD4VV.mjs.gz +0 -0
  127. package/dist/chunk-H7QPQ4OR.js.br +0 -0
  128. package/dist/chunk-H7QPQ4OR.js.gz +0 -0
  129. package/dist/chunk-HZEOZUUH.mjs.br +0 -0
  130. package/dist/chunk-HZEOZUUH.mjs.gz +0 -0
  131. package/dist/chunk-M6QJKPU2.js.br +0 -0
  132. package/dist/chunk-M6QJKPU2.js.gz +0 -0
  133. package/dist/chunk-SUZIFHXI.js.br +0 -0
  134. package/dist/chunk-SUZIFHXI.js.gz +0 -0
  135. package/dist/chunk-T6V342NP.js.br +0 -0
  136. package/dist/chunk-T6V342NP.js.gz +0 -0
  137. package/dist/chunk-TMTQJAGK.mjs.br +0 -0
  138. package/dist/chunk-TMTQJAGK.mjs.gz +0 -0
  139. package/dist/chunk-TOOKJUPG.mjs.br +0 -0
  140. package/dist/chunk-TOOKJUPG.mjs.gz +0 -0
@@ -5,7 +5,7 @@ import DOMPurify from 'dompurify';
5
5
 
6
6
  // ../core/dist/index.mjs
7
7
 
8
- // ../../node_modules/.bun/emf-converter@2.0.2/node_modules/emf-converter/dist/index.mjs
8
+ // ../../node_modules/.bun/emf-converter@3.0.1/node_modules/emf-converter/dist/index.mjs
9
9
  function colorRefToHex(r, g2, b) {
10
10
  const toHex4 = (v) => v.toString(16).padStart(2, "0");
11
11
  return `#${toHex4(r & 255)}${toHex4(g2 & 255)}${toHex4(b & 255)}`;
@@ -231,6 +231,26 @@ var emfLog = (...args) => {
231
231
  };
232
232
  var emfWarn = (...args) => {
233
233
  };
234
+ var nodeCanvasModule;
235
+ async function ensureNodeCanvasModule() {
236
+ if (nodeCanvasModule !== void 0) {
237
+ return nodeCanvasModule;
238
+ }
239
+ if (typeof OffscreenCanvas !== "undefined" || typeof document !== "undefined") {
240
+ nodeCanvasModule = null;
241
+ return nodeCanvasModule;
242
+ }
243
+ if (typeof process === "undefined" || !process.versions?.node) {
244
+ nodeCanvasModule = null;
245
+ return nodeCanvasModule;
246
+ }
247
+ try {
248
+ nodeCanvasModule = await import('@napi-rs/canvas');
249
+ } catch {
250
+ nodeCanvasModule = null;
251
+ }
252
+ return nodeCanvasModule;
253
+ }
234
254
  var DEFAULT_DPI_SCALE = 1;
235
255
  function createCanvas(width, height, maxWidth, maxHeight, dpiScale = DEFAULT_DPI_SCALE, maxCanvasDimension = MAX_CANVAS_DIMENSION) {
236
256
  const effectiveScale = Math.max(1, Math.min(dpiScale, 4));
@@ -267,30 +287,44 @@ function createCanvas(width, height, maxWidth, maxHeight, dpiScale = DEFAULT_DPI
267
287
  emfLog(
268
288
  `createCanvas: using OffscreenCanvas ${w}\xD7${h2}, scale=(${scaleX.toFixed(3)},${scaleY.toFixed(3)})`
269
289
  );
270
- const canvas2 = new OffscreenCanvas(w, h2);
271
- const ctx2 = canvas2.getContext("2d");
272
- if (!ctx2) {
290
+ const canvas = new OffscreenCanvas(w, h2);
291
+ const ctx = canvas.getContext("2d");
292
+ if (!ctx) {
273
293
  emfWarn('createCanvas: OffscreenCanvas.getContext("2d") returned null');
274
294
  return null;
275
295
  }
276
- return { canvas: canvas2, ctx: ctx2, scaleX, scaleY };
296
+ return { canvas, ctx, scaleX, scaleY };
277
297
  }
278
- if (typeof document === "undefined") {
279
- emfWarn("createCanvas: no OffscreenCanvas and no document \u2014 cannot create canvas");
280
- return null;
298
+ if (typeof document !== "undefined") {
299
+ emfLog(
300
+ `createCanvas: using HTMLCanvasElement ${w}\xD7${h2}, scale=(${scaleX.toFixed(3)},${scaleY.toFixed(3)})`
301
+ );
302
+ const canvas = document.createElement("canvas");
303
+ canvas.width = w;
304
+ canvas.height = h2;
305
+ const ctx = canvas.getContext("2d");
306
+ if (!ctx) {
307
+ emfWarn('createCanvas: HTMLCanvasElement.getContext("2d") returned null');
308
+ return null;
309
+ }
310
+ return { canvas, ctx, scaleX, scaleY };
281
311
  }
282
- emfLog(
283
- `createCanvas: using HTMLCanvasElement ${w}\xD7${h2}, scale=(${scaleX.toFixed(3)},${scaleY.toFixed(3)})`
284
- );
285
- const canvas = document.createElement("canvas");
286
- canvas.width = w;
287
- canvas.height = h2;
288
- const ctx = canvas.getContext("2d");
289
- if (!ctx) {
290
- emfWarn('createCanvas: HTMLCanvasElement.getContext("2d") returned null');
291
- return null;
312
+ if (nodeCanvasModule) {
313
+ emfLog(
314
+ `createCanvas: using @napi-rs/canvas ${w}\xD7${h2}, scale=(${scaleX.toFixed(3)},${scaleY.toFixed(3)})`
315
+ );
316
+ const canvas = nodeCanvasModule.createCanvas(w, h2);
317
+ const ctx = canvas.getContext("2d");
318
+ if (!ctx) {
319
+ emfWarn('createCanvas: @napi-rs/canvas getContext("2d") returned null');
320
+ return null;
321
+ }
322
+ return { canvas, ctx, scaleX, scaleY };
292
323
  }
293
- return { canvas, ctx, scaleX, scaleY };
324
+ emfWarn(
325
+ "createCanvas: no OffscreenCanvas, no document, and no @napi-rs/canvas, cannot create canvas"
326
+ );
327
+ return null;
294
328
  } catch (err) {
295
329
  return null;
296
330
  }
@@ -319,6 +353,14 @@ function createTempCanvas(width, height) {
319
353
  }
320
354
  return { canvas, ctx };
321
355
  }
356
+ if (nodeCanvasModule) {
357
+ const canvas = nodeCanvasModule.createCanvas(width, height);
358
+ const ctx = canvas.getContext("2d");
359
+ if (!ctx) {
360
+ return null;
361
+ }
362
+ return { canvas, ctx };
363
+ }
322
364
  return null;
323
365
  }
324
366
  function rop2Paint(rop2) {
@@ -552,8 +594,31 @@ async function exportCanvasToPngDataUrl(canvas) {
552
594
  );
553
595
  return canvas.toDataURL("image/png");
554
596
  }
597
+ if (nodeCanvasModule && canvas instanceof nodeCanvasModule.Canvas) {
598
+ emfLog(
599
+ `exportCanvasToPngDataUrl: using @napi-rs/canvas toDataURLAsync (${canvas.width}\xD7${canvas.height})`
600
+ );
601
+ return canvas.toDataURLAsync();
602
+ }
555
603
  return null;
556
604
  }
605
+ async function decodeDeferredImageBytes(bytes, mime) {
606
+ if (nodeCanvasModule) {
607
+ const image = await nodeCanvasModule.loadImage(new Uint8Array(bytes));
608
+ return { drawable: image, width: image.width, height: image.height, close: () => {
609
+ } };
610
+ }
611
+ if (typeof createImageBitmap !== "function") {
612
+ return null;
613
+ }
614
+ const blob = mime !== void 0 ? new Blob([bytes], { type: mime }) : new Blob([bytes]);
615
+ const bitmap = await createImageBitmap(blob);
616
+ return { drawable: bitmap, width: bitmap.width, height: bitmap.height, close: () => bitmap.close() };
617
+ }
618
+ function canvasDrawImage(ctx, image, dx, dy, dw, dh) {
619
+ const draw = ctx.drawImage;
620
+ draw.call(ctx, image, dx, dy, dw, dh);
621
+ }
557
622
  function parseEmfHeader(view) {
558
623
  emfLog("parseEmfHeader: byteLength =", view.byteLength);
559
624
  if (view.byteLength < 88) {
@@ -1455,7 +1520,8 @@ function handleBitBlt(rCtx, offset, dataOff, recSize) {
1455
1520
  const temp = createTempCanvas(imageData.width, imageData.height);
1456
1521
  if (temp) {
1457
1522
  temp.ctx.putImageData(imageData, 0, 0);
1458
- ctx.drawImage(
1523
+ canvasDrawImage(
1524
+ ctx,
1459
1525
  temp.canvas,
1460
1526
  gmx(rCtx, dstX),
1461
1527
  gmy(rCtx, dstY),
@@ -1490,7 +1556,8 @@ function handleStretchDibits(rCtx, offset, dataOff, recSize) {
1490
1556
  const temp = createTempCanvas(imageData.width, imageData.height);
1491
1557
  if (temp) {
1492
1558
  temp.ctx.putImageData(imageData, 0, 0);
1493
- ctx.drawImage(
1559
+ canvasDrawImage(
1560
+ ctx,
1494
1561
  temp.canvas,
1495
1562
  gmx(rCtx, dstX),
1496
1563
  gmy(rCtx, dstY),
@@ -4807,12 +4874,16 @@ async function processDeferredImages(ctx, deferredImages, recursionDepth = 0) {
4807
4874
  if (img.isMetafile) {
4808
4875
  if (recursionDepth >= MAX_METAFILE_RECURSION) {
4809
4876
  emfWarn(
4810
- ` Deferred image [${idx}]: skipping embedded metafile \u2014 recursion depth ${recursionDepth} >= ${MAX_METAFILE_RECURSION}`
4877
+ ` Deferred image [${idx}]: skipping embedded metafile, recursion depth ${recursionDepth} >= ${MAX_METAFILE_RECURSION}`
4811
4878
  );
4812
4879
  continue;
4813
4880
  }
4814
4881
  emfLog(` Deferred image [${idx}]: recursively converting embedded metafile...`);
4815
- const metafileDataUrl = await convertEmfToDataUrl(plainBuffer, void 0, recursionDepth + 1) ?? await convertWmfToDataUrl(plainBuffer, void 0, recursionDepth + 1);
4882
+ const metafileDataUrl = await convertMetafileToDataUrl(
4883
+ plainBuffer,
4884
+ void 0,
4885
+ recursionDepth + 1
4886
+ );
4816
4887
  if (metafileDataUrl) {
4817
4888
  emfLog(
4818
4889
  ` Deferred image [${idx}]: metafile converted, dataUrl length=${metafileDataUrl.length}`
@@ -4825,26 +4896,28 @@ async function processDeferredImages(ctx, deferredImages, recursionDepth = 0) {
4825
4896
  for (let i2 = 0; i2 < byteString.length; i2++) {
4826
4897
  ia[i2] = byteString.charCodeAt(i2);
4827
4898
  }
4828
- const metaBlob = new Blob([ab], { type: mime });
4829
- emfLog(
4830
- ` Deferred image [${idx}]: creating ImageBitmap from ${metaBlob.size} byte blob (${mime})...`
4831
- );
4832
- const bitmap = await createImageBitmap(metaBlob);
4833
- emfLog(` Deferred image [${idx}]: ImageBitmap created ${bitmap.width}\xD7${bitmap.height}`);
4834
- ctx.drawImage(bitmap, img.dx, img.dy, img.dw, img.dh);
4835
- bitmap.close();
4899
+ emfLog(` Deferred image [${idx}]: decoding ${ab.byteLength} byte image (${mime})...`);
4900
+ const decoded = await decodeDeferredImageBytes(ab, mime);
4901
+ if (decoded) {
4902
+ emfLog(` Deferred image [${idx}]: decoded ${decoded.width}\xD7${decoded.height}`);
4903
+ canvasDrawImage(ctx, decoded.drawable, img.dx, img.dy, img.dw, img.dh);
4904
+ decoded.close();
4905
+ } else {
4906
+ emfWarn(` Deferred image [${idx}]: no image decoder available`);
4907
+ }
4836
4908
  } else {
4837
4909
  emfWarn(` Deferred image [${idx}]: metafile conversion returned null`);
4838
4910
  }
4839
4911
  } else {
4840
- emfLog(
4841
- ` Deferred image [${idx}]: creating ImageBitmap from ${plainBuffer.byteLength} byte blob...`
4842
- );
4843
- const blob = new Blob([plainBuffer]);
4844
- const bitmap = await createImageBitmap(blob);
4845
- emfLog(` Deferred image [${idx}]: ImageBitmap created ${bitmap.width}\xD7${bitmap.height}`);
4846
- ctx.drawImage(bitmap, img.dx, img.dy, img.dw, img.dh);
4847
- bitmap.close();
4912
+ emfLog(` Deferred image [${idx}]: decoding ${plainBuffer.byteLength} byte image...`);
4913
+ const decoded = await decodeDeferredImageBytes(plainBuffer);
4914
+ if (decoded) {
4915
+ emfLog(` Deferred image [${idx}]: decoded ${decoded.width}\xD7${decoded.height}`);
4916
+ canvasDrawImage(ctx, decoded.drawable, img.dx, img.dy, img.dw, img.dh);
4917
+ decoded.close();
4918
+ } else {
4919
+ emfWarn(` Deferred image [${idx}]: no image decoder available`);
4920
+ }
4848
4921
  }
4849
4922
  } catch (imgErr) {
4850
4923
  imgErr instanceof Error ? imgErr.message : String(imgErr);
@@ -4857,10 +4930,35 @@ async function processDeferredImages(ctx, deferredImages, recursionDepth = 0) {
4857
4930
  }
4858
4931
  ctx.setTransform(1, 0, 0, 1, 0, 0);
4859
4932
  }
4860
- async function convertEmfToDataUrl(buffer, options, recursionDepth = 0) {
4933
+ async function convertMetafileToDataUrl(buffer, options, recursionDepth = 0) {
4934
+ await ensureNodeCanvasModule();
4861
4935
  if (recursionDepth > MAX_METAFILE_RECURSION) {
4862
4936
  return null;
4863
4937
  }
4938
+ emfLog(`convertMetafileToDataUrl: input buffer ${buffer.byteLength} bytes`);
4939
+ if (buffer.byteLength >= 16) {
4940
+ const hdrBytes = new Uint8Array(buffer, 0, 16);
4941
+ emfLog(
4942
+ `convertMetafileToDataUrl: first 16 bytes: [${Array.from(hdrBytes).map((b) => b.toString(16).padStart(2, "0")).join(" ")}]`
4943
+ );
4944
+ }
4945
+ const view = new DataView(buffer);
4946
+ let emfHeader = null;
4947
+ try {
4948
+ emfHeader = parseEmfHeader(view);
4949
+ } catch (err) {
4950
+ emfWarn(
4951
+ "convertMetafileToDataUrl: parseEmfHeader threw during detection:",
4952
+ err instanceof Error ? err.message : err
4953
+ );
4954
+ emfHeader = null;
4955
+ }
4956
+ if (emfHeader) {
4957
+ return convertEmfInternal(buffer, view, emfHeader, options, recursionDepth);
4958
+ }
4959
+ return convertWmfInternal(buffer, view);
4960
+ }
4961
+ async function convertEmfInternal(buffer, view, header, options, recursionDepth) {
4864
4962
  const opts = {};
4865
4963
  const dpiScale = opts.dpiScale ?? DEFAULT_DPI_SCALE;
4866
4964
  const effectiveMaxWidth = opts.maxWidth;
@@ -4871,30 +4969,18 @@ async function convertEmfToDataUrl(buffer, options, recursionDepth = 0) {
4871
4969
  fontFamilyMap: opts.fontFamilyMap
4872
4970
  };
4873
4971
  try {
4874
- emfLog("=== convertEmfToDataUrl START ===");
4972
+ emfLog("=== convertEmfInternal START ===");
4875
4973
  emfLog(
4876
4974
  `Input buffer: ${buffer.byteLength} bytes, maxWidth=${effectiveMaxWidth}, maxHeight=${effectiveMaxHeight}, dpiScale=${dpiScale}`
4877
4975
  );
4878
- if (buffer.byteLength >= 16) {
4879
- const hdrBytes = new Uint8Array(buffer, 0, 16);
4880
- emfLog(
4881
- `First 16 bytes: [${Array.from(hdrBytes).map((b) => b.toString(16).padStart(2, "0")).join(" ")}]`
4882
- );
4883
- }
4884
- const view = new DataView(buffer);
4885
- const header = parseEmfHeader(view);
4886
- if (!header) {
4887
- emfLog("convertEmfToDataUrl: parseEmfHeader returned null \u2014 returning null");
4888
- return null;
4889
- }
4890
4976
  const renderBounds = getRenderableEmfBounds(header);
4891
4977
  if (!renderBounds) {
4892
- emfLog("convertEmfToDataUrl: getRenderableEmfBounds returned null \u2014 returning null");
4978
+ emfLog("convertEmfInternal: getRenderableEmfBounds returned null, returning null");
4893
4979
  return null;
4894
4980
  }
4895
4981
  const logicalW = renderBounds.right - renderBounds.left;
4896
4982
  const logicalH = renderBounds.bottom - renderBounds.top;
4897
- emfLog(`convertEmfToDataUrl: logicalSize=${logicalW}\xD7${logicalH}`);
4983
+ emfLog(`convertEmfInternal: logicalSize=${logicalW}\xD7${logicalH}`);
4898
4984
  const setup = createCanvas(
4899
4985
  logicalW,
4900
4986
  logicalH,
@@ -4904,15 +4990,15 @@ async function convertEmfToDataUrl(buffer, options, recursionDepth = 0) {
4904
4990
  opts.maxCanvasDimension
4905
4991
  );
4906
4992
  if (!setup) {
4907
- emfLog("convertEmfToDataUrl: createCanvas returned null \u2014 returning null");
4993
+ emfLog("convertEmfInternal: createCanvas returned null, returning null");
4908
4994
  return null;
4909
4995
  }
4910
4996
  const { canvas, ctx } = setup;
4911
4997
  emfLog(
4912
- `convertEmfToDataUrl: canvas created ${canvas.width}\xD7${canvas.height} (dpiScale=${dpiScale})`
4998
+ `convertEmfInternal: canvas created ${canvas.width}\xD7${canvas.height} (dpiScale=${dpiScale})`
4913
4999
  );
4914
5000
  ctx.save();
4915
- emfLog("convertEmfToDataUrl: starting replayEmfRecords...");
5001
+ emfLog("convertEmfInternal: starting replayEmfRecords...");
4916
5002
  const deferredImages = replayEmfRecords(
4917
5003
  view,
4918
5004
  ctx,
@@ -4922,30 +5008,25 @@ async function convertEmfToDataUrl(buffer, options, recursionDepth = 0) {
4922
5008
  dpiScale,
4923
5009
  replayOptions
4924
5010
  );
4925
- emfLog(
4926
- `convertEmfToDataUrl: replayEmfRecords returned ${deferredImages.length} deferred images`
4927
- );
5011
+ emfLog(`convertEmfInternal: replayEmfRecords returned ${deferredImages.length} deferred images`);
4928
5012
  ctx.restore();
4929
- await processDeferredImages(ctx, deferredImages);
4930
- emfLog("convertEmfToDataUrl: exporting canvas to PNG data URL...");
5013
+ await processDeferredImages(ctx, deferredImages, recursionDepth);
5014
+ emfLog("convertEmfInternal: exporting canvas to PNG data URL...");
4931
5015
  const result = await exportCanvasToPngDataUrl(canvas);
4932
5016
  if (result) {
4933
- emfLog(`convertEmfToDataUrl: SUCCESS \u2014 data URL length=${result.length}`);
5017
+ emfLog(`convertEmfInternal: SUCCESS, data URL length=${result.length}`);
4934
5018
  } else {
4935
- emfWarn("convertEmfToDataUrl: exportCanvasToPngDataUrl returned null");
5019
+ emfWarn("convertEmfInternal: exportCanvasToPngDataUrl returned null");
4936
5020
  }
4937
- emfLog("=== convertEmfToDataUrl END ===");
5021
+ emfLog("=== convertEmfInternal END ===");
4938
5022
  return result;
4939
5023
  } catch (err) {
4940
- emfWarn("convertEmfToDataUrl: EXCEPTION:", err instanceof Error ? err.message : err);
4941
- console.warn("[pptx-editor] EMF conversion failed:", err instanceof Error ? err.message : err);
5024
+ emfWarn("convertEmfInternal: EXCEPTION:", err instanceof Error ? err.message : err);
5025
+ console.warn("[emf-converter] EMF conversion failed:", err instanceof Error ? err.message : err);
4942
5026
  return null;
4943
5027
  }
4944
5028
  }
4945
- async function convertWmfToDataUrl(buffer, options, recursionDepth = 0) {
4946
- if (recursionDepth > MAX_METAFILE_RECURSION) {
4947
- return null;
4948
- }
5029
+ async function convertWmfInternal(buffer, view, options, recursionDepth) {
4949
5030
  const opts = {};
4950
5031
  const dpiScale = opts.dpiScale ?? DEFAULT_DPI_SCALE;
4951
5032
  const effectiveMaxWidth = opts.maxWidth;
@@ -4956,20 +5037,19 @@ async function convertWmfToDataUrl(buffer, options, recursionDepth = 0) {
4956
5037
  };
4957
5038
  try {
4958
5039
  emfLog(
4959
- "=== convertWmfToDataUrl START ===",
5040
+ "=== convertWmfInternal START ===",
4960
5041
  `buffer=${buffer.byteLength} bytes, dpiScale=${dpiScale}`
4961
5042
  );
4962
- const view = new DataView(buffer);
4963
5043
  const header = parseWmfHeader(view);
4964
5044
  if (!header) {
4965
- emfLog("convertWmfToDataUrl: parseWmfHeader returned null");
5045
+ emfLog("convertWmfInternal: parseWmfHeader returned null");
4966
5046
  return null;
4967
5047
  }
4968
5048
  const logicalW = header.boundsRight - header.boundsLeft;
4969
5049
  const logicalH = header.boundsBottom - header.boundsTop;
4970
- emfLog(`convertWmfToDataUrl: logicalSize=${logicalW}\xD7${logicalH}`);
5050
+ emfLog(`convertWmfInternal: logicalSize=${logicalW}\xD7${logicalH}`);
4971
5051
  if (logicalW <= 0 || logicalH <= 0) {
4972
- emfLog("convertWmfToDataUrl: invalid dimensions \u2014 returning null");
5052
+ emfLog("convertWmfInternal: invalid dimensions, returning null");
4973
5053
  return null;
4974
5054
  }
4975
5055
  const setup = createCanvas(
@@ -4988,12 +5068,12 @@ async function convertWmfToDataUrl(buffer, options, recursionDepth = 0) {
4988
5068
  replayWmfRecords(view, ctx, header, canvas.width, canvas.height, replayOptions);
4989
5069
  ctx.restore();
4990
5070
  const result = await exportCanvasToPngDataUrl(canvas);
4991
- emfLog(`convertWmfToDataUrl: result=${result ? `dataUrl len=${result.length}` : "null"}`);
4992
- emfLog("=== convertWmfToDataUrl END ===");
5071
+ emfLog(`convertWmfInternal: result=${result ? `dataUrl len=${result.length}` : "null"}`);
5072
+ emfLog("=== convertWmfInternal END ===");
4993
5073
  return result;
4994
5074
  } catch (err) {
4995
- emfWarn("convertWmfToDataUrl: EXCEPTION:", err instanceof Error ? err.message : err);
4996
- console.warn("[pptx-editor] WMF conversion failed:", err instanceof Error ? err.message : err);
5075
+ emfWarn("convertWmfInternal: EXCEPTION:", err instanceof Error ? err.message : err);
5076
+ console.warn("[emf-converter] WMF conversion failed:", err instanceof Error ? err.message : err);
4997
5077
  return null;
4998
5078
  }
4999
5079
  }
@@ -96136,7 +96216,7 @@ var init_PptxHandlerRuntimeMediaData = __esm({
96136
96216
  try {
96137
96217
  if (ext === "emf" || ext === "wmf") {
96138
96218
  const binaryBuffer = await imageFile2.async("arraybuffer");
96139
- const converted = ext === "emf" ? await convertEmfToDataUrl(binaryBuffer) : await convertWmfToDataUrl(binaryBuffer);
96219
+ const converted = await convertMetafileToDataUrl(binaryBuffer);
96140
96220
  if (converted) {
96141
96221
  this.imageDataCache.set(imagePath, converted);
96142
96222
  return converted;
Binary file
Binary file
@@ -1,4 +1,4 @@
1
- import { ThemePresets, PptxMarkdownConverter, hasTextProperties, hasShapeProperties } from './chunk-TMTQJAGK.mjs';
1
+ import { ThemePresets, PptxMarkdownConverter, hasTextProperties, hasShapeProperties } from './chunk-33YE6E2O.mjs';
2
2
  import { __export } from './chunk-XGB3TDIC.mjs';
3
3
  import * as mcp from 'pptx-viewer-mcp';
4
4
  import * as mcpSchemas from 'pptx-viewer-mcp/schemas';
Binary file
Binary file
@@ -1,4 +1,4 @@
1
- import { SHAPE_PRESET_DEFS, VIEWER_SHORTCUT_REFERENCE, STROKE_DASH_OPTIONS, getAnimationInitialStyle, cloneHistorySnapshot, hasShapeProperties, getImageFitStyle, getImageFillCounterTransform, getComputedFillStyle, isImageLikeElement, getCropShapeClipPath, getImageTilingStyle, mediaPlaybackAttributes, buildTextBlockStyle, hasTextProperties, toCssWritingMode, toCssTextOrientation, toCssVerticalDirection, buildTextBodyLayoutStyle, buildTextBody3DSceneStyle, buildParagraphs, colorWithOpacity, normalizeHexColor, hexToRgbUnit, build3DExtrusionData, getComputedEffectStyle, getComputedStrokeStyle, getAnimationColorBaseStyle, isStrokeOnlyPresetElement, resolveShapeGeometry, getConnectorPathGeometry, normalizeStrokeDashType, getSvgStrokeDasharray, buildSvgGradientDef, buildStrokeOutline, getPresetShapeVectorGeometry, isWedgeCalloutPresetShape, svgGradientFillRef, isCalloutShape, getCalloutLeaderLineGeometry, buildCalloutLeaderLineSvgPath, getCalloutViewBoxBounds, svgLineCap, getCompoundLineOffsets, getCompoundLineWidths, canDrillDown, computeSelectionRect, DEFAULT_FONT_FAMILY, cellStyleToCss, rectToCells, isCellInRect, tableContainerCss, buildChartViewModel, resolveChartKind, chartPreserveAspectRatio, buildNotesPdfBytes, buildTiledSlidesPdfBytes, buildPreviewAnimation, buildMotionPathPreview, mediaFallbackVisual, scheduleMediaTrimAndFade, registerCrossSlideAudio, withInlineListDecorationDefaults, segmentStyleToCss, resolveAutoFitFontScale, applyUnderlineVariant, nestedTextDecorationStyle, resolveFontKerning, getSubstituteFontFamily, parsePanoseString, resolveScriptFontSet, hasDistinctScriptFonts, pieceLetterSpacing, resolveMetricTrackingPx, hollowTextFillStyle, stripUnderlineDecoration, buildTabContext, TEXT_BUILD_ID_SEP, buildTextBuildSpec, textBuildSpanStyle, apply3dEffects, customGeometryPathsToSvgSubpaths, buildSubpathPaints, computeColumnBoundaries, getTableCellBandStyle, parseDrawingColor, parseDrawingColorOpacity, getCellDiagonalBorders, xmlText, cellRunStyle, getChartStylePalette, computeChartLegendLayout, mediaFallbackIcon, mediaFallbackLabelKey, MEDIA_CHROME_ATTRIBUTE, convertOmmlToMathMl, sanitizeMathMl, tableCellCss, computeResizedColumnWidths, computeResizedRowHeight, DEFAULT_ROW_HEIGHT, ooxmlGradientAngleToCssDegrees, buildRectPathGradient, buildRunTabLines, chartPartToAttrs, splitWordsForUnderline, splitRunForMetrics, splitRunByScriptFont } from './chunk-TMTQJAGK.mjs';
1
+ import { SHAPE_PRESET_DEFS, VIEWER_SHORTCUT_REFERENCE, STROKE_DASH_OPTIONS, getAnimationInitialStyle, cloneHistorySnapshot, hasShapeProperties, getImageFitStyle, getImageFillCounterTransform, getComputedFillStyle, isImageLikeElement, getCropShapeClipPath, getImageTilingStyle, mediaPlaybackAttributes, buildTextBlockStyle, hasTextProperties, toCssWritingMode, toCssTextOrientation, toCssVerticalDirection, buildTextBodyLayoutStyle, buildTextBody3DSceneStyle, buildParagraphs, colorWithOpacity, normalizeHexColor, hexToRgbUnit, build3DExtrusionData, getComputedEffectStyle, getComputedStrokeStyle, getAnimationColorBaseStyle, isStrokeOnlyPresetElement, resolveShapeGeometry, getConnectorPathGeometry, normalizeStrokeDashType, getSvgStrokeDasharray, buildSvgGradientDef, buildStrokeOutline, getPresetShapeVectorGeometry, isWedgeCalloutPresetShape, svgGradientFillRef, isCalloutShape, getCalloutLeaderLineGeometry, buildCalloutLeaderLineSvgPath, getCalloutViewBoxBounds, svgLineCap, getCompoundLineOffsets, getCompoundLineWidths, canDrillDown, computeSelectionRect, DEFAULT_FONT_FAMILY, cellStyleToCss, rectToCells, isCellInRect, tableContainerCss, buildChartViewModel, resolveChartKind, chartPreserveAspectRatio, buildNotesPdfBytes, buildTiledSlidesPdfBytes, buildPreviewAnimation, buildMotionPathPreview, mediaFallbackVisual, scheduleMediaTrimAndFade, registerCrossSlideAudio, withInlineListDecorationDefaults, segmentStyleToCss, resolveAutoFitFontScale, applyUnderlineVariant, nestedTextDecorationStyle, resolveFontKerning, getSubstituteFontFamily, parsePanoseString, resolveScriptFontSet, hasDistinctScriptFonts, pieceLetterSpacing, resolveMetricTrackingPx, hollowTextFillStyle, stripUnderlineDecoration, buildTabContext, TEXT_BUILD_ID_SEP, buildTextBuildSpec, textBuildSpanStyle, apply3dEffects, customGeometryPathsToSvgSubpaths, buildSubpathPaints, computeColumnBoundaries, getTableCellBandStyle, parseDrawingColor, parseDrawingColorOpacity, getCellDiagonalBorders, xmlText, cellRunStyle, getChartStylePalette, computeChartLegendLayout, mediaFallbackIcon, mediaFallbackLabelKey, MEDIA_CHROME_ATTRIBUTE, convertOmmlToMathMl, sanitizeMathMl, tableCellCss, computeResizedColumnWidths, computeResizedRowHeight, DEFAULT_ROW_HEIGHT, ooxmlGradientAngleToCssDegrees, buildRectPathGradient, buildRunTabLines, chartPartToAttrs, splitWordsForUnderline, splitRunForMetrics, splitRunByScriptFont } from './chunk-33YE6E2O.mjs';
2
2
  import { translationsEn } from './chunk-R664EPDC.mjs';
3
3
  import { clsx } from 'clsx';
4
4
  import { twMerge } from 'tailwind-merge';
Binary file
Binary file
@@ -1,7 +1,7 @@
1
- import { computeFocusTargets, deckDataFieldChanged, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, collectStoredChats, exportAiChatLogs, applyElementUpdate } from './chunk-TOOKJUPG.mjs';
2
- import { useViewerOptions, useReadOnlyRecommendationState, useCompatibilityToastsState, useReducedMotion, useViewerState, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useViewPreferencesSync, useLayoutSwitching, LoadingState, ViewerOptionsContext, SmartArt3DContext, SurfaceChart3DContext, BarChart3DContext, LineChart3DContext, AreaChart3DContext, PieChart3DContext, useFollowMode, useBroadcastFollower, SlideBackgroundImageLayer, StaticElementRenderer, safePrompt, scopeLayoutOptionsToActiveSlide, ChartPartSelectionProvider, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, useCollaborativeState, useYjsDocumentSync, useCollaborationLivePatch, useViewerOptionsContext, useVirtualizedSlides, useSwipeNavigation, PresentationTransitionOverlay, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, ElementRenderer, SmartArtRenderer, playAnimationSound, ResizeHandles, renderStrokeView, useChartPartSelection, resolveSmartArtDataPalette } from './chunk-BXMPXKV5.mjs';
3
- import { SHAPE_PRESETS, ANIMATION_PRESET_OPTIONS, cn, SLIDE_NAV_THUMBNAIL_WIDTH, TOOLBAR_SECTIONS, DEFAULT_SECTION_GROUP_ID, SHORTCUT_REFERENCE_ITEMS as SHORTCUT_REFERENCE_ITEMS$1, isConnectorOrLineElement, GRID_SIZE, MIN_ELEMENT_SIZE, CONNECTOR_ARROW_OPTIONS, ARROW_SIZE_OPTIONS, DEFAULT_FILL_COLOR, startMotionPathPreview, startPreviewAnimation, stopPreviewAnimation, DEFAULT_STROKE_COLOR, STROKE_DASH_OPTIONS } from './chunk-HZEOZUUH.mjs';
4
- import { SWITCHABLE_LAYOUT_TYPES, compileEquationTemplateMathMl, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, resolveAutosaveActivation, buildThemeColorMap, viewerOptionsToPreferences, applyPreferenceToOptions, listAutosaveSnapshots, deleteAutosaveSnapshot, resolveExpiredAutosaveSnapshots, resolveHistoryDepth, applyAutoCorrect, resolveImageResolutionScale, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, shouldShowAutosaveRecoveryPrompt, resolveOptionRootClasses, resolve3DRenderingFlags, resolveSlideSizeSelection, RULER_THICKNESS, RULER_FONT_SIZE, buildPreviewElements, deriveSlideFieldContext, SLIDE_TRANSITION_OPTIONS, hiddenSlideCue, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, visibleTemplateElements, normalizeHexColor, themeToCssVars, shouldClearAutosaveCacheOnClose, masterViewCrudActions, applyMasterViewCrudAction, masterViewCrudFailureKey, applyMotionPathPreset, resetSlideLayoutPath, DEFAULT_INSERT_CHART_KIND, hasCopyableFormat, templateSchemeFromTheme, createBackstagePresentation, playFeedbackSound, shouldDiscardAutosaveOnSuccessfulSave, setMasterViewBackgroundColor, canUseClipboard, runProgramNoticeStackStyle, compatToastStackStyle, printPropertiesFrameSlides, printPropertiesSlidesPerPage, getDensePanelTouchTargetPx, shouldStickyActionRow, VIEWER_OPTIONS_TABS, DEFAULT_QUICK_ACCESS_COMMAND_IDS, isHeaderFooterDateTextVisible, isHeaderFooterHeaderTextVisible, isHeaderFooterFooterTextVisible, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, buildDeckSaveOptions, getSlideBackgroundStyle, pushRecentColor, mruColorsPatch, filterCommands, resolveTitleBarStatusKey, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, resolveScreenTip, masterViewBackgroundColor, buildFieldSubstitutionContext, shouldConfirmExternalHyperlink, safeOpenUrl, resolvePresentationAction, isPpactionUrl, parsePpactionUrl, isPresentationAdvanceClick, toggleBlackboard, PRESENT_TOOLBAR_CLASSES, buildContextMenuEntries, themeColorSchemesEqual, EXPANDED_MAX_HEIGHT, STATUS_BAR_CLASSES, buildBarActions, formatVersionTimestamp, formatRelativeTime, scanAvailableFontFamilies, PRESETS, CATEGORIES, convertOmmlToLatex, compileLatexEquation, convertLatexToOmml, EQUATION_TEMPLATES, clampPercent2, resolveDefaultPrintSettings, HANDOUT_OPTIONS, TOOLBAR_TABS, SHORTCUT_REFERENCE_ITEMS, resolveViewerAddinRows, availableQuickAccessCommands, addQuickAccessCommand, removeQuickAccessCommand, moveQuickAccessCommand, CUSTOM_FONT_ACCEPT, activateModalFocus, buildCollaborationShareUrl, buildActiveSessionUsers, SORTER_MIN_ZOOM, SORTER_ZOOM_STEP, SORTER_MAX_ZOOM, canGoPrevious, formatSlideCounter, READING_VIEW_COUNTER_ATTR, canGoNext, READING_VIEW_ATTR, OUTLINE_LEVEL_ATTR, OUTLINE_SLIDE_ATTR, OUTLINE_ROW_ATTR, OUTLINE_VIEW_ATTR, mobileElapsedSince, nextPresentedSlide, presenterPrevDisabled, presenterNextDisabled, formatMobileElapsed, mobileSlideCounter, presenterPaneAdvancesOnClick, presenterTimerProgress, PRESENTER_CONSOLE_CLASSES, formatElapsed, extraQuickAccessCommands, TAB_ROW_ACTION_CLASSES, listBackstageRecentFiles, BACKSTAGE_NAV, hasTextProperties, COMMON_FONT_SIZES, textFontSizePtToPx, INSERT_CHART_TYPES, ACTION_BUTTON_PRESETS, CHARACTER_SPACING_OPTIONS, OFFICE_COLOR_SWATCHES, hasShapeProperties, shapeFillChange, shapeOutlineChange, readRibbonTransitionDraft, ribbonTransitionUpdates, playSlideTransitionPreview, RIBBON_TRANSITION_PRESETS, transitionSoundOptions, transitionSoundSelectedValue, DEFAULT_MOTION_PATH_PRESET_ID, SLIDE_SHOW_OPTIONS, slideShowOptionChange, readSlideShowOption, SLIDE_VIRTUALIZATION_THRESHOLD, PRESENTATION_HIT_TEST_CSS, PRESENTATION_STAGE_ATTRIBUTE, buildStrokePathD, cursorForTool, annotationOverlayZIndex, presentationInkPath, resolveNotesSchematicBodyFontSizePx, motionPathFor, setMotionPath, getShapeAdjustmentHandleDescriptors, shouldShowElementHandles, PRESENTER_NAVIGATOR_LABEL_KEYS, PEN_COLORS, HIGHLIGHTER_COLORS, isBlackboardActive, scaleSlidesForSizeChange, slideSizeToCanvasPx, resolveSelectionPaneRename, PRESET_THEMES, resolveNotesSegments, segmentsToEditorHtml, DEBOUNCE_MS, createPlainNotesSegments, parseSegmentsFromRichEditor, segmentsToPlainText, getCurrentParagraphIndex, segmentsToParagraphs, paragraphsToSegments, MAX_INDENT_LEVEL, INDENT_PX, isUrlSafe, buildNotesPrintHtml, MIN_TOUCH_TARGET_PX, toggleSheet, SMARTART_PREVIEW_ELEMENT_HEIGHT, SMARTART_PREVIEW_ELEMENT_WIDTH, buildSmartArtPreviewElement, sanitizeMathMl, computeHandoutLayout, getPrintableArea, generateNoteLineCount, computeAllNotesPages, getNotesPrintableArea, downloadBlob, clampOptionNumber, QUICK_ACCESS_COMMAND_CATALOG, registerCustomFont, openReadingView, applyReadingViewCommand, createPresentationKeyBuffer, readingViewFitScale, READING_VIEW_STAGE_ATTR, buildOutline, applyOutlineEdit, mapOutlineKey, notesSegmentsToSpans, erasePresentationInkAt, movePresenterPointer, appendPresentationInkPoint, PRESENTER_CONSOLE_CONTROLS, NOTES_FONT_SIZE_DEFAULT, formatTime, NOTES_FONT_SIZE_MIN, clampNotesFontSize, NOTES_FONT_SIZE_STEP, NOTES_FONT_SIZE_MAX, BACKSTAGE_TEMPLATES, formatBackstageDate, formatBackstageSize, backstageCardsFor, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, resolveDefaultFontFamily, textFontSizePxToPt, buildFontCatalog, getSelectionTextStyleFlags, getInlineEditorSelectionResult, selectedParagraphBulletKind, elementBulletKind, selectionBulletKind, TEXT_DECORATION_FLAGS, nextToggleValue, buildThemeColorSwatchGrid, themeColorSwatchRows, findSelectedThemeSwatch, themeSwatchCommit, RIBBON_SHAPE_SWATCHES, canGroupSelection, canUngroupSelection, canSetStrokeWidth, strokeWidthOf, readSoundFileAsDataUrl, applyTransitionSoundFile, TRANSITION_SOUND_OTHER_VALUE, TRANSITION_SOUND_NONE_VALUE, clearTransitionSound, applyTransitionStockSound, transitionStockSoundId, getEffectSoundAsset, ENTRANCE_PRESET_VALUES, EMPHASIS_PRESET_VALUES, EXIT_PRESET_VALUES, MOTION_PATH_FAMILIES, motionPathFamilyLabelKey, motionPathPresetsByFamily, motionPathPresetLabelKey, masterViewPseudoSlide, attachEditorImagePaste, authorConnectorBetweenSites, findEraserHitElementId, generateTicks, rulerDragToGuidePosition, resolveElementInteractivity, getElementTransformWithoutRotation, getElementTransform, buildChartQuickActionsDescriptor, applyChartElementToggle, CHART_QUICK_ACTION_BUTTON_SIZE, applyChartStylePreset, hideChartSeries, restoreFilteredSeries, getActiveXControlOverlayView, buildCommentMarkers, COMMENT_MARKER_SIZE, collectConnectorSiteCandidates, getConnectorEndpointHandles, findConnectorSiteNear, motionPathToSvgD, motionPathEndPixel, isEditableMotionPath, setMotionPathEnd, hasMultipleSelectedTableCells, applyTableStyleDelete, applyTableStyleMapChange, themeColorLabel, buildThemeColorGrid, THEME_COLOR_SCHEME_KEYS, COMMON_FONTS, handleReadingViewKey, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, isCurrentLayout, SLIDE_TEMPLATES, computeAnchoredPopupPosition, buildFreeformShapeElement, buildLiveInkStrokeView, CONNECTOR_SITE_SNAP_PX, resolveConnectorEndpointUpdate, withConnectorEndpointUpdate, getShapeConnectionSites, isElementLocked, isImageLikeElement, mergeSlideTransition, getElementLabel, mapSlideSorterKey, isEditorTextInputTarget, clampSorterZoom, buildLayoutPreviewGeometry, buildSlideTemplateContent, hasTiltData, elementLockTogglePatch, buildTableDataGrid, getDenseGridLayoutPlan, appendTableElementRow, removeLastTableElementRow, appendTableElementColumn, removeLastTableElementColumn, removeTableElementColumn, removeTableElementRow, setTableElementCellText, TABLE_STYLE_PRESETS, applyTableStylePreset, tableStyleAssignmentUpdate, evenColumnWidths, redistributeColumnWidth, evenRowHeights, patchChartData, collapseChartTitleRunsForEdit, chartGridlinesState, chartGridlinesPatch, seriesSecondaryAxisPatch, setChartCategoryLabel, setChartCellValue, addChartCategory, removeChartCategory, addChartSeries, removeChartSeries, setDataLabelsRangeCache, setChartAxisLogScale, setChartAxisTitleStyle, setChartAxisGridlineStyle, setChartSeriesMarker, setChartSeriesChartType, setChartDataPointFill, setChartDataPointExplosion, setChartDataPointMarker, setChartDataPointLabel, describeSmartArtBounds, canAddTopLevelNode, classifyExtraConnections, siblingIndex, siblingCount, canRemoveTopLevelNode, canInteractWithElement, buildOleObjectNamePatch, getOleObjectTypeLabel, sanitizeGradientStops, shouldShowAccessibilitySection, pptxActionToElementAction, withFrameSlides, withSlidesPerPage, applyThemeOverrideToSlide, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, schemaLabel, THEME_COLOR_SLOT_LABEL_KEYS, SLIDE_SIZE_PRESETS, TRANSITION_VALID_DIRECTIONS, TRANSITION_ORIENTATION_TYPES, clampTransitionNumber, TRANSITION_SPEED_OPTIONS, TRANSITION_MORPH_OPTIONS, flattenTagCollections, resolveTemplateBackgroundRows, formatCommentTimestamp, commentMentionQuery, matchCommentMentionAuthors, buildAnimationTimelineRows, clearMotionPath, getEffectSoundState, setEffectSound, setEffectStockSound, setAfterAnimation, setAfterAnimationColor, DIRECTIONAL_PRESETS, buildAnimationTimelineBars, motionPathPresetIdForPath, EFFECT_SOUND_CATALOGUE, normalizeTableStyleGuid, describeTableStyleEditor, TABLE_STYLE_EDITOR_PARTS, computeMergeCellRight, computeMergeCellDown, computeSplitCell, updateMergeAttrsInRawXml, resolveDisplayedChartType, CHART_TYPE_OPTIONS, BAR3D_SHAPE_OPTIONS, bar3DShapePatch, RADAR_STYLE_OPTIONS, radarStylePatch, SURFACE_WIREFRAME_OPTIONS, surfaceWireframePatch, isSeriesUsingSecondaryAxis, listChartUserShapeRows, withChartUserShapeAdded, createDefaultChartUserShape, withChartUserShapeRowRemoved, withChartUserShapeRowTextUpdated, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, addSmartArtNodeAsChild, setSmartArtNodeStyle, removeSmartArtNode, addSiblingAfter, removeEmptyNode, demote, promote, updateSmartArtNodeText, reorder, clampCropValue, DUOTONE_PRESETS, ARTISTIC_EFFECTS, mediaTrimEndSeconds, trimmedMediaDurationMs, mediaTrimEndAbsoluteMs, mediaTrimEndMsFromAbsoluteMs, buildOleEditDialogDescriptor, buildOleContentUpdatePatch, applyOleSheetCellEdit, getOleSheetGrid, applyOleDocumentParagraphEdit, getOleDocumentParagraphs, applyOleNestedDeckElementTextEdit, getOleNestedDeckDetail, replaceOleFile, getNonVisualDescriptionFields, resolveActionType, ELEMENT_ACTION_TYPE_OPTIONS, elementActionToPptxAction, canCommitActionType, slideSizeFromPreset, withSlideSizeOrientation, TRANSITION_DIR_ARROWS, buildDirectionGrid, getSlideTransitionAnimations, SLIDE_TRANSITION_KEYFRAMES, updateTagInCollections, deleteTagFromCollections, addTagToCollections, commentTextSegments, COMMENT_MENTION_CLASS, COMMENT_MENTION_ATTRIBUTE, insertCommentMention, reorderAnimationTimelineRows, applyAnimationTimelineOrder, animationEffectLabel, TABLE_STYLE_BORDER_SIDES, applyTableStyleFieldEdit, createTableStyleEntry, addTableStyleToMap, deleteTableStyleFromMap, LBL, SEL, FILL_MODE_OPTIONS, SECTION_HEADING, NUM, getChartUserShapeGroupTransform, withChartUserShapeGroupChildAdded, createDefaultChartUserShapeGroupChild, withChartUserShapeRowUpdated, getChartUserShapeRowChartBox, withChartUserShapeRowFlipUpdated, withChartUserShapeRowRotationUpdated, withChartUserShapeRowChartBoxUpdated, switchSmartArtLayout, rebuildDrawingShapesIfCleared, mediaTrimEndMsFromSeconds, validateMediaTrimRange, SHAPE_QUICK_STYLES, quickStyleSwatchCss, PATTERN_PRESET_OPTIONS, getPatternSvg, COMPOUND_LINE_OPTIONS, LINE_JOIN_OPTIONS, LINE_CAP_OPTIONS, TEXT_WARP_PRESETS, warpPreviewPath, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, toSlideIndex, TABLE_STYLE_BORDER_SIDE_LABEL_KEYS, TABLE_STYLE_DASH_PRESETS, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS, FILL_PATTERN_LABEL_KEYS, openNativeEyeDropper, toggleText3dExtrusion, BEVEL_PRESETS } from './chunk-TMTQJAGK.mjs';
1
+ import { computeFocusTargets, deckDataFieldChanged, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, collectStoredChats, exportAiChatLogs, applyElementUpdate } from './chunk-5F426BCZ.mjs';
2
+ import { useViewerOptions, useReadOnlyRecommendationState, useCompatibilityToastsState, useReducedMotion, useViewerState, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useViewPreferencesSync, useLayoutSwitching, LoadingState, ViewerOptionsContext, SmartArt3DContext, SurfaceChart3DContext, BarChart3DContext, LineChart3DContext, AreaChart3DContext, PieChart3DContext, useFollowMode, useBroadcastFollower, SlideBackgroundImageLayer, StaticElementRenderer, safePrompt, scopeLayoutOptionsToActiveSlide, ChartPartSelectionProvider, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, useCollaborativeState, useYjsDocumentSync, useCollaborationLivePatch, useViewerOptionsContext, useVirtualizedSlides, useSwipeNavigation, PresentationTransitionOverlay, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, ElementRenderer, SmartArtRenderer, playAnimationSound, ResizeHandles, renderStrokeView, useChartPartSelection, resolveSmartArtDataPalette } from './chunk-IWHZ2DUD.mjs';
3
+ import { SHAPE_PRESETS, ANIMATION_PRESET_OPTIONS, cn, SLIDE_NAV_THUMBNAIL_WIDTH, TOOLBAR_SECTIONS, DEFAULT_SECTION_GROUP_ID, SHORTCUT_REFERENCE_ITEMS as SHORTCUT_REFERENCE_ITEMS$1, isConnectorOrLineElement, GRID_SIZE, MIN_ELEMENT_SIZE, CONNECTOR_ARROW_OPTIONS, ARROW_SIZE_OPTIONS, DEFAULT_FILL_COLOR, startMotionPathPreview, startPreviewAnimation, stopPreviewAnimation, DEFAULT_STROKE_COLOR, STROKE_DASH_OPTIONS } from './chunk-GITM3RKP.mjs';
4
+ import { SWITCHABLE_LAYOUT_TYPES, compileEquationTemplateMathMl, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, resolveAutosaveActivation, buildThemeColorMap, viewerOptionsToPreferences, applyPreferenceToOptions, listAutosaveSnapshots, deleteAutosaveSnapshot, resolveExpiredAutosaveSnapshots, resolveHistoryDepth, applyAutoCorrect, resolveImageResolutionScale, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, shouldShowAutosaveRecoveryPrompt, resolveOptionRootClasses, resolve3DRenderingFlags, resolveSlideSizeSelection, RULER_THICKNESS, RULER_FONT_SIZE, buildPreviewElements, deriveSlideFieldContext, SLIDE_TRANSITION_OPTIONS, hiddenSlideCue, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, visibleTemplateElements, normalizeHexColor, themeToCssVars, shouldClearAutosaveCacheOnClose, masterViewCrudActions, applyMasterViewCrudAction, masterViewCrudFailureKey, applyMotionPathPreset, resetSlideLayoutPath, DEFAULT_INSERT_CHART_KIND, hasCopyableFormat, templateSchemeFromTheme, createBackstagePresentation, playFeedbackSound, shouldDiscardAutosaveOnSuccessfulSave, setMasterViewBackgroundColor, canUseClipboard, runProgramNoticeStackStyle, compatToastStackStyle, printPropertiesFrameSlides, printPropertiesSlidesPerPage, getDensePanelTouchTargetPx, shouldStickyActionRow, VIEWER_OPTIONS_TABS, DEFAULT_QUICK_ACCESS_COMMAND_IDS, isHeaderFooterDateTextVisible, isHeaderFooterHeaderTextVisible, isHeaderFooterFooterTextVisible, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, buildDeckSaveOptions, getSlideBackgroundStyle, pushRecentColor, mruColorsPatch, filterCommands, resolveTitleBarStatusKey, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, resolveScreenTip, masterViewBackgroundColor, buildFieldSubstitutionContext, shouldConfirmExternalHyperlink, safeOpenUrl, resolvePresentationAction, isPpactionUrl, parsePpactionUrl, isPresentationAdvanceClick, toggleBlackboard, PRESENT_TOOLBAR_CLASSES, buildContextMenuEntries, themeColorSchemesEqual, EXPANDED_MAX_HEIGHT, STATUS_BAR_CLASSES, buildBarActions, formatVersionTimestamp, formatRelativeTime, scanAvailableFontFamilies, PRESETS, CATEGORIES, convertOmmlToLatex, compileLatexEquation, convertLatexToOmml, EQUATION_TEMPLATES, clampPercent2, resolveDefaultPrintSettings, HANDOUT_OPTIONS, TOOLBAR_TABS, SHORTCUT_REFERENCE_ITEMS, resolveViewerAddinRows, availableQuickAccessCommands, addQuickAccessCommand, removeQuickAccessCommand, moveQuickAccessCommand, CUSTOM_FONT_ACCEPT, activateModalFocus, buildCollaborationShareUrl, buildActiveSessionUsers, SORTER_MIN_ZOOM, SORTER_ZOOM_STEP, SORTER_MAX_ZOOM, canGoPrevious, formatSlideCounter, READING_VIEW_COUNTER_ATTR, canGoNext, READING_VIEW_ATTR, OUTLINE_LEVEL_ATTR, OUTLINE_SLIDE_ATTR, OUTLINE_ROW_ATTR, OUTLINE_VIEW_ATTR, mobileElapsedSince, nextPresentedSlide, presenterPrevDisabled, presenterNextDisabled, formatMobileElapsed, mobileSlideCounter, presenterPaneAdvancesOnClick, presenterTimerProgress, PRESENTER_CONSOLE_CLASSES, formatElapsed, extraQuickAccessCommands, TAB_ROW_ACTION_CLASSES, listBackstageRecentFiles, BACKSTAGE_NAV, hasTextProperties, COMMON_FONT_SIZES, textFontSizePtToPx, INSERT_CHART_TYPES, ACTION_BUTTON_PRESETS, CHARACTER_SPACING_OPTIONS, OFFICE_COLOR_SWATCHES, hasShapeProperties, shapeFillChange, shapeOutlineChange, readRibbonTransitionDraft, ribbonTransitionUpdates, playSlideTransitionPreview, RIBBON_TRANSITION_PRESETS, transitionSoundOptions, transitionSoundSelectedValue, DEFAULT_MOTION_PATH_PRESET_ID, SLIDE_SHOW_OPTIONS, slideShowOptionChange, readSlideShowOption, SLIDE_VIRTUALIZATION_THRESHOLD, PRESENTATION_HIT_TEST_CSS, PRESENTATION_STAGE_ATTRIBUTE, buildStrokePathD, cursorForTool, annotationOverlayZIndex, presentationInkPath, resolveNotesSchematicBodyFontSizePx, motionPathFor, setMotionPath, getShapeAdjustmentHandleDescriptors, shouldShowElementHandles, PRESENTER_NAVIGATOR_LABEL_KEYS, PEN_COLORS, HIGHLIGHTER_COLORS, isBlackboardActive, scaleSlidesForSizeChange, slideSizeToCanvasPx, resolveSelectionPaneRename, PRESET_THEMES, resolveNotesSegments, segmentsToEditorHtml, DEBOUNCE_MS, createPlainNotesSegments, parseSegmentsFromRichEditor, segmentsToPlainText, getCurrentParagraphIndex, segmentsToParagraphs, paragraphsToSegments, MAX_INDENT_LEVEL, INDENT_PX, isUrlSafe, buildNotesPrintHtml, MIN_TOUCH_TARGET_PX, toggleSheet, SMARTART_PREVIEW_ELEMENT_HEIGHT, SMARTART_PREVIEW_ELEMENT_WIDTH, buildSmartArtPreviewElement, sanitizeMathMl, computeHandoutLayout, getPrintableArea, generateNoteLineCount, computeAllNotesPages, getNotesPrintableArea, downloadBlob, clampOptionNumber, QUICK_ACCESS_COMMAND_CATALOG, registerCustomFont, openReadingView, applyReadingViewCommand, createPresentationKeyBuffer, readingViewFitScale, READING_VIEW_STAGE_ATTR, buildOutline, applyOutlineEdit, mapOutlineKey, notesSegmentsToSpans, erasePresentationInkAt, movePresenterPointer, appendPresentationInkPoint, PRESENTER_CONSOLE_CONTROLS, NOTES_FONT_SIZE_DEFAULT, formatTime, NOTES_FONT_SIZE_MIN, clampNotesFontSize, NOTES_FONT_SIZE_STEP, NOTES_FONT_SIZE_MAX, BACKSTAGE_TEMPLATES, formatBackstageDate, formatBackstageSize, backstageCardsFor, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, resolveDefaultFontFamily, textFontSizePxToPt, buildFontCatalog, getSelectionTextStyleFlags, getInlineEditorSelectionResult, selectedParagraphBulletKind, elementBulletKind, selectionBulletKind, TEXT_DECORATION_FLAGS, nextToggleValue, buildThemeColorSwatchGrid, themeColorSwatchRows, findSelectedThemeSwatch, themeSwatchCommit, RIBBON_SHAPE_SWATCHES, canGroupSelection, canUngroupSelection, canSetStrokeWidth, strokeWidthOf, readSoundFileAsDataUrl, applyTransitionSoundFile, TRANSITION_SOUND_OTHER_VALUE, TRANSITION_SOUND_NONE_VALUE, clearTransitionSound, applyTransitionStockSound, transitionStockSoundId, getEffectSoundAsset, ENTRANCE_PRESET_VALUES, EMPHASIS_PRESET_VALUES, EXIT_PRESET_VALUES, MOTION_PATH_FAMILIES, motionPathFamilyLabelKey, motionPathPresetsByFamily, motionPathPresetLabelKey, masterViewPseudoSlide, attachEditorImagePaste, authorConnectorBetweenSites, findEraserHitElementId, generateTicks, rulerDragToGuidePosition, resolveElementInteractivity, getElementTransformWithoutRotation, getElementTransform, buildChartQuickActionsDescriptor, applyChartElementToggle, CHART_QUICK_ACTION_BUTTON_SIZE, applyChartStylePreset, hideChartSeries, restoreFilteredSeries, getActiveXControlOverlayView, buildCommentMarkers, COMMENT_MARKER_SIZE, collectConnectorSiteCandidates, getConnectorEndpointHandles, findConnectorSiteNear, motionPathToSvgD, motionPathEndPixel, isEditableMotionPath, setMotionPathEnd, hasMultipleSelectedTableCells, applyTableStyleDelete, applyTableStyleMapChange, themeColorLabel, buildThemeColorGrid, THEME_COLOR_SCHEME_KEYS, COMMON_FONTS, handleReadingViewKey, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, isCurrentLayout, SLIDE_TEMPLATES, computeAnchoredPopupPosition, buildFreeformShapeElement, buildLiveInkStrokeView, CONNECTOR_SITE_SNAP_PX, resolveConnectorEndpointUpdate, withConnectorEndpointUpdate, getShapeConnectionSites, isElementLocked, isImageLikeElement, mergeSlideTransition, getElementLabel, mapSlideSorterKey, isEditorTextInputTarget, clampSorterZoom, buildLayoutPreviewGeometry, buildSlideTemplateContent, hasTiltData, elementLockTogglePatch, buildTableDataGrid, getDenseGridLayoutPlan, appendTableElementRow, removeLastTableElementRow, appendTableElementColumn, removeLastTableElementColumn, removeTableElementColumn, removeTableElementRow, setTableElementCellText, TABLE_STYLE_PRESETS, applyTableStylePreset, tableStyleAssignmentUpdate, evenColumnWidths, redistributeColumnWidth, evenRowHeights, patchChartData, collapseChartTitleRunsForEdit, chartGridlinesState, chartGridlinesPatch, seriesSecondaryAxisPatch, setChartCategoryLabel, setChartCellValue, addChartCategory, removeChartCategory, addChartSeries, removeChartSeries, setDataLabelsRangeCache, setChartAxisLogScale, setChartAxisTitleStyle, setChartAxisGridlineStyle, setChartSeriesMarker, setChartSeriesChartType, setChartDataPointFill, setChartDataPointExplosion, setChartDataPointMarker, setChartDataPointLabel, describeSmartArtBounds, canAddTopLevelNode, classifyExtraConnections, siblingIndex, siblingCount, canRemoveTopLevelNode, canInteractWithElement, buildOleObjectNamePatch, getOleObjectTypeLabel, sanitizeGradientStops, shouldShowAccessibilitySection, pptxActionToElementAction, withFrameSlides, withSlidesPerPage, applyThemeOverrideToSlide, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, schemaLabel, THEME_COLOR_SLOT_LABEL_KEYS, SLIDE_SIZE_PRESETS, TRANSITION_VALID_DIRECTIONS, TRANSITION_ORIENTATION_TYPES, clampTransitionNumber, TRANSITION_SPEED_OPTIONS, TRANSITION_MORPH_OPTIONS, flattenTagCollections, resolveTemplateBackgroundRows, formatCommentTimestamp, commentMentionQuery, matchCommentMentionAuthors, buildAnimationTimelineRows, clearMotionPath, getEffectSoundState, setEffectSound, setEffectStockSound, setAfterAnimation, setAfterAnimationColor, DIRECTIONAL_PRESETS, buildAnimationTimelineBars, motionPathPresetIdForPath, EFFECT_SOUND_CATALOGUE, normalizeTableStyleGuid, describeTableStyleEditor, TABLE_STYLE_EDITOR_PARTS, computeMergeCellRight, computeMergeCellDown, computeSplitCell, updateMergeAttrsInRawXml, resolveDisplayedChartType, CHART_TYPE_OPTIONS, BAR3D_SHAPE_OPTIONS, bar3DShapePatch, RADAR_STYLE_OPTIONS, radarStylePatch, SURFACE_WIREFRAME_OPTIONS, surfaceWireframePatch, isSeriesUsingSecondaryAxis, listChartUserShapeRows, withChartUserShapeAdded, createDefaultChartUserShape, withChartUserShapeRowRemoved, withChartUserShapeRowTextUpdated, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, addSmartArtNodeAsChild, setSmartArtNodeStyle, removeSmartArtNode, addSiblingAfter, removeEmptyNode, demote, promote, updateSmartArtNodeText, reorder, clampCropValue, DUOTONE_PRESETS, ARTISTIC_EFFECTS, mediaTrimEndSeconds, trimmedMediaDurationMs, mediaTrimEndAbsoluteMs, mediaTrimEndMsFromAbsoluteMs, buildOleEditDialogDescriptor, buildOleContentUpdatePatch, applyOleSheetCellEdit, getOleSheetGrid, applyOleDocumentParagraphEdit, getOleDocumentParagraphs, applyOleNestedDeckElementTextEdit, getOleNestedDeckDetail, replaceOleFile, getNonVisualDescriptionFields, resolveActionType, ELEMENT_ACTION_TYPE_OPTIONS, elementActionToPptxAction, canCommitActionType, slideSizeFromPreset, withSlideSizeOrientation, TRANSITION_DIR_ARROWS, buildDirectionGrid, getSlideTransitionAnimations, SLIDE_TRANSITION_KEYFRAMES, updateTagInCollections, deleteTagFromCollections, addTagToCollections, commentTextSegments, COMMENT_MENTION_CLASS, COMMENT_MENTION_ATTRIBUTE, insertCommentMention, reorderAnimationTimelineRows, applyAnimationTimelineOrder, animationEffectLabel, TABLE_STYLE_BORDER_SIDES, applyTableStyleFieldEdit, createTableStyleEntry, addTableStyleToMap, deleteTableStyleFromMap, LBL, SEL, FILL_MODE_OPTIONS, SECTION_HEADING, NUM, getChartUserShapeGroupTransform, withChartUserShapeGroupChildAdded, createDefaultChartUserShapeGroupChild, withChartUserShapeRowUpdated, getChartUserShapeRowChartBox, withChartUserShapeRowFlipUpdated, withChartUserShapeRowRotationUpdated, withChartUserShapeRowChartBoxUpdated, switchSmartArtLayout, rebuildDrawingShapesIfCleared, mediaTrimEndMsFromSeconds, validateMediaTrimRange, SHAPE_QUICK_STYLES, quickStyleSwatchCss, PATTERN_PRESET_OPTIONS, getPatternSvg, COMPOUND_LINE_OPTIONS, LINE_JOIN_OPTIONS, LINE_CAP_OPTIONS, TEXT_WARP_PRESETS, warpPreviewPath, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, toSlideIndex, TABLE_STYLE_BORDER_SIDE_LABEL_KEYS, TABLE_STYLE_DASH_PRESETS, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS, FILL_PATTERN_LABEL_KEYS, openNativeEyeDropper, toggleText3dExtrusion, BEVEL_PRESETS } from './chunk-33YE6E2O.mjs';
5
5
  import { LOCALE_CATALOG, ALIGNMENT_LABEL_KEYS } from './chunk-R664EPDC.mjs';
6
6
  import React6, { createContext, lazy, forwardRef, useEffect, useState, useCallback, useMemo, useRef, useId, useContext, Fragment as Fragment$1, useDeferredValue, Suspense, useSyncExternalStore, useLayoutEffect } from 'react';
7
7
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
@@ -1811,7 +1811,7 @@ function AccountPage() {
1811
1811
  return void 0;
1812
1812
  });
1813
1813
  };
1814
- const version = "3.20.1" ;
1814
+ const version = "3.21.0" ;
1815
1815
  return /* @__PURE__ */ jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
1816
1816
  /* @__PURE__ */ jsxs("section", { className: cardClass, children: [
1817
1817
  /* @__PURE__ */ jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
@@ -32999,7 +32999,7 @@ function useTableStyleMapHandlers(input) {
32999
32999
  var AiChatPanel = lazy(async () => {
33000
33000
  const [{ useChat }, { default: Panel }] = await Promise.all([
33001
33001
  import('@ai-sdk/react'),
33002
- import('./AiChatPanel-UD756KAU.mjs')
33002
+ import('./AiChatPanel-MHURGN6G.mjs')
33003
33003
  ]);
33004
33004
  function BoundAiChatPanel(props) {
33005
33005
  return /* @__PURE__ */ jsx(Panel, { ...props, useChat });
Binary file
Binary file