pptx-react-viewer 2.16.5 → 2.16.6

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 (104) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/dist/{AiChatPanel-6B26AZGA.mjs → AiChatPanel-NQFSMKIJ.mjs} +3 -3
  3. package/dist/AiChatPanel-NQFSMKIJ.mjs.br +0 -0
  4. package/dist/AiChatPanel-NQFSMKIJ.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-FGEIZQCD.js → AiChatPanel-T6UN6LME.js} +22 -22
  6. package/dist/AiChatPanel-T6UN6LME.js.br +0 -0
  7. package/dist/AiChatPanel-T6UN6LME.js.gz +0 -0
  8. package/dist/{Model3DScene-NKYNKUPP.mjs → Model3DScene-4D4GSRIB.mjs} +1 -1
  9. package/dist/Model3DScene-4D4GSRIB.mjs.br +0 -0
  10. package/dist/Model3DScene-4D4GSRIB.mjs.gz +0 -0
  11. package/dist/{Model3DScene-2JX5CUPK.js → Model3DScene-SIST7CIH.js} +2 -2
  12. package/dist/Model3DScene-SIST7CIH.js.br +0 -0
  13. package/dist/Model3DScene-SIST7CIH.js.gz +0 -0
  14. package/dist/PowerPointViewer-Du7u4INi.d.ts.map +1 -1
  15. package/dist/{SurfaceChart3DScene-AE5SKG7U.js → SurfaceChart3DScene-GRM24VBC.js} +2 -2
  16. package/dist/SurfaceChart3DScene-GRM24VBC.js.br +0 -0
  17. package/dist/SurfaceChart3DScene-GRM24VBC.js.gz +0 -0
  18. package/dist/{SurfaceChart3DScene-TTL2FTEG.mjs → SurfaceChart3DScene-ZT7L27U4.mjs} +1 -1
  19. package/dist/{SurfaceChart3DScene-TTL2FTEG.mjs.br → SurfaceChart3DScene-ZT7L27U4.mjs.br} +0 -0
  20. package/dist/SurfaceChart3DScene-ZT7L27U4.mjs.gz +0 -0
  21. package/dist/{chunk-5YGTUHNO.mjs → chunk-6F76GHPE.mjs} +14 -7
  22. package/dist/chunk-6F76GHPE.mjs.br +0 -0
  23. package/dist/chunk-6F76GHPE.mjs.gz +0 -0
  24. package/dist/{chunk-LCWZ4TD4.js → chunk-DYGKE2LY.js} +1086 -1056
  25. package/dist/chunk-DYGKE2LY.js.br +0 -0
  26. package/dist/chunk-DYGKE2LY.js.gz +0 -0
  27. package/dist/{chunk-UNWU6D2M.js → chunk-GUDJDY4J.js} +348 -342
  28. package/dist/chunk-GUDJDY4J.js.br +0 -0
  29. package/dist/chunk-GUDJDY4J.js.gz +0 -0
  30. package/dist/{chunk-P65VL2I6.js → chunk-H36QL5T5.js} +267 -260
  31. package/dist/chunk-H36QL5T5.js.br +0 -0
  32. package/dist/chunk-H36QL5T5.js.gz +0 -0
  33. package/dist/{chunk-Y6W5LGTR.mjs → chunk-NI5GSVZU.mjs} +10 -4
  34. package/dist/chunk-NI5GSVZU.mjs.br +0 -0
  35. package/dist/chunk-NI5GSVZU.mjs.gz +0 -0
  36. package/dist/{chunk-247XH4EN.mjs → chunk-PUBYHZYJ.mjs} +83 -48
  37. package/dist/chunk-PUBYHZYJ.mjs.br +0 -0
  38. package/dist/{chunk-247XH4EN.mjs.gz → chunk-PUBYHZYJ.mjs.gz} +0 -0
  39. package/dist/{chunk-6QGTRYSC.js → chunk-RZYOOWZN.js} +84 -47
  40. package/dist/chunk-RZYOOWZN.js.br +0 -0
  41. package/dist/{chunk-6QGTRYSC.js.gz → chunk-RZYOOWZN.js.gz} +0 -0
  42. package/dist/{chunk-MZN2UIYT.mjs → chunk-VDQD3ZOU.mjs} +1 -1
  43. package/dist/chunk-VDQD3ZOU.mjs.br +0 -0
  44. package/dist/chunk-VDQD3ZOU.mjs.gz +0 -0
  45. package/dist/{chunk-VZI35LEF.js → chunk-YDYAOW6D.js} +3 -3
  46. package/dist/chunk-YDYAOW6D.js.br +0 -0
  47. package/dist/chunk-YDYAOW6D.js.gz +0 -0
  48. package/dist/{chunk-EFZ4K6V5.mjs → chunk-YZHBUMVU.mjs} +41 -11
  49. package/dist/chunk-YZHBUMVU.mjs.br +0 -0
  50. package/dist/chunk-YZHBUMVU.mjs.gz +0 -0
  51. package/dist/index.d.ts +2 -0
  52. package/dist/index.js +39 -39
  53. package/dist/index.js.br +0 -0
  54. package/dist/index.js.gz +0 -0
  55. package/dist/index.mjs +5 -5
  56. package/dist/index.mjs.br +0 -0
  57. package/dist/index.mjs.gz +0 -0
  58. package/dist/internals.d.ts +10 -0
  59. package/dist/internals.d.ts.map +1 -1
  60. package/dist/internals.js +78 -78
  61. package/dist/internals.js.br +0 -0
  62. package/dist/internals.js.gz +0 -0
  63. package/dist/internals.mjs +3 -3
  64. package/dist/internals.mjs.br +0 -0
  65. package/dist/internals.mjs.gz +0 -0
  66. package/dist/{useViewerBuildingBlocks-CBZrHhxl.d.ts → useViewerBuildingBlocks-DpzU8NZ_.d.ts} +3 -1
  67. package/dist/useViewerBuildingBlocks-DpzU8NZ_.d.ts.map +1 -0
  68. package/dist/viewer/index.js +26 -26
  69. package/dist/viewer/index.js.br +0 -0
  70. package/dist/viewer/index.js.gz +0 -0
  71. package/dist/viewer/index.mjs +5 -5
  72. package/dist/viewer/index.mjs.br +0 -0
  73. package/dist/viewer/index.mjs.gz +0 -0
  74. package/package.json +1 -1
  75. package/dist/AiChatPanel-6B26AZGA.mjs.br +0 -0
  76. package/dist/AiChatPanel-6B26AZGA.mjs.gz +0 -0
  77. package/dist/AiChatPanel-FGEIZQCD.js.br +0 -0
  78. package/dist/AiChatPanel-FGEIZQCD.js.gz +0 -0
  79. package/dist/Model3DScene-2JX5CUPK.js.br +0 -0
  80. package/dist/Model3DScene-2JX5CUPK.js.gz +0 -0
  81. package/dist/Model3DScene-NKYNKUPP.mjs.br +0 -0
  82. package/dist/Model3DScene-NKYNKUPP.mjs.gz +0 -0
  83. package/dist/SurfaceChart3DScene-AE5SKG7U.js.br +0 -0
  84. package/dist/SurfaceChart3DScene-AE5SKG7U.js.gz +0 -0
  85. package/dist/SurfaceChart3DScene-TTL2FTEG.mjs.gz +0 -0
  86. package/dist/chunk-247XH4EN.mjs.br +0 -0
  87. package/dist/chunk-5YGTUHNO.mjs.br +0 -0
  88. package/dist/chunk-5YGTUHNO.mjs.gz +0 -0
  89. package/dist/chunk-6QGTRYSC.js.br +0 -0
  90. package/dist/chunk-EFZ4K6V5.mjs.br +0 -0
  91. package/dist/chunk-EFZ4K6V5.mjs.gz +0 -0
  92. package/dist/chunk-LCWZ4TD4.js.br +0 -0
  93. package/dist/chunk-LCWZ4TD4.js.gz +0 -0
  94. package/dist/chunk-MZN2UIYT.mjs.br +0 -0
  95. package/dist/chunk-MZN2UIYT.mjs.gz +0 -0
  96. package/dist/chunk-P65VL2I6.js.br +0 -0
  97. package/dist/chunk-P65VL2I6.js.gz +0 -0
  98. package/dist/chunk-UNWU6D2M.js.br +0 -0
  99. package/dist/chunk-UNWU6D2M.js.gz +0 -0
  100. package/dist/chunk-VZI35LEF.js.br +0 -0
  101. package/dist/chunk-VZI35LEF.js.gz +0 -0
  102. package/dist/chunk-Y6W5LGTR.mjs.br +0 -0
  103. package/dist/chunk-Y6W5LGTR.mjs.gz +0 -0
  104. package/dist/useViewerBuildingBlocks-CBZrHhxl.d.ts.map +0 -1
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkDVZF4ARG_js = require('./chunk-DVZF4ARG.js');
4
- var chunk6QGTRYSC_js = require('./chunk-6QGTRYSC.js');
4
+ var chunkRZYOOWZN_js = require('./chunk-RZYOOWZN.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 chunk6QGTRYSC_js.getAnimationInitialStyle(preset, nativeAnimation);
18
+ return chunkRZYOOWZN_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 chunk6QGTRYSC_js.cloneHistorySnapshot(snapshot);
26
+ return chunkRZYOOWZN_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 = chunk6QGTRYSC_js.VIEWER_SHORTCUT_REFERENCE;
66
+ var SHORTCUT_REFERENCE_ITEMS = chunkRZYOOWZN_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 = chunk6QGTRYSC_js.SHAPE_PRESET_DEFS.map(
110
+ var SHAPE_PRESETS = chunkRZYOOWZN_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 (!chunk6QGTRYSC_js.hasShapeProperties(element)) {
269
+ if (!chunkRZYOOWZN_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) => chunk6QGTRYSC_js.isTemplateElement(el));
280
+ const template = slide.elements.filter((el) => chunkRZYOOWZN_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) => !chunk6QGTRYSC_js.isTemplateElement(el)) };
285
+ return { ...slide, elements: slide.elements.filter((el) => !chunkRZYOOWZN_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 (!chunk6QGTRYSC_js.hasShapeProperties(element)) {
301
+ if (!chunkRZYOOWZN_js.hasShapeProperties(element)) {
302
302
  return void 0;
303
303
  }
304
304
  const shapeType = element.shapeType;
@@ -307,7 +307,7 @@ function getImageMaskStyle(element) {
307
307
  }
308
308
  const normalized = shapeType.toLowerCase();
309
309
  if (normalized === "roundrect" || normalized === "round1rect" || normalized === "round2samerect" || normalized === "round2diagrect" || normalized === "sniproundrect" || normalized === "snip1rect" || normalized === "snip2diagrect") {
310
- const radiusPx = chunk6QGTRYSC_js.getRoundRectRadiusPx2(element);
310
+ const radiusPx = chunkRZYOOWZN_js.getRoundRectRadiusPx2(element);
311
311
  if (radiusPx <= 0.01) {
312
312
  return void 0;
313
313
  }
@@ -319,7 +319,7 @@ function getImageMaskStyle(element) {
319
319
  if (normalized === "can" || normalized === "cylinder") {
320
320
  return { borderRadius: "48% / 12%" };
321
321
  }
322
- const clipPath = chunk6QGTRYSC_js.getResolvedShapeClipPath(element);
322
+ const clipPath = chunkRZYOOWZN_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
- ...chunk6QGTRYSC_js.getImageFitStyle(element)
331
+ ...chunkRZYOOWZN_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 (!chunk6QGTRYSC_js.isImageLikeElement(element)) {
344
+ if (!chunkRZYOOWZN_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 (!chunk6QGTRYSC_js.isImageLikeElement(element)) {
354
+ if (!chunkRZYOOWZN_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 (!chunk6QGTRYSC_js.isImageLikeElement(element) || !isImageTiled(element)) {
412
+ if (!chunkRZYOOWZN_js.isImageLikeElement(element) || !isImageTiled(element)) {
413
413
  return void 0;
414
414
  }
415
415
  const scaleX = typeof element.tileScaleX === "number" ? element.tileScaleX * 100 : 100;
@@ -629,9 +629,9 @@ function registerMediaElement(elementId, el) {
629
629
  };
630
630
  }
631
631
  function executeMediaCommand(command, frameRoot) {
632
- return chunk6QGTRYSC_js.runMediaCommand(
632
+ return chunkRZYOOWZN_js.runMediaCommand(
633
633
  command,
634
- (targetId) => registry.get(targetId) ?? chunk6QGTRYSC_js.findMediaElementByElementId(targetId, frameRoot?.())
634
+ (targetId) => registry.get(targetId) ?? chunkRZYOOWZN_js.findMediaElementByElementId(targetId, frameRoot?.())
635
635
  );
636
636
  }
637
637
  function PresentationMediaController({
@@ -675,7 +675,7 @@ function PresentationMediaController({
675
675
  loop: shouldLoop,
676
676
  volume: playbackVolume,
677
677
  playbackRate
678
- } = chunk6QGTRYSC_js.mediaPlaybackAttributes({
678
+ } = chunkRZYOOWZN_js.mediaPlaybackAttributes({
679
679
  loop: element.loop,
680
680
  volume: element.volume,
681
681
  playbackSpeed: element.playbackSpeed
@@ -811,7 +811,7 @@ function PresentationMediaController({
811
811
  if (element.playAcrossSlides && element.mediaType === "audio") {
812
812
  const dataUrl = element.mediaData ?? resolvedDataUrl;
813
813
  if (dataUrl) {
814
- chunk6QGTRYSC_js.registerPersistentAudio(
814
+ chunkRZYOOWZN_js.registerPersistentAudio(
815
815
  element.id,
816
816
  dataUrl,
817
817
  element.mediaMimeType,
@@ -909,17 +909,17 @@ function Badge({
909
909
  "div",
910
910
  {
911
911
  className: `absolute inset-0 flex flex-col items-center justify-center ${isMissing ? "gap-1" : ""}`,
912
- ...{ [chunk6QGTRYSC_js.MEDIA_CHROME_ATTRIBUTE]: visual.badge },
912
+ ...{ [chunkRZYOOWZN_js.MEDIA_CHROME_ATTRIBUTE]: visual.badge },
913
913
  children: [
914
914
  /* @__PURE__ */ jsxRuntime.jsx(
915
915
  FallbackIcon,
916
916
  {
917
- paths: chunk6QGTRYSC_js.mediaFallbackIcon(visual, element.mediaType),
917
+ paths: chunkRZYOOWZN_js.mediaFallbackIcon(visual, element.mediaType),
918
918
  size: isMissing ? 32 : 48,
919
919
  className: isMissing ? "text-white/60" : "text-white/80 drop-shadow-md"
920
920
  }
921
921
  ),
922
- isMissing && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-white/60", children: label(chunk6QGTRYSC_js.mediaFallbackLabelKey(visual, element.mediaType)) })
922
+ isMissing && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-white/60", children: label(chunkRZYOOWZN_js.mediaFallbackLabelKey(visual, element.mediaType)) })
923
923
  ]
924
924
  }
925
925
  );
@@ -936,17 +936,17 @@ function Placeholder({
936
936
  "div",
937
937
  {
938
938
  className: `w-full h-full flex flex-col items-center justify-center gap-1 pointer-events-none rounded ${isMissing ? "bg-black/30 border border-dashed border-white/20" : element.mediaType === "audio" ? "bg-black/10" : "bg-black/20"}`,
939
- ...{ [chunk6QGTRYSC_js.MEDIA_CHROME_ATTRIBUTE]: visual.placeholder },
939
+ ...{ [chunkRZYOOWZN_js.MEDIA_CHROME_ATTRIBUTE]: visual.placeholder },
940
940
  children: [
941
941
  /* @__PURE__ */ jsxRuntime.jsx(
942
942
  FallbackIcon,
943
943
  {
944
- paths: chunk6QGTRYSC_js.mediaFallbackIcon(visual, element.mediaType),
944
+ paths: chunkRZYOOWZN_js.mediaFallbackIcon(visual, element.mediaType),
945
945
  size: isMissing ? 36 : element.mediaType === "audio" ? 24 : 32,
946
946
  className: isMissing ? "text-white/50" : "text-white/70"
947
947
  }
948
948
  ),
949
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: `text-[10px] ${isMissing ? "text-white/50" : "text-white/70"}`, children: label(chunk6QGTRYSC_js.mediaFallbackLabelKey(visual, element.mediaType)) })
949
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: `text-[10px] ${isMissing ? "text-white/50" : "text-white/70"}`, children: label(chunkRZYOOWZN_js.mediaFallbackLabelKey(visual, element.mediaType)) })
950
950
  ]
951
951
  }
952
952
  );
@@ -956,7 +956,7 @@ function renderMediaFallback({
956
956
  posterUrl,
957
957
  surface
958
958
  }) {
959
- const visual = chunk6QGTRYSC_js.mediaFallbackVisual(surface, {
959
+ const visual = chunkRZYOOWZN_js.mediaFallbackVisual(surface, {
960
960
  hasPoster: Boolean(posterUrl),
961
961
  missing: element.mediaMissing === true
962
962
  });
@@ -985,7 +985,7 @@ function renderMediaElement(element, mediaDataUrls, options) {
985
985
  const dataUrl = element.mediaData ?? (mediaPath ? mediaDataUrls.get(mediaPath) : void 0);
986
986
  const trimFragment = buildTrimFragment(element);
987
987
  const posterUrl = element.posterFrameData ?? void 0;
988
- const shouldLoop = chunk6QGTRYSC_js.mediaPlaybackAttributes(element).loop;
988
+ const shouldLoop = chunkRZYOOWZN_js.mediaPlaybackAttributes(element).loop;
989
989
  const shouldAutoPlay = options?.autoPlay === true || element.autoPlay === true;
990
990
  const isFullScreen = options?.fullScreen === true;
991
991
  const isPresentationMode = options?.isPresentationMode === true;
@@ -1068,7 +1068,7 @@ function renderMediaElement(element, mediaDataUrls, options) {
1068
1068
 
1069
1069
  // src/viewer/utils/text-utils.tsx
1070
1070
  function getTextStyleForElement(element, fallbackColor) {
1071
- return chunk6QGTRYSC_js.buildTextBlockStyle(element, { fallbackColor });
1071
+ return chunkRZYOOWZN_js.buildTextBlockStyle(element, { fallbackColor });
1072
1072
  }
1073
1073
 
1074
1074
  // src/viewer/utils/text-layout.tsx
@@ -1093,13 +1093,13 @@ function computeTabSize(tabStops, defaultTabSize) {
1093
1093
  return avgGap > 0 ? `${Math.round(avgGap)}px` : fromDefault;
1094
1094
  }
1095
1095
  function getTextLayoutStyle(element) {
1096
- if (!chunk6QGTRYSC_js.hasTextProperties(element)) {
1096
+ if (!chunkRZYOOWZN_js.hasTextProperties(element)) {
1097
1097
  return {};
1098
1098
  }
1099
1099
  const verticalAlign = element.textStyle?.vAlign || "top";
1100
- const writingMode = chunk6QGTRYSC_js.toCssWritingMode(element.textStyle?.textDirection);
1101
- const textOrientation = chunk6QGTRYSC_js.toCssTextOrientation(element.textStyle?.textDirection);
1102
- const verticalDirection = chunk6QGTRYSC_js.toCssVerticalDirection(element.textStyle?.textDirection);
1100
+ const writingMode = chunkRZYOOWZN_js.toCssWritingMode(element.textStyle?.textDirection);
1101
+ const textOrientation = chunkRZYOOWZN_js.toCssTextOrientation(element.textStyle?.textDirection);
1102
+ const verticalDirection = chunkRZYOOWZN_js.toCssVerticalDirection(element.textStyle?.textDirection);
1103
1103
  const parsedColumnCount = Number(element.textStyle?.columnCount);
1104
1104
  const columnCount = Number.isFinite(parsedColumnCount) ? Math.max(1, Math.min(16, Math.round(parsedColumnCount))) : 1;
1105
1105
  const hasColumns = columnCount > 1;
@@ -1107,7 +1107,7 @@ function getTextLayoutStyle(element) {
1107
1107
  const tabStops = element.textStyle?.tabStops;
1108
1108
  const tabSize = computeTabSize(tabStops, element.textStyle?.defaultTabSize);
1109
1109
  const textWrapNone = element.textStyle?.textWrap === "none";
1110
- const hasParagraphIndents = chunk6QGTRYSC_js.hasTextProperties(element) && element.paragraphIndents && element.paragraphIndents.length > 0;
1110
+ const hasParagraphIndents = chunkRZYOOWZN_js.hasTextProperties(element) && element.paragraphIndents && element.paragraphIndents.length > 0;
1111
1111
  const paragraphMarginLeft = element.textStyle?.paragraphMarginLeft;
1112
1112
  const paragraphIndent = element.textStyle?.paragraphIndent;
1113
1113
  const marginLeft = !hasParagraphIndents && typeof paragraphMarginLeft === "number" && paragraphMarginLeft !== 0 ? paragraphMarginLeft : void 0;
@@ -1116,7 +1116,7 @@ function getTextLayoutStyle(element) {
1116
1116
  const bodyBottom = element.textStyle?.bodyInsetBottom ?? DEFAULT_BODY_INSET_TB_PX;
1117
1117
  const parsedColumnSpacing = Number(element.textStyle?.columnSpacing);
1118
1118
  const columnGap = Number.isFinite(parsedColumnSpacing) && parsedColumnSpacing > 0 ? `${parsedColumnSpacing}px` : "0.75em";
1119
- const kinsokuStyles = chunk6QGTRYSC_js.getKinsokuLineBreakStyles(element.textStyle);
1119
+ const kinsokuStyles = chunkRZYOOWZN_js.getKinsokuLineBreakStyles(element.textStyle);
1120
1120
  if (hasColumns) {
1121
1121
  return {
1122
1122
  display: "block",
@@ -1163,10 +1163,10 @@ function getTextLayoutStyle(element) {
1163
1163
 
1164
1164
  // src/viewer/utils/text-effects.tsx
1165
1165
  function buildTextFillCss2(style) {
1166
- return chunk6QGTRYSC_js.buildTextFillCss(style);
1166
+ return chunkRZYOOWZN_js.buildTextFillCss(style);
1167
1167
  }
1168
1168
  function buildTextBody3DSceneStyle2(textStyle) {
1169
- return chunk6QGTRYSC_js.buildTextBody3DSceneStyle(textStyle);
1169
+ return chunkRZYOOWZN_js.buildTextBody3DSceneStyle(textStyle);
1170
1170
  }
1171
1171
 
1172
1172
  // src/viewer/utils/text-warp-css.tsx
@@ -1351,13 +1351,13 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
1351
1351
  if (!subElementAnimStates || subElementAnimStates.size === 0) {
1352
1352
  return renderedSegments;
1353
1353
  }
1354
- const paraKey = `${elementId}${chunk6QGTRYSC_js.TEXT_BUILD_ID_SEP}p${paraIndex}`;
1354
+ const paraKey = `${elementId}${chunkRZYOOWZN_js.TEXT_BUILD_ID_SEP}p${paraIndex}`;
1355
1355
  const paraState = subElementAnimStates.get(paraKey);
1356
1356
  if (paraState) {
1357
1357
  const style = buildAnimStyle(paraState);
1358
1358
  return /* @__PURE__ */ jsxRuntime.jsx("span", { "data-anim-id": paraKey, style: { display: "inline", ...style }, children: renderedSegments }, paraKey);
1359
1359
  }
1360
- const spec = chunk6QGTRYSC_js.buildTextBuildSpec(
1360
+ const spec = chunkRZYOOWZN_js.buildTextBuildSpec(
1361
1361
  elementId,
1362
1362
  paraIndex,
1363
1363
  paraSegments.map((entry) => ({ text: entry.segment.text, style: entry })),
@@ -1375,7 +1375,7 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
1375
1375
  "span",
1376
1376
  {
1377
1377
  "data-anim-id": span.animId,
1378
- style: chunk6QGTRYSC_js.textBuildSpanStyle(span),
1378
+ style: chunkRZYOOWZN_js.textBuildSpanStyle(span),
1379
1379
  children: content
1380
1380
  },
1381
1381
  span.animId
@@ -1519,10 +1519,10 @@ function renderScriptAwareText(text, needsScriptFonts, scriptFonts, baseFontFami
1519
1519
  if (!needsScriptFonts || !text) {
1520
1520
  return text;
1521
1521
  }
1522
- const runs = chunk6QGTRYSC_js.segmentByScript(text);
1522
+ const runs = chunkRZYOOWZN_js.segmentByScript(text);
1523
1523
  if (runs.length <= 1) {
1524
1524
  if (runs.length === 1) {
1525
- const font = chunk6QGTRYSC_js.resolveFontForScript(runs[0].script, scriptFonts);
1525
+ const font = chunkRZYOOWZN_js.resolveFontForScript(runs[0].script, scriptFonts);
1526
1526
  if (font && font !== baseFontFamily) {
1527
1527
  return /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontFamily: font }, children: text });
1528
1528
  }
@@ -1530,7 +1530,7 @@ function renderScriptAwareText(text, needsScriptFonts, scriptFonts, baseFontFami
1530
1530
  return text;
1531
1531
  }
1532
1532
  return runs.map((run, i) => {
1533
- const font = chunk6QGTRYSC_js.resolveFontForScript(run.script, scriptFonts);
1533
+ const font = chunkRZYOOWZN_js.resolveFontForScript(run.script, scriptFonts);
1534
1534
  if (!font || font === baseFontFamily) {
1535
1535
  return /* @__PURE__ */ jsxRuntime.jsx(React6__default.default.Fragment, { children: run.text }, `${keyPrefix}-r${i}`);
1536
1536
  }
@@ -1541,14 +1541,14 @@ function renderMetricPieces(text, metric, keyPrefix, inner) {
1541
1541
  if (!metric || !text) {
1542
1542
  return inner(text, keyPrefix);
1543
1543
  }
1544
- const pieces = chunk6QGTRYSC_js.splitRunForMetrics(text, metric.font);
1544
+ const pieces = chunkRZYOOWZN_js.splitRunForMetrics(text, metric.font);
1545
1545
  if (pieces.length <= 1) {
1546
1546
  return inner(text, keyPrefix);
1547
1547
  }
1548
1548
  return pieces.map((piece, i) => /* @__PURE__ */ jsxRuntime.jsx(
1549
1549
  "span",
1550
1550
  {
1551
- style: { letterSpacing: chunk6QGTRYSC_js.pieceLetterSpacing(metric.authoredPx, piece.tracking) },
1551
+ style: { letterSpacing: chunkRZYOOWZN_js.pieceLetterSpacing(metric.authoredPx, piece.tracking) },
1552
1552
  children: inner(piece.text, `${keyPrefix}-w${i}`)
1553
1553
  },
1554
1554
  `${keyPrefix}-w${i}`
@@ -1619,8 +1619,8 @@ function renderSegmentContent(elementId, segmentIndex, textValue, lines, needsSc
1619
1619
  });
1620
1620
  }
1621
1621
  function renderEquationSegment(elementId, segmentIndex, equationXml, equationNumber) {
1622
- const mathml = chunk6QGTRYSC_js.convertOmmlToMathMl(equationXml);
1623
- const safeMathml = mathml ? chunk6QGTRYSC_js.sanitizeMathMl(mathml) : "";
1622
+ const mathml = chunkRZYOOWZN_js.convertOmmlToMathMl(equationXml);
1623
+ const safeMathml = mathml ? chunkRZYOOWZN_js.sanitizeMathMl(mathml) : "";
1624
1624
  const equationContent = safeMathml ? /* @__PURE__ */ jsxRuntime.jsx(
1625
1625
  "span",
1626
1626
  {
@@ -1670,7 +1670,7 @@ function renderEquationSegment(elementId, segmentIndex, equationXml, equationNum
1670
1670
  return /* @__PURE__ */ jsxRuntime.jsx("span", { children: equationContent }, `${elementId}-seg-${segmentIndex}`);
1671
1671
  }
1672
1672
  function renderPictureBullet(elementId, segmentIndex, bulletInfo, baseFontSize) {
1673
- const picture = chunk6QGTRYSC_js.resolvePictureBullet(bulletInfo, baseFontSize) ?? {
1673
+ const picture = chunkRZYOOWZN_js.resolvePictureBullet(bulletInfo, baseFontSize) ?? {
1674
1674
  sizePx: baseFontSize,
1675
1675
  fallbackMarker: "\u2022",
1676
1676
  accessibleLabel: "Bullet"
@@ -1721,7 +1721,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1721
1721
  }
1722
1722
  const segmentStyle = segment.style || {};
1723
1723
  const rawText = bulletInfo && typeof bulletHangPx === "number" ? (segment.text || "").trimEnd() : segment.text || "";
1724
- const textValue = chunk6QGTRYSC_js.substituteFieldText(rawText, segment.fieldType, fieldContext);
1724
+ const textValue = chunkRZYOOWZN_js.substituteFieldText(rawText, segment.fieldType, fieldContext);
1725
1725
  const lines = textValue.split("\n");
1726
1726
  const textDecorationTokens = [];
1727
1727
  if (segmentStyle.underline || segmentStyle.hyperlink) {
@@ -1731,8 +1731,8 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1731
1731
  textDecorationTokens.push("line-through");
1732
1732
  }
1733
1733
  const isDoubleStrike = segmentStyle.strikethrough && segmentStyle.strikeType === "dblStrike";
1734
- const resolvedSegmentColor = segmentStyle.hyperlink ? chunk6QGTRYSC_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, HYPERLINK_COLOR) : chunk6QGTRYSC_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, fallbackColor);
1735
- const underlineDecoration = chunk6QGTRYSC_js.resolveUnderlineDecorationStyle(
1734
+ const resolvedSegmentColor = segmentStyle.hyperlink ? chunkRZYOOWZN_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, HYPERLINK_COLOR) : chunkRZYOOWZN_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, fallbackColor);
1735
+ const underlineDecoration = chunkRZYOOWZN_js.resolveUnderlineDecorationStyle(
1736
1736
  Boolean(isDoubleStrike),
1737
1737
  segmentStyle.underlineStyle
1738
1738
  );
@@ -1742,17 +1742,17 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1742
1742
  const authoredLetterSpacing = typeof segmentStyle.characterSpacing === "number" && segmentStyle.characterSpacing !== 0 ? segmentStyle.characterSpacing / 100 * (96 / 72) : 0;
1743
1743
  const textFillStyles = buildTextFillCss2(segmentStyle);
1744
1744
  const rawFontSize = segmentStyle.fontSize || element.textStyle?.fontSize || DEFAULT_TEXT_FONT_SIZE;
1745
- const autoFitScale = chunk6QGTRYSC_js.resolveAutoFitFontScale(element.textStyle);
1745
+ const autoFitScale = chunkRZYOOWZN_js.resolveAutoFitFontScale(element.textStyle);
1746
1746
  const baseFontSize = rawFontSize * autoFitScale;
1747
1747
  const baselineShift = baselineFraction !== 0 ? `${baselineFraction * baseFontSize}px` : void 0;
1748
1748
  const baseFontSizePt = baseFontSize * (72 / 96);
1749
1749
  const fontKerning = typeof segmentStyle.kerning === "number" ? segmentStyle.kerning === 0 ? "none" : baseFontSizePt >= segmentStyle.kerning / 100 ? "normal" : "none" : void 0;
1750
1750
  const rawFontFamily = segmentStyle.fontFamily || element.textStyle?.fontFamily;
1751
- const baseFontFamily = rawFontFamily ? chunk6QGTRYSC_js.getSubstituteFontFamily(
1751
+ const baseFontFamily = rawFontFamily ? chunkRZYOOWZN_js.getSubstituteFontFamily(
1752
1752
  rawFontFamily,
1753
- chunk6QGTRYSC_js.parsePanoseString(segmentStyle.latinFontPanose ?? element.textStyle?.latinFontPanose)
1753
+ chunkRZYOOWZN_js.parsePanoseString(segmentStyle.latinFontPanose ?? element.textStyle?.latinFontPanose)
1754
1754
  ) : DEFAULT_FONT_FAMILY2;
1755
- const scriptFont = (name, panose) => name ? chunk6QGTRYSC_js.getSubstituteFontFamily(name, chunk6QGTRYSC_js.parsePanoseString(panose)) : baseFontFamily;
1755
+ const scriptFont = (name, panose) => name ? chunkRZYOOWZN_js.getSubstituteFontFamily(name, chunkRZYOOWZN_js.parsePanoseString(panose)) : baseFontFamily;
1756
1756
  const scriptFonts = {
1757
1757
  latin: baseFontFamily,
1758
1758
  eastAsia: scriptFont(
@@ -1768,7 +1768,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1768
1768
  segmentStyle.symbolFontPanose ?? element.textStyle?.symbolFontPanose
1769
1769
  )
1770
1770
  };
1771
- const needsScriptFonts = chunk6QGTRYSC_js.hasDistinctScriptFonts(scriptFonts);
1771
+ const needsScriptFonts = chunkRZYOOWZN_js.hasDistinctScriptFonts(scriptFonts);
1772
1772
  const metricFont = {
1773
1773
  fontFamily: baseFontFamily,
1774
1774
  fontSizePx: baseFontSize * baselineFontScale,
@@ -1776,9 +1776,9 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1776
1776
  italic: Boolean(segmentStyle.italic)
1777
1777
  };
1778
1778
  const metricContext = { font: metricFont, authoredPx: authoredLetterSpacing };
1779
- const letterSpacing = chunk6QGTRYSC_js.pieceLetterSpacing(
1779
+ const letterSpacing = chunkRZYOOWZN_js.pieceLetterSpacing(
1780
1780
  authoredLetterSpacing,
1781
- chunk6QGTRYSC_js.resolveMetricTrackingPx(textValue, metricFont)
1781
+ chunkRZYOOWZN_js.resolveMetricTrackingPx(textValue, metricFont)
1782
1782
  );
1783
1783
  const spanStyle = {
1784
1784
  color: resolvedSegmentColor,
@@ -1797,15 +1797,15 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1797
1797
  fontVariantCaps: segmentStyle.textCaps === "small" ? "small-caps" : void 0,
1798
1798
  letterSpacing,
1799
1799
  fontKerning,
1800
- backgroundColor: textFillStyles ? void 0 : segmentStyle.highlightColor ? chunk6QGTRYSC_js.normalizeHexColor(segmentStyle.highlightColor, "transparent") : void 0,
1800
+ backgroundColor: textFillStyles ? void 0 : segmentStyle.highlightColor ? chunkRZYOOWZN_js.normalizeHexColor(segmentStyle.highlightColor, "transparent") : void 0,
1801
1801
  ...textFillStyles,
1802
- textDecorationColor: segmentStyle.underlineColor ? chunk6QGTRYSC_js.normalizeHexColor(segmentStyle.underlineColor, void 0) : void 0,
1803
- WebkitTextStroke: segmentStyle.textOutlineWidth && segmentStyle.textOutlineColor ? `${segmentStyle.textOutlineWidth}px ${chunk6QGTRYSC_js.normalizeHexColor(segmentStyle.textOutlineColor, "#000000")}` : segmentStyle.textOutlineWidth ? `${segmentStyle.textOutlineWidth}px currentColor` : void 0,
1802
+ textDecorationColor: segmentStyle.underlineColor ? chunkRZYOOWZN_js.normalizeHexColor(segmentStyle.underlineColor, void 0) : void 0,
1803
+ WebkitTextStroke: segmentStyle.textOutlineWidth && segmentStyle.textOutlineColor ? `${segmentStyle.textOutlineWidth}px ${chunkRZYOOWZN_js.normalizeHexColor(segmentStyle.textOutlineColor, "#000000")}` : segmentStyle.textOutlineWidth ? `${segmentStyle.textOutlineWidth}px currentColor` : void 0,
1804
1804
  paintOrder: segmentStyle.textOutlineWidth ? "stroke fill" : void 0,
1805
- textShadow: chunk6QGTRYSC_js.buildTextShadowCss(segmentStyle),
1806
- filter: chunk6QGTRYSC_js.buildTextRunFilterChain(segmentStyle),
1807
- opacity: chunk6QGTRYSC_js.getTextAlphaOpacity(segmentStyle),
1808
- WebkitBoxReflect: chunk6QGTRYSC_js.buildTextReflectionCss(segmentStyle)
1805
+ textShadow: chunkRZYOOWZN_js.buildTextShadowCss(segmentStyle),
1806
+ filter: chunkRZYOOWZN_js.buildTextRunFilterChain(segmentStyle),
1807
+ opacity: chunkRZYOOWZN_js.getTextAlphaOpacity(segmentStyle),
1808
+ WebkitBoxReflect: chunkRZYOOWZN_js.buildTextReflectionCss(segmentStyle)
1809
1809
  };
1810
1810
  const runRtl = segmentStyle.rtl;
1811
1811
  if (runRtl !== void 0 && runRtl !== paragraphRtl) {
@@ -1825,7 +1825,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1825
1825
  spanStyle.fontSize = baseFontSize * (bulletInfo.sizePercent / 100) * baselineFontScale;
1826
1826
  }
1827
1827
  if (bulletInfo.color) {
1828
- spanStyle.color = chunk6QGTRYSC_js.normalizeHexColor(bulletInfo.color, resolvedSegmentColor);
1828
+ spanStyle.color = chunkRZYOOWZN_js.normalizeHexColor(bulletInfo.color, resolvedSegmentColor);
1829
1829
  }
1830
1830
  if (typeof bulletHangPx === "number" && bulletHangPx > 0) {
1831
1831
  spanStyle.display = "inline-block";
@@ -1871,7 +1871,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1871
1871
  textAlign: segment.rubyAlignment === "l" ? "left" : segment.rubyAlignment === "r" ? "right" : segment.rubyAlignment === "dist" || segment.rubyAlignment === "distCat" || segment.rubyAlignment === "distLetter" ? "justify" : "center"
1872
1872
  };
1873
1873
  if (segment.rubyStyle?.color) {
1874
- rubyStyle.color = chunk6QGTRYSC_js.normalizeHexColor(segment.rubyStyle.color, resolvedSegmentColor);
1874
+ rubyStyle.color = chunkRZYOOWZN_js.normalizeHexColor(segment.rubyStyle.color, resolvedSegmentColor);
1875
1875
  }
1876
1876
  innerContent = /* @__PURE__ */ jsxRuntime.jsxs("ruby", { children: [
1877
1877
  baseContent,
@@ -1944,7 +1944,7 @@ function resolveParagraphSpacing(input) {
1944
1944
  if (typeof exactPt === "number" && exactPt > 0) {
1945
1945
  result.lineHeight = `${exactPt * PT_TO_PX}px`;
1946
1946
  } else if (typeof multiplier === "number" && multiplier > 0) {
1947
- result.lineHeight = chunk6QGTRYSC_js.proportionalLineHeight(multiplier);
1947
+ result.lineHeight = chunkRZYOOWZN_js.proportionalLineHeight(multiplier);
1948
1948
  }
1949
1949
  return result;
1950
1950
  }
@@ -1966,7 +1966,7 @@ function groupSegmentsIntoParagraphs(segments) {
1966
1966
  return paragraphs;
1967
1967
  }
1968
1968
  function renderTextSegments(element, fallbackColor, emptyFallback, findHighlights, onHyperlinkClick, fieldContext, subElementAnimStates, segmentOverrides, requireCtrlClick) {
1969
- if (!chunk6QGTRYSC_js.hasTextProperties(element)) {
1969
+ if (!chunkRZYOOWZN_js.hasTextProperties(element)) {
1970
1970
  return emptyFallback || null;
1971
1971
  }
1972
1972
  const effectiveSegments = segmentOverrides ?? element.textSegments;
@@ -1987,10 +1987,10 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
1987
1987
  return element.text || emptyFallback || "";
1988
1988
  }
1989
1989
  const paragraphs = groupSegmentsIntoParagraphs(effectiveSegments);
1990
- const paragraphIndents = chunk6QGTRYSC_js.hasTextProperties(element) ? element.paragraphIndents : void 0;
1991
- const elementRtl = chunk6QGTRYSC_js.hasTextProperties(element) ? element.textStyle?.rtl : void 0;
1992
- const elementAlign = chunk6QGTRYSC_js.hasTextProperties(element) ? element.textStyle?.align : void 0;
1993
- const bodyStyle = chunk6QGTRYSC_js.hasTextProperties(element) ? element.textStyle : void 0;
1990
+ const paragraphIndents = chunkRZYOOWZN_js.hasTextProperties(element) ? element.paragraphIndents : void 0;
1991
+ const elementRtl = chunkRZYOOWZN_js.hasTextProperties(element) ? element.textStyle?.rtl : void 0;
1992
+ const elementAlign = chunkRZYOOWZN_js.hasTextProperties(element) ? element.textStyle?.align : void 0;
1993
+ const bodyStyle = chunkRZYOOWZN_js.hasTextProperties(element) ? element.textStyle : void 0;
1994
1994
  const spaceFirstLast = bodyStyle?.spaceFirstLastParagraph !== false;
1995
1995
  return paragraphs.map(({ entries: paraSegments, terminator }, paraIndex) => {
1996
1996
  const paraIndent = paragraphIndents?.[paraIndex];
@@ -2005,14 +2005,14 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
2005
2005
  return Boolean(segment.text) && segment.text.trim().length > 0;
2006
2006
  });
2007
2007
  const hasBullet = bulletInfo && !bulletInfo.none && hasVisibleTextContent;
2008
- const paraRtl = chunk6QGTRYSC_js.resolveParagraphRtl(paraSegments, elementRtl);
2008
+ const paraRtl = chunkRZYOOWZN_js.resolveParagraphRtl(paraSegments, elementRtl);
2009
2009
  const isRtlParagraph = paraRtl === true;
2010
- const paraAlign = chunk6QGTRYSC_js.resolveParagraphAlign(paraSegments, elementAlign);
2011
- const cssTextAlign = chunk6QGTRYSC_js.resolveCssTextAlign(paraAlign, isRtlParagraph);
2010
+ const paraAlign = chunkRZYOOWZN_js.resolveParagraphAlign(paraSegments, elementAlign);
2011
+ const cssTextAlign = chunkRZYOOWZN_js.resolveCssTextAlign(paraAlign, isRtlParagraph);
2012
2012
  const paraMarginLeft = isRtlParagraph ? void 0 : rawMarginLeft;
2013
2013
  const paraMarginRight = isRtlParagraph ? rawMarginLeft : void 0;
2014
2014
  const paraTextIndent = rawTextIndent;
2015
- const paraKinsokuStyle = chunk6QGTRYSC_js.getKinsokuLineBreakStyles(firstSeg?.segment.style);
2015
+ const paraKinsokuStyle = chunkRZYOOWZN_js.getKinsokuLineBreakStyles(firstSeg?.segment.style);
2016
2016
  const hasParaKinsoku = Object.keys(paraKinsokuStyle).length > 0;
2017
2017
  const paraProps = effectiveSegments[firstSeg?.globalIndex ?? -1]?.paragraphProperties ?? (paraSegments.length === 0 ? terminator?.paragraphProperties : void 0);
2018
2018
  const spacing = resolveParagraphSpacing({
@@ -2022,7 +2022,7 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
2022
2022
  isLast: paraIndex === paragraphs.length - 1,
2023
2023
  spaceFirstLast
2024
2024
  });
2025
- const strutFontSize = chunk6QGTRYSC_js.resolveParagraphStrutFontSize(
2025
+ const strutFontSize = chunkRZYOOWZN_js.resolveParagraphStrutFontSize(
2026
2026
  paraSegments.length > 0 ? paraSegments.map(({ segment }) => segment) : terminator ? [terminator] : [],
2027
2027
  bodyStyle?.fontSize
2028
2028
  );
@@ -2126,13 +2126,13 @@ function hexToRgbUnit(hex) {
2126
2126
  };
2127
2127
  }
2128
2128
  function getDuotoneColors(element) {
2129
- if (!chunk6QGTRYSC_js.isImageLikeElement(element)) {
2129
+ if (!chunkRZYOOWZN_js.isImageLikeElement(element)) {
2130
2130
  return void 0;
2131
2131
  }
2132
2132
  return element.imageEffects?.duotone;
2133
2133
  }
2134
2134
  function buildLineShadowCss(element) {
2135
- if (!chunk6QGTRYSC_js.hasShapeProperties(element)) {
2135
+ if (!chunkRZYOOWZN_js.hasShapeProperties(element)) {
2136
2136
  return void 0;
2137
2137
  }
2138
2138
  const ss = element.shapeStyle;
@@ -2143,13 +2143,13 @@ function buildLineShadowCss(element) {
2143
2143
  const offsetY = typeof ss.lineShadowOffsetY === "number" ? ss.lineShadowOffsetY : 2;
2144
2144
  const blur = typeof ss.lineShadowBlur === "number" ? Math.max(0, ss.lineShadowBlur) : 4;
2145
2145
  const opacity = typeof ss.lineShadowOpacity === "number" ? Math.max(0, Math.min(1, ss.lineShadowOpacity)) : 0.35;
2146
- return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${chunk6QGTRYSC_js.colorWithOpacity(
2147
- chunk6QGTRYSC_js.normalizeHexColor(ss.lineShadowColor, "#000000"),
2146
+ return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${chunkRZYOOWZN_js.colorWithOpacity(
2147
+ chunkRZYOOWZN_js.normalizeHexColor(ss.lineShadowColor, "#000000"),
2148
2148
  opacity
2149
2149
  )}`;
2150
2150
  }
2151
2151
  function buildLineGlowFilter(element) {
2152
- if (!chunk6QGTRYSC_js.hasShapeProperties(element)) {
2152
+ if (!chunkRZYOOWZN_js.hasShapeProperties(element)) {
2153
2153
  return void 0;
2154
2154
  }
2155
2155
  const ss = element.shapeStyle;
@@ -2158,7 +2158,7 @@ function buildLineGlowFilter(element) {
2158
2158
  }
2159
2159
  const glowOpacity = typeof ss.lineGlowOpacity === "number" ? ss.lineGlowOpacity : 0.75;
2160
2160
  const glowRad = Math.round(Math.max(0, ss.lineGlowRadius));
2161
- const glowCol = chunk6QGTRYSC_js.colorWithOpacity(chunk6QGTRYSC_js.normalizeHexColor(ss.lineGlowColor, "#ffff00"), glowOpacity);
2161
+ const glowCol = chunkRZYOOWZN_js.colorWithOpacity(chunkRZYOOWZN_js.normalizeHexColor(ss.lineGlowColor, "#ffff00"), glowOpacity);
2162
2162
  return `drop-shadow(0 0 ${glowRad}px ${glowCol})`;
2163
2163
  }
2164
2164
  function mapDagBlendModeToCss(blend) {
@@ -2182,7 +2182,7 @@ function getDagDuotoneFilterId(elementId) {
2182
2182
  return `dag-duotone-${elementId}`;
2183
2183
  }
2184
2184
  function hasDagDuotoneEffect(element) {
2185
- if (!chunk6QGTRYSC_js.hasShapeProperties(element)) {
2185
+ if (!chunkRZYOOWZN_js.hasShapeProperties(element)) {
2186
2186
  return false;
2187
2187
  }
2188
2188
  return Boolean(element.shapeStyle?.dagDuotone);
@@ -2245,7 +2245,7 @@ function getRoundRectRadiusPx(element) {
2245
2245
 
2246
2246
  // src/viewer/utils/shape-visual-3d.ts
2247
2247
  function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elementHeight) {
2248
- return chunk6QGTRYSC_js.build3DExtrusionData(
2248
+ return chunkRZYOOWZN_js.build3DExtrusionData(
2249
2249
  shape3d,
2250
2250
  scene3d,
2251
2251
  fillColor,
@@ -2254,7 +2254,7 @@ function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elemen
2254
2254
  );
2255
2255
  }
2256
2256
  function apply3dEffects2(base, scene3d, shape3d, fillColorFallback) {
2257
- chunk6QGTRYSC_js.apply3dEffects(base, scene3d, shape3d, fillColorFallback);
2257
+ chunkRZYOOWZN_js.apply3dEffects(base, scene3d, shape3d, fillColorFallback);
2258
2258
  }
2259
2259
 
2260
2260
  // src/viewer/utils/shape-visual-style.ts
@@ -2262,43 +2262,43 @@ function getGradientTilingCss(style) {
2262
2262
  if (!style || style.fillMode !== "gradient") {
2263
2263
  return void 0;
2264
2264
  }
2265
- const isStructuredLinear = (style.fillGradientType || "linear") === "linear" && chunk6QGTRYSC_js.sanitizeGradientStops(style.fillGradientStops).length > 0;
2265
+ const isStructuredLinear = (style.fillGradientType || "linear") === "linear" && chunkRZYOOWZN_js.sanitizeGradientStops(style.fillGradientStops).length > 0;
2266
2266
  if (isStructuredLinear) {
2267
- const flip = chunk6QGTRYSC_js.getGradientTileFlipCss(style.fillGradientFlip);
2267
+ const flip = chunkRZYOOWZN_js.getGradientTileFlipCss(style.fillGradientFlip);
2268
2268
  if (flip) {
2269
2269
  return flip;
2270
2270
  }
2271
2271
  }
2272
- return chunk6QGTRYSC_js.getGradientTileRectCss(style.fillGradientTileRect);
2272
+ return chunkRZYOOWZN_js.getGradientTileRectCss(style.fillGradientTileRect);
2273
2273
  }
2274
2274
  function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeColor, animatesFill, animatesStroke) {
2275
- if (!chunk6QGTRYSC_js.hasShapeProperties(element)) {
2275
+ if (!chunkRZYOOWZN_js.hasShapeProperties(element)) {
2276
2276
  return {};
2277
2277
  }
2278
2278
  const normalizedShapeType = getShapeType(element.shapeType);
2279
- const clipPath = chunk6QGTRYSC_js.isIdentityRectClip(element) ? void 0 : chunk6QGTRYSC_js.getResolvedShapeClipPath(element);
2279
+ const clipPath = chunkRZYOOWZN_js.isIdentityRectClip(element) ? void 0 : chunkRZYOOWZN_js.getResolvedShapeClipPath(element);
2280
2280
  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;
2281
- const rendersStrokeOnlyPreset = chunk6QGTRYSC_js.isStrokeOnlyPresetElement(element);
2281
+ const rendersStrokeOnlyPreset = chunkRZYOOWZN_js.isStrokeOnlyPresetElement(element);
2282
2282
  const fillOpacity = element.shapeStyle?.fillOpacity;
2283
2283
  const strokeOpacity = element.shapeStyle?.strokeOpacity;
2284
- const strokeDash = chunk6QGTRYSC_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2285
- const fillGradient = chunk6QGTRYSC_js.buildCssGradientFromShapeStyle(element.shapeStyle, {
2284
+ const strokeDash = chunkRZYOOWZN_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2285
+ const fillGradient = chunkRZYOOWZN_js.buildCssGradientFromShapeStyle(element.shapeStyle, {
2286
2286
  rotation: element.rotation,
2287
2287
  width: element.width,
2288
2288
  height: element.height
2289
2289
  }) || element.shapeStyle?.fillGradient;
2290
- const shadowCss = chunk6QGTRYSC_js.buildShadowCssFromShapeStyle(element.shapeStyle);
2291
- const innerShadowCss = chunk6QGTRYSC_js.buildInnerShadowCssFromShapeStyle(element.shapeStyle);
2292
- const resolvedFillColor = chunk6QGTRYSC_js.colorWithOpacity(fillColor, fillOpacity);
2293
- const resolvedStrokeColor = chunk6QGTRYSC_js.colorWithOpacity(strokeColor, strokeOpacity);
2290
+ const shadowCss = chunkRZYOOWZN_js.buildShadowCssFromShapeStyle(element.shapeStyle);
2291
+ const innerShadowCss = chunkRZYOOWZN_js.buildInnerShadowCssFromShapeStyle(element.shapeStyle);
2292
+ const resolvedFillColor = chunkRZYOOWZN_js.colorWithOpacity(fillColor, fillOpacity);
2293
+ const resolvedStrokeColor = chunkRZYOOWZN_js.colorWithOpacity(strokeColor, strokeOpacity);
2294
2294
  const ss = element.shapeStyle;
2295
2295
  const gradientTiling = getGradientTilingCss(ss);
2296
- const paintsGradientOutline = chunk6QGTRYSC_js.suppressesCssBorder(element);
2296
+ const paintsGradientOutline = chunkRZYOOWZN_js.suppressesCssBorder(element);
2297
2297
  const hasFillOverlayColor = Boolean(
2298
2298
  ss?.dagFillOverlayColor && ss.dagFillOverlayColor !== "transparent"
2299
2299
  );
2300
2300
  const combinedShadowParts = [];
2301
- const multiLayerShadow = chunk6QGTRYSC_js.buildMultiLayerShadowCss(element.shapeStyle);
2301
+ const multiLayerShadow = chunkRZYOOWZN_js.buildMultiLayerShadowCss(element.shapeStyle);
2302
2302
  if (multiLayerShadow) {
2303
2303
  combinedShadowParts.push(multiLayerShadow);
2304
2304
  } else if (shadowCss) {
@@ -2307,7 +2307,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2307
2307
  if (innerShadowCss) {
2308
2308
  combinedShadowParts.push(innerShadowCss);
2309
2309
  }
2310
- const glowBoxShadow = chunk6QGTRYSC_js.buildGlowBoxShadow(ss?.glowColor, ss?.glowRadius, ss?.glowOpacity);
2310
+ const glowBoxShadow = chunkRZYOOWZN_js.buildGlowBoxShadow(ss?.glowColor, ss?.glowRadius, ss?.glowOpacity);
2311
2311
  if (glowBoxShadow) {
2312
2312
  combinedShadowParts.push(glowBoxShadow);
2313
2313
  }
@@ -2315,7 +2315,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2315
2315
  if (lineShadow) {
2316
2316
  combinedShadowParts.push(lineShadow);
2317
2317
  }
2318
- const compoundLineShadow = chunk6QGTRYSC_js.getCompoundLineBoxShadow(
2318
+ const compoundLineShadow = chunkRZYOOWZN_js.getCompoundLineBoxShadow(
2319
2319
  element.shapeStyle?.compoundLine,
2320
2320
  strokeWidth,
2321
2321
  resolvedStrokeColor
@@ -2328,11 +2328,11 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2328
2328
  if (ss?.glowColor && ss.glowColor !== "transparent" && ss.glowRadius) {
2329
2329
  const glowOpacity = typeof ss.glowOpacity === "number" ? ss.glowOpacity : 0.75;
2330
2330
  const glowRad = Math.round(Math.max(0, ss.glowRadius));
2331
- const glowCol = chunk6QGTRYSC_js.colorWithOpacity(chunk6QGTRYSC_js.normalizeHexColor(ss.glowColor, "#ffff00"), glowOpacity);
2331
+ const glowCol = chunkRZYOOWZN_js.colorWithOpacity(chunkRZYOOWZN_js.normalizeHexColor(ss.glowColor, "#ffff00"), glowOpacity);
2332
2332
  filterParts.push(`drop-shadow(0 0 ${glowRad}px ${glowCol})`);
2333
2333
  }
2334
2334
  if (typeof ss?.softEdgeRadius === "number" && ss.softEdgeRadius > 0) {
2335
- filterParts.push(`url(#${chunk6QGTRYSC_js.getSoftEdgeFilterId(element.id)})`);
2335
+ filterParts.push(`url(#${chunkRZYOOWZN_js.getSoftEdgeFilterId(element.id)})`);
2336
2336
  }
2337
2337
  if (typeof ss?.blurRadius === "number" && ss.blurRadius > 0) {
2338
2338
  filterParts.push(`blur(${Math.round(ss.blurRadius)}px)`);
@@ -2341,13 +2341,13 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2341
2341
  if (lineGlowCss) {
2342
2342
  filterParts.push(lineGlowCss);
2343
2343
  }
2344
- const dagFilter = chunk6QGTRYSC_js.getEffectDagFilter(ss, element.id);
2344
+ const dagFilter = chunkRZYOOWZN_js.getEffectDagFilter(ss, element.id);
2345
2345
  if (dagFilter) {
2346
2346
  filterParts.push(dagFilter);
2347
2347
  }
2348
2348
  const lineJoinCss = ss?.lineJoin === "round" ? "round" : ss?.lineJoin === "bevel" ? "bevel" : ss?.lineJoin === "miter" ? "miter" : void 0;
2349
2349
  const miterLimitCss = ss?.lineJoin === "miter" && typeof ss?.miterLimit === "number" ? Math.max(ss.miterLimit / 1e5, 1) : void 0;
2350
- const patternFill = chunk6QGTRYSC_js.buildPatternFillCss(element.shapeStyle);
2350
+ const patternFill = chunkRZYOOWZN_js.buildPatternFillCss(element.shapeStyle);
2351
2351
  const imageFillUrl = ss?.fillMode === "image" && ss.fillImageUrl ? ss.fillImageUrl : void 0;
2352
2352
  const imageFillMode = ss?.fillImageMode || "stretch";
2353
2353
  let reflectCss;
@@ -2359,7 +2359,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2359
2359
  const endOpacity = typeof ss.reflectionEndOpacity === "number" ? ss.reflectionEndOpacity : 0;
2360
2360
  const fadeLength = typeof ss.reflectionEndPosition === "number" ? Math.round(ss.reflectionEndPosition * Math.max(element.height, 1)) : 100;
2361
2361
  const blurRadius = typeof ss.reflectionBlurRadius === "number" ? ss.reflectionBlurRadius : 0;
2362
- reflectCss = chunk6QGTRYSC_js.buildReflectionCss(distance, startOpacity, endOpacity, fadeLength, blurRadius);
2362
+ reflectCss = chunkRZYOOWZN_js.buildReflectionCss(distance, startOpacity, endOpacity, fadeLength, blurRadius);
2363
2363
  }
2364
2364
  }
2365
2365
  const base = {
@@ -2405,9 +2405,9 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2405
2405
  // path following the shape's geometry, because a CSS border can only take
2406
2406
  // one colour. Keeping the border too would draw the parser's averaged
2407
2407
  // solid underneath the gradient.
2408
- borderWidth: strokeWidth > 0 && !paintsGradientOutline ? chunk6QGTRYSC_js.getCompoundLineBorderWidth(ss?.compoundLine, strokeWidth) : 0,
2408
+ borderWidth: strokeWidth > 0 && !paintsGradientOutline ? chunkRZYOOWZN_js.getCompoundLineBorderWidth(ss?.compoundLine, strokeWidth) : 0,
2409
2409
  borderColor: strokeWidth > 0 && !paintsGradientOutline ? resolvedStrokeColor : void 0,
2410
- borderStyle: strokeWidth > 0 && !paintsGradientOutline ? chunk6QGTRYSC_js.getCssBorderDashStyle(strokeDash, ss?.compoundLine) : void 0,
2410
+ borderStyle: strokeWidth > 0 && !paintsGradientOutline ? chunkRZYOOWZN_js.getCssBorderDashStyle(strokeDash, ss?.compoundLine) : void 0,
2411
2411
  strokeLinejoin: lineJoinCss,
2412
2412
  strokeMiterlimit: miterLimitCss,
2413
2413
  strokeLinecap: ss?.lineCap === "rnd" ? "round" : ss?.lineCap === "sq" ? "square" : ss?.lineCap === "flat" ? "butt" : void 0
@@ -2467,7 +2467,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2467
2467
  borderWidth: 0,
2468
2468
  borderTopWidth: Math.max(strokeWidth, 2),
2469
2469
  borderTopColor: resolvedStrokeColor,
2470
- borderTopStyle: chunk6QGTRYSC_js.getCssBorderDashStyle(strokeDash)
2470
+ borderTopStyle: chunkRZYOOWZN_js.getCssBorderDashStyle(strokeDash)
2471
2471
  };
2472
2472
  }
2473
2473
  if (normalizedShapeType === "cylinder") {
@@ -2481,13 +2481,13 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2481
2481
  function getConnectorAdjustment(element, key, fallback) {
2482
2482
  const direct = element.shapeAdjustments?.[key];
2483
2483
  if (typeof direct === "number" && Number.isFinite(direct)) {
2484
- return chunk6QGTRYSC_js.clampUnitInterval(direct / 1e5);
2484
+ return chunkRZYOOWZN_js.clampUnitInterval(direct / 1e5);
2485
2485
  }
2486
2486
  const fallbackKey = element.shapeAdjustments?.adj;
2487
2487
  if (typeof fallbackKey === "number" && Number.isFinite(fallbackKey)) {
2488
- return chunk6QGTRYSC_js.clampUnitInterval(fallbackKey / 1e5);
2488
+ return chunkRZYOOWZN_js.clampUnitInterval(fallbackKey / 1e5);
2489
2489
  }
2490
- return chunk6QGTRYSC_js.clampUnitInterval(fallback);
2490
+ return chunkRZYOOWZN_js.clampUnitInterval(fallback);
2491
2491
  }
2492
2492
  function getConnectorPathGeometry(element) {
2493
2493
  const width = Math.max(element.width, 0);
@@ -2620,7 +2620,7 @@ function toHexByte(value) {
2620
2620
  return clamped.toString(16).padStart(2, "0");
2621
2621
  }
2622
2622
  function shiftHex(hex, factor, towardsWhite) {
2623
- const channels = chunk6QGTRYSC_js.hexToRgbChannels(hex);
2623
+ const channels = chunkRZYOOWZN_js.hexToRgbChannels(hex);
2624
2624
  if (!channels) {
2625
2625
  return hex;
2626
2626
  }
@@ -2646,7 +2646,7 @@ function buildCustomSubpathPaints(subpaths, hasFill, fillColor, fillOpacity) {
2646
2646
  const fillOff = subpath.fillMode === "none" || !hasFill;
2647
2647
  return {
2648
2648
  d: subpath.d,
2649
- fill: fillOff ? "none" : chunk6QGTRYSC_js.colorWithOpacity(adjustFillForMode(fillColor, subpath.fillMode), fillOpacity),
2649
+ fill: fillOff ? "none" : chunkRZYOOWZN_js.colorWithOpacity(adjustFillForMode(fillColor, subpath.fillMode), fillOpacity),
2650
2650
  stroked: subpath.stroke !== false
2651
2651
  };
2652
2652
  });
@@ -2662,11 +2662,11 @@ function strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray) {
2662
2662
  strokePaint,
2663
2663
  strokeWidth,
2664
2664
  dashArray,
2665
- lineCap: chunk6QGTRYSC_js.svgLineCap(shapeStyle?.lineCap),
2665
+ lineCap: chunkRZYOOWZN_js.svgLineCap(shapeStyle?.lineCap),
2666
2666
  lineJoin,
2667
2667
  miterLimit,
2668
- offsets: chunk6QGTRYSC_js.getCompoundLineOffsets(shapeStyle?.compoundLine, strokeWidth),
2669
- widths: chunk6QGTRYSC_js.getCompoundLineWidths(shapeStyle?.compoundLine, strokeWidth)
2668
+ offsets: chunkRZYOOWZN_js.getCompoundLineOffsets(shapeStyle?.compoundLine, strokeWidth),
2669
+ widths: chunkRZYOOWZN_js.getCompoundLineWidths(shapeStyle?.compoundLine, strokeWidth)
2670
2670
  };
2671
2671
  }
2672
2672
  function strokeStrands(d, keyBase, ctx) {
@@ -2714,9 +2714,9 @@ function gradientDefs(gradient) {
2714
2714
  }
2715
2715
  function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredPaths, shapeStyle, hasFill, fillColor, fillOpacity, strokePaint, strokeWidth, dashArray, animatesFill = false, gradient) {
2716
2716
  const ctx = strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray);
2717
- const subpaths = structuredPaths && structuredPaths.length > 0 ? chunk6QGTRYSC_js.customGeometryPathsToSvgSubpaths(structuredPaths, pathWidth, pathHeight) : void 0;
2717
+ const subpaths = structuredPaths && structuredPaths.length > 0 ? chunkRZYOOWZN_js.customGeometryPathsToSvgSubpaths(structuredPaths, pathWidth, pathHeight) : void 0;
2718
2718
  const needsPerSubpath = subpaths !== void 0 && subpaths.some((sp) => sp.fillMode && sp.fillMode !== "norm" || sp.stroke === false);
2719
- const gradientPaint = gradient ? chunk6QGTRYSC_js.svgGradientFillRef(gradient) : void 0;
2719
+ const gradientPaint = gradient ? chunkRZYOOWZN_js.svgGradientFillRef(gradient) : void 0;
2720
2720
  const nodes = [];
2721
2721
  if (subpaths && needsPerSubpath) {
2722
2722
  const paints = buildCustomSubpathPaints(subpaths, hasFill, fillColor, fillOpacity);
@@ -2748,7 +2748,7 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
2748
2748
  "path",
2749
2749
  {
2750
2750
  d: pathData,
2751
- fill: animatesFill ? "inherit" : gradientPaint ?? chunk6QGTRYSC_js.colorWithOpacity(fillColor, fillOpacity),
2751
+ fill: animatesFill ? "inherit" : gradientPaint ?? chunkRZYOOWZN_js.colorWithOpacity(fillColor, fillOpacity),
2752
2752
  stroke: "none",
2753
2753
  vectorEffect: "non-scaling-stroke"
2754
2754
  },
@@ -2774,14 +2774,14 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
2774
2774
  );
2775
2775
  }
2776
2776
  function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor, animatesFill, animatesStroke) {
2777
- if (!chunk6QGTRYSC_js.hasShapeProperties(element)) {
2777
+ if (!chunkRZYOOWZN_js.hasShapeProperties(element)) {
2778
2778
  return null;
2779
2779
  }
2780
2780
  const normalizedType = (element.shapeType || "").toLowerCase();
2781
- const fillPaint = animatesFill ? "inherit" : chunk6QGTRYSC_js.colorWithOpacity(fillColor, element.shapeStyle?.fillOpacity);
2782
- const strokePaint = animatesStroke ? "inherit" : chunk6QGTRYSC_js.colorWithOpacity(strokeColor, element.shapeStyle?.strokeOpacity);
2783
- const dashType = chunk6QGTRYSC_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2784
- const dashArray = chunk6QGTRYSC_js.getSvgStrokeDasharray(
2781
+ const fillPaint = animatesFill ? "inherit" : chunkRZYOOWZN_js.colorWithOpacity(fillColor, element.shapeStyle?.fillOpacity);
2782
+ const strokePaint = animatesStroke ? "inherit" : chunkRZYOOWZN_js.colorWithOpacity(strokeColor, element.shapeStyle?.strokeOpacity);
2783
+ const dashType = chunkRZYOOWZN_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2784
+ const dashArray = chunkRZYOOWZN_js.getSvgStrokeDasharray(
2785
2785
  dashType,
2786
2786
  Math.max(strokeWidth, 1),
2787
2787
  element.shapeStyle?.customDashSegments
@@ -2862,21 +2862,21 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2862
2862
  // container's `background-image` is suppressed for custom geometry, so
2863
2863
  // without this the shape fell back to the parser's representative solid
2864
2864
  // and lost every fade (issue #132).
2865
- chunk6QGTRYSC_js.buildSvgGradientDef(element.shapeStyle, element.id)
2865
+ chunkRZYOOWZN_js.buildSvgGradientDef(element.shapeStyle, element.id)
2866
2866
  );
2867
2867
  }
2868
- if (chunk6QGTRYSC_js.isCalloutShape(normalizedType)) {
2868
+ if (chunkRZYOOWZN_js.isCalloutShape(normalizedType)) {
2869
2869
  const width = Math.max(element.width, 1);
2870
2870
  const height = Math.max(element.height, 1);
2871
- const geometry = chunk6QGTRYSC_js.getCalloutLeaderLineGeometry(
2871
+ const geometry = chunkRZYOOWZN_js.getCalloutLeaderLineGeometry(
2872
2872
  normalizedType,
2873
2873
  width,
2874
2874
  height,
2875
2875
  element.shapeAdjustments
2876
2876
  );
2877
2877
  if (geometry && geometry.points.length >= 2) {
2878
- const leaderPath = chunk6QGTRYSC_js.buildCalloutLeaderLineSvgPath(geometry);
2879
- const bounds = chunk6QGTRYSC_js.getCalloutViewBoxBounds(width, height, geometry);
2878
+ const leaderPath = chunkRZYOOWZN_js.buildCalloutLeaderLineSvgPath(geometry);
2879
+ const bounds = chunkRZYOOWZN_js.getCalloutViewBoxBounds(width, height, geometry);
2880
2880
  const lineStroke = Math.max(strokeWidth, 1);
2881
2881
  const offsetLeft = bounds.minX;
2882
2882
  const offsetTop = bounds.minY;
@@ -2939,10 +2939,10 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2939
2939
  const endArrowW = element.shapeStyle?.connectorEndArrowWidth;
2940
2940
  const endArrowL = element.shapeStyle?.connectorEndArrowLength;
2941
2941
  const compoundLine = element.shapeStyle?.compoundLine;
2942
- const connectorLineCap = chunk6QGTRYSC_js.svgLineCap(element.shapeStyle?.lineCap);
2942
+ const connectorLineCap = chunkRZYOOWZN_js.svgLineCap(element.shapeStyle?.lineCap);
2943
2943
  const hitTargetWidth = Math.max(strokeWidth * 3, 12);
2944
- const offsets = chunk6QGTRYSC_js.getCompoundLineOffsets(compoundLine, strokeWidth);
2945
- const widths = chunk6QGTRYSC_js.getCompoundLineWidths(compoundLine, strokeWidth);
2944
+ const offsets = chunkRZYOOWZN_js.getCompoundLineOffsets(compoundLine, strokeWidth);
2945
+ const widths = chunkRZYOOWZN_js.getCompoundLineWidths(compoundLine, strokeWidth);
2946
2946
  return /* @__PURE__ */ jsxRuntime.jsxs(
2947
2947
  "svg",
2948
2948
  {
@@ -3009,15 +3009,15 @@ function parseGradientFillCss(gradFill) {
3009
3009
  }
3010
3010
  const parsed = stops.map((gs) => {
3011
3011
  const pos = Number.parseInt(String(gs["@_pos"] || "0"), 10) / 1e3;
3012
- const color = chunk6QGTRYSC_js.parseDrawingColor(gs) ?? "#888888";
3013
- const opacity = chunk6QGTRYSC_js.parseDrawingColorOpacity(gs);
3014
- return { pos, color: chunk6QGTRYSC_js.colorWithOpacity(color, opacity) };
3012
+ const color = chunkRZYOOWZN_js.parseDrawingColor(gs) ?? "#888888";
3013
+ const opacity = chunkRZYOOWZN_js.parseDrawingColorOpacity(gs);
3014
+ return { pos, color: chunkRZYOOWZN_js.colorWithOpacity(color, opacity) };
3015
3015
  }).sort((a, b) => a.pos - b.pos);
3016
3016
  const stopStrings = parsed.map((s) => `${s.color} ${s.pos.toFixed(1)}%`).join(", ");
3017
3017
  const lin = gradFill["a:lin"];
3018
3018
  if (lin) {
3019
3019
  const angRaw = Number.parseInt(String(lin["@_ang"] || "0"), 10);
3020
- const angleDeg = Math.round(chunk6QGTRYSC_js.ooxmlGradientAngleToCssDegrees(angRaw / 6e4));
3020
+ const angleDeg = Math.round(chunkRZYOOWZN_js.ooxmlGradientAngleToCssDegrees(angRaw / 6e4));
3021
3021
  return `linear-gradient(${angleDeg}deg, ${stopStrings})`;
3022
3022
  }
3023
3023
  const path = gradFill["a:path"];
@@ -3052,8 +3052,8 @@ function parsePatternFillCss(pattFill) {
3052
3052
  if (!pattFill) {
3053
3053
  return void 0;
3054
3054
  }
3055
- const fgColor = chunk6QGTRYSC_js.parseDrawingColor(pattFill["a:fgClr"]) ?? "#000000";
3056
- const bgColor = chunk6QGTRYSC_js.parseDrawingColor(pattFill["a:bgClr"]) ?? "#ffffff";
3055
+ const fgColor = chunkRZYOOWZN_js.parseDrawingColor(pattFill["a:fgClr"]) ?? "#000000";
3056
+ const bgColor = chunkRZYOOWZN_js.parseDrawingColor(pattFill["a:bgClr"]) ?? "#ffffff";
3057
3057
  const preset = String(pattFill["@_prst"] || "ltDnDiag");
3058
3058
  switch (preset) {
3059
3059
  case "ltHorz":
@@ -3164,11 +3164,11 @@ function parseCellBorders(cellProperties) {
3164
3164
  const prstDash = ln["a:prstDash"];
3165
3165
  const dashVal = prstDash ? String(prstDash["@_val"] || "") : void 0;
3166
3166
  const cssBorderStyle = ooxmlDashToCss(dashVal);
3167
- const color = chunk6QGTRYSC_js.parseDrawingColor(ln["a:solidFill"]);
3167
+ const color = chunkRZYOOWZN_js.parseDrawingColor(ln["a:solidFill"]);
3168
3168
  if (color) {
3169
- const opacity = chunk6QGTRYSC_js.parseDrawingColorOpacity(ln["a:solidFill"]);
3169
+ const opacity = chunkRZYOOWZN_js.parseDrawingColorOpacity(ln["a:solidFill"]);
3170
3170
  const key = `${edge.prefix}`;
3171
- borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${chunk6QGTRYSC_js.colorWithOpacity(color, opacity)}`;
3171
+ borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${chunkRZYOOWZN_js.colorWithOpacity(color, opacity)}`;
3172
3172
  }
3173
3173
  }
3174
3174
  return borderStyle;
@@ -3181,7 +3181,7 @@ function parseCellTextEffects(runProps) {
3181
3181
  const textShadowParts = [];
3182
3182
  const outerShdw = effectLst["a:outerShdw"];
3183
3183
  if (outerShdw) {
3184
- const shdwColor = chunk6QGTRYSC_js.parseDrawingColor(outerShdw);
3184
+ const shdwColor = chunkRZYOOWZN_js.parseDrawingColor(outerShdw);
3185
3185
  if (shdwColor) {
3186
3186
  const blurRad = Number.parseInt(String(outerShdw["@_blurRad"] || "0"), 10);
3187
3187
  const blurPx = blurRad > 0 ? Math.round(blurRad / 12700) : 0;
@@ -3199,7 +3199,7 @@ function parseCellTextEffects(runProps) {
3199
3199
  }
3200
3200
  const glow = effectLst["a:glow"];
3201
3201
  if (glow) {
3202
- const glowColor = chunk6QGTRYSC_js.parseDrawingColor(glow);
3202
+ const glowColor = chunkRZYOOWZN_js.parseDrawingColor(glow);
3203
3203
  if (glowColor) {
3204
3204
  const glowRad = Number.parseInt(String(glow["@_rad"] || "0"), 10);
3205
3205
  const glowPx = glowRad > 0 ? Math.round(glowRad / 12700) : 2;
@@ -3278,10 +3278,10 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
3278
3278
  if (runProps?.["@_u"] !== void 0) {
3279
3279
  cellStyle.textDecorationLine = runProps["@_u"] === "sng" ? "underline" : "none";
3280
3280
  }
3281
- const runColor = chunk6QGTRYSC_js.parseDrawingColor(runProps?.["a:solidFill"], schemeColorOverrides) || chunk6QGTRYSC_js.parseDrawingColor(runProps?.["a:highlight"], schemeColorOverrides);
3281
+ const runColor = chunkRZYOOWZN_js.parseDrawingColor(runProps?.["a:solidFill"], schemeColorOverrides) || chunkRZYOOWZN_js.parseDrawingColor(runProps?.["a:highlight"], schemeColorOverrides);
3282
3282
  if (runColor) {
3283
- const opacity = chunk6QGTRYSC_js.parseDrawingColorOpacity(runProps?.["a:solidFill"]);
3284
- cellStyle.color = chunk6QGTRYSC_js.colorWithOpacity(runColor, opacity);
3283
+ const opacity = chunkRZYOOWZN_js.parseDrawingColorOpacity(runProps?.["a:solidFill"]);
3284
+ cellStyle.color = chunkRZYOOWZN_js.colorWithOpacity(runColor, opacity);
3285
3285
  }
3286
3286
  const fontFamily = runProps?.["a:latin"]?.["@_typeface"] || runProps?.["a:ea"]?.["@_typeface"] || runProps?.["a:cs"]?.["@_typeface"];
3287
3287
  if (fontFamily) {
@@ -3291,15 +3291,15 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
3291
3291
  cellStyle.textAlign = parseParagraphAlignment(paragraphProperties["@_algn"]);
3292
3292
  }
3293
3293
  const cellProperties = cellXml["a:tcPr"];
3294
- const cellFill = chunk6QGTRYSC_js.parseDrawingColor(
3294
+ const cellFill = chunkRZYOOWZN_js.parseDrawingColor(
3295
3295
  cellProperties?.["a:solidFill"],
3296
3296
  schemeColorOverrides
3297
3297
  );
3298
3298
  if (cellFill) {
3299
- const opacity = chunk6QGTRYSC_js.parseDrawingColorOpacity(
3299
+ const opacity = chunkRZYOOWZN_js.parseDrawingColorOpacity(
3300
3300
  cellProperties?.["a:solidFill"]
3301
3301
  );
3302
- cellStyle.backgroundColor = chunk6QGTRYSC_js.colorWithOpacity(cellFill, opacity);
3302
+ cellStyle.backgroundColor = chunkRZYOOWZN_js.colorWithOpacity(cellFill, opacity);
3303
3303
  } else {
3304
3304
  const gradCss = parseGradientFillCss(cellProperties?.["a:gradFill"]);
3305
3305
  if (gradCss) {
@@ -3314,16 +3314,16 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
3314
3314
  const edgeBorders = parseCellBorders(cellProperties);
3315
3315
  Object.assign(cellStyle, edgeBorders);
3316
3316
  if (!cellStyle.borderLeftColor && !cellStyle.borderRightColor && !cellStyle.borderTopColor && !cellStyle.borderBottomColor) {
3317
- const borderColor = chunk6QGTRYSC_js.parseDrawingColor(
3317
+ const borderColor = chunkRZYOOWZN_js.parseDrawingColor(
3318
3318
  cellProperties?.["a:lnL"]?.["a:solidFill"],
3319
3319
  schemeColorOverrides
3320
- ) || chunk6QGTRYSC_js.parseDrawingColor(
3320
+ ) || chunkRZYOOWZN_js.parseDrawingColor(
3321
3321
  cellProperties?.["a:lnR"]?.["a:solidFill"],
3322
3322
  schemeColorOverrides
3323
- ) || chunk6QGTRYSC_js.parseDrawingColor(
3323
+ ) || chunkRZYOOWZN_js.parseDrawingColor(
3324
3324
  cellProperties?.["a:lnT"]?.["a:solidFill"],
3325
3325
  schemeColorOverrides
3326
- ) || chunk6QGTRYSC_js.parseDrawingColor(
3326
+ ) || chunkRZYOOWZN_js.parseDrawingColor(
3327
3327
  cellProperties?.["a:lnB"]?.["a:solidFill"],
3328
3328
  schemeColorOverrides
3329
3329
  );
@@ -3402,10 +3402,10 @@ function resolveTableStyleFillColor(fill, colorScheme) {
3402
3402
  }
3403
3403
  let color = base;
3404
3404
  if (fill.tint !== void 0 && fill.tint > 0) {
3405
- color = chunk6QGTRYSC_js.tintColor2(color, fill.tint / 1e5);
3405
+ color = chunkRZYOOWZN_js.tintColor2(color, fill.tint / 1e5);
3406
3406
  }
3407
3407
  if (fill.shade !== void 0 && fill.shade > 0) {
3408
- color = chunk6QGTRYSC_js.shadeColor2(color, 1 - fill.shade / 1e5);
3408
+ color = chunkRZYOOWZN_js.shadeColor2(color, 1 - fill.shade / 1e5);
3409
3409
  }
3410
3410
  return color;
3411
3411
  }
@@ -3430,7 +3430,7 @@ function applyTableStyleText(text, colorScheme, style, fontScheme) {
3430
3430
  style.fontFamily = text.fontFace;
3431
3431
  applied = true;
3432
3432
  } else {
3433
- const refFont = chunk6QGTRYSC_js.resolveFontRefIdx(text.fontRefIdx, fontScheme);
3433
+ const refFont = chunkRZYOOWZN_js.resolveFontRefIdx(text.fontRefIdx, fontScheme);
3434
3434
  if (refFont) {
3435
3435
  style.fontFamily = refFont;
3436
3436
  applied = true;
@@ -3441,10 +3441,10 @@ function applyTableStyleText(text, colorScheme, style, fontScheme) {
3441
3441
  if (base) {
3442
3442
  let color = base;
3443
3443
  if (text.fontTint !== void 0 && text.fontTint > 0) {
3444
- color = chunk6QGTRYSC_js.tintColor2(color, text.fontTint / 1e5);
3444
+ color = chunkRZYOOWZN_js.tintColor2(color, text.fontTint / 1e5);
3445
3445
  }
3446
3446
  if (text.fontShade !== void 0 && text.fontShade > 0) {
3447
- color = chunk6QGTRYSC_js.shadeColor2(color, 1 - text.fontShade / 1e5);
3447
+ color = chunkRZYOOWZN_js.shadeColor2(color, 1 - text.fontShade / 1e5);
3448
3448
  }
3449
3449
  style.color = color;
3450
3450
  applied = true;
@@ -3533,9 +3533,12 @@ function getTableCellBandStyle(element, rowIndex, cellIndex, rowCount, columnCou
3533
3533
  }
3534
3534
  if (td.firstRowHeader && rowIndex === 0) {
3535
3535
  style.fontWeight = 700;
3536
- const headerBg = resolveFill(styleEntry?.firstRowFill, "rgba(68, 114, 196, 0.85)");
3537
- style.backgroundColor = headerBg;
3538
- style.color = "#ffffff";
3536
+ if (styleEntry?.firstRowFill?.noFill) {
3537
+ style.backgroundColor = "transparent";
3538
+ } else {
3539
+ style.backgroundColor = resolveFill(styleEntry?.firstRowFill, "rgba(68, 114, 196, 0.85)");
3540
+ style.color = "#ffffff";
3541
+ }
3539
3542
  applyTableStyleText(styleEntry?.firstRowText, colorScheme, style, fontScheme);
3540
3543
  applied = true;
3541
3544
  }
@@ -3633,7 +3636,7 @@ function parseTableElementData(element, fallbackTextStyle) {
3633
3636
  };
3634
3637
  }
3635
3638
  function getCellDiagonalBorders2(style, tableData, pos, styleCtx) {
3636
- return chunk6QGTRYSC_js.getCellDiagonalBorders(style, tableData, pos, {
3639
+ return chunkRZYOOWZN_js.getCellDiagonalBorders(style, tableData, pos, {
3637
3640
  tableStyleMap: styleCtx?.tableStyleMap,
3638
3641
  colorScheme: styleCtx?.theme?.colorScheme,
3639
3642
  fontScheme: styleCtx?.theme?.fontScheme
@@ -3781,9 +3784,9 @@ function cellStyleToCss(style) {
3781
3784
  if (style.gradientFillCss) {
3782
3785
  css.background = style.gradientFillCss;
3783
3786
  } else if (style.fillMode === "pattern" && style.patternFillPreset) {
3784
- const fg = chunk6QGTRYSC_js.normalizeHexColor(style.patternFillForeground, "#000000");
3785
- const bg = chunk6QGTRYSC_js.normalizeHexColor(style.patternFillBackground, "#ffffff");
3786
- const svgPattern = chunk6QGTRYSC_js.getPatternSvg(style.patternFillPreset, fg, bg);
3787
+ const fg = chunkRZYOOWZN_js.normalizeHexColor(style.patternFillForeground, "#000000");
3788
+ const bg = chunkRZYOOWZN_js.normalizeHexColor(style.patternFillBackground, "#ffffff");
3789
+ const svgPattern = chunkRZYOOWZN_js.getPatternSvg(style.patternFillPreset, fg, bg);
3787
3790
  if (svgPattern) {
3788
3791
  const encoded = encodeURIComponent(svgPattern);
3789
3792
  css.backgroundImage = `url("data:image/svg+xml,${encoded}")`;
@@ -3859,7 +3862,7 @@ function cellStyleToCss(style) {
3859
3862
  if (edge.width || edge.color) {
3860
3863
  const w = edge.width ?? 1;
3861
3864
  const c = edge.color ?? style.borderColor ?? "#000000";
3862
- const s = chunk6QGTRYSC_js.ooxmlDashToCssBorderStyle(edge.dash);
3865
+ const s = chunkRZYOOWZN_js.ooxmlDashToCssBorderStyle(edge.dash);
3863
3866
  css[edge.prefix] = `${w}px ${s} ${c}`;
3864
3867
  }
3865
3868
  }
@@ -3890,7 +3893,7 @@ function cellStyleToCss(style) {
3890
3893
  css.textShadow = textShadowParts.join(", ");
3891
3894
  }
3892
3895
  if (style.cell3D) {
3893
- Object.assign(css, chunk6QGTRYSC_js.cell3DBevelCss(style.cell3D));
3896
+ Object.assign(css, chunkRZYOOWZN_js.cell3DBevelCss(style.cell3D));
3894
3897
  }
3895
3898
  return css;
3896
3899
  }
@@ -3904,7 +3907,7 @@ function TableResizeOverlay({
3904
3907
  const containerRef = React6.useRef(null);
3905
3908
  const [rowBounds, setRowBounds] = React6.useState([]);
3906
3909
  const dragRef = React6.useRef(null);
3907
- const colBoundaries = React6.useMemo(() => chunk6QGTRYSC_js.computeColumnBoundaries(columnWidths), [columnWidths]);
3910
+ const colBoundaries = React6.useMemo(() => chunkRZYOOWZN_js.computeColumnBoundaries(columnWidths), [columnWidths]);
3908
3911
  const measureRows = React6.useCallback(() => {
3909
3912
  const container = containerRef.current;
3910
3913
  if (!container) {
@@ -3951,11 +3954,11 @@ function TableResizeOverlay({
3951
3954
  const rect = containerRef.current.getBoundingClientRect();
3952
3955
  if (drag.type === "col" && drag.initialWidths && onResizeColumns) {
3953
3956
  const deltaProp = (e.clientX - drag.startPos) / rect.width;
3954
- onResizeColumns(chunk6QGTRYSC_js.computeResizedColumnWidths(drag.initialWidths, drag.index, deltaProp));
3957
+ onResizeColumns(chunkRZYOOWZN_js.computeResizedColumnWidths(drag.initialWidths, drag.index, deltaProp));
3955
3958
  } else if (drag.type === "row" && onResizeRow) {
3956
3959
  const deltaY = e.clientY - drag.startPos;
3957
- const newHeight = chunk6QGTRYSC_js.computeResizedRowHeight(
3958
- drag.initialRowHeight ?? chunk6QGTRYSC_js.DEFAULT_ROW_HEIGHT,
3960
+ const newHeight = chunkRZYOOWZN_js.computeResizedRowHeight(
3961
+ drag.initialRowHeight ?? chunkRZYOOWZN_js.DEFAULT_ROW_HEIGHT,
3959
3962
  deltaY
3960
3963
  );
3961
3964
  onResizeRow(drag.index, newHeight);
@@ -3993,7 +3996,7 @@ function TableResizeOverlay({
3993
3996
  e.stopPropagation();
3994
3997
  const table = containerRef.current?.querySelector("table");
3995
3998
  const tr = table?.querySelectorAll("tbody > tr")[index];
3996
- const actualHeight = tr?.offsetHeight ?? chunk6QGTRYSC_js.DEFAULT_ROW_HEIGHT;
3999
+ const actualHeight = tr?.offsetHeight ?? chunkRZYOOWZN_js.DEFAULT_ROW_HEIGHT;
3997
4000
  document.body.style.cursor = "row-resize";
3998
4001
  document.body.style.userSelect = "none";
3999
4002
  dragRef.current = {
@@ -4041,7 +4044,7 @@ function renderTableFromTableData(element, textStyle, options) {
4041
4044
  }
4042
4045
  const first = selectedCell.selectedCells[0];
4043
4046
  const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
4044
- return chunk6QGTRYSC_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableData);
4047
+ return chunkRZYOOWZN_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableData);
4045
4048
  })();
4046
4049
  return /* @__PURE__ */ jsxRuntime.jsx(
4047
4050
  TableResizeOverlay,
@@ -4061,7 +4064,7 @@ function renderTableFromTableData(element, textStyle, options) {
4061
4064
  "table",
4062
4065
  {
4063
4066
  className: "w-full h-full border-collapse table-fixed",
4064
- style: { fontFamily: chunk6QGTRYSC_js.DEFAULT_FONT_FAMILY },
4067
+ style: { fontFamily: chunkRZYOOWZN_js.DEFAULT_FONT_FAMILY },
4065
4068
  children: [
4066
4069
  tableData.columnWidths.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("colgroup", { children: tableData.columnWidths.map((w, ci) => /* @__PURE__ */ jsxRuntime.jsx(
4067
4070
  "col",
@@ -4079,7 +4082,7 @@ function renderTableFromTableData(element, textStyle, options) {
4079
4082
  return null;
4080
4083
  }
4081
4084
  const isCellSelected = selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex;
4082
- const isInMultiSelection = chunk6QGTRYSC_js.isCellInRect(rowIndex, cellIndex, selectionRect);
4085
+ const isInMultiSelection = chunkRZYOOWZN_js.isCellInRect(rowIndex, cellIndex, selectionRect);
4083
4086
  const isCellEditing = isCellSelected && selectedCell?.isEditing;
4084
4087
  const diag = getCellDiagonalBorders2(
4085
4088
  cell.style,
@@ -4109,7 +4112,7 @@ function renderTableFromTableData(element, textStyle, options) {
4109
4112
  }
4110
4113
  event.stopPropagation();
4111
4114
  if (event.shiftKey && selectedCell) {
4112
- const rect = chunk6QGTRYSC_js.computeSelectionRect(
4115
+ const rect = chunkRZYOOWZN_js.computeSelectionRect(
4113
4116
  selectedCell.rowIndex,
4114
4117
  selectedCell.columnIndex,
4115
4118
  rowIndex,
@@ -4119,7 +4122,7 @@ function renderTableFromTableData(element, textStyle, options) {
4119
4122
  options?.onSelectCell?.({
4120
4123
  rowIndex: selectedCell.rowIndex,
4121
4124
  columnIndex: selectedCell.columnIndex,
4122
- selectedCells: chunk6QGTRYSC_js.rectToCells(rect)
4125
+ selectedCells: chunkRZYOOWZN_js.rectToCells(rect)
4123
4126
  });
4124
4127
  } else {
4125
4128
  options?.onSelectCell?.({
@@ -4198,7 +4201,7 @@ function renderTableElement(element, textStyle, options) {
4198
4201
  }
4199
4202
  const first = selectedCell.selectedCells[0];
4200
4203
  const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
4201
- return chunk6QGTRYSC_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableEl.tableData);
4204
+ return chunkRZYOOWZN_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableEl.tableData);
4202
4205
  })();
4203
4206
  const schemeOverrides = options?.styleCtx?.theme?.colorScheme ? options.styleCtx.theme.colorScheme : void 0;
4204
4207
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -4219,7 +4222,7 @@ function renderTableElement(element, textStyle, options) {
4219
4222
  "table",
4220
4223
  {
4221
4224
  className: "w-full h-full border-collapse table-fixed",
4222
- style: { fontFamily: chunk6QGTRYSC_js.DEFAULT_FONT_FAMILY },
4225
+ style: { fontFamily: chunkRZYOOWZN_js.DEFAULT_FONT_FAMILY },
4223
4226
  children: [
4224
4227
  parsedTable.columnPercentages.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx("colgroup", { children: parsedTable.columnPercentages.map((percentage, columnIndex) => /* @__PURE__ */ jsxRuntime.jsx(
4225
4228
  "col",
@@ -4280,7 +4283,7 @@ function renderTableElement(element, textStyle, options) {
4280
4283
  "border px-1 py-0.5 align-top",
4281
4284
  isEditable && hasCellSelectionHandler ? "border-blue-200/70 cursor-cell" : "border-white/30",
4282
4285
  selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex ? "ring-1 ring-inset ring-blue-500" : null,
4283
- chunk6QGTRYSC_js.isCellInRect(rowIndex, cellIndex, xmlSelectionRect) && !(selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex) ? "bg-blue-500/15 ring-1 ring-inset ring-blue-400/50" : null
4286
+ chunkRZYOOWZN_js.isCellInRect(rowIndex, cellIndex, xmlSelectionRect) && !(selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex) ? "bg-blue-500/15 ring-1 ring-inset ring-blue-400/50" : null
4284
4287
  ),
4285
4288
  colSpan,
4286
4289
  rowSpan: rSpan,
@@ -4291,7 +4294,7 @@ function renderTableElement(element, textStyle, options) {
4291
4294
  }
4292
4295
  event.stopPropagation();
4293
4296
  if (event.shiftKey && selectedCell && tableEl.tableData) {
4294
- const rect = chunk6QGTRYSC_js.computeSelectionRect(
4297
+ const rect = chunkRZYOOWZN_js.computeSelectionRect(
4295
4298
  selectedCell.rowIndex,
4296
4299
  selectedCell.columnIndex,
4297
4300
  rowIndex,
@@ -4301,7 +4304,7 @@ function renderTableElement(element, textStyle, options) {
4301
4304
  options?.onSelectCell?.({
4302
4305
  rowIndex: selectedCell.rowIndex,
4303
4306
  columnIndex: selectedCell.columnIndex,
4304
- selectedCells: chunk6QGTRYSC_js.rectToCells(rect)
4307
+ selectedCells: chunkRZYOOWZN_js.rectToCells(rect)
4305
4308
  });
4306
4309
  } else {
4307
4310
  options?.onSelectCell?.({
@@ -4358,24 +4361,24 @@ function renderTableElement(element, textStyle, options) {
4358
4361
  }
4359
4362
  var LEGEND_ITEM_WIDTH = 80;
4360
4363
  function partAttrs(part) {
4361
- return part ? chunk6QGTRYSC_js.chartPartToAttrs(part) : void 0;
4364
+ return part ? chunkRZYOOWZN_js.chartPartToAttrs(part) : void 0;
4362
4365
  }
4363
4366
  function resolveReactPalette(chartData) {
4364
4367
  if (chartData.colorPalette && chartData.colorPalette.length > 0) {
4365
4368
  return chartData.colorPalette;
4366
4369
  }
4367
- return [...chunk6QGTRYSC_js.getChartStylePalette(chartData.style?.styleId)];
4370
+ return [...chunkRZYOOWZN_js.getChartStylePalette(chartData.style?.styleId)];
4368
4371
  }
4369
4372
  function buildReactChartViewModel(element) {
4370
4373
  if (element.type !== "chart" || !element.chartData) {
4371
- return chunk6QGTRYSC_js.buildChartViewModel(element);
4374
+ return chunkRZYOOWZN_js.buildChartViewModel(element);
4372
4375
  }
4373
4376
  const palette = resolveReactPalette(element.chartData);
4374
4377
  const themedElement = {
4375
4378
  ...element,
4376
4379
  chartData: { ...element.chartData, colorPalette: palette }
4377
4380
  };
4378
- return chunk6QGTRYSC_js.buildChartViewModel(themedElement);
4381
+ return chunkRZYOOWZN_js.buildChartViewModel(themedElement);
4379
4382
  }
4380
4383
  function renderPrimitive(prim, key) {
4381
4384
  switch (prim.kind) {
@@ -4764,7 +4767,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4764
4767
  const unmatchedRows = [];
4765
4768
  categories.forEach((cat, i) => {
4766
4769
  const value = values[i] ?? 0;
4767
- const code = chunk6QGTRYSC_js.resolveRegionCode(cat);
4770
+ const code = chunkRZYOOWZN_js.resolveRegionCode(cat);
4768
4771
  if (code) {
4769
4772
  regionValueMap.set(code, { value, label: cat });
4770
4773
  } else {
@@ -4802,8 +4805,8 @@ function renderMapChart(element, chartData, categoryLabels) {
4802
4805
  let fill = "#e2e8f0";
4803
4806
  let dataLabel = null;
4804
4807
  if (entry) {
4805
- const t = chunk6QGTRYSC_js.normalizeValue(entry.value, minVal, maxVal);
4806
- fill = chunk6QGTRYSC_js.sequentialColorScale(t);
4808
+ const t = chunkRZYOOWZN_js.normalizeValue(entry.value, minVal, maxVal);
4809
+ fill = chunkRZYOOWZN_js.sequentialColorScale(t);
4807
4810
  dataLabel = /* @__PURE__ */ jsxRuntime.jsx(
4808
4811
  "text",
4809
4812
  {
@@ -4814,7 +4817,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4814
4817
  fontWeight: 600,
4815
4818
  fill: "#1e293b",
4816
4819
  style: { pointerEvents: "none" },
4817
- children: chunk6QGTRYSC_js.formatAxisValue(entry.value)
4820
+ children: chunkRZYOOWZN_js.formatAxisValue(entry.value)
4818
4821
  },
4819
4822
  `${element.id}-map-dl-${region.code}`
4820
4823
  );
@@ -4832,7 +4835,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4832
4835
  opacity: 0.9,
4833
4836
  children: /* @__PURE__ */ jsxRuntime.jsxs("title", { children: [
4834
4837
  region.name,
4835
- entry ? `: ${chunk6QGTRYSC_js.formatAxisValue(entry.value)}` : ""
4838
+ entry ? `: ${chunkRZYOOWZN_js.formatAxisValue(entry.value)}` : ""
4836
4839
  ] })
4837
4840
  }
4838
4841
  ),
@@ -4870,7 +4873,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4870
4873
  fontSize: 7,
4871
4874
  fill: "#64748b",
4872
4875
  textAnchor: "middle",
4873
- children: chunk6QGTRYSC_js.formatAxisValue(minVal)
4876
+ children: chunkRZYOOWZN_js.formatAxisValue(minVal)
4874
4877
  },
4875
4878
  `${element.id}-map-legend-min`
4876
4879
  ),
@@ -4882,7 +4885,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4882
4885
  fontSize: 7,
4883
4886
  fill: "#64748b",
4884
4887
  textAnchor: "middle",
4885
- children: chunk6QGTRYSC_js.formatAxisValue(maxVal)
4888
+ children: chunkRZYOOWZN_js.formatAxisValue(maxVal)
4886
4889
  },
4887
4890
  `${element.id}-map-legend-max`
4888
4891
  )
@@ -4948,7 +4951,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4948
4951
  y,
4949
4952
  fontSize,
4950
4953
  fill: "#475569",
4951
- children: chunk6QGTRYSC_js.formatAxisValue(row.value)
4954
+ children: chunkRZYOOWZN_js.formatAxisValue(row.value)
4952
4955
  },
4953
4956
  `${element.id}-map-ft-val-${i}`
4954
4957
  )
@@ -5019,7 +5022,7 @@ function renderStackedBarChart(element, _chartData, _categoryLabels) {
5019
5022
 
5020
5023
  // src/viewer/utils/chart-overlay-utils.ts
5021
5024
  function sColor(series, idx) {
5022
- return chunk6QGTRYSC_js.seriesColor(series, idx);
5025
+ return chunkRZYOOWZN_js.seriesColor(series, idx);
5023
5026
  }
5024
5027
  function valToY(val, range, topY, bottomY) {
5025
5028
  const usable = bottomY - topY;
@@ -5558,7 +5561,7 @@ function renderLegend(id, style, series, layout, colorPalette) {
5558
5561
  width: 10,
5559
5562
  height: 10,
5560
5563
  rx: 2,
5561
- fill: chunk6QGTRYSC_js.seriesColor(s, i, style?.styleId, colorPalette)
5564
+ fill: chunkRZYOOWZN_js.seriesColor(s, i, style?.styleId, colorPalette)
5562
5565
  },
5563
5566
  `${id}-leg-r-${i}`
5564
5567
  )
@@ -5582,7 +5585,7 @@ function renderLegend(id, style, series, layout, colorPalette) {
5582
5585
  width: 10,
5583
5586
  height: 10,
5584
5587
  rx: 2,
5585
- fill: chunk6QGTRYSC_js.seriesColor(s, i, style?.styleId, colorPalette)
5588
+ fill: chunkRZYOOWZN_js.seriesColor(s, i, style?.styleId, colorPalette)
5586
5589
  }
5587
5590
  ),
5588
5591
  /* @__PURE__ */ jsxRuntime.jsx("text", { x: x + 14, y: cy + 8, fontSize: 9, fill: "#475569", children: s.name || `Series ${i + 1}` })
@@ -5595,9 +5598,9 @@ function renderGridlines(id, style, range, layout) {
5595
5598
  }
5596
5599
  const lines = [];
5597
5600
  if (range.logScale && range.logBase) {
5598
- const ticks = chunk6QGTRYSC_js.generateLogTicks(range);
5601
+ const ticks = chunkRZYOOWZN_js.generateLogTicks(range);
5599
5602
  ticks.forEach((tickVal, i) => {
5600
- const y = chunk6QGTRYSC_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
5603
+ const y = chunkRZYOOWZN_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
5601
5604
  lines.push(
5602
5605
  /* @__PURE__ */ jsxRuntime.jsx(
5603
5606
  "line",
@@ -5618,7 +5621,7 @@ function renderGridlines(id, style, range, layout) {
5618
5621
  const steps = 4;
5619
5622
  for (let i = 0; i <= steps; i++) {
5620
5623
  const val = range.min + range.span * i / steps;
5621
- const y = chunk6QGTRYSC_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5624
+ const y = chunkRZYOOWZN_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5622
5625
  lines.push(
5623
5626
  /* @__PURE__ */ jsxRuntime.jsx(
5624
5627
  "line",
@@ -5642,9 +5645,9 @@ function renderValueAxis(id, range, layout, axisFormatting) {
5642
5645
  const labels = [];
5643
5646
  const hasDisplayUnits = Boolean(axisFormatting?.displayUnits);
5644
5647
  if (range.logScale && range.logBase) {
5645
- const ticks = chunk6QGTRYSC_js.generateLogTicks(range);
5648
+ const ticks = chunkRZYOOWZN_js.generateLogTicks(range);
5646
5649
  ticks.forEach((tickVal, i) => {
5647
- const y = chunk6QGTRYSC_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
5650
+ const y = chunkRZYOOWZN_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
5648
5651
  labels.push(
5649
5652
  /* @__PURE__ */ jsxRuntime.jsx(
5650
5653
  "text",
@@ -5654,7 +5657,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
5654
5657
  textAnchor: "end",
5655
5658
  fontSize: 8,
5656
5659
  fill: "#64748b",
5657
- children: hasDisplayUnits ? chunk6QGTRYSC_js.formatAxisValueWithUnits(tickVal, axisFormatting) : chunk6QGTRYSC_js.formatAxisValue(tickVal)
5660
+ children: hasDisplayUnits ? chunkRZYOOWZN_js.formatAxisValueWithUnits(tickVal, axisFormatting) : chunkRZYOOWZN_js.formatAxisValue(tickVal)
5658
5661
  },
5659
5662
  `${id}-vaxis-log-${i}`
5660
5663
  )
@@ -5664,7 +5667,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
5664
5667
  const steps = 4;
5665
5668
  for (let i = 0; i <= steps; i++) {
5666
5669
  const val = range.min + range.span * i / steps;
5667
- const y = chunk6QGTRYSC_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5670
+ const y = chunkRZYOOWZN_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5668
5671
  labels.push(
5669
5672
  /* @__PURE__ */ jsxRuntime.jsx(
5670
5673
  "text",
@@ -5674,7 +5677,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
5674
5677
  textAnchor: "end",
5675
5678
  fontSize: 8,
5676
5679
  fill: "#64748b",
5677
- children: hasDisplayUnits ? chunk6QGTRYSC_js.formatAxisValueWithUnits(val, axisFormatting) : chunk6QGTRYSC_js.formatAxisValue(val)
5680
+ children: hasDisplayUnits ? chunkRZYOOWZN_js.formatAxisValueWithUnits(val, axisFormatting) : chunkRZYOOWZN_js.formatAxisValue(val)
5678
5681
  },
5679
5682
  `${id}-vaxis-${i}`
5680
5683
  )
@@ -5682,7 +5685,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
5682
5685
  }
5683
5686
  }
5684
5687
  if (hasDisplayUnits) {
5685
- const unitLabel = chunk6QGTRYSC_js.getDisplayUnitLabel(
5688
+ const unitLabel = chunkRZYOOWZN_js.getDisplayUnitLabel(
5686
5689
  axisFormatting.displayUnits,
5687
5690
  axisFormatting.displayUnitsLabel
5688
5691
  );
@@ -5757,7 +5760,7 @@ function renderZeroLine(id, range, layout) {
5757
5760
  if (range.min >= 0) {
5758
5761
  return null;
5759
5762
  }
5760
- const y = chunk6QGTRYSC_js.valueToY(0, range, layout.plotTop, layout.plotBottom);
5763
+ const y = chunkRZYOOWZN_js.valueToY(0, range, layout.plotTop, layout.plotBottom);
5761
5764
  return /* @__PURE__ */ jsxRuntime.jsx(
5762
5765
  "line",
5763
5766
  {
@@ -5781,7 +5784,7 @@ function renderSecondaryValueAxis(id, range, layout, axisFormatting) {
5781
5784
  const hasDisplayUnits = Boolean(axisFormatting?.displayUnits);
5782
5785
  for (let i = 0; i <= steps; i++) {
5783
5786
  const val = range.min + range.span * i / steps;
5784
- const y = chunk6QGTRYSC_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5787
+ const y = chunkRZYOOWZN_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5785
5788
  labels.push(
5786
5789
  /* @__PURE__ */ jsxRuntime.jsx(
5787
5790
  "text",
@@ -5793,7 +5796,7 @@ function renderSecondaryValueAxis(id, range, layout, axisFormatting) {
5793
5796
  fontFamily,
5794
5797
  fontWeight,
5795
5798
  fill: fontColor,
5796
- children: hasDisplayUnits ? chunk6QGTRYSC_js.formatAxisValueWithUnits(val, axisFormatting) : chunk6QGTRYSC_js.formatAxisValue(val)
5799
+ children: hasDisplayUnits ? chunkRZYOOWZN_js.formatAxisValueWithUnits(val, axisFormatting) : chunkRZYOOWZN_js.formatAxisValue(val)
5797
5800
  },
5798
5801
  `${id}-sec-vaxis-${i}`
5799
5802
  )
@@ -5817,7 +5820,7 @@ function renderSecondaryValueAxis(id, range, layout, axisFormatting) {
5817
5820
  );
5818
5821
  }
5819
5822
  if (hasDisplayUnits) {
5820
- const unitLabel = chunk6QGTRYSC_js.getDisplayUnitLabel(
5823
+ const unitLabel = chunkRZYOOWZN_js.getDisplayUnitLabel(
5821
5824
  axisFormatting.displayUnits,
5822
5825
  axisFormatting.displayUnitsLabel
5823
5826
  );
@@ -5848,7 +5851,7 @@ function renderSecondaryAxisTicks(id, range, layout) {
5848
5851
  const ticks = [];
5849
5852
  for (let i = 0; i <= steps; i++) {
5850
5853
  const val = range.min + range.span * i / steps;
5851
- const y = chunk6QGTRYSC_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5854
+ const y = chunkRZYOOWZN_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5852
5855
  ticks.push(
5853
5856
  /* @__PURE__ */ jsxRuntime.jsx(
5854
5857
  "line",
@@ -5875,7 +5878,7 @@ function renderSecondaryGridlines(id, range, layout, axisFormatting) {
5875
5878
  const gridColor = axisFormatting.majorGridlinesSpPr?.strokeColor ?? "#e2e8f0";
5876
5879
  for (let i = 0; i <= steps; i++) {
5877
5880
  const val = range.min + range.span * i / steps;
5878
- const y = chunk6QGTRYSC_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5881
+ const y = chunkRZYOOWZN_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5879
5882
  lines.push(
5880
5883
  /* @__PURE__ */ jsxRuntime.jsx(
5881
5884
  "line",
@@ -6037,7 +6040,7 @@ function renderChartDataTable(elementId, chartData, svgWidth) {
6037
6040
  width: 8,
6038
6041
  height: 8,
6039
6042
  borderRadius: 2,
6040
- backgroundColor: chunk6QGTRYSC_js.seriesColor(
6043
+ backgroundColor: chunkRZYOOWZN_js.seriesColor(
6041
6044
  s,
6042
6045
  si,
6043
6046
  chartData.style?.styleId,
@@ -6075,10 +6078,10 @@ function renderChartDataTable(elementId, chartData, svgWidth) {
6075
6078
  }
6076
6079
  function renderStockChart(element, chartData, categoryLabels) {
6077
6080
  const style = chartData.style;
6078
- const areaFill = chunk6QGTRYSC_js.chartAreaFill(chartData);
6081
+ const areaFill = chunkRZYOOWZN_js.chartAreaFill(chartData);
6079
6082
  const legendPos = style?.legendPosition || "b";
6080
- const range = chunk6QGTRYSC_js.computeValueRangeForChart(chartData.series, chartData.axes);
6081
- const layout = chunk6QGTRYSC_js.computeLayout(element.width, element.height, style, true, legendPos);
6083
+ const range = chunkRZYOOWZN_js.computeValueRangeForChart(chartData.series, chartData.axes);
6084
+ const layout = chunkRZYOOWZN_js.computeLayout(element.width, element.height, style, true, legendPos);
6082
6085
  const catCount = Math.max(categoryLabels.length, 1);
6083
6086
  const barGroupWidth = layout.plotWidth / catCount;
6084
6087
  const candleWidth = barGroupWidth * 0.5;
@@ -6099,10 +6102,10 @@ function renderStockChart(element, chartData, categoryLabels) {
6099
6102
  const close = closeSeries.values[ci] ?? high;
6100
6103
  const isUp = close >= open;
6101
6104
  const cx = layout.plotLeft + barGroupWidth * ci + barGroupWidth / 2;
6102
- const highY = chunk6QGTRYSC_js.valueToY(high, range, layout.plotTop, layout.plotBottom);
6103
- const lowY = chunk6QGTRYSC_js.valueToY(low, range, layout.plotTop, layout.plotBottom);
6104
- const openY = chunk6QGTRYSC_js.valueToY(open, range, layout.plotTop, layout.plotBottom);
6105
- const closeY = chunk6QGTRYSC_js.valueToY(close, range, layout.plotTop, layout.plotBottom);
6105
+ const highY = chunkRZYOOWZN_js.valueToY(high, range, layout.plotTop, layout.plotBottom);
6106
+ const lowY = chunkRZYOOWZN_js.valueToY(low, range, layout.plotTop, layout.plotBottom);
6107
+ const openY = chunkRZYOOWZN_js.valueToY(open, range, layout.plotTop, layout.plotBottom);
6108
+ const closeY = chunkRZYOOWZN_js.valueToY(close, range, layout.plotTop, layout.plotBottom);
6106
6109
  elements.push(
6107
6110
  /* @__PURE__ */ jsxRuntime.jsx(
6108
6111
  "line",
@@ -6145,7 +6148,7 @@ function renderStockChart(element, chartData, categoryLabels) {
6145
6148
  textAnchor: "middle",
6146
6149
  fontSize: 7,
6147
6150
  fill: "#334155",
6148
- children: chunk6QGTRYSC_js.formatAxisValue(close)
6151
+ children: chunkRZYOOWZN_js.formatAxisValue(close)
6149
6152
  },
6150
6153
  `${element.id}-stock-dl-${ci}`
6151
6154
  )
@@ -6187,7 +6190,7 @@ function FailedToLoad() {
6187
6190
  var LazySurfaceChart3DScene = React6__default.default.lazy(
6188
6191
  async () => {
6189
6192
  try {
6190
- return await import('./SurfaceChart3DScene-AE5SKG7U.js');
6193
+ return await import('./SurfaceChart3DScene-GRM24VBC.js');
6191
6194
  } catch {
6192
6195
  return { default: FailedToLoad };
6193
6196
  }
@@ -6211,7 +6214,7 @@ var SurfaceChart3DErrorBoundary = class extends React6__default.default.Componen
6211
6214
  function buildSurfaceData(chartData, categoryLabels) {
6212
6215
  const rows = chartData.series.length;
6213
6216
  const cols = Math.max(categoryLabels.length, 1);
6214
- const range = chunk6QGTRYSC_js.computeValueRangeForChart(chartData.series, chartData.axes);
6217
+ const range = chunkRZYOOWZN_js.computeValueRangeForChart(chartData.series, chartData.axes);
6215
6218
  const heightMap = new Float32Array(rows * cols);
6216
6219
  const colorMap = new Float32Array(rows * cols * 3);
6217
6220
  for (let r = 0; r < rows; r++) {
@@ -6330,10 +6333,10 @@ function darkenRgb(r, g, b, factor) {
6330
6333
  }
6331
6334
  function renderIsometricSurfaceChart(element, chartData, categoryLabels) {
6332
6335
  const style = chartData.style;
6333
- const areaFill = chunk6QGTRYSC_js.chartAreaFill(chartData);
6336
+ const areaFill = chunkRZYOOWZN_js.chartAreaFill(chartData);
6334
6337
  const legendPos = style?.legendPosition || "b";
6335
- const layout = chunk6QGTRYSC_js.computeLayout(element.width, element.height, style, false, legendPos);
6336
- const range = chunk6QGTRYSC_js.computeValueRangeForChart(chartData.series, chartData.axes);
6338
+ const layout = chunkRZYOOWZN_js.computeLayout(element.width, element.height, style, false, legendPos);
6339
+ const range = chunkRZYOOWZN_js.computeValueRangeForChart(chartData.series, chartData.axes);
6337
6340
  const catCount = Math.max(categoryLabels.length, 1);
6338
6341
  const seriesCount = chartData.series.length;
6339
6342
  const cols = catCount - 1;
@@ -6422,10 +6425,10 @@ function renderIsometricSurfaceChart(element, chartData, categoryLabels) {
6422
6425
  }
6423
6426
  function renderFlatSurfaceChart(element, chartData, categoryLabels) {
6424
6427
  const style = chartData.style;
6425
- const areaFill = chunk6QGTRYSC_js.chartAreaFill(chartData);
6428
+ const areaFill = chunkRZYOOWZN_js.chartAreaFill(chartData);
6426
6429
  const legendPos = style?.legendPosition || "b";
6427
- const layout = chunk6QGTRYSC_js.computeLayout(element.width, element.height, style, true, legendPos);
6428
- const range = chunk6QGTRYSC_js.computeValueRangeForChart(chartData.series, chartData.axes);
6430
+ const layout = chunkRZYOOWZN_js.computeLayout(element.width, element.height, style, true, legendPos);
6431
+ const range = chunkRZYOOWZN_js.computeValueRangeForChart(chartData.series, chartData.axes);
6429
6432
  const catCount = Math.max(categoryLabels.length, 1);
6430
6433
  const seriesCount = chartData.series.length;
6431
6434
  const cellW = layout.plotWidth / Math.max(catCount - 1, 1);
@@ -6487,9 +6490,9 @@ function renderSurfaceChart(element, chartData, categoryLabels) {
6487
6490
  }
6488
6491
  function renderTreemapChart(element, chartData, categoryLabels) {
6489
6492
  const style = chartData.style;
6490
- const areaFill = chunk6QGTRYSC_js.chartAreaFill(chartData);
6493
+ const areaFill = chunkRZYOOWZN_js.chartAreaFill(chartData);
6491
6494
  const legendPos = style?.legendPosition || "b";
6492
- const layout = chunk6QGTRYSC_js.computeLayout(element.width, element.height, style, false, legendPos);
6495
+ const layout = chunkRZYOOWZN_js.computeLayout(element.width, element.height, style, false, legendPos);
6493
6496
  const allValues = chartData.series.flatMap((s) => s.values);
6494
6497
  const totalAbs = allValues.reduce((sum, v) => sum + Math.abs(v), 0) || 1;
6495
6498
  const rects = [];
@@ -6512,7 +6515,7 @@ function renderTreemapChart(element, chartData, categoryLabels) {
6512
6515
  y: curY,
6513
6516
  width: Math.max(w - 1, 1),
6514
6517
  height: Math.max(h - 1, 1),
6515
- fill: chunk6QGTRYSC_js.paletteColor(item.index, chartData.style?.styleId, chartData.colorPalette),
6518
+ fill: chunkRZYOOWZN_js.paletteColor(item.index, chartData.style?.styleId, chartData.colorPalette),
6516
6519
  rx: 2,
6517
6520
  opacity: 0.85
6518
6521
  },
@@ -6563,11 +6566,11 @@ function renderTreemapChart(element, chartData, categoryLabels) {
6563
6566
  }
6564
6567
  function renderWaterfallChart(element, chartData, categoryLabels) {
6565
6568
  const style = chartData.style;
6566
- const areaFill = chunk6QGTRYSC_js.chartAreaFill(chartData);
6569
+ const areaFill = chunkRZYOOWZN_js.chartAreaFill(chartData);
6567
6570
  const legendPos = style?.legendPosition || "b";
6568
6571
  const values = chartData.series[0]?.values ?? [];
6569
- const range = chunk6QGTRYSC_js.computeValueRangeForChart(chartData.series, chartData.axes);
6570
- const layout = chunk6QGTRYSC_js.computeLayout(element.width, element.height, style, true, legendPos);
6572
+ const range = chunkRZYOOWZN_js.computeValueRangeForChart(chartData.series, chartData.axes);
6573
+ const layout = chunkRZYOOWZN_js.computeLayout(element.width, element.height, style, true, legendPos);
6571
6574
  const catCount = Math.max(categoryLabels.length, values.length, 1);
6572
6575
  const barWidth = layout.plotWidth / catCount * 0.6;
6573
6576
  const gap = layout.plotWidth / catCount * 0.2;
@@ -6578,8 +6581,8 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
6578
6581
  const isLast = i === values.length - 1;
6579
6582
  const startVal = isLast ? 0 : runningTotal;
6580
6583
  const endVal = isLast ? runningTotal + val : runningTotal + val;
6581
- const barStartY = chunk6QGTRYSC_js.valueToY(startVal, range, layout.plotTop, layout.plotBottom);
6582
- const barEndY = chunk6QGTRYSC_js.valueToY(endVal, range, layout.plotTop, layout.plotBottom);
6584
+ const barStartY = chunkRZYOOWZN_js.valueToY(startVal, range, layout.plotTop, layout.plotBottom);
6585
+ const barEndY = chunkRZYOOWZN_js.valueToY(endVal, range, layout.plotTop, layout.plotBottom);
6583
6586
  const x = layout.plotLeft + layout.plotWidth / catCount * i + gap;
6584
6587
  const y = Math.min(barStartY, barEndY);
6585
6588
  const h = Math.max(Math.abs(barEndY - barStartY), 1);
@@ -6608,7 +6611,7 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
6608
6611
  textAnchor: "middle",
6609
6612
  fontSize: 7,
6610
6613
  fill: "#334155",
6611
- children: chunk6QGTRYSC_js.formatAxisValue(isLast ? endVal : val)
6614
+ children: chunkRZYOOWZN_js.formatAxisValue(isLast ? endVal : val)
6612
6615
  },
6613
6616
  `${element.id}-wf-dl-${i}`
6614
6617
  )
@@ -6655,20 +6658,20 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
6655
6658
  }
6656
6659
  function renderComboChart(element, chartData, categoryLabels) {
6657
6660
  const style = chartData.style;
6658
- const areaFill = chunk6QGTRYSC_js.chartAreaFill(chartData);
6661
+ const areaFill = chunkRZYOOWZN_js.chartAreaFill(chartData);
6659
6662
  const legendPos = style?.legendPosition || "b";
6660
- const layoutOpts = chunk6QGTRYSC_js.computeLayoutOptions(
6663
+ const layoutOpts = chunkRZYOOWZN_js.computeLayoutOptions(
6661
6664
  chartData.axes,
6662
6665
  chartData.dataTable,
6663
6666
  chartData.series.length
6664
6667
  );
6665
- const layout = chunk6QGTRYSC_js.computeLayout(element.width, element.height, style, true, legendPos, layoutOpts);
6666
- const { primary, secondary } = chunk6QGTRYSC_js.splitSeriesByAxis(chartData.series, chartData.axes);
6668
+ const layout = chunkRZYOOWZN_js.computeLayout(element.width, element.height, style, true, legendPos, layoutOpts);
6669
+ const { primary, secondary } = chunkRZYOOWZN_js.splitSeriesByAxis(chartData.series, chartData.axes);
6667
6670
  const primarySeries = primary.length > 0 ? primary.map((e) => e.series) : chartData.series;
6668
6671
  const secondarySeries = secondary.map((e) => e.series);
6669
- const range = chunk6QGTRYSC_js.computeValueRangeForChart(primarySeries, chartData.axes);
6670
- const secondaryRange = secondarySeries.length > 0 ? chunk6QGTRYSC_js.computeValueRange(secondarySeries) : void 0;
6671
- const secondaryAxisFmt = chunk6QGTRYSC_js.getSecondaryValueAxis(chartData.axes);
6672
+ const range = chunkRZYOOWZN_js.computeValueRangeForChart(primarySeries, chartData.axes);
6673
+ const secondaryRange = secondarySeries.length > 0 ? chunkRZYOOWZN_js.computeValueRange(secondarySeries) : void 0;
6674
+ const secondaryAxisFmt = chunkRZYOOWZN_js.getSecondaryValueAxis(chartData.axes);
6672
6675
  const catCount = Math.max(categoryLabels.length, 1);
6673
6676
  const barSeriesCount = 1;
6674
6677
  const barGroupWidth = layout.plotWidth / catCount;
@@ -6684,8 +6687,8 @@ function renderComboChart(element, chartData, categoryLabels) {
6684
6687
  const barRange = isBarSecondary && secondaryRange ? secondaryRange : range;
6685
6688
  barSeries.values.forEach((val, vi) => {
6686
6689
  const x = layout.plotLeft + barGroupWidth * vi + barOffset;
6687
- const zeroY = chunk6QGTRYSC_js.valueToY(0, barRange, layout.plotTop, layout.plotBottom);
6688
- const valY = chunk6QGTRYSC_js.valueToY(val, barRange, layout.plotTop, layout.plotBottom);
6690
+ const zeroY = chunkRZYOOWZN_js.valueToY(0, barRange, layout.plotTop, layout.plotBottom);
6691
+ const valY = chunkRZYOOWZN_js.valueToY(val, barRange, layout.plotTop, layout.plotBottom);
6689
6692
  const y = Math.min(zeroY, valY);
6690
6693
  const h = Math.max(Math.abs(zeroY - valY), 1);
6691
6694
  barElements.push(
@@ -6696,7 +6699,7 @@ function renderComboChart(element, chartData, categoryLabels) {
6696
6699
  y,
6697
6700
  width: barWidth,
6698
6701
  height: h,
6699
- fill: chunk6QGTRYSC_js.seriesColor(barSeries, 0, chartData.style?.styleId, chartData.colorPalette),
6702
+ fill: chunkRZYOOWZN_js.seriesColor(barSeries, 0, chartData.style?.styleId, chartData.colorPalette),
6700
6703
  rx: 1
6701
6704
  },
6702
6705
  `${element.id}-combo-bar-${vi}`
@@ -6712,7 +6715,7 @@ function renderComboChart(element, chartData, categoryLabels) {
6712
6715
  textAnchor: "middle",
6713
6716
  fontSize: 7,
6714
6717
  fill: "#334155",
6715
- children: chunk6QGTRYSC_js.formatAxisValue(val)
6718
+ children: chunkRZYOOWZN_js.formatAxisValue(val)
6716
6719
  },
6717
6720
  `${element.id}-combo-bar-dl-${vi}`
6718
6721
  )
@@ -6729,10 +6732,10 @@ function renderComboChart(element, chartData, categoryLabels) {
6729
6732
  const activeRange = isSecondary && secondaryRange ? secondaryRange : range;
6730
6733
  const points = series.values.map((val, vi) => {
6731
6734
  const x = layout.plotLeft + barGroupWidth * vi + barGroupWidth / 2;
6732
- const y = chunk6QGTRYSC_js.valueToY(val, activeRange, layout.plotTop, layout.plotBottom);
6735
+ const y = chunkRZYOOWZN_js.valueToY(val, activeRange, layout.plotTop, layout.plotBottom);
6733
6736
  return { x, y, val };
6734
6737
  });
6735
- const c = chunk6QGTRYSC_js.seriesColor(series, seriesIdx, chartData.style?.styleId, chartData.colorPalette);
6738
+ const c = chunkRZYOOWZN_js.seriesColor(series, seriesIdx, chartData.style?.styleId, chartData.colorPalette);
6736
6739
  lineElements.push(
6737
6740
  /* @__PURE__ */ jsxRuntime.jsx(
6738
6741
  "polyline",
@@ -6759,7 +6762,7 @@ function renderComboChart(element, chartData, categoryLabels) {
6759
6762
  textAnchor: "middle",
6760
6763
  fontSize: 7,
6761
6764
  fill: "#334155",
6762
- children: chunk6QGTRYSC_js.formatAxisValue(p.val)
6765
+ children: chunkRZYOOWZN_js.formatAxisValue(p.val)
6763
6766
  },
6764
6767
  `${element.id}-combo-line-dl-${si}-${vi}`
6765
6768
  )
@@ -6998,6 +7001,7 @@ function layoutToCategory(layout) {
6998
7001
  };
6999
7002
  return map[layout] ?? "list";
7000
7003
  }
7004
+ var LABEL_WIDTH_FRACTION = 0.82;
7001
7005
  function smartArtNodeGroupProps(nodeId, shadow, label2) {
7002
7006
  const props = {
7003
7007
  "data-smartart-node-id": nodeId,
@@ -7048,9 +7052,12 @@ function SmartArtNodeText({
7048
7052
  fontWeight,
7049
7053
  fontStyle,
7050
7054
  className,
7051
- anchor = "middle"
7055
+ anchor = "middle",
7056
+ maxWidth
7052
7057
  }) {
7053
- const lines = text.split("\n").filter((l) => l.length > 0);
7058
+ const lines = maxWidth !== void 0 ? chunkRZYOOWZN_js.centeredSvgTextLines(text, fontSize, { maxWidth: maxWidth * LABEL_WIDTH_FRACTION }).map(
7059
+ (line) => line.text
7060
+ ) : text.split("\n").filter((l) => l.length > 0);
7054
7061
  const lineHeight = fontSize * 1.2;
7055
7062
  let startY;
7056
7063
  let dominantBaseline;
@@ -7905,14 +7912,14 @@ function buildNotesPdf(pages) {
7905
7912
  notes: page.notes,
7906
7913
  slideNumber: page.slideNumber
7907
7914
  }));
7908
- const bytes = chunk6QGTRYSC_js.buildNotesPdfBytes(images, meta);
7915
+ const bytes = chunkRZYOOWZN_js.buildNotesPdfBytes(images, meta);
7909
7916
  const blob = new Blob([bytes], { type: "application/pdf" });
7910
7917
  return URL.createObjectURL(blob);
7911
7918
  }
7912
7919
 
7913
7920
  // src/viewer/utils/pdf-builder-slides.ts
7914
7921
  function buildPdfFromImageData(images) {
7915
- const bytes = chunk6QGTRYSC_js.buildSlidesPdfBytes(images);
7922
+ const bytes = chunkRZYOOWZN_js.buildSlidesPdfBytes(images);
7916
7923
  const blob = new Blob([bytes], { type: "application/pdf" });
7917
7924
  return URL.createObjectURL(blob);
7918
7925
  }
@@ -7921,7 +7928,7 @@ function buildPdfFromImageData(images) {
7921
7928
  var activePreview = null;
7922
7929
  function startPreviewAnimation(elementId, preset, options) {
7923
7930
  stopPreviewAnimation();
7924
- const descriptor = chunk6QGTRYSC_js.buildPreviewAnimation(preset, options);
7931
+ const descriptor = chunkRZYOOWZN_js.buildPreviewAnimation(preset, options);
7925
7932
  if (!descriptor) {
7926
7933
  return;
7927
7934
  }
@@ -7934,7 +7941,7 @@ function startMotionPathPreview(elementId, path, options) {
7934
7941
  return;
7935
7942
  }
7936
7943
  const stage = domEl.offsetParent;
7937
- const descriptor = chunk6QGTRYSC_js.buildMotionPathPreview({
7944
+ const descriptor = chunkRZYOOWZN_js.buildMotionPathPreview({
7938
7945
  path,
7939
7946
  slideWidth: stage?.offsetWidth || DEFAULT_PREVIEW_SLIDE_WIDTH,
7940
7947
  slideHeight: stage?.offsetHeight || DEFAULT_PREVIEW_SLIDE_HEIGHT,