pptx-react-viewer 4.2.0 → 4.4.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 (136) hide show
  1. package/CHANGELOG.md +138 -0
  2. package/dist/{AiChatPanel-SEIRQ3XP.mjs → AiChatPanel-QJHUDIWT.mjs} +4 -4
  3. package/dist/AiChatPanel-QJHUDIWT.mjs.br +0 -0
  4. package/dist/AiChatPanel-QJHUDIWT.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-VVTLQXQ5.js → AiChatPanel-UFMSTNCB.js} +28 -28
  6. package/dist/AiChatPanel-UFMSTNCB.js.br +0 -0
  7. package/dist/AiChatPanel-UFMSTNCB.js.gz +0 -0
  8. package/dist/{Model3DScene-DCTVSK2F.mjs → Model3DScene-3GOC5HUS.mjs} +1 -1
  9. package/dist/Model3DScene-3GOC5HUS.mjs.br +0 -0
  10. package/dist/Model3DScene-3GOC5HUS.mjs.gz +0 -0
  11. package/dist/{Model3DScene-SCWQXMEA.js → Model3DScene-KXNJBAQD.js} +2 -2
  12. package/dist/Model3DScene-KXNJBAQD.js.br +0 -0
  13. package/dist/Model3DScene-KXNJBAQD.js.gz +0 -0
  14. package/dist/{chunk-S65QSO6T.js → chunk-7WWINBGF.js} +17172 -8075
  15. package/dist/chunk-7WWINBGF.js.br +0 -0
  16. package/dist/chunk-7WWINBGF.js.gz +0 -0
  17. package/dist/{chunk-KTSDPBQZ.js → chunk-AI6K5EAE.js} +1270 -1079
  18. package/dist/chunk-AI6K5EAE.js.br +0 -0
  19. package/dist/chunk-AI6K5EAE.js.gz +0 -0
  20. package/dist/{chunk-3WYNGYB6.js → chunk-CSY422LU.js} +5 -5
  21. package/dist/chunk-CSY422LU.js.br +0 -0
  22. package/dist/chunk-CSY422LU.js.gz +0 -0
  23. package/dist/{chunk-VPJOJJ36.mjs → chunk-D3TZOCQP.mjs} +17139 -8067
  24. package/dist/chunk-D3TZOCQP.mjs.br +0 -0
  25. package/dist/chunk-D3TZOCQP.mjs.gz +0 -0
  26. package/dist/{chunk-NXGUR2DO.js → chunk-I4D6JQOI.js} +27 -2
  27. package/dist/chunk-I4D6JQOI.js.br +0 -0
  28. package/dist/chunk-I4D6JQOI.js.gz +0 -0
  29. package/dist/{chunk-PC7H3C5W.mjs → chunk-JQXN6PO7.mjs} +27 -2
  30. package/dist/chunk-JQXN6PO7.mjs.br +0 -0
  31. package/dist/chunk-JQXN6PO7.mjs.gz +0 -0
  32. package/dist/{chunk-ZYIJODUR.mjs → chunk-LUHUYBGW.mjs} +211 -20
  33. package/dist/chunk-LUHUYBGW.mjs.br +0 -0
  34. package/dist/chunk-LUHUYBGW.mjs.gz +0 -0
  35. package/dist/{chunk-5MRNT4V6.js → chunk-OWTHF5N4.js} +209 -187
  36. package/dist/chunk-OWTHF5N4.js.br +0 -0
  37. package/dist/chunk-OWTHF5N4.js.gz +0 -0
  38. package/dist/{chunk-4GTDG2FH.mjs → chunk-WCHKDZP6.mjs} +660 -197
  39. package/dist/chunk-WCHKDZP6.mjs.br +0 -0
  40. package/dist/chunk-WCHKDZP6.mjs.gz +0 -0
  41. package/dist/{chunk-B5YZABYX.mjs → chunk-WNFHFFYE.mjs} +32 -10
  42. package/dist/chunk-WNFHFFYE.mjs.br +0 -0
  43. package/dist/chunk-WNFHFFYE.mjs.gz +0 -0
  44. package/dist/{chunk-L4XBWL7J.mjs → chunk-XMKLY2SE.mjs} +1 -1
  45. package/dist/chunk-XMKLY2SE.mjs.br +0 -0
  46. package/dist/chunk-XMKLY2SE.mjs.gz +0 -0
  47. package/dist/{chunk-P2SBIMYF.js → chunk-YJKR7Z3X.js} +2161 -1698
  48. package/dist/chunk-YJKR7Z3X.js.br +0 -0
  49. package/dist/chunk-YJKR7Z3X.js.gz +0 -0
  50. package/dist/i18n/de.cjs +25 -2
  51. package/dist/i18n/de.cjs.br +0 -0
  52. package/dist/i18n/de.cjs.gz +0 -0
  53. package/dist/i18n/de.mjs +25 -2
  54. package/dist/i18n/de.mjs.br +0 -0
  55. package/dist/i18n/de.mjs.gz +0 -0
  56. package/dist/i18n/es.cjs +25 -2
  57. package/dist/i18n/es.cjs.br +0 -0
  58. package/dist/i18n/es.cjs.gz +0 -0
  59. package/dist/i18n/es.mjs +25 -2
  60. package/dist/i18n/es.mjs.br +0 -0
  61. package/dist/i18n/es.mjs.gz +0 -0
  62. package/dist/i18n/fr.cjs +25 -2
  63. package/dist/i18n/fr.cjs.br +0 -0
  64. package/dist/i18n/fr.cjs.gz +0 -0
  65. package/dist/i18n/fr.mjs +25 -2
  66. package/dist/i18n/fr.mjs.br +0 -0
  67. package/dist/i18n/fr.mjs.gz +0 -0
  68. package/dist/i18n/zh-CN.cjs +25 -2
  69. package/dist/i18n/zh-CN.cjs.br +0 -0
  70. package/dist/i18n/zh-CN.cjs.gz +0 -0
  71. package/dist/i18n/zh-CN.mjs +25 -2
  72. package/dist/i18n/zh-CN.mjs.br +0 -0
  73. package/dist/i18n/zh-CN.mjs.gz +0 -0
  74. package/dist/i18n.js +4 -4
  75. package/dist/i18n.js.br +0 -0
  76. package/dist/i18n.js.gz +0 -0
  77. package/dist/i18n.mjs +1 -1
  78. package/dist/i18n.mjs.br +0 -0
  79. package/dist/i18n.mjs.gz +0 -0
  80. package/dist/index.d.ts +311 -6
  81. package/dist/index.js +49 -49
  82. package/dist/index.js.br +0 -0
  83. package/dist/index.js.gz +0 -0
  84. package/dist/index.mjs +6 -6
  85. package/dist/index.mjs.br +0 -0
  86. package/dist/index.mjs.gz +0 -0
  87. package/dist/internals.d.ts +461 -42
  88. package/dist/internals.js +105 -105
  89. package/dist/internals.js.br +0 -0
  90. package/dist/internals.js.gz +0 -0
  91. package/dist/internals.mjs +4 -4
  92. package/dist/internals.mjs.br +0 -0
  93. package/dist/internals.mjs.gz +0 -0
  94. package/dist/pptx-viewer.css +1 -1
  95. package/dist/pptx-viewer.css.br +0 -0
  96. package/dist/pptx-viewer.css.gz +0 -0
  97. package/dist/viewer/index.d.ts +274 -4
  98. package/dist/viewer/index.js +27 -27
  99. package/dist/viewer/index.js.br +0 -0
  100. package/dist/viewer/index.js.gz +0 -0
  101. package/dist/viewer/index.mjs +6 -6
  102. package/dist/viewer/index.mjs.br +0 -0
  103. package/dist/viewer/index.mjs.gz +0 -0
  104. package/package.json +1 -1
  105. package/dist/AiChatPanel-SEIRQ3XP.mjs.br +0 -0
  106. package/dist/AiChatPanel-SEIRQ3XP.mjs.gz +0 -0
  107. package/dist/AiChatPanel-VVTLQXQ5.js.br +0 -0
  108. package/dist/AiChatPanel-VVTLQXQ5.js.gz +0 -0
  109. package/dist/Model3DScene-DCTVSK2F.mjs.br +0 -0
  110. package/dist/Model3DScene-DCTVSK2F.mjs.gz +0 -0
  111. package/dist/Model3DScene-SCWQXMEA.js.br +0 -0
  112. package/dist/Model3DScene-SCWQXMEA.js.gz +0 -0
  113. package/dist/chunk-3WYNGYB6.js.br +0 -0
  114. package/dist/chunk-3WYNGYB6.js.gz +0 -0
  115. package/dist/chunk-4GTDG2FH.mjs.br +0 -0
  116. package/dist/chunk-4GTDG2FH.mjs.gz +0 -0
  117. package/dist/chunk-5MRNT4V6.js.br +0 -0
  118. package/dist/chunk-5MRNT4V6.js.gz +0 -0
  119. package/dist/chunk-B5YZABYX.mjs.br +0 -0
  120. package/dist/chunk-B5YZABYX.mjs.gz +0 -0
  121. package/dist/chunk-KTSDPBQZ.js.br +0 -0
  122. package/dist/chunk-KTSDPBQZ.js.gz +0 -0
  123. package/dist/chunk-L4XBWL7J.mjs.br +0 -0
  124. package/dist/chunk-L4XBWL7J.mjs.gz +0 -0
  125. package/dist/chunk-NXGUR2DO.js.br +0 -0
  126. package/dist/chunk-NXGUR2DO.js.gz +0 -0
  127. package/dist/chunk-P2SBIMYF.js.br +0 -0
  128. package/dist/chunk-P2SBIMYF.js.gz +0 -0
  129. package/dist/chunk-PC7H3C5W.mjs.br +0 -0
  130. package/dist/chunk-PC7H3C5W.mjs.gz +0 -0
  131. package/dist/chunk-S65QSO6T.js.br +0 -0
  132. package/dist/chunk-S65QSO6T.js.gz +0 -0
  133. package/dist/chunk-VPJOJJ36.mjs.br +0 -0
  134. package/dist/chunk-VPJOJJ36.mjs.gz +0 -0
  135. package/dist/chunk-ZYIJODUR.mjs.br +0 -0
  136. package/dist/chunk-ZYIJODUR.mjs.gz +0 -0
Binary file
Binary file
@@ -1,5 +1,5 @@
1
- import { SHAPE_PRESET_DEFS, VIEWER_SHORTCUT_REFERENCE, STROKE_DASH_OPTIONS, getAnimationInitialStyle, cloneHistorySnapshot, hasShapeProperties, getImageFitStyle, getImageFillCounterTransform, getComputedFillStyle, isImageLikeElement, getCropShapeClipPath, getImageTilingStyle, mediaPlaybackAttributes, buildTextBlockStyle, hasTextProperties, toCssWritingMode, toCssTextOrientation, toCssVerticalDirection, buildTextBodyLayoutStyle, buildTextBody3DSceneStyle, buildParagraphs, colorWithOpacity, normalizeHexColor, hexToRgbUnit, build3DExtrusionData, getComputedEffectStyle, getComputedStrokeStyle, getAnimationColorBaseStyle, isStrokeOnlyPresetElement, resolveShapeGeometry, getConnectorPathGeometry, normalizeStrokeDashType, getSvgStrokeDasharray, buildSvgGradientDef, buildStrokeOutline, getPresetShapeVectorGeometry, isWedgeCalloutPresetShape, svgGradientFillRef, isCalloutShape, getCalloutLeaderLineGeometry, buildCalloutLeaderLineSvgPath, getCalloutViewBoxBounds, svgLineCap, getCompoundLineOffsets, getCompoundLineWidths, canDrillDown, computeSelectionRect, DEFAULT_FONT_FAMILY, cellStyleToCss, rectToCells, isCellInRect, tableContainerCss, buildChartViewModel, resolveChartKind, chartPreserveAspectRatio, buildNotesPdfBytes, buildTiledSlidesPdfBytes, buildPreviewAnimation, buildMotionPathPreview, mediaFallbackVisual, scheduleMediaTrimAndFade, registerCrossSlideAudio, withInlineListDecorationDefaults, segmentStyleToCss, resolveAutoFitFontScale, applyUnderlineVariant, nestedTextDecorationStyle, resolveFontKerning, getSubstituteFontFamily, parsePanoseString, resolveScriptFontSet, hasDistinctScriptFonts, pieceLetterSpacing, resolveMetricTrackingPx, hollowTextFillStyle, stripUnderlineDecoration, buildTabContext, TEXT_BUILD_ID_SEP, buildTextBuildSpec, textBuildSpanStyle, apply3dEffects, customGeometryPathsToSvgSubpaths, buildSubpathPaints, computeColumnBoundaries, getTableCellBandStyle, parseDrawingColor, parseDrawingColorOpacity, getCellDiagonalBorders, xmlText, cellRunStyle, getChartStylePalette, computeChartLegendLayout, mediaFallbackIcon, mediaFallbackLabelKey, MEDIA_CHROME_ATTRIBUTE, convertOmmlToMathMl, sanitizeMathMl, tableCellCss, computeResizedColumnWidths, computeResizedRowHeight, DEFAULT_ROW_HEIGHT, ooxmlGradientAngleToCssDegrees, buildRectPathGradient, buildRunTabLines, chartPartToAttrs, splitWordsForUnderline, splitRunForMetrics, splitRunByScriptFont } from './chunk-VPJOJJ36.mjs';
2
- import { translationsEn } from './chunk-PC7H3C5W.mjs';
1
+ import { SHAPE_PRESET_DEFS, VIEWER_SHORTCUT_REFERENCE, STROKE_DASH_OPTIONS, getAnimationInitialStyle, cloneHistorySnapshot, hasShapeProperties, getImageFitStyle, getImageFillCounterTransform, getComputedFillStyle, isImageLikeElement, getCropShapeClipPath, getImageTilingStyle, mediaPlaybackAttributes, getOnlineVideoEmbed, ONLINE_VIDEO_IFRAME_SANDBOX, ONLINE_VIDEO_IFRAME_ALLOW, buildTextBlockStyle, hasTextProperties, toCssWritingMode, toCssTextOrientation, toCssVerticalDirection, buildTextBodyLayoutStyle, buildTextBody3DSceneStyle, buildParagraphs, colorWithOpacity, normalizeHexColor, hexToRgbUnit, build3DExtrusionData, getComputedEffectStyle, getComputedStrokeStyle, getAnimationColorBaseStyle, isStrokeOnlyPresetElement, resolveShapeGeometry, getConnectorPathGeometry, normalizeStrokeDashType, getSvgStrokeDasharray, buildSvgGradientDef, buildStrokeOutline, getPresetShapeVectorGeometry, isWedgeCalloutPresetShape, svgGradientFillRef, isCalloutShape, getCalloutLeaderLineGeometry, buildCalloutLeaderLineSvgPath, getCalloutViewBoxBounds, svgLineCap, getCompoundLineOffsets, getCompoundLineWidths, canDrillDown, computeSelectionRect, DEFAULT_FONT_FAMILY, cellStyleToCss, rectToCells, isCellInRect, tableContainerCss, buildChartViewModel, resolveChartKind, chartPreserveAspectRatio, buildNotesPdfBytes, buildTiledSlidesPdfBytes, buildPreviewAnimation, buildMotionPathPreview, mediaFallbackVisual, scheduleMediaTrimAndFade, registerCrossSlideAudio, shouldShowMediaFullscreenStopButton, withInlineListDecorationDefaults, segmentStyleToCss, resolveAutoFitFontScale, applyUnderlineVariant, nestedTextDecorationStyle, resolveFontKerning, getSubstituteFontFamily, parsePanoseString, resolveScriptFontSet, hasDistinctScriptFonts, pieceLetterSpacing, resolveMetricTrackingPx, hollowTextFillStyle, stripUnderlineDecoration, buildTabContext, TEXT_BUILD_ID_SEP, buildTextBuildSpec, textBuildSpanStyle, apply3dEffects, customGeometryPathsToSvgSubpaths, buildSubpathPaints, computeColumnBoundaries, getTableCellBandStyle, parseDrawingColor, parseDrawingColorOpacity, getCellDiagonalBorders, xmlText, cellRunStyle, getChartStylePalette, computeChartLegendLayout, mediaFallbackIcon, mediaFallbackLabelKey, MEDIA_CHROME_ATTRIBUTE, convertOmmlToMathMl, sanitizeMathMl, tableCellCss, computeResizedColumnWidths, computeResizedRowHeight, DEFAULT_ROW_HEIGHT, ooxmlGradientAngleToCssDegrees, buildRectPathGradient, buildRunTabLines, chartPartToAttrs, splitWordsForUnderline, splitRunForMetrics, splitRunByScriptFont } from './chunk-D3TZOCQP.mjs';
2
+ import { translationsEn } from './chunk-JQXN6PO7.mjs';
3
3
  import { clsx } from 'clsx';
4
4
  import { twMerge } from 'tailwind-merge';
5
5
  import React7, { useRef, useState, useEffect, useCallback, useMemo, useLayoutEffect } from 'react';
@@ -274,8 +274,8 @@ function getCropShapeClipPath2(element) {
274
274
  }
275
275
  return getCropShapeClipPath(element.cropShape, element.width, element.height);
276
276
  }
277
- function getImageTilingStyle2(element) {
278
- return getImageTilingStyle(element);
277
+ function getImageTilingStyle2(element, nativeSize) {
278
+ return getImageTilingStyle(element, nativeSize);
279
279
  }
280
280
 
281
281
  // src/viewer/utils/geometry-image.ts
@@ -565,7 +565,11 @@ function PresentationMediaController({
565
565
  }, []);
566
566
  return /* @__PURE__ */ jsxs("div", { className: "w-full h-full", style: wrapperStyle, children: [
567
567
  children({ mediaRef, onPlay: noopOnPlay, isMediaPlaying }),
568
- isFullScreen && isPresentationMode && isMediaPlaying && /* @__PURE__ */ jsx(
568
+ shouldShowMediaFullscreenStopButton({
569
+ fullScreen: isFullScreen,
570
+ presenting: isPresentationMode,
571
+ playing: isMediaPlaying
572
+ }) && /* @__PURE__ */ jsx(
569
573
  "button",
570
574
  {
571
575
  type: "button",
@@ -704,6 +708,20 @@ function renderMediaElement(element, mediaDataUrls, options) {
704
708
  return renderMediaFallback({ element, posterUrl, surface });
705
709
  }
706
710
  if (mediaType === "video") {
711
+ const onlineVideo = getOnlineVideoEmbed(element);
712
+ if (onlineVideo) {
713
+ return /* @__PURE__ */ jsx(
714
+ "iframe",
715
+ {
716
+ src: onlineVideo.embedUrl,
717
+ title: translationsEn["pptx.media.onlineVideoTitle"],
718
+ className: "w-full h-full border-0 pointer-events-auto",
719
+ allow: ONLINE_VIDEO_IFRAME_ALLOW,
720
+ allowFullScreen: true,
721
+ sandbox: ONLINE_VIDEO_IFRAME_SANDBOX
722
+ }
723
+ );
724
+ }
707
725
  if (dataUrl) {
708
726
  return /* @__PURE__ */ jsx(
709
727
  PresentationMediaController,
@@ -794,17 +812,17 @@ function getTextLayoutStyle(element) {
794
812
  const textIndent = !hasParagraphIndents && typeof paragraphIndent === "number" && paragraphIndent !== 0 ? paragraphIndent : void 0;
795
813
  const bodyTop = element.textStyle?.bodyInsetTop ?? DEFAULT_BODY_INSET_TB_PX;
796
814
  const bodyBottom = element.textStyle?.bodyInsetBottom ?? DEFAULT_BODY_INSET_TB_PX;
815
+ const bodyLayoutStyle = buildTextBodyLayoutStyle(element);
797
816
  return {
798
- // Columns / flex anchoring / anchorCtr / tab-size / kinsoku, from shared.
799
- ...buildTextBodyLayoutStyle(element),
817
+ ...bodyLayoutStyle,
800
818
  // Body inset only. Paragraph spacing (spcBef/spcAft) is applied
801
819
  // per-paragraph by the paragraph renderer, not collapsed here.
802
820
  paddingTop: bodyTop,
803
821
  paddingBottom: bodyBottom,
804
822
  writingMode,
805
823
  textOrientation,
806
- direction: verticalDirection,
807
- marginLeft,
824
+ direction: verticalDirection ?? bodyLayoutStyle.direction,
825
+ marginLeft: marginLeft ?? bodyLayoutStyle.marginLeft,
808
826
  textIndent,
809
827
  ...shapeAutoFitTextBox ? {
810
828
  width: textWrapNone ? "max-content" : "100%",
@@ -1349,8 +1367,11 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
1349
1367
  const baseFontSize = rawFontSize * resolveAutoFitFontScale(element.textStyle);
1350
1368
  const baselineShift = baselineFraction !== 0 ? `${baselineFraction * baseFontSize}px` : void 0;
1351
1369
  const fontKerning = resolveFontKerning(segmentStyle.kerning, baseFontSize);
1370
+ const scriptFallbackWins = Boolean(
1371
+ segmentStyle.scriptFallbackFont && segmentStyle.fontFamilyIsCascadeDefault
1372
+ );
1352
1373
  const rawFontFamily = segmentStyle.fontFamily || element.textStyle?.fontFamily;
1353
- const baseFontFamily = rawFontFamily ? getSubstituteFontFamily(
1374
+ const baseFontFamily = scriptFallbackWins ? getSubstituteFontFamily(segmentStyle.scriptFallbackFont) : rawFontFamily ? getSubstituteFontFamily(
1354
1375
  rawFontFamily,
1355
1376
  parsePanoseString(segmentStyle.latinFontPanose ?? element.textStyle?.latinFontPanose)
1356
1377
  ) : DEFAULT_FONT_FAMILY2;
@@ -3439,6 +3460,7 @@ function renderPrimitive(prim, key) {
3439
3460
  fill: p.fill,
3440
3461
  stroke: p.stroke ?? "none",
3441
3462
  strokeWidth: p.strokeWidth ?? 0,
3463
+ strokeDasharray: p.dashArray,
3442
3464
  fillOpacity: p.opacity ?? 1,
3443
3465
  ...partAttrs(p.part),
3444
3466
  children: p.title !== void 0 ? /* @__PURE__ */ jsx("title", { children: p.title }) : null
Binary file
Binary file
@@ -1,4 +1,4 @@
1
- import { ThemePresets, PptxMarkdownConverter, hasTextProperties, hasShapeProperties } from './chunk-VPJOJJ36.mjs';
1
+ import { ThemePresets, PptxMarkdownConverter, hasTextProperties, hasShapeProperties } from './chunk-D3TZOCQP.mjs';
2
2
  import { __export } from './chunk-XGB3TDIC.mjs';
3
3
  import * as mcp from 'pptx-viewer-mcp';
4
4
  import * as mcpSchemas from 'pptx-viewer-mcp/schemas';
Binary file
Binary file