pptx-react-viewer 2.16.0 → 2.16.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 (97) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/dist/{AiChatPanel-VKGWK23E.js → AiChatPanel-OHB6CVLY.js} +22 -22
  3. package/dist/AiChatPanel-OHB6CVLY.js.br +0 -0
  4. package/dist/AiChatPanel-OHB6CVLY.js.gz +0 -0
  5. package/dist/{AiChatPanel-TYU52HDW.mjs → AiChatPanel-UPNVIENY.mjs} +3 -3
  6. package/dist/AiChatPanel-UPNVIENY.mjs.br +0 -0
  7. package/dist/AiChatPanel-UPNVIENY.mjs.gz +0 -0
  8. package/dist/{Model3DScene-TG7OSR6V.js → Model3DScene-7FKWPESH.js} +2 -2
  9. package/dist/{Model3DScene-TG7OSR6V.js.br → Model3DScene-7FKWPESH.js.br} +0 -0
  10. package/dist/Model3DScene-7FKWPESH.js.gz +0 -0
  11. package/dist/{Model3DScene-267BHD5T.mjs → Model3DScene-KEUY3M7X.mjs} +1 -1
  12. package/dist/{Model3DScene-267BHD5T.mjs.br → Model3DScene-KEUY3M7X.mjs.br} +0 -0
  13. package/dist/Model3DScene-KEUY3M7X.mjs.gz +0 -0
  14. package/dist/{SurfaceChart3DScene-RPRVXRQZ.mjs → SurfaceChart3DScene-2MLBPJ63.mjs} +1 -1
  15. package/dist/{SurfaceChart3DScene-RPRVXRQZ.mjs.br → SurfaceChart3DScene-2MLBPJ63.mjs.br} +0 -0
  16. package/dist/SurfaceChart3DScene-2MLBPJ63.mjs.gz +0 -0
  17. package/dist/{SurfaceChart3DScene-GK4JHZAC.js → SurfaceChart3DScene-NPJQXIGW.js} +2 -2
  18. package/dist/SurfaceChart3DScene-NPJQXIGW.js.br +0 -0
  19. package/dist/SurfaceChart3DScene-NPJQXIGW.js.gz +0 -0
  20. package/dist/{chunk-P3Y3OMAD.js → chunk-3NDRTC7T.js} +303 -40
  21. package/dist/chunk-3NDRTC7T.js.br +0 -0
  22. package/dist/{chunk-P3Y3OMAD.js.gz → chunk-3NDRTC7T.js.gz} +0 -0
  23. package/dist/{chunk-VNVURLZM.mjs → chunk-6ROCCY4M.mjs} +14 -9
  24. package/dist/chunk-6ROCCY4M.mjs.br +0 -0
  25. package/dist/chunk-6ROCCY4M.mjs.gz +0 -0
  26. package/dist/{chunk-PILJZ5OE.js → chunk-7UBDMCI7.js} +3 -3
  27. package/dist/chunk-7UBDMCI7.js.br +0 -0
  28. package/dist/chunk-7UBDMCI7.js.gz +0 -0
  29. package/dist/{chunk-GOPIG4VW.js → chunk-DQTTI6D4.js} +348 -344
  30. package/dist/chunk-DQTTI6D4.js.br +0 -0
  31. package/dist/chunk-DQTTI6D4.js.gz +0 -0
  32. package/dist/{chunk-OIITLGKQ.mjs → chunk-ENOHLGJ2.mjs} +298 -40
  33. package/dist/chunk-ENOHLGJ2.mjs.br +0 -0
  34. package/dist/{chunk-OIITLGKQ.mjs.gz → chunk-ENOHLGJ2.mjs.gz} +0 -0
  35. package/dist/{chunk-AX75ONFY.js → chunk-IN7D2T4R.js} +373 -375
  36. package/dist/chunk-IN7D2T4R.js.br +0 -0
  37. package/dist/chunk-IN7D2T4R.js.gz +0 -0
  38. package/dist/{chunk-ULB35HMJ.mjs → chunk-LJZFG6YP.mjs} +1 -1
  39. package/dist/chunk-LJZFG6YP.mjs.br +0 -0
  40. package/dist/chunk-LJZFG6YP.mjs.gz +0 -0
  41. package/dist/{chunk-7W5MCYBN.js → chunk-N6IE34HX.js} +1060 -1055
  42. package/dist/chunk-N6IE34HX.js.br +0 -0
  43. package/dist/chunk-N6IE34HX.js.gz +0 -0
  44. package/dist/{chunk-TWPZJXLC.mjs → chunk-RUK5XZGO.mjs} +11 -7
  45. package/dist/chunk-RUK5XZGO.mjs.br +0 -0
  46. package/dist/chunk-RUK5XZGO.mjs.gz +0 -0
  47. package/dist/{chunk-FFBY2TKD.mjs → chunk-ZOOGEDYG.mjs} +131 -133
  48. package/dist/chunk-ZOOGEDYG.mjs.br +0 -0
  49. package/dist/chunk-ZOOGEDYG.mjs.gz +0 -0
  50. package/dist/index.js +39 -39
  51. package/dist/index.js.br +0 -0
  52. package/dist/index.js.gz +0 -0
  53. package/dist/index.mjs +5 -5
  54. package/dist/index.mjs.br +0 -0
  55. package/dist/index.mjs.gz +0 -0
  56. package/dist/internals.d.ts +16 -0
  57. package/dist/internals.d.ts.map +1 -1
  58. package/dist/internals.js +78 -78
  59. package/dist/internals.js.br +0 -0
  60. package/dist/internals.js.gz +0 -0
  61. package/dist/internals.mjs +3 -3
  62. package/dist/internals.mjs.br +0 -0
  63. package/dist/internals.mjs.gz +0 -0
  64. package/dist/viewer/index.js +26 -26
  65. package/dist/viewer/index.js.br +0 -0
  66. package/dist/viewer/index.js.gz +0 -0
  67. package/dist/viewer/index.mjs +5 -5
  68. package/dist/viewer/index.mjs.br +0 -0
  69. package/dist/viewer/index.mjs.gz +0 -0
  70. package/package.json +1 -1
  71. package/dist/AiChatPanel-TYU52HDW.mjs.br +0 -0
  72. package/dist/AiChatPanel-TYU52HDW.mjs.gz +0 -0
  73. package/dist/AiChatPanel-VKGWK23E.js.br +0 -0
  74. package/dist/AiChatPanel-VKGWK23E.js.gz +0 -0
  75. package/dist/Model3DScene-267BHD5T.mjs.gz +0 -0
  76. package/dist/Model3DScene-TG7OSR6V.js.gz +0 -0
  77. package/dist/SurfaceChart3DScene-GK4JHZAC.js.br +0 -0
  78. package/dist/SurfaceChart3DScene-GK4JHZAC.js.gz +0 -0
  79. package/dist/SurfaceChart3DScene-RPRVXRQZ.mjs.gz +0 -0
  80. package/dist/chunk-7W5MCYBN.js.br +0 -0
  81. package/dist/chunk-7W5MCYBN.js.gz +0 -0
  82. package/dist/chunk-AX75ONFY.js.br +0 -0
  83. package/dist/chunk-AX75ONFY.js.gz +0 -0
  84. package/dist/chunk-FFBY2TKD.mjs.br +0 -0
  85. package/dist/chunk-FFBY2TKD.mjs.gz +0 -0
  86. package/dist/chunk-GOPIG4VW.js.br +0 -0
  87. package/dist/chunk-GOPIG4VW.js.gz +0 -0
  88. package/dist/chunk-OIITLGKQ.mjs.br +0 -0
  89. package/dist/chunk-P3Y3OMAD.js.br +0 -0
  90. package/dist/chunk-PILJZ5OE.js.br +0 -0
  91. package/dist/chunk-PILJZ5OE.js.gz +0 -0
  92. package/dist/chunk-TWPZJXLC.mjs.br +0 -0
  93. package/dist/chunk-TWPZJXLC.mjs.gz +0 -0
  94. package/dist/chunk-ULB35HMJ.mjs.br +0 -0
  95. package/dist/chunk-ULB35HMJ.mjs.gz +0 -0
  96. package/dist/chunk-VNVURLZM.mjs.br +0 -0
  97. package/dist/chunk-VNVURLZM.mjs.gz +0 -0
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
3
  var chunk3ISYPBSX_js = require('./chunk-3ISYPBSX.js');
4
- var chunkP3Y3OMAD_js = require('./chunk-P3Y3OMAD.js');
4
+ var chunk3NDRTC7T_js = require('./chunk-3NDRTC7T.js');
5
5
  var clsx = require('clsx');
6
6
  var tailwindMerge = require('tailwind-merge');
7
7
  var React6 = require('react');
8
8
  var lu = require('react-icons/lu');
9
- var reactI18next = require('react-i18next');
10
9
  var jsxRuntime = require('react/jsx-runtime');
10
+ var reactI18next = require('react-i18next');
11
11
 
12
12
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
13
13
 
@@ -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 chunkP3Y3OMAD_js.getAnimationInitialStyle(preset, nativeAnimation);
18
+ return chunk3NDRTC7T_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 chunkP3Y3OMAD_js.cloneHistorySnapshot(snapshot);
26
+ return chunk3NDRTC7T_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 = chunkP3Y3OMAD_js.VIEWER_SHORTCUT_REFERENCE;
66
+ var SHORTCUT_REFERENCE_ITEMS = chunk3NDRTC7T_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 = chunkP3Y3OMAD_js.SHAPE_PRESET_DEFS.map(
110
+ var SHAPE_PRESETS = chunk3NDRTC7T_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 (!chunkP3Y3OMAD_js.hasShapeProperties(element)) {
269
+ if (!chunk3NDRTC7T_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) => chunkP3Y3OMAD_js.isTemplateElement(el));
280
+ const template = slide.elements.filter((el) => chunk3NDRTC7T_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) => !chunkP3Y3OMAD_js.isTemplateElement(el)) };
285
+ return { ...slide, elements: slide.elements.filter((el) => !chunk3NDRTC7T_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 (!chunkP3Y3OMAD_js.hasShapeProperties(element)) {
301
+ if (!chunk3NDRTC7T_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 = chunkP3Y3OMAD_js.getRoundRectRadiusPx2(element);
310
+ const radiusPx = chunk3NDRTC7T_js.getRoundRectRadiusPx2(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 = chunkP3Y3OMAD_js.getResolvedShapeClipPath(element);
322
+ const clipPath = chunk3NDRTC7T_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
- ...chunkP3Y3OMAD_js.getImageFitStyle(element)
331
+ ...chunk3NDRTC7T_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 (!chunkP3Y3OMAD_js.isImageLikeElement(element)) {
344
+ if (!chunk3NDRTC7T_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 (!chunkP3Y3OMAD_js.isImageLikeElement(element)) {
354
+ if (!chunk3NDRTC7T_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 (!chunkP3Y3OMAD_js.isImageLikeElement(element) || !isImageTiled(element)) {
412
+ if (!chunk3NDRTC7T_js.isImageLikeElement(element) || !isImageTiled(element)) {
413
413
  return void 0;
414
414
  }
415
415
  const scaleX = typeof element.tileScaleX === "number" ? element.tileScaleX * 100 : 100;
@@ -550,36 +550,6 @@ function CaptionTrackRenderer({
550
550
  );
551
551
  }) });
552
552
  }
553
- function MediaNotFoundPlaceholder({
554
- mediaType
555
- }) {
556
- const { t } = reactI18next.useTranslation();
557
- const isVideo = mediaType === "video";
558
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full h-full flex flex-col items-center justify-center gap-2 pointer-events-none bg-black/30 rounded border border-dashed border-white/20", children: [
559
- /* @__PURE__ */ jsxRuntime.jsx(
560
- "svg",
561
- {
562
- width: "36",
563
- height: "36",
564
- viewBox: "0 0 24 24",
565
- fill: "none",
566
- stroke: "currentColor",
567
- strokeWidth: "1.5",
568
- className: "text-white/50",
569
- children: isVideo ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
570
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "2", y: "4", width: "20", height: "16", rx: "2" }),
571
- /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "2", y1: "4", x2: "22", y2: "20" })
572
- ] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
573
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10" }),
574
- /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "4", y1: "4", x2: "20", y2: "20" })
575
- ] })
576
- }
577
- ),
578
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-white/50", children: t("pptx.media.typeNotFound", {
579
- type: isVideo ? t("pptx.file.video") : t("pptx.file.audio")
580
- }) })
581
- ] });
582
- }
583
553
  function VideoWithMetadata({
584
554
  element,
585
555
  mediaRef,
@@ -659,9 +629,9 @@ function registerMediaElement(elementId, el) {
659
629
  };
660
630
  }
661
631
  function executeMediaCommand(command, frameRoot) {
662
- return chunkP3Y3OMAD_js.runMediaCommand(
632
+ return chunk3NDRTC7T_js.runMediaCommand(
663
633
  command,
664
- (targetId) => registry.get(targetId) ?? chunkP3Y3OMAD_js.findMediaElementByElementId(targetId, frameRoot?.())
634
+ (targetId) => registry.get(targetId) ?? chunk3NDRTC7T_js.findMediaElementByElementId(targetId, frameRoot?.())
665
635
  );
666
636
  }
667
637
  function PresentationMediaController({
@@ -705,7 +675,7 @@ function PresentationMediaController({
705
675
  loop: shouldLoop,
706
676
  volume: playbackVolume,
707
677
  playbackRate
708
- } = chunkP3Y3OMAD_js.mediaPlaybackAttributes({
678
+ } = chunk3NDRTC7T_js.mediaPlaybackAttributes({
709
679
  loop: element.loop,
710
680
  volume: element.volume,
711
681
  playbackSpeed: element.playbackSpeed
@@ -841,7 +811,7 @@ function PresentationMediaController({
841
811
  if (element.playAcrossSlides && element.mediaType === "audio") {
842
812
  const dataUrl = element.mediaData ?? resolvedDataUrl;
843
813
  if (dataUrl) {
844
- chunkP3Y3OMAD_js.registerPersistentAudio(
814
+ chunk3NDRTC7T_js.registerPersistentAudio(
845
815
  element.id,
846
816
  dataUrl,
847
817
  element.mediaMimeType,
@@ -902,6 +872,109 @@ function PresentationMediaController({
902
872
  )
903
873
  ] });
904
874
  }
875
+ function label(key) {
876
+ return key === void 0 ? void 0 : chunk3ISYPBSX_js.translationsEn[key];
877
+ }
878
+ function FallbackIcon({
879
+ paths,
880
+ size,
881
+ className
882
+ }) {
883
+ if (paths.length === 0) {
884
+ return null;
885
+ }
886
+ return /* @__PURE__ */ jsxRuntime.jsx(
887
+ "svg",
888
+ {
889
+ width: size,
890
+ height: size,
891
+ viewBox: "0 0 24 24",
892
+ fill: "none",
893
+ stroke: "currentColor",
894
+ strokeWidth: "1.5",
895
+ className,
896
+ children: paths.map((d) => /* @__PURE__ */ jsxRuntime.jsx("path", { d }, d))
897
+ }
898
+ );
899
+ }
900
+ function Badge({
901
+ visual,
902
+ element
903
+ }) {
904
+ if (visual.badge === "none") {
905
+ return null;
906
+ }
907
+ const isMissing = visual.badge === "missing";
908
+ return /* @__PURE__ */ jsxRuntime.jsxs(
909
+ "div",
910
+ {
911
+ className: `absolute inset-0 flex flex-col items-center justify-center ${isMissing ? "gap-1" : ""}`,
912
+ ...{ [chunk3NDRTC7T_js.MEDIA_CHROME_ATTRIBUTE]: visual.badge },
913
+ children: [
914
+ /* @__PURE__ */ jsxRuntime.jsx(
915
+ FallbackIcon,
916
+ {
917
+ paths: chunk3NDRTC7T_js.mediaFallbackIcon(visual, element.mediaType),
918
+ size: isMissing ? 32 : 48,
919
+ className: isMissing ? "text-white/60" : "text-white/80 drop-shadow-md"
920
+ }
921
+ ),
922
+ isMissing && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-white/60", children: label(chunk3NDRTC7T_js.mediaFallbackLabelKey(visual, element.mediaType)) })
923
+ ]
924
+ }
925
+ );
926
+ }
927
+ function Placeholder({
928
+ visual,
929
+ element
930
+ }) {
931
+ if (visual.placeholder === "none") {
932
+ return null;
933
+ }
934
+ const isMissing = visual.placeholder === "missing";
935
+ return /* @__PURE__ */ jsxRuntime.jsxs(
936
+ "div",
937
+ {
938
+ className: `w-full h-full flex flex-col items-center justify-center gap-1 pointer-events-none rounded ${isMissing ? "bg-black/30 border border-dashed border-white/20" : element.mediaType === "audio" ? "bg-black/10" : "bg-black/20"}`,
939
+ ...{ [chunk3NDRTC7T_js.MEDIA_CHROME_ATTRIBUTE]: visual.placeholder },
940
+ children: [
941
+ /* @__PURE__ */ jsxRuntime.jsx(
942
+ FallbackIcon,
943
+ {
944
+ paths: chunk3NDRTC7T_js.mediaFallbackIcon(visual, element.mediaType),
945
+ size: isMissing ? 36 : element.mediaType === "audio" ? 24 : 32,
946
+ className: isMissing ? "text-white/50" : "text-white/70"
947
+ }
948
+ ),
949
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: `text-[10px] ${isMissing ? "text-white/50" : "text-white/70"}`, children: label(chunk3NDRTC7T_js.mediaFallbackLabelKey(visual, element.mediaType)) })
950
+ ]
951
+ }
952
+ );
953
+ }
954
+ function renderMediaFallback({
955
+ element,
956
+ posterUrl,
957
+ surface
958
+ }) {
959
+ const visual = chunk3NDRTC7T_js.mediaFallbackVisual(surface, {
960
+ hasPoster: Boolean(posterUrl),
961
+ missing: element.mediaMissing === true
962
+ });
963
+ if (visual.poster && posterUrl) {
964
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full h-full relative pointer-events-none", children: [
965
+ /* @__PURE__ */ jsxRuntime.jsx(
966
+ "img",
967
+ {
968
+ src: posterUrl,
969
+ alt: visual.dimPoster ? chunk3ISYPBSX_js.translationsEn["pptx.media.posterAlt"] : chunk3ISYPBSX_js.translationsEn["pptx.media.videoPosterAlt"],
970
+ className: `w-full h-full object-contain${visual.dimPoster ? " opacity-50" : ""}`
971
+ }
972
+ ),
973
+ /* @__PURE__ */ jsxRuntime.jsx(Badge, { visual, element })
974
+ ] });
975
+ }
976
+ return /* @__PURE__ */ jsxRuntime.jsx(Placeholder, { visual, element });
977
+ }
905
978
  function renderMediaElement(element, mediaDataUrls, options) {
906
979
  if (element.type !== "media") {
907
980
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunk3ISYPBSX_js.translationsEn["pptx.media.title"] });
@@ -912,44 +985,17 @@ function renderMediaElement(element, mediaDataUrls, options) {
912
985
  const dataUrl = element.mediaData ?? (mediaPath ? mediaDataUrls.get(mediaPath) : void 0);
913
986
  const trimFragment = buildTrimFragment(element);
914
987
  const posterUrl = element.posterFrameData ?? void 0;
915
- const shouldLoop = chunkP3Y3OMAD_js.mediaPlaybackAttributes(element).loop;
988
+ const shouldLoop = chunk3NDRTC7T_js.mediaPlaybackAttributes(element).loop;
916
989
  const shouldAutoPlay = options?.autoPlay === true || element.autoPlay === true;
917
990
  const isFullScreen = options?.fullScreen === true;
918
991
  const isPresentationMode = options?.isPresentationMode === true;
919
992
  const showTransport = options?.showTransport ?? !isPresentationMode;
993
+ const surface = {
994
+ presenting: isPresentationMode,
995
+ preview: options?.preview === true
996
+ };
920
997
  if (element.mediaMissing) {
921
- if (posterUrl) {
922
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full h-full relative pointer-events-none", children: [
923
- /* @__PURE__ */ jsxRuntime.jsx(
924
- "img",
925
- {
926
- src: posterUrl,
927
- alt: chunk3ISYPBSX_js.translationsEn["pptx.media.posterAlt"],
928
- className: "w-full h-full object-contain opacity-50"
929
- }
930
- ),
931
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0 flex flex-col items-center justify-center gap-1", children: [
932
- /* @__PURE__ */ jsxRuntime.jsxs(
933
- "svg",
934
- {
935
- width: "32",
936
- height: "32",
937
- viewBox: "0 0 24 24",
938
- fill: "none",
939
- stroke: "currentColor",
940
- strokeWidth: "1.5",
941
- className: "text-white/60",
942
- children: [
943
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10" }),
944
- /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "4", y1: "4", x2: "20", y2: "20" })
945
- ]
946
- }
947
- ),
948
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-white/60", children: chunk3ISYPBSX_js.translationsEn["pptx.media.notFound"] })
949
- ] })
950
- ] });
951
- }
952
- return /* @__PURE__ */ jsxRuntime.jsx(MediaNotFoundPlaceholder, { mediaType: mediaType ?? "video" });
998
+ return renderMediaFallback({ element, posterUrl, surface });
953
999
  }
954
1000
  if (mediaType === "video") {
955
1001
  if (dataUrl) {
@@ -982,47 +1028,7 @@ function renderMediaElement(element, mediaDataUrls, options) {
982
1028
  }
983
1029
  );
984
1030
  }
985
- if (posterUrl) {
986
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full h-full relative pointer-events-none", children: [
987
- /* @__PURE__ */ jsxRuntime.jsx(
988
- "img",
989
- {
990
- src: posterUrl,
991
- alt: chunk3ISYPBSX_js.translationsEn["pptx.media.videoPosterAlt"],
992
- className: "w-full h-full object-contain"
993
- }
994
- ),
995
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
996
- "svg",
997
- {
998
- width: "48",
999
- height: "48",
1000
- viewBox: "0 0 24 24",
1001
- fill: "none",
1002
- stroke: "currentColor",
1003
- strokeWidth: "1.5",
1004
- className: "text-white/80 drop-shadow-md",
1005
- children: /* @__PURE__ */ jsxRuntime.jsx("polygon", { points: "5 3 19 12 5 21 5 3" })
1006
- }
1007
- ) })
1008
- ] });
1009
- }
1010
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full h-full flex flex-col items-center justify-center gap-1 pointer-events-none bg-black/20 rounded", children: [
1011
- /* @__PURE__ */ jsxRuntime.jsx(
1012
- "svg",
1013
- {
1014
- width: "32",
1015
- height: "32",
1016
- viewBox: "0 0 24 24",
1017
- fill: "none",
1018
- stroke: "currentColor",
1019
- strokeWidth: "1.5",
1020
- className: "text-white/70",
1021
- children: /* @__PURE__ */ jsxRuntime.jsx("polygon", { points: "5 3 19 12 5 21 5 3" })
1022
- }
1023
- ),
1024
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-white/70", children: "Video" })
1025
- ] });
1031
+ return renderMediaFallback({ element, posterUrl, surface });
1026
1032
  }
1027
1033
  if (mediaType === "audio") {
1028
1034
  if (dataUrl) {
@@ -1052,33 +1058,17 @@ function renderMediaElement(element, mediaDataUrls, options) {
1052
1058
  }
1053
1059
  );
1054
1060
  }
1055
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full h-full flex flex-col items-center justify-center gap-1 pointer-events-none bg-black/10 rounded", children: [
1056
- /* @__PURE__ */ jsxRuntime.jsxs(
1057
- "svg",
1058
- {
1059
- width: "24",
1060
- height: "24",
1061
- viewBox: "0 0 24 24",
1062
- fill: "none",
1063
- stroke: "currentColor",
1064
- strokeWidth: "1.5",
1065
- className: "text-white/70",
1066
- children: [
1067
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M9 18V5l12-2v13" }),
1068
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "6", cy: "18", r: "3" }),
1069
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "18", cy: "16", r: "3" })
1070
- ]
1071
- }
1072
- ),
1073
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-white/70", children: "Audio" })
1074
- ] });
1061
+ return renderMediaFallback({ element, posterUrl, surface });
1062
+ }
1063
+ if (surface.presenting || surface.preview) {
1064
+ return null;
1075
1065
  }
1076
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: "Media" });
1066
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunk3ISYPBSX_js.translationsEn["pptx.media.title"] });
1077
1067
  }
1078
1068
 
1079
1069
  // src/viewer/utils/text-utils.tsx
1080
1070
  function getTextStyleForElement(element, fallbackColor) {
1081
- return chunkP3Y3OMAD_js.buildTextBlockStyle(element, { fallbackColor });
1071
+ return chunk3NDRTC7T_js.buildTextBlockStyle(element, { fallbackColor });
1082
1072
  }
1083
1073
 
1084
1074
  // src/viewer/utils/text-layout.tsx
@@ -1103,13 +1093,13 @@ function computeTabSize(tabStops, defaultTabSize) {
1103
1093
  return avgGap > 0 ? `${Math.round(avgGap)}px` : fromDefault;
1104
1094
  }
1105
1095
  function getTextLayoutStyle(element) {
1106
- if (!chunkP3Y3OMAD_js.hasTextProperties(element)) {
1096
+ if (!chunk3NDRTC7T_js.hasTextProperties(element)) {
1107
1097
  return {};
1108
1098
  }
1109
1099
  const verticalAlign = element.textStyle?.vAlign || "top";
1110
- const writingMode = chunkP3Y3OMAD_js.toCssWritingMode(element.textStyle?.textDirection);
1111
- const textOrientation = chunkP3Y3OMAD_js.toCssTextOrientation(element.textStyle?.textDirection);
1112
- const verticalDirection = chunkP3Y3OMAD_js.toCssVerticalDirection(element.textStyle?.textDirection);
1100
+ const writingMode = chunk3NDRTC7T_js.toCssWritingMode(element.textStyle?.textDirection);
1101
+ const textOrientation = chunk3NDRTC7T_js.toCssTextOrientation(element.textStyle?.textDirection);
1102
+ const verticalDirection = chunk3NDRTC7T_js.toCssVerticalDirection(element.textStyle?.textDirection);
1113
1103
  const parsedColumnCount = Number(element.textStyle?.columnCount);
1114
1104
  const columnCount = Number.isFinite(parsedColumnCount) ? Math.max(1, Math.min(16, Math.round(parsedColumnCount))) : 1;
1115
1105
  const hasColumns = columnCount > 1;
@@ -1117,7 +1107,7 @@ function getTextLayoutStyle(element) {
1117
1107
  const tabStops = element.textStyle?.tabStops;
1118
1108
  const tabSize = computeTabSize(tabStops, element.textStyle?.defaultTabSize);
1119
1109
  const textWrapNone = element.textStyle?.textWrap === "none";
1120
- const hasParagraphIndents = chunkP3Y3OMAD_js.hasTextProperties(element) && element.paragraphIndents && element.paragraphIndents.length > 0;
1110
+ const hasParagraphIndents = chunk3NDRTC7T_js.hasTextProperties(element) && element.paragraphIndents && element.paragraphIndents.length > 0;
1121
1111
  const paragraphMarginLeft = element.textStyle?.paragraphMarginLeft;
1122
1112
  const paragraphIndent = element.textStyle?.paragraphIndent;
1123
1113
  const marginLeft = !hasParagraphIndents && typeof paragraphMarginLeft === "number" && paragraphMarginLeft !== 0 ? paragraphMarginLeft : void 0;
@@ -1126,7 +1116,7 @@ function getTextLayoutStyle(element) {
1126
1116
  const bodyBottom = element.textStyle?.bodyInsetBottom ?? DEFAULT_BODY_INSET_TB_PX;
1127
1117
  const parsedColumnSpacing = Number(element.textStyle?.columnSpacing);
1128
1118
  const columnGap = Number.isFinite(parsedColumnSpacing) && parsedColumnSpacing > 0 ? `${parsedColumnSpacing}px` : "0.75em";
1129
- const kinsokuStyles = chunkP3Y3OMAD_js.getKinsokuLineBreakStyles(element.textStyle);
1119
+ const kinsokuStyles = chunk3NDRTC7T_js.getKinsokuLineBreakStyles(element.textStyle);
1130
1120
  if (hasColumns) {
1131
1121
  return {
1132
1122
  display: "block",
@@ -1173,10 +1163,10 @@ function getTextLayoutStyle(element) {
1173
1163
 
1174
1164
  // src/viewer/utils/text-effects.tsx
1175
1165
  function buildTextFillCss2(style) {
1176
- return chunkP3Y3OMAD_js.buildTextFillCss(style);
1166
+ return chunk3NDRTC7T_js.buildTextFillCss(style);
1177
1167
  }
1178
1168
  function buildTextBody3DSceneStyle2(textStyle) {
1179
- return chunkP3Y3OMAD_js.buildTextBody3DSceneStyle(textStyle);
1169
+ return chunk3NDRTC7T_js.buildTextBody3DSceneStyle(textStyle);
1180
1170
  }
1181
1171
 
1182
1172
  // src/viewer/utils/text-warp-css.tsx
@@ -1361,13 +1351,13 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
1361
1351
  if (!subElementAnimStates || subElementAnimStates.size === 0) {
1362
1352
  return renderedSegments;
1363
1353
  }
1364
- const paraKey = `${elementId}${chunkP3Y3OMAD_js.TEXT_BUILD_ID_SEP}p${paraIndex}`;
1354
+ const paraKey = `${elementId}${chunk3NDRTC7T_js.TEXT_BUILD_ID_SEP}p${paraIndex}`;
1365
1355
  const paraState = subElementAnimStates.get(paraKey);
1366
1356
  if (paraState) {
1367
1357
  const style = buildAnimStyle(paraState);
1368
1358
  return /* @__PURE__ */ jsxRuntime.jsx("span", { "data-anim-id": paraKey, style: { display: "inline", ...style }, children: renderedSegments }, paraKey);
1369
1359
  }
1370
- const spec = chunkP3Y3OMAD_js.buildTextBuildSpec(
1360
+ const spec = chunk3NDRTC7T_js.buildTextBuildSpec(
1371
1361
  elementId,
1372
1362
  paraIndex,
1373
1363
  paraSegments.map((entry) => ({ text: entry.segment.text, style: entry })),
@@ -1385,7 +1375,7 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
1385
1375
  "span",
1386
1376
  {
1387
1377
  "data-anim-id": span.animId,
1388
- style: chunkP3Y3OMAD_js.textBuildSpanStyle(span),
1378
+ style: chunk3NDRTC7T_js.textBuildSpanStyle(span),
1389
1379
  children: content
1390
1380
  },
1391
1381
  span.animId
@@ -1529,10 +1519,10 @@ function renderScriptAwareText(text, needsScriptFonts, scriptFonts, baseFontFami
1529
1519
  if (!needsScriptFonts || !text) {
1530
1520
  return text;
1531
1521
  }
1532
- const runs = chunkP3Y3OMAD_js.segmentByScript(text);
1522
+ const runs = chunk3NDRTC7T_js.segmentByScript(text);
1533
1523
  if (runs.length <= 1) {
1534
1524
  if (runs.length === 1) {
1535
- const font = chunkP3Y3OMAD_js.resolveFontForScript(runs[0].script, scriptFonts);
1525
+ const font = chunk3NDRTC7T_js.resolveFontForScript(runs[0].script, scriptFonts);
1536
1526
  if (font && font !== baseFontFamily) {
1537
1527
  return /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontFamily: font }, children: text });
1538
1528
  }
@@ -1540,7 +1530,7 @@ function renderScriptAwareText(text, needsScriptFonts, scriptFonts, baseFontFami
1540
1530
  return text;
1541
1531
  }
1542
1532
  return runs.map((run, i) => {
1543
- const font = chunkP3Y3OMAD_js.resolveFontForScript(run.script, scriptFonts);
1533
+ const font = chunk3NDRTC7T_js.resolveFontForScript(run.script, scriptFonts);
1544
1534
  if (!font || font === baseFontFamily) {
1545
1535
  return /* @__PURE__ */ jsxRuntime.jsx(React6__default.default.Fragment, { children: run.text }, `${keyPrefix}-r${i}`);
1546
1536
  }
@@ -1612,8 +1602,8 @@ function renderSegmentContent(elementId, segmentIndex, textValue, lines, needsSc
1612
1602
  );
1613
1603
  }
1614
1604
  function renderEquationSegment(elementId, segmentIndex, equationXml, equationNumber) {
1615
- const mathml = chunkP3Y3OMAD_js.convertOmmlToMathMl(equationXml);
1616
- const safeMathml = mathml ? chunkP3Y3OMAD_js.sanitizeMathMl(mathml) : "";
1605
+ const mathml = chunk3NDRTC7T_js.convertOmmlToMathMl(equationXml);
1606
+ const safeMathml = mathml ? chunk3NDRTC7T_js.sanitizeMathMl(mathml) : "";
1617
1607
  const equationContent = safeMathml ? /* @__PURE__ */ jsxRuntime.jsx(
1618
1608
  "span",
1619
1609
  {
@@ -1663,7 +1653,7 @@ function renderEquationSegment(elementId, segmentIndex, equationXml, equationNum
1663
1653
  return /* @__PURE__ */ jsxRuntime.jsx("span", { children: equationContent }, `${elementId}-seg-${segmentIndex}`);
1664
1654
  }
1665
1655
  function renderPictureBullet(elementId, segmentIndex, bulletInfo, baseFontSize) {
1666
- const picture = chunkP3Y3OMAD_js.resolvePictureBullet(bulletInfo, baseFontSize) ?? {
1656
+ const picture = chunk3NDRTC7T_js.resolvePictureBullet(bulletInfo, baseFontSize) ?? {
1667
1657
  sizePx: baseFontSize,
1668
1658
  fallbackMarker: "\u2022",
1669
1659
  accessibleLabel: "Bullet"
@@ -1714,7 +1704,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1714
1704
  }
1715
1705
  const segmentStyle = segment.style || {};
1716
1706
  const rawText = bulletInfo && typeof bulletHangPx === "number" ? (segment.text || "").trimEnd() : segment.text || "";
1717
- const textValue = chunkP3Y3OMAD_js.substituteFieldText(rawText, segment.fieldType, fieldContext);
1707
+ const textValue = chunk3NDRTC7T_js.substituteFieldText(rawText, segment.fieldType, fieldContext);
1718
1708
  const lines = textValue.split("\n");
1719
1709
  const textDecorationTokens = [];
1720
1710
  if (segmentStyle.underline || segmentStyle.hyperlink) {
@@ -1724,28 +1714,28 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1724
1714
  textDecorationTokens.push("line-through");
1725
1715
  }
1726
1716
  const isDoubleStrike = segmentStyle.strikethrough && segmentStyle.strikeType === "dblStrike";
1727
- const resolvedSegmentColor = segmentStyle.hyperlink ? chunkP3Y3OMAD_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, HYPERLINK_COLOR) : chunkP3Y3OMAD_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, fallbackColor);
1728
- const underlineDecoration = chunkP3Y3OMAD_js.resolveUnderlineDecorationStyle(
1717
+ const resolvedSegmentColor = segmentStyle.hyperlink ? chunk3NDRTC7T_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, HYPERLINK_COLOR) : chunk3NDRTC7T_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, fallbackColor);
1718
+ const underlineDecoration = chunk3NDRTC7T_js.resolveUnderlineDecorationStyle(
1729
1719
  Boolean(isDoubleStrike),
1730
1720
  segmentStyle.underlineStyle
1731
1721
  );
1732
1722
  const rawBaseline = typeof segmentStyle.baseline === "number" ? segmentStyle.baseline : 0;
1733
1723
  const baselineFraction = rawBaseline === 0 ? 0 : Math.abs(rawBaseline) >= 1e3 ? rawBaseline / 1e5 : rawBaseline / 100;
1734
1724
  const baselineFontScale = baselineFraction !== 0 ? 0.65 : 1;
1735
- const letterSpacing = typeof segmentStyle.characterSpacing === "number" && segmentStyle.characterSpacing !== 0 ? `calc(${segmentStyle.characterSpacing / 100 * (96 / 72)}px + ${chunkP3Y3OMAD_js.POWERPOINT_METRIC_TRACKING})` : chunkP3Y3OMAD_js.POWERPOINT_METRIC_TRACKING;
1725
+ const authoredLetterSpacing = typeof segmentStyle.characterSpacing === "number" && segmentStyle.characterSpacing !== 0 ? segmentStyle.characterSpacing / 100 * (96 / 72) : 0;
1736
1726
  const textFillStyles = buildTextFillCss2(segmentStyle);
1737
1727
  const rawFontSize = segmentStyle.fontSize || element.textStyle?.fontSize || DEFAULT_TEXT_FONT_SIZE;
1738
- const autoFitScale = chunkP3Y3OMAD_js.resolveAutoFitFontScale(element.textStyle);
1728
+ const autoFitScale = chunk3NDRTC7T_js.resolveAutoFitFontScale(element.textStyle);
1739
1729
  const baseFontSize = rawFontSize * autoFitScale;
1740
1730
  const baselineShift = baselineFraction !== 0 ? `${baselineFraction * baseFontSize}px` : void 0;
1741
1731
  const baseFontSizePt = baseFontSize * (72 / 96);
1742
1732
  const fontKerning = typeof segmentStyle.kerning === "number" ? segmentStyle.kerning === 0 ? "none" : baseFontSizePt >= segmentStyle.kerning / 100 ? "normal" : "none" : void 0;
1743
1733
  const rawFontFamily = segmentStyle.fontFamily || element.textStyle?.fontFamily;
1744
- const baseFontFamily = rawFontFamily ? chunkP3Y3OMAD_js.getSubstituteFontFamily(
1734
+ const baseFontFamily = rawFontFamily ? chunk3NDRTC7T_js.getSubstituteFontFamily(
1745
1735
  rawFontFamily,
1746
- chunkP3Y3OMAD_js.parsePanoseString(segmentStyle.latinFontPanose ?? element.textStyle?.latinFontPanose)
1736
+ chunk3NDRTC7T_js.parsePanoseString(segmentStyle.latinFontPanose ?? element.textStyle?.latinFontPanose)
1747
1737
  ) : DEFAULT_FONT_FAMILY2;
1748
- const scriptFont = (name, panose) => name ? chunkP3Y3OMAD_js.getSubstituteFontFamily(name, chunkP3Y3OMAD_js.parsePanoseString(panose)) : baseFontFamily;
1738
+ const scriptFont = (name, panose) => name ? chunk3NDRTC7T_js.getSubstituteFontFamily(name, chunk3NDRTC7T_js.parsePanoseString(panose)) : baseFontFamily;
1749
1739
  const scriptFonts = {
1750
1740
  latin: baseFontFamily,
1751
1741
  eastAsia: scriptFont(
@@ -1761,7 +1751,15 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1761
1751
  segmentStyle.symbolFontPanose ?? element.textStyle?.symbolFontPanose
1762
1752
  )
1763
1753
  };
1764
- const needsScriptFonts = chunkP3Y3OMAD_js.hasDistinctScriptFonts(scriptFonts);
1754
+ const needsScriptFonts = chunk3NDRTC7T_js.hasDistinctScriptFonts(scriptFonts);
1755
+ const metricTracking = chunk3NDRTC7T_js.resolveMetricTrackingPx(textValue, {
1756
+ fontFamily: baseFontFamily,
1757
+ fontSizePx: baseFontSize * baselineFontScale,
1758
+ bold: Boolean(segmentStyle.bold),
1759
+ italic: Boolean(segmentStyle.italic)
1760
+ });
1761
+ const totalLetterSpacing = authoredLetterSpacing + metricTracking;
1762
+ const letterSpacing = totalLetterSpacing === 0 ? void 0 : `${totalLetterSpacing}px`;
1765
1763
  const spanStyle = {
1766
1764
  color: resolvedSegmentColor,
1767
1765
  fontSize: baseFontSize * baselineFontScale,
@@ -1779,15 +1777,15 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1779
1777
  fontVariantCaps: segmentStyle.textCaps === "small" ? "small-caps" : void 0,
1780
1778
  letterSpacing,
1781
1779
  fontKerning,
1782
- backgroundColor: textFillStyles ? void 0 : segmentStyle.highlightColor ? chunkP3Y3OMAD_js.normalizeHexColor(segmentStyle.highlightColor, "transparent") : void 0,
1780
+ backgroundColor: textFillStyles ? void 0 : segmentStyle.highlightColor ? chunk3NDRTC7T_js.normalizeHexColor(segmentStyle.highlightColor, "transparent") : void 0,
1783
1781
  ...textFillStyles,
1784
- textDecorationColor: segmentStyle.underlineColor ? chunkP3Y3OMAD_js.normalizeHexColor(segmentStyle.underlineColor, void 0) : void 0,
1785
- WebkitTextStroke: segmentStyle.textOutlineWidth && segmentStyle.textOutlineColor ? `${segmentStyle.textOutlineWidth}px ${chunkP3Y3OMAD_js.normalizeHexColor(segmentStyle.textOutlineColor, "#000000")}` : segmentStyle.textOutlineWidth ? `${segmentStyle.textOutlineWidth}px currentColor` : void 0,
1782
+ textDecorationColor: segmentStyle.underlineColor ? chunk3NDRTC7T_js.normalizeHexColor(segmentStyle.underlineColor, void 0) : void 0,
1783
+ WebkitTextStroke: segmentStyle.textOutlineWidth && segmentStyle.textOutlineColor ? `${segmentStyle.textOutlineWidth}px ${chunk3NDRTC7T_js.normalizeHexColor(segmentStyle.textOutlineColor, "#000000")}` : segmentStyle.textOutlineWidth ? `${segmentStyle.textOutlineWidth}px currentColor` : void 0,
1786
1784
  paintOrder: segmentStyle.textOutlineWidth ? "stroke fill" : void 0,
1787
- textShadow: chunkP3Y3OMAD_js.buildTextShadowCss(segmentStyle),
1788
- filter: chunkP3Y3OMAD_js.buildTextRunFilterChain(segmentStyle),
1789
- opacity: chunkP3Y3OMAD_js.getTextAlphaOpacity(segmentStyle),
1790
- WebkitBoxReflect: chunkP3Y3OMAD_js.buildTextReflectionCss(segmentStyle)
1785
+ textShadow: chunk3NDRTC7T_js.buildTextShadowCss(segmentStyle),
1786
+ filter: chunk3NDRTC7T_js.buildTextRunFilterChain(segmentStyle),
1787
+ opacity: chunk3NDRTC7T_js.getTextAlphaOpacity(segmentStyle),
1788
+ WebkitBoxReflect: chunk3NDRTC7T_js.buildTextReflectionCss(segmentStyle)
1791
1789
  };
1792
1790
  const runRtl = segmentStyle.rtl;
1793
1791
  if (runRtl !== void 0 && runRtl !== paragraphRtl) {
@@ -1807,7 +1805,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1807
1805
  spanStyle.fontSize = baseFontSize * (bulletInfo.sizePercent / 100) * baselineFontScale;
1808
1806
  }
1809
1807
  if (bulletInfo.color) {
1810
- spanStyle.color = chunkP3Y3OMAD_js.normalizeHexColor(bulletInfo.color, resolvedSegmentColor);
1808
+ spanStyle.color = chunk3NDRTC7T_js.normalizeHexColor(bulletInfo.color, resolvedSegmentColor);
1811
1809
  }
1812
1810
  if (typeof bulletHangPx === "number" && bulletHangPx > 0) {
1813
1811
  spanStyle.display = "inline-block";
@@ -1852,7 +1850,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1852
1850
  textAlign: segment.rubyAlignment === "l" ? "left" : segment.rubyAlignment === "r" ? "right" : segment.rubyAlignment === "dist" || segment.rubyAlignment === "distCat" || segment.rubyAlignment === "distLetter" ? "justify" : "center"
1853
1851
  };
1854
1852
  if (segment.rubyStyle?.color) {
1855
- rubyStyle.color = chunkP3Y3OMAD_js.normalizeHexColor(segment.rubyStyle.color, resolvedSegmentColor);
1853
+ rubyStyle.color = chunk3NDRTC7T_js.normalizeHexColor(segment.rubyStyle.color, resolvedSegmentColor);
1856
1854
  }
1857
1855
  innerContent = /* @__PURE__ */ jsxRuntime.jsxs("ruby", { children: [
1858
1856
  baseContent,
@@ -1925,7 +1923,7 @@ function resolveParagraphSpacing(input) {
1925
1923
  if (typeof exactPt === "number" && exactPt > 0) {
1926
1924
  result.lineHeight = `${exactPt * PT_TO_PX}px`;
1927
1925
  } else if (typeof multiplier === "number" && multiplier > 0) {
1928
- result.lineHeight = chunkP3Y3OMAD_js.proportionalLineHeight(multiplier);
1926
+ result.lineHeight = chunk3NDRTC7T_js.proportionalLineHeight(multiplier);
1929
1927
  }
1930
1928
  return result;
1931
1929
  }
@@ -1947,7 +1945,7 @@ function groupSegmentsIntoParagraphs(segments) {
1947
1945
  return paragraphs;
1948
1946
  }
1949
1947
  function renderTextSegments(element, fallbackColor, emptyFallback, findHighlights, onHyperlinkClick, fieldContext, subElementAnimStates, segmentOverrides, requireCtrlClick) {
1950
- if (!chunkP3Y3OMAD_js.hasTextProperties(element)) {
1948
+ if (!chunk3NDRTC7T_js.hasTextProperties(element)) {
1951
1949
  return emptyFallback || null;
1952
1950
  }
1953
1951
  const effectiveSegments = segmentOverrides ?? element.textSegments;
@@ -1968,10 +1966,10 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
1968
1966
  return element.text || emptyFallback || "";
1969
1967
  }
1970
1968
  const paragraphs = groupSegmentsIntoParagraphs(effectiveSegments);
1971
- const paragraphIndents = chunkP3Y3OMAD_js.hasTextProperties(element) ? element.paragraphIndents : void 0;
1972
- const elementRtl = chunkP3Y3OMAD_js.hasTextProperties(element) ? element.textStyle?.rtl : void 0;
1973
- const elementAlign = chunkP3Y3OMAD_js.hasTextProperties(element) ? element.textStyle?.align : void 0;
1974
- const bodyStyle = chunkP3Y3OMAD_js.hasTextProperties(element) ? element.textStyle : void 0;
1969
+ const paragraphIndents = chunk3NDRTC7T_js.hasTextProperties(element) ? element.paragraphIndents : void 0;
1970
+ const elementRtl = chunk3NDRTC7T_js.hasTextProperties(element) ? element.textStyle?.rtl : void 0;
1971
+ const elementAlign = chunk3NDRTC7T_js.hasTextProperties(element) ? element.textStyle?.align : void 0;
1972
+ const bodyStyle = chunk3NDRTC7T_js.hasTextProperties(element) ? element.textStyle : void 0;
1975
1973
  const spaceFirstLast = bodyStyle?.spaceFirstLastParagraph !== false;
1976
1974
  return paragraphs.map(({ entries: paraSegments, terminator }, paraIndex) => {
1977
1975
  const paraIndent = paragraphIndents?.[paraIndex];
@@ -1986,14 +1984,14 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
1986
1984
  return Boolean(segment.text) && segment.text.trim().length > 0;
1987
1985
  });
1988
1986
  const hasBullet = bulletInfo && !bulletInfo.none && hasVisibleTextContent;
1989
- const paraRtl = chunkP3Y3OMAD_js.resolveParagraphRtl(paraSegments, elementRtl);
1987
+ const paraRtl = chunk3NDRTC7T_js.resolveParagraphRtl(paraSegments, elementRtl);
1990
1988
  const isRtlParagraph = paraRtl === true;
1991
- const paraAlign = chunkP3Y3OMAD_js.resolveParagraphAlign(paraSegments, elementAlign);
1992
- const cssTextAlign = chunkP3Y3OMAD_js.resolveCssTextAlign(paraAlign, isRtlParagraph);
1989
+ const paraAlign = chunk3NDRTC7T_js.resolveParagraphAlign(paraSegments, elementAlign);
1990
+ const cssTextAlign = chunk3NDRTC7T_js.resolveCssTextAlign(paraAlign, isRtlParagraph);
1993
1991
  const paraMarginLeft = isRtlParagraph ? void 0 : rawMarginLeft;
1994
1992
  const paraMarginRight = isRtlParagraph ? rawMarginLeft : void 0;
1995
1993
  const paraTextIndent = rawTextIndent;
1996
- const paraKinsokuStyle = chunkP3Y3OMAD_js.getKinsokuLineBreakStyles(firstSeg?.segment.style);
1994
+ const paraKinsokuStyle = chunk3NDRTC7T_js.getKinsokuLineBreakStyles(firstSeg?.segment.style);
1997
1995
  const hasParaKinsoku = Object.keys(paraKinsokuStyle).length > 0;
1998
1996
  const paraProps = effectiveSegments[firstSeg?.globalIndex ?? -1]?.paragraphProperties ?? (paraSegments.length === 0 ? terminator?.paragraphProperties : void 0);
1999
1997
  const spacing = resolveParagraphSpacing({
@@ -2003,7 +2001,7 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
2003
2001
  isLast: paraIndex === paragraphs.length - 1,
2004
2002
  spaceFirstLast
2005
2003
  });
2006
- const strutFontSize = chunkP3Y3OMAD_js.resolveParagraphStrutFontSize(
2004
+ const strutFontSize = chunk3NDRTC7T_js.resolveParagraphStrutFontSize(
2007
2005
  paraSegments.length > 0 ? paraSegments.map(({ segment }) => segment) : terminator ? [terminator] : [],
2008
2006
  bodyStyle?.fontSize
2009
2007
  );
@@ -2107,13 +2105,13 @@ function hexToRgbUnit(hex) {
2107
2105
  };
2108
2106
  }
2109
2107
  function getDuotoneColors(element) {
2110
- if (!chunkP3Y3OMAD_js.isImageLikeElement(element)) {
2108
+ if (!chunk3NDRTC7T_js.isImageLikeElement(element)) {
2111
2109
  return void 0;
2112
2110
  }
2113
2111
  return element.imageEffects?.duotone;
2114
2112
  }
2115
2113
  function buildLineShadowCss(element) {
2116
- if (!chunkP3Y3OMAD_js.hasShapeProperties(element)) {
2114
+ if (!chunk3NDRTC7T_js.hasShapeProperties(element)) {
2117
2115
  return void 0;
2118
2116
  }
2119
2117
  const ss = element.shapeStyle;
@@ -2124,13 +2122,13 @@ function buildLineShadowCss(element) {
2124
2122
  const offsetY = typeof ss.lineShadowOffsetY === "number" ? ss.lineShadowOffsetY : 2;
2125
2123
  const blur = typeof ss.lineShadowBlur === "number" ? Math.max(0, ss.lineShadowBlur) : 4;
2126
2124
  const opacity = typeof ss.lineShadowOpacity === "number" ? Math.max(0, Math.min(1, ss.lineShadowOpacity)) : 0.35;
2127
- return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${chunkP3Y3OMAD_js.colorWithOpacity(
2128
- chunkP3Y3OMAD_js.normalizeHexColor(ss.lineShadowColor, "#000000"),
2125
+ return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${chunk3NDRTC7T_js.colorWithOpacity(
2126
+ chunk3NDRTC7T_js.normalizeHexColor(ss.lineShadowColor, "#000000"),
2129
2127
  opacity
2130
2128
  )}`;
2131
2129
  }
2132
2130
  function buildLineGlowFilter(element) {
2133
- if (!chunkP3Y3OMAD_js.hasShapeProperties(element)) {
2131
+ if (!chunk3NDRTC7T_js.hasShapeProperties(element)) {
2134
2132
  return void 0;
2135
2133
  }
2136
2134
  const ss = element.shapeStyle;
@@ -2139,7 +2137,7 @@ function buildLineGlowFilter(element) {
2139
2137
  }
2140
2138
  const glowOpacity = typeof ss.lineGlowOpacity === "number" ? ss.lineGlowOpacity : 0.75;
2141
2139
  const glowRad = Math.round(Math.max(0, ss.lineGlowRadius));
2142
- const glowCol = chunkP3Y3OMAD_js.colorWithOpacity(chunkP3Y3OMAD_js.normalizeHexColor(ss.lineGlowColor, "#ffff00"), glowOpacity);
2140
+ const glowCol = chunk3NDRTC7T_js.colorWithOpacity(chunk3NDRTC7T_js.normalizeHexColor(ss.lineGlowColor, "#ffff00"), glowOpacity);
2143
2141
  return `drop-shadow(0 0 ${glowRad}px ${glowCol})`;
2144
2142
  }
2145
2143
  function mapDagBlendModeToCss(blend) {
@@ -2163,7 +2161,7 @@ function getDagDuotoneFilterId(elementId) {
2163
2161
  return `dag-duotone-${elementId}`;
2164
2162
  }
2165
2163
  function hasDagDuotoneEffect(element) {
2166
- if (!chunkP3Y3OMAD_js.hasShapeProperties(element)) {
2164
+ if (!chunk3NDRTC7T_js.hasShapeProperties(element)) {
2167
2165
  return false;
2168
2166
  }
2169
2167
  return Boolean(element.shapeStyle?.dagDuotone);
@@ -2226,7 +2224,7 @@ function getRoundRectRadiusPx(element) {
2226
2224
 
2227
2225
  // src/viewer/utils/shape-visual-3d.ts
2228
2226
  function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elementHeight) {
2229
- return chunkP3Y3OMAD_js.build3DExtrusionData(
2227
+ return chunk3NDRTC7T_js.build3DExtrusionData(
2230
2228
  shape3d,
2231
2229
  scene3d,
2232
2230
  fillColor,
@@ -2235,7 +2233,7 @@ function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elemen
2235
2233
  );
2236
2234
  }
2237
2235
  function apply3dEffects2(base, scene3d, shape3d, fillColorFallback) {
2238
- chunkP3Y3OMAD_js.apply3dEffects(base, scene3d, shape3d, fillColorFallback);
2236
+ chunk3NDRTC7T_js.apply3dEffects(base, scene3d, shape3d, fillColorFallback);
2239
2237
  }
2240
2238
 
2241
2239
  // src/viewer/utils/shape-visual-style.ts
@@ -2243,43 +2241,43 @@ function getGradientTilingCss(style) {
2243
2241
  if (!style || style.fillMode !== "gradient") {
2244
2242
  return void 0;
2245
2243
  }
2246
- const isStructuredLinear = (style.fillGradientType || "linear") === "linear" && chunkP3Y3OMAD_js.sanitizeGradientStops(style.fillGradientStops).length > 0;
2244
+ const isStructuredLinear = (style.fillGradientType || "linear") === "linear" && chunk3NDRTC7T_js.sanitizeGradientStops(style.fillGradientStops).length > 0;
2247
2245
  if (isStructuredLinear) {
2248
- const flip = chunkP3Y3OMAD_js.getGradientTileFlipCss(style.fillGradientFlip);
2246
+ const flip = chunk3NDRTC7T_js.getGradientTileFlipCss(style.fillGradientFlip);
2249
2247
  if (flip) {
2250
2248
  return flip;
2251
2249
  }
2252
2250
  }
2253
- return chunkP3Y3OMAD_js.getGradientTileRectCss(style.fillGradientTileRect);
2251
+ return chunk3NDRTC7T_js.getGradientTileRectCss(style.fillGradientTileRect);
2254
2252
  }
2255
2253
  function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeColor, animatesFill, animatesStroke) {
2256
- if (!chunkP3Y3OMAD_js.hasShapeProperties(element)) {
2254
+ if (!chunk3NDRTC7T_js.hasShapeProperties(element)) {
2257
2255
  return {};
2258
2256
  }
2259
2257
  const normalizedShapeType = getShapeType(element.shapeType);
2260
- const clipPath = chunkP3Y3OMAD_js.isIdentityRectClip(element) ? void 0 : chunkP3Y3OMAD_js.getResolvedShapeClipPath(element);
2258
+ const clipPath = chunk3NDRTC7T_js.isIdentityRectClip(element) ? void 0 : chunk3NDRTC7T_js.getResolvedShapeClipPath(element);
2261
2259
  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;
2262
- const rendersStrokeOnlyPreset = chunkP3Y3OMAD_js.isStrokeOnlyPresetElement(element);
2260
+ const rendersStrokeOnlyPreset = chunk3NDRTC7T_js.isStrokeOnlyPresetElement(element);
2263
2261
  const fillOpacity = element.shapeStyle?.fillOpacity;
2264
2262
  const strokeOpacity = element.shapeStyle?.strokeOpacity;
2265
- const strokeDash = chunkP3Y3OMAD_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2266
- const fillGradient = chunkP3Y3OMAD_js.buildCssGradientFromShapeStyle(element.shapeStyle, {
2263
+ const strokeDash = chunk3NDRTC7T_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2264
+ const fillGradient = chunk3NDRTC7T_js.buildCssGradientFromShapeStyle(element.shapeStyle, {
2267
2265
  rotation: element.rotation,
2268
2266
  width: element.width,
2269
2267
  height: element.height
2270
2268
  }) || element.shapeStyle?.fillGradient;
2271
- const shadowCss = chunkP3Y3OMAD_js.buildShadowCssFromShapeStyle(element.shapeStyle);
2272
- const innerShadowCss = chunkP3Y3OMAD_js.buildInnerShadowCssFromShapeStyle(element.shapeStyle);
2273
- const resolvedFillColor = chunkP3Y3OMAD_js.colorWithOpacity(fillColor, fillOpacity);
2274
- const resolvedStrokeColor = chunkP3Y3OMAD_js.colorWithOpacity(strokeColor, strokeOpacity);
2269
+ const shadowCss = chunk3NDRTC7T_js.buildShadowCssFromShapeStyle(element.shapeStyle);
2270
+ const innerShadowCss = chunk3NDRTC7T_js.buildInnerShadowCssFromShapeStyle(element.shapeStyle);
2271
+ const resolvedFillColor = chunk3NDRTC7T_js.colorWithOpacity(fillColor, fillOpacity);
2272
+ const resolvedStrokeColor = chunk3NDRTC7T_js.colorWithOpacity(strokeColor, strokeOpacity);
2275
2273
  const ss = element.shapeStyle;
2276
2274
  const gradientTiling = getGradientTilingCss(ss);
2277
- const paintsGradientOutline = chunkP3Y3OMAD_js.suppressesCssBorder(element);
2275
+ const paintsGradientOutline = chunk3NDRTC7T_js.suppressesCssBorder(element);
2278
2276
  const hasFillOverlayColor = Boolean(
2279
2277
  ss?.dagFillOverlayColor && ss.dagFillOverlayColor !== "transparent"
2280
2278
  );
2281
2279
  const combinedShadowParts = [];
2282
- const multiLayerShadow = chunkP3Y3OMAD_js.buildMultiLayerShadowCss(element.shapeStyle);
2280
+ const multiLayerShadow = chunk3NDRTC7T_js.buildMultiLayerShadowCss(element.shapeStyle);
2283
2281
  if (multiLayerShadow) {
2284
2282
  combinedShadowParts.push(multiLayerShadow);
2285
2283
  } else if (shadowCss) {
@@ -2288,7 +2286,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2288
2286
  if (innerShadowCss) {
2289
2287
  combinedShadowParts.push(innerShadowCss);
2290
2288
  }
2291
- const glowBoxShadow = chunkP3Y3OMAD_js.buildGlowBoxShadow(ss?.glowColor, ss?.glowRadius, ss?.glowOpacity);
2289
+ const glowBoxShadow = chunk3NDRTC7T_js.buildGlowBoxShadow(ss?.glowColor, ss?.glowRadius, ss?.glowOpacity);
2292
2290
  if (glowBoxShadow) {
2293
2291
  combinedShadowParts.push(glowBoxShadow);
2294
2292
  }
@@ -2296,7 +2294,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2296
2294
  if (lineShadow) {
2297
2295
  combinedShadowParts.push(lineShadow);
2298
2296
  }
2299
- const compoundLineShadow = chunkP3Y3OMAD_js.getCompoundLineBoxShadow(
2297
+ const compoundLineShadow = chunk3NDRTC7T_js.getCompoundLineBoxShadow(
2300
2298
  element.shapeStyle?.compoundLine,
2301
2299
  strokeWidth,
2302
2300
  resolvedStrokeColor
@@ -2309,11 +2307,11 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2309
2307
  if (ss?.glowColor && ss.glowColor !== "transparent" && ss.glowRadius) {
2310
2308
  const glowOpacity = typeof ss.glowOpacity === "number" ? ss.glowOpacity : 0.75;
2311
2309
  const glowRad = Math.round(Math.max(0, ss.glowRadius));
2312
- const glowCol = chunkP3Y3OMAD_js.colorWithOpacity(chunkP3Y3OMAD_js.normalizeHexColor(ss.glowColor, "#ffff00"), glowOpacity);
2310
+ const glowCol = chunk3NDRTC7T_js.colorWithOpacity(chunk3NDRTC7T_js.normalizeHexColor(ss.glowColor, "#ffff00"), glowOpacity);
2313
2311
  filterParts.push(`drop-shadow(0 0 ${glowRad}px ${glowCol})`);
2314
2312
  }
2315
2313
  if (typeof ss?.softEdgeRadius === "number" && ss.softEdgeRadius > 0) {
2316
- filterParts.push(`url(#${chunkP3Y3OMAD_js.getSoftEdgeFilterId(element.id)})`);
2314
+ filterParts.push(`url(#${chunk3NDRTC7T_js.getSoftEdgeFilterId(element.id)})`);
2317
2315
  }
2318
2316
  if (typeof ss?.blurRadius === "number" && ss.blurRadius > 0) {
2319
2317
  filterParts.push(`blur(${Math.round(ss.blurRadius)}px)`);
@@ -2322,13 +2320,13 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2322
2320
  if (lineGlowCss) {
2323
2321
  filterParts.push(lineGlowCss);
2324
2322
  }
2325
- const dagFilter = chunkP3Y3OMAD_js.getEffectDagFilter(ss, element.id);
2323
+ const dagFilter = chunk3NDRTC7T_js.getEffectDagFilter(ss, element.id);
2326
2324
  if (dagFilter) {
2327
2325
  filterParts.push(dagFilter);
2328
2326
  }
2329
2327
  const lineJoinCss = ss?.lineJoin === "round" ? "round" : ss?.lineJoin === "bevel" ? "bevel" : ss?.lineJoin === "miter" ? "miter" : void 0;
2330
2328
  const miterLimitCss = ss?.lineJoin === "miter" && typeof ss?.miterLimit === "number" ? Math.max(ss.miterLimit / 1e5, 1) : void 0;
2331
- const patternFill = chunkP3Y3OMAD_js.buildPatternFillCss(element.shapeStyle);
2329
+ const patternFill = chunk3NDRTC7T_js.buildPatternFillCss(element.shapeStyle);
2332
2330
  const imageFillUrl = ss?.fillMode === "image" && ss.fillImageUrl ? ss.fillImageUrl : void 0;
2333
2331
  const imageFillMode = ss?.fillImageMode || "stretch";
2334
2332
  let reflectCss;
@@ -2340,7 +2338,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2340
2338
  const endOpacity = typeof ss.reflectionEndOpacity === "number" ? ss.reflectionEndOpacity : 0;
2341
2339
  const fadeLength = typeof ss.reflectionEndPosition === "number" ? Math.round(ss.reflectionEndPosition * Math.max(element.height, 1)) : 100;
2342
2340
  const blurRadius = typeof ss.reflectionBlurRadius === "number" ? ss.reflectionBlurRadius : 0;
2343
- reflectCss = chunkP3Y3OMAD_js.buildReflectionCss(distance, startOpacity, endOpacity, fadeLength, blurRadius);
2341
+ reflectCss = chunk3NDRTC7T_js.buildReflectionCss(distance, startOpacity, endOpacity, fadeLength, blurRadius);
2344
2342
  }
2345
2343
  }
2346
2344
  const base = {
@@ -2386,9 +2384,9 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2386
2384
  // path following the shape's geometry, because a CSS border can only take
2387
2385
  // one colour. Keeping the border too would draw the parser's averaged
2388
2386
  // solid underneath the gradient.
2389
- borderWidth: strokeWidth > 0 && !paintsGradientOutline ? chunkP3Y3OMAD_js.getCompoundLineBorderWidth(ss?.compoundLine, strokeWidth) : 0,
2387
+ borderWidth: strokeWidth > 0 && !paintsGradientOutline ? chunk3NDRTC7T_js.getCompoundLineBorderWidth(ss?.compoundLine, strokeWidth) : 0,
2390
2388
  borderColor: strokeWidth > 0 && !paintsGradientOutline ? resolvedStrokeColor : void 0,
2391
- borderStyle: strokeWidth > 0 && !paintsGradientOutline ? chunkP3Y3OMAD_js.getCssBorderDashStyle(strokeDash, ss?.compoundLine) : void 0,
2389
+ borderStyle: strokeWidth > 0 && !paintsGradientOutline ? chunk3NDRTC7T_js.getCssBorderDashStyle(strokeDash, ss?.compoundLine) : void 0,
2392
2390
  strokeLinejoin: lineJoinCss,
2393
2391
  strokeMiterlimit: miterLimitCss,
2394
2392
  strokeLinecap: ss?.lineCap === "rnd" ? "round" : ss?.lineCap === "sq" ? "square" : ss?.lineCap === "flat" ? "butt" : void 0
@@ -2448,7 +2446,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2448
2446
  borderWidth: 0,
2449
2447
  borderTopWidth: Math.max(strokeWidth, 2),
2450
2448
  borderTopColor: resolvedStrokeColor,
2451
- borderTopStyle: chunkP3Y3OMAD_js.getCssBorderDashStyle(strokeDash)
2449
+ borderTopStyle: chunk3NDRTC7T_js.getCssBorderDashStyle(strokeDash)
2452
2450
  };
2453
2451
  }
2454
2452
  if (normalizedShapeType === "cylinder") {
@@ -2462,13 +2460,13 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2462
2460
  function getConnectorAdjustment(element, key, fallback) {
2463
2461
  const direct = element.shapeAdjustments?.[key];
2464
2462
  if (typeof direct === "number" && Number.isFinite(direct)) {
2465
- return chunkP3Y3OMAD_js.clampUnitInterval(direct / 1e5);
2463
+ return chunk3NDRTC7T_js.clampUnitInterval(direct / 1e5);
2466
2464
  }
2467
2465
  const fallbackKey = element.shapeAdjustments?.adj;
2468
2466
  if (typeof fallbackKey === "number" && Number.isFinite(fallbackKey)) {
2469
- return chunkP3Y3OMAD_js.clampUnitInterval(fallbackKey / 1e5);
2467
+ return chunk3NDRTC7T_js.clampUnitInterval(fallbackKey / 1e5);
2470
2468
  }
2471
- return chunkP3Y3OMAD_js.clampUnitInterval(fallback);
2469
+ return chunk3NDRTC7T_js.clampUnitInterval(fallback);
2472
2470
  }
2473
2471
  function getConnectorPathGeometry(element) {
2474
2472
  const width = Math.max(element.width, 0);
@@ -2601,7 +2599,7 @@ function toHexByte(value) {
2601
2599
  return clamped.toString(16).padStart(2, "0");
2602
2600
  }
2603
2601
  function shiftHex(hex, factor, towardsWhite) {
2604
- const channels = chunkP3Y3OMAD_js.hexToRgbChannels(hex);
2602
+ const channels = chunk3NDRTC7T_js.hexToRgbChannels(hex);
2605
2603
  if (!channels) {
2606
2604
  return hex;
2607
2605
  }
@@ -2627,7 +2625,7 @@ function buildCustomSubpathPaints(subpaths, hasFill, fillColor, fillOpacity) {
2627
2625
  const fillOff = subpath.fillMode === "none" || !hasFill;
2628
2626
  return {
2629
2627
  d: subpath.d,
2630
- fill: fillOff ? "none" : chunkP3Y3OMAD_js.colorWithOpacity(adjustFillForMode(fillColor, subpath.fillMode), fillOpacity),
2628
+ fill: fillOff ? "none" : chunk3NDRTC7T_js.colorWithOpacity(adjustFillForMode(fillColor, subpath.fillMode), fillOpacity),
2631
2629
  stroked: subpath.stroke !== false
2632
2630
  };
2633
2631
  });
@@ -2643,11 +2641,11 @@ function strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray) {
2643
2641
  strokePaint,
2644
2642
  strokeWidth,
2645
2643
  dashArray,
2646
- lineCap: chunkP3Y3OMAD_js.svgLineCap(shapeStyle?.lineCap),
2644
+ lineCap: chunk3NDRTC7T_js.svgLineCap(shapeStyle?.lineCap),
2647
2645
  lineJoin,
2648
2646
  miterLimit,
2649
- offsets: chunkP3Y3OMAD_js.getCompoundLineOffsets(shapeStyle?.compoundLine, strokeWidth),
2650
- widths: chunkP3Y3OMAD_js.getCompoundLineWidths(shapeStyle?.compoundLine, strokeWidth)
2647
+ offsets: chunk3NDRTC7T_js.getCompoundLineOffsets(shapeStyle?.compoundLine, strokeWidth),
2648
+ widths: chunk3NDRTC7T_js.getCompoundLineWidths(shapeStyle?.compoundLine, strokeWidth)
2651
2649
  };
2652
2650
  }
2653
2651
  function strokeStrands(d, keyBase, ctx) {
@@ -2695,9 +2693,9 @@ function gradientDefs(gradient) {
2695
2693
  }
2696
2694
  function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredPaths, shapeStyle, hasFill, fillColor, fillOpacity, strokePaint, strokeWidth, dashArray, animatesFill = false, gradient) {
2697
2695
  const ctx = strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray);
2698
- const subpaths = structuredPaths && structuredPaths.length > 0 ? chunkP3Y3OMAD_js.customGeometryPathsToSvgSubpaths(structuredPaths, pathWidth, pathHeight) : void 0;
2696
+ const subpaths = structuredPaths && structuredPaths.length > 0 ? chunk3NDRTC7T_js.customGeometryPathsToSvgSubpaths(structuredPaths, pathWidth, pathHeight) : void 0;
2699
2697
  const needsPerSubpath = subpaths !== void 0 && subpaths.some((sp) => sp.fillMode && sp.fillMode !== "norm" || sp.stroke === false);
2700
- const gradientPaint = gradient ? chunkP3Y3OMAD_js.svgGradientFillRef(gradient) : void 0;
2698
+ const gradientPaint = gradient ? chunk3NDRTC7T_js.svgGradientFillRef(gradient) : void 0;
2701
2699
  const nodes = [];
2702
2700
  if (subpaths && needsPerSubpath) {
2703
2701
  const paints = buildCustomSubpathPaints(subpaths, hasFill, fillColor, fillOpacity);
@@ -2729,7 +2727,7 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
2729
2727
  "path",
2730
2728
  {
2731
2729
  d: pathData,
2732
- fill: animatesFill ? "inherit" : gradientPaint ?? chunkP3Y3OMAD_js.colorWithOpacity(fillColor, fillOpacity),
2730
+ fill: animatesFill ? "inherit" : gradientPaint ?? chunk3NDRTC7T_js.colorWithOpacity(fillColor, fillOpacity),
2733
2731
  stroke: "none",
2734
2732
  vectorEffect: "non-scaling-stroke"
2735
2733
  },
@@ -2755,14 +2753,14 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
2755
2753
  );
2756
2754
  }
2757
2755
  function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor, animatesFill, animatesStroke) {
2758
- if (!chunkP3Y3OMAD_js.hasShapeProperties(element)) {
2756
+ if (!chunk3NDRTC7T_js.hasShapeProperties(element)) {
2759
2757
  return null;
2760
2758
  }
2761
2759
  const normalizedType = (element.shapeType || "").toLowerCase();
2762
- const fillPaint = animatesFill ? "inherit" : chunkP3Y3OMAD_js.colorWithOpacity(fillColor, element.shapeStyle?.fillOpacity);
2763
- const strokePaint = animatesStroke ? "inherit" : chunkP3Y3OMAD_js.colorWithOpacity(strokeColor, element.shapeStyle?.strokeOpacity);
2764
- const dashType = chunkP3Y3OMAD_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2765
- const dashArray = chunkP3Y3OMAD_js.getSvgStrokeDasharray(
2760
+ const fillPaint = animatesFill ? "inherit" : chunk3NDRTC7T_js.colorWithOpacity(fillColor, element.shapeStyle?.fillOpacity);
2761
+ const strokePaint = animatesStroke ? "inherit" : chunk3NDRTC7T_js.colorWithOpacity(strokeColor, element.shapeStyle?.strokeOpacity);
2762
+ const dashType = chunk3NDRTC7T_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2763
+ const dashArray = chunk3NDRTC7T_js.getSvgStrokeDasharray(
2766
2764
  dashType,
2767
2765
  Math.max(strokeWidth, 1),
2768
2766
  element.shapeStyle?.customDashSegments
@@ -2843,21 +2841,21 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2843
2841
  // container's `background-image` is suppressed for custom geometry, so
2844
2842
  // without this the shape fell back to the parser's representative solid
2845
2843
  // and lost every fade (issue #132).
2846
- chunkP3Y3OMAD_js.buildSvgGradientDef(element.shapeStyle, element.id)
2844
+ chunk3NDRTC7T_js.buildSvgGradientDef(element.shapeStyle, element.id)
2847
2845
  );
2848
2846
  }
2849
- if (chunkP3Y3OMAD_js.isCalloutShape(normalizedType)) {
2847
+ if (chunk3NDRTC7T_js.isCalloutShape(normalizedType)) {
2850
2848
  const width = Math.max(element.width, 1);
2851
2849
  const height = Math.max(element.height, 1);
2852
- const geometry = chunkP3Y3OMAD_js.getCalloutLeaderLineGeometry(
2850
+ const geometry = chunk3NDRTC7T_js.getCalloutLeaderLineGeometry(
2853
2851
  normalizedType,
2854
2852
  width,
2855
2853
  height,
2856
2854
  element.shapeAdjustments
2857
2855
  );
2858
2856
  if (geometry && geometry.points.length >= 2) {
2859
- const leaderPath = chunkP3Y3OMAD_js.buildCalloutLeaderLineSvgPath(geometry);
2860
- const bounds = chunkP3Y3OMAD_js.getCalloutViewBoxBounds(width, height, geometry);
2857
+ const leaderPath = chunk3NDRTC7T_js.buildCalloutLeaderLineSvgPath(geometry);
2858
+ const bounds = chunk3NDRTC7T_js.getCalloutViewBoxBounds(width, height, geometry);
2861
2859
  const lineStroke = Math.max(strokeWidth, 1);
2862
2860
  const offsetLeft = bounds.minX;
2863
2861
  const offsetTop = bounds.minY;
@@ -2920,10 +2918,10 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2920
2918
  const endArrowW = element.shapeStyle?.connectorEndArrowWidth;
2921
2919
  const endArrowL = element.shapeStyle?.connectorEndArrowLength;
2922
2920
  const compoundLine = element.shapeStyle?.compoundLine;
2923
- const connectorLineCap = chunkP3Y3OMAD_js.svgLineCap(element.shapeStyle?.lineCap);
2921
+ const connectorLineCap = chunk3NDRTC7T_js.svgLineCap(element.shapeStyle?.lineCap);
2924
2922
  const hitTargetWidth = Math.max(strokeWidth * 3, 12);
2925
- const offsets = chunkP3Y3OMAD_js.getCompoundLineOffsets(compoundLine, strokeWidth);
2926
- const widths = chunkP3Y3OMAD_js.getCompoundLineWidths(compoundLine, strokeWidth);
2923
+ const offsets = chunk3NDRTC7T_js.getCompoundLineOffsets(compoundLine, strokeWidth);
2924
+ const widths = chunk3NDRTC7T_js.getCompoundLineWidths(compoundLine, strokeWidth);
2927
2925
  return /* @__PURE__ */ jsxRuntime.jsxs(
2928
2926
  "svg",
2929
2927
  {
@@ -2990,15 +2988,15 @@ function parseGradientFillCss(gradFill) {
2990
2988
  }
2991
2989
  const parsed = stops.map((gs) => {
2992
2990
  const pos = Number.parseInt(String(gs["@_pos"] || "0"), 10) / 1e3;
2993
- const color = chunkP3Y3OMAD_js.parseDrawingColor(gs) ?? "#888888";
2994
- const opacity = chunkP3Y3OMAD_js.parseDrawingColorOpacity(gs);
2995
- return { pos, color: chunkP3Y3OMAD_js.colorWithOpacity(color, opacity) };
2991
+ const color = chunk3NDRTC7T_js.parseDrawingColor(gs) ?? "#888888";
2992
+ const opacity = chunk3NDRTC7T_js.parseDrawingColorOpacity(gs);
2993
+ return { pos, color: chunk3NDRTC7T_js.colorWithOpacity(color, opacity) };
2996
2994
  }).sort((a, b) => a.pos - b.pos);
2997
2995
  const stopStrings = parsed.map((s) => `${s.color} ${s.pos.toFixed(1)}%`).join(", ");
2998
2996
  const lin = gradFill["a:lin"];
2999
2997
  if (lin) {
3000
2998
  const angRaw = Number.parseInt(String(lin["@_ang"] || "0"), 10);
3001
- const angleDeg = Math.round(chunkP3Y3OMAD_js.ooxmlGradientAngleToCssDegrees(angRaw / 6e4));
2999
+ const angleDeg = Math.round(chunk3NDRTC7T_js.ooxmlGradientAngleToCssDegrees(angRaw / 6e4));
3002
3000
  return `linear-gradient(${angleDeg}deg, ${stopStrings})`;
3003
3001
  }
3004
3002
  const path = gradFill["a:path"];
@@ -3033,8 +3031,8 @@ function parsePatternFillCss(pattFill) {
3033
3031
  if (!pattFill) {
3034
3032
  return void 0;
3035
3033
  }
3036
- const fgColor = chunkP3Y3OMAD_js.parseDrawingColor(pattFill["a:fgClr"]) ?? "#000000";
3037
- const bgColor = chunkP3Y3OMAD_js.parseDrawingColor(pattFill["a:bgClr"]) ?? "#ffffff";
3034
+ const fgColor = chunk3NDRTC7T_js.parseDrawingColor(pattFill["a:fgClr"]) ?? "#000000";
3035
+ const bgColor = chunk3NDRTC7T_js.parseDrawingColor(pattFill["a:bgClr"]) ?? "#ffffff";
3038
3036
  const preset = String(pattFill["@_prst"] || "ltDnDiag");
3039
3037
  switch (preset) {
3040
3038
  case "ltHorz":
@@ -3145,11 +3143,11 @@ function parseCellBorders(cellProperties) {
3145
3143
  const prstDash = ln["a:prstDash"];
3146
3144
  const dashVal = prstDash ? String(prstDash["@_val"] || "") : void 0;
3147
3145
  const cssBorderStyle = ooxmlDashToCss(dashVal);
3148
- const color = chunkP3Y3OMAD_js.parseDrawingColor(ln["a:solidFill"]);
3146
+ const color = chunk3NDRTC7T_js.parseDrawingColor(ln["a:solidFill"]);
3149
3147
  if (color) {
3150
- const opacity = chunkP3Y3OMAD_js.parseDrawingColorOpacity(ln["a:solidFill"]);
3148
+ const opacity = chunk3NDRTC7T_js.parseDrawingColorOpacity(ln["a:solidFill"]);
3151
3149
  const key = `${edge.prefix}`;
3152
- borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${chunkP3Y3OMAD_js.colorWithOpacity(color, opacity)}`;
3150
+ borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${chunk3NDRTC7T_js.colorWithOpacity(color, opacity)}`;
3153
3151
  }
3154
3152
  }
3155
3153
  return borderStyle;
@@ -3162,7 +3160,7 @@ function parseCellTextEffects(runProps) {
3162
3160
  const textShadowParts = [];
3163
3161
  const outerShdw = effectLst["a:outerShdw"];
3164
3162
  if (outerShdw) {
3165
- const shdwColor = chunkP3Y3OMAD_js.parseDrawingColor(outerShdw);
3163
+ const shdwColor = chunk3NDRTC7T_js.parseDrawingColor(outerShdw);
3166
3164
  if (shdwColor) {
3167
3165
  const blurRad = Number.parseInt(String(outerShdw["@_blurRad"] || "0"), 10);
3168
3166
  const blurPx = blurRad > 0 ? Math.round(blurRad / 12700) : 0;
@@ -3180,7 +3178,7 @@ function parseCellTextEffects(runProps) {
3180
3178
  }
3181
3179
  const glow = effectLst["a:glow"];
3182
3180
  if (glow) {
3183
- const glowColor = chunkP3Y3OMAD_js.parseDrawingColor(glow);
3181
+ const glowColor = chunk3NDRTC7T_js.parseDrawingColor(glow);
3184
3182
  if (glowColor) {
3185
3183
  const glowRad = Number.parseInt(String(glow["@_rad"] || "0"), 10);
3186
3184
  const glowPx = glowRad > 0 ? Math.round(glowRad / 12700) : 2;
@@ -3259,10 +3257,10 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
3259
3257
  if (runProps?.["@_u"] !== void 0) {
3260
3258
  cellStyle.textDecorationLine = runProps["@_u"] === "sng" ? "underline" : "none";
3261
3259
  }
3262
- const runColor = chunkP3Y3OMAD_js.parseDrawingColor(runProps?.["a:solidFill"], schemeColorOverrides) || chunkP3Y3OMAD_js.parseDrawingColor(runProps?.["a:highlight"], schemeColorOverrides);
3260
+ const runColor = chunk3NDRTC7T_js.parseDrawingColor(runProps?.["a:solidFill"], schemeColorOverrides) || chunk3NDRTC7T_js.parseDrawingColor(runProps?.["a:highlight"], schemeColorOverrides);
3263
3261
  if (runColor) {
3264
- const opacity = chunkP3Y3OMAD_js.parseDrawingColorOpacity(runProps?.["a:solidFill"]);
3265
- cellStyle.color = chunkP3Y3OMAD_js.colorWithOpacity(runColor, opacity);
3262
+ const opacity = chunk3NDRTC7T_js.parseDrawingColorOpacity(runProps?.["a:solidFill"]);
3263
+ cellStyle.color = chunk3NDRTC7T_js.colorWithOpacity(runColor, opacity);
3266
3264
  }
3267
3265
  const fontFamily = runProps?.["a:latin"]?.["@_typeface"] || runProps?.["a:ea"]?.["@_typeface"] || runProps?.["a:cs"]?.["@_typeface"];
3268
3266
  if (fontFamily) {
@@ -3272,15 +3270,15 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
3272
3270
  cellStyle.textAlign = parseParagraphAlignment(paragraphProperties["@_algn"]);
3273
3271
  }
3274
3272
  const cellProperties = cellXml["a:tcPr"];
3275
- const cellFill = chunkP3Y3OMAD_js.parseDrawingColor(
3273
+ const cellFill = chunk3NDRTC7T_js.parseDrawingColor(
3276
3274
  cellProperties?.["a:solidFill"],
3277
3275
  schemeColorOverrides
3278
3276
  );
3279
3277
  if (cellFill) {
3280
- const opacity = chunkP3Y3OMAD_js.parseDrawingColorOpacity(
3278
+ const opacity = chunk3NDRTC7T_js.parseDrawingColorOpacity(
3281
3279
  cellProperties?.["a:solidFill"]
3282
3280
  );
3283
- cellStyle.backgroundColor = chunkP3Y3OMAD_js.colorWithOpacity(cellFill, opacity);
3281
+ cellStyle.backgroundColor = chunk3NDRTC7T_js.colorWithOpacity(cellFill, opacity);
3284
3282
  } else {
3285
3283
  const gradCss = parseGradientFillCss(cellProperties?.["a:gradFill"]);
3286
3284
  if (gradCss) {
@@ -3295,16 +3293,16 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
3295
3293
  const edgeBorders = parseCellBorders(cellProperties);
3296
3294
  Object.assign(cellStyle, edgeBorders);
3297
3295
  if (!cellStyle.borderLeftColor && !cellStyle.borderRightColor && !cellStyle.borderTopColor && !cellStyle.borderBottomColor) {
3298
- const borderColor = chunkP3Y3OMAD_js.parseDrawingColor(
3296
+ const borderColor = chunk3NDRTC7T_js.parseDrawingColor(
3299
3297
  cellProperties?.["a:lnL"]?.["a:solidFill"],
3300
3298
  schemeColorOverrides
3301
- ) || chunkP3Y3OMAD_js.parseDrawingColor(
3299
+ ) || chunk3NDRTC7T_js.parseDrawingColor(
3302
3300
  cellProperties?.["a:lnR"]?.["a:solidFill"],
3303
3301
  schemeColorOverrides
3304
- ) || chunkP3Y3OMAD_js.parseDrawingColor(
3302
+ ) || chunk3NDRTC7T_js.parseDrawingColor(
3305
3303
  cellProperties?.["a:lnT"]?.["a:solidFill"],
3306
3304
  schemeColorOverrides
3307
- ) || chunkP3Y3OMAD_js.parseDrawingColor(
3305
+ ) || chunk3NDRTC7T_js.parseDrawingColor(
3308
3306
  cellProperties?.["a:lnB"]?.["a:solidFill"],
3309
3307
  schemeColorOverrides
3310
3308
  );
@@ -3383,10 +3381,10 @@ function resolveTableStyleFillColor(fill, colorScheme) {
3383
3381
  }
3384
3382
  let color = base;
3385
3383
  if (fill.tint !== void 0 && fill.tint > 0) {
3386
- color = chunkP3Y3OMAD_js.tintColor2(color, fill.tint / 1e5);
3384
+ color = chunk3NDRTC7T_js.tintColor2(color, fill.tint / 1e5);
3387
3385
  }
3388
3386
  if (fill.shade !== void 0 && fill.shade > 0) {
3389
- color = chunkP3Y3OMAD_js.shadeColor2(color, 1 - fill.shade / 1e5);
3387
+ color = chunk3NDRTC7T_js.shadeColor2(color, 1 - fill.shade / 1e5);
3390
3388
  }
3391
3389
  return color;
3392
3390
  }
@@ -3411,7 +3409,7 @@ function applyTableStyleText(text, colorScheme, style, fontScheme) {
3411
3409
  style.fontFamily = text.fontFace;
3412
3410
  applied = true;
3413
3411
  } else {
3414
- const refFont = chunkP3Y3OMAD_js.resolveFontRefIdx(text.fontRefIdx, fontScheme);
3412
+ const refFont = chunk3NDRTC7T_js.resolveFontRefIdx(text.fontRefIdx, fontScheme);
3415
3413
  if (refFont) {
3416
3414
  style.fontFamily = refFont;
3417
3415
  applied = true;
@@ -3422,10 +3420,10 @@ function applyTableStyleText(text, colorScheme, style, fontScheme) {
3422
3420
  if (base) {
3423
3421
  let color = base;
3424
3422
  if (text.fontTint !== void 0 && text.fontTint > 0) {
3425
- color = chunkP3Y3OMAD_js.tintColor2(color, text.fontTint / 1e5);
3423
+ color = chunk3NDRTC7T_js.tintColor2(color, text.fontTint / 1e5);
3426
3424
  }
3427
3425
  if (text.fontShade !== void 0 && text.fontShade > 0) {
3428
- color = chunkP3Y3OMAD_js.shadeColor2(color, 1 - text.fontShade / 1e5);
3426
+ color = chunk3NDRTC7T_js.shadeColor2(color, 1 - text.fontShade / 1e5);
3429
3427
  }
3430
3428
  style.color = color;
3431
3429
  applied = true;
@@ -3614,7 +3612,7 @@ function parseTableElementData(element, fallbackTextStyle) {
3614
3612
  };
3615
3613
  }
3616
3614
  function getCellDiagonalBorders2(style, tableData, pos, styleCtx) {
3617
- return chunkP3Y3OMAD_js.getCellDiagonalBorders(style, tableData, pos, {
3615
+ return chunk3NDRTC7T_js.getCellDiagonalBorders(style, tableData, pos, {
3618
3616
  tableStyleMap: styleCtx?.tableStyleMap,
3619
3617
  colorScheme: styleCtx?.theme?.colorScheme,
3620
3618
  fontScheme: styleCtx?.theme?.fontScheme
@@ -3762,9 +3760,9 @@ function cellStyleToCss(style) {
3762
3760
  if (style.gradientFillCss) {
3763
3761
  css.background = style.gradientFillCss;
3764
3762
  } else if (style.fillMode === "pattern" && style.patternFillPreset) {
3765
- const fg = chunkP3Y3OMAD_js.normalizeHexColor(style.patternFillForeground, "#000000");
3766
- const bg = chunkP3Y3OMAD_js.normalizeHexColor(style.patternFillBackground, "#ffffff");
3767
- const svgPattern = chunkP3Y3OMAD_js.getPatternSvg(style.patternFillPreset, fg, bg);
3763
+ const fg = chunk3NDRTC7T_js.normalizeHexColor(style.patternFillForeground, "#000000");
3764
+ const bg = chunk3NDRTC7T_js.normalizeHexColor(style.patternFillBackground, "#ffffff");
3765
+ const svgPattern = chunk3NDRTC7T_js.getPatternSvg(style.patternFillPreset, fg, bg);
3768
3766
  if (svgPattern) {
3769
3767
  const encoded = encodeURIComponent(svgPattern);
3770
3768
  css.backgroundImage = `url("data:image/svg+xml,${encoded}")`;
@@ -3840,7 +3838,7 @@ function cellStyleToCss(style) {
3840
3838
  if (edge.width || edge.color) {
3841
3839
  const w = edge.width ?? 1;
3842
3840
  const c = edge.color ?? style.borderColor ?? "#000000";
3843
- const s = chunkP3Y3OMAD_js.ooxmlDashToCssBorderStyle(edge.dash);
3841
+ const s = chunk3NDRTC7T_js.ooxmlDashToCssBorderStyle(edge.dash);
3844
3842
  css[edge.prefix] = `${w}px ${s} ${c}`;
3845
3843
  }
3846
3844
  }
@@ -3871,7 +3869,7 @@ function cellStyleToCss(style) {
3871
3869
  css.textShadow = textShadowParts.join(", ");
3872
3870
  }
3873
3871
  if (style.cell3D) {
3874
- Object.assign(css, chunkP3Y3OMAD_js.cell3DBevelCss(style.cell3D));
3872
+ Object.assign(css, chunk3NDRTC7T_js.cell3DBevelCss(style.cell3D));
3875
3873
  }
3876
3874
  return css;
3877
3875
  }
@@ -3885,7 +3883,7 @@ function TableResizeOverlay({
3885
3883
  const containerRef = React6.useRef(null);
3886
3884
  const [rowBounds, setRowBounds] = React6.useState([]);
3887
3885
  const dragRef = React6.useRef(null);
3888
- const colBoundaries = React6.useMemo(() => chunkP3Y3OMAD_js.computeColumnBoundaries(columnWidths), [columnWidths]);
3886
+ const colBoundaries = React6.useMemo(() => chunk3NDRTC7T_js.computeColumnBoundaries(columnWidths), [columnWidths]);
3889
3887
  const measureRows = React6.useCallback(() => {
3890
3888
  const container = containerRef.current;
3891
3889
  if (!container) {
@@ -3932,11 +3930,11 @@ function TableResizeOverlay({
3932
3930
  const rect = containerRef.current.getBoundingClientRect();
3933
3931
  if (drag.type === "col" && drag.initialWidths && onResizeColumns) {
3934
3932
  const deltaProp = (e.clientX - drag.startPos) / rect.width;
3935
- onResizeColumns(chunkP3Y3OMAD_js.computeResizedColumnWidths(drag.initialWidths, drag.index, deltaProp));
3933
+ onResizeColumns(chunk3NDRTC7T_js.computeResizedColumnWidths(drag.initialWidths, drag.index, deltaProp));
3936
3934
  } else if (drag.type === "row" && onResizeRow) {
3937
3935
  const deltaY = e.clientY - drag.startPos;
3938
- const newHeight = chunkP3Y3OMAD_js.computeResizedRowHeight(
3939
- drag.initialRowHeight ?? chunkP3Y3OMAD_js.DEFAULT_ROW_HEIGHT,
3936
+ const newHeight = chunk3NDRTC7T_js.computeResizedRowHeight(
3937
+ drag.initialRowHeight ?? chunk3NDRTC7T_js.DEFAULT_ROW_HEIGHT,
3940
3938
  deltaY
3941
3939
  );
3942
3940
  onResizeRow(drag.index, newHeight);
@@ -3974,7 +3972,7 @@ function TableResizeOverlay({
3974
3972
  e.stopPropagation();
3975
3973
  const table = containerRef.current?.querySelector("table");
3976
3974
  const tr = table?.querySelectorAll("tbody > tr")[index];
3977
- const actualHeight = tr?.offsetHeight ?? chunkP3Y3OMAD_js.DEFAULT_ROW_HEIGHT;
3975
+ const actualHeight = tr?.offsetHeight ?? chunk3NDRTC7T_js.DEFAULT_ROW_HEIGHT;
3978
3976
  document.body.style.cursor = "row-resize";
3979
3977
  document.body.style.userSelect = "none";
3980
3978
  dragRef.current = {
@@ -4022,7 +4020,7 @@ function renderTableFromTableData(element, textStyle, options) {
4022
4020
  }
4023
4021
  const first = selectedCell.selectedCells[0];
4024
4022
  const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
4025
- return chunkP3Y3OMAD_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableData);
4023
+ return chunk3NDRTC7T_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableData);
4026
4024
  })();
4027
4025
  return /* @__PURE__ */ jsxRuntime.jsx(
4028
4026
  TableResizeOverlay,
@@ -4042,7 +4040,7 @@ function renderTableFromTableData(element, textStyle, options) {
4042
4040
  "table",
4043
4041
  {
4044
4042
  className: "w-full h-full border-collapse table-fixed",
4045
- style: { fontFamily: chunkP3Y3OMAD_js.DEFAULT_FONT_FAMILY },
4043
+ style: { fontFamily: chunk3NDRTC7T_js.DEFAULT_FONT_FAMILY },
4046
4044
  children: [
4047
4045
  tableData.columnWidths.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("colgroup", { children: tableData.columnWidths.map((w, ci) => /* @__PURE__ */ jsxRuntime.jsx(
4048
4046
  "col",
@@ -4060,7 +4058,7 @@ function renderTableFromTableData(element, textStyle, options) {
4060
4058
  return null;
4061
4059
  }
4062
4060
  const isCellSelected = selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex;
4063
- const isInMultiSelection = chunkP3Y3OMAD_js.isCellInRect(rowIndex, cellIndex, selectionRect);
4061
+ const isInMultiSelection = chunk3NDRTC7T_js.isCellInRect(rowIndex, cellIndex, selectionRect);
4064
4062
  const isCellEditing = isCellSelected && selectedCell?.isEditing;
4065
4063
  const diag = getCellDiagonalBorders2(
4066
4064
  cell.style,
@@ -4090,7 +4088,7 @@ function renderTableFromTableData(element, textStyle, options) {
4090
4088
  }
4091
4089
  event.stopPropagation();
4092
4090
  if (event.shiftKey && selectedCell) {
4093
- const rect = chunkP3Y3OMAD_js.computeSelectionRect(
4091
+ const rect = chunk3NDRTC7T_js.computeSelectionRect(
4094
4092
  selectedCell.rowIndex,
4095
4093
  selectedCell.columnIndex,
4096
4094
  rowIndex,
@@ -4100,7 +4098,7 @@ function renderTableFromTableData(element, textStyle, options) {
4100
4098
  options?.onSelectCell?.({
4101
4099
  rowIndex: selectedCell.rowIndex,
4102
4100
  columnIndex: selectedCell.columnIndex,
4103
- selectedCells: chunkP3Y3OMAD_js.rectToCells(rect)
4101
+ selectedCells: chunk3NDRTC7T_js.rectToCells(rect)
4104
4102
  });
4105
4103
  } else {
4106
4104
  options?.onSelectCell?.({
@@ -4179,7 +4177,7 @@ function renderTableElement(element, textStyle, options) {
4179
4177
  }
4180
4178
  const first = selectedCell.selectedCells[0];
4181
4179
  const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
4182
- return chunkP3Y3OMAD_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableEl.tableData);
4180
+ return chunk3NDRTC7T_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableEl.tableData);
4183
4181
  })();
4184
4182
  const schemeOverrides = options?.styleCtx?.theme?.colorScheme ? options.styleCtx.theme.colorScheme : void 0;
4185
4183
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -4200,7 +4198,7 @@ function renderTableElement(element, textStyle, options) {
4200
4198
  "table",
4201
4199
  {
4202
4200
  className: "w-full h-full border-collapse table-fixed",
4203
- style: { fontFamily: chunkP3Y3OMAD_js.DEFAULT_FONT_FAMILY },
4201
+ style: { fontFamily: chunk3NDRTC7T_js.DEFAULT_FONT_FAMILY },
4204
4202
  children: [
4205
4203
  parsedTable.columnPercentages.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx("colgroup", { children: parsedTable.columnPercentages.map((percentage, columnIndex) => /* @__PURE__ */ jsxRuntime.jsx(
4206
4204
  "col",
@@ -4261,7 +4259,7 @@ function renderTableElement(element, textStyle, options) {
4261
4259
  "border px-1 py-0.5 align-top",
4262
4260
  isEditable && hasCellSelectionHandler ? "border-blue-200/70 cursor-cell" : "border-white/30",
4263
4261
  selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex ? "ring-1 ring-inset ring-blue-500" : null,
4264
- chunkP3Y3OMAD_js.isCellInRect(rowIndex, cellIndex, xmlSelectionRect) && !(selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex) ? "bg-blue-500/15 ring-1 ring-inset ring-blue-400/50" : null
4262
+ chunk3NDRTC7T_js.isCellInRect(rowIndex, cellIndex, xmlSelectionRect) && !(selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex) ? "bg-blue-500/15 ring-1 ring-inset ring-blue-400/50" : null
4265
4263
  ),
4266
4264
  colSpan,
4267
4265
  rowSpan: rSpan,
@@ -4272,7 +4270,7 @@ function renderTableElement(element, textStyle, options) {
4272
4270
  }
4273
4271
  event.stopPropagation();
4274
4272
  if (event.shiftKey && selectedCell && tableEl.tableData) {
4275
- const rect = chunkP3Y3OMAD_js.computeSelectionRect(
4273
+ const rect = chunk3NDRTC7T_js.computeSelectionRect(
4276
4274
  selectedCell.rowIndex,
4277
4275
  selectedCell.columnIndex,
4278
4276
  rowIndex,
@@ -4282,7 +4280,7 @@ function renderTableElement(element, textStyle, options) {
4282
4280
  options?.onSelectCell?.({
4283
4281
  rowIndex: selectedCell.rowIndex,
4284
4282
  columnIndex: selectedCell.columnIndex,
4285
- selectedCells: chunkP3Y3OMAD_js.rectToCells(rect)
4283
+ selectedCells: chunk3NDRTC7T_js.rectToCells(rect)
4286
4284
  });
4287
4285
  } else {
4288
4286
  options?.onSelectCell?.({
@@ -4339,24 +4337,24 @@ function renderTableElement(element, textStyle, options) {
4339
4337
  }
4340
4338
  var LEGEND_ITEM_WIDTH = 80;
4341
4339
  function partAttrs(part) {
4342
- return part ? chunkP3Y3OMAD_js.chartPartToAttrs(part) : void 0;
4340
+ return part ? chunk3NDRTC7T_js.chartPartToAttrs(part) : void 0;
4343
4341
  }
4344
4342
  function resolveReactPalette(chartData) {
4345
4343
  if (chartData.colorPalette && chartData.colorPalette.length > 0) {
4346
4344
  return chartData.colorPalette;
4347
4345
  }
4348
- return [...chunkP3Y3OMAD_js.getChartStylePalette(chartData.style?.styleId)];
4346
+ return [...chunk3NDRTC7T_js.getChartStylePalette(chartData.style?.styleId)];
4349
4347
  }
4350
4348
  function buildReactChartViewModel(element) {
4351
4349
  if (element.type !== "chart" || !element.chartData) {
4352
- return chunkP3Y3OMAD_js.buildChartViewModel(element);
4350
+ return chunk3NDRTC7T_js.buildChartViewModel(element);
4353
4351
  }
4354
4352
  const palette = resolveReactPalette(element.chartData);
4355
4353
  const themedElement = {
4356
4354
  ...element,
4357
4355
  chartData: { ...element.chartData, colorPalette: palette }
4358
4356
  };
4359
- return chunkP3Y3OMAD_js.buildChartViewModel(themedElement);
4357
+ return chunk3NDRTC7T_js.buildChartViewModel(themedElement);
4360
4358
  }
4361
4359
  function renderPrimitive(prim, key) {
4362
4360
  switch (prim.kind) {
@@ -4745,7 +4743,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4745
4743
  const unmatchedRows = [];
4746
4744
  categories.forEach((cat, i) => {
4747
4745
  const value = values[i] ?? 0;
4748
- const code = chunkP3Y3OMAD_js.resolveRegionCode(cat);
4746
+ const code = chunk3NDRTC7T_js.resolveRegionCode(cat);
4749
4747
  if (code) {
4750
4748
  regionValueMap.set(code, { value, label: cat });
4751
4749
  } else {
@@ -4783,8 +4781,8 @@ function renderMapChart(element, chartData, categoryLabels) {
4783
4781
  let fill = "#e2e8f0";
4784
4782
  let dataLabel = null;
4785
4783
  if (entry) {
4786
- const t = chunkP3Y3OMAD_js.normalizeValue(entry.value, minVal, maxVal);
4787
- fill = chunkP3Y3OMAD_js.sequentialColorScale(t);
4784
+ const t = chunk3NDRTC7T_js.normalizeValue(entry.value, minVal, maxVal);
4785
+ fill = chunk3NDRTC7T_js.sequentialColorScale(t);
4788
4786
  dataLabel = /* @__PURE__ */ jsxRuntime.jsx(
4789
4787
  "text",
4790
4788
  {
@@ -4795,7 +4793,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4795
4793
  fontWeight: 600,
4796
4794
  fill: "#1e293b",
4797
4795
  style: { pointerEvents: "none" },
4798
- children: chunkP3Y3OMAD_js.formatAxisValue(entry.value)
4796
+ children: chunk3NDRTC7T_js.formatAxisValue(entry.value)
4799
4797
  },
4800
4798
  `${element.id}-map-dl-${region.code}`
4801
4799
  );
@@ -4813,7 +4811,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4813
4811
  opacity: 0.9,
4814
4812
  children: /* @__PURE__ */ jsxRuntime.jsxs("title", { children: [
4815
4813
  region.name,
4816
- entry ? `: ${chunkP3Y3OMAD_js.formatAxisValue(entry.value)}` : ""
4814
+ entry ? `: ${chunk3NDRTC7T_js.formatAxisValue(entry.value)}` : ""
4817
4815
  ] })
4818
4816
  }
4819
4817
  ),
@@ -4851,7 +4849,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4851
4849
  fontSize: 7,
4852
4850
  fill: "#64748b",
4853
4851
  textAnchor: "middle",
4854
- children: chunkP3Y3OMAD_js.formatAxisValue(minVal)
4852
+ children: chunk3NDRTC7T_js.formatAxisValue(minVal)
4855
4853
  },
4856
4854
  `${element.id}-map-legend-min`
4857
4855
  ),
@@ -4863,7 +4861,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4863
4861
  fontSize: 7,
4864
4862
  fill: "#64748b",
4865
4863
  textAnchor: "middle",
4866
- children: chunkP3Y3OMAD_js.formatAxisValue(maxVal)
4864
+ children: chunk3NDRTC7T_js.formatAxisValue(maxVal)
4867
4865
  },
4868
4866
  `${element.id}-map-legend-max`
4869
4867
  )
@@ -4929,7 +4927,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4929
4927
  y,
4930
4928
  fontSize,
4931
4929
  fill: "#475569",
4932
- children: chunkP3Y3OMAD_js.formatAxisValue(row.value)
4930
+ children: chunk3NDRTC7T_js.formatAxisValue(row.value)
4933
4931
  },
4934
4932
  `${element.id}-map-ft-val-${i}`
4935
4933
  )
@@ -5000,7 +4998,7 @@ function renderStackedBarChart(element, _chartData, _categoryLabels) {
5000
4998
 
5001
4999
  // src/viewer/utils/chart-overlay-utils.ts
5002
5000
  function sColor(series, idx) {
5003
- return chunkP3Y3OMAD_js.seriesColor(series, idx);
5001
+ return chunk3NDRTC7T_js.seriesColor(series, idx);
5004
5002
  }
5005
5003
  function valToY(val, range, topY, bottomY) {
5006
5004
  const usable = bottomY - topY;
@@ -5539,7 +5537,7 @@ function renderLegend(id, style, series, layout, colorPalette) {
5539
5537
  width: 10,
5540
5538
  height: 10,
5541
5539
  rx: 2,
5542
- fill: chunkP3Y3OMAD_js.seriesColor(s, i, style?.styleId, colorPalette)
5540
+ fill: chunk3NDRTC7T_js.seriesColor(s, i, style?.styleId, colorPalette)
5543
5541
  },
5544
5542
  `${id}-leg-r-${i}`
5545
5543
  )
@@ -5563,7 +5561,7 @@ function renderLegend(id, style, series, layout, colorPalette) {
5563
5561
  width: 10,
5564
5562
  height: 10,
5565
5563
  rx: 2,
5566
- fill: chunkP3Y3OMAD_js.seriesColor(s, i, style?.styleId, colorPalette)
5564
+ fill: chunk3NDRTC7T_js.seriesColor(s, i, style?.styleId, colorPalette)
5567
5565
  }
5568
5566
  ),
5569
5567
  /* @__PURE__ */ jsxRuntime.jsx("text", { x: x + 14, y: cy + 8, fontSize: 9, fill: "#475569", children: s.name || `Series ${i + 1}` })
@@ -5576,9 +5574,9 @@ function renderGridlines(id, style, range, layout) {
5576
5574
  }
5577
5575
  const lines = [];
5578
5576
  if (range.logScale && range.logBase) {
5579
- const ticks = chunkP3Y3OMAD_js.generateLogTicks(range);
5577
+ const ticks = chunk3NDRTC7T_js.generateLogTicks(range);
5580
5578
  ticks.forEach((tickVal, i) => {
5581
- const y = chunkP3Y3OMAD_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
5579
+ const y = chunk3NDRTC7T_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
5582
5580
  lines.push(
5583
5581
  /* @__PURE__ */ jsxRuntime.jsx(
5584
5582
  "line",
@@ -5599,7 +5597,7 @@ function renderGridlines(id, style, range, layout) {
5599
5597
  const steps = 4;
5600
5598
  for (let i = 0; i <= steps; i++) {
5601
5599
  const val = range.min + range.span * i / steps;
5602
- const y = chunkP3Y3OMAD_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5600
+ const y = chunk3NDRTC7T_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5603
5601
  lines.push(
5604
5602
  /* @__PURE__ */ jsxRuntime.jsx(
5605
5603
  "line",
@@ -5623,9 +5621,9 @@ function renderValueAxis(id, range, layout, axisFormatting) {
5623
5621
  const labels = [];
5624
5622
  const hasDisplayUnits = Boolean(axisFormatting?.displayUnits);
5625
5623
  if (range.logScale && range.logBase) {
5626
- const ticks = chunkP3Y3OMAD_js.generateLogTicks(range);
5624
+ const ticks = chunk3NDRTC7T_js.generateLogTicks(range);
5627
5625
  ticks.forEach((tickVal, i) => {
5628
- const y = chunkP3Y3OMAD_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
5626
+ const y = chunk3NDRTC7T_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
5629
5627
  labels.push(
5630
5628
  /* @__PURE__ */ jsxRuntime.jsx(
5631
5629
  "text",
@@ -5635,7 +5633,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
5635
5633
  textAnchor: "end",
5636
5634
  fontSize: 8,
5637
5635
  fill: "#64748b",
5638
- children: hasDisplayUnits ? chunkP3Y3OMAD_js.formatAxisValueWithUnits(tickVal, axisFormatting) : chunkP3Y3OMAD_js.formatAxisValue(tickVal)
5636
+ children: hasDisplayUnits ? chunk3NDRTC7T_js.formatAxisValueWithUnits(tickVal, axisFormatting) : chunk3NDRTC7T_js.formatAxisValue(tickVal)
5639
5637
  },
5640
5638
  `${id}-vaxis-log-${i}`
5641
5639
  )
@@ -5645,7 +5643,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
5645
5643
  const steps = 4;
5646
5644
  for (let i = 0; i <= steps; i++) {
5647
5645
  const val = range.min + range.span * i / steps;
5648
- const y = chunkP3Y3OMAD_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5646
+ const y = chunk3NDRTC7T_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5649
5647
  labels.push(
5650
5648
  /* @__PURE__ */ jsxRuntime.jsx(
5651
5649
  "text",
@@ -5655,7 +5653,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
5655
5653
  textAnchor: "end",
5656
5654
  fontSize: 8,
5657
5655
  fill: "#64748b",
5658
- children: hasDisplayUnits ? chunkP3Y3OMAD_js.formatAxisValueWithUnits(val, axisFormatting) : chunkP3Y3OMAD_js.formatAxisValue(val)
5656
+ children: hasDisplayUnits ? chunk3NDRTC7T_js.formatAxisValueWithUnits(val, axisFormatting) : chunk3NDRTC7T_js.formatAxisValue(val)
5659
5657
  },
5660
5658
  `${id}-vaxis-${i}`
5661
5659
  )
@@ -5663,7 +5661,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
5663
5661
  }
5664
5662
  }
5665
5663
  if (hasDisplayUnits) {
5666
- const unitLabel = chunkP3Y3OMAD_js.getDisplayUnitLabel(
5664
+ const unitLabel = chunk3NDRTC7T_js.getDisplayUnitLabel(
5667
5665
  axisFormatting.displayUnits,
5668
5666
  axisFormatting.displayUnitsLabel
5669
5667
  );
@@ -5738,7 +5736,7 @@ function renderZeroLine(id, range, layout) {
5738
5736
  if (range.min >= 0) {
5739
5737
  return null;
5740
5738
  }
5741
- const y = chunkP3Y3OMAD_js.valueToY(0, range, layout.plotTop, layout.plotBottom);
5739
+ const y = chunk3NDRTC7T_js.valueToY(0, range, layout.plotTop, layout.plotBottom);
5742
5740
  return /* @__PURE__ */ jsxRuntime.jsx(
5743
5741
  "line",
5744
5742
  {
@@ -5762,7 +5760,7 @@ function renderSecondaryValueAxis(id, range, layout, axisFormatting) {
5762
5760
  const hasDisplayUnits = Boolean(axisFormatting?.displayUnits);
5763
5761
  for (let i = 0; i <= steps; i++) {
5764
5762
  const val = range.min + range.span * i / steps;
5765
- const y = chunkP3Y3OMAD_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5763
+ const y = chunk3NDRTC7T_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5766
5764
  labels.push(
5767
5765
  /* @__PURE__ */ jsxRuntime.jsx(
5768
5766
  "text",
@@ -5774,7 +5772,7 @@ function renderSecondaryValueAxis(id, range, layout, axisFormatting) {
5774
5772
  fontFamily,
5775
5773
  fontWeight,
5776
5774
  fill: fontColor,
5777
- children: hasDisplayUnits ? chunkP3Y3OMAD_js.formatAxisValueWithUnits(val, axisFormatting) : chunkP3Y3OMAD_js.formatAxisValue(val)
5775
+ children: hasDisplayUnits ? chunk3NDRTC7T_js.formatAxisValueWithUnits(val, axisFormatting) : chunk3NDRTC7T_js.formatAxisValue(val)
5778
5776
  },
5779
5777
  `${id}-sec-vaxis-${i}`
5780
5778
  )
@@ -5798,7 +5796,7 @@ function renderSecondaryValueAxis(id, range, layout, axisFormatting) {
5798
5796
  );
5799
5797
  }
5800
5798
  if (hasDisplayUnits) {
5801
- const unitLabel = chunkP3Y3OMAD_js.getDisplayUnitLabel(
5799
+ const unitLabel = chunk3NDRTC7T_js.getDisplayUnitLabel(
5802
5800
  axisFormatting.displayUnits,
5803
5801
  axisFormatting.displayUnitsLabel
5804
5802
  );
@@ -5829,7 +5827,7 @@ function renderSecondaryAxisTicks(id, range, layout) {
5829
5827
  const ticks = [];
5830
5828
  for (let i = 0; i <= steps; i++) {
5831
5829
  const val = range.min + range.span * i / steps;
5832
- const y = chunkP3Y3OMAD_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5830
+ const y = chunk3NDRTC7T_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5833
5831
  ticks.push(
5834
5832
  /* @__PURE__ */ jsxRuntime.jsx(
5835
5833
  "line",
@@ -5856,7 +5854,7 @@ function renderSecondaryGridlines(id, range, layout, axisFormatting) {
5856
5854
  const gridColor = axisFormatting.majorGridlinesSpPr?.strokeColor ?? "#e2e8f0";
5857
5855
  for (let i = 0; i <= steps; i++) {
5858
5856
  const val = range.min + range.span * i / steps;
5859
- const y = chunkP3Y3OMAD_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5857
+ const y = chunk3NDRTC7T_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5860
5858
  lines.push(
5861
5859
  /* @__PURE__ */ jsxRuntime.jsx(
5862
5860
  "line",
@@ -6018,7 +6016,7 @@ function renderChartDataTable(elementId, chartData, svgWidth) {
6018
6016
  width: 8,
6019
6017
  height: 8,
6020
6018
  borderRadius: 2,
6021
- backgroundColor: chunkP3Y3OMAD_js.seriesColor(
6019
+ backgroundColor: chunk3NDRTC7T_js.seriesColor(
6022
6020
  s,
6023
6021
  si,
6024
6022
  chartData.style?.styleId,
@@ -6056,10 +6054,10 @@ function renderChartDataTable(elementId, chartData, svgWidth) {
6056
6054
  }
6057
6055
  function renderStockChart(element, chartData, categoryLabels) {
6058
6056
  const style = chartData.style;
6059
- const areaFill = chunkP3Y3OMAD_js.chartAreaFill(chartData);
6057
+ const areaFill = chunk3NDRTC7T_js.chartAreaFill(chartData);
6060
6058
  const legendPos = style?.legendPosition || "b";
6061
- const range = chunkP3Y3OMAD_js.computeValueRangeForChart(chartData.series, chartData.axes);
6062
- const layout = chunkP3Y3OMAD_js.computeLayout(element.width, element.height, style, true, legendPos);
6059
+ const range = chunk3NDRTC7T_js.computeValueRangeForChart(chartData.series, chartData.axes);
6060
+ const layout = chunk3NDRTC7T_js.computeLayout(element.width, element.height, style, true, legendPos);
6063
6061
  const catCount = Math.max(categoryLabels.length, 1);
6064
6062
  const barGroupWidth = layout.plotWidth / catCount;
6065
6063
  const candleWidth = barGroupWidth * 0.5;
@@ -6080,10 +6078,10 @@ function renderStockChart(element, chartData, categoryLabels) {
6080
6078
  const close = closeSeries.values[ci] ?? high;
6081
6079
  const isUp = close >= open;
6082
6080
  const cx = layout.plotLeft + barGroupWidth * ci + barGroupWidth / 2;
6083
- const highY = chunkP3Y3OMAD_js.valueToY(high, range, layout.plotTop, layout.plotBottom);
6084
- const lowY = chunkP3Y3OMAD_js.valueToY(low, range, layout.plotTop, layout.plotBottom);
6085
- const openY = chunkP3Y3OMAD_js.valueToY(open, range, layout.plotTop, layout.plotBottom);
6086
- const closeY = chunkP3Y3OMAD_js.valueToY(close, range, layout.plotTop, layout.plotBottom);
6081
+ const highY = chunk3NDRTC7T_js.valueToY(high, range, layout.plotTop, layout.plotBottom);
6082
+ const lowY = chunk3NDRTC7T_js.valueToY(low, range, layout.plotTop, layout.plotBottom);
6083
+ const openY = chunk3NDRTC7T_js.valueToY(open, range, layout.plotTop, layout.plotBottom);
6084
+ const closeY = chunk3NDRTC7T_js.valueToY(close, range, layout.plotTop, layout.plotBottom);
6087
6085
  elements.push(
6088
6086
  /* @__PURE__ */ jsxRuntime.jsx(
6089
6087
  "line",
@@ -6126,7 +6124,7 @@ function renderStockChart(element, chartData, categoryLabels) {
6126
6124
  textAnchor: "middle",
6127
6125
  fontSize: 7,
6128
6126
  fill: "#334155",
6129
- children: chunkP3Y3OMAD_js.formatAxisValue(close)
6127
+ children: chunk3NDRTC7T_js.formatAxisValue(close)
6130
6128
  },
6131
6129
  `${element.id}-stock-dl-${ci}`
6132
6130
  )
@@ -6168,7 +6166,7 @@ function FailedToLoad() {
6168
6166
  var LazySurfaceChart3DScene = React6__default.default.lazy(
6169
6167
  async () => {
6170
6168
  try {
6171
- return await import('./SurfaceChart3DScene-GK4JHZAC.js');
6169
+ return await import('./SurfaceChart3DScene-NPJQXIGW.js');
6172
6170
  } catch {
6173
6171
  return { default: FailedToLoad };
6174
6172
  }
@@ -6192,7 +6190,7 @@ var SurfaceChart3DErrorBoundary = class extends React6__default.default.Componen
6192
6190
  function buildSurfaceData(chartData, categoryLabels) {
6193
6191
  const rows = chartData.series.length;
6194
6192
  const cols = Math.max(categoryLabels.length, 1);
6195
- const range = chunkP3Y3OMAD_js.computeValueRangeForChart(chartData.series, chartData.axes);
6193
+ const range = chunk3NDRTC7T_js.computeValueRangeForChart(chartData.series, chartData.axes);
6196
6194
  const heightMap = new Float32Array(rows * cols);
6197
6195
  const colorMap = new Float32Array(rows * cols * 3);
6198
6196
  for (let r = 0; r < rows; r++) {
@@ -6311,10 +6309,10 @@ function darkenRgb(r, g, b, factor) {
6311
6309
  }
6312
6310
  function renderIsometricSurfaceChart(element, chartData, categoryLabels) {
6313
6311
  const style = chartData.style;
6314
- const areaFill = chunkP3Y3OMAD_js.chartAreaFill(chartData);
6312
+ const areaFill = chunk3NDRTC7T_js.chartAreaFill(chartData);
6315
6313
  const legendPos = style?.legendPosition || "b";
6316
- const layout = chunkP3Y3OMAD_js.computeLayout(element.width, element.height, style, false, legendPos);
6317
- const range = chunkP3Y3OMAD_js.computeValueRangeForChart(chartData.series, chartData.axes);
6314
+ const layout = chunk3NDRTC7T_js.computeLayout(element.width, element.height, style, false, legendPos);
6315
+ const range = chunk3NDRTC7T_js.computeValueRangeForChart(chartData.series, chartData.axes);
6318
6316
  const catCount = Math.max(categoryLabels.length, 1);
6319
6317
  const seriesCount = chartData.series.length;
6320
6318
  const cols = catCount - 1;
@@ -6403,10 +6401,10 @@ function renderIsometricSurfaceChart(element, chartData, categoryLabels) {
6403
6401
  }
6404
6402
  function renderFlatSurfaceChart(element, chartData, categoryLabels) {
6405
6403
  const style = chartData.style;
6406
- const areaFill = chunkP3Y3OMAD_js.chartAreaFill(chartData);
6404
+ const areaFill = chunk3NDRTC7T_js.chartAreaFill(chartData);
6407
6405
  const legendPos = style?.legendPosition || "b";
6408
- const layout = chunkP3Y3OMAD_js.computeLayout(element.width, element.height, style, true, legendPos);
6409
- const range = chunkP3Y3OMAD_js.computeValueRangeForChart(chartData.series, chartData.axes);
6406
+ const layout = chunk3NDRTC7T_js.computeLayout(element.width, element.height, style, true, legendPos);
6407
+ const range = chunk3NDRTC7T_js.computeValueRangeForChart(chartData.series, chartData.axes);
6410
6408
  const catCount = Math.max(categoryLabels.length, 1);
6411
6409
  const seriesCount = chartData.series.length;
6412
6410
  const cellW = layout.plotWidth / Math.max(catCount - 1, 1);
@@ -6468,9 +6466,9 @@ function renderSurfaceChart(element, chartData, categoryLabels) {
6468
6466
  }
6469
6467
  function renderTreemapChart(element, chartData, categoryLabels) {
6470
6468
  const style = chartData.style;
6471
- const areaFill = chunkP3Y3OMAD_js.chartAreaFill(chartData);
6469
+ const areaFill = chunk3NDRTC7T_js.chartAreaFill(chartData);
6472
6470
  const legendPos = style?.legendPosition || "b";
6473
- const layout = chunkP3Y3OMAD_js.computeLayout(element.width, element.height, style, false, legendPos);
6471
+ const layout = chunk3NDRTC7T_js.computeLayout(element.width, element.height, style, false, legendPos);
6474
6472
  const allValues = chartData.series.flatMap((s) => s.values);
6475
6473
  const totalAbs = allValues.reduce((sum, v) => sum + Math.abs(v), 0) || 1;
6476
6474
  const rects = [];
@@ -6493,14 +6491,14 @@ function renderTreemapChart(element, chartData, categoryLabels) {
6493
6491
  y: curY,
6494
6492
  width: Math.max(w - 1, 1),
6495
6493
  height: Math.max(h - 1, 1),
6496
- fill: chunkP3Y3OMAD_js.paletteColor(item.index, chartData.style?.styleId, chartData.colorPalette),
6494
+ fill: chunk3NDRTC7T_js.paletteColor(item.index, chartData.style?.styleId, chartData.colorPalette),
6497
6495
  rx: 2,
6498
6496
  opacity: 0.85
6499
6497
  },
6500
6498
  `${element.id}-tm-${item.index}`
6501
6499
  )
6502
6500
  );
6503
- const label = categoryLabels[item.index] ?? `${item.index + 1}`;
6501
+ const label2 = categoryLabels[item.index] ?? `${item.index + 1}`;
6504
6502
  if (w > 30 && h > 14) {
6505
6503
  rects.push(
6506
6504
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -6512,7 +6510,7 @@ function renderTreemapChart(element, chartData, categoryLabels) {
6512
6510
  fontSize: Math.min(10, h * 0.3),
6513
6511
  fill: "#fff",
6514
6512
  fontWeight: 600,
6515
- children: label
6513
+ children: label2
6516
6514
  },
6517
6515
  `${element.id}-tm-lbl-${item.index}`
6518
6516
  )
@@ -6544,11 +6542,11 @@ function renderTreemapChart(element, chartData, categoryLabels) {
6544
6542
  }
6545
6543
  function renderWaterfallChart(element, chartData, categoryLabels) {
6546
6544
  const style = chartData.style;
6547
- const areaFill = chunkP3Y3OMAD_js.chartAreaFill(chartData);
6545
+ const areaFill = chunk3NDRTC7T_js.chartAreaFill(chartData);
6548
6546
  const legendPos = style?.legendPosition || "b";
6549
6547
  const values = chartData.series[0]?.values ?? [];
6550
- const range = chunkP3Y3OMAD_js.computeValueRangeForChart(chartData.series, chartData.axes);
6551
- const layout = chunkP3Y3OMAD_js.computeLayout(element.width, element.height, style, true, legendPos);
6548
+ const range = chunk3NDRTC7T_js.computeValueRangeForChart(chartData.series, chartData.axes);
6549
+ const layout = chunk3NDRTC7T_js.computeLayout(element.width, element.height, style, true, legendPos);
6552
6550
  const catCount = Math.max(categoryLabels.length, values.length, 1);
6553
6551
  const barWidth = layout.plotWidth / catCount * 0.6;
6554
6552
  const gap = layout.plotWidth / catCount * 0.2;
@@ -6559,8 +6557,8 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
6559
6557
  const isLast = i === values.length - 1;
6560
6558
  const startVal = isLast ? 0 : runningTotal;
6561
6559
  const endVal = isLast ? runningTotal + val : runningTotal + val;
6562
- const barStartY = chunkP3Y3OMAD_js.valueToY(startVal, range, layout.plotTop, layout.plotBottom);
6563
- const barEndY = chunkP3Y3OMAD_js.valueToY(endVal, range, layout.plotTop, layout.plotBottom);
6560
+ const barStartY = chunk3NDRTC7T_js.valueToY(startVal, range, layout.plotTop, layout.plotBottom);
6561
+ const barEndY = chunk3NDRTC7T_js.valueToY(endVal, range, layout.plotTop, layout.plotBottom);
6564
6562
  const x = layout.plotLeft + layout.plotWidth / catCount * i + gap;
6565
6563
  const y = Math.min(barStartY, barEndY);
6566
6564
  const h = Math.max(Math.abs(barEndY - barStartY), 1);
@@ -6589,7 +6587,7 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
6589
6587
  textAnchor: "middle",
6590
6588
  fontSize: 7,
6591
6589
  fill: "#334155",
6592
- children: chunkP3Y3OMAD_js.formatAxisValue(isLast ? endVal : val)
6590
+ children: chunk3NDRTC7T_js.formatAxisValue(isLast ? endVal : val)
6593
6591
  },
6594
6592
  `${element.id}-wf-dl-${i}`
6595
6593
  )
@@ -6636,20 +6634,20 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
6636
6634
  }
6637
6635
  function renderComboChart(element, chartData, categoryLabels) {
6638
6636
  const style = chartData.style;
6639
- const areaFill = chunkP3Y3OMAD_js.chartAreaFill(chartData);
6637
+ const areaFill = chunk3NDRTC7T_js.chartAreaFill(chartData);
6640
6638
  const legendPos = style?.legendPosition || "b";
6641
- const layoutOpts = chunkP3Y3OMAD_js.computeLayoutOptions(
6639
+ const layoutOpts = chunk3NDRTC7T_js.computeLayoutOptions(
6642
6640
  chartData.axes,
6643
6641
  chartData.dataTable,
6644
6642
  chartData.series.length
6645
6643
  );
6646
- const layout = chunkP3Y3OMAD_js.computeLayout(element.width, element.height, style, true, legendPos, layoutOpts);
6647
- const { primary, secondary } = chunkP3Y3OMAD_js.splitSeriesByAxis(chartData.series, chartData.axes);
6644
+ const layout = chunk3NDRTC7T_js.computeLayout(element.width, element.height, style, true, legendPos, layoutOpts);
6645
+ const { primary, secondary } = chunk3NDRTC7T_js.splitSeriesByAxis(chartData.series, chartData.axes);
6648
6646
  const primarySeries = primary.length > 0 ? primary.map((e) => e.series) : chartData.series;
6649
6647
  const secondarySeries = secondary.map((e) => e.series);
6650
- const range = chunkP3Y3OMAD_js.computeValueRangeForChart(primarySeries, chartData.axes);
6651
- const secondaryRange = secondarySeries.length > 0 ? chunkP3Y3OMAD_js.computeValueRange(secondarySeries) : void 0;
6652
- const secondaryAxisFmt = chunkP3Y3OMAD_js.getSecondaryValueAxis(chartData.axes);
6648
+ const range = chunk3NDRTC7T_js.computeValueRangeForChart(primarySeries, chartData.axes);
6649
+ const secondaryRange = secondarySeries.length > 0 ? chunk3NDRTC7T_js.computeValueRange(secondarySeries) : void 0;
6650
+ const secondaryAxisFmt = chunk3NDRTC7T_js.getSecondaryValueAxis(chartData.axes);
6653
6651
  const catCount = Math.max(categoryLabels.length, 1);
6654
6652
  const barSeriesCount = 1;
6655
6653
  const barGroupWidth = layout.plotWidth / catCount;
@@ -6665,8 +6663,8 @@ function renderComboChart(element, chartData, categoryLabels) {
6665
6663
  const barRange = isBarSecondary && secondaryRange ? secondaryRange : range;
6666
6664
  barSeries.values.forEach((val, vi) => {
6667
6665
  const x = layout.plotLeft + barGroupWidth * vi + barOffset;
6668
- const zeroY = chunkP3Y3OMAD_js.valueToY(0, barRange, layout.plotTop, layout.plotBottom);
6669
- const valY = chunkP3Y3OMAD_js.valueToY(val, barRange, layout.plotTop, layout.plotBottom);
6666
+ const zeroY = chunk3NDRTC7T_js.valueToY(0, barRange, layout.plotTop, layout.plotBottom);
6667
+ const valY = chunk3NDRTC7T_js.valueToY(val, barRange, layout.plotTop, layout.plotBottom);
6670
6668
  const y = Math.min(zeroY, valY);
6671
6669
  const h = Math.max(Math.abs(zeroY - valY), 1);
6672
6670
  barElements.push(
@@ -6677,7 +6675,7 @@ function renderComboChart(element, chartData, categoryLabels) {
6677
6675
  y,
6678
6676
  width: barWidth,
6679
6677
  height: h,
6680
- fill: chunkP3Y3OMAD_js.seriesColor(barSeries, 0, chartData.style?.styleId, chartData.colorPalette),
6678
+ fill: chunk3NDRTC7T_js.seriesColor(barSeries, 0, chartData.style?.styleId, chartData.colorPalette),
6681
6679
  rx: 1
6682
6680
  },
6683
6681
  `${element.id}-combo-bar-${vi}`
@@ -6693,7 +6691,7 @@ function renderComboChart(element, chartData, categoryLabels) {
6693
6691
  textAnchor: "middle",
6694
6692
  fontSize: 7,
6695
6693
  fill: "#334155",
6696
- children: chunkP3Y3OMAD_js.formatAxisValue(val)
6694
+ children: chunk3NDRTC7T_js.formatAxisValue(val)
6697
6695
  },
6698
6696
  `${element.id}-combo-bar-dl-${vi}`
6699
6697
  )
@@ -6710,10 +6708,10 @@ function renderComboChart(element, chartData, categoryLabels) {
6710
6708
  const activeRange = isSecondary && secondaryRange ? secondaryRange : range;
6711
6709
  const points = series.values.map((val, vi) => {
6712
6710
  const x = layout.plotLeft + barGroupWidth * vi + barGroupWidth / 2;
6713
- const y = chunkP3Y3OMAD_js.valueToY(val, activeRange, layout.plotTop, layout.plotBottom);
6711
+ const y = chunk3NDRTC7T_js.valueToY(val, activeRange, layout.plotTop, layout.plotBottom);
6714
6712
  return { x, y, val };
6715
6713
  });
6716
- const c = chunkP3Y3OMAD_js.seriesColor(series, seriesIdx, chartData.style?.styleId, chartData.colorPalette);
6714
+ const c = chunk3NDRTC7T_js.seriesColor(series, seriesIdx, chartData.style?.styleId, chartData.colorPalette);
6717
6715
  lineElements.push(
6718
6716
  /* @__PURE__ */ jsxRuntime.jsx(
6719
6717
  "polyline",
@@ -6740,7 +6738,7 @@ function renderComboChart(element, chartData, categoryLabels) {
6740
6738
  textAnchor: "middle",
6741
6739
  fontSize: 7,
6742
6740
  fill: "#334155",
6743
- children: chunkP3Y3OMAD_js.formatAxisValue(p.val)
6741
+ children: chunk3NDRTC7T_js.formatAxisValue(p.val)
6744
6742
  },
6745
6743
  `${element.id}-combo-line-dl-${si}-${vi}`
6746
6744
  )
@@ -6979,14 +6977,14 @@ function layoutToCategory(layout) {
6979
6977
  };
6980
6978
  return map[layout] ?? "list";
6981
6979
  }
6982
- function smartArtNodeGroupProps(nodeId, shadow, label) {
6980
+ function smartArtNodeGroupProps(nodeId, shadow, label2) {
6983
6981
  const props = {
6984
6982
  "data-smartart-node-id": nodeId,
6985
6983
  style: { filter: shadow, pointerEvents: "auto" }
6986
6984
  };
6987
- if (label) {
6985
+ if (label2) {
6988
6986
  props.role = "img";
6989
- props["aria-label"] = label;
6987
+ props["aria-label"] = label2;
6990
6988
  }
6991
6989
  return props;
6992
6990
  }
@@ -7886,14 +7884,14 @@ function buildNotesPdf(pages) {
7886
7884
  notes: page.notes,
7887
7885
  slideNumber: page.slideNumber
7888
7886
  }));
7889
- const bytes = chunkP3Y3OMAD_js.buildNotesPdfBytes(images, meta);
7887
+ const bytes = chunk3NDRTC7T_js.buildNotesPdfBytes(images, meta);
7890
7888
  const blob = new Blob([bytes], { type: "application/pdf" });
7891
7889
  return URL.createObjectURL(blob);
7892
7890
  }
7893
7891
 
7894
7892
  // src/viewer/utils/pdf-builder-slides.ts
7895
7893
  function buildPdfFromImageData(images) {
7896
- const bytes = chunkP3Y3OMAD_js.buildSlidesPdfBytes(images);
7894
+ const bytes = chunk3NDRTC7T_js.buildSlidesPdfBytes(images);
7897
7895
  const blob = new Blob([bytes], { type: "application/pdf" });
7898
7896
  return URL.createObjectURL(blob);
7899
7897
  }
@@ -7902,7 +7900,7 @@ function buildPdfFromImageData(images) {
7902
7900
  var activePreview = null;
7903
7901
  function startPreviewAnimation(elementId, preset, options) {
7904
7902
  stopPreviewAnimation();
7905
- const descriptor = chunkP3Y3OMAD_js.buildPreviewAnimation(preset, options);
7903
+ const descriptor = chunk3NDRTC7T_js.buildPreviewAnimation(preset, options);
7906
7904
  if (!descriptor) {
7907
7905
  return;
7908
7906
  }
@@ -7915,7 +7913,7 @@ function startMotionPathPreview(elementId, path, options) {
7915
7913
  return;
7916
7914
  }
7917
7915
  const stage = domEl.offsetParent;
7918
- const descriptor = chunkP3Y3OMAD_js.buildMotionPathPreview({
7916
+ const descriptor = chunk3NDRTC7T_js.buildMotionPathPreview({
7919
7917
  path,
7920
7918
  slideWidth: stage?.offsetWidth || DEFAULT_PREVIEW_SLIDE_WIDTH,
7921
7919
  slideHeight: stage?.offsetHeight || DEFAULT_PREVIEW_SLIDE_HEIGHT,