pptx-react-viewer 4.4.0 → 4.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/CHANGELOG.md +81 -0
  2. package/README.md +34 -33
  3. package/dist/{AiChatPanel-UFMSTNCB.js → AiChatPanel-3C7GM6ZF.js} +28 -28
  4. package/dist/AiChatPanel-3C7GM6ZF.js.br +0 -0
  5. package/dist/AiChatPanel-3C7GM6ZF.js.gz +0 -0
  6. package/dist/{AiChatPanel-QJHUDIWT.mjs → AiChatPanel-L7DBCWE3.mjs} +4 -4
  7. package/dist/AiChatPanel-L7DBCWE3.mjs.br +0 -0
  8. package/dist/AiChatPanel-L7DBCWE3.mjs.gz +0 -0
  9. package/dist/{Model3DScene-3GOC5HUS.mjs → Model3DScene-IJ7YYTYU.mjs} +1 -1
  10. package/dist/Model3DScene-IJ7YYTYU.mjs.br +0 -0
  11. package/dist/Model3DScene-IJ7YYTYU.mjs.gz +0 -0
  12. package/dist/{Model3DScene-KXNJBAQD.js → Model3DScene-USKNPWWH.js} +2 -2
  13. package/dist/{Model3DScene-KXNJBAQD.js.br → Model3DScene-USKNPWWH.js.br} +0 -0
  14. package/dist/Model3DScene-USKNPWWH.js.gz +0 -0
  15. package/dist/{chunk-I4D6JQOI.js → chunk-3JUZOKFI.js} +13 -0
  16. package/dist/chunk-3JUZOKFI.js.br +0 -0
  17. package/dist/chunk-3JUZOKFI.js.gz +0 -0
  18. package/dist/{chunk-CSY422LU.js → chunk-5V5SMT5A.js} +5 -5
  19. package/dist/chunk-5V5SMT5A.js.br +0 -0
  20. package/dist/chunk-5V5SMT5A.js.gz +0 -0
  21. package/dist/{chunk-AI6K5EAE.js → chunk-DFSWCVRW.js} +1677 -1207
  22. package/dist/chunk-DFSWCVRW.js.br +0 -0
  23. package/dist/chunk-DFSWCVRW.js.gz +0 -0
  24. package/dist/{chunk-7WWINBGF.js → chunk-FZSYLXJT.js} +3293 -1568
  25. package/dist/chunk-FZSYLXJT.js.br +0 -0
  26. package/dist/chunk-FZSYLXJT.js.gz +0 -0
  27. package/dist/{chunk-YJKR7Z3X.js → chunk-IBHIXBC5.js} +885 -845
  28. package/dist/chunk-IBHIXBC5.js.br +0 -0
  29. package/dist/chunk-IBHIXBC5.js.gz +0 -0
  30. package/dist/{chunk-D3TZOCQP.mjs → chunk-ICEZL4TM.mjs} +3260 -1568
  31. package/dist/chunk-ICEZL4TM.mjs.br +0 -0
  32. package/dist/chunk-ICEZL4TM.mjs.gz +0 -0
  33. package/dist/{chunk-WCHKDZP6.mjs → chunk-INX3E37P.mjs} +73 -33
  34. package/dist/chunk-INX3E37P.mjs.br +0 -0
  35. package/dist/chunk-INX3E37P.mjs.gz +0 -0
  36. package/dist/{chunk-WNFHFFYE.mjs → chunk-K6QHGABT.mjs} +17 -7
  37. package/dist/chunk-K6QHGABT.mjs.br +0 -0
  38. package/dist/chunk-K6QHGABT.mjs.gz +0 -0
  39. package/dist/{chunk-JQXN6PO7.mjs → chunk-OOO4JL2N.mjs} +13 -0
  40. package/dist/chunk-OOO4JL2N.mjs.br +0 -0
  41. package/dist/chunk-OOO4JL2N.mjs.gz +0 -0
  42. package/dist/{chunk-XMKLY2SE.mjs → chunk-VCAQSSGD.mjs} +1 -1
  43. package/dist/chunk-VCAQSSGD.mjs.br +0 -0
  44. package/dist/chunk-VCAQSSGD.mjs.gz +0 -0
  45. package/dist/{chunk-OWTHF5N4.js → chunk-Y4QUVWZC.js} +201 -191
  46. package/dist/chunk-Y4QUVWZC.js.br +0 -0
  47. package/dist/chunk-Y4QUVWZC.js.gz +0 -0
  48. package/dist/{chunk-LUHUYBGW.mjs → chunk-ZAQFTO4P.mjs} +623 -153
  49. package/dist/chunk-ZAQFTO4P.mjs.br +0 -0
  50. package/dist/chunk-ZAQFTO4P.mjs.gz +0 -0
  51. package/dist/i18n/de.cjs +11 -0
  52. package/dist/i18n/de.cjs.br +0 -0
  53. package/dist/i18n/de.cjs.gz +0 -0
  54. package/dist/i18n/de.mjs +11 -0
  55. package/dist/i18n/de.mjs.br +0 -0
  56. package/dist/i18n/de.mjs.gz +0 -0
  57. package/dist/i18n/es.cjs +11 -0
  58. package/dist/i18n/es.cjs.br +0 -0
  59. package/dist/i18n/es.cjs.gz +0 -0
  60. package/dist/i18n/es.mjs +11 -0
  61. package/dist/i18n/es.mjs.br +0 -0
  62. package/dist/i18n/es.mjs.gz +0 -0
  63. package/dist/i18n/fr.cjs +11 -0
  64. package/dist/i18n/fr.cjs.br +0 -0
  65. package/dist/i18n/fr.cjs.gz +0 -0
  66. package/dist/i18n/fr.mjs +11 -0
  67. package/dist/i18n/fr.mjs.br +0 -0
  68. package/dist/i18n/fr.mjs.gz +0 -0
  69. package/dist/i18n/zh-CN.cjs +11 -0
  70. package/dist/i18n/zh-CN.cjs.br +0 -0
  71. package/dist/i18n/zh-CN.cjs.gz +0 -0
  72. package/dist/i18n/zh-CN.mjs +11 -0
  73. package/dist/i18n/zh-CN.mjs.br +0 -0
  74. package/dist/i18n/zh-CN.mjs.gz +0 -0
  75. package/dist/i18n.js +4 -4
  76. package/dist/i18n.js.br +0 -0
  77. package/dist/i18n.js.gz +0 -0
  78. package/dist/i18n.mjs +1 -1
  79. package/dist/i18n.mjs.br +0 -0
  80. package/dist/i18n.mjs.gz +0 -0
  81. package/dist/index.d.ts +311 -4
  82. package/dist/index.js +105 -49
  83. package/dist/index.js.br +0 -0
  84. package/dist/index.js.gz +0 -0
  85. package/dist/index.mjs +6 -6
  86. package/dist/index.mjs.br +0 -0
  87. package/dist/index.mjs.gz +0 -0
  88. package/dist/internals.d.ts +328 -3
  89. package/dist/internals.js +105 -105
  90. package/dist/internals.js.br +0 -0
  91. package/dist/internals.js.gz +0 -0
  92. package/dist/internals.mjs +4 -4
  93. package/dist/internals.mjs.br +0 -0
  94. package/dist/internals.mjs.gz +0 -0
  95. package/dist/pptx-viewer.css +1 -1
  96. package/dist/pptx-viewer.css.br +0 -0
  97. package/dist/pptx-viewer.css.gz +0 -0
  98. package/dist/viewer/index.d.ts +416 -2
  99. package/dist/viewer/index.js +27 -27
  100. package/dist/viewer/index.js.br +0 -0
  101. package/dist/viewer/index.js.gz +0 -0
  102. package/dist/viewer/index.mjs +6 -6
  103. package/dist/viewer/index.mjs.br +0 -0
  104. package/dist/viewer/index.mjs.gz +0 -0
  105. package/package.json +1 -1
  106. package/dist/AiChatPanel-QJHUDIWT.mjs.br +0 -0
  107. package/dist/AiChatPanel-QJHUDIWT.mjs.gz +0 -0
  108. package/dist/AiChatPanel-UFMSTNCB.js.br +0 -0
  109. package/dist/AiChatPanel-UFMSTNCB.js.gz +0 -0
  110. package/dist/Model3DScene-3GOC5HUS.mjs.br +0 -0
  111. package/dist/Model3DScene-3GOC5HUS.mjs.gz +0 -0
  112. package/dist/Model3DScene-KXNJBAQD.js.gz +0 -0
  113. package/dist/chunk-7WWINBGF.js.br +0 -0
  114. package/dist/chunk-7WWINBGF.js.gz +0 -0
  115. package/dist/chunk-AI6K5EAE.js.br +0 -0
  116. package/dist/chunk-AI6K5EAE.js.gz +0 -0
  117. package/dist/chunk-CSY422LU.js.br +0 -0
  118. package/dist/chunk-CSY422LU.js.gz +0 -0
  119. package/dist/chunk-D3TZOCQP.mjs.br +0 -0
  120. package/dist/chunk-D3TZOCQP.mjs.gz +0 -0
  121. package/dist/chunk-I4D6JQOI.js.br +0 -0
  122. package/dist/chunk-I4D6JQOI.js.gz +0 -0
  123. package/dist/chunk-JQXN6PO7.mjs.br +0 -0
  124. package/dist/chunk-JQXN6PO7.mjs.gz +0 -0
  125. package/dist/chunk-LUHUYBGW.mjs.br +0 -0
  126. package/dist/chunk-LUHUYBGW.mjs.gz +0 -0
  127. package/dist/chunk-OWTHF5N4.js.br +0 -0
  128. package/dist/chunk-OWTHF5N4.js.gz +0 -0
  129. package/dist/chunk-WCHKDZP6.mjs.br +0 -0
  130. package/dist/chunk-WCHKDZP6.mjs.gz +0 -0
  131. package/dist/chunk-WNFHFFYE.mjs.br +0 -0
  132. package/dist/chunk-WNFHFFYE.mjs.gz +0 -0
  133. package/dist/chunk-XMKLY2SE.mjs.br +0 -0
  134. package/dist/chunk-XMKLY2SE.mjs.gz +0 -0
  135. package/dist/chunk-YJKR7Z3X.js.br +0 -0
  136. package/dist/chunk-YJKR7Z3X.js.gz +0 -0
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunk7WWINBGF_js = require('./chunk-7WWINBGF.js');
4
- var chunkI4D6JQOI_js = require('./chunk-I4D6JQOI.js');
3
+ var chunkFZSYLXJT_js = require('./chunk-FZSYLXJT.js');
4
+ var chunk3JUZOKFI_js = require('./chunk-3JUZOKFI.js');
5
5
  var clsx = require('clsx');
6
6
  var tailwindMerge = require('tailwind-merge');
7
7
  var React7 = require('react');
@@ -15,7 +15,7 @@ var React7__default = /*#__PURE__*/_interopDefault(React7);
15
15
 
16
16
  // src/viewer/utils/animation-effects.ts
17
17
  function getAnimationInitialStyle2(preset, nativeAnimation) {
18
- return chunk7WWINBGF_js.getAnimationInitialStyle(preset, nativeAnimation);
18
+ return chunkFZSYLXJT_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 chunk7WWINBGF_js.cloneHistorySnapshot(snapshot);
26
+ return chunkFZSYLXJT_js.cloneHistorySnapshot(snapshot);
27
27
  }
28
28
 
29
29
  // src/viewer/constants/scalar.ts
@@ -61,7 +61,7 @@ var TOOLBAR_SECTIONS = [
61
61
  { id: "view", labelKey: "pptx.ribbon.tab.view" },
62
62
  { id: "help", labelKey: "pptx.ribbon.tab.help" }
63
63
  ];
64
- var SHORTCUT_REFERENCE_ITEMS = chunk7WWINBGF_js.VIEWER_SHORTCUT_REFERENCE;
64
+ var SHORTCUT_REFERENCE_ITEMS = chunkFZSYLXJT_js.VIEWER_SHORTCUT_REFERENCE;
65
65
 
66
66
  // src/viewer/constants/transitions-animations.ts
67
67
  var ANIMATION_PRESET_OPTIONS = [
@@ -89,7 +89,7 @@ var GLYPH_COMPONENTS = {
89
89
  plus: lu.LuPlus,
90
90
  triangle: lu.LuTriangle
91
91
  };
92
- var SHAPE_PRESETS = chunk7WWINBGF_js.SHAPE_PRESET_DEFS.map(
92
+ var SHAPE_PRESETS = chunkFZSYLXJT_js.SHAPE_PRESET_DEFS.map(
93
93
  (def) => ({
94
94
  type: def.type,
95
95
  label: def.label,
@@ -114,7 +114,7 @@ var ARROW_SIZE_OPTIONS = [
114
114
  { value: "med", label: "Medium", i18nKey: "pptx.connectorOptions.sizeMedium" },
115
115
  { value: "lg", label: "Large", i18nKey: "pptx.connectorOptions.sizeLarge" }
116
116
  ];
117
- var STROKE_DASH_OPTIONS2 = chunk7WWINBGF_js.STROKE_DASH_OPTIONS;
117
+ var STROKE_DASH_OPTIONS2 = chunkFZSYLXJT_js.STROKE_DASH_OPTIONS;
118
118
 
119
119
  // src/viewer/utils/shape-types.tsx
120
120
  function getShapeType(shapeType) {
@@ -223,7 +223,7 @@ function isConnectorOrLineElement(element) {
223
223
  if (element.type === "connector") {
224
224
  return true;
225
225
  }
226
- if (!chunk7WWINBGF_js.hasShapeProperties(element)) {
226
+ if (!chunkFZSYLXJT_js.hasShapeProperties(element)) {
227
227
  return false;
228
228
  }
229
229
  const st = getShapeType(element.shapeType);
@@ -232,18 +232,18 @@ function isConnectorOrLineElement(element) {
232
232
 
233
233
  // src/viewer/utils/image-style.ts
234
234
  function getImageMaskStyle(element) {
235
- if (!chunk7WWINBGF_js.hasShapeProperties(element)) {
235
+ if (!chunkFZSYLXJT_js.hasShapeProperties(element)) {
236
236
  return void 0;
237
237
  }
238
- const geometry = chunk7WWINBGF_js.resolveShapeGeometry(element);
238
+ const geometry = chunkFZSYLXJT_js.resolveShapeGeometry(element);
239
239
  if (geometry.kind === "borderRadius") {
240
240
  return { borderRadius: geometry.radius };
241
241
  }
242
242
  return geometry.kind === "clipPath" ? { clipPath: geometry.clipPath } : void 0;
243
243
  }
244
244
  function getImageRenderStyle(element) {
245
- const fit = chunk7WWINBGF_js.getImageFitStyle(element);
246
- const counterTransform = chunk7WWINBGF_js.getImageFillCounterTransform(element, Boolean(fit.transform));
245
+ const fit = chunkFZSYLXJT_js.getImageFitStyle(element);
246
+ const counterTransform = chunkFZSYLXJT_js.getImageFillCounterTransform(element, Boolean(fit.transform));
247
247
  return {
248
248
  // A translated/scaled crop, or a rotWithShape=false counter-transform,
249
249
  // must be masked by the stationary wrapper, not by the moving/counter-
@@ -262,7 +262,7 @@ function getImageSurfaceMaskStyle(element) {
262
262
  };
263
263
  }
264
264
  function getImageSurfaceStyle(element) {
265
- const fill = chunk7WWINBGF_js.hasShapeProperties(element) ? chunk7WWINBGF_js.getComputedFillStyle(element) : void 0;
265
+ const fill = chunkFZSYLXJT_js.hasShapeProperties(element) ? chunkFZSYLXJT_js.getComputedFillStyle(element) : void 0;
266
266
  return {
267
267
  position: "absolute",
268
268
  inset: 0,
@@ -275,13 +275,13 @@ function getImageSurfaceStyle(element) {
275
275
  };
276
276
  }
277
277
  function getCropShapeClipPath2(element) {
278
- if (!chunk7WWINBGF_js.isImageLikeElement(element)) {
278
+ if (!chunkFZSYLXJT_js.isImageLikeElement(element)) {
279
279
  return void 0;
280
280
  }
281
- return chunk7WWINBGF_js.getCropShapeClipPath(element.cropShape, element.width, element.height);
281
+ return chunkFZSYLXJT_js.getCropShapeClipPath(element.cropShape, element.width, element.height);
282
282
  }
283
283
  function getImageTilingStyle2(element, nativeSize) {
284
- return chunk7WWINBGF_js.getImageTilingStyle(element, nativeSize);
284
+ return chunkFZSYLXJT_js.getImageTilingStyle(element, nativeSize);
285
285
  }
286
286
 
287
287
  // src/viewer/utils/geometry-image.ts
@@ -413,7 +413,7 @@ function VideoWithMetadata({
413
413
  {
414
414
  ref: mediaRef,
415
415
  className: "w-full h-full pointer-events-auto",
416
- style: isFullScreen ? { objectFit: "cover" } : chunk7WWINBGF_js.getImageFitStyle(element),
416
+ style: isFullScreen ? { objectFit: "cover" } : chunkFZSYLXJT_js.getImageFitStyle(element),
417
417
  controls: showTransport,
418
418
  preload: "metadata",
419
419
  playsInline: true,
@@ -470,7 +470,7 @@ function PresentationMediaController({
470
470
  const [isMediaPlaying, setIsMediaPlaying] = React7.useState(false);
471
471
  const trimStartSec = element.trimStartMs !== void 0 ? element.trimStartMs / 1e3 : 0;
472
472
  const hideWhenNotPlaying = isPresentationMode && element.hideWhenNotPlaying === true;
473
- const { volume: playbackVolume, playbackRate } = chunk7WWINBGF_js.mediaPlaybackAttributes({
473
+ const { volume: playbackVolume, playbackRate } = chunkFZSYLXJT_js.mediaPlaybackAttributes({
474
474
  loop: element.loop,
475
475
  volume: element.volume,
476
476
  playbackSpeed: element.playbackSpeed
@@ -518,7 +518,7 @@ function PresentationMediaController({
518
518
  if (!el || !isPresentationMode) {
519
519
  return;
520
520
  }
521
- return chunk7WWINBGF_js.scheduleMediaTrimAndFade(el, {
521
+ return chunkFZSYLXJT_js.scheduleMediaTrimAndFade(el, {
522
522
  trimStartMs: element.trimStartMs,
523
523
  trimEndMs: element.trimEndMs,
524
524
  fadeInDuration: element.fadeInDuration,
@@ -539,7 +539,7 @@ function PresentationMediaController({
539
539
  }
540
540
  if (element.playAcrossSlides && element.mediaType === "audio") {
541
541
  const dataUrl = element.mediaData ?? resolvedDataUrl;
542
- if (chunk7WWINBGF_js.registerCrossSlideAudio(element, dataUrl)) {
542
+ if (chunkFZSYLXJT_js.registerCrossSlideAudio(element, dataUrl)) {
543
543
  return;
544
544
  }
545
545
  }
@@ -571,7 +571,7 @@ function PresentationMediaController({
571
571
  }, []);
572
572
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full h-full", style: wrapperStyle, children: [
573
573
  children({ mediaRef, onPlay: noopOnPlay, isMediaPlaying }),
574
- chunk7WWINBGF_js.shouldShowMediaFullscreenStopButton({
574
+ chunkFZSYLXJT_js.shouldShowMediaFullscreenStopButton({
575
575
  fullScreen: isFullScreen,
576
576
  presenting: isPresentationMode,
577
577
  playing: isMediaPlaying
@@ -588,7 +588,7 @@ function PresentationMediaController({
588
588
  ] });
589
589
  }
590
590
  function label(key) {
591
- return key === void 0 ? void 0 : chunkI4D6JQOI_js.translationsEn[key];
591
+ return key === void 0 ? void 0 : chunk3JUZOKFI_js.translationsEn[key];
592
592
  }
593
593
  function FallbackIcon({
594
594
  paths,
@@ -624,17 +624,17 @@ function Badge({
624
624
  "div",
625
625
  {
626
626
  className: `absolute inset-0 flex flex-col items-center justify-center ${isMissing ? "gap-1" : ""}`,
627
- ...{ [chunk7WWINBGF_js.MEDIA_CHROME_ATTRIBUTE]: visual.badge },
627
+ ...{ [chunkFZSYLXJT_js.MEDIA_CHROME_ATTRIBUTE]: visual.badge },
628
628
  children: [
629
629
  /* @__PURE__ */ jsxRuntime.jsx(
630
630
  FallbackIcon,
631
631
  {
632
- paths: chunk7WWINBGF_js.mediaFallbackIcon(visual, element.mediaType),
632
+ paths: chunkFZSYLXJT_js.mediaFallbackIcon(visual, element.mediaType),
633
633
  size: isMissing ? 32 : 48,
634
634
  className: isMissing ? "text-white/60" : "text-white/80 drop-shadow-md"
635
635
  }
636
636
  ),
637
- isMissing && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-white/60", children: label(chunk7WWINBGF_js.mediaFallbackLabelKey(visual, element.mediaType)) })
637
+ isMissing && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-white/60", children: label(chunkFZSYLXJT_js.mediaFallbackLabelKey(visual, element.mediaType)) })
638
638
  ]
639
639
  }
640
640
  );
@@ -651,17 +651,17 @@ function Placeholder({
651
651
  "div",
652
652
  {
653
653
  className: `w-full h-full flex flex-col items-center justify-center gap-1 pointer-events-none rounded ${isMissing ? "bg-black/30 border border-dashed border-white/20" : element.mediaType === "audio" ? "bg-black/10" : "bg-black/20"}`,
654
- ...{ [chunk7WWINBGF_js.MEDIA_CHROME_ATTRIBUTE]: visual.placeholder },
654
+ ...{ [chunkFZSYLXJT_js.MEDIA_CHROME_ATTRIBUTE]: visual.placeholder },
655
655
  children: [
656
656
  /* @__PURE__ */ jsxRuntime.jsx(
657
657
  FallbackIcon,
658
658
  {
659
- paths: chunk7WWINBGF_js.mediaFallbackIcon(visual, element.mediaType),
659
+ paths: chunkFZSYLXJT_js.mediaFallbackIcon(visual, element.mediaType),
660
660
  size: isMissing ? 36 : element.mediaType === "audio" ? 24 : 32,
661
661
  className: isMissing ? "text-white/50" : "text-white/70"
662
662
  }
663
663
  ),
664
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: `text-[10px] ${isMissing ? "text-white/50" : "text-white/70"}`, children: label(chunk7WWINBGF_js.mediaFallbackLabelKey(visual, element.mediaType)) })
664
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: `text-[10px] ${isMissing ? "text-white/50" : "text-white/70"}`, children: label(chunkFZSYLXJT_js.mediaFallbackLabelKey(visual, element.mediaType)) })
665
665
  ]
666
666
  }
667
667
  );
@@ -671,7 +671,7 @@ function renderMediaFallback({
671
671
  posterUrl,
672
672
  surface
673
673
  }) {
674
- const visual = chunk7WWINBGF_js.mediaFallbackVisual(surface, {
674
+ const visual = chunkFZSYLXJT_js.mediaFallbackVisual(surface, {
675
675
  hasPoster: Boolean(posterUrl),
676
676
  missing: element.mediaMissing === true
677
677
  });
@@ -681,9 +681,9 @@ function renderMediaFallback({
681
681
  "img",
682
682
  {
683
683
  src: posterUrl,
684
- alt: visual.dimPoster ? chunkI4D6JQOI_js.translationsEn["pptx.media.posterAlt"] : chunkI4D6JQOI_js.translationsEn["pptx.media.videoPosterAlt"],
684
+ alt: visual.dimPoster ? chunk3JUZOKFI_js.translationsEn["pptx.media.posterAlt"] : chunk3JUZOKFI_js.translationsEn["pptx.media.videoPosterAlt"],
685
685
  className: `w-full h-full${visual.dimPoster ? " opacity-50" : ""}`,
686
- style: chunk7WWINBGF_js.getImageFitStyle(element)
686
+ style: chunkFZSYLXJT_js.getImageFitStyle(element)
687
687
  }
688
688
  ),
689
689
  /* @__PURE__ */ jsxRuntime.jsx(Badge, { visual, element })
@@ -693,7 +693,7 @@ function renderMediaFallback({
693
693
  }
694
694
  function renderMediaElement(element, mediaDataUrls, options) {
695
695
  if (element.type !== "media") {
696
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkI4D6JQOI_js.translationsEn["pptx.media.title"] });
696
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunk3JUZOKFI_js.translationsEn["pptx.media.title"] });
697
697
  }
698
698
  const mediaType = element.mediaType;
699
699
  const mediaPath = element.mediaPath;
@@ -701,7 +701,7 @@ function renderMediaElement(element, mediaDataUrls, options) {
701
701
  const dataUrl = element.mediaData ?? (mediaPath ? mediaDataUrls.get(mediaPath) : void 0);
702
702
  const trimFragment = buildTrimFragment(element);
703
703
  const posterUrl = element.posterFrameData ?? void 0;
704
- const shouldLoop = chunk7WWINBGF_js.mediaPlaybackAttributes(element).loop;
704
+ const shouldLoop = chunkFZSYLXJT_js.mediaPlaybackAttributes(element).loop;
705
705
  const shouldAutoPlay = options?.autoPlay === true || element.autoPlay === true;
706
706
  const isFullScreen = options?.fullScreen === true;
707
707
  const isPresentationMode = options?.isPresentationMode === true;
@@ -714,17 +714,17 @@ function renderMediaElement(element, mediaDataUrls, options) {
714
714
  return renderMediaFallback({ element, posterUrl, surface });
715
715
  }
716
716
  if (mediaType === "video") {
717
- const onlineVideo = chunk7WWINBGF_js.getOnlineVideoEmbed(element);
717
+ const onlineVideo = chunkFZSYLXJT_js.getOnlineVideoEmbed(element);
718
718
  if (onlineVideo) {
719
719
  return /* @__PURE__ */ jsxRuntime.jsx(
720
720
  "iframe",
721
721
  {
722
722
  src: onlineVideo.embedUrl,
723
- title: chunkI4D6JQOI_js.translationsEn["pptx.media.onlineVideoTitle"],
723
+ title: chunk3JUZOKFI_js.translationsEn["pptx.media.onlineVideoTitle"],
724
724
  className: "w-full h-full border-0 pointer-events-auto",
725
- allow: chunk7WWINBGF_js.ONLINE_VIDEO_IFRAME_ALLOW,
725
+ allow: chunkFZSYLXJT_js.ONLINE_VIDEO_IFRAME_ALLOW,
726
726
  allowFullScreen: true,
727
- sandbox: chunk7WWINBGF_js.ONLINE_VIDEO_IFRAME_SANDBOX
727
+ sandbox: chunkFZSYLXJT_js.ONLINE_VIDEO_IFRAME_SANDBOX
728
728
  }
729
729
  );
730
730
  }
@@ -793,32 +793,32 @@ function renderMediaElement(element, mediaDataUrls, options) {
793
793
  if (surface.presenting || surface.preview) {
794
794
  return null;
795
795
  }
796
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkI4D6JQOI_js.translationsEn["pptx.media.title"] });
796
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunk3JUZOKFI_js.translationsEn["pptx.media.title"] });
797
797
  }
798
798
 
799
799
  // src/viewer/utils/text-utils.tsx
800
800
  function getTextStyleForElement(element, fallbackColor) {
801
- return chunk7WWINBGF_js.buildTextBlockStyle(element, { fallbackColor });
801
+ return chunkFZSYLXJT_js.buildTextBlockStyle(element, { fallbackColor });
802
802
  }
803
803
 
804
804
  // src/viewer/utils/text-layout.tsx
805
805
  function getTextLayoutStyle(element) {
806
- if (!chunk7WWINBGF_js.hasTextProperties(element)) {
806
+ if (!chunkFZSYLXJT_js.hasTextProperties(element)) {
807
807
  return {};
808
808
  }
809
- const writingMode = chunk7WWINBGF_js.toCssWritingMode(element.textStyle?.textDirection);
810
- const textOrientation = chunk7WWINBGF_js.toCssTextOrientation(element.textStyle?.textDirection);
811
- const verticalDirection = chunk7WWINBGF_js.toCssVerticalDirection(element.textStyle?.textDirection);
809
+ const writingMode = chunkFZSYLXJT_js.toCssWritingMode(element.textStyle?.textDirection);
810
+ const textOrientation = chunkFZSYLXJT_js.toCssTextOrientation(element.textStyle?.textDirection);
811
+ const verticalDirection = chunkFZSYLXJT_js.toCssVerticalDirection(element.textStyle?.textDirection);
812
812
  const textWrapNone = element.textStyle?.textWrap === "none";
813
813
  const shapeAutoFitTextBox = element.textStyle?.autoFitMode === "shrink" && (element.type === "text" || element.locks?.txBox === true);
814
- const hasParagraphIndents = chunk7WWINBGF_js.hasTextProperties(element) && element.paragraphIndents && element.paragraphIndents.length > 0;
814
+ const hasParagraphIndents = chunkFZSYLXJT_js.hasTextProperties(element) && element.paragraphIndents && element.paragraphIndents.length > 0;
815
815
  const paragraphMarginLeft = element.textStyle?.paragraphMarginLeft;
816
816
  const paragraphIndent = element.textStyle?.paragraphIndent;
817
817
  const marginLeft = !hasParagraphIndents && typeof paragraphMarginLeft === "number" && paragraphMarginLeft !== 0 ? paragraphMarginLeft : void 0;
818
818
  const textIndent = !hasParagraphIndents && typeof paragraphIndent === "number" && paragraphIndent !== 0 ? paragraphIndent : void 0;
819
819
  const bodyTop = element.textStyle?.bodyInsetTop ?? DEFAULT_BODY_INSET_TB_PX;
820
820
  const bodyBottom = element.textStyle?.bodyInsetBottom ?? DEFAULT_BODY_INSET_TB_PX;
821
- const bodyLayoutStyle = chunk7WWINBGF_js.buildTextBodyLayoutStyle(element);
821
+ const bodyLayoutStyle = chunkFZSYLXJT_js.buildTextBodyLayoutStyle(element);
822
822
  return {
823
823
  ...bodyLayoutStyle,
824
824
  // Body inset only. Paragraph spacing (spcBef/spcAft) is applied
@@ -848,7 +848,7 @@ function getTextLayoutStyle(element) {
848
848
 
849
849
  // src/viewer/utils/text-effects.tsx
850
850
  function buildTextBody3DSceneStyle2(textStyle, elementSize) {
851
- return chunk7WWINBGF_js.buildTextBody3DSceneStyle(textStyle, elementSize);
851
+ return chunkFZSYLXJT_js.buildTextBody3DSceneStyle(textStyle, elementSize);
852
852
  }
853
853
 
854
854
  // src/viewer/utils/text-warp-css.tsx
@@ -1033,13 +1033,13 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
1033
1033
  if (!subElementAnimStates || subElementAnimStates.size === 0) {
1034
1034
  return renderedSegments;
1035
1035
  }
1036
- const paraKey = `${elementId}${chunk7WWINBGF_js.TEXT_BUILD_ID_SEP}p${paraIndex}`;
1036
+ const paraKey = `${elementId}${chunkFZSYLXJT_js.TEXT_BUILD_ID_SEP}p${paraIndex}`;
1037
1037
  const paraState = subElementAnimStates.get(paraKey);
1038
1038
  if (paraState) {
1039
1039
  const style = buildAnimStyle(paraState);
1040
1040
  return /* @__PURE__ */ jsxRuntime.jsx("span", { "data-anim-id": paraKey, style: { display: "inline", ...style }, children: renderedSegments }, paraKey);
1041
1041
  }
1042
- const spec = chunk7WWINBGF_js.buildTextBuildSpec(
1042
+ const spec = chunkFZSYLXJT_js.buildTextBuildSpec(
1043
1043
  elementId,
1044
1044
  paraIndex,
1045
1045
  paraRuns.map((run) => ({ text: run.text, style: run })),
@@ -1057,7 +1057,7 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
1057
1057
  "span",
1058
1058
  {
1059
1059
  "data-anim-id": span.animId,
1060
- style: chunk7WWINBGF_js.textBuildSpanStyle(span),
1060
+ style: chunkFZSYLXJT_js.textBuildSpanStyle(span),
1061
1061
  children: content
1062
1062
  },
1063
1063
  span.animId
@@ -1068,13 +1068,13 @@ function renderUnderlineWords(text, isUnderlineWords, wordDecoration, metric, ke
1068
1068
  if (!isUnderlineWords || !text) {
1069
1069
  return inner(text, keyPrefix, metric);
1070
1070
  }
1071
- const pieces = chunk7WWINBGF_js.splitWordsForUnderline(text);
1071
+ const pieces = chunkFZSYLXJT_js.splitWordsForUnderline(text);
1072
1072
  if (pieces.length === 0) {
1073
1073
  return inner(text, keyPrefix, metric);
1074
1074
  }
1075
1075
  const gapMetric = metric ? {
1076
1076
  ...metric,
1077
- nestedStyle: metric.nestedStyle ? chunk7WWINBGF_js.stripUnderlineDecoration(metric.nestedStyle) : void 0
1077
+ nestedStyle: metric.nestedStyle ? chunkFZSYLXJT_js.stripUnderlineDecoration(metric.nestedStyle) : void 0
1078
1078
  } : void 0;
1079
1079
  return pieces.map((piece, i) => {
1080
1080
  const key = `${keyPrefix}-u${i}`;
@@ -1107,7 +1107,7 @@ function makeSegmentPieceRenderer(needsScriptFonts, scriptFonts, baseFontFamily,
1107
1107
  );
1108
1108
  }
1109
1109
  function renderTabbedLine(line, ctx, keyPrefix, renderPiece, nestedStyle, underlineWords = false) {
1110
- const [lineLayout] = chunk7WWINBGF_js.buildRunTabLines(
1110
+ const [lineLayout] = chunkFZSYLXJT_js.buildRunTabLines(
1111
1111
  line,
1112
1112
  ctx,
1113
1113
  nestedStyle,
@@ -1126,7 +1126,7 @@ function renderScriptAwareText(text, needsScriptFonts, scriptFonts, baseFontFami
1126
1126
  if (!needsScriptFonts || !text) {
1127
1127
  return text;
1128
1128
  }
1129
- const pieces = chunk7WWINBGF_js.splitRunByScriptFont(
1129
+ const pieces = chunkFZSYLXJT_js.splitRunByScriptFont(
1130
1130
  text,
1131
1131
  scriptFonts,
1132
1132
  baseFontFamily,
@@ -1143,7 +1143,7 @@ function renderMetricPieces(text, metric, keyPrefix, inner) {
1143
1143
  if (!metric || !text) {
1144
1144
  return inner(text, keyPrefix);
1145
1145
  }
1146
- const pieces = chunk7WWINBGF_js.splitRunForMetrics(text, metric.font);
1146
+ const pieces = chunkFZSYLXJT_js.splitRunForMetrics(text, metric.font);
1147
1147
  if (pieces.length <= 1) {
1148
1148
  return inner(text, keyPrefix);
1149
1149
  }
@@ -1152,7 +1152,7 @@ function renderMetricPieces(text, metric, keyPrefix, inner) {
1152
1152
  {
1153
1153
  style: {
1154
1154
  ...metric.nestedStyle,
1155
- letterSpacing: chunk7WWINBGF_js.pieceLetterSpacing(metric.authoredPx, piece.tracking)
1155
+ letterSpacing: chunkFZSYLXJT_js.pieceLetterSpacing(metric.authoredPx, piece.tracking)
1156
1156
  },
1157
1157
  children: inner(piece.text, `${keyPrefix}-w${i}`)
1158
1158
  },
@@ -1227,9 +1227,9 @@ function renderSegmentContent(elementId, segmentIndex, textValue, lines, needsSc
1227
1227
  ) : /* @__PURE__ */ jsxRuntime.jsx(React7__default.default.Fragment, { children: renderLeaf(chunk.text, chunkKey) }, chunkKey);
1228
1228
  });
1229
1229
  }
1230
- function renderEquationSegment(elementId, segmentIndex, equationXml, equationNumber) {
1231
- const mathml = chunk7WWINBGF_js.convertOmmlToMathMl(equationXml);
1232
- const safeMathml = mathml ? chunk7WWINBGF_js.sanitizeMathMl(mathml) : "";
1230
+ function renderEquationSegment(elementId, segmentIndex, equationXml, equationNumber, fontSize) {
1231
+ const mathml = chunkFZSYLXJT_js.convertOmmlToMathMl(equationXml);
1232
+ const safeMathml = mathml ? chunkFZSYLXJT_js.sanitizeMathMl(mathml) : "";
1233
1233
  const equationContent = safeMathml ? /* @__PURE__ */ jsxRuntime.jsx(
1234
1234
  "span",
1235
1235
  {
@@ -1239,7 +1239,7 @@ function renderEquationSegment(elementId, segmentIndex, equationXml, equationNum
1239
1239
  },
1240
1240
  dangerouslySetInnerHTML: { __html: safeMathml }
1241
1241
  }
1242
- ) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-block px-1 py-0.5 rounded text-xs bg-gray-200/20 text-gray-400 italic", children: chunkI4D6JQOI_js.translationsEn["pptx.textSegment.equationFallback"] });
1242
+ ) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-block px-1 py-0.5 rounded text-xs bg-gray-200/20 text-gray-400 italic", children: chunk3JUZOKFI_js.translationsEn["pptx.textSegment.equationFallback"] });
1243
1243
  if (equationNumber) {
1244
1244
  return /* @__PURE__ */ jsxRuntime.jsxs(
1245
1245
  "span",
@@ -1248,7 +1248,8 @@ function renderEquationSegment(elementId, segmentIndex, equationXml, equationNum
1248
1248
  display: "flex",
1249
1249
  justifyContent: "space-between",
1250
1250
  alignItems: "center",
1251
- width: "100%"
1251
+ width: "100%",
1252
+ fontSize
1252
1253
  },
1253
1254
  children: [
1254
1255
  /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { visibility: "hidden", whiteSpace: "nowrap" }, children: [
@@ -1276,7 +1277,7 @@ function renderEquationSegment(elementId, segmentIndex, equationXml, equationNum
1276
1277
  `${elementId}-seg-${segmentIndex}`
1277
1278
  );
1278
1279
  }
1279
- return /* @__PURE__ */ jsxRuntime.jsx("span", { children: equationContent }, `${elementId}-seg-${segmentIndex}`);
1280
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { style: fontSize ? { fontSize } : void 0, children: equationContent }, `${elementId}-seg-${segmentIndex}`);
1280
1281
  }
1281
1282
  function renderHyperlink(run, spanNode, key, ctx) {
1282
1283
  const url = run.hyperlink?.url;
@@ -1357,12 +1358,18 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
1357
1358
  const segmentIndex = run.segmentIndex ?? 0;
1358
1359
  const key = `${element.id}-seg-${segmentIndex}${keySuffix}`;
1359
1360
  if (run.equation) {
1360
- return renderEquationSegment(element.id, segmentIndex, run.equation.xml, run.equation.number);
1361
+ return renderEquationSegment(
1362
+ element.id,
1363
+ segmentIndex,
1364
+ run.equation.xml,
1365
+ run.equation.number,
1366
+ typeof run.style.fontSize === "string" ? run.style.fontSize : void 0
1367
+ );
1361
1368
  }
1362
1369
  const segmentStyle = segment?.style ?? {};
1363
1370
  const textValue = run.text;
1364
1371
  const lines = textValue.split("\n");
1365
- const resolvedSegmentColor = chunk7WWINBGF_js.normalizeHexColor(
1372
+ const resolvedSegmentColor = chunkFZSYLXJT_js.normalizeHexColor(
1366
1373
  segmentStyle.color || element.textStyle?.color,
1367
1374
  run.hyperlink ? HYPERLINK_COLOR : fallbackColor
1368
1375
  );
@@ -1370,19 +1377,22 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
1370
1377
  const baselineFraction = rawBaseline === 0 ? 0 : Math.abs(rawBaseline) >= 1e3 ? rawBaseline / 1e5 : rawBaseline / 100;
1371
1378
  const baselineFontScale = baselineFraction !== 0 ? BASELINE_FONT_SCALE : 1;
1372
1379
  const rawFontSize = segmentStyle.fontSize || element.textStyle?.fontSize || DEFAULT_TEXT_FONT_SIZE;
1373
- const baseFontSize = rawFontSize * chunk7WWINBGF_js.resolveAutoFitFontScale(element.textStyle);
1380
+ const baseFontSize = chunkFZSYLXJT_js.scaleFontSizeForAutoFit(
1381
+ rawFontSize,
1382
+ chunkFZSYLXJT_js.resolveAutoFitFontScale(element.textStyle)
1383
+ );
1374
1384
  const baselineShift = baselineFraction !== 0 ? `${baselineFraction * baseFontSize}px` : void 0;
1375
- const fontKerning = chunk7WWINBGF_js.resolveFontKerning(segmentStyle.kerning, baseFontSize);
1385
+ const fontKerning = chunkFZSYLXJT_js.resolveFontKerning(segmentStyle.kerning, baseFontSize);
1376
1386
  const scriptFallbackWins = Boolean(
1377
1387
  segmentStyle.scriptFallbackFont && segmentStyle.fontFamilyIsCascadeDefault
1378
1388
  );
1379
1389
  const rawFontFamily = segmentStyle.fontFamily || element.textStyle?.fontFamily;
1380
- const baseFontFamily = scriptFallbackWins ? chunk7WWINBGF_js.getSubstituteFontFamily(segmentStyle.scriptFallbackFont) : rawFontFamily ? chunk7WWINBGF_js.getSubstituteFontFamily(
1390
+ const baseFontFamily = scriptFallbackWins ? chunkFZSYLXJT_js.getSubstituteFontFamily(segmentStyle.scriptFallbackFont) : rawFontFamily ? chunkFZSYLXJT_js.getSubstituteFontFamily(
1381
1391
  rawFontFamily,
1382
- chunk7WWINBGF_js.parsePanoseString(segmentStyle.latinFontPanose ?? element.textStyle?.latinFontPanose)
1392
+ chunkFZSYLXJT_js.parsePanoseString(segmentStyle.latinFontPanose ?? element.textStyle?.latinFontPanose)
1383
1393
  ) : DEFAULT_FONT_FAMILY2;
1384
- const scriptFonts = chunk7WWINBGF_js.resolveScriptFontSet(segmentStyle, element.textStyle, baseFontFamily);
1385
- const needsScriptFonts = chunk7WWINBGF_js.hasDistinctScriptFonts(scriptFonts);
1394
+ const scriptFonts = chunkFZSYLXJT_js.resolveScriptFontSet(segmentStyle, element.textStyle, baseFontFamily);
1395
+ const needsScriptFonts = chunkFZSYLXJT_js.hasDistinctScriptFonts(scriptFonts);
1386
1396
  const authoredLetterSpacing = typeof segmentStyle.characterSpacing === "number" && segmentStyle.characterSpacing !== 0 ? segmentStyle.characterSpacing / 100 * (96 / 72) : 0;
1387
1397
  const metricFont = {
1388
1398
  fontFamily: baseFontFamily,
@@ -1390,7 +1400,7 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
1390
1400
  bold: Boolean(segmentStyle.bold),
1391
1401
  italic: Boolean(segmentStyle.italic)
1392
1402
  };
1393
- const nestedStyle = chunk7WWINBGF_js.nestedTextDecorationStyle(run.style);
1403
+ const nestedStyle = chunkFZSYLXJT_js.nestedTextDecorationStyle(run.style);
1394
1404
  const metricContext = { font: metricFont, authoredPx: authoredLetterSpacing, nestedStyle };
1395
1405
  const spanStyle = { ...run.style };
1396
1406
  spanStyle.color = resolvedSegmentColor;
@@ -1398,11 +1408,11 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
1398
1408
  spanStyle.fontFamily = baseFontFamily;
1399
1409
  spanStyle.verticalAlign = baselineShift;
1400
1410
  spanStyle.fontKerning = fontKerning;
1401
- spanStyle.letterSpacing = chunk7WWINBGF_js.pieceLetterSpacing(
1411
+ spanStyle.letterSpacing = chunkFZSYLXJT_js.pieceLetterSpacing(
1402
1412
  authoredLetterSpacing,
1403
- chunk7WWINBGF_js.resolveMetricTrackingPx(textValue, metricFont)
1413
+ chunkFZSYLXJT_js.resolveMetricTrackingPx(textValue, metricFont)
1404
1414
  );
1405
- const hollow = chunk7WWINBGF_js.hollowTextFillStyle(segmentStyle, {
1415
+ const hollow = chunkFZSYLXJT_js.hollowTextFillStyle(segmentStyle, {
1406
1416
  color: resolvedSegmentColor,
1407
1417
  textStroke: typeof spanStyle.WebkitTextStroke === "string" ? spanStyle.WebkitTextStroke : void 0
1408
1418
  });
@@ -1417,7 +1427,7 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
1417
1427
  const isUnderlineWords = Boolean(segmentStyle.underline) && segmentStyle.underlineStyle === "words";
1418
1428
  const wordDecoration = isUnderlineWords ? nestedStyle ?? run.underlineWordPieces?.find((piece) => piece.style)?.style : void 0;
1419
1429
  if (isUnderlineWords) {
1420
- const stripped = chunk7WWINBGF_js.stripUnderlineDecoration(spanStyle);
1430
+ const stripped = chunkFZSYLXJT_js.stripUnderlineDecoration(spanStyle);
1421
1431
  spanStyle.textDecoration = stripped.textDecoration;
1422
1432
  delete spanStyle.textDecorationStyle;
1423
1433
  delete spanStyle.textDecorationThickness;
@@ -1433,7 +1443,7 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
1433
1443
  scriptFonts,
1434
1444
  baseFontFamily,
1435
1445
  findHighlights,
1436
- chunk7WWINBGF_js.buildTabContext(
1446
+ chunkFZSYLXJT_js.buildTabContext(
1437
1447
  element.textStyle?.tabStops,
1438
1448
  element.textStyle?.defaultTabSize,
1439
1449
  baseFontSize,
@@ -1465,14 +1475,14 @@ function renderSeededListRun(seed, runs, segments, context) {
1465
1475
  const segment = sourceRun ? segments[seed.segmentIndex] : { text: seed.text, style: seed.style };
1466
1476
  const resolvedSegment = {
1467
1477
  ...segment,
1468
- style: chunk7WWINBGF_js.withInlineListDecorationDefaults(segment.style, context.element.textStyle)
1478
+ style: chunkFZSYLXJT_js.withInlineListDecorationDefaults(segment.style, context.element.textStyle)
1469
1479
  };
1470
- const decorationCss = chunk7WWINBGF_js.segmentStyleToCss(
1480
+ const decorationCss = chunkFZSYLXJT_js.segmentStyleToCss(
1471
1481
  resolvedSegment,
1472
- chunk7WWINBGF_js.resolveAutoFitFontScale(context.element.textStyle)
1482
+ chunkFZSYLXJT_js.resolveAutoFitFontScale(context.element.textStyle)
1473
1483
  );
1474
- chunk7WWINBGF_js.applyUnderlineVariant(decorationCss, resolvedSegment);
1475
- const run = sourceRun ? { ...sourceRun, style: { ...sourceRun.style, ...chunk7WWINBGF_js.nestedTextDecorationStyle(decorationCss) } } : {
1484
+ chunkFZSYLXJT_js.applyUnderlineVariant(decorationCss, resolvedSegment);
1485
+ const run = sourceRun ? { ...sourceRun, style: { ...sourceRun.style, ...chunkFZSYLXJT_js.nestedTextDecorationStyle(decorationCss) } } : {
1476
1486
  text: seed.text,
1477
1487
  style: decorationCss,
1478
1488
  segmentIndex: seed.segmentIndex
@@ -1487,7 +1497,7 @@ function renderSeededListRun(seed, runs, segments, context) {
1487
1497
  });
1488
1498
  }
1489
1499
  function renderTextSegments(element, fallbackColor, emptyFallback, findHighlights, onHyperlinkClick, fieldContext, subElementAnimStates, segmentOverrides, requireCtrlClick, placeholderPrompt, inlineListSeed) {
1490
- if (!chunk7WWINBGF_js.hasTextProperties(element)) {
1500
+ if (!chunkFZSYLXJT_js.hasTextProperties(element)) {
1491
1501
  return emptyFallback || null;
1492
1502
  }
1493
1503
  const segments = segmentOverrides ?? element.textSegments;
@@ -1497,7 +1507,7 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
1497
1507
  }
1498
1508
  return element.text || emptyFallback || "";
1499
1509
  }
1500
- const paragraphs = chunk7WWINBGF_js.buildParagraphs(
1510
+ const paragraphs = chunkFZSYLXJT_js.buildParagraphs(
1501
1511
  element,
1502
1512
  fieldContext,
1503
1513
  segmentOverrides,
@@ -1643,13 +1653,13 @@ function renderBulletMarker(para, paraIndex, elementId) {
1643
1653
  );
1644
1654
  }
1645
1655
  function getDuotoneColors(element) {
1646
- if (!chunk7WWINBGF_js.isImageLikeElement(element)) {
1656
+ if (!chunkFZSYLXJT_js.isImageLikeElement(element)) {
1647
1657
  return void 0;
1648
1658
  }
1649
1659
  return element.imageEffects?.duotone;
1650
1660
  }
1651
1661
  function buildLineShadowCss(element) {
1652
- if (!chunk7WWINBGF_js.hasShapeProperties(element)) {
1662
+ if (!chunkFZSYLXJT_js.hasShapeProperties(element)) {
1653
1663
  return void 0;
1654
1664
  }
1655
1665
  const ss = element.shapeStyle;
@@ -1660,13 +1670,13 @@ function buildLineShadowCss(element) {
1660
1670
  const offsetY = typeof ss.lineShadowOffsetY === "number" ? ss.lineShadowOffsetY : 2;
1661
1671
  const blur = typeof ss.lineShadowBlur === "number" ? Math.max(0, ss.lineShadowBlur) : 4;
1662
1672
  const opacity = typeof ss.lineShadowOpacity === "number" ? Math.max(0, Math.min(1, ss.lineShadowOpacity)) : 0.35;
1663
- return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${chunk7WWINBGF_js.colorWithOpacity(
1664
- chunk7WWINBGF_js.normalizeHexColor(ss.lineShadowColor, "#000000"),
1673
+ return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${chunkFZSYLXJT_js.colorWithOpacity(
1674
+ chunkFZSYLXJT_js.normalizeHexColor(ss.lineShadowColor, "#000000"),
1665
1675
  opacity
1666
1676
  )}`;
1667
1677
  }
1668
1678
  function buildLineGlowFilter(element) {
1669
- if (!chunk7WWINBGF_js.hasShapeProperties(element)) {
1679
+ if (!chunkFZSYLXJT_js.hasShapeProperties(element)) {
1670
1680
  return void 0;
1671
1681
  }
1672
1682
  const ss = element.shapeStyle;
@@ -1675,22 +1685,22 @@ function buildLineGlowFilter(element) {
1675
1685
  }
1676
1686
  const glowOpacity = typeof ss.lineGlowOpacity === "number" ? ss.lineGlowOpacity : 0.75;
1677
1687
  const glowRad = Math.round(Math.max(0, ss.lineGlowRadius));
1678
- const glowCol = chunk7WWINBGF_js.colorWithOpacity(chunk7WWINBGF_js.normalizeHexColor(ss.lineGlowColor, "#ffff00"), glowOpacity);
1688
+ const glowCol = chunkFZSYLXJT_js.colorWithOpacity(chunkFZSYLXJT_js.normalizeHexColor(ss.lineGlowColor, "#ffff00"), glowOpacity);
1679
1689
  return `drop-shadow(0 0 ${glowRad}px ${glowCol})`;
1680
1690
  }
1681
1691
  function getDagDuotoneFilterId(elementId) {
1682
1692
  return `dag-duotone-${elementId}`;
1683
1693
  }
1684
1694
  function hasDagDuotoneEffect(element) {
1685
- if (!chunk7WWINBGF_js.hasShapeProperties(element)) {
1695
+ if (!chunkFZSYLXJT_js.hasShapeProperties(element)) {
1686
1696
  return false;
1687
1697
  }
1688
1698
  return Boolean(element.shapeStyle?.dagDuotone);
1689
1699
  }
1690
1700
  function renderDagDuotoneSvgFilter(elementId, color1, color2) {
1691
1701
  const filterId = getDagDuotoneFilterId(elementId);
1692
- const c1 = chunk7WWINBGF_js.hexToRgbUnit(color1);
1693
- const c2 = chunk7WWINBGF_js.hexToRgbUnit(color2);
1702
+ const c1 = chunkFZSYLXJT_js.hexToRgbUnit(color1);
1703
+ const c2 = chunkFZSYLXJT_js.hexToRgbUnit(color2);
1694
1704
  const grayscaleMatrix = [
1695
1705
  0.2126,
1696
1706
  0.7152,
@@ -1734,7 +1744,7 @@ function renderDagDuotoneSvgFilter(elementId, color1, color2) {
1734
1744
 
1735
1745
  // src/viewer/utils/shape-visual-3d.ts
1736
1746
  function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elementHeight) {
1737
- return chunk7WWINBGF_js.build3DExtrusionData(
1747
+ return chunkFZSYLXJT_js.build3DExtrusionData(
1738
1748
  shape3d,
1739
1749
  scene3d,
1740
1750
  fillColor,
@@ -1743,7 +1753,7 @@ function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elemen
1743
1753
  );
1744
1754
  }
1745
1755
  function apply3dEffects2(base, scene3d, shape3d, fillColorFallback, elementSize, elementId) {
1746
- chunk7WWINBGF_js.apply3dEffects(
1756
+ chunkFZSYLXJT_js.apply3dEffects(
1747
1757
  base,
1748
1758
  scene3d,
1749
1759
  shape3d,
@@ -1758,11 +1768,11 @@ function rendersCustomVectorPath(element) {
1758
1768
  return (element.type === "shape" || element.type === "image" || element.type === "picture") && Boolean(element.pathData) && typeof element.pathWidth === "number" && element.pathWidth > 0 && typeof element.pathHeight === "number" && element.pathHeight > 0;
1759
1769
  }
1760
1770
  function rendersWedgeCalloutVector(element) {
1761
- return element.type === "shape" && chunk7WWINBGF_js.isWedgeCalloutPresetShape(element.shapeType);
1771
+ return element.type === "shape" && chunkFZSYLXJT_js.isWedgeCalloutPresetShape(element.shapeType);
1762
1772
  }
1763
1773
  function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _strokeColor, animatesFill, animatesStroke, parentGroupFill) {
1764
1774
  if (element.type === "group") {
1765
- const fx2 = chunk7WWINBGF_js.getComputedEffectStyle(element);
1775
+ const fx2 = chunkFZSYLXJT_js.getComputedEffectStyle(element);
1766
1776
  const groupStyle = {};
1767
1777
  if (fx2.filter) {
1768
1778
  groupStyle.filter = fx2.filter;
@@ -1772,13 +1782,13 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
1772
1782
  }
1773
1783
  return groupStyle;
1774
1784
  }
1775
- if (!chunk7WWINBGF_js.hasShapeProperties(element)) {
1785
+ if (!chunkFZSYLXJT_js.hasShapeProperties(element)) {
1776
1786
  return {};
1777
1787
  }
1778
1788
  const ss = element.shapeStyle;
1779
- const fill = animatesFill ? void 0 : chunk7WWINBGF_js.getComputedFillStyle(element, parentGroupFill);
1780
- const fx = chunk7WWINBGF_js.getComputedEffectStyle(element);
1781
- const stroke = chunk7WWINBGF_js.getComputedStrokeStyle(element);
1789
+ const fill = animatesFill ? void 0 : chunkFZSYLXJT_js.getComputedFillStyle(element, parentGroupFill);
1790
+ const fx = chunkFZSYLXJT_js.getComputedEffectStyle(element);
1791
+ const stroke = chunkFZSYLXJT_js.getComputedStrokeStyle(element);
1782
1792
  const base = {
1783
1793
  // A gradient fill REPLACES the solid fill, it does not sit on top of it;
1784
1794
  // the whole precedence lives in shared's `getComputedFillStyle`.
@@ -1817,7 +1827,7 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
1817
1827
  };
1818
1828
  Object.assign(
1819
1829
  base,
1820
- chunk7WWINBGF_js.getAnimationColorBaseStyle(element, {
1830
+ chunkFZSYLXJT_js.getAnimationColorBaseStyle(element, {
1821
1831
  animatesFill,
1822
1832
  animatesStroke,
1823
1833
  parentGroupFill
@@ -1839,7 +1849,7 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
1839
1849
  },
1840
1850
  element.id
1841
1851
  );
1842
- if (rendersCustomVectorPath(element) || rendersWedgeCalloutVector(element) || chunk7WWINBGF_js.isStrokeOnlyPresetElement(element)) {
1852
+ if (rendersCustomVectorPath(element) || rendersWedgeCalloutVector(element) || chunkFZSYLXJT_js.isStrokeOnlyPresetElement(element)) {
1843
1853
  base.backgroundColor = "transparent";
1844
1854
  base.backgroundImage = void 0;
1845
1855
  base.borderWidth = void 0;
@@ -1853,7 +1863,7 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
1853
1863
  if (rendersWedgeCalloutVector(element)) {
1854
1864
  return base;
1855
1865
  }
1856
- const geometry = chunk7WWINBGF_js.resolveShapeGeometry(element);
1866
+ const geometry = chunkFZSYLXJT_js.resolveShapeGeometry(element);
1857
1867
  switch (geometry.kind) {
1858
1868
  case "bare":
1859
1869
  return { backgroundColor: "transparent", borderWidth: 0, borderStyle: "none" };
@@ -1877,7 +1887,7 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
1877
1887
  }
1878
1888
  }
1879
1889
  function getConnectorPathGeometry2(element) {
1880
- return chunk7WWINBGF_js.getConnectorPathGeometry(element);
1890
+ return chunkFZSYLXJT_js.getConnectorPathGeometry(element);
1881
1891
  }
1882
1892
  var ARROW_SIZE_SCALE = {
1883
1893
  sm: 0.6,
@@ -1946,11 +1956,11 @@ function strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray) {
1946
1956
  strokePaint,
1947
1957
  strokeWidth,
1948
1958
  dashArray,
1949
- lineCap: chunk7WWINBGF_js.svgLineCap(shapeStyle?.lineCap),
1959
+ lineCap: chunkFZSYLXJT_js.svgLineCap(shapeStyle?.lineCap),
1950
1960
  lineJoin,
1951
1961
  miterLimit,
1952
- offsets: chunk7WWINBGF_js.getCompoundLineOffsets(shapeStyle?.compoundLine, strokeWidth),
1953
- widths: chunk7WWINBGF_js.getCompoundLineWidths(shapeStyle?.compoundLine, strokeWidth)
1962
+ offsets: chunkFZSYLXJT_js.getCompoundLineOffsets(shapeStyle?.compoundLine, strokeWidth),
1963
+ widths: chunkFZSYLXJT_js.getCompoundLineWidths(shapeStyle?.compoundLine, strokeWidth)
1954
1964
  };
1955
1965
  }
1956
1966
  function strokeStrands(d, keyBase, ctx) {
@@ -1973,12 +1983,12 @@ function strokeStrands(d, keyBase, ctx) {
1973
1983
  }
1974
1984
  function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredPaths, shapeStyle, hasFill, fillColor, fillOpacity, strokePaint, strokeWidth, dashArray, animatesFill = false, gradient) {
1975
1985
  const ctx = strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray);
1976
- const subpaths = structuredPaths && structuredPaths.length > 0 ? chunk7WWINBGF_js.customGeometryPathsToSvgSubpaths(structuredPaths, pathWidth, pathHeight) : void 0;
1986
+ const subpaths = structuredPaths && structuredPaths.length > 0 ? chunkFZSYLXJT_js.customGeometryPathsToSvgSubpaths(structuredPaths, pathWidth, pathHeight) : void 0;
1977
1987
  const needsPerSubpath = subpaths !== void 0 && subpaths.some((sp) => sp.fillMode && sp.fillMode !== "norm" || sp.stroke === false);
1978
- const gradientPaint = gradient ? chunk7WWINBGF_js.svgGradientFillRef(gradient) : void 0;
1988
+ const gradientPaint = gradient ? chunkFZSYLXJT_js.svgGradientFillRef(gradient) : void 0;
1979
1989
  const nodes = [];
1980
1990
  if (subpaths && needsPerSubpath) {
1981
- const paints = chunk7WWINBGF_js.buildSubpathPaints(subpaths, hasFill, fillColor, fillOpacity);
1991
+ const paints = chunkFZSYLXJT_js.buildSubpathPaints(subpaths, hasFill, fillColor, fillOpacity);
1982
1992
  paints.forEach((paint, idx) => {
1983
1993
  if (paint.fill !== "none") {
1984
1994
  const mode = subpaths[idx]?.fillMode;
@@ -2007,7 +2017,7 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
2007
2017
  "path",
2008
2018
  {
2009
2019
  d: pathData,
2010
- fill: animatesFill ? "inherit" : gradientPaint ?? chunk7WWINBGF_js.colorWithOpacity(fillColor, fillOpacity),
2020
+ fill: animatesFill ? "inherit" : gradientPaint ?? chunkFZSYLXJT_js.colorWithOpacity(fillColor, fillOpacity),
2011
2021
  stroke: "none",
2012
2022
  vectorEffect: "non-scaling-stroke"
2013
2023
  },
@@ -2033,14 +2043,14 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
2033
2043
  );
2034
2044
  }
2035
2045
  function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor, animatesFill, animatesStroke) {
2036
- if (!chunk7WWINBGF_js.hasShapeProperties(element)) {
2046
+ if (!chunkFZSYLXJT_js.hasShapeProperties(element)) {
2037
2047
  return null;
2038
2048
  }
2039
2049
  const normalizedType = (element.shapeType || "").toLowerCase();
2040
- const fillPaint = animatesFill ? "inherit" : chunk7WWINBGF_js.colorWithOpacity(fillColor, element.shapeStyle?.fillOpacity);
2041
- const strokePaint = animatesStroke ? "inherit" : chunk7WWINBGF_js.colorWithOpacity(strokeColor, element.shapeStyle?.strokeOpacity);
2042
- const dashType = chunk7WWINBGF_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2043
- const dashArray = chunk7WWINBGF_js.getSvgStrokeDasharray(
2050
+ const fillPaint = animatesFill ? "inherit" : chunkFZSYLXJT_js.colorWithOpacity(fillColor, element.shapeStyle?.fillOpacity);
2051
+ const strokePaint = animatesStroke ? "inherit" : chunkFZSYLXJT_js.colorWithOpacity(strokeColor, element.shapeStyle?.strokeOpacity);
2052
+ const dashType = chunkFZSYLXJT_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2053
+ const dashArray = chunkFZSYLXJT_js.getSvgStrokeDasharray(
2044
2054
  dashType,
2045
2055
  Math.max(strokeWidth, 1),
2046
2056
  element.shapeStyle?.customDashSegments
@@ -2121,13 +2131,13 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2121
2131
  // container's `background-image` is suppressed for custom geometry, so
2122
2132
  // without this the shape fell back to the parser's representative solid
2123
2133
  // and lost every fade (issue #132).
2124
- chunk7WWINBGF_js.buildSvgGradientDef(element.shapeStyle, element.id)
2134
+ chunkFZSYLXJT_js.buildSvgGradientDef(element.shapeStyle, element.id)
2125
2135
  );
2126
2136
  }
2127
- if ((element.type === "image" || element.type === "picture") && strokeWidth > 0 && !chunk7WWINBGF_js.buildStrokeOutline(element)) {
2137
+ if ((element.type === "image" || element.type === "picture") && strokeWidth > 0 && !chunkFZSYLXJT_js.buildStrokeOutline(element)) {
2128
2138
  const width = Math.max(element.width, 1);
2129
2139
  const height = Math.max(element.height, 1);
2130
- const geometry = chunk7WWINBGF_js.getPresetShapeVectorGeometry(
2140
+ const geometry = chunkFZSYLXJT_js.getPresetShapeVectorGeometry(
2131
2141
  element.shapeType || "rect",
2132
2142
  width,
2133
2143
  height,
@@ -2155,18 +2165,18 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2155
2165
  );
2156
2166
  }
2157
2167
  }
2158
- if (element.type === "shape" && chunk7WWINBGF_js.isWedgeCalloutPresetShape(element.shapeType)) {
2168
+ if (element.type === "shape" && chunkFZSYLXJT_js.isWedgeCalloutPresetShape(element.shapeType)) {
2159
2169
  const width = Math.max(element.width, 1);
2160
2170
  const height = Math.max(element.height, 1);
2161
- const geometry = chunk7WWINBGF_js.getPresetShapeVectorGeometry(
2171
+ const geometry = chunkFZSYLXJT_js.getPresetShapeVectorGeometry(
2162
2172
  element.shapeType,
2163
2173
  width,
2164
2174
  height,
2165
2175
  element.shapeAdjustments
2166
2176
  );
2167
2177
  if (geometry) {
2168
- const gradient = chunk7WWINBGF_js.buildSvgGradientDef(element.shapeStyle, element.id);
2169
- const gradientPaint = gradient ? chunk7WWINBGF_js.svgGradientFillRef(gradient) : void 0;
2178
+ const gradient = chunkFZSYLXJT_js.buildSvgGradientDef(element.shapeStyle, element.id);
2179
+ const gradientPaint = gradient ? chunkFZSYLXJT_js.svgGradientFillRef(gradient) : void 0;
2170
2180
  return /* @__PURE__ */ jsxRuntime.jsxs(
2171
2181
  "svg",
2172
2182
  {
@@ -2199,18 +2209,18 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2199
2209
  );
2200
2210
  }
2201
2211
  }
2202
- if (chunk7WWINBGF_js.isCalloutShape(normalizedType)) {
2212
+ if (chunkFZSYLXJT_js.isCalloutShape(normalizedType)) {
2203
2213
  const width = Math.max(element.width, 1);
2204
2214
  const height = Math.max(element.height, 1);
2205
- const geometry = chunk7WWINBGF_js.getCalloutLeaderLineGeometry(
2215
+ const geometry = chunkFZSYLXJT_js.getCalloutLeaderLineGeometry(
2206
2216
  normalizedType,
2207
2217
  width,
2208
2218
  height,
2209
2219
  element.shapeAdjustments
2210
2220
  );
2211
2221
  if (geometry && geometry.points.length >= 2) {
2212
- const leaderPath = chunk7WWINBGF_js.buildCalloutLeaderLineSvgPath(geometry);
2213
- const bounds = chunk7WWINBGF_js.getCalloutViewBoxBounds(width, height, geometry);
2222
+ const leaderPath = chunkFZSYLXJT_js.buildCalloutLeaderLineSvgPath(geometry);
2223
+ const bounds = chunkFZSYLXJT_js.getCalloutViewBoxBounds(width, height, geometry);
2214
2224
  const lineStroke = Math.max(strokeWidth, 1);
2215
2225
  const offsetLeft = bounds.minX;
2216
2226
  const offsetTop = bounds.minY;
@@ -2273,10 +2283,10 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2273
2283
  const endArrowW = element.shapeStyle?.connectorEndArrowWidth;
2274
2284
  const endArrowL = element.shapeStyle?.connectorEndArrowLength;
2275
2285
  const compoundLine = element.shapeStyle?.compoundLine;
2276
- const connectorLineCap = chunk7WWINBGF_js.svgLineCap(element.shapeStyle?.lineCap);
2286
+ const connectorLineCap = chunkFZSYLXJT_js.svgLineCap(element.shapeStyle?.lineCap);
2277
2287
  const hitTargetWidth = Math.max(strokeWidth * 3, 12);
2278
- const offsets = chunk7WWINBGF_js.getCompoundLineOffsets(compoundLine, strokeWidth);
2279
- const widths = chunk7WWINBGF_js.getCompoundLineWidths(compoundLine, strokeWidth);
2288
+ const offsets = chunkFZSYLXJT_js.getCompoundLineOffsets(compoundLine, strokeWidth);
2289
+ const widths = chunkFZSYLXJT_js.getCompoundLineWidths(compoundLine, strokeWidth);
2280
2290
  return /* @__PURE__ */ jsxRuntime.jsxs(
2281
2291
  "svg",
2282
2292
  {
@@ -2343,15 +2353,15 @@ function parseGradientFillCss(gradFill) {
2343
2353
  }
2344
2354
  const rawStops = stops.map((gs) => {
2345
2355
  const pos = Number.parseInt(String(gs["@_pos"] || "0"), 10) / 1e3;
2346
- const color = chunk7WWINBGF_js.parseDrawingColor(gs) ?? "#888888";
2347
- const opacity = chunk7WWINBGF_js.parseDrawingColorOpacity(gs);
2356
+ const color = chunkFZSYLXJT_js.parseDrawingColor(gs) ?? "#888888";
2357
+ const opacity = chunkFZSYLXJT_js.parseDrawingColorOpacity(gs);
2348
2358
  return { position: pos, color, opacity };
2349
2359
  }).sort((a, b) => a.position - b.position);
2350
- const stopStrings = rawStops.map((s) => `${chunk7WWINBGF_js.colorWithOpacity(s.color, s.opacity)} ${s.position.toFixed(1)}%`).join(", ");
2360
+ const stopStrings = rawStops.map((s) => `${chunkFZSYLXJT_js.colorWithOpacity(s.color, s.opacity)} ${s.position.toFixed(1)}%`).join(", ");
2351
2361
  const lin = gradFill["a:lin"];
2352
2362
  if (lin) {
2353
2363
  const angRaw = Number.parseInt(String(lin["@_ang"] || "0"), 10);
2354
- const angleDeg = Math.round(chunk7WWINBGF_js.ooxmlGradientAngleToCssDegrees(angRaw / 6e4));
2364
+ const angleDeg = Math.round(chunkFZSYLXJT_js.ooxmlGradientAngleToCssDegrees(angRaw / 6e4));
2355
2365
  return `linear-gradient(${angleDeg}deg, ${stopStrings})`;
2356
2366
  }
2357
2367
  const path = gradFill["a:path"];
@@ -2365,7 +2375,7 @@ function parseGradientFillCss(gradFill) {
2365
2375
  b: Number.parseInt(String(fillToRectXml["@_b"] || "0"), 10) / 1e5
2366
2376
  } : void 0;
2367
2377
  if (pathType === "rect") {
2368
- return chunk7WWINBGF_js.buildRectPathGradient(rawStops, void 0, fillToRect);
2378
+ return chunkFZSYLXJT_js.buildRectPathGradient(rawStops, void 0, fillToRect);
2369
2379
  }
2370
2380
  let cx = 50;
2371
2381
  let cy = 50;
@@ -2387,8 +2397,8 @@ function parsePatternFillCss(pattFill) {
2387
2397
  if (!pattFill) {
2388
2398
  return void 0;
2389
2399
  }
2390
- const fgColor = chunk7WWINBGF_js.parseDrawingColor(pattFill["a:fgClr"]) ?? "#000000";
2391
- const bgColor = chunk7WWINBGF_js.parseDrawingColor(pattFill["a:bgClr"]) ?? "#ffffff";
2400
+ const fgColor = chunkFZSYLXJT_js.parseDrawingColor(pattFill["a:fgClr"]) ?? "#000000";
2401
+ const bgColor = chunkFZSYLXJT_js.parseDrawingColor(pattFill["a:bgClr"]) ?? "#ffffff";
2392
2402
  const preset = String(pattFill["@_prst"] || "ltDnDiag");
2393
2403
  switch (preset) {
2394
2404
  case "ltHorz":
@@ -2499,11 +2509,11 @@ function parseCellBorders(cellProperties) {
2499
2509
  const prstDash = ln["a:prstDash"];
2500
2510
  const dashVal = prstDash ? String(prstDash["@_val"] || "") : void 0;
2501
2511
  const cssBorderStyle = ooxmlDashToCss(dashVal);
2502
- const color = chunk7WWINBGF_js.parseDrawingColor(ln["a:solidFill"]);
2512
+ const color = chunkFZSYLXJT_js.parseDrawingColor(ln["a:solidFill"]);
2503
2513
  if (color) {
2504
- const opacity = chunk7WWINBGF_js.parseDrawingColorOpacity(ln["a:solidFill"]);
2514
+ const opacity = chunkFZSYLXJT_js.parseDrawingColorOpacity(ln["a:solidFill"]);
2505
2515
  const key = `${edge.prefix}`;
2506
- borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${chunk7WWINBGF_js.colorWithOpacity(color, opacity)}`;
2516
+ borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${chunkFZSYLXJT_js.colorWithOpacity(color, opacity)}`;
2507
2517
  }
2508
2518
  }
2509
2519
  return borderStyle;
@@ -2516,7 +2526,7 @@ function parseCellTextEffects(runProps) {
2516
2526
  const textShadowParts = [];
2517
2527
  const outerShdw = effectLst["a:outerShdw"];
2518
2528
  if (outerShdw) {
2519
- const shdwColor = chunk7WWINBGF_js.parseDrawingColor(outerShdw);
2529
+ const shdwColor = chunkFZSYLXJT_js.parseDrawingColor(outerShdw);
2520
2530
  if (shdwColor) {
2521
2531
  const blurRad = Number.parseInt(String(outerShdw["@_blurRad"] || "0"), 10);
2522
2532
  const blurPx = blurRad > 0 ? Math.round(blurRad / 12700) : 0;
@@ -2534,7 +2544,7 @@ function parseCellTextEffects(runProps) {
2534
2544
  }
2535
2545
  const glow = effectLst["a:glow"];
2536
2546
  if (glow) {
2537
- const glowColor = chunk7WWINBGF_js.parseDrawingColor(glow);
2547
+ const glowColor = chunkFZSYLXJT_js.parseDrawingColor(glow);
2538
2548
  if (glowColor) {
2539
2549
  const glowRad = Number.parseInt(String(glow["@_rad"] || "0"), 10);
2540
2550
  const glowPx = glowRad > 0 ? Math.round(glowRad / 12700) : 2;
@@ -2556,11 +2566,11 @@ function extractCellText(cellXml) {
2556
2566
  const textParts = [];
2557
2567
  const runs = ensureArrayValue(paragraph["a:r"]);
2558
2568
  runs.forEach((run) => {
2559
- textParts.push(chunk7WWINBGF_js.xmlText(run["a:t"]) ?? "");
2569
+ textParts.push(chunkFZSYLXJT_js.xmlText(run["a:t"]) ?? "");
2560
2570
  });
2561
2571
  const fields = ensureArrayValue(paragraph["a:fld"]);
2562
2572
  fields.forEach((field) => {
2563
- textParts.push(chunk7WWINBGF_js.xmlText(field["a:t"]) ?? "");
2573
+ textParts.push(chunkFZSYLXJT_js.xmlText(field["a:t"]) ?? "");
2564
2574
  });
2565
2575
  paragraphTexts.push(textParts.join(""));
2566
2576
  });
@@ -2604,10 +2614,10 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
2604
2614
  if (runProps?.["@_u"] !== void 0) {
2605
2615
  cellStyle.textDecorationLine = runProps["@_u"] === "sng" ? "underline" : "none";
2606
2616
  }
2607
- const runColor = chunk7WWINBGF_js.parseDrawingColor(runProps?.["a:solidFill"], schemeColorOverrides) || chunk7WWINBGF_js.parseDrawingColor(runProps?.["a:highlight"], schemeColorOverrides);
2617
+ const runColor = chunkFZSYLXJT_js.parseDrawingColor(runProps?.["a:solidFill"], schemeColorOverrides) || chunkFZSYLXJT_js.parseDrawingColor(runProps?.["a:highlight"], schemeColorOverrides);
2608
2618
  if (runColor) {
2609
- const opacity = chunk7WWINBGF_js.parseDrawingColorOpacity(runProps?.["a:solidFill"]);
2610
- cellStyle.color = chunk7WWINBGF_js.colorWithOpacity(runColor, opacity);
2619
+ const opacity = chunkFZSYLXJT_js.parseDrawingColorOpacity(runProps?.["a:solidFill"]);
2620
+ cellStyle.color = chunkFZSYLXJT_js.colorWithOpacity(runColor, opacity);
2611
2621
  }
2612
2622
  const fontFamily = runProps?.["a:latin"]?.["@_typeface"] || runProps?.["a:ea"]?.["@_typeface"] || runProps?.["a:cs"]?.["@_typeface"];
2613
2623
  if (fontFamily) {
@@ -2617,15 +2627,15 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
2617
2627
  cellStyle.textAlign = parseParagraphAlignment(paragraphProperties["@_algn"]);
2618
2628
  }
2619
2629
  const cellProperties = cellXml["a:tcPr"];
2620
- const cellFill = chunk7WWINBGF_js.parseDrawingColor(
2630
+ const cellFill = chunkFZSYLXJT_js.parseDrawingColor(
2621
2631
  cellProperties?.["a:solidFill"],
2622
2632
  schemeColorOverrides
2623
2633
  );
2624
2634
  if (cellFill) {
2625
- const opacity = chunk7WWINBGF_js.parseDrawingColorOpacity(
2635
+ const opacity = chunkFZSYLXJT_js.parseDrawingColorOpacity(
2626
2636
  cellProperties?.["a:solidFill"]
2627
2637
  );
2628
- cellStyle.backgroundColor = chunk7WWINBGF_js.colorWithOpacity(cellFill, opacity);
2638
+ cellStyle.backgroundColor = chunkFZSYLXJT_js.colorWithOpacity(cellFill, opacity);
2629
2639
  } else {
2630
2640
  const gradCss = parseGradientFillCss(cellProperties?.["a:gradFill"]);
2631
2641
  if (gradCss) {
@@ -2640,16 +2650,16 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
2640
2650
  const edgeBorders = parseCellBorders(cellProperties);
2641
2651
  Object.assign(cellStyle, edgeBorders);
2642
2652
  if (!cellStyle.borderLeftColor && !cellStyle.borderRightColor && !cellStyle.borderTopColor && !cellStyle.borderBottomColor) {
2643
- const borderColor = chunk7WWINBGF_js.parseDrawingColor(
2653
+ const borderColor = chunkFZSYLXJT_js.parseDrawingColor(
2644
2654
  cellProperties?.["a:lnL"]?.["a:solidFill"],
2645
2655
  schemeColorOverrides
2646
- ) || chunk7WWINBGF_js.parseDrawingColor(
2656
+ ) || chunkFZSYLXJT_js.parseDrawingColor(
2647
2657
  cellProperties?.["a:lnR"]?.["a:solidFill"],
2648
2658
  schemeColorOverrides
2649
- ) || chunk7WWINBGF_js.parseDrawingColor(
2659
+ ) || chunkFZSYLXJT_js.parseDrawingColor(
2650
2660
  cellProperties?.["a:lnT"]?.["a:solidFill"],
2651
2661
  schemeColorOverrides
2652
- ) || chunk7WWINBGF_js.parseDrawingColor(
2662
+ ) || chunkFZSYLXJT_js.parseDrawingColor(
2653
2663
  cellProperties?.["a:lnB"]?.["a:solidFill"],
2654
2664
  schemeColorOverrides
2655
2665
  );
@@ -2721,7 +2731,7 @@ function getTableCellBandStyle2(element, rowIndex, cellIndex, rowCount, columnCo
2721
2731
  if (element.type !== "table") {
2722
2732
  return void 0;
2723
2733
  }
2724
- return chunk7WWINBGF_js.getTableCellBandStyle(element.tableData, rowIndex, cellIndex, rowCount, columnCount, {
2734
+ return chunkFZSYLXJT_js.getTableCellBandStyle(element.tableData, rowIndex, cellIndex, rowCount, columnCount, {
2725
2735
  tableStyleMap: styleCtx?.tableStyleMap,
2726
2736
  colorScheme: styleCtx?.theme?.colorScheme,
2727
2737
  fontScheme: styleCtx?.theme?.fontScheme
@@ -2801,7 +2811,7 @@ function renderTableCellContent(cell, fallbackText) {
2801
2811
  return /* @__PURE__ */ jsxRuntime.jsx(
2802
2812
  "span",
2803
2813
  {
2804
- style: { position: "relative", ...chunk7WWINBGF_js.cellRunStyle(run) },
2814
+ style: { position: "relative", ...chunkFZSYLXJT_js.cellRunStyle(run) },
2805
2815
  children: run.text
2806
2816
  },
2807
2817
  `r-${index}`
@@ -2809,7 +2819,7 @@ function renderTableCellContent(cell, fallbackText) {
2809
2819
  });
2810
2820
  }
2811
2821
  function getCellDiagonalBorders2(style, tableData, pos, styleCtx) {
2812
- return chunk7WWINBGF_js.getCellDiagonalBorders(style, tableData, pos, {
2822
+ return chunkFZSYLXJT_js.getCellDiagonalBorders(style, tableData, pos, {
2813
2823
  tableStyleMap: styleCtx?.tableStyleMap,
2814
2824
  colorScheme: styleCtx?.theme?.colorScheme,
2815
2825
  fontScheme: styleCtx?.theme?.fontScheme
@@ -2942,7 +2952,7 @@ function TableResizeOverlay({
2942
2952
  const containerRef = React7.useRef(null);
2943
2953
  const [rowBounds, setRowBounds] = React7.useState([]);
2944
2954
  const dragRef = React7.useRef(null);
2945
- const colBoundaries = React7.useMemo(() => chunk7WWINBGF_js.computeColumnBoundaries(columnWidths), [columnWidths]);
2955
+ const colBoundaries = React7.useMemo(() => chunkFZSYLXJT_js.computeColumnBoundaries(columnWidths), [columnWidths]);
2946
2956
  const measureRows = React7.useCallback(() => {
2947
2957
  const container = containerRef.current;
2948
2958
  if (!container) {
@@ -2989,11 +2999,11 @@ function TableResizeOverlay({
2989
2999
  const rect = containerRef.current.getBoundingClientRect();
2990
3000
  if (e.clientX !== drag.startPos && drag.type === "col" && drag.initialWidths && onResizeColumns) {
2991
3001
  const deltaProp = (e.clientX - drag.startPos) / rect.width;
2992
- onResizeColumns(chunk7WWINBGF_js.computeResizedColumnWidths(drag.initialWidths, drag.index, deltaProp));
3002
+ onResizeColumns(chunkFZSYLXJT_js.computeResizedColumnWidths(drag.initialWidths, drag.index, deltaProp));
2993
3003
  } else if (e.clientY !== drag.startPos && drag.type === "row" && onResizeRow) {
2994
3004
  const deltaY = e.clientY - drag.startPos;
2995
- const newHeight = chunk7WWINBGF_js.computeResizedRowHeight(
2996
- drag.initialRowHeight ?? chunk7WWINBGF_js.DEFAULT_ROW_HEIGHT,
3005
+ const newHeight = chunkFZSYLXJT_js.computeResizedRowHeight(
3006
+ drag.initialRowHeight ?? chunkFZSYLXJT_js.DEFAULT_ROW_HEIGHT,
2997
3007
  deltaY
2998
3008
  );
2999
3009
  onResizeRow(drag.index, newHeight);
@@ -3031,7 +3041,7 @@ function TableResizeOverlay({
3031
3041
  e.stopPropagation();
3032
3042
  const table = containerRef.current?.querySelector("table");
3033
3043
  const tr = table?.querySelectorAll("tbody > tr")[index];
3034
- const actualHeight = tr?.offsetHeight ?? chunk7WWINBGF_js.DEFAULT_ROW_HEIGHT;
3044
+ const actualHeight = tr?.offsetHeight ?? chunkFZSYLXJT_js.DEFAULT_ROW_HEIGHT;
3035
3045
  document.body.style.cursor = "row-resize";
3036
3046
  document.body.style.userSelect = "none";
3037
3047
  dragRef.current = {
@@ -3071,14 +3081,14 @@ function renderTableFromTableData(element, textStyle, options) {
3071
3081
  const rowCount = tableData.rows.length;
3072
3082
  const columnCount = tableData.columnWidths.length;
3073
3083
  const selectedCell = options?.selectedCell || null;
3074
- const isEditable = Boolean(options?.editable) && chunk7WWINBGF_js.canDrillDown(element);
3084
+ const isEditable = Boolean(options?.editable) && chunkFZSYLXJT_js.canDrillDown(element);
3075
3085
  const hasCellSelectionHandler = typeof options?.onSelectCell === "function";
3076
3086
  const sharedCtx = {
3077
3087
  tableStyleMap: options?.styleCtx?.tableStyleMap,
3078
3088
  colorScheme: options?.styleCtx?.theme?.colorScheme,
3079
3089
  fontScheme: options?.styleCtx?.theme?.fontScheme
3080
3090
  };
3081
- const cellCss = (cell, rowIndex, cellIndex) => chunk7WWINBGF_js.tableCellCss(
3091
+ const cellCss = (cell, rowIndex, cellIndex) => chunkFZSYLXJT_js.tableCellCss(
3082
3092
  tableData,
3083
3093
  cell,
3084
3094
  { rowIndex, cellIndex, rowCount, columnCount },
@@ -3091,7 +3101,7 @@ function renderTableFromTableData(element, textStyle, options) {
3091
3101
  }
3092
3102
  const first = selectedCell.selectedCells[0];
3093
3103
  const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
3094
- return chunk7WWINBGF_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableData);
3104
+ return chunkFZSYLXJT_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableData);
3095
3105
  })();
3096
3106
  return /* @__PURE__ */ jsxRuntime.jsx(
3097
3107
  TableResizeOverlay,
@@ -3112,9 +3122,9 @@ function renderTableFromTableData(element, textStyle, options) {
3112
3122
  {
3113
3123
  className: "w-full h-full border-collapse table-fixed",
3114
3124
  style: {
3115
- fontFamily: chunk7WWINBGF_js.DEFAULT_FONT_FAMILY,
3125
+ fontFamily: chunkFZSYLXJT_js.DEFAULT_FONT_FAMILY,
3116
3126
  // `a:tblPr@rtl` mirrors the column order for RTL decks.
3117
- ...chunk7WWINBGF_js.tableContainerCss(tableData)
3127
+ ...chunkFZSYLXJT_js.tableContainerCss(tableData)
3118
3128
  },
3119
3129
  children: [
3120
3130
  tableData.columnWidths.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("colgroup", { children: tableData.columnWidths.map((w, ci) => /* @__PURE__ */ jsxRuntime.jsx(
@@ -3133,7 +3143,7 @@ function renderTableFromTableData(element, textStyle, options) {
3133
3143
  return null;
3134
3144
  }
3135
3145
  const isCellSelected = selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex;
3136
- const isInMultiSelection = chunk7WWINBGF_js.isCellInRect(rowIndex, cellIndex, selectionRect);
3146
+ const isInMultiSelection = chunkFZSYLXJT_js.isCellInRect(rowIndex, cellIndex, selectionRect);
3137
3147
  const isCellEditing = isCellSelected && selectedCell?.isEditing;
3138
3148
  const diag = getCellDiagonalBorders2(
3139
3149
  cell.style,
@@ -3162,7 +3172,7 @@ function renderTableFromTableData(element, textStyle, options) {
3162
3172
  }
3163
3173
  event.stopPropagation();
3164
3174
  if (event.shiftKey && selectedCell) {
3165
- const rect = chunk7WWINBGF_js.computeSelectionRect(
3175
+ const rect = chunkFZSYLXJT_js.computeSelectionRect(
3166
3176
  selectedCell.rowIndex,
3167
3177
  selectedCell.columnIndex,
3168
3178
  rowIndex,
@@ -3172,7 +3182,7 @@ function renderTableFromTableData(element, textStyle, options) {
3172
3182
  options?.onSelectCell?.({
3173
3183
  rowIndex: selectedCell.rowIndex,
3174
3184
  columnIndex: selectedCell.columnIndex,
3175
- selectedCells: chunk7WWINBGF_js.rectToCells(rect)
3185
+ selectedCells: chunkFZSYLXJT_js.rectToCells(rect)
3176
3186
  });
3177
3187
  } else {
3178
3188
  options?.onSelectCell?.({
@@ -3233,10 +3243,10 @@ function renderTableElement(element, textStyle, options) {
3233
3243
  if (tableEl2.tableData && tableEl2.tableData.rows.length > 0) {
3234
3244
  return renderTableFromTableData(tableEl2, textStyle, options);
3235
3245
  }
3236
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkI4D6JQOI_js.translationsEn["pptx.table.title"] });
3246
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunk3JUZOKFI_js.translationsEn["pptx.table.title"] });
3237
3247
  }
3238
3248
  const selectedCell = options?.selectedCell || null;
3239
- const isEditable = Boolean(options?.editable) && chunk7WWINBGF_js.canDrillDown(element);
3249
+ const isEditable = Boolean(options?.editable) && chunkFZSYLXJT_js.canDrillDown(element);
3240
3250
  const hasCellSelectionHandler = typeof options?.onSelectCell === "function";
3241
3251
  const tableEl = element;
3242
3252
  const xmlSelectionRect = (() => {
@@ -3248,7 +3258,7 @@ function renderTableElement(element, textStyle, options) {
3248
3258
  }
3249
3259
  const first = selectedCell.selectedCells[0];
3250
3260
  const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
3251
- return chunk7WWINBGF_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableEl.tableData);
3261
+ return chunkFZSYLXJT_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableEl.tableData);
3252
3262
  })();
3253
3263
  const schemeOverrides = options?.styleCtx?.theme?.colorScheme ? options.styleCtx.theme.colorScheme : void 0;
3254
3264
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -3270,9 +3280,9 @@ function renderTableElement(element, textStyle, options) {
3270
3280
  {
3271
3281
  className: "w-full h-full border-collapse table-fixed",
3272
3282
  style: {
3273
- fontFamily: chunk7WWINBGF_js.DEFAULT_FONT_FAMILY,
3283
+ fontFamily: chunkFZSYLXJT_js.DEFAULT_FONT_FAMILY,
3274
3284
  // `a:tblPr@rtl` mirrors the column order for RTL decks.
3275
- ...chunk7WWINBGF_js.tableContainerCss(tableEl.tableData)
3285
+ ...chunkFZSYLXJT_js.tableContainerCss(tableEl.tableData)
3276
3286
  },
3277
3287
  children: [
3278
3288
  parsedTable.columnPercentages.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx("colgroup", { children: parsedTable.columnPercentages.map((percentage, columnIndex) => /* @__PURE__ */ jsxRuntime.jsx(
@@ -3329,7 +3339,7 @@ function renderTableElement(element, textStyle, options) {
3329
3339
  color: textStyle.color,
3330
3340
  ...bandStyle,
3331
3341
  ...xmlCellStyle,
3332
- ...tdCellOverride ? chunk7WWINBGF_js.cellStyleToCss(tdCellOverride) : void 0,
3342
+ ...tdCellOverride ? chunkFZSYLXJT_js.cellStyleToCss(tdCellOverride) : void 0,
3333
3343
  ...diag ? { position: "relative" } : void 0
3334
3344
  };
3335
3345
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -3339,7 +3349,7 @@ function renderTableElement(element, textStyle, options) {
3339
3349
  "border px-1 py-0.5 align-top",
3340
3350
  isEditable && hasCellSelectionHandler ? "border-blue-200/70 cursor-cell" : "border-white/30",
3341
3351
  selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex ? "ring-1 ring-inset ring-blue-500" : null,
3342
- chunk7WWINBGF_js.isCellInRect(rowIndex, cellIndex, xmlSelectionRect) && !(selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex) ? "bg-blue-500/15 ring-1 ring-inset ring-blue-400/50" : null
3352
+ chunkFZSYLXJT_js.isCellInRect(rowIndex, cellIndex, xmlSelectionRect) && !(selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex) ? "bg-blue-500/15 ring-1 ring-inset ring-blue-400/50" : null
3343
3353
  ),
3344
3354
  colSpan,
3345
3355
  rowSpan: rSpan,
@@ -3350,7 +3360,7 @@ function renderTableElement(element, textStyle, options) {
3350
3360
  }
3351
3361
  event.stopPropagation();
3352
3362
  if (event.shiftKey && selectedCell && tableEl.tableData) {
3353
- const rect = chunk7WWINBGF_js.computeSelectionRect(
3363
+ const rect = chunkFZSYLXJT_js.computeSelectionRect(
3354
3364
  selectedCell.rowIndex,
3355
3365
  selectedCell.columnIndex,
3356
3366
  rowIndex,
@@ -3360,7 +3370,7 @@ function renderTableElement(element, textStyle, options) {
3360
3370
  options?.onSelectCell?.({
3361
3371
  rowIndex: selectedCell.rowIndex,
3362
3372
  columnIndex: selectedCell.columnIndex,
3363
- selectedCells: chunk7WWINBGF_js.rectToCells(rect)
3373
+ selectedCells: chunkFZSYLXJT_js.rectToCells(rect)
3364
3374
  });
3365
3375
  } else {
3366
3376
  options?.onSelectCell?.({
@@ -3419,23 +3429,23 @@ function renderTableElement(element, textStyle, options) {
3419
3429
  );
3420
3430
  }
3421
3431
  function partAttrs(part) {
3422
- return part ? chunk7WWINBGF_js.chartPartToAttrs(part) : void 0;
3432
+ return part ? chunkFZSYLXJT_js.chartPartToAttrs(part) : void 0;
3423
3433
  }
3424
3434
  function resolveReactPalette(chartData) {
3425
3435
  if (chartData.colorPalette && chartData.colorPalette.length > 0) {
3426
3436
  return chartData.colorPalette;
3427
3437
  }
3428
- return [...chunk7WWINBGF_js.getChartStylePalette(chartData.style?.styleId)];
3438
+ return [...chunkFZSYLXJT_js.getChartStylePalette(chartData.style?.styleId)];
3429
3439
  }
3430
3440
  function buildReactChartViewModel(element) {
3431
3441
  if (element.type !== "chart" || !element.chartData) {
3432
- return chunk7WWINBGF_js.buildChartViewModel(element);
3442
+ return chunkFZSYLXJT_js.buildChartViewModel(element);
3433
3443
  }
3434
3444
  const palette = resolveReactPalette(element.chartData), themedElement = {
3435
3445
  ...element,
3436
3446
  chartData: { ...element.chartData, colorPalette: palette }
3437
3447
  };
3438
- return chunk7WWINBGF_js.buildChartViewModel(themedElement);
3448
+ return chunkFZSYLXJT_js.buildChartViewModel(themedElement);
3439
3449
  }
3440
3450
  function renderPrimitive(prim, key) {
3441
3451
  switch (prim.kind) {
@@ -3587,7 +3597,7 @@ function renderText(t, key) {
3587
3597
  );
3588
3598
  }
3589
3599
  function renderChartViewModel(elementId, vm, preserveAspectRatio = "none") {
3590
- const legendItems = chunk7WWINBGF_js.computeChartLegendLayout(vm);
3600
+ const legendItems = chunkFZSYLXJT_js.computeChartLegendLayout(vm);
3591
3601
  return /* @__PURE__ */ jsxRuntime.jsxs(
3592
3602
  "svg",
3593
3603
  {
@@ -3727,17 +3737,17 @@ function renderChartViewModel(elementId, vm, preserveAspectRatio = "none") {
3727
3737
  }
3728
3738
  function renderChartElement(element) {
3729
3739
  if (element.type !== "chart") {
3730
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkI4D6JQOI_js.translationsEn["pptx.chart.heading"] });
3740
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunk3JUZOKFI_js.translationsEn["pptx.chart.heading"] });
3731
3741
  }
3732
3742
  const chartData = element.chartData;
3733
3743
  if (!chartData || chartData.series.length === 0) {
3734
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkI4D6JQOI_js.translationsEn["pptx.chart.heading"] });
3744
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunk3JUZOKFI_js.translationsEn["pptx.chart.heading"] });
3735
3745
  }
3736
- const kind = chunk7WWINBGF_js.resolveChartKind(chartData.chartType ?? "bar");
3746
+ const kind = chunkFZSYLXJT_js.resolveChartKind(chartData.chartType ?? "bar");
3737
3747
  return renderChartViewModel(
3738
3748
  element.id,
3739
3749
  buildReactChartViewModel(element),
3740
- chunk7WWINBGF_js.chartPreserveAspectRatio(kind)
3750
+ chunkFZSYLXJT_js.chartPreserveAspectRatio(kind)
3741
3751
  );
3742
3752
  }
3743
3753
 
@@ -3757,14 +3767,14 @@ function buildNotesPdf(pages) {
3757
3767
  notes: page.notes,
3758
3768
  slideNumber: page.slideNumber
3759
3769
  }));
3760
- const bytes = chunk7WWINBGF_js.buildNotesPdfBytes(images, meta);
3770
+ const bytes = chunkFZSYLXJT_js.buildNotesPdfBytes(images, meta);
3761
3771
  const blob = new Blob([bytes], { type: "application/pdf" });
3762
3772
  return URL.createObjectURL(blob);
3763
3773
  }
3764
3774
 
3765
3775
  // src/viewer/utils/pdf-builder-slides.ts
3766
3776
  function buildPdfFromTiledImageData(pages) {
3767
- const bytes = chunk7WWINBGF_js.buildTiledSlidesPdfBytes(pages);
3777
+ const bytes = chunkFZSYLXJT_js.buildTiledSlidesPdfBytes(pages);
3768
3778
  const blob = new Blob([bytes], { type: "application/pdf" });
3769
3779
  return URL.createObjectURL(blob);
3770
3780
  }
@@ -3773,7 +3783,7 @@ function buildPdfFromTiledImageData(pages) {
3773
3783
  var activePreview = null;
3774
3784
  function startPreviewAnimation(elementId, preset, options) {
3775
3785
  stopPreviewAnimation();
3776
- const descriptor = chunk7WWINBGF_js.buildPreviewAnimation(preset, options);
3786
+ const descriptor = chunkFZSYLXJT_js.buildPreviewAnimation(preset, options);
3777
3787
  if (!descriptor) {
3778
3788
  return;
3779
3789
  }
@@ -3786,7 +3796,7 @@ function startMotionPathPreview(elementId, path, options) {
3786
3796
  return;
3787
3797
  }
3788
3798
  const stage = domEl.offsetParent;
3789
- const descriptor = chunk7WWINBGF_js.buildMotionPathPreview({
3799
+ const descriptor = chunkFZSYLXJT_js.buildMotionPathPreview({
3790
3800
  path,
3791
3801
  slideWidth: stage?.offsetWidth || DEFAULT_PREVIEW_SLIDE_WIDTH,
3792
3802
  slideHeight: stage?.offsetHeight || DEFAULT_PREVIEW_SLIDE_HEIGHT,