pptx-react-viewer 4.14.0 → 4.15.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 (111) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/{AiChatPanel-WQUOEVQB.mjs → AiChatPanel-7OVUGUKW.mjs} +4 -4
  3. package/dist/AiChatPanel-7OVUGUKW.mjs.br +0 -0
  4. package/dist/AiChatPanel-7OVUGUKW.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-PULXQTFJ.js → AiChatPanel-CDQWJTWL.js} +28 -28
  6. package/dist/AiChatPanel-CDQWJTWL.js.br +0 -0
  7. package/dist/AiChatPanel-CDQWJTWL.js.gz +0 -0
  8. package/dist/{Model3DScene-HZG33BWN.mjs → Model3DScene-A3CPMFAO.mjs} +1 -1
  9. package/dist/Model3DScene-A3CPMFAO.mjs.br +0 -0
  10. package/dist/Model3DScene-A3CPMFAO.mjs.gz +0 -0
  11. package/dist/{Model3DScene-6MYHPE5N.js → Model3DScene-OLGB7Z7Q.js} +2 -2
  12. package/dist/Model3DScene-OLGB7Z7Q.js.br +0 -0
  13. package/dist/Model3DScene-OLGB7Z7Q.js.gz +0 -0
  14. package/dist/{chunk-6ZR27XTL.js → chunk-2CSRCH4H.js} +2321 -1211
  15. package/dist/chunk-2CSRCH4H.js.br +0 -0
  16. package/dist/chunk-2CSRCH4H.js.gz +0 -0
  17. package/dist/{chunk-RK5UV5HL.js → chunk-6ZPXMS64.js} +1517 -1526
  18. package/dist/chunk-6ZPXMS64.js.br +0 -0
  19. package/dist/chunk-6ZPXMS64.js.gz +0 -0
  20. package/dist/{chunk-ECKXYCP3.mjs → chunk-AHJ4ND7Q.mjs} +1 -1
  21. package/dist/chunk-AHJ4ND7Q.mjs.br +0 -0
  22. package/dist/chunk-AHJ4ND7Q.mjs.gz +0 -0
  23. package/dist/{chunk-UWVRB4Z5.mjs → chunk-AIWEM7VE.mjs} +2312 -1210
  24. package/dist/chunk-AIWEM7VE.mjs.br +0 -0
  25. package/dist/chunk-AIWEM7VE.mjs.gz +0 -0
  26. package/dist/{chunk-55OLQ7HS.mjs → chunk-CJSIEITL.mjs} +3 -0
  27. package/dist/chunk-CJSIEITL.mjs.br +0 -0
  28. package/dist/chunk-CJSIEITL.mjs.gz +0 -0
  29. package/dist/{chunk-DI4YTG3J.js → chunk-CNXVOFUW.js} +197 -197
  30. package/dist/chunk-CNXVOFUW.js.br +0 -0
  31. package/dist/{chunk-DI4YTG3J.js.gz → chunk-CNXVOFUW.js.gz} +0 -0
  32. package/dist/{chunk-EPMT65EN.mjs → chunk-DNWIW75I.mjs} +6 -5
  33. package/dist/chunk-DNWIW75I.mjs.br +0 -0
  34. package/dist/chunk-DNWIW75I.mjs.gz +0 -0
  35. package/dist/{chunk-E6VYR3GM.js → chunk-HGO243GV.js} +818 -816
  36. package/dist/chunk-HGO243GV.js.br +0 -0
  37. package/dist/chunk-HGO243GV.js.gz +0 -0
  38. package/dist/{chunk-AJTFPTSN.mjs → chunk-Q5VQ53R3.mjs} +2 -2
  39. package/dist/chunk-Q5VQ53R3.mjs.br +0 -0
  40. package/dist/chunk-Q5VQ53R3.mjs.gz +0 -0
  41. package/dist/{chunk-WSYKEPW6.mjs → chunk-RQCAXUVQ.mjs} +342 -351
  42. package/dist/chunk-RQCAXUVQ.mjs.br +0 -0
  43. package/dist/chunk-RQCAXUVQ.mjs.gz +0 -0
  44. package/dist/{chunk-XWO367ZG.js → chunk-UP6PJEHM.js} +5 -5
  45. package/dist/chunk-UP6PJEHM.js.br +0 -0
  46. package/dist/chunk-UP6PJEHM.js.gz +0 -0
  47. package/dist/{chunk-HIYK7HPX.js → chunk-XEYB25ZT.js} +3 -0
  48. package/dist/chunk-XEYB25ZT.js.br +0 -0
  49. package/dist/chunk-XEYB25ZT.js.gz +0 -0
  50. package/dist/i18n.js +4 -4
  51. package/dist/i18n.js.br +0 -0
  52. package/dist/i18n.js.gz +0 -0
  53. package/dist/i18n.mjs +1 -1
  54. package/dist/i18n.mjs.br +0 -0
  55. package/dist/i18n.mjs.gz +0 -0
  56. package/dist/index.d.ts +293 -268
  57. package/dist/index.js +63 -63
  58. package/dist/index.js.br +0 -0
  59. package/dist/index.js.gz +0 -0
  60. package/dist/index.mjs +6 -6
  61. package/dist/index.mjs.br +0 -0
  62. package/dist/index.mjs.gz +0 -0
  63. package/dist/internals.d.ts +600 -575
  64. package/dist/internals.js +105 -105
  65. package/dist/internals.js.br +0 -0
  66. package/dist/internals.js.gz +0 -0
  67. package/dist/internals.mjs +4 -4
  68. package/dist/internals.mjs.br +0 -0
  69. package/dist/internals.mjs.gz +0 -0
  70. package/dist/pptx-viewer.css +1 -1
  71. package/dist/pptx-viewer.css.br +0 -0
  72. package/dist/pptx-viewer.css.gz +0 -0
  73. package/dist/viewer/index.d.ts +161 -136
  74. package/dist/viewer/index.js +27 -27
  75. package/dist/viewer/index.js.br +0 -0
  76. package/dist/viewer/index.js.gz +0 -0
  77. package/dist/viewer/index.mjs +6 -6
  78. package/dist/viewer/index.mjs.br +0 -0
  79. package/dist/viewer/index.mjs.gz +0 -0
  80. package/package.json +1 -1
  81. package/dist/AiChatPanel-PULXQTFJ.js.br +0 -0
  82. package/dist/AiChatPanel-PULXQTFJ.js.gz +0 -0
  83. package/dist/AiChatPanel-WQUOEVQB.mjs.br +0 -0
  84. package/dist/AiChatPanel-WQUOEVQB.mjs.gz +0 -0
  85. package/dist/Model3DScene-6MYHPE5N.js.br +0 -0
  86. package/dist/Model3DScene-6MYHPE5N.js.gz +0 -0
  87. package/dist/Model3DScene-HZG33BWN.mjs.br +0 -0
  88. package/dist/Model3DScene-HZG33BWN.mjs.gz +0 -0
  89. package/dist/chunk-55OLQ7HS.mjs.br +0 -0
  90. package/dist/chunk-55OLQ7HS.mjs.gz +0 -0
  91. package/dist/chunk-6ZR27XTL.js.br +0 -0
  92. package/dist/chunk-6ZR27XTL.js.gz +0 -0
  93. package/dist/chunk-AJTFPTSN.mjs.br +0 -0
  94. package/dist/chunk-AJTFPTSN.mjs.gz +0 -0
  95. package/dist/chunk-DI4YTG3J.js.br +0 -0
  96. package/dist/chunk-E6VYR3GM.js.br +0 -0
  97. package/dist/chunk-E6VYR3GM.js.gz +0 -0
  98. package/dist/chunk-ECKXYCP3.mjs.br +0 -0
  99. package/dist/chunk-ECKXYCP3.mjs.gz +0 -0
  100. package/dist/chunk-EPMT65EN.mjs.br +0 -0
  101. package/dist/chunk-EPMT65EN.mjs.gz +0 -0
  102. package/dist/chunk-HIYK7HPX.js.br +0 -0
  103. package/dist/chunk-HIYK7HPX.js.gz +0 -0
  104. package/dist/chunk-RK5UV5HL.js.br +0 -0
  105. package/dist/chunk-RK5UV5HL.js.gz +0 -0
  106. package/dist/chunk-UWVRB4Z5.mjs.br +0 -0
  107. package/dist/chunk-UWVRB4Z5.mjs.gz +0 -0
  108. package/dist/chunk-WSYKEPW6.mjs.br +0 -0
  109. package/dist/chunk-WSYKEPW6.mjs.gz +0 -0
  110. package/dist/chunk-XWO367ZG.js.br +0 -0
  111. package/dist/chunk-XWO367ZG.js.gz +0 -0
@@ -1,12 +1,12 @@
1
- import { computeFocusTargets, deckDataFieldChanged, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, collectStoredChats, exportAiChatLogs, applyElementUpdate } from './chunk-ECKXYCP3.mjs';
2
- import { useViewerOptions, useReadOnlyRecommendationState, useCompatibilityToastsState, useReducedMotion, useViewerState, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useViewPreferencesSync, useLayoutSwitching, ViewerOptionsContext, Rendering3DFlagsContext, 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, imgSrc, renderStrokeView, useChartPartSelection, resolveSmartArtDataPalette } from './chunk-EPMT65EN.mjs';
3
- import { SHAPE_PRESETS, ANIMATION_PRESET_OPTIONS, cn, SLIDE_NAV_THUMBNAIL_WIDTH, DEFAULT_SECTION_GROUP_ID, SHORTCUT_REFERENCE_ITEMS as SHORTCUT_REFERENCE_ITEMS$1, TOOLBAR_SECTIONS, 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-AJTFPTSN.mjs';
4
- import { FIXED_TAB_GALLERIES, EMPTY_RESOLVED_CUSTOMIZATION, ANIMATION_DIRECTION_LABEL_KEYS, SWITCHABLE_LAYOUT_TYPES, compileEquationTemplateMathMl, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, isFeatureEnabled, isDialogAvailable, resolveAutosaveActivation, buildThemeColorMap, viewerOptionsToPreferences, applyPreferenceToOptions, resolveHistoryDepth, applyAutoCorrect, resolveImageResolutionScale, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, isPanelVisible, shouldShowAutosaveRecoveryPrompt, resolveOptionRootClasses, RIBBON_SCOPE_ATTR, resolve3DRenderingFlags, resolveSlideSizeSelection, RULER_THICKNESS, RULER_FONT_SIZE, buildPreviewElements, deriveSlideFieldContext, SLIDE_TRANSITION_OPTIONS, hiddenSlideCue, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, visibleTemplateElements, normalizeHexColor, themeToCssVars, createCustomizationController, resolveEffectiveHiddenActions, listAutosaveSnapshots, resolveExpiredAutosaveSnapshots, deleteAutosaveSnapshot, masterViewCrudActions, applyMasterViewCrudAction, masterViewCrudFailureKey, ribbonCustomizationCss, applyMotionPathPreset, resetSlideLayoutPath, DEFAULT_INSERT_CHART_KIND, hasCopyableFormat, templateSchemeFromTheme, createBackstagePresentation, playFeedbackSound, shouldDiscardAutosaveOnSuccessfulSave, setMasterViewBackgroundColor, resolveEditPointsAvailability, canUseClipboard, runProgramNoticeStackStyle, compatToastStackStyle, printPropertiesFrameSlides, printPropertiesSlidesPerPage, PASTE_SPECIAL_OPTIONS, getDensePanelTouchTargetPx, shouldStickyActionRow, customizeOptionsTabs, VIEWER_OPTIONS_TABS, isOptionsPageVisible, DEFAULT_QUICK_ACCESS_COMMAND_IDS, isHeaderFooterDateTextVisible, isHeaderFooterHeaderTextVisible, isHeaderFooterFooterTextVisible, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, getSlideBackgroundStyle, pushRecentColor, mruColorsPatch, shouldClearAutosaveCacheOnClose, canCropElement, cropSessionChanged, cancelCropUpdate, startCropSession, filterCommands, resolveTitleBarStatusKey, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, masterViewBackgroundColor, buildFieldSubstitutionContext, shouldConfirmExternalHyperlink, safeOpenUrl, resolvePresentationAction, isPpactionUrl, parsePpactionUrl, isPresentationAdvanceClick, toggleBlackboard, PRESENT_TOOLBAR_CLASSES, customizeContextMenuEntries, buildContextMenuEntries, customizeCanvasContextMenuEntries, buildCanvasContextMenuEntries, isCurrentLayout, 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, cropModeKeyAction, extraQuickAccessCommands, visibleContextualTabs, resolveActiveRibbonTab, resolveScreenTip, contextualTabLabelKey, RIBBON_CONTEXTUAL_TAB_ATTR, TAB_ROW_ACTION_CLASSES, customizeBackstageNav, BACKSTAGE_NAV, listBackstageRecentFiles, BACKSTAGE_BACK_CLASSES, BACKSTAGE_NAV_CLASSES, hasTextProperties, COMMON_FONT_SIZES, textFontSizePtToPx, INSERT_CHART_TYPES, ACTION_BUTTON_PRESETS, hasShapeProperties, shapeFillChange, shapeOutlineChange, CONTEXTUAL_TAB_GROUPS, resolveSlidePaneClick, SLIDE_VIRTUALIZATION_THRESHOLD, buildSlidePaneContextMenuEntries, isEditPointsEnabled, PRESENTATION_HIT_TEST_CSS, PRESENTATION_STAGE_ATTRIBUTE, buildStrokePathD, cursorForTool, annotationOverlayZIndex, presentationInkPath, resolveNotesSchematicBodyFontSizePx, PRESENTER_NAVIGATOR_LABEL_KEYS, PEN_COLORS, HIGHLIGHTER_COLORS, isBlackboardActive, clampFlyoutPosition, buildLayoutPreviewGeometry, 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, customizeBackstageCards, backstageCardsFor, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, resolveDefaultFontFamily, textFontSizePxToPt, buildFontCatalog, RIBBON_CONTROL_ATTR, RIBBON_GROUP_ATTR, FREEFORM_TOOL_IDS, isDrawingToolVisible, FREEFORM_TOOL_LABEL_KEYS, getSelectionTextStyleFlags, getInlineEditorSelectionResult, selectedParagraphBulletKind, elementBulletKind, selectionBulletKind, TEXT_DECORATION_FLAGS, nextToggleValue, CHARACTER_SPACING_OPTIONS, OFFICE_COLOR_SWATCHES, RIBBON_SHAPE_SWATCHES, buildRibbonGallery, galleryHasItems, inlineGalleryItems, canGroupSelection, canUngroupSelection, canSetStrokeWidth, strokeWidthOf, readRibbonTransitionDraft, ribbonTransitionUpdates, playSlideTransitionPreview, RIBBON_TRANSITION_PRESETS, transitionSoundOptions, transitionSoundSelectedValue, DEFAULT_MOTION_PATH_PRESET_ID, SLIDE_SHOW_OPTIONS, slideShowOptionChange, readSlideShowOption, masterViewPseudoSlide, motionPathFor, setMotionPath, getShapeAdjustmentHandleDescriptors, shouldShowElementHandles, MERGE_SHAPES_MENU_ITEMS, hasMultipleSelectedTableCells, computeAnchoredPopupPosition, applyTableStyleDelete, applyTableStyleMapChange, themeColorLabel, buildThemeColorGrid, THEME_COLOR_SCHEME_KEYS, COMMON_FONTS, handleReadingViewKey, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, SLIDE_TEMPLATES, buildThemeColorSwatchGrid, themeColorSwatchRows, findSelectedThemeSwatch, themeSwatchCommit, RIBBON_GALLERY_POPUP_ATTR, applyRibbonGalleryItem, galleryItemLabel, RIBBON_GALLERY_ITEM_ATTR, RIBBON_GALLERY_ATTR, MERGE_SHAPES_LABEL_KEY, MERGE_SHAPES_HINT_KEY, CROP_LABEL_KEY, CROP_ASPECT_LABEL_KEY, CROP_ASPECT_GROUP_LABEL_KEYS, CROP_ASPECT_PRESETS, CROP_FILL_LABEL_KEY, CROP_FIT_LABEL_KEY, readSoundFileAsDataUrl, applyTransitionSoundFile, TRANSITION_SOUND_OTHER_VALUE, TRANSITION_SOUND_NONE_VALUE, clearTransitionSound, applyTransitionStockSound, transitionStockSoundId, getEffectSoundAsset, playAnimationRibbonPreview, ENTRANCE_PRESET_VALUES, EMPHASIS_PRESET_VALUES, EXIT_PRESET_VALUES, MOTION_PATH_FAMILIES, motionPathFamilyLabelKey, motionPathPresetsByFamily, motionPathPresetLabelKey, attachEditorImagePaste, authorConnectorBetweenSites, findEraserHitElementId, generateTicks, rulerDragToGuidePosition, resolveElementInteractivity, getElementTransformWithoutRotation, getElementTransform, buildChartQuickActionsDescriptor, applyChartElementToggle, CHART_QUICK_ACTION_BUTTON_SIZE, applyChartStylePreset, hideChartSeries, restoreFilteredSeries, buildCropOverlay, CROP_HANDLE_ARIA_KEY, getActiveXControlOverlayView, buildCommentMarkers, COMMENT_MARKER_SIZE, collectConnectorSiteCandidates, getConnectorEndpointHandles, findConnectorSiteNear, motionPathToSvgD, motionPathEndPixel, isEditableMotionPath, setMotionPathEnd, canEditElementPoints, isElementLocked, isImageLikeElement, mergeSlideTransition, getElementLabel, effectiveDirection, TRIGGER_OPTIONS, effectiveTimingCurve, mapSlideSorterKey, isEditorTextInputTarget, clampSorterZoom, buildSlideTemplateContent, buildFreeformShapeElement, buildLiveInkStrokeView, beginCropDrag, CONNECTOR_SITE_SNAP_PX, resolveConnectorEndpointUpdate, withConnectorEndpointUpdate, getShapeConnectionSites, FreeformToolSession, attachOverlayKeyboard, EditPointsSession, EDIT_POINTS_STYLE, 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, TRANSITION_PATTERN_OPTIONS, TRANSITION_THRUBLK_TYPES, clampTransitionNumber, TRANSITION_SPEED_OPTIONS, TRANSITION_MORPH_OPTIONS, flattenTagCollections, resolveTemplateBackgroundRows, formatCommentTimestamp, commentMentionQuery, matchCommentMentionAuthors, buildAnimationTimelineRows, clearMotionPath, setTrigger, setTriggerBookmark, getEffectSoundState, setEffectSound, setEffectStockSound, setAfterAnimation, setAfterAnimationColor, directionValuesFor, buildAnimationTimelineBars, motionPathPresetIdForPath, EFFECT_SOUND_CATALOGUE, listMediaBookmarkOptions, selectedBookmarkOptionValue, hasTiltData, toElementAxes, dragCropHandle, panCropImage, clientToSlidePoint, EDIT_POINTS_TARGET_ATTR, normalizeTableStyleGuid, describeTableStyleEditor, TABLE_STYLE_EDITOR_PARTS, computeMergeCellRight, computeMergeCellDown, computeSplitCell, updateMergeAttrsInRawXml, resolveDisplayedChartType, CHART_TYPE_OPTIONS, chartDataLabelsTogglePatch, 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, overlayPointerInput, 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, cropFit, cropFill, cropToAspectRatio } from './chunk-UWVRB4Z5.mjs';
5
- import { LOCALE_CATALOG, ALIGNMENT_LABEL_KEYS } from './chunk-55OLQ7HS.mjs';
1
+ import { computeFocusTargets, deckDataFieldChanged, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, collectStoredChats, exportAiChatLogs, applyElementUpdate } from './chunk-AHJ4ND7Q.mjs';
2
+ import { useViewerOptions, useReadOnlyRecommendationState, useCompatibilityToastsState, useReducedMotion, useViewerState, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useViewPreferencesSync, useLayoutSwitching, Rendering3DFlagsContext, CollaborationProvider, useCollaboration, useCollaborationDocumentSync, useFollowMode, useBroadcastFollower, SlideBackgroundImageLayer, StaticElementRenderer, safePrompt, scopeLayoutOptionsToActiveSlide, ChartPartSelectionProvider, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, ViewerOptionsStoreContext, ViewerOptionsContext, useViewerOptionsContext, useVirtualizedSlides, useSwipeNavigation, PresentationTransitionOverlay, RemoteSelectionOverlay, CollaborationCursorOverlay, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, ElementRenderer, InlineCollaborationContext, SmartArtRenderer, playAnimationSound, ResizeHandles, imgSrc, renderStrokeView, useChartPartSelection, resolveSmartArtDataPalette } from './chunk-DNWIW75I.mjs';
3
+ import { SHAPE_PRESETS, ANIMATION_PRESET_OPTIONS, cn, SLIDE_NAV_THUMBNAIL_WIDTH, DEFAULT_SECTION_GROUP_ID, SHORTCUT_REFERENCE_ITEMS as SHORTCUT_REFERENCE_ITEMS$1, TOOLBAR_SECTIONS, 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-Q5VQ53R3.mjs';
4
+ import { FIXED_TAB_GALLERIES, EMPTY_RESOLVED_CUSTOMIZATION, ANIMATION_DIRECTION_LABEL_KEYS, SWITCHABLE_LAYOUT_TYPES, compileEquationTemplateMathMl, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, isFeatureEnabled, isDialogAvailable, resolveAutosaveActivation, buildThemeColorMap, viewerOptionsToPreferences, applyPreferenceToOptions, resolveHistoryDepth, applyAutoCorrect, resolveImageResolutionScale, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, isPanelVisible, shouldShowAutosaveRecoveryPrompt, resolveOptionRootClasses, RIBBON_SCOPE_ATTR, resolve3DRenderingFlags, resolveSlideSizeSelection, RULER_THICKNESS, RULER_FONT_SIZE, buildPreviewElements, deriveSlideFieldContext, SLIDE_TRANSITION_OPTIONS, hiddenSlideCue, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, visibleTemplateElements, normalizeHexColor, themeToCssVars, createCustomizationController, resolveEffectiveHiddenActions, listAutosaveSnapshots, resolveExpiredAutosaveSnapshots, deleteAutosaveSnapshot, masterViewCrudActions, applyMasterViewCrudAction, masterViewCrudFailureKey, ribbonCustomizationCss, applyMotionPathPreset, resetSlideLayoutPath, DEFAULT_INSERT_CHART_KIND, hasCopyableFormat, templateSchemeFromTheme, createBackstagePresentation, playFeedbackSound, shouldDiscardAutosaveOnSuccessfulSave, setMasterViewBackgroundColor, resolveEditPointsAvailability, canUseClipboard, runProgramNoticeStackStyle, compatToastStackStyle, printPropertiesFrameSlides, printPropertiesSlidesPerPage, PASTE_SPECIAL_OPTIONS, getDensePanelTouchTargetPx, shouldStickyActionRow, customizeOptionsTabs, VIEWER_OPTIONS_TABS, isOptionsPageVisible, DEFAULT_QUICK_ACCESS_COMMAND_IDS, isHeaderFooterDateTextVisible, isHeaderFooterHeaderTextVisible, isHeaderFooterFooterTextVisible, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, getSlideBackgroundStyle, pushRecentColor, mruColorsPatch, shouldClearAutosaveCacheOnClose, canCropElement, cropSessionChanged, cancelCropUpdate, startCropSession, filterCommands, resolveTitleBarStatusKey, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, masterViewBackgroundColor, buildFieldSubstitutionContext, shouldConfirmExternalHyperlink, safeOpenUrl, resolvePresentationAction, isPpactionUrl, parsePpactionUrl, isPresentationAdvanceClick, toggleBlackboard, PRESENT_TOOLBAR_CLASSES, customizeContextMenuEntries, buildContextMenuEntries, customizeCanvasContextMenuEntries, buildCanvasContextMenuEntries, isCurrentLayout, 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, cropModeKeyAction, extraQuickAccessCommands, visibleContextualTabs, resolveActiveRibbonTab, resolveScreenTip, contextualTabLabelKey, RIBBON_CONTEXTUAL_TAB_ATTR, TAB_ROW_ACTION_CLASSES, customizeBackstageNav, BACKSTAGE_NAV, listBackstageRecentFiles, BACKSTAGE_BACK_CLASSES, BACKSTAGE_NAV_CLASSES, hasTextProperties, COMMON_FONT_SIZES, textFontSizePtToPx, INSERT_CHART_TYPES, ACTION_BUTTON_PRESETS, hasShapeProperties, shapeFillChange, shapeOutlineChange, CONTEXTUAL_TAB_GROUPS, resolveSlidePaneClick, SLIDE_VIRTUALIZATION_THRESHOLD, buildSlidePaneContextMenuEntries, isEditPointsEnabled, PRESENTATION_HIT_TEST_CSS, PRESENTATION_STAGE_ATTRIBUTE, buildStrokePathD, cursorForTool, annotationOverlayZIndex, presentationInkPath, resolveNotesSchematicBodyFontSizePx, PRESENTER_NAVIGATOR_LABEL_KEYS, subtitleRecognitionLanguage, subtitleSettingsFromOptions, getSpeechRecognitionCtor, mergeCaptionResults, PEN_COLORS, HIGHLIGHTER_COLORS, isBlackboardActive, clampFlyoutPosition, buildLayoutPreviewGeometry, 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, customizeBackstageCards, backstageCardsFor, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, resolveDefaultFontFamily, textFontSizePxToPt, buildFontCatalog, RIBBON_CONTROL_ATTR, RIBBON_GROUP_ATTR, FREEFORM_TOOL_IDS, isDrawingToolVisible, FREEFORM_TOOL_LABEL_KEYS, getSelectionTextStyleFlags, getInlineEditorSelectionResult, selectedParagraphBulletKind, elementBulletKind, selectionBulletKind, TEXT_DECORATION_FLAGS, nextToggleValue, CHARACTER_SPACING_OPTIONS, OFFICE_COLOR_SWATCHES, RIBBON_SHAPE_SWATCHES, buildRibbonGallery, galleryHasItems, inlineGalleryItems, canGroupSelection, canUngroupSelection, canSetStrokeWidth, strokeWidthOf, readRibbonTransitionDraft, ribbonTransitionUpdates, playSlideTransitionPreview, RIBBON_TRANSITION_PRESETS, transitionSoundOptions, transitionSoundSelectedValue, DEFAULT_MOTION_PATH_PRESET_ID, SLIDE_SHOW_COMMAND_GROUPS, RECORD_COMMAND_GROUPS, HELP_RIBBON_COMMANDS, masterViewPseudoSlide, PRESENTATION_ANIM_TRIGGER_ATTRIBUTE, motionPathFor, setMotionPath, getShapeAdjustmentHandleDescriptors, shouldShowElementHandles, MERGE_SHAPES_MENU_ITEMS, hasMultipleSelectedTableCells, computeAnchoredPopupPosition, applyTableStyleDelete, applyTableStyleMapChange, themeColorLabel, buildThemeColorGrid, THEME_COLOR_SCHEME_KEYS, COMMON_FONTS, handleReadingViewKey, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, SLIDE_TEMPLATES, buildThemeColorSwatchGrid, themeColorSwatchRows, findSelectedThemeSwatch, themeSwatchCommit, RIBBON_GALLERY_POPUP_ATTR, applyRibbonGalleryItem, galleryItemLabel, RIBBON_GALLERY_ITEM_ATTR, RIBBON_GALLERY_ATTR, MERGE_SHAPES_LABEL_KEY, MERGE_SHAPES_HINT_KEY, CROP_LABEL_KEY, CROP_ASPECT_LABEL_KEY, CROP_ASPECT_GROUP_LABEL_KEYS, CROP_ASPECT_PRESETS, CROP_FILL_LABEL_KEY, CROP_FIT_LABEL_KEY, readSoundFileAsDataUrl, applyTransitionSoundFile, TRANSITION_SOUND_OTHER_VALUE, TRANSITION_SOUND_NONE_VALUE, clearTransitionSound, applyTransitionStockSound, transitionStockSoundId, getEffectSoundAsset, playAnimationRibbonPreview, ENTRANCE_PRESET_VALUES, EMPHASIS_PRESET_VALUES, EXIT_PRESET_VALUES, MOTION_PATH_FAMILIES, motionPathFamilyLabelKey, motionPathPresetsByFamily, motionPathPresetLabelKey, SLIDE_SHOW_OPTIONS, createViewerOptionsStore, subtitleSettingsLabels, attachEditorImagePaste, authorConnectorBetweenSites, findEraserHitElementId, generateTicks, rulerDragToGuidePosition, resolveElementInteractivity, getElementTransformWithoutRotation, getElementTransform, buildChartQuickActionsDescriptor, applyChartElementToggle, CHART_QUICK_ACTION_BUTTON_SIZE, applyChartStylePreset, hideChartSeries, restoreFilteredSeries, buildCropOverlay, CROP_HANDLE_ARIA_KEY, getActiveXControlOverlayView, buildCommentMarkers, COMMENT_MARKER_SIZE, collectConnectorSiteCandidates, getConnectorEndpointHandles, findConnectorSiteNear, motionPathToSvgD, motionPathEndPixel, isEditableMotionPath, setMotionPathEnd, canEditElementPoints, isElementLocked, isImageLikeElement, mergeSlideTransition, getElementLabel, effectiveDirection, TRIGGER_OPTIONS, effectiveTimingCurve, mapSlideSorterKey, isEditorTextInputTarget, clampSorterZoom, buildSlideTemplateContent, updateSubtitleSettings, buildFreeformShapeElement, buildLiveInkStrokeView, beginCropDrag, CONNECTOR_SITE_SNAP_PX, resolveConnectorEndpointUpdate, withConnectorEndpointUpdate, getShapeConnectionSites, FreeformToolSession, attachOverlayKeyboard, EditPointsSession, EDIT_POINTS_STYLE, 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, TRANSITION_PATTERN_OPTIONS, TRANSITION_THRUBLK_TYPES, clampTransitionNumber, TRANSITION_SPEED_OPTIONS, TRANSITION_MORPH_OPTIONS, flattenTagCollections, resolveTemplateBackgroundRows, formatCommentTimestamp, commentMentionQuery, matchCommentMentionAuthors, buildAnimationTimelineRows, clearMotionPath, setTrigger, setTriggerBookmark, getEffectSoundState, setEffectSound, setEffectStockSound, setAfterAnimation, setAfterAnimationColor, directionValuesFor, buildAnimationTimelineBars, motionPathPresetIdForPath, EFFECT_SOUND_CATALOGUE, listMediaBookmarkOptions, selectedBookmarkOptionValue, hasTiltData, toElementAxes, dragCropHandle, panCropImage, clientToSlidePoint, EDIT_POINTS_TARGET_ATTR, normalizeTableStyleGuid, describeTableStyleEditor, TABLE_STYLE_EDITOR_PARTS, computeMergeCellRight, computeMergeCellDown, computeSplitCell, updateMergeAttrsInRawXml, resolveDisplayedChartType, CHART_TYPE_OPTIONS, chartDataLabelsTogglePatch, 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, overlayPointerInput, 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, cropFit, cropFill, cropToAspectRatio } from './chunk-AIWEM7VE.mjs';
5
+ import { LOCALE_CATALOG, ALIGNMENT_LABEL_KEYS } from './chunk-CJSIEITL.mjs';
6
6
  import React6, { createContext, lazy, forwardRef, useEffect, useState, useCallback, useMemo, useRef, useLayoutEffect, useSyncExternalStore, useId, useContext, Fragment as Fragment$1, useDeferredValue, Suspense, useReducer } from 'react';
7
7
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
8
8
  import { useTranslation } from 'react-i18next';
9
- import { LuArrowDown, LuArrowUp, LuArrowRight, LuArrowLeft, LuArrowDownRight, LuArrowDownLeft, LuArrowUpRight, LuArrowUpLeft, 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, LuFolderOpen, LuSquare, LuImage, LuVideo, LuDatabase, LuAArrowUp, LuAArrowDown, LuRemoveFormatting, LuReplace, LuMousePointer2, LuShapes, LuPaintBucket, LuPenLine, LuPalette, LuPaintbrush, LuPencil, LuCaseSensitive, LuTimer, LuHighlighter, LuEraser, LuGripVertical, LuLoaderCircle, LuBold, LuItalic, LuUnderline, LuStrikethrough, LuList, LuListOrdered, LuIndentIncrease, LuIndentDecrease, LuLink, LuGrid2X2, LuClipboardPaste, LuCopyPlus, LuScan, LuRotateCcw, LuMonitorOff, LuCirclePlay, LuCirclePause, LuCaptions, LuArrowLeftRight, LuClipboardCopy, LuLayoutGrid, LuWand, LuTextCursorInput, LuFile, LuEllipsis, LuUserRound, LuFilePlus2, LuHouse, LuFileJson, LuBox, LuFileImage, LuClock3, LuUser, LuHardDrive, LuLogIn, LuScissors, LuLayoutTemplate, LuFolderPlus, LuSpline, LuMoveRight, LuAlignLeft, LuAlignCenter, LuAlignRight, LuAlignHorizontalSpaceAround, LuAlignVerticalSpaceAround, LuGroup, LuUngroup, LuStar, LuMousePointerClick, LuMonitorPlay, LuListVideo, LuCamera, LuCircleHelp, LuBookOpen, LuLanguages, LuGlobe, LuGitCompare, LuMessageSquarePlus, LuLockKeyhole, LuPanelTop, LuGrid3X3, LuPipette, LuRuler, LuMaximize2, LuCode, LuMove, LuRadio, LuAlignJustify, LuColumns3, LuCombine, LuCrop, LuFilter, LuLockOpen, LuReply, LuRotateCw, LuBookmark } from 'react-icons/lu';
9
+ import { LuArrowDown, LuArrowUp, LuArrowRight, LuArrowLeft, LuArrowDownRight, LuArrowDownLeft, LuArrowUpRight, LuArrowUpLeft, 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, LuFolderOpen, LuSquare, LuImage, LuVideo, LuDatabase, LuAArrowUp, LuAArrowDown, LuRemoveFormatting, LuReplace, LuMousePointer2, LuShapes, LuPaintBucket, LuPenLine, LuPalette, LuPaintbrush, LuPencil, LuCaseSensitive, LuTimer, LuHighlighter, LuEraser, LuGripVertical, LuLoaderCircle, LuBold, LuItalic, LuUnderline, LuStrikethrough, LuList, LuListOrdered, LuIndentIncrease, LuIndentDecrease, LuLink, LuGrid2X2, LuClipboardPaste, LuCopyPlus, LuScan, LuRotateCcw, LuMonitorOff, LuCirclePlay, LuCirclePause, LuCaptions, LuArrowLeftRight, LuClipboardCopy, LuLayoutGrid, LuWand, LuTextCursorInput, LuFile, LuEllipsis, LuUserRound, LuFilePlus2, LuHouse, LuFileJson, LuBox, LuFileImage, LuClock3, LuUser, LuHardDrive, LuLogIn, LuScissors, LuLayoutTemplate, LuFolderPlus, LuSpline, LuMoveRight, LuAlignLeft, LuAlignCenter, LuAlignRight, LuAlignHorizontalSpaceAround, LuAlignVerticalSpaceAround, LuGroup, LuUngroup, LuStar, LuMousePointerClick, LuBookOpen, LuLanguages, LuGlobe, LuGitCompare, LuMessageSquarePlus, LuLockKeyhole, LuPanelTop, LuGrid3X3, LuPipette, LuRuler, LuMaximize2, LuCode, LuMove, LuRadio, LuAlignJustify, LuColumns3, LuCombine, LuCrop, LuFilter, LuLockOpen, LuReply, LuRotateCw, LuBookmark } from 'react-icons/lu';
10
10
 
11
11
  var ViewerThemeContext = createContext(void 0);
12
12
  function ViewerThemeProvider({ theme, children }) {
@@ -2222,7 +2222,7 @@ function AccountPage() {
2222
2222
  return void 0;
2223
2223
  });
2224
2224
  };
2225
- const version = "4.13.0" ;
2225
+ const version = "4.14.0" ;
2226
2226
  return /* @__PURE__ */ jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
2227
2227
  /* @__PURE__ */ jsxs("section", { className: cardClass, children: [
2228
2228
  /* @__PURE__ */ jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
@@ -4031,6 +4031,139 @@ function CustomShowsControls({
4031
4031
  }
4032
4032
  return null;
4033
4033
  }
4034
+ function SlideShowOptions({
4035
+ presentationProperties,
4036
+ onChange,
4037
+ children
4038
+ }) {
4039
+ const ref = useRef(null);
4040
+ const { t } = useTranslation();
4041
+ useLayoutEffect(() => {
4042
+ if (!ref.current) {
4043
+ return;
4044
+ }
4045
+ ref.current.presentationProperties = presentationProperties;
4046
+ ref.current.labels = Object.fromEntries(
4047
+ SLIDE_SHOW_OPTIONS.map((option) => [option.id, t(option.labelKey)])
4048
+ );
4049
+ }, [presentationProperties, t]);
4050
+ useEffect(() => {
4051
+ const host = ref.current;
4052
+ const handler = (event) => onChange?.(event.detail);
4053
+ host?.addEventListener("show-options-change", handler);
4054
+ return () => host?.removeEventListener("show-options-change", handler);
4055
+ }, [onChange]);
4056
+ return /* @__PURE__ */ jsx("pptx-ui-slide-show-options", { ref, children });
4057
+ }
4058
+ function SubtitleSettingsControl() {
4059
+ const { t } = useTranslation();
4060
+ const supplied = useContext(ViewerOptionsStoreContext);
4061
+ const fallback = useRef(null);
4062
+ if (!supplied) {
4063
+ fallback.current ??= createViewerOptionsStore({ persist: false });
4064
+ }
4065
+ const store = supplied ?? fallback.current;
4066
+ const options = useSyncExternalStore(
4067
+ (callback) => store.subscribe(callback),
4068
+ () => store.getOptions(),
4069
+ () => store.getOptions()
4070
+ );
4071
+ const ref = useRef(null);
4072
+ useEffect(() => {
4073
+ const element = ref.current;
4074
+ element.settings = subtitleSettingsFromOptions(options);
4075
+ element.labels = subtitleSettingsLabels((key) => t(key));
4076
+ element.languageDisabled = store.isLocked("accessibility", "subtitleLanguage");
4077
+ }, [options, store, t]);
4078
+ useEffect(() => {
4079
+ const element = ref.current;
4080
+ const commit = (event) => updateSubtitleSettings(store, event.detail);
4081
+ element.addEventListener("subtitle-settings-change", commit);
4082
+ return () => element.removeEventListener("subtitle-settings-change", commit);
4083
+ }, [store]);
4084
+ return /* @__PURE__ */ jsx(
4085
+ "pptx-ui-subtitle-settings",
4086
+ {
4087
+ ref,
4088
+ "data-ribbon-control": "slideShow.captions.subtitleSettings"
4089
+ }
4090
+ );
4091
+ }
4092
+ function useIntent(ref, type, callback) {
4093
+ useEffect(() => {
4094
+ const host = ref.current;
4095
+ if (!host || !callback) {
4096
+ return;
4097
+ }
4098
+ host.addEventListener(type, callback);
4099
+ return () => host.removeEventListener(type, callback);
4100
+ }, [ref, type, callback]);
4101
+ }
4102
+ function WebRibbonGroup({
4103
+ label,
4104
+ groupId,
4105
+ children
4106
+ }) {
4107
+ return /* @__PURE__ */ jsx("pptx-ui-ribbon-group", { label, "data-ribbon-group": groupId, children });
4108
+ }
4109
+ function WebRibbonCommand({
4110
+ label,
4111
+ icon,
4112
+ controlId,
4113
+ title,
4114
+ disabled,
4115
+ active,
4116
+ pressed,
4117
+ expanded,
4118
+ compact,
4119
+ onCommand
4120
+ }) {
4121
+ const ref = useRef(null);
4122
+ useIntent(
4123
+ ref,
4124
+ "command-request",
4125
+ onCommand ? (event) => onCommand(event.detail.id) : void 0
4126
+ );
4127
+ return /* @__PURE__ */ jsx(
4128
+ "pptx-ui-ribbon-command",
4129
+ {
4130
+ ref,
4131
+ label,
4132
+ icon,
4133
+ "data-ribbon-control": controlId,
4134
+ title,
4135
+ disabled: disabled || void 0,
4136
+ active: active || void 0,
4137
+ pressed: pressed === void 0 ? void 0 : String(pressed),
4138
+ expanded: expanded === void 0 ? void 0 : String(expanded),
4139
+ compact: compact || void 0
4140
+ }
4141
+ );
4142
+ }
4143
+ function WebRibbonToggle({
4144
+ label,
4145
+ controlId,
4146
+ checked,
4147
+ title,
4148
+ onToggle
4149
+ }) {
4150
+ const ref = useRef(null);
4151
+ useIntent(
4152
+ ref,
4153
+ "toggle-request",
4154
+ onToggle ? (event) => onToggle(event.detail.checked) : void 0
4155
+ );
4156
+ return /* @__PURE__ */ jsx(
4157
+ "pptx-ui-ribbon-toggle",
4158
+ {
4159
+ ref,
4160
+ label,
4161
+ "data-ribbon-control": controlId,
4162
+ checked: checked || void 0,
4163
+ title
4164
+ }
4165
+ );
4166
+ }
4034
4167
  function SlideShowSection(p) {
4035
4168
  const { t } = useTranslation();
4036
4169
  const { isHidden } = useToolbarVisibility(p.hiddenActions);
@@ -4048,193 +4181,64 @@ function SlideShowSection(p) {
4048
4181
  document.addEventListener("mousedown", handler);
4049
4182
  return () => document.removeEventListener("mousedown", handler);
4050
4183
  }, [showsOpen]);
4184
+ const actions = {
4185
+ "slideShow.startSlideShow.fromBeginning": p.onPresentFromBeginning ?? (() => p.onSetMode("present")),
4186
+ "slideShow.startSlideShow.fromCurrent": p.onPresent,
4187
+ "slideShow.present.presenterView": p.onEnterPresenterView,
4188
+ "slideShow.startSlideShow.customShow": () => setShowsOpen((open) => !open),
4189
+ "slideShow.present.broadcast": p.onOpenBroadcastDialog,
4190
+ "slideShow.setUp.setUpSlideShow": p.onOpenSetUpSlideShow,
4191
+ "slideShow.setUp.hideSlide": p.onToggleHideSlide,
4192
+ "slideShow.setUp.rehearseTimings": p.onEnterRehearsalMode,
4193
+ "slideShow.setUp.record": p.onEnterRehearsalMode
4194
+ };
4195
+ const request = (id) => actions[id]?.();
4051
4196
  return /* @__PURE__ */ jsxs(Fragment, { children: [
4052
- /* @__PURE__ */ jsxs(
4053
- RibbonGroup,
4054
- {
4055
- label: t("pptx.slideShow.start", { defaultValue: "Start Slide Show" }),
4056
- groupId: "slideShow.startSlideShow",
4057
- children: [
4058
- /* @__PURE__ */ jsx(
4059
- RibbonCommand,
4060
- {
4061
- controlId: "slideShow.startSlideShow.fromBeginning",
4062
- label: t("pptx.slideShow.fromBeginning"),
4063
- icon: /* @__PURE__ */ jsx(LuPlay, {}),
4064
- onClick: p.onPresentFromBeginning ?? (() => p.onSetMode("present")),
4065
- title: t("pptx.slideShow.fromBeginningTooltip")
4066
- }
4067
- ),
4068
- /* @__PURE__ */ jsx(
4069
- RibbonCommand,
4070
- {
4071
- controlId: "slideShow.startSlideShow.fromCurrent",
4072
- label: t("pptx.slideShow.fromCurrent"),
4073
- icon: /* @__PURE__ */ jsx(LuMonitorPlay, {}),
4074
- onClick: p.onPresent,
4075
- title: t("pptx.slideShow.fromCurrentTooltip")
4076
- }
4077
- )
4078
- ]
4079
- }
4080
- ),
4081
- /* @__PURE__ */ jsxs(
4082
- RibbonGroup,
4083
- {
4084
- label: t("pptx.slideShow.present", { defaultValue: "Present" }),
4085
- groupId: "slideShow.present",
4086
- children: [
4087
- /* @__PURE__ */ jsx(
4088
- RibbonCommand,
4089
- {
4090
- controlId: "slideShow.present.presenterView",
4091
- label: t("pptx.slideShow.presenterView"),
4092
- icon: /* @__PURE__ */ jsx(LuPresentation, {}),
4093
- onClick: p.onEnterPresenterView,
4094
- title: t("pptx.slideShow.presenterViewTooltip")
4095
- }
4096
- ),
4097
- /* @__PURE__ */ jsxs(
4098
- "div",
4099
- {
4100
- className: "relative",
4101
- ref: showsRef,
4102
- ...controlAttr("slideShow.startSlideShow.customShow"),
4103
- children: [
4104
- /* @__PURE__ */ jsx(
4105
- RibbonCommand,
4106
- {
4107
- label: t("pptx.slideShow.customShow", { defaultValue: "Custom Show" }),
4108
- icon: /* @__PURE__ */ jsx(LuListVideo, {}),
4109
- onClick: () => setShowsOpen((open) => !open),
4110
- active: showsOpen,
4111
- title: t("pptx.customShows.customShowTooltip")
4112
- }
4113
- ),
4114
- showsOpen && /* @__PURE__ */ jsx(RibbonMenu, { anchorRef: showsRef, className: "pt-1", children: /* @__PURE__ */ jsx("div", { className: "flex items-center gap-1 rounded-lg border border-border bg-popover p-2 shadow-2xl", children: /* @__PURE__ */ jsx(CustomShowsControls, { ...p.customShowControls }) }) })
4115
- ]
4116
- }
4117
- ),
4118
- !isHidden("broadcast") && /* @__PURE__ */ jsx(
4119
- RibbonCommand,
4120
- {
4121
- controlId: "slideShow.present.broadcast",
4122
- label: t("pptx.slideShow.broadcast"),
4123
- icon: /* @__PURE__ */ jsx(LuCast, {}),
4124
- onClick: p.onOpenBroadcastDialog,
4125
- title: t("pptx.slideShow.broadcastTooltip")
4126
- }
4127
- )
4128
- ]
4129
- }
4130
- ),
4131
- /* @__PURE__ */ jsxs(
4132
- RibbonGroup,
4133
- {
4134
- label: t("pptx.slideShow.setUpGroup", { defaultValue: "Set Up" }),
4135
- groupId: "slideShow.setUp",
4136
- children: [
4137
- /* @__PURE__ */ jsx(
4138
- RibbonCommand,
4139
- {
4140
- controlId: "slideShow.setUp.rehearseWithCoach",
4141
- label: t("pptx.slideShow.rehearseCoach", { defaultValue: "Rehearse with Coach" }),
4142
- icon: /* @__PURE__ */ jsx(LuVideo, {}),
4143
- disabled: true
4144
- }
4145
- ),
4146
- /* @__PURE__ */ jsx(
4147
- RibbonCommand,
4148
- {
4149
- controlId: "slideShow.setUp.setUpSlideShow",
4150
- label: t("pptx.slideShow.setUp"),
4151
- icon: /* @__PURE__ */ jsx(LuSettings2, {}),
4152
- onClick: p.onOpenSetUpSlideShow,
4153
- title: t("pptx.slideShow.setUpTooltip")
4154
- }
4155
- ),
4156
- /* @__PURE__ */ jsx(
4157
- RibbonCommand,
4158
- {
4159
- controlId: "slideShow.setUp.hideSlide",
4160
- label: t("pptx.slideShow.hideSlide", { defaultValue: "Hide Slide" }),
4161
- icon: /* @__PURE__ */ jsx(LuEyeOff, {}),
4162
- onClick: p.onToggleHideSlide,
4163
- active: p.activeSlideHidden,
4164
- pressed: p.activeSlideHidden
4165
- }
4166
- ),
4167
- /* @__PURE__ */ jsx(
4168
- RibbonCommand,
4169
- {
4170
- controlId: "slideShow.setUp.rehearseTimings",
4171
- label: t("pptx.slideShow.rehearseTimings"),
4172
- icon: /* @__PURE__ */ jsx(LuClock3, {}),
4173
- onClick: p.onEnterRehearsalMode,
4174
- title: t("pptx.slideShow.rehearseTimingsTooltip")
4175
- }
4176
- ),
4177
- /* @__PURE__ */ jsx(
4178
- RibbonCommand,
4179
- {
4180
- controlId: "slideShow.setUp.record",
4181
- label: t("pptx.titleBar.record"),
4182
- icon: /* @__PURE__ */ jsx(LuVideo, {}),
4183
- onClick: p.onEnterRehearsalMode
4184
- }
4185
- )
4186
- ]
4187
- }
4188
- ),
4189
- /* @__PURE__ */ jsxs(RibbonGroup, { label: t("pptx.slideShow.options", { defaultValue: "Options" }), children: [
4190
- /* @__PURE__ */ jsx(RibbonCommandStack, { children: SLIDE_SHOW_OPTIONS.slice(0, 3).map((option) => /* @__PURE__ */ jsx(
4191
- RibbonToggle,
4192
- {
4193
- label: t(option.labelKey),
4194
- checked: readSlideShowOption(p.presentationProperties, option.id),
4195
- disabled: option.unsupported,
4196
- onChange: option.unsupported ? void 0 : (next) => {
4197
- const change = slideShowOptionChange(option.id, next);
4198
- if (change) {
4199
- p.onPresentationPropertiesChange?.(change);
4200
- }
4201
- }
4197
+ SLIDE_SHOW_COMMAND_GROUPS.map((group) => /* @__PURE__ */ jsx(WebRibbonGroup, { groupId: group.id, label: t(group.labelKey), children: group.commands.filter(
4198
+ (command) => command.id !== "slideShow.present.broadcast" || !isHidden("broadcast")
4199
+ ).map((command) => {
4200
+ const customShow = command.id === "slideShow.startSlideShow.customShow";
4201
+ const hideSlide = command.id === "slideShow.setUp.hideSlide";
4202
+ const button = /* @__PURE__ */ jsx(
4203
+ WebRibbonCommand,
4204
+ {
4205
+ controlId: command.id,
4206
+ label: t(command.labelKey),
4207
+ icon: command.icon,
4208
+ title: t(command.tooltipKey ?? command.labelKey),
4209
+ disabled: command.unsupported,
4210
+ active: hideSlide ? p.activeSlideHidden : customShow ? showsOpen : false,
4211
+ pressed: hideSlide ? p.activeSlideHidden : void 0,
4212
+ expanded: customShow ? showsOpen : void 0,
4213
+ onCommand: request
4202
4214
  },
4203
- option.id
4204
- )) }),
4205
- /* @__PURE__ */ jsxs(RibbonCommandStack, { children: [
4206
- /* @__PURE__ */ jsx(
4207
- RibbonToggle,
4208
- {
4209
- label: t(SLIDE_SHOW_OPTIONS[3].labelKey),
4210
- checked: readSlideShowOption(p.presentationProperties, SLIDE_SHOW_OPTIONS[3].id),
4211
- disabled: SLIDE_SHOW_OPTIONS[3].unsupported
4212
- }
4213
- ),
4214
- /* @__PURE__ */ jsxs(RibbonGroupScope, { id: "slideShow.captions", children: [
4215
+ command.id
4216
+ );
4217
+ return customShow ? /* @__PURE__ */ jsxs("div", { className: "relative", ref: showsRef, children: [
4218
+ button,
4219
+ showsOpen && /* @__PURE__ */ jsx(RibbonMenu, { anchorRef: showsRef, className: "pt-1", children: /* @__PURE__ */ jsx("div", { className: "flex items-center gap-1 rounded-lg border border-border bg-popover p-2 shadow-2xl", children: /* @__PURE__ */ jsx(CustomShowsControls, { ...p.customShowControls }) }) })
4220
+ ] }, command.id) : button;
4221
+ }) }, group.id)),
4222
+ /* @__PURE__ */ jsx(WebRibbonGroup, { label: t("pptx.slideShow.options"), children: /* @__PURE__ */ jsx(
4223
+ SlideShowOptions,
4224
+ {
4225
+ presentationProperties: p.presentationProperties,
4226
+ onChange: p.onPresentationPropertiesChange,
4227
+ children: /* @__PURE__ */ jsxs(RibbonGroupScope, { id: "slideShow.captions", children: [
4215
4228
  /* @__PURE__ */ jsx(
4216
- RibbonToggle,
4229
+ WebRibbonToggle,
4217
4230
  {
4218
4231
  controlId: "slideShow.captions.subtitles",
4219
4232
  label: t("pptx.slideShow.subtitles"),
4220
4233
  checked: p.showSubtitles,
4221
- onChange: () => p.onToggleSubtitles(),
4222
- title: t("pptx.slideShow.subtitlesTooltip")
4234
+ title: t("pptx.slideShow.subtitlesTooltip"),
4235
+ onToggle: () => p.onToggleSubtitles()
4223
4236
  }
4224
4237
  ),
4225
- /* @__PURE__ */ jsx(
4226
- RibbonCommand,
4227
- {
4228
- compact: true,
4229
- controlId: "slideShow.captions.subtitleSettings",
4230
- label: t("pptx.slideShow.subtitleSettings", { defaultValue: "Subtitle Settings" }),
4231
- icon: /* @__PURE__ */ jsx(LuCaptions, {}),
4232
- onClick: p.onToggleSubtitles
4233
- }
4234
- )
4238
+ /* @__PURE__ */ jsx(SubtitleSettingsControl, {})
4235
4239
  ] })
4236
- ] })
4237
- ] })
4240
+ }
4241
+ ) })
4238
4242
  ] });
4239
4243
  }
4240
4244
  var LINE_SPACING_OPTIONS = [
@@ -6800,107 +6804,43 @@ function useContextualRibbonTab(selectedElement, customization, onFallback) {
6800
6804
  function HelpSection(p) {
6801
6805
  const { t } = useTranslation();
6802
6806
  const showSettings = isDialogAvailable(useViewerCustomizationContext(), "options");
6803
- return /* @__PURE__ */ jsxs(RibbonGroupScope, { id: "help.help", children: [
6804
- showSettings && /* @__PURE__ */ jsx(
6805
- "button",
6806
- {
6807
- type: "button",
6808
- onClick: p.onOpenSettings ?? p.onToggleShortcuts,
6809
- className: pill,
6810
- title: t("pptx.settings.title"),
6811
- ...controlAttr("help.help.options"),
6812
- children: t("pptx.settings.title")
6813
- }
6814
- ),
6815
- /* @__PURE__ */ jsx(
6816
- "button",
6817
- {
6818
- type: "button",
6819
- onClick: p.onToggleShortcuts,
6820
- className: pill,
6821
- title: t("pptx.settings.keyboardShortcuts"),
6822
- ...controlAttr("help.help.keyboardShortcuts"),
6823
- children: t("pptx.settings.keyboardShortcuts")
6824
- }
6825
- ),
6826
- /* @__PURE__ */ jsx(
6827
- "button",
6828
- {
6829
- type: "button",
6830
- onClick: p.onRunAccessibilityCheck,
6831
- className: pill,
6832
- title: t("pptx.ribbon.accessibilityCheck"),
6833
- ...controlAttr("help.help.accessibility"),
6834
- children: t("pptx.ribbon.accessibilityCheck")
6835
- }
6836
- )
6837
- ] });
6807
+ const actions = {
6808
+ "help.help.options": p.onOpenSettings ?? p.onToggleShortcuts,
6809
+ "help.help.keyboardShortcuts": p.onToggleShortcuts,
6810
+ "help.help.accessibility": p.onRunAccessibilityCheck
6811
+ };
6812
+ return /* @__PURE__ */ jsx(WebRibbonGroup, { label: t("pptx.ribbon.tab.help"), groupId: "help.help", children: HELP_RIBBON_COMMANDS.filter(
6813
+ (command) => command.id !== "help.help.options" || showSettings
6814
+ ).map((command) => /* @__PURE__ */ jsx(
6815
+ WebRibbonCommand,
6816
+ {
6817
+ controlId: command.id,
6818
+ label: t(command.labelKey),
6819
+ icon: command.icon,
6820
+ compact: true,
6821
+ onCommand: () => actions[command.id]()
6822
+ },
6823
+ command.id
6824
+ )) });
6838
6825
  }
6839
- function RecordSection({
6840
- onRecordFromBeginning,
6841
- onRecordFromCurrent
6842
- }) {
6826
+ function RecordSection(props) {
6843
6827
  const { t } = useTranslation();
6844
- return /* @__PURE__ */ jsxs(Fragment, { children: [
6845
- /* @__PURE__ */ jsx(RibbonGroup, { label: t("pptx.record.camera"), groupId: "record.camera", children: /* @__PURE__ */ jsx(
6846
- RibbonCommand,
6847
- {
6848
- controlId: "record.camera.cameo",
6849
- icon: /* @__PURE__ */ jsx(LuCamera, {}),
6850
- label: t("pptx.record.cameo"),
6851
- disabled: true
6852
- }
6853
- ) }),
6854
- /* @__PURE__ */ jsxs(RibbonGroup, { label: t("pptx.ribbon.tab.record"), groupId: "record.record", children: [
6855
- /* @__PURE__ */ jsx(
6856
- RibbonCommand,
6857
- {
6858
- controlId: "record.record.fromBeginning",
6859
- icon: /* @__PURE__ */ jsx(LuVideo, {}),
6860
- label: t("pptx.slideShow.fromBeginning"),
6861
- onClick: onRecordFromBeginning
6862
- }
6863
- ),
6864
- /* @__PURE__ */ jsx(
6865
- RibbonCommand,
6866
- {
6867
- icon: /* @__PURE__ */ jsx(LuPlay, {}),
6868
- controlId: "record.record.fromCurrent",
6869
- label: t("pptx.slideShow.fromCurrent"),
6870
- onClick: onRecordFromCurrent
6871
- }
6872
- )
6873
- ] }),
6874
- /* @__PURE__ */ jsxs(RibbonGroup, { label: t("pptx.record.manage"), groupId: "record.manage", children: [
6875
- /* @__PURE__ */ jsx(
6876
- RibbonCommand,
6877
- {
6878
- controlId: "record.manage.clear",
6879
- icon: /* @__PURE__ */ jsx(LuEraser, {}),
6880
- label: t("pptx.record.clear"),
6881
- disabled: true
6882
- }
6883
- ),
6884
- /* @__PURE__ */ jsx(
6885
- RibbonCommand,
6886
- {
6887
- controlId: "record.manage.reset",
6888
- icon: /* @__PURE__ */ jsx(LuRotateCcw, {}),
6889
- label: t("pptx.record.resetToCameo"),
6890
- disabled: true
6891
- }
6892
- )
6893
- ] }),
6894
- /* @__PURE__ */ jsx(RibbonGroup, { label: t("pptx.ribbon.tab.help"), groupId: "record.help", children: /* @__PURE__ */ jsx(
6895
- RibbonCommand,
6896
- {
6897
- controlId: "record.help.learnMore",
6898
- icon: /* @__PURE__ */ jsx(LuCircleHelp, {}),
6899
- label: t("pptx.record.learnMore"),
6900
- disabled: true
6901
- }
6902
- ) })
6903
- ] });
6828
+ const actions = {
6829
+ "record.record.fromBeginning": props.onRecordFromBeginning,
6830
+ "record.record.fromCurrent": props.onRecordFromCurrent
6831
+ };
6832
+ return /* @__PURE__ */ jsx(Fragment, { children: RECORD_COMMAND_GROUPS.map((group) => /* @__PURE__ */ jsx(WebRibbonGroup, { label: t(group.labelKey), groupId: group.id, children: group.commands.map((command) => /* @__PURE__ */ jsx(
6833
+ WebRibbonCommand,
6834
+ {
6835
+ controlId: command.id,
6836
+ label: t(command.labelKey),
6837
+ icon: command.icon,
6838
+ disabled: command.unsupported,
6839
+ compact: true,
6840
+ onCommand: actions[command.id]
6841
+ },
6842
+ command.id
6843
+ )) }, group.id)) });
6904
6844
  }
6905
6845
  function ToolbarLateTabs({
6906
6846
  p,
@@ -8189,13 +8129,13 @@ function EditPointsOverlay({
8189
8129
  const svgRef = useRef(null);
8190
8130
  const latest = useRef({ onCommit, onExit });
8191
8131
  latest.current = { onCommit, onExit };
8192
- const elementId = element.id;
8132
+ const elementId2 = element.id;
8193
8133
  const sessionRef = useRef(null);
8194
- if (sessionRef.current?.id !== elementId) {
8134
+ if (sessionRef.current?.id !== elementId2) {
8195
8135
  sessionRef.current = {
8196
- id: elementId,
8136
+ id: elementId2,
8197
8137
  session: new EditPointsSession(element, {
8198
- onCommit: (patch) => latest.current.onCommit(elementId, patch),
8138
+ onCommit: (patch) => latest.current.onCommit(elementId2, patch),
8199
8139
  onExit: () => latest.current.onExit(),
8200
8140
  onChange: rerender,
8201
8141
  hiddenCommands
@@ -8248,7 +8188,7 @@ function EditPointsOverlay({
8248
8188
  role: "application",
8249
8189
  "aria-label": t("pptx.editPoints.overlay"),
8250
8190
  "data-pptx-edit-points-overlay": "true",
8251
- "data-pptx-edit-points-element": elementId,
8191
+ "data-pptx-edit-points-element": elementId2,
8252
8192
  style: { touchAction: "none" },
8253
8193
  onPointerDown,
8254
8194
  onPointerMove,
@@ -9183,11 +9123,11 @@ function useConnectorCreation({
9183
9123
  }) {
9184
9124
  const [connectorDragState, setConnectorDragState] = useState(null);
9185
9125
  const handleConnectionSiteDown = useCallback(
9186
- (elementId, siteIndex, e) => {
9126
+ (elementId2, siteIndex, e) => {
9187
9127
  e.stopPropagation();
9188
9128
  e.preventDefault();
9189
9129
  setConnectorDragState({
9190
- startElementId: elementId,
9130
+ startElementId: elementId2,
9191
9131
  startSiteIndex: siteIndex,
9192
9132
  currentX: e.clientX,
9193
9133
  currentY: e.clientY
@@ -9541,15 +9481,15 @@ function useStableCallbacks(callbacks) {
9541
9481
  const cbRef = useRef(callbacks);
9542
9482
  cbRef.current = callbacks;
9543
9483
  const stableResizePointerDown = useCallback(
9544
- (elementId, e, handle) => cbRef.current.onResizePointerDown(elementId, e, handle),
9484
+ (elementId2, e, handle) => cbRef.current.onResizePointerDown(elementId2, e, handle),
9545
9485
  []
9546
9486
  );
9547
9487
  const stableAdjustmentPointerDown = useCallback(
9548
- (elementId, e, descriptor) => cbRef.current.onAdjustmentPointerDown(elementId, e, descriptor),
9488
+ (elementId2, e, descriptor) => cbRef.current.onAdjustmentPointerDown(elementId2, e, descriptor),
9549
9489
  []
9550
9490
  );
9551
9491
  const stableRotate = useCallback(
9552
- (elementId, rotationDeg) => cbRef.current.onRotate?.(elementId, rotationDeg),
9492
+ (elementId2, rotationDeg) => cbRef.current.onRotate?.(elementId2, rotationDeg),
9553
9493
  []
9554
9494
  );
9555
9495
  const stableInlineEditChange = useCallback(
@@ -9559,15 +9499,15 @@ function useStableCallbacks(callbacks) {
9559
9499
  const stableInlineEditCommit = useCallback(() => cbRef.current.onInlineEditCommit(), []);
9560
9500
  const stableInlineEditCancel = useCallback(() => cbRef.current.onInlineEditCancel(), []);
9561
9501
  const stableTableCellSelect = useCallback(
9562
- (cell, elementId) => cbRef.current.onTableCellSelect(cell, elementId),
9502
+ (cell, elementId2) => cbRef.current.onTableCellSelect(cell, elementId2),
9563
9503
  []
9564
9504
  );
9565
9505
  const stableCommitCellEdit = useCallback(
9566
- (elementId, rowIndex, colIndex, text) => cbRef.current.onCommitCellEdit?.(elementId, rowIndex, colIndex, text),
9506
+ (elementId2, rowIndex, colIndex, text) => cbRef.current.onCommitCellEdit?.(elementId2, rowIndex, colIndex, text),
9567
9507
  []
9568
9508
  );
9569
9509
  const stableUpdateSmartArtElement = useCallback(
9570
- (elementId, updates) => cbRef.current.onUpdateSmartArtElement?.(elementId, updates),
9510
+ (elementId2, updates) => cbRef.current.onUpdateSmartArtElement?.(elementId2, updates),
9571
9511
  []
9572
9512
  );
9573
9513
  const stableFormatText = useCallback(
@@ -9575,11 +9515,11 @@ function useStableCallbacks(callbacks) {
9575
9515
  []
9576
9516
  );
9577
9517
  const stableResizeTableColumns = useCallback(
9578
- (elementId, newWidths) => cbRef.current.onResizeTableColumns?.(elementId, newWidths),
9518
+ (elementId2, newWidths) => cbRef.current.onResizeTableColumns?.(elementId2, newWidths),
9579
9519
  []
9580
9520
  );
9581
9521
  const stableResizeTableRow = useCallback(
9582
- (elementId, rowIndex, newHeight) => cbRef.current.onResizeTableRow?.(elementId, rowIndex, newHeight),
9522
+ (elementId2, rowIndex, newHeight) => cbRef.current.onResizeTableRow?.(elementId2, rowIndex, newHeight),
9583
9523
  []
9584
9524
  );
9585
9525
  return {
@@ -16383,6 +16323,10 @@ function PresentationSubtitleBar({
16383
16323
  onCaptionChange
16384
16324
  }) {
16385
16325
  const { t } = useTranslation();
16326
+ const language = subtitleRecognitionLanguage(
16327
+ subtitleSettingsFromOptions(useViewerOptionsContext()),
16328
+ typeof navigator === "undefined" ? "en-US" : navigator.language
16329
+ );
16386
16330
  const [captionText, setCaptionText] = useState("");
16387
16331
  const [supportState, setSupportState] = useState(
16388
16332
  "unknown"
@@ -16398,8 +16342,7 @@ function PresentationSubtitleBar({
16398
16342
  return;
16399
16343
  }
16400
16344
  shouldRunRef.current = true;
16401
- const speechWindow = window;
16402
- const RecognitionCtor = speechWindow.SpeechRecognition ?? speechWindow.webkitSpeechRecognition;
16345
+ const RecognitionCtor = getSpeechRecognitionCtor();
16403
16346
  if (!RecognitionCtor) {
16404
16347
  setSupportState("unsupported");
16405
16348
  return;
@@ -16408,20 +16351,9 @@ function PresentationSubtitleBar({
16408
16351
  const recognition = new RecognitionCtor();
16409
16352
  recognition.continuous = true;
16410
16353
  recognition.interimResults = true;
16411
- recognition.lang = navigator.language || "en-US";
16354
+ recognition.lang = language;
16412
16355
  recognition.onresult = (event) => {
16413
- let finalText = "";
16414
- let interimText = "";
16415
- for (let index = event.resultIndex; index < event.results.length; index += 1) {
16416
- const result = event.results[index];
16417
- const fragment = result?.[0]?.transcript ?? "";
16418
- if (result?.isFinal) {
16419
- finalText += fragment;
16420
- } else {
16421
- interimText += fragment;
16422
- }
16423
- }
16424
- const merged = `${finalText} ${interimText}`.trim();
16356
+ const merged = mergeCaptionResults(event.resultIndex, event.results);
16425
16357
  if (merged.length > 0) {
16426
16358
  setCaptionText(merged);
16427
16359
  onCaptionChange?.(merged);
@@ -16449,7 +16381,7 @@ function PresentationSubtitleBar({
16449
16381
  recognition.stop();
16450
16382
  recognitionRef.current = null;
16451
16383
  };
16452
- }, [visible, onCaptionChange]);
16384
+ }, [visible, onCaptionChange, language]);
16453
16385
  if (!visible) {
16454
16386
  return null;
16455
16387
  }
@@ -17397,14 +17329,14 @@ function SelectionPane({
17397
17329
  const [dragIndex, setDragIndex] = useState(null);
17398
17330
  const [dragOverIndex, setDragOverIndex] = useState(null);
17399
17331
  const handleSelect = useCallback(
17400
- (elementId) => {
17401
- setSelectedElementId(elementId);
17402
- setSelectedElementIds([elementId]);
17332
+ (elementId2) => {
17333
+ setSelectedElementId(elementId2);
17334
+ setSelectedElementIds([elementId2]);
17403
17335
  },
17404
17336
  [setSelectedElementId, setSelectedElementIds]
17405
17337
  );
17406
17338
  const handleToggleVisibility = useCallback(
17407
- (elementId) => {
17339
+ (elementId2) => {
17408
17340
  setSlides((prevSlides) => {
17409
17341
  const nextSlides = [...prevSlides];
17410
17342
  const slide = nextSlides[activeSlideIndex];
@@ -17412,7 +17344,7 @@ function SelectionPane({
17412
17344
  return prevSlides;
17413
17345
  }
17414
17346
  const nextElements = [...slide.elements ?? []];
17415
- const idx = nextElements.findIndex((e) => e.id === elementId);
17347
+ const idx = nextElements.findIndex((e) => e.id === elementId2);
17416
17348
  if (idx === -1) {
17417
17349
  return prevSlides;
17418
17350
  }
@@ -17440,9 +17372,9 @@ function SelectionPane({
17440
17372
  [canEdit]
17441
17373
  );
17442
17374
  const commitRename = useCallback(() => {
17443
- const elementId = editingId;
17375
+ const elementId2 = editingId;
17444
17376
  setEditingId(null);
17445
- if (elementId === null) {
17377
+ if (elementId2 === null) {
17446
17378
  return;
17447
17379
  }
17448
17380
  const commit = resolveSelectionPaneRename(editSeedRef.current, editingName);
@@ -17456,7 +17388,7 @@ function SelectionPane({
17456
17388
  return prevSlides;
17457
17389
  }
17458
17390
  const nextElements = [...slide.elements ?? []];
17459
- const idx = nextElements.findIndex((e) => e.id === elementId);
17391
+ const idx = nextElements.findIndex((e) => e.id === elementId2);
17460
17392
  if (idx === -1) {
17461
17393
  return prevSlides;
17462
17394
  }
@@ -27962,12 +27894,12 @@ function InspectorElementsTab({
27962
27894
  onUpdateSlide
27963
27895
  }) {
27964
27896
  const { t } = useTranslation();
27965
- const toggleHidden = (elementId) => {
27897
+ const toggleHidden = (elementId2) => {
27966
27898
  const elements2 = activeSlide?.elements;
27967
27899
  if (!canEdit || !elements2) {
27968
27900
  return;
27969
27901
  }
27970
- const index = elements2.findIndex((el) => el.id === elementId);
27902
+ const index = elements2.findIndex((el) => el.id === elementId2);
27971
27903
  if (index === -1) {
27972
27904
  return;
27973
27905
  }
@@ -30323,33 +30255,33 @@ function PasteSpecialDialog({
30323
30255
  }
30324
30256
  );
30325
30257
  }
30326
- function findElementNode(elementId) {
30258
+ function findElementNode(elementId2) {
30327
30259
  return document.querySelector(
30328
- `[data-element-id="${elementId}"][data-pptx-element="true"]`
30260
+ `[data-element-id="${elementId2}"][data-pptx-element="true"]`
30329
30261
  );
30330
30262
  }
30331
30263
  function PasteOptionsToolbar({
30332
- elementId,
30264
+ elementId: elementId2,
30333
30265
  onChoose,
30334
30266
  onDismiss
30335
30267
  }) {
30336
30268
  const { t } = useTranslation();
30337
30269
  const [rect, setRect] = useState(null);
30338
30270
  useEffect(() => {
30339
- if (!elementId) {
30271
+ if (!elementId2) {
30340
30272
  setRect(null);
30341
30273
  return;
30342
30274
  }
30343
- const node = findElementNode(elementId);
30275
+ const node = findElementNode(elementId2);
30344
30276
  if (!node) {
30345
30277
  setRect(null);
30346
30278
  return;
30347
30279
  }
30348
30280
  const box = node.getBoundingClientRect();
30349
30281
  setRect({ left: box.right, top: box.bottom });
30350
- }, [elementId]);
30282
+ }, [elementId2]);
30351
30283
  useEffect(() => {
30352
- if (!elementId) {
30284
+ if (!elementId2) {
30353
30285
  return;
30354
30286
  }
30355
30287
  const dismiss = () => onDismiss();
@@ -30362,8 +30294,8 @@ function PasteOptionsToolbar({
30362
30294
  window.removeEventListener("pointerdown", dismiss, true);
30363
30295
  window.removeEventListener("keydown", dismiss, true);
30364
30296
  };
30365
- }, [elementId, onDismiss]);
30366
- if (!elementId || !rect) {
30297
+ }, [elementId2, onDismiss]);
30298
+ if (!elementId2 || !rect) {
30367
30299
  return null;
30368
30300
  }
30369
30301
  return /* @__PURE__ */ jsx(
@@ -34144,7 +34076,7 @@ function useOutlineAuthoring({
34144
34076
  () => ({
34145
34077
  editPointsElementId: enabled ? editPointsElementId : null,
34146
34078
  hiddenEditPointsCommands: customization.hiddenEditPointsCommands,
34147
- onCommitEditPoints: (elementId, patch) => updateElement(elementId, patch),
34079
+ onCommitEditPoints: (elementId2, patch) => updateElement(elementId2, patch),
34148
34080
  onExitEditPoints,
34149
34081
  freeformTool: activeFreeformTool,
34150
34082
  onFreeformCommit: (shape) => {
@@ -34166,6 +34098,50 @@ function useOutlineAuthoring({
34166
34098
  ]
34167
34099
  );
34168
34100
  }
34101
+ function elementId(event) {
34102
+ return event.target instanceof Element ? event.target.closest("[data-element-id]")?.dataset.elementId : void 0;
34103
+ }
34104
+ function useStageAnimationTriggers(root, slide, triggers, onStageClick) {
34105
+ const hoverRef = useRef(void 0);
34106
+ useEffect(() => {
34107
+ root.current?.querySelectorAll("[data-element-id]").forEach((el) => {
34108
+ const id = el.dataset.elementId ?? "";
34109
+ const trigger = triggers?.interactiveTriggerShapeIds.has(id) || triggers?.hoverTriggerShapeIds.has(id) || false;
34110
+ el.toggleAttribute(PRESENTATION_ANIM_TRIGGER_ATTRIBUTE, trigger);
34111
+ el.style.cursor = trigger ? "pointer" : "";
34112
+ });
34113
+ hoverRef.current = void 0;
34114
+ }, [root, slide, triggers]);
34115
+ return {
34116
+ onClick(event) {
34117
+ const id = elementId(event);
34118
+ if (id && triggers?.interactiveTriggerShapeIds.has(id) && triggers.handleInteractiveShapeClick(id)) {
34119
+ return;
34120
+ }
34121
+ onStageClick?.(event);
34122
+ },
34123
+ onMouseOver(event) {
34124
+ const id = elementId(event);
34125
+ const next = id && triggers?.hoverTriggerShapeIds.has(id) ? id : void 0;
34126
+ if (next === hoverRef.current) {
34127
+ return;
34128
+ }
34129
+ if (hoverRef.current) {
34130
+ triggers?.handleHoverEnd(hoverRef.current);
34131
+ }
34132
+ hoverRef.current = next;
34133
+ if (next) {
34134
+ triggers?.handleHoverStart(next);
34135
+ }
34136
+ },
34137
+ onMouseLeave() {
34138
+ if (hoverRef.current) {
34139
+ triggers?.handleHoverEnd(hoverRef.current);
34140
+ }
34141
+ hoverRef.current = void 0;
34142
+ }
34143
+ };
34144
+ }
34169
34145
  function PresentationStage({
34170
34146
  activeSlide,
34171
34147
  templateElements,
@@ -34181,10 +34157,17 @@ function PresentationStage({
34181
34157
  fieldContext,
34182
34158
  tableStyleContext,
34183
34159
  onStageClick,
34160
+ animationTriggers,
34184
34161
  children,
34185
34162
  screenOverlay
34186
34163
  }) {
34187
34164
  const containerRef = useRef(null);
34165
+ const triggerHandlers = useStageAnimationTriggers(
34166
+ containerRef,
34167
+ activeSlide,
34168
+ animationTriggers,
34169
+ onStageClick
34170
+ );
34188
34171
  const [box, setBox] = useState(null);
34189
34172
  useEffect(() => {
34190
34173
  const el = containerRef.current;
@@ -34225,7 +34208,7 @@ function PresentationStage({
34225
34208
  ref: containerRef,
34226
34209
  "data-pptx-presentation-stage": true,
34227
34210
  className: "relative flex-1 min-h-0 overflow-hidden bg-black select-none",
34228
- onClick: onStageClick,
34211
+ ...triggerHandlers,
34229
34212
  children: [
34230
34213
  /* @__PURE__ */ jsxs(
34231
34214
  "div",
@@ -34488,14 +34471,14 @@ ${url}`)) {
34488
34471
  [viewerOptions, t]
34489
34472
  );
34490
34473
  const handleActionClick = useCallback(
34491
- (elementId, action) => {
34474
+ (elementId2, action) => {
34492
34475
  if (mode === "present") {
34493
34476
  const resolved = resolvePresentationAction(action, { slideCount: slides.length });
34494
34477
  if (resolved.intent.kind === "openUrl") {
34495
34478
  openExternalUrl(resolved.intent.url);
34496
34479
  return;
34497
34480
  }
34498
- presentation.handlePresentationAction(action, elementId);
34481
+ presentation.handlePresentationAction(action, elementId2);
34499
34482
  } else if (action.url) {
34500
34483
  openExternalUrl(action.url);
34501
34484
  }
@@ -34597,9 +34580,9 @@ ${url}`)) {
34597
34580
  onPrev: handleSwipePrev
34598
34581
  });
34599
34582
  const pickActive = aiPickMode && Boolean(onAiPickElement) && mode === "edit";
34600
- const handleElementClick = pickActive ? (elementId, e) => {
34583
+ const handleElementClick = pickActive ? (elementId2, e) => {
34601
34584
  e.stopPropagation();
34602
- onAiPickElement?.(activeSlideIndex, elementId);
34585
+ onAiPickElement?.(activeSlideIndex, elementId2);
34603
34586
  } : canvasHandlers.handleElementClick;
34604
34587
  const handleElementMouseDown = pickActive ? (_elementId, e) => {
34605
34588
  e.stopPropagation();
@@ -34637,6 +34620,7 @@ ${url}`)) {
34637
34620
  mode === "present" ? /* @__PURE__ */ jsx(
34638
34621
  PresentationStage,
34639
34622
  {
34623
+ animationTriggers: presentation,
34640
34624
  activeSlide,
34641
34625
  templateElements,
34642
34626
  canvasSize,
@@ -34751,7 +34735,7 @@ ${url}`)) {
34751
34735
  onInlineEditChange: s.setInlineEditingText,
34752
34736
  onInlineEditCommit: canvasHandlers.handleInlineEditCommit,
34753
34737
  onInlineEditCancel: () => s.setInlineEditingElementId(null),
34754
- onTableCellSelect: (cell, elementId) => s.setTableEditorState(cell ? { ...cell, elementId } : null),
34738
+ onTableCellSelect: (cell, elementId2) => s.setTableEditorState(cell ? { ...cell, elementId: elementId2 } : null),
34755
34739
  onCommitCellEdit: tableOps.handleCommitCellEdit,
34756
34740
  onUpdateSmartArtElement: canvasHandlers.handleUpdateSmartArtElement,
34757
34741
  onFormatText: canvasHandlers.handleFormatText,
@@ -34924,7 +34908,7 @@ function useTableStyleMapHandlers(input) {
34924
34908
  var AiChatPanel = lazy(async () => {
34925
34909
  const [{ useChat }, { default: Panel }] = await Promise.all([
34926
34910
  import('@ai-sdk/react'),
34927
- import('./AiChatPanel-WQUOEVQB.mjs')
34911
+ import('./AiChatPanel-7OVUGUKW.mjs')
34928
34912
  ]);
34929
34913
  function BoundAiChatPanel(props) {
34930
34914
  return /* @__PURE__ */ jsx(Panel, { ...props, useChat });
@@ -37951,6 +37935,13 @@ function SettingsDialog({
37951
37935
  )
37952
37936
  ] });
37953
37937
  }
37938
+ function ViewerOptionsProvider({
37939
+ options,
37940
+ store,
37941
+ children
37942
+ }) {
37943
+ return /* @__PURE__ */ jsx(ViewerOptionsStoreContext.Provider, { value: store, children: /* @__PURE__ */ jsx(ViewerOptionsContext.Provider, { value: options, children }) });
37944
+ }
37954
37945
  function useAiBridge(input) {
37955
37946
  const ref = useRef(input);
37956
37947
  ref.current = input;
@@ -38006,9 +37997,9 @@ function useAiBridge(input) {
38006
37997
  live.applySelection(elementIds[0] ?? null, elementIds);
38007
37998
  },
38008
37999
  applySlidesUpdate,
38009
- updateElement(slideIndex, elementId, updates) {
38000
+ updateElement(slideIndex, elementId2, updates) {
38010
38001
  applySlidesUpdate((slides) => {
38011
- const el = slides[slideIndex]?.elements.find((e) => e.id === elementId);
38002
+ const el = slides[slideIndex]?.elements.find((e) => e.id === elementId2);
38012
38003
  if (el) {
38013
38004
  applyElementUpdate(el, updates);
38014
38005
  }
@@ -38128,12 +38119,12 @@ function useAiPanelController(input) {
38128
38119
  setIsOpen(true);
38129
38120
  }, []);
38130
38121
  const stopPicking = useCallback(() => setPickMode(false), []);
38131
- const addPick = useCallback((slideIndex, elementId) => {
38122
+ const addPick = useCallback((slideIndex, elementId2) => {
38132
38123
  setPickTargets((prev) => {
38133
- if (prev.some((t) => t.kind === "element" && t.elementId === elementId)) {
38124
+ if (prev.some((t) => t.kind === "element" && t.elementId === elementId2)) {
38134
38125
  return prev;
38135
38126
  }
38136
- return [...prev, { kind: "element", slideIndex, elementId }];
38127
+ return [...prev, { kind: "element", slideIndex, elementId: elementId2 }];
38137
38128
  });
38138
38129
  }, []);
38139
38130
  const clearPicks = useCallback(() => {
@@ -38171,8 +38162,8 @@ function useAiPanelController(input) {
38171
38162
  }
38172
38163
  }
38173
38164
  if (toolFocus) {
38174
- for (const elementId of toolFocus.elementIds) {
38175
- out.push({ slideIndex: toolFocus.slideIndex, elementId, variant: "active" });
38165
+ for (const elementId2 of toolFocus.elementIds) {
38166
+ out.push({ slideIndex: toolFocus.slideIndex, elementId: elementId2, variant: "active" });
38176
38167
  }
38177
38168
  }
38178
38169
  return out;
@@ -38401,12 +38392,12 @@ var CROP_KEEP_SELECTOR = [
38401
38392
  "[data-pptx-crop-aspect]",
38402
38393
  "[data-pptx-crop-action]"
38403
38394
  ].join(",");
38404
- function naturalSizeOf(elementId) {
38395
+ function naturalSizeOf(elementId2) {
38405
38396
  if (typeof document === "undefined" || typeof CSS === "undefined") {
38406
38397
  return void 0;
38407
38398
  }
38408
38399
  const img = document.querySelector(
38409
- `[data-element-id="${CSS.escape(elementId)}"][data-pptx-element="true"] img`
38400
+ `[data-element-id="${CSS.escape(elementId2)}"][data-pptx-element="true"] img`
38410
38401
  );
38411
38402
  return img && img.naturalWidth > 0 && img.naturalHeight > 0 ? { width: img.naturalWidth, height: img.naturalHeight } : void 0;
38412
38403
  }
@@ -39689,7 +39680,7 @@ var PowerPointViewer = forwardRef(
39689
39680
  // Nothing previously provided it, so every one of those consumers was
39690
39681
  // silently reading `DEFAULT_VIEWER_OPTIONS` forever, no matter what
39691
39682
  // the user changed in the Options dialog.
39692
- /* @__PURE__ */ jsx(ViewerOptionsContext.Provider, { value: viewerOptions, children: /* @__PURE__ */ jsx(ViewerCustomizationContext.Provider, { value: customizationResolved, children: /* @__PURE__ */ jsx(AccountAuthContext.Provider, { value: accountAuth, children: /* @__PURE__ */ jsx(Rendering3DFlagsContext.Provider, { value: effective3D, children: /* @__PURE__ */ jsx(ViewerThemeProvider, { theme: effectiveTheme, children: /* @__PURE__ */ jsxs(
39683
+ /* @__PURE__ */ jsx(ViewerOptionsProvider, { options: viewerOptions, store: optionsStore, children: /* @__PURE__ */ jsx(ViewerCustomizationContext.Provider, { value: customizationResolved, children: /* @__PURE__ */ jsx(AccountAuthContext.Provider, { value: accountAuth, children: /* @__PURE__ */ jsx(Rendering3DFlagsContext.Provider, { value: effective3D, children: /* @__PURE__ */ jsx(ViewerThemeProvider, { theme: effectiveTheme, children: /* @__PURE__ */ jsxs(
39693
39684
  CollaborationProvider,
39694
39685
  {
39695
39686
  config: collaboration,