pptx-react-viewer 1.25.4 → 1.25.5

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 (98) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/dist/{Model3DScene-DZFYJPUH.mjs → Model3DScene-XVYOISVJ.mjs} +2 -2
  3. package/dist/Model3DScene-XVYOISVJ.mjs.br +0 -0
  4. package/dist/Model3DScene-XVYOISVJ.mjs.gz +0 -0
  5. package/dist/{Model3DScene-SP6WOKSX.js → Model3DScene-Y5ABLO7K.js} +3 -3
  6. package/dist/Model3DScene-Y5ABLO7K.js.br +0 -0
  7. package/dist/Model3DScene-Y5ABLO7K.js.gz +0 -0
  8. package/dist/{SurfaceChart3DScene-54BRNPQ5.mjs → SurfaceChart3DScene-RXZADECL.mjs} +2 -2
  9. package/dist/SurfaceChart3DScene-RXZADECL.mjs.br +0 -0
  10. package/dist/SurfaceChart3DScene-RXZADECL.mjs.gz +0 -0
  11. package/dist/{SurfaceChart3DScene-GISPZ4C2.js → SurfaceChart3DScene-WMY5JTW4.js} +3 -3
  12. package/dist/SurfaceChart3DScene-WMY5JTW4.js.br +0 -0
  13. package/dist/SurfaceChart3DScene-WMY5JTW4.js.gz +0 -0
  14. package/dist/{chunk-5VYVKFMS.js → chunk-7CSBUYRN.js} +808 -808
  15. package/dist/chunk-7CSBUYRN.js.br +0 -0
  16. package/dist/chunk-7CSBUYRN.js.gz +0 -0
  17. package/dist/{chunk-7FE27DDH.js → chunk-E55Q4AC7.js} +556 -476
  18. package/dist/chunk-E55Q4AC7.js.br +0 -0
  19. package/dist/chunk-E55Q4AC7.js.gz +0 -0
  20. package/dist/{chunk-P72VQ7WE.mjs → chunk-F4WPQRZU.mjs} +96 -16
  21. package/dist/chunk-F4WPQRZU.mjs.br +0 -0
  22. package/dist/chunk-F4WPQRZU.mjs.gz +0 -0
  23. package/dist/{chunk-UYNOPUSG.mjs → chunk-FOMF7POV.mjs} +1658 -353
  24. package/dist/chunk-FOMF7POV.mjs.br +0 -0
  25. package/dist/chunk-FOMF7POV.mjs.gz +0 -0
  26. package/dist/{chunk-VUC3UPLM.mjs → chunk-FVQDRA5N.mjs} +1044 -108
  27. package/dist/chunk-FVQDRA5N.mjs.br +0 -0
  28. package/dist/chunk-FVQDRA5N.mjs.gz +0 -0
  29. package/dist/{chunk-FWF2SP6N.js → chunk-IPYAN574.js} +1660 -352
  30. package/dist/chunk-IPYAN574.js.br +0 -0
  31. package/dist/chunk-IPYAN574.js.gz +0 -0
  32. package/dist/{chunk-TPG2WKHQ.mjs → chunk-L4ZADJOM.mjs} +6 -6
  33. package/dist/chunk-L4ZADJOM.mjs.br +0 -0
  34. package/dist/chunk-L4ZADJOM.mjs.gz +0 -0
  35. package/dist/{chunk-6F4WVHS3.js → chunk-TEN35NUX.js} +1077 -141
  36. package/dist/chunk-TEN35NUX.js.br +0 -0
  37. package/dist/chunk-TEN35NUX.js.gz +0 -0
  38. package/dist/{dist-QU6JIDAF.js → dist-755SJ3ZH.js} +574 -562
  39. package/dist/dist-755SJ3ZH.js.br +0 -0
  40. package/dist/dist-755SJ3ZH.js.gz +0 -0
  41. package/dist/dist-FFWP5NQZ.mjs +2 -0
  42. package/dist/dist-FFWP5NQZ.mjs.br +0 -0
  43. package/dist/dist-FFWP5NQZ.mjs.gz +0 -0
  44. package/dist/hooks-unstable.d.ts +243 -4
  45. package/dist/hooks-unstable.d.ts.map +1 -1
  46. package/dist/hooks-unstable.js +78 -78
  47. package/dist/hooks-unstable.js.br +0 -0
  48. package/dist/hooks-unstable.js.gz +0 -0
  49. package/dist/hooks-unstable.mjs +3 -3
  50. package/dist/hooks-unstable.mjs.br +0 -0
  51. package/dist/hooks-unstable.mjs.gz +0 -0
  52. package/dist/{index-DWvM1PBB.d.ts → index-J6IuHQ2_.d.ts} +21 -4
  53. package/dist/index-J6IuHQ2_.d.ts.map +1 -0
  54. package/dist/index.d.ts +223 -1
  55. package/dist/index.js +33 -33
  56. package/dist/index.js.br +0 -0
  57. package/dist/index.js.gz +0 -0
  58. package/dist/index.mjs +4 -4
  59. package/dist/index.mjs.br +0 -0
  60. package/dist/index.mjs.gz +0 -0
  61. package/dist/viewer/index.d.ts +223 -1
  62. package/dist/viewer/index.js +20 -20
  63. package/dist/viewer/index.js.br +0 -0
  64. package/dist/viewer/index.js.gz +0 -0
  65. package/dist/viewer/index.mjs +4 -4
  66. package/dist/viewer/index.mjs.br +0 -0
  67. package/dist/viewer/index.mjs.gz +0 -0
  68. package/package.json +1 -1
  69. package/dist/Model3DScene-DZFYJPUH.mjs.br +0 -0
  70. package/dist/Model3DScene-DZFYJPUH.mjs.gz +0 -0
  71. package/dist/Model3DScene-SP6WOKSX.js.br +0 -0
  72. package/dist/Model3DScene-SP6WOKSX.js.gz +0 -0
  73. package/dist/SurfaceChart3DScene-54BRNPQ5.mjs.br +0 -0
  74. package/dist/SurfaceChart3DScene-54BRNPQ5.mjs.gz +0 -0
  75. package/dist/SurfaceChart3DScene-GISPZ4C2.js.br +0 -0
  76. package/dist/SurfaceChart3DScene-GISPZ4C2.js.gz +0 -0
  77. package/dist/chunk-5VYVKFMS.js.br +0 -0
  78. package/dist/chunk-5VYVKFMS.js.gz +0 -0
  79. package/dist/chunk-6F4WVHS3.js.br +0 -0
  80. package/dist/chunk-6F4WVHS3.js.gz +0 -0
  81. package/dist/chunk-7FE27DDH.js.br +0 -0
  82. package/dist/chunk-7FE27DDH.js.gz +0 -0
  83. package/dist/chunk-FWF2SP6N.js.br +0 -0
  84. package/dist/chunk-FWF2SP6N.js.gz +0 -0
  85. package/dist/chunk-P72VQ7WE.mjs.br +0 -0
  86. package/dist/chunk-P72VQ7WE.mjs.gz +0 -0
  87. package/dist/chunk-TPG2WKHQ.mjs.br +0 -0
  88. package/dist/chunk-TPG2WKHQ.mjs.gz +0 -0
  89. package/dist/chunk-UYNOPUSG.mjs.br +0 -0
  90. package/dist/chunk-UYNOPUSG.mjs.gz +0 -0
  91. package/dist/chunk-VUC3UPLM.mjs.br +0 -0
  92. package/dist/chunk-VUC3UPLM.mjs.gz +0 -0
  93. package/dist/dist-QNYKM7YS.mjs +0 -2
  94. package/dist/dist-QNYKM7YS.mjs.br +0 -0
  95. package/dist/dist-QNYKM7YS.mjs.gz +0 -0
  96. package/dist/dist-QU6JIDAF.js.br +0 -0
  97. package/dist/dist-QU6JIDAF.js.gz +0 -0
  98. package/dist/index-DWvM1PBB.d.ts.map +0 -1
Binary file
Binary file
@@ -1,6 +1,6 @@
1
- import { SHAPE_PRESET_DEFS, TOOLBAR_TABS, computeValueRangeForChart, cloneTemplateElementsBySlideId, cloneSlide, countTextSegments, expandTextBuildAnimations, TimelineEngine, TEXT_BUILD_ID_SEP, computeEntranceAnimationDelay, storePresentationDeck, loadPresentationDeck, clearPresentationDeck, PRESENTATION_HASH, PRESENTATION_NONCE_KEY, PRESENTATION_CHANNEL_NAME, swapPresentationWindows, PRESENTATION_MESSAGE_ORIGIN, buildPresentationAudienceUrl, resolveAudienceScreenPlacement, placeAudienceWindow, isPresentationSessionMessage, collectMediaElements, collectImagePaths, buildInitialGuides, saveAutosaveSnapshot, getAnimationInitialStyle, normalizeHexColor, toCssWritingMode, toCssTextOrientation, toCssVerticalDirection, computeAutoFitTextStyle, resolveLineHeight, getKinsokuLineBreakStyles, buildTextBody3DSceneStyle, resolveParagraphRtl, resolveParagraphAlign, resolveCssTextAlign, colorWithOpacity, build3DExtrusionData, getResolvedShapeClipPath, normalizeStrokeDashType, buildCssGradientFromShapeStyle, buildShadowCssFromShapeStyle, buildInnerShadowCssFromShapeStyle, buildMultiLayerShadowCss, buildGlowBoxShadow, getCompoundLineBoxShadow, getEffectDagFilter, buildPatternFillCss, buildReflectionCss, getCssBorderDashStyle, getCompoundLineBorderWidth, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, clampCropValue, computeSelectionRect, rectToCells, isCellInRect, buildChartViewModel, buildPreviewAnimation, isTemplateElementId, getInlineEditorSelection, applyStyleToSelectedSegments, setPendingSelectionRestore, applyCaseTransformToSegments, transformTextCase, addSection, renameSection, deleteSection, moveSectionUp, moveSectionDown, moveSlidesToSection, normalizeColorsForCapture, preprocessCssForCapture, slideProgressPercent, slideStatusLabel, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, isExportAbortError, recordProgressPercent, comparePresentation, applyAcceptSlide, applyAcceptAllSlides, collectUsedFonts, detectTouchDevice, detectOrientation, isMobileViewport, MOBILE_BREAKPOINT, TABLET_BREAKPOINT, remapTextToSegments, shouldLoopContinuously, applyRehearsalTimings, copyFormatFromElement, applyFormatToElement, createViewerOptionsStore, createSyncGate, validateRoomId, resolveTransportForServerUrl, isMixedContentBlocked, CONNECTION_TIMEOUT_MS, BROADCAST_THROTTLE_MS, sanitizeColor, readSlidesFromYDoc, reconcileSlidesInYDoc, LOCAL_SYNC_ORIGIN, observeYDocSlides, computeVirtualRange, DEFAULT_VIRTUAL_OVERSCAN, createTouchGestureRecognizer, isKeyboardOpen, openPptxFile, readBackstageRecentFile, isActionHidden, buildElementClipboardPayload, generatePackageReadme, downloadBlob, groupElements, generateElementId, makeCloneId, alignElements, distributeElements, bringForward, sendBackward, bringToFront, sendToBack, newTableElement, createDefaultChartElement, readViewportMetrics, computeKeyboardInset, derivePresenceList, buildPrintDocument, buildOutlineHtml, buildSlidesHtml, buildNotesHtml, buildHandoutsHtml, createBlankSlide, makeSlideId, cloneHistorySnapshot, createPresentationSessionId, resolveTransitionDurationMs, isUrlSafe, createPresenterTimer, createInitialPresentationSnapshot, mergePresentationSnapshot, presenterElapsed, stepPresenterZoom, resetPresenterTimer, togglePresenterTimer, isTemplateElement, substituteFieldText, resolveUnderlineDecorationStyle, hasDistinctScriptFonts, buildTextReflectionCss, getTextAlphaOpacity, buildTextRunFilterChain, buildTextShadowCss, apply3dEffects, clampUnitInterval, getRoundRectRadiusPx, computeColumnBoundaries, parseDrawingColor, parseDrawingColorOpacity, getPatternSvg, ooxmlDashToCssBorderStyle, getChartStylePalette, computeLayout, valueToY, formatAxisValue, computeLayoutOptions, splitSeriesByAxis, computeValueRange, getSecondaryValueAxis, seriesColor, paletteColor, resolveRegionCode, normalizeValue, sequentialColorScale, canvasToJpegData, downloadDataUrl, pickSupportedMimeType, WEBM_MIME_CANDIDATES, fpsToFrameIntervalMs, segmentFrameCount, sanitizeDownloadFilename, encodeGif, groupSlidesBySection, hasCopyableFormat, createBackstagePresentation, cloneElementForPaste, computeScrollDelta, rerouteConnectorsForMovedElements, applyReroutedConnectors, buildPrintHtmlDocument, convertOmmlToMathMl, sanitizeMathMl, buildTextFillCss, resolvePictureBullet, computeResizedColumnWidths, computeResizedRowHeight, DEFAULT_ROW_HEIGHT, tintColor2, shadeColor2, deleteTableColumn, insertTableColumn, deleteTableRow, insertTableRow, splitCell, mergeCells, buildSlidesPdfBytes, buildNotesPdfBytes, isPpactionUrl, parsePpactionUrl, safeOpenUrl, ACTION_BUTTON_PRESETS, buildSmartArtPresetData, computeSnapToShape, computeMarqueeHitIds, mergeAdditiveSelection, segmentByScript, resolveFontForScript, generateLogTicks, formatAxisValueWithUnits, getDisplayUnitLabel, applyResize, snapBoxToGrid, chartPartToAttrs } from './chunk-VUC3UPLM.mjs';
1
+ import { SHAPE_PRESET_DEFS, TOOLBAR_TABS, computeValueRangeForChart, cloneTemplateElementsBySlideId, cloneSlide, countTextSegments, expandTextBuildAnimations, TimelineEngine, TEXT_BUILD_ID_SEP, computeEntranceAnimationDelay, storePresentationDeck, loadPresentationDeck, clearPresentationDeck, PRESENTATION_HASH, PRESENTATION_NONCE_KEY, PRESENTATION_CHANNEL_NAME, swapPresentationWindows, PRESENTATION_MESSAGE_ORIGIN, buildPresentationAudienceUrl, resolveAudienceScreenPlacement, placeAudienceWindow, isPresentationSessionMessage, collectMediaElements, collectImagePaths, buildInitialGuides, saveAutosaveSnapshot, getAnimationInitialStyle, normalizeHexColor, toCssWritingMode, toCssTextOrientation, toCssVerticalDirection, computeAutoFitTextStyle, resolveLineHeight, getKinsokuLineBreakStyles, buildTextBody3DSceneStyle, resolveParagraphRtl, resolveParagraphAlign, resolveCssTextAlign, colorWithOpacity, build3DExtrusionData, getResolvedShapeClipPath, normalizeStrokeDashType, buildCssGradientFromShapeStyle, buildShadowCssFromShapeStyle, buildInnerShadowCssFromShapeStyle, buildMultiLayerShadowCss, buildGlowBoxShadow, getCompoundLineBoxShadow, getEffectDagFilter, buildPatternFillCss, buildReflectionCss, getCssBorderDashStyle, getCompoundLineBorderWidth, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, clampCropValue, computeSelectionRect, rectToCells, isCellInRect, buildChartViewModel, buildPreviewAnimation, isTemplateElementId, getInlineEditorSelection, applyStyleToSelectedSegments, setPendingSelectionRestore, applyCaseTransformToSegments, transformTextCase, addSection, renameSection, deleteSection, moveSectionUp, moveSectionDown, moveSlidesToSection, normalizeColorsForCapture, preprocessCssForCapture, slideProgressPercent, slideStatusLabel, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, isExportAbortError, recordProgressPercent, comparePresentation, applyAcceptSlide, applyAcceptAllSlides, collectUsedFonts, detectTouchDevice, detectOrientation, isMobileViewport, MOBILE_BREAKPOINT, TABLET_BREAKPOINT, remapTextToSegments, shouldLoopContinuously, applyRehearsalTimings, copyFormatFromElement, applyFormatToElement, createViewerOptionsStore, createSyncGate, validateRoomId, resolveTransportForServerUrl, isMixedContentBlocked, CONNECTION_TIMEOUT_MS, BROADCAST_THROTTLE_MS, sanitizeColor, readSlidesFromYDoc, reconcileSlidesInYDoc, LOCAL_SYNC_ORIGIN, observeYDocSlides, computeVirtualRange, DEFAULT_VIRTUAL_OVERSCAN, createTouchGestureRecognizer, isKeyboardOpen, openPptxFile, readBackstageRecentFile, isActionHidden, buildElementClipboardPayload, generatePackageReadme, downloadBlob, groupElements, generateElementId, makeCloneId, alignElements, distributeElements, bringForward, sendBackward, bringToFront, sendToBack, newTableElement, createDefaultChartElement, readViewportMetrics, computeKeyboardInset, derivePresenceList, buildPrintDocument, buildOutlineHtml, buildSlidesHtml, buildNotesHtml, buildHandoutsHtml, createBlankSlide, makeSlideId, cloneHistorySnapshot, createPresentationSessionId, resolveTransitionDurationMs, isUrlSafe, createPresenterTimer, createInitialPresentationSnapshot, mergePresentationSnapshot, presenterElapsed, stepPresenterZoom, resetPresenterTimer, togglePresenterTimer, isTemplateElement, substituteFieldText, resolveUnderlineDecorationStyle, hasDistinctScriptFonts, buildTextReflectionCss, getTextAlphaOpacity, buildTextRunFilterChain, buildTextShadowCss, apply3dEffects, clampUnitInterval, getRoundRectRadiusPx, computeColumnBoundaries, parseDrawingColor, parseDrawingColorOpacity, getPatternSvg, ooxmlDashToCssBorderStyle, getChartStylePalette, computeLayout, valueToY, formatAxisValue, computeLayoutOptions, splitSeriesByAxis, computeValueRange, getSecondaryValueAxis, seriesColor, paletteColor, resolveRegionCode, normalizeValue, sequentialColorScale, canvasToJpegData, downloadDataUrl, pickSupportedMimeType, WEBM_MIME_CANDIDATES, fpsToFrameIntervalMs, segmentFrameCount, sanitizeDownloadFilename, encodeGif, groupSlidesBySection, hasCopyableFormat, createBackstagePresentation, cloneElementForPaste, computeScrollDelta, rerouteConnectorsForMovedElements, applyReroutedConnectors, buildPrintHtmlDocument, convertOmmlToMathMl, sanitizeMathMl, buildTextFillCss, resolvePictureBullet, computeResizedColumnWidths, computeResizedRowHeight, DEFAULT_ROW_HEIGHT, tintColor2, shadeColor2, deleteTableColumn, insertTableColumn, deleteTableRow, insertTableRow, splitCell, mergeCells, buildSlidesPdfBytes, buildNotesPdfBytes, isPpactionUrl, parsePpactionUrl, safeOpenUrl, ACTION_BUTTON_PRESETS, buildSmartArtPresetData, computeSnapToShape, computeMarqueeHitIds, mergeAdditiveSelection, segmentByScript, resolveFontForScript, generateLogTicks, formatAxisValueWithUnits, getDisplayUnitLabel, applyResize, snapBoxToGrid, chartPartToAttrs } from './chunk-FVQDRA5N.mjs';
2
2
  import { translationsEn } from './chunk-M3SIFXWD.mjs';
3
- import { hasTextProperties, PptxHandler, EncryptedFileError, hasShapeProperties, isImageLikeElement, isCalloutShape, getCalloutLeaderLineGeometry, buildCalloutLeaderLineSvgPath, getCalloutViewBoxBounds, applyThemeToData, THEME_PRESETS, themeColorSchemesEqual, guidePxToEmu, mergeShapes, getSubstituteFontFamily, getPresetShapeClipPath, svgPathToPolygons, polygonsToSvgPath, SvgExporter, rebuildTableStructureInRawXml, updateCellTextStyleInRawXml, updateCellTextInRawXml, updateMergeAttrsInRawXml, elementActionToPptxAction } from './chunk-UYNOPUSG.mjs';
3
+ import { hasTextProperties, PptxHandler, EncryptedFileError, hasShapeProperties, isImageLikeElement, isCalloutShape, getCalloutLeaderLineGeometry, buildCalloutLeaderLineSvgPath, getCalloutViewBoxBounds, applyThemeToData, THEME_PRESETS, themeColorSchemesEqual, guidePxToEmu, mergeShapes, getSubstituteFontFamily, getPresetShapeClipPath, svgPathToPolygons, polygonsToSvgPath, SvgExporter, rebuildTableStructureInRawXml, updateCellTextStyleInRawXml, updateCellTextInRawXml, updateMergeAttrsInRawXml, elementActionToPptxAction } from './chunk-FOMF7POV.mjs';
4
4
  import React3, { useState, useEffect, useMemo, Suspense, useRef, useCallback, useSyncExternalStore, useImperativeHandle, useLayoutEffect } from 'react';
5
5
  import { LuTriangle, LuPlus, LuMoveRight, LuMinus, LuDiamond, LuDatabase, LuCircle, LuSquare } from 'react-icons/lu';
6
6
  import { clsx } from 'clsx';
@@ -549,10 +549,29 @@ function useZoomViewport({
549
549
  };
550
550
  }
551
551
 
552
+ // src/viewer/utils/animation-sound.ts
553
+ var activeAudio = null;
554
+ function playAnimationSound(soundUrl, loop = false) {
555
+ stopAnimationSound();
556
+ activeAudio = new Audio(soundUrl);
557
+ activeAudio.loop = loop;
558
+ activeAudio.play().catch(() => {
559
+ });
560
+ }
561
+ function stopAnimationSound() {
562
+ if (activeAudio) {
563
+ activeAudio.pause();
564
+ activeAudio.currentTime = 0;
565
+ activeAudio = null;
566
+ }
567
+ }
568
+
552
569
  // src/viewer/hooks/presentation-mode/animation-helpers.ts
553
570
  function applyAnimationGroupSteps(group, onPlayActionSound, setPresentationElementStates, presentationTimersRef) {
554
571
  for (const step of group.steps) {
555
- if (step.stopSound) ; else if (step.soundPath && onPlayActionSound) {
572
+ if (step.stopSound) {
573
+ stopAnimationSound();
574
+ } else if (step.soundPath && onPlayActionSound) {
556
575
  onPlayActionSound(step.soundPath);
557
576
  }
558
577
  }
@@ -1512,7 +1531,7 @@ function executeSlideTransition(nextSlideIndex, deps) {
1512
1531
  deps.setPresentationSlideVisible(true);
1513
1532
  if (durationMs > 0 && transition) {
1514
1533
  if (transition.soundPath && deps.onPlayActionSound) {
1515
- deps.onPlayActionSound(transition.soundPath);
1534
+ deps.onPlayActionSound(transition.soundPath, { loop: transition.soundLoop === true });
1516
1535
  }
1517
1536
  deps.setTransitionOverlay({
1518
1537
  outgoingSlideIndex: deps.currentSlideIndex,
@@ -1533,6 +1552,9 @@ function executeSlideTransition(nextSlideIndex, deps) {
1533
1552
  }
1534
1553
 
1535
1554
  // src/viewer/hooks/presentation-mode/useSlideNavigation.ts
1555
+ function isClickAdvanceBlocked(slide, direction, trigger) {
1556
+ return trigger === "click" && direction === 1 && slide?.transition?.advanceOnClick === false;
1557
+ }
1536
1558
  function useSlideNavigation(input) {
1537
1559
  const {
1538
1560
  slides,
@@ -1578,10 +1600,13 @@ function useSlideNavigation(input) {
1578
1600
  [slides, presentationTimersRef, useTimings]
1579
1601
  );
1580
1602
  const movePresentationSlide = useCallback(
1581
- (direction) => {
1603
+ (direction, trigger = "explicit") => {
1582
1604
  if (direction === 1 && playNextAnimationGroup()) {
1583
1605
  return;
1584
1606
  }
1607
+ if (isClickAdvanceBlocked(slides[presentationSlideIndex], direction, trigger)) {
1608
+ return;
1609
+ }
1585
1610
  const availableSlideIndexes = visibleSlideIndexes.length > 0 ? visibleSlideIndexes : slides.map((_slide, slideIndex) => slideIndex);
1586
1611
  if (availableSlideIndexes.length === 0) {
1587
1612
  return;
@@ -1890,7 +1915,7 @@ function usePresentationMode(input) {
1890
1915
  setShowRehearsalSummary
1891
1916
  });
1892
1917
  const movePresentationSlide = useCallback(
1893
- (direction) => {
1918
+ (direction, trigger = "explicit") => {
1894
1919
  if (endOfShowVisible) {
1895
1920
  setEndOfShowVisible(false);
1896
1921
  if (direction === 1) {
@@ -1898,7 +1923,7 @@ function usePresentationMode(input) {
1898
1923
  }
1899
1924
  return;
1900
1925
  }
1901
- moveNavigationSlide(direction);
1926
+ moveNavigationSlide(direction, trigger);
1902
1927
  },
1903
1928
  [endOfShowVisible, moveNavigationSlide, onSetMode]
1904
1929
  );
@@ -7796,6 +7821,50 @@ function renderDropLines(elementId, chartData, layout, range, mode) {
7796
7821
  }
7797
7822
  return /* @__PURE__ */ jsx("g", { children: nodes }, `${elementId}-droplines`);
7798
7823
  }
7824
+ function renderUpDownBars(elementId, chartData, layout, range, mode) {
7825
+ if (!chartData.upDownBars || chartData.series.length < 2) {
7826
+ return null;
7827
+ }
7828
+ const catCount = Math.max(chartData.categories.length, 1);
7829
+ const bars = chartData.upDownBars;
7830
+ const first = chartData.series[0];
7831
+ const last = chartData.series[chartData.series.length - 1];
7832
+ const slot = layout.plotWidth / catCount;
7833
+ const gapWidth = bars.gapWidth ?? 150;
7834
+ const barW = Math.max(slot / (1 + Math.max(gapWidth, 0) / 100), 1);
7835
+ const upFill = bars.upBars?.fillColor ?? "#e2e8f0";
7836
+ const downFill = bars.downBars?.fillColor ?? "#334155";
7837
+ const nodes = [];
7838
+ for (let vi = 0; vi < catCount; vi++) {
7839
+ const firstVal = first.values[vi];
7840
+ const lastVal = last.values[vi];
7841
+ if (firstVal === void 0 || lastVal === void 0) {
7842
+ continue;
7843
+ }
7844
+ const firstY = valToY(firstVal, range, layout.plotTop, layout.plotBottom);
7845
+ const lastY = valToY(lastVal, range, layout.plotTop, layout.plotBottom);
7846
+ const cx = xToPixel(vi, catCount, layout);
7847
+ nodes.push(
7848
+ /* @__PURE__ */ jsx(
7849
+ "rect",
7850
+ {
7851
+ x: cx - barW / 2,
7852
+ y: Math.min(firstY, lastY),
7853
+ width: barW,
7854
+ height: Math.max(Math.abs(firstY - lastY), 1),
7855
+ fill: lastVal >= firstVal ? upFill : downFill,
7856
+ stroke: "#64748b",
7857
+ strokeWidth: 0.5
7858
+ },
7859
+ `${elementId}-udb-${vi}`
7860
+ )
7861
+ );
7862
+ }
7863
+ if (nodes.length === 0) {
7864
+ return null;
7865
+ }
7866
+ return /* @__PURE__ */ jsx("g", { children: nodes }, `${elementId}-updownbars`);
7867
+ }
7799
7868
  function renderHiLowLines(elementId, chartData, layout, range, mode) {
7800
7869
  if (!chartData.hiLowLines) {
7801
7870
  return null;
@@ -8259,6 +8328,7 @@ function renderOverlays(id, chartData, layout, range, mode) {
8259
8328
  const overlayLayout = layout;
8260
8329
  const overlayRange = range;
8261
8330
  const nodes = [];
8331
+ nodes.push(renderUpDownBars(id, chartData, overlayLayout, overlayRange));
8262
8332
  nodes.push(renderDropLines(id, chartData, overlayLayout, overlayRange));
8263
8333
  nodes.push(renderHiLowLines(id, chartData, overlayLayout, overlayRange));
8264
8334
  nodes.push(renderTrendlines(id, chartData, overlayLayout, overlayRange));
@@ -8510,7 +8580,7 @@ function FailedToLoad() {
8510
8580
  var LazySurfaceChart3DScene = React3.lazy(
8511
8581
  async () => {
8512
8582
  try {
8513
- return await import('./SurfaceChart3DScene-54BRNPQ5.mjs');
8583
+ return await import('./SurfaceChart3DScene-RXZADECL.mjs');
8514
8584
  } catch {
8515
8585
  return { default: FailedToLoad };
8516
8586
  }
@@ -15515,22 +15585,28 @@ function usePresentationSetup(input) {
15515
15585
  } else {
15516
15586
  if (mode === "present" && nextMode !== "present") {
15517
15587
  stopAllPersistentAudio();
15588
+ stopAnimationSound();
15518
15589
  }
15519
15590
  setMode(nextMode);
15520
15591
  }
15521
15592
  },
15522
15593
  onSetActiveSlideIndex: setActiveSlideIndex,
15523
- onPlayActionSound: (soundPath) => {
15594
+ onPlayActionSound: (soundPath, options) => {
15524
15595
  void (async () => {
15525
15596
  if (!soundPath) {
15526
15597
  return;
15527
15598
  }
15599
+ const loop = options?.loop === true;
15528
15600
  const cachedSound = mediaDataUrls.get(soundPath);
15529
15601
  if (cachedSound) {
15530
15602
  try {
15531
- const audio = new Audio(cachedSound);
15532
- void audio.play().catch(() => {
15533
- });
15603
+ if (loop) {
15604
+ playAnimationSound(cachedSound, true);
15605
+ } else {
15606
+ const audio = new Audio(cachedSound);
15607
+ void audio.play().catch(() => {
15608
+ });
15609
+ }
15534
15610
  } catch {
15535
15611
  }
15536
15612
  return;
@@ -15545,9 +15621,13 @@ function usePresentationSetup(input) {
15545
15621
  return;
15546
15622
  }
15547
15623
  mediaDataUrls.set(soundPath, dataUrl);
15548
- const audio = new Audio(dataUrl);
15549
- void audio.play().catch(() => {
15550
- });
15624
+ if (loop) {
15625
+ playAnimationSound(dataUrl, true);
15626
+ } else {
15627
+ const audio = new Audio(dataUrl);
15628
+ void audio.play().catch(() => {
15629
+ });
15630
+ }
15551
15631
  } catch {
15552
15632
  }
15553
15633
  })();
@@ -17114,7 +17194,7 @@ function useYjsDocumentSync({
17114
17194
  return;
17115
17195
  }
17116
17196
  try {
17117
- const { PptxHandler: PptxHandler2 } = await import('./dist-QNYKM7YS.mjs');
17197
+ const { PptxHandler: PptxHandler2 } = await import('./dist-FFWP5NQZ.mjs');
17118
17198
  const handler = new PptxHandler2();
17119
17199
  await handler.load(sourceBytes.buffer);
17120
17200
  const currentSlides = readSlidesFromYDoc(
Binary file
Binary file