pptx-react-viewer 3.16.7 → 3.17.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 +53 -0
- package/README.md +25 -3
- package/dist/{AiChatPanel-N25STHYW.js → AiChatPanel-GYH43XWW.js} +25 -25
- package/dist/AiChatPanel-GYH43XWW.js.br +0 -0
- package/dist/AiChatPanel-GYH43XWW.js.gz +0 -0
- package/dist/{AiChatPanel-GLDW5OK4.mjs → AiChatPanel-SINEEZBW.mjs} +4 -4
- package/dist/AiChatPanel-SINEEZBW.mjs.br +0 -0
- package/dist/AiChatPanel-SINEEZBW.mjs.gz +0 -0
- package/dist/{Area3DChartScene-5POI5LF7.js → Area3DChartScene-D7GSJGPQ.js} +2 -2
- package/dist/Area3DChartScene-D7GSJGPQ.js.br +0 -0
- package/dist/Area3DChartScene-D7GSJGPQ.js.gz +0 -0
- package/dist/{Area3DChartScene-FCHO4SK6.mjs → Area3DChartScene-X5SM67PZ.mjs} +1 -1
- package/dist/Area3DChartScene-X5SM67PZ.mjs.br +0 -0
- package/dist/Area3DChartScene-X5SM67PZ.mjs.gz +0 -0
- package/dist/{Bar3DChartScene-M3LLHXAL.mjs → Bar3DChartScene-HWIFFGI3.mjs} +1 -1
- package/dist/Bar3DChartScene-HWIFFGI3.mjs.br +0 -0
- package/dist/Bar3DChartScene-HWIFFGI3.mjs.gz +0 -0
- package/dist/{Bar3DChartScene-5CY5GRV5.js → Bar3DChartScene-M72WQW5Y.js} +2 -2
- package/dist/Bar3DChartScene-M72WQW5Y.js.br +0 -0
- package/dist/Bar3DChartScene-M72WQW5Y.js.gz +0 -0
- package/dist/{Line3DChartScene-77TZRLJY.mjs → Line3DChartScene-7MPZWVF3.mjs} +1 -1
- package/dist/Line3DChartScene-7MPZWVF3.mjs.br +0 -0
- package/dist/Line3DChartScene-7MPZWVF3.mjs.gz +0 -0
- package/dist/{Line3DChartScene-3TP7OUIP.js → Line3DChartScene-YOZEEQZ3.js} +2 -2
- package/dist/Line3DChartScene-YOZEEQZ3.js.br +0 -0
- package/dist/Line3DChartScene-YOZEEQZ3.js.gz +0 -0
- package/dist/{Model3DScene-QINKUHM2.mjs → Model3DScene-57LVY5QW.mjs} +1 -1
- package/dist/Model3DScene-57LVY5QW.mjs.br +0 -0
- package/dist/Model3DScene-57LVY5QW.mjs.gz +0 -0
- package/dist/{Model3DScene-CBETCFMI.js → Model3DScene-5IJSNGDZ.js} +2 -2
- package/dist/Model3DScene-5IJSNGDZ.js.br +0 -0
- package/dist/Model3DScene-5IJSNGDZ.js.gz +0 -0
- package/dist/{PieChart3DScene-NFXFVG7R.js → PieChart3DScene-UBI6X66Q.js} +2 -2
- package/dist/PieChart3DScene-UBI6X66Q.js.br +0 -0
- package/dist/PieChart3DScene-UBI6X66Q.js.gz +0 -0
- package/dist/{PieChart3DScene-H2DJSHW7.mjs → PieChart3DScene-WD5B6NP3.mjs} +1 -1
- package/dist/PieChart3DScene-WD5B6NP3.mjs.br +0 -0
- package/dist/PieChart3DScene-WD5B6NP3.mjs.gz +0 -0
- package/dist/{PowerPointViewer-Cl6jBPNw.d.ts → PowerPointViewer-Cde_wzd0.d.ts} +2 -2
- package/dist/{PowerPointViewer-Cl6jBPNw.d.ts.map → PowerPointViewer-Cde_wzd0.d.ts.map} +1 -1
- package/dist/{SurfaceChart3DScene-2IN5YKKE.js → SurfaceChart3DScene-JGNPYQ32.js} +2 -2
- package/dist/SurfaceChart3DScene-JGNPYQ32.js.br +0 -0
- package/dist/SurfaceChart3DScene-JGNPYQ32.js.gz +0 -0
- package/dist/{SurfaceChart3DScene-4AGI4O3L.mjs → SurfaceChart3DScene-JZGU6BBD.mjs} +1 -1
- package/dist/SurfaceChart3DScene-JZGU6BBD.mjs.br +0 -0
- package/dist/SurfaceChart3DScene-JZGU6BBD.mjs.gz +0 -0
- package/dist/{audience-content-store-CB2WVM1K.d.ts → audience-content-store-A8Km8rBo.d.ts} +2 -2
- package/dist/{audience-content-store-CB2WVM1K.d.ts.map → audience-content-store-A8Km8rBo.d.ts.map} +1 -1
- package/dist/{chunk-3FVOKV4E.js → chunk-4SPZ5IZN.js} +1110 -470
- package/dist/chunk-4SPZ5IZN.js.br +0 -0
- package/dist/chunk-4SPZ5IZN.js.gz +0 -0
- package/dist/{chunk-3AJ54EAB.js → chunk-64FUV37N.js} +9 -0
- package/dist/chunk-64FUV37N.js.br +0 -0
- package/dist/{chunk-3AJ54EAB.js.gz → chunk-64FUV37N.js.gz} +0 -0
- package/dist/{chunk-4NSDMKFE.js → chunk-7FBKS7OS.js} +178 -178
- package/dist/chunk-7FBKS7OS.js.br +0 -0
- package/dist/chunk-7FBKS7OS.js.gz +0 -0
- package/dist/{chunk-7ELFYC6K.mjs → chunk-7YJBRPCT.mjs} +9 -5
- package/dist/chunk-7YJBRPCT.mjs.br +0 -0
- package/dist/chunk-7YJBRPCT.mjs.gz +0 -0
- package/dist/{chunk-4Q6VIX6M.js → chunk-E55VEC37.js} +557 -504
- package/dist/chunk-E55VEC37.js.br +0 -0
- package/dist/chunk-E55VEC37.js.gz +0 -0
- package/dist/{chunk-SQNEE6AM.js → chunk-IRG7SIUX.js} +1347 -1337
- package/dist/chunk-IRG7SIUX.js.br +0 -0
- package/dist/chunk-IRG7SIUX.js.gz +0 -0
- package/dist/{chunk-I5YSAIL5.mjs → chunk-IXKAIIA2.mjs} +63 -53
- package/dist/chunk-IXKAIIA2.mjs.br +0 -0
- package/dist/chunk-IXKAIIA2.mjs.gz +0 -0
- package/dist/{chunk-TYVSLRC7.js → chunk-KVXB22D3.js} +13 -9
- package/dist/chunk-KVXB22D3.js.br +0 -0
- package/dist/{chunk-TYVSLRC7.js.gz → chunk-KVXB22D3.js.gz} +0 -0
- package/dist/{chunk-HMX3MQR7.mjs → chunk-LAU34UMB.mjs} +9 -1
- package/dist/chunk-LAU34UMB.mjs.br +0 -0
- package/dist/{chunk-HMX3MQR7.mjs.gz → chunk-LAU34UMB.mjs.gz} +0 -0
- package/dist/{chunk-3PUFHKXW.mjs → chunk-OAKDJYYT.mjs} +103 -50
- package/dist/chunk-OAKDJYYT.mjs.br +0 -0
- package/dist/chunk-OAKDJYYT.mjs.gz +0 -0
- package/dist/{chunk-XMD6ZWUO.mjs → chunk-QTGCOL5H.mjs} +1104 -471
- package/dist/chunk-QTGCOL5H.mjs.br +0 -0
- package/dist/chunk-QTGCOL5H.mjs.gz +0 -0
- package/dist/{chunk-B3YVURJB.mjs → chunk-VYSMTC5C.mjs} +2 -2
- package/dist/chunk-VYSMTC5C.mjs.br +0 -0
- package/dist/chunk-VYSMTC5C.mjs.gz +0 -0
- package/dist/i18n.js +4 -4
- package/dist/i18n.js.br +0 -0
- package/dist/i18n.js.gz +0 -0
- package/dist/i18n.mjs +1 -1
- package/dist/i18n.mjs.br +0 -0
- package/dist/i18n.mjs.gz +0 -0
- package/dist/index.d.ts +33 -3
- package/dist/index.js +47 -47
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/dist/index.mjs +6 -6
- package/dist/index.mjs.br +0 -0
- package/dist/index.mjs.gz +0 -0
- package/dist/internals.d.ts +38 -3
- package/dist/internals.d.ts.map +1 -1
- package/dist/internals.js +79 -79
- package/dist/internals.js.br +0 -0
- package/dist/internals.js.gz +0 -0
- package/dist/internals.mjs +4 -4
- package/dist/internals.mjs.br +0 -0
- package/dist/internals.mjs.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/{types-Bzdkiakq.d.ts → types-BqB2ZCwS.d.ts} +3 -3
- package/dist/{types-Bzdkiakq.d.ts.map → types-BqB2ZCwS.d.ts.map} +1 -1
- package/dist/{useViewerBuildingBlocks-FbK-4ORi.d.ts → useViewerBuildingBlocks-DkUGmlkP.d.ts} +4 -4
- package/dist/{useViewerBuildingBlocks-FbK-4ORi.d.ts.map → useViewerBuildingBlocks-DkUGmlkP.d.ts.map} +1 -1
- package/dist/viewer/index.d.ts +31 -1
- package/dist/viewer/index.js +27 -27
- package/dist/viewer/index.js.br +0 -0
- package/dist/viewer/index.js.gz +0 -0
- package/dist/viewer/index.mjs +6 -6
- package/dist/viewer/index.mjs.br +0 -0
- package/dist/viewer/index.mjs.gz +0 -0
- package/package.json +1 -1
- package/dist/AiChatPanel-GLDW5OK4.mjs.br +0 -0
- package/dist/AiChatPanel-GLDW5OK4.mjs.gz +0 -0
- package/dist/AiChatPanel-N25STHYW.js.br +0 -0
- package/dist/AiChatPanel-N25STHYW.js.gz +0 -0
- package/dist/Area3DChartScene-5POI5LF7.js.br +0 -0
- package/dist/Area3DChartScene-5POI5LF7.js.gz +0 -0
- package/dist/Area3DChartScene-FCHO4SK6.mjs.br +0 -0
- package/dist/Area3DChartScene-FCHO4SK6.mjs.gz +0 -0
- package/dist/Bar3DChartScene-5CY5GRV5.js.br +0 -0
- package/dist/Bar3DChartScene-5CY5GRV5.js.gz +0 -0
- package/dist/Bar3DChartScene-M3LLHXAL.mjs.br +0 -0
- package/dist/Bar3DChartScene-M3LLHXAL.mjs.gz +0 -0
- package/dist/Line3DChartScene-3TP7OUIP.js.br +0 -0
- package/dist/Line3DChartScene-3TP7OUIP.js.gz +0 -0
- package/dist/Line3DChartScene-77TZRLJY.mjs.br +0 -0
- package/dist/Line3DChartScene-77TZRLJY.mjs.gz +0 -0
- package/dist/Model3DScene-CBETCFMI.js.br +0 -0
- package/dist/Model3DScene-CBETCFMI.js.gz +0 -0
- package/dist/Model3DScene-QINKUHM2.mjs.br +0 -0
- package/dist/Model3DScene-QINKUHM2.mjs.gz +0 -0
- package/dist/PieChart3DScene-H2DJSHW7.mjs.br +0 -0
- package/dist/PieChart3DScene-H2DJSHW7.mjs.gz +0 -0
- package/dist/PieChart3DScene-NFXFVG7R.js.br +0 -0
- package/dist/PieChart3DScene-NFXFVG7R.js.gz +0 -0
- package/dist/SurfaceChart3DScene-2IN5YKKE.js.br +0 -0
- package/dist/SurfaceChart3DScene-2IN5YKKE.js.gz +0 -0
- package/dist/SurfaceChart3DScene-4AGI4O3L.mjs.br +0 -0
- package/dist/SurfaceChart3DScene-4AGI4O3L.mjs.gz +0 -0
- package/dist/chunk-3AJ54EAB.js.br +0 -0
- package/dist/chunk-3FVOKV4E.js.br +0 -0
- package/dist/chunk-3FVOKV4E.js.gz +0 -0
- package/dist/chunk-3PUFHKXW.mjs.br +0 -0
- package/dist/chunk-3PUFHKXW.mjs.gz +0 -0
- package/dist/chunk-4NSDMKFE.js.br +0 -0
- package/dist/chunk-4NSDMKFE.js.gz +0 -0
- package/dist/chunk-4Q6VIX6M.js.br +0 -0
- package/dist/chunk-4Q6VIX6M.js.gz +0 -0
- package/dist/chunk-7ELFYC6K.mjs.br +0 -0
- package/dist/chunk-7ELFYC6K.mjs.gz +0 -0
- package/dist/chunk-B3YVURJB.mjs.br +0 -0
- package/dist/chunk-B3YVURJB.mjs.gz +0 -0
- package/dist/chunk-HMX3MQR7.mjs.br +0 -0
- package/dist/chunk-I5YSAIL5.mjs.br +0 -0
- package/dist/chunk-I5YSAIL5.mjs.gz +0 -0
- package/dist/chunk-SQNEE6AM.js.br +0 -0
- package/dist/chunk-SQNEE6AM.js.gz +0 -0
- package/dist/chunk-TYVSLRC7.js.br +0 -0
- package/dist/chunk-XMD6ZWUO.mjs.br +0 -0
- package/dist/chunk-XMD6ZWUO.mjs.gz +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { cloneHistorySnapshot, MIN_ELEMENT_SIZE, ZOOM_TO_SELECTION_PADDING, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, UNGROUPED_SECTION_ID, DEFAULT_SECTION_GROUP_ID, DEFAULT_TABLE_ROWS, DEFAULT_TABLE_COLUMNS, buildPdfFromTiledImageData, buildNotesPdf, GRID_SIZE
|
|
2
|
-
import { GlyphOutlineFontCache, createGlyphOutlineLookup, DEFAULT_VIEWER_OPTIONS, TOOLBAR_TABS, MIN_TOUCH_TARGET_PX, computeVirtualRange, DEFAULT_VIRTUAL_OVERSCAN, createPresenceProjector, BROADCAST_THROTTLE_MS, createSyncGate, clearLocalAwareness, validateRoomId, createDepartureChannel, resolveTransportForServerUrl, isMixedContentBlocked, CONNECTION_TIMEOUT_MS, registerCollaborationTeardown, sanitizeColor, cloneTemplateElementsBySlideId, cloneSlide, createWheelStepBuffer, createViewerZoomStore, clampZoomScale, mapEditingWheel, createActiveAnimationGroup, cancelBuildReveal, clearPlaybackTimers, PresentationAnimationController, resolveMediaTimeNodeElementIds, advanceMainSequence, playGroup, PRESENTATION_HASH, PRESENTATION_NONCE_KEY, PRESENTATION_CHANNEL_NAME, swapPresentationWindows, PRESENTATION_MESSAGE_ORIGIN, clearAudienceContent, buildPresentationAudienceUrl, resolveAudienceScreenPlacement, placeAudienceWindow, storeAudienceContent, isPresentationSessionMessage, endAudienceDisplay, createPresentationKeyBuffer, acceptsPresentationInput, resolveAutoAdvanceDelayMs, hasShowSlideAfter, nextShowSlideIndex, previousShowSlideIndex, createPresenterShowGuard, firstShowSlideIndex, attachPresentationVisibilityPause, presentationEntrySlideIndex, buildMorphTransitionPlan, morphOptionToMode, buildMorphAnimationRules, findInSlides, applyFindReplacements, visibleTemplateElements, createCollaborationLivePatcher, publishLiveInlineText, PptxHandler, createPresentationLoadResources, collectMediaElements, resolveMediaElementSource, collectImagePaths, applyImagePathPatches, resolveTableCellImageUrls, resolveTableStyleImageUrls, partitionTemplateElements, seedRecentColors, resolveAuthoredCustomShowId, buildInitialGuides, readOnlyRecommendation, compatibilityWarningToasts, EncryptedFileError, resolveAutosaveIntervalMs, shouldWriteAutosaveSnapshot, saveAutosaveSnapshot, autosaveSnapshotMark, hasTextProperties, remapTextToSegments, updateMasterViewElement, isTemplateElementId, updateElement, hasShapeProperties, getInlineEditorSelection,
|
|
3
|
-
import { translationsEn } from './chunk-
|
|
1
|
+
import { cloneHistorySnapshot, MIN_ELEMENT_SIZE, ZOOM_TO_SELECTION_PADDING, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, UNGROUPED_SECTION_ID, DEFAULT_SECTION_GROUP_ID, DEFAULT_TEXT_FONT_SIZE, DEFAULT_TABLE_ROWS, DEFAULT_TABLE_COLUMNS, buildPdfFromTiledImageData, buildNotesPdf, GRID_SIZE } from './chunk-VYSMTC5C.mjs';
|
|
2
|
+
import { GlyphOutlineFontCache, createGlyphOutlineLookup, DEFAULT_VIEWER_OPTIONS, TOOLBAR_TABS, MIN_TOUCH_TARGET_PX, computeVirtualRange, DEFAULT_VIRTUAL_OVERSCAN, createPresenceProjector, BROADCAST_THROTTLE_MS, createSyncGate, clearLocalAwareness, validateRoomId, createDepartureChannel, resolveTransportForServerUrl, isMixedContentBlocked, CONNECTION_TIMEOUT_MS, registerCollaborationTeardown, sanitizeColor, cloneTemplateElementsBySlideId, cloneSlide, createWheelStepBuffer, createViewerZoomStore, clampZoomScale, mapEditingWheel, createActiveAnimationGroup, cancelBuildReveal, clearPlaybackTimers, PresentationAnimationController, resolveMediaTimeNodeElementIds, advanceMainSequence, playGroup, PRESENTATION_HASH, PRESENTATION_NONCE_KEY, PRESENTATION_CHANNEL_NAME, swapPresentationWindows, PRESENTATION_MESSAGE_ORIGIN, clearAudienceContent, buildPresentationAudienceUrl, resolveAudienceScreenPlacement, placeAudienceWindow, storeAudienceContent, isPresentationSessionMessage, endAudienceDisplay, createPresentationKeyBuffer, acceptsPresentationInput, resolveAutoAdvanceDelayMs, hasShowSlideAfter, nextShowSlideIndex, previousShowSlideIndex, createPresenterShowGuard, firstShowSlideIndex, attachPresentationVisibilityPause, presentationEntrySlideIndex, buildMorphTransitionPlan, morphOptionToMode, buildMorphAnimationRules, findInSlides, applyFindReplacements, visibleTemplateElements, createCollaborationLivePatcher, publishLiveInlineText, PptxHandler, createPresentationLoadResources, collectMediaElements, resolveMediaElementSource, collectImagePaths, applyImagePathPatches, resolveTableCellImageUrls, resolveTableStyleImageUrls, partitionTemplateElements, seedRecentColors, resolveAuthoredCustomShowId, buildInitialGuides, readOnlyRecommendation, compatibilityWarningToasts, EncryptedFileError, resolveAutosaveIntervalMs, shouldWriteAutosaveSnapshot, saveAutosaveSnapshot, autosaveSnapshotMark, hasTextProperties, remapTextToSegments, updateMasterViewElement, isTemplateElementId, updateElement, hasShapeProperties, getInlineEditorSelection, applyListStyleUpdate, setPendingSelectionRestore, applyStyleToSelectedSegments, updateTextSegmentStyle, applyCaseTransformToSegments, transformTextCase, masterViewElements, replaceMasterViewElements, addSection, renameSection, deleteSection, moveSectionUp, moveSectionDown, moveSlidesToSection, canInteractWithElement, normalizeColorsForCapture, preprocessCssForCapture, slideProgressPercent, slideStatusLabel, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, isExportAbortError, resolveImageResolutionScale, applyThemeToData, THEME_PRESETS, themeColorSchemesEqual, comparePresentation, applyAcceptSlide, applyAcceptAllSlides, collectUsedFonts, describeFontEmbedding, isMobileViewport, resolveAuthoredSlideRange, mayLeaveSlideShow, stopAllPersistentAudio, guidePxToEmu, buildSaveSlides, buildDeckSaveOptions, resolveSlideSizeSelection, saveDeckWithPassword, shouldProbeAutosaveRecovery, probeAutosaveRecovery, acceptAutosaveRecovery, discardAutosaveRecovery, shouldLoopContinuously, applyRehearsalTimings, copyFormatFromElement, applyFormatToElement, collectReferencedFontFamilies, resolveGoogleWebfontHref, selectGoogleWebfontFamilies, fetchGoogleWebfontOutlineBytes, mapSlideShowStartKey, mapEditorKey, isEditorTextInputTarget, prepareElementForInsertion, createViewerOptionsStore, readSlidesFromYDoc, shouldRoomSlidesReplaceLoad, reconcileSlidesInYDoc, LOCAL_SYNC_ORIGIN, observeYDocSlides, shouldAutoFollowBroadcaster, detectTouchDevice, detectOrientation, deriveViewportBreakpoints, createTouchGestureRecognizer, MAX_ZOOM_SCALE, MIN_ZOOM_SCALE, isKeyboardOpen, scopeLayoutOptionsToSlide, checkModifyPassword, viewerPreferencesFromViewProperties, DEFAULT_VIEWER_PREFERENCES, viewPropertiesPatchFromPreferences, openPptxFile, readBackstageRecentFile, isActionHidden, buildInlineTextCommitPatch, resolveInlineEditAutoFitHeight, resolveInlineEditNormAutofitShrink, filterInteractableIds, beginShapeAdjustment, buildElementClipboardPayload, savedPresentationFileName, downloadBlob, exportDeckJson, groupElements, generateElementId, makeCloneId, ungroupElements, alignElements, distributeElements, bringForward, sendBackward, bringToFront, sendToBack, newTableElement, createDefaultChartElement, readViewportMetrics, computeKeyboardInset, mergeShapes, mapPresentationKey, lastShowSlideIndex, mapPresentationWheel, openPendingPrintWindow, computeColorFilter, filterHiddenSlideIndices, computeSlideIndices, buildPrintDocument, finishPrintWindow, buildPrintHtmlDocument, buildOutlineHtml, buildSlidesHtml, buildNotesHtml, buildHandoutsHtml, createBlankSlide, makeSlideId, buildSlideTemplateSlide, templateSchemeFromTheme, buildThemeColorMap, reResolveSlideColors, reResolveElementColors, resolveViewportFitOptions, calculateViewportFit, scheduleAutoAdvanceChain, computeEntranceAnimationDelay, createPresentationSessionId, resolveTransitionDurationMs, resolveTransitionSoundAction, runPresentationAction, safeOpenUrl, buildRunProgramNotice, toggleStageElementMedia, resolveOleVerbTarget, downloadDataUrl, openUrlInNewTab, createPresenterTimer, createInitialPresentationSnapshot, mergePresentationSnapshot, resetPresenterTimer, presenterElapsed, stepPresenterZoom, togglePresenterTimer, addCommentToList, removeCommentFromList, editCommentInList, toggleCommentResolvedInList, resolveExportCaptureDecision, recordProgressPercent, computeGridSpacingPx, resolveShowSlideIndexes, groupSlidesBySection, masterViewPseudoSlide, resolveHistoryDepth, hasCopyableFormat, createBackstagePresentation, buildFieldSubstitutionContext, cloneElementForPaste, computeScrollDelta, getPresetShapeClipPath, svgPathToPolygons, polygonsToSvgPath, rerouteConnectorsForMovedElements, applyReroutedConnectors, SvgExporter, replyToCommentInList, removeTableElementColumn, insertTableElementColumn, removeTableElementRow, insertTableElementRow, updateCellTextStyleInRawXml, setCellText, updateCellTextInRawXml, splitCell, updateMergeAttrsInRawXml, mergeCells, pickSupportedMimeType, WEBM_MIME_CANDIDATES, fpsToFrameIntervalMs, segmentFrameCount, GIF_POST_CAPTURE_MAX_SIDE, encodeGif, rasterResultToPngBlob, rasterizeElementTiles, placeTileOnPage, PDF_SLIDES_PAGE_WIDTH_PT, PDF_SLIDES_PAGE_HEIGHT_PT, canvasToJpegData, rasterizeElementTiledToCanvas, isPpactionUrl, parsePpactionUrl, resolvePresentationAction, ACTION_BUTTON_PRESETS, elementActionToPptxAction, isUrlSafe, buildSmartArtPresetData, classifyMediaType, computeSnapToShape, publishLiveGeometry, getDraggedShapeAdjustments, computeMarqueeHitIds, mergeAdditiveSelection, clampGifDimensions, rasterizeElement, shouldConfirmExternalHyperlink, applyResize, lockResizeAspect, snapBoxToGrid, applyMotionPathPreset } from './chunk-QTGCOL5H.mjs';
|
|
3
|
+
import { translationsEn } from './chunk-LAU34UMB.mjs';
|
|
4
4
|
import { createContext, useRef, useState, useEffect, useCallback, useMemo, useLayoutEffect, useContext, useImperativeHandle, useSyncExternalStore } from 'react';
|
|
5
5
|
import { useTranslation } from 'react-i18next';
|
|
6
6
|
|
|
@@ -730,12 +730,60 @@ function useViewerStore(store, selector, isEqual = Object.is) {
|
|
|
730
730
|
);
|
|
731
731
|
return useSyncExternalStore(subscribe2, getSnapshot2, getSnapshot2);
|
|
732
732
|
}
|
|
733
|
+
var DEFAULT_FIT = { fitPadding: { horizontal: 4, vertical: 16 }, maxFitScale: 1 };
|
|
734
|
+
function useViewportFit(canvasSize, viewportRef, options) {
|
|
735
|
+
const [editorDimensions, setEditorDimensions] = useState(null);
|
|
736
|
+
const { fitPadding, maxFitScale } = resolveViewportFitOptions(options, DEFAULT_FIT);
|
|
737
|
+
const { horizontal, vertical } = fitPadding;
|
|
738
|
+
const effectiveEditorDimensions = editorDimensions ?? canvasSize;
|
|
739
|
+
const { scale: fitScale } = calculateViewportFit({
|
|
740
|
+
viewportWidth: effectiveEditorDimensions.width,
|
|
741
|
+
viewportHeight: effectiveEditorDimensions.height,
|
|
742
|
+
canvasWidth: canvasSize.width,
|
|
743
|
+
canvasHeight: canvasSize.height,
|
|
744
|
+
maxFitScale
|
|
745
|
+
});
|
|
746
|
+
useEffect(() => {
|
|
747
|
+
let observer = null;
|
|
748
|
+
let raf = 0;
|
|
749
|
+
const measure = (element) => {
|
|
750
|
+
const { availableWidth: width, availableHeight: height } = calculateViewportFit({
|
|
751
|
+
viewportWidth: element.clientWidth,
|
|
752
|
+
viewportHeight: element.clientHeight,
|
|
753
|
+
canvasWidth: canvasSize.width,
|
|
754
|
+
canvasHeight: canvasSize.height,
|
|
755
|
+
fitPadding: { horizontal, vertical }
|
|
756
|
+
});
|
|
757
|
+
if (width > 0 && height > 0) {
|
|
758
|
+
setEditorDimensions({ width, height });
|
|
759
|
+
}
|
|
760
|
+
};
|
|
761
|
+
const attach = () => {
|
|
762
|
+
const element = viewportRef.current;
|
|
763
|
+
if (!element) {
|
|
764
|
+
raf = requestAnimationFrame(attach);
|
|
765
|
+
return;
|
|
766
|
+
}
|
|
767
|
+
observer = new ResizeObserver(() => measure(element));
|
|
768
|
+
observer.observe(element);
|
|
769
|
+
measure(element);
|
|
770
|
+
};
|
|
771
|
+
attach();
|
|
772
|
+
return () => {
|
|
773
|
+
cancelAnimationFrame(raf);
|
|
774
|
+
observer?.disconnect();
|
|
775
|
+
};
|
|
776
|
+
}, [viewportRef, canvasSize.width, canvasSize.height, horizontal, vertical]);
|
|
777
|
+
return { editorDimensions, setEditorDimensions, effectiveEditorDimensions, fitScale };
|
|
778
|
+
}
|
|
733
779
|
|
|
734
780
|
// src/viewer/hooks/useZoomViewport.ts
|
|
735
781
|
var selectZoom = (state) => state.zoom;
|
|
736
782
|
function useZoomViewport({
|
|
737
783
|
canvasSize,
|
|
738
|
-
selectedElements
|
|
784
|
+
selectedElements,
|
|
785
|
+
fitPadding,
|
|
786
|
+
maxFitScale
|
|
739
787
|
}) {
|
|
740
788
|
const editWrapperRef = useRef(null);
|
|
741
789
|
const canvasStageRef = useRef(null);
|
|
@@ -750,19 +798,7 @@ function useZoomViewport({
|
|
|
750
798
|
(next) => store.dispatch({ type: "set-zoom", zoom: next }),
|
|
751
799
|
[store]
|
|
752
800
|
);
|
|
753
|
-
const
|
|
754
|
-
const effectiveEditorDimensions = editorDimensions || {
|
|
755
|
-
width: canvasSize.width,
|
|
756
|
-
height: canvasSize.height
|
|
757
|
-
};
|
|
758
|
-
const fitScale = useMemo(() => {
|
|
759
|
-
if (!effectiveEditorDimensions.width || !effectiveEditorDimensions.height) {
|
|
760
|
-
return 1;
|
|
761
|
-
}
|
|
762
|
-
const widthScale = effectiveEditorDimensions.width / canvasSize.width;
|
|
763
|
-
const heightScale = effectiveEditorDimensions.height / canvasSize.height;
|
|
764
|
-
return Math.min(widthScale, heightScale, 1);
|
|
765
|
-
}, [canvasSize, effectiveEditorDimensions.height, effectiveEditorDimensions.width]);
|
|
801
|
+
const { editorDimensions, setEditorDimensions, effectiveEditorDimensions, fitScale } = useViewportFit(canvasSize, canvasViewportRef, { fitPadding, maxFitScale });
|
|
766
802
|
const editorScale = fitScale * scale;
|
|
767
803
|
useEffect(() => {
|
|
768
804
|
renderScaleRef.current = editorScale;
|
|
@@ -770,33 +806,6 @@ function useZoomViewport({
|
|
|
770
806
|
useEffect(() => {
|
|
771
807
|
store.dispatch({ type: "set-fit-scale", fitScale });
|
|
772
808
|
}, [store, fitScale]);
|
|
773
|
-
useEffect(() => {
|
|
774
|
-
let observer = null;
|
|
775
|
-
let raf = 0;
|
|
776
|
-
const VERTICAL_MARGIN = 32;
|
|
777
|
-
const measure = (el) => {
|
|
778
|
-
const width = Math.max(0, el.clientWidth - 8);
|
|
779
|
-
const height = Math.max(0, el.clientHeight - VERTICAL_MARGIN);
|
|
780
|
-
if (width > 0 && height > 0) {
|
|
781
|
-
setEditorDimensions({ width, height });
|
|
782
|
-
}
|
|
783
|
-
};
|
|
784
|
-
const attach = () => {
|
|
785
|
-
const el = canvasViewportRef.current;
|
|
786
|
-
if (!el) {
|
|
787
|
-
raf = requestAnimationFrame(attach);
|
|
788
|
-
return;
|
|
789
|
-
}
|
|
790
|
-
observer = new ResizeObserver(() => measure(el));
|
|
791
|
-
observer.observe(el);
|
|
792
|
-
measure(el);
|
|
793
|
-
};
|
|
794
|
-
attach();
|
|
795
|
-
return () => {
|
|
796
|
-
cancelAnimationFrame(raf);
|
|
797
|
-
observer?.disconnect();
|
|
798
|
-
};
|
|
799
|
-
}, []);
|
|
800
809
|
const centerBoundsInViewport = useCallback(
|
|
801
810
|
(bounds, nextScale) => {
|
|
802
811
|
const wrapper = editWrapperRef.current;
|
|
@@ -4406,6 +4415,19 @@ function useElementOperations(input) {
|
|
|
4406
4415
|
const isLiveEditing = selectedElement.id === inlineEditingElementId;
|
|
4407
4416
|
const currentSegments = liveTextSegments();
|
|
4408
4417
|
const inlineSel = getInlineEditorSelection(currentSegments);
|
|
4418
|
+
if (updates.listType) {
|
|
4419
|
+
const result = applyListStyleUpdate(
|
|
4420
|
+
{ ...selectedElement, textSegments: currentSegments },
|
|
4421
|
+
updates,
|
|
4422
|
+
inlineSel
|
|
4423
|
+
);
|
|
4424
|
+
setPendingSelectionRestore(result.selection);
|
|
4425
|
+
updateSelectedElement({
|
|
4426
|
+
...result.patch,
|
|
4427
|
+
...isLiveEditing ? { text: inlineEditingText } : {}
|
|
4428
|
+
});
|
|
4429
|
+
return;
|
|
4430
|
+
}
|
|
4409
4431
|
if (inlineSel && currentSegments) {
|
|
4410
4432
|
const { newSegments: newSegments2, newSelection } = applyStyleToSelectedSegments(
|
|
4411
4433
|
currentSegments,
|
|
@@ -4420,10 +4442,7 @@ function useElementOperations(input) {
|
|
|
4420
4442
|
return;
|
|
4421
4443
|
}
|
|
4422
4444
|
const newTextStyle = { ...selectedElement.textStyle, ...updates };
|
|
4423
|
-
const newSegments = currentSegments?.map((seg) => (
|
|
4424
|
-
...seg,
|
|
4425
|
-
style: { ...seg.style, ...updates }
|
|
4426
|
-
}));
|
|
4445
|
+
const newSegments = currentSegments?.map((seg) => updateTextSegmentStyle(seg, updates));
|
|
4427
4446
|
updateSelectedElement({
|
|
4428
4447
|
textStyle: newTextStyle,
|
|
4429
4448
|
textSegments: newSegments,
|
|
@@ -5897,6 +5916,7 @@ function useInsertElements(input) {
|
|
|
5897
5916
|
history.markDirty();
|
|
5898
5917
|
};
|
|
5899
5918
|
return {
|
|
5919
|
+
addElement,
|
|
5900
5920
|
handleAddTextBox,
|
|
5901
5921
|
handleAddShape,
|
|
5902
5922
|
handleAddTable,
|
|
@@ -9745,6 +9765,7 @@ function useKeyboardShortcuts(input) {
|
|
|
9745
9765
|
}
|
|
9746
9766
|
const { action, dx, dy } = mapEditorKey(e, {
|
|
9747
9767
|
canEdit: current.canEdit,
|
|
9768
|
+
canPaste: current.canPaste,
|
|
9748
9769
|
// The Slide Master view is an editing surface, not a viewing one.
|
|
9749
9770
|
// Gating on `mode !== 'edit'` alone made `mapEditorKey` return
|
|
9750
9771
|
// NO_ACTION there, so Delete, the arrow-key nudges and the clipboard
|
|
@@ -9840,6 +9861,7 @@ function useKeyboardShortcutWiring(input) {
|
|
|
9840
9861
|
mode,
|
|
9841
9862
|
canEdit,
|
|
9842
9863
|
inlineEditingElementId: state.inlineEditingElementId,
|
|
9864
|
+
canPaste: Boolean(state.clipboardPayload && activeSlide),
|
|
9843
9865
|
tableEditorState: state.tableEditorState,
|
|
9844
9866
|
activeTool: state.activeTool,
|
|
9845
9867
|
hasSelection: state.effectiveSelectedIds.length > 0,
|
|
@@ -9930,6 +9952,7 @@ function useViewerIntegration(input) {
|
|
|
9930
9952
|
setModifyVerifier,
|
|
9931
9953
|
setCompatToasts,
|
|
9932
9954
|
canEdit,
|
|
9955
|
+
canInsertElement = true,
|
|
9933
9956
|
promptKeepInkAnnotations,
|
|
9934
9957
|
imageExportScale,
|
|
9935
9958
|
imageResolutionScale,
|
|
@@ -10173,6 +10196,21 @@ function useViewerIntegration(input) {
|
|
|
10173
10196
|
return s?.elements.find((e) => e.id === elementId);
|
|
10174
10197
|
},
|
|
10175
10198
|
// -- Element manipulation --
|
|
10199
|
+
addElement(element) {
|
|
10200
|
+
const inserted = prepareElementForInsertion(element, {
|
|
10201
|
+
canEdit: canEdit && canInsertElement,
|
|
10202
|
+
mode,
|
|
10203
|
+
hasActiveSlide: !loading && !error && Boolean(activeSlide),
|
|
10204
|
+
editTemplateMode: state.editTemplateMode
|
|
10205
|
+
});
|
|
10206
|
+
if (!inserted) {
|
|
10207
|
+
return void 0;
|
|
10208
|
+
}
|
|
10209
|
+
editorOps.canvasHandlers.handleInlineEditCommit();
|
|
10210
|
+
editorOps.insertHandlers.addElement(inserted);
|
|
10211
|
+
editorOps.ops.applySelection(inserted.id, [inserted.id]);
|
|
10212
|
+
return inserted.id;
|
|
10213
|
+
},
|
|
10176
10214
|
updateElement(elementId, updates) {
|
|
10177
10215
|
editorOps.ops.updateElementById(elementId, updates);
|
|
10178
10216
|
},
|
|
@@ -10193,6 +10231,11 @@ function useViewerIntegration(input) {
|
|
|
10193
10231
|
onContentChange,
|
|
10194
10232
|
slides,
|
|
10195
10233
|
activeSlideIndex,
|
|
10234
|
+
activeSlide,
|
|
10235
|
+
canEdit,
|
|
10236
|
+
canInsertElement,
|
|
10237
|
+
loading,
|
|
10238
|
+
error,
|
|
10196
10239
|
state,
|
|
10197
10240
|
history,
|
|
10198
10241
|
zoom,
|
|
@@ -11390,7 +11433,12 @@ function useViewerBuildingBlocksCore(input) {
|
|
|
11390
11433
|
state.isDrawingRef
|
|
11391
11434
|
]
|
|
11392
11435
|
);
|
|
11393
|
-
const zoom = useZoomViewport({
|
|
11436
|
+
const zoom = useZoomViewport({
|
|
11437
|
+
canvasSize,
|
|
11438
|
+
selectedElements: state.selectedElements,
|
|
11439
|
+
fitPadding: input.fitPadding,
|
|
11440
|
+
maxFitScale: input.maxFitScale
|
|
11441
|
+
});
|
|
11394
11442
|
const { options: viewerOptions } = useViewerOptions();
|
|
11395
11443
|
const { setIsDirty } = state;
|
|
11396
11444
|
const markDocumentDirty = useCallback(() => {
|
|
@@ -11746,6 +11794,7 @@ function useViewerBuildingBlocksState(input) {
|
|
|
11746
11794
|
allowExternalImages: viewerOptions.trust.allowExternalContent,
|
|
11747
11795
|
setReadOnlyRecommendation: readOnlyRec.setRecommendation,
|
|
11748
11796
|
setModifyVerifier: readOnlyRec.setModifyVerifier,
|
|
11797
|
+
canInsertElement: !readOnlyRec.locked && !viewerOptions.trust.openInProtectedView,
|
|
11749
11798
|
setCompatToasts: compatToastsState.setToasts,
|
|
11750
11799
|
canEdit,
|
|
11751
11800
|
promptKeepInkAnnotations: viewerOptions.advanced.slideShowPromptKeepInkAnnotations,
|
|
@@ -11837,7 +11886,11 @@ function useViewerBuildingBlocks(input) {
|
|
|
11837
11886
|
}
|
|
11838
11887
|
})();
|
|
11839
11888
|
}, []);
|
|
11840
|
-
const core = useViewerBuildingBlocksCore({
|
|
11889
|
+
const core = useViewerBuildingBlocksCore({
|
|
11890
|
+
content,
|
|
11891
|
+
fitPadding: input.fitPadding,
|
|
11892
|
+
maxFitScale: input.maxFitScale
|
|
11893
|
+
});
|
|
11841
11894
|
const {
|
|
11842
11895
|
state,
|
|
11843
11896
|
mode,
|
|
Binary file
|
|
Binary file
|