pptx-react-viewer 4.63.0 → 4.64.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 (105) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/dist/{AiChatPanel-7DESUEAZ.js → AiChatPanel-DRY6JUQE.js} +19 -19
  3. package/dist/AiChatPanel-DRY6JUQE.js.br +0 -0
  4. package/dist/AiChatPanel-DRY6JUQE.js.gz +0 -0
  5. package/dist/{AiChatPanel-GQ64SIYP.mjs → AiChatPanel-KBSDSD5Y.mjs} +1 -1
  6. package/dist/AiChatPanel-KBSDSD5Y.mjs.br +0 -0
  7. package/dist/AiChatPanel-KBSDSD5Y.mjs.gz +0 -0
  8. package/dist/ai.js +2 -2
  9. package/dist/ai.js.br +0 -0
  10. package/dist/ai.js.gz +0 -0
  11. package/dist/ai.mjs +1 -1
  12. package/dist/ai.mjs.br +0 -0
  13. package/dist/ai.mjs.gz +0 -0
  14. package/dist/{chunk-MR3ZSEHS.mjs → chunk-46VMP4EH.mjs} +2 -1
  15. package/dist/chunk-46VMP4EH.mjs.br +0 -0
  16. package/dist/chunk-46VMP4EH.mjs.gz +0 -0
  17. package/dist/{chunk-TXVGYIO6.js → chunk-73SDWM6K.js} +440 -425
  18. package/dist/chunk-73SDWM6K.js.br +0 -0
  19. package/dist/chunk-73SDWM6K.js.gz +0 -0
  20. package/dist/{chunk-F6WCYCHV.js → chunk-7UFO4OZQ.js} +1 -1
  21. package/dist/chunk-7UFO4OZQ.js.br +0 -0
  22. package/dist/chunk-7UFO4OZQ.js.gz +0 -0
  23. package/dist/{chunk-FYQVCABH.mjs → chunk-FYYQ4OGF.mjs} +243 -227
  24. package/dist/chunk-FYYQ4OGF.mjs.br +0 -0
  25. package/dist/chunk-FYYQ4OGF.mjs.gz +0 -0
  26. package/dist/{chunk-5KFSMXI4.js → chunk-JKSUB7DR.js} +5 -0
  27. package/dist/chunk-JKSUB7DR.js.br +0 -0
  28. package/dist/{chunk-5KFSMXI4.js.gz → chunk-JKSUB7DR.js.gz} +0 -0
  29. package/dist/{chunk-G5XPJCS5.js → chunk-PX46BOMQ.js} +832 -651
  30. package/dist/chunk-PX46BOMQ.js.br +0 -0
  31. package/dist/chunk-PX46BOMQ.js.gz +0 -0
  32. package/dist/{chunk-NE5JQMED.mjs → chunk-SGWF6GUX.mjs} +1 -1
  33. package/dist/chunk-SGWF6GUX.mjs.br +0 -0
  34. package/dist/chunk-SGWF6GUX.mjs.gz +0 -0
  35. package/dist/{chunk-XCOYNPXR.mjs → chunk-SHI3PQ5F.mjs} +281 -100
  36. package/dist/chunk-SHI3PQ5F.mjs.br +0 -0
  37. package/dist/chunk-SHI3PQ5F.mjs.gz +0 -0
  38. package/dist/i18n/de.cjs +89 -43
  39. package/dist/i18n/de.cjs.br +0 -0
  40. package/dist/i18n/de.cjs.gz +0 -0
  41. package/dist/i18n/de.mjs +89 -43
  42. package/dist/i18n/de.mjs.br +0 -0
  43. package/dist/i18n/de.mjs.gz +0 -0
  44. package/dist/i18n/es.cjs +89 -43
  45. package/dist/i18n/es.cjs.br +0 -0
  46. package/dist/i18n/es.cjs.gz +0 -0
  47. package/dist/i18n/es.mjs +89 -43
  48. package/dist/i18n/es.mjs.br +0 -0
  49. package/dist/i18n/es.mjs.gz +0 -0
  50. package/dist/i18n/fr.cjs +89 -43
  51. package/dist/i18n/fr.cjs.br +0 -0
  52. package/dist/i18n/fr.cjs.gz +0 -0
  53. package/dist/i18n/fr.mjs +89 -43
  54. package/dist/i18n/fr.mjs.br +0 -0
  55. package/dist/i18n/fr.mjs.gz +0 -0
  56. package/dist/i18n/zh-CN.cjs +95 -49
  57. package/dist/i18n/zh-CN.cjs.br +0 -0
  58. package/dist/i18n/zh-CN.cjs.gz +0 -0
  59. package/dist/i18n/zh-CN.mjs +95 -49
  60. package/dist/i18n/zh-CN.mjs.br +0 -0
  61. package/dist/i18n/zh-CN.mjs.gz +0 -0
  62. package/dist/index.d.ts +10 -1
  63. package/dist/index.js +27 -27
  64. package/dist/index.js.br +0 -0
  65. package/dist/index.js.gz +0 -0
  66. package/dist/index.mjs +4 -4
  67. package/dist/index.mjs.br +0 -0
  68. package/dist/index.mjs.gz +0 -0
  69. package/dist/internals.d.ts +10 -0
  70. package/dist/internals.js +81 -81
  71. package/dist/internals.js.br +0 -0
  72. package/dist/internals.js.gz +0 -0
  73. package/dist/internals.mjs +2 -2
  74. package/dist/internals.mjs.br +0 -0
  75. package/dist/internals.mjs.gz +0 -0
  76. package/dist/pptx-viewer-canvas.css +1 -1
  77. package/dist/pptx-viewer-canvas.css.br +0 -0
  78. package/dist/pptx-viewer-canvas.css.gz +0 -0
  79. package/dist/viewer/index.d.ts +10 -1
  80. package/dist/viewer/index.js +21 -21
  81. package/dist/viewer/index.js.br +0 -0
  82. package/dist/viewer/index.js.gz +0 -0
  83. package/dist/viewer/index.mjs +4 -4
  84. package/dist/viewer/index.mjs.br +0 -0
  85. package/dist/viewer/index.mjs.gz +0 -0
  86. package/package.json +3 -3
  87. package/dist/AiChatPanel-7DESUEAZ.js.br +0 -0
  88. package/dist/AiChatPanel-7DESUEAZ.js.gz +0 -0
  89. package/dist/AiChatPanel-GQ64SIYP.mjs.br +0 -0
  90. package/dist/AiChatPanel-GQ64SIYP.mjs.gz +0 -0
  91. package/dist/chunk-5KFSMXI4.js.br +0 -0
  92. package/dist/chunk-F6WCYCHV.js.br +0 -0
  93. package/dist/chunk-F6WCYCHV.js.gz +0 -0
  94. package/dist/chunk-FYQVCABH.mjs.br +0 -0
  95. package/dist/chunk-FYQVCABH.mjs.gz +0 -0
  96. package/dist/chunk-G5XPJCS5.js.br +0 -0
  97. package/dist/chunk-G5XPJCS5.js.gz +0 -0
  98. package/dist/chunk-MR3ZSEHS.mjs.br +0 -0
  99. package/dist/chunk-MR3ZSEHS.mjs.gz +0 -0
  100. package/dist/chunk-NE5JQMED.mjs.br +0 -0
  101. package/dist/chunk-NE5JQMED.mjs.gz +0 -0
  102. package/dist/chunk-TXVGYIO6.js.br +0 -0
  103. package/dist/chunk-TXVGYIO6.js.gz +0 -0
  104. package/dist/chunk-XCOYNPXR.mjs.br +0 -0
  105. package/dist/chunk-XCOYNPXR.mjs.gz +0 -0
@@ -1,5 +1,5 @@
1
- import { cloneTemplateElementsBySlideId, cloneSlide, cloneHistorySnapshot, MIN_ELEMENT_SIZE, ZOOM_TO_SELECTION_PADDING, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, useTranslation, partitionTemplateElements, isTemplateElementId, DEFAULT_TABLE_ROWS, DEFAULT_TABLE_COLUMNS, comparePresentation, UNGROUPED_SECTION_ID, DEFAULT_SECTION_GROUP_ID, stopAllPersistentAudio, buildSaveSlides, MAX_ZOOM_SCALE, MIN_ZOOM_SCALE, getImageEffectsOpacity, getImageEffectsFilter, getImageRenderStyle, cn, isEditableTextElement, getShapeVisualStyle, getTextStyleForElement, DEFAULT_TEXT_COLOR, renderVectorShape, isConnectorOrLineElement, build3DExtrusionData, getImageSurfaceStyle, getTextLayoutStyle, renderTableElement, renderMediaElement, shouldRenderFallbackLabel, getElementLabel, normalizeHexColor, makeCloneId, DEFAULT_TEXT_FONT_SIZE, buildPdfFromTiledImageData, GRID_SIZE, copyFormatFromElement, hasCopyableFormat, isImageTiled, getDuotoneColors, DEFAULT_STROKE_COLOR, DEFAULT_FILL_COLOR, buildCssGradientFromShapeStyle, getCropShapeClipPath, getElementTransform, hasDagDuotoneEffect, renderDagDuotoneSvgFilter, getImageSurfaceMaskStyle, getTextWarpStyle, getTextCompensationTransform, renderTextSegments, buildReactChartViewModel, renderChartElement, buildInkGroupStrokes, getInkReplayStyles, INK_REPLAY_KEYFRAMES, buildContentPartStrokes, getContentPartReplayStyles, buildTextBody3DSceneStyle, rerouteConnectorsForMovedElements, applyReroutedConnectors, updateCellTextStyleInRawXml, updateCellTextInRawXml, splitCell, updateMergeAttrsInRawXml, mergeCells, buildNotesPdf, canvasToJpegData, applyFormatToElement, isPpactionUrl, parsePpactionUrl, getImageTilingStyle, buildCacheKey, DEFAULT_COLOR_CHANGE_TOLERANCE, getCachedResult, applyColorChange, setCachedResult, colorWithOpacity, normalizeStrokeDashType, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, getConnectorPathGeometry, buildLineShadowCss, buildLineGlowFilter, renderConnectorMarker, getAriaRoleDescription as getAriaRoleDescription$1, getAriaLabel as getAriaLabel$1, getAriaRole, DEFAULT_FONT_FAMILY, ACTION_BUTTON_PRESETS, isUrlSafe, safeOpenUrl as safeOpenUrl$1, substituteFieldText, HYPERLINK_COLOR } from './chunk-MR3ZSEHS.mjs';
2
- import { defineThreeViewElement, MIN_TOUCH_TARGET_PX, computeVirtualRange, DEFAULT_VIRTUAL_OVERSCAN, createCollaborationSessionController, registerCollaborationTeardown, createPresenceProjector, BROADCAST_THROTTLE_MS, sanitizeColor, createEditorHistoryController, historyTheme, crossedHistoryTheme, createWheelStepBuffer, createViewerZoomStore, clampZoomScale, mapEditingWheel, createActiveAnimationGroup, cancelBuildReveal, clearPlaybackTimers, PresentationAnimationController, resolveMediaTimeNodeElementIds, resolveMediaBookmarkTimesMs, advanceMainSequence, playGroup, PRESENTATION_HASH, PRESENTATION_NONCE_KEY, PRESENTATION_CHANNEL_NAME, swapPresentationWindows, PRESENTATION_MESSAGE_ORIGIN, clearAudienceContent, buildPresentationAudienceUrl, resolveAudienceScreenPlacement, placeAudienceWindow, storeAudienceContent, isPresentationSessionMessage, endAudienceDisplay, createPresentationKeyBuffer, acceptsPresentationInput, resolveAutoAdvanceDelayMs, resolveShowBackward, resolveShowForward, beginZoomExcursion, buildZoomTransitionOverride, createPresenterShowGuard, firstShowSlideIndex, attachPresentationVisibilityPause, presentationEntrySlideIndex, buildMorphTransitionPlan, morphOptionToMode, buildMorphAnimationRules, INITIAL_FIND_REPLACE_SESSION, findReplaceSessionActions, visibleTemplateElements, createCollaborationLivePatcher, reportInlineTextDraft, initialInspectorOpen, createPresentationLoadResources, collectMediaElements, resolveMediaElementSource, collectImagePaths, applyImagePathPatches, resolveTableCellImageUrls, resolveTableStyleImageUrls, resolveTextFillBlipUrls, seedRecentColors, resolveAuthoredCustomShowId, GlyphOutlineFontCache, buildInitialGuides, readOnlyRecommendation, compatibilityWarningToasts, resolveInitialSlideIndex, pptxLoadErrorMessage, resolveAutosaveIntervalMs, createAutosaveController, saveAutosaveSnapshot, updateMasterViewElement, updateElement, masterViewElements, replaceMasterViewElements, addSection, renameSection, deleteSection, moveSectionUp, moveSectionDown, moveSlidesToSection, canMergeShapes, canInteractWithElement, prepareHtml2CanvasClone, html2canvasCaptureScope, slideProgressPercent, slideStatusLabel, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, isExportAbortError, DEFAULT_VIEWER_OPTIONS, resolveImageResolutionScale, applyAcceptSlide, applyAcceptAllSlides, collectUsedFonts, describeFontEmbedding, isMobileViewport, resolveAuthoredSlideRange, mayLeaveSlideShow, buildDeckSaveOptions, resolveSlideSizeSelection, saveDeckWithPassword, createAutosaveRecoveryController, discardAutosaveRecovery, probeAutosaveRecovery, shouldLoopContinuously, applyRehearsalTimings, rasterResultToPngBlob, downloadBlob, elementPictureFilename, canEditElementPoints, resolveGoogleFontsCss2Base, selectTrustedEmbeddedFonts, resolveFontWeight, resolveFontItalic, collectReferencedFontFamilies, resolveGoogleWebfontHref, syncGoogleWebfontStylesheet, selectGoogleWebfontFamilies, fetchGoogleWebfontOutlineBytes, dispatchEditorKey, isFeatureEnabled, parentSelection, textFontSizePtToPx, stepFontSizePt, textFontSizePxToPt, cycleSelectableElement, createCustomizationController, prepareElementForInsertion, slideSpaceElement, autosaveStatusKind, createViewerOptionsStore, observeYDocSlides, LOCAL_SYNC_ORIGIN, readSlidesFromYDoc, shouldRoomSlidesReplaceLoad, reconcileSlidesInYDoc, shouldAutoFollowBroadcaster, detectTouchDevice, detectOrientation, deriveViewportBreakpoints, createTouchGestureRecognizer, isKeyboardOpen, scopeLayoutOptionsToSlide, collaborationHistoryReady, bindCollaborationHistory, INITIAL_READ_ONLY_SESSION, readOnlySessionActions, applyReadOnlySessionEvent, readOnlyBannerVisible, readOnlyLocked, viewerPreferencesFromViewProperties, DEFAULT_VIEWER_PREFERENCES, viewPropertiesPatchFromPreferences, resolveCollaborationConfig, openPptxFile, readBackstageRecentFile, resolveCollaborationShellEditability, resolveCollaborationShellState, getResizeHandleHitAreaStyle, resolveElementInteractivity, getBackgroundAnimationState, getShapeEffectLayerPlacement, buildTextStyleOverrideCss, isElementRendered, resolveElementAriaAttributes, isMediaFullscreenActive, shouldRenderHitTarget, elementHitTargetStyle, getShapeEffectAnimationLayerStyle, inlineElementPointerEvents, isHollowShapeElement, LINK_TOOLTIP_HOST_CLASS, resolvePalette as resolvePalette$1, mediaTransportVisible, oleActionsVisible, getGroupChildParentFill, deviceStrokeStageStyle, MORPH_CROSSFADE_GROUP_STYLE, MORPH_CROSSFADE_HALF_STYLE, getSlideTransitionAnimations, getFragmentedTransitionDescriptor, SLIDE_TRANSITION_KEYFRAMES, isActionHidden, buildInlineTextCommitPatch, resolveInlineEditAutoFitHeight, resolveInlineEditNormAutofitShrink, setPendingCaretPoint, resolveGroupDoubleClickTarget, filterInteractableIds, beginShapeAdjustment, buildElementClipboardPayload, generateCustomShowId, contextMenuInspectorAnchor, savedPresentationFileName, deliverSavedPresentation, exportDeckJson, mapCustomizedEditorKey, isEditorTextInputTarget, groupElements, generateElementId, ungroupElements, alignElements, distributeElements, newTableElement, createDefaultChartElement, readViewportMetrics, computeKeyboardInset, planMergeShapes, applyMergeShapesPlan, mapPresentationKey, lastShowSlideIndex, mapPresentationWheel, createBlankSlide, insertSlidePaste, applySlidePasteTemplates, makeSlideId, insertedLayoutCompletion, buildSlideTemplateSlide, templateSchemeFromTheme, queueThemeWrite, needsOwnedSession, openOwnedCollaboration, resolveViewportFitOptions, editorViewportFitFor, calculateViewportFit, observeViewportClientSize, scheduleAutoAdvanceChain, computeEntranceAnimationDelay, createPresentationSessionId, resolveTransitionDurationMs, resolveTransitionSoundAction, runPresentationAction, safeOpenUrl, buildRunProgramNotice, toggleStageElementMedia, resolveOleVerbTarget, downloadDataUrl, openUrlInNewTab, createPresenterTimer, createInitialPresentationSnapshot, mergePresentationSnapshot, resetPresenterTimer, presenterElapsed, stepPresenterZoom, togglePresenterTimer, addCommentToList, removeCommentFromList, editCommentInList, toggleCommentResolvedInList, slideSpaceMembers, remapTextToSegments, getInlineEditorSelectionResult, buildInlineListStylePatch, applyActiveInlineListFormatting, applyListStyleUpdate, setPendingSelectionRestore, applyTextStyleUpdate, toggleSelectionBullets, transformInlineListCase, applyCaseTransformToSegments, transformTextCase, createGestureController, resolveExportCaptureDecision, recordProgressPercent, computeGridSpacingPx as computeGridSpacingPx$1, resolveShowSlideIndexes, groupSlidesBySection, masterViewPseudoSlide, overlayMasterViewInlineSnapshot, overlayInlineTextSnapshot, rasterizeElement, cloneElementForPaste, applyPasteSpecialFormat, buildRasterPictureElement, cloneElementUpdates, assertElementUpdateTarget, prepareElementUpdateBatch, createWriteBackScheduler, writeBackReport, createSyncGate, observeExternalCollaborationReadiness, resolveHistoryDepth, lockExternalContentSetting, resolveAllowExternalContent, createBackstagePresentation, buildFieldSubstitutionContext, buildSlidesPaneFieldContext, buildSlidesPaneTableStyleContext, slidesPaneRehearsalTimings, openSlidesPaneLayoutGallery, getImageColorWashStyle, attachRotateHandlePlacement, getSelectionControlArtworkStyle, getSelectionOutlineColor, paintedStrokeWidth, ensureActionAffordanceStyles, resolveElementActionAffordance, actionAffordanceLabels, paintedElementSize, MEDIA_FULLSCREEN_OVERLAY_STYLE, elementContainerHeightStyle, getAnimationOpacity, resolveElementHighlightClick, applyHighlightClickStyle, getComputedEffectStyle, getSoftEdgeSvgFilter, getEffectStyleSource, getBevelLightingSvgFilter, buildStrokeOutline, buildHollowHitOutline, buildSubpathFillOverlay, strokeOutlineViewBox, buildSummaryZoomView, readEditableText, placeCaretAt, takePendingCaretPoint, getPendingSelectionRestore, restoreSegmentSelection, mapInlineTextFormatKey, mapInlineEditorChord, subscribeBarFacePicturePixelSamples, getBarFacePicturePixelSampleVersion, ensureChartInteractionStyles, applyChartPartHighlight, resolveRevealedChartData, formatAxisValue, chartFormatTargetFromEvent, resolveOleType, getOleAriaLabel, getOleTypeColor, getOleTypeLabel, filterRenderedElements, resolveGroupChildFill, isLinkedTextBox, getOverflowSegments, shouldUseSvgWarp, getTextBodyRotationTransform, placeholderPromptDescriptor, getAriaRoleDescription, getAriaLabel, elementIdSelector, TOOLBAR_TABS, resolveGroupPressTarget, scrollInspectorSectionIntoView, computeScrollDelta, buildOutlinePrintJobDocument, printJobRasterFallback, applyThemeByPath, withHistoryTheme, withHistoryMasterThemes, writeThemeParts, loadedThemeName, replyToCommentInList, removeTableElementColumn, insertTableElementColumn, removeTableElementRow, insertTableElementRow, withCellStyle, getCellText, setCellText, pickSupportedMimeType, WEBM_MIME_CANDIDATES, fpsToFrameIntervalMs, segmentFrameCount, stopCaptureStream, GIF_POST_CAPTURE_MAX_SIDE, encodeGif, rasterizeElementTiles, placeTileOnPage, PDF_SLIDES_PAGE_WIDTH_PT, PDF_SLIDES_PAGE_HEIGHT_PT, createSnapshotTextPositions, resolvePresentationAction, getImageSvgFilters, getCachedNativeImageSize, probeNativeImageSize, buildDuotoneCacheKey, getDuotoneCachedResult, applyDuotone, setDuotoneCachedResult, svgLineCap, screenStrokeWidth, connectorWrapperTransform, ACTION_INDICATOR_CLASS, ACTION_INDICATOR_ICON_PATH, LINK_TOOLTIP_CLASS, LINK_TOOLTIP_PANEL_CLASS, LINK_TOOLTIP_LABEL_CLASS, LINK_TOOLTIP_HINT_CLASS, modelDataToBlobUrl, resolveZoomNavigationTarget, inlineListBodyText, createInlineListSeed, readListActivationSelection, createInlineListModelObserver, attachCollaborationInlineEditor, bindInlineListParagraph, bindInlineListRun, attachInlineListController, restoreInlineListBodySelection, isBulletMarkerSegment, resolveChartThreeViewSpec, applyChart3DDrag, applyChart3DSelect, canDrillDown, findChartPartTarget, withChartTitle, resolveSmartArtThreeViewSpec, measureSvgViewportRect, isBrowserOpenableMime, formatBytes, getOleDisplayName, getOleBadgeLabel, hasGlyphEnvelope, buildGlyphEnvelopeBlock, getWarpPath, isWedgeCalloutPresetShape, getAriaRole as getAriaRole$1, isElementActionable, buildSmartArtPresetData, classifyMediaType, getDraggedShapeAdjustments, computeMarqueeHitIds, mergeAdditiveSelection, planPrintJob, openPrintWindow, buildVectorPrintJobDocument, openPendingPrintWindow, borrowExternalCollaborationAwareness, observeExternalCollaborationSession, publishLiveGeometry, rasterizeElementTiledToCanvas, clampGifDimensions, rasterResultToPngDataUrl, shouldConfirmExternalHyperlink, advanceChartMarkDrag, advanceChartValueDrag, resolveChartKind, buildChartMarkDragGeometry, beginChartMarkDrag, beginChartValueDrag, findSmartArtNodeText, commitSmartArtNodeFill, commitSmartArtNodeText, groupIntoParagraphs as groupIntoParagraphs$1, createGlyphOutlineLookup, finishPrintWindow, buildRasterPrintJobDocument, applyMotionPathPreset, resolveRevealedSmartArtNodes, resolveRevealedDrawingShapes, buildSmartArtA11y, computeSmartArtElementLayout, flattenNodes, computeInlineEditorRect, smartArtNodeAtPoint, SMARTART_DEFAULT_PALETTE, computeDrawingViewBox, projectDrawingShapes, resolveRevealedDrawingShapeNodeIds, styleShadowFilter, buildChromeStyle, refreshSmartArtPictureImage, centeredSvgTextLines, rebuildDrawingShapesIfCleared, shouldCommitSmartArtNodeText, bringForward, sendBackward, bringToFront, sendToBack } from 'ooxml-ui/pptx';
1
+ import { cloneTemplateElementsBySlideId, cloneSlide, cloneHistorySnapshot, MIN_ELEMENT_SIZE, ZOOM_TO_SELECTION_PADDING, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, useTranslation, partitionTemplateElements, isTemplateElementId, DEFAULT_TABLE_ROWS, DEFAULT_TABLE_COLUMNS, comparePresentation, UNGROUPED_SECTION_ID, DEFAULT_SECTION_GROUP_ID, stopAllPersistentAudio, buildSaveSlides, MAX_ZOOM_SCALE, MIN_ZOOM_SCALE, getImageEffectsOpacity, getImageEffectsFilter, getImageRenderStyle, cn, isEditableTextElement, getShapeVisualStyle, getTextStyleForElement, DEFAULT_TEXT_COLOR, renderVectorShape, isConnectorOrLineElement, build3DExtrusionData, getImageSurfaceStyle, getTextLayoutStyle, renderTableElement, renderMediaElement, shouldRenderFallbackLabel, getElementLabel, normalizeHexColor, makeCloneId, DEFAULT_TEXT_FONT_SIZE, buildPdfFromTiledImageData, GRID_SIZE, copyFormatFromElement, hasCopyableFormat, isImageTiled, getDuotoneColors, DEFAULT_STROKE_COLOR, DEFAULT_FILL_COLOR, buildCssGradientFromShapeStyle, getCropShapeClipPath, getElementTransform, hasDagDuotoneEffect, renderDagDuotoneSvgFilter, getImageSurfaceMaskStyle, getTextWarpStyle, getTextCompensationTransform, getTextCompensationOrigin, renderTextSegments, buildReactChartViewModel, renderChartElement, buildInkGroupStrokes, getInkReplayStyles, INK_REPLAY_KEYFRAMES, buildContentPartStrokes, getContentPartReplayStyles, buildTextBody3DSceneStyle, rerouteConnectorsForMovedElements, applyReroutedConnectors, updateCellTextStyleInRawXml, updateCellTextInRawXml, splitCell, updateMergeAttrsInRawXml, mergeCells, buildNotesPdf, canvasToJpegData, applyFormatToElement, isPpactionUrl, parsePpactionUrl, getImageTilingStyle, buildCacheKey, DEFAULT_COLOR_CHANGE_TOLERANCE, getCachedResult, applyColorChange, setCachedResult, colorWithOpacity, normalizeStrokeDashType, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, getConnectorPathGeometry, buildLineShadowCss, buildLineGlowFilter, renderConnectorMarker, getAriaRoleDescription as getAriaRoleDescription$1, getAriaLabel as getAriaLabel$1, getAriaRole, DEFAULT_FONT_FAMILY, ACTION_BUTTON_PRESETS, isUrlSafe, substituteFieldText, HYPERLINK_COLOR } from './chunk-46VMP4EH.mjs';
2
+ import { defineThreeViewElement, MIN_TOUCH_TARGET_PX, computeVirtualRange, DEFAULT_VIRTUAL_OVERSCAN, createCollaborationSessionController, registerCollaborationTeardown, createPresenceProjector, BROADCAST_THROTTLE_MS, sanitizeColor, createEditorHistoryController, historyTheme, crossedHistoryTheme, createWheelStepBuffer, createViewerZoomStore, clampZoomScale, mapEditingWheel, createActiveAnimationGroup, cancelBuildReveal, clearPlaybackTimers, PresentationAnimationController, resolveMediaTimeNodeElementIds, resolveMediaBookmarkTimesMs, advanceMainSequence, playGroup, PRESENTATION_HASH, PRESENTATION_NONCE_KEY, PRESENTATION_CHANNEL_NAME, swapPresentationWindows, PRESENTATION_MESSAGE_ORIGIN, clearAudienceContent, buildPresentationAudienceUrl, resolveAudienceScreenPlacement, placeAudienceWindow, storeAudienceContent, isPresentationSessionMessage, endAudienceDisplay, createPresentationKeyBuffer, acceptsPresentationInput, resolveAutoAdvanceDelayMs, resolveShowBackward, resolveShowForward, beginZoomExcursion, buildZoomTransitionOverride, createPresenterShowGuard, firstShowSlideIndex, attachPresentationVisibilityPause, presentationEntrySlideIndex, buildMorphTransitionPlan, morphOptionToMode, buildMorphAnimationRules, INITIAL_FIND_REPLACE_SESSION, findReplaceSessionActions, visibleTemplateElements, createCollaborationLivePatcher, reportInlineTextDraft, initialInspectorOpen, createPresentationLoadResources, collectMediaElements, resolveMediaElementSource, collectImagePaths, applyImagePathPatches, resolveTableCellImageUrls, resolveTableStyleImageUrls, resolveTextFillBlipUrls, seedRecentColors, resolveAuthoredCustomShowId, GlyphOutlineFontCache, buildInitialGuides, readOnlyRecommendation, compatibilityWarningToasts, resolveInitialSlideIndex, pptxLoadErrorMessage, resolveAutosaveIntervalMs, createAutosaveController, saveAutosaveSnapshot, updateMasterViewElement, updateElement, masterViewElements, replaceMasterViewElements, addSection, renameSection, deleteSection, moveSectionUp, moveSectionDown, moveSlidesToSection, canMergeShapes, canInteractWithElement, prepareHtml2CanvasClone, html2canvasCaptureScope, slideProgressPercent, slideStatusLabel, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, isExportAbortError, DEFAULT_VIEWER_OPTIONS, resolveImageResolutionScale, applyAcceptSlide, applyAcceptAllSlides, collectUsedFonts, describeFontEmbedding, isMobileViewport, resolveAuthoredSlideRange, mayLeaveSlideShow, buildDeckSaveOptions, resolveSlideSizeSelection, saveDeckWithPassword, createAutosaveRecoveryController, discardAutosaveRecovery, probeAutosaveRecovery, shouldLoopContinuously, applyRehearsalTimings, rasterResultToPngBlob, downloadBlob, elementPictureFilename, canEditElementPoints, resolveGoogleFontsCss2Base, selectTrustedEmbeddedFonts, resolveFontWeight, resolveFontItalic, collectReferencedFontFamilies, resolveGoogleWebfontHref, syncGoogleWebfontStylesheet, selectGoogleWebfontFamilies, fetchGoogleWebfontOutlineBytes, dispatchEditorKey, isFeatureEnabled, parentSelection, textFontSizePtToPx, stepFontSizePt, textFontSizePxToPt, cycleSelectableElement, createCustomizationController, gateViewerEdits, prepareElementForInsertion, slideSpaceElement, resolveReportedViewerMode, autosaveStatusKind, createViewerOptionsStore, observeYDocSlides, LOCAL_SYNC_ORIGIN, readSlidesFromYDoc, shouldRoomSlidesReplaceLoad, reconcileSlidesInYDoc, shouldAutoFollowBroadcaster, detectTouchDevice, detectOrientation, deriveViewportBreakpoints, createTouchGestureRecognizer, isKeyboardOpen, scopeLayoutOptionsToSlide, collaborationHistoryReady, bindCollaborationHistory, INITIAL_READ_ONLY_SESSION, readOnlySessionActions, applyReadOnlySessionEvent, readOnlyBannerVisible, readOnlyLocked, viewerPreferencesFromViewProperties, DEFAULT_VIEWER_PREFERENCES, viewPropertiesPatchFromPreferences, resolveCollaborationConfig, openPptxFile, readBackstageRecentFile, resolveCollaborationShellEditability, resolveCollaborationShellState, getResizeHandleHitAreaStyle, resolveElementInteractivity, getBackgroundAnimationState, getShapeEffectLayerPlacement, buildTextStyleOverrideCss, isElementRendered, resolveElementAriaAttributes, isMediaFullscreenActive, shouldRenderHitTarget, elementHitTargetStyle, getShapeEffectAnimationLayerStyle, inlineElementPointerEvents, isHollowShapeElement, LINK_TOOLTIP_HOST_CLASS, resolvePalette as resolvePalette$1, mediaTransportVisible, oleActionsVisible, getGroupChildParentFill, deviceStrokeStageStyle, morphOverlayElementSlots, buildMorphOutlineRules, MORPH_CROSSFADE_GROUP_STYLE, MORPH_CROSSFADE_HALF_STYLE, getSlideTransitionAnimations, getFragmentedTransitionDescriptor, SLIDE_TRANSITION_KEYFRAMES, isActionHidden, buildInlineTextCommitPatch, resolveInlineEditAutoFitHeight, resolveInlineEditNormAutofitShrink, setPendingCaretPoint, resolveGroupDoubleClickTarget, filterInteractableIds, beginShapeAdjustment, buildElementClipboardPayload, promptNameDialog, generateCustomShowId, confirmDeleteDialog, contextMenuInspectorAnchor, savedPresentationFileName, deliverSavedPresentation, exportDeckJson, mapCustomizedEditorKey, isEditorTextInputTarget, groupElements, generateElementId, ungroupElements, alignElements, distributeElements, newTableElement, createDefaultChartElement, readViewportMetrics, computeKeyboardInset, planMergeShapes, applyMergeShapesPlan, mapPresentationKey, lastShowSlideIndex, mapPresentationWheel, createBlankSlide, insertSlidePaste, applySlidePasteTemplates, makeSlideId, insertedLayoutCompletion, buildSlideTemplateSlide, templateSchemeFromTheme, queueThemeWrite, needsOwnedSession, openOwnedCollaboration, resolveViewportFitOptions, editorViewportFitFor, calculateViewportFit, observeViewportClientSize, scheduleAutoAdvanceChain, computeEntranceAnimationDelay, createPresentationSessionId, resolveTransitionDurationMs, resolveTransitionSoundAction, runPresentationAction, safeOpenUrl, buildRunProgramNotice, toggleStageElementMedia, resolveOleVerbTarget, downloadDataUrl, openUrlInNewTab, createPresenterTimer, createInitialPresentationSnapshot, mergePresentationSnapshot, resetPresenterTimer, presenterElapsed, stepPresenterZoom, togglePresenterTimer, addCommentToList, removeCommentFromList, editCommentInList, toggleCommentResolvedInList, slideSpaceMembers, remapTextToSegments, getInlineEditorSelectionResult, buildInlineListStylePatch, applyActiveInlineListFormatting, applyListStyleUpdate, setPendingSelectionRestore, applyTextStyleUpdate, toggleSelectionBullets, transformInlineListCase, applyCaseTransformToSegments, transformTextCase, createGestureController, resolveExportCaptureDecision, recordProgressPercent, computeGridSpacingPx as computeGridSpacingPx$1, resolveShowSlideIndexes, groupSlidesBySection, masterViewPseudoSlide, overlayMasterViewInlineSnapshot, overlayInlineTextSnapshot, rasterizeElement, cloneElementForPaste, applyPasteSpecialFormat, buildRasterPictureElement, cloneElementUpdates, assertElementUpdateTarget, prepareElementUpdateBatch, createWriteBackScheduler, writeBackReport, createSyncGate, observeExternalCollaborationReadiness, resolveHistoryDepth, lockExternalContentSetting, resolveAllowExternalContent, createBackstagePresentation, buildFieldSubstitutionContext, buildSlidesPaneFieldContext, buildSlidesPaneTableStyleContext, slidesPaneRehearsalTimings, openSlidesPaneLayoutGallery, getImageColorWashStyle, attachRotateHandlePlacement, getSelectionControlArtworkStyle, getSelectionOutlineColor, paintedStrokeWidth, ensureActionAffordanceStyles, resolveElementActionAffordance, actionAffordanceLabels, paintedElementSize, MEDIA_FULLSCREEN_OVERLAY_STYLE, elementContainerHeightStyle, getAnimationOpacity, abuttingEdgeBleedStyle, resolveElementHighlightClick, applyHighlightClickStyle, getComputedEffectStyle, getSoftEdgeSvgFilter, getEffectStyleSource, getBevelLightingSvgFilter, buildStrokeOutline, buildHollowHitOutline, buildSubpathFillOverlay, strokeOutlineViewBox, buildSummaryZoomView, readEditableText, placeCaretAt, takePendingCaretPoint, getPendingSelectionRestore, restoreSegmentSelection, mapInlineTextFormatKey, mapInlineEditorChord, subscribeBarFacePicturePixelSamples, getBarFacePicturePixelSampleVersion, ensureChartInteractionStyles, applyChartPartHighlight, resolveRevealedChartData, formatAxisValue, chartFormatTargetFromEvent, resolveOleType, getOleAriaLabel, getOleTypeColor, getOleTypeLabel, filterRenderedElements, resolveGroupChildFill, isLinkedTextBox, getOverflowSegments, shouldUseSvgWarp, getTextBodyRotationTransform, getTextCompensationStyle, placeholderPromptDescriptor, getAriaRoleDescription, getAriaLabel, elementIdSelector, TOOLBAR_TABS, resolveGroupPressTarget, scrollInspectorSectionIntoView, computeScrollDelta, buildOutlinePrintJobDocument, printJobRasterFallback, applyThemeByPath, withHistoryTheme, withHistoryMasterThemes, writeThemeParts, loadedThemeName, replyToCommentInList, removeTableElementColumn, insertTableElementColumn, removeTableElementRow, insertTableElementRow, withCellStyle, getCellText, setCellText, pickSupportedMimeType, WEBM_MIME_CANDIDATES, fpsToFrameIntervalMs, segmentFrameCount, stopCaptureStream, GIF_POST_CAPTURE_MAX_SIDE, encodeGif, rasterizeElementTiles, placeTileOnPage, PDF_SLIDES_PAGE_WIDTH_PT, PDF_SLIDES_PAGE_HEIGHT_PT, createSnapshotTextPositions, resolvePresentationAction, getImageSvgFilters, getCachedNativeImageSize, probeNativeImageSize, buildDuotoneCacheKey, getDuotoneCachedResult, applyDuotone, setDuotoneCachedResult, svgLineCap, screenStrokeWidth, connectorWrapperTransform, ACTION_INDICATOR_CLASS, ACTION_INDICATOR_ICON_PATH, LINK_TOOLTIP_CLASS, LINK_TOOLTIP_PANEL_CLASS, LINK_TOOLTIP_LABEL_CLASS, LINK_TOOLTIP_HINT_CLASS, modelDataToBlobUrl, resolveZoomNavigationTarget, inlineListBodyText, createInlineListSeed, readListActivationSelection, createInlineListModelObserver, attachCollaborationInlineEditor, bindInlineListParagraph, bindInlineListRun, attachInlineListController, restoreInlineListBodySelection, isBulletMarkerSegment, resolveChartThreeViewSpec, applyChart3DDrag, applyChart3DSelect, canDrillDown, findChartPartTarget, withChartTitle, resolveSmartArtThreeViewSpec, measureSvgViewportRect, isBrowserOpenableMime, formatBytes, getOleDisplayName, getOleBadgeLabel, hasGlyphEnvelope, buildGlyphEnvelopeBlock, getWarpPath, isWedgeCalloutPresetShape, getAriaRole as getAriaRole$1, isElementActionable, buildSmartArtPresetData, classifyMediaType, getDraggedShapeAdjustments, computeMarqueeHitIds, mergeAdditiveSelection, planPrintJob, openPrintWindow, buildVectorPrintJobDocument, openPendingPrintWindow, borrowExternalCollaborationAwareness, observeExternalCollaborationSession, publishLiveGeometry, rasterizeElementTiledToCanvas, clampGifDimensions, rasterResultToPngDataUrl, openExternalHyperlinkConfirmed, advanceChartMarkDrag, advanceChartValueDrag, resolveChartKind, buildChartMarkDragGeometry, beginChartMarkDrag, beginChartValueDrag, findSmartArtNodeText, commitSmartArtNodeFill, commitSmartArtNodeText, groupIntoParagraphs as groupIntoParagraphs$1, createGlyphOutlineLookup, finishPrintWindow, buildRasterPrintJobDocument, applyMotionPathPreset, resolveRevealedSmartArtNodes, resolveRevealedDrawingShapes, buildSmartArtA11y, computeSmartArtElementLayout, flattenNodes, computeInlineEditorRect, smartArtNodeAtPoint, SMARTART_DEFAULT_PALETTE, computeDrawingViewBox, projectDrawingShapes, resolveRevealedDrawingShapeNodeIds, styleShadowFilter, buildChromeStyle, refreshSmartArtPictureImage, centeredSvgTextLines, rebuildDrawingShapesIfCleared, shouldCommitSmartArtNodeText, bringForward, sendBackward, bringToFront, sendToBack } from 'ooxml-ui/pptx';
3
3
  export { DUOTONE_PRESETS, MOBILE_BREAKPOINT, SLIDE_TRANSITION_KEYFRAMES, TABLET_BREAKPOINT, clearAudienceContent, computeVirtualRange, downloadBlob, getSlideTransitionAnimations, loadAudienceContent, storeAudienceContent } from 'ooxml-ui/pptx';
4
4
  import React17, { useRef, useState, useCallback, useEffect, useSyncExternalStore, useMemo, useContext, useLayoutEffect, createContext, useImperativeHandle, Suspense } from 'react';
5
5
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -902,6 +902,11 @@ function useEditorHistory(input) {
902
902
  const holdTracking = useCallback((held) => {
903
903
  trackingHeldRef.current = held;
904
904
  }, []);
905
+ const markSaved = useCallback(() => {
906
+ const snapshot = buildHistorySnapshot();
907
+ lastHistorySnapshotRef.current = snapshot;
908
+ lastHistorySerializedRef.current = serializeHistoryDocument(snapshot);
909
+ }, [buildHistorySnapshot]);
905
910
  return {
906
911
  commitSlides,
907
912
  holdTracking,
@@ -915,6 +920,7 @@ function useEditorHistory(input) {
915
920
  forgetHistory: history.forget,
916
921
  attachCollaboration: history.attachCollaboration,
917
922
  markDirty,
923
+ markSaved,
918
924
  withoutUndoStep,
919
925
  buildHistorySnapshot
920
926
  };
@@ -2910,9 +2916,13 @@ function usePresentationMode(input) {
2910
2916
  // `PresentationStage` stacks the incoming slide's elements above its
2911
2917
  // template shapes (`zIndex = templateElements.length + index`), so a
2912
2918
  // z-index journey has to start counting where the stage does.
2913
- { zIndexBase: incoming ? templateElementsBySlideId?.[incoming.id]?.length ?? 0 : 0 }
2919
+ // A turning flip is seen from the slide's centre (shared `morph-flip-turn`).
2920
+ {
2921
+ zIndexBase: incoming ? templateElementsBySlideId?.[incoming.id]?.length ?? 0 : 0,
2922
+ ...canvasSize ? { slideSize: canvasSize } : {}
2923
+ }
2914
2924
  );
2915
- }, [transitionOverlay, slides, templateElementsBySlideId]);
2925
+ }, [transitionOverlay, slides, templateElementsBySlideId, canvasSize]);
2916
2926
  const morphedElementStates = useMemo(() => {
2917
2927
  if (!morphPlan || morphPlan.incomingAnimations.size === 0) {
2918
2928
  return presentationElementStates;
@@ -7740,20 +7750,6 @@ function exportSlideToSvg(slide, width, height, options = {}) {
7740
7750
  }
7741
7751
  return svg;
7742
7752
  }
7743
- function safePrompt(message, defaultValue) {
7744
- try {
7745
- return window.prompt(message, defaultValue);
7746
- } catch {
7747
- return null;
7748
- }
7749
- }
7750
- function safeConfirm(message) {
7751
- try {
7752
- return window.confirm(message);
7753
- } catch {
7754
- return false;
7755
- }
7756
- }
7757
7753
 
7758
7754
  // src/viewer/hooks/useExportMediaHandlers.ts
7759
7755
  function useExportMediaHandlers(input) {
@@ -8626,6 +8622,7 @@ function usePropertyHandlers(input) {
8626
8622
  };
8627
8623
  }
8628
8624
  function useDialogCustomShows(input) {
8625
+ const { t } = useTranslation();
8629
8626
  const {
8630
8627
  activeSlide,
8631
8628
  customShows,
@@ -8645,16 +8642,20 @@ function useDialogCustomShows(input) {
8645
8642
  );
8646
8643
  history.markDirty();
8647
8644
  };
8648
- const handleCreateCustomShow = () => {
8649
- const name = safePrompt("Custom show name", "Custom Show");
8650
- const safeName = name?.trim() || `Custom Show ${customShows.length + 1}`;
8645
+ const handleCreateCustomShow = async () => {
8646
+ const name = await promptNameDialog(
8647
+ t("pptx.customShows.newNameLabel"),
8648
+ t("pptx.customShows.newDefaultName"),
8649
+ { t }
8650
+ );
8651
+ const safeName = name?.trim() || `${t("pptx.customShows.newDefaultName")} ${customShows.length + 1}`;
8651
8652
  const id = generateCustomShowId(customShows);
8652
8653
  const initialSlideRIds = activeSlide?.rId && activeSlide.rId.length > 0 ? [activeSlide.rId] : [];
8653
8654
  setCustomShows((prev) => [...prev, { id, name: safeName, slideRIds: initialSlideRIds }]);
8654
8655
  setActiveCustomShowId(id);
8655
8656
  history.markDirty();
8656
8657
  };
8657
- const handleRenameActiveCustomShow = () => {
8658
+ const handleRenameActiveCustomShow = async () => {
8658
8659
  if (!activeCustomShowId) {
8659
8660
  return;
8660
8661
  }
@@ -8662,14 +8663,14 @@ function useDialogCustomShows(input) {
8662
8663
  if (!show) {
8663
8664
  return;
8664
8665
  }
8665
- const nextName = safePrompt("Rename custom show", show.name)?.trim();
8666
+ const nextName = (await promptNameDialog(t("pptx.customShows.renamePrompt"), show.name, { t }))?.trim();
8666
8667
  if (!nextName) {
8667
8668
  return;
8668
8669
  }
8669
8670
  setCustomShows((prev) => prev.map((s) => s.id === show.id ? { ...s, name: nextName } : s));
8670
8671
  history.markDirty();
8671
8672
  };
8672
- const handleDeleteActiveCustomShow = () => {
8673
+ const handleDeleteActiveCustomShow = async () => {
8673
8674
  const showId = activeCustomShowId;
8674
8675
  if (!showId) {
8675
8676
  return;
@@ -8678,7 +8679,7 @@ function useDialogCustomShows(input) {
8678
8679
  if (!show) {
8679
8680
  return;
8680
8681
  }
8681
- if (!safeConfirm(`Delete custom show "${show.name}"?`)) {
8682
+ if (!await confirmDeleteDialog(t("pptx.customShows.deleteConfirm", { name: show.name }), { t })) {
8682
8683
  return;
8683
8684
  }
8684
8685
  setCustomShows((prev) => prev.filter((s) => s.id !== showId));
@@ -10389,6 +10390,27 @@ function useContentLifecycle(input) {
10389
10390
  };
10390
10391
  const serializeSlides = useSerialize(serializeInput);
10391
10392
  const serializeForRecovery = useSerialize({ ...serializeInput, purpose: "recovery-snapshot" });
10393
+ const getChangeSources = () => [
10394
+ slides,
10395
+ state.templateElementsBySlideId,
10396
+ state.guides,
10397
+ state.headerFooter,
10398
+ state.presentationProperties,
10399
+ state.customShows,
10400
+ state.sections,
10401
+ state.coreProperties,
10402
+ state.appProperties,
10403
+ state.customProperties,
10404
+ state.tagCollections,
10405
+ state.notesMaster,
10406
+ state.handoutMaster,
10407
+ state.embeddedFonts,
10408
+ embedFonts,
10409
+ password,
10410
+ state.inlineEditingElementIdRef.current,
10411
+ state.inlineEditingTextRef.current,
10412
+ state.inlineEditingSnapshotRef.current
10413
+ ];
10392
10414
  const { autosaveStatus } = useAutosave({
10393
10415
  isDirty: state.isDirty,
10394
10416
  filePath,
@@ -10396,36 +10418,12 @@ function useContentLifecycle(input) {
10396
10418
  serializeSlides: serializeForRecovery,
10397
10419
  enabled: autosaveEnabled,
10398
10420
  ...autosaveIntervalMs === void 0 ? {} : { intervalMs: autosaveIntervalMs },
10399
- // Everything `serializeForRecovery` reads that changes by REASSIGNMENT,
10400
- // so a poll that finds all of them unchanged can skip re-serializing a
10401
- // deck it has already snapshotted. The two refs are read by `.current`
10402
- // because an inline edit in progress lives there and nowhere else yet.
10403
10421
  onSaved: input.onAutosave,
10404
10422
  inlineDraftSinkRef: state.autosaveDraftSinkRef,
10405
10423
  getInlineEditingId: () => state.inlineEditingElementIdRef.current,
10406
- getChangeSources: () => [
10407
- slides,
10408
- state.templateElementsBySlideId,
10409
- state.guides,
10410
- state.headerFooter,
10411
- state.presentationProperties,
10412
- state.customShows,
10413
- state.sections,
10414
- state.coreProperties,
10415
- state.appProperties,
10416
- state.customProperties,
10417
- state.tagCollections,
10418
- state.notesMaster,
10419
- state.handoutMaster,
10420
- state.embeddedFonts,
10421
- embedFonts,
10422
- password,
10423
- state.inlineEditingElementIdRef.current,
10424
- state.inlineEditingTextRef.current,
10425
- state.inlineEditingSnapshotRef.current
10426
- ]
10424
+ getChangeSources
10427
10425
  });
10428
- return { handlerRef, serializeSlides, serializeForRecovery, autosaveStatus };
10426
+ return { handlerRef, serializeSlides, serializeForRecovery, autosaveStatus, getChangeSources };
10429
10427
  }
10430
10428
  function useKeyboardShortcuts(input) {
10431
10429
  const inputRef = useRef(input);
@@ -10770,7 +10768,7 @@ function useViewerIntegration(input) {
10770
10768
  });
10771
10769
  const [isEncryptedDialogOpen, setIsEncryptedDialogOpen] = useState(false);
10772
10770
  const [loadVersion, setLoadVersion] = useState(0);
10773
- const { handlerRef, serializeSlides, autosaveStatus } = useContentLifecycle({
10771
+ const { handlerRef, serializeSlides, autosaveStatus, getChangeSources } = useContentLifecycle({
10774
10772
  content,
10775
10773
  filePath,
10776
10774
  storage,
@@ -10853,164 +10851,167 @@ function useViewerIntegration(input) {
10853
10851
  });
10854
10852
  useImperativeHandle(
10855
10853
  ref,
10856
- () => latestHandleRef.current = {
10857
- ...customizationApi,
10858
- async getContent() {
10859
- const data = await serializeSlides();
10860
- if (data && onContentChange) {
10861
- onContentChange(data);
10862
- }
10863
- return data ?? new Uint8Array(0);
10864
- },
10865
- goTo(index) {
10866
- if (index >= 0 && index < slides.length) {
10867
- state.setActiveSlideIndex(index);
10868
- }
10869
- },
10870
- goPrev() {
10871
- const next = activeSlideIndex - 1;
10872
- if (next >= 0) {
10873
- state.setActiveSlideIndex(next);
10874
- }
10875
- },
10876
- goNext() {
10877
- const next = activeSlideIndex + 1;
10878
- if (next < slides.length) {
10879
- state.setActiveSlideIndex(next);
10880
- }
10881
- },
10882
- undo() {
10883
- history.handleUndo();
10884
- },
10885
- redo() {
10886
- history.handleRedo();
10887
- },
10888
- canUndo() {
10889
- return history.canUndo;
10890
- },
10891
- canRedo() {
10892
- return history.canRedo;
10893
- },
10894
- getZoom() {
10895
- return zoom.scale;
10896
- },
10897
- setZoom(level) {
10898
- zoom.setScale(clampZoomScale(level));
10899
- },
10900
- zoomIn() {
10901
- zoom.handleZoomIn();
10902
- },
10903
- zoomOut() {
10904
- zoom.handleZoomOut();
10905
- },
10906
- zoomReset() {
10907
- zoom.handleResetZoom();
10908
- },
10909
- getMode() {
10910
- return mode;
10911
- },
10912
- setMode(newMode) {
10913
- state.setMode(newMode);
10914
- },
10915
- getActiveSlideIndex() {
10916
- return activeSlideIndex;
10917
- },
10918
- getSlideCount() {
10919
- return slides.length;
10920
- },
10921
- isDirty() {
10922
- return state.isDirty;
10923
- },
10924
- getSelectedElementIds() {
10925
- return state.effectiveSelectedIds;
10926
- },
10927
- selectElements(ids) {
10928
- state.setSelectedElementIds(ids);
10929
- state.setSelectedElementId(ids[0] ?? null);
10930
- },
10931
- clearSelection() {
10932
- state.setSelectedElementIds([]);
10933
- state.setSelectedElementId(null);
10934
- },
10935
- // -- Active slide (alias) --
10936
- setActiveSlideIndex(index) {
10937
- if (index >= 0 && index < slides.length) {
10938
- state.setActiveSlideIndex(index);
10939
- }
10940
- },
10941
- // -- Slide access --
10942
- getSlides() {
10943
- return slides;
10944
- },
10945
- getSlide(index) {
10946
- return slides[index];
10947
- },
10948
- getActiveSlide() {
10949
- return slides[activeSlideIndex];
10950
- },
10951
- // -- Slide manipulation --
10952
- addSlide(afterIndex) {
10953
- if (afterIndex === void 0) {
10954
- editorOps.slideOps.handleAddSlide();
10955
- } else {
10956
- editorOps.slideOps.handleAddSlideAfter(afterIndex);
10957
- }
10958
- },
10959
- deleteSlides(indexes) {
10960
- editorOps.slideOps.handleDeleteSlides(indexes);
10961
- },
10962
- duplicateSlides(indexes) {
10963
- editorOps.slideOps.handleDuplicateSlides(indexes);
10964
- },
10965
- moveSlide(fromIndex, toIndex) {
10966
- editorOps.slideOps.handleMoveSlide(fromIndex, toIndex);
10967
- },
10968
- toggleHideSlides(indexes) {
10969
- editorOps.slideOps.handleToggleHideSlides(indexes);
10970
- },
10971
- // -- Element access --
10972
- getElements(slideIndex) {
10973
- const idx = slideIndex ?? activeSlideIndex;
10974
- const s = slides[idx];
10975
- return s?.elements ?? [];
10976
- },
10977
- getElementById(elementId, slideIndex) {
10978
- const idx = slideIndex ?? activeSlideIndex;
10979
- const s = slides[idx];
10980
- return s ? slideSpaceElement(s.elements, elementId) ?? void 0 : void 0;
10981
- },
10982
- // -- Element manipulation --
10983
- addElement(element) {
10984
- const inserted = prepareElementForInsertion(element, {
10985
- canEdit: canEdit && canInsertElement,
10986
- mode,
10987
- hasActiveSlide: !loading && !error && Boolean(activeSlide),
10988
- editTemplateMode: state.editTemplateMode
10989
- });
10990
- if (!inserted) {
10991
- return void 0;
10854
+ () => latestHandleRef.current = gateViewerEdits(
10855
+ {
10856
+ ...customizationApi,
10857
+ async getContent() {
10858
+ const data = await serializeSlides();
10859
+ if (data && onContentChange) {
10860
+ onContentChange(data);
10861
+ }
10862
+ return data ?? new Uint8Array(0);
10863
+ },
10864
+ goTo(index) {
10865
+ if (index >= 0 && index < slides.length) {
10866
+ state.setActiveSlideIndex(index);
10867
+ }
10868
+ },
10869
+ goPrev() {
10870
+ const next = activeSlideIndex - 1;
10871
+ if (next >= 0) {
10872
+ state.setActiveSlideIndex(next);
10873
+ }
10874
+ },
10875
+ goNext() {
10876
+ const next = activeSlideIndex + 1;
10877
+ if (next < slides.length) {
10878
+ state.setActiveSlideIndex(next);
10879
+ }
10880
+ },
10881
+ undo() {
10882
+ history.handleUndo();
10883
+ },
10884
+ redo() {
10885
+ history.handleRedo();
10886
+ },
10887
+ canUndo() {
10888
+ return history.canUndo;
10889
+ },
10890
+ canRedo() {
10891
+ return history.canRedo;
10892
+ },
10893
+ getZoom() {
10894
+ return zoom.scale;
10895
+ },
10896
+ setZoom(level) {
10897
+ zoom.setScale(clampZoomScale(level));
10898
+ },
10899
+ zoomIn() {
10900
+ zoom.handleZoomIn();
10901
+ },
10902
+ zoomOut() {
10903
+ zoom.handleZoomOut();
10904
+ },
10905
+ zoomReset() {
10906
+ zoom.handleResetZoom();
10907
+ },
10908
+ getMode() {
10909
+ return resolveReportedViewerMode(mode, canEdit);
10910
+ },
10911
+ setMode(newMode) {
10912
+ state.setMode(newMode);
10913
+ },
10914
+ getActiveSlideIndex() {
10915
+ return activeSlideIndex;
10916
+ },
10917
+ getSlideCount() {
10918
+ return slides.length;
10919
+ },
10920
+ isDirty() {
10921
+ return state.isDirty;
10922
+ },
10923
+ getSelectedElementIds() {
10924
+ return state.effectiveSelectedIds;
10925
+ },
10926
+ selectElements(ids) {
10927
+ state.setSelectedElementIds(ids);
10928
+ state.setSelectedElementId(ids[0] ?? null);
10929
+ },
10930
+ clearSelection() {
10931
+ state.setSelectedElementIds([]);
10932
+ state.setSelectedElementId(null);
10933
+ },
10934
+ // -- Active slide (alias) --
10935
+ setActiveSlideIndex(index) {
10936
+ if (index >= 0 && index < slides.length) {
10937
+ state.setActiveSlideIndex(index);
10938
+ }
10939
+ },
10940
+ // -- Slide access --
10941
+ getSlides() {
10942
+ return slides;
10943
+ },
10944
+ getSlide(index) {
10945
+ return slides[index];
10946
+ },
10947
+ getActiveSlide() {
10948
+ return slides[activeSlideIndex];
10949
+ },
10950
+ // -- Slide manipulation --
10951
+ addSlide(afterIndex) {
10952
+ if (afterIndex === void 0) {
10953
+ editorOps.slideOps.handleAddSlide();
10954
+ } else {
10955
+ editorOps.slideOps.handleAddSlideAfter(afterIndex);
10956
+ }
10957
+ },
10958
+ deleteSlides(indexes) {
10959
+ editorOps.slideOps.handleDeleteSlides(indexes);
10960
+ },
10961
+ duplicateSlides(indexes) {
10962
+ editorOps.slideOps.handleDuplicateSlides(indexes);
10963
+ },
10964
+ moveSlide(fromIndex, toIndex) {
10965
+ editorOps.slideOps.handleMoveSlide(fromIndex, toIndex);
10966
+ },
10967
+ toggleHideSlides(indexes) {
10968
+ editorOps.slideOps.handleToggleHideSlides(indexes);
10969
+ },
10970
+ // -- Element access --
10971
+ getElements(slideIndex) {
10972
+ const idx = slideIndex ?? activeSlideIndex;
10973
+ const s = slides[idx];
10974
+ return s?.elements ?? [];
10975
+ },
10976
+ getElementById(elementId, slideIndex) {
10977
+ const idx = slideIndex ?? activeSlideIndex;
10978
+ const s = slides[idx];
10979
+ return s ? slideSpaceElement(s.elements, elementId) ?? void 0 : void 0;
10980
+ },
10981
+ // -- Element manipulation --
10982
+ addElement(element) {
10983
+ const inserted = prepareElementForInsertion(element, {
10984
+ canEdit: canEdit && canInsertElement,
10985
+ mode,
10986
+ hasActiveSlide: !loading && !error && Boolean(activeSlide),
10987
+ editTemplateMode: state.editTemplateMode
10988
+ });
10989
+ if (!inserted) {
10990
+ return void 0;
10991
+ }
10992
+ editorOps.canvasHandlers.handleInlineEditCommit();
10993
+ editorOps.insertHandlers.addElement(inserted);
10994
+ editorOps.ops.applySelection(inserted.id, [inserted.id]);
10995
+ return inserted.id;
10996
+ },
10997
+ updateElements,
10998
+ updateElement(elementId, updates) {
10999
+ editorOps.ops.updateElementById(elementId, updates);
11000
+ },
11001
+ deleteElements(elementIds) {
11002
+ state.setSelectedElementIds(elementIds);
11003
+ state.setSelectedElementId(elementIds[0] ?? null);
11004
+ editorOps.manipulation.handleDelete();
11005
+ },
11006
+ duplicateElement(elementId) {
11007
+ state.setSelectedElementIds([elementId]);
11008
+ state.setSelectedElementId(elementId);
11009
+ editorOps.manipulation.handleDuplicate();
11010
+ return state.selectedElementIds[0];
10992
11011
  }
10993
- editorOps.canvasHandlers.handleInlineEditCommit();
10994
- editorOps.insertHandlers.addElement(inserted);
10995
- editorOps.ops.applySelection(inserted.id, [inserted.id]);
10996
- return inserted.id;
10997
11012
  },
10998
- updateElements,
10999
- updateElement(elementId, updates) {
11000
- editorOps.ops.updateElementById(elementId, updates);
11001
- },
11002
- deleteElements(elementIds) {
11003
- state.setSelectedElementIds(elementIds);
11004
- state.setSelectedElementId(elementIds[0] ?? null);
11005
- editorOps.manipulation.handleDelete();
11006
- },
11007
- duplicateElement(elementId) {
11008
- state.setSelectedElementIds([elementId]);
11009
- state.setSelectedElementId(elementId);
11010
- editorOps.manipulation.handleDuplicate();
11011
- return state.selectedElementIds[0];
11012
- }
11013
- },
11013
+ () => canEdit
11014
+ ),
11014
11015
  [
11015
11016
  updateElements,
11016
11017
  serializeSlides,
@@ -11095,6 +11096,7 @@ function useViewerIntegration(input) {
11095
11096
  handleEnterPresenterView,
11096
11097
  handleEnterRehearsalMode,
11097
11098
  autosaveStatus,
11099
+ getChangeSources,
11098
11100
  recovery,
11099
11101
  isEncryptedDialogOpen,
11100
11102
  setIsEncryptedDialogOpen,
@@ -11880,7 +11882,7 @@ function buildCanvasProps(input) {
11880
11882
  findResults,
11881
11883
  findResultIndex,
11882
11884
  viewerOptions,
11883
- buildHyperlinkConfirmMessage
11885
+ t
11884
11886
  } = input;
11885
11887
  const effectiveSlide = mode === "master" ? masterPseudoSlide : activeSlide;
11886
11888
  const effectiveTemplateElements = mode === "master" ? s.activeLayout ? s.activeMaster?.elements ?? [] : [] : templateElements;
@@ -11892,10 +11894,7 @@ function buildCanvasProps(input) {
11892
11894
  });
11893
11895
  const tableStyleContext = s.theme || s.tableStyleMap ? { theme: s.theme, tableStyleMap: s.tableStyleMap } : void 0;
11894
11896
  const openExternalUrl = (url, target) => {
11895
- if (shouldConfirmExternalHyperlink(viewerOptions, url) && !window.confirm(buildHyperlinkConfirmMessage(url))) {
11896
- return;
11897
- }
11898
- safeOpenUrl$1(url, target);
11897
+ void openExternalHyperlinkConfirmed(viewerOptions, url, { t }, target);
11899
11898
  };
11900
11899
  const handleActionClick = (elementId, action) => {
11901
11900
  if (mode === "present") {
@@ -13276,9 +13275,7 @@ function useViewerBuildingBlocks(input) {
13276
13275
  findResults: editorOps.findReplace.findResults,
13277
13276
  findResultIndex: editorOps.findReplace.findResultIndex,
13278
13277
  viewerOptions,
13279
- buildHyperlinkConfirmMessage: (url) => `${t("pptx.options.trust.confirmHyperlinks")}
13280
-
13281
- ${url}`
13278
+ t
13282
13279
  });
13283
13280
  canvasProps.collaborationOverlay = overlay;
13284
13281
  const slidesPaneProps = useSlidesPaneProps({
@@ -14783,7 +14780,8 @@ function getContainerStyle({
14783
14780
  animationState,
14784
14781
  shapeVisualStyle,
14785
14782
  has3DExtrusion,
14786
- templateEditing
14783
+ templateEditing,
14784
+ edgeBleed
14787
14785
  }) {
14788
14786
  const ss = hasShapeProperties(el) ? el.shapeStyle : void 0;
14789
14787
  const isPicture = el.type === "picture" || el.type === "image";
@@ -14794,7 +14792,7 @@ function getContainerStyle({
14794
14792
  const painted = paintedElementSize(el);
14795
14793
  const fs = MEDIA_FULLSCREEN_OVERLAY_STYLE;
14796
14794
  const heightStyle = isFullscreenMedia ? { height: fs.height } : el.type === "table" ? elementContainerHeightStyle(el, painted.height) : { height: painted.height };
14797
- return {
14795
+ const style = {
14798
14796
  left: isFullscreenMedia ? fs.left : el.x,
14799
14797
  top: isFullscreenMedia ? fs.top : el.y,
14800
14798
  width: isFullscreenMedia ? fs.width : painted.width,
@@ -14835,6 +14833,14 @@ function getContainerStyle({
14835
14833
  // set for normal slide content or while the mode is off.
14836
14834
  ...templateEditing ? { outline: "2px dashed rgb(217, 119, 6)", outlineOffset: "1px", opacity: opacity ?? 0.95 } : {}
14837
14835
  };
14836
+ return {
14837
+ ...style,
14838
+ ...abuttingEdgeBleedStyle(
14839
+ el,
14840
+ edgeBleed,
14841
+ style
14842
+ )
14843
+ };
14838
14844
  }
14839
14845
  function shapeParams(element) {
14840
14846
  const style = hasShapeProperties(element) ? element.shapeStyle : void 0;
@@ -15014,6 +15020,7 @@ function ShapeEffectOverlay({
15014
15020
  "svg",
15015
15021
  {
15016
15022
  className: "pptx-react-gradient-outline",
15023
+ "data-pptx-outline": "",
15017
15024
  "aria-hidden": "true",
15018
15025
  viewBox: strokeOutlineViewBox(element),
15019
15026
  preserveAspectRatio: "none",
@@ -15110,6 +15117,7 @@ var ElementRenderer = /* @__PURE__ */ React17.memo(
15110
15117
  opacity,
15111
15118
  templateEditing,
15112
15119
  zIndex,
15120
+ edgeBleed,
15113
15121
  imageAltText,
15114
15122
  showResizeHandles,
15115
15123
  renderInk: doInk,
@@ -15246,7 +15254,8 @@ var ElementRenderer = /* @__PURE__ */ React17.memo(
15246
15254
  animationState,
15247
15255
  shapeVisualStyle: backgroundAnimationState ? {} : ss,
15248
15256
  has3DExtrusion: extrusionData.hasExtrusion,
15249
- templateEditing
15257
+ templateEditing,
15258
+ edgeBleed
15250
15259
  });
15251
15260
  const interactionProps = getElementInteractionProps({
15252
15261
  element: el,
@@ -16079,7 +16088,7 @@ function InlineTextEditor({
16079
16088
  ...textStyle,
16080
16089
  ...warpStyle,
16081
16090
  transform: mergedTransform,
16082
- transformOrigin: warpStyle?.transformOrigin || "center"
16091
+ transformOrigin: warpStyle?.transformOrigin || (compensationTransform ? getTextCompensationOrigin(element) : "center")
16083
16092
  };
16084
16093
  const nextInlineStyleValue = (property) => {
16085
16094
  if (!hasTextProperties(element)) {
@@ -17622,7 +17631,8 @@ function renderTextElementBody(options) {
17622
17631
  );
17623
17632
  const scene3dStyle = hasTextProperties(el) ? buildTextBody3DSceneStyle(el.textStyle, { width: el.width, height: el.height }) : void 0;
17624
17633
  const rotationTransform = getTextBodyRotationTransform(el);
17625
- const composedTransform = [rotationTransform, getTextCompensationTransform(el), scene3dStyle?.transform].filter(Boolean).join(" ") || void 0;
17634
+ const compensation = getTextCompensationStyle(el);
17635
+ const composedTransform = [rotationTransform, compensation?.transform, scene3dStyle?.transform].filter(Boolean).join(" ") || void 0;
17626
17636
  const transformStyle = {
17627
17637
  transform: composedTransform,
17628
17638
  // A COM-measured homography (`scene3dStyle.transformOrigin === '0 0'`)
@@ -17633,7 +17643,7 @@ function renderTextElementBody(options) {
17633
17643
  // hardcoded to `'center'` unconditionally, silently clobbering
17634
17644
  // `scene3dStyle.transformOrigin` the same way Svelte's `ElementRenderer`
17635
17645
  // once re-clobbered `pointerEvents` from its own interactive flag.
17636
- transformOrigin: scene3dStyle?.transformOrigin ?? "center",
17646
+ transformOrigin: scene3dStyle?.transformOrigin ?? compensation?.transformOrigin ?? "center",
17637
17647
  ...scene3dStyle?.perspective ? { perspective: scene3dStyle.perspective } : {},
17638
17648
  // COM-calibrated off-axis correction for a handful of camera presets
17639
17649
  // (see `visual-3d-camera`'s module doc comment); only reachable when an
@@ -18151,7 +18161,7 @@ function getStaticElementVisualState(element, parentGroupFill) {
18151
18161
  element.type === "shape" && hasFill ? defaultTextColorForFill(fill) : DEFAULT_TEXT_COLOR
18152
18162
  );
18153
18163
  const isImage = element.type === "picture" || element.type === "image";
18154
- const letsTextOverflow = hasTextProperties(element) && element.textStyle?.autoFitMode === "shrink" && (element.type === "text" || element.locks?.txBox === true);
18164
+ const letsTextOverflow = hasTextProperties(element) && Boolean(element.text?.trim());
18155
18165
  const shapeType = hasShapeProperties(element) ? element.shapeType : void 0;
18156
18166
  const isCallout = isWedgeCalloutPresetShape(shapeType) || String(shapeType ?? "").toLowerCase().includes("callout");
18157
18167
  return {
@@ -18432,7 +18442,8 @@ function FragmentedTransitionLayer({
18432
18442
  );
18433
18443
  }
18434
18444
  function overlayEntries(plan, incomingSlide) {
18435
- return plan.overlayLayers.filter((layer) => layer.side === "outgoing" || incomingSlide !== void 0).flatMap((layer) => layer.elements.map((element) => ({ element, side: layer.side }))).map((entry, zIndex) => ({ ...entry, zIndex }));
18445
+ const slots = morphOverlayElementSlots(plan);
18446
+ return plan.overlayLayers.filter((layer) => layer.side === "outgoing" || incomingSlide !== void 0).flatMap((layer) => layer.elements.map((element) => ({ element, side: layer.side }))).map((entry, index) => ({ ...entry, zIndex: slots.elements.get(entry.element.id) ?? index }));
18436
18447
  }
18437
18448
  function MorphTransitionOverlay({
18438
18449
  canvasSize,
@@ -18442,6 +18453,7 @@ function MorphTransitionOverlay({
18442
18453
  incomingSlide,
18443
18454
  containerRef
18444
18455
  }) {
18456
+ const groupSlots = morphOverlayElementSlots(morphPlan).groups;
18445
18457
  return /* @__PURE__ */ jsxs(
18446
18458
  "div",
18447
18459
  {
@@ -18451,7 +18463,11 @@ function MorphTransitionOverlay({
18451
18463
  className: "pptx-react-transition-overlay absolute inset-0 pointer-events-none overflow-hidden",
18452
18464
  style: { zIndex: 40 },
18453
18465
  children: [
18454
- /* @__PURE__ */ jsx("style", { children: morphPlan.keyframesCss }),
18466
+ /* @__PURE__ */ jsx("style", { children: [
18467
+ morphPlan.keyframesCss,
18468
+ buildMorphOutlineRules(morphPlan, "data-pptx-morph-outgoing"),
18469
+ buildMorphOutlineRules(morphPlan, "data-pptx-morph-lifted")
18470
+ ].filter(Boolean).join("\n") }),
18455
18471
  /* @__PURE__ */ jsx("div", { className: "absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsxs(
18456
18472
  "div",
18457
18473
  {
@@ -18517,7 +18533,7 @@ function MorphTransitionOverlay({
18517
18533
  "data-pptx-morph-crossfade": group.incoming.id,
18518
18534
  style: {
18519
18535
  ...MORPH_CROSSFADE_GROUP_STYLE,
18520
- zIndex: morphPlan.outgoingElements.length + morphPlan.overlayIncomingElements.length + index
18536
+ zIndex: groupSlots[index] ?? morphPlan.outgoingElements.length + morphPlan.overlayIncomingElements.length + index
18521
18537
  },
18522
18538
  children: [
18523
18539
  /* @__PURE__ */ jsx(
@@ -18823,4 +18839,4 @@ function useResizablePanels() {
18823
18839
  };
18824
18840
  }
18825
18841
 
18826
- export { ACTION_VERB_MAP, ChartFormatContext, ChartPartSelectionProvider, CollaborationCursorOverlay, CollaborationProvider, ElementRenderer, FragmentedTransitionLayer, InlineCollaborationContext, MIN_TOUCH_TARGET, MorphTransitionOverlay, PresentationTransitionOverlay, RemoteSelectionOverlay, RemoteUserCursors, Rendering3DFlagsContext, ResizeHandles, SlideBackgroundImageLayer, SlideLayer, StaticElementRenderer, ViewerOptionsContext, ViewerOptionsStoreContext, computeToolbarVisibility, createReviewCommentsHost, detectTargetType, imgSrc, isAudienceTab, parseAudienceNonce, parseEmailUrl, parseSlideFromUrl, playAnimationSound, renderStrokeView, renderToCanvas, resolveSmartArtDataPalette, safePrompt, scopeLayoutOptionsToActiveSlide, useAnimationPlayback, useAnnotationHandlers, useAudienceMode, useAutosave, useBroadcastFollower, useCanvasInteractions, useChartFormatContext, useChartPartSelection, useClearSelectionOnSlideChange, useClipboardHandlers, useCollaboration, useCollaborationDocumentSync, useCollaborativeHistory, useCollaborativeState, useComments, useCompatibilityToastsState, useContentLifecycle, useController, useDerivedElementState, useDerivedSlideState, useDialogCustomShows, useEditorHistory, useEditorOperations, useElementManipulation, useElementOperations, useExportHandlers, useExportSaveAs, useFindReplace, useFollowMode, useFontInjection, useGroupAlignLayerHandlers, useIOHandlers, useInsertElements, useIsMobile, useKeyboardInsets, useKeyboardShortcutWiring, useKeyboardShortcuts, useLayoutSwitching, useLoadContent, useMergeShapesHandler, useModalDismissDrag, usePointerHandlers, usePresenceTracking, usePresentationAnnotations, usePresentationKeyboard, usePresentationMode, usePresentationSetup, usePresenterWindow, usePrintHandlers, usePropertyHandlers, useReadOnlyRecommendationState, useRecoveryDetection, useReducedMotion, useRehearsalTimings, useReportOnChange, useResizablePanels, useSectionOperations, useSerialize, useSheetDismissDrag, useSlideManagement, useSlideNavigation, useSwipeNavigation, useTableOperations, useThemeHandlers, useThemeSwitching, useToolbarVisibility, useTouchGestures, useViewPreferencesSync, useViewerBuildingBlocks, useViewerCoreState, useViewerDialogs, useViewerIntegration, useViewerOptions, useViewerOptionsContext, useViewerState, useViewerUIState, useVirtualizedSlides, useYjsDocumentSync, useYjsProvider, useZoomNavigation, useZoomViewport, withDisplayName };
18842
+ export { ACTION_VERB_MAP, ChartFormatContext, ChartPartSelectionProvider, CollaborationCursorOverlay, CollaborationProvider, ElementRenderer, FragmentedTransitionLayer, InlineCollaborationContext, MIN_TOUCH_TARGET, MorphTransitionOverlay, PresentationTransitionOverlay, RemoteSelectionOverlay, RemoteUserCursors, Rendering3DFlagsContext, ResizeHandles, SlideBackgroundImageLayer, SlideLayer, StaticElementRenderer, ViewerOptionsContext, ViewerOptionsStoreContext, computeToolbarVisibility, createReviewCommentsHost, detectTargetType, imgSrc, isAudienceTab, parseAudienceNonce, parseEmailUrl, parseSlideFromUrl, playAnimationSound, renderStrokeView, renderToCanvas, resolveSmartArtDataPalette, scopeLayoutOptionsToActiveSlide, useAnimationPlayback, useAnnotationHandlers, useAudienceMode, useAutosave, useBroadcastFollower, useCanvasInteractions, useChartFormatContext, useChartPartSelection, useClearSelectionOnSlideChange, useClipboardHandlers, useCollaboration, useCollaborationDocumentSync, useCollaborativeHistory, useCollaborativeState, useComments, useCompatibilityToastsState, useContentLifecycle, useController, useDerivedElementState, useDerivedSlideState, useDialogCustomShows, useEditorHistory, useEditorOperations, useElementManipulation, useElementOperations, useExportHandlers, useExportSaveAs, useFindReplace, useFollowMode, useFontInjection, useGroupAlignLayerHandlers, useIOHandlers, useInsertElements, useIsMobile, useKeyboardInsets, useKeyboardShortcutWiring, useKeyboardShortcuts, useLayoutSwitching, useLoadContent, useMergeShapesHandler, useModalDismissDrag, usePointerHandlers, usePresenceTracking, usePresentationAnnotations, usePresentationKeyboard, usePresentationMode, usePresentationSetup, usePresenterWindow, usePrintHandlers, usePropertyHandlers, useReadOnlyRecommendationState, useRecoveryDetection, useReducedMotion, useRehearsalTimings, useReportOnChange, useResizablePanels, useSectionOperations, useSerialize, useSheetDismissDrag, useSlideManagement, useSlideNavigation, useSwipeNavigation, useTableOperations, useThemeHandlers, useThemeSwitching, useToolbarVisibility, useTouchGestures, useViewPreferencesSync, useViewerBuildingBlocks, useViewerCoreState, useViewerDialogs, useViewerIntegration, useViewerOptions, useViewerOptionsContext, useViewerState, useViewerUIState, useVirtualizedSlides, useYjsDocumentSync, useYjsProvider, useZoomNavigation, useZoomViewport, withDisplayName };