pptx-react-viewer 2.12.0 → 2.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/dist/{AiChatPanel-CS4CONUO.mjs → AiChatPanel-CGGUPVQX.mjs} +4 -4
  3. package/dist/AiChatPanel-CGGUPVQX.mjs.br +0 -0
  4. package/dist/AiChatPanel-CGGUPVQX.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-JIXSOZXN.js → AiChatPanel-UEFYTUJN.js} +23 -23
  6. package/dist/AiChatPanel-UEFYTUJN.js.br +0 -0
  7. package/dist/AiChatPanel-UEFYTUJN.js.gz +0 -0
  8. package/dist/{Model3DScene-5KMJ4JL6.js → Model3DScene-QYXJNALP.js} +2 -2
  9. package/dist/{Model3DScene-5KMJ4JL6.js.br → Model3DScene-QYXJNALP.js.br} +0 -0
  10. package/dist/Model3DScene-QYXJNALP.js.gz +0 -0
  11. package/dist/{Model3DScene-RWFPSN6B.mjs → Model3DScene-TU4NTHRM.mjs} +1 -1
  12. package/dist/Model3DScene-TU4NTHRM.mjs.br +0 -0
  13. package/dist/Model3DScene-TU4NTHRM.mjs.gz +0 -0
  14. package/dist/{SurfaceChart3DScene-BIOKIETC.js → SurfaceChart3DScene-4VCO3DRP.js} +2 -2
  15. package/dist/SurfaceChart3DScene-4VCO3DRP.js.br +0 -0
  16. package/dist/SurfaceChart3DScene-4VCO3DRP.js.gz +0 -0
  17. package/dist/{SurfaceChart3DScene-2GZQM3LN.mjs → SurfaceChart3DScene-VTJBKUQY.mjs} +1 -1
  18. package/dist/{SurfaceChart3DScene-2GZQM3LN.mjs.br → SurfaceChart3DScene-VTJBKUQY.mjs.br} +0 -0
  19. package/dist/SurfaceChart3DScene-VTJBKUQY.mjs.gz +0 -0
  20. package/dist/{chunk-AOED5MFM.mjs → chunk-4GYNTY2G.mjs} +13 -12
  21. package/dist/chunk-4GYNTY2G.mjs.br +0 -0
  22. package/dist/chunk-4GYNTY2G.mjs.gz +0 -0
  23. package/dist/{chunk-BJQSHVYH.mjs → chunk-4SGXEGVL.mjs} +261 -203
  24. package/dist/chunk-4SGXEGVL.mjs.br +0 -0
  25. package/dist/chunk-4SGXEGVL.mjs.gz +0 -0
  26. package/dist/{chunk-3GNSGGY2.js → chunk-BXAK3JFM.js} +13 -0
  27. package/dist/chunk-BXAK3JFM.js.br +0 -0
  28. package/dist/chunk-BXAK3JFM.js.gz +0 -0
  29. package/dist/{chunk-QGHC65C4.mjs → chunk-CABQXGPI.mjs} +302 -18
  30. package/dist/chunk-CABQXGPI.mjs.br +0 -0
  31. package/dist/{chunk-QGHC65C4.mjs.gz → chunk-CABQXGPI.mjs.gz} +0 -0
  32. package/dist/{chunk-SP7U34QM.js → chunk-GBKIWNW6.js} +1996 -1938
  33. package/dist/chunk-GBKIWNW6.js.br +0 -0
  34. package/dist/chunk-GBKIWNW6.js.gz +0 -0
  35. package/dist/{chunk-2VUHJNWM.js → chunk-LE6YA5WB.js} +261 -254
  36. package/dist/chunk-LE6YA5WB.js.br +0 -0
  37. package/dist/chunk-LE6YA5WB.js.gz +0 -0
  38. package/dist/{chunk-EJRHYYKE.mjs → chunk-N3NKU7SC.mjs} +1 -1
  39. package/dist/chunk-N3NKU7SC.mjs.br +0 -0
  40. package/dist/chunk-N3NKU7SC.mjs.gz +0 -0
  41. package/dist/{chunk-PTGTFXPU.js → chunk-NUDH7TI2.js} +341 -340
  42. package/dist/chunk-NUDH7TI2.js.br +0 -0
  43. package/dist/chunk-NUDH7TI2.js.gz +0 -0
  44. package/dist/{chunk-PJUQQF3I.js → chunk-TDUDH7S4.js} +320 -19
  45. package/dist/chunk-TDUDH7S4.js.br +0 -0
  46. package/dist/{chunk-PJUQQF3I.js.gz → chunk-TDUDH7S4.js.gz} +0 -0
  47. package/dist/{chunk-ECDKYPQ2.mjs → chunk-TEXIGSA6.mjs} +13 -0
  48. package/dist/chunk-TEXIGSA6.mjs.br +0 -0
  49. package/dist/chunk-TEXIGSA6.mjs.gz +0 -0
  50. package/dist/{chunk-ZIXSSQAZ.js → chunk-UIWY4XJT.js} +3 -3
  51. package/dist/chunk-UIWY4XJT.js.br +0 -0
  52. package/dist/chunk-UIWY4XJT.js.gz +0 -0
  53. package/dist/{chunk-CEUHGUZ4.mjs → chunk-YIPR3GKG.mjs} +22 -15
  54. package/dist/chunk-YIPR3GKG.mjs.br +0 -0
  55. package/dist/chunk-YIPR3GKG.mjs.gz +0 -0
  56. package/dist/i18n.js +4 -4
  57. package/dist/i18n.js.br +0 -0
  58. package/dist/i18n.js.gz +0 -0
  59. package/dist/i18n.mjs +1 -1
  60. package/dist/i18n.mjs.br +0 -0
  61. package/dist/i18n.mjs.gz +0 -0
  62. package/dist/index.js +36 -36
  63. package/dist/index.js.br +0 -0
  64. package/dist/index.js.gz +0 -0
  65. package/dist/index.mjs +6 -6
  66. package/dist/index.mjs.br +0 -0
  67. package/dist/index.mjs.gz +0 -0
  68. package/dist/internals.d.ts.map +1 -1
  69. package/dist/internals.js +79 -79
  70. package/dist/internals.js.br +0 -0
  71. package/dist/internals.js.gz +0 -0
  72. package/dist/internals.mjs +4 -4
  73. package/dist/internals.mjs.br +0 -0
  74. package/dist/internals.mjs.gz +0 -0
  75. package/dist/pptx-viewer.css +1 -1
  76. package/dist/pptx-viewer.css.br +0 -0
  77. package/dist/pptx-viewer.css.gz +0 -0
  78. package/dist/viewer/index.js +22 -22
  79. package/dist/viewer/index.js.br +0 -0
  80. package/dist/viewer/index.js.gz +0 -0
  81. package/dist/viewer/index.mjs +6 -6
  82. package/dist/viewer/index.mjs.br +0 -0
  83. package/dist/viewer/index.mjs.gz +0 -0
  84. package/package.json +1 -1
  85. package/dist/AiChatPanel-CS4CONUO.mjs.br +0 -0
  86. package/dist/AiChatPanel-CS4CONUO.mjs.gz +0 -0
  87. package/dist/AiChatPanel-JIXSOZXN.js.br +0 -0
  88. package/dist/AiChatPanel-JIXSOZXN.js.gz +0 -0
  89. package/dist/Model3DScene-5KMJ4JL6.js.gz +0 -0
  90. package/dist/Model3DScene-RWFPSN6B.mjs.br +0 -0
  91. package/dist/Model3DScene-RWFPSN6B.mjs.gz +0 -0
  92. package/dist/SurfaceChart3DScene-2GZQM3LN.mjs.gz +0 -0
  93. package/dist/SurfaceChart3DScene-BIOKIETC.js.br +0 -0
  94. package/dist/SurfaceChart3DScene-BIOKIETC.js.gz +0 -0
  95. package/dist/chunk-2VUHJNWM.js.br +0 -0
  96. package/dist/chunk-2VUHJNWM.js.gz +0 -0
  97. package/dist/chunk-3GNSGGY2.js.br +0 -0
  98. package/dist/chunk-3GNSGGY2.js.gz +0 -0
  99. package/dist/chunk-AOED5MFM.mjs.br +0 -0
  100. package/dist/chunk-AOED5MFM.mjs.gz +0 -0
  101. package/dist/chunk-BJQSHVYH.mjs.br +0 -0
  102. package/dist/chunk-BJQSHVYH.mjs.gz +0 -0
  103. package/dist/chunk-CEUHGUZ4.mjs.br +0 -0
  104. package/dist/chunk-CEUHGUZ4.mjs.gz +0 -0
  105. package/dist/chunk-ECDKYPQ2.mjs.br +0 -0
  106. package/dist/chunk-ECDKYPQ2.mjs.gz +0 -0
  107. package/dist/chunk-EJRHYYKE.mjs.br +0 -0
  108. package/dist/chunk-EJRHYYKE.mjs.gz +0 -0
  109. package/dist/chunk-PJUQQF3I.js.br +0 -0
  110. package/dist/chunk-PTGTFXPU.js.br +0 -0
  111. package/dist/chunk-PTGTFXPU.js.gz +0 -0
  112. package/dist/chunk-QGHC65C4.mjs.br +0 -0
  113. package/dist/chunk-SP7U34QM.js.br +0 -0
  114. package/dist/chunk-SP7U34QM.js.gz +0 -0
  115. package/dist/chunk-ZIXSSQAZ.js.br +0 -0
  116. package/dist/chunk-ZIXSSQAZ.js.gz +0 -0
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunk3GNSGGY2_js = require('./chunk-3GNSGGY2.js');
4
- var chunkPJUQQF3I_js = require('./chunk-PJUQQF3I.js');
3
+ var chunkBXAK3JFM_js = require('./chunk-BXAK3JFM.js');
4
+ var chunkTDUDH7S4_js = require('./chunk-TDUDH7S4.js');
5
5
  var clsx = require('clsx');
6
6
  var tailwindMerge = require('tailwind-merge');
7
7
  var React6 = require('react');
@@ -15,7 +15,7 @@ var React6__default = /*#__PURE__*/_interopDefault(React6);
15
15
 
16
16
  // src/viewer/utils/animation-effects.ts
17
17
  function getAnimationInitialStyle2(preset, nativeAnimation) {
18
- return chunkPJUQQF3I_js.getAnimationInitialStyle(preset, nativeAnimation);
18
+ return chunkTDUDH7S4_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 chunkPJUQQF3I_js.cloneHistorySnapshot(snapshot);
26
+ return chunkTDUDH7S4_js.cloneHistorySnapshot(snapshot);
27
27
  }
28
28
 
29
29
  // src/viewer/constants/scalar.ts
@@ -63,7 +63,7 @@ var TOOLBAR_SECTIONS = [
63
63
  { id: "view", labelKey: "pptx.ribbon.tab.view" },
64
64
  { id: "help", labelKey: "pptx.ribbon.tab.help" }
65
65
  ];
66
- var SHORTCUT_REFERENCE_ITEMS = chunkPJUQQF3I_js.VIEWER_SHORTCUT_REFERENCE;
66
+ var SHORTCUT_REFERENCE_ITEMS = chunkTDUDH7S4_js.VIEWER_SHORTCUT_REFERENCE;
67
67
 
68
68
  // src/viewer/constants/theme.ts
69
69
  var THEME_COLOR_SWATCHES = [
@@ -107,7 +107,7 @@ var GLYPH_COMPONENTS = {
107
107
  plus: lu.LuPlus,
108
108
  triangle: lu.LuTriangle
109
109
  };
110
- var SHAPE_PRESETS = chunkPJUQQF3I_js.SHAPE_PRESET_DEFS.map(
110
+ var SHAPE_PRESETS = chunkTDUDH7S4_js.SHAPE_PRESET_DEFS.map(
111
111
  (def) => ({
112
112
  type: def.type,
113
113
  label: def.label,
@@ -266,7 +266,7 @@ function isConnectorOrLineElement(element) {
266
266
  if (element.type === "connector") {
267
267
  return true;
268
268
  }
269
- if (!chunkPJUQQF3I_js.hasShapeProperties(element)) {
269
+ if (!chunkTDUDH7S4_js.hasShapeProperties(element)) {
270
270
  return false;
271
271
  }
272
272
  const st = getShapeType(element.shapeType);
@@ -277,12 +277,12 @@ function isConnectorOrLineElement(element) {
277
277
  function partitionTemplateElements(slides) {
278
278
  const templateElementsBySlideId = {};
279
279
  const nextSlides = slides.map((slide) => {
280
- const template = slide.elements.filter((el) => chunkPJUQQF3I_js.isTemplateElement(el));
280
+ const template = slide.elements.filter((el) => chunkTDUDH7S4_js.isTemplateElement(el));
281
281
  if (template.length === 0) {
282
282
  return slide;
283
283
  }
284
284
  templateElementsBySlideId[slide.id] = template;
285
- return { ...slide, elements: slide.elements.filter((el) => !chunkPJUQQF3I_js.isTemplateElement(el)) };
285
+ return { ...slide, elements: slide.elements.filter((el) => !chunkTDUDH7S4_js.isTemplateElement(el)) };
286
286
  });
287
287
  return { slides: nextSlides, templateElementsBySlideId };
288
288
  }
@@ -298,7 +298,7 @@ function buildSaveSlides(slides, templateElementsBySlideId) {
298
298
 
299
299
  // src/viewer/utils/image-style.ts
300
300
  function getImageMaskStyle(element) {
301
- if (!chunkPJUQQF3I_js.hasShapeProperties(element)) {
301
+ if (!chunkTDUDH7S4_js.hasShapeProperties(element)) {
302
302
  return void 0;
303
303
  }
304
304
  const shapeType = element.shapeType;
@@ -307,7 +307,7 @@ function getImageMaskStyle(element) {
307
307
  }
308
308
  const normalized = shapeType.toLowerCase();
309
309
  if (normalized === "roundrect" || normalized === "round1rect" || normalized === "round2samerect" || normalized === "round2diagrect" || normalized === "sniproundrect" || normalized === "snip1rect" || normalized === "snip2diagrect") {
310
- const radiusPx = chunkPJUQQF3I_js.getRoundRectRadiusPx(element);
310
+ const radiusPx = chunkTDUDH7S4_js.getRoundRectRadiusPx(element);
311
311
  if (radiusPx <= 0.01) {
312
312
  return void 0;
313
313
  }
@@ -319,7 +319,7 @@ function getImageMaskStyle(element) {
319
319
  if (normalized === "can" || normalized === "cylinder") {
320
320
  return { borderRadius: "48% / 12%" };
321
321
  }
322
- const clipPath = chunkPJUQQF3I_js.getResolvedShapeClipPath(element);
322
+ const clipPath = chunkTDUDH7S4_js.getResolvedShapeClipPath(element);
323
323
  if (!clipPath) {
324
324
  return void 0;
325
325
  }
@@ -328,7 +328,7 @@ function getImageMaskStyle(element) {
328
328
  function getImageRenderStyle(element) {
329
329
  return {
330
330
  ...getImageMaskStyle(element) || {},
331
- ...chunkPJUQQF3I_js.getImageFitStyle(element)
331
+ ...chunkTDUDH7S4_js.getImageFitStyle(element)
332
332
  };
333
333
  }
334
334
  var CROP_SHAPE_CLIP_PATHS = {
@@ -341,7 +341,7 @@ var CROP_SHAPE_CLIP_PATHS = {
341
341
  star: "polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%)"
342
342
  };
343
343
  function getCropShapeClipPath(element) {
344
- if (!chunkPJUQQF3I_js.isImageLikeElement(element)) {
344
+ if (!chunkTDUDH7S4_js.isImageLikeElement(element)) {
345
345
  return void 0;
346
346
  }
347
347
  const shape = element.cropShape;
@@ -351,7 +351,7 @@ function getCropShapeClipPath(element) {
351
351
  return CROP_SHAPE_CLIP_PATHS[shape];
352
352
  }
353
353
  function isImageTiled(element) {
354
- if (!chunkPJUQQF3I_js.isImageLikeElement(element)) {
354
+ if (!chunkTDUDH7S4_js.isImageLikeElement(element)) {
355
355
  return false;
356
356
  }
357
357
  return typeof element.tileScaleX === "number" || typeof element.tileScaleY === "number";
@@ -409,7 +409,7 @@ function buildMirrorTiledBackground(src, flip, scaleX, scaleY) {
409
409
  };
410
410
  }
411
411
  function getImageTilingStyle(element) {
412
- if (!chunkPJUQQF3I_js.isImageLikeElement(element) || !isImageTiled(element)) {
412
+ if (!chunkTDUDH7S4_js.isImageLikeElement(element) || !isImageTiled(element)) {
413
413
  return void 0;
414
414
  }
415
415
  const scaleX = typeof element.tileScaleX === "number" ? element.tileScaleX * 100 : 100;
@@ -622,7 +622,8 @@ function VideoWithMetadata({
622
622
  shouldLoop,
623
623
  shouldAutoPlay,
624
624
  isFullScreen,
625
- isPresentationMode
625
+ isPresentationMode,
626
+ showTransport
626
627
  }) {
627
628
  useMediaMetadataExtraction(mediaRef, element);
628
629
  const captionTracks = element.captionTracks ?? [];
@@ -631,7 +632,7 @@ function VideoWithMetadata({
631
632
  {
632
633
  ref: mediaRef,
633
634
  className: `w-full h-full pointer-events-auto ${isFullScreen ? "object-cover" : "object-contain"}`,
634
- controls: !isPresentationMode,
635
+ controls: showTransport,
635
636
  preload: "metadata",
636
637
  playsInline: true,
637
638
  autoPlay: shouldAutoPlay,
@@ -656,7 +657,7 @@ function AudioWithMetadata({
656
657
  mediaMimeType,
657
658
  shouldLoop,
658
659
  shouldAutoPlay,
659
- isPresentationMode
660
+ showTransport
660
661
  }) {
661
662
  useMediaMetadataExtraction(mediaRef, element);
662
663
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center p-2 pointer-events-auto", children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -664,7 +665,7 @@ function AudioWithMetadata({
664
665
  {
665
666
  ref: mediaRef,
666
667
  className: "w-full",
667
- controls: !isPresentationMode,
668
+ controls: showTransport,
668
669
  preload: "metadata",
669
670
  autoPlay: shouldAutoPlay,
670
671
  loop: shouldLoop,
@@ -689,9 +690,9 @@ function registerMediaElement(elementId, el) {
689
690
  };
690
691
  }
691
692
  function executeMediaCommand(command, frameRoot) {
692
- return chunkPJUQQF3I_js.runMediaCommand(
693
+ return chunkTDUDH7S4_js.runMediaCommand(
693
694
  command,
694
- (targetId) => registry.get(targetId) ?? chunkPJUQQF3I_js.findMediaElementByElementId(targetId, frameRoot?.())
695
+ (targetId) => registry.get(targetId) ?? chunkTDUDH7S4_js.findMediaElementByElementId(targetId, frameRoot?.())
695
696
  );
696
697
  }
697
698
  function PresentationMediaController({
@@ -730,19 +731,23 @@ function PresentationMediaController({
730
731
  }
731
732
  return registerMediaElement(element.id, el);
732
733
  }, [element.id]);
734
+ const { volume: playbackVolume, playbackRate } = chunkTDUDH7S4_js.mediaPlaybackAttributes({
735
+ loop: element.loop,
736
+ volume: element.volume,
737
+ playbackSpeed: element.playbackSpeed
738
+ });
733
739
  React6.useEffect(() => {
734
740
  const el = mediaRef.current;
735
741
  if (el) {
736
- el.volume = Math.max(0, Math.min(1, volume));
742
+ el.volume = playbackVolume;
737
743
  }
738
- }, [volume]);
739
- const playbackSpeed = element.playbackSpeed ?? 1;
744
+ }, [playbackVolume]);
740
745
  React6.useEffect(() => {
741
746
  const el = mediaRef.current;
742
747
  if (el) {
743
- el.playbackRate = Math.max(0.25, Math.min(4, playbackSpeed));
748
+ el.playbackRate = playbackRate;
744
749
  }
745
- }, [playbackSpeed]);
750
+ }, [playbackRate]);
746
751
  React6.useEffect(() => {
747
752
  const el = mediaRef.current;
748
753
  if (!el) {
@@ -925,7 +930,7 @@ function PresentationMediaController({
925
930
  }
926
931
  function renderMediaElement(element, mediaDataUrls, options) {
927
932
  if (element.type !== "media") {
928
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunk3GNSGGY2_js.translationsEn["pptx.media.title"] });
933
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkBXAK3JFM_js.translationsEn["pptx.media.title"] });
929
934
  }
930
935
  const mediaType = element.mediaType;
931
936
  const mediaPath = element.mediaPath;
@@ -933,10 +938,11 @@ function renderMediaElement(element, mediaDataUrls, options) {
933
938
  const dataUrl = element.mediaData ?? (mediaPath ? mediaDataUrls.get(mediaPath) : void 0);
934
939
  const trimFragment = buildTrimFragment(element);
935
940
  const posterUrl = element.posterFrameData ?? void 0;
936
- const shouldLoop = element.loop === true;
941
+ const shouldLoop = chunkTDUDH7S4_js.mediaPlaybackAttributes(element).loop;
937
942
  const shouldAutoPlay = options?.autoPlay === true || element.autoPlay === true;
938
943
  const isFullScreen = options?.fullScreen === true;
939
944
  const isPresentationMode = options?.isPresentationMode === true;
945
+ const showTransport = options?.showTransport ?? !isPresentationMode;
940
946
  if (isPresentationMode && shouldAutoPlay && element.playAcrossSlides && element.mediaType === "audio" && dataUrl && !element.mediaData) {
941
947
  const trimStartSec = element.trimStartMs !== void 0 ? element.trimStartMs / 1e3 : 0;
942
948
  registerPersistentAudio(
@@ -955,7 +961,7 @@ function renderMediaElement(element, mediaDataUrls, options) {
955
961
  "img",
956
962
  {
957
963
  src: posterUrl,
958
- alt: chunk3GNSGGY2_js.translationsEn["pptx.media.posterAlt"],
964
+ alt: chunkBXAK3JFM_js.translationsEn["pptx.media.posterAlt"],
959
965
  className: "w-full h-full object-contain opacity-50"
960
966
  }
961
967
  ),
@@ -976,7 +982,7 @@ function renderMediaElement(element, mediaDataUrls, options) {
976
982
  ]
977
983
  }
978
984
  ),
979
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-white/60", children: chunk3GNSGGY2_js.translationsEn["pptx.media.notFound"] })
985
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-white/60", children: chunkBXAK3JFM_js.translationsEn["pptx.media.notFound"] })
980
986
  ] })
981
987
  ] });
982
988
  }
@@ -1005,7 +1011,8 @@ function renderMediaElement(element, mediaDataUrls, options) {
1005
1011
  shouldLoop,
1006
1012
  shouldAutoPlay,
1007
1013
  isFullScreen,
1008
- isPresentationMode
1014
+ isPresentationMode,
1015
+ showTransport
1009
1016
  }
1010
1017
  )
1011
1018
  }
@@ -1017,7 +1024,7 @@ function renderMediaElement(element, mediaDataUrls, options) {
1017
1024
  "img",
1018
1025
  {
1019
1026
  src: posterUrl,
1020
- alt: chunk3GNSGGY2_js.translationsEn["pptx.media.videoPosterAlt"],
1027
+ alt: chunkBXAK3JFM_js.translationsEn["pptx.media.videoPosterAlt"],
1021
1028
  className: "w-full h-full object-contain"
1022
1029
  }
1023
1030
  ),
@@ -1074,7 +1081,7 @@ function renderMediaElement(element, mediaDataUrls, options) {
1074
1081
  mediaMimeType,
1075
1082
  shouldLoop,
1076
1083
  shouldAutoPlay,
1077
- isPresentationMode
1084
+ showTransport
1078
1085
  }
1079
1086
  )
1080
1087
  }
@@ -1106,7 +1113,7 @@ function renderMediaElement(element, mediaDataUrls, options) {
1106
1113
 
1107
1114
  // src/viewer/utils/text-utils.tsx
1108
1115
  function getTextStyleForElement(element, fallbackColor) {
1109
- return chunkPJUQQF3I_js.buildTextBlockStyle(element, { fallbackColor });
1116
+ return chunkTDUDH7S4_js.buildTextBlockStyle(element, { fallbackColor });
1110
1117
  }
1111
1118
 
1112
1119
  // src/viewer/utils/text-layout.tsx
@@ -1131,13 +1138,13 @@ function computeTabSize(tabStops, defaultTabSize) {
1131
1138
  return avgGap > 0 ? `${Math.round(avgGap)}px` : fromDefault;
1132
1139
  }
1133
1140
  function getTextLayoutStyle(element) {
1134
- if (!chunkPJUQQF3I_js.hasTextProperties(element)) {
1141
+ if (!chunkTDUDH7S4_js.hasTextProperties(element)) {
1135
1142
  return {};
1136
1143
  }
1137
1144
  const verticalAlign = element.textStyle?.vAlign || "top";
1138
- const writingMode = chunkPJUQQF3I_js.toCssWritingMode(element.textStyle?.textDirection);
1139
- const textOrientation = chunkPJUQQF3I_js.toCssTextOrientation(element.textStyle?.textDirection);
1140
- const verticalDirection = chunkPJUQQF3I_js.toCssVerticalDirection(element.textStyle?.textDirection);
1145
+ const writingMode = chunkTDUDH7S4_js.toCssWritingMode(element.textStyle?.textDirection);
1146
+ const textOrientation = chunkTDUDH7S4_js.toCssTextOrientation(element.textStyle?.textDirection);
1147
+ const verticalDirection = chunkTDUDH7S4_js.toCssVerticalDirection(element.textStyle?.textDirection);
1141
1148
  const parsedColumnCount = Number(element.textStyle?.columnCount);
1142
1149
  const columnCount = Number.isFinite(parsedColumnCount) ? Math.max(1, Math.min(16, Math.round(parsedColumnCount))) : 1;
1143
1150
  const hasColumns = columnCount > 1;
@@ -1145,7 +1152,7 @@ function getTextLayoutStyle(element) {
1145
1152
  const tabStops = element.textStyle?.tabStops;
1146
1153
  const tabSize = computeTabSize(tabStops, element.textStyle?.defaultTabSize);
1147
1154
  const textWrapNone = element.textStyle?.textWrap === "none";
1148
- const hasParagraphIndents = chunkPJUQQF3I_js.hasTextProperties(element) && element.paragraphIndents && element.paragraphIndents.length > 0;
1155
+ const hasParagraphIndents = chunkTDUDH7S4_js.hasTextProperties(element) && element.paragraphIndents && element.paragraphIndents.length > 0;
1149
1156
  const paragraphMarginLeft = element.textStyle?.paragraphMarginLeft;
1150
1157
  const paragraphIndent = element.textStyle?.paragraphIndent;
1151
1158
  const marginLeft = !hasParagraphIndents && typeof paragraphMarginLeft === "number" && paragraphMarginLeft !== 0 ? paragraphMarginLeft : void 0;
@@ -1154,7 +1161,7 @@ function getTextLayoutStyle(element) {
1154
1161
  const bodyBottom = element.textStyle?.bodyInsetBottom ?? DEFAULT_BODY_INSET_TB_PX;
1155
1162
  const parsedColumnSpacing = Number(element.textStyle?.columnSpacing);
1156
1163
  const columnGap = Number.isFinite(parsedColumnSpacing) && parsedColumnSpacing > 0 ? `${parsedColumnSpacing}px` : "0.75em";
1157
- const kinsokuStyles = chunkPJUQQF3I_js.getKinsokuLineBreakStyles(element.textStyle);
1164
+ const kinsokuStyles = chunkTDUDH7S4_js.getKinsokuLineBreakStyles(element.textStyle);
1158
1165
  if (hasColumns) {
1159
1166
  return {
1160
1167
  display: "block",
@@ -1201,10 +1208,10 @@ function getTextLayoutStyle(element) {
1201
1208
 
1202
1209
  // src/viewer/utils/text-effects.tsx
1203
1210
  function buildTextFillCss2(style) {
1204
- return chunkPJUQQF3I_js.buildTextFillCss(style);
1211
+ return chunkTDUDH7S4_js.buildTextFillCss(style);
1205
1212
  }
1206
1213
  function buildTextBody3DSceneStyle2(textStyle) {
1207
- return chunkPJUQQF3I_js.buildTextBody3DSceneStyle(textStyle);
1214
+ return chunkTDUDH7S4_js.buildTextBody3DSceneStyle(textStyle);
1208
1215
  }
1209
1216
 
1210
1217
  // src/viewer/utils/text-warp-css.tsx
@@ -1389,13 +1396,13 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
1389
1396
  if (!subElementAnimStates || subElementAnimStates.size === 0) {
1390
1397
  return renderedSegments;
1391
1398
  }
1392
- const paraKey = `${elementId}${chunkPJUQQF3I_js.TEXT_BUILD_ID_SEP}p${paraIndex}`;
1399
+ const paraKey = `${elementId}${chunkTDUDH7S4_js.TEXT_BUILD_ID_SEP}p${paraIndex}`;
1393
1400
  const paraState = subElementAnimStates.get(paraKey);
1394
1401
  if (paraState) {
1395
1402
  const style = buildAnimStyle(paraState);
1396
1403
  return /* @__PURE__ */ jsxRuntime.jsx("span", { "data-anim-id": paraKey, style: { display: "inline", ...style }, children: renderedSegments }, paraKey);
1397
1404
  }
1398
- const spec = chunkPJUQQF3I_js.buildTextBuildSpec(
1405
+ const spec = chunkTDUDH7S4_js.buildTextBuildSpec(
1399
1406
  elementId,
1400
1407
  paraIndex,
1401
1408
  paraSegments.map((entry) => ({ text: entry.segment.text, style: entry })),
@@ -1413,7 +1420,7 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
1413
1420
  "span",
1414
1421
  {
1415
1422
  "data-anim-id": span.animId,
1416
- style: chunkPJUQQF3I_js.textBuildSpanStyle(span),
1423
+ style: chunkTDUDH7S4_js.textBuildSpanStyle(span),
1417
1424
  children: content
1418
1425
  },
1419
1426
  span.animId
@@ -1557,10 +1564,10 @@ function renderScriptAwareText(text, needsScriptFonts, scriptFonts, baseFontFami
1557
1564
  if (!needsScriptFonts || !text) {
1558
1565
  return text;
1559
1566
  }
1560
- const runs = chunkPJUQQF3I_js.segmentByScript(text);
1567
+ const runs = chunkTDUDH7S4_js.segmentByScript(text);
1561
1568
  if (runs.length <= 1) {
1562
1569
  if (runs.length === 1) {
1563
- const font = chunkPJUQQF3I_js.resolveFontForScript(runs[0].script, scriptFonts);
1570
+ const font = chunkTDUDH7S4_js.resolveFontForScript(runs[0].script, scriptFonts);
1564
1571
  if (font && font !== baseFontFamily) {
1565
1572
  return /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontFamily: font }, children: text });
1566
1573
  }
@@ -1568,7 +1575,7 @@ function renderScriptAwareText(text, needsScriptFonts, scriptFonts, baseFontFami
1568
1575
  return text;
1569
1576
  }
1570
1577
  return runs.map((run, i) => {
1571
- const font = chunkPJUQQF3I_js.resolveFontForScript(run.script, scriptFonts);
1578
+ const font = chunkTDUDH7S4_js.resolveFontForScript(run.script, scriptFonts);
1572
1579
  if (!font || font === baseFontFamily) {
1573
1580
  return /* @__PURE__ */ jsxRuntime.jsx(React6__default.default.Fragment, { children: run.text }, `${keyPrefix}-r${i}`);
1574
1581
  }
@@ -1640,8 +1647,8 @@ function renderSegmentContent(elementId, segmentIndex, textValue, lines, needsSc
1640
1647
  );
1641
1648
  }
1642
1649
  function renderEquationSegment(elementId, segmentIndex, equationXml, equationNumber) {
1643
- const mathml = chunkPJUQQF3I_js.convertOmmlToMathMl(equationXml);
1644
- const safeMathml = mathml ? chunkPJUQQF3I_js.sanitizeMathMl(mathml) : "";
1650
+ const mathml = chunkTDUDH7S4_js.convertOmmlToMathMl(equationXml);
1651
+ const safeMathml = mathml ? chunkTDUDH7S4_js.sanitizeMathMl(mathml) : "";
1645
1652
  const equationContent = safeMathml ? /* @__PURE__ */ jsxRuntime.jsx(
1646
1653
  "span",
1647
1654
  {
@@ -1651,7 +1658,7 @@ function renderEquationSegment(elementId, segmentIndex, equationXml, equationNum
1651
1658
  },
1652
1659
  dangerouslySetInnerHTML: { __html: safeMathml }
1653
1660
  }
1654
- ) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-block px-1 py-0.5 rounded text-xs bg-gray-200/20 text-gray-400 italic", children: chunk3GNSGGY2_js.translationsEn["pptx.textSegment.equationFallback"] });
1661
+ ) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-block px-1 py-0.5 rounded text-xs bg-gray-200/20 text-gray-400 italic", children: chunkBXAK3JFM_js.translationsEn["pptx.textSegment.equationFallback"] });
1655
1662
  if (equationNumber) {
1656
1663
  return /* @__PURE__ */ jsxRuntime.jsxs(
1657
1664
  "span",
@@ -1691,7 +1698,7 @@ function renderEquationSegment(elementId, segmentIndex, equationXml, equationNum
1691
1698
  return /* @__PURE__ */ jsxRuntime.jsx("span", { children: equationContent }, `${elementId}-seg-${segmentIndex}`);
1692
1699
  }
1693
1700
  function renderPictureBullet(elementId, segmentIndex, bulletInfo, baseFontSize) {
1694
- const picture = chunkPJUQQF3I_js.resolvePictureBullet(bulletInfo, baseFontSize) ?? {
1701
+ const picture = chunkTDUDH7S4_js.resolvePictureBullet(bulletInfo, baseFontSize) ?? {
1695
1702
  sizePx: baseFontSize,
1696
1703
  fallbackMarker: "\u2022",
1697
1704
  accessibleLabel: "Bullet"
@@ -1742,7 +1749,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1742
1749
  }
1743
1750
  const segmentStyle = segment.style || {};
1744
1751
  const rawText = bulletInfo && typeof bulletHangPx === "number" ? (segment.text || "").trimEnd() : segment.text || "";
1745
- const textValue = chunkPJUQQF3I_js.substituteFieldText(rawText, segment.fieldType, fieldContext);
1752
+ const textValue = chunkTDUDH7S4_js.substituteFieldText(rawText, segment.fieldType, fieldContext);
1746
1753
  const lines = textValue.split("\n");
1747
1754
  const textDecorationTokens = [];
1748
1755
  if (segmentStyle.underline || segmentStyle.hyperlink) {
@@ -1752,8 +1759,8 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1752
1759
  textDecorationTokens.push("line-through");
1753
1760
  }
1754
1761
  const isDoubleStrike = segmentStyle.strikethrough && segmentStyle.strikeType === "dblStrike";
1755
- const resolvedSegmentColor = segmentStyle.hyperlink ? chunkPJUQQF3I_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, HYPERLINK_COLOR) : chunkPJUQQF3I_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, fallbackColor);
1756
- const underlineDecoration = chunkPJUQQF3I_js.resolveUnderlineDecorationStyle(
1762
+ const resolvedSegmentColor = segmentStyle.hyperlink ? chunkTDUDH7S4_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, HYPERLINK_COLOR) : chunkTDUDH7S4_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, fallbackColor);
1763
+ const underlineDecoration = chunkTDUDH7S4_js.resolveUnderlineDecorationStyle(
1757
1764
  Boolean(isDoubleStrike),
1758
1765
  segmentStyle.underlineStyle
1759
1766
  );
@@ -1763,20 +1770,20 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1763
1770
  const letterSpacing = typeof segmentStyle.characterSpacing === "number" && segmentStyle.characterSpacing !== 0 ? `${segmentStyle.characterSpacing / 100 * (96 / 72)}px` : void 0;
1764
1771
  const textFillStyles = buildTextFillCss2(segmentStyle);
1765
1772
  const rawFontSize = segmentStyle.fontSize || element.textStyle?.fontSize || DEFAULT_TEXT_FONT_SIZE;
1766
- const autoFitScale = chunkPJUQQF3I_js.resolveAutoFitFontScale(element.textStyle);
1773
+ const autoFitScale = chunkTDUDH7S4_js.resolveAutoFitFontScale(element.textStyle);
1767
1774
  const baseFontSize = rawFontSize * autoFitScale;
1768
1775
  const baselineShift = baselineFraction !== 0 ? `${baselineFraction * baseFontSize}px` : void 0;
1769
1776
  const baseFontSizePt = baseFontSize * (72 / 96);
1770
1777
  const fontKerning = typeof segmentStyle.kerning === "number" ? segmentStyle.kerning === 0 ? "none" : baseFontSizePt >= segmentStyle.kerning / 100 ? "normal" : "none" : void 0;
1771
1778
  const rawFontFamily = segmentStyle.fontFamily || element.textStyle?.fontFamily;
1772
- const baseFontFamily = rawFontFamily ? chunkPJUQQF3I_js.getSubstituteFontFamily(rawFontFamily) : DEFAULT_FONT_FAMILY;
1779
+ const baseFontFamily = rawFontFamily ? chunkTDUDH7S4_js.getSubstituteFontFamily(rawFontFamily) : DEFAULT_FONT_FAMILY;
1773
1780
  const scriptFonts = {
1774
1781
  latin: baseFontFamily,
1775
1782
  eastAsia: segmentStyle.eastAsiaFont || element.textStyle?.eastAsiaFont || baseFontFamily,
1776
1783
  complexScript: segmentStyle.complexScriptFont || element.textStyle?.complexScriptFont || baseFontFamily,
1777
1784
  symbol: segmentStyle.symbolFont || element.textStyle?.symbolFont || baseFontFamily
1778
1785
  };
1779
- const needsScriptFonts = chunkPJUQQF3I_js.hasDistinctScriptFonts(scriptFonts);
1786
+ const needsScriptFonts = chunkTDUDH7S4_js.hasDistinctScriptFonts(scriptFonts);
1780
1787
  const spanStyle = {
1781
1788
  color: resolvedSegmentColor,
1782
1789
  fontSize: baseFontSize * baselineFontScale,
@@ -1794,15 +1801,15 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1794
1801
  fontVariantCaps: segmentStyle.textCaps === "small" ? "small-caps" : void 0,
1795
1802
  letterSpacing,
1796
1803
  fontKerning,
1797
- backgroundColor: textFillStyles ? void 0 : segmentStyle.highlightColor ? chunkPJUQQF3I_js.normalizeHexColor(segmentStyle.highlightColor, "transparent") : void 0,
1804
+ backgroundColor: textFillStyles ? void 0 : segmentStyle.highlightColor ? chunkTDUDH7S4_js.normalizeHexColor(segmentStyle.highlightColor, "transparent") : void 0,
1798
1805
  ...textFillStyles,
1799
- textDecorationColor: segmentStyle.underlineColor ? chunkPJUQQF3I_js.normalizeHexColor(segmentStyle.underlineColor, void 0) : void 0,
1800
- WebkitTextStroke: segmentStyle.textOutlineWidth && segmentStyle.textOutlineColor ? `${segmentStyle.textOutlineWidth}px ${chunkPJUQQF3I_js.normalizeHexColor(segmentStyle.textOutlineColor, "#000000")}` : segmentStyle.textOutlineWidth ? `${segmentStyle.textOutlineWidth}px currentColor` : void 0,
1806
+ textDecorationColor: segmentStyle.underlineColor ? chunkTDUDH7S4_js.normalizeHexColor(segmentStyle.underlineColor, void 0) : void 0,
1807
+ WebkitTextStroke: segmentStyle.textOutlineWidth && segmentStyle.textOutlineColor ? `${segmentStyle.textOutlineWidth}px ${chunkTDUDH7S4_js.normalizeHexColor(segmentStyle.textOutlineColor, "#000000")}` : segmentStyle.textOutlineWidth ? `${segmentStyle.textOutlineWidth}px currentColor` : void 0,
1801
1808
  paintOrder: segmentStyle.textOutlineWidth ? "stroke fill" : void 0,
1802
- textShadow: chunkPJUQQF3I_js.buildTextShadowCss(segmentStyle),
1803
- filter: chunkPJUQQF3I_js.buildTextRunFilterChain(segmentStyle),
1804
- opacity: chunkPJUQQF3I_js.getTextAlphaOpacity(segmentStyle),
1805
- WebkitBoxReflect: chunkPJUQQF3I_js.buildTextReflectionCss(segmentStyle)
1809
+ textShadow: chunkTDUDH7S4_js.buildTextShadowCss(segmentStyle),
1810
+ filter: chunkTDUDH7S4_js.buildTextRunFilterChain(segmentStyle),
1811
+ opacity: chunkTDUDH7S4_js.getTextAlphaOpacity(segmentStyle),
1812
+ WebkitBoxReflect: chunkTDUDH7S4_js.buildTextReflectionCss(segmentStyle)
1806
1813
  };
1807
1814
  const runRtl = segmentStyle.rtl;
1808
1815
  if (runRtl !== void 0 && runRtl !== paragraphRtl) {
@@ -1822,7 +1829,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1822
1829
  spanStyle.fontSize = baseFontSize * (bulletInfo.sizePercent / 100) * baselineFontScale;
1823
1830
  }
1824
1831
  if (bulletInfo.color) {
1825
- spanStyle.color = chunkPJUQQF3I_js.normalizeHexColor(bulletInfo.color, resolvedSegmentColor);
1832
+ spanStyle.color = chunkTDUDH7S4_js.normalizeHexColor(bulletInfo.color, resolvedSegmentColor);
1826
1833
  }
1827
1834
  if (typeof bulletHangPx === "number" && bulletHangPx > 0) {
1828
1835
  spanStyle.display = "inline-block";
@@ -1867,7 +1874,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1867
1874
  textAlign: segment.rubyAlignment === "l" ? "left" : segment.rubyAlignment === "r" ? "right" : segment.rubyAlignment === "dist" || segment.rubyAlignment === "distCat" || segment.rubyAlignment === "distLetter" ? "justify" : "center"
1868
1875
  };
1869
1876
  if (segment.rubyStyle?.color) {
1870
- rubyStyle.color = chunkPJUQQF3I_js.normalizeHexColor(segment.rubyStyle.color, resolvedSegmentColor);
1877
+ rubyStyle.color = chunkTDUDH7S4_js.normalizeHexColor(segment.rubyStyle.color, resolvedSegmentColor);
1871
1878
  }
1872
1879
  innerContent = /* @__PURE__ */ jsxRuntime.jsxs("ruby", { children: [
1873
1880
  baseContent,
@@ -1962,7 +1969,7 @@ function groupSegmentsIntoParagraphs(segments) {
1962
1969
  return paragraphs;
1963
1970
  }
1964
1971
  function renderTextSegments(element, fallbackColor, emptyFallback, findHighlights, onHyperlinkClick, fieldContext, subElementAnimStates, segmentOverrides, requireCtrlClick) {
1965
- if (!chunkPJUQQF3I_js.hasTextProperties(element)) {
1972
+ if (!chunkTDUDH7S4_js.hasTextProperties(element)) {
1966
1973
  return emptyFallback || null;
1967
1974
  }
1968
1975
  const effectiveSegments = segmentOverrides ?? element.textSegments;
@@ -1983,10 +1990,10 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
1983
1990
  return element.text || emptyFallback || "";
1984
1991
  }
1985
1992
  const paragraphs = groupSegmentsIntoParagraphs(effectiveSegments);
1986
- const paragraphIndents = chunkPJUQQF3I_js.hasTextProperties(element) ? element.paragraphIndents : void 0;
1987
- const elementRtl = chunkPJUQQF3I_js.hasTextProperties(element) ? element.textStyle?.rtl : void 0;
1988
- const elementAlign = chunkPJUQQF3I_js.hasTextProperties(element) ? element.textStyle?.align : void 0;
1989
- const bodyStyle = chunkPJUQQF3I_js.hasTextProperties(element) ? element.textStyle : void 0;
1993
+ const paragraphIndents = chunkTDUDH7S4_js.hasTextProperties(element) ? element.paragraphIndents : void 0;
1994
+ const elementRtl = chunkTDUDH7S4_js.hasTextProperties(element) ? element.textStyle?.rtl : void 0;
1995
+ const elementAlign = chunkTDUDH7S4_js.hasTextProperties(element) ? element.textStyle?.align : void 0;
1996
+ const bodyStyle = chunkTDUDH7S4_js.hasTextProperties(element) ? element.textStyle : void 0;
1990
1997
  const spaceFirstLast = bodyStyle?.spaceFirstLastParagraph !== false;
1991
1998
  return paragraphs.map(({ entries: paraSegments, terminator }, paraIndex) => {
1992
1999
  const paraIndent = paragraphIndents?.[paraIndex];
@@ -2001,14 +2008,14 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
2001
2008
  return Boolean(segment.text) && segment.text.trim().length > 0;
2002
2009
  });
2003
2010
  const hasBullet = bulletInfo && !bulletInfo.none && hasVisibleTextContent;
2004
- const paraRtl = chunkPJUQQF3I_js.resolveParagraphRtl(paraSegments, elementRtl);
2011
+ const paraRtl = chunkTDUDH7S4_js.resolveParagraphRtl(paraSegments, elementRtl);
2005
2012
  const isRtlParagraph = paraRtl === true;
2006
- const paraAlign = chunkPJUQQF3I_js.resolveParagraphAlign(paraSegments, elementAlign);
2007
- const cssTextAlign = chunkPJUQQF3I_js.resolveCssTextAlign(paraAlign, isRtlParagraph);
2013
+ const paraAlign = chunkTDUDH7S4_js.resolveParagraphAlign(paraSegments, elementAlign);
2014
+ const cssTextAlign = chunkTDUDH7S4_js.resolveCssTextAlign(paraAlign, isRtlParagraph);
2008
2015
  const paraMarginLeft = isRtlParagraph ? void 0 : rawMarginLeft;
2009
2016
  const paraMarginRight = isRtlParagraph ? rawMarginLeft : void 0;
2010
2017
  const paraTextIndent = rawTextIndent;
2011
- const paraKinsokuStyle = chunkPJUQQF3I_js.getKinsokuLineBreakStyles(firstSeg?.segment.style);
2018
+ const paraKinsokuStyle = chunkTDUDH7S4_js.getKinsokuLineBreakStyles(firstSeg?.segment.style);
2012
2019
  const hasParaKinsoku = Object.keys(paraKinsokuStyle).length > 0;
2013
2020
  const paraProps = effectiveSegments[firstSeg?.globalIndex ?? -1]?.paragraphProperties ?? (paraSegments.length === 0 ? terminator?.paragraphProperties : void 0);
2014
2021
  const spacing = resolveParagraphSpacing({
@@ -2018,7 +2025,7 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
2018
2025
  isLast: paraIndex === paragraphs.length - 1,
2019
2026
  spaceFirstLast
2020
2027
  });
2021
- const strutFontSize = chunkPJUQQF3I_js.resolveParagraphStrutFontSize(
2028
+ const strutFontSize = chunkTDUDH7S4_js.resolveParagraphStrutFontSize(
2022
2029
  paraSegments.length > 0 ? paraSegments.map(({ segment }) => segment) : terminator ? [terminator] : [],
2023
2030
  bodyStyle?.fontSize
2024
2031
  );
@@ -2122,13 +2129,13 @@ function hexToRgbUnit(hex) {
2122
2129
  };
2123
2130
  }
2124
2131
  function getDuotoneColors(element) {
2125
- if (!chunkPJUQQF3I_js.isImageLikeElement(element)) {
2132
+ if (!chunkTDUDH7S4_js.isImageLikeElement(element)) {
2126
2133
  return void 0;
2127
2134
  }
2128
2135
  return element.imageEffects?.duotone;
2129
2136
  }
2130
2137
  function buildLineShadowCss(element) {
2131
- if (!chunkPJUQQF3I_js.hasShapeProperties(element)) {
2138
+ if (!chunkTDUDH7S4_js.hasShapeProperties(element)) {
2132
2139
  return void 0;
2133
2140
  }
2134
2141
  const ss = element.shapeStyle;
@@ -2139,13 +2146,13 @@ function buildLineShadowCss(element) {
2139
2146
  const offsetY = typeof ss.lineShadowOffsetY === "number" ? ss.lineShadowOffsetY : 2;
2140
2147
  const blur = typeof ss.lineShadowBlur === "number" ? Math.max(0, ss.lineShadowBlur) : 4;
2141
2148
  const opacity = typeof ss.lineShadowOpacity === "number" ? Math.max(0, Math.min(1, ss.lineShadowOpacity)) : 0.35;
2142
- return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${chunkPJUQQF3I_js.colorWithOpacity(
2143
- chunkPJUQQF3I_js.normalizeHexColor(ss.lineShadowColor, "#000000"),
2149
+ return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${chunkTDUDH7S4_js.colorWithOpacity(
2150
+ chunkTDUDH7S4_js.normalizeHexColor(ss.lineShadowColor, "#000000"),
2144
2151
  opacity
2145
2152
  )}`;
2146
2153
  }
2147
2154
  function buildLineGlowFilter(element) {
2148
- if (!chunkPJUQQF3I_js.hasShapeProperties(element)) {
2155
+ if (!chunkTDUDH7S4_js.hasShapeProperties(element)) {
2149
2156
  return void 0;
2150
2157
  }
2151
2158
  const ss = element.shapeStyle;
@@ -2154,7 +2161,7 @@ function buildLineGlowFilter(element) {
2154
2161
  }
2155
2162
  const glowOpacity = typeof ss.lineGlowOpacity === "number" ? ss.lineGlowOpacity : 0.75;
2156
2163
  const glowRad = Math.round(Math.max(0, ss.lineGlowRadius));
2157
- const glowCol = chunkPJUQQF3I_js.colorWithOpacity(chunkPJUQQF3I_js.normalizeHexColor(ss.lineGlowColor, "#ffff00"), glowOpacity);
2164
+ const glowCol = chunkTDUDH7S4_js.colorWithOpacity(chunkTDUDH7S4_js.normalizeHexColor(ss.lineGlowColor, "#ffff00"), glowOpacity);
2158
2165
  return `drop-shadow(0 0 ${glowRad}px ${glowCol})`;
2159
2166
  }
2160
2167
  function mapDagBlendModeToCss(blend) {
@@ -2178,7 +2185,7 @@ function getDagDuotoneFilterId(elementId) {
2178
2185
  return `dag-duotone-${elementId}`;
2179
2186
  }
2180
2187
  function hasDagDuotoneEffect(element) {
2181
- if (!chunkPJUQQF3I_js.hasShapeProperties(element)) {
2188
+ if (!chunkTDUDH7S4_js.hasShapeProperties(element)) {
2182
2189
  return false;
2183
2190
  }
2184
2191
  return Boolean(element.shapeStyle?.dagDuotone);
@@ -2241,7 +2248,7 @@ function getRoundRectRadiusPx2(element) {
2241
2248
 
2242
2249
  // src/viewer/utils/shape-visual-3d.ts
2243
2250
  function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elementHeight) {
2244
- return chunkPJUQQF3I_js.build3DExtrusionData(
2251
+ return chunkTDUDH7S4_js.build3DExtrusionData(
2245
2252
  shape3d,
2246
2253
  scene3d,
2247
2254
  fillColor,
@@ -2250,7 +2257,7 @@ function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elemen
2250
2257
  );
2251
2258
  }
2252
2259
  function apply3dEffects2(base, scene3d, shape3d, fillColorFallback) {
2253
- chunkPJUQQF3I_js.apply3dEffects(base, scene3d, shape3d, fillColorFallback);
2260
+ chunkTDUDH7S4_js.apply3dEffects(base, scene3d, shape3d, fillColorFallback);
2254
2261
  }
2255
2262
 
2256
2263
  // src/viewer/utils/vector-subpath-paint.ts
@@ -2259,7 +2266,7 @@ function toHexByte(value) {
2259
2266
  return clamped.toString(16).padStart(2, "0");
2260
2267
  }
2261
2268
  function shiftHex(hex, factor, towardsWhite) {
2262
- const channels = chunkPJUQQF3I_js.hexToRgbChannels(hex);
2269
+ const channels = chunkTDUDH7S4_js.hexToRgbChannels(hex);
2263
2270
  if (!channels) {
2264
2271
  return hex;
2265
2272
  }
@@ -2285,13 +2292,13 @@ function buildCustomSubpathPaints(subpaths, hasFill, fillColor, fillOpacity) {
2285
2292
  const fillOff = subpath.fillMode === "none" || !hasFill;
2286
2293
  return {
2287
2294
  d: subpath.d,
2288
- fill: fillOff ? "none" : chunkPJUQQF3I_js.colorWithOpacity(adjustFillForMode(fillColor, subpath.fillMode), fillOpacity),
2295
+ fill: fillOff ? "none" : chunkTDUDH7S4_js.colorWithOpacity(adjustFillForMode(fillColor, subpath.fillMode), fillOpacity),
2289
2296
  stroked: subpath.stroke !== false
2290
2297
  };
2291
2298
  });
2292
2299
  }
2293
2300
  function getStrokeOnlyPresetPaths(element) {
2294
- if (element.type !== "shape" || !chunkPJUQQF3I_js.hasShapeProperties(element)) {
2301
+ if (element.type !== "shape" || !chunkTDUDH7S4_js.hasShapeProperties(element)) {
2295
2302
  return void 0;
2296
2303
  }
2297
2304
  const shapeType = element.shapeType;
@@ -2301,7 +2308,7 @@ function getStrokeOnlyPresetPaths(element) {
2301
2308
  if (element.pathData) {
2302
2309
  return void 0;
2303
2310
  }
2304
- const result = chunkPJUQQF3I_js.evaluatePresetShape(
2311
+ const result = chunkTDUDH7S4_js.evaluatePresetShape(
2305
2312
  shapeType,
2306
2313
  Math.max(element.width, 1),
2307
2314
  Math.max(element.height, 1),
@@ -2319,43 +2326,43 @@ function getGradientTilingCss(style) {
2319
2326
  if (!style || style.fillMode !== "gradient") {
2320
2327
  return void 0;
2321
2328
  }
2322
- const isStructuredLinear = (style.fillGradientType || "linear") === "linear" && chunkPJUQQF3I_js.sanitizeGradientStops(style.fillGradientStops).length > 0;
2329
+ const isStructuredLinear = (style.fillGradientType || "linear") === "linear" && chunkTDUDH7S4_js.sanitizeGradientStops(style.fillGradientStops).length > 0;
2323
2330
  if (isStructuredLinear) {
2324
- const flip = chunkPJUQQF3I_js.getGradientTileFlipCss(style.fillGradientFlip);
2331
+ const flip = chunkTDUDH7S4_js.getGradientTileFlipCss(style.fillGradientFlip);
2325
2332
  if (flip) {
2326
2333
  return flip;
2327
2334
  }
2328
2335
  }
2329
- return chunkPJUQQF3I_js.getGradientTileRectCss(style.fillGradientTileRect);
2336
+ return chunkTDUDH7S4_js.getGradientTileRectCss(style.fillGradientTileRect);
2330
2337
  }
2331
2338
  function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeColor, animatesFill, animatesStroke) {
2332
- if (!chunkPJUQQF3I_js.hasShapeProperties(element)) {
2339
+ if (!chunkTDUDH7S4_js.hasShapeProperties(element)) {
2333
2340
  return {};
2334
2341
  }
2335
2342
  const normalizedShapeType = getShapeType(element.shapeType);
2336
- const clipPath = chunkPJUQQF3I_js.getResolvedShapeClipPath(element);
2343
+ const clipPath = chunkTDUDH7S4_js.getResolvedShapeClipPath(element);
2337
2344
  const rendersCustomVectorPath = (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;
2338
2345
  const rendersStrokeOnlyPreset = Boolean(getStrokeOnlyPresetPaths(element));
2339
2346
  const fillOpacity = element.shapeStyle?.fillOpacity;
2340
2347
  const strokeOpacity = element.shapeStyle?.strokeOpacity;
2341
- const strokeDash = chunkPJUQQF3I_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2342
- const fillGradient = chunkPJUQQF3I_js.buildCssGradientFromShapeStyle(element.shapeStyle, {
2348
+ const strokeDash = chunkTDUDH7S4_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2349
+ const fillGradient = chunkTDUDH7S4_js.buildCssGradientFromShapeStyle(element.shapeStyle, {
2343
2350
  rotation: element.rotation,
2344
2351
  width: element.width,
2345
2352
  height: element.height
2346
2353
  }) || element.shapeStyle?.fillGradient;
2347
- const shadowCss = chunkPJUQQF3I_js.buildShadowCssFromShapeStyle(element.shapeStyle);
2348
- const innerShadowCss = chunkPJUQQF3I_js.buildInnerShadowCssFromShapeStyle(element.shapeStyle);
2349
- const resolvedFillColor = chunkPJUQQF3I_js.colorWithOpacity(fillColor, fillOpacity);
2350
- const resolvedStrokeColor = chunkPJUQQF3I_js.colorWithOpacity(strokeColor, strokeOpacity);
2354
+ const shadowCss = chunkTDUDH7S4_js.buildShadowCssFromShapeStyle(element.shapeStyle);
2355
+ const innerShadowCss = chunkTDUDH7S4_js.buildInnerShadowCssFromShapeStyle(element.shapeStyle);
2356
+ const resolvedFillColor = chunkTDUDH7S4_js.colorWithOpacity(fillColor, fillOpacity);
2357
+ const resolvedStrokeColor = chunkTDUDH7S4_js.colorWithOpacity(strokeColor, strokeOpacity);
2351
2358
  const ss = element.shapeStyle;
2352
2359
  const gradientTiling = getGradientTilingCss(ss);
2353
- const paintsGradientOutline = chunkPJUQQF3I_js.suppressesCssBorder(element);
2360
+ const paintsGradientOutline = chunkTDUDH7S4_js.suppressesCssBorder(element);
2354
2361
  const hasFillOverlayColor = Boolean(
2355
2362
  ss?.dagFillOverlayColor && ss.dagFillOverlayColor !== "transparent"
2356
2363
  );
2357
2364
  const combinedShadowParts = [];
2358
- const multiLayerShadow = chunkPJUQQF3I_js.buildMultiLayerShadowCss(element.shapeStyle);
2365
+ const multiLayerShadow = chunkTDUDH7S4_js.buildMultiLayerShadowCss(element.shapeStyle);
2359
2366
  if (multiLayerShadow) {
2360
2367
  combinedShadowParts.push(multiLayerShadow);
2361
2368
  } else if (shadowCss) {
@@ -2364,7 +2371,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2364
2371
  if (innerShadowCss) {
2365
2372
  combinedShadowParts.push(innerShadowCss);
2366
2373
  }
2367
- const glowBoxShadow = chunkPJUQQF3I_js.buildGlowBoxShadow(ss?.glowColor, ss?.glowRadius, ss?.glowOpacity);
2374
+ const glowBoxShadow = chunkTDUDH7S4_js.buildGlowBoxShadow(ss?.glowColor, ss?.glowRadius, ss?.glowOpacity);
2368
2375
  if (glowBoxShadow) {
2369
2376
  combinedShadowParts.push(glowBoxShadow);
2370
2377
  }
@@ -2372,7 +2379,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2372
2379
  if (lineShadow) {
2373
2380
  combinedShadowParts.push(lineShadow);
2374
2381
  }
2375
- const compoundLineShadow = chunkPJUQQF3I_js.getCompoundLineBoxShadow(
2382
+ const compoundLineShadow = chunkTDUDH7S4_js.getCompoundLineBoxShadow(
2376
2383
  element.shapeStyle?.compoundLine,
2377
2384
  strokeWidth,
2378
2385
  resolvedStrokeColor
@@ -2385,11 +2392,11 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2385
2392
  if (ss?.glowColor && ss.glowColor !== "transparent" && ss.glowRadius) {
2386
2393
  const glowOpacity = typeof ss.glowOpacity === "number" ? ss.glowOpacity : 0.75;
2387
2394
  const glowRad = Math.round(Math.max(0, ss.glowRadius));
2388
- const glowCol = chunkPJUQQF3I_js.colorWithOpacity(chunkPJUQQF3I_js.normalizeHexColor(ss.glowColor, "#ffff00"), glowOpacity);
2395
+ const glowCol = chunkTDUDH7S4_js.colorWithOpacity(chunkTDUDH7S4_js.normalizeHexColor(ss.glowColor, "#ffff00"), glowOpacity);
2389
2396
  filterParts.push(`drop-shadow(0 0 ${glowRad}px ${glowCol})`);
2390
2397
  }
2391
2398
  if (typeof ss?.softEdgeRadius === "number" && ss.softEdgeRadius > 0) {
2392
- filterParts.push(`url(#${chunkPJUQQF3I_js.getSoftEdgeFilterId(element.id)})`);
2399
+ filterParts.push(`url(#${chunkTDUDH7S4_js.getSoftEdgeFilterId(element.id)})`);
2393
2400
  }
2394
2401
  if (typeof ss?.blurRadius === "number" && ss.blurRadius > 0) {
2395
2402
  filterParts.push(`blur(${Math.round(ss.blurRadius)}px)`);
@@ -2398,13 +2405,13 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2398
2405
  if (lineGlowCss) {
2399
2406
  filterParts.push(lineGlowCss);
2400
2407
  }
2401
- const dagFilter = chunkPJUQQF3I_js.getEffectDagFilter(ss, element.id);
2408
+ const dagFilter = chunkTDUDH7S4_js.getEffectDagFilter(ss, element.id);
2402
2409
  if (dagFilter) {
2403
2410
  filterParts.push(dagFilter);
2404
2411
  }
2405
2412
  const lineJoinCss = ss?.lineJoin === "round" ? "round" : ss?.lineJoin === "bevel" ? "bevel" : ss?.lineJoin === "miter" ? "miter" : void 0;
2406
2413
  const miterLimitCss = ss?.lineJoin === "miter" && typeof ss?.miterLimit === "number" ? Math.max(ss.miterLimit / 1e5, 1) : void 0;
2407
- const patternFill = chunkPJUQQF3I_js.buildPatternFillCss(element.shapeStyle);
2414
+ const patternFill = chunkTDUDH7S4_js.buildPatternFillCss(element.shapeStyle);
2408
2415
  const imageFillUrl = ss?.fillMode === "image" && ss.fillImageUrl ? ss.fillImageUrl : void 0;
2409
2416
  const imageFillMode = ss?.fillImageMode || "stretch";
2410
2417
  let reflectCss;
@@ -2416,7 +2423,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2416
2423
  const endOpacity = typeof ss.reflectionEndOpacity === "number" ? ss.reflectionEndOpacity : 0;
2417
2424
  const fadeLength = typeof ss.reflectionEndPosition === "number" ? Math.round(ss.reflectionEndPosition * Math.max(element.height, 1)) : 100;
2418
2425
  const blurRadius = typeof ss.reflectionBlurRadius === "number" ? ss.reflectionBlurRadius : 0;
2419
- reflectCss = chunkPJUQQF3I_js.buildReflectionCss(distance, startOpacity, endOpacity, fadeLength, blurRadius);
2426
+ reflectCss = chunkTDUDH7S4_js.buildReflectionCss(distance, startOpacity, endOpacity, fadeLength, blurRadius);
2420
2427
  }
2421
2428
  }
2422
2429
  const base = {
@@ -2462,9 +2469,9 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2462
2469
  // path following the shape's geometry, because a CSS border can only take
2463
2470
  // one colour. Keeping the border too would draw the parser's averaged
2464
2471
  // solid underneath the gradient.
2465
- borderWidth: strokeWidth > 0 && !paintsGradientOutline ? chunkPJUQQF3I_js.getCompoundLineBorderWidth(ss?.compoundLine, strokeWidth) : 0,
2472
+ borderWidth: strokeWidth > 0 && !paintsGradientOutline ? chunkTDUDH7S4_js.getCompoundLineBorderWidth(ss?.compoundLine, strokeWidth) : 0,
2466
2473
  borderColor: strokeWidth > 0 && !paintsGradientOutline ? resolvedStrokeColor : void 0,
2467
- borderStyle: strokeWidth > 0 && !paintsGradientOutline ? chunkPJUQQF3I_js.getCssBorderDashStyle(strokeDash, ss?.compoundLine) : void 0,
2474
+ borderStyle: strokeWidth > 0 && !paintsGradientOutline ? chunkTDUDH7S4_js.getCssBorderDashStyle(strokeDash, ss?.compoundLine) : void 0,
2468
2475
  strokeLinejoin: lineJoinCss,
2469
2476
  strokeMiterlimit: miterLimitCss,
2470
2477
  strokeLinecap: ss?.lineCap === "rnd" ? "round" : ss?.lineCap === "sq" ? "square" : ss?.lineCap === "flat" ? "butt" : void 0
@@ -2520,7 +2527,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2520
2527
  borderWidth: 0,
2521
2528
  borderTopWidth: Math.max(strokeWidth, 2),
2522
2529
  borderTopColor: resolvedStrokeColor,
2523
- borderTopStyle: chunkPJUQQF3I_js.getCssBorderDashStyle(strokeDash)
2530
+ borderTopStyle: chunkTDUDH7S4_js.getCssBorderDashStyle(strokeDash)
2524
2531
  };
2525
2532
  }
2526
2533
  if (normalizedShapeType === "cylinder") {
@@ -2534,13 +2541,13 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2534
2541
  function getConnectorAdjustment(element, key, fallback) {
2535
2542
  const direct = element.shapeAdjustments?.[key];
2536
2543
  if (typeof direct === "number" && Number.isFinite(direct)) {
2537
- return chunkPJUQQF3I_js.clampUnitInterval(direct / 1e5);
2544
+ return chunkTDUDH7S4_js.clampUnitInterval(direct / 1e5);
2538
2545
  }
2539
2546
  const fallbackKey = element.shapeAdjustments?.adj;
2540
2547
  if (typeof fallbackKey === "number" && Number.isFinite(fallbackKey)) {
2541
- return chunkPJUQQF3I_js.clampUnitInterval(fallbackKey / 1e5);
2548
+ return chunkTDUDH7S4_js.clampUnitInterval(fallbackKey / 1e5);
2542
2549
  }
2543
- return chunkPJUQQF3I_js.clampUnitInterval(fallback);
2550
+ return chunkTDUDH7S4_js.clampUnitInterval(fallback);
2544
2551
  }
2545
2552
  function getConnectorPathGeometry(element) {
2546
2553
  const width = Math.max(element.width, 1);
@@ -2677,11 +2684,11 @@ function strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray) {
2677
2684
  strokePaint,
2678
2685
  strokeWidth,
2679
2686
  dashArray,
2680
- lineCap: chunkPJUQQF3I_js.svgLineCap(shapeStyle?.lineCap),
2687
+ lineCap: chunkTDUDH7S4_js.svgLineCap(shapeStyle?.lineCap),
2681
2688
  lineJoin,
2682
2689
  miterLimit,
2683
- offsets: chunkPJUQQF3I_js.getCompoundLineOffsets(shapeStyle?.compoundLine, strokeWidth),
2684
- widths: chunkPJUQQF3I_js.getCompoundLineWidths(shapeStyle?.compoundLine, strokeWidth)
2690
+ offsets: chunkTDUDH7S4_js.getCompoundLineOffsets(shapeStyle?.compoundLine, strokeWidth),
2691
+ widths: chunkTDUDH7S4_js.getCompoundLineWidths(shapeStyle?.compoundLine, strokeWidth)
2685
2692
  };
2686
2693
  }
2687
2694
  function strokeStrands(d, keyBase, ctx) {
@@ -2729,9 +2736,9 @@ function gradientDefs(gradient) {
2729
2736
  }
2730
2737
  function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredPaths, shapeStyle, hasFill, fillColor, fillOpacity, strokePaint, strokeWidth, dashArray, animatesFill = false, gradient) {
2731
2738
  const ctx = strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray);
2732
- const subpaths = structuredPaths && structuredPaths.length > 0 ? chunkPJUQQF3I_js.customGeometryPathsToSvgSubpaths(structuredPaths, pathWidth, pathHeight) : void 0;
2739
+ const subpaths = structuredPaths && structuredPaths.length > 0 ? chunkTDUDH7S4_js.customGeometryPathsToSvgSubpaths(structuredPaths, pathWidth, pathHeight) : void 0;
2733
2740
  const needsPerSubpath = subpaths !== void 0 && subpaths.some((sp) => sp.fillMode && sp.fillMode !== "norm" || sp.stroke === false);
2734
- const gradientPaint = gradient ? chunkPJUQQF3I_js.svgGradientFillRef(gradient) : void 0;
2741
+ const gradientPaint = gradient ? chunkTDUDH7S4_js.svgGradientFillRef(gradient) : void 0;
2735
2742
  const nodes = [];
2736
2743
  if (subpaths && needsPerSubpath) {
2737
2744
  const paints = buildCustomSubpathPaints(subpaths, hasFill, fillColor, fillOpacity);
@@ -2763,7 +2770,7 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
2763
2770
  "path",
2764
2771
  {
2765
2772
  d: pathData,
2766
- fill: animatesFill ? "inherit" : gradientPaint ?? chunkPJUQQF3I_js.colorWithOpacity(fillColor, fillOpacity),
2773
+ fill: animatesFill ? "inherit" : gradientPaint ?? chunkTDUDH7S4_js.colorWithOpacity(fillColor, fillOpacity),
2767
2774
  stroke: "none",
2768
2775
  vectorEffect: "non-scaling-stroke"
2769
2776
  },
@@ -2808,14 +2815,14 @@ function renderStrokeOnlyPreset(presetPaths, width, height, shapeStyle, strokePa
2808
2815
  );
2809
2816
  }
2810
2817
  function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor, animatesFill, animatesStroke) {
2811
- if (!chunkPJUQQF3I_js.hasShapeProperties(element)) {
2818
+ if (!chunkTDUDH7S4_js.hasShapeProperties(element)) {
2812
2819
  return null;
2813
2820
  }
2814
2821
  const normalizedType = (element.shapeType || "").toLowerCase();
2815
- const fillPaint = animatesFill ? "inherit" : chunkPJUQQF3I_js.colorWithOpacity(fillColor, element.shapeStyle?.fillOpacity);
2816
- const strokePaint = animatesStroke ? "inherit" : chunkPJUQQF3I_js.colorWithOpacity(strokeColor, element.shapeStyle?.strokeOpacity);
2817
- const dashType = chunkPJUQQF3I_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2818
- const dashArray = chunkPJUQQF3I_js.getSvgStrokeDasharray(
2822
+ const fillPaint = animatesFill ? "inherit" : chunkTDUDH7S4_js.colorWithOpacity(fillColor, element.shapeStyle?.fillOpacity);
2823
+ const strokePaint = animatesStroke ? "inherit" : chunkTDUDH7S4_js.colorWithOpacity(strokeColor, element.shapeStyle?.strokeOpacity);
2824
+ const dashType = chunkTDUDH7S4_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2825
+ const dashArray = chunkTDUDH7S4_js.getSvgStrokeDasharray(
2819
2826
  dashType,
2820
2827
  Math.max(strokeWidth, 1),
2821
2828
  element.shapeStyle?.customDashSegments
@@ -2896,21 +2903,21 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2896
2903
  // container's `background-image` is suppressed for custom geometry, so
2897
2904
  // without this the shape fell back to the parser's representative solid
2898
2905
  // and lost every fade (issue #132).
2899
- chunkPJUQQF3I_js.buildSvgGradientDef(element.shapeStyle, element.id)
2906
+ chunkTDUDH7S4_js.buildSvgGradientDef(element.shapeStyle, element.id)
2900
2907
  );
2901
2908
  }
2902
- if (chunkPJUQQF3I_js.isCalloutShape(normalizedType)) {
2909
+ if (chunkTDUDH7S4_js.isCalloutShape(normalizedType)) {
2903
2910
  const width = Math.max(element.width, 1);
2904
2911
  const height = Math.max(element.height, 1);
2905
- const geometry = chunkPJUQQF3I_js.getCalloutLeaderLineGeometry(
2912
+ const geometry = chunkTDUDH7S4_js.getCalloutLeaderLineGeometry(
2906
2913
  normalizedType,
2907
2914
  width,
2908
2915
  height,
2909
2916
  element.shapeAdjustments
2910
2917
  );
2911
2918
  if (geometry && geometry.points.length >= 2) {
2912
- const leaderPath = chunkPJUQQF3I_js.buildCalloutLeaderLineSvgPath(geometry);
2913
- const bounds = chunkPJUQQF3I_js.getCalloutViewBoxBounds(width, height, geometry);
2919
+ const leaderPath = chunkTDUDH7S4_js.buildCalloutLeaderLineSvgPath(geometry);
2920
+ const bounds = chunkTDUDH7S4_js.getCalloutViewBoxBounds(width, height, geometry);
2914
2921
  const lineStroke = Math.max(strokeWidth, 1);
2915
2922
  const offsetLeft = bounds.minX;
2916
2923
  const offsetTop = bounds.minY;
@@ -2973,10 +2980,10 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2973
2980
  const endArrowW = element.shapeStyle?.connectorEndArrowWidth;
2974
2981
  const endArrowL = element.shapeStyle?.connectorEndArrowLength;
2975
2982
  const compoundLine = element.shapeStyle?.compoundLine;
2976
- const connectorLineCap = chunkPJUQQF3I_js.svgLineCap(element.shapeStyle?.lineCap);
2983
+ const connectorLineCap = chunkTDUDH7S4_js.svgLineCap(element.shapeStyle?.lineCap);
2977
2984
  const hitTargetWidth = Math.max(strokeWidth * 3, 12);
2978
- const offsets = chunkPJUQQF3I_js.getCompoundLineOffsets(compoundLine, strokeWidth);
2979
- const widths = chunkPJUQQF3I_js.getCompoundLineWidths(compoundLine, strokeWidth);
2985
+ const offsets = chunkTDUDH7S4_js.getCompoundLineOffsets(compoundLine, strokeWidth);
2986
+ const widths = chunkTDUDH7S4_js.getCompoundLineWidths(compoundLine, strokeWidth);
2980
2987
  return /* @__PURE__ */ jsxRuntime.jsxs(
2981
2988
  "svg",
2982
2989
  {
@@ -3055,15 +3062,15 @@ function parseGradientFillCss(gradFill) {
3055
3062
  }
3056
3063
  const parsed = stops.map((gs) => {
3057
3064
  const pos = Number.parseInt(String(gs["@_pos"] || "0"), 10) / 1e3;
3058
- const color = chunkPJUQQF3I_js.parseDrawingColor(gs) ?? "#888888";
3059
- const opacity = chunkPJUQQF3I_js.parseDrawingColorOpacity(gs);
3060
- return { pos, color: chunkPJUQQF3I_js.colorWithOpacity(color, opacity) };
3065
+ const color = chunkTDUDH7S4_js.parseDrawingColor(gs) ?? "#888888";
3066
+ const opacity = chunkTDUDH7S4_js.parseDrawingColorOpacity(gs);
3067
+ return { pos, color: chunkTDUDH7S4_js.colorWithOpacity(color, opacity) };
3061
3068
  }).sort((a, b) => a.pos - b.pos);
3062
3069
  const stopStrings = parsed.map((s) => `${s.color} ${s.pos.toFixed(1)}%`).join(", ");
3063
3070
  const lin = gradFill["a:lin"];
3064
3071
  if (lin) {
3065
3072
  const angRaw = Number.parseInt(String(lin["@_ang"] || "0"), 10);
3066
- const angleDeg = Math.round(chunkPJUQQF3I_js.ooxmlGradientAngleToCssDegrees(angRaw / 6e4));
3073
+ const angleDeg = Math.round(chunkTDUDH7S4_js.ooxmlGradientAngleToCssDegrees(angRaw / 6e4));
3067
3074
  return `linear-gradient(${angleDeg}deg, ${stopStrings})`;
3068
3075
  }
3069
3076
  const path = gradFill["a:path"];
@@ -3098,8 +3105,8 @@ function parsePatternFillCss(pattFill) {
3098
3105
  if (!pattFill) {
3099
3106
  return void 0;
3100
3107
  }
3101
- const fgColor = chunkPJUQQF3I_js.parseDrawingColor(pattFill["a:fgClr"]) ?? "#000000";
3102
- const bgColor = chunkPJUQQF3I_js.parseDrawingColor(pattFill["a:bgClr"]) ?? "#ffffff";
3108
+ const fgColor = chunkTDUDH7S4_js.parseDrawingColor(pattFill["a:fgClr"]) ?? "#000000";
3109
+ const bgColor = chunkTDUDH7S4_js.parseDrawingColor(pattFill["a:bgClr"]) ?? "#ffffff";
3103
3110
  const preset = String(pattFill["@_prst"] || "ltDnDiag");
3104
3111
  switch (preset) {
3105
3112
  case "ltHorz":
@@ -3210,11 +3217,11 @@ function parseCellBorders(cellProperties) {
3210
3217
  const prstDash = ln["a:prstDash"];
3211
3218
  const dashVal = prstDash ? String(prstDash["@_val"] || "") : void 0;
3212
3219
  const cssBorderStyle = ooxmlDashToCss(dashVal);
3213
- const color = chunkPJUQQF3I_js.parseDrawingColor(ln["a:solidFill"]);
3220
+ const color = chunkTDUDH7S4_js.parseDrawingColor(ln["a:solidFill"]);
3214
3221
  if (color) {
3215
- const opacity = chunkPJUQQF3I_js.parseDrawingColorOpacity(ln["a:solidFill"]);
3222
+ const opacity = chunkTDUDH7S4_js.parseDrawingColorOpacity(ln["a:solidFill"]);
3216
3223
  const key = `${edge.prefix}`;
3217
- borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${chunkPJUQQF3I_js.colorWithOpacity(color, opacity)}`;
3224
+ borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${chunkTDUDH7S4_js.colorWithOpacity(color, opacity)}`;
3218
3225
  }
3219
3226
  }
3220
3227
  return borderStyle;
@@ -3227,7 +3234,7 @@ function parseCellTextEffects(runProps) {
3227
3234
  const textShadowParts = [];
3228
3235
  const outerShdw = effectLst["a:outerShdw"];
3229
3236
  if (outerShdw) {
3230
- const shdwColor = chunkPJUQQF3I_js.parseDrawingColor(outerShdw);
3237
+ const shdwColor = chunkTDUDH7S4_js.parseDrawingColor(outerShdw);
3231
3238
  if (shdwColor) {
3232
3239
  const blurRad = Number.parseInt(String(outerShdw["@_blurRad"] || "0"), 10);
3233
3240
  const blurPx = blurRad > 0 ? Math.round(blurRad / 12700) : 0;
@@ -3245,7 +3252,7 @@ function parseCellTextEffects(runProps) {
3245
3252
  }
3246
3253
  const glow = effectLst["a:glow"];
3247
3254
  if (glow) {
3248
- const glowColor = chunkPJUQQF3I_js.parseDrawingColor(glow);
3255
+ const glowColor = chunkTDUDH7S4_js.parseDrawingColor(glow);
3249
3256
  if (glowColor) {
3250
3257
  const glowRad = Number.parseInt(String(glow["@_rad"] || "0"), 10);
3251
3258
  const glowPx = glowRad > 0 ? Math.round(glowRad / 12700) : 2;
@@ -3324,10 +3331,10 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
3324
3331
  if (runProps?.["@_u"] !== void 0) {
3325
3332
  cellStyle.textDecorationLine = runProps["@_u"] === "sng" ? "underline" : "none";
3326
3333
  }
3327
- const runColor = chunkPJUQQF3I_js.parseDrawingColor(runProps?.["a:solidFill"], schemeColorOverrides) || chunkPJUQQF3I_js.parseDrawingColor(runProps?.["a:highlight"], schemeColorOverrides);
3334
+ const runColor = chunkTDUDH7S4_js.parseDrawingColor(runProps?.["a:solidFill"], schemeColorOverrides) || chunkTDUDH7S4_js.parseDrawingColor(runProps?.["a:highlight"], schemeColorOverrides);
3328
3335
  if (runColor) {
3329
- const opacity = chunkPJUQQF3I_js.parseDrawingColorOpacity(runProps?.["a:solidFill"]);
3330
- cellStyle.color = chunkPJUQQF3I_js.colorWithOpacity(runColor, opacity);
3336
+ const opacity = chunkTDUDH7S4_js.parseDrawingColorOpacity(runProps?.["a:solidFill"]);
3337
+ cellStyle.color = chunkTDUDH7S4_js.colorWithOpacity(runColor, opacity);
3331
3338
  }
3332
3339
  const fontFamily = runProps?.["a:latin"]?.["@_typeface"] || runProps?.["a:ea"]?.["@_typeface"] || runProps?.["a:cs"]?.["@_typeface"];
3333
3340
  if (fontFamily) {
@@ -3337,15 +3344,15 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
3337
3344
  cellStyle.textAlign = parseParagraphAlignment(paragraphProperties["@_algn"]);
3338
3345
  }
3339
3346
  const cellProperties = cellXml["a:tcPr"];
3340
- const cellFill = chunkPJUQQF3I_js.parseDrawingColor(
3347
+ const cellFill = chunkTDUDH7S4_js.parseDrawingColor(
3341
3348
  cellProperties?.["a:solidFill"],
3342
3349
  schemeColorOverrides
3343
3350
  );
3344
3351
  if (cellFill) {
3345
- const opacity = chunkPJUQQF3I_js.parseDrawingColorOpacity(
3352
+ const opacity = chunkTDUDH7S4_js.parseDrawingColorOpacity(
3346
3353
  cellProperties?.["a:solidFill"]
3347
3354
  );
3348
- cellStyle.backgroundColor = chunkPJUQQF3I_js.colorWithOpacity(cellFill, opacity);
3355
+ cellStyle.backgroundColor = chunkTDUDH7S4_js.colorWithOpacity(cellFill, opacity);
3349
3356
  } else {
3350
3357
  const gradCss = parseGradientFillCss(cellProperties?.["a:gradFill"]);
3351
3358
  if (gradCss) {
@@ -3360,16 +3367,16 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
3360
3367
  const edgeBorders = parseCellBorders(cellProperties);
3361
3368
  Object.assign(cellStyle, edgeBorders);
3362
3369
  if (!cellStyle.borderLeftColor && !cellStyle.borderRightColor && !cellStyle.borderTopColor && !cellStyle.borderBottomColor) {
3363
- const borderColor = chunkPJUQQF3I_js.parseDrawingColor(
3370
+ const borderColor = chunkTDUDH7S4_js.parseDrawingColor(
3364
3371
  cellProperties?.["a:lnL"]?.["a:solidFill"],
3365
3372
  schemeColorOverrides
3366
- ) || chunkPJUQQF3I_js.parseDrawingColor(
3373
+ ) || chunkTDUDH7S4_js.parseDrawingColor(
3367
3374
  cellProperties?.["a:lnR"]?.["a:solidFill"],
3368
3375
  schemeColorOverrides
3369
- ) || chunkPJUQQF3I_js.parseDrawingColor(
3376
+ ) || chunkTDUDH7S4_js.parseDrawingColor(
3370
3377
  cellProperties?.["a:lnT"]?.["a:solidFill"],
3371
3378
  schemeColorOverrides
3372
- ) || chunkPJUQQF3I_js.parseDrawingColor(
3379
+ ) || chunkTDUDH7S4_js.parseDrawingColor(
3373
3380
  cellProperties?.["a:lnB"]?.["a:solidFill"],
3374
3381
  schemeColorOverrides
3375
3382
  );
@@ -3448,10 +3455,10 @@ function resolveTableStyleFillColor(fill, colorScheme) {
3448
3455
  }
3449
3456
  let color = base;
3450
3457
  if (fill.tint !== void 0 && fill.tint > 0) {
3451
- color = chunkPJUQQF3I_js.tintColor2(color, fill.tint / 1e5);
3458
+ color = chunkTDUDH7S4_js.tintColor2(color, fill.tint / 1e5);
3452
3459
  }
3453
3460
  if (fill.shade !== void 0 && fill.shade > 0) {
3454
- color = chunkPJUQQF3I_js.shadeColor2(color, 1 - fill.shade / 1e5);
3461
+ color = chunkTDUDH7S4_js.shadeColor2(color, 1 - fill.shade / 1e5);
3455
3462
  }
3456
3463
  return color;
3457
3464
  }
@@ -3476,7 +3483,7 @@ function applyTableStyleText(text, colorScheme, style, fontScheme) {
3476
3483
  style.fontFamily = text.fontFace;
3477
3484
  applied = true;
3478
3485
  } else {
3479
- const refFont = chunkPJUQQF3I_js.resolveFontRefIdx(text.fontRefIdx, fontScheme);
3486
+ const refFont = chunkTDUDH7S4_js.resolveFontRefIdx(text.fontRefIdx, fontScheme);
3480
3487
  if (refFont) {
3481
3488
  style.fontFamily = refFont;
3482
3489
  applied = true;
@@ -3487,10 +3494,10 @@ function applyTableStyleText(text, colorScheme, style, fontScheme) {
3487
3494
  if (base) {
3488
3495
  let color = base;
3489
3496
  if (text.fontTint !== void 0 && text.fontTint > 0) {
3490
- color = chunkPJUQQF3I_js.tintColor2(color, text.fontTint / 1e5);
3497
+ color = chunkTDUDH7S4_js.tintColor2(color, text.fontTint / 1e5);
3491
3498
  }
3492
3499
  if (text.fontShade !== void 0 && text.fontShade > 0) {
3493
- color = chunkPJUQQF3I_js.shadeColor2(color, 1 - text.fontShade / 1e5);
3500
+ color = chunkTDUDH7S4_js.shadeColor2(color, 1 - text.fontShade / 1e5);
3494
3501
  }
3495
3502
  style.color = color;
3496
3503
  applied = true;
@@ -3679,7 +3686,7 @@ function parseTableElementData(element, fallbackTextStyle) {
3679
3686
  };
3680
3687
  }
3681
3688
  function getCellDiagonalBorders2(style, tableData, pos, styleCtx) {
3682
- return chunkPJUQQF3I_js.getCellDiagonalBorders(style, tableData, pos, {
3689
+ return chunkTDUDH7S4_js.getCellDiagonalBorders(style, tableData, pos, {
3683
3690
  tableStyleMap: styleCtx?.tableStyleMap,
3684
3691
  colorScheme: styleCtx?.theme?.colorScheme,
3685
3692
  fontScheme: styleCtx?.theme?.fontScheme
@@ -3827,9 +3834,9 @@ function cellStyleToCss(style) {
3827
3834
  if (style.gradientFillCss) {
3828
3835
  css.background = style.gradientFillCss;
3829
3836
  } else if (style.fillMode === "pattern" && style.patternFillPreset) {
3830
- const fg = chunkPJUQQF3I_js.normalizeHexColor(style.patternFillForeground, "#000000");
3831
- const bg = chunkPJUQQF3I_js.normalizeHexColor(style.patternFillBackground, "#ffffff");
3832
- const svgPattern = chunkPJUQQF3I_js.getPatternSvg(style.patternFillPreset, fg, bg);
3837
+ const fg = chunkTDUDH7S4_js.normalizeHexColor(style.patternFillForeground, "#000000");
3838
+ const bg = chunkTDUDH7S4_js.normalizeHexColor(style.patternFillBackground, "#ffffff");
3839
+ const svgPattern = chunkTDUDH7S4_js.getPatternSvg(style.patternFillPreset, fg, bg);
3833
3840
  if (svgPattern) {
3834
3841
  const encoded = encodeURIComponent(svgPattern);
3835
3842
  css.backgroundImage = `url("data:image/svg+xml,${encoded}")`;
@@ -3905,7 +3912,7 @@ function cellStyleToCss(style) {
3905
3912
  if (edge.width || edge.color) {
3906
3913
  const w = edge.width ?? 1;
3907
3914
  const c = edge.color ?? style.borderColor ?? "#000000";
3908
- const s = chunkPJUQQF3I_js.ooxmlDashToCssBorderStyle(edge.dash);
3915
+ const s = chunkTDUDH7S4_js.ooxmlDashToCssBorderStyle(edge.dash);
3909
3916
  css[edge.prefix] = `${w}px ${s} ${c}`;
3910
3917
  }
3911
3918
  }
@@ -3936,7 +3943,7 @@ function cellStyleToCss(style) {
3936
3943
  css.textShadow = textShadowParts.join(", ");
3937
3944
  }
3938
3945
  if (style.cell3D) {
3939
- Object.assign(css, chunkPJUQQF3I_js.cell3DBevelCss(style.cell3D));
3946
+ Object.assign(css, chunkTDUDH7S4_js.cell3DBevelCss(style.cell3D));
3940
3947
  }
3941
3948
  return css;
3942
3949
  }
@@ -3950,7 +3957,7 @@ function TableResizeOverlay({
3950
3957
  const containerRef = React6.useRef(null);
3951
3958
  const [rowBounds, setRowBounds] = React6.useState([]);
3952
3959
  const dragRef = React6.useRef(null);
3953
- const colBoundaries = React6.useMemo(() => chunkPJUQQF3I_js.computeColumnBoundaries(columnWidths), [columnWidths]);
3960
+ const colBoundaries = React6.useMemo(() => chunkTDUDH7S4_js.computeColumnBoundaries(columnWidths), [columnWidths]);
3954
3961
  const measureRows = React6.useCallback(() => {
3955
3962
  const container = containerRef.current;
3956
3963
  if (!container) {
@@ -3997,11 +4004,11 @@ function TableResizeOverlay({
3997
4004
  const rect = containerRef.current.getBoundingClientRect();
3998
4005
  if (drag.type === "col" && drag.initialWidths && onResizeColumns) {
3999
4006
  const deltaProp = (e.clientX - drag.startPos) / rect.width;
4000
- onResizeColumns(chunkPJUQQF3I_js.computeResizedColumnWidths(drag.initialWidths, drag.index, deltaProp));
4007
+ onResizeColumns(chunkTDUDH7S4_js.computeResizedColumnWidths(drag.initialWidths, drag.index, deltaProp));
4001
4008
  } else if (drag.type === "row" && onResizeRow) {
4002
4009
  const deltaY = e.clientY - drag.startPos;
4003
- const newHeight = chunkPJUQQF3I_js.computeResizedRowHeight(
4004
- drag.initialRowHeight ?? chunkPJUQQF3I_js.DEFAULT_ROW_HEIGHT,
4010
+ const newHeight = chunkTDUDH7S4_js.computeResizedRowHeight(
4011
+ drag.initialRowHeight ?? chunkTDUDH7S4_js.DEFAULT_ROW_HEIGHT,
4005
4012
  deltaY
4006
4013
  );
4007
4014
  onResizeRow(drag.index, newHeight);
@@ -4039,7 +4046,7 @@ function TableResizeOverlay({
4039
4046
  e.stopPropagation();
4040
4047
  const table = containerRef.current?.querySelector("table");
4041
4048
  const tr = table?.querySelectorAll("tbody > tr")[index];
4042
- const actualHeight = tr?.offsetHeight ?? chunkPJUQQF3I_js.DEFAULT_ROW_HEIGHT;
4049
+ const actualHeight = tr?.offsetHeight ?? chunkTDUDH7S4_js.DEFAULT_ROW_HEIGHT;
4043
4050
  document.body.style.cursor = "row-resize";
4044
4051
  document.body.style.userSelect = "none";
4045
4052
  dragRef.current = {
@@ -4087,7 +4094,7 @@ function renderTableFromTableData(element, textStyle, options) {
4087
4094
  }
4088
4095
  const first = selectedCell.selectedCells[0];
4089
4096
  const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
4090
- return chunkPJUQQF3I_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableData);
4097
+ return chunkTDUDH7S4_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableData);
4091
4098
  })();
4092
4099
  return /* @__PURE__ */ jsxRuntime.jsx(
4093
4100
  TableResizeOverlay,
@@ -4120,7 +4127,7 @@ function renderTableFromTableData(element, textStyle, options) {
4120
4127
  return null;
4121
4128
  }
4122
4129
  const isCellSelected = selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex;
4123
- const isInMultiSelection = chunkPJUQQF3I_js.isCellInRect(rowIndex, cellIndex, selectionRect);
4130
+ const isInMultiSelection = chunkTDUDH7S4_js.isCellInRect(rowIndex, cellIndex, selectionRect);
4124
4131
  const isCellEditing = isCellSelected && selectedCell?.isEditing;
4125
4132
  const diag = getCellDiagonalBorders2(
4126
4133
  cell.style,
@@ -4150,7 +4157,7 @@ function renderTableFromTableData(element, textStyle, options) {
4150
4157
  }
4151
4158
  event.stopPropagation();
4152
4159
  if (event.shiftKey && selectedCell) {
4153
- const rect = chunkPJUQQF3I_js.computeSelectionRect(
4160
+ const rect = chunkTDUDH7S4_js.computeSelectionRect(
4154
4161
  selectedCell.rowIndex,
4155
4162
  selectedCell.columnIndex,
4156
4163
  rowIndex,
@@ -4160,7 +4167,7 @@ function renderTableFromTableData(element, textStyle, options) {
4160
4167
  options?.onSelectCell?.({
4161
4168
  rowIndex: selectedCell.rowIndex,
4162
4169
  columnIndex: selectedCell.columnIndex,
4163
- selectedCells: chunkPJUQQF3I_js.rectToCells(rect)
4170
+ selectedCells: chunkTDUDH7S4_js.rectToCells(rect)
4164
4171
  });
4165
4172
  } else {
4166
4173
  options?.onSelectCell?.({
@@ -4222,7 +4229,7 @@ function renderTableElement(element, textStyle, options) {
4222
4229
  if (tableEl2.tableData && tableEl2.tableData.rows.length > 0) {
4223
4230
  return renderTableFromTableData(tableEl2, textStyle, options);
4224
4231
  }
4225
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunk3GNSGGY2_js.translationsEn["pptx.table.title"] });
4232
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkBXAK3JFM_js.translationsEn["pptx.table.title"] });
4226
4233
  }
4227
4234
  const selectedCell = options?.selectedCell || null;
4228
4235
  const isEditable = Boolean(options?.editable);
@@ -4237,7 +4244,7 @@ function renderTableElement(element, textStyle, options) {
4237
4244
  }
4238
4245
  const first = selectedCell.selectedCells[0];
4239
4246
  const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
4240
- return chunkPJUQQF3I_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableEl.tableData);
4247
+ return chunkTDUDH7S4_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableEl.tableData);
4241
4248
  })();
4242
4249
  const schemeOverrides = options?.styleCtx?.theme?.colorScheme ? options.styleCtx.theme.colorScheme : void 0;
4243
4250
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -4314,7 +4321,7 @@ function renderTableElement(element, textStyle, options) {
4314
4321
  "border px-1 py-0.5 align-top",
4315
4322
  isEditable && hasCellSelectionHandler ? "border-blue-200/70 cursor-cell" : "border-white/30",
4316
4323
  selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex ? "ring-1 ring-inset ring-blue-500" : null,
4317
- chunkPJUQQF3I_js.isCellInRect(rowIndex, cellIndex, xmlSelectionRect) && !(selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex) ? "bg-blue-500/15 ring-1 ring-inset ring-blue-400/50" : null
4324
+ chunkTDUDH7S4_js.isCellInRect(rowIndex, cellIndex, xmlSelectionRect) && !(selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex) ? "bg-blue-500/15 ring-1 ring-inset ring-blue-400/50" : null
4318
4325
  ),
4319
4326
  colSpan,
4320
4327
  rowSpan: rSpan,
@@ -4325,7 +4332,7 @@ function renderTableElement(element, textStyle, options) {
4325
4332
  }
4326
4333
  event.stopPropagation();
4327
4334
  if (event.shiftKey && selectedCell && tableEl.tableData) {
4328
- const rect = chunkPJUQQF3I_js.computeSelectionRect(
4335
+ const rect = chunkTDUDH7S4_js.computeSelectionRect(
4329
4336
  selectedCell.rowIndex,
4330
4337
  selectedCell.columnIndex,
4331
4338
  rowIndex,
@@ -4335,7 +4342,7 @@ function renderTableElement(element, textStyle, options) {
4335
4342
  options?.onSelectCell?.({
4336
4343
  rowIndex: selectedCell.rowIndex,
4337
4344
  columnIndex: selectedCell.columnIndex,
4338
- selectedCells: chunkPJUQQF3I_js.rectToCells(rect)
4345
+ selectedCells: chunkTDUDH7S4_js.rectToCells(rect)
4339
4346
  });
4340
4347
  } else {
4341
4348
  options?.onSelectCell?.({
@@ -4390,24 +4397,24 @@ function renderTableElement(element, textStyle, options) {
4390
4397
  }
4391
4398
  var LEGEND_ITEM_WIDTH = 80;
4392
4399
  function partAttrs(part) {
4393
- return part ? chunkPJUQQF3I_js.chartPartToAttrs(part) : void 0;
4400
+ return part ? chunkTDUDH7S4_js.chartPartToAttrs(part) : void 0;
4394
4401
  }
4395
4402
  function resolveReactPalette(chartData) {
4396
4403
  if (chartData.colorPalette && chartData.colorPalette.length > 0) {
4397
4404
  return chartData.colorPalette;
4398
4405
  }
4399
- return [...chunkPJUQQF3I_js.getChartStylePalette(chartData.style?.styleId)];
4406
+ return [...chunkTDUDH7S4_js.getChartStylePalette(chartData.style?.styleId)];
4400
4407
  }
4401
4408
  function buildReactChartViewModel(element) {
4402
4409
  if (element.type !== "chart" || !element.chartData) {
4403
- return chunkPJUQQF3I_js.buildChartViewModel(element);
4410
+ return chunkTDUDH7S4_js.buildChartViewModel(element);
4404
4411
  }
4405
4412
  const palette = resolveReactPalette(element.chartData);
4406
4413
  const themedElement = {
4407
4414
  ...element,
4408
4415
  chartData: { ...element.chartData, colorPalette: palette }
4409
4416
  };
4410
- return chunkPJUQQF3I_js.buildChartViewModel(themedElement);
4417
+ return chunkTDUDH7S4_js.buildChartViewModel(themedElement);
4411
4418
  }
4412
4419
  function renderPrimitive(prim, key) {
4413
4420
  switch (prim.kind) {
@@ -4796,7 +4803,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4796
4803
  const unmatchedRows = [];
4797
4804
  categories.forEach((cat, i) => {
4798
4805
  const value = values[i] ?? 0;
4799
- const code = chunkPJUQQF3I_js.resolveRegionCode(cat);
4806
+ const code = chunkTDUDH7S4_js.resolveRegionCode(cat);
4800
4807
  if (code) {
4801
4808
  regionValueMap.set(code, { value, label: cat });
4802
4809
  } else {
@@ -4834,8 +4841,8 @@ function renderMapChart(element, chartData, categoryLabels) {
4834
4841
  let fill = "#e2e8f0";
4835
4842
  let dataLabel = null;
4836
4843
  if (entry) {
4837
- const t = chunkPJUQQF3I_js.normalizeValue(entry.value, minVal, maxVal);
4838
- fill = chunkPJUQQF3I_js.sequentialColorScale(t);
4844
+ const t = chunkTDUDH7S4_js.normalizeValue(entry.value, minVal, maxVal);
4845
+ fill = chunkTDUDH7S4_js.sequentialColorScale(t);
4839
4846
  dataLabel = /* @__PURE__ */ jsxRuntime.jsx(
4840
4847
  "text",
4841
4848
  {
@@ -4846,7 +4853,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4846
4853
  fontWeight: 600,
4847
4854
  fill: "#1e293b",
4848
4855
  style: { pointerEvents: "none" },
4849
- children: chunkPJUQQF3I_js.formatAxisValue(entry.value)
4856
+ children: chunkTDUDH7S4_js.formatAxisValue(entry.value)
4850
4857
  },
4851
4858
  `${element.id}-map-dl-${region.code}`
4852
4859
  );
@@ -4864,7 +4871,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4864
4871
  opacity: 0.9,
4865
4872
  children: /* @__PURE__ */ jsxRuntime.jsxs("title", { children: [
4866
4873
  region.name,
4867
- entry ? `: ${chunkPJUQQF3I_js.formatAxisValue(entry.value)}` : ""
4874
+ entry ? `: ${chunkTDUDH7S4_js.formatAxisValue(entry.value)}` : ""
4868
4875
  ] })
4869
4876
  }
4870
4877
  ),
@@ -4902,7 +4909,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4902
4909
  fontSize: 7,
4903
4910
  fill: "#64748b",
4904
4911
  textAnchor: "middle",
4905
- children: chunkPJUQQF3I_js.formatAxisValue(minVal)
4912
+ children: chunkTDUDH7S4_js.formatAxisValue(minVal)
4906
4913
  },
4907
4914
  `${element.id}-map-legend-min`
4908
4915
  ),
@@ -4914,7 +4921,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4914
4921
  fontSize: 7,
4915
4922
  fill: "#64748b",
4916
4923
  textAnchor: "middle",
4917
- children: chunkPJUQQF3I_js.formatAxisValue(maxVal)
4924
+ children: chunkTDUDH7S4_js.formatAxisValue(maxVal)
4918
4925
  },
4919
4926
  `${element.id}-map-legend-max`
4920
4927
  )
@@ -4933,7 +4940,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4933
4940
  textAnchor: "middle",
4934
4941
  fontSize: 7,
4935
4942
  fill: "#94a3b8",
4936
- children: chunk3GNSGGY2_js.translationsEn["pptx.chart.additionalRegionsFallback"]
4943
+ children: chunkBXAK3JFM_js.translationsEn["pptx.chart.additionalRegionsFallback"]
4937
4944
  },
4938
4945
  `${element.id}-map-ft-hdr`
4939
4946
  )
@@ -4980,7 +4987,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4980
4987
  y,
4981
4988
  fontSize,
4982
4989
  fill: "#475569",
4983
- children: chunkPJUQQF3I_js.formatAxisValue(row.value)
4990
+ children: chunkTDUDH7S4_js.formatAxisValue(row.value)
4984
4991
  },
4985
4992
  `${element.id}-map-ft-val-${i}`
4986
4993
  )
@@ -5051,7 +5058,7 @@ function renderStackedBarChart(element, _chartData, _categoryLabels) {
5051
5058
 
5052
5059
  // src/viewer/utils/chart-overlay-utils.ts
5053
5060
  function sColor(series, idx) {
5054
- return chunkPJUQQF3I_js.seriesColor(series, idx);
5061
+ return chunkTDUDH7S4_js.seriesColor(series, idx);
5055
5062
  }
5056
5063
  function valToY(val, range, topY, bottomY) {
5057
5064
  const usable = bottomY - topY;
@@ -5590,7 +5597,7 @@ function renderLegend(id, style, series, layout, colorPalette) {
5590
5597
  width: 10,
5591
5598
  height: 10,
5592
5599
  rx: 2,
5593
- fill: chunkPJUQQF3I_js.seriesColor(s, i, style?.styleId, colorPalette)
5600
+ fill: chunkTDUDH7S4_js.seriesColor(s, i, style?.styleId, colorPalette)
5594
5601
  },
5595
5602
  `${id}-leg-r-${i}`
5596
5603
  )
@@ -5614,7 +5621,7 @@ function renderLegend(id, style, series, layout, colorPalette) {
5614
5621
  width: 10,
5615
5622
  height: 10,
5616
5623
  rx: 2,
5617
- fill: chunkPJUQQF3I_js.seriesColor(s, i, style?.styleId, colorPalette)
5624
+ fill: chunkTDUDH7S4_js.seriesColor(s, i, style?.styleId, colorPalette)
5618
5625
  }
5619
5626
  ),
5620
5627
  /* @__PURE__ */ jsxRuntime.jsx("text", { x: x + 14, y: cy + 8, fontSize: 9, fill: "#475569", children: s.name || `Series ${i + 1}` })
@@ -5627,9 +5634,9 @@ function renderGridlines(id, style, range, layout) {
5627
5634
  }
5628
5635
  const lines = [];
5629
5636
  if (range.logScale && range.logBase) {
5630
- const ticks = chunkPJUQQF3I_js.generateLogTicks(range);
5637
+ const ticks = chunkTDUDH7S4_js.generateLogTicks(range);
5631
5638
  ticks.forEach((tickVal, i) => {
5632
- const y = chunkPJUQQF3I_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
5639
+ const y = chunkTDUDH7S4_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
5633
5640
  lines.push(
5634
5641
  /* @__PURE__ */ jsxRuntime.jsx(
5635
5642
  "line",
@@ -5650,7 +5657,7 @@ function renderGridlines(id, style, range, layout) {
5650
5657
  const steps = 4;
5651
5658
  for (let i = 0; i <= steps; i++) {
5652
5659
  const val = range.min + range.span * i / steps;
5653
- const y = chunkPJUQQF3I_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5660
+ const y = chunkTDUDH7S4_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5654
5661
  lines.push(
5655
5662
  /* @__PURE__ */ jsxRuntime.jsx(
5656
5663
  "line",
@@ -5674,9 +5681,9 @@ function renderValueAxis(id, range, layout, axisFormatting) {
5674
5681
  const labels = [];
5675
5682
  const hasDisplayUnits = Boolean(axisFormatting?.displayUnits);
5676
5683
  if (range.logScale && range.logBase) {
5677
- const ticks = chunkPJUQQF3I_js.generateLogTicks(range);
5684
+ const ticks = chunkTDUDH7S4_js.generateLogTicks(range);
5678
5685
  ticks.forEach((tickVal, i) => {
5679
- const y = chunkPJUQQF3I_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
5686
+ const y = chunkTDUDH7S4_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
5680
5687
  labels.push(
5681
5688
  /* @__PURE__ */ jsxRuntime.jsx(
5682
5689
  "text",
@@ -5686,7 +5693,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
5686
5693
  textAnchor: "end",
5687
5694
  fontSize: 8,
5688
5695
  fill: "#64748b",
5689
- children: hasDisplayUnits ? chunkPJUQQF3I_js.formatAxisValueWithUnits(tickVal, axisFormatting) : chunkPJUQQF3I_js.formatAxisValue(tickVal)
5696
+ children: hasDisplayUnits ? chunkTDUDH7S4_js.formatAxisValueWithUnits(tickVal, axisFormatting) : chunkTDUDH7S4_js.formatAxisValue(tickVal)
5690
5697
  },
5691
5698
  `${id}-vaxis-log-${i}`
5692
5699
  )
@@ -5696,7 +5703,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
5696
5703
  const steps = 4;
5697
5704
  for (let i = 0; i <= steps; i++) {
5698
5705
  const val = range.min + range.span * i / steps;
5699
- const y = chunkPJUQQF3I_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5706
+ const y = chunkTDUDH7S4_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5700
5707
  labels.push(
5701
5708
  /* @__PURE__ */ jsxRuntime.jsx(
5702
5709
  "text",
@@ -5706,7 +5713,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
5706
5713
  textAnchor: "end",
5707
5714
  fontSize: 8,
5708
5715
  fill: "#64748b",
5709
- children: hasDisplayUnits ? chunkPJUQQF3I_js.formatAxisValueWithUnits(val, axisFormatting) : chunkPJUQQF3I_js.formatAxisValue(val)
5716
+ children: hasDisplayUnits ? chunkTDUDH7S4_js.formatAxisValueWithUnits(val, axisFormatting) : chunkTDUDH7S4_js.formatAxisValue(val)
5710
5717
  },
5711
5718
  `${id}-vaxis-${i}`
5712
5719
  )
@@ -5714,7 +5721,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
5714
5721
  }
5715
5722
  }
5716
5723
  if (hasDisplayUnits) {
5717
- const unitLabel = chunkPJUQQF3I_js.getDisplayUnitLabel(
5724
+ const unitLabel = chunkTDUDH7S4_js.getDisplayUnitLabel(
5718
5725
  axisFormatting.displayUnits,
5719
5726
  axisFormatting.displayUnitsLabel
5720
5727
  );
@@ -5789,7 +5796,7 @@ function renderZeroLine(id, range, layout) {
5789
5796
  if (range.min >= 0) {
5790
5797
  return null;
5791
5798
  }
5792
- const y = chunkPJUQQF3I_js.valueToY(0, range, layout.plotTop, layout.plotBottom);
5799
+ const y = chunkTDUDH7S4_js.valueToY(0, range, layout.plotTop, layout.plotBottom);
5793
5800
  return /* @__PURE__ */ jsxRuntime.jsx(
5794
5801
  "line",
5795
5802
  {
@@ -5813,7 +5820,7 @@ function renderSecondaryValueAxis(id, range, layout, axisFormatting) {
5813
5820
  const hasDisplayUnits = Boolean(axisFormatting?.displayUnits);
5814
5821
  for (let i = 0; i <= steps; i++) {
5815
5822
  const val = range.min + range.span * i / steps;
5816
- const y = chunkPJUQQF3I_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5823
+ const y = chunkTDUDH7S4_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5817
5824
  labels.push(
5818
5825
  /* @__PURE__ */ jsxRuntime.jsx(
5819
5826
  "text",
@@ -5825,7 +5832,7 @@ function renderSecondaryValueAxis(id, range, layout, axisFormatting) {
5825
5832
  fontFamily,
5826
5833
  fontWeight,
5827
5834
  fill: fontColor,
5828
- children: hasDisplayUnits ? chunkPJUQQF3I_js.formatAxisValueWithUnits(val, axisFormatting) : chunkPJUQQF3I_js.formatAxisValue(val)
5835
+ children: hasDisplayUnits ? chunkTDUDH7S4_js.formatAxisValueWithUnits(val, axisFormatting) : chunkTDUDH7S4_js.formatAxisValue(val)
5829
5836
  },
5830
5837
  `${id}-sec-vaxis-${i}`
5831
5838
  )
@@ -5849,7 +5856,7 @@ function renderSecondaryValueAxis(id, range, layout, axisFormatting) {
5849
5856
  );
5850
5857
  }
5851
5858
  if (hasDisplayUnits) {
5852
- const unitLabel = chunkPJUQQF3I_js.getDisplayUnitLabel(
5859
+ const unitLabel = chunkTDUDH7S4_js.getDisplayUnitLabel(
5853
5860
  axisFormatting.displayUnits,
5854
5861
  axisFormatting.displayUnitsLabel
5855
5862
  );
@@ -5880,7 +5887,7 @@ function renderSecondaryAxisTicks(id, range, layout) {
5880
5887
  const ticks = [];
5881
5888
  for (let i = 0; i <= steps; i++) {
5882
5889
  const val = range.min + range.span * i / steps;
5883
- const y = chunkPJUQQF3I_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5890
+ const y = chunkTDUDH7S4_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5884
5891
  ticks.push(
5885
5892
  /* @__PURE__ */ jsxRuntime.jsx(
5886
5893
  "line",
@@ -5907,7 +5914,7 @@ function renderSecondaryGridlines(id, range, layout, axisFormatting) {
5907
5914
  const gridColor = axisFormatting.majorGridlinesSpPr?.strokeColor ?? "#e2e8f0";
5908
5915
  for (let i = 0; i <= steps; i++) {
5909
5916
  const val = range.min + range.span * i / steps;
5910
- const y = chunkPJUQQF3I_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5917
+ const y = chunkTDUDH7S4_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5911
5918
  lines.push(
5912
5919
  /* @__PURE__ */ jsxRuntime.jsx(
5913
5920
  "line",
@@ -6025,7 +6032,7 @@ function renderChartDataTable(elementId, chartData, svgWidth) {
6025
6032
  showK && /* @__PURE__ */ jsxRuntime.jsx(
6026
6033
  "th",
6027
6034
  {
6028
- "aria-label": chunk3GNSGGY2_js.translationsEn["pptx.chart.rowLabelsAria"],
6035
+ "aria-label": chunkBXAK3JFM_js.translationsEn["pptx.chart.rowLabelsAria"],
6029
6036
  style: {
6030
6037
  padding: "1px 4px",
6031
6038
  fontWeight: 400,
@@ -6069,7 +6076,7 @@ function renderChartDataTable(elementId, chartData, svgWidth) {
6069
6076
  width: 8,
6070
6077
  height: 8,
6071
6078
  borderRadius: 2,
6072
- backgroundColor: chunkPJUQQF3I_js.seriesColor(
6079
+ backgroundColor: chunkTDUDH7S4_js.seriesColor(
6073
6080
  s,
6074
6081
  si,
6075
6082
  chartData.style?.styleId,
@@ -6108,8 +6115,8 @@ function renderChartDataTable(elementId, chartData, svgWidth) {
6108
6115
  function renderStockChart(element, chartData, categoryLabels) {
6109
6116
  const style = chartData.style;
6110
6117
  const legendPos = style?.legendPosition || "b";
6111
- const range = chunkPJUQQF3I_js.computeValueRangeForChart(chartData.series, chartData.axes);
6112
- const layout = chunkPJUQQF3I_js.computeLayout(element.width, element.height, style, true, legendPos);
6118
+ const range = chunkTDUDH7S4_js.computeValueRangeForChart(chartData.series, chartData.axes);
6119
+ const layout = chunkTDUDH7S4_js.computeLayout(element.width, element.height, style, true, legendPos);
6113
6120
  const catCount = Math.max(categoryLabels.length, 1);
6114
6121
  const barGroupWidth = layout.plotWidth / catCount;
6115
6122
  const candleWidth = barGroupWidth * 0.5;
@@ -6130,10 +6137,10 @@ function renderStockChart(element, chartData, categoryLabels) {
6130
6137
  const close = closeSeries.values[ci] ?? high;
6131
6138
  const isUp = close >= open;
6132
6139
  const cx = layout.plotLeft + barGroupWidth * ci + barGroupWidth / 2;
6133
- const highY = chunkPJUQQF3I_js.valueToY(high, range, layout.plotTop, layout.plotBottom);
6134
- const lowY = chunkPJUQQF3I_js.valueToY(low, range, layout.plotTop, layout.plotBottom);
6135
- const openY = chunkPJUQQF3I_js.valueToY(open, range, layout.plotTop, layout.plotBottom);
6136
- const closeY = chunkPJUQQF3I_js.valueToY(close, range, layout.plotTop, layout.plotBottom);
6140
+ const highY = chunkTDUDH7S4_js.valueToY(high, range, layout.plotTop, layout.plotBottom);
6141
+ const lowY = chunkTDUDH7S4_js.valueToY(low, range, layout.plotTop, layout.plotBottom);
6142
+ const openY = chunkTDUDH7S4_js.valueToY(open, range, layout.plotTop, layout.plotBottom);
6143
+ const closeY = chunkTDUDH7S4_js.valueToY(close, range, layout.plotTop, layout.plotBottom);
6137
6144
  elements.push(
6138
6145
  /* @__PURE__ */ jsxRuntime.jsx(
6139
6146
  "line",
@@ -6176,7 +6183,7 @@ function renderStockChart(element, chartData, categoryLabels) {
6176
6183
  textAnchor: "middle",
6177
6184
  fontSize: 7,
6178
6185
  fill: "#334155",
6179
- children: chunkPJUQQF3I_js.formatAxisValue(close)
6186
+ children: chunkTDUDH7S4_js.formatAxisValue(close)
6180
6187
  },
6181
6188
  `${element.id}-stock-dl-${ci}`
6182
6189
  )
@@ -6218,7 +6225,7 @@ function FailedToLoad() {
6218
6225
  var LazySurfaceChart3DScene = React6__default.default.lazy(
6219
6226
  async () => {
6220
6227
  try {
6221
- return await import('./SurfaceChart3DScene-BIOKIETC.js');
6228
+ return await import('./SurfaceChart3DScene-4VCO3DRP.js');
6222
6229
  } catch {
6223
6230
  return { default: FailedToLoad };
6224
6231
  }
@@ -6242,7 +6249,7 @@ var SurfaceChart3DErrorBoundary = class extends React6__default.default.Componen
6242
6249
  function buildSurfaceData(chartData, categoryLabels) {
6243
6250
  const rows = chartData.series.length;
6244
6251
  const cols = Math.max(categoryLabels.length, 1);
6245
- const range = chunkPJUQQF3I_js.computeValueRangeForChart(chartData.series, chartData.axes);
6252
+ const range = chunkTDUDH7S4_js.computeValueRangeForChart(chartData.series, chartData.axes);
6246
6253
  const heightMap = new Float32Array(rows * cols);
6247
6254
  const colorMap = new Float32Array(rows * cols * 3);
6248
6255
  for (let r = 0; r < rows; r++) {
@@ -6362,8 +6369,8 @@ function darkenRgb(r, g, b, factor) {
6362
6369
  function renderIsometricSurfaceChart(element, chartData, categoryLabels) {
6363
6370
  const style = chartData.style;
6364
6371
  const legendPos = style?.legendPosition || "b";
6365
- const layout = chunkPJUQQF3I_js.computeLayout(element.width, element.height, style, false, legendPos);
6366
- const range = chunkPJUQQF3I_js.computeValueRangeForChart(chartData.series, chartData.axes);
6372
+ const layout = chunkTDUDH7S4_js.computeLayout(element.width, element.height, style, false, legendPos);
6373
+ const range = chunkTDUDH7S4_js.computeValueRangeForChart(chartData.series, chartData.axes);
6367
6374
  const catCount = Math.max(categoryLabels.length, 1);
6368
6375
  const seriesCount = chartData.series.length;
6369
6376
  const cols = catCount - 1;
@@ -6453,8 +6460,8 @@ function renderIsometricSurfaceChart(element, chartData, categoryLabels) {
6453
6460
  function renderFlatSurfaceChart(element, chartData, categoryLabels) {
6454
6461
  const style = chartData.style;
6455
6462
  const legendPos = style?.legendPosition || "b";
6456
- const layout = chunkPJUQQF3I_js.computeLayout(element.width, element.height, style, true, legendPos);
6457
- const range = chunkPJUQQF3I_js.computeValueRangeForChart(chartData.series, chartData.axes);
6463
+ const layout = chunkTDUDH7S4_js.computeLayout(element.width, element.height, style, true, legendPos);
6464
+ const range = chunkTDUDH7S4_js.computeValueRangeForChart(chartData.series, chartData.axes);
6458
6465
  const catCount = Math.max(categoryLabels.length, 1);
6459
6466
  const seriesCount = chartData.series.length;
6460
6467
  const cellW = layout.plotWidth / Math.max(catCount - 1, 1);
@@ -6517,7 +6524,7 @@ function renderSurfaceChart(element, chartData, categoryLabels) {
6517
6524
  function renderTreemapChart(element, chartData, categoryLabels) {
6518
6525
  const style = chartData.style;
6519
6526
  const legendPos = style?.legendPosition || "b";
6520
- const layout = chunkPJUQQF3I_js.computeLayout(element.width, element.height, style, false, legendPos);
6527
+ const layout = chunkTDUDH7S4_js.computeLayout(element.width, element.height, style, false, legendPos);
6521
6528
  const allValues = chartData.series.flatMap((s) => s.values);
6522
6529
  const totalAbs = allValues.reduce((sum, v) => sum + Math.abs(v), 0) || 1;
6523
6530
  const rects = [];
@@ -6540,7 +6547,7 @@ function renderTreemapChart(element, chartData, categoryLabels) {
6540
6547
  y: curY,
6541
6548
  width: Math.max(w - 1, 1),
6542
6549
  height: Math.max(h - 1, 1),
6543
- fill: chunkPJUQQF3I_js.paletteColor(item.index, chartData.style?.styleId, chartData.colorPalette),
6550
+ fill: chunkTDUDH7S4_js.paletteColor(item.index, chartData.style?.styleId, chartData.colorPalette),
6544
6551
  rx: 2,
6545
6552
  opacity: 0.85
6546
6553
  },
@@ -6593,8 +6600,8 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
6593
6600
  const style = chartData.style;
6594
6601
  const legendPos = style?.legendPosition || "b";
6595
6602
  const values = chartData.series[0]?.values ?? [];
6596
- const range = chunkPJUQQF3I_js.computeValueRangeForChart(chartData.series, chartData.axes);
6597
- const layout = chunkPJUQQF3I_js.computeLayout(element.width, element.height, style, true, legendPos);
6603
+ const range = chunkTDUDH7S4_js.computeValueRangeForChart(chartData.series, chartData.axes);
6604
+ const layout = chunkTDUDH7S4_js.computeLayout(element.width, element.height, style, true, legendPos);
6598
6605
  const catCount = Math.max(categoryLabels.length, values.length, 1);
6599
6606
  const barWidth = layout.plotWidth / catCount * 0.6;
6600
6607
  const gap = layout.plotWidth / catCount * 0.2;
@@ -6605,8 +6612,8 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
6605
6612
  const isLast = i === values.length - 1;
6606
6613
  const startVal = isLast ? 0 : runningTotal;
6607
6614
  const endVal = isLast ? runningTotal + val : runningTotal + val;
6608
- const barStartY = chunkPJUQQF3I_js.valueToY(startVal, range, layout.plotTop, layout.plotBottom);
6609
- const barEndY = chunkPJUQQF3I_js.valueToY(endVal, range, layout.plotTop, layout.plotBottom);
6615
+ const barStartY = chunkTDUDH7S4_js.valueToY(startVal, range, layout.plotTop, layout.plotBottom);
6616
+ const barEndY = chunkTDUDH7S4_js.valueToY(endVal, range, layout.plotTop, layout.plotBottom);
6610
6617
  const x = layout.plotLeft + layout.plotWidth / catCount * i + gap;
6611
6618
  const y = Math.min(barStartY, barEndY);
6612
6619
  const h = Math.max(Math.abs(barEndY - barStartY), 1);
@@ -6635,7 +6642,7 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
6635
6642
  textAnchor: "middle",
6636
6643
  fontSize: 7,
6637
6644
  fill: "#334155",
6638
- children: chunkPJUQQF3I_js.formatAxisValue(isLast ? endVal : val)
6645
+ children: chunkTDUDH7S4_js.formatAxisValue(isLast ? endVal : val)
6639
6646
  },
6640
6647
  `${element.id}-wf-dl-${i}`
6641
6648
  )
@@ -6683,18 +6690,18 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
6683
6690
  function renderComboChart(element, chartData, categoryLabels) {
6684
6691
  const style = chartData.style;
6685
6692
  const legendPos = style?.legendPosition || "b";
6686
- const layoutOpts = chunkPJUQQF3I_js.computeLayoutOptions(
6693
+ const layoutOpts = chunkTDUDH7S4_js.computeLayoutOptions(
6687
6694
  chartData.axes,
6688
6695
  chartData.dataTable,
6689
6696
  chartData.series.length
6690
6697
  );
6691
- const layout = chunkPJUQQF3I_js.computeLayout(element.width, element.height, style, true, legendPos, layoutOpts);
6692
- const { primary, secondary } = chunkPJUQQF3I_js.splitSeriesByAxis(chartData.series, chartData.axes);
6698
+ const layout = chunkTDUDH7S4_js.computeLayout(element.width, element.height, style, true, legendPos, layoutOpts);
6699
+ const { primary, secondary } = chunkTDUDH7S4_js.splitSeriesByAxis(chartData.series, chartData.axes);
6693
6700
  const primarySeries = primary.length > 0 ? primary.map((e) => e.series) : chartData.series;
6694
6701
  const secondarySeries = secondary.map((e) => e.series);
6695
- const range = chunkPJUQQF3I_js.computeValueRangeForChart(primarySeries, chartData.axes);
6696
- const secondaryRange = secondarySeries.length > 0 ? chunkPJUQQF3I_js.computeValueRange(secondarySeries) : void 0;
6697
- const secondaryAxisFmt = chunkPJUQQF3I_js.getSecondaryValueAxis(chartData.axes);
6702
+ const range = chunkTDUDH7S4_js.computeValueRangeForChart(primarySeries, chartData.axes);
6703
+ const secondaryRange = secondarySeries.length > 0 ? chunkTDUDH7S4_js.computeValueRange(secondarySeries) : void 0;
6704
+ const secondaryAxisFmt = chunkTDUDH7S4_js.getSecondaryValueAxis(chartData.axes);
6698
6705
  const catCount = Math.max(categoryLabels.length, 1);
6699
6706
  const barSeriesCount = 1;
6700
6707
  const barGroupWidth = layout.plotWidth / catCount;
@@ -6710,8 +6717,8 @@ function renderComboChart(element, chartData, categoryLabels) {
6710
6717
  const barRange = isBarSecondary && secondaryRange ? secondaryRange : range;
6711
6718
  barSeries.values.forEach((val, vi) => {
6712
6719
  const x = layout.plotLeft + barGroupWidth * vi + barOffset;
6713
- const zeroY = chunkPJUQQF3I_js.valueToY(0, barRange, layout.plotTop, layout.plotBottom);
6714
- const valY = chunkPJUQQF3I_js.valueToY(val, barRange, layout.plotTop, layout.plotBottom);
6720
+ const zeroY = chunkTDUDH7S4_js.valueToY(0, barRange, layout.plotTop, layout.plotBottom);
6721
+ const valY = chunkTDUDH7S4_js.valueToY(val, barRange, layout.plotTop, layout.plotBottom);
6715
6722
  const y = Math.min(zeroY, valY);
6716
6723
  const h = Math.max(Math.abs(zeroY - valY), 1);
6717
6724
  barElements.push(
@@ -6722,7 +6729,7 @@ function renderComboChart(element, chartData, categoryLabels) {
6722
6729
  y,
6723
6730
  width: barWidth,
6724
6731
  height: h,
6725
- fill: chunkPJUQQF3I_js.seriesColor(barSeries, 0, chartData.style?.styleId, chartData.colorPalette),
6732
+ fill: chunkTDUDH7S4_js.seriesColor(barSeries, 0, chartData.style?.styleId, chartData.colorPalette),
6726
6733
  rx: 1
6727
6734
  },
6728
6735
  `${element.id}-combo-bar-${vi}`
@@ -6738,7 +6745,7 @@ function renderComboChart(element, chartData, categoryLabels) {
6738
6745
  textAnchor: "middle",
6739
6746
  fontSize: 7,
6740
6747
  fill: "#334155",
6741
- children: chunkPJUQQF3I_js.formatAxisValue(val)
6748
+ children: chunkTDUDH7S4_js.formatAxisValue(val)
6742
6749
  },
6743
6750
  `${element.id}-combo-bar-dl-${vi}`
6744
6751
  )
@@ -6755,10 +6762,10 @@ function renderComboChart(element, chartData, categoryLabels) {
6755
6762
  const activeRange = isSecondary && secondaryRange ? secondaryRange : range;
6756
6763
  const points = series.values.map((val, vi) => {
6757
6764
  const x = layout.plotLeft + barGroupWidth * vi + barGroupWidth / 2;
6758
- const y = chunkPJUQQF3I_js.valueToY(val, activeRange, layout.plotTop, layout.plotBottom);
6765
+ const y = chunkTDUDH7S4_js.valueToY(val, activeRange, layout.plotTop, layout.plotBottom);
6759
6766
  return { x, y, val };
6760
6767
  });
6761
- const c = chunkPJUQQF3I_js.seriesColor(series, seriesIdx, chartData.style?.styleId, chartData.colorPalette);
6768
+ const c = chunkTDUDH7S4_js.seriesColor(series, seriesIdx, chartData.style?.styleId, chartData.colorPalette);
6762
6769
  lineElements.push(
6763
6770
  /* @__PURE__ */ jsxRuntime.jsx(
6764
6771
  "polyline",
@@ -6785,7 +6792,7 @@ function renderComboChart(element, chartData, categoryLabels) {
6785
6792
  textAnchor: "middle",
6786
6793
  fontSize: 7,
6787
6794
  fill: "#334155",
6788
- children: chunkPJUQQF3I_js.formatAxisValue(p.val)
6795
+ children: chunkTDUDH7S4_js.formatAxisValue(p.val)
6789
6796
  },
6790
6797
  `${element.id}-combo-line-dl-${si}-${vi}`
6791
6798
  )
@@ -6823,11 +6830,11 @@ function renderComboChart(element, chartData, categoryLabels) {
6823
6830
  }
6824
6831
  function renderChartElement(element) {
6825
6832
  if (element.type !== "chart") {
6826
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunk3GNSGGY2_js.translationsEn["pptx.chart.heading"] });
6833
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkBXAK3JFM_js.translationsEn["pptx.chart.heading"] });
6827
6834
  }
6828
6835
  const chartData = element.chartData;
6829
6836
  if (!chartData || chartData.series.length === 0) {
6830
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunk3GNSGGY2_js.translationsEn["pptx.chart.heading"] });
6837
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkBXAK3JFM_js.translationsEn["pptx.chart.heading"] });
6831
6838
  }
6832
6839
  const longestSeriesLength = chartData.series.reduce(
6833
6840
  (maxLength, series) => Math.max(maxLength, series.values.length),
@@ -7931,14 +7938,14 @@ function buildNotesPdf(pages) {
7931
7938
  notes: page.notes,
7932
7939
  slideNumber: page.slideNumber
7933
7940
  }));
7934
- const bytes = chunkPJUQQF3I_js.buildNotesPdfBytes(images, meta);
7941
+ const bytes = chunkTDUDH7S4_js.buildNotesPdfBytes(images, meta);
7935
7942
  const blob = new Blob([bytes], { type: "application/pdf" });
7936
7943
  return URL.createObjectURL(blob);
7937
7944
  }
7938
7945
 
7939
7946
  // src/viewer/utils/pdf-builder-slides.ts
7940
7947
  function buildPdfFromImageData(images) {
7941
- const bytes = chunkPJUQQF3I_js.buildSlidesPdfBytes(images);
7948
+ const bytes = chunkTDUDH7S4_js.buildSlidesPdfBytes(images);
7942
7949
  const blob = new Blob([bytes], { type: "application/pdf" });
7943
7950
  return URL.createObjectURL(blob);
7944
7951
  }
@@ -7947,7 +7954,7 @@ function buildPdfFromImageData(images) {
7947
7954
  var activePreview = null;
7948
7955
  function startPreviewAnimation(elementId, preset, options) {
7949
7956
  stopPreviewAnimation();
7950
- const descriptor = chunkPJUQQF3I_js.buildPreviewAnimation(preset, options);
7957
+ const descriptor = chunkTDUDH7S4_js.buildPreviewAnimation(preset, options);
7951
7958
  if (!descriptor) {
7952
7959
  return;
7953
7960
  }
@@ -7960,7 +7967,7 @@ function startMotionPathPreview(elementId, path, options) {
7960
7967
  return;
7961
7968
  }
7962
7969
  const stage = domEl.offsetParent;
7963
- const descriptor = chunkPJUQQF3I_js.buildMotionPathPreview({
7970
+ const descriptor = chunkTDUDH7S4_js.buildMotionPathPreview({
7964
7971
  path,
7965
7972
  slideWidth: stage?.offsetWidth || DEFAULT_PREVIEW_SLIDE_WIDTH,
7966
7973
  slideHeight: stage?.offsetHeight || DEFAULT_PREVIEW_SLIDE_HEIGHT,