pptx-react-viewer 3.1.0 → 3.1.2

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 (166) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/dist/{AiChatPanel-WVORGKRT.js → AiChatPanel-4EYZDQXM.js} +24 -24
  3. package/dist/AiChatPanel-4EYZDQXM.js.br +0 -0
  4. package/dist/AiChatPanel-4EYZDQXM.js.gz +0 -0
  5. package/dist/{AiChatPanel-5LCCN7FG.mjs → AiChatPanel-UCFQIWOQ.mjs} +4 -4
  6. package/dist/AiChatPanel-UCFQIWOQ.mjs.br +0 -0
  7. package/dist/AiChatPanel-UCFQIWOQ.mjs.gz +0 -0
  8. package/dist/{Area3DChartScene-W6UZTRDP.mjs → Area3DChartScene-PMYXO4MR.mjs} +1 -1
  9. package/dist/Area3DChartScene-PMYXO4MR.mjs.br +0 -0
  10. package/dist/Area3DChartScene-PMYXO4MR.mjs.gz +0 -0
  11. package/dist/{Area3DChartScene-DY5CSLE2.js → Area3DChartScene-YBMC6NKY.js} +2 -2
  12. package/dist/Area3DChartScene-YBMC6NKY.js.br +0 -0
  13. package/dist/Area3DChartScene-YBMC6NKY.js.gz +0 -0
  14. package/dist/{Bar3DChartScene-7HZSPYG4.js → Bar3DChartScene-75DCA2ZA.js} +2 -2
  15. package/dist/Bar3DChartScene-75DCA2ZA.js.br +0 -0
  16. package/dist/Bar3DChartScene-75DCA2ZA.js.gz +0 -0
  17. package/dist/{Bar3DChartScene-FCWQEQLH.mjs → Bar3DChartScene-CEOI6SU6.mjs} +1 -1
  18. package/dist/Bar3DChartScene-CEOI6SU6.mjs.br +0 -0
  19. package/dist/Bar3DChartScene-CEOI6SU6.mjs.gz +0 -0
  20. package/dist/{Line3DChartScene-EPPWQOHS.mjs → Line3DChartScene-EZZKWUZR.mjs} +1 -1
  21. package/dist/Line3DChartScene-EZZKWUZR.mjs.br +0 -0
  22. package/dist/Line3DChartScene-EZZKWUZR.mjs.gz +0 -0
  23. package/dist/{Line3DChartScene-BKO24WYO.js → Line3DChartScene-STGX6N6V.js} +2 -2
  24. package/dist/Line3DChartScene-STGX6N6V.js.br +0 -0
  25. package/dist/Line3DChartScene-STGX6N6V.js.gz +0 -0
  26. package/dist/{Model3DScene-JFVRE5VL.js → Model3DScene-DWRD63FH.js} +2 -2
  27. package/dist/Model3DScene-DWRD63FH.js.br +0 -0
  28. package/dist/Model3DScene-DWRD63FH.js.gz +0 -0
  29. package/dist/{Model3DScene-IAY33GO2.mjs → Model3DScene-FGQJKWL6.mjs} +1 -1
  30. package/dist/Model3DScene-FGQJKWL6.mjs.br +0 -0
  31. package/dist/Model3DScene-FGQJKWL6.mjs.gz +0 -0
  32. package/dist/{PieChart3DScene-ZP5TSL62.mjs → PieChart3DScene-DH6RSJO6.mjs} +1 -1
  33. package/dist/PieChart3DScene-DH6RSJO6.mjs.br +0 -0
  34. package/dist/PieChart3DScene-DH6RSJO6.mjs.gz +0 -0
  35. package/dist/{PieChart3DScene-IPH7GLKU.js → PieChart3DScene-R3Y7OVVO.js} +2 -2
  36. package/dist/PieChart3DScene-R3Y7OVVO.js.br +0 -0
  37. package/dist/PieChart3DScene-R3Y7OVVO.js.gz +0 -0
  38. package/dist/PowerPointViewer-Cl6jBPNw.d.ts.map +1 -1
  39. package/dist/{SurfaceChart3DScene-DOMJGPAD.mjs → SurfaceChart3DScene-BMBU5RKI.mjs} +1 -1
  40. package/dist/SurfaceChart3DScene-BMBU5RKI.mjs.br +0 -0
  41. package/dist/SurfaceChart3DScene-BMBU5RKI.mjs.gz +0 -0
  42. package/dist/{SurfaceChart3DScene-TGDBVJSW.js → SurfaceChart3DScene-UM5HA3VO.js} +2 -2
  43. package/dist/SurfaceChart3DScene-UM5HA3VO.js.br +0 -0
  44. package/dist/SurfaceChart3DScene-UM5HA3VO.js.gz +0 -0
  45. package/dist/{chunk-7JZLE56X.js → chunk-2HLDBQH7.js} +157 -157
  46. package/dist/chunk-2HLDBQH7.js.br +0 -0
  47. package/dist/chunk-2HLDBQH7.js.gz +0 -0
  48. package/dist/{chunk-VMLKJDA5.mjs → chunk-4VVOTEQ4.mjs} +359 -336
  49. package/dist/chunk-4VVOTEQ4.mjs.br +0 -0
  50. package/dist/chunk-4VVOTEQ4.mjs.gz +0 -0
  51. package/dist/{chunk-T7BAPZBY.js → chunk-7ZQ2FZXE.js} +305 -45
  52. package/dist/chunk-7ZQ2FZXE.js.br +0 -0
  53. package/dist/chunk-7ZQ2FZXE.js.gz +0 -0
  54. package/dist/{chunk-MKPSUHUH.mjs → chunk-ARJE3V6V.mjs} +5 -6
  55. package/dist/chunk-ARJE3V6V.mjs.br +0 -0
  56. package/dist/chunk-ARJE3V6V.mjs.gz +0 -0
  57. package/dist/{chunk-A5EUD6UU.js → chunk-MQEG5GOV.js} +1343 -1250
  58. package/dist/chunk-MQEG5GOV.js.br +0 -0
  59. package/dist/chunk-MQEG5GOV.js.gz +0 -0
  60. package/dist/{chunk-PQNZCSB7.mjs → chunk-O5DKWJDK.mjs} +1 -1
  61. package/dist/chunk-O5DKWJDK.mjs.br +0 -0
  62. package/dist/{chunk-PQNZCSB7.mjs.gz → chunk-O5DKWJDK.mjs.gz} +0 -0
  63. package/dist/{chunk-BP2L2KOZ.mjs → chunk-S546O4W2.mjs} +291 -45
  64. package/dist/chunk-S546O4W2.mjs.br +0 -0
  65. package/dist/chunk-S546O4W2.mjs.gz +0 -0
  66. package/dist/{chunk-PIUB7R2K.js → chunk-SWRY3SI5.js} +5 -6
  67. package/dist/chunk-SWRY3SI5.js.br +0 -0
  68. package/dist/chunk-SWRY3SI5.js.gz +0 -0
  69. package/dist/{chunk-TIEUZCYQ.mjs → chunk-VLLZ3QL2.mjs} +265 -172
  70. package/dist/chunk-VLLZ3QL2.mjs.br +0 -0
  71. package/dist/chunk-VLLZ3QL2.mjs.gz +0 -0
  72. package/dist/{chunk-SNWAM2XJ.mjs → chunk-W3J6SNVE.mjs} +2 -2
  73. package/dist/chunk-W3J6SNVE.mjs.br +0 -0
  74. package/dist/chunk-W3J6SNVE.mjs.gz +0 -0
  75. package/dist/{chunk-POAZ53L5.js → chunk-WVIKFMNS.js} +725 -704
  76. package/dist/chunk-WVIKFMNS.js.br +0 -0
  77. package/dist/chunk-WVIKFMNS.js.gz +0 -0
  78. package/dist/{chunk-VQVC27WL.js → chunk-YNUYFR2T.js} +3 -3
  79. package/dist/chunk-YNUYFR2T.js.br +0 -0
  80. package/dist/chunk-YNUYFR2T.js.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-5LCCN7FG.mjs.br +0 -0
  116. package/dist/AiChatPanel-5LCCN7FG.mjs.gz +0 -0
  117. package/dist/AiChatPanel-WVORGKRT.js.br +0 -0
  118. package/dist/AiChatPanel-WVORGKRT.js.gz +0 -0
  119. package/dist/Area3DChartScene-DY5CSLE2.js.br +0 -0
  120. package/dist/Area3DChartScene-DY5CSLE2.js.gz +0 -0
  121. package/dist/Area3DChartScene-W6UZTRDP.mjs.br +0 -0
  122. package/dist/Area3DChartScene-W6UZTRDP.mjs.gz +0 -0
  123. package/dist/Bar3DChartScene-7HZSPYG4.js.br +0 -0
  124. package/dist/Bar3DChartScene-7HZSPYG4.js.gz +0 -0
  125. package/dist/Bar3DChartScene-FCWQEQLH.mjs.br +0 -0
  126. package/dist/Bar3DChartScene-FCWQEQLH.mjs.gz +0 -0
  127. package/dist/Line3DChartScene-BKO24WYO.js.br +0 -0
  128. package/dist/Line3DChartScene-BKO24WYO.js.gz +0 -0
  129. package/dist/Line3DChartScene-EPPWQOHS.mjs.br +0 -0
  130. package/dist/Line3DChartScene-EPPWQOHS.mjs.gz +0 -0
  131. package/dist/Model3DScene-IAY33GO2.mjs.br +0 -0
  132. package/dist/Model3DScene-IAY33GO2.mjs.gz +0 -0
  133. package/dist/Model3DScene-JFVRE5VL.js.br +0 -0
  134. package/dist/Model3DScene-JFVRE5VL.js.gz +0 -0
  135. package/dist/PieChart3DScene-IPH7GLKU.js.br +0 -0
  136. package/dist/PieChart3DScene-IPH7GLKU.js.gz +0 -0
  137. package/dist/PieChart3DScene-ZP5TSL62.mjs.br +0 -0
  138. package/dist/PieChart3DScene-ZP5TSL62.mjs.gz +0 -0
  139. package/dist/SurfaceChart3DScene-DOMJGPAD.mjs.br +0 -0
  140. package/dist/SurfaceChart3DScene-DOMJGPAD.mjs.gz +0 -0
  141. package/dist/SurfaceChart3DScene-TGDBVJSW.js.br +0 -0
  142. package/dist/SurfaceChart3DScene-TGDBVJSW.js.gz +0 -0
  143. package/dist/chunk-7JZLE56X.js.br +0 -0
  144. package/dist/chunk-7JZLE56X.js.gz +0 -0
  145. package/dist/chunk-A5EUD6UU.js.br +0 -0
  146. package/dist/chunk-A5EUD6UU.js.gz +0 -0
  147. package/dist/chunk-BP2L2KOZ.mjs.br +0 -0
  148. package/dist/chunk-BP2L2KOZ.mjs.gz +0 -0
  149. package/dist/chunk-MKPSUHUH.mjs.br +0 -0
  150. package/dist/chunk-MKPSUHUH.mjs.gz +0 -0
  151. package/dist/chunk-PIUB7R2K.js.br +0 -0
  152. package/dist/chunk-PIUB7R2K.js.gz +0 -0
  153. package/dist/chunk-POAZ53L5.js.br +0 -0
  154. package/dist/chunk-POAZ53L5.js.gz +0 -0
  155. package/dist/chunk-PQNZCSB7.mjs.br +0 -0
  156. package/dist/chunk-SNWAM2XJ.mjs.br +0 -0
  157. package/dist/chunk-SNWAM2XJ.mjs.gz +0 -0
  158. package/dist/chunk-T7BAPZBY.js.br +0 -0
  159. package/dist/chunk-T7BAPZBY.js.gz +0 -0
  160. package/dist/chunk-TIEUZCYQ.mjs.br +0 -0
  161. package/dist/chunk-TIEUZCYQ.mjs.gz +0 -0
  162. package/dist/chunk-VMLKJDA5.mjs.br +0 -0
  163. package/dist/chunk-VMLKJDA5.mjs.gz +0 -0
  164. package/dist/chunk-VQVC27WL.js.br +0 -0
  165. package/dist/chunk-VQVC27WL.js.gz +0 -0
  166. package/dist/useViewerBuildingBlocks-DC1O_op4.d.ts.map +0 -1
@@ -1,12 +1,12 @@
1
- import { computeFocusTargets, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, toRenderableParts } from './chunk-PQNZCSB7.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-VMLKJDA5.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-SNWAM2XJ.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-BP2L2KOZ.mjs';
1
+ import { computeFocusTargets, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, toRenderableParts } from './chunk-O5DKWJDK.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-4VVOTEQ4.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-W3J6SNVE.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-S546O4W2.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 }) {
@@ -479,13 +479,38 @@ function useChartPartSelection() {
479
479
  return useContext(ChartPartSelectionContext);
480
480
  }
481
481
  var AreaChart3DContext = createContext(false);
482
+ function LoadingState({ className }) {
483
+ const { t } = useTranslation();
484
+ return /* @__PURE__ */ jsx(
485
+ "div",
486
+ {
487
+ role: "status",
488
+ "aria-live": "polite",
489
+ "aria-atomic": "true",
490
+ className: cn(
491
+ "h-full w-full flex items-center justify-center text-muted-foreground",
492
+ className
493
+ ),
494
+ children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
495
+ /* @__PURE__ */ jsx(
496
+ "div",
497
+ {
498
+ className: "animate-spin rounded-full h-6 w-6 border-b-2 border-primary",
499
+ "aria-hidden": "true"
500
+ }
501
+ ),
502
+ /* @__PURE__ */ jsx("span", { children: t("pptx.viewer.loading") })
503
+ ] })
504
+ }
505
+ );
506
+ }
482
507
  function FailedToLoad() {
483
508
  return null;
484
509
  }
485
510
  var LazyArea3DChartScene = React19.lazy(
486
511
  async () => {
487
512
  try {
488
- return await import('./Area3DChartScene-W6UZTRDP.mjs');
513
+ return await import('./Area3DChartScene-PMYXO4MR.mjs');
489
514
  } catch {
490
515
  return { default: FailedToLoad };
491
516
  }
@@ -530,9 +555,9 @@ function Area3DChartRenderer({ element }) {
530
555
  return svgFallback;
531
556
  }
532
557
  if (threeAvailable === null) {
533
- return svgFallback;
558
+ return /* @__PURE__ */ jsx(LoadingState, {});
534
559
  }
535
- return /* @__PURE__ */ jsx(SceneErrorBoundary, { fallback: svgFallback, children: /* @__PURE__ */ jsx(Suspense, { fallback: svgFallback, children: /* @__PURE__ */ jsx(LazyArea3DChartScene, { options }) }) });
560
+ return /* @__PURE__ */ jsx(SceneErrorBoundary, { fallback: svgFallback, children: /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx(LoadingState, {}), children: /* @__PURE__ */ jsx(LazyArea3DChartScene, { options }) }) });
536
561
  }
537
562
  var BarChart3DContext = createContext(false);
538
563
  function FailedToLoad2() {
@@ -541,7 +566,7 @@ function FailedToLoad2() {
541
566
  var LazyBar3DChartScene = React19.lazy(
542
567
  async () => {
543
568
  try {
544
- return await import('./Bar3DChartScene-FCWQEQLH.mjs');
569
+ return await import('./Bar3DChartScene-CEOI6SU6.mjs');
545
570
  } catch {
546
571
  return { default: FailedToLoad2 };
547
572
  }
@@ -586,9 +611,9 @@ function Bar3DChartRenderer({ element }) {
586
611
  return svgFallback;
587
612
  }
588
613
  if (threeAvailable === null) {
589
- return svgFallback;
614
+ return /* @__PURE__ */ jsx(LoadingState, {});
590
615
  }
591
- return /* @__PURE__ */ jsx(SceneErrorBoundary2, { fallback: svgFallback, children: /* @__PURE__ */ jsx(Suspense, { fallback: svgFallback, children: /* @__PURE__ */ jsx(LazyBar3DChartScene, { options }) }) });
616
+ return /* @__PURE__ */ jsx(SceneErrorBoundary2, { fallback: svgFallback, children: /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx(LoadingState, {}), children: /* @__PURE__ */ jsx(LazyBar3DChartScene, { options }) }) });
592
617
  }
593
618
  var LineChart3DContext = createContext(false);
594
619
  function FailedToLoad3() {
@@ -597,7 +622,7 @@ function FailedToLoad3() {
597
622
  var LazyLine3DChartScene = React19.lazy(
598
623
  async () => {
599
624
  try {
600
- return await import('./Line3DChartScene-EPPWQOHS.mjs');
625
+ return await import('./Line3DChartScene-EZZKWUZR.mjs');
601
626
  } catch {
602
627
  return { default: FailedToLoad3 };
603
628
  }
@@ -642,9 +667,9 @@ function Line3DChartRenderer({ element }) {
642
667
  return svgFallback;
643
668
  }
644
669
  if (threeAvailable === null) {
645
- return svgFallback;
670
+ return /* @__PURE__ */ jsx(LoadingState, {});
646
671
  }
647
- return /* @__PURE__ */ jsx(SceneErrorBoundary3, { fallback: svgFallback, children: /* @__PURE__ */ jsx(Suspense, { fallback: svgFallback, children: /* @__PURE__ */ jsx(LazyLine3DChartScene, { options }) }) });
672
+ return /* @__PURE__ */ jsx(SceneErrorBoundary3, { fallback: svgFallback, children: /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx(LoadingState, {}), children: /* @__PURE__ */ jsx(LazyLine3DChartScene, { options }) }) });
648
673
  }
649
674
  var PieChart3DContext = createContext(false);
650
675
  function FailedToLoad4() {
@@ -653,7 +678,7 @@ function FailedToLoad4() {
653
678
  var LazyPieChart3DScene = React19.lazy(
654
679
  async () => {
655
680
  try {
656
- return await import('./PieChart3DScene-ZP5TSL62.mjs');
681
+ return await import('./PieChart3DScene-DH6RSJO6.mjs');
657
682
  } catch {
658
683
  return { default: FailedToLoad4 };
659
684
  }
@@ -698,9 +723,9 @@ function PieChart3DRenderer({ element }) {
698
723
  return svgFallback;
699
724
  }
700
725
  if (threeAvailable === null) {
701
- return svgFallback;
726
+ return /* @__PURE__ */ jsx(LoadingState, {});
702
727
  }
703
- return /* @__PURE__ */ jsx(SceneErrorBoundary4, { fallback: svgFallback, children: /* @__PURE__ */ jsx(Suspense, { fallback: svgFallback, children: /* @__PURE__ */ jsx(LazyPieChart3DScene, { options }) }) });
728
+ return /* @__PURE__ */ jsx(SceneErrorBoundary4, { fallback: svgFallback, children: /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx(LoadingState, {}), children: /* @__PURE__ */ jsx(LazyPieChart3DScene, { options }) }) });
704
729
  }
705
730
  var SurfaceChart3DContext = createContext(false);
706
731
  function FailedToLoad5() {
@@ -709,7 +734,7 @@ function FailedToLoad5() {
709
734
  var LazySurfaceChart3DScene = React19.lazy(
710
735
  async () => {
711
736
  try {
712
- return await import('./SurfaceChart3DScene-DOMJGPAD.mjs');
737
+ return await import('./SurfaceChart3DScene-BMBU5RKI.mjs');
713
738
  } catch {
714
739
  return { default: FailedToLoad5 };
715
740
  }
@@ -756,9 +781,9 @@ function SurfaceChart3DRenderer({
756
781
  return svgFallback;
757
782
  }
758
783
  if (threeAvailable === null) {
759
- return svgFallback;
784
+ return /* @__PURE__ */ jsx(LoadingState, {});
760
785
  }
761
- return /* @__PURE__ */ jsx(SceneErrorBoundary5, { fallback: svgFallback, children: /* @__PURE__ */ jsx(Suspense, { fallback: svgFallback, children: /* @__PURE__ */ jsx(LazySurfaceChart3DScene, { options }) }) });
786
+ return /* @__PURE__ */ jsx(SceneErrorBoundary5, { fallback: svgFallback, children: /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx(LoadingState, {}), children: /* @__PURE__ */ jsx(LazySurfaceChart3DScene, { options }) }) });
762
787
  }
763
788
  function ChartElementView({
764
789
  element,
@@ -1326,8 +1351,8 @@ function ResizeHandles({
1326
1351
  onResizePointerDown(elementId, e, handle);
1327
1352
  };
1328
1353
  const startRotate = (btn, pointerId) => {
1329
- const wrapper = btn.closest(
1330
- "[data-pptx-selection-handle-host], [data-element-id]"
1354
+ const wrapper = document.querySelector(
1355
+ `[data-element-id="${elementId}"]`
1331
1356
  );
1332
1357
  if (!wrapper) {
1333
1358
  return;
@@ -2898,7 +2923,7 @@ function FailedToLoad6() {
2898
2923
  var LazyModel3DScene = React19.lazy(
2899
2924
  async () => {
2900
2925
  try {
2901
- return await import('./Model3DScene-IAY33GO2.mjs');
2926
+ return await import('./Model3DScene-FGQJKWL6.mjs');
2902
2927
  } catch {
2903
2928
  return { default: FailedToLoad6 };
2904
2929
  }
@@ -5479,11 +5504,6 @@ var OV = [
5479
5504
  labelKey: "pptx.ribbon.exportGif",
5480
5505
  i: /* @__PURE__ */ jsx(LuImage, { className: `${ics} text-muted-foreground` })
5481
5506
  },
5482
- {
5483
- k: "package",
5484
- labelKey: "pptx.file.packageTooltip",
5485
- i: /* @__PURE__ */ jsx(LuFolderOpen, { className: `${ics} text-muted-foreground` })
5486
- },
5487
5507
  {
5488
5508
  k: "pptx",
5489
5509
  labelKey: "pptx.file.saveAsPptxTooltip",
@@ -6133,7 +6153,7 @@ function AccountPage() {
6133
6153
  return void 0;
6134
6154
  });
6135
6155
  };
6136
- const version = "3.0.4" ;
6156
+ const version = "3.1.1" ;
6137
6157
  return /* @__PURE__ */ jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
6138
6158
  /* @__PURE__ */ jsxs("section", { className: cardClass, children: [
6139
6159
  /* @__PURE__ */ jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
@@ -6312,7 +6332,6 @@ var ICONS = {
6312
6332
  saveAsPptx: LuDownload,
6313
6333
  saveAsPpsx: LuPlay,
6314
6334
  saveAsPptm: LuFileText,
6315
- package: LuPackage,
6316
6335
  pdf: LuFileText,
6317
6336
  png: LuFileImage,
6318
6337
  video: LuVideo,
@@ -6320,8 +6339,7 @@ var ICONS = {
6320
6339
  json: LuFileJson,
6321
6340
  copyImage: LuCopy,
6322
6341
  print: LuPrinter,
6323
- share: LuShare2,
6324
- sharePackage: LuPackage
6342
+ share: LuShare2
6325
6343
  };
6326
6344
  function BackstageCards({
6327
6345
  page,
@@ -6338,7 +6356,6 @@ function BackstageCards({
6338
6356
  saveAsPptx: props.onSaveAsPptx,
6339
6357
  saveAsPpsx: props.onSaveAsPpsx,
6340
6358
  saveAsPptm: props.onSaveAsPptm,
6341
- package: props.onPackageForSharing,
6342
6359
  pdf: props.onExportPdf,
6343
6360
  png: props.onExportPng,
6344
6361
  video: props.onExportVideo,
@@ -6346,8 +6363,7 @@ function BackstageCards({
6346
6363
  json: props.onExportJson,
6347
6364
  copyImage: props.onCopySlideAsImage,
6348
6365
  print: props.onPrint,
6349
- share: props.onOpenShareDialog,
6350
- sharePackage: props.onPackageForSharing
6366
+ share: props.onOpenShareDialog
6351
6367
  };
6352
6368
  const cards = backstageCardsFor(page).filter(
6353
6369
  (card) => card.id !== "saveAsPptm" || props.hasMacros
@@ -6396,8 +6412,8 @@ function FileSection(p) {
6396
6412
  const { isHidden } = useToolbarVisibility(p.hiddenActions);
6397
6413
  const exportHidden = isHidden("export");
6398
6414
  useEffect(() => {
6399
- void listBackstageRecentFiles(t).then(setRecent);
6400
- }, [t]);
6415
+ void listBackstageRecentFiles(t, p.recentPresentationsCount).then(setRecent);
6416
+ }, [t, p.recentPresentationsCount]);
6401
6417
  const visibleRecent = useMemo(() => {
6402
6418
  const q = query.trim().toLowerCase();
6403
6419
  return q ? recent.filter((file) => `${file.name} ${file.location}`.toLowerCase().includes(q)) : recent;
@@ -9277,7 +9293,6 @@ function MobileSectionBody({
9277
9293
  onExportVideo: p.onExportVideo,
9278
9294
  onExportGif: p.onExportGif,
9279
9295
  onExportJson: p.onExportJson,
9280
- onPackageForSharing: p.onPackageForSharing,
9281
9296
  onSaveAsPptx: p.onSaveAsPptx,
9282
9297
  onSaveAsPpsx: p.onSaveAsPpsx,
9283
9298
  onSaveAsPptm: p.onSaveAsPptm,
@@ -9291,7 +9306,8 @@ function MobileSectionBody({
9291
9306
  onOpenFontEmbedding: p.onOpenFontEmbedding,
9292
9307
  onOpenDigitalSignatures: p.onOpenDigitalSignatures,
9293
9308
  onOpenVersionHistory: p.onToggleVersionHistory,
9294
- hiddenActions: p.hiddenActions
9309
+ hiddenActions: p.hiddenActions,
9310
+ recentPresentationsCount: p.recentPresentationsCount
9295
9311
  }
9296
9312
  ) });
9297
9313
  default:
@@ -9388,7 +9404,7 @@ function MobileToolbar(props) {
9388
9404
  "button",
9389
9405
  {
9390
9406
  type: "button",
9391
- onClick: props.onOpenShareDialog ?? props.onPackageForSharing,
9407
+ onClick: props.onOpenShareDialog,
9392
9408
  className: cn(btn, "bg-primary text-white hover:bg-primary/90 px-3"),
9393
9409
  title: t("pptx.toolbar.share"),
9394
9410
  "aria-label": t("pptx.toolbar.share"),
@@ -9789,7 +9805,7 @@ function TabRowActions(p) {
9789
9805
  "button",
9790
9806
  {
9791
9807
  type: "button",
9792
- onClick: p.onOpenShareDialog ?? p.onPackageForSharing,
9808
+ onClick: p.onOpenShareDialog,
9793
9809
  className: cn(
9794
9810
  "relative inline-flex items-center gap-1 px-2.5 py-1 rounded-sm text-[11px] font-medium transition-colors whitespace-nowrap",
9795
9811
  isCollaborating ? "bg-green-600 hover:bg-green-500 text-white" : "bg-primary hover:bg-primary/90 text-white"
@@ -9804,6 +9820,44 @@ function TabRowActions(p) {
9804
9820
  )
9805
9821
  ] });
9806
9822
  }
9823
+ var QUICK_ACCESS_ICONS = {
9824
+ save: LuSave,
9825
+ undo: LuUndo,
9826
+ redo: LuRedo,
9827
+ play: LuPlay,
9828
+ printer: LuPrinter,
9829
+ fileDown: LuFileDown,
9830
+ plus: LuPlus,
9831
+ spellCheck: LuSpellCheck,
9832
+ zoomIn: LuZoomIn,
9833
+ zoomOut: LuZoomOut
9834
+ };
9835
+ function TitleBarQuickExtras(p) {
9836
+ const { t } = useTranslation();
9837
+ if (!p.quickAccess.visible) {
9838
+ return null;
9839
+ }
9840
+ const commands = extraQuickAccessCommands(p.quickAccess.commandIds);
9841
+ if (commands.length === 0) {
9842
+ return null;
9843
+ }
9844
+ return /* @__PURE__ */ jsx(Fragment, { children: commands.map((command) => {
9845
+ const Icon = QUICK_ACCESS_ICONS[command.icon] ?? LuPlay;
9846
+ const label = t(command.labelKey);
9847
+ return /* @__PURE__ */ jsx(
9848
+ "button",
9849
+ {
9850
+ type: "button",
9851
+ onClick: () => p.onCommand?.(command.id),
9852
+ className: TITLE_BAR_CLASSES.quickButton,
9853
+ title: label,
9854
+ "aria-label": label,
9855
+ children: /* @__PURE__ */ jsx(Icon, { className: "w-3.5 h-3.5" })
9856
+ },
9857
+ command.id
9858
+ );
9859
+ }) });
9860
+ }
9807
9861
  function PresentDropdown({
9808
9862
  isActive,
9809
9863
  onPresent,
@@ -10003,7 +10057,6 @@ function OverflowMenu(p) {
10003
10057
  pdf: p.onExportPdf,
10004
10058
  video: p.onExportVideo,
10005
10059
  gif: p.onExportGif,
10006
- package: p.onPackageForSharing,
10007
10060
  pptx: p.onSaveAsPptx,
10008
10061
  ppsx: p.onSaveAsPpsx,
10009
10062
  pptm: p.onSaveAsPptm,
@@ -10186,7 +10239,16 @@ function ToolbarPrimaryRow(p) {
10186
10239
  children: /* @__PURE__ */ jsx(LuSettings, { className: ics })
10187
10240
  }
10188
10241
  ),
10189
- !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") }),
10242
+ !canEdit && p.isProtectedView && p.onEnableEditing ? /* @__PURE__ */ jsx(
10243
+ "button",
10244
+ {
10245
+ type: "button",
10246
+ onClick: p.onEnableEditing,
10247
+ 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",
10248
+ title: t("pptx.options.trust.protectedViewInfo"),
10249
+ children: t("pptx.security.enableEditing")
10250
+ }
10251
+ ) : !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") }),
10190
10252
  /* @__PURE__ */ jsx(OverflowMenu, { ...p })
10191
10253
  ] });
10192
10254
  }
@@ -10194,6 +10256,7 @@ function Toolbar(p) {
10194
10256
  const { mode, isNarrowViewport, isCompactToolbarOpen, toolbarSection, onSetToolbarSection } = p;
10195
10257
  const { t } = useTranslation();
10196
10258
  const { isTabVisible } = useToolbarVisibility(p.hiddenActions);
10259
+ const viewerOptions = useViewerOptionsContext();
10197
10260
  if (isNarrowViewport && mode !== "present") {
10198
10261
  return /* @__PURE__ */ jsx(MobileToolbar, { ...p });
10199
10262
  }
@@ -10232,6 +10295,7 @@ function Toolbar(p) {
10232
10295
  type: "button",
10233
10296
  role: "tab",
10234
10297
  "aria-selected": toolbarSection === s.id,
10298
+ title: resolveScreenTip(viewerOptions, t(s.labelKey)),
10235
10299
  onClick: () => onSetToolbarSection(s.id),
10236
10300
  className: cn(
10237
10301
  "relative px-3.5 py-2 text-[12px] font-medium whitespace-nowrap transition-colors max-md:min-h-[36px] max-md:px-3",
@@ -10247,7 +10311,6 @@ function Toolbar(p) {
10247
10311
  {
10248
10312
  onEnterRehearsalMode: p.canEdit ? p.onEnterRehearsalMode : void 0,
10249
10313
  onOpenShareDialog: p.onOpenShareDialog,
10250
- onPackageForSharing: p.onPackageForSharing,
10251
10314
  hiddenActions: p.hiddenActions
10252
10315
  }
10253
10316
  ),
@@ -10269,11 +10332,18 @@ function Toolbar(p) {
10269
10332
  ]
10270
10333
  }
10271
10334
  ),
10335
+ 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(
10336
+ TitleBarQuickExtras,
10337
+ {
10338
+ quickAccess: viewerOptions.quickAccess,
10339
+ onCommand: p.onQuickCommand
10340
+ }
10341
+ ) }),
10272
10342
  showRibbon && /* @__PURE__ */ jsxs(
10273
10343
  "div",
10274
10344
  {
10275
10345
  className: cn(
10276
- "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",
10346
+ "flex min-h-[82px] items-center 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",
10277
10347
  isNarrowViewport && !isCompactToolbarOpen && "hidden"
10278
10348
  ),
10279
10349
  children: [
@@ -10290,7 +10360,6 @@ function Toolbar(p) {
10290
10360
  onExportVideo: p.onExportVideo,
10291
10361
  onExportGif: p.onExportGif,
10292
10362
  onExportJson: p.onExportJson,
10293
- onPackageForSharing: p.onPackageForSharing,
10294
10363
  onSaveAsPptx: p.onSaveAsPptx,
10295
10364
  onSaveAsPpsx: p.onSaveAsPpsx,
10296
10365
  onSaveAsPptm: p.onSaveAsPptm,
@@ -10304,7 +10373,8 @@ function Toolbar(p) {
10304
10373
  onOpenFontEmbedding: p.onOpenFontEmbedding,
10305
10374
  onOpenDigitalSignatures: p.onOpenDigitalSignatures,
10306
10375
  onOpenVersionHistory: p.onToggleVersionHistory,
10307
- hiddenActions: p.hiddenActions
10376
+ hiddenActions: p.hiddenActions,
10377
+ recentPresentationsCount: p.recentPresentationsCount
10308
10378
  }
10309
10379
  ),
10310
10380
  sHome && /* @__PURE__ */ jsx(
@@ -12408,31 +12478,6 @@ function SlideCanvas({
12408
12478
  }
12409
12479
  );
12410
12480
  }
12411
- function LoadingState({ className }) {
12412
- const { t } = useTranslation();
12413
- return /* @__PURE__ */ jsx(
12414
- "div",
12415
- {
12416
- role: "status",
12417
- "aria-live": "polite",
12418
- "aria-atomic": "true",
12419
- className: cn(
12420
- "h-full w-full flex items-center justify-center text-muted-foreground",
12421
- className
12422
- ),
12423
- children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
12424
- /* @__PURE__ */ jsx(
12425
- "div",
12426
- {
12427
- className: "animate-spin rounded-full h-6 w-6 border-b-2 border-primary",
12428
- "aria-hidden": "true"
12429
- }
12430
- ),
12431
- /* @__PURE__ */ jsx("span", { children: t("pptx.viewer.loading") })
12432
- ] })
12433
- }
12434
- );
12435
- }
12436
12481
  function ErrorState({ className, error }) {
12437
12482
  return /* @__PURE__ */ jsx(
12438
12483
  "div",
@@ -22039,6 +22084,7 @@ function ChartTypeSelector({
22039
22084
  }
22040
22085
  function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
22041
22086
  const chartData = selectedElement.chartData;
22087
+ const followDataPoint = useViewerOptionsContext().advanced.chartPropertiesFollowDataPoint;
22042
22088
  const { selection: partSelection } = useChartPartSelection();
22043
22089
  const canvasPart = partSelection?.elementId === selectedElement.id ? partSelection.part : null;
22044
22090
  const title = chartData?.title;
@@ -22159,12 +22205,12 @@ function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
22159
22205
  }, [chartData, replaceChartData]);
22160
22206
  const removeCategory = useCallback(
22161
22207
  (catIndex) => {
22162
- const next = chartData && removeChartCategory(chartData, catIndex);
22208
+ const next = chartData && removeChartCategory(chartData, catIndex, followDataPoint);
22163
22209
  if (next) {
22164
22210
  replaceChartData(next);
22165
22211
  }
22166
22212
  },
22167
- [chartData, replaceChartData]
22213
+ [chartData, followDataPoint, replaceChartData]
22168
22214
  );
22169
22215
  const addSeries = useCallback(() => {
22170
22216
  if (chartData) {
@@ -31188,10 +31234,15 @@ function PrintDialog({
31188
31234
  }) {
31189
31235
  const { t } = useTranslation();
31190
31236
  const { panelStyle, handlers: dragHandlers } = useModalDismissDrag(onClose);
31191
- const [printWhat, setPrintWhat] = useState("slides");
31237
+ const printOptionDefaults = resolveDefaultPrintSettings(useViewerOptionsContext());
31238
+ const [printWhat, setPrintWhat] = useState(printOptionDefaults?.printWhat ?? "slides");
31192
31239
  const [orientation, setOrientation] = useState("landscape");
31193
- const [colorMode, setColorMode] = useState("color");
31194
- const [frameSlides, setFrameSlides] = useState(defaultFrameSlides ?? false);
31240
+ const [colorMode, setColorMode] = useState(
31241
+ printOptionDefaults?.colorMode ?? "color"
31242
+ );
31243
+ const [frameSlides, setFrameSlides] = useState(
31244
+ printOptionDefaults?.frameSlides ?? defaultFrameSlides ?? false
31245
+ );
31195
31246
  const [slidesPerPage, setSlidesPerPage] = useState(
31196
31247
  HANDOUT_OPTIONS.includes(defaultSlidesPerPage) ? defaultSlidesPerPage : 6
31197
31248
  );
@@ -31250,7 +31301,10 @@ function PrintDialog({
31250
31301
  slidesPerPage,
31251
31302
  slideRange,
31252
31303
  customRangeFrom: Math.max(1, Math.min(customFrom, slides.length)),
31253
- customRangeTo: Math.max(1, Math.min(customTo, slides.length))
31304
+ customRangeTo: Math.max(1, Math.min(customTo, slides.length)),
31305
+ // Options > Advanced > "Print scale to fit"; no dialog control of its
31306
+ // own (PowerPoint keeps this an Options default, not a per-job choice).
31307
+ scaleToFit: printOptionDefaults?.scaleToFit ?? true
31254
31308
  });
31255
31309
  }, [
31256
31310
  printWhat,
@@ -31262,6 +31316,7 @@ function PrintDialog({
31262
31316
  customFrom,
31263
31317
  customTo,
31264
31318
  slides.length,
31319
+ printOptionDefaults?.scaleToFit,
31265
31320
  onPrint
31266
31321
  ]);
31267
31322
  if (!open) {
@@ -32025,8 +32080,9 @@ function ActiveSessionView({
32025
32080
  onCopyRoomId,
32026
32081
  onStopCollaboration
32027
32082
  }) {
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({
32083
+ 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
32084
  localUserName: activeCollaboration?.userName ?? collab.config.userName,
32085
+ localUserInitials: viewerOptions.general.userInitials,
32030
32086
  localUserColor: collab.config.userColor,
32031
32087
  remoteUsers: collab.remoteUsers
32032
32088
  });
@@ -32995,48 +33051,6 @@ function ViewerInspector({
32995
33051
  }
32996
33052
  );
32997
33053
  }
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
33054
  function TitleBar(p) {
33041
33055
  const { t } = useTranslation();
33042
33056
  const editing = (p.mode === "edit" || p.mode === "master") && p.canEdit;
@@ -33152,7 +33166,7 @@ function TitleBar(p) {
33152
33166
  children: /* @__PURE__ */ jsx(LuRedo, { className: "w-3.5 h-3.5" })
33153
33167
  }
33154
33168
  ),
33155
- /* @__PURE__ */ jsx(TitleBarQuickExtras, { quickAccess, onCommand: p.onQuickCommand }),
33169
+ quickAccess.position !== "below" && /* @__PURE__ */ jsx(TitleBarQuickExtras, { quickAccess, onCommand: p.onQuickCommand }),
33156
33170
  /* @__PURE__ */ jsx("div", { className: TITLE_BAR_CLASSES.separator })
33157
33171
  ] }),
33158
33172
  /* @__PURE__ */ jsxs("span", { className: TITLE_BAR_CLASSES.fileGroup, children: [
@@ -33278,9 +33292,12 @@ function ViewerToolbarSection(props) {
33278
33292
  autosaveEnabled = true,
33279
33293
  onToggleAutosave,
33280
33294
  hiddenActions,
33295
+ recentPresentationsCount,
33281
33296
  aiEnabled,
33282
33297
  isAiPanelOpen,
33283
- onToggleAiPanel
33298
+ onToggleAiPanel,
33299
+ isProtectedView,
33300
+ onEnableEditing
33284
33301
  } = props;
33285
33302
  const { t } = useTranslation();
33286
33303
  const handleAddAnimation = useCallback(
@@ -33558,7 +33575,11 @@ function ViewerToolbarSection(props) {
33558
33575
  fileName,
33559
33576
  mode,
33560
33577
  canEdit,
33578
+ isProtectedView,
33579
+ onEnableEditing,
33580
+ onQuickCommand: handleQuickAccessCommand,
33561
33581
  hiddenActions,
33582
+ recentPresentationsCount,
33562
33583
  isNarrowViewport: dialogs.isNarrowViewport,
33563
33584
  isSidebarCollapsed: !s.isSlidesPaneOpen,
33564
33585
  isInspectorPaneOpen: s.isInspectorPaneOpen,
@@ -33648,7 +33669,6 @@ function ViewerToolbarSection(props) {
33648
33669
  onExportVideo: exportHandlers.handleExportVideo,
33649
33670
  onExportGif: exportHandlers.handleExportGif,
33650
33671
  onExportJson: exportHandlers.handleExportJson,
33651
- onPackageForSharing: exportHandlers.handlePackageForSharing,
33652
33672
  onOpenFile,
33653
33673
  onOpenRecentFile,
33654
33674
  onCreatePresentation: (templateId) => {
@@ -34352,7 +34372,7 @@ function ViewerDialogGroup(props) {
34352
34372
  {
34353
34373
  open: printHandlers.isPrintDialogOpen,
34354
34374
  onClose: () => printHandlers.setIsPrintDialogOpen(false),
34355
- onPrint: printHandlers.handlePrintWithSettings,
34375
+ onPrint: printHandlers.handlePrintSvg,
34356
34376
  slides,
34357
34377
  activeSlideIndex,
34358
34378
  defaultSlidesPerPage: printPropertiesSlidesPerPage(presentationProperties.printProperties),
@@ -34764,12 +34784,17 @@ ${url}`)) {
34764
34784
  const handleActionClick = useCallback(
34765
34785
  (_elementId, action) => {
34766
34786
  if (mode === "present") {
34787
+ const resolved = resolvePresentationAction(action, { slideCount: slides.length });
34788
+ if (resolved.intent.kind === "openUrl") {
34789
+ openExternalUrl(resolved.intent.url);
34790
+ return;
34791
+ }
34767
34792
  presentation.handlePresentationAction(action);
34768
34793
  } else if (action.url) {
34769
34794
  openExternalUrl(action.url);
34770
34795
  }
34771
34796
  },
34772
- [mode, presentation, openExternalUrl]
34797
+ [mode, presentation, openExternalUrl, slides.length]
34773
34798
  );
34774
34799
  const handleHyperlinkClick = useCallback(
34775
34800
  (url) => {
@@ -35168,7 +35193,7 @@ ${url}`)) {
35168
35193
  var AiChatPanel = lazy(async () => {
35169
35194
  const [{ useChat }, { default: Panel }] = await Promise.all([
35170
35195
  import('@ai-sdk/react'),
35171
- import('./AiChatPanel-5LCCN7FG.mjs')
35196
+ import('./AiChatPanel-UCFQIWOQ.mjs')
35172
35197
  ]);
35173
35198
  function BoundAiChatPanel(props) {
35174
35199
  return /* @__PURE__ */ jsx(Panel, { ...props, useChat });
@@ -38212,7 +38237,7 @@ var PowerPointViewer = forwardRef(
38212
38237
  fonts = [],
38213
38238
  filePath,
38214
38239
  fileName,
38215
- canEdit = false,
38240
+ canEdit: hostCanEdit = false,
38216
38241
  autosave: hostAutosave,
38217
38242
  autosaveIntervalMs: hostAutosaveIntervalMs,
38218
38243
  onContentChange,
@@ -38341,6 +38366,16 @@ var PowerPointViewer = forwardRef(
38341
38366
  }
38342
38367
  })();
38343
38368
  }, []);
38369
+ const { optionsStore, options: viewerOptions } = useViewerOptions();
38370
+ const [protectedViewOverridden, setProtectedViewOverridden] = useState(false);
38371
+ useEffect(() => {
38372
+ setProtectedViewOverridden(false);
38373
+ }, [content]);
38374
+ const isProtectedView = viewerOptions.trust.openInProtectedView && !protectedViewOverridden;
38375
+ const handleEnableEditing = useCallback(() => {
38376
+ setProtectedViewOverridden(true);
38377
+ }, []);
38378
+ const canEdit = hostCanEdit && !isProtectedView;
38344
38379
  const [isSettingsOpen, setIsSettingsOpen] = useState(false);
38345
38380
  const [isHeaderFooterOpen, setIsHeaderFooterOpen] = useState(false);
38346
38381
  const [autosaveEnabled, setAutosaveEnabled] = useState(true);
@@ -38412,7 +38447,6 @@ var PowerPointViewer = forwardRef(
38412
38447
  },
38413
38448
  [state, reducedMotion, toggleReducedMotion]
38414
38449
  );
38415
- const { optionsStore, options: viewerOptions } = useViewerOptions();
38416
38450
  const settingsRef = useRef(settings);
38417
38451
  settingsRef.current = settings;
38418
38452
  const handleSettingsChangeRef = useRef(handleSettingsChange);
@@ -38457,6 +38491,28 @@ var PowerPointViewer = forwardRef(
38457
38491
  await Promise.all(snapshots.map((entry) => deleteAutosaveSnapshot(entry.key)));
38458
38492
  })();
38459
38493
  }, []);
38494
+ useEffect(() => {
38495
+ void (async () => {
38496
+ try {
38497
+ const snapshots = await listAutosaveSnapshots();
38498
+ const expired = resolveExpiredAutosaveSnapshots(snapshots, viewerOptions);
38499
+ await Promise.all(expired.map((key) => deleteAutosaveSnapshot(key)));
38500
+ } catch {
38501
+ }
38502
+ })();
38503
+ }, []);
38504
+ useEffect(() => {
38505
+ const clearIfRequested = () => {
38506
+ if (shouldClearAutosaveCacheOnClose(viewerOptions)) {
38507
+ handleClearOptionsCache();
38508
+ }
38509
+ };
38510
+ window.addEventListener("beforeunload", clearIfRequested);
38511
+ return () => {
38512
+ window.removeEventListener("beforeunload", clearIfRequested);
38513
+ clearIfRequested();
38514
+ };
38515
+ }, [viewerOptions, handleClearOptionsCache]);
38460
38516
  const mobile = useIsMobile();
38461
38517
  const { isMobile, isTouchDevice, isVirtualKeyboardOpen } = mobile;
38462
38518
  const resizablePanels = useResizablePanels();
@@ -38502,6 +38558,9 @@ var PowerPointViewer = forwardRef(
38502
38558
  headerFooter: state.headerFooter,
38503
38559
  loading,
38504
38560
  error,
38561
+ // File > Options > Advanced > "Maximum number of undos", re-read every
38562
+ // render so a mid-session change reaches the undo stack.
38563
+ maxHistoryEntries: resolveHistoryDepth(viewerOptions),
38505
38564
  hasActivePointerInteraction,
38506
38565
  pointerCommitNonce: state.pointerCommitNonce,
38507
38566
  onDirty: markDocumentDirty,
@@ -38514,13 +38573,18 @@ var PowerPointViewer = forwardRef(
38514
38573
  setEditTemplateMode: state.setEditTemplateMode,
38515
38574
  setHeaderFooter: state.setHeaderFooter
38516
38575
  });
38517
- const { presentation, annotations, actionSoundHandlerRef } = usePresentationSetup({
38576
+ const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } = usePresentationSetup({
38518
38577
  mode,
38519
38578
  slides,
38520
38579
  visibleSlideIndexes,
38521
38580
  // File > Options > Advanced > "End with black slide". Off means the show
38522
38581
  // exits straight to the editor instead of raising the black end screen.
38523
38582
  endWithBlackSlide: viewerOptions.advanced.slideShowEndWithBlackSlide,
38583
+ // File > Options > Advanced > "Prompt to keep ink annotations when
38584
+ // exiting". Off skips the keep/discard dialog entirely.
38585
+ promptKeepInkAnnotations: viewerOptions.advanced.slideShowPromptKeepInkAnnotations,
38586
+ // File > Options > Advanced > "Show popup toolbar" while presenting.
38587
+ popupToolbarEnabled: viewerOptions.advanced.slideShowShowPopupToolbar,
38524
38588
  activeSlideIndex,
38525
38589
  containerRef,
38526
38590
  content,
@@ -38616,11 +38680,16 @@ var PowerPointViewer = forwardRef(
38616
38680
  canvasSize,
38617
38681
  dialogs,
38618
38682
  presentation,
38619
- userName: authorName ?? collaboration?.userName,
38620
- handlerRef: actionSoundHandlerRef
38683
+ // Comment/reply authorship: an explicit host `authorName` or an active
38684
+ // collaboration session's identity wins; otherwise fall back to the
38685
+ // user's own Options > General > "User name" before the generic "You".
38686
+ userName: authorName ?? collaboration?.userName ?? (viewerOptions.general.userName || void 0),
38687
+ handlerRef: actionSoundHandlerRef,
38688
+ // Options > Proofing > AutoCorrect, applied to committed inline-edit text.
38689
+ transformCommittedText: (text) => applyAutoCorrect(text, viewerOptions.proofing)
38621
38690
  });
38622
38691
  const {
38623
- exportHandlers,
38692
+ exportHandlers: rawExportHandlers,
38624
38693
  printHandlers,
38625
38694
  themeHandlers,
38626
38695
  propertyHandlers,
@@ -38656,7 +38725,20 @@ var PowerPointViewer = forwardRef(
38656
38725
  hostIntervalMs: hostAutosaveIntervalMs,
38657
38726
  optionsIntervalSeconds: resolveAutosaveIntervalSeconds(viewerOptions)
38658
38727
  }),
38728
+ // Trust Center > "Allow external content": core defaults this to false
38729
+ // (SSRF/privacy-safe), so only an explicit `true` here lets remote
38730
+ // http(s) image sources actually load.
38731
+ allowExternalImages: viewerOptions.trust.allowExternalContent,
38659
38732
  canEdit,
38733
+ promptKeepInkAnnotations: viewerOptions.advanced.slideShowPromptKeepInkAnnotations,
38734
+ // File > Options > Advanced > "Image Size and Quality" (do-not-compress /
38735
+ // default resolution), resolved to a raster-scale multiplier for
38736
+ // PNG/PDF export and copy-slide-as-image. Multiplied against the
38737
+ // pre-existing 2x baseline (not used outright) so the default "High
38738
+ // fidelity" preset (raw multiplier 1) keeps today's export quality
38739
+ // instead of silently downgrading it; the explicit ppi presets still
38740
+ // scale proportionally from that baseline. Mirrors the other bindings.
38741
+ imageExportScale: 2 * resolveImageResolutionScale(viewerOptions),
38660
38742
  mode,
38661
38743
  slides,
38662
38744
  activeSlide,
@@ -38674,6 +38756,26 @@ var PowerPointViewer = forwardRef(
38674
38756
  onSelectionChange,
38675
38757
  onSlideCountChange
38676
38758
  });
38759
+ const exportHandlers = useMemo(() => {
38760
+ const afterSuccessfulSave = (format) => {
38761
+ playFeedbackSound(viewerOptions);
38762
+ if (format === "pptx" && filePath && shouldDiscardAutosaveOnSuccessfulSave(viewerOptions)) {
38763
+ void deleteAutosaveSnapshot(filePath);
38764
+ }
38765
+ };
38766
+ const handleSaveAsFormat = async (format) => {
38767
+ await rawExportHandlers.handleSaveAsFormat(format);
38768
+ afterSuccessfulSave(format);
38769
+ };
38770
+ return {
38771
+ ...rawExportHandlers,
38772
+ handleSaveAsFormat,
38773
+ handleSaveAsPptx: () => void handleSaveAsFormat("pptx"),
38774
+ handleSaveAsPpsx: () => void handleSaveAsFormat("ppsx"),
38775
+ handleSaveAsPptm: () => void handleSaveAsFormat("pptm")
38776
+ };
38777
+ }, [rawExportHandlers, viewerOptions, filePath]);
38778
+ setExitModeHandler(handleSetMode);
38677
38779
  const handleTemplateElementsChanged = useCallback(
38678
38780
  (slideId, elements) => {
38679
38781
  state.setTemplateElementsBySlideId((prev) => ({ ...prev, [slideId]: elements }));
@@ -38739,13 +38841,21 @@ var PowerPointViewer = forwardRef(
38739
38841
  });
38740
38842
  const showSlidesPane = mode === "edit" && !isMobile && !dialogs.isNarrowViewport && state.isSlidesPaneOpen;
38741
38843
  const showMasterPane = mode === "master" && !isMobile && state.isSlidesPaneOpen;
38844
+ const addinStatus = {
38845
+ smartArt3d: smartArt3D && !viewerOptions.advanced.disable3DRendering,
38846
+ collaboration: Boolean(collaboration),
38847
+ locales: resolvedLocales.length > 1
38848
+ };
38742
38849
  const viewerContent = /* @__PURE__ */ jsxs(
38743
38850
  "div",
38744
38851
  {
38745
38852
  style: themeStyle,
38746
38853
  "data-pptx-viewer": "",
38747
38854
  "aria-busy": loading,
38748
- className: "h-full w-full bg-background text-foreground relative",
38855
+ className: cn(
38856
+ "h-full w-full bg-background text-foreground relative",
38857
+ ...resolveOptionRootClasses(viewerOptions, "pptx")
38858
+ ),
38749
38859
  children: [
38750
38860
  /* @__PURE__ */ jsx(
38751
38861
  "div",
@@ -38795,9 +38905,12 @@ var PowerPointViewer = forwardRef(
38795
38905
  }
38796
38906
  },
38797
38907
  hiddenActions,
38908
+ recentPresentationsCount: viewerOptions.advanced.recentPresentationsCount,
38798
38909
  aiEnabled: Boolean(ai),
38799
38910
  isAiPanelOpen: aiPanel.isOpen,
38800
- onToggleAiPanel: aiPanel.toggle
38911
+ onToggleAiPanel: aiPanel.toggle,
38912
+ isProtectedView,
38913
+ onEnableEditing: hostCanEdit ? handleEnableEditing : void 0
38801
38914
  }
38802
38915
  ),
38803
38916
  /* @__PURE__ */ jsx(
@@ -38935,6 +39048,7 @@ var PowerPointViewer = forwardRef(
38935
39048
  onQuickAccessCommandsChange: (commandIds) => optionsStore.setQuickAccessCommands(commandIds),
38936
39049
  onResetOptions: (group) => optionsStore.reset(group),
38937
39050
  onClearCache: handleClearOptionsCache,
39051
+ addinStatus,
38938
39052
  themeKey,
38939
39053
  availableThemes: themeCatalog,
38940
39054
  onSelectTheme: handleThemeChange,
@@ -39050,40 +39164,19 @@ var PowerPointViewer = forwardRef(
39050
39164
  ]
39051
39165
  }
39052
39166
  );
39053
- return /* @__PURE__ */ jsx(AccountAuthContext.Provider, { value: accountAuth, children: /* @__PURE__ */ jsx(SmartArt3DContext.Provider, { value: smartArt3D, children: /* @__PURE__ */ jsx(SurfaceChart3DContext.Provider, { value: surfaceChart3D, children: /* @__PURE__ */ jsxs(BarChart3DContext.Provider, { value: barChart3D, children: [
39054
- /* @__PURE__ */ jsx(LineChart3DContext.Provider, { value: lineChart3D, children: /* @__PURE__ */ jsx(AreaChart3DContext.Provider, { value: areaChart3D, children: /* @__PURE__ */ jsx(ViewerThemeProvider, { theme: effectiveTheme, children: /* @__PURE__ */ jsxs(
39055
- CollaborationProvider,
39056
- {
39057
- config: collaboration,
39058
- canvasWidth: canvasSize.width,
39059
- canvasHeight: canvasSize.height,
39060
- children: [
39061
- /* @__PURE__ */ jsx(
39062
- CollaborationDocumentSync,
39063
- {
39064
- slides,
39065
- templateElementsBySlideId,
39066
- setSlides: state.setSlides,
39067
- config: collaboration,
39068
- content,
39069
- loadVersion,
39070
- loadOrigin,
39071
- livePatcher: state.livePatcher
39072
- }
39073
- ),
39074
- /* @__PURE__ */ jsx(
39075
- CollaborationFollowLayer,
39076
- {
39077
- activeSlideIndex,
39078
- setActiveSlideIndex: state.setActiveSlideIndex,
39079
- slideCount: slides.length
39080
- }
39081
- ),
39082
- viewerContent
39083
- ]
39084
- }
39085
- ) }) }) }),
39086
- /* @__PURE__ */ jsx(PieChart3DContext.Provider, { value: pieChart3D, children: /* @__PURE__ */ jsx(ViewerThemeProvider, { theme: effectiveTheme, children: /* @__PURE__ */ jsxs(
39167
+ const effective3D = resolve3DRenderingFlags(
39168
+ { smartArt3D, surfaceChart3D, barChart3D, lineChart3D, areaChart3D, pieChart3D },
39169
+ viewerOptions
39170
+ );
39171
+ return (
39172
+ // `ViewerOptionsContext` is how every deeply-nested chrome piece (the
39173
+ // toolbar, title bar, Quick Access strip, print dialog, canvas
39174
+ // hyperlink gate, share dialog) reads the live File > Options
39175
+ // snapshot without threading it through each intermediate prop list.
39176
+ // Nothing previously provided it, so every one of those consumers was
39177
+ // silently reading `DEFAULT_VIEWER_OPTIONS` forever, no matter what
39178
+ // the user changed in the Options dialog.
39179
+ /* @__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(
39087
39180
  CollaborationProvider,
39088
39181
  {
39089
39182
  config: collaboration,
@@ -39114,8 +39207,8 @@ var PowerPointViewer = forwardRef(
39114
39207
  viewerContent
39115
39208
  ]
39116
39209
  }
39117
- ) }) })
39118
- ] }) }) }) });
39210
+ ) }) }) }) }) }) }) }) }) })
39211
+ );
39119
39212
  }
39120
39213
  );
39121
39214
  PowerPointViewer.displayName = "PowerPointViewer";