pptx-react-viewer 2.7.1 → 2.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/{AiChatPanel-YAYQ5KUT.mjs → AiChatPanel-6W6ZBAGU.mjs} +4 -4
  3. package/dist/AiChatPanel-6W6ZBAGU.mjs.br +0 -0
  4. package/dist/AiChatPanel-6W6ZBAGU.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-SRKOMEW6.js → AiChatPanel-MALC32TM.js} +23 -23
  6. package/dist/AiChatPanel-MALC32TM.js.br +0 -0
  7. package/dist/AiChatPanel-MALC32TM.js.gz +0 -0
  8. package/dist/{Model3DScene-HYMOPMAM.mjs → Model3DScene-57HZ4NVD.mjs} +1 -1
  9. package/dist/Model3DScene-57HZ4NVD.mjs.br +0 -0
  10. package/dist/Model3DScene-57HZ4NVD.mjs.gz +0 -0
  11. package/dist/{Model3DScene-ONKC5Z6A.js → Model3DScene-76R2YXSO.js} +2 -2
  12. package/dist/Model3DScene-76R2YXSO.js.br +0 -0
  13. package/dist/Model3DScene-76R2YXSO.js.gz +0 -0
  14. package/dist/{SurfaceChart3DScene-YJFWGG5L.js → SurfaceChart3DScene-2QZZTBV4.js} +2 -2
  15. package/dist/SurfaceChart3DScene-2QZZTBV4.js.br +0 -0
  16. package/dist/SurfaceChart3DScene-2QZZTBV4.js.gz +0 -0
  17. package/dist/{SurfaceChart3DScene-B3FK4Q2U.mjs → SurfaceChart3DScene-JGOQNHSU.mjs} +1 -1
  18. package/dist/SurfaceChart3DScene-JGOQNHSU.mjs.br +0 -0
  19. package/dist/SurfaceChart3DScene-JGOQNHSU.mjs.gz +0 -0
  20. package/dist/{chunk-25VSL2BB.js → chunk-2JDWFMIK.js} +259 -17
  21. package/dist/chunk-2JDWFMIK.js.br +0 -0
  22. package/dist/chunk-2JDWFMIK.js.gz +0 -0
  23. package/dist/{chunk-GRW7HM6X.js → chunk-34BUZNKO.js} +370 -364
  24. package/dist/chunk-34BUZNKO.js.br +0 -0
  25. package/dist/chunk-34BUZNKO.js.gz +0 -0
  26. package/dist/{chunk-IDK6XECR.mjs → chunk-4FO4JMTN.mjs} +103 -172
  27. package/dist/chunk-4FO4JMTN.mjs.br +0 -0
  28. package/dist/chunk-4FO4JMTN.mjs.gz +0 -0
  29. package/dist/{chunk-N7EZIKF4.mjs → chunk-6OLS3EJW.mjs} +1 -1
  30. package/dist/chunk-6OLS3EJW.mjs.br +0 -0
  31. package/dist/chunk-6OLS3EJW.mjs.gz +0 -0
  32. package/dist/{chunk-BVK7K74O.js → chunk-6UXRNLHD.js} +5462 -3150
  33. package/dist/chunk-6UXRNLHD.js.br +0 -0
  34. package/dist/chunk-6UXRNLHD.js.gz +0 -0
  35. package/dist/{chunk-Z6HIZWIQ.mjs → chunk-CD434OFE.mjs} +259 -17
  36. package/dist/chunk-CD434OFE.mjs.br +0 -0
  37. package/dist/chunk-CD434OFE.mjs.gz +0 -0
  38. package/dist/{chunk-JEIMWRKF.js → chunk-D6SHCB4V.js} +414 -483
  39. package/dist/chunk-D6SHCB4V.js.br +0 -0
  40. package/dist/chunk-D6SHCB4V.js.gz +0 -0
  41. package/dist/{chunk-LYS44KMG.js → chunk-IKISUZKE.js} +2605 -816
  42. package/dist/chunk-IKISUZKE.js.br +0 -0
  43. package/dist/chunk-IKISUZKE.js.gz +0 -0
  44. package/dist/{chunk-HQGLKAIY.mjs → chunk-JPTO6P5K.mjs} +135 -130
  45. package/dist/chunk-JPTO6P5K.mjs.br +0 -0
  46. package/dist/chunk-JPTO6P5K.mjs.gz +0 -0
  47. package/dist/{chunk-HEAJOHLJ.mjs → chunk-L47Y62L6.mjs} +2539 -809
  48. package/dist/chunk-L47Y62L6.mjs.br +0 -0
  49. package/dist/chunk-L47Y62L6.mjs.gz +0 -0
  50. package/dist/{chunk-2UCJYJUS.mjs → chunk-NQLVK23T.mjs} +4120 -1808
  51. package/dist/chunk-NQLVK23T.mjs.br +0 -0
  52. package/dist/chunk-NQLVK23T.mjs.gz +0 -0
  53. package/dist/{chunk-JVE7BZ25.js → chunk-YEM2VOAP.js} +3 -3
  54. package/dist/chunk-YEM2VOAP.js.br +0 -0
  55. package/dist/chunk-YEM2VOAP.js.gz +0 -0
  56. package/dist/i18n.js +4 -4
  57. package/dist/i18n.js.br +0 -0
  58. package/dist/i18n.js.gz +0 -0
  59. package/dist/i18n.mjs +1 -1
  60. package/dist/i18n.mjs.br +0 -0
  61. package/dist/i18n.mjs.gz +0 -0
  62. package/dist/index.d.ts +34 -0
  63. package/dist/index.js +36 -36
  64. package/dist/index.js.br +0 -0
  65. package/dist/index.js.gz +0 -0
  66. package/dist/index.mjs +6 -6
  67. package/dist/index.mjs.br +0 -0
  68. package/dist/index.mjs.gz +0 -0
  69. package/dist/internals.d.ts +44 -1
  70. package/dist/internals.d.ts.map +1 -1
  71. package/dist/internals.js +79 -79
  72. package/dist/internals.js.br +0 -0
  73. package/dist/internals.js.gz +0 -0
  74. package/dist/internals.mjs +4 -4
  75. package/dist/internals.mjs.br +0 -0
  76. package/dist/internals.mjs.gz +0 -0
  77. package/dist/pptx-viewer.css +1 -1
  78. package/dist/pptx-viewer.css.br +0 -0
  79. package/dist/pptx-viewer.css.gz +0 -0
  80. package/dist/{useViewerBuildingBlocks-DMDZRawe.d.ts → useViewerBuildingBlocks-C59NY1qZ.d.ts} +15 -2
  81. package/dist/useViewerBuildingBlocks-C59NY1qZ.d.ts.map +1 -0
  82. package/dist/viewer/index.d.ts +21 -0
  83. package/dist/viewer/index.js +22 -22
  84. package/dist/viewer/index.js.br +0 -0
  85. package/dist/viewer/index.js.gz +0 -0
  86. package/dist/viewer/index.mjs +6 -6
  87. package/dist/viewer/index.mjs.br +0 -0
  88. package/dist/viewer/index.mjs.gz +0 -0
  89. package/package.json +1 -1
  90. package/dist/AiChatPanel-SRKOMEW6.js.br +0 -0
  91. package/dist/AiChatPanel-SRKOMEW6.js.gz +0 -0
  92. package/dist/AiChatPanel-YAYQ5KUT.mjs.br +0 -0
  93. package/dist/AiChatPanel-YAYQ5KUT.mjs.gz +0 -0
  94. package/dist/Model3DScene-HYMOPMAM.mjs.br +0 -0
  95. package/dist/Model3DScene-HYMOPMAM.mjs.gz +0 -0
  96. package/dist/Model3DScene-ONKC5Z6A.js.br +0 -0
  97. package/dist/Model3DScene-ONKC5Z6A.js.gz +0 -0
  98. package/dist/SurfaceChart3DScene-B3FK4Q2U.mjs.br +0 -0
  99. package/dist/SurfaceChart3DScene-B3FK4Q2U.mjs.gz +0 -0
  100. package/dist/SurfaceChart3DScene-YJFWGG5L.js.br +0 -0
  101. package/dist/SurfaceChart3DScene-YJFWGG5L.js.gz +0 -0
  102. package/dist/chunk-25VSL2BB.js.br +0 -0
  103. package/dist/chunk-25VSL2BB.js.gz +0 -0
  104. package/dist/chunk-2UCJYJUS.mjs.br +0 -0
  105. package/dist/chunk-2UCJYJUS.mjs.gz +0 -0
  106. package/dist/chunk-BVK7K74O.js.br +0 -0
  107. package/dist/chunk-BVK7K74O.js.gz +0 -0
  108. package/dist/chunk-GRW7HM6X.js.br +0 -0
  109. package/dist/chunk-GRW7HM6X.js.gz +0 -0
  110. package/dist/chunk-HEAJOHLJ.mjs.br +0 -0
  111. package/dist/chunk-HEAJOHLJ.mjs.gz +0 -0
  112. package/dist/chunk-HQGLKAIY.mjs.br +0 -0
  113. package/dist/chunk-HQGLKAIY.mjs.gz +0 -0
  114. package/dist/chunk-IDK6XECR.mjs.br +0 -0
  115. package/dist/chunk-IDK6XECR.mjs.gz +0 -0
  116. package/dist/chunk-JEIMWRKF.js.br +0 -0
  117. package/dist/chunk-JEIMWRKF.js.gz +0 -0
  118. package/dist/chunk-JVE7BZ25.js.br +0 -0
  119. package/dist/chunk-JVE7BZ25.js.gz +0 -0
  120. package/dist/chunk-LYS44KMG.js.br +0 -0
  121. package/dist/chunk-LYS44KMG.js.gz +0 -0
  122. package/dist/chunk-N7EZIKF4.mjs.br +0 -0
  123. package/dist/chunk-N7EZIKF4.mjs.gz +0 -0
  124. package/dist/chunk-Z6HIZWIQ.mjs.br +0 -0
  125. package/dist/chunk-Z6HIZWIQ.mjs.gz +0 -0
  126. package/dist/useViewerBuildingBlocks-DMDZRawe.d.ts.map +0 -1
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunk25VSL2BB_js = require('./chunk-25VSL2BB.js');
4
- var chunkLYS44KMG_js = require('./chunk-LYS44KMG.js');
3
+ var chunk2JDWFMIK_js = require('./chunk-2JDWFMIK.js');
4
+ var chunkIKISUZKE_js = require('./chunk-IKISUZKE.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 chunkLYS44KMG_js.getAnimationInitialStyle(preset, nativeAnimation);
18
+ return chunkIKISUZKE_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 chunkLYS44KMG_js.cloneHistorySnapshot(snapshot);
26
+ return chunkIKISUZKE_js.cloneHistorySnapshot(snapshot);
27
27
  }
28
28
 
29
29
  // src/viewer/constants/scalar.ts
@@ -31,7 +31,6 @@ var DEFAULT_CANVAS_WIDTH = 1280;
31
31
  var DEFAULT_CANVAS_HEIGHT = 720;
32
32
  var MIN_ELEMENT_SIZE = 12;
33
33
  var EMU_PER_PX = 9525;
34
- var DEFAULT_BODY_INSET_LR_PX = 91440 / 9525;
35
34
  var DEFAULT_BODY_INSET_TB_PX = 45720 / 9525;
36
35
  var DEFAULT_TEXT_COLOR = "#111827";
37
36
  var DEFAULT_FILL_COLOR = "#3b82f6";
@@ -44,8 +43,6 @@ var DEFAULT_TABLE_COLUMNS = 3;
44
43
  var SHAPE_ADJUSTMENT_MIN = 0;
45
44
  var SHAPE_ADJUSTMENT_MAX = 5e4;
46
45
  var DEFAULT_ROUND_RECT_ADJUSTMENT = 16667;
47
- var MIN_ZOOM_SCALE = 0.2;
48
- var MAX_ZOOM_SCALE = 5;
49
46
  var ZOOM_TO_SELECTION_PADDING = 96;
50
47
  var GRID_SIZE = 8;
51
48
  var SLIDE_NAV_THUMBNAIL_WIDTH = 156;
@@ -66,48 +63,25 @@ var TOOLBAR_SECTIONS = [
66
63
  { id: "view", labelKey: "pptx.ribbon.tab.view" },
67
64
  { id: "help", labelKey: "pptx.ribbon.tab.help" }
68
65
  ];
69
- var SHORTCUT_REFERENCE_ITEMS = [
70
- { actionKey: "pptx.toolbar.undo", shortcut: "Ctrl/Cmd+Z" },
71
- { actionKey: "pptx.toolbar.redo", shortcut: "Ctrl/Cmd+Shift+Z or Ctrl/Cmd+Y" },
72
- { actionKey: "pptx.shortcuts.action.copyElement", shortcut: "Ctrl/Cmd+C" },
73
- { actionKey: "pptx.shortcuts.action.cutElement", shortcut: "Ctrl/Cmd+X" },
74
- { actionKey: "pptx.shortcuts.action.pasteElement", shortcut: "Ctrl/Cmd+V" },
75
- { actionKey: "pptx.shortcuts.action.duplicateElement", shortcut: "Ctrl/Cmd+D" },
76
- { actionKey: "pptx.shortcuts.action.deleteElement", shortcut: "Delete / Backspace" },
77
- { actionKey: "pptx.shortcuts.action.nudgeElement", shortcut: "Arrow keys" },
78
- { actionKey: "pptx.shortcuts.action.nudgeElementLarge", shortcut: "Shift+Arrow keys" },
79
- { actionKey: "pptx.shortcuts.action.zoomCanvas", shortcut: "Ctrl/Cmd+Mouse wheel" },
80
- { actionKey: "pptx.shortcuts.action.commitTextEdit", shortcut: "Ctrl/Cmd+Enter" },
81
- { actionKey: "pptx.shortcuts.action.cancelTextEdit", shortcut: "Escape" }
66
+ var SHORTCUT_REFERENCE_ITEMS = chunkIKISUZKE_js.VIEWER_SHORTCUT_REFERENCE;
67
+
68
+ // src/viewer/constants/theme.ts
69
+ var THEME_COLOR_SWATCHES = [
70
+ "#000000",
71
+ "#FFFFFF",
72
+ "#1F497D",
73
+ "#EEECE1",
74
+ "#4472C4",
75
+ "#ED7D31",
76
+ "#A5A5A5",
77
+ "#FFC000",
78
+ "#5B9BD5",
79
+ "#70AD47",
80
+ "#0563C1",
81
+ "#954F72"
82
82
  ];
83
83
 
84
84
  // src/viewer/constants/transitions-animations.ts
85
- var SLIDE_TRANSITION_OPTIONS = [
86
- { value: "none", label: "None", i18nKey: "pptx.transition.none" },
87
- { value: "cut", label: "Cut", i18nKey: "pptx.ribbon.transition.cut" },
88
- { value: "fade", label: "Fade", i18nKey: "pptx.ribbon.transition.fade" },
89
- { value: "push", label: "Push", i18nKey: "pptx.ribbon.transition.push" },
90
- { value: "wipe", label: "Wipe", i18nKey: "pptx.ribbon.transition.wipe" },
91
- { value: "split", label: "Split", i18nKey: "pptx.ribbon.transition.split" },
92
- { value: "randomBar", label: "Random Bars", i18nKey: "pptx.transitionPresets.randomBars" },
93
- { value: "blinds", label: "Blinds", i18nKey: "pptx.transitionPresets.blinds" },
94
- { value: "checker", label: "Checker", i18nKey: "pptx.transitionPresets.checker" },
95
- { value: "circle", label: "Circle", i18nKey: "pptx.transitionPresets.circle" },
96
- { value: "comb", label: "Comb", i18nKey: "pptx.transitionPresets.comb" },
97
- { value: "cover", label: "Cover", i18nKey: "pptx.ribbon.transition.cover" },
98
- { value: "diamond", label: "Diamond", i18nKey: "pptx.transitionPresets.diamond" },
99
- { value: "dissolve", label: "Dissolve", i18nKey: "pptx.transitionPresets.dissolve" },
100
- { value: "plus", label: "Plus", i18nKey: "pptx.transitionPresets.plus" },
101
- { value: "pull", label: "Pull", i18nKey: "pptx.transitionPresets.pull" },
102
- { value: "random", label: "Random", i18nKey: "pptx.transitionPresets.random" },
103
- { value: "strips", label: "Strips", i18nKey: "pptx.transitionPresets.strips" },
104
- { value: "uncover", label: "Uncover", i18nKey: "pptx.ribbon.transition.uncover" },
105
- { value: "wedge", label: "Wedge", i18nKey: "pptx.transitionPresets.wedge" },
106
- { value: "wheel", label: "Wheel", i18nKey: "pptx.transitionPresets.wheel" },
107
- { value: "zoom", label: "Zoom", i18nKey: "pptx.transitionPresets.zoom" },
108
- { value: "newsflash", label: "Newsflash", i18nKey: "pptx.transitionPresets.newsflash" },
109
- { value: "morph", label: "Morph", i18nKey: "pptx.transitionPresets.morph" }
110
- ];
111
85
  var ANIMATION_PRESET_OPTIONS = [
112
86
  { value: "fadeIn", label: "Fade In", i18nKey: "pptx.animation.preset.fadeIn" },
113
87
  { value: "flyIn", label: "Fly In", i18nKey: "pptx.animation.preset.flyIn" },
@@ -133,7 +107,7 @@ var GLYPH_COMPONENTS = {
133
107
  plus: lu.LuPlus,
134
108
  triangle: lu.LuTriangle
135
109
  };
136
- var SHAPE_PRESETS = chunkLYS44KMG_js.SHAPE_PRESET_DEFS.map(
110
+ var SHAPE_PRESETS = chunkIKISUZKE_js.SHAPE_PRESET_DEFS.map(
137
111
  (def) => ({
138
112
  type: def.type,
139
113
  label: def.label,
@@ -144,6 +118,47 @@ var SHAPE_PRESETS = chunkLYS44KMG_js.SHAPE_PRESET_DEFS.map(
144
118
  })
145
119
  );
146
120
 
121
+ // src/viewer/constants/connectors-strokes.ts
122
+ var CONNECTOR_ARROW_OPTIONS = [
123
+ { value: "none", label: "None", i18nKey: "pptx.arrowhead.none" },
124
+ { value: "triangle", label: "Triangle", i18nKey: "pptx.arrowhead.triangle" },
125
+ { value: "stealth", label: "Stealth", i18nKey: "pptx.arrowhead.stealth" },
126
+ { value: "diamond", label: "Diamond", i18nKey: "pptx.arrowhead.diamond" },
127
+ { value: "oval", label: "Oval", i18nKey: "pptx.arrowhead.oval" },
128
+ { value: "arrow", label: "Open Arrow", i18nKey: "pptx.arrowhead.openArrow" }
129
+ ];
130
+ var ARROW_SIZE_OPTIONS = [
131
+ { value: "sm", label: "Small", i18nKey: "pptx.connectorOptions.sizeSmall" },
132
+ { value: "med", label: "Medium", i18nKey: "pptx.connectorOptions.sizeMedium" },
133
+ { value: "lg", label: "Large", i18nKey: "pptx.connectorOptions.sizeLarge" }
134
+ ];
135
+ var STROKE_DASH_OPTIONS = [
136
+ { value: "solid", label: "Solid", i18nKey: "pptx.stroke.dashSolid" },
137
+ { value: "dot", label: "Dot", i18nKey: "pptx.stroke.dashDot" },
138
+ { value: "dash", label: "Dash", i18nKey: "pptx.stroke.dashDash" },
139
+ { value: "dashDot", label: "Dash Dot", i18nKey: "pptx.stroke.dashDashDot" },
140
+ { value: "lgDash", label: "Long Dash", i18nKey: "pptx.connectorOptions.dashLongDash" },
141
+ { value: "lgDashDot", label: "Long Dash Dot", i18nKey: "pptx.connectorOptions.dashLongDashDot" },
142
+ {
143
+ value: "lgDashDotDot",
144
+ label: "Long Dash Dot Dot",
145
+ i18nKey: "pptx.connectorOptions.dashLongDashDotDot"
146
+ },
147
+ { value: "sysDot", label: "System Dot", i18nKey: "pptx.stroke.dashSysDot" },
148
+ { value: "sysDash", label: "System Dash", i18nKey: "pptx.stroke.dashSysDash" },
149
+ {
150
+ value: "sysDashDot",
151
+ label: "System Dash Dot",
152
+ i18nKey: "pptx.connectorOptions.dashSysDashDot"
153
+ },
154
+ {
155
+ value: "sysDashDotDot",
156
+ label: "System Dash Dot Dot",
157
+ i18nKey: "pptx.connectorOptions.dashSysDashDotDot"
158
+ },
159
+ { value: "custom", label: "Custom", i18nKey: "pptx.documentProperties.tabs.custom" }
160
+ ];
161
+
147
162
  // src/viewer/utils/shape-types.tsx
148
163
  function getShapeType(shapeType) {
149
164
  if (!shapeType) {
@@ -251,7 +266,7 @@ function isConnectorOrLineElement(element) {
251
266
  if (element.type === "connector") {
252
267
  return true;
253
268
  }
254
- if (!chunkLYS44KMG_js.hasShapeProperties(element)) {
269
+ if (!chunkIKISUZKE_js.hasShapeProperties(element)) {
255
270
  return false;
256
271
  }
257
272
  const st = getShapeType(element.shapeType);
@@ -262,12 +277,12 @@ function isConnectorOrLineElement(element) {
262
277
  function partitionTemplateElements(slides) {
263
278
  const templateElementsBySlideId = {};
264
279
  const nextSlides = slides.map((slide) => {
265
- const template = slide.elements.filter((el) => chunkLYS44KMG_js.isTemplateElement(el));
280
+ const template = slide.elements.filter((el) => chunkIKISUZKE_js.isTemplateElement(el));
266
281
  if (template.length === 0) {
267
282
  return slide;
268
283
  }
269
284
  templateElementsBySlideId[slide.id] = template;
270
- return { ...slide, elements: slide.elements.filter((el) => !chunkLYS44KMG_js.isTemplateElement(el)) };
285
+ return { ...slide, elements: slide.elements.filter((el) => !chunkIKISUZKE_js.isTemplateElement(el)) };
271
286
  });
272
287
  return { slides: nextSlides, templateElementsBySlideId };
273
288
  }
@@ -283,7 +298,7 @@ function buildSaveSlides(slides, templateElementsBySlideId) {
283
298
 
284
299
  // src/viewer/utils/image-style.ts
285
300
  function getImageMaskStyle(element) {
286
- if (!chunkLYS44KMG_js.hasShapeProperties(element)) {
301
+ if (!chunkIKISUZKE_js.hasShapeProperties(element)) {
287
302
  return void 0;
288
303
  }
289
304
  const shapeType = element.shapeType;
@@ -292,7 +307,7 @@ function getImageMaskStyle(element) {
292
307
  }
293
308
  const normalized = shapeType.toLowerCase();
294
309
  if (normalized === "roundrect" || normalized === "round1rect" || normalized === "round2samerect" || normalized === "round2diagrect" || normalized === "sniproundrect" || normalized === "snip1rect" || normalized === "snip2diagrect") {
295
- const radiusPx = chunkLYS44KMG_js.getRoundRectRadiusPx(element);
310
+ const radiusPx = chunkIKISUZKE_js.getRoundRectRadiusPx(element);
296
311
  if (radiusPx <= 0.01) {
297
312
  return void 0;
298
313
  }
@@ -304,7 +319,7 @@ function getImageMaskStyle(element) {
304
319
  if (normalized === "can" || normalized === "cylinder") {
305
320
  return { borderRadius: "48% / 12%" };
306
321
  }
307
- const clipPath = chunkLYS44KMG_js.getResolvedShapeClipPath(element);
322
+ const clipPath = chunkIKISUZKE_js.getResolvedShapeClipPath(element);
308
323
  if (!clipPath) {
309
324
  return void 0;
310
325
  }
@@ -312,7 +327,7 @@ function getImageMaskStyle(element) {
312
327
  }
313
328
  function getImageRenderStyle(element) {
314
329
  const maskStyle = getImageMaskStyle(element) || {};
315
- if (!chunkLYS44KMG_js.isImageLikeElement(element)) {
330
+ if (!chunkIKISUZKE_js.isImageLikeElement(element)) {
316
331
  return {
317
332
  ...maskStyle,
318
333
  width: "100%",
@@ -320,10 +335,10 @@ function getImageRenderStyle(element) {
320
335
  objectFit: "cover"
321
336
  };
322
337
  }
323
- const cropLeft = chunkLYS44KMG_js.clampCropValue(element.cropLeft);
324
- const cropTop = chunkLYS44KMG_js.clampCropValue(element.cropTop);
325
- const cropRight = chunkLYS44KMG_js.clampCropValue(element.cropRight);
326
- const cropBottom = chunkLYS44KMG_js.clampCropValue(element.cropBottom);
338
+ const cropLeft = chunkIKISUZKE_js.clampCropValue(element.cropLeft);
339
+ const cropTop = chunkIKISUZKE_js.clampCropValue(element.cropTop);
340
+ const cropRight = chunkIKISUZKE_js.clampCropValue(element.cropRight);
341
+ const cropBottom = chunkIKISUZKE_js.clampCropValue(element.cropBottom);
327
342
  const hasCrop = cropLeft + cropRight > 1e-4 || cropTop + cropBottom > 1e-4;
328
343
  if (!hasCrop) {
329
344
  return {
@@ -335,10 +350,10 @@ function getImageRenderStyle(element) {
335
350
  }
336
351
  const safeHorizontalScale = cropLeft + cropRight >= 0.99 ? 0.99 / (cropLeft + cropRight) : 1;
337
352
  const safeVerticalScale = cropTop + cropBottom >= 0.99 ? 0.99 / (cropTop + cropBottom) : 1;
338
- const normalizedLeft = chunkLYS44KMG_js.clampCropValue(cropLeft * safeHorizontalScale);
339
- const normalizedRight = chunkLYS44KMG_js.clampCropValue(cropRight * safeHorizontalScale);
340
- const normalizedTop = chunkLYS44KMG_js.clampCropValue(cropTop * safeVerticalScale);
341
- const normalizedBottom = chunkLYS44KMG_js.clampCropValue(cropBottom * safeVerticalScale);
353
+ const normalizedLeft = chunkIKISUZKE_js.clampCropValue(cropLeft * safeHorizontalScale);
354
+ const normalizedRight = chunkIKISUZKE_js.clampCropValue(cropRight * safeHorizontalScale);
355
+ const normalizedTop = chunkIKISUZKE_js.clampCropValue(cropTop * safeVerticalScale);
356
+ const normalizedBottom = chunkIKISUZKE_js.clampCropValue(cropBottom * safeVerticalScale);
342
357
  const remainingWidth = Math.max(0.01, 1 - normalizedLeft - normalizedRight);
343
358
  const remainingHeight = Math.max(0.01, 1 - normalizedTop - normalizedBottom);
344
359
  const tx = Math.round(-normalizedLeft / remainingWidth * 1e4) / 100;
@@ -367,7 +382,7 @@ var CROP_SHAPE_CLIP_PATHS = {
367
382
  star: "polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%)"
368
383
  };
369
384
  function getCropShapeClipPath(element) {
370
- if (!chunkLYS44KMG_js.isImageLikeElement(element)) {
385
+ if (!chunkIKISUZKE_js.isImageLikeElement(element)) {
371
386
  return void 0;
372
387
  }
373
388
  const shape = element.cropShape;
@@ -377,7 +392,7 @@ function getCropShapeClipPath(element) {
377
392
  return CROP_SHAPE_CLIP_PATHS[shape];
378
393
  }
379
394
  function isImageTiled(element) {
380
- if (!chunkLYS44KMG_js.isImageLikeElement(element)) {
395
+ if (!chunkIKISUZKE_js.isImageLikeElement(element)) {
381
396
  return false;
382
397
  }
383
398
  return typeof element.tileScaleX === "number" || typeof element.tileScaleY === "number";
@@ -435,7 +450,7 @@ function buildMirrorTiledBackground(src, flip, scaleX, scaleY) {
435
450
  };
436
451
  }
437
452
  function getImageTilingStyle(element) {
438
- if (!chunkLYS44KMG_js.isImageLikeElement(element) || !isImageTiled(element)) {
453
+ if (!chunkIKISUZKE_js.isImageLikeElement(element) || !isImageTiled(element)) {
439
454
  return void 0;
440
455
  }
441
456
  const scaleX = typeof element.tileScaleX === "number" ? element.tileScaleX * 100 : 100;
@@ -719,7 +734,7 @@ function executeMediaCommand(command) {
719
734
  if (!el) {
720
735
  return false;
721
736
  }
722
- const parsed = chunkLYS44KMG_js.parseMediaCommand(command.command);
737
+ const parsed = chunkIKISUZKE_js.parseMediaCommand(command.command);
723
738
  if (!parsed) {
724
739
  return false;
725
740
  }
@@ -990,7 +1005,7 @@ function PresentationMediaController({
990
1005
  }
991
1006
  function renderMediaElement(element, mediaDataUrls, options) {
992
1007
  if (element.type !== "media") {
993
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunk25VSL2BB_js.translationsEn["pptx.media.title"] });
1008
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunk2JDWFMIK_js.translationsEn["pptx.media.title"] });
994
1009
  }
995
1010
  const mediaType = element.mediaType;
996
1011
  const mediaPath = element.mediaPath;
@@ -1020,7 +1035,7 @@ function renderMediaElement(element, mediaDataUrls, options) {
1020
1035
  "img",
1021
1036
  {
1022
1037
  src: posterUrl,
1023
- alt: chunk25VSL2BB_js.translationsEn["pptx.media.posterAlt"],
1038
+ alt: chunk2JDWFMIK_js.translationsEn["pptx.media.posterAlt"],
1024
1039
  className: "w-full h-full object-contain opacity-50"
1025
1040
  }
1026
1041
  ),
@@ -1041,7 +1056,7 @@ function renderMediaElement(element, mediaDataUrls, options) {
1041
1056
  ]
1042
1057
  }
1043
1058
  ),
1044
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-white/60", children: chunk25VSL2BB_js.translationsEn["pptx.media.notFound"] })
1059
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-white/60", children: chunk2JDWFMIK_js.translationsEn["pptx.media.notFound"] })
1045
1060
  ] })
1046
1061
  ] });
1047
1062
  }
@@ -1082,7 +1097,7 @@ function renderMediaElement(element, mediaDataUrls, options) {
1082
1097
  "img",
1083
1098
  {
1084
1099
  src: posterUrl,
1085
- alt: chunk25VSL2BB_js.translationsEn["pptx.media.videoPosterAlt"],
1100
+ alt: chunk2JDWFMIK_js.translationsEn["pptx.media.videoPosterAlt"],
1086
1101
  className: "w-full h-full object-contain"
1087
1102
  }
1088
1103
  ),
@@ -1171,76 +1186,7 @@ function renderMediaElement(element, mediaDataUrls, options) {
1171
1186
 
1172
1187
  // src/viewer/utils/text-utils.tsx
1173
1188
  function getTextStyleForElement(element, fallbackColor) {
1174
- if (!chunkLYS44KMG_js.hasTextProperties(element)) {
1175
- return { color: fallbackColor };
1176
- }
1177
- const textDecorationTokens = [];
1178
- if (element.textStyle?.underline || element.textStyle?.hyperlink) {
1179
- textDecorationTokens.push("underline");
1180
- }
1181
- if (element.textStyle?.strikethrough) {
1182
- textDecorationTokens.push("line-through");
1183
- }
1184
- const isDoubleStrike = element.textStyle?.strikethrough && element.textStyle?.strikeType === "dblStrike";
1185
- const textDecorationStyle = isDoubleStrike ? "double" : void 0;
1186
- const hasItalicRuns = element.textStyle?.italic || Boolean(element.textSegments?.some((segment) => segment.style?.italic));
1187
- const isRtl = element.textStyle?.rtl === true;
1188
- const resolvedTextColor = element.textStyle?.hyperlink ? chunkLYS44KMG_js.normalizeHexColor(element.textStyle?.color, HYPERLINK_COLOR) : chunkLYS44KMG_js.normalizeHexColor(element.textStyle?.color, fallbackColor);
1189
- const bodyTop = element.textStyle?.bodyInsetTop ?? DEFAULT_BODY_INSET_TB_PX;
1190
- const bodyBottom = element.textStyle?.bodyInsetBottom ?? DEFAULT_BODY_INSET_TB_PX;
1191
- const bodyLeft = element.textStyle?.bodyInsetLeft ?? DEFAULT_BODY_INSET_LR_PX;
1192
- const bodyRight = element.textStyle?.bodyInsetRight ?? DEFAULT_BODY_INSET_LR_PX;
1193
- const hasParagraphIndents = (element.paragraphIndents?.length ?? 0) > 0;
1194
- const bodyIndent = hasParagraphIndents ? 0 : element.textStyle?.paragraphIndent || 0;
1195
- const bodyMarginLeft = hasParagraphIndents ? 0 : element.textStyle?.paragraphMarginLeft || 0;
1196
- const bodyMarginRight = hasParagraphIndents ? 0 : element.textStyle?.paragraphMarginRight || 0;
1197
- const writingMode = chunkLYS44KMG_js.toCssWritingMode(element.textStyle?.textDirection);
1198
- const textOrientation = chunkLYS44KMG_js.toCssTextOrientation(element.textStyle?.textDirection);
1199
- const verticalDirection = chunkLYS44KMG_js.toCssVerticalDirection(element.textStyle?.textDirection);
1200
- const resolvedDirection = verticalDirection || (isRtl ? "rtl" : "ltr");
1201
- const resolvedUnicodeBidi = isRtl ? "plaintext" : void 0;
1202
- const hasSegments = (element.textSegments?.length ?? 0) > 0;
1203
- return {
1204
- color: resolvedTextColor,
1205
- backgroundColor: !hasSegments && element.textStyle?.highlightColor ? chunkLYS44KMG_js.normalizeHexColor(element.textStyle.highlightColor, void 0) : void 0,
1206
- textAlign: (() => {
1207
- const a = element.textStyle?.align;
1208
- if (a === "justLow" || a === "dist" || a === "thaiDist") {
1209
- return "justify";
1210
- }
1211
- return a || (isRtl ? "right" : "left");
1212
- })(),
1213
- direction: resolvedDirection,
1214
- unicodeBidi: resolvedUnicodeBidi,
1215
- fontSize: element.textStyle?.fontSize || DEFAULT_TEXT_FONT_SIZE,
1216
- fontWeight: element.textStyle?.bold ? 700 : 400,
1217
- fontStyle: element.textStyle?.italic ? "italic" : "normal",
1218
- textDecorationLine: textDecorationTokens.length > 0 ? textDecorationTokens.join(" ") : "none",
1219
- textDecorationStyle,
1220
- fontFamily: element.textStyle?.fontFamily || DEFAULT_FONT_FAMILY,
1221
- lineHeight: chunkLYS44KMG_js.resolveLineHeight(element.textStyle, hasItalicRuns),
1222
- paddingTop: bodyTop + (hasItalicRuns ? 1 : 0),
1223
- paddingBottom: bodyBottom + (hasItalicRuns ? 1 : 0),
1224
- paddingLeft: bodyLeft + bodyMarginLeft,
1225
- paddingRight: bodyRight + bodyMarginRight,
1226
- textIndent: bodyIndent,
1227
- overflow: "visible",
1228
- writingMode,
1229
- textOrientation,
1230
- ...element.textStyle?.textWrap === "none" ? { whiteSpace: "nowrap", overflow: "visible" } : {},
1231
- // Auto-fit: use OOXML-provided fontScale/lnSpcReduction when available,
1232
- // otherwise fall back to heuristic estimation. The pure font-scale maths
1233
- // now lives in pptx-viewer-shared (computeAutoFitTextStyle).
1234
- ...chunkLYS44KMG_js.computeAutoFitTextStyle({
1235
- textStyle: element.textStyle,
1236
- text: element.text ?? "",
1237
- width: element.width,
1238
- height: element.height,
1239
- bodyInsetVertical: bodyTop + bodyBottom,
1240
- hasItalicRuns,
1241
- defaultFontSize: DEFAULT_TEXT_FONT_SIZE
1242
- })
1243
- };
1189
+ return chunkIKISUZKE_js.buildTextBlockStyle(element, { fallbackColor });
1244
1190
  }
1245
1191
 
1246
1192
  // src/viewer/utils/text-layout.tsx
@@ -1265,13 +1211,13 @@ function computeTabSize(tabStops, defaultTabSize) {
1265
1211
  return avgGap > 0 ? `${Math.round(avgGap)}px` : fromDefault;
1266
1212
  }
1267
1213
  function getTextLayoutStyle(element) {
1268
- if (!chunkLYS44KMG_js.hasTextProperties(element)) {
1214
+ if (!chunkIKISUZKE_js.hasTextProperties(element)) {
1269
1215
  return {};
1270
1216
  }
1271
1217
  const verticalAlign = element.textStyle?.vAlign || "top";
1272
- const writingMode = chunkLYS44KMG_js.toCssWritingMode(element.textStyle?.textDirection);
1273
- const textOrientation = chunkLYS44KMG_js.toCssTextOrientation(element.textStyle?.textDirection);
1274
- const verticalDirection = chunkLYS44KMG_js.toCssVerticalDirection(element.textStyle?.textDirection);
1218
+ const writingMode = chunkIKISUZKE_js.toCssWritingMode(element.textStyle?.textDirection);
1219
+ const textOrientation = chunkIKISUZKE_js.toCssTextOrientation(element.textStyle?.textDirection);
1220
+ const verticalDirection = chunkIKISUZKE_js.toCssVerticalDirection(element.textStyle?.textDirection);
1275
1221
  const parsedColumnCount = Number(element.textStyle?.columnCount);
1276
1222
  const columnCount = Number.isFinite(parsedColumnCount) ? Math.max(1, Math.min(16, Math.round(parsedColumnCount))) : 1;
1277
1223
  const hasColumns = columnCount > 1;
@@ -1279,7 +1225,7 @@ function getTextLayoutStyle(element) {
1279
1225
  const tabStops = element.textStyle?.tabStops;
1280
1226
  const tabSize = computeTabSize(tabStops, element.textStyle?.defaultTabSize);
1281
1227
  const textWrapNone = element.textStyle?.textWrap === "none";
1282
- const hasParagraphIndents = chunkLYS44KMG_js.hasTextProperties(element) && element.paragraphIndents && element.paragraphIndents.length > 0;
1228
+ const hasParagraphIndents = chunkIKISUZKE_js.hasTextProperties(element) && element.paragraphIndents && element.paragraphIndents.length > 0;
1283
1229
  const paragraphMarginLeft = element.textStyle?.paragraphMarginLeft;
1284
1230
  const paragraphIndent = element.textStyle?.paragraphIndent;
1285
1231
  const marginLeft = !hasParagraphIndents && typeof paragraphMarginLeft === "number" && paragraphMarginLeft !== 0 ? paragraphMarginLeft : void 0;
@@ -1288,7 +1234,7 @@ function getTextLayoutStyle(element) {
1288
1234
  const bodyBottom = element.textStyle?.bodyInsetBottom ?? DEFAULT_BODY_INSET_TB_PX;
1289
1235
  const parsedColumnSpacing = Number(element.textStyle?.columnSpacing);
1290
1236
  const columnGap = Number.isFinite(parsedColumnSpacing) && parsedColumnSpacing > 0 ? `${parsedColumnSpacing}px` : "0.75em";
1291
- const kinsokuStyles = chunkLYS44KMG_js.getKinsokuLineBreakStyles(element.textStyle);
1237
+ const kinsokuStyles = chunkIKISUZKE_js.getKinsokuLineBreakStyles(element.textStyle);
1292
1238
  if (hasColumns) {
1293
1239
  return {
1294
1240
  display: "block",
@@ -1335,10 +1281,10 @@ function getTextLayoutStyle(element) {
1335
1281
 
1336
1282
  // src/viewer/utils/text-effects.tsx
1337
1283
  function buildTextFillCss2(style) {
1338
- return chunkLYS44KMG_js.buildTextFillCss(style);
1284
+ return chunkIKISUZKE_js.buildTextFillCss(style);
1339
1285
  }
1340
1286
  function buildTextBody3DSceneStyle2(textStyle) {
1341
- return chunkLYS44KMG_js.buildTextBody3DSceneStyle(textStyle);
1287
+ return chunkIKISUZKE_js.buildTextBody3DSceneStyle(textStyle);
1342
1288
  }
1343
1289
 
1344
1290
  // src/viewer/utils/text-warp-css.tsx
@@ -1523,13 +1469,13 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
1523
1469
  if (!subElementAnimStates || subElementAnimStates.size === 0) {
1524
1470
  return renderedSegments;
1525
1471
  }
1526
- const paraKey = `${elementId}${chunkLYS44KMG_js.TEXT_BUILD_ID_SEP}p${paraIndex}`;
1472
+ const paraKey = `${elementId}${chunkIKISUZKE_js.TEXT_BUILD_ID_SEP}p${paraIndex}`;
1527
1473
  const paraState = subElementAnimStates.get(paraKey);
1528
1474
  if (paraState) {
1529
1475
  const style = buildAnimStyle(paraState);
1530
1476
  return /* @__PURE__ */ jsxRuntime.jsx("span", { "data-anim-id": paraKey, style: { display: "inline", ...style }, children: renderedSegments }, paraKey);
1531
1477
  }
1532
- const spec = chunkLYS44KMG_js.buildTextBuildSpec(
1478
+ const spec = chunkIKISUZKE_js.buildTextBuildSpec(
1533
1479
  elementId,
1534
1480
  paraIndex,
1535
1481
  paraSegments.map((entry) => ({ text: entry.segment.text, style: entry })),
@@ -1547,7 +1493,7 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
1547
1493
  "span",
1548
1494
  {
1549
1495
  "data-anim-id": span.animId,
1550
- style: chunkLYS44KMG_js.textBuildSpanStyle(span),
1496
+ style: chunkIKISUZKE_js.textBuildSpanStyle(span),
1551
1497
  children: content
1552
1498
  },
1553
1499
  span.animId
@@ -1691,10 +1637,10 @@ function renderScriptAwareText(text, needsScriptFonts, scriptFonts, baseFontFami
1691
1637
  if (!needsScriptFonts || !text) {
1692
1638
  return text;
1693
1639
  }
1694
- const runs = chunkLYS44KMG_js.segmentByScript(text);
1640
+ const runs = chunkIKISUZKE_js.segmentByScript(text);
1695
1641
  if (runs.length <= 1) {
1696
1642
  if (runs.length === 1) {
1697
- const font = chunkLYS44KMG_js.resolveFontForScript(runs[0].script, scriptFonts);
1643
+ const font = chunkIKISUZKE_js.resolveFontForScript(runs[0].script, scriptFonts);
1698
1644
  if (font && font !== baseFontFamily) {
1699
1645
  return /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontFamily: font }, children: text });
1700
1646
  }
@@ -1702,7 +1648,7 @@ function renderScriptAwareText(text, needsScriptFonts, scriptFonts, baseFontFami
1702
1648
  return text;
1703
1649
  }
1704
1650
  return runs.map((run, i) => {
1705
- const font = chunkLYS44KMG_js.resolveFontForScript(run.script, scriptFonts);
1651
+ const font = chunkIKISUZKE_js.resolveFontForScript(run.script, scriptFonts);
1706
1652
  if (!font || font === baseFontFamily) {
1707
1653
  return /* @__PURE__ */ jsxRuntime.jsx(React6__default.default.Fragment, { children: run.text }, `${keyPrefix}-r${i}`);
1708
1654
  }
@@ -1774,8 +1720,8 @@ function renderSegmentContent(elementId, segmentIndex, textValue, lines, needsSc
1774
1720
  );
1775
1721
  }
1776
1722
  function renderEquationSegment(elementId, segmentIndex, equationXml, equationNumber) {
1777
- const mathml = chunkLYS44KMG_js.convertOmmlToMathMl(equationXml);
1778
- const safeMathml = mathml ? chunkLYS44KMG_js.sanitizeMathMl(mathml) : "";
1723
+ const mathml = chunkIKISUZKE_js.convertOmmlToMathMl(equationXml);
1724
+ const safeMathml = mathml ? chunkIKISUZKE_js.sanitizeMathMl(mathml) : "";
1779
1725
  const equationContent = safeMathml ? /* @__PURE__ */ jsxRuntime.jsx(
1780
1726
  "span",
1781
1727
  {
@@ -1785,7 +1731,7 @@ function renderEquationSegment(elementId, segmentIndex, equationXml, equationNum
1785
1731
  },
1786
1732
  dangerouslySetInnerHTML: { __html: safeMathml }
1787
1733
  }
1788
- ) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-block px-1 py-0.5 rounded text-xs bg-gray-200/20 text-gray-400 italic", children: chunk25VSL2BB_js.translationsEn["pptx.textSegment.equationFallback"] });
1734
+ ) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-block px-1 py-0.5 rounded text-xs bg-gray-200/20 text-gray-400 italic", children: chunk2JDWFMIK_js.translationsEn["pptx.textSegment.equationFallback"] });
1789
1735
  if (equationNumber) {
1790
1736
  return /* @__PURE__ */ jsxRuntime.jsxs(
1791
1737
  "span",
@@ -1825,7 +1771,7 @@ function renderEquationSegment(elementId, segmentIndex, equationXml, equationNum
1825
1771
  return /* @__PURE__ */ jsxRuntime.jsx("span", { children: equationContent }, `${elementId}-seg-${segmentIndex}`);
1826
1772
  }
1827
1773
  function renderPictureBullet(elementId, segmentIndex, bulletInfo, baseFontSize) {
1828
- const picture = chunkLYS44KMG_js.resolvePictureBullet(bulletInfo, baseFontSize) ?? {
1774
+ const picture = chunkIKISUZKE_js.resolvePictureBullet(bulletInfo, baseFontSize) ?? {
1829
1775
  sizePx: baseFontSize,
1830
1776
  fallbackMarker: "\u2022",
1831
1777
  accessibleLabel: "Bullet"
@@ -1876,7 +1822,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1876
1822
  }
1877
1823
  const segmentStyle = segment.style || {};
1878
1824
  const rawText = bulletInfo && typeof bulletHangPx === "number" ? (segment.text || "").trimEnd() : segment.text || "";
1879
- const textValue = chunkLYS44KMG_js.substituteFieldText(rawText, segment.fieldType, fieldContext);
1825
+ const textValue = chunkIKISUZKE_js.substituteFieldText(rawText, segment.fieldType, fieldContext);
1880
1826
  const lines = textValue.split("\n");
1881
1827
  const textDecorationTokens = [];
1882
1828
  if (segmentStyle.underline || segmentStyle.hyperlink) {
@@ -1886,8 +1832,8 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1886
1832
  textDecorationTokens.push("line-through");
1887
1833
  }
1888
1834
  const isDoubleStrike = segmentStyle.strikethrough && segmentStyle.strikeType === "dblStrike";
1889
- const resolvedSegmentColor = segmentStyle.hyperlink ? chunkLYS44KMG_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, HYPERLINK_COLOR) : chunkLYS44KMG_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, fallbackColor);
1890
- const underlineDecoration = chunkLYS44KMG_js.resolveUnderlineDecorationStyle(
1835
+ const resolvedSegmentColor = segmentStyle.hyperlink ? chunkIKISUZKE_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, HYPERLINK_COLOR) : chunkIKISUZKE_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, fallbackColor);
1836
+ const underlineDecoration = chunkIKISUZKE_js.resolveUnderlineDecorationStyle(
1891
1837
  Boolean(isDoubleStrike),
1892
1838
  segmentStyle.underlineStyle
1893
1839
  );
@@ -1897,20 +1843,20 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1897
1843
  const letterSpacing = typeof segmentStyle.characterSpacing === "number" && segmentStyle.characterSpacing !== 0 ? `${segmentStyle.characterSpacing / 100 * (96 / 72)}px` : void 0;
1898
1844
  const textFillStyles = buildTextFillCss2(segmentStyle);
1899
1845
  const rawFontSize = segmentStyle.fontSize || element.textStyle?.fontSize || DEFAULT_TEXT_FONT_SIZE;
1900
- const autoFitScale = element.textStyle?.autoFitFontScale !== void 0 && element.textStyle.autoFitFontScale > 0 && element.textStyle.autoFitFontScale < 1 ? element.textStyle.autoFitFontScale : 1;
1846
+ const autoFitScale = chunkIKISUZKE_js.resolveAutoFitFontScale(element.textStyle);
1901
1847
  const baseFontSize = rawFontSize * autoFitScale;
1902
1848
  const baselineShift = baselineFraction !== 0 ? `${baselineFraction * baseFontSize}px` : void 0;
1903
1849
  const baseFontSizePt = baseFontSize * (72 / 96);
1904
1850
  const fontKerning = typeof segmentStyle.kerning === "number" ? segmentStyle.kerning === 0 ? "none" : baseFontSizePt >= segmentStyle.kerning / 100 ? "normal" : "none" : void 0;
1905
1851
  const rawFontFamily = segmentStyle.fontFamily || element.textStyle?.fontFamily;
1906
- const baseFontFamily = rawFontFamily ? chunkLYS44KMG_js.getSubstituteFontFamily(rawFontFamily) : DEFAULT_FONT_FAMILY;
1852
+ const baseFontFamily = rawFontFamily ? chunkIKISUZKE_js.getSubstituteFontFamily(rawFontFamily) : DEFAULT_FONT_FAMILY;
1907
1853
  const scriptFonts = {
1908
1854
  latin: baseFontFamily,
1909
1855
  eastAsia: segmentStyle.eastAsiaFont || element.textStyle?.eastAsiaFont || baseFontFamily,
1910
1856
  complexScript: segmentStyle.complexScriptFont || element.textStyle?.complexScriptFont || baseFontFamily,
1911
1857
  symbol: segmentStyle.symbolFont || element.textStyle?.symbolFont || baseFontFamily
1912
1858
  };
1913
- const needsScriptFonts = chunkLYS44KMG_js.hasDistinctScriptFonts(scriptFonts);
1859
+ const needsScriptFonts = chunkIKISUZKE_js.hasDistinctScriptFonts(scriptFonts);
1914
1860
  const spanStyle = {
1915
1861
  color: resolvedSegmentColor,
1916
1862
  fontSize: baseFontSize * baselineFontScale,
@@ -1928,15 +1874,15 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1928
1874
  fontVariantCaps: segmentStyle.textCaps === "small" ? "small-caps" : void 0,
1929
1875
  letterSpacing,
1930
1876
  fontKerning,
1931
- backgroundColor: textFillStyles ? void 0 : segmentStyle.highlightColor ? chunkLYS44KMG_js.normalizeHexColor(segmentStyle.highlightColor, "transparent") : void 0,
1877
+ backgroundColor: textFillStyles ? void 0 : segmentStyle.highlightColor ? chunkIKISUZKE_js.normalizeHexColor(segmentStyle.highlightColor, "transparent") : void 0,
1932
1878
  ...textFillStyles,
1933
- textDecorationColor: segmentStyle.underlineColor ? chunkLYS44KMG_js.normalizeHexColor(segmentStyle.underlineColor, void 0) : void 0,
1934
- WebkitTextStroke: segmentStyle.textOutlineWidth && segmentStyle.textOutlineColor ? `${segmentStyle.textOutlineWidth}px ${chunkLYS44KMG_js.normalizeHexColor(segmentStyle.textOutlineColor, "#000000")}` : segmentStyle.textOutlineWidth ? `${segmentStyle.textOutlineWidth}px currentColor` : void 0,
1879
+ textDecorationColor: segmentStyle.underlineColor ? chunkIKISUZKE_js.normalizeHexColor(segmentStyle.underlineColor, void 0) : void 0,
1880
+ WebkitTextStroke: segmentStyle.textOutlineWidth && segmentStyle.textOutlineColor ? `${segmentStyle.textOutlineWidth}px ${chunkIKISUZKE_js.normalizeHexColor(segmentStyle.textOutlineColor, "#000000")}` : segmentStyle.textOutlineWidth ? `${segmentStyle.textOutlineWidth}px currentColor` : void 0,
1935
1881
  paintOrder: segmentStyle.textOutlineWidth ? "stroke fill" : void 0,
1936
- textShadow: chunkLYS44KMG_js.buildTextShadowCss(segmentStyle),
1937
- filter: chunkLYS44KMG_js.buildTextRunFilterChain(segmentStyle),
1938
- opacity: chunkLYS44KMG_js.getTextAlphaOpacity(segmentStyle),
1939
- WebkitBoxReflect: chunkLYS44KMG_js.buildTextReflectionCss(segmentStyle)
1882
+ textShadow: chunkIKISUZKE_js.buildTextShadowCss(segmentStyle),
1883
+ filter: chunkIKISUZKE_js.buildTextRunFilterChain(segmentStyle),
1884
+ opacity: chunkIKISUZKE_js.getTextAlphaOpacity(segmentStyle),
1885
+ WebkitBoxReflect: chunkIKISUZKE_js.buildTextReflectionCss(segmentStyle)
1940
1886
  };
1941
1887
  const runRtl = segmentStyle.rtl;
1942
1888
  if (runRtl !== void 0 && runRtl !== paragraphRtl) {
@@ -1956,7 +1902,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1956
1902
  spanStyle.fontSize = baseFontSize * (bulletInfo.sizePercent / 100) * baselineFontScale;
1957
1903
  }
1958
1904
  if (bulletInfo.color) {
1959
- spanStyle.color = chunkLYS44KMG_js.normalizeHexColor(bulletInfo.color, resolvedSegmentColor);
1905
+ spanStyle.color = chunkIKISUZKE_js.normalizeHexColor(bulletInfo.color, resolvedSegmentColor);
1960
1906
  }
1961
1907
  if (typeof bulletHangPx === "number" && bulletHangPx > 0) {
1962
1908
  spanStyle.display = "inline-block";
@@ -2001,7 +1947,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
2001
1947
  textAlign: segment.rubyAlignment === "l" ? "left" : segment.rubyAlignment === "r" ? "right" : segment.rubyAlignment === "dist" || segment.rubyAlignment === "distCat" || segment.rubyAlignment === "distLetter" ? "justify" : "center"
2002
1948
  };
2003
1949
  if (segment.rubyStyle?.color) {
2004
- rubyStyle.color = chunkLYS44KMG_js.normalizeHexColor(segment.rubyStyle.color, resolvedSegmentColor);
1950
+ rubyStyle.color = chunkIKISUZKE_js.normalizeHexColor(segment.rubyStyle.color, resolvedSegmentColor);
2005
1951
  }
2006
1952
  innerContent = /* @__PURE__ */ jsxRuntime.jsxs("ruby", { children: [
2007
1953
  baseContent,
@@ -2096,7 +2042,7 @@ function groupSegmentsIntoParagraphs(segments) {
2096
2042
  return paragraphs;
2097
2043
  }
2098
2044
  function renderTextSegments(element, fallbackColor, emptyFallback, findHighlights, onHyperlinkClick, fieldContext, subElementAnimStates, segmentOverrides, requireCtrlClick) {
2099
- if (!chunkLYS44KMG_js.hasTextProperties(element)) {
2045
+ if (!chunkIKISUZKE_js.hasTextProperties(element)) {
2100
2046
  return emptyFallback || null;
2101
2047
  }
2102
2048
  const effectiveSegments = segmentOverrides ?? element.textSegments;
@@ -2117,10 +2063,10 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
2117
2063
  return element.text || emptyFallback || "";
2118
2064
  }
2119
2065
  const paragraphs = groupSegmentsIntoParagraphs(effectiveSegments);
2120
- const paragraphIndents = chunkLYS44KMG_js.hasTextProperties(element) ? element.paragraphIndents : void 0;
2121
- const elementRtl = chunkLYS44KMG_js.hasTextProperties(element) ? element.textStyle?.rtl : void 0;
2122
- const elementAlign = chunkLYS44KMG_js.hasTextProperties(element) ? element.textStyle?.align : void 0;
2123
- const bodyStyle = chunkLYS44KMG_js.hasTextProperties(element) ? element.textStyle : void 0;
2066
+ const paragraphIndents = chunkIKISUZKE_js.hasTextProperties(element) ? element.paragraphIndents : void 0;
2067
+ const elementRtl = chunkIKISUZKE_js.hasTextProperties(element) ? element.textStyle?.rtl : void 0;
2068
+ const elementAlign = chunkIKISUZKE_js.hasTextProperties(element) ? element.textStyle?.align : void 0;
2069
+ const bodyStyle = chunkIKISUZKE_js.hasTextProperties(element) ? element.textStyle : void 0;
2124
2070
  const spaceFirstLast = bodyStyle?.spaceFirstLastParagraph !== false;
2125
2071
  return paragraphs.map(({ entries: paraSegments, terminator }, paraIndex) => {
2126
2072
  const paraIndent = paragraphIndents?.[paraIndex];
@@ -2135,14 +2081,14 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
2135
2081
  return Boolean(segment.text) && segment.text.trim().length > 0;
2136
2082
  });
2137
2083
  const hasBullet = bulletInfo && !bulletInfo.none && hasVisibleTextContent;
2138
- const paraRtl = chunkLYS44KMG_js.resolveParagraphRtl(paraSegments, elementRtl);
2084
+ const paraRtl = chunkIKISUZKE_js.resolveParagraphRtl(paraSegments, elementRtl);
2139
2085
  const isRtlParagraph = paraRtl === true;
2140
- const paraAlign = chunkLYS44KMG_js.resolveParagraphAlign(paraSegments, elementAlign);
2141
- const cssTextAlign = chunkLYS44KMG_js.resolveCssTextAlign(paraAlign, isRtlParagraph);
2086
+ const paraAlign = chunkIKISUZKE_js.resolveParagraphAlign(paraSegments, elementAlign);
2087
+ const cssTextAlign = chunkIKISUZKE_js.resolveCssTextAlign(paraAlign, isRtlParagraph);
2142
2088
  const paraMarginLeft = isRtlParagraph ? void 0 : rawMarginLeft;
2143
2089
  const paraMarginRight = isRtlParagraph ? rawMarginLeft : void 0;
2144
2090
  const paraTextIndent = rawTextIndent;
2145
- const paraKinsokuStyle = chunkLYS44KMG_js.getKinsokuLineBreakStyles(firstSeg?.segment.style);
2091
+ const paraKinsokuStyle = chunkIKISUZKE_js.getKinsokuLineBreakStyles(firstSeg?.segment.style);
2146
2092
  const hasParaKinsoku = Object.keys(paraKinsokuStyle).length > 0;
2147
2093
  const paraProps = effectiveSegments[firstSeg?.globalIndex ?? -1]?.paragraphProperties ?? (paraSegments.length === 0 ? terminator?.paragraphProperties : void 0);
2148
2094
  const spacing = resolveParagraphSpacing({
@@ -2152,7 +2098,7 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
2152
2098
  isLast: paraIndex === paragraphs.length - 1,
2153
2099
  spaceFirstLast
2154
2100
  });
2155
- const strutFontSize = chunkLYS44KMG_js.resolveParagraphStrutFontSize(
2101
+ const strutFontSize = chunkIKISUZKE_js.resolveParagraphStrutFontSize(
2156
2102
  paraSegments.length > 0 ? paraSegments.map(({ segment }) => segment) : terminator ? [terminator] : [],
2157
2103
  bodyStyle?.fontSize
2158
2104
  );
@@ -2256,13 +2202,13 @@ function hexToRgbUnit(hex) {
2256
2202
  };
2257
2203
  }
2258
2204
  function getDuotoneColors(element) {
2259
- if (!chunkLYS44KMG_js.isImageLikeElement(element)) {
2205
+ if (!chunkIKISUZKE_js.isImageLikeElement(element)) {
2260
2206
  return void 0;
2261
2207
  }
2262
2208
  return element.imageEffects?.duotone;
2263
2209
  }
2264
2210
  function buildLineShadowCss(element) {
2265
- if (!chunkLYS44KMG_js.hasShapeProperties(element)) {
2211
+ if (!chunkIKISUZKE_js.hasShapeProperties(element)) {
2266
2212
  return void 0;
2267
2213
  }
2268
2214
  const ss = element.shapeStyle;
@@ -2273,13 +2219,13 @@ function buildLineShadowCss(element) {
2273
2219
  const offsetY = typeof ss.lineShadowOffsetY === "number" ? ss.lineShadowOffsetY : 2;
2274
2220
  const blur = typeof ss.lineShadowBlur === "number" ? Math.max(0, ss.lineShadowBlur) : 4;
2275
2221
  const opacity = typeof ss.lineShadowOpacity === "number" ? Math.max(0, Math.min(1, ss.lineShadowOpacity)) : 0.35;
2276
- return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${chunkLYS44KMG_js.colorWithOpacity(
2277
- chunkLYS44KMG_js.normalizeHexColor(ss.lineShadowColor, "#000000"),
2222
+ return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${chunkIKISUZKE_js.colorWithOpacity(
2223
+ chunkIKISUZKE_js.normalizeHexColor(ss.lineShadowColor, "#000000"),
2278
2224
  opacity
2279
2225
  )}`;
2280
2226
  }
2281
2227
  function buildLineGlowFilter(element) {
2282
- if (!chunkLYS44KMG_js.hasShapeProperties(element)) {
2228
+ if (!chunkIKISUZKE_js.hasShapeProperties(element)) {
2283
2229
  return void 0;
2284
2230
  }
2285
2231
  const ss = element.shapeStyle;
@@ -2288,7 +2234,7 @@ function buildLineGlowFilter(element) {
2288
2234
  }
2289
2235
  const glowOpacity = typeof ss.lineGlowOpacity === "number" ? ss.lineGlowOpacity : 0.75;
2290
2236
  const glowRad = Math.round(Math.max(0, ss.lineGlowRadius));
2291
- const glowCol = chunkLYS44KMG_js.colorWithOpacity(chunkLYS44KMG_js.normalizeHexColor(ss.lineGlowColor, "#ffff00"), glowOpacity);
2237
+ const glowCol = chunkIKISUZKE_js.colorWithOpacity(chunkIKISUZKE_js.normalizeHexColor(ss.lineGlowColor, "#ffff00"), glowOpacity);
2292
2238
  return `drop-shadow(0 0 ${glowRad}px ${glowCol})`;
2293
2239
  }
2294
2240
  function mapDagBlendModeToCss(blend) {
@@ -2312,7 +2258,7 @@ function getDagDuotoneFilterId(elementId) {
2312
2258
  return `dag-duotone-${elementId}`;
2313
2259
  }
2314
2260
  function hasDagDuotoneEffect(element) {
2315
- if (!chunkLYS44KMG_js.hasShapeProperties(element)) {
2261
+ if (!chunkIKISUZKE_js.hasShapeProperties(element)) {
2316
2262
  return false;
2317
2263
  }
2318
2264
  return Boolean(element.shapeStyle?.dagDuotone);
@@ -2375,7 +2321,7 @@ function getRoundRectRadiusPx2(element) {
2375
2321
 
2376
2322
  // src/viewer/utils/shape-visual-3d.ts
2377
2323
  function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elementHeight) {
2378
- return chunkLYS44KMG_js.build3DExtrusionData(
2324
+ return chunkIKISUZKE_js.build3DExtrusionData(
2379
2325
  shape3d,
2380
2326
  scene3d,
2381
2327
  fillColor,
@@ -2384,7 +2330,7 @@ function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elemen
2384
2330
  );
2385
2331
  }
2386
2332
  function apply3dEffects2(base, scene3d, shape3d, fillColorFallback) {
2387
- chunkLYS44KMG_js.apply3dEffects(base, scene3d, shape3d, fillColorFallback);
2333
+ chunkIKISUZKE_js.apply3dEffects(base, scene3d, shape3d, fillColorFallback);
2388
2334
  }
2389
2335
 
2390
2336
  // src/viewer/utils/vector-subpath-paint.ts
@@ -2393,7 +2339,7 @@ function toHexByte(value) {
2393
2339
  return clamped.toString(16).padStart(2, "0");
2394
2340
  }
2395
2341
  function shiftHex(hex, factor, towardsWhite) {
2396
- const channels = chunkLYS44KMG_js.hexToRgbChannels(hex);
2342
+ const channels = chunkIKISUZKE_js.hexToRgbChannels(hex);
2397
2343
  if (!channels) {
2398
2344
  return hex;
2399
2345
  }
@@ -2419,13 +2365,13 @@ function buildCustomSubpathPaints(subpaths, hasFill, fillColor, fillOpacity) {
2419
2365
  const fillOff = subpath.fillMode === "none" || !hasFill;
2420
2366
  return {
2421
2367
  d: subpath.d,
2422
- fill: fillOff ? "none" : chunkLYS44KMG_js.colorWithOpacity(adjustFillForMode(fillColor, subpath.fillMode), fillOpacity),
2368
+ fill: fillOff ? "none" : chunkIKISUZKE_js.colorWithOpacity(adjustFillForMode(fillColor, subpath.fillMode), fillOpacity),
2423
2369
  stroked: subpath.stroke !== false
2424
2370
  };
2425
2371
  });
2426
2372
  }
2427
2373
  function getStrokeOnlyPresetPaths(element) {
2428
- if (element.type !== "shape" || !chunkLYS44KMG_js.hasShapeProperties(element)) {
2374
+ if (element.type !== "shape" || !chunkIKISUZKE_js.hasShapeProperties(element)) {
2429
2375
  return void 0;
2430
2376
  }
2431
2377
  const shapeType = element.shapeType;
@@ -2435,7 +2381,7 @@ function getStrokeOnlyPresetPaths(element) {
2435
2381
  if (element.pathData) {
2436
2382
  return void 0;
2437
2383
  }
2438
- const result = chunkLYS44KMG_js.evaluatePresetShape(
2384
+ const result = chunkIKISUZKE_js.evaluatePresetShape(
2439
2385
  shapeType,
2440
2386
  Math.max(element.width, 1),
2441
2387
  Math.max(element.height, 1),
@@ -2449,28 +2395,47 @@ function getStrokeOnlyPresetPaths(element) {
2449
2395
  }
2450
2396
 
2451
2397
  // src/viewer/utils/shape-visual-style.ts
2398
+ function getGradientTilingCss(style) {
2399
+ if (!style || style.fillMode !== "gradient") {
2400
+ return void 0;
2401
+ }
2402
+ const isStructuredLinear = (style.fillGradientType || "linear") === "linear" && chunkIKISUZKE_js.sanitizeGradientStops(style.fillGradientStops).length > 0;
2403
+ if (isStructuredLinear) {
2404
+ const flip = chunkIKISUZKE_js.getGradientTileFlipCss(style.fillGradientFlip);
2405
+ if (flip) {
2406
+ return flip;
2407
+ }
2408
+ }
2409
+ return chunkIKISUZKE_js.getGradientTileRectCss(style.fillGradientTileRect);
2410
+ }
2452
2411
  function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeColor, animatesFill, animatesStroke) {
2453
- if (!chunkLYS44KMG_js.hasShapeProperties(element)) {
2412
+ if (!chunkIKISUZKE_js.hasShapeProperties(element)) {
2454
2413
  return {};
2455
2414
  }
2456
2415
  const normalizedShapeType = getShapeType(element.shapeType);
2457
- const clipPath = chunkLYS44KMG_js.getResolvedShapeClipPath(element);
2416
+ const clipPath = chunkIKISUZKE_js.getResolvedShapeClipPath(element);
2458
2417
  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;
2459
2418
  const rendersStrokeOnlyPreset = Boolean(getStrokeOnlyPresetPaths(element));
2460
2419
  const fillOpacity = element.shapeStyle?.fillOpacity;
2461
2420
  const strokeOpacity = element.shapeStyle?.strokeOpacity;
2462
- const strokeDash = chunkLYS44KMG_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2463
- const fillGradient = chunkLYS44KMG_js.buildCssGradientFromShapeStyle(element.shapeStyle) || element.shapeStyle?.fillGradient;
2464
- const shadowCss = chunkLYS44KMG_js.buildShadowCssFromShapeStyle(element.shapeStyle);
2465
- const innerShadowCss = chunkLYS44KMG_js.buildInnerShadowCssFromShapeStyle(element.shapeStyle);
2466
- const resolvedFillColor = chunkLYS44KMG_js.colorWithOpacity(fillColor, fillOpacity);
2467
- const resolvedStrokeColor = chunkLYS44KMG_js.colorWithOpacity(strokeColor, strokeOpacity);
2421
+ const strokeDash = chunkIKISUZKE_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2422
+ const fillGradient = chunkIKISUZKE_js.buildCssGradientFromShapeStyle(element.shapeStyle, {
2423
+ rotation: element.rotation,
2424
+ width: element.width,
2425
+ height: element.height
2426
+ }) || element.shapeStyle?.fillGradient;
2427
+ const shadowCss = chunkIKISUZKE_js.buildShadowCssFromShapeStyle(element.shapeStyle);
2428
+ const innerShadowCss = chunkIKISUZKE_js.buildInnerShadowCssFromShapeStyle(element.shapeStyle);
2429
+ const resolvedFillColor = chunkIKISUZKE_js.colorWithOpacity(fillColor, fillOpacity);
2430
+ const resolvedStrokeColor = chunkIKISUZKE_js.colorWithOpacity(strokeColor, strokeOpacity);
2468
2431
  const ss = element.shapeStyle;
2432
+ const gradientTiling = getGradientTilingCss(ss);
2433
+ const paintsGradientOutline = chunkIKISUZKE_js.suppressesCssBorder(element);
2469
2434
  const hasFillOverlayColor = Boolean(
2470
2435
  ss?.dagFillOverlayColor && ss.dagFillOverlayColor !== "transparent"
2471
2436
  );
2472
2437
  const combinedShadowParts = [];
2473
- const multiLayerShadow = chunkLYS44KMG_js.buildMultiLayerShadowCss(element.shapeStyle);
2438
+ const multiLayerShadow = chunkIKISUZKE_js.buildMultiLayerShadowCss(element.shapeStyle);
2474
2439
  if (multiLayerShadow) {
2475
2440
  combinedShadowParts.push(multiLayerShadow);
2476
2441
  } else if (shadowCss) {
@@ -2479,7 +2444,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2479
2444
  if (innerShadowCss) {
2480
2445
  combinedShadowParts.push(innerShadowCss);
2481
2446
  }
2482
- const glowBoxShadow = chunkLYS44KMG_js.buildGlowBoxShadow(ss?.glowColor, ss?.glowRadius, ss?.glowOpacity);
2447
+ const glowBoxShadow = chunkIKISUZKE_js.buildGlowBoxShadow(ss?.glowColor, ss?.glowRadius, ss?.glowOpacity);
2483
2448
  if (glowBoxShadow) {
2484
2449
  combinedShadowParts.push(glowBoxShadow);
2485
2450
  }
@@ -2487,7 +2452,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2487
2452
  if (lineShadow) {
2488
2453
  combinedShadowParts.push(lineShadow);
2489
2454
  }
2490
- const compoundLineShadow = chunkLYS44KMG_js.getCompoundLineBoxShadow(
2455
+ const compoundLineShadow = chunkIKISUZKE_js.getCompoundLineBoxShadow(
2491
2456
  element.shapeStyle?.compoundLine,
2492
2457
  strokeWidth,
2493
2458
  resolvedStrokeColor
@@ -2500,11 +2465,11 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2500
2465
  if (ss?.glowColor && ss.glowColor !== "transparent" && ss.glowRadius) {
2501
2466
  const glowOpacity = typeof ss.glowOpacity === "number" ? ss.glowOpacity : 0.75;
2502
2467
  const glowRad = Math.round(Math.max(0, ss.glowRadius));
2503
- const glowCol = chunkLYS44KMG_js.colorWithOpacity(chunkLYS44KMG_js.normalizeHexColor(ss.glowColor, "#ffff00"), glowOpacity);
2468
+ const glowCol = chunkIKISUZKE_js.colorWithOpacity(chunkIKISUZKE_js.normalizeHexColor(ss.glowColor, "#ffff00"), glowOpacity);
2504
2469
  filterParts.push(`drop-shadow(0 0 ${glowRad}px ${glowCol})`);
2505
2470
  }
2506
2471
  if (typeof ss?.softEdgeRadius === "number" && ss.softEdgeRadius > 0) {
2507
- filterParts.push(`url(#${chunkLYS44KMG_js.getSoftEdgeFilterId(element.id)})`);
2472
+ filterParts.push(`url(#${chunkIKISUZKE_js.getSoftEdgeFilterId(element.id)})`);
2508
2473
  }
2509
2474
  if (typeof ss?.blurRadius === "number" && ss.blurRadius > 0) {
2510
2475
  filterParts.push(`blur(${Math.round(ss.blurRadius)}px)`);
@@ -2513,13 +2478,13 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2513
2478
  if (lineGlowCss) {
2514
2479
  filterParts.push(lineGlowCss);
2515
2480
  }
2516
- const dagFilter = chunkLYS44KMG_js.getEffectDagFilter(ss, element.id);
2481
+ const dagFilter = chunkIKISUZKE_js.getEffectDagFilter(ss, element.id);
2517
2482
  if (dagFilter) {
2518
2483
  filterParts.push(dagFilter);
2519
2484
  }
2520
2485
  const lineJoinCss = ss?.lineJoin === "round" ? "round" : ss?.lineJoin === "bevel" ? "bevel" : ss?.lineJoin === "miter" ? "miter" : void 0;
2521
2486
  const miterLimitCss = ss?.lineJoin === "miter" && typeof ss?.miterLimit === "number" ? Math.max(ss.miterLimit / 1e5, 1) : void 0;
2522
- const patternFill = chunkLYS44KMG_js.buildPatternFillCss(element.shapeStyle);
2487
+ const patternFill = chunkIKISUZKE_js.buildPatternFillCss(element.shapeStyle);
2523
2488
  const imageFillUrl = ss?.fillMode === "image" && ss.fillImageUrl ? ss.fillImageUrl : void 0;
2524
2489
  const imageFillMode = ss?.fillImageMode || "stretch";
2525
2490
  let reflectCss;
@@ -2531,7 +2496,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2531
2496
  const endOpacity = typeof ss.reflectionEndOpacity === "number" ? ss.reflectionEndOpacity : 0;
2532
2497
  const fadeLength = typeof ss.reflectionEndPosition === "number" ? Math.round(ss.reflectionEndPosition * Math.max(element.height, 1)) : 100;
2533
2498
  const blurRadius = typeof ss.reflectionBlurRadius === "number" ? ss.reflectionBlurRadius : 0;
2534
- reflectCss = chunkLYS44KMG_js.buildReflectionCss(distance, startOpacity, endOpacity, fadeLength, blurRadius);
2499
+ reflectCss = chunkIKISUZKE_js.buildReflectionCss(distance, startOpacity, endOpacity, fadeLength, blurRadius);
2535
2500
  }
2536
2501
  }
2537
2502
  const base = {
@@ -2545,8 +2510,8 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2545
2510
  // `getComputedFillStyle` (image -> gradient -> pattern -> solid).
2546
2511
  backgroundColor: imageFillUrl ? "transparent" : patternFill ? patternFill.backgroundColor : hasFill && !fillGradient ? resolvedFillColor : "transparent",
2547
2512
  backgroundImage: imageFillUrl ? `url(${imageFillUrl})` : patternFill ? patternFill.backgroundImage : hasFill && fillGradient ? fillGradient : void 0,
2548
- backgroundRepeat: imageFillUrl ? imageFillMode === "tile" ? "repeat" : "no-repeat" : patternFill ? "repeat" : hasFill && fillGradient ? "no-repeat" : void 0,
2549
- backgroundSize: imageFillUrl ? imageFillMode === "tile" ? "auto" : "100% 100%" : patternFill ? "auto" : hasFill && fillGradient ? "100% 100%" : void 0,
2513
+ backgroundRepeat: imageFillUrl ? imageFillMode === "tile" ? "repeat" : "no-repeat" : patternFill ? "repeat" : hasFill && fillGradient ? gradientTiling?.backgroundRepeat ?? "no-repeat" : void 0,
2514
+ backgroundSize: imageFillUrl ? imageFillMode === "tile" ? "auto" : "100% 100%" : patternFill ? "auto" : hasFill && fillGradient ? gradientTiling?.backgroundSize ?? "100% 100%" : void 0,
2550
2515
  // The container always carries a 1px border (transparent unless the shape
2551
2516
  // has a stroke or is hovered) and `box-sizing: border-box`, so the default
2552
2517
  // `background-origin: padding-box` sizes the paint 2px smaller than the
@@ -2555,7 +2520,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2555
2520
  // edge - a fade-to-transparent overlay grew a hard opaque line down its
2556
2521
  // side. Paint from the border box so the fill matches the shape outline.
2557
2522
  backgroundOrigin: "border-box",
2558
- backgroundPosition: imageFillUrl ? "center" : void 0,
2523
+ backgroundPosition: imageFillUrl ? "center" : hasFill && fillGradient ? gradientTiling?.backgroundPosition : void 0,
2559
2524
  boxShadow: combinedBoxShadow,
2560
2525
  WebkitBoxReflect: reflectCss,
2561
2526
  filter: filterParts.length > 0 ? filterParts.join(" ") : void 0,
@@ -2573,9 +2538,13 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2573
2538
  // two adjacent 40px buttons rendered with a 2px gap PowerPoint does not
2574
2539
  // draw. The affordance is an `outline` instead (see `ElementRenderer`),
2575
2540
  // which paints in the same place without taking part in layout.
2576
- borderWidth: strokeWidth > 0 ? chunkLYS44KMG_js.getCompoundLineBorderWidth(ss?.compoundLine, strokeWidth) : 0,
2577
- borderColor: strokeWidth > 0 ? resolvedStrokeColor : void 0,
2578
- borderStyle: strokeWidth > 0 ? chunkLYS44KMG_js.getCssBorderDashStyle(strokeDash, ss?.compoundLine) : void 0,
2541
+ // A gradient outline is painted by `ShapeEffectOverlay` as a stroked SVG
2542
+ // path following the shape's geometry, because a CSS border can only take
2543
+ // one colour. Keeping the border too would draw the parser's averaged
2544
+ // solid underneath the gradient.
2545
+ borderWidth: strokeWidth > 0 && !paintsGradientOutline ? chunkIKISUZKE_js.getCompoundLineBorderWidth(ss?.compoundLine, strokeWidth) : 0,
2546
+ borderColor: strokeWidth > 0 && !paintsGradientOutline ? resolvedStrokeColor : void 0,
2547
+ borderStyle: strokeWidth > 0 && !paintsGradientOutline ? chunkIKISUZKE_js.getCssBorderDashStyle(strokeDash, ss?.compoundLine) : void 0,
2579
2548
  strokeLinejoin: lineJoinCss,
2580
2549
  strokeMiterlimit: miterLimitCss,
2581
2550
  strokeLinecap: ss?.lineCap === "rnd" ? "round" : ss?.lineCap === "sq" ? "square" : ss?.lineCap === "flat" ? "butt" : void 0
@@ -2631,7 +2600,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2631
2600
  borderWidth: 0,
2632
2601
  borderTopWidth: Math.max(strokeWidth, 2),
2633
2602
  borderTopColor: resolvedStrokeColor,
2634
- borderTopStyle: chunkLYS44KMG_js.getCssBorderDashStyle(strokeDash)
2603
+ borderTopStyle: chunkIKISUZKE_js.getCssBorderDashStyle(strokeDash)
2635
2604
  };
2636
2605
  }
2637
2606
  if (normalizedShapeType === "cylinder") {
@@ -2645,13 +2614,13 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2645
2614
  function getConnectorAdjustment(element, key, fallback) {
2646
2615
  const direct = element.shapeAdjustments?.[key];
2647
2616
  if (typeof direct === "number" && Number.isFinite(direct)) {
2648
- return chunkLYS44KMG_js.clampUnitInterval(direct / 1e5);
2617
+ return chunkIKISUZKE_js.clampUnitInterval(direct / 1e5);
2649
2618
  }
2650
2619
  const fallbackKey = element.shapeAdjustments?.adj;
2651
2620
  if (typeof fallbackKey === "number" && Number.isFinite(fallbackKey)) {
2652
- return chunkLYS44KMG_js.clampUnitInterval(fallbackKey / 1e5);
2621
+ return chunkIKISUZKE_js.clampUnitInterval(fallbackKey / 1e5);
2653
2622
  }
2654
- return chunkLYS44KMG_js.clampUnitInterval(fallback);
2623
+ return chunkIKISUZKE_js.clampUnitInterval(fallback);
2655
2624
  }
2656
2625
  function getConnectorPathGeometry(element) {
2657
2626
  const width = Math.max(element.width, 1);
@@ -2788,11 +2757,11 @@ function strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray) {
2788
2757
  strokePaint,
2789
2758
  strokeWidth,
2790
2759
  dashArray,
2791
- lineCap: chunkLYS44KMG_js.svgLineCap(shapeStyle?.lineCap),
2760
+ lineCap: chunkIKISUZKE_js.svgLineCap(shapeStyle?.lineCap),
2792
2761
  lineJoin,
2793
2762
  miterLimit,
2794
- offsets: chunkLYS44KMG_js.getCompoundLineOffsets(shapeStyle?.compoundLine, strokeWidth),
2795
- widths: chunkLYS44KMG_js.getCompoundLineWidths(shapeStyle?.compoundLine, strokeWidth)
2763
+ offsets: chunkIKISUZKE_js.getCompoundLineOffsets(shapeStyle?.compoundLine, strokeWidth),
2764
+ widths: chunkIKISUZKE_js.getCompoundLineWidths(shapeStyle?.compoundLine, strokeWidth)
2796
2765
  };
2797
2766
  }
2798
2767
  function strokeStrands(d, keyBase, ctx) {
@@ -2813,21 +2782,49 @@ function strokeStrands(d, keyBase, ctx) {
2813
2782
  `${keyBase}-s${idx}`
2814
2783
  ));
2815
2784
  }
2816
- function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredPaths, shapeStyle, hasFill, fillColor, fillOpacity, strokePaint, strokeWidth, dashArray, animatesFill = false) {
2785
+ function gradientDefs(gradient) {
2786
+ if (!gradient) {
2787
+ return null;
2788
+ }
2789
+ const stops = gradient.stops.map((stop, idx) => /* @__PURE__ */ jsxRuntime.jsx(
2790
+ "stop",
2791
+ {
2792
+ offset: stop.offset,
2793
+ stopColor: stop.color,
2794
+ stopOpacity: typeof stop.opacity === "number" ? stop.opacity : void 0
2795
+ },
2796
+ idx
2797
+ ));
2798
+ return /* @__PURE__ */ jsxRuntime.jsx("defs", { children: gradient.kind === "radial" ? /* @__PURE__ */ jsxRuntime.jsx("radialGradient", { id: gradient.id, cx: gradient.cx, cy: gradient.cy, r: gradient.r, children: stops }) : /* @__PURE__ */ jsxRuntime.jsx(
2799
+ "linearGradient",
2800
+ {
2801
+ id: gradient.id,
2802
+ x1: gradient.x1,
2803
+ y1: gradient.y1,
2804
+ x2: gradient.x2,
2805
+ y2: gradient.y2,
2806
+ children: stops
2807
+ }
2808
+ ) });
2809
+ }
2810
+ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredPaths, shapeStyle, hasFill, fillColor, fillOpacity, strokePaint, strokeWidth, dashArray, animatesFill = false, gradient) {
2817
2811
  const ctx = strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray);
2818
- const subpaths = structuredPaths && structuredPaths.length > 0 ? chunkLYS44KMG_js.customGeometryPathsToSvgSubpaths(structuredPaths, pathWidth, pathHeight) : void 0;
2812
+ const subpaths = structuredPaths && structuredPaths.length > 0 ? chunkIKISUZKE_js.customGeometryPathsToSvgSubpaths(structuredPaths, pathWidth, pathHeight) : void 0;
2819
2813
  const needsPerSubpath = subpaths !== void 0 && subpaths.some((sp) => sp.fillMode && sp.fillMode !== "norm" || sp.stroke === false);
2814
+ const gradientPaint = gradient ? chunkIKISUZKE_js.svgGradientFillRef(gradient) : void 0;
2820
2815
  const nodes = [];
2821
2816
  if (subpaths && needsPerSubpath) {
2822
2817
  const paints = buildCustomSubpathPaints(subpaths, hasFill, fillColor, fillOpacity);
2823
2818
  paints.forEach((paint, idx) => {
2824
2819
  if (paint.fill !== "none") {
2820
+ const mode = subpaths[idx]?.fillMode;
2821
+ const useGradient = gradientPaint && (mode === void 0 || mode === "norm");
2825
2822
  nodes.push(
2826
2823
  /* @__PURE__ */ jsxRuntime.jsx(
2827
2824
  "path",
2828
2825
  {
2829
2826
  d: paint.d,
2830
- fill: animatesFill ? "inherit" : paint.fill,
2827
+ fill: animatesFill ? "inherit" : useGradient ? gradientPaint : paint.fill,
2831
2828
  stroke: "none",
2832
2829
  vectorEffect: "non-scaling-stroke"
2833
2830
  },
@@ -2846,7 +2843,7 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
2846
2843
  "path",
2847
2844
  {
2848
2845
  d: pathData,
2849
- fill: animatesFill ? "inherit" : chunkLYS44KMG_js.colorWithOpacity(fillColor, fillOpacity),
2846
+ fill: animatesFill ? "inherit" : gradientPaint ?? chunkIKISUZKE_js.colorWithOpacity(fillColor, fillOpacity),
2850
2847
  stroke: "none",
2851
2848
  vectorEffect: "non-scaling-stroke"
2852
2849
  },
@@ -2858,13 +2855,16 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
2858
2855
  nodes.push(...strokeStrands(pathData, "agg", ctx));
2859
2856
  }
2860
2857
  }
2861
- return /* @__PURE__ */ jsxRuntime.jsx(
2858
+ return /* @__PURE__ */ jsxRuntime.jsxs(
2862
2859
  "svg",
2863
2860
  {
2864
2861
  viewBox: `0 0 ${pathWidth} ${pathHeight}`,
2865
2862
  className: "w-full h-full pointer-events-none",
2866
2863
  preserveAspectRatio: "none",
2867
- children: nodes
2864
+ children: [
2865
+ animatesFill ? null : gradientDefs(gradient),
2866
+ nodes
2867
+ ]
2868
2868
  }
2869
2869
  );
2870
2870
  }
@@ -2888,14 +2888,14 @@ function renderStrokeOnlyPreset(presetPaths, width, height, shapeStyle, strokePa
2888
2888
  );
2889
2889
  }
2890
2890
  function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor, animatesFill, animatesStroke) {
2891
- if (!chunkLYS44KMG_js.hasShapeProperties(element)) {
2891
+ if (!chunkIKISUZKE_js.hasShapeProperties(element)) {
2892
2892
  return null;
2893
2893
  }
2894
2894
  const normalizedType = (element.shapeType || "").toLowerCase();
2895
- const fillPaint = animatesFill ? "inherit" : chunkLYS44KMG_js.colorWithOpacity(fillColor, element.shapeStyle?.fillOpacity);
2896
- const strokePaint = animatesStroke ? "inherit" : chunkLYS44KMG_js.colorWithOpacity(strokeColor, element.shapeStyle?.strokeOpacity);
2897
- const dashType = chunkLYS44KMG_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2898
- const dashArray = chunkLYS44KMG_js.getSvgStrokeDasharray(
2895
+ const fillPaint = animatesFill ? "inherit" : chunkIKISUZKE_js.colorWithOpacity(fillColor, element.shapeStyle?.fillOpacity);
2896
+ const strokePaint = animatesStroke ? "inherit" : chunkIKISUZKE_js.colorWithOpacity(strokeColor, element.shapeStyle?.strokeOpacity);
2897
+ const dashType = chunkIKISUZKE_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
2898
+ const dashArray = chunkIKISUZKE_js.getSvgStrokeDasharray(
2899
2899
  dashType,
2900
2900
  Math.max(strokeWidth, 1),
2901
2901
  element.shapeStyle?.customDashSegments
@@ -2971,21 +2971,26 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2971
2971
  strokePaint,
2972
2972
  strokeWidth,
2973
2973
  dashArray,
2974
- Boolean(animatesFill)
2974
+ Boolean(animatesFill),
2975
+ // A freeform's `a:gradFill` needs a real SVG paint server: the
2976
+ // container's `background-image` is suppressed for custom geometry, so
2977
+ // without this the shape fell back to the parser's representative solid
2978
+ // and lost every fade (issue #132).
2979
+ chunkIKISUZKE_js.buildSvgGradientDef(element.shapeStyle, element.id)
2975
2980
  );
2976
2981
  }
2977
- if (chunkLYS44KMG_js.isCalloutShape(normalizedType)) {
2982
+ if (chunkIKISUZKE_js.isCalloutShape(normalizedType)) {
2978
2983
  const width = Math.max(element.width, 1);
2979
2984
  const height = Math.max(element.height, 1);
2980
- const geometry = chunkLYS44KMG_js.getCalloutLeaderLineGeometry(
2985
+ const geometry = chunkIKISUZKE_js.getCalloutLeaderLineGeometry(
2981
2986
  normalizedType,
2982
2987
  width,
2983
2988
  height,
2984
2989
  element.shapeAdjustments
2985
2990
  );
2986
2991
  if (geometry && geometry.points.length >= 2) {
2987
- const leaderPath = chunkLYS44KMG_js.buildCalloutLeaderLineSvgPath(geometry);
2988
- const bounds = chunkLYS44KMG_js.getCalloutViewBoxBounds(width, height, geometry);
2992
+ const leaderPath = chunkIKISUZKE_js.buildCalloutLeaderLineSvgPath(geometry);
2993
+ const bounds = chunkIKISUZKE_js.getCalloutViewBoxBounds(width, height, geometry);
2989
2994
  const lineStroke = Math.max(strokeWidth, 1);
2990
2995
  const offsetLeft = bounds.minX;
2991
2996
  const offsetTop = bounds.minY;
@@ -3048,10 +3053,10 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
3048
3053
  const endArrowW = element.shapeStyle?.connectorEndArrowWidth;
3049
3054
  const endArrowL = element.shapeStyle?.connectorEndArrowLength;
3050
3055
  const compoundLine = element.shapeStyle?.compoundLine;
3051
- const connectorLineCap = chunkLYS44KMG_js.svgLineCap(element.shapeStyle?.lineCap);
3056
+ const connectorLineCap = chunkIKISUZKE_js.svgLineCap(element.shapeStyle?.lineCap);
3052
3057
  const hitTargetWidth = Math.max(strokeWidth * 3, 12);
3053
- const offsets = chunkLYS44KMG_js.getCompoundLineOffsets(compoundLine, strokeWidth);
3054
- const widths = chunkLYS44KMG_js.getCompoundLineWidths(compoundLine, strokeWidth);
3058
+ const offsets = chunkIKISUZKE_js.getCompoundLineOffsets(compoundLine, strokeWidth);
3059
+ const widths = chunkIKISUZKE_js.getCompoundLineWidths(compoundLine, strokeWidth);
3055
3060
  return /* @__PURE__ */ jsxRuntime.jsxs(
3056
3061
  "svg",
3057
3062
  {
@@ -3130,15 +3135,15 @@ function parseGradientFillCss(gradFill) {
3130
3135
  }
3131
3136
  const parsed = stops.map((gs) => {
3132
3137
  const pos = Number.parseInt(String(gs["@_pos"] || "0"), 10) / 1e3;
3133
- const color = chunkLYS44KMG_js.parseDrawingColor(gs) ?? "#888888";
3134
- const opacity = chunkLYS44KMG_js.parseDrawingColorOpacity(gs);
3135
- return { pos, color: chunkLYS44KMG_js.colorWithOpacity(color, opacity) };
3138
+ const color = chunkIKISUZKE_js.parseDrawingColor(gs) ?? "#888888";
3139
+ const opacity = chunkIKISUZKE_js.parseDrawingColorOpacity(gs);
3140
+ return { pos, color: chunkIKISUZKE_js.colorWithOpacity(color, opacity) };
3136
3141
  }).sort((a, b) => a.pos - b.pos);
3137
3142
  const stopStrings = parsed.map((s) => `${s.color} ${s.pos.toFixed(1)}%`).join(", ");
3138
3143
  const lin = gradFill["a:lin"];
3139
3144
  if (lin) {
3140
3145
  const angRaw = Number.parseInt(String(lin["@_ang"] || "0"), 10);
3141
- const angleDeg = Math.round(chunkLYS44KMG_js.ooxmlGradientAngleToCssDegrees(angRaw / 6e4));
3146
+ const angleDeg = Math.round(chunkIKISUZKE_js.ooxmlGradientAngleToCssDegrees(angRaw / 6e4));
3142
3147
  return `linear-gradient(${angleDeg}deg, ${stopStrings})`;
3143
3148
  }
3144
3149
  const path = gradFill["a:path"];
@@ -3173,8 +3178,8 @@ function parsePatternFillCss(pattFill) {
3173
3178
  if (!pattFill) {
3174
3179
  return void 0;
3175
3180
  }
3176
- const fgColor = chunkLYS44KMG_js.parseDrawingColor(pattFill["a:fgClr"]) ?? "#000000";
3177
- const bgColor = chunkLYS44KMG_js.parseDrawingColor(pattFill["a:bgClr"]) ?? "#ffffff";
3181
+ const fgColor = chunkIKISUZKE_js.parseDrawingColor(pattFill["a:fgClr"]) ?? "#000000";
3182
+ const bgColor = chunkIKISUZKE_js.parseDrawingColor(pattFill["a:bgClr"]) ?? "#ffffff";
3178
3183
  const preset = String(pattFill["@_prst"] || "ltDnDiag");
3179
3184
  switch (preset) {
3180
3185
  case "ltHorz":
@@ -3285,11 +3290,11 @@ function parseCellBorders(cellProperties) {
3285
3290
  const prstDash = ln["a:prstDash"];
3286
3291
  const dashVal = prstDash ? String(prstDash["@_val"] || "") : void 0;
3287
3292
  const cssBorderStyle = ooxmlDashToCss(dashVal);
3288
- const color = chunkLYS44KMG_js.parseDrawingColor(ln["a:solidFill"]);
3293
+ const color = chunkIKISUZKE_js.parseDrawingColor(ln["a:solidFill"]);
3289
3294
  if (color) {
3290
- const opacity = chunkLYS44KMG_js.parseDrawingColorOpacity(ln["a:solidFill"]);
3295
+ const opacity = chunkIKISUZKE_js.parseDrawingColorOpacity(ln["a:solidFill"]);
3291
3296
  const key = `${edge.prefix}`;
3292
- borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${chunkLYS44KMG_js.colorWithOpacity(color, opacity)}`;
3297
+ borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${chunkIKISUZKE_js.colorWithOpacity(color, opacity)}`;
3293
3298
  }
3294
3299
  }
3295
3300
  return borderStyle;
@@ -3302,7 +3307,7 @@ function parseCellTextEffects(runProps) {
3302
3307
  const textShadowParts = [];
3303
3308
  const outerShdw = effectLst["a:outerShdw"];
3304
3309
  if (outerShdw) {
3305
- const shdwColor = chunkLYS44KMG_js.parseDrawingColor(outerShdw);
3310
+ const shdwColor = chunkIKISUZKE_js.parseDrawingColor(outerShdw);
3306
3311
  if (shdwColor) {
3307
3312
  const blurRad = Number.parseInt(String(outerShdw["@_blurRad"] || "0"), 10);
3308
3313
  const blurPx = blurRad > 0 ? Math.round(blurRad / 12700) : 0;
@@ -3320,7 +3325,7 @@ function parseCellTextEffects(runProps) {
3320
3325
  }
3321
3326
  const glow = effectLst["a:glow"];
3322
3327
  if (glow) {
3323
- const glowColor = chunkLYS44KMG_js.parseDrawingColor(glow);
3328
+ const glowColor = chunkIKISUZKE_js.parseDrawingColor(glow);
3324
3329
  if (glowColor) {
3325
3330
  const glowRad = Number.parseInt(String(glow["@_rad"] || "0"), 10);
3326
3331
  const glowPx = glowRad > 0 ? Math.round(glowRad / 12700) : 2;
@@ -3399,10 +3404,10 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
3399
3404
  if (runProps?.["@_u"] !== void 0) {
3400
3405
  cellStyle.textDecorationLine = runProps["@_u"] === "sng" ? "underline" : "none";
3401
3406
  }
3402
- const runColor = chunkLYS44KMG_js.parseDrawingColor(runProps?.["a:solidFill"], schemeColorOverrides) || chunkLYS44KMG_js.parseDrawingColor(runProps?.["a:highlight"], schemeColorOverrides);
3407
+ const runColor = chunkIKISUZKE_js.parseDrawingColor(runProps?.["a:solidFill"], schemeColorOverrides) || chunkIKISUZKE_js.parseDrawingColor(runProps?.["a:highlight"], schemeColorOverrides);
3403
3408
  if (runColor) {
3404
- const opacity = chunkLYS44KMG_js.parseDrawingColorOpacity(runProps?.["a:solidFill"]);
3405
- cellStyle.color = chunkLYS44KMG_js.colorWithOpacity(runColor, opacity);
3409
+ const opacity = chunkIKISUZKE_js.parseDrawingColorOpacity(runProps?.["a:solidFill"]);
3410
+ cellStyle.color = chunkIKISUZKE_js.colorWithOpacity(runColor, opacity);
3406
3411
  }
3407
3412
  const fontFamily = runProps?.["a:latin"]?.["@_typeface"] || runProps?.["a:ea"]?.["@_typeface"] || runProps?.["a:cs"]?.["@_typeface"];
3408
3413
  if (fontFamily) {
@@ -3412,15 +3417,15 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
3412
3417
  cellStyle.textAlign = parseParagraphAlignment(paragraphProperties["@_algn"]);
3413
3418
  }
3414
3419
  const cellProperties = cellXml["a:tcPr"];
3415
- const cellFill = chunkLYS44KMG_js.parseDrawingColor(
3420
+ const cellFill = chunkIKISUZKE_js.parseDrawingColor(
3416
3421
  cellProperties?.["a:solidFill"],
3417
3422
  schemeColorOverrides
3418
3423
  );
3419
3424
  if (cellFill) {
3420
- const opacity = chunkLYS44KMG_js.parseDrawingColorOpacity(
3425
+ const opacity = chunkIKISUZKE_js.parseDrawingColorOpacity(
3421
3426
  cellProperties?.["a:solidFill"]
3422
3427
  );
3423
- cellStyle.backgroundColor = chunkLYS44KMG_js.colorWithOpacity(cellFill, opacity);
3428
+ cellStyle.backgroundColor = chunkIKISUZKE_js.colorWithOpacity(cellFill, opacity);
3424
3429
  } else {
3425
3430
  const gradCss = parseGradientFillCss(cellProperties?.["a:gradFill"]);
3426
3431
  if (gradCss) {
@@ -3435,16 +3440,16 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
3435
3440
  const edgeBorders = parseCellBorders(cellProperties);
3436
3441
  Object.assign(cellStyle, edgeBorders);
3437
3442
  if (!cellStyle.borderLeftColor && !cellStyle.borderRightColor && !cellStyle.borderTopColor && !cellStyle.borderBottomColor) {
3438
- const borderColor = chunkLYS44KMG_js.parseDrawingColor(
3443
+ const borderColor = chunkIKISUZKE_js.parseDrawingColor(
3439
3444
  cellProperties?.["a:lnL"]?.["a:solidFill"],
3440
3445
  schemeColorOverrides
3441
- ) || chunkLYS44KMG_js.parseDrawingColor(
3446
+ ) || chunkIKISUZKE_js.parseDrawingColor(
3442
3447
  cellProperties?.["a:lnR"]?.["a:solidFill"],
3443
3448
  schemeColorOverrides
3444
- ) || chunkLYS44KMG_js.parseDrawingColor(
3449
+ ) || chunkIKISUZKE_js.parseDrawingColor(
3445
3450
  cellProperties?.["a:lnT"]?.["a:solidFill"],
3446
3451
  schemeColorOverrides
3447
- ) || chunkLYS44KMG_js.parseDrawingColor(
3452
+ ) || chunkIKISUZKE_js.parseDrawingColor(
3448
3453
  cellProperties?.["a:lnB"]?.["a:solidFill"],
3449
3454
  schemeColorOverrides
3450
3455
  );
@@ -3523,10 +3528,10 @@ function resolveTableStyleFillColor(fill, colorScheme) {
3523
3528
  }
3524
3529
  let color = base;
3525
3530
  if (fill.tint !== void 0 && fill.tint > 0) {
3526
- color = chunkLYS44KMG_js.tintColor2(color, fill.tint / 1e5);
3531
+ color = chunkIKISUZKE_js.tintColor2(color, fill.tint / 1e5);
3527
3532
  }
3528
3533
  if (fill.shade !== void 0 && fill.shade > 0) {
3529
- color = chunkLYS44KMG_js.shadeColor2(color, 1 - fill.shade / 1e5);
3534
+ color = chunkIKISUZKE_js.shadeColor2(color, 1 - fill.shade / 1e5);
3530
3535
  }
3531
3536
  return color;
3532
3537
  }
@@ -3551,7 +3556,7 @@ function applyTableStyleText(text, colorScheme, style, fontScheme) {
3551
3556
  style.fontFamily = text.fontFace;
3552
3557
  applied = true;
3553
3558
  } else {
3554
- const refFont = chunkLYS44KMG_js.resolveFontRefIdx(text.fontRefIdx, fontScheme);
3559
+ const refFont = chunkIKISUZKE_js.resolveFontRefIdx(text.fontRefIdx, fontScheme);
3555
3560
  if (refFont) {
3556
3561
  style.fontFamily = refFont;
3557
3562
  applied = true;
@@ -3562,10 +3567,10 @@ function applyTableStyleText(text, colorScheme, style, fontScheme) {
3562
3567
  if (base) {
3563
3568
  let color = base;
3564
3569
  if (text.fontTint !== void 0 && text.fontTint > 0) {
3565
- color = chunkLYS44KMG_js.tintColor2(color, text.fontTint / 1e5);
3570
+ color = chunkIKISUZKE_js.tintColor2(color, text.fontTint / 1e5);
3566
3571
  }
3567
3572
  if (text.fontShade !== void 0 && text.fontShade > 0) {
3568
- color = chunkLYS44KMG_js.shadeColor2(color, 1 - text.fontShade / 1e5);
3573
+ color = chunkIKISUZKE_js.shadeColor2(color, 1 - text.fontShade / 1e5);
3569
3574
  }
3570
3575
  style.color = color;
3571
3576
  applied = true;
@@ -3754,7 +3759,7 @@ function parseTableElementData(element, fallbackTextStyle) {
3754
3759
  };
3755
3760
  }
3756
3761
  function getCellDiagonalBorders2(style, tableData, pos, styleCtx) {
3757
- return chunkLYS44KMG_js.getCellDiagonalBorders(style, tableData, pos, {
3762
+ return chunkIKISUZKE_js.getCellDiagonalBorders(style, tableData, pos, {
3758
3763
  tableStyleMap: styleCtx?.tableStyleMap,
3759
3764
  colorScheme: styleCtx?.theme?.colorScheme,
3760
3765
  fontScheme: styleCtx?.theme?.fontScheme
@@ -3902,9 +3907,9 @@ function cellStyleToCss(style) {
3902
3907
  if (style.gradientFillCss) {
3903
3908
  css.background = style.gradientFillCss;
3904
3909
  } else if (style.fillMode === "pattern" && style.patternFillPreset) {
3905
- const fg = chunkLYS44KMG_js.normalizeHexColor(style.patternFillForeground, "#000000");
3906
- const bg = chunkLYS44KMG_js.normalizeHexColor(style.patternFillBackground, "#ffffff");
3907
- const svgPattern = chunkLYS44KMG_js.getPatternSvg(style.patternFillPreset, fg, bg);
3910
+ const fg = chunkIKISUZKE_js.normalizeHexColor(style.patternFillForeground, "#000000");
3911
+ const bg = chunkIKISUZKE_js.normalizeHexColor(style.patternFillBackground, "#ffffff");
3912
+ const svgPattern = chunkIKISUZKE_js.getPatternSvg(style.patternFillPreset, fg, bg);
3908
3913
  if (svgPattern) {
3909
3914
  const encoded = encodeURIComponent(svgPattern);
3910
3915
  css.backgroundImage = `url("data:image/svg+xml,${encoded}")`;
@@ -3980,7 +3985,7 @@ function cellStyleToCss(style) {
3980
3985
  if (edge.width || edge.color) {
3981
3986
  const w = edge.width ?? 1;
3982
3987
  const c = edge.color ?? style.borderColor ?? "#000000";
3983
- const s = chunkLYS44KMG_js.ooxmlDashToCssBorderStyle(edge.dash);
3988
+ const s = chunkIKISUZKE_js.ooxmlDashToCssBorderStyle(edge.dash);
3984
3989
  css[edge.prefix] = `${w}px ${s} ${c}`;
3985
3990
  }
3986
3991
  }
@@ -4011,7 +4016,7 @@ function cellStyleToCss(style) {
4011
4016
  css.textShadow = textShadowParts.join(", ");
4012
4017
  }
4013
4018
  if (style.cell3D) {
4014
- Object.assign(css, chunkLYS44KMG_js.cell3DBevelCss(style.cell3D));
4019
+ Object.assign(css, chunkIKISUZKE_js.cell3DBevelCss(style.cell3D));
4015
4020
  }
4016
4021
  return css;
4017
4022
  }
@@ -4025,7 +4030,7 @@ function TableResizeOverlay({
4025
4030
  const containerRef = React6.useRef(null);
4026
4031
  const [rowBounds, setRowBounds] = React6.useState([]);
4027
4032
  const dragRef = React6.useRef(null);
4028
- const colBoundaries = React6.useMemo(() => chunkLYS44KMG_js.computeColumnBoundaries(columnWidths), [columnWidths]);
4033
+ const colBoundaries = React6.useMemo(() => chunkIKISUZKE_js.computeColumnBoundaries(columnWidths), [columnWidths]);
4029
4034
  const measureRows = React6.useCallback(() => {
4030
4035
  const container = containerRef.current;
4031
4036
  if (!container) {
@@ -4072,11 +4077,11 @@ function TableResizeOverlay({
4072
4077
  const rect = containerRef.current.getBoundingClientRect();
4073
4078
  if (drag.type === "col" && drag.initialWidths && onResizeColumns) {
4074
4079
  const deltaProp = (e.clientX - drag.startPos) / rect.width;
4075
- onResizeColumns(chunkLYS44KMG_js.computeResizedColumnWidths(drag.initialWidths, drag.index, deltaProp));
4080
+ onResizeColumns(chunkIKISUZKE_js.computeResizedColumnWidths(drag.initialWidths, drag.index, deltaProp));
4076
4081
  } else if (drag.type === "row" && onResizeRow) {
4077
4082
  const deltaY = e.clientY - drag.startPos;
4078
- const newHeight = chunkLYS44KMG_js.computeResizedRowHeight(
4079
- drag.initialRowHeight ?? chunkLYS44KMG_js.DEFAULT_ROW_HEIGHT,
4083
+ const newHeight = chunkIKISUZKE_js.computeResizedRowHeight(
4084
+ drag.initialRowHeight ?? chunkIKISUZKE_js.DEFAULT_ROW_HEIGHT,
4080
4085
  deltaY
4081
4086
  );
4082
4087
  onResizeRow(drag.index, newHeight);
@@ -4114,7 +4119,7 @@ function TableResizeOverlay({
4114
4119
  e.stopPropagation();
4115
4120
  const table = containerRef.current?.querySelector("table");
4116
4121
  const tr = table?.querySelectorAll("tbody > tr")[index];
4117
- const actualHeight = tr?.offsetHeight ?? chunkLYS44KMG_js.DEFAULT_ROW_HEIGHT;
4122
+ const actualHeight = tr?.offsetHeight ?? chunkIKISUZKE_js.DEFAULT_ROW_HEIGHT;
4118
4123
  document.body.style.cursor = "row-resize";
4119
4124
  document.body.style.userSelect = "none";
4120
4125
  dragRef.current = {
@@ -4162,7 +4167,7 @@ function renderTableFromTableData(element, textStyle, options) {
4162
4167
  }
4163
4168
  const first = selectedCell.selectedCells[0];
4164
4169
  const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
4165
- return chunkLYS44KMG_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableData);
4170
+ return chunkIKISUZKE_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableData);
4166
4171
  })();
4167
4172
  return /* @__PURE__ */ jsxRuntime.jsx(
4168
4173
  TableResizeOverlay,
@@ -4195,7 +4200,7 @@ function renderTableFromTableData(element, textStyle, options) {
4195
4200
  return null;
4196
4201
  }
4197
4202
  const isCellSelected = selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex;
4198
- const isInMultiSelection = chunkLYS44KMG_js.isCellInRect(rowIndex, cellIndex, selectionRect);
4203
+ const isInMultiSelection = chunkIKISUZKE_js.isCellInRect(rowIndex, cellIndex, selectionRect);
4199
4204
  const isCellEditing = isCellSelected && selectedCell?.isEditing;
4200
4205
  const diag = getCellDiagonalBorders2(
4201
4206
  cell.style,
@@ -4225,7 +4230,7 @@ function renderTableFromTableData(element, textStyle, options) {
4225
4230
  }
4226
4231
  event.stopPropagation();
4227
4232
  if (event.shiftKey && selectedCell) {
4228
- const rect = chunkLYS44KMG_js.computeSelectionRect(
4233
+ const rect = chunkIKISUZKE_js.computeSelectionRect(
4229
4234
  selectedCell.rowIndex,
4230
4235
  selectedCell.columnIndex,
4231
4236
  rowIndex,
@@ -4235,7 +4240,7 @@ function renderTableFromTableData(element, textStyle, options) {
4235
4240
  options?.onSelectCell?.({
4236
4241
  rowIndex: selectedCell.rowIndex,
4237
4242
  columnIndex: selectedCell.columnIndex,
4238
- selectedCells: chunkLYS44KMG_js.rectToCells(rect)
4243
+ selectedCells: chunkIKISUZKE_js.rectToCells(rect)
4239
4244
  });
4240
4245
  } else {
4241
4246
  options?.onSelectCell?.({
@@ -4297,7 +4302,7 @@ function renderTableElement(element, textStyle, options) {
4297
4302
  if (tableEl2.tableData && tableEl2.tableData.rows.length > 0) {
4298
4303
  return renderTableFromTableData(tableEl2, textStyle, options);
4299
4304
  }
4300
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunk25VSL2BB_js.translationsEn["pptx.table.title"] });
4305
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunk2JDWFMIK_js.translationsEn["pptx.table.title"] });
4301
4306
  }
4302
4307
  const selectedCell = options?.selectedCell || null;
4303
4308
  const isEditable = Boolean(options?.editable);
@@ -4312,7 +4317,7 @@ function renderTableElement(element, textStyle, options) {
4312
4317
  }
4313
4318
  const first = selectedCell.selectedCells[0];
4314
4319
  const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
4315
- return chunkLYS44KMG_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableEl.tableData);
4320
+ return chunkIKISUZKE_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableEl.tableData);
4316
4321
  })();
4317
4322
  const schemeOverrides = options?.styleCtx?.theme?.colorScheme ? options.styleCtx.theme.colorScheme : void 0;
4318
4323
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -4389,7 +4394,7 @@ function renderTableElement(element, textStyle, options) {
4389
4394
  "border px-1 py-0.5 align-top",
4390
4395
  isEditable && hasCellSelectionHandler ? "border-blue-200/70 cursor-cell" : "border-white/30",
4391
4396
  selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex ? "ring-1 ring-inset ring-blue-500" : null,
4392
- chunkLYS44KMG_js.isCellInRect(rowIndex, cellIndex, xmlSelectionRect) && !(selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex) ? "bg-blue-500/15 ring-1 ring-inset ring-blue-400/50" : null
4397
+ chunkIKISUZKE_js.isCellInRect(rowIndex, cellIndex, xmlSelectionRect) && !(selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex) ? "bg-blue-500/15 ring-1 ring-inset ring-blue-400/50" : null
4393
4398
  ),
4394
4399
  colSpan,
4395
4400
  rowSpan: rSpan,
@@ -4400,7 +4405,7 @@ function renderTableElement(element, textStyle, options) {
4400
4405
  }
4401
4406
  event.stopPropagation();
4402
4407
  if (event.shiftKey && selectedCell && tableEl.tableData) {
4403
- const rect = chunkLYS44KMG_js.computeSelectionRect(
4408
+ const rect = chunkIKISUZKE_js.computeSelectionRect(
4404
4409
  selectedCell.rowIndex,
4405
4410
  selectedCell.columnIndex,
4406
4411
  rowIndex,
@@ -4410,7 +4415,7 @@ function renderTableElement(element, textStyle, options) {
4410
4415
  options?.onSelectCell?.({
4411
4416
  rowIndex: selectedCell.rowIndex,
4412
4417
  columnIndex: selectedCell.columnIndex,
4413
- selectedCells: chunkLYS44KMG_js.rectToCells(rect)
4418
+ selectedCells: chunkIKISUZKE_js.rectToCells(rect)
4414
4419
  });
4415
4420
  } else {
4416
4421
  options?.onSelectCell?.({
@@ -4465,24 +4470,24 @@ function renderTableElement(element, textStyle, options) {
4465
4470
  }
4466
4471
  var LEGEND_ITEM_WIDTH = 80;
4467
4472
  function partAttrs(part) {
4468
- return part ? chunkLYS44KMG_js.chartPartToAttrs(part) : void 0;
4473
+ return part ? chunkIKISUZKE_js.chartPartToAttrs(part) : void 0;
4469
4474
  }
4470
4475
  function resolveReactPalette(chartData) {
4471
4476
  if (chartData.colorPalette && chartData.colorPalette.length > 0) {
4472
4477
  return chartData.colorPalette;
4473
4478
  }
4474
- return [...chunkLYS44KMG_js.getChartStylePalette(chartData.style?.styleId)];
4479
+ return [...chunkIKISUZKE_js.getChartStylePalette(chartData.style?.styleId)];
4475
4480
  }
4476
4481
  function buildReactChartViewModel(element) {
4477
4482
  if (element.type !== "chart" || !element.chartData) {
4478
- return chunkLYS44KMG_js.buildChartViewModel(element);
4483
+ return chunkIKISUZKE_js.buildChartViewModel(element);
4479
4484
  }
4480
4485
  const palette = resolveReactPalette(element.chartData);
4481
4486
  const themedElement = {
4482
4487
  ...element,
4483
4488
  chartData: { ...element.chartData, colorPalette: palette }
4484
4489
  };
4485
- return chunkLYS44KMG_js.buildChartViewModel(themedElement);
4490
+ return chunkIKISUZKE_js.buildChartViewModel(themedElement);
4486
4491
  }
4487
4492
  function renderPrimitive(prim, key) {
4488
4493
  switch (prim.kind) {
@@ -4871,7 +4876,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4871
4876
  const unmatchedRows = [];
4872
4877
  categories.forEach((cat, i) => {
4873
4878
  const value = values[i] ?? 0;
4874
- const code = chunkLYS44KMG_js.resolveRegionCode(cat);
4879
+ const code = chunkIKISUZKE_js.resolveRegionCode(cat);
4875
4880
  if (code) {
4876
4881
  regionValueMap.set(code, { value, label: cat });
4877
4882
  } else {
@@ -4909,8 +4914,8 @@ function renderMapChart(element, chartData, categoryLabels) {
4909
4914
  let fill = "#e2e8f0";
4910
4915
  let dataLabel = null;
4911
4916
  if (entry) {
4912
- const t = chunkLYS44KMG_js.normalizeValue(entry.value, minVal, maxVal);
4913
- fill = chunkLYS44KMG_js.sequentialColorScale(t);
4917
+ const t = chunkIKISUZKE_js.normalizeValue(entry.value, minVal, maxVal);
4918
+ fill = chunkIKISUZKE_js.sequentialColorScale(t);
4914
4919
  dataLabel = /* @__PURE__ */ jsxRuntime.jsx(
4915
4920
  "text",
4916
4921
  {
@@ -4921,7 +4926,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4921
4926
  fontWeight: 600,
4922
4927
  fill: "#1e293b",
4923
4928
  style: { pointerEvents: "none" },
4924
- children: chunkLYS44KMG_js.formatAxisValue(entry.value)
4929
+ children: chunkIKISUZKE_js.formatAxisValue(entry.value)
4925
4930
  },
4926
4931
  `${element.id}-map-dl-${region.code}`
4927
4932
  );
@@ -4939,7 +4944,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4939
4944
  opacity: 0.9,
4940
4945
  children: /* @__PURE__ */ jsxRuntime.jsxs("title", { children: [
4941
4946
  region.name,
4942
- entry ? `: ${chunkLYS44KMG_js.formatAxisValue(entry.value)}` : ""
4947
+ entry ? `: ${chunkIKISUZKE_js.formatAxisValue(entry.value)}` : ""
4943
4948
  ] })
4944
4949
  }
4945
4950
  ),
@@ -4977,7 +4982,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4977
4982
  fontSize: 7,
4978
4983
  fill: "#64748b",
4979
4984
  textAnchor: "middle",
4980
- children: chunkLYS44KMG_js.formatAxisValue(minVal)
4985
+ children: chunkIKISUZKE_js.formatAxisValue(minVal)
4981
4986
  },
4982
4987
  `${element.id}-map-legend-min`
4983
4988
  ),
@@ -4989,7 +4994,7 @@ function renderMapChart(element, chartData, categoryLabels) {
4989
4994
  fontSize: 7,
4990
4995
  fill: "#64748b",
4991
4996
  textAnchor: "middle",
4992
- children: chunkLYS44KMG_js.formatAxisValue(maxVal)
4997
+ children: chunkIKISUZKE_js.formatAxisValue(maxVal)
4993
4998
  },
4994
4999
  `${element.id}-map-legend-max`
4995
5000
  )
@@ -5008,7 +5013,7 @@ function renderMapChart(element, chartData, categoryLabels) {
5008
5013
  textAnchor: "middle",
5009
5014
  fontSize: 7,
5010
5015
  fill: "#94a3b8",
5011
- children: chunk25VSL2BB_js.translationsEn["pptx.chart.additionalRegionsFallback"]
5016
+ children: chunk2JDWFMIK_js.translationsEn["pptx.chart.additionalRegionsFallback"]
5012
5017
  },
5013
5018
  `${element.id}-map-ft-hdr`
5014
5019
  )
@@ -5055,7 +5060,7 @@ function renderMapChart(element, chartData, categoryLabels) {
5055
5060
  y,
5056
5061
  fontSize,
5057
5062
  fill: "#475569",
5058
- children: chunkLYS44KMG_js.formatAxisValue(row.value)
5063
+ children: chunkIKISUZKE_js.formatAxisValue(row.value)
5059
5064
  },
5060
5065
  `${element.id}-map-ft-val-${i}`
5061
5066
  )
@@ -5126,7 +5131,7 @@ function renderStackedBarChart(element, _chartData, _categoryLabels) {
5126
5131
 
5127
5132
  // src/viewer/utils/chart-overlay-utils.ts
5128
5133
  function sColor(series, idx) {
5129
- return chunkLYS44KMG_js.seriesColor(series, idx);
5134
+ return chunkIKISUZKE_js.seriesColor(series, idx);
5130
5135
  }
5131
5136
  function valToY(val, range, topY, bottomY) {
5132
5137
  const usable = bottomY - topY;
@@ -5665,7 +5670,7 @@ function renderLegend(id, style, series, layout, colorPalette) {
5665
5670
  width: 10,
5666
5671
  height: 10,
5667
5672
  rx: 2,
5668
- fill: chunkLYS44KMG_js.seriesColor(s, i, style?.styleId, colorPalette)
5673
+ fill: chunkIKISUZKE_js.seriesColor(s, i, style?.styleId, colorPalette)
5669
5674
  },
5670
5675
  `${id}-leg-r-${i}`
5671
5676
  )
@@ -5689,7 +5694,7 @@ function renderLegend(id, style, series, layout, colorPalette) {
5689
5694
  width: 10,
5690
5695
  height: 10,
5691
5696
  rx: 2,
5692
- fill: chunkLYS44KMG_js.seriesColor(s, i, style?.styleId, colorPalette)
5697
+ fill: chunkIKISUZKE_js.seriesColor(s, i, style?.styleId, colorPalette)
5693
5698
  }
5694
5699
  ),
5695
5700
  /* @__PURE__ */ jsxRuntime.jsx("text", { x: x + 14, y: cy + 8, fontSize: 9, fill: "#475569", children: s.name || `Series ${i + 1}` })
@@ -5702,9 +5707,9 @@ function renderGridlines(id, style, range, layout) {
5702
5707
  }
5703
5708
  const lines = [];
5704
5709
  if (range.logScale && range.logBase) {
5705
- const ticks = chunkLYS44KMG_js.generateLogTicks(range);
5710
+ const ticks = chunkIKISUZKE_js.generateLogTicks(range);
5706
5711
  ticks.forEach((tickVal, i) => {
5707
- const y = chunkLYS44KMG_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
5712
+ const y = chunkIKISUZKE_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
5708
5713
  lines.push(
5709
5714
  /* @__PURE__ */ jsxRuntime.jsx(
5710
5715
  "line",
@@ -5725,7 +5730,7 @@ function renderGridlines(id, style, range, layout) {
5725
5730
  const steps = 4;
5726
5731
  for (let i = 0; i <= steps; i++) {
5727
5732
  const val = range.min + range.span * i / steps;
5728
- const y = chunkLYS44KMG_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5733
+ const y = chunkIKISUZKE_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5729
5734
  lines.push(
5730
5735
  /* @__PURE__ */ jsxRuntime.jsx(
5731
5736
  "line",
@@ -5749,9 +5754,9 @@ function renderValueAxis(id, range, layout, axisFormatting) {
5749
5754
  const labels = [];
5750
5755
  const hasDisplayUnits = Boolean(axisFormatting?.displayUnits);
5751
5756
  if (range.logScale && range.logBase) {
5752
- const ticks = chunkLYS44KMG_js.generateLogTicks(range);
5757
+ const ticks = chunkIKISUZKE_js.generateLogTicks(range);
5753
5758
  ticks.forEach((tickVal, i) => {
5754
- const y = chunkLYS44KMG_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
5759
+ const y = chunkIKISUZKE_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
5755
5760
  labels.push(
5756
5761
  /* @__PURE__ */ jsxRuntime.jsx(
5757
5762
  "text",
@@ -5761,7 +5766,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
5761
5766
  textAnchor: "end",
5762
5767
  fontSize: 8,
5763
5768
  fill: "#64748b",
5764
- children: hasDisplayUnits ? chunkLYS44KMG_js.formatAxisValueWithUnits(tickVal, axisFormatting) : chunkLYS44KMG_js.formatAxisValue(tickVal)
5769
+ children: hasDisplayUnits ? chunkIKISUZKE_js.formatAxisValueWithUnits(tickVal, axisFormatting) : chunkIKISUZKE_js.formatAxisValue(tickVal)
5765
5770
  },
5766
5771
  `${id}-vaxis-log-${i}`
5767
5772
  )
@@ -5771,7 +5776,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
5771
5776
  const steps = 4;
5772
5777
  for (let i = 0; i <= steps; i++) {
5773
5778
  const val = range.min + range.span * i / steps;
5774
- const y = chunkLYS44KMG_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5779
+ const y = chunkIKISUZKE_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5775
5780
  labels.push(
5776
5781
  /* @__PURE__ */ jsxRuntime.jsx(
5777
5782
  "text",
@@ -5781,7 +5786,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
5781
5786
  textAnchor: "end",
5782
5787
  fontSize: 8,
5783
5788
  fill: "#64748b",
5784
- children: hasDisplayUnits ? chunkLYS44KMG_js.formatAxisValueWithUnits(val, axisFormatting) : chunkLYS44KMG_js.formatAxisValue(val)
5789
+ children: hasDisplayUnits ? chunkIKISUZKE_js.formatAxisValueWithUnits(val, axisFormatting) : chunkIKISUZKE_js.formatAxisValue(val)
5785
5790
  },
5786
5791
  `${id}-vaxis-${i}`
5787
5792
  )
@@ -5789,7 +5794,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
5789
5794
  }
5790
5795
  }
5791
5796
  if (hasDisplayUnits) {
5792
- const unitLabel = chunkLYS44KMG_js.getDisplayUnitLabel(
5797
+ const unitLabel = chunkIKISUZKE_js.getDisplayUnitLabel(
5793
5798
  axisFormatting.displayUnits,
5794
5799
  axisFormatting.displayUnitsLabel
5795
5800
  );
@@ -5864,7 +5869,7 @@ function renderZeroLine(id, range, layout) {
5864
5869
  if (range.min >= 0) {
5865
5870
  return null;
5866
5871
  }
5867
- const y = chunkLYS44KMG_js.valueToY(0, range, layout.plotTop, layout.plotBottom);
5872
+ const y = chunkIKISUZKE_js.valueToY(0, range, layout.plotTop, layout.plotBottom);
5868
5873
  return /* @__PURE__ */ jsxRuntime.jsx(
5869
5874
  "line",
5870
5875
  {
@@ -5888,7 +5893,7 @@ function renderSecondaryValueAxis(id, range, layout, axisFormatting) {
5888
5893
  const hasDisplayUnits = Boolean(axisFormatting?.displayUnits);
5889
5894
  for (let i = 0; i <= steps; i++) {
5890
5895
  const val = range.min + range.span * i / steps;
5891
- const y = chunkLYS44KMG_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5896
+ const y = chunkIKISUZKE_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5892
5897
  labels.push(
5893
5898
  /* @__PURE__ */ jsxRuntime.jsx(
5894
5899
  "text",
@@ -5900,7 +5905,7 @@ function renderSecondaryValueAxis(id, range, layout, axisFormatting) {
5900
5905
  fontFamily,
5901
5906
  fontWeight,
5902
5907
  fill: fontColor,
5903
- children: hasDisplayUnits ? chunkLYS44KMG_js.formatAxisValueWithUnits(val, axisFormatting) : chunkLYS44KMG_js.formatAxisValue(val)
5908
+ children: hasDisplayUnits ? chunkIKISUZKE_js.formatAxisValueWithUnits(val, axisFormatting) : chunkIKISUZKE_js.formatAxisValue(val)
5904
5909
  },
5905
5910
  `${id}-sec-vaxis-${i}`
5906
5911
  )
@@ -5924,7 +5929,7 @@ function renderSecondaryValueAxis(id, range, layout, axisFormatting) {
5924
5929
  );
5925
5930
  }
5926
5931
  if (hasDisplayUnits) {
5927
- const unitLabel = chunkLYS44KMG_js.getDisplayUnitLabel(
5932
+ const unitLabel = chunkIKISUZKE_js.getDisplayUnitLabel(
5928
5933
  axisFormatting.displayUnits,
5929
5934
  axisFormatting.displayUnitsLabel
5930
5935
  );
@@ -5955,7 +5960,7 @@ function renderSecondaryAxisTicks(id, range, layout) {
5955
5960
  const ticks = [];
5956
5961
  for (let i = 0; i <= steps; i++) {
5957
5962
  const val = range.min + range.span * i / steps;
5958
- const y = chunkLYS44KMG_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5963
+ const y = chunkIKISUZKE_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5959
5964
  ticks.push(
5960
5965
  /* @__PURE__ */ jsxRuntime.jsx(
5961
5966
  "line",
@@ -5982,7 +5987,7 @@ function renderSecondaryGridlines(id, range, layout, axisFormatting) {
5982
5987
  const gridColor = axisFormatting.majorGridlinesSpPr?.strokeColor ?? "#e2e8f0";
5983
5988
  for (let i = 0; i <= steps; i++) {
5984
5989
  const val = range.min + range.span * i / steps;
5985
- const y = chunkLYS44KMG_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5990
+ const y = chunkIKISUZKE_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
5986
5991
  lines.push(
5987
5992
  /* @__PURE__ */ jsxRuntime.jsx(
5988
5993
  "line",
@@ -6100,7 +6105,7 @@ function renderChartDataTable(elementId, chartData, svgWidth) {
6100
6105
  showK && /* @__PURE__ */ jsxRuntime.jsx(
6101
6106
  "th",
6102
6107
  {
6103
- "aria-label": chunk25VSL2BB_js.translationsEn["pptx.chart.rowLabelsAria"],
6108
+ "aria-label": chunk2JDWFMIK_js.translationsEn["pptx.chart.rowLabelsAria"],
6104
6109
  style: {
6105
6110
  padding: "1px 4px",
6106
6111
  fontWeight: 400,
@@ -6144,7 +6149,7 @@ function renderChartDataTable(elementId, chartData, svgWidth) {
6144
6149
  width: 8,
6145
6150
  height: 8,
6146
6151
  borderRadius: 2,
6147
- backgroundColor: chunkLYS44KMG_js.seriesColor(
6152
+ backgroundColor: chunkIKISUZKE_js.seriesColor(
6148
6153
  s,
6149
6154
  si,
6150
6155
  chartData.style?.styleId,
@@ -6183,8 +6188,8 @@ function renderChartDataTable(elementId, chartData, svgWidth) {
6183
6188
  function renderStockChart(element, chartData, categoryLabels) {
6184
6189
  const style = chartData.style;
6185
6190
  const legendPos = style?.legendPosition || "b";
6186
- const range = chunkLYS44KMG_js.computeValueRangeForChart(chartData.series, chartData.axes);
6187
- const layout = chunkLYS44KMG_js.computeLayout(element.width, element.height, style, true, legendPos);
6191
+ const range = chunkIKISUZKE_js.computeValueRangeForChart(chartData.series, chartData.axes);
6192
+ const layout = chunkIKISUZKE_js.computeLayout(element.width, element.height, style, true, legendPos);
6188
6193
  const catCount = Math.max(categoryLabels.length, 1);
6189
6194
  const barGroupWidth = layout.plotWidth / catCount;
6190
6195
  const candleWidth = barGroupWidth * 0.5;
@@ -6205,10 +6210,10 @@ function renderStockChart(element, chartData, categoryLabels) {
6205
6210
  const close = closeSeries.values[ci] ?? high;
6206
6211
  const isUp = close >= open;
6207
6212
  const cx = layout.plotLeft + barGroupWidth * ci + barGroupWidth / 2;
6208
- const highY = chunkLYS44KMG_js.valueToY(high, range, layout.plotTop, layout.plotBottom);
6209
- const lowY = chunkLYS44KMG_js.valueToY(low, range, layout.plotTop, layout.plotBottom);
6210
- const openY = chunkLYS44KMG_js.valueToY(open, range, layout.plotTop, layout.plotBottom);
6211
- const closeY = chunkLYS44KMG_js.valueToY(close, range, layout.plotTop, layout.plotBottom);
6213
+ const highY = chunkIKISUZKE_js.valueToY(high, range, layout.plotTop, layout.plotBottom);
6214
+ const lowY = chunkIKISUZKE_js.valueToY(low, range, layout.plotTop, layout.plotBottom);
6215
+ const openY = chunkIKISUZKE_js.valueToY(open, range, layout.plotTop, layout.plotBottom);
6216
+ const closeY = chunkIKISUZKE_js.valueToY(close, range, layout.plotTop, layout.plotBottom);
6212
6217
  elements.push(
6213
6218
  /* @__PURE__ */ jsxRuntime.jsx(
6214
6219
  "line",
@@ -6251,7 +6256,7 @@ function renderStockChart(element, chartData, categoryLabels) {
6251
6256
  textAnchor: "middle",
6252
6257
  fontSize: 7,
6253
6258
  fill: "#334155",
6254
- children: chunkLYS44KMG_js.formatAxisValue(close)
6259
+ children: chunkIKISUZKE_js.formatAxisValue(close)
6255
6260
  },
6256
6261
  `${element.id}-stock-dl-${ci}`
6257
6262
  )
@@ -6293,7 +6298,7 @@ function FailedToLoad() {
6293
6298
  var LazySurfaceChart3DScene = React6__default.default.lazy(
6294
6299
  async () => {
6295
6300
  try {
6296
- return await import('./SurfaceChart3DScene-YJFWGG5L.js');
6301
+ return await import('./SurfaceChart3DScene-2QZZTBV4.js');
6297
6302
  } catch {
6298
6303
  return { default: FailedToLoad };
6299
6304
  }
@@ -6317,7 +6322,7 @@ var SurfaceChart3DErrorBoundary = class extends React6__default.default.Componen
6317
6322
  function buildSurfaceData(chartData, categoryLabels) {
6318
6323
  const rows = chartData.series.length;
6319
6324
  const cols = Math.max(categoryLabels.length, 1);
6320
- const range = chunkLYS44KMG_js.computeValueRangeForChart(chartData.series, chartData.axes);
6325
+ const range = chunkIKISUZKE_js.computeValueRangeForChart(chartData.series, chartData.axes);
6321
6326
  const heightMap = new Float32Array(rows * cols);
6322
6327
  const colorMap = new Float32Array(rows * cols * 3);
6323
6328
  for (let r = 0; r < rows; r++) {
@@ -6437,8 +6442,8 @@ function darkenRgb(r, g, b, factor) {
6437
6442
  function renderIsometricSurfaceChart(element, chartData, categoryLabels) {
6438
6443
  const style = chartData.style;
6439
6444
  const legendPos = style?.legendPosition || "b";
6440
- const layout = chunkLYS44KMG_js.computeLayout(element.width, element.height, style, false, legendPos);
6441
- const range = chunkLYS44KMG_js.computeValueRangeForChart(chartData.series, chartData.axes);
6445
+ const layout = chunkIKISUZKE_js.computeLayout(element.width, element.height, style, false, legendPos);
6446
+ const range = chunkIKISUZKE_js.computeValueRangeForChart(chartData.series, chartData.axes);
6442
6447
  const catCount = Math.max(categoryLabels.length, 1);
6443
6448
  const seriesCount = chartData.series.length;
6444
6449
  const cols = catCount - 1;
@@ -6528,8 +6533,8 @@ function renderIsometricSurfaceChart(element, chartData, categoryLabels) {
6528
6533
  function renderFlatSurfaceChart(element, chartData, categoryLabels) {
6529
6534
  const style = chartData.style;
6530
6535
  const legendPos = style?.legendPosition || "b";
6531
- const layout = chunkLYS44KMG_js.computeLayout(element.width, element.height, style, true, legendPos);
6532
- const range = chunkLYS44KMG_js.computeValueRangeForChart(chartData.series, chartData.axes);
6536
+ const layout = chunkIKISUZKE_js.computeLayout(element.width, element.height, style, true, legendPos);
6537
+ const range = chunkIKISUZKE_js.computeValueRangeForChart(chartData.series, chartData.axes);
6533
6538
  const catCount = Math.max(categoryLabels.length, 1);
6534
6539
  const seriesCount = chartData.series.length;
6535
6540
  const cellW = layout.plotWidth / Math.max(catCount - 1, 1);
@@ -6592,7 +6597,7 @@ function renderSurfaceChart(element, chartData, categoryLabels) {
6592
6597
  function renderTreemapChart(element, chartData, categoryLabels) {
6593
6598
  const style = chartData.style;
6594
6599
  const legendPos = style?.legendPosition || "b";
6595
- const layout = chunkLYS44KMG_js.computeLayout(element.width, element.height, style, false, legendPos);
6600
+ const layout = chunkIKISUZKE_js.computeLayout(element.width, element.height, style, false, legendPos);
6596
6601
  const allValues = chartData.series.flatMap((s) => s.values);
6597
6602
  const totalAbs = allValues.reduce((sum, v) => sum + Math.abs(v), 0) || 1;
6598
6603
  const rects = [];
@@ -6615,7 +6620,7 @@ function renderTreemapChart(element, chartData, categoryLabels) {
6615
6620
  y: curY,
6616
6621
  width: Math.max(w - 1, 1),
6617
6622
  height: Math.max(h - 1, 1),
6618
- fill: chunkLYS44KMG_js.paletteColor(item.index, chartData.style?.styleId, chartData.colorPalette),
6623
+ fill: chunkIKISUZKE_js.paletteColor(item.index, chartData.style?.styleId, chartData.colorPalette),
6619
6624
  rx: 2,
6620
6625
  opacity: 0.85
6621
6626
  },
@@ -6668,8 +6673,8 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
6668
6673
  const style = chartData.style;
6669
6674
  const legendPos = style?.legendPosition || "b";
6670
6675
  const values = chartData.series[0]?.values ?? [];
6671
- const range = chunkLYS44KMG_js.computeValueRangeForChart(chartData.series, chartData.axes);
6672
- const layout = chunkLYS44KMG_js.computeLayout(element.width, element.height, style, true, legendPos);
6676
+ const range = chunkIKISUZKE_js.computeValueRangeForChart(chartData.series, chartData.axes);
6677
+ const layout = chunkIKISUZKE_js.computeLayout(element.width, element.height, style, true, legendPos);
6673
6678
  const catCount = Math.max(categoryLabels.length, values.length, 1);
6674
6679
  const barWidth = layout.plotWidth / catCount * 0.6;
6675
6680
  const gap = layout.plotWidth / catCount * 0.2;
@@ -6680,8 +6685,8 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
6680
6685
  const isLast = i === values.length - 1;
6681
6686
  const startVal = isLast ? 0 : runningTotal;
6682
6687
  const endVal = isLast ? runningTotal + val : runningTotal + val;
6683
- const barStartY = chunkLYS44KMG_js.valueToY(startVal, range, layout.plotTop, layout.plotBottom);
6684
- const barEndY = chunkLYS44KMG_js.valueToY(endVal, range, layout.plotTop, layout.plotBottom);
6688
+ const barStartY = chunkIKISUZKE_js.valueToY(startVal, range, layout.plotTop, layout.plotBottom);
6689
+ const barEndY = chunkIKISUZKE_js.valueToY(endVal, range, layout.plotTop, layout.plotBottom);
6685
6690
  const x = layout.plotLeft + layout.plotWidth / catCount * i + gap;
6686
6691
  const y = Math.min(barStartY, barEndY);
6687
6692
  const h = Math.max(Math.abs(barEndY - barStartY), 1);
@@ -6710,7 +6715,7 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
6710
6715
  textAnchor: "middle",
6711
6716
  fontSize: 7,
6712
6717
  fill: "#334155",
6713
- children: chunkLYS44KMG_js.formatAxisValue(isLast ? endVal : val)
6718
+ children: chunkIKISUZKE_js.formatAxisValue(isLast ? endVal : val)
6714
6719
  },
6715
6720
  `${element.id}-wf-dl-${i}`
6716
6721
  )
@@ -6758,18 +6763,18 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
6758
6763
  function renderComboChart(element, chartData, categoryLabels) {
6759
6764
  const style = chartData.style;
6760
6765
  const legendPos = style?.legendPosition || "b";
6761
- const layoutOpts = chunkLYS44KMG_js.computeLayoutOptions(
6766
+ const layoutOpts = chunkIKISUZKE_js.computeLayoutOptions(
6762
6767
  chartData.axes,
6763
6768
  chartData.dataTable,
6764
6769
  chartData.series.length
6765
6770
  );
6766
- const layout = chunkLYS44KMG_js.computeLayout(element.width, element.height, style, true, legendPos, layoutOpts);
6767
- const { primary, secondary } = chunkLYS44KMG_js.splitSeriesByAxis(chartData.series, chartData.axes);
6771
+ const layout = chunkIKISUZKE_js.computeLayout(element.width, element.height, style, true, legendPos, layoutOpts);
6772
+ const { primary, secondary } = chunkIKISUZKE_js.splitSeriesByAxis(chartData.series, chartData.axes);
6768
6773
  const primarySeries = primary.length > 0 ? primary.map((e) => e.series) : chartData.series;
6769
6774
  const secondarySeries = secondary.map((e) => e.series);
6770
- const range = chunkLYS44KMG_js.computeValueRangeForChart(primarySeries, chartData.axes);
6771
- const secondaryRange = secondarySeries.length > 0 ? chunkLYS44KMG_js.computeValueRange(secondarySeries) : void 0;
6772
- const secondaryAxisFmt = chunkLYS44KMG_js.getSecondaryValueAxis(chartData.axes);
6775
+ const range = chunkIKISUZKE_js.computeValueRangeForChart(primarySeries, chartData.axes);
6776
+ const secondaryRange = secondarySeries.length > 0 ? chunkIKISUZKE_js.computeValueRange(secondarySeries) : void 0;
6777
+ const secondaryAxisFmt = chunkIKISUZKE_js.getSecondaryValueAxis(chartData.axes);
6773
6778
  const catCount = Math.max(categoryLabels.length, 1);
6774
6779
  const barSeriesCount = 1;
6775
6780
  const barGroupWidth = layout.plotWidth / catCount;
@@ -6785,8 +6790,8 @@ function renderComboChart(element, chartData, categoryLabels) {
6785
6790
  const barRange = isBarSecondary && secondaryRange ? secondaryRange : range;
6786
6791
  barSeries.values.forEach((val, vi) => {
6787
6792
  const x = layout.plotLeft + barGroupWidth * vi + barOffset;
6788
- const zeroY = chunkLYS44KMG_js.valueToY(0, barRange, layout.plotTop, layout.plotBottom);
6789
- const valY = chunkLYS44KMG_js.valueToY(val, barRange, layout.plotTop, layout.plotBottom);
6793
+ const zeroY = chunkIKISUZKE_js.valueToY(0, barRange, layout.plotTop, layout.plotBottom);
6794
+ const valY = chunkIKISUZKE_js.valueToY(val, barRange, layout.plotTop, layout.plotBottom);
6790
6795
  const y = Math.min(zeroY, valY);
6791
6796
  const h = Math.max(Math.abs(zeroY - valY), 1);
6792
6797
  barElements.push(
@@ -6797,7 +6802,7 @@ function renderComboChart(element, chartData, categoryLabels) {
6797
6802
  y,
6798
6803
  width: barWidth,
6799
6804
  height: h,
6800
- fill: chunkLYS44KMG_js.seriesColor(barSeries, 0, chartData.style?.styleId, chartData.colorPalette),
6805
+ fill: chunkIKISUZKE_js.seriesColor(barSeries, 0, chartData.style?.styleId, chartData.colorPalette),
6801
6806
  rx: 1
6802
6807
  },
6803
6808
  `${element.id}-combo-bar-${vi}`
@@ -6813,7 +6818,7 @@ function renderComboChart(element, chartData, categoryLabels) {
6813
6818
  textAnchor: "middle",
6814
6819
  fontSize: 7,
6815
6820
  fill: "#334155",
6816
- children: chunkLYS44KMG_js.formatAxisValue(val)
6821
+ children: chunkIKISUZKE_js.formatAxisValue(val)
6817
6822
  },
6818
6823
  `${element.id}-combo-bar-dl-${vi}`
6819
6824
  )
@@ -6830,10 +6835,10 @@ function renderComboChart(element, chartData, categoryLabels) {
6830
6835
  const activeRange = isSecondary && secondaryRange ? secondaryRange : range;
6831
6836
  const points = series.values.map((val, vi) => {
6832
6837
  const x = layout.plotLeft + barGroupWidth * vi + barGroupWidth / 2;
6833
- const y = chunkLYS44KMG_js.valueToY(val, activeRange, layout.plotTop, layout.plotBottom);
6838
+ const y = chunkIKISUZKE_js.valueToY(val, activeRange, layout.plotTop, layout.plotBottom);
6834
6839
  return { x, y, val };
6835
6840
  });
6836
- const c = chunkLYS44KMG_js.seriesColor(series, seriesIdx, chartData.style?.styleId, chartData.colorPalette);
6841
+ const c = chunkIKISUZKE_js.seriesColor(series, seriesIdx, chartData.style?.styleId, chartData.colorPalette);
6837
6842
  lineElements.push(
6838
6843
  /* @__PURE__ */ jsxRuntime.jsx(
6839
6844
  "polyline",
@@ -6860,7 +6865,7 @@ function renderComboChart(element, chartData, categoryLabels) {
6860
6865
  textAnchor: "middle",
6861
6866
  fontSize: 7,
6862
6867
  fill: "#334155",
6863
- children: chunkLYS44KMG_js.formatAxisValue(p.val)
6868
+ children: chunkIKISUZKE_js.formatAxisValue(p.val)
6864
6869
  },
6865
6870
  `${element.id}-combo-line-dl-${si}-${vi}`
6866
6871
  )
@@ -6898,11 +6903,11 @@ function renderComboChart(element, chartData, categoryLabels) {
6898
6903
  }
6899
6904
  function renderChartElement(element) {
6900
6905
  if (element.type !== "chart") {
6901
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunk25VSL2BB_js.translationsEn["pptx.chart.heading"] });
6906
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunk2JDWFMIK_js.translationsEn["pptx.chart.heading"] });
6902
6907
  }
6903
6908
  const chartData = element.chartData;
6904
6909
  if (!chartData || chartData.series.length === 0) {
6905
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunk25VSL2BB_js.translationsEn["pptx.chart.heading"] });
6910
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunk2JDWFMIK_js.translationsEn["pptx.chart.heading"] });
6906
6911
  }
6907
6912
  const longestSeriesLength = chartData.series.reduce(
6908
6913
  (maxLength, series) => Math.max(maxLength, series.values.length),
@@ -8006,14 +8011,14 @@ function buildNotesPdf(pages) {
8006
8011
  notes: page.notes,
8007
8012
  slideNumber: page.slideNumber
8008
8013
  }));
8009
- const bytes = chunkLYS44KMG_js.buildNotesPdfBytes(images, meta);
8014
+ const bytes = chunkIKISUZKE_js.buildNotesPdfBytes(images, meta);
8010
8015
  const blob = new Blob([bytes], { type: "application/pdf" });
8011
8016
  return URL.createObjectURL(blob);
8012
8017
  }
8013
8018
 
8014
8019
  // src/viewer/utils/pdf-builder-slides.ts
8015
8020
  function buildPdfFromImageData(images) {
8016
- const bytes = chunkLYS44KMG_js.buildSlidesPdfBytes(images);
8021
+ const bytes = chunkIKISUZKE_js.buildSlidesPdfBytes(images);
8017
8022
  const blob = new Blob([bytes], { type: "application/pdf" });
8018
8023
  return URL.createObjectURL(blob);
8019
8024
  }
@@ -8022,7 +8027,7 @@ function buildPdfFromImageData(images) {
8022
8027
  var activePreview = null;
8023
8028
  function startPreviewAnimation(elementId, preset, options) {
8024
8029
  stopPreviewAnimation();
8025
- const descriptor = chunkLYS44KMG_js.buildPreviewAnimation(preset, options);
8030
+ const descriptor = chunkIKISUZKE_js.buildPreviewAnimation(preset, options);
8026
8031
  if (!descriptor) {
8027
8032
  return;
8028
8033
  }
@@ -8070,6 +8075,8 @@ function stopPreviewAnimation() {
8070
8075
  }
8071
8076
 
8072
8077
  exports.ANIMATION_PRESET_OPTIONS = ANIMATION_PRESET_OPTIONS;
8078
+ exports.ARROW_SIZE_OPTIONS = ARROW_SIZE_OPTIONS;
8079
+ exports.CONNECTOR_ARROW_OPTIONS = CONNECTOR_ARROW_OPTIONS;
8073
8080
  exports.DEFAULT_CANVAS_HEIGHT = DEFAULT_CANVAS_HEIGHT;
8074
8081
  exports.DEFAULT_CANVAS_WIDTH = DEFAULT_CANVAS_WIDTH;
8075
8082
  exports.DEFAULT_FILL_COLOR = DEFAULT_FILL_COLOR;
@@ -8082,14 +8089,13 @@ exports.DEFAULT_TEXT_FONT_SIZE = DEFAULT_TEXT_FONT_SIZE;
8082
8089
  exports.EMU_PER_PX = EMU_PER_PX;
8083
8090
  exports.GRID_SIZE = GRID_SIZE;
8084
8091
  exports.HYPERLINK_COLOR = HYPERLINK_COLOR;
8085
- exports.MAX_ZOOM_SCALE = MAX_ZOOM_SCALE;
8086
8092
  exports.MIN_ELEMENT_SIZE = MIN_ELEMENT_SIZE;
8087
- exports.MIN_ZOOM_SCALE = MIN_ZOOM_SCALE;
8088
8093
  exports.SHAPE_PRESETS = SHAPE_PRESETS;
8089
8094
  exports.SHORTCUT_REFERENCE_ITEMS = SHORTCUT_REFERENCE_ITEMS;
8090
8095
  exports.SLIDE_NAV_THUMBNAIL_WIDTH = SLIDE_NAV_THUMBNAIL_WIDTH;
8091
- exports.SLIDE_TRANSITION_OPTIONS = SLIDE_TRANSITION_OPTIONS;
8096
+ exports.STROKE_DASH_OPTIONS = STROKE_DASH_OPTIONS;
8092
8097
  exports.SmartArtNodeText = SmartArtNodeText;
8098
+ exports.THEME_COLOR_SWATCHES = THEME_COLOR_SWATCHES;
8093
8099
  exports.TOOLBAR_SECTIONS = TOOLBAR_SECTIONS;
8094
8100
  exports.UNGROUPED_SECTION_ID = UNGROUPED_SECTION_ID;
8095
8101
  exports.ZOOM_TO_SELECTION_PADDING = ZOOM_TO_SELECTION_PADDING;