pptx-react-viewer 2.15.1 → 2.15.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 (99) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/dist/{AiChatPanel-YDX2WONS.mjs → AiChatPanel-HSQLY6O7.mjs} +3 -3
  3. package/dist/AiChatPanel-HSQLY6O7.mjs.br +0 -0
  4. package/dist/AiChatPanel-HSQLY6O7.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-JWCGIYBL.js → AiChatPanel-WGX7DUQE.js} +22 -22
  6. package/dist/AiChatPanel-WGX7DUQE.js.br +0 -0
  7. package/dist/AiChatPanel-WGX7DUQE.js.gz +0 -0
  8. package/dist/{Model3DScene-ZVWROBJT.mjs → Model3DScene-3DOCQYAE.mjs} +1 -1
  9. package/dist/Model3DScene-3DOCQYAE.mjs.br +0 -0
  10. package/dist/Model3DScene-3DOCQYAE.mjs.gz +0 -0
  11. package/dist/{Model3DScene-4FFR5CF5.js → Model3DScene-DYWYNVLU.js} +2 -2
  12. package/dist/Model3DScene-DYWYNVLU.js.br +0 -0
  13. package/dist/Model3DScene-DYWYNVLU.js.gz +0 -0
  14. package/dist/{SurfaceChart3DScene-WEH6CLAU.js → SurfaceChart3DScene-7UB5JE2W.js} +2 -2
  15. package/dist/SurfaceChart3DScene-7UB5JE2W.js.br +0 -0
  16. package/dist/SurfaceChart3DScene-7UB5JE2W.js.gz +0 -0
  17. package/dist/{SurfaceChart3DScene-PJLRTJLR.mjs → SurfaceChart3DScene-GIKV3DXC.mjs} +1 -1
  18. package/dist/{SurfaceChart3DScene-PJLRTJLR.mjs.br → SurfaceChart3DScene-GIKV3DXC.mjs.br} +0 -0
  19. package/dist/SurfaceChart3DScene-GIKV3DXC.mjs.gz +0 -0
  20. package/dist/{chunk-LZDGIEN3.js → chunk-DC4GIE7E.js} +3 -3
  21. package/dist/chunk-DC4GIE7E.js.br +0 -0
  22. package/dist/chunk-DC4GIE7E.js.gz +0 -0
  23. package/dist/{chunk-LCDAL2JQ.mjs → chunk-GLC2RPKN.mjs} +16 -8
  24. package/dist/chunk-GLC2RPKN.mjs.br +0 -0
  25. package/dist/chunk-GLC2RPKN.mjs.gz +0 -0
  26. package/dist/{chunk-YAWRDLCV.mjs → chunk-IXCNYPFK.mjs} +1 -1
  27. package/dist/chunk-IXCNYPFK.mjs.br +0 -0
  28. package/dist/chunk-IXCNYPFK.mjs.gz +0 -0
  29. package/dist/{chunk-ESUQSKGF.mjs → chunk-IXEHYABF.mjs} +8 -8
  30. package/dist/chunk-IXEHYABF.mjs.br +0 -0
  31. package/dist/chunk-IXEHYABF.mjs.gz +0 -0
  32. package/dist/{chunk-7TFVXCBY.mjs → chunk-LVGFV42Z.mjs} +27 -7
  33. package/dist/chunk-LVGFV42Z.mjs.br +0 -0
  34. package/dist/chunk-LVGFV42Z.mjs.gz +0 -0
  35. package/dist/{chunk-KFGVJONB.js → chunk-MQXKBH43.js} +251 -247
  36. package/dist/chunk-MQXKBH43.js.br +0 -0
  37. package/dist/chunk-MQXKBH43.js.gz +0 -0
  38. package/dist/{chunk-BHDUV2LM.js → chunk-RSNAGJTQ.js} +1051 -1051
  39. package/dist/chunk-RSNAGJTQ.js.br +0 -0
  40. package/dist/chunk-RSNAGJTQ.js.gz +0 -0
  41. package/dist/{chunk-Z3FYYUGI.js → chunk-SBRSPTSA.js} +27 -6
  42. package/dist/chunk-SBRSPTSA.js.br +0 -0
  43. package/dist/chunk-SBRSPTSA.js.gz +0 -0
  44. package/dist/{chunk-OEK3VKSO.js → chunk-U47SG5XL.js} +348 -340
  45. package/dist/chunk-U47SG5XL.js.br +0 -0
  46. package/dist/chunk-U47SG5XL.js.gz +0 -0
  47. package/dist/{chunk-YUPKCGB5.mjs → chunk-ZAO36XAK.mjs} +9 -5
  48. package/dist/chunk-ZAO36XAK.mjs.br +0 -0
  49. package/dist/chunk-ZAO36XAK.mjs.gz +0 -0
  50. package/dist/index.js +39 -39
  51. package/dist/index.js.br +0 -0
  52. package/dist/index.js.gz +0 -0
  53. package/dist/index.mjs +5 -5
  54. package/dist/index.mjs.br +0 -0
  55. package/dist/index.mjs.gz +0 -0
  56. package/dist/internals.js +78 -78
  57. package/dist/internals.js.br +0 -0
  58. package/dist/internals.js.gz +0 -0
  59. package/dist/internals.mjs +3 -3
  60. package/dist/internals.mjs.br +0 -0
  61. package/dist/internals.mjs.gz +0 -0
  62. package/dist/viewer/index.js +26 -26
  63. package/dist/viewer/index.js.br +0 -0
  64. package/dist/viewer/index.js.gz +0 -0
  65. package/dist/viewer/index.mjs +5 -5
  66. package/dist/viewer/index.mjs.br +0 -0
  67. package/dist/viewer/index.mjs.gz +0 -0
  68. package/package.json +1 -1
  69. package/dist/AiChatPanel-JWCGIYBL.js.br +0 -0
  70. package/dist/AiChatPanel-JWCGIYBL.js.gz +0 -0
  71. package/dist/AiChatPanel-YDX2WONS.mjs.br +0 -0
  72. package/dist/AiChatPanel-YDX2WONS.mjs.gz +0 -0
  73. package/dist/Model3DScene-4FFR5CF5.js.br +0 -0
  74. package/dist/Model3DScene-4FFR5CF5.js.gz +0 -0
  75. package/dist/Model3DScene-ZVWROBJT.mjs.br +0 -0
  76. package/dist/Model3DScene-ZVWROBJT.mjs.gz +0 -0
  77. package/dist/SurfaceChart3DScene-PJLRTJLR.mjs.gz +0 -0
  78. package/dist/SurfaceChart3DScene-WEH6CLAU.js.br +0 -0
  79. package/dist/SurfaceChart3DScene-WEH6CLAU.js.gz +0 -0
  80. package/dist/chunk-7TFVXCBY.mjs.br +0 -0
  81. package/dist/chunk-7TFVXCBY.mjs.gz +0 -0
  82. package/dist/chunk-BHDUV2LM.js.br +0 -0
  83. package/dist/chunk-BHDUV2LM.js.gz +0 -0
  84. package/dist/chunk-ESUQSKGF.mjs.br +0 -0
  85. package/dist/chunk-ESUQSKGF.mjs.gz +0 -0
  86. package/dist/chunk-KFGVJONB.js.br +0 -0
  87. package/dist/chunk-KFGVJONB.js.gz +0 -0
  88. package/dist/chunk-LCDAL2JQ.mjs.br +0 -0
  89. package/dist/chunk-LCDAL2JQ.mjs.gz +0 -0
  90. package/dist/chunk-LZDGIEN3.js.br +0 -0
  91. package/dist/chunk-LZDGIEN3.js.gz +0 -0
  92. package/dist/chunk-OEK3VKSO.js.br +0 -0
  93. package/dist/chunk-OEK3VKSO.js.gz +0 -0
  94. package/dist/chunk-YAWRDLCV.mjs.br +0 -0
  95. package/dist/chunk-YAWRDLCV.mjs.gz +0 -0
  96. package/dist/chunk-YUPKCGB5.mjs.br +0 -0
  97. package/dist/chunk-YUPKCGB5.mjs.gz +0 -0
  98. package/dist/chunk-Z3FYYUGI.js.br +0 -0
  99. package/dist/chunk-Z3FYYUGI.js.gz +0 -0
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var chunk3ISYPBSX_js = require('./chunk-3ISYPBSX.js');
4
- var chunkZ3FYYUGI_js = require('./chunk-Z3FYYUGI.js');
4
+ var chunkSBRSPTSA_js = require('./chunk-SBRSPTSA.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 chunkZ3FYYUGI_js.getAnimationInitialStyle(preset, nativeAnimation);
18
+ return chunkSBRSPTSA_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 chunkZ3FYYUGI_js.cloneHistorySnapshot(snapshot);
26
+ return chunkSBRSPTSA_js.cloneHistorySnapshot(snapshot);
27
27
  }
28
28
 
29
29
  // src/viewer/constants/scalar.ts
@@ -63,7 +63,7 @@ var TOOLBAR_SECTIONS = [
63
63
  { id: "view", labelKey: "pptx.ribbon.tab.view" },
64
64
  { id: "help", labelKey: "pptx.ribbon.tab.help" }
65
65
  ];
66
- var SHORTCUT_REFERENCE_ITEMS = chunkZ3FYYUGI_js.VIEWER_SHORTCUT_REFERENCE;
66
+ var SHORTCUT_REFERENCE_ITEMS = chunkSBRSPTSA_js.VIEWER_SHORTCUT_REFERENCE;
67
67
 
68
68
  // src/viewer/constants/theme.ts
69
69
  var THEME_COLOR_SWATCHES = [
@@ -107,7 +107,7 @@ var GLYPH_COMPONENTS = {
107
107
  plus: lu.LuPlus,
108
108
  triangle: lu.LuTriangle
109
109
  };
110
- var SHAPE_PRESETS = chunkZ3FYYUGI_js.SHAPE_PRESET_DEFS.map(
110
+ var SHAPE_PRESETS = chunkSBRSPTSA_js.SHAPE_PRESET_DEFS.map(
111
111
  (def) => ({
112
112
  type: def.type,
113
113
  label: def.label,
@@ -266,7 +266,7 @@ function isConnectorOrLineElement(element) {
266
266
  if (element.type === "connector") {
267
267
  return true;
268
268
  }
269
- if (!chunkZ3FYYUGI_js.hasShapeProperties(element)) {
269
+ if (!chunkSBRSPTSA_js.hasShapeProperties(element)) {
270
270
  return false;
271
271
  }
272
272
  const st = getShapeType(element.shapeType);
@@ -277,12 +277,12 @@ function isConnectorOrLineElement(element) {
277
277
  function partitionTemplateElements(slides) {
278
278
  const templateElementsBySlideId = {};
279
279
  const nextSlides = slides.map((slide) => {
280
- const template = slide.elements.filter((el) => chunkZ3FYYUGI_js.isTemplateElement(el));
280
+ const template = slide.elements.filter((el) => chunkSBRSPTSA_js.isTemplateElement(el));
281
281
  if (template.length === 0) {
282
282
  return slide;
283
283
  }
284
284
  templateElementsBySlideId[slide.id] = template;
285
- return { ...slide, elements: slide.elements.filter((el) => !chunkZ3FYYUGI_js.isTemplateElement(el)) };
285
+ return { ...slide, elements: slide.elements.filter((el) => !chunkSBRSPTSA_js.isTemplateElement(el)) };
286
286
  });
287
287
  return { slides: nextSlides, templateElementsBySlideId };
288
288
  }
@@ -298,7 +298,7 @@ function buildSaveSlides(slides, templateElementsBySlideId) {
298
298
 
299
299
  // src/viewer/utils/image-style.ts
300
300
  function getImageMaskStyle(element) {
301
- if (!chunkZ3FYYUGI_js.hasShapeProperties(element)) {
301
+ if (!chunkSBRSPTSA_js.hasShapeProperties(element)) {
302
302
  return void 0;
303
303
  }
304
304
  const shapeType = element.shapeType;
@@ -307,19 +307,19 @@ function getImageMaskStyle(element) {
307
307
  }
308
308
  const normalized = shapeType.toLowerCase();
309
309
  if (normalized === "roundrect" || normalized === "round1rect" || normalized === "round2samerect" || normalized === "round2diagrect" || normalized === "sniproundrect" || normalized === "snip1rect" || normalized === "snip2diagrect") {
310
- const radiusPx = chunkZ3FYYUGI_js.getRoundRectRadiusPx(element);
310
+ const radiusPx = chunkSBRSPTSA_js.getRoundRectRadiusPx(element);
311
311
  if (radiusPx <= 0.01) {
312
312
  return void 0;
313
313
  }
314
314
  return { borderRadius: radiusPx };
315
315
  }
316
316
  if (normalized === "ellipse" || normalized === "oval") {
317
- return { borderRadius: "9999px" };
317
+ return { borderRadius: "50%" };
318
318
  }
319
319
  if (normalized === "can" || normalized === "cylinder") {
320
320
  return { borderRadius: "48% / 12%" };
321
321
  }
322
- const clipPath = chunkZ3FYYUGI_js.getResolvedShapeClipPath(element);
322
+ const clipPath = chunkSBRSPTSA_js.getResolvedShapeClipPath(element);
323
323
  if (!clipPath) {
324
324
  return void 0;
325
325
  }
@@ -328,7 +328,7 @@ function getImageMaskStyle(element) {
328
328
  function getImageRenderStyle(element) {
329
329
  return {
330
330
  ...getImageMaskStyle(element) || {},
331
- ...chunkZ3FYYUGI_js.getImageFitStyle(element)
331
+ ...chunkSBRSPTSA_js.getImageFitStyle(element)
332
332
  };
333
333
  }
334
334
  var CROP_SHAPE_CLIP_PATHS = {
@@ -341,7 +341,7 @@ var CROP_SHAPE_CLIP_PATHS = {
341
341
  star: "polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%)"
342
342
  };
343
343
  function getCropShapeClipPath(element) {
344
- if (!chunkZ3FYYUGI_js.isImageLikeElement(element)) {
344
+ if (!chunkSBRSPTSA_js.isImageLikeElement(element)) {
345
345
  return void 0;
346
346
  }
347
347
  const shape = element.cropShape;
@@ -351,7 +351,7 @@ function getCropShapeClipPath(element) {
351
351
  return CROP_SHAPE_CLIP_PATHS[shape];
352
352
  }
353
353
  function isImageTiled(element) {
354
- if (!chunkZ3FYYUGI_js.isImageLikeElement(element)) {
354
+ if (!chunkSBRSPTSA_js.isImageLikeElement(element)) {
355
355
  return false;
356
356
  }
357
357
  return typeof element.tileScaleX === "number" || typeof element.tileScaleY === "number";
@@ -409,7 +409,7 @@ function buildMirrorTiledBackground(src, flip, scaleX, scaleY) {
409
409
  };
410
410
  }
411
411
  function getImageTilingStyle(element) {
412
- if (!chunkZ3FYYUGI_js.isImageLikeElement(element) || !isImageTiled(element)) {
412
+ if (!chunkSBRSPTSA_js.isImageLikeElement(element) || !isImageTiled(element)) {
413
413
  return void 0;
414
414
  }
415
415
  const scaleX = typeof element.tileScaleX === "number" ? element.tileScaleX * 100 : 100;
@@ -659,9 +659,9 @@ function registerMediaElement(elementId, el) {
659
659
  };
660
660
  }
661
661
  function executeMediaCommand(command, frameRoot) {
662
- return chunkZ3FYYUGI_js.runMediaCommand(
662
+ return chunkSBRSPTSA_js.runMediaCommand(
663
663
  command,
664
- (targetId) => registry.get(targetId) ?? chunkZ3FYYUGI_js.findMediaElementByElementId(targetId, frameRoot?.())
664
+ (targetId) => registry.get(targetId) ?? chunkSBRSPTSA_js.findMediaElementByElementId(targetId, frameRoot?.())
665
665
  );
666
666
  }
667
667
  function PresentationMediaController({
@@ -705,7 +705,7 @@ function PresentationMediaController({
705
705
  loop: shouldLoop,
706
706
  volume: playbackVolume,
707
707
  playbackRate
708
- } = chunkZ3FYYUGI_js.mediaPlaybackAttributes({
708
+ } = chunkSBRSPTSA_js.mediaPlaybackAttributes({
709
709
  loop: element.loop,
710
710
  volume: element.volume,
711
711
  playbackSpeed: element.playbackSpeed
@@ -841,7 +841,7 @@ function PresentationMediaController({
841
841
  if (element.playAcrossSlides && element.mediaType === "audio") {
842
842
  const dataUrl = element.mediaData ?? resolvedDataUrl;
843
843
  if (dataUrl) {
844
- chunkZ3FYYUGI_js.registerPersistentAudio(
844
+ chunkSBRSPTSA_js.registerPersistentAudio(
845
845
  element.id,
846
846
  dataUrl,
847
847
  element.mediaMimeType,
@@ -912,7 +912,7 @@ function renderMediaElement(element, mediaDataUrls, options) {
912
912
  const dataUrl = element.mediaData ?? (mediaPath ? mediaDataUrls.get(mediaPath) : void 0);
913
913
  const trimFragment = buildTrimFragment(element);
914
914
  const posterUrl = element.posterFrameData ?? void 0;
915
- const shouldLoop = chunkZ3FYYUGI_js.mediaPlaybackAttributes(element).loop;
915
+ const shouldLoop = chunkSBRSPTSA_js.mediaPlaybackAttributes(element).loop;
916
916
  const shouldAutoPlay = options?.autoPlay === true || element.autoPlay === true;
917
917
  const isFullScreen = options?.fullScreen === true;
918
918
  const isPresentationMode = options?.isPresentationMode === true;
@@ -1078,7 +1078,7 @@ function renderMediaElement(element, mediaDataUrls, options) {
1078
1078
 
1079
1079
  // src/viewer/utils/text-utils.tsx
1080
1080
  function getTextStyleForElement(element, fallbackColor) {
1081
- return chunkZ3FYYUGI_js.buildTextBlockStyle(element, { fallbackColor });
1081
+ return chunkSBRSPTSA_js.buildTextBlockStyle(element, { fallbackColor });
1082
1082
  }
1083
1083
 
1084
1084
  // src/viewer/utils/text-layout.tsx
@@ -1103,13 +1103,13 @@ function computeTabSize(tabStops, defaultTabSize) {
1103
1103
  return avgGap > 0 ? `${Math.round(avgGap)}px` : fromDefault;
1104
1104
  }
1105
1105
  function getTextLayoutStyle(element) {
1106
- if (!chunkZ3FYYUGI_js.hasTextProperties(element)) {
1106
+ if (!chunkSBRSPTSA_js.hasTextProperties(element)) {
1107
1107
  return {};
1108
1108
  }
1109
1109
  const verticalAlign = element.textStyle?.vAlign || "top";
1110
- const writingMode = chunkZ3FYYUGI_js.toCssWritingMode(element.textStyle?.textDirection);
1111
- const textOrientation = chunkZ3FYYUGI_js.toCssTextOrientation(element.textStyle?.textDirection);
1112
- const verticalDirection = chunkZ3FYYUGI_js.toCssVerticalDirection(element.textStyle?.textDirection);
1110
+ const writingMode = chunkSBRSPTSA_js.toCssWritingMode(element.textStyle?.textDirection);
1111
+ const textOrientation = chunkSBRSPTSA_js.toCssTextOrientation(element.textStyle?.textDirection);
1112
+ const verticalDirection = chunkSBRSPTSA_js.toCssVerticalDirection(element.textStyle?.textDirection);
1113
1113
  const parsedColumnCount = Number(element.textStyle?.columnCount);
1114
1114
  const columnCount = Number.isFinite(parsedColumnCount) ? Math.max(1, Math.min(16, Math.round(parsedColumnCount))) : 1;
1115
1115
  const hasColumns = columnCount > 1;
@@ -1117,7 +1117,7 @@ function getTextLayoutStyle(element) {
1117
1117
  const tabStops = element.textStyle?.tabStops;
1118
1118
  const tabSize = computeTabSize(tabStops, element.textStyle?.defaultTabSize);
1119
1119
  const textWrapNone = element.textStyle?.textWrap === "none";
1120
- const hasParagraphIndents = chunkZ3FYYUGI_js.hasTextProperties(element) && element.paragraphIndents && element.paragraphIndents.length > 0;
1120
+ const hasParagraphIndents = chunkSBRSPTSA_js.hasTextProperties(element) && element.paragraphIndents && element.paragraphIndents.length > 0;
1121
1121
  const paragraphMarginLeft = element.textStyle?.paragraphMarginLeft;
1122
1122
  const paragraphIndent = element.textStyle?.paragraphIndent;
1123
1123
  const marginLeft = !hasParagraphIndents && typeof paragraphMarginLeft === "number" && paragraphMarginLeft !== 0 ? paragraphMarginLeft : void 0;
@@ -1126,7 +1126,7 @@ function getTextLayoutStyle(element) {
1126
1126
  const bodyBottom = element.textStyle?.bodyInsetBottom ?? DEFAULT_BODY_INSET_TB_PX;
1127
1127
  const parsedColumnSpacing = Number(element.textStyle?.columnSpacing);
1128
1128
  const columnGap = Number.isFinite(parsedColumnSpacing) && parsedColumnSpacing > 0 ? `${parsedColumnSpacing}px` : "0.75em";
1129
- const kinsokuStyles = chunkZ3FYYUGI_js.getKinsokuLineBreakStyles(element.textStyle);
1129
+ const kinsokuStyles = chunkSBRSPTSA_js.getKinsokuLineBreakStyles(element.textStyle);
1130
1130
  if (hasColumns) {
1131
1131
  return {
1132
1132
  display: "block",
@@ -1173,10 +1173,10 @@ function getTextLayoutStyle(element) {
1173
1173
 
1174
1174
  // src/viewer/utils/text-effects.tsx
1175
1175
  function buildTextFillCss2(style) {
1176
- return chunkZ3FYYUGI_js.buildTextFillCss(style);
1176
+ return chunkSBRSPTSA_js.buildTextFillCss(style);
1177
1177
  }
1178
1178
  function buildTextBody3DSceneStyle2(textStyle) {
1179
- return chunkZ3FYYUGI_js.buildTextBody3DSceneStyle(textStyle);
1179
+ return chunkSBRSPTSA_js.buildTextBody3DSceneStyle(textStyle);
1180
1180
  }
1181
1181
 
1182
1182
  // src/viewer/utils/text-warp-css.tsx
@@ -1361,13 +1361,13 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
1361
1361
  if (!subElementAnimStates || subElementAnimStates.size === 0) {
1362
1362
  return renderedSegments;
1363
1363
  }
1364
- const paraKey = `${elementId}${chunkZ3FYYUGI_js.TEXT_BUILD_ID_SEP}p${paraIndex}`;
1364
+ const paraKey = `${elementId}${chunkSBRSPTSA_js.TEXT_BUILD_ID_SEP}p${paraIndex}`;
1365
1365
  const paraState = subElementAnimStates.get(paraKey);
1366
1366
  if (paraState) {
1367
1367
  const style = buildAnimStyle(paraState);
1368
1368
  return /* @__PURE__ */ jsxRuntime.jsx("span", { "data-anim-id": paraKey, style: { display: "inline", ...style }, children: renderedSegments }, paraKey);
1369
1369
  }
1370
- const spec = chunkZ3FYYUGI_js.buildTextBuildSpec(
1370
+ const spec = chunkSBRSPTSA_js.buildTextBuildSpec(
1371
1371
  elementId,
1372
1372
  paraIndex,
1373
1373
  paraSegments.map((entry) => ({ text: entry.segment.text, style: entry })),
@@ -1385,7 +1385,7 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
1385
1385
  "span",
1386
1386
  {
1387
1387
  "data-anim-id": span.animId,
1388
- style: chunkZ3FYYUGI_js.textBuildSpanStyle(span),
1388
+ style: chunkSBRSPTSA_js.textBuildSpanStyle(span),
1389
1389
  children: content
1390
1390
  },
1391
1391
  span.animId
@@ -1529,10 +1529,10 @@ function renderScriptAwareText(text, needsScriptFonts, scriptFonts, baseFontFami
1529
1529
  if (!needsScriptFonts || !text) {
1530
1530
  return text;
1531
1531
  }
1532
- const runs = chunkZ3FYYUGI_js.segmentByScript(text);
1532
+ const runs = chunkSBRSPTSA_js.segmentByScript(text);
1533
1533
  if (runs.length <= 1) {
1534
1534
  if (runs.length === 1) {
1535
- const font = chunkZ3FYYUGI_js.resolveFontForScript(runs[0].script, scriptFonts);
1535
+ const font = chunkSBRSPTSA_js.resolveFontForScript(runs[0].script, scriptFonts);
1536
1536
  if (font && font !== baseFontFamily) {
1537
1537
  return /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontFamily: font }, children: text });
1538
1538
  }
@@ -1540,7 +1540,7 @@ function renderScriptAwareText(text, needsScriptFonts, scriptFonts, baseFontFami
1540
1540
  return text;
1541
1541
  }
1542
1542
  return runs.map((run, i) => {
1543
- const font = chunkZ3FYYUGI_js.resolveFontForScript(run.script, scriptFonts);
1543
+ const font = chunkSBRSPTSA_js.resolveFontForScript(run.script, scriptFonts);
1544
1544
  if (!font || font === baseFontFamily) {
1545
1545
  return /* @__PURE__ */ jsxRuntime.jsx(React6__default.default.Fragment, { children: run.text }, `${keyPrefix}-r${i}`);
1546
1546
  }
@@ -1612,8 +1612,8 @@ function renderSegmentContent(elementId, segmentIndex, textValue, lines, needsSc
1612
1612
  );
1613
1613
  }
1614
1614
  function renderEquationSegment(elementId, segmentIndex, equationXml, equationNumber) {
1615
- const mathml = chunkZ3FYYUGI_js.convertOmmlToMathMl(equationXml);
1616
- const safeMathml = mathml ? chunkZ3FYYUGI_js.sanitizeMathMl(mathml) : "";
1615
+ const mathml = chunkSBRSPTSA_js.convertOmmlToMathMl(equationXml);
1616
+ const safeMathml = mathml ? chunkSBRSPTSA_js.sanitizeMathMl(mathml) : "";
1617
1617
  const equationContent = safeMathml ? /* @__PURE__ */ jsxRuntime.jsx(
1618
1618
  "span",
1619
1619
  {
@@ -1663,7 +1663,7 @@ function renderEquationSegment(elementId, segmentIndex, equationXml, equationNum
1663
1663
  return /* @__PURE__ */ jsxRuntime.jsx("span", { children: equationContent }, `${elementId}-seg-${segmentIndex}`);
1664
1664
  }
1665
1665
  function renderPictureBullet(elementId, segmentIndex, bulletInfo, baseFontSize) {
1666
- const picture = chunkZ3FYYUGI_js.resolvePictureBullet(bulletInfo, baseFontSize) ?? {
1666
+ const picture = chunkSBRSPTSA_js.resolvePictureBullet(bulletInfo, baseFontSize) ?? {
1667
1667
  sizePx: baseFontSize,
1668
1668
  fallbackMarker: "\u2022",
1669
1669
  accessibleLabel: "Bullet"
@@ -1714,7 +1714,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1714
1714
  }
1715
1715
  const segmentStyle = segment.style || {};
1716
1716
  const rawText = bulletInfo && typeof bulletHangPx === "number" ? (segment.text || "").trimEnd() : segment.text || "";
1717
- const textValue = chunkZ3FYYUGI_js.substituteFieldText(rawText, segment.fieldType, fieldContext);
1717
+ const textValue = chunkSBRSPTSA_js.substituteFieldText(rawText, segment.fieldType, fieldContext);
1718
1718
  const lines = textValue.split("\n");
1719
1719
  const textDecorationTokens = [];
1720
1720
  if (segmentStyle.underline || segmentStyle.hyperlink) {
@@ -1724,28 +1724,28 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1724
1724
  textDecorationTokens.push("line-through");
1725
1725
  }
1726
1726
  const isDoubleStrike = segmentStyle.strikethrough && segmentStyle.strikeType === "dblStrike";
1727
- const resolvedSegmentColor = segmentStyle.hyperlink ? chunkZ3FYYUGI_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, HYPERLINK_COLOR) : chunkZ3FYYUGI_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, fallbackColor);
1728
- const underlineDecoration = chunkZ3FYYUGI_js.resolveUnderlineDecorationStyle(
1727
+ const resolvedSegmentColor = segmentStyle.hyperlink ? chunkSBRSPTSA_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, HYPERLINK_COLOR) : chunkSBRSPTSA_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, fallbackColor);
1728
+ const underlineDecoration = chunkSBRSPTSA_js.resolveUnderlineDecorationStyle(
1729
1729
  Boolean(isDoubleStrike),
1730
1730
  segmentStyle.underlineStyle
1731
1731
  );
1732
1732
  const rawBaseline = typeof segmentStyle.baseline === "number" ? segmentStyle.baseline : 0;
1733
1733
  const baselineFraction = rawBaseline === 0 ? 0 : Math.abs(rawBaseline) >= 1e3 ? rawBaseline / 1e5 : rawBaseline / 100;
1734
1734
  const baselineFontScale = baselineFraction !== 0 ? 0.65 : 1;
1735
- const letterSpacing = typeof segmentStyle.characterSpacing === "number" && segmentStyle.characterSpacing !== 0 ? `calc(${segmentStyle.characterSpacing / 100 * (96 / 72)}px + ${chunkZ3FYYUGI_js.POWERPOINT_METRIC_TRACKING})` : chunkZ3FYYUGI_js.POWERPOINT_METRIC_TRACKING;
1735
+ const letterSpacing = typeof segmentStyle.characterSpacing === "number" && segmentStyle.characterSpacing !== 0 ? `calc(${segmentStyle.characterSpacing / 100 * (96 / 72)}px + ${chunkSBRSPTSA_js.POWERPOINT_METRIC_TRACKING})` : chunkSBRSPTSA_js.POWERPOINT_METRIC_TRACKING;
1736
1736
  const textFillStyles = buildTextFillCss2(segmentStyle);
1737
1737
  const rawFontSize = segmentStyle.fontSize || element.textStyle?.fontSize || DEFAULT_TEXT_FONT_SIZE;
1738
- const autoFitScale = chunkZ3FYYUGI_js.resolveAutoFitFontScale(element.textStyle);
1738
+ const autoFitScale = chunkSBRSPTSA_js.resolveAutoFitFontScale(element.textStyle);
1739
1739
  const baseFontSize = rawFontSize * autoFitScale;
1740
1740
  const baselineShift = baselineFraction !== 0 ? `${baselineFraction * baseFontSize}px` : void 0;
1741
1741
  const baseFontSizePt = baseFontSize * (72 / 96);
1742
1742
  const fontKerning = typeof segmentStyle.kerning === "number" ? segmentStyle.kerning === 0 ? "none" : baseFontSizePt >= segmentStyle.kerning / 100 ? "normal" : "none" : void 0;
1743
1743
  const rawFontFamily = segmentStyle.fontFamily || element.textStyle?.fontFamily;
1744
- const baseFontFamily = rawFontFamily ? chunkZ3FYYUGI_js.getSubstituteFontFamily(
1744
+ const baseFontFamily = rawFontFamily ? chunkSBRSPTSA_js.getSubstituteFontFamily(
1745
1745
  rawFontFamily,
1746
- chunkZ3FYYUGI_js.parsePanoseString(segmentStyle.latinFontPanose ?? element.textStyle?.latinFontPanose)
1746
+ chunkSBRSPTSA_js.parsePanoseString(segmentStyle.latinFontPanose ?? element.textStyle?.latinFontPanose)
1747
1747
  ) : DEFAULT_FONT_FAMILY2;
1748
- const scriptFont = (name, panose) => name ? chunkZ3FYYUGI_js.getSubstituteFontFamily(name, chunkZ3FYYUGI_js.parsePanoseString(panose)) : baseFontFamily;
1748
+ const scriptFont = (name, panose) => name ? chunkSBRSPTSA_js.getSubstituteFontFamily(name, chunkSBRSPTSA_js.parsePanoseString(panose)) : baseFontFamily;
1749
1749
  const scriptFonts = {
1750
1750
  latin: baseFontFamily,
1751
1751
  eastAsia: scriptFont(
@@ -1761,7 +1761,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1761
1761
  segmentStyle.symbolFontPanose ?? element.textStyle?.symbolFontPanose
1762
1762
  )
1763
1763
  };
1764
- const needsScriptFonts = chunkZ3FYYUGI_js.hasDistinctScriptFonts(scriptFonts);
1764
+ const needsScriptFonts = chunkSBRSPTSA_js.hasDistinctScriptFonts(scriptFonts);
1765
1765
  const spanStyle = {
1766
1766
  color: resolvedSegmentColor,
1767
1767
  fontSize: baseFontSize * baselineFontScale,
@@ -1779,15 +1779,15 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1779
1779
  fontVariantCaps: segmentStyle.textCaps === "small" ? "small-caps" : void 0,
1780
1780
  letterSpacing,
1781
1781
  fontKerning,
1782
- backgroundColor: textFillStyles ? void 0 : segmentStyle.highlightColor ? chunkZ3FYYUGI_js.normalizeHexColor(segmentStyle.highlightColor, "transparent") : void 0,
1782
+ backgroundColor: textFillStyles ? void 0 : segmentStyle.highlightColor ? chunkSBRSPTSA_js.normalizeHexColor(segmentStyle.highlightColor, "transparent") : void 0,
1783
1783
  ...textFillStyles,
1784
- textDecorationColor: segmentStyle.underlineColor ? chunkZ3FYYUGI_js.normalizeHexColor(segmentStyle.underlineColor, void 0) : void 0,
1785
- WebkitTextStroke: segmentStyle.textOutlineWidth && segmentStyle.textOutlineColor ? `${segmentStyle.textOutlineWidth}px ${chunkZ3FYYUGI_js.normalizeHexColor(segmentStyle.textOutlineColor, "#000000")}` : segmentStyle.textOutlineWidth ? `${segmentStyle.textOutlineWidth}px currentColor` : void 0,
1784
+ textDecorationColor: segmentStyle.underlineColor ? chunkSBRSPTSA_js.normalizeHexColor(segmentStyle.underlineColor, void 0) : void 0,
1785
+ WebkitTextStroke: segmentStyle.textOutlineWidth && segmentStyle.textOutlineColor ? `${segmentStyle.textOutlineWidth}px ${chunkSBRSPTSA_js.normalizeHexColor(segmentStyle.textOutlineColor, "#000000")}` : segmentStyle.textOutlineWidth ? `${segmentStyle.textOutlineWidth}px currentColor` : void 0,
1786
1786
  paintOrder: segmentStyle.textOutlineWidth ? "stroke fill" : void 0,
1787
- textShadow: chunkZ3FYYUGI_js.buildTextShadowCss(segmentStyle),
1788
- filter: chunkZ3FYYUGI_js.buildTextRunFilterChain(segmentStyle),
1789
- opacity: chunkZ3FYYUGI_js.getTextAlphaOpacity(segmentStyle),
1790
- WebkitBoxReflect: chunkZ3FYYUGI_js.buildTextReflectionCss(segmentStyle)
1787
+ textShadow: chunkSBRSPTSA_js.buildTextShadowCss(segmentStyle),
1788
+ filter: chunkSBRSPTSA_js.buildTextRunFilterChain(segmentStyle),
1789
+ opacity: chunkSBRSPTSA_js.getTextAlphaOpacity(segmentStyle),
1790
+ WebkitBoxReflect: chunkSBRSPTSA_js.buildTextReflectionCss(segmentStyle)
1791
1791
  };
1792
1792
  const runRtl = segmentStyle.rtl;
1793
1793
  if (runRtl !== void 0 && runRtl !== paragraphRtl) {
@@ -1807,7 +1807,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1807
1807
  spanStyle.fontSize = baseFontSize * (bulletInfo.sizePercent / 100) * baselineFontScale;
1808
1808
  }
1809
1809
  if (bulletInfo.color) {
1810
- spanStyle.color = chunkZ3FYYUGI_js.normalizeHexColor(bulletInfo.color, resolvedSegmentColor);
1810
+ spanStyle.color = chunkSBRSPTSA_js.normalizeHexColor(bulletInfo.color, resolvedSegmentColor);
1811
1811
  }
1812
1812
  if (typeof bulletHangPx === "number" && bulletHangPx > 0) {
1813
1813
  spanStyle.display = "inline-block";
@@ -1852,7 +1852,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1852
1852
  textAlign: segment.rubyAlignment === "l" ? "left" : segment.rubyAlignment === "r" ? "right" : segment.rubyAlignment === "dist" || segment.rubyAlignment === "distCat" || segment.rubyAlignment === "distLetter" ? "justify" : "center"
1853
1853
  };
1854
1854
  if (segment.rubyStyle?.color) {
1855
- rubyStyle.color = chunkZ3FYYUGI_js.normalizeHexColor(segment.rubyStyle.color, resolvedSegmentColor);
1855
+ rubyStyle.color = chunkSBRSPTSA_js.normalizeHexColor(segment.rubyStyle.color, resolvedSegmentColor);
1856
1856
  }
1857
1857
  innerContent = /* @__PURE__ */ jsxRuntime.jsxs("ruby", { children: [
1858
1858
  baseContent,
@@ -1925,7 +1925,7 @@ function resolveParagraphSpacing(input) {
1925
1925
  if (typeof exactPt === "number" && exactPt > 0) {
1926
1926
  result.lineHeight = `${exactPt * PT_TO_PX}px`;
1927
1927
  } else if (typeof multiplier === "number" && multiplier > 0) {
1928
- result.lineHeight = chunkZ3FYYUGI_js.proportionalLineHeight(multiplier);
1928
+ result.lineHeight = chunkSBRSPTSA_js.proportionalLineHeight(multiplier);
1929
1929
  }
1930
1930
  return result;
1931
1931
  }
@@ -1947,7 +1947,7 @@ function groupSegmentsIntoParagraphs(segments) {
1947
1947
  return paragraphs;
1948
1948
  }
1949
1949
  function renderTextSegments(element, fallbackColor, emptyFallback, findHighlights, onHyperlinkClick, fieldContext, subElementAnimStates, segmentOverrides, requireCtrlClick) {
1950
- if (!chunkZ3FYYUGI_js.hasTextProperties(element)) {
1950
+ if (!chunkSBRSPTSA_js.hasTextProperties(element)) {
1951
1951
  return emptyFallback || null;
1952
1952
  }
1953
1953
  const effectiveSegments = segmentOverrides ?? element.textSegments;
@@ -1968,10 +1968,10 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
1968
1968
  return element.text || emptyFallback || "";
1969
1969
  }
1970
1970
  const paragraphs = groupSegmentsIntoParagraphs(effectiveSegments);
1971
- const paragraphIndents = chunkZ3FYYUGI_js.hasTextProperties(element) ? element.paragraphIndents : void 0;
1972
- const elementRtl = chunkZ3FYYUGI_js.hasTextProperties(element) ? element.textStyle?.rtl : void 0;
1973
- const elementAlign = chunkZ3FYYUGI_js.hasTextProperties(element) ? element.textStyle?.align : void 0;
1974
- const bodyStyle = chunkZ3FYYUGI_js.hasTextProperties(element) ? element.textStyle : void 0;
1971
+ const paragraphIndents = chunkSBRSPTSA_js.hasTextProperties(element) ? element.paragraphIndents : void 0;
1972
+ const elementRtl = chunkSBRSPTSA_js.hasTextProperties(element) ? element.textStyle?.rtl : void 0;
1973
+ const elementAlign = chunkSBRSPTSA_js.hasTextProperties(element) ? element.textStyle?.align : void 0;
1974
+ const bodyStyle = chunkSBRSPTSA_js.hasTextProperties(element) ? element.textStyle : void 0;
1975
1975
  const spaceFirstLast = bodyStyle?.spaceFirstLastParagraph !== false;
1976
1976
  return paragraphs.map(({ entries: paraSegments, terminator }, paraIndex) => {
1977
1977
  const paraIndent = paragraphIndents?.[paraIndex];
@@ -1986,14 +1986,14 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
1986
1986
  return Boolean(segment.text) && segment.text.trim().length > 0;
1987
1987
  });
1988
1988
  const hasBullet = bulletInfo && !bulletInfo.none && hasVisibleTextContent;
1989
- const paraRtl = chunkZ3FYYUGI_js.resolveParagraphRtl(paraSegments, elementRtl);
1989
+ const paraRtl = chunkSBRSPTSA_js.resolveParagraphRtl(paraSegments, elementRtl);
1990
1990
  const isRtlParagraph = paraRtl === true;
1991
- const paraAlign = chunkZ3FYYUGI_js.resolveParagraphAlign(paraSegments, elementAlign);
1992
- const cssTextAlign = chunkZ3FYYUGI_js.resolveCssTextAlign(paraAlign, isRtlParagraph);
1991
+ const paraAlign = chunkSBRSPTSA_js.resolveParagraphAlign(paraSegments, elementAlign);
1992
+ const cssTextAlign = chunkSBRSPTSA_js.resolveCssTextAlign(paraAlign, isRtlParagraph);
1993
1993
  const paraMarginLeft = isRtlParagraph ? void 0 : rawMarginLeft;
1994
1994
  const paraMarginRight = isRtlParagraph ? rawMarginLeft : void 0;
1995
1995
  const paraTextIndent = rawTextIndent;
1996
- const paraKinsokuStyle = chunkZ3FYYUGI_js.getKinsokuLineBreakStyles(firstSeg?.segment.style);
1996
+ const paraKinsokuStyle = chunkSBRSPTSA_js.getKinsokuLineBreakStyles(firstSeg?.segment.style);
1997
1997
  const hasParaKinsoku = Object.keys(paraKinsokuStyle).length > 0;
1998
1998
  const paraProps = effectiveSegments[firstSeg?.globalIndex ?? -1]?.paragraphProperties ?? (paraSegments.length === 0 ? terminator?.paragraphProperties : void 0);
1999
1999
  const spacing = resolveParagraphSpacing({
@@ -2003,7 +2003,7 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
2003
2003
  isLast: paraIndex === paragraphs.length - 1,
2004
2004
  spaceFirstLast
2005
2005
  });
2006
- const strutFontSize = chunkZ3FYYUGI_js.resolveParagraphStrutFontSize(
2006
+ const strutFontSize = chunkSBRSPTSA_js.resolveParagraphStrutFontSize(
2007
2007
  paraSegments.length > 0 ? paraSegments.map(({ segment }) => segment) : terminator ? [terminator] : [],
2008
2008
  bodyStyle?.fontSize
2009
2009
  );
@@ -2107,13 +2107,13 @@ function hexToRgbUnit(hex) {
2107
2107
  };
2108
2108
  }
2109
2109
  function getDuotoneColors(element) {
2110
- if (!chunkZ3FYYUGI_js.isImageLikeElement(element)) {
2110
+ if (!chunkSBRSPTSA_js.isImageLikeElement(element)) {
2111
2111
  return void 0;
2112
2112
  }
2113
2113
  return element.imageEffects?.duotone;
2114
2114
  }
2115
2115
  function buildLineShadowCss(element) {
2116
- if (!chunkZ3FYYUGI_js.hasShapeProperties(element)) {
2116
+ if (!chunkSBRSPTSA_js.hasShapeProperties(element)) {
2117
2117
  return void 0;
2118
2118
  }
2119
2119
  const ss = element.shapeStyle;
@@ -2124,13 +2124,13 @@ function buildLineShadowCss(element) {
2124
2124
  const offsetY = typeof ss.lineShadowOffsetY === "number" ? ss.lineShadowOffsetY : 2;
2125
2125
  const blur = typeof ss.lineShadowBlur === "number" ? Math.max(0, ss.lineShadowBlur) : 4;
2126
2126
  const opacity = typeof ss.lineShadowOpacity === "number" ? Math.max(0, Math.min(1, ss.lineShadowOpacity)) : 0.35;
2127
- return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${chunkZ3FYYUGI_js.colorWithOpacity(
2128
- chunkZ3FYYUGI_js.normalizeHexColor(ss.lineShadowColor, "#000000"),
2127
+ return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${chunkSBRSPTSA_js.colorWithOpacity(
2128
+ chunkSBRSPTSA_js.normalizeHexColor(ss.lineShadowColor, "#000000"),
2129
2129
  opacity
2130
2130
  )}`;
2131
2131
  }
2132
2132
  function buildLineGlowFilter(element) {
2133
- if (!chunkZ3FYYUGI_js.hasShapeProperties(element)) {
2133
+ if (!chunkSBRSPTSA_js.hasShapeProperties(element)) {
2134
2134
  return void 0;
2135
2135
  }
2136
2136
  const ss = element.shapeStyle;
@@ -2139,7 +2139,7 @@ function buildLineGlowFilter(element) {
2139
2139
  }
2140
2140
  const glowOpacity = typeof ss.lineGlowOpacity === "number" ? ss.lineGlowOpacity : 0.75;
2141
2141
  const glowRad = Math.round(Math.max(0, ss.lineGlowRadius));
2142
- const glowCol = chunkZ3FYYUGI_js.colorWithOpacity(chunkZ3FYYUGI_js.normalizeHexColor(ss.lineGlowColor, "#ffff00"), glowOpacity);
2142
+ const glowCol = chunkSBRSPTSA_js.colorWithOpacity(chunkSBRSPTSA_js.normalizeHexColor(ss.lineGlowColor, "#ffff00"), glowOpacity);
2143
2143
  return `drop-shadow(0 0 ${glowRad}px ${glowCol})`;
2144
2144
  }
2145
2145
  function mapDagBlendModeToCss(blend) {
@@ -2163,7 +2163,7 @@ function getDagDuotoneFilterId(elementId) {
2163
2163
  return `dag-duotone-${elementId}`;
2164
2164
  }
2165
2165
  function hasDagDuotoneEffect(element) {
2166
- if (!chunkZ3FYYUGI_js.hasShapeProperties(element)) {
2166
+ if (!chunkSBRSPTSA_js.hasShapeProperties(element)) {
2167
2167
  return false;
2168
2168
  }
2169
2169
  return Boolean(element.shapeStyle?.dagDuotone);
@@ -2226,7 +2226,7 @@ function getRoundRectRadiusPx2(element) {
2226
2226
 
2227
2227
  // src/viewer/utils/shape-visual-3d.ts
2228
2228
  function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elementHeight) {
2229
- return chunkZ3FYYUGI_js.build3DExtrusionData(
2229
+ return chunkSBRSPTSA_js.build3DExtrusionData(
2230
2230
  shape3d,
2231
2231
  scene3d,
2232
2232
  fillColor,
@@ -2235,7 +2235,7 @@ function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elemen
2235
2235
  );
2236
2236
  }
2237
2237
  function apply3dEffects2(base, scene3d, shape3d, fillColorFallback) {
2238
- chunkZ3FYYUGI_js.apply3dEffects(base, scene3d, shape3d, fillColorFallback);
2238
+ chunkSBRSPTSA_js.apply3dEffects(base, scene3d, shape3d, fillColorFallback);
2239
2239
  }
2240
2240
 
2241
2241
  // src/viewer/utils/shape-visual-style.ts
@@ -2243,43 +2243,43 @@ function getGradientTilingCss(style) {
2243
2243
  if (!style || style.fillMode !== "gradient") {
2244
2244
  return void 0;
2245
2245
  }
2246
- const isStructuredLinear = (style.fillGradientType || "linear") === "linear" && chunkZ3FYYUGI_js.sanitizeGradientStops(style.fillGradientStops).length > 0;
2246
+ const isStructuredLinear = (style.fillGradientType || "linear") === "linear" && chunkSBRSPTSA_js.sanitizeGradientStops(style.fillGradientStops).length > 0;
2247
2247
  if (isStructuredLinear) {
2248
- const flip = chunkZ3FYYUGI_js.getGradientTileFlipCss(style.fillGradientFlip);
2248
+ const flip = chunkSBRSPTSA_js.getGradientTileFlipCss(style.fillGradientFlip);
2249
2249
  if (flip) {
2250
2250
  return flip;
2251
2251
  }
2252
2252
  }
2253
- return chunkZ3FYYUGI_js.getGradientTileRectCss(style.fillGradientTileRect);
2253
+ return chunkSBRSPTSA_js.getGradientTileRectCss(style.fillGradientTileRect);
2254
2254
  }
2255
2255
  function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeColor, animatesFill, animatesStroke) {
2256
- if (!chunkZ3FYYUGI_js.hasShapeProperties(element)) {
2256
+ if (!chunkSBRSPTSA_js.hasShapeProperties(element)) {
2257
2257
  return {};
2258
2258
  }
2259
2259
  const normalizedShapeType = getShapeType(element.shapeType);
2260
- const clipPath = chunkZ3FYYUGI_js.getResolvedShapeClipPath(element);
2260
+ const clipPath = chunkSBRSPTSA_js.isIdentityRectClip(element) ? void 0 : chunkSBRSPTSA_js.getResolvedShapeClipPath(element);
2261
2261
  const rendersCustomVectorPath = (element.type === "shape" || element.type === "image" || element.type === "picture") && Boolean(element.pathData) && typeof element.pathWidth === "number" && element.pathWidth > 0 && typeof element.pathHeight === "number" && element.pathHeight > 0;
2262
- const rendersStrokeOnlyPreset = chunkZ3FYYUGI_js.isStrokeOnlyPresetElement(element);
2262
+ const rendersStrokeOnlyPreset = chunkSBRSPTSA_js.isStrokeOnlyPresetElement(element);
2263
2263
  const fillOpacity = element.shapeStyle?.fillOpacity;
2264
2264
  const strokeOpacity = element.shapeStyle?.strokeOpacity;
2265
- const strokeDash = chunkZ3FYYUGI_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2266
- const fillGradient = chunkZ3FYYUGI_js.buildCssGradientFromShapeStyle(element.shapeStyle, {
2265
+ const strokeDash = chunkSBRSPTSA_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2266
+ const fillGradient = chunkSBRSPTSA_js.buildCssGradientFromShapeStyle(element.shapeStyle, {
2267
2267
  rotation: element.rotation,
2268
2268
  width: element.width,
2269
2269
  height: element.height
2270
2270
  }) || element.shapeStyle?.fillGradient;
2271
- const shadowCss = chunkZ3FYYUGI_js.buildShadowCssFromShapeStyle(element.shapeStyle);
2272
- const innerShadowCss = chunkZ3FYYUGI_js.buildInnerShadowCssFromShapeStyle(element.shapeStyle);
2273
- const resolvedFillColor = chunkZ3FYYUGI_js.colorWithOpacity(fillColor, fillOpacity);
2274
- const resolvedStrokeColor = chunkZ3FYYUGI_js.colorWithOpacity(strokeColor, strokeOpacity);
2271
+ const shadowCss = chunkSBRSPTSA_js.buildShadowCssFromShapeStyle(element.shapeStyle);
2272
+ const innerShadowCss = chunkSBRSPTSA_js.buildInnerShadowCssFromShapeStyle(element.shapeStyle);
2273
+ const resolvedFillColor = chunkSBRSPTSA_js.colorWithOpacity(fillColor, fillOpacity);
2274
+ const resolvedStrokeColor = chunkSBRSPTSA_js.colorWithOpacity(strokeColor, strokeOpacity);
2275
2275
  const ss = element.shapeStyle;
2276
2276
  const gradientTiling = getGradientTilingCss(ss);
2277
- const paintsGradientOutline = chunkZ3FYYUGI_js.suppressesCssBorder(element);
2277
+ const paintsGradientOutline = chunkSBRSPTSA_js.suppressesCssBorder(element);
2278
2278
  const hasFillOverlayColor = Boolean(
2279
2279
  ss?.dagFillOverlayColor && ss.dagFillOverlayColor !== "transparent"
2280
2280
  );
2281
2281
  const combinedShadowParts = [];
2282
- const multiLayerShadow = chunkZ3FYYUGI_js.buildMultiLayerShadowCss(element.shapeStyle);
2282
+ const multiLayerShadow = chunkSBRSPTSA_js.buildMultiLayerShadowCss(element.shapeStyle);
2283
2283
  if (multiLayerShadow) {
2284
2284
  combinedShadowParts.push(multiLayerShadow);
2285
2285
  } else if (shadowCss) {
@@ -2288,7 +2288,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2288
2288
  if (innerShadowCss) {
2289
2289
  combinedShadowParts.push(innerShadowCss);
2290
2290
  }
2291
- const glowBoxShadow = chunkZ3FYYUGI_js.buildGlowBoxShadow(ss?.glowColor, ss?.glowRadius, ss?.glowOpacity);
2291
+ const glowBoxShadow = chunkSBRSPTSA_js.buildGlowBoxShadow(ss?.glowColor, ss?.glowRadius, ss?.glowOpacity);
2292
2292
  if (glowBoxShadow) {
2293
2293
  combinedShadowParts.push(glowBoxShadow);
2294
2294
  }
@@ -2296,7 +2296,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2296
2296
  if (lineShadow) {
2297
2297
  combinedShadowParts.push(lineShadow);
2298
2298
  }
2299
- const compoundLineShadow = chunkZ3FYYUGI_js.getCompoundLineBoxShadow(
2299
+ const compoundLineShadow = chunkSBRSPTSA_js.getCompoundLineBoxShadow(
2300
2300
  element.shapeStyle?.compoundLine,
2301
2301
  strokeWidth,
2302
2302
  resolvedStrokeColor
@@ -2309,11 +2309,11 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2309
2309
  if (ss?.glowColor && ss.glowColor !== "transparent" && ss.glowRadius) {
2310
2310
  const glowOpacity = typeof ss.glowOpacity === "number" ? ss.glowOpacity : 0.75;
2311
2311
  const glowRad = Math.round(Math.max(0, ss.glowRadius));
2312
- const glowCol = chunkZ3FYYUGI_js.colorWithOpacity(chunkZ3FYYUGI_js.normalizeHexColor(ss.glowColor, "#ffff00"), glowOpacity);
2312
+ const glowCol = chunkSBRSPTSA_js.colorWithOpacity(chunkSBRSPTSA_js.normalizeHexColor(ss.glowColor, "#ffff00"), glowOpacity);
2313
2313
  filterParts.push(`drop-shadow(0 0 ${glowRad}px ${glowCol})`);
2314
2314
  }
2315
2315
  if (typeof ss?.softEdgeRadius === "number" && ss.softEdgeRadius > 0) {
2316
- filterParts.push(`url(#${chunkZ3FYYUGI_js.getSoftEdgeFilterId(element.id)})`);
2316
+ filterParts.push(`url(#${chunkSBRSPTSA_js.getSoftEdgeFilterId(element.id)})`);
2317
2317
  }
2318
2318
  if (typeof ss?.blurRadius === "number" && ss.blurRadius > 0) {
2319
2319
  filterParts.push(`blur(${Math.round(ss.blurRadius)}px)`);
@@ -2322,13 +2322,13 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2322
2322
  if (lineGlowCss) {
2323
2323
  filterParts.push(lineGlowCss);
2324
2324
  }
2325
- const dagFilter = chunkZ3FYYUGI_js.getEffectDagFilter(ss, element.id);
2325
+ const dagFilter = chunkSBRSPTSA_js.getEffectDagFilter(ss, element.id);
2326
2326
  if (dagFilter) {
2327
2327
  filterParts.push(dagFilter);
2328
2328
  }
2329
2329
  const lineJoinCss = ss?.lineJoin === "round" ? "round" : ss?.lineJoin === "bevel" ? "bevel" : ss?.lineJoin === "miter" ? "miter" : void 0;
2330
2330
  const miterLimitCss = ss?.lineJoin === "miter" && typeof ss?.miterLimit === "number" ? Math.max(ss.miterLimit / 1e5, 1) : void 0;
2331
- const patternFill = chunkZ3FYYUGI_js.buildPatternFillCss(element.shapeStyle);
2331
+ const patternFill = chunkSBRSPTSA_js.buildPatternFillCss(element.shapeStyle);
2332
2332
  const imageFillUrl = ss?.fillMode === "image" && ss.fillImageUrl ? ss.fillImageUrl : void 0;
2333
2333
  const imageFillMode = ss?.fillImageMode || "stretch";
2334
2334
  let reflectCss;
@@ -2340,7 +2340,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2340
2340
  const endOpacity = typeof ss.reflectionEndOpacity === "number" ? ss.reflectionEndOpacity : 0;
2341
2341
  const fadeLength = typeof ss.reflectionEndPosition === "number" ? Math.round(ss.reflectionEndPosition * Math.max(element.height, 1)) : 100;
2342
2342
  const blurRadius = typeof ss.reflectionBlurRadius === "number" ? ss.reflectionBlurRadius : 0;
2343
- reflectCss = chunkZ3FYYUGI_js.buildReflectionCss(distance, startOpacity, endOpacity, fadeLength, blurRadius);
2343
+ reflectCss = chunkSBRSPTSA_js.buildReflectionCss(distance, startOpacity, endOpacity, fadeLength, blurRadius);
2344
2344
  }
2345
2345
  }
2346
2346
  const base = {
@@ -2386,9 +2386,9 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2386
2386
  // path following the shape's geometry, because a CSS border can only take
2387
2387
  // one colour. Keeping the border too would draw the parser's averaged
2388
2388
  // solid underneath the gradient.
2389
- borderWidth: strokeWidth > 0 && !paintsGradientOutline ? chunkZ3FYYUGI_js.getCompoundLineBorderWidth(ss?.compoundLine, strokeWidth) : 0,
2389
+ borderWidth: strokeWidth > 0 && !paintsGradientOutline ? chunkSBRSPTSA_js.getCompoundLineBorderWidth(ss?.compoundLine, strokeWidth) : 0,
2390
2390
  borderColor: strokeWidth > 0 && !paintsGradientOutline ? resolvedStrokeColor : void 0,
2391
- borderStyle: strokeWidth > 0 && !paintsGradientOutline ? chunkZ3FYYUGI_js.getCssBorderDashStyle(strokeDash, ss?.compoundLine) : void 0,
2391
+ borderStyle: strokeWidth > 0 && !paintsGradientOutline ? chunkSBRSPTSA_js.getCssBorderDashStyle(strokeDash, ss?.compoundLine) : void 0,
2392
2392
  strokeLinejoin: lineJoinCss,
2393
2393
  strokeMiterlimit: miterLimitCss,
2394
2394
  strokeLinecap: ss?.lineCap === "rnd" ? "round" : ss?.lineCap === "sq" ? "square" : ss?.lineCap === "flat" ? "butt" : void 0
@@ -2428,7 +2428,11 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2428
2428
  if (normalizedShapeType === "ellipse") {
2429
2429
  return {
2430
2430
  ...base,
2431
- borderRadius: "9999px"
2431
+ // `50%`, not a huge px value: CSS clamps over-large radii by scaling
2432
+ // them all down uniformly, so `9999px` on a non-square box collapses to
2433
+ // half the SHORT side on every corner - a pill with flat long edges,
2434
+ // not an ellipse. `50%` resolves per-axis and inscribes correctly.
2435
+ borderRadius: "50%"
2432
2436
  };
2433
2437
  }
2434
2438
  if (clipPath && !rendersStrokeOnlyPreset) {
@@ -2444,7 +2448,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2444
2448
  borderWidth: 0,
2445
2449
  borderTopWidth: Math.max(strokeWidth, 2),
2446
2450
  borderTopColor: resolvedStrokeColor,
2447
- borderTopStyle: chunkZ3FYYUGI_js.getCssBorderDashStyle(strokeDash)
2451
+ borderTopStyle: chunkSBRSPTSA_js.getCssBorderDashStyle(strokeDash)
2448
2452
  };
2449
2453
  }
2450
2454
  if (normalizedShapeType === "cylinder") {
@@ -2458,13 +2462,13 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2458
2462
  function getConnectorAdjustment(element, key, fallback) {
2459
2463
  const direct = element.shapeAdjustments?.[key];
2460
2464
  if (typeof direct === "number" && Number.isFinite(direct)) {
2461
- return chunkZ3FYYUGI_js.clampUnitInterval(direct / 1e5);
2465
+ return chunkSBRSPTSA_js.clampUnitInterval(direct / 1e5);
2462
2466
  }
2463
2467
  const fallbackKey = element.shapeAdjustments?.adj;
2464
2468
  if (typeof fallbackKey === "number" && Number.isFinite(fallbackKey)) {
2465
- return chunkZ3FYYUGI_js.clampUnitInterval(fallbackKey / 1e5);
2469
+ return chunkSBRSPTSA_js.clampUnitInterval(fallbackKey / 1e5);
2466
2470
  }
2467
- return chunkZ3FYYUGI_js.clampUnitInterval(fallback);
2471
+ return chunkSBRSPTSA_js.clampUnitInterval(fallback);
2468
2472
  }
2469
2473
  function getConnectorPathGeometry(element) {
2470
2474
  const width = Math.max(element.width, 0);
@@ -2597,7 +2601,7 @@ function toHexByte(value) {
2597
2601
  return clamped.toString(16).padStart(2, "0");
2598
2602
  }
2599
2603
  function shiftHex(hex, factor, towardsWhite) {
2600
- const channels = chunkZ3FYYUGI_js.hexToRgbChannels(hex);
2604
+ const channels = chunkSBRSPTSA_js.hexToRgbChannels(hex);
2601
2605
  if (!channels) {
2602
2606
  return hex;
2603
2607
  }
@@ -2623,7 +2627,7 @@ function buildCustomSubpathPaints(subpaths, hasFill, fillColor, fillOpacity) {
2623
2627
  const fillOff = subpath.fillMode === "none" || !hasFill;
2624
2628
  return {
2625
2629
  d: subpath.d,
2626
- fill: fillOff ? "none" : chunkZ3FYYUGI_js.colorWithOpacity(adjustFillForMode(fillColor, subpath.fillMode), fillOpacity),
2630
+ fill: fillOff ? "none" : chunkSBRSPTSA_js.colorWithOpacity(adjustFillForMode(fillColor, subpath.fillMode), fillOpacity),
2627
2631
  stroked: subpath.stroke !== false
2628
2632
  };
2629
2633
  });
@@ -2639,11 +2643,11 @@ function strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray) {
2639
2643
  strokePaint,
2640
2644
  strokeWidth,
2641
2645
  dashArray,
2642
- lineCap: chunkZ3FYYUGI_js.svgLineCap(shapeStyle?.lineCap),
2646
+ lineCap: chunkSBRSPTSA_js.svgLineCap(shapeStyle?.lineCap),
2643
2647
  lineJoin,
2644
2648
  miterLimit,
2645
- offsets: chunkZ3FYYUGI_js.getCompoundLineOffsets(shapeStyle?.compoundLine, strokeWidth),
2646
- widths: chunkZ3FYYUGI_js.getCompoundLineWidths(shapeStyle?.compoundLine, strokeWidth)
2649
+ offsets: chunkSBRSPTSA_js.getCompoundLineOffsets(shapeStyle?.compoundLine, strokeWidth),
2650
+ widths: chunkSBRSPTSA_js.getCompoundLineWidths(shapeStyle?.compoundLine, strokeWidth)
2647
2651
  };
2648
2652
  }
2649
2653
  function strokeStrands(d, keyBase, ctx) {
@@ -2691,9 +2695,9 @@ function gradientDefs(gradient) {
2691
2695
  }
2692
2696
  function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredPaths, shapeStyle, hasFill, fillColor, fillOpacity, strokePaint, strokeWidth, dashArray, animatesFill = false, gradient) {
2693
2697
  const ctx = strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray);
2694
- const subpaths = structuredPaths && structuredPaths.length > 0 ? chunkZ3FYYUGI_js.customGeometryPathsToSvgSubpaths(structuredPaths, pathWidth, pathHeight) : void 0;
2698
+ const subpaths = structuredPaths && structuredPaths.length > 0 ? chunkSBRSPTSA_js.customGeometryPathsToSvgSubpaths(structuredPaths, pathWidth, pathHeight) : void 0;
2695
2699
  const needsPerSubpath = subpaths !== void 0 && subpaths.some((sp) => sp.fillMode && sp.fillMode !== "norm" || sp.stroke === false);
2696
- const gradientPaint = gradient ? chunkZ3FYYUGI_js.svgGradientFillRef(gradient) : void 0;
2700
+ const gradientPaint = gradient ? chunkSBRSPTSA_js.svgGradientFillRef(gradient) : void 0;
2697
2701
  const nodes = [];
2698
2702
  if (subpaths && needsPerSubpath) {
2699
2703
  const paints = buildCustomSubpathPaints(subpaths, hasFill, fillColor, fillOpacity);
@@ -2725,7 +2729,7 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
2725
2729
  "path",
2726
2730
  {
2727
2731
  d: pathData,
2728
- fill: animatesFill ? "inherit" : gradientPaint ?? chunkZ3FYYUGI_js.colorWithOpacity(fillColor, fillOpacity),
2732
+ fill: animatesFill ? "inherit" : gradientPaint ?? chunkSBRSPTSA_js.colorWithOpacity(fillColor, fillOpacity),
2729
2733
  stroke: "none",
2730
2734
  vectorEffect: "non-scaling-stroke"
2731
2735
  },
@@ -2751,14 +2755,14 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
2751
2755
  );
2752
2756
  }
2753
2757
  function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor, animatesFill, animatesStroke) {
2754
- if (!chunkZ3FYYUGI_js.hasShapeProperties(element)) {
2758
+ if (!chunkSBRSPTSA_js.hasShapeProperties(element)) {
2755
2759
  return null;
2756
2760
  }
2757
2761
  const normalizedType = (element.shapeType || "").toLowerCase();
2758
- const fillPaint = animatesFill ? "inherit" : chunkZ3FYYUGI_js.colorWithOpacity(fillColor, element.shapeStyle?.fillOpacity);
2759
- const strokePaint = animatesStroke ? "inherit" : chunkZ3FYYUGI_js.colorWithOpacity(strokeColor, element.shapeStyle?.strokeOpacity);
2760
- const dashType = chunkZ3FYYUGI_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2761
- const dashArray = chunkZ3FYYUGI_js.getSvgStrokeDasharray(
2762
+ const fillPaint = animatesFill ? "inherit" : chunkSBRSPTSA_js.colorWithOpacity(fillColor, element.shapeStyle?.fillOpacity);
2763
+ const strokePaint = animatesStroke ? "inherit" : chunkSBRSPTSA_js.colorWithOpacity(strokeColor, element.shapeStyle?.strokeOpacity);
2764
+ const dashType = chunkSBRSPTSA_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2765
+ const dashArray = chunkSBRSPTSA_js.getSvgStrokeDasharray(
2762
2766
  dashType,
2763
2767
  Math.max(strokeWidth, 1),
2764
2768
  element.shapeStyle?.customDashSegments
@@ -2839,21 +2843,21 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2839
2843
  // container's `background-image` is suppressed for custom geometry, so
2840
2844
  // without this the shape fell back to the parser's representative solid
2841
2845
  // and lost every fade (issue #132).
2842
- chunkZ3FYYUGI_js.buildSvgGradientDef(element.shapeStyle, element.id)
2846
+ chunkSBRSPTSA_js.buildSvgGradientDef(element.shapeStyle, element.id)
2843
2847
  );
2844
2848
  }
2845
- if (chunkZ3FYYUGI_js.isCalloutShape(normalizedType)) {
2849
+ if (chunkSBRSPTSA_js.isCalloutShape(normalizedType)) {
2846
2850
  const width = Math.max(element.width, 1);
2847
2851
  const height = Math.max(element.height, 1);
2848
- const geometry = chunkZ3FYYUGI_js.getCalloutLeaderLineGeometry(
2852
+ const geometry = chunkSBRSPTSA_js.getCalloutLeaderLineGeometry(
2849
2853
  normalizedType,
2850
2854
  width,
2851
2855
  height,
2852
2856
  element.shapeAdjustments
2853
2857
  );
2854
2858
  if (geometry && geometry.points.length >= 2) {
2855
- const leaderPath = chunkZ3FYYUGI_js.buildCalloutLeaderLineSvgPath(geometry);
2856
- const bounds = chunkZ3FYYUGI_js.getCalloutViewBoxBounds(width, height, geometry);
2859
+ const leaderPath = chunkSBRSPTSA_js.buildCalloutLeaderLineSvgPath(geometry);
2860
+ const bounds = chunkSBRSPTSA_js.getCalloutViewBoxBounds(width, height, geometry);
2857
2861
  const lineStroke = Math.max(strokeWidth, 1);
2858
2862
  const offsetLeft = bounds.minX;
2859
2863
  const offsetTop = bounds.minY;
@@ -2916,10 +2920,10 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2916
2920
  const endArrowW = element.shapeStyle?.connectorEndArrowWidth;
2917
2921
  const endArrowL = element.shapeStyle?.connectorEndArrowLength;
2918
2922
  const compoundLine = element.shapeStyle?.compoundLine;
2919
- const connectorLineCap = chunkZ3FYYUGI_js.svgLineCap(element.shapeStyle?.lineCap);
2923
+ const connectorLineCap = chunkSBRSPTSA_js.svgLineCap(element.shapeStyle?.lineCap);
2920
2924
  const hitTargetWidth = Math.max(strokeWidth * 3, 12);
2921
- const offsets = chunkZ3FYYUGI_js.getCompoundLineOffsets(compoundLine, strokeWidth);
2922
- const widths = chunkZ3FYYUGI_js.getCompoundLineWidths(compoundLine, strokeWidth);
2925
+ const offsets = chunkSBRSPTSA_js.getCompoundLineOffsets(compoundLine, strokeWidth);
2926
+ const widths = chunkSBRSPTSA_js.getCompoundLineWidths(compoundLine, strokeWidth);
2923
2927
  return /* @__PURE__ */ jsxRuntime.jsxs(
2924
2928
  "svg",
2925
2929
  {
@@ -2986,15 +2990,15 @@ function parseGradientFillCss(gradFill) {
2986
2990
  }
2987
2991
  const parsed = stops.map((gs) => {
2988
2992
  const pos = Number.parseInt(String(gs["@_pos"] || "0"), 10) / 1e3;
2989
- const color = chunkZ3FYYUGI_js.parseDrawingColor(gs) ?? "#888888";
2990
- const opacity = chunkZ3FYYUGI_js.parseDrawingColorOpacity(gs);
2991
- return { pos, color: chunkZ3FYYUGI_js.colorWithOpacity(color, opacity) };
2993
+ const color = chunkSBRSPTSA_js.parseDrawingColor(gs) ?? "#888888";
2994
+ const opacity = chunkSBRSPTSA_js.parseDrawingColorOpacity(gs);
2995
+ return { pos, color: chunkSBRSPTSA_js.colorWithOpacity(color, opacity) };
2992
2996
  }).sort((a, b) => a.pos - b.pos);
2993
2997
  const stopStrings = parsed.map((s) => `${s.color} ${s.pos.toFixed(1)}%`).join(", ");
2994
2998
  const lin = gradFill["a:lin"];
2995
2999
  if (lin) {
2996
3000
  const angRaw = Number.parseInt(String(lin["@_ang"] || "0"), 10);
2997
- const angleDeg = Math.round(chunkZ3FYYUGI_js.ooxmlGradientAngleToCssDegrees(angRaw / 6e4));
3001
+ const angleDeg = Math.round(chunkSBRSPTSA_js.ooxmlGradientAngleToCssDegrees(angRaw / 6e4));
2998
3002
  return `linear-gradient(${angleDeg}deg, ${stopStrings})`;
2999
3003
  }
3000
3004
  const path = gradFill["a:path"];
@@ -3029,8 +3033,8 @@ function parsePatternFillCss(pattFill) {
3029
3033
  if (!pattFill) {
3030
3034
  return void 0;
3031
3035
  }
3032
- const fgColor = chunkZ3FYYUGI_js.parseDrawingColor(pattFill["a:fgClr"]) ?? "#000000";
3033
- const bgColor = chunkZ3FYYUGI_js.parseDrawingColor(pattFill["a:bgClr"]) ?? "#ffffff";
3036
+ const fgColor = chunkSBRSPTSA_js.parseDrawingColor(pattFill["a:fgClr"]) ?? "#000000";
3037
+ const bgColor = chunkSBRSPTSA_js.parseDrawingColor(pattFill["a:bgClr"]) ?? "#ffffff";
3034
3038
  const preset = String(pattFill["@_prst"] || "ltDnDiag");
3035
3039
  switch (preset) {
3036
3040
  case "ltHorz":
@@ -3141,11 +3145,11 @@ function parseCellBorders(cellProperties) {
3141
3145
  const prstDash = ln["a:prstDash"];
3142
3146
  const dashVal = prstDash ? String(prstDash["@_val"] || "") : void 0;
3143
3147
  const cssBorderStyle = ooxmlDashToCss(dashVal);
3144
- const color = chunkZ3FYYUGI_js.parseDrawingColor(ln["a:solidFill"]);
3148
+ const color = chunkSBRSPTSA_js.parseDrawingColor(ln["a:solidFill"]);
3145
3149
  if (color) {
3146
- const opacity = chunkZ3FYYUGI_js.parseDrawingColorOpacity(ln["a:solidFill"]);
3150
+ const opacity = chunkSBRSPTSA_js.parseDrawingColorOpacity(ln["a:solidFill"]);
3147
3151
  const key = `${edge.prefix}`;
3148
- borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${chunkZ3FYYUGI_js.colorWithOpacity(color, opacity)}`;
3152
+ borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${chunkSBRSPTSA_js.colorWithOpacity(color, opacity)}`;
3149
3153
  }
3150
3154
  }
3151
3155
  return borderStyle;
@@ -3158,7 +3162,7 @@ function parseCellTextEffects(runProps) {
3158
3162
  const textShadowParts = [];
3159
3163
  const outerShdw = effectLst["a:outerShdw"];
3160
3164
  if (outerShdw) {
3161
- const shdwColor = chunkZ3FYYUGI_js.parseDrawingColor(outerShdw);
3165
+ const shdwColor = chunkSBRSPTSA_js.parseDrawingColor(outerShdw);
3162
3166
  if (shdwColor) {
3163
3167
  const blurRad = Number.parseInt(String(outerShdw["@_blurRad"] || "0"), 10);
3164
3168
  const blurPx = blurRad > 0 ? Math.round(blurRad / 12700) : 0;
@@ -3176,7 +3180,7 @@ function parseCellTextEffects(runProps) {
3176
3180
  }
3177
3181
  const glow = effectLst["a:glow"];
3178
3182
  if (glow) {
3179
- const glowColor = chunkZ3FYYUGI_js.parseDrawingColor(glow);
3183
+ const glowColor = chunkSBRSPTSA_js.parseDrawingColor(glow);
3180
3184
  if (glowColor) {
3181
3185
  const glowRad = Number.parseInt(String(glow["@_rad"] || "0"), 10);
3182
3186
  const glowPx = glowRad > 0 ? Math.round(glowRad / 12700) : 2;
@@ -3255,10 +3259,10 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
3255
3259
  if (runProps?.["@_u"] !== void 0) {
3256
3260
  cellStyle.textDecorationLine = runProps["@_u"] === "sng" ? "underline" : "none";
3257
3261
  }
3258
- const runColor = chunkZ3FYYUGI_js.parseDrawingColor(runProps?.["a:solidFill"], schemeColorOverrides) || chunkZ3FYYUGI_js.parseDrawingColor(runProps?.["a:highlight"], schemeColorOverrides);
3262
+ const runColor = chunkSBRSPTSA_js.parseDrawingColor(runProps?.["a:solidFill"], schemeColorOverrides) || chunkSBRSPTSA_js.parseDrawingColor(runProps?.["a:highlight"], schemeColorOverrides);
3259
3263
  if (runColor) {
3260
- const opacity = chunkZ3FYYUGI_js.parseDrawingColorOpacity(runProps?.["a:solidFill"]);
3261
- cellStyle.color = chunkZ3FYYUGI_js.colorWithOpacity(runColor, opacity);
3264
+ const opacity = chunkSBRSPTSA_js.parseDrawingColorOpacity(runProps?.["a:solidFill"]);
3265
+ cellStyle.color = chunkSBRSPTSA_js.colorWithOpacity(runColor, opacity);
3262
3266
  }
3263
3267
  const fontFamily = runProps?.["a:latin"]?.["@_typeface"] || runProps?.["a:ea"]?.["@_typeface"] || runProps?.["a:cs"]?.["@_typeface"];
3264
3268
  if (fontFamily) {
@@ -3268,15 +3272,15 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
3268
3272
  cellStyle.textAlign = parseParagraphAlignment(paragraphProperties["@_algn"]);
3269
3273
  }
3270
3274
  const cellProperties = cellXml["a:tcPr"];
3271
- const cellFill = chunkZ3FYYUGI_js.parseDrawingColor(
3275
+ const cellFill = chunkSBRSPTSA_js.parseDrawingColor(
3272
3276
  cellProperties?.["a:solidFill"],
3273
3277
  schemeColorOverrides
3274
3278
  );
3275
3279
  if (cellFill) {
3276
- const opacity = chunkZ3FYYUGI_js.parseDrawingColorOpacity(
3280
+ const opacity = chunkSBRSPTSA_js.parseDrawingColorOpacity(
3277
3281
  cellProperties?.["a:solidFill"]
3278
3282
  );
3279
- cellStyle.backgroundColor = chunkZ3FYYUGI_js.colorWithOpacity(cellFill, opacity);
3283
+ cellStyle.backgroundColor = chunkSBRSPTSA_js.colorWithOpacity(cellFill, opacity);
3280
3284
  } else {
3281
3285
  const gradCss = parseGradientFillCss(cellProperties?.["a:gradFill"]);
3282
3286
  if (gradCss) {
@@ -3291,16 +3295,16 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
3291
3295
  const edgeBorders = parseCellBorders(cellProperties);
3292
3296
  Object.assign(cellStyle, edgeBorders);
3293
3297
  if (!cellStyle.borderLeftColor && !cellStyle.borderRightColor && !cellStyle.borderTopColor && !cellStyle.borderBottomColor) {
3294
- const borderColor = chunkZ3FYYUGI_js.parseDrawingColor(
3298
+ const borderColor = chunkSBRSPTSA_js.parseDrawingColor(
3295
3299
  cellProperties?.["a:lnL"]?.["a:solidFill"],
3296
3300
  schemeColorOverrides
3297
- ) || chunkZ3FYYUGI_js.parseDrawingColor(
3301
+ ) || chunkSBRSPTSA_js.parseDrawingColor(
3298
3302
  cellProperties?.["a:lnR"]?.["a:solidFill"],
3299
3303
  schemeColorOverrides
3300
- ) || chunkZ3FYYUGI_js.parseDrawingColor(
3304
+ ) || chunkSBRSPTSA_js.parseDrawingColor(
3301
3305
  cellProperties?.["a:lnT"]?.["a:solidFill"],
3302
3306
  schemeColorOverrides
3303
- ) || chunkZ3FYYUGI_js.parseDrawingColor(
3307
+ ) || chunkSBRSPTSA_js.parseDrawingColor(
3304
3308
  cellProperties?.["a:lnB"]?.["a:solidFill"],
3305
3309
  schemeColorOverrides
3306
3310
  );
@@ -3379,10 +3383,10 @@ function resolveTableStyleFillColor(fill, colorScheme) {
3379
3383
  }
3380
3384
  let color = base;
3381
3385
  if (fill.tint !== void 0 && fill.tint > 0) {
3382
- color = chunkZ3FYYUGI_js.tintColor2(color, fill.tint / 1e5);
3386
+ color = chunkSBRSPTSA_js.tintColor2(color, fill.tint / 1e5);
3383
3387
  }
3384
3388
  if (fill.shade !== void 0 && fill.shade > 0) {
3385
- color = chunkZ3FYYUGI_js.shadeColor2(color, 1 - fill.shade / 1e5);
3389
+ color = chunkSBRSPTSA_js.shadeColor2(color, 1 - fill.shade / 1e5);
3386
3390
  }
3387
3391
  return color;
3388
3392
  }
@@ -3407,7 +3411,7 @@ function applyTableStyleText(text, colorScheme, style, fontScheme) {
3407
3411
  style.fontFamily = text.fontFace;
3408
3412
  applied = true;
3409
3413
  } else {
3410
- const refFont = chunkZ3FYYUGI_js.resolveFontRefIdx(text.fontRefIdx, fontScheme);
3414
+ const refFont = chunkSBRSPTSA_js.resolveFontRefIdx(text.fontRefIdx, fontScheme);
3411
3415
  if (refFont) {
3412
3416
  style.fontFamily = refFont;
3413
3417
  applied = true;
@@ -3418,10 +3422,10 @@ function applyTableStyleText(text, colorScheme, style, fontScheme) {
3418
3422
  if (base) {
3419
3423
  let color = base;
3420
3424
  if (text.fontTint !== void 0 && text.fontTint > 0) {
3421
- color = chunkZ3FYYUGI_js.tintColor2(color, text.fontTint / 1e5);
3425
+ color = chunkSBRSPTSA_js.tintColor2(color, text.fontTint / 1e5);
3422
3426
  }
3423
3427
  if (text.fontShade !== void 0 && text.fontShade > 0) {
3424
- color = chunkZ3FYYUGI_js.shadeColor2(color, 1 - text.fontShade / 1e5);
3428
+ color = chunkSBRSPTSA_js.shadeColor2(color, 1 - text.fontShade / 1e5);
3425
3429
  }
3426
3430
  style.color = color;
3427
3431
  applied = true;
@@ -3610,7 +3614,7 @@ function parseTableElementData(element, fallbackTextStyle) {
3610
3614
  };
3611
3615
  }
3612
3616
  function getCellDiagonalBorders2(style, tableData, pos, styleCtx) {
3613
- return chunkZ3FYYUGI_js.getCellDiagonalBorders(style, tableData, pos, {
3617
+ return chunkSBRSPTSA_js.getCellDiagonalBorders(style, tableData, pos, {
3614
3618
  tableStyleMap: styleCtx?.tableStyleMap,
3615
3619
  colorScheme: styleCtx?.theme?.colorScheme,
3616
3620
  fontScheme: styleCtx?.theme?.fontScheme
@@ -3758,9 +3762,9 @@ function cellStyleToCss(style) {
3758
3762
  if (style.gradientFillCss) {
3759
3763
  css.background = style.gradientFillCss;
3760
3764
  } else if (style.fillMode === "pattern" && style.patternFillPreset) {
3761
- const fg = chunkZ3FYYUGI_js.normalizeHexColor(style.patternFillForeground, "#000000");
3762
- const bg = chunkZ3FYYUGI_js.normalizeHexColor(style.patternFillBackground, "#ffffff");
3763
- const svgPattern = chunkZ3FYYUGI_js.getPatternSvg(style.patternFillPreset, fg, bg);
3765
+ const fg = chunkSBRSPTSA_js.normalizeHexColor(style.patternFillForeground, "#000000");
3766
+ const bg = chunkSBRSPTSA_js.normalizeHexColor(style.patternFillBackground, "#ffffff");
3767
+ const svgPattern = chunkSBRSPTSA_js.getPatternSvg(style.patternFillPreset, fg, bg);
3764
3768
  if (svgPattern) {
3765
3769
  const encoded = encodeURIComponent(svgPattern);
3766
3770
  css.backgroundImage = `url("data:image/svg+xml,${encoded}")`;
@@ -3836,7 +3840,7 @@ function cellStyleToCss(style) {
3836
3840
  if (edge.width || edge.color) {
3837
3841
  const w = edge.width ?? 1;
3838
3842
  const c = edge.color ?? style.borderColor ?? "#000000";
3839
- const s = chunkZ3FYYUGI_js.ooxmlDashToCssBorderStyle(edge.dash);
3843
+ const s = chunkSBRSPTSA_js.ooxmlDashToCssBorderStyle(edge.dash);
3840
3844
  css[edge.prefix] = `${w}px ${s} ${c}`;
3841
3845
  }
3842
3846
  }
@@ -3867,7 +3871,7 @@ function cellStyleToCss(style) {
3867
3871
  css.textShadow = textShadowParts.join(", ");
3868
3872
  }
3869
3873
  if (style.cell3D) {
3870
- Object.assign(css, chunkZ3FYYUGI_js.cell3DBevelCss(style.cell3D));
3874
+ Object.assign(css, chunkSBRSPTSA_js.cell3DBevelCss(style.cell3D));
3871
3875
  }
3872
3876
  return css;
3873
3877
  }
@@ -3881,7 +3885,7 @@ function TableResizeOverlay({
3881
3885
  const containerRef = React6.useRef(null);
3882
3886
  const [rowBounds, setRowBounds] = React6.useState([]);
3883
3887
  const dragRef = React6.useRef(null);
3884
- const colBoundaries = React6.useMemo(() => chunkZ3FYYUGI_js.computeColumnBoundaries(columnWidths), [columnWidths]);
3888
+ const colBoundaries = React6.useMemo(() => chunkSBRSPTSA_js.computeColumnBoundaries(columnWidths), [columnWidths]);
3885
3889
  const measureRows = React6.useCallback(() => {
3886
3890
  const container = containerRef.current;
3887
3891
  if (!container) {
@@ -3928,11 +3932,11 @@ function TableResizeOverlay({
3928
3932
  const rect = containerRef.current.getBoundingClientRect();
3929
3933
  if (drag.type === "col" && drag.initialWidths && onResizeColumns) {
3930
3934
  const deltaProp = (e.clientX - drag.startPos) / rect.width;
3931
- onResizeColumns(chunkZ3FYYUGI_js.computeResizedColumnWidths(drag.initialWidths, drag.index, deltaProp));
3935
+ onResizeColumns(chunkSBRSPTSA_js.computeResizedColumnWidths(drag.initialWidths, drag.index, deltaProp));
3932
3936
  } else if (drag.type === "row" && onResizeRow) {
3933
3937
  const deltaY = e.clientY - drag.startPos;
3934
- const newHeight = chunkZ3FYYUGI_js.computeResizedRowHeight(
3935
- drag.initialRowHeight ?? chunkZ3FYYUGI_js.DEFAULT_ROW_HEIGHT,
3938
+ const newHeight = chunkSBRSPTSA_js.computeResizedRowHeight(
3939
+ drag.initialRowHeight ?? chunkSBRSPTSA_js.DEFAULT_ROW_HEIGHT,
3936
3940
  deltaY
3937
3941
  );
3938
3942
  onResizeRow(drag.index, newHeight);
@@ -3970,7 +3974,7 @@ function TableResizeOverlay({
3970
3974
  e.stopPropagation();
3971
3975
  const table = containerRef.current?.querySelector("table");
3972
3976
  const tr = table?.querySelectorAll("tbody > tr")[index];
3973
- const actualHeight = tr?.offsetHeight ?? chunkZ3FYYUGI_js.DEFAULT_ROW_HEIGHT;
3977
+ const actualHeight = tr?.offsetHeight ?? chunkSBRSPTSA_js.DEFAULT_ROW_HEIGHT;
3974
3978
  document.body.style.cursor = "row-resize";
3975
3979
  document.body.style.userSelect = "none";
3976
3980
  dragRef.current = {
@@ -4018,7 +4022,7 @@ function renderTableFromTableData(element, textStyle, options) {
4018
4022
  }
4019
4023
  const first = selectedCell.selectedCells[0];
4020
4024
  const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
4021
- return chunkZ3FYYUGI_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableData);
4025
+ return chunkSBRSPTSA_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableData);
4022
4026
  })();
4023
4027
  return /* @__PURE__ */ jsxRuntime.jsx(
4024
4028
  TableResizeOverlay,
@@ -4038,7 +4042,7 @@ function renderTableFromTableData(element, textStyle, options) {
4038
4042
  "table",
4039
4043
  {
4040
4044
  className: "w-full h-full border-collapse table-fixed",
4041
- style: { fontFamily: chunkZ3FYYUGI_js.DEFAULT_FONT_FAMILY },
4045
+ style: { fontFamily: chunkSBRSPTSA_js.DEFAULT_FONT_FAMILY },
4042
4046
  children: [
4043
4047
  tableData.columnWidths.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("colgroup", { children: tableData.columnWidths.map((w, ci) => /* @__PURE__ */ jsxRuntime.jsx(
4044
4048
  "col",
@@ -4056,7 +4060,7 @@ function renderTableFromTableData(element, textStyle, options) {
4056
4060
  return null;
4057
4061
  }
4058
4062
  const isCellSelected = selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex;
4059
- const isInMultiSelection = chunkZ3FYYUGI_js.isCellInRect(rowIndex, cellIndex, selectionRect);
4063
+ const isInMultiSelection = chunkSBRSPTSA_js.isCellInRect(rowIndex, cellIndex, selectionRect);
4060
4064
  const isCellEditing = isCellSelected && selectedCell?.isEditing;
4061
4065
  const diag = getCellDiagonalBorders2(
4062
4066
  cell.style,
@@ -4086,7 +4090,7 @@ function renderTableFromTableData(element, textStyle, options) {
4086
4090
  }
4087
4091
  event.stopPropagation();
4088
4092
  if (event.shiftKey && selectedCell) {
4089
- const rect = chunkZ3FYYUGI_js.computeSelectionRect(
4093
+ const rect = chunkSBRSPTSA_js.computeSelectionRect(
4090
4094
  selectedCell.rowIndex,
4091
4095
  selectedCell.columnIndex,
4092
4096
  rowIndex,
@@ -4096,7 +4100,7 @@ function renderTableFromTableData(element, textStyle, options) {
4096
4100
  options?.onSelectCell?.({
4097
4101
  rowIndex: selectedCell.rowIndex,
4098
4102
  columnIndex: selectedCell.columnIndex,
4099
- selectedCells: chunkZ3FYYUGI_js.rectToCells(rect)
4103
+ selectedCells: chunkSBRSPTSA_js.rectToCells(rect)
4100
4104
  });
4101
4105
  } else {
4102
4106
  options?.onSelectCell?.({
@@ -4175,7 +4179,7 @@ function renderTableElement(element, textStyle, options) {
4175
4179
  }
4176
4180
  const first = selectedCell.selectedCells[0];
4177
4181
  const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
4178
- return chunkZ3FYYUGI_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableEl.tableData);
4182
+ return chunkSBRSPTSA_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableEl.tableData);
4179
4183
  })();
4180
4184
  const schemeOverrides = options?.styleCtx?.theme?.colorScheme ? options.styleCtx.theme.colorScheme : void 0;
4181
4185
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -4196,7 +4200,7 @@ function renderTableElement(element, textStyle, options) {
4196
4200
  "table",
4197
4201
  {
4198
4202
  className: "w-full h-full border-collapse table-fixed",
4199
- style: { fontFamily: chunkZ3FYYUGI_js.DEFAULT_FONT_FAMILY },
4203
+ style: { fontFamily: chunkSBRSPTSA_js.DEFAULT_FONT_FAMILY },
4200
4204
  children: [
4201
4205
  parsedTable.columnPercentages.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx("colgroup", { children: parsedTable.columnPercentages.map((percentage, columnIndex) => /* @__PURE__ */ jsxRuntime.jsx(
4202
4206
  "col",
@@ -4257,7 +4261,7 @@ function renderTableElement(element, textStyle, options) {
4257
4261
  "border px-1 py-0.5 align-top",
4258
4262
  isEditable && hasCellSelectionHandler ? "border-blue-200/70 cursor-cell" : "border-white/30",
4259
4263
  selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex ? "ring-1 ring-inset ring-blue-500" : null,
4260
- chunkZ3FYYUGI_js.isCellInRect(rowIndex, cellIndex, xmlSelectionRect) && !(selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex) ? "bg-blue-500/15 ring-1 ring-inset ring-blue-400/50" : null
4264
+ chunkSBRSPTSA_js.isCellInRect(rowIndex, cellIndex, xmlSelectionRect) && !(selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex) ? "bg-blue-500/15 ring-1 ring-inset ring-blue-400/50" : null
4261
4265
  ),
4262
4266
  colSpan,
4263
4267
  rowSpan: rSpan,
@@ -4268,7 +4272,7 @@ function renderTableElement(element, textStyle, options) {
4268
4272
  }
4269
4273
  event.stopPropagation();
4270
4274
  if (event.shiftKey && selectedCell && tableEl.tableData) {
4271
- const rect = chunkZ3FYYUGI_js.computeSelectionRect(
4275
+ const rect = chunkSBRSPTSA_js.computeSelectionRect(
4272
4276
  selectedCell.rowIndex,
4273
4277
  selectedCell.columnIndex,
4274
4278
  rowIndex,
@@ -4278,7 +4282,7 @@ function renderTableElement(element, textStyle, options) {
4278
4282
  options?.onSelectCell?.({
4279
4283
  rowIndex: selectedCell.rowIndex,
4280
4284
  columnIndex: selectedCell.columnIndex,
4281
- selectedCells: chunkZ3FYYUGI_js.rectToCells(rect)
4285
+ selectedCells: chunkSBRSPTSA_js.rectToCells(rect)
4282
4286
  });
4283
4287
  } else {
4284
4288
  options?.onSelectCell?.({
@@ -4335,24 +4339,24 @@ function renderTableElement(element, textStyle, options) {
4335
4339
  }
4336
4340
  var LEGEND_ITEM_WIDTH = 80;
4337
4341
  function partAttrs(part) {
4338
- return part ? chunkZ3FYYUGI_js.chartPartToAttrs(part) : void 0;
4342
+ return part ? chunkSBRSPTSA_js.chartPartToAttrs(part) : void 0;
4339
4343
  }
4340
4344
  function resolveReactPalette(chartData) {
4341
4345
  if (chartData.colorPalette && chartData.colorPalette.length > 0) {
4342
4346
  return chartData.colorPalette;
4343
4347
  }
4344
- return [...chunkZ3FYYUGI_js.getChartStylePalette(chartData.style?.styleId)];
4348
+ return [...chunkSBRSPTSA_js.getChartStylePalette(chartData.style?.styleId)];
4345
4349
  }
4346
4350
  function buildReactChartViewModel(element) {
4347
4351
  if (element.type !== "chart" || !element.chartData) {
4348
- return chunkZ3FYYUGI_js.buildChartViewModel(element);
4352
+ return chunkSBRSPTSA_js.buildChartViewModel(element);
4349
4353
  }
4350
4354
  const palette = resolveReactPalette(element.chartData);
4351
4355
  const themedElement = {
4352
4356
  ...element,
4353
4357
  chartData: { ...element.chartData, colorPalette: palette }
4354
4358
  };
4355
- return chunkZ3FYYUGI_js.buildChartViewModel(themedElement);
4359
+ return chunkSBRSPTSA_js.buildChartViewModel(themedElement);
4356
4360
  }
4357
4361
  function renderPrimitive(prim, key) {
4358
4362
  switch (prim.kind) {
@@ -4741,7 +4745,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4741
4745
  const unmatchedRows = [];
4742
4746
  categories.forEach((cat, i) => {
4743
4747
  const value = values[i] ?? 0;
4744
- const code = chunkZ3FYYUGI_js.resolveRegionCode(cat);
4748
+ const code = chunkSBRSPTSA_js.resolveRegionCode(cat);
4745
4749
  if (code) {
4746
4750
  regionValueMap.set(code, { value, label: cat });
4747
4751
  } else {
@@ -4779,8 +4783,8 @@ function renderMapChart(element, chartData, categoryLabels) {
4779
4783
  let fill = "#e2e8f0";
4780
4784
  let dataLabel = null;
4781
4785
  if (entry) {
4782
- const t = chunkZ3FYYUGI_js.normalizeValue(entry.value, minVal, maxVal);
4783
- fill = chunkZ3FYYUGI_js.sequentialColorScale(t);
4786
+ const t = chunkSBRSPTSA_js.normalizeValue(entry.value, minVal, maxVal);
4787
+ fill = chunkSBRSPTSA_js.sequentialColorScale(t);
4784
4788
  dataLabel = /* @__PURE__ */ jsxRuntime.jsx(
4785
4789
  "text",
4786
4790
  {
@@ -4791,7 +4795,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4791
4795
  fontWeight: 600,
4792
4796
  fill: "#1e293b",
4793
4797
  style: { pointerEvents: "none" },
4794
- children: chunkZ3FYYUGI_js.formatAxisValue(entry.value)
4798
+ children: chunkSBRSPTSA_js.formatAxisValue(entry.value)
4795
4799
  },
4796
4800
  `${element.id}-map-dl-${region.code}`
4797
4801
  );
@@ -4809,7 +4813,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4809
4813
  opacity: 0.9,
4810
4814
  children: /* @__PURE__ */ jsxRuntime.jsxs("title", { children: [
4811
4815
  region.name,
4812
- entry ? `: ${chunkZ3FYYUGI_js.formatAxisValue(entry.value)}` : ""
4816
+ entry ? `: ${chunkSBRSPTSA_js.formatAxisValue(entry.value)}` : ""
4813
4817
  ] })
4814
4818
  }
4815
4819
  ),
@@ -4847,7 +4851,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4847
4851
  fontSize: 7,
4848
4852
  fill: "#64748b",
4849
4853
  textAnchor: "middle",
4850
- children: chunkZ3FYYUGI_js.formatAxisValue(minVal)
4854
+ children: chunkSBRSPTSA_js.formatAxisValue(minVal)
4851
4855
  },
4852
4856
  `${element.id}-map-legend-min`
4853
4857
  ),
@@ -4859,7 +4863,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4859
4863
  fontSize: 7,
4860
4864
  fill: "#64748b",
4861
4865
  textAnchor: "middle",
4862
- children: chunkZ3FYYUGI_js.formatAxisValue(maxVal)
4866
+ children: chunkSBRSPTSA_js.formatAxisValue(maxVal)
4863
4867
  },
4864
4868
  `${element.id}-map-legend-max`
4865
4869
  )
@@ -4925,7 +4929,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4925
4929
  y,
4926
4930
  fontSize,
4927
4931
  fill: "#475569",
4928
- children: chunkZ3FYYUGI_js.formatAxisValue(row.value)
4932
+ children: chunkSBRSPTSA_js.formatAxisValue(row.value)
4929
4933
  },
4930
4934
  `${element.id}-map-ft-val-${i}`
4931
4935
  )
@@ -4996,7 +5000,7 @@ function renderStackedBarChart(element, _chartData, _categoryLabels) {
4996
5000
 
4997
5001
  // src/viewer/utils/chart-overlay-utils.ts
4998
5002
  function sColor(series, idx) {
4999
- return chunkZ3FYYUGI_js.seriesColor(series, idx);
5003
+ return chunkSBRSPTSA_js.seriesColor(series, idx);
5000
5004
  }
5001
5005
  function valToY(val, range, topY, bottomY) {
5002
5006
  const usable = bottomY - topY;
@@ -5535,7 +5539,7 @@ function renderLegend(id, style, series, layout, colorPalette) {
5535
5539
  width: 10,
5536
5540
  height: 10,
5537
5541
  rx: 2,
5538
- fill: chunkZ3FYYUGI_js.seriesColor(s, i, style?.styleId, colorPalette)
5542
+ fill: chunkSBRSPTSA_js.seriesColor(s, i, style?.styleId, colorPalette)
5539
5543
  },
5540
5544
  `${id}-leg-r-${i}`
5541
5545
  )
@@ -5559,7 +5563,7 @@ function renderLegend(id, style, series, layout, colorPalette) {
5559
5563
  width: 10,
5560
5564
  height: 10,
5561
5565
  rx: 2,
5562
- fill: chunkZ3FYYUGI_js.seriesColor(s, i, style?.styleId, colorPalette)
5566
+ fill: chunkSBRSPTSA_js.seriesColor(s, i, style?.styleId, colorPalette)
5563
5567
  }
5564
5568
  ),
5565
5569
  /* @__PURE__ */ jsxRuntime.jsx("text", { x: x + 14, y: cy + 8, fontSize: 9, fill: "#475569", children: s.name || `Series ${i + 1}` })
@@ -5572,9 +5576,9 @@ function renderGridlines(id, style, range, layout) {
5572
5576
  }
5573
5577
  const lines = [];
5574
5578
  if (range.logScale && range.logBase) {
5575
- const ticks = chunkZ3FYYUGI_js.generateLogTicks(range);
5579
+ const ticks = chunkSBRSPTSA_js.generateLogTicks(range);
5576
5580
  ticks.forEach((tickVal, i) => {
5577
- const y = chunkZ3FYYUGI_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
5581
+ const y = chunkSBRSPTSA_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
5578
5582
  lines.push(
5579
5583
  /* @__PURE__ */ jsxRuntime.jsx(
5580
5584
  "line",
@@ -5595,7 +5599,7 @@ function renderGridlines(id, style, range, layout) {
5595
5599
  const steps = 4;
5596
5600
  for (let i = 0; i <= steps; i++) {
5597
5601
  const val = range.min + range.span * i / steps;
5598
- const y = chunkZ3FYYUGI_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5602
+ const y = chunkSBRSPTSA_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5599
5603
  lines.push(
5600
5604
  /* @__PURE__ */ jsxRuntime.jsx(
5601
5605
  "line",
@@ -5619,9 +5623,9 @@ function renderValueAxis(id, range, layout, axisFormatting) {
5619
5623
  const labels = [];
5620
5624
  const hasDisplayUnits = Boolean(axisFormatting?.displayUnits);
5621
5625
  if (range.logScale && range.logBase) {
5622
- const ticks = chunkZ3FYYUGI_js.generateLogTicks(range);
5626
+ const ticks = chunkSBRSPTSA_js.generateLogTicks(range);
5623
5627
  ticks.forEach((tickVal, i) => {
5624
- const y = chunkZ3FYYUGI_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
5628
+ const y = chunkSBRSPTSA_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
5625
5629
  labels.push(
5626
5630
  /* @__PURE__ */ jsxRuntime.jsx(
5627
5631
  "text",
@@ -5631,7 +5635,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
5631
5635
  textAnchor: "end",
5632
5636
  fontSize: 8,
5633
5637
  fill: "#64748b",
5634
- children: hasDisplayUnits ? chunkZ3FYYUGI_js.formatAxisValueWithUnits(tickVal, axisFormatting) : chunkZ3FYYUGI_js.formatAxisValue(tickVal)
5638
+ children: hasDisplayUnits ? chunkSBRSPTSA_js.formatAxisValueWithUnits(tickVal, axisFormatting) : chunkSBRSPTSA_js.formatAxisValue(tickVal)
5635
5639
  },
5636
5640
  `${id}-vaxis-log-${i}`
5637
5641
  )
@@ -5641,7 +5645,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
5641
5645
  const steps = 4;
5642
5646
  for (let i = 0; i <= steps; i++) {
5643
5647
  const val = range.min + range.span * i / steps;
5644
- const y = chunkZ3FYYUGI_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5648
+ const y = chunkSBRSPTSA_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5645
5649
  labels.push(
5646
5650
  /* @__PURE__ */ jsxRuntime.jsx(
5647
5651
  "text",
@@ -5651,7 +5655,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
5651
5655
  textAnchor: "end",
5652
5656
  fontSize: 8,
5653
5657
  fill: "#64748b",
5654
- children: hasDisplayUnits ? chunkZ3FYYUGI_js.formatAxisValueWithUnits(val, axisFormatting) : chunkZ3FYYUGI_js.formatAxisValue(val)
5658
+ children: hasDisplayUnits ? chunkSBRSPTSA_js.formatAxisValueWithUnits(val, axisFormatting) : chunkSBRSPTSA_js.formatAxisValue(val)
5655
5659
  },
5656
5660
  `${id}-vaxis-${i}`
5657
5661
  )
@@ -5659,7 +5663,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
5659
5663
  }
5660
5664
  }
5661
5665
  if (hasDisplayUnits) {
5662
- const unitLabel = chunkZ3FYYUGI_js.getDisplayUnitLabel(
5666
+ const unitLabel = chunkSBRSPTSA_js.getDisplayUnitLabel(
5663
5667
  axisFormatting.displayUnits,
5664
5668
  axisFormatting.displayUnitsLabel
5665
5669
  );
@@ -5734,7 +5738,7 @@ function renderZeroLine(id, range, layout) {
5734
5738
  if (range.min >= 0) {
5735
5739
  return null;
5736
5740
  }
5737
- const y = chunkZ3FYYUGI_js.valueToY(0, range, layout.plotTop, layout.plotBottom);
5741
+ const y = chunkSBRSPTSA_js.valueToY(0, range, layout.plotTop, layout.plotBottom);
5738
5742
  return /* @__PURE__ */ jsxRuntime.jsx(
5739
5743
  "line",
5740
5744
  {
@@ -5758,7 +5762,7 @@ function renderSecondaryValueAxis(id, range, layout, axisFormatting) {
5758
5762
  const hasDisplayUnits = Boolean(axisFormatting?.displayUnits);
5759
5763
  for (let i = 0; i <= steps; i++) {
5760
5764
  const val = range.min + range.span * i / steps;
5761
- const y = chunkZ3FYYUGI_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5765
+ const y = chunkSBRSPTSA_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5762
5766
  labels.push(
5763
5767
  /* @__PURE__ */ jsxRuntime.jsx(
5764
5768
  "text",
@@ -5770,7 +5774,7 @@ function renderSecondaryValueAxis(id, range, layout, axisFormatting) {
5770
5774
  fontFamily,
5771
5775
  fontWeight,
5772
5776
  fill: fontColor,
5773
- children: hasDisplayUnits ? chunkZ3FYYUGI_js.formatAxisValueWithUnits(val, axisFormatting) : chunkZ3FYYUGI_js.formatAxisValue(val)
5777
+ children: hasDisplayUnits ? chunkSBRSPTSA_js.formatAxisValueWithUnits(val, axisFormatting) : chunkSBRSPTSA_js.formatAxisValue(val)
5774
5778
  },
5775
5779
  `${id}-sec-vaxis-${i}`
5776
5780
  )
@@ -5794,7 +5798,7 @@ function renderSecondaryValueAxis(id, range, layout, axisFormatting) {
5794
5798
  );
5795
5799
  }
5796
5800
  if (hasDisplayUnits) {
5797
- const unitLabel = chunkZ3FYYUGI_js.getDisplayUnitLabel(
5801
+ const unitLabel = chunkSBRSPTSA_js.getDisplayUnitLabel(
5798
5802
  axisFormatting.displayUnits,
5799
5803
  axisFormatting.displayUnitsLabel
5800
5804
  );
@@ -5825,7 +5829,7 @@ function renderSecondaryAxisTicks(id, range, layout) {
5825
5829
  const ticks = [];
5826
5830
  for (let i = 0; i <= steps; i++) {
5827
5831
  const val = range.min + range.span * i / steps;
5828
- const y = chunkZ3FYYUGI_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5832
+ const y = chunkSBRSPTSA_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5829
5833
  ticks.push(
5830
5834
  /* @__PURE__ */ jsxRuntime.jsx(
5831
5835
  "line",
@@ -5852,7 +5856,7 @@ function renderSecondaryGridlines(id, range, layout, axisFormatting) {
5852
5856
  const gridColor = axisFormatting.majorGridlinesSpPr?.strokeColor ?? "#e2e8f0";
5853
5857
  for (let i = 0; i <= steps; i++) {
5854
5858
  const val = range.min + range.span * i / steps;
5855
- const y = chunkZ3FYYUGI_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5859
+ const y = chunkSBRSPTSA_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5856
5860
  lines.push(
5857
5861
  /* @__PURE__ */ jsxRuntime.jsx(
5858
5862
  "line",
@@ -6014,7 +6018,7 @@ function renderChartDataTable(elementId, chartData, svgWidth) {
6014
6018
  width: 8,
6015
6019
  height: 8,
6016
6020
  borderRadius: 2,
6017
- backgroundColor: chunkZ3FYYUGI_js.seriesColor(
6021
+ backgroundColor: chunkSBRSPTSA_js.seriesColor(
6018
6022
  s,
6019
6023
  si,
6020
6024
  chartData.style?.styleId,
@@ -6052,10 +6056,10 @@ function renderChartDataTable(elementId, chartData, svgWidth) {
6052
6056
  }
6053
6057
  function renderStockChart(element, chartData, categoryLabels) {
6054
6058
  const style = chartData.style;
6055
- const areaFill = chunkZ3FYYUGI_js.chartAreaFill(chartData);
6059
+ const areaFill = chunkSBRSPTSA_js.chartAreaFill(chartData);
6056
6060
  const legendPos = style?.legendPosition || "b";
6057
- const range = chunkZ3FYYUGI_js.computeValueRangeForChart(chartData.series, chartData.axes);
6058
- const layout = chunkZ3FYYUGI_js.computeLayout(element.width, element.height, style, true, legendPos);
6061
+ const range = chunkSBRSPTSA_js.computeValueRangeForChart(chartData.series, chartData.axes);
6062
+ const layout = chunkSBRSPTSA_js.computeLayout(element.width, element.height, style, true, legendPos);
6059
6063
  const catCount = Math.max(categoryLabels.length, 1);
6060
6064
  const barGroupWidth = layout.plotWidth / catCount;
6061
6065
  const candleWidth = barGroupWidth * 0.5;
@@ -6076,10 +6080,10 @@ function renderStockChart(element, chartData, categoryLabels) {
6076
6080
  const close = closeSeries.values[ci] ?? high;
6077
6081
  const isUp = close >= open;
6078
6082
  const cx = layout.plotLeft + barGroupWidth * ci + barGroupWidth / 2;
6079
- const highY = chunkZ3FYYUGI_js.valueToY(high, range, layout.plotTop, layout.plotBottom);
6080
- const lowY = chunkZ3FYYUGI_js.valueToY(low, range, layout.plotTop, layout.plotBottom);
6081
- const openY = chunkZ3FYYUGI_js.valueToY(open, range, layout.plotTop, layout.plotBottom);
6082
- const closeY = chunkZ3FYYUGI_js.valueToY(close, range, layout.plotTop, layout.plotBottom);
6083
+ const highY = chunkSBRSPTSA_js.valueToY(high, range, layout.plotTop, layout.plotBottom);
6084
+ const lowY = chunkSBRSPTSA_js.valueToY(low, range, layout.plotTop, layout.plotBottom);
6085
+ const openY = chunkSBRSPTSA_js.valueToY(open, range, layout.plotTop, layout.plotBottom);
6086
+ const closeY = chunkSBRSPTSA_js.valueToY(close, range, layout.plotTop, layout.plotBottom);
6083
6087
  elements.push(
6084
6088
  /* @__PURE__ */ jsxRuntime.jsx(
6085
6089
  "line",
@@ -6122,7 +6126,7 @@ function renderStockChart(element, chartData, categoryLabels) {
6122
6126
  textAnchor: "middle",
6123
6127
  fontSize: 7,
6124
6128
  fill: "#334155",
6125
- children: chunkZ3FYYUGI_js.formatAxisValue(close)
6129
+ children: chunkSBRSPTSA_js.formatAxisValue(close)
6126
6130
  },
6127
6131
  `${element.id}-stock-dl-${ci}`
6128
6132
  )
@@ -6164,7 +6168,7 @@ function FailedToLoad() {
6164
6168
  var LazySurfaceChart3DScene = React6__default.default.lazy(
6165
6169
  async () => {
6166
6170
  try {
6167
- return await import('./SurfaceChart3DScene-WEH6CLAU.js');
6171
+ return await import('./SurfaceChart3DScene-7UB5JE2W.js');
6168
6172
  } catch {
6169
6173
  return { default: FailedToLoad };
6170
6174
  }
@@ -6188,7 +6192,7 @@ var SurfaceChart3DErrorBoundary = class extends React6__default.default.Componen
6188
6192
  function buildSurfaceData(chartData, categoryLabels) {
6189
6193
  const rows = chartData.series.length;
6190
6194
  const cols = Math.max(categoryLabels.length, 1);
6191
- const range = chunkZ3FYYUGI_js.computeValueRangeForChart(chartData.series, chartData.axes);
6195
+ const range = chunkSBRSPTSA_js.computeValueRangeForChart(chartData.series, chartData.axes);
6192
6196
  const heightMap = new Float32Array(rows * cols);
6193
6197
  const colorMap = new Float32Array(rows * cols * 3);
6194
6198
  for (let r = 0; r < rows; r++) {
@@ -6307,10 +6311,10 @@ function darkenRgb(r, g, b, factor) {
6307
6311
  }
6308
6312
  function renderIsometricSurfaceChart(element, chartData, categoryLabels) {
6309
6313
  const style = chartData.style;
6310
- const areaFill = chunkZ3FYYUGI_js.chartAreaFill(chartData);
6314
+ const areaFill = chunkSBRSPTSA_js.chartAreaFill(chartData);
6311
6315
  const legendPos = style?.legendPosition || "b";
6312
- const layout = chunkZ3FYYUGI_js.computeLayout(element.width, element.height, style, false, legendPos);
6313
- const range = chunkZ3FYYUGI_js.computeValueRangeForChart(chartData.series, chartData.axes);
6316
+ const layout = chunkSBRSPTSA_js.computeLayout(element.width, element.height, style, false, legendPos);
6317
+ const range = chunkSBRSPTSA_js.computeValueRangeForChart(chartData.series, chartData.axes);
6314
6318
  const catCount = Math.max(categoryLabels.length, 1);
6315
6319
  const seriesCount = chartData.series.length;
6316
6320
  const cols = catCount - 1;
@@ -6399,10 +6403,10 @@ function renderIsometricSurfaceChart(element, chartData, categoryLabels) {
6399
6403
  }
6400
6404
  function renderFlatSurfaceChart(element, chartData, categoryLabels) {
6401
6405
  const style = chartData.style;
6402
- const areaFill = chunkZ3FYYUGI_js.chartAreaFill(chartData);
6406
+ const areaFill = chunkSBRSPTSA_js.chartAreaFill(chartData);
6403
6407
  const legendPos = style?.legendPosition || "b";
6404
- const layout = chunkZ3FYYUGI_js.computeLayout(element.width, element.height, style, true, legendPos);
6405
- const range = chunkZ3FYYUGI_js.computeValueRangeForChart(chartData.series, chartData.axes);
6408
+ const layout = chunkSBRSPTSA_js.computeLayout(element.width, element.height, style, true, legendPos);
6409
+ const range = chunkSBRSPTSA_js.computeValueRangeForChart(chartData.series, chartData.axes);
6406
6410
  const catCount = Math.max(categoryLabels.length, 1);
6407
6411
  const seriesCount = chartData.series.length;
6408
6412
  const cellW = layout.plotWidth / Math.max(catCount - 1, 1);
@@ -6464,9 +6468,9 @@ function renderSurfaceChart(element, chartData, categoryLabels) {
6464
6468
  }
6465
6469
  function renderTreemapChart(element, chartData, categoryLabels) {
6466
6470
  const style = chartData.style;
6467
- const areaFill = chunkZ3FYYUGI_js.chartAreaFill(chartData);
6471
+ const areaFill = chunkSBRSPTSA_js.chartAreaFill(chartData);
6468
6472
  const legendPos = style?.legendPosition || "b";
6469
- const layout = chunkZ3FYYUGI_js.computeLayout(element.width, element.height, style, false, legendPos);
6473
+ const layout = chunkSBRSPTSA_js.computeLayout(element.width, element.height, style, false, legendPos);
6470
6474
  const allValues = chartData.series.flatMap((s) => s.values);
6471
6475
  const totalAbs = allValues.reduce((sum, v) => sum + Math.abs(v), 0) || 1;
6472
6476
  const rects = [];
@@ -6489,7 +6493,7 @@ function renderTreemapChart(element, chartData, categoryLabels) {
6489
6493
  y: curY,
6490
6494
  width: Math.max(w - 1, 1),
6491
6495
  height: Math.max(h - 1, 1),
6492
- fill: chunkZ3FYYUGI_js.paletteColor(item.index, chartData.style?.styleId, chartData.colorPalette),
6496
+ fill: chunkSBRSPTSA_js.paletteColor(item.index, chartData.style?.styleId, chartData.colorPalette),
6493
6497
  rx: 2,
6494
6498
  opacity: 0.85
6495
6499
  },
@@ -6540,11 +6544,11 @@ function renderTreemapChart(element, chartData, categoryLabels) {
6540
6544
  }
6541
6545
  function renderWaterfallChart(element, chartData, categoryLabels) {
6542
6546
  const style = chartData.style;
6543
- const areaFill = chunkZ3FYYUGI_js.chartAreaFill(chartData);
6547
+ const areaFill = chunkSBRSPTSA_js.chartAreaFill(chartData);
6544
6548
  const legendPos = style?.legendPosition || "b";
6545
6549
  const values = chartData.series[0]?.values ?? [];
6546
- const range = chunkZ3FYYUGI_js.computeValueRangeForChart(chartData.series, chartData.axes);
6547
- const layout = chunkZ3FYYUGI_js.computeLayout(element.width, element.height, style, true, legendPos);
6550
+ const range = chunkSBRSPTSA_js.computeValueRangeForChart(chartData.series, chartData.axes);
6551
+ const layout = chunkSBRSPTSA_js.computeLayout(element.width, element.height, style, true, legendPos);
6548
6552
  const catCount = Math.max(categoryLabels.length, values.length, 1);
6549
6553
  const barWidth = layout.plotWidth / catCount * 0.6;
6550
6554
  const gap = layout.plotWidth / catCount * 0.2;
@@ -6555,8 +6559,8 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
6555
6559
  const isLast = i === values.length - 1;
6556
6560
  const startVal = isLast ? 0 : runningTotal;
6557
6561
  const endVal = isLast ? runningTotal + val : runningTotal + val;
6558
- const barStartY = chunkZ3FYYUGI_js.valueToY(startVal, range, layout.plotTop, layout.plotBottom);
6559
- const barEndY = chunkZ3FYYUGI_js.valueToY(endVal, range, layout.plotTop, layout.plotBottom);
6562
+ const barStartY = chunkSBRSPTSA_js.valueToY(startVal, range, layout.plotTop, layout.plotBottom);
6563
+ const barEndY = chunkSBRSPTSA_js.valueToY(endVal, range, layout.plotTop, layout.plotBottom);
6560
6564
  const x = layout.plotLeft + layout.plotWidth / catCount * i + gap;
6561
6565
  const y = Math.min(barStartY, barEndY);
6562
6566
  const h = Math.max(Math.abs(barEndY - barStartY), 1);
@@ -6585,7 +6589,7 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
6585
6589
  textAnchor: "middle",
6586
6590
  fontSize: 7,
6587
6591
  fill: "#334155",
6588
- children: chunkZ3FYYUGI_js.formatAxisValue(isLast ? endVal : val)
6592
+ children: chunkSBRSPTSA_js.formatAxisValue(isLast ? endVal : val)
6589
6593
  },
6590
6594
  `${element.id}-wf-dl-${i}`
6591
6595
  )
@@ -6632,20 +6636,20 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
6632
6636
  }
6633
6637
  function renderComboChart(element, chartData, categoryLabels) {
6634
6638
  const style = chartData.style;
6635
- const areaFill = chunkZ3FYYUGI_js.chartAreaFill(chartData);
6639
+ const areaFill = chunkSBRSPTSA_js.chartAreaFill(chartData);
6636
6640
  const legendPos = style?.legendPosition || "b";
6637
- const layoutOpts = chunkZ3FYYUGI_js.computeLayoutOptions(
6641
+ const layoutOpts = chunkSBRSPTSA_js.computeLayoutOptions(
6638
6642
  chartData.axes,
6639
6643
  chartData.dataTable,
6640
6644
  chartData.series.length
6641
6645
  );
6642
- const layout = chunkZ3FYYUGI_js.computeLayout(element.width, element.height, style, true, legendPos, layoutOpts);
6643
- const { primary, secondary } = chunkZ3FYYUGI_js.splitSeriesByAxis(chartData.series, chartData.axes);
6646
+ const layout = chunkSBRSPTSA_js.computeLayout(element.width, element.height, style, true, legendPos, layoutOpts);
6647
+ const { primary, secondary } = chunkSBRSPTSA_js.splitSeriesByAxis(chartData.series, chartData.axes);
6644
6648
  const primarySeries = primary.length > 0 ? primary.map((e) => e.series) : chartData.series;
6645
6649
  const secondarySeries = secondary.map((e) => e.series);
6646
- const range = chunkZ3FYYUGI_js.computeValueRangeForChart(primarySeries, chartData.axes);
6647
- const secondaryRange = secondarySeries.length > 0 ? chunkZ3FYYUGI_js.computeValueRange(secondarySeries) : void 0;
6648
- const secondaryAxisFmt = chunkZ3FYYUGI_js.getSecondaryValueAxis(chartData.axes);
6650
+ const range = chunkSBRSPTSA_js.computeValueRangeForChart(primarySeries, chartData.axes);
6651
+ const secondaryRange = secondarySeries.length > 0 ? chunkSBRSPTSA_js.computeValueRange(secondarySeries) : void 0;
6652
+ const secondaryAxisFmt = chunkSBRSPTSA_js.getSecondaryValueAxis(chartData.axes);
6649
6653
  const catCount = Math.max(categoryLabels.length, 1);
6650
6654
  const barSeriesCount = 1;
6651
6655
  const barGroupWidth = layout.plotWidth / catCount;
@@ -6661,8 +6665,8 @@ function renderComboChart(element, chartData, categoryLabels) {
6661
6665
  const barRange = isBarSecondary && secondaryRange ? secondaryRange : range;
6662
6666
  barSeries.values.forEach((val, vi) => {
6663
6667
  const x = layout.plotLeft + barGroupWidth * vi + barOffset;
6664
- const zeroY = chunkZ3FYYUGI_js.valueToY(0, barRange, layout.plotTop, layout.plotBottom);
6665
- const valY = chunkZ3FYYUGI_js.valueToY(val, barRange, layout.plotTop, layout.plotBottom);
6668
+ const zeroY = chunkSBRSPTSA_js.valueToY(0, barRange, layout.plotTop, layout.plotBottom);
6669
+ const valY = chunkSBRSPTSA_js.valueToY(val, barRange, layout.plotTop, layout.plotBottom);
6666
6670
  const y = Math.min(zeroY, valY);
6667
6671
  const h = Math.max(Math.abs(zeroY - valY), 1);
6668
6672
  barElements.push(
@@ -6673,7 +6677,7 @@ function renderComboChart(element, chartData, categoryLabels) {
6673
6677
  y,
6674
6678
  width: barWidth,
6675
6679
  height: h,
6676
- fill: chunkZ3FYYUGI_js.seriesColor(barSeries, 0, chartData.style?.styleId, chartData.colorPalette),
6680
+ fill: chunkSBRSPTSA_js.seriesColor(barSeries, 0, chartData.style?.styleId, chartData.colorPalette),
6677
6681
  rx: 1
6678
6682
  },
6679
6683
  `${element.id}-combo-bar-${vi}`
@@ -6689,7 +6693,7 @@ function renderComboChart(element, chartData, categoryLabels) {
6689
6693
  textAnchor: "middle",
6690
6694
  fontSize: 7,
6691
6695
  fill: "#334155",
6692
- children: chunkZ3FYYUGI_js.formatAxisValue(val)
6696
+ children: chunkSBRSPTSA_js.formatAxisValue(val)
6693
6697
  },
6694
6698
  `${element.id}-combo-bar-dl-${vi}`
6695
6699
  )
@@ -6706,10 +6710,10 @@ function renderComboChart(element, chartData, categoryLabels) {
6706
6710
  const activeRange = isSecondary && secondaryRange ? secondaryRange : range;
6707
6711
  const points = series.values.map((val, vi) => {
6708
6712
  const x = layout.plotLeft + barGroupWidth * vi + barGroupWidth / 2;
6709
- const y = chunkZ3FYYUGI_js.valueToY(val, activeRange, layout.plotTop, layout.plotBottom);
6713
+ const y = chunkSBRSPTSA_js.valueToY(val, activeRange, layout.plotTop, layout.plotBottom);
6710
6714
  return { x, y, val };
6711
6715
  });
6712
- const c = chunkZ3FYYUGI_js.seriesColor(series, seriesIdx, chartData.style?.styleId, chartData.colorPalette);
6716
+ const c = chunkSBRSPTSA_js.seriesColor(series, seriesIdx, chartData.style?.styleId, chartData.colorPalette);
6713
6717
  lineElements.push(
6714
6718
  /* @__PURE__ */ jsxRuntime.jsx(
6715
6719
  "polyline",
@@ -6736,7 +6740,7 @@ function renderComboChart(element, chartData, categoryLabels) {
6736
6740
  textAnchor: "middle",
6737
6741
  fontSize: 7,
6738
6742
  fill: "#334155",
6739
- children: chunkZ3FYYUGI_js.formatAxisValue(p.val)
6743
+ children: chunkSBRSPTSA_js.formatAxisValue(p.val)
6740
6744
  },
6741
6745
  `${element.id}-combo-line-dl-${si}-${vi}`
6742
6746
  )
@@ -7882,14 +7886,14 @@ function buildNotesPdf(pages) {
7882
7886
  notes: page.notes,
7883
7887
  slideNumber: page.slideNumber
7884
7888
  }));
7885
- const bytes = chunkZ3FYYUGI_js.buildNotesPdfBytes(images, meta);
7889
+ const bytes = chunkSBRSPTSA_js.buildNotesPdfBytes(images, meta);
7886
7890
  const blob = new Blob([bytes], { type: "application/pdf" });
7887
7891
  return URL.createObjectURL(blob);
7888
7892
  }
7889
7893
 
7890
7894
  // src/viewer/utils/pdf-builder-slides.ts
7891
7895
  function buildPdfFromImageData(images) {
7892
- const bytes = chunkZ3FYYUGI_js.buildSlidesPdfBytes(images);
7896
+ const bytes = chunkSBRSPTSA_js.buildSlidesPdfBytes(images);
7893
7897
  const blob = new Blob([bytes], { type: "application/pdf" });
7894
7898
  return URL.createObjectURL(blob);
7895
7899
  }
@@ -7898,7 +7902,7 @@ function buildPdfFromImageData(images) {
7898
7902
  var activePreview = null;
7899
7903
  function startPreviewAnimation(elementId, preset, options) {
7900
7904
  stopPreviewAnimation();
7901
- const descriptor = chunkZ3FYYUGI_js.buildPreviewAnimation(preset, options);
7905
+ const descriptor = chunkSBRSPTSA_js.buildPreviewAnimation(preset, options);
7902
7906
  if (!descriptor) {
7903
7907
  return;
7904
7908
  }
@@ -7911,7 +7915,7 @@ function startMotionPathPreview(elementId, path, options) {
7911
7915
  return;
7912
7916
  }
7913
7917
  const stage = domEl.offsetParent;
7914
- const descriptor = chunkZ3FYYUGI_js.buildMotionPathPreview({
7918
+ const descriptor = chunkSBRSPTSA_js.buildMotionPathPreview({
7915
7919
  path,
7916
7920
  slideWidth: stage?.offsetWidth || DEFAULT_PREVIEW_SLIDE_WIDTH,
7917
7921
  slideHeight: stage?.offsetHeight || DEFAULT_PREVIEW_SLIDE_HEIGHT,