pptx-react-viewer 2.3.0 → 2.5.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 +17 -0
- package/dist/{AiChatPanel-PXZYHJUB.mjs → AiChatPanel-EMF3UYCE.mjs} +4 -5
- package/dist/AiChatPanel-EMF3UYCE.mjs.br +0 -0
- package/dist/AiChatPanel-EMF3UYCE.mjs.gz +0 -0
- package/dist/{AiChatPanel-HC3CE3TL.js → AiChatPanel-OHSLJNYG.js} +23 -24
- package/dist/AiChatPanel-OHSLJNYG.js.br +0 -0
- package/dist/AiChatPanel-OHSLJNYG.js.gz +0 -0
- package/dist/{Model3DScene-37QZRHV5.js → Model3DScene-ULHIJPMU.js} +2 -3
- package/dist/Model3DScene-ULHIJPMU.js.br +0 -0
- package/dist/Model3DScene-ULHIJPMU.js.gz +0 -0
- package/dist/{Model3DScene-ZG4HTMPX.mjs → Model3DScene-X6QJTWHV.mjs} +1 -2
- package/dist/Model3DScene-X6QJTWHV.mjs.br +0 -0
- package/dist/Model3DScene-X6QJTWHV.mjs.gz +0 -0
- package/dist/{PowerPointViewer-gmU5rc7K.d.ts → PowerPointViewer-Cjn1RgSz.d.ts} +2 -2
- package/dist/{PowerPointViewer-gmU5rc7K.d.ts.map → PowerPointViewer-Cjn1RgSz.d.ts.map} +1 -1
- package/dist/{SurfaceChart3DScene-QIREQ66D.js → SurfaceChart3DScene-K7Q5NYZ4.js} +2 -3
- package/dist/SurfaceChart3DScene-K7Q5NYZ4.js.br +0 -0
- package/dist/SurfaceChart3DScene-K7Q5NYZ4.js.gz +0 -0
- package/dist/{SurfaceChart3DScene-Z7R6DZXN.mjs → SurfaceChart3DScene-PRCKQJQQ.mjs} +1 -2
- package/dist/SurfaceChart3DScene-PRCKQJQQ.mjs.br +0 -0
- package/dist/SurfaceChart3DScene-PRCKQJQQ.mjs.gz +0 -0
- package/dist/audience-content-store-BMlth_3U.d.ts +386 -0
- package/dist/audience-content-store-BMlth_3U.d.ts.map +1 -0
- package/dist/{chunk-YIFO3WQO.js → chunk-25VSL2BB.js} +1 -0
- package/dist/chunk-25VSL2BB.js.br +0 -0
- package/dist/chunk-25VSL2BB.js.gz +0 -0
- package/dist/{chunk-L7JNCVTF.js → chunk-7Q7AEPO7.js} +384 -332
- package/dist/chunk-7Q7AEPO7.js.br +0 -0
- package/dist/chunk-7Q7AEPO7.js.gz +0 -0
- package/dist/{chunk-ZLSVW5GP.js → chunk-I4AFCPUC.js} +876 -882
- package/dist/chunk-I4AFCPUC.js.br +0 -0
- package/dist/chunk-I4AFCPUC.js.gz +0 -0
- package/dist/{chunk-J5A22DZ7.mjs → chunk-JSFUU2BB.mjs} +36 -42
- package/dist/chunk-JSFUU2BB.mjs.br +0 -0
- package/dist/chunk-JSFUU2BB.mjs.gz +0 -0
- package/dist/{chunk-I5LEMC5C.mjs → chunk-LIQGO45T.mjs} +74 -22
- package/dist/chunk-LIQGO45T.mjs.br +0 -0
- package/dist/chunk-LIQGO45T.mjs.gz +0 -0
- package/dist/{chunk-JFNMD6TM.mjs → chunk-LTEDT475.js} +48579 -31703
- package/dist/chunk-LTEDT475.js.br +0 -0
- package/dist/chunk-LTEDT475.js.gz +0 -0
- package/dist/{chunk-EUIFPDXZ.js → chunk-MJAEB43A.js} +3 -3
- package/dist/chunk-MJAEB43A.js.br +0 -0
- package/dist/chunk-MJAEB43A.js.gz +0 -0
- package/dist/{chunk-P7UVBRFO.js → chunk-NVH3RIN7.js} +282 -291
- package/dist/chunk-NVH3RIN7.js.br +0 -0
- package/dist/chunk-NVH3RIN7.js.gz +0 -0
- package/dist/{chunk-VOHTAUN4.mjs → chunk-TGVID6BB.mjs} +41 -50
- package/dist/chunk-TGVID6BB.mjs.br +0 -0
- package/dist/chunk-TGVID6BB.mjs.gz +0 -0
- package/dist/{chunk-3TB45PVK.js → chunk-VOV2N3NY.mjs} +48075 -32275
- package/dist/chunk-VOV2N3NY.mjs.br +0 -0
- package/dist/chunk-VOV2N3NY.mjs.gz +0 -0
- package/dist/{chunk-M5YR3QSB.mjs → chunk-WJKMTDXS.mjs} +1 -1
- package/dist/chunk-WJKMTDXS.mjs.br +0 -0
- package/dist/chunk-WJKMTDXS.mjs.gz +0 -0
- package/dist/{chunk-PZTPX3HK.mjs → chunk-Z6HIZWIQ.mjs} +1 -0
- package/dist/chunk-Z6HIZWIQ.mjs.br +0 -0
- package/dist/chunk-Z6HIZWIQ.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 +112 -87
- package/dist/index.js +39 -40
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/dist/index.mjs +6 -7
- package/dist/index.mjs.br +0 -0
- package/dist/index.mjs.gz +0 -0
- package/dist/internals.d.ts +563 -514
- package/dist/internals.d.ts.map +1 -1
- package/dist/internals.js +79 -81
- package/dist/internals.js.br +0 -0
- package/dist/internals.js.gz +0 -0
- package/dist/internals.mjs +4 -6
- 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/{animation-timeline-eb5z0SHW.d.ts → types-DciBT90G.d.ts} +4 -3
- package/dist/types-DciBT90G.d.ts.map +1 -0
- package/dist/{useViewerBuildingBlocks-CjureTRf.d.ts → useViewerBuildingBlocks-DMDZRawe.d.ts} +4 -4
- package/dist/{useViewerBuildingBlocks-CjureTRf.d.ts.map → useViewerBuildingBlocks-DMDZRawe.d.ts.map} +1 -1
- package/dist/viewer/index.d.ts +112 -88
- package/dist/viewer/index.js +22 -24
- package/dist/viewer/index.js.br +0 -0
- package/dist/viewer/index.js.gz +0 -0
- package/dist/viewer/index.mjs +6 -8
- package/dist/viewer/index.mjs.br +0 -0
- package/dist/viewer/index.mjs.gz +0 -0
- package/package.json +4 -4
- package/dist/AiChatPanel-HC3CE3TL.js.br +0 -0
- package/dist/AiChatPanel-HC3CE3TL.js.gz +0 -0
- package/dist/AiChatPanel-PXZYHJUB.mjs.br +0 -0
- package/dist/AiChatPanel-PXZYHJUB.mjs.gz +0 -0
- package/dist/Model3DScene-37QZRHV5.js.br +0 -0
- package/dist/Model3DScene-37QZRHV5.js.gz +0 -0
- package/dist/Model3DScene-ZG4HTMPX.mjs.br +0 -0
- package/dist/Model3DScene-ZG4HTMPX.mjs.gz +0 -0
- package/dist/SurfaceChart3DScene-QIREQ66D.js.br +0 -0
- package/dist/SurfaceChart3DScene-QIREQ66D.js.gz +0 -0
- package/dist/SurfaceChart3DScene-Z7R6DZXN.mjs.br +0 -0
- package/dist/SurfaceChart3DScene-Z7R6DZXN.mjs.gz +0 -0
- package/dist/animation-timeline-eb5z0SHW.d.ts.map +0 -1
- package/dist/chunk-3TB45PVK.js.br +0 -0
- package/dist/chunk-3TB45PVK.js.gz +0 -0
- package/dist/chunk-4AAFZFGH.mjs +0 -27633
- package/dist/chunk-4AAFZFGH.mjs.br +0 -0
- package/dist/chunk-4AAFZFGH.mjs.gz +0 -0
- package/dist/chunk-EUIFPDXZ.js.br +0 -0
- package/dist/chunk-EUIFPDXZ.js.gz +0 -0
- package/dist/chunk-I5LEMC5C.mjs.br +0 -0
- package/dist/chunk-I5LEMC5C.mjs.gz +0 -0
- package/dist/chunk-IKBO6CZC.js +0 -2
- package/dist/chunk-IKBO6CZC.js.br +0 -3
- package/dist/chunk-IKBO6CZC.js.gz +0 -0
- package/dist/chunk-J5A22DZ7.mjs.br +0 -0
- package/dist/chunk-J5A22DZ7.mjs.gz +0 -0
- package/dist/chunk-JFNMD6TM.mjs.br +0 -0
- package/dist/chunk-JFNMD6TM.mjs.gz +0 -0
- package/dist/chunk-KDW3LLG5.js +0 -28067
- package/dist/chunk-KDW3LLG5.js.br +0 -0
- package/dist/chunk-KDW3LLG5.js.gz +0 -0
- package/dist/chunk-L7JNCVTF.js.br +0 -0
- package/dist/chunk-L7JNCVTF.js.gz +0 -0
- package/dist/chunk-M5YR3QSB.mjs.br +0 -0
- package/dist/chunk-M5YR3QSB.mjs.gz +0 -0
- package/dist/chunk-P7UVBRFO.js.br +0 -0
- package/dist/chunk-P7UVBRFO.js.gz +0 -0
- package/dist/chunk-PZTPX3HK.mjs.br +0 -0
- package/dist/chunk-PZTPX3HK.mjs.gz +0 -0
- package/dist/chunk-T5U6P2JH.mjs +0 -1
- package/dist/chunk-T5U6P2JH.mjs.br +0 -0
- package/dist/chunk-T5U6P2JH.mjs.gz +0 -0
- package/dist/chunk-VOHTAUN4.mjs.br +0 -0
- package/dist/chunk-VOHTAUN4.mjs.gz +0 -0
- package/dist/chunk-YIFO3WQO.js.br +0 -0
- package/dist/chunk-YIFO3WQO.js.gz +0 -0
- package/dist/chunk-ZLSVW5GP.js.br +0 -0
- package/dist/chunk-ZLSVW5GP.js.gz +0 -0
- package/dist/dist-FTEVZZPM.js +0 -2283
- package/dist/dist-FTEVZZPM.js.br +0 -0
- package/dist/dist-FTEVZZPM.js.gz +0 -0
- package/dist/dist-L7GZVBMG.mjs +0 -2
- package/dist/dist-L7GZVBMG.mjs.br +0 -0
- package/dist/dist-L7GZVBMG.mjs.gz +0 -0
- package/dist/index-CDCSXtK3.d.ts +0 -685
- package/dist/index-CDCSXtK3.d.ts.map +0 -1
|
Binary file
|
|
Binary file
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { computeFocusTargets, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, toRenderableParts } from './chunk-
|
|
2
|
-
import { useReducedMotion, useViewerState, useViewerOptions, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useYjsDocumentSync, useCollaborationLivePatch, useFollowMode, useBroadcastFollower, scopeLayoutOptionsToActiveSlide, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, useCollaborativeState, useVirtualizedSlides, useSwipeNavigation, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, downloadBlob } from './chunk-
|
|
3
|
-
import { SHAPE_PRESETS, DEFAULT_STROKE_COLOR, getConnectorPathGeometry, buildLineShadowCss, buildLineGlowFilter, renderConnectorMarker, MIN_ELEMENT_SIZE, getShapeVisualStyle, getTextStyleForElement, DEFAULT_TEXT_COLOR, renderVectorShape, isConnectorOrLineElement, build3DExtrusionData, getImageRenderStyle, cn, ANIMATION_PRESET_OPTIONS, resolvePalette, resolveStyle, layoutToCategory, wrapChrome, DEFAULT_FILL_COLOR, hasDagDuotoneEffect, renderDagDuotoneSvgFilter, getTextLayoutStyle, renderTableElement, renderMediaElement, shouldRenderFallbackLabel, getCropShapeClipPath, SLIDE_TRANSITION_OPTIONS, SLIDE_NAV_THUMBNAIL_WIDTH, styleShadow, styleStroke, colour, fitFontSize, smartArtNodeGroupProps, chevronPoints, SmartArtNodeText, truncate, renderStepDownProcess, renderAlternatingFlow, renderDescendingProcess, renderPictureAccentList, renderVerticalBlockList, renderGroupedList, renderPyramidList, renderHorizontalPictureList, renderAccentProcess, renderVerticalChevronList, isImageTiled, getImageTilingStyle, getDuotoneColors, getTextWarpStyle, renderTextSegments, buildReactChartViewModel, renderChartElement, buildTextBody3DSceneStyle, TOOLBAR_SECTIONS, SHORTCUT_REFERENCE_ITEMS as SHORTCUT_REFERENCE_ITEMS$1, buildTree, treeWidth, treeDepth, nodeOpacity, gearPath, resolveSmartArtDataPalette, DEFAULT_TEXT_FONT_SIZE, DEFAULT_FONT_FAMILY, HYPERLINK_COLOR, GRID_SIZE, startPreviewAnimation, stopPreviewAnimation } from './chunk-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { hasShapeProperties, hasTextProperties, SWITCHABLE_LAYOUT_TYPES, isInkElement, isImageLikeElement, getLinkedTextBoxSegments, themeColorSchemesEqual, setSmartArtNodeStyle, updateSmartArtNodeText, getSubstituteFontFamily, THEME_COLOR_SCHEME_KEYS, chartDataChangeType, chartDataUpdatePoint, chartDataAddCategory, chartDataRemoveCategory, chartDataAddSeries, chartDataRemoveSeries, setChartAxisLogScale, setChartAxisTitleStyle, setChartAxisGridlineStyle, setChartSeriesMarker, setChartSeriesChartType, setChartDataPointFill, setChartDataPointExplosion, setChartDataPointMarker, setChartDataPointLabel, getOleObjectTypeLabel, pptxActionToElementAction, applyThemeOverrideToSlide, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, addSmartArtNodeAsChild, removeSmartArtNode, elementActionToPptxAction, switchSmartArtLayout, addSmartArtNode, demoteSmartArtNode, promoteSmartArtNode, reorderSmartArtNode } from './chunk-JFNMD6TM.mjs';
|
|
1
|
+
import { computeFocusTargets, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, toRenderableParts } from './chunk-WJKMTDXS.mjs';
|
|
2
|
+
import { useReducedMotion, useViewerState, useViewerOptions, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useYjsDocumentSync, useCollaborationLivePatch, useFollowMode, useBroadcastFollower, scopeLayoutOptionsToActiveSlide, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, useCollaborativeState, useVirtualizedSlides, useSwipeNavigation, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, downloadBlob } from './chunk-LIQGO45T.mjs';
|
|
3
|
+
import { SHAPE_PRESETS, DEFAULT_STROKE_COLOR, getConnectorPathGeometry, buildLineShadowCss, buildLineGlowFilter, renderConnectorMarker, MIN_ELEMENT_SIZE, getShapeVisualStyle, getTextStyleForElement, DEFAULT_TEXT_COLOR, renderVectorShape, isConnectorOrLineElement, build3DExtrusionData, getImageRenderStyle, cn, ANIMATION_PRESET_OPTIONS, resolvePalette, resolveStyle, layoutToCategory, wrapChrome, DEFAULT_FILL_COLOR, hasDagDuotoneEffect, renderDagDuotoneSvgFilter, getTextLayoutStyle, renderTableElement, renderMediaElement, shouldRenderFallbackLabel, getCropShapeClipPath, SLIDE_TRANSITION_OPTIONS, SLIDE_NAV_THUMBNAIL_WIDTH, styleShadow, styleStroke, colour, fitFontSize, smartArtNodeGroupProps, chevronPoints, SmartArtNodeText, truncate, renderStepDownProcess, renderAlternatingFlow, renderDescendingProcess, renderPictureAccentList, renderVerticalBlockList, renderGroupedList, renderPyramidList, renderHorizontalPictureList, renderAccentProcess, renderVerticalChevronList, isImageTiled, getImageTilingStyle, getDuotoneColors, getTextWarpStyle, renderTextSegments, buildReactChartViewModel, renderChartElement, buildTextBody3DSceneStyle, TOOLBAR_SECTIONS, SHORTCUT_REFERENCE_ITEMS as SHORTCUT_REFERENCE_ITEMS$1, buildTree, treeWidth, treeDepth, nodeOpacity, gearPath, resolveSmartArtDataPalette, DEFAULT_TEXT_FONT_SIZE, DEFAULT_FONT_FAMILY, HYPERLINK_COLOR, GRID_SIZE, startPreviewAnimation, stopPreviewAnimation } from './chunk-TGVID6BB.mjs';
|
|
4
|
+
import { LOCALE_CATALOG, translationsEn } from './chunk-Z6HIZWIQ.mjs';
|
|
5
|
+
import { RULER_THICKNESS, RULER_FONT_SIZE, hasShapeProperties, normalizeHexColor, colorWithOpacity, normalizeStrokeDashType, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, svgLineCap, hasTextProperties, getElementTransform, ACTION_BUTTON_PRESETS, isEditableTextElement, getAriaRole, getAriaLabel, getAriaRoleDescription, getImageEffectsOpacity, getImageEffectsFilter, getElementTransformWithoutRotation, SWITCHABLE_LAYOUT_TYPES, EQUATION_TEMPLATES, convertLatexToOmml, convertOmmlToMathMl, sanitizeMathMl, DEFAULT_VIEWER_OPTIONS, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, viewerOptionsToPreferences, applyPreferenceToOptions, listAutosaveSnapshots, deleteAutosaveSnapshot, revealedSmartArtNodeCount, buildSmartArtA11y, buildCssGradientFromShapeStyle, resolveGroupChildFill, getGroupChildParentFill, getComputedEffectStyle, getSoftEdgeSvgFilter, isInkElement, getElementLabel, buildPreviewElements, themeToCssVars, DEFAULT_INSERT_CHART_TYPE, hasCopyableFormat, createBackstagePresentation, printPropertiesFrameSlides, printPropertiesSlidesPerPage, VIEWER_OPTIONS_TABS, DEFAULT_QUICK_ACCESS_COMMAND_IDS, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, resolveDrawingShapeNodeId, buildSummaryZoomView, getImageColorWashStyle, isImageLikeElement, getPendingSelectionRestore, restoreSegmentSelection, getTextCompensationTransform, applyChartBuildReveal, formatAxisValue, hasPressureVariation, getInkReplayStyles, INK_REPLAY_KEYFRAMES, resolveInkColor, resolveInkWidth, resolveInkOpacity, pressuresToWidths, getContentPartReplayStyles, resolveOleType, getOleTypeColor, getOleTypeLabel, getLinkedTextBoxSegments, shouldUseSvgWarp, getSlideBackgroundStyle, filterCommands, resolveTitleBarStatusKey, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, shouldConfirmExternalHyperlink, safeOpenUrl, isPpactionUrl, parsePpactionUrl, themeColorSchemesEqual, formatVersionTimestamp, formatRelativeTime, scanAvailableFontFamilies, PRESETS, CATEGORIES, convertOmmlToLatex, clampPercent, HANDOUT_OPTIONS, TOOLBAR_TABS, SHORTCUT_REFERENCE_ITEMS, resolveViewerAddinRows, availableQuickAccessCommands, addQuickAccessCommand, removeQuickAccessCommand, moveQuickAccessCommand, activateModalFocus, buildCollaborationShareUrl, mobileElapsedSince, isFirstSlide, isLastSlide, formatMobileElapsed, mobileSlideCounter, presenterPaneAdvancesOnClick, formatElapsed, computeInlineEditorRect, findSmartArtNodeText, setSmartArtNodeStyle, rebuildDrawingShapesIfCleared, shouldCommitSmartArtNodeText, updateSmartArtNodeText, getImageSvgFilters, buildDuotoneCacheKey, getDuotoneCachedResult, applyDuotone, setDuotoneCachedResult, buildCacheKey, DEFAULT_COLOR_CHANGE_TOLERANCE, getCachedResult, applyColorChange, setCachedResult, findChartPartTarget, dragValueForPart, withChartPointValue, dragAnchorViewY, withChartTitle, computeSmartArtLayout, buildSmartArt3DModel, extractPathPoints, generatePressureCircles, isBrowserOpenableMime, formatBytes, getOleBadgeLabel, openUrlInNewTab, getSubstituteFontFamily, getWarpPath, TAB_ROW_ACTION_CLASSES, listBackstageRecentFiles, BACKSTAGE_NAV, INSERT_CHART_TYPES, SLIDE_VIRTUALIZATION_THRESHOLD, getSlideTransitionAnimations, SLIDE_TRANSITION_KEYFRAMES, presentationInkPath, getShapeAdjustmentHandleDescriptor, formatSlideCounter, isUrlSafe, computeHandoutLayout, getPrintableArea, generateNoteLineCount, computeAllNotesPages, getNotesPrintableArea, QUICK_ACCESS_COMMAND_CATALOG, notesSegmentsToSpans, erasePresentationInkAt, movePresenterPointer, appendPresentationInkPoint, NOTES_FONT_SIZE_DEFAULT, formatTime, NOTES_FONT_SIZE_MIN, clampNotesFontSize, NOTES_FONT_SIZE_STEP, NOTES_FONT_SIZE_MAX, groupIntoParagraphs, substituteFieldText, BACKSTAGE_TEMPLATES, formatBackstageDate, formatBackstageSize, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, getConnectionSites, generateTicks, getCommentMarkerPosition, buildThemeColorGrid, THEME_COLOR_SCHEME_KEYS, THEME_COLOR_LABELS, buildSmartArtPresetData, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, TABLE_STYLE_PRESETS, chartDataChangeType, chartDataUpdatePoint, chartDataAddCategory, chartDataRemoveCategory, chartDataAddSeries, chartDataRemoveSeries, setChartAxisLogScale, setChartAxisTitleStyle, setChartAxisGridlineStyle, setChartSeriesMarker, setChartSeriesChartType, setChartDataPointFill, setChartDataPointExplosion, setChartDataPointMarker, setChartDataPointLabel, getOleObjectTypeLabel, pptxActionToElementAction, withFrameSlides, withSlidesPerPage, applyThemeOverrideToSlide, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, formatCommentTimestamp, DIRECTIONAL_PRESETS, computeMergeCellRight, computeMergeCellDown, computeSplitCell, addSmartArtNodeAsChild, removeSmartArtNode, DUOTONE_PRESETS, ARTISTIC_EFFECTS, elementActionToPptxAction, LBL, SEL, FILL_MODE_OPTIONS, SECTION_HEADING, NUM, switchSmartArtLayout, addSmartArtNode, demoteSmartArtNode, promoteSmartArtNode, reorderSmartArtNode, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS } from './chunk-VOV2N3NY.mjs';
|
|
7
6
|
import React32, { createContext, useMemo, useState, useCallback, lazy, forwardRef, useEffect, useRef, useContext, Suspense, useLayoutEffect, useDeferredValue } from 'react';
|
|
8
7
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
9
8
|
import { useTranslation } from 'react-i18next';
|
|
@@ -1336,7 +1335,7 @@ function AccountPage() {
|
|
|
1336
1335
|
return void 0;
|
|
1337
1336
|
});
|
|
1338
1337
|
};
|
|
1339
|
-
const version = "2.
|
|
1338
|
+
const version = "2.4.0" ;
|
|
1340
1339
|
return /* @__PURE__ */ jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
|
|
1341
1340
|
/* @__PURE__ */ jsxs("section", { className: cardClass, children: [
|
|
1342
1341
|
/* @__PURE__ */ jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
|
|
@@ -8340,7 +8339,7 @@ function FailedToLoad() {
|
|
|
8340
8339
|
var LazyModel3DScene = React32.lazy(
|
|
8341
8340
|
async () => {
|
|
8342
8341
|
try {
|
|
8343
|
-
return await import('./Model3DScene-
|
|
8342
|
+
return await import('./Model3DScene-X6QJTWHV.mjs');
|
|
8344
8343
|
} catch {
|
|
8345
8344
|
return { default: FailedToLoad };
|
|
8346
8345
|
}
|
|
@@ -18067,6 +18066,19 @@ function PresentationAudienceEffects({ snapshot }) {
|
|
|
18067
18066
|
snapshot.subtitlesVisible && snapshot.caption && /* @__PURE__ */ jsx("div", { className: "absolute inset-x-[10%] bottom-8 rounded-lg bg-black/80 px-6 py-3 text-center text-xl font-medium text-white", children: snapshot.caption })
|
|
18068
18067
|
] });
|
|
18069
18068
|
}
|
|
18069
|
+
function PresentationEndOverlay({ onExit }) {
|
|
18070
|
+
const { t } = useTranslation();
|
|
18071
|
+
return /* @__PURE__ */ jsx(
|
|
18072
|
+
"button",
|
|
18073
|
+
{
|
|
18074
|
+
type: "button",
|
|
18075
|
+
"data-pptx-end-of-show": "",
|
|
18076
|
+
onClick: onExit,
|
|
18077
|
+
className: "absolute inset-0 z-[90] flex cursor-default items-start bg-black text-left",
|
|
18078
|
+
children: /* @__PURE__ */ jsx("span", { className: "px-4 py-3 text-[12px] text-white/70", children: t("pptx.presentation.endOfSlideShow", "End of slide show, click to exit.") })
|
|
18079
|
+
}
|
|
18080
|
+
);
|
|
18081
|
+
}
|
|
18070
18082
|
function PresentationSubtitleBar({
|
|
18071
18083
|
visible,
|
|
18072
18084
|
onCaptionChange
|
|
@@ -18157,11 +18169,11 @@ function renderNotesSegments(segments) {
|
|
|
18157
18169
|
);
|
|
18158
18170
|
});
|
|
18159
18171
|
}
|
|
18160
|
-
var toolClass = (active) => `inline-flex h-9 min-w-9 items-center justify-center gap-2 rounded-md px-2 text-xs transition-colors ${active ? "bg-
|
|
18172
|
+
var toolClass = (active) => `inline-flex h-9 min-w-9 items-center justify-center gap-2 rounded-md px-2 text-xs transition-colors ${active ? "bg-primary text-primary-foreground" : "bg-muted text-foreground hover:bg-accent"}`;
|
|
18161
18173
|
function PresenterConsoleToolbar(props) {
|
|
18162
18174
|
const pointerTool = props.snapshot.pointer?.tool ?? "none";
|
|
18163
18175
|
const zoom = props.snapshot.zoom?.scale ?? 1;
|
|
18164
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-1 border-b border-
|
|
18176
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-1 border-b border-border bg-card px-3 py-2", children: [
|
|
18165
18177
|
/* @__PURE__ */ jsx(
|
|
18166
18178
|
"button",
|
|
18167
18179
|
{
|
|
@@ -18172,7 +18184,7 @@ function PresenterConsoleToolbar(props) {
|
|
|
18172
18184
|
}
|
|
18173
18185
|
),
|
|
18174
18186
|
/* @__PURE__ */ jsx("button", { className: toolClass(false), onClick: props.onResetTimer, title: "Reset timer", children: /* @__PURE__ */ jsx(LuRotateCcw, {}) }),
|
|
18175
|
-
/* @__PURE__ */ jsx("span", { className: "mx-1 h-6 w-px bg-
|
|
18187
|
+
/* @__PURE__ */ jsx("span", { className: "mx-1 h-6 w-px bg-border" }),
|
|
18176
18188
|
/* @__PURE__ */ jsxs("button", { className: toolClass(false), onClick: props.onShowSlides, title: "See all slides", children: [
|
|
18177
18189
|
/* @__PURE__ */ jsx(LuGrid2X2, {}),
|
|
18178
18190
|
" Slides"
|
|
@@ -18180,7 +18192,7 @@ function PresenterConsoleToolbar(props) {
|
|
|
18180
18192
|
/* @__PURE__ */ jsx("button", { className: toolClass(zoom > 1), onClick: () => props.onStepZoom(1), title: "Zoom in", children: /* @__PURE__ */ jsx(LuZoomIn, {}) }),
|
|
18181
18193
|
/* @__PURE__ */ jsx("button", { className: toolClass(false), onClick: () => props.onStepZoom(-1), title: "Zoom out", children: /* @__PURE__ */ jsx(LuZoomOut, {}) }),
|
|
18182
18194
|
/* @__PURE__ */ jsx("button", { className: toolClass(false), onClick: props.onResetZoom, title: "Reset zoom", children: /* @__PURE__ */ jsx(LuScan, {}) }),
|
|
18183
|
-
/* @__PURE__ */ jsx("span", { className: "mx-1 h-6 w-px bg-
|
|
18195
|
+
/* @__PURE__ */ jsx("span", { className: "mx-1 h-6 w-px bg-border" }),
|
|
18184
18196
|
["laser", "pen", "highlighter", "eraser"].map((tool) => /* @__PURE__ */ jsx(
|
|
18185
18197
|
"button",
|
|
18186
18198
|
{
|
|
@@ -18191,7 +18203,7 @@ function PresenterConsoleToolbar(props) {
|
|
|
18191
18203
|
},
|
|
18192
18204
|
tool
|
|
18193
18205
|
)),
|
|
18194
|
-
/* @__PURE__ */ jsx("span", { className: "mx-1 h-6 w-px bg-
|
|
18206
|
+
/* @__PURE__ */ jsx("span", { className: "mx-1 h-6 w-px bg-border" }),
|
|
18195
18207
|
/* @__PURE__ */ jsx(
|
|
18196
18208
|
"button",
|
|
18197
18209
|
{
|
|
@@ -18416,7 +18428,6 @@ function PresenterNotesRail({
|
|
|
18416
18428
|
{
|
|
18417
18429
|
type: "button",
|
|
18418
18430
|
onClick: () => onMove(1),
|
|
18419
|
-
disabled: current >= slides.length - 1,
|
|
18420
18431
|
className: "inline-flex items-center gap-1 rounded bg-muted px-3 py-1.5 text-xs disabled:opacity-40",
|
|
18421
18432
|
children: [
|
|
18422
18433
|
t("pptx.presenter.next"),
|
|
@@ -18489,20 +18500,13 @@ function PresenterNotesRail({
|
|
|
18489
18500
|
] });
|
|
18490
18501
|
}
|
|
18491
18502
|
function PresenterSlideNavigator(props) {
|
|
18492
|
-
return /* @__PURE__ */ jsxs("div", { className: "absolute inset-0 z-[120] flex flex-col bg-
|
|
18493
|
-
/* @__PURE__ */ jsxs("header", { className: "flex items-center justify-between border-b border-
|
|
18503
|
+
return /* @__PURE__ */ jsxs("div", { className: "absolute inset-0 z-[120] flex flex-col bg-card/98 text-foreground", children: [
|
|
18504
|
+
/* @__PURE__ */ jsxs("header", { className: "flex items-center justify-between border-b border-border px-6 py-4", children: [
|
|
18494
18505
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
18495
18506
|
/* @__PURE__ */ jsx("p", { className: "text-xs uppercase tracking-[0.22em] text-sky-300", children: "Slide navigator" }),
|
|
18496
18507
|
/* @__PURE__ */ jsx("h2", { className: "text-xl font-semibold", children: "See all slides" })
|
|
18497
18508
|
] }),
|
|
18498
|
-
/* @__PURE__ */ jsx(
|
|
18499
|
-
"button",
|
|
18500
|
-
{
|
|
18501
|
-
className: "rounded-md bg-white/10 px-4 py-2 hover:bg-white/20",
|
|
18502
|
-
onClick: props.onClose,
|
|
18503
|
-
children: "Close"
|
|
18504
|
-
}
|
|
18505
|
-
)
|
|
18509
|
+
/* @__PURE__ */ jsx("button", { className: "rounded-md bg-muted px-4 py-2 hover:bg-accent", onClick: props.onClose, children: "Close" })
|
|
18506
18510
|
] }),
|
|
18507
18511
|
/* @__PURE__ */ jsx("div", { className: "grid flex-1 grid-cols-[repeat(auto-fill,minmax(220px,1fr))] gap-5 overflow-auto p-6", children: props.slides.map((slide, index) => /* @__PURE__ */ jsxs(
|
|
18508
18512
|
"button",
|
|
@@ -18518,7 +18522,7 @@ function PresenterSlideNavigator(props) {
|
|
|
18518
18522
|
canvasSize: props.canvasSize
|
|
18519
18523
|
}
|
|
18520
18524
|
),
|
|
18521
|
-
/* @__PURE__ */ jsxs("span", { className: "mt-2 block text-xs tabular-nums text-
|
|
18525
|
+
/* @__PURE__ */ jsxs("span", { className: "mt-2 block text-xs tabular-nums text-muted-foreground", children: [
|
|
18522
18526
|
index + 1,
|
|
18523
18527
|
slide.hidden ? " - hidden" : ""
|
|
18524
18528
|
] })
|
|
@@ -18613,6 +18617,7 @@ function PresenterView({
|
|
|
18613
18617
|
onOpenAudienceWindow,
|
|
18614
18618
|
onCloseAudienceWindow,
|
|
18615
18619
|
isAudienceWindowOpen,
|
|
18620
|
+
endOfShowVisible,
|
|
18616
18621
|
snapshot,
|
|
18617
18622
|
onNavigateToSlide,
|
|
18618
18623
|
onToggleTimer,
|
|
@@ -18634,7 +18639,7 @@ function PresenterView({
|
|
|
18634
18639
|
const elapsed = snapshot.elapsedMs ?? (presentationStartTime ? now - presentationStartTime : 0);
|
|
18635
18640
|
const [showSlides, setShowSlides] = useState(false);
|
|
18636
18641
|
const ink = usePresenterInk(snapshot, onUpdateSnapshot);
|
|
18637
|
-
const paneAdvancesOnClick = presenterPaneAdvancesOnClick(snapshot.pointer?.tool);
|
|
18642
|
+
const paneAdvancesOnClick = presenterPaneAdvancesOnClick(snapshot.pointer?.tool) && !endOfShowVisible;
|
|
18638
18643
|
const handleSlidePaneClick = useCallback(() => {
|
|
18639
18644
|
if (!paneAdvancesOnClick) {
|
|
18640
18645
|
return;
|
|
@@ -18652,7 +18657,7 @@ function PresenterView({
|
|
|
18652
18657
|
const TIMER_SEGMENT_MS = 5 * 60 * 1e3;
|
|
18653
18658
|
const timerProgress = Math.min(100, elapsed % TIMER_SEGMENT_MS / TIMER_SEGMENT_MS * 100);
|
|
18654
18659
|
const timerSegment = Math.floor(elapsed / TIMER_SEGMENT_MS);
|
|
18655
|
-
return /* @__PURE__ */ jsxs("div", { className: "absolute inset-0 z-50 flex flex-col bg-
|
|
18660
|
+
return /* @__PURE__ */ jsxs("div", { className: "absolute inset-0 z-50 flex flex-col bg-card text-foreground", children: [
|
|
18656
18661
|
/* @__PURE__ */ jsx(
|
|
18657
18662
|
PresenterConsoleToolbar,
|
|
18658
18663
|
{
|
|
@@ -18680,8 +18685,9 @@ function PresenterView({
|
|
|
18680
18685
|
role: "presentation",
|
|
18681
18686
|
"data-pptx-presenter-slide": true,
|
|
18682
18687
|
onClick: handleSlidePaneClick,
|
|
18683
|
-
className: `flex-[7] flex flex-col items-center justify-center bg-black p-6 min-w-0 overflow-hidden ${paneAdvancesOnClick ? "cursor-pointer" : ""}`,
|
|
18688
|
+
className: `relative flex-[7] flex flex-col items-center justify-center bg-black p-6 min-w-0 overflow-hidden ${paneAdvancesOnClick ? "cursor-pointer" : ""}`,
|
|
18684
18689
|
children: [
|
|
18690
|
+
endOfShowVisible && /* @__PURE__ */ jsx(PresentationEndOverlay, { onExit: () => onMovePresentationSlide(1) }),
|
|
18685
18691
|
/* @__PURE__ */ jsxs(
|
|
18686
18692
|
PresenterSlideFrame,
|
|
18687
18693
|
{
|
|
@@ -30812,6 +30818,7 @@ function ViewerPresentationLayer(props) {
|
|
|
30812
30818
|
onOpenAudienceWindow: presentation.openAudienceWindow,
|
|
30813
30819
|
onCloseAudienceWindow: presentation.closeAudienceWindow,
|
|
30814
30820
|
isAudienceWindowOpen: presentation.isAudienceWindowOpen(),
|
|
30821
|
+
endOfShowVisible: presentation.endOfShowVisible,
|
|
30815
30822
|
snapshot: presentation.presenterSnapshot,
|
|
30816
30823
|
onNavigateToSlide: presentation.navigateToSlide,
|
|
30817
30824
|
onToggleTimer: presentation.togglePresenterTimer,
|
|
@@ -31089,19 +31096,6 @@ function PresentationContextMenu(p) {
|
|
|
31089
31096
|
)
|
|
31090
31097
|
] });
|
|
31091
31098
|
}
|
|
31092
|
-
function PresentationEndOverlay({ onExit }) {
|
|
31093
|
-
const { t } = useTranslation();
|
|
31094
|
-
return /* @__PURE__ */ jsx(
|
|
31095
|
-
"button",
|
|
31096
|
-
{
|
|
31097
|
-
type: "button",
|
|
31098
|
-
"data-pptx-end-of-show": "",
|
|
31099
|
-
onClick: onExit,
|
|
31100
|
-
className: "absolute inset-0 z-[90] flex cursor-default items-start bg-black text-left",
|
|
31101
|
-
children: /* @__PURE__ */ jsx("span", { className: "px-4 py-3 text-[12px] text-white/70", children: t("pptx.presentation.endOfSlideShow", "End of slide show, click to exit.") })
|
|
31102
|
-
}
|
|
31103
|
-
);
|
|
31104
|
-
}
|
|
31105
31099
|
var ViewerOptionsContext = createContext(DEFAULT_VIEWER_OPTIONS);
|
|
31106
31100
|
function useViewerOptionsContext() {
|
|
31107
31101
|
return useContext(ViewerOptionsContext);
|
|
@@ -31549,7 +31543,7 @@ ${url}`)) {
|
|
|
31549
31543
|
)
|
|
31550
31544
|
);
|
|
31551
31545
|
}
|
|
31552
|
-
var AiChatPanel = lazy(() => import('./AiChatPanel-
|
|
31546
|
+
var AiChatPanel = lazy(() => import('./AiChatPanel-EMF3UYCE.mjs'));
|
|
31553
31547
|
function AiChatPanelLazy(props) {
|
|
31554
31548
|
return /* @__PURE__ */ jsx(
|
|
31555
31549
|
Suspense,
|
|
Binary file
|
|
Binary file
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { cloneHistorySnapshot, MAX_ZOOM_SCALE, MIN_ZOOM_SCALE, MIN_ELEMENT_SIZE, ZOOM_TO_SELECTION_PADDING, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, partitionTemplateElements, UNGROUPED_SECTION_ID, stopAllPersistentAudio, buildSaveSlides, DEFAULT_TABLE_ROWS, DEFAULT_TABLE_COLUMNS, executeMediaCommand, buildPdfFromImageData, buildNotesPdf, EMU_PER_PX, GRID_SIZE, DEFAULT_TEXT_FONT_SIZE } from './chunk-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { PptxHandler, EncryptedFileError, hasShapeProperties, hasTextProperties, applyThemeToData, THEME_PRESETS, themeColorSchemesEqual, guidePxToEmu, mergeShapes, buildThemeColorMap, reResolveSlideColors, getPresetShapeClipPath, svgPathToPolygons, polygonsToSvgPath, SvgExporter, rebuildTableStructureInRawXml, updateCellTextStyleInRawXml, updateCellTextInRawXml, updateMergeAttrsInRawXml, elementActionToPptxAction } from './chunk-JFNMD6TM.mjs';
|
|
1
|
+
import { cloneHistorySnapshot, MAX_ZOOM_SCALE, MIN_ZOOM_SCALE, MIN_ELEMENT_SIZE, ZOOM_TO_SELECTION_PADDING, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, partitionTemplateElements, UNGROUPED_SECTION_ID, stopAllPersistentAudio, buildSaveSlides, DEFAULT_TABLE_ROWS, DEFAULT_TABLE_COLUMNS, executeMediaCommand, buildPdfFromImageData, buildNotesPdf, EMU_PER_PX, GRID_SIZE, DEFAULT_TEXT_FONT_SIZE } from './chunk-TGVID6BB.mjs';
|
|
2
|
+
import { translationsEn } from './chunk-Z6HIZWIQ.mjs';
|
|
3
|
+
import { TOOLBAR_TABS, computeVirtualRange, DEFAULT_VIRTUAL_OVERSCAN, BROADCAST_THROTTLE_MS, createSyncGate, clearLocalAwareness, validateRoomId, createDepartureChannel, resolveTransportForServerUrl, isMixedContentBlocked, CONNECTION_TIMEOUT_MS, registerCollaborationTeardown, sanitizeColor, cloneTemplateElementsBySlideId, cloneSlide, PresentationAnimationController, computeEntranceAnimationDelay, PRESENTATION_HASH, PRESENTATION_NONCE_KEY, PRESENTATION_CHANNEL_NAME, swapPresentationWindows, PRESENTATION_MESSAGE_ORIGIN, clearAudienceContent, buildPresentationAudienceUrl, resolveAudienceScreenPlacement, placeAudienceWindow, storeAudienceContent, isPresentationSessionMessage, endAudienceDisplay, createPresentationKeyBuffer, acceptsPresentationInput, createCollaborationLivePatcher, publishLiveInlineText, PptxHandler, collectMediaElements, collectImagePaths, buildInitialGuides, EncryptedFileError, saveAutosaveSnapshot, isTemplateElementId, hasShapeProperties, hasTextProperties, getInlineEditorSelection, applyStyleToSelectedSegments, setPendingSelectionRestore, applyCaseTransformToSegments, transformTextCase, addSection, renameSection, deleteSection, moveSectionUp, moveSectionDown, moveSlidesToSection, normalizeColorsForCapture, preprocessCssForCapture, downloadBlob, sanitizeDownloadFilename, slideProgressPercent, slideStatusLabel, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, isExportAbortError, recordProgressPercent, applyThemeToData, THEME_PRESETS, themeColorSchemesEqual, comparePresentation, applyAcceptSlide, applyAcceptAllSlides, collectUsedFonts, detectTouchDevice, detectOrientation, isMobileViewport, MOBILE_BREAKPOINT, TABLET_BREAKPOINT, mayLeaveSlideShow, remapTextToSegments, guidePxToEmu, shouldLoopContinuously, applyRehearsalTimings, copyFormatFromElement, applyFormatToElement, createViewerOptionsStore, readSlidesFromYDoc, reconcileSlidesInYDoc, LOCAL_SYNC_ORIGIN, observeYDocSlides, shouldAutoFollowBroadcaster, createTouchGestureRecognizer, isKeyboardOpen, openPptxFile, readBackstageRecentFile, isActionHidden, buildElementClipboardPayload, generatePackageReadme, groupElements, generateElementId, makeCloneId, alignElements, distributeElements, bringForward, sendBackward, bringToFront, sendToBack, newTableElement, createDefaultChartElement, readViewportMetrics, computeKeyboardInset, mergeShapes, derivePresenceList, mapPresentationKey, buildPrintDocument, buildOutlineHtml, buildSlidesHtml, buildNotesHtml, buildHandoutsHtml, createBlankSlide, makeSlideId, buildThemeColorMap, reResolveSlideColors, createPresentationSessionId, resolveTransitionDurationMs, isUrlSafe, createPresenterTimer, createInitialPresentationSnapshot, mergePresentationSnapshot, presenterElapsed, stepPresenterZoom, resetPresenterTimer, togglePresenterTimer, canvasToJpegData, downloadDataUrl, pickSupportedMimeType, WEBM_MIME_CANDIDATES, fpsToFrameIntervalMs, segmentFrameCount, encodeGif, groupSlidesBySection, hasCopyableFormat, createBackstagePresentation, cloneElementForPaste, computeScrollDelta, getPresetShapeClipPath, svgPathToPolygons, polygonsToSvgPath, rerouteConnectorsForMovedElements, applyReroutedConnectors, SvgExporter, buildPrintHtmlDocument, deleteTableColumn, rebuildTableStructureInRawXml, insertTableColumn, deleteTableRow, insertTableRow, updateCellTextStyleInRawXml, updateCellTextInRawXml, splitCell, updateMergeAttrsInRawXml, mergeCells, isPpactionUrl, parsePpactionUrl, safeOpenUrl, ACTION_BUTTON_PRESETS, elementActionToPptxAction, buildSmartArtPresetData, computeSnapToShape, publishLiveGeometry, computeMarqueeHitIds, mergeAdditiveSelection, applyResize, snapBoxToGrid } from './chunk-VOV2N3NY.mjs';
|
|
5
4
|
import { useRef, useState, useEffect, useCallback, useMemo, useSyncExternalStore, useImperativeHandle } from 'react';
|
|
6
5
|
import JSZip from 'jszip';
|
|
7
6
|
import { useTranslation } from 'react-i18next';
|
|
@@ -1016,6 +1015,7 @@ function useAnimationPlayback(input) {
|
|
|
1016
1015
|
const presentationTimersRef = useRef([]);
|
|
1017
1016
|
const controllerRef = useRef(null);
|
|
1018
1017
|
const buildRafRef = useRef(null);
|
|
1018
|
+
const seededCompletedRef = useRef(false);
|
|
1019
1019
|
const startBuildReveal = useCallback(
|
|
1020
1020
|
(controller, group) => {
|
|
1021
1021
|
driveBuildReveal(
|
|
@@ -1168,7 +1168,7 @@ function useAnimationPlayback(input) {
|
|
|
1168
1168
|
controller.resetHover(shapeId);
|
|
1169
1169
|
}, []);
|
|
1170
1170
|
const runPresentationEntranceAnimations = useCallback(
|
|
1171
|
-
(slideIndex) => {
|
|
1171
|
+
(slideIndex, options) => {
|
|
1172
1172
|
clearPresentationTimers();
|
|
1173
1173
|
if (!animationsEnabled) {
|
|
1174
1174
|
controllerRef.current = null;
|
|
@@ -1185,6 +1185,17 @@ function useAnimationPlayback(input) {
|
|
|
1185
1185
|
setPresentationAnimations([]);
|
|
1186
1186
|
return;
|
|
1187
1187
|
}
|
|
1188
|
+
seededCompletedRef.current = false;
|
|
1189
|
+
if (options?.completed) {
|
|
1190
|
+
const seeded = controllerRef.current;
|
|
1191
|
+
if (seeded) {
|
|
1192
|
+
seededCompletedRef.current = seeded.hasMoreSteps();
|
|
1193
|
+
seeded.completeAll();
|
|
1194
|
+
setPresentationElementStates(seeded.computeStates());
|
|
1195
|
+
}
|
|
1196
|
+
setPresentationAnimations([]);
|
|
1197
|
+
return;
|
|
1198
|
+
}
|
|
1188
1199
|
const controller = controllerRef.current;
|
|
1189
1200
|
if (controller && controller.hasMoreSteps()) {
|
|
1190
1201
|
const firstGroup = controller.peekNext();
|
|
@@ -1253,6 +1264,7 @@ function useAnimationPlayback(input) {
|
|
|
1253
1264
|
handleHoverStart,
|
|
1254
1265
|
handleHoverEnd,
|
|
1255
1266
|
runPresentationEntranceAnimations,
|
|
1267
|
+
isSeededCompleted: () => seededCompletedRef.current,
|
|
1256
1268
|
presentationTimersRef
|
|
1257
1269
|
};
|
|
1258
1270
|
}
|
|
@@ -1483,7 +1495,14 @@ function usePresenterWindow(input) {
|
|
|
1483
1495
|
};
|
|
1484
1496
|
}
|
|
1485
1497
|
function useAudienceMode(input) {
|
|
1486
|
-
const {
|
|
1498
|
+
const {
|
|
1499
|
+
mode: _mode,
|
|
1500
|
+
onSetMode,
|
|
1501
|
+
onSetActiveSlideIndex,
|
|
1502
|
+
containerRef,
|
|
1503
|
+
onSnapshot,
|
|
1504
|
+
onPresenterEnded
|
|
1505
|
+
} = input;
|
|
1487
1506
|
const initialised = useRef(false);
|
|
1488
1507
|
useEffect(() => {
|
|
1489
1508
|
if (!isAudienceTab()) {
|
|
@@ -1507,6 +1526,8 @@ function useAudienceMode(input) {
|
|
|
1507
1526
|
document.removeEventListener("keydown", requestAudienceFullscreen);
|
|
1508
1527
|
};
|
|
1509
1528
|
}, [containerRef, onSetMode]);
|
|
1529
|
+
const handlersRef = useRef({ onSetActiveSlideIndex, onSnapshot, onPresenterEnded });
|
|
1530
|
+
handlersRef.current = { onSetActiveSlideIndex, onSnapshot, onPresenterEnded };
|
|
1510
1531
|
useEffect(() => {
|
|
1511
1532
|
if (!isAudienceTab()) {
|
|
1512
1533
|
return;
|
|
@@ -1526,21 +1547,20 @@ function useAudienceMode(input) {
|
|
|
1526
1547
|
if (expectedSessionId && data.sessionId !== expectedSessionId) {
|
|
1527
1548
|
return;
|
|
1528
1549
|
}
|
|
1550
|
+
const handlers = handlersRef.current;
|
|
1529
1551
|
if (data.type === "presenter-slide-change") {
|
|
1530
|
-
onSetActiveSlideIndex(data.slideIndex);
|
|
1552
|
+
handlers.onSetActiveSlideIndex(data.slideIndex);
|
|
1531
1553
|
}
|
|
1532
1554
|
if (data.type === "presenter-state") {
|
|
1533
|
-
onSetActiveSlideIndex(data.snapshot.slideIndex);
|
|
1534
|
-
onSnapshot?.(data.snapshot);
|
|
1555
|
+
handlers.onSetActiveSlideIndex(data.snapshot.slideIndex);
|
|
1556
|
+
handlers.onSnapshot?.(data.snapshot);
|
|
1535
1557
|
}
|
|
1536
1558
|
if (data.type === "presenter-exit") {
|
|
1537
1559
|
if (expectedSessionId) {
|
|
1538
1560
|
void clearAudienceContent(expectedSessionId);
|
|
1539
1561
|
}
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
window.close();
|
|
1543
|
-
} catch {
|
|
1562
|
+
if (endAudienceDisplay(window)) {
|
|
1563
|
+
handlers.onPresenterEnded?.();
|
|
1544
1564
|
}
|
|
1545
1565
|
}
|
|
1546
1566
|
};
|
|
@@ -1557,7 +1577,7 @@ function useAudienceMode(input) {
|
|
|
1557
1577
|
} catch {
|
|
1558
1578
|
}
|
|
1559
1579
|
};
|
|
1560
|
-
}, [
|
|
1580
|
+
}, []);
|
|
1561
1581
|
}
|
|
1562
1582
|
function usePresentationKeyboard(input) {
|
|
1563
1583
|
const {
|
|
@@ -1580,7 +1600,7 @@ function usePresentationKeyboard(input) {
|
|
|
1580
1600
|
} = input;
|
|
1581
1601
|
const keyBufferRef = useRef(createPresentationKeyBuffer());
|
|
1582
1602
|
useEffect(() => {
|
|
1583
|
-
if (mode !== "present") {
|
|
1603
|
+
if (mode !== "present" || !acceptsPresentationInput()) {
|
|
1584
1604
|
keyBufferRef.current = createPresentationKeyBuffer();
|
|
1585
1605
|
return;
|
|
1586
1606
|
}
|
|
@@ -1819,14 +1839,16 @@ function executeSlideTransition(nextSlideIndex, deps) {
|
|
|
1819
1839
|
durationMs
|
|
1820
1840
|
});
|
|
1821
1841
|
const timer = window.setTimeout(() => {
|
|
1822
|
-
deps.runPresentationEntranceAnimations(nextSlideIndex
|
|
1842
|
+
deps.runPresentationEntranceAnimations(nextSlideIndex, {
|
|
1843
|
+
completed: deps.seedCompleted
|
|
1844
|
+
});
|
|
1823
1845
|
deps.scheduleAutoAdvanceForSlide?.(nextSlideIndex);
|
|
1824
1846
|
}, durationMs);
|
|
1825
1847
|
deps.presentationTimersRef.current.push(timer);
|
|
1826
1848
|
return;
|
|
1827
1849
|
}
|
|
1828
1850
|
deps.setTransitionOverlay(null);
|
|
1829
|
-
deps.runPresentationEntranceAnimations(nextSlideIndex);
|
|
1851
|
+
deps.runPresentationEntranceAnimations(nextSlideIndex, { completed: deps.seedCompleted });
|
|
1830
1852
|
deps.scheduleAutoAdvanceForSlide?.(nextSlideIndex);
|
|
1831
1853
|
}
|
|
1832
1854
|
|
|
@@ -1936,7 +1958,9 @@ function useSlideNavigation(input) {
|
|
|
1936
1958
|
presentationTimersRef,
|
|
1937
1959
|
setTransitionOverlay,
|
|
1938
1960
|
// PowerPoint plays a slide's transition only when advancing into it.
|
|
1939
|
-
playTransition: direction === 1
|
|
1961
|
+
playTransition: direction === 1,
|
|
1962
|
+
// Stepping back onto a slide shows it with its builds already played.
|
|
1963
|
+
seedCompleted: direction === -1
|
|
1940
1964
|
});
|
|
1941
1965
|
},
|
|
1942
1966
|
[
|
|
@@ -2139,6 +2163,7 @@ function usePresentationMode(input) {
|
|
|
2139
2163
|
handleHoverStart,
|
|
2140
2164
|
handleHoverEnd,
|
|
2141
2165
|
runPresentationEntranceAnimations,
|
|
2166
|
+
isSeededCompleted,
|
|
2142
2167
|
presentationTimersRef
|
|
2143
2168
|
} = useAnimationPlayback({ slides, onPlayActionSound, showWithAnimation });
|
|
2144
2169
|
const {
|
|
@@ -2161,6 +2186,11 @@ function usePresentationMode(input) {
|
|
|
2161
2186
|
setPresentationStartTime,
|
|
2162
2187
|
setPresenterMode
|
|
2163
2188
|
});
|
|
2189
|
+
useEffect(() => {
|
|
2190
|
+
if (mode !== "present") {
|
|
2191
|
+
setPresenterMode(false);
|
|
2192
|
+
}
|
|
2193
|
+
}, [mode]);
|
|
2164
2194
|
const handleAdvancePastLastSlide = useCallback(() => {
|
|
2165
2195
|
if (endWithBlackSlide) {
|
|
2166
2196
|
setEndOfShowVisible(true);
|
|
@@ -2196,6 +2226,9 @@ function usePresentationMode(input) {
|
|
|
2196
2226
|
});
|
|
2197
2227
|
const movePresentationSlide = useCallback(
|
|
2198
2228
|
(direction, trigger = "explicit") => {
|
|
2229
|
+
if (!acceptsPresentationInput()) {
|
|
2230
|
+
return;
|
|
2231
|
+
}
|
|
2199
2232
|
if (endOfShowVisible) {
|
|
2200
2233
|
setEndOfShowVisible(false);
|
|
2201
2234
|
if (direction === 1) {
|
|
@@ -2203,9 +2236,20 @@ function usePresentationMode(input) {
|
|
|
2203
2236
|
}
|
|
2204
2237
|
return;
|
|
2205
2238
|
}
|
|
2239
|
+
if (direction === -1 && isSeededCompleted()) {
|
|
2240
|
+
runPresentationEntranceAnimations(presentationSlideIndex);
|
|
2241
|
+
return;
|
|
2242
|
+
}
|
|
2206
2243
|
moveNavigationSlide(direction, trigger);
|
|
2207
2244
|
},
|
|
2208
|
-
[
|
|
2245
|
+
[
|
|
2246
|
+
endOfShowVisible,
|
|
2247
|
+
isSeededCompleted,
|
|
2248
|
+
moveNavigationSlide,
|
|
2249
|
+
onSetMode,
|
|
2250
|
+
presentationSlideIndex,
|
|
2251
|
+
runPresentationEntranceAnimations
|
|
2252
|
+
]
|
|
2209
2253
|
);
|
|
2210
2254
|
const { handleZoomClick, zoomReturnSlideIndex, returnToZoomSlide, clearZoomReturn } = useZoomNavigation({ navigateToSlide });
|
|
2211
2255
|
const openAllSlides = useCallback(() => setAllSlidesOpen(true), []);
|
|
@@ -2231,7 +2275,10 @@ function usePresentationMode(input) {
|
|
|
2231
2275
|
setPresentationSlideIndex(index);
|
|
2232
2276
|
},
|
|
2233
2277
|
containerRef,
|
|
2234
|
-
onSnapshot: presenterConsole.applyAudienceSnapshot
|
|
2278
|
+
onSnapshot: presenterConsole.applyAudienceSnapshot,
|
|
2279
|
+
// The presenter ended the session but this tab could not close itself:
|
|
2280
|
+
// show the black end-of-slide-show screen rather than the editor.
|
|
2281
|
+
onPresenterEnded: () => setEndOfShowVisible(true)
|
|
2235
2282
|
});
|
|
2236
2283
|
const enterPresentMode = useCallback(() => {
|
|
2237
2284
|
setPresenterMode(false);
|
|
@@ -8304,6 +8351,9 @@ function useAnnotationHandlers(input) {
|
|
|
8304
8351
|
}, [annotations, setMode, setSlides, history]);
|
|
8305
8352
|
const handleSetMode = useCallback(
|
|
8306
8353
|
(nextMode) => {
|
|
8354
|
+
if (mode === "present" && nextMode !== "present" && !mayLeaveSlideShow()) {
|
|
8355
|
+
return;
|
|
8356
|
+
}
|
|
8307
8357
|
if (nextMode === "present") {
|
|
8308
8358
|
presentation.enterPresentMode();
|
|
8309
8359
|
} else if (mode === "present" && annotations.hasAnyAnnotations) {
|
|
@@ -8577,6 +8627,9 @@ function usePresentationSetup(input) {
|
|
|
8577
8627
|
containerRef,
|
|
8578
8628
|
content,
|
|
8579
8629
|
onSetMode: (nextMode) => {
|
|
8630
|
+
if (mode === "present" && nextMode !== "present" && !mayLeaveSlideShow()) {
|
|
8631
|
+
return;
|
|
8632
|
+
}
|
|
8580
8633
|
if (mode === "present" && nextMode !== "present" && annotations.hasAnyAnnotations && promptKeepInkAnnotations) {
|
|
8581
8634
|
pendingModeRef.current = nextMode;
|
|
8582
8635
|
setShowKeepAnnotationsDialog(true);
|
|
@@ -9859,8 +9912,7 @@ function useYjsDocumentSync({
|
|
|
9859
9912
|
return;
|
|
9860
9913
|
}
|
|
9861
9914
|
try {
|
|
9862
|
-
const
|
|
9863
|
-
const handler = new PptxHandler2();
|
|
9915
|
+
const handler = new PptxHandler();
|
|
9864
9916
|
await handler.load(sourceBytes.buffer);
|
|
9865
9917
|
const currentSlides = readSlidesFromYDoc(
|
|
9866
9918
|
doc
|
|
Binary file
|
|
Binary file
|