pptx-react-viewer 3.19.0 → 3.19.2

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 (138) hide show
  1. package/CHANGELOG.md +82 -0
  2. package/dist/{AiChatPanel-WDVU4RIM.js → AiChatPanel-KILEXOPT.js} +24 -24
  3. package/dist/AiChatPanel-KILEXOPT.js.br +0 -0
  4. package/dist/AiChatPanel-KILEXOPT.js.gz +0 -0
  5. package/dist/{AiChatPanel-3M7XWTVE.mjs → AiChatPanel-ZH52BQBE.mjs} +3 -3
  6. package/dist/AiChatPanel-ZH52BQBE.mjs.br +0 -0
  7. package/dist/AiChatPanel-ZH52BQBE.mjs.gz +0 -0
  8. package/dist/{Area3DChartScene-N5KPQFC6.js → Area3DChartScene-HS7EBQLQ.js} +2 -2
  9. package/dist/Area3DChartScene-HS7EBQLQ.js.br +0 -0
  10. package/dist/Area3DChartScene-HS7EBQLQ.js.gz +0 -0
  11. package/dist/{Area3DChartScene-CTVWVXNW.mjs → Area3DChartScene-UHN7ZOZT.mjs} +1 -1
  12. package/dist/{Area3DChartScene-CTVWVXNW.mjs.br → Area3DChartScene-UHN7ZOZT.mjs.br} +0 -0
  13. package/dist/Area3DChartScene-UHN7ZOZT.mjs.gz +0 -0
  14. package/dist/{Bar3DChartScene-3QRUPVPT.js → Bar3DChartScene-E57TRVUU.js} +2 -2
  15. package/dist/Bar3DChartScene-E57TRVUU.js.br +0 -0
  16. package/dist/Bar3DChartScene-E57TRVUU.js.gz +0 -0
  17. package/dist/{Bar3DChartScene-PXFSFZRX.mjs → Bar3DChartScene-TFGSYASD.mjs} +1 -1
  18. package/dist/{Bar3DChartScene-PXFSFZRX.mjs.br → Bar3DChartScene-TFGSYASD.mjs.br} +0 -0
  19. package/dist/Bar3DChartScene-TFGSYASD.mjs.gz +0 -0
  20. package/dist/{Line3DChartScene-776WLKR5.js → Line3DChartScene-NM7YYLZD.js} +2 -2
  21. package/dist/Line3DChartScene-NM7YYLZD.js.br +0 -0
  22. package/dist/Line3DChartScene-NM7YYLZD.js.gz +0 -0
  23. package/dist/{Line3DChartScene-LLL3BU4Q.mjs → Line3DChartScene-RES5D7W7.mjs} +1 -1
  24. package/dist/{Line3DChartScene-LLL3BU4Q.mjs.br → Line3DChartScene-RES5D7W7.mjs.br} +0 -0
  25. package/dist/Line3DChartScene-RES5D7W7.mjs.gz +0 -0
  26. package/dist/{Model3DScene-FMQ4FDC5.mjs → Model3DScene-6CWFGE7M.mjs} +1 -1
  27. package/dist/Model3DScene-6CWFGE7M.mjs.br +0 -0
  28. package/dist/Model3DScene-6CWFGE7M.mjs.gz +0 -0
  29. package/dist/{Model3DScene-7TM2XSJY.js → Model3DScene-SL3QF63O.js} +2 -2
  30. package/dist/Model3DScene-SL3QF63O.js.br +0 -0
  31. package/dist/Model3DScene-SL3QF63O.js.gz +0 -0
  32. package/dist/{PieChart3DScene-2YNQ5J7A.mjs → PieChart3DScene-QYJUOYMB.mjs} +1 -1
  33. package/dist/{PieChart3DScene-2YNQ5J7A.mjs.br → PieChart3DScene-QYJUOYMB.mjs.br} +0 -0
  34. package/dist/PieChart3DScene-QYJUOYMB.mjs.gz +0 -0
  35. package/dist/{PieChart3DScene-DZY4MQCG.js → PieChart3DScene-WIVYOQUQ.js} +2 -2
  36. package/dist/PieChart3DScene-WIVYOQUQ.js.br +0 -0
  37. package/dist/PieChart3DScene-WIVYOQUQ.js.gz +0 -0
  38. package/dist/{SurfaceChart3DScene-G3MWPEL3.js → SurfaceChart3DScene-QCUYYQBZ.js} +2 -2
  39. package/dist/SurfaceChart3DScene-QCUYYQBZ.js.br +0 -0
  40. package/dist/SurfaceChart3DScene-QCUYYQBZ.js.gz +0 -0
  41. package/dist/{SurfaceChart3DScene-XJHLH2EM.mjs → SurfaceChart3DScene-Y2LF73QQ.mjs} +1 -1
  42. package/dist/{SurfaceChart3DScene-XJHLH2EM.mjs.br → SurfaceChart3DScene-Y2LF73QQ.mjs.br} +0 -0
  43. package/dist/SurfaceChart3DScene-Y2LF73QQ.mjs.gz +0 -0
  44. package/dist/{chunk-2QWLARCW.js → chunk-2LK3OHAN.js} +824 -813
  45. package/dist/chunk-2LK3OHAN.js.br +0 -0
  46. package/dist/chunk-2LK3OHAN.js.gz +0 -0
  47. package/dist/{chunk-7VFH2FRI.mjs → chunk-7XJ7I6TJ.mjs} +11 -6
  48. package/dist/chunk-7XJ7I6TJ.mjs.br +0 -0
  49. package/dist/chunk-7XJ7I6TJ.mjs.gz +0 -0
  50. package/dist/{chunk-V3BOQ52U.mjs → chunk-ATKAU2J4.mjs} +64 -56
  51. package/dist/chunk-ATKAU2J4.mjs.br +0 -0
  52. package/dist/chunk-ATKAU2J4.mjs.gz +0 -0
  53. package/dist/{chunk-36O4SE4R.js → chunk-F7VYECOL.js} +5 -5
  54. package/dist/chunk-F7VYECOL.js.br +0 -0
  55. package/dist/chunk-F7VYECOL.js.gz +0 -0
  56. package/dist/{chunk-F552WUJN.mjs → chunk-GULL4H2I.mjs} +354 -206
  57. package/dist/chunk-GULL4H2I.mjs.br +0 -0
  58. package/dist/chunk-GULL4H2I.mjs.gz +0 -0
  59. package/dist/{chunk-3R5A2E2K.mjs → chunk-M5BAPEQL.mjs} +50 -39
  60. package/dist/chunk-M5BAPEQL.mjs.br +0 -0
  61. package/dist/chunk-M5BAPEQL.mjs.gz +0 -0
  62. package/dist/{chunk-4KKKJ5MJ.mjs → chunk-NEMPFYZ5.mjs} +1 -1
  63. package/dist/chunk-NEMPFYZ5.mjs.br +0 -0
  64. package/dist/chunk-NEMPFYZ5.mjs.gz +0 -0
  65. package/dist/{chunk-6DYDAKHG.js → chunk-RPPLJQ6R.js} +1102 -1094
  66. package/dist/chunk-RPPLJQ6R.js.br +0 -0
  67. package/dist/chunk-RPPLJQ6R.js.gz +0 -0
  68. package/dist/{chunk-V6S72IRP.js → chunk-YH4ODPSH.js} +182 -177
  69. package/dist/chunk-YH4ODPSH.js.br +0 -0
  70. package/dist/chunk-YH4ODPSH.js.gz +0 -0
  71. package/dist/{chunk-LBMPJYAR.js → chunk-ZUIM5737.js} +356 -205
  72. package/dist/chunk-ZUIM5737.js.br +0 -0
  73. package/dist/chunk-ZUIM5737.js.gz +0 -0
  74. package/dist/index.d.ts +38 -0
  75. package/dist/index.js +46 -46
  76. package/dist/index.js.br +0 -0
  77. package/dist/index.js.gz +0 -0
  78. package/dist/index.mjs +5 -5
  79. package/dist/index.mjs.br +0 -0
  80. package/dist/index.mjs.gz +0 -0
  81. package/dist/internals.d.ts +38 -0
  82. package/dist/internals.js +104 -104
  83. package/dist/internals.js.br +0 -0
  84. package/dist/internals.js.gz +0 -0
  85. package/dist/internals.mjs +3 -3
  86. package/dist/internals.mjs.br +0 -0
  87. package/dist/internals.mjs.gz +0 -0
  88. package/dist/viewer/index.d.ts +38 -0
  89. package/dist/viewer/index.js +26 -26
  90. package/dist/viewer/index.js.br +0 -0
  91. package/dist/viewer/index.js.gz +0 -0
  92. package/dist/viewer/index.mjs +5 -5
  93. package/dist/viewer/index.mjs.br +0 -0
  94. package/dist/viewer/index.mjs.gz +0 -0
  95. package/package.json +1 -1
  96. package/dist/AiChatPanel-3M7XWTVE.mjs.br +0 -0
  97. package/dist/AiChatPanel-3M7XWTVE.mjs.gz +0 -0
  98. package/dist/AiChatPanel-WDVU4RIM.js.br +0 -0
  99. package/dist/AiChatPanel-WDVU4RIM.js.gz +0 -0
  100. package/dist/Area3DChartScene-CTVWVXNW.mjs.gz +0 -0
  101. package/dist/Area3DChartScene-N5KPQFC6.js.br +0 -0
  102. package/dist/Area3DChartScene-N5KPQFC6.js.gz +0 -0
  103. package/dist/Bar3DChartScene-3QRUPVPT.js.br +0 -0
  104. package/dist/Bar3DChartScene-3QRUPVPT.js.gz +0 -0
  105. package/dist/Bar3DChartScene-PXFSFZRX.mjs.gz +0 -0
  106. package/dist/Line3DChartScene-776WLKR5.js.br +0 -0
  107. package/dist/Line3DChartScene-776WLKR5.js.gz +0 -0
  108. package/dist/Line3DChartScene-LLL3BU4Q.mjs.gz +0 -0
  109. package/dist/Model3DScene-7TM2XSJY.js.br +0 -0
  110. package/dist/Model3DScene-7TM2XSJY.js.gz +0 -0
  111. package/dist/Model3DScene-FMQ4FDC5.mjs.br +0 -0
  112. package/dist/Model3DScene-FMQ4FDC5.mjs.gz +0 -0
  113. package/dist/PieChart3DScene-2YNQ5J7A.mjs.gz +0 -0
  114. package/dist/PieChart3DScene-DZY4MQCG.js.br +0 -0
  115. package/dist/PieChart3DScene-DZY4MQCG.js.gz +0 -0
  116. package/dist/SurfaceChart3DScene-G3MWPEL3.js.br +0 -0
  117. package/dist/SurfaceChart3DScene-G3MWPEL3.js.gz +0 -0
  118. package/dist/SurfaceChart3DScene-XJHLH2EM.mjs.gz +0 -0
  119. package/dist/chunk-2QWLARCW.js.br +0 -0
  120. package/dist/chunk-2QWLARCW.js.gz +0 -0
  121. package/dist/chunk-36O4SE4R.js.br +0 -0
  122. package/dist/chunk-36O4SE4R.js.gz +0 -0
  123. package/dist/chunk-3R5A2E2K.mjs.br +0 -0
  124. package/dist/chunk-3R5A2E2K.mjs.gz +0 -0
  125. package/dist/chunk-4KKKJ5MJ.mjs.br +0 -0
  126. package/dist/chunk-4KKKJ5MJ.mjs.gz +0 -0
  127. package/dist/chunk-6DYDAKHG.js.br +0 -0
  128. package/dist/chunk-6DYDAKHG.js.gz +0 -0
  129. package/dist/chunk-7VFH2FRI.mjs.br +0 -0
  130. package/dist/chunk-7VFH2FRI.mjs.gz +0 -0
  131. package/dist/chunk-F552WUJN.mjs.br +0 -0
  132. package/dist/chunk-F552WUJN.mjs.gz +0 -0
  133. package/dist/chunk-LBMPJYAR.js.br +0 -0
  134. package/dist/chunk-LBMPJYAR.js.gz +0 -0
  135. package/dist/chunk-V3BOQ52U.mjs.br +0 -0
  136. package/dist/chunk-V3BOQ52U.mjs.gz +0 -0
  137. package/dist/chunk-V6S72IRP.js.br +0 -0
  138. package/dist/chunk-V6S72IRP.js.gz +0 -0
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkLBMPJYAR_js = require('./chunk-LBMPJYAR.js');
3
+ var chunkZUIM5737_js = require('./chunk-ZUIM5737.js');
4
4
  var chunkBRJN3ZMG_js = require('./chunk-BRJN3ZMG.js');
5
5
  var clsx = require('clsx');
6
6
  var tailwindMerge = require('tailwind-merge');
@@ -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 chunkLBMPJYAR_js.getAnimationInitialStyle(preset, nativeAnimation);
18
+ return chunkZUIM5737_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 chunkLBMPJYAR_js.cloneHistorySnapshot(snapshot);
26
+ return chunkZUIM5737_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 = chunkLBMPJYAR_js.VIEWER_SHORTCUT_REFERENCE;
64
+ var SHORTCUT_REFERENCE_ITEMS = chunkZUIM5737_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 = chunkLBMPJYAR_js.SHAPE_PRESET_DEFS.map(
92
+ var SHAPE_PRESETS = chunkZUIM5737_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 = chunkLBMPJYAR_js.STROKE_DASH_OPTIONS;
117
+ var STROKE_DASH_OPTIONS2 = chunkZUIM5737_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 (!chunkLBMPJYAR_js.hasShapeProperties(element)) {
226
+ if (!chunkZUIM5737_js.hasShapeProperties(element)) {
227
227
  return false;
228
228
  }
229
229
  const st = getShapeType(element.shapeType);
@@ -232,22 +232,25 @@ function isConnectorOrLineElement(element) {
232
232
 
233
233
  // src/viewer/utils/image-style.ts
234
234
  function getImageMaskStyle(element) {
235
- if (!chunkLBMPJYAR_js.hasShapeProperties(element)) {
235
+ if (!chunkZUIM5737_js.hasShapeProperties(element)) {
236
236
  return void 0;
237
237
  }
238
- const geometry = chunkLBMPJYAR_js.resolveShapeGeometry(element);
238
+ const geometry = chunkZUIM5737_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 = chunkLBMPJYAR_js.getImageFitStyle(element);
245
+ const fit = chunkZUIM5737_js.getImageFitStyle(element);
246
+ const counterTransform = chunkZUIM5737_js.getImageFillCounterTransform(element, Boolean(fit.transform));
246
247
  return {
247
- // A translated/scaled crop must be masked by its stationary wrapper, not
248
- // by the moving bitmap itself.
249
- ...fit.transform ? {} : getImageMaskStyle(element) || {},
250
- ...fit
248
+ // A translated/scaled crop, or a rotWithShape=false counter-transform,
249
+ // must be masked by the stationary wrapper, not by the moving/counter-
250
+ // transformed bitmap itself.
251
+ ...fit.transform || counterTransform ? {} : getImageMaskStyle(element) || {},
252
+ ...fit,
253
+ ...counterTransform ? { transform: counterTransform, transformOrigin: "center" } : {}
251
254
  };
252
255
  }
253
256
  function getImageSurfaceMaskStyle(element) {
@@ -259,7 +262,7 @@ function getImageSurfaceMaskStyle(element) {
259
262
  };
260
263
  }
261
264
  function getImageSurfaceStyle(element) {
262
- const fill = chunkLBMPJYAR_js.hasShapeProperties(element) ? chunkLBMPJYAR_js.getComputedFillStyle(element) : void 0;
265
+ const fill = chunkZUIM5737_js.hasShapeProperties(element) ? chunkZUIM5737_js.getComputedFillStyle(element) : void 0;
263
266
  return {
264
267
  position: "absolute",
265
268
  inset: 0,
@@ -272,13 +275,13 @@ function getImageSurfaceStyle(element) {
272
275
  };
273
276
  }
274
277
  function getCropShapeClipPath2(element) {
275
- if (!chunkLBMPJYAR_js.isImageLikeElement(element)) {
278
+ if (!chunkZUIM5737_js.isImageLikeElement(element)) {
276
279
  return void 0;
277
280
  }
278
- return chunkLBMPJYAR_js.getCropShapeClipPath(element.cropShape, element.width, element.height);
281
+ return chunkZUIM5737_js.getCropShapeClipPath(element.cropShape, element.width, element.height);
279
282
  }
280
283
  function getImageTilingStyle2(element) {
281
- return chunkLBMPJYAR_js.getImageTilingStyle(element);
284
+ return chunkZUIM5737_js.getImageTilingStyle(element);
282
285
  }
283
286
 
284
287
  // src/viewer/utils/geometry-image.ts
@@ -410,7 +413,7 @@ function VideoWithMetadata({
410
413
  {
411
414
  ref: mediaRef,
412
415
  className: "w-full h-full pointer-events-auto",
413
- style: isFullScreen ? { objectFit: "cover" } : chunkLBMPJYAR_js.getImageFitStyle(element),
416
+ style: isFullScreen ? { objectFit: "cover" } : chunkZUIM5737_js.getImageFitStyle(element),
414
417
  controls: showTransport,
415
418
  preload: "metadata",
416
419
  playsInline: true,
@@ -467,7 +470,7 @@ function PresentationMediaController({
467
470
  const [isMediaPlaying, setIsMediaPlaying] = React7.useState(false);
468
471
  const trimStartSec = element.trimStartMs !== void 0 ? element.trimStartMs / 1e3 : 0;
469
472
  const hideWhenNotPlaying = isPresentationMode && element.hideWhenNotPlaying === true;
470
- const { volume: playbackVolume, playbackRate } = chunkLBMPJYAR_js.mediaPlaybackAttributes({
473
+ const { volume: playbackVolume, playbackRate } = chunkZUIM5737_js.mediaPlaybackAttributes({
471
474
  loop: element.loop,
472
475
  volume: element.volume,
473
476
  playbackSpeed: element.playbackSpeed
@@ -515,7 +518,7 @@ function PresentationMediaController({
515
518
  if (!el || !isPresentationMode) {
516
519
  return;
517
520
  }
518
- return chunkLBMPJYAR_js.scheduleMediaTrimAndFade(el, {
521
+ return chunkZUIM5737_js.scheduleMediaTrimAndFade(el, {
519
522
  trimStartMs: element.trimStartMs,
520
523
  trimEndMs: element.trimEndMs,
521
524
  fadeInDuration: element.fadeInDuration,
@@ -536,7 +539,7 @@ function PresentationMediaController({
536
539
  }
537
540
  if (element.playAcrossSlides && element.mediaType === "audio") {
538
541
  const dataUrl = element.mediaData ?? resolvedDataUrl;
539
- if (chunkLBMPJYAR_js.registerCrossSlideAudio(element, dataUrl)) {
542
+ if (chunkZUIM5737_js.registerCrossSlideAudio(element, dataUrl)) {
540
543
  return;
541
544
  }
542
545
  }
@@ -617,17 +620,17 @@ function Badge({
617
620
  "div",
618
621
  {
619
622
  className: `absolute inset-0 flex flex-col items-center justify-center ${isMissing ? "gap-1" : ""}`,
620
- ...{ [chunkLBMPJYAR_js.MEDIA_CHROME_ATTRIBUTE]: visual.badge },
623
+ ...{ [chunkZUIM5737_js.MEDIA_CHROME_ATTRIBUTE]: visual.badge },
621
624
  children: [
622
625
  /* @__PURE__ */ jsxRuntime.jsx(
623
626
  FallbackIcon,
624
627
  {
625
- paths: chunkLBMPJYAR_js.mediaFallbackIcon(visual, element.mediaType),
628
+ paths: chunkZUIM5737_js.mediaFallbackIcon(visual, element.mediaType),
626
629
  size: isMissing ? 32 : 48,
627
630
  className: isMissing ? "text-white/60" : "text-white/80 drop-shadow-md"
628
631
  }
629
632
  ),
630
- isMissing && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-white/60", children: label(chunkLBMPJYAR_js.mediaFallbackLabelKey(visual, element.mediaType)) })
633
+ isMissing && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-white/60", children: label(chunkZUIM5737_js.mediaFallbackLabelKey(visual, element.mediaType)) })
631
634
  ]
632
635
  }
633
636
  );
@@ -644,17 +647,17 @@ function Placeholder({
644
647
  "div",
645
648
  {
646
649
  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"}`,
647
- ...{ [chunkLBMPJYAR_js.MEDIA_CHROME_ATTRIBUTE]: visual.placeholder },
650
+ ...{ [chunkZUIM5737_js.MEDIA_CHROME_ATTRIBUTE]: visual.placeholder },
648
651
  children: [
649
652
  /* @__PURE__ */ jsxRuntime.jsx(
650
653
  FallbackIcon,
651
654
  {
652
- paths: chunkLBMPJYAR_js.mediaFallbackIcon(visual, element.mediaType),
655
+ paths: chunkZUIM5737_js.mediaFallbackIcon(visual, element.mediaType),
653
656
  size: isMissing ? 36 : element.mediaType === "audio" ? 24 : 32,
654
657
  className: isMissing ? "text-white/50" : "text-white/70"
655
658
  }
656
659
  ),
657
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: `text-[10px] ${isMissing ? "text-white/50" : "text-white/70"}`, children: label(chunkLBMPJYAR_js.mediaFallbackLabelKey(visual, element.mediaType)) })
660
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: `text-[10px] ${isMissing ? "text-white/50" : "text-white/70"}`, children: label(chunkZUIM5737_js.mediaFallbackLabelKey(visual, element.mediaType)) })
658
661
  ]
659
662
  }
660
663
  );
@@ -664,7 +667,7 @@ function renderMediaFallback({
664
667
  posterUrl,
665
668
  surface
666
669
  }) {
667
- const visual = chunkLBMPJYAR_js.mediaFallbackVisual(surface, {
670
+ const visual = chunkZUIM5737_js.mediaFallbackVisual(surface, {
668
671
  hasPoster: Boolean(posterUrl),
669
672
  missing: element.mediaMissing === true
670
673
  });
@@ -676,7 +679,7 @@ function renderMediaFallback({
676
679
  src: posterUrl,
677
680
  alt: visual.dimPoster ? chunkBRJN3ZMG_js.translationsEn["pptx.media.posterAlt"] : chunkBRJN3ZMG_js.translationsEn["pptx.media.videoPosterAlt"],
678
681
  className: `w-full h-full${visual.dimPoster ? " opacity-50" : ""}`,
679
- style: chunkLBMPJYAR_js.getImageFitStyle(element)
682
+ style: chunkZUIM5737_js.getImageFitStyle(element)
680
683
  }
681
684
  ),
682
685
  /* @__PURE__ */ jsxRuntime.jsx(Badge, { visual, element })
@@ -694,7 +697,7 @@ function renderMediaElement(element, mediaDataUrls, options) {
694
697
  const dataUrl = element.mediaData ?? (mediaPath ? mediaDataUrls.get(mediaPath) : void 0);
695
698
  const trimFragment = buildTrimFragment(element);
696
699
  const posterUrl = element.posterFrameData ?? void 0;
697
- const shouldLoop = chunkLBMPJYAR_js.mediaPlaybackAttributes(element).loop;
700
+ const shouldLoop = chunkZUIM5737_js.mediaPlaybackAttributes(element).loop;
698
701
  const shouldAutoPlay = options?.autoPlay === true || element.autoPlay === true;
699
702
  const isFullScreen = options?.fullScreen === true;
700
703
  const isPresentationMode = options?.isPresentationMode === true;
@@ -777,20 +780,20 @@ function renderMediaElement(element, mediaDataUrls, options) {
777
780
 
778
781
  // src/viewer/utils/text-utils.tsx
779
782
  function getTextStyleForElement(element, fallbackColor) {
780
- return chunkLBMPJYAR_js.buildTextBlockStyle(element, { fallbackColor });
783
+ return chunkZUIM5737_js.buildTextBlockStyle(element, { fallbackColor });
781
784
  }
782
785
 
783
786
  // src/viewer/utils/text-layout.tsx
784
787
  function getTextLayoutStyle(element) {
785
- if (!chunkLBMPJYAR_js.hasTextProperties(element)) {
788
+ if (!chunkZUIM5737_js.hasTextProperties(element)) {
786
789
  return {};
787
790
  }
788
- const writingMode = chunkLBMPJYAR_js.toCssWritingMode(element.textStyle?.textDirection);
789
- const textOrientation = chunkLBMPJYAR_js.toCssTextOrientation(element.textStyle?.textDirection);
790
- const verticalDirection = chunkLBMPJYAR_js.toCssVerticalDirection(element.textStyle?.textDirection);
791
+ const writingMode = chunkZUIM5737_js.toCssWritingMode(element.textStyle?.textDirection);
792
+ const textOrientation = chunkZUIM5737_js.toCssTextOrientation(element.textStyle?.textDirection);
793
+ const verticalDirection = chunkZUIM5737_js.toCssVerticalDirection(element.textStyle?.textDirection);
791
794
  const textWrapNone = element.textStyle?.textWrap === "none";
792
795
  const shapeAutoFitTextBox = element.textStyle?.autoFitMode === "shrink" && (element.type === "text" || element.locks?.txBox === true);
793
- const hasParagraphIndents = chunkLBMPJYAR_js.hasTextProperties(element) && element.paragraphIndents && element.paragraphIndents.length > 0;
796
+ const hasParagraphIndents = chunkZUIM5737_js.hasTextProperties(element) && element.paragraphIndents && element.paragraphIndents.length > 0;
794
797
  const paragraphMarginLeft = element.textStyle?.paragraphMarginLeft;
795
798
  const paragraphIndent = element.textStyle?.paragraphIndent;
796
799
  const marginLeft = !hasParagraphIndents && typeof paragraphMarginLeft === "number" && paragraphMarginLeft !== 0 ? paragraphMarginLeft : void 0;
@@ -799,7 +802,7 @@ function getTextLayoutStyle(element) {
799
802
  const bodyBottom = element.textStyle?.bodyInsetBottom ?? DEFAULT_BODY_INSET_TB_PX;
800
803
  return {
801
804
  // Columns / flex anchoring / anchorCtr / tab-size / kinsoku, from shared.
802
- ...chunkLBMPJYAR_js.buildTextBodyLayoutStyle(element),
805
+ ...chunkZUIM5737_js.buildTextBodyLayoutStyle(element),
803
806
  // Body inset only. Paragraph spacing (spcBef/spcAft) is applied
804
807
  // per-paragraph by the paragraph renderer, not collapsed here.
805
808
  paddingTop: bodyTop,
@@ -827,7 +830,7 @@ function getTextLayoutStyle(element) {
827
830
 
828
831
  // src/viewer/utils/text-effects.tsx
829
832
  function buildTextBody3DSceneStyle2(textStyle, elementSize) {
830
- return chunkLBMPJYAR_js.buildTextBody3DSceneStyle(textStyle, elementSize);
833
+ return chunkZUIM5737_js.buildTextBody3DSceneStyle(textStyle, elementSize);
831
834
  }
832
835
 
833
836
  // src/viewer/utils/text-warp-css.tsx
@@ -1012,13 +1015,13 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
1012
1015
  if (!subElementAnimStates || subElementAnimStates.size === 0) {
1013
1016
  return renderedSegments;
1014
1017
  }
1015
- const paraKey = `${elementId}${chunkLBMPJYAR_js.TEXT_BUILD_ID_SEP}p${paraIndex}`;
1018
+ const paraKey = `${elementId}${chunkZUIM5737_js.TEXT_BUILD_ID_SEP}p${paraIndex}`;
1016
1019
  const paraState = subElementAnimStates.get(paraKey);
1017
1020
  if (paraState) {
1018
1021
  const style = buildAnimStyle(paraState);
1019
1022
  return /* @__PURE__ */ jsxRuntime.jsx("span", { "data-anim-id": paraKey, style: { display: "inline", ...style }, children: renderedSegments }, paraKey);
1020
1023
  }
1021
- const spec = chunkLBMPJYAR_js.buildTextBuildSpec(
1024
+ const spec = chunkZUIM5737_js.buildTextBuildSpec(
1022
1025
  elementId,
1023
1026
  paraIndex,
1024
1027
  paraRuns.map((run) => ({ text: run.text, style: run })),
@@ -1036,7 +1039,7 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
1036
1039
  "span",
1037
1040
  {
1038
1041
  "data-anim-id": span.animId,
1039
- style: chunkLBMPJYAR_js.textBuildSpanStyle(span),
1042
+ style: chunkZUIM5737_js.textBuildSpanStyle(span),
1040
1043
  children: content
1041
1044
  },
1042
1045
  span.animId
@@ -1047,13 +1050,13 @@ function renderUnderlineWords(text, isUnderlineWords, wordDecoration, metric, ke
1047
1050
  if (!isUnderlineWords || !text) {
1048
1051
  return inner(text, keyPrefix, metric);
1049
1052
  }
1050
- const pieces = chunkLBMPJYAR_js.splitWordsForUnderline(text);
1053
+ const pieces = chunkZUIM5737_js.splitWordsForUnderline(text);
1051
1054
  if (pieces.length === 0) {
1052
1055
  return inner(text, keyPrefix, metric);
1053
1056
  }
1054
1057
  const gapMetric = metric ? {
1055
1058
  ...metric,
1056
- nestedStyle: metric.nestedStyle ? chunkLBMPJYAR_js.stripUnderlineDecoration(metric.nestedStyle) : void 0
1059
+ nestedStyle: metric.nestedStyle ? chunkZUIM5737_js.stripUnderlineDecoration(metric.nestedStyle) : void 0
1057
1060
  } : void 0;
1058
1061
  return pieces.map((piece, i) => {
1059
1062
  const key = `${keyPrefix}-u${i}`;
@@ -1086,7 +1089,7 @@ function makeSegmentPieceRenderer(needsScriptFonts, scriptFonts, baseFontFamily,
1086
1089
  );
1087
1090
  }
1088
1091
  function renderTabbedLine(line, ctx, keyPrefix, renderPiece, nestedStyle, underlineWords = false) {
1089
- const [lineLayout] = chunkLBMPJYAR_js.buildRunTabLines(
1092
+ const [lineLayout] = chunkZUIM5737_js.buildRunTabLines(
1090
1093
  line,
1091
1094
  ctx,
1092
1095
  nestedStyle,
@@ -1105,7 +1108,7 @@ function renderScriptAwareText(text, needsScriptFonts, scriptFonts, baseFontFami
1105
1108
  if (!needsScriptFonts || !text) {
1106
1109
  return text;
1107
1110
  }
1108
- const pieces = chunkLBMPJYAR_js.splitRunByScriptFont(
1111
+ const pieces = chunkZUIM5737_js.splitRunByScriptFont(
1109
1112
  text,
1110
1113
  scriptFonts,
1111
1114
  baseFontFamily,
@@ -1122,7 +1125,7 @@ function renderMetricPieces(text, metric, keyPrefix, inner) {
1122
1125
  if (!metric || !text) {
1123
1126
  return inner(text, keyPrefix);
1124
1127
  }
1125
- const pieces = chunkLBMPJYAR_js.splitRunForMetrics(text, metric.font);
1128
+ const pieces = chunkZUIM5737_js.splitRunForMetrics(text, metric.font);
1126
1129
  if (pieces.length <= 1) {
1127
1130
  return inner(text, keyPrefix);
1128
1131
  }
@@ -1131,7 +1134,7 @@ function renderMetricPieces(text, metric, keyPrefix, inner) {
1131
1134
  {
1132
1135
  style: {
1133
1136
  ...metric.nestedStyle,
1134
- letterSpacing: chunkLBMPJYAR_js.pieceLetterSpacing(metric.authoredPx, piece.tracking)
1137
+ letterSpacing: chunkZUIM5737_js.pieceLetterSpacing(metric.authoredPx, piece.tracking)
1135
1138
  },
1136
1139
  children: inner(piece.text, `${keyPrefix}-w${i}`)
1137
1140
  },
@@ -1207,8 +1210,8 @@ function renderSegmentContent(elementId, segmentIndex, textValue, lines, needsSc
1207
1210
  });
1208
1211
  }
1209
1212
  function renderEquationSegment(elementId, segmentIndex, equationXml, equationNumber) {
1210
- const mathml = chunkLBMPJYAR_js.convertOmmlToMathMl(equationXml);
1211
- const safeMathml = mathml ? chunkLBMPJYAR_js.sanitizeMathMl(mathml) : "";
1213
+ const mathml = chunkZUIM5737_js.convertOmmlToMathMl(equationXml);
1214
+ const safeMathml = mathml ? chunkZUIM5737_js.sanitizeMathMl(mathml) : "";
1212
1215
  const equationContent = safeMathml ? /* @__PURE__ */ jsxRuntime.jsx(
1213
1216
  "span",
1214
1217
  {
@@ -1337,7 +1340,7 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
1337
1340
  const segmentStyle = segment?.style ?? {};
1338
1341
  const textValue = run.text;
1339
1342
  const lines = textValue.split("\n");
1340
- const resolvedSegmentColor = chunkLBMPJYAR_js.normalizeHexColor(
1343
+ const resolvedSegmentColor = chunkZUIM5737_js.normalizeHexColor(
1341
1344
  segmentStyle.color || element.textStyle?.color,
1342
1345
  run.hyperlink ? HYPERLINK_COLOR : fallbackColor
1343
1346
  );
@@ -1345,16 +1348,16 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
1345
1348
  const baselineFraction = rawBaseline === 0 ? 0 : Math.abs(rawBaseline) >= 1e3 ? rawBaseline / 1e5 : rawBaseline / 100;
1346
1349
  const baselineFontScale = baselineFraction !== 0 ? BASELINE_FONT_SCALE : 1;
1347
1350
  const rawFontSize = segmentStyle.fontSize || element.textStyle?.fontSize || DEFAULT_TEXT_FONT_SIZE;
1348
- const baseFontSize = rawFontSize * chunkLBMPJYAR_js.resolveAutoFitFontScale(element.textStyle);
1351
+ const baseFontSize = rawFontSize * chunkZUIM5737_js.resolveAutoFitFontScale(element.textStyle);
1349
1352
  const baselineShift = baselineFraction !== 0 ? `${baselineFraction * baseFontSize}px` : void 0;
1350
- const fontKerning = chunkLBMPJYAR_js.resolveFontKerning(segmentStyle.kerning, baseFontSize);
1353
+ const fontKerning = chunkZUIM5737_js.resolveFontKerning(segmentStyle.kerning, baseFontSize);
1351
1354
  const rawFontFamily = segmentStyle.fontFamily || element.textStyle?.fontFamily;
1352
- const baseFontFamily = rawFontFamily ? chunkLBMPJYAR_js.getSubstituteFontFamily(
1355
+ const baseFontFamily = rawFontFamily ? chunkZUIM5737_js.getSubstituteFontFamily(
1353
1356
  rawFontFamily,
1354
- chunkLBMPJYAR_js.parsePanoseString(segmentStyle.latinFontPanose ?? element.textStyle?.latinFontPanose)
1357
+ chunkZUIM5737_js.parsePanoseString(segmentStyle.latinFontPanose ?? element.textStyle?.latinFontPanose)
1355
1358
  ) : DEFAULT_FONT_FAMILY2;
1356
- const scriptFonts = chunkLBMPJYAR_js.resolveScriptFontSet(segmentStyle, element.textStyle, baseFontFamily);
1357
- const needsScriptFonts = chunkLBMPJYAR_js.hasDistinctScriptFonts(scriptFonts);
1359
+ const scriptFonts = chunkZUIM5737_js.resolveScriptFontSet(segmentStyle, element.textStyle, baseFontFamily);
1360
+ const needsScriptFonts = chunkZUIM5737_js.hasDistinctScriptFonts(scriptFonts);
1358
1361
  const authoredLetterSpacing = typeof segmentStyle.characterSpacing === "number" && segmentStyle.characterSpacing !== 0 ? segmentStyle.characterSpacing / 100 * (96 / 72) : 0;
1359
1362
  const metricFont = {
1360
1363
  fontFamily: baseFontFamily,
@@ -1362,7 +1365,7 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
1362
1365
  bold: Boolean(segmentStyle.bold),
1363
1366
  italic: Boolean(segmentStyle.italic)
1364
1367
  };
1365
- const nestedStyle = chunkLBMPJYAR_js.nestedTextDecorationStyle(run.style);
1368
+ const nestedStyle = chunkZUIM5737_js.nestedTextDecorationStyle(run.style);
1366
1369
  const metricContext = { font: metricFont, authoredPx: authoredLetterSpacing, nestedStyle };
1367
1370
  const spanStyle = { ...run.style };
1368
1371
  spanStyle.color = resolvedSegmentColor;
@@ -1370,11 +1373,11 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
1370
1373
  spanStyle.fontFamily = baseFontFamily;
1371
1374
  spanStyle.verticalAlign = baselineShift;
1372
1375
  spanStyle.fontKerning = fontKerning;
1373
- spanStyle.letterSpacing = chunkLBMPJYAR_js.pieceLetterSpacing(
1376
+ spanStyle.letterSpacing = chunkZUIM5737_js.pieceLetterSpacing(
1374
1377
  authoredLetterSpacing,
1375
- chunkLBMPJYAR_js.resolveMetricTrackingPx(textValue, metricFont)
1378
+ chunkZUIM5737_js.resolveMetricTrackingPx(textValue, metricFont)
1376
1379
  );
1377
- const hollow = chunkLBMPJYAR_js.hollowTextFillStyle(segmentStyle, {
1380
+ const hollow = chunkZUIM5737_js.hollowTextFillStyle(segmentStyle, {
1378
1381
  color: resolvedSegmentColor,
1379
1382
  textStroke: typeof spanStyle.WebkitTextStroke === "string" ? spanStyle.WebkitTextStroke : void 0
1380
1383
  });
@@ -1389,7 +1392,7 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
1389
1392
  const isUnderlineWords = Boolean(segmentStyle.underline) && segmentStyle.underlineStyle === "words";
1390
1393
  const wordDecoration = isUnderlineWords ? nestedStyle ?? run.underlineWordPieces?.find((piece) => piece.style)?.style : void 0;
1391
1394
  if (isUnderlineWords) {
1392
- const stripped = chunkLBMPJYAR_js.stripUnderlineDecoration(spanStyle);
1395
+ const stripped = chunkZUIM5737_js.stripUnderlineDecoration(spanStyle);
1393
1396
  spanStyle.textDecoration = stripped.textDecoration;
1394
1397
  delete spanStyle.textDecorationStyle;
1395
1398
  delete spanStyle.textDecorationThickness;
@@ -1405,7 +1408,7 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
1405
1408
  scriptFonts,
1406
1409
  baseFontFamily,
1407
1410
  findHighlights,
1408
- chunkLBMPJYAR_js.buildTabContext(
1411
+ chunkZUIM5737_js.buildTabContext(
1409
1412
  element.textStyle?.tabStops,
1410
1413
  element.textStyle?.defaultTabSize,
1411
1414
  baseFontSize,
@@ -1437,14 +1440,14 @@ function renderSeededListRun(seed, runs, segments, context) {
1437
1440
  const segment = sourceRun ? segments[seed.segmentIndex] : { text: seed.text, style: seed.style };
1438
1441
  const resolvedSegment = {
1439
1442
  ...segment,
1440
- style: chunkLBMPJYAR_js.withInlineListDecorationDefaults(segment.style, context.element.textStyle)
1443
+ style: chunkZUIM5737_js.withInlineListDecorationDefaults(segment.style, context.element.textStyle)
1441
1444
  };
1442
- const decorationCss = chunkLBMPJYAR_js.segmentStyleToCss(
1445
+ const decorationCss = chunkZUIM5737_js.segmentStyleToCss(
1443
1446
  resolvedSegment,
1444
- chunkLBMPJYAR_js.resolveAutoFitFontScale(context.element.textStyle)
1447
+ chunkZUIM5737_js.resolveAutoFitFontScale(context.element.textStyle)
1445
1448
  );
1446
- chunkLBMPJYAR_js.applyUnderlineVariant(decorationCss, resolvedSegment);
1447
- const run = sourceRun ? { ...sourceRun, style: { ...sourceRun.style, ...chunkLBMPJYAR_js.nestedTextDecorationStyle(decorationCss) } } : {
1449
+ chunkZUIM5737_js.applyUnderlineVariant(decorationCss, resolvedSegment);
1450
+ const run = sourceRun ? { ...sourceRun, style: { ...sourceRun.style, ...chunkZUIM5737_js.nestedTextDecorationStyle(decorationCss) } } : {
1448
1451
  text: seed.text,
1449
1452
  style: decorationCss,
1450
1453
  segmentIndex: seed.segmentIndex
@@ -1459,7 +1462,7 @@ function renderSeededListRun(seed, runs, segments, context) {
1459
1462
  });
1460
1463
  }
1461
1464
  function renderTextSegments(element, fallbackColor, emptyFallback, findHighlights, onHyperlinkClick, fieldContext, subElementAnimStates, segmentOverrides, requireCtrlClick, placeholderPrompt, inlineListSeed) {
1462
- if (!chunkLBMPJYAR_js.hasTextProperties(element)) {
1465
+ if (!chunkZUIM5737_js.hasTextProperties(element)) {
1463
1466
  return emptyFallback || null;
1464
1467
  }
1465
1468
  const segments = segmentOverrides ?? element.textSegments;
@@ -1469,7 +1472,7 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
1469
1472
  }
1470
1473
  return element.text || emptyFallback || "";
1471
1474
  }
1472
- const paragraphs = chunkLBMPJYAR_js.buildParagraphs(
1475
+ const paragraphs = chunkZUIM5737_js.buildParagraphs(
1473
1476
  element,
1474
1477
  fieldContext,
1475
1478
  segmentOverrides,
@@ -1615,13 +1618,13 @@ function renderBulletMarker(para, paraIndex, elementId) {
1615
1618
  );
1616
1619
  }
1617
1620
  function getDuotoneColors(element) {
1618
- if (!chunkLBMPJYAR_js.isImageLikeElement(element)) {
1621
+ if (!chunkZUIM5737_js.isImageLikeElement(element)) {
1619
1622
  return void 0;
1620
1623
  }
1621
1624
  return element.imageEffects?.duotone;
1622
1625
  }
1623
1626
  function buildLineShadowCss(element) {
1624
- if (!chunkLBMPJYAR_js.hasShapeProperties(element)) {
1627
+ if (!chunkZUIM5737_js.hasShapeProperties(element)) {
1625
1628
  return void 0;
1626
1629
  }
1627
1630
  const ss = element.shapeStyle;
@@ -1632,13 +1635,13 @@ function buildLineShadowCss(element) {
1632
1635
  const offsetY = typeof ss.lineShadowOffsetY === "number" ? ss.lineShadowOffsetY : 2;
1633
1636
  const blur = typeof ss.lineShadowBlur === "number" ? Math.max(0, ss.lineShadowBlur) : 4;
1634
1637
  const opacity = typeof ss.lineShadowOpacity === "number" ? Math.max(0, Math.min(1, ss.lineShadowOpacity)) : 0.35;
1635
- return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${chunkLBMPJYAR_js.colorWithOpacity(
1636
- chunkLBMPJYAR_js.normalizeHexColor(ss.lineShadowColor, "#000000"),
1638
+ return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${chunkZUIM5737_js.colorWithOpacity(
1639
+ chunkZUIM5737_js.normalizeHexColor(ss.lineShadowColor, "#000000"),
1637
1640
  opacity
1638
1641
  )}`;
1639
1642
  }
1640
1643
  function buildLineGlowFilter(element) {
1641
- if (!chunkLBMPJYAR_js.hasShapeProperties(element)) {
1644
+ if (!chunkZUIM5737_js.hasShapeProperties(element)) {
1642
1645
  return void 0;
1643
1646
  }
1644
1647
  const ss = element.shapeStyle;
@@ -1647,22 +1650,22 @@ function buildLineGlowFilter(element) {
1647
1650
  }
1648
1651
  const glowOpacity = typeof ss.lineGlowOpacity === "number" ? ss.lineGlowOpacity : 0.75;
1649
1652
  const glowRad = Math.round(Math.max(0, ss.lineGlowRadius));
1650
- const glowCol = chunkLBMPJYAR_js.colorWithOpacity(chunkLBMPJYAR_js.normalizeHexColor(ss.lineGlowColor, "#ffff00"), glowOpacity);
1653
+ const glowCol = chunkZUIM5737_js.colorWithOpacity(chunkZUIM5737_js.normalizeHexColor(ss.lineGlowColor, "#ffff00"), glowOpacity);
1651
1654
  return `drop-shadow(0 0 ${glowRad}px ${glowCol})`;
1652
1655
  }
1653
1656
  function getDagDuotoneFilterId(elementId) {
1654
1657
  return `dag-duotone-${elementId}`;
1655
1658
  }
1656
1659
  function hasDagDuotoneEffect(element) {
1657
- if (!chunkLBMPJYAR_js.hasShapeProperties(element)) {
1660
+ if (!chunkZUIM5737_js.hasShapeProperties(element)) {
1658
1661
  return false;
1659
1662
  }
1660
1663
  return Boolean(element.shapeStyle?.dagDuotone);
1661
1664
  }
1662
1665
  function renderDagDuotoneSvgFilter(elementId, color1, color2) {
1663
1666
  const filterId = getDagDuotoneFilterId(elementId);
1664
- const c1 = chunkLBMPJYAR_js.hexToRgbUnit(color1);
1665
- const c2 = chunkLBMPJYAR_js.hexToRgbUnit(color2);
1667
+ const c1 = chunkZUIM5737_js.hexToRgbUnit(color1);
1668
+ const c2 = chunkZUIM5737_js.hexToRgbUnit(color2);
1666
1669
  const grayscaleMatrix = [
1667
1670
  0.2126,
1668
1671
  0.7152,
@@ -1706,7 +1709,7 @@ function renderDagDuotoneSvgFilter(elementId, color1, color2) {
1706
1709
 
1707
1710
  // src/viewer/utils/shape-visual-3d.ts
1708
1711
  function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elementHeight) {
1709
- return chunkLBMPJYAR_js.build3DExtrusionData(
1712
+ return chunkZUIM5737_js.build3DExtrusionData(
1710
1713
  shape3d,
1711
1714
  scene3d,
1712
1715
  fillColor,
@@ -1715,7 +1718,7 @@ function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elemen
1715
1718
  );
1716
1719
  }
1717
1720
  function apply3dEffects2(base, scene3d, shape3d, fillColorFallback, elementSize, elementId) {
1718
- chunkLBMPJYAR_js.apply3dEffects(
1721
+ chunkZUIM5737_js.apply3dEffects(
1719
1722
  base,
1720
1723
  scene3d,
1721
1724
  shape3d,
@@ -1730,11 +1733,11 @@ function rendersCustomVectorPath(element) {
1730
1733
  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;
1731
1734
  }
1732
1735
  function rendersWedgeCalloutVector(element) {
1733
- return element.type === "shape" && chunkLBMPJYAR_js.isWedgeCalloutPresetShape(element.shapeType);
1736
+ return element.type === "shape" && chunkZUIM5737_js.isWedgeCalloutPresetShape(element.shapeType);
1734
1737
  }
1735
1738
  function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _strokeColor, animatesFill, animatesStroke, parentGroupFill) {
1736
1739
  if (element.type === "group") {
1737
- const fx2 = chunkLBMPJYAR_js.getComputedEffectStyle(element);
1740
+ const fx2 = chunkZUIM5737_js.getComputedEffectStyle(element);
1738
1741
  const groupStyle = {};
1739
1742
  if (fx2.filter) {
1740
1743
  groupStyle.filter = fx2.filter;
@@ -1744,13 +1747,13 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
1744
1747
  }
1745
1748
  return groupStyle;
1746
1749
  }
1747
- if (!chunkLBMPJYAR_js.hasShapeProperties(element)) {
1750
+ if (!chunkZUIM5737_js.hasShapeProperties(element)) {
1748
1751
  return {};
1749
1752
  }
1750
1753
  const ss = element.shapeStyle;
1751
- const fill = animatesFill ? void 0 : chunkLBMPJYAR_js.getComputedFillStyle(element, parentGroupFill);
1752
- const fx = chunkLBMPJYAR_js.getComputedEffectStyle(element);
1753
- const stroke = chunkLBMPJYAR_js.getComputedStrokeStyle(element);
1754
+ const fill = animatesFill ? void 0 : chunkZUIM5737_js.getComputedFillStyle(element, parentGroupFill);
1755
+ const fx = chunkZUIM5737_js.getComputedEffectStyle(element);
1756
+ const stroke = chunkZUIM5737_js.getComputedStrokeStyle(element);
1754
1757
  const base = {
1755
1758
  // A gradient fill REPLACES the solid fill, it does not sit on top of it;
1756
1759
  // the whole precedence lives in shared's `getComputedFillStyle`.
@@ -1789,7 +1792,7 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
1789
1792
  };
1790
1793
  Object.assign(
1791
1794
  base,
1792
- chunkLBMPJYAR_js.getAnimationColorBaseStyle(element, {
1795
+ chunkZUIM5737_js.getAnimationColorBaseStyle(element, {
1793
1796
  animatesFill,
1794
1797
  animatesStroke,
1795
1798
  parentGroupFill
@@ -1811,7 +1814,7 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
1811
1814
  },
1812
1815
  element.id
1813
1816
  );
1814
- if (rendersCustomVectorPath(element) || rendersWedgeCalloutVector(element) || chunkLBMPJYAR_js.isStrokeOnlyPresetElement(element)) {
1817
+ if (rendersCustomVectorPath(element) || rendersWedgeCalloutVector(element) || chunkZUIM5737_js.isStrokeOnlyPresetElement(element)) {
1815
1818
  base.backgroundColor = "transparent";
1816
1819
  base.backgroundImage = void 0;
1817
1820
  base.borderWidth = void 0;
@@ -1825,7 +1828,7 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
1825
1828
  if (rendersWedgeCalloutVector(element)) {
1826
1829
  return base;
1827
1830
  }
1828
- const geometry = chunkLBMPJYAR_js.resolveShapeGeometry(element);
1831
+ const geometry = chunkZUIM5737_js.resolveShapeGeometry(element);
1829
1832
  switch (geometry.kind) {
1830
1833
  case "bare":
1831
1834
  return { backgroundColor: "transparent", borderWidth: 0, borderStyle: "none" };
@@ -1849,7 +1852,7 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
1849
1852
  }
1850
1853
  }
1851
1854
  function getConnectorPathGeometry2(element) {
1852
- return chunkLBMPJYAR_js.getConnectorPathGeometry(element);
1855
+ return chunkZUIM5737_js.getConnectorPathGeometry(element);
1853
1856
  }
1854
1857
  var ARROW_SIZE_SCALE = {
1855
1858
  sm: 0.6,
@@ -1918,11 +1921,11 @@ function strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray) {
1918
1921
  strokePaint,
1919
1922
  strokeWidth,
1920
1923
  dashArray,
1921
- lineCap: chunkLBMPJYAR_js.svgLineCap(shapeStyle?.lineCap),
1924
+ lineCap: chunkZUIM5737_js.svgLineCap(shapeStyle?.lineCap),
1922
1925
  lineJoin,
1923
1926
  miterLimit,
1924
- offsets: chunkLBMPJYAR_js.getCompoundLineOffsets(shapeStyle?.compoundLine, strokeWidth),
1925
- widths: chunkLBMPJYAR_js.getCompoundLineWidths(shapeStyle?.compoundLine, strokeWidth)
1927
+ offsets: chunkZUIM5737_js.getCompoundLineOffsets(shapeStyle?.compoundLine, strokeWidth),
1928
+ widths: chunkZUIM5737_js.getCompoundLineWidths(shapeStyle?.compoundLine, strokeWidth)
1926
1929
  };
1927
1930
  }
1928
1931
  function strokeStrands(d, keyBase, ctx) {
@@ -1945,12 +1948,12 @@ function strokeStrands(d, keyBase, ctx) {
1945
1948
  }
1946
1949
  function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredPaths, shapeStyle, hasFill, fillColor, fillOpacity, strokePaint, strokeWidth, dashArray, animatesFill = false, gradient) {
1947
1950
  const ctx = strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray);
1948
- const subpaths = structuredPaths && structuredPaths.length > 0 ? chunkLBMPJYAR_js.customGeometryPathsToSvgSubpaths(structuredPaths, pathWidth, pathHeight) : void 0;
1951
+ const subpaths = structuredPaths && structuredPaths.length > 0 ? chunkZUIM5737_js.customGeometryPathsToSvgSubpaths(structuredPaths, pathWidth, pathHeight) : void 0;
1949
1952
  const needsPerSubpath = subpaths !== void 0 && subpaths.some((sp) => sp.fillMode && sp.fillMode !== "norm" || sp.stroke === false);
1950
- const gradientPaint = gradient ? chunkLBMPJYAR_js.svgGradientFillRef(gradient) : void 0;
1953
+ const gradientPaint = gradient ? chunkZUIM5737_js.svgGradientFillRef(gradient) : void 0;
1951
1954
  const nodes = [];
1952
1955
  if (subpaths && needsPerSubpath) {
1953
- const paints = chunkLBMPJYAR_js.buildSubpathPaints(subpaths, hasFill, fillColor, fillOpacity);
1956
+ const paints = chunkZUIM5737_js.buildSubpathPaints(subpaths, hasFill, fillColor, fillOpacity);
1954
1957
  paints.forEach((paint, idx) => {
1955
1958
  if (paint.fill !== "none") {
1956
1959
  const mode = subpaths[idx]?.fillMode;
@@ -1979,7 +1982,7 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
1979
1982
  "path",
1980
1983
  {
1981
1984
  d: pathData,
1982
- fill: animatesFill ? "inherit" : gradientPaint ?? chunkLBMPJYAR_js.colorWithOpacity(fillColor, fillOpacity),
1985
+ fill: animatesFill ? "inherit" : gradientPaint ?? chunkZUIM5737_js.colorWithOpacity(fillColor, fillOpacity),
1983
1986
  stroke: "none",
1984
1987
  vectorEffect: "non-scaling-stroke"
1985
1988
  },
@@ -2005,14 +2008,14 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
2005
2008
  );
2006
2009
  }
2007
2010
  function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor, animatesFill, animatesStroke) {
2008
- if (!chunkLBMPJYAR_js.hasShapeProperties(element)) {
2011
+ if (!chunkZUIM5737_js.hasShapeProperties(element)) {
2009
2012
  return null;
2010
2013
  }
2011
2014
  const normalizedType = (element.shapeType || "").toLowerCase();
2012
- const fillPaint = animatesFill ? "inherit" : chunkLBMPJYAR_js.colorWithOpacity(fillColor, element.shapeStyle?.fillOpacity);
2013
- const strokePaint = animatesStroke ? "inherit" : chunkLBMPJYAR_js.colorWithOpacity(strokeColor, element.shapeStyle?.strokeOpacity);
2014
- const dashType = chunkLBMPJYAR_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2015
- const dashArray = chunkLBMPJYAR_js.getSvgStrokeDasharray(
2015
+ const fillPaint = animatesFill ? "inherit" : chunkZUIM5737_js.colorWithOpacity(fillColor, element.shapeStyle?.fillOpacity);
2016
+ const strokePaint = animatesStroke ? "inherit" : chunkZUIM5737_js.colorWithOpacity(strokeColor, element.shapeStyle?.strokeOpacity);
2017
+ const dashType = chunkZUIM5737_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2018
+ const dashArray = chunkZUIM5737_js.getSvgStrokeDasharray(
2016
2019
  dashType,
2017
2020
  Math.max(strokeWidth, 1),
2018
2021
  element.shapeStyle?.customDashSegments
@@ -2093,13 +2096,13 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2093
2096
  // container's `background-image` is suppressed for custom geometry, so
2094
2097
  // without this the shape fell back to the parser's representative solid
2095
2098
  // and lost every fade (issue #132).
2096
- chunkLBMPJYAR_js.buildSvgGradientDef(element.shapeStyle, element.id)
2099
+ chunkZUIM5737_js.buildSvgGradientDef(element.shapeStyle, element.id)
2097
2100
  );
2098
2101
  }
2099
- if ((element.type === "image" || element.type === "picture") && strokeWidth > 0 && !chunkLBMPJYAR_js.buildStrokeOutline(element)) {
2102
+ if ((element.type === "image" || element.type === "picture") && strokeWidth > 0 && !chunkZUIM5737_js.buildStrokeOutline(element)) {
2100
2103
  const width = Math.max(element.width, 1);
2101
2104
  const height = Math.max(element.height, 1);
2102
- const geometry = chunkLBMPJYAR_js.getPresetShapeVectorGeometry(
2105
+ const geometry = chunkZUIM5737_js.getPresetShapeVectorGeometry(
2103
2106
  element.shapeType || "rect",
2104
2107
  width,
2105
2108
  height,
@@ -2127,18 +2130,18 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2127
2130
  );
2128
2131
  }
2129
2132
  }
2130
- if (element.type === "shape" && chunkLBMPJYAR_js.isWedgeCalloutPresetShape(element.shapeType)) {
2133
+ if (element.type === "shape" && chunkZUIM5737_js.isWedgeCalloutPresetShape(element.shapeType)) {
2131
2134
  const width = Math.max(element.width, 1);
2132
2135
  const height = Math.max(element.height, 1);
2133
- const geometry = chunkLBMPJYAR_js.getPresetShapeVectorGeometry(
2136
+ const geometry = chunkZUIM5737_js.getPresetShapeVectorGeometry(
2134
2137
  element.shapeType,
2135
2138
  width,
2136
2139
  height,
2137
2140
  element.shapeAdjustments
2138
2141
  );
2139
2142
  if (geometry) {
2140
- const gradient = chunkLBMPJYAR_js.buildSvgGradientDef(element.shapeStyle, element.id);
2141
- const gradientPaint = gradient ? chunkLBMPJYAR_js.svgGradientFillRef(gradient) : void 0;
2143
+ const gradient = chunkZUIM5737_js.buildSvgGradientDef(element.shapeStyle, element.id);
2144
+ const gradientPaint = gradient ? chunkZUIM5737_js.svgGradientFillRef(gradient) : void 0;
2142
2145
  return /* @__PURE__ */ jsxRuntime.jsxs(
2143
2146
  "svg",
2144
2147
  {
@@ -2171,18 +2174,18 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2171
2174
  );
2172
2175
  }
2173
2176
  }
2174
- if (chunkLBMPJYAR_js.isCalloutShape(normalizedType)) {
2177
+ if (chunkZUIM5737_js.isCalloutShape(normalizedType)) {
2175
2178
  const width = Math.max(element.width, 1);
2176
2179
  const height = Math.max(element.height, 1);
2177
- const geometry = chunkLBMPJYAR_js.getCalloutLeaderLineGeometry(
2180
+ const geometry = chunkZUIM5737_js.getCalloutLeaderLineGeometry(
2178
2181
  normalizedType,
2179
2182
  width,
2180
2183
  height,
2181
2184
  element.shapeAdjustments
2182
2185
  );
2183
2186
  if (geometry && geometry.points.length >= 2) {
2184
- const leaderPath = chunkLBMPJYAR_js.buildCalloutLeaderLineSvgPath(geometry);
2185
- const bounds = chunkLBMPJYAR_js.getCalloutViewBoxBounds(width, height, geometry);
2187
+ const leaderPath = chunkZUIM5737_js.buildCalloutLeaderLineSvgPath(geometry);
2188
+ const bounds = chunkZUIM5737_js.getCalloutViewBoxBounds(width, height, geometry);
2186
2189
  const lineStroke = Math.max(strokeWidth, 1);
2187
2190
  const offsetLeft = bounds.minX;
2188
2191
  const offsetTop = bounds.minY;
@@ -2245,10 +2248,10 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2245
2248
  const endArrowW = element.shapeStyle?.connectorEndArrowWidth;
2246
2249
  const endArrowL = element.shapeStyle?.connectorEndArrowLength;
2247
2250
  const compoundLine = element.shapeStyle?.compoundLine;
2248
- const connectorLineCap = chunkLBMPJYAR_js.svgLineCap(element.shapeStyle?.lineCap);
2251
+ const connectorLineCap = chunkZUIM5737_js.svgLineCap(element.shapeStyle?.lineCap);
2249
2252
  const hitTargetWidth = Math.max(strokeWidth * 3, 12);
2250
- const offsets = chunkLBMPJYAR_js.getCompoundLineOffsets(compoundLine, strokeWidth);
2251
- const widths = chunkLBMPJYAR_js.getCompoundLineWidths(compoundLine, strokeWidth);
2253
+ const offsets = chunkZUIM5737_js.getCompoundLineOffsets(compoundLine, strokeWidth);
2254
+ const widths = chunkZUIM5737_js.getCompoundLineWidths(compoundLine, strokeWidth);
2252
2255
  return /* @__PURE__ */ jsxRuntime.jsxs(
2253
2256
  "svg",
2254
2257
  {
@@ -2315,15 +2318,15 @@ function parseGradientFillCss(gradFill) {
2315
2318
  }
2316
2319
  const rawStops = stops.map((gs) => {
2317
2320
  const pos = Number.parseInt(String(gs["@_pos"] || "0"), 10) / 1e3;
2318
- const color = chunkLBMPJYAR_js.parseDrawingColor(gs) ?? "#888888";
2319
- const opacity = chunkLBMPJYAR_js.parseDrawingColorOpacity(gs);
2321
+ const color = chunkZUIM5737_js.parseDrawingColor(gs) ?? "#888888";
2322
+ const opacity = chunkZUIM5737_js.parseDrawingColorOpacity(gs);
2320
2323
  return { position: pos, color, opacity };
2321
2324
  }).sort((a, b) => a.position - b.position);
2322
- const stopStrings = rawStops.map((s) => `${chunkLBMPJYAR_js.colorWithOpacity(s.color, s.opacity)} ${s.position.toFixed(1)}%`).join(", ");
2325
+ const stopStrings = rawStops.map((s) => `${chunkZUIM5737_js.colorWithOpacity(s.color, s.opacity)} ${s.position.toFixed(1)}%`).join(", ");
2323
2326
  const lin = gradFill["a:lin"];
2324
2327
  if (lin) {
2325
2328
  const angRaw = Number.parseInt(String(lin["@_ang"] || "0"), 10);
2326
- const angleDeg = Math.round(chunkLBMPJYAR_js.ooxmlGradientAngleToCssDegrees(angRaw / 6e4));
2329
+ const angleDeg = Math.round(chunkZUIM5737_js.ooxmlGradientAngleToCssDegrees(angRaw / 6e4));
2327
2330
  return `linear-gradient(${angleDeg}deg, ${stopStrings})`;
2328
2331
  }
2329
2332
  const path = gradFill["a:path"];
@@ -2337,7 +2340,7 @@ function parseGradientFillCss(gradFill) {
2337
2340
  b: Number.parseInt(String(fillToRectXml["@_b"] || "0"), 10) / 1e5
2338
2341
  } : void 0;
2339
2342
  if (pathType === "rect") {
2340
- return chunkLBMPJYAR_js.buildRectPathGradient(rawStops, void 0, fillToRect);
2343
+ return chunkZUIM5737_js.buildRectPathGradient(rawStops, void 0, fillToRect);
2341
2344
  }
2342
2345
  let cx = 50;
2343
2346
  let cy = 50;
@@ -2359,8 +2362,8 @@ function parsePatternFillCss(pattFill) {
2359
2362
  if (!pattFill) {
2360
2363
  return void 0;
2361
2364
  }
2362
- const fgColor = chunkLBMPJYAR_js.parseDrawingColor(pattFill["a:fgClr"]) ?? "#000000";
2363
- const bgColor = chunkLBMPJYAR_js.parseDrawingColor(pattFill["a:bgClr"]) ?? "#ffffff";
2365
+ const fgColor = chunkZUIM5737_js.parseDrawingColor(pattFill["a:fgClr"]) ?? "#000000";
2366
+ const bgColor = chunkZUIM5737_js.parseDrawingColor(pattFill["a:bgClr"]) ?? "#ffffff";
2364
2367
  const preset = String(pattFill["@_prst"] || "ltDnDiag");
2365
2368
  switch (preset) {
2366
2369
  case "ltHorz":
@@ -2471,11 +2474,11 @@ function parseCellBorders(cellProperties) {
2471
2474
  const prstDash = ln["a:prstDash"];
2472
2475
  const dashVal = prstDash ? String(prstDash["@_val"] || "") : void 0;
2473
2476
  const cssBorderStyle = ooxmlDashToCss(dashVal);
2474
- const color = chunkLBMPJYAR_js.parseDrawingColor(ln["a:solidFill"]);
2477
+ const color = chunkZUIM5737_js.parseDrawingColor(ln["a:solidFill"]);
2475
2478
  if (color) {
2476
- const opacity = chunkLBMPJYAR_js.parseDrawingColorOpacity(ln["a:solidFill"]);
2479
+ const opacity = chunkZUIM5737_js.parseDrawingColorOpacity(ln["a:solidFill"]);
2477
2480
  const key = `${edge.prefix}`;
2478
- borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${chunkLBMPJYAR_js.colorWithOpacity(color, opacity)}`;
2481
+ borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${chunkZUIM5737_js.colorWithOpacity(color, opacity)}`;
2479
2482
  }
2480
2483
  }
2481
2484
  return borderStyle;
@@ -2488,7 +2491,7 @@ function parseCellTextEffects(runProps) {
2488
2491
  const textShadowParts = [];
2489
2492
  const outerShdw = effectLst["a:outerShdw"];
2490
2493
  if (outerShdw) {
2491
- const shdwColor = chunkLBMPJYAR_js.parseDrawingColor(outerShdw);
2494
+ const shdwColor = chunkZUIM5737_js.parseDrawingColor(outerShdw);
2492
2495
  if (shdwColor) {
2493
2496
  const blurRad = Number.parseInt(String(outerShdw["@_blurRad"] || "0"), 10);
2494
2497
  const blurPx = blurRad > 0 ? Math.round(blurRad / 12700) : 0;
@@ -2506,7 +2509,7 @@ function parseCellTextEffects(runProps) {
2506
2509
  }
2507
2510
  const glow = effectLst["a:glow"];
2508
2511
  if (glow) {
2509
- const glowColor = chunkLBMPJYAR_js.parseDrawingColor(glow);
2512
+ const glowColor = chunkZUIM5737_js.parseDrawingColor(glow);
2510
2513
  if (glowColor) {
2511
2514
  const glowRad = Number.parseInt(String(glow["@_rad"] || "0"), 10);
2512
2515
  const glowPx = glowRad > 0 ? Math.round(glowRad / 12700) : 2;
@@ -2528,11 +2531,11 @@ function extractCellText(cellXml) {
2528
2531
  const textParts = [];
2529
2532
  const runs = ensureArrayValue(paragraph["a:r"]);
2530
2533
  runs.forEach((run) => {
2531
- textParts.push(chunkLBMPJYAR_js.xmlText(run["a:t"]) ?? "");
2534
+ textParts.push(chunkZUIM5737_js.xmlText(run["a:t"]) ?? "");
2532
2535
  });
2533
2536
  const fields = ensureArrayValue(paragraph["a:fld"]);
2534
2537
  fields.forEach((field) => {
2535
- textParts.push(chunkLBMPJYAR_js.xmlText(field["a:t"]) ?? "");
2538
+ textParts.push(chunkZUIM5737_js.xmlText(field["a:t"]) ?? "");
2536
2539
  });
2537
2540
  paragraphTexts.push(textParts.join(""));
2538
2541
  });
@@ -2576,10 +2579,10 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
2576
2579
  if (runProps?.["@_u"] !== void 0) {
2577
2580
  cellStyle.textDecorationLine = runProps["@_u"] === "sng" ? "underline" : "none";
2578
2581
  }
2579
- const runColor = chunkLBMPJYAR_js.parseDrawingColor(runProps?.["a:solidFill"], schemeColorOverrides) || chunkLBMPJYAR_js.parseDrawingColor(runProps?.["a:highlight"], schemeColorOverrides);
2582
+ const runColor = chunkZUIM5737_js.parseDrawingColor(runProps?.["a:solidFill"], schemeColorOverrides) || chunkZUIM5737_js.parseDrawingColor(runProps?.["a:highlight"], schemeColorOverrides);
2580
2583
  if (runColor) {
2581
- const opacity = chunkLBMPJYAR_js.parseDrawingColorOpacity(runProps?.["a:solidFill"]);
2582
- cellStyle.color = chunkLBMPJYAR_js.colorWithOpacity(runColor, opacity);
2584
+ const opacity = chunkZUIM5737_js.parseDrawingColorOpacity(runProps?.["a:solidFill"]);
2585
+ cellStyle.color = chunkZUIM5737_js.colorWithOpacity(runColor, opacity);
2583
2586
  }
2584
2587
  const fontFamily = runProps?.["a:latin"]?.["@_typeface"] || runProps?.["a:ea"]?.["@_typeface"] || runProps?.["a:cs"]?.["@_typeface"];
2585
2588
  if (fontFamily) {
@@ -2589,15 +2592,15 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
2589
2592
  cellStyle.textAlign = parseParagraphAlignment(paragraphProperties["@_algn"]);
2590
2593
  }
2591
2594
  const cellProperties = cellXml["a:tcPr"];
2592
- const cellFill = chunkLBMPJYAR_js.parseDrawingColor(
2595
+ const cellFill = chunkZUIM5737_js.parseDrawingColor(
2593
2596
  cellProperties?.["a:solidFill"],
2594
2597
  schemeColorOverrides
2595
2598
  );
2596
2599
  if (cellFill) {
2597
- const opacity = chunkLBMPJYAR_js.parseDrawingColorOpacity(
2600
+ const opacity = chunkZUIM5737_js.parseDrawingColorOpacity(
2598
2601
  cellProperties?.["a:solidFill"]
2599
2602
  );
2600
- cellStyle.backgroundColor = chunkLBMPJYAR_js.colorWithOpacity(cellFill, opacity);
2603
+ cellStyle.backgroundColor = chunkZUIM5737_js.colorWithOpacity(cellFill, opacity);
2601
2604
  } else {
2602
2605
  const gradCss = parseGradientFillCss(cellProperties?.["a:gradFill"]);
2603
2606
  if (gradCss) {
@@ -2612,16 +2615,16 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
2612
2615
  const edgeBorders = parseCellBorders(cellProperties);
2613
2616
  Object.assign(cellStyle, edgeBorders);
2614
2617
  if (!cellStyle.borderLeftColor && !cellStyle.borderRightColor && !cellStyle.borderTopColor && !cellStyle.borderBottomColor) {
2615
- const borderColor = chunkLBMPJYAR_js.parseDrawingColor(
2618
+ const borderColor = chunkZUIM5737_js.parseDrawingColor(
2616
2619
  cellProperties?.["a:lnL"]?.["a:solidFill"],
2617
2620
  schemeColorOverrides
2618
- ) || chunkLBMPJYAR_js.parseDrawingColor(
2621
+ ) || chunkZUIM5737_js.parseDrawingColor(
2619
2622
  cellProperties?.["a:lnR"]?.["a:solidFill"],
2620
2623
  schemeColorOverrides
2621
- ) || chunkLBMPJYAR_js.parseDrawingColor(
2624
+ ) || chunkZUIM5737_js.parseDrawingColor(
2622
2625
  cellProperties?.["a:lnT"]?.["a:solidFill"],
2623
2626
  schemeColorOverrides
2624
- ) || chunkLBMPJYAR_js.parseDrawingColor(
2627
+ ) || chunkZUIM5737_js.parseDrawingColor(
2625
2628
  cellProperties?.["a:lnB"]?.["a:solidFill"],
2626
2629
  schemeColorOverrides
2627
2630
  );
@@ -2693,7 +2696,7 @@ function getTableCellBandStyle2(element, rowIndex, cellIndex, rowCount, columnCo
2693
2696
  if (element.type !== "table") {
2694
2697
  return void 0;
2695
2698
  }
2696
- return chunkLBMPJYAR_js.getTableCellBandStyle(element.tableData, rowIndex, cellIndex, rowCount, columnCount, {
2699
+ return chunkZUIM5737_js.getTableCellBandStyle(element.tableData, rowIndex, cellIndex, rowCount, columnCount, {
2697
2700
  tableStyleMap: styleCtx?.tableStyleMap,
2698
2701
  colorScheme: styleCtx?.theme?.colorScheme,
2699
2702
  fontScheme: styleCtx?.theme?.fontScheme
@@ -2773,7 +2776,7 @@ function renderTableCellContent(cell, fallbackText) {
2773
2776
  return /* @__PURE__ */ jsxRuntime.jsx(
2774
2777
  "span",
2775
2778
  {
2776
- style: { position: "relative", ...chunkLBMPJYAR_js.cellRunStyle(run) },
2779
+ style: { position: "relative", ...chunkZUIM5737_js.cellRunStyle(run) },
2777
2780
  children: run.text
2778
2781
  },
2779
2782
  `r-${index}`
@@ -2781,7 +2784,7 @@ function renderTableCellContent(cell, fallbackText) {
2781
2784
  });
2782
2785
  }
2783
2786
  function getCellDiagonalBorders2(style, tableData, pos, styleCtx) {
2784
- return chunkLBMPJYAR_js.getCellDiagonalBorders(style, tableData, pos, {
2787
+ return chunkZUIM5737_js.getCellDiagonalBorders(style, tableData, pos, {
2785
2788
  tableStyleMap: styleCtx?.tableStyleMap,
2786
2789
  colorScheme: styleCtx?.theme?.colorScheme,
2787
2790
  fontScheme: styleCtx?.theme?.fontScheme
@@ -2914,7 +2917,7 @@ function TableResizeOverlay({
2914
2917
  const containerRef = React7.useRef(null);
2915
2918
  const [rowBounds, setRowBounds] = React7.useState([]);
2916
2919
  const dragRef = React7.useRef(null);
2917
- const colBoundaries = React7.useMemo(() => chunkLBMPJYAR_js.computeColumnBoundaries(columnWidths), [columnWidths]);
2920
+ const colBoundaries = React7.useMemo(() => chunkZUIM5737_js.computeColumnBoundaries(columnWidths), [columnWidths]);
2918
2921
  const measureRows = React7.useCallback(() => {
2919
2922
  const container = containerRef.current;
2920
2923
  if (!container) {
@@ -2961,11 +2964,11 @@ function TableResizeOverlay({
2961
2964
  const rect = containerRef.current.getBoundingClientRect();
2962
2965
  if (e.clientX !== drag.startPos && drag.type === "col" && drag.initialWidths && onResizeColumns) {
2963
2966
  const deltaProp = (e.clientX - drag.startPos) / rect.width;
2964
- onResizeColumns(chunkLBMPJYAR_js.computeResizedColumnWidths(drag.initialWidths, drag.index, deltaProp));
2967
+ onResizeColumns(chunkZUIM5737_js.computeResizedColumnWidths(drag.initialWidths, drag.index, deltaProp));
2965
2968
  } else if (e.clientY !== drag.startPos && drag.type === "row" && onResizeRow) {
2966
2969
  const deltaY = e.clientY - drag.startPos;
2967
- const newHeight = chunkLBMPJYAR_js.computeResizedRowHeight(
2968
- drag.initialRowHeight ?? chunkLBMPJYAR_js.DEFAULT_ROW_HEIGHT,
2970
+ const newHeight = chunkZUIM5737_js.computeResizedRowHeight(
2971
+ drag.initialRowHeight ?? chunkZUIM5737_js.DEFAULT_ROW_HEIGHT,
2969
2972
  deltaY
2970
2973
  );
2971
2974
  onResizeRow(drag.index, newHeight);
@@ -3003,7 +3006,7 @@ function TableResizeOverlay({
3003
3006
  e.stopPropagation();
3004
3007
  const table = containerRef.current?.querySelector("table");
3005
3008
  const tr = table?.querySelectorAll("tbody > tr")[index];
3006
- const actualHeight = tr?.offsetHeight ?? chunkLBMPJYAR_js.DEFAULT_ROW_HEIGHT;
3009
+ const actualHeight = tr?.offsetHeight ?? chunkZUIM5737_js.DEFAULT_ROW_HEIGHT;
3007
3010
  document.body.style.cursor = "row-resize";
3008
3011
  document.body.style.userSelect = "none";
3009
3012
  dragRef.current = {
@@ -3043,14 +3046,14 @@ function renderTableFromTableData(element, textStyle, options) {
3043
3046
  const rowCount = tableData.rows.length;
3044
3047
  const columnCount = tableData.columnWidths.length;
3045
3048
  const selectedCell = options?.selectedCell || null;
3046
- const isEditable = Boolean(options?.editable) && chunkLBMPJYAR_js.canDrillDown(element);
3049
+ const isEditable = Boolean(options?.editable) && chunkZUIM5737_js.canDrillDown(element);
3047
3050
  const hasCellSelectionHandler = typeof options?.onSelectCell === "function";
3048
3051
  const sharedCtx = {
3049
3052
  tableStyleMap: options?.styleCtx?.tableStyleMap,
3050
3053
  colorScheme: options?.styleCtx?.theme?.colorScheme,
3051
3054
  fontScheme: options?.styleCtx?.theme?.fontScheme
3052
3055
  };
3053
- const cellCss = (cell, rowIndex, cellIndex) => chunkLBMPJYAR_js.tableCellCss(
3056
+ const cellCss = (cell, rowIndex, cellIndex) => chunkZUIM5737_js.tableCellCss(
3054
3057
  tableData,
3055
3058
  cell,
3056
3059
  { rowIndex, cellIndex, rowCount, columnCount },
@@ -3063,7 +3066,7 @@ function renderTableFromTableData(element, textStyle, options) {
3063
3066
  }
3064
3067
  const first = selectedCell.selectedCells[0];
3065
3068
  const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
3066
- return chunkLBMPJYAR_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableData);
3069
+ return chunkZUIM5737_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableData);
3067
3070
  })();
3068
3071
  return /* @__PURE__ */ jsxRuntime.jsx(
3069
3072
  TableResizeOverlay,
@@ -3084,9 +3087,9 @@ function renderTableFromTableData(element, textStyle, options) {
3084
3087
  {
3085
3088
  className: "w-full h-full border-collapse table-fixed",
3086
3089
  style: {
3087
- fontFamily: chunkLBMPJYAR_js.DEFAULT_FONT_FAMILY,
3090
+ fontFamily: chunkZUIM5737_js.DEFAULT_FONT_FAMILY,
3088
3091
  // `a:tblPr@rtl` mirrors the column order for RTL decks.
3089
- ...chunkLBMPJYAR_js.tableContainerCss(tableData)
3092
+ ...chunkZUIM5737_js.tableContainerCss(tableData)
3090
3093
  },
3091
3094
  children: [
3092
3095
  tableData.columnWidths.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("colgroup", { children: tableData.columnWidths.map((w, ci) => /* @__PURE__ */ jsxRuntime.jsx(
@@ -3105,7 +3108,7 @@ function renderTableFromTableData(element, textStyle, options) {
3105
3108
  return null;
3106
3109
  }
3107
3110
  const isCellSelected = selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex;
3108
- const isInMultiSelection = chunkLBMPJYAR_js.isCellInRect(rowIndex, cellIndex, selectionRect);
3111
+ const isInMultiSelection = chunkZUIM5737_js.isCellInRect(rowIndex, cellIndex, selectionRect);
3109
3112
  const isCellEditing = isCellSelected && selectedCell?.isEditing;
3110
3113
  const diag = getCellDiagonalBorders2(
3111
3114
  cell.style,
@@ -3134,7 +3137,7 @@ function renderTableFromTableData(element, textStyle, options) {
3134
3137
  }
3135
3138
  event.stopPropagation();
3136
3139
  if (event.shiftKey && selectedCell) {
3137
- const rect = chunkLBMPJYAR_js.computeSelectionRect(
3140
+ const rect = chunkZUIM5737_js.computeSelectionRect(
3138
3141
  selectedCell.rowIndex,
3139
3142
  selectedCell.columnIndex,
3140
3143
  rowIndex,
@@ -3144,7 +3147,7 @@ function renderTableFromTableData(element, textStyle, options) {
3144
3147
  options?.onSelectCell?.({
3145
3148
  rowIndex: selectedCell.rowIndex,
3146
3149
  columnIndex: selectedCell.columnIndex,
3147
- selectedCells: chunkLBMPJYAR_js.rectToCells(rect)
3150
+ selectedCells: chunkZUIM5737_js.rectToCells(rect)
3148
3151
  });
3149
3152
  } else {
3150
3153
  options?.onSelectCell?.({
@@ -3208,7 +3211,7 @@ function renderTableElement(element, textStyle, options) {
3208
3211
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkBRJN3ZMG_js.translationsEn["pptx.table.title"] });
3209
3212
  }
3210
3213
  const selectedCell = options?.selectedCell || null;
3211
- const isEditable = Boolean(options?.editable) && chunkLBMPJYAR_js.canDrillDown(element);
3214
+ const isEditable = Boolean(options?.editable) && chunkZUIM5737_js.canDrillDown(element);
3212
3215
  const hasCellSelectionHandler = typeof options?.onSelectCell === "function";
3213
3216
  const tableEl = element;
3214
3217
  const xmlSelectionRect = (() => {
@@ -3220,7 +3223,7 @@ function renderTableElement(element, textStyle, options) {
3220
3223
  }
3221
3224
  const first = selectedCell.selectedCells[0];
3222
3225
  const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
3223
- return chunkLBMPJYAR_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableEl.tableData);
3226
+ return chunkZUIM5737_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableEl.tableData);
3224
3227
  })();
3225
3228
  const schemeOverrides = options?.styleCtx?.theme?.colorScheme ? options.styleCtx.theme.colorScheme : void 0;
3226
3229
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -3242,9 +3245,9 @@ function renderTableElement(element, textStyle, options) {
3242
3245
  {
3243
3246
  className: "w-full h-full border-collapse table-fixed",
3244
3247
  style: {
3245
- fontFamily: chunkLBMPJYAR_js.DEFAULT_FONT_FAMILY,
3248
+ fontFamily: chunkZUIM5737_js.DEFAULT_FONT_FAMILY,
3246
3249
  // `a:tblPr@rtl` mirrors the column order for RTL decks.
3247
- ...chunkLBMPJYAR_js.tableContainerCss(tableEl.tableData)
3250
+ ...chunkZUIM5737_js.tableContainerCss(tableEl.tableData)
3248
3251
  },
3249
3252
  children: [
3250
3253
  parsedTable.columnPercentages.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx("colgroup", { children: parsedTable.columnPercentages.map((percentage, columnIndex) => /* @__PURE__ */ jsxRuntime.jsx(
@@ -3301,7 +3304,7 @@ function renderTableElement(element, textStyle, options) {
3301
3304
  color: textStyle.color,
3302
3305
  ...bandStyle,
3303
3306
  ...xmlCellStyle,
3304
- ...tdCellOverride ? chunkLBMPJYAR_js.cellStyleToCss(tdCellOverride) : void 0,
3307
+ ...tdCellOverride ? chunkZUIM5737_js.cellStyleToCss(tdCellOverride) : void 0,
3305
3308
  ...diag ? { position: "relative" } : void 0
3306
3309
  };
3307
3310
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -3311,7 +3314,7 @@ function renderTableElement(element, textStyle, options) {
3311
3314
  "border px-1 py-0.5 align-top",
3312
3315
  isEditable && hasCellSelectionHandler ? "border-blue-200/70 cursor-cell" : "border-white/30",
3313
3316
  selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex ? "ring-1 ring-inset ring-blue-500" : null,
3314
- chunkLBMPJYAR_js.isCellInRect(rowIndex, cellIndex, xmlSelectionRect) && !(selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex) ? "bg-blue-500/15 ring-1 ring-inset ring-blue-400/50" : null
3317
+ chunkZUIM5737_js.isCellInRect(rowIndex, cellIndex, xmlSelectionRect) && !(selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex) ? "bg-blue-500/15 ring-1 ring-inset ring-blue-400/50" : null
3315
3318
  ),
3316
3319
  colSpan,
3317
3320
  rowSpan: rSpan,
@@ -3322,7 +3325,7 @@ function renderTableElement(element, textStyle, options) {
3322
3325
  }
3323
3326
  event.stopPropagation();
3324
3327
  if (event.shiftKey && selectedCell && tableEl.tableData) {
3325
- const rect = chunkLBMPJYAR_js.computeSelectionRect(
3328
+ const rect = chunkZUIM5737_js.computeSelectionRect(
3326
3329
  selectedCell.rowIndex,
3327
3330
  selectedCell.columnIndex,
3328
3331
  rowIndex,
@@ -3332,7 +3335,7 @@ function renderTableElement(element, textStyle, options) {
3332
3335
  options?.onSelectCell?.({
3333
3336
  rowIndex: selectedCell.rowIndex,
3334
3337
  columnIndex: selectedCell.columnIndex,
3335
- selectedCells: chunkLBMPJYAR_js.rectToCells(rect)
3338
+ selectedCells: chunkZUIM5737_js.rectToCells(rect)
3336
3339
  });
3337
3340
  } else {
3338
3341
  options?.onSelectCell?.({
@@ -3391,23 +3394,23 @@ function renderTableElement(element, textStyle, options) {
3391
3394
  );
3392
3395
  }
3393
3396
  function partAttrs(part) {
3394
- return part ? chunkLBMPJYAR_js.chartPartToAttrs(part) : void 0;
3397
+ return part ? chunkZUIM5737_js.chartPartToAttrs(part) : void 0;
3395
3398
  }
3396
3399
  function resolveReactPalette(chartData) {
3397
3400
  if (chartData.colorPalette && chartData.colorPalette.length > 0) {
3398
3401
  return chartData.colorPalette;
3399
3402
  }
3400
- return [...chunkLBMPJYAR_js.getChartStylePalette(chartData.style?.styleId)];
3403
+ return [...chunkZUIM5737_js.getChartStylePalette(chartData.style?.styleId)];
3401
3404
  }
3402
3405
  function buildReactChartViewModel(element) {
3403
3406
  if (element.type !== "chart" || !element.chartData) {
3404
- return chunkLBMPJYAR_js.buildChartViewModel(element);
3407
+ return chunkZUIM5737_js.buildChartViewModel(element);
3405
3408
  }
3406
3409
  const palette = resolveReactPalette(element.chartData), themedElement = {
3407
3410
  ...element,
3408
3411
  chartData: { ...element.chartData, colorPalette: palette }
3409
3412
  };
3410
- return chunkLBMPJYAR_js.buildChartViewModel(themedElement);
3413
+ return chunkZUIM5737_js.buildChartViewModel(themedElement);
3411
3414
  }
3412
3415
  function renderPrimitive(prim, key) {
3413
3416
  switch (prim.kind) {
@@ -3558,7 +3561,7 @@ function renderText(t, key) {
3558
3561
  );
3559
3562
  }
3560
3563
  function renderChartViewModel(elementId, vm, preserveAspectRatio = "none") {
3561
- const legendItems = chunkLBMPJYAR_js.computeChartLegendLayout(vm);
3564
+ const legendItems = chunkZUIM5737_js.computeChartLegendLayout(vm);
3562
3565
  return /* @__PURE__ */ jsxRuntime.jsxs(
3563
3566
  "svg",
3564
3567
  {
@@ -3672,7 +3675,9 @@ function renderChartViewModel(elementId, vm, preserveAspectRatio = "none") {
3672
3675
  {
3673
3676
  transform: `translate(${item.x.toFixed(1)},${item.y.toFixed(1)})`,
3674
3677
  children: [
3675
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: 0, y: -7, width: 10, height: 10, rx: 2, fill: item.color }),
3678
+ item.lineSwatch ? item.lineSwatch.primitives.map(
3679
+ (prim, si) => renderPrimitive(prim, `${elementId}-lg-${i}-sw-${si}`)
3680
+ ) : /* @__PURE__ */ jsxRuntime.jsx("rect", { x: 0, y: -7, width: 10, height: 10, rx: 2, fill: item.color }),
3676
3681
  /* @__PURE__ */ jsxRuntime.jsx(
3677
3682
  "text",
3678
3683
  {
@@ -3702,11 +3707,11 @@ function renderChartElement(element) {
3702
3707
  if (!chartData || chartData.series.length === 0) {
3703
3708
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkBRJN3ZMG_js.translationsEn["pptx.chart.heading"] });
3704
3709
  }
3705
- const kind = chunkLBMPJYAR_js.resolveChartKind(chartData.chartType ?? "bar");
3710
+ const kind = chunkZUIM5737_js.resolveChartKind(chartData.chartType ?? "bar");
3706
3711
  return renderChartViewModel(
3707
3712
  element.id,
3708
3713
  buildReactChartViewModel(element),
3709
- chunkLBMPJYAR_js.chartPreserveAspectRatio(kind)
3714
+ chunkZUIM5737_js.chartPreserveAspectRatio(kind)
3710
3715
  );
3711
3716
  }
3712
3717
 
@@ -3726,14 +3731,14 @@ function buildNotesPdf(pages) {
3726
3731
  notes: page.notes,
3727
3732
  slideNumber: page.slideNumber
3728
3733
  }));
3729
- const bytes = chunkLBMPJYAR_js.buildNotesPdfBytes(images, meta);
3734
+ const bytes = chunkZUIM5737_js.buildNotesPdfBytes(images, meta);
3730
3735
  const blob = new Blob([bytes], { type: "application/pdf" });
3731
3736
  return URL.createObjectURL(blob);
3732
3737
  }
3733
3738
 
3734
3739
  // src/viewer/utils/pdf-builder-slides.ts
3735
3740
  function buildPdfFromTiledImageData(pages) {
3736
- const bytes = chunkLBMPJYAR_js.buildTiledSlidesPdfBytes(pages);
3741
+ const bytes = chunkZUIM5737_js.buildTiledSlidesPdfBytes(pages);
3737
3742
  const blob = new Blob([bytes], { type: "application/pdf" });
3738
3743
  return URL.createObjectURL(blob);
3739
3744
  }
@@ -3742,7 +3747,7 @@ function buildPdfFromTiledImageData(pages) {
3742
3747
  var activePreview = null;
3743
3748
  function startPreviewAnimation(elementId, preset, options) {
3744
3749
  stopPreviewAnimation();
3745
- const descriptor = chunkLBMPJYAR_js.buildPreviewAnimation(preset, options);
3750
+ const descriptor = chunkZUIM5737_js.buildPreviewAnimation(preset, options);
3746
3751
  if (!descriptor) {
3747
3752
  return;
3748
3753
  }
@@ -3755,7 +3760,7 @@ function startMotionPathPreview(elementId, path, options) {
3755
3760
  return;
3756
3761
  }
3757
3762
  const stage = domEl.offsetParent;
3758
- const descriptor = chunkLBMPJYAR_js.buildMotionPathPreview({
3763
+ const descriptor = chunkZUIM5737_js.buildMotionPathPreview({
3759
3764
  path,
3760
3765
  slideWidth: stage?.offsetWidth || DEFAULT_PREVIEW_SLIDE_WIDTH,
3761
3766
  slideHeight: stage?.offsetHeight || DEFAULT_PREVIEW_SLIDE_HEIGHT,