pptx-react-viewer 2.13.2 → 2.15.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 (133) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/{AiChatPanel-F4E3A2DE.js → AiChatPanel-4WPZXJMM.js} +23 -23
  3. package/dist/AiChatPanel-4WPZXJMM.js.br +0 -0
  4. package/dist/AiChatPanel-4WPZXJMM.js.gz +0 -0
  5. package/dist/{AiChatPanel-VEULATXX.mjs → AiChatPanel-Q6D53GMZ.mjs} +4 -4
  6. package/dist/AiChatPanel-Q6D53GMZ.mjs.br +0 -0
  7. package/dist/AiChatPanel-Q6D53GMZ.mjs.gz +0 -0
  8. package/dist/{Model3DScene-TD2LIHYP.js → Model3DScene-CV3IGH6V.js} +2 -2
  9. package/dist/Model3DScene-CV3IGH6V.js.br +0 -0
  10. package/dist/Model3DScene-CV3IGH6V.js.gz +0 -0
  11. package/dist/{Model3DScene-KIPEODEJ.mjs → Model3DScene-N6PGFO2X.mjs} +1 -1
  12. package/dist/Model3DScene-N6PGFO2X.mjs.br +0 -0
  13. package/dist/Model3DScene-N6PGFO2X.mjs.gz +0 -0
  14. package/dist/{PowerPointViewer-Cjn1RgSz.d.ts → PowerPointViewer-Du7u4INi.d.ts} +2 -2
  15. package/dist/{PowerPointViewer-Cjn1RgSz.d.ts.map → PowerPointViewer-Du7u4INi.d.ts.map} +1 -1
  16. package/dist/{SurfaceChart3DScene-GRBWZ52S.mjs → SurfaceChart3DScene-H5ID4CUU.mjs} +1 -1
  17. package/dist/{SurfaceChart3DScene-GRBWZ52S.mjs.br → SurfaceChart3DScene-H5ID4CUU.mjs.br} +0 -0
  18. package/dist/SurfaceChart3DScene-H5ID4CUU.mjs.gz +0 -0
  19. package/dist/{SurfaceChart3DScene-OTKXQH5O.js → SurfaceChart3DScene-WXXMMXFZ.js} +2 -2
  20. package/dist/SurfaceChart3DScene-WXXMMXFZ.js.br +0 -0
  21. package/dist/SurfaceChart3DScene-WXXMMXFZ.js.gz +0 -0
  22. package/dist/{audience-content-store-BMlth_3U.d.ts → audience-content-store-DaABTAcQ.d.ts} +2 -2
  23. package/dist/{audience-content-store-BMlth_3U.d.ts.map → audience-content-store-DaABTAcQ.d.ts.map} +1 -1
  24. package/dist/{chunk-BXAK3JFM.js → chunk-3ISYPBSX.js} +74 -2
  25. package/dist/chunk-3ISYPBSX.js.br +0 -0
  26. package/dist/chunk-3ISYPBSX.js.gz +0 -0
  27. package/dist/{chunk-GKOKCOXR.mjs → chunk-3JTRZVYW.mjs} +8979 -949
  28. package/dist/chunk-3JTRZVYW.mjs.br +0 -0
  29. package/dist/chunk-3JTRZVYW.mjs.gz +0 -0
  30. package/dist/{chunk-GZ6TXBEO.mjs → chunk-56L4QYDT.mjs} +285 -325
  31. package/dist/chunk-56L4QYDT.mjs.br +0 -0
  32. package/dist/chunk-56L4QYDT.mjs.gz +0 -0
  33. package/dist/{chunk-TEXIGSA6.mjs → chunk-5YV26HMJ.mjs} +74 -2
  34. package/dist/chunk-5YV26HMJ.mjs.br +0 -0
  35. package/dist/chunk-5YV26HMJ.mjs.gz +0 -0
  36. package/dist/{chunk-VY3KLDJF.js → chunk-CUFEHK42.js} +39 -5
  37. package/dist/chunk-CUFEHK42.js.br +0 -0
  38. package/dist/chunk-CUFEHK42.js.gz +0 -0
  39. package/dist/{chunk-DOS7NY7C.js → chunk-HZSUTVDQ.js} +527 -567
  40. package/dist/chunk-HZSUTVDQ.js.br +0 -0
  41. package/dist/chunk-HZSUTVDQ.js.gz +0 -0
  42. package/dist/{chunk-FDR5W67L.js → chunk-KA35ZMIP.js} +9003 -955
  43. package/dist/chunk-KA35ZMIP.js.br +0 -0
  44. package/dist/chunk-KA35ZMIP.js.gz +0 -0
  45. package/dist/{chunk-EUQ2IER3.js → chunk-N6MSPBMO.js} +12317 -12036
  46. package/dist/chunk-N6MSPBMO.js.br +0 -0
  47. package/dist/chunk-N6MSPBMO.js.gz +0 -0
  48. package/dist/{chunk-ZFRPPY2N.mjs → chunk-PDUTW6MW.mjs} +249 -104
  49. package/dist/chunk-PDUTW6MW.mjs.br +0 -0
  50. package/dist/chunk-PDUTW6MW.mjs.gz +0 -0
  51. package/dist/{chunk-3HWE6QZG.mjs → chunk-SHICB6DW.mjs} +11168 -10889
  52. package/dist/chunk-SHICB6DW.mjs.br +0 -0
  53. package/dist/chunk-SHICB6DW.mjs.gz +0 -0
  54. package/dist/{chunk-BNSCH4WT.js → chunk-TQMJGYGQ.js} +572 -427
  55. package/dist/chunk-TQMJGYGQ.js.br +0 -0
  56. package/dist/chunk-TQMJGYGQ.js.gz +0 -0
  57. package/dist/{chunk-L5YGPCQW.mjs → chunk-WMZAM3UH.mjs} +37 -3
  58. package/dist/chunk-WMZAM3UH.mjs.br +0 -0
  59. package/dist/chunk-WMZAM3UH.mjs.gz +0 -0
  60. package/dist/i18n.js +4 -4
  61. package/dist/i18n.js.br +0 -0
  62. package/dist/i18n.js.gz +0 -0
  63. package/dist/i18n.mjs +1 -1
  64. package/dist/i18n.mjs.br +0 -0
  65. package/dist/i18n.mjs.gz +0 -0
  66. package/dist/index.d.ts +139 -5
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +56 -36
  69. package/dist/index.js.br +0 -0
  70. package/dist/index.js.gz +0 -0
  71. package/dist/index.mjs +6 -6
  72. package/dist/index.mjs.br +0 -0
  73. package/dist/index.mjs.gz +0 -0
  74. package/dist/internals.d.ts +124 -4
  75. package/dist/internals.d.ts.map +1 -1
  76. package/dist/internals.js +79 -79
  77. package/dist/internals.js.br +0 -0
  78. package/dist/internals.js.gz +0 -0
  79. package/dist/internals.mjs +4 -4
  80. package/dist/internals.mjs.br +0 -0
  81. package/dist/internals.mjs.gz +0 -0
  82. package/dist/pptx-viewer.css +1 -1
  83. package/dist/pptx-viewer.css.br +0 -0
  84. package/dist/pptx-viewer.css.gz +0 -0
  85. package/dist/{types-DciBT90G.d.ts → types-DU35aAJK.d.ts} +2 -2
  86. package/dist/{types-DciBT90G.d.ts.map → types-DU35aAJK.d.ts.map} +1 -1
  87. package/dist/{useViewerBuildingBlocks-YvCYsxa3.d.ts → useViewerBuildingBlocks-CBZrHhxl.d.ts} +10 -5
  88. package/dist/useViewerBuildingBlocks-CBZrHhxl.d.ts.map +1 -0
  89. package/dist/viewer/index.d.ts +104 -4
  90. package/dist/viewer/index.d.ts.map +1 -1
  91. package/dist/viewer/index.js +42 -22
  92. package/dist/viewer/index.js.br +0 -0
  93. package/dist/viewer/index.js.gz +0 -0
  94. package/dist/viewer/index.mjs +6 -6
  95. package/dist/viewer/index.mjs.br +0 -0
  96. package/dist/viewer/index.mjs.gz +0 -0
  97. package/package.json +2 -2
  98. package/dist/AiChatPanel-F4E3A2DE.js.br +0 -0
  99. package/dist/AiChatPanel-F4E3A2DE.js.gz +0 -0
  100. package/dist/AiChatPanel-VEULATXX.mjs.br +0 -0
  101. package/dist/AiChatPanel-VEULATXX.mjs.gz +0 -0
  102. package/dist/Model3DScene-KIPEODEJ.mjs.br +0 -0
  103. package/dist/Model3DScene-KIPEODEJ.mjs.gz +0 -0
  104. package/dist/Model3DScene-TD2LIHYP.js.br +0 -0
  105. package/dist/Model3DScene-TD2LIHYP.js.gz +0 -0
  106. package/dist/SurfaceChart3DScene-GRBWZ52S.mjs.gz +0 -0
  107. package/dist/SurfaceChart3DScene-OTKXQH5O.js.br +0 -0
  108. package/dist/SurfaceChart3DScene-OTKXQH5O.js.gz +0 -0
  109. package/dist/chunk-3HWE6QZG.mjs.br +0 -0
  110. package/dist/chunk-3HWE6QZG.mjs.gz +0 -0
  111. package/dist/chunk-BNSCH4WT.js.br +0 -0
  112. package/dist/chunk-BNSCH4WT.js.gz +0 -0
  113. package/dist/chunk-BXAK3JFM.js.br +0 -0
  114. package/dist/chunk-BXAK3JFM.js.gz +0 -0
  115. package/dist/chunk-DOS7NY7C.js.br +0 -0
  116. package/dist/chunk-DOS7NY7C.js.gz +0 -0
  117. package/dist/chunk-EUQ2IER3.js.br +0 -0
  118. package/dist/chunk-EUQ2IER3.js.gz +0 -0
  119. package/dist/chunk-FDR5W67L.js.br +0 -0
  120. package/dist/chunk-FDR5W67L.js.gz +0 -0
  121. package/dist/chunk-GKOKCOXR.mjs.br +0 -0
  122. package/dist/chunk-GKOKCOXR.mjs.gz +0 -0
  123. package/dist/chunk-GZ6TXBEO.mjs.br +0 -0
  124. package/dist/chunk-GZ6TXBEO.mjs.gz +0 -0
  125. package/dist/chunk-L5YGPCQW.mjs.br +0 -0
  126. package/dist/chunk-L5YGPCQW.mjs.gz +0 -0
  127. package/dist/chunk-TEXIGSA6.mjs.br +0 -0
  128. package/dist/chunk-TEXIGSA6.mjs.gz +0 -0
  129. package/dist/chunk-VY3KLDJF.js.br +0 -0
  130. package/dist/chunk-VY3KLDJF.js.gz +0 -0
  131. package/dist/chunk-ZFRPPY2N.mjs.br +0 -0
  132. package/dist/chunk-ZFRPPY2N.mjs.gz +0 -0
  133. package/dist/useViewerBuildingBlocks-YvCYsxa3.d.ts.map +0 -1
@@ -1,5 +1,5 @@
1
- import { translationsEn } from './chunk-TEXIGSA6.mjs';
2
- import { SHAPE_PRESET_DEFS, computeValueRangeForChart, VIEWER_SHORTCUT_REFERENCE, getAnimationInitialStyle, cloneHistorySnapshot, hasShapeProperties, isTemplateElement, getImageFitStyle, isImageLikeElement, runMediaCommand, findMediaElementByElementId, mediaPlaybackAttributes, buildTextBlockStyle, hasTextProperties, toCssWritingMode, toCssTextOrientation, toCssVerticalDirection, getKinsokuLineBreakStyles, buildTextBody3DSceneStyle, resolveParagraphRtl, resolveParagraphAlign, resolveCssTextAlign, resolveParagraphStrutFontSize, colorWithOpacity, normalizeHexColor, build3DExtrusionData, getResolvedShapeClipPath, normalizeStrokeDashType, buildCssGradientFromShapeStyle, buildShadowCssFromShapeStyle, buildInnerShadowCssFromShapeStyle, suppressesCssBorder, buildMultiLayerShadowCss, buildGlowBoxShadow, getCompoundLineBoxShadow, getSoftEdgeFilterId, getEffectDagFilter, buildPatternFillCss, buildReflectionCss, getCssBorderDashStyle, getCompoundLineBorderWidth, getSvgStrokeDasharray, buildSvgGradientDef, isCalloutShape, getCalloutLeaderLineGeometry, buildCalloutLeaderLineSvgPath, getCalloutViewBoxBounds, svgLineCap, getCompoundLineOffsets, getCompoundLineWidths, computeSelectionRect, rectToCells, isCellInRect, buildChartViewModel, buildNotesPdfBytes, buildSlidesPdfBytes, buildPreviewAnimation, buildMotionPathPreview, getRoundRectRadiusPx, registerPersistentAudio, proportionalLineHeight, substituteFieldText, resolveUnderlineDecorationStyle, POWERPOINT_METRIC_TRACKING, resolveAutoFitFontScale, getSubstituteFontFamily, parsePanoseString, hasDistinctScriptFonts, buildTextReflectionCss, getTextAlphaOpacity, buildTextRunFilterChain, buildTextShadowCss, TEXT_BUILD_ID_SEP, buildTextBuildSpec, textBuildSpanStyle, evaluatePresetShape, sanitizeGradientStops, getGradientTileFlipCss, getGradientTileRectCss, apply3dEffects, clampUnitInterval, customGeometryPathsToSvgSubpaths, svgGradientFillRef, computeColumnBoundaries, parseDrawingColor, parseDrawingColorOpacity, getCellDiagonalBorders, getPatternSvg, ooxmlDashToCssBorderStyle, cell3DBevelCss, getChartStylePalette, chartAreaFill, computeLayout, valueToY, formatAxisValue, computeLayoutOptions, splitSeriesByAxis, computeValueRange, getSecondaryValueAxis, seriesColor, paletteColor, resolveRegionCode, normalizeValue, sequentialColorScale, convertOmmlToMathMl, sanitizeMathMl, buildTextFillCss, resolvePictureBullet, computeResizedColumnWidths, computeResizedRowHeight, DEFAULT_ROW_HEIGHT, resolveFontRefIdx, tintColor2, shadeColor2, ooxmlGradientAngleToCssDegrees, segmentByScript, resolveFontForScript, generateLogTicks, formatAxisValueWithUnits, getDisplayUnitLabel, hexToRgbChannels, chartPartToAttrs } from './chunk-GKOKCOXR.mjs';
1
+ import { translationsEn } from './chunk-5YV26HMJ.mjs';
2
+ import { SHAPE_PRESET_DEFS, computeValueRangeForChart, VIEWER_SHORTCUT_REFERENCE, getAnimationInitialStyle, cloneHistorySnapshot, hasShapeProperties, isTemplateElement, getImageFitStyle, isImageLikeElement, runMediaCommand, findMediaElementByElementId, mediaPlaybackAttributes, buildTextBlockStyle, hasTextProperties, toCssWritingMode, toCssTextOrientation, toCssVerticalDirection, getKinsokuLineBreakStyles, buildTextBody3DSceneStyle, resolveParagraphRtl, resolveParagraphAlign, resolveCssTextAlign, resolveParagraphStrutFontSize, colorWithOpacity, normalizeHexColor, build3DExtrusionData, getResolvedShapeClipPath, isStrokeOnlyPresetElement, normalizeStrokeDashType, buildCssGradientFromShapeStyle, buildShadowCssFromShapeStyle, buildInnerShadowCssFromShapeStyle, suppressesCssBorder, buildMultiLayerShadowCss, buildGlowBoxShadow, getCompoundLineBoxShadow, getSoftEdgeFilterId, getEffectDagFilter, buildPatternFillCss, buildReflectionCss, getCssBorderDashStyle, getCompoundLineBorderWidth, getSvgStrokeDasharray, buildSvgGradientDef, isCalloutShape, getCalloutLeaderLineGeometry, buildCalloutLeaderLineSvgPath, getCalloutViewBoxBounds, svgLineCap, getCompoundLineOffsets, getCompoundLineWidths, computeSelectionRect, DEFAULT_FONT_FAMILY, rectToCells, isCellInRect, buildChartViewModel, buildNotesPdfBytes, buildSlidesPdfBytes, buildPreviewAnimation, buildMotionPathPreview, getRoundRectRadiusPx, registerPersistentAudio, proportionalLineHeight, substituteFieldText, resolveUnderlineDecorationStyle, POWERPOINT_METRIC_TRACKING, resolveAutoFitFontScale, getSubstituteFontFamily, parsePanoseString, hasDistinctScriptFonts, buildTextReflectionCss, getTextAlphaOpacity, buildTextRunFilterChain, buildTextShadowCss, TEXT_BUILD_ID_SEP, buildTextBuildSpec, textBuildSpanStyle, sanitizeGradientStops, getGradientTileFlipCss, getGradientTileRectCss, apply3dEffects, clampUnitInterval, customGeometryPathsToSvgSubpaths, svgGradientFillRef, computeColumnBoundaries, parseDrawingColor, parseDrawingColorOpacity, getCellDiagonalBorders, getPatternSvg, ooxmlDashToCssBorderStyle, cell3DBevelCss, getChartStylePalette, chartAreaFill, computeLayout, valueToY, formatAxisValue, computeLayoutOptions, splitSeriesByAxis, computeValueRange, getSecondaryValueAxis, seriesColor, paletteColor, resolveRegionCode, normalizeValue, sequentialColorScale, convertOmmlToMathMl, sanitizeMathMl, buildTextFillCss, resolvePictureBullet, computeResizedColumnWidths, computeResizedRowHeight, DEFAULT_ROW_HEIGHT, resolveFontRefIdx, tintColor2, shadeColor2, ooxmlGradientAngleToCssDegrees, segmentByScript, resolveFontForScript, generateLogTicks, formatAxisValueWithUnits, getDisplayUnitLabel, hexToRgbChannels, chartPartToAttrs } from './chunk-3JTRZVYW.mjs';
3
3
  import { clsx } from 'clsx';
4
4
  import { twMerge } from 'tailwind-merge';
5
5
  import React6, { useState, useEffect, useMemo, Suspense, useRef, useCallback, useLayoutEffect } from 'react';
@@ -29,7 +29,7 @@ var DEFAULT_BODY_INSET_TB_PX = 45720 / 9525;
29
29
  var DEFAULT_TEXT_COLOR = "#111827";
30
30
  var DEFAULT_FILL_COLOR = "#3b82f6";
31
31
  var DEFAULT_STROKE_COLOR = "#1f2937";
32
- var DEFAULT_FONT_FAMILY = '"Segoe UI", "Helvetica Neue", Arial, sans-serif';
32
+ var DEFAULT_FONT_FAMILY2 = '"Segoe UI", "Helvetica Neue", Arial, sans-serif';
33
33
  var DEFAULT_TEXT_FONT_SIZE = 24;
34
34
  var HYPERLINK_COLOR = "#0563C1";
35
35
  var DEFAULT_TABLE_ROWS = 3;
@@ -1738,7 +1738,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1738
1738
  const baseFontFamily = rawFontFamily ? getSubstituteFontFamily(
1739
1739
  rawFontFamily,
1740
1740
  parsePanoseString(segmentStyle.latinFontPanose ?? element.textStyle?.latinFontPanose)
1741
- ) : DEFAULT_FONT_FAMILY;
1741
+ ) : DEFAULT_FONT_FAMILY2;
1742
1742
  const scriptFont = (name, panose) => name ? getSubstituteFontFamily(name, parsePanoseString(panose)) : baseFontFamily;
1743
1743
  const scriptFonts = {
1744
1744
  latin: baseFontFamily,
@@ -2232,67 +2232,6 @@ function apply3dEffects2(base, scene3d, shape3d, fillColorFallback) {
2232
2232
  apply3dEffects(base, scene3d, shape3d, fillColorFallback);
2233
2233
  }
2234
2234
 
2235
- // src/viewer/utils/vector-subpath-paint.ts
2236
- function toHexByte(value) {
2237
- const clamped = Math.max(0, Math.min(255, Math.round(value)));
2238
- return clamped.toString(16).padStart(2, "0");
2239
- }
2240
- function shiftHex(hex, factor, towardsWhite) {
2241
- const channels = hexToRgbChannels(hex);
2242
- if (!channels) {
2243
- return hex;
2244
- }
2245
- const shift = (c) => towardsWhite ? c + (255 - c) * factor : c * (1 - factor);
2246
- return `#${toHexByte(shift(channels.r))}${toHexByte(shift(channels.g))}${toHexByte(shift(channels.b))}`;
2247
- }
2248
- function adjustFillForMode(fillHex, mode) {
2249
- switch (mode) {
2250
- case "lighten":
2251
- return shiftHex(fillHex, 0.4, true);
2252
- case "lightenLess":
2253
- return shiftHex(fillHex, 0.2, true);
2254
- case "darken":
2255
- return shiftHex(fillHex, 0.4, false);
2256
- case "darkenLess":
2257
- return shiftHex(fillHex, 0.2, false);
2258
- default:
2259
- return fillHex;
2260
- }
2261
- }
2262
- function buildCustomSubpathPaints(subpaths, hasFill, fillColor, fillOpacity) {
2263
- return subpaths.map((subpath) => {
2264
- const fillOff = subpath.fillMode === "none" || !hasFill;
2265
- return {
2266
- d: subpath.d,
2267
- fill: fillOff ? "none" : colorWithOpacity(adjustFillForMode(fillColor, subpath.fillMode), fillOpacity),
2268
- stroked: subpath.stroke !== false
2269
- };
2270
- });
2271
- }
2272
- function getStrokeOnlyPresetPaths(element) {
2273
- if (element.type !== "shape" || !hasShapeProperties(element)) {
2274
- return void 0;
2275
- }
2276
- const shapeType = element.shapeType;
2277
- if (!shapeType || shapeType === "custom") {
2278
- return void 0;
2279
- }
2280
- if (element.pathData) {
2281
- return void 0;
2282
- }
2283
- const result = evaluatePresetShape(
2284
- shapeType,
2285
- Math.max(element.width, 1),
2286
- Math.max(element.height, 1),
2287
- element.shapeAdjustments
2288
- );
2289
- if (!result || !result.fillNone) {
2290
- return void 0;
2291
- }
2292
- const drawable = result.paths.filter((path) => path.d !== "");
2293
- return drawable.length > 0 ? drawable : void 0;
2294
- }
2295
-
2296
2235
  // src/viewer/utils/shape-visual-style.ts
2297
2236
  function getGradientTilingCss(style) {
2298
2237
  if (!style || style.fillMode !== "gradient") {
@@ -2314,7 +2253,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2314
2253
  const normalizedShapeType = getShapeType(element.shapeType);
2315
2254
  const clipPath = getResolvedShapeClipPath(element);
2316
2255
  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;
2317
- const rendersStrokeOnlyPreset = Boolean(getStrokeOnlyPresetPaths(element));
2256
+ const rendersStrokeOnlyPreset = isStrokeOnlyPresetElement(element);
2318
2257
  const fillOpacity = element.shapeStyle?.fillOpacity;
2319
2258
  const strokeOpacity = element.shapeStyle?.strokeOpacity;
2320
2259
  const strokeDash = normalizeStrokeDashType(element.shapeStyle?.strokeDash);
@@ -2492,7 +2431,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
2492
2431
  clipPath
2493
2432
  };
2494
2433
  }
2495
- if (normalizedShapeType === "line") {
2434
+ if (normalizedShapeType === "line" && !rendersStrokeOnlyPreset) {
2496
2435
  return {
2497
2436
  ...base,
2498
2437
  backgroundColor: "transparent",
@@ -2645,6 +2584,44 @@ function renderConnectorMarker(markerId, arrowType, color, arrowWidth, arrowLeng
2645
2584
  }
2646
2585
  );
2647
2586
  }
2587
+
2588
+ // src/viewer/utils/vector-subpath-paint.ts
2589
+ function toHexByte(value) {
2590
+ const clamped = Math.max(0, Math.min(255, Math.round(value)));
2591
+ return clamped.toString(16).padStart(2, "0");
2592
+ }
2593
+ function shiftHex(hex, factor, towardsWhite) {
2594
+ const channels = hexToRgbChannels(hex);
2595
+ if (!channels) {
2596
+ return hex;
2597
+ }
2598
+ const shift = (c) => towardsWhite ? c + (255 - c) * factor : c * (1 - factor);
2599
+ return `#${toHexByte(shift(channels.r))}${toHexByte(shift(channels.g))}${toHexByte(shift(channels.b))}`;
2600
+ }
2601
+ function adjustFillForMode(fillHex, mode) {
2602
+ switch (mode) {
2603
+ case "lighten":
2604
+ return shiftHex(fillHex, 0.4, true);
2605
+ case "lightenLess":
2606
+ return shiftHex(fillHex, 0.2, true);
2607
+ case "darken":
2608
+ return shiftHex(fillHex, 0.4, false);
2609
+ case "darkenLess":
2610
+ return shiftHex(fillHex, 0.2, false);
2611
+ default:
2612
+ return fillHex;
2613
+ }
2614
+ }
2615
+ function buildCustomSubpathPaints(subpaths, hasFill, fillColor, fillOpacity) {
2616
+ return subpaths.map((subpath) => {
2617
+ const fillOff = subpath.fillMode === "none" || !hasFill;
2618
+ return {
2619
+ d: subpath.d,
2620
+ fill: fillOff ? "none" : colorWithOpacity(adjustFillForMode(fillColor, subpath.fillMode), fillOpacity),
2621
+ stroked: subpath.stroke !== false
2622
+ };
2623
+ });
2624
+ }
2648
2625
  function joinStyle(shapeStyle) {
2649
2626
  const lineJoin = shapeStyle?.lineJoin === "bevel" ? "bevel" : shapeStyle?.lineJoin === "miter" ? "miter" : "round";
2650
2627
  const miterLimit = lineJoin === "miter" && typeof shapeStyle?.miterLimit === "number" ? Math.max(shapeStyle.miterLimit / 1e5, 1) : void 0;
@@ -2767,25 +2744,6 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
2767
2744
  }
2768
2745
  );
2769
2746
  }
2770
- function renderStrokeOnlyPreset(presetPaths, width, height, shapeStyle, strokePaint, strokeWidth, dashArray) {
2771
- const ctx = strokeContext(shapeStyle, strokePaint, Math.max(strokeWidth, 1), dashArray);
2772
- const nodes = [];
2773
- presetPaths.forEach((path, idx) => {
2774
- if (path.stroke === false) {
2775
- return;
2776
- }
2777
- nodes.push(...strokeStrands(path.d, `pre${idx}`, ctx));
2778
- });
2779
- return /* @__PURE__ */ jsx(
2780
- "svg",
2781
- {
2782
- viewBox: `0 0 ${Math.max(width, 1)} ${Math.max(height, 1)}`,
2783
- className: "w-full h-full pointer-events-none",
2784
- preserveAspectRatio: "none",
2785
- children: nodes
2786
- }
2787
- );
2788
- }
2789
2747
  function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor, animatesFill, animatesStroke) {
2790
2748
  if (!hasShapeProperties(element)) {
2791
2749
  return null;
@@ -3004,18 +2962,6 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
3004
2962
  }
3005
2963
  );
3006
2964
  }
3007
- const strokeOnlyPreset = getStrokeOnlyPresetPaths(element);
3008
- if (strokeOnlyPreset) {
3009
- return renderStrokeOnlyPreset(
3010
- strokeOnlyPreset,
3011
- element.width,
3012
- element.height,
3013
- element.shapeStyle,
3014
- strokePaint,
3015
- strokeWidth,
3016
- dashArray
3017
- );
3018
- }
3019
2965
  return null;
3020
2966
  }
3021
2967
 
@@ -4082,113 +4028,120 @@ function renderTableFromTableData(element, textStyle, options) {
4082
4028
  "w-full h-full overflow-hidden",
4083
4029
  isEditable && hasCellSelectionHandler ? "pointer-events-auto" : "pointer-events-none"
4084
4030
  ),
4085
- children: /* @__PURE__ */ jsxs("table", { className: "w-full h-full border-collapse table-fixed", children: [
4086
- tableData.columnWidths.length > 0 && /* @__PURE__ */ jsx("colgroup", { children: tableData.columnWidths.map((w, ci) => /* @__PURE__ */ jsx(
4087
- "col",
4088
- {
4089
- style: { width: `${(w * 100).toFixed(2)}%` }
4090
- },
4091
- `${element.id}-col-${ci}`
4092
- )) }),
4093
- /* @__PURE__ */ jsx("tbody", { children: tableData.rows.map((row, rowIndex) => /* @__PURE__ */ jsx(
4094
- "tr",
4095
- {
4096
- style: row.height ? { height: row.height } : void 0,
4097
- children: row.cells.map((cell, cellIndex) => {
4098
- if (cell.hMerge || cell.vMerge) {
4099
- return null;
4100
- }
4101
- const isCellSelected = selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex;
4102
- const isInMultiSelection = isCellInRect(rowIndex, cellIndex, selectionRect);
4103
- const isCellEditing = isCellSelected && selectedCell?.isEditing;
4104
- const diag = getCellDiagonalBorders2(
4105
- cell.style,
4106
- tableData,
4107
- { rowIndex, cellIndex, rowCount, columnCount },
4108
- options?.styleCtx
4109
- );
4110
- return /* @__PURE__ */ jsxs(
4111
- "td",
4112
- {
4113
- className: cn(
4114
- "border px-1 py-0.5 align-top",
4115
- isEditable && hasCellSelectionHandler ? "border-blue-200/70 cursor-cell" : "border-gray-400/50",
4116
- isCellSelected ? "ring-1 ring-inset ring-blue-500" : null,
4117
- isInMultiSelection && !isCellSelected ? "bg-blue-500/15 ring-1 ring-inset ring-blue-400/50" : null
4118
- ),
4119
- colSpan: cell.gridSpan && cell.gridSpan > 1 ? cell.gridSpan : void 0,
4120
- rowSpan: cell.rowSpan && cell.rowSpan > 1 ? cell.rowSpan : void 0,
4121
- style: {
4122
- ...textStyle,
4123
- ...cellStyleToCss(cell.style),
4124
- ...diag ? { position: "relative" } : void 0
4125
- },
4126
- onClick: (event) => {
4127
- if (!isEditable || !hasCellSelectionHandler) {
4128
- return;
4129
- }
4130
- event.stopPropagation();
4131
- if (event.shiftKey && selectedCell) {
4132
- const rect = computeSelectionRect(
4133
- selectedCell.rowIndex,
4134
- selectedCell.columnIndex,
4135
- rowIndex,
4136
- cellIndex,
4137
- tableData
4138
- );
4139
- options?.onSelectCell?.({
4140
- rowIndex: selectedCell.rowIndex,
4141
- columnIndex: selectedCell.columnIndex,
4142
- selectedCells: rectToCells(rect)
4143
- });
4144
- } else {
4145
- options?.onSelectCell?.({
4146
- rowIndex,
4147
- columnIndex: cellIndex
4148
- });
4149
- }
4150
- },
4151
- onDoubleClick: (event) => {
4152
- if (!isEditable || !hasCellSelectionHandler) {
4153
- return;
4154
- }
4155
- event.stopPropagation();
4156
- options?.onSelectCell?.({
4157
- rowIndex,
4158
- columnIndex: cellIndex,
4159
- isEditing: true
4160
- });
4161
- },
4162
- children: [
4163
- diag ? /* @__PURE__ */ jsx(TableCellDiagonalBorders, { diag }) : null,
4164
- isCellEditing ? /* @__PURE__ */ jsx(
4165
- TableCellInput,
4166
- {
4167
- initialText: cell.text ?? "",
4168
- style: {
4169
- ...textStyle,
4170
- ...cellStyleToCss(cell.style)
4171
- },
4172
- onCommit: (text) => {
4173
- options?.onCommitCellEdit?.(rowIndex, cellIndex, text);
4174
- },
4175
- onCancel: () => {
4031
+ children: /* @__PURE__ */ jsxs(
4032
+ "table",
4033
+ {
4034
+ className: "w-full h-full border-collapse table-fixed",
4035
+ style: { fontFamily: DEFAULT_FONT_FAMILY },
4036
+ children: [
4037
+ tableData.columnWidths.length > 0 && /* @__PURE__ */ jsx("colgroup", { children: tableData.columnWidths.map((w, ci) => /* @__PURE__ */ jsx(
4038
+ "col",
4039
+ {
4040
+ style: { width: `${(w * 100).toFixed(2)}%` }
4041
+ },
4042
+ `${element.id}-col-${ci}`
4043
+ )) }),
4044
+ /* @__PURE__ */ jsx("tbody", { children: tableData.rows.map((row, rowIndex) => /* @__PURE__ */ jsx(
4045
+ "tr",
4046
+ {
4047
+ style: row.height ? { height: row.height } : void 0,
4048
+ children: row.cells.map((cell, cellIndex) => {
4049
+ if (cell.hMerge || cell.vMerge) {
4050
+ return null;
4051
+ }
4052
+ const isCellSelected = selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex;
4053
+ const isInMultiSelection = isCellInRect(rowIndex, cellIndex, selectionRect);
4054
+ const isCellEditing = isCellSelected && selectedCell?.isEditing;
4055
+ const diag = getCellDiagonalBorders2(
4056
+ cell.style,
4057
+ tableData,
4058
+ { rowIndex, cellIndex, rowCount, columnCount },
4059
+ options?.styleCtx
4060
+ );
4061
+ return /* @__PURE__ */ jsxs(
4062
+ "td",
4063
+ {
4064
+ className: cn(
4065
+ "border px-1 py-0.5 align-top",
4066
+ isEditable && hasCellSelectionHandler ? "border-blue-200/70 cursor-cell" : "border-gray-400/50",
4067
+ isCellSelected ? "ring-1 ring-inset ring-blue-500" : null,
4068
+ isInMultiSelection && !isCellSelected ? "bg-blue-500/15 ring-1 ring-inset ring-blue-400/50" : null
4069
+ ),
4070
+ colSpan: cell.gridSpan && cell.gridSpan > 1 ? cell.gridSpan : void 0,
4071
+ rowSpan: cell.rowSpan && cell.rowSpan > 1 ? cell.rowSpan : void 0,
4072
+ style: {
4073
+ ...textStyle,
4074
+ ...cellStyleToCss(cell.style),
4075
+ ...diag ? { position: "relative" } : void 0
4076
+ },
4077
+ onClick: (event) => {
4078
+ if (!isEditable || !hasCellSelectionHandler) {
4079
+ return;
4080
+ }
4081
+ event.stopPropagation();
4082
+ if (event.shiftKey && selectedCell) {
4083
+ const rect = computeSelectionRect(
4084
+ selectedCell.rowIndex,
4085
+ selectedCell.columnIndex,
4086
+ rowIndex,
4087
+ cellIndex,
4088
+ tableData
4089
+ );
4090
+ options?.onSelectCell?.({
4091
+ rowIndex: selectedCell.rowIndex,
4092
+ columnIndex: selectedCell.columnIndex,
4093
+ selectedCells: rectToCells(rect)
4094
+ });
4095
+ } else {
4176
4096
  options?.onSelectCell?.({
4177
4097
  rowIndex,
4178
4098
  columnIndex: cellIndex
4179
4099
  });
4180
4100
  }
4181
- }
4182
- ) : cell.text || "\xA0"
4183
- ]
4184
- },
4185
- `${element.id}-cell-${rowIndex}-${cellIndex}`
4186
- );
4187
- })
4188
- },
4189
- `${element.id}-row-${rowIndex}`
4190
- )) })
4191
- ] })
4101
+ },
4102
+ onDoubleClick: (event) => {
4103
+ if (!isEditable || !hasCellSelectionHandler) {
4104
+ return;
4105
+ }
4106
+ event.stopPropagation();
4107
+ options?.onSelectCell?.({
4108
+ rowIndex,
4109
+ columnIndex: cellIndex,
4110
+ isEditing: true
4111
+ });
4112
+ },
4113
+ children: [
4114
+ diag ? /* @__PURE__ */ jsx(TableCellDiagonalBorders, { diag }) : null,
4115
+ isCellEditing ? /* @__PURE__ */ jsx(
4116
+ TableCellInput,
4117
+ {
4118
+ initialText: cell.text ?? "",
4119
+ style: {
4120
+ ...textStyle,
4121
+ ...cellStyleToCss(cell.style)
4122
+ },
4123
+ onCommit: (text) => {
4124
+ options?.onCommitCellEdit?.(rowIndex, cellIndex, text);
4125
+ },
4126
+ onCancel: () => {
4127
+ options?.onSelectCell?.({
4128
+ rowIndex,
4129
+ columnIndex: cellIndex
4130
+ });
4131
+ }
4132
+ }
4133
+ ) : cell.text || "\xA0"
4134
+ ]
4135
+ },
4136
+ `${element.id}-cell-${rowIndex}-${cellIndex}`
4137
+ );
4138
+ })
4139
+ },
4140
+ `${element.id}-row-${rowIndex}`
4141
+ )) })
4142
+ ]
4143
+ }
4144
+ )
4192
4145
  }
4193
4146
  )
4194
4147
  }
@@ -4233,135 +4186,142 @@ function renderTableElement(element, textStyle, options) {
4233
4186
  "w-full h-full overflow-hidden",
4234
4187
  isEditable && hasCellSelectionHandler ? "pointer-events-auto" : "pointer-events-none"
4235
4188
  ),
4236
- children: /* @__PURE__ */ jsxs("table", { className: "w-full h-full border-collapse table-fixed", children: [
4237
- parsedTable.columnPercentages.length > 0 ? /* @__PURE__ */ jsx("colgroup", { children: parsedTable.columnPercentages.map((percentage, columnIndex) => /* @__PURE__ */ jsx(
4238
- "col",
4239
- {
4240
- style: { width: `${percentage.toFixed(2)}%` }
4241
- },
4242
- `${element.id}-col-${columnIndex}`
4243
- )) }) : null,
4244
- /* @__PURE__ */ jsx("tbody", { children: parsedTable.rows.map((row, rowIndex) => {
4245
- const cells = ensureArrayValue(row["a:tc"]);
4246
- const rowHeightRaw = Number.parseInt(String(row["@_h"] || ""), 10);
4247
- const rowHeight = Number.isFinite(rowHeightRaw) && rowHeightRaw > 0 ? Math.max(16, rowHeightRaw / EMU_PER_PX) : void 0;
4248
- return /* @__PURE__ */ jsx(
4249
- "tr",
4250
- {
4251
- style: rowHeight ? { height: rowHeight } : void 0,
4252
- children: cells.map((cell, cellIndex) => {
4253
- const isHMerged = cell["@_hMerge"] === "1";
4254
- const isVMerged = cell["@_vMerge"] === "1";
4255
- if (isHMerged || isVMerged) {
4256
- return null;
4257
- }
4258
- const gridSpanRaw = Number.parseInt(String(cell["@_gridSpan"] || ""), 10);
4259
- const colSpan = Number.isFinite(gridSpanRaw) && gridSpanRaw > 1 ? gridSpanRaw : void 0;
4260
- const rowSpanRaw = Number.parseInt(String(cell["@_rowSpan"] || ""), 10);
4261
- const rSpan = Number.isFinite(rowSpanRaw) && rowSpanRaw > 1 ? rowSpanRaw : void 0;
4262
- const bandStyle = getTableCellBandStyle(
4263
- element,
4264
- rowIndex,
4265
- cellIndex,
4266
- parsedTable.rowCount,
4267
- parsedTable.columnCount,
4268
- options?.styleCtx
4269
- );
4270
- const xmlCellStyle = extractTableCellStyle(cell, textStyle, schemeOverrides);
4271
- const tdCellOverride = tableEl.tableData?.rows[rowIndex]?.cells[cellIndex]?.style;
4272
- const diag = getCellDiagonalBorders2(
4273
- tdCellOverride,
4274
- tableEl.tableData,
4275
- {
4276
- rowIndex,
4277
- cellIndex,
4278
- rowCount: parsedTable.rowCount,
4279
- columnCount: parsedTable.columnCount
4280
- },
4281
- options?.styleCtx
4282
- );
4283
- const mergedStyle = {
4284
- ...bandStyle,
4285
- ...xmlCellStyle,
4286
- ...tdCellOverride ? cellStyleToCss(tdCellOverride) : void 0,
4287
- ...diag ? { position: "relative" } : void 0
4288
- };
4289
- return /* @__PURE__ */ jsxs(
4290
- "td",
4291
- {
4292
- className: cn(
4293
- "border px-1 py-0.5 align-top",
4294
- isEditable && hasCellSelectionHandler ? "border-blue-200/70 cursor-cell" : "border-white/30",
4295
- selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex ? "ring-1 ring-inset ring-blue-500" : null,
4296
- isCellInRect(rowIndex, cellIndex, xmlSelectionRect) && !(selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex) ? "bg-blue-500/15 ring-1 ring-inset ring-blue-400/50" : null
4297
- ),
4298
- colSpan,
4299
- rowSpan: rSpan,
4300
- style: mergedStyle,
4301
- onClick: (event) => {
4302
- if (!isEditable || !hasCellSelectionHandler) {
4303
- return;
4304
- }
4305
- event.stopPropagation();
4306
- if (event.shiftKey && selectedCell && tableEl.tableData) {
4307
- const rect = computeSelectionRect(
4308
- selectedCell.rowIndex,
4309
- selectedCell.columnIndex,
4310
- rowIndex,
4311
- cellIndex,
4312
- tableEl.tableData
4313
- );
4314
- options?.onSelectCell?.({
4315
- rowIndex: selectedCell.rowIndex,
4316
- columnIndex: selectedCell.columnIndex,
4317
- selectedCells: rectToCells(rect)
4318
- });
4319
- } else {
4320
- options?.onSelectCell?.({
4321
- rowIndex,
4322
- columnIndex: cellIndex
4323
- });
4324
- }
4325
- },
4326
- onDoubleClick: (event) => {
4327
- if (!isEditable || !hasCellSelectionHandler) {
4328
- return;
4329
- }
4330
- event.stopPropagation();
4331
- options?.onSelectCell?.({
4189
+ children: /* @__PURE__ */ jsxs(
4190
+ "table",
4191
+ {
4192
+ className: "w-full h-full border-collapse table-fixed",
4193
+ style: { fontFamily: DEFAULT_FONT_FAMILY },
4194
+ children: [
4195
+ parsedTable.columnPercentages.length > 0 ? /* @__PURE__ */ jsx("colgroup", { children: parsedTable.columnPercentages.map((percentage, columnIndex) => /* @__PURE__ */ jsx(
4196
+ "col",
4197
+ {
4198
+ style: { width: `${percentage.toFixed(2)}%` }
4199
+ },
4200
+ `${element.id}-col-${columnIndex}`
4201
+ )) }) : null,
4202
+ /* @__PURE__ */ jsx("tbody", { children: parsedTable.rows.map((row, rowIndex) => {
4203
+ const cells = ensureArrayValue(row["a:tc"]);
4204
+ const rowHeightRaw = Number.parseInt(String(row["@_h"] || ""), 10);
4205
+ const rowHeight = Number.isFinite(rowHeightRaw) && rowHeightRaw > 0 ? Math.max(16, rowHeightRaw / EMU_PER_PX) : void 0;
4206
+ return /* @__PURE__ */ jsx(
4207
+ "tr",
4208
+ {
4209
+ style: rowHeight ? { height: rowHeight } : void 0,
4210
+ children: cells.map((cell, cellIndex) => {
4211
+ const isHMerged = cell["@_hMerge"] === "1";
4212
+ const isVMerged = cell["@_vMerge"] === "1";
4213
+ if (isHMerged || isVMerged) {
4214
+ return null;
4215
+ }
4216
+ const gridSpanRaw = Number.parseInt(String(cell["@_gridSpan"] || ""), 10);
4217
+ const colSpan = Number.isFinite(gridSpanRaw) && gridSpanRaw > 1 ? gridSpanRaw : void 0;
4218
+ const rowSpanRaw = Number.parseInt(String(cell["@_rowSpan"] || ""), 10);
4219
+ const rSpan = Number.isFinite(rowSpanRaw) && rowSpanRaw > 1 ? rowSpanRaw : void 0;
4220
+ const bandStyle = getTableCellBandStyle(
4221
+ element,
4222
+ rowIndex,
4223
+ cellIndex,
4224
+ parsedTable.rowCount,
4225
+ parsedTable.columnCount,
4226
+ options?.styleCtx
4227
+ );
4228
+ const xmlCellStyle = extractTableCellStyle(cell, textStyle, schemeOverrides);
4229
+ const tdCellOverride = tableEl.tableData?.rows[rowIndex]?.cells[cellIndex]?.style;
4230
+ const diag = getCellDiagonalBorders2(
4231
+ tdCellOverride,
4232
+ tableEl.tableData,
4233
+ {
4332
4234
  rowIndex,
4333
- columnIndex: cellIndex,
4334
- isEditing: true
4335
- });
4336
- },
4337
- children: [
4338
- diag ? /* @__PURE__ */ jsx(TableCellDiagonalBorders, { diag }) : null,
4339
- selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex && selectedCell?.isEditing ? /* @__PURE__ */ jsx(
4340
- TableCellInput,
4341
- {
4342
- initialText: extractCellText(cell) ?? "",
4343
- style: mergedStyle,
4344
- onCommit: (text) => {
4345
- options?.onCommitCellEdit?.(rowIndex, cellIndex, text);
4346
- },
4347
- onCancel: () => {
4235
+ cellIndex,
4236
+ rowCount: parsedTable.rowCount,
4237
+ columnCount: parsedTable.columnCount
4238
+ },
4239
+ options?.styleCtx
4240
+ );
4241
+ const mergedStyle = {
4242
+ ...bandStyle,
4243
+ ...xmlCellStyle,
4244
+ ...tdCellOverride ? cellStyleToCss(tdCellOverride) : void 0,
4245
+ ...diag ? { position: "relative" } : void 0
4246
+ };
4247
+ return /* @__PURE__ */ jsxs(
4248
+ "td",
4249
+ {
4250
+ className: cn(
4251
+ "border px-1 py-0.5 align-top",
4252
+ isEditable && hasCellSelectionHandler ? "border-blue-200/70 cursor-cell" : "border-white/30",
4253
+ selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex ? "ring-1 ring-inset ring-blue-500" : null,
4254
+ isCellInRect(rowIndex, cellIndex, xmlSelectionRect) && !(selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex) ? "bg-blue-500/15 ring-1 ring-inset ring-blue-400/50" : null
4255
+ ),
4256
+ colSpan,
4257
+ rowSpan: rSpan,
4258
+ style: mergedStyle,
4259
+ onClick: (event) => {
4260
+ if (!isEditable || !hasCellSelectionHandler) {
4261
+ return;
4262
+ }
4263
+ event.stopPropagation();
4264
+ if (event.shiftKey && selectedCell && tableEl.tableData) {
4265
+ const rect = computeSelectionRect(
4266
+ selectedCell.rowIndex,
4267
+ selectedCell.columnIndex,
4268
+ rowIndex,
4269
+ cellIndex,
4270
+ tableEl.tableData
4271
+ );
4272
+ options?.onSelectCell?.({
4273
+ rowIndex: selectedCell.rowIndex,
4274
+ columnIndex: selectedCell.columnIndex,
4275
+ selectedCells: rectToCells(rect)
4276
+ });
4277
+ } else {
4348
4278
  options?.onSelectCell?.({
4349
4279
  rowIndex,
4350
4280
  columnIndex: cellIndex
4351
4281
  });
4352
4282
  }
4353
- }
4354
- ) : extractCellText(cell) || "\xA0"
4355
- ]
4356
- },
4357
- `${element.id}-cell-${rowIndex}-${cellIndex}`
4358
- );
4359
- })
4360
- },
4361
- `${element.id}-row-${rowIndex}`
4362
- );
4363
- }) })
4364
- ] })
4283
+ },
4284
+ onDoubleClick: (event) => {
4285
+ if (!isEditable || !hasCellSelectionHandler) {
4286
+ return;
4287
+ }
4288
+ event.stopPropagation();
4289
+ options?.onSelectCell?.({
4290
+ rowIndex,
4291
+ columnIndex: cellIndex,
4292
+ isEditing: true
4293
+ });
4294
+ },
4295
+ children: [
4296
+ diag ? /* @__PURE__ */ jsx(TableCellDiagonalBorders, { diag }) : null,
4297
+ selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex && selectedCell?.isEditing ? /* @__PURE__ */ jsx(
4298
+ TableCellInput,
4299
+ {
4300
+ initialText: extractCellText(cell) ?? "",
4301
+ style: mergedStyle,
4302
+ onCommit: (text) => {
4303
+ options?.onCommitCellEdit?.(rowIndex, cellIndex, text);
4304
+ },
4305
+ onCancel: () => {
4306
+ options?.onSelectCell?.({
4307
+ rowIndex,
4308
+ columnIndex: cellIndex
4309
+ });
4310
+ }
4311
+ }
4312
+ ) : extractCellText(cell) || "\xA0"
4313
+ ]
4314
+ },
4315
+ `${element.id}-cell-${rowIndex}-${cellIndex}`
4316
+ );
4317
+ })
4318
+ },
4319
+ `${element.id}-row-${rowIndex}`
4320
+ );
4321
+ }) })
4322
+ ]
4323
+ }
4324
+ )
4365
4325
  }
4366
4326
  )
4367
4327
  }
@@ -6198,7 +6158,7 @@ function FailedToLoad() {
6198
6158
  var LazySurfaceChart3DScene = React6.lazy(
6199
6159
  async () => {
6200
6160
  try {
6201
- return await import('./SurfaceChart3DScene-GRBWZ52S.mjs');
6161
+ return await import('./SurfaceChart3DScene-H5ID4CUU.mjs');
6202
6162
  } catch {
6203
6163
  return { default: FailedToLoad };
6204
6164
  }
@@ -8004,4 +7964,4 @@ function stopPreviewAnimation() {
8004
7964
  activePreview = null;
8005
7965
  }
8006
7966
 
8007
- export { ANIMATION_PRESET_OPTIONS, ARROW_SIZE_OPTIONS, CONNECTOR_ARROW_OPTIONS, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, DEFAULT_FILL_COLOR, DEFAULT_FONT_FAMILY, DEFAULT_STROKE_COLOR, DEFAULT_TABLE_COLUMNS, DEFAULT_TABLE_ROWS, DEFAULT_TEXT_COLOR, DEFAULT_TEXT_FONT_SIZE, EMU_PER_PX, GRID_SIZE, HYPERLINK_COLOR, MIN_ELEMENT_SIZE, SHAPE_PRESETS, SHORTCUT_REFERENCE_ITEMS, SLIDE_NAV_THUMBNAIL_WIDTH, STROKE_DASH_OPTIONS, SmartArtNodeText, THEME_COLOR_SWATCHES, TOOLBAR_SECTIONS, UNGROUPED_SECTION_ID, ZOOM_TO_SELECTION_PADDING, build3DExtrusionData2 as build3DExtrusionData, buildLineGlowFilter, buildLineShadowCss, buildNotesPdf, buildPdfFromImageData, buildReactChartViewModel, buildSaveSlides, buildTextBody3DSceneStyle2 as buildTextBody3DSceneStyle, buildTree, chevronPoints, cloneHistorySnapshot2 as cloneHistorySnapshot, cn, colour, executeMediaCommand, fitFontSize, gearPath, getAnimationInitialStyle2 as getAnimationInitialStyle, getConnectorPathGeometry, getCropShapeClipPath, getDuotoneColors, getImageRenderStyle, getImageTilingStyle, getShapeVisualStyle, getTextLayoutStyle, getTextStyleForElement, getTextWarpStyle, hasDagDuotoneEffect, isConnectorOrLineElement, isImageTiled, layoutToCategory, nodeOpacity, partitionTemplateElements, renderAccentProcess, renderAlternatingFlow, renderChartElement, renderConnectorMarker, renderDagDuotoneSvgFilter, renderDescendingProcess, renderGroupedList, renderHorizontalPictureList, renderMediaElement, renderPictureAccentList, renderPyramidList, renderStepDownProcess, renderTableElement, renderTextSegments, renderVectorShape, renderVerticalBlockList, renderVerticalChevronList, resolvePalette, resolveSmartArtDataPalette, resolveStyle, shouldRenderFallbackLabel, smartArtNodeGroupProps, startMotionPathPreview, startPreviewAnimation, stopPreviewAnimation, styleShadow, styleStroke, treeDepth, treeWidth, truncate, wrapChrome };
7967
+ export { ANIMATION_PRESET_OPTIONS, ARROW_SIZE_OPTIONS, CONNECTOR_ARROW_OPTIONS, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, DEFAULT_FILL_COLOR, DEFAULT_FONT_FAMILY2 as DEFAULT_FONT_FAMILY, DEFAULT_STROKE_COLOR, DEFAULT_TABLE_COLUMNS, DEFAULT_TABLE_ROWS, DEFAULT_TEXT_COLOR, DEFAULT_TEXT_FONT_SIZE, EMU_PER_PX, GRID_SIZE, HYPERLINK_COLOR, MIN_ELEMENT_SIZE, SHAPE_PRESETS, SHORTCUT_REFERENCE_ITEMS, SLIDE_NAV_THUMBNAIL_WIDTH, STROKE_DASH_OPTIONS, SmartArtNodeText, THEME_COLOR_SWATCHES, TOOLBAR_SECTIONS, UNGROUPED_SECTION_ID, ZOOM_TO_SELECTION_PADDING, build3DExtrusionData2 as build3DExtrusionData, buildLineGlowFilter, buildLineShadowCss, buildNotesPdf, buildPdfFromImageData, buildReactChartViewModel, buildSaveSlides, buildTextBody3DSceneStyle2 as buildTextBody3DSceneStyle, buildTree, chevronPoints, cloneHistorySnapshot2 as cloneHistorySnapshot, cn, colour, executeMediaCommand, fitFontSize, gearPath, getAnimationInitialStyle2 as getAnimationInitialStyle, getConnectorPathGeometry, getCropShapeClipPath, getDuotoneColors, getImageRenderStyle, getImageTilingStyle, getShapeVisualStyle, getTextLayoutStyle, getTextStyleForElement, getTextWarpStyle, hasDagDuotoneEffect, isConnectorOrLineElement, isImageTiled, layoutToCategory, nodeOpacity, partitionTemplateElements, renderAccentProcess, renderAlternatingFlow, renderChartElement, renderConnectorMarker, renderDagDuotoneSvgFilter, renderDescendingProcess, renderGroupedList, renderHorizontalPictureList, renderMediaElement, renderPictureAccentList, renderPyramidList, renderStepDownProcess, renderTableElement, renderTextSegments, renderVectorShape, renderVerticalBlockList, renderVerticalChevronList, resolvePalette, resolveSmartArtDataPalette, resolveStyle, shouldRenderFallbackLabel, smartArtNodeGroupProps, startMotionPathPreview, startPreviewAnimation, stopPreviewAnimation, styleShadow, styleStroke, treeDepth, treeWidth, truncate, wrapChrome };