pptx-react-viewer 3.1.1 → 3.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/{AiChatPanel-EIENGCKW.mjs → AiChatPanel-5JAQBLTU.mjs} +4 -4
  3. package/dist/AiChatPanel-5JAQBLTU.mjs.br +0 -0
  4. package/dist/AiChatPanel-5JAQBLTU.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-6PERJN7M.js → AiChatPanel-C3E7UV7T.js} +24 -24
  6. package/dist/AiChatPanel-C3E7UV7T.js.br +0 -0
  7. package/dist/AiChatPanel-C3E7UV7T.js.gz +0 -0
  8. package/dist/{Area3DChartScene-W6SVC235.mjs → Area3DChartScene-KE434ERF.mjs} +1 -1
  9. package/dist/{Area3DChartScene-W6SVC235.mjs.br → Area3DChartScene-KE434ERF.mjs.br} +0 -0
  10. package/dist/Area3DChartScene-KE434ERF.mjs.gz +0 -0
  11. package/dist/{Area3DChartScene-TXCLQLBQ.js → Area3DChartScene-XY2PKRMA.js} +2 -2
  12. package/dist/Area3DChartScene-XY2PKRMA.js.br +0 -0
  13. package/dist/Area3DChartScene-XY2PKRMA.js.gz +0 -0
  14. package/dist/{Bar3DChartScene-FCVUZIJ3.mjs → Bar3DChartScene-2KQABQZM.mjs} +1 -1
  15. package/dist/{Bar3DChartScene-FCVUZIJ3.mjs.br → Bar3DChartScene-2KQABQZM.mjs.br} +0 -0
  16. package/dist/Bar3DChartScene-2KQABQZM.mjs.gz +0 -0
  17. package/dist/{Bar3DChartScene-6RHPFLZT.js → Bar3DChartScene-YMADUUZN.js} +2 -2
  18. package/dist/Bar3DChartScene-YMADUUZN.js.br +0 -0
  19. package/dist/Bar3DChartScene-YMADUUZN.js.gz +0 -0
  20. package/dist/{Line3DChartScene-2ZFE53KO.js → Line3DChartScene-AB7N6ORX.js} +2 -2
  21. package/dist/Line3DChartScene-AB7N6ORX.js.br +0 -0
  22. package/dist/Line3DChartScene-AB7N6ORX.js.gz +0 -0
  23. package/dist/{Line3DChartScene-MJXFXSPW.mjs → Line3DChartScene-K3BSK6BB.mjs} +1 -1
  24. package/dist/{Line3DChartScene-MJXFXSPW.mjs.br → Line3DChartScene-K3BSK6BB.mjs.br} +0 -0
  25. package/dist/Line3DChartScene-K3BSK6BB.mjs.gz +0 -0
  26. package/dist/{Model3DScene-A5RV3KNJ.mjs → Model3DScene-NT5RRIB5.mjs} +1 -1
  27. package/dist/{Model3DScene-A5RV3KNJ.mjs.br → Model3DScene-NT5RRIB5.mjs.br} +0 -0
  28. package/dist/Model3DScene-NT5RRIB5.mjs.gz +0 -0
  29. package/dist/{Model3DScene-7VQNRY5B.js → Model3DScene-VSLGUWC7.js} +2 -2
  30. package/dist/{Model3DScene-7VQNRY5B.js.br → Model3DScene-VSLGUWC7.js.br} +0 -0
  31. package/dist/Model3DScene-VSLGUWC7.js.gz +0 -0
  32. package/dist/{PieChart3DScene-JTHZESS3.js → PieChart3DScene-6MUFRFYJ.js} +2 -2
  33. package/dist/PieChart3DScene-6MUFRFYJ.js.br +0 -0
  34. package/dist/PieChart3DScene-6MUFRFYJ.js.gz +0 -0
  35. package/dist/{PieChart3DScene-UEVFZZVW.mjs → PieChart3DScene-NFRBKII7.mjs} +1 -1
  36. package/dist/PieChart3DScene-NFRBKII7.mjs.br +0 -0
  37. package/dist/PieChart3DScene-NFRBKII7.mjs.gz +0 -0
  38. package/dist/PowerPointViewer-Cl6jBPNw.d.ts.map +1 -1
  39. package/dist/{SurfaceChart3DScene-FXUNT5OK.js → SurfaceChart3DScene-2UQOKVFB.js} +2 -2
  40. package/dist/SurfaceChart3DScene-2UQOKVFB.js.br +0 -0
  41. package/dist/SurfaceChart3DScene-2UQOKVFB.js.gz +0 -0
  42. package/dist/{SurfaceChart3DScene-WD65PAG4.mjs → SurfaceChart3DScene-UKIOTKJC.mjs} +1 -1
  43. package/dist/{SurfaceChart3DScene-WD65PAG4.mjs.br → SurfaceChart3DScene-UKIOTKJC.mjs.br} +0 -0
  44. package/dist/SurfaceChart3DScene-UKIOTKJC.mjs.gz +0 -0
  45. package/dist/{chunk-ICAYXQVJ.mjs → chunk-5WH6UVWC.mjs} +289 -135
  46. package/dist/chunk-5WH6UVWC.mjs.br +0 -0
  47. package/dist/chunk-5WH6UVWC.mjs.gz +0 -0
  48. package/dist/{chunk-OUX4O5XK.mjs → chunk-ACVLIDUS.mjs} +2 -2
  49. package/dist/chunk-ACVLIDUS.mjs.br +0 -0
  50. package/dist/chunk-ACVLIDUS.mjs.gz +0 -0
  51. package/dist/{chunk-MKPSUHUH.mjs → chunk-ARJE3V6V.mjs} +5 -6
  52. package/dist/chunk-ARJE3V6V.mjs.br +0 -0
  53. package/dist/chunk-ARJE3V6V.mjs.gz +0 -0
  54. package/dist/{chunk-MAOUVROK.mjs → chunk-BZ6OM3H5.mjs} +360 -338
  55. package/dist/chunk-BZ6OM3H5.mjs.br +0 -0
  56. package/dist/chunk-BZ6OM3H5.mjs.gz +0 -0
  57. package/dist/{chunk-GIFQWIW5.js → chunk-GCOGKBK3.js} +1368 -1214
  58. package/dist/chunk-GCOGKBK3.js.br +0 -0
  59. package/dist/chunk-GCOGKBK3.js.gz +0 -0
  60. package/dist/{chunk-IDTNKL4S.js → chunk-HMZA25W2.js} +300 -45
  61. package/dist/chunk-HMZA25W2.js.br +0 -0
  62. package/dist/chunk-HMZA25W2.js.gz +0 -0
  63. package/dist/{chunk-OZGFMZEX.js → chunk-K4DUVYZ7.js} +3 -3
  64. package/dist/chunk-K4DUVYZ7.js.br +0 -0
  65. package/dist/chunk-K4DUVYZ7.js.gz +0 -0
  66. package/dist/{chunk-GCE2TYHF.js → chunk-OABOL32L.js} +157 -157
  67. package/dist/chunk-OABOL32L.js.br +0 -0
  68. package/dist/chunk-OABOL32L.js.gz +0 -0
  69. package/dist/{chunk-ISDTM2V3.mjs → chunk-SRAXNEJX.mjs} +286 -45
  70. package/dist/chunk-SRAXNEJX.mjs.br +0 -0
  71. package/dist/chunk-SRAXNEJX.mjs.gz +0 -0
  72. package/dist/{chunk-PIUB7R2K.js → chunk-SWRY3SI5.js} +5 -6
  73. package/dist/chunk-SWRY3SI5.js.br +0 -0
  74. package/dist/chunk-SWRY3SI5.js.gz +0 -0
  75. package/dist/{chunk-OTBQBTTQ.js → chunk-XBR7W47W.js} +726 -706
  76. package/dist/chunk-XBR7W47W.js.br +0 -0
  77. package/dist/chunk-XBR7W47W.js.gz +0 -0
  78. package/dist/{chunk-5ERW2B25.mjs → chunk-Z3DEULRJ.mjs} +1 -1
  79. package/dist/chunk-Z3DEULRJ.mjs.br +0 -0
  80. package/dist/chunk-Z3DEULRJ.mjs.gz +0 -0
  81. package/dist/i18n.js +4 -4
  82. package/dist/i18n.js.br +0 -0
  83. package/dist/i18n.js.gz +0 -0
  84. package/dist/i18n.mjs +1 -1
  85. package/dist/i18n.mjs.br +0 -0
  86. package/dist/i18n.mjs.gz +0 -0
  87. package/dist/index.d.ts +27 -1
  88. package/dist/index.d.ts.map +1 -1
  89. package/dist/index.js +47 -47
  90. package/dist/index.js.br +0 -0
  91. package/dist/index.js.gz +0 -0
  92. package/dist/index.mjs +6 -6
  93. package/dist/index.mjs.br +0 -0
  94. package/dist/index.mjs.gz +0 -0
  95. package/dist/internals.d.ts +99 -22
  96. package/dist/internals.d.ts.map +1 -1
  97. package/dist/internals.js +79 -79
  98. package/dist/internals.js.br +0 -0
  99. package/dist/internals.js.gz +0 -0
  100. package/dist/internals.mjs +4 -4
  101. package/dist/internals.mjs.br +0 -0
  102. package/dist/internals.mjs.gz +0 -0
  103. package/dist/pptx-viewer.css +1 -1
  104. package/dist/pptx-viewer.css.br +0 -0
  105. package/dist/pptx-viewer.css.gz +0 -0
  106. package/dist/{useViewerBuildingBlocks-DC1O_op4.d.ts → useViewerBuildingBlocks-X1L8BjsQ.d.ts} +19 -2
  107. package/dist/useViewerBuildingBlocks-X1L8BjsQ.d.ts.map +1 -0
  108. package/dist/viewer/index.js +27 -27
  109. package/dist/viewer/index.js.br +0 -0
  110. package/dist/viewer/index.js.gz +0 -0
  111. package/dist/viewer/index.mjs +6 -6
  112. package/dist/viewer/index.mjs.br +0 -0
  113. package/dist/viewer/index.mjs.gz +0 -0
  114. package/package.json +1 -1
  115. package/dist/AiChatPanel-6PERJN7M.js.br +0 -0
  116. package/dist/AiChatPanel-6PERJN7M.js.gz +0 -0
  117. package/dist/AiChatPanel-EIENGCKW.mjs.br +0 -0
  118. package/dist/AiChatPanel-EIENGCKW.mjs.gz +0 -0
  119. package/dist/Area3DChartScene-TXCLQLBQ.js.br +0 -0
  120. package/dist/Area3DChartScene-TXCLQLBQ.js.gz +0 -0
  121. package/dist/Area3DChartScene-W6SVC235.mjs.gz +0 -0
  122. package/dist/Bar3DChartScene-6RHPFLZT.js.br +0 -0
  123. package/dist/Bar3DChartScene-6RHPFLZT.js.gz +0 -0
  124. package/dist/Bar3DChartScene-FCVUZIJ3.mjs.gz +0 -0
  125. package/dist/Line3DChartScene-2ZFE53KO.js.br +0 -0
  126. package/dist/Line3DChartScene-2ZFE53KO.js.gz +0 -0
  127. package/dist/Line3DChartScene-MJXFXSPW.mjs.gz +0 -0
  128. package/dist/Model3DScene-7VQNRY5B.js.gz +0 -0
  129. package/dist/Model3DScene-A5RV3KNJ.mjs.gz +0 -0
  130. package/dist/PieChart3DScene-JTHZESS3.js.br +0 -0
  131. package/dist/PieChart3DScene-JTHZESS3.js.gz +0 -0
  132. package/dist/PieChart3DScene-UEVFZZVW.mjs.br +0 -0
  133. package/dist/PieChart3DScene-UEVFZZVW.mjs.gz +0 -0
  134. package/dist/SurfaceChart3DScene-FXUNT5OK.js.br +0 -0
  135. package/dist/SurfaceChart3DScene-FXUNT5OK.js.gz +0 -0
  136. package/dist/SurfaceChart3DScene-WD65PAG4.mjs.gz +0 -0
  137. package/dist/chunk-5ERW2B25.mjs.br +0 -0
  138. package/dist/chunk-5ERW2B25.mjs.gz +0 -0
  139. package/dist/chunk-GCE2TYHF.js.br +0 -0
  140. package/dist/chunk-GCE2TYHF.js.gz +0 -0
  141. package/dist/chunk-GIFQWIW5.js.br +0 -0
  142. package/dist/chunk-GIFQWIW5.js.gz +0 -0
  143. package/dist/chunk-ICAYXQVJ.mjs.br +0 -0
  144. package/dist/chunk-ICAYXQVJ.mjs.gz +0 -0
  145. package/dist/chunk-IDTNKL4S.js.br +0 -0
  146. package/dist/chunk-IDTNKL4S.js.gz +0 -0
  147. package/dist/chunk-ISDTM2V3.mjs.br +0 -0
  148. package/dist/chunk-ISDTM2V3.mjs.gz +0 -0
  149. package/dist/chunk-MAOUVROK.mjs.br +0 -0
  150. package/dist/chunk-MAOUVROK.mjs.gz +0 -0
  151. package/dist/chunk-MKPSUHUH.mjs.br +0 -0
  152. package/dist/chunk-MKPSUHUH.mjs.gz +0 -0
  153. package/dist/chunk-OTBQBTTQ.js.br +0 -0
  154. package/dist/chunk-OTBQBTTQ.js.gz +0 -0
  155. package/dist/chunk-OUX4O5XK.mjs.br +0 -0
  156. package/dist/chunk-OUX4O5XK.mjs.gz +0 -0
  157. package/dist/chunk-OZGFMZEX.js.br +0 -0
  158. package/dist/chunk-OZGFMZEX.js.gz +0 -0
  159. package/dist/chunk-PIUB7R2K.js.br +0 -0
  160. package/dist/chunk-PIUB7R2K.js.gz +0 -0
  161. package/dist/useViewerBuildingBlocks-DC1O_op4.d.ts.map +0 -1
@@ -1,12 +1,12 @@
1
- import { computeFocusTargets, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, toRenderableParts } from './chunk-5ERW2B25.mjs';
2
- import { useReducedMotion, useViewerState, useViewerOptions, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useLayoutSwitching, useYjsDocumentSync, useCollaborationLivePatch, useFollowMode, useBroadcastFollower, scopeLayoutOptionsToActiveSlide, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, useCollaborativeState, useVirtualizedSlides, useSwipeNavigation, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP } from './chunk-MAOUVROK.mjs';
3
- import { MIN_ELEMENT_SIZE, DEFAULT_STROKE_COLOR, getConnectorPathGeometry, buildLineShadowCss, buildLineGlowFilter, renderConnectorMarker, getShapeVisualStyle, getTextStyleForElement, DEFAULT_TEXT_COLOR, renderVectorShape, isConnectorOrLineElement, build3DExtrusionData, getImageRenderStyle, cn, getTextLayoutStyle, renderTableElement, renderMediaElement, shouldRenderFallbackLabel, SHAPE_PRESETS, ANIMATION_PRESET_OPTIONS, DEFAULT_FILL_COLOR, hasDagDuotoneEffect, renderDagDuotoneSvgFilter, getCropShapeClipPath, getImageTilingStyle, getDuotoneColors, getTextWarpStyle, renderTextSegments, buildReactChartViewModel, renderChartElement, buildTextBody3DSceneStyle, SLIDE_NAV_THUMBNAIL_WIDTH, DEFAULT_TEXT_FONT_SIZE, DEFAULT_FONT_FAMILY, TOOLBAR_SECTIONS, DEFAULT_SECTION_GROUP_ID, SHORTCUT_REFERENCE_ITEMS as SHORTCUT_REFERENCE_ITEMS$1, HYPERLINK_COLOR, GRID_SIZE, CONNECTOR_ARROW_OPTIONS, ARROW_SIZE_OPTIONS, startMotionPathPreview, startPreviewAnimation, stopPreviewAnimation, THEME_COLOR_SWATCHES, STROKE_DASH_OPTIONS } from './chunk-OUX4O5XK.mjs';
4
- import { LOCALE_CATALOG, translationsEn } from './chunk-MKPSUHUH.mjs';
5
- import { hasShapeProperties, normalizeHexColor, colorWithOpacity, normalizeStrokeDashType, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, svgLineCap, hasTextProperties, getElementTransform, getAriaRoleDescription, getAriaLabel, getAriaRole, resolveElementInteractivity, isEditableTextElement, isElementRendered, isElementActionable, getImageEffectsOpacity, getImageEffectsFilter, inlineElementPointerEvents, isHollowShapeElement, LINK_TOOLTIP_HOST_CLASS, ACTION_BUTTON_PRESETS, mediaTransportVisible, isInkElement, getGroupChildParentFill, getElementLabel, SWITCHABLE_LAYOUT_TYPES, DEFAULT_VIEWER_OPTIONS, compileEquationTemplateMathMl, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, resolveAutosaveActivation, viewerOptionsToPreferences, applyPreferenceToOptions, listAutosaveSnapshots, deleteAutosaveSnapshot, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, shouldShowAutosaveRecoveryPrompt, paintedStrokeWidth, buildCssGradientFromShapeStyle, ensureActionAffordanceStyles, resolveElementActionAffordance, actionAffordanceLabels, getComputedEffectStyle, getSoftEdgeSvgFilter, buildStrokeOutline, buildHollowHitOutline, buildSubpathFillOverlay, isImageLikeElement, getComputedFillStyle, strokeOutlineViewBox, revealedSmartArtNodeCount, buildSmartArtA11y, computeSmartArtElementLayout, flattenNodes, buildSummaryZoomView, isImageTiled, getImageColorWashStyle, placeCaretAtEnd, getPendingSelectionRestore, restoreSegmentSelection, getTextCompensationTransform, resolveChartKind, ensureChartInteractionStyles, applyChartPartHighlight, applyChartBuildReveal, formatAxisValue, hasPressureVariation, getInkReplayStyles, INK_REPLAY_KEYFRAMES, resolveInkColor, resolveInkWidth, resolveInkOpacity, pressuresToWidths, getContentPartReplayStyles, resolveOleType, getOleAriaLabel, getOleTypeColor, getOleTypeLabel, filterRenderedElements, resolveGroupChildFill, isLinkedTextBox, getOverflowSegments, shouldUseSvgWarp, getTextBodyRotationTransform, RULER_THICKNESS, RULER_FONT_SIZE, buildPreviewElements, deriveSlideFieldContext, SLIDE_TRANSITION_OPTIONS, hiddenSlideCue, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, themeToCssVars, applyMotionPathPreset, resetSlideLayoutPath, DEFAULT_INSERT_CHART_KIND, hasCopyableFormat, templateSchemeFromTheme, createBackstagePresentation, setMasterViewBackgroundColor, printPropertiesFrameSlides, printPropertiesSlidesPerPage, VIEWER_OPTIONS_TABS, DEFAULT_QUICK_ACCESS_COMMAND_IDS, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, ACTION_INDICATOR_CLASS, ACTION_INDICATOR_ICON_PATH, LINK_TOOLTIP_CLASS, LINK_TOOLTIP_PANEL_CLASS, LINK_TOOLTIP_LABEL_CLASS, LINK_TOOLTIP_HINT_CLASS, DEFAULT_PALETTE2, resolvePalette, computeDrawingViewBox, projectDrawingShapes, styleShadowFilter, resolveDrawingShapeNodeId, buildChromeStyle, getImageSvgFilters, buildDuotoneCacheKey, getDuotoneCachedResult, applyDuotone, setDuotoneCachedResult, buildCacheKey, DEFAULT_COLOR_CHANGE_TOLERANCE, getCachedResult, applyColorChange, setCachedResult, findChartPartTarget, advanceChartValueDrag, beginChartValueDrag, buildSurfaceChart3DDataForElement, buildBarChart3DDataForElement, buildLineChart3DDataForElement, buildAreaChart3DDataForElement, buildPieChart3DDataForElement, withChartTitle, buildSmartArt3DModel, extractPathPoints, generatePressureCircles, generateNibMarks, isBrowserOpenableMime, formatBytes, getOleDisplayName, getOleBadgeLabel, openUrlInNewTab, getSubstituteFontFamily, getWarpPath, getSlideBackgroundStyle, filterCommands, resolveTitleBarStatusKey, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, masterViewBackgroundColor, buildFieldSubstitutionContext, shouldConfirmExternalHyperlink, safeOpenUrl, isPpactionUrl, parsePpactionUrl, isPresentationAdvanceClick, toggleBlackboard, PRESENT_TOOLBAR_CLASSES, buildContextMenuEntries, themeColorSchemesEqual, EXPANDED_MAX_HEIGHT, STATUS_BAR_CLASSES, buildBarActions, formatVersionTimestamp, formatRelativeTime, scanAvailableFontFamilies, PRESETS, CATEGORIES, convertOmmlToLatex, compileLatexEquation, convertLatexToOmml, EQUATION_TEMPLATES, clampPercent, HANDOUT_OPTIONS, TOOLBAR_TABS, SHORTCUT_REFERENCE_ITEMS, resolveViewerAddinRows, availableQuickAccessCommands, addQuickAccessCommand, removeQuickAccessCommand, moveQuickAccessCommand, CUSTOM_FONT_ACCEPT, activateModalFocus, buildCollaborationShareUrl, buildActiveSessionUsers, SORTER_MIN_ZOOM, SORTER_ZOOM_STEP, SORTER_MAX_ZOOM, canGoPrevious, formatSlideCounter, READING_VIEW_COUNTER_ATTR, canGoNext, READING_VIEW_ATTR, OUTLINE_LEVEL_ATTR, OUTLINE_SLIDE_ATTR, OUTLINE_ROW_ATTR, OUTLINE_VIEW_ATTR, mobileElapsedSince, nextPresentedSlide, presenterPrevDisabled, presenterNextDisabled, formatMobileElapsed, mobileSlideCounter, presenterPaneAdvancesOnClick, presenterTimerProgress, PRESENTER_CONSOLE_CLASSES, formatElapsed, centeredSvgTextLines, computeInlineEditorRect, findSmartArtNodeText, setSmartArtNodeStyle, rebuildDrawingShapesIfCleared, shouldCommitSmartArtNodeText, updateSmartArtNodeText, groupIntoParagraphs, substituteFieldText, extraQuickAccessCommands, TAB_ROW_ACTION_CLASSES, listBackstageRecentFiles, BACKSTAGE_NAV, INSERT_CHART_TYPES, CHARACTER_SPACING_OPTIONS, RIBBON_SHAPE_SWATCHES, shapeFillChange, shapeOutlineChange, readRibbonTransitionDraft, ribbonTransitionUpdates, readSoundFileAsDataUrl, applyTransitionSoundFile, playSlideTransitionPreview, RIBBON_TRANSITION_PRESETS, transitionSoundOptions, transitionSoundSelectedValue, DEFAULT_MOTION_PATH_PRESET_ID, SLIDE_SHOW_OPTIONS, slideShowOptionChange, readSlideShowOption, SLIDE_VIRTUALIZATION_THRESHOLD, PRESENTATION_HIT_TEST_CSS, PRESENTATION_STAGE_ATTRIBUTE, getSlideTransitionAnimations, MORPH_CROSSFADE_GROUP_STYLE, MORPH_CROSSFADE_HALF_STYLE, SLIDE_TRANSITION_KEYFRAMES, annotationOverlayZIndex, presentationInkPath, resolveNotesSchematicBodyFontSizePx, motionPathFor, setMotionPath, getShapeAdjustmentHandleDescriptors, PRESENTER_NAVIGATOR_LABEL_KEYS, PEN_COLORS, HIGHLIGHTER_COLORS, isBlackboardActive, slideSizeToCanvasPx, resolveSelectionPaneRename, PRESET_THEMES, resolveNotesSegments, segmentsToEditorHtml, DEBOUNCE_MS, createPlainNotesSegments, parseSegmentsFromRichEditor, segmentsToPlainText, getCurrentParagraphIndex, segmentsToParagraphs, paragraphsToSegments, MAX_INDENT_LEVEL, INDENT_PX, isUrlSafe, buildNotesPrintHtml, toggleSheet, sanitizeMathMl, computeHandoutLayout, getPrintableArea, generateNoteLineCount, computeAllNotesPages, getNotesPrintableArea, downloadBlob, clampOptionNumber, QUICK_ACCESS_COMMAND_CATALOG, registerCustomFont, openReadingView, applyReadingViewCommand, createPresentationKeyBuffer, readingViewFitScale, READING_VIEW_STAGE_ATTR, buildOutline, applyOutlineEdit, mapOutlineKey, notesSegmentsToSpans, erasePresentationInkAt, movePresenterPointer, appendPresentationInkPoint, PRESENTER_CONSOLE_CONTROLS, NOTES_FONT_SIZE_DEFAULT, formatTime, NOTES_FONT_SIZE_MIN, clampNotesFontSize, NOTES_FONT_SIZE_STEP, NOTES_FONT_SIZE_MAX, BACKSTAGE_TEMPLATES, formatBackstageDate, formatBackstageSize, backstageCardsFor, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, resolveDefaultFontFamily, buildFontCatalog, TRANSITION_SOUND_OTHER_VALUE, TRANSITION_SOUND_NONE_VALUE, clearTransitionSound, ENTRANCE_PRESET_VALUES, EMPHASIS_PRESET_VALUES, EXIT_PRESET_VALUES, MOTION_PATH_FAMILIES, motionPathFamilyLabelKey, motionPathPresetsByFamily, motionPathPresetLabelKey, masterViewPseudoSlide, authorConnectorBetweenSites, findEraserHitElementId, generateTicks, rulerDragToGuidePosition, getElementTransformWithoutRotation, buildCommentMarkers, COMMENT_MARKER_SIZE, collectConnectorSiteCandidates, getConnectorEndpointHandles, findConnectorSiteNear, motionPathToSvgD, motionPathEndPixel, isEditableMotionPath, setMotionPathEnd, themeColorLabel, buildThemeColorGrid, THEME_COLOR_SCHEME_KEYS, COMMON_FONTS, buildSmartArtPresetData, handleReadingViewKey, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, isCurrentLayout, SLIDE_TEMPLATES, computeAnchoredPopupPosition, CONNECTOR_SITE_SNAP_PX, resolveConnectorEndpointUpdate, withConnectorEndpointUpdate, getShapeConnectionSites, isElementLocked, mergeSlideTransition, mapSlideSorterKey, isEditorTextInputTarget, clampSorterZoom, buildLayoutPreviewGeometry, buildSlideTemplateContent, elementLockTogglePatch, buildTableDataGrid, appendTableElementRow, removeLastTableElementRow, appendTableElementColumn, removeLastTableElementColumn, removeTableElementColumn, removeTableElementRow, setTableElementCellText, TABLE_STYLE_PRESETS, applyTableStylePreset, evenColumnWidths, redistributeColumnWidth, evenRowHeights, patchChartData, setChartCategoryLabel, setChartCellValue, addChartCategory, removeChartCategory, addChartSeries, removeChartSeries, setChartAxisLogScale, setChartAxisTitleStyle, setChartAxisGridlineStyle, setChartSeriesMarker, setChartSeriesChartType, setChartDataPointFill, setChartDataPointExplosion, setChartDataPointMarker, setChartDataPointLabel, describeSmartArtBounds, canAddTopLevelNode, classifyExtraConnections, siblingIndex, siblingCount, canRemoveTopLevelNode, buildOleObjectNamePatch, getOleObjectTypeLabel, sanitizeGradientStops, pptxActionToElementAction, withFrameSlides, withSlidesPerPage, applyThemeOverrideToSlide, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, schemaLabel, THEME_COLOR_SLOT_LABEL_KEYS, resolveSlideSizeSelection, SLIDE_SIZE_PRESETS, TRANSITION_VALID_DIRECTIONS, TRANSITION_ORIENTATION_TYPES, clampTransitionNumber, TRANSITION_SPEED_OPTIONS, TRANSITION_MORPH_OPTIONS, flattenTagCollections, resolveTemplateBackgroundRows, formatCommentTimestamp, buildAnimationTimelineRows, clearMotionPath, getEffectSoundState, setEffectSound, setAfterAnimation, setAfterAnimationColor, DIRECTIONAL_PRESETS, buildAnimationTimelineBars, motionPathPresetIdForPath, computeMergeCellRight, computeMergeCellDown, computeSplitCell, CHART_TYPE_OPTIONS, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, addSmartArtNodeAsChild, removeSmartArtNode, addSiblingAfter, removeEmptyNode, demote, promote, reorder, clampCropValue, DUOTONE_PRESETS, ARTISTIC_EFFECTS, resolveActionType, ELEMENT_ACTION_TYPE_OPTIONS, toSlideIndex, elementActionToPptxAction, canCommitActionType, slideSizeFromPreset, withSlideSizeOrientation, TRANSITION_DIR_ARROWS, buildDirectionGrid, updateTagInCollections, deleteTagFromCollections, addTagToCollections, commentTextSegments, COMMENT_MENTION_CLASS, COMMENT_MENTION_ATTRIBUTE, reorderAnimationTimelineRows, applyAnimationTimelineOrder, animationEffectLabel, LBL, SEL, FILL_MODE_OPTIONS, SECTION_HEADING, NUM, switchSmartArtLayout, SHAPE_QUICK_STYLES, quickStyleSwatchCss, getPatternSvg, TEXT_WARP_PRESETS, warpPreviewPath, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS, FILL_PATTERN_LABEL_KEYS, openNativeEyeDropper, toggleText3dExtrusion, BEVEL_PRESETS } from './chunk-ISDTM2V3.mjs';
1
+ import { computeFocusTargets, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, toRenderableParts } from './chunk-Z3DEULRJ.mjs';
2
+ import { useViewerOptions, useReducedMotion, useViewerState, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useLayoutSwitching, ViewerOptionsContext, useYjsDocumentSync, useCollaborationLivePatch, useFollowMode, useBroadcastFollower, scopeLayoutOptionsToActiveSlide, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, useCollaborativeState, useViewerOptionsContext, useVirtualizedSlides, useSwipeNavigation, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP } from './chunk-BZ6OM3H5.mjs';
3
+ import { MIN_ELEMENT_SIZE, DEFAULT_STROKE_COLOR, getConnectorPathGeometry, buildLineShadowCss, buildLineGlowFilter, renderConnectorMarker, getShapeVisualStyle, getTextStyleForElement, DEFAULT_TEXT_COLOR, renderVectorShape, isConnectorOrLineElement, build3DExtrusionData, getImageRenderStyle, cn, getTextLayoutStyle, renderTableElement, renderMediaElement, shouldRenderFallbackLabel, SHAPE_PRESETS, ANIMATION_PRESET_OPTIONS, DEFAULT_FILL_COLOR, hasDagDuotoneEffect, renderDagDuotoneSvgFilter, getCropShapeClipPath, getImageTilingStyle, getDuotoneColors, getTextWarpStyle, renderTextSegments, buildReactChartViewModel, renderChartElement, buildTextBody3DSceneStyle, SLIDE_NAV_THUMBNAIL_WIDTH, DEFAULT_TEXT_FONT_SIZE, DEFAULT_FONT_FAMILY, TOOLBAR_SECTIONS, DEFAULT_SECTION_GROUP_ID, SHORTCUT_REFERENCE_ITEMS as SHORTCUT_REFERENCE_ITEMS$1, HYPERLINK_COLOR, GRID_SIZE, CONNECTOR_ARROW_OPTIONS, ARROW_SIZE_OPTIONS, startMotionPathPreview, startPreviewAnimation, stopPreviewAnimation, THEME_COLOR_SWATCHES, STROKE_DASH_OPTIONS } from './chunk-ACVLIDUS.mjs';
4
+ import { LOCALE_CATALOG, translationsEn } from './chunk-ARJE3V6V.mjs';
5
+ import { hasShapeProperties, normalizeHexColor, colorWithOpacity, normalizeStrokeDashType, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, svgLineCap, hasTextProperties, getElementTransform, getAriaRoleDescription, getAriaLabel, getAriaRole, resolveElementInteractivity, isEditableTextElement, isElementRendered, isElementActionable, getImageEffectsOpacity, getImageEffectsFilter, inlineElementPointerEvents, isHollowShapeElement, LINK_TOOLTIP_HOST_CLASS, ACTION_BUTTON_PRESETS, mediaTransportVisible, isInkElement, getGroupChildParentFill, getElementLabel, SWITCHABLE_LAYOUT_TYPES, compileEquationTemplateMathMl, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, resolveAutosaveActivation, viewerOptionsToPreferences, applyPreferenceToOptions, listAutosaveSnapshots, deleteAutosaveSnapshot, resolveExpiredAutosaveSnapshots, resolveHistoryDepth, applyAutoCorrect, resolveImageResolutionScale, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, shouldShowAutosaveRecoveryPrompt, resolveOptionRootClasses, resolve3DRenderingFlags, paintedStrokeWidth, buildCssGradientFromShapeStyle, ensureActionAffordanceStyles, resolveElementActionAffordance, actionAffordanceLabels, getComputedEffectStyle, getSoftEdgeSvgFilter, buildStrokeOutline, buildHollowHitOutline, buildSubpathFillOverlay, isImageLikeElement, getComputedFillStyle, strokeOutlineViewBox, revealedSmartArtNodeCount, buildSmartArtA11y, computeSmartArtElementLayout, flattenNodes, buildSummaryZoomView, isImageTiled, getImageColorWashStyle, placeCaretAtEnd, getPendingSelectionRestore, restoreSegmentSelection, getTextCompensationTransform, resolveChartKind, ensureChartInteractionStyles, applyChartPartHighlight, applyChartBuildReveal, formatAxisValue, hasPressureVariation, getInkReplayStyles, INK_REPLAY_KEYFRAMES, resolveInkColor, resolveInkWidth, resolveInkOpacity, pressuresToWidths, getContentPartReplayStyles, resolveOleType, getOleAriaLabel, getOleTypeColor, getOleTypeLabel, filterRenderedElements, resolveGroupChildFill, isLinkedTextBox, getOverflowSegments, shouldUseSvgWarp, getTextBodyRotationTransform, RULER_THICKNESS, RULER_FONT_SIZE, buildPreviewElements, deriveSlideFieldContext, SLIDE_TRANSITION_OPTIONS, hiddenSlideCue, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, themeToCssVars, shouldClearAutosaveCacheOnClose, applyMotionPathPreset, resetSlideLayoutPath, DEFAULT_INSERT_CHART_KIND, hasCopyableFormat, templateSchemeFromTheme, createBackstagePresentation, playFeedbackSound, shouldDiscardAutosaveOnSuccessfulSave, setMasterViewBackgroundColor, printPropertiesFrameSlides, printPropertiesSlidesPerPage, VIEWER_OPTIONS_TABS, DEFAULT_QUICK_ACCESS_COMMAND_IDS, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, ACTION_INDICATOR_CLASS, ACTION_INDICATOR_ICON_PATH, LINK_TOOLTIP_CLASS, LINK_TOOLTIP_PANEL_CLASS, LINK_TOOLTIP_LABEL_CLASS, LINK_TOOLTIP_HINT_CLASS, DEFAULT_PALETTE2, resolvePalette, computeDrawingViewBox, projectDrawingShapes, styleShadowFilter, resolveDrawingShapeNodeId, buildChromeStyle, getImageSvgFilters, buildDuotoneCacheKey, getDuotoneCachedResult, applyDuotone, setDuotoneCachedResult, buildCacheKey, DEFAULT_COLOR_CHANGE_TOLERANCE, getCachedResult, applyColorChange, setCachedResult, findChartPartTarget, advanceChartValueDrag, beginChartValueDrag, buildSurfaceChart3DDataForElement, buildBarChart3DDataForElement, buildLineChart3DDataForElement, buildAreaChart3DDataForElement, buildPieChart3DDataForElement, withChartTitle, buildSmartArt3DModel, extractPathPoints, generatePressureCircles, generateNibMarks, isBrowserOpenableMime, formatBytes, getOleDisplayName, getOleBadgeLabel, openUrlInNewTab, getSubstituteFontFamily, getWarpPath, getSlideBackgroundStyle, filterCommands, resolveTitleBarStatusKey, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, resolveScreenTip, masterViewBackgroundColor, buildFieldSubstitutionContext, shouldConfirmExternalHyperlink, safeOpenUrl, resolvePresentationAction, isPpactionUrl, parsePpactionUrl, isPresentationAdvanceClick, toggleBlackboard, PRESENT_TOOLBAR_CLASSES, buildContextMenuEntries, themeColorSchemesEqual, EXPANDED_MAX_HEIGHT, STATUS_BAR_CLASSES, buildBarActions, formatVersionTimestamp, formatRelativeTime, scanAvailableFontFamilies, PRESETS, CATEGORIES, convertOmmlToLatex, compileLatexEquation, convertLatexToOmml, EQUATION_TEMPLATES, clampPercent, resolveDefaultPrintSettings, HANDOUT_OPTIONS, TOOLBAR_TABS, SHORTCUT_REFERENCE_ITEMS, resolveViewerAddinRows, availableQuickAccessCommands, addQuickAccessCommand, removeQuickAccessCommand, moveQuickAccessCommand, CUSTOM_FONT_ACCEPT, activateModalFocus, buildCollaborationShareUrl, buildActiveSessionUsers, SORTER_MIN_ZOOM, SORTER_ZOOM_STEP, SORTER_MAX_ZOOM, canGoPrevious, formatSlideCounter, READING_VIEW_COUNTER_ATTR, canGoNext, READING_VIEW_ATTR, OUTLINE_LEVEL_ATTR, OUTLINE_SLIDE_ATTR, OUTLINE_ROW_ATTR, OUTLINE_VIEW_ATTR, mobileElapsedSince, nextPresentedSlide, presenterPrevDisabled, presenterNextDisabled, formatMobileElapsed, mobileSlideCounter, presenterPaneAdvancesOnClick, presenterTimerProgress, PRESENTER_CONSOLE_CLASSES, formatElapsed, centeredSvgTextLines, computeInlineEditorRect, findSmartArtNodeText, setSmartArtNodeStyle, rebuildDrawingShapesIfCleared, shouldCommitSmartArtNodeText, updateSmartArtNodeText, groupIntoParagraphs, substituteFieldText, extraQuickAccessCommands, TAB_ROW_ACTION_CLASSES, listBackstageRecentFiles, BACKSTAGE_NAV, INSERT_CHART_TYPES, CHARACTER_SPACING_OPTIONS, RIBBON_SHAPE_SWATCHES, shapeFillChange, shapeOutlineChange, readRibbonTransitionDraft, ribbonTransitionUpdates, readSoundFileAsDataUrl, applyTransitionSoundFile, playSlideTransitionPreview, RIBBON_TRANSITION_PRESETS, transitionSoundOptions, transitionSoundSelectedValue, DEFAULT_MOTION_PATH_PRESET_ID, SLIDE_SHOW_OPTIONS, slideShowOptionChange, readSlideShowOption, SLIDE_VIRTUALIZATION_THRESHOLD, PRESENTATION_HIT_TEST_CSS, PRESENTATION_STAGE_ATTRIBUTE, getSlideTransitionAnimations, MORPH_CROSSFADE_GROUP_STYLE, MORPH_CROSSFADE_HALF_STYLE, SLIDE_TRANSITION_KEYFRAMES, annotationOverlayZIndex, presentationInkPath, resolveNotesSchematicBodyFontSizePx, motionPathFor, setMotionPath, getShapeAdjustmentHandleDescriptors, PRESENTER_NAVIGATOR_LABEL_KEYS, PEN_COLORS, HIGHLIGHTER_COLORS, isBlackboardActive, slideSizeToCanvasPx, resolveSelectionPaneRename, PRESET_THEMES, resolveNotesSegments, segmentsToEditorHtml, DEBOUNCE_MS, createPlainNotesSegments, parseSegmentsFromRichEditor, segmentsToPlainText, getCurrentParagraphIndex, segmentsToParagraphs, paragraphsToSegments, MAX_INDENT_LEVEL, INDENT_PX, isUrlSafe, buildNotesPrintHtml, toggleSheet, sanitizeMathMl, computeHandoutLayout, getPrintableArea, generateNoteLineCount, computeAllNotesPages, getNotesPrintableArea, downloadBlob, clampOptionNumber, QUICK_ACCESS_COMMAND_CATALOG, registerCustomFont, openReadingView, applyReadingViewCommand, createPresentationKeyBuffer, readingViewFitScale, READING_VIEW_STAGE_ATTR, buildOutline, applyOutlineEdit, mapOutlineKey, notesSegmentsToSpans, erasePresentationInkAt, movePresenterPointer, appendPresentationInkPoint, PRESENTER_CONSOLE_CONTROLS, NOTES_FONT_SIZE_DEFAULT, formatTime, NOTES_FONT_SIZE_MIN, clampNotesFontSize, NOTES_FONT_SIZE_STEP, NOTES_FONT_SIZE_MAX, BACKSTAGE_TEMPLATES, formatBackstageDate, formatBackstageSize, backstageCardsFor, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, resolveDefaultFontFamily, buildFontCatalog, TRANSITION_SOUND_OTHER_VALUE, TRANSITION_SOUND_NONE_VALUE, clearTransitionSound, ENTRANCE_PRESET_VALUES, EMPHASIS_PRESET_VALUES, EXIT_PRESET_VALUES, MOTION_PATH_FAMILIES, motionPathFamilyLabelKey, motionPathPresetsByFamily, motionPathPresetLabelKey, masterViewPseudoSlide, authorConnectorBetweenSites, findEraserHitElementId, generateTicks, rulerDragToGuidePosition, getElementTransformWithoutRotation, buildCommentMarkers, COMMENT_MARKER_SIZE, collectConnectorSiteCandidates, getConnectorEndpointHandles, findConnectorSiteNear, motionPathToSvgD, motionPathEndPixel, isEditableMotionPath, setMotionPathEnd, themeColorLabel, buildThemeColorGrid, THEME_COLOR_SCHEME_KEYS, COMMON_FONTS, buildSmartArtPresetData, handleReadingViewKey, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, isCurrentLayout, SLIDE_TEMPLATES, computeAnchoredPopupPosition, CONNECTOR_SITE_SNAP_PX, resolveConnectorEndpointUpdate, withConnectorEndpointUpdate, getShapeConnectionSites, isElementLocked, mergeSlideTransition, mapSlideSorterKey, isEditorTextInputTarget, clampSorterZoom, buildLayoutPreviewGeometry, buildSlideTemplateContent, elementLockTogglePatch, buildTableDataGrid, appendTableElementRow, removeLastTableElementRow, appendTableElementColumn, removeLastTableElementColumn, removeTableElementColumn, removeTableElementRow, setTableElementCellText, TABLE_STYLE_PRESETS, applyTableStylePreset, evenColumnWidths, redistributeColumnWidth, evenRowHeights, patchChartData, setChartCategoryLabel, setChartCellValue, addChartCategory, removeChartCategory, addChartSeries, removeChartSeries, setChartAxisLogScale, setChartAxisTitleStyle, setChartAxisGridlineStyle, setChartSeriesMarker, setChartSeriesChartType, setChartDataPointFill, setChartDataPointExplosion, setChartDataPointMarker, setChartDataPointLabel, describeSmartArtBounds, canAddTopLevelNode, classifyExtraConnections, siblingIndex, siblingCount, canRemoveTopLevelNode, buildOleObjectNamePatch, getOleObjectTypeLabel, sanitizeGradientStops, pptxActionToElementAction, withFrameSlides, withSlidesPerPage, applyThemeOverrideToSlide, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, schemaLabel, THEME_COLOR_SLOT_LABEL_KEYS, resolveSlideSizeSelection, SLIDE_SIZE_PRESETS, TRANSITION_VALID_DIRECTIONS, TRANSITION_ORIENTATION_TYPES, clampTransitionNumber, TRANSITION_SPEED_OPTIONS, TRANSITION_MORPH_OPTIONS, flattenTagCollections, resolveTemplateBackgroundRows, formatCommentTimestamp, buildAnimationTimelineRows, clearMotionPath, getEffectSoundState, setEffectSound, setAfterAnimation, setAfterAnimationColor, DIRECTIONAL_PRESETS, buildAnimationTimelineBars, motionPathPresetIdForPath, computeMergeCellRight, computeMergeCellDown, computeSplitCell, CHART_TYPE_OPTIONS, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, addSmartArtNodeAsChild, removeSmartArtNode, addSiblingAfter, removeEmptyNode, demote, promote, reorder, clampCropValue, DUOTONE_PRESETS, ARTISTIC_EFFECTS, resolveActionType, ELEMENT_ACTION_TYPE_OPTIONS, toSlideIndex, elementActionToPptxAction, canCommitActionType, slideSizeFromPreset, withSlideSizeOrientation, TRANSITION_DIR_ARROWS, buildDirectionGrid, updateTagInCollections, deleteTagFromCollections, addTagToCollections, commentTextSegments, COMMENT_MENTION_CLASS, COMMENT_MENTION_ATTRIBUTE, reorderAnimationTimelineRows, applyAnimationTimelineOrder, animationEffectLabel, LBL, SEL, FILL_MODE_OPTIONS, SECTION_HEADING, NUM, switchSmartArtLayout, SHAPE_QUICK_STYLES, quickStyleSwatchCss, getPatternSvg, TEXT_WARP_PRESETS, warpPreviewPath, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS, FILL_PATTERN_LABEL_KEYS, openNativeEyeDropper, toggleText3dExtrusion, BEVEL_PRESETS } from './chunk-SRAXNEJX.mjs';
6
6
  import React19, { createContext, useMemo, useState, useCallback, lazy, forwardRef, useEffect, useRef, Suspense, useLayoutEffect, useContext, Fragment as Fragment$1, useDeferredValue } from 'react';
7
7
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
8
8
  import { useTranslation } from 'react-i18next';
9
- import { LuRotateCw, LuMessageSquare, LuEyeOff, LuHistory, LuTrash2, LuSettings, LuX, LuCalendarDays, LuHash, LuText, LuCast, LuSave, LuUndo, LuRedo, LuSearch, LuShieldCheck, LuPlus, LuPanelLeftClose, LuStickyNote, LuMonitor, LuColumns2, LuPresentation, LuMinus, LuSettings2, LuLayers, LuClock, LuDownload, LuCheck, LuLock, LuEye, LuFileText, LuType, LuLoader, LuShieldAlert, LuSignature, LuInfo, LuTriangleAlert, LuPrinter, LuPenTool, LuBug, LuChevronUp, LuChevronDown, LuUpload, LuWifi, LuWifiOff, LuUsers, LuCopy, LuChevronLeft, LuChevronRight, LuPlay, LuPause, LuZoomOut, LuZoomIn, LuSpellCheck, LuFileDown, LuMenu, LuSparkles, LuShare2, LuPanelLeft, LuPanelRight, LuArrowLeft, LuFolderOpen, LuClipboardPaste, LuScissors, LuPaintbrush, LuSquare, LuImage, LuVideo, LuDatabase, LuAArrowUp, LuAArrowDown, LuRemoveFormatting, LuHighlighter, LuList, LuListOrdered, LuIndentDecrease, LuIndentIncrease, LuReplace, LuMousePointer2, LuShapes, LuPaintBucket, LuPenLine, LuPalette, LuPencil, LuStar, LuMoveRight, LuMousePointerClick, LuClock3, LuMonitorPlay, LuListVideo, LuCaptions, LuCamera, LuEraser, LuRotateCcw, LuCircleHelp, LuBookOpen, LuLanguages, LuGlobe, LuGitCompare, LuMessageSquarePlus, LuLockKeyhole, LuPanelTop, LuLayoutGrid, LuGrid3X3, LuPipette, LuRuler, LuMaximize2, LuCode, LuCaseSensitive, LuTimer, LuGripVertical, LuLoaderCircle, LuBold, LuItalic, LuUnderline, LuStrikethrough, LuLink, LuGrid2X2, LuCopyPlus, LuScan, LuMonitorOff, LuCirclePlay, LuCirclePause, LuArrowLeftRight, LuClipboardCopy, LuWand, LuTextCursorInput, LuFile, LuEllipsis, LuUserRound, LuFilePlus2, LuHouse, LuPackage, LuFileJson, LuBox, LuFileImage, LuUser, LuHardDrive, LuLogIn, LuLayoutTemplate, LuFolderPlus, LuAlignLeft, LuAlignCenter, LuAlignRight, LuAlignJustify, LuColumns3, LuSpline, LuAlignHorizontalSpaceAround, LuAlignVerticalSpaceAround, LuGroup, LuUngroup, LuMove, LuRadio, LuLockOpen, LuArrowDown, LuArrowUp, LuArrowRight, LuReply, LuBookmark } from 'react-icons/lu';
9
+ import { LuRotateCw, LuMessageSquare, LuEyeOff, LuHistory, LuTrash2, LuSettings, LuX, LuCalendarDays, LuHash, LuText, LuCast, LuSave, LuUndo, LuRedo, LuSearch, LuShieldCheck, LuPlus, LuPanelLeftClose, LuStickyNote, LuMonitor, LuColumns2, LuPresentation, LuMinus, LuSettings2, LuLayers, LuClock, LuDownload, LuCheck, LuLock, LuEye, LuFileText, LuType, LuLoader, LuShieldAlert, LuSignature, LuInfo, LuTriangleAlert, LuPrinter, LuPenTool, LuBug, LuChevronUp, LuChevronDown, LuUpload, LuWifi, LuWifiOff, LuUsers, LuCopy, LuChevronLeft, LuChevronRight, LuPlay, LuPause, LuZoomOut, LuZoomIn, LuSpellCheck, LuFileDown, LuMenu, LuSparkles, LuShare2, LuPanelLeft, LuPanelRight, LuArrowLeft, LuFolderOpen, LuClipboardPaste, LuScissors, LuPaintbrush, LuSquare, LuImage, LuVideo, LuDatabase, LuAArrowUp, LuAArrowDown, LuRemoveFormatting, LuHighlighter, LuList, LuListOrdered, LuIndentDecrease, LuIndentIncrease, LuReplace, LuMousePointer2, LuShapes, LuPaintBucket, LuPenLine, LuPalette, LuPencil, LuStar, LuMoveRight, LuMousePointerClick, LuClock3, LuMonitorPlay, LuListVideo, LuCaptions, LuCamera, LuEraser, LuRotateCcw, LuCircleHelp, LuBookOpen, LuLanguages, LuGlobe, LuGitCompare, LuMessageSquarePlus, LuLockKeyhole, LuPanelTop, LuLayoutGrid, LuGrid3X3, LuPipette, LuRuler, LuMaximize2, LuCode, LuCaseSensitive, LuTimer, LuGripVertical, LuLoaderCircle, LuBold, LuItalic, LuUnderline, LuStrikethrough, LuLink, LuGrid2X2, LuCopyPlus, LuScan, LuMonitorOff, LuCirclePlay, LuCirclePause, LuArrowLeftRight, LuClipboardCopy, LuWand, LuTextCursorInput, LuFile, LuEllipsis, LuUserRound, LuFilePlus2, LuHouse, LuFileJson, LuBox, LuFileImage, LuUser, LuHardDrive, LuLogIn, LuLayoutTemplate, LuFolderPlus, LuAlignLeft, LuAlignCenter, LuAlignRight, LuAlignJustify, LuColumns3, LuSpline, LuAlignHorizontalSpaceAround, LuAlignVerticalSpaceAround, LuGroup, LuUngroup, LuMove, LuRadio, LuLockOpen, LuArrowDown, LuArrowUp, LuArrowRight, LuReply, LuBookmark } from 'react-icons/lu';
10
10
 
11
11
  var ViewerThemeContext = createContext(void 0);
12
12
  function ViewerThemeProvider({ theme, children }) {
@@ -68,7 +68,11 @@ function RemoteUserCursors({
68
68
  children: visibleUsers.map((user) => /* @__PURE__ */ jsxs(
69
69
  "g",
70
70
  {
71
- transform: `translate(${user.cursorX}, ${user.cursorY})`,
71
+ style: {
72
+ transform: `translate(${user.cursorX}px, ${user.cursorY}px)`,
73
+ transition: "transform 90ms linear",
74
+ willChange: "transform"
75
+ },
72
76
  "data-testid": `remote-cursor-${user.clientId}`,
73
77
  "data-pptx-remote-cursor": user.clientId,
74
78
  children: [
@@ -510,7 +514,7 @@ function FailedToLoad() {
510
514
  var LazyArea3DChartScene = React19.lazy(
511
515
  async () => {
512
516
  try {
513
- return await import('./Area3DChartScene-W6SVC235.mjs');
517
+ return await import('./Area3DChartScene-KE434ERF.mjs');
514
518
  } catch {
515
519
  return { default: FailedToLoad };
516
520
  }
@@ -566,7 +570,7 @@ function FailedToLoad2() {
566
570
  var LazyBar3DChartScene = React19.lazy(
567
571
  async () => {
568
572
  try {
569
- return await import('./Bar3DChartScene-FCVUZIJ3.mjs');
573
+ return await import('./Bar3DChartScene-2KQABQZM.mjs');
570
574
  } catch {
571
575
  return { default: FailedToLoad2 };
572
576
  }
@@ -622,7 +626,7 @@ function FailedToLoad3() {
622
626
  var LazyLine3DChartScene = React19.lazy(
623
627
  async () => {
624
628
  try {
625
- return await import('./Line3DChartScene-MJXFXSPW.mjs');
629
+ return await import('./Line3DChartScene-K3BSK6BB.mjs');
626
630
  } catch {
627
631
  return { default: FailedToLoad3 };
628
632
  }
@@ -678,7 +682,7 @@ function FailedToLoad4() {
678
682
  var LazyPieChart3DScene = React19.lazy(
679
683
  async () => {
680
684
  try {
681
- return await import('./PieChart3DScene-UEVFZZVW.mjs');
685
+ return await import('./PieChart3DScene-NFRBKII7.mjs');
682
686
  } catch {
683
687
  return { default: FailedToLoad4 };
684
688
  }
@@ -734,7 +738,7 @@ function FailedToLoad5() {
734
738
  var LazySurfaceChart3DScene = React19.lazy(
735
739
  async () => {
736
740
  try {
737
- return await import('./SurfaceChart3DScene-WD65PAG4.mjs');
741
+ return await import('./SurfaceChart3DScene-UKIOTKJC.mjs');
738
742
  } catch {
739
743
  return { default: FailedToLoad5 };
740
744
  }
@@ -1351,8 +1355,8 @@ function ResizeHandles({
1351
1355
  onResizePointerDown(elementId, e, handle);
1352
1356
  };
1353
1357
  const startRotate = (btn, pointerId) => {
1354
- const wrapper = btn.closest(
1355
- "[data-pptx-selection-handle-host], [data-element-id]"
1358
+ const wrapper = document.querySelector(
1359
+ `[data-element-id="${elementId}"]`
1356
1360
  );
1357
1361
  if (!wrapper) {
1358
1362
  return;
@@ -2923,7 +2927,7 @@ function FailedToLoad6() {
2923
2927
  var LazyModel3DScene = React19.lazy(
2924
2928
  async () => {
2925
2929
  try {
2926
- return await import('./Model3DScene-A5RV3KNJ.mjs');
2930
+ return await import('./Model3DScene-NT5RRIB5.mjs');
2927
2931
  } catch {
2928
2932
  return { default: FailedToLoad6 };
2929
2933
  }
@@ -5504,11 +5508,6 @@ var OV = [
5504
5508
  labelKey: "pptx.ribbon.exportGif",
5505
5509
  i: /* @__PURE__ */ jsx(LuImage, { className: `${ics} text-muted-foreground` })
5506
5510
  },
5507
- {
5508
- k: "package",
5509
- labelKey: "pptx.file.packageTooltip",
5510
- i: /* @__PURE__ */ jsx(LuFolderOpen, { className: `${ics} text-muted-foreground` })
5511
- },
5512
5511
  {
5513
5512
  k: "pptx",
5514
5513
  labelKey: "pptx.file.saveAsPptxTooltip",
@@ -6158,7 +6157,7 @@ function AccountPage() {
6158
6157
  return void 0;
6159
6158
  });
6160
6159
  };
6161
- const version = "3.1.0" ;
6160
+ const version = "3.1.2" ;
6162
6161
  return /* @__PURE__ */ jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
6163
6162
  /* @__PURE__ */ jsxs("section", { className: cardClass, children: [
6164
6163
  /* @__PURE__ */ jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
@@ -6337,7 +6336,6 @@ var ICONS = {
6337
6336
  saveAsPptx: LuDownload,
6338
6337
  saveAsPpsx: LuPlay,
6339
6338
  saveAsPptm: LuFileText,
6340
- package: LuPackage,
6341
6339
  pdf: LuFileText,
6342
6340
  png: LuFileImage,
6343
6341
  video: LuVideo,
@@ -6345,8 +6343,7 @@ var ICONS = {
6345
6343
  json: LuFileJson,
6346
6344
  copyImage: LuCopy,
6347
6345
  print: LuPrinter,
6348
- share: LuShare2,
6349
- sharePackage: LuPackage
6346
+ share: LuShare2
6350
6347
  };
6351
6348
  function BackstageCards({
6352
6349
  page,
@@ -6363,7 +6360,6 @@ function BackstageCards({
6363
6360
  saveAsPptx: props.onSaveAsPptx,
6364
6361
  saveAsPpsx: props.onSaveAsPpsx,
6365
6362
  saveAsPptm: props.onSaveAsPptm,
6366
- package: props.onPackageForSharing,
6367
6363
  pdf: props.onExportPdf,
6368
6364
  png: props.onExportPng,
6369
6365
  video: props.onExportVideo,
@@ -6371,8 +6367,7 @@ function BackstageCards({
6371
6367
  json: props.onExportJson,
6372
6368
  copyImage: props.onCopySlideAsImage,
6373
6369
  print: props.onPrint,
6374
- share: props.onOpenShareDialog,
6375
- sharePackage: props.onPackageForSharing
6370
+ share: props.onOpenShareDialog
6376
6371
  };
6377
6372
  const cards = backstageCardsFor(page).filter(
6378
6373
  (card) => card.id !== "saveAsPptm" || props.hasMacros
@@ -6421,8 +6416,8 @@ function FileSection(p) {
6421
6416
  const { isHidden } = useToolbarVisibility(p.hiddenActions);
6422
6417
  const exportHidden = isHidden("export");
6423
6418
  useEffect(() => {
6424
- void listBackstageRecentFiles(t).then(setRecent);
6425
- }, [t]);
6419
+ void listBackstageRecentFiles(t, p.recentPresentationsCount).then(setRecent);
6420
+ }, [t, p.recentPresentationsCount]);
6426
6421
  const visibleRecent = useMemo(() => {
6427
6422
  const q = query.trim().toLowerCase();
6428
6423
  return q ? recent.filter((file) => `${file.name} ${file.location}`.toLowerCase().includes(q)) : recent;
@@ -9302,7 +9297,6 @@ function MobileSectionBody({
9302
9297
  onExportVideo: p.onExportVideo,
9303
9298
  onExportGif: p.onExportGif,
9304
9299
  onExportJson: p.onExportJson,
9305
- onPackageForSharing: p.onPackageForSharing,
9306
9300
  onSaveAsPptx: p.onSaveAsPptx,
9307
9301
  onSaveAsPpsx: p.onSaveAsPpsx,
9308
9302
  onSaveAsPptm: p.onSaveAsPptm,
@@ -9316,7 +9310,8 @@ function MobileSectionBody({
9316
9310
  onOpenFontEmbedding: p.onOpenFontEmbedding,
9317
9311
  onOpenDigitalSignatures: p.onOpenDigitalSignatures,
9318
9312
  onOpenVersionHistory: p.onToggleVersionHistory,
9319
- hiddenActions: p.hiddenActions
9313
+ hiddenActions: p.hiddenActions,
9314
+ recentPresentationsCount: p.recentPresentationsCount
9320
9315
  }
9321
9316
  ) });
9322
9317
  default:
@@ -9413,7 +9408,7 @@ function MobileToolbar(props) {
9413
9408
  "button",
9414
9409
  {
9415
9410
  type: "button",
9416
- onClick: props.onOpenShareDialog ?? props.onPackageForSharing,
9411
+ onClick: props.onOpenShareDialog,
9417
9412
  className: cn(btn, "bg-primary text-white hover:bg-primary/90 px-3"),
9418
9413
  title: t("pptx.toolbar.share"),
9419
9414
  "aria-label": t("pptx.toolbar.share"),
@@ -9814,7 +9809,7 @@ function TabRowActions(p) {
9814
9809
  "button",
9815
9810
  {
9816
9811
  type: "button",
9817
- onClick: p.onOpenShareDialog ?? p.onPackageForSharing,
9812
+ onClick: p.onOpenShareDialog,
9818
9813
  className: cn(
9819
9814
  "relative inline-flex items-center gap-1 px-2.5 py-1 rounded-sm text-[11px] font-medium transition-colors whitespace-nowrap",
9820
9815
  isCollaborating ? "bg-green-600 hover:bg-green-500 text-white" : "bg-primary hover:bg-primary/90 text-white"
@@ -9829,6 +9824,44 @@ function TabRowActions(p) {
9829
9824
  )
9830
9825
  ] });
9831
9826
  }
9827
+ var QUICK_ACCESS_ICONS = {
9828
+ save: LuSave,
9829
+ undo: LuUndo,
9830
+ redo: LuRedo,
9831
+ play: LuPlay,
9832
+ printer: LuPrinter,
9833
+ fileDown: LuFileDown,
9834
+ plus: LuPlus,
9835
+ spellCheck: LuSpellCheck,
9836
+ zoomIn: LuZoomIn,
9837
+ zoomOut: LuZoomOut
9838
+ };
9839
+ function TitleBarQuickExtras(p) {
9840
+ const { t } = useTranslation();
9841
+ if (!p.quickAccess.visible) {
9842
+ return null;
9843
+ }
9844
+ const commands = extraQuickAccessCommands(p.quickAccess.commandIds);
9845
+ if (commands.length === 0) {
9846
+ return null;
9847
+ }
9848
+ return /* @__PURE__ */ jsx(Fragment, { children: commands.map((command) => {
9849
+ const Icon = QUICK_ACCESS_ICONS[command.icon] ?? LuPlay;
9850
+ const label = t(command.labelKey);
9851
+ return /* @__PURE__ */ jsx(
9852
+ "button",
9853
+ {
9854
+ type: "button",
9855
+ onClick: () => p.onCommand?.(command.id),
9856
+ className: TITLE_BAR_CLASSES.quickButton,
9857
+ title: label,
9858
+ "aria-label": label,
9859
+ children: /* @__PURE__ */ jsx(Icon, { className: "w-3.5 h-3.5" })
9860
+ },
9861
+ command.id
9862
+ );
9863
+ }) });
9864
+ }
9832
9865
  function PresentDropdown({
9833
9866
  isActive,
9834
9867
  onPresent,
@@ -10028,7 +10061,6 @@ function OverflowMenu(p) {
10028
10061
  pdf: p.onExportPdf,
10029
10062
  video: p.onExportVideo,
10030
10063
  gif: p.onExportGif,
10031
- package: p.onPackageForSharing,
10032
10064
  pptx: p.onSaveAsPptx,
10033
10065
  ppsx: p.onSaveAsPpsx,
10034
10066
  pptm: p.onSaveAsPptm,
@@ -10211,7 +10243,16 @@ function ToolbarPrimaryRow(p) {
10211
10243
  children: /* @__PURE__ */ jsx(LuSettings, { className: ics })
10212
10244
  }
10213
10245
  ),
10214
- !canEdit && /* @__PURE__ */ jsx("span", { className: "inline-flex items-center px-2 py-0.5 rounded-sm bg-amber-600/90 text-[10px] text-amber-50", children: t("pptx.toolbar.readOnly") }),
10246
+ !canEdit && p.isProtectedView && p.onEnableEditing ? /* @__PURE__ */ jsx(
10247
+ "button",
10248
+ {
10249
+ type: "button",
10250
+ onClick: p.onEnableEditing,
10251
+ className: "inline-flex items-center px-2 py-0.5 rounded-sm bg-amber-600/90 text-[10px] text-amber-50 transition-colors hover:bg-amber-600",
10252
+ title: t("pptx.options.trust.protectedViewInfo"),
10253
+ children: t("pptx.security.enableEditing")
10254
+ }
10255
+ ) : !canEdit && /* @__PURE__ */ jsx("span", { className: "inline-flex items-center px-2 py-0.5 rounded-sm bg-amber-600/90 text-[10px] text-amber-50", children: t("pptx.toolbar.readOnly") }),
10215
10256
  /* @__PURE__ */ jsx(OverflowMenu, { ...p })
10216
10257
  ] });
10217
10258
  }
@@ -10219,6 +10260,7 @@ function Toolbar(p) {
10219
10260
  const { mode, isNarrowViewport, isCompactToolbarOpen, toolbarSection, onSetToolbarSection } = p;
10220
10261
  const { t } = useTranslation();
10221
10262
  const { isTabVisible } = useToolbarVisibility(p.hiddenActions);
10263
+ const viewerOptions = useViewerOptionsContext();
10222
10264
  if (isNarrowViewport && mode !== "present") {
10223
10265
  return /* @__PURE__ */ jsx(MobileToolbar, { ...p });
10224
10266
  }
@@ -10257,6 +10299,7 @@ function Toolbar(p) {
10257
10299
  type: "button",
10258
10300
  role: "tab",
10259
10301
  "aria-selected": toolbarSection === s.id,
10302
+ title: resolveScreenTip(viewerOptions, t(s.labelKey)),
10260
10303
  onClick: () => onSetToolbarSection(s.id),
10261
10304
  className: cn(
10262
10305
  "relative px-3.5 py-2 text-[12px] font-medium whitespace-nowrap transition-colors max-md:min-h-[36px] max-md:px-3",
@@ -10272,7 +10315,6 @@ function Toolbar(p) {
10272
10315
  {
10273
10316
  onEnterRehearsalMode: p.canEdit ? p.onEnterRehearsalMode : void 0,
10274
10317
  onOpenShareDialog: p.onOpenShareDialog,
10275
- onPackageForSharing: p.onPackageForSharing,
10276
10318
  hiddenActions: p.hiddenActions
10277
10319
  }
10278
10320
  ),
@@ -10294,10 +10336,29 @@ function Toolbar(p) {
10294
10336
  ]
10295
10337
  }
10296
10338
  ),
10339
+ showRibbon && viewerOptions.quickAccess.position === "below" && /* @__PURE__ */ jsx("div", { className: "flex items-center gap-0.5 border-b border-border/60 px-2 py-1", children: /* @__PURE__ */ jsx(
10340
+ TitleBarQuickExtras,
10341
+ {
10342
+ quickAccess: viewerOptions.quickAccess,
10343
+ onCommand: p.onQuickCommand
10344
+ }
10345
+ ) }),
10297
10346
  showRibbon && /* @__PURE__ */ jsxs(
10298
10347
  "div",
10299
10348
  {
10300
10349
  className: cn(
10350
+ /*
10351
+ * `items-stretch` (not `items-center`): `RibbonGroup` pins its
10352
+ * caption to `bottom-0.5` of ITS OWN box (`position: relative`), so
10353
+ * a group left at its un-stretched intrinsic height sits centered in
10354
+ * the row with its caption floating well above the row's true bottom
10355
+ * edge whenever a taller sibling sets the row's height (e.g. View's
10356
+ * five-row "Show" group next to its two-row "Zoom" group). Stretching
10357
+ * every direct child to the row's full height lines up every group's
10358
+ * caption and right-hand divider at the same baseline. File's
10359
+ * backstage is unaffected: it renders `position: fixed`, outside this
10360
+ * row's flex layout entirely.
10361
+ */
10301
10362
  "flex min-h-[82px] items-stretch gap-0 overflow-x-auto px-1 py-0.5 max-md:min-h-0 max-md:px-1 max-md:py-0.5 flex-nowrap [&>*]:shrink-0",
10302
10363
  isNarrowViewport && !isCompactToolbarOpen && "hidden"
10303
10364
  ),
@@ -10315,7 +10376,6 @@ function Toolbar(p) {
10315
10376
  onExportVideo: p.onExportVideo,
10316
10377
  onExportGif: p.onExportGif,
10317
10378
  onExportJson: p.onExportJson,
10318
- onPackageForSharing: p.onPackageForSharing,
10319
10379
  onSaveAsPptx: p.onSaveAsPptx,
10320
10380
  onSaveAsPpsx: p.onSaveAsPpsx,
10321
10381
  onSaveAsPptm: p.onSaveAsPptm,
@@ -10329,7 +10389,8 @@ function Toolbar(p) {
10329
10389
  onOpenFontEmbedding: p.onOpenFontEmbedding,
10330
10390
  onOpenDigitalSignatures: p.onOpenDigitalSignatures,
10331
10391
  onOpenVersionHistory: p.onToggleVersionHistory,
10332
- hiddenActions: p.hiddenActions
10392
+ hiddenActions: p.hiddenActions,
10393
+ recentPresentationsCount: p.recentPresentationsCount
10333
10394
  }
10334
10395
  ),
10335
10396
  sHome && /* @__PURE__ */ jsx(
@@ -11393,6 +11454,17 @@ function SelectionHandleOverlay({
11393
11454
  top: element.y,
11394
11455
  width: Math.max(element.width, MIN_ELEMENT_SIZE),
11395
11456
  height: Math.max(element.height, MIN_ELEMENT_SIZE),
11457
+ // Every slide element carries an explicit numeric `zIndex` (see
11458
+ // `getContainerStyle`), so a sibling with no z-index at all paints
11459
+ // at the CSS "z-index: 0" level regardless of DOM order: any
11460
+ // element other than the very bottom one (index 0) then renders
11461
+ // ABOVE this host, hiding its own resize/rotate handles behind its
11462
+ // own fill (worst on a rotated shape, where the rotate knob
11463
+ // deliberately overlaps the box) and stealing their clicks. Pinned
11464
+ // above the stage's other interaction overlays
11465
+ // (marquee z-50, connector overlay z-55/56) to match, well clear of
11466
+ // any realistic per-slide element count.
11467
+ zIndex: 58,
11396
11468
  transform: getElementTransform(element),
11397
11469
  transformOrigin: "center",
11398
11470
  // Transparent everywhere a handle button is not, so a click that
@@ -12197,14 +12269,14 @@ function SlideCanvas({
12197
12269
  {
12198
12270
  ref: zoom.canvasViewportRef,
12199
12271
  "data-pptx-viewport": true,
12200
- className: "flex-1 overflow-auto relative",
12272
+ className: "flex-1 flex overflow-auto relative",
12201
12273
  style: { touchAction: "pan-x pan-y" },
12202
12274
  onMouseDown: handleViewportMouseDown,
12203
12275
  children: /* @__PURE__ */ jsxs(
12204
12276
  "div",
12205
12277
  {
12206
12278
  ref: zoom.editWrapperRef,
12207
- className: "relative mx-auto my-4",
12279
+ className: "relative m-auto",
12208
12280
  style: {
12209
12281
  width: canvasSize.width * zoom.editorScale + rulerOffset,
12210
12282
  height: canvasSize.height * zoom.editorScale + rulerOffset
@@ -22039,6 +22111,7 @@ function ChartTypeSelector({
22039
22111
  }
22040
22112
  function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
22041
22113
  const chartData = selectedElement.chartData;
22114
+ const followDataPoint = useViewerOptionsContext().advanced.chartPropertiesFollowDataPoint;
22042
22115
  const { selection: partSelection } = useChartPartSelection();
22043
22116
  const canvasPart = partSelection?.elementId === selectedElement.id ? partSelection.part : null;
22044
22117
  const title = chartData?.title;
@@ -22159,12 +22232,12 @@ function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
22159
22232
  }, [chartData, replaceChartData]);
22160
22233
  const removeCategory = useCallback(
22161
22234
  (catIndex) => {
22162
- const next = chartData && removeChartCategory(chartData, catIndex);
22235
+ const next = chartData && removeChartCategory(chartData, catIndex, followDataPoint);
22163
22236
  if (next) {
22164
22237
  replaceChartData(next);
22165
22238
  }
22166
22239
  },
22167
- [chartData, replaceChartData]
22240
+ [chartData, followDataPoint, replaceChartData]
22168
22241
  );
22169
22242
  const addSeries = useCallback(() => {
22170
22243
  if (chartData) {
@@ -31188,10 +31261,15 @@ function PrintDialog({
31188
31261
  }) {
31189
31262
  const { t } = useTranslation();
31190
31263
  const { panelStyle, handlers: dragHandlers } = useModalDismissDrag(onClose);
31191
- const [printWhat, setPrintWhat] = useState("slides");
31264
+ const printOptionDefaults = resolveDefaultPrintSettings(useViewerOptionsContext());
31265
+ const [printWhat, setPrintWhat] = useState(printOptionDefaults?.printWhat ?? "slides");
31192
31266
  const [orientation, setOrientation] = useState("landscape");
31193
- const [colorMode, setColorMode] = useState("color");
31194
- const [frameSlides, setFrameSlides] = useState(defaultFrameSlides ?? false);
31267
+ const [colorMode, setColorMode] = useState(
31268
+ printOptionDefaults?.colorMode ?? "color"
31269
+ );
31270
+ const [frameSlides, setFrameSlides] = useState(
31271
+ printOptionDefaults?.frameSlides ?? defaultFrameSlides ?? false
31272
+ );
31195
31273
  const [slidesPerPage, setSlidesPerPage] = useState(
31196
31274
  HANDOUT_OPTIONS.includes(defaultSlidesPerPage) ? defaultSlidesPerPage : 6
31197
31275
  );
@@ -31250,7 +31328,10 @@ function PrintDialog({
31250
31328
  slidesPerPage,
31251
31329
  slideRange,
31252
31330
  customRangeFrom: Math.max(1, Math.min(customFrom, slides.length)),
31253
- customRangeTo: Math.max(1, Math.min(customTo, slides.length))
31331
+ customRangeTo: Math.max(1, Math.min(customTo, slides.length)),
31332
+ // Options > Advanced > "Print scale to fit"; no dialog control of its
31333
+ // own (PowerPoint keeps this an Options default, not a per-job choice).
31334
+ scaleToFit: printOptionDefaults?.scaleToFit ?? true
31254
31335
  });
31255
31336
  }, [
31256
31337
  printWhat,
@@ -31262,6 +31343,7 @@ function PrintDialog({
31262
31343
  customFrom,
31263
31344
  customTo,
31264
31345
  slides.length,
31346
+ printOptionDefaults?.scaleToFit,
31265
31347
  onPrint
31266
31348
  ]);
31267
31349
  if (!open) {
@@ -32025,8 +32107,9 @@ function ActiveSessionView({
32025
32107
  onCopyRoomId,
32026
32108
  onStopCollaboration
32027
32109
  }) {
32028
- const { t } = useTranslation(), statusColor = collab.status === "connected" ? "text-green-400" : collab.status === "connecting" ? "text-yellow-400" : "text-red-400", statusIcon = collab.status === "connected" || collab.status === "connecting" ? /* @__PURE__ */ jsx(LuWifi, { className: "w-4 h-4" }) : /* @__PURE__ */ jsx(LuWifiOff, { className: "w-4 h-4" }), sessionUsers = buildActiveSessionUsers({
32110
+ const { t } = useTranslation(), viewerOptions = useViewerOptionsContext(), statusColor = collab.status === "connected" ? "text-green-400" : collab.status === "connecting" ? "text-yellow-400" : "text-red-400", statusIcon = collab.status === "connected" || collab.status === "connecting" ? /* @__PURE__ */ jsx(LuWifi, { className: "w-4 h-4" }) : /* @__PURE__ */ jsx(LuWifiOff, { className: "w-4 h-4" }), sessionUsers = buildActiveSessionUsers({
32029
32111
  localUserName: activeCollaboration?.userName ?? collab.config.userName,
32112
+ localUserInitials: viewerOptions.general.userInitials,
32030
32113
  localUserColor: collab.config.userColor,
32031
32114
  remoteUsers: collab.remoteUsers
32032
32115
  });
@@ -32995,48 +33078,6 @@ function ViewerInspector({
32995
33078
  }
32996
33079
  );
32997
33080
  }
32998
- var ViewerOptionsContext = createContext(DEFAULT_VIEWER_OPTIONS);
32999
- function useViewerOptionsContext() {
33000
- return useContext(ViewerOptionsContext);
33001
- }
33002
- var QUICK_ACCESS_ICONS = {
33003
- save: LuSave,
33004
- undo: LuUndo,
33005
- redo: LuRedo,
33006
- play: LuPlay,
33007
- printer: LuPrinter,
33008
- fileDown: LuFileDown,
33009
- plus: LuPlus,
33010
- spellCheck: LuSpellCheck,
33011
- zoomIn: LuZoomIn,
33012
- zoomOut: LuZoomOut
33013
- };
33014
- function TitleBarQuickExtras(p) {
33015
- const { t } = useTranslation();
33016
- if (!p.quickAccess.visible) {
33017
- return null;
33018
- }
33019
- const commands = extraQuickAccessCommands(p.quickAccess.commandIds);
33020
- if (commands.length === 0) {
33021
- return null;
33022
- }
33023
- return /* @__PURE__ */ jsx(Fragment, { children: commands.map((command) => {
33024
- const Icon = QUICK_ACCESS_ICONS[command.icon] ?? LuPlay;
33025
- const label = t(command.labelKey);
33026
- return /* @__PURE__ */ jsx(
33027
- "button",
33028
- {
33029
- type: "button",
33030
- onClick: () => p.onCommand?.(command.id),
33031
- className: TITLE_BAR_CLASSES.quickButton,
33032
- title: label,
33033
- "aria-label": label,
33034
- children: /* @__PURE__ */ jsx(Icon, { className: "w-3.5 h-3.5" })
33035
- },
33036
- command.id
33037
- );
33038
- }) });
33039
- }
33040
33081
  function TitleBar(p) {
33041
33082
  const { t } = useTranslation();
33042
33083
  const editing = (p.mode === "edit" || p.mode === "master") && p.canEdit;
@@ -33152,7 +33193,7 @@ function TitleBar(p) {
33152
33193
  children: /* @__PURE__ */ jsx(LuRedo, { className: "w-3.5 h-3.5" })
33153
33194
  }
33154
33195
  ),
33155
- /* @__PURE__ */ jsx(TitleBarQuickExtras, { quickAccess, onCommand: p.onQuickCommand }),
33196
+ quickAccess.position !== "below" && /* @__PURE__ */ jsx(TitleBarQuickExtras, { quickAccess, onCommand: p.onQuickCommand }),
33156
33197
  /* @__PURE__ */ jsx("div", { className: TITLE_BAR_CLASSES.separator })
33157
33198
  ] }),
33158
33199
  /* @__PURE__ */ jsxs("span", { className: TITLE_BAR_CLASSES.fileGroup, children: [
@@ -33278,9 +33319,12 @@ function ViewerToolbarSection(props) {
33278
33319
  autosaveEnabled = true,
33279
33320
  onToggleAutosave,
33280
33321
  hiddenActions,
33322
+ recentPresentationsCount,
33281
33323
  aiEnabled,
33282
33324
  isAiPanelOpen,
33283
- onToggleAiPanel
33325
+ onToggleAiPanel,
33326
+ isProtectedView,
33327
+ onEnableEditing
33284
33328
  } = props;
33285
33329
  const { t } = useTranslation();
33286
33330
  const handleAddAnimation = useCallback(
@@ -33558,7 +33602,11 @@ function ViewerToolbarSection(props) {
33558
33602
  fileName,
33559
33603
  mode,
33560
33604
  canEdit,
33605
+ isProtectedView,
33606
+ onEnableEditing,
33607
+ onQuickCommand: handleQuickAccessCommand,
33561
33608
  hiddenActions,
33609
+ recentPresentationsCount,
33562
33610
  isNarrowViewport: dialogs.isNarrowViewport,
33563
33611
  isSidebarCollapsed: !s.isSlidesPaneOpen,
33564
33612
  isInspectorPaneOpen: s.isInspectorPaneOpen,
@@ -33648,7 +33696,6 @@ function ViewerToolbarSection(props) {
33648
33696
  onExportVideo: exportHandlers.handleExportVideo,
33649
33697
  onExportGif: exportHandlers.handleExportGif,
33650
33698
  onExportJson: exportHandlers.handleExportJson,
33651
- onPackageForSharing: exportHandlers.handlePackageForSharing,
33652
33699
  onOpenFile,
33653
33700
  onOpenRecentFile,
33654
33701
  onCreatePresentation: (templateId) => {
@@ -34352,7 +34399,7 @@ function ViewerDialogGroup(props) {
34352
34399
  {
34353
34400
  open: printHandlers.isPrintDialogOpen,
34354
34401
  onClose: () => printHandlers.setIsPrintDialogOpen(false),
34355
- onPrint: printHandlers.handlePrintWithSettings,
34402
+ onPrint: printHandlers.handlePrintSvg,
34356
34403
  slides,
34357
34404
  activeSlideIndex,
34358
34405
  defaultSlidesPerPage: printPropertiesSlidesPerPage(presentationProperties.printProperties),
@@ -34764,12 +34811,17 @@ ${url}`)) {
34764
34811
  const handleActionClick = useCallback(
34765
34812
  (_elementId, action) => {
34766
34813
  if (mode === "present") {
34814
+ const resolved = resolvePresentationAction(action, { slideCount: slides.length });
34815
+ if (resolved.intent.kind === "openUrl") {
34816
+ openExternalUrl(resolved.intent.url);
34817
+ return;
34818
+ }
34767
34819
  presentation.handlePresentationAction(action);
34768
34820
  } else if (action.url) {
34769
34821
  openExternalUrl(action.url);
34770
34822
  }
34771
34823
  },
34772
- [mode, presentation, openExternalUrl]
34824
+ [mode, presentation, openExternalUrl, slides.length]
34773
34825
  );
34774
34826
  const handleHyperlinkClick = useCallback(
34775
34827
  (url) => {
@@ -35168,7 +35220,7 @@ ${url}`)) {
35168
35220
  var AiChatPanel = lazy(async () => {
35169
35221
  const [{ useChat }, { default: Panel }] = await Promise.all([
35170
35222
  import('@ai-sdk/react'),
35171
- import('./AiChatPanel-EIENGCKW.mjs')
35223
+ import('./AiChatPanel-5JAQBLTU.mjs')
35172
35224
  ]);
35173
35225
  function BoundAiChatPanel(props) {
35174
35226
  return /* @__PURE__ */ jsx(Panel, { ...props, useChat });
@@ -38212,7 +38264,7 @@ var PowerPointViewer = forwardRef(
38212
38264
  fonts = [],
38213
38265
  filePath,
38214
38266
  fileName,
38215
- canEdit = false,
38267
+ canEdit: hostCanEdit = false,
38216
38268
  autosave: hostAutosave,
38217
38269
  autosaveIntervalMs: hostAutosaveIntervalMs,
38218
38270
  onContentChange,
@@ -38341,6 +38393,16 @@ var PowerPointViewer = forwardRef(
38341
38393
  }
38342
38394
  })();
38343
38395
  }, []);
38396
+ const { optionsStore, options: viewerOptions } = useViewerOptions();
38397
+ const [protectedViewOverridden, setProtectedViewOverridden] = useState(false);
38398
+ useEffect(() => {
38399
+ setProtectedViewOverridden(false);
38400
+ }, [content]);
38401
+ const isProtectedView = viewerOptions.trust.openInProtectedView && !protectedViewOverridden;
38402
+ const handleEnableEditing = useCallback(() => {
38403
+ setProtectedViewOverridden(true);
38404
+ }, []);
38405
+ const canEdit = hostCanEdit && !isProtectedView;
38344
38406
  const [isSettingsOpen, setIsSettingsOpen] = useState(false);
38345
38407
  const [isHeaderFooterOpen, setIsHeaderFooterOpen] = useState(false);
38346
38408
  const [autosaveEnabled, setAutosaveEnabled] = useState(true);
@@ -38412,7 +38474,6 @@ var PowerPointViewer = forwardRef(
38412
38474
  },
38413
38475
  [state, reducedMotion, toggleReducedMotion]
38414
38476
  );
38415
- const { optionsStore, options: viewerOptions } = useViewerOptions();
38416
38477
  const settingsRef = useRef(settings);
38417
38478
  settingsRef.current = settings;
38418
38479
  const handleSettingsChangeRef = useRef(handleSettingsChange);
@@ -38457,6 +38518,28 @@ var PowerPointViewer = forwardRef(
38457
38518
  await Promise.all(snapshots.map((entry) => deleteAutosaveSnapshot(entry.key)));
38458
38519
  })();
38459
38520
  }, []);
38521
+ useEffect(() => {
38522
+ void (async () => {
38523
+ try {
38524
+ const snapshots = await listAutosaveSnapshots();
38525
+ const expired = resolveExpiredAutosaveSnapshots(snapshots, viewerOptions);
38526
+ await Promise.all(expired.map((key) => deleteAutosaveSnapshot(key)));
38527
+ } catch {
38528
+ }
38529
+ })();
38530
+ }, []);
38531
+ useEffect(() => {
38532
+ const clearIfRequested = () => {
38533
+ if (shouldClearAutosaveCacheOnClose(viewerOptions)) {
38534
+ handleClearOptionsCache();
38535
+ }
38536
+ };
38537
+ window.addEventListener("beforeunload", clearIfRequested);
38538
+ return () => {
38539
+ window.removeEventListener("beforeunload", clearIfRequested);
38540
+ clearIfRequested();
38541
+ };
38542
+ }, [viewerOptions, handleClearOptionsCache]);
38460
38543
  const mobile = useIsMobile();
38461
38544
  const { isMobile, isTouchDevice, isVirtualKeyboardOpen } = mobile;
38462
38545
  const resizablePanels = useResizablePanels();
@@ -38502,6 +38585,9 @@ var PowerPointViewer = forwardRef(
38502
38585
  headerFooter: state.headerFooter,
38503
38586
  loading,
38504
38587
  error,
38588
+ // File > Options > Advanced > "Maximum number of undos", re-read every
38589
+ // render so a mid-session change reaches the undo stack.
38590
+ maxHistoryEntries: resolveHistoryDepth(viewerOptions),
38505
38591
  hasActivePointerInteraction,
38506
38592
  pointerCommitNonce: state.pointerCommitNonce,
38507
38593
  onDirty: markDocumentDirty,
@@ -38514,13 +38600,18 @@ var PowerPointViewer = forwardRef(
38514
38600
  setEditTemplateMode: state.setEditTemplateMode,
38515
38601
  setHeaderFooter: state.setHeaderFooter
38516
38602
  });
38517
- const { presentation, annotations, actionSoundHandlerRef } = usePresentationSetup({
38603
+ const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } = usePresentationSetup({
38518
38604
  mode,
38519
38605
  slides,
38520
38606
  visibleSlideIndexes,
38521
38607
  // File > Options > Advanced > "End with black slide". Off means the show
38522
38608
  // exits straight to the editor instead of raising the black end screen.
38523
38609
  endWithBlackSlide: viewerOptions.advanced.slideShowEndWithBlackSlide,
38610
+ // File > Options > Advanced > "Prompt to keep ink annotations when
38611
+ // exiting". Off skips the keep/discard dialog entirely.
38612
+ promptKeepInkAnnotations: viewerOptions.advanced.slideShowPromptKeepInkAnnotations,
38613
+ // File > Options > Advanced > "Show popup toolbar" while presenting.
38614
+ popupToolbarEnabled: viewerOptions.advanced.slideShowShowPopupToolbar,
38524
38615
  activeSlideIndex,
38525
38616
  containerRef,
38526
38617
  content,
@@ -38616,11 +38707,16 @@ var PowerPointViewer = forwardRef(
38616
38707
  canvasSize,
38617
38708
  dialogs,
38618
38709
  presentation,
38619
- userName: authorName ?? collaboration?.userName,
38620
- handlerRef: actionSoundHandlerRef
38710
+ // Comment/reply authorship: an explicit host `authorName` or an active
38711
+ // collaboration session's identity wins; otherwise fall back to the
38712
+ // user's own Options > General > "User name" before the generic "You".
38713
+ userName: authorName ?? collaboration?.userName ?? (viewerOptions.general.userName || void 0),
38714
+ handlerRef: actionSoundHandlerRef,
38715
+ // Options > Proofing > AutoCorrect, applied to committed inline-edit text.
38716
+ transformCommittedText: (text) => applyAutoCorrect(text, viewerOptions.proofing)
38621
38717
  });
38622
38718
  const {
38623
- exportHandlers,
38719
+ exportHandlers: rawExportHandlers,
38624
38720
  printHandlers,
38625
38721
  themeHandlers,
38626
38722
  propertyHandlers,
@@ -38656,7 +38752,20 @@ var PowerPointViewer = forwardRef(
38656
38752
  hostIntervalMs: hostAutosaveIntervalMs,
38657
38753
  optionsIntervalSeconds: resolveAutosaveIntervalSeconds(viewerOptions)
38658
38754
  }),
38755
+ // Trust Center > "Allow external content": core defaults this to false
38756
+ // (SSRF/privacy-safe), so only an explicit `true` here lets remote
38757
+ // http(s) image sources actually load.
38758
+ allowExternalImages: viewerOptions.trust.allowExternalContent,
38659
38759
  canEdit,
38760
+ promptKeepInkAnnotations: viewerOptions.advanced.slideShowPromptKeepInkAnnotations,
38761
+ // File > Options > Advanced > "Image Size and Quality" (do-not-compress /
38762
+ // default resolution), resolved to a raster-scale multiplier for
38763
+ // PNG/PDF export and copy-slide-as-image. Multiplied against the
38764
+ // pre-existing 2x baseline (not used outright) so the default "High
38765
+ // fidelity" preset (raw multiplier 1) keeps today's export quality
38766
+ // instead of silently downgrading it; the explicit ppi presets still
38767
+ // scale proportionally from that baseline. Mirrors the other bindings.
38768
+ imageExportScale: 2 * resolveImageResolutionScale(viewerOptions),
38660
38769
  mode,
38661
38770
  slides,
38662
38771
  activeSlide,
@@ -38674,6 +38783,26 @@ var PowerPointViewer = forwardRef(
38674
38783
  onSelectionChange,
38675
38784
  onSlideCountChange
38676
38785
  });
38786
+ const exportHandlers = useMemo(() => {
38787
+ const afterSuccessfulSave = (format) => {
38788
+ playFeedbackSound(viewerOptions);
38789
+ if (format === "pptx" && filePath && shouldDiscardAutosaveOnSuccessfulSave(viewerOptions)) {
38790
+ void deleteAutosaveSnapshot(filePath);
38791
+ }
38792
+ };
38793
+ const handleSaveAsFormat = async (format) => {
38794
+ await rawExportHandlers.handleSaveAsFormat(format);
38795
+ afterSuccessfulSave(format);
38796
+ };
38797
+ return {
38798
+ ...rawExportHandlers,
38799
+ handleSaveAsFormat,
38800
+ handleSaveAsPptx: () => void handleSaveAsFormat("pptx"),
38801
+ handleSaveAsPpsx: () => void handleSaveAsFormat("ppsx"),
38802
+ handleSaveAsPptm: () => void handleSaveAsFormat("pptm")
38803
+ };
38804
+ }, [rawExportHandlers, viewerOptions, filePath]);
38805
+ setExitModeHandler(handleSetMode);
38677
38806
  const handleTemplateElementsChanged = useCallback(
38678
38807
  (slideId, elements) => {
38679
38808
  state.setTemplateElementsBySlideId((prev) => ({ ...prev, [slideId]: elements }));
@@ -38739,13 +38868,21 @@ var PowerPointViewer = forwardRef(
38739
38868
  });
38740
38869
  const showSlidesPane = mode === "edit" && !isMobile && !dialogs.isNarrowViewport && state.isSlidesPaneOpen;
38741
38870
  const showMasterPane = mode === "master" && !isMobile && state.isSlidesPaneOpen;
38871
+ const addinStatus = {
38872
+ smartArt3d: smartArt3D && !viewerOptions.advanced.disable3DRendering,
38873
+ collaboration: Boolean(collaboration),
38874
+ locales: resolvedLocales.length > 1
38875
+ };
38742
38876
  const viewerContent = /* @__PURE__ */ jsxs(
38743
38877
  "div",
38744
38878
  {
38745
38879
  style: themeStyle,
38746
38880
  "data-pptx-viewer": "",
38747
38881
  "aria-busy": loading,
38748
- className: "h-full w-full bg-background text-foreground relative",
38882
+ className: cn(
38883
+ "h-full w-full bg-background text-foreground relative",
38884
+ ...resolveOptionRootClasses(viewerOptions, "pptx")
38885
+ ),
38749
38886
  children: [
38750
38887
  /* @__PURE__ */ jsx(
38751
38888
  "div",
@@ -38795,9 +38932,12 @@ var PowerPointViewer = forwardRef(
38795
38932
  }
38796
38933
  },
38797
38934
  hiddenActions,
38935
+ recentPresentationsCount: viewerOptions.advanced.recentPresentationsCount,
38798
38936
  aiEnabled: Boolean(ai),
38799
38937
  isAiPanelOpen: aiPanel.isOpen,
38800
- onToggleAiPanel: aiPanel.toggle
38938
+ onToggleAiPanel: aiPanel.toggle,
38939
+ isProtectedView,
38940
+ onEnableEditing: hostCanEdit ? handleEnableEditing : void 0
38801
38941
  }
38802
38942
  ),
38803
38943
  /* @__PURE__ */ jsx(
@@ -38935,6 +39075,7 @@ var PowerPointViewer = forwardRef(
38935
39075
  onQuickAccessCommandsChange: (commandIds) => optionsStore.setQuickAccessCommands(commandIds),
38936
39076
  onResetOptions: (group) => optionsStore.reset(group),
38937
39077
  onClearCache: handleClearOptionsCache,
39078
+ addinStatus,
38938
39079
  themeKey,
38939
39080
  availableThemes: themeCatalog,
38940
39081
  onSelectTheme: handleThemeChange,
@@ -39050,38 +39191,51 @@ var PowerPointViewer = forwardRef(
39050
39191
  ]
39051
39192
  }
39052
39193
  );
39053
- return /* @__PURE__ */ jsx(AccountAuthContext.Provider, { value: accountAuth, children: /* @__PURE__ */ jsx(SmartArt3DContext.Provider, { value: smartArt3D, children: /* @__PURE__ */ jsx(SurfaceChart3DContext.Provider, { value: surfaceChart3D, children: /* @__PURE__ */ jsx(BarChart3DContext.Provider, { value: barChart3D, children: /* @__PURE__ */ jsx(LineChart3DContext.Provider, { value: lineChart3D, children: /* @__PURE__ */ jsx(AreaChart3DContext.Provider, { value: areaChart3D, children: /* @__PURE__ */ jsx(PieChart3DContext.Provider, { value: pieChart3D, children: /* @__PURE__ */ jsx(ViewerThemeProvider, { theme: effectiveTheme, children: /* @__PURE__ */ jsxs(
39054
- CollaborationProvider,
39055
- {
39056
- config: collaboration,
39057
- canvasWidth: canvasSize.width,
39058
- canvasHeight: canvasSize.height,
39059
- children: [
39060
- /* @__PURE__ */ jsx(
39061
- CollaborationDocumentSync,
39062
- {
39063
- slides,
39064
- templateElementsBySlideId,
39065
- setSlides: state.setSlides,
39066
- config: collaboration,
39067
- content,
39068
- loadVersion,
39069
- loadOrigin,
39070
- livePatcher: state.livePatcher
39071
- }
39072
- ),
39073
- /* @__PURE__ */ jsx(
39074
- CollaborationFollowLayer,
39075
- {
39076
- activeSlideIndex,
39077
- setActiveSlideIndex: state.setActiveSlideIndex,
39078
- slideCount: slides.length
39079
- }
39080
- ),
39081
- viewerContent
39082
- ]
39083
- }
39084
- ) }) }) }) }) }) }) }) });
39194
+ const effective3D = resolve3DRenderingFlags(
39195
+ { smartArt3D, surfaceChart3D, barChart3D, lineChart3D, areaChart3D, pieChart3D },
39196
+ viewerOptions
39197
+ );
39198
+ return (
39199
+ // `ViewerOptionsContext` is how every deeply-nested chrome piece (the
39200
+ // toolbar, title bar, Quick Access strip, print dialog, canvas
39201
+ // hyperlink gate, share dialog) reads the live File > Options
39202
+ // snapshot without threading it through each intermediate prop list.
39203
+ // Nothing previously provided it, so every one of those consumers was
39204
+ // silently reading `DEFAULT_VIEWER_OPTIONS` forever, no matter what
39205
+ // the user changed in the Options dialog.
39206
+ /* @__PURE__ */ jsx(ViewerOptionsContext.Provider, { value: viewerOptions, children: /* @__PURE__ */ jsx(AccountAuthContext.Provider, { value: accountAuth, children: /* @__PURE__ */ jsx(SmartArt3DContext.Provider, { value: effective3D.smartArt3D, children: /* @__PURE__ */ jsx(SurfaceChart3DContext.Provider, { value: effective3D.surfaceChart3D, children: /* @__PURE__ */ jsx(BarChart3DContext.Provider, { value: effective3D.barChart3D, children: /* @__PURE__ */ jsx(LineChart3DContext.Provider, { value: effective3D.lineChart3D, children: /* @__PURE__ */ jsx(AreaChart3DContext.Provider, { value: effective3D.areaChart3D, children: /* @__PURE__ */ jsx(PieChart3DContext.Provider, { value: effective3D.pieChart3D, children: /* @__PURE__ */ jsx(ViewerThemeProvider, { theme: effectiveTheme, children: /* @__PURE__ */ jsxs(
39207
+ CollaborationProvider,
39208
+ {
39209
+ config: collaboration,
39210
+ canvasWidth: canvasSize.width,
39211
+ canvasHeight: canvasSize.height,
39212
+ children: [
39213
+ /* @__PURE__ */ jsx(
39214
+ CollaborationDocumentSync,
39215
+ {
39216
+ slides,
39217
+ templateElementsBySlideId,
39218
+ setSlides: state.setSlides,
39219
+ config: collaboration,
39220
+ content,
39221
+ loadVersion,
39222
+ loadOrigin,
39223
+ livePatcher: state.livePatcher
39224
+ }
39225
+ ),
39226
+ /* @__PURE__ */ jsx(
39227
+ CollaborationFollowLayer,
39228
+ {
39229
+ activeSlideIndex,
39230
+ setActiveSlideIndex: state.setActiveSlideIndex,
39231
+ slideCount: slides.length
39232
+ }
39233
+ ),
39234
+ viewerContent
39235
+ ]
39236
+ }
39237
+ ) }) }) }) }) }) }) }) }) })
39238
+ );
39085
39239
  }
39086
39240
  );
39087
39241
  PowerPointViewer.displayName = "PowerPointViewer";