pptx-react-viewer 2.13.0 → 2.13.2

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 (103) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/{AiChatPanel-DEI3EQFM.js → AiChatPanel-F4E3A2DE.js} +35 -27
  3. package/dist/AiChatPanel-F4E3A2DE.js.br +0 -0
  4. package/dist/AiChatPanel-F4E3A2DE.js.gz +0 -0
  5. package/dist/{AiChatPanel-4YS6DEIT.mjs → AiChatPanel-VEULATXX.mjs} +15 -7
  6. package/dist/AiChatPanel-VEULATXX.mjs.br +0 -0
  7. package/dist/AiChatPanel-VEULATXX.mjs.gz +0 -0
  8. package/dist/{Model3DScene-JSNQCKCJ.mjs → Model3DScene-KIPEODEJ.mjs} +1 -1
  9. package/dist/Model3DScene-KIPEODEJ.mjs.br +0 -0
  10. package/dist/Model3DScene-KIPEODEJ.mjs.gz +0 -0
  11. package/dist/{Model3DScene-X4W7GZVY.js → Model3DScene-TD2LIHYP.js} +2 -2
  12. package/dist/Model3DScene-TD2LIHYP.js.br +0 -0
  13. package/dist/Model3DScene-TD2LIHYP.js.gz +0 -0
  14. package/dist/{SurfaceChart3DScene-3MSU74YH.mjs → SurfaceChart3DScene-GRBWZ52S.mjs} +1 -1
  15. package/dist/{SurfaceChart3DScene-3MSU74YH.mjs.br → SurfaceChart3DScene-GRBWZ52S.mjs.br} +0 -0
  16. package/dist/SurfaceChart3DScene-GRBWZ52S.mjs.gz +0 -0
  17. package/dist/{SurfaceChart3DScene-IZLUWT27.js → SurfaceChart3DScene-OTKXQH5O.js} +2 -2
  18. package/dist/SurfaceChart3DScene-OTKXQH5O.js.br +0 -0
  19. package/dist/SurfaceChart3DScene-OTKXQH5O.js.gz +0 -0
  20. package/dist/{chunk-YA7VFYTW.mjs → chunk-3HWE6QZG.mjs} +16 -7
  21. package/dist/chunk-3HWE6QZG.mjs.br +0 -0
  22. package/dist/chunk-3HWE6QZG.mjs.gz +0 -0
  23. package/dist/{chunk-RWIQHVZQ.js → chunk-BNSCH4WT.js} +340 -326
  24. package/dist/chunk-BNSCH4WT.js.br +0 -0
  25. package/dist/chunk-BNSCH4WT.js.gz +0 -0
  26. package/dist/{chunk-IDW5UPXW.js → chunk-DOS7NY7C.js} +259 -295
  27. package/dist/chunk-DOS7NY7C.js.br +0 -0
  28. package/dist/chunk-DOS7NY7C.js.gz +0 -0
  29. package/dist/{chunk-SHZ3GWOD.js → chunk-EUQ2IER3.js} +1046 -1037
  30. package/dist/chunk-EUQ2IER3.js.br +0 -0
  31. package/dist/chunk-EUQ2IER3.js.gz +0 -0
  32. package/dist/{chunk-EFSQW6S5.js → chunk-FDR5W67L.js} +713 -349
  33. package/dist/chunk-FDR5W67L.js.br +0 -0
  34. package/dist/chunk-FDR5W67L.js.gz +0 -0
  35. package/dist/{chunk-4TD7EINA.mjs → chunk-GKOKCOXR.mjs} +709 -350
  36. package/dist/chunk-GKOKCOXR.mjs.br +0 -0
  37. package/dist/chunk-GKOKCOXR.mjs.gz +0 -0
  38. package/dist/{chunk-HRLF4REI.mjs → chunk-GZ6TXBEO.mjs} +21 -56
  39. package/dist/chunk-GZ6TXBEO.mjs.br +0 -0
  40. package/dist/chunk-GZ6TXBEO.mjs.gz +0 -0
  41. package/dist/{chunk-WEU5EMKK.mjs → chunk-L5YGPCQW.mjs} +1 -1
  42. package/dist/chunk-L5YGPCQW.mjs.br +0 -0
  43. package/dist/chunk-L5YGPCQW.mjs.gz +0 -0
  44. package/dist/{chunk-G2LZT5SV.js → chunk-VY3KLDJF.js} +3 -3
  45. package/dist/chunk-VY3KLDJF.js.br +0 -0
  46. package/dist/chunk-VY3KLDJF.js.gz +0 -0
  47. package/dist/{chunk-6KRNQ2KF.mjs → chunk-ZFRPPY2N.mjs} +16 -2
  48. package/dist/chunk-ZFRPPY2N.mjs.br +0 -0
  49. package/dist/chunk-ZFRPPY2N.mjs.gz +0 -0
  50. package/dist/index.d.ts +14 -0
  51. package/dist/index.js +34 -34
  52. package/dist/index.js.br +0 -0
  53. package/dist/index.js.gz +0 -0
  54. package/dist/index.mjs +5 -5
  55. package/dist/index.mjs.br +0 -0
  56. package/dist/index.mjs.gz +0 -0
  57. package/dist/internals.d.ts +14 -0
  58. package/dist/internals.d.ts.map +1 -1
  59. package/dist/internals.js +78 -78
  60. package/dist/internals.js.br +0 -0
  61. package/dist/internals.js.gz +0 -0
  62. package/dist/internals.mjs +3 -3
  63. package/dist/internals.mjs.br +0 -0
  64. package/dist/internals.mjs.gz +0 -0
  65. package/dist/viewer/index.d.ts +14 -0
  66. package/dist/viewer/index.js +21 -21
  67. package/dist/viewer/index.js.br +0 -0
  68. package/dist/viewer/index.js.gz +0 -0
  69. package/dist/viewer/index.mjs +5 -5
  70. package/dist/viewer/index.mjs.br +0 -0
  71. package/dist/viewer/index.mjs.gz +0 -0
  72. package/package.json +1 -1
  73. package/dist/AiChatPanel-4YS6DEIT.mjs.br +0 -0
  74. package/dist/AiChatPanel-4YS6DEIT.mjs.gz +0 -0
  75. package/dist/AiChatPanel-DEI3EQFM.js.br +0 -0
  76. package/dist/AiChatPanel-DEI3EQFM.js.gz +0 -0
  77. package/dist/Model3DScene-JSNQCKCJ.mjs.br +0 -0
  78. package/dist/Model3DScene-JSNQCKCJ.mjs.gz +0 -0
  79. package/dist/Model3DScene-X4W7GZVY.js.br +0 -0
  80. package/dist/Model3DScene-X4W7GZVY.js.gz +0 -0
  81. package/dist/SurfaceChart3DScene-3MSU74YH.mjs.gz +0 -0
  82. package/dist/SurfaceChart3DScene-IZLUWT27.js.br +0 -0
  83. package/dist/SurfaceChart3DScene-IZLUWT27.js.gz +0 -0
  84. package/dist/chunk-4TD7EINA.mjs.br +0 -0
  85. package/dist/chunk-4TD7EINA.mjs.gz +0 -0
  86. package/dist/chunk-6KRNQ2KF.mjs.br +0 -0
  87. package/dist/chunk-6KRNQ2KF.mjs.gz +0 -0
  88. package/dist/chunk-EFSQW6S5.js.br +0 -0
  89. package/dist/chunk-EFSQW6S5.js.gz +0 -0
  90. package/dist/chunk-G2LZT5SV.js.br +0 -0
  91. package/dist/chunk-G2LZT5SV.js.gz +0 -0
  92. package/dist/chunk-HRLF4REI.mjs.br +0 -0
  93. package/dist/chunk-HRLF4REI.mjs.gz +0 -0
  94. package/dist/chunk-IDW5UPXW.js.br +0 -0
  95. package/dist/chunk-IDW5UPXW.js.gz +0 -0
  96. package/dist/chunk-RWIQHVZQ.js.br +0 -0
  97. package/dist/chunk-RWIQHVZQ.js.gz +0 -0
  98. package/dist/chunk-SHZ3GWOD.js.br +0 -0
  99. package/dist/chunk-SHZ3GWOD.js.gz +0 -0
  100. package/dist/chunk-WEU5EMKK.mjs.br +0 -0
  101. package/dist/chunk-WEU5EMKK.mjs.gz +0 -0
  102. package/dist/chunk-YA7VFYTW.mjs.br +0 -0
  103. package/dist/chunk-YA7VFYTW.mjs.gz +0 -0
Binary file
Binary file
@@ -1,5 +1,5 @@
1
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, substituteFieldText, resolveUnderlineDecorationStyle, 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-4TD7EINA.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';
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';
@@ -463,37 +463,6 @@ function ensureArrayValue(value) {
463
463
  }
464
464
 
465
465
  // src/viewer/utils/media-persistent-audio.tsx
466
- var persistentAudioMap = /* @__PURE__ */ new Map();
467
- function registerPersistentAudio(elementId, dataUrl, mimetype, loop, volume, trimStartSec) {
468
- if (persistentAudioMap.has(elementId)) {
469
- return;
470
- }
471
- const audio = document.createElement("audio");
472
- audio.src = dataUrl;
473
- if (mimetype) {
474
- const source = document.createElement("source");
475
- source.src = dataUrl;
476
- source.type = mimetype;
477
- audio.appendChild(source);
478
- }
479
- audio.loop = loop;
480
- audio.volume = Math.max(0, Math.min(1, volume));
481
- if (trimStartSec > 0) {
482
- audio.currentTime = trimStartSec;
483
- }
484
- audio.style.display = "none";
485
- document.body.appendChild(audio);
486
- persistentAudioMap.set(elementId, { elementId, audio, loop });
487
- void audio.play().catch(() => {
488
- });
489
- }
490
- function stopAllPersistentAudio() {
491
- for (const entry of persistentAudioMap.values()) {
492
- entry.audio.pause();
493
- entry.audio.remove();
494
- }
495
- persistentAudioMap.clear();
496
- }
497
466
  function buildTrimFragment(element) {
498
467
  const start = element.trimStartMs;
499
468
  const end = element.trimEndMs;
@@ -693,6 +662,7 @@ function PresentationMediaController({
693
662
  element,
694
663
  isPresentationMode,
695
664
  shouldAutoPlay,
665
+ resolvedDataUrl,
696
666
  isFullScreen,
697
667
  onPlayStateChange,
698
668
  children
@@ -725,7 +695,11 @@ function PresentationMediaController({
725
695
  }
726
696
  return registerMediaElement(element.id, el);
727
697
  }, [element.id]);
728
- const { volume: playbackVolume, playbackRate } = mediaPlaybackAttributes({
698
+ const {
699
+ loop: shouldLoop,
700
+ volume: playbackVolume,
701
+ playbackRate
702
+ } = mediaPlaybackAttributes({
729
703
  loop: element.loop,
730
704
  volume: element.volume,
731
705
  playbackSpeed: element.playbackSpeed
@@ -859,18 +833,18 @@ function PresentationMediaController({
859
833
  return;
860
834
  }
861
835
  if (element.playAcrossSlides && element.mediaType === "audio") {
862
- const dataUrl = element.mediaData ?? (element.mediaPath ? void 0 : void 0);
836
+ const dataUrl = element.mediaData ?? resolvedDataUrl;
863
837
  if (dataUrl) {
864
838
  registerPersistentAudio(
865
839
  element.id,
866
840
  dataUrl,
867
841
  element.mediaMimeType,
868
- element.loop === true,
869
- volume,
842
+ shouldLoop,
843
+ playbackVolume,
870
844
  trimStartSec
871
845
  );
846
+ return;
872
847
  }
873
- return;
874
848
  }
875
849
  const el = mediaRef.current;
876
850
  if (!el) {
@@ -890,12 +864,12 @@ function PresentationMediaController({
890
864
  element.playAcrossSlides,
891
865
  element.mediaType,
892
866
  element.mediaData,
893
- element.mediaPath,
894
867
  element.mediaMimeType,
895
- element.loop,
896
868
  element.id,
897
- trimStartSec,
898
- volume
869
+ resolvedDataUrl,
870
+ shouldLoop,
871
+ playbackVolume,
872
+ trimStartSec
899
873
  ]);
900
874
  const wrapperStyle = hideWhenNotPlaying ? {
901
875
  opacity: isMediaPlaying ? 1 : 0,
@@ -937,17 +911,6 @@ function renderMediaElement(element, mediaDataUrls, options) {
937
911
  const isFullScreen = options?.fullScreen === true;
938
912
  const isPresentationMode = options?.isPresentationMode === true;
939
913
  const showTransport = options?.showTransport ?? !isPresentationMode;
940
- if (isPresentationMode && shouldAutoPlay && element.playAcrossSlides && element.mediaType === "audio" && dataUrl && !element.mediaData) {
941
- const trimStartSec = element.trimStartMs !== void 0 ? element.trimStartMs / 1e3 : 0;
942
- registerPersistentAudio(
943
- element.id,
944
- dataUrl,
945
- mediaMimeType,
946
- shouldLoop,
947
- element.volume ?? 1,
948
- trimStartSec
949
- );
950
- }
951
914
  if (element.mediaMissing) {
952
915
  if (posterUrl) {
953
916
  return /* @__PURE__ */ jsxs("div", { className: "w-full h-full relative pointer-events-none", children: [
@@ -990,6 +953,7 @@ function renderMediaElement(element, mediaDataUrls, options) {
990
953
  element,
991
954
  isPresentationMode,
992
955
  shouldAutoPlay,
956
+ resolvedDataUrl: dataUrl,
993
957
  isFullScreen,
994
958
  onPlayStateChange: options?.onPlayStateChange,
995
959
  children: ({ mediaRef, onPlay }) => /* @__PURE__ */ jsx(
@@ -1062,6 +1026,7 @@ function renderMediaElement(element, mediaDataUrls, options) {
1062
1026
  element,
1063
1027
  isPresentationMode,
1064
1028
  shouldAutoPlay,
1029
+ resolvedDataUrl: dataUrl,
1065
1030
  isFullScreen: false,
1066
1031
  onPlayStateChange: options?.onPlayStateChange,
1067
1032
  children: ({ mediaRef, onPlay }) => /* @__PURE__ */ jsx(
@@ -1761,7 +1726,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
1761
1726
  const rawBaseline = typeof segmentStyle.baseline === "number" ? segmentStyle.baseline : 0;
1762
1727
  const baselineFraction = rawBaseline === 0 ? 0 : Math.abs(rawBaseline) >= 1e3 ? rawBaseline / 1e5 : rawBaseline / 100;
1763
1728
  const baselineFontScale = baselineFraction !== 0 ? 0.65 : 1;
1764
- const letterSpacing = typeof segmentStyle.characterSpacing === "number" && segmentStyle.characterSpacing !== 0 ? `${segmentStyle.characterSpacing / 100 * (96 / 72)}px` : void 0;
1729
+ const letterSpacing = typeof segmentStyle.characterSpacing === "number" && segmentStyle.characterSpacing !== 0 ? `calc(${segmentStyle.characterSpacing / 100 * (96 / 72)}px + ${POWERPOINT_METRIC_TRACKING})` : POWERPOINT_METRIC_TRACKING;
1765
1730
  const textFillStyles = buildTextFillCss2(segmentStyle);
1766
1731
  const rawFontSize = segmentStyle.fontSize || element.textStyle?.fontSize || DEFAULT_TEXT_FONT_SIZE;
1767
1732
  const autoFitScale = resolveAutoFitFontScale(element.textStyle);
@@ -1954,7 +1919,7 @@ function resolveParagraphSpacing(input) {
1954
1919
  if (typeof exactPt === "number" && exactPt > 0) {
1955
1920
  result.lineHeight = `${exactPt * PT_TO_PX}px`;
1956
1921
  } else if (typeof multiplier === "number" && multiplier > 0) {
1957
- result.lineHeight = multiplier;
1922
+ result.lineHeight = proportionalLineHeight(multiplier);
1958
1923
  }
1959
1924
  return result;
1960
1925
  }
@@ -6233,7 +6198,7 @@ function FailedToLoad() {
6233
6198
  var LazySurfaceChart3DScene = React6.lazy(
6234
6199
  async () => {
6235
6200
  try {
6236
- return await import('./SurfaceChart3DScene-3MSU74YH.mjs');
6201
+ return await import('./SurfaceChart3DScene-GRBWZ52S.mjs');
6237
6202
  } catch {
6238
6203
  return { default: FailedToLoad };
6239
6204
  }
@@ -8039,4 +8004,4 @@ function stopPreviewAnimation() {
8039
8004
  activePreview = null;
8040
8005
  }
8041
8006
 
8042
- 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, stopAllPersistentAudio, stopPreviewAnimation, styleShadow, styleStroke, treeDepth, treeWidth, truncate, wrapChrome };
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 };
Binary file
Binary file
@@ -1,4 +1,4 @@
1
- import { ThemePresets, PptxMarkdownConverter } from './chunk-4TD7EINA.mjs';
1
+ import { ThemePresets, PptxMarkdownConverter } from './chunk-GKOKCOXR.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
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkEFSQW6S5_js = require('./chunk-EFSQW6S5.js');
3
+ var chunkFDR5W67L_js = require('./chunk-FDR5W67L.js');
4
4
  var chunk4VNS5WPM_js = require('./chunk-4VNS5WPM.js');
5
5
  var mcp = require('pptx-viewer-mcp');
6
6
  var mcpSchemas = require('pptx-viewer-mcp/schemas');
@@ -14879,7 +14879,7 @@ async function buildSlideMarkdown(slides, slideIndex2, meta3, options = {}) {
14879
14879
  };
14880
14880
  let markdown;
14881
14881
  try {
14882
- const converter = new chunkEFSQW6S5_js.PptxMarkdownConverter(
14882
+ const converter = new chunkFDR5W67L_js.PptxMarkdownConverter(
14883
14883
  "",
14884
14884
  {
14885
14885
  sourceName: meta3.title ?? "deck.pptx",
@@ -15470,7 +15470,7 @@ var getTheme = (ctx) => {
15470
15470
  name: theme?.name,
15471
15471
  colorScheme: theme?.colorScheme,
15472
15472
  fontScheme: theme?.fontScheme,
15473
- availablePresets: Object.keys(chunkEFSQW6S5_js.ThemePresets)
15473
+ availablePresets: Object.keys(chunkFDR5W67L_js.ThemePresets)
15474
15474
  };
15475
15475
  };
15476
15476
  var readExecutors = {
Binary file
Binary file
@@ -1,6 +1,6 @@
1
- import { cloneHistorySnapshot, MIN_ELEMENT_SIZE, ZOOM_TO_SELECTION_PADDING, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, partitionTemplateElements, UNGROUPED_SECTION_ID, stopAllPersistentAudio, buildSaveSlides, DEFAULT_TABLE_ROWS, DEFAULT_TABLE_COLUMNS, executeMediaCommand, buildPdfFromImageData, buildNotesPdf, EMU_PER_PX, GRID_SIZE, DEFAULT_TEXT_FONT_SIZE } from './chunk-HRLF4REI.mjs';
1
+ import { cloneHistorySnapshot, MIN_ELEMENT_SIZE, ZOOM_TO_SELECTION_PADDING, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, partitionTemplateElements, UNGROUPED_SECTION_ID, buildSaveSlides, DEFAULT_TABLE_ROWS, DEFAULT_TABLE_COLUMNS, executeMediaCommand, buildPdfFromImageData, buildNotesPdf, EMU_PER_PX, GRID_SIZE, DEFAULT_TEXT_FONT_SIZE } from './chunk-GZ6TXBEO.mjs';
2
2
  import { translationsEn } from './chunk-TEXIGSA6.mjs';
3
- import { TOOLBAR_TABS, computeVirtualRange, DEFAULT_VIRTUAL_OVERSCAN, BROADCAST_THROTTLE_MS, createSyncGate, clearLocalAwareness, validateRoomId, createDepartureChannel, resolveTransportForServerUrl, isMixedContentBlocked, CONNECTION_TIMEOUT_MS, registerCollaborationTeardown, sanitizeColor, cloneTemplateElementsBySlideId, cloneSlide, clampZoomScale, zoomInScale, zoomOutScale, PresentationAnimationController, computeEntranceAnimationDelay, PRESENTATION_HASH, PRESENTATION_NONCE_KEY, PRESENTATION_CHANNEL_NAME, swapPresentationWindows, PRESENTATION_MESSAGE_ORIGIN, clearAudienceContent, buildPresentationAudienceUrl, resolveAudienceScreenPlacement, placeAudienceWindow, storeAudienceContent, isPresentationSessionMessage, endAudienceDisplay, createPresentationKeyBuffer, acceptsPresentationInput, resolveAutoAdvanceDelayMs, hasShowSlideAfter, nextShowSlideIndex, previousShowSlideIndex, createPresenterShowGuard, buildMorphTransitionPlan, morphOptionToMode, createCollaborationLivePatcher, publishLiveInlineText, PptxHandler, collectMediaElements, collectImagePaths, buildInitialGuides, EncryptedFileError, saveAutosaveSnapshot, isTemplateElementId, hasShapeProperties, hasTextProperties, getInlineEditorSelection, applyStyleToSelectedSegments, setPendingSelectionRestore, applyCaseTransformToSegments, transformTextCase, addSection, renameSection, deleteSection, moveSectionUp, moveSectionDown, moveSlidesToSection, normalizeColorsForCapture, preprocessCssForCapture, downloadBlob, sanitizeDownloadFilename, slideProgressPercent, slideStatusLabel, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, isExportAbortError, recordProgressPercent, applyThemeToData, THEME_PRESETS, themeColorSchemesEqual, comparePresentation, applyAcceptSlide, applyAcceptAllSlides, collectUsedFonts, detectTouchDevice, detectOrientation, isMobileViewport, MOBILE_BREAKPOINT, TABLET_BREAKPOINT, mayLeaveSlideShow, remapTextToSegments, guidePxToEmu, shouldLoopContinuously, applyRehearsalTimings, copyFormatFromElement, applyFormatToElement, mapEditorKey, isEditorTextInputTarget, createViewerOptionsStore, readSlidesFromYDoc, reconcileSlidesInYDoc, LOCAL_SYNC_ORIGIN, observeYDocSlides, shouldAutoFollowBroadcaster, createTouchGestureRecognizer, MAX_ZOOM_SCALE, MIN_ZOOM_SCALE, isKeyboardOpen, openPptxFile, readBackstageRecentFile, isActionHidden, buildElementClipboardPayload, generatePackageReadme, groupElements, generateElementId, makeCloneId, alignElements, distributeElements, bringForward, sendBackward, bringToFront, sendToBack, newTableElement, createDefaultChartElement, readViewportMetrics, computeKeyboardInset, mergeShapes, derivePresenceList, mapPresentationKey, lastShowSlideIndex, firstShowSlideIndex, buildPrintDocument, buildOutlineHtml, buildSlidesHtml, buildNotesHtml, buildHandoutsHtml, createBlankSlide, makeSlideId, buildThemeColorMap, reResolveSlideColors, createPresentationSessionId, resolveTransitionDurationMs, runPresentationAction, createPresenterTimer, createInitialPresentationSnapshot, mergePresentationSnapshot, presenterElapsed, stepPresenterZoom, resetPresenterTimer, togglePresenterTimer, canvasToJpegData, downloadDataUrl, pickSupportedMimeType, WEBM_MIME_CANDIDATES, fpsToFrameIntervalMs, segmentFrameCount, encodeGif, resolveShowSlideIndexes, groupSlidesBySection, hasCopyableFormat, createBackstagePresentation, buildFieldSubstitutionContext, cloneElementForPaste, computeScrollDelta, getPresetShapeClipPath, svgPathToPolygons, polygonsToSvgPath, rerouteConnectorsForMovedElements, applyReroutedConnectors, SvgExporter, buildPrintHtmlDocument, deleteTableColumn, rebuildTableStructureInRawXml, insertTableColumn, deleteTableRow, insertTableRow, updateCellTextStyleInRawXml, updateCellTextInRawXml, splitCell, updateMergeAttrsInRawXml, mergeCells, isPpactionUrl, parsePpactionUrl, safeOpenUrl, ACTION_BUTTON_PRESETS, elementActionToPptxAction, buildSmartArtPresetData, computeSnapToShape, publishLiveGeometry, computeMarqueeHitIds, mergeAdditiveSelection, applyResize, snapBoxToGrid, applyMotionPathPreset } from './chunk-4TD7EINA.mjs';
3
+ import { TOOLBAR_TABS, computeVirtualRange, DEFAULT_VIRTUAL_OVERSCAN, BROADCAST_THROTTLE_MS, createSyncGate, clearLocalAwareness, validateRoomId, createDepartureChannel, resolveTransportForServerUrl, isMixedContentBlocked, CONNECTION_TIMEOUT_MS, registerCollaborationTeardown, sanitizeColor, cloneTemplateElementsBySlideId, cloneSlide, clampZoomScale, zoomInScale, zoomOutScale, PresentationAnimationController, computeEntranceAnimationDelay, PRESENTATION_HASH, PRESENTATION_NONCE_KEY, PRESENTATION_CHANNEL_NAME, swapPresentationWindows, PRESENTATION_MESSAGE_ORIGIN, clearAudienceContent, buildPresentationAudienceUrl, resolveAudienceScreenPlacement, placeAudienceWindow, storeAudienceContent, isPresentationSessionMessage, endAudienceDisplay, createPresentationKeyBuffer, acceptsPresentationInput, resolveAutoAdvanceDelayMs, hasShowSlideAfter, nextShowSlideIndex, previousShowSlideIndex, createPresenterShowGuard, attachPresentationVisibilityPause, buildMorphTransitionPlan, morphOptionToMode, createCollaborationLivePatcher, publishLiveInlineText, PptxHandler, collectMediaElements, collectImagePaths, buildInitialGuides, EncryptedFileError, saveAutosaveSnapshot, isTemplateElementId, hasShapeProperties, hasTextProperties, getInlineEditorSelection, applyStyleToSelectedSegments, setPendingSelectionRestore, applyCaseTransformToSegments, transformTextCase, addSection, renameSection, deleteSection, moveSectionUp, moveSectionDown, moveSlidesToSection, normalizeColorsForCapture, preprocessCssForCapture, downloadBlob, sanitizeDownloadFilename, slideProgressPercent, slideStatusLabel, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, isExportAbortError, recordProgressPercent, applyThemeToData, THEME_PRESETS, themeColorSchemesEqual, comparePresentation, applyAcceptSlide, applyAcceptAllSlides, collectUsedFonts, detectTouchDevice, detectOrientation, isMobileViewport, MOBILE_BREAKPOINT, TABLET_BREAKPOINT, mayLeaveSlideShow, stopAllPersistentAudio, remapTextToSegments, guidePxToEmu, shouldLoopContinuously, applyRehearsalTimings, copyFormatFromElement, applyFormatToElement, mapEditorKey, isEditorTextInputTarget, createViewerOptionsStore, readSlidesFromYDoc, reconcileSlidesInYDoc, LOCAL_SYNC_ORIGIN, observeYDocSlides, shouldAutoFollowBroadcaster, createTouchGestureRecognizer, MAX_ZOOM_SCALE, MIN_ZOOM_SCALE, isKeyboardOpen, openPptxFile, readBackstageRecentFile, isActionHidden, buildElementClipboardPayload, generatePackageReadme, groupElements, generateElementId, makeCloneId, alignElements, distributeElements, bringForward, sendBackward, bringToFront, sendToBack, newTableElement, createDefaultChartElement, readViewportMetrics, computeKeyboardInset, mergeShapes, derivePresenceList, mapPresentationKey, lastShowSlideIndex, firstShowSlideIndex, buildPrintDocument, buildOutlineHtml, buildSlidesHtml, buildNotesHtml, buildHandoutsHtml, createBlankSlide, makeSlideId, buildThemeColorMap, reResolveSlideColors, createPresentationSessionId, resolveTransitionDurationMs, runPresentationAction, createPresenterTimer, createInitialPresentationSnapshot, mergePresentationSnapshot, presenterElapsed, stepPresenterZoom, resetPresenterTimer, togglePresenterTimer, canvasToJpegData, downloadDataUrl, pickSupportedMimeType, WEBM_MIME_CANDIDATES, fpsToFrameIntervalMs, segmentFrameCount, encodeGif, resolveShowSlideIndexes, groupSlidesBySection, hasCopyableFormat, createBackstagePresentation, buildFieldSubstitutionContext, cloneElementForPaste, computeScrollDelta, getPresetShapeClipPath, svgPathToPolygons, polygonsToSvgPath, rerouteConnectorsForMovedElements, applyReroutedConnectors, SvgExporter, buildPrintHtmlDocument, deleteTableColumn, rebuildTableStructureInRawXml, insertTableColumn, deleteTableRow, insertTableRow, updateCellTextStyleInRawXml, updateCellTextInRawXml, splitCell, updateMergeAttrsInRawXml, mergeCells, isPpactionUrl, parsePpactionUrl, safeOpenUrl, ACTION_BUTTON_PRESETS, elementActionToPptxAction, buildSmartArtPresetData, computeSnapToShape, publishLiveGeometry, computeMarqueeHitIds, mergeAdditiveSelection, applyResize, snapBoxToGrid, applyMotionPathPreset } from './chunk-GKOKCOXR.mjs';
4
4
  import { useRef, useState, useEffect, useCallback, useMemo, useSyncExternalStore, useImperativeHandle } from 'react';
5
5
  import JSZip from 'jszip';
6
6
  import { useTranslation } from 'react-i18next';
@@ -2329,6 +2329,20 @@ function usePresentationMode(input) {
2329
2329
  scheduleAutoAdvanceRef.current = scheduleAutoAdvanceForSlide;
2330
2330
  const activeSlideIndexRef = useRef(activeSlideIndex);
2331
2331
  activeSlideIndexRef.current = activeSlideIndex;
2332
+ const presentationSlideIndexRef = useRef(presentationSlideIndex);
2333
+ presentationSlideIndexRef.current = presentationSlideIndex;
2334
+ const clearPresentationTimersRef = useRef(clearPresentationTimers);
2335
+ clearPresentationTimersRef.current = clearPresentationTimers;
2336
+ useEffect(() => {
2337
+ if (mode !== "present") {
2338
+ return;
2339
+ }
2340
+ return attachPresentationVisibilityPause({
2341
+ root: containerRef.current ?? void 0,
2342
+ onHidden: () => clearPresentationTimersRef.current(),
2343
+ onVisible: () => scheduleAutoAdvanceRef.current(presentationSlideIndexRef.current)
2344
+ });
2345
+ }, [mode, containerRef]);
2332
2346
  useEffect(() => {
2333
2347
  if (mode === "present") {
2334
2348
  const idx = activeSlideIndexRef.current;
Binary file
Binary file
package/dist/index.d.ts CHANGED
@@ -3155,6 +3155,20 @@ interface PptxImageProperties {
3155
3155
  cropRight?: number;
3156
3156
  /** Crop from bottom edge as 0..1 fraction (OOXML `a:srcRect/@b`). */
3157
3157
  cropBottom?: number;
3158
+ /**
3159
+ * Stretch target inset from the left frame edge as a signed fraction
3160
+ * (OOXML `a:stretch/a:fillRect/@l`). Unlike `cropLeft` (which selects a
3161
+ * region of the SOURCE bitmap), a fill-rect selects the region of the
3162
+ * FRAME the whole image is stretched into; negative values push the
3163
+ * image beyond the frame edge, and the overflow is clipped.
3164
+ */
3165
+ fillRectLeft?: number;
3166
+ /** Stretch target inset from the top frame edge (`a:fillRect/@t`). */
3167
+ fillRectTop?: number;
3168
+ /** Stretch target inset from the right frame edge (`a:fillRect/@r`). */
3169
+ fillRectRight?: number;
3170
+ /** Stretch target inset from the bottom frame edge (`a:fillRect/@b`). */
3171
+ fillRectBottom?: number;
3158
3172
  /** Image tiling offset X in px. */
3159
3173
  tileOffsetX?: number;
3160
3174
  /** Image tiling offset Y in px. */
package/dist/index.js CHANGED
@@ -1,46 +1,46 @@
1
1
  'use strict';
2
2
 
3
- var chunkSHZ3GWOD_js = require('./chunk-SHZ3GWOD.js');
4
- require('./chunk-G2LZT5SV.js');
5
- var chunkRWIQHVZQ_js = require('./chunk-RWIQHVZQ.js');
6
- var chunkIDW5UPXW_js = require('./chunk-IDW5UPXW.js');
3
+ var chunkEUQ2IER3_js = require('./chunk-EUQ2IER3.js');
4
+ require('./chunk-VY3KLDJF.js');
5
+ var chunkBNSCH4WT_js = require('./chunk-BNSCH4WT.js');
6
+ var chunkDOS7NY7C_js = require('./chunk-DOS7NY7C.js');
7
7
  var chunkBXAK3JFM_js = require('./chunk-BXAK3JFM.js');
8
- var chunkEFSQW6S5_js = require('./chunk-EFSQW6S5.js');
8
+ var chunkFDR5W67L_js = require('./chunk-FDR5W67L.js');
9
9
  require('./chunk-4VNS5WPM.js');
10
10
 
11
11
 
12
12
 
13
13
  Object.defineProperty(exports, "PowerPointViewer", {
14
14
  enumerable: true,
15
- get: function () { return chunkSHZ3GWOD_js.PowerPointViewer; }
15
+ get: function () { return chunkEUQ2IER3_js.PowerPointViewer; }
16
16
  });
17
17
  Object.defineProperty(exports, "SlideCanvas", {
18
18
  enumerable: true,
19
- get: function () { return chunkSHZ3GWOD_js.SlideCanvas; }
19
+ get: function () { return chunkEUQ2IER3_js.SlideCanvas; }
20
20
  });
21
21
  Object.defineProperty(exports, "Toolbar", {
22
22
  enumerable: true,
23
- get: function () { return chunkSHZ3GWOD_js.Toolbar; }
23
+ get: function () { return chunkEUQ2IER3_js.Toolbar; }
24
24
  });
25
25
  Object.defineProperty(exports, "ViewerThemeProvider", {
26
26
  enumerable: true,
27
- get: function () { return chunkSHZ3GWOD_js.ViewerThemeProvider; }
27
+ get: function () { return chunkEUQ2IER3_js.ViewerThemeProvider; }
28
28
  });
29
29
  Object.defineProperty(exports, "useViewerTheme", {
30
30
  enumerable: true,
31
- get: function () { return chunkSHZ3GWOD_js.useViewerTheme; }
31
+ get: function () { return chunkEUQ2IER3_js.useViewerTheme; }
32
32
  });
33
33
  Object.defineProperty(exports, "renderToCanvas", {
34
34
  enumerable: true,
35
- get: function () { return chunkRWIQHVZQ_js.renderToCanvas; }
35
+ get: function () { return chunkBNSCH4WT_js.renderToCanvas; }
36
36
  });
37
37
  Object.defineProperty(exports, "useViewerBuildingBlocks", {
38
38
  enumerable: true,
39
- get: function () { return chunkRWIQHVZQ_js.useViewerBuildingBlocks; }
39
+ get: function () { return chunkBNSCH4WT_js.useViewerBuildingBlocks; }
40
40
  });
41
41
  Object.defineProperty(exports, "getAnimationInitialStyle", {
42
42
  enumerable: true,
43
- get: function () { return chunkIDW5UPXW_js.getAnimationInitialStyle; }
43
+ get: function () { return chunkDOS7NY7C_js.getAnimationInitialStyle; }
44
44
  });
45
45
  Object.defineProperty(exports, "LOCALE_CATALOG", {
46
46
  enumerable: true,
@@ -48,85 +48,85 @@ Object.defineProperty(exports, "LOCALE_CATALOG", {
48
48
  });
49
49
  Object.defineProperty(exports, "AVATAR_COLOR_SWATCHES", {
50
50
  enumerable: true,
51
- get: function () { return chunkEFSQW6S5_js.AVATAR_COLOR_SWATCHES; }
51
+ get: function () { return chunkFDR5W67L_js.AVATAR_COLOR_SWATCHES; }
52
52
  });
53
53
  Object.defineProperty(exports, "DEFAULT_VIEWER_PROFILE", {
54
54
  enumerable: true,
55
- get: function () { return chunkEFSQW6S5_js.DEFAULT_VIEWER_PROFILE; }
55
+ get: function () { return chunkFDR5W67L_js.DEFAULT_VIEWER_PROFILE; }
56
56
  });
57
57
  Object.defineProperty(exports, "THEME_CATALOG", {
58
58
  enumerable: true,
59
- get: function () { return chunkEFSQW6S5_js.THEME_CATALOG; }
59
+ get: function () { return chunkFDR5W67L_js.THEME_CATALOG; }
60
60
  });
61
61
  Object.defineProperty(exports, "VIEWER_PREFS_STORAGE_KEY", {
62
62
  enumerable: true,
63
- get: function () { return chunkEFSQW6S5_js.VIEWER_PREFS_STORAGE_KEY; }
63
+ get: function () { return chunkFDR5W67L_js.VIEWER_PREFS_STORAGE_KEY; }
64
64
  });
65
65
  Object.defineProperty(exports, "clearAllLocalViewerData", {
66
66
  enumerable: true,
67
- get: function () { return chunkEFSQW6S5_js.clearAllLocalViewerData; }
67
+ get: function () { return chunkFDR5W67L_js.clearAllLocalViewerData; }
68
68
  });
69
69
  Object.defineProperty(exports, "clearStoredViewerPrefs", {
70
70
  enumerable: true,
71
- get: function () { return chunkEFSQW6S5_js.clearStoredViewerPrefs; }
71
+ get: function () { return chunkFDR5W67L_js.clearStoredViewerPrefs; }
72
72
  });
73
73
  Object.defineProperty(exports, "defaultCssVars", {
74
74
  enumerable: true,
75
- get: function () { return chunkEFSQW6S5_js.defaultCssVars; }
75
+ get: function () { return chunkFDR5W67L_js.defaultCssVars; }
76
76
  });
77
77
  Object.defineProperty(exports, "defaultRadius", {
78
78
  enumerable: true,
79
- get: function () { return chunkEFSQW6S5_js.defaultRadius; }
79
+ get: function () { return chunkFDR5W67L_js.defaultRadius; }
80
80
  });
81
81
  Object.defineProperty(exports, "defaultThemeColors", {
82
82
  enumerable: true,
83
- get: function () { return chunkEFSQW6S5_js.defaultThemeColors; }
83
+ get: function () { return chunkFDR5W67L_js.defaultThemeColors; }
84
84
  });
85
85
  Object.defineProperty(exports, "getLocalStorageUsageSummary", {
86
86
  enumerable: true,
87
- get: function () { return chunkEFSQW6S5_js.getLocalStorageUsageSummary; }
87
+ get: function () { return chunkFDR5W67L_js.getLocalStorageUsageSummary; }
88
88
  });
89
89
  Object.defineProperty(exports, "readStoredViewerPrefs", {
90
90
  enumerable: true,
91
- get: function () { return chunkEFSQW6S5_js.readStoredViewerPrefs; }
91
+ get: function () { return chunkFDR5W67L_js.readStoredViewerPrefs; }
92
92
  });
93
93
  Object.defineProperty(exports, "resolveProfileInitial", {
94
94
  enumerable: true,
95
- get: function () { return chunkEFSQW6S5_js.resolveProfileInitial; }
95
+ get: function () { return chunkFDR5W67L_js.resolveProfileInitial; }
96
96
  });
97
97
  Object.defineProperty(exports, "resolveThemeCatalogEntry", {
98
98
  enumerable: true,
99
- get: function () { return chunkEFSQW6S5_js.resolveThemeCatalogEntry; }
99
+ get: function () { return chunkFDR5W67L_js.resolveThemeCatalogEntry; }
100
100
  });
101
101
  Object.defineProperty(exports, "saveViewerProfile", {
102
102
  enumerable: true,
103
- get: function () { return chunkEFSQW6S5_js.saveViewerProfile; }
103
+ get: function () { return chunkFDR5W67L_js.saveViewerProfile; }
104
104
  });
105
105
  Object.defineProperty(exports, "themeToCssVars", {
106
106
  enumerable: true,
107
- get: function () { return chunkEFSQW6S5_js.themeToCssVars; }
107
+ get: function () { return chunkFDR5W67L_js.themeToCssVars; }
108
108
  });
109
109
  Object.defineProperty(exports, "vermilionDarkColors", {
110
110
  enumerable: true,
111
- get: function () { return chunkEFSQW6S5_js.vermilionDarkColors; }
111
+ get: function () { return chunkFDR5W67L_js.vermilionDarkColors; }
112
112
  });
113
113
  Object.defineProperty(exports, "vermilionDarkTheme", {
114
114
  enumerable: true,
115
- get: function () { return chunkEFSQW6S5_js.vermilionDarkTheme; }
115
+ get: function () { return chunkFDR5W67L_js.vermilionDarkTheme; }
116
116
  });
117
117
  Object.defineProperty(exports, "vermilionLightColors", {
118
118
  enumerable: true,
119
- get: function () { return chunkEFSQW6S5_js.vermilionLightColors; }
119
+ get: function () { return chunkFDR5W67L_js.vermilionLightColors; }
120
120
  });
121
121
  Object.defineProperty(exports, "vermilionLightTheme", {
122
122
  enumerable: true,
123
- get: function () { return chunkEFSQW6S5_js.vermilionLightTheme; }
123
+ get: function () { return chunkFDR5W67L_js.vermilionLightTheme; }
124
124
  });
125
125
  Object.defineProperty(exports, "vermilionRadius", {
126
126
  enumerable: true,
127
- get: function () { return chunkEFSQW6S5_js.vermilionRadius; }
127
+ get: function () { return chunkFDR5W67L_js.vermilionRadius; }
128
128
  });
129
129
  Object.defineProperty(exports, "writeStoredViewerPrefs", {
130
130
  enumerable: true,
131
- get: function () { return chunkEFSQW6S5_js.writeStoredViewerPrefs; }
131
+ get: function () { return chunkFDR5W67L_js.writeStoredViewerPrefs; }
132
132
  });
package/dist/index.js.br CHANGED
Binary file
package/dist/index.js.gz CHANGED
Binary file
package/dist/index.mjs CHANGED
@@ -1,7 +1,7 @@
1
- export { PowerPointViewer, SlideCanvas, Toolbar, ViewerThemeProvider, useViewerTheme } from './chunk-YA7VFYTW.mjs';
2
- import './chunk-WEU5EMKK.mjs';
3
- export { renderToCanvas, useViewerBuildingBlocks } from './chunk-6KRNQ2KF.mjs';
4
- export { getAnimationInitialStyle } from './chunk-HRLF4REI.mjs';
1
+ export { PowerPointViewer, SlideCanvas, Toolbar, ViewerThemeProvider, useViewerTheme } from './chunk-3HWE6QZG.mjs';
2
+ import './chunk-L5YGPCQW.mjs';
3
+ export { renderToCanvas, useViewerBuildingBlocks } from './chunk-ZFRPPY2N.mjs';
4
+ export { getAnimationInitialStyle } from './chunk-GZ6TXBEO.mjs';
5
5
  export { LOCALE_CATALOG } from './chunk-TEXIGSA6.mjs';
6
- export { AVATAR_COLOR_SWATCHES, DEFAULT_VIEWER_PROFILE, THEME_CATALOG, VIEWER_PREFS_STORAGE_KEY, clearAllLocalViewerData, clearStoredViewerPrefs, defaultCssVars, defaultRadius, defaultThemeColors, getLocalStorageUsageSummary, readStoredViewerPrefs, resolveProfileInitial, resolveThemeCatalogEntry, saveViewerProfile, themeToCssVars, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius, writeStoredViewerPrefs } from './chunk-4TD7EINA.mjs';
6
+ export { AVATAR_COLOR_SWATCHES, DEFAULT_VIEWER_PROFILE, THEME_CATALOG, VIEWER_PREFS_STORAGE_KEY, clearAllLocalViewerData, clearStoredViewerPrefs, defaultCssVars, defaultRadius, defaultThemeColors, getLocalStorageUsageSummary, readStoredViewerPrefs, resolveProfileInitial, resolveThemeCatalogEntry, saveViewerProfile, themeToCssVars, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius, writeStoredViewerPrefs } from './chunk-GKOKCOXR.mjs';
7
7
  import './chunk-XGB3TDIC.mjs';
package/dist/index.mjs.br CHANGED
Binary file
package/dist/index.mjs.gz CHANGED
Binary file
@@ -3135,6 +3135,20 @@ interface PptxImageProperties {
3135
3135
  cropRight?: number;
3136
3136
  /** Crop from bottom edge as 0..1 fraction (OOXML `a:srcRect/@b`). */
3137
3137
  cropBottom?: number;
3138
+ /**
3139
+ * Stretch target inset from the left frame edge as a signed fraction
3140
+ * (OOXML `a:stretch/a:fillRect/@l`). Unlike `cropLeft` (which selects a
3141
+ * region of the SOURCE bitmap), a fill-rect selects the region of the
3142
+ * FRAME the whole image is stretched into; negative values push the
3143
+ * image beyond the frame edge, and the overflow is clipped.
3144
+ */
3145
+ fillRectLeft?: number;
3146
+ /** Stretch target inset from the top frame edge (`a:fillRect/@t`). */
3147
+ fillRectTop?: number;
3148
+ /** Stretch target inset from the right frame edge (`a:fillRect/@r`). */
3149
+ fillRectRight?: number;
3150
+ /** Stretch target inset from the bottom frame edge (`a:fillRect/@b`). */
3151
+ fillRectBottom?: number;
3138
3152
  /** Image tiling offset X in px. */
3139
3153
  tileOffsetX?: number;
3140
3154
  /** Image tiling offset Y in px. */