pptx-react-viewer 4.3.0 → 4.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/CHANGELOG.md +106 -0
  2. package/dist/{AiChatPanel-UCEK3ZTD.mjs → AiChatPanel-QJHUDIWT.mjs} +4 -4
  3. package/dist/AiChatPanel-QJHUDIWT.mjs.br +0 -0
  4. package/dist/AiChatPanel-QJHUDIWT.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-7UQA25FA.js → AiChatPanel-UFMSTNCB.js} +28 -28
  6. package/dist/AiChatPanel-UFMSTNCB.js.br +0 -0
  7. package/dist/AiChatPanel-UFMSTNCB.js.gz +0 -0
  8. package/dist/{Model3DScene-AI2JTBQM.mjs → Model3DScene-3GOC5HUS.mjs} +1 -1
  9. package/dist/Model3DScene-3GOC5HUS.mjs.br +0 -0
  10. package/dist/Model3DScene-3GOC5HUS.mjs.gz +0 -0
  11. package/dist/{Model3DScene-X3DS3ELB.js → Model3DScene-KXNJBAQD.js} +2 -2
  12. package/dist/{Model3DScene-X3DS3ELB.js.br → Model3DScene-KXNJBAQD.js.br} +0 -0
  13. package/dist/Model3DScene-KXNJBAQD.js.gz +0 -0
  14. package/dist/{chunk-UTI4CLYJ.js → chunk-7WWINBGF.js} +1133 -418
  15. package/dist/chunk-7WWINBGF.js.br +0 -0
  16. package/dist/chunk-7WWINBGF.js.gz +0 -0
  17. package/dist/{chunk-42XEZVUQ.js → chunk-AI6K5EAE.js} +1261 -1077
  18. package/dist/chunk-AI6K5EAE.js.br +0 -0
  19. package/dist/chunk-AI6K5EAE.js.gz +0 -0
  20. package/dist/{chunk-KAO5USPE.js → chunk-CSY422LU.js} +5 -5
  21. package/dist/chunk-CSY422LU.js.br +0 -0
  22. package/dist/chunk-CSY422LU.js.gz +0 -0
  23. package/dist/{chunk-3UWJWJCR.mjs → chunk-D3TZOCQP.mjs} +1118 -419
  24. package/dist/chunk-D3TZOCQP.mjs.br +0 -0
  25. package/dist/chunk-D3TZOCQP.mjs.gz +0 -0
  26. package/dist/{chunk-W5KLLGVH.js → chunk-I4D6JQOI.js} +25 -0
  27. package/dist/chunk-I4D6JQOI.js.br +0 -0
  28. package/dist/chunk-I4D6JQOI.js.gz +0 -0
  29. package/dist/{chunk-OBQ453H6.mjs → chunk-JQXN6PO7.mjs} +25 -0
  30. package/dist/chunk-JQXN6PO7.mjs.br +0 -0
  31. package/dist/chunk-JQXN6PO7.mjs.gz +0 -0
  32. package/dist/{chunk-RXYLPESV.mjs → chunk-LUHUYBGW.mjs} +201 -17
  33. package/dist/chunk-LUHUYBGW.mjs.br +0 -0
  34. package/dist/chunk-LUHUYBGW.mjs.gz +0 -0
  35. package/dist/{chunk-E7O4HTS5.js → chunk-OWTHF5N4.js} +197 -183
  36. package/dist/chunk-OWTHF5N4.js.br +0 -0
  37. package/dist/chunk-OWTHF5N4.js.gz +0 -0
  38. package/dist/{chunk-SKTZSG7Q.mjs → chunk-WCHKDZP6.mjs} +305 -47
  39. package/dist/chunk-WCHKDZP6.mjs.br +0 -0
  40. package/dist/chunk-WCHKDZP6.mjs.gz +0 -0
  41. package/dist/{chunk-PLDG3CXW.mjs → chunk-WNFHFFYE.mjs} +16 -2
  42. package/dist/chunk-WNFHFFYE.mjs.br +0 -0
  43. package/dist/chunk-WNFHFFYE.mjs.gz +0 -0
  44. package/dist/{chunk-YQJOCGOK.mjs → chunk-XMKLY2SE.mjs} +1 -1
  45. package/dist/chunk-XMKLY2SE.mjs.br +0 -0
  46. package/dist/chunk-XMKLY2SE.mjs.gz +0 -0
  47. package/dist/{chunk-Y7LI2JIR.js → chunk-YJKR7Z3X.js} +1103 -845
  48. package/dist/chunk-YJKR7Z3X.js.br +0 -0
  49. package/dist/chunk-YJKR7Z3X.js.gz +0 -0
  50. package/dist/i18n/de.cjs +23 -0
  51. package/dist/i18n/de.cjs.br +0 -0
  52. package/dist/i18n/de.cjs.gz +0 -0
  53. package/dist/i18n/de.mjs +23 -0
  54. package/dist/i18n/de.mjs.br +0 -0
  55. package/dist/i18n/de.mjs.gz +0 -0
  56. package/dist/i18n/es.cjs +23 -0
  57. package/dist/i18n/es.cjs.br +0 -0
  58. package/dist/i18n/es.cjs.gz +0 -0
  59. package/dist/i18n/es.mjs +23 -0
  60. package/dist/i18n/es.mjs.br +0 -0
  61. package/dist/i18n/es.mjs.gz +0 -0
  62. package/dist/i18n/fr.cjs +23 -0
  63. package/dist/i18n/fr.cjs.br +0 -0
  64. package/dist/i18n/fr.cjs.gz +0 -0
  65. package/dist/i18n/fr.mjs +23 -0
  66. package/dist/i18n/fr.mjs.br +0 -0
  67. package/dist/i18n/fr.mjs.gz +0 -0
  68. package/dist/i18n/zh-CN.cjs +23 -0
  69. package/dist/i18n/zh-CN.cjs.br +0 -0
  70. package/dist/i18n/zh-CN.cjs.gz +0 -0
  71. package/dist/i18n/zh-CN.mjs +23 -0
  72. package/dist/i18n/zh-CN.mjs.br +0 -0
  73. package/dist/i18n/zh-CN.mjs.gz +0 -0
  74. package/dist/i18n.js +4 -4
  75. package/dist/i18n.js.br +0 -0
  76. package/dist/i18n.js.gz +0 -0
  77. package/dist/i18n.mjs +1 -1
  78. package/dist/i18n.mjs.br +0 -0
  79. package/dist/i18n.mjs.gz +0 -0
  80. package/dist/index.d.ts +71 -7
  81. package/dist/index.js +49 -49
  82. package/dist/index.js.br +0 -0
  83. package/dist/index.js.gz +0 -0
  84. package/dist/index.mjs +6 -6
  85. package/dist/index.mjs.br +0 -0
  86. package/dist/index.mjs.gz +0 -0
  87. package/dist/internals.d.ts +173 -43
  88. package/dist/internals.js +105 -105
  89. package/dist/internals.js.br +0 -0
  90. package/dist/internals.js.gz +0 -0
  91. package/dist/internals.mjs +4 -4
  92. package/dist/internals.mjs.br +0 -0
  93. package/dist/internals.mjs.gz +0 -0
  94. package/dist/pptx-viewer.css +1 -1
  95. package/dist/pptx-viewer.css.br +0 -0
  96. package/dist/pptx-viewer.css.gz +0 -0
  97. package/dist/viewer/index.d.ts +49 -7
  98. package/dist/viewer/index.js +27 -27
  99. package/dist/viewer/index.js.br +0 -0
  100. package/dist/viewer/index.js.gz +0 -0
  101. package/dist/viewer/index.mjs +6 -6
  102. package/dist/viewer/index.mjs.br +0 -0
  103. package/dist/viewer/index.mjs.gz +0 -0
  104. package/package.json +1 -1
  105. package/dist/AiChatPanel-7UQA25FA.js.br +0 -0
  106. package/dist/AiChatPanel-7UQA25FA.js.gz +0 -0
  107. package/dist/AiChatPanel-UCEK3ZTD.mjs.br +0 -0
  108. package/dist/AiChatPanel-UCEK3ZTD.mjs.gz +0 -0
  109. package/dist/Model3DScene-AI2JTBQM.mjs.br +0 -0
  110. package/dist/Model3DScene-AI2JTBQM.mjs.gz +0 -0
  111. package/dist/Model3DScene-X3DS3ELB.js.gz +0 -0
  112. package/dist/chunk-3UWJWJCR.mjs.br +0 -0
  113. package/dist/chunk-3UWJWJCR.mjs.gz +0 -0
  114. package/dist/chunk-42XEZVUQ.js.br +0 -0
  115. package/dist/chunk-42XEZVUQ.js.gz +0 -0
  116. package/dist/chunk-E7O4HTS5.js.br +0 -0
  117. package/dist/chunk-E7O4HTS5.js.gz +0 -0
  118. package/dist/chunk-KAO5USPE.js.br +0 -0
  119. package/dist/chunk-KAO5USPE.js.gz +0 -0
  120. package/dist/chunk-OBQ453H6.mjs.br +0 -0
  121. package/dist/chunk-OBQ453H6.mjs.gz +0 -0
  122. package/dist/chunk-PLDG3CXW.mjs.br +0 -0
  123. package/dist/chunk-PLDG3CXW.mjs.gz +0 -0
  124. package/dist/chunk-RXYLPESV.mjs.br +0 -0
  125. package/dist/chunk-RXYLPESV.mjs.gz +0 -0
  126. package/dist/chunk-SKTZSG7Q.mjs.br +0 -0
  127. package/dist/chunk-SKTZSG7Q.mjs.gz +0 -0
  128. package/dist/chunk-UTI4CLYJ.js.br +0 -0
  129. package/dist/chunk-UTI4CLYJ.js.gz +0 -0
  130. package/dist/chunk-W5KLLGVH.js.br +0 -0
  131. package/dist/chunk-W5KLLGVH.js.gz +0 -0
  132. package/dist/chunk-Y7LI2JIR.js.br +0 -0
  133. package/dist/chunk-Y7LI2JIR.js.gz +0 -0
  134. package/dist/chunk-YQJOCGOK.mjs.br +0 -0
  135. package/dist/chunk-YQJOCGOK.mjs.gz +0 -0
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunkUTI4CLYJ_js = require('./chunk-UTI4CLYJ.js');
4
- var chunkW5KLLGVH_js = require('./chunk-W5KLLGVH.js');
3
+ var chunk7WWINBGF_js = require('./chunk-7WWINBGF.js');
4
+ var chunkI4D6JQOI_js = require('./chunk-I4D6JQOI.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 chunkUTI4CLYJ_js.getAnimationInitialStyle(preset, nativeAnimation);
18
+ return chunk7WWINBGF_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 chunkUTI4CLYJ_js.cloneHistorySnapshot(snapshot);
26
+ return chunk7WWINBGF_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 = chunkUTI4CLYJ_js.VIEWER_SHORTCUT_REFERENCE;
64
+ var SHORTCUT_REFERENCE_ITEMS = chunk7WWINBGF_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 = chunkUTI4CLYJ_js.SHAPE_PRESET_DEFS.map(
92
+ var SHAPE_PRESETS = chunk7WWINBGF_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 = chunkUTI4CLYJ_js.STROKE_DASH_OPTIONS;
117
+ var STROKE_DASH_OPTIONS2 = chunk7WWINBGF_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 (!chunkUTI4CLYJ_js.hasShapeProperties(element)) {
226
+ if (!chunk7WWINBGF_js.hasShapeProperties(element)) {
227
227
  return false;
228
228
  }
229
229
  const st = getShapeType(element.shapeType);
@@ -232,18 +232,18 @@ function isConnectorOrLineElement(element) {
232
232
 
233
233
  // src/viewer/utils/image-style.ts
234
234
  function getImageMaskStyle(element) {
235
- if (!chunkUTI4CLYJ_js.hasShapeProperties(element)) {
235
+ if (!chunk7WWINBGF_js.hasShapeProperties(element)) {
236
236
  return void 0;
237
237
  }
238
- const geometry = chunkUTI4CLYJ_js.resolveShapeGeometry(element);
238
+ const geometry = chunk7WWINBGF_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 = chunkUTI4CLYJ_js.getImageFitStyle(element);
246
- const counterTransform = chunkUTI4CLYJ_js.getImageFillCounterTransform(element, Boolean(fit.transform));
245
+ const fit = chunk7WWINBGF_js.getImageFitStyle(element);
246
+ const counterTransform = chunk7WWINBGF_js.getImageFillCounterTransform(element, Boolean(fit.transform));
247
247
  return {
248
248
  // A translated/scaled crop, or a rotWithShape=false counter-transform,
249
249
  // must be masked by the stationary wrapper, not by the moving/counter-
@@ -262,7 +262,7 @@ function getImageSurfaceMaskStyle(element) {
262
262
  };
263
263
  }
264
264
  function getImageSurfaceStyle(element) {
265
- const fill = chunkUTI4CLYJ_js.hasShapeProperties(element) ? chunkUTI4CLYJ_js.getComputedFillStyle(element) : void 0;
265
+ const fill = chunk7WWINBGF_js.hasShapeProperties(element) ? chunk7WWINBGF_js.getComputedFillStyle(element) : void 0;
266
266
  return {
267
267
  position: "absolute",
268
268
  inset: 0,
@@ -275,13 +275,13 @@ function getImageSurfaceStyle(element) {
275
275
  };
276
276
  }
277
277
  function getCropShapeClipPath2(element) {
278
- if (!chunkUTI4CLYJ_js.isImageLikeElement(element)) {
278
+ if (!chunk7WWINBGF_js.isImageLikeElement(element)) {
279
279
  return void 0;
280
280
  }
281
- return chunkUTI4CLYJ_js.getCropShapeClipPath(element.cropShape, element.width, element.height);
281
+ return chunk7WWINBGF_js.getCropShapeClipPath(element.cropShape, element.width, element.height);
282
282
  }
283
283
  function getImageTilingStyle2(element, nativeSize) {
284
- return chunkUTI4CLYJ_js.getImageTilingStyle(element, nativeSize);
284
+ return chunk7WWINBGF_js.getImageTilingStyle(element, nativeSize);
285
285
  }
286
286
 
287
287
  // src/viewer/utils/geometry-image.ts
@@ -413,7 +413,7 @@ function VideoWithMetadata({
413
413
  {
414
414
  ref: mediaRef,
415
415
  className: "w-full h-full pointer-events-auto",
416
- style: isFullScreen ? { objectFit: "cover" } : chunkUTI4CLYJ_js.getImageFitStyle(element),
416
+ style: isFullScreen ? { objectFit: "cover" } : chunk7WWINBGF_js.getImageFitStyle(element),
417
417
  controls: showTransport,
418
418
  preload: "metadata",
419
419
  playsInline: true,
@@ -470,7 +470,7 @@ function PresentationMediaController({
470
470
  const [isMediaPlaying, setIsMediaPlaying] = React7.useState(false);
471
471
  const trimStartSec = element.trimStartMs !== void 0 ? element.trimStartMs / 1e3 : 0;
472
472
  const hideWhenNotPlaying = isPresentationMode && element.hideWhenNotPlaying === true;
473
- const { volume: playbackVolume, playbackRate } = chunkUTI4CLYJ_js.mediaPlaybackAttributes({
473
+ const { volume: playbackVolume, playbackRate } = chunk7WWINBGF_js.mediaPlaybackAttributes({
474
474
  loop: element.loop,
475
475
  volume: element.volume,
476
476
  playbackSpeed: element.playbackSpeed
@@ -518,7 +518,7 @@ function PresentationMediaController({
518
518
  if (!el || !isPresentationMode) {
519
519
  return;
520
520
  }
521
- return chunkUTI4CLYJ_js.scheduleMediaTrimAndFade(el, {
521
+ return chunk7WWINBGF_js.scheduleMediaTrimAndFade(el, {
522
522
  trimStartMs: element.trimStartMs,
523
523
  trimEndMs: element.trimEndMs,
524
524
  fadeInDuration: element.fadeInDuration,
@@ -539,7 +539,7 @@ function PresentationMediaController({
539
539
  }
540
540
  if (element.playAcrossSlides && element.mediaType === "audio") {
541
541
  const dataUrl = element.mediaData ?? resolvedDataUrl;
542
- if (chunkUTI4CLYJ_js.registerCrossSlideAudio(element, dataUrl)) {
542
+ if (chunk7WWINBGF_js.registerCrossSlideAudio(element, dataUrl)) {
543
543
  return;
544
544
  }
545
545
  }
@@ -571,7 +571,7 @@ function PresentationMediaController({
571
571
  }, []);
572
572
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full h-full", style: wrapperStyle, children: [
573
573
  children({ mediaRef, onPlay: noopOnPlay, isMediaPlaying }),
574
- chunkUTI4CLYJ_js.shouldShowMediaFullscreenStopButton({
574
+ chunk7WWINBGF_js.shouldShowMediaFullscreenStopButton({
575
575
  fullScreen: isFullScreen,
576
576
  presenting: isPresentationMode,
577
577
  playing: isMediaPlaying
@@ -588,7 +588,7 @@ function PresentationMediaController({
588
588
  ] });
589
589
  }
590
590
  function label(key) {
591
- return key === void 0 ? void 0 : chunkW5KLLGVH_js.translationsEn[key];
591
+ return key === void 0 ? void 0 : chunkI4D6JQOI_js.translationsEn[key];
592
592
  }
593
593
  function FallbackIcon({
594
594
  paths,
@@ -624,17 +624,17 @@ function Badge({
624
624
  "div",
625
625
  {
626
626
  className: `absolute inset-0 flex flex-col items-center justify-center ${isMissing ? "gap-1" : ""}`,
627
- ...{ [chunkUTI4CLYJ_js.MEDIA_CHROME_ATTRIBUTE]: visual.badge },
627
+ ...{ [chunk7WWINBGF_js.MEDIA_CHROME_ATTRIBUTE]: visual.badge },
628
628
  children: [
629
629
  /* @__PURE__ */ jsxRuntime.jsx(
630
630
  FallbackIcon,
631
631
  {
632
- paths: chunkUTI4CLYJ_js.mediaFallbackIcon(visual, element.mediaType),
632
+ paths: chunk7WWINBGF_js.mediaFallbackIcon(visual, element.mediaType),
633
633
  size: isMissing ? 32 : 48,
634
634
  className: isMissing ? "text-white/60" : "text-white/80 drop-shadow-md"
635
635
  }
636
636
  ),
637
- isMissing && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-white/60", children: label(chunkUTI4CLYJ_js.mediaFallbackLabelKey(visual, element.mediaType)) })
637
+ isMissing && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-white/60", children: label(chunk7WWINBGF_js.mediaFallbackLabelKey(visual, element.mediaType)) })
638
638
  ]
639
639
  }
640
640
  );
@@ -651,17 +651,17 @@ function Placeholder({
651
651
  "div",
652
652
  {
653
653
  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"}`,
654
- ...{ [chunkUTI4CLYJ_js.MEDIA_CHROME_ATTRIBUTE]: visual.placeholder },
654
+ ...{ [chunk7WWINBGF_js.MEDIA_CHROME_ATTRIBUTE]: visual.placeholder },
655
655
  children: [
656
656
  /* @__PURE__ */ jsxRuntime.jsx(
657
657
  FallbackIcon,
658
658
  {
659
- paths: chunkUTI4CLYJ_js.mediaFallbackIcon(visual, element.mediaType),
659
+ paths: chunk7WWINBGF_js.mediaFallbackIcon(visual, element.mediaType),
660
660
  size: isMissing ? 36 : element.mediaType === "audio" ? 24 : 32,
661
661
  className: isMissing ? "text-white/50" : "text-white/70"
662
662
  }
663
663
  ),
664
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: `text-[10px] ${isMissing ? "text-white/50" : "text-white/70"}`, children: label(chunkUTI4CLYJ_js.mediaFallbackLabelKey(visual, element.mediaType)) })
664
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: `text-[10px] ${isMissing ? "text-white/50" : "text-white/70"}`, children: label(chunk7WWINBGF_js.mediaFallbackLabelKey(visual, element.mediaType)) })
665
665
  ]
666
666
  }
667
667
  );
@@ -671,7 +671,7 @@ function renderMediaFallback({
671
671
  posterUrl,
672
672
  surface
673
673
  }) {
674
- const visual = chunkUTI4CLYJ_js.mediaFallbackVisual(surface, {
674
+ const visual = chunk7WWINBGF_js.mediaFallbackVisual(surface, {
675
675
  hasPoster: Boolean(posterUrl),
676
676
  missing: element.mediaMissing === true
677
677
  });
@@ -681,9 +681,9 @@ function renderMediaFallback({
681
681
  "img",
682
682
  {
683
683
  src: posterUrl,
684
- alt: visual.dimPoster ? chunkW5KLLGVH_js.translationsEn["pptx.media.posterAlt"] : chunkW5KLLGVH_js.translationsEn["pptx.media.videoPosterAlt"],
684
+ alt: visual.dimPoster ? chunkI4D6JQOI_js.translationsEn["pptx.media.posterAlt"] : chunkI4D6JQOI_js.translationsEn["pptx.media.videoPosterAlt"],
685
685
  className: `w-full h-full${visual.dimPoster ? " opacity-50" : ""}`,
686
- style: chunkUTI4CLYJ_js.getImageFitStyle(element)
686
+ style: chunk7WWINBGF_js.getImageFitStyle(element)
687
687
  }
688
688
  ),
689
689
  /* @__PURE__ */ jsxRuntime.jsx(Badge, { visual, element })
@@ -693,7 +693,7 @@ function renderMediaFallback({
693
693
  }
694
694
  function renderMediaElement(element, mediaDataUrls, options) {
695
695
  if (element.type !== "media") {
696
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkW5KLLGVH_js.translationsEn["pptx.media.title"] });
696
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkI4D6JQOI_js.translationsEn["pptx.media.title"] });
697
697
  }
698
698
  const mediaType = element.mediaType;
699
699
  const mediaPath = element.mediaPath;
@@ -701,7 +701,7 @@ function renderMediaElement(element, mediaDataUrls, options) {
701
701
  const dataUrl = element.mediaData ?? (mediaPath ? mediaDataUrls.get(mediaPath) : void 0);
702
702
  const trimFragment = buildTrimFragment(element);
703
703
  const posterUrl = element.posterFrameData ?? void 0;
704
- const shouldLoop = chunkUTI4CLYJ_js.mediaPlaybackAttributes(element).loop;
704
+ const shouldLoop = chunk7WWINBGF_js.mediaPlaybackAttributes(element).loop;
705
705
  const shouldAutoPlay = options?.autoPlay === true || element.autoPlay === true;
706
706
  const isFullScreen = options?.fullScreen === true;
707
707
  const isPresentationMode = options?.isPresentationMode === true;
@@ -714,6 +714,20 @@ function renderMediaElement(element, mediaDataUrls, options) {
714
714
  return renderMediaFallback({ element, posterUrl, surface });
715
715
  }
716
716
  if (mediaType === "video") {
717
+ const onlineVideo = chunk7WWINBGF_js.getOnlineVideoEmbed(element);
718
+ if (onlineVideo) {
719
+ return /* @__PURE__ */ jsxRuntime.jsx(
720
+ "iframe",
721
+ {
722
+ src: onlineVideo.embedUrl,
723
+ title: chunkI4D6JQOI_js.translationsEn["pptx.media.onlineVideoTitle"],
724
+ className: "w-full h-full border-0 pointer-events-auto",
725
+ allow: chunk7WWINBGF_js.ONLINE_VIDEO_IFRAME_ALLOW,
726
+ allowFullScreen: true,
727
+ sandbox: chunk7WWINBGF_js.ONLINE_VIDEO_IFRAME_SANDBOX
728
+ }
729
+ );
730
+ }
717
731
  if (dataUrl) {
718
732
  return /* @__PURE__ */ jsxRuntime.jsx(
719
733
  PresentationMediaController,
@@ -779,32 +793,32 @@ function renderMediaElement(element, mediaDataUrls, options) {
779
793
  if (surface.presenting || surface.preview) {
780
794
  return null;
781
795
  }
782
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkW5KLLGVH_js.translationsEn["pptx.media.title"] });
796
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkI4D6JQOI_js.translationsEn["pptx.media.title"] });
783
797
  }
784
798
 
785
799
  // src/viewer/utils/text-utils.tsx
786
800
  function getTextStyleForElement(element, fallbackColor) {
787
- return chunkUTI4CLYJ_js.buildTextBlockStyle(element, { fallbackColor });
801
+ return chunk7WWINBGF_js.buildTextBlockStyle(element, { fallbackColor });
788
802
  }
789
803
 
790
804
  // src/viewer/utils/text-layout.tsx
791
805
  function getTextLayoutStyle(element) {
792
- if (!chunkUTI4CLYJ_js.hasTextProperties(element)) {
806
+ if (!chunk7WWINBGF_js.hasTextProperties(element)) {
793
807
  return {};
794
808
  }
795
- const writingMode = chunkUTI4CLYJ_js.toCssWritingMode(element.textStyle?.textDirection);
796
- const textOrientation = chunkUTI4CLYJ_js.toCssTextOrientation(element.textStyle?.textDirection);
797
- const verticalDirection = chunkUTI4CLYJ_js.toCssVerticalDirection(element.textStyle?.textDirection);
809
+ const writingMode = chunk7WWINBGF_js.toCssWritingMode(element.textStyle?.textDirection);
810
+ const textOrientation = chunk7WWINBGF_js.toCssTextOrientation(element.textStyle?.textDirection);
811
+ const verticalDirection = chunk7WWINBGF_js.toCssVerticalDirection(element.textStyle?.textDirection);
798
812
  const textWrapNone = element.textStyle?.textWrap === "none";
799
813
  const shapeAutoFitTextBox = element.textStyle?.autoFitMode === "shrink" && (element.type === "text" || element.locks?.txBox === true);
800
- const hasParagraphIndents = chunkUTI4CLYJ_js.hasTextProperties(element) && element.paragraphIndents && element.paragraphIndents.length > 0;
814
+ const hasParagraphIndents = chunk7WWINBGF_js.hasTextProperties(element) && element.paragraphIndents && element.paragraphIndents.length > 0;
801
815
  const paragraphMarginLeft = element.textStyle?.paragraphMarginLeft;
802
816
  const paragraphIndent = element.textStyle?.paragraphIndent;
803
817
  const marginLeft = !hasParagraphIndents && typeof paragraphMarginLeft === "number" && paragraphMarginLeft !== 0 ? paragraphMarginLeft : void 0;
804
818
  const textIndent = !hasParagraphIndents && typeof paragraphIndent === "number" && paragraphIndent !== 0 ? paragraphIndent : void 0;
805
819
  const bodyTop = element.textStyle?.bodyInsetTop ?? DEFAULT_BODY_INSET_TB_PX;
806
820
  const bodyBottom = element.textStyle?.bodyInsetBottom ?? DEFAULT_BODY_INSET_TB_PX;
807
- const bodyLayoutStyle = chunkUTI4CLYJ_js.buildTextBodyLayoutStyle(element);
821
+ const bodyLayoutStyle = chunk7WWINBGF_js.buildTextBodyLayoutStyle(element);
808
822
  return {
809
823
  ...bodyLayoutStyle,
810
824
  // Body inset only. Paragraph spacing (spcBef/spcAft) is applied
@@ -834,7 +848,7 @@ function getTextLayoutStyle(element) {
834
848
 
835
849
  // src/viewer/utils/text-effects.tsx
836
850
  function buildTextBody3DSceneStyle2(textStyle, elementSize) {
837
- return chunkUTI4CLYJ_js.buildTextBody3DSceneStyle(textStyle, elementSize);
851
+ return chunk7WWINBGF_js.buildTextBody3DSceneStyle(textStyle, elementSize);
838
852
  }
839
853
 
840
854
  // src/viewer/utils/text-warp-css.tsx
@@ -1019,13 +1033,13 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
1019
1033
  if (!subElementAnimStates || subElementAnimStates.size === 0) {
1020
1034
  return renderedSegments;
1021
1035
  }
1022
- const paraKey = `${elementId}${chunkUTI4CLYJ_js.TEXT_BUILD_ID_SEP}p${paraIndex}`;
1036
+ const paraKey = `${elementId}${chunk7WWINBGF_js.TEXT_BUILD_ID_SEP}p${paraIndex}`;
1023
1037
  const paraState = subElementAnimStates.get(paraKey);
1024
1038
  if (paraState) {
1025
1039
  const style = buildAnimStyle(paraState);
1026
1040
  return /* @__PURE__ */ jsxRuntime.jsx("span", { "data-anim-id": paraKey, style: { display: "inline", ...style }, children: renderedSegments }, paraKey);
1027
1041
  }
1028
- const spec = chunkUTI4CLYJ_js.buildTextBuildSpec(
1042
+ const spec = chunk7WWINBGF_js.buildTextBuildSpec(
1029
1043
  elementId,
1030
1044
  paraIndex,
1031
1045
  paraRuns.map((run) => ({ text: run.text, style: run })),
@@ -1043,7 +1057,7 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
1043
1057
  "span",
1044
1058
  {
1045
1059
  "data-anim-id": span.animId,
1046
- style: chunkUTI4CLYJ_js.textBuildSpanStyle(span),
1060
+ style: chunk7WWINBGF_js.textBuildSpanStyle(span),
1047
1061
  children: content
1048
1062
  },
1049
1063
  span.animId
@@ -1054,13 +1068,13 @@ function renderUnderlineWords(text, isUnderlineWords, wordDecoration, metric, ke
1054
1068
  if (!isUnderlineWords || !text) {
1055
1069
  return inner(text, keyPrefix, metric);
1056
1070
  }
1057
- const pieces = chunkUTI4CLYJ_js.splitWordsForUnderline(text);
1071
+ const pieces = chunk7WWINBGF_js.splitWordsForUnderline(text);
1058
1072
  if (pieces.length === 0) {
1059
1073
  return inner(text, keyPrefix, metric);
1060
1074
  }
1061
1075
  const gapMetric = metric ? {
1062
1076
  ...metric,
1063
- nestedStyle: metric.nestedStyle ? chunkUTI4CLYJ_js.stripUnderlineDecoration(metric.nestedStyle) : void 0
1077
+ nestedStyle: metric.nestedStyle ? chunk7WWINBGF_js.stripUnderlineDecoration(metric.nestedStyle) : void 0
1064
1078
  } : void 0;
1065
1079
  return pieces.map((piece, i) => {
1066
1080
  const key = `${keyPrefix}-u${i}`;
@@ -1093,7 +1107,7 @@ function makeSegmentPieceRenderer(needsScriptFonts, scriptFonts, baseFontFamily,
1093
1107
  );
1094
1108
  }
1095
1109
  function renderTabbedLine(line, ctx, keyPrefix, renderPiece, nestedStyle, underlineWords = false) {
1096
- const [lineLayout] = chunkUTI4CLYJ_js.buildRunTabLines(
1110
+ const [lineLayout] = chunk7WWINBGF_js.buildRunTabLines(
1097
1111
  line,
1098
1112
  ctx,
1099
1113
  nestedStyle,
@@ -1112,7 +1126,7 @@ function renderScriptAwareText(text, needsScriptFonts, scriptFonts, baseFontFami
1112
1126
  if (!needsScriptFonts || !text) {
1113
1127
  return text;
1114
1128
  }
1115
- const pieces = chunkUTI4CLYJ_js.splitRunByScriptFont(
1129
+ const pieces = chunk7WWINBGF_js.splitRunByScriptFont(
1116
1130
  text,
1117
1131
  scriptFonts,
1118
1132
  baseFontFamily,
@@ -1129,7 +1143,7 @@ function renderMetricPieces(text, metric, keyPrefix, inner) {
1129
1143
  if (!metric || !text) {
1130
1144
  return inner(text, keyPrefix);
1131
1145
  }
1132
- const pieces = chunkUTI4CLYJ_js.splitRunForMetrics(text, metric.font);
1146
+ const pieces = chunk7WWINBGF_js.splitRunForMetrics(text, metric.font);
1133
1147
  if (pieces.length <= 1) {
1134
1148
  return inner(text, keyPrefix);
1135
1149
  }
@@ -1138,7 +1152,7 @@ function renderMetricPieces(text, metric, keyPrefix, inner) {
1138
1152
  {
1139
1153
  style: {
1140
1154
  ...metric.nestedStyle,
1141
- letterSpacing: chunkUTI4CLYJ_js.pieceLetterSpacing(metric.authoredPx, piece.tracking)
1155
+ letterSpacing: chunk7WWINBGF_js.pieceLetterSpacing(metric.authoredPx, piece.tracking)
1142
1156
  },
1143
1157
  children: inner(piece.text, `${keyPrefix}-w${i}`)
1144
1158
  },
@@ -1214,8 +1228,8 @@ function renderSegmentContent(elementId, segmentIndex, textValue, lines, needsSc
1214
1228
  });
1215
1229
  }
1216
1230
  function renderEquationSegment(elementId, segmentIndex, equationXml, equationNumber) {
1217
- const mathml = chunkUTI4CLYJ_js.convertOmmlToMathMl(equationXml);
1218
- const safeMathml = mathml ? chunkUTI4CLYJ_js.sanitizeMathMl(mathml) : "";
1231
+ const mathml = chunk7WWINBGF_js.convertOmmlToMathMl(equationXml);
1232
+ const safeMathml = mathml ? chunk7WWINBGF_js.sanitizeMathMl(mathml) : "";
1219
1233
  const equationContent = safeMathml ? /* @__PURE__ */ jsxRuntime.jsx(
1220
1234
  "span",
1221
1235
  {
@@ -1225,7 +1239,7 @@ function renderEquationSegment(elementId, segmentIndex, equationXml, equationNum
1225
1239
  },
1226
1240
  dangerouslySetInnerHTML: { __html: safeMathml }
1227
1241
  }
1228
- ) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-block px-1 py-0.5 rounded text-xs bg-gray-200/20 text-gray-400 italic", children: chunkW5KLLGVH_js.translationsEn["pptx.textSegment.equationFallback"] });
1242
+ ) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-block px-1 py-0.5 rounded text-xs bg-gray-200/20 text-gray-400 italic", children: chunkI4D6JQOI_js.translationsEn["pptx.textSegment.equationFallback"] });
1229
1243
  if (equationNumber) {
1230
1244
  return /* @__PURE__ */ jsxRuntime.jsxs(
1231
1245
  "span",
@@ -1348,7 +1362,7 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
1348
1362
  const segmentStyle = segment?.style ?? {};
1349
1363
  const textValue = run.text;
1350
1364
  const lines = textValue.split("\n");
1351
- const resolvedSegmentColor = chunkUTI4CLYJ_js.normalizeHexColor(
1365
+ const resolvedSegmentColor = chunk7WWINBGF_js.normalizeHexColor(
1352
1366
  segmentStyle.color || element.textStyle?.color,
1353
1367
  run.hyperlink ? HYPERLINK_COLOR : fallbackColor
1354
1368
  );
@@ -1356,19 +1370,19 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
1356
1370
  const baselineFraction = rawBaseline === 0 ? 0 : Math.abs(rawBaseline) >= 1e3 ? rawBaseline / 1e5 : rawBaseline / 100;
1357
1371
  const baselineFontScale = baselineFraction !== 0 ? BASELINE_FONT_SCALE : 1;
1358
1372
  const rawFontSize = segmentStyle.fontSize || element.textStyle?.fontSize || DEFAULT_TEXT_FONT_SIZE;
1359
- const baseFontSize = rawFontSize * chunkUTI4CLYJ_js.resolveAutoFitFontScale(element.textStyle);
1373
+ const baseFontSize = rawFontSize * chunk7WWINBGF_js.resolveAutoFitFontScale(element.textStyle);
1360
1374
  const baselineShift = baselineFraction !== 0 ? `${baselineFraction * baseFontSize}px` : void 0;
1361
- const fontKerning = chunkUTI4CLYJ_js.resolveFontKerning(segmentStyle.kerning, baseFontSize);
1375
+ const fontKerning = chunk7WWINBGF_js.resolveFontKerning(segmentStyle.kerning, baseFontSize);
1362
1376
  const scriptFallbackWins = Boolean(
1363
1377
  segmentStyle.scriptFallbackFont && segmentStyle.fontFamilyIsCascadeDefault
1364
1378
  );
1365
1379
  const rawFontFamily = segmentStyle.fontFamily || element.textStyle?.fontFamily;
1366
- const baseFontFamily = scriptFallbackWins ? chunkUTI4CLYJ_js.getSubstituteFontFamily(segmentStyle.scriptFallbackFont) : rawFontFamily ? chunkUTI4CLYJ_js.getSubstituteFontFamily(
1380
+ const baseFontFamily = scriptFallbackWins ? chunk7WWINBGF_js.getSubstituteFontFamily(segmentStyle.scriptFallbackFont) : rawFontFamily ? chunk7WWINBGF_js.getSubstituteFontFamily(
1367
1381
  rawFontFamily,
1368
- chunkUTI4CLYJ_js.parsePanoseString(segmentStyle.latinFontPanose ?? element.textStyle?.latinFontPanose)
1382
+ chunk7WWINBGF_js.parsePanoseString(segmentStyle.latinFontPanose ?? element.textStyle?.latinFontPanose)
1369
1383
  ) : DEFAULT_FONT_FAMILY2;
1370
- const scriptFonts = chunkUTI4CLYJ_js.resolveScriptFontSet(segmentStyle, element.textStyle, baseFontFamily);
1371
- const needsScriptFonts = chunkUTI4CLYJ_js.hasDistinctScriptFonts(scriptFonts);
1384
+ const scriptFonts = chunk7WWINBGF_js.resolveScriptFontSet(segmentStyle, element.textStyle, baseFontFamily);
1385
+ const needsScriptFonts = chunk7WWINBGF_js.hasDistinctScriptFonts(scriptFonts);
1372
1386
  const authoredLetterSpacing = typeof segmentStyle.characterSpacing === "number" && segmentStyle.characterSpacing !== 0 ? segmentStyle.characterSpacing / 100 * (96 / 72) : 0;
1373
1387
  const metricFont = {
1374
1388
  fontFamily: baseFontFamily,
@@ -1376,7 +1390,7 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
1376
1390
  bold: Boolean(segmentStyle.bold),
1377
1391
  italic: Boolean(segmentStyle.italic)
1378
1392
  };
1379
- const nestedStyle = chunkUTI4CLYJ_js.nestedTextDecorationStyle(run.style);
1393
+ const nestedStyle = chunk7WWINBGF_js.nestedTextDecorationStyle(run.style);
1380
1394
  const metricContext = { font: metricFont, authoredPx: authoredLetterSpacing, nestedStyle };
1381
1395
  const spanStyle = { ...run.style };
1382
1396
  spanStyle.color = resolvedSegmentColor;
@@ -1384,11 +1398,11 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
1384
1398
  spanStyle.fontFamily = baseFontFamily;
1385
1399
  spanStyle.verticalAlign = baselineShift;
1386
1400
  spanStyle.fontKerning = fontKerning;
1387
- spanStyle.letterSpacing = chunkUTI4CLYJ_js.pieceLetterSpacing(
1401
+ spanStyle.letterSpacing = chunk7WWINBGF_js.pieceLetterSpacing(
1388
1402
  authoredLetterSpacing,
1389
- chunkUTI4CLYJ_js.resolveMetricTrackingPx(textValue, metricFont)
1403
+ chunk7WWINBGF_js.resolveMetricTrackingPx(textValue, metricFont)
1390
1404
  );
1391
- const hollow = chunkUTI4CLYJ_js.hollowTextFillStyle(segmentStyle, {
1405
+ const hollow = chunk7WWINBGF_js.hollowTextFillStyle(segmentStyle, {
1392
1406
  color: resolvedSegmentColor,
1393
1407
  textStroke: typeof spanStyle.WebkitTextStroke === "string" ? spanStyle.WebkitTextStroke : void 0
1394
1408
  });
@@ -1403,7 +1417,7 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
1403
1417
  const isUnderlineWords = Boolean(segmentStyle.underline) && segmentStyle.underlineStyle === "words";
1404
1418
  const wordDecoration = isUnderlineWords ? nestedStyle ?? run.underlineWordPieces?.find((piece) => piece.style)?.style : void 0;
1405
1419
  if (isUnderlineWords) {
1406
- const stripped = chunkUTI4CLYJ_js.stripUnderlineDecoration(spanStyle);
1420
+ const stripped = chunk7WWINBGF_js.stripUnderlineDecoration(spanStyle);
1407
1421
  spanStyle.textDecoration = stripped.textDecoration;
1408
1422
  delete spanStyle.textDecorationStyle;
1409
1423
  delete spanStyle.textDecorationThickness;
@@ -1419,7 +1433,7 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
1419
1433
  scriptFonts,
1420
1434
  baseFontFamily,
1421
1435
  findHighlights,
1422
- chunkUTI4CLYJ_js.buildTabContext(
1436
+ chunk7WWINBGF_js.buildTabContext(
1423
1437
  element.textStyle?.tabStops,
1424
1438
  element.textStyle?.defaultTabSize,
1425
1439
  baseFontSize,
@@ -1451,14 +1465,14 @@ function renderSeededListRun(seed, runs, segments, context) {
1451
1465
  const segment = sourceRun ? segments[seed.segmentIndex] : { text: seed.text, style: seed.style };
1452
1466
  const resolvedSegment = {
1453
1467
  ...segment,
1454
- style: chunkUTI4CLYJ_js.withInlineListDecorationDefaults(segment.style, context.element.textStyle)
1468
+ style: chunk7WWINBGF_js.withInlineListDecorationDefaults(segment.style, context.element.textStyle)
1455
1469
  };
1456
- const decorationCss = chunkUTI4CLYJ_js.segmentStyleToCss(
1470
+ const decorationCss = chunk7WWINBGF_js.segmentStyleToCss(
1457
1471
  resolvedSegment,
1458
- chunkUTI4CLYJ_js.resolveAutoFitFontScale(context.element.textStyle)
1472
+ chunk7WWINBGF_js.resolveAutoFitFontScale(context.element.textStyle)
1459
1473
  );
1460
- chunkUTI4CLYJ_js.applyUnderlineVariant(decorationCss, resolvedSegment);
1461
- const run = sourceRun ? { ...sourceRun, style: { ...sourceRun.style, ...chunkUTI4CLYJ_js.nestedTextDecorationStyle(decorationCss) } } : {
1474
+ chunk7WWINBGF_js.applyUnderlineVariant(decorationCss, resolvedSegment);
1475
+ const run = sourceRun ? { ...sourceRun, style: { ...sourceRun.style, ...chunk7WWINBGF_js.nestedTextDecorationStyle(decorationCss) } } : {
1462
1476
  text: seed.text,
1463
1477
  style: decorationCss,
1464
1478
  segmentIndex: seed.segmentIndex
@@ -1473,7 +1487,7 @@ function renderSeededListRun(seed, runs, segments, context) {
1473
1487
  });
1474
1488
  }
1475
1489
  function renderTextSegments(element, fallbackColor, emptyFallback, findHighlights, onHyperlinkClick, fieldContext, subElementAnimStates, segmentOverrides, requireCtrlClick, placeholderPrompt, inlineListSeed) {
1476
- if (!chunkUTI4CLYJ_js.hasTextProperties(element)) {
1490
+ if (!chunk7WWINBGF_js.hasTextProperties(element)) {
1477
1491
  return emptyFallback || null;
1478
1492
  }
1479
1493
  const segments = segmentOverrides ?? element.textSegments;
@@ -1483,7 +1497,7 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
1483
1497
  }
1484
1498
  return element.text || emptyFallback || "";
1485
1499
  }
1486
- const paragraphs = chunkUTI4CLYJ_js.buildParagraphs(
1500
+ const paragraphs = chunk7WWINBGF_js.buildParagraphs(
1487
1501
  element,
1488
1502
  fieldContext,
1489
1503
  segmentOverrides,
@@ -1629,13 +1643,13 @@ function renderBulletMarker(para, paraIndex, elementId) {
1629
1643
  );
1630
1644
  }
1631
1645
  function getDuotoneColors(element) {
1632
- if (!chunkUTI4CLYJ_js.isImageLikeElement(element)) {
1646
+ if (!chunk7WWINBGF_js.isImageLikeElement(element)) {
1633
1647
  return void 0;
1634
1648
  }
1635
1649
  return element.imageEffects?.duotone;
1636
1650
  }
1637
1651
  function buildLineShadowCss(element) {
1638
- if (!chunkUTI4CLYJ_js.hasShapeProperties(element)) {
1652
+ if (!chunk7WWINBGF_js.hasShapeProperties(element)) {
1639
1653
  return void 0;
1640
1654
  }
1641
1655
  const ss = element.shapeStyle;
@@ -1646,13 +1660,13 @@ function buildLineShadowCss(element) {
1646
1660
  const offsetY = typeof ss.lineShadowOffsetY === "number" ? ss.lineShadowOffsetY : 2;
1647
1661
  const blur = typeof ss.lineShadowBlur === "number" ? Math.max(0, ss.lineShadowBlur) : 4;
1648
1662
  const opacity = typeof ss.lineShadowOpacity === "number" ? Math.max(0, Math.min(1, ss.lineShadowOpacity)) : 0.35;
1649
- return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${chunkUTI4CLYJ_js.colorWithOpacity(
1650
- chunkUTI4CLYJ_js.normalizeHexColor(ss.lineShadowColor, "#000000"),
1663
+ return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${chunk7WWINBGF_js.colorWithOpacity(
1664
+ chunk7WWINBGF_js.normalizeHexColor(ss.lineShadowColor, "#000000"),
1651
1665
  opacity
1652
1666
  )}`;
1653
1667
  }
1654
1668
  function buildLineGlowFilter(element) {
1655
- if (!chunkUTI4CLYJ_js.hasShapeProperties(element)) {
1669
+ if (!chunk7WWINBGF_js.hasShapeProperties(element)) {
1656
1670
  return void 0;
1657
1671
  }
1658
1672
  const ss = element.shapeStyle;
@@ -1661,22 +1675,22 @@ function buildLineGlowFilter(element) {
1661
1675
  }
1662
1676
  const glowOpacity = typeof ss.lineGlowOpacity === "number" ? ss.lineGlowOpacity : 0.75;
1663
1677
  const glowRad = Math.round(Math.max(0, ss.lineGlowRadius));
1664
- const glowCol = chunkUTI4CLYJ_js.colorWithOpacity(chunkUTI4CLYJ_js.normalizeHexColor(ss.lineGlowColor, "#ffff00"), glowOpacity);
1678
+ const glowCol = chunk7WWINBGF_js.colorWithOpacity(chunk7WWINBGF_js.normalizeHexColor(ss.lineGlowColor, "#ffff00"), glowOpacity);
1665
1679
  return `drop-shadow(0 0 ${glowRad}px ${glowCol})`;
1666
1680
  }
1667
1681
  function getDagDuotoneFilterId(elementId) {
1668
1682
  return `dag-duotone-${elementId}`;
1669
1683
  }
1670
1684
  function hasDagDuotoneEffect(element) {
1671
- if (!chunkUTI4CLYJ_js.hasShapeProperties(element)) {
1685
+ if (!chunk7WWINBGF_js.hasShapeProperties(element)) {
1672
1686
  return false;
1673
1687
  }
1674
1688
  return Boolean(element.shapeStyle?.dagDuotone);
1675
1689
  }
1676
1690
  function renderDagDuotoneSvgFilter(elementId, color1, color2) {
1677
1691
  const filterId = getDagDuotoneFilterId(elementId);
1678
- const c1 = chunkUTI4CLYJ_js.hexToRgbUnit(color1);
1679
- const c2 = chunkUTI4CLYJ_js.hexToRgbUnit(color2);
1692
+ const c1 = chunk7WWINBGF_js.hexToRgbUnit(color1);
1693
+ const c2 = chunk7WWINBGF_js.hexToRgbUnit(color2);
1680
1694
  const grayscaleMatrix = [
1681
1695
  0.2126,
1682
1696
  0.7152,
@@ -1720,7 +1734,7 @@ function renderDagDuotoneSvgFilter(elementId, color1, color2) {
1720
1734
 
1721
1735
  // src/viewer/utils/shape-visual-3d.ts
1722
1736
  function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elementHeight) {
1723
- return chunkUTI4CLYJ_js.build3DExtrusionData(
1737
+ return chunk7WWINBGF_js.build3DExtrusionData(
1724
1738
  shape3d,
1725
1739
  scene3d,
1726
1740
  fillColor,
@@ -1729,7 +1743,7 @@ function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elemen
1729
1743
  );
1730
1744
  }
1731
1745
  function apply3dEffects2(base, scene3d, shape3d, fillColorFallback, elementSize, elementId) {
1732
- chunkUTI4CLYJ_js.apply3dEffects(
1746
+ chunk7WWINBGF_js.apply3dEffects(
1733
1747
  base,
1734
1748
  scene3d,
1735
1749
  shape3d,
@@ -1744,11 +1758,11 @@ function rendersCustomVectorPath(element) {
1744
1758
  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;
1745
1759
  }
1746
1760
  function rendersWedgeCalloutVector(element) {
1747
- return element.type === "shape" && chunkUTI4CLYJ_js.isWedgeCalloutPresetShape(element.shapeType);
1761
+ return element.type === "shape" && chunk7WWINBGF_js.isWedgeCalloutPresetShape(element.shapeType);
1748
1762
  }
1749
1763
  function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _strokeColor, animatesFill, animatesStroke, parentGroupFill) {
1750
1764
  if (element.type === "group") {
1751
- const fx2 = chunkUTI4CLYJ_js.getComputedEffectStyle(element);
1765
+ const fx2 = chunk7WWINBGF_js.getComputedEffectStyle(element);
1752
1766
  const groupStyle = {};
1753
1767
  if (fx2.filter) {
1754
1768
  groupStyle.filter = fx2.filter;
@@ -1758,13 +1772,13 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
1758
1772
  }
1759
1773
  return groupStyle;
1760
1774
  }
1761
- if (!chunkUTI4CLYJ_js.hasShapeProperties(element)) {
1775
+ if (!chunk7WWINBGF_js.hasShapeProperties(element)) {
1762
1776
  return {};
1763
1777
  }
1764
1778
  const ss = element.shapeStyle;
1765
- const fill = animatesFill ? void 0 : chunkUTI4CLYJ_js.getComputedFillStyle(element, parentGroupFill);
1766
- const fx = chunkUTI4CLYJ_js.getComputedEffectStyle(element);
1767
- const stroke = chunkUTI4CLYJ_js.getComputedStrokeStyle(element);
1779
+ const fill = animatesFill ? void 0 : chunk7WWINBGF_js.getComputedFillStyle(element, parentGroupFill);
1780
+ const fx = chunk7WWINBGF_js.getComputedEffectStyle(element);
1781
+ const stroke = chunk7WWINBGF_js.getComputedStrokeStyle(element);
1768
1782
  const base = {
1769
1783
  // A gradient fill REPLACES the solid fill, it does not sit on top of it;
1770
1784
  // the whole precedence lives in shared's `getComputedFillStyle`.
@@ -1803,7 +1817,7 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
1803
1817
  };
1804
1818
  Object.assign(
1805
1819
  base,
1806
- chunkUTI4CLYJ_js.getAnimationColorBaseStyle(element, {
1820
+ chunk7WWINBGF_js.getAnimationColorBaseStyle(element, {
1807
1821
  animatesFill,
1808
1822
  animatesStroke,
1809
1823
  parentGroupFill
@@ -1825,7 +1839,7 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
1825
1839
  },
1826
1840
  element.id
1827
1841
  );
1828
- if (rendersCustomVectorPath(element) || rendersWedgeCalloutVector(element) || chunkUTI4CLYJ_js.isStrokeOnlyPresetElement(element)) {
1842
+ if (rendersCustomVectorPath(element) || rendersWedgeCalloutVector(element) || chunk7WWINBGF_js.isStrokeOnlyPresetElement(element)) {
1829
1843
  base.backgroundColor = "transparent";
1830
1844
  base.backgroundImage = void 0;
1831
1845
  base.borderWidth = void 0;
@@ -1839,7 +1853,7 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
1839
1853
  if (rendersWedgeCalloutVector(element)) {
1840
1854
  return base;
1841
1855
  }
1842
- const geometry = chunkUTI4CLYJ_js.resolveShapeGeometry(element);
1856
+ const geometry = chunk7WWINBGF_js.resolveShapeGeometry(element);
1843
1857
  switch (geometry.kind) {
1844
1858
  case "bare":
1845
1859
  return { backgroundColor: "transparent", borderWidth: 0, borderStyle: "none" };
@@ -1863,7 +1877,7 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
1863
1877
  }
1864
1878
  }
1865
1879
  function getConnectorPathGeometry2(element) {
1866
- return chunkUTI4CLYJ_js.getConnectorPathGeometry(element);
1880
+ return chunk7WWINBGF_js.getConnectorPathGeometry(element);
1867
1881
  }
1868
1882
  var ARROW_SIZE_SCALE = {
1869
1883
  sm: 0.6,
@@ -1932,11 +1946,11 @@ function strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray) {
1932
1946
  strokePaint,
1933
1947
  strokeWidth,
1934
1948
  dashArray,
1935
- lineCap: chunkUTI4CLYJ_js.svgLineCap(shapeStyle?.lineCap),
1949
+ lineCap: chunk7WWINBGF_js.svgLineCap(shapeStyle?.lineCap),
1936
1950
  lineJoin,
1937
1951
  miterLimit,
1938
- offsets: chunkUTI4CLYJ_js.getCompoundLineOffsets(shapeStyle?.compoundLine, strokeWidth),
1939
- widths: chunkUTI4CLYJ_js.getCompoundLineWidths(shapeStyle?.compoundLine, strokeWidth)
1952
+ offsets: chunk7WWINBGF_js.getCompoundLineOffsets(shapeStyle?.compoundLine, strokeWidth),
1953
+ widths: chunk7WWINBGF_js.getCompoundLineWidths(shapeStyle?.compoundLine, strokeWidth)
1940
1954
  };
1941
1955
  }
1942
1956
  function strokeStrands(d, keyBase, ctx) {
@@ -1959,12 +1973,12 @@ function strokeStrands(d, keyBase, ctx) {
1959
1973
  }
1960
1974
  function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredPaths, shapeStyle, hasFill, fillColor, fillOpacity, strokePaint, strokeWidth, dashArray, animatesFill = false, gradient) {
1961
1975
  const ctx = strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray);
1962
- const subpaths = structuredPaths && structuredPaths.length > 0 ? chunkUTI4CLYJ_js.customGeometryPathsToSvgSubpaths(structuredPaths, pathWidth, pathHeight) : void 0;
1976
+ const subpaths = structuredPaths && structuredPaths.length > 0 ? chunk7WWINBGF_js.customGeometryPathsToSvgSubpaths(structuredPaths, pathWidth, pathHeight) : void 0;
1963
1977
  const needsPerSubpath = subpaths !== void 0 && subpaths.some((sp) => sp.fillMode && sp.fillMode !== "norm" || sp.stroke === false);
1964
- const gradientPaint = gradient ? chunkUTI4CLYJ_js.svgGradientFillRef(gradient) : void 0;
1978
+ const gradientPaint = gradient ? chunk7WWINBGF_js.svgGradientFillRef(gradient) : void 0;
1965
1979
  const nodes = [];
1966
1980
  if (subpaths && needsPerSubpath) {
1967
- const paints = chunkUTI4CLYJ_js.buildSubpathPaints(subpaths, hasFill, fillColor, fillOpacity);
1981
+ const paints = chunk7WWINBGF_js.buildSubpathPaints(subpaths, hasFill, fillColor, fillOpacity);
1968
1982
  paints.forEach((paint, idx) => {
1969
1983
  if (paint.fill !== "none") {
1970
1984
  const mode = subpaths[idx]?.fillMode;
@@ -1993,7 +2007,7 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
1993
2007
  "path",
1994
2008
  {
1995
2009
  d: pathData,
1996
- fill: animatesFill ? "inherit" : gradientPaint ?? chunkUTI4CLYJ_js.colorWithOpacity(fillColor, fillOpacity),
2010
+ fill: animatesFill ? "inherit" : gradientPaint ?? chunk7WWINBGF_js.colorWithOpacity(fillColor, fillOpacity),
1997
2011
  stroke: "none",
1998
2012
  vectorEffect: "non-scaling-stroke"
1999
2013
  },
@@ -2019,14 +2033,14 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
2019
2033
  );
2020
2034
  }
2021
2035
  function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor, animatesFill, animatesStroke) {
2022
- if (!chunkUTI4CLYJ_js.hasShapeProperties(element)) {
2036
+ if (!chunk7WWINBGF_js.hasShapeProperties(element)) {
2023
2037
  return null;
2024
2038
  }
2025
2039
  const normalizedType = (element.shapeType || "").toLowerCase();
2026
- const fillPaint = animatesFill ? "inherit" : chunkUTI4CLYJ_js.colorWithOpacity(fillColor, element.shapeStyle?.fillOpacity);
2027
- const strokePaint = animatesStroke ? "inherit" : chunkUTI4CLYJ_js.colorWithOpacity(strokeColor, element.shapeStyle?.strokeOpacity);
2028
- const dashType = chunkUTI4CLYJ_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2029
- const dashArray = chunkUTI4CLYJ_js.getSvgStrokeDasharray(
2040
+ const fillPaint = animatesFill ? "inherit" : chunk7WWINBGF_js.colorWithOpacity(fillColor, element.shapeStyle?.fillOpacity);
2041
+ const strokePaint = animatesStroke ? "inherit" : chunk7WWINBGF_js.colorWithOpacity(strokeColor, element.shapeStyle?.strokeOpacity);
2042
+ const dashType = chunk7WWINBGF_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2043
+ const dashArray = chunk7WWINBGF_js.getSvgStrokeDasharray(
2030
2044
  dashType,
2031
2045
  Math.max(strokeWidth, 1),
2032
2046
  element.shapeStyle?.customDashSegments
@@ -2107,13 +2121,13 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2107
2121
  // container's `background-image` is suppressed for custom geometry, so
2108
2122
  // without this the shape fell back to the parser's representative solid
2109
2123
  // and lost every fade (issue #132).
2110
- chunkUTI4CLYJ_js.buildSvgGradientDef(element.shapeStyle, element.id)
2124
+ chunk7WWINBGF_js.buildSvgGradientDef(element.shapeStyle, element.id)
2111
2125
  );
2112
2126
  }
2113
- if ((element.type === "image" || element.type === "picture") && strokeWidth > 0 && !chunkUTI4CLYJ_js.buildStrokeOutline(element)) {
2127
+ if ((element.type === "image" || element.type === "picture") && strokeWidth > 0 && !chunk7WWINBGF_js.buildStrokeOutline(element)) {
2114
2128
  const width = Math.max(element.width, 1);
2115
2129
  const height = Math.max(element.height, 1);
2116
- const geometry = chunkUTI4CLYJ_js.getPresetShapeVectorGeometry(
2130
+ const geometry = chunk7WWINBGF_js.getPresetShapeVectorGeometry(
2117
2131
  element.shapeType || "rect",
2118
2132
  width,
2119
2133
  height,
@@ -2141,18 +2155,18 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2141
2155
  );
2142
2156
  }
2143
2157
  }
2144
- if (element.type === "shape" && chunkUTI4CLYJ_js.isWedgeCalloutPresetShape(element.shapeType)) {
2158
+ if (element.type === "shape" && chunk7WWINBGF_js.isWedgeCalloutPresetShape(element.shapeType)) {
2145
2159
  const width = Math.max(element.width, 1);
2146
2160
  const height = Math.max(element.height, 1);
2147
- const geometry = chunkUTI4CLYJ_js.getPresetShapeVectorGeometry(
2161
+ const geometry = chunk7WWINBGF_js.getPresetShapeVectorGeometry(
2148
2162
  element.shapeType,
2149
2163
  width,
2150
2164
  height,
2151
2165
  element.shapeAdjustments
2152
2166
  );
2153
2167
  if (geometry) {
2154
- const gradient = chunkUTI4CLYJ_js.buildSvgGradientDef(element.shapeStyle, element.id);
2155
- const gradientPaint = gradient ? chunkUTI4CLYJ_js.svgGradientFillRef(gradient) : void 0;
2168
+ const gradient = chunk7WWINBGF_js.buildSvgGradientDef(element.shapeStyle, element.id);
2169
+ const gradientPaint = gradient ? chunk7WWINBGF_js.svgGradientFillRef(gradient) : void 0;
2156
2170
  return /* @__PURE__ */ jsxRuntime.jsxs(
2157
2171
  "svg",
2158
2172
  {
@@ -2185,18 +2199,18 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2185
2199
  );
2186
2200
  }
2187
2201
  }
2188
- if (chunkUTI4CLYJ_js.isCalloutShape(normalizedType)) {
2202
+ if (chunk7WWINBGF_js.isCalloutShape(normalizedType)) {
2189
2203
  const width = Math.max(element.width, 1);
2190
2204
  const height = Math.max(element.height, 1);
2191
- const geometry = chunkUTI4CLYJ_js.getCalloutLeaderLineGeometry(
2205
+ const geometry = chunk7WWINBGF_js.getCalloutLeaderLineGeometry(
2192
2206
  normalizedType,
2193
2207
  width,
2194
2208
  height,
2195
2209
  element.shapeAdjustments
2196
2210
  );
2197
2211
  if (geometry && geometry.points.length >= 2) {
2198
- const leaderPath = chunkUTI4CLYJ_js.buildCalloutLeaderLineSvgPath(geometry);
2199
- const bounds = chunkUTI4CLYJ_js.getCalloutViewBoxBounds(width, height, geometry);
2212
+ const leaderPath = chunk7WWINBGF_js.buildCalloutLeaderLineSvgPath(geometry);
2213
+ const bounds = chunk7WWINBGF_js.getCalloutViewBoxBounds(width, height, geometry);
2200
2214
  const lineStroke = Math.max(strokeWidth, 1);
2201
2215
  const offsetLeft = bounds.minX;
2202
2216
  const offsetTop = bounds.minY;
@@ -2259,10 +2273,10 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2259
2273
  const endArrowW = element.shapeStyle?.connectorEndArrowWidth;
2260
2274
  const endArrowL = element.shapeStyle?.connectorEndArrowLength;
2261
2275
  const compoundLine = element.shapeStyle?.compoundLine;
2262
- const connectorLineCap = chunkUTI4CLYJ_js.svgLineCap(element.shapeStyle?.lineCap);
2276
+ const connectorLineCap = chunk7WWINBGF_js.svgLineCap(element.shapeStyle?.lineCap);
2263
2277
  const hitTargetWidth = Math.max(strokeWidth * 3, 12);
2264
- const offsets = chunkUTI4CLYJ_js.getCompoundLineOffsets(compoundLine, strokeWidth);
2265
- const widths = chunkUTI4CLYJ_js.getCompoundLineWidths(compoundLine, strokeWidth);
2278
+ const offsets = chunk7WWINBGF_js.getCompoundLineOffsets(compoundLine, strokeWidth);
2279
+ const widths = chunk7WWINBGF_js.getCompoundLineWidths(compoundLine, strokeWidth);
2266
2280
  return /* @__PURE__ */ jsxRuntime.jsxs(
2267
2281
  "svg",
2268
2282
  {
@@ -2329,15 +2343,15 @@ function parseGradientFillCss(gradFill) {
2329
2343
  }
2330
2344
  const rawStops = stops.map((gs) => {
2331
2345
  const pos = Number.parseInt(String(gs["@_pos"] || "0"), 10) / 1e3;
2332
- const color = chunkUTI4CLYJ_js.parseDrawingColor(gs) ?? "#888888";
2333
- const opacity = chunkUTI4CLYJ_js.parseDrawingColorOpacity(gs);
2346
+ const color = chunk7WWINBGF_js.parseDrawingColor(gs) ?? "#888888";
2347
+ const opacity = chunk7WWINBGF_js.parseDrawingColorOpacity(gs);
2334
2348
  return { position: pos, color, opacity };
2335
2349
  }).sort((a, b) => a.position - b.position);
2336
- const stopStrings = rawStops.map((s) => `${chunkUTI4CLYJ_js.colorWithOpacity(s.color, s.opacity)} ${s.position.toFixed(1)}%`).join(", ");
2350
+ const stopStrings = rawStops.map((s) => `${chunk7WWINBGF_js.colorWithOpacity(s.color, s.opacity)} ${s.position.toFixed(1)}%`).join(", ");
2337
2351
  const lin = gradFill["a:lin"];
2338
2352
  if (lin) {
2339
2353
  const angRaw = Number.parseInt(String(lin["@_ang"] || "0"), 10);
2340
- const angleDeg = Math.round(chunkUTI4CLYJ_js.ooxmlGradientAngleToCssDegrees(angRaw / 6e4));
2354
+ const angleDeg = Math.round(chunk7WWINBGF_js.ooxmlGradientAngleToCssDegrees(angRaw / 6e4));
2341
2355
  return `linear-gradient(${angleDeg}deg, ${stopStrings})`;
2342
2356
  }
2343
2357
  const path = gradFill["a:path"];
@@ -2351,7 +2365,7 @@ function parseGradientFillCss(gradFill) {
2351
2365
  b: Number.parseInt(String(fillToRectXml["@_b"] || "0"), 10) / 1e5
2352
2366
  } : void 0;
2353
2367
  if (pathType === "rect") {
2354
- return chunkUTI4CLYJ_js.buildRectPathGradient(rawStops, void 0, fillToRect);
2368
+ return chunk7WWINBGF_js.buildRectPathGradient(rawStops, void 0, fillToRect);
2355
2369
  }
2356
2370
  let cx = 50;
2357
2371
  let cy = 50;
@@ -2373,8 +2387,8 @@ function parsePatternFillCss(pattFill) {
2373
2387
  if (!pattFill) {
2374
2388
  return void 0;
2375
2389
  }
2376
- const fgColor = chunkUTI4CLYJ_js.parseDrawingColor(pattFill["a:fgClr"]) ?? "#000000";
2377
- const bgColor = chunkUTI4CLYJ_js.parseDrawingColor(pattFill["a:bgClr"]) ?? "#ffffff";
2390
+ const fgColor = chunk7WWINBGF_js.parseDrawingColor(pattFill["a:fgClr"]) ?? "#000000";
2391
+ const bgColor = chunk7WWINBGF_js.parseDrawingColor(pattFill["a:bgClr"]) ?? "#ffffff";
2378
2392
  const preset = String(pattFill["@_prst"] || "ltDnDiag");
2379
2393
  switch (preset) {
2380
2394
  case "ltHorz":
@@ -2485,11 +2499,11 @@ function parseCellBorders(cellProperties) {
2485
2499
  const prstDash = ln["a:prstDash"];
2486
2500
  const dashVal = prstDash ? String(prstDash["@_val"] || "") : void 0;
2487
2501
  const cssBorderStyle = ooxmlDashToCss(dashVal);
2488
- const color = chunkUTI4CLYJ_js.parseDrawingColor(ln["a:solidFill"]);
2502
+ const color = chunk7WWINBGF_js.parseDrawingColor(ln["a:solidFill"]);
2489
2503
  if (color) {
2490
- const opacity = chunkUTI4CLYJ_js.parseDrawingColorOpacity(ln["a:solidFill"]);
2504
+ const opacity = chunk7WWINBGF_js.parseDrawingColorOpacity(ln["a:solidFill"]);
2491
2505
  const key = `${edge.prefix}`;
2492
- borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${chunkUTI4CLYJ_js.colorWithOpacity(color, opacity)}`;
2506
+ borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${chunk7WWINBGF_js.colorWithOpacity(color, opacity)}`;
2493
2507
  }
2494
2508
  }
2495
2509
  return borderStyle;
@@ -2502,7 +2516,7 @@ function parseCellTextEffects(runProps) {
2502
2516
  const textShadowParts = [];
2503
2517
  const outerShdw = effectLst["a:outerShdw"];
2504
2518
  if (outerShdw) {
2505
- const shdwColor = chunkUTI4CLYJ_js.parseDrawingColor(outerShdw);
2519
+ const shdwColor = chunk7WWINBGF_js.parseDrawingColor(outerShdw);
2506
2520
  if (shdwColor) {
2507
2521
  const blurRad = Number.parseInt(String(outerShdw["@_blurRad"] || "0"), 10);
2508
2522
  const blurPx = blurRad > 0 ? Math.round(blurRad / 12700) : 0;
@@ -2520,7 +2534,7 @@ function parseCellTextEffects(runProps) {
2520
2534
  }
2521
2535
  const glow = effectLst["a:glow"];
2522
2536
  if (glow) {
2523
- const glowColor = chunkUTI4CLYJ_js.parseDrawingColor(glow);
2537
+ const glowColor = chunk7WWINBGF_js.parseDrawingColor(glow);
2524
2538
  if (glowColor) {
2525
2539
  const glowRad = Number.parseInt(String(glow["@_rad"] || "0"), 10);
2526
2540
  const glowPx = glowRad > 0 ? Math.round(glowRad / 12700) : 2;
@@ -2542,11 +2556,11 @@ function extractCellText(cellXml) {
2542
2556
  const textParts = [];
2543
2557
  const runs = ensureArrayValue(paragraph["a:r"]);
2544
2558
  runs.forEach((run) => {
2545
- textParts.push(chunkUTI4CLYJ_js.xmlText(run["a:t"]) ?? "");
2559
+ textParts.push(chunk7WWINBGF_js.xmlText(run["a:t"]) ?? "");
2546
2560
  });
2547
2561
  const fields = ensureArrayValue(paragraph["a:fld"]);
2548
2562
  fields.forEach((field) => {
2549
- textParts.push(chunkUTI4CLYJ_js.xmlText(field["a:t"]) ?? "");
2563
+ textParts.push(chunk7WWINBGF_js.xmlText(field["a:t"]) ?? "");
2550
2564
  });
2551
2565
  paragraphTexts.push(textParts.join(""));
2552
2566
  });
@@ -2590,10 +2604,10 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
2590
2604
  if (runProps?.["@_u"] !== void 0) {
2591
2605
  cellStyle.textDecorationLine = runProps["@_u"] === "sng" ? "underline" : "none";
2592
2606
  }
2593
- const runColor = chunkUTI4CLYJ_js.parseDrawingColor(runProps?.["a:solidFill"], schemeColorOverrides) || chunkUTI4CLYJ_js.parseDrawingColor(runProps?.["a:highlight"], schemeColorOverrides);
2607
+ const runColor = chunk7WWINBGF_js.parseDrawingColor(runProps?.["a:solidFill"], schemeColorOverrides) || chunk7WWINBGF_js.parseDrawingColor(runProps?.["a:highlight"], schemeColorOverrides);
2594
2608
  if (runColor) {
2595
- const opacity = chunkUTI4CLYJ_js.parseDrawingColorOpacity(runProps?.["a:solidFill"]);
2596
- cellStyle.color = chunkUTI4CLYJ_js.colorWithOpacity(runColor, opacity);
2609
+ const opacity = chunk7WWINBGF_js.parseDrawingColorOpacity(runProps?.["a:solidFill"]);
2610
+ cellStyle.color = chunk7WWINBGF_js.colorWithOpacity(runColor, opacity);
2597
2611
  }
2598
2612
  const fontFamily = runProps?.["a:latin"]?.["@_typeface"] || runProps?.["a:ea"]?.["@_typeface"] || runProps?.["a:cs"]?.["@_typeface"];
2599
2613
  if (fontFamily) {
@@ -2603,15 +2617,15 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
2603
2617
  cellStyle.textAlign = parseParagraphAlignment(paragraphProperties["@_algn"]);
2604
2618
  }
2605
2619
  const cellProperties = cellXml["a:tcPr"];
2606
- const cellFill = chunkUTI4CLYJ_js.parseDrawingColor(
2620
+ const cellFill = chunk7WWINBGF_js.parseDrawingColor(
2607
2621
  cellProperties?.["a:solidFill"],
2608
2622
  schemeColorOverrides
2609
2623
  );
2610
2624
  if (cellFill) {
2611
- const opacity = chunkUTI4CLYJ_js.parseDrawingColorOpacity(
2625
+ const opacity = chunk7WWINBGF_js.parseDrawingColorOpacity(
2612
2626
  cellProperties?.["a:solidFill"]
2613
2627
  );
2614
- cellStyle.backgroundColor = chunkUTI4CLYJ_js.colorWithOpacity(cellFill, opacity);
2628
+ cellStyle.backgroundColor = chunk7WWINBGF_js.colorWithOpacity(cellFill, opacity);
2615
2629
  } else {
2616
2630
  const gradCss = parseGradientFillCss(cellProperties?.["a:gradFill"]);
2617
2631
  if (gradCss) {
@@ -2626,16 +2640,16 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
2626
2640
  const edgeBorders = parseCellBorders(cellProperties);
2627
2641
  Object.assign(cellStyle, edgeBorders);
2628
2642
  if (!cellStyle.borderLeftColor && !cellStyle.borderRightColor && !cellStyle.borderTopColor && !cellStyle.borderBottomColor) {
2629
- const borderColor = chunkUTI4CLYJ_js.parseDrawingColor(
2643
+ const borderColor = chunk7WWINBGF_js.parseDrawingColor(
2630
2644
  cellProperties?.["a:lnL"]?.["a:solidFill"],
2631
2645
  schemeColorOverrides
2632
- ) || chunkUTI4CLYJ_js.parseDrawingColor(
2646
+ ) || chunk7WWINBGF_js.parseDrawingColor(
2633
2647
  cellProperties?.["a:lnR"]?.["a:solidFill"],
2634
2648
  schemeColorOverrides
2635
- ) || chunkUTI4CLYJ_js.parseDrawingColor(
2649
+ ) || chunk7WWINBGF_js.parseDrawingColor(
2636
2650
  cellProperties?.["a:lnT"]?.["a:solidFill"],
2637
2651
  schemeColorOverrides
2638
- ) || chunkUTI4CLYJ_js.parseDrawingColor(
2652
+ ) || chunk7WWINBGF_js.parseDrawingColor(
2639
2653
  cellProperties?.["a:lnB"]?.["a:solidFill"],
2640
2654
  schemeColorOverrides
2641
2655
  );
@@ -2707,7 +2721,7 @@ function getTableCellBandStyle2(element, rowIndex, cellIndex, rowCount, columnCo
2707
2721
  if (element.type !== "table") {
2708
2722
  return void 0;
2709
2723
  }
2710
- return chunkUTI4CLYJ_js.getTableCellBandStyle(element.tableData, rowIndex, cellIndex, rowCount, columnCount, {
2724
+ return chunk7WWINBGF_js.getTableCellBandStyle(element.tableData, rowIndex, cellIndex, rowCount, columnCount, {
2711
2725
  tableStyleMap: styleCtx?.tableStyleMap,
2712
2726
  colorScheme: styleCtx?.theme?.colorScheme,
2713
2727
  fontScheme: styleCtx?.theme?.fontScheme
@@ -2787,7 +2801,7 @@ function renderTableCellContent(cell, fallbackText) {
2787
2801
  return /* @__PURE__ */ jsxRuntime.jsx(
2788
2802
  "span",
2789
2803
  {
2790
- style: { position: "relative", ...chunkUTI4CLYJ_js.cellRunStyle(run) },
2804
+ style: { position: "relative", ...chunk7WWINBGF_js.cellRunStyle(run) },
2791
2805
  children: run.text
2792
2806
  },
2793
2807
  `r-${index}`
@@ -2795,7 +2809,7 @@ function renderTableCellContent(cell, fallbackText) {
2795
2809
  });
2796
2810
  }
2797
2811
  function getCellDiagonalBorders2(style, tableData, pos, styleCtx) {
2798
- return chunkUTI4CLYJ_js.getCellDiagonalBorders(style, tableData, pos, {
2812
+ return chunk7WWINBGF_js.getCellDiagonalBorders(style, tableData, pos, {
2799
2813
  tableStyleMap: styleCtx?.tableStyleMap,
2800
2814
  colorScheme: styleCtx?.theme?.colorScheme,
2801
2815
  fontScheme: styleCtx?.theme?.fontScheme
@@ -2928,7 +2942,7 @@ function TableResizeOverlay({
2928
2942
  const containerRef = React7.useRef(null);
2929
2943
  const [rowBounds, setRowBounds] = React7.useState([]);
2930
2944
  const dragRef = React7.useRef(null);
2931
- const colBoundaries = React7.useMemo(() => chunkUTI4CLYJ_js.computeColumnBoundaries(columnWidths), [columnWidths]);
2945
+ const colBoundaries = React7.useMemo(() => chunk7WWINBGF_js.computeColumnBoundaries(columnWidths), [columnWidths]);
2932
2946
  const measureRows = React7.useCallback(() => {
2933
2947
  const container = containerRef.current;
2934
2948
  if (!container) {
@@ -2975,11 +2989,11 @@ function TableResizeOverlay({
2975
2989
  const rect = containerRef.current.getBoundingClientRect();
2976
2990
  if (e.clientX !== drag.startPos && drag.type === "col" && drag.initialWidths && onResizeColumns) {
2977
2991
  const deltaProp = (e.clientX - drag.startPos) / rect.width;
2978
- onResizeColumns(chunkUTI4CLYJ_js.computeResizedColumnWidths(drag.initialWidths, drag.index, deltaProp));
2992
+ onResizeColumns(chunk7WWINBGF_js.computeResizedColumnWidths(drag.initialWidths, drag.index, deltaProp));
2979
2993
  } else if (e.clientY !== drag.startPos && drag.type === "row" && onResizeRow) {
2980
2994
  const deltaY = e.clientY - drag.startPos;
2981
- const newHeight = chunkUTI4CLYJ_js.computeResizedRowHeight(
2982
- drag.initialRowHeight ?? chunkUTI4CLYJ_js.DEFAULT_ROW_HEIGHT,
2995
+ const newHeight = chunk7WWINBGF_js.computeResizedRowHeight(
2996
+ drag.initialRowHeight ?? chunk7WWINBGF_js.DEFAULT_ROW_HEIGHT,
2983
2997
  deltaY
2984
2998
  );
2985
2999
  onResizeRow(drag.index, newHeight);
@@ -3017,7 +3031,7 @@ function TableResizeOverlay({
3017
3031
  e.stopPropagation();
3018
3032
  const table = containerRef.current?.querySelector("table");
3019
3033
  const tr = table?.querySelectorAll("tbody > tr")[index];
3020
- const actualHeight = tr?.offsetHeight ?? chunkUTI4CLYJ_js.DEFAULT_ROW_HEIGHT;
3034
+ const actualHeight = tr?.offsetHeight ?? chunk7WWINBGF_js.DEFAULT_ROW_HEIGHT;
3021
3035
  document.body.style.cursor = "row-resize";
3022
3036
  document.body.style.userSelect = "none";
3023
3037
  dragRef.current = {
@@ -3057,14 +3071,14 @@ function renderTableFromTableData(element, textStyle, options) {
3057
3071
  const rowCount = tableData.rows.length;
3058
3072
  const columnCount = tableData.columnWidths.length;
3059
3073
  const selectedCell = options?.selectedCell || null;
3060
- const isEditable = Boolean(options?.editable) && chunkUTI4CLYJ_js.canDrillDown(element);
3074
+ const isEditable = Boolean(options?.editable) && chunk7WWINBGF_js.canDrillDown(element);
3061
3075
  const hasCellSelectionHandler = typeof options?.onSelectCell === "function";
3062
3076
  const sharedCtx = {
3063
3077
  tableStyleMap: options?.styleCtx?.tableStyleMap,
3064
3078
  colorScheme: options?.styleCtx?.theme?.colorScheme,
3065
3079
  fontScheme: options?.styleCtx?.theme?.fontScheme
3066
3080
  };
3067
- const cellCss = (cell, rowIndex, cellIndex) => chunkUTI4CLYJ_js.tableCellCss(
3081
+ const cellCss = (cell, rowIndex, cellIndex) => chunk7WWINBGF_js.tableCellCss(
3068
3082
  tableData,
3069
3083
  cell,
3070
3084
  { rowIndex, cellIndex, rowCount, columnCount },
@@ -3077,7 +3091,7 @@ function renderTableFromTableData(element, textStyle, options) {
3077
3091
  }
3078
3092
  const first = selectedCell.selectedCells[0];
3079
3093
  const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
3080
- return chunkUTI4CLYJ_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableData);
3094
+ return chunk7WWINBGF_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableData);
3081
3095
  })();
3082
3096
  return /* @__PURE__ */ jsxRuntime.jsx(
3083
3097
  TableResizeOverlay,
@@ -3098,9 +3112,9 @@ function renderTableFromTableData(element, textStyle, options) {
3098
3112
  {
3099
3113
  className: "w-full h-full border-collapse table-fixed",
3100
3114
  style: {
3101
- fontFamily: chunkUTI4CLYJ_js.DEFAULT_FONT_FAMILY,
3115
+ fontFamily: chunk7WWINBGF_js.DEFAULT_FONT_FAMILY,
3102
3116
  // `a:tblPr@rtl` mirrors the column order for RTL decks.
3103
- ...chunkUTI4CLYJ_js.tableContainerCss(tableData)
3117
+ ...chunk7WWINBGF_js.tableContainerCss(tableData)
3104
3118
  },
3105
3119
  children: [
3106
3120
  tableData.columnWidths.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("colgroup", { children: tableData.columnWidths.map((w, ci) => /* @__PURE__ */ jsxRuntime.jsx(
@@ -3119,7 +3133,7 @@ function renderTableFromTableData(element, textStyle, options) {
3119
3133
  return null;
3120
3134
  }
3121
3135
  const isCellSelected = selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex;
3122
- const isInMultiSelection = chunkUTI4CLYJ_js.isCellInRect(rowIndex, cellIndex, selectionRect);
3136
+ const isInMultiSelection = chunk7WWINBGF_js.isCellInRect(rowIndex, cellIndex, selectionRect);
3123
3137
  const isCellEditing = isCellSelected && selectedCell?.isEditing;
3124
3138
  const diag = getCellDiagonalBorders2(
3125
3139
  cell.style,
@@ -3148,7 +3162,7 @@ function renderTableFromTableData(element, textStyle, options) {
3148
3162
  }
3149
3163
  event.stopPropagation();
3150
3164
  if (event.shiftKey && selectedCell) {
3151
- const rect = chunkUTI4CLYJ_js.computeSelectionRect(
3165
+ const rect = chunk7WWINBGF_js.computeSelectionRect(
3152
3166
  selectedCell.rowIndex,
3153
3167
  selectedCell.columnIndex,
3154
3168
  rowIndex,
@@ -3158,7 +3172,7 @@ function renderTableFromTableData(element, textStyle, options) {
3158
3172
  options?.onSelectCell?.({
3159
3173
  rowIndex: selectedCell.rowIndex,
3160
3174
  columnIndex: selectedCell.columnIndex,
3161
- selectedCells: chunkUTI4CLYJ_js.rectToCells(rect)
3175
+ selectedCells: chunk7WWINBGF_js.rectToCells(rect)
3162
3176
  });
3163
3177
  } else {
3164
3178
  options?.onSelectCell?.({
@@ -3219,10 +3233,10 @@ function renderTableElement(element, textStyle, options) {
3219
3233
  if (tableEl2.tableData && tableEl2.tableData.rows.length > 0) {
3220
3234
  return renderTableFromTableData(tableEl2, textStyle, options);
3221
3235
  }
3222
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkW5KLLGVH_js.translationsEn["pptx.table.title"] });
3236
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkI4D6JQOI_js.translationsEn["pptx.table.title"] });
3223
3237
  }
3224
3238
  const selectedCell = options?.selectedCell || null;
3225
- const isEditable = Boolean(options?.editable) && chunkUTI4CLYJ_js.canDrillDown(element);
3239
+ const isEditable = Boolean(options?.editable) && chunk7WWINBGF_js.canDrillDown(element);
3226
3240
  const hasCellSelectionHandler = typeof options?.onSelectCell === "function";
3227
3241
  const tableEl = element;
3228
3242
  const xmlSelectionRect = (() => {
@@ -3234,7 +3248,7 @@ function renderTableElement(element, textStyle, options) {
3234
3248
  }
3235
3249
  const first = selectedCell.selectedCells[0];
3236
3250
  const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
3237
- return chunkUTI4CLYJ_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableEl.tableData);
3251
+ return chunk7WWINBGF_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableEl.tableData);
3238
3252
  })();
3239
3253
  const schemeOverrides = options?.styleCtx?.theme?.colorScheme ? options.styleCtx.theme.colorScheme : void 0;
3240
3254
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -3256,9 +3270,9 @@ function renderTableElement(element, textStyle, options) {
3256
3270
  {
3257
3271
  className: "w-full h-full border-collapse table-fixed",
3258
3272
  style: {
3259
- fontFamily: chunkUTI4CLYJ_js.DEFAULT_FONT_FAMILY,
3273
+ fontFamily: chunk7WWINBGF_js.DEFAULT_FONT_FAMILY,
3260
3274
  // `a:tblPr@rtl` mirrors the column order for RTL decks.
3261
- ...chunkUTI4CLYJ_js.tableContainerCss(tableEl.tableData)
3275
+ ...chunk7WWINBGF_js.tableContainerCss(tableEl.tableData)
3262
3276
  },
3263
3277
  children: [
3264
3278
  parsedTable.columnPercentages.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx("colgroup", { children: parsedTable.columnPercentages.map((percentage, columnIndex) => /* @__PURE__ */ jsxRuntime.jsx(
@@ -3315,7 +3329,7 @@ function renderTableElement(element, textStyle, options) {
3315
3329
  color: textStyle.color,
3316
3330
  ...bandStyle,
3317
3331
  ...xmlCellStyle,
3318
- ...tdCellOverride ? chunkUTI4CLYJ_js.cellStyleToCss(tdCellOverride) : void 0,
3332
+ ...tdCellOverride ? chunk7WWINBGF_js.cellStyleToCss(tdCellOverride) : void 0,
3319
3333
  ...diag ? { position: "relative" } : void 0
3320
3334
  };
3321
3335
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -3325,7 +3339,7 @@ function renderTableElement(element, textStyle, options) {
3325
3339
  "border px-1 py-0.5 align-top",
3326
3340
  isEditable && hasCellSelectionHandler ? "border-blue-200/70 cursor-cell" : "border-white/30",
3327
3341
  selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex ? "ring-1 ring-inset ring-blue-500" : null,
3328
- chunkUTI4CLYJ_js.isCellInRect(rowIndex, cellIndex, xmlSelectionRect) && !(selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex) ? "bg-blue-500/15 ring-1 ring-inset ring-blue-400/50" : null
3342
+ chunk7WWINBGF_js.isCellInRect(rowIndex, cellIndex, xmlSelectionRect) && !(selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex) ? "bg-blue-500/15 ring-1 ring-inset ring-blue-400/50" : null
3329
3343
  ),
3330
3344
  colSpan,
3331
3345
  rowSpan: rSpan,
@@ -3336,7 +3350,7 @@ function renderTableElement(element, textStyle, options) {
3336
3350
  }
3337
3351
  event.stopPropagation();
3338
3352
  if (event.shiftKey && selectedCell && tableEl.tableData) {
3339
- const rect = chunkUTI4CLYJ_js.computeSelectionRect(
3353
+ const rect = chunk7WWINBGF_js.computeSelectionRect(
3340
3354
  selectedCell.rowIndex,
3341
3355
  selectedCell.columnIndex,
3342
3356
  rowIndex,
@@ -3346,7 +3360,7 @@ function renderTableElement(element, textStyle, options) {
3346
3360
  options?.onSelectCell?.({
3347
3361
  rowIndex: selectedCell.rowIndex,
3348
3362
  columnIndex: selectedCell.columnIndex,
3349
- selectedCells: chunkUTI4CLYJ_js.rectToCells(rect)
3363
+ selectedCells: chunk7WWINBGF_js.rectToCells(rect)
3350
3364
  });
3351
3365
  } else {
3352
3366
  options?.onSelectCell?.({
@@ -3405,23 +3419,23 @@ function renderTableElement(element, textStyle, options) {
3405
3419
  );
3406
3420
  }
3407
3421
  function partAttrs(part) {
3408
- return part ? chunkUTI4CLYJ_js.chartPartToAttrs(part) : void 0;
3422
+ return part ? chunk7WWINBGF_js.chartPartToAttrs(part) : void 0;
3409
3423
  }
3410
3424
  function resolveReactPalette(chartData) {
3411
3425
  if (chartData.colorPalette && chartData.colorPalette.length > 0) {
3412
3426
  return chartData.colorPalette;
3413
3427
  }
3414
- return [...chunkUTI4CLYJ_js.getChartStylePalette(chartData.style?.styleId)];
3428
+ return [...chunk7WWINBGF_js.getChartStylePalette(chartData.style?.styleId)];
3415
3429
  }
3416
3430
  function buildReactChartViewModel(element) {
3417
3431
  if (element.type !== "chart" || !element.chartData) {
3418
- return chunkUTI4CLYJ_js.buildChartViewModel(element);
3432
+ return chunk7WWINBGF_js.buildChartViewModel(element);
3419
3433
  }
3420
3434
  const palette = resolveReactPalette(element.chartData), themedElement = {
3421
3435
  ...element,
3422
3436
  chartData: { ...element.chartData, colorPalette: palette }
3423
3437
  };
3424
- return chunkUTI4CLYJ_js.buildChartViewModel(themedElement);
3438
+ return chunk7WWINBGF_js.buildChartViewModel(themedElement);
3425
3439
  }
3426
3440
  function renderPrimitive(prim, key) {
3427
3441
  switch (prim.kind) {
@@ -3573,7 +3587,7 @@ function renderText(t, key) {
3573
3587
  );
3574
3588
  }
3575
3589
  function renderChartViewModel(elementId, vm, preserveAspectRatio = "none") {
3576
- const legendItems = chunkUTI4CLYJ_js.computeChartLegendLayout(vm);
3590
+ const legendItems = chunk7WWINBGF_js.computeChartLegendLayout(vm);
3577
3591
  return /* @__PURE__ */ jsxRuntime.jsxs(
3578
3592
  "svg",
3579
3593
  {
@@ -3713,17 +3727,17 @@ function renderChartViewModel(elementId, vm, preserveAspectRatio = "none") {
3713
3727
  }
3714
3728
  function renderChartElement(element) {
3715
3729
  if (element.type !== "chart") {
3716
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkW5KLLGVH_js.translationsEn["pptx.chart.heading"] });
3730
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkI4D6JQOI_js.translationsEn["pptx.chart.heading"] });
3717
3731
  }
3718
3732
  const chartData = element.chartData;
3719
3733
  if (!chartData || chartData.series.length === 0) {
3720
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkW5KLLGVH_js.translationsEn["pptx.chart.heading"] });
3734
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkI4D6JQOI_js.translationsEn["pptx.chart.heading"] });
3721
3735
  }
3722
- const kind = chunkUTI4CLYJ_js.resolveChartKind(chartData.chartType ?? "bar");
3736
+ const kind = chunk7WWINBGF_js.resolveChartKind(chartData.chartType ?? "bar");
3723
3737
  return renderChartViewModel(
3724
3738
  element.id,
3725
3739
  buildReactChartViewModel(element),
3726
- chunkUTI4CLYJ_js.chartPreserveAspectRatio(kind)
3740
+ chunk7WWINBGF_js.chartPreserveAspectRatio(kind)
3727
3741
  );
3728
3742
  }
3729
3743
 
@@ -3743,14 +3757,14 @@ function buildNotesPdf(pages) {
3743
3757
  notes: page.notes,
3744
3758
  slideNumber: page.slideNumber
3745
3759
  }));
3746
- const bytes = chunkUTI4CLYJ_js.buildNotesPdfBytes(images, meta);
3760
+ const bytes = chunk7WWINBGF_js.buildNotesPdfBytes(images, meta);
3747
3761
  const blob = new Blob([bytes], { type: "application/pdf" });
3748
3762
  return URL.createObjectURL(blob);
3749
3763
  }
3750
3764
 
3751
3765
  // src/viewer/utils/pdf-builder-slides.ts
3752
3766
  function buildPdfFromTiledImageData(pages) {
3753
- const bytes = chunkUTI4CLYJ_js.buildTiledSlidesPdfBytes(pages);
3767
+ const bytes = chunk7WWINBGF_js.buildTiledSlidesPdfBytes(pages);
3754
3768
  const blob = new Blob([bytes], { type: "application/pdf" });
3755
3769
  return URL.createObjectURL(blob);
3756
3770
  }
@@ -3759,7 +3773,7 @@ function buildPdfFromTiledImageData(pages) {
3759
3773
  var activePreview = null;
3760
3774
  function startPreviewAnimation(elementId, preset, options) {
3761
3775
  stopPreviewAnimation();
3762
- const descriptor = chunkUTI4CLYJ_js.buildPreviewAnimation(preset, options);
3776
+ const descriptor = chunk7WWINBGF_js.buildPreviewAnimation(preset, options);
3763
3777
  if (!descriptor) {
3764
3778
  return;
3765
3779
  }
@@ -3772,7 +3786,7 @@ function startMotionPathPreview(elementId, path, options) {
3772
3786
  return;
3773
3787
  }
3774
3788
  const stage = domEl.offsetParent;
3775
- const descriptor = chunkUTI4CLYJ_js.buildMotionPathPreview({
3789
+ const descriptor = chunk7WWINBGF_js.buildMotionPathPreview({
3776
3790
  path,
3777
3791
  slideWidth: stage?.offsetWidth || DEFAULT_PREVIEW_SLIDE_WIDTH,
3778
3792
  slideHeight: stage?.offsetHeight || DEFAULT_PREVIEW_SLIDE_HEIGHT,