pptx-react-viewer 2.4.0 → 2.5.1

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 (102) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/{AiChatPanel-SXYMXFYS.mjs → AiChatPanel-EMF3UYCE.mjs} +3 -3
  3. package/dist/AiChatPanel-EMF3UYCE.mjs.br +0 -0
  4. package/dist/AiChatPanel-EMF3UYCE.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-HLLGXBZF.js → AiChatPanel-OHSLJNYG.js} +22 -22
  6. package/dist/AiChatPanel-OHSLJNYG.js.br +0 -0
  7. package/dist/AiChatPanel-OHSLJNYG.js.gz +0 -0
  8. package/dist/{Model3DScene-ZQBWLAMC.js → Model3DScene-ULHIJPMU.js} +2 -2
  9. package/dist/Model3DScene-ULHIJPMU.js.br +0 -0
  10. package/dist/Model3DScene-ULHIJPMU.js.gz +0 -0
  11. package/dist/{Model3DScene-IECT4RWT.mjs → Model3DScene-X6QJTWHV.mjs} +1 -1
  12. package/dist/{Model3DScene-IECT4RWT.mjs.br → Model3DScene-X6QJTWHV.mjs.br} +0 -0
  13. package/dist/Model3DScene-X6QJTWHV.mjs.gz +0 -0
  14. package/dist/{SurfaceChart3DScene-4KRMRWW6.js → SurfaceChart3DScene-K7Q5NYZ4.js} +2 -2
  15. package/dist/SurfaceChart3DScene-K7Q5NYZ4.js.br +0 -0
  16. package/dist/SurfaceChart3DScene-K7Q5NYZ4.js.gz +0 -0
  17. package/dist/{SurfaceChart3DScene-52C3IMPQ.mjs → SurfaceChart3DScene-PRCKQJQQ.mjs} +1 -1
  18. package/dist/{SurfaceChart3DScene-52C3IMPQ.mjs.br → SurfaceChart3DScene-PRCKQJQQ.mjs.br} +0 -0
  19. package/dist/SurfaceChart3DScene-PRCKQJQQ.mjs.gz +0 -0
  20. package/dist/{chunk-XSBFV6TL.js → chunk-4MYZW7XT.js} +845 -844
  21. package/dist/chunk-4MYZW7XT.js.br +0 -0
  22. package/dist/chunk-4MYZW7XT.js.gz +0 -0
  23. package/dist/{chunk-VEZO33T2.js → chunk-7Q7AEPO7.js} +378 -324
  24. package/dist/chunk-7Q7AEPO7.js.br +0 -0
  25. package/dist/chunk-7Q7AEPO7.js.gz +0 -0
  26. package/dist/{chunk-LRIXPSVT.mjs → chunk-LIQGO45T.mjs} +72 -18
  27. package/dist/chunk-LIQGO45T.mjs.br +0 -0
  28. package/dist/chunk-LIQGO45T.mjs.gz +0 -0
  29. package/dist/{chunk-WK56SFN7.js → chunk-LTEDT475.js} +392 -68
  30. package/dist/chunk-LTEDT475.js.br +0 -0
  31. package/dist/chunk-LTEDT475.js.gz +0 -0
  32. package/dist/{chunk-5GHLRHBR.js → chunk-MJAEB43A.js} +3 -3
  33. package/dist/chunk-MJAEB43A.js.br +0 -0
  34. package/dist/chunk-MJAEB43A.js.gz +0 -0
  35. package/dist/{chunk-5TPQJWEO.js → chunk-NVH3RIN7.js} +271 -279
  36. package/dist/chunk-NVH3RIN7.js.br +0 -0
  37. package/dist/chunk-NVH3RIN7.js.gz +0 -0
  38. package/dist/{chunk-KK7FWBGO.mjs → chunk-SPSGMO5I.mjs} +9 -8
  39. package/dist/chunk-SPSGMO5I.mjs.br +0 -0
  40. package/dist/chunk-SPSGMO5I.mjs.gz +0 -0
  41. package/dist/{chunk-G6Q3NXRV.mjs → chunk-TGVID6BB.mjs} +40 -48
  42. package/dist/chunk-TGVID6BB.mjs.br +0 -0
  43. package/dist/chunk-TGVID6BB.mjs.gz +0 -0
  44. package/dist/{chunk-QBZA2GMB.mjs → chunk-VOV2N3NY.mjs} +388 -69
  45. package/dist/chunk-VOV2N3NY.mjs.br +0 -0
  46. package/dist/chunk-VOV2N3NY.mjs.gz +0 -0
  47. package/dist/{chunk-Q6FC2552.mjs → chunk-WJKMTDXS.mjs} +1 -1
  48. package/dist/chunk-WJKMTDXS.mjs.br +0 -0
  49. package/dist/chunk-WJKMTDXS.mjs.gz +0 -0
  50. package/dist/index.d.ts +33 -0
  51. package/dist/index.js +34 -34
  52. package/dist/index.js.br +0 -0
  53. package/dist/index.js.gz +0 -0
  54. package/dist/index.mjs +5 -5
  55. package/dist/index.mjs.br +0 -0
  56. package/dist/index.mjs.gz +0 -0
  57. package/dist/internals.d.ts +58 -1
  58. package/dist/internals.d.ts.map +1 -1
  59. package/dist/internals.js +78 -78
  60. package/dist/internals.js.br +0 -0
  61. package/dist/internals.js.gz +0 -0
  62. package/dist/internals.mjs +3 -3
  63. package/dist/internals.mjs.br +0 -0
  64. package/dist/internals.mjs.gz +0 -0
  65. package/dist/viewer/index.d.ts +33 -0
  66. package/dist/viewer/index.js +21 -21
  67. package/dist/viewer/index.js.br +0 -0
  68. package/dist/viewer/index.js.gz +0 -0
  69. package/dist/viewer/index.mjs +5 -5
  70. package/dist/viewer/index.mjs.br +0 -0
  71. package/dist/viewer/index.mjs.gz +0 -0
  72. package/package.json +1 -1
  73. package/dist/AiChatPanel-HLLGXBZF.js.br +0 -0
  74. package/dist/AiChatPanel-HLLGXBZF.js.gz +0 -0
  75. package/dist/AiChatPanel-SXYMXFYS.mjs.br +0 -0
  76. package/dist/AiChatPanel-SXYMXFYS.mjs.gz +0 -0
  77. package/dist/Model3DScene-IECT4RWT.mjs.gz +0 -0
  78. package/dist/Model3DScene-ZQBWLAMC.js.br +0 -0
  79. package/dist/Model3DScene-ZQBWLAMC.js.gz +0 -0
  80. package/dist/SurfaceChart3DScene-4KRMRWW6.js.br +0 -0
  81. package/dist/SurfaceChart3DScene-4KRMRWW6.js.gz +0 -0
  82. package/dist/SurfaceChart3DScene-52C3IMPQ.mjs.gz +0 -0
  83. package/dist/chunk-5GHLRHBR.js.br +0 -0
  84. package/dist/chunk-5GHLRHBR.js.gz +0 -0
  85. package/dist/chunk-5TPQJWEO.js.br +0 -0
  86. package/dist/chunk-5TPQJWEO.js.gz +0 -0
  87. package/dist/chunk-G6Q3NXRV.mjs.br +0 -0
  88. package/dist/chunk-G6Q3NXRV.mjs.gz +0 -0
  89. package/dist/chunk-KK7FWBGO.mjs.br +0 -0
  90. package/dist/chunk-KK7FWBGO.mjs.gz +0 -0
  91. package/dist/chunk-LRIXPSVT.mjs.br +0 -0
  92. package/dist/chunk-LRIXPSVT.mjs.gz +0 -0
  93. package/dist/chunk-Q6FC2552.mjs.br +0 -0
  94. package/dist/chunk-Q6FC2552.mjs.gz +0 -0
  95. package/dist/chunk-QBZA2GMB.mjs.br +0 -0
  96. package/dist/chunk-QBZA2GMB.mjs.gz +0 -0
  97. package/dist/chunk-VEZO33T2.js.br +0 -0
  98. package/dist/chunk-VEZO33T2.js.gz +0 -0
  99. package/dist/chunk-WK56SFN7.js.br +0 -0
  100. package/dist/chunk-WK56SFN7.js.gz +0 -0
  101. package/dist/chunk-XSBFV6TL.js.br +0 -0
  102. package/dist/chunk-XSBFV6TL.js.gz +0 -0
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var chunk25VSL2BB_js = require('./chunk-25VSL2BB.js');
4
- var chunkWK56SFN7_js = require('./chunk-WK56SFN7.js');
4
+ var chunkLTEDT475_js = require('./chunk-LTEDT475.js');
5
5
  var clsx = require('clsx');
6
6
  var tailwindMerge = require('tailwind-merge');
7
7
  var React6 = require('react');
@@ -15,7 +15,7 @@ var React6__default = /*#__PURE__*/_interopDefault(React6);
15
15
 
16
16
  // src/viewer/utils/animation-effects.ts
17
17
  function getAnimationInitialStyle2(preset, nativeAnimation) {
18
- return chunkWK56SFN7_js.getAnimationInitialStyle(preset, nativeAnimation);
18
+ return chunkLTEDT475_js.getAnimationInitialStyle(preset, nativeAnimation);
19
19
  }
20
20
  function cn(...inputs) {
21
21
  return tailwindMerge.twMerge(clsx.clsx(inputs));
@@ -23,7 +23,7 @@ function cn(...inputs) {
23
23
 
24
24
  // src/viewer/utils/clone.ts
25
25
  function cloneHistorySnapshot2(snapshot) {
26
- return chunkWK56SFN7_js.cloneHistorySnapshot(snapshot);
26
+ return chunkLTEDT475_js.cloneHistorySnapshot(snapshot);
27
27
  }
28
28
 
29
29
  // src/viewer/constants/scalar.ts
@@ -133,7 +133,7 @@ var GLYPH_COMPONENTS = {
133
133
  plus: lu.LuPlus,
134
134
  triangle: lu.LuTriangle
135
135
  };
136
- var SHAPE_PRESETS = chunkWK56SFN7_js.SHAPE_PRESET_DEFS.map(
136
+ var SHAPE_PRESETS = chunkLTEDT475_js.SHAPE_PRESET_DEFS.map(
137
137
  (def) => ({
138
138
  type: def.type,
139
139
  label: def.label,
@@ -251,7 +251,7 @@ function isConnectorOrLineElement(element) {
251
251
  if (element.type === "connector") {
252
252
  return true;
253
253
  }
254
- if (!chunkWK56SFN7_js.hasShapeProperties(element)) {
254
+ if (!chunkLTEDT475_js.hasShapeProperties(element)) {
255
255
  return false;
256
256
  }
257
257
  const st = getShapeType(element.shapeType);
@@ -262,12 +262,12 @@ function isConnectorOrLineElement(element) {
262
262
  function partitionTemplateElements(slides) {
263
263
  const templateElementsBySlideId = {};
264
264
  const nextSlides = slides.map((slide) => {
265
- const template = slide.elements.filter((el) => chunkWK56SFN7_js.isTemplateElement(el));
265
+ const template = slide.elements.filter((el) => chunkLTEDT475_js.isTemplateElement(el));
266
266
  if (template.length === 0) {
267
267
  return slide;
268
268
  }
269
269
  templateElementsBySlideId[slide.id] = template;
270
- return { ...slide, elements: slide.elements.filter((el) => !chunkWK56SFN7_js.isTemplateElement(el)) };
270
+ return { ...slide, elements: slide.elements.filter((el) => !chunkLTEDT475_js.isTemplateElement(el)) };
271
271
  });
272
272
  return { slides: nextSlides, templateElementsBySlideId };
273
273
  }
@@ -283,7 +283,7 @@ function buildSaveSlides(slides, templateElementsBySlideId) {
283
283
 
284
284
  // src/viewer/utils/image-style.ts
285
285
  function getImageMaskStyle(element) {
286
- if (!chunkWK56SFN7_js.hasShapeProperties(element)) {
286
+ if (!chunkLTEDT475_js.hasShapeProperties(element)) {
287
287
  return void 0;
288
288
  }
289
289
  const shapeType = element.shapeType;
@@ -292,7 +292,7 @@ function getImageMaskStyle(element) {
292
292
  }
293
293
  const normalized = shapeType.toLowerCase();
294
294
  if (normalized === "roundrect" || normalized === "round1rect" || normalized === "round2samerect" || normalized === "round2diagrect" || normalized === "sniproundrect" || normalized === "snip1rect" || normalized === "snip2diagrect") {
295
- const radiusPx = chunkWK56SFN7_js.getRoundRectRadiusPx(element);
295
+ const radiusPx = chunkLTEDT475_js.getRoundRectRadiusPx(element);
296
296
  if (radiusPx <= 0.01) {
297
297
  return void 0;
298
298
  }
@@ -304,7 +304,7 @@ function getImageMaskStyle(element) {
304
304
  if (normalized === "can" || normalized === "cylinder") {
305
305
  return { borderRadius: "48% / 12%" };
306
306
  }
307
- const clipPath = chunkWK56SFN7_js.getResolvedShapeClipPath(element);
307
+ const clipPath = chunkLTEDT475_js.getResolvedShapeClipPath(element);
308
308
  if (!clipPath) {
309
309
  return void 0;
310
310
  }
@@ -312,7 +312,7 @@ function getImageMaskStyle(element) {
312
312
  }
313
313
  function getImageRenderStyle(element) {
314
314
  const maskStyle = getImageMaskStyle(element) || {};
315
- if (!chunkWK56SFN7_js.isImageLikeElement(element)) {
315
+ if (!chunkLTEDT475_js.isImageLikeElement(element)) {
316
316
  return {
317
317
  ...maskStyle,
318
318
  width: "100%",
@@ -320,10 +320,10 @@ function getImageRenderStyle(element) {
320
320
  objectFit: "cover"
321
321
  };
322
322
  }
323
- const cropLeft = chunkWK56SFN7_js.clampCropValue(element.cropLeft);
324
- const cropTop = chunkWK56SFN7_js.clampCropValue(element.cropTop);
325
- const cropRight = chunkWK56SFN7_js.clampCropValue(element.cropRight);
326
- const cropBottom = chunkWK56SFN7_js.clampCropValue(element.cropBottom);
323
+ const cropLeft = chunkLTEDT475_js.clampCropValue(element.cropLeft);
324
+ const cropTop = chunkLTEDT475_js.clampCropValue(element.cropTop);
325
+ const cropRight = chunkLTEDT475_js.clampCropValue(element.cropRight);
326
+ const cropBottom = chunkLTEDT475_js.clampCropValue(element.cropBottom);
327
327
  const hasCrop = cropLeft + cropRight > 1e-4 || cropTop + cropBottom > 1e-4;
328
328
  if (!hasCrop) {
329
329
  return {
@@ -335,10 +335,10 @@ function getImageRenderStyle(element) {
335
335
  }
336
336
  const safeHorizontalScale = cropLeft + cropRight >= 0.99 ? 0.99 / (cropLeft + cropRight) : 1;
337
337
  const safeVerticalScale = cropTop + cropBottom >= 0.99 ? 0.99 / (cropTop + cropBottom) : 1;
338
- const normalizedLeft = chunkWK56SFN7_js.clampCropValue(cropLeft * safeHorizontalScale);
339
- const normalizedRight = chunkWK56SFN7_js.clampCropValue(cropRight * safeHorizontalScale);
340
- const normalizedTop = chunkWK56SFN7_js.clampCropValue(cropTop * safeVerticalScale);
341
- const normalizedBottom = chunkWK56SFN7_js.clampCropValue(cropBottom * safeVerticalScale);
338
+ const normalizedLeft = chunkLTEDT475_js.clampCropValue(cropLeft * safeHorizontalScale);
339
+ const normalizedRight = chunkLTEDT475_js.clampCropValue(cropRight * safeHorizontalScale);
340
+ const normalizedTop = chunkLTEDT475_js.clampCropValue(cropTop * safeVerticalScale);
341
+ const normalizedBottom = chunkLTEDT475_js.clampCropValue(cropBottom * safeVerticalScale);
342
342
  const remainingWidth = Math.max(0.01, 1 - normalizedLeft - normalizedRight);
343
343
  const remainingHeight = Math.max(0.01, 1 - normalizedTop - normalizedBottom);
344
344
  const tx = Math.round(-normalizedLeft / remainingWidth * 1e4) / 100;
@@ -367,7 +367,7 @@ var CROP_SHAPE_CLIP_PATHS = {
367
367
  star: "polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%)"
368
368
  };
369
369
  function getCropShapeClipPath(element) {
370
- if (!chunkWK56SFN7_js.isImageLikeElement(element)) {
370
+ if (!chunkLTEDT475_js.isImageLikeElement(element)) {
371
371
  return void 0;
372
372
  }
373
373
  const shape = element.cropShape;
@@ -377,7 +377,7 @@ function getCropShapeClipPath(element) {
377
377
  return CROP_SHAPE_CLIP_PATHS[shape];
378
378
  }
379
379
  function isImageTiled(element) {
380
- if (!chunkWK56SFN7_js.isImageLikeElement(element)) {
380
+ if (!chunkLTEDT475_js.isImageLikeElement(element)) {
381
381
  return false;
382
382
  }
383
383
  return typeof element.tileScaleX === "number" || typeof element.tileScaleY === "number";
@@ -435,7 +435,7 @@ function buildMirrorTiledBackground(src, flip, scaleX, scaleY) {
435
435
  };
436
436
  }
437
437
  function getImageTilingStyle(element) {
438
- if (!chunkWK56SFN7_js.isImageLikeElement(element) || !isImageTiled(element)) {
438
+ if (!chunkLTEDT475_js.isImageLikeElement(element) || !isImageTiled(element)) {
439
439
  return void 0;
440
440
  }
441
441
  const scaleX = typeof element.tileScaleX === "number" ? element.tileScaleX * 100 : 100;
@@ -719,7 +719,7 @@ function executeMediaCommand(command) {
719
719
  if (!el) {
720
720
  return false;
721
721
  }
722
- const parsed = chunkWK56SFN7_js.parseMediaCommand(command.command);
722
+ const parsed = chunkLTEDT475_js.parseMediaCommand(command.command);
723
723
  if (!parsed) {
724
724
  return false;
725
725
  }
@@ -1171,7 +1171,7 @@ function renderMediaElement(element, mediaDataUrls, options) {
1171
1171
 
1172
1172
  // src/viewer/utils/text-utils.tsx
1173
1173
  function getTextStyleForElement(element, fallbackColor) {
1174
- if (!chunkWK56SFN7_js.hasTextProperties(element)) {
1174
+ if (!chunkLTEDT475_js.hasTextProperties(element)) {
1175
1175
  return { color: fallbackColor };
1176
1176
  }
1177
1177
  const textDecorationTokens = [];
@@ -1185,20 +1185,20 @@ function getTextStyleForElement(element, fallbackColor) {
1185
1185
  const textDecorationStyle = isDoubleStrike ? "double" : void 0;
1186
1186
  const hasItalicRuns = element.textStyle?.italic || Boolean(element.textSegments?.some((segment) => segment.style?.italic));
1187
1187
  const isRtl = element.textStyle?.rtl === true;
1188
- const resolvedTextColor = element.textStyle?.hyperlink ? chunkWK56SFN7_js.normalizeHexColor(element.textStyle?.color, HYPERLINK_COLOR) : chunkWK56SFN7_js.normalizeHexColor(element.textStyle?.color, fallbackColor);
1188
+ const resolvedTextColor = element.textStyle?.hyperlink ? chunkLTEDT475_js.normalizeHexColor(element.textStyle?.color, HYPERLINK_COLOR) : chunkLTEDT475_js.normalizeHexColor(element.textStyle?.color, fallbackColor);
1189
1189
  const bodyTop = element.textStyle?.bodyInsetTop ?? DEFAULT_BODY_INSET_TB_PX;
1190
1190
  const bodyBottom = element.textStyle?.bodyInsetBottom ?? DEFAULT_BODY_INSET_TB_PX;
1191
1191
  const bodyLeft = element.textStyle?.bodyInsetLeft ?? DEFAULT_BODY_INSET_LR_PX;
1192
1192
  const bodyRight = element.textStyle?.bodyInsetRight ?? DEFAULT_BODY_INSET_LR_PX;
1193
- const writingMode = chunkWK56SFN7_js.toCssWritingMode(element.textStyle?.textDirection);
1194
- const textOrientation = chunkWK56SFN7_js.toCssTextOrientation(element.textStyle?.textDirection);
1195
- const verticalDirection = chunkWK56SFN7_js.toCssVerticalDirection(element.textStyle?.textDirection);
1193
+ const writingMode = chunkLTEDT475_js.toCssWritingMode(element.textStyle?.textDirection);
1194
+ const textOrientation = chunkLTEDT475_js.toCssTextOrientation(element.textStyle?.textDirection);
1195
+ const verticalDirection = chunkLTEDT475_js.toCssVerticalDirection(element.textStyle?.textDirection);
1196
1196
  const resolvedDirection = verticalDirection || (isRtl ? "rtl" : "ltr");
1197
1197
  const resolvedUnicodeBidi = isRtl ? "plaintext" : void 0;
1198
1198
  const hasSegments = (element.textSegments?.length ?? 0) > 0;
1199
1199
  return {
1200
1200
  color: resolvedTextColor,
1201
- backgroundColor: !hasSegments && element.textStyle?.highlightColor ? chunkWK56SFN7_js.normalizeHexColor(element.textStyle.highlightColor, void 0) : void 0,
1201
+ backgroundColor: !hasSegments && element.textStyle?.highlightColor ? chunkLTEDT475_js.normalizeHexColor(element.textStyle.highlightColor, void 0) : void 0,
1202
1202
  textAlign: (() => {
1203
1203
  const a = element.textStyle?.align;
1204
1204
  if (a === "justLow" || a === "dist" || a === "thaiDist") {
@@ -1214,7 +1214,7 @@ function getTextStyleForElement(element, fallbackColor) {
1214
1214
  textDecorationLine: textDecorationTokens.length > 0 ? textDecorationTokens.join(" ") : "none",
1215
1215
  textDecorationStyle,
1216
1216
  fontFamily: element.textStyle?.fontFamily || DEFAULT_FONT_FAMILY,
1217
- lineHeight: chunkWK56SFN7_js.resolveLineHeight(element.textStyle, hasItalicRuns),
1217
+ lineHeight: chunkLTEDT475_js.resolveLineHeight(element.textStyle, hasItalicRuns),
1218
1218
  paddingTop: bodyTop + (hasItalicRuns ? 1 : 0),
1219
1219
  paddingBottom: bodyBottom + (hasItalicRuns ? 1 : 0),
1220
1220
  paddingLeft: bodyLeft + (element.textStyle?.paragraphMarginLeft || 0),
@@ -1227,7 +1227,7 @@ function getTextStyleForElement(element, fallbackColor) {
1227
1227
  // Auto-fit: use OOXML-provided fontScale/lnSpcReduction when available,
1228
1228
  // otherwise fall back to heuristic estimation. The pure font-scale maths
1229
1229
  // now lives in pptx-viewer-shared (computeAutoFitTextStyle).
1230
- ...chunkWK56SFN7_js.computeAutoFitTextStyle({
1230
+ ...chunkLTEDT475_js.computeAutoFitTextStyle({
1231
1231
  textStyle: element.textStyle,
1232
1232
  text: element.text ?? "",
1233
1233
  width: element.width,
@@ -1261,13 +1261,13 @@ function computeTabSize(tabStops, defaultTabSize) {
1261
1261
  return avgGap > 0 ? `${Math.round(avgGap)}px` : fromDefault;
1262
1262
  }
1263
1263
  function getTextLayoutStyle(element) {
1264
- if (!chunkWK56SFN7_js.hasTextProperties(element)) {
1264
+ if (!chunkLTEDT475_js.hasTextProperties(element)) {
1265
1265
  return {};
1266
1266
  }
1267
1267
  const verticalAlign = element.textStyle?.vAlign || "top";
1268
- const writingMode = chunkWK56SFN7_js.toCssWritingMode(element.textStyle?.textDirection);
1269
- const textOrientation = chunkWK56SFN7_js.toCssTextOrientation(element.textStyle?.textDirection);
1270
- const verticalDirection = chunkWK56SFN7_js.toCssVerticalDirection(element.textStyle?.textDirection);
1268
+ const writingMode = chunkLTEDT475_js.toCssWritingMode(element.textStyle?.textDirection);
1269
+ const textOrientation = chunkLTEDT475_js.toCssTextOrientation(element.textStyle?.textDirection);
1270
+ const verticalDirection = chunkLTEDT475_js.toCssVerticalDirection(element.textStyle?.textDirection);
1271
1271
  const parsedColumnCount = Number(element.textStyle?.columnCount);
1272
1272
  const columnCount = Number.isFinite(parsedColumnCount) ? Math.max(1, Math.min(16, Math.round(parsedColumnCount))) : 1;
1273
1273
  const hasColumns = columnCount > 1;
@@ -1275,7 +1275,7 @@ function getTextLayoutStyle(element) {
1275
1275
  const tabStops = element.textStyle?.tabStops;
1276
1276
  const tabSize = computeTabSize(tabStops, element.textStyle?.defaultTabSize);
1277
1277
  const textWrapNone = element.textStyle?.textWrap === "none";
1278
- const hasParagraphIndents = chunkWK56SFN7_js.hasTextProperties(element) && element.paragraphIndents && element.paragraphIndents.length > 0;
1278
+ const hasParagraphIndents = chunkLTEDT475_js.hasTextProperties(element) && element.paragraphIndents && element.paragraphIndents.length > 0;
1279
1279
  const paragraphMarginLeft = element.textStyle?.paragraphMarginLeft;
1280
1280
  const paragraphIndent = element.textStyle?.paragraphIndent;
1281
1281
  const marginLeft = !hasParagraphIndents && typeof paragraphMarginLeft === "number" && paragraphMarginLeft !== 0 ? paragraphMarginLeft : void 0;
@@ -1284,7 +1284,7 @@ function getTextLayoutStyle(element) {
1284
1284
  const bodyBottom = element.textStyle?.bodyInsetBottom ?? DEFAULT_BODY_INSET_TB_PX;
1285
1285
  const parsedColumnSpacing = Number(element.textStyle?.columnSpacing);
1286
1286
  const columnGap = Number.isFinite(parsedColumnSpacing) && parsedColumnSpacing > 0 ? `${parsedColumnSpacing}px` : "0.75em";
1287
- const kinsokuStyles = chunkWK56SFN7_js.getKinsokuLineBreakStyles(element.textStyle);
1287
+ const kinsokuStyles = chunkLTEDT475_js.getKinsokuLineBreakStyles(element.textStyle);
1288
1288
  if (hasColumns) {
1289
1289
  return {
1290
1290
  display: "block",
@@ -1331,10 +1331,10 @@ function getTextLayoutStyle(element) {
1331
1331
 
1332
1332
  // src/viewer/utils/text-effects.tsx
1333
1333
  function buildTextFillCss2(style) {
1334
- return chunkWK56SFN7_js.buildTextFillCss(style);
1334
+ return chunkLTEDT475_js.buildTextFillCss(style);
1335
1335
  }
1336
1336
  function buildTextBody3DSceneStyle2(textStyle) {
1337
- return chunkWK56SFN7_js.buildTextBody3DSceneStyle(textStyle);
1337
+ return chunkLTEDT475_js.buildTextBody3DSceneStyle(textStyle);
1338
1338
  }
1339
1339
 
1340
1340
  // src/viewer/utils/text-warp-css.tsx
@@ -1515,63 +1515,40 @@ function buildAnimStyle(state) {
1515
1515
  }
1516
1516
  return Object.keys(style).length > 0 ? style : void 0;
1517
1517
  }
1518
- function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, paraSegments, subElementAnimStates) {
1518
+ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, paraSegments, subElementAnimStates, renderPiece) {
1519
1519
  if (!subElementAnimStates || subElementAnimStates.size === 0) {
1520
1520
  return renderedSegments;
1521
1521
  }
1522
- const paraKey = `${elementId}${chunkWK56SFN7_js.TEXT_BUILD_ID_SEP}p${paraIndex}`;
1522
+ const paraKey = `${elementId}${chunkLTEDT475_js.TEXT_BUILD_ID_SEP}p${paraIndex}`;
1523
1523
  const paraState = subElementAnimStates.get(paraKey);
1524
1524
  if (paraState) {
1525
1525
  const style = buildAnimStyle(paraState);
1526
1526
  return /* @__PURE__ */ jsxRuntime.jsx("span", { "data-anim-id": paraKey, style: { display: "inline", ...style }, children: renderedSegments }, paraKey);
1527
1527
  }
1528
- const firstWordKey = `${elementId}${chunkWK56SFN7_js.TEXT_BUILD_ID_SEP}w${paraIndex}-0`;
1529
- if (subElementAnimStates.has(firstWordKey)) {
1530
- return wrapByWord(elementId, paraIndex, paraSegments, subElementAnimStates);
1531
- }
1532
- const firstCharKey = `${elementId}${chunkWK56SFN7_js.TEXT_BUILD_ID_SEP}c${paraIndex}-0`;
1533
- if (subElementAnimStates.has(firstCharKey)) {
1534
- return wrapByChar(elementId, paraIndex, paraSegments, subElementAnimStates);
1528
+ const spec = chunkLTEDT475_js.buildTextBuildSpec(
1529
+ elementId,
1530
+ paraIndex,
1531
+ paraSegments.map((entry) => ({ text: entry.segment.text, style: entry })),
1532
+ subElementAnimStates
1533
+ );
1534
+ if (!spec?.spans) {
1535
+ return renderedSegments;
1535
1536
  }
1536
- return renderedSegments;
1537
- }
1538
- function wrapByWord(elementId, paraIndex, paraSegments, states) {
1539
- const fullText = paraSegments.map((e) => e.segment.text).join("");
1540
- const words = fullText.split(/(\s+)/);
1541
- let wordIdx = 0;
1542
- const nodes = [];
1543
- for (let i = 0; i < words.length; i++) {
1544
- const w = words[i];
1545
- if (!w) {
1546
- continue;
1547
- }
1548
- const isWhitespace = /^\s+$/.test(w);
1549
- if (isWhitespace) {
1550
- nodes.push(/* @__PURE__ */ jsxRuntime.jsx(React6__default.default.Fragment, { children: w }, `ws-${i}`));
1551
- continue;
1537
+ return spec.spans.map((span, index) => {
1538
+ const content = span.style && renderPiece ? renderPiece(span.style, span.text) : span.text;
1539
+ if (!span.animId) {
1540
+ return /* @__PURE__ */ jsxRuntime.jsx(React6__default.default.Fragment, { children: content }, `ws-${index}`);
1552
1541
  }
1553
- const key = `${elementId}${chunkWK56SFN7_js.TEXT_BUILD_ID_SEP}w${paraIndex}-${wordIdx}`;
1554
- const state = states.get(key);
1555
- const style = buildAnimStyle(state);
1556
- nodes.push(
1557
- /* @__PURE__ */ jsxRuntime.jsx("span", { "data-anim-id": key, style: { display: "inline", ...style }, children: w }, key)
1558
- );
1559
- wordIdx++;
1560
- }
1561
- return nodes;
1562
- }
1563
- function wrapByChar(elementId, paraIndex, paraSegments, states) {
1564
- const fullText = paraSegments.map((e) => e.segment.text).join("");
1565
- const nodes = [];
1566
- for (let i = 0; i < fullText.length; i++) {
1567
- const key = `${elementId}${chunkWK56SFN7_js.TEXT_BUILD_ID_SEP}c${paraIndex}-${i}`;
1568
- const state = states.get(key);
1569
- const style = buildAnimStyle(state);
1570
- nodes.push(
1571
- /* @__PURE__ */ jsxRuntime.jsx("span", { "data-anim-id": key, style: { display: "inline", ...style }, children: fullText[i] }, key)
1542
+ return /* @__PURE__ */ jsxRuntime.jsx(
1543
+ "span",
1544
+ {
1545
+ "data-anim-id": span.animId,
1546
+ style: chunkLTEDT475_js.textBuildSpanStyle(span),
1547
+ children: content
1548
+ },
1549
+ span.animId
1572
1550
  );
1573
- }
1574
- return nodes;
1551
+ });
1575
1552
  }
1576
1553
  var EPS = 0.01;
1577
1554
  var FALLBACK_STEP_PX = 48;
@@ -1710,10 +1687,10 @@ function renderScriptAwareText(text, needsScriptFonts, scriptFonts, baseFontFami
1710
1687
  if (!needsScriptFonts || !text) {
1711
1688
  return text;
1712
1689
  }
1713
- const runs = chunkWK56SFN7_js.segmentByScript(text);
1690
+ const runs = chunkLTEDT475_js.segmentByScript(text);
1714
1691
  if (runs.length <= 1) {
1715
1692
  if (runs.length === 1) {
1716
- const font = chunkWK56SFN7_js.resolveFontForScript(runs[0].script, scriptFonts);
1693
+ const font = chunkLTEDT475_js.resolveFontForScript(runs[0].script, scriptFonts);
1717
1694
  if (font && font !== baseFontFamily) {
1718
1695
  return /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontFamily: font }, children: text });
1719
1696
  }
@@ -1721,7 +1698,7 @@ function renderScriptAwareText(text, needsScriptFonts, scriptFonts, baseFontFami
1721
1698
  return text;
1722
1699
  }
1723
1700
  return runs.map((run, i) => {
1724
- const font = chunkWK56SFN7_js.resolveFontForScript(run.script, scriptFonts);
1701
+ const font = chunkLTEDT475_js.resolveFontForScript(run.script, scriptFonts);
1725
1702
  if (!font || font === baseFontFamily) {
1726
1703
  return /* @__PURE__ */ jsxRuntime.jsx(React6__default.default.Fragment, { children: run.text }, `${keyPrefix}-r${i}`);
1727
1704
  }
@@ -1793,8 +1770,8 @@ function renderSegmentContent(elementId, segmentIndex, textValue, lines, needsSc
1793
1770
  );
1794
1771
  }
1795
1772
  function renderEquationSegment(elementId, segmentIndex, equationXml, equationNumber) {
1796
- const mathml = chunkWK56SFN7_js.convertOmmlToMathMl(equationXml);
1797
- const safeMathml = mathml ? chunkWK56SFN7_js.sanitizeMathMl(mathml) : "";
1773
+ const mathml = chunkLTEDT475_js.convertOmmlToMathMl(equationXml);
1774
+ const safeMathml = mathml ? chunkLTEDT475_js.sanitizeMathMl(mathml) : "";
1798
1775
  const equationContent = safeMathml ? /* @__PURE__ */ jsxRuntime.jsx(
1799
1776
  "span",
1800
1777
  {
@@ -1844,7 +1821,7 @@ function renderEquationSegment(elementId, segmentIndex, equationXml, equationNum
1844
1821
  return /* @__PURE__ */ jsxRuntime.jsx("span", { children: equationContent }, `${elementId}-seg-${segmentIndex}`);
1845
1822
  }
1846
1823
  function renderPictureBullet(elementId, segmentIndex, bulletInfo, baseFontSize) {
1847
- const picture = chunkWK56SFN7_js.resolvePictureBullet(bulletInfo, baseFontSize) ?? {
1824
+ const picture = chunkLTEDT475_js.resolvePictureBullet(bulletInfo, baseFontSize) ?? {
1848
1825
  sizePx: baseFontSize,
1849
1826
  fallbackMarker: "\u2022",
1850
1827
  accessibleLabel: "Bullet"
@@ -1894,7 +1871,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1894
1871
  );
1895
1872
  }
1896
1873
  const segmentStyle = segment.style || {};
1897
- const textValue = chunkWK56SFN7_js.substituteFieldText(segment.text || "", segment.fieldType, fieldContext);
1874
+ const textValue = chunkLTEDT475_js.substituteFieldText(segment.text || "", segment.fieldType, fieldContext);
1898
1875
  const lines = textValue.split("\n");
1899
1876
  const textDecorationTokens = [];
1900
1877
  if (segmentStyle.underline || segmentStyle.hyperlink) {
@@ -1904,8 +1881,8 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1904
1881
  textDecorationTokens.push("line-through");
1905
1882
  }
1906
1883
  const isDoubleStrike = segmentStyle.strikethrough && segmentStyle.strikeType === "dblStrike";
1907
- const resolvedSegmentColor = segmentStyle.hyperlink ? chunkWK56SFN7_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, HYPERLINK_COLOR) : chunkWK56SFN7_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, fallbackColor);
1908
- const underlineDecoration = chunkWK56SFN7_js.resolveUnderlineDecorationStyle(
1884
+ const resolvedSegmentColor = segmentStyle.hyperlink ? chunkLTEDT475_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, HYPERLINK_COLOR) : chunkLTEDT475_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, fallbackColor);
1885
+ const underlineDecoration = chunkLTEDT475_js.resolveUnderlineDecorationStyle(
1909
1886
  Boolean(isDoubleStrike),
1910
1887
  segmentStyle.underlineStyle
1911
1888
  );
@@ -1921,14 +1898,14 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1921
1898
  const baseFontSizePt = baseFontSize * (72 / 96);
1922
1899
  const fontKerning = typeof segmentStyle.kerning === "number" ? segmentStyle.kerning === 0 ? "none" : baseFontSizePt >= segmentStyle.kerning / 100 ? "normal" : "none" : void 0;
1923
1900
  const rawFontFamily = segmentStyle.fontFamily || element.textStyle?.fontFamily;
1924
- const baseFontFamily = rawFontFamily ? chunkWK56SFN7_js.getSubstituteFontFamily(rawFontFamily) : DEFAULT_FONT_FAMILY;
1901
+ const baseFontFamily = rawFontFamily ? chunkLTEDT475_js.getSubstituteFontFamily(rawFontFamily) : DEFAULT_FONT_FAMILY;
1925
1902
  const scriptFonts = {
1926
1903
  latin: baseFontFamily,
1927
1904
  eastAsia: segmentStyle.eastAsiaFont || element.textStyle?.eastAsiaFont || baseFontFamily,
1928
1905
  complexScript: segmentStyle.complexScriptFont || element.textStyle?.complexScriptFont || baseFontFamily,
1929
1906
  symbol: segmentStyle.symbolFont || element.textStyle?.symbolFont || baseFontFamily
1930
1907
  };
1931
- const needsScriptFonts = chunkWK56SFN7_js.hasDistinctScriptFonts(scriptFonts);
1908
+ const needsScriptFonts = chunkLTEDT475_js.hasDistinctScriptFonts(scriptFonts);
1932
1909
  const spanStyle = {
1933
1910
  color: resolvedSegmentColor,
1934
1911
  fontSize: baseFontSize * baselineFontScale,
@@ -1946,15 +1923,15 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1946
1923
  fontVariantCaps: segmentStyle.textCaps === "small" ? "small-caps" : void 0,
1947
1924
  letterSpacing,
1948
1925
  fontKerning,
1949
- backgroundColor: textFillStyles ? void 0 : segmentStyle.highlightColor ? chunkWK56SFN7_js.normalizeHexColor(segmentStyle.highlightColor, "transparent") : void 0,
1926
+ backgroundColor: textFillStyles ? void 0 : segmentStyle.highlightColor ? chunkLTEDT475_js.normalizeHexColor(segmentStyle.highlightColor, "transparent") : void 0,
1950
1927
  ...textFillStyles,
1951
- textDecorationColor: segmentStyle.underlineColor ? chunkWK56SFN7_js.normalizeHexColor(segmentStyle.underlineColor, void 0) : void 0,
1952
- WebkitTextStroke: segmentStyle.textOutlineWidth && segmentStyle.textOutlineColor ? `${segmentStyle.textOutlineWidth}px ${chunkWK56SFN7_js.normalizeHexColor(segmentStyle.textOutlineColor, "#000000")}` : segmentStyle.textOutlineWidth ? `${segmentStyle.textOutlineWidth}px currentColor` : void 0,
1928
+ textDecorationColor: segmentStyle.underlineColor ? chunkLTEDT475_js.normalizeHexColor(segmentStyle.underlineColor, void 0) : void 0,
1929
+ WebkitTextStroke: segmentStyle.textOutlineWidth && segmentStyle.textOutlineColor ? `${segmentStyle.textOutlineWidth}px ${chunkLTEDT475_js.normalizeHexColor(segmentStyle.textOutlineColor, "#000000")}` : segmentStyle.textOutlineWidth ? `${segmentStyle.textOutlineWidth}px currentColor` : void 0,
1953
1930
  paintOrder: segmentStyle.textOutlineWidth ? "stroke fill" : void 0,
1954
- textShadow: chunkWK56SFN7_js.buildTextShadowCss(segmentStyle),
1955
- filter: chunkWK56SFN7_js.buildTextRunFilterChain(segmentStyle),
1956
- opacity: chunkWK56SFN7_js.getTextAlphaOpacity(segmentStyle),
1957
- WebkitBoxReflect: chunkWK56SFN7_js.buildTextReflectionCss(segmentStyle)
1931
+ textShadow: chunkLTEDT475_js.buildTextShadowCss(segmentStyle),
1932
+ filter: chunkLTEDT475_js.buildTextRunFilterChain(segmentStyle),
1933
+ opacity: chunkLTEDT475_js.getTextAlphaOpacity(segmentStyle),
1934
+ WebkitBoxReflect: chunkLTEDT475_js.buildTextReflectionCss(segmentStyle)
1958
1935
  };
1959
1936
  const runRtl = segmentStyle.rtl;
1960
1937
  if (runRtl !== void 0 && runRtl !== paragraphRtl) {
@@ -1974,7 +1951,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1974
1951
  spanStyle.fontSize = baseFontSize * (bulletInfo.sizePercent / 100) * baselineFontScale;
1975
1952
  }
1976
1953
  if (bulletInfo.color) {
1977
- spanStyle.color = chunkWK56SFN7_js.normalizeHexColor(bulletInfo.color, resolvedSegmentColor);
1954
+ spanStyle.color = chunkLTEDT475_js.normalizeHexColor(bulletInfo.color, resolvedSegmentColor);
1978
1955
  }
1979
1956
  }
1980
1957
  if (bulletInfo?.imageDataUrl || bulletInfo?.imageRelId) {
@@ -2014,7 +1991,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
2014
1991
  textAlign: segment.rubyAlignment === "l" ? "left" : segment.rubyAlignment === "r" ? "right" : segment.rubyAlignment === "dist" || segment.rubyAlignment === "distCat" || segment.rubyAlignment === "distLetter" ? "justify" : "center"
2015
1992
  };
2016
1993
  if (segment.rubyStyle?.color) {
2017
- rubyStyle.color = chunkWK56SFN7_js.normalizeHexColor(segment.rubyStyle.color, resolvedSegmentColor);
1994
+ rubyStyle.color = chunkLTEDT475_js.normalizeHexColor(segment.rubyStyle.color, resolvedSegmentColor);
2018
1995
  }
2019
1996
  innerContent = /* @__PURE__ */ jsxRuntime.jsxs("ruby", { children: [
2020
1997
  baseContent,
@@ -2109,7 +2086,7 @@ function groupSegmentsIntoParagraphs(segments) {
2109
2086
  return paragraphs;
2110
2087
  }
2111
2088
  function renderTextSegments(element, fallbackColor, emptyFallback, findHighlights, onHyperlinkClick, fieldContext, subElementAnimStates, segmentOverrides, requireCtrlClick) {
2112
- if (!chunkWK56SFN7_js.hasTextProperties(element)) {
2089
+ if (!chunkLTEDT475_js.hasTextProperties(element)) {
2113
2090
  return emptyFallback || null;
2114
2091
  }
2115
2092
  const effectiveSegments = segmentOverrides ?? element.textSegments;
@@ -2130,10 +2107,10 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
2130
2107
  return element.text || emptyFallback || "";
2131
2108
  }
2132
2109
  const paragraphs = groupSegmentsIntoParagraphs(effectiveSegments);
2133
- const paragraphIndents = chunkWK56SFN7_js.hasTextProperties(element) ? element.paragraphIndents : void 0;
2134
- const elementRtl = chunkWK56SFN7_js.hasTextProperties(element) ? element.textStyle?.rtl : void 0;
2135
- const elementAlign = chunkWK56SFN7_js.hasTextProperties(element) ? element.textStyle?.align : void 0;
2136
- const bodyStyle = chunkWK56SFN7_js.hasTextProperties(element) ? element.textStyle : void 0;
2110
+ const paragraphIndents = chunkLTEDT475_js.hasTextProperties(element) ? element.paragraphIndents : void 0;
2111
+ const elementRtl = chunkLTEDT475_js.hasTextProperties(element) ? element.textStyle?.rtl : void 0;
2112
+ const elementAlign = chunkLTEDT475_js.hasTextProperties(element) ? element.textStyle?.align : void 0;
2113
+ const bodyStyle = chunkLTEDT475_js.hasTextProperties(element) ? element.textStyle : void 0;
2137
2114
  const spaceFirstLast = bodyStyle?.spaceFirstLastParagraph !== false;
2138
2115
  return paragraphs.map((paraSegments, paraIndex) => {
2139
2116
  const paraIndent = paragraphIndents?.[paraIndex];
@@ -2148,14 +2125,14 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
2148
2125
  return Boolean(segment.text) && segment.text.trim().length > 0;
2149
2126
  });
2150
2127
  const hasBullet = bulletInfo && !bulletInfo.none && hasVisibleTextContent;
2151
- const paraRtl = chunkWK56SFN7_js.resolveParagraphRtl(paraSegments, elementRtl);
2128
+ const paraRtl = chunkLTEDT475_js.resolveParagraphRtl(paraSegments, elementRtl);
2152
2129
  const isRtlParagraph = paraRtl === true;
2153
- const paraAlign = chunkWK56SFN7_js.resolveParagraphAlign(paraSegments, elementAlign);
2154
- const cssTextAlign = chunkWK56SFN7_js.resolveCssTextAlign(paraAlign, isRtlParagraph);
2130
+ const paraAlign = chunkLTEDT475_js.resolveParagraphAlign(paraSegments, elementAlign);
2131
+ const cssTextAlign = chunkLTEDT475_js.resolveCssTextAlign(paraAlign, isRtlParagraph);
2155
2132
  const paraMarginLeft = isRtlParagraph ? void 0 : rawMarginLeft;
2156
2133
  const paraMarginRight = isRtlParagraph ? rawMarginLeft : void 0;
2157
2134
  const paraTextIndent = rawTextIndent;
2158
- const paraKinsokuStyle = chunkWK56SFN7_js.getKinsokuLineBreakStyles(firstSeg?.segment.style);
2135
+ const paraKinsokuStyle = chunkLTEDT475_js.getKinsokuLineBreakStyles(firstSeg?.segment.style);
2159
2136
  const hasParaKinsoku = Object.keys(paraKinsokuStyle).length > 0;
2160
2137
  const paraProps = effectiveSegments[firstSeg?.globalIndex ?? -1]?.paragraphProperties;
2161
2138
  const spacing = resolveParagraphSpacing({
@@ -2219,7 +2196,22 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
2219
2196
  paraIndex,
2220
2197
  renderedSegments,
2221
2198
  paraSegments,
2222
- subElementAnimStates
2199
+ subElementAnimStates,
2200
+ // A staged build splits the paragraph but must not flatten it: each
2201
+ // piece is re-rendered through the SAME segment renderer, so it keeps
2202
+ // its run's font, size, colour and decoration while it animates.
2203
+ ({ segment, globalIndex }, text) => renderSingleSegment(
2204
+ element,
2205
+ { ...segment, text },
2206
+ globalIndex,
2207
+ fallbackColor,
2208
+ findHighlights,
2209
+ void 0,
2210
+ onHyperlinkClick,
2211
+ fieldContext,
2212
+ paraRtl,
2213
+ requireCtrlClick
2214
+ )
2223
2215
  );
2224
2216
  if (!needsWrapper) {
2225
2217
  return /* @__PURE__ */ jsxRuntime.jsxs(React6__default.default.Fragment, { children: [
@@ -2242,13 +2234,13 @@ function hexToRgbUnit(hex) {
2242
2234
  };
2243
2235
  }
2244
2236
  function getDuotoneColors(element) {
2245
- if (!chunkWK56SFN7_js.isImageLikeElement(element)) {
2237
+ if (!chunkLTEDT475_js.isImageLikeElement(element)) {
2246
2238
  return void 0;
2247
2239
  }
2248
2240
  return element.imageEffects?.duotone;
2249
2241
  }
2250
2242
  function buildLineShadowCss(element) {
2251
- if (!chunkWK56SFN7_js.hasShapeProperties(element)) {
2243
+ if (!chunkLTEDT475_js.hasShapeProperties(element)) {
2252
2244
  return void 0;
2253
2245
  }
2254
2246
  const ss = element.shapeStyle;
@@ -2259,13 +2251,13 @@ function buildLineShadowCss(element) {
2259
2251
  const offsetY = typeof ss.lineShadowOffsetY === "number" ? ss.lineShadowOffsetY : 2;
2260
2252
  const blur = typeof ss.lineShadowBlur === "number" ? Math.max(0, ss.lineShadowBlur) : 4;
2261
2253
  const opacity = typeof ss.lineShadowOpacity === "number" ? Math.max(0, Math.min(1, ss.lineShadowOpacity)) : 0.35;
2262
- return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${chunkWK56SFN7_js.colorWithOpacity(
2263
- chunkWK56SFN7_js.normalizeHexColor(ss.lineShadowColor, "#000000"),
2254
+ return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${chunkLTEDT475_js.colorWithOpacity(
2255
+ chunkLTEDT475_js.normalizeHexColor(ss.lineShadowColor, "#000000"),
2264
2256
  opacity
2265
2257
  )}`;
2266
2258
  }
2267
2259
  function buildLineGlowFilter(element) {
2268
- if (!chunkWK56SFN7_js.hasShapeProperties(element)) {
2260
+ if (!chunkLTEDT475_js.hasShapeProperties(element)) {
2269
2261
  return void 0;
2270
2262
  }
2271
2263
  const ss = element.shapeStyle;
@@ -2274,7 +2266,7 @@ function buildLineGlowFilter(element) {
2274
2266
  }
2275
2267
  const glowOpacity = typeof ss.lineGlowOpacity === "number" ? ss.lineGlowOpacity : 0.75;
2276
2268
  const glowRad = Math.round(Math.max(0, ss.lineGlowRadius));
2277
- const glowCol = chunkWK56SFN7_js.colorWithOpacity(chunkWK56SFN7_js.normalizeHexColor(ss.lineGlowColor, "#ffff00"), glowOpacity);
2269
+ const glowCol = chunkLTEDT475_js.colorWithOpacity(chunkLTEDT475_js.normalizeHexColor(ss.lineGlowColor, "#ffff00"), glowOpacity);
2278
2270
  return `drop-shadow(0 0 ${glowRad}px ${glowCol})`;
2279
2271
  }
2280
2272
  function mapDagBlendModeToCss(blend) {
@@ -2298,7 +2290,7 @@ function getDagDuotoneFilterId(elementId) {
2298
2290
  return `dag-duotone-${elementId}`;
2299
2291
  }
2300
2292
  function hasDagDuotoneEffect(element) {
2301
- if (!chunkWK56SFN7_js.hasShapeProperties(element)) {
2293
+ if (!chunkLTEDT475_js.hasShapeProperties(element)) {
2302
2294
  return false;
2303
2295
  }
2304
2296
  return Boolean(element.shapeStyle?.dagDuotone);
@@ -2361,7 +2353,7 @@ function getRoundRectRadiusPx2(element) {
2361
2353
 
2362
2354
  // src/viewer/utils/shape-visual-3d.ts
2363
2355
  function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elementHeight) {
2364
- return chunkWK56SFN7_js.build3DExtrusionData(
2356
+ return chunkLTEDT475_js.build3DExtrusionData(
2365
2357
  shape3d,
2366
2358
  scene3d,
2367
2359
  fillColor,
@@ -2370,7 +2362,7 @@ function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elemen
2370
2362
  );
2371
2363
  }
2372
2364
  function apply3dEffects2(base, scene3d, shape3d, fillColorFallback) {
2373
- chunkWK56SFN7_js.apply3dEffects(base, scene3d, shape3d, fillColorFallback);
2365
+ chunkLTEDT475_js.apply3dEffects(base, scene3d, shape3d, fillColorFallback);
2374
2366
  }
2375
2367
 
2376
2368
  // src/viewer/utils/vector-subpath-paint.ts
@@ -2379,7 +2371,7 @@ function toHexByte(value) {
2379
2371
  return clamped.toString(16).padStart(2, "0");
2380
2372
  }
2381
2373
  function shiftHex(hex, factor, towardsWhite) {
2382
- const channels = chunkWK56SFN7_js.hexToRgbChannels(hex);
2374
+ const channels = chunkLTEDT475_js.hexToRgbChannels(hex);
2383
2375
  if (!channels) {
2384
2376
  return hex;
2385
2377
  }
@@ -2405,13 +2397,13 @@ function buildCustomSubpathPaints(subpaths, hasFill, fillColor, fillOpacity) {
2405
2397
  const fillOff = subpath.fillMode === "none" || !hasFill;
2406
2398
  return {
2407
2399
  d: subpath.d,
2408
- fill: fillOff ? "none" : chunkWK56SFN7_js.colorWithOpacity(adjustFillForMode(fillColor, subpath.fillMode), fillOpacity),
2400
+ fill: fillOff ? "none" : chunkLTEDT475_js.colorWithOpacity(adjustFillForMode(fillColor, subpath.fillMode), fillOpacity),
2409
2401
  stroked: subpath.stroke !== false
2410
2402
  };
2411
2403
  });
2412
2404
  }
2413
2405
  function getStrokeOnlyPresetPaths(element) {
2414
- if (element.type !== "shape" || !chunkWK56SFN7_js.hasShapeProperties(element)) {
2406
+ if (element.type !== "shape" || !chunkLTEDT475_js.hasShapeProperties(element)) {
2415
2407
  return void 0;
2416
2408
  }
2417
2409
  const shapeType = element.shapeType;
@@ -2421,7 +2413,7 @@ function getStrokeOnlyPresetPaths(element) {
2421
2413
  if (element.pathData) {
2422
2414
  return void 0;
2423
2415
  }
2424
- const result = chunkWK56SFN7_js.evaluatePresetShape(
2416
+ const result = chunkLTEDT475_js.evaluatePresetShape(
2425
2417
  shapeType,
2426
2418
  Math.max(element.width, 1),
2427
2419
  Math.max(element.height, 1),
@@ -2436,27 +2428,27 @@ function getStrokeOnlyPresetPaths(element) {
2436
2428
 
2437
2429
  // src/viewer/utils/shape-visual-style.ts
2438
2430
  function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeColor, animatesFill, animatesStroke) {
2439
- if (!chunkWK56SFN7_js.hasShapeProperties(element)) {
2431
+ if (!chunkLTEDT475_js.hasShapeProperties(element)) {
2440
2432
  return {};
2441
2433
  }
2442
2434
  const normalizedShapeType = getShapeType(element.shapeType);
2443
- const clipPath = chunkWK56SFN7_js.getResolvedShapeClipPath(element);
2435
+ const clipPath = chunkLTEDT475_js.getResolvedShapeClipPath(element);
2444
2436
  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;
2445
2437
  const rendersStrokeOnlyPreset = Boolean(getStrokeOnlyPresetPaths(element));
2446
2438
  const fillOpacity = element.shapeStyle?.fillOpacity;
2447
2439
  const strokeOpacity = element.shapeStyle?.strokeOpacity;
2448
- const strokeDash = chunkWK56SFN7_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2449
- const fillGradient = chunkWK56SFN7_js.buildCssGradientFromShapeStyle(element.shapeStyle) || element.shapeStyle?.fillGradient;
2450
- const shadowCss = chunkWK56SFN7_js.buildShadowCssFromShapeStyle(element.shapeStyle);
2451
- const innerShadowCss = chunkWK56SFN7_js.buildInnerShadowCssFromShapeStyle(element.shapeStyle);
2452
- const resolvedFillColor = chunkWK56SFN7_js.colorWithOpacity(fillColor, fillOpacity);
2453
- const resolvedStrokeColor = chunkWK56SFN7_js.colorWithOpacity(strokeColor, strokeOpacity);
2440
+ const strokeDash = chunkLTEDT475_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2441
+ const fillGradient = chunkLTEDT475_js.buildCssGradientFromShapeStyle(element.shapeStyle) || element.shapeStyle?.fillGradient;
2442
+ const shadowCss = chunkLTEDT475_js.buildShadowCssFromShapeStyle(element.shapeStyle);
2443
+ const innerShadowCss = chunkLTEDT475_js.buildInnerShadowCssFromShapeStyle(element.shapeStyle);
2444
+ const resolvedFillColor = chunkLTEDT475_js.colorWithOpacity(fillColor, fillOpacity);
2445
+ const resolvedStrokeColor = chunkLTEDT475_js.colorWithOpacity(strokeColor, strokeOpacity);
2454
2446
  const ss = element.shapeStyle;
2455
2447
  const hasFillOverlayColor = Boolean(
2456
2448
  ss?.dagFillOverlayColor && ss.dagFillOverlayColor !== "transparent"
2457
2449
  );
2458
2450
  const combinedShadowParts = [];
2459
- const multiLayerShadow = chunkWK56SFN7_js.buildMultiLayerShadowCss(element.shapeStyle);
2451
+ const multiLayerShadow = chunkLTEDT475_js.buildMultiLayerShadowCss(element.shapeStyle);
2460
2452
  if (multiLayerShadow) {
2461
2453
  combinedShadowParts.push(multiLayerShadow);
2462
2454
  } else if (shadowCss) {
@@ -2465,7 +2457,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2465
2457
  if (innerShadowCss) {
2466
2458
  combinedShadowParts.push(innerShadowCss);
2467
2459
  }
2468
- const glowBoxShadow = chunkWK56SFN7_js.buildGlowBoxShadow(ss?.glowColor, ss?.glowRadius, ss?.glowOpacity);
2460
+ const glowBoxShadow = chunkLTEDT475_js.buildGlowBoxShadow(ss?.glowColor, ss?.glowRadius, ss?.glowOpacity);
2469
2461
  if (glowBoxShadow) {
2470
2462
  combinedShadowParts.push(glowBoxShadow);
2471
2463
  }
@@ -2473,7 +2465,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2473
2465
  if (lineShadow) {
2474
2466
  combinedShadowParts.push(lineShadow);
2475
2467
  }
2476
- const compoundLineShadow = chunkWK56SFN7_js.getCompoundLineBoxShadow(
2468
+ const compoundLineShadow = chunkLTEDT475_js.getCompoundLineBoxShadow(
2477
2469
  element.shapeStyle?.compoundLine,
2478
2470
  strokeWidth,
2479
2471
  resolvedStrokeColor
@@ -2486,11 +2478,11 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2486
2478
  if (ss?.glowColor && ss.glowColor !== "transparent" && ss.glowRadius) {
2487
2479
  const glowOpacity = typeof ss.glowOpacity === "number" ? ss.glowOpacity : 0.75;
2488
2480
  const glowRad = Math.round(Math.max(0, ss.glowRadius));
2489
- const glowCol = chunkWK56SFN7_js.colorWithOpacity(chunkWK56SFN7_js.normalizeHexColor(ss.glowColor, "#ffff00"), glowOpacity);
2481
+ const glowCol = chunkLTEDT475_js.colorWithOpacity(chunkLTEDT475_js.normalizeHexColor(ss.glowColor, "#ffff00"), glowOpacity);
2490
2482
  filterParts.push(`drop-shadow(0 0 ${glowRad}px ${glowCol})`);
2491
2483
  }
2492
2484
  if (typeof ss?.softEdgeRadius === "number" && ss.softEdgeRadius > 0) {
2493
- filterParts.push(`url(#${chunkWK56SFN7_js.getSoftEdgeFilterId(element.id)})`);
2485
+ filterParts.push(`url(#${chunkLTEDT475_js.getSoftEdgeFilterId(element.id)})`);
2494
2486
  }
2495
2487
  if (typeof ss?.blurRadius === "number" && ss.blurRadius > 0) {
2496
2488
  filterParts.push(`blur(${Math.round(ss.blurRadius)}px)`);
@@ -2499,13 +2491,13 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2499
2491
  if (lineGlowCss) {
2500
2492
  filterParts.push(lineGlowCss);
2501
2493
  }
2502
- const dagFilter = chunkWK56SFN7_js.getEffectDagFilter(ss, element.id);
2494
+ const dagFilter = chunkLTEDT475_js.getEffectDagFilter(ss, element.id);
2503
2495
  if (dagFilter) {
2504
2496
  filterParts.push(dagFilter);
2505
2497
  }
2506
2498
  const lineJoinCss = ss?.lineJoin === "round" ? "round" : ss?.lineJoin === "bevel" ? "bevel" : ss?.lineJoin === "miter" ? "miter" : void 0;
2507
2499
  const miterLimitCss = ss?.lineJoin === "miter" && typeof ss?.miterLimit === "number" ? Math.max(ss.miterLimit / 1e5, 1) : void 0;
2508
- const patternFill = chunkWK56SFN7_js.buildPatternFillCss(element.shapeStyle);
2500
+ const patternFill = chunkLTEDT475_js.buildPatternFillCss(element.shapeStyle);
2509
2501
  const imageFillUrl = ss?.fillMode === "image" && ss.fillImageUrl ? ss.fillImageUrl : void 0;
2510
2502
  const imageFillMode = ss?.fillImageMode || "stretch";
2511
2503
  let reflectCss;
@@ -2517,7 +2509,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2517
2509
  const endOpacity = typeof ss.reflectionEndOpacity === "number" ? ss.reflectionEndOpacity : 0;
2518
2510
  const fadeLength = typeof ss.reflectionEndPosition === "number" ? Math.round(ss.reflectionEndPosition * Math.max(element.height, 1)) : 100;
2519
2511
  const blurRadius = typeof ss.reflectionBlurRadius === "number" ? ss.reflectionBlurRadius : 0;
2520
- reflectCss = chunkWK56SFN7_js.buildReflectionCss(distance, startOpacity, endOpacity, fadeLength, blurRadius);
2512
+ reflectCss = chunkLTEDT475_js.buildReflectionCss(distance, startOpacity, endOpacity, fadeLength, blurRadius);
2521
2513
  }
2522
2514
  }
2523
2515
  const base = {
@@ -2551,9 +2543,9 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2551
2543
  // is present, `ShapeEffectOverlay` paints a separate blended tint layer so
2552
2544
  // the colour is actually rendered (and text/children are not tinted).
2553
2545
  mixBlendMode: hasFillOverlayColor ? void 0 : mapDagBlendModeToCss(ss?.dagFillOverlayBlend),
2554
- borderWidth: strokeWidth > 0 ? chunkWK56SFN7_js.getCompoundLineBorderWidth(ss?.compoundLine, strokeWidth) : void 0,
2546
+ borderWidth: strokeWidth > 0 ? chunkLTEDT475_js.getCompoundLineBorderWidth(ss?.compoundLine, strokeWidth) : void 0,
2555
2547
  borderColor: strokeWidth > 0 ? resolvedStrokeColor : void 0,
2556
- borderStyle: strokeWidth > 0 ? chunkWK56SFN7_js.getCssBorderDashStyle(strokeDash, ss?.compoundLine) : void 0,
2548
+ borderStyle: strokeWidth > 0 ? chunkLTEDT475_js.getCssBorderDashStyle(strokeDash, ss?.compoundLine) : void 0,
2557
2549
  strokeLinejoin: lineJoinCss,
2558
2550
  strokeMiterlimit: miterLimitCss,
2559
2551
  strokeLinecap: ss?.lineCap === "rnd" ? "round" : ss?.lineCap === "sq" ? "square" : ss?.lineCap === "flat" ? "butt" : void 0
@@ -2609,7 +2601,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2609
2601
  borderWidth: 0,
2610
2602
  borderTopWidth: Math.max(strokeWidth, 2),
2611
2603
  borderTopColor: resolvedStrokeColor,
2612
- borderTopStyle: chunkWK56SFN7_js.getCssBorderDashStyle(strokeDash)
2604
+ borderTopStyle: chunkLTEDT475_js.getCssBorderDashStyle(strokeDash)
2613
2605
  };
2614
2606
  }
2615
2607
  if (normalizedShapeType === "cylinder") {
@@ -2623,13 +2615,13 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2623
2615
  function getConnectorAdjustment(element, key, fallback) {
2624
2616
  const direct = element.shapeAdjustments?.[key];
2625
2617
  if (typeof direct === "number" && Number.isFinite(direct)) {
2626
- return chunkWK56SFN7_js.clampUnitInterval(direct / 1e5);
2618
+ return chunkLTEDT475_js.clampUnitInterval(direct / 1e5);
2627
2619
  }
2628
2620
  const fallbackKey = element.shapeAdjustments?.adj;
2629
2621
  if (typeof fallbackKey === "number" && Number.isFinite(fallbackKey)) {
2630
- return chunkWK56SFN7_js.clampUnitInterval(fallbackKey / 1e5);
2622
+ return chunkLTEDT475_js.clampUnitInterval(fallbackKey / 1e5);
2631
2623
  }
2632
- return chunkWK56SFN7_js.clampUnitInterval(fallback);
2624
+ return chunkLTEDT475_js.clampUnitInterval(fallback);
2633
2625
  }
2634
2626
  function getConnectorPathGeometry(element) {
2635
2627
  const width = Math.max(element.width, 1);
@@ -2766,11 +2758,11 @@ function strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray) {
2766
2758
  strokePaint,
2767
2759
  strokeWidth,
2768
2760
  dashArray,
2769
- lineCap: chunkWK56SFN7_js.svgLineCap(shapeStyle?.lineCap),
2761
+ lineCap: chunkLTEDT475_js.svgLineCap(shapeStyle?.lineCap),
2770
2762
  lineJoin,
2771
2763
  miterLimit,
2772
- offsets: chunkWK56SFN7_js.getCompoundLineOffsets(shapeStyle?.compoundLine, strokeWidth),
2773
- widths: chunkWK56SFN7_js.getCompoundLineWidths(shapeStyle?.compoundLine, strokeWidth)
2764
+ offsets: chunkLTEDT475_js.getCompoundLineOffsets(shapeStyle?.compoundLine, strokeWidth),
2765
+ widths: chunkLTEDT475_js.getCompoundLineWidths(shapeStyle?.compoundLine, strokeWidth)
2774
2766
  };
2775
2767
  }
2776
2768
  function strokeStrands(d, keyBase, ctx) {
@@ -2793,7 +2785,7 @@ function strokeStrands(d, keyBase, ctx) {
2793
2785
  }
2794
2786
  function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredPaths, shapeStyle, hasFill, fillColor, fillOpacity, strokePaint, strokeWidth, dashArray, animatesFill = false) {
2795
2787
  const ctx = strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray);
2796
- const subpaths = structuredPaths && structuredPaths.length > 0 ? chunkWK56SFN7_js.customGeometryPathsToSvgSubpaths(structuredPaths, pathWidth, pathHeight) : void 0;
2788
+ const subpaths = structuredPaths && structuredPaths.length > 0 ? chunkLTEDT475_js.customGeometryPathsToSvgSubpaths(structuredPaths, pathWidth, pathHeight) : void 0;
2797
2789
  const needsPerSubpath = subpaths !== void 0 && subpaths.some((sp) => sp.fillMode && sp.fillMode !== "norm" || sp.stroke === false);
2798
2790
  const nodes = [];
2799
2791
  if (subpaths && needsPerSubpath) {
@@ -2824,7 +2816,7 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
2824
2816
  "path",
2825
2817
  {
2826
2818
  d: pathData,
2827
- fill: animatesFill ? "inherit" : chunkWK56SFN7_js.colorWithOpacity(fillColor, fillOpacity),
2819
+ fill: animatesFill ? "inherit" : chunkLTEDT475_js.colorWithOpacity(fillColor, fillOpacity),
2828
2820
  stroke: "none",
2829
2821
  vectorEffect: "non-scaling-stroke"
2830
2822
  },
@@ -2866,14 +2858,14 @@ function renderStrokeOnlyPreset(presetPaths, width, height, shapeStyle, strokePa
2866
2858
  );
2867
2859
  }
2868
2860
  function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor, animatesFill, animatesStroke) {
2869
- if (!chunkWK56SFN7_js.hasShapeProperties(element)) {
2861
+ if (!chunkLTEDT475_js.hasShapeProperties(element)) {
2870
2862
  return null;
2871
2863
  }
2872
2864
  const normalizedType = (element.shapeType || "").toLowerCase();
2873
- const fillPaint = animatesFill ? "inherit" : chunkWK56SFN7_js.colorWithOpacity(fillColor, element.shapeStyle?.fillOpacity);
2874
- const strokePaint = animatesStroke ? "inherit" : chunkWK56SFN7_js.colorWithOpacity(strokeColor, element.shapeStyle?.strokeOpacity);
2875
- const dashType = chunkWK56SFN7_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2876
- const dashArray = chunkWK56SFN7_js.getSvgStrokeDasharray(
2865
+ const fillPaint = animatesFill ? "inherit" : chunkLTEDT475_js.colorWithOpacity(fillColor, element.shapeStyle?.fillOpacity);
2866
+ const strokePaint = animatesStroke ? "inherit" : chunkLTEDT475_js.colorWithOpacity(strokeColor, element.shapeStyle?.strokeOpacity);
2867
+ const dashType = chunkLTEDT475_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2868
+ const dashArray = chunkLTEDT475_js.getSvgStrokeDasharray(
2877
2869
  dashType,
2878
2870
  Math.max(strokeWidth, 1),
2879
2871
  element.shapeStyle?.customDashSegments
@@ -2952,18 +2944,18 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2952
2944
  Boolean(animatesFill)
2953
2945
  );
2954
2946
  }
2955
- if (chunkWK56SFN7_js.isCalloutShape(normalizedType)) {
2947
+ if (chunkLTEDT475_js.isCalloutShape(normalizedType)) {
2956
2948
  const width = Math.max(element.width, 1);
2957
2949
  const height = Math.max(element.height, 1);
2958
- const geometry = chunkWK56SFN7_js.getCalloutLeaderLineGeometry(
2950
+ const geometry = chunkLTEDT475_js.getCalloutLeaderLineGeometry(
2959
2951
  normalizedType,
2960
2952
  width,
2961
2953
  height,
2962
2954
  element.shapeAdjustments
2963
2955
  );
2964
2956
  if (geometry && geometry.points.length >= 2) {
2965
- const leaderPath = chunkWK56SFN7_js.buildCalloutLeaderLineSvgPath(geometry);
2966
- const bounds = chunkWK56SFN7_js.getCalloutViewBoxBounds(width, height, geometry);
2957
+ const leaderPath = chunkLTEDT475_js.buildCalloutLeaderLineSvgPath(geometry);
2958
+ const bounds = chunkLTEDT475_js.getCalloutViewBoxBounds(width, height, geometry);
2967
2959
  const lineStroke = Math.max(strokeWidth, 1);
2968
2960
  const offsetLeft = bounds.minX;
2969
2961
  const offsetTop = bounds.minY;
@@ -3026,10 +3018,10 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
3026
3018
  const endArrowW = element.shapeStyle?.connectorEndArrowWidth;
3027
3019
  const endArrowL = element.shapeStyle?.connectorEndArrowLength;
3028
3020
  const compoundLine = element.shapeStyle?.compoundLine;
3029
- const connectorLineCap = chunkWK56SFN7_js.svgLineCap(element.shapeStyle?.lineCap);
3021
+ const connectorLineCap = chunkLTEDT475_js.svgLineCap(element.shapeStyle?.lineCap);
3030
3022
  const hitTargetWidth = Math.max(strokeWidth * 3, 12);
3031
- const offsets = chunkWK56SFN7_js.getCompoundLineOffsets(compoundLine, strokeWidth);
3032
- const widths = chunkWK56SFN7_js.getCompoundLineWidths(compoundLine, strokeWidth);
3023
+ const offsets = chunkLTEDT475_js.getCompoundLineOffsets(compoundLine, strokeWidth);
3024
+ const widths = chunkLTEDT475_js.getCompoundLineWidths(compoundLine, strokeWidth);
3033
3025
  return /* @__PURE__ */ jsxRuntime.jsxs(
3034
3026
  "svg",
3035
3027
  {
@@ -3108,15 +3100,15 @@ function parseGradientFillCss(gradFill) {
3108
3100
  }
3109
3101
  const parsed = stops.map((gs) => {
3110
3102
  const pos = Number.parseInt(String(gs["@_pos"] || "0"), 10) / 1e3;
3111
- const color = chunkWK56SFN7_js.parseDrawingColor(gs) ?? "#888888";
3112
- const opacity = chunkWK56SFN7_js.parseDrawingColorOpacity(gs);
3113
- return { pos, color: chunkWK56SFN7_js.colorWithOpacity(color, opacity) };
3103
+ const color = chunkLTEDT475_js.parseDrawingColor(gs) ?? "#888888";
3104
+ const opacity = chunkLTEDT475_js.parseDrawingColorOpacity(gs);
3105
+ return { pos, color: chunkLTEDT475_js.colorWithOpacity(color, opacity) };
3114
3106
  }).sort((a, b) => a.pos - b.pos);
3115
3107
  const stopStrings = parsed.map((s) => `${s.color} ${s.pos.toFixed(1)}%`).join(", ");
3116
3108
  const lin = gradFill["a:lin"];
3117
3109
  if (lin) {
3118
3110
  const angRaw = Number.parseInt(String(lin["@_ang"] || "0"), 10);
3119
- const angleDeg = Math.round(chunkWK56SFN7_js.ooxmlGradientAngleToCssDegrees(angRaw / 6e4));
3111
+ const angleDeg = Math.round(chunkLTEDT475_js.ooxmlGradientAngleToCssDegrees(angRaw / 6e4));
3120
3112
  return `linear-gradient(${angleDeg}deg, ${stopStrings})`;
3121
3113
  }
3122
3114
  const path = gradFill["a:path"];
@@ -3151,8 +3143,8 @@ function parsePatternFillCss(pattFill) {
3151
3143
  if (!pattFill) {
3152
3144
  return void 0;
3153
3145
  }
3154
- const fgColor = chunkWK56SFN7_js.parseDrawingColor(pattFill["a:fgClr"]) ?? "#000000";
3155
- const bgColor = chunkWK56SFN7_js.parseDrawingColor(pattFill["a:bgClr"]) ?? "#ffffff";
3146
+ const fgColor = chunkLTEDT475_js.parseDrawingColor(pattFill["a:fgClr"]) ?? "#000000";
3147
+ const bgColor = chunkLTEDT475_js.parseDrawingColor(pattFill["a:bgClr"]) ?? "#ffffff";
3156
3148
  const preset = String(pattFill["@_prst"] || "ltDnDiag");
3157
3149
  switch (preset) {
3158
3150
  case "ltHorz":
@@ -3263,11 +3255,11 @@ function parseCellBorders(cellProperties) {
3263
3255
  const prstDash = ln["a:prstDash"];
3264
3256
  const dashVal = prstDash ? String(prstDash["@_val"] || "") : void 0;
3265
3257
  const cssBorderStyle = ooxmlDashToCss(dashVal);
3266
- const color = chunkWK56SFN7_js.parseDrawingColor(ln["a:solidFill"]);
3258
+ const color = chunkLTEDT475_js.parseDrawingColor(ln["a:solidFill"]);
3267
3259
  if (color) {
3268
- const opacity = chunkWK56SFN7_js.parseDrawingColorOpacity(ln["a:solidFill"]);
3260
+ const opacity = chunkLTEDT475_js.parseDrawingColorOpacity(ln["a:solidFill"]);
3269
3261
  const key = `${edge.prefix}`;
3270
- borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${chunkWK56SFN7_js.colorWithOpacity(color, opacity)}`;
3262
+ borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${chunkLTEDT475_js.colorWithOpacity(color, opacity)}`;
3271
3263
  }
3272
3264
  }
3273
3265
  return borderStyle;
@@ -3280,7 +3272,7 @@ function parseCellTextEffects(runProps) {
3280
3272
  const textShadowParts = [];
3281
3273
  const outerShdw = effectLst["a:outerShdw"];
3282
3274
  if (outerShdw) {
3283
- const shdwColor = chunkWK56SFN7_js.parseDrawingColor(outerShdw);
3275
+ const shdwColor = chunkLTEDT475_js.parseDrawingColor(outerShdw);
3284
3276
  if (shdwColor) {
3285
3277
  const blurRad = Number.parseInt(String(outerShdw["@_blurRad"] || "0"), 10);
3286
3278
  const blurPx = blurRad > 0 ? Math.round(blurRad / 12700) : 0;
@@ -3298,7 +3290,7 @@ function parseCellTextEffects(runProps) {
3298
3290
  }
3299
3291
  const glow = effectLst["a:glow"];
3300
3292
  if (glow) {
3301
- const glowColor = chunkWK56SFN7_js.parseDrawingColor(glow);
3293
+ const glowColor = chunkLTEDT475_js.parseDrawingColor(glow);
3302
3294
  if (glowColor) {
3303
3295
  const glowRad = Number.parseInt(String(glow["@_rad"] || "0"), 10);
3304
3296
  const glowPx = glowRad > 0 ? Math.round(glowRad / 12700) : 2;
@@ -3377,10 +3369,10 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
3377
3369
  if (runProps?.["@_u"] !== void 0) {
3378
3370
  cellStyle.textDecorationLine = runProps["@_u"] === "sng" ? "underline" : "none";
3379
3371
  }
3380
- const runColor = chunkWK56SFN7_js.parseDrawingColor(runProps?.["a:solidFill"], schemeColorOverrides) || chunkWK56SFN7_js.parseDrawingColor(runProps?.["a:highlight"], schemeColorOverrides);
3372
+ const runColor = chunkLTEDT475_js.parseDrawingColor(runProps?.["a:solidFill"], schemeColorOverrides) || chunkLTEDT475_js.parseDrawingColor(runProps?.["a:highlight"], schemeColorOverrides);
3381
3373
  if (runColor) {
3382
- const opacity = chunkWK56SFN7_js.parseDrawingColorOpacity(runProps?.["a:solidFill"]);
3383
- cellStyle.color = chunkWK56SFN7_js.colorWithOpacity(runColor, opacity);
3374
+ const opacity = chunkLTEDT475_js.parseDrawingColorOpacity(runProps?.["a:solidFill"]);
3375
+ cellStyle.color = chunkLTEDT475_js.colorWithOpacity(runColor, opacity);
3384
3376
  }
3385
3377
  const fontFamily = runProps?.["a:latin"]?.["@_typeface"] || runProps?.["a:ea"]?.["@_typeface"] || runProps?.["a:cs"]?.["@_typeface"];
3386
3378
  if (fontFamily) {
@@ -3390,15 +3382,15 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
3390
3382
  cellStyle.textAlign = parseParagraphAlignment(paragraphProperties["@_algn"]);
3391
3383
  }
3392
3384
  const cellProperties = cellXml["a:tcPr"];
3393
- const cellFill = chunkWK56SFN7_js.parseDrawingColor(
3385
+ const cellFill = chunkLTEDT475_js.parseDrawingColor(
3394
3386
  cellProperties?.["a:solidFill"],
3395
3387
  schemeColorOverrides
3396
3388
  );
3397
3389
  if (cellFill) {
3398
- const opacity = chunkWK56SFN7_js.parseDrawingColorOpacity(
3390
+ const opacity = chunkLTEDT475_js.parseDrawingColorOpacity(
3399
3391
  cellProperties?.["a:solidFill"]
3400
3392
  );
3401
- cellStyle.backgroundColor = chunkWK56SFN7_js.colorWithOpacity(cellFill, opacity);
3393
+ cellStyle.backgroundColor = chunkLTEDT475_js.colorWithOpacity(cellFill, opacity);
3402
3394
  } else {
3403
3395
  const gradCss = parseGradientFillCss(cellProperties?.["a:gradFill"]);
3404
3396
  if (gradCss) {
@@ -3413,16 +3405,16 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
3413
3405
  const edgeBorders = parseCellBorders(cellProperties);
3414
3406
  Object.assign(cellStyle, edgeBorders);
3415
3407
  if (!cellStyle.borderLeftColor && !cellStyle.borderRightColor && !cellStyle.borderTopColor && !cellStyle.borderBottomColor) {
3416
- const borderColor = chunkWK56SFN7_js.parseDrawingColor(
3408
+ const borderColor = chunkLTEDT475_js.parseDrawingColor(
3417
3409
  cellProperties?.["a:lnL"]?.["a:solidFill"],
3418
3410
  schemeColorOverrides
3419
- ) || chunkWK56SFN7_js.parseDrawingColor(
3411
+ ) || chunkLTEDT475_js.parseDrawingColor(
3420
3412
  cellProperties?.["a:lnR"]?.["a:solidFill"],
3421
3413
  schemeColorOverrides
3422
- ) || chunkWK56SFN7_js.parseDrawingColor(
3414
+ ) || chunkLTEDT475_js.parseDrawingColor(
3423
3415
  cellProperties?.["a:lnT"]?.["a:solidFill"],
3424
3416
  schemeColorOverrides
3425
- ) || chunkWK56SFN7_js.parseDrawingColor(
3417
+ ) || chunkLTEDT475_js.parseDrawingColor(
3426
3418
  cellProperties?.["a:lnB"]?.["a:solidFill"],
3427
3419
  schemeColorOverrides
3428
3420
  );
@@ -3501,10 +3493,10 @@ function resolveTableStyleFillColor(fill, colorScheme) {
3501
3493
  }
3502
3494
  let color = base;
3503
3495
  if (fill.tint !== void 0 && fill.tint > 0) {
3504
- color = chunkWK56SFN7_js.tintColor2(color, fill.tint / 1e5);
3496
+ color = chunkLTEDT475_js.tintColor2(color, fill.tint / 1e5);
3505
3497
  }
3506
3498
  if (fill.shade !== void 0 && fill.shade > 0) {
3507
- color = chunkWK56SFN7_js.shadeColor2(color, 1 - fill.shade / 1e5);
3499
+ color = chunkLTEDT475_js.shadeColor2(color, 1 - fill.shade / 1e5);
3508
3500
  }
3509
3501
  return color;
3510
3502
  }
@@ -3529,7 +3521,7 @@ function applyTableStyleText(text, colorScheme, style, fontScheme) {
3529
3521
  style.fontFamily = text.fontFace;
3530
3522
  applied = true;
3531
3523
  } else {
3532
- const refFont = chunkWK56SFN7_js.resolveFontRefIdx(text.fontRefIdx, fontScheme);
3524
+ const refFont = chunkLTEDT475_js.resolveFontRefIdx(text.fontRefIdx, fontScheme);
3533
3525
  if (refFont) {
3534
3526
  style.fontFamily = refFont;
3535
3527
  applied = true;
@@ -3540,10 +3532,10 @@ function applyTableStyleText(text, colorScheme, style, fontScheme) {
3540
3532
  if (base) {
3541
3533
  let color = base;
3542
3534
  if (text.fontTint !== void 0 && text.fontTint > 0) {
3543
- color = chunkWK56SFN7_js.tintColor2(color, text.fontTint / 1e5);
3535
+ color = chunkLTEDT475_js.tintColor2(color, text.fontTint / 1e5);
3544
3536
  }
3545
3537
  if (text.fontShade !== void 0 && text.fontShade > 0) {
3546
- color = chunkWK56SFN7_js.shadeColor2(color, 1 - text.fontShade / 1e5);
3538
+ color = chunkLTEDT475_js.shadeColor2(color, 1 - text.fontShade / 1e5);
3547
3539
  }
3548
3540
  style.color = color;
3549
3541
  applied = true;
@@ -3732,7 +3724,7 @@ function parseTableElementData(element, fallbackTextStyle) {
3732
3724
  };
3733
3725
  }
3734
3726
  function getCellDiagonalBorders2(style, tableData, pos, styleCtx) {
3735
- return chunkWK56SFN7_js.getCellDiagonalBorders(style, tableData, pos, {
3727
+ return chunkLTEDT475_js.getCellDiagonalBorders(style, tableData, pos, {
3736
3728
  tableStyleMap: styleCtx?.tableStyleMap,
3737
3729
  colorScheme: styleCtx?.theme?.colorScheme,
3738
3730
  fontScheme: styleCtx?.theme?.fontScheme
@@ -3880,9 +3872,9 @@ function cellStyleToCss(style) {
3880
3872
  if (style.gradientFillCss) {
3881
3873
  css.background = style.gradientFillCss;
3882
3874
  } else if (style.fillMode === "pattern" && style.patternFillPreset) {
3883
- const fg = chunkWK56SFN7_js.normalizeHexColor(style.patternFillForeground, "#000000");
3884
- const bg = chunkWK56SFN7_js.normalizeHexColor(style.patternFillBackground, "#ffffff");
3885
- const svgPattern = chunkWK56SFN7_js.getPatternSvg(style.patternFillPreset, fg, bg);
3875
+ const fg = chunkLTEDT475_js.normalizeHexColor(style.patternFillForeground, "#000000");
3876
+ const bg = chunkLTEDT475_js.normalizeHexColor(style.patternFillBackground, "#ffffff");
3877
+ const svgPattern = chunkLTEDT475_js.getPatternSvg(style.patternFillPreset, fg, bg);
3886
3878
  if (svgPattern) {
3887
3879
  const encoded = encodeURIComponent(svgPattern);
3888
3880
  css.backgroundImage = `url("data:image/svg+xml,${encoded}")`;
@@ -3958,7 +3950,7 @@ function cellStyleToCss(style) {
3958
3950
  if (edge.width || edge.color) {
3959
3951
  const w = edge.width ?? 1;
3960
3952
  const c = edge.color ?? style.borderColor ?? "#000000";
3961
- const s = chunkWK56SFN7_js.ooxmlDashToCssBorderStyle(edge.dash);
3953
+ const s = chunkLTEDT475_js.ooxmlDashToCssBorderStyle(edge.dash);
3962
3954
  css[edge.prefix] = `${w}px ${s} ${c}`;
3963
3955
  }
3964
3956
  }
@@ -3989,7 +3981,7 @@ function cellStyleToCss(style) {
3989
3981
  css.textShadow = textShadowParts.join(", ");
3990
3982
  }
3991
3983
  if (style.cell3D) {
3992
- Object.assign(css, chunkWK56SFN7_js.cell3DBevelCss(style.cell3D));
3984
+ Object.assign(css, chunkLTEDT475_js.cell3DBevelCss(style.cell3D));
3993
3985
  }
3994
3986
  return css;
3995
3987
  }
@@ -4003,7 +3995,7 @@ function TableResizeOverlay({
4003
3995
  const containerRef = React6.useRef(null);
4004
3996
  const [rowBounds, setRowBounds] = React6.useState([]);
4005
3997
  const dragRef = React6.useRef(null);
4006
- const colBoundaries = React6.useMemo(() => chunkWK56SFN7_js.computeColumnBoundaries(columnWidths), [columnWidths]);
3998
+ const colBoundaries = React6.useMemo(() => chunkLTEDT475_js.computeColumnBoundaries(columnWidths), [columnWidths]);
4007
3999
  const measureRows = React6.useCallback(() => {
4008
4000
  const container = containerRef.current;
4009
4001
  if (!container) {
@@ -4050,11 +4042,11 @@ function TableResizeOverlay({
4050
4042
  const rect = containerRef.current.getBoundingClientRect();
4051
4043
  if (drag.type === "col" && drag.initialWidths && onResizeColumns) {
4052
4044
  const deltaProp = (e.clientX - drag.startPos) / rect.width;
4053
- onResizeColumns(chunkWK56SFN7_js.computeResizedColumnWidths(drag.initialWidths, drag.index, deltaProp));
4045
+ onResizeColumns(chunkLTEDT475_js.computeResizedColumnWidths(drag.initialWidths, drag.index, deltaProp));
4054
4046
  } else if (drag.type === "row" && onResizeRow) {
4055
4047
  const deltaY = e.clientY - drag.startPos;
4056
- const newHeight = chunkWK56SFN7_js.computeResizedRowHeight(
4057
- drag.initialRowHeight ?? chunkWK56SFN7_js.DEFAULT_ROW_HEIGHT,
4048
+ const newHeight = chunkLTEDT475_js.computeResizedRowHeight(
4049
+ drag.initialRowHeight ?? chunkLTEDT475_js.DEFAULT_ROW_HEIGHT,
4058
4050
  deltaY
4059
4051
  );
4060
4052
  onResizeRow(drag.index, newHeight);
@@ -4092,7 +4084,7 @@ function TableResizeOverlay({
4092
4084
  e.stopPropagation();
4093
4085
  const table = containerRef.current?.querySelector("table");
4094
4086
  const tr = table?.querySelectorAll("tbody > tr")[index];
4095
- const actualHeight = tr?.offsetHeight ?? chunkWK56SFN7_js.DEFAULT_ROW_HEIGHT;
4087
+ const actualHeight = tr?.offsetHeight ?? chunkLTEDT475_js.DEFAULT_ROW_HEIGHT;
4096
4088
  document.body.style.cursor = "row-resize";
4097
4089
  document.body.style.userSelect = "none";
4098
4090
  dragRef.current = {
@@ -4140,7 +4132,7 @@ function renderTableFromTableData(element, textStyle, options) {
4140
4132
  }
4141
4133
  const first = selectedCell.selectedCells[0];
4142
4134
  const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
4143
- return chunkWK56SFN7_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableData);
4135
+ return chunkLTEDT475_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableData);
4144
4136
  })();
4145
4137
  return /* @__PURE__ */ jsxRuntime.jsx(
4146
4138
  TableResizeOverlay,
@@ -4173,7 +4165,7 @@ function renderTableFromTableData(element, textStyle, options) {
4173
4165
  return null;
4174
4166
  }
4175
4167
  const isCellSelected = selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex;
4176
- const isInMultiSelection = chunkWK56SFN7_js.isCellInRect(rowIndex, cellIndex, selectionRect);
4168
+ const isInMultiSelection = chunkLTEDT475_js.isCellInRect(rowIndex, cellIndex, selectionRect);
4177
4169
  const isCellEditing = isCellSelected && selectedCell?.isEditing;
4178
4170
  const diag = getCellDiagonalBorders2(
4179
4171
  cell.style,
@@ -4203,7 +4195,7 @@ function renderTableFromTableData(element, textStyle, options) {
4203
4195
  }
4204
4196
  event.stopPropagation();
4205
4197
  if (event.shiftKey && selectedCell) {
4206
- const rect = chunkWK56SFN7_js.computeSelectionRect(
4198
+ const rect = chunkLTEDT475_js.computeSelectionRect(
4207
4199
  selectedCell.rowIndex,
4208
4200
  selectedCell.columnIndex,
4209
4201
  rowIndex,
@@ -4213,7 +4205,7 @@ function renderTableFromTableData(element, textStyle, options) {
4213
4205
  options?.onSelectCell?.({
4214
4206
  rowIndex: selectedCell.rowIndex,
4215
4207
  columnIndex: selectedCell.columnIndex,
4216
- selectedCells: chunkWK56SFN7_js.rectToCells(rect)
4208
+ selectedCells: chunkLTEDT475_js.rectToCells(rect)
4217
4209
  });
4218
4210
  } else {
4219
4211
  options?.onSelectCell?.({
@@ -4290,7 +4282,7 @@ function renderTableElement(element, textStyle, options) {
4290
4282
  }
4291
4283
  const first = selectedCell.selectedCells[0];
4292
4284
  const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
4293
- return chunkWK56SFN7_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableEl.tableData);
4285
+ return chunkLTEDT475_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableEl.tableData);
4294
4286
  })();
4295
4287
  const schemeOverrides = options?.styleCtx?.theme?.colorScheme ? options.styleCtx.theme.colorScheme : void 0;
4296
4288
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -4367,7 +4359,7 @@ function renderTableElement(element, textStyle, options) {
4367
4359
  "border px-1 py-0.5 align-top",
4368
4360
  isEditable && hasCellSelectionHandler ? "border-blue-200/70 cursor-cell" : "border-white/30",
4369
4361
  selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex ? "ring-1 ring-inset ring-blue-500" : null,
4370
- chunkWK56SFN7_js.isCellInRect(rowIndex, cellIndex, xmlSelectionRect) && !(selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex) ? "bg-blue-500/15 ring-1 ring-inset ring-blue-400/50" : null
4362
+ chunkLTEDT475_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
4363
  ),
4372
4364
  colSpan,
4373
4365
  rowSpan: rSpan,
@@ -4378,7 +4370,7 @@ function renderTableElement(element, textStyle, options) {
4378
4370
  }
4379
4371
  event.stopPropagation();
4380
4372
  if (event.shiftKey && selectedCell && tableEl.tableData) {
4381
- const rect = chunkWK56SFN7_js.computeSelectionRect(
4373
+ const rect = chunkLTEDT475_js.computeSelectionRect(
4382
4374
  selectedCell.rowIndex,
4383
4375
  selectedCell.columnIndex,
4384
4376
  rowIndex,
@@ -4388,7 +4380,7 @@ function renderTableElement(element, textStyle, options) {
4388
4380
  options?.onSelectCell?.({
4389
4381
  rowIndex: selectedCell.rowIndex,
4390
4382
  columnIndex: selectedCell.columnIndex,
4391
- selectedCells: chunkWK56SFN7_js.rectToCells(rect)
4383
+ selectedCells: chunkLTEDT475_js.rectToCells(rect)
4392
4384
  });
4393
4385
  } else {
4394
4386
  options?.onSelectCell?.({
@@ -4443,24 +4435,24 @@ function renderTableElement(element, textStyle, options) {
4443
4435
  }
4444
4436
  var LEGEND_ITEM_WIDTH = 80;
4445
4437
  function partAttrs(part) {
4446
- return part ? chunkWK56SFN7_js.chartPartToAttrs(part) : void 0;
4438
+ return part ? chunkLTEDT475_js.chartPartToAttrs(part) : void 0;
4447
4439
  }
4448
4440
  function resolveReactPalette(chartData) {
4449
4441
  if (chartData.colorPalette && chartData.colorPalette.length > 0) {
4450
4442
  return chartData.colorPalette;
4451
4443
  }
4452
- return [...chunkWK56SFN7_js.getChartStylePalette(chartData.style?.styleId)];
4444
+ return [...chunkLTEDT475_js.getChartStylePalette(chartData.style?.styleId)];
4453
4445
  }
4454
4446
  function buildReactChartViewModel(element) {
4455
4447
  if (element.type !== "chart" || !element.chartData) {
4456
- return chunkWK56SFN7_js.buildChartViewModel(element);
4448
+ return chunkLTEDT475_js.buildChartViewModel(element);
4457
4449
  }
4458
4450
  const palette = resolveReactPalette(element.chartData);
4459
4451
  const themedElement = {
4460
4452
  ...element,
4461
4453
  chartData: { ...element.chartData, colorPalette: palette }
4462
4454
  };
4463
- return chunkWK56SFN7_js.buildChartViewModel(themedElement);
4455
+ return chunkLTEDT475_js.buildChartViewModel(themedElement);
4464
4456
  }
4465
4457
  function renderPrimitive(prim, key) {
4466
4458
  switch (prim.kind) {
@@ -4849,7 +4841,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4849
4841
  const unmatchedRows = [];
4850
4842
  categories.forEach((cat, i) => {
4851
4843
  const value = values[i] ?? 0;
4852
- const code = chunkWK56SFN7_js.resolveRegionCode(cat);
4844
+ const code = chunkLTEDT475_js.resolveRegionCode(cat);
4853
4845
  if (code) {
4854
4846
  regionValueMap.set(code, { value, label: cat });
4855
4847
  } else {
@@ -4887,8 +4879,8 @@ function renderMapChart(element, chartData, categoryLabels) {
4887
4879
  let fill = "#e2e8f0";
4888
4880
  let dataLabel = null;
4889
4881
  if (entry) {
4890
- const t = chunkWK56SFN7_js.normalizeValue(entry.value, minVal, maxVal);
4891
- fill = chunkWK56SFN7_js.sequentialColorScale(t);
4882
+ const t = chunkLTEDT475_js.normalizeValue(entry.value, minVal, maxVal);
4883
+ fill = chunkLTEDT475_js.sequentialColorScale(t);
4892
4884
  dataLabel = /* @__PURE__ */ jsxRuntime.jsx(
4893
4885
  "text",
4894
4886
  {
@@ -4899,7 +4891,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4899
4891
  fontWeight: 600,
4900
4892
  fill: "#1e293b",
4901
4893
  style: { pointerEvents: "none" },
4902
- children: chunkWK56SFN7_js.formatAxisValue(entry.value)
4894
+ children: chunkLTEDT475_js.formatAxisValue(entry.value)
4903
4895
  },
4904
4896
  `${element.id}-map-dl-${region.code}`
4905
4897
  );
@@ -4917,7 +4909,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4917
4909
  opacity: 0.9,
4918
4910
  children: /* @__PURE__ */ jsxRuntime.jsxs("title", { children: [
4919
4911
  region.name,
4920
- entry ? `: ${chunkWK56SFN7_js.formatAxisValue(entry.value)}` : ""
4912
+ entry ? `: ${chunkLTEDT475_js.formatAxisValue(entry.value)}` : ""
4921
4913
  ] })
4922
4914
  }
4923
4915
  ),
@@ -4955,7 +4947,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4955
4947
  fontSize: 7,
4956
4948
  fill: "#64748b",
4957
4949
  textAnchor: "middle",
4958
- children: chunkWK56SFN7_js.formatAxisValue(minVal)
4950
+ children: chunkLTEDT475_js.formatAxisValue(minVal)
4959
4951
  },
4960
4952
  `${element.id}-map-legend-min`
4961
4953
  ),
@@ -4967,7 +4959,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4967
4959
  fontSize: 7,
4968
4960
  fill: "#64748b",
4969
4961
  textAnchor: "middle",
4970
- children: chunkWK56SFN7_js.formatAxisValue(maxVal)
4962
+ children: chunkLTEDT475_js.formatAxisValue(maxVal)
4971
4963
  },
4972
4964
  `${element.id}-map-legend-max`
4973
4965
  )
@@ -5033,7 +5025,7 @@ function renderMapChart(element, chartData, categoryLabels) {
5033
5025
  y,
5034
5026
  fontSize,
5035
5027
  fill: "#475569",
5036
- children: chunkWK56SFN7_js.formatAxisValue(row.value)
5028
+ children: chunkLTEDT475_js.formatAxisValue(row.value)
5037
5029
  },
5038
5030
  `${element.id}-map-ft-val-${i}`
5039
5031
  )
@@ -5104,7 +5096,7 @@ function renderStackedBarChart(element, _chartData, _categoryLabels) {
5104
5096
 
5105
5097
  // src/viewer/utils/chart-overlay-utils.ts
5106
5098
  function sColor(series, idx) {
5107
- return chunkWK56SFN7_js.seriesColor(series, idx);
5099
+ return chunkLTEDT475_js.seriesColor(series, idx);
5108
5100
  }
5109
5101
  function valToY(val, range, topY, bottomY) {
5110
5102
  const usable = bottomY - topY;
@@ -5643,7 +5635,7 @@ function renderLegend(id, style, series, layout, colorPalette) {
5643
5635
  width: 10,
5644
5636
  height: 10,
5645
5637
  rx: 2,
5646
- fill: chunkWK56SFN7_js.seriesColor(s, i, style?.styleId, colorPalette)
5638
+ fill: chunkLTEDT475_js.seriesColor(s, i, style?.styleId, colorPalette)
5647
5639
  },
5648
5640
  `${id}-leg-r-${i}`
5649
5641
  )
@@ -5667,7 +5659,7 @@ function renderLegend(id, style, series, layout, colorPalette) {
5667
5659
  width: 10,
5668
5660
  height: 10,
5669
5661
  rx: 2,
5670
- fill: chunkWK56SFN7_js.seriesColor(s, i, style?.styleId, colorPalette)
5662
+ fill: chunkLTEDT475_js.seriesColor(s, i, style?.styleId, colorPalette)
5671
5663
  }
5672
5664
  ),
5673
5665
  /* @__PURE__ */ jsxRuntime.jsx("text", { x: x + 14, y: cy + 8, fontSize: 9, fill: "#475569", children: s.name || `Series ${i + 1}` })
@@ -5680,9 +5672,9 @@ function renderGridlines(id, style, range, layout) {
5680
5672
  }
5681
5673
  const lines = [];
5682
5674
  if (range.logScale && range.logBase) {
5683
- const ticks = chunkWK56SFN7_js.generateLogTicks(range);
5675
+ const ticks = chunkLTEDT475_js.generateLogTicks(range);
5684
5676
  ticks.forEach((tickVal, i) => {
5685
- const y = chunkWK56SFN7_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
5677
+ const y = chunkLTEDT475_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
5686
5678
  lines.push(
5687
5679
  /* @__PURE__ */ jsxRuntime.jsx(
5688
5680
  "line",
@@ -5703,7 +5695,7 @@ function renderGridlines(id, style, range, layout) {
5703
5695
  const steps = 4;
5704
5696
  for (let i = 0; i <= steps; i++) {
5705
5697
  const val = range.min + range.span * i / steps;
5706
- const y = chunkWK56SFN7_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5698
+ const y = chunkLTEDT475_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5707
5699
  lines.push(
5708
5700
  /* @__PURE__ */ jsxRuntime.jsx(
5709
5701
  "line",
@@ -5727,9 +5719,9 @@ function renderValueAxis(id, range, layout, axisFormatting) {
5727
5719
  const labels = [];
5728
5720
  const hasDisplayUnits = Boolean(axisFormatting?.displayUnits);
5729
5721
  if (range.logScale && range.logBase) {
5730
- const ticks = chunkWK56SFN7_js.generateLogTicks(range);
5722
+ const ticks = chunkLTEDT475_js.generateLogTicks(range);
5731
5723
  ticks.forEach((tickVal, i) => {
5732
- const y = chunkWK56SFN7_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
5724
+ const y = chunkLTEDT475_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
5733
5725
  labels.push(
5734
5726
  /* @__PURE__ */ jsxRuntime.jsx(
5735
5727
  "text",
@@ -5739,7 +5731,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
5739
5731
  textAnchor: "end",
5740
5732
  fontSize: 8,
5741
5733
  fill: "#64748b",
5742
- children: hasDisplayUnits ? chunkWK56SFN7_js.formatAxisValueWithUnits(tickVal, axisFormatting) : chunkWK56SFN7_js.formatAxisValue(tickVal)
5734
+ children: hasDisplayUnits ? chunkLTEDT475_js.formatAxisValueWithUnits(tickVal, axisFormatting) : chunkLTEDT475_js.formatAxisValue(tickVal)
5743
5735
  },
5744
5736
  `${id}-vaxis-log-${i}`
5745
5737
  )
@@ -5749,7 +5741,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
5749
5741
  const steps = 4;
5750
5742
  for (let i = 0; i <= steps; i++) {
5751
5743
  const val = range.min + range.span * i / steps;
5752
- const y = chunkWK56SFN7_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5744
+ const y = chunkLTEDT475_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5753
5745
  labels.push(
5754
5746
  /* @__PURE__ */ jsxRuntime.jsx(
5755
5747
  "text",
@@ -5759,7 +5751,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
5759
5751
  textAnchor: "end",
5760
5752
  fontSize: 8,
5761
5753
  fill: "#64748b",
5762
- children: hasDisplayUnits ? chunkWK56SFN7_js.formatAxisValueWithUnits(val, axisFormatting) : chunkWK56SFN7_js.formatAxisValue(val)
5754
+ children: hasDisplayUnits ? chunkLTEDT475_js.formatAxisValueWithUnits(val, axisFormatting) : chunkLTEDT475_js.formatAxisValue(val)
5763
5755
  },
5764
5756
  `${id}-vaxis-${i}`
5765
5757
  )
@@ -5767,7 +5759,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
5767
5759
  }
5768
5760
  }
5769
5761
  if (hasDisplayUnits) {
5770
- const unitLabel = chunkWK56SFN7_js.getDisplayUnitLabel(
5762
+ const unitLabel = chunkLTEDT475_js.getDisplayUnitLabel(
5771
5763
  axisFormatting.displayUnits,
5772
5764
  axisFormatting.displayUnitsLabel
5773
5765
  );
@@ -5842,7 +5834,7 @@ function renderZeroLine(id, range, layout) {
5842
5834
  if (range.min >= 0) {
5843
5835
  return null;
5844
5836
  }
5845
- const y = chunkWK56SFN7_js.valueToY(0, range, layout.plotTop, layout.plotBottom);
5837
+ const y = chunkLTEDT475_js.valueToY(0, range, layout.plotTop, layout.plotBottom);
5846
5838
  return /* @__PURE__ */ jsxRuntime.jsx(
5847
5839
  "line",
5848
5840
  {
@@ -5866,7 +5858,7 @@ function renderSecondaryValueAxis(id, range, layout, axisFormatting) {
5866
5858
  const hasDisplayUnits = Boolean(axisFormatting?.displayUnits);
5867
5859
  for (let i = 0; i <= steps; i++) {
5868
5860
  const val = range.min + range.span * i / steps;
5869
- const y = chunkWK56SFN7_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5861
+ const y = chunkLTEDT475_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5870
5862
  labels.push(
5871
5863
  /* @__PURE__ */ jsxRuntime.jsx(
5872
5864
  "text",
@@ -5878,7 +5870,7 @@ function renderSecondaryValueAxis(id, range, layout, axisFormatting) {
5878
5870
  fontFamily,
5879
5871
  fontWeight,
5880
5872
  fill: fontColor,
5881
- children: hasDisplayUnits ? chunkWK56SFN7_js.formatAxisValueWithUnits(val, axisFormatting) : chunkWK56SFN7_js.formatAxisValue(val)
5873
+ children: hasDisplayUnits ? chunkLTEDT475_js.formatAxisValueWithUnits(val, axisFormatting) : chunkLTEDT475_js.formatAxisValue(val)
5882
5874
  },
5883
5875
  `${id}-sec-vaxis-${i}`
5884
5876
  )
@@ -5902,7 +5894,7 @@ function renderSecondaryValueAxis(id, range, layout, axisFormatting) {
5902
5894
  );
5903
5895
  }
5904
5896
  if (hasDisplayUnits) {
5905
- const unitLabel = chunkWK56SFN7_js.getDisplayUnitLabel(
5897
+ const unitLabel = chunkLTEDT475_js.getDisplayUnitLabel(
5906
5898
  axisFormatting.displayUnits,
5907
5899
  axisFormatting.displayUnitsLabel
5908
5900
  );
@@ -5933,7 +5925,7 @@ function renderSecondaryAxisTicks(id, range, layout) {
5933
5925
  const ticks = [];
5934
5926
  for (let i = 0; i <= steps; i++) {
5935
5927
  const val = range.min + range.span * i / steps;
5936
- const y = chunkWK56SFN7_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5928
+ const y = chunkLTEDT475_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5937
5929
  ticks.push(
5938
5930
  /* @__PURE__ */ jsxRuntime.jsx(
5939
5931
  "line",
@@ -5960,7 +5952,7 @@ function renderSecondaryGridlines(id, range, layout, axisFormatting) {
5960
5952
  const gridColor = axisFormatting.majorGridlinesSpPr?.strokeColor ?? "#e2e8f0";
5961
5953
  for (let i = 0; i <= steps; i++) {
5962
5954
  const val = range.min + range.span * i / steps;
5963
- const y = chunkWK56SFN7_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5955
+ const y = chunkLTEDT475_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5964
5956
  lines.push(
5965
5957
  /* @__PURE__ */ jsxRuntime.jsx(
5966
5958
  "line",
@@ -6122,7 +6114,7 @@ function renderChartDataTable(elementId, chartData, svgWidth) {
6122
6114
  width: 8,
6123
6115
  height: 8,
6124
6116
  borderRadius: 2,
6125
- backgroundColor: chunkWK56SFN7_js.seriesColor(
6117
+ backgroundColor: chunkLTEDT475_js.seriesColor(
6126
6118
  s,
6127
6119
  si,
6128
6120
  chartData.style?.styleId,
@@ -6161,8 +6153,8 @@ function renderChartDataTable(elementId, chartData, svgWidth) {
6161
6153
  function renderStockChart(element, chartData, categoryLabels) {
6162
6154
  const style = chartData.style;
6163
6155
  const legendPos = style?.legendPosition || "b";
6164
- const range = chunkWK56SFN7_js.computeValueRangeForChart(chartData.series, chartData.axes);
6165
- const layout = chunkWK56SFN7_js.computeLayout(element.width, element.height, style, true, legendPos);
6156
+ const range = chunkLTEDT475_js.computeValueRangeForChart(chartData.series, chartData.axes);
6157
+ const layout = chunkLTEDT475_js.computeLayout(element.width, element.height, style, true, legendPos);
6166
6158
  const catCount = Math.max(categoryLabels.length, 1);
6167
6159
  const barGroupWidth = layout.plotWidth / catCount;
6168
6160
  const candleWidth = barGroupWidth * 0.5;
@@ -6183,10 +6175,10 @@ function renderStockChart(element, chartData, categoryLabels) {
6183
6175
  const close = closeSeries.values[ci] ?? high;
6184
6176
  const isUp = close >= open;
6185
6177
  const cx = layout.plotLeft + barGroupWidth * ci + barGroupWidth / 2;
6186
- const highY = chunkWK56SFN7_js.valueToY(high, range, layout.plotTop, layout.plotBottom);
6187
- const lowY = chunkWK56SFN7_js.valueToY(low, range, layout.plotTop, layout.plotBottom);
6188
- const openY = chunkWK56SFN7_js.valueToY(open, range, layout.plotTop, layout.plotBottom);
6189
- const closeY = chunkWK56SFN7_js.valueToY(close, range, layout.plotTop, layout.plotBottom);
6178
+ const highY = chunkLTEDT475_js.valueToY(high, range, layout.plotTop, layout.plotBottom);
6179
+ const lowY = chunkLTEDT475_js.valueToY(low, range, layout.plotTop, layout.plotBottom);
6180
+ const openY = chunkLTEDT475_js.valueToY(open, range, layout.plotTop, layout.plotBottom);
6181
+ const closeY = chunkLTEDT475_js.valueToY(close, range, layout.plotTop, layout.plotBottom);
6190
6182
  elements.push(
6191
6183
  /* @__PURE__ */ jsxRuntime.jsx(
6192
6184
  "line",
@@ -6229,7 +6221,7 @@ function renderStockChart(element, chartData, categoryLabels) {
6229
6221
  textAnchor: "middle",
6230
6222
  fontSize: 7,
6231
6223
  fill: "#334155",
6232
- children: chunkWK56SFN7_js.formatAxisValue(close)
6224
+ children: chunkLTEDT475_js.formatAxisValue(close)
6233
6225
  },
6234
6226
  `${element.id}-stock-dl-${ci}`
6235
6227
  )
@@ -6271,7 +6263,7 @@ function FailedToLoad() {
6271
6263
  var LazySurfaceChart3DScene = React6__default.default.lazy(
6272
6264
  async () => {
6273
6265
  try {
6274
- return await import('./SurfaceChart3DScene-4KRMRWW6.js');
6266
+ return await import('./SurfaceChart3DScene-K7Q5NYZ4.js');
6275
6267
  } catch {
6276
6268
  return { default: FailedToLoad };
6277
6269
  }
@@ -6295,7 +6287,7 @@ var SurfaceChart3DErrorBoundary = class extends React6__default.default.Componen
6295
6287
  function buildSurfaceData(chartData, categoryLabels) {
6296
6288
  const rows = chartData.series.length;
6297
6289
  const cols = Math.max(categoryLabels.length, 1);
6298
- const range = chunkWK56SFN7_js.computeValueRangeForChart(chartData.series, chartData.axes);
6290
+ const range = chunkLTEDT475_js.computeValueRangeForChart(chartData.series, chartData.axes);
6299
6291
  const heightMap = new Float32Array(rows * cols);
6300
6292
  const colorMap = new Float32Array(rows * cols * 3);
6301
6293
  for (let r = 0; r < rows; r++) {
@@ -6415,8 +6407,8 @@ function darkenRgb(r, g, b, factor) {
6415
6407
  function renderIsometricSurfaceChart(element, chartData, categoryLabels) {
6416
6408
  const style = chartData.style;
6417
6409
  const legendPos = style?.legendPosition || "b";
6418
- const layout = chunkWK56SFN7_js.computeLayout(element.width, element.height, style, false, legendPos);
6419
- const range = chunkWK56SFN7_js.computeValueRangeForChart(chartData.series, chartData.axes);
6410
+ const layout = chunkLTEDT475_js.computeLayout(element.width, element.height, style, false, legendPos);
6411
+ const range = chunkLTEDT475_js.computeValueRangeForChart(chartData.series, chartData.axes);
6420
6412
  const catCount = Math.max(categoryLabels.length, 1);
6421
6413
  const seriesCount = chartData.series.length;
6422
6414
  const cols = catCount - 1;
@@ -6506,8 +6498,8 @@ function renderIsometricSurfaceChart(element, chartData, categoryLabels) {
6506
6498
  function renderFlatSurfaceChart(element, chartData, categoryLabels) {
6507
6499
  const style = chartData.style;
6508
6500
  const legendPos = style?.legendPosition || "b";
6509
- const layout = chunkWK56SFN7_js.computeLayout(element.width, element.height, style, true, legendPos);
6510
- const range = chunkWK56SFN7_js.computeValueRangeForChart(chartData.series, chartData.axes);
6501
+ const layout = chunkLTEDT475_js.computeLayout(element.width, element.height, style, true, legendPos);
6502
+ const range = chunkLTEDT475_js.computeValueRangeForChart(chartData.series, chartData.axes);
6511
6503
  const catCount = Math.max(categoryLabels.length, 1);
6512
6504
  const seriesCount = chartData.series.length;
6513
6505
  const cellW = layout.plotWidth / Math.max(catCount - 1, 1);
@@ -6570,7 +6562,7 @@ function renderSurfaceChart(element, chartData, categoryLabels) {
6570
6562
  function renderTreemapChart(element, chartData, categoryLabels) {
6571
6563
  const style = chartData.style;
6572
6564
  const legendPos = style?.legendPosition || "b";
6573
- const layout = chunkWK56SFN7_js.computeLayout(element.width, element.height, style, false, legendPos);
6565
+ const layout = chunkLTEDT475_js.computeLayout(element.width, element.height, style, false, legendPos);
6574
6566
  const allValues = chartData.series.flatMap((s) => s.values);
6575
6567
  const totalAbs = allValues.reduce((sum, v) => sum + Math.abs(v), 0) || 1;
6576
6568
  const rects = [];
@@ -6593,7 +6585,7 @@ function renderTreemapChart(element, chartData, categoryLabels) {
6593
6585
  y: curY,
6594
6586
  width: Math.max(w - 1, 1),
6595
6587
  height: Math.max(h - 1, 1),
6596
- fill: chunkWK56SFN7_js.paletteColor(item.index, chartData.style?.styleId, chartData.colorPalette),
6588
+ fill: chunkLTEDT475_js.paletteColor(item.index, chartData.style?.styleId, chartData.colorPalette),
6597
6589
  rx: 2,
6598
6590
  opacity: 0.85
6599
6591
  },
@@ -6646,8 +6638,8 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
6646
6638
  const style = chartData.style;
6647
6639
  const legendPos = style?.legendPosition || "b";
6648
6640
  const values = chartData.series[0]?.values ?? [];
6649
- const range = chunkWK56SFN7_js.computeValueRangeForChart(chartData.series, chartData.axes);
6650
- const layout = chunkWK56SFN7_js.computeLayout(element.width, element.height, style, true, legendPos);
6641
+ const range = chunkLTEDT475_js.computeValueRangeForChart(chartData.series, chartData.axes);
6642
+ const layout = chunkLTEDT475_js.computeLayout(element.width, element.height, style, true, legendPos);
6651
6643
  const catCount = Math.max(categoryLabels.length, values.length, 1);
6652
6644
  const barWidth = layout.plotWidth / catCount * 0.6;
6653
6645
  const gap = layout.plotWidth / catCount * 0.2;
@@ -6658,8 +6650,8 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
6658
6650
  const isLast = i === values.length - 1;
6659
6651
  const startVal = isLast ? 0 : runningTotal;
6660
6652
  const endVal = isLast ? runningTotal + val : runningTotal + val;
6661
- const barStartY = chunkWK56SFN7_js.valueToY(startVal, range, layout.plotTop, layout.plotBottom);
6662
- const barEndY = chunkWK56SFN7_js.valueToY(endVal, range, layout.plotTop, layout.plotBottom);
6653
+ const barStartY = chunkLTEDT475_js.valueToY(startVal, range, layout.plotTop, layout.plotBottom);
6654
+ const barEndY = chunkLTEDT475_js.valueToY(endVal, range, layout.plotTop, layout.plotBottom);
6663
6655
  const x = layout.plotLeft + layout.plotWidth / catCount * i + gap;
6664
6656
  const y = Math.min(barStartY, barEndY);
6665
6657
  const h = Math.max(Math.abs(barEndY - barStartY), 1);
@@ -6688,7 +6680,7 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
6688
6680
  textAnchor: "middle",
6689
6681
  fontSize: 7,
6690
6682
  fill: "#334155",
6691
- children: chunkWK56SFN7_js.formatAxisValue(isLast ? endVal : val)
6683
+ children: chunkLTEDT475_js.formatAxisValue(isLast ? endVal : val)
6692
6684
  },
6693
6685
  `${element.id}-wf-dl-${i}`
6694
6686
  )
@@ -6736,18 +6728,18 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
6736
6728
  function renderComboChart(element, chartData, categoryLabels) {
6737
6729
  const style = chartData.style;
6738
6730
  const legendPos = style?.legendPosition || "b";
6739
- const layoutOpts = chunkWK56SFN7_js.computeLayoutOptions(
6731
+ const layoutOpts = chunkLTEDT475_js.computeLayoutOptions(
6740
6732
  chartData.axes,
6741
6733
  chartData.dataTable,
6742
6734
  chartData.series.length
6743
6735
  );
6744
- const layout = chunkWK56SFN7_js.computeLayout(element.width, element.height, style, true, legendPos, layoutOpts);
6745
- const { primary, secondary } = chunkWK56SFN7_js.splitSeriesByAxis(chartData.series, chartData.axes);
6736
+ const layout = chunkLTEDT475_js.computeLayout(element.width, element.height, style, true, legendPos, layoutOpts);
6737
+ const { primary, secondary } = chunkLTEDT475_js.splitSeriesByAxis(chartData.series, chartData.axes);
6746
6738
  const primarySeries = primary.length > 0 ? primary.map((e) => e.series) : chartData.series;
6747
6739
  const secondarySeries = secondary.map((e) => e.series);
6748
- const range = chunkWK56SFN7_js.computeValueRangeForChart(primarySeries, chartData.axes);
6749
- const secondaryRange = secondarySeries.length > 0 ? chunkWK56SFN7_js.computeValueRange(secondarySeries) : void 0;
6750
- const secondaryAxisFmt = chunkWK56SFN7_js.getSecondaryValueAxis(chartData.axes);
6740
+ const range = chunkLTEDT475_js.computeValueRangeForChart(primarySeries, chartData.axes);
6741
+ const secondaryRange = secondarySeries.length > 0 ? chunkLTEDT475_js.computeValueRange(secondarySeries) : void 0;
6742
+ const secondaryAxisFmt = chunkLTEDT475_js.getSecondaryValueAxis(chartData.axes);
6751
6743
  const catCount = Math.max(categoryLabels.length, 1);
6752
6744
  const barSeriesCount = 1;
6753
6745
  const barGroupWidth = layout.plotWidth / catCount;
@@ -6763,8 +6755,8 @@ function renderComboChart(element, chartData, categoryLabels) {
6763
6755
  const barRange = isBarSecondary && secondaryRange ? secondaryRange : range;
6764
6756
  barSeries.values.forEach((val, vi) => {
6765
6757
  const x = layout.plotLeft + barGroupWidth * vi + barOffset;
6766
- const zeroY = chunkWK56SFN7_js.valueToY(0, barRange, layout.plotTop, layout.plotBottom);
6767
- const valY = chunkWK56SFN7_js.valueToY(val, barRange, layout.plotTop, layout.plotBottom);
6758
+ const zeroY = chunkLTEDT475_js.valueToY(0, barRange, layout.plotTop, layout.plotBottom);
6759
+ const valY = chunkLTEDT475_js.valueToY(val, barRange, layout.plotTop, layout.plotBottom);
6768
6760
  const y = Math.min(zeroY, valY);
6769
6761
  const h = Math.max(Math.abs(zeroY - valY), 1);
6770
6762
  barElements.push(
@@ -6775,7 +6767,7 @@ function renderComboChart(element, chartData, categoryLabels) {
6775
6767
  y,
6776
6768
  width: barWidth,
6777
6769
  height: h,
6778
- fill: chunkWK56SFN7_js.seriesColor(barSeries, 0, chartData.style?.styleId, chartData.colorPalette),
6770
+ fill: chunkLTEDT475_js.seriesColor(barSeries, 0, chartData.style?.styleId, chartData.colorPalette),
6779
6771
  rx: 1
6780
6772
  },
6781
6773
  `${element.id}-combo-bar-${vi}`
@@ -6791,7 +6783,7 @@ function renderComboChart(element, chartData, categoryLabels) {
6791
6783
  textAnchor: "middle",
6792
6784
  fontSize: 7,
6793
6785
  fill: "#334155",
6794
- children: chunkWK56SFN7_js.formatAxisValue(val)
6786
+ children: chunkLTEDT475_js.formatAxisValue(val)
6795
6787
  },
6796
6788
  `${element.id}-combo-bar-dl-${vi}`
6797
6789
  )
@@ -6808,10 +6800,10 @@ function renderComboChart(element, chartData, categoryLabels) {
6808
6800
  const activeRange = isSecondary && secondaryRange ? secondaryRange : range;
6809
6801
  const points = series.values.map((val, vi) => {
6810
6802
  const x = layout.plotLeft + barGroupWidth * vi + barGroupWidth / 2;
6811
- const y = chunkWK56SFN7_js.valueToY(val, activeRange, layout.plotTop, layout.plotBottom);
6803
+ const y = chunkLTEDT475_js.valueToY(val, activeRange, layout.plotTop, layout.plotBottom);
6812
6804
  return { x, y, val };
6813
6805
  });
6814
- const c = chunkWK56SFN7_js.seriesColor(series, seriesIdx, chartData.style?.styleId, chartData.colorPalette);
6806
+ const c = chunkLTEDT475_js.seriesColor(series, seriesIdx, chartData.style?.styleId, chartData.colorPalette);
6815
6807
  lineElements.push(
6816
6808
  /* @__PURE__ */ jsxRuntime.jsx(
6817
6809
  "polyline",
@@ -6838,7 +6830,7 @@ function renderComboChart(element, chartData, categoryLabels) {
6838
6830
  textAnchor: "middle",
6839
6831
  fontSize: 7,
6840
6832
  fill: "#334155",
6841
- children: chunkWK56SFN7_js.formatAxisValue(p.val)
6833
+ children: chunkLTEDT475_js.formatAxisValue(p.val)
6842
6834
  },
6843
6835
  `${element.id}-combo-line-dl-${si}-${vi}`
6844
6836
  )
@@ -7984,14 +7976,14 @@ function buildNotesPdf(pages) {
7984
7976
  notes: page.notes,
7985
7977
  slideNumber: page.slideNumber
7986
7978
  }));
7987
- const bytes = chunkWK56SFN7_js.buildNotesPdfBytes(images, meta);
7979
+ const bytes = chunkLTEDT475_js.buildNotesPdfBytes(images, meta);
7988
7980
  const blob = new Blob([bytes], { type: "application/pdf" });
7989
7981
  return URL.createObjectURL(blob);
7990
7982
  }
7991
7983
 
7992
7984
  // src/viewer/utils/pdf-builder-slides.ts
7993
7985
  function buildPdfFromImageData(images) {
7994
- const bytes = chunkWK56SFN7_js.buildSlidesPdfBytes(images);
7986
+ const bytes = chunkLTEDT475_js.buildSlidesPdfBytes(images);
7995
7987
  const blob = new Blob([bytes], { type: "application/pdf" });
7996
7988
  return URL.createObjectURL(blob);
7997
7989
  }
@@ -8000,7 +7992,7 @@ function buildPdfFromImageData(images) {
8000
7992
  var activePreview = null;
8001
7993
  function startPreviewAnimation(elementId, preset, options) {
8002
7994
  stopPreviewAnimation();
8003
- const descriptor = chunkWK56SFN7_js.buildPreviewAnimation(preset, options);
7995
+ const descriptor = chunkLTEDT475_js.buildPreviewAnimation(preset, options);
8004
7996
  if (!descriptor) {
8005
7997
  return;
8006
7998
  }