pptx-react-viewer 3.1.3 → 3.1.4

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 (151) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/{AiChatPanel-5JAQBLTU.mjs → AiChatPanel-ITCVRVKP.mjs} +3 -3
  3. package/dist/AiChatPanel-ITCVRVKP.mjs.br +0 -0
  4. package/dist/AiChatPanel-ITCVRVKP.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-C3E7UV7T.js → AiChatPanel-TO5PHBGW.js} +23 -23
  6. package/dist/AiChatPanel-TO5PHBGW.js.br +0 -0
  7. package/dist/AiChatPanel-TO5PHBGW.js.gz +0 -0
  8. package/dist/{Area3DChartScene-XY2PKRMA.js → Area3DChartScene-2UNQ3J3V.js} +2 -2
  9. package/dist/Area3DChartScene-2UNQ3J3V.js.br +0 -0
  10. package/dist/Area3DChartScene-2UNQ3J3V.js.gz +0 -0
  11. package/dist/{Area3DChartScene-KE434ERF.mjs → Area3DChartScene-7PHPDOTG.mjs} +1 -1
  12. package/dist/Area3DChartScene-7PHPDOTG.mjs.br +0 -0
  13. package/dist/Area3DChartScene-7PHPDOTG.mjs.gz +0 -0
  14. package/dist/{Bar3DChartScene-2KQABQZM.mjs → Bar3DChartScene-BLPUHYRZ.mjs} +1 -1
  15. package/dist/Bar3DChartScene-BLPUHYRZ.mjs.br +0 -0
  16. package/dist/Bar3DChartScene-BLPUHYRZ.mjs.gz +0 -0
  17. package/dist/{Bar3DChartScene-YMADUUZN.js → Bar3DChartScene-MC5S3AGT.js} +2 -2
  18. package/dist/Bar3DChartScene-MC5S3AGT.js.br +0 -0
  19. package/dist/Bar3DChartScene-MC5S3AGT.js.gz +0 -0
  20. package/dist/{Line3DChartScene-AB7N6ORX.js → Line3DChartScene-JVVZRIDD.js} +2 -2
  21. package/dist/Line3DChartScene-JVVZRIDD.js.br +0 -0
  22. package/dist/Line3DChartScene-JVVZRIDD.js.gz +0 -0
  23. package/dist/{Line3DChartScene-K3BSK6BB.mjs → Line3DChartScene-L5B4YFG3.mjs} +1 -1
  24. package/dist/Line3DChartScene-L5B4YFG3.mjs.br +0 -0
  25. package/dist/Line3DChartScene-L5B4YFG3.mjs.gz +0 -0
  26. package/dist/{Model3DScene-NT5RRIB5.mjs → Model3DScene-6TNWS5LV.mjs} +1 -1
  27. package/dist/Model3DScene-6TNWS5LV.mjs.br +0 -0
  28. package/dist/Model3DScene-6TNWS5LV.mjs.gz +0 -0
  29. package/dist/{Model3DScene-VSLGUWC7.js → Model3DScene-LRDNQNKJ.js} +2 -2
  30. package/dist/Model3DScene-LRDNQNKJ.js.br +0 -0
  31. package/dist/Model3DScene-LRDNQNKJ.js.gz +0 -0
  32. package/dist/{PieChart3DScene-6MUFRFYJ.js → PieChart3DScene-PZWZCXHX.js} +2 -2
  33. package/dist/PieChart3DScene-PZWZCXHX.js.br +0 -0
  34. package/dist/PieChart3DScene-PZWZCXHX.js.gz +0 -0
  35. package/dist/{PieChart3DScene-NFRBKII7.mjs → PieChart3DScene-XXAIVP4I.mjs} +1 -1
  36. package/dist/PieChart3DScene-XXAIVP4I.mjs.br +0 -0
  37. package/dist/PieChart3DScene-XXAIVP4I.mjs.gz +0 -0
  38. package/dist/{SurfaceChart3DScene-UKIOTKJC.mjs → SurfaceChart3DScene-CRUGJSCY.mjs} +1 -1
  39. package/dist/SurfaceChart3DScene-CRUGJSCY.mjs.br +1 -0
  40. package/dist/SurfaceChart3DScene-CRUGJSCY.mjs.gz +0 -0
  41. package/dist/{SurfaceChart3DScene-2UQOKVFB.js → SurfaceChart3DScene-UBQV3ZN2.js} +2 -2
  42. package/dist/SurfaceChart3DScene-UBQV3ZN2.js.br +0 -0
  43. package/dist/SurfaceChart3DScene-UBQV3ZN2.js.gz +0 -0
  44. package/dist/UTIF-LAD5QYGQ.mjs +6400 -0
  45. package/dist/UTIF-LAD5QYGQ.mjs.br +0 -0
  46. package/dist/UTIF-LAD5QYGQ.mjs.gz +0 -0
  47. package/dist/UTIF-POYWAAGO.js +6402 -0
  48. package/dist/UTIF-POYWAAGO.js.br +0 -0
  49. package/dist/UTIF-POYWAAGO.js.gz +0 -0
  50. package/dist/{chunk-5WH6UVWC.mjs → chunk-57MGKBJ4.mjs} +253 -77
  51. package/dist/chunk-57MGKBJ4.mjs.br +0 -0
  52. package/dist/chunk-57MGKBJ4.mjs.gz +0 -0
  53. package/dist/{chunk-BZ6OM3H5.mjs → chunk-A2UAUSJM.mjs} +113 -6
  54. package/dist/chunk-A2UAUSJM.mjs.br +0 -0
  55. package/dist/chunk-A2UAUSJM.mjs.gz +0 -0
  56. package/dist/{chunk-ACVLIDUS.mjs → chunk-BPWSJLLG.mjs} +158 -29
  57. package/dist/chunk-BPWSJLLG.mjs.br +0 -0
  58. package/dist/chunk-BPWSJLLG.mjs.gz +0 -0
  59. package/dist/{chunk-K4DUVYZ7.js → chunk-LGVNUG3G.js} +3 -3
  60. package/dist/chunk-LGVNUG3G.js.br +0 -0
  61. package/dist/chunk-LGVNUG3G.js.gz +0 -0
  62. package/dist/{chunk-XBR7W47W.js → chunk-LXYDXLKZ.js} +510 -403
  63. package/dist/chunk-LXYDXLKZ.js.br +0 -0
  64. package/dist/chunk-LXYDXLKZ.js.gz +0 -0
  65. package/dist/{chunk-Z3DEULRJ.mjs → chunk-QOLYY7E3.mjs} +1 -1
  66. package/dist/chunk-QOLYY7E3.mjs.br +0 -0
  67. package/dist/chunk-QOLYY7E3.mjs.gz +0 -0
  68. package/dist/{chunk-OABOL32L.js → chunk-T2QG2HD5.js} +302 -171
  69. package/dist/chunk-T2QG2HD5.js.br +0 -0
  70. package/dist/chunk-T2QG2HD5.js.gz +0 -0
  71. package/dist/{chunk-GCOGKBK3.js → chunk-T44LBKF6.js} +1342 -1166
  72. package/dist/chunk-T44LBKF6.js.br +0 -0
  73. package/dist/chunk-T44LBKF6.js.gz +0 -0
  74. package/dist/{chunk-SRAXNEJX.mjs → chunk-XIHK52SB.mjs} +1525 -341
  75. package/dist/chunk-XIHK52SB.mjs.br +0 -0
  76. package/dist/chunk-XIHK52SB.mjs.gz +0 -0
  77. package/dist/{chunk-HMZA25W2.js → chunk-YDEEINER.js} +1528 -343
  78. package/dist/chunk-YDEEINER.js.br +0 -0
  79. package/dist/chunk-YDEEINER.js.gz +0 -0
  80. package/dist/index.d.ts +139 -3
  81. package/dist/index.d.ts.map +1 -1
  82. package/dist/index.js +49 -49
  83. package/dist/index.js.br +0 -0
  84. package/dist/index.js.gz +0 -0
  85. package/dist/index.mjs +5 -5
  86. package/dist/index.mjs.br +0 -0
  87. package/dist/index.mjs.gz +0 -0
  88. package/dist/internals.d.ts +139 -3
  89. package/dist/internals.d.ts.map +1 -1
  90. package/dist/internals.js +78 -78
  91. package/dist/internals.js.br +0 -0
  92. package/dist/internals.js.gz +0 -0
  93. package/dist/internals.mjs +3 -3
  94. package/dist/internals.mjs.br +0 -0
  95. package/dist/internals.mjs.gz +0 -0
  96. package/dist/viewer/index.d.ts +139 -3
  97. package/dist/viewer/index.js +26 -26
  98. package/dist/viewer/index.js.br +0 -0
  99. package/dist/viewer/index.js.gz +0 -0
  100. package/dist/viewer/index.mjs +5 -5
  101. package/dist/viewer/index.mjs.br +0 -0
  102. package/dist/viewer/index.mjs.gz +0 -0
  103. package/package.json +2 -2
  104. package/dist/AiChatPanel-5JAQBLTU.mjs.br +0 -0
  105. package/dist/AiChatPanel-5JAQBLTU.mjs.gz +0 -0
  106. package/dist/AiChatPanel-C3E7UV7T.js.br +0 -0
  107. package/dist/AiChatPanel-C3E7UV7T.js.gz +0 -0
  108. package/dist/Area3DChartScene-KE434ERF.mjs.br +0 -0
  109. package/dist/Area3DChartScene-KE434ERF.mjs.gz +0 -0
  110. package/dist/Area3DChartScene-XY2PKRMA.js.br +0 -0
  111. package/dist/Area3DChartScene-XY2PKRMA.js.gz +0 -0
  112. package/dist/Bar3DChartScene-2KQABQZM.mjs.br +0 -0
  113. package/dist/Bar3DChartScene-2KQABQZM.mjs.gz +0 -0
  114. package/dist/Bar3DChartScene-YMADUUZN.js.br +0 -0
  115. package/dist/Bar3DChartScene-YMADUUZN.js.gz +0 -0
  116. package/dist/Line3DChartScene-AB7N6ORX.js.br +0 -0
  117. package/dist/Line3DChartScene-AB7N6ORX.js.gz +0 -0
  118. package/dist/Line3DChartScene-K3BSK6BB.mjs.br +0 -0
  119. package/dist/Line3DChartScene-K3BSK6BB.mjs.gz +0 -0
  120. package/dist/Model3DScene-NT5RRIB5.mjs.br +0 -0
  121. package/dist/Model3DScene-NT5RRIB5.mjs.gz +0 -0
  122. package/dist/Model3DScene-VSLGUWC7.js.br +0 -0
  123. package/dist/Model3DScene-VSLGUWC7.js.gz +0 -0
  124. package/dist/PieChart3DScene-6MUFRFYJ.js.br +0 -0
  125. package/dist/PieChart3DScene-6MUFRFYJ.js.gz +0 -0
  126. package/dist/PieChart3DScene-NFRBKII7.mjs.br +0 -0
  127. package/dist/PieChart3DScene-NFRBKII7.mjs.gz +0 -0
  128. package/dist/SurfaceChart3DScene-2UQOKVFB.js.br +0 -0
  129. package/dist/SurfaceChart3DScene-2UQOKVFB.js.gz +0 -0
  130. package/dist/SurfaceChart3DScene-UKIOTKJC.mjs.br +0 -0
  131. package/dist/SurfaceChart3DScene-UKIOTKJC.mjs.gz +0 -0
  132. package/dist/chunk-5WH6UVWC.mjs.br +0 -0
  133. package/dist/chunk-5WH6UVWC.mjs.gz +0 -0
  134. package/dist/chunk-ACVLIDUS.mjs.br +0 -0
  135. package/dist/chunk-ACVLIDUS.mjs.gz +0 -0
  136. package/dist/chunk-BZ6OM3H5.mjs.br +0 -0
  137. package/dist/chunk-BZ6OM3H5.mjs.gz +0 -0
  138. package/dist/chunk-GCOGKBK3.js.br +0 -0
  139. package/dist/chunk-GCOGKBK3.js.gz +0 -0
  140. package/dist/chunk-HMZA25W2.js.br +0 -0
  141. package/dist/chunk-HMZA25W2.js.gz +0 -0
  142. package/dist/chunk-K4DUVYZ7.js.br +0 -0
  143. package/dist/chunk-K4DUVYZ7.js.gz +0 -0
  144. package/dist/chunk-OABOL32L.js.br +0 -0
  145. package/dist/chunk-OABOL32L.js.gz +0 -0
  146. package/dist/chunk-SRAXNEJX.mjs.br +0 -0
  147. package/dist/chunk-SRAXNEJX.mjs.gz +0 -0
  148. package/dist/chunk-XBR7W47W.js.br +0 -0
  149. package/dist/chunk-XBR7W47W.js.gz +0 -0
  150. package/dist/chunk-Z3DEULRJ.mjs.br +0 -0
  151. package/dist/chunk-Z3DEULRJ.mjs.gz +0 -0
Binary file
Binary file
@@ -1,6 +1,6 @@
1
- import { cloneHistorySnapshot, MIN_ELEMENT_SIZE, ZOOM_TO_SELECTION_PADDING, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, UNGROUPED_SECTION_ID, DEFAULT_SECTION_GROUP_ID, DEFAULT_TABLE_ROWS, DEFAULT_TABLE_COLUMNS, executeMediaCommand, buildPdfFromImageData, buildNotesPdf, GRID_SIZE, DEFAULT_TEXT_FONT_SIZE } from './chunk-ACVLIDUS.mjs';
1
+ import { cloneHistorySnapshot, MIN_ELEMENT_SIZE, ZOOM_TO_SELECTION_PADDING, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, UNGROUPED_SECTION_ID, DEFAULT_SECTION_GROUP_ID, DEFAULT_TABLE_ROWS, DEFAULT_TABLE_COLUMNS, executeMediaCommand, buildPdfFromImageData, buildNotesPdf, GRID_SIZE, DEFAULT_TEXT_FONT_SIZE } from './chunk-BPWSJLLG.mjs';
2
+ import { DEFAULT_VIEWER_OPTIONS, TOOLBAR_TABS, computeVirtualRange, DEFAULT_VIRTUAL_OVERSCAN, createPresenceProjector, BROADCAST_THROTTLE_MS, createSyncGate, clearLocalAwareness, validateRoomId, createDepartureChannel, resolveTransportForServerUrl, isMixedContentBlocked, CONNECTION_TIMEOUT_MS, registerCollaborationTeardown, sanitizeColor, cloneTemplateElementsBySlideId, cloneSlide, createWheelStepBuffer, createViewerZoomStore, clampZoomScale, mapEditingWheel, PresentationAnimationController, 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, buildMorphAnimationRules, findInSlides, applyFindReplacements, createCollaborationLivePatcher, publishLiveInlineText, PptxHandler, collectMediaElements, collectImagePaths, collectTableCellImagePaths, applyTableCellImagePatches, collectTableStyleImagePaths, applyTableStyleImagePatches, partitionTemplateElements, resolveAuthoredCustomShowId, buildInitialGuides, EncryptedFileError, resolveAutosaveIntervalMs, shouldWriteAutosaveSnapshot, saveAutosaveSnapshot, autosaveSnapshotMark, updateMasterViewElement, isTemplateElementId, hasShapeProperties, hasTextProperties, getInlineEditorSelection, applyStyleToSelectedSegments, setPendingSelectionRestore, applyCaseTransformToSegments, transformTextCase, masterViewElements, replaceMasterViewElements, addSection, renameSection, deleteSection, moveSectionUp, moveSectionDown, moveSlidesToSection, normalizeColorsForCapture, preprocessCssForCapture, slideProgressPercent, slideStatusLabel, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, isExportAbortError, recordProgressPercent, downloadBlob, resolveImageResolutionScale, applyThemeToData, THEME_PRESETS, themeColorSchemesEqual, comparePresentation, applyAcceptSlide, applyAcceptAllSlides, collectUsedFonts, describeFontEmbedding, isMobileViewport, mayLeaveSlideShow, stopAllPersistentAudio, remapTextToSegments, guidePxToEmu, buildSaveSlides, embeddedFontSaveOptions, resolveSlideSizeSelection, saveDeckWithPassword, shouldProbeAutosaveRecovery, probeAutosaveRecovery, acceptAutosaveRecovery, discardAutosaveRecovery, shouldLoopContinuously, applyRehearsalTimings, copyFormatFromElement, applyFormatToElement, mapEditorKey, isEditorTextInputTarget, createViewerOptionsStore, readSlidesFromYDoc, shouldRoomSlidesReplaceLoad, reconcileSlidesInYDoc, LOCAL_SYNC_ORIGIN, observeYDocSlides, shouldAutoFollowBroadcaster, detectTouchDevice, detectOrientation, deriveViewportBreakpoints, createTouchGestureRecognizer, MAX_ZOOM_SCALE, MIN_ZOOM_SCALE, isKeyboardOpen, scopeLayoutOptionsToSlide, openPptxFile, readBackstageRecentFile, isActionHidden, resolveInlineEditAutoFitHeight, canInteractWithElement, filterInteractableIds, beginShapeAdjustment, buildElementClipboardPayload, savedPresentationFileName, exportDeckJson, groupElements, generateElementId, makeCloneId, ungroupElements, alignElements, distributeElements, bringForward, sendBackward, bringToFront, sendToBack, newTableElement, createDefaultChartElement, readViewportMetrics, computeKeyboardInset, mergeShapes, mapPresentationKey, lastShowSlideIndex, firstShowSlideIndex, mapPresentationWheel, openPendingPrintWindow, computeColorFilter, filterHiddenSlideIndices, computeSlideIndices, buildPrintDocument, finishPrintWindow, buildPrintHtmlDocument, buildOutlineHtml, buildSlidesHtml, buildNotesHtml, buildHandoutsHtml, createBlankSlide, makeSlideId, buildSlideTemplateSlide, templateSchemeFromTheme, buildThemeColorMap, reResolveSlideColors, computeEntranceAnimationDelay, createPresentationSessionId, resolveTransitionDurationMs, runPresentationAction, createPresenterTimer, createInitialPresentationSnapshot, mergePresentationSnapshot, resetPresenterTimer, presenterElapsed, stepPresenterZoom, togglePresenterTimer, addCommentToList, removeCommentFromList, editCommentInList, toggleCommentResolvedInList, replyToCommentInList, canvasToJpegData, downloadDataUrl, pickSupportedMimeType, WEBM_MIME_CANDIDATES, fpsToFrameIntervalMs, segmentFrameCount, encodeGif, computeGridSpacingPx, resolveShowSlideIndexes, groupSlidesBySection, masterViewPseudoSlide, resolveHistoryDepth, hasCopyableFormat, createBackstagePresentation, buildFieldSubstitutionContext, cloneElementForPaste, computeScrollDelta, getPresetShapeClipPath, svgPathToPolygons, polygonsToSvgPath, rerouteConnectorsForMovedElements, applyReroutedConnectors, SvgExporter, deleteTableColumn, rebuildTableStructureInRawXml, insertTableColumn, deleteTableRow, insertTableRow, updateCellTextStyleInRawXml, setCellText, updateCellTextInRawXml, splitCell, updateMergeAttrsInRawXml, mergeCells, isPpactionUrl, parsePpactionUrl, resolvePresentationAction, ACTION_BUTTON_PRESETS, elementActionToPptxAction, isUrlSafe, buildSmartArtPresetData, classifyMediaType, computeSnapToShape, publishLiveGeometry, getDraggedShapeAdjustments, computeMarqueeHitIds, mergeAdditiveSelection, shouldConfirmExternalHyperlink, safeOpenUrl, applyResize, snapBoxToGrid, applyMotionPathPreset } from './chunk-XIHK52SB.mjs';
2
3
  import { translationsEn } from './chunk-ARJE3V6V.mjs';
3
- import { DEFAULT_VIEWER_OPTIONS, TOOLBAR_TABS, computeVirtualRange, DEFAULT_VIRTUAL_OVERSCAN, createPresenceProjector, BROADCAST_THROTTLE_MS, createSyncGate, clearLocalAwareness, validateRoomId, createDepartureChannel, resolveTransportForServerUrl, isMixedContentBlocked, CONNECTION_TIMEOUT_MS, registerCollaborationTeardown, sanitizeColor, cloneTemplateElementsBySlideId, cloneSlide, createWheelStepBuffer, createViewerZoomStore, clampZoomScale, mapEditingWheel, PresentationAnimationController, 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, buildMorphAnimationRules, findInSlides, applyFindReplacements, createCollaborationLivePatcher, publishLiveInlineText, PptxHandler, collectMediaElements, collectImagePaths, collectTableCellImagePaths, applyTableCellImagePatches, collectTableStyleImagePaths, applyTableStyleImagePatches, partitionTemplateElements, resolveAuthoredCustomShowId, buildInitialGuides, EncryptedFileError, resolveAutosaveIntervalMs, shouldWriteAutosaveSnapshot, saveAutosaveSnapshot, autosaveSnapshotMark, updateMasterViewElement, isTemplateElementId, hasShapeProperties, hasTextProperties, getInlineEditorSelection, applyStyleToSelectedSegments, setPendingSelectionRestore, applyCaseTransformToSegments, transformTextCase, masterViewElements, replaceMasterViewElements, addSection, renameSection, deleteSection, moveSectionUp, moveSectionDown, moveSlidesToSection, normalizeColorsForCapture, preprocessCssForCapture, slideProgressPercent, slideStatusLabel, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, isExportAbortError, recordProgressPercent, downloadBlob, resolveImageResolutionScale, applyThemeToData, THEME_PRESETS, themeColorSchemesEqual, comparePresentation, applyAcceptSlide, applyAcceptAllSlides, collectUsedFonts, describeFontEmbedding, isMobileViewport, mayLeaveSlideShow, stopAllPersistentAudio, remapTextToSegments, guidePxToEmu, buildSaveSlides, embeddedFontSaveOptions, resolveSlideSizeSelection, saveDeckWithPassword, shouldProbeAutosaveRecovery, probeAutosaveRecovery, acceptAutosaveRecovery, discardAutosaveRecovery, shouldLoopContinuously, applyRehearsalTimings, copyFormatFromElement, applyFormatToElement, mapEditorKey, isEditorTextInputTarget, createViewerOptionsStore, readSlidesFromYDoc, shouldRoomSlidesReplaceLoad, reconcileSlidesInYDoc, LOCAL_SYNC_ORIGIN, observeYDocSlides, shouldAutoFollowBroadcaster, detectTouchDevice, detectOrientation, deriveViewportBreakpoints, createTouchGestureRecognizer, MAX_ZOOM_SCALE, MIN_ZOOM_SCALE, isKeyboardOpen, scopeLayoutOptionsToSlide, openPptxFile, readBackstageRecentFile, isActionHidden, resolveInlineEditAutoFitHeight, canInteractWithElement, filterInteractableIds, beginShapeAdjustment, buildElementClipboardPayload, savedPresentationFileName, exportDeckJson, groupElements, generateElementId, makeCloneId, ungroupElements, alignElements, distributeElements, bringForward, sendBackward, bringToFront, sendToBack, newTableElement, createDefaultChartElement, readViewportMetrics, computeKeyboardInset, mergeShapes, mapPresentationKey, lastShowSlideIndex, firstShowSlideIndex, mapPresentationWheel, openPendingPrintWindow, computeColorFilter, filterHiddenSlideIndices, computeSlideIndices, buildPrintDocument, finishPrintWindow, buildPrintHtmlDocument, buildOutlineHtml, buildSlidesHtml, buildNotesHtml, buildHandoutsHtml, createBlankSlide, makeSlideId, buildSlideTemplateSlide, templateSchemeFromTheme, buildThemeColorMap, reResolveSlideColors, computeEntranceAnimationDelay, createPresentationSessionId, resolveTransitionDurationMs, runPresentationAction, createPresenterTimer, createInitialPresentationSnapshot, mergePresentationSnapshot, resetPresenterTimer, presenterElapsed, stepPresenterZoom, togglePresenterTimer, addCommentToList, removeCommentFromList, editCommentInList, toggleCommentResolvedInList, replyToCommentInList, canvasToJpegData, downloadDataUrl, pickSupportedMimeType, WEBM_MIME_CANDIDATES, fpsToFrameIntervalMs, segmentFrameCount, encodeGif, computeGridSpacingPx, resolveShowSlideIndexes, groupSlidesBySection, masterViewPseudoSlide, resolveHistoryDepth, hasCopyableFormat, createBackstagePresentation, buildFieldSubstitutionContext, cloneElementForPaste, computeScrollDelta, getPresetShapeClipPath, svgPathToPolygons, polygonsToSvgPath, rerouteConnectorsForMovedElements, applyReroutedConnectors, SvgExporter, deleteTableColumn, rebuildTableStructureInRawXml, insertTableColumn, deleteTableRow, insertTableRow, updateCellTextStyleInRawXml, setCellText, updateCellTextInRawXml, splitCell, updateMergeAttrsInRawXml, mergeCells, isPpactionUrl, parsePpactionUrl, resolvePresentationAction, ACTION_BUTTON_PRESETS, elementActionToPptxAction, isUrlSafe, buildSmartArtPresetData, classifyMediaType, computeSnapToShape, publishLiveGeometry, getDraggedShapeAdjustments, computeMarqueeHitIds, mergeAdditiveSelection, shouldConfirmExternalHyperlink, safeOpenUrl, applyResize, snapBoxToGrid, applyMotionPathPreset } from './chunk-SRAXNEJX.mjs';
4
4
  import { createContext, useRef, useState, useEffect, useCallback, useMemo, useLayoutEffect, useContext, useImperativeHandle, useSyncExternalStore } from 'react';
5
5
  import { useTranslation } from 'react-i18next';
6
6
 
@@ -1030,6 +1030,77 @@ function applyAnimationGroupSteps(group, onPlayActionSound, setPresentationEleme
1030
1030
  presentationTimersRef.current.push(timer);
1031
1031
  }
1032
1032
  }
1033
+ function shouldSeekAnimationGroup(group, endAtMs, nowMs) {
1034
+ return group?.seqNextAction === "seek" && nowMs < endAtMs;
1035
+ }
1036
+ function finishDomAnimationsForGroup(group, root = document) {
1037
+ const targetIds = new Set(
1038
+ group.steps.filter((step) => !step.command).map((step) => step.elementId)
1039
+ );
1040
+ if (targetIds.size === 0) {
1041
+ return 0;
1042
+ }
1043
+ const activeAnimations = /* @__PURE__ */ new Set();
1044
+ const candidates = root.querySelectorAll(
1045
+ '[data-element-id], [data-anim-id], [data-pptx-animation-layer="background"]'
1046
+ );
1047
+ for (const element of candidates) {
1048
+ let animationElementId = element.dataset.animId ?? element.dataset.elementId;
1049
+ if (element.dataset.pptxAnimationLayer === "background") {
1050
+ const hostId = element.closest("[data-element-id]")?.dataset.elementId;
1051
+ animationElementId = hostId ? `${hostId}::pptx-bg` : void 0;
1052
+ }
1053
+ if (!animationElementId || !targetIds.has(animationElementId)) {
1054
+ continue;
1055
+ }
1056
+ if (typeof element.getAnimations !== "function") {
1057
+ continue;
1058
+ }
1059
+ for (const animation of element.getAnimations()) {
1060
+ activeAnimations.add(animation);
1061
+ }
1062
+ }
1063
+ let finishedCount = 0;
1064
+ for (const animation of activeAnimations) {
1065
+ const iterations = animation.effect?.getTiming().iterations;
1066
+ if (animation.playState === "finished" || animation.playState === "idle") {
1067
+ continue;
1068
+ }
1069
+ if (iterations === Infinity) {
1070
+ continue;
1071
+ }
1072
+ try {
1073
+ animation.finish();
1074
+ finishedCount += 1;
1075
+ } catch {
1076
+ }
1077
+ }
1078
+ return finishedCount;
1079
+ }
1080
+ function finishAnimationGroupSteps(group, setPresentationElementStates, completedStates) {
1081
+ setPresentationElementStates((previousStates) => {
1082
+ const nextStates = new Map(previousStates);
1083
+ for (const step of group.steps) {
1084
+ if (step.command) {
1085
+ continue;
1086
+ }
1087
+ const currentState = nextStates.get(step.elementId) ?? {
1088
+ visible: true,
1089
+ cssAnimation: void 0
1090
+ };
1091
+ const holdsAnimatedPaint = step.holdEndState && step.colorTargets !== void 0 && step.colorTargets.length > 0;
1092
+ nextStates.set(step.elementId, {
1093
+ ...currentState,
1094
+ visible: step.presetClass !== "exit" && !step.hideAfterEffect,
1095
+ cssAnimation: step.holdEndState ? step.cssAnimation : void 0,
1096
+ build: completedStates?.get(step.elementId)?.build ?? currentState.build,
1097
+ animatesFill: holdsAnimatedPaint && step.colorTargets?.includes("fill") ? true : void 0,
1098
+ animatesStroke: holdsAnimatedPaint && step.colorTargets?.includes("stroke") ? true : void 0
1099
+ });
1100
+ }
1101
+ return nextStates;
1102
+ });
1103
+ }
1033
1104
 
1034
1105
  // src/viewer/hooks/presentation-mode/build-playback.ts
1035
1106
  function cancelBuildReveal(handle) {
@@ -1092,6 +1163,7 @@ function scheduleOpeningAutoPlayGroup(controller, deps) {
1092
1163
  deps.setPresentationElementStates,
1093
1164
  deps.presentationTimersRef
1094
1165
  );
1166
+ deps.markAnimationGroupActive(group);
1095
1167
  deps.startBuildReveal(controller, group);
1096
1168
  deps.scheduleAutoAdvanceChain(controller);
1097
1169
  }, firstGroup.autoAdvanceDelayMs ?? 0);
@@ -1138,6 +1210,8 @@ function useAnimationPlayback(input) {
1138
1210
  const presentationTimersRef = useRef([]);
1139
1211
  const controllerRef = useRef(null);
1140
1212
  const buildRafRef = useRef(null);
1213
+ const activeAnimationGroupRef = useRef(null);
1214
+ const activeAnimationEndAtRef = useRef(0);
1141
1215
  const seededCompletedRef = useRef(false);
1142
1216
  const lastSeedCompletedRef = useRef(false);
1143
1217
  const startBuildReveal = useCallback(
@@ -1162,6 +1236,12 @@ function useAnimationPlayback(input) {
1162
1236
  });
1163
1237
  presentationTimersRef.current = [];
1164
1238
  cancelBuildReveal(buildRafRef);
1239
+ activeAnimationGroupRef.current = null;
1240
+ activeAnimationEndAtRef.current = 0;
1241
+ }, []);
1242
+ const markAnimationGroupActive = useCallback((group) => {
1243
+ activeAnimationGroupRef.current = group;
1244
+ activeAnimationEndAtRef.current = performance.now() + Math.max(0, group.totalDurationMs);
1165
1245
  }, []);
1166
1246
  const scheduleAutoAdvanceChain = useCallback(
1167
1247
  (controller) => {
@@ -1186,6 +1266,7 @@ function useAnimationPlayback(input) {
1186
1266
  setPresentationElementStates,
1187
1267
  presentationTimersRef
1188
1268
  );
1269
+ markAnimationGroupActive(group);
1189
1270
  startBuildReveal(controller, group);
1190
1271
  scheduleAutoAdvanceChain(controller);
1191
1272
  },
@@ -1199,7 +1280,7 @@ function useAnimationPlayback(input) {
1199
1280
  // resolves correctly because the setTimeout callback only reads the binding
1200
1281
  // once the outer const has been assigned.
1201
1282
  // oxlint-disable-next-line react/memo-dependencies -- see comment above
1202
- [onPlayActionSound, startBuildReveal]
1283
+ [markAnimationGroupActive, onPlayActionSound, startBuildReveal]
1203
1284
  );
1204
1285
  const resetSlideTimeline = useCallback(
1205
1286
  (slideIndex) => {
@@ -1227,6 +1308,16 @@ function useAnimationPlayback(input) {
1227
1308
  return false;
1228
1309
  }
1229
1310
  const controller = controllerRef.current;
1311
+ const activeGroup = activeAnimationGroupRef.current;
1312
+ if (controller && controller.hasMoreSteps() && shouldSeekAnimationGroup(activeGroup, activeAnimationEndAtRef.current, performance.now())) {
1313
+ finishDomAnimationsForGroup(activeGroup);
1314
+ const buildIds = PresentationAnimationController.collectBuildStepIds(activeGroup);
1315
+ const completedStates = controller.computeStatesFor(buildIds);
1316
+ clearPresentationTimers();
1317
+ finishAnimationGroupSteps(activeGroup, setPresentationElementStates, completedStates);
1318
+ scheduleAutoAdvanceChain(controller);
1319
+ return true;
1320
+ }
1230
1321
  if (!controller || !controller.hasMoreSteps()) {
1231
1322
  return false;
1232
1323
  }
@@ -1240,10 +1331,18 @@ function useAnimationPlayback(input) {
1240
1331
  setPresentationElementStates,
1241
1332
  presentationTimersRef
1242
1333
  );
1334
+ markAnimationGroupActive(group);
1243
1335
  startBuildReveal(controller, group);
1244
1336
  scheduleAutoAdvanceChain(controller);
1245
1337
  return true;
1246
- }, [animationsEnabled, onPlayActionSound, scheduleAutoAdvanceChain, startBuildReveal]);
1338
+ }, [
1339
+ animationsEnabled,
1340
+ clearPresentationTimers,
1341
+ markAnimationGroupActive,
1342
+ onPlayActionSound,
1343
+ scheduleAutoAdvanceChain,
1344
+ startBuildReveal
1345
+ ]);
1247
1346
  const handleInteractiveShapeClick = useCallback(
1248
1347
  (shapeId) => {
1249
1348
  const controller = controllerRef.current;
@@ -1339,12 +1438,20 @@ function useAnimationPlayback(input) {
1339
1438
  setPresentationElementStates,
1340
1439
  presentationTimersRef,
1341
1440
  startBuildReveal,
1342
- scheduleAutoAdvanceChain
1441
+ scheduleAutoAdvanceChain,
1442
+ markAnimationGroupActive
1343
1443
  });
1344
1444
  }
1345
1445
  scheduleEntranceAnimationTimers(slide, setPresentationAnimations, presentationTimersRef);
1346
1446
  },
1347
- [animationsEnabled, slides, onPlayActionSound, scheduleAutoAdvanceChain, startBuildReveal]
1447
+ [
1448
+ animationsEnabled,
1449
+ slides,
1450
+ onPlayActionSound,
1451
+ markAnimationGroupActive,
1452
+ scheduleAutoAdvanceChain,
1453
+ startBuildReveal
1454
+ ]
1348
1455
  );
1349
1456
  const runPresentationEntranceAnimations = useCallback(
1350
1457
  (slideIndex, options) => {
Binary file
Binary file
@@ -1,5 +1,5 @@
1
+ import { SHAPE_PRESET_DEFS, VIEWER_SHORTCUT_REFERENCE, getAnimationInitialStyle, cloneHistorySnapshot, hasShapeProperties, getImageFitStyle, getComputedFillStyle, isImageLikeElement, getImageTilingStyle, runMediaCommand, findMediaElementByElementId, mediaPlaybackAttributes, buildTextBlockStyle, hasTextProperties, toCssWritingMode, toCssTextOrientation, toCssVerticalDirection, buildTextBodyLayoutStyle, buildTextBody3DSceneStyle, buildParagraphs, colorWithOpacity, normalizeHexColor, build3DExtrusionData, getComputedEffectStyle, getComputedStrokeStyle, getAnimationColorBaseStyle, isStrokeOnlyPresetElement, resolveShapeGeometry, normalizeStrokeDashType, getSvgStrokeDasharray, buildSvgGradientDef, buildStrokeOutline, getPresetShapeVectorGeometry, isWedgeCalloutPresetShape, svgGradientFillRef, isCalloutShape, getCalloutLeaderLineGeometry, buildCalloutLeaderLineSvgPath, getCalloutViewBoxBounds, svgLineCap, getCompoundLineOffsets, getCompoundLineWidths, computeSelectionRect, DEFAULT_FONT_FAMILY, cellStyleToCss, rectToCells, isCellInRect, tableContainerCss, buildChartViewModel, resolveChartKind, chartPreserveAspectRatio, buildNotesPdfBytes, buildSlidesPdfBytes, buildPreviewAnimation, buildMotionPathPreview, mediaFallbackVisual, registerPersistentAudio, resolveAutoFitFontScale, resolveFontKerning, getSubstituteFontFamily, parsePanoseString, resolveScriptFontSet, hasDistinctScriptFonts, nestedTextDecorationStyle, pieceLetterSpacing, resolveMetricTrackingPx, hollowTextFillStyle, buildTabContext, TEXT_BUILD_ID_SEP, buildTextBuildSpec, textBuildSpanStyle, apply3dEffects, clampUnitInterval, customGeometryPathsToSvgSubpaths, buildSubpathPaints, computeColumnBoundaries, getTableCellBandStyle, parseDrawingColor, parseDrawingColorOpacity, getCellDiagonalBorders, cellRunStyle, getChartStylePalette, computeChartLegendLayout, mediaFallbackIcon, mediaFallbackLabelKey, MEDIA_CHROME_ATTRIBUTE, convertOmmlToMathMl, sanitizeMathMl, tableCellCss, computeResizedColumnWidths, computeResizedRowHeight, DEFAULT_ROW_HEIGHT, ooxmlGradientAngleToCssDegrees, buildRectPathGradient, buildRunTabLines, chartPartToAttrs, splitRunForMetrics, splitRunByScriptFont } from './chunk-XIHK52SB.mjs';
1
2
  import { translationsEn } from './chunk-ARJE3V6V.mjs';
2
- import { SHAPE_PRESET_DEFS, VIEWER_SHORTCUT_REFERENCE, getAnimationInitialStyle, cloneHistorySnapshot, hasShapeProperties, getImageFitStyle, isImageLikeElement, getImageTilingStyle, runMediaCommand, findMediaElementByElementId, mediaPlaybackAttributes, buildTextBlockStyle, hasTextProperties, toCssWritingMode, toCssTextOrientation, toCssVerticalDirection, buildTextBodyLayoutStyle, buildTextBody3DSceneStyle, buildParagraphs, colorWithOpacity, normalizeHexColor, build3DExtrusionData, getComputedFillStyle, getComputedEffectStyle, getComputedStrokeStyle, isStrokeOnlyPresetElement, resolveShapeGeometry, normalizeStrokeDashType, getSvgStrokeDasharray, buildSvgGradientDef, isCalloutShape, getCalloutLeaderLineGeometry, buildCalloutLeaderLineSvgPath, getCalloutViewBoxBounds, svgLineCap, getCompoundLineOffsets, getCompoundLineWidths, computeSelectionRect, DEFAULT_FONT_FAMILY, cellStyleToCss, rectToCells, isCellInRect, tableContainerCss, buildChartViewModel, resolveChartKind, chartPreserveAspectRatio, buildNotesPdfBytes, buildSlidesPdfBytes, buildPreviewAnimation, buildMotionPathPreview, getRoundRectRadiusPx2, getResolvedShapeClipPath, mediaFallbackVisual, registerPersistentAudio, resolveAutoFitFontScale, resolveFontKerning, getSubstituteFontFamily, parsePanoseString, resolveScriptFontSet, hasDistinctScriptFonts, nestedTextDecorationStyle, pieceLetterSpacing, resolveMetricTrackingPx, hollowTextFillStyle, buildTabContext, TEXT_BUILD_ID_SEP, buildTextBuildSpec, textBuildSpanStyle, apply3dEffects, clampUnitInterval, customGeometryPathsToSvgSubpaths, svgGradientFillRef, buildSubpathPaints, computeColumnBoundaries, getTableCellBandStyle, parseDrawingColor, parseDrawingColorOpacity, getCellDiagonalBorders, cellRunStyle, getChartStylePalette, computeChartLegendLayout, mediaFallbackIcon, mediaFallbackLabelKey, MEDIA_CHROME_ATTRIBUTE, convertOmmlToMathMl, sanitizeMathMl, tableCellCss, computeResizedColumnWidths, computeResizedRowHeight, DEFAULT_ROW_HEIGHT, ooxmlGradientAngleToCssDegrees, buildRectPathGradient, buildRunTabLines, chartPartToAttrs, splitRunForMetrics, splitRunByScriptFont } from './chunk-SRAXNEJX.mjs';
3
3
  import { clsx } from 'clsx';
4
4
  import { twMerge } from 'tailwind-merge';
5
5
  import React6, { useRef, useState, useEffect, useCallback, useMemo, useLayoutEffect } from 'react';
@@ -270,34 +270,40 @@ function getImageMaskStyle(element) {
270
270
  if (!hasShapeProperties(element)) {
271
271
  return void 0;
272
272
  }
273
- const shapeType = element.shapeType;
274
- if (!shapeType) {
275
- return void 0;
276
- }
277
- const normalized = shapeType.toLowerCase();
278
- if (normalized === "roundrect" || normalized === "round1rect" || normalized === "round2samerect" || normalized === "round2diagrect" || normalized === "sniproundrect" || normalized === "snip1rect" || normalized === "snip2diagrect") {
279
- const radiusPx = getRoundRectRadiusPx2(element);
280
- if (radiusPx <= 0.01) {
281
- return void 0;
282
- }
283
- return { borderRadius: radiusPx };
284
- }
285
- if (normalized === "ellipse" || normalized === "oval") {
286
- return { borderRadius: "50%" };
287
- }
288
- if (normalized === "can" || normalized === "cylinder") {
289
- return { borderRadius: "48% / 12%" };
290
- }
291
- const clipPath = getResolvedShapeClipPath(element);
292
- if (!clipPath) {
293
- return void 0;
273
+ const geometry = resolveShapeGeometry(element);
274
+ if (geometry.kind === "borderRadius") {
275
+ return { borderRadius: geometry.radius };
294
276
  }
295
- return { clipPath };
277
+ return geometry.kind === "clipPath" ? { clipPath: geometry.clipPath } : void 0;
296
278
  }
297
279
  function getImageRenderStyle(element) {
280
+ const fit = getImageFitStyle(element);
298
281
  return {
299
- ...getImageMaskStyle(element) || {},
300
- ...getImageFitStyle(element)
282
+ // A translated/scaled crop must be masked by its stationary wrapper, not
283
+ // by the moving bitmap itself.
284
+ ...fit.transform ? {} : getImageMaskStyle(element) || {},
285
+ ...fit
286
+ };
287
+ }
288
+ function getImageSurfaceMaskStyle(element) {
289
+ const mask = getImageMaskStyle(element);
290
+ return {
291
+ overflow: "hidden",
292
+ borderRadius: mask?.borderRadius,
293
+ clipPath: mask?.clipPath ?? getCropShapeClipPath(element)
294
+ };
295
+ }
296
+ function getImageSurfaceStyle(element) {
297
+ const fill = hasShapeProperties(element) ? getComputedFillStyle(element) : void 0;
298
+ return {
299
+ position: "absolute",
300
+ inset: 0,
301
+ ...getImageSurfaceMaskStyle(element),
302
+ backgroundColor: fill?.backgroundColor ?? "transparent",
303
+ backgroundImage: fill?.backgroundImage,
304
+ backgroundRepeat: fill?.backgroundRepeat,
305
+ backgroundSize: fill?.backgroundSize,
306
+ backgroundPosition: fill?.backgroundPosition
301
307
  };
302
308
  }
303
309
  var CROP_SHAPE_CLIP_PATHS = {
@@ -461,7 +467,8 @@ function VideoWithMetadata({
461
467
  "video",
462
468
  {
463
469
  ref: mediaRef,
464
- className: `w-full h-full pointer-events-auto ${isFullScreen ? "object-cover" : "object-contain"}`,
470
+ className: "w-full h-full pointer-events-auto",
471
+ style: isFullScreen ? { objectFit: "cover" } : getImageFitStyle(element),
465
472
  controls: showTransport,
466
473
  preload: "metadata",
467
474
  playsInline: true,
@@ -858,7 +865,8 @@ function renderMediaFallback({
858
865
  {
859
866
  src: posterUrl,
860
867
  alt: visual.dimPoster ? translationsEn["pptx.media.posterAlt"] : translationsEn["pptx.media.videoPosterAlt"],
861
- className: `w-full h-full object-contain${visual.dimPoster ? " opacity-50" : ""}`
868
+ className: `w-full h-full${visual.dimPoster ? " opacity-50" : ""}`,
869
+ style: getImageFitStyle(element)
862
870
  }
863
871
  ),
864
872
  /* @__PURE__ */ jsx(Badge, { visual, element })
@@ -971,6 +979,7 @@ function getTextLayoutStyle(element) {
971
979
  const textOrientation = toCssTextOrientation(element.textStyle?.textDirection);
972
980
  const verticalDirection = toCssVerticalDirection(element.textStyle?.textDirection);
973
981
  const textWrapNone = element.textStyle?.textWrap === "none";
982
+ const shapeAutoFitTextBox = element.textStyle?.autoFitMode === "shrink" && (element.type === "text" || element.locks?.txBox === true);
974
983
  const hasParagraphIndents = hasTextProperties(element) && element.paragraphIndents && element.paragraphIndents.length > 0;
975
984
  const paragraphMarginLeft = element.textStyle?.paragraphMarginLeft;
976
985
  const paragraphIndent = element.textStyle?.paragraphIndent;
@@ -990,6 +999,15 @@ function getTextLayoutStyle(element) {
990
999
  direction: verticalDirection,
991
1000
  marginLeft,
992
1001
  textIndent,
1002
+ ...shapeAutoFitTextBox ? {
1003
+ width: textWrapNone ? "max-content" : "100%",
1004
+ minWidth: "100%",
1005
+ height: "max-content",
1006
+ minHeight: "100%",
1007
+ whiteSpace: "pre-wrap",
1008
+ wordBreak: textWrapNone ? "normal" : "break-word",
1009
+ overflow: "visible"
1010
+ } : {},
993
1011
  ...textWrapNone ? {
994
1012
  whiteSpace: "nowrap",
995
1013
  overflow: "visible"
@@ -1805,6 +1823,9 @@ function apply3dEffects2(base, scene3d, shape3d, fillColorFallback) {
1805
1823
  function rendersCustomVectorPath(element) {
1806
1824
  return (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;
1807
1825
  }
1826
+ function rendersWedgeCalloutVector(element) {
1827
+ return element.type === "shape" && isWedgeCalloutPresetShape(element.shapeType);
1828
+ }
1808
1829
  function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _strokeColor, animatesFill, animatesStroke, parentGroupFill) {
1809
1830
  if (!hasShapeProperties(element)) {
1810
1831
  return {};
@@ -1849,8 +1870,21 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
1849
1870
  strokeMiterlimit: stroke.strokeMiterlimit,
1850
1871
  strokeLinecap: stroke.strokeLinecap
1851
1872
  };
1873
+ Object.assign(
1874
+ base,
1875
+ getAnimationColorBaseStyle(element, {
1876
+ animatesFill,
1877
+ animatesStroke,
1878
+ parentGroupFill
1879
+ })
1880
+ );
1881
+ if (element.type === "image" || element.type === "picture") {
1882
+ base.borderWidth = 0;
1883
+ base.borderColor = void 0;
1884
+ base.borderStyle = void 0;
1885
+ }
1852
1886
  apply3dEffects2(base, ss?.scene3d, ss?.shape3d, ss?.fillColor ?? fillColor);
1853
- if (rendersCustomVectorPath(element) || isStrokeOnlyPresetElement(element)) {
1887
+ if (rendersCustomVectorPath(element) || rendersWedgeCalloutVector(element) || isStrokeOnlyPresetElement(element)) {
1854
1888
  base.backgroundColor = "transparent";
1855
1889
  base.backgroundImage = void 0;
1856
1890
  base.borderWidth = void 0;
@@ -1861,6 +1895,9 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
1861
1895
  base.backgroundColor = void 0;
1862
1896
  base.backgroundImage = void 0;
1863
1897
  }
1898
+ if (rendersWedgeCalloutVector(element)) {
1899
+ return base;
1900
+ }
1864
1901
  const geometry = resolveShapeGeometry(element);
1865
1902
  switch (geometry.kind) {
1866
1903
  case "bare":
@@ -2141,6 +2178,23 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
2141
2178
  }
2142
2179
  );
2143
2180
  }
2181
+ function renderGradientDefs(gradient) {
2182
+ if (!gradient) {
2183
+ return null;
2184
+ }
2185
+ const stops = gradient.stops.map((stop, index) => /* @__PURE__ */ jsx("stop", { offset: stop.offset, stopColor: stop.color, stopOpacity: stop.opacity }, index));
2186
+ return /* @__PURE__ */ jsx("defs", { children: gradient.kind === "radial" ? /* @__PURE__ */ jsx("radialGradient", { id: gradient.id, cx: gradient.cx, cy: gradient.cy, r: gradient.r, children: stops }) : /* @__PURE__ */ jsx(
2187
+ "linearGradient",
2188
+ {
2189
+ id: gradient.id,
2190
+ x1: gradient.x1,
2191
+ y1: gradient.y1,
2192
+ x2: gradient.x2,
2193
+ y2: gradient.y2,
2194
+ children: stops
2195
+ }
2196
+ ) });
2197
+ }
2144
2198
  function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor, animatesFill, animatesStroke) {
2145
2199
  if (!hasShapeProperties(element)) {
2146
2200
  return null;
@@ -2233,6 +2287,81 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
2233
2287
  buildSvgGradientDef(element.shapeStyle, element.id)
2234
2288
  );
2235
2289
  }
2290
+ if ((element.type === "image" || element.type === "picture") && strokeWidth > 0 && !buildStrokeOutline(element)) {
2291
+ const width = Math.max(element.width, 1);
2292
+ const height = Math.max(element.height, 1);
2293
+ const geometry = getPresetShapeVectorGeometry(
2294
+ element.shapeType || "rect",
2295
+ width,
2296
+ height,
2297
+ element.shapeAdjustments
2298
+ );
2299
+ if (geometry) {
2300
+ return /* @__PURE__ */ jsx(
2301
+ "svg",
2302
+ {
2303
+ viewBox: `${geometry.minX} ${geometry.minY} ${geometry.viewWidth} ${geometry.viewHeight}`,
2304
+ className: "w-full h-full pointer-events-none",
2305
+ preserveAspectRatio: "none",
2306
+ children: /* @__PURE__ */ jsx(
2307
+ "path",
2308
+ {
2309
+ d: geometry.d,
2310
+ fill: "none",
2311
+ stroke: strokePaint,
2312
+ strokeWidth: strokeWidth * 2,
2313
+ strokeDasharray: dashArray,
2314
+ vectorEffect: "non-scaling-stroke"
2315
+ }
2316
+ )
2317
+ }
2318
+ );
2319
+ }
2320
+ }
2321
+ if (element.type === "shape" && isWedgeCalloutPresetShape(element.shapeType)) {
2322
+ const width = Math.max(element.width, 1);
2323
+ const height = Math.max(element.height, 1);
2324
+ const geometry = getPresetShapeVectorGeometry(
2325
+ element.shapeType,
2326
+ width,
2327
+ height,
2328
+ element.shapeAdjustments
2329
+ );
2330
+ if (geometry) {
2331
+ const gradient = buildSvgGradientDef(element.shapeStyle, element.id);
2332
+ const gradientPaint = gradient ? svgGradientFillRef(gradient) : void 0;
2333
+ return /* @__PURE__ */ jsxs(
2334
+ "svg",
2335
+ {
2336
+ viewBox: `${geometry.minX} ${geometry.minY} ${geometry.viewWidth} ${geometry.viewHeight}`,
2337
+ className: "pointer-events-none",
2338
+ preserveAspectRatio: "none",
2339
+ style: {
2340
+ position: "absolute",
2341
+ left: geometry.minX,
2342
+ top: geometry.minY,
2343
+ width: geometry.viewWidth,
2344
+ height: geometry.viewHeight,
2345
+ overflow: "visible"
2346
+ },
2347
+ children: [
2348
+ animatesFill ? null : renderGradientDefs(gradient),
2349
+ /* @__PURE__ */ jsx(
2350
+ "path",
2351
+ {
2352
+ d: geometry.d,
2353
+ fill: hasFill ? animatesFill ? "inherit" : gradientPaint ?? fillPaint : "none",
2354
+ stroke: strokeWidth > 0 ? strokePaint : "none",
2355
+ strokeWidth,
2356
+ strokeDasharray: dashArray,
2357
+ vectorEffect: "non-scaling-stroke"
2358
+ }
2359
+ )
2360
+ ]
2361
+ }
2362
+ );
2363
+ }
2364
+ }
2236
2365
  if (isCalloutShape(normalizedType)) {
2237
2366
  const width = Math.max(element.width, 1);
2238
2367
  const height = Math.max(element.height, 1);
@@ -3835,4 +3964,4 @@ function stopPreviewAnimation() {
3835
3964
  activePreview = null;
3836
3965
  }
3837
3966
 
3838
- 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_SECTION_GROUP_ID, DEFAULT_STROKE_COLOR, DEFAULT_TABLE_COLUMNS, DEFAULT_TABLE_ROWS, DEFAULT_TEXT_COLOR, DEFAULT_TEXT_FONT_SIZE, GRID_SIZE, HYPERLINK_COLOR, MIN_ELEMENT_SIZE, SHAPE_PRESETS, SHORTCUT_REFERENCE_ITEMS, SLIDE_NAV_THUMBNAIL_WIDTH, STROKE_DASH_OPTIONS, THEME_COLOR_SWATCHES, TOOLBAR_SECTIONS, UNGROUPED_SECTION_ID, ZOOM_TO_SELECTION_PADDING, build3DExtrusionData2 as build3DExtrusionData, buildLineGlowFilter, buildLineShadowCss, buildNotesPdf, buildPdfFromImageData, buildReactChartViewModel, buildTextBody3DSceneStyle2 as buildTextBody3DSceneStyle, cloneHistorySnapshot2 as cloneHistorySnapshot, cn, executeMediaCommand, getAnimationInitialStyle2 as getAnimationInitialStyle, getConnectorPathGeometry, getCropShapeClipPath, getDuotoneColors, getImageRenderStyle, getImageTilingStyle2 as getImageTilingStyle, getShapeVisualStyle, getTextLayoutStyle, getTextStyleForElement, getTextWarpStyle, hasDagDuotoneEffect, isConnectorOrLineElement, renderChartElement, renderConnectorMarker, renderDagDuotoneSvgFilter, renderMediaElement, renderTableElement, renderTextSegments, renderVectorShape, shouldRenderFallbackLabel, startMotionPathPreview, startPreviewAnimation, stopPreviewAnimation };
3967
+ 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_SECTION_GROUP_ID, DEFAULT_STROKE_COLOR, DEFAULT_TABLE_COLUMNS, DEFAULT_TABLE_ROWS, DEFAULT_TEXT_COLOR, DEFAULT_TEXT_FONT_SIZE, GRID_SIZE, HYPERLINK_COLOR, MIN_ELEMENT_SIZE, SHAPE_PRESETS, SHORTCUT_REFERENCE_ITEMS, SLIDE_NAV_THUMBNAIL_WIDTH, STROKE_DASH_OPTIONS, THEME_COLOR_SWATCHES, TOOLBAR_SECTIONS, UNGROUPED_SECTION_ID, ZOOM_TO_SELECTION_PADDING, build3DExtrusionData2 as build3DExtrusionData, buildLineGlowFilter, buildLineShadowCss, buildNotesPdf, buildPdfFromImageData, buildReactChartViewModel, buildTextBody3DSceneStyle2 as buildTextBody3DSceneStyle, cloneHistorySnapshot2 as cloneHistorySnapshot, cn, executeMediaCommand, getAnimationInitialStyle2 as getAnimationInitialStyle, getConnectorPathGeometry, getCropShapeClipPath, getDuotoneColors, getImageRenderStyle, getImageSurfaceMaskStyle, getImageSurfaceStyle, getImageTilingStyle2 as getImageTilingStyle, getShapeVisualStyle, getTextLayoutStyle, getTextStyleForElement, getTextWarpStyle, hasDagDuotoneEffect, isConnectorOrLineElement, renderChartElement, renderConnectorMarker, renderDagDuotoneSvgFilter, renderMediaElement, renderTableElement, renderTextSegments, renderVectorShape, shouldRenderFallbackLabel, startMotionPathPreview, startPreviewAnimation, stopPreviewAnimation };
Binary file
Binary file
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkHMZA25W2_js = require('./chunk-HMZA25W2.js');
3
+ var chunkYDEEINER_js = require('./chunk-YDEEINER.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 chunkHMZA25W2_js.PptxMarkdownConverter(
14882
+ const converter = new chunkYDEEINER_js.PptxMarkdownConverter(
14883
14883
  "",
14884
14884
  {
14885
14885
  sourceName: meta3.title ?? "deck.pptx",
@@ -15471,7 +15471,7 @@ var getTheme = (ctx) => {
15471
15471
  name: theme?.name,
15472
15472
  colorScheme: theme?.colorScheme,
15473
15473
  fontScheme: theme?.fontScheme,
15474
- availablePresets: Object.keys(chunkHMZA25W2_js.ThemePresets)
15474
+ availablePresets: Object.keys(chunkYDEEINER_js.ThemePresets)
15475
15475
  };
15476
15476
  };
15477
15477
  var readExecutors = {
Binary file
Binary file