pptx-react-viewer 4.63.1 → 4.64.1
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.
- package/CHANGELOG.md +59 -0
- package/dist/{AiChatPanel-7DESUEAZ.js → AiChatPanel-7AFFNYEN.js} +19 -19
- package/dist/AiChatPanel-7AFFNYEN.js.br +0 -0
- package/dist/AiChatPanel-7AFFNYEN.js.gz +0 -0
- package/dist/{AiChatPanel-GQ64SIYP.mjs → AiChatPanel-7U7IJRNY.mjs} +1 -1
- package/dist/AiChatPanel-7U7IJRNY.mjs.br +0 -0
- package/dist/AiChatPanel-7U7IJRNY.mjs.gz +0 -0
- package/dist/ai.js +2 -2
- package/dist/ai.js.br +1 -2
- package/dist/ai.js.gz +0 -0
- package/dist/ai.mjs +1 -1
- package/dist/ai.mjs.br +0 -0
- package/dist/ai.mjs.gz +0 -0
- package/dist/{chunk-5KFSMXI4.js → chunk-5DBKW7F3.js} +8 -3
- package/dist/chunk-5DBKW7F3.js.br +0 -0
- package/dist/{chunk-5KFSMXI4.js.gz → chunk-5DBKW7F3.js.gz} +0 -0
- package/dist/{chunk-MR3ZSEHS.mjs → chunk-5ZW3GP6C.mjs} +6 -5
- package/dist/chunk-5ZW3GP6C.mjs.br +0 -0
- package/dist/chunk-5ZW3GP6C.mjs.gz +0 -0
- package/dist/{chunk-FYQVCABH.mjs → chunk-G5JGUSBL.mjs} +253 -230
- package/dist/chunk-G5JGUSBL.mjs.br +0 -0
- package/dist/chunk-G5JGUSBL.mjs.gz +0 -0
- package/dist/{chunk-MWFBZ5SJ.js → chunk-GXL2XMST.js} +832 -651
- package/dist/chunk-GXL2XMST.js.br +0 -0
- package/dist/chunk-GXL2XMST.js.gz +0 -0
- package/dist/{chunk-H6KYXOKK.mjs → chunk-HZBEKG5R.mjs} +281 -100
- package/dist/chunk-HZBEKG5R.mjs.br +0 -0
- package/dist/chunk-HZBEKG5R.mjs.gz +0 -0
- package/dist/{chunk-F6WCYCHV.js → chunk-PNDORR6S.js} +1 -1
- package/dist/chunk-PNDORR6S.js.br +0 -0
- package/dist/chunk-PNDORR6S.js.gz +0 -0
- package/dist/{chunk-TXVGYIO6.js → chunk-VGU5S37T.js} +450 -428
- package/dist/chunk-VGU5S37T.js.br +0 -0
- package/dist/chunk-VGU5S37T.js.gz +0 -0
- package/dist/{chunk-NE5JQMED.mjs → chunk-WAIX4VJ2.mjs} +1 -1
- package/dist/chunk-WAIX4VJ2.mjs.br +0 -0
- package/dist/chunk-WAIX4VJ2.mjs.gz +0 -0
- package/dist/i18n/de.cjs +89 -43
- package/dist/i18n/de.cjs.br +0 -0
- package/dist/i18n/de.cjs.gz +0 -0
- package/dist/i18n/de.mjs +89 -43
- package/dist/i18n/de.mjs.br +0 -0
- package/dist/i18n/de.mjs.gz +0 -0
- package/dist/i18n/es.cjs +89 -43
- package/dist/i18n/es.cjs.br +0 -0
- package/dist/i18n/es.cjs.gz +0 -0
- package/dist/i18n/es.mjs +89 -43
- package/dist/i18n/es.mjs.br +0 -0
- package/dist/i18n/es.mjs.gz +0 -0
- package/dist/i18n/fr.cjs +89 -43
- package/dist/i18n/fr.cjs.br +0 -0
- package/dist/i18n/fr.cjs.gz +0 -0
- package/dist/i18n/fr.mjs +89 -43
- package/dist/i18n/fr.mjs.br +0 -0
- package/dist/i18n/fr.mjs.gz +0 -0
- package/dist/i18n/zh-CN.cjs +95 -49
- package/dist/i18n/zh-CN.cjs.br +0 -0
- package/dist/i18n/zh-CN.cjs.gz +0 -0
- package/dist/i18n/zh-CN.mjs +95 -49
- package/dist/i18n/zh-CN.mjs.br +0 -0
- package/dist/i18n/zh-CN.mjs.gz +0 -0
- package/dist/index.d.ts +10 -1
- package/dist/index.js +27 -27
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/dist/index.mjs +4 -4
- package/dist/index.mjs.br +0 -0
- package/dist/index.mjs.gz +0 -0
- package/dist/internals.d.ts +10 -0
- package/dist/internals.js +81 -81
- package/dist/internals.js.br +0 -0
- package/dist/internals.js.gz +0 -0
- package/dist/internals.mjs +2 -2
- package/dist/internals.mjs.br +0 -0
- package/dist/internals.mjs.gz +0 -0
- package/dist/pptx-viewer-canvas.css +1 -1
- package/dist/pptx-viewer-canvas.css.br +0 -0
- package/dist/pptx-viewer-canvas.css.gz +0 -0
- package/dist/pptx-viewer.css +1 -1
- package/dist/pptx-viewer.css.br +0 -0
- package/dist/pptx-viewer.css.gz +0 -0
- package/dist/viewer/index.d.ts +10 -1
- package/dist/viewer/index.js +21 -21
- package/dist/viewer/index.js.br +0 -0
- package/dist/viewer/index.js.gz +0 -0
- package/dist/viewer/index.mjs +4 -4
- package/dist/viewer/index.mjs.br +0 -0
- package/dist/viewer/index.mjs.gz +0 -0
- package/package.json +3 -3
- package/dist/AiChatPanel-7DESUEAZ.js.br +0 -0
- package/dist/AiChatPanel-7DESUEAZ.js.gz +0 -0
- package/dist/AiChatPanel-GQ64SIYP.mjs.br +0 -0
- package/dist/AiChatPanel-GQ64SIYP.mjs.gz +0 -0
- package/dist/chunk-5KFSMXI4.js.br +0 -0
- package/dist/chunk-F6WCYCHV.js.br +0 -0
- package/dist/chunk-F6WCYCHV.js.gz +0 -0
- package/dist/chunk-FYQVCABH.mjs.br +0 -0
- package/dist/chunk-FYQVCABH.mjs.gz +0 -0
- package/dist/chunk-H6KYXOKK.mjs.br +0 -0
- package/dist/chunk-H6KYXOKK.mjs.gz +0 -0
- package/dist/chunk-MR3ZSEHS.mjs.br +0 -0
- package/dist/chunk-MR3ZSEHS.mjs.gz +0 -0
- package/dist/chunk-MWFBZ5SJ.js.br +0 -0
- package/dist/chunk-MWFBZ5SJ.js.gz +0 -0
- package/dist/chunk-NE5JQMED.mjs.br +0 -0
- package/dist/chunk-NE5JQMED.mjs.gz +0 -0
- package/dist/chunk-TXVGYIO6.js.br +0 -0
- package/dist/chunk-TXVGYIO6.js.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,
|
|
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-5ZW3GP6C.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, connectorSnapTransform, connectorNeedsPath, connectorStrandScreenWidth, 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
|
-
|
|
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 =
|
|
8650
|
-
|
|
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 =
|
|
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 (!
|
|
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
|
-
|
|
10858
|
-
|
|
10859
|
-
|
|
10860
|
-
|
|
10861
|
-
|
|
10862
|
-
|
|
10863
|
-
|
|
10864
|
-
|
|
10865
|
-
|
|
10866
|
-
|
|
10867
|
-
|
|
10868
|
-
|
|
10869
|
-
|
|
10870
|
-
|
|
10871
|
-
|
|
10872
|
-
|
|
10873
|
-
|
|
10874
|
-
|
|
10875
|
-
|
|
10876
|
-
|
|
10877
|
-
|
|
10878
|
-
|
|
10879
|
-
|
|
10880
|
-
|
|
10881
|
-
|
|
10882
|
-
|
|
10883
|
-
|
|
10884
|
-
|
|
10885
|
-
|
|
10886
|
-
|
|
10887
|
-
|
|
10888
|
-
|
|
10889
|
-
|
|
10890
|
-
|
|
10891
|
-
|
|
10892
|
-
|
|
10893
|
-
|
|
10894
|
-
|
|
10895
|
-
|
|
10896
|
-
|
|
10897
|
-
|
|
10898
|
-
|
|
10899
|
-
|
|
10900
|
-
|
|
10901
|
-
|
|
10902
|
-
|
|
10903
|
-
|
|
10904
|
-
|
|
10905
|
-
|
|
10906
|
-
|
|
10907
|
-
|
|
10908
|
-
|
|
10909
|
-
|
|
10910
|
-
|
|
10911
|
-
|
|
10912
|
-
|
|
10913
|
-
|
|
10914
|
-
|
|
10915
|
-
|
|
10916
|
-
|
|
10917
|
-
|
|
10918
|
-
|
|
10919
|
-
|
|
10920
|
-
|
|
10921
|
-
|
|
10922
|
-
|
|
10923
|
-
|
|
10924
|
-
|
|
10925
|
-
|
|
10926
|
-
|
|
10927
|
-
|
|
10928
|
-
|
|
10929
|
-
|
|
10930
|
-
|
|
10931
|
-
|
|
10932
|
-
|
|
10933
|
-
|
|
10934
|
-
|
|
10935
|
-
|
|
10936
|
-
|
|
10937
|
-
|
|
10938
|
-
|
|
10939
|
-
|
|
10940
|
-
|
|
10941
|
-
|
|
10942
|
-
|
|
10943
|
-
|
|
10944
|
-
|
|
10945
|
-
|
|
10946
|
-
|
|
10947
|
-
|
|
10948
|
-
|
|
10949
|
-
|
|
10950
|
-
|
|
10951
|
-
|
|
10952
|
-
|
|
10953
|
-
|
|
10954
|
-
|
|
10955
|
-
|
|
10956
|
-
|
|
10957
|
-
|
|
10958
|
-
|
|
10959
|
-
|
|
10960
|
-
|
|
10961
|
-
|
|
10962
|
-
|
|
10963
|
-
|
|
10964
|
-
|
|
10965
|
-
|
|
10966
|
-
|
|
10967
|
-
|
|
10968
|
-
|
|
10969
|
-
|
|
10970
|
-
|
|
10971
|
-
|
|
10972
|
-
|
|
10973
|
-
|
|
10974
|
-
|
|
10975
|
-
|
|
10976
|
-
|
|
10977
|
-
|
|
10978
|
-
|
|
10979
|
-
|
|
10980
|
-
|
|
10981
|
-
|
|
10982
|
-
|
|
10983
|
-
|
|
10984
|
-
|
|
10985
|
-
|
|
10986
|
-
|
|
10987
|
-
|
|
10988
|
-
|
|
10989
|
-
|
|
10990
|
-
|
|
10991
|
-
|
|
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
|
-
},
|
|
10998
|
-
updateElements,
|
|
10999
|
-
updateElement(elementId, updates) {
|
|
11000
|
-
editorOps.ops.updateElementById(elementId, updates);
|
|
11001
11012
|
},
|
|
11002
|
-
|
|
11003
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
13280
|
-
|
|
13281
|
-
${url}`
|
|
13278
|
+
t
|
|
13282
13279
|
});
|
|
13283
13280
|
canvasProps.collaborationOverlay = overlay;
|
|
13284
13281
|
const slidesPaneProps = useSlidesPaneProps({
|
|
@@ -14506,6 +14503,12 @@ var ConnectorElementRendererMemo = /* @__PURE__ */ React17.memo(
|
|
|
14506
14503
|
endY: viewHeight
|
|
14507
14504
|
};
|
|
14508
14505
|
const hitTargetWidth = Math.max(strokeWidth * 3, 14);
|
|
14506
|
+
const snapTransform = connectorSnapTransform(
|
|
14507
|
+
el,
|
|
14508
|
+
!connectorNeedsPath(shapeEl?.shapeType),
|
|
14509
|
+
compoundOffsets.length,
|
|
14510
|
+
strokeWidth
|
|
14511
|
+
);
|
|
14509
14512
|
const selColor = selClr === "blue-400" ? "#60a5fa" : "#3b82f6";
|
|
14510
14513
|
const lineShadow = buildLineShadowCss(el);
|
|
14511
14514
|
const lineGlow = buildLineGlowFilter(el);
|
|
@@ -14623,6 +14626,7 @@ var ConnectorElementRendererMemo = /* @__PURE__ */ React17.memo(
|
|
|
14623
14626
|
compoundOffsets.map((offset, idx) => /* @__PURE__ */ jsx(
|
|
14624
14627
|
"path",
|
|
14625
14628
|
{
|
|
14629
|
+
"data-pptx-line": "",
|
|
14626
14630
|
d: pathGeometry.pathData,
|
|
14627
14631
|
fill: "none",
|
|
14628
14632
|
stroke: strokePaint,
|
|
@@ -14637,10 +14641,10 @@ var ConnectorElementRendererMemo = /* @__PURE__ */ React17.memo(
|
|
|
14637
14641
|
style: {
|
|
14638
14642
|
pointerEvents: "none",
|
|
14639
14643
|
// Never under one device pixel on screen (shared `device-pixel-stroke`).
|
|
14640
|
-
strokeWidth:
|
|
14644
|
+
strokeWidth: connectorStrandScreenWidth(compoundWidths, strokeWidth, idx),
|
|
14641
14645
|
...offset !== 0 ? {
|
|
14642
14646
|
transform: `translate(0, ${offset}px)`
|
|
14643
|
-
} : {}
|
|
14647
|
+
} : snapTransform ? { transform: snapTransform } : {}
|
|
14644
14648
|
}
|
|
14645
14649
|
},
|
|
14646
14650
|
idx
|
|
@@ -14783,7 +14787,8 @@ function getContainerStyle({
|
|
|
14783
14787
|
animationState,
|
|
14784
14788
|
shapeVisualStyle,
|
|
14785
14789
|
has3DExtrusion,
|
|
14786
|
-
templateEditing
|
|
14790
|
+
templateEditing,
|
|
14791
|
+
edgeBleed
|
|
14787
14792
|
}) {
|
|
14788
14793
|
const ss = hasShapeProperties(el) ? el.shapeStyle : void 0;
|
|
14789
14794
|
const isPicture = el.type === "picture" || el.type === "image";
|
|
@@ -14794,7 +14799,7 @@ function getContainerStyle({
|
|
|
14794
14799
|
const painted = paintedElementSize(el);
|
|
14795
14800
|
const fs = MEDIA_FULLSCREEN_OVERLAY_STYLE;
|
|
14796
14801
|
const heightStyle = isFullscreenMedia ? { height: fs.height } : el.type === "table" ? elementContainerHeightStyle(el, painted.height) : { height: painted.height };
|
|
14797
|
-
|
|
14802
|
+
const style = {
|
|
14798
14803
|
left: isFullscreenMedia ? fs.left : el.x,
|
|
14799
14804
|
top: isFullscreenMedia ? fs.top : el.y,
|
|
14800
14805
|
width: isFullscreenMedia ? fs.width : painted.width,
|
|
@@ -14835,6 +14840,14 @@ function getContainerStyle({
|
|
|
14835
14840
|
// set for normal slide content or while the mode is off.
|
|
14836
14841
|
...templateEditing ? { outline: "2px dashed rgb(217, 119, 6)", outlineOffset: "1px", opacity: opacity ?? 0.95 } : {}
|
|
14837
14842
|
};
|
|
14843
|
+
return {
|
|
14844
|
+
...style,
|
|
14845
|
+
...abuttingEdgeBleedStyle(
|
|
14846
|
+
el,
|
|
14847
|
+
edgeBleed,
|
|
14848
|
+
style
|
|
14849
|
+
)
|
|
14850
|
+
};
|
|
14838
14851
|
}
|
|
14839
14852
|
function shapeParams(element) {
|
|
14840
14853
|
const style = hasShapeProperties(element) ? element.shapeStyle : void 0;
|
|
@@ -15014,6 +15027,7 @@ function ShapeEffectOverlay({
|
|
|
15014
15027
|
"svg",
|
|
15015
15028
|
{
|
|
15016
15029
|
className: "pptx-react-gradient-outline",
|
|
15030
|
+
"data-pptx-outline": "",
|
|
15017
15031
|
"aria-hidden": "true",
|
|
15018
15032
|
viewBox: strokeOutlineViewBox(element),
|
|
15019
15033
|
preserveAspectRatio: "none",
|
|
@@ -15045,7 +15059,7 @@ function ShapeEffectOverlay({
|
|
|
15045
15059
|
style: {
|
|
15046
15060
|
// Never under one device pixel on screen (shared `device-pixel-stroke`).
|
|
15047
15061
|
strokeWidth: strand.cssStrokeWidth,
|
|
15048
|
-
transform: strand.offset !== 0 ? `translate(0, ${strand.offset}px)` : void 0
|
|
15062
|
+
transform: strand.cssTransform ?? (strand.offset !== 0 ? `translate(0, ${strand.offset}px)` : void 0)
|
|
15049
15063
|
}
|
|
15050
15064
|
},
|
|
15051
15065
|
idx
|
|
@@ -15110,6 +15124,7 @@ var ElementRenderer = /* @__PURE__ */ React17.memo(
|
|
|
15110
15124
|
opacity,
|
|
15111
15125
|
templateEditing,
|
|
15112
15126
|
zIndex,
|
|
15127
|
+
edgeBleed,
|
|
15113
15128
|
imageAltText,
|
|
15114
15129
|
showResizeHandles,
|
|
15115
15130
|
renderInk: doInk,
|
|
@@ -15246,7 +15261,8 @@ var ElementRenderer = /* @__PURE__ */ React17.memo(
|
|
|
15246
15261
|
animationState,
|
|
15247
15262
|
shapeVisualStyle: backgroundAnimationState ? {} : ss,
|
|
15248
15263
|
has3DExtrusion: extrusionData.hasExtrusion,
|
|
15249
|
-
templateEditing
|
|
15264
|
+
templateEditing,
|
|
15265
|
+
edgeBleed
|
|
15250
15266
|
});
|
|
15251
15267
|
const interactionProps = getElementInteractionProps({
|
|
15252
15268
|
element: el,
|
|
@@ -16079,7 +16095,7 @@ function InlineTextEditor({
|
|
|
16079
16095
|
...textStyle,
|
|
16080
16096
|
...warpStyle,
|
|
16081
16097
|
transform: mergedTransform,
|
|
16082
|
-
transformOrigin: warpStyle?.transformOrigin || "center"
|
|
16098
|
+
transformOrigin: warpStyle?.transformOrigin || (compensationTransform ? getTextCompensationOrigin(element) : "center")
|
|
16083
16099
|
};
|
|
16084
16100
|
const nextInlineStyleValue = (property) => {
|
|
16085
16101
|
if (!hasTextProperties(element)) {
|
|
@@ -17622,7 +17638,8 @@ function renderTextElementBody(options) {
|
|
|
17622
17638
|
);
|
|
17623
17639
|
const scene3dStyle = hasTextProperties(el) ? buildTextBody3DSceneStyle(el.textStyle, { width: el.width, height: el.height }) : void 0;
|
|
17624
17640
|
const rotationTransform = getTextBodyRotationTransform(el);
|
|
17625
|
-
const
|
|
17641
|
+
const compensation = getTextCompensationStyle(el);
|
|
17642
|
+
const composedTransform = [rotationTransform, compensation?.transform, scene3dStyle?.transform].filter(Boolean).join(" ") || void 0;
|
|
17626
17643
|
const transformStyle = {
|
|
17627
17644
|
transform: composedTransform,
|
|
17628
17645
|
// A COM-measured homography (`scene3dStyle.transformOrigin === '0 0'`)
|
|
@@ -17633,7 +17650,7 @@ function renderTextElementBody(options) {
|
|
|
17633
17650
|
// hardcoded to `'center'` unconditionally, silently clobbering
|
|
17634
17651
|
// `scene3dStyle.transformOrigin` the same way Svelte's `ElementRenderer`
|
|
17635
17652
|
// once re-clobbered `pointerEvents` from its own interactive flag.
|
|
17636
|
-
transformOrigin: scene3dStyle?.transformOrigin ?? "center",
|
|
17653
|
+
transformOrigin: scene3dStyle?.transformOrigin ?? compensation?.transformOrigin ?? "center",
|
|
17637
17654
|
...scene3dStyle?.perspective ? { perspective: scene3dStyle.perspective } : {},
|
|
17638
17655
|
// COM-calibrated off-axis correction for a handful of camera presets
|
|
17639
17656
|
// (see `visual-3d-camera`'s module doc comment); only reachable when an
|
|
@@ -18151,7 +18168,7 @@ function getStaticElementVisualState(element, parentGroupFill) {
|
|
|
18151
18168
|
element.type === "shape" && hasFill ? defaultTextColorForFill(fill) : DEFAULT_TEXT_COLOR
|
|
18152
18169
|
);
|
|
18153
18170
|
const isImage = element.type === "picture" || element.type === "image";
|
|
18154
|
-
const letsTextOverflow = hasTextProperties(element) &&
|
|
18171
|
+
const letsTextOverflow = hasTextProperties(element) && Boolean(element.text?.trim());
|
|
18155
18172
|
const shapeType = hasShapeProperties(element) ? element.shapeType : void 0;
|
|
18156
18173
|
const isCallout = isWedgeCalloutPresetShape(shapeType) || String(shapeType ?? "").toLowerCase().includes("callout");
|
|
18157
18174
|
return {
|
|
@@ -18432,7 +18449,8 @@ function FragmentedTransitionLayer({
|
|
|
18432
18449
|
);
|
|
18433
18450
|
}
|
|
18434
18451
|
function overlayEntries(plan, incomingSlide) {
|
|
18435
|
-
|
|
18452
|
+
const slots = morphOverlayElementSlots(plan);
|
|
18453
|
+
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
18454
|
}
|
|
18437
18455
|
function MorphTransitionOverlay({
|
|
18438
18456
|
canvasSize,
|
|
@@ -18442,6 +18460,7 @@ function MorphTransitionOverlay({
|
|
|
18442
18460
|
incomingSlide,
|
|
18443
18461
|
containerRef
|
|
18444
18462
|
}) {
|
|
18463
|
+
const groupSlots = morphOverlayElementSlots(morphPlan).groups;
|
|
18445
18464
|
return /* @__PURE__ */ jsxs(
|
|
18446
18465
|
"div",
|
|
18447
18466
|
{
|
|
@@ -18451,7 +18470,11 @@ function MorphTransitionOverlay({
|
|
|
18451
18470
|
className: "pptx-react-transition-overlay absolute inset-0 pointer-events-none overflow-hidden",
|
|
18452
18471
|
style: { zIndex: 40 },
|
|
18453
18472
|
children: [
|
|
18454
|
-
/* @__PURE__ */ jsx("style", { children:
|
|
18473
|
+
/* @__PURE__ */ jsx("style", { children: [
|
|
18474
|
+
morphPlan.keyframesCss,
|
|
18475
|
+
buildMorphOutlineRules(morphPlan, "data-pptx-morph-outgoing"),
|
|
18476
|
+
buildMorphOutlineRules(morphPlan, "data-pptx-morph-lifted")
|
|
18477
|
+
].filter(Boolean).join("\n") }),
|
|
18455
18478
|
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsxs(
|
|
18456
18479
|
"div",
|
|
18457
18480
|
{
|
|
@@ -18517,7 +18540,7 @@ function MorphTransitionOverlay({
|
|
|
18517
18540
|
"data-pptx-morph-crossfade": group.incoming.id,
|
|
18518
18541
|
style: {
|
|
18519
18542
|
...MORPH_CROSSFADE_GROUP_STYLE,
|
|
18520
|
-
zIndex: morphPlan.outgoingElements.length + morphPlan.overlayIncomingElements.length + index
|
|
18543
|
+
zIndex: groupSlots[index] ?? morphPlan.outgoingElements.length + morphPlan.overlayIncomingElements.length + index
|
|
18521
18544
|
},
|
|
18522
18545
|
children: [
|
|
18523
18546
|
/* @__PURE__ */ jsx(
|
|
@@ -18823,4 +18846,4 @@ function useResizablePanels() {
|
|
|
18823
18846
|
};
|
|
18824
18847
|
}
|
|
18825
18848
|
|
|
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,
|
|
18849
|
+
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 };
|