pptx-react-viewer 3.1.5 → 3.2.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 (157) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/{AiChatPanel-ITCVRVKP.mjs → AiChatPanel-C3E7NLX3.mjs} +4 -4
  3. package/dist/AiChatPanel-C3E7NLX3.mjs.br +0 -0
  4. package/dist/AiChatPanel-C3E7NLX3.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-TO5PHBGW.js → AiChatPanel-TKBVSYD2.js} +24 -24
  6. package/dist/AiChatPanel-TKBVSYD2.js.br +0 -0
  7. package/dist/AiChatPanel-TKBVSYD2.js.gz +0 -0
  8. package/dist/{Area3DChartScene-2UNQ3J3V.js → Area3DChartScene-3A3CXKN3.js} +2 -2
  9. package/dist/Area3DChartScene-3A3CXKN3.js.br +0 -0
  10. package/dist/Area3DChartScene-3A3CXKN3.js.gz +0 -0
  11. package/dist/{Area3DChartScene-7PHPDOTG.mjs → Area3DChartScene-7YCFWEGX.mjs} +1 -1
  12. package/dist/Area3DChartScene-7YCFWEGX.mjs.br +3 -0
  13. package/dist/Area3DChartScene-7YCFWEGX.mjs.gz +0 -0
  14. package/dist/{Bar3DChartScene-BLPUHYRZ.mjs → Bar3DChartScene-7CNSJ35X.mjs} +1 -1
  15. package/dist/Bar3DChartScene-7CNSJ35X.mjs.br +0 -0
  16. package/dist/Bar3DChartScene-7CNSJ35X.mjs.gz +0 -0
  17. package/dist/{Bar3DChartScene-MC5S3AGT.js → Bar3DChartScene-BDUENAWJ.js} +2 -2
  18. package/dist/Bar3DChartScene-BDUENAWJ.js.br +0 -0
  19. package/dist/Bar3DChartScene-BDUENAWJ.js.gz +0 -0
  20. package/dist/{Line3DChartScene-JVVZRIDD.js → Line3DChartScene-R352CZ5U.js} +2 -2
  21. package/dist/Line3DChartScene-R352CZ5U.js.br +0 -0
  22. package/dist/Line3DChartScene-R352CZ5U.js.gz +0 -0
  23. package/dist/{Line3DChartScene-L5B4YFG3.mjs → Line3DChartScene-SMTHK6MD.mjs} +1 -1
  24. package/dist/Line3DChartScene-SMTHK6MD.mjs.br +3 -0
  25. package/dist/Line3DChartScene-SMTHK6MD.mjs.gz +0 -0
  26. package/dist/{Model3DScene-6TNWS5LV.mjs → Model3DScene-AUVJXXPV.mjs} +1 -1
  27. package/dist/Model3DScene-AUVJXXPV.mjs.br +0 -0
  28. package/dist/Model3DScene-AUVJXXPV.mjs.gz +0 -0
  29. package/dist/{Model3DScene-LRDNQNKJ.js → Model3DScene-Y4SGFQYW.js} +2 -2
  30. package/dist/{Model3DScene-LRDNQNKJ.js.br → Model3DScene-Y4SGFQYW.js.br} +0 -0
  31. package/dist/Model3DScene-Y4SGFQYW.js.gz +0 -0
  32. package/dist/{PieChart3DScene-PZWZCXHX.js → PieChart3DScene-TK2VT4RS.js} +2 -2
  33. package/dist/PieChart3DScene-TK2VT4RS.js.br +0 -0
  34. package/dist/PieChart3DScene-TK2VT4RS.js.gz +0 -0
  35. package/dist/{PieChart3DScene-XXAIVP4I.mjs → PieChart3DScene-UD7GRH55.mjs} +1 -1
  36. package/dist/PieChart3DScene-UD7GRH55.mjs.br +0 -0
  37. package/dist/PieChart3DScene-UD7GRH55.mjs.gz +0 -0
  38. package/dist/{SurfaceChart3DScene-UBQV3ZN2.js → SurfaceChart3DScene-ERFXZW2O.js} +2 -2
  39. package/dist/SurfaceChart3DScene-ERFXZW2O.js.br +0 -0
  40. package/dist/SurfaceChart3DScene-ERFXZW2O.js.gz +0 -0
  41. package/dist/{SurfaceChart3DScene-CRUGJSCY.mjs → SurfaceChart3DScene-TXY6UZSW.mjs} +1 -1
  42. package/dist/SurfaceChart3DScene-TXY6UZSW.mjs.br +0 -0
  43. package/dist/SurfaceChart3DScene-TXY6UZSW.mjs.gz +0 -0
  44. package/dist/{chunk-SWRY3SI5.js → chunk-ALO4ZOHQ.js} +46 -1
  45. package/dist/chunk-ALO4ZOHQ.js.br +0 -0
  46. package/dist/{chunk-SWRY3SI5.js.gz → chunk-ALO4ZOHQ.js.gz} +0 -0
  47. package/dist/{chunk-LXYDXLKZ.js → chunk-ARQGUUYU.js} +421 -460
  48. package/dist/chunk-ARQGUUYU.js.br +0 -0
  49. package/dist/chunk-ARQGUUYU.js.gz +0 -0
  50. package/dist/{chunk-T2QG2HD5.js → chunk-B6UIVRFA.js} +167 -167
  51. package/dist/chunk-B6UIVRFA.js.br +0 -0
  52. package/dist/chunk-B6UIVRFA.js.gz +0 -0
  53. package/dist/{chunk-YDEEINER.js → chunk-FJDZ7AEE.js} +6446 -3739
  54. package/dist/chunk-FJDZ7AEE.js.br +0 -0
  55. package/dist/chunk-FJDZ7AEE.js.gz +0 -0
  56. package/dist/{chunk-BPWSJLLG.mjs → chunk-FMEEIS6L.mjs} +2 -2
  57. package/dist/chunk-FMEEIS6L.mjs.br +0 -0
  58. package/dist/chunk-FMEEIS6L.mjs.gz +0 -0
  59. package/dist/{chunk-XIHK52SB.mjs → chunk-G7UBIKAG.mjs} +6445 -3740
  60. package/dist/chunk-G7UBIKAG.mjs.br +0 -0
  61. package/dist/chunk-G7UBIKAG.mjs.gz +0 -0
  62. package/dist/{chunk-P3VXXUZM.mjs → chunk-PPNXPEEZ.mjs} +20 -14
  63. package/dist/chunk-PPNXPEEZ.mjs.br +0 -0
  64. package/dist/chunk-PPNXPEEZ.mjs.gz +0 -0
  65. package/dist/{chunk-LGVNUG3G.js → chunk-Q52HT4EZ.js} +9 -8
  66. package/dist/chunk-Q52HT4EZ.js.br +0 -0
  67. package/dist/chunk-Q52HT4EZ.js.gz +0 -0
  68. package/dist/{chunk-ARJE3V6V.mjs → chunk-RHSA5BW5.mjs} +46 -1
  69. package/dist/chunk-RHSA5BW5.mjs.br +0 -0
  70. package/dist/{chunk-ARJE3V6V.mjs.gz → chunk-RHSA5BW5.mjs.gz} +0 -0
  71. package/dist/{chunk-ZPF4L6SD.js → chunk-RRAL4Y7V.js} +1136 -1130
  72. package/dist/chunk-RRAL4Y7V.js.br +0 -0
  73. package/dist/chunk-RRAL4Y7V.js.gz +0 -0
  74. package/dist/{chunk-QOLYY7E3.mjs → chunk-RX6FE24O.mjs} +7 -6
  75. package/dist/chunk-RX6FE24O.mjs.br +0 -0
  76. package/dist/chunk-RX6FE24O.mjs.gz +0 -0
  77. package/dist/{chunk-A2UAUSJM.mjs → chunk-UHR7EYFM.mjs} +18 -57
  78. package/dist/chunk-UHR7EYFM.mjs.br +0 -0
  79. package/dist/chunk-UHR7EYFM.mjs.gz +0 -0
  80. package/dist/i18n.js +4 -4
  81. package/dist/i18n.js.br +0 -0
  82. package/dist/i18n.js.gz +0 -0
  83. package/dist/i18n.mjs +1 -1
  84. package/dist/i18n.mjs.br +0 -0
  85. package/dist/i18n.mjs.gz +0 -0
  86. package/dist/index.d.ts +170 -17
  87. package/dist/index.js +47 -47
  88. package/dist/index.js.br +0 -0
  89. package/dist/index.js.gz +0 -0
  90. package/dist/index.mjs +6 -6
  91. package/dist/index.mjs.br +0 -0
  92. package/dist/index.mjs.gz +0 -0
  93. package/dist/internals.d.ts +170 -17
  94. package/dist/internals.d.ts.map +1 -1
  95. package/dist/internals.js +79 -79
  96. package/dist/internals.js.br +0 -0
  97. package/dist/internals.js.gz +0 -0
  98. package/dist/internals.mjs +4 -4
  99. package/dist/internals.mjs.br +0 -0
  100. package/dist/internals.mjs.gz +0 -0
  101. package/dist/viewer/index.d.ts +170 -17
  102. package/dist/viewer/index.js +27 -27
  103. package/dist/viewer/index.js.br +0 -0
  104. package/dist/viewer/index.js.gz +0 -0
  105. package/dist/viewer/index.mjs +6 -6
  106. package/dist/viewer/index.mjs.br +0 -0
  107. package/dist/viewer/index.mjs.gz +0 -0
  108. package/package.json +1 -1
  109. package/dist/AiChatPanel-ITCVRVKP.mjs.br +0 -0
  110. package/dist/AiChatPanel-ITCVRVKP.mjs.gz +0 -0
  111. package/dist/AiChatPanel-TO5PHBGW.js.br +0 -0
  112. package/dist/AiChatPanel-TO5PHBGW.js.gz +0 -0
  113. package/dist/Area3DChartScene-2UNQ3J3V.js.br +0 -0
  114. package/dist/Area3DChartScene-2UNQ3J3V.js.gz +0 -0
  115. package/dist/Area3DChartScene-7PHPDOTG.mjs.br +0 -0
  116. package/dist/Area3DChartScene-7PHPDOTG.mjs.gz +0 -0
  117. package/dist/Bar3DChartScene-BLPUHYRZ.mjs.br +0 -0
  118. package/dist/Bar3DChartScene-BLPUHYRZ.mjs.gz +0 -0
  119. package/dist/Bar3DChartScene-MC5S3AGT.js.br +0 -0
  120. package/dist/Bar3DChartScene-MC5S3AGT.js.gz +0 -0
  121. package/dist/Line3DChartScene-JVVZRIDD.js.br +0 -0
  122. package/dist/Line3DChartScene-JVVZRIDD.js.gz +0 -0
  123. package/dist/Line3DChartScene-L5B4YFG3.mjs.br +0 -0
  124. package/dist/Line3DChartScene-L5B4YFG3.mjs.gz +0 -0
  125. package/dist/Model3DScene-6TNWS5LV.mjs.br +0 -0
  126. package/dist/Model3DScene-6TNWS5LV.mjs.gz +0 -0
  127. package/dist/Model3DScene-LRDNQNKJ.js.gz +0 -0
  128. package/dist/PieChart3DScene-PZWZCXHX.js.br +0 -0
  129. package/dist/PieChart3DScene-PZWZCXHX.js.gz +0 -0
  130. package/dist/PieChart3DScene-XXAIVP4I.mjs.br +0 -0
  131. package/dist/PieChart3DScene-XXAIVP4I.mjs.gz +0 -0
  132. package/dist/SurfaceChart3DScene-CRUGJSCY.mjs.br +0 -1
  133. package/dist/SurfaceChart3DScene-CRUGJSCY.mjs.gz +0 -0
  134. package/dist/SurfaceChart3DScene-UBQV3ZN2.js.br +0 -0
  135. package/dist/SurfaceChart3DScene-UBQV3ZN2.js.gz +0 -0
  136. package/dist/chunk-A2UAUSJM.mjs.br +0 -0
  137. package/dist/chunk-A2UAUSJM.mjs.gz +0 -0
  138. package/dist/chunk-ARJE3V6V.mjs.br +0 -0
  139. package/dist/chunk-BPWSJLLG.mjs.br +0 -0
  140. package/dist/chunk-BPWSJLLG.mjs.gz +0 -0
  141. package/dist/chunk-LGVNUG3G.js.br +0 -0
  142. package/dist/chunk-LGVNUG3G.js.gz +0 -0
  143. package/dist/chunk-LXYDXLKZ.js.br +0 -0
  144. package/dist/chunk-LXYDXLKZ.js.gz +0 -0
  145. package/dist/chunk-P3VXXUZM.mjs.br +0 -0
  146. package/dist/chunk-P3VXXUZM.mjs.gz +0 -0
  147. package/dist/chunk-QOLYY7E3.mjs.br +0 -0
  148. package/dist/chunk-QOLYY7E3.mjs.gz +0 -0
  149. package/dist/chunk-SWRY3SI5.js.br +0 -0
  150. package/dist/chunk-T2QG2HD5.js.br +0 -0
  151. package/dist/chunk-T2QG2HD5.js.gz +0 -0
  152. package/dist/chunk-XIHK52SB.mjs.br +0 -0
  153. package/dist/chunk-XIHK52SB.mjs.gz +0 -0
  154. package/dist/chunk-YDEEINER.js.br +0 -0
  155. package/dist/chunk-YDEEINER.js.gz +0 -0
  156. package/dist/chunk-ZPF4L6SD.js.br +0 -0
  157. package/dist/chunk-ZPF4L6SD.js.gz +0 -0
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunkYDEEINER_js = require('./chunk-YDEEINER.js');
4
- var chunkSWRY3SI5_js = require('./chunk-SWRY3SI5.js');
3
+ var chunkFJDZ7AEE_js = require('./chunk-FJDZ7AEE.js');
4
+ var chunkALO4ZOHQ_js = require('./chunk-ALO4ZOHQ.js');
5
5
  var clsx = require('clsx');
6
6
  var tailwindMerge = require('tailwind-merge');
7
7
  var React6 = require('react');
@@ -15,7 +15,7 @@ var React6__default = /*#__PURE__*/_interopDefault(React6);
15
15
 
16
16
  // src/viewer/utils/animation-effects.ts
17
17
  function getAnimationInitialStyle2(preset, nativeAnimation) {
18
- return chunkYDEEINER_js.getAnimationInitialStyle(preset, nativeAnimation);
18
+ return chunkFJDZ7AEE_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 chunkYDEEINER_js.cloneHistorySnapshot(snapshot);
26
+ return chunkFJDZ7AEE_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 = chunkYDEEINER_js.VIEWER_SHORTCUT_REFERENCE;
64
+ var SHORTCUT_REFERENCE_ITEMS = chunkFJDZ7AEE_js.VIEWER_SHORTCUT_REFERENCE;
65
65
 
66
66
  // src/viewer/constants/theme.ts
67
67
  var THEME_COLOR_SWATCHES = [
@@ -105,7 +105,7 @@ var GLYPH_COMPONENTS = {
105
105
  plus: lu.LuPlus,
106
106
  triangle: lu.LuTriangle
107
107
  };
108
- var SHAPE_PRESETS = chunkYDEEINER_js.SHAPE_PRESET_DEFS.map(
108
+ var SHAPE_PRESETS = chunkFJDZ7AEE_js.SHAPE_PRESET_DEFS.map(
109
109
  (def) => ({
110
110
  type: def.type,
111
111
  label: def.label,
@@ -264,7 +264,7 @@ function isConnectorOrLineElement(element) {
264
264
  if (element.type === "connector") {
265
265
  return true;
266
266
  }
267
- if (!chunkYDEEINER_js.hasShapeProperties(element)) {
267
+ if (!chunkFJDZ7AEE_js.hasShapeProperties(element)) {
268
268
  return false;
269
269
  }
270
270
  const st = getShapeType(element.shapeType);
@@ -273,17 +273,17 @@ function isConnectorOrLineElement(element) {
273
273
 
274
274
  // src/viewer/utils/image-style.ts
275
275
  function getImageMaskStyle(element) {
276
- if (!chunkYDEEINER_js.hasShapeProperties(element)) {
276
+ if (!chunkFJDZ7AEE_js.hasShapeProperties(element)) {
277
277
  return void 0;
278
278
  }
279
- const geometry = chunkYDEEINER_js.resolveShapeGeometry(element);
279
+ const geometry = chunkFJDZ7AEE_js.resolveShapeGeometry(element);
280
280
  if (geometry.kind === "borderRadius") {
281
281
  return { borderRadius: geometry.radius };
282
282
  }
283
283
  return geometry.kind === "clipPath" ? { clipPath: geometry.clipPath } : void 0;
284
284
  }
285
285
  function getImageRenderStyle(element) {
286
- const fit = chunkYDEEINER_js.getImageFitStyle(element);
286
+ const fit = chunkFJDZ7AEE_js.getImageFitStyle(element);
287
287
  return {
288
288
  // A translated/scaled crop must be masked by its stationary wrapper, not
289
289
  // by the moving bitmap itself.
@@ -300,7 +300,7 @@ function getImageSurfaceMaskStyle(element) {
300
300
  };
301
301
  }
302
302
  function getImageSurfaceStyle(element) {
303
- const fill = chunkYDEEINER_js.hasShapeProperties(element) ? chunkYDEEINER_js.getComputedFillStyle(element) : void 0;
303
+ const fill = chunkFJDZ7AEE_js.hasShapeProperties(element) ? chunkFJDZ7AEE_js.getComputedFillStyle(element) : void 0;
304
304
  return {
305
305
  position: "absolute",
306
306
  inset: 0,
@@ -322,7 +322,7 @@ var CROP_SHAPE_CLIP_PATHS = {
322
322
  star: "polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%)"
323
323
  };
324
324
  function getCropShapeClipPath(element) {
325
- if (!chunkYDEEINER_js.isImageLikeElement(element)) {
325
+ if (!chunkFJDZ7AEE_js.isImageLikeElement(element)) {
326
326
  return void 0;
327
327
  }
328
328
  const shape = element.cropShape;
@@ -332,7 +332,7 @@ function getCropShapeClipPath(element) {
332
332
  return CROP_SHAPE_CLIP_PATHS[shape];
333
333
  }
334
334
  function getImageTilingStyle2(element) {
335
- return chunkYDEEINER_js.getImageTilingStyle(element);
335
+ return chunkFJDZ7AEE_js.getImageTilingStyle(element);
336
336
  }
337
337
 
338
338
  // src/viewer/utils/geometry-image.ts
@@ -474,7 +474,7 @@ function VideoWithMetadata({
474
474
  {
475
475
  ref: mediaRef,
476
476
  className: "w-full h-full pointer-events-auto",
477
- style: isFullScreen ? { objectFit: "cover" } : chunkYDEEINER_js.getImageFitStyle(element),
477
+ style: isFullScreen ? { objectFit: "cover" } : chunkFJDZ7AEE_js.getImageFitStyle(element),
478
478
  controls: showTransport,
479
479
  preload: "metadata",
480
480
  playsInline: true,
@@ -533,9 +533,9 @@ function registerMediaElement(elementId, el) {
533
533
  };
534
534
  }
535
535
  function executeMediaCommand(command, frameRoot) {
536
- return chunkYDEEINER_js.runMediaCommand(
536
+ return chunkFJDZ7AEE_js.runMediaCommand(
537
537
  command,
538
- (targetId) => registry.get(targetId) ?? chunkYDEEINER_js.findMediaElementByElementId(targetId, frameRoot?.())
538
+ (targetId) => registry.get(targetId) ?? chunkFJDZ7AEE_js.findMediaElementByElementId(targetId, frameRoot?.())
539
539
  );
540
540
  }
541
541
  function PresentationMediaController({
@@ -579,7 +579,7 @@ function PresentationMediaController({
579
579
  loop: shouldLoop,
580
580
  volume: playbackVolume,
581
581
  playbackRate
582
- } = chunkYDEEINER_js.mediaPlaybackAttributes({
582
+ } = chunkFJDZ7AEE_js.mediaPlaybackAttributes({
583
583
  loop: element.loop,
584
584
  volume: element.volume,
585
585
  playbackSpeed: element.playbackSpeed
@@ -715,7 +715,7 @@ function PresentationMediaController({
715
715
  if (element.playAcrossSlides && element.mediaType === "audio") {
716
716
  const dataUrl = element.mediaData ?? resolvedDataUrl;
717
717
  if (dataUrl) {
718
- chunkYDEEINER_js.registerPersistentAudio(
718
+ chunkFJDZ7AEE_js.registerPersistentAudio(
719
719
  element.id,
720
720
  dataUrl,
721
721
  element.mediaMimeType,
@@ -777,7 +777,7 @@ function PresentationMediaController({
777
777
  ] });
778
778
  }
779
779
  function label(key) {
780
- return key === void 0 ? void 0 : chunkSWRY3SI5_js.translationsEn[key];
780
+ return key === void 0 ? void 0 : chunkALO4ZOHQ_js.translationsEn[key];
781
781
  }
782
782
  function FallbackIcon({
783
783
  paths,
@@ -813,17 +813,17 @@ function Badge({
813
813
  "div",
814
814
  {
815
815
  className: `absolute inset-0 flex flex-col items-center justify-center ${isMissing ? "gap-1" : ""}`,
816
- ...{ [chunkYDEEINER_js.MEDIA_CHROME_ATTRIBUTE]: visual.badge },
816
+ ...{ [chunkFJDZ7AEE_js.MEDIA_CHROME_ATTRIBUTE]: visual.badge },
817
817
  children: [
818
818
  /* @__PURE__ */ jsxRuntime.jsx(
819
819
  FallbackIcon,
820
820
  {
821
- paths: chunkYDEEINER_js.mediaFallbackIcon(visual, element.mediaType),
821
+ paths: chunkFJDZ7AEE_js.mediaFallbackIcon(visual, element.mediaType),
822
822
  size: isMissing ? 32 : 48,
823
823
  className: isMissing ? "text-white/60" : "text-white/80 drop-shadow-md"
824
824
  }
825
825
  ),
826
- isMissing && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-white/60", children: label(chunkYDEEINER_js.mediaFallbackLabelKey(visual, element.mediaType)) })
826
+ isMissing && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-white/60", children: label(chunkFJDZ7AEE_js.mediaFallbackLabelKey(visual, element.mediaType)) })
827
827
  ]
828
828
  }
829
829
  );
@@ -840,17 +840,17 @@ function Placeholder({
840
840
  "div",
841
841
  {
842
842
  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"}`,
843
- ...{ [chunkYDEEINER_js.MEDIA_CHROME_ATTRIBUTE]: visual.placeholder },
843
+ ...{ [chunkFJDZ7AEE_js.MEDIA_CHROME_ATTRIBUTE]: visual.placeholder },
844
844
  children: [
845
845
  /* @__PURE__ */ jsxRuntime.jsx(
846
846
  FallbackIcon,
847
847
  {
848
- paths: chunkYDEEINER_js.mediaFallbackIcon(visual, element.mediaType),
848
+ paths: chunkFJDZ7AEE_js.mediaFallbackIcon(visual, element.mediaType),
849
849
  size: isMissing ? 36 : element.mediaType === "audio" ? 24 : 32,
850
850
  className: isMissing ? "text-white/50" : "text-white/70"
851
851
  }
852
852
  ),
853
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: `text-[10px] ${isMissing ? "text-white/50" : "text-white/70"}`, children: label(chunkYDEEINER_js.mediaFallbackLabelKey(visual, element.mediaType)) })
853
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: `text-[10px] ${isMissing ? "text-white/50" : "text-white/70"}`, children: label(chunkFJDZ7AEE_js.mediaFallbackLabelKey(visual, element.mediaType)) })
854
854
  ]
855
855
  }
856
856
  );
@@ -860,7 +860,7 @@ function renderMediaFallback({
860
860
  posterUrl,
861
861
  surface
862
862
  }) {
863
- const visual = chunkYDEEINER_js.mediaFallbackVisual(surface, {
863
+ const visual = chunkFJDZ7AEE_js.mediaFallbackVisual(surface, {
864
864
  hasPoster: Boolean(posterUrl),
865
865
  missing: element.mediaMissing === true
866
866
  });
@@ -870,9 +870,9 @@ function renderMediaFallback({
870
870
  "img",
871
871
  {
872
872
  src: posterUrl,
873
- alt: visual.dimPoster ? chunkSWRY3SI5_js.translationsEn["pptx.media.posterAlt"] : chunkSWRY3SI5_js.translationsEn["pptx.media.videoPosterAlt"],
873
+ alt: visual.dimPoster ? chunkALO4ZOHQ_js.translationsEn["pptx.media.posterAlt"] : chunkALO4ZOHQ_js.translationsEn["pptx.media.videoPosterAlt"],
874
874
  className: `w-full h-full${visual.dimPoster ? " opacity-50" : ""}`,
875
- style: chunkYDEEINER_js.getImageFitStyle(element)
875
+ style: chunkFJDZ7AEE_js.getImageFitStyle(element)
876
876
  }
877
877
  ),
878
878
  /* @__PURE__ */ jsxRuntime.jsx(Badge, { visual, element })
@@ -882,7 +882,7 @@ function renderMediaFallback({
882
882
  }
883
883
  function renderMediaElement(element, mediaDataUrls, options) {
884
884
  if (element.type !== "media") {
885
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkSWRY3SI5_js.translationsEn["pptx.media.title"] });
885
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkALO4ZOHQ_js.translationsEn["pptx.media.title"] });
886
886
  }
887
887
  const mediaType = element.mediaType;
888
888
  const mediaPath = element.mediaPath;
@@ -890,7 +890,7 @@ function renderMediaElement(element, mediaDataUrls, options) {
890
890
  const dataUrl = element.mediaData ?? (mediaPath ? mediaDataUrls.get(mediaPath) : void 0);
891
891
  const trimFragment = buildTrimFragment(element);
892
892
  const posterUrl = element.posterFrameData ?? void 0;
893
- const shouldLoop = chunkYDEEINER_js.mediaPlaybackAttributes(element).loop;
893
+ const shouldLoop = chunkFJDZ7AEE_js.mediaPlaybackAttributes(element).loop;
894
894
  const shouldAutoPlay = options?.autoPlay === true || element.autoPlay === true;
895
895
  const isFullScreen = options?.fullScreen === true;
896
896
  const isPresentationMode = options?.isPresentationMode === true;
@@ -968,25 +968,25 @@ function renderMediaElement(element, mediaDataUrls, options) {
968
968
  if (surface.presenting || surface.preview) {
969
969
  return null;
970
970
  }
971
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkSWRY3SI5_js.translationsEn["pptx.media.title"] });
971
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkALO4ZOHQ_js.translationsEn["pptx.media.title"] });
972
972
  }
973
973
 
974
974
  // src/viewer/utils/text-utils.tsx
975
975
  function getTextStyleForElement(element, fallbackColor) {
976
- return chunkYDEEINER_js.buildTextBlockStyle(element, { fallbackColor });
976
+ return chunkFJDZ7AEE_js.buildTextBlockStyle(element, { fallbackColor });
977
977
  }
978
978
 
979
979
  // src/viewer/utils/text-layout.tsx
980
980
  function getTextLayoutStyle(element) {
981
- if (!chunkYDEEINER_js.hasTextProperties(element)) {
981
+ if (!chunkFJDZ7AEE_js.hasTextProperties(element)) {
982
982
  return {};
983
983
  }
984
- const writingMode = chunkYDEEINER_js.toCssWritingMode(element.textStyle?.textDirection);
985
- const textOrientation = chunkYDEEINER_js.toCssTextOrientation(element.textStyle?.textDirection);
986
- const verticalDirection = chunkYDEEINER_js.toCssVerticalDirection(element.textStyle?.textDirection);
984
+ const writingMode = chunkFJDZ7AEE_js.toCssWritingMode(element.textStyle?.textDirection);
985
+ const textOrientation = chunkFJDZ7AEE_js.toCssTextOrientation(element.textStyle?.textDirection);
986
+ const verticalDirection = chunkFJDZ7AEE_js.toCssVerticalDirection(element.textStyle?.textDirection);
987
987
  const textWrapNone = element.textStyle?.textWrap === "none";
988
988
  const shapeAutoFitTextBox = element.textStyle?.autoFitMode === "shrink" && (element.type === "text" || element.locks?.txBox === true);
989
- const hasParagraphIndents = chunkYDEEINER_js.hasTextProperties(element) && element.paragraphIndents && element.paragraphIndents.length > 0;
989
+ const hasParagraphIndents = chunkFJDZ7AEE_js.hasTextProperties(element) && element.paragraphIndents && element.paragraphIndents.length > 0;
990
990
  const paragraphMarginLeft = element.textStyle?.paragraphMarginLeft;
991
991
  const paragraphIndent = element.textStyle?.paragraphIndent;
992
992
  const marginLeft = !hasParagraphIndents && typeof paragraphMarginLeft === "number" && paragraphMarginLeft !== 0 ? paragraphMarginLeft : void 0;
@@ -995,7 +995,7 @@ function getTextLayoutStyle(element) {
995
995
  const bodyBottom = element.textStyle?.bodyInsetBottom ?? DEFAULT_BODY_INSET_TB_PX;
996
996
  return {
997
997
  // Columns / flex anchoring / anchorCtr / tab-size / kinsoku, from shared.
998
- ...chunkYDEEINER_js.buildTextBodyLayoutStyle(element),
998
+ ...chunkFJDZ7AEE_js.buildTextBodyLayoutStyle(element),
999
999
  // Body inset only. Paragraph spacing (spcBef/spcAft) is applied
1000
1000
  // per-paragraph by the paragraph renderer, not collapsed here.
1001
1001
  paddingTop: bodyTop,
@@ -1023,7 +1023,7 @@ function getTextLayoutStyle(element) {
1023
1023
 
1024
1024
  // src/viewer/utils/text-effects.tsx
1025
1025
  function buildTextBody3DSceneStyle2(textStyle) {
1026
- return chunkYDEEINER_js.buildTextBody3DSceneStyle(textStyle);
1026
+ return chunkFJDZ7AEE_js.buildTextBody3DSceneStyle(textStyle);
1027
1027
  }
1028
1028
 
1029
1029
  // src/viewer/utils/text-warp-css.tsx
@@ -1208,13 +1208,13 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
1208
1208
  if (!subElementAnimStates || subElementAnimStates.size === 0) {
1209
1209
  return renderedSegments;
1210
1210
  }
1211
- const paraKey = `${elementId}${chunkYDEEINER_js.TEXT_BUILD_ID_SEP}p${paraIndex}`;
1211
+ const paraKey = `${elementId}${chunkFJDZ7AEE_js.TEXT_BUILD_ID_SEP}p${paraIndex}`;
1212
1212
  const paraState = subElementAnimStates.get(paraKey);
1213
1213
  if (paraState) {
1214
1214
  const style = buildAnimStyle(paraState);
1215
1215
  return /* @__PURE__ */ jsxRuntime.jsx("span", { "data-anim-id": paraKey, style: { display: "inline", ...style }, children: renderedSegments }, paraKey);
1216
1216
  }
1217
- const spec = chunkYDEEINER_js.buildTextBuildSpec(
1217
+ const spec = chunkFJDZ7AEE_js.buildTextBuildSpec(
1218
1218
  elementId,
1219
1219
  paraIndex,
1220
1220
  paraRuns.map((run) => ({ text: run.text, style: run })),
@@ -1232,7 +1232,7 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
1232
1232
  "span",
1233
1233
  {
1234
1234
  "data-anim-id": span.animId,
1235
- style: chunkYDEEINER_js.textBuildSpanStyle(span),
1235
+ style: chunkFJDZ7AEE_js.textBuildSpanStyle(span),
1236
1236
  children: content
1237
1237
  },
1238
1238
  span.animId
@@ -1240,7 +1240,7 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
1240
1240
  });
1241
1241
  }
1242
1242
  function renderTabbedLine(line, ctx, keyPrefix, renderPiece, nestedStyle) {
1243
- const [lineLayout] = chunkYDEEINER_js.buildRunTabLines(line, ctx, nestedStyle);
1243
+ const [lineLayout] = chunkFJDZ7AEE_js.buildRunTabLines(line, ctx, nestedStyle);
1244
1244
  return /* @__PURE__ */ jsxRuntime.jsx("span", { style: { display: "inline-block", whiteSpace: "nowrap" }, children: lineLayout.pieces.map((piece, i) => {
1245
1245
  const key = `${keyPrefix}-tab-${i}`;
1246
1246
  return /* @__PURE__ */ jsxRuntime.jsxs(React6__default.default.Fragment, { children: [
@@ -1253,7 +1253,7 @@ function renderScriptAwareText(text, needsScriptFonts, scriptFonts, baseFontFami
1253
1253
  if (!needsScriptFonts || !text) {
1254
1254
  return text;
1255
1255
  }
1256
- const pieces = chunkYDEEINER_js.splitRunByScriptFont(
1256
+ const pieces = chunkFJDZ7AEE_js.splitRunByScriptFont(
1257
1257
  text,
1258
1258
  scriptFonts,
1259
1259
  baseFontFamily,
@@ -1270,7 +1270,7 @@ function renderMetricPieces(text, metric, keyPrefix, inner) {
1270
1270
  if (!metric || !text) {
1271
1271
  return inner(text, keyPrefix);
1272
1272
  }
1273
- const pieces = chunkYDEEINER_js.splitRunForMetrics(text, metric.font);
1273
+ const pieces = chunkFJDZ7AEE_js.splitRunForMetrics(text, metric.font);
1274
1274
  if (pieces.length <= 1) {
1275
1275
  return inner(text, keyPrefix);
1276
1276
  }
@@ -1279,7 +1279,7 @@ function renderMetricPieces(text, metric, keyPrefix, inner) {
1279
1279
  {
1280
1280
  style: {
1281
1281
  ...metric.nestedStyle,
1282
- letterSpacing: chunkYDEEINER_js.pieceLetterSpacing(metric.authoredPx, piece.tracking)
1282
+ letterSpacing: chunkFJDZ7AEE_js.pieceLetterSpacing(metric.authoredPx, piece.tracking)
1283
1283
  },
1284
1284
  children: inner(piece.text, `${keyPrefix}-w${i}`)
1285
1285
  },
@@ -1366,8 +1366,8 @@ function renderSegmentContent(elementId, segmentIndex, textValue, lines, needsSc
1366
1366
  });
1367
1367
  }
1368
1368
  function renderEquationSegment(elementId, segmentIndex, equationXml, equationNumber) {
1369
- const mathml = chunkYDEEINER_js.convertOmmlToMathMl(equationXml);
1370
- const safeMathml = mathml ? chunkYDEEINER_js.sanitizeMathMl(mathml) : "";
1369
+ const mathml = chunkFJDZ7AEE_js.convertOmmlToMathMl(equationXml);
1370
+ const safeMathml = mathml ? chunkFJDZ7AEE_js.sanitizeMathMl(mathml) : "";
1371
1371
  const equationContent = safeMathml ? /* @__PURE__ */ jsxRuntime.jsx(
1372
1372
  "span",
1373
1373
  {
@@ -1377,7 +1377,7 @@ function renderEquationSegment(elementId, segmentIndex, equationXml, equationNum
1377
1377
  },
1378
1378
  dangerouslySetInnerHTML: { __html: safeMathml }
1379
1379
  }
1380
- ) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-block px-1 py-0.5 rounded text-xs bg-gray-200/20 text-gray-400 italic", children: chunkSWRY3SI5_js.translationsEn["pptx.textSegment.equationFallback"] });
1380
+ ) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-block px-1 py-0.5 rounded text-xs bg-gray-200/20 text-gray-400 italic", children: chunkALO4ZOHQ_js.translationsEn["pptx.textSegment.equationFallback"] });
1381
1381
  if (equationNumber) {
1382
1382
  return /* @__PURE__ */ jsxRuntime.jsxs(
1383
1383
  "span",
@@ -1495,7 +1495,7 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
1495
1495
  const segmentStyle = segment?.style ?? {};
1496
1496
  const textValue = run.text;
1497
1497
  const lines = textValue.split("\n");
1498
- const resolvedSegmentColor = chunkYDEEINER_js.normalizeHexColor(
1498
+ const resolvedSegmentColor = chunkFJDZ7AEE_js.normalizeHexColor(
1499
1499
  segmentStyle.color || element.textStyle?.color,
1500
1500
  run.hyperlink ? HYPERLINK_COLOR : fallbackColor
1501
1501
  );
@@ -1503,16 +1503,16 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
1503
1503
  const baselineFraction = rawBaseline === 0 ? 0 : Math.abs(rawBaseline) >= 1e3 ? rawBaseline / 1e5 : rawBaseline / 100;
1504
1504
  const baselineFontScale = baselineFraction !== 0 ? BASELINE_FONT_SCALE : 1;
1505
1505
  const rawFontSize = segmentStyle.fontSize || element.textStyle?.fontSize || DEFAULT_TEXT_FONT_SIZE;
1506
- const baseFontSize = rawFontSize * chunkYDEEINER_js.resolveAutoFitFontScale(element.textStyle);
1506
+ const baseFontSize = rawFontSize * chunkFJDZ7AEE_js.resolveAutoFitFontScale(element.textStyle);
1507
1507
  const baselineShift = baselineFraction !== 0 ? `${baselineFraction * baseFontSize}px` : void 0;
1508
- const fontKerning = chunkYDEEINER_js.resolveFontKerning(segmentStyle.kerning, baseFontSize);
1508
+ const fontKerning = chunkFJDZ7AEE_js.resolveFontKerning(segmentStyle.kerning, baseFontSize);
1509
1509
  const rawFontFamily = segmentStyle.fontFamily || element.textStyle?.fontFamily;
1510
- const baseFontFamily = rawFontFamily ? chunkYDEEINER_js.getSubstituteFontFamily(
1510
+ const baseFontFamily = rawFontFamily ? chunkFJDZ7AEE_js.getSubstituteFontFamily(
1511
1511
  rawFontFamily,
1512
- chunkYDEEINER_js.parsePanoseString(segmentStyle.latinFontPanose ?? element.textStyle?.latinFontPanose)
1512
+ chunkFJDZ7AEE_js.parsePanoseString(segmentStyle.latinFontPanose ?? element.textStyle?.latinFontPanose)
1513
1513
  ) : DEFAULT_FONT_FAMILY2;
1514
- const scriptFonts = chunkYDEEINER_js.resolveScriptFontSet(segmentStyle, element.textStyle, baseFontFamily);
1515
- const needsScriptFonts = chunkYDEEINER_js.hasDistinctScriptFonts(scriptFonts);
1514
+ const scriptFonts = chunkFJDZ7AEE_js.resolveScriptFontSet(segmentStyle, element.textStyle, baseFontFamily);
1515
+ const needsScriptFonts = chunkFJDZ7AEE_js.hasDistinctScriptFonts(scriptFonts);
1516
1516
  const authoredLetterSpacing = typeof segmentStyle.characterSpacing === "number" && segmentStyle.characterSpacing !== 0 ? segmentStyle.characterSpacing / 100 * (96 / 72) : 0;
1517
1517
  const metricFont = {
1518
1518
  fontFamily: baseFontFamily,
@@ -1520,7 +1520,7 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
1520
1520
  bold: Boolean(segmentStyle.bold),
1521
1521
  italic: Boolean(segmentStyle.italic)
1522
1522
  };
1523
- const nestedStyle = chunkYDEEINER_js.nestedTextDecorationStyle(run.style);
1523
+ const nestedStyle = chunkFJDZ7AEE_js.nestedTextDecorationStyle(run.style);
1524
1524
  const metricContext = { font: metricFont, authoredPx: authoredLetterSpacing, nestedStyle };
1525
1525
  const spanStyle = { ...run.style };
1526
1526
  spanStyle.color = resolvedSegmentColor;
@@ -1528,11 +1528,11 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
1528
1528
  spanStyle.fontFamily = baseFontFamily;
1529
1529
  spanStyle.verticalAlign = baselineShift;
1530
1530
  spanStyle.fontKerning = fontKerning;
1531
- spanStyle.letterSpacing = chunkYDEEINER_js.pieceLetterSpacing(
1531
+ spanStyle.letterSpacing = chunkFJDZ7AEE_js.pieceLetterSpacing(
1532
1532
  authoredLetterSpacing,
1533
- chunkYDEEINER_js.resolveMetricTrackingPx(textValue, metricFont)
1533
+ chunkFJDZ7AEE_js.resolveMetricTrackingPx(textValue, metricFont)
1534
1534
  );
1535
- const hollow = chunkYDEEINER_js.hollowTextFillStyle(segmentStyle, {
1535
+ const hollow = chunkFJDZ7AEE_js.hollowTextFillStyle(segmentStyle, {
1536
1536
  color: resolvedSegmentColor,
1537
1537
  textStroke: typeof spanStyle.WebkitTextStroke === "string" ? spanStyle.WebkitTextStroke : void 0
1538
1538
  });
@@ -1553,7 +1553,7 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
1553
1553
  scriptFonts,
1554
1554
  baseFontFamily,
1555
1555
  findHighlights,
1556
- chunkYDEEINER_js.buildTabContext(
1556
+ chunkFJDZ7AEE_js.buildTabContext(
1557
1557
  element.textStyle?.tabStops,
1558
1558
  element.textStyle?.defaultTabSize,
1559
1559
  baseFontSize,
@@ -1579,7 +1579,7 @@ function renderRubyOrText(run, baseContent) {
1579
1579
  ] });
1580
1580
  }
1581
1581
  function renderTextSegments(element, fallbackColor, emptyFallback, findHighlights, onHyperlinkClick, fieldContext, subElementAnimStates, segmentOverrides, requireCtrlClick) {
1582
- if (!chunkYDEEINER_js.hasTextProperties(element)) {
1582
+ if (!chunkFJDZ7AEE_js.hasTextProperties(element)) {
1583
1583
  return emptyFallback || null;
1584
1584
  }
1585
1585
  const segments = segmentOverrides ?? element.textSegments;
@@ -1589,7 +1589,7 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
1589
1589
  }
1590
1590
  return element.text || emptyFallback || "";
1591
1591
  }
1592
- const paragraphs = chunkYDEEINER_js.buildParagraphs(element, fieldContext, segmentOverrides);
1592
+ const paragraphs = chunkFJDZ7AEE_js.buildParagraphs(element, fieldContext, segmentOverrides);
1593
1593
  const ctx = {
1594
1594
  element,
1595
1595
  fallbackColor,
@@ -1722,13 +1722,13 @@ function hexToRgbUnit(hex) {
1722
1722
  };
1723
1723
  }
1724
1724
  function getDuotoneColors(element) {
1725
- if (!chunkYDEEINER_js.isImageLikeElement(element)) {
1725
+ if (!chunkFJDZ7AEE_js.isImageLikeElement(element)) {
1726
1726
  return void 0;
1727
1727
  }
1728
1728
  return element.imageEffects?.duotone;
1729
1729
  }
1730
1730
  function buildLineShadowCss(element) {
1731
- if (!chunkYDEEINER_js.hasShapeProperties(element)) {
1731
+ if (!chunkFJDZ7AEE_js.hasShapeProperties(element)) {
1732
1732
  return void 0;
1733
1733
  }
1734
1734
  const ss = element.shapeStyle;
@@ -1739,13 +1739,13 @@ function buildLineShadowCss(element) {
1739
1739
  const offsetY = typeof ss.lineShadowOffsetY === "number" ? ss.lineShadowOffsetY : 2;
1740
1740
  const blur = typeof ss.lineShadowBlur === "number" ? Math.max(0, ss.lineShadowBlur) : 4;
1741
1741
  const opacity = typeof ss.lineShadowOpacity === "number" ? Math.max(0, Math.min(1, ss.lineShadowOpacity)) : 0.35;
1742
- return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${chunkYDEEINER_js.colorWithOpacity(
1743
- chunkYDEEINER_js.normalizeHexColor(ss.lineShadowColor, "#000000"),
1742
+ return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${chunkFJDZ7AEE_js.colorWithOpacity(
1743
+ chunkFJDZ7AEE_js.normalizeHexColor(ss.lineShadowColor, "#000000"),
1744
1744
  opacity
1745
1745
  )}`;
1746
1746
  }
1747
1747
  function buildLineGlowFilter(element) {
1748
- if (!chunkYDEEINER_js.hasShapeProperties(element)) {
1748
+ if (!chunkFJDZ7AEE_js.hasShapeProperties(element)) {
1749
1749
  return void 0;
1750
1750
  }
1751
1751
  const ss = element.shapeStyle;
@@ -1754,14 +1754,14 @@ function buildLineGlowFilter(element) {
1754
1754
  }
1755
1755
  const glowOpacity = typeof ss.lineGlowOpacity === "number" ? ss.lineGlowOpacity : 0.75;
1756
1756
  const glowRad = Math.round(Math.max(0, ss.lineGlowRadius));
1757
- const glowCol = chunkYDEEINER_js.colorWithOpacity(chunkYDEEINER_js.normalizeHexColor(ss.lineGlowColor, "#ffff00"), glowOpacity);
1757
+ const glowCol = chunkFJDZ7AEE_js.colorWithOpacity(chunkFJDZ7AEE_js.normalizeHexColor(ss.lineGlowColor, "#ffff00"), glowOpacity);
1758
1758
  return `drop-shadow(0 0 ${glowRad}px ${glowCol})`;
1759
1759
  }
1760
1760
  function getDagDuotoneFilterId(elementId) {
1761
1761
  return `dag-duotone-${elementId}`;
1762
1762
  }
1763
1763
  function hasDagDuotoneEffect(element) {
1764
- if (!chunkYDEEINER_js.hasShapeProperties(element)) {
1764
+ if (!chunkFJDZ7AEE_js.hasShapeProperties(element)) {
1765
1765
  return false;
1766
1766
  }
1767
1767
  return Boolean(element.shapeStyle?.dagDuotone);
@@ -1813,7 +1813,7 @@ function renderDagDuotoneSvgFilter(elementId, color1, color2) {
1813
1813
 
1814
1814
  // src/viewer/utils/shape-visual-3d.ts
1815
1815
  function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elementHeight) {
1816
- return chunkYDEEINER_js.build3DExtrusionData(
1816
+ return chunkFJDZ7AEE_js.build3DExtrusionData(
1817
1817
  shape3d,
1818
1818
  scene3d,
1819
1819
  fillColor,
@@ -1822,7 +1822,7 @@ function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elemen
1822
1822
  );
1823
1823
  }
1824
1824
  function apply3dEffects2(base, scene3d, shape3d, fillColorFallback) {
1825
- chunkYDEEINER_js.apply3dEffects(base, scene3d, shape3d, fillColorFallback);
1825
+ chunkFJDZ7AEE_js.apply3dEffects(base, scene3d, shape3d, fillColorFallback);
1826
1826
  }
1827
1827
 
1828
1828
  // src/viewer/utils/shape-visual-style.ts
@@ -1830,16 +1830,16 @@ function rendersCustomVectorPath(element) {
1830
1830
  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;
1831
1831
  }
1832
1832
  function rendersWedgeCalloutVector(element) {
1833
- return element.type === "shape" && chunkYDEEINER_js.isWedgeCalloutPresetShape(element.shapeType);
1833
+ return element.type === "shape" && chunkFJDZ7AEE_js.isWedgeCalloutPresetShape(element.shapeType);
1834
1834
  }
1835
1835
  function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _strokeColor, animatesFill, animatesStroke, parentGroupFill) {
1836
- if (!chunkYDEEINER_js.hasShapeProperties(element)) {
1836
+ if (!chunkFJDZ7AEE_js.hasShapeProperties(element)) {
1837
1837
  return {};
1838
1838
  }
1839
1839
  const ss = element.shapeStyle;
1840
- const fill = animatesFill ? void 0 : chunkYDEEINER_js.getComputedFillStyle(element, parentGroupFill);
1841
- const fx = chunkYDEEINER_js.getComputedEffectStyle(element);
1842
- const stroke = chunkYDEEINER_js.getComputedStrokeStyle(element);
1840
+ const fill = animatesFill ? void 0 : chunkFJDZ7AEE_js.getComputedFillStyle(element, parentGroupFill);
1841
+ const fx = chunkFJDZ7AEE_js.getComputedEffectStyle(element);
1842
+ const stroke = chunkFJDZ7AEE_js.getComputedStrokeStyle(element);
1843
1843
  const base = {
1844
1844
  // A gradient fill REPLACES the solid fill, it does not sit on top of it;
1845
1845
  // the whole precedence lives in shared's `getComputedFillStyle`.
@@ -1878,7 +1878,7 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
1878
1878
  };
1879
1879
  Object.assign(
1880
1880
  base,
1881
- chunkYDEEINER_js.getAnimationColorBaseStyle(element, {
1881
+ chunkFJDZ7AEE_js.getAnimationColorBaseStyle(element, {
1882
1882
  animatesFill,
1883
1883
  animatesStroke,
1884
1884
  parentGroupFill
@@ -1890,7 +1890,7 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
1890
1890
  base.borderStyle = void 0;
1891
1891
  }
1892
1892
  apply3dEffects2(base, ss?.scene3d, ss?.shape3d, ss?.fillColor ?? fillColor);
1893
- if (rendersCustomVectorPath(element) || rendersWedgeCalloutVector(element) || chunkYDEEINER_js.isStrokeOnlyPresetElement(element)) {
1893
+ if (rendersCustomVectorPath(element) || rendersWedgeCalloutVector(element) || chunkFJDZ7AEE_js.isStrokeOnlyPresetElement(element)) {
1894
1894
  base.backgroundColor = "transparent";
1895
1895
  base.backgroundImage = void 0;
1896
1896
  base.borderWidth = void 0;
@@ -1904,7 +1904,7 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
1904
1904
  if (rendersWedgeCalloutVector(element)) {
1905
1905
  return base;
1906
1906
  }
1907
- const geometry = chunkYDEEINER_js.resolveShapeGeometry(element);
1907
+ const geometry = chunkFJDZ7AEE_js.resolveShapeGeometry(element);
1908
1908
  switch (geometry.kind) {
1909
1909
  case "bare":
1910
1910
  return { backgroundColor: "transparent", borderWidth: 0, borderStyle: "none" };
@@ -1930,13 +1930,13 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
1930
1930
  function getConnectorAdjustment(element, key, fallback) {
1931
1931
  const direct = element.shapeAdjustments?.[key];
1932
1932
  if (typeof direct === "number" && Number.isFinite(direct)) {
1933
- return chunkYDEEINER_js.clampUnitInterval(direct / 1e5);
1933
+ return chunkFJDZ7AEE_js.clampUnitInterval(direct / 1e5);
1934
1934
  }
1935
1935
  const fallbackKey = element.shapeAdjustments?.adj;
1936
1936
  if (typeof fallbackKey === "number" && Number.isFinite(fallbackKey)) {
1937
- return chunkYDEEINER_js.clampUnitInterval(fallbackKey / 1e5);
1937
+ return chunkFJDZ7AEE_js.clampUnitInterval(fallbackKey / 1e5);
1938
1938
  }
1939
- return chunkYDEEINER_js.clampUnitInterval(fallback);
1939
+ return chunkFJDZ7AEE_js.clampUnitInterval(fallback);
1940
1940
  }
1941
1941
  function getConnectorPathGeometry(element) {
1942
1942
  const width = Math.max(element.width, 0);
@@ -2073,11 +2073,11 @@ function strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray) {
2073
2073
  strokePaint,
2074
2074
  strokeWidth,
2075
2075
  dashArray,
2076
- lineCap: chunkYDEEINER_js.svgLineCap(shapeStyle?.lineCap),
2076
+ lineCap: chunkFJDZ7AEE_js.svgLineCap(shapeStyle?.lineCap),
2077
2077
  lineJoin,
2078
2078
  miterLimit,
2079
- offsets: chunkYDEEINER_js.getCompoundLineOffsets(shapeStyle?.compoundLine, strokeWidth),
2080
- widths: chunkYDEEINER_js.getCompoundLineWidths(shapeStyle?.compoundLine, strokeWidth)
2079
+ offsets: chunkFJDZ7AEE_js.getCompoundLineOffsets(shapeStyle?.compoundLine, strokeWidth),
2080
+ widths: chunkFJDZ7AEE_js.getCompoundLineWidths(shapeStyle?.compoundLine, strokeWidth)
2081
2081
  };
2082
2082
  }
2083
2083
  function strokeStrands(d, keyBase, ctx) {
@@ -2125,12 +2125,12 @@ function gradientDefs(gradient) {
2125
2125
  }
2126
2126
  function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredPaths, shapeStyle, hasFill, fillColor, fillOpacity, strokePaint, strokeWidth, dashArray, animatesFill = false, gradient) {
2127
2127
  const ctx = strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray);
2128
- const subpaths = structuredPaths && structuredPaths.length > 0 ? chunkYDEEINER_js.customGeometryPathsToSvgSubpaths(structuredPaths, pathWidth, pathHeight) : void 0;
2128
+ const subpaths = structuredPaths && structuredPaths.length > 0 ? chunkFJDZ7AEE_js.customGeometryPathsToSvgSubpaths(structuredPaths, pathWidth, pathHeight) : void 0;
2129
2129
  const needsPerSubpath = subpaths !== void 0 && subpaths.some((sp) => sp.fillMode && sp.fillMode !== "norm" || sp.stroke === false);
2130
- const gradientPaint = gradient ? chunkYDEEINER_js.svgGradientFillRef(gradient) : void 0;
2130
+ const gradientPaint = gradient ? chunkFJDZ7AEE_js.svgGradientFillRef(gradient) : void 0;
2131
2131
  const nodes = [];
2132
2132
  if (subpaths && needsPerSubpath) {
2133
- const paints = chunkYDEEINER_js.buildSubpathPaints(subpaths, hasFill, fillColor, fillOpacity);
2133
+ const paints = chunkFJDZ7AEE_js.buildSubpathPaints(subpaths, hasFill, fillColor, fillOpacity);
2134
2134
  paints.forEach((paint, idx) => {
2135
2135
  if (paint.fill !== "none") {
2136
2136
  const mode = subpaths[idx]?.fillMode;
@@ -2159,7 +2159,7 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
2159
2159
  "path",
2160
2160
  {
2161
2161
  d: pathData,
2162
- fill: animatesFill ? "inherit" : gradientPaint ?? chunkYDEEINER_js.colorWithOpacity(fillColor, fillOpacity),
2162
+ fill: animatesFill ? "inherit" : gradientPaint ?? chunkFJDZ7AEE_js.colorWithOpacity(fillColor, fillOpacity),
2163
2163
  stroke: "none",
2164
2164
  vectorEffect: "non-scaling-stroke"
2165
2165
  },
@@ -2202,14 +2202,14 @@ function renderGradientDefs(gradient) {
2202
2202
  ) });
2203
2203
  }
2204
2204
  function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor, animatesFill, animatesStroke) {
2205
- if (!chunkYDEEINER_js.hasShapeProperties(element)) {
2205
+ if (!chunkFJDZ7AEE_js.hasShapeProperties(element)) {
2206
2206
  return null;
2207
2207
  }
2208
2208
  const normalizedType = (element.shapeType || "").toLowerCase();
2209
- const fillPaint = animatesFill ? "inherit" : chunkYDEEINER_js.colorWithOpacity(fillColor, element.shapeStyle?.fillOpacity);
2210
- const strokePaint = animatesStroke ? "inherit" : chunkYDEEINER_js.colorWithOpacity(strokeColor, element.shapeStyle?.strokeOpacity);
2211
- const dashType = chunkYDEEINER_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2212
- const dashArray = chunkYDEEINER_js.getSvgStrokeDasharray(
2209
+ const fillPaint = animatesFill ? "inherit" : chunkFJDZ7AEE_js.colorWithOpacity(fillColor, element.shapeStyle?.fillOpacity);
2210
+ const strokePaint = animatesStroke ? "inherit" : chunkFJDZ7AEE_js.colorWithOpacity(strokeColor, element.shapeStyle?.strokeOpacity);
2211
+ const dashType = chunkFJDZ7AEE_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2212
+ const dashArray = chunkFJDZ7AEE_js.getSvgStrokeDasharray(
2213
2213
  dashType,
2214
2214
  Math.max(strokeWidth, 1),
2215
2215
  element.shapeStyle?.customDashSegments
@@ -2290,13 +2290,13 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2290
2290
  // container's `background-image` is suppressed for custom geometry, so
2291
2291
  // without this the shape fell back to the parser's representative solid
2292
2292
  // and lost every fade (issue #132).
2293
- chunkYDEEINER_js.buildSvgGradientDef(element.shapeStyle, element.id)
2293
+ chunkFJDZ7AEE_js.buildSvgGradientDef(element.shapeStyle, element.id)
2294
2294
  );
2295
2295
  }
2296
- if ((element.type === "image" || element.type === "picture") && strokeWidth > 0 && !chunkYDEEINER_js.buildStrokeOutline(element)) {
2296
+ if ((element.type === "image" || element.type === "picture") && strokeWidth > 0 && !chunkFJDZ7AEE_js.buildStrokeOutline(element)) {
2297
2297
  const width = Math.max(element.width, 1);
2298
2298
  const height = Math.max(element.height, 1);
2299
- const geometry = chunkYDEEINER_js.getPresetShapeVectorGeometry(
2299
+ const geometry = chunkFJDZ7AEE_js.getPresetShapeVectorGeometry(
2300
2300
  element.shapeType || "rect",
2301
2301
  width,
2302
2302
  height,
@@ -2324,18 +2324,18 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2324
2324
  );
2325
2325
  }
2326
2326
  }
2327
- if (element.type === "shape" && chunkYDEEINER_js.isWedgeCalloutPresetShape(element.shapeType)) {
2327
+ if (element.type === "shape" && chunkFJDZ7AEE_js.isWedgeCalloutPresetShape(element.shapeType)) {
2328
2328
  const width = Math.max(element.width, 1);
2329
2329
  const height = Math.max(element.height, 1);
2330
- const geometry = chunkYDEEINER_js.getPresetShapeVectorGeometry(
2330
+ const geometry = chunkFJDZ7AEE_js.getPresetShapeVectorGeometry(
2331
2331
  element.shapeType,
2332
2332
  width,
2333
2333
  height,
2334
2334
  element.shapeAdjustments
2335
2335
  );
2336
2336
  if (geometry) {
2337
- const gradient = chunkYDEEINER_js.buildSvgGradientDef(element.shapeStyle, element.id);
2338
- const gradientPaint = gradient ? chunkYDEEINER_js.svgGradientFillRef(gradient) : void 0;
2337
+ const gradient = chunkFJDZ7AEE_js.buildSvgGradientDef(element.shapeStyle, element.id);
2338
+ const gradientPaint = gradient ? chunkFJDZ7AEE_js.svgGradientFillRef(gradient) : void 0;
2339
2339
  return /* @__PURE__ */ jsxRuntime.jsxs(
2340
2340
  "svg",
2341
2341
  {
@@ -2368,18 +2368,18 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2368
2368
  );
2369
2369
  }
2370
2370
  }
2371
- if (chunkYDEEINER_js.isCalloutShape(normalizedType)) {
2371
+ if (chunkFJDZ7AEE_js.isCalloutShape(normalizedType)) {
2372
2372
  const width = Math.max(element.width, 1);
2373
2373
  const height = Math.max(element.height, 1);
2374
- const geometry = chunkYDEEINER_js.getCalloutLeaderLineGeometry(
2374
+ const geometry = chunkFJDZ7AEE_js.getCalloutLeaderLineGeometry(
2375
2375
  normalizedType,
2376
2376
  width,
2377
2377
  height,
2378
2378
  element.shapeAdjustments
2379
2379
  );
2380
2380
  if (geometry && geometry.points.length >= 2) {
2381
- const leaderPath = chunkYDEEINER_js.buildCalloutLeaderLineSvgPath(geometry);
2382
- const bounds = chunkYDEEINER_js.getCalloutViewBoxBounds(width, height, geometry);
2381
+ const leaderPath = chunkFJDZ7AEE_js.buildCalloutLeaderLineSvgPath(geometry);
2382
+ const bounds = chunkFJDZ7AEE_js.getCalloutViewBoxBounds(width, height, geometry);
2383
2383
  const lineStroke = Math.max(strokeWidth, 1);
2384
2384
  const offsetLeft = bounds.minX;
2385
2385
  const offsetTop = bounds.minY;
@@ -2442,10 +2442,10 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2442
2442
  const endArrowW = element.shapeStyle?.connectorEndArrowWidth;
2443
2443
  const endArrowL = element.shapeStyle?.connectorEndArrowLength;
2444
2444
  const compoundLine = element.shapeStyle?.compoundLine;
2445
- const connectorLineCap = chunkYDEEINER_js.svgLineCap(element.shapeStyle?.lineCap);
2445
+ const connectorLineCap = chunkFJDZ7AEE_js.svgLineCap(element.shapeStyle?.lineCap);
2446
2446
  const hitTargetWidth = Math.max(strokeWidth * 3, 12);
2447
- const offsets = chunkYDEEINER_js.getCompoundLineOffsets(compoundLine, strokeWidth);
2448
- const widths = chunkYDEEINER_js.getCompoundLineWidths(compoundLine, strokeWidth);
2447
+ const offsets = chunkFJDZ7AEE_js.getCompoundLineOffsets(compoundLine, strokeWidth);
2448
+ const widths = chunkFJDZ7AEE_js.getCompoundLineWidths(compoundLine, strokeWidth);
2449
2449
  return /* @__PURE__ */ jsxRuntime.jsxs(
2450
2450
  "svg",
2451
2451
  {
@@ -2512,15 +2512,15 @@ function parseGradientFillCss(gradFill) {
2512
2512
  }
2513
2513
  const rawStops = stops.map((gs) => {
2514
2514
  const pos = Number.parseInt(String(gs["@_pos"] || "0"), 10) / 1e3;
2515
- const color = chunkYDEEINER_js.parseDrawingColor(gs) ?? "#888888";
2516
- const opacity = chunkYDEEINER_js.parseDrawingColorOpacity(gs);
2515
+ const color = chunkFJDZ7AEE_js.parseDrawingColor(gs) ?? "#888888";
2516
+ const opacity = chunkFJDZ7AEE_js.parseDrawingColorOpacity(gs);
2517
2517
  return { position: pos, color, opacity };
2518
2518
  }).sort((a, b) => a.position - b.position);
2519
- const stopStrings = rawStops.map((s) => `${chunkYDEEINER_js.colorWithOpacity(s.color, s.opacity)} ${s.position.toFixed(1)}%`).join(", ");
2519
+ const stopStrings = rawStops.map((s) => `${chunkFJDZ7AEE_js.colorWithOpacity(s.color, s.opacity)} ${s.position.toFixed(1)}%`).join(", ");
2520
2520
  const lin = gradFill["a:lin"];
2521
2521
  if (lin) {
2522
2522
  const angRaw = Number.parseInt(String(lin["@_ang"] || "0"), 10);
2523
- const angleDeg = Math.round(chunkYDEEINER_js.ooxmlGradientAngleToCssDegrees(angRaw / 6e4));
2523
+ const angleDeg = Math.round(chunkFJDZ7AEE_js.ooxmlGradientAngleToCssDegrees(angRaw / 6e4));
2524
2524
  return `linear-gradient(${angleDeg}deg, ${stopStrings})`;
2525
2525
  }
2526
2526
  const path = gradFill["a:path"];
@@ -2534,7 +2534,7 @@ function parseGradientFillCss(gradFill) {
2534
2534
  b: Number.parseInt(String(fillToRectXml["@_b"] || "0"), 10) / 1e5
2535
2535
  } : void 0;
2536
2536
  if (pathType === "rect") {
2537
- return chunkYDEEINER_js.buildRectPathGradient(rawStops, void 0, fillToRect);
2537
+ return chunkFJDZ7AEE_js.buildRectPathGradient(rawStops, void 0, fillToRect);
2538
2538
  }
2539
2539
  let cx = 50;
2540
2540
  let cy = 50;
@@ -2556,8 +2556,8 @@ function parsePatternFillCss(pattFill) {
2556
2556
  if (!pattFill) {
2557
2557
  return void 0;
2558
2558
  }
2559
- const fgColor = chunkYDEEINER_js.parseDrawingColor(pattFill["a:fgClr"]) ?? "#000000";
2560
- const bgColor = chunkYDEEINER_js.parseDrawingColor(pattFill["a:bgClr"]) ?? "#ffffff";
2559
+ const fgColor = chunkFJDZ7AEE_js.parseDrawingColor(pattFill["a:fgClr"]) ?? "#000000";
2560
+ const bgColor = chunkFJDZ7AEE_js.parseDrawingColor(pattFill["a:bgClr"]) ?? "#ffffff";
2561
2561
  const preset = String(pattFill["@_prst"] || "ltDnDiag");
2562
2562
  switch (preset) {
2563
2563
  case "ltHorz":
@@ -2668,11 +2668,11 @@ function parseCellBorders(cellProperties) {
2668
2668
  const prstDash = ln["a:prstDash"];
2669
2669
  const dashVal = prstDash ? String(prstDash["@_val"] || "") : void 0;
2670
2670
  const cssBorderStyle = ooxmlDashToCss(dashVal);
2671
- const color = chunkYDEEINER_js.parseDrawingColor(ln["a:solidFill"]);
2671
+ const color = chunkFJDZ7AEE_js.parseDrawingColor(ln["a:solidFill"]);
2672
2672
  if (color) {
2673
- const opacity = chunkYDEEINER_js.parseDrawingColorOpacity(ln["a:solidFill"]);
2673
+ const opacity = chunkFJDZ7AEE_js.parseDrawingColorOpacity(ln["a:solidFill"]);
2674
2674
  const key = `${edge.prefix}`;
2675
- borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${chunkYDEEINER_js.colorWithOpacity(color, opacity)}`;
2675
+ borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${chunkFJDZ7AEE_js.colorWithOpacity(color, opacity)}`;
2676
2676
  }
2677
2677
  }
2678
2678
  return borderStyle;
@@ -2685,7 +2685,7 @@ function parseCellTextEffects(runProps) {
2685
2685
  const textShadowParts = [];
2686
2686
  const outerShdw = effectLst["a:outerShdw"];
2687
2687
  if (outerShdw) {
2688
- const shdwColor = chunkYDEEINER_js.parseDrawingColor(outerShdw);
2688
+ const shdwColor = chunkFJDZ7AEE_js.parseDrawingColor(outerShdw);
2689
2689
  if (shdwColor) {
2690
2690
  const blurRad = Number.parseInt(String(outerShdw["@_blurRad"] || "0"), 10);
2691
2691
  const blurPx = blurRad > 0 ? Math.round(blurRad / 12700) : 0;
@@ -2703,7 +2703,7 @@ function parseCellTextEffects(runProps) {
2703
2703
  }
2704
2704
  const glow = effectLst["a:glow"];
2705
2705
  if (glow) {
2706
- const glowColor = chunkYDEEINER_js.parseDrawingColor(glow);
2706
+ const glowColor = chunkFJDZ7AEE_js.parseDrawingColor(glow);
2707
2707
  if (glowColor) {
2708
2708
  const glowRad = Number.parseInt(String(glow["@_rad"] || "0"), 10);
2709
2709
  const glowPx = glowRad > 0 ? Math.round(glowRad / 12700) : 2;
@@ -2783,10 +2783,10 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
2783
2783
  if (runProps?.["@_u"] !== void 0) {
2784
2784
  cellStyle.textDecorationLine = runProps["@_u"] === "sng" ? "underline" : "none";
2785
2785
  }
2786
- const runColor = chunkYDEEINER_js.parseDrawingColor(runProps?.["a:solidFill"], schemeColorOverrides) || chunkYDEEINER_js.parseDrawingColor(runProps?.["a:highlight"], schemeColorOverrides);
2786
+ const runColor = chunkFJDZ7AEE_js.parseDrawingColor(runProps?.["a:solidFill"], schemeColorOverrides) || chunkFJDZ7AEE_js.parseDrawingColor(runProps?.["a:highlight"], schemeColorOverrides);
2787
2787
  if (runColor) {
2788
- const opacity = chunkYDEEINER_js.parseDrawingColorOpacity(runProps?.["a:solidFill"]);
2789
- cellStyle.color = chunkYDEEINER_js.colorWithOpacity(runColor, opacity);
2788
+ const opacity = chunkFJDZ7AEE_js.parseDrawingColorOpacity(runProps?.["a:solidFill"]);
2789
+ cellStyle.color = chunkFJDZ7AEE_js.colorWithOpacity(runColor, opacity);
2790
2790
  }
2791
2791
  const fontFamily = runProps?.["a:latin"]?.["@_typeface"] || runProps?.["a:ea"]?.["@_typeface"] || runProps?.["a:cs"]?.["@_typeface"];
2792
2792
  if (fontFamily) {
@@ -2796,15 +2796,15 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
2796
2796
  cellStyle.textAlign = parseParagraphAlignment(paragraphProperties["@_algn"]);
2797
2797
  }
2798
2798
  const cellProperties = cellXml["a:tcPr"];
2799
- const cellFill = chunkYDEEINER_js.parseDrawingColor(
2799
+ const cellFill = chunkFJDZ7AEE_js.parseDrawingColor(
2800
2800
  cellProperties?.["a:solidFill"],
2801
2801
  schemeColorOverrides
2802
2802
  );
2803
2803
  if (cellFill) {
2804
- const opacity = chunkYDEEINER_js.parseDrawingColorOpacity(
2804
+ const opacity = chunkFJDZ7AEE_js.parseDrawingColorOpacity(
2805
2805
  cellProperties?.["a:solidFill"]
2806
2806
  );
2807
- cellStyle.backgroundColor = chunkYDEEINER_js.colorWithOpacity(cellFill, opacity);
2807
+ cellStyle.backgroundColor = chunkFJDZ7AEE_js.colorWithOpacity(cellFill, opacity);
2808
2808
  } else {
2809
2809
  const gradCss = parseGradientFillCss(cellProperties?.["a:gradFill"]);
2810
2810
  if (gradCss) {
@@ -2819,16 +2819,16 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
2819
2819
  const edgeBorders = parseCellBorders(cellProperties);
2820
2820
  Object.assign(cellStyle, edgeBorders);
2821
2821
  if (!cellStyle.borderLeftColor && !cellStyle.borderRightColor && !cellStyle.borderTopColor && !cellStyle.borderBottomColor) {
2822
- const borderColor = chunkYDEEINER_js.parseDrawingColor(
2822
+ const borderColor = chunkFJDZ7AEE_js.parseDrawingColor(
2823
2823
  cellProperties?.["a:lnL"]?.["a:solidFill"],
2824
2824
  schemeColorOverrides
2825
- ) || chunkYDEEINER_js.parseDrawingColor(
2825
+ ) || chunkFJDZ7AEE_js.parseDrawingColor(
2826
2826
  cellProperties?.["a:lnR"]?.["a:solidFill"],
2827
2827
  schemeColorOverrides
2828
- ) || chunkYDEEINER_js.parseDrawingColor(
2828
+ ) || chunkFJDZ7AEE_js.parseDrawingColor(
2829
2829
  cellProperties?.["a:lnT"]?.["a:solidFill"],
2830
2830
  schemeColorOverrides
2831
- ) || chunkYDEEINER_js.parseDrawingColor(
2831
+ ) || chunkFJDZ7AEE_js.parseDrawingColor(
2832
2832
  cellProperties?.["a:lnB"]?.["a:solidFill"],
2833
2833
  schemeColorOverrides
2834
2834
  );
@@ -2900,7 +2900,7 @@ function getTableCellBandStyle2(element, rowIndex, cellIndex, rowCount, columnCo
2900
2900
  if (element.type !== "table") {
2901
2901
  return void 0;
2902
2902
  }
2903
- return chunkYDEEINER_js.getTableCellBandStyle(element.tableData, rowIndex, cellIndex, rowCount, columnCount, {
2903
+ return chunkFJDZ7AEE_js.getTableCellBandStyle(element.tableData, rowIndex, cellIndex, rowCount, columnCount, {
2904
2904
  tableStyleMap: styleCtx?.tableStyleMap,
2905
2905
  colorScheme: styleCtx?.theme?.colorScheme,
2906
2906
  fontScheme: styleCtx?.theme?.fontScheme
@@ -2976,7 +2976,7 @@ function renderTableCellContent(cell, fallbackText) {
2976
2976
  return /* @__PURE__ */ jsxRuntime.jsx(
2977
2977
  "span",
2978
2978
  {
2979
- style: { position: "relative", ...chunkYDEEINER_js.cellRunStyle(run) },
2979
+ style: { position: "relative", ...chunkFJDZ7AEE_js.cellRunStyle(run) },
2980
2980
  children: run.text
2981
2981
  },
2982
2982
  `r-${index}`
@@ -2984,7 +2984,7 @@ function renderTableCellContent(cell, fallbackText) {
2984
2984
  });
2985
2985
  }
2986
2986
  function getCellDiagonalBorders2(style, tableData, pos, styleCtx) {
2987
- return chunkYDEEINER_js.getCellDiagonalBorders(style, tableData, pos, {
2987
+ return chunkFJDZ7AEE_js.getCellDiagonalBorders(style, tableData, pos, {
2988
2988
  tableStyleMap: styleCtx?.tableStyleMap,
2989
2989
  colorScheme: styleCtx?.theme?.colorScheme,
2990
2990
  fontScheme: styleCtx?.theme?.fontScheme
@@ -3117,7 +3117,7 @@ function TableResizeOverlay({
3117
3117
  const containerRef = React6.useRef(null);
3118
3118
  const [rowBounds, setRowBounds] = React6.useState([]);
3119
3119
  const dragRef = React6.useRef(null);
3120
- const colBoundaries = React6.useMemo(() => chunkYDEEINER_js.computeColumnBoundaries(columnWidths), [columnWidths]);
3120
+ const colBoundaries = React6.useMemo(() => chunkFJDZ7AEE_js.computeColumnBoundaries(columnWidths), [columnWidths]);
3121
3121
  const measureRows = React6.useCallback(() => {
3122
3122
  const container = containerRef.current;
3123
3123
  if (!container) {
@@ -3164,11 +3164,11 @@ function TableResizeOverlay({
3164
3164
  const rect = containerRef.current.getBoundingClientRect();
3165
3165
  if (drag.type === "col" && drag.initialWidths && onResizeColumns) {
3166
3166
  const deltaProp = (e.clientX - drag.startPos) / rect.width;
3167
- onResizeColumns(chunkYDEEINER_js.computeResizedColumnWidths(drag.initialWidths, drag.index, deltaProp));
3167
+ onResizeColumns(chunkFJDZ7AEE_js.computeResizedColumnWidths(drag.initialWidths, drag.index, deltaProp));
3168
3168
  } else if (drag.type === "row" && onResizeRow) {
3169
3169
  const deltaY = e.clientY - drag.startPos;
3170
- const newHeight = chunkYDEEINER_js.computeResizedRowHeight(
3171
- drag.initialRowHeight ?? chunkYDEEINER_js.DEFAULT_ROW_HEIGHT,
3170
+ const newHeight = chunkFJDZ7AEE_js.computeResizedRowHeight(
3171
+ drag.initialRowHeight ?? chunkFJDZ7AEE_js.DEFAULT_ROW_HEIGHT,
3172
3172
  deltaY
3173
3173
  );
3174
3174
  onResizeRow(drag.index, newHeight);
@@ -3206,7 +3206,7 @@ function TableResizeOverlay({
3206
3206
  e.stopPropagation();
3207
3207
  const table = containerRef.current?.querySelector("table");
3208
3208
  const tr = table?.querySelectorAll("tbody > tr")[index];
3209
- const actualHeight = tr?.offsetHeight ?? chunkYDEEINER_js.DEFAULT_ROW_HEIGHT;
3209
+ const actualHeight = tr?.offsetHeight ?? chunkFJDZ7AEE_js.DEFAULT_ROW_HEIGHT;
3210
3210
  document.body.style.cursor = "row-resize";
3211
3211
  document.body.style.userSelect = "none";
3212
3212
  dragRef.current = {
@@ -3253,7 +3253,7 @@ function renderTableFromTableData(element, textStyle, options) {
3253
3253
  colorScheme: options?.styleCtx?.theme?.colorScheme,
3254
3254
  fontScheme: options?.styleCtx?.theme?.fontScheme
3255
3255
  };
3256
- const cellCss = (cell, rowIndex, cellIndex) => chunkYDEEINER_js.tableCellCss(
3256
+ const cellCss = (cell, rowIndex, cellIndex) => chunkFJDZ7AEE_js.tableCellCss(
3257
3257
  tableData,
3258
3258
  cell,
3259
3259
  { rowIndex, cellIndex, rowCount, columnCount },
@@ -3266,7 +3266,7 @@ function renderTableFromTableData(element, textStyle, options) {
3266
3266
  }
3267
3267
  const first = selectedCell.selectedCells[0];
3268
3268
  const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
3269
- return chunkYDEEINER_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableData);
3269
+ return chunkFJDZ7AEE_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableData);
3270
3270
  })();
3271
3271
  return /* @__PURE__ */ jsxRuntime.jsx(
3272
3272
  TableResizeOverlay,
@@ -3287,9 +3287,9 @@ function renderTableFromTableData(element, textStyle, options) {
3287
3287
  {
3288
3288
  className: "w-full h-full border-collapse table-fixed",
3289
3289
  style: {
3290
- fontFamily: chunkYDEEINER_js.DEFAULT_FONT_FAMILY,
3290
+ fontFamily: chunkFJDZ7AEE_js.DEFAULT_FONT_FAMILY,
3291
3291
  // `a:tblPr@rtl` mirrors the column order for RTL decks.
3292
- ...chunkYDEEINER_js.tableContainerCss(tableData)
3292
+ ...chunkFJDZ7AEE_js.tableContainerCss(tableData)
3293
3293
  },
3294
3294
  children: [
3295
3295
  tableData.columnWidths.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("colgroup", { children: tableData.columnWidths.map((w, ci) => /* @__PURE__ */ jsxRuntime.jsx(
@@ -3308,7 +3308,7 @@ function renderTableFromTableData(element, textStyle, options) {
3308
3308
  return null;
3309
3309
  }
3310
3310
  const isCellSelected = selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex;
3311
- const isInMultiSelection = chunkYDEEINER_js.isCellInRect(rowIndex, cellIndex, selectionRect);
3311
+ const isInMultiSelection = chunkFJDZ7AEE_js.isCellInRect(rowIndex, cellIndex, selectionRect);
3312
3312
  const isCellEditing = isCellSelected && selectedCell?.isEditing;
3313
3313
  const diag = getCellDiagonalBorders2(
3314
3314
  cell.style,
@@ -3337,7 +3337,7 @@ function renderTableFromTableData(element, textStyle, options) {
3337
3337
  }
3338
3338
  event.stopPropagation();
3339
3339
  if (event.shiftKey && selectedCell) {
3340
- const rect = chunkYDEEINER_js.computeSelectionRect(
3340
+ const rect = chunkFJDZ7AEE_js.computeSelectionRect(
3341
3341
  selectedCell.rowIndex,
3342
3342
  selectedCell.columnIndex,
3343
3343
  rowIndex,
@@ -3347,7 +3347,7 @@ function renderTableFromTableData(element, textStyle, options) {
3347
3347
  options?.onSelectCell?.({
3348
3348
  rowIndex: selectedCell.rowIndex,
3349
3349
  columnIndex: selectedCell.columnIndex,
3350
- selectedCells: chunkYDEEINER_js.rectToCells(rect)
3350
+ selectedCells: chunkFJDZ7AEE_js.rectToCells(rect)
3351
3351
  });
3352
3352
  } else {
3353
3353
  options?.onSelectCell?.({
@@ -3408,7 +3408,7 @@ function renderTableElement(element, textStyle, options) {
3408
3408
  if (tableEl2.tableData && tableEl2.tableData.rows.length > 0) {
3409
3409
  return renderTableFromTableData(tableEl2, textStyle, options);
3410
3410
  }
3411
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkSWRY3SI5_js.translationsEn["pptx.table.title"] });
3411
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkALO4ZOHQ_js.translationsEn["pptx.table.title"] });
3412
3412
  }
3413
3413
  const selectedCell = options?.selectedCell || null;
3414
3414
  const isEditable = Boolean(options?.editable);
@@ -3423,7 +3423,7 @@ function renderTableElement(element, textStyle, options) {
3423
3423
  }
3424
3424
  const first = selectedCell.selectedCells[0];
3425
3425
  const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
3426
- return chunkYDEEINER_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableEl.tableData);
3426
+ return chunkFJDZ7AEE_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableEl.tableData);
3427
3427
  })();
3428
3428
  const schemeOverrides = options?.styleCtx?.theme?.colorScheme ? options.styleCtx.theme.colorScheme : void 0;
3429
3429
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -3445,9 +3445,9 @@ function renderTableElement(element, textStyle, options) {
3445
3445
  {
3446
3446
  className: "w-full h-full border-collapse table-fixed",
3447
3447
  style: {
3448
- fontFamily: chunkYDEEINER_js.DEFAULT_FONT_FAMILY,
3448
+ fontFamily: chunkFJDZ7AEE_js.DEFAULT_FONT_FAMILY,
3449
3449
  // `a:tblPr@rtl` mirrors the column order for RTL decks.
3450
- ...chunkYDEEINER_js.tableContainerCss(tableEl.tableData)
3450
+ ...chunkFJDZ7AEE_js.tableContainerCss(tableEl.tableData)
3451
3451
  },
3452
3452
  children: [
3453
3453
  parsedTable.columnPercentages.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx("colgroup", { children: parsedTable.columnPercentages.map((percentage, columnIndex) => /* @__PURE__ */ jsxRuntime.jsx(
@@ -3504,7 +3504,7 @@ function renderTableElement(element, textStyle, options) {
3504
3504
  color: textStyle.color,
3505
3505
  ...bandStyle,
3506
3506
  ...xmlCellStyle,
3507
- ...tdCellOverride ? chunkYDEEINER_js.cellStyleToCss(tdCellOverride) : void 0,
3507
+ ...tdCellOverride ? chunkFJDZ7AEE_js.cellStyleToCss(tdCellOverride) : void 0,
3508
3508
  ...diag ? { position: "relative" } : void 0
3509
3509
  };
3510
3510
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -3514,7 +3514,7 @@ function renderTableElement(element, textStyle, options) {
3514
3514
  "border px-1 py-0.5 align-top",
3515
3515
  isEditable && hasCellSelectionHandler ? "border-blue-200/70 cursor-cell" : "border-white/30",
3516
3516
  selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex ? "ring-1 ring-inset ring-blue-500" : null,
3517
- chunkYDEEINER_js.isCellInRect(rowIndex, cellIndex, xmlSelectionRect) && !(selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex) ? "bg-blue-500/15 ring-1 ring-inset ring-blue-400/50" : null
3517
+ chunkFJDZ7AEE_js.isCellInRect(rowIndex, cellIndex, xmlSelectionRect) && !(selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex) ? "bg-blue-500/15 ring-1 ring-inset ring-blue-400/50" : null
3518
3518
  ),
3519
3519
  colSpan,
3520
3520
  rowSpan: rSpan,
@@ -3525,7 +3525,7 @@ function renderTableElement(element, textStyle, options) {
3525
3525
  }
3526
3526
  event.stopPropagation();
3527
3527
  if (event.shiftKey && selectedCell && tableEl.tableData) {
3528
- const rect = chunkYDEEINER_js.computeSelectionRect(
3528
+ const rect = chunkFJDZ7AEE_js.computeSelectionRect(
3529
3529
  selectedCell.rowIndex,
3530
3530
  selectedCell.columnIndex,
3531
3531
  rowIndex,
@@ -3535,7 +3535,7 @@ function renderTableElement(element, textStyle, options) {
3535
3535
  options?.onSelectCell?.({
3536
3536
  rowIndex: selectedCell.rowIndex,
3537
3537
  columnIndex: selectedCell.columnIndex,
3538
- selectedCells: chunkYDEEINER_js.rectToCells(rect)
3538
+ selectedCells: chunkFJDZ7AEE_js.rectToCells(rect)
3539
3539
  });
3540
3540
  } else {
3541
3541
  options?.onSelectCell?.({
@@ -3594,23 +3594,23 @@ function renderTableElement(element, textStyle, options) {
3594
3594
  );
3595
3595
  }
3596
3596
  function partAttrs(part) {
3597
- return part ? chunkYDEEINER_js.chartPartToAttrs(part) : void 0;
3597
+ return part ? chunkFJDZ7AEE_js.chartPartToAttrs(part) : void 0;
3598
3598
  }
3599
3599
  function resolveReactPalette(chartData) {
3600
3600
  if (chartData.colorPalette && chartData.colorPalette.length > 0) {
3601
3601
  return chartData.colorPalette;
3602
3602
  }
3603
- return [...chunkYDEEINER_js.getChartStylePalette(chartData.style?.styleId)];
3603
+ return [...chunkFJDZ7AEE_js.getChartStylePalette(chartData.style?.styleId)];
3604
3604
  }
3605
3605
  function buildReactChartViewModel(element) {
3606
3606
  if (element.type !== "chart" || !element.chartData) {
3607
- return chunkYDEEINER_js.buildChartViewModel(element);
3607
+ return chunkFJDZ7AEE_js.buildChartViewModel(element);
3608
3608
  }
3609
3609
  const palette = resolveReactPalette(element.chartData), themedElement = {
3610
3610
  ...element,
3611
3611
  chartData: { ...element.chartData, colorPalette: palette }
3612
3612
  };
3613
- return chunkYDEEINER_js.buildChartViewModel(themedElement);
3613
+ return chunkFJDZ7AEE_js.buildChartViewModel(themedElement);
3614
3614
  }
3615
3615
  function renderPrimitive(prim, key) {
3616
3616
  switch (prim.kind) {
@@ -3759,7 +3759,7 @@ function renderText(t, key) {
3759
3759
  );
3760
3760
  }
3761
3761
  function renderChartViewModel(elementId, vm, preserveAspectRatio = "none") {
3762
- const legendItems = chunkYDEEINER_js.computeChartLegendLayout(vm);
3762
+ const legendItems = chunkFJDZ7AEE_js.computeChartLegendLayout(vm);
3763
3763
  return /* @__PURE__ */ jsxRuntime.jsxs(
3764
3764
  "svg",
3765
3765
  {
@@ -3852,17 +3852,17 @@ function renderChartViewModel(elementId, vm, preserveAspectRatio = "none") {
3852
3852
  }
3853
3853
  function renderChartElement(element) {
3854
3854
  if (element.type !== "chart") {
3855
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkSWRY3SI5_js.translationsEn["pptx.chart.heading"] });
3855
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkALO4ZOHQ_js.translationsEn["pptx.chart.heading"] });
3856
3856
  }
3857
3857
  const chartData = element.chartData;
3858
3858
  if (!chartData || chartData.series.length === 0) {
3859
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkSWRY3SI5_js.translationsEn["pptx.chart.heading"] });
3859
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkALO4ZOHQ_js.translationsEn["pptx.chart.heading"] });
3860
3860
  }
3861
- const kind = chunkYDEEINER_js.resolveChartKind(chartData.chartType ?? "bar");
3861
+ const kind = chunkFJDZ7AEE_js.resolveChartKind(chartData.chartType ?? "bar");
3862
3862
  return renderChartViewModel(
3863
3863
  element.id,
3864
3864
  buildReactChartViewModel(element),
3865
- chunkYDEEINER_js.chartPreserveAspectRatio(kind)
3865
+ chunkFJDZ7AEE_js.chartPreserveAspectRatio(kind)
3866
3866
  );
3867
3867
  }
3868
3868
 
@@ -3882,14 +3882,14 @@ function buildNotesPdf(pages) {
3882
3882
  notes: page.notes,
3883
3883
  slideNumber: page.slideNumber
3884
3884
  }));
3885
- const bytes = chunkYDEEINER_js.buildNotesPdfBytes(images, meta);
3885
+ const bytes = chunkFJDZ7AEE_js.buildNotesPdfBytes(images, meta);
3886
3886
  const blob = new Blob([bytes], { type: "application/pdf" });
3887
3887
  return URL.createObjectURL(blob);
3888
3888
  }
3889
3889
 
3890
3890
  // src/viewer/utils/pdf-builder-slides.ts
3891
3891
  function buildPdfFromImageData(images) {
3892
- const bytes = chunkYDEEINER_js.buildSlidesPdfBytes(images);
3892
+ const bytes = chunkFJDZ7AEE_js.buildSlidesPdfBytes(images);
3893
3893
  const blob = new Blob([bytes], { type: "application/pdf" });
3894
3894
  return URL.createObjectURL(blob);
3895
3895
  }
@@ -3898,7 +3898,7 @@ function buildPdfFromImageData(images) {
3898
3898
  var activePreview = null;
3899
3899
  function startPreviewAnimation(elementId, preset, options) {
3900
3900
  stopPreviewAnimation();
3901
- const descriptor = chunkYDEEINER_js.buildPreviewAnimation(preset, options);
3901
+ const descriptor = chunkFJDZ7AEE_js.buildPreviewAnimation(preset, options);
3902
3902
  if (!descriptor) {
3903
3903
  return;
3904
3904
  }
@@ -3911,7 +3911,7 @@ function startMotionPathPreview(elementId, path, options) {
3911
3911
  return;
3912
3912
  }
3913
3913
  const stage = domEl.offsetParent;
3914
- const descriptor = chunkYDEEINER_js.buildMotionPathPreview({
3914
+ const descriptor = chunkFJDZ7AEE_js.buildMotionPathPreview({
3915
3915
  path,
3916
3916
  slideWidth: stage?.offsetWidth || DEFAULT_PREVIEW_SLIDE_WIDTH,
3917
3917
  slideHeight: stage?.offsetHeight || DEFAULT_PREVIEW_SLIDE_HEIGHT,