pptx-react-viewer 4.0.0 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/{AiChatPanel-MHURGN6G.mjs → AiChatPanel-C3ACRWOY.mjs} +4 -4
  3. package/dist/AiChatPanel-C3ACRWOY.mjs.br +0 -0
  4. package/dist/AiChatPanel-C3ACRWOY.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-WMVQFNDC.js → AiChatPanel-GQNSKMP6.js} +25 -25
  6. package/dist/AiChatPanel-GQNSKMP6.js.br +0 -0
  7. package/dist/AiChatPanel-GQNSKMP6.js.gz +0 -0
  8. package/dist/{Area3DChartScene-IMGZEZNU.js → Area3DChartScene-3I6KB2DN.js} +2 -2
  9. package/dist/Area3DChartScene-3I6KB2DN.js.br +0 -0
  10. package/dist/Area3DChartScene-3I6KB2DN.js.gz +0 -0
  11. package/dist/{Area3DChartScene-LKOWSMAU.mjs → Area3DChartScene-4TPNRYXS.mjs} +1 -1
  12. package/dist/{Area3DChartScene-LKOWSMAU.mjs.br → Area3DChartScene-4TPNRYXS.mjs.br} +0 -0
  13. package/dist/Area3DChartScene-4TPNRYXS.mjs.gz +0 -0
  14. package/dist/{Bar3DChartScene-NQNSIMUL.mjs → Bar3DChartScene-V45IUIT7.mjs} +1 -1
  15. package/dist/{Bar3DChartScene-NQNSIMUL.mjs.br → Bar3DChartScene-V45IUIT7.mjs.br} +0 -0
  16. package/dist/Bar3DChartScene-V45IUIT7.mjs.gz +0 -0
  17. package/dist/{Bar3DChartScene-VLSYVFRT.js → Bar3DChartScene-ZSCATOYF.js} +2 -2
  18. package/dist/Bar3DChartScene-ZSCATOYF.js.br +0 -0
  19. package/dist/Bar3DChartScene-ZSCATOYF.js.gz +0 -0
  20. package/dist/{Line3DChartScene-ANZBJYQI.mjs → Line3DChartScene-DCQJEZK6.mjs} +1 -1
  21. package/dist/{Line3DChartScene-ANZBJYQI.mjs.br → Line3DChartScene-DCQJEZK6.mjs.br} +0 -0
  22. package/dist/Line3DChartScene-DCQJEZK6.mjs.gz +0 -0
  23. package/dist/{Line3DChartScene-IWZHA563.js → Line3DChartScene-DK55LQ2D.js} +2 -2
  24. package/dist/Line3DChartScene-DK55LQ2D.js.br +0 -0
  25. package/dist/Line3DChartScene-DK55LQ2D.js.gz +0 -0
  26. package/dist/{Model3DScene-2L3YRAMR.js → Model3DScene-2WNP4XBP.js} +2 -2
  27. package/dist/Model3DScene-2WNP4XBP.js.br +0 -0
  28. package/dist/Model3DScene-2WNP4XBP.js.gz +0 -0
  29. package/dist/{Model3DScene-Y34HTZXK.mjs → Model3DScene-SA5XMR2D.mjs} +1 -1
  30. package/dist/Model3DScene-SA5XMR2D.mjs.br +0 -0
  31. package/dist/Model3DScene-SA5XMR2D.mjs.gz +0 -0
  32. package/dist/{PieChart3DScene-FBRPLHLG.mjs → PieChart3DScene-HC2ZWL42.mjs} +1 -1
  33. package/dist/{PieChart3DScene-FBRPLHLG.mjs.br → PieChart3DScene-HC2ZWL42.mjs.br} +0 -0
  34. package/dist/PieChart3DScene-HC2ZWL42.mjs.gz +0 -0
  35. package/dist/{PieChart3DScene-NE3GN5VG.js → PieChart3DScene-Q75D66HS.js} +2 -2
  36. package/dist/PieChart3DScene-Q75D66HS.js.br +0 -0
  37. package/dist/PieChart3DScene-Q75D66HS.js.gz +0 -0
  38. package/dist/{SmartArt3DScene-QZGIABOK.mjs → SmartArt3DScene-D4VNNPHS.mjs} +124 -19
  39. package/dist/SmartArt3DScene-D4VNNPHS.mjs.br +0 -0
  40. package/dist/SmartArt3DScene-D4VNNPHS.mjs.gz +0 -0
  41. package/dist/{SmartArt3DScene-T236GYUT.js → SmartArt3DScene-NHD7CZJ5.js} +123 -18
  42. package/dist/SmartArt3DScene-NHD7CZJ5.js.br +0 -0
  43. package/dist/SmartArt3DScene-NHD7CZJ5.js.gz +0 -0
  44. package/dist/{SurfaceChart3DScene-7HE5DA3X.mjs → SurfaceChart3DScene-JRMX4PN5.mjs} +1 -1
  45. package/dist/SurfaceChart3DScene-JRMX4PN5.mjs.br +0 -0
  46. package/dist/SurfaceChart3DScene-JRMX4PN5.mjs.gz +0 -0
  47. package/dist/{SurfaceChart3DScene-OSMAVZJC.js → SurfaceChart3DScene-ODS5E6ZG.js} +2 -2
  48. package/dist/SurfaceChart3DScene-ODS5E6ZG.js.br +0 -0
  49. package/dist/SurfaceChart3DScene-ODS5E6ZG.js.gz +0 -0
  50. package/dist/{chunk-H7J4EYXS.mjs → chunk-25CABWCR.mjs} +131 -329
  51. package/dist/chunk-25CABWCR.mjs.br +0 -0
  52. package/dist/chunk-25CABWCR.mjs.gz +0 -0
  53. package/dist/{chunk-IWHZ2DUD.mjs → chunk-3B6YIH4K.mjs} +626 -133
  54. package/dist/chunk-3B6YIH4K.mjs.br +0 -0
  55. package/dist/chunk-3B6YIH4K.mjs.gz +0 -0
  56. package/dist/{chunk-L6I73WMO.js → chunk-A6JKOHSV.js} +2143 -1644
  57. package/dist/chunk-A6JKOHSV.js.br +0 -0
  58. package/dist/chunk-A6JKOHSV.js.gz +0 -0
  59. package/dist/{chunk-5F426BCZ.mjs → chunk-GRAARMUW.mjs} +1 -1
  60. package/dist/chunk-GRAARMUW.mjs.br +0 -0
  61. package/dist/chunk-GRAARMUW.mjs.gz +0 -0
  62. package/dist/{chunk-ZOB6ITIM.js → chunk-MQHMMB6V.js} +5 -5
  63. package/dist/chunk-MQHMMB6V.js.br +0 -0
  64. package/dist/chunk-MQHMMB6V.js.gz +0 -0
  65. package/dist/{chunk-I5F3XLVR.js → chunk-NR4MQJM5.js} +1961 -2161
  66. package/dist/chunk-NR4MQJM5.js.br +0 -0
  67. package/dist/chunk-NR4MQJM5.js.gz +0 -0
  68. package/dist/{chunk-M24DEOP6.js → chunk-NXGUR2DO.js} +2 -0
  69. package/dist/chunk-NXGUR2DO.js.br +0 -0
  70. package/dist/chunk-NXGUR2DO.js.gz +0 -0
  71. package/dist/{chunk-R664EPDC.mjs → chunk-PC7H3C5W.mjs} +2 -0
  72. package/dist/chunk-PC7H3C5W.mjs.br +0 -0
  73. package/dist/chunk-PC7H3C5W.mjs.gz +0 -0
  74. package/dist/{chunk-NKACTGK5.js → chunk-PUALTXTU.js} +182 -182
  75. package/dist/chunk-PUALTXTU.js.br +0 -0
  76. package/dist/chunk-PUALTXTU.js.gz +0 -0
  77. package/dist/{chunk-33YE6E2O.mjs → chunk-Q6QJOD56.mjs} +2145 -470
  78. package/dist/chunk-Q6QJOD56.mjs.br +0 -0
  79. package/dist/chunk-Q6QJOD56.mjs.gz +0 -0
  80. package/dist/{chunk-LAAXFMRE.js → chunk-SK2CZQ6P.js} +2151 -469
  81. package/dist/chunk-SK2CZQ6P.js.br +0 -0
  82. package/dist/chunk-SK2CZQ6P.js.gz +0 -0
  83. package/dist/{chunk-GITM3RKP.mjs → chunk-WLWAYLL6.mjs} +2 -2
  84. package/dist/chunk-WLWAYLL6.mjs.br +0 -0
  85. package/dist/chunk-WLWAYLL6.mjs.gz +0 -0
  86. package/dist/i18n/de.cjs +2 -0
  87. package/dist/i18n/de.cjs.br +0 -0
  88. package/dist/i18n/de.cjs.gz +0 -0
  89. package/dist/i18n/de.mjs +2 -0
  90. package/dist/i18n/de.mjs.br +0 -0
  91. package/dist/i18n/de.mjs.gz +0 -0
  92. package/dist/i18n/es.cjs +2 -0
  93. package/dist/i18n/es.cjs.br +0 -0
  94. package/dist/i18n/es.cjs.gz +0 -0
  95. package/dist/i18n/es.mjs +2 -0
  96. package/dist/i18n/es.mjs.br +0 -0
  97. package/dist/i18n/es.mjs.gz +0 -0
  98. package/dist/i18n/fr.cjs +2 -0
  99. package/dist/i18n/fr.cjs.br +0 -0
  100. package/dist/i18n/fr.cjs.gz +0 -0
  101. package/dist/i18n/fr.mjs +2 -0
  102. package/dist/i18n/fr.mjs.br +0 -0
  103. package/dist/i18n/fr.mjs.gz +0 -0
  104. package/dist/i18n/zh-CN.cjs +2 -0
  105. package/dist/i18n/zh-CN.cjs.br +0 -0
  106. package/dist/i18n/zh-CN.cjs.gz +0 -0
  107. package/dist/i18n/zh-CN.mjs +2 -0
  108. package/dist/i18n/zh-CN.mjs.br +0 -0
  109. package/dist/i18n/zh-CN.mjs.gz +0 -0
  110. package/dist/i18n.js +4 -4
  111. package/dist/i18n.js.br +0 -0
  112. package/dist/i18n.js.gz +0 -0
  113. package/dist/i18n.mjs +1 -1
  114. package/dist/i18n.mjs.br +0 -0
  115. package/dist/i18n.mjs.gz +0 -0
  116. package/dist/index.d.ts +586 -7
  117. package/dist/index.js +52 -48
  118. package/dist/index.js.br +0 -0
  119. package/dist/index.js.gz +0 -0
  120. package/dist/index.mjs +6 -6
  121. package/dist/index.mjs.br +0 -0
  122. package/dist/index.mjs.gz +0 -0
  123. package/dist/internals.d.ts +447 -13
  124. package/dist/internals.js +105 -105
  125. package/dist/internals.js.br +0 -0
  126. package/dist/internals.js.gz +0 -0
  127. package/dist/internals.mjs +4 -4
  128. package/dist/internals.mjs.br +0 -0
  129. package/dist/internals.mjs.gz +0 -0
  130. package/dist/viewer/index.js +32 -32
  131. package/dist/viewer/index.js.br +0 -0
  132. package/dist/viewer/index.js.gz +0 -0
  133. package/dist/viewer/index.mjs +6 -6
  134. package/dist/viewer/index.mjs.br +0 -0
  135. package/dist/viewer/index.mjs.gz +0 -0
  136. package/package.json +2 -2
  137. package/dist/AiChatPanel-MHURGN6G.mjs.br +0 -0
  138. package/dist/AiChatPanel-MHURGN6G.mjs.gz +0 -0
  139. package/dist/AiChatPanel-WMVQFNDC.js.br +0 -0
  140. package/dist/AiChatPanel-WMVQFNDC.js.gz +0 -0
  141. package/dist/Area3DChartScene-IMGZEZNU.js.br +0 -0
  142. package/dist/Area3DChartScene-IMGZEZNU.js.gz +0 -0
  143. package/dist/Area3DChartScene-LKOWSMAU.mjs.gz +0 -0
  144. package/dist/Bar3DChartScene-NQNSIMUL.mjs.gz +0 -0
  145. package/dist/Bar3DChartScene-VLSYVFRT.js.br +0 -0
  146. package/dist/Bar3DChartScene-VLSYVFRT.js.gz +0 -0
  147. package/dist/Line3DChartScene-ANZBJYQI.mjs.gz +0 -0
  148. package/dist/Line3DChartScene-IWZHA563.js.br +0 -0
  149. package/dist/Line3DChartScene-IWZHA563.js.gz +0 -0
  150. package/dist/Model3DScene-2L3YRAMR.js.br +0 -0
  151. package/dist/Model3DScene-2L3YRAMR.js.gz +0 -0
  152. package/dist/Model3DScene-Y34HTZXK.mjs.br +0 -0
  153. package/dist/Model3DScene-Y34HTZXK.mjs.gz +0 -0
  154. package/dist/PieChart3DScene-FBRPLHLG.mjs.gz +0 -0
  155. package/dist/PieChart3DScene-NE3GN5VG.js.br +0 -0
  156. package/dist/PieChart3DScene-NE3GN5VG.js.gz +0 -0
  157. package/dist/SmartArt3DScene-QZGIABOK.mjs.br +0 -0
  158. package/dist/SmartArt3DScene-QZGIABOK.mjs.gz +0 -0
  159. package/dist/SmartArt3DScene-T236GYUT.js.br +0 -0
  160. package/dist/SmartArt3DScene-T236GYUT.js.gz +0 -0
  161. package/dist/SurfaceChart3DScene-7HE5DA3X.mjs.br +0 -0
  162. package/dist/SurfaceChart3DScene-7HE5DA3X.mjs.gz +0 -0
  163. package/dist/SurfaceChart3DScene-OSMAVZJC.js.br +0 -0
  164. package/dist/SurfaceChart3DScene-OSMAVZJC.js.gz +0 -0
  165. package/dist/chunk-33YE6E2O.mjs.br +0 -0
  166. package/dist/chunk-33YE6E2O.mjs.gz +0 -0
  167. package/dist/chunk-5F426BCZ.mjs.br +0 -0
  168. package/dist/chunk-5F426BCZ.mjs.gz +0 -0
  169. package/dist/chunk-GITM3RKP.mjs.br +0 -0
  170. package/dist/chunk-GITM3RKP.mjs.gz +0 -0
  171. package/dist/chunk-H7J4EYXS.mjs.br +0 -0
  172. package/dist/chunk-H7J4EYXS.mjs.gz +0 -0
  173. package/dist/chunk-I5F3XLVR.js.br +0 -0
  174. package/dist/chunk-I5F3XLVR.js.gz +0 -0
  175. package/dist/chunk-IWHZ2DUD.mjs.br +0 -0
  176. package/dist/chunk-IWHZ2DUD.mjs.gz +0 -0
  177. package/dist/chunk-L6I73WMO.js.br +0 -0
  178. package/dist/chunk-L6I73WMO.js.gz +0 -0
  179. package/dist/chunk-LAAXFMRE.js.br +0 -0
  180. package/dist/chunk-LAAXFMRE.js.gz +0 -0
  181. package/dist/chunk-M24DEOP6.js.br +0 -0
  182. package/dist/chunk-M24DEOP6.js.gz +0 -0
  183. package/dist/chunk-NKACTGK5.js.br +0 -0
  184. package/dist/chunk-NKACTGK5.js.gz +0 -0
  185. package/dist/chunk-R664EPDC.mjs.br +0 -0
  186. package/dist/chunk-R664EPDC.mjs.gz +0 -0
  187. package/dist/chunk-ZOB6ITIM.js.br +0 -0
  188. package/dist/chunk-ZOB6ITIM.js.gz +0 -0
@@ -1,12 +1,12 @@
1
- import { computeFocusTargets, deckDataFieldChanged, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, collectStoredChats, exportAiChatLogs, applyElementUpdate } from './chunk-5F426BCZ.mjs';
2
- import { useViewerOptions, useReadOnlyRecommendationState, useCompatibilityToastsState, useReducedMotion, useViewerState, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useViewPreferencesSync, useLayoutSwitching, LoadingState, ViewerOptionsContext, SmartArt3DContext, SurfaceChart3DContext, BarChart3DContext, LineChart3DContext, AreaChart3DContext, PieChart3DContext, useFollowMode, useBroadcastFollower, SlideBackgroundImageLayer, StaticElementRenderer, safePrompt, scopeLayoutOptionsToActiveSlide, ChartPartSelectionProvider, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, useCollaborativeState, useYjsDocumentSync, useCollaborationLivePatch, useViewerOptionsContext, useVirtualizedSlides, useSwipeNavigation, PresentationTransitionOverlay, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, ElementRenderer, SmartArtRenderer, playAnimationSound, ResizeHandles, renderStrokeView, useChartPartSelection, resolveSmartArtDataPalette } from './chunk-IWHZ2DUD.mjs';
3
- import { SHAPE_PRESETS, ANIMATION_PRESET_OPTIONS, cn, SLIDE_NAV_THUMBNAIL_WIDTH, TOOLBAR_SECTIONS, DEFAULT_SECTION_GROUP_ID, SHORTCUT_REFERENCE_ITEMS as SHORTCUT_REFERENCE_ITEMS$1, isConnectorOrLineElement, GRID_SIZE, MIN_ELEMENT_SIZE, CONNECTOR_ARROW_OPTIONS, ARROW_SIZE_OPTIONS, DEFAULT_FILL_COLOR, startMotionPathPreview, startPreviewAnimation, stopPreviewAnimation, DEFAULT_STROKE_COLOR, STROKE_DASH_OPTIONS } from './chunk-GITM3RKP.mjs';
4
- import { SWITCHABLE_LAYOUT_TYPES, compileEquationTemplateMathMl, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, resolveAutosaveActivation, buildThemeColorMap, viewerOptionsToPreferences, applyPreferenceToOptions, listAutosaveSnapshots, deleteAutosaveSnapshot, resolveExpiredAutosaveSnapshots, resolveHistoryDepth, applyAutoCorrect, resolveImageResolutionScale, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, shouldShowAutosaveRecoveryPrompt, resolveOptionRootClasses, resolve3DRenderingFlags, resolveSlideSizeSelection, RULER_THICKNESS, RULER_FONT_SIZE, buildPreviewElements, deriveSlideFieldContext, SLIDE_TRANSITION_OPTIONS, hiddenSlideCue, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, visibleTemplateElements, normalizeHexColor, themeToCssVars, shouldClearAutosaveCacheOnClose, masterViewCrudActions, applyMasterViewCrudAction, masterViewCrudFailureKey, applyMotionPathPreset, resetSlideLayoutPath, DEFAULT_INSERT_CHART_KIND, hasCopyableFormat, templateSchemeFromTheme, createBackstagePresentation, playFeedbackSound, shouldDiscardAutosaveOnSuccessfulSave, setMasterViewBackgroundColor, canUseClipboard, runProgramNoticeStackStyle, compatToastStackStyle, printPropertiesFrameSlides, printPropertiesSlidesPerPage, getDensePanelTouchTargetPx, shouldStickyActionRow, VIEWER_OPTIONS_TABS, DEFAULT_QUICK_ACCESS_COMMAND_IDS, isHeaderFooterDateTextVisible, isHeaderFooterHeaderTextVisible, isHeaderFooterFooterTextVisible, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, buildDeckSaveOptions, getSlideBackgroundStyle, pushRecentColor, mruColorsPatch, 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, clampPercent2, 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, extraQuickAccessCommands, TAB_ROW_ACTION_CLASSES, listBackstageRecentFiles, BACKSTAGE_NAV, hasTextProperties, COMMON_FONT_SIZES, textFontSizePtToPx, INSERT_CHART_TYPES, ACTION_BUTTON_PRESETS, CHARACTER_SPACING_OPTIONS, OFFICE_COLOR_SWATCHES, hasShapeProperties, shapeFillChange, shapeOutlineChange, readRibbonTransitionDraft, ribbonTransitionUpdates, 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, buildStrokePathD, cursorForTool, annotationOverlayZIndex, presentationInkPath, resolveNotesSchematicBodyFontSizePx, motionPathFor, setMotionPath, getShapeAdjustmentHandleDescriptors, shouldShowElementHandles, PRESENTER_NAVIGATOR_LABEL_KEYS, PEN_COLORS, HIGHLIGHTER_COLORS, isBlackboardActive, scaleSlidesForSizeChange, slideSizeToCanvasPx, resolveSelectionPaneRename, PRESET_THEMES, resolveNotesSegments, segmentsToEditorHtml, DEBOUNCE_MS, createPlainNotesSegments, parseSegmentsFromRichEditor, segmentsToPlainText, getCurrentParagraphIndex, segmentsToParagraphs, paragraphsToSegments, MAX_INDENT_LEVEL, INDENT_PX, isUrlSafe, buildNotesPrintHtml, MIN_TOUCH_TARGET_PX, toggleSheet, SMARTART_PREVIEW_ELEMENT_HEIGHT, SMARTART_PREVIEW_ELEMENT_WIDTH, buildSmartArtPreviewElement, 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, textFontSizePxToPt, buildFontCatalog, getSelectionTextStyleFlags, getInlineEditorSelectionResult, selectedParagraphBulletKind, elementBulletKind, selectionBulletKind, TEXT_DECORATION_FLAGS, nextToggleValue, buildThemeColorSwatchGrid, themeColorSwatchRows, findSelectedThemeSwatch, themeSwatchCommit, RIBBON_SHAPE_SWATCHES, canGroupSelection, canUngroupSelection, canSetStrokeWidth, strokeWidthOf, readSoundFileAsDataUrl, applyTransitionSoundFile, TRANSITION_SOUND_OTHER_VALUE, TRANSITION_SOUND_NONE_VALUE, clearTransitionSound, applyTransitionStockSound, transitionStockSoundId, getEffectSoundAsset, ENTRANCE_PRESET_VALUES, EMPHASIS_PRESET_VALUES, EXIT_PRESET_VALUES, MOTION_PATH_FAMILIES, motionPathFamilyLabelKey, motionPathPresetsByFamily, motionPathPresetLabelKey, masterViewPseudoSlide, attachEditorImagePaste, authorConnectorBetweenSites, findEraserHitElementId, generateTicks, rulerDragToGuidePosition, resolveElementInteractivity, getElementTransformWithoutRotation, getElementTransform, buildChartQuickActionsDescriptor, applyChartElementToggle, CHART_QUICK_ACTION_BUTTON_SIZE, applyChartStylePreset, hideChartSeries, restoreFilteredSeries, getActiveXControlOverlayView, buildCommentMarkers, COMMENT_MARKER_SIZE, collectConnectorSiteCandidates, getConnectorEndpointHandles, findConnectorSiteNear, motionPathToSvgD, motionPathEndPixel, isEditableMotionPath, setMotionPathEnd, hasMultipleSelectedTableCells, applyTableStyleDelete, applyTableStyleMapChange, themeColorLabel, buildThemeColorGrid, THEME_COLOR_SCHEME_KEYS, COMMON_FONTS, handleReadingViewKey, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, isCurrentLayout, SLIDE_TEMPLATES, computeAnchoredPopupPosition, buildFreeformShapeElement, buildLiveInkStrokeView, CONNECTOR_SITE_SNAP_PX, resolveConnectorEndpointUpdate, withConnectorEndpointUpdate, getShapeConnectionSites, isElementLocked, isImageLikeElement, mergeSlideTransition, getElementLabel, mapSlideSorterKey, isEditorTextInputTarget, clampSorterZoom, buildLayoutPreviewGeometry, buildSlideTemplateContent, hasTiltData, elementLockTogglePatch, buildTableDataGrid, getDenseGridLayoutPlan, appendTableElementRow, removeLastTableElementRow, appendTableElementColumn, removeLastTableElementColumn, removeTableElementColumn, removeTableElementRow, setTableElementCellText, TABLE_STYLE_PRESETS, applyTableStylePreset, tableStyleAssignmentUpdate, evenColumnWidths, redistributeColumnWidth, evenRowHeights, patchChartData, collapseChartTitleRunsForEdit, chartGridlinesState, chartGridlinesPatch, seriesSecondaryAxisPatch, setChartCategoryLabel, setChartCellValue, addChartCategory, removeChartCategory, addChartSeries, removeChartSeries, setDataLabelsRangeCache, setChartAxisLogScale, setChartAxisTitleStyle, setChartAxisGridlineStyle, setChartSeriesMarker, setChartSeriesChartType, setChartDataPointFill, setChartDataPointExplosion, setChartDataPointMarker, setChartDataPointLabel, describeSmartArtBounds, canAddTopLevelNode, classifyExtraConnections, siblingIndex, siblingCount, canRemoveTopLevelNode, canInteractWithElement, buildOleObjectNamePatch, getOleObjectTypeLabel, sanitizeGradientStops, shouldShowAccessibilitySection, pptxActionToElementAction, withFrameSlides, withSlidesPerPage, applyThemeOverrideToSlide, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, schemaLabel, THEME_COLOR_SLOT_LABEL_KEYS, SLIDE_SIZE_PRESETS, TRANSITION_VALID_DIRECTIONS, TRANSITION_ORIENTATION_TYPES, clampTransitionNumber, TRANSITION_SPEED_OPTIONS, TRANSITION_MORPH_OPTIONS, flattenTagCollections, resolveTemplateBackgroundRows, formatCommentTimestamp, commentMentionQuery, matchCommentMentionAuthors, buildAnimationTimelineRows, clearMotionPath, getEffectSoundState, setEffectSound, setEffectStockSound, setAfterAnimation, setAfterAnimationColor, DIRECTIONAL_PRESETS, buildAnimationTimelineBars, motionPathPresetIdForPath, EFFECT_SOUND_CATALOGUE, normalizeTableStyleGuid, describeTableStyleEditor, TABLE_STYLE_EDITOR_PARTS, computeMergeCellRight, computeMergeCellDown, computeSplitCell, updateMergeAttrsInRawXml, resolveDisplayedChartType, CHART_TYPE_OPTIONS, BAR3D_SHAPE_OPTIONS, bar3DShapePatch, RADAR_STYLE_OPTIONS, radarStylePatch, SURFACE_WIREFRAME_OPTIONS, surfaceWireframePatch, isSeriesUsingSecondaryAxis, listChartUserShapeRows, withChartUserShapeAdded, createDefaultChartUserShape, withChartUserShapeRowRemoved, withChartUserShapeRowTextUpdated, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, addSmartArtNodeAsChild, setSmartArtNodeStyle, removeSmartArtNode, addSiblingAfter, removeEmptyNode, demote, promote, updateSmartArtNodeText, reorder, clampCropValue, DUOTONE_PRESETS, ARTISTIC_EFFECTS, mediaTrimEndSeconds, trimmedMediaDurationMs, mediaTrimEndAbsoluteMs, mediaTrimEndMsFromAbsoluteMs, buildOleEditDialogDescriptor, buildOleContentUpdatePatch, applyOleSheetCellEdit, getOleSheetGrid, applyOleDocumentParagraphEdit, getOleDocumentParagraphs, applyOleNestedDeckElementTextEdit, getOleNestedDeckDetail, replaceOleFile, getNonVisualDescriptionFields, resolveActionType, ELEMENT_ACTION_TYPE_OPTIONS, elementActionToPptxAction, canCommitActionType, slideSizeFromPreset, withSlideSizeOrientation, TRANSITION_DIR_ARROWS, buildDirectionGrid, getSlideTransitionAnimations, SLIDE_TRANSITION_KEYFRAMES, updateTagInCollections, deleteTagFromCollections, addTagToCollections, commentTextSegments, COMMENT_MENTION_CLASS, COMMENT_MENTION_ATTRIBUTE, insertCommentMention, reorderAnimationTimelineRows, applyAnimationTimelineOrder, animationEffectLabel, TABLE_STYLE_BORDER_SIDES, applyTableStyleFieldEdit, createTableStyleEntry, addTableStyleToMap, deleteTableStyleFromMap, LBL, SEL, FILL_MODE_OPTIONS, SECTION_HEADING, NUM, getChartUserShapeGroupTransform, withChartUserShapeGroupChildAdded, createDefaultChartUserShapeGroupChild, withChartUserShapeRowUpdated, getChartUserShapeRowChartBox, withChartUserShapeRowFlipUpdated, withChartUserShapeRowRotationUpdated, withChartUserShapeRowChartBoxUpdated, switchSmartArtLayout, rebuildDrawingShapesIfCleared, mediaTrimEndMsFromSeconds, validateMediaTrimRange, SHAPE_QUICK_STYLES, quickStyleSwatchCss, PATTERN_PRESET_OPTIONS, getPatternSvg, COMPOUND_LINE_OPTIONS, LINE_JOIN_OPTIONS, LINE_CAP_OPTIONS, TEXT_WARP_PRESETS, warpPreviewPath, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, toSlideIndex, TABLE_STYLE_BORDER_SIDE_LABEL_KEYS, TABLE_STYLE_DASH_PRESETS, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS, FILL_PATTERN_LABEL_KEYS, openNativeEyeDropper, toggleText3dExtrusion, BEVEL_PRESETS } from './chunk-33YE6E2O.mjs';
5
- import { LOCALE_CATALOG, ALIGNMENT_LABEL_KEYS } from './chunk-R664EPDC.mjs';
6
- import React6, { createContext, lazy, forwardRef, useEffect, useState, useCallback, useMemo, useRef, useId, useContext, Fragment as Fragment$1, useDeferredValue, Suspense, useSyncExternalStore, useLayoutEffect } from 'react';
1
+ import { computeFocusTargets, deckDataFieldChanged, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, collectStoredChats, exportAiChatLogs, applyElementUpdate } from './chunk-GRAARMUW.mjs';
2
+ import { useViewerOptions, useReadOnlyRecommendationState, useCompatibilityToastsState, useReducedMotion, useViewerState, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useViewPreferencesSync, useLayoutSwitching, LoadingState, ViewerOptionsContext, SmartArt3DContext, SurfaceChart3DContext, BarChart3DContext, LineChart3DContext, AreaChart3DContext, PieChart3DContext, CollaborationProvider, useCollaboration, useCollaborationDocumentSync, useFollowMode, useBroadcastFollower, SlideBackgroundImageLayer, StaticElementRenderer, safePrompt, scopeLayoutOptionsToActiveSlide, ChartPartSelectionProvider, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, useViewerOptionsContext, useVirtualizedSlides, useSwipeNavigation, PresentationTransitionOverlay, RemoteSelectionOverlay, CollaborationCursorOverlay, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, ElementRenderer, InlineCollaborationContext, SmartArtRenderer, playAnimationSound, ResizeHandles, renderStrokeView, useChartPartSelection, resolveSmartArtDataPalette } from './chunk-3B6YIH4K.mjs';
3
+ import { SHAPE_PRESETS, ANIMATION_PRESET_OPTIONS, cn, SLIDE_NAV_THUMBNAIL_WIDTH, TOOLBAR_SECTIONS, DEFAULT_SECTION_GROUP_ID, SHORTCUT_REFERENCE_ITEMS as SHORTCUT_REFERENCE_ITEMS$1, isConnectorOrLineElement, GRID_SIZE, MIN_ELEMENT_SIZE, CONNECTOR_ARROW_OPTIONS, ARROW_SIZE_OPTIONS, DEFAULT_FILL_COLOR, startMotionPathPreview, startPreviewAnimation, stopPreviewAnimation, DEFAULT_STROKE_COLOR, STROKE_DASH_OPTIONS } from './chunk-WLWAYLL6.mjs';
4
+ import { SWITCHABLE_LAYOUT_TYPES, compileEquationTemplateMathMl, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, resolveAutosaveActivation, buildThemeColorMap, viewerOptionsToPreferences, applyPreferenceToOptions, resolveHistoryDepth, applyAutoCorrect, resolveImageResolutionScale, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, shouldShowAutosaveRecoveryPrompt, resolveOptionRootClasses, resolve3DRenderingFlags, resolveSlideSizeSelection, RULER_THICKNESS, RULER_FONT_SIZE, buildPreviewElements, deriveSlideFieldContext, SLIDE_TRANSITION_OPTIONS, hiddenSlideCue, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, visibleTemplateElements, normalizeHexColor, themeToCssVars, listAutosaveSnapshots, resolveExpiredAutosaveSnapshots, deleteAutosaveSnapshot, masterViewCrudActions, applyMasterViewCrudAction, masterViewCrudFailureKey, applyMotionPathPreset, resetSlideLayoutPath, DEFAULT_INSERT_CHART_KIND, hasCopyableFormat, templateSchemeFromTheme, createBackstagePresentation, playFeedbackSound, shouldDiscardAutosaveOnSuccessfulSave, setMasterViewBackgroundColor, canUseClipboard, runProgramNoticeStackStyle, compatToastStackStyle, printPropertiesFrameSlides, printPropertiesSlidesPerPage, getDensePanelTouchTargetPx, shouldStickyActionRow, VIEWER_OPTIONS_TABS, DEFAULT_QUICK_ACCESS_COMMAND_IDS, isHeaderFooterDateTextVisible, isHeaderFooterHeaderTextVisible, isHeaderFooterFooterTextVisible, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, getSlideBackgroundStyle, pushRecentColor, mruColorsPatch, shouldClearAutosaveCacheOnClose, 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, observeElementHeight, EXPANDED_MAX_HEIGHT, STATUS_BAR_CLASSES, buildBarActions, formatVersionTimestamp, formatRelativeTime, scanAvailableFontFamilies, PRESETS, CATEGORIES, convertOmmlToLatex, compileLatexEquation, convertLatexToOmml, EQUATION_TEMPLATES, clampPercent2, 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, extraQuickAccessCommands, TAB_ROW_ACTION_CLASSES, listBackstageRecentFiles, BACKSTAGE_NAV, hasTextProperties, COMMON_FONT_SIZES, textFontSizePtToPx, INSERT_CHART_TYPES, ACTION_BUTTON_PRESETS, CHARACTER_SPACING_OPTIONS, OFFICE_COLOR_SWATCHES, hasShapeProperties, shapeFillChange, shapeOutlineChange, readRibbonTransitionDraft, ribbonTransitionUpdates, 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, buildStrokePathD, cursorForTool, annotationOverlayZIndex, presentationInkPath, resolveNotesSchematicBodyFontSizePx, PRESENTER_NAVIGATOR_LABEL_KEYS, PEN_COLORS, HIGHLIGHTER_COLORS, isBlackboardActive, scaleSlidesForSizeChange, slideSizeToCanvasPx, resolveSelectionPaneRename, PRESET_THEMES, resolveNotesSegments, segmentsToEditorHtml, DEBOUNCE_MS, createPlainNotesSegments, parseSegmentsFromRichEditor, segmentsToPlainText, getCurrentParagraphIndex, segmentsToParagraphs, paragraphsToSegments, MAX_INDENT_LEVEL, INDENT_PX, isUrlSafe, buildNotesPrintHtml, MIN_TOUCH_TARGET_PX, toggleSheet, SMARTART_PREVIEW_ELEMENT_HEIGHT, SMARTART_PREVIEW_ELEMENT_WIDTH, buildSmartArtPreviewElement, 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, textFontSizePxToPt, buildFontCatalog, getSelectionTextStyleFlags, getInlineEditorSelectionResult, selectedParagraphBulletKind, elementBulletKind, selectionBulletKind, TEXT_DECORATION_FLAGS, nextToggleValue, buildThemeColorSwatchGrid, themeColorSwatchRows, findSelectedThemeSwatch, themeSwatchCommit, RIBBON_SHAPE_SWATCHES, canGroupSelection, canUngroupSelection, canSetStrokeWidth, strokeWidthOf, readSoundFileAsDataUrl, applyTransitionSoundFile, TRANSITION_SOUND_OTHER_VALUE, TRANSITION_SOUND_NONE_VALUE, clearTransitionSound, applyTransitionStockSound, transitionStockSoundId, getEffectSoundAsset, ENTRANCE_PRESET_VALUES, EMPHASIS_PRESET_VALUES, EXIT_PRESET_VALUES, MOTION_PATH_FAMILIES, motionPathFamilyLabelKey, motionPathPresetsByFamily, motionPathPresetLabelKey, masterViewPseudoSlide, motionPathFor, setMotionPath, getShapeAdjustmentHandleDescriptors, shouldShowElementHandles, hasMultipleSelectedTableCells, applyTableStyleDelete, applyTableStyleMapChange, themeColorLabel, buildThemeColorGrid, THEME_COLOR_SCHEME_KEYS, COMMON_FONTS, handleReadingViewKey, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, isCurrentLayout, SLIDE_TEMPLATES, computeAnchoredPopupPosition, attachEditorImagePaste, authorConnectorBetweenSites, findEraserHitElementId, generateTicks, rulerDragToGuidePosition, resolveElementInteractivity, getElementTransformWithoutRotation, getElementTransform, buildChartQuickActionsDescriptor, applyChartElementToggle, CHART_QUICK_ACTION_BUTTON_SIZE, applyChartStylePreset, hideChartSeries, restoreFilteredSeries, getActiveXControlOverlayView, buildCommentMarkers, COMMENT_MARKER_SIZE, collectConnectorSiteCandidates, getConnectorEndpointHandles, findConnectorSiteNear, motionPathToSvgD, motionPathEndPixel, isEditableMotionPath, setMotionPathEnd, isElementLocked, isImageLikeElement, mergeSlideTransition, getElementLabel, mapSlideSorterKey, isEditorTextInputTarget, clampSorterZoom, buildLayoutPreviewGeometry, buildSlideTemplateContent, buildFreeformShapeElement, buildLiveInkStrokeView, CONNECTOR_SITE_SNAP_PX, resolveConnectorEndpointUpdate, withConnectorEndpointUpdate, getShapeConnectionSites, elementLockTogglePatch, buildTableDataGrid, getDenseGridLayoutPlan, appendTableElementRow, removeLastTableElementRow, appendTableElementColumn, removeLastTableElementColumn, removeTableElementColumn, removeTableElementRow, setTableElementCellText, TABLE_STYLE_PRESETS, applyTableStylePreset, tableStyleAssignmentUpdate, evenColumnWidths, redistributeColumnWidth, evenRowHeights, patchChartData, collapseChartTitleRunsForEdit, chartGridlinesState, chartGridlinesPatch, seriesSecondaryAxisPatch, setChartCategoryLabel, setChartCellValue, addChartCategory, removeChartCategory, addChartSeries, removeChartSeries, setDataLabelsRangeCache, setChartAxisLogScale, setChartAxisTitleStyle, setChartAxisGridlineStyle, setChartSeriesMarker, setChartSeriesChartType, setChartDataPointFill, setChartDataPointExplosion, setChartDataPointMarker, setChartDataPointLabel, describeSmartArtBounds, canAddTopLevelNode, classifyExtraConnections, siblingIndex, siblingCount, canRemoveTopLevelNode, canInteractWithElement, buildOleObjectNamePatch, getOleObjectTypeLabel, sanitizeGradientStops, shouldShowAccessibilitySection, pptxActionToElementAction, withFrameSlides, withSlidesPerPage, applyThemeOverrideToSlide, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, schemaLabel, THEME_COLOR_SLOT_LABEL_KEYS, SLIDE_SIZE_PRESETS, TRANSITION_VALID_DIRECTIONS, TRANSITION_ORIENTATION_TYPES, clampTransitionNumber, TRANSITION_SPEED_OPTIONS, TRANSITION_MORPH_OPTIONS, flattenTagCollections, resolveTemplateBackgroundRows, formatCommentTimestamp, commentMentionQuery, matchCommentMentionAuthors, buildAnimationTimelineRows, clearMotionPath, getEffectSoundState, setEffectSound, setEffectStockSound, setAfterAnimation, setAfterAnimationColor, DIRECTIONAL_PRESETS, buildAnimationTimelineBars, motionPathPresetIdForPath, EFFECT_SOUND_CATALOGUE, hasTiltData, normalizeTableStyleGuid, describeTableStyleEditor, TABLE_STYLE_EDITOR_PARTS, computeMergeCellRight, computeMergeCellDown, computeSplitCell, updateMergeAttrsInRawXml, resolveDisplayedChartType, CHART_TYPE_OPTIONS, BAR3D_SHAPE_OPTIONS, bar3DShapePatch, RADAR_STYLE_OPTIONS, radarStylePatch, SURFACE_WIREFRAME_OPTIONS, surfaceWireframePatch, isSeriesUsingSecondaryAxis, listChartUserShapeRows, withChartUserShapeAdded, createDefaultChartUserShape, withChartUserShapeRowRemoved, withChartUserShapeRowTextUpdated, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, addSmartArtNodeAsChild, setSmartArtNodeStyle, removeSmartArtNode, addSiblingAfter, removeEmptyNode, demote, promote, updateSmartArtNodeText, reorder, clampCropValue, DUOTONE_PRESETS, ARTISTIC_EFFECTS, mediaTrimEndSeconds, trimmedMediaDurationMs, mediaTrimEndAbsoluteMs, mediaTrimEndMsFromAbsoluteMs, buildOleEditDialogDescriptor, buildOleContentUpdatePatch, applyOleSheetCellEdit, getOleSheetGrid, applyOleDocumentParagraphEdit, getOleDocumentParagraphs, applyOleNestedDeckElementTextEdit, getOleNestedDeckDetail, replaceOleFile, getNonVisualDescriptionFields, resolveActionType, ELEMENT_ACTION_TYPE_OPTIONS, elementActionToPptxAction, canCommitActionType, slideSizeFromPreset, withSlideSizeOrientation, TRANSITION_DIR_ARROWS, buildDirectionGrid, getSlideTransitionAnimations, SLIDE_TRANSITION_KEYFRAMES, updateTagInCollections, deleteTagFromCollections, addTagToCollections, commentTextSegments, COMMENT_MENTION_CLASS, COMMENT_MENTION_ATTRIBUTE, insertCommentMention, reorderAnimationTimelineRows, applyAnimationTimelineOrder, animationEffectLabel, TABLE_STYLE_BORDER_SIDES, applyTableStyleFieldEdit, createTableStyleEntry, addTableStyleToMap, deleteTableStyleFromMap, LBL, SEL, FILL_MODE_OPTIONS, SECTION_HEADING, NUM, getChartUserShapeGroupTransform, withChartUserShapeGroupChildAdded, createDefaultChartUserShapeGroupChild, withChartUserShapeRowUpdated, getChartUserShapeRowChartBox, withChartUserShapeRowFlipUpdated, withChartUserShapeRowRotationUpdated, withChartUserShapeRowChartBoxUpdated, switchSmartArtLayout, rebuildDrawingShapesIfCleared, mediaTrimEndMsFromSeconds, validateMediaTrimRange, SHAPE_QUICK_STYLES, quickStyleSwatchCss, PATTERN_PRESET_OPTIONS, getPatternSvg, COMPOUND_LINE_OPTIONS, LINE_JOIN_OPTIONS, LINE_CAP_OPTIONS, TEXT_WARP_PRESETS, warpPreviewPath, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, toSlideIndex, TABLE_STYLE_BORDER_SIDE_LABEL_KEYS, TABLE_STYLE_DASH_PRESETS, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS, FILL_PATTERN_LABEL_KEYS, openNativeEyeDropper, toggleText3dExtrusion, BEVEL_PRESETS } from './chunk-Q6QJOD56.mjs';
5
+ import { LOCALE_CATALOG, ALIGNMENT_LABEL_KEYS } from './chunk-PC7H3C5W.mjs';
6
+ import React4, { createContext, lazy, forwardRef, useEffect, useState, useCallback, useMemo, useRef, useId, Fragment as Fragment$1, useDeferredValue, Suspense, useContext, useSyncExternalStore, useLayoutEffect } from 'react';
7
7
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
8
8
  import { useTranslation } from 'react-i18next';
9
- import { LuMessageSquare, LuEyeOff, LuHistory, LuTrash2, LuSettings, LuX, LuCalendarDays, LuClock, LuHash, LuFileText, LuText, LuCast, LuSave, LuUndo, LuRedo, LuSearch, LuShieldCheck, LuPlus, LuPanelLeftClose, LuStickyNote, LuMonitor, LuColumns2, LuPresentation, LuMinus, LuSettings2, LuLayers, LuDownload, LuCheck, LuLock, LuEye, 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, LuFilter, LuMove, LuRadio, LuLockOpen, LuArrowDown, LuArrowUp, LuArrowRight, LuReply, LuRotateCw, LuBookmark } from 'react-icons/lu';
9
+ import { LuMessageSquare, LuEyeOff, LuHistory, LuTrash2, LuSettings, LuX, LuCalendarDays, LuClock, LuHash, LuFileText, LuText, LuCast, LuSave, LuUndo, LuRedo, LuSearch, LuShieldCheck, LuPlus, LuPanelLeftClose, LuStickyNote, LuMonitor, LuColumns2, LuPresentation, LuMinus, LuSettings2, LuLayers, LuDownload, LuCheck, LuLock, LuEye, 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, LuFilter, LuLockOpen, LuArrowDown, LuArrowUp, LuArrowRight, LuReply, LuRotateCw, LuBookmark } from 'react-icons/lu';
10
10
 
11
11
  var ViewerThemeContext = createContext(void 0);
12
12
  function ViewerThemeProvider({ theme, children }) {
@@ -27,100 +27,6 @@ function useThemeStyle(theme) {
27
27
  return vars;
28
28
  }, [theme]);
29
29
  }
30
- var CollaborationContext = createContext(null);
31
- function useCollaboration() {
32
- return useContext(CollaborationContext);
33
- }
34
- function CollaborationProvider({
35
- config,
36
- canvasWidth,
37
- canvasHeight,
38
- children
39
- }) {
40
- const value = useCollaborativeState({
41
- config,
42
- canvasWidth,
43
- canvasHeight
44
- });
45
- return /* @__PURE__ */ jsx(CollaborationContext.Provider, { value, children });
46
- }
47
- function RemoteUserCursors({
48
- remoteUsers,
49
- activeSlideIndex,
50
- canvasWidth,
51
- canvasHeight
52
- }) {
53
- const visibleUsers = remoteUsers.filter((u) => u.activeSlideIndex === activeSlideIndex);
54
- if (visibleUsers.length === 0) {
55
- return null;
56
- }
57
- return /* @__PURE__ */ jsx(
58
- "svg",
59
- {
60
- "data-testid": "remote-user-cursors",
61
- "data-export-ignore": "true",
62
- className: "absolute inset-0 pointer-events-none",
63
- style: { zIndex: 9999 },
64
- width: canvasWidth,
65
- height: canvasHeight,
66
- viewBox: `0 0 ${canvasWidth} ${canvasHeight}`,
67
- "aria-hidden": "true",
68
- children: visibleUsers.map((user) => /* @__PURE__ */ jsxs(
69
- "g",
70
- {
71
- style: {
72
- transform: `translate(${user.cursorX}px, ${user.cursorY}px)`,
73
- transition: "transform 90ms linear",
74
- willChange: "transform"
75
- },
76
- "data-testid": `remote-cursor-${user.clientId}`,
77
- "data-pptx-remote-cursor": user.clientId,
78
- children: [
79
- /* @__PURE__ */ jsx(
80
- "path",
81
- {
82
- d: "M0 0 L0 16 L4.5 12.5 L8 20 L10.5 19 L7 11.5 L12 11 Z",
83
- fill: user.userColor,
84
- stroke: "#fff",
85
- strokeWidth: 1,
86
- opacity: 0.9
87
- }
88
- ),
89
- /* @__PURE__ */ jsxs("g", { transform: "translate(14, 18)", children: [
90
- /* @__PURE__ */ jsx(
91
- "rect",
92
- {
93
- rx: 3,
94
- ry: 3,
95
- x: -2,
96
- y: -10,
97
- width: Math.min(user.userName.length * 7 + 8, 150),
98
- height: 16,
99
- fill: user.userColor,
100
- opacity: 0.85
101
- }
102
- ),
103
- /* @__PURE__ */ jsx(
104
- "text",
105
- {
106
- fill: "#fff",
107
- fontSize: 10,
108
- fontFamily: "system-ui, sans-serif",
109
- fontWeight: 500,
110
- dominantBaseline: "central",
111
- y: -2,
112
- x: 2,
113
- children: user.userName.length > 20 ? `${user.userName.slice(0, 18)}...` : user.userName
114
- }
115
- )
116
- ] })
117
- ]
118
- },
119
- user.clientId
120
- ))
121
- }
122
- );
123
- }
124
30
  function getInitials(name) {
125
31
  const parts = name.trim().split(/\s+/u);
126
32
  if (parts.length >= 2) {
@@ -349,124 +255,6 @@ function FollowModeBar({
349
255
  }
350
256
  );
351
257
  }
352
- function CollaborationCursorOverlay({
353
- activeSlideIndex,
354
- canvasWidth,
355
- canvasHeight,
356
- selectedElementId
357
- }) {
358
- const collab = useCollaboration();
359
- const containerRef = useRef(null);
360
- const prevSelectionRef = useRef(selectedElementId);
361
- useEffect(() => {
362
- if (!collab || selectedElementId === prevSelectionRef.current) {
363
- return;
364
- }
365
- prevSelectionRef.current = selectedElementId;
366
- collab.broadcastPresence({
367
- selectedElementId: selectedElementId ?? void 0,
368
- activeSlideIndex
369
- });
370
- }, [collab, selectedElementId, activeSlideIndex]);
371
- useEffect(() => {
372
- if (!collab) {
373
- return;
374
- }
375
- const parent = containerRef.current?.parentElement;
376
- if (!parent) {
377
- return;
378
- }
379
- const handler = (e) => {
380
- const rect = parent.getBoundingClientRect();
381
- const x = (e.clientX - rect.left) / rect.width * canvasWidth;
382
- const y = (e.clientY - rect.top) / rect.height * canvasHeight;
383
- collab.broadcastPresence({
384
- cursorX: x,
385
- cursorY: y,
386
- activeSlideIndex
387
- });
388
- };
389
- parent.addEventListener("pointermove", handler);
390
- return () => parent.removeEventListener("pointermove", handler);
391
- }, [collab, canvasWidth, canvasHeight, activeSlideIndex]);
392
- if (!collab) {
393
- return null;
394
- }
395
- return /* @__PURE__ */ jsx(
396
- "div",
397
- {
398
- ref: containerRef,
399
- "data-testid": "collab-pointer-tracker",
400
- "data-export-ignore": "true",
401
- style: { display: "contents" },
402
- children: /* @__PURE__ */ jsx(
403
- RemoteUserCursors,
404
- {
405
- remoteUsers: collab.remoteUsers,
406
- activeSlideIndex,
407
- canvasWidth,
408
- canvasHeight
409
- }
410
- )
411
- }
412
- );
413
- }
414
- function RemoteSelectionOverlay({
415
- elements,
416
- activeSlideIndex
417
- }) {
418
- const collab = useCollaboration();
419
- if (!collab) {
420
- return null;
421
- }
422
- const elementMap = /* @__PURE__ */ new Map();
423
- for (const el of elements) {
424
- elementMap.set(el.id, el);
425
- }
426
- const selections = [];
427
- for (const user of collab.remoteUsers) {
428
- if (user.activeSlideIndex === activeSlideIndex && user.selectedElementId) {
429
- const el = elementMap.get(user.selectedElementId);
430
- if (el) {
431
- selections.push({
432
- userName: user.userName,
433
- userColor: user.userColor,
434
- element: el
435
- });
436
- }
437
- }
438
- }
439
- if (selections.length === 0) {
440
- return null;
441
- }
442
- return /* @__PURE__ */ jsx(Fragment, { children: selections.map((sel) => /* @__PURE__ */ jsx(
443
- "div",
444
- {
445
- "data-testid": `remote-selection-${sel.element.id}`,
446
- "data-pptx-remote-selection": sel.element.id,
447
- "data-export-ignore": "true",
448
- className: "absolute pointer-events-none",
449
- style: {
450
- left: sel.element.x,
451
- top: sel.element.y,
452
- width: sel.element.width,
453
- height: sel.element.height,
454
- zIndex: 9997,
455
- border: `2px solid ${sel.userColor}`,
456
- borderRadius: 2
457
- },
458
- children: /* @__PURE__ */ jsx(
459
- "span",
460
- {
461
- className: "absolute -top-5 left-0 px-1 py-0.5 text-[9px] font-medium text-white rounded-sm whitespace-nowrap leading-none",
462
- style: { backgroundColor: sel.userColor },
463
- children: sel.userName
464
- }
465
- )
466
- },
467
- `remote-sel-${sel.element.id}`
468
- )) });
469
- }
470
258
  var PREVIEW_CANVAS_WIDTH = 1280;
471
259
  var PREVIEW_CANVAS_HEIGHT = 720;
472
260
  var PREVIEW_TILE_WIDTH = 144;
@@ -1385,8 +1173,8 @@ function ArrangeSection(p) {
1385
1173
  ] });
1386
1174
  }
1387
1175
  function useTransitionSoundPicker(activeSlide, onTransitionChange) {
1388
- const soundFileInputRef = React6.useRef(null);
1389
- const handleSoundFilePicked = React6.useCallback(
1176
+ const soundFileInputRef = React4.useRef(null);
1177
+ const handleSoundFilePicked = React4.useCallback(
1390
1178
  (file) => {
1391
1179
  void readSoundFileAsDataUrl(file).then((dataUrl) => {
1392
1180
  if (dataUrl) {
@@ -1397,7 +1185,7 @@ function useTransitionSoundPicker(activeSlide, onTransitionChange) {
1397
1185
  },
1398
1186
  [onTransitionChange]
1399
1187
  );
1400
- const handleSoundSelectChange = React6.useCallback(
1188
+ const handleSoundSelectChange = React4.useCallback(
1401
1189
  (event) => {
1402
1190
  const value = event.target.value;
1403
1191
  if (value === TRANSITION_SOUND_OTHER_VALUE) {
@@ -1416,7 +1204,7 @@ function useTransitionSoundPicker(activeSlide, onTransitionChange) {
1416
1204
  },
1417
1205
  [activeSlide, onTransitionChange]
1418
1206
  );
1419
- const handleSoundFileChange = React6.useCallback(
1207
+ const handleSoundFileChange = React4.useCallback(
1420
1208
  (event) => {
1421
1209
  const file = event.target.files?.[0];
1422
1210
  if (file) {
@@ -1427,7 +1215,7 @@ function useTransitionSoundPicker(activeSlide, onTransitionChange) {
1427
1215
  [handleSoundFilePicked]
1428
1216
  );
1429
1217
  const stockSoundId = transitionStockSoundId(activeSlide?.transition);
1430
- const handleSoundPreview = React6.useCallback(() => {
1218
+ const handleSoundPreview = React4.useCallback(() => {
1431
1219
  if (!stockSoundId) {
1432
1220
  return;
1433
1221
  }
@@ -1447,10 +1235,10 @@ function useTransitionSoundPicker(activeSlide, onTransitionChange) {
1447
1235
  function TransitionsSection(p) {
1448
1236
  const { t } = useTranslation();
1449
1237
  const canEdit = p.canEdit !== false;
1450
- const draft = React6.useMemo(() => readRibbonTransitionDraft(p.activeSlide), [p.activeSlide]);
1451
- const [durationBuffer, setDurationBuffer] = React6.useState(null);
1452
- const [advanceBuffer, setAdvanceBuffer] = React6.useState(null);
1453
- const commit = React6.useCallback(
1238
+ const draft = React4.useMemo(() => readRibbonTransitionDraft(p.activeSlide), [p.activeSlide]);
1239
+ const [durationBuffer, setDurationBuffer] = React4.useState(null);
1240
+ const [advanceBuffer, setAdvanceBuffer] = React4.useState(null);
1241
+ const commit = React4.useCallback(
1454
1242
  (changes) => {
1455
1243
  p.onTransitionChange(ribbonTransitionUpdates({ ...draft, ...changes }));
1456
1244
  },
@@ -1811,7 +1599,7 @@ function AccountPage() {
1811
1599
  return void 0;
1812
1600
  });
1813
1601
  };
1814
- const version = "3.21.0" ;
1602
+ const version = "4.0.0" ;
1815
1603
  return /* @__PURE__ */ jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
1816
1604
  /* @__PURE__ */ jsxs("section", { className: cardClass, children: [
1817
1605
  /* @__PURE__ */ jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
@@ -2249,7 +2037,7 @@ function FontFamilyMenu(p) {
2249
2037
  embeddedFonts: p.embeddedFonts,
2250
2038
  customFonts: p.customFonts
2251
2039
  });
2252
- return /* @__PURE__ */ jsx(RibbonMenu, { anchorRef: p.anchorRef, className: "flex flex-col w-64 pt-1", children: /* @__PURE__ */ jsx("div", { className: "rounded-lg border border-border bg-popover backdrop-blur-lg shadow-2xl py-1 max-h-80 overflow-y-auto", children: groups.map((group, groupIndex) => /* @__PURE__ */ jsxs(React6.Fragment, { children: [
2040
+ return /* @__PURE__ */ jsx(RibbonMenu, { anchorRef: p.anchorRef, className: "flex flex-col w-64 pt-1", children: /* @__PURE__ */ jsx("div", { className: "rounded-lg border border-border bg-popover backdrop-blur-lg shadow-2xl py-1 max-h-80 overflow-y-auto", children: groups.map((group, groupIndex) => /* @__PURE__ */ jsxs(React4.Fragment, { children: [
2253
2041
  /* @__PURE__ */ jsx(
2254
2042
  "div",
2255
2043
  {
@@ -6775,7 +6563,7 @@ function ChartQuickActionsOverlay({
6775
6563
  "data-export-ignore": "true",
6776
6564
  style: { position: "absolute", left: 0, top: 0, zIndex: 59 },
6777
6565
  onMouseDown: (e) => e.stopPropagation(),
6778
- children: descriptor.buttons.map((button) => /* @__PURE__ */ jsxs(React6.Fragment, { children: [
6566
+ children: descriptor.buttons.map((button) => /* @__PURE__ */ jsxs(React4.Fragment, { children: [
6779
6567
  /* @__PURE__ */ jsx(
6780
6568
  "button",
6781
6569
  {
@@ -6795,7 +6583,7 @@ function ChartQuickActionsOverlay({
6795
6583
  transformOrigin: "top left"
6796
6584
  },
6797
6585
  className: "flex items-center justify-center rounded bg-white border border-gray-300 shadow-sm hover:bg-gray-100 text-gray-700",
6798
- children: React6.createElement(ICONS3[button.id], { className: "size-3.5" })
6586
+ children: React4.createElement(ICONS3[button.id], { className: "size-3.5" })
6799
6587
  }
6800
6588
  ),
6801
6589
  open === button.id && button.id === "elements" && /* @__PURE__ */ jsxs(
@@ -7409,7 +7197,7 @@ function HorizontalRulerView({ ticks, widthPx, highlight }) {
7409
7197
  }
7410
7198
  );
7411
7199
  }
7412
- var HorizontalRuler = React6.memo(HorizontalRulerView);
7200
+ var HorizontalRuler = React4.memo(HorizontalRulerView);
7413
7201
  HorizontalRuler.displayName = "HorizontalRuler";
7414
7202
  function VerticalRulerView({ ticks, heightPx, highlight }) {
7415
7203
  return /* @__PURE__ */ jsxs(
@@ -7481,7 +7269,7 @@ function VerticalRulerView({ ticks, heightPx, highlight }) {
7481
7269
  }
7482
7270
  );
7483
7271
  }
7484
- var VerticalRuler = React6.memo(VerticalRulerView);
7272
+ var VerticalRuler = React4.memo(VerticalRulerView);
7485
7273
  VerticalRuler.displayName = "VerticalRuler";
7486
7274
  function Ruler({
7487
7275
  canvasSize,
@@ -8357,7 +8145,29 @@ function ActiveXControlOverlay({
8357
8145
  }) });
8358
8146
  }
8359
8147
  var EMPTY_ADJUSTMENT_HANDLES = [];
8360
- function SlideCanvas({
8148
+ function SlideCanvas(props) {
8149
+ const latest = useRef(props);
8150
+ latest.current = props;
8151
+ const value = useMemo(
8152
+ () => props.livePatcher && props.mode === "edit" && !props.editTemplateMode ? {
8153
+ patcher: props.livePatcher,
8154
+ slideId: props.activeSlide?.id,
8155
+ elementIds: new Set(props.activeSlide?.elements.map((element) => element.id)),
8156
+ readReadOnlyElement: (id) => !latest.current.canEdit && latest.current.inlineEditingElementId === id && latest.current.activeSlide?.id === props.activeSlide?.id ? latest.current.activeSlide?.elements.find((element) => element.id === id) : void 0,
8157
+ registerReader: props.registerInlineEditReader
8158
+ } : void 0,
8159
+ [
8160
+ props.livePatcher,
8161
+ props.mode,
8162
+ props.editTemplateMode,
8163
+ props.activeSlide?.id,
8164
+ props.activeSlide?.elements,
8165
+ props.registerInlineEditReader
8166
+ ]
8167
+ );
8168
+ return /* @__PURE__ */ jsx(InlineCollaborationContext.Provider, { value, children: /* @__PURE__ */ jsx(SlideCanvasContent, { ...props }) });
8169
+ }
8170
+ function SlideCanvasContent({
8361
8171
  imagePaste,
8362
8172
  activeSlide,
8363
8173
  templateElements,
@@ -9329,7 +9139,7 @@ function slideThumbnailPropsEqual(prev, next) {
9329
9139
  }
9330
9140
  return true;
9331
9141
  }
9332
- var SlideThumbnail = React6.memo(SlideThumbnailImpl, slideThumbnailPropsEqual);
9142
+ var SlideThumbnail = React4.memo(SlideThumbnailImpl, slideThumbnailPropsEqual);
9333
9143
 
9334
9144
  // src/viewer/components/context-menu-dispatch.ts
9335
9145
  function tableCell(props) {
@@ -9893,7 +9703,7 @@ function LazyThumbnailInner({
9893
9703
  }
9894
9704
  ) });
9895
9705
  }
9896
- var LazyThumbnail = React6.memo(LazyThumbnailInner);
9706
+ var LazyThumbnail = React4.memo(LazyThumbnailInner);
9897
9707
 
9898
9708
  // src/viewer/components/slides-pane/utils.ts
9899
9709
  function formatTimingMs(ms) {
@@ -10047,7 +9857,7 @@ function SlideItemInner({
10047
9857
  }
10048
9858
  );
10049
9859
  }
10050
- var SlideItem = React6.memo(SlideItemInner);
9860
+ var SlideItem = React4.memo(SlideItemInner);
10051
9861
  function useSlidePaneCallbacks(onMoveSlide, onRenameSection, onToggleSectionCollapse) {
10052
9862
  const [collapsedSections, setCollapsedSections] = useState({});
10053
9863
  const [renamingSectionId, setRenamingSectionId] = useState(null);
@@ -11368,7 +11178,7 @@ function arePropsEqual(prev, next) {
11368
11178
  }
11369
11179
  return true;
11370
11180
  }
11371
- var SlideCard = React6.memo(SlideCardImpl, arePropsEqual);
11181
+ var SlideCard = React4.memo(SlideCardImpl, arePropsEqual);
11372
11182
  function SorterContextMenu({
11373
11183
  x,
11374
11184
  y,
@@ -12923,9 +12733,22 @@ function SlideNotesPanel({
12923
12733
  onToggle,
12924
12734
  onUpdateNotes,
12925
12735
  panelHeight,
12926
- notesStyle
12736
+ notesStyle,
12737
+ onHeightChange
12927
12738
  }) {
12928
12739
  const { t } = useTranslation();
12740
+ const rootRef = React4.useRef(null);
12741
+ React4.useEffect(() => {
12742
+ const el = rootRef.current;
12743
+ if (!el || !onHeightChange) {
12744
+ return void 0;
12745
+ }
12746
+ const stop = observeElementHeight(el, onHeightChange);
12747
+ return () => {
12748
+ stop();
12749
+ onHeightChange(0);
12750
+ };
12751
+ }, [onHeightChange]);
12929
12752
  const {
12930
12753
  draft,
12931
12754
  draftSegments,
@@ -12975,6 +12798,7 @@ function SlideNotesPanel({
12975
12798
  /* @__PURE__ */ jsxs(
12976
12799
  "div",
12977
12800
  {
12801
+ ref: rootRef,
12978
12802
  className: cn(
12979
12803
  "flex flex-col border-t border-border/60 bg-background select-none",
12980
12804
  // On mobile, hide the entire notes strip when collapsed: the
@@ -14812,9 +14636,9 @@ function PresentationSubtitleBar({
14812
14636
  function renderNotesSegments(segments) {
14813
14637
  return notesSegmentsToSpans(segments).map((span) => {
14814
14638
  if (span.kind === "break") {
14815
- return React6.createElement("br", { key: span.key });
14639
+ return React4.createElement("br", { key: span.key });
14816
14640
  }
14817
- return React6.createElement(
14641
+ return React4.createElement(
14818
14642
  "span",
14819
14643
  { key: span.key, style: span.style },
14820
14644
  span.text
@@ -15046,7 +14870,7 @@ function scaledSlidePreviewPropsEqual(prev, next) {
15046
14870
  }
15047
14871
  return true;
15048
14872
  }
15049
- var ScaledSlidePreview = React6.memo(ScaledSlidePreviewImpl, scaledSlidePreviewPropsEqual);
14873
+ var ScaledSlidePreview = React4.memo(ScaledSlidePreviewImpl, scaledSlidePreviewPropsEqual);
15050
14874
  function PresenterNotesRail({
15051
14875
  slides,
15052
14876
  current,
@@ -16239,7 +16063,7 @@ function EffectSoundRow({
16239
16063
  onPickStock
16240
16064
  }) {
16241
16065
  const { t } = useTranslation();
16242
- const fileInputRef = React6.useRef(null);
16066
+ const fileInputRef = React4.useRef(null);
16243
16067
  const selectedValue = soundState.catalogueId ?? (soundState.hasSound ? CURRENT_VALUE : NONE_VALUE);
16244
16068
  const handleSelectChange = (event) => {
16245
16069
  const value = event.target.value;
@@ -19809,7 +19633,7 @@ function ConnectorArrowsSection({
19809
19633
  ["Start", "End"].map((end) => {
19810
19634
  const widthKey = end === "Start" ? "connectorStartArrowWidth" : "connectorEndArrowWidth";
19811
19635
  const lengthKey = end === "Start" ? "connectorStartArrowLength" : "connectorEndArrowLength";
19812
- return /* @__PURE__ */ jsxs(React6.Fragment, { children: [
19636
+ return /* @__PURE__ */ jsxs(React4.Fragment, { children: [
19813
19637
  /* @__PURE__ */ jsxs("label", { className: "flex flex-col gap-1", children: [
19814
19638
  /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: t(END_LABEL_KEYS[end].width) }),
19815
19639
  /* @__PURE__ */ jsx(
@@ -22686,7 +22510,7 @@ function StrokeEffectsSection({
22686
22510
  ] }),
22687
22511
  EFFECT_CONFIGS.map((cfg) => {
22688
22512
  const on = cfg.isOn(style);
22689
- return /* @__PURE__ */ jsxs(React6.Fragment, { children: [
22513
+ return /* @__PURE__ */ jsxs(React4.Fragment, { children: [
22690
22514
  /* @__PURE__ */ jsxs("label", { className: `inline-flex items-center gap-2 text-foreground ${COL2}`, children: [
22691
22515
  /* @__PURE__ */ jsx(
22692
22516
  "input",
@@ -23554,7 +23378,7 @@ function TextWarpGallery({
23554
23378
  onUpdateTextStyle
23555
23379
  }) {
23556
23380
  const { t } = useTranslation();
23557
- const [expanded, setExpanded] = React6.useState(false);
23381
+ const [expanded, setExpanded] = React4.useState(false);
23558
23382
  const currentPreset = ts?.textWarpPreset || "textNoShape";
23559
23383
  return /* @__PURE__ */ jsxs("div", { className: "mt-2 rounded border border-border bg-card p-2 space-y-2", children: [
23560
23384
  /* @__PURE__ */ jsxs(
@@ -24205,7 +24029,7 @@ function SmartArtStyleControls({
24205
24029
  onChangeStyle
24206
24030
  }) {
24207
24031
  const { t } = useTranslation();
24208
- const translate = React6.useCallback((key) => t(key), [t]);
24032
+ const translate = React4.useCallback((key) => t(key), [t]);
24209
24033
  return /* @__PURE__ */ jsxs(Fragment, { children: [
24210
24034
  /* @__PURE__ */ jsxs("label", { className: "flex flex-col gap-1 text-[11px]", children: [
24211
24035
  /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: t("pptx.smartart.colorScheme") }),
@@ -24260,9 +24084,9 @@ function SmartArtPropertiesPanel({
24260
24084
  const nodes = smartArtData.nodes ?? [];
24261
24085
  const layout = smartArtData.resolvedLayoutType;
24262
24086
  const topLevelCount = nodes.filter((n) => !n.parentId).length;
24263
- const inputRefs = React6.useRef(/* @__PURE__ */ new Map());
24264
- const pendingFocusId = React6.useRef(null);
24265
- React6.useEffect(() => {
24087
+ const inputRefs = React4.useRef(/* @__PURE__ */ new Map());
24088
+ const pendingFocusId = React4.useRef(null);
24089
+ React4.useEffect(() => {
24266
24090
  const id = pendingFocusId.current;
24267
24091
  if (id) {
24268
24092
  inputRefs.current.get(id)?.focus();
@@ -25876,7 +25700,7 @@ function CommentBody({ text, mentions, className }) {
25876
25700
  index
25877
25701
  ) : (
25878
25702
  // eslint-disable-next-line react/no-array-index-key -- segments are positional
25879
- /* @__PURE__ */ jsx(React6.Fragment, { children: segment.text }, index)
25703
+ /* @__PURE__ */ jsx(React4.Fragment, { children: segment.text }, index)
25880
25704
  )
25881
25705
  ) });
25882
25706
  }
@@ -27350,7 +27174,7 @@ function PresentationPropertiesPanel({
27350
27174
  onUpdateTagCollections
27351
27175
  }) {
27352
27176
  const { t } = useTranslation();
27353
- const handleTransitionChange = React6.useCallback(
27177
+ const handleTransitionChange = React4.useCallback(
27354
27178
  (updates) => {
27355
27179
  onUpdateSlide({
27356
27180
  transition: mergeSlideTransition(activeSlide?.transition, updates)
@@ -30641,7 +30465,8 @@ function ViewerBottomPanels({
30641
30465
  onToggleSlideSorter,
30642
30466
  hideStatusBar = false,
30643
30467
  hiddenActions,
30644
- notesStyle
30468
+ notesStyle,
30469
+ onNotesHeightChange
30645
30470
  }) {
30646
30471
  const { isHidden } = useToolbarVisibility(hiddenActions);
30647
30472
  return /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -30656,7 +30481,8 @@ function ViewerBottomPanels({
30656
30481
  onToggle: onToggleNotes,
30657
30482
  onUpdateNotes,
30658
30483
  panelHeight: notesPanelHeight,
30659
- notesStyle
30484
+ notesStyle,
30485
+ onHeightChange: onNotesHeightChange
30660
30486
  }
30661
30487
  ),
30662
30488
  !hideStatusBar && /* @__PURE__ */ jsx(
@@ -31136,7 +30962,7 @@ function ViewerToolbarSection(props) {
31136
30962
  },
31137
30963
  [activeSlide, propertyHandlers]
31138
30964
  );
31139
- const scopedLayoutOptions = React6.useMemo(
30965
+ const scopedLayoutOptions = React4.useMemo(
31140
30966
  () => scopeLayoutOptionsToActiveSlide(s.layoutOptions, activeSlide),
31141
30967
  [s.layoutOptions, activeSlide]
31142
30968
  );
@@ -32794,6 +32620,8 @@ ${url}`)) {
32794
32620
  ) : /* @__PURE__ */ jsx(
32795
32621
  SlideCanvas,
32796
32622
  {
32623
+ livePatcher: s.livePatcher,
32624
+ registerInlineEditReader: s.registerInlineEditReader,
32797
32625
  imagePaste: insertHandlers.imagePaste,
32798
32626
  onUpdateSlideAnimations: props.onUpdateSlideAnimations,
32799
32627
  activeSlide: effectiveSlide,
@@ -32999,7 +32827,7 @@ function useTableStyleMapHandlers(input) {
32999
32827
  var AiChatPanel = lazy(async () => {
33000
32828
  const [{ useChat }, { default: Panel }] = await Promise.all([
33001
32829
  import('@ai-sdk/react'),
33002
- import('./AiChatPanel-MHURGN6G.mjs')
32830
+ import('./AiChatPanel-C3ACRWOY.mjs')
33003
32831
  ]);
33004
32832
  function BoundAiChatPanel(props) {
33005
32833
  return /* @__PURE__ */ jsx(Panel, { ...props, useChat });
@@ -34370,7 +34198,13 @@ function AutosaveRecoveryDialog({
34370
34198
  }
34371
34199
  );
34372
34200
  }
34373
- function CompatibilityToasts({ toasts, onDismiss, onDismissAll }) {
34201
+ function CompatibilityToasts({
34202
+ toasts,
34203
+ onDismiss,
34204
+ onDismissAll,
34205
+ rightInset = 0,
34206
+ bottomInset = 0
34207
+ }) {
34374
34208
  const { t } = useTranslation();
34375
34209
  if (toasts.length === 0) {
34376
34210
  return null;
@@ -34380,7 +34214,7 @@ function CompatibilityToasts({ toasts, onDismiss, onDismissAll }) {
34380
34214
  {
34381
34215
  "data-testid": "pptx-compat-toasts",
34382
34216
  className: "max-h-[60%] overflow-y-auto",
34383
- style: compatToastStackStyle(),
34217
+ style: compatToastStackStyle(rightInset, bottomInset),
34384
34218
  children: [
34385
34219
  /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between px-1", style: { pointerEvents: "auto" }, children: [
34386
34220
  /* @__PURE__ */ jsx("span", { className: "text-[11px] font-medium uppercase tracking-wide text-muted-foreground", children: t("pptx.compatibility.toastTitle") }),
@@ -36147,43 +35981,36 @@ function useAiPanelController(input) {
36147
35981
  showChangeBatch
36148
35982
  };
36149
35983
  }
36150
- function useCollaborationDocumentSync(input) {
36151
- const { collaboration, ...state } = input;
36152
- const latest = useRef(input);
36153
- latest.current = input;
36154
- const getSourceBytes = useCallback(() => {
36155
- const bytes = latest.current.content;
36156
- return bytes instanceof Uint8Array ? bytes : bytes ? new Uint8Array(bytes) : null;
35984
+ function handleClearOptionsCache() {
35985
+ void (async () => {
35986
+ const snapshots = await listAutosaveSnapshots();
35987
+ await Promise.all(snapshots.map((entry) => deleteAutosaveSnapshot(entry.key)));
35988
+ })();
35989
+ }
35990
+ function useAutosaveCacheMaintenance(viewerOptions) {
35991
+ useEffect(() => {
35992
+ void (async () => {
35993
+ try {
35994
+ const snapshots = await listAutosaveSnapshots();
35995
+ const expired = resolveExpiredAutosaveSnapshots(snapshots, viewerOptions);
35996
+ await Promise.all(expired.map((key) => deleteAutosaveSnapshot(key)));
35997
+ } catch {
35998
+ }
35999
+ })();
36157
36000
  }, []);
36158
- const getSaveOptions = useCallback(() => buildDeckSaveOptions(latest.current.deckSaveState), []);
36159
- const config = collaboration?.config;
36160
- const doc = collaboration?.doc;
36161
- const status = collaboration?.status;
36162
36001
  useEffect(() => {
36163
- if (!config?.externalSession || !doc) {
36164
- latest.current.onReadOnlyChange?.(
36165
- config?.externalSession ? status !== "error" : Boolean(doc) && config?.role === "viewer"
36166
- );
36167
- }
36168
- }, [doc, config?.externalSession, config?.role, status]);
36169
- const isConnected = config?.externalSession ? Boolean(collaboration?.doc) : collaboration?.status === "connected";
36170
- useYjsDocumentSync({
36171
- ...state,
36172
- doc: collaboration?.doc ?? null,
36173
- isConnected,
36174
- isSynced: collaboration?.synced ?? false,
36175
- config,
36176
- livePatcher: state.livePatcher,
36177
- getSourceBytes,
36178
- getSaveOptions
36179
- });
36180
- useCollaborationLivePatch({
36181
- patcher: state.livePatcher,
36182
- externalSession: config?.externalSession,
36183
- doc: collaboration?.doc ?? null,
36184
- isConnected: isConnected && config?.role !== "viewer",
36185
- isSynced: collaboration?.synced ?? false
36186
- });
36002
+ const clearIfRequested = () => {
36003
+ if (shouldClearAutosaveCacheOnClose(viewerOptions)) {
36004
+ handleClearOptionsCache();
36005
+ }
36006
+ };
36007
+ window.addEventListener("beforeunload", clearIfRequested);
36008
+ return () => {
36009
+ window.removeEventListener("beforeunload", clearIfRequested);
36010
+ clearIfRequested();
36011
+ };
36012
+ }, [viewerOptions]);
36013
+ return handleClearOptionsCache;
36187
36014
  }
36188
36015
  function useMasterViewCrud(input) {
36189
36016
  const {
@@ -36449,10 +36276,9 @@ var PowerPointViewer = forwardRef(
36449
36276
  }, []);
36450
36277
  const readOnlyRec = useReadOnlyRecommendationState(content);
36451
36278
  const compatToastsState = useCompatibilityToastsState();
36279
+ const [notesBarHeight, setNotesBarHeight] = useState(0);
36452
36280
  const runProgramNoticesState = useRunProgramNoticesState();
36453
- const [collaborationReadOnly, setCollaborationReadOnly] = useState(
36454
- Boolean(collaboration?.externalSession)
36455
- );
36281
+ const [collaborationReadOnly, setCollaborationReadOnly] = useState(Boolean(collaboration));
36456
36282
  const canEdit = hostCanEdit && !collaborationReadOnly && !isProtectedView && !readOnlyRec.locked;
36457
36283
  const [isSettingsOpen, setIsSettingsOpen] = useState(false);
36458
36284
  const [isHeaderFooterOpen, setIsHeaderFooterOpen] = useState(false);
@@ -36575,34 +36401,7 @@ var PowerPointViewer = forwardRef(
36575
36401
  optionsStore.setOptions(next);
36576
36402
  }
36577
36403
  }, [settings, optionsStore]);
36578
- const handleClearOptionsCache = useCallback(() => {
36579
- void (async () => {
36580
- const snapshots = await listAutosaveSnapshots();
36581
- await Promise.all(snapshots.map((entry) => deleteAutosaveSnapshot(entry.key)));
36582
- })();
36583
- }, []);
36584
- useEffect(() => {
36585
- void (async () => {
36586
- try {
36587
- const snapshots = await listAutosaveSnapshots();
36588
- const expired = resolveExpiredAutosaveSnapshots(snapshots, viewerOptions);
36589
- await Promise.all(expired.map((key) => deleteAutosaveSnapshot(key)));
36590
- } catch {
36591
- }
36592
- })();
36593
- }, []);
36594
- useEffect(() => {
36595
- const clearIfRequested = () => {
36596
- if (shouldClearAutosaveCacheOnClose(viewerOptions)) {
36597
- handleClearOptionsCache();
36598
- }
36599
- };
36600
- window.addEventListener("beforeunload", clearIfRequested);
36601
- return () => {
36602
- window.removeEventListener("beforeunload", clearIfRequested);
36603
- clearIfRequested();
36604
- };
36605
- }, [viewerOptions, handleClearOptionsCache]);
36404
+ const handleClearOptionsCache2 = useAutosaveCacheMaintenance(viewerOptions);
36606
36405
  const mobile = useIsMobile();
36607
36406
  const { isMobile, isTouchDevice, isVirtualKeyboardOpen } = mobile;
36608
36407
  const resizablePanels = useResizablePanels();
@@ -37167,7 +36966,8 @@ var PowerPointViewer = forwardRef(
37167
36966
  onToggleSlideSorter: () => state.setShowSlideSorter((p) => !p),
37168
36967
  hideStatusBar: isMobile,
37169
36968
  hiddenActions,
37170
- notesStyle: state.notesMaster?.notesStyle
36969
+ notesStyle: state.notesMaster?.notesStyle,
36970
+ onNotesHeightChange: setNotesBarHeight
37171
36971
  }
37172
36972
  ),
37173
36973
  mode !== "present" && isMobile && /* @__PURE__ */ jsx(
@@ -37192,7 +36992,9 @@ var PowerPointViewer = forwardRef(
37192
36992
  {
37193
36993
  toasts: compatToastsState.toasts,
37194
36994
  onDismiss: compatToastsState.dismiss,
37195
- onDismissAll: compatToastsState.dismissAll
36995
+ onDismissAll: compatToastsState.dismissAll,
36996
+ rightInset: !isMobile && (state.isInspectorPaneOpen || aiPanel.isOpen) ? resizablePanels.rightWidth : 0,
36997
+ bottomInset: notesBarHeight
37196
36998
  }
37197
36999
  ),
37198
37000
  /* @__PURE__ */ jsx(
@@ -37246,7 +37048,7 @@ var PowerPointViewer = forwardRef(
37246
37048
  onRibbonTabHiddenChange: (tabId, hidden) => optionsStore.setRibbonTabHidden(tabId, hidden),
37247
37049
  onQuickAccessCommandsChange: (commandIds) => optionsStore.setQuickAccessCommands(commandIds),
37248
37050
  onResetOptions: (group) => optionsStore.reset(group),
37249
- onClearCache: handleClearOptionsCache,
37051
+ onClearCache: handleClearOptionsCache2,
37250
37052
  addinStatus,
37251
37053
  themeKey,
37252
37054
  availableThemes: themeCatalog,
@@ -37500,4 +37302,4 @@ function CollaborationFollowLayer({
37500
37302
  ) }) });
37501
37303
  }
37502
37304
 
37503
- export { CollaborationProvider, CollaborationStatusIndicator, PowerPointViewer, RemoteUserCursors, SlideCanvas, SlideTemplateGalleryDialog, SlideTemplatePreview, Toolbar, UserAvatarBar, ViewerThemeProvider, useViewerTheme };
37305
+ export { CollaborationStatusIndicator, PowerPointViewer, SlideCanvas, SlideTemplateGalleryDialog, SlideTemplatePreview, Toolbar, UserAvatarBar, ViewerThemeProvider, useViewerTheme };