pptx-react-viewer 2.16.2 → 2.16.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 (168) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/{AiChatPanel-WJXPCHQK.mjs → AiChatPanel-7DDN4QUA.mjs} +4 -4
  3. package/dist/AiChatPanel-7DDN4QUA.mjs.br +0 -0
  4. package/dist/AiChatPanel-7DDN4QUA.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-MCGNCS7Q.js → AiChatPanel-KEORKCTT.js} +23 -23
  6. package/dist/AiChatPanel-KEORKCTT.js.br +0 -0
  7. package/dist/AiChatPanel-KEORKCTT.js.gz +0 -0
  8. package/dist/{Model3DScene-IXW2AKAU.mjs → Model3DScene-DEAQMMUS.mjs} +1 -1
  9. package/dist/{Model3DScene-IXW2AKAU.mjs.br → Model3DScene-DEAQMMUS.mjs.br} +0 -0
  10. package/dist/Model3DScene-DEAQMMUS.mjs.gz +0 -0
  11. package/dist/{Model3DScene-Q2DTGVQ7.js → Model3DScene-SBUYEWHL.js} +2 -2
  12. package/dist/Model3DScene-SBUYEWHL.js.br +0 -0
  13. package/dist/Model3DScene-SBUYEWHL.js.gz +0 -0
  14. package/dist/{SurfaceChart3DScene-AD43LAOO.js → SurfaceChart3DScene-I5D54YQ3.js} +2 -2
  15. package/dist/SurfaceChart3DScene-I5D54YQ3.js.br +0 -0
  16. package/dist/SurfaceChart3DScene-I5D54YQ3.js.gz +0 -0
  17. package/dist/{SurfaceChart3DScene-MODEHQ6G.mjs → SurfaceChart3DScene-TXGS2PBK.mjs} +1 -1
  18. package/dist/{SurfaceChart3DScene-MODEHQ6G.mjs.br → SurfaceChart3DScene-TXGS2PBK.mjs.br} +0 -0
  19. package/dist/SurfaceChart3DScene-TXGS2PBK.mjs.gz +0 -0
  20. package/dist/{audience-content-store-DaABTAcQ.d.ts → audience-content-store-BvqKy7Hf.d.ts} +2 -2
  21. package/dist/{audience-content-store-DaABTAcQ.d.ts.map → audience-content-store-BvqKy7Hf.d.ts.map} +1 -1
  22. package/dist/{chunk-MDFCBYEM.mjs → chunk-23WSCMWN.mjs} +133 -68
  23. package/dist/chunk-23WSCMWN.mjs.br +0 -0
  24. package/dist/chunk-23WSCMWN.mjs.gz +0 -0
  25. package/dist/{chunk-5YV26HMJ.mjs → chunk-5IUEPQTK.mjs} +1 -0
  26. package/dist/chunk-5IUEPQTK.mjs.br +0 -0
  27. package/dist/chunk-5IUEPQTK.mjs.gz +0 -0
  28. package/dist/{chunk-3ISYPBSX.js → chunk-DVZF4ARG.js} +1 -0
  29. package/dist/chunk-DVZF4ARG.js.br +0 -0
  30. package/dist/chunk-DVZF4ARG.js.gz +0 -0
  31. package/dist/{chunk-OYF6ISXZ.mjs → chunk-DWIIYEOG.mjs} +4 -4
  32. package/dist/chunk-DWIIYEOG.mjs.br +0 -0
  33. package/dist/{chunk-OYF6ISXZ.mjs.gz → chunk-DWIIYEOG.mjs.gz} +0 -0
  34. package/dist/{chunk-JV6DI7AK.js → chunk-FQ3FTNKV.js} +1062 -1062
  35. package/dist/chunk-FQ3FTNKV.js.br +0 -0
  36. package/dist/chunk-FQ3FTNKV.js.gz +0 -0
  37. package/dist/{chunk-3OYWYONZ.mjs → chunk-FXGO5KLU.mjs} +3 -3
  38. package/dist/chunk-FXGO5KLU.mjs.br +0 -0
  39. package/dist/chunk-FXGO5KLU.mjs.gz +0 -0
  40. package/dist/{chunk-LDD2UVCV.mjs → chunk-GSAOP4Z4.mjs} +10 -10
  41. package/dist/chunk-GSAOP4Z4.mjs.br +0 -0
  42. package/dist/chunk-GSAOP4Z4.mjs.gz +0 -0
  43. package/dist/{chunk-CIK6XUOH.js → chunk-GZ2V3PWN.js} +3 -3
  44. package/dist/chunk-GZ2V3PWN.js.br +0 -0
  45. package/dist/chunk-GZ2V3PWN.js.gz +0 -0
  46. package/dist/{chunk-P6KM7RO5.js → chunk-HAQDKQ52.js} +266 -266
  47. package/dist/chunk-HAQDKQ52.js.br +0 -0
  48. package/dist/chunk-HAQDKQ52.js.gz +0 -0
  49. package/dist/{chunk-QI2JCXTH.mjs → chunk-J4QZVO3S.mjs} +1 -1
  50. package/dist/chunk-J4QZVO3S.mjs.br +0 -0
  51. package/dist/chunk-J4QZVO3S.mjs.gz +0 -0
  52. package/dist/{chunk-UWYHBCLM.mjs → chunk-LLTUDPRE.mjs} +18 -8
  53. package/dist/chunk-LLTUDPRE.mjs.br +0 -0
  54. package/dist/chunk-LLTUDPRE.mjs.gz +0 -0
  55. package/dist/{chunk-4GX347MG.js → chunk-MZ47MV52.js} +133 -68
  56. package/dist/chunk-MZ47MV52.js.br +0 -0
  57. package/dist/chunk-MZ47MV52.js.gz +0 -0
  58. package/dist/{chunk-PYV6FIYK.js → chunk-NB7M4XBG.js} +38 -38
  59. package/dist/chunk-NB7M4XBG.js.br +0 -0
  60. package/dist/chunk-NB7M4XBG.js.gz +0 -0
  61. package/dist/{chunk-Z4CS2ZYN.mjs → chunk-PLBS7OL2.mjs} +3 -3
  62. package/dist/chunk-PLBS7OL2.mjs.br +0 -0
  63. package/dist/chunk-PLBS7OL2.mjs.gz +0 -0
  64. package/dist/{chunk-NKE64XVV.js → chunk-RBQUSVYR.js} +361 -351
  65. package/dist/chunk-RBQUSVYR.js.br +0 -0
  66. package/dist/chunk-RBQUSVYR.js.gz +0 -0
  67. package/dist/{chunk-MMFM7JRT.js → chunk-ZYQT7I5C.js} +4 -4
  68. package/dist/chunk-ZYQT7I5C.js.br +0 -0
  69. package/dist/chunk-ZYQT7I5C.js.gz +0 -0
  70. package/dist/i18n.js +4 -4
  71. package/dist/i18n.js.br +0 -0
  72. package/dist/i18n.js.gz +0 -0
  73. package/dist/i18n.mjs +1 -1
  74. package/dist/i18n.mjs.br +0 -0
  75. package/dist/i18n.mjs.gz +0 -0
  76. package/dist/index.js +41 -41
  77. package/dist/index.js.br +0 -0
  78. package/dist/index.js.gz +0 -0
  79. package/dist/index.mjs +6 -6
  80. package/dist/index.mjs.br +0 -0
  81. package/dist/index.mjs.gz +0 -0
  82. package/dist/internals.d.ts +30 -1
  83. package/dist/internals.d.ts.map +1 -1
  84. package/dist/internals.js +79 -79
  85. package/dist/internals.js.br +0 -0
  86. package/dist/internals.js.gz +0 -0
  87. package/dist/internals.mjs +4 -4
  88. package/dist/internals.mjs.br +0 -0
  89. package/dist/internals.mjs.gz +0 -0
  90. package/dist/viewer/index.d.ts +1 -1
  91. package/dist/viewer/index.js +27 -27
  92. package/dist/viewer/index.js.br +0 -0
  93. package/dist/viewer/index.js.gz +0 -0
  94. package/dist/viewer/index.mjs +6 -6
  95. package/dist/viewer/index.mjs.br +0 -0
  96. package/dist/viewer/index.mjs.gz +0 -0
  97. package/dist/{y-webrtc-DGVURJIF.mjs → y-webrtc-7DLWG3LJ.mjs} +5 -5
  98. package/dist/y-webrtc-7DLWG3LJ.mjs.br +0 -0
  99. package/dist/y-webrtc-7DLWG3LJ.mjs.gz +0 -0
  100. package/dist/{y-webrtc-YN53KW3J.js → y-webrtc-TAJBJIKH.js} +107 -107
  101. package/dist/y-webrtc-TAJBJIKH.js.br +0 -0
  102. package/dist/y-webrtc-TAJBJIKH.js.gz +0 -0
  103. package/dist/{y-websocket-P5LTAJ5T.mjs → y-websocket-DCTJ76B7.mjs} +4 -4
  104. package/dist/y-websocket-DCTJ76B7.mjs.br +0 -0
  105. package/dist/y-websocket-DCTJ76B7.mjs.gz +0 -0
  106. package/dist/{y-websocket-HZCIQLM6.js → y-websocket-DQLOWGV6.js} +81 -81
  107. package/dist/y-websocket-DQLOWGV6.js.br +0 -0
  108. package/dist/y-websocket-DQLOWGV6.js.gz +0 -0
  109. package/dist/{yjs-FKGX4QHS.mjs → yjs-4ED7E5CZ.mjs} +1 -1
  110. package/dist/yjs-4ED7E5CZ.mjs.br +0 -0
  111. package/dist/yjs-4ED7E5CZ.mjs.gz +0 -0
  112. package/dist/{yjs-HBLSEMHP.js → yjs-OWUA3UHD.js} +104 -104
  113. package/dist/yjs-OWUA3UHD.js.br +0 -0
  114. package/dist/yjs-OWUA3UHD.js.gz +0 -0
  115. package/package.json +7 -7
  116. package/dist/AiChatPanel-MCGNCS7Q.js.br +0 -0
  117. package/dist/AiChatPanel-MCGNCS7Q.js.gz +0 -0
  118. package/dist/AiChatPanel-WJXPCHQK.mjs.br +0 -0
  119. package/dist/AiChatPanel-WJXPCHQK.mjs.gz +0 -0
  120. package/dist/Model3DScene-IXW2AKAU.mjs.gz +0 -0
  121. package/dist/Model3DScene-Q2DTGVQ7.js.br +0 -0
  122. package/dist/Model3DScene-Q2DTGVQ7.js.gz +0 -0
  123. package/dist/SurfaceChart3DScene-AD43LAOO.js.br +0 -0
  124. package/dist/SurfaceChart3DScene-AD43LAOO.js.gz +0 -0
  125. package/dist/SurfaceChart3DScene-MODEHQ6G.mjs.gz +0 -0
  126. package/dist/chunk-3ISYPBSX.js.br +0 -0
  127. package/dist/chunk-3ISYPBSX.js.gz +0 -0
  128. package/dist/chunk-3OYWYONZ.mjs.br +0 -0
  129. package/dist/chunk-3OYWYONZ.mjs.gz +0 -0
  130. package/dist/chunk-4GX347MG.js.br +0 -0
  131. package/dist/chunk-4GX347MG.js.gz +0 -0
  132. package/dist/chunk-5YV26HMJ.mjs.br +0 -0
  133. package/dist/chunk-5YV26HMJ.mjs.gz +0 -0
  134. package/dist/chunk-CIK6XUOH.js.br +0 -0
  135. package/dist/chunk-CIK6XUOH.js.gz +0 -0
  136. package/dist/chunk-JV6DI7AK.js.br +0 -0
  137. package/dist/chunk-JV6DI7AK.js.gz +0 -0
  138. package/dist/chunk-LDD2UVCV.mjs.br +0 -0
  139. package/dist/chunk-LDD2UVCV.mjs.gz +0 -0
  140. package/dist/chunk-MDFCBYEM.mjs.br +0 -0
  141. package/dist/chunk-MDFCBYEM.mjs.gz +0 -0
  142. package/dist/chunk-MMFM7JRT.js.br +0 -0
  143. package/dist/chunk-MMFM7JRT.js.gz +0 -0
  144. package/dist/chunk-NKE64XVV.js.br +0 -0
  145. package/dist/chunk-NKE64XVV.js.gz +0 -0
  146. package/dist/chunk-OYF6ISXZ.mjs.br +0 -0
  147. package/dist/chunk-P6KM7RO5.js.br +0 -0
  148. package/dist/chunk-P6KM7RO5.js.gz +0 -0
  149. package/dist/chunk-PYV6FIYK.js.br +0 -0
  150. package/dist/chunk-PYV6FIYK.js.gz +0 -0
  151. package/dist/chunk-QI2JCXTH.mjs.br +0 -0
  152. package/dist/chunk-QI2JCXTH.mjs.gz +0 -0
  153. package/dist/chunk-UWYHBCLM.mjs.br +0 -0
  154. package/dist/chunk-UWYHBCLM.mjs.gz +0 -0
  155. package/dist/chunk-Z4CS2ZYN.mjs.br +0 -0
  156. package/dist/chunk-Z4CS2ZYN.mjs.gz +0 -0
  157. package/dist/y-webrtc-DGVURJIF.mjs.br +0 -0
  158. package/dist/y-webrtc-DGVURJIF.mjs.gz +0 -0
  159. package/dist/y-webrtc-YN53KW3J.js.br +0 -0
  160. package/dist/y-webrtc-YN53KW3J.js.gz +0 -0
  161. package/dist/y-websocket-HZCIQLM6.js.br +0 -0
  162. package/dist/y-websocket-HZCIQLM6.js.gz +0 -0
  163. package/dist/y-websocket-P5LTAJ5T.mjs.br +0 -0
  164. package/dist/y-websocket-P5LTAJ5T.mjs.gz +0 -0
  165. package/dist/yjs-FKGX4QHS.mjs.br +0 -0
  166. package/dist/yjs-FKGX4QHS.mjs.gz +0 -0
  167. package/dist/yjs-HBLSEMHP.js.br +0 -0
  168. package/dist/yjs-HBLSEMHP.js.gz +0 -0
Binary file
Binary file
@@ -1,4 +1,4 @@
1
- import { ThemePresets, PptxMarkdownConverter } from './chunk-MDFCBYEM.mjs';
1
+ import { ThemePresets, PptxMarkdownConverter } from './chunk-23WSCMWN.mjs';
2
2
  import { __export } from './chunk-XGB3TDIC.mjs';
3
3
  import * as mcp from 'pptx-viewer-mcp';
4
4
  import * as mcpSchemas from 'pptx-viewer-mcp/schemas';
Binary file
Binary file
@@ -1,6 +1,6 @@
1
- import { cloneHistorySnapshot, MIN_ELEMENT_SIZE, ZOOM_TO_SELECTION_PADDING, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, partitionTemplateElements, UNGROUPED_SECTION_ID, buildSaveSlides, DEFAULT_TABLE_ROWS, DEFAULT_TABLE_COLUMNS, executeMediaCommand, buildPdfFromImageData, buildNotesPdf, EMU_PER_PX, GRID_SIZE, DEFAULT_TEXT_FONT_SIZE } from './chunk-Z4CS2ZYN.mjs';
2
- import { translationsEn } from './chunk-5YV26HMJ.mjs';
3
- import { 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, createCollaborationLivePatcher, publishLiveInlineText, PptxHandler, collectMediaElements, collectImagePaths, buildInitialGuides, EncryptedFileError, saveAutosaveSnapshot, isTemplateElementId, hasShapeProperties, hasTextProperties, getInlineEditorSelection, applyStyleToSelectedSegments, setPendingSelectionRestore, applyCaseTransformToSegments, transformTextCase, addSection, renameSection, deleteSection, moveSectionUp, moveSectionDown, moveSlidesToSection, normalizeColorsForCapture, preprocessCssForCapture, downloadBlob, sanitizeDownloadFilename, slideProgressPercent, slideStatusLabel, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, isExportAbortError, recordProgressPercent, applyThemeToData, THEME_PRESETS, themeColorSchemesEqual, comparePresentation, applyAcceptSlide, applyAcceptAllSlides, collectUsedFonts, detectTouchDevice, detectOrientation, isMobileViewport, MOBILE_BREAKPOINT, TABLET_BREAKPOINT, mayLeaveSlideShow, stopAllPersistentAudio, remapTextToSegments, guidePxToEmu, shouldLoopContinuously, applyRehearsalTimings, copyFormatFromElement, applyFormatToElement, mapEditorKey, isEditorTextInputTarget, createViewerOptionsStore, readSlidesFromYDoc, reconcileSlidesInYDoc, LOCAL_SYNC_ORIGIN, observeYDocSlides, shouldAutoFollowBroadcaster, createTouchGestureRecognizer, MAX_ZOOM_SCALE, MIN_ZOOM_SCALE, isKeyboardOpen, openPptxFile, readBackstageRecentFile, isActionHidden, buildElementClipboardPayload, generatePackageReadme, exportDeckJson, groupElements, generateElementId, makeCloneId, alignElements, distributeElements, bringForward, sendBackward, bringToFront, sendToBack, newTableElement, createDefaultChartElement, readViewportMetrics, computeKeyboardInset, mergeShapes, mapPresentationKey, lastShowSlideIndex, firstShowSlideIndex, mapPresentationWheel, buildPrintDocument, buildOutlineHtml, buildSlidesHtml, buildNotesHtml, buildHandoutsHtml, createBlankSlide, makeSlideId, buildSlideTemplateSlide, templateSchemeFromTheme, buildThemeColorMap, reResolveSlideColors, computeEntranceAnimationDelay, createPresentationSessionId, resolveTransitionDurationMs, runPresentationAction, createPresenterTimer, createInitialPresentationSnapshot, mergePresentationSnapshot, resetPresenterTimer, presenterElapsed, stepPresenterZoom, togglePresenterTimer, canvasToJpegData, downloadDataUrl, pickSupportedMimeType, WEBM_MIME_CANDIDATES, fpsToFrameIntervalMs, segmentFrameCount, encodeGif, resolveShowSlideIndexes, groupSlidesBySection, hasCopyableFormat, createBackstagePresentation, buildFieldSubstitutionContext, cloneElementForPaste, computeScrollDelta, getPresetShapeClipPath, svgPathToPolygons, polygonsToSvgPath, rerouteConnectorsForMovedElements, applyReroutedConnectors, SvgExporter, buildPrintHtmlDocument, deleteTableColumn, rebuildTableStructureInRawXml, insertTableColumn, deleteTableRow, insertTableRow, updateCellTextStyleInRawXml, updateCellTextInRawXml, splitCell, updateMergeAttrsInRawXml, mergeCells, isPpactionUrl, parsePpactionUrl, safeOpenUrl, ACTION_BUTTON_PRESETS, elementActionToPptxAction, buildSmartArtPresetData, computeSnapToShape, publishLiveGeometry, computeMarqueeHitIds, mergeAdditiveSelection, applyResize, snapBoxToGrid, applyMotionPathPreset } from './chunk-MDFCBYEM.mjs';
1
+ import { cloneHistorySnapshot, MIN_ELEMENT_SIZE, ZOOM_TO_SELECTION_PADDING, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, partitionTemplateElements, UNGROUPED_SECTION_ID, buildSaveSlides, DEFAULT_TABLE_ROWS, DEFAULT_TABLE_COLUMNS, executeMediaCommand, buildPdfFromImageData, buildNotesPdf, EMU_PER_PX, GRID_SIZE, DEFAULT_TEXT_FONT_SIZE } from './chunk-PLBS7OL2.mjs';
2
+ import { translationsEn } from './chunk-5IUEPQTK.mjs';
3
+ import { 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, createCollaborationLivePatcher, publishLiveInlineText, PptxHandler, collectMediaElements, collectImagePaths, buildInitialGuides, EncryptedFileError, saveAutosaveSnapshot, isTemplateElementId, hasShapeProperties, hasTextProperties, getInlineEditorSelection, applyStyleToSelectedSegments, setPendingSelectionRestore, applyCaseTransformToSegments, transformTextCase, addSection, renameSection, deleteSection, moveSectionUp, moveSectionDown, moveSlidesToSection, normalizeColorsForCapture, preprocessCssForCapture, downloadBlob, sanitizeDownloadFilename, slideProgressPercent, slideStatusLabel, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, isExportAbortError, recordProgressPercent, applyThemeToData, THEME_PRESETS, themeColorSchemesEqual, comparePresentation, applyAcceptSlide, applyAcceptAllSlides, collectUsedFonts, detectTouchDevice, detectOrientation, isMobileViewport, MOBILE_BREAKPOINT, TABLET_BREAKPOINT, mayLeaveSlideShow, stopAllPersistentAudio, remapTextToSegments, guidePxToEmu, shouldLoopContinuously, applyRehearsalTimings, copyFormatFromElement, applyFormatToElement, mapEditorKey, isEditorTextInputTarget, createViewerOptionsStore, readSlidesFromYDoc, reconcileSlidesInYDoc, LOCAL_SYNC_ORIGIN, observeYDocSlides, shouldAutoFollowBroadcaster, createTouchGestureRecognizer, MAX_ZOOM_SCALE, MIN_ZOOM_SCALE, isKeyboardOpen, openPptxFile, readBackstageRecentFile, isActionHidden, buildElementClipboardPayload, generatePackageReadme, exportDeckJson, groupElements, generateElementId, makeCloneId, alignElements, distributeElements, bringForward, sendBackward, bringToFront, sendToBack, newTableElement, createDefaultChartElement, readViewportMetrics, computeKeyboardInset, mergeShapes, mapPresentationKey, lastShowSlideIndex, firstShowSlideIndex, mapPresentationWheel, buildPrintDocument, buildOutlineHtml, buildSlidesHtml, buildNotesHtml, buildHandoutsHtml, createBlankSlide, makeSlideId, buildSlideTemplateSlide, templateSchemeFromTheme, buildThemeColorMap, reResolveSlideColors, computeEntranceAnimationDelay, createPresentationSessionId, resolveTransitionDurationMs, runPresentationAction, createPresenterTimer, createInitialPresentationSnapshot, mergePresentationSnapshot, resetPresenterTimer, presenterElapsed, stepPresenterZoom, togglePresenterTimer, canvasToJpegData, downloadDataUrl, pickSupportedMimeType, WEBM_MIME_CANDIDATES, fpsToFrameIntervalMs, segmentFrameCount, encodeGif, resolveShowSlideIndexes, groupSlidesBySection, hasCopyableFormat, createBackstagePresentation, buildFieldSubstitutionContext, cloneElementForPaste, computeScrollDelta, getPresetShapeClipPath, svgPathToPolygons, polygonsToSvgPath, rerouteConnectorsForMovedElements, applyReroutedConnectors, SvgExporter, buildPrintHtmlDocument, deleteTableColumn, rebuildTableStructureInRawXml, insertTableColumn, deleteTableRow, insertTableRow, updateCellTextStyleInRawXml, updateCellTextInRawXml, splitCell, updateMergeAttrsInRawXml, mergeCells, isPpactionUrl, parsePpactionUrl, safeOpenUrl, ACTION_BUTTON_PRESETS, elementActionToPptxAction, buildSmartArtPresetData, computeSnapToShape, publishLiveGeometry, computeMarqueeHitIds, mergeAdditiveSelection, applyResize, snapBoxToGrid, applyMotionPathPreset } from './chunk-23WSCMWN.mjs';
4
4
  import { useRef, useState, useEffect, useCallback, useMemo, useLayoutEffect, useSyncExternalStore, useImperativeHandle } from 'react';
5
5
  import JSZip from 'jszip';
6
6
  import { useTranslation } from 'react-i18next';
@@ -230,7 +230,7 @@ function useYjsProvider({ config }) {
230
230
  }
231
231
  setStatus("connecting");
232
232
  try {
233
- const [Y, { WebrtcProvider }] = await Promise.all([import('./yjs-FKGX4QHS.mjs'), import('./y-webrtc-DGVURJIF.mjs')]);
233
+ const [Y, { WebrtcProvider }] = await Promise.all([import('./yjs-4ED7E5CZ.mjs'), import('./y-webrtc-7DLWG3LJ.mjs')]);
234
234
  const yDoc = new Y.Doc();
235
235
  const opts = {};
236
236
  if (config.signaling && config.signaling.length > 0) {
@@ -298,7 +298,7 @@ function useYjsProvider({ config }) {
298
298
  }
299
299
  setStatus("connecting");
300
300
  try {
301
- const [Y, { WebsocketProvider }] = await Promise.all([import('./yjs-FKGX4QHS.mjs'), import('./y-websocket-P5LTAJ5T.mjs')]);
301
+ const [Y, { WebsocketProvider }] = await Promise.all([import('./yjs-4ED7E5CZ.mjs'), import('./y-websocket-DCTJ76B7.mjs')]);
302
302
  const yDoc = new Y.Doc();
303
303
  const provider = new WebsocketProvider(config.serverUrl, roomId, yDoc, {
304
304
  params: config.authToken ? { token: config.authToken } : void 0
@@ -3488,6 +3488,7 @@ function useViewerCoreState(_input) {
3488
3488
  const shapeAdjustmentDragStateRef = useRef(null);
3489
3489
  const marqueeStateRef = useRef(null);
3490
3490
  const isDrawingRef = useRef(false);
3491
+ const justInteractedRef = useRef(false);
3491
3492
  const livePatcher = useMemo(() => createCollaborationLivePatcher(), []);
3492
3493
  useEffect(() => () => livePatcher.dispose(), [livePatcher]);
3493
3494
  const slidesRef = useRef([]);
@@ -3584,6 +3585,7 @@ function useViewerCoreState(_input) {
3584
3585
  shapeAdjustmentDragStateRef,
3585
3586
  marqueeStateRef,
3586
3587
  isDrawingRef,
3588
+ justInteractedRef,
3587
3589
  livePatcher,
3588
3590
  mode,
3589
3591
  setMode,
@@ -4601,6 +4603,7 @@ function processPointerUp(input) {
4601
4603
  dragStateRef,
4602
4604
  resizeStateRef,
4603
4605
  shapeAdjustmentDragStateRef,
4606
+ justInteractedRef,
4604
4607
  setMarqueeSelectionState,
4605
4608
  setSnapLines,
4606
4609
  setTemplateElementsBySlideId,
@@ -4665,6 +4668,9 @@ function processPointerUp(input) {
4665
4668
  );
4666
4669
  }
4667
4670
  const wasMoved = drag?.moved || rs?.moved || adj?.moved;
4671
+ if (wasMoved) {
4672
+ justInteractedRef.current = true;
4673
+ }
4668
4674
  if (wasMoved) {
4669
4675
  livePatcher?.flush();
4670
4676
  }
@@ -4842,6 +4848,7 @@ function useCanvasInteractions(input) {
4842
4848
  resizeStateRef,
4843
4849
  shapeAdjustmentDragStateRef,
4844
4850
  marqueeStateRef,
4851
+ justInteractedRef,
4845
4852
  setInlineEditingElementId,
4846
4853
  setInlineEditingText,
4847
4854
  setContextMenuState,
@@ -4901,8 +4908,9 @@ function useCanvasInteractions(input) {
4901
4908
  const newIds = ids.includes(elementId) ? ids.filter((id) => id !== elementId) : [...ids, elementId];
4902
4909
  ops.applySelection(newIds[0] ?? null, newIds);
4903
4910
  } else if (selectedElementIdSet.has(elementId) && !inlineEditingElementId) {
4904
- if (justSelectedRef.current) {
4911
+ if (justSelectedRef.current || justInteractedRef.current) {
4905
4912
  justSelectedRef.current = false;
4913
+ justInteractedRef.current = false;
4906
4914
  } else {
4907
4915
  const el = elementLookup.get(elementId);
4908
4916
  if (el && hasTextProperties(el) && !el.locks?.noTextEdit) {
@@ -8970,6 +8978,7 @@ function useEditorOperations(input) {
8970
8978
  resizeStateRef: state.resizeStateRef,
8971
8979
  shapeAdjustmentDragStateRef: state.shapeAdjustmentDragStateRef,
8972
8980
  marqueeStateRef: state.marqueeStateRef,
8981
+ justInteractedRef: state.justInteractedRef,
8973
8982
  setInlineEditingElementId: state.setInlineEditingElementId,
8974
8983
  setInlineEditingText: state.setInlineEditingText,
8975
8984
  setContextMenuState: state.setContextMenuState,
@@ -9629,6 +9638,7 @@ function useViewerIntegration(input) {
9629
9638
  resizeStateRef: state.resizeStateRef,
9630
9639
  shapeAdjustmentDragStateRef: state.shapeAdjustmentDragStateRef,
9631
9640
  marqueeStateRef: state.marqueeStateRef,
9641
+ justInteractedRef: state.justInteractedRef,
9632
9642
  editTemplateMode: state.editTemplateMode,
9633
9643
  snapToGrid: state.snapToGrid,
9634
9644
  snapToShape: state.snapToShape,
@@ -10026,7 +10036,7 @@ function useYjsDocumentSync({
10026
10036
  if (factoriesRef.current) {
10027
10037
  return factoriesRef.current;
10028
10038
  }
10029
- const Y = await import('./yjs-FKGX4QHS.mjs');
10039
+ const Y = await import('./yjs-4ED7E5CZ.mjs');
10030
10040
  const factories = {
10031
10041
  createMap: () => new Y.Map(),
10032
10042
  createArray: () => new Y.Array(),
@@ -10242,7 +10252,7 @@ function useCollaborationLivePatch({
10242
10252
  }
10243
10253
  let cancelled = false;
10244
10254
  void (async () => {
10245
- const Y = await import('./yjs-FKGX4QHS.mjs');
10255
+ const Y = await import('./yjs-4ED7E5CZ.mjs');
10246
10256
  if (cancelled) {
10247
10257
  return;
10248
10258
  }
Binary file
Binary file
@@ -8520,20 +8520,18 @@ function createTableElement(input, options) {
8520
8520
  }
8521
8521
  const rows = input.rows.map((rowInput) => ({
8522
8522
  height: rowInput.height ?? rowHeight,
8523
- cells: rowInput.cells.map(
8524
- (cellInput) => ({
8525
- text: cellInput.text,
8526
- gridSpan: cellInput.gridSpan,
8527
- rowSpan: cellInput.rowSpan,
8528
- style: cellInput.style ? {
8529
- fontSize: cellInput.style.fontSize,
8530
- bold: cellInput.style.bold,
8531
- italic: cellInput.style.italic,
8532
- color: cellInput.style.color,
8533
- align: cellInput.style.alignment
8534
- } : void 0
8535
- })
8536
- )
8523
+ cells: rowInput.cells.map((cellInput) => ({
8524
+ text: cellInput.text,
8525
+ gridSpan: cellInput.gridSpan,
8526
+ rowSpan: cellInput.rowSpan,
8527
+ style: cellInput.style ? {
8528
+ fontSize: cellInput.style.fontSize,
8529
+ bold: cellInput.style.bold,
8530
+ italic: cellInput.style.italic,
8531
+ color: cellInput.style.color,
8532
+ align: cellInput.style.alignment
8533
+ } : void 0
8534
+ }))
8537
8535
  }));
8538
8536
  const tableData = {
8539
8537
  rows,
@@ -42502,17 +42500,13 @@ function remapCellStyleColors(style, remap) {
42502
42500
  function remapTableColors(tableData, remap) {
42503
42501
  return {
42504
42502
  ...tableData,
42505
- rows: tableData.rows.map(
42506
- (row) => ({
42507
- ...row,
42508
- cells: row.cells.map(
42509
- (cell) => ({
42510
- ...cell,
42511
- style: remapCellStyleColors(cell.style, remap)
42512
- })
42513
- )
42514
- })
42515
- )
42503
+ rows: tableData.rows.map((row) => ({
42504
+ ...row,
42505
+ cells: row.cells.map((cell) => ({
42506
+ ...cell,
42507
+ style: remapCellStyleColors(cell.style, remap)
42508
+ }))
42509
+ }))
42516
42510
  };
42517
42511
  }
42518
42512
  function remapSlideColors(slide, remap) {
@@ -42979,9 +42973,10 @@ function parseWhen(node) {
42979
42973
  } : void 0;
42980
42974
  }
42981
42975
  function parseSmartArtControlFlow(node, localName22) {
42982
- const forEach = children5(node, "forEach", localName22).map(
42983
- (entry2) => ({ ...parseIterator(entry2), rawXml: entry2 })
42984
- );
42976
+ const forEach = children5(node, "forEach", localName22).map((entry2) => ({
42977
+ ...parseIterator(entry2),
42978
+ rawXml: entry2
42979
+ }));
42985
42980
  const choose = children5(node, "choose", localName22).map((entry2) => {
42986
42981
  const otherwiseNode = children5(entry2, "else", localName22)[0];
42987
42982
  return {
@@ -102266,27 +102261,24 @@ function newTableElement(rows = 3, cols = 3, x = DEFAULT_X, y = TABLE_DEFAULT_Y)
102266
102261
  const columnWidths = Array.from({ length: cols }).fill(colWidth);
102267
102262
  const tableRows = Array.from({ length: rows }, (_, rowIdx) => {
102268
102263
  const isHeader = rowIdx === 0;
102269
- const cells = Array.from(
102270
- { length: cols },
102271
- (__, colIdx) => ({
102272
- text: isHeader ? `Header ${colIdx + 1}` : "",
102273
- style: {
102274
- borderTopWidth: 1,
102275
- borderBottomWidth: 1,
102276
- borderLeftWidth: 1,
102277
- borderRightWidth: 1,
102278
- borderTopColor: "#cccccc",
102279
- borderBottomColor: "#cccccc",
102280
- borderLeftColor: "#cccccc",
102281
- borderRightColor: "#cccccc",
102282
- ...isHeader ? {
102283
- bold: true,
102284
- backgroundColor: "#2563eb",
102285
- color: "#ffffff"
102286
- } : {}
102287
- }
102288
- })
102289
- );
102264
+ const cells = Array.from({ length: cols }, (__, colIdx) => ({
102265
+ text: isHeader ? `Header ${colIdx + 1}` : "",
102266
+ style: {
102267
+ borderTopWidth: 1,
102268
+ borderBottomWidth: 1,
102269
+ borderLeftWidth: 1,
102270
+ borderRightWidth: 1,
102271
+ borderTopColor: "#cccccc",
102272
+ borderBottomColor: "#cccccc",
102273
+ borderLeftColor: "#cccccc",
102274
+ borderRightColor: "#cccccc",
102275
+ ...isHeader ? {
102276
+ bold: true,
102277
+ backgroundColor: "#2563eb",
102278
+ color: "#ffffff"
102279
+ } : {}
102280
+ }
102281
+ }));
102290
102282
  return { cells, height: isHeader ? 40 : 36 };
102291
102283
  });
102292
102284
  return {
@@ -103825,6 +103817,7 @@ var translationsEn = {
103825
103817
  "pptx.inspector.lock": "Lock",
103826
103818
  "pptx.inspector.unlock": "Unlock",
103827
103819
  // Slide master / handout master / notes master
103820
+ "pptx.master.backgroundColorLabel": "Master background color",
103828
103821
  "pptx.master.collapseMasterPane": "Collapse pane",
103829
103822
  "pptx.master.handoutBackground": "Background",
103830
103823
  "pptx.master.handoutMasterTitle": "Handout Master",
@@ -108041,19 +108034,21 @@ function childrenPair(a, b) {
108041
108034
  }
108042
108035
  return boxOverlapRatio(a, b) >= CHILD_OVERLAP_RATIO;
108043
108036
  }
108044
- function childrenCorrespond(a, b) {
108037
+ function correspondingChildren(a, b) {
108045
108038
  if (a.length !== b.length || a.length === 0) {
108046
- return false;
108039
+ return void 0;
108047
108040
  }
108048
108041
  const unclaimed = b.map((child22) => child22);
108042
+ const paired = [];
108049
108043
  for (const child22 of a) {
108050
108044
  const index = unclaimed.findIndex((candidate) => childrenPair(child22, candidate));
108051
108045
  if (index < 0) {
108052
- return false;
108046
+ return void 0;
108053
108047
  }
108048
+ paired.push([child22, unclaimed[index]]);
108054
108049
  unclaimed.splice(index, 1);
108055
108050
  }
108056
- return true;
108051
+ return paired;
108057
108052
  }
108058
108053
  function flattenMorphElements(elements, counterpart, offsetX = 0, offsetY = 0) {
108059
108054
  const out = [];
@@ -108062,7 +108057,7 @@ function flattenMorphElements(elements, counterpart, offsetX = 0, offsetY = 0) {
108062
108057
  if (children8 && containsMorphNamedDescendant(element)) {
108063
108058
  const twin = correspondingGroup(element, counterpart);
108064
108059
  const twinChildren = twin ? groupChildren(twin) ?? [] : void 0;
108065
- if (twinChildren && childrenCorrespond(children8, twinChildren)) {
108060
+ if (twinChildren && correspondingChildren(children8, twinChildren)) {
108066
108061
  out.push(
108067
108062
  ...flattenMorphElements(children8, twinChildren, offsetX + element.x, offsetY + element.y)
108068
108063
  );
@@ -108073,6 +108068,29 @@ function flattenMorphElements(elements, counterpart, offsetX = 0, offsetY = 0) {
108073
108068
  }
108074
108069
  return out;
108075
108070
  }
108071
+ function morphGroupChildPairs(elements, counterpart) {
108072
+ const pairs2 = /* @__PURE__ */ new Map();
108073
+ collectGroupChildPairs(elements, counterpart, pairs2);
108074
+ return pairs2;
108075
+ }
108076
+ function collectGroupChildPairs(elements, counterpart, into) {
108077
+ for (const element of elements) {
108078
+ const children8 = groupChildren(element);
108079
+ if (!children8 || !containsMorphNamedDescendant(element)) {
108080
+ continue;
108081
+ }
108082
+ const twin = correspondingGroup(element, counterpart);
108083
+ const twinChildren = twin ? groupChildren(twin) ?? [] : void 0;
108084
+ const corresponded = twinChildren ? correspondingChildren(children8, twinChildren) : void 0;
108085
+ if (!corresponded) {
108086
+ continue;
108087
+ }
108088
+ for (const [child22, twinChild] of corresponded) {
108089
+ into.set(child22.id, twinChild.id);
108090
+ }
108091
+ collectGroupChildPairs(children8, twinChildren ?? [], into);
108092
+ }
108093
+ }
108076
108094
  var OUTLINE_SAMPLE_COUNT = 64;
108077
108095
  var ELLIPSE_SAMPLE_COUNT = 48;
108078
108096
  function resolveLength(token2, axis) {
@@ -108539,6 +108557,23 @@ function matchMorphElementsFull(fromSlide, toSlide) {
108539
108557
  }
108540
108558
  }
108541
108559
  }
108560
+ const groupChildPairs = morphGroupChildPairs(fromSlide.elements, toSlide.elements);
108561
+ if (groupChildPairs.size > 0) {
108562
+ const toById = new Map(toElements.map((el) => [el.id, el]));
108563
+ for (const fromEl of fromElements) {
108564
+ if (usedFrom.has(fromEl.id)) {
108565
+ continue;
108566
+ }
108567
+ const toId = groupChildPairs.get(fromEl.id);
108568
+ const toEl = toId === void 0 ? void 0 : toById.get(toId);
108569
+ if (!toEl || usedTo.has(toEl.id) || fromEl.type !== toEl.type) {
108570
+ continue;
108571
+ }
108572
+ pairs2.push({ fromElement: fromEl, toElement: toEl });
108573
+ usedFrom.add(fromEl.id);
108574
+ usedTo.add(toEl.id);
108575
+ }
108576
+ }
108542
108577
  for (const fromEl of fromElements) {
108543
108578
  if (usedFrom.has(fromEl.id) || !fromEl.shapeId) {
108544
108579
  continue;
@@ -108645,7 +108680,7 @@ function buildMorphMergedOrder(outgoing, incoming, pairs2) {
108645
108680
  flushOutgoingBelow(outgoing.length);
108646
108681
  return rank;
108647
108682
  }
108648
- function resolveMorphOverlayArrivals(outgoing, incoming, pairs2, holdingGhostIds) {
108683
+ function resolveMorphOverlayArrivals(outgoing, incoming, pairs2, holdingGhostIds, dissolvingInIds = /* @__PURE__ */ new Set()) {
108649
108684
  const rank = buildMorphMergedOrder(outgoing, incoming, pairs2);
108650
108685
  const matched = new Set(pairs2.map((pair) => pair.toElement.id));
108651
108686
  const counterpart = new Map(pairs2.map((pair) => [pair.fromElement.id, pair.toElement]));
@@ -108655,7 +108690,7 @@ function resolveMorphOverlayArrivals(outgoing, incoming, pairs2, holdingGhostIds
108655
108690
  }));
108656
108691
  const lifted = /* @__PURE__ */ new Set();
108657
108692
  for (const element of incoming) {
108658
- if (matched.has(element.id)) {
108693
+ if (matched.has(element.id) && !dissolvingInIds.has(element.id)) {
108659
108694
  continue;
108660
108695
  }
108661
108696
  const mine = rank.get(element.id) ?? 0;
@@ -108720,6 +108755,21 @@ function tokenizeText(element, mode) {
108720
108755
  }
108721
108756
  return tokens;
108722
108757
  }
108758
+ var SAME_SLOT_OVERLAP = 0.5;
108759
+ function ownText(element) {
108760
+ return (element.text ?? "").replace(/\s+/gu, " ").trim();
108761
+ }
108762
+ function morphTextReplacedInSlot(fromElement, toElement) {
108763
+ if (fromElement.type !== "text" || toElement.type !== "text") {
108764
+ return false;
108765
+ }
108766
+ const from = ownText(fromElement);
108767
+ const to = ownText(toElement);
108768
+ if (from === "" || to === "" || from === to) {
108769
+ return false;
108770
+ }
108771
+ return boxOverlapRatio(fromElement, toElement) >= SAME_SLOT_OVERLAP;
108772
+ }
108723
108773
  function diffTokens(fromTokens, toTokens) {
108724
108774
  const n = fromTokens.length;
108725
108775
  const m = toTokens.length;
@@ -108918,6 +108968,9 @@ function resolveMorphGhostIds(outgoingElements, pairs2) {
108918
108968
  }
108919
108969
  return painted;
108920
108970
  }
108971
+ function morphPairIncomingFadesIn(fromElement, toElement, ghosted = true) {
108972
+ return !(ghosted && isInertMorphPair(fromElement, toElement)) && morphPairNeedsCrossfade(fromElement, toElement) && crossfadeIncomingMayFadeIn(toElement);
108973
+ }
108921
108974
  function crossfadeIncomingMayFadeIn(element) {
108922
108975
  const image = element;
108923
108976
  if (image.imagePath || image.svgPath) {
@@ -108948,17 +109001,18 @@ function generateMorphAnimations(pairs2, durationMs, _mode = "object", ghostIds)
108948
109001
  continue;
108949
109002
  }
108950
109003
  const safeName = `pptx-morph-${index}-${toElement.id.replace(/[^a-zA-Z0-9]/gu, "")}`;
108951
- const dx = fromElement.x + fromElement.width / 2 - (toElement.x + toElement.width / 2);
108952
- const dy = fromElement.y + fromElement.height / 2 - (toElement.y + toElement.height / 2);
108953
- const sx = Math.max(fromElement.width, 1) / Math.max(toElement.width, 1);
108954
- const sy = Math.max(fromElement.height, 1) / Math.max(toElement.height, 1);
109004
+ const inSlot = morphTextReplacedInSlot(fromElement, toElement);
109005
+ const dx = inSlot ? 0 : fromElement.x + fromElement.width / 2 - (toElement.x + toElement.width / 2);
109006
+ const dy = inSlot ? 0 : fromElement.y + fromElement.height / 2 - (toElement.y + toElement.height / 2);
109007
+ const sx = inSlot ? 1 : Math.max(fromElement.width, 1) / Math.max(toElement.width, 1);
109008
+ const sy = inSlot ? 1 : Math.max(fromElement.height, 1) / Math.max(toElement.height, 1);
108955
109009
  const fromOpacity = fromElement.opacity ?? 1;
108956
109010
  const toOpacity = toElement.opacity ?? 1;
108957
109011
  const toRot = toElement.rotation ?? 0;
108958
- const fromRot = shortestRotationTarget(toRot, fromElement.rotation ?? 0);
109012
+ const fromRot = inSlot ? toRot : shortestRotationTarget(toRot, fromElement.rotation ?? 0);
108959
109013
  const flips = `${toElement.flipHorizontal ? " scaleX(-1)" : ""}${toElement.flipVertical ? " scaleY(-1)" : ""}`;
108960
109014
  const inert = ghosted && isInertMorphPair(fromElement, toElement);
108961
- const crossfadesIn = !inert && morphPairNeedsCrossfade(fromElement, toElement) && crossfadeIncomingMayFadeIn(toElement);
109015
+ const crossfadesIn = morphPairIncomingFadesIn(fromElement, toElement, ghosted);
108962
109016
  const fromProps = [
108963
109017
  ` transform: translate(${dx}px, ${dy}px) scale(${sx}, ${sy}) rotate(${fromRot}deg)${flips};`
108964
109018
  ];
@@ -109013,12 +109067,13 @@ function generateMorphGhostAnimations(pairs2, durationMs, startIndex, ghostIds)
109013
109067
  }
109014
109068
  const fadesOut = morphPairNeedsCrossfade(fromElement, toElement);
109015
109069
  const safeName = `pptx-morph-ghost-${startIndex + index}-${fromElement.id.replace(/[^a-zA-Z0-9]/gu, "")}`;
109016
- const dx = toElement.x + toElement.width / 2 - (fromElement.x + fromElement.width / 2);
109017
- const dy = toElement.y + toElement.height / 2 - (fromElement.y + fromElement.height / 2);
109018
- const sx = Math.max(toElement.width, 1) / Math.max(fromElement.width, 1);
109019
- const sy = Math.max(toElement.height, 1) / Math.max(fromElement.height, 1);
109070
+ const inSlot = morphTextReplacedInSlot(fromElement, toElement);
109071
+ const dx = inSlot ? 0 : toElement.x + toElement.width / 2 - (fromElement.x + fromElement.width / 2);
109072
+ const dy = inSlot ? 0 : toElement.y + toElement.height / 2 - (fromElement.y + fromElement.height / 2);
109073
+ const sx = inSlot ? 1 : Math.max(toElement.width, 1) / Math.max(fromElement.width, 1);
109074
+ const sy = inSlot ? 1 : Math.max(toElement.height, 1) / Math.max(fromElement.height, 1);
109020
109075
  const fromRot = fromElement.rotation ?? 0;
109021
- const toRot = shortestRotationTarget(fromRot, toElement.rotation ?? 0);
109076
+ const toRot = inSlot ? fromRot : shortestRotationTarget(fromRot, toElement.rotation ?? 0);
109022
109077
  const flips = `${fromElement.flipHorizontal ? " scaleX(-1)" : ""}${fromElement.flipVertical ? " scaleY(-1)" : ""}`;
109023
109078
  const opacity2 = fromElement.opacity ?? 1;
109024
109079
  const keyframes = `
@@ -109236,11 +109291,21 @@ function buildMorphTransitionPlan(fromSlide, toSlide, durationMs, mode = "object
109236
109291
  (candidate) => outgoingAnimations.has(candidate.fromElement.id) && !morphPairNeedsCrossfade(candidate.fromElement, candidate.toElement)
109237
109292
  ).map((candidate) => candidate.fromElement.id)
109238
109293
  );
109294
+ const dissolvingInIds = new Set(
109295
+ match.pairs.filter(
109296
+ (candidate) => morphPairIncomingFadesIn(
109297
+ candidate.fromElement,
109298
+ candidate.toElement,
109299
+ outgoingAnimations.has(candidate.fromElement.id)
109300
+ )
109301
+ ).map((candidate) => candidate.toElement.id)
109302
+ );
109239
109303
  const lifted = resolveMorphOverlayArrivals(
109240
109304
  flattenedOutgoing,
109241
109305
  flattenedIncoming,
109242
109306
  match.pairs,
109243
- holdingGhostIds
109307
+ holdingGhostIds,
109308
+ dissolvingInIds
109244
109309
  );
109245
109310
  const overlayIncomingAnimations = /* @__PURE__ */ new Map();
109246
109311
  for (const id of lifted) {
Binary file
Binary file