pptx-react-viewer 3.6.0 → 3.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +32 -0
- package/dist/{AiChatPanel-WRQGJJVD.mjs → AiChatPanel-A5DCEHTO.mjs} +4 -4
- package/dist/AiChatPanel-A5DCEHTO.mjs.br +0 -0
- package/dist/AiChatPanel-A5DCEHTO.mjs.gz +0 -0
- package/dist/{AiChatPanel-LEOEDIW2.js → AiChatPanel-XLQM4BQJ.js} +25 -25
- package/dist/AiChatPanel-XLQM4BQJ.js.br +0 -0
- package/dist/AiChatPanel-XLQM4BQJ.js.gz +0 -0
- package/dist/{Area3DChartScene-SJC2ZB6R.mjs → Area3DChartScene-5CMEMIBI.mjs} +1 -1
- package/dist/Area3DChartScene-5CMEMIBI.mjs.br +0 -0
- package/dist/Area3DChartScene-5CMEMIBI.mjs.gz +0 -0
- package/dist/{Area3DChartScene-3TJ2GTGI.js → Area3DChartScene-RZ3V3WOR.js} +2 -2
- package/dist/Area3DChartScene-RZ3V3WOR.js.br +0 -0
- package/dist/Area3DChartScene-RZ3V3WOR.js.gz +0 -0
- package/dist/{Bar3DChartScene-SPER4LQA.mjs → Bar3DChartScene-H3MYUJKV.mjs} +1 -1
- package/dist/Bar3DChartScene-H3MYUJKV.mjs.br +0 -0
- package/dist/Bar3DChartScene-H3MYUJKV.mjs.gz +0 -0
- package/dist/{Bar3DChartScene-2ZGOMOZO.js → Bar3DChartScene-KHCQ6TEC.js} +2 -2
- package/dist/Bar3DChartScene-KHCQ6TEC.js.br +0 -0
- package/dist/Bar3DChartScene-KHCQ6TEC.js.gz +0 -0
- package/dist/{Line3DChartScene-42FYFGLU.js → Line3DChartScene-QEACF3U3.js} +2 -2
- package/dist/Line3DChartScene-QEACF3U3.js.br +0 -0
- package/dist/Line3DChartScene-QEACF3U3.js.gz +0 -0
- package/dist/{Line3DChartScene-FH3YHPXE.mjs → Line3DChartScene-YFRPJHDX.mjs} +1 -1
- package/dist/Line3DChartScene-YFRPJHDX.mjs.br +0 -0
- package/dist/Line3DChartScene-YFRPJHDX.mjs.gz +0 -0
- package/dist/{Model3DScene-2BCR2YYD.mjs → Model3DScene-O24KP723.mjs} +1 -1
- package/dist/Model3DScene-O24KP723.mjs.br +0 -0
- package/dist/Model3DScene-O24KP723.mjs.gz +0 -0
- package/dist/{Model3DScene-EIU2GVUZ.js → Model3DScene-QQWKGJ3T.js} +2 -2
- package/dist/Model3DScene-QQWKGJ3T.js.br +0 -0
- package/dist/Model3DScene-QQWKGJ3T.js.gz +0 -0
- package/dist/{PieChart3DScene-QFQUJFDP.mjs → PieChart3DScene-CI6CW22C.mjs} +1 -1
- package/dist/PieChart3DScene-CI6CW22C.mjs.br +0 -0
- package/dist/PieChart3DScene-CI6CW22C.mjs.gz +0 -0
- package/dist/{PieChart3DScene-VQOHZPHI.js → PieChart3DScene-L3MHKQHW.js} +2 -2
- package/dist/PieChart3DScene-L3MHKQHW.js.br +0 -0
- package/dist/PieChart3DScene-L3MHKQHW.js.gz +0 -0
- package/dist/PowerPointViewer-Cl6jBPNw.d.ts.map +1 -1
- package/dist/{SurfaceChart3DScene-FTVXZN6O.js → SurfaceChart3DScene-5IER6VFW.js} +2 -2
- package/dist/SurfaceChart3DScene-5IER6VFW.js.br +0 -0
- package/dist/SurfaceChart3DScene-5IER6VFW.js.gz +0 -0
- package/dist/{SurfaceChart3DScene-CGXMRBCL.mjs → SurfaceChart3DScene-JUXRC3K2.mjs} +1 -1
- package/dist/SurfaceChart3DScene-JUXRC3K2.mjs.br +0 -0
- package/dist/SurfaceChart3DScene-JUXRC3K2.mjs.gz +0 -0
- package/dist/{audience-content-store-bR7Gs_1S.d.ts → audience-content-store-CB2WVM1K.d.ts} +12 -3
- package/dist/{audience-content-store-bR7Gs_1S.d.ts.map → audience-content-store-CB2WVM1K.d.ts.map} +1 -1
- package/dist/{chunk-NFOOONND.js → chunk-4222CHFH.js} +1944 -1299
- package/dist/chunk-4222CHFH.js.br +0 -0
- package/dist/chunk-4222CHFH.js.gz +0 -0
- package/dist/{chunk-ZUSYUWOV.mjs → chunk-6IMB5DNJ.mjs} +8927 -4870
- package/dist/chunk-6IMB5DNJ.mjs.br +0 -0
- package/dist/chunk-6IMB5DNJ.mjs.gz +0 -0
- package/dist/{chunk-ZHSBMG37.js → chunk-DE3S3UHX.js} +557 -682
- package/dist/chunk-DE3S3UHX.js.br +0 -0
- package/dist/chunk-DE3S3UHX.js.gz +0 -0
- package/dist/{chunk-ZWPHUPL4.js → chunk-F5NPGNMA.js} +9 -5
- package/dist/chunk-F5NPGNMA.js.br +0 -0
- package/dist/chunk-F5NPGNMA.js.gz +0 -0
- package/dist/{chunk-TGCSZXOG.mjs → chunk-FRZIBZTE.mjs} +57 -27
- package/dist/chunk-FRZIBZTE.mjs.br +0 -0
- package/dist/chunk-FRZIBZTE.mjs.gz +0 -0
- package/dist/{chunk-MZI4DG3S.js → chunk-L3ZIBQEB.js} +57 -27
- package/dist/chunk-L3ZIBQEB.js.br +0 -0
- package/dist/chunk-L3ZIBQEB.js.gz +0 -0
- package/dist/{chunk-FG5VQFWP.mjs → chunk-PFPKBNNZ.mjs} +761 -116
- package/dist/chunk-PFPKBNNZ.mjs.br +0 -0
- package/dist/chunk-PFPKBNNZ.mjs.gz +0 -0
- package/dist/{chunk-7VPDHSWF.js → chunk-QWA5YEIZ.js} +234 -241
- package/dist/chunk-QWA5YEIZ.js.br +0 -0
- package/dist/chunk-QWA5YEIZ.js.gz +0 -0
- package/dist/{chunk-WX7AFFBZ.mjs → chunk-RHWQKZLB.mjs} +63 -69
- package/dist/chunk-RHWQKZLB.mjs.br +0 -0
- package/dist/chunk-RHWQKZLB.mjs.gz +0 -0
- package/dist/{chunk-T3V5FBXJ.mjs → chunk-RNP5HP4L.mjs} +5 -2
- package/dist/chunk-RNP5HP4L.mjs.br +0 -0
- package/dist/chunk-RNP5HP4L.mjs.gz +0 -0
- package/dist/{chunk-AL2KLPOJ.js → chunk-SN5EUDIT.js} +8959 -4873
- package/dist/chunk-SN5EUDIT.js.br +0 -0
- package/dist/chunk-SN5EUDIT.js.gz +0 -0
- package/dist/{chunk-VYNICQ4O.mjs → chunk-UPJW34YG.mjs} +133 -258
- package/dist/chunk-UPJW34YG.mjs.br +0 -0
- package/dist/chunk-UPJW34YG.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 +595 -38
- 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 +768 -186
- 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/types-Bzdkiakq.d.ts.map +1 -1
- package/dist/viewer/index.d.ts +534 -38
- 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 +2 -2
- package/dist/AiChatPanel-LEOEDIW2.js.br +0 -0
- package/dist/AiChatPanel-LEOEDIW2.js.gz +0 -0
- package/dist/AiChatPanel-WRQGJJVD.mjs.br +0 -0
- package/dist/AiChatPanel-WRQGJJVD.mjs.gz +0 -0
- package/dist/Area3DChartScene-3TJ2GTGI.js.br +0 -0
- package/dist/Area3DChartScene-3TJ2GTGI.js.gz +0 -0
- package/dist/Area3DChartScene-SJC2ZB6R.mjs.br +0 -2
- package/dist/Area3DChartScene-SJC2ZB6R.mjs.gz +0 -0
- package/dist/Bar3DChartScene-2ZGOMOZO.js.br +0 -0
- package/dist/Bar3DChartScene-2ZGOMOZO.js.gz +0 -0
- package/dist/Bar3DChartScene-SPER4LQA.mjs.br +0 -0
- package/dist/Bar3DChartScene-SPER4LQA.mjs.gz +0 -0
- package/dist/Line3DChartScene-42FYFGLU.js.br +0 -0
- package/dist/Line3DChartScene-42FYFGLU.js.gz +0 -0
- package/dist/Line3DChartScene-FH3YHPXE.mjs.br +0 -2
- package/dist/Line3DChartScene-FH3YHPXE.mjs.gz +0 -0
- package/dist/Model3DScene-2BCR2YYD.mjs.br +0 -0
- package/dist/Model3DScene-2BCR2YYD.mjs.gz +0 -0
- package/dist/Model3DScene-EIU2GVUZ.js.br +0 -0
- package/dist/Model3DScene-EIU2GVUZ.js.gz +0 -0
- package/dist/PieChart3DScene-QFQUJFDP.mjs.br +0 -0
- package/dist/PieChart3DScene-QFQUJFDP.mjs.gz +0 -0
- package/dist/PieChart3DScene-VQOHZPHI.js.br +0 -0
- package/dist/PieChart3DScene-VQOHZPHI.js.gz +0 -0
- package/dist/SurfaceChart3DScene-CGXMRBCL.mjs.br +0 -0
- package/dist/SurfaceChart3DScene-CGXMRBCL.mjs.gz +0 -0
- package/dist/SurfaceChart3DScene-FTVXZN6O.js.br +0 -0
- package/dist/SurfaceChart3DScene-FTVXZN6O.js.gz +0 -0
- package/dist/chunk-7VPDHSWF.js.br +0 -0
- package/dist/chunk-7VPDHSWF.js.gz +0 -0
- package/dist/chunk-AL2KLPOJ.js.br +0 -0
- package/dist/chunk-AL2KLPOJ.js.gz +0 -0
- package/dist/chunk-FG5VQFWP.mjs.br +0 -0
- package/dist/chunk-FG5VQFWP.mjs.gz +0 -0
- package/dist/chunk-MZI4DG3S.js.br +0 -0
- package/dist/chunk-MZI4DG3S.js.gz +0 -0
- package/dist/chunk-NFOOONND.js.br +0 -0
- package/dist/chunk-NFOOONND.js.gz +0 -0
- package/dist/chunk-T3V5FBXJ.mjs.br +0 -0
- package/dist/chunk-T3V5FBXJ.mjs.gz +0 -0
- package/dist/chunk-TGCSZXOG.mjs.br +0 -0
- package/dist/chunk-TGCSZXOG.mjs.gz +0 -0
- package/dist/chunk-VYNICQ4O.mjs.br +0 -0
- package/dist/chunk-VYNICQ4O.mjs.gz +0 -0
- package/dist/chunk-WX7AFFBZ.mjs.br +0 -0
- package/dist/chunk-WX7AFFBZ.mjs.gz +0 -0
- package/dist/chunk-ZHSBMG37.js.br +0 -0
- package/dist/chunk-ZHSBMG37.js.gz +0 -0
- package/dist/chunk-ZUSYUWOV.mjs.br +0 -0
- package/dist/chunk-ZUSYUWOV.mjs.gz +0 -0
- package/dist/chunk-ZWPHUPL4.js.br +0 -0
- package/dist/chunk-ZWPHUPL4.js.gz +0 -0
|
Binary file
|
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { cloneHistorySnapshot, MIN_ELEMENT_SIZE, ZOOM_TO_SELECTION_PADDING, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, UNGROUPED_SECTION_ID, DEFAULT_SECTION_GROUP_ID, DEFAULT_TABLE_ROWS, DEFAULT_TABLE_COLUMNS, buildPdfFromImageData, buildNotesPdf, GRID_SIZE, DEFAULT_TEXT_FONT_SIZE } from './chunk-
|
|
2
|
-
import { DEFAULT_VIEWER_OPTIONS, TOOLBAR_TABS, computeVirtualRange, DEFAULT_VIRTUAL_OVERSCAN, createPresenceProjector, BROADCAST_THROTTLE_MS, createSyncGate, clearLocalAwareness, validateRoomId, createDepartureChannel, resolveTransportForServerUrl, isMixedContentBlocked, CONNECTION_TIMEOUT_MS, registerCollaborationTeardown, sanitizeColor, cloneTemplateElementsBySlideId, cloneSlide, createWheelStepBuffer, createViewerZoomStore, clampZoomScale, mapEditingWheel, cancelBuildReveal, PresentationAnimationController, resolveMediaTimeNodeElementIds,
|
|
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_TABLE_ROWS, DEFAULT_TABLE_COLUMNS, buildPdfFromImageData, buildNotesPdf, GRID_SIZE, DEFAULT_TEXT_FONT_SIZE } from './chunk-RHWQKZLB.mjs';
|
|
2
|
+
import { DEFAULT_VIEWER_OPTIONS, TOOLBAR_TABS, computeVirtualRange, DEFAULT_VIRTUAL_OVERSCAN, createPresenceProjector, BROADCAST_THROTTLE_MS, createSyncGate, clearLocalAwareness, validateRoomId, createDepartureChannel, resolveTransportForServerUrl, isMixedContentBlocked, CONNECTION_TIMEOUT_MS, registerCollaborationTeardown, sanitizeColor, cloneTemplateElementsBySlideId, cloneSlide, createWheelStepBuffer, createViewerZoomStore, clampZoomScale, mapEditingWheel, createActiveAnimationGroup, cancelBuildReveal, clearPlaybackTimers, PresentationAnimationController, resolveMediaTimeNodeElementIds, advanceMainSequence, playGroup, PRESENTATION_HASH, PRESENTATION_NONCE_KEY, PRESENTATION_CHANNEL_NAME, swapPresentationWindows, PRESENTATION_MESSAGE_ORIGIN, clearAudienceContent, buildPresentationAudienceUrl, resolveAudienceScreenPlacement, placeAudienceWindow, storeAudienceContent, isPresentationSessionMessage, endAudienceDisplay, createPresentationKeyBuffer, acceptsPresentationInput, resolveAutoAdvanceDelayMs, hasShowSlideAfter, nextShowSlideIndex, previousShowSlideIndex, createPresenterShowGuard, firstShowSlideIndex, attachPresentationVisibilityPause, presentationEntrySlideIndex, buildMorphTransitionPlan, morphOptionToMode, buildMorphAnimationRules, findInSlides, applyFindReplacements, visibleTemplateElements, createCollaborationLivePatcher, publishLiveInlineText, PptxHandler, collectMediaElements, resolveMediaElementSource, collectImagePaths, applyImagePathPatches, resolveTableCellImageUrls, resolveTableStyleImageUrls, partitionTemplateElements, seedRecentColors, resolveAuthoredCustomShowId, buildInitialGuides, readOnlyRecommendation, compatibilityWarningToasts, EncryptedFileError, resolveAutosaveIntervalMs, shouldWriteAutosaveSnapshot, saveAutosaveSnapshot, autosaveSnapshotMark, hasTextProperties, remapTextToSegments, updateMasterViewElement, isTemplateElementId, updateElement, hasShapeProperties, getInlineEditorSelection, applyStyleToSelectedSegments, setPendingSelectionRestore, applyCaseTransformToSegments, transformTextCase, masterViewElements, replaceMasterViewElements, addSection, renameSection, deleteSection, moveSectionUp, moveSectionDown, moveSlidesToSection, canInteractWithElement, normalizeColorsForCapture, preprocessCssForCapture, slideProgressPercent, slideStatusLabel, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, isExportAbortError, recordProgressPercent, downloadBlob, resolveImageResolutionScale, applyThemeToData, THEME_PRESETS, themeColorSchemesEqual, comparePresentation, applyAcceptSlide, applyAcceptAllSlides, collectUsedFonts, describeFontEmbedding, isMobileViewport, resolveAuthoredSlideRange, mayLeaveSlideShow, stopAllPersistentAudio, guidePxToEmu, buildSaveSlides, buildDeckSaveOptions, resolveSlideSizeSelection, saveDeckWithPassword, shouldProbeAutosaveRecovery, probeAutosaveRecovery, acceptAutosaveRecovery, discardAutosaveRecovery, shouldLoopContinuously, applyRehearsalTimings, copyFormatFromElement, applyFormatToElement, collectReferencedFontFamilies, resolveGoogleWebfontHref, mapSlideShowStartKey, mapEditorKey, isEditorTextInputTarget, createViewerOptionsStore, readSlidesFromYDoc, shouldRoomSlidesReplaceLoad, reconcileSlidesInYDoc, LOCAL_SYNC_ORIGIN, observeYDocSlides, shouldAutoFollowBroadcaster, detectTouchDevice, detectOrientation, deriveViewportBreakpoints, createTouchGestureRecognizer, MAX_ZOOM_SCALE, MIN_ZOOM_SCALE, isKeyboardOpen, scopeLayoutOptionsToSlide, viewerPreferencesFromViewProperties, DEFAULT_VIEWER_PREFERENCES, viewPropertiesPatchFromPreferences, openPptxFile, readBackstageRecentFile, isActionHidden, resolveInlineEditAutoFitHeight, resolveInlineEditNormAutofitShrink, filterInteractableIds, beginShapeAdjustment, buildElementClipboardPayload, savedPresentationFileName, exportDeckJson, groupElements, generateElementId, makeCloneId, ungroupElements, alignElements, distributeElements, bringForward, sendBackward, bringToFront, sendToBack, newTableElement, createDefaultChartElement, readViewportMetrics, computeKeyboardInset, mergeShapes, mapPresentationKey, lastShowSlideIndex, mapPresentationWheel, openPendingPrintWindow, computeColorFilter, filterHiddenSlideIndices, computeSlideIndices, buildPrintDocument, finishPrintWindow, buildPrintHtmlDocument, buildOutlineHtml, buildSlidesHtml, buildNotesHtml, buildHandoutsHtml, createBlankSlide, makeSlideId, buildSlideTemplateSlide, templateSchemeFromTheme, buildThemeColorMap, reResolveSlideColors, reResolveElementColors, scheduleAutoAdvanceChain, computeEntranceAnimationDelay, createPresentationSessionId, resolveTransitionDurationMs, resolveTransitionSoundAction, runPresentationAction, safeOpenUrl, toggleStageElementMedia, resolveOleVerbTarget, openUrlInNewTab, createPresenterTimer, createInitialPresentationSnapshot, mergePresentationSnapshot, resetPresenterTimer, presenterElapsed, stepPresenterZoom, togglePresenterTimer, addCommentToList, removeCommentFromList, editCommentInList, toggleCommentResolvedInList, canvasToJpegData, downloadDataUrl, pickSupportedMimeType, WEBM_MIME_CANDIDATES, fpsToFrameIntervalMs, segmentFrameCount, encodeGif, computeGridSpacingPx, resolveShowSlideIndexes, groupSlidesBySection, masterViewPseudoSlide, resolveHistoryDepth, hasCopyableFormat, createBackstagePresentation, buildFieldSubstitutionContext, cloneElementForPaste, computeScrollDelta, getPresetShapeClipPath, svgPathToPolygons, polygonsToSvgPath, rerouteConnectorsForMovedElements, applyReroutedConnectors, SvgExporter, replyToCommentInList, deleteTableColumn, rebuildTableStructureInRawXml, insertTableColumn, deleteTableRow, insertTableRow, updateCellTextStyleInRawXml, setCellText, updateCellTextInRawXml, splitCell, updateMergeAttrsInRawXml, mergeCells, isPpactionUrl, parsePpactionUrl, resolvePresentationAction, ACTION_BUTTON_PRESETS, elementActionToPptxAction, isUrlSafe, buildSmartArtPresetData, classifyMediaType, computeSnapToShape, publishLiveGeometry, getDraggedShapeAdjustments, computeMarqueeHitIds, mergeAdditiveSelection, shouldConfirmExternalHyperlink, applyResize, lockResizeAspect, snapBoxToGrid, applyMotionPathPreset } from './chunk-6IMB5DNJ.mjs';
|
|
3
|
+
import { translationsEn } from './chunk-FRZIBZTE.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
|
|
|
@@ -968,79 +968,6 @@ function stopAnimationSound() {
|
|
|
968
968
|
}
|
|
969
969
|
}
|
|
970
970
|
|
|
971
|
-
// src/viewer/hooks/presentation-mode/animation-helpers.ts
|
|
972
|
-
function shouldSeekAnimationGroup(group, endAtMs, nowMs) {
|
|
973
|
-
return group?.seqNextAction === "seek" && nowMs < endAtMs;
|
|
974
|
-
}
|
|
975
|
-
function finishDomAnimationsForGroup(group, root = document) {
|
|
976
|
-
const targetIds = new Set(
|
|
977
|
-
group.steps.filter((step) => !step.command).map((step) => step.elementId)
|
|
978
|
-
);
|
|
979
|
-
if (targetIds.size === 0) {
|
|
980
|
-
return 0;
|
|
981
|
-
}
|
|
982
|
-
const activeAnimations = /* @__PURE__ */ new Set();
|
|
983
|
-
const candidates = root.querySelectorAll(
|
|
984
|
-
'[data-element-id], [data-anim-id], [data-pptx-animation-layer="background"]'
|
|
985
|
-
);
|
|
986
|
-
for (const element of candidates) {
|
|
987
|
-
let animationElementId = element.dataset.animId ?? element.dataset.elementId;
|
|
988
|
-
if (element.dataset.pptxAnimationLayer === "background") {
|
|
989
|
-
const hostId = element.closest("[data-element-id]")?.dataset.elementId;
|
|
990
|
-
animationElementId = hostId ? `${hostId}::pptx-bg` : void 0;
|
|
991
|
-
}
|
|
992
|
-
if (!animationElementId || !targetIds.has(animationElementId)) {
|
|
993
|
-
continue;
|
|
994
|
-
}
|
|
995
|
-
if (typeof element.getAnimations !== "function") {
|
|
996
|
-
continue;
|
|
997
|
-
}
|
|
998
|
-
for (const animation of element.getAnimations()) {
|
|
999
|
-
activeAnimations.add(animation);
|
|
1000
|
-
}
|
|
1001
|
-
}
|
|
1002
|
-
let finishedCount = 0;
|
|
1003
|
-
for (const animation of activeAnimations) {
|
|
1004
|
-
const iterations = animation.effect?.getTiming().iterations;
|
|
1005
|
-
if (animation.playState === "finished" || animation.playState === "idle") {
|
|
1006
|
-
continue;
|
|
1007
|
-
}
|
|
1008
|
-
if (iterations === Infinity) {
|
|
1009
|
-
continue;
|
|
1010
|
-
}
|
|
1011
|
-
try {
|
|
1012
|
-
animation.finish();
|
|
1013
|
-
finishedCount += 1;
|
|
1014
|
-
} catch {
|
|
1015
|
-
}
|
|
1016
|
-
}
|
|
1017
|
-
return finishedCount;
|
|
1018
|
-
}
|
|
1019
|
-
function finishAnimationGroupSteps(group, setPresentationElementStates, completedStates) {
|
|
1020
|
-
setPresentationElementStates((previousStates) => {
|
|
1021
|
-
const nextStates = new Map(previousStates);
|
|
1022
|
-
for (const step of group.steps) {
|
|
1023
|
-
if (step.command) {
|
|
1024
|
-
continue;
|
|
1025
|
-
}
|
|
1026
|
-
const currentState = nextStates.get(step.elementId) ?? {
|
|
1027
|
-
visible: true,
|
|
1028
|
-
cssAnimation: void 0
|
|
1029
|
-
};
|
|
1030
|
-
const holdsAnimatedPaint = step.holdEndState && step.colorTargets !== void 0 && step.colorTargets.length > 0;
|
|
1031
|
-
nextStates.set(step.elementId, {
|
|
1032
|
-
...currentState,
|
|
1033
|
-
visible: step.presetClass !== "exit" && !step.hideAfterEffect,
|
|
1034
|
-
cssAnimation: step.holdEndState ? step.cssAnimation : void 0,
|
|
1035
|
-
build: completedStates?.get(step.elementId)?.build ?? currentState.build,
|
|
1036
|
-
animatesFill: holdsAnimatedPaint && step.colorTargets?.includes("fill") ? true : void 0,
|
|
1037
|
-
animatesStroke: holdsAnimatedPaint && step.colorTargets?.includes("stroke") ? true : void 0
|
|
1038
|
-
});
|
|
1039
|
-
}
|
|
1040
|
-
return nextStates;
|
|
1041
|
-
});
|
|
1042
|
-
}
|
|
1043
|
-
|
|
1044
971
|
// src/viewer/hooks/presentation-mode/entrance-animation-timers.ts
|
|
1045
972
|
function scheduleOpeningAutoPlayGroup(controller, ctx) {
|
|
1046
973
|
if (!controller.hasMoreSteps()) {
|
|
@@ -1101,8 +1028,7 @@ function useAnimationPlayback(input) {
|
|
|
1101
1028
|
const presentationTimersRef = useRef([]);
|
|
1102
1029
|
const controllerRef = useRef(null);
|
|
1103
1030
|
const buildRafRef = useRef(null);
|
|
1104
|
-
const activeAnimationGroupRef = useRef(
|
|
1105
|
-
const activeAnimationEndAtRef = useRef(0);
|
|
1031
|
+
const activeAnimationGroupRef = useRef(createActiveAnimationGroup());
|
|
1106
1032
|
const seededCompletedRef = useRef(false);
|
|
1107
1033
|
const mediaTimeNodeElementIdsRef = useRef(/* @__PURE__ */ new Map());
|
|
1108
1034
|
const lastSeedCompletedRef = useRef(false);
|
|
@@ -1123,18 +1049,8 @@ function useAnimationPlayback(input) {
|
|
|
1123
1049
|
};
|
|
1124
1050
|
}, []);
|
|
1125
1051
|
const clearPresentationTimers = useCallback(() => {
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
});
|
|
1129
|
-
presentationTimersRef.current = [];
|
|
1130
|
-
cancelBuildReveal(buildRafRef);
|
|
1131
|
-
activeAnimationGroupRef.current = null;
|
|
1132
|
-
activeAnimationEndAtRef.current = 0;
|
|
1133
|
-
}, []);
|
|
1134
|
-
const markAnimationGroupActive = useCallback((group) => {
|
|
1135
|
-
activeAnimationGroupRef.current = group;
|
|
1136
|
-
activeAnimationEndAtRef.current = performance.now() + Math.max(0, group.totalDurationMs);
|
|
1137
|
-
}, []);
|
|
1052
|
+
clearPlaybackTimers(buildPlaybackContext(), activeAnimationGroupRef.current);
|
|
1053
|
+
}, [buildPlaybackContext]);
|
|
1138
1054
|
const resetSlideTimeline = useCallback(
|
|
1139
1055
|
(slideIndex) => {
|
|
1140
1056
|
cancelBuildReveal(buildRafRef);
|
|
@@ -1164,30 +1080,12 @@ function useAnimationPlayback(input) {
|
|
|
1164
1080
|
if (!animationsEnabled) {
|
|
1165
1081
|
return false;
|
|
1166
1082
|
}
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
clearPresentationTimers();
|
|
1174
|
-
finishAnimationGroupSteps(activeGroup, setPresentationElementStates, completedStates);
|
|
1175
|
-
scheduleAutoAdvanceChain(controller, buildPlaybackContext());
|
|
1176
|
-
return true;
|
|
1177
|
-
}
|
|
1178
|
-
if (!controller || !controller.hasMoreSteps()) {
|
|
1179
|
-
return false;
|
|
1180
|
-
}
|
|
1181
|
-
const group = controller.advance();
|
|
1182
|
-
if (!group) {
|
|
1183
|
-
return false;
|
|
1184
|
-
}
|
|
1185
|
-
const ctx = buildPlaybackContext();
|
|
1186
|
-
playGroup(controller, group, ctx);
|
|
1187
|
-
markAnimationGroupActive(group);
|
|
1188
|
-
scheduleAutoAdvanceChain(controller, ctx);
|
|
1189
|
-
return true;
|
|
1190
|
-
}, [animationsEnabled, buildPlaybackContext, clearPresentationTimers, markAnimationGroupActive]);
|
|
1083
|
+
return advanceMainSequence(
|
|
1084
|
+
controllerRef.current,
|
|
1085
|
+
buildPlaybackContext(),
|
|
1086
|
+
activeAnimationGroupRef.current
|
|
1087
|
+
);
|
|
1088
|
+
}, [animationsEnabled, buildPlaybackContext]);
|
|
1191
1089
|
const handleInteractiveShapeClick = useCallback(
|
|
1192
1090
|
(shapeId) => {
|
|
1193
1091
|
const controller = controllerRef.current;
|
|
@@ -3747,6 +3645,8 @@ function useViewerCoreState(_input) {
|
|
|
3747
3645
|
const [recentColors, setRecentColors] = useState([]);
|
|
3748
3646
|
const [theme, setTheme] = useState();
|
|
3749
3647
|
const [tableStyleMap, setTableStyleMap] = useState();
|
|
3648
|
+
const [tableStylesDefaultId, setTableStylesDefaultId] = useState();
|
|
3649
|
+
const [tableStylesToDelete, setTableStylesToDelete] = useState([]);
|
|
3750
3650
|
const [themeOptions, setThemeOptions] = useState([]);
|
|
3751
3651
|
const [customShows, setCustomShows] = useState([]);
|
|
3752
3652
|
const [activeCustomShowId, setActiveCustomShowId] = useState(null);
|
|
@@ -3846,6 +3746,10 @@ function useViewerCoreState(_input) {
|
|
|
3846
3746
|
setTheme,
|
|
3847
3747
|
tableStyleMap,
|
|
3848
3748
|
setTableStyleMap,
|
|
3749
|
+
tableStylesDefaultId,
|
|
3750
|
+
setTableStylesDefaultId,
|
|
3751
|
+
tableStylesToDelete,
|
|
3752
|
+
setTableStylesToDelete,
|
|
3849
3753
|
themeOptions,
|
|
3850
3754
|
setThemeOptions,
|
|
3851
3755
|
customShows,
|
|
@@ -4030,6 +3934,8 @@ function useLoadContent({
|
|
|
4030
3934
|
setRecentColors,
|
|
4031
3935
|
setTheme,
|
|
4032
3936
|
setTableStyleMap,
|
|
3937
|
+
setTableStylesDefaultId,
|
|
3938
|
+
setTableStylesToDelete,
|
|
4033
3939
|
setThemeOptions,
|
|
4034
3940
|
setCustomShows,
|
|
4035
3941
|
setActiveCustomShowId,
|
|
@@ -4164,6 +4070,8 @@ function useLoadContent({
|
|
|
4164
4070
|
setRecentColors(seedRecentColors({ mruColors: parsed.mruColors }));
|
|
4165
4071
|
setTheme(parsed.theme);
|
|
4166
4072
|
setTableStyleMap(nextTableStyleMap);
|
|
4073
|
+
setTableStylesDefaultId(parsed.tableStylesDefaultId);
|
|
4074
|
+
setTableStylesToDelete([]);
|
|
4167
4075
|
setThemeOptions(parsed.themeOptions ?? []);
|
|
4168
4076
|
setCustomShows(parsed.customShows ?? []);
|
|
4169
4077
|
setActiveCustomShowId(
|
|
@@ -7008,7 +6916,7 @@ function useExportSaveAs(input) {
|
|
|
7008
6916
|
slides,
|
|
7009
6917
|
templateElementsBySlideId,
|
|
7010
6918
|
filePath,
|
|
7011
|
-
|
|
6919
|
+
serializeSlides,
|
|
7012
6920
|
headerFooter,
|
|
7013
6921
|
presentationProperties,
|
|
7014
6922
|
customShows,
|
|
@@ -7017,24 +6925,19 @@ function useExportSaveAs(input) {
|
|
|
7017
6925
|
appProperties,
|
|
7018
6926
|
customProperties,
|
|
7019
6927
|
tagCollections,
|
|
7020
|
-
slideMasters,
|
|
7021
6928
|
notesMaster,
|
|
7022
6929
|
handoutMaster,
|
|
7023
|
-
guides,
|
|
7024
|
-
activeSlideIndexForGuides,
|
|
7025
6930
|
theme,
|
|
7026
6931
|
canvasSize,
|
|
7027
|
-
slideSizeEmu
|
|
7028
|
-
password
|
|
6932
|
+
slideSizeEmu
|
|
7029
6933
|
} = input;
|
|
7030
6934
|
const handleSaveAsFormat = async (format) => {
|
|
7031
|
-
const handler = handlerRef.current;
|
|
7032
|
-
if (!handler) {
|
|
7033
|
-
return;
|
|
7034
|
-
}
|
|
7035
6935
|
const downloadName = savedPresentationFileName(filePath, format);
|
|
7036
6936
|
try {
|
|
7037
|
-
const data = await
|
|
6937
|
+
const data = await serializeSlides(format);
|
|
6938
|
+
if (!data) {
|
|
6939
|
+
return;
|
|
6940
|
+
}
|
|
7038
6941
|
const blob = new Blob([data], {
|
|
7039
6942
|
type: "application/vnd.openxmlformats-officedocument.presentationml.presentation"
|
|
7040
6943
|
});
|
|
@@ -7043,41 +6946,6 @@ function useExportSaveAs(input) {
|
|
|
7043
6946
|
console.error(`[PowerPointViewer] Save as .${format} failed:`, err);
|
|
7044
6947
|
}
|
|
7045
6948
|
};
|
|
7046
|
-
const buildSaveAsData = async (handler, format) => {
|
|
7047
|
-
const slidesWithGuides = slides.map((slide, idx) => {
|
|
7048
|
-
if (idx !== activeSlideIndexForGuides) {
|
|
7049
|
-
return slide;
|
|
7050
|
-
}
|
|
7051
|
-
const pptxGuides = guides.map((g) => ({
|
|
7052
|
-
id: g.id,
|
|
7053
|
-
orientation: g.axis === "h" ? "horz" : "vert",
|
|
7054
|
-
positionEmu: guidePxToEmu(g.position)
|
|
7055
|
-
}));
|
|
7056
|
-
return {
|
|
7057
|
-
...slide,
|
|
7058
|
-
guides: pptxGuides.length > 0 ? pptxGuides : void 0
|
|
7059
|
-
};
|
|
7060
|
-
});
|
|
7061
|
-
const slidesToSave = buildSaveSlides(slidesWithGuides, templateElementsBySlideId);
|
|
7062
|
-
const saveOptions = {
|
|
7063
|
-
// Save As shares Save's slide-size decision; leaving it out here is how
|
|
7064
|
-
// a preset picked in the inspector reached one save path and not the other.
|
|
7065
|
-
slideSize: resolveSlideSizeSelection({ current: slideSizeEmu, canvas: canvasSize }).size,
|
|
7066
|
-
headerFooter,
|
|
7067
|
-
presentationProperties,
|
|
7068
|
-
customShows: customShows.length > 0 ? customShows : void 0,
|
|
7069
|
-
sections: sections.length > 0 ? sections : void 0,
|
|
7070
|
-
coreProperties: coreProperties ?? void 0,
|
|
7071
|
-
appProperties: appProperties ?? void 0,
|
|
7072
|
-
customProperties: customProperties.length > 0 ? customProperties : void 0,
|
|
7073
|
-
tags: tagCollections.length > 0 ? tagCollections : void 0,
|
|
7074
|
-
slideMasters,
|
|
7075
|
-
notesMaster,
|
|
7076
|
-
handoutMaster,
|
|
7077
|
-
outputFormat: format
|
|
7078
|
-
};
|
|
7079
|
-
return saveDeckWithPassword(handler, slidesToSave, saveOptions, password);
|
|
7080
|
-
};
|
|
7081
6949
|
const handleExportJson = () => {
|
|
7082
6950
|
const sourceName = filePath ? filePath.replace(/\\/gu, "/").split("/").pop() : void 0;
|
|
7083
6951
|
const slideSize = resolveSlideSizeSelection({ current: slideSizeEmu, canvas: canvasSize }).size;
|
|
@@ -7093,8 +6961,8 @@ function useExportSaveAs(input) {
|
|
|
7093
6961
|
presentationProperties,
|
|
7094
6962
|
customShows: customShows.length > 0 ? customShows : void 0,
|
|
7095
6963
|
sections: sections.length > 0 ? sections : void 0,
|
|
7096
|
-
coreProperties
|
|
7097
|
-
appProperties
|
|
6964
|
+
coreProperties,
|
|
6965
|
+
appProperties,
|
|
7098
6966
|
customProperties: customProperties.length > 0 ? customProperties : void 0,
|
|
7099
6967
|
tags: tagCollections.length > 0 ? tagCollections : void 0,
|
|
7100
6968
|
notesMaster,
|
|
@@ -7459,7 +7327,7 @@ function useExportHandlers(input) {
|
|
|
7459
7327
|
filePath,
|
|
7460
7328
|
canvasStageRef,
|
|
7461
7329
|
setActiveSlideIndex,
|
|
7462
|
-
|
|
7330
|
+
serializeSlides,
|
|
7463
7331
|
headerFooter,
|
|
7464
7332
|
presentationProperties,
|
|
7465
7333
|
customShows,
|
|
@@ -7468,15 +7336,11 @@ function useExportHandlers(input) {
|
|
|
7468
7336
|
appProperties,
|
|
7469
7337
|
customProperties,
|
|
7470
7338
|
tagCollections,
|
|
7471
|
-
slideMasters,
|
|
7472
7339
|
notesMaster,
|
|
7473
7340
|
handoutMaster,
|
|
7474
|
-
guides,
|
|
7475
|
-
activeSlideIndexForGuides,
|
|
7476
7341
|
theme,
|
|
7477
7342
|
canvasSize,
|
|
7478
7343
|
slideSizeEmu,
|
|
7479
|
-
password,
|
|
7480
7344
|
imageExportScale
|
|
7481
7345
|
} = input;
|
|
7482
7346
|
const [exportModalOpen, setExportModalOpen] = useState(false);
|
|
@@ -7494,7 +7358,7 @@ function useExportHandlers(input) {
|
|
|
7494
7358
|
slides,
|
|
7495
7359
|
templateElementsBySlideId,
|
|
7496
7360
|
filePath,
|
|
7497
|
-
|
|
7361
|
+
serializeSlides,
|
|
7498
7362
|
headerFooter,
|
|
7499
7363
|
presentationProperties,
|
|
7500
7364
|
customShows,
|
|
@@ -7503,15 +7367,11 @@ function useExportHandlers(input) {
|
|
|
7503
7367
|
appProperties,
|
|
7504
7368
|
customProperties,
|
|
7505
7369
|
tagCollections,
|
|
7506
|
-
slideMasters,
|
|
7507
7370
|
notesMaster,
|
|
7508
7371
|
handoutMaster,
|
|
7509
|
-
guides,
|
|
7510
|
-
activeSlideIndexForGuides,
|
|
7511
7372
|
theme,
|
|
7512
7373
|
canvasSize,
|
|
7513
|
-
slideSizeEmu
|
|
7514
|
-
password
|
|
7374
|
+
slideSizeEmu
|
|
7515
7375
|
});
|
|
7516
7376
|
const handleExportPng = useCallback(async () => {
|
|
7517
7377
|
const stageEl = canvasStageRef.current;
|
|
@@ -8750,6 +8610,9 @@ function useSerialize(input) {
|
|
|
8750
8610
|
headerFooter,
|
|
8751
8611
|
presentationProperties,
|
|
8752
8612
|
viewProperties,
|
|
8613
|
+
tableStyleMap,
|
|
8614
|
+
tableStylesDefaultId,
|
|
8615
|
+
tableStylesToDelete = [],
|
|
8753
8616
|
customShows,
|
|
8754
8617
|
sections,
|
|
8755
8618
|
coreProperties,
|
|
@@ -8766,90 +8629,100 @@ function useSerialize(input) {
|
|
|
8766
8629
|
embedFonts = true,
|
|
8767
8630
|
purpose
|
|
8768
8631
|
} = input;
|
|
8769
|
-
return useCallback(
|
|
8770
|
-
|
|
8771
|
-
|
|
8772
|
-
|
|
8773
|
-
|
|
8774
|
-
|
|
8775
|
-
|
|
8776
|
-
|
|
8777
|
-
|
|
8778
|
-
|
|
8779
|
-
|
|
8780
|
-
|
|
8781
|
-
|
|
8632
|
+
return useCallback(
|
|
8633
|
+
async (format) => {
|
|
8634
|
+
const handler = handlerRef.current;
|
|
8635
|
+
if (!handler) {
|
|
8636
|
+
return null;
|
|
8637
|
+
}
|
|
8638
|
+
const pendingEditId = inlineEditingElementIdRef.current;
|
|
8639
|
+
const pendingEditText = inlineEditingTextRef.current;
|
|
8640
|
+
const slidesWithGuides = slides.map((slide, idx) => {
|
|
8641
|
+
let processedSlide = slide;
|
|
8642
|
+
if (pendingEditId) {
|
|
8643
|
+
const updatedElements = slide.elements.map((el) => {
|
|
8644
|
+
if (el.id !== pendingEditId || !hasTextProperties(el)) {
|
|
8645
|
+
return el;
|
|
8646
|
+
}
|
|
8647
|
+
return {
|
|
8648
|
+
...el,
|
|
8649
|
+
text: pendingEditText,
|
|
8650
|
+
textSegments: remapTextToSegments(pendingEditText, el.textSegments, el.textStyle)
|
|
8651
|
+
};
|
|
8652
|
+
});
|
|
8653
|
+
if (updatedElements.some((el, i) => el !== slide.elements[i])) {
|
|
8654
|
+
processedSlide = { ...slide, elements: updatedElements };
|
|
8782
8655
|
}
|
|
8783
|
-
return {
|
|
8784
|
-
...el,
|
|
8785
|
-
text: pendingEditText,
|
|
8786
|
-
textSegments: remapTextToSegments(pendingEditText, el.textSegments, el.textStyle)
|
|
8787
|
-
};
|
|
8788
|
-
});
|
|
8789
|
-
if (updatedElements.some((el, i) => el !== slide.elements[i])) {
|
|
8790
|
-
processedSlide = { ...slide, elements: updatedElements };
|
|
8791
8656
|
}
|
|
8792
|
-
|
|
8793
|
-
|
|
8794
|
-
|
|
8795
|
-
|
|
8796
|
-
|
|
8797
|
-
|
|
8798
|
-
|
|
8799
|
-
|
|
8800
|
-
|
|
8801
|
-
|
|
8802
|
-
|
|
8803
|
-
|
|
8804
|
-
};
|
|
8805
|
-
|
|
8806
|
-
|
|
8807
|
-
|
|
8808
|
-
|
|
8809
|
-
|
|
8810
|
-
|
|
8811
|
-
|
|
8657
|
+
if (idx !== activeSlideIndex) {
|
|
8658
|
+
return processedSlide;
|
|
8659
|
+
}
|
|
8660
|
+
const pptxGuides = guides.map((g) => ({
|
|
8661
|
+
id: g.id,
|
|
8662
|
+
orientation: g.axis === "h" ? "horz" : "vert",
|
|
8663
|
+
positionEmu: guidePxToEmu(g.position)
|
|
8664
|
+
}));
|
|
8665
|
+
return {
|
|
8666
|
+
...processedSlide,
|
|
8667
|
+
guides: pptxGuides.length > 0 ? pptxGuides : void 0
|
|
8668
|
+
};
|
|
8669
|
+
});
|
|
8670
|
+
const slidesToSave = buildSaveSlides(slidesWithGuides, templateElementsBySlideId);
|
|
8671
|
+
const saveOptions = buildDeckSaveOptions({
|
|
8672
|
+
// Without this the Slide Size card edited a viewer-only pixel value and
|
|
8673
|
+
// the saved `p:sldSz` never moved: passing `slideSize` is the only way a
|
|
8674
|
+
// slide-size edit reaches the file.
|
|
8675
|
+
slideSize: resolveSlideSizeSelection({ current: slideSizeEmu, canvas: canvasSize }).size,
|
|
8676
|
+
headerFooter,
|
|
8677
|
+
presentationProperties,
|
|
8678
|
+
viewProperties,
|
|
8679
|
+
customShows,
|
|
8680
|
+
sections,
|
|
8681
|
+
coreProperties,
|
|
8682
|
+
appProperties,
|
|
8683
|
+
customProperties,
|
|
8684
|
+
tagCollections,
|
|
8685
|
+
slideMasters,
|
|
8686
|
+
notesMaster,
|
|
8687
|
+
handoutMaster,
|
|
8688
|
+
tableStyleMap,
|
|
8689
|
+
tableStylesDefaultId,
|
|
8690
|
+
tableStylesToDelete,
|
|
8691
|
+
embedFonts,
|
|
8692
|
+
outputFormat: format
|
|
8693
|
+
});
|
|
8694
|
+
return saveDeckWithPassword(handler, slidesToSave, saveOptions, { password, purpose });
|
|
8695
|
+
},
|
|
8696
|
+
[
|
|
8697
|
+
slides,
|
|
8698
|
+
templateElementsBySlideId,
|
|
8699
|
+
canvasSize,
|
|
8700
|
+
slideSizeEmu,
|
|
8812
8701
|
headerFooter,
|
|
8813
8702
|
presentationProperties,
|
|
8814
8703
|
viewProperties,
|
|
8815
|
-
|
|
8816
|
-
|
|
8704
|
+
tableStyleMap,
|
|
8705
|
+
tableStylesDefaultId,
|
|
8706
|
+
tableStylesToDelete,
|
|
8707
|
+
customShows,
|
|
8708
|
+
sections,
|
|
8817
8709
|
coreProperties,
|
|
8818
8710
|
appProperties,
|
|
8819
|
-
customProperties
|
|
8820
|
-
|
|
8711
|
+
customProperties,
|
|
8712
|
+
tagCollections,
|
|
8821
8713
|
slideMasters,
|
|
8822
8714
|
notesMaster,
|
|
8823
8715
|
handoutMaster,
|
|
8824
|
-
|
|
8825
|
-
|
|
8826
|
-
|
|
8827
|
-
|
|
8828
|
-
|
|
8829
|
-
|
|
8830
|
-
|
|
8831
|
-
|
|
8832
|
-
|
|
8833
|
-
|
|
8834
|
-
viewProperties,
|
|
8835
|
-
customShows,
|
|
8836
|
-
sections,
|
|
8837
|
-
coreProperties,
|
|
8838
|
-
appProperties,
|
|
8839
|
-
customProperties,
|
|
8840
|
-
tagCollections,
|
|
8841
|
-
slideMasters,
|
|
8842
|
-
notesMaster,
|
|
8843
|
-
handoutMaster,
|
|
8844
|
-
guides,
|
|
8845
|
-
activeSlideIndex,
|
|
8846
|
-
handlerRef,
|
|
8847
|
-
inlineEditingElementIdRef,
|
|
8848
|
-
inlineEditingTextRef,
|
|
8849
|
-
password,
|
|
8850
|
-
embedFonts,
|
|
8851
|
-
purpose
|
|
8852
|
-
]);
|
|
8716
|
+
guides,
|
|
8717
|
+
activeSlideIndex,
|
|
8718
|
+
handlerRef,
|
|
8719
|
+
inlineEditingElementIdRef,
|
|
8720
|
+
inlineEditingTextRef,
|
|
8721
|
+
password,
|
|
8722
|
+
embedFonts,
|
|
8723
|
+
purpose
|
|
8724
|
+
]
|
|
8725
|
+
);
|
|
8853
8726
|
}
|
|
8854
8727
|
function useRecoveryDetection(input) {
|
|
8855
8728
|
const { filePath, loading, error, slideCount, autosaveAllowed = true } = input;
|
|
@@ -9296,10 +9169,10 @@ function useIOHandlers(input) {
|
|
|
9296
9169
|
ops,
|
|
9297
9170
|
zoom,
|
|
9298
9171
|
handlerRef,
|
|
9172
|
+
serializeSlides,
|
|
9299
9173
|
serializeForRecovery,
|
|
9300
9174
|
setContent,
|
|
9301
9175
|
onContentChange,
|
|
9302
|
-
password,
|
|
9303
9176
|
imageExportScale
|
|
9304
9177
|
} = input;
|
|
9305
9178
|
const exportHandlers = useExportHandlers({
|
|
@@ -9310,24 +9183,20 @@ function useIOHandlers(input) {
|
|
|
9310
9183
|
filePath,
|
|
9311
9184
|
canvasStageRef: zoom.canvasStageRef,
|
|
9312
9185
|
setActiveSlideIndex: state.setActiveSlideIndex,
|
|
9313
|
-
|
|
9186
|
+
serializeSlides,
|
|
9314
9187
|
headerFooter: state.headerFooter,
|
|
9315
9188
|
presentationProperties: state.presentationProperties,
|
|
9316
9189
|
customShows: state.customShows,
|
|
9317
9190
|
sections: state.sections,
|
|
9318
|
-
coreProperties: state.coreProperties
|
|
9319
|
-
appProperties: state.appProperties
|
|
9191
|
+
coreProperties: state.coreProperties,
|
|
9192
|
+
appProperties: state.appProperties,
|
|
9320
9193
|
customProperties: state.customProperties,
|
|
9321
9194
|
tagCollections: state.tagCollections,
|
|
9322
|
-
slideMasters: state.slideMasters,
|
|
9323
9195
|
notesMaster: state.notesMaster,
|
|
9324
9196
|
handoutMaster: state.handoutMaster,
|
|
9325
|
-
guides: state.guides,
|
|
9326
|
-
activeSlideIndexForGuides: state.activeSlideIndex,
|
|
9327
9197
|
theme: state.theme,
|
|
9328
9198
|
canvasSize,
|
|
9329
9199
|
slideSizeEmu: state.slideSizeEmu,
|
|
9330
|
-
password,
|
|
9331
9200
|
imageExportScale
|
|
9332
9201
|
});
|
|
9333
9202
|
const printHandlers = usePrintHandlers({
|
|
@@ -9526,6 +9395,8 @@ function useContentLifecycle(input) {
|
|
|
9526
9395
|
setRecentColors: state.setRecentColors,
|
|
9527
9396
|
setTheme: state.setTheme,
|
|
9528
9397
|
setTableStyleMap: state.setTableStyleMap,
|
|
9398
|
+
setTableStylesDefaultId: state.setTableStylesDefaultId,
|
|
9399
|
+
setTableStylesToDelete: state.setTableStylesToDelete,
|
|
9529
9400
|
setThemeOptions: state.setThemeOptions,
|
|
9530
9401
|
setCustomShows: state.setCustomShows,
|
|
9531
9402
|
setActiveCustomShowId: state.setActiveCustomShowId,
|
|
@@ -9568,6 +9439,9 @@ function useContentLifecycle(input) {
|
|
|
9568
9439
|
headerFooter: state.headerFooter,
|
|
9569
9440
|
presentationProperties: state.presentationProperties,
|
|
9570
9441
|
viewProperties: state.viewProperties,
|
|
9442
|
+
tableStyleMap: state.tableStyleMap,
|
|
9443
|
+
tableStylesDefaultId: state.tableStylesDefaultId,
|
|
9444
|
+
tableStylesToDelete: state.tableStylesToDelete,
|
|
9571
9445
|
customShows: state.customShows,
|
|
9572
9446
|
sections: state.sections,
|
|
9573
9447
|
coreProperties: state.coreProperties,
|
|
@@ -9901,10 +9775,10 @@ function useViewerIntegration(input) {
|
|
|
9901
9775
|
ops: editorOps.ops,
|
|
9902
9776
|
zoom,
|
|
9903
9777
|
handlerRef,
|
|
9778
|
+
serializeSlides,
|
|
9904
9779
|
serializeForRecovery,
|
|
9905
9780
|
setContent,
|
|
9906
9781
|
onContentChange,
|
|
9907
|
-
password: dialogs.presentationPassword ?? void 0,
|
|
9908
9782
|
imageExportScale
|
|
9909
9783
|
});
|
|
9910
9784
|
const {
|
|
@@ -10255,6 +10129,7 @@ function useYjsDocumentSync({
|
|
|
10255
10129
|
isSynced = true,
|
|
10256
10130
|
config,
|
|
10257
10131
|
getSourceBytes,
|
|
10132
|
+
getSaveOptions,
|
|
10258
10133
|
loadVersion = 0,
|
|
10259
10134
|
loadOrigin = "user"
|
|
10260
10135
|
}) {
|
|
@@ -10301,12 +10176,12 @@ function useYjsDocumentSync({
|
|
|
10301
10176
|
doc
|
|
10302
10177
|
);
|
|
10303
10178
|
const slidesToSave = buildSaveSlides(currentSlides, templateElementsBySlideId);
|
|
10304
|
-
const bytes = await handler.save(slidesToSave);
|
|
10179
|
+
const bytes = await handler.save(slidesToSave, getSaveOptions?.());
|
|
10305
10180
|
config.onWriteBack(bytes);
|
|
10306
10181
|
} catch {
|
|
10307
10182
|
}
|
|
10308
10183
|
}, debounceMs);
|
|
10309
|
-
}, [doc, config, getSourceBytes, templateElementsBySlideId]);
|
|
10184
|
+
}, [doc, config, getSourceBytes, getSaveOptions, templateElementsBySlideId]);
|
|
10310
10185
|
useEffect(() => {
|
|
10311
10186
|
if (loadVersion === lastLoadVersionRef.current) {
|
|
10312
10187
|
return;
|
|
Binary file
|
|
Binary file
|
package/dist/i18n.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkL3ZIBQEB_js = require('./chunk-L3ZIBQEB.js');
|
|
4
4
|
require('./chunk-4VNS5WPM.js');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
Object.defineProperty(exports, "LOCALE_CATALOG", {
|
|
9
9
|
enumerable: true,
|
|
10
|
-
get: function () { return
|
|
10
|
+
get: function () { return chunkL3ZIBQEB_js.LOCALE_CATALOG; }
|
|
11
11
|
});
|
|
12
12
|
Object.defineProperty(exports, "keyToLabel", {
|
|
13
13
|
enumerable: true,
|
|
14
|
-
get: function () { return
|
|
14
|
+
get: function () { return chunkL3ZIBQEB_js.keyToLabel; }
|
|
15
15
|
});
|
|
16
16
|
Object.defineProperty(exports, "translationsEn", {
|
|
17
17
|
enumerable: true,
|
|
18
|
-
get: function () { return
|
|
18
|
+
get: function () { return chunkL3ZIBQEB_js.translationsEn; }
|
|
19
19
|
});
|
package/dist/i18n.js.br
CHANGED
|
Binary file
|
package/dist/i18n.js.gz
CHANGED
|
Binary file
|
package/dist/i18n.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { LOCALE_CATALOG, keyToLabel, translationsEn } from './chunk-
|
|
1
|
+
export { LOCALE_CATALOG, keyToLabel, translationsEn } from './chunk-FRZIBZTE.mjs';
|
|
2
2
|
import './chunk-XGB3TDIC.mjs';
|