pptx-react-viewer 4.59.0 → 4.60.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 (69) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/{chunk-6A7RIFYO.mjs → chunk-FYQVCABH.mjs} +23 -4
  3. package/dist/chunk-FYQVCABH.mjs.br +0 -0
  4. package/dist/chunk-FYQVCABH.mjs.gz +0 -0
  5. package/dist/{chunk-KPBL5JMS.mjs → chunk-JXP7DZTT.mjs} +471 -150
  6. package/dist/chunk-JXP7DZTT.mjs.br +0 -0
  7. package/dist/chunk-JXP7DZTT.mjs.gz +0 -0
  8. package/dist/{chunk-2W6VOPDR.js → chunk-TXVGYIO6.js} +22 -3
  9. package/dist/chunk-TXVGYIO6.js.br +0 -0
  10. package/dist/chunk-TXVGYIO6.js.gz +0 -0
  11. package/dist/{chunk-NT5X2MHW.js → chunk-XDJKHCKL.js} +1538 -1217
  12. package/dist/chunk-XDJKHCKL.js.br +0 -0
  13. package/dist/chunk-XDJKHCKL.js.gz +0 -0
  14. package/dist/i18n/de.cjs +8 -0
  15. package/dist/i18n/de.cjs.br +0 -0
  16. package/dist/i18n/de.cjs.gz +0 -0
  17. package/dist/i18n/de.mjs +8 -0
  18. package/dist/i18n/de.mjs.br +0 -0
  19. package/dist/i18n/de.mjs.gz +0 -0
  20. package/dist/i18n/es.cjs +8 -0
  21. package/dist/i18n/es.cjs.br +0 -0
  22. package/dist/i18n/es.cjs.gz +0 -0
  23. package/dist/i18n/es.mjs +8 -0
  24. package/dist/i18n/es.mjs.br +0 -0
  25. package/dist/i18n/es.mjs.gz +0 -0
  26. package/dist/i18n/fr.cjs +8 -0
  27. package/dist/i18n/fr.cjs.br +0 -0
  28. package/dist/i18n/fr.cjs.gz +0 -0
  29. package/dist/i18n/fr.mjs +8 -0
  30. package/dist/i18n/fr.mjs.br +0 -0
  31. package/dist/i18n/fr.mjs.gz +0 -0
  32. package/dist/i18n/zh-CN.cjs +8 -0
  33. package/dist/i18n/zh-CN.cjs.br +0 -0
  34. package/dist/i18n/zh-CN.cjs.gz +0 -0
  35. package/dist/i18n/zh-CN.mjs +8 -0
  36. package/dist/i18n/zh-CN.mjs.br +0 -0
  37. package/dist/i18n/zh-CN.mjs.gz +0 -0
  38. package/dist/index.d.ts +2 -0
  39. package/dist/index.js +24 -24
  40. package/dist/index.js.br +0 -0
  41. package/dist/index.js.gz +0 -0
  42. package/dist/index.mjs +2 -2
  43. package/dist/index.mjs.br +0 -0
  44. package/dist/index.mjs.gz +0 -0
  45. package/dist/internals.d.ts +15 -0
  46. package/dist/internals.js +80 -80
  47. package/dist/internals.js.br +0 -0
  48. package/dist/internals.js.gz +0 -0
  49. package/dist/internals.mjs +1 -1
  50. package/dist/internals.mjs.br +0 -0
  51. package/dist/internals.mjs.gz +0 -0
  52. package/dist/pptx-viewer.css +1 -1
  53. package/dist/pptx-viewer.css.br +0 -0
  54. package/dist/pptx-viewer.css.gz +0 -0
  55. package/dist/viewer/index.js +18 -18
  56. package/dist/viewer/index.js.br +0 -0
  57. package/dist/viewer/index.js.gz +0 -0
  58. package/dist/viewer/index.mjs +2 -2
  59. package/dist/viewer/index.mjs.br +0 -0
  60. package/dist/viewer/index.mjs.gz +0 -0
  61. package/package.json +3 -3
  62. package/dist/chunk-2W6VOPDR.js.br +0 -0
  63. package/dist/chunk-2W6VOPDR.js.gz +0 -0
  64. package/dist/chunk-6A7RIFYO.mjs.br +0 -0
  65. package/dist/chunk-6A7RIFYO.mjs.gz +0 -0
  66. package/dist/chunk-KPBL5JMS.mjs.br +0 -0
  67. package/dist/chunk-KPBL5JMS.mjs.gz +0 -0
  68. package/dist/chunk-NT5X2MHW.js.br +0 -0
  69. package/dist/chunk-NT5X2MHW.js.gz +0 -0
@@ -1,9 +1,9 @@
1
1
  import { aiAssistants, AiChatPanelLazy } from './chunk-NE5JQMED.mjs';
2
- import { useCollaboration, useVirtualizedSlides, StaticElementRenderer, useModalDismissDrag, useToolbarVisibility, useViewerOptionsContext, InlineCollaborationContext, SlideBackgroundImageLayer, ElementRenderer, withDisplayName, ResizeHandles, imgSrc, renderStrokeView, useChartFormatContext, useViewerOptions, useReadOnlyRecommendationState, useCompatibilityToastsState, useReducedMotion, useViewerState, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useClearSelectionOnSlideChange, useEditorOperations, useViewerIntegration, useViewPreferencesSync, useLayoutSwitching, Rendering3DFlagsContext, CollaborationProvider, ChartFormatContext, useSheetDismissDrag, playAnimationSound, ViewerOptionsStoreContext, safePrompt, useController, scopeLayoutOptionsToActiveSlide, createReviewCommentsHost, ChartPartSelectionProvider, useKeyboardInsets, ViewerOptionsContext, useReportOnChange, useCollaborationDocumentSync, useFollowMode, useBroadcastFollower, useSwipeNavigation, PresentationTransitionOverlay, RemoteSelectionOverlay, CollaborationCursorOverlay, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, downloadBlob, useChartPartSelection, resolveSmartArtDataPalette, DUOTONE_PRESETS, getSlideTransitionAnimations, SLIDE_TRANSITION_KEYFRAMES } from './chunk-6A7RIFYO.mjs';
2
+ import { useCollaboration, useVirtualizedSlides, StaticElementRenderer, useModalDismissDrag, useToolbarVisibility, useViewerOptionsContext, InlineCollaborationContext, SlideBackgroundImageLayer, ElementRenderer, withDisplayName, ResizeHandles, imgSrc, renderStrokeView, useChartFormatContext, useViewerOptions, useReadOnlyRecommendationState, useCompatibilityToastsState, useReducedMotion, useViewerState, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useClearSelectionOnSlideChange, useEditorOperations, useViewerIntegration, useViewPreferencesSync, useLayoutSwitching, Rendering3DFlagsContext, CollaborationProvider, ChartFormatContext, useSheetDismissDrag, playAnimationSound, ViewerOptionsStoreContext, safePrompt, useController, scopeLayoutOptionsToActiveSlide, createReviewCommentsHost, ChartPartSelectionProvider, useKeyboardInsets, ViewerOptionsContext, useReportOnChange, useCollaborationDocumentSync, useFollowMode, useBroadcastFollower, useSwipeNavigation, PresentationTransitionOverlay, RemoteSelectionOverlay, CollaborationCursorOverlay, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, downloadBlob, useChartPartSelection, resolveSmartArtDataPalette, DUOTONE_PRESETS, getSlideTransitionAnimations, SLIDE_TRANSITION_KEYFRAMES } from './chunk-FYQVCABH.mjs';
3
3
  import { useTranslation, DEFAULT_SECTION_GROUP_ID, cn, getShapeAdjustmentHandleDescriptors, isConnectorOrLineElement, PptxI18nContext, TOOLBAR_SECTIONS, GRID_SIZE, getElementTransformWithoutRotation, getElementTransform, MIN_ELEMENT_SIZE, UNGROUPED_SECTION_ID, ViewerLocaleControlsContext, hasCopyableFormat, ViewerI18nContext, useHostI18next, safeOpenUrl, isPpactionUrl, parsePpactionUrl, SHORTCUT_REFERENCE_ITEMS, isUrlSafe, computeHandoutLayout, getPrintableArea, generateNoteLineCount, normalizeHexColor, SLIDE_NAV_THUMBNAIL_WIDTH, SLIDE_TRANSITION_OPTIONS, getElementLabel, TABLE_STYLE_PRESETS, SHAPE_PRESETS, sanitizeGradientStops, formatCommentTimestamp, ANIMATION_PRESET_OPTIONS, clampCropValue, CONNECTOR_ARROW_OPTIONS, ARROW_SIZE_OPTIONS, DEFAULT_FILL_COLOR, startMotionPathPreview, startPreviewAnimation, stopPreviewAnimation, getPatternSvg, DEFAULT_STROKE_COLOR, openNativeEyeDropper } from './chunk-MR3ZSEHS.mjs';
4
- import { ANIMATION_DIRECTION_LABEL_KEYS, buildQuickStylesGallery, editorThumbnailWidth, EDITOR_THUMBNAIL_WIDTH, buildSlideTemplateContent, SLIDE_TEMPLATES, homeLaunchers, attachRibbonOverflow, isPanelVisible, parentSelection, slideSpaceElement, isGroupMember, motionPathFor, setMotionPath, RULER_THICKNESS, shouldShowElementHandles, deviceStrokeStageStyle, editorThumbnailStep, resolveSlidePaneClick, SLIDE_VIRTUALIZATION_THRESHOLD, buildSectionContextMenuEntries, buildSlidePaneContextMenuEntries, slidePaneViewItems, activateModalFocus, visibleContextualTabs, resolveActiveRibbonTab, visibleRibbonAddIns, isDialogAvailable, resolveScreenTip, RIBBON_ADD_IN_TAB_ATTR, contextualTabLabelKey, RIBBON_CONTEXTUAL_TAB_ATTR, buildTabRowActionsState, isFeatureEnabled, TAB_ROW_ACTION_CLASSES, tabRowActionsAttributes, buildTitleBarState, backstageNavEntries, BACKSTAGE_NAV, listBackstageRecentFiles, BACKSTAGE_BACK_CLASSES, BACKSTAGE_NAV_CLASSES, DEFAULT_INSERT_CHART_KIND, FREEFORM_TOOL_IDS, isDrawingToolVisible, textFontSizePtToPx, withHomeGalleries, drawingHomeControls, homeGalleryControls, homeGalleryApply, shapeOutlineChange, shapeFillChange, editingHomeControls, arrangeHomeControls, arrangePainterHomeControls, arrangeAlignAction, DESIGN_RIBBON_GROUPS, FIXED_TAB_GALLERIES, DESIGN_RIBBON_COMMANDS, designCommandState, CONTEXTUAL_TAB_GROUPS, attachEditorImagePaste, authorConnectorBetweenSites, findEraserHitElementId, generateTicks, rulerDragToGuidePosition, resolveElementInteractivity, 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, getSlideBackgroundStyle, sectionAddAfterSlideIndex, EMPTY_RESOLVED_CUSTOMIZATION, getRegionRenderer, ViewerRegionHost, BACKSTAGE_TEMPLATES, formatBackstageDate, formatBackstageSize, customizeBackstageCards, backstageCardsFor, DEFAULT_VIEWER_PROFILE, readStoredViewerPrefs, resolveProfileInitial, AVATAR_COLOR_SWATCHES, clipboardHomeControls, slidesHomeControls, resolveInsertSlideLayout, resolveDefaultFontFamily, textFontSizePxToPt, getInlineEditorSelectionResult, selectedParagraphBulletKind, elementBulletKind, selectionBulletKind, fontPickerHomeControls, fontHomeControls, nextToggleValue, RIBBON_GROUP_ATTR, paragraphHomeAlign, paragraphHomeControls, paragraphHomeAction, arrangeShapeHomeControls, strokeWidthOf, canSetStrokeWidth, canUngroupSelection, canGroupSelection, buildRibbonGallery, readRibbonTransitionDraft, SLIDE_SHOW_COMMAND_GROUPS, buildRecordRibbon, trackActiveComment, commentCounts, findCommentLocation, buildReviewRibbon, buildHelpRibbon, galleryTextLabel, pictureSizeHomeControls, chartSelectionHomeControls, dispatchChartSelectionRequest, buildFreeformShapeElement, buildLiveInkStrokeView, beginCropDrag, CONNECTOR_SITE_SNAP_PX, resolveConnectorEndpointUpdate, withConnectorEndpointUpdate, getShapeConnectionSites, FreeformToolSession, attachOverlayKeyboard, EditPointsSession, EDIT_POINTS_STYLE, resolveCollaborationConfig, resolveViewerRootOptions, buildUserFontFaceStyles, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, isEditingAllowed, resolveAutosaveActivation, viewerOptionsToPreferences, applyPreferenceToOptions, resolveHistoryDepth, attachViewerHyperlinks, shouldConfirmExternalHyperlink, applyAutoCorrectToEdit, resolveImageResolutionScale, resolveAllowExternalContent, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, saveFailureMessage, withSaveFailureToast, createSlidePackageClipboard, shouldShowAutosaveRecoveryPrompt, resolveOptionRootClasses, RIBBON_SCOPE_ATTR, resolve3DRenderingFlags, resolveSlideSizeSelection, hiddenSlideCue, editorThumbnailHeight, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, MIN_TOUCH_TARGET_PX, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, getSelectionTextStyleFlags, TEXT_DECORATION_FLAGS, dispatchCropRequest, applyRibbonGalleryItem, ribbonTransitionsDraftPatch, ribbonTransitionUpdates, ribbonTransitionsSoundChange, ribbonTransitionStockSoundUrl, playSlideTransitionPreview, playAnimationRibbonPreview, SLIDE_SHOW_OPTIONS, createViewerOptionsStore, subtitleSettingsFromOptions, subtitleSettingsLabels, isReviewCommentCommand, runReviewCommentCommand, hasTiltData, RULER_FONT_SIZE, toElementAxes, dragCropHandle, panCropImage, clientToSlidePoint, EDIT_POINTS_TARGET_ATTR, themeToCssVars, createCustomizationController, resolveEffectiveHiddenActions, pruneExpiredAutosaveSnapshots, createDeckStyleHost, galleryDeckView, tableLayoutCells, commitsThroughDeckStyle, resetChartFormatTarget, masterViewCrudActions, applyMasterViewCrudAction, masterViewCrudFailureKey, forgetStepsUsingRemovedParts, EDITOR_CHROME_CSS, ribbonCustomizationCss, applyMotionPathPreset, resetSlideLayoutPath, templateSchemeFromTheme, createBackstagePresentation, playFeedbackSound, shouldDiscardAutosaveOnSuccessfulSave, deleteAutosaveSnapshot, dispatchReadOnlyBannerIntent, readOnlyBannerState, buildFieldSubstitutionContext, setMasterViewBackgroundColor, canUseClipboard, runProgramNoticeStackStyle, observeElementHeight, printPropertiesFrameSlides, printPropertiesSlidesPerPage, PASTE_SPECIAL_OPTIONS, findCanvasElementNode, isHeaderFooterDateTextVisible, isHeaderFooterHeaderTextVisible, isHeaderFooterFooterTextVisible, getDensePanelTouchTargetPx, shouldStickyActionRow, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, computeAnchoredPopupPosition, updateSubtitleSettings, overlayPointerInput, pushRecentColor, mruColorsPatch, shouldClearAutosaveCacheOnClose, clearAutosaveSnapshots, canCropElement, cropSessionChanged, cancelCropUpdate, startCropSession, masterViewBackgroundColor, resolvePresentationAction, isPresentationAdvanceClick, toggleBlackboard, visibleTemplateElements, PRESENT_TOOLBAR_CLASSES, resolveEditPointsAvailability, isCurrentLayout, EXPANDED_MAX_HEIGHT, statusBarState, statusBarViewMode, formatVersionTimestamp, formatRelativeTime, scanAvailableFontFamilies, convertOmmlToLatex, compileLatexEquation, convertLatexToOmml, EQUATION_TEMPLATES, resolveDefaultPrintSettings, HANDOUT_OPTIONS, effectiveOrientation, computeSlideCount, estimatePageCount, computeSlideIndices, bindPptxOptionsDialog, optionsBlockSlot, optionsPaneSlot, DEFAULT_QUICK_ACCESS_COMMAND_IDS, AI_OPTIONS_CATEGORY, buildCollaborationShareUrl, buildActiveSessionUsers, slideClipboardLabels, sorterPasteInsertAt, SORTER_MIN_ZOOM, SORTER_ZOOM_STEP, SORTER_MAX_ZOOM, canGoPrevious, formatSlideCounter, READING_VIEW_COUNTER_ATTR, canGoNext, READING_VIEW_ATTR, listenForOutlineViewDismiss, OUTLINE_LEVEL_ATTR, OUTLINE_SLIDE_ATTR, OUTLINE_ROW_ATTR, OUTLINE_VIEW_ATTR, mobileElapsedSince, nextPresentedSlide, presenterPrevDisabled, presenterNextDisabled, formatMobileElapsed, mobileSlideCounter, presenterPaneAdvancesOnClick, presenterTimerProgress, PRESENTER_CONSOLE_CLASSES, formatElapsed, createCollaborationStateReporter, buildCollaborationState, writeBackReport, cropModeKeyAction, isEditPointsEnabled, findReplacementAvailability, PRESENTATION_HIT_TEST_CSS, PRESENTATION_STAGE_ATTRIBUTE, buildStrokePathD, cursorForTool, annotationOverlayZIndex, presentationInkPath, resolveNotesSchematicBodyFontSizePx, PRESENTER_NAVIGATOR_LABEL_KEYS, getPresentationContextMenuSections, CONTEXT_MENU_PRESENTATION_LAYER, presentationViewItems, subtitleRecognitionLanguage, getSpeechRecognitionCtor, mergeCaptionResults, customizeContextMenuEntries, buildContextMenuEntries, contextMenuViewItems, customizeCanvasContextMenuEntries, buildCanvasContextMenuEntries, buildLayoutPreviewGeometry, scaleSlidesForSizeChange, slideSizeToCanvasPx, resolveSelectionPaneRename, themeEditorLabels, resolveNotesSegments, defaultRichEnabled, segmentsToEditorHtml, DEBOUNCE_MS, createPlainNotesSegments, parseSegmentsFromRichEditor, segmentsToPlainText, getCurrentParagraphIndex, segmentsToParagraphs, paragraphsToSegments, MAX_INDENT_LEVEL, INDENT_PX as INDENT_PX$1, buildNotesPrintHtml, dispatchStatusBarIntent, toggleSheet, describeElementChange, sanitizeMathMl, compileEquationTemplateMathMl, computeAllNotesPages, getNotesPrintableArea, CUSTOM_FONT_ACCEPT, TOOLBAR_TABS, SHORTCUT_REFERENCE_ITEMS as SHORTCUT_REFERENCE_ITEMS$1, availableQuickAccessCommands, addQuickAccessCommand, removeQuickAccessCommand, moveQuickAccessCommand, resolveViewerAddinRows, createSlideSorterState, sorterSelectionIndexes, selectSorterSlide, applySorterAction, sorterGridColumns, sorterMenuContext, buildSlideSorterContextMenuEntries, slideSorterContextMenuLabel, openReadingView, applyReadingViewCommand, createPresentationKeyBuffer, readingViewFitScale, READING_VIEW_STAGE_ATTR, buildOutline, applyOutlineEdit, mapOutlineKey, notesSegmentsToSpans, erasePresentationInkAt, movePresenterPointer, appendPresentationInkPoint, presenterConsoleAction, presenterConsoleViewState, NOTES_FONT_SIZE_DEFAULT, formatTime, NOTES_FONT_SIZE_MIN, clampNotesFontSize, NOTES_FONT_SIZE_STEP, NOTES_FONT_SIZE_MAX, masterViewPseudoSlide, PRESENTATION_ANIM_TRIGGER_ATTRIBUTE, applyTableStyleDelete, applyTableStyleMapChange, registerCustomFont, QUICK_ACCESS_COMMAND_CATALOG, handleReadingViewKey, buildPreviewElements, deriveSlideFieldContext, MERGE_SHAPES_MENU_ITEMS, hasMultipleSelectedTableCells, isElementLocked, ELEMENT_GEOMETRY_SECTIONS, mergeSlideTransition, slideBackgroundClearState, slideBackgroundClearPatch, effectiveDirection, TRIGGER_OPTIONS, effectiveTimingCurve, getAfterAnimationState, mapSlideSorterKey, isEditorTextInputTarget, clampSorterZoom, elementLockTogglePatch, resolveInspectorSections, inspectorTogglePatch, buildTableDataGrid, getDenseGridLayoutPlan, appendTableElementRow, removeLastTableElementRow, appendTableElementColumn, removeLastTableElementColumn, removeTableElementColumn, removeTableElementRow, setTableElementCellText, applyTableStylePreset, tableStyleAssignmentUpdate, evenColumnWidths, redistributeColumnWidth, evenRowHeights, inspectorNumber, patchChartData, collapseChartTitleRunsForEdit, chartGridlinesState, chartGridlinesPatch, seriesSecondaryAxisPatch, setDataLabelsRangeCache, imageResetPatch, imageResetState, canInteractWithElement, buildOleObjectNamePatch, strokeColorChange, shouldShowAccessibilitySection, withFrameSlides, withSlidesPerPage, schemaLabel, THEME_COLOR_SLOT_LABEL_KEYS, SLIDE_SIZE_PRESETS, TRANSITION_ORIENTATION_TYPES, clampTransitionNumber, TRANSITION_SPEED_OPTIONS, TRANSITION_MORPH_OPTIONS, flattenTagCollections, resolveTemplateBackgroundRows, commentMentionQuery, matchCommentMentionAuthors, buildAnimationTimelineRows, clearMotionPath, setTrigger, setTriggerBookmark, getEffectSoundState, setEffectSound, setEffectStockSound, setAfterAnimation, setAfterAnimationColor, directionValuesFor, buildAnimationTimelineBars, motionPathPresetIdForPath, MOTION_PATH_FAMILIES, motionPathPresetsByFamily, motionPathPresetLabelKey, motionPathFamilyLabelKey, EFFECT_SOUND_CATALOGUE, listMediaBookmarkOptions, selectedBookmarkOptionValue, inspectorFieldPatch, describeTableStyleEditor, TABLE_STYLE_EDITOR_PARTS, computeMergeCellRight, computeMergeCellDown, computeSplitCell, resolveDisplayedChartType, CHART_TYPE_OPTIONS, chartDataLabelsTogglePatch, BAR3D_SHAPE_OPTIONS, bar3DShapePatch, RADAR_STYLE_OPTIONS, radarStylePatch, SURFACE_WIREFRAME_OPTIONS, surfaceWireframePatch, isSeriesUsingSecondaryAxis, seriesColorClearState, listChartUserShapeRows, withChartUserShapeAdded, createDefaultChartUserShape, withChartUserShapeRowRemoved, withChartUserShapeRowTextUpdated, rebuildDrawingShapesIfCleared, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, cropResetState, cropResetPatch, ARTISTIC_EFFECTS, mediaTrimEndSeconds, trimmedMediaDurationMs, mediaTrimEndAbsoluteMs, mediaTrimResetState, mediaTrimEndMsFromAbsoluteMs, mediaTrimResetPatch, buildOleEditDialogDescriptor, buildOleContentUpdatePatch, applyTextStyleUpdate, buildThemeColorSwatchGrid, themeColorGridView, recentColorsGridView, getNonVisualDescriptionFields, resolveActionType, ELEMENT_ACTION_TYPE_OPTIONS, canCommitActionType, slideSizeFromPreset, withSlideSizeOrientation, TRANSITION_DIR_ARROWS, buildDirectionGrid, updateTagInCollections, deleteTagFromCollections, addTagToCollections, commentTextSegments, COMMENT_MENTION_CLASS, COMMENT_MENTION_ATTRIBUTE, insertCommentMention, reorderAnimationTimelineRows, applyAnimationTimelineOrder, getEffectSoundAsset, animationEffectLabel, TABLE_STYLE_BORDER_SIDES, applyTableStyleFieldEdit, withCellStyle, LBL as LBL$1, SEL as SEL$1, FILL_MODE_OPTIONS as FILL_MODE_OPTIONS$1, SECTION_HEADING, NUM as NUM$1, getChartUserShapeGroupTransform, withChartUserShapeGroupChildAdded, createDefaultChartUserShapeGroupChild, withChartUserShapeRowUpdated, getChartUserShapeRowChartBox, withChartUserShapeRowFlipUpdated, withChartUserShapeRowRotationUpdated, withChartUserShapeRowChartBoxUpdated, smartArtLayoutSwitchPatch, mediaTrimEndMsFromSeconds, validateMediaTrimRange, OFFICE_COLOR_SWATCHES, officeColorSwatchLabel, PATTERN_PRESET_OPTIONS as PATTERN_PRESET_OPTIONS$1, SHAPE_LINE_SECTIONS, shapeQuickStylePatch, SHAPE_EFFECT_SECTIONS, createLiveColorInput, themeColorGridCommit, TEXT_BOX_SECTIONS, buildTextWarpGallery, TEXT_WARP_PRESETS, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, toSlideIndex, TABLE_STYLE_BORDER_SIDE_LABEL_KEYS, TABLE_STYLE_DASH_PRESETS, GRADIENT_TYPE_OPTIONS as GRADIENT_TYPE_OPTIONS$1, PATTERN_OPTIONS, FILL_PATTERN_LABEL_KEYS, quickStyleShapeStyle, textWarpStyle, toggleText3dExtrusion, BEVEL_PRESETS, cropFit, cropFill, cropToAspectRatio } from 'ooxml-ui/pptx';
4
+ import { ANIMATION_DIRECTION_LABEL_KEYS, buildQuickStylesGallery, editorThumbnailWidth, EDITOR_THUMBNAIL_WIDTH, buildSlideTemplateContent, SLIDE_TEMPLATES, homeLaunchers, attachRibbonOverflow, isPanelVisible, parentSelection, slideSpaceElement, isGroupMember, motionPathFor, setMotionPath, RULER_THICKNESS, shouldShowElementHandles, deviceStrokeStageStyle, editorThumbnailStep, resolveSlidePaneClick, SLIDE_VIRTUALIZATION_THRESHOLD, buildSectionContextMenuEntries, buildSlidePaneContextMenuEntries, slidePaneViewItems, activateModalFocus, visibleContextualTabs, resolveActiveRibbonTab, visibleRibbonAddIns, isDialogAvailable, resolveScreenTip, RIBBON_ADD_IN_TAB_ATTR, contextualTabLabelKey, RIBBON_CONTEXTUAL_TAB_ATTR, buildTabRowActionsState, isFeatureEnabled, TAB_ROW_ACTION_CLASSES, tabRowActionsAttributes, buildTitleBarState, backstageNavEntries, BACKSTAGE_NAV, listBackstageRecentFiles, BACKSTAGE_BACK_CLASSES, BACKSTAGE_NAV_CLASSES, DEFAULT_INSERT_CHART_KIND, FREEFORM_TOOL_IDS, isDrawingToolVisible, textFontSizePtToPx, withHomeGalleries, drawingHomeControls, homeGalleryControls, homeGalleryApply, shapeOutlineChange, shapeFillChange, editingHomeControls, arrangeHomeControls, arrangePainterHomeControls, arrangeAlignAction, DESIGN_RIBBON_GROUPS, FIXED_TAB_GALLERIES, DESIGN_RIBBON_COMMANDS, designCommandState, CONTEXTUAL_TAB_GROUPS, attachEditorImagePaste, authorConnectorBetweenSites, findEraserHitElementId, generateTicks, rulerDragToGuidePosition, resolveElementInteractivity, 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, getSlideBackgroundStyle, sectionAddAfterSlideIndex, EMPTY_RESOLVED_CUSTOMIZATION, getRegionRenderer, ViewerRegionHost, BACKSTAGE_TEMPLATES, formatBackstageDate, formatBackstageSize, customizeBackstageCards, backstageCardsFor, DEFAULT_VIEWER_PROFILE, readStoredViewerPrefs, resolveProfileInitial, AVATAR_COLOR_SWATCHES, clipboardHomeControls, slidesHomeControls, resolveInsertSlideLayout, resolveDefaultFontFamily, textFontSizePxToPt, getInlineEditorSelectionResult, selectedParagraphBulletKind, elementBulletKind, selectionBulletKind, fontPickerHomeControls, fontHomeControls, nextToggleValue, RIBBON_GROUP_ATTR, paragraphHomeAlign, paragraphHomeControls, paragraphHomeAction, arrangeShapeHomeControls, strokeWidthOf, canSetStrokeWidth, canUngroupSelection, canGroupSelection, buildRibbonGallery, readRibbonTransitionDraft, SLIDE_SHOW_COMMAND_GROUPS, buildRecordRibbon, trackActiveComment, commentCounts, findCommentLocation, buildReviewRibbon, buildHelpRibbon, galleryTextLabel, pictureSizeHomeControls, chartSelectionHomeControls, dispatchChartSelectionRequest, buildFreeformShapeElement, buildLiveInkStrokeView, beginCropDrag, CONNECTOR_SITE_SNAP_PX, resolveConnectorEndpointUpdate, withConnectorEndpointUpdate, getShapeConnectionSites, FreeformToolSession, attachOverlayKeyboard, EditPointsSession, EDIT_POINTS_STYLE, resolveCollaborationConfig, resolveViewerRootOptions, buildUserFontFaceStyles, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, isEditingAllowed, resolveAutosaveActivation, viewerOptionsToPreferences, applyPreferenceToOptions, resolveHistoryDepth, attachViewerHyperlinks, shouldConfirmExternalHyperlink, applyAutoCorrectToEdit, resolveImageResolutionScale, resolveAllowExternalContent, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, saveFailureMessage, withSaveFailureToast, createSlidePackageClipboard, shouldShowAutosaveRecoveryPrompt, resolveOptionRootClasses, RIBBON_SCOPE_ATTR, resolve3DRenderingFlags, resolveSlideSizeSelection, hiddenSlideCue, editorThumbnailHeight, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, MIN_TOUCH_TARGET_PX, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, getSelectionTextStyleFlags, TEXT_DECORATION_FLAGS, dispatchCropRequest, applyRibbonGalleryItem, ribbonTransitionsDraftPatch, ribbonTransitionUpdates, ribbonTransitionsSoundChange, ribbonTransitionStockSoundUrl, playSlideTransitionPreview, playAnimationRibbonPreview, SLIDE_SHOW_OPTIONS, createViewerOptionsStore, subtitleSettingsFromOptions, subtitleSettingsLabels, isReviewCommentCommand, runReviewCommentCommand, hasTiltData, RULER_FONT_SIZE, toElementAxes, dragCropHandle, panCropImage, clientToSlidePoint, EDIT_POINTS_TARGET_ATTR, themeToCssVars, createCustomizationController, resolveEffectiveHiddenActions, pruneExpiredAutosaveSnapshots, createDeckStyleHost, galleryDeckView, tableLayoutCells, commitsThroughDeckStyle, resetChartFormatTarget, masterViewCrudActions, applyMasterViewCrudAction, masterViewCrudFailureKey, forgetStepsUsingRemovedParts, EDITOR_CHROME_CSS, ribbonCustomizationCss, applyMotionPathPreset, resetSlideLayoutPath, templateSchemeFromTheme, createBackstagePresentation, playFeedbackSound, shouldDiscardAutosaveOnSuccessfulSave, deleteAutosaveSnapshot, dispatchReadOnlyBannerIntent, readOnlyBannerState, buildFieldSubstitutionContext, setMasterViewBackgroundColor, canUseClipboard, runProgramNoticeStackStyle, observeElementHeight, printPropertiesFrameSlides, printPropertiesSlidesPerPage, PASTE_SPECIAL_OPTIONS, findCanvasElementNode, isHeaderFooterDateTextVisible, isHeaderFooterHeaderTextVisible, isHeaderFooterFooterTextVisible, getDensePanelTouchTargetPx, shouldStickyActionRow, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, updateSubtitleSettings, overlayPointerInput, pushRecentColor, mruColorsPatch, shouldClearAutosaveCacheOnClose, clearAutosaveSnapshots, canCropElement, cropSessionChanged, cancelCropUpdate, startCropSession, masterViewBackgroundColor, resolvePresentationAction, isPresentationAdvanceClick, toggleBlackboard, visibleTemplateElements, PRESENT_TOOLBAR_CLASSES, resolveEditPointsAvailability, isCurrentLayout, EXPANDED_MAX_HEIGHT, statusBarState, statusBarViewMode, formatVersionTimestamp, formatRelativeTime, scanAvailableFontFamilies, convertOmmlToLatex, compileLatexEquation, convertLatexToOmml, EQUATION_TEMPLATES, createCustomShowsController, resolveDefaultPrintSettings, HANDOUT_OPTIONS, effectiveOrientation, computeSlideCount, estimatePageCount, computeSlideIndices, bindPptxOptionsDialog, optionsBlockSlot, optionsPaneSlot, DEFAULT_QUICK_ACCESS_COMMAND_IDS, AI_OPTIONS_CATEGORY, buildCollaborationShareUrl, buildActiveSessionUsers, slideClipboardLabels, sorterPasteInsertAt, SORTER_MIN_ZOOM, SORTER_ZOOM_STEP, SORTER_MAX_ZOOM, canGoPrevious, formatSlideCounter, READING_VIEW_COUNTER_ATTR, canGoNext, READING_VIEW_ATTR, listenForOutlineViewDismiss, OUTLINE_LEVEL_ATTR, OUTLINE_SLIDE_ATTR, OUTLINE_ROW_ATTR, OUTLINE_VIEW_ATTR, mobileElapsedSince, nextPresentedSlide, presenterPrevDisabled, presenterNextDisabled, formatMobileElapsed, mobileSlideCounter, presenterPaneAdvancesOnClick, presenterTimerProgress, PRESENTER_CONSOLE_CLASSES, formatElapsed, createCollaborationStateReporter, buildCollaborationState, writeBackReport, cropModeKeyAction, isEditPointsEnabled, findReplacementAvailability, PRESENTATION_HIT_TEST_CSS, PRESENTATION_STAGE_ATTRIBUTE, buildStrokePathD, cursorForTool, annotationOverlayZIndex, presentationInkPath, resolveNotesSchematicBodyFontSizePx, PRESENTER_NAVIGATOR_LABEL_KEYS, getPresentationContextMenuSections, CONTEXT_MENU_PRESENTATION_LAYER, presentationViewItems, subtitleRecognitionLanguage, getSpeechRecognitionCtor, mergeCaptionResults, customizeContextMenuEntries, buildContextMenuEntries, contextMenuViewItems, customizeCanvasContextMenuEntries, buildCanvasContextMenuEntries, buildLayoutPreviewGeometry, scaleSlidesForSizeChange, slideSizeToCanvasPx, resolveSelectionPaneRename, themeEditorLabels, resolveNotesSegments, defaultRichEnabled, segmentsToEditorHtml, DEBOUNCE_MS, createPlainNotesSegments, parseSegmentsFromRichEditor, segmentsToPlainText, getCurrentParagraphIndex, segmentsToParagraphs, paragraphsToSegments, MAX_INDENT_LEVEL, INDENT_PX as INDENT_PX$1, buildNotesPrintHtml, dispatchStatusBarIntent, toggleSheet, describeElementChange, sanitizeMathMl, compileEquationTemplateMathMl, computeAllNotesPages, getNotesPrintableArea, CUSTOM_FONT_ACCEPT, TOOLBAR_TABS, SHORTCUT_REFERENCE_ITEMS as SHORTCUT_REFERENCE_ITEMS$1, availableQuickAccessCommands, addQuickAccessCommand, removeQuickAccessCommand, moveQuickAccessCommand, resolveViewerAddinRows, createSlideSorterState, sorterSelectionIndexes, selectSorterSlide, applySorterAction, sorterGridColumns, sorterMenuContext, buildSlideSorterContextMenuEntries, slideSorterContextMenuLabel, openReadingView, applyReadingViewCommand, createPresentationKeyBuffer, readingViewFitScale, READING_VIEW_STAGE_ATTR, buildOutline, applyOutlineEdit, mapOutlineKey, notesSegmentsToSpans, erasePresentationInkAt, movePresenterPointer, appendPresentationInkPoint, presenterConsoleAction, presenterConsoleViewState, NOTES_FONT_SIZE_DEFAULT, formatTime, NOTES_FONT_SIZE_MIN, clampNotesFontSize, NOTES_FONT_SIZE_STEP, NOTES_FONT_SIZE_MAX, masterViewPseudoSlide, PRESENTATION_ANIM_TRIGGER_ATTRIBUTE, computeAnchoredPopupPosition, applyTableStyleDelete, applyTableStyleMapChange, registerCustomFont, QUICK_ACCESS_COMMAND_CATALOG, handleReadingViewKey, buildPreviewElements, deriveSlideFieldContext, MERGE_SHAPES_MENU_ITEMS, hasMultipleSelectedTableCells, isElementLocked, ELEMENT_GEOMETRY_SECTIONS, mergeSlideTransition, slideBackgroundClearState, slideBackgroundClearPatch, effectiveDirection, TRIGGER_OPTIONS, effectiveTimingCurve, getAfterAnimationState, mapSlideSorterKey, isEditorTextInputTarget, clampSorterZoom, elementLockTogglePatch, resolveInspectorSections, inspectorTogglePatch, buildTableDataGrid, getDenseGridLayoutPlan, appendTableElementRow, removeLastTableElementRow, appendTableElementColumn, removeLastTableElementColumn, removeTableElementColumn, removeTableElementRow, setTableElementCellText, applyTableStylePreset, tableStyleAssignmentUpdate, evenColumnWidths, redistributeColumnWidth, evenRowHeights, inspectorNumber, patchChartData, collapseChartTitleRunsForEdit, chartGridlinesState, chartGridlinesPatch, seriesSecondaryAxisPatch, setDataLabelsRangeCache, imageResetPatch, imageResetState, canInteractWithElement, buildOleObjectNamePatch, strokeColorChange, shouldShowAccessibilitySection, withFrameSlides, withSlidesPerPage, schemaLabel, THEME_COLOR_SLOT_LABEL_KEYS, SLIDE_SIZE_PRESETS, TRANSITION_ORIENTATION_TYPES, clampTransitionNumber, TRANSITION_SPEED_OPTIONS, TRANSITION_MORPH_OPTIONS, flattenTagCollections, resolveTemplateBackgroundRows, commentMentionQuery, matchCommentMentionAuthors, buildAnimationTimelineRows, clearMotionPath, setTrigger, setTriggerBookmark, getEffectSoundState, setEffectSound, setEffectStockSound, setAfterAnimation, setAfterAnimationColor, directionValuesFor, buildAnimationTimelineBars, motionPathPresetIdForPath, MOTION_PATH_FAMILIES, motionPathPresetsByFamily, motionPathPresetLabelKey, motionPathFamilyLabelKey, EFFECT_SOUND_CATALOGUE, listMediaBookmarkOptions, selectedBookmarkOptionValue, inspectorFieldPatch, describeTableStyleEditor, TABLE_STYLE_EDITOR_PARTS, computeMergeCellRight, computeMergeCellDown, computeSplitCell, resolveDisplayedChartType, CHART_TYPE_OPTIONS, chartDataLabelsTogglePatch, BAR3D_SHAPE_OPTIONS, bar3DShapePatch, RADAR_STYLE_OPTIONS, radarStylePatch, SURFACE_WIREFRAME_OPTIONS, surfaceWireframePatch, isSeriesUsingSecondaryAxis, seriesColorClearState, listChartUserShapeRows, withChartUserShapeAdded, createDefaultChartUserShape, withChartUserShapeRowRemoved, withChartUserShapeRowTextUpdated, rebuildDrawingShapesIfCleared, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, cropResetState, cropResetPatch, ARTISTIC_EFFECTS, mediaTrimEndSeconds, trimmedMediaDurationMs, mediaTrimEndAbsoluteMs, mediaTrimResetState, mediaTrimEndMsFromAbsoluteMs, mediaTrimResetPatch, buildOleEditDialogDescriptor, buildOleContentUpdatePatch, applyTextStyleUpdate, buildThemeColorSwatchGrid, themeColorGridView, recentColorsGridView, getNonVisualDescriptionFields, resolveActionType, ELEMENT_ACTION_TYPE_OPTIONS, canCommitActionType, slideSizeFromPreset, withSlideSizeOrientation, TRANSITION_DIR_ARROWS, buildDirectionGrid, updateTagInCollections, deleteTagFromCollections, addTagToCollections, commentTextSegments, COMMENT_MENTION_CLASS, COMMENT_MENTION_ATTRIBUTE, insertCommentMention, reorderAnimationTimelineRows, applyAnimationTimelineOrder, getEffectSoundAsset, animationEffectLabel, TABLE_STYLE_BORDER_SIDES, applyTableStyleFieldEdit, withCellStyle, LBL as LBL$1, SEL as SEL$1, FILL_MODE_OPTIONS as FILL_MODE_OPTIONS$1, SECTION_HEADING, NUM as NUM$1, getChartUserShapeGroupTransform, withChartUserShapeGroupChildAdded, createDefaultChartUserShapeGroupChild, withChartUserShapeRowUpdated, getChartUserShapeRowChartBox, withChartUserShapeRowFlipUpdated, withChartUserShapeRowRotationUpdated, withChartUserShapeRowChartBoxUpdated, smartArtLayoutSwitchPatch, mediaTrimEndMsFromSeconds, validateMediaTrimRange, OFFICE_COLOR_SWATCHES, officeColorSwatchLabel, PATTERN_PRESET_OPTIONS as PATTERN_PRESET_OPTIONS$1, SHAPE_LINE_SECTIONS, shapeQuickStylePatch, SHAPE_EFFECT_SECTIONS, createLiveColorInput, themeColorGridCommit, TEXT_BOX_SECTIONS, buildTextWarpGallery, TEXT_WARP_PRESETS, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, toSlideIndex, TABLE_STYLE_BORDER_SIDE_LABEL_KEYS, TABLE_STYLE_DASH_PRESETS, GRADIENT_TYPE_OPTIONS as GRADIENT_TYPE_OPTIONS$1, PATTERN_OPTIONS, FILL_PATTERN_LABEL_KEYS, quickStyleShapeStyle, textWarpStyle, toggleText3dExtrusion, BEVEL_PRESETS, cropFit, cropFill, cropToAspectRatio } from 'ooxml-ui/pptx';
5
5
  export { THEME_CATALOG, defaultCssVars, defaultRadius, defaultThemeColors, resolveThemeCatalogEntry, themeToCssVars, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius } from 'ooxml-ui/pptx';
6
- import React109, { createContext, useContext, useRef, useMemo, useCallback, useEffect, useState, Fragment as Fragment$1, useLayoutEffect, forwardRef, useSyncExternalStore, useReducer, useId, useDeferredValue } from 'react';
6
+ import React108, { createContext, useContext, useRef, useMemo, useCallback, useEffect, useState, Fragment as Fragment$1, useLayoutEffect, forwardRef, useSyncExternalStore, useReducer, useId, useDeferredValue } from 'react';
7
7
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
8
8
  import { LuArrowDown, LuArrowUp, LuArrowRight, LuArrowLeft, LuArrowDownRight, LuArrowDownLeft, LuArrowUpRight, LuArrowUpLeft, LuPlus, LuX, LuPanelLeft, LuPanelRight, LuSparkles, LuSettings, LuFolderOpen, LuType, LuPalette, LuFilter, LuPaintbrush, LuChevronDown, LuClipboardCopy, LuShapes, LuLayoutGrid, LuWand, LuPresentation, LuTextCursorInput, LuFile, LuEllipsis, LuUserRound, LuUpload, LuShare2, LuPrinter, LuDownload, LuSave, LuInfo, LuFilePlus2, LuHouse, LuCopy, LuFileJson, LuBox, LuVideo, LuFileImage, LuFileText, LuDatabase, LuPlay, LuClock3, LuShieldAlert, LuLock, LuUser, LuHardDrive, LuLogIn, LuMessageSquare, LuEyeOff, LuChevronRight, LuMonitor, LuClock, LuRadio, LuCaptions, LuCheck, LuImage, LuSearch, LuHistory, LuCalendarDays, LuHash, LuText, LuCast, LuShieldCheck, LuPanelLeftClose, LuTrash2, LuEye, LuLoader, LuSignature, LuTriangleAlert, LuPenTool, LuWifi, LuWifiOff, LuUsers, LuMinus, LuChevronLeft, LuPause, LuCaseSensitive, LuChevronUp, LuReplace, LuGripVertical, LuGrid2X2, LuStickyNote, LuList, LuBug, LuMove, LuCopyPlus, LuClipboardPaste, LuLayers, LuSettings2, LuLockOpen, LuPencil, LuReply, LuMoveRight, LuRotateCw, LuScissors, LuBookmark, LuPipette } from 'react-icons/lu';
9
9
  import { createPortal } from 'react-dom';
@@ -644,7 +644,7 @@ function slideThumbnailPropsEqual(prev, next) {
644
644
  }
645
645
  return true;
646
646
  }
647
- var SlideThumbnail = /* @__PURE__ */ React109.memo(
647
+ var SlideThumbnail = /* @__PURE__ */ React108.memo(
648
648
  SlideThumbnailImpl,
649
649
  slideThumbnailPropsEqual
650
650
  );
@@ -706,7 +706,7 @@ function LazyThumbnailInner({
706
706
  }
707
707
  ) });
708
708
  }
709
- var LazyThumbnail = /* @__PURE__ */ React109.memo(LazyThumbnailInner);
709
+ var LazyThumbnail = /* @__PURE__ */ React108.memo(LazyThumbnailInner);
710
710
  function declaredSectionFacts(groups, sectionId) {
711
711
  const declared = groups.filter((group) => group.id !== DEFAULT_SECTION_GROUP_ID && group.id !== UNGROUPED_SECTION_ID).map((group) => group.id);
712
712
  return {
@@ -874,7 +874,7 @@ function SlideItemInner({
874
874
  }
875
875
  );
876
876
  }
877
- var SlideItem = /* @__PURE__ */ React109.memo(SlideItemInner);
877
+ var SlideItem = /* @__PURE__ */ React108.memo(SlideItemInner);
878
878
  function useSlidePaneCallbacks(onMoveSlide, onRenameSection, onToggleSectionCollapse) {
879
879
  const [collapsedSections, setCollapsedSections] = useState({});
880
880
  const [renamingSectionId, setRenamingSectionId] = useState(null);
@@ -2247,7 +2247,7 @@ function WebHomeControls({
2247
2247
  host.addEventListener("home-popup", listener);
2248
2248
  return () => host.removeEventListener("home-popup", listener);
2249
2249
  }, [onPopup]);
2250
- return React109.createElement(`pptx-ui-ribbon-home-${family}`, { ref });
2250
+ return React108.createElement(`pptx-ui-ribbon-home-${family}`, { ref });
2251
2251
  }
2252
2252
  function ShapeArrangeExtras(p) {
2253
2253
  const commands = useShapeFormatContext();
@@ -2790,7 +2790,7 @@ function AccountPage() {
2790
2790
  return void 0;
2791
2791
  });
2792
2792
  };
2793
- const version = "4.59.0" ;
2793
+ const version = "4.60.0" ;
2794
2794
  return /* @__PURE__ */ jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
2795
2795
  /* @__PURE__ */ jsxs("section", { className: cardClass, children: [
2796
2796
  /* @__PURE__ */ jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
@@ -3732,101 +3732,6 @@ function ReviewSection(p) {
3732
3732
  };
3733
3733
  return /* @__PURE__ */ jsx(WebRibbonSection, { groups, onCommand: request });
3734
3734
  }
3735
- function CustomShowsControls({
3736
- customShows,
3737
- activeCustomShowId,
3738
- canEdit,
3739
- isCurrentSlideInActiveShow,
3740
- onSetActiveCustomShowId,
3741
- onCreateCustomShow,
3742
- onRenameActiveCustomShow,
3743
- onDeleteActiveCustomShow,
3744
- onToggleCurrentSlideInActiveShow
3745
- }) {
3746
- const { t } = useTranslation();
3747
- if (customShows.length > 0) {
3748
- return /* @__PURE__ */ jsxs(Fragment, { children: [
3749
- sep,
3750
- /* @__PURE__ */ jsxs(
3751
- WebSelect,
3752
- {
3753
- value: activeCustomShowId ?? "",
3754
- onChange: (e) => onSetActiveCustomShowId(e.target.value || null),
3755
- className: "text-[11px]",
3756
- title: t("pptx.customShows.customShowTooltip"),
3757
- "aria-label": t("pptx.customShows.selectCustomShow"),
3758
- children: [
3759
- /* @__PURE__ */ jsx("option", { value: "", children: t("pptx.customShows.allSlides") }),
3760
- customShows.map((cs) => /* @__PURE__ */ jsx("option", { value: cs.id, children: cs.name }, cs.id))
3761
- ]
3762
- }
3763
- ),
3764
- canEdit && /* @__PURE__ */ jsxs(Fragment, { children: [
3765
- /* @__PURE__ */ jsx(
3766
- "button",
3767
- {
3768
- type: "button",
3769
- onClick: onCreateCustomShow,
3770
- className: "px-2 py-1 rounded bg-muted hover:bg-accent text-[11px] transition-colors",
3771
- title: t("pptx.customShows.createTooltip"),
3772
- children: t("pptx.customShows.addShow")
3773
- }
3774
- ),
3775
- activeCustomShowId && /* @__PURE__ */ jsxs(Fragment, { children: [
3776
- /* @__PURE__ */ jsx(
3777
- "button",
3778
- {
3779
- type: "button",
3780
- onClick: onRenameActiveCustomShow,
3781
- className: "px-2 py-1 rounded bg-muted hover:bg-accent text-[11px] transition-colors",
3782
- title: t("pptx.customShows.renameTooltip"),
3783
- children: t("pptx.sections.rename")
3784
- }
3785
- ),
3786
- /* @__PURE__ */ jsx(
3787
- "button",
3788
- {
3789
- type: "button",
3790
- onClick: onDeleteActiveCustomShow,
3791
- className: "px-2 py-1 rounded bg-red-700/80 hover:bg-red-600 text-[11px] transition-colors",
3792
- title: t("pptx.customShows.deleteTooltip"),
3793
- children: t("pptx.customShows.delete")
3794
- }
3795
- ),
3796
- /* @__PURE__ */ jsx(
3797
- "button",
3798
- {
3799
- type: "button",
3800
- onClick: onToggleCurrentSlideInActiveShow,
3801
- className: cn(
3802
- "px-2 py-1 rounded text-[11px] transition-colors",
3803
- isCurrentSlideInActiveShow ? "bg-primary text-white" : "bg-muted hover:bg-accent"
3804
- ),
3805
- title: t("pptx.customShows.toggleSlideTooltip"),
3806
- children: isCurrentSlideInActiveShow ? t("pptx.customShows.inShow") : t("pptx.customShows.addSlide")
3807
- }
3808
- )
3809
- ] })
3810
- ] })
3811
- ] });
3812
- }
3813
- if (canEdit) {
3814
- return /* @__PURE__ */ jsxs(Fragment, { children: [
3815
- sep,
3816
- /* @__PURE__ */ jsx(
3817
- "button",
3818
- {
3819
- type: "button",
3820
- onClick: onCreateCustomShow,
3821
- className: "px-2 py-1 rounded bg-muted hover:bg-accent text-[11px] transition-colors",
3822
- title: t("pptx.customShows.createTooltip"),
3823
- children: t("pptx.customShows.addShow")
3824
- }
3825
- )
3826
- ] });
3827
- }
3828
- return null;
3829
- }
3830
3735
  function SlideShowOptions({
3831
3736
  presentationProperties,
3832
3737
  onChange,
@@ -3888,25 +3793,11 @@ function SubtitleSettingsControl() {
3888
3793
  function SlideShowSection(p) {
3889
3794
  const { t } = useTranslation();
3890
3795
  const { isHidden } = useToolbarVisibility(p.hiddenActions);
3891
- const [showsOpen, setShowsOpen] = useState(false);
3892
- const showsRef = useRef(null);
3893
- useEffect(() => {
3894
- if (!showsOpen) {
3895
- return;
3896
- }
3897
- const handler = (event) => {
3898
- if (showsRef.current && !showsRef.current.contains(event.target)) {
3899
- setShowsOpen(false);
3900
- }
3901
- };
3902
- document.addEventListener("mousedown", handler);
3903
- return () => document.removeEventListener("mousedown", handler);
3904
- }, [showsOpen]);
3905
3796
  const actions = {
3906
3797
  "slideShow.startSlideShow.fromBeginning": p.onPresentFromBeginning ?? (() => p.onSetMode("present")),
3907
3798
  "slideShow.startSlideShow.fromCurrent": p.onPresent,
3908
3799
  "slideShow.present.presenterView": p.onEnterPresenterView,
3909
- "slideShow.startSlideShow.customShow": () => setShowsOpen((open) => !open),
3800
+ "slideShow.startSlideShow.customShow": p.onOpenCustomShows,
3910
3801
  "slideShow.present.broadcast": p.onOpenBroadcastDialog,
3911
3802
  "slideShow.setUp.setUpSlideShow": p.onOpenSetUpSlideShow,
3912
3803
  "slideShow.setUp.hideSlide": p.onToggleHideSlide,
@@ -3918,7 +3809,6 @@ function SlideShowSection(p) {
3918
3809
  SLIDE_SHOW_COMMAND_GROUPS.map((group) => /* @__PURE__ */ jsx(WebRibbonGroup, { groupId: group.id, label: t(group.labelKey), children: group.commands.filter(
3919
3810
  (command) => command.id !== "slideShow.present.broadcast" || !isHidden("broadcast")
3920
3811
  ).map((command) => {
3921
- const customShow = command.id === "slideShow.startSlideShow.customShow";
3922
3812
  const hideSlide = command.id === "slideShow.setUp.hideSlide";
3923
3813
  const button = /* @__PURE__ */ jsx(
3924
3814
  WebRibbonCommand,
@@ -3928,17 +3818,13 @@ function SlideShowSection(p) {
3928
3818
  icon: command.icon,
3929
3819
  title: t(command.tooltipKey ?? command.labelKey),
3930
3820
  disabled: command.unsupported,
3931
- active: hideSlide ? p.activeSlideHidden : customShow ? showsOpen : false,
3821
+ active: hideSlide ? p.activeSlideHidden : false,
3932
3822
  pressed: hideSlide ? p.activeSlideHidden : void 0,
3933
- expanded: customShow ? showsOpen : void 0,
3934
3823
  onCommand: request
3935
3824
  },
3936
3825
  command.id
3937
3826
  );
3938
- return customShow ? /* @__PURE__ */ jsxs("div", { className: "relative", ref: showsRef, children: [
3939
- button,
3940
- 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 }) }) })
3941
- ] }, command.id) : button;
3827
+ return button;
3942
3828
  }) }, group.id)),
3943
3829
  /* @__PURE__ */ jsx(WebRibbonGroup, { label: t("pptx.slideShow.options"), children: /* @__PURE__ */ jsx(
3944
3830
  SlideShowOptions,
@@ -4625,7 +4511,8 @@ function MobileSectionBody({
4625
4511
  }),
4626
4512
  showSubtitles: p.showSubtitles ?? false,
4627
4513
  onSetMode: p.onSetMode,
4628
- customShowControls: p,
4514
+ onOpenCustomShows: p.onOpenCustomShows ?? (() => {
4515
+ }),
4629
4516
  hiddenActions: p.hiddenActions
4630
4517
  }
4631
4518
  ) });
@@ -5156,6 +5043,101 @@ function TitleBarElement(p) {
5156
5043
  }
5157
5044
  );
5158
5045
  }
5046
+ function CustomShowsControls({
5047
+ customShows,
5048
+ activeCustomShowId,
5049
+ canEdit,
5050
+ isCurrentSlideInActiveShow,
5051
+ onSetActiveCustomShowId,
5052
+ onCreateCustomShow,
5053
+ onRenameActiveCustomShow,
5054
+ onDeleteActiveCustomShow,
5055
+ onToggleCurrentSlideInActiveShow
5056
+ }) {
5057
+ const { t } = useTranslation();
5058
+ if (customShows.length > 0) {
5059
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
5060
+ sep,
5061
+ /* @__PURE__ */ jsxs(
5062
+ WebSelect,
5063
+ {
5064
+ value: activeCustomShowId ?? "",
5065
+ onChange: (e) => onSetActiveCustomShowId(e.target.value || null),
5066
+ className: "text-[11px]",
5067
+ title: t("pptx.customShows.customShowTooltip"),
5068
+ "aria-label": t("pptx.customShows.selectCustomShow"),
5069
+ children: [
5070
+ /* @__PURE__ */ jsx("option", { value: "", children: t("pptx.customShows.allSlides") }),
5071
+ customShows.map((cs) => /* @__PURE__ */ jsx("option", { value: cs.id, children: cs.name }, cs.id))
5072
+ ]
5073
+ }
5074
+ ),
5075
+ canEdit && /* @__PURE__ */ jsxs(Fragment, { children: [
5076
+ /* @__PURE__ */ jsx(
5077
+ "button",
5078
+ {
5079
+ type: "button",
5080
+ onClick: onCreateCustomShow,
5081
+ className: "px-2 py-1 rounded bg-muted hover:bg-accent text-[11px] transition-colors",
5082
+ title: t("pptx.customShows.createTooltip"),
5083
+ children: t("pptx.customShows.addShow")
5084
+ }
5085
+ ),
5086
+ activeCustomShowId && /* @__PURE__ */ jsxs(Fragment, { children: [
5087
+ /* @__PURE__ */ jsx(
5088
+ "button",
5089
+ {
5090
+ type: "button",
5091
+ onClick: onRenameActiveCustomShow,
5092
+ className: "px-2 py-1 rounded bg-muted hover:bg-accent text-[11px] transition-colors",
5093
+ title: t("pptx.customShows.renameTooltip"),
5094
+ children: t("pptx.sections.rename")
5095
+ }
5096
+ ),
5097
+ /* @__PURE__ */ jsx(
5098
+ "button",
5099
+ {
5100
+ type: "button",
5101
+ onClick: onDeleteActiveCustomShow,
5102
+ className: "px-2 py-1 rounded bg-red-700/80 hover:bg-red-600 text-[11px] transition-colors",
5103
+ title: t("pptx.customShows.deleteTooltip"),
5104
+ children: t("pptx.customShows.delete")
5105
+ }
5106
+ ),
5107
+ /* @__PURE__ */ jsx(
5108
+ "button",
5109
+ {
5110
+ type: "button",
5111
+ onClick: onToggleCurrentSlideInActiveShow,
5112
+ className: cn(
5113
+ "px-2 py-1 rounded text-[11px] transition-colors",
5114
+ isCurrentSlideInActiveShow ? "bg-primary text-white" : "bg-muted hover:bg-accent"
5115
+ ),
5116
+ title: t("pptx.customShows.toggleSlideTooltip"),
5117
+ children: isCurrentSlideInActiveShow ? t("pptx.customShows.inShow") : t("pptx.customShows.addSlide")
5118
+ }
5119
+ )
5120
+ ] })
5121
+ ] })
5122
+ ] });
5123
+ }
5124
+ if (canEdit) {
5125
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
5126
+ sep,
5127
+ /* @__PURE__ */ jsx(
5128
+ "button",
5129
+ {
5130
+ type: "button",
5131
+ onClick: onCreateCustomShow,
5132
+ className: "px-2 py-1 rounded bg-muted hover:bg-accent text-[11px] transition-colors",
5133
+ title: t("pptx.customShows.createTooltip"),
5134
+ children: t("pptx.customShows.addShow")
5135
+ }
5136
+ )
5137
+ ] });
5138
+ }
5139
+ return null;
5140
+ }
5159
5141
  function PresentDropdown({
5160
5142
  isActive,
5161
5143
  onPresent,
@@ -5645,6 +5627,8 @@ function ToolbarLateTabs({
5645
5627
  }),
5646
5628
  onOpenSetUpSlideShow: p.onOpenSetUpSlideShow ?? (() => {
5647
5629
  }),
5630
+ onOpenCustomShows: p.onOpenCustomShows ?? (() => {
5631
+ }),
5648
5632
  onToggleHideSlide: p.onToggleHideSlide ?? (() => {
5649
5633
  }),
5650
5634
  activeSlideHidden: p.activeSlideHidden ?? false,
@@ -5654,7 +5638,6 @@ function ToolbarLateTabs({
5654
5638
  }),
5655
5639
  showSubtitles: p.showSubtitles ?? false,
5656
5640
  onSetMode: p.onSetMode,
5657
- customShowControls: p,
5658
5641
  hiddenActions: p.hiddenActions,
5659
5642
  presentationProperties: p.presentationProperties,
5660
5643
  onPresentationPropertiesChange: p.onPresentationPropertiesChange
@@ -6295,7 +6278,7 @@ function ChartQuickActionsOverlay({
6295
6278
  "data-export-ignore": "true",
6296
6279
  style: { position: "absolute", left: 0, top: 0, zIndex: 59 },
6297
6280
  onMouseDown: (e) => e.stopPropagation(),
6298
- children: descriptor.buttons.map((button) => /* @__PURE__ */ jsxs(React109.Fragment, { children: [
6281
+ children: descriptor.buttons.map((button) => /* @__PURE__ */ jsxs(React108.Fragment, { children: [
6299
6282
  /* @__PURE__ */ jsx(
6300
6283
  "button",
6301
6284
  {
@@ -6315,7 +6298,7 @@ function ChartQuickActionsOverlay({
6315
6298
  transformOrigin: "top left"
6316
6299
  },
6317
6300
  className: "flex items-center justify-center rounded bg-white border border-gray-300 shadow-sm hover:bg-gray-100 text-gray-700",
6318
- children: React109.createElement(ICONS3[button.id], { className: "size-3.5" })
6301
+ children: React108.createElement(ICONS3[button.id], { className: "size-3.5" })
6319
6302
  }
6320
6303
  ),
6321
6304
  open === button.id && button.id === "elements" && /* @__PURE__ */ jsxs(
@@ -7433,7 +7416,7 @@ function HorizontalRulerView({ ticks, widthPx, highlight }) {
7433
7416
  );
7434
7417
  }
7435
7418
  var HorizontalRuler = /* @__PURE__ */ withDisplayName(
7436
- /* @__PURE__ */ React109.memo(HorizontalRulerView),
7419
+ /* @__PURE__ */ React108.memo(HorizontalRulerView),
7437
7420
  "HorizontalRuler"
7438
7421
  );
7439
7422
  function VerticalRulerView({ ticks, heightPx, highlight }) {
@@ -7507,7 +7490,7 @@ function VerticalRulerView({ ticks, heightPx, highlight }) {
7507
7490
  );
7508
7491
  }
7509
7492
  var VerticalRuler = /* @__PURE__ */ withDisplayName(
7510
- /* @__PURE__ */ React109.memo(VerticalRulerView),
7493
+ /* @__PURE__ */ React108.memo(VerticalRulerView),
7511
7494
  "VerticalRuler"
7512
7495
  );
7513
7496
  function Ruler({
@@ -10554,7 +10537,7 @@ function arePropsEqual(prev, next) {
10554
10537
  }
10555
10538
  return true;
10556
10539
  }
10557
- var SlideCard = /* @__PURE__ */ React109.memo(SlideCardImpl, arePropsEqual);
10540
+ var SlideCard = /* @__PURE__ */ React108.memo(SlideCardImpl, arePropsEqual);
10558
10541
  var ICON_CLASS = "h-3.5 w-3.5 text-muted-foreground";
10559
10542
  function SorterContextMenu({
10560
10543
  x,
@@ -10979,7 +10962,7 @@ function SlideSorterOverlay({
10979
10962
  count: state.selectedSlideIds.length
10980
10963
  }) })
10981
10964
  ] }),
10982
- React109.createElement("pptx-ui-slide-clipboard", {
10965
+ React108.createElement("pptx-ui-slide-clipboard", {
10983
10966
  ref: (node) => {
10984
10967
  if (!node) {
10985
10968
  return;
@@ -11895,8 +11878,8 @@ function SlideNotesPanel({
11895
11878
  onHeightChange
11896
11879
  }) {
11897
11880
  const { t } = useTranslation();
11898
- const rootRef = React109.useRef(null);
11899
- React109.useEffect(() => {
11881
+ const rootRef = React108.useRef(null);
11882
+ React108.useEffect(() => {
11900
11883
  const el = rootRef.current;
11901
11884
  if (!el || !onHeightChange) {
11902
11885
  return void 0;
@@ -13739,9 +13722,9 @@ function PresentationSubtitleBar({
13739
13722
  function renderNotesSegments(segments) {
13740
13723
  return notesSegmentsToSpans(segments).map((span) => {
13741
13724
  if (span.kind === "break") {
13742
- return React109.createElement("br", { key: span.key });
13725
+ return React108.createElement("br", { key: span.key });
13743
13726
  }
13744
- return React109.createElement(
13727
+ return React108.createElement(
13745
13728
  "span",
13746
13729
  { key: span.key, style: span.style },
13747
13730
  span.text
@@ -13917,7 +13900,7 @@ function scaledSlidePreviewPropsEqual(prev, next) {
13917
13900
  }
13918
13901
  return true;
13919
13902
  }
13920
- var ScaledSlidePreview = /* @__PURE__ */ React109.memo(
13903
+ var ScaledSlidePreview = /* @__PURE__ */ React108.memo(
13921
13904
  ScaledSlidePreviewImpl,
13922
13905
  scaledSlidePreviewPropsEqual
13923
13906
  );
@@ -15163,7 +15146,7 @@ function EffectSoundRow({
15163
15146
  onPickStock
15164
15147
  }) {
15165
15148
  const { t } = useTranslation();
15166
- const fileInputRef = React109.useRef(null);
15149
+ const fileInputRef = React108.useRef(null);
15167
15150
  const selectedValue = soundState.catalogueId ?? (soundState.hasSound ? CURRENT_VALUE : NONE_VALUE);
15168
15151
  const handleSelectChange = (event) => {
15169
15152
  const value = event.target.value;
@@ -18551,7 +18534,7 @@ function ConnectorArrowsSection({
18551
18534
  ["Start", "End"].map((end) => {
18552
18535
  const widthKey = end === "Start" ? "connectorStartArrowWidth" : "connectorEndArrowWidth";
18553
18536
  const lengthKey = end === "Start" ? "connectorStartArrowLength" : "connectorEndArrowLength";
18554
- return /* @__PURE__ */ jsxs(React109.Fragment, { children: [
18537
+ return /* @__PURE__ */ jsxs(React108.Fragment, { children: [
18555
18538
  /* @__PURE__ */ jsxs("label", { className: "flex flex-col gap-1", children: [
18556
18539
  /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: t(END_LABEL_KEYS[end].width) }),
18557
18540
  /* @__PURE__ */ jsx(
@@ -19530,7 +19513,7 @@ function InspectorFields({
19530
19513
  )
19531
19514
  ] }, key);
19532
19515
  };
19533
- return /* @__PURE__ */ jsx(Fragment, { children: views.map((section) => /* @__PURE__ */ jsxs(React109.Fragment, { children: [
19516
+ return /* @__PURE__ */ jsx(Fragment, { children: views.map((section) => /* @__PURE__ */ jsxs(React108.Fragment, { children: [
19534
19517
  section.toggleable ? /* @__PURE__ */ jsxs("label", { className: `inline-flex items-center gap-2 text-foreground ${COL2}`, children: [
19535
19518
  /* @__PURE__ */ jsx(
19536
19519
  WebCheckbox,
@@ -21786,7 +21769,7 @@ function TextWarpGallery({
21786
21769
  onUpdateTextStyle
21787
21770
  }) {
21788
21771
  const { t } = useTranslation();
21789
- const [expanded, setExpanded] = React109.useState(false);
21772
+ const [expanded, setExpanded] = React108.useState(false);
21790
21773
  const currentPreset = ts?.textWarpPreset || "textNoShape";
21791
21774
  const descriptor = useMemo(() => buildTextWarpGallery(ts?.textWarpPreset), [ts?.textWarpPreset]);
21792
21775
  const ref = useRef(null);
@@ -22234,7 +22217,7 @@ function SmartArtStyleControls({
22234
22217
  onChangeStyle
22235
22218
  }) {
22236
22219
  const { t } = useTranslation();
22237
- const translate = React109.useCallback((key) => t(key), [t]);
22220
+ const translate = React108.useCallback((key) => t(key), [t]);
22238
22221
  return /* @__PURE__ */ jsxs(Fragment, { children: [
22239
22222
  /* @__PURE__ */ jsxs("label", { className: "flex flex-col gap-1 text-[11px]", children: [
22240
22223
  /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: t("pptx.smartart.colorScheme") }),
@@ -22287,7 +22270,7 @@ function SmartArtPropertiesPanel({
22287
22270
  }) {
22288
22271
  const { t } = useTranslation();
22289
22272
  const { pushColor } = useRecentColors();
22290
- const paneRef = React109.useRef(null);
22273
+ const paneRef = React108.useRef(null);
22291
22274
  const applySmartArtData = (newData) => {
22292
22275
  const reflowed = box ? rebuildDrawingShapesIfCleared(
22293
22276
  newData,
@@ -22299,12 +22282,12 @@ function SmartArtPropertiesPanel({
22299
22282
  ) : newData;
22300
22283
  onUpdateElement({ smartArtData: reflowed });
22301
22284
  };
22302
- const applyRef = React109.useRef(applySmartArtData);
22285
+ const applyRef = React108.useRef(applySmartArtData);
22303
22286
  applyRef.current = applySmartArtData;
22304
22287
  const updateSmartArt = (patch) => {
22305
22288
  applySmartArtData({ ...smartArtData, ...patch });
22306
22289
  };
22307
- React109.useLayoutEffect(() => {
22290
+ React108.useLayoutEffect(() => {
22308
22291
  if (paneRef.current) {
22309
22292
  paneRef.current.state = {
22310
22293
  smartArtData,
@@ -22313,7 +22296,7 @@ function SmartArtPropertiesPanel({
22313
22296
  };
22314
22297
  }
22315
22298
  }, [smartArtData, canEdit, t]);
22316
- React109.useEffect(() => {
22299
+ React108.useEffect(() => {
22317
22300
  const pane = paneRef.current;
22318
22301
  if (!pane) {
22319
22302
  return;
@@ -23750,7 +23733,7 @@ function CommentBody({ text, mentions, className }) {
23750
23733
  index
23751
23734
  ) : (
23752
23735
  // eslint-disable-next-line react/no-array-index-key -- segments are positional
23753
- /* @__PURE__ */ jsx(React109.Fragment, { children: segment.text }, index)
23736
+ /* @__PURE__ */ jsx(React108.Fragment, { children: segment.text }, index)
23754
23737
  )
23755
23738
  ) });
23756
23739
  }
@@ -25267,7 +25250,7 @@ function PresentationPropertiesPanel({
25267
25250
  onUpdateTagCollections
25268
25251
  }) {
25269
25252
  const { t } = useTranslation();
25270
- const handleTransitionChange = React109.useCallback(
25253
+ const handleTransitionChange = React108.useCallback(
25271
25254
  (updates) => {
25272
25255
  onUpdateSlide({
25273
25256
  transition: mergeSlideTransition(activeSlide?.transition, updates)
@@ -28728,7 +28711,7 @@ function ViewerToolbarSection(props) {
28728
28711
  },
28729
28712
  [activeSlide, propertyHandlers]
28730
28713
  );
28731
- const scopedLayoutOptions = React109.useMemo(
28714
+ const scopedLayoutOptions = React108.useMemo(
28732
28715
  () => scopeLayoutOptionsToActiveSlide(s.layoutOptions, activeSlide),
28733
28716
  [s.layoutOptions, activeSlide]
28734
28717
  );
@@ -29150,6 +29133,7 @@ function ViewerToolbarSection(props) {
29150
29133
  eyedropperActive: s.eyedropperActive,
29151
29134
  onToggleEyedropper: () => s.setEyedropperActive((p) => !p),
29152
29135
  onOpenSetUpSlideShow: () => dialogs.setIsSetUpSlideShowOpen(true),
29136
+ onOpenCustomShows: () => dialogs.setIsCustomShowsOpen(true),
29153
29137
  onToggleHideSlide: () => slideOps.handleToggleHideSlides([activeSlideIndex]),
29154
29138
  activeSlideHidden: Boolean(activeSlide?.hidden),
29155
29139
  onOpenBroadcastDialog: () => dialogs.setIsBroadcastDialogOpen(true),
@@ -29200,6 +29184,314 @@ function ViewerToolbarSection(props) {
29200
29184
  )
29201
29185
  ] });
29202
29186
  }
29187
+ var LIST_CLASS = "m-0 p-0 max-h-56 overflow-auto list-none rounded border border-border text-[12px]";
29188
+ var BUTTON_CLASS = "px-2 py-1 rounded border border-border bg-muted hover:bg-accent text-[12px] disabled:opacity-50";
29189
+ function Rows(props) {
29190
+ return /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
29191
+ /* @__PURE__ */ jsx("strong", { className: "block text-[11px] mb-1", children: props.label }),
29192
+ /* @__PURE__ */ jsxs(
29193
+ "div",
29194
+ {
29195
+ role: "listbox",
29196
+ "aria-multiselectable": "true",
29197
+ "aria-label": props.label,
29198
+ className: LIST_CLASS,
29199
+ children: [
29200
+ props.rows.map((row) => /* @__PURE__ */ jsxs(
29201
+ "div",
29202
+ {
29203
+ role: "option",
29204
+ tabIndex: 0,
29205
+ "aria-selected": row.selected,
29206
+ className: row.selected ? "px-2 py-1 cursor-pointer bg-primary text-white" : "px-2 py-1 cursor-pointer",
29207
+ onClick: () => props.onToggle(row),
29208
+ onDoubleClick: () => props.onDoubleClick?.(row),
29209
+ onKeyDown: (event) => {
29210
+ if (event.key === " ") {
29211
+ event.preventDefault();
29212
+ props.onToggle(row);
29213
+ }
29214
+ },
29215
+ children: [
29216
+ row.number,
29217
+ ". ",
29218
+ row.title
29219
+ ]
29220
+ },
29221
+ props.keyOf(row)
29222
+ )),
29223
+ props.rows.length === 0 && props.empty ? /* @__PURE__ */ jsx("div", { className: "px-2 py-1 opacity-70", children: props.empty }) : null
29224
+ ]
29225
+ }
29226
+ )
29227
+ ] });
29228
+ }
29229
+ function CustomShowsDialog({
29230
+ customShows,
29231
+ slides,
29232
+ activeCustomShowId,
29233
+ onSave,
29234
+ onSetActive,
29235
+ onRun,
29236
+ onClose
29237
+ }) {
29238
+ const { t } = useTranslation();
29239
+ const controller = useMemo(
29240
+ () => createCustomShowsController(customShows, activeCustomShowId),
29241
+ // A fresh draft per open: the host mounts this only while the dialog is open.
29242
+ // eslint-disable-next-line react-hooks/exhaustive-deps
29243
+ []
29244
+ );
29245
+ useController(controller);
29246
+ const view = controller.view(slides);
29247
+ const [active, setActive] = useState(activeCustomShowId ?? "");
29248
+ const pickerValue = view.shows.some(({ id }) => id === active) ? active : "";
29249
+ const commit = () => {
29250
+ const result = controller.result(slides);
29251
+ onSave(result.shows, result.slides);
29252
+ onSetActive(result.shows.some(({ id }) => id === active) ? active : null);
29253
+ return result.shows;
29254
+ };
29255
+ const handleFooter = (id) => {
29256
+ if (id === "ok") {
29257
+ commit();
29258
+ onClose();
29259
+ } else if (id === "show") {
29260
+ const selectedId = controller.getSnapshot().selectedId;
29261
+ const show = commit().find((candidate) => candidate.id === selectedId);
29262
+ if (show) {
29263
+ onSetActive(show.id);
29264
+ onRun();
29265
+ onClose();
29266
+ }
29267
+ } else {
29268
+ onClose();
29269
+ }
29270
+ };
29271
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
29272
+ /* @__PURE__ */ jsx(
29273
+ "button",
29274
+ {
29275
+ type: "button",
29276
+ style: { zIndex: 1200 },
29277
+ className: "fixed inset-0 bg-black/50",
29278
+ "aria-label": t("pptx.customShows.closeDialog"),
29279
+ onClick: onClose
29280
+ }
29281
+ ),
29282
+ /* @__PURE__ */ jsx(
29283
+ "div",
29284
+ {
29285
+ style: { zIndex: 1201 },
29286
+ className: "fixed inset-0 flex items-center justify-center pointer-events-none",
29287
+ children: /* @__PURE__ */ jsxs(
29288
+ "div",
29289
+ {
29290
+ role: "dialog",
29291
+ "aria-modal": "true",
29292
+ "aria-label": t("pptx.customShows.title"),
29293
+ className: "pointer-events-auto flex flex-col w-[820px] max-w-[96vw] max-h-[90vh] rounded-xl border border-border bg-background shadow-2xl max-md:fixed max-md:inset-x-0 max-md:bottom-0 max-md:top-auto max-md:w-full max-md:max-w-none max-md:max-h-[88dvh] max-md:rounded-t-2xl max-md:rounded-b-none max-md:border-x-0 max-md:border-b-0",
29294
+ children: [
29295
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between px-5 py-3 border-b border-border shrink-0", children: [
29296
+ /* @__PURE__ */ jsx("h2", { className: "text-sm font-semibold text-foreground", children: t("pptx.customShows.title") }),
29297
+ /* @__PURE__ */ jsx(
29298
+ "button",
29299
+ {
29300
+ type: "button",
29301
+ onClick: onClose,
29302
+ className: "text-muted-foreground hover:text-foreground text-lg leading-none",
29303
+ "aria-label": t("pptx.customShows.close"),
29304
+ children: "\xD7"
29305
+ }
29306
+ )
29307
+ ] }),
29308
+ /* @__PURE__ */ jsxs("div", { className: "flex-1 px-5 py-4 space-y-3 text-[12px] text-foreground overflow-y-auto", children: [
29309
+ /* @__PURE__ */ jsxs("label", { className: "flex items-center gap-2", children: [
29310
+ /* @__PURE__ */ jsx("span", { children: t("pptx.customShows.selectCustomShow") }),
29311
+ /* @__PURE__ */ jsxs(
29312
+ WebSelect,
29313
+ {
29314
+ value: pickerValue,
29315
+ onChange: (event) => {
29316
+ setActive(event.target.value);
29317
+ onSetActive(event.target.value || null);
29318
+ },
29319
+ className: "text-[11px] flex-1 min-w-0",
29320
+ "aria-label": t("pptx.customShows.selectCustomShow"),
29321
+ children: [
29322
+ /* @__PURE__ */ jsx("option", { value: "", children: t("pptx.customShows.allSlides") }),
29323
+ view.shows.map((show) => /* @__PURE__ */ jsx("option", { value: show.id, children: show.name }, show.id))
29324
+ ]
29325
+ }
29326
+ )
29327
+ ] }),
29328
+ /* @__PURE__ */ jsxs("div", { className: "grid gap-3 md:grid-cols-[190px_1fr]", children: [
29329
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1.5", children: [
29330
+ /* @__PURE__ */ jsxs(
29331
+ "div",
29332
+ {
29333
+ role: "listbox",
29334
+ "aria-label": t("pptx.customShows.savedShows"),
29335
+ className: LIST_CLASS,
29336
+ children: [
29337
+ view.shows.map((show) => /* @__PURE__ */ jsx(
29338
+ "div",
29339
+ {
29340
+ role: "option",
29341
+ tabIndex: 0,
29342
+ "aria-selected": show.selected,
29343
+ className: show.selected ? "px-2 py-1 cursor-pointer bg-primary text-white" : "px-2 py-1 cursor-pointer",
29344
+ onClick: () => controller.select(show.id),
29345
+ onKeyDown: (event) => {
29346
+ if (event.key === "Enter") {
29347
+ controller.select(show.id);
29348
+ }
29349
+ },
29350
+ children: show.name
29351
+ },
29352
+ show.id
29353
+ )),
29354
+ view.shows.length === 0 ? /* @__PURE__ */ jsx("div", { className: "px-2 py-1 opacity-70", children: t("pptx.customShows.empty") }) : null
29355
+ ]
29356
+ }
29357
+ ),
29358
+ /* @__PURE__ */ jsx(
29359
+ "button",
29360
+ {
29361
+ type: "button",
29362
+ className: BUTTON_CLASS,
29363
+ onClick: () => controller.create(t("pptx.customShows.newDefaultName")),
29364
+ children: t("pptx.customShows.createNew")
29365
+ }
29366
+ ),
29367
+ /* @__PURE__ */ jsx(
29368
+ "button",
29369
+ {
29370
+ type: "button",
29371
+ className: BUTTON_CLASS,
29372
+ disabled: !view.canEdit,
29373
+ onClick: () => controller.copySelected(),
29374
+ children: t("pptx.customShows.copy")
29375
+ }
29376
+ ),
29377
+ /* @__PURE__ */ jsx(
29378
+ "button",
29379
+ {
29380
+ type: "button",
29381
+ className: BUTTON_CLASS,
29382
+ disabled: !view.canEdit,
29383
+ onClick: () => controller.removeSelected(),
29384
+ children: t("pptx.customShows.remove")
29385
+ }
29386
+ )
29387
+ ] }),
29388
+ view.selected ? /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 min-w-0", children: [
29389
+ /* @__PURE__ */ jsxs("label", { className: "flex items-center gap-2", children: [
29390
+ /* @__PURE__ */ jsx("span", { children: t("pptx.customShows.renameNameLabel") }),
29391
+ /* @__PURE__ */ jsx(
29392
+ "input",
29393
+ {
29394
+ type: "text",
29395
+ defaultValue: view.selected.name,
29396
+ "aria-label": t("pptx.customShows.renameNameLabel"),
29397
+ className: "flex-1 min-w-0 rounded border border-border bg-muted px-2 py-1",
29398
+ onBlur: (event) => controller.rename(event.target.value),
29399
+ onKeyDown: (event) => {
29400
+ if (event.key === "Enter") {
29401
+ controller.rename(event.currentTarget.value);
29402
+ }
29403
+ }
29404
+ },
29405
+ view.selected.id
29406
+ )
29407
+ ] }),
29408
+ /* @__PURE__ */ jsxs("div", { className: "grid gap-2 md:grid-cols-[1fr_auto_1fr_auto]", children: [
29409
+ /* @__PURE__ */ jsx(
29410
+ Rows,
29411
+ {
29412
+ label: t("pptx.customShows.slidesInPresentation"),
29413
+ rows: view.presentationSlides,
29414
+ keyOf: (row) => row.rId,
29415
+ onToggle: (row) => controller.toggleLeft(row.rId),
29416
+ onDoubleClick: (row) => controller.addSlide(row.rId)
29417
+ }
29418
+ ),
29419
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col justify-center gap-1.5", children: [
29420
+ /* @__PURE__ */ jsx(
29421
+ "button",
29422
+ {
29423
+ type: "button",
29424
+ className: BUTTON_CLASS,
29425
+ disabled: !view.canAdd,
29426
+ onClick: () => controller.addSelected(slides),
29427
+ children: t("pptx.customShows.add")
29428
+ }
29429
+ ),
29430
+ /* @__PURE__ */ jsx(
29431
+ "button",
29432
+ {
29433
+ type: "button",
29434
+ className: BUTTON_CLASS,
29435
+ disabled: !view.canRemoveSlides,
29436
+ onClick: () => controller.removeSelectedSlides(),
29437
+ children: t("pptx.customShows.remove")
29438
+ }
29439
+ )
29440
+ ] }),
29441
+ /* @__PURE__ */ jsx(
29442
+ Rows,
29443
+ {
29444
+ label: t("pptx.customShows.slidesInShow"),
29445
+ rows: view.showSlides,
29446
+ keyOf: (row) => row.position ?? 0,
29447
+ onToggle: (row) => controller.toggleRight(row.position ?? 0),
29448
+ empty: t("pptx.customShows.noSlidesYet")
29449
+ }
29450
+ ),
29451
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col justify-center gap-1.5", children: [
29452
+ /* @__PURE__ */ jsx(
29453
+ "button",
29454
+ {
29455
+ type: "button",
29456
+ className: BUTTON_CLASS,
29457
+ disabled: !view.canMoveUp,
29458
+ onClick: () => controller.moveUp(),
29459
+ children: t("pptx.customShows.moveUp")
29460
+ }
29461
+ ),
29462
+ /* @__PURE__ */ jsx(
29463
+ "button",
29464
+ {
29465
+ type: "button",
29466
+ className: BUTTON_CLASS,
29467
+ disabled: !view.canMoveDown,
29468
+ onClick: () => controller.moveDown(),
29469
+ children: t("pptx.customShows.moveDown")
29470
+ }
29471
+ )
29472
+ ] })
29473
+ ] })
29474
+ ] }) : null
29475
+ ] })
29476
+ ] }),
29477
+ /* @__PURE__ */ jsx("div", { className: "px-5 py-3 border-t border-border shrink-0", children: /* @__PURE__ */ jsx(
29478
+ DialogFooter,
29479
+ {
29480
+ actions: [
29481
+ { id: "show", label: t("pptx.customShows.showButton") },
29482
+ { id: "cancel", label: t("pptx.common.cancel") },
29483
+ { id: "ok", label: t("pptx.common.ok"), variant: "primary" }
29484
+ ],
29485
+ onAction: handleFooter
29486
+ }
29487
+ ) })
29488
+ ]
29489
+ }
29490
+ )
29491
+ }
29492
+ )
29493
+ ] });
29494
+ }
29203
29495
  var TEMPLATES = EQUATION_TEMPLATES;
29204
29496
  var TEMPLATE_MATHML = /* @__PURE__ */ compileEquationTemplateMathMl();
29205
29497
  function MathMlPreview({ mathml }) {
@@ -29479,6 +29771,9 @@ function ViewerDialogGroup(props) {
29479
29771
  digitalSignatureCount,
29480
29772
  presentationProperties,
29481
29773
  customShows,
29774
+ activeCustomShowId,
29775
+ onSetActiveCustomShowId,
29776
+ onRunCustomShow,
29482
29777
  selectedElements,
29483
29778
  isEncryptedDialogOpen,
29484
29779
  setIsEncryptedDialogOpen,
@@ -29633,6 +29928,18 @@ function ViewerDialogGroup(props) {
29633
29928
  slideCount: slides.length
29634
29929
  }
29635
29930
  ),
29931
+ dialogs.isCustomShowsOpen && /* @__PURE__ */ jsx(
29932
+ CustomShowsDialog,
29933
+ {
29934
+ customShows,
29935
+ slides,
29936
+ activeCustomShowId,
29937
+ onSave: dialogs.handleCommitCustomShows,
29938
+ onSetActive: onSetActiveCustomShowId,
29939
+ onRun: onRunCustomShow,
29940
+ onClose: () => dialogs.setIsCustomShowsOpen(false)
29941
+ }
29942
+ ),
29636
29943
  /* @__PURE__ */ jsx(
29637
29944
  PrintDialog,
29638
29945
  {
@@ -32840,6 +33147,8 @@ function useAiBridge(input) {
32840
33147
  getHandler: () => live().handlerRef.current,
32841
33148
  getFileName: () => live().fileName,
32842
33149
  getSections: () => live().sections,
33150
+ getCustomShows: () => live().customShows,
33151
+ setCustomShows: (shows) => live().setCustomShows(shows),
32843
33152
  getPresentationProperties: () => live().presentationProperties,
32844
33153
  getCustomProperties: () => live().customProperties,
32845
33154
  getCoreProperties: () => live().coreProperties,
@@ -34044,6 +34353,12 @@ var PowerPointViewerBody = /* @__PURE__ */ forwardRef(
34044
34353
  onSetActiveCustomShowId: state.setActiveCustomShowId,
34045
34354
  onAddRunProgramNotice: runProgramNoticesState.addNotice
34046
34355
  });
34356
+ const [customShowRunRequest, setCustomShowRunRequest] = useState(0);
34357
+ useEffect(() => {
34358
+ if (customShowRunRequest > 0) {
34359
+ presentation.enterPresentModeFromBeginning();
34360
+ }
34361
+ }, [customShowRunRequest]);
34047
34362
  useEffect(() => {
34048
34363
  const root = containerRef.current;
34049
34364
  if (!root) {
@@ -34110,6 +34425,7 @@ ${url}`)
34110
34425
  activeCustomShowId: state.activeCustomShowId,
34111
34426
  setCustomShows: state.setCustomShows,
34112
34427
  setActiveCustomShowId: state.setActiveCustomShowId,
34428
+ setSlides: state.setSlides,
34113
34429
  setGuides: state.setGuides,
34114
34430
  setPresentationProperties: state.setPresentationProperties,
34115
34431
  setAccessibilityIssues: state.setAccessibilityIssues,
@@ -34430,6 +34746,8 @@ ${url}`)
34430
34746
  pickedFocus: aiPanel.pickTargets.length > 0 ? aiPanel.pickTargets : null,
34431
34747
  handlerRef,
34432
34748
  sections: state.sections,
34749
+ customShows: state.customShows,
34750
+ setCustomShows: state.setCustomShows,
34433
34751
  presentationProperties: state.presentationProperties,
34434
34752
  customProperties: state.customProperties,
34435
34753
  coreProperties: state.coreProperties,
@@ -34706,6 +35024,9 @@ ${url}`)
34706
35024
  digitalSignatureCount: state.digitalSignatureCount,
34707
35025
  presentationProperties: state.presentationProperties,
34708
35026
  customShows: state.customShows,
35027
+ activeCustomShowId: state.activeCustomShowId,
35028
+ onSetActiveCustomShowId: state.setActiveCustomShowId,
35029
+ onRunCustomShow: () => setCustomShowRunRequest((count) => count + 1),
34709
35030
  selectedElements: state.selectedElements,
34710
35031
  isEncryptedDialogOpen,
34711
35032
  setIsEncryptedDialogOpen,