pptx-react-viewer 3.7.0 → 3.8.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 (160) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/{AiChatPanel-L5QGWVZK.mjs → AiChatPanel-A5DCEHTO.mjs} +4 -4
  3. package/dist/AiChatPanel-A5DCEHTO.mjs.br +0 -0
  4. package/dist/AiChatPanel-A5DCEHTO.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-M3AHKYPS.js → AiChatPanel-XLQM4BQJ.js} +25 -25
  6. package/dist/AiChatPanel-XLQM4BQJ.js.br +0 -0
  7. package/dist/AiChatPanel-XLQM4BQJ.js.gz +0 -0
  8. package/dist/{Area3DChartScene-AE2XYKDW.mjs → Area3DChartScene-5CMEMIBI.mjs} +1 -1
  9. package/dist/Area3DChartScene-5CMEMIBI.mjs.br +0 -0
  10. package/dist/Area3DChartScene-5CMEMIBI.mjs.gz +0 -0
  11. package/dist/{Area3DChartScene-ZQLQK6L4.js → Area3DChartScene-RZ3V3WOR.js} +2 -2
  12. package/dist/Area3DChartScene-RZ3V3WOR.js.br +0 -0
  13. package/dist/Area3DChartScene-RZ3V3WOR.js.gz +0 -0
  14. package/dist/{Bar3DChartScene-FQV62XOI.mjs → Bar3DChartScene-H3MYUJKV.mjs} +1 -1
  15. package/dist/Bar3DChartScene-H3MYUJKV.mjs.br +0 -0
  16. package/dist/Bar3DChartScene-H3MYUJKV.mjs.gz +0 -0
  17. package/dist/{Bar3DChartScene-TZ6ADFBS.js → Bar3DChartScene-KHCQ6TEC.js} +2 -2
  18. package/dist/Bar3DChartScene-KHCQ6TEC.js.br +0 -0
  19. package/dist/Bar3DChartScene-KHCQ6TEC.js.gz +0 -0
  20. package/dist/{Line3DChartScene-5CKPAX63.js → Line3DChartScene-QEACF3U3.js} +2 -2
  21. package/dist/Line3DChartScene-QEACF3U3.js.br +0 -0
  22. package/dist/Line3DChartScene-QEACF3U3.js.gz +0 -0
  23. package/dist/{Line3DChartScene-FEUY3PCE.mjs → Line3DChartScene-YFRPJHDX.mjs} +1 -1
  24. package/dist/Line3DChartScene-YFRPJHDX.mjs.br +0 -0
  25. package/dist/Line3DChartScene-YFRPJHDX.mjs.gz +0 -0
  26. package/dist/{Model3DScene-V3DHIISV.mjs → Model3DScene-O24KP723.mjs} +1 -1
  27. package/dist/Model3DScene-O24KP723.mjs.br +0 -0
  28. package/dist/Model3DScene-O24KP723.mjs.gz +0 -0
  29. package/dist/{Model3DScene-BLXEALM6.js → Model3DScene-QQWKGJ3T.js} +2 -2
  30. package/dist/{Model3DScene-BLXEALM6.js.br → Model3DScene-QQWKGJ3T.js.br} +0 -0
  31. package/dist/Model3DScene-QQWKGJ3T.js.gz +0 -0
  32. package/dist/{PieChart3DScene-VZI2VARG.mjs → PieChart3DScene-CI6CW22C.mjs} +1 -1
  33. package/dist/{PieChart3DScene-VZI2VARG.mjs.br → PieChart3DScene-CI6CW22C.mjs.br} +0 -0
  34. package/dist/PieChart3DScene-CI6CW22C.mjs.gz +0 -0
  35. package/dist/{PieChart3DScene-GHHT3PDV.js → PieChart3DScene-L3MHKQHW.js} +2 -2
  36. package/dist/{PieChart3DScene-GHHT3PDV.js.br → PieChart3DScene-L3MHKQHW.js.br} +0 -0
  37. package/dist/PieChart3DScene-L3MHKQHW.js.gz +0 -0
  38. package/dist/PowerPointViewer-Cl6jBPNw.d.ts.map +1 -1
  39. package/dist/{SurfaceChart3DScene-WWIMQ65D.js → SurfaceChart3DScene-5IER6VFW.js} +2 -2
  40. package/dist/{SurfaceChart3DScene-WWIMQ65D.js.br → SurfaceChart3DScene-5IER6VFW.js.br} +0 -0
  41. package/dist/SurfaceChart3DScene-5IER6VFW.js.gz +0 -0
  42. package/dist/{SurfaceChart3DScene-T36E2HBA.mjs → SurfaceChart3DScene-JUXRC3K2.mjs} +1 -1
  43. package/dist/SurfaceChart3DScene-JUXRC3K2.mjs.br +0 -0
  44. package/dist/SurfaceChart3DScene-JUXRC3K2.mjs.gz +0 -0
  45. package/dist/{audience-content-store-bR7Gs_1S.d.ts → audience-content-store-CB2WVM1K.d.ts} +12 -3
  46. package/dist/{audience-content-store-bR7Gs_1S.d.ts.map → audience-content-store-CB2WVM1K.d.ts.map} +1 -1
  47. package/dist/{chunk-TUSALM3A.js → chunk-4222CHFH.js} +1709 -1235
  48. package/dist/chunk-4222CHFH.js.br +0 -0
  49. package/dist/chunk-4222CHFH.js.gz +0 -0
  50. package/dist/{chunk-NV55GU5V.mjs → chunk-6IMB5DNJ.mjs} +4953 -3103
  51. package/dist/chunk-6IMB5DNJ.mjs.br +0 -0
  52. package/dist/chunk-6IMB5DNJ.mjs.gz +0 -0
  53. package/dist/{chunk-OBE4TB76.js → chunk-DE3S3UHX.js} +551 -574
  54. package/dist/chunk-DE3S3UHX.js.br +0 -0
  55. package/dist/chunk-DE3S3UHX.js.gz +0 -0
  56. package/dist/{chunk-3EJFZ7TE.js → chunk-F5NPGNMA.js} +9 -5
  57. package/dist/chunk-F5NPGNMA.js.br +0 -0
  58. package/dist/chunk-F5NPGNMA.js.gz +0 -0
  59. package/dist/{chunk-FGTMS7LR.mjs → chunk-FRZIBZTE.mjs} +55 -4
  60. package/dist/chunk-FRZIBZTE.mjs.br +0 -0
  61. package/dist/chunk-FRZIBZTE.mjs.gz +0 -0
  62. package/dist/{chunk-W24OJ7H5.js → chunk-L3ZIBQEB.js} +55 -4
  63. package/dist/chunk-L3ZIBQEB.js.br +0 -0
  64. package/dist/chunk-L3ZIBQEB.js.gz +0 -0
  65. package/dist/{chunk-TXY2E7VQ.mjs → chunk-PFPKBNNZ.mjs} +509 -35
  66. package/dist/chunk-PFPKBNNZ.mjs.br +0 -0
  67. package/dist/chunk-PFPKBNNZ.mjs.gz +0 -0
  68. package/dist/{chunk-VIFDZIVX.js → chunk-QWA5YEIZ.js} +187 -176
  69. package/dist/chunk-QWA5YEIZ.js.br +0 -0
  70. package/dist/chunk-QWA5YEIZ.js.gz +0 -0
  71. package/dist/{chunk-JANUSAEK.mjs → chunk-RHWQKZLB.mjs} +14 -3
  72. package/dist/chunk-RHWQKZLB.mjs.br +0 -0
  73. package/dist/chunk-RHWQKZLB.mjs.gz +0 -0
  74. package/dist/{chunk-WKODF5ZU.mjs → chunk-RNP5HP4L.mjs} +5 -2
  75. package/dist/chunk-RNP5HP4L.mjs.br +0 -0
  76. package/dist/chunk-RNP5HP4L.mjs.gz +0 -0
  77. package/dist/{chunk-DCNHUEWQ.js → chunk-SN5EUDIT.js} +4972 -3103
  78. package/dist/chunk-SN5EUDIT.js.br +0 -0
  79. package/dist/chunk-SN5EUDIT.js.gz +0 -0
  80. package/dist/{chunk-PC62KGU3.mjs → chunk-UPJW34YG.mjs} +124 -147
  81. package/dist/chunk-UPJW34YG.mjs.br +0 -0
  82. package/dist/chunk-UPJW34YG.mjs.gz +0 -0
  83. package/dist/i18n.js +4 -4
  84. package/dist/i18n.js.br +0 -0
  85. package/dist/i18n.js.gz +0 -0
  86. package/dist/i18n.mjs +1 -1
  87. package/dist/i18n.mjs.br +0 -0
  88. package/dist/i18n.mjs.gz +0 -0
  89. package/dist/index.d.ts +179 -23
  90. package/dist/index.js +47 -47
  91. package/dist/index.js.br +0 -0
  92. package/dist/index.js.gz +0 -0
  93. package/dist/index.mjs +6 -6
  94. package/dist/index.mjs.br +0 -0
  95. package/dist/index.mjs.gz +0 -0
  96. package/dist/internals.d.ts +352 -171
  97. package/dist/internals.d.ts.map +1 -1
  98. package/dist/internals.js +79 -79
  99. package/dist/internals.js.br +0 -0
  100. package/dist/internals.js.gz +0 -0
  101. package/dist/internals.mjs +4 -4
  102. package/dist/internals.mjs.br +0 -0
  103. package/dist/internals.mjs.gz +0 -0
  104. package/dist/types-Bzdkiakq.d.ts.map +1 -1
  105. package/dist/viewer/index.d.ts +150 -23
  106. package/dist/viewer/index.js +27 -27
  107. package/dist/viewer/index.js.br +0 -0
  108. package/dist/viewer/index.js.gz +0 -0
  109. package/dist/viewer/index.mjs +6 -6
  110. package/dist/viewer/index.mjs.br +0 -0
  111. package/dist/viewer/index.mjs.gz +0 -0
  112. package/package.json +2 -2
  113. package/dist/AiChatPanel-L5QGWVZK.mjs.br +0 -0
  114. package/dist/AiChatPanel-L5QGWVZK.mjs.gz +0 -0
  115. package/dist/AiChatPanel-M3AHKYPS.js.br +0 -0
  116. package/dist/AiChatPanel-M3AHKYPS.js.gz +0 -0
  117. package/dist/Area3DChartScene-AE2XYKDW.mjs.br +0 -1
  118. package/dist/Area3DChartScene-AE2XYKDW.mjs.gz +0 -0
  119. package/dist/Area3DChartScene-ZQLQK6L4.js.br +0 -0
  120. package/dist/Area3DChartScene-ZQLQK6L4.js.gz +0 -0
  121. package/dist/Bar3DChartScene-FQV62XOI.mjs.br +0 -2
  122. package/dist/Bar3DChartScene-FQV62XOI.mjs.gz +0 -0
  123. package/dist/Bar3DChartScene-TZ6ADFBS.js.br +0 -0
  124. package/dist/Bar3DChartScene-TZ6ADFBS.js.gz +0 -0
  125. package/dist/Line3DChartScene-5CKPAX63.js.br +0 -0
  126. package/dist/Line3DChartScene-5CKPAX63.js.gz +0 -0
  127. package/dist/Line3DChartScene-FEUY3PCE.mjs.br +0 -1
  128. package/dist/Line3DChartScene-FEUY3PCE.mjs.gz +0 -0
  129. package/dist/Model3DScene-BLXEALM6.js.gz +0 -0
  130. package/dist/Model3DScene-V3DHIISV.mjs.br +0 -0
  131. package/dist/Model3DScene-V3DHIISV.mjs.gz +0 -0
  132. package/dist/PieChart3DScene-GHHT3PDV.js.gz +0 -0
  133. package/dist/PieChart3DScene-VZI2VARG.mjs.gz +0 -0
  134. package/dist/SurfaceChart3DScene-T36E2HBA.mjs.br +0 -0
  135. package/dist/SurfaceChart3DScene-T36E2HBA.mjs.gz +0 -0
  136. package/dist/SurfaceChart3DScene-WWIMQ65D.js.gz +0 -0
  137. package/dist/chunk-3EJFZ7TE.js.br +0 -0
  138. package/dist/chunk-3EJFZ7TE.js.gz +0 -0
  139. package/dist/chunk-DCNHUEWQ.js.br +0 -0
  140. package/dist/chunk-DCNHUEWQ.js.gz +0 -0
  141. package/dist/chunk-FGTMS7LR.mjs.br +0 -0
  142. package/dist/chunk-FGTMS7LR.mjs.gz +0 -0
  143. package/dist/chunk-JANUSAEK.mjs.br +0 -0
  144. package/dist/chunk-JANUSAEK.mjs.gz +0 -0
  145. package/dist/chunk-NV55GU5V.mjs.br +0 -0
  146. package/dist/chunk-NV55GU5V.mjs.gz +0 -0
  147. package/dist/chunk-OBE4TB76.js.br +0 -0
  148. package/dist/chunk-OBE4TB76.js.gz +0 -0
  149. package/dist/chunk-PC62KGU3.mjs.br +0 -0
  150. package/dist/chunk-PC62KGU3.mjs.gz +0 -0
  151. package/dist/chunk-TUSALM3A.js.br +0 -0
  152. package/dist/chunk-TUSALM3A.js.gz +0 -0
  153. package/dist/chunk-TXY2E7VQ.mjs.br +0 -0
  154. package/dist/chunk-TXY2E7VQ.mjs.gz +0 -0
  155. package/dist/chunk-VIFDZIVX.js.br +0 -0
  156. package/dist/chunk-VIFDZIVX.js.gz +0 -0
  157. package/dist/chunk-W24OJ7H5.js.br +0 -0
  158. package/dist/chunk-W24OJ7H5.js.gz +0 -0
  159. package/dist/chunk-WKODF5ZU.mjs.br +0 -0
  160. package/dist/chunk-WKODF5ZU.mjs.gz +0 -0
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunkDCNHUEWQ_js = require('./chunk-DCNHUEWQ.js');
4
- var chunkW24OJ7H5_js = require('./chunk-W24OJ7H5.js');
3
+ var chunkSN5EUDIT_js = require('./chunk-SN5EUDIT.js');
4
+ var chunkL3ZIBQEB_js = require('./chunk-L3ZIBQEB.js');
5
5
  var clsx = require('clsx');
6
6
  var tailwindMerge = require('tailwind-merge');
7
7
  var React7 = require('react');
@@ -15,7 +15,7 @@ var React7__default = /*#__PURE__*/_interopDefault(React7);
15
15
 
16
16
  // src/viewer/utils/animation-effects.ts
17
17
  function getAnimationInitialStyle2(preset, nativeAnimation) {
18
- return chunkDCNHUEWQ_js.getAnimationInitialStyle(preset, nativeAnimation);
18
+ return chunkSN5EUDIT_js.getAnimationInitialStyle(preset, nativeAnimation);
19
19
  }
20
20
  function cn(...inputs) {
21
21
  return tailwindMerge.twMerge(clsx.clsx(inputs));
@@ -23,7 +23,7 @@ function cn(...inputs) {
23
23
 
24
24
  // src/viewer/utils/clone.ts
25
25
  function cloneHistorySnapshot2(snapshot) {
26
- return chunkDCNHUEWQ_js.cloneHistorySnapshot(snapshot);
26
+ return chunkSN5EUDIT_js.cloneHistorySnapshot(snapshot);
27
27
  }
28
28
 
29
29
  // src/viewer/constants/scalar.ts
@@ -61,7 +61,7 @@ var TOOLBAR_SECTIONS = [
61
61
  { id: "view", labelKey: "pptx.ribbon.tab.view" },
62
62
  { id: "help", labelKey: "pptx.ribbon.tab.help" }
63
63
  ];
64
- var SHORTCUT_REFERENCE_ITEMS = chunkDCNHUEWQ_js.VIEWER_SHORTCUT_REFERENCE;
64
+ var SHORTCUT_REFERENCE_ITEMS = chunkSN5EUDIT_js.VIEWER_SHORTCUT_REFERENCE;
65
65
 
66
66
  // src/viewer/constants/transitions-animations.ts
67
67
  var ANIMATION_PRESET_OPTIONS = [
@@ -89,7 +89,7 @@ var GLYPH_COMPONENTS = {
89
89
  plus: lu.LuPlus,
90
90
  triangle: lu.LuTriangle
91
91
  };
92
- var SHAPE_PRESETS = chunkDCNHUEWQ_js.SHAPE_PRESET_DEFS.map(
92
+ var SHAPE_PRESETS = chunkSN5EUDIT_js.SHAPE_PRESET_DEFS.map(
93
93
  (def) => ({
94
94
  type: def.type,
95
95
  label: def.label,
@@ -114,7 +114,7 @@ var ARROW_SIZE_OPTIONS = [
114
114
  { value: "med", label: "Medium", i18nKey: "pptx.connectorOptions.sizeMedium" },
115
115
  { value: "lg", label: "Large", i18nKey: "pptx.connectorOptions.sizeLarge" }
116
116
  ];
117
- var STROKE_DASH_OPTIONS2 = chunkDCNHUEWQ_js.STROKE_DASH_OPTIONS;
117
+ var STROKE_DASH_OPTIONS2 = chunkSN5EUDIT_js.STROKE_DASH_OPTIONS;
118
118
 
119
119
  // src/viewer/utils/shape-types.tsx
120
120
  function getShapeType(shapeType) {
@@ -223,7 +223,7 @@ function isConnectorOrLineElement(element) {
223
223
  if (element.type === "connector") {
224
224
  return true;
225
225
  }
226
- if (!chunkDCNHUEWQ_js.hasShapeProperties(element)) {
226
+ if (!chunkSN5EUDIT_js.hasShapeProperties(element)) {
227
227
  return false;
228
228
  }
229
229
  const st = getShapeType(element.shapeType);
@@ -232,17 +232,17 @@ function isConnectorOrLineElement(element) {
232
232
 
233
233
  // src/viewer/utils/image-style.ts
234
234
  function getImageMaskStyle(element) {
235
- if (!chunkDCNHUEWQ_js.hasShapeProperties(element)) {
235
+ if (!chunkSN5EUDIT_js.hasShapeProperties(element)) {
236
236
  return void 0;
237
237
  }
238
- const geometry = chunkDCNHUEWQ_js.resolveShapeGeometry(element);
238
+ const geometry = chunkSN5EUDIT_js.resolveShapeGeometry(element);
239
239
  if (geometry.kind === "borderRadius") {
240
240
  return { borderRadius: geometry.radius };
241
241
  }
242
242
  return geometry.kind === "clipPath" ? { clipPath: geometry.clipPath } : void 0;
243
243
  }
244
244
  function getImageRenderStyle(element) {
245
- const fit = chunkDCNHUEWQ_js.getImageFitStyle(element);
245
+ const fit = chunkSN5EUDIT_js.getImageFitStyle(element);
246
246
  return {
247
247
  // A translated/scaled crop must be masked by its stationary wrapper, not
248
248
  // by the moving bitmap itself.
@@ -259,7 +259,7 @@ function getImageSurfaceMaskStyle(element) {
259
259
  };
260
260
  }
261
261
  function getImageSurfaceStyle(element) {
262
- const fill = chunkDCNHUEWQ_js.hasShapeProperties(element) ? chunkDCNHUEWQ_js.getComputedFillStyle(element) : void 0;
262
+ const fill = chunkSN5EUDIT_js.hasShapeProperties(element) ? chunkSN5EUDIT_js.getComputedFillStyle(element) : void 0;
263
263
  return {
264
264
  position: "absolute",
265
265
  inset: 0,
@@ -272,13 +272,13 @@ function getImageSurfaceStyle(element) {
272
272
  };
273
273
  }
274
274
  function getCropShapeClipPath2(element) {
275
- if (!chunkDCNHUEWQ_js.isImageLikeElement(element)) {
275
+ if (!chunkSN5EUDIT_js.isImageLikeElement(element)) {
276
276
  return void 0;
277
277
  }
278
- return chunkDCNHUEWQ_js.getCropShapeClipPath(element.cropShape, element.width, element.height);
278
+ return chunkSN5EUDIT_js.getCropShapeClipPath(element.cropShape, element.width, element.height);
279
279
  }
280
280
  function getImageTilingStyle2(element) {
281
- return chunkDCNHUEWQ_js.getImageTilingStyle(element);
281
+ return chunkSN5EUDIT_js.getImageTilingStyle(element);
282
282
  }
283
283
 
284
284
  // src/viewer/utils/geometry-image.ts
@@ -410,7 +410,7 @@ function VideoWithMetadata({
410
410
  {
411
411
  ref: mediaRef,
412
412
  className: "w-full h-full pointer-events-auto",
413
- style: isFullScreen ? { objectFit: "cover" } : chunkDCNHUEWQ_js.getImageFitStyle(element),
413
+ style: isFullScreen ? { objectFit: "cover" } : chunkSN5EUDIT_js.getImageFitStyle(element),
414
414
  controls: showTransport,
415
415
  preload: "metadata",
416
416
  playsInline: true,
@@ -467,7 +467,7 @@ function PresentationMediaController({
467
467
  const [isMediaPlaying, setIsMediaPlaying] = React7.useState(false);
468
468
  const trimStartSec = element.trimStartMs !== void 0 ? element.trimStartMs / 1e3 : 0;
469
469
  const hideWhenNotPlaying = isPresentationMode && element.hideWhenNotPlaying === true;
470
- const { volume: playbackVolume, playbackRate } = chunkDCNHUEWQ_js.mediaPlaybackAttributes({
470
+ const { volume: playbackVolume, playbackRate } = chunkSN5EUDIT_js.mediaPlaybackAttributes({
471
471
  loop: element.loop,
472
472
  volume: element.volume,
473
473
  playbackSpeed: element.playbackSpeed
@@ -515,7 +515,7 @@ function PresentationMediaController({
515
515
  if (!el || !isPresentationMode) {
516
516
  return;
517
517
  }
518
- return chunkDCNHUEWQ_js.scheduleMediaTrimAndFade(el, {
518
+ return chunkSN5EUDIT_js.scheduleMediaTrimAndFade(el, {
519
519
  trimStartMs: element.trimStartMs,
520
520
  trimEndMs: element.trimEndMs,
521
521
  fadeInDuration: element.fadeInDuration,
@@ -536,7 +536,7 @@ function PresentationMediaController({
536
536
  }
537
537
  if (element.playAcrossSlides && element.mediaType === "audio") {
538
538
  const dataUrl = element.mediaData ?? resolvedDataUrl;
539
- if (chunkDCNHUEWQ_js.registerCrossSlideAudio(element, dataUrl)) {
539
+ if (chunkSN5EUDIT_js.registerCrossSlideAudio(element, dataUrl)) {
540
540
  return;
541
541
  }
542
542
  }
@@ -581,7 +581,7 @@ function PresentationMediaController({
581
581
  ] });
582
582
  }
583
583
  function label(key) {
584
- return key === void 0 ? void 0 : chunkW24OJ7H5_js.translationsEn[key];
584
+ return key === void 0 ? void 0 : chunkL3ZIBQEB_js.translationsEn[key];
585
585
  }
586
586
  function FallbackIcon({
587
587
  paths,
@@ -617,17 +617,17 @@ function Badge({
617
617
  "div",
618
618
  {
619
619
  className: `absolute inset-0 flex flex-col items-center justify-center ${isMissing ? "gap-1" : ""}`,
620
- ...{ [chunkDCNHUEWQ_js.MEDIA_CHROME_ATTRIBUTE]: visual.badge },
620
+ ...{ [chunkSN5EUDIT_js.MEDIA_CHROME_ATTRIBUTE]: visual.badge },
621
621
  children: [
622
622
  /* @__PURE__ */ jsxRuntime.jsx(
623
623
  FallbackIcon,
624
624
  {
625
- paths: chunkDCNHUEWQ_js.mediaFallbackIcon(visual, element.mediaType),
625
+ paths: chunkSN5EUDIT_js.mediaFallbackIcon(visual, element.mediaType),
626
626
  size: isMissing ? 32 : 48,
627
627
  className: isMissing ? "text-white/60" : "text-white/80 drop-shadow-md"
628
628
  }
629
629
  ),
630
- isMissing && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-white/60", children: label(chunkDCNHUEWQ_js.mediaFallbackLabelKey(visual, element.mediaType)) })
630
+ isMissing && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-white/60", children: label(chunkSN5EUDIT_js.mediaFallbackLabelKey(visual, element.mediaType)) })
631
631
  ]
632
632
  }
633
633
  );
@@ -644,17 +644,17 @@ function Placeholder({
644
644
  "div",
645
645
  {
646
646
  className: `w-full h-full flex flex-col items-center justify-center gap-1 pointer-events-none rounded ${isMissing ? "bg-black/30 border border-dashed border-white/20" : element.mediaType === "audio" ? "bg-black/10" : "bg-black/20"}`,
647
- ...{ [chunkDCNHUEWQ_js.MEDIA_CHROME_ATTRIBUTE]: visual.placeholder },
647
+ ...{ [chunkSN5EUDIT_js.MEDIA_CHROME_ATTRIBUTE]: visual.placeholder },
648
648
  children: [
649
649
  /* @__PURE__ */ jsxRuntime.jsx(
650
650
  FallbackIcon,
651
651
  {
652
- paths: chunkDCNHUEWQ_js.mediaFallbackIcon(visual, element.mediaType),
652
+ paths: chunkSN5EUDIT_js.mediaFallbackIcon(visual, element.mediaType),
653
653
  size: isMissing ? 36 : element.mediaType === "audio" ? 24 : 32,
654
654
  className: isMissing ? "text-white/50" : "text-white/70"
655
655
  }
656
656
  ),
657
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: `text-[10px] ${isMissing ? "text-white/50" : "text-white/70"}`, children: label(chunkDCNHUEWQ_js.mediaFallbackLabelKey(visual, element.mediaType)) })
657
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: `text-[10px] ${isMissing ? "text-white/50" : "text-white/70"}`, children: label(chunkSN5EUDIT_js.mediaFallbackLabelKey(visual, element.mediaType)) })
658
658
  ]
659
659
  }
660
660
  );
@@ -664,7 +664,7 @@ function renderMediaFallback({
664
664
  posterUrl,
665
665
  surface
666
666
  }) {
667
- const visual = chunkDCNHUEWQ_js.mediaFallbackVisual(surface, {
667
+ const visual = chunkSN5EUDIT_js.mediaFallbackVisual(surface, {
668
668
  hasPoster: Boolean(posterUrl),
669
669
  missing: element.mediaMissing === true
670
670
  });
@@ -674,9 +674,9 @@ function renderMediaFallback({
674
674
  "img",
675
675
  {
676
676
  src: posterUrl,
677
- alt: visual.dimPoster ? chunkW24OJ7H5_js.translationsEn["pptx.media.posterAlt"] : chunkW24OJ7H5_js.translationsEn["pptx.media.videoPosterAlt"],
677
+ alt: visual.dimPoster ? chunkL3ZIBQEB_js.translationsEn["pptx.media.posterAlt"] : chunkL3ZIBQEB_js.translationsEn["pptx.media.videoPosterAlt"],
678
678
  className: `w-full h-full${visual.dimPoster ? " opacity-50" : ""}`,
679
- style: chunkDCNHUEWQ_js.getImageFitStyle(element)
679
+ style: chunkSN5EUDIT_js.getImageFitStyle(element)
680
680
  }
681
681
  ),
682
682
  /* @__PURE__ */ jsxRuntime.jsx(Badge, { visual, element })
@@ -686,7 +686,7 @@ function renderMediaFallback({
686
686
  }
687
687
  function renderMediaElement(element, mediaDataUrls, options) {
688
688
  if (element.type !== "media") {
689
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkW24OJ7H5_js.translationsEn["pptx.media.title"] });
689
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkL3ZIBQEB_js.translationsEn["pptx.media.title"] });
690
690
  }
691
691
  const mediaType = element.mediaType;
692
692
  const mediaPath = element.mediaPath;
@@ -694,7 +694,7 @@ function renderMediaElement(element, mediaDataUrls, options) {
694
694
  const dataUrl = element.mediaData ?? (mediaPath ? mediaDataUrls.get(mediaPath) : void 0);
695
695
  const trimFragment = buildTrimFragment(element);
696
696
  const posterUrl = element.posterFrameData ?? void 0;
697
- const shouldLoop = chunkDCNHUEWQ_js.mediaPlaybackAttributes(element).loop;
697
+ const shouldLoop = chunkSN5EUDIT_js.mediaPlaybackAttributes(element).loop;
698
698
  const shouldAutoPlay = options?.autoPlay === true || element.autoPlay === true;
699
699
  const isFullScreen = options?.fullScreen === true;
700
700
  const isPresentationMode = options?.isPresentationMode === true;
@@ -772,25 +772,25 @@ function renderMediaElement(element, mediaDataUrls, options) {
772
772
  if (surface.presenting || surface.preview) {
773
773
  return null;
774
774
  }
775
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkW24OJ7H5_js.translationsEn["pptx.media.title"] });
775
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkL3ZIBQEB_js.translationsEn["pptx.media.title"] });
776
776
  }
777
777
 
778
778
  // src/viewer/utils/text-utils.tsx
779
779
  function getTextStyleForElement(element, fallbackColor) {
780
- return chunkDCNHUEWQ_js.buildTextBlockStyle(element, { fallbackColor });
780
+ return chunkSN5EUDIT_js.buildTextBlockStyle(element, { fallbackColor });
781
781
  }
782
782
 
783
783
  // src/viewer/utils/text-layout.tsx
784
784
  function getTextLayoutStyle(element) {
785
- if (!chunkDCNHUEWQ_js.hasTextProperties(element)) {
785
+ if (!chunkSN5EUDIT_js.hasTextProperties(element)) {
786
786
  return {};
787
787
  }
788
- const writingMode = chunkDCNHUEWQ_js.toCssWritingMode(element.textStyle?.textDirection);
789
- const textOrientation = chunkDCNHUEWQ_js.toCssTextOrientation(element.textStyle?.textDirection);
790
- const verticalDirection = chunkDCNHUEWQ_js.toCssVerticalDirection(element.textStyle?.textDirection);
788
+ const writingMode = chunkSN5EUDIT_js.toCssWritingMode(element.textStyle?.textDirection);
789
+ const textOrientation = chunkSN5EUDIT_js.toCssTextOrientation(element.textStyle?.textDirection);
790
+ const verticalDirection = chunkSN5EUDIT_js.toCssVerticalDirection(element.textStyle?.textDirection);
791
791
  const textWrapNone = element.textStyle?.textWrap === "none";
792
792
  const shapeAutoFitTextBox = element.textStyle?.autoFitMode === "shrink" && (element.type === "text" || element.locks?.txBox === true);
793
- const hasParagraphIndents = chunkDCNHUEWQ_js.hasTextProperties(element) && element.paragraphIndents && element.paragraphIndents.length > 0;
793
+ const hasParagraphIndents = chunkSN5EUDIT_js.hasTextProperties(element) && element.paragraphIndents && element.paragraphIndents.length > 0;
794
794
  const paragraphMarginLeft = element.textStyle?.paragraphMarginLeft;
795
795
  const paragraphIndent = element.textStyle?.paragraphIndent;
796
796
  const marginLeft = !hasParagraphIndents && typeof paragraphMarginLeft === "number" && paragraphMarginLeft !== 0 ? paragraphMarginLeft : void 0;
@@ -799,7 +799,7 @@ function getTextLayoutStyle(element) {
799
799
  const bodyBottom = element.textStyle?.bodyInsetBottom ?? DEFAULT_BODY_INSET_TB_PX;
800
800
  return {
801
801
  // Columns / flex anchoring / anchorCtr / tab-size / kinsoku, from shared.
802
- ...chunkDCNHUEWQ_js.buildTextBodyLayoutStyle(element),
802
+ ...chunkSN5EUDIT_js.buildTextBodyLayoutStyle(element),
803
803
  // Body inset only. Paragraph spacing (spcBef/spcAft) is applied
804
804
  // per-paragraph by the paragraph renderer, not collapsed here.
805
805
  paddingTop: bodyTop,
@@ -827,7 +827,7 @@ function getTextLayoutStyle(element) {
827
827
 
828
828
  // src/viewer/utils/text-effects.tsx
829
829
  function buildTextBody3DSceneStyle2(textStyle) {
830
- return chunkDCNHUEWQ_js.buildTextBody3DSceneStyle(textStyle);
830
+ return chunkSN5EUDIT_js.buildTextBody3DSceneStyle(textStyle);
831
831
  }
832
832
 
833
833
  // src/viewer/utils/text-warp-css.tsx
@@ -1012,13 +1012,13 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
1012
1012
  if (!subElementAnimStates || subElementAnimStates.size === 0) {
1013
1013
  return renderedSegments;
1014
1014
  }
1015
- const paraKey = `${elementId}${chunkDCNHUEWQ_js.TEXT_BUILD_ID_SEP}p${paraIndex}`;
1015
+ const paraKey = `${elementId}${chunkSN5EUDIT_js.TEXT_BUILD_ID_SEP}p${paraIndex}`;
1016
1016
  const paraState = subElementAnimStates.get(paraKey);
1017
1017
  if (paraState) {
1018
1018
  const style = buildAnimStyle(paraState);
1019
1019
  return /* @__PURE__ */ jsxRuntime.jsx("span", { "data-anim-id": paraKey, style: { display: "inline", ...style }, children: renderedSegments }, paraKey);
1020
1020
  }
1021
- const spec = chunkDCNHUEWQ_js.buildTextBuildSpec(
1021
+ const spec = chunkSN5EUDIT_js.buildTextBuildSpec(
1022
1022
  elementId,
1023
1023
  paraIndex,
1024
1024
  paraRuns.map((run) => ({ text: run.text, style: run })),
@@ -1036,7 +1036,7 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
1036
1036
  "span",
1037
1037
  {
1038
1038
  "data-anim-id": span.animId,
1039
- style: chunkDCNHUEWQ_js.textBuildSpanStyle(span),
1039
+ style: chunkSN5EUDIT_js.textBuildSpanStyle(span),
1040
1040
  children: content
1041
1041
  },
1042
1042
  span.animId
@@ -1047,13 +1047,13 @@ function renderUnderlineWords(text, isUnderlineWords, wordDecoration, metric, ke
1047
1047
  if (!isUnderlineWords || !text) {
1048
1048
  return inner(text, keyPrefix, metric);
1049
1049
  }
1050
- const pieces = chunkDCNHUEWQ_js.splitWordsForUnderline(text);
1050
+ const pieces = chunkSN5EUDIT_js.splitWordsForUnderline(text);
1051
1051
  if (pieces.length === 0) {
1052
1052
  return inner(text, keyPrefix, metric);
1053
1053
  }
1054
1054
  const gapMetric = metric ? {
1055
1055
  ...metric,
1056
- nestedStyle: metric.nestedStyle ? chunkDCNHUEWQ_js.stripUnderlineDecoration(metric.nestedStyle) : void 0
1056
+ nestedStyle: metric.nestedStyle ? chunkSN5EUDIT_js.stripUnderlineDecoration(metric.nestedStyle) : void 0
1057
1057
  } : void 0;
1058
1058
  return pieces.map((piece, i) => {
1059
1059
  const key = `${keyPrefix}-u${i}`;
@@ -1086,7 +1086,7 @@ function makeSegmentPieceRenderer(needsScriptFonts, scriptFonts, baseFontFamily,
1086
1086
  );
1087
1087
  }
1088
1088
  function renderTabbedLine(line, ctx, keyPrefix, renderPiece, nestedStyle, underlineWords = false) {
1089
- const [lineLayout] = chunkDCNHUEWQ_js.buildRunTabLines(
1089
+ const [lineLayout] = chunkSN5EUDIT_js.buildRunTabLines(
1090
1090
  line,
1091
1091
  ctx,
1092
1092
  nestedStyle,
@@ -1105,7 +1105,7 @@ function renderScriptAwareText(text, needsScriptFonts, scriptFonts, baseFontFami
1105
1105
  if (!needsScriptFonts || !text) {
1106
1106
  return text;
1107
1107
  }
1108
- const pieces = chunkDCNHUEWQ_js.splitRunByScriptFont(
1108
+ const pieces = chunkSN5EUDIT_js.splitRunByScriptFont(
1109
1109
  text,
1110
1110
  scriptFonts,
1111
1111
  baseFontFamily,
@@ -1122,7 +1122,7 @@ function renderMetricPieces(text, metric, keyPrefix, inner) {
1122
1122
  if (!metric || !text) {
1123
1123
  return inner(text, keyPrefix);
1124
1124
  }
1125
- const pieces = chunkDCNHUEWQ_js.splitRunForMetrics(text, metric.font);
1125
+ const pieces = chunkSN5EUDIT_js.splitRunForMetrics(text, metric.font);
1126
1126
  if (pieces.length <= 1) {
1127
1127
  return inner(text, keyPrefix);
1128
1128
  }
@@ -1131,7 +1131,7 @@ function renderMetricPieces(text, metric, keyPrefix, inner) {
1131
1131
  {
1132
1132
  style: {
1133
1133
  ...metric.nestedStyle,
1134
- letterSpacing: chunkDCNHUEWQ_js.pieceLetterSpacing(metric.authoredPx, piece.tracking)
1134
+ letterSpacing: chunkSN5EUDIT_js.pieceLetterSpacing(metric.authoredPx, piece.tracking)
1135
1135
  },
1136
1136
  children: inner(piece.text, `${keyPrefix}-w${i}`)
1137
1137
  },
@@ -1207,8 +1207,8 @@ function renderSegmentContent(elementId, segmentIndex, textValue, lines, needsSc
1207
1207
  });
1208
1208
  }
1209
1209
  function renderEquationSegment(elementId, segmentIndex, equationXml, equationNumber) {
1210
- const mathml = chunkDCNHUEWQ_js.convertOmmlToMathMl(equationXml);
1211
- const safeMathml = mathml ? chunkDCNHUEWQ_js.sanitizeMathMl(mathml) : "";
1210
+ const mathml = chunkSN5EUDIT_js.convertOmmlToMathMl(equationXml);
1211
+ const safeMathml = mathml ? chunkSN5EUDIT_js.sanitizeMathMl(mathml) : "";
1212
1212
  const equationContent = safeMathml ? /* @__PURE__ */ jsxRuntime.jsx(
1213
1213
  "span",
1214
1214
  {
@@ -1218,7 +1218,7 @@ function renderEquationSegment(elementId, segmentIndex, equationXml, equationNum
1218
1218
  },
1219
1219
  dangerouslySetInnerHTML: { __html: safeMathml }
1220
1220
  }
1221
- ) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-block px-1 py-0.5 rounded text-xs bg-gray-200/20 text-gray-400 italic", children: chunkW24OJ7H5_js.translationsEn["pptx.textSegment.equationFallback"] });
1221
+ ) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-block px-1 py-0.5 rounded text-xs bg-gray-200/20 text-gray-400 italic", children: chunkL3ZIBQEB_js.translationsEn["pptx.textSegment.equationFallback"] });
1222
1222
  if (equationNumber) {
1223
1223
  return /* @__PURE__ */ jsxRuntime.jsxs(
1224
1224
  "span",
@@ -1337,7 +1337,7 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
1337
1337
  const segmentStyle = segment?.style ?? {};
1338
1338
  const textValue = run.text;
1339
1339
  const lines = textValue.split("\n");
1340
- const resolvedSegmentColor = chunkDCNHUEWQ_js.normalizeHexColor(
1340
+ const resolvedSegmentColor = chunkSN5EUDIT_js.normalizeHexColor(
1341
1341
  segmentStyle.color || element.textStyle?.color,
1342
1342
  run.hyperlink ? HYPERLINK_COLOR : fallbackColor
1343
1343
  );
@@ -1345,16 +1345,16 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
1345
1345
  const baselineFraction = rawBaseline === 0 ? 0 : Math.abs(rawBaseline) >= 1e3 ? rawBaseline / 1e5 : rawBaseline / 100;
1346
1346
  const baselineFontScale = baselineFraction !== 0 ? BASELINE_FONT_SCALE : 1;
1347
1347
  const rawFontSize = segmentStyle.fontSize || element.textStyle?.fontSize || DEFAULT_TEXT_FONT_SIZE;
1348
- const baseFontSize = rawFontSize * chunkDCNHUEWQ_js.resolveAutoFitFontScale(element.textStyle);
1348
+ const baseFontSize = rawFontSize * chunkSN5EUDIT_js.resolveAutoFitFontScale(element.textStyle);
1349
1349
  const baselineShift = baselineFraction !== 0 ? `${baselineFraction * baseFontSize}px` : void 0;
1350
- const fontKerning = chunkDCNHUEWQ_js.resolveFontKerning(segmentStyle.kerning, baseFontSize);
1350
+ const fontKerning = chunkSN5EUDIT_js.resolveFontKerning(segmentStyle.kerning, baseFontSize);
1351
1351
  const rawFontFamily = segmentStyle.fontFamily || element.textStyle?.fontFamily;
1352
- const baseFontFamily = rawFontFamily ? chunkDCNHUEWQ_js.getSubstituteFontFamily(
1352
+ const baseFontFamily = rawFontFamily ? chunkSN5EUDIT_js.getSubstituteFontFamily(
1353
1353
  rawFontFamily,
1354
- chunkDCNHUEWQ_js.parsePanoseString(segmentStyle.latinFontPanose ?? element.textStyle?.latinFontPanose)
1354
+ chunkSN5EUDIT_js.parsePanoseString(segmentStyle.latinFontPanose ?? element.textStyle?.latinFontPanose)
1355
1355
  ) : DEFAULT_FONT_FAMILY2;
1356
- const scriptFonts = chunkDCNHUEWQ_js.resolveScriptFontSet(segmentStyle, element.textStyle, baseFontFamily);
1357
- const needsScriptFonts = chunkDCNHUEWQ_js.hasDistinctScriptFonts(scriptFonts);
1356
+ const scriptFonts = chunkSN5EUDIT_js.resolveScriptFontSet(segmentStyle, element.textStyle, baseFontFamily);
1357
+ const needsScriptFonts = chunkSN5EUDIT_js.hasDistinctScriptFonts(scriptFonts);
1358
1358
  const authoredLetterSpacing = typeof segmentStyle.characterSpacing === "number" && segmentStyle.characterSpacing !== 0 ? segmentStyle.characterSpacing / 100 * (96 / 72) : 0;
1359
1359
  const metricFont = {
1360
1360
  fontFamily: baseFontFamily,
@@ -1362,7 +1362,7 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
1362
1362
  bold: Boolean(segmentStyle.bold),
1363
1363
  italic: Boolean(segmentStyle.italic)
1364
1364
  };
1365
- const nestedStyle = chunkDCNHUEWQ_js.nestedTextDecorationStyle(run.style);
1365
+ const nestedStyle = chunkSN5EUDIT_js.nestedTextDecorationStyle(run.style);
1366
1366
  const metricContext = { font: metricFont, authoredPx: authoredLetterSpacing, nestedStyle };
1367
1367
  const spanStyle = { ...run.style };
1368
1368
  spanStyle.color = resolvedSegmentColor;
@@ -1370,11 +1370,11 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
1370
1370
  spanStyle.fontFamily = baseFontFamily;
1371
1371
  spanStyle.verticalAlign = baselineShift;
1372
1372
  spanStyle.fontKerning = fontKerning;
1373
- spanStyle.letterSpacing = chunkDCNHUEWQ_js.pieceLetterSpacing(
1373
+ spanStyle.letterSpacing = chunkSN5EUDIT_js.pieceLetterSpacing(
1374
1374
  authoredLetterSpacing,
1375
- chunkDCNHUEWQ_js.resolveMetricTrackingPx(textValue, metricFont)
1375
+ chunkSN5EUDIT_js.resolveMetricTrackingPx(textValue, metricFont)
1376
1376
  );
1377
- const hollow = chunkDCNHUEWQ_js.hollowTextFillStyle(segmentStyle, {
1377
+ const hollow = chunkSN5EUDIT_js.hollowTextFillStyle(segmentStyle, {
1378
1378
  color: resolvedSegmentColor,
1379
1379
  textStroke: typeof spanStyle.WebkitTextStroke === "string" ? spanStyle.WebkitTextStroke : void 0
1380
1380
  });
@@ -1389,7 +1389,7 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
1389
1389
  const isUnderlineWords = Boolean(segmentStyle.underline) && segmentStyle.underlineStyle === "words";
1390
1390
  const wordDecoration = isUnderlineWords ? nestedStyle ?? run.underlineWordPieces?.find((piece) => piece.style)?.style : void 0;
1391
1391
  if (isUnderlineWords) {
1392
- const stripped = chunkDCNHUEWQ_js.stripUnderlineDecoration(spanStyle);
1392
+ const stripped = chunkSN5EUDIT_js.stripUnderlineDecoration(spanStyle);
1393
1393
  spanStyle.textDecoration = stripped.textDecoration;
1394
1394
  delete spanStyle.textDecorationStyle;
1395
1395
  delete spanStyle.textDecorationThickness;
@@ -1405,7 +1405,7 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
1405
1405
  scriptFonts,
1406
1406
  baseFontFamily,
1407
1407
  findHighlights,
1408
- chunkDCNHUEWQ_js.buildTabContext(
1408
+ chunkSN5EUDIT_js.buildTabContext(
1409
1409
  element.textStyle?.tabStops,
1410
1410
  element.textStyle?.defaultTabSize,
1411
1411
  baseFontSize,
@@ -1433,7 +1433,7 @@ function renderRubyOrText(run, baseContent) {
1433
1433
  ] });
1434
1434
  }
1435
1435
  function renderTextSegments(element, fallbackColor, emptyFallback, findHighlights, onHyperlinkClick, fieldContext, subElementAnimStates, segmentOverrides, requireCtrlClick, placeholderPrompt) {
1436
- if (!chunkDCNHUEWQ_js.hasTextProperties(element)) {
1436
+ if (!chunkSN5EUDIT_js.hasTextProperties(element)) {
1437
1437
  return emptyFallback || null;
1438
1438
  }
1439
1439
  const segments = segmentOverrides ?? element.textSegments;
@@ -1443,7 +1443,7 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
1443
1443
  }
1444
1444
  return element.text || emptyFallback || "";
1445
1445
  }
1446
- const paragraphs = chunkDCNHUEWQ_js.buildParagraphs(element, fieldContext, segmentOverrides);
1446
+ const paragraphs = chunkSN5EUDIT_js.buildParagraphs(element, fieldContext, segmentOverrides);
1447
1447
  const ctx = {
1448
1448
  element,
1449
1449
  fallbackColor,
@@ -1569,13 +1569,13 @@ function renderBulletMarker(para, paraIndex, elementId) {
1569
1569
  );
1570
1570
  }
1571
1571
  function getDuotoneColors(element) {
1572
- if (!chunkDCNHUEWQ_js.isImageLikeElement(element)) {
1572
+ if (!chunkSN5EUDIT_js.isImageLikeElement(element)) {
1573
1573
  return void 0;
1574
1574
  }
1575
1575
  return element.imageEffects?.duotone;
1576
1576
  }
1577
1577
  function buildLineShadowCss(element) {
1578
- if (!chunkDCNHUEWQ_js.hasShapeProperties(element)) {
1578
+ if (!chunkSN5EUDIT_js.hasShapeProperties(element)) {
1579
1579
  return void 0;
1580
1580
  }
1581
1581
  const ss = element.shapeStyle;
@@ -1586,13 +1586,13 @@ function buildLineShadowCss(element) {
1586
1586
  const offsetY = typeof ss.lineShadowOffsetY === "number" ? ss.lineShadowOffsetY : 2;
1587
1587
  const blur = typeof ss.lineShadowBlur === "number" ? Math.max(0, ss.lineShadowBlur) : 4;
1588
1588
  const opacity = typeof ss.lineShadowOpacity === "number" ? Math.max(0, Math.min(1, ss.lineShadowOpacity)) : 0.35;
1589
- return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${chunkDCNHUEWQ_js.colorWithOpacity(
1590
- chunkDCNHUEWQ_js.normalizeHexColor(ss.lineShadowColor, "#000000"),
1589
+ return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${chunkSN5EUDIT_js.colorWithOpacity(
1590
+ chunkSN5EUDIT_js.normalizeHexColor(ss.lineShadowColor, "#000000"),
1591
1591
  opacity
1592
1592
  )}`;
1593
1593
  }
1594
1594
  function buildLineGlowFilter(element) {
1595
- if (!chunkDCNHUEWQ_js.hasShapeProperties(element)) {
1595
+ if (!chunkSN5EUDIT_js.hasShapeProperties(element)) {
1596
1596
  return void 0;
1597
1597
  }
1598
1598
  const ss = element.shapeStyle;
@@ -1601,22 +1601,22 @@ function buildLineGlowFilter(element) {
1601
1601
  }
1602
1602
  const glowOpacity = typeof ss.lineGlowOpacity === "number" ? ss.lineGlowOpacity : 0.75;
1603
1603
  const glowRad = Math.round(Math.max(0, ss.lineGlowRadius));
1604
- const glowCol = chunkDCNHUEWQ_js.colorWithOpacity(chunkDCNHUEWQ_js.normalizeHexColor(ss.lineGlowColor, "#ffff00"), glowOpacity);
1604
+ const glowCol = chunkSN5EUDIT_js.colorWithOpacity(chunkSN5EUDIT_js.normalizeHexColor(ss.lineGlowColor, "#ffff00"), glowOpacity);
1605
1605
  return `drop-shadow(0 0 ${glowRad}px ${glowCol})`;
1606
1606
  }
1607
1607
  function getDagDuotoneFilterId(elementId) {
1608
1608
  return `dag-duotone-${elementId}`;
1609
1609
  }
1610
1610
  function hasDagDuotoneEffect(element) {
1611
- if (!chunkDCNHUEWQ_js.hasShapeProperties(element)) {
1611
+ if (!chunkSN5EUDIT_js.hasShapeProperties(element)) {
1612
1612
  return false;
1613
1613
  }
1614
1614
  return Boolean(element.shapeStyle?.dagDuotone);
1615
1615
  }
1616
1616
  function renderDagDuotoneSvgFilter(elementId, color1, color2) {
1617
1617
  const filterId = getDagDuotoneFilterId(elementId);
1618
- const c1 = chunkDCNHUEWQ_js.hexToRgbUnit(color1);
1619
- const c2 = chunkDCNHUEWQ_js.hexToRgbUnit(color2);
1618
+ const c1 = chunkSN5EUDIT_js.hexToRgbUnit(color1);
1619
+ const c2 = chunkSN5EUDIT_js.hexToRgbUnit(color2);
1620
1620
  const grayscaleMatrix = [
1621
1621
  0.2126,
1622
1622
  0.7152,
@@ -1660,7 +1660,7 @@ function renderDagDuotoneSvgFilter(elementId, color1, color2) {
1660
1660
 
1661
1661
  // src/viewer/utils/shape-visual-3d.ts
1662
1662
  function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elementHeight) {
1663
- return chunkDCNHUEWQ_js.build3DExtrusionData(
1663
+ return chunkSN5EUDIT_js.build3DExtrusionData(
1664
1664
  shape3d,
1665
1665
  scene3d,
1666
1666
  fillColor,
@@ -1669,7 +1669,7 @@ function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elemen
1669
1669
  );
1670
1670
  }
1671
1671
  function apply3dEffects2(base, scene3d, shape3d, fillColorFallback) {
1672
- chunkDCNHUEWQ_js.apply3dEffects(base, scene3d, shape3d, fillColorFallback);
1672
+ chunkSN5EUDIT_js.apply3dEffects(base, scene3d, shape3d, fillColorFallback);
1673
1673
  }
1674
1674
 
1675
1675
  // src/viewer/utils/shape-visual-style.ts
@@ -1677,16 +1677,16 @@ function rendersCustomVectorPath(element) {
1677
1677
  return (element.type === "shape" || element.type === "image" || element.type === "picture") && Boolean(element.pathData) && typeof element.pathWidth === "number" && element.pathWidth > 0 && typeof element.pathHeight === "number" && element.pathHeight > 0;
1678
1678
  }
1679
1679
  function rendersWedgeCalloutVector(element) {
1680
- return element.type === "shape" && chunkDCNHUEWQ_js.isWedgeCalloutPresetShape(element.shapeType);
1680
+ return element.type === "shape" && chunkSN5EUDIT_js.isWedgeCalloutPresetShape(element.shapeType);
1681
1681
  }
1682
1682
  function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _strokeColor, animatesFill, animatesStroke, parentGroupFill) {
1683
- if (!chunkDCNHUEWQ_js.hasShapeProperties(element)) {
1683
+ if (!chunkSN5EUDIT_js.hasShapeProperties(element)) {
1684
1684
  return {};
1685
1685
  }
1686
1686
  const ss = element.shapeStyle;
1687
- const fill = animatesFill ? void 0 : chunkDCNHUEWQ_js.getComputedFillStyle(element, parentGroupFill);
1688
- const fx = chunkDCNHUEWQ_js.getComputedEffectStyle(element);
1689
- const stroke = chunkDCNHUEWQ_js.getComputedStrokeStyle(element);
1687
+ const fill = animatesFill ? void 0 : chunkSN5EUDIT_js.getComputedFillStyle(element, parentGroupFill);
1688
+ const fx = chunkSN5EUDIT_js.getComputedEffectStyle(element);
1689
+ const stroke = chunkSN5EUDIT_js.getComputedStrokeStyle(element);
1690
1690
  const base = {
1691
1691
  // A gradient fill REPLACES the solid fill, it does not sit on top of it;
1692
1692
  // the whole precedence lives in shared's `getComputedFillStyle`.
@@ -1725,7 +1725,7 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
1725
1725
  };
1726
1726
  Object.assign(
1727
1727
  base,
1728
- chunkDCNHUEWQ_js.getAnimationColorBaseStyle(element, {
1728
+ chunkSN5EUDIT_js.getAnimationColorBaseStyle(element, {
1729
1729
  animatesFill,
1730
1730
  animatesStroke,
1731
1731
  parentGroupFill
@@ -1737,7 +1737,7 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
1737
1737
  base.borderStyle = void 0;
1738
1738
  }
1739
1739
  apply3dEffects2(base, ss?.scene3d, ss?.shape3d, ss?.fillColor ?? fillColor);
1740
- if (rendersCustomVectorPath(element) || rendersWedgeCalloutVector(element) || chunkDCNHUEWQ_js.isStrokeOnlyPresetElement(element)) {
1740
+ if (rendersCustomVectorPath(element) || rendersWedgeCalloutVector(element) || chunkSN5EUDIT_js.isStrokeOnlyPresetElement(element)) {
1741
1741
  base.backgroundColor = "transparent";
1742
1742
  base.backgroundImage = void 0;
1743
1743
  base.borderWidth = void 0;
@@ -1751,7 +1751,7 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
1751
1751
  if (rendersWedgeCalloutVector(element)) {
1752
1752
  return base;
1753
1753
  }
1754
- const geometry = chunkDCNHUEWQ_js.resolveShapeGeometry(element);
1754
+ const geometry = chunkSN5EUDIT_js.resolveShapeGeometry(element);
1755
1755
  switch (geometry.kind) {
1756
1756
  case "bare":
1757
1757
  return { backgroundColor: "transparent", borderWidth: 0, borderStyle: "none" };
@@ -1777,13 +1777,13 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
1777
1777
  function getConnectorAdjustment(element, key, fallback) {
1778
1778
  const direct = element.shapeAdjustments?.[key];
1779
1779
  if (typeof direct === "number" && Number.isFinite(direct)) {
1780
- return chunkDCNHUEWQ_js.clampUnitInterval(direct / 1e5);
1780
+ return chunkSN5EUDIT_js.clampUnitInterval(direct / 1e5);
1781
1781
  }
1782
1782
  const fallbackKey = element.shapeAdjustments?.adj;
1783
1783
  if (typeof fallbackKey === "number" && Number.isFinite(fallbackKey)) {
1784
- return chunkDCNHUEWQ_js.clampUnitInterval(fallbackKey / 1e5);
1784
+ return chunkSN5EUDIT_js.clampUnitInterval(fallbackKey / 1e5);
1785
1785
  }
1786
- return chunkDCNHUEWQ_js.clampUnitInterval(fallback);
1786
+ return chunkSN5EUDIT_js.clampUnitInterval(fallback);
1787
1787
  }
1788
1788
  function getConnectorPathGeometry(element) {
1789
1789
  const width = Math.max(element.width, 0);
@@ -1948,11 +1948,11 @@ function strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray) {
1948
1948
  strokePaint,
1949
1949
  strokeWidth,
1950
1950
  dashArray,
1951
- lineCap: chunkDCNHUEWQ_js.svgLineCap(shapeStyle?.lineCap),
1951
+ lineCap: chunkSN5EUDIT_js.svgLineCap(shapeStyle?.lineCap),
1952
1952
  lineJoin,
1953
1953
  miterLimit,
1954
- offsets: chunkDCNHUEWQ_js.getCompoundLineOffsets(shapeStyle?.compoundLine, strokeWidth),
1955
- widths: chunkDCNHUEWQ_js.getCompoundLineWidths(shapeStyle?.compoundLine, strokeWidth)
1954
+ offsets: chunkSN5EUDIT_js.getCompoundLineOffsets(shapeStyle?.compoundLine, strokeWidth),
1955
+ widths: chunkSN5EUDIT_js.getCompoundLineWidths(shapeStyle?.compoundLine, strokeWidth)
1956
1956
  };
1957
1957
  }
1958
1958
  function strokeStrands(d, keyBase, ctx) {
@@ -1975,12 +1975,12 @@ function strokeStrands(d, keyBase, ctx) {
1975
1975
  }
1976
1976
  function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredPaths, shapeStyle, hasFill, fillColor, fillOpacity, strokePaint, strokeWidth, dashArray, animatesFill = false, gradient) {
1977
1977
  const ctx = strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray);
1978
- const subpaths = structuredPaths && structuredPaths.length > 0 ? chunkDCNHUEWQ_js.customGeometryPathsToSvgSubpaths(structuredPaths, pathWidth, pathHeight) : void 0;
1978
+ const subpaths = structuredPaths && structuredPaths.length > 0 ? chunkSN5EUDIT_js.customGeometryPathsToSvgSubpaths(structuredPaths, pathWidth, pathHeight) : void 0;
1979
1979
  const needsPerSubpath = subpaths !== void 0 && subpaths.some((sp) => sp.fillMode && sp.fillMode !== "norm" || sp.stroke === false);
1980
- const gradientPaint = gradient ? chunkDCNHUEWQ_js.svgGradientFillRef(gradient) : void 0;
1980
+ const gradientPaint = gradient ? chunkSN5EUDIT_js.svgGradientFillRef(gradient) : void 0;
1981
1981
  const nodes = [];
1982
1982
  if (subpaths && needsPerSubpath) {
1983
- const paints = chunkDCNHUEWQ_js.buildSubpathPaints(subpaths, hasFill, fillColor, fillOpacity);
1983
+ const paints = chunkSN5EUDIT_js.buildSubpathPaints(subpaths, hasFill, fillColor, fillOpacity);
1984
1984
  paints.forEach((paint, idx) => {
1985
1985
  if (paint.fill !== "none") {
1986
1986
  const mode = subpaths[idx]?.fillMode;
@@ -2009,7 +2009,7 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
2009
2009
  "path",
2010
2010
  {
2011
2011
  d: pathData,
2012
- fill: animatesFill ? "inherit" : gradientPaint ?? chunkDCNHUEWQ_js.colorWithOpacity(fillColor, fillOpacity),
2012
+ fill: animatesFill ? "inherit" : gradientPaint ?? chunkSN5EUDIT_js.colorWithOpacity(fillColor, fillOpacity),
2013
2013
  stroke: "none",
2014
2014
  vectorEffect: "non-scaling-stroke"
2015
2015
  },
@@ -2035,14 +2035,14 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
2035
2035
  );
2036
2036
  }
2037
2037
  function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor, animatesFill, animatesStroke) {
2038
- if (!chunkDCNHUEWQ_js.hasShapeProperties(element)) {
2038
+ if (!chunkSN5EUDIT_js.hasShapeProperties(element)) {
2039
2039
  return null;
2040
2040
  }
2041
2041
  const normalizedType = (element.shapeType || "").toLowerCase();
2042
- const fillPaint = animatesFill ? "inherit" : chunkDCNHUEWQ_js.colorWithOpacity(fillColor, element.shapeStyle?.fillOpacity);
2043
- const strokePaint = animatesStroke ? "inherit" : chunkDCNHUEWQ_js.colorWithOpacity(strokeColor, element.shapeStyle?.strokeOpacity);
2044
- const dashType = chunkDCNHUEWQ_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2045
- const dashArray = chunkDCNHUEWQ_js.getSvgStrokeDasharray(
2042
+ const fillPaint = animatesFill ? "inherit" : chunkSN5EUDIT_js.colorWithOpacity(fillColor, element.shapeStyle?.fillOpacity);
2043
+ const strokePaint = animatesStroke ? "inherit" : chunkSN5EUDIT_js.colorWithOpacity(strokeColor, element.shapeStyle?.strokeOpacity);
2044
+ const dashType = chunkSN5EUDIT_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2045
+ const dashArray = chunkSN5EUDIT_js.getSvgStrokeDasharray(
2046
2046
  dashType,
2047
2047
  Math.max(strokeWidth, 1),
2048
2048
  element.shapeStyle?.customDashSegments
@@ -2123,13 +2123,13 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2123
2123
  // container's `background-image` is suppressed for custom geometry, so
2124
2124
  // without this the shape fell back to the parser's representative solid
2125
2125
  // and lost every fade (issue #132).
2126
- chunkDCNHUEWQ_js.buildSvgGradientDef(element.shapeStyle, element.id)
2126
+ chunkSN5EUDIT_js.buildSvgGradientDef(element.shapeStyle, element.id)
2127
2127
  );
2128
2128
  }
2129
- if ((element.type === "image" || element.type === "picture") && strokeWidth > 0 && !chunkDCNHUEWQ_js.buildStrokeOutline(element)) {
2129
+ if ((element.type === "image" || element.type === "picture") && strokeWidth > 0 && !chunkSN5EUDIT_js.buildStrokeOutline(element)) {
2130
2130
  const width = Math.max(element.width, 1);
2131
2131
  const height = Math.max(element.height, 1);
2132
- const geometry = chunkDCNHUEWQ_js.getPresetShapeVectorGeometry(
2132
+ const geometry = chunkSN5EUDIT_js.getPresetShapeVectorGeometry(
2133
2133
  element.shapeType || "rect",
2134
2134
  width,
2135
2135
  height,
@@ -2157,18 +2157,18 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2157
2157
  );
2158
2158
  }
2159
2159
  }
2160
- if (element.type === "shape" && chunkDCNHUEWQ_js.isWedgeCalloutPresetShape(element.shapeType)) {
2160
+ if (element.type === "shape" && chunkSN5EUDIT_js.isWedgeCalloutPresetShape(element.shapeType)) {
2161
2161
  const width = Math.max(element.width, 1);
2162
2162
  const height = Math.max(element.height, 1);
2163
- const geometry = chunkDCNHUEWQ_js.getPresetShapeVectorGeometry(
2163
+ const geometry = chunkSN5EUDIT_js.getPresetShapeVectorGeometry(
2164
2164
  element.shapeType,
2165
2165
  width,
2166
2166
  height,
2167
2167
  element.shapeAdjustments
2168
2168
  );
2169
2169
  if (geometry) {
2170
- const gradient = chunkDCNHUEWQ_js.buildSvgGradientDef(element.shapeStyle, element.id);
2171
- const gradientPaint = gradient ? chunkDCNHUEWQ_js.svgGradientFillRef(gradient) : void 0;
2170
+ const gradient = chunkSN5EUDIT_js.buildSvgGradientDef(element.shapeStyle, element.id);
2171
+ const gradientPaint = gradient ? chunkSN5EUDIT_js.svgGradientFillRef(gradient) : void 0;
2172
2172
  return /* @__PURE__ */ jsxRuntime.jsxs(
2173
2173
  "svg",
2174
2174
  {
@@ -2201,18 +2201,18 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2201
2201
  );
2202
2202
  }
2203
2203
  }
2204
- if (chunkDCNHUEWQ_js.isCalloutShape(normalizedType)) {
2204
+ if (chunkSN5EUDIT_js.isCalloutShape(normalizedType)) {
2205
2205
  const width = Math.max(element.width, 1);
2206
2206
  const height = Math.max(element.height, 1);
2207
- const geometry = chunkDCNHUEWQ_js.getCalloutLeaderLineGeometry(
2207
+ const geometry = chunkSN5EUDIT_js.getCalloutLeaderLineGeometry(
2208
2208
  normalizedType,
2209
2209
  width,
2210
2210
  height,
2211
2211
  element.shapeAdjustments
2212
2212
  );
2213
2213
  if (geometry && geometry.points.length >= 2) {
2214
- const leaderPath = chunkDCNHUEWQ_js.buildCalloutLeaderLineSvgPath(geometry);
2215
- const bounds = chunkDCNHUEWQ_js.getCalloutViewBoxBounds(width, height, geometry);
2214
+ const leaderPath = chunkSN5EUDIT_js.buildCalloutLeaderLineSvgPath(geometry);
2215
+ const bounds = chunkSN5EUDIT_js.getCalloutViewBoxBounds(width, height, geometry);
2216
2216
  const lineStroke = Math.max(strokeWidth, 1);
2217
2217
  const offsetLeft = bounds.minX;
2218
2218
  const offsetTop = bounds.minY;
@@ -2275,10 +2275,10 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2275
2275
  const endArrowW = element.shapeStyle?.connectorEndArrowWidth;
2276
2276
  const endArrowL = element.shapeStyle?.connectorEndArrowLength;
2277
2277
  const compoundLine = element.shapeStyle?.compoundLine;
2278
- const connectorLineCap = chunkDCNHUEWQ_js.svgLineCap(element.shapeStyle?.lineCap);
2278
+ const connectorLineCap = chunkSN5EUDIT_js.svgLineCap(element.shapeStyle?.lineCap);
2279
2279
  const hitTargetWidth = Math.max(strokeWidth * 3, 12);
2280
- const offsets = chunkDCNHUEWQ_js.getCompoundLineOffsets(compoundLine, strokeWidth);
2281
- const widths = chunkDCNHUEWQ_js.getCompoundLineWidths(compoundLine, strokeWidth);
2280
+ const offsets = chunkSN5EUDIT_js.getCompoundLineOffsets(compoundLine, strokeWidth);
2281
+ const widths = chunkSN5EUDIT_js.getCompoundLineWidths(compoundLine, strokeWidth);
2282
2282
  return /* @__PURE__ */ jsxRuntime.jsxs(
2283
2283
  "svg",
2284
2284
  {
@@ -2345,15 +2345,15 @@ function parseGradientFillCss(gradFill) {
2345
2345
  }
2346
2346
  const rawStops = stops.map((gs) => {
2347
2347
  const pos = Number.parseInt(String(gs["@_pos"] || "0"), 10) / 1e3;
2348
- const color = chunkDCNHUEWQ_js.parseDrawingColor(gs) ?? "#888888";
2349
- const opacity = chunkDCNHUEWQ_js.parseDrawingColorOpacity(gs);
2348
+ const color = chunkSN5EUDIT_js.parseDrawingColor(gs) ?? "#888888";
2349
+ const opacity = chunkSN5EUDIT_js.parseDrawingColorOpacity(gs);
2350
2350
  return { position: pos, color, opacity };
2351
2351
  }).sort((a, b) => a.position - b.position);
2352
- const stopStrings = rawStops.map((s) => `${chunkDCNHUEWQ_js.colorWithOpacity(s.color, s.opacity)} ${s.position.toFixed(1)}%`).join(", ");
2352
+ const stopStrings = rawStops.map((s) => `${chunkSN5EUDIT_js.colorWithOpacity(s.color, s.opacity)} ${s.position.toFixed(1)}%`).join(", ");
2353
2353
  const lin = gradFill["a:lin"];
2354
2354
  if (lin) {
2355
2355
  const angRaw = Number.parseInt(String(lin["@_ang"] || "0"), 10);
2356
- const angleDeg = Math.round(chunkDCNHUEWQ_js.ooxmlGradientAngleToCssDegrees(angRaw / 6e4));
2356
+ const angleDeg = Math.round(chunkSN5EUDIT_js.ooxmlGradientAngleToCssDegrees(angRaw / 6e4));
2357
2357
  return `linear-gradient(${angleDeg}deg, ${stopStrings})`;
2358
2358
  }
2359
2359
  const path = gradFill["a:path"];
@@ -2367,7 +2367,7 @@ function parseGradientFillCss(gradFill) {
2367
2367
  b: Number.parseInt(String(fillToRectXml["@_b"] || "0"), 10) / 1e5
2368
2368
  } : void 0;
2369
2369
  if (pathType === "rect") {
2370
- return chunkDCNHUEWQ_js.buildRectPathGradient(rawStops, void 0, fillToRect);
2370
+ return chunkSN5EUDIT_js.buildRectPathGradient(rawStops, void 0, fillToRect);
2371
2371
  }
2372
2372
  let cx = 50;
2373
2373
  let cy = 50;
@@ -2389,8 +2389,8 @@ function parsePatternFillCss(pattFill) {
2389
2389
  if (!pattFill) {
2390
2390
  return void 0;
2391
2391
  }
2392
- const fgColor = chunkDCNHUEWQ_js.parseDrawingColor(pattFill["a:fgClr"]) ?? "#000000";
2393
- const bgColor = chunkDCNHUEWQ_js.parseDrawingColor(pattFill["a:bgClr"]) ?? "#ffffff";
2392
+ const fgColor = chunkSN5EUDIT_js.parseDrawingColor(pattFill["a:fgClr"]) ?? "#000000";
2393
+ const bgColor = chunkSN5EUDIT_js.parseDrawingColor(pattFill["a:bgClr"]) ?? "#ffffff";
2394
2394
  const preset = String(pattFill["@_prst"] || "ltDnDiag");
2395
2395
  switch (preset) {
2396
2396
  case "ltHorz":
@@ -2501,11 +2501,11 @@ function parseCellBorders(cellProperties) {
2501
2501
  const prstDash = ln["a:prstDash"];
2502
2502
  const dashVal = prstDash ? String(prstDash["@_val"] || "") : void 0;
2503
2503
  const cssBorderStyle = ooxmlDashToCss(dashVal);
2504
- const color = chunkDCNHUEWQ_js.parseDrawingColor(ln["a:solidFill"]);
2504
+ const color = chunkSN5EUDIT_js.parseDrawingColor(ln["a:solidFill"]);
2505
2505
  if (color) {
2506
- const opacity = chunkDCNHUEWQ_js.parseDrawingColorOpacity(ln["a:solidFill"]);
2506
+ const opacity = chunkSN5EUDIT_js.parseDrawingColorOpacity(ln["a:solidFill"]);
2507
2507
  const key = `${edge.prefix}`;
2508
- borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${chunkDCNHUEWQ_js.colorWithOpacity(color, opacity)}`;
2508
+ borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${chunkSN5EUDIT_js.colorWithOpacity(color, opacity)}`;
2509
2509
  }
2510
2510
  }
2511
2511
  return borderStyle;
@@ -2518,7 +2518,7 @@ function parseCellTextEffects(runProps) {
2518
2518
  const textShadowParts = [];
2519
2519
  const outerShdw = effectLst["a:outerShdw"];
2520
2520
  if (outerShdw) {
2521
- const shdwColor = chunkDCNHUEWQ_js.parseDrawingColor(outerShdw);
2521
+ const shdwColor = chunkSN5EUDIT_js.parseDrawingColor(outerShdw);
2522
2522
  if (shdwColor) {
2523
2523
  const blurRad = Number.parseInt(String(outerShdw["@_blurRad"] || "0"), 10);
2524
2524
  const blurPx = blurRad > 0 ? Math.round(blurRad / 12700) : 0;
@@ -2536,7 +2536,7 @@ function parseCellTextEffects(runProps) {
2536
2536
  }
2537
2537
  const glow = effectLst["a:glow"];
2538
2538
  if (glow) {
2539
- const glowColor = chunkDCNHUEWQ_js.parseDrawingColor(glow);
2539
+ const glowColor = chunkSN5EUDIT_js.parseDrawingColor(glow);
2540
2540
  if (glowColor) {
2541
2541
  const glowRad = Number.parseInt(String(glow["@_rad"] || "0"), 10);
2542
2542
  const glowPx = glowRad > 0 ? Math.round(glowRad / 12700) : 2;
@@ -2616,10 +2616,10 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
2616
2616
  if (runProps?.["@_u"] !== void 0) {
2617
2617
  cellStyle.textDecorationLine = runProps["@_u"] === "sng" ? "underline" : "none";
2618
2618
  }
2619
- const runColor = chunkDCNHUEWQ_js.parseDrawingColor(runProps?.["a:solidFill"], schemeColorOverrides) || chunkDCNHUEWQ_js.parseDrawingColor(runProps?.["a:highlight"], schemeColorOverrides);
2619
+ const runColor = chunkSN5EUDIT_js.parseDrawingColor(runProps?.["a:solidFill"], schemeColorOverrides) || chunkSN5EUDIT_js.parseDrawingColor(runProps?.["a:highlight"], schemeColorOverrides);
2620
2620
  if (runColor) {
2621
- const opacity = chunkDCNHUEWQ_js.parseDrawingColorOpacity(runProps?.["a:solidFill"]);
2622
- cellStyle.color = chunkDCNHUEWQ_js.colorWithOpacity(runColor, opacity);
2621
+ const opacity = chunkSN5EUDIT_js.parseDrawingColorOpacity(runProps?.["a:solidFill"]);
2622
+ cellStyle.color = chunkSN5EUDIT_js.colorWithOpacity(runColor, opacity);
2623
2623
  }
2624
2624
  const fontFamily = runProps?.["a:latin"]?.["@_typeface"] || runProps?.["a:ea"]?.["@_typeface"] || runProps?.["a:cs"]?.["@_typeface"];
2625
2625
  if (fontFamily) {
@@ -2629,15 +2629,15 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
2629
2629
  cellStyle.textAlign = parseParagraphAlignment(paragraphProperties["@_algn"]);
2630
2630
  }
2631
2631
  const cellProperties = cellXml["a:tcPr"];
2632
- const cellFill = chunkDCNHUEWQ_js.parseDrawingColor(
2632
+ const cellFill = chunkSN5EUDIT_js.parseDrawingColor(
2633
2633
  cellProperties?.["a:solidFill"],
2634
2634
  schemeColorOverrides
2635
2635
  );
2636
2636
  if (cellFill) {
2637
- const opacity = chunkDCNHUEWQ_js.parseDrawingColorOpacity(
2637
+ const opacity = chunkSN5EUDIT_js.parseDrawingColorOpacity(
2638
2638
  cellProperties?.["a:solidFill"]
2639
2639
  );
2640
- cellStyle.backgroundColor = chunkDCNHUEWQ_js.colorWithOpacity(cellFill, opacity);
2640
+ cellStyle.backgroundColor = chunkSN5EUDIT_js.colorWithOpacity(cellFill, opacity);
2641
2641
  } else {
2642
2642
  const gradCss = parseGradientFillCss(cellProperties?.["a:gradFill"]);
2643
2643
  if (gradCss) {
@@ -2652,16 +2652,16 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
2652
2652
  const edgeBorders = parseCellBorders(cellProperties);
2653
2653
  Object.assign(cellStyle, edgeBorders);
2654
2654
  if (!cellStyle.borderLeftColor && !cellStyle.borderRightColor && !cellStyle.borderTopColor && !cellStyle.borderBottomColor) {
2655
- const borderColor = chunkDCNHUEWQ_js.parseDrawingColor(
2655
+ const borderColor = chunkSN5EUDIT_js.parseDrawingColor(
2656
2656
  cellProperties?.["a:lnL"]?.["a:solidFill"],
2657
2657
  schemeColorOverrides
2658
- ) || chunkDCNHUEWQ_js.parseDrawingColor(
2658
+ ) || chunkSN5EUDIT_js.parseDrawingColor(
2659
2659
  cellProperties?.["a:lnR"]?.["a:solidFill"],
2660
2660
  schemeColorOverrides
2661
- ) || chunkDCNHUEWQ_js.parseDrawingColor(
2661
+ ) || chunkSN5EUDIT_js.parseDrawingColor(
2662
2662
  cellProperties?.["a:lnT"]?.["a:solidFill"],
2663
2663
  schemeColorOverrides
2664
- ) || chunkDCNHUEWQ_js.parseDrawingColor(
2664
+ ) || chunkSN5EUDIT_js.parseDrawingColor(
2665
2665
  cellProperties?.["a:lnB"]?.["a:solidFill"],
2666
2666
  schemeColorOverrides
2667
2667
  );
@@ -2733,7 +2733,7 @@ function getTableCellBandStyle2(element, rowIndex, cellIndex, rowCount, columnCo
2733
2733
  if (element.type !== "table") {
2734
2734
  return void 0;
2735
2735
  }
2736
- return chunkDCNHUEWQ_js.getTableCellBandStyle(element.tableData, rowIndex, cellIndex, rowCount, columnCount, {
2736
+ return chunkSN5EUDIT_js.getTableCellBandStyle(element.tableData, rowIndex, cellIndex, rowCount, columnCount, {
2737
2737
  tableStyleMap: styleCtx?.tableStyleMap,
2738
2738
  colorScheme: styleCtx?.theme?.colorScheme,
2739
2739
  fontScheme: styleCtx?.theme?.fontScheme
@@ -2809,7 +2809,7 @@ function renderTableCellContent(cell, fallbackText) {
2809
2809
  return /* @__PURE__ */ jsxRuntime.jsx(
2810
2810
  "span",
2811
2811
  {
2812
- style: { position: "relative", ...chunkDCNHUEWQ_js.cellRunStyle(run) },
2812
+ style: { position: "relative", ...chunkSN5EUDIT_js.cellRunStyle(run) },
2813
2813
  children: run.text
2814
2814
  },
2815
2815
  `r-${index}`
@@ -2817,7 +2817,7 @@ function renderTableCellContent(cell, fallbackText) {
2817
2817
  });
2818
2818
  }
2819
2819
  function getCellDiagonalBorders2(style, tableData, pos, styleCtx) {
2820
- return chunkDCNHUEWQ_js.getCellDiagonalBorders(style, tableData, pos, {
2820
+ return chunkSN5EUDIT_js.getCellDiagonalBorders(style, tableData, pos, {
2821
2821
  tableStyleMap: styleCtx?.tableStyleMap,
2822
2822
  colorScheme: styleCtx?.theme?.colorScheme,
2823
2823
  fontScheme: styleCtx?.theme?.fontScheme
@@ -2950,7 +2950,7 @@ function TableResizeOverlay({
2950
2950
  const containerRef = React7.useRef(null);
2951
2951
  const [rowBounds, setRowBounds] = React7.useState([]);
2952
2952
  const dragRef = React7.useRef(null);
2953
- const colBoundaries = React7.useMemo(() => chunkDCNHUEWQ_js.computeColumnBoundaries(columnWidths), [columnWidths]);
2953
+ const colBoundaries = React7.useMemo(() => chunkSN5EUDIT_js.computeColumnBoundaries(columnWidths), [columnWidths]);
2954
2954
  const measureRows = React7.useCallback(() => {
2955
2955
  const container = containerRef.current;
2956
2956
  if (!container) {
@@ -2997,11 +2997,11 @@ function TableResizeOverlay({
2997
2997
  const rect = containerRef.current.getBoundingClientRect();
2998
2998
  if (drag.type === "col" && drag.initialWidths && onResizeColumns) {
2999
2999
  const deltaProp = (e.clientX - drag.startPos) / rect.width;
3000
- onResizeColumns(chunkDCNHUEWQ_js.computeResizedColumnWidths(drag.initialWidths, drag.index, deltaProp));
3000
+ onResizeColumns(chunkSN5EUDIT_js.computeResizedColumnWidths(drag.initialWidths, drag.index, deltaProp));
3001
3001
  } else if (drag.type === "row" && onResizeRow) {
3002
3002
  const deltaY = e.clientY - drag.startPos;
3003
- const newHeight = chunkDCNHUEWQ_js.computeResizedRowHeight(
3004
- drag.initialRowHeight ?? chunkDCNHUEWQ_js.DEFAULT_ROW_HEIGHT,
3003
+ const newHeight = chunkSN5EUDIT_js.computeResizedRowHeight(
3004
+ drag.initialRowHeight ?? chunkSN5EUDIT_js.DEFAULT_ROW_HEIGHT,
3005
3005
  deltaY
3006
3006
  );
3007
3007
  onResizeRow(drag.index, newHeight);
@@ -3039,7 +3039,7 @@ function TableResizeOverlay({
3039
3039
  e.stopPropagation();
3040
3040
  const table = containerRef.current?.querySelector("table");
3041
3041
  const tr = table?.querySelectorAll("tbody > tr")[index];
3042
- const actualHeight = tr?.offsetHeight ?? chunkDCNHUEWQ_js.DEFAULT_ROW_HEIGHT;
3042
+ const actualHeight = tr?.offsetHeight ?? chunkSN5EUDIT_js.DEFAULT_ROW_HEIGHT;
3043
3043
  document.body.style.cursor = "row-resize";
3044
3044
  document.body.style.userSelect = "none";
3045
3045
  dragRef.current = {
@@ -3079,14 +3079,14 @@ function renderTableFromTableData(element, textStyle, options) {
3079
3079
  const rowCount = tableData.rows.length;
3080
3080
  const columnCount = tableData.columnWidths.length;
3081
3081
  const selectedCell = options?.selectedCell || null;
3082
- const isEditable = Boolean(options?.editable) && chunkDCNHUEWQ_js.canDrillDown(element);
3082
+ const isEditable = Boolean(options?.editable) && chunkSN5EUDIT_js.canDrillDown(element);
3083
3083
  const hasCellSelectionHandler = typeof options?.onSelectCell === "function";
3084
3084
  const sharedCtx = {
3085
3085
  tableStyleMap: options?.styleCtx?.tableStyleMap,
3086
3086
  colorScheme: options?.styleCtx?.theme?.colorScheme,
3087
3087
  fontScheme: options?.styleCtx?.theme?.fontScheme
3088
3088
  };
3089
- const cellCss = (cell, rowIndex, cellIndex) => chunkDCNHUEWQ_js.tableCellCss(
3089
+ const cellCss = (cell, rowIndex, cellIndex) => chunkSN5EUDIT_js.tableCellCss(
3090
3090
  tableData,
3091
3091
  cell,
3092
3092
  { rowIndex, cellIndex, rowCount, columnCount },
@@ -3099,7 +3099,7 @@ function renderTableFromTableData(element, textStyle, options) {
3099
3099
  }
3100
3100
  const first = selectedCell.selectedCells[0];
3101
3101
  const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
3102
- return chunkDCNHUEWQ_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableData);
3102
+ return chunkSN5EUDIT_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableData);
3103
3103
  })();
3104
3104
  return /* @__PURE__ */ jsxRuntime.jsx(
3105
3105
  TableResizeOverlay,
@@ -3120,9 +3120,9 @@ function renderTableFromTableData(element, textStyle, options) {
3120
3120
  {
3121
3121
  className: "w-full h-full border-collapse table-fixed",
3122
3122
  style: {
3123
- fontFamily: chunkDCNHUEWQ_js.DEFAULT_FONT_FAMILY,
3123
+ fontFamily: chunkSN5EUDIT_js.DEFAULT_FONT_FAMILY,
3124
3124
  // `a:tblPr@rtl` mirrors the column order for RTL decks.
3125
- ...chunkDCNHUEWQ_js.tableContainerCss(tableData)
3125
+ ...chunkSN5EUDIT_js.tableContainerCss(tableData)
3126
3126
  },
3127
3127
  children: [
3128
3128
  tableData.columnWidths.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("colgroup", { children: tableData.columnWidths.map((w, ci) => /* @__PURE__ */ jsxRuntime.jsx(
@@ -3141,7 +3141,7 @@ function renderTableFromTableData(element, textStyle, options) {
3141
3141
  return null;
3142
3142
  }
3143
3143
  const isCellSelected = selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex;
3144
- const isInMultiSelection = chunkDCNHUEWQ_js.isCellInRect(rowIndex, cellIndex, selectionRect);
3144
+ const isInMultiSelection = chunkSN5EUDIT_js.isCellInRect(rowIndex, cellIndex, selectionRect);
3145
3145
  const isCellEditing = isCellSelected && selectedCell?.isEditing;
3146
3146
  const diag = getCellDiagonalBorders2(
3147
3147
  cell.style,
@@ -3170,7 +3170,7 @@ function renderTableFromTableData(element, textStyle, options) {
3170
3170
  }
3171
3171
  event.stopPropagation();
3172
3172
  if (event.shiftKey && selectedCell) {
3173
- const rect = chunkDCNHUEWQ_js.computeSelectionRect(
3173
+ const rect = chunkSN5EUDIT_js.computeSelectionRect(
3174
3174
  selectedCell.rowIndex,
3175
3175
  selectedCell.columnIndex,
3176
3176
  rowIndex,
@@ -3180,7 +3180,7 @@ function renderTableFromTableData(element, textStyle, options) {
3180
3180
  options?.onSelectCell?.({
3181
3181
  rowIndex: selectedCell.rowIndex,
3182
3182
  columnIndex: selectedCell.columnIndex,
3183
- selectedCells: chunkDCNHUEWQ_js.rectToCells(rect)
3183
+ selectedCells: chunkSN5EUDIT_js.rectToCells(rect)
3184
3184
  });
3185
3185
  } else {
3186
3186
  options?.onSelectCell?.({
@@ -3241,10 +3241,10 @@ function renderTableElement(element, textStyle, options) {
3241
3241
  if (tableEl2.tableData && tableEl2.tableData.rows.length > 0) {
3242
3242
  return renderTableFromTableData(tableEl2, textStyle, options);
3243
3243
  }
3244
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkW24OJ7H5_js.translationsEn["pptx.table.title"] });
3244
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkL3ZIBQEB_js.translationsEn["pptx.table.title"] });
3245
3245
  }
3246
3246
  const selectedCell = options?.selectedCell || null;
3247
- const isEditable = Boolean(options?.editable) && chunkDCNHUEWQ_js.canDrillDown(element);
3247
+ const isEditable = Boolean(options?.editable) && chunkSN5EUDIT_js.canDrillDown(element);
3248
3248
  const hasCellSelectionHandler = typeof options?.onSelectCell === "function";
3249
3249
  const tableEl = element;
3250
3250
  const xmlSelectionRect = (() => {
@@ -3256,7 +3256,7 @@ function renderTableElement(element, textStyle, options) {
3256
3256
  }
3257
3257
  const first = selectedCell.selectedCells[0];
3258
3258
  const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
3259
- return chunkDCNHUEWQ_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableEl.tableData);
3259
+ return chunkSN5EUDIT_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableEl.tableData);
3260
3260
  })();
3261
3261
  const schemeOverrides = options?.styleCtx?.theme?.colorScheme ? options.styleCtx.theme.colorScheme : void 0;
3262
3262
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -3278,9 +3278,9 @@ function renderTableElement(element, textStyle, options) {
3278
3278
  {
3279
3279
  className: "w-full h-full border-collapse table-fixed",
3280
3280
  style: {
3281
- fontFamily: chunkDCNHUEWQ_js.DEFAULT_FONT_FAMILY,
3281
+ fontFamily: chunkSN5EUDIT_js.DEFAULT_FONT_FAMILY,
3282
3282
  // `a:tblPr@rtl` mirrors the column order for RTL decks.
3283
- ...chunkDCNHUEWQ_js.tableContainerCss(tableEl.tableData)
3283
+ ...chunkSN5EUDIT_js.tableContainerCss(tableEl.tableData)
3284
3284
  },
3285
3285
  children: [
3286
3286
  parsedTable.columnPercentages.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx("colgroup", { children: parsedTable.columnPercentages.map((percentage, columnIndex) => /* @__PURE__ */ jsxRuntime.jsx(
@@ -3337,7 +3337,7 @@ function renderTableElement(element, textStyle, options) {
3337
3337
  color: textStyle.color,
3338
3338
  ...bandStyle,
3339
3339
  ...xmlCellStyle,
3340
- ...tdCellOverride ? chunkDCNHUEWQ_js.cellStyleToCss(tdCellOverride) : void 0,
3340
+ ...tdCellOverride ? chunkSN5EUDIT_js.cellStyleToCss(tdCellOverride) : void 0,
3341
3341
  ...diag ? { position: "relative" } : void 0
3342
3342
  };
3343
3343
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -3347,7 +3347,7 @@ function renderTableElement(element, textStyle, options) {
3347
3347
  "border px-1 py-0.5 align-top",
3348
3348
  isEditable && hasCellSelectionHandler ? "border-blue-200/70 cursor-cell" : "border-white/30",
3349
3349
  selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex ? "ring-1 ring-inset ring-blue-500" : null,
3350
- chunkDCNHUEWQ_js.isCellInRect(rowIndex, cellIndex, xmlSelectionRect) && !(selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex) ? "bg-blue-500/15 ring-1 ring-inset ring-blue-400/50" : null
3350
+ chunkSN5EUDIT_js.isCellInRect(rowIndex, cellIndex, xmlSelectionRect) && !(selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex) ? "bg-blue-500/15 ring-1 ring-inset ring-blue-400/50" : null
3351
3351
  ),
3352
3352
  colSpan,
3353
3353
  rowSpan: rSpan,
@@ -3358,7 +3358,7 @@ function renderTableElement(element, textStyle, options) {
3358
3358
  }
3359
3359
  event.stopPropagation();
3360
3360
  if (event.shiftKey && selectedCell && tableEl.tableData) {
3361
- const rect = chunkDCNHUEWQ_js.computeSelectionRect(
3361
+ const rect = chunkSN5EUDIT_js.computeSelectionRect(
3362
3362
  selectedCell.rowIndex,
3363
3363
  selectedCell.columnIndex,
3364
3364
  rowIndex,
@@ -3368,7 +3368,7 @@ function renderTableElement(element, textStyle, options) {
3368
3368
  options?.onSelectCell?.({
3369
3369
  rowIndex: selectedCell.rowIndex,
3370
3370
  columnIndex: selectedCell.columnIndex,
3371
- selectedCells: chunkDCNHUEWQ_js.rectToCells(rect)
3371
+ selectedCells: chunkSN5EUDIT_js.rectToCells(rect)
3372
3372
  });
3373
3373
  } else {
3374
3374
  options?.onSelectCell?.({
@@ -3427,23 +3427,23 @@ function renderTableElement(element, textStyle, options) {
3427
3427
  );
3428
3428
  }
3429
3429
  function partAttrs(part) {
3430
- return part ? chunkDCNHUEWQ_js.chartPartToAttrs(part) : void 0;
3430
+ return part ? chunkSN5EUDIT_js.chartPartToAttrs(part) : void 0;
3431
3431
  }
3432
3432
  function resolveReactPalette(chartData) {
3433
3433
  if (chartData.colorPalette && chartData.colorPalette.length > 0) {
3434
3434
  return chartData.colorPalette;
3435
3435
  }
3436
- return [...chunkDCNHUEWQ_js.getChartStylePalette(chartData.style?.styleId)];
3436
+ return [...chunkSN5EUDIT_js.getChartStylePalette(chartData.style?.styleId)];
3437
3437
  }
3438
3438
  function buildReactChartViewModel(element) {
3439
3439
  if (element.type !== "chart" || !element.chartData) {
3440
- return chunkDCNHUEWQ_js.buildChartViewModel(element);
3440
+ return chunkSN5EUDIT_js.buildChartViewModel(element);
3441
3441
  }
3442
3442
  const palette = resolveReactPalette(element.chartData), themedElement = {
3443
3443
  ...element,
3444
3444
  chartData: { ...element.chartData, colorPalette: palette }
3445
3445
  };
3446
- return chunkDCNHUEWQ_js.buildChartViewModel(themedElement);
3446
+ return chunkSN5EUDIT_js.buildChartViewModel(themedElement);
3447
3447
  }
3448
3448
  function renderPrimitive(prim, key) {
3449
3449
  switch (prim.kind) {
@@ -3592,7 +3592,7 @@ function renderText(t, key) {
3592
3592
  );
3593
3593
  }
3594
3594
  function renderChartViewModel(elementId, vm, preserveAspectRatio = "none") {
3595
- const legendItems = chunkDCNHUEWQ_js.computeChartLegendLayout(vm);
3595
+ const legendItems = chunkSN5EUDIT_js.computeChartLegendLayout(vm);
3596
3596
  return /* @__PURE__ */ jsxRuntime.jsxs(
3597
3597
  "svg",
3598
3598
  {
@@ -3645,7 +3645,18 @@ function renderChartViewModel(elementId, vm, preserveAspectRatio = "none") {
3645
3645
  fontFamily: vm.titleStyle?.fontFamily,
3646
3646
  fill: vm.titleStyle?.fill ?? "#1e293b",
3647
3647
  "data-chart-part": "title",
3648
- children: vm.title
3648
+ children: vm.titleRunSpans && vm.titleRunSpans.length > 0 ? vm.titleRunSpans.map((run, i) => /* @__PURE__ */ jsxRuntime.jsx(
3649
+ "tspan",
3650
+ {
3651
+ fontSize: run.fontSize,
3652
+ fontWeight: run.fontWeight,
3653
+ fontStyle: run.fontStyle,
3654
+ fontFamily: run.fontFamily,
3655
+ fill: run.fill,
3656
+ children: run.text
3657
+ },
3658
+ `${elementId}-title-run-${i}`
3659
+ )) : vm.title
3649
3660
  }
3650
3661
  ),
3651
3662
  vm.gridlines.map((gl, i) => /* @__PURE__ */ jsxRuntime.jsx(
@@ -3719,17 +3730,17 @@ function renderChartViewModel(elementId, vm, preserveAspectRatio = "none") {
3719
3730
  }
3720
3731
  function renderChartElement(element) {
3721
3732
  if (element.type !== "chart") {
3722
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkW24OJ7H5_js.translationsEn["pptx.chart.heading"] });
3733
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkL3ZIBQEB_js.translationsEn["pptx.chart.heading"] });
3723
3734
  }
3724
3735
  const chartData = element.chartData;
3725
3736
  if (!chartData || chartData.series.length === 0) {
3726
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkW24OJ7H5_js.translationsEn["pptx.chart.heading"] });
3737
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkL3ZIBQEB_js.translationsEn["pptx.chart.heading"] });
3727
3738
  }
3728
- const kind = chunkDCNHUEWQ_js.resolveChartKind(chartData.chartType ?? "bar");
3739
+ const kind = chunkSN5EUDIT_js.resolveChartKind(chartData.chartType ?? "bar");
3729
3740
  return renderChartViewModel(
3730
3741
  element.id,
3731
3742
  buildReactChartViewModel(element),
3732
- chunkDCNHUEWQ_js.chartPreserveAspectRatio(kind)
3743
+ chunkSN5EUDIT_js.chartPreserveAspectRatio(kind)
3733
3744
  );
3734
3745
  }
3735
3746
 
@@ -3749,14 +3760,14 @@ function buildNotesPdf(pages) {
3749
3760
  notes: page.notes,
3750
3761
  slideNumber: page.slideNumber
3751
3762
  }));
3752
- const bytes = chunkDCNHUEWQ_js.buildNotesPdfBytes(images, meta);
3763
+ const bytes = chunkSN5EUDIT_js.buildNotesPdfBytes(images, meta);
3753
3764
  const blob = new Blob([bytes], { type: "application/pdf" });
3754
3765
  return URL.createObjectURL(blob);
3755
3766
  }
3756
3767
 
3757
3768
  // src/viewer/utils/pdf-builder-slides.ts
3758
3769
  function buildPdfFromImageData(images) {
3759
- const bytes = chunkDCNHUEWQ_js.buildSlidesPdfBytes(images);
3770
+ const bytes = chunkSN5EUDIT_js.buildSlidesPdfBytes(images);
3760
3771
  const blob = new Blob([bytes], { type: "application/pdf" });
3761
3772
  return URL.createObjectURL(blob);
3762
3773
  }
@@ -3765,7 +3776,7 @@ function buildPdfFromImageData(images) {
3765
3776
  var activePreview = null;
3766
3777
  function startPreviewAnimation(elementId, preset, options) {
3767
3778
  stopPreviewAnimation();
3768
- const descriptor = chunkDCNHUEWQ_js.buildPreviewAnimation(preset, options);
3779
+ const descriptor = chunkSN5EUDIT_js.buildPreviewAnimation(preset, options);
3769
3780
  if (!descriptor) {
3770
3781
  return;
3771
3782
  }
@@ -3778,7 +3789,7 @@ function startMotionPathPreview(elementId, path, options) {
3778
3789
  return;
3779
3790
  }
3780
3791
  const stage = domEl.offsetParent;
3781
- const descriptor = chunkDCNHUEWQ_js.buildMotionPathPreview({
3792
+ const descriptor = chunkSN5EUDIT_js.buildMotionPathPreview({
3782
3793
  path,
3783
3794
  slideWidth: stage?.offsetWidth || DEFAULT_PREVIEW_SLIDE_WIDTH,
3784
3795
  slideHeight: stage?.offsetHeight || DEFAULT_PREVIEW_SLIDE_HEIGHT,