pptx-react-viewer 2.2.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/{AiChatPanel-S3FWARWG.js → AiChatPanel-HC3CE3TL.js} +23 -23
  3. package/dist/AiChatPanel-HC3CE3TL.js.br +0 -0
  4. package/dist/AiChatPanel-HC3CE3TL.js.gz +0 -0
  5. package/dist/{AiChatPanel-JFCJCR3O.mjs → AiChatPanel-PXZYHJUB.mjs} +4 -4
  6. package/dist/AiChatPanel-PXZYHJUB.mjs.br +0 -0
  7. package/dist/AiChatPanel-PXZYHJUB.mjs.gz +0 -0
  8. package/dist/{Model3DScene-BZK4UHL4.js → Model3DScene-37QZRHV5.js} +3 -3
  9. package/dist/Model3DScene-37QZRHV5.js.br +0 -0
  10. package/dist/Model3DScene-37QZRHV5.js.gz +0 -0
  11. package/dist/{Model3DScene-RCZCBW52.mjs → Model3DScene-ZG4HTMPX.mjs} +2 -2
  12. package/dist/Model3DScene-ZG4HTMPX.mjs.br +0 -0
  13. package/dist/Model3DScene-ZG4HTMPX.mjs.gz +0 -0
  14. package/dist/{SurfaceChart3DScene-EGPAMPX4.js → SurfaceChart3DScene-QIREQ66D.js} +3 -3
  15. package/dist/SurfaceChart3DScene-QIREQ66D.js.br +0 -0
  16. package/dist/SurfaceChart3DScene-QIREQ66D.js.gz +0 -0
  17. package/dist/{SurfaceChart3DScene-IRLH4ADG.mjs → SurfaceChart3DScene-Z7R6DZXN.mjs} +2 -2
  18. package/dist/{SurfaceChart3DScene-IRLH4ADG.mjs.br → SurfaceChart3DScene-Z7R6DZXN.mjs.br} +0 -0
  19. package/dist/SurfaceChart3DScene-Z7R6DZXN.mjs.gz +0 -0
  20. package/dist/{chunk-CLNGAVNH.js → chunk-3TB45PVK.js} +69 -111
  21. package/dist/chunk-3TB45PVK.js.br +0 -0
  22. package/dist/chunk-3TB45PVK.js.gz +0 -0
  23. package/dist/{chunk-RLK72AOU.mjs → chunk-4AAFZFGH.mjs} +36 -7
  24. package/dist/chunk-4AAFZFGH.mjs.br +0 -0
  25. package/dist/chunk-4AAFZFGH.mjs.gz +0 -0
  26. package/dist/{chunk-SYPHGLIB.js → chunk-EUIFPDXZ.js} +3 -3
  27. package/dist/chunk-EUIFPDXZ.js.br +0 -0
  28. package/dist/chunk-EUIFPDXZ.js.gz +0 -0
  29. package/dist/{chunk-L4ETDT4F.mjs → chunk-I5LEMC5C.mjs} +4 -4
  30. package/dist/chunk-I5LEMC5C.mjs.br +0 -0
  31. package/dist/chunk-I5LEMC5C.mjs.gz +0 -0
  32. package/dist/{chunk-6BUR4MJO.mjs → chunk-J5A22DZ7.mjs} +63 -38
  33. package/dist/chunk-J5A22DZ7.mjs.br +0 -0
  34. package/dist/chunk-J5A22DZ7.mjs.gz +0 -0
  35. package/dist/{chunk-6YXLGMTN.mjs → chunk-JFNMD6TM.mjs} +68 -112
  36. package/dist/chunk-JFNMD6TM.mjs.br +0 -0
  37. package/dist/chunk-JFNMD6TM.mjs.gz +0 -0
  38. package/dist/{chunk-UTTXH3GH.js → chunk-KDW3LLG5.js} +77 -47
  39. package/dist/chunk-KDW3LLG5.js.br +0 -0
  40. package/dist/chunk-KDW3LLG5.js.gz +0 -0
  41. package/dist/{chunk-JPJBOVU7.js → chunk-L7JNCVTF.js} +309 -309
  42. package/dist/chunk-L7JNCVTF.js.br +0 -0
  43. package/dist/chunk-L7JNCVTF.js.gz +0 -0
  44. package/dist/{chunk-BHVCED34.mjs → chunk-M5YR3QSB.mjs} +1 -1
  45. package/dist/chunk-M5YR3QSB.mjs.br +0 -0
  46. package/dist/chunk-M5YR3QSB.mjs.gz +0 -0
  47. package/dist/{chunk-RNZJKGA7.js → chunk-P7UVBRFO.js} +257 -241
  48. package/dist/chunk-P7UVBRFO.js.br +0 -0
  49. package/dist/chunk-P7UVBRFO.js.gz +0 -0
  50. package/dist/{chunk-SOHIKHL4.mjs → chunk-VOHTAUN4.mjs} +23 -7
  51. package/dist/chunk-VOHTAUN4.mjs.br +0 -0
  52. package/dist/chunk-VOHTAUN4.mjs.gz +0 -0
  53. package/dist/{chunk-3KD6S6VM.js → chunk-ZLSVW5GP.js} +898 -873
  54. package/dist/chunk-ZLSVW5GP.js.br +0 -0
  55. package/dist/chunk-ZLSVW5GP.js.gz +0 -0
  56. package/dist/{dist-4LUVI3SW.js → dist-FTEVZZPM.js} +576 -568
  57. package/dist/dist-FTEVZZPM.js.br +0 -0
  58. package/dist/dist-FTEVZZPM.js.gz +0 -0
  59. package/dist/{dist-J6PC54PZ.mjs → dist-L7GZVBMG.mjs} +1 -1
  60. package/dist/dist-L7GZVBMG.mjs.br +0 -0
  61. package/dist/dist-L7GZVBMG.mjs.gz +0 -0
  62. package/dist/index.d.ts +13 -0
  63. package/dist/index.js +35 -35
  64. package/dist/index.js.br +0 -0
  65. package/dist/index.js.gz +0 -0
  66. package/dist/index.mjs +6 -6
  67. package/dist/index.mjs.br +0 -0
  68. package/dist/index.mjs.gz +0 -0
  69. package/dist/internals.d.ts +13 -0
  70. package/dist/internals.js +79 -79
  71. package/dist/internals.js.br +0 -0
  72. package/dist/internals.js.gz +0 -0
  73. package/dist/internals.mjs +4 -4
  74. package/dist/internals.mjs.br +0 -0
  75. package/dist/internals.mjs.gz +0 -0
  76. package/dist/viewer/index.d.ts +13 -0
  77. package/dist/viewer/index.js +22 -22
  78. package/dist/viewer/index.js.br +0 -0
  79. package/dist/viewer/index.js.gz +0 -0
  80. package/dist/viewer/index.mjs +6 -6
  81. package/dist/viewer/index.mjs.br +0 -0
  82. package/dist/viewer/index.mjs.gz +0 -0
  83. package/package.json +1 -1
  84. package/dist/AiChatPanel-JFCJCR3O.mjs.br +0 -0
  85. package/dist/AiChatPanel-JFCJCR3O.mjs.gz +0 -0
  86. package/dist/AiChatPanel-S3FWARWG.js.br +0 -0
  87. package/dist/AiChatPanel-S3FWARWG.js.gz +0 -0
  88. package/dist/Model3DScene-BZK4UHL4.js.br +0 -0
  89. package/dist/Model3DScene-BZK4UHL4.js.gz +0 -0
  90. package/dist/Model3DScene-RCZCBW52.mjs.br +0 -0
  91. package/dist/Model3DScene-RCZCBW52.mjs.gz +0 -0
  92. package/dist/SurfaceChart3DScene-EGPAMPX4.js.br +0 -0
  93. package/dist/SurfaceChart3DScene-EGPAMPX4.js.gz +0 -0
  94. package/dist/SurfaceChart3DScene-IRLH4ADG.mjs.gz +0 -0
  95. package/dist/chunk-3KD6S6VM.js.br +0 -0
  96. package/dist/chunk-3KD6S6VM.js.gz +0 -0
  97. package/dist/chunk-6BUR4MJO.mjs.br +0 -0
  98. package/dist/chunk-6BUR4MJO.mjs.gz +0 -0
  99. package/dist/chunk-6YXLGMTN.mjs.br +0 -0
  100. package/dist/chunk-6YXLGMTN.mjs.gz +0 -0
  101. package/dist/chunk-BHVCED34.mjs.br +0 -0
  102. package/dist/chunk-BHVCED34.mjs.gz +0 -0
  103. package/dist/chunk-CLNGAVNH.js.br +0 -0
  104. package/dist/chunk-CLNGAVNH.js.gz +0 -0
  105. package/dist/chunk-JPJBOVU7.js.br +0 -0
  106. package/dist/chunk-JPJBOVU7.js.gz +0 -0
  107. package/dist/chunk-L4ETDT4F.mjs.br +0 -0
  108. package/dist/chunk-L4ETDT4F.mjs.gz +0 -0
  109. package/dist/chunk-RLK72AOU.mjs.br +0 -0
  110. package/dist/chunk-RLK72AOU.mjs.gz +0 -0
  111. package/dist/chunk-RNZJKGA7.js.br +0 -0
  112. package/dist/chunk-RNZJKGA7.js.gz +0 -0
  113. package/dist/chunk-SOHIKHL4.mjs.br +0 -0
  114. package/dist/chunk-SOHIKHL4.mjs.gz +0 -0
  115. package/dist/chunk-SYPHGLIB.js.br +0 -0
  116. package/dist/chunk-SYPHGLIB.js.gz +0 -0
  117. package/dist/chunk-UTTXH3GH.js.br +0 -0
  118. package/dist/chunk-UTTXH3GH.js.gz +0 -0
  119. package/dist/dist-4LUVI3SW.js.br +0 -0
  120. package/dist/dist-4LUVI3SW.js.gz +0 -0
  121. package/dist/dist-J6PC54PZ.mjs.br +0 -0
  122. package/dist/dist-J6PC54PZ.mjs.gz +0 -0
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunkUTTXH3GH_js = require('./chunk-UTTXH3GH.js');
3
+ var chunkKDW3LLG5_js = require('./chunk-KDW3LLG5.js');
4
4
  var chunkYIFO3WQO_js = require('./chunk-YIFO3WQO.js');
5
- var chunkCLNGAVNH_js = require('./chunk-CLNGAVNH.js');
5
+ var chunk3TB45PVK_js = require('./chunk-3TB45PVK.js');
6
6
  var clsx = require('clsx');
7
7
  var tailwindMerge = require('tailwind-merge');
8
8
  var React6 = require('react');
@@ -16,7 +16,7 @@ var React6__default = /*#__PURE__*/_interopDefault(React6);
16
16
 
17
17
  // src/viewer/utils/animation-effects.ts
18
18
  function getAnimationInitialStyle2(preset, nativeAnimation) {
19
- return chunkUTTXH3GH_js.getAnimationInitialStyle(preset, nativeAnimation);
19
+ return chunkKDW3LLG5_js.getAnimationInitialStyle(preset, nativeAnimation);
20
20
  }
21
21
  function cn(...inputs) {
22
22
  return tailwindMerge.twMerge(clsx.clsx(inputs));
@@ -24,7 +24,7 @@ function cn(...inputs) {
24
24
 
25
25
  // src/viewer/utils/clone.ts
26
26
  function cloneHistorySnapshot2(snapshot) {
27
- return chunkUTTXH3GH_js.cloneHistorySnapshot(snapshot);
27
+ return chunkKDW3LLG5_js.cloneHistorySnapshot(snapshot);
28
28
  }
29
29
 
30
30
  // src/viewer/constants/scalar.ts
@@ -134,7 +134,7 @@ var GLYPH_COMPONENTS = {
134
134
  plus: lu.LuPlus,
135
135
  triangle: lu.LuTriangle
136
136
  };
137
- var SHAPE_PRESETS = chunkUTTXH3GH_js.SHAPE_PRESET_DEFS.map(
137
+ var SHAPE_PRESETS = chunkKDW3LLG5_js.SHAPE_PRESET_DEFS.map(
138
138
  (def) => ({
139
139
  type: def.type,
140
140
  label: def.label,
@@ -252,7 +252,7 @@ function isConnectorOrLineElement(element) {
252
252
  if (element.type === "connector") {
253
253
  return true;
254
254
  }
255
- if (!chunkCLNGAVNH_js.hasShapeProperties(element)) {
255
+ if (!chunk3TB45PVK_js.hasShapeProperties(element)) {
256
256
  return false;
257
257
  }
258
258
  const st = getShapeType(element.shapeType);
@@ -263,12 +263,12 @@ function isConnectorOrLineElement(element) {
263
263
  function partitionTemplateElements(slides) {
264
264
  const templateElementsBySlideId = {};
265
265
  const nextSlides = slides.map((slide) => {
266
- const template = slide.elements.filter((el) => chunkUTTXH3GH_js.isTemplateElement(el));
266
+ const template = slide.elements.filter((el) => chunkKDW3LLG5_js.isTemplateElement(el));
267
267
  if (template.length === 0) {
268
268
  return slide;
269
269
  }
270
270
  templateElementsBySlideId[slide.id] = template;
271
- return { ...slide, elements: slide.elements.filter((el) => !chunkUTTXH3GH_js.isTemplateElement(el)) };
271
+ return { ...slide, elements: slide.elements.filter((el) => !chunkKDW3LLG5_js.isTemplateElement(el)) };
272
272
  });
273
273
  return { slides: nextSlides, templateElementsBySlideId };
274
274
  }
@@ -284,7 +284,7 @@ function buildSaveSlides(slides, templateElementsBySlideId) {
284
284
 
285
285
  // src/viewer/utils/image-style.ts
286
286
  function getImageMaskStyle(element) {
287
- if (!chunkCLNGAVNH_js.hasShapeProperties(element)) {
287
+ if (!chunk3TB45PVK_js.hasShapeProperties(element)) {
288
288
  return void 0;
289
289
  }
290
290
  const shapeType = element.shapeType;
@@ -293,7 +293,7 @@ function getImageMaskStyle(element) {
293
293
  }
294
294
  const normalized = shapeType.toLowerCase();
295
295
  if (normalized === "roundrect" || normalized === "round1rect" || normalized === "round2samerect" || normalized === "round2diagrect" || normalized === "sniproundrect" || normalized === "snip1rect" || normalized === "snip2diagrect") {
296
- const radiusPx = chunkUTTXH3GH_js.getRoundRectRadiusPx(element);
296
+ const radiusPx = chunkKDW3LLG5_js.getRoundRectRadiusPx(element);
297
297
  if (radiusPx <= 0.01) {
298
298
  return void 0;
299
299
  }
@@ -305,7 +305,7 @@ function getImageMaskStyle(element) {
305
305
  if (normalized === "can" || normalized === "cylinder") {
306
306
  return { borderRadius: "48% / 12%" };
307
307
  }
308
- const clipPath = chunkUTTXH3GH_js.getResolvedShapeClipPath(element);
308
+ const clipPath = chunkKDW3LLG5_js.getResolvedShapeClipPath(element);
309
309
  if (!clipPath) {
310
310
  return void 0;
311
311
  }
@@ -313,7 +313,7 @@ function getImageMaskStyle(element) {
313
313
  }
314
314
  function getImageRenderStyle(element) {
315
315
  const maskStyle = getImageMaskStyle(element) || {};
316
- if (!chunkCLNGAVNH_js.isImageLikeElement(element)) {
316
+ if (!chunk3TB45PVK_js.isImageLikeElement(element)) {
317
317
  return {
318
318
  ...maskStyle,
319
319
  width: "100%",
@@ -321,10 +321,10 @@ function getImageRenderStyle(element) {
321
321
  objectFit: "cover"
322
322
  };
323
323
  }
324
- const cropLeft = chunkUTTXH3GH_js.clampCropValue(element.cropLeft);
325
- const cropTop = chunkUTTXH3GH_js.clampCropValue(element.cropTop);
326
- const cropRight = chunkUTTXH3GH_js.clampCropValue(element.cropRight);
327
- const cropBottom = chunkUTTXH3GH_js.clampCropValue(element.cropBottom);
324
+ const cropLeft = chunkKDW3LLG5_js.clampCropValue(element.cropLeft);
325
+ const cropTop = chunkKDW3LLG5_js.clampCropValue(element.cropTop);
326
+ const cropRight = chunkKDW3LLG5_js.clampCropValue(element.cropRight);
327
+ const cropBottom = chunkKDW3LLG5_js.clampCropValue(element.cropBottom);
328
328
  const hasCrop = cropLeft + cropRight > 1e-4 || cropTop + cropBottom > 1e-4;
329
329
  if (!hasCrop) {
330
330
  return {
@@ -336,10 +336,10 @@ function getImageRenderStyle(element) {
336
336
  }
337
337
  const safeHorizontalScale = cropLeft + cropRight >= 0.99 ? 0.99 / (cropLeft + cropRight) : 1;
338
338
  const safeVerticalScale = cropTop + cropBottom >= 0.99 ? 0.99 / (cropTop + cropBottom) : 1;
339
- const normalizedLeft = chunkUTTXH3GH_js.clampCropValue(cropLeft * safeHorizontalScale);
340
- const normalizedRight = chunkUTTXH3GH_js.clampCropValue(cropRight * safeHorizontalScale);
341
- const normalizedTop = chunkUTTXH3GH_js.clampCropValue(cropTop * safeVerticalScale);
342
- const normalizedBottom = chunkUTTXH3GH_js.clampCropValue(cropBottom * safeVerticalScale);
339
+ const normalizedLeft = chunkKDW3LLG5_js.clampCropValue(cropLeft * safeHorizontalScale);
340
+ const normalizedRight = chunkKDW3LLG5_js.clampCropValue(cropRight * safeHorizontalScale);
341
+ const normalizedTop = chunkKDW3LLG5_js.clampCropValue(cropTop * safeVerticalScale);
342
+ const normalizedBottom = chunkKDW3LLG5_js.clampCropValue(cropBottom * safeVerticalScale);
343
343
  const remainingWidth = Math.max(0.01, 1 - normalizedLeft - normalizedRight);
344
344
  const remainingHeight = Math.max(0.01, 1 - normalizedTop - normalizedBottom);
345
345
  const tx = Math.round(-normalizedLeft / remainingWidth * 1e4) / 100;
@@ -368,7 +368,7 @@ var CROP_SHAPE_CLIP_PATHS = {
368
368
  star: "polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%)"
369
369
  };
370
370
  function getCropShapeClipPath(element) {
371
- if (!chunkCLNGAVNH_js.isImageLikeElement(element)) {
371
+ if (!chunk3TB45PVK_js.isImageLikeElement(element)) {
372
372
  return void 0;
373
373
  }
374
374
  const shape = element.cropShape;
@@ -378,7 +378,7 @@ function getCropShapeClipPath(element) {
378
378
  return CROP_SHAPE_CLIP_PATHS[shape];
379
379
  }
380
380
  function isImageTiled(element) {
381
- if (!chunkCLNGAVNH_js.isImageLikeElement(element)) {
381
+ if (!chunk3TB45PVK_js.isImageLikeElement(element)) {
382
382
  return false;
383
383
  }
384
384
  return typeof element.tileScaleX === "number" || typeof element.tileScaleY === "number";
@@ -436,7 +436,7 @@ function buildMirrorTiledBackground(src, flip, scaleX, scaleY) {
436
436
  };
437
437
  }
438
438
  function getImageTilingStyle(element) {
439
- if (!chunkCLNGAVNH_js.isImageLikeElement(element) || !isImageTiled(element)) {
439
+ if (!chunk3TB45PVK_js.isImageLikeElement(element) || !isImageTiled(element)) {
440
440
  return void 0;
441
441
  }
442
442
  const scaleX = typeof element.tileScaleX === "number" ? element.tileScaleX * 100 : 100;
@@ -720,7 +720,7 @@ function executeMediaCommand(command) {
720
720
  if (!el) {
721
721
  return false;
722
722
  }
723
- const parsed = chunkUTTXH3GH_js.parseMediaCommand(command.command);
723
+ const parsed = chunkKDW3LLG5_js.parseMediaCommand(command.command);
724
724
  if (!parsed) {
725
725
  return false;
726
726
  }
@@ -1172,7 +1172,7 @@ function renderMediaElement(element, mediaDataUrls, options) {
1172
1172
 
1173
1173
  // src/viewer/utils/text-utils.tsx
1174
1174
  function getTextStyleForElement(element, fallbackColor) {
1175
- if (!chunkCLNGAVNH_js.hasTextProperties(element)) {
1175
+ if (!chunk3TB45PVK_js.hasTextProperties(element)) {
1176
1176
  return { color: fallbackColor };
1177
1177
  }
1178
1178
  const textDecorationTokens = [];
@@ -1186,20 +1186,20 @@ function getTextStyleForElement(element, fallbackColor) {
1186
1186
  const textDecorationStyle = isDoubleStrike ? "double" : void 0;
1187
1187
  const hasItalicRuns = element.textStyle?.italic || Boolean(element.textSegments?.some((segment) => segment.style?.italic));
1188
1188
  const isRtl = element.textStyle?.rtl === true;
1189
- const resolvedTextColor = element.textStyle?.hyperlink ? chunkUTTXH3GH_js.normalizeHexColor(element.textStyle?.color, HYPERLINK_COLOR) : chunkUTTXH3GH_js.normalizeHexColor(element.textStyle?.color, fallbackColor);
1189
+ const resolvedTextColor = element.textStyle?.hyperlink ? chunkKDW3LLG5_js.normalizeHexColor(element.textStyle?.color, HYPERLINK_COLOR) : chunkKDW3LLG5_js.normalizeHexColor(element.textStyle?.color, fallbackColor);
1190
1190
  const bodyTop = element.textStyle?.bodyInsetTop ?? DEFAULT_BODY_INSET_TB_PX;
1191
1191
  const bodyBottom = element.textStyle?.bodyInsetBottom ?? DEFAULT_BODY_INSET_TB_PX;
1192
1192
  const bodyLeft = element.textStyle?.bodyInsetLeft ?? DEFAULT_BODY_INSET_LR_PX;
1193
1193
  const bodyRight = element.textStyle?.bodyInsetRight ?? DEFAULT_BODY_INSET_LR_PX;
1194
- const writingMode = chunkUTTXH3GH_js.toCssWritingMode(element.textStyle?.textDirection);
1195
- const textOrientation = chunkUTTXH3GH_js.toCssTextOrientation(element.textStyle?.textDirection);
1196
- const verticalDirection = chunkUTTXH3GH_js.toCssVerticalDirection(element.textStyle?.textDirection);
1194
+ const writingMode = chunkKDW3LLG5_js.toCssWritingMode(element.textStyle?.textDirection);
1195
+ const textOrientation = chunkKDW3LLG5_js.toCssTextOrientation(element.textStyle?.textDirection);
1196
+ const verticalDirection = chunkKDW3LLG5_js.toCssVerticalDirection(element.textStyle?.textDirection);
1197
1197
  const resolvedDirection = verticalDirection || (isRtl ? "rtl" : "ltr");
1198
1198
  const resolvedUnicodeBidi = isRtl ? "plaintext" : void 0;
1199
1199
  const hasSegments = (element.textSegments?.length ?? 0) > 0;
1200
1200
  return {
1201
1201
  color: resolvedTextColor,
1202
- backgroundColor: !hasSegments && element.textStyle?.highlightColor ? chunkUTTXH3GH_js.normalizeHexColor(element.textStyle.highlightColor, void 0) : void 0,
1202
+ backgroundColor: !hasSegments && element.textStyle?.highlightColor ? chunkKDW3LLG5_js.normalizeHexColor(element.textStyle.highlightColor, void 0) : void 0,
1203
1203
  textAlign: (() => {
1204
1204
  const a = element.textStyle?.align;
1205
1205
  if (a === "justLow" || a === "dist" || a === "thaiDist") {
@@ -1215,7 +1215,7 @@ function getTextStyleForElement(element, fallbackColor) {
1215
1215
  textDecorationLine: textDecorationTokens.length > 0 ? textDecorationTokens.join(" ") : "none",
1216
1216
  textDecorationStyle,
1217
1217
  fontFamily: element.textStyle?.fontFamily || DEFAULT_FONT_FAMILY,
1218
- lineHeight: chunkUTTXH3GH_js.resolveLineHeight(element.textStyle, hasItalicRuns),
1218
+ lineHeight: chunkKDW3LLG5_js.resolveLineHeight(element.textStyle, hasItalicRuns),
1219
1219
  paddingTop: bodyTop + (hasItalicRuns ? 1 : 0),
1220
1220
  paddingBottom: bodyBottom + (hasItalicRuns ? 1 : 0),
1221
1221
  paddingLeft: bodyLeft + (element.textStyle?.paragraphMarginLeft || 0),
@@ -1228,7 +1228,7 @@ function getTextStyleForElement(element, fallbackColor) {
1228
1228
  // Auto-fit: use OOXML-provided fontScale/lnSpcReduction when available,
1229
1229
  // otherwise fall back to heuristic estimation. The pure font-scale maths
1230
1230
  // now lives in pptx-viewer-shared (computeAutoFitTextStyle).
1231
- ...chunkUTTXH3GH_js.computeAutoFitTextStyle({
1231
+ ...chunkKDW3LLG5_js.computeAutoFitTextStyle({
1232
1232
  textStyle: element.textStyle,
1233
1233
  text: element.text ?? "",
1234
1234
  width: element.width,
@@ -1262,13 +1262,13 @@ function computeTabSize(tabStops, defaultTabSize) {
1262
1262
  return avgGap > 0 ? `${Math.round(avgGap)}px` : fromDefault;
1263
1263
  }
1264
1264
  function getTextLayoutStyle(element) {
1265
- if (!chunkCLNGAVNH_js.hasTextProperties(element)) {
1265
+ if (!chunk3TB45PVK_js.hasTextProperties(element)) {
1266
1266
  return {};
1267
1267
  }
1268
1268
  const verticalAlign = element.textStyle?.vAlign || "top";
1269
- const writingMode = chunkUTTXH3GH_js.toCssWritingMode(element.textStyle?.textDirection);
1270
- const textOrientation = chunkUTTXH3GH_js.toCssTextOrientation(element.textStyle?.textDirection);
1271
- const verticalDirection = chunkUTTXH3GH_js.toCssVerticalDirection(element.textStyle?.textDirection);
1269
+ const writingMode = chunkKDW3LLG5_js.toCssWritingMode(element.textStyle?.textDirection);
1270
+ const textOrientation = chunkKDW3LLG5_js.toCssTextOrientation(element.textStyle?.textDirection);
1271
+ const verticalDirection = chunkKDW3LLG5_js.toCssVerticalDirection(element.textStyle?.textDirection);
1272
1272
  const parsedColumnCount = Number(element.textStyle?.columnCount);
1273
1273
  const columnCount = Number.isFinite(parsedColumnCount) ? Math.max(1, Math.min(16, Math.round(parsedColumnCount))) : 1;
1274
1274
  const hasColumns = columnCount > 1;
@@ -1276,7 +1276,7 @@ function getTextLayoutStyle(element) {
1276
1276
  const tabStops = element.textStyle?.tabStops;
1277
1277
  const tabSize = computeTabSize(tabStops, element.textStyle?.defaultTabSize);
1278
1278
  const textWrapNone = element.textStyle?.textWrap === "none";
1279
- const hasParagraphIndents = chunkCLNGAVNH_js.hasTextProperties(element) && element.paragraphIndents && element.paragraphIndents.length > 0;
1279
+ const hasParagraphIndents = chunk3TB45PVK_js.hasTextProperties(element) && element.paragraphIndents && element.paragraphIndents.length > 0;
1280
1280
  const paragraphMarginLeft = element.textStyle?.paragraphMarginLeft;
1281
1281
  const paragraphIndent = element.textStyle?.paragraphIndent;
1282
1282
  const marginLeft = !hasParagraphIndents && typeof paragraphMarginLeft === "number" && paragraphMarginLeft !== 0 ? paragraphMarginLeft : void 0;
@@ -1285,7 +1285,7 @@ function getTextLayoutStyle(element) {
1285
1285
  const bodyBottom = element.textStyle?.bodyInsetBottom ?? DEFAULT_BODY_INSET_TB_PX;
1286
1286
  const parsedColumnSpacing = Number(element.textStyle?.columnSpacing);
1287
1287
  const columnGap = Number.isFinite(parsedColumnSpacing) && parsedColumnSpacing > 0 ? `${parsedColumnSpacing}px` : "0.75em";
1288
- const kinsokuStyles = chunkUTTXH3GH_js.getKinsokuLineBreakStyles(element.textStyle);
1288
+ const kinsokuStyles = chunkKDW3LLG5_js.getKinsokuLineBreakStyles(element.textStyle);
1289
1289
  if (hasColumns) {
1290
1290
  return {
1291
1291
  display: "block",
@@ -1332,10 +1332,10 @@ function getTextLayoutStyle(element) {
1332
1332
 
1333
1333
  // src/viewer/utils/text-effects.tsx
1334
1334
  function buildTextFillCss2(style) {
1335
- return chunkUTTXH3GH_js.buildTextFillCss(style);
1335
+ return chunkKDW3LLG5_js.buildTextFillCss(style);
1336
1336
  }
1337
1337
  function buildTextBody3DSceneStyle2(textStyle) {
1338
- return chunkUTTXH3GH_js.buildTextBody3DSceneStyle(textStyle);
1338
+ return chunkKDW3LLG5_js.buildTextBody3DSceneStyle(textStyle);
1339
1339
  }
1340
1340
 
1341
1341
  // src/viewer/utils/text-warp-css.tsx
@@ -1520,17 +1520,17 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
1520
1520
  if (!subElementAnimStates || subElementAnimStates.size === 0) {
1521
1521
  return renderedSegments;
1522
1522
  }
1523
- const paraKey = `${elementId}${chunkUTTXH3GH_js.TEXT_BUILD_ID_SEP}p${paraIndex}`;
1523
+ const paraKey = `${elementId}${chunkKDW3LLG5_js.TEXT_BUILD_ID_SEP}p${paraIndex}`;
1524
1524
  const paraState = subElementAnimStates.get(paraKey);
1525
1525
  if (paraState) {
1526
1526
  const style = buildAnimStyle(paraState);
1527
1527
  return /* @__PURE__ */ jsxRuntime.jsx("span", { "data-anim-id": paraKey, style: { display: "inline", ...style }, children: renderedSegments }, paraKey);
1528
1528
  }
1529
- const firstWordKey = `${elementId}${chunkUTTXH3GH_js.TEXT_BUILD_ID_SEP}w${paraIndex}-0`;
1529
+ const firstWordKey = `${elementId}${chunkKDW3LLG5_js.TEXT_BUILD_ID_SEP}w${paraIndex}-0`;
1530
1530
  if (subElementAnimStates.has(firstWordKey)) {
1531
1531
  return wrapByWord(elementId, paraIndex, paraSegments, subElementAnimStates);
1532
1532
  }
1533
- const firstCharKey = `${elementId}${chunkUTTXH3GH_js.TEXT_BUILD_ID_SEP}c${paraIndex}-0`;
1533
+ const firstCharKey = `${elementId}${chunkKDW3LLG5_js.TEXT_BUILD_ID_SEP}c${paraIndex}-0`;
1534
1534
  if (subElementAnimStates.has(firstCharKey)) {
1535
1535
  return wrapByChar(elementId, paraIndex, paraSegments, subElementAnimStates);
1536
1536
  }
@@ -1551,7 +1551,7 @@ function wrapByWord(elementId, paraIndex, paraSegments, states) {
1551
1551
  nodes.push(/* @__PURE__ */ jsxRuntime.jsx(React6__default.default.Fragment, { children: w }, `ws-${i}`));
1552
1552
  continue;
1553
1553
  }
1554
- const key = `${elementId}${chunkUTTXH3GH_js.TEXT_BUILD_ID_SEP}w${paraIndex}-${wordIdx}`;
1554
+ const key = `${elementId}${chunkKDW3LLG5_js.TEXT_BUILD_ID_SEP}w${paraIndex}-${wordIdx}`;
1555
1555
  const state = states.get(key);
1556
1556
  const style = buildAnimStyle(state);
1557
1557
  nodes.push(
@@ -1565,7 +1565,7 @@ function wrapByChar(elementId, paraIndex, paraSegments, states) {
1565
1565
  const fullText = paraSegments.map((e) => e.segment.text).join("");
1566
1566
  const nodes = [];
1567
1567
  for (let i = 0; i < fullText.length; i++) {
1568
- const key = `${elementId}${chunkUTTXH3GH_js.TEXT_BUILD_ID_SEP}c${paraIndex}-${i}`;
1568
+ const key = `${elementId}${chunkKDW3LLG5_js.TEXT_BUILD_ID_SEP}c${paraIndex}-${i}`;
1569
1569
  const state = states.get(key);
1570
1570
  const style = buildAnimStyle(state);
1571
1571
  nodes.push(
@@ -1711,10 +1711,10 @@ function renderScriptAwareText(text, needsScriptFonts, scriptFonts, baseFontFami
1711
1711
  if (!needsScriptFonts || !text) {
1712
1712
  return text;
1713
1713
  }
1714
- const runs = chunkUTTXH3GH_js.segmentByScript(text);
1714
+ const runs = chunkKDW3LLG5_js.segmentByScript(text);
1715
1715
  if (runs.length <= 1) {
1716
1716
  if (runs.length === 1) {
1717
- const font = chunkUTTXH3GH_js.resolveFontForScript(runs[0].script, scriptFonts);
1717
+ const font = chunkKDW3LLG5_js.resolveFontForScript(runs[0].script, scriptFonts);
1718
1718
  if (font && font !== baseFontFamily) {
1719
1719
  return /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontFamily: font }, children: text });
1720
1720
  }
@@ -1722,7 +1722,7 @@ function renderScriptAwareText(text, needsScriptFonts, scriptFonts, baseFontFami
1722
1722
  return text;
1723
1723
  }
1724
1724
  return runs.map((run, i) => {
1725
- const font = chunkUTTXH3GH_js.resolveFontForScript(run.script, scriptFonts);
1725
+ const font = chunkKDW3LLG5_js.resolveFontForScript(run.script, scriptFonts);
1726
1726
  if (!font || font === baseFontFamily) {
1727
1727
  return /* @__PURE__ */ jsxRuntime.jsx(React6__default.default.Fragment, { children: run.text }, `${keyPrefix}-r${i}`);
1728
1728
  }
@@ -1794,8 +1794,8 @@ function renderSegmentContent(elementId, segmentIndex, textValue, lines, needsSc
1794
1794
  );
1795
1795
  }
1796
1796
  function renderEquationSegment(elementId, segmentIndex, equationXml, equationNumber) {
1797
- const mathml = chunkUTTXH3GH_js.convertOmmlToMathMl(equationXml);
1798
- const safeMathml = mathml ? chunkUTTXH3GH_js.sanitizeMathMl(mathml) : "";
1797
+ const mathml = chunkKDW3LLG5_js.convertOmmlToMathMl(equationXml);
1798
+ const safeMathml = mathml ? chunkKDW3LLG5_js.sanitizeMathMl(mathml) : "";
1799
1799
  const equationContent = safeMathml ? /* @__PURE__ */ jsxRuntime.jsx(
1800
1800
  "span",
1801
1801
  {
@@ -1845,7 +1845,7 @@ function renderEquationSegment(elementId, segmentIndex, equationXml, equationNum
1845
1845
  return /* @__PURE__ */ jsxRuntime.jsx("span", { children: equationContent }, `${elementId}-seg-${segmentIndex}`);
1846
1846
  }
1847
1847
  function renderPictureBullet(elementId, segmentIndex, bulletInfo, baseFontSize) {
1848
- const picture = chunkUTTXH3GH_js.resolvePictureBullet(bulletInfo, baseFontSize) ?? {
1848
+ const picture = chunkKDW3LLG5_js.resolvePictureBullet(bulletInfo, baseFontSize) ?? {
1849
1849
  sizePx: baseFontSize,
1850
1850
  fallbackMarker: "\u2022",
1851
1851
  accessibleLabel: "Bullet"
@@ -1895,7 +1895,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1895
1895
  );
1896
1896
  }
1897
1897
  const segmentStyle = segment.style || {};
1898
- const textValue = chunkUTTXH3GH_js.substituteFieldText(segment.text || "", segment.fieldType, fieldContext);
1898
+ const textValue = chunkKDW3LLG5_js.substituteFieldText(segment.text || "", segment.fieldType, fieldContext);
1899
1899
  const lines = textValue.split("\n");
1900
1900
  const textDecorationTokens = [];
1901
1901
  if (segmentStyle.underline || segmentStyle.hyperlink) {
@@ -1905,8 +1905,8 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1905
1905
  textDecorationTokens.push("line-through");
1906
1906
  }
1907
1907
  const isDoubleStrike = segmentStyle.strikethrough && segmentStyle.strikeType === "dblStrike";
1908
- const resolvedSegmentColor = segmentStyle.hyperlink ? chunkUTTXH3GH_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, HYPERLINK_COLOR) : chunkUTTXH3GH_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, fallbackColor);
1909
- const underlineDecoration = chunkUTTXH3GH_js.resolveUnderlineDecorationStyle(
1908
+ const resolvedSegmentColor = segmentStyle.hyperlink ? chunkKDW3LLG5_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, HYPERLINK_COLOR) : chunkKDW3LLG5_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, fallbackColor);
1909
+ const underlineDecoration = chunkKDW3LLG5_js.resolveUnderlineDecorationStyle(
1910
1910
  Boolean(isDoubleStrike),
1911
1911
  segmentStyle.underlineStyle
1912
1912
  );
@@ -1922,14 +1922,14 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1922
1922
  const baseFontSizePt = baseFontSize * (72 / 96);
1923
1923
  const fontKerning = typeof segmentStyle.kerning === "number" ? segmentStyle.kerning === 0 ? "none" : baseFontSizePt >= segmentStyle.kerning / 100 ? "normal" : "none" : void 0;
1924
1924
  const rawFontFamily = segmentStyle.fontFamily || element.textStyle?.fontFamily;
1925
- const baseFontFamily = rawFontFamily ? chunkCLNGAVNH_js.getSubstituteFontFamily(rawFontFamily) : DEFAULT_FONT_FAMILY;
1925
+ const baseFontFamily = rawFontFamily ? chunk3TB45PVK_js.getSubstituteFontFamily(rawFontFamily) : DEFAULT_FONT_FAMILY;
1926
1926
  const scriptFonts = {
1927
1927
  latin: baseFontFamily,
1928
1928
  eastAsia: segmentStyle.eastAsiaFont || element.textStyle?.eastAsiaFont || baseFontFamily,
1929
1929
  complexScript: segmentStyle.complexScriptFont || element.textStyle?.complexScriptFont || baseFontFamily,
1930
1930
  symbol: segmentStyle.symbolFont || element.textStyle?.symbolFont || baseFontFamily
1931
1931
  };
1932
- const needsScriptFonts = chunkUTTXH3GH_js.hasDistinctScriptFonts(scriptFonts);
1932
+ const needsScriptFonts = chunkKDW3LLG5_js.hasDistinctScriptFonts(scriptFonts);
1933
1933
  const spanStyle = {
1934
1934
  color: resolvedSegmentColor,
1935
1935
  fontSize: baseFontSize * baselineFontScale,
@@ -1947,15 +1947,15 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1947
1947
  fontVariantCaps: segmentStyle.textCaps === "small" ? "small-caps" : void 0,
1948
1948
  letterSpacing,
1949
1949
  fontKerning,
1950
- backgroundColor: textFillStyles ? void 0 : segmentStyle.highlightColor ? chunkUTTXH3GH_js.normalizeHexColor(segmentStyle.highlightColor, "transparent") : void 0,
1950
+ backgroundColor: textFillStyles ? void 0 : segmentStyle.highlightColor ? chunkKDW3LLG5_js.normalizeHexColor(segmentStyle.highlightColor, "transparent") : void 0,
1951
1951
  ...textFillStyles,
1952
- textDecorationColor: segmentStyle.underlineColor ? chunkUTTXH3GH_js.normalizeHexColor(segmentStyle.underlineColor, void 0) : void 0,
1953
- WebkitTextStroke: segmentStyle.textOutlineWidth && segmentStyle.textOutlineColor ? `${segmentStyle.textOutlineWidth}px ${chunkUTTXH3GH_js.normalizeHexColor(segmentStyle.textOutlineColor, "#000000")}` : segmentStyle.textOutlineWidth ? `${segmentStyle.textOutlineWidth}px currentColor` : void 0,
1952
+ textDecorationColor: segmentStyle.underlineColor ? chunkKDW3LLG5_js.normalizeHexColor(segmentStyle.underlineColor, void 0) : void 0,
1953
+ WebkitTextStroke: segmentStyle.textOutlineWidth && segmentStyle.textOutlineColor ? `${segmentStyle.textOutlineWidth}px ${chunkKDW3LLG5_js.normalizeHexColor(segmentStyle.textOutlineColor, "#000000")}` : segmentStyle.textOutlineWidth ? `${segmentStyle.textOutlineWidth}px currentColor` : void 0,
1954
1954
  paintOrder: segmentStyle.textOutlineWidth ? "stroke fill" : void 0,
1955
- textShadow: chunkUTTXH3GH_js.buildTextShadowCss(segmentStyle),
1956
- filter: chunkUTTXH3GH_js.buildTextRunFilterChain(segmentStyle),
1957
- opacity: chunkUTTXH3GH_js.getTextAlphaOpacity(segmentStyle),
1958
- WebkitBoxReflect: chunkUTTXH3GH_js.buildTextReflectionCss(segmentStyle)
1955
+ textShadow: chunkKDW3LLG5_js.buildTextShadowCss(segmentStyle),
1956
+ filter: chunkKDW3LLG5_js.buildTextRunFilterChain(segmentStyle),
1957
+ opacity: chunkKDW3LLG5_js.getTextAlphaOpacity(segmentStyle),
1958
+ WebkitBoxReflect: chunkKDW3LLG5_js.buildTextReflectionCss(segmentStyle)
1959
1959
  };
1960
1960
  const runRtl = segmentStyle.rtl;
1961
1961
  if (runRtl !== void 0 && runRtl !== paragraphRtl) {
@@ -1975,7 +1975,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1975
1975
  spanStyle.fontSize = baseFontSize * (bulletInfo.sizePercent / 100) * baselineFontScale;
1976
1976
  }
1977
1977
  if (bulletInfo.color) {
1978
- spanStyle.color = chunkUTTXH3GH_js.normalizeHexColor(bulletInfo.color, resolvedSegmentColor);
1978
+ spanStyle.color = chunkKDW3LLG5_js.normalizeHexColor(bulletInfo.color, resolvedSegmentColor);
1979
1979
  }
1980
1980
  }
1981
1981
  if (bulletInfo?.imageDataUrl || bulletInfo?.imageRelId) {
@@ -2015,7 +2015,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
2015
2015
  textAlign: segment.rubyAlignment === "l" ? "left" : segment.rubyAlignment === "r" ? "right" : segment.rubyAlignment === "dist" || segment.rubyAlignment === "distCat" || segment.rubyAlignment === "distLetter" ? "justify" : "center"
2016
2016
  };
2017
2017
  if (segment.rubyStyle?.color) {
2018
- rubyStyle.color = chunkUTTXH3GH_js.normalizeHexColor(segment.rubyStyle.color, resolvedSegmentColor);
2018
+ rubyStyle.color = chunkKDW3LLG5_js.normalizeHexColor(segment.rubyStyle.color, resolvedSegmentColor);
2019
2019
  }
2020
2020
  innerContent = /* @__PURE__ */ jsxRuntime.jsxs("ruby", { children: [
2021
2021
  baseContent,
@@ -2110,7 +2110,7 @@ function groupSegmentsIntoParagraphs(segments) {
2110
2110
  return paragraphs;
2111
2111
  }
2112
2112
  function renderTextSegments(element, fallbackColor, emptyFallback, findHighlights, onHyperlinkClick, fieldContext, subElementAnimStates, segmentOverrides, requireCtrlClick) {
2113
- if (!chunkCLNGAVNH_js.hasTextProperties(element)) {
2113
+ if (!chunk3TB45PVK_js.hasTextProperties(element)) {
2114
2114
  return emptyFallback || null;
2115
2115
  }
2116
2116
  const effectiveSegments = segmentOverrides ?? element.textSegments;
@@ -2131,10 +2131,10 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
2131
2131
  return element.text || emptyFallback || "";
2132
2132
  }
2133
2133
  const paragraphs = groupSegmentsIntoParagraphs(effectiveSegments);
2134
- const paragraphIndents = chunkCLNGAVNH_js.hasTextProperties(element) ? element.paragraphIndents : void 0;
2135
- const elementRtl = chunkCLNGAVNH_js.hasTextProperties(element) ? element.textStyle?.rtl : void 0;
2136
- const elementAlign = chunkCLNGAVNH_js.hasTextProperties(element) ? element.textStyle?.align : void 0;
2137
- const bodyStyle = chunkCLNGAVNH_js.hasTextProperties(element) ? element.textStyle : void 0;
2134
+ const paragraphIndents = chunk3TB45PVK_js.hasTextProperties(element) ? element.paragraphIndents : void 0;
2135
+ const elementRtl = chunk3TB45PVK_js.hasTextProperties(element) ? element.textStyle?.rtl : void 0;
2136
+ const elementAlign = chunk3TB45PVK_js.hasTextProperties(element) ? element.textStyle?.align : void 0;
2137
+ const bodyStyle = chunk3TB45PVK_js.hasTextProperties(element) ? element.textStyle : void 0;
2138
2138
  const spaceFirstLast = bodyStyle?.spaceFirstLastParagraph !== false;
2139
2139
  return paragraphs.map((paraSegments, paraIndex) => {
2140
2140
  const paraIndent = paragraphIndents?.[paraIndex];
@@ -2149,14 +2149,14 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
2149
2149
  return Boolean(segment.text) && segment.text.trim().length > 0;
2150
2150
  });
2151
2151
  const hasBullet = bulletInfo && !bulletInfo.none && hasVisibleTextContent;
2152
- const paraRtl = chunkUTTXH3GH_js.resolveParagraphRtl(paraSegments, elementRtl);
2152
+ const paraRtl = chunkKDW3LLG5_js.resolveParagraphRtl(paraSegments, elementRtl);
2153
2153
  const isRtlParagraph = paraRtl === true;
2154
- const paraAlign = chunkUTTXH3GH_js.resolveParagraphAlign(paraSegments, elementAlign);
2155
- const cssTextAlign = chunkUTTXH3GH_js.resolveCssTextAlign(paraAlign, isRtlParagraph);
2154
+ const paraAlign = chunkKDW3LLG5_js.resolveParagraphAlign(paraSegments, elementAlign);
2155
+ const cssTextAlign = chunkKDW3LLG5_js.resolveCssTextAlign(paraAlign, isRtlParagraph);
2156
2156
  const paraMarginLeft = isRtlParagraph ? void 0 : rawMarginLeft;
2157
2157
  const paraMarginRight = isRtlParagraph ? rawMarginLeft : void 0;
2158
2158
  const paraTextIndent = rawTextIndent;
2159
- const paraKinsokuStyle = chunkUTTXH3GH_js.getKinsokuLineBreakStyles(firstSeg?.segment.style);
2159
+ const paraKinsokuStyle = chunkKDW3LLG5_js.getKinsokuLineBreakStyles(firstSeg?.segment.style);
2160
2160
  const hasParaKinsoku = Object.keys(paraKinsokuStyle).length > 0;
2161
2161
  const paraProps = effectiveSegments[firstSeg?.globalIndex ?? -1]?.paragraphProperties;
2162
2162
  const spacing = resolveParagraphSpacing({
@@ -2243,13 +2243,13 @@ function hexToRgbUnit(hex) {
2243
2243
  };
2244
2244
  }
2245
2245
  function getDuotoneColors(element) {
2246
- if (!chunkCLNGAVNH_js.isImageLikeElement(element)) {
2246
+ if (!chunk3TB45PVK_js.isImageLikeElement(element)) {
2247
2247
  return void 0;
2248
2248
  }
2249
2249
  return element.imageEffects?.duotone;
2250
2250
  }
2251
2251
  function buildLineShadowCss(element) {
2252
- if (!chunkCLNGAVNH_js.hasShapeProperties(element)) {
2252
+ if (!chunk3TB45PVK_js.hasShapeProperties(element)) {
2253
2253
  return void 0;
2254
2254
  }
2255
2255
  const ss = element.shapeStyle;
@@ -2260,13 +2260,13 @@ function buildLineShadowCss(element) {
2260
2260
  const offsetY = typeof ss.lineShadowOffsetY === "number" ? ss.lineShadowOffsetY : 2;
2261
2261
  const blur = typeof ss.lineShadowBlur === "number" ? Math.max(0, ss.lineShadowBlur) : 4;
2262
2262
  const opacity = typeof ss.lineShadowOpacity === "number" ? Math.max(0, Math.min(1, ss.lineShadowOpacity)) : 0.35;
2263
- return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${chunkUTTXH3GH_js.colorWithOpacity(
2264
- chunkUTTXH3GH_js.normalizeHexColor(ss.lineShadowColor, "#000000"),
2263
+ return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${chunkKDW3LLG5_js.colorWithOpacity(
2264
+ chunkKDW3LLG5_js.normalizeHexColor(ss.lineShadowColor, "#000000"),
2265
2265
  opacity
2266
2266
  )}`;
2267
2267
  }
2268
2268
  function buildLineGlowFilter(element) {
2269
- if (!chunkCLNGAVNH_js.hasShapeProperties(element)) {
2269
+ if (!chunk3TB45PVK_js.hasShapeProperties(element)) {
2270
2270
  return void 0;
2271
2271
  }
2272
2272
  const ss = element.shapeStyle;
@@ -2275,7 +2275,7 @@ function buildLineGlowFilter(element) {
2275
2275
  }
2276
2276
  const glowOpacity = typeof ss.lineGlowOpacity === "number" ? ss.lineGlowOpacity : 0.75;
2277
2277
  const glowRad = Math.round(Math.max(0, ss.lineGlowRadius));
2278
- const glowCol = chunkUTTXH3GH_js.colorWithOpacity(chunkUTTXH3GH_js.normalizeHexColor(ss.lineGlowColor, "#ffff00"), glowOpacity);
2278
+ const glowCol = chunkKDW3LLG5_js.colorWithOpacity(chunkKDW3LLG5_js.normalizeHexColor(ss.lineGlowColor, "#ffff00"), glowOpacity);
2279
2279
  return `drop-shadow(0 0 ${glowRad}px ${glowCol})`;
2280
2280
  }
2281
2281
  function mapDagBlendModeToCss(blend) {
@@ -2299,7 +2299,7 @@ function getDagDuotoneFilterId(elementId) {
2299
2299
  return `dag-duotone-${elementId}`;
2300
2300
  }
2301
2301
  function hasDagDuotoneEffect(element) {
2302
- if (!chunkCLNGAVNH_js.hasShapeProperties(element)) {
2302
+ if (!chunk3TB45PVK_js.hasShapeProperties(element)) {
2303
2303
  return false;
2304
2304
  }
2305
2305
  return Boolean(element.shapeStyle?.dagDuotone);
@@ -2362,7 +2362,7 @@ function getRoundRectRadiusPx2(element) {
2362
2362
 
2363
2363
  // src/viewer/utils/shape-visual-3d.ts
2364
2364
  function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elementHeight) {
2365
- return chunkUTTXH3GH_js.build3DExtrusionData(
2365
+ return chunkKDW3LLG5_js.build3DExtrusionData(
2366
2366
  shape3d,
2367
2367
  scene3d,
2368
2368
  fillColor,
@@ -2371,7 +2371,7 @@ function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elemen
2371
2371
  );
2372
2372
  }
2373
2373
  function apply3dEffects2(base, scene3d, shape3d, fillColorFallback) {
2374
- chunkUTTXH3GH_js.apply3dEffects(base, scene3d, shape3d, fillColorFallback);
2374
+ chunkKDW3LLG5_js.apply3dEffects(base, scene3d, shape3d, fillColorFallback);
2375
2375
  }
2376
2376
 
2377
2377
  // src/viewer/utils/vector-subpath-paint.ts
@@ -2380,7 +2380,7 @@ function toHexByte(value) {
2380
2380
  return clamped.toString(16).padStart(2, "0");
2381
2381
  }
2382
2382
  function shiftHex(hex, factor, towardsWhite) {
2383
- const channels = chunkUTTXH3GH_js.hexToRgbChannels(hex);
2383
+ const channels = chunkKDW3LLG5_js.hexToRgbChannels(hex);
2384
2384
  if (!channels) {
2385
2385
  return hex;
2386
2386
  }
@@ -2406,13 +2406,13 @@ function buildCustomSubpathPaints(subpaths, hasFill, fillColor, fillOpacity) {
2406
2406
  const fillOff = subpath.fillMode === "none" || !hasFill;
2407
2407
  return {
2408
2408
  d: subpath.d,
2409
- fill: fillOff ? "none" : chunkUTTXH3GH_js.colorWithOpacity(adjustFillForMode(fillColor, subpath.fillMode), fillOpacity),
2409
+ fill: fillOff ? "none" : chunkKDW3LLG5_js.colorWithOpacity(adjustFillForMode(fillColor, subpath.fillMode), fillOpacity),
2410
2410
  stroked: subpath.stroke !== false
2411
2411
  };
2412
2412
  });
2413
2413
  }
2414
2414
  function getStrokeOnlyPresetPaths(element) {
2415
- if (element.type !== "shape" || !chunkCLNGAVNH_js.hasShapeProperties(element)) {
2415
+ if (element.type !== "shape" || !chunk3TB45PVK_js.hasShapeProperties(element)) {
2416
2416
  return void 0;
2417
2417
  }
2418
2418
  const shapeType = element.shapeType;
@@ -2422,7 +2422,7 @@ function getStrokeOnlyPresetPaths(element) {
2422
2422
  if (element.pathData) {
2423
2423
  return void 0;
2424
2424
  }
2425
- const result = chunkCLNGAVNH_js.evaluatePresetShape(
2425
+ const result = chunk3TB45PVK_js.evaluatePresetShape(
2426
2426
  shapeType,
2427
2427
  Math.max(element.width, 1),
2428
2428
  Math.max(element.height, 1),
@@ -2437,27 +2437,27 @@ function getStrokeOnlyPresetPaths(element) {
2437
2437
 
2438
2438
  // src/viewer/utils/shape-visual-style.ts
2439
2439
  function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeColor, animatesFill, animatesStroke) {
2440
- if (!chunkCLNGAVNH_js.hasShapeProperties(element)) {
2440
+ if (!chunk3TB45PVK_js.hasShapeProperties(element)) {
2441
2441
  return {};
2442
2442
  }
2443
2443
  const normalizedShapeType = getShapeType(element.shapeType);
2444
- const clipPath = chunkUTTXH3GH_js.getResolvedShapeClipPath(element);
2444
+ const clipPath = chunkKDW3LLG5_js.getResolvedShapeClipPath(element);
2445
2445
  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;
2446
2446
  const rendersStrokeOnlyPreset = Boolean(getStrokeOnlyPresetPaths(element));
2447
2447
  const fillOpacity = element.shapeStyle?.fillOpacity;
2448
2448
  const strokeOpacity = element.shapeStyle?.strokeOpacity;
2449
- const strokeDash = chunkUTTXH3GH_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2450
- const fillGradient = chunkUTTXH3GH_js.buildCssGradientFromShapeStyle(element.shapeStyle) || element.shapeStyle?.fillGradient;
2451
- const shadowCss = chunkUTTXH3GH_js.buildShadowCssFromShapeStyle(element.shapeStyle);
2452
- const innerShadowCss = chunkUTTXH3GH_js.buildInnerShadowCssFromShapeStyle(element.shapeStyle);
2453
- const resolvedFillColor = chunkUTTXH3GH_js.colorWithOpacity(fillColor, fillOpacity);
2454
- const resolvedStrokeColor = chunkUTTXH3GH_js.colorWithOpacity(strokeColor, strokeOpacity);
2449
+ const strokeDash = chunkKDW3LLG5_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2450
+ const fillGradient = chunkKDW3LLG5_js.buildCssGradientFromShapeStyle(element.shapeStyle) || element.shapeStyle?.fillGradient;
2451
+ const shadowCss = chunkKDW3LLG5_js.buildShadowCssFromShapeStyle(element.shapeStyle);
2452
+ const innerShadowCss = chunkKDW3LLG5_js.buildInnerShadowCssFromShapeStyle(element.shapeStyle);
2453
+ const resolvedFillColor = chunkKDW3LLG5_js.colorWithOpacity(fillColor, fillOpacity);
2454
+ const resolvedStrokeColor = chunkKDW3LLG5_js.colorWithOpacity(strokeColor, strokeOpacity);
2455
2455
  const ss = element.shapeStyle;
2456
2456
  const hasFillOverlayColor = Boolean(
2457
2457
  ss?.dagFillOverlayColor && ss.dagFillOverlayColor !== "transparent"
2458
2458
  );
2459
2459
  const combinedShadowParts = [];
2460
- const multiLayerShadow = chunkUTTXH3GH_js.buildMultiLayerShadowCss(element.shapeStyle);
2460
+ const multiLayerShadow = chunkKDW3LLG5_js.buildMultiLayerShadowCss(element.shapeStyle);
2461
2461
  if (multiLayerShadow) {
2462
2462
  combinedShadowParts.push(multiLayerShadow);
2463
2463
  } else if (shadowCss) {
@@ -2466,7 +2466,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2466
2466
  if (innerShadowCss) {
2467
2467
  combinedShadowParts.push(innerShadowCss);
2468
2468
  }
2469
- const glowBoxShadow = chunkUTTXH3GH_js.buildGlowBoxShadow(ss?.glowColor, ss?.glowRadius, ss?.glowOpacity);
2469
+ const glowBoxShadow = chunkKDW3LLG5_js.buildGlowBoxShadow(ss?.glowColor, ss?.glowRadius, ss?.glowOpacity);
2470
2470
  if (glowBoxShadow) {
2471
2471
  combinedShadowParts.push(glowBoxShadow);
2472
2472
  }
@@ -2474,7 +2474,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2474
2474
  if (lineShadow) {
2475
2475
  combinedShadowParts.push(lineShadow);
2476
2476
  }
2477
- const compoundLineShadow = chunkUTTXH3GH_js.getCompoundLineBoxShadow(
2477
+ const compoundLineShadow = chunkKDW3LLG5_js.getCompoundLineBoxShadow(
2478
2478
  element.shapeStyle?.compoundLine,
2479
2479
  strokeWidth,
2480
2480
  resolvedStrokeColor
@@ -2487,11 +2487,11 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2487
2487
  if (ss?.glowColor && ss.glowColor !== "transparent" && ss.glowRadius) {
2488
2488
  const glowOpacity = typeof ss.glowOpacity === "number" ? ss.glowOpacity : 0.75;
2489
2489
  const glowRad = Math.round(Math.max(0, ss.glowRadius));
2490
- const glowCol = chunkUTTXH3GH_js.colorWithOpacity(chunkUTTXH3GH_js.normalizeHexColor(ss.glowColor, "#ffff00"), glowOpacity);
2490
+ const glowCol = chunkKDW3LLG5_js.colorWithOpacity(chunkKDW3LLG5_js.normalizeHexColor(ss.glowColor, "#ffff00"), glowOpacity);
2491
2491
  filterParts.push(`drop-shadow(0 0 ${glowRad}px ${glowCol})`);
2492
2492
  }
2493
2493
  if (typeof ss?.softEdgeRadius === "number" && ss.softEdgeRadius > 0) {
2494
- filterParts.push(`url(#${chunkUTTXH3GH_js.getSoftEdgeFilterId(element.id)})`);
2494
+ filterParts.push(`url(#${chunkKDW3LLG5_js.getSoftEdgeFilterId(element.id)})`);
2495
2495
  }
2496
2496
  if (typeof ss?.blurRadius === "number" && ss.blurRadius > 0) {
2497
2497
  filterParts.push(`blur(${Math.round(ss.blurRadius)}px)`);
@@ -2500,13 +2500,13 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2500
2500
  if (lineGlowCss) {
2501
2501
  filterParts.push(lineGlowCss);
2502
2502
  }
2503
- const dagFilter = chunkUTTXH3GH_js.getEffectDagFilter(ss, element.id);
2503
+ const dagFilter = chunkKDW3LLG5_js.getEffectDagFilter(ss, element.id);
2504
2504
  if (dagFilter) {
2505
2505
  filterParts.push(dagFilter);
2506
2506
  }
2507
2507
  const lineJoinCss = ss?.lineJoin === "round" ? "round" : ss?.lineJoin === "bevel" ? "bevel" : ss?.lineJoin === "miter" ? "miter" : void 0;
2508
2508
  const miterLimitCss = ss?.lineJoin === "miter" && typeof ss?.miterLimit === "number" ? Math.max(ss.miterLimit / 1e5, 1) : void 0;
2509
- const patternFill = chunkUTTXH3GH_js.buildPatternFillCss(element.shapeStyle);
2509
+ const patternFill = chunkKDW3LLG5_js.buildPatternFillCss(element.shapeStyle);
2510
2510
  const imageFillUrl = ss?.fillMode === "image" && ss.fillImageUrl ? ss.fillImageUrl : void 0;
2511
2511
  const imageFillMode = ss?.fillImageMode || "stretch";
2512
2512
  let reflectCss;
@@ -2518,14 +2518,30 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2518
2518
  const endOpacity = typeof ss.reflectionEndOpacity === "number" ? ss.reflectionEndOpacity : 0;
2519
2519
  const fadeLength = typeof ss.reflectionEndPosition === "number" ? Math.round(ss.reflectionEndPosition * Math.max(element.height, 1)) : 100;
2520
2520
  const blurRadius = typeof ss.reflectionBlurRadius === "number" ? ss.reflectionBlurRadius : 0;
2521
- reflectCss = chunkUTTXH3GH_js.buildReflectionCss(distance, startOpacity, endOpacity, fadeLength, blurRadius);
2521
+ reflectCss = chunkKDW3LLG5_js.buildReflectionCss(distance, startOpacity, endOpacity, fadeLength, blurRadius);
2522
2522
  }
2523
2523
  }
2524
2524
  const base = {
2525
- backgroundColor: imageFillUrl ? "transparent" : patternFill ? patternFill.backgroundColor : hasFill ? resolvedFillColor : "transparent",
2525
+ // A gradient fill REPLACES the solid fill, it does not sit on top of it.
2526
+ // The parser also records a representative `fillColor`/`fillOpacity` for a
2527
+ // `a:gradFill` (used by thumbnails and the inspector), and painting that as
2528
+ // a `backgroundColor` under the gradient washed the whole shape: wherever
2529
+ // the gradient's own stops were transparent the solid still showed, so a
2530
+ // fade-to-transparent overlay dimmed everything behind it and its edge read
2531
+ // as a hard line. Mirrors the fill precedence in shared's
2532
+ // `getComputedFillStyle` (image -> gradient -> pattern -> solid).
2533
+ backgroundColor: imageFillUrl ? "transparent" : patternFill ? patternFill.backgroundColor : hasFill && !fillGradient ? resolvedFillColor : "transparent",
2526
2534
  backgroundImage: imageFillUrl ? `url(${imageFillUrl})` : patternFill ? patternFill.backgroundImage : hasFill && fillGradient ? fillGradient : void 0,
2527
- backgroundRepeat: imageFillUrl ? imageFillMode === "tile" ? "repeat" : "no-repeat" : patternFill ? "repeat" : void 0,
2528
- backgroundSize: imageFillUrl ? imageFillMode === "tile" ? "auto" : "100% 100%" : patternFill ? "auto" : void 0,
2535
+ backgroundRepeat: imageFillUrl ? imageFillMode === "tile" ? "repeat" : "no-repeat" : patternFill ? "repeat" : hasFill && fillGradient ? "no-repeat" : void 0,
2536
+ backgroundSize: imageFillUrl ? imageFillMode === "tile" ? "auto" : "100% 100%" : patternFill ? "auto" : hasFill && fillGradient ? "100% 100%" : void 0,
2537
+ // The container always carries a 1px border (transparent unless the shape
2538
+ // has a stroke or is hovered) and `box-sizing: border-box`, so the default
2539
+ // `background-origin: padding-box` sizes the paint 2px smaller than the
2540
+ // shape. Combined with the default `background-repeat: repeat` that made a
2541
+ // gradient tile wrap, painting a 1px sliver of its opposite end along the
2542
+ // edge - a fade-to-transparent overlay grew a hard opaque line down its
2543
+ // side. Paint from the border box so the fill matches the shape outline.
2544
+ backgroundOrigin: "border-box",
2529
2545
  backgroundPosition: imageFillUrl ? "center" : void 0,
2530
2546
  boxShadow: combinedBoxShadow,
2531
2547
  WebkitBoxReflect: reflectCss,
@@ -2536,9 +2552,9 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2536
2552
  // is present, `ShapeEffectOverlay` paints a separate blended tint layer so
2537
2553
  // the colour is actually rendered (and text/children are not tinted).
2538
2554
  mixBlendMode: hasFillOverlayColor ? void 0 : mapDagBlendModeToCss(ss?.dagFillOverlayBlend),
2539
- borderWidth: strokeWidth > 0 ? chunkUTTXH3GH_js.getCompoundLineBorderWidth(ss?.compoundLine, strokeWidth) : void 0,
2555
+ borderWidth: strokeWidth > 0 ? chunkKDW3LLG5_js.getCompoundLineBorderWidth(ss?.compoundLine, strokeWidth) : void 0,
2540
2556
  borderColor: strokeWidth > 0 ? resolvedStrokeColor : void 0,
2541
- borderStyle: strokeWidth > 0 ? chunkUTTXH3GH_js.getCssBorderDashStyle(strokeDash, ss?.compoundLine) : void 0,
2557
+ borderStyle: strokeWidth > 0 ? chunkKDW3LLG5_js.getCssBorderDashStyle(strokeDash, ss?.compoundLine) : void 0,
2542
2558
  strokeLinejoin: lineJoinCss,
2543
2559
  strokeMiterlimit: miterLimitCss,
2544
2560
  strokeLinecap: ss?.lineCap === "rnd" ? "round" : ss?.lineCap === "sq" ? "square" : ss?.lineCap === "flat" ? "butt" : void 0
@@ -2594,7 +2610,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2594
2610
  borderWidth: 0,
2595
2611
  borderTopWidth: Math.max(strokeWidth, 2),
2596
2612
  borderTopColor: resolvedStrokeColor,
2597
- borderTopStyle: chunkUTTXH3GH_js.getCssBorderDashStyle(strokeDash)
2613
+ borderTopStyle: chunkKDW3LLG5_js.getCssBorderDashStyle(strokeDash)
2598
2614
  };
2599
2615
  }
2600
2616
  if (normalizedShapeType === "cylinder") {
@@ -2608,13 +2624,13 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2608
2624
  function getConnectorAdjustment(element, key, fallback) {
2609
2625
  const direct = element.shapeAdjustments?.[key];
2610
2626
  if (typeof direct === "number" && Number.isFinite(direct)) {
2611
- return chunkUTTXH3GH_js.clampUnitInterval(direct / 1e5);
2627
+ return chunkKDW3LLG5_js.clampUnitInterval(direct / 1e5);
2612
2628
  }
2613
2629
  const fallbackKey = element.shapeAdjustments?.adj;
2614
2630
  if (typeof fallbackKey === "number" && Number.isFinite(fallbackKey)) {
2615
- return chunkUTTXH3GH_js.clampUnitInterval(fallbackKey / 1e5);
2631
+ return chunkKDW3LLG5_js.clampUnitInterval(fallbackKey / 1e5);
2616
2632
  }
2617
- return chunkUTTXH3GH_js.clampUnitInterval(fallback);
2633
+ return chunkKDW3LLG5_js.clampUnitInterval(fallback);
2618
2634
  }
2619
2635
  function getConnectorPathGeometry(element) {
2620
2636
  const width = Math.max(element.width, 1);
@@ -2751,11 +2767,11 @@ function strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray) {
2751
2767
  strokePaint,
2752
2768
  strokeWidth,
2753
2769
  dashArray,
2754
- lineCap: chunkUTTXH3GH_js.svgLineCap(shapeStyle?.lineCap),
2770
+ lineCap: chunkKDW3LLG5_js.svgLineCap(shapeStyle?.lineCap),
2755
2771
  lineJoin,
2756
2772
  miterLimit,
2757
- offsets: chunkUTTXH3GH_js.getCompoundLineOffsets(shapeStyle?.compoundLine, strokeWidth),
2758
- widths: chunkUTTXH3GH_js.getCompoundLineWidths(shapeStyle?.compoundLine, strokeWidth)
2773
+ offsets: chunkKDW3LLG5_js.getCompoundLineOffsets(shapeStyle?.compoundLine, strokeWidth),
2774
+ widths: chunkKDW3LLG5_js.getCompoundLineWidths(shapeStyle?.compoundLine, strokeWidth)
2759
2775
  };
2760
2776
  }
2761
2777
  function strokeStrands(d, keyBase, ctx) {
@@ -2778,7 +2794,7 @@ function strokeStrands(d, keyBase, ctx) {
2778
2794
  }
2779
2795
  function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredPaths, shapeStyle, hasFill, fillColor, fillOpacity, strokePaint, strokeWidth, dashArray, animatesFill = false) {
2780
2796
  const ctx = strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray);
2781
- const subpaths = structuredPaths && structuredPaths.length > 0 ? chunkCLNGAVNH_js.customGeometryPathsToSvgSubpaths(structuredPaths, pathWidth, pathHeight) : void 0;
2797
+ const subpaths = structuredPaths && structuredPaths.length > 0 ? chunk3TB45PVK_js.customGeometryPathsToSvgSubpaths(structuredPaths, pathWidth, pathHeight) : void 0;
2782
2798
  const needsPerSubpath = subpaths !== void 0 && subpaths.some((sp) => sp.fillMode && sp.fillMode !== "norm" || sp.stroke === false);
2783
2799
  const nodes = [];
2784
2800
  if (subpaths && needsPerSubpath) {
@@ -2809,7 +2825,7 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
2809
2825
  "path",
2810
2826
  {
2811
2827
  d: pathData,
2812
- fill: animatesFill ? "inherit" : chunkUTTXH3GH_js.colorWithOpacity(fillColor, fillOpacity),
2828
+ fill: animatesFill ? "inherit" : chunkKDW3LLG5_js.colorWithOpacity(fillColor, fillOpacity),
2813
2829
  stroke: "none",
2814
2830
  vectorEffect: "non-scaling-stroke"
2815
2831
  },
@@ -2851,14 +2867,14 @@ function renderStrokeOnlyPreset(presetPaths, width, height, shapeStyle, strokePa
2851
2867
  );
2852
2868
  }
2853
2869
  function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor, animatesFill, animatesStroke) {
2854
- if (!chunkCLNGAVNH_js.hasShapeProperties(element)) {
2870
+ if (!chunk3TB45PVK_js.hasShapeProperties(element)) {
2855
2871
  return null;
2856
2872
  }
2857
2873
  const normalizedType = (element.shapeType || "").toLowerCase();
2858
- const fillPaint = animatesFill ? "inherit" : chunkUTTXH3GH_js.colorWithOpacity(fillColor, element.shapeStyle?.fillOpacity);
2859
- const strokePaint = animatesStroke ? "inherit" : chunkUTTXH3GH_js.colorWithOpacity(strokeColor, element.shapeStyle?.strokeOpacity);
2860
- const dashType = chunkUTTXH3GH_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2861
- const dashArray = chunkUTTXH3GH_js.getSvgStrokeDasharray(
2874
+ const fillPaint = animatesFill ? "inherit" : chunkKDW3LLG5_js.colorWithOpacity(fillColor, element.shapeStyle?.fillOpacity);
2875
+ const strokePaint = animatesStroke ? "inherit" : chunkKDW3LLG5_js.colorWithOpacity(strokeColor, element.shapeStyle?.strokeOpacity);
2876
+ const dashType = chunkKDW3LLG5_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2877
+ const dashArray = chunkKDW3LLG5_js.getSvgStrokeDasharray(
2862
2878
  dashType,
2863
2879
  Math.max(strokeWidth, 1),
2864
2880
  element.shapeStyle?.customDashSegments
@@ -2937,18 +2953,18 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2937
2953
  Boolean(animatesFill)
2938
2954
  );
2939
2955
  }
2940
- if (chunkCLNGAVNH_js.isCalloutShape(normalizedType)) {
2956
+ if (chunk3TB45PVK_js.isCalloutShape(normalizedType)) {
2941
2957
  const width = Math.max(element.width, 1);
2942
2958
  const height = Math.max(element.height, 1);
2943
- const geometry = chunkCLNGAVNH_js.getCalloutLeaderLineGeometry(
2959
+ const geometry = chunk3TB45PVK_js.getCalloutLeaderLineGeometry(
2944
2960
  normalizedType,
2945
2961
  width,
2946
2962
  height,
2947
2963
  element.shapeAdjustments
2948
2964
  );
2949
2965
  if (geometry && geometry.points.length >= 2) {
2950
- const leaderPath = chunkCLNGAVNH_js.buildCalloutLeaderLineSvgPath(geometry);
2951
- const bounds = chunkCLNGAVNH_js.getCalloutViewBoxBounds(width, height, geometry);
2966
+ const leaderPath = chunk3TB45PVK_js.buildCalloutLeaderLineSvgPath(geometry);
2967
+ const bounds = chunk3TB45PVK_js.getCalloutViewBoxBounds(width, height, geometry);
2952
2968
  const lineStroke = Math.max(strokeWidth, 1);
2953
2969
  const offsetLeft = bounds.minX;
2954
2970
  const offsetTop = bounds.minY;
@@ -3011,10 +3027,10 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
3011
3027
  const endArrowW = element.shapeStyle?.connectorEndArrowWidth;
3012
3028
  const endArrowL = element.shapeStyle?.connectorEndArrowLength;
3013
3029
  const compoundLine = element.shapeStyle?.compoundLine;
3014
- const connectorLineCap = chunkUTTXH3GH_js.svgLineCap(element.shapeStyle?.lineCap);
3030
+ const connectorLineCap = chunkKDW3LLG5_js.svgLineCap(element.shapeStyle?.lineCap);
3015
3031
  const hitTargetWidth = Math.max(strokeWidth * 3, 12);
3016
- const offsets = chunkUTTXH3GH_js.getCompoundLineOffsets(compoundLine, strokeWidth);
3017
- const widths = chunkUTTXH3GH_js.getCompoundLineWidths(compoundLine, strokeWidth);
3032
+ const offsets = chunkKDW3LLG5_js.getCompoundLineOffsets(compoundLine, strokeWidth);
3033
+ const widths = chunkKDW3LLG5_js.getCompoundLineWidths(compoundLine, strokeWidth);
3018
3034
  return /* @__PURE__ */ jsxRuntime.jsxs(
3019
3035
  "svg",
3020
3036
  {
@@ -3093,15 +3109,15 @@ function parseGradientFillCss(gradFill) {
3093
3109
  }
3094
3110
  const parsed = stops.map((gs) => {
3095
3111
  const pos = Number.parseInt(String(gs["@_pos"] || "0"), 10) / 1e3;
3096
- const color = chunkUTTXH3GH_js.parseDrawingColor(gs) ?? "#888888";
3097
- const opacity = chunkUTTXH3GH_js.parseDrawingColorOpacity(gs);
3098
- return { pos, color: chunkUTTXH3GH_js.colorWithOpacity(color, opacity) };
3112
+ const color = chunkKDW3LLG5_js.parseDrawingColor(gs) ?? "#888888";
3113
+ const opacity = chunkKDW3LLG5_js.parseDrawingColorOpacity(gs);
3114
+ return { pos, color: chunkKDW3LLG5_js.colorWithOpacity(color, opacity) };
3099
3115
  }).sort((a, b) => a.pos - b.pos);
3100
3116
  const stopStrings = parsed.map((s) => `${s.color} ${s.pos.toFixed(1)}%`).join(", ");
3101
3117
  const lin = gradFill["a:lin"];
3102
3118
  if (lin) {
3103
3119
  const angRaw = Number.parseInt(String(lin["@_ang"] || "0"), 10);
3104
- const angleDeg = Math.round(angRaw / 6e4);
3120
+ const angleDeg = Math.round(chunk3TB45PVK_js.ooxmlGradientAngleToCssDegrees(angRaw / 6e4));
3105
3121
  return `linear-gradient(${angleDeg}deg, ${stopStrings})`;
3106
3122
  }
3107
3123
  const path = gradFill["a:path"];
@@ -3136,8 +3152,8 @@ function parsePatternFillCss(pattFill) {
3136
3152
  if (!pattFill) {
3137
3153
  return void 0;
3138
3154
  }
3139
- const fgColor = chunkUTTXH3GH_js.parseDrawingColor(pattFill["a:fgClr"]) ?? "#000000";
3140
- const bgColor = chunkUTTXH3GH_js.parseDrawingColor(pattFill["a:bgClr"]) ?? "#ffffff";
3155
+ const fgColor = chunkKDW3LLG5_js.parseDrawingColor(pattFill["a:fgClr"]) ?? "#000000";
3156
+ const bgColor = chunkKDW3LLG5_js.parseDrawingColor(pattFill["a:bgClr"]) ?? "#ffffff";
3141
3157
  const preset = String(pattFill["@_prst"] || "ltDnDiag");
3142
3158
  switch (preset) {
3143
3159
  case "ltHorz":
@@ -3248,11 +3264,11 @@ function parseCellBorders(cellProperties) {
3248
3264
  const prstDash = ln["a:prstDash"];
3249
3265
  const dashVal = prstDash ? String(prstDash["@_val"] || "") : void 0;
3250
3266
  const cssBorderStyle = ooxmlDashToCss(dashVal);
3251
- const color = chunkUTTXH3GH_js.parseDrawingColor(ln["a:solidFill"]);
3267
+ const color = chunkKDW3LLG5_js.parseDrawingColor(ln["a:solidFill"]);
3252
3268
  if (color) {
3253
- const opacity = chunkUTTXH3GH_js.parseDrawingColorOpacity(ln["a:solidFill"]);
3269
+ const opacity = chunkKDW3LLG5_js.parseDrawingColorOpacity(ln["a:solidFill"]);
3254
3270
  const key = `${edge.prefix}`;
3255
- borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${chunkUTTXH3GH_js.colorWithOpacity(color, opacity)}`;
3271
+ borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${chunkKDW3LLG5_js.colorWithOpacity(color, opacity)}`;
3256
3272
  }
3257
3273
  }
3258
3274
  return borderStyle;
@@ -3265,7 +3281,7 @@ function parseCellTextEffects(runProps) {
3265
3281
  const textShadowParts = [];
3266
3282
  const outerShdw = effectLst["a:outerShdw"];
3267
3283
  if (outerShdw) {
3268
- const shdwColor = chunkUTTXH3GH_js.parseDrawingColor(outerShdw);
3284
+ const shdwColor = chunkKDW3LLG5_js.parseDrawingColor(outerShdw);
3269
3285
  if (shdwColor) {
3270
3286
  const blurRad = Number.parseInt(String(outerShdw["@_blurRad"] || "0"), 10);
3271
3287
  const blurPx = blurRad > 0 ? Math.round(blurRad / 12700) : 0;
@@ -3283,7 +3299,7 @@ function parseCellTextEffects(runProps) {
3283
3299
  }
3284
3300
  const glow = effectLst["a:glow"];
3285
3301
  if (glow) {
3286
- const glowColor = chunkUTTXH3GH_js.parseDrawingColor(glow);
3302
+ const glowColor = chunkKDW3LLG5_js.parseDrawingColor(glow);
3287
3303
  if (glowColor) {
3288
3304
  const glowRad = Number.parseInt(String(glow["@_rad"] || "0"), 10);
3289
3305
  const glowPx = glowRad > 0 ? Math.round(glowRad / 12700) : 2;
@@ -3362,10 +3378,10 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
3362
3378
  if (runProps?.["@_u"] !== void 0) {
3363
3379
  cellStyle.textDecorationLine = runProps["@_u"] === "sng" ? "underline" : "none";
3364
3380
  }
3365
- const runColor = chunkUTTXH3GH_js.parseDrawingColor(runProps?.["a:solidFill"], schemeColorOverrides) || chunkUTTXH3GH_js.parseDrawingColor(runProps?.["a:highlight"], schemeColorOverrides);
3381
+ const runColor = chunkKDW3LLG5_js.parseDrawingColor(runProps?.["a:solidFill"], schemeColorOverrides) || chunkKDW3LLG5_js.parseDrawingColor(runProps?.["a:highlight"], schemeColorOverrides);
3366
3382
  if (runColor) {
3367
- const opacity = chunkUTTXH3GH_js.parseDrawingColorOpacity(runProps?.["a:solidFill"]);
3368
- cellStyle.color = chunkUTTXH3GH_js.colorWithOpacity(runColor, opacity);
3383
+ const opacity = chunkKDW3LLG5_js.parseDrawingColorOpacity(runProps?.["a:solidFill"]);
3384
+ cellStyle.color = chunkKDW3LLG5_js.colorWithOpacity(runColor, opacity);
3369
3385
  }
3370
3386
  const fontFamily = runProps?.["a:latin"]?.["@_typeface"] || runProps?.["a:ea"]?.["@_typeface"] || runProps?.["a:cs"]?.["@_typeface"];
3371
3387
  if (fontFamily) {
@@ -3375,15 +3391,15 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
3375
3391
  cellStyle.textAlign = parseParagraphAlignment(paragraphProperties["@_algn"]);
3376
3392
  }
3377
3393
  const cellProperties = cellXml["a:tcPr"];
3378
- const cellFill = chunkUTTXH3GH_js.parseDrawingColor(
3394
+ const cellFill = chunkKDW3LLG5_js.parseDrawingColor(
3379
3395
  cellProperties?.["a:solidFill"],
3380
3396
  schemeColorOverrides
3381
3397
  );
3382
3398
  if (cellFill) {
3383
- const opacity = chunkUTTXH3GH_js.parseDrawingColorOpacity(
3399
+ const opacity = chunkKDW3LLG5_js.parseDrawingColorOpacity(
3384
3400
  cellProperties?.["a:solidFill"]
3385
3401
  );
3386
- cellStyle.backgroundColor = chunkUTTXH3GH_js.colorWithOpacity(cellFill, opacity);
3402
+ cellStyle.backgroundColor = chunkKDW3LLG5_js.colorWithOpacity(cellFill, opacity);
3387
3403
  } else {
3388
3404
  const gradCss = parseGradientFillCss(cellProperties?.["a:gradFill"]);
3389
3405
  if (gradCss) {
@@ -3398,16 +3414,16 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
3398
3414
  const edgeBorders = parseCellBorders(cellProperties);
3399
3415
  Object.assign(cellStyle, edgeBorders);
3400
3416
  if (!cellStyle.borderLeftColor && !cellStyle.borderRightColor && !cellStyle.borderTopColor && !cellStyle.borderBottomColor) {
3401
- const borderColor = chunkUTTXH3GH_js.parseDrawingColor(
3417
+ const borderColor = chunkKDW3LLG5_js.parseDrawingColor(
3402
3418
  cellProperties?.["a:lnL"]?.["a:solidFill"],
3403
3419
  schemeColorOverrides
3404
- ) || chunkUTTXH3GH_js.parseDrawingColor(
3420
+ ) || chunkKDW3LLG5_js.parseDrawingColor(
3405
3421
  cellProperties?.["a:lnR"]?.["a:solidFill"],
3406
3422
  schemeColorOverrides
3407
- ) || chunkUTTXH3GH_js.parseDrawingColor(
3423
+ ) || chunkKDW3LLG5_js.parseDrawingColor(
3408
3424
  cellProperties?.["a:lnT"]?.["a:solidFill"],
3409
3425
  schemeColorOverrides
3410
- ) || chunkUTTXH3GH_js.parseDrawingColor(
3426
+ ) || chunkKDW3LLG5_js.parseDrawingColor(
3411
3427
  cellProperties?.["a:lnB"]?.["a:solidFill"],
3412
3428
  schemeColorOverrides
3413
3429
  );
@@ -3486,10 +3502,10 @@ function resolveTableStyleFillColor(fill, colorScheme) {
3486
3502
  }
3487
3503
  let color = base;
3488
3504
  if (fill.tint !== void 0 && fill.tint > 0) {
3489
- color = chunkUTTXH3GH_js.tintColor2(color, fill.tint / 1e5);
3505
+ color = chunkKDW3LLG5_js.tintColor2(color, fill.tint / 1e5);
3490
3506
  }
3491
3507
  if (fill.shade !== void 0 && fill.shade > 0) {
3492
- color = chunkUTTXH3GH_js.shadeColor2(color, 1 - fill.shade / 1e5);
3508
+ color = chunkKDW3LLG5_js.shadeColor2(color, 1 - fill.shade / 1e5);
3493
3509
  }
3494
3510
  return color;
3495
3511
  }
@@ -3514,7 +3530,7 @@ function applyTableStyleText(text, colorScheme, style, fontScheme) {
3514
3530
  style.fontFamily = text.fontFace;
3515
3531
  applied = true;
3516
3532
  } else {
3517
- const refFont = chunkUTTXH3GH_js.resolveFontRefIdx(text.fontRefIdx, fontScheme);
3533
+ const refFont = chunkKDW3LLG5_js.resolveFontRefIdx(text.fontRefIdx, fontScheme);
3518
3534
  if (refFont) {
3519
3535
  style.fontFamily = refFont;
3520
3536
  applied = true;
@@ -3525,10 +3541,10 @@ function applyTableStyleText(text, colorScheme, style, fontScheme) {
3525
3541
  if (base) {
3526
3542
  let color = base;
3527
3543
  if (text.fontTint !== void 0 && text.fontTint > 0) {
3528
- color = chunkUTTXH3GH_js.tintColor2(color, text.fontTint / 1e5);
3544
+ color = chunkKDW3LLG5_js.tintColor2(color, text.fontTint / 1e5);
3529
3545
  }
3530
3546
  if (text.fontShade !== void 0 && text.fontShade > 0) {
3531
- color = chunkUTTXH3GH_js.shadeColor2(color, 1 - text.fontShade / 1e5);
3547
+ color = chunkKDW3LLG5_js.shadeColor2(color, 1 - text.fontShade / 1e5);
3532
3548
  }
3533
3549
  style.color = color;
3534
3550
  applied = true;
@@ -3717,7 +3733,7 @@ function parseTableElementData(element, fallbackTextStyle) {
3717
3733
  };
3718
3734
  }
3719
3735
  function getCellDiagonalBorders2(style, tableData, pos, styleCtx) {
3720
- return chunkUTTXH3GH_js.getCellDiagonalBorders(style, tableData, pos, {
3736
+ return chunkKDW3LLG5_js.getCellDiagonalBorders(style, tableData, pos, {
3721
3737
  tableStyleMap: styleCtx?.tableStyleMap,
3722
3738
  colorScheme: styleCtx?.theme?.colorScheme,
3723
3739
  fontScheme: styleCtx?.theme?.fontScheme
@@ -3865,9 +3881,9 @@ function cellStyleToCss(style) {
3865
3881
  if (style.gradientFillCss) {
3866
3882
  css.background = style.gradientFillCss;
3867
3883
  } else if (style.fillMode === "pattern" && style.patternFillPreset) {
3868
- const fg = chunkUTTXH3GH_js.normalizeHexColor(style.patternFillForeground, "#000000");
3869
- const bg = chunkUTTXH3GH_js.normalizeHexColor(style.patternFillBackground, "#ffffff");
3870
- const svgPattern = chunkUTTXH3GH_js.getPatternSvg(style.patternFillPreset, fg, bg);
3884
+ const fg = chunkKDW3LLG5_js.normalizeHexColor(style.patternFillForeground, "#000000");
3885
+ const bg = chunkKDW3LLG5_js.normalizeHexColor(style.patternFillBackground, "#ffffff");
3886
+ const svgPattern = chunkKDW3LLG5_js.getPatternSvg(style.patternFillPreset, fg, bg);
3871
3887
  if (svgPattern) {
3872
3888
  const encoded = encodeURIComponent(svgPattern);
3873
3889
  css.backgroundImage = `url("data:image/svg+xml,${encoded}")`;
@@ -3943,7 +3959,7 @@ function cellStyleToCss(style) {
3943
3959
  if (edge.width || edge.color) {
3944
3960
  const w = edge.width ?? 1;
3945
3961
  const c = edge.color ?? style.borderColor ?? "#000000";
3946
- const s = chunkUTTXH3GH_js.ooxmlDashToCssBorderStyle(edge.dash);
3962
+ const s = chunkKDW3LLG5_js.ooxmlDashToCssBorderStyle(edge.dash);
3947
3963
  css[edge.prefix] = `${w}px ${s} ${c}`;
3948
3964
  }
3949
3965
  }
@@ -3974,7 +3990,7 @@ function cellStyleToCss(style) {
3974
3990
  css.textShadow = textShadowParts.join(", ");
3975
3991
  }
3976
3992
  if (style.cell3D) {
3977
- Object.assign(css, chunkUTTXH3GH_js.cell3DBevelCss(style.cell3D));
3993
+ Object.assign(css, chunkKDW3LLG5_js.cell3DBevelCss(style.cell3D));
3978
3994
  }
3979
3995
  return css;
3980
3996
  }
@@ -3988,7 +4004,7 @@ function TableResizeOverlay({
3988
4004
  const containerRef = React6.useRef(null);
3989
4005
  const [rowBounds, setRowBounds] = React6.useState([]);
3990
4006
  const dragRef = React6.useRef(null);
3991
- const colBoundaries = React6.useMemo(() => chunkUTTXH3GH_js.computeColumnBoundaries(columnWidths), [columnWidths]);
4007
+ const colBoundaries = React6.useMemo(() => chunkKDW3LLG5_js.computeColumnBoundaries(columnWidths), [columnWidths]);
3992
4008
  const measureRows = React6.useCallback(() => {
3993
4009
  const container = containerRef.current;
3994
4010
  if (!container) {
@@ -4035,11 +4051,11 @@ function TableResizeOverlay({
4035
4051
  const rect = containerRef.current.getBoundingClientRect();
4036
4052
  if (drag.type === "col" && drag.initialWidths && onResizeColumns) {
4037
4053
  const deltaProp = (e.clientX - drag.startPos) / rect.width;
4038
- onResizeColumns(chunkUTTXH3GH_js.computeResizedColumnWidths(drag.initialWidths, drag.index, deltaProp));
4054
+ onResizeColumns(chunkKDW3LLG5_js.computeResizedColumnWidths(drag.initialWidths, drag.index, deltaProp));
4039
4055
  } else if (drag.type === "row" && onResizeRow) {
4040
4056
  const deltaY = e.clientY - drag.startPos;
4041
- const newHeight = chunkUTTXH3GH_js.computeResizedRowHeight(
4042
- drag.initialRowHeight ?? chunkUTTXH3GH_js.DEFAULT_ROW_HEIGHT,
4057
+ const newHeight = chunkKDW3LLG5_js.computeResizedRowHeight(
4058
+ drag.initialRowHeight ?? chunkKDW3LLG5_js.DEFAULT_ROW_HEIGHT,
4043
4059
  deltaY
4044
4060
  );
4045
4061
  onResizeRow(drag.index, newHeight);
@@ -4077,7 +4093,7 @@ function TableResizeOverlay({
4077
4093
  e.stopPropagation();
4078
4094
  const table = containerRef.current?.querySelector("table");
4079
4095
  const tr = table?.querySelectorAll("tbody > tr")[index];
4080
- const actualHeight = tr?.offsetHeight ?? chunkUTTXH3GH_js.DEFAULT_ROW_HEIGHT;
4096
+ const actualHeight = tr?.offsetHeight ?? chunkKDW3LLG5_js.DEFAULT_ROW_HEIGHT;
4081
4097
  document.body.style.cursor = "row-resize";
4082
4098
  document.body.style.userSelect = "none";
4083
4099
  dragRef.current = {
@@ -4125,7 +4141,7 @@ function renderTableFromTableData(element, textStyle, options) {
4125
4141
  }
4126
4142
  const first = selectedCell.selectedCells[0];
4127
4143
  const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
4128
- return chunkUTTXH3GH_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableData);
4144
+ return chunkKDW3LLG5_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableData);
4129
4145
  })();
4130
4146
  return /* @__PURE__ */ jsxRuntime.jsx(
4131
4147
  TableResizeOverlay,
@@ -4158,7 +4174,7 @@ function renderTableFromTableData(element, textStyle, options) {
4158
4174
  return null;
4159
4175
  }
4160
4176
  const isCellSelected = selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex;
4161
- const isInMultiSelection = chunkUTTXH3GH_js.isCellInRect(rowIndex, cellIndex, selectionRect);
4177
+ const isInMultiSelection = chunkKDW3LLG5_js.isCellInRect(rowIndex, cellIndex, selectionRect);
4162
4178
  const isCellEditing = isCellSelected && selectedCell?.isEditing;
4163
4179
  const diag = getCellDiagonalBorders2(
4164
4180
  cell.style,
@@ -4188,7 +4204,7 @@ function renderTableFromTableData(element, textStyle, options) {
4188
4204
  }
4189
4205
  event.stopPropagation();
4190
4206
  if (event.shiftKey && selectedCell) {
4191
- const rect = chunkUTTXH3GH_js.computeSelectionRect(
4207
+ const rect = chunkKDW3LLG5_js.computeSelectionRect(
4192
4208
  selectedCell.rowIndex,
4193
4209
  selectedCell.columnIndex,
4194
4210
  rowIndex,
@@ -4198,7 +4214,7 @@ function renderTableFromTableData(element, textStyle, options) {
4198
4214
  options?.onSelectCell?.({
4199
4215
  rowIndex: selectedCell.rowIndex,
4200
4216
  columnIndex: selectedCell.columnIndex,
4201
- selectedCells: chunkUTTXH3GH_js.rectToCells(rect)
4217
+ selectedCells: chunkKDW3LLG5_js.rectToCells(rect)
4202
4218
  });
4203
4219
  } else {
4204
4220
  options?.onSelectCell?.({
@@ -4275,7 +4291,7 @@ function renderTableElement(element, textStyle, options) {
4275
4291
  }
4276
4292
  const first = selectedCell.selectedCells[0];
4277
4293
  const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
4278
- return chunkUTTXH3GH_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableEl.tableData);
4294
+ return chunkKDW3LLG5_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableEl.tableData);
4279
4295
  })();
4280
4296
  const schemeOverrides = options?.styleCtx?.theme?.colorScheme ? options.styleCtx.theme.colorScheme : void 0;
4281
4297
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -4352,7 +4368,7 @@ function renderTableElement(element, textStyle, options) {
4352
4368
  "border px-1 py-0.5 align-top",
4353
4369
  isEditable && hasCellSelectionHandler ? "border-blue-200/70 cursor-cell" : "border-white/30",
4354
4370
  selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex ? "ring-1 ring-inset ring-blue-500" : null,
4355
- chunkUTTXH3GH_js.isCellInRect(rowIndex, cellIndex, xmlSelectionRect) && !(selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex) ? "bg-blue-500/15 ring-1 ring-inset ring-blue-400/50" : null
4371
+ chunkKDW3LLG5_js.isCellInRect(rowIndex, cellIndex, xmlSelectionRect) && !(selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex) ? "bg-blue-500/15 ring-1 ring-inset ring-blue-400/50" : null
4356
4372
  ),
4357
4373
  colSpan,
4358
4374
  rowSpan: rSpan,
@@ -4363,7 +4379,7 @@ function renderTableElement(element, textStyle, options) {
4363
4379
  }
4364
4380
  event.stopPropagation();
4365
4381
  if (event.shiftKey && selectedCell && tableEl.tableData) {
4366
- const rect = chunkUTTXH3GH_js.computeSelectionRect(
4382
+ const rect = chunkKDW3LLG5_js.computeSelectionRect(
4367
4383
  selectedCell.rowIndex,
4368
4384
  selectedCell.columnIndex,
4369
4385
  rowIndex,
@@ -4373,7 +4389,7 @@ function renderTableElement(element, textStyle, options) {
4373
4389
  options?.onSelectCell?.({
4374
4390
  rowIndex: selectedCell.rowIndex,
4375
4391
  columnIndex: selectedCell.columnIndex,
4376
- selectedCells: chunkUTTXH3GH_js.rectToCells(rect)
4392
+ selectedCells: chunkKDW3LLG5_js.rectToCells(rect)
4377
4393
  });
4378
4394
  } else {
4379
4395
  options?.onSelectCell?.({
@@ -4428,24 +4444,24 @@ function renderTableElement(element, textStyle, options) {
4428
4444
  }
4429
4445
  var LEGEND_ITEM_WIDTH = 80;
4430
4446
  function partAttrs(part) {
4431
- return part ? chunkUTTXH3GH_js.chartPartToAttrs(part) : void 0;
4447
+ return part ? chunkKDW3LLG5_js.chartPartToAttrs(part) : void 0;
4432
4448
  }
4433
4449
  function resolveReactPalette(chartData) {
4434
4450
  if (chartData.colorPalette && chartData.colorPalette.length > 0) {
4435
4451
  return chartData.colorPalette;
4436
4452
  }
4437
- return [...chunkUTTXH3GH_js.getChartStylePalette(chartData.style?.styleId)];
4453
+ return [...chunkKDW3LLG5_js.getChartStylePalette(chartData.style?.styleId)];
4438
4454
  }
4439
4455
  function buildReactChartViewModel(element) {
4440
4456
  if (element.type !== "chart" || !element.chartData) {
4441
- return chunkUTTXH3GH_js.buildChartViewModel(element);
4457
+ return chunkKDW3LLG5_js.buildChartViewModel(element);
4442
4458
  }
4443
4459
  const palette = resolveReactPalette(element.chartData);
4444
4460
  const themedElement = {
4445
4461
  ...element,
4446
4462
  chartData: { ...element.chartData, colorPalette: palette }
4447
4463
  };
4448
- return chunkUTTXH3GH_js.buildChartViewModel(themedElement);
4464
+ return chunkKDW3LLG5_js.buildChartViewModel(themedElement);
4449
4465
  }
4450
4466
  function renderPrimitive(prim, key) {
4451
4467
  switch (prim.kind) {
@@ -4834,7 +4850,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4834
4850
  const unmatchedRows = [];
4835
4851
  categories.forEach((cat, i) => {
4836
4852
  const value = values[i] ?? 0;
4837
- const code = chunkUTTXH3GH_js.resolveRegionCode(cat);
4853
+ const code = chunkKDW3LLG5_js.resolveRegionCode(cat);
4838
4854
  if (code) {
4839
4855
  regionValueMap.set(code, { value, label: cat });
4840
4856
  } else {
@@ -4872,8 +4888,8 @@ function renderMapChart(element, chartData, categoryLabels) {
4872
4888
  let fill = "#e2e8f0";
4873
4889
  let dataLabel = null;
4874
4890
  if (entry) {
4875
- const t = chunkUTTXH3GH_js.normalizeValue(entry.value, minVal, maxVal);
4876
- fill = chunkUTTXH3GH_js.sequentialColorScale(t);
4891
+ const t = chunkKDW3LLG5_js.normalizeValue(entry.value, minVal, maxVal);
4892
+ fill = chunkKDW3LLG5_js.sequentialColorScale(t);
4877
4893
  dataLabel = /* @__PURE__ */ jsxRuntime.jsx(
4878
4894
  "text",
4879
4895
  {
@@ -4884,7 +4900,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4884
4900
  fontWeight: 600,
4885
4901
  fill: "#1e293b",
4886
4902
  style: { pointerEvents: "none" },
4887
- children: chunkUTTXH3GH_js.formatAxisValue(entry.value)
4903
+ children: chunkKDW3LLG5_js.formatAxisValue(entry.value)
4888
4904
  },
4889
4905
  `${element.id}-map-dl-${region.code}`
4890
4906
  );
@@ -4902,7 +4918,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4902
4918
  opacity: 0.9,
4903
4919
  children: /* @__PURE__ */ jsxRuntime.jsxs("title", { children: [
4904
4920
  region.name,
4905
- entry ? `: ${chunkUTTXH3GH_js.formatAxisValue(entry.value)}` : ""
4921
+ entry ? `: ${chunkKDW3LLG5_js.formatAxisValue(entry.value)}` : ""
4906
4922
  ] })
4907
4923
  }
4908
4924
  ),
@@ -4940,7 +4956,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4940
4956
  fontSize: 7,
4941
4957
  fill: "#64748b",
4942
4958
  textAnchor: "middle",
4943
- children: chunkUTTXH3GH_js.formatAxisValue(minVal)
4959
+ children: chunkKDW3LLG5_js.formatAxisValue(minVal)
4944
4960
  },
4945
4961
  `${element.id}-map-legend-min`
4946
4962
  ),
@@ -4952,7 +4968,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4952
4968
  fontSize: 7,
4953
4969
  fill: "#64748b",
4954
4970
  textAnchor: "middle",
4955
- children: chunkUTTXH3GH_js.formatAxisValue(maxVal)
4971
+ children: chunkKDW3LLG5_js.formatAxisValue(maxVal)
4956
4972
  },
4957
4973
  `${element.id}-map-legend-max`
4958
4974
  )
@@ -5018,7 +5034,7 @@ function renderMapChart(element, chartData, categoryLabels) {
5018
5034
  y,
5019
5035
  fontSize,
5020
5036
  fill: "#475569",
5021
- children: chunkUTTXH3GH_js.formatAxisValue(row.value)
5037
+ children: chunkKDW3LLG5_js.formatAxisValue(row.value)
5022
5038
  },
5023
5039
  `${element.id}-map-ft-val-${i}`
5024
5040
  )
@@ -5089,7 +5105,7 @@ function renderStackedBarChart(element, _chartData, _categoryLabels) {
5089
5105
 
5090
5106
  // src/viewer/utils/chart-overlay-utils.ts
5091
5107
  function sColor(series, idx) {
5092
- return chunkUTTXH3GH_js.seriesColor(series, idx);
5108
+ return chunkKDW3LLG5_js.seriesColor(series, idx);
5093
5109
  }
5094
5110
  function valToY(val, range, topY, bottomY) {
5095
5111
  const usable = bottomY - topY;
@@ -5628,7 +5644,7 @@ function renderLegend(id, style, series, layout, colorPalette) {
5628
5644
  width: 10,
5629
5645
  height: 10,
5630
5646
  rx: 2,
5631
- fill: chunkUTTXH3GH_js.seriesColor(s, i, style?.styleId, colorPalette)
5647
+ fill: chunkKDW3LLG5_js.seriesColor(s, i, style?.styleId, colorPalette)
5632
5648
  },
5633
5649
  `${id}-leg-r-${i}`
5634
5650
  )
@@ -5652,7 +5668,7 @@ function renderLegend(id, style, series, layout, colorPalette) {
5652
5668
  width: 10,
5653
5669
  height: 10,
5654
5670
  rx: 2,
5655
- fill: chunkUTTXH3GH_js.seriesColor(s, i, style?.styleId, colorPalette)
5671
+ fill: chunkKDW3LLG5_js.seriesColor(s, i, style?.styleId, colorPalette)
5656
5672
  }
5657
5673
  ),
5658
5674
  /* @__PURE__ */ jsxRuntime.jsx("text", { x: x + 14, y: cy + 8, fontSize: 9, fill: "#475569", children: s.name || `Series ${i + 1}` })
@@ -5665,9 +5681,9 @@ function renderGridlines(id, style, range, layout) {
5665
5681
  }
5666
5682
  const lines = [];
5667
5683
  if (range.logScale && range.logBase) {
5668
- const ticks = chunkUTTXH3GH_js.generateLogTicks(range);
5684
+ const ticks = chunkKDW3LLG5_js.generateLogTicks(range);
5669
5685
  ticks.forEach((tickVal, i) => {
5670
- const y = chunkUTTXH3GH_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
5686
+ const y = chunkKDW3LLG5_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
5671
5687
  lines.push(
5672
5688
  /* @__PURE__ */ jsxRuntime.jsx(
5673
5689
  "line",
@@ -5688,7 +5704,7 @@ function renderGridlines(id, style, range, layout) {
5688
5704
  const steps = 4;
5689
5705
  for (let i = 0; i <= steps; i++) {
5690
5706
  const val = range.min + range.span * i / steps;
5691
- const y = chunkUTTXH3GH_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5707
+ const y = chunkKDW3LLG5_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5692
5708
  lines.push(
5693
5709
  /* @__PURE__ */ jsxRuntime.jsx(
5694
5710
  "line",
@@ -5712,9 +5728,9 @@ function renderValueAxis(id, range, layout, axisFormatting) {
5712
5728
  const labels = [];
5713
5729
  const hasDisplayUnits = Boolean(axisFormatting?.displayUnits);
5714
5730
  if (range.logScale && range.logBase) {
5715
- const ticks = chunkUTTXH3GH_js.generateLogTicks(range);
5731
+ const ticks = chunkKDW3LLG5_js.generateLogTicks(range);
5716
5732
  ticks.forEach((tickVal, i) => {
5717
- const y = chunkUTTXH3GH_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
5733
+ const y = chunkKDW3LLG5_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
5718
5734
  labels.push(
5719
5735
  /* @__PURE__ */ jsxRuntime.jsx(
5720
5736
  "text",
@@ -5724,7 +5740,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
5724
5740
  textAnchor: "end",
5725
5741
  fontSize: 8,
5726
5742
  fill: "#64748b",
5727
- children: hasDisplayUnits ? chunkUTTXH3GH_js.formatAxisValueWithUnits(tickVal, axisFormatting) : chunkUTTXH3GH_js.formatAxisValue(tickVal)
5743
+ children: hasDisplayUnits ? chunkKDW3LLG5_js.formatAxisValueWithUnits(tickVal, axisFormatting) : chunkKDW3LLG5_js.formatAxisValue(tickVal)
5728
5744
  },
5729
5745
  `${id}-vaxis-log-${i}`
5730
5746
  )
@@ -5734,7 +5750,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
5734
5750
  const steps = 4;
5735
5751
  for (let i = 0; i <= steps; i++) {
5736
5752
  const val = range.min + range.span * i / steps;
5737
- const y = chunkUTTXH3GH_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5753
+ const y = chunkKDW3LLG5_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5738
5754
  labels.push(
5739
5755
  /* @__PURE__ */ jsxRuntime.jsx(
5740
5756
  "text",
@@ -5744,7 +5760,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
5744
5760
  textAnchor: "end",
5745
5761
  fontSize: 8,
5746
5762
  fill: "#64748b",
5747
- children: hasDisplayUnits ? chunkUTTXH3GH_js.formatAxisValueWithUnits(val, axisFormatting) : chunkUTTXH3GH_js.formatAxisValue(val)
5763
+ children: hasDisplayUnits ? chunkKDW3LLG5_js.formatAxisValueWithUnits(val, axisFormatting) : chunkKDW3LLG5_js.formatAxisValue(val)
5748
5764
  },
5749
5765
  `${id}-vaxis-${i}`
5750
5766
  )
@@ -5752,7 +5768,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
5752
5768
  }
5753
5769
  }
5754
5770
  if (hasDisplayUnits) {
5755
- const unitLabel = chunkUTTXH3GH_js.getDisplayUnitLabel(
5771
+ const unitLabel = chunkKDW3LLG5_js.getDisplayUnitLabel(
5756
5772
  axisFormatting.displayUnits,
5757
5773
  axisFormatting.displayUnitsLabel
5758
5774
  );
@@ -5827,7 +5843,7 @@ function renderZeroLine(id, range, layout) {
5827
5843
  if (range.min >= 0) {
5828
5844
  return null;
5829
5845
  }
5830
- const y = chunkUTTXH3GH_js.valueToY(0, range, layout.plotTop, layout.plotBottom);
5846
+ const y = chunkKDW3LLG5_js.valueToY(0, range, layout.plotTop, layout.plotBottom);
5831
5847
  return /* @__PURE__ */ jsxRuntime.jsx(
5832
5848
  "line",
5833
5849
  {
@@ -5851,7 +5867,7 @@ function renderSecondaryValueAxis(id, range, layout, axisFormatting) {
5851
5867
  const hasDisplayUnits = Boolean(axisFormatting?.displayUnits);
5852
5868
  for (let i = 0; i <= steps; i++) {
5853
5869
  const val = range.min + range.span * i / steps;
5854
- const y = chunkUTTXH3GH_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5870
+ const y = chunkKDW3LLG5_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5855
5871
  labels.push(
5856
5872
  /* @__PURE__ */ jsxRuntime.jsx(
5857
5873
  "text",
@@ -5863,7 +5879,7 @@ function renderSecondaryValueAxis(id, range, layout, axisFormatting) {
5863
5879
  fontFamily,
5864
5880
  fontWeight,
5865
5881
  fill: fontColor,
5866
- children: hasDisplayUnits ? chunkUTTXH3GH_js.formatAxisValueWithUnits(val, axisFormatting) : chunkUTTXH3GH_js.formatAxisValue(val)
5882
+ children: hasDisplayUnits ? chunkKDW3LLG5_js.formatAxisValueWithUnits(val, axisFormatting) : chunkKDW3LLG5_js.formatAxisValue(val)
5867
5883
  },
5868
5884
  `${id}-sec-vaxis-${i}`
5869
5885
  )
@@ -5887,7 +5903,7 @@ function renderSecondaryValueAxis(id, range, layout, axisFormatting) {
5887
5903
  );
5888
5904
  }
5889
5905
  if (hasDisplayUnits) {
5890
- const unitLabel = chunkUTTXH3GH_js.getDisplayUnitLabel(
5906
+ const unitLabel = chunkKDW3LLG5_js.getDisplayUnitLabel(
5891
5907
  axisFormatting.displayUnits,
5892
5908
  axisFormatting.displayUnitsLabel
5893
5909
  );
@@ -5918,7 +5934,7 @@ function renderSecondaryAxisTicks(id, range, layout) {
5918
5934
  const ticks = [];
5919
5935
  for (let i = 0; i <= steps; i++) {
5920
5936
  const val = range.min + range.span * i / steps;
5921
- const y = chunkUTTXH3GH_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5937
+ const y = chunkKDW3LLG5_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5922
5938
  ticks.push(
5923
5939
  /* @__PURE__ */ jsxRuntime.jsx(
5924
5940
  "line",
@@ -5945,7 +5961,7 @@ function renderSecondaryGridlines(id, range, layout, axisFormatting) {
5945
5961
  const gridColor = axisFormatting.majorGridlinesSpPr?.strokeColor ?? "#e2e8f0";
5946
5962
  for (let i = 0; i <= steps; i++) {
5947
5963
  const val = range.min + range.span * i / steps;
5948
- const y = chunkUTTXH3GH_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5964
+ const y = chunkKDW3LLG5_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5949
5965
  lines.push(
5950
5966
  /* @__PURE__ */ jsxRuntime.jsx(
5951
5967
  "line",
@@ -6107,7 +6123,7 @@ function renderChartDataTable(elementId, chartData, svgWidth) {
6107
6123
  width: 8,
6108
6124
  height: 8,
6109
6125
  borderRadius: 2,
6110
- backgroundColor: chunkUTTXH3GH_js.seriesColor(
6126
+ backgroundColor: chunkKDW3LLG5_js.seriesColor(
6111
6127
  s,
6112
6128
  si,
6113
6129
  chartData.style?.styleId,
@@ -6146,8 +6162,8 @@ function renderChartDataTable(elementId, chartData, svgWidth) {
6146
6162
  function renderStockChart(element, chartData, categoryLabels) {
6147
6163
  const style = chartData.style;
6148
6164
  const legendPos = style?.legendPosition || "b";
6149
- const range = chunkUTTXH3GH_js.computeValueRangeForChart(chartData.series, chartData.axes);
6150
- const layout = chunkUTTXH3GH_js.computeLayout(element.width, element.height, style, true, legendPos);
6165
+ const range = chunkKDW3LLG5_js.computeValueRangeForChart(chartData.series, chartData.axes);
6166
+ const layout = chunkKDW3LLG5_js.computeLayout(element.width, element.height, style, true, legendPos);
6151
6167
  const catCount = Math.max(categoryLabels.length, 1);
6152
6168
  const barGroupWidth = layout.plotWidth / catCount;
6153
6169
  const candleWidth = barGroupWidth * 0.5;
@@ -6168,10 +6184,10 @@ function renderStockChart(element, chartData, categoryLabels) {
6168
6184
  const close = closeSeries.values[ci] ?? high;
6169
6185
  const isUp = close >= open;
6170
6186
  const cx = layout.plotLeft + barGroupWidth * ci + barGroupWidth / 2;
6171
- const highY = chunkUTTXH3GH_js.valueToY(high, range, layout.plotTop, layout.plotBottom);
6172
- const lowY = chunkUTTXH3GH_js.valueToY(low, range, layout.plotTop, layout.plotBottom);
6173
- const openY = chunkUTTXH3GH_js.valueToY(open, range, layout.plotTop, layout.plotBottom);
6174
- const closeY = chunkUTTXH3GH_js.valueToY(close, range, layout.plotTop, layout.plotBottom);
6187
+ const highY = chunkKDW3LLG5_js.valueToY(high, range, layout.plotTop, layout.plotBottom);
6188
+ const lowY = chunkKDW3LLG5_js.valueToY(low, range, layout.plotTop, layout.plotBottom);
6189
+ const openY = chunkKDW3LLG5_js.valueToY(open, range, layout.plotTop, layout.plotBottom);
6190
+ const closeY = chunkKDW3LLG5_js.valueToY(close, range, layout.plotTop, layout.plotBottom);
6175
6191
  elements.push(
6176
6192
  /* @__PURE__ */ jsxRuntime.jsx(
6177
6193
  "line",
@@ -6214,7 +6230,7 @@ function renderStockChart(element, chartData, categoryLabels) {
6214
6230
  textAnchor: "middle",
6215
6231
  fontSize: 7,
6216
6232
  fill: "#334155",
6217
- children: chunkUTTXH3GH_js.formatAxisValue(close)
6233
+ children: chunkKDW3LLG5_js.formatAxisValue(close)
6218
6234
  },
6219
6235
  `${element.id}-stock-dl-${ci}`
6220
6236
  )
@@ -6256,7 +6272,7 @@ function FailedToLoad() {
6256
6272
  var LazySurfaceChart3DScene = React6__default.default.lazy(
6257
6273
  async () => {
6258
6274
  try {
6259
- return await import('./SurfaceChart3DScene-EGPAMPX4.js');
6275
+ return await import('./SurfaceChart3DScene-QIREQ66D.js');
6260
6276
  } catch {
6261
6277
  return { default: FailedToLoad };
6262
6278
  }
@@ -6280,7 +6296,7 @@ var SurfaceChart3DErrorBoundary = class extends React6__default.default.Componen
6280
6296
  function buildSurfaceData(chartData, categoryLabels) {
6281
6297
  const rows = chartData.series.length;
6282
6298
  const cols = Math.max(categoryLabels.length, 1);
6283
- const range = chunkUTTXH3GH_js.computeValueRangeForChart(chartData.series, chartData.axes);
6299
+ const range = chunkKDW3LLG5_js.computeValueRangeForChart(chartData.series, chartData.axes);
6284
6300
  const heightMap = new Float32Array(rows * cols);
6285
6301
  const colorMap = new Float32Array(rows * cols * 3);
6286
6302
  for (let r = 0; r < rows; r++) {
@@ -6400,8 +6416,8 @@ function darkenRgb(r, g, b, factor) {
6400
6416
  function renderIsometricSurfaceChart(element, chartData, categoryLabels) {
6401
6417
  const style = chartData.style;
6402
6418
  const legendPos = style?.legendPosition || "b";
6403
- const layout = chunkUTTXH3GH_js.computeLayout(element.width, element.height, style, false, legendPos);
6404
- const range = chunkUTTXH3GH_js.computeValueRangeForChart(chartData.series, chartData.axes);
6419
+ const layout = chunkKDW3LLG5_js.computeLayout(element.width, element.height, style, false, legendPos);
6420
+ const range = chunkKDW3LLG5_js.computeValueRangeForChart(chartData.series, chartData.axes);
6405
6421
  const catCount = Math.max(categoryLabels.length, 1);
6406
6422
  const seriesCount = chartData.series.length;
6407
6423
  const cols = catCount - 1;
@@ -6491,8 +6507,8 @@ function renderIsometricSurfaceChart(element, chartData, categoryLabels) {
6491
6507
  function renderFlatSurfaceChart(element, chartData, categoryLabels) {
6492
6508
  const style = chartData.style;
6493
6509
  const legendPos = style?.legendPosition || "b";
6494
- const layout = chunkUTTXH3GH_js.computeLayout(element.width, element.height, style, true, legendPos);
6495
- const range = chunkUTTXH3GH_js.computeValueRangeForChart(chartData.series, chartData.axes);
6510
+ const layout = chunkKDW3LLG5_js.computeLayout(element.width, element.height, style, true, legendPos);
6511
+ const range = chunkKDW3LLG5_js.computeValueRangeForChart(chartData.series, chartData.axes);
6496
6512
  const catCount = Math.max(categoryLabels.length, 1);
6497
6513
  const seriesCount = chartData.series.length;
6498
6514
  const cellW = layout.plotWidth / Math.max(catCount - 1, 1);
@@ -6555,7 +6571,7 @@ function renderSurfaceChart(element, chartData, categoryLabels) {
6555
6571
  function renderTreemapChart(element, chartData, categoryLabels) {
6556
6572
  const style = chartData.style;
6557
6573
  const legendPos = style?.legendPosition || "b";
6558
- const layout = chunkUTTXH3GH_js.computeLayout(element.width, element.height, style, false, legendPos);
6574
+ const layout = chunkKDW3LLG5_js.computeLayout(element.width, element.height, style, false, legendPos);
6559
6575
  const allValues = chartData.series.flatMap((s) => s.values);
6560
6576
  const totalAbs = allValues.reduce((sum, v) => sum + Math.abs(v), 0) || 1;
6561
6577
  const rects = [];
@@ -6578,7 +6594,7 @@ function renderTreemapChart(element, chartData, categoryLabels) {
6578
6594
  y: curY,
6579
6595
  width: Math.max(w - 1, 1),
6580
6596
  height: Math.max(h - 1, 1),
6581
- fill: chunkUTTXH3GH_js.paletteColor(item.index, chartData.style?.styleId, chartData.colorPalette),
6597
+ fill: chunkKDW3LLG5_js.paletteColor(item.index, chartData.style?.styleId, chartData.colorPalette),
6582
6598
  rx: 2,
6583
6599
  opacity: 0.85
6584
6600
  },
@@ -6631,8 +6647,8 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
6631
6647
  const style = chartData.style;
6632
6648
  const legendPos = style?.legendPosition || "b";
6633
6649
  const values = chartData.series[0]?.values ?? [];
6634
- const range = chunkUTTXH3GH_js.computeValueRangeForChart(chartData.series, chartData.axes);
6635
- const layout = chunkUTTXH3GH_js.computeLayout(element.width, element.height, style, true, legendPos);
6650
+ const range = chunkKDW3LLG5_js.computeValueRangeForChart(chartData.series, chartData.axes);
6651
+ const layout = chunkKDW3LLG5_js.computeLayout(element.width, element.height, style, true, legendPos);
6636
6652
  const catCount = Math.max(categoryLabels.length, values.length, 1);
6637
6653
  const barWidth = layout.plotWidth / catCount * 0.6;
6638
6654
  const gap = layout.plotWidth / catCount * 0.2;
@@ -6643,8 +6659,8 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
6643
6659
  const isLast = i === values.length - 1;
6644
6660
  const startVal = isLast ? 0 : runningTotal;
6645
6661
  const endVal = isLast ? runningTotal + val : runningTotal + val;
6646
- const barStartY = chunkUTTXH3GH_js.valueToY(startVal, range, layout.plotTop, layout.plotBottom);
6647
- const barEndY = chunkUTTXH3GH_js.valueToY(endVal, range, layout.plotTop, layout.plotBottom);
6662
+ const barStartY = chunkKDW3LLG5_js.valueToY(startVal, range, layout.plotTop, layout.plotBottom);
6663
+ const barEndY = chunkKDW3LLG5_js.valueToY(endVal, range, layout.plotTop, layout.plotBottom);
6648
6664
  const x = layout.plotLeft + layout.plotWidth / catCount * i + gap;
6649
6665
  const y = Math.min(barStartY, barEndY);
6650
6666
  const h = Math.max(Math.abs(barEndY - barStartY), 1);
@@ -6673,7 +6689,7 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
6673
6689
  textAnchor: "middle",
6674
6690
  fontSize: 7,
6675
6691
  fill: "#334155",
6676
- children: chunkUTTXH3GH_js.formatAxisValue(isLast ? endVal : val)
6692
+ children: chunkKDW3LLG5_js.formatAxisValue(isLast ? endVal : val)
6677
6693
  },
6678
6694
  `${element.id}-wf-dl-${i}`
6679
6695
  )
@@ -6721,18 +6737,18 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
6721
6737
  function renderComboChart(element, chartData, categoryLabels) {
6722
6738
  const style = chartData.style;
6723
6739
  const legendPos = style?.legendPosition || "b";
6724
- const layoutOpts = chunkUTTXH3GH_js.computeLayoutOptions(
6740
+ const layoutOpts = chunkKDW3LLG5_js.computeLayoutOptions(
6725
6741
  chartData.axes,
6726
6742
  chartData.dataTable,
6727
6743
  chartData.series.length
6728
6744
  );
6729
- const layout = chunkUTTXH3GH_js.computeLayout(element.width, element.height, style, true, legendPos, layoutOpts);
6730
- const { primary, secondary } = chunkUTTXH3GH_js.splitSeriesByAxis(chartData.series, chartData.axes);
6745
+ const layout = chunkKDW3LLG5_js.computeLayout(element.width, element.height, style, true, legendPos, layoutOpts);
6746
+ const { primary, secondary } = chunkKDW3LLG5_js.splitSeriesByAxis(chartData.series, chartData.axes);
6731
6747
  const primarySeries = primary.length > 0 ? primary.map((e) => e.series) : chartData.series;
6732
6748
  const secondarySeries = secondary.map((e) => e.series);
6733
- const range = chunkUTTXH3GH_js.computeValueRangeForChart(primarySeries, chartData.axes);
6734
- const secondaryRange = secondarySeries.length > 0 ? chunkUTTXH3GH_js.computeValueRange(secondarySeries) : void 0;
6735
- const secondaryAxisFmt = chunkUTTXH3GH_js.getSecondaryValueAxis(chartData.axes);
6749
+ const range = chunkKDW3LLG5_js.computeValueRangeForChart(primarySeries, chartData.axes);
6750
+ const secondaryRange = secondarySeries.length > 0 ? chunkKDW3LLG5_js.computeValueRange(secondarySeries) : void 0;
6751
+ const secondaryAxisFmt = chunkKDW3LLG5_js.getSecondaryValueAxis(chartData.axes);
6736
6752
  const catCount = Math.max(categoryLabels.length, 1);
6737
6753
  const barSeriesCount = 1;
6738
6754
  const barGroupWidth = layout.plotWidth / catCount;
@@ -6748,8 +6764,8 @@ function renderComboChart(element, chartData, categoryLabels) {
6748
6764
  const barRange = isBarSecondary && secondaryRange ? secondaryRange : range;
6749
6765
  barSeries.values.forEach((val, vi) => {
6750
6766
  const x = layout.plotLeft + barGroupWidth * vi + barOffset;
6751
- const zeroY = chunkUTTXH3GH_js.valueToY(0, barRange, layout.plotTop, layout.plotBottom);
6752
- const valY = chunkUTTXH3GH_js.valueToY(val, barRange, layout.plotTop, layout.plotBottom);
6767
+ const zeroY = chunkKDW3LLG5_js.valueToY(0, barRange, layout.plotTop, layout.plotBottom);
6768
+ const valY = chunkKDW3LLG5_js.valueToY(val, barRange, layout.plotTop, layout.plotBottom);
6753
6769
  const y = Math.min(zeroY, valY);
6754
6770
  const h = Math.max(Math.abs(zeroY - valY), 1);
6755
6771
  barElements.push(
@@ -6760,7 +6776,7 @@ function renderComboChart(element, chartData, categoryLabels) {
6760
6776
  y,
6761
6777
  width: barWidth,
6762
6778
  height: h,
6763
- fill: chunkUTTXH3GH_js.seriesColor(barSeries, 0, chartData.style?.styleId, chartData.colorPalette),
6779
+ fill: chunkKDW3LLG5_js.seriesColor(barSeries, 0, chartData.style?.styleId, chartData.colorPalette),
6764
6780
  rx: 1
6765
6781
  },
6766
6782
  `${element.id}-combo-bar-${vi}`
@@ -6776,7 +6792,7 @@ function renderComboChart(element, chartData, categoryLabels) {
6776
6792
  textAnchor: "middle",
6777
6793
  fontSize: 7,
6778
6794
  fill: "#334155",
6779
- children: chunkUTTXH3GH_js.formatAxisValue(val)
6795
+ children: chunkKDW3LLG5_js.formatAxisValue(val)
6780
6796
  },
6781
6797
  `${element.id}-combo-bar-dl-${vi}`
6782
6798
  )
@@ -6793,10 +6809,10 @@ function renderComboChart(element, chartData, categoryLabels) {
6793
6809
  const activeRange = isSecondary && secondaryRange ? secondaryRange : range;
6794
6810
  const points = series.values.map((val, vi) => {
6795
6811
  const x = layout.plotLeft + barGroupWidth * vi + barGroupWidth / 2;
6796
- const y = chunkUTTXH3GH_js.valueToY(val, activeRange, layout.plotTop, layout.plotBottom);
6812
+ const y = chunkKDW3LLG5_js.valueToY(val, activeRange, layout.plotTop, layout.plotBottom);
6797
6813
  return { x, y, val };
6798
6814
  });
6799
- const c = chunkUTTXH3GH_js.seriesColor(series, seriesIdx, chartData.style?.styleId, chartData.colorPalette);
6815
+ const c = chunkKDW3LLG5_js.seriesColor(series, seriesIdx, chartData.style?.styleId, chartData.colorPalette);
6800
6816
  lineElements.push(
6801
6817
  /* @__PURE__ */ jsxRuntime.jsx(
6802
6818
  "polyline",
@@ -6823,7 +6839,7 @@ function renderComboChart(element, chartData, categoryLabels) {
6823
6839
  textAnchor: "middle",
6824
6840
  fontSize: 7,
6825
6841
  fill: "#334155",
6826
- children: chunkUTTXH3GH_js.formatAxisValue(p.val)
6842
+ children: chunkKDW3LLG5_js.formatAxisValue(p.val)
6827
6843
  },
6828
6844
  `${element.id}-combo-line-dl-${si}-${vi}`
6829
6845
  )
@@ -7969,14 +7985,14 @@ function buildNotesPdf(pages) {
7969
7985
  notes: page.notes,
7970
7986
  slideNumber: page.slideNumber
7971
7987
  }));
7972
- const bytes = chunkUTTXH3GH_js.buildNotesPdfBytes(images, meta);
7988
+ const bytes = chunkKDW3LLG5_js.buildNotesPdfBytes(images, meta);
7973
7989
  const blob = new Blob([bytes], { type: "application/pdf" });
7974
7990
  return URL.createObjectURL(blob);
7975
7991
  }
7976
7992
 
7977
7993
  // src/viewer/utils/pdf-builder-slides.ts
7978
7994
  function buildPdfFromImageData(images) {
7979
- const bytes = chunkUTTXH3GH_js.buildSlidesPdfBytes(images);
7995
+ const bytes = chunkKDW3LLG5_js.buildSlidesPdfBytes(images);
7980
7996
  const blob = new Blob([bytes], { type: "application/pdf" });
7981
7997
  return URL.createObjectURL(blob);
7982
7998
  }
@@ -7985,7 +8001,7 @@ function buildPdfFromImageData(images) {
7985
8001
  var activePreview = null;
7986
8002
  function startPreviewAnimation(elementId, preset, options) {
7987
8003
  stopPreviewAnimation();
7988
- const descriptor = chunkUTTXH3GH_js.buildPreviewAnimation(preset, options);
8004
+ const descriptor = chunkKDW3LLG5_js.buildPreviewAnimation(preset, options);
7989
8005
  if (!descriptor) {
7990
8006
  return;
7991
8007
  }