pptx-react-viewer 3.11.0 → 3.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/dist/{AiChatPanel-A3ZMMVUA.js → AiChatPanel-E53JJRZX.js} +25 -25
  3. package/dist/AiChatPanel-E53JJRZX.js.br +0 -0
  4. package/dist/AiChatPanel-E53JJRZX.js.gz +0 -0
  5. package/dist/{AiChatPanel-L5H455NZ.mjs → AiChatPanel-JTXC5WWH.mjs} +4 -4
  6. package/dist/AiChatPanel-JTXC5WWH.mjs.br +0 -0
  7. package/dist/AiChatPanel-JTXC5WWH.mjs.gz +0 -0
  8. package/dist/{Area3DChartScene-R2CKCYCB.js → Area3DChartScene-J7G54OH4.js} +2 -2
  9. package/dist/Area3DChartScene-J7G54OH4.js.br +0 -0
  10. package/dist/Area3DChartScene-J7G54OH4.js.gz +0 -0
  11. package/dist/{Area3DChartScene-OAD36KIX.mjs → Area3DChartScene-JQ2VU73H.mjs} +1 -1
  12. package/dist/Area3DChartScene-JQ2VU73H.mjs.br +0 -0
  13. package/dist/Area3DChartScene-JQ2VU73H.mjs.gz +0 -0
  14. package/dist/{Bar3DChartScene-XNNXF26T.mjs → Bar3DChartScene-5HC7LYBH.mjs} +1 -1
  15. package/dist/Bar3DChartScene-5HC7LYBH.mjs.br +0 -0
  16. package/dist/Bar3DChartScene-5HC7LYBH.mjs.gz +0 -0
  17. package/dist/{Bar3DChartScene-CRRPMXGQ.js → Bar3DChartScene-JV3A2P6O.js} +2 -2
  18. package/dist/Bar3DChartScene-JV3A2P6O.js.br +0 -0
  19. package/dist/Bar3DChartScene-JV3A2P6O.js.gz +0 -0
  20. package/dist/{Line3DChartScene-MNNPB3LZ.mjs → Line3DChartScene-4ZAOOU7U.mjs} +1 -1
  21. package/dist/Line3DChartScene-4ZAOOU7U.mjs.br +0 -0
  22. package/dist/Line3DChartScene-4ZAOOU7U.mjs.gz +0 -0
  23. package/dist/{Line3DChartScene-44PLZML2.js → Line3DChartScene-7SN7TVKQ.js} +2 -2
  24. package/dist/Line3DChartScene-7SN7TVKQ.js.br +0 -0
  25. package/dist/Line3DChartScene-7SN7TVKQ.js.gz +0 -0
  26. package/dist/{Model3DScene-RYPYQPJH.js → Model3DScene-GQANXXQD.js} +2 -2
  27. package/dist/Model3DScene-GQANXXQD.js.br +0 -0
  28. package/dist/Model3DScene-GQANXXQD.js.gz +0 -0
  29. package/dist/{Model3DScene-5MUREFLY.mjs → Model3DScene-GWIBUQ2U.mjs} +1 -1
  30. package/dist/Model3DScene-GWIBUQ2U.mjs.br +0 -0
  31. package/dist/Model3DScene-GWIBUQ2U.mjs.gz +0 -0
  32. package/dist/{PieChart3DScene-GACYCSSQ.js → PieChart3DScene-QPFDRMEA.js} +2 -2
  33. package/dist/PieChart3DScene-QPFDRMEA.js.br +0 -0
  34. package/dist/PieChart3DScene-QPFDRMEA.js.gz +0 -0
  35. package/dist/{PieChart3DScene-KYZSSG5X.mjs → PieChart3DScene-RDTOLFTD.mjs} +1 -1
  36. package/dist/PieChart3DScene-RDTOLFTD.mjs.br +0 -0
  37. package/dist/PieChart3DScene-RDTOLFTD.mjs.gz +0 -0
  38. package/dist/PowerPointViewer-Cl6jBPNw.d.ts.map +1 -1
  39. package/dist/{SurfaceChart3DScene-ZUP4PRUZ.mjs → SurfaceChart3DScene-5JQCRWA5.mjs} +1 -1
  40. package/dist/SurfaceChart3DScene-5JQCRWA5.mjs.br +0 -0
  41. package/dist/SurfaceChart3DScene-5JQCRWA5.mjs.gz +0 -0
  42. package/dist/{SurfaceChart3DScene-RI5G4BHS.js → SurfaceChart3DScene-JLYGC7QU.js} +2 -2
  43. package/dist/SurfaceChart3DScene-JLYGC7QU.js.br +0 -0
  44. package/dist/SurfaceChart3DScene-JLYGC7QU.js.gz +0 -0
  45. package/dist/{chunk-Y6GG2OOW.js → chunk-3AJ54EAB.js} +5 -0
  46. package/dist/chunk-3AJ54EAB.js.br +0 -0
  47. package/dist/chunk-3AJ54EAB.js.gz +0 -0
  48. package/dist/{chunk-BX4XVY5X.js → chunk-G2Z7QULX.js} +5 -5
  49. package/dist/chunk-G2Z7QULX.js.br +0 -0
  50. package/dist/chunk-G2Z7QULX.js.gz +0 -0
  51. package/dist/{chunk-MRBHJ26I.js → chunk-H3GHGSGW.js} +586 -503
  52. package/dist/chunk-H3GHGSGW.js.br +0 -0
  53. package/dist/chunk-H3GHGSGW.js.gz +0 -0
  54. package/dist/{chunk-SUEZMQRT.mjs → chunk-HB7DJENT.mjs} +1 -1
  55. package/dist/chunk-HB7DJENT.mjs.br +0 -0
  56. package/dist/chunk-HB7DJENT.mjs.gz +0 -0
  57. package/dist/{chunk-TAGG5YNA.mjs → chunk-HMX3MQR7.mjs} +5 -0
  58. package/dist/chunk-HMX3MQR7.mjs.br +0 -0
  59. package/dist/chunk-HMX3MQR7.mjs.gz +0 -0
  60. package/dist/{chunk-IK25LY4C.js → chunk-IVCYND7A.js} +197 -183
  61. package/dist/chunk-IVCYND7A.js.br +0 -0
  62. package/dist/chunk-IVCYND7A.js.gz +0 -0
  63. package/dist/{chunk-VHFPZBUW.mjs → chunk-M7SNS3DQ.mjs} +154 -71
  64. package/dist/chunk-M7SNS3DQ.mjs.br +0 -0
  65. package/dist/chunk-M7SNS3DQ.mjs.gz +0 -0
  66. package/dist/{chunk-N75WRHON.mjs → chunk-PKHTTHA2.mjs} +361 -142
  67. package/dist/chunk-PKHTTHA2.mjs.br +0 -0
  68. package/dist/chunk-PKHTTHA2.mjs.gz +0 -0
  69. package/dist/{chunk-6BNPHEEX.mjs → chunk-TS2DHMBS.mjs} +8671 -1786
  70. package/dist/chunk-TS2DHMBS.mjs.br +0 -0
  71. package/dist/chunk-TS2DHMBS.mjs.gz +0 -0
  72. package/dist/{chunk-LY5535CF.js → chunk-TWUAZRCG.js} +8684 -1786
  73. package/dist/chunk-TWUAZRCG.js.br +0 -0
  74. package/dist/chunk-TWUAZRCG.js.gz +0 -0
  75. package/dist/{chunk-4PL3GBSD.js → chunk-UGVPKJSU.js} +1607 -1388
  76. package/dist/chunk-UGVPKJSU.js.br +0 -0
  77. package/dist/chunk-UGVPKJSU.js.gz +0 -0
  78. package/dist/{chunk-5T4Y4QPV.mjs → chunk-Y3SA5H5H.mjs} +25 -11
  79. package/dist/chunk-Y3SA5H5H.mjs.br +0 -0
  80. package/dist/chunk-Y3SA5H5H.mjs.gz +0 -0
  81. package/dist/i18n.js +4 -4
  82. package/dist/i18n.js.br +0 -0
  83. package/dist/i18n.js.gz +0 -0
  84. package/dist/i18n.mjs +1 -1
  85. package/dist/i18n.mjs.br +0 -0
  86. package/dist/i18n.mjs.gz +0 -0
  87. package/dist/index.d.ts +92 -0
  88. package/dist/index.js +47 -47
  89. package/dist/index.js.br +0 -0
  90. package/dist/index.js.gz +0 -0
  91. package/dist/index.mjs +6 -6
  92. package/dist/index.mjs.br +0 -0
  93. package/dist/index.mjs.gz +0 -0
  94. package/dist/internals.d.ts +157 -0
  95. package/dist/internals.d.ts.map +1 -1
  96. package/dist/internals.js +79 -79
  97. package/dist/internals.js.br +0 -0
  98. package/dist/internals.js.gz +0 -0
  99. package/dist/internals.mjs +4 -4
  100. package/dist/internals.mjs.br +0 -0
  101. package/dist/internals.mjs.gz +0 -0
  102. package/dist/viewer/index.d.ts +81 -0
  103. package/dist/viewer/index.js +27 -27
  104. package/dist/viewer/index.js.br +0 -0
  105. package/dist/viewer/index.js.gz +0 -0
  106. package/dist/viewer/index.mjs +6 -6
  107. package/dist/viewer/index.mjs.br +0 -0
  108. package/dist/viewer/index.mjs.gz +0 -0
  109. package/package.json +1 -1
  110. package/dist/AiChatPanel-A3ZMMVUA.js.br +0 -0
  111. package/dist/AiChatPanel-A3ZMMVUA.js.gz +0 -0
  112. package/dist/AiChatPanel-L5H455NZ.mjs.br +0 -0
  113. package/dist/AiChatPanel-L5H455NZ.mjs.gz +0 -0
  114. package/dist/Area3DChartScene-OAD36KIX.mjs.br +0 -0
  115. package/dist/Area3DChartScene-OAD36KIX.mjs.gz +0 -0
  116. package/dist/Area3DChartScene-R2CKCYCB.js.br +0 -0
  117. package/dist/Area3DChartScene-R2CKCYCB.js.gz +0 -0
  118. package/dist/Bar3DChartScene-CRRPMXGQ.js.br +0 -0
  119. package/dist/Bar3DChartScene-CRRPMXGQ.js.gz +0 -0
  120. package/dist/Bar3DChartScene-XNNXF26T.mjs.br +0 -0
  121. package/dist/Bar3DChartScene-XNNXF26T.mjs.gz +0 -0
  122. package/dist/Line3DChartScene-44PLZML2.js.br +0 -0
  123. package/dist/Line3DChartScene-44PLZML2.js.gz +0 -0
  124. package/dist/Line3DChartScene-MNNPB3LZ.mjs.br +0 -0
  125. package/dist/Line3DChartScene-MNNPB3LZ.mjs.gz +0 -0
  126. package/dist/Model3DScene-5MUREFLY.mjs.br +0 -0
  127. package/dist/Model3DScene-5MUREFLY.mjs.gz +0 -0
  128. package/dist/Model3DScene-RYPYQPJH.js.br +0 -0
  129. package/dist/Model3DScene-RYPYQPJH.js.gz +0 -0
  130. package/dist/PieChart3DScene-GACYCSSQ.js.br +0 -0
  131. package/dist/PieChart3DScene-GACYCSSQ.js.gz +0 -0
  132. package/dist/PieChart3DScene-KYZSSG5X.mjs.br +0 -0
  133. package/dist/PieChart3DScene-KYZSSG5X.mjs.gz +0 -0
  134. package/dist/SurfaceChart3DScene-RI5G4BHS.js.br +0 -0
  135. package/dist/SurfaceChart3DScene-RI5G4BHS.js.gz +0 -0
  136. package/dist/SurfaceChart3DScene-ZUP4PRUZ.mjs.br +0 -0
  137. package/dist/SurfaceChart3DScene-ZUP4PRUZ.mjs.gz +0 -0
  138. package/dist/chunk-4PL3GBSD.js.br +0 -0
  139. package/dist/chunk-4PL3GBSD.js.gz +0 -0
  140. package/dist/chunk-5T4Y4QPV.mjs.br +0 -0
  141. package/dist/chunk-5T4Y4QPV.mjs.gz +0 -0
  142. package/dist/chunk-6BNPHEEX.mjs.br +0 -0
  143. package/dist/chunk-6BNPHEEX.mjs.gz +0 -0
  144. package/dist/chunk-BX4XVY5X.js.br +0 -0
  145. package/dist/chunk-BX4XVY5X.js.gz +0 -0
  146. package/dist/chunk-IK25LY4C.js.br +0 -0
  147. package/dist/chunk-IK25LY4C.js.gz +0 -0
  148. package/dist/chunk-LY5535CF.js.br +0 -0
  149. package/dist/chunk-LY5535CF.js.gz +0 -0
  150. package/dist/chunk-MRBHJ26I.js.br +0 -0
  151. package/dist/chunk-MRBHJ26I.js.gz +0 -0
  152. package/dist/chunk-N75WRHON.mjs.br +0 -0
  153. package/dist/chunk-N75WRHON.mjs.gz +0 -0
  154. package/dist/chunk-SUEZMQRT.mjs.br +0 -0
  155. package/dist/chunk-SUEZMQRT.mjs.gz +0 -0
  156. package/dist/chunk-TAGG5YNA.mjs.br +0 -0
  157. package/dist/chunk-TAGG5YNA.mjs.gz +0 -0
  158. package/dist/chunk-VHFPZBUW.mjs.br +0 -0
  159. package/dist/chunk-VHFPZBUW.mjs.gz +0 -0
  160. package/dist/chunk-Y6GG2OOW.js.br +0 -0
  161. package/dist/chunk-Y6GG2OOW.js.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, buildPdfFromImageData, buildNotesPdf, GRID_SIZE, DEFAULT_TEXT_FONT_SIZE } from './chunk-5T4Y4QPV.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, createActiveAnimationGroup, cancelBuildReveal, clearPlaybackTimers, PresentationAnimationController, resolveMediaTimeNodeElementIds, advanceMainSequence, playGroup, 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, firstShowSlideIndex, attachPresentationVisibilityPause, presentationEntrySlideIndex, buildMorphTransitionPlan, morphOptionToMode, buildMorphAnimationRules, findInSlides, applyFindReplacements, visibleTemplateElements, createCollaborationLivePatcher, publishLiveInlineText, PptxHandler, collectMediaElements, resolveMediaElementSource, collectImagePaths, applyImagePathPatches, resolveTableCellImageUrls, resolveTableStyleImageUrls, partitionTemplateElements, seedRecentColors, resolveAuthoredCustomShowId, buildInitialGuides, readOnlyRecommendation, compatibilityWarningToasts, EncryptedFileError, resolveAutosaveIntervalMs, shouldWriteAutosaveSnapshot, saveAutosaveSnapshot, autosaveSnapshotMark, hasTextProperties, remapTextToSegments, updateMasterViewElement, isTemplateElementId, updateElement, hasShapeProperties, getInlineEditorSelection, applyStyleToSelectedSegments, setPendingSelectionRestore, applyCaseTransformToSegments, transformTextCase, masterViewElements, replaceMasterViewElements, addSection, renameSection, deleteSection, moveSectionUp, moveSectionDown, moveSlidesToSection, canInteractWithElement, normalizeColorsForCapture, preprocessCssForCapture, slideProgressPercent, slideStatusLabel, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, isExportAbortError, recordProgressPercent, downloadBlob, resolveImageResolutionScale, applyThemeToData, THEME_PRESETS, themeColorSchemesEqual, comparePresentation, applyAcceptSlide, applyAcceptAllSlides, collectUsedFonts, describeFontEmbedding, isMobileViewport, resolveAuthoredSlideRange, mayLeaveSlideShow, stopAllPersistentAudio, guidePxToEmu, buildSaveSlides, buildDeckSaveOptions, resolveSlideSizeSelection, saveDeckWithPassword, shouldProbeAutosaveRecovery, probeAutosaveRecovery, acceptAutosaveRecovery, discardAutosaveRecovery, shouldLoopContinuously, applyRehearsalTimings, copyFormatFromElement, applyFormatToElement, collectReferencedFontFamilies, resolveGoogleWebfontHref, mapSlideShowStartKey, mapEditorKey, isEditorTextInputTarget, createViewerOptionsStore, readSlidesFromYDoc, shouldRoomSlidesReplaceLoad, reconcileSlidesInYDoc, LOCAL_SYNC_ORIGIN, observeYDocSlides, shouldAutoFollowBroadcaster, detectTouchDevice, detectOrientation, deriveViewportBreakpoints, createTouchGestureRecognizer, MAX_ZOOM_SCALE, MIN_ZOOM_SCALE, isKeyboardOpen, scopeLayoutOptionsToSlide, checkModifyPassword, viewerPreferencesFromViewProperties, DEFAULT_VIEWER_PREFERENCES, viewPropertiesPatchFromPreferences, openPptxFile, readBackstageRecentFile, isActionHidden, resolveInlineEditAutoFitHeight, resolveInlineEditNormAutofitShrink, filterInteractableIds, beginShapeAdjustment, buildElementClipboardPayload, savedPresentationFileName, exportDeckJson, groupElements, generateElementId, makeCloneId, ungroupElements, alignElements, distributeElements, bringForward, sendBackward, bringToFront, sendToBack, newTableElement, createDefaultChartElement, readViewportMetrics, computeKeyboardInset, mergeShapes, mapPresentationKey, lastShowSlideIndex, mapPresentationWheel, openPendingPrintWindow, computeColorFilter, filterHiddenSlideIndices, computeSlideIndices, buildPrintDocument, finishPrintWindow, buildPrintHtmlDocument, buildOutlineHtml, buildSlidesHtml, buildNotesHtml, buildHandoutsHtml, createBlankSlide, makeSlideId, buildSlideTemplateSlide, templateSchemeFromTheme, buildThemeColorMap, reResolveSlideColors, reResolveElementColors, scheduleAutoAdvanceChain, computeEntranceAnimationDelay, createPresentationSessionId, resolveTransitionDurationMs, resolveTransitionSoundAction, runPresentationAction, safeOpenUrl, toggleStageElementMedia, resolveOleVerbTarget, downloadDataUrl, openUrlInNewTab, createPresenterTimer, createInitialPresentationSnapshot, mergePresentationSnapshot, resetPresenterTimer, presenterElapsed, stepPresenterZoom, togglePresenterTimer, addCommentToList, removeCommentFromList, editCommentInList, toggleCommentResolvedInList, canvasToJpegData, pickSupportedMimeType, WEBM_MIME_CANDIDATES, fpsToFrameIntervalMs, segmentFrameCount, encodeGif, computeGridSpacingPx, resolveShowSlideIndexes, groupSlidesBySection, masterViewPseudoSlide, resolveHistoryDepth, hasCopyableFormat, createBackstagePresentation, buildFieldSubstitutionContext, cloneElementForPaste, computeScrollDelta, getPresetShapeClipPath, svgPathToPolygons, polygonsToSvgPath, rerouteConnectorsForMovedElements, applyReroutedConnectors, SvgExporter, replyToCommentInList, 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, applyResize, lockResizeAspect, snapBoxToGrid, applyMotionPathPreset } from './chunk-6BNPHEEX.mjs';
3
- import { translationsEn } from './chunk-TAGG5YNA.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, buildPdfFromTiledImageData, buildNotesPdf, GRID_SIZE, DEFAULT_TEXT_FONT_SIZE } from './chunk-Y3SA5H5H.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, createActiveAnimationGroup, cancelBuildReveal, clearPlaybackTimers, PresentationAnimationController, resolveMediaTimeNodeElementIds, advanceMainSequence, playGroup, 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, firstShowSlideIndex, attachPresentationVisibilityPause, presentationEntrySlideIndex, buildMorphTransitionPlan, morphOptionToMode, buildMorphAnimationRules, findInSlides, applyFindReplacements, visibleTemplateElements, createCollaborationLivePatcher, publishLiveInlineText, PptxHandler, collectMediaElements, resolveMediaElementSource, collectImagePaths, applyImagePathPatches, resolveTableCellImageUrls, resolveTableStyleImageUrls, partitionTemplateElements, seedRecentColors, resolveAuthoredCustomShowId, buildInitialGuides, readOnlyRecommendation, compatibilityWarningToasts, EncryptedFileError, resolveAutosaveIntervalMs, shouldWriteAutosaveSnapshot, saveAutosaveSnapshot, autosaveSnapshotMark, hasTextProperties, remapTextToSegments, updateMasterViewElement, isTemplateElementId, updateElement, hasShapeProperties, getInlineEditorSelection, applyStyleToSelectedSegments, setPendingSelectionRestore, applyCaseTransformToSegments, transformTextCase, masterViewElements, replaceMasterViewElements, addSection, renameSection, deleteSection, moveSectionUp, moveSectionDown, moveSlidesToSection, canInteractWithElement, normalizeColorsForCapture, preprocessCssForCapture, slideProgressPercent, slideStatusLabel, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, isExportAbortError, recordProgressPercent, downloadBlob, resolveImageResolutionScale, applyThemeToData, THEME_PRESETS, themeColorSchemesEqual, comparePresentation, applyAcceptSlide, applyAcceptAllSlides, collectUsedFonts, describeFontEmbedding, isMobileViewport, resolveAuthoredSlideRange, mayLeaveSlideShow, stopAllPersistentAudio, guidePxToEmu, buildSaveSlides, buildDeckSaveOptions, resolveSlideSizeSelection, saveDeckWithPassword, shouldProbeAutosaveRecovery, probeAutosaveRecovery, acceptAutosaveRecovery, discardAutosaveRecovery, shouldLoopContinuously, applyRehearsalTimings, copyFormatFromElement, applyFormatToElement, collectReferencedFontFamilies, resolveGoogleWebfontHref, mapSlideShowStartKey, mapEditorKey, isEditorTextInputTarget, createViewerOptionsStore, readSlidesFromYDoc, shouldRoomSlidesReplaceLoad, reconcileSlidesInYDoc, LOCAL_SYNC_ORIGIN, observeYDocSlides, shouldAutoFollowBroadcaster, detectTouchDevice, detectOrientation, deriveViewportBreakpoints, createTouchGestureRecognizer, MAX_ZOOM_SCALE, MIN_ZOOM_SCALE, isKeyboardOpen, scopeLayoutOptionsToSlide, checkModifyPassword, viewerPreferencesFromViewProperties, DEFAULT_VIEWER_PREFERENCES, viewPropertiesPatchFromPreferences, openPptxFile, readBackstageRecentFile, isActionHidden, buildInlineTextCommitPatch, resolveInlineEditAutoFitHeight, resolveInlineEditNormAutofitShrink, filterInteractableIds, beginShapeAdjustment, buildElementClipboardPayload, savedPresentationFileName, exportDeckJson, groupElements, generateElementId, makeCloneId, ungroupElements, alignElements, distributeElements, bringForward, sendBackward, bringToFront, sendToBack, newTableElement, createDefaultChartElement, readViewportMetrics, computeKeyboardInset, mergeShapes, mapPresentationKey, lastShowSlideIndex, mapPresentationWheel, openPendingPrintWindow, computeColorFilter, filterHiddenSlideIndices, computeSlideIndices, buildPrintDocument, finishPrintWindow, buildPrintHtmlDocument, buildOutlineHtml, buildSlidesHtml, buildNotesHtml, buildHandoutsHtml, createBlankSlide, makeSlideId, buildSlideTemplateSlide, templateSchemeFromTheme, buildThemeColorMap, reResolveSlideColors, reResolveElementColors, scheduleAutoAdvanceChain, computeEntranceAnimationDelay, createPresentationSessionId, resolveTransitionDurationMs, resolveTransitionSoundAction, runPresentationAction, safeOpenUrl, buildRunProgramNotice, toggleStageElementMedia, resolveOleVerbTarget, downloadDataUrl, openUrlInNewTab, createPresenterTimer, createInitialPresentationSnapshot, mergePresentationSnapshot, resetPresenterTimer, presenterElapsed, stepPresenterZoom, togglePresenterTimer, addCommentToList, removeCommentFromList, editCommentInList, toggleCommentResolvedInList, pickSupportedMimeType, WEBM_MIME_CANDIDATES, fpsToFrameIntervalMs, segmentFrameCount, encodeGif, computeGridSpacingPx, resolveShowSlideIndexes, groupSlidesBySection, masterViewPseudoSlide, resolveHistoryDepth, hasCopyableFormat, createBackstagePresentation, buildFieldSubstitutionContext, cloneElementForPaste, computeScrollDelta, getPresetShapeClipPath, svgPathToPolygons, polygonsToSvgPath, rerouteConnectorsForMovedElements, applyReroutedConnectors, SvgExporter, replyToCommentInList, deleteTableColumn, rebuildTableStructureInRawXml, insertTableColumn, deleteTableRow, insertTableRow, updateCellTextStyleInRawXml, setCellText, updateCellTextInRawXml, splitCell, updateMergeAttrsInRawXml, mergeCells, rasterResultToPngBlob, rasterizeElementTiles, placeTileOnPage, PDF_SLIDES_PAGE_WIDTH_PT, PDF_SLIDES_PAGE_HEIGHT_PT, canvasToJpegData, rasterizeElementClampedToCanvas, isPpactionUrl, parsePpactionUrl, resolvePresentationAction, ACTION_BUTTON_PRESETS, elementActionToPptxAction, isUrlSafe, buildSmartArtPresetData, classifyMediaType, computeSnapToShape, publishLiveGeometry, getDraggedShapeAdjustments, computeMarqueeHitIds, mergeAdditiveSelection, rasterizeElement, shouldConfirmExternalHyperlink, applyResize, lockResizeAspect, snapBoxToGrid, applyMotionPathPreset } from './chunk-TS2DHMBS.mjs';
3
+ import { translationsEn } from './chunk-HMX3MQR7.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
 
@@ -1016,7 +1016,14 @@ function scheduleEntranceAnimationTimers(slide, setPresentationAnimations, prese
1016
1016
 
1017
1017
  // src/viewer/hooks/presentation-mode/useAnimationPlayback.ts
1018
1018
  function useAnimationPlayback(input) {
1019
- const { slides, onPlayActionSound, showWithAnimation, canvasSize, themeColorMap } = input;
1019
+ const {
1020
+ slides,
1021
+ onPlayActionSound,
1022
+ showWithAnimation,
1023
+ canvasSize,
1024
+ themeColorMap,
1025
+ pixelateMosaicAnimation
1026
+ } = input;
1020
1027
  const animationsEnabled = showWithAnimation !== false;
1021
1028
  const [presentationAnimations, setPresentationAnimations] = useState([]);
1022
1029
  const [presentationElementStates, setPresentationElementStates] = useState(/* @__PURE__ */ new Map());
@@ -1067,7 +1074,8 @@ function useAnimationPlayback(input) {
1067
1074
  const controller = PresentationAnimationController.fromSlide(slide, {
1068
1075
  slideHeightPx: canvasSize?.height,
1069
1076
  slideWidthPx: canvasSize?.width,
1070
- themeColorMap
1077
+ themeColorMap,
1078
+ pixelateMosaic: pixelateMosaicAnimation
1071
1079
  });
1072
1080
  controllerRef.current = controller;
1073
1081
  mediaTimeNodeElementIdsRef.current = resolveMediaTimeNodeElementIds(
@@ -1078,7 +1086,7 @@ function useAnimationPlayback(input) {
1078
1086
  setHoverTriggerShapeIds(controller.hoverTriggerShapeIds);
1079
1087
  setPresentationElementStates(controller.computeStates());
1080
1088
  },
1081
- [slides, canvasSize, themeColorMap]
1089
+ [slides, canvasSize, themeColorMap, pixelateMosaicAnimation]
1082
1090
  );
1083
1091
  const playNextAnimationGroup = useCallback(() => {
1084
1092
  if (!animationsEnabled) {
@@ -1758,7 +1766,8 @@ function handlePresentationActionImpl(action, deps) {
1758
1766
  openFile: deps.onOpenFile,
1759
1767
  openPresentation: deps.onOpenPresentation,
1760
1768
  playMedia: deps.onPlayMedia,
1761
- oleVerb: deps.onOleVerb
1769
+ oleVerb: deps.onOleVerb,
1770
+ runProgram: deps.onRunProgram
1762
1771
  }
1763
1772
  );
1764
1773
  }
@@ -1830,7 +1839,8 @@ function useSlideNavigation(input) {
1830
1839
  onOpenFile,
1831
1840
  onOpenPresentation,
1832
1841
  onPlayMedia,
1833
- onOleVerb
1842
+ onOleVerb,
1843
+ onRunProgram
1834
1844
  } = input;
1835
1845
  const movePresentationSlideRef = useRef(() => {
1836
1846
  });
@@ -1996,7 +2006,8 @@ function useSlideNavigation(input) {
1996
2006
  onOpenFile,
1997
2007
  onOpenPresentation,
1998
2008
  onPlayMedia,
1999
- onOleVerb
2009
+ onOleVerb,
2010
+ onRunProgram
2000
2011
  });
2001
2012
  },
2002
2013
  [
@@ -2010,7 +2021,8 @@ function useSlideNavigation(input) {
2010
2021
  onOpenFile,
2011
2022
  onOpenPresentation,
2012
2023
  onPlayMedia,
2013
- onOleVerb
2024
+ onOleVerb,
2025
+ onRunProgram
2014
2026
  ]
2015
2027
  );
2016
2028
  return {
@@ -2102,7 +2114,8 @@ function usePresentationActionExtensions(input) {
2102
2114
  containerRef,
2103
2115
  endWithBlackSlide,
2104
2116
  onSetMode,
2105
- setEndOfShowVisible
2117
+ setEndOfShowVisible,
2118
+ onAddRunProgramNotice
2106
2119
  } = input;
2107
2120
  const navigateToSlideRef = useRef(null);
2108
2121
  const navigateToSlideViaRef = useCallback((index) => {
@@ -2140,6 +2153,12 @@ function usePresentationActionExtensions(input) {
2140
2153
  const onOpenPresentation = useCallback((target) => {
2141
2154
  safeOpenUrl(target);
2142
2155
  }, []);
2156
+ const onRunProgram = useCallback(
2157
+ (target) => {
2158
+ onAddRunProgramNotice?.(buildRunProgramNotice(target));
2159
+ },
2160
+ [onAddRunProgramNotice]
2161
+ );
2143
2162
  const onPlayMedia = useCallback(
2144
2163
  (elementId) => {
2145
2164
  toggleStageElementMedia(containerRef.current, elementId);
@@ -2180,6 +2199,7 @@ function usePresentationActionExtensions(input) {
2180
2199
  onOpenPresentation,
2181
2200
  onPlayMedia,
2182
2201
  onOleVerb,
2202
+ onRunProgram,
2183
2203
  handleAdvancePastLastSlide,
2184
2204
  bindNavigateToSlide
2185
2205
  };
@@ -2244,6 +2264,7 @@ function usePresentationMode(input) {
2244
2264
  visibleSlideIndexes,
2245
2265
  canvasSize,
2246
2266
  themeColorMap,
2267
+ pixelateMosaicAnimation,
2247
2268
  activeSlideIndex,
2248
2269
  containerRef,
2249
2270
  content,
@@ -2263,7 +2284,8 @@ function usePresentationMode(input) {
2263
2284
  endWithBlackSlide = true,
2264
2285
  customShows = [],
2265
2286
  activeCustomShowId = null,
2266
- onSetActiveCustomShowId
2287
+ onSetActiveCustomShowId,
2288
+ onAddRunProgramNotice
2267
2289
  } = input;
2268
2290
  const [presentationSlideIndex, setPresentationSlideIndex] = useState(0);
2269
2291
  const [presentationSlideVisible, setPresentationSlideVisible] = useState(true);
@@ -2297,7 +2319,8 @@ function usePresentationMode(input) {
2297
2319
  onPlayActionSound,
2298
2320
  showWithAnimation,
2299
2321
  canvasSize,
2300
- themeColorMap
2322
+ themeColorMap,
2323
+ pixelateMosaicAnimation
2301
2324
  });
2302
2325
  const {
2303
2326
  rehearsing,
@@ -2333,7 +2356,8 @@ function usePresentationMode(input) {
2333
2356
  containerRef,
2334
2357
  endWithBlackSlide,
2335
2358
  onSetMode,
2336
- setEndOfShowVisible
2359
+ setEndOfShowVisible,
2360
+ onAddRunProgramNotice
2337
2361
  });
2338
2362
  const {
2339
2363
  movePresentationSlide: moveNavigationSlide,
@@ -2367,7 +2391,8 @@ function usePresentationMode(input) {
2367
2391
  onOpenFile: actionExtensions.onOpenFile,
2368
2392
  onOpenPresentation: actionExtensions.onOpenPresentation,
2369
2393
  onPlayMedia: actionExtensions.onPlayMedia,
2370
- onOleVerb: actionExtensions.onOleVerb
2394
+ onOleVerb: actionExtensions.onOleVerb,
2395
+ onRunProgram: actionExtensions.onRunProgram
2371
2396
  });
2372
2397
  actionExtensions.bindNavigateToSlide(navigateToSlide);
2373
2398
  const movePresentationSlide = useCallback(
@@ -5119,13 +5144,17 @@ function useCanvasInteractions(input) {
5119
5144
  const el = elementLookup.get(editId);
5120
5145
  if (el && hasTextProperties(el)) {
5121
5146
  const committedText = transformCommittedText ? transformCommittedText(inlineEditingText) : inlineEditingText;
5122
- const newSegments = remapTextToSegments(committedText, el.textSegments, el.textStyle);
5147
+ const textPatch = buildInlineTextCommitPatch(el, committedText);
5148
+ if (!textPatch) {
5149
+ setInlineEditingElementId(null);
5150
+ setInlineEditingText("");
5151
+ return;
5152
+ }
5123
5153
  const editorEl = document.querySelector("[data-inline-editor]");
5124
5154
  const newHeight = resolveInlineEditAutoFitHeight(el.textStyle, el.height, editorEl);
5125
5155
  const shrink = resolveInlineEditNormAutofitShrink(el.textStyle, el.height, editorEl);
5126
5156
  ops.updateElementById(editId, {
5127
- text: committedText,
5128
- textSegments: newSegments,
5157
+ ...textPatch,
5129
5158
  ...newHeight !== void 0 ? { height: newHeight } : {},
5130
5159
  ...shrink !== "unchanged" ? {
5131
5160
  textStyle: {
@@ -7031,26 +7060,70 @@ function safeConfirm(message) {
7031
7060
  }
7032
7061
 
7033
7062
  // src/viewer/utils/export-helpers.ts
7034
- async function renderElementToCanvas(element, scale = 2, backgroundColor) {
7035
- const canvas = await renderToCanvas(element, {
7063
+ function ignoreExportOverlayElements(el) {
7064
+ const htmlEl = el;
7065
+ if (htmlEl.dataset?.exportIgnore === "true") {
7066
+ return true;
7067
+ }
7068
+ return Boolean(
7069
+ htmlEl.classList?.contains("pointer-events-none") && (htmlEl.classList.contains("z-50") || htmlEl.classList.contains("z-[60]"))
7070
+ );
7071
+ }
7072
+ function measureNaturalSize(element) {
7073
+ const rect = element.getBoundingClientRect();
7074
+ return {
7075
+ width: rect.width || element.offsetWidth,
7076
+ height: rect.height || element.offsetHeight
7077
+ };
7078
+ }
7079
+ function buildRasterOptions(element, scale, backgroundColor, mode) {
7080
+ return {
7036
7081
  scale,
7037
- useCORS: true,
7038
- allowTaint: true,
7039
- backgroundColor: backgroundColor ?? null,
7040
- logging: false,
7041
- // Ignore elements that interfere with export (selection overlays, snap lines, etc.)
7042
- ignoreElements: (el) => {
7043
- const htmlEl = el;
7044
- if (htmlEl.dataset?.exportIgnore === "true") {
7045
- return true;
7046
- }
7047
- if (htmlEl.classList?.contains("pointer-events-none") && (htmlEl.classList.contains("z-50") || htmlEl.classList.contains("z-[60]"))) {
7048
- return true;
7049
- }
7050
- return false;
7051
- }
7052
- });
7053
- return canvas;
7082
+ backgroundColor,
7083
+ mode,
7084
+ html2canvasFallback: (sourceRect, outputSize) => renderToCanvas(element, {
7085
+ scale: outputSize.width / (sourceRect.width || 1),
7086
+ x: sourceRect.x,
7087
+ y: sourceRect.y,
7088
+ width: sourceRect.width,
7089
+ height: sourceRect.height,
7090
+ useCORS: true,
7091
+ allowTaint: true,
7092
+ backgroundColor: backgroundColor ?? null,
7093
+ logging: false,
7094
+ ignoreElements: ignoreExportOverlayElements
7095
+ })
7096
+ };
7097
+ }
7098
+ async function renderElementToRaster(element, scale = 2, backgroundColor, mode = "auto") {
7099
+ const { width, height } = measureNaturalSize(element);
7100
+ return rasterizeElement(
7101
+ element,
7102
+ width,
7103
+ height,
7104
+ element.ownerDocument,
7105
+ buildRasterOptions(element, scale, backgroundColor, mode)
7106
+ );
7107
+ }
7108
+ async function renderElementToTiles(element, scale = 2, backgroundColor, mode = "auto") {
7109
+ const { width, height } = measureNaturalSize(element);
7110
+ return rasterizeElementTiles(
7111
+ element,
7112
+ width,
7113
+ height,
7114
+ element.ownerDocument,
7115
+ buildRasterOptions(element, scale, backgroundColor, mode)
7116
+ );
7117
+ }
7118
+ async function renderElementToClampedCanvas(element, scale = 2, backgroundColor, mode = "auto") {
7119
+ const { width, height } = measureNaturalSize(element);
7120
+ return rasterizeElementClampedToCanvas(
7121
+ element,
7122
+ width,
7123
+ height,
7124
+ element.ownerDocument,
7125
+ buildRasterOptions(element, scale, backgroundColor, mode)
7126
+ );
7054
7127
  }
7055
7128
  function waitForRender(ms = 100) {
7056
7129
  return new Promise((resolve) => {
@@ -7065,16 +7138,8 @@ function waitForRender(ms = 100) {
7065
7138
  // src/viewer/utils/export-slides.ts
7066
7139
  async function exportSlideToPngBlob(slideElement, options = {}) {
7067
7140
  const { scale = 2, backgroundColor } = options;
7068
- const canvas = await renderElementToCanvas(slideElement, scale, backgroundColor);
7069
- return new Promise((resolve, reject) => {
7070
- canvas.toBlob((blob) => {
7071
- if (blob) {
7072
- resolve(blob);
7073
- } else {
7074
- reject(new Error("Canvas toBlob returned null"));
7075
- }
7076
- }, "image/png");
7077
- });
7141
+ const result = await renderElementToRaster(slideElement, scale, backgroundColor);
7142
+ return rasterResultToPngBlob(result);
7078
7143
  }
7079
7144
  async function exportSlideAsPng(slideElement, slideIndex, options = {}) {
7080
7145
  const blob = await exportSlideToPngBlob(slideElement, options);
@@ -7084,13 +7149,10 @@ async function copySlideToClipboard(slideElement, options = {}) {
7084
7149
  const blob = await exportSlideToPngBlob(slideElement, options);
7085
7150
  await navigator.clipboard.write([new ClipboardItem({ "image/png": blob })]);
7086
7151
  }
7087
- async function exportAllSlidesAsPdf(slideStageRef, totalSlides, setActiveSlide, currentSlideIndex, filename = "presentation.pdf", options = {}) {
7088
- const { scale = 2, onProgress, signal } = options;
7089
- const images = [];
7152
+ async function captureAllSlidesAsPngDataUrls(slideStageRef, totalSlides, setActiveSlide, currentSlideIndex, options = {}) {
7153
+ const { scale = 2, onProgress } = options;
7154
+ const dataUrls = [];
7090
7155
  for (let i = 0; i < totalSlides; i++) {
7091
- if (signal?.aborted) {
7092
- throw new DOMException("Export cancelled", "AbortError");
7093
- }
7094
7156
  onProgress?.(i, totalSlides);
7095
7157
  setActiveSlide(i);
7096
7158
  await waitForRender(150);
@@ -7099,21 +7161,34 @@ async function exportAllSlidesAsPdf(slideStageRef, totalSlides, setActiveSlide,
7099
7161
  console.warn(`[export] Could not find slide stage element for slide ${i}`);
7100
7162
  continue;
7101
7163
  }
7102
- const canvas = await renderElementToCanvas(stageEl, scale);
7103
- images.push(canvasToJpegData(canvas));
7164
+ const { canvas } = await renderElementToClampedCanvas(stageEl, scale);
7165
+ dataUrls.push(canvas.toDataURL("image/png"));
7104
7166
  }
7105
7167
  onProgress?.(totalSlides, totalSlides);
7106
7168
  setActiveSlide(currentSlideIndex);
7107
- if (images.length === 0) {
7108
- throw new Error(translationsEn["pptx.export.errorNoSlidesPdf"]);
7109
- }
7110
- const pdfBlobUrl = buildPdfFromImageData(images);
7111
- downloadDataUrl(pdfBlobUrl, filename);
7169
+ return dataUrls;
7112
7170
  }
7113
- async function captureAllSlidesAsPngDataUrls(slideStageRef, totalSlides, setActiveSlide, currentSlideIndex, options = {}) {
7114
- const { scale = 2, onProgress } = options;
7115
- const dataUrls = [];
7171
+
7172
+ // src/viewer/utils/export-pdf.ts
7173
+ function tilesToPdfPage(tilesResult) {
7174
+ return tilesResult.tiles.map((tile) => ({
7175
+ image: canvasToJpegData(tile.canvas),
7176
+ placement: placeTileOnPage(
7177
+ tile,
7178
+ tilesResult.fullWidth,
7179
+ tilesResult.fullHeight,
7180
+ PDF_SLIDES_PAGE_WIDTH_PT,
7181
+ PDF_SLIDES_PAGE_HEIGHT_PT
7182
+ )
7183
+ }));
7184
+ }
7185
+ async function exportAllSlidesAsPdf(slideStageRef, totalSlides, setActiveSlide, currentSlideIndex, filename = "presentation.pdf", options = {}) {
7186
+ const { scale = 2, onProgress, signal } = options;
7187
+ const pages = [];
7116
7188
  for (let i = 0; i < totalSlides; i++) {
7189
+ if (signal?.aborted) {
7190
+ throw new DOMException("Export cancelled", "AbortError");
7191
+ }
7117
7192
  onProgress?.(i, totalSlides);
7118
7193
  setActiveSlide(i);
7119
7194
  await waitForRender(150);
@@ -7122,12 +7197,16 @@ async function captureAllSlidesAsPngDataUrls(slideStageRef, totalSlides, setActi
7122
7197
  console.warn(`[export] Could not find slide stage element for slide ${i}`);
7123
7198
  continue;
7124
7199
  }
7125
- const canvas = await renderElementToCanvas(stageEl, scale);
7126
- dataUrls.push(canvas.toDataURL("image/png"));
7200
+ const tilesResult = await renderElementToTiles(stageEl, scale);
7201
+ pages.push(tilesToPdfPage(tilesResult));
7127
7202
  }
7128
7203
  onProgress?.(totalSlides, totalSlides);
7129
7204
  setActiveSlide(currentSlideIndex);
7130
- return dataUrls;
7205
+ if (pages.length === 0) {
7206
+ throw new Error(translationsEn["pptx.export.errorNoSlidesPdf"]);
7207
+ }
7208
+ const pdfBlobUrl = buildPdfFromTiledImageData(pages);
7209
+ downloadDataUrl(pdfBlobUrl, filename);
7131
7210
  }
7132
7211
  async function exportAllSlidesAsNotesPdf(slideStageRef, totalSlides, setActiveSlide, currentSlideIndex, slideNotes, filename = "presentation-notes.pdf", options = {}) {
7133
7212
  const { scale = 2, onProgress, signal } = options;
@@ -7144,7 +7223,7 @@ async function exportAllSlidesAsNotesPdf(slideStageRef, totalSlides, setActiveSl
7144
7223
  console.warn(`[export] Could not find slide stage element for slide ${i}`);
7145
7224
  continue;
7146
7225
  }
7147
- const canvas = await renderElementToCanvas(stageEl, scale);
7226
+ const { canvas } = await renderElementToClampedCanvas(stageEl, scale);
7148
7227
  pages.push({
7149
7228
  canvas,
7150
7229
  notes: slideNotes[i],
@@ -7183,7 +7262,7 @@ async function exportAllSlidesAsVideo(slideStageRef, totalSlides, setActiveSlide
7183
7262
  console.warn(`[export] Could not find slide stage element for slide ${i}`);
7184
7263
  continue;
7185
7264
  }
7186
- const canvas = await renderElementToCanvas(stageEl, scale);
7265
+ const { canvas } = await renderElementToClampedCanvas(stageEl, scale);
7187
7266
  slideCanvases.push(canvas);
7188
7267
  }
7189
7268
  setActiveSlide(currentSlideIndex);
@@ -7258,7 +7337,7 @@ async function exportAllSlidesAsGif(slideStageRef, totalSlides, setActiveSlide,
7258
7337
  if (!stageEl) {
7259
7338
  continue;
7260
7339
  }
7261
- const canvas = await renderElementToCanvas(stageEl, scale);
7340
+ const { canvas } = await renderElementToClampedCanvas(stageEl, scale);
7262
7341
  const ctx = canvas.getContext("2d");
7263
7342
  if (!ctx) {
7264
7343
  continue;
@@ -8813,12 +8892,14 @@ function usePresentationSetup(input) {
8813
8892
  setSlides,
8814
8893
  history,
8815
8894
  endWithBlackSlide = true,
8895
+ pixelateMosaicAnimation = false,
8816
8896
  promptKeepInkAnnotations = true,
8817
8897
  popupToolbarEnabled = true,
8818
8898
  onToggleSubtitles,
8819
8899
  customShows = [],
8820
8900
  activeCustomShowId = null,
8821
- onSetActiveCustomShowId
8901
+ onSetActiveCustomShowId,
8902
+ onAddRunProgramNotice
8822
8903
  } = input;
8823
8904
  const actionSoundHandlerRef = useRef(null);
8824
8905
  const exitModeHandlerRef = useRef(null);
@@ -8834,6 +8915,7 @@ function usePresentationSetup(input) {
8834
8915
  visibleSlideIndexes,
8835
8916
  canvasSize,
8836
8917
  themeColorMap,
8918
+ pixelateMosaicAnimation,
8837
8919
  activeSlideIndex,
8838
8920
  containerRef,
8839
8921
  content,
@@ -8919,7 +9001,8 @@ function usePresentationSetup(input) {
8919
9001
  endWithBlackSlide,
8920
9002
  customShows,
8921
9003
  activeCustomShowId,
8922
- onSetActiveCustomShowId
9004
+ onSetActiveCustomShowId,
9005
+ onAddRunProgramNotice
8923
9006
  });
8924
9007
  return {
8925
9008
  presentation,
Binary file
Binary file